Built motion from commit 4ae058a3.|2.5.34
authorAndrea Amorese <andrea.amorese@xenialab.it>
Thu, 14 Oct 2021 12:42:37 +0000 (14:42 +0200)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Thu, 14 Oct 2021 12:42:37 +0000 (14:42 +0200)
1266 files changed:
apidoc/api_data.js
apidoc/api_data.json
apidoc/api_project.js
apidoc/api_project.json
package.json
public/app/forgot/i18n/de.json
public/app/login/i18n/de.json
public/app/main/apps/analytics/i18n/de.json
public/app/main/apps/chat/i18n/de.json
public/app/main/apps/contactmanager/i18n/de.json
public/app/main/apps/dashboards/i18n/de.json
public/app/main/apps/mail/i18n/de.json
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/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/en.json
public/app/main/apps/motiondialer/i18n/it.json
public/app/main/apps/openchannel/i18n/de.json
public/app/main/apps/staff/i18n/de.json
public/app/main/apps/staff/i18n/en.json
public/app/main/apps/staff/i18n/it.json
public/app/main/apps/tools/i18n/de.json
public/app/main/apps/tools/i18n/en.json
public/app/main/apps/tools/i18n/it.json
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/en.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/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/id.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/de.json
public/app/reset/i18n/de.json
public/app/toolbar/i18n/de.json
public/app/toolbar/i18n/en.json
public/app/toolbar/i18n/it.json
public/index.html
public/scripts/app.5edda6d7.js [moved from public/scripts/app.cc966f7e.js with 53% similarity]
public/styles/app.0b303223.css [new file with mode: 0644]
public/styles/app.e700e376.css [deleted file]
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 [deleted file]
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 [deleted file]
server/api/teamVoicePrefix/teamVoicePrefix.model.js [deleted file]
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 [deleted file]
server/api/userVoicePrefix/userVoicePrefix.model.js [deleted file]
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/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/migrations/2.5.35.js [deleted file]
server/migrations/2.5.36.js [deleted file]
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/safe-template.js [deleted file]
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/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 0506398..fb458d5 100644 (file)
@@ -2441,6 +2441,24 @@ define({ "api": [
     "groupTitle": "Chat_Interactions"
   },
   {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}/close",
+    "title": "Close Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/messages",
     "title": "Creates new messages",
@@ -2518,24 +2536,6 @@ define({ "api": [
     "groupTitle": "Chat_Interactions"
   },
   {
-    "type": "put",
-    "url": "/api/chat/interactions/{id}/close",
-    "title": "Close Interaction",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "addMessage",
-    "group": "Chat_Interactions",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/chatInteraction/index.js",
-    "groupTitle": "Chat_Interactions"
-  },
-  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/attachment_upload",
     "title": "Add attachment",
@@ -10888,9 +10888,9 @@ define({ "api": [
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "post",
-    "url": "/api/fax/messages",
-    "title": "Create message and send Fax",
+    "type": "put",
+    "url": "/api/fax/messages/{id}/reject",
+    "title": "Rejects message",
     "examples": [
       {
         "title": "Example usage:",
@@ -10900,15 +10900,15 @@ define({ "api": [
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "put",
-    "url": "/api/fax/messages/{id}/reject",
-    "title": "Rejects message",
+    "type": "post",
+    "url": "/api/fax/messages",
+    "title": "Create message and send Fax",
     "examples": [
       {
         "title": "Example usage:",
@@ -10918,7 +10918,7 @@ define({ "api": [
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
@@ -19908,36 +19908,36 @@ define({ "api": [
   },
   {
     "type": "get",
-    "url": "/api/rpc/voice/queues",
-    "title": "Gets a list of RTVoiceQueues",
+    "url": "/api/rpc/outbound",
+    "title": "Gets a list of RTOutbound",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
   },
   {
     "type": "get",
-    "url": "/api/rpc/outbound",
-    "title": "Gets a list of RTOutbound",
+    "url": "/api/rpc/voice/queues",
+    "title": "Gets a list of RTVoiceQueues",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
@@ -22851,12 +22851,12 @@ define({ "api": [
   },
   {
     "type": "post",
-    "url": "/api/sms/accounts/{id}/status",
+    "url": "/api/sms/messages/{id}/status",
     "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
@@ -22864,41 +22864,41 @@ define({ "api": [
     "group": "Sms_Accounts",
     "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsAccount/index.js",
+    "filename": "server/api/smsMessage/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "post",
-    "url": "/api/sms/messages/{id}/status",
-    "title": "Receive message status",
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/status",
+    "title": "Receive message status as get request",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsMessage/index.js",
+    "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status as get request",
+    "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
@@ -26240,12 +26240,12 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/whatsapp/queues/{id}/teams",
+    "url": "/api/fax/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26253,17 +26253,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/whatsappQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/openchannel/queues/{id}/teams",
+    "url": "/api/mail/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26271,17 +26271,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/openchannelQueue/index.js",
+    "filename": "server/api/mailQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/queues/{id}/teams",
+    "url": "/api/openchannel/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26289,7 +26289,7 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/voiceQueue/index.js",
+    "filename": "server/api/openchannelQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -26312,30 +26312,12 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/voice/Prefixes/{id}/teams",
-    "title": "Remove teams from a voice prefix",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE",
-        "type": "json"
-      }
-    ],
-    "name": "RemoveTeams",
-    "group": "Teams",
-    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Teams"
-  },
-  {
-    "type": "delete",
-    "url": "/api/chat/queues/{id}/teams",
+    "url": "/api/whatsapp/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26343,17 +26325,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/chatQueue/index.js",
+    "filename": "server/api/whatsappQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
+    "url": "/api/voice/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26361,17 +26343,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/faxQueue/index.js",
+    "filename": "server/api/voiceQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/mail/queues/{id}/teams",
+    "url": "/api/chat/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26379,7 +26361,7 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/mailQueue/index.js",
+    "filename": "server/api/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -31407,42 +31389,6 @@ define({ "api": [
   },
   {
     "type": "post",
-    "url": "/api/voice/prefixes/{id}/teams",
-    "title": "Add teams to voice prefix",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "AddTeams",
-    "group": "Voice_Prefix",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Voice_Prefix"
-  },
-  {
-    "type": "get",
-    "url": "/api/voice/prefixes/{id}/teams",
-    "title": "Gets voice prefix team",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password}  -X GET",
-        "type": "json"
-      }
-    ],
-    "name": "GetTeams",
-    "group": "Voice_Prefix",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Voice_Prefix"
-  },
-  {
-    "type": "post",
     "url": "/api/voice/prefixes/{id}/users",
     "title": "Add agents to a prefix",
     "examples": [
@@ -32711,13 +32657,6 @@ define({ "api": [
             "optional": true,
             "field": "dialPredictiveIntervalMinThreshold",
             "description": ""
-          },
-          {
-            "group": "Body",
-            "type": "Boolean",
-            "optional": true,
-            "field": "dialPreviewAutoRecallMe",
-            "description": ""
           }
         ]
       }
@@ -33372,37 +33311,37 @@ define({ "api": [
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
index 0a540b0..726d908 100644 (file)
     "groupTitle": "Chat_Interactions"
   },
   {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}/close",
+    "title": "Close Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/messages",
     "title": "Creates new messages",
     "groupTitle": "Chat_Interactions"
   },
   {
-    "type": "put",
-    "url": "/api/chat/interactions/{id}/close",
-    "title": "Close Interaction",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "addMessage",
-    "group": "Chat_Interactions",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/chatInteraction/index.js",
-    "groupTitle": "Chat_Interactions"
-  },
-  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/attachment_upload",
     "title": "Add attachment",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "post",
-    "url": "/api/fax/messages",
-    "title": "Create message and send Fax",
+    "type": "put",
+    "url": "/api/fax/messages/{id}/reject",
+    "title": "Rejects message",
     "examples": [
       {
         "title": "Example usage:",
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "put",
-    "url": "/api/fax/messages/{id}/reject",
-    "title": "Rejects message",
+    "type": "post",
+    "url": "/api/fax/messages",
+    "title": "Create message and send Fax",
     "examples": [
       {
         "title": "Example usage:",
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
     "type": "get",
-    "url": "/api/rpc/voice/queues",
-    "title": "Gets a list of RTVoiceQueues",
+    "url": "/api/rpc/outbound",
+    "title": "Gets a list of RTOutbound",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
   },
   {
     "type": "get",
-    "url": "/api/rpc/outbound",
-    "title": "Gets a list of RTOutbound",
+    "url": "/api/rpc/voice/queues",
+    "title": "Gets a list of RTVoiceQueues",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
   },
   {
     "type": "post",
-    "url": "/api/sms/accounts/{id}/status",
+    "url": "/api/sms/messages/{id}/status",
     "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "group": "Sms_Accounts",
     "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsAccount/index.js",
+    "filename": "server/api/smsMessage/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "post",
-    "url": "/api/sms/messages/{id}/status",
-    "title": "Receive message status",
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/status",
+    "title": "Receive message status as get request",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsMessage/index.js",
+    "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status as get request",
+    "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
     "type": "delete",
-    "url": "/api/whatsapp/queues/{id}/teams",
+    "url": "/api/fax/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/whatsappQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/openchannel/queues/{id}/teams",
+    "url": "/api/mail/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/openchannelQueue/index.js",
+    "filename": "server/api/mailQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/queues/{id}/teams",
+    "url": "/api/openchannel/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/voiceQueue/index.js",
+    "filename": "server/api/openchannelQueue/index.js",
     "groupTitle": "Teams"
   },
   {
   },
   {
     "type": "delete",
-    "url": "/api/voice/Prefixes/{id}/teams",
-    "title": "Remove teams from a voice prefix",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE",
-        "type": "json"
-      }
-    ],
-    "name": "RemoveTeams",
-    "group": "Teams",
-    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Teams"
-  },
-  {
-    "type": "delete",
-    "url": "/api/chat/queues/{id}/teams",
+    "url": "/api/whatsapp/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/chatQueue/index.js",
+    "filename": "server/api/whatsappQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
+    "url": "/api/voice/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/faxQueue/index.js",
+    "filename": "server/api/voiceQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/mail/queues/{id}/teams",
+    "url": "/api/chat/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/mailQueue/index.js",
+    "filename": "server/api/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
   },
   {
     "type": "post",
-    "url": "/api/voice/prefixes/{id}/teams",
-    "title": "Add teams to voice prefix",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "AddTeams",
-    "group": "Voice_Prefix",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Voice_Prefix"
-  },
-  {
-    "type": "get",
-    "url": "/api/voice/prefixes/{id}/teams",
-    "title": "Gets voice prefix team",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password}  -X GET",
-        "type": "json"
-      }
-    ],
-    "name": "GetTeams",
-    "group": "Voice_Prefix",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Voice_Prefix"
-  },
-  {
-    "type": "post",
     "url": "/api/voice/prefixes/{id}/users",
     "title": "Add agents to a prefix",
     "examples": [
             "optional": true,
             "field": "dialPredictiveIntervalMinThreshold",
             "description": ""
-          },
-          {
-            "group": "Body",
-            "type": "Boolean",
-            "optional": true,
-            "field": "dialPreviewAutoRecallMe",
-            "description": ""
           }
         ]
       }
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
index 356a7ff..ab60a32 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.5.36",
+  "version": "2.5.34",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-10-14T08:56:44.347Z",
+    "time": "2021-10-14T12:12:33.778Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index cdfda59..12e048a 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.5.36",
+  "version": "2.5.34",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-10-14T08:56:44.347Z",
+    "time": "2021-10-14T12:12:33.778Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 7fc4a60..225e85b 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.5.36",
+  "version": "2.5.34",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
@@ -50,7 +50,6 @@
     "aws-sdk": "2.610.0",
     "bimedia-machine-uuid": "1.0.1",
     "bluebird": "3.7.2",
-    "html-entities": "2.3.2",
     "body-parser": "1.19.0",
     "compare-versions": "3.6.0",
     "composable-middleware": "0.3.0",
index 5c4734e..53a27fb 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Passwort wiederherstellen",
-    "EMAIL_ADRESS": "E-Mail Adresse",
+    "TITLE": "Ihr Passwort wiederherstellen",
+    "EMAIL_ADRESS": "E-mail Adresse",
     "SEND_RESET_LINK": "LINK ZUM ZURÜCKSETZEN SENDEN",
     "GO_BACK": "Zurück zum Login",
     "LINK_SENT": "Link gesendet",
-    "LINNK_SENT_MESSAGE": "Eine E-Mail mit einem Link zum Zurücksetzen des Passwortes wurde an Ihre Adresse gesendet.",
-    "PASSWORD_RESET_ERROR": "Fehler beim Zurücksetzen des Passwortes",
+    "LINNK_SENT_MESSAGE": "Eine e-Mail mit einem Link zum Zurücksetzen des Kennworts wurde an Ihre Adresse gesendet!",
+    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Eingabe E-Mail Adresse erforderlich",
-      "EMAIL_MUST_VALID": "Es muss eine gültige E-Mail Adresse eingegeben werden"
+      "EMAIL_REQUIRED": "Im Feld E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse"
     }
   }
 }
index bced170..c090dfa 100644 (file)
@@ -1,16 +1,16 @@
 {
   "LOGIN": {
-    "TITLE": "Bitte mit Ihrem Konto anmelden",
+    "TITLE": "Melden Sie sich bei Ihrem Konto an",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
-    "REMEMBER_ME": "Anmeldedaten merken",
+    "REMEMBER_ME": "Erinnere Dich an Mich",
     "FORGOT_PASSWORD": "Passwort vergessen?",
-    "LOG_IN": "ANMELDEN",
+    "LOG_IN": "LOG IN",
     "OR": "Oder",
-    "WITH_GOOGLE": "Anmeldung mit Google",
-    "WITH_FACEBOOK": "Anmeldung mit Facebook",
+    "WITH_GOOGLE": "Melden Sie sich mit Google",
+    "WITH_FACEBOOK": "Mit Facebook anmelden",
     "DONT_HAVE_ACCOUNT": "Sie haben noch kein Konto?",
-    "CREATE_ACCOUNT": "Konto erstellen",
+    "CREATE_ACCOUNT": "Erstellen Sie ein Konto",
     "ERRORS": {
       "EMAIL_REQUIRED": "Pflichtfeld",
       "EMAIL_MUST_VALID": "Falsches Format",
@@ -18,8 +18,8 @@
       "USERNAME_REQUIRED": "Pflichtfeld"
     },
     "USERNAME": "Benutzername",
-    "CANCEL": "Abbrechen",
-    "SELECT": "Auswählen",
+    "CANCEL": "Stornieren",
+    "SELECT": "Wählen",
     "TELEPHONES": "Telefone"
   }
 }
index e6b577a..e60162b 100644 (file)
@@ -13,7 +13,7 @@
       "METRIC_REQUIRED": "Pflichtfeld",
       "COLUMN_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "CUSTOM_METRIC_REQUIRED": "Pflichtfeld",
+      "CUSTOM_METRIC_REQUIRED": "benutzerdefinierte Metrik (erforderlich)",
       "ALIAS_REQUIRED": "Pflichtfeld"
     },
     "NEW_METRIC": "Neue Metrik",
@@ -23,8 +23,8 @@
     "SAVE": "Speichern",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Keine auswählen",
     "TYPE": "Typ",
     "EXTRACTEDREPORTS": "Extrahierte Berichte",
     "DATE_RANGE_FROM": "Datum von",
     "GENERAL": "Allgemein",
     "FIELDS": "Felder",
     "CONDITION": "Bedingung",
-    "OPERATOR": "Operator",
+    "OPERATOR": "Betreiber",
     "GROUP": "Gruppe",
     "COLUMN": "Spalte",
     "VALUE": "Wert",
     "PREVIEW": "Vorschau",
-    "LIMITED_RESULT": "Ergebins begrenzt",
+    "LIMITED_RESULT": "BEGRENZTES ERGEBNIS",
     "NO_DATA": "Keine Daten",
     "CONDITIONS": "Bedingungen",
     "ALIAS": "Alias",
     "FUNCTION": "Funktion",
     "GROUP_BY": "Gruppieren nach",
-    "ORDER_BY": "Sortieren nach",
+    "ORDER_BY": "Bestellung von",
     "ADD_REPORTFIELD": "Feld hinzufügen",
     "EDIT_REPORTFIELD": "Feld bearbeiten",
     "DELETE_REPORTFIELD": "Feld löschen",
     "NO_METRIC_FOUND": "Keine Metrik gefunden",
     "NO_AVAILABLE_INFO": "keine Informationen verfügbar",
     "CUSTOM_METRIC": "Benutzerdefinierte Metrik",
-    "DELETE_EXTRACTEDREPORT": "Extrahierte Berichte löschen",
+    "DELETE_EXTRACTEDREPORT": "Löschen extrahierte Berichte",
     "EDIT_EXTRACTEDREPORT": "Extrahierte Berichte bearbeiten",
-    "DOWNLOAD_EXTRACTEDREPORT": "Extrahierte Berichte herunterladen",
+    "DOWNLOAD_EXTRACTEDREPORT": "Herunterladen extrahierte Berichte",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "DELETE": "Löschen",
     "REPORTNAME": "Berichtsname",
     "SEND_IF_EMPTY": "Senden, wenn leer",
index 02f4f10..4bc9896 100644 (file)
@@ -2,12 +2,12 @@
   "CHAT": {
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Text",
-    "TIMES": "Anzahl der Zeiten pro Interaktion",
+    "TIMES": "Anzahl von Malen pro Interaktion",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "NEW_CHATDISPOSITION": "Neue Chat-Qualifizierung",
+    "NEW_CHATDISPOSITION": "Neue Chat-Disposition",
     "ENABLECUSTOMERATTACHMENT": "Kundenanhänge aktivieren",
-    "OFFLINE_CHAT_BUTTON": "Button Chat offline",
+    "OFFLINE_CHAT_BUTTON": "Offline-Chat-Taste",
     "OFFLINESTATUS": "Offline Status",
     "NAME": "Name",
     "CHATQUEUES": "Chat-Warteschlangen",
     "STRATEGY": "Strategie",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "KEY": "Schlüssel",
+    "KEY": "Key",
     "ALIAS": "Alias-Name",
     "VARIABLE": "Variable",
     "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
     "TIMEZONE": "Zeitzone",
     "MESSAGE": "Nachricht",
     "ADVANCED": "Erweitert",
     "FORWARDTRANSCRIPT": "Transkript weiterleiten",
     "FORWARDTRANSCRIPTMESSAGE": "Transkript-Nachricht weiterleiten",
-    "SKIPMESSAGEBUTTON": "Nachrichtenbutton überspringen",
+    "SKIPMESSAGEBUTTON": "Nachrichtentaste überspringen",
     "EDIT_MESSAGE": "Nachricht bearbeiten",
-    "CONDITION_AGREEMENT": "Konditionelle Vereinbarung",
-    "NONE": "Nichts",
+    "CONDITION_AGREEMENT": "Bedingungsvereinbarung",
+    "NONE": "Keine",
     "PRIORITY": "Priorität",
     "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Status nicht bearbeitet",
+    "UNMANAGEDSTATUS": "Nicht verwalteter Status",
     "AUTOCLOSE": "Automatisches Schließen aktivieren",
-    "ENABLEUNMANAGEDNOTE": "Unbearbeitete Nachricht aktivieren",
-    "UNMANAGEDMESSAGE": "Unbearbeitete Nachricht",
+    "ENABLEUNMANAGEDNOTE": "Nicht verwaltete Nachricht aktivieren",
+    "UNMANAGEDMESSAGE": "Nachricht",
     "SKIPUNMANAGED": "Nachricht überspringen",
     "SENDUNMANAGED": "Nachricht senden",
-    "WEBSITESCRIPT": "Webseiten-Skript",
+    "WEBSITESCRIPT": "Website-Script",
     "DELETE_OFFLINEMESSAGE": "Löschen",
     "OFFLINEMESSAGES": "Offline Nachrichten",
     "FORWARD_OFFLINE": "Offline weiterleiten",
     "FORWARD_OFFLINE_ADDRESS": "Offline-Adresse weiterleiten",
     "CLOSINGFORM": "Formular schließen",
     "ENABLERATING": "Bewertung aktivieren",
-    "ENABLECUSTOMERWRITING": "Kunde kann schreiben, bevor Chat akzeptiert wird",
+    "ENABLECUSTOMERWRITING": "Dem Kunden \"schreiben\" erlauben, bevor der Agent akzeptiert",
     "ENABLEFEEDBACK": "Feedback aktivieren",
     "RATINGTYPE": "Bewertungstyp",
-    "CLOSINGMESSAGE": "Abschluss Nachricht",
-    "CLOSINGMESSAGEBUTTON": "Button für Abschluss Nachricht",
+    "CLOSINGMESSAGE": "Nachricht schließen",
+    "CLOSINGMESSAGEBUTTON": "Nachrichtentaste schließen",
     "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne",
     "EDIT_GOTOIF": "GotoIf bearbeiten",
     "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Wahre Priorität",
+    "TRUEPRIORITY": "Echte Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "WEBSITEALIAS": "Website-Alias",
     "ERRORS": {
       "TEXT_REQUIRED": "Pflichtfeld",
       "SENDUNMANAGED_REQUIRED": "Pflichtfeld",
-      "SENDUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "SKIPUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "WEBSITEALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "SENDUNMANAGED_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "SKIPUNMANAGED_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
+      "WEBSITEALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
       "AGENT_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "CONDITION_REQUIRED": "Pflichtfeld",
       "TIMEOUT_REQUIRED": "Pflichtfeld",
       "REJECTURL_MUST_VALID_URL": "Falsches Format",
       "CLOSEURL_MUST_VALID_URL": "Falsches Format",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "WAITINGMESSAGE_REQUIRED": "Pflichtfeld",
       "WAITINGTITLE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "KEY_REQUIRED": "Pflichtfeld",
-      "WAITINGMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "WAITINGTITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "HEADER_OFFLINE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "CLOSINGQUESTION_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WAITINGMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "WAITINGTITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "HEADER_OFFLINE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "CLOSINGQUESTION_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "NOTETITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "NOTETITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "FONTSIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "VERTICALPOSITION_REQUIRED": "Pflichtfeld",
-      "CUSTOMERALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "CUSTOMERALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "TAG_REQUIRED": "Pflichtfeld",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "MESSAGEFONTSIZE_REQUIRED": "Pflichtfeld",
       "AGENTALIAS_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "CUSTOMERALIAS_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "SYSTEMALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "SYSTEMALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "SYSTEMALIAS_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "BOTNAME_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld",
       "VIDAOOTOPIC_REQUIRED": "Pflichtfeld"
     },
-    "CM_FIELD": "Kontaktmanager-Feld",
-    "CHATPROACTIVEACTIONS": "Proaktive Anfragen",
-    "NEW_CHATPROACTIVEACTION": "Neue proaktive Anfrage",
-    "EDIT_CHATPROACTIVEACTION": "Proaktive Anfrage bearbeiten",
-    "DELETE_CHATPROACTIVEACTION": "Proaktive Anfrage löschen",
-    "ADD_CHATPROACTIVEACTION": "Proaktive Anfrage hinzufügen",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Anfragen verfügbar",
+    "CM_FIELD": "Kontakt Manager Feld",
+    "CHATPROACTIVEACTIONS": "Proaktive Aktionen",
+    "NEW_CHATPROACTIVEACTION": "Neue proaktive Aktion",
+    "EDIT_CHATPROACTIVEACTION": "Proaktive Aktion bearbeiten",
+    "DELETE_CHATPROACTIVEACTION": "Proaktive Aktion löschen",
+    "ADD_CHATPROACTIVEACTION": "Proaktive Aktion hinzufügen",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Aktionen verfügbar",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Keine Offline-Nachrichten verfügbar",
-    "MOUSEOVER": "Mouse-Over",
+    "MOUSEOVER": "Maus über",
     "TIMEOUT": "Timeout",
     "TYPE": "Typ",
-    "SELECTOR": "Selektion",
+    "SELECTOR": "Wählschalter",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "QUEUE": "Warteschlange",
     "BUILDER": "Builder",
     "PREVIEW": "Vorschau",
-    "EDIT_AGENT": "Agenten bearbeiten",
+    "EDIT_AGENT": "Agent bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_GOTO": "Goto bearbeiten",
     "EDIT_GOTOIf": "GotoIf bearbeiten",
     "LIST": "Liste",
     "SNIPPET": "Snippet",
     "FORMS": "Formulare",
-    "UP": "Nach Oben",
-    "DOWN": "Nach Unten",
-    "COLLAPSE": "Einklappen",
-    "PROACTIVEACTIONS": "Proaktive Anfragen",
-    "DISPOSITIONS": "Qualifizierungen",
+    "UP": "Bis",
+    "DOWN": "Unten",
+    "COLLAPSE": "Zusammenklappen",
+    "PROACTIVEACTIONS": "Proaktive Aktionen",
+    "DISPOSITIONS": "Dispositionen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "FIDELITY": "Treue",
-    "APPEARANCE": "Darstellung",
+    "APPEARANCE": "Aussehen",
     "MAINCOLOR": "Hauptfarbe",
     "FOCUSCOLOR": "Fokusfarbe",
-    "BUTTONCOLOR": "Buttonfarbe",
+    "BUTTONCOLOR": "Tastenfarbe",
     "HEADERSHAPE": "Kopfzeilenform",
     "ANIMATION": "Animation",
     "DEFAULT": "Standard",
     "LABELS": "Labels",
     "HEADER_ONLINE": "Online-Kopfzeile",
     "ONLINE_MESSAGE": "Online Nachricht",
-    "NAME_TITLE": "Name Titel",
-    "USERNAME_PLACEHOLDER": "Platzhalter für Nutzernamen",
-    "EMAIL_TITLE": "E-Mail Titel",
-    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail Adresse",
-    "START_CHAT_BUTTON": "'Chat starten' Button",
-    "AGENTS_BUSY": "Agenten besetzt",
+    "NAME_TITLE": "Name Eingabebezeichnung",
+    "USERNAME_PLACEHOLDER": "Benutzername Eingabe Platzhalter",
+    "EMAIL_TITLE": "E-Mail-Eingabe Label",
+    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail-Eingabe",
+    "START_CHAT_BUTTON": "'Chat starten' Taste",
+    "AGENTS_BUSY": "Meldung für besetzte Agenten",
     "HEADER_OFFLINE": "Offline-Kopfzeile",
     "OFFLINE_MESSAGE": "Offline Nachricht",
-    "MESSAGE_TITLE": "Nachricht Titel",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für Nachrichteneingabe",
-    "ENQUIRY_BUTTON": "Anfrage-Button",
+    "MESSAGE_TITLE": "Nachrichtenbezeichnung",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für die Eingabe von Anfragenachrichten",
+    "ENQUIRY_BUTTON": "Anfrage-Taste Text",
     "RATING_MESSAGE": "Bewertungsnachricht",
-    "RATING_SEND": "Button Bewertung senden",
-    "RATING_SKIP": "Button Bewertung überspringen",
+    "RATING_SEND": "Bewertung Senden Tasten-Text",
+    "RATING_SKIP": "Bewertung Überspringen Tasten-Text",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
-    "PROACTIVE": "Proaktiv",
+    "PROACTIVE": "Proaktive",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
+    "CLOSE": "Schliessen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "EMBEDDING": "Einbetten",
+    "EMBEDDING": "Einbettung",
     "GENERAL": "Allgemein",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "HELP": {
-      "MAPKEY": "Das folgende Feld aus dem Kontaktmanager:",
-      "FROMKEY": "wird in dem Chat-Snippet wie folgt zugeordnet:",
-      "TOKEN": "Automatisch generierter Token zur Verwendung im Skript",
+      "MAPKEY": "Das folgende Motion Contact Manager-Feld:",
+      "FROMKEY": "Wird in Ihrem Motion Chat-Snippet wie folgt zugeordnet:",
+      "TOKEN": "Automatisch generiertes Token, das im Skript verwendet wird",
       "COPYSCRIPTTOCLIPBOARD": "Kopieren Sie den Skripttext und fügen Sie ihn in Ihre Website ein",
       "FORWARD_OFFLINE": "Sie können mehrere durch Kommas getrennte Adressen hinzufügen (z. B. john.doe@xcally.com, jane.miller@xcally.com)",
       "MOTIONADDRESS": "Das Feld muss das folgende Format haben: ≪protocol>://<IP-Adresse>[:<port>]. Beispiel: https://X.Y.Z.W",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: ≪Protocol>:// ≪IP-Adresse>: ≪port>]. Beispiel: https://X.Y.Z.W",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "LIST": "Liste für die Zuordnung aus dem Kontaktmanager",
+      "LIST": "Contact Manager-Liste, die zum Zuordnen von Kontakten verwendet wird",
       "KEY": "Website-Kurzname (5 Zeichen), der auf der Registerkarte \"Agent\" angezeigt wird",
-      "INTEVAL": "Wählen aus der Liste der verfügbaren Intervalle",
-      "TIMEZONE": "Zeitzone auswählen (Standard = lokale Zeitzone)",
-      "ENABLERATING": "Bewertung nach Chat durch Kunden aktivieren",
-      "ENABLEFEEDBACK": "Feedback nach Chat durch Kunden aktivieren (Max. 150 Zeichen)",
-      "FORWARDTRANSCRIPT": "Chatprotokoll nach Abschluss per E-Mail senden",
-      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht bearbeitet geschlossen werden sollen, sofern kein Agent verfügbar ist.",
-      "ENABLEUNMANAGEDNOTE": "Automatische Nachricht an den Kunden, wenn alle Agenten besetzt sind und somit der Chat nicht verfügbar ist",
-      "ENABLECUSTOMERWRITING": "Legt fest, ob der Kunde bereits im Chat schreiben kann, bevor ein Agent den Chat entgegen nimmmt. Hinweis: Dadurch kein Status \"unbearbeitet\"",
-      "INTERVAL": "Bitte aus der Liste wählen",
+      "INTEVAL": "Wird aus der Liste der verfügbaren Intervalle ausgewählt",
+      "TIMEZONE": "Wählen Sie eine aus der Liste aus (Standard = lokale Zeitzone)",
+      "ENABLERATING": "Aktivieren Sie es, wenn Sie möchten, dass der Webbesucher die Interaktion am Ende bewerten kann",
+      "ENABLEFEEDBACK": "Aktivieren Sie es, wenn Sie möchten, dass der Webbesucher am Ende ein Feedback (bis zu 150 Zeichen) senden kann",
+      "FORWARDTRANSCRIPT": "Aktivieren Sie diese Option, wenn der Webbesucher aufgefordert wird, ein Chat-Protokoll per E-Mail zu erhalten",
+      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht verwaltet geschlossen werden sollen, wenn kein Agent verfügbar ist. Weitere Informationen finden Sie unter: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "ENABLEUNMANAGEDNOTE": "Aktivieren Sie diese Option, wenn dem Besucher eine Nachricht angezeigt werden soll, wenn alle Agenten besetzt sind und der Chat nicht mehr verwaltet wird",
+      "ENABLECUSTOMERWRITING": "Aktivieren Sie es, wenn der Chat gestartet werden soll, ohne auf einen verfügbaren Agenten zu warten (Achtung: Wenn Sie ihn aktivieren, werden Ihre Chats niemals nicht verwaltet). Weitere Informationen finden Sie unter: https://wiki.xcallymotion.com/display/XMV/ Chat + Websites # ChatWebsites-Snippet ",
+      "INTERVAL": "Wählen Sie eins aus der Liste aus",
       "HIDEWHENOFFLINE": "Snippet ausblenden, wenn offline",
-      "AGENTIDENTIFIER": "Agentenkennung innerhalb der Chat-Sitzung im Snippet",
+      "AGENTIDENTIFIER": "Repräsentiert die Agentenkennung innerhalb der Chat-Sitzung im Snippet",
       "WEBSITEALIAS": "Ein Präfix, mit dem der Agentenname (Präfix + Agenten-ID) erstellt wird, der dem Webbesucher während der Chat-Sitzung angezeigt wird",
-      "VERTICALPOSITION": "Prozentualer Abstand in Prozent vom oberen Bildschirmrand",
-      "WELCOMEMESSAGE": "Leer lassen, um keine Nachricht zu senden",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
+      "VERTICALPOSITION": "Stellt den Abstand in Prozent von oben dar",
+      "WELCOMEMESSAGE": "Lassen Sie das Feld leer, wenn Sie keine Willkommensnachricht senden möchten",
+      "MANDATORYDISPOSITION": "Obligatorische Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist"
     },
     "ADDRESS": "Adresse",
     "ONLINESTATE": "Online Status",
     "RATINGSTATE": "Bewertungsstatus",
     "ENQUIRY": "Anfrage",
     "OFFLINETEMPLATE": "Offline Vorlage",
-    "CHATDISPOSITIONS": "Chat-Qualifizierungen",
-    "NO_CHATDISPOSITION_AVAILABLE": "Keine Qualifizierung verfügbar",
-    "ADD_CHATDISPOSITION": "Qualifizierung hinzufügen",
+    "CHATDISPOSITIONS": "Chat-Dispositionen",
+    "NO_CHATDISPOSITION_AVAILABLE": "Keine Chat-Dispositionen verfügbar",
+    "ADD_CHATDISPOSITION": "Chat Disposition hinzufügen",
     "DELETE": "Löschen",
-    "EDIT_CHATDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_CHATDISPOSITION": "Qualifizierung löschen",
+    "EDIT_CHATDISPOSITION": "Chat-Disposition bearbeiten",
+    "DELETE_CHATDISPOSITION": "Chat-Disposition löschen",
     "CHAT": "Chat",
     "ID": "ID",
     "NEW_CHATQUEUE": "Neue Chat-Warteschlange",
     "NEW_CHATWEBSITE": "Neue Chat-Website",
-    "ROUNDED": "Rundes Design",
-    "SQUARED": "Eckiges Design",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ROUNDED": "Abgerundet",
+    "SQUARED": "Quadratisch",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CONTACT": "Kontakt",
     "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Geöffnet",
-    "OPEN": "Offen",
+    "OPENED": "Öffnen",
+    "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
     "INTERACTIONS": "Interaktionen",
     "WEBSITE": "Website",
-    "ALL": "Alles",
-    "SELECT_STATUS": "Status auswählen",
+    "ALL": "Alle",
+    "SELECT_STATUS": "Wählen Sie einen Status",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "TEAMADD_CHATQUEUE": "Team zur Chat-Warteschlange hinzufügen",
-    "AGENTADD_CHATQUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_CHATQUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSEDAT": "Geschlossen am",
-    "DISPOSITION": "Qualifizierung",
+    "DISPOSITION": "Disposition",
     "CREATEDAT": "Erstellt am",
     "NOTES": "Notizen",
     "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
-    "SELECTED_WEBSITE": "Ausgewählte Webseite",
+    "SELECTED_WEBSITE": "Wählen Sie eine Website",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "SELECT_WEBSITE": "Webseite auswählen",
+    "SELECT_WEBSITE": "Wählen Sie eine Website",
     "INFO": "Info",
     "OFFLINEMESSAGES_CHATWEBSITE": "Zu Offline-Nachrichten gehen",
-    "WAITINGTITLE": "Titel während Warten",
-    "WAITINGMESSAGE": "Wartenachricht",
+    "WAITINGTITLE": "Wartetitel",
+    "WAITINGMESSAGE": "Wartende Nachricht",
     "RATING": "Bewertung",
     "NO_RATINGVALUE": "Keine Bewertung",
-    "AGENTSADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "QUEUES": "Warteschlangen",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "in Pause",
+    "PAUSED": "Pausiert",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "WRITING": "am Schreiben",
+    "WAITING": "Warten",
+    "WRITING": "Schreiben",
     "MAIL": "E-Mail",
     "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "OPENCHANNEL": "Openchannel",
     "FAX": "Fax",
     "PAUSE": "Pause",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "LOGOUT": "Abmelden",
     "UNPAUSE": "Pause beenden",
-    "AGENTADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "DEFAULT_PAUSE": "Standard Pause",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
     "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
-    "VOICE": "Anrufe",
+    "IN_USE": "Im Einsatz",
+    "VOICE": "Sprache",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Zur Echtzeit-Warteschlange für Chat gehen",
+    "GOTOREALTIME_CHATQUEUE": "Go to Echtzeit-Chat-Warteschlange",
     "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
     "SHOWAGENTAVATAR": "Persönlichen Agenten-Avatar anzeigen",
-    "AGENTAVATAR": "Agenten-Avatar",
-    "SPYINTERACTION": "Mitlesen",
+    "AGENTAVATAR": "Agent Avatar",
+    "SPYINTERACTION": "Spion",
     "INTERACTIONS_CHATWEBSITE": "Zu den Interaktionen gehen",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "CLOSINGQUESTION": "Abschlussfrage",
+    "CLOSINGQUESTION": "Frage schließen",
     "WEBSCRIPT": "Webskript",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_CHATCANNEDANSWER": "Neue Textvorlage",
-    "ADD_CHATCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_CHATCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_CHATCANNEDANSWER": "Textvorlage löschen",
-    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht bei Offline",
-    "OFFLINEMESSAGEBODY": "Test der Nachricht bei Offline",
-    "FORMSUBMITSUCCESSMESSAGE": "Meldung Formular erfolgreich gesendet",
-    "FORMSUBMITFAILUREMESSAGE": "Meldung Fehler beim Senden des Formulars",
-    "PLACEHOLDERMESSAGE": "Nachricht für Platzhalter",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_CHATCANNEDANSWER": "Neue vordefinierte Antwort",
+    "ADD_CHATCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_CHATCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_CHATCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht",
+    "OFFLINEMESSAGEBODY": "Nachrichtentext",
+    "FORMSUBMITSUCCESSMESSAGE": "Erfolgsmeldung beim Absenden des Formulars",
+    "FORMSUBMITFAILUREMESSAGE": "Fehlermeldung beim Absenden des Formulars",
+    "PLACEHOLDERMESSAGE": "Platzhalter für Nachrichten",
     "NOTETITLE": "Titel der Notiz",
     "DELETE_INTERACTION": "Interaktion löschen",
     "FONTSIZE": "Schriftgröße",
     "TEXTCOLOR": "Textfarbe",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "NOTIFICATION": "Benachrichtigung",
     "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSOUND": "Ton",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "HIDEWHENOFFLINE": "Ausblenden, wenn offline",
-    "INSERT_MESSAGE_HERE": "Nachricht hier eingeben",
+    "HIDEWHENOFFLINE": "Ausblenden",
+    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
     "AGENTALIAS": "Agent Alias",
     "AGENTFULLNAME": "Vollständiger Name des Agenten",
     "AGENTIDENTIFIER": "Identifikator",
-    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Mitarbeiter",
+    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Agenten",
     "ALIGNMENT": "Ausrichtung",
     "BOTTOM_RIGHT": "Unten rechts",
     "LEFT": "Links",
     "CUSTOMERALIAS": "Kunden-Alias",
     "EDIT_TAG": "Tag bearbeiten",
     "TAG": "Tag",
-    "AGENTADD_CHATWEBSITE": "Agenten zur Chat-Website hinzufügen",
+    "AGENTADD_CHATWEBSITE": "Agent zur Chat-Website hinzufügen",
     "BACKGROUNDCOLOR": "Hintergrundfarbe",
     "MESSAGEFONTSIZE": "Schriftgröße der Nachricht",
     "AGENTTRANSFER": "Agententransfer",
     "DIALOGFLOW": "Dialogflow",
     "EDIT_DIALOGFLOW": "Dialogflow bearbeiten",
     "LANGUAGE": "Sprache",
-    "QUEUETRANSFER": "Transfer in Warteschlange",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
     "QUEUETRANSFERTIMEOUT": "Timeout bei der Warteschlangenübertragung",
     "SYSTEMALIAS": "Systemalias",
     "SYSTEMAVATAR": "System-Avatar",
     "TRANSFER": "Transfer",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen",
-    "CANNEDANSWERS": "Textvorlagen",
-    "CHATCANNEDANSWERS": "Textvorlagen",
+    "ENABLECUSTOMERCHECKMARKS": "Aktivieren vom Kunden gelieferten / gelesenen Benachrichtigungen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CHATCANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
-    "BOTNAME": "Botname",
+    "BOTNAME": "Bot-Name",
     "EDIT_AMAZONLEX": "Amazon Lex bearbeiten",
     "LEXREGION": "Region",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID, wenn Qualifizierung erforderlich",
-    "ENABLESENDBUTTON": "Senden-Button aktivieren",
+    "TEAMS_ASSOCIATION": "Teams Verband",
+    "MANDATORYDISPOSITION": "Obligatorische Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "ENABLESENDBUTTON": "Sendetaste aktivieren",
     "FEEDBACKTITLE": "Feedback-Titel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
     "LASTMESSAGE": "Letzte Nachricht",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api Key",
     "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Key",
     "PROJECTID": "Projekt-ID",
     "EMAIL_ACCOUNT": "Email-Konto",
     "OPEN_NEW_INTERACTION": "Neue Interaktion öffnen",
-    "SUBJECT": "Betreff",
+    "SUBJECT": "Gegenstand",
     "ADD_NOTE": "Notiz hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "NOTE": "Notiz",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "NOTE": "Hinweis",
     "VIDAOOMETADATA": "Vidaoo-Metadaten",
     "VIDAOONOTE": "Vidaoo-Hinweis",
     "VIDAOOTOPIC": "Vidaoo-Thema"
index 3c27f23..da8b00a 100644 (file)
@@ -1,8 +1,8 @@
 {
   "CONTACTMANAGER": {
-    "VOICEQUEUEID": "ID Warteschlange für Sprachanrufe",
-    "CAMPAIGNID": "Kampagnen-ID",
-    "STATE": "Status",
+    "VOICEQUEUEID": "Sprachwarteschlange ID",
+    "CAMPAIGNID": "Kampagne ID",
+    "STATE": "Zustand",
     "NAME": "Name",
     "LISTS": "Listen",
     "UNIQUEID": "Eindeutige ID",
@@ -11,8 +11,8 @@
     "ENDTIME": "Endzeit",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopper final",
-    "HISTORY": "Hopper historisch",
+    "FINAL": "Hopper Final",
+    "HISTORY": "Hopper Geschichte",
     "SCHEDULEDAT": "Geplant am",
     "SEARCH_FOR_ANYONE": "Suche",
     "EDIT_LIST": "Liste bearbeiten",
     "DELETE_HOPPER": "Hopper löschen",
     "RELOAD": "Neu laden",
     "NO_COMPANIES": "Kein Unternehmen",
-    "NO_AVAILABLE_ITEMS": "Keine Einträge verfügbar",
+    "NO_AVAILABLE_ITEMS": "Keine verfügbaren Artikel",
     "ADD": "Hinzufügen",
     "ERRORS": {
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "FIRSTNAME_REQUIRED": "Vorname ist erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "FIRSTNAME_REQUIRED": "Der Vorname ist erforderlich",
+      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
       "ALIAS_REQUIRED": "Alias ist erforderlich",
-      "VALUE_REQUIRED": "Wert ist erforderlich",
+      "VALUE_REQUIRED": "Der Wert ist erforderlich",
       "EMAIL_MUST_VALID": "Falsches Format",
-      "PHONEBAR_API": "Statusprüfung für die MotionBar und des Remote-Switches für den Agenten",
+      "PHONEBAR_API": "Prüfen, ob die MotionBar ausgeführt wird und der Fernbedienungsschalter für den Agenten eingeschaltet ist",
       "ACTIONTYPE_REQUIRED": "Pflichtfeld",
       "CLICKTOACTION_REQUIRED": "Pflichtfeld"
     },
     "DESCRIPTION": "Beschreibung",
-    "DISPOSITION": "Qualifizierung",
-    "DISPOSITIONS": "Qualifizierungen",
-    "VOICEDISPOSITIONS": "Anrufqualifizierungen",
-    "NEW_VOICEDISPOSITION": "Neue Anrufqualifizierung",
+    "DISPOSITION": "Disposition",
+    "DISPOSITIONS": "Dispositionen",
+    "VOICEDISPOSITIONS": "Sprachdispositionen",
+    "NEW_VOICEDISPOSITION": "Neue Sprachdisposition",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "ADD_LIST": "Liste hinzufügen",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Keine auswählen",
     "COMPANIES": "Unternehmen",
     "EDIT_COMPANY": "Unternehmen bearbeiten",
     "DELETE_COMPANY": "Unternehmen löschen",
@@ -76,7 +76,7 @@
     "STREET": "Straße",
     "POSTALCODE": "Postleitzahl",
     "DELETE": "Löschen",
-    "DELETE_ALL": "Alles Löschen",
+    "DELETE_ALL": "Alle Löschen",
     "CONTACTMANAGER": "Kontaktmanager",
     "ID": "ID",
     "SETTINGS": "Einstellungen",
     "NEW_CONTACT": "Neuer Kontakt",
     "NEW_TAG": "Neuer Tag",
     "UPLOAD_CONTACTS": "Kontakte hochladen",
-    "FINISH": "Beenden",
-    "SUCCESS": "Erfolg",
+    "FINISH": "Fertig",
+    "SUCCESS": "Erfolgreich",
     "FAILURE": "Fehler",
     "ALL_CONTACTS": "Alle Kontakte",
     "NEW_CUSTOMFIELD": "Neues benutzerdefiniertes Feld",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Keine Anrufqualifizierung verfügbar",
-    "ADD_VOICEDISPOSITION": "Anrufqualifizierung hinzufügen",
-    "EDIT_VOICEDISPOSITION": "Anrufqualifizierung bearbeiten",
-    "DELETE_VOICEDISPOSITION": "Anrufqualifizierung löschen",
-    "VAT": "Ust-ID.",
-    "COMPANYID": "Unternehmens-ID",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Keine Sprachdispositionen verfügbar",
+    "ADD_VOICEDISPOSITION": "Sprachdisposition hinzufügen",
+    "EDIT_VOICEDISPOSITION": "Sprachdisposition bearbeiten",
+    "DELETE_VOICEDISPOSITION": "Sprachdisposition löschen",
+    "VAT": "Mwst.",
+    "COMPANYID": "Ihre Unternehmens-ID",
     "WEBSITE": "Website",
     "EMAIL_DOMAIN": "E-Mail Domain",
     "ADDRESS": "Adresse",
     "GOTOCONTACTS_COMPANY": "Kontakte anzeigen",
     "ADD_AGENT_TO_LIST": "Agenten zur Liste hinzufügen",
     "AGENTADD_LIST": "Agenten zur Liste hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "NONE": "Nichts",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "NONE": "Keine",
     "FULLNAME": "Vollständiger Name",
-    "CHECK_DUPLICATES": "auf Duplikate prüfen",
+    "CHECK_DUPLICATES": "Duplikate prüfen",
     "DUPLICATES": "Duplikate",
-    "UPLOAD_CSV": "Hochladen von CSV-Datei",
+    "UPLOAD_CSV": "Hochladen von CSV",
     "TAG": "Tag",
     "UPLOAD": "Hochladen",
     "ALL_AGENTS": "Alle Agenten",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "DATEOFBIRTH": "Geburtsdatum",
     "NOTES": "Notizen",
-    "EXPORTCSVCONTACTS_LIST": "In CSV-Datei exportieren",
+    "EXPORTCSVCONTACTS_LIST": "In CSV exportieren",
     "GOTO_LIST": "Kontakte anzeigen",
     "GOTO_COMPANY": "Kontakte anzeigen",
     "REQUIRED": "Erforderlich",
     "SESSIONS": "Sitzungen",
     "AGENT": "Agent",
     "PROJECT": "Projekt",
-    "SELECT_LIST": "Liste auswählen",
-    "SELECT_COMPANY": "Unternehmen auswählen",
-    "SELECT_TAGS": "Tags auswählen",
+    "SELECT_LIST": "Wählen Sie eine Liste aus",
+    "SELECT_COMPANY": "Wählen Sie ein Unternehmen aus",
+    "SELECT_TAGS": "Wählen Sie ein oder mehrere Tags aus",
     "HELP": {
-      "PHONEBAR_API": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Remote-Switch für den Agenten eingeschaltet ist",
-      "PHONEBAR_API_MESSAGE": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Remote-Switch für den Agenten eingeschaltet ist"
+      "PHONEBAR_API": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Fernbedienungsschalter für den Agenten eingeschaltet ist",
+      "PHONEBAR_API_MESSAGE": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Fernbedienungsschalter für den Agenten eingeschaltet ist"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "SOCIAL": "Social",
     "ROW": "Reihe",
-    "EXPORT_ERRORS": "Fehler-Log exportieren",
+    "EXPORT_ERRORS": "Fehler exportieren",
     "UPLOAD_COMPLETED": "Hochladen abgeschlossen",
     "STOP": "Stopp",
-    "SELECT_FILE": "Datei auswählen",
+    "SELECT_FILE": "Datei aussuchen",
     "IMPORT_CONTACTS": "Kontakte importieren",
     "MOTIONDIALER": "Motion Bull",
     "PREFIX": "Vorwahl wählen",
     "PRIORITY": "Priorität",
     "USERID": "Agent-ID abrufen",
-    "CUSTOMER_JOURNEY": "Kundenhistorie",
-    "SELECT_TAG": "Tag auswählen",
+    "CUSTOMER_JOURNEY": "Kundenreise",
+    "SELECT_TAG": "Wählen Sie Tags aus",
     "ALL": "Alle",
     "BILLINGINFORMATION": "Abrechnungsdaten",
     "COMPANY_FISCAL_TYPE": "Unternehmenssteuerart",
     "CREATE": "Erstellen",
     "EUROPE": "Europa",
-    "EXPIREDAY": "Ablauftag",
+    "EXPIREDAY": "Ablauftage",
     "FLATDISCOUNT": "Firmenrabatt",
     "INVOICEARTICLE": "Gesetzliche Artikel",
     "ISOCODE": "Nationaler ISO-Code",
     "RELATIONSHIPCOMPANY": " ... mit",
     "SDICODE": "SDI-Code",
     "SOCIAL_CAPITAL": "Aktienkapital",
-    "VATNUMBER_CF": "Umsatzsteuer Identnummer / VAT",
-    "RECALLME": "Rückruf anfordern",
+    "VATNUMBER_CF": "Codice Fiscale / VAT",
+    "RECALLME": "Ruf mich zurück",
     "ACTIONTYPE": "Aktionstyp",
-    "CLICKTOACTION": "Klicken für Aktion"
+    "CLICKTOACTION": "Zur Aktion klicken"
   }
 }
index dbfb7c7..df9fabe 100644 (file)
@@ -1,10 +1,10 @@
 {
   "DASHBOARDS": {
-    "HOME": "Startseite",
+    "HOME": "Home",
     "CHAT": "Chat",
-    "MAIL": "E-Mail",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "MAIL": "Email",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
     "RATING": "Bewertung",
     "FEEDBACK": "Feedback",
     "AGENT": "Agent",
     "CREATED_AT": "Erstellt am",
     "CLOSED_AT": "Geschlossen am",
-    "DISPOSITION": "Qualifizierung",
+    "DISPOSITION": "Disposition",
     "CONTACT": "Kontakt",
     "INTERACTION": "Interaktion",
     "BROWSER_NAME": "Browser Name",
     "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Betriebssystem Name",
-    "OS_VERSION": "Betriebssystem Version",
+    "OS_NAME": "Name des Betriebssystems",
+    "OS_VERSION": "Version des Betriebssystems",
     "DEVICE_MODEL": "Gerätemodell",
     "DEVICE_VENDOR": "Gerätehersteller",
     "DEVICE_TYPE": "Gerätetyp",
-    "RECALLME": "Rückruf anfordern",
-    "DROP_RATE": "Abbruchrate Anrufe",
+    "RECALLME": "Ruf mich zurück",
+    "DROP_RATE": "Abgebrochene Anrufrate",
     "DROPPED": "Abgebrochen",
-    "DROPPED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
+    "DROPPED_TEXT": "Abgebrochene Anrufe aus der Warteschlange",
     "DETAIL": "Detail",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitiert",
     "LIMITED_TEXT": "IVR-Kampagnen Anrufe getätigt/limitiert",
     "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Aufzeichnungen",
-    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken Warteschlangen",
+    "RECORDINGS": "Aufnahmen",
+    "TODAY_MOTION_BULL_STATS": "Warteschlangen-Kampagnen Tagesstatistiken",
     "ORIGINATED": "Gewählt",
     "ORIGINATED_TEXT": "Anrufe aus der Warteschlange gewählt",
     "UPDATE": "Aktualisieren",
     "MORE": "Mehr",
     "MOTIONDIALER": "Motion Dialer",
-    "DISPOSE": "Qualifizieren",
+    "DISPOSE": "Entsorgen",
     "QUEUES": "Warteschlangen",
-    "DIALER_CALL": "Dialer-Anruf",
+    "DIALER_CALL": "Dialer Anruf",
     "ELAPSED_TIME": "Abgelaufene Zeit",
     "EDIT": "Bearbeiten",
     "MERGE": "Zusammenführen",
     "DUPLICATE": "Duplizieren",
     "UNIQUEID": "Eindeutige ID",
     "CAMPAIGN": "Kampagne",
-    "NONE": "Nichts",
+    "NONE": "Keine",
     "NAME": "Name",
     "ANSWER_MACHINE": "Anrufbeantworter",
     "INTERESTED": "Interessiert",
     "NOT_INTERESTED": "Kein Interesse",
     "PERSONAL_INFO": "Persönliche Infos",
     "SOLD": "Verkauft",
-    "SPECIAL": "Speziell",
+    "SPECIAL": "Spezielle",
     "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "erneut Planen",
+    "RESCHEDULE": "Verschieben",
     "FIRSTNAME": "Vorname",
     "LASTNAME": "Nachname",
-    "MOBILE": "Mobilnummer",
+    "MOBILE": "Mobile",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "COMPANY": "Unternehmen",
     "TAG": "Tag",
     "POSTALCODE": "Postleitzahl",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "GENERAL": "Allgemein",
-    "VOICE": "Sprachanrufe",
+    "VOICE": "Sprache",
     "TODAY_IVR_CAMPAIGNS_STATS": "IVR-Tagesstatistiken",
-    "TODAY_INBOUND_STATS": "Tagesstatistiken - eingehende Warteschlangen",
-    "TODAY_OUTBOUND_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
-    "WAITING": "Anrufe in Warteschlange",
+    "TODAY_INBOUND_STATS": "Inbound Warteschlangen Tagesstatistiken",
+    "TODAY_OUTBOUND_STATS": "Outbound Warteschlangen Tagesstatistiken",
+    "WAITING": "Anrufe in der Warteschlange",
     "TALKING": "Im Gespräch",
-    "INBOUND_ANSWERED": "Angenommen eingehend",
-    "OUTBOUND_ANSWERED": "Angenommen ausgehend",
-    "ABANDONED": "Abgebrochen",
-    "TOTAL_OFFERED": "Gesamt angeboten",
+    "INBOUND_ANSWERED": "Angenommen",
+    "OUTBOUND_ANSWERED": "Angenommen",
+    "ABANDONED": "Verlassen",
+    "TOTAL_OFFERED": "Insgesamt",
     "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "INBOUND_ANSWER_RATE": "Antwortrate eingehend",
-    "OUTBOUND_ANSWER_RATE": "Antwortrate ausgehend",
-    "ABANDON_RATE": "Abbruchrate",
-    "UNMANAGED": "Nicht bearbeitet",
-    "TOTAL": "Gesamt",
+    "INBOUND_ANSWER_RATE": "Angenommene Anrufrate",
+    "OUTBOUND_ANSWER_RATE": "Angenommene Anrufrate",
+    "ABANDON_RATE": "Verlassene Anrufrate",
+    "UNMANAGED": "Nicht verwaltete",
+    "TOTAL": "Insgesamt",
     "TOT_DURATION": "Gesamtdauer",
     "AVG_DURATION": "Durchschnittliche Dauer",
     "HELP": {
-      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/limitiert",
-      "DROPPED": "Gesamtzahl abgebrochener Anrufe innerhalb der Warteschlange",
-      "DROP_RATE": "Abbruchrate aller Anrufe in der Warteschlange",
-      "WAITING": "Gesamtzahl der wartenden Anrufe aus der Warteschlange",
-      "OUTBOUND_ANSWERED": "Gesamtzahl der angenommenen ausgehenden Anrufe",
-      "ABANDONED": "Gesamtzahl der abgebrochenen Anrufe innerhalb der Warteschlange",
-      "TOTAL_OFFERED": "Gesamtzahl der angebotenen Anrufe in der Warteschlange (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
-      "AVG_HOLD_TIME": "Durchschnittliche Wartezeit einer Interaktion bis zur Beantwortung durch einen Agenten.",
-      "OUTBOUND_ANSWER_RATE": "Rate aller angenommenen ausgehenden Anrufe",
-      "ABANDON_RATE": "Rate aller abgebrochener Anrufe innerhalb der Warteschlange",
-      "UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "TOTAL": "Gesamtzahl der ausgehenden Anrufe",
-      "TOT_DURATION": "Gesamtdauer aller ausgehenden Anrufe",
-      "AVG_DURATION": "Durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
-      "ORIGINATED": "Gesamtzahl der in den Warteschlangen-Kampagnen gewählten Anrufe",
-      "ABANDONED_RATE": "Rate aller abgebrochenen Interaktionen",
-      "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit einer Interaktion",
-      "MANAGED": "Gesamtzahl der abgeschlossenen Interaktionen",
-      "MANAGED_RATE": "Rate aller bearbeiteten Anrufe",
-      "OPENED": "Gesamtzahl der aktiven Interaktionen",
-      "UNMANAGED_RATE": "Rate aller unbearbeiteten Interaktionen",
-      "VOICE_ABANDONED": "Gesamtzahl der abgebrochenen Anrufe in der Warteschlange unter Berücksichtigung aller vorhandenen Warteschlangen. Hinweis: Anrufe, die wegen Timeout und joinempty abgebrochen wurden, werden nicht berücksichtigt.",
-      "VOICE_ANSWERED": "Gesamtzahl der abgeschlossenen Anrufe für alle vorhandenen Warteschlangen",
-      "VOICE_ANSWER_RATE": "Antwortrate aller Anrufe in der Warteschlange",
-      "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit bis zur Beantwortung durch einen Agenten für alle vorhandenen Warteschlangen",
-      "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit für alle Anrufe aus der Warteschlange ",
-      "VOICE_TALKING": "Gesamtzahl der aktiven Anrufe für alle vorhandenen Warteschlangen",
-      "VOICE_TOTAL_OFFERED": "Gesamtzahl der Anrufe der Warteschlangen (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
-      "VOICE_UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle vorhandenen Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "VOICE_WAITING": "Gesamtanzahl der aktuell wartenden Anrufe für alle vorhandenen Warteschlangen",
-      "MANDATORY_DISPOSITION_ENABLED": "Kontaktqualifizierung erforderlich",
-      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung der Suchbegriffe",
-      "LIKE_FILTER": "Suche nach variablen Übereinstimmungen der Suchbegriffe"
+      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/Limitiert",
+      "DROPPED": "Die Gesamtzahl abgebrochener Anrufe aus der Warteschlange",
+      "DROP_RATE": "Die Rate aller abgebrochener Anrufe aus der Warteschlange",
+      "WAITING": "Die Gesamtzahl der wartenden Anrufe aus der Warteschlange",
+      "OUTBOUND_ANSWERED": "Die Gesamtzahl der angenommenen ausgehenden Anrufe",
+      "ABANDONED": "Die Gesamtzahl der abgebrochenen Anrufe aus der Warteschlange",
+      "TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
+      "AVG_HOLD_TIME": "Die durchschnittliche Interaktionswartezeit, d.h. die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Interaktionen.",
+      "OUTBOUND_ANSWER_RATE": "Die Rate aller angenommenen ausgehenden Anrufe",
+      "ABANDON_RATE": "Die Rate aller verlassenen Anrufe aus der Warteschlange",
+      "UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "TOTAL": "Die Gesamtzahl der ausgehenden Anrufe",
+      "TOT_DURATION": "Die Gesamtdauer aller ausgehenden Anrufe",
+      "AVG_DURATION": "Die durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
+      "ORIGINATED": "Die Gesamtzahl der in den Warteschlangenkampagnen gewählten Anrufe",
+      "ABANDONED_RATE": "Die Rate aller abgebrochenen Interaktionen",
+      "AVG_MANAGED_TIME": "Die durchschnittliche verwaltete Interaktionszeit, nämlich die durchschnittliche Zeit, die während des Gesprächs verbracht wird",
+      "MANAGED": "Die Gesamtzahl der abgeschlossenen Interaktionen",
+      "MANAGED_RATE": "Die verwaltete Rate aller Interaktionen",
+      "OPENED": "Die Gesamtzahl der aktiven Interaktionen",
+      "UNMANAGED_RATE": "Die nicht verwaltete Rate aller Interaktionen",
+      "VOICE_ABANDONED": "Die Gesamtzahl der aufgegebenen Warteschlangenanrufe unter Berücksichtigung aller vorhandenen Warteschlangen. Beachten Sie, dass Anrufe, die wegen Timeout und joinempty abgebrochen werden, nicht berücksichtigt werden",
+      "VOICE_ANSWERED": "Die Gesamtzahl der abgeschlossenen Warteschlangenanrufe für alle vorhandenen Warteschlangen",
+      "VOICE_ANSWER_RATE": "Die Antwortrate aller Warteschlangenanrufe",
+      "VOICE_AVG_HOLD_TIME": "Die durchschnittliche Wartezeit für Warteschlangen, nämlich die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Warteschlangen",
+      "VOICE_AVG_TALK_TIME": "Die durchschnittliche Gesprächszeit in der Warteschlange, nämlich die durchschnittliche Gesprächszeit für alle vorhandenen Warteschlangen",
+      "VOICE_TALKING": "Die Gesamtzahl der aktiven Warteschlangenanrufe für alle vorhandenen Warteschlangen",
+      "VOICE_TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
+      "VOICE_UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "VOICE_WAITING": "Die Gesamtanzahl der wartenden Warteschlangenanrufe für alle vorhandenen Warteschlangen",
+      "MANDATORY_DISPOSITION_ENABLED": "Obligatorische Disposition für dieses Konto aktiviert",
+      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung",
+      "LIKE_FILTER": "Suchen Sie nach dem angegebenen Muster"
     },
     "ERRORS": {
       "FIRSTNAME_REQUIRED": "Der erste Name ist erforderlich",
       "CAMPAIGN_REQUIRED": "Pflichtfeld",
       "FAILED_INITIALIZATION": "Fehler während der Initialisierung"
     },
-    "NO_AVAILABLE_INFO": "Keine Information vorhanden",
-    "WELCOME_TO_MOTION": "Willkommen zu Motion",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "WELCOME_TO_MOTION": "Willkommen bei Motion",
     "WELCOME_MESSAGE": "Verwenden Sie die linke Seitenleiste, um durch die verfügbaren Abschnitte zu navigieren",
     "ADD": "Hinzufügen",
-    "CONTACTMANAGER": "Kontaktmanager",
+    "CONTACTMANAGER": "Contact Manager",
     "DASHBOARD": "Dashboard",
     "EDIT_CONTACT": "Kontakt bearbeiten",
     "EMAIL": "E-Mail",
     "NEW_CONTACT": "Neuer Kontakt",
     "PHONE": "Telefon",
     "SAVE": "Speichern",
-    "INBOUND_WAITING_CALLS": "Wartende Anrufe (Eingehend)",
+    "INBOUND_WAITING_CALLS": "Eingehende Anrufe in der Warteschlange",
     "CONTACTS": "Kontakte",
     "MYCONTACTS": "Meine Kontakte",
     "ADD_CONTACT": "Kontakt hinzufügen",
-    "RELOAD": "Neu Laden",
+    "RELOAD": "Neu laden",
     "WAITING_TEXT": "Wartende Interaktionen",
-    "TALKING_TEXT": "Aktive Anrufe",
-    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe",
-    "ABANDONED_TEXT": "Abgebrochene Anrufe",
-    "DROP_RATE_TEXT": "Abbruchrate",
-    "TOTAL_OFFERED_TEXT": "Gesamt angebotene Interaktionen",
-    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit",
-    "AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit",
-    "INBOUND_ANSWER_RATE_TEXT": "Antwortrate ",
-    "UNMANAGED_TEXT": "Nicht bearbeitete Interaktionen",
-    "TOTAL_TEXT": "Gesamt ausgehende Anrufe",
-    "OUTBOUND_ANSWERED_TEXT": "Beantwortete Anrufe (Ausgehend) ",
+    "TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
+    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
+    "ABANDONED_TEXT": "Verlassene Anrufe in der Warteschlange",
+    "DROP_RATE_TEXT": "Rate abgebrochener Anrufe in der Warteschlange",
+    "TOTAL_OFFERED_TEXT": "Gesamtzahl der Interaktionen",
+    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit der Interaktionen",
+    "AVG_TALK_TIME_TEXT": "Gesprächszeit der Warteschlangenanrufe",
+    "INBOUND_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange ",
+    "UNMANAGED_TEXT": "Nicht verwaltete Interaktionen",
+    "TOTAL_TEXT": "Gesamtzahl ausgehender Anrufe",
+    "OUTBOUND_ANSWERED_TEXT": "Ausgehende angenommene Anrufe ",
     "TOT_DURATION_TEXT": "Gesamtdauer ausgehender Anrufe ",
     "AVG_DURATION_TEXT": "Durchschnittliche Dauer ausgehender Anrufe",
     "OUTBOUND_ANSWER_RATE_TEXT": "Rate angenommener ausgehender Anrufe",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "REPLY_PLACEHOLDER": "Text eingeben und ENTER drücken zum Senden",
+    "OF": "Von",
+    "REPLY_PLACEHOLDER": "Geben Sie ein und drücken Sie die Eingabetaste, um eine Nachricht zu senden",
     "CONTACT_INFO": "Kontaktinformationen",
-    "CLOSE_AND_DISPOSE": "Schließen und Qualifizieren",
-    "DISPOSITIONS": "Qualifizierungen",
-    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Qualifizierung",
-    "ACCEPT": "Annehmen",
+    "CLOSE_AND_DISPOSE": "Schließen und Entsorgen",
+    "DISPOSITIONS": "Dispositionen",
+    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Entsorgen",
+    "ACCEPT": "Akzeptieren",
     "REJECT": "Ablehnen",
     "CLOSED": "Geschlossen",
-    "INFO": "Information",
+    "INFO": "Info",
     "NOTE": "Hinweis",
-    "ACCEPT_ELSEWHERE": "Von anderem Teilnehmer angenommen",
+    "ACCEPT_ELSEWHERE": "Anderswo akzeptiert",
     "ATTENTION": "Achtung",
     "SOCIAL": "Sozial",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Keine Jscripty-Projekte verfügbar",
     "FILTER": "Filter",
     "SELECT_STATUS": "Status auswählen",
     "SELECT_ACCOUNT": "Konto auswählen",
-    "SELECT_WEBSITE": "Webseite auswählen",
-    "ALL": "Alles",
+    "SELECT_WEBSITE": "Wählen Sie die Webseite",
+    "ALL": "Alle",
     "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Begonnen am",
+    "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "OPEN": "Öffnen",
-    "SHOW": "Anzeigen",
+    "SHOW": "Zeigen",
     "ME": "ICH",
     "NOT_ASSIGNED": "Nicht zugewiesen",
     "UNKNOWN": "Unbekannt",
-    "SELECT_USER": "Benutzer auswählen",
+    "SELECT_USER": "Wählen Sie einen Benutzer",
     "LAST_MESSAGE": "Letzte Nachricht",
     "USER": "Benutzer",
     "TAGS": "Tags",
     "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "CALLERID": "Anrufer-ID",
-    "END_AT": "Beendet am",
+    "END_AT": "Ende am",
     "DURATION": "Dauer",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
     "EXTERNAL_URL": "Externer Link",
     "SET_AS": "Festlegen als",
     "PENDING": "Ausstehend",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textbausteine gefunden",
-    "CANNED_ANSWER_SEARCH": "Hier nach einem Textbaustein suchen",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
     "NO_MAIL_ACCOUNTS_AVAILABLE": "Keine E-Mail-Konten verfügbar",
     "NO_FAX_ACCOUNTS_AVAILABLE": "Keine Fax-Konten verfügbar",
     "NO_SMS_ACCOUNTS_AVAILABLE": "Keine SMS-Konten verfügbar",
-    "FILTER_VOICE_QUEUES": "Anrufwarteschlangen filtern",
-    "LOADING_INTERACTION": "Interaktion wird geladen",
+    "FILTER_VOICE_QUEUES": "Sprachwarteschlangen filtern",
+    "LOADING_INTERACTION": "Wir laden die Interaktion ...",
     "JANUARY": "Januar",
     "FEBRUARY": "Februar",
     "MARCH": "März",
     "SELECT_DATE": "Datum auswählen",
     "SELECT_DATE_RANGE": "Wählen Sie einen Datumsbereich",
     "CLEAR": "Löschen",
-    "CALL_NUMBER": "Anrufen",
+    "CALL_NUMBER": "Anruf",
     "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Anruf erfolgreich gespeichert",
-    "CALL_DISPOSED": "Anruf erfolgreich qualifiziert",
-    "CHANNEL_WAITING_TEXT": "Wartende Interaktionen",
+    "CALL_SAVED": "Anruf richtig gespeichert",
+    "CALL_DISPOSED": "Anruf richtig entsorgt",
+    "CHANNEL_WAITING_TEXT": "Wartende Warteschlangen-Interaktionen",
     "CHANNEL_QUEUE": "Warteschlange",
-    "CHANNEL_FROM": "von",
+    "CHANNEL_FROM": "Von",
     "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "SELECT_AGENT": "Agenten auswählen",
+    "SELECT_AGENT": "Wählen Sie den Agenten aus",
     "READ": "Gelesen",
-    "SELECT_READ_UNREAD": "Wählen ob Lesen/Ungelesen",
-    "SELECT_SUBSTATUS": "Zwischenstatus auswählen",
+    "SELECT_READ_UNREAD": "Wählen Sie Lesen/Ungelesen",
+    "SELECT_SUBSTATUS": "Wählen Sie Substatus",
     "UNREAD": "Ungelesen",
-    "ABANDONAT": "Abgebrochen",
-    "ABANDONEDQUEUECALLS": "Abgebrochene Anrufe",
+    "ABANDONAT": "Verlassen",
+    "ABANDONEDQUEUECALLS": "Verlassene Warteschlangenanrufe",
     "FREE": "Frei",
     "LASTASSIGNEDTO": "Zuletzt zugewiesen an",
     "QUEUE": "Warteschlange",
     "QUEUECALLEREXITAT": "Abgebrochen",
     "QUEUECALLEREXITREASON": "Grund",
     "RESERVED": "Reserviert",
-    "SELECT_CAMPAIGN": "Warteschlange auswählen",
+    "SELECT_CAMPAIGN": "Wählen Sie eine Warteschlange",
     "ASSIGNTO": "Zuweisen",
-    "CLICKRELOAD": "Verpasste Anrufe! Bitte Seite erneut laden",
+    "CLICKRELOAD": "Neue verlassene Anrufe! Bitte neu laden",
     "NOTAVAILABLE": "Nicht verfügbar",
-    "CURRENTLY_IN_USE_BY": "Derzeit verwendet von",
-    "CUSTOMER_JOURNEY": "Kundenhistorie",
+    "CURRENTLY_IN_USE_BY": "Derzeit im Einsatz von",
+    "CUSTOMER_JOURNEY": "Kundenreise",
     "NO_DATA_AVAILABLE": "Keine Daten verfügbar",
     "AGENTS": "Agenten",
     "TRANSFER": "Transfer",
-    "NO_DISPOSITION_SET": "Keine Qualifizierungen definiert",
-    "ABANDONED_RATE": "Abbruchrate",
-    "ABANDONED_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
-    "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit",
-    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Bearbeitungszeit aller Interkationen",
-    "MANAGED": "Bearbeitet",
-    "MANAGED_RATE": "Bearbeitungsrate",
-    "MANAGED_RATE_TEXT": "Rate der bearbeiteten Interaktionen",
-    "MANAGED_TEXT": "Interaktionen bearbeitet",
-    "OPENED_TEXT": "Interaktionen geöffnet",
+    "NO_DISPOSITION_SET": "Keine Disposition festgelegt",
+    "ABANDONED_RATE": "Verlassene Rate",
+    "ABANDONED_RATE_TEXT": "Rate verlassener Interaktionen",
+    "AVG_MANAGED_TIME": " Durchschnittliche Verwaltungszeit",
+    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Verwaltungszeit der Interkationen",
+    "MANAGED": "Verwaltet",
+    "MANAGED_RATE": "Verwaltete Rate",
+    "MANAGED_RATE_TEXT": "Verwaltete Interaktionsrate",
+    "MANAGED_TEXT": "Verwaltete Interaktionen",
+    "OPENED_TEXT": "Geöffnete Interaktionen",
     "TODAY_INTERACTIONS_STATS": "Interaktionen Tagesstatistiken",
-    "UNMANAGED_RATE": "Rate nicht Bearbeitet",
-    "UNMANAGED_RATE_TEXT": "Rate der nicht bearbeiteten Interaktionen in der Warteschlange",
-    "VOICE_ABANDONED": "Abgebrochen",
-    "VOICE_ABANDONED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
-    "VOICE_ABANDON_RATE": "Abbruchrate",
-    "VOICE_ABANDON_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
+    "UNMANAGED_RATE": "Nicht verwaltete Rate",
+    "UNMANAGED_RATE_TEXT": "Nicht verwaltete Interaktionsate",
+    "VOICE_ABANDONED": "Verlassen",
+    "VOICE_ABANDONED_TEXT": "Verlassene Warteschlangenanrufe",
+    "VOICE_ABANDON_RATE": "Verlassene Rate",
+    "VOICE_ABANDON_RATE_TEXT": "Rate verlassener Warteschlangenanrufe",
     "VOICE_ANSWERED": "Angenommen",
     "VOICE_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "VOICE_ANSWER_RATE": "Antwortrate",
+    "VOICE_ANSWER_RATE": "Angenommene Rate",
     "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange",
     "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "VOICE_AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit aller Sprachanrufe",
+    "VOICE_AVG_HOLD_TIME_TEXT": "Queue ruft AVG HOLD TIME an",
     "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
-    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit aller Anrufe nach der Warteschleife",
+    "VOICE_AVG_TALK_TIME_TEXT": "Gesprächszeit der Anrufe in der Warteschlage",
     "VOICE_TALKING": "IM GESPRÄCH",
     "VOICE_TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
-    "VOICE_TOTAL_OFFERED": "Gesamt angeboten",
-    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der angebotenen Anrufe in der Warteschlange",
-    "VOICE_UNMANAGED": "Nicht bearbeitet",
-    "VOICE_UNMANAGED_TEXT": "Nicht bearbeitete Anrufe in der Warteschlange",
+    "VOICE_TOTAL_OFFERED": "Insgesamt",
+    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der Anrufe in der Warteschlange",
+    "VOICE_UNMANAGED": "Nicht verwaltet",
+    "VOICE_UNMANAGED_TEXT": "Nicht verwaltete Anrufe in der Warteschlange",
     "VOICE_WAITING": "Wartende Anrufe",
     "VOICE_WAITING_TEXT": "Wartende Anrufe in der Warteschlange",
     "DOWNLOAD": "Herunterladen",
     "SCHEDULED_CALLS": "Geplante Anrufe",
-    "PRIVATE": "Persönlich",
+    "PRIVATE": "Privat",
     "PUBLIC": "Öffentlich",
-    "PUBLIC_INTERACTION": "Öffentliche Interaktion",
+    "PUBLIC_INTERACTION": "Die Interaktion ist öffentlich",
     "VISIBILITY": "Sichtbarkeit",
-    "INTERACTION_CLOSED": "Interaktion erfolgreich geschlossen",
-    "INTERACTION_CLOSED_DISPOSED": "Interaktion erfolgreich geschlossen und qualifiziert",
-    "INTERACTION_DISPOSED": "Interaktion erfolgreich qualifiziert",
-    "ASSIGNED_TO_OTHERS": "An Andere zugewiesen",
-    "SELECT_ALL": "Alles auswählen",
+    "INTERACTION_CLOSED": "Interaktion korrekt geschlossen",
+    "INTERACTION_CLOSED_DISPOSED": "Interaktion korrekt geschlossen und entsorgt",
+    "INTERACTION_DISPOSED": "Interaktion korrekt entsorgt",
+    "ASSIGNED_TO_OTHERS": "An andere zugewiesen",
+    "SELECT_ALL": "Alle auswählen",
     "CHAT_INTERACTIONS": "Chat-Interaktionen",
     "FAX_INTERACTIONS": "Fax-Interaktionen",
-    "ID": "ID",
+    "ID": "Id",
     "MAIL_INTERACTIONS": "E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS": "Offener-Kanal-Interaktionen",
+    "OPENCHANNEL_INTERACTIONS": "Open Channel-Interaktionen",
     "SMS_INTERACTIONS": "SMS-Interaktionen",
-    "CANCEL": "Abbrechen",
-    "DRAFT": "Entwurf speichern",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Möchten Sie diesen überschreiben?",
+    "CANCEL": "Stornieren",
+    "DRAFT": "Entwurf",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Sind Sie sicher, dass Sie ihn überschreiben möchten?",
     "DRAFT_SAVE_WARNING_TITLE": "Vorhandenen Entwurf überschreiben?",
     "OVERWRITE": "Überschreiben",
     "SAVE_AS_DRAFT": "Als Entwurf speichern",
     "UNTITLED": "Ohne Titel",
     "UPDATE_DRAFT": "Entwurf aktualisieren",
     "NO_AVAILABLE_INTERACTION": "Keine Interaktionen verfügbar",
-    "ACCOUNTINGDOC": "Abrechnungsdokumente",
+    "ACCOUNTINGDOC": "Buchhaltung",
     "ADD_PRODUCTPRICELIST": "PRODUKT HINZUFÜGEN",
     "AGENTFULLNAME": "Agent",
     "ALL_COMPANIES": "Alle Unternehmen",
-    "ALL_PRODUCTS": "Alles",
-    "ALL_STATUS": "Alles",
-    "ALL_STEP": "Alles",
+    "ALL_PRODUCTS": "Alle",
+    "ALL_STATUS": "Alle",
+    "ALL_STEP": "Alle",
     "ALL_WORKFLOW": "Alle Arbeitsabläufe",
     "ATTENDACELASTINVOICE": "Letzte Rechnung",
     "ATTENDACENEXTINVOICE": "Nächste Rechnung",
     "AUTHORIZED": "AUTORISIERT",
     "AUTOINVOICE": "SELBSTABRECHNUNG",
     "AUTOPROFORMA": "SELBST-PROFORMA",
-    "BALANCE": "SALDO",
+    "BALANCE": "BALANCE",
     "BY": "Durch",
     "CLONEPROFORMA": "Klon",
     "COMPANIES": "Unternehmen",
     "DOSSIERS": "Dossiers",
     "DOSSIER_INFO": "Information",
     "ENDDATE": "Ablaufdatum",
-    "FROM": "von",
+    "FROM": "Von",
     "GRAPHINVOICES": "Diagramm der Rechnungsemission",
     "INASSET": "Kapital",
     "INVOICE": "RECHNUNG",
     "INVOICEPAYED": "Bezahlt",
     "INVOICES": "RECHNUNGEN",
     "INVOICESTATUS": "Status",
-    "INVOICETOTAL": "Gesamt",
+    "INVOICETOTAL": "Insgesamt",
     "INVOICE_INFO": "Rechnung",
     "MANAGESALES": "Abonnements",
     "MOVEASSET": "Kapital",
     "QUOTATIONSTATUS": "Status",
     "QUOTATIONSUBSCRIPTION": "Dauer",
     "QUOTATIONTAX": "MwSt",
-    "QUOTATIONTOTAL": "Gesamt",
+    "QUOTATIONTOTAL": "Insgesamt",
     "QUOTATIONTOTALPRICE": "Gesamt netto",
-    "QUOTATIONTOTALS": "Gesamt",
+    "QUOTATIONTOTALS": "Insgesamt",
     "QUOTATIONTOTALTAX": "Gesamtsteuer",
     "QUOTATIONUNIT": "Einheit",
     "QUOTATIONVAT": "VAT",
     "TOTALPAYMENTS": "Gesamtzahlungen",
     "UPDATED_AT": "Geändert am",
     "UPDATE_PRODUCT": "Produkt aktualisieren",
-    "WORKFLOW": "Arbeitsablauf wählen",
+    "WORKFLOW": "Wählen Sie einen Arbeitsablauf",
     "YEARS": "Jahre",
     "CUSTOMER_IP": "Ursprüngliche IP-Adresse",
     "CUSTOMER_PORT": "Ursprünglicher TCP-Port",
     "ADVANCED_SEARCH": "Erweiterte Suche",
-    "AND": "und",
+    "AND": "Und",
     "APPLY": "Anwenden",
-    "CONTAINS": "enthält",
+    "CONTAINS": "Enthält",
     "DISABLED": "Deaktiviert",
     "ENABLED": "Aktiviert",
     "ENDING_DATE": "Enddatum",
     "ENDING_VALUE": "Endwert",
-    "ENDS_WITH": "endet mit",
-    "EQUALS": "gleich",
-    "IS_AMONG": "ist unter",
-    "IS_BETWEEN": "ist zwischen",
-    "IS_GREATER_THAN": "ist größer als",
-    "IS_GREATER_THAN_OR_EQUAL_TO": "ist größer oder gleich",
-    "IS_LESS_THAN": "ist kleiner als",
-    "IS_LESS_THAN_OR_EQUAL_TO": "ist kleiner oder gleich",
-    "IS_NOT_AMONG": "ist nicht innerhalb",
-    "IS_NOT_EQUAL": "ist nicht gleich",
+    "ENDS_WITH": "Endet mit",
+    "EQUALS": "Gleich",
+    "IS_AMONG": "Ist unter",
+    "IS_BETWEEN": "Ist zwischen",
+    "IS_GREATER_THAN": "Ist größer als",
+    "IS_GREATER_THAN_OR_EQUAL_TO": "Ist größer oder gleich",
+    "IS_LESS_THAN": "Ist kleiner als",
+    "IS_LESS_THAN_OR_EQUAL_TO": "Ist kleiner oder gleich",
+    "IS_NOT_AMONG": "Ist nicht unter",
+    "IS_NOT_EQUAL": "Ist nicht gleich",
     "MEET_ALL_CONDITIONS": "Alle Bedingungen erfüllen",
     "MEET_ANY_CONDITIONS": "Mindestens eine Bedingung erfüllen",
     "NEW_CONDITION": "Neue Bedingung",
     "SELECT_OPERATOR": "Operator auswählen",
     "STARTING_DATE": "Startdatum",
     "STARTING_VALUE": "Startwert",
-    "STARTS_WITH": "beginnt mit",
+    "STARTS_WITH": "Beginnt mit",
     "VALUE": "Wert",
     "VALUES": "Werte",
     "VALUE_RANGE_CHECK": "Wert muss größer sein als",
-    "CHOOSE": "Auswählen",
+    "CHOOSE": "Wählen",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
     "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "SELECT_QUEUE": "Warteschlange auswählen",
+    "SELECT_QUEUE": "Wählen Sie eine Warteschlange aus",
     "VIDAOOSESSION": "Videoanruf starten",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "WhatsApp-Interaktionen",
+    "WHATSAPP_INTERACTIONS": "WhatsApp Connector-Interaktionen",
     "LAST_UPDATED": "Zuletzt aktualisiert",
     "MATCHING_FIELD": "Übereinstimmendes Feld",
     "MULTIPLE_CONTACTS_FOUND": "Mehrere Kontakte für Nummer gefunden",
-    "SELECT": "Auswählen",
+    "SELECT": "Wählen",
     "SELECT_CONTACT": "Kontakt auswählen",
-    "WHICH_ONE_TO_USE": "Welcher Eintrag soll verwendet werden?",
+    "WHICH_ONE_TO_USE": "Welches möchten Sie verwenden?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Kein WhatsApp-Konto verfügbar",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
     "LICENSE_EXPIRE_REMAINING_DAYS": "Ihre Lizenz läuft bald ab! Bitte wenden Sie sich an Ihren Administrator",
     "CREATEDAT": "Hergestellt in",
     "ELAPSED_ANSWERED": "Verstrichene Zeit seit dem Start des Anrufs",
     "ELAPSED_DISPOSED": "Verstrichene Zeit seit Beendigung des Anrufs",
-    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte Internetverbindung prüfen.",
+    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte überprüfe deine Internetverbindung.",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "AUTOCLOSE": "Tab nach Qualifizierung automatisch schließen",
-    "AGENT_PRESENCE": "Bereitschaftsstatus",
-    "SELECT_TEAM": "Team auswählen"
+    "AUTOCLOSE": "Schließen Sie die Kontaktlasche nach der Entsorgung automatisch",
+    "AGENT_PRESENCE": "Agentenpräsenz",
+    "SELECT_TEAM": "Team auswählen",
+    "AVAILABLE": "Erhältlich"
   }
 }
index fd1c6a8..4b2f44e 100644 (file)
@@ -1,83 +1,83 @@
 {
   "MAIL": {
     "TEXT": "Text",
-    "TIMES": "Zeitstempel",
-    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
+    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
+    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
     "AUTOREPLY": "Automatische Antwort",
-    "SHOW_AUTOREPLY": "Automatische Antwort anzeigen",
+    "SHOW_AUTOREPLY": "Die automatische Antwort anzeigen",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
-    "TO": "An",
+    "TO": "Zu",
     "FROM": "Von",
     "DATE": "Datum",
-    "CC": "CC",
-    "REPLY": "Antworten",
+    "CC": "Cc",
+    "REPLY": "Antwort",
     "REPLY_ALL": "Allen antworten",
-    "FORWARD": "Weiterleiten",
+    "FORWARD": "Vorwärts",
     "SUBJECT": "Betreff",
-    "BCC": "BCC",
+    "BCC": "Bcc",
     "SEND": "Senden",
     "ATTACHMENT": "Anhang",
     "ATTACHMENTS": "Anhänge",
     "NAME": "Name",
     "MAILQUEUES": "E-Mail Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "STRATEGY": "Strategie",
     "ERRORS": {
-      "TEXT_REQUIRED": "Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Agent Timeout ist erforderlich",
-      "EMAIL_ADDRESS_REQUIRED": "E-Mail-Adresse ist erforderlich",
-      "EMAIL_ADDRESS_MUST_VALID": "E-Mail ungültiges Format",
-      "HOST_REQUIRED": "Host wird benötigt",
-      "USERNAME_REQUIRED": "Benutzername ist erforderlich",
-      "PORT_REQUIRED": "Port ist erforderlich",
+      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
+      "EMAIL_ADDRESS_REQUIRED": "Die E-Mail-Adresse ist erforderlich",
+      "EMAIL_ADDRESS_MUST_VALID": "Die E-Mail Adresse muss in einem gültigen Format",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
+      "PORT_REQUIRED": "Der Port ist erforderlich",
       "CONNTIMEOUT_REQUIRED": "Timeout der Verbindung ist erforderlich",
-      "AUTHTIMEOUT_REQUIRED": "Zeitlimit für die Authentifizierung ist erforderlich",
-      "ACCEPTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "CLOSEURL_MUST_VALID_URL": "URL ungültiges Format",
-      "AGENT_REQUIRED": "Agent ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
-      "DISPOSITION_REQUIRED": "Qualifizierung ist erforderlich",
-      "CONDITION_REQUIRED": "Bedingung ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Falsche Priorität ist erforderlich",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wahre Priorität muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Falsche Priorität muss größer oder gleich sein als",
-      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität muss größer oder gleich sein als",
-      "QUEUE_REQUIRED": "Warteschlange ist erforderlich",
-      "LIST_REQUIRED": "Liste ist erforderlich",
-      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
-      "SERVICE_REQUIRED": "Dienst ist erforderlich,",
-      "IMAP_HOST_REQUIRED": "IMAP-Host ist erforderlich",
-      "IMAP_PORT_REQUIRED": "IMAP-Port erforderlich",
-      "SMTP_HOST_REQUIRED": "SMTP-Host ist erforderlich",
-      "SMTP_PORT_REQUIRED": "SMTP-Port ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge haben von {{max}}",
-      "KEY_REQUIRED": "Schlüssel ist erforderlich",
-      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}}",
+      "AUTHTIMEOUT_REQUIRED": "Das Zeitlimit für die Authentifizierung erforderlich ist",
+      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "AGENT_REQUIRED": "Der Agent ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
+      "DISPOSITION_REQUIRED": "Die Disposition ist erforderlich",
+      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die wahre Priorität muss größer als oder gleich",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die falsche Priorität muss größer als oder gleich",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Priorität muss größer als oder gleich",
+      "QUEUE_REQUIRED": "Die Warteschlange ist erforderlich",
+      "LIST_REQUIRED": "Die Liste ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "SERVICE_REQUIRED": "Der Dienst ist erforderlich,",
+      "IMAP_HOST_REQUIRED": "Der IMAP-Host wird benötigt",
+      "IMAP_PORT_REQUIRED": "Der IMAP-Anschluss erforderlich",
+      "SMTP_HOST_REQUIRED": "Der SMTP-Host ist erforderlich",
+      "SMTP_PORT_REQUIRED": "Der SMTP-Port ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter nicht übereinstimmen",
+      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
+      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "FONT_SIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "REPLY_TYPE_REQUIRED": "Pflichtfeld"
@@ -93,9 +93,9 @@
     "MAILACCOUNTS": "E-Mail Konten",
     "EMAIL_ADDRESS": "E-Mail Adresse",
     "ADD_MAILACCOUNT": "E-Mail Konto hinzufügen",
-    "EDIT_MAILACCOUNT": "E-Mail Konto bearbeiten",
-    "DELETE_MAILACCOUNT": "E-Mail Konto löschen",
-    "DISPOSITIONS": "Qualifizierungen",
+    "EDIT_MAILACCOUNT": "E-Mail-Konto bearbeiten",
+    "DELETE_MAILACCOUNT": "E-Mail-Konten löschen",
+    "DISPOSITIONS": "Bestimmungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "OTHERS": "Andere",
     "SERVICE": "Service",
     "CREATED_AT": "Erstellt am",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Die Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
-    "CLOSEMETHOD": "Methode schließen",
-    "CLOSEURL": "URL schließen",
+    "CLOSE": "In der Nähe",
+    "CLOSEMETHOD": "In der Nähe Methode",
+    "CLOSEURL": "Der URL",
     "WHITELABEL": "White Label",
-    "SIGNATURE": "Signatur",
+    "SIGNATURE": "Unterschrift",
     "IMAP": "IMAP",
     "HOST": "Host",
     "USERNAME": "Benutzername",
-    "PORT": "Port",
+    "PORT": "Hafen",
     "MAILBOX": "Mailbox",
     "FILTER": "Filter",
     "CONNTIMEOUT": "Connection Timeout [sek]",
     "SMTP": "SMTP",
     "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "MAIL": "E-Mail",
-    "ID": "ID",
+    "ID": "Id",
     "TIMEOUT": "Timeout",
     "PASSWORD": "Passwort",
-    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail Qualifizierung verfügbar",
-    "ADD_MAILDISPOSITION": "Qualifizierung hinzufügen",
-    "NEW_MAILDISPOSITION": "Neue E-Mail Qualifizierung",
-    "EDIT_MAILDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_MAILDISPOSITION": "Qualifizierung löschen",
-    "MAILDISPOSITIONS": "E-Mail Qualifizierungen",
+    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail zur Verfügung Verfügungen",
+    "ADD_MAILDISPOSITION": "E-Mail hinzufügen Disposition",
+    "NEW_MAILDISPOSITION": "Neue E-Mail zur Verfügung",
+    "EDIT_MAILDISPOSITION": "Bearbeiten von E-Mail zur Verfügung",
+    "DELETE_MAILDISPOSITION": "Löschen von E-Mail zur Verfügung",
+    "MAILDISPOSITIONS": "E-Mail Verfügungen",
     "NEW_MAILQUEUE": "Neue E-Mail Warteschlange",
-    "NEW_MAILACCOUNT": "Neues E-Mail Konto",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ALL_TEAMS": "Alle Teams",
+    "NEW_MAILACCOUNT": "Neue E-Mail Konto",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "USERNAME": "Benutzername für die Authentifizierung",
-      "PASSWORD": "Passwort für die Authentifizierung",
-      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zum Server aufgebaut wird",
-      "FONT_FAMILY": "Standard-Schriften",
+      "USERNAME": "Benutzername für die Authentifizierung verwendet werden",
+      "PASSWORD": "Kennwort für die Authentifizierung verwendet werden",
+      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zu Server",
+      "FONT_FAMILY": "Standardschriftfamilie",
       "FONT_SIZE": "Standard Schriftgröße",
-      "MARK_AS_UNREAD": "Aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
+      "MARK_AS_UNREAD": "Agent aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
+      "MANDATORYDISPOSITION": "Zwingende Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Anhalten, um zu verwenden, wenn die obligatorische Disposition aktiviert ist"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "TEAMADD_MAILQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_MAILQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "OF": "Von",
+    "TEAMADD_MAILQUEUE": "Team Chat Warteschlange hinzufügen",
+    "AGENTADD_MAILQUEUE": "Agent zu Chatten Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "AGENT": "Agent",
     "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "DISPOSITION": "Qualifizierung",
-    "GOTOIF": "GoToIf",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "DISPOSITION": "Disposition",
+    "GOTOIF": "GotoIf",
     "EDIT_GOTOIF": "Bearbeiten GotoIf",
-    "CONDITION": "Bedingung",
+    "CONDITION": "Zustand",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "GOTOP": "GotoP",
     "VALUE": "Wert",
     "QUEUE": "Warteschlange",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Startdatum",
+    "INTERACTIONS": "Wechselwirkungen",
+    "STARTEDAT": "Gestartet am",
     "CONTACT": "Kontakt",
     "CLOSEDAT": "Geschlossen",
-    "NOTES": "Anmerkungen",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "NOTES": "Hinweise",
+    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
     "ACTIVE": "Aktiv",
-    "SECURE": "Sicher",
+    "SECURE": "Sichere",
     "AUTHENTICATION": "Authentifizierung",
     "SMTP_HOST": "SMTP-Host",
     "SMTP_PORT": "SMTP-Port",
     "IMAP_PORT": "IMAP-Port",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "SELECT_STATUS": "Status auswählen",
-    "OPENED": "Geöffnet",
+    "OPENED": "Öffnen",
     "CLOSED": "Geschlossen",
     "ALL": "Alle",
     "SELECT_ACCOUNT": "Konto auswählen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "VOICE": "Anrufe",
+    "AGENTADD_QUEUE": "Agent E-Mail Warteschlange hinzufügen",
+    "VOICE": "Voice",
     "CHAT": "Chat",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Channel öffnen",
     "FAX": "Fax",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "ACCOUNTS": "Konten",
-    "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "FULLNAME": "Voller Name",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "TOTAL": "Gesamt",
-    "IN": "Eingehend",
-    "OUT": "Ausgehend",
+    "WAITING": "Warten",
+    "TOTAL": "Insgesamt",
+    "IN": "In",
+    "OUT": "Aus",
     "IMAP_STATUS": "IMAP-Status",
     "SMTP_STATUS": "SMTP-Status",
     "DISABLED": "Deaktiviert",
     "CONNECTED": "Verbunden",
-    "NEVER_VERIFIED": "Noch nicht verifiziert",
+    "NEVER_VERIFIED": "Nie verifiziert",
     "ERROR": "Fehler",
     "EDIT_ACCOUNT": "Konto bearbeiten",
-    "VERIFY_SMTP": "Bitte SMTP-Einstellungen prüfen",
+    "VERIFY_SMTP": "Überprüfen Sie die SMTP-",
     "VERIFIED": "Überprüft",
-    "VERIFYSMTP_MAILACCOUNT": "Bitte SMTP-Einstellungen prüfen",
-    "GOTOREALTIME_MAILACCOUNT": "Zum E-Mail-Konto Echtzeitmonitoring",
-    "GOTO_MAILACCOUNT": "Zum E-Mail Konto gehen",
+    "VERIFYSMTP_MAILACCOUNT": "Überprüfen Sie die SMTP-",
+    "GOTOREALTIME_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
+    "GOTO_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "INFO": "Information",
+    "IN_USE": "Im Einsatz",
+    "AGENTSADD_QUEUE": "Agenten zu Warteschlange hinzufügen",
+    "INFO": "Info",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "Echtzeitmonitoring E-Mail Warteschlangen",
-    "PARTIALPAUSE": "Teilpause",
+    "GOTOREALTIME_MAILQUEUE": "In Echtzeit, E-Mail Warteschlange",
+    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "SPYINTERACTION": "Mithören",
+    "SPYINTERACTION": "Spy",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Notiz",
+    "NOTE": "Hinweis",
     "TAGS": "Tags",
-    "INTERACTIONS_MAILACCOUNT": "Zu den Interaktionen gehen",
-    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "PENDING": "Warten auf Rückmeldung",
-    "SEND_AS_PENDING": "Senden und auf Rückmeldung warten",
-    "SEND_AND_CLOSE": "Senden und schließen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_MAILCANNEDANSWER": "Neue Textvorlage",
-    "ADD_MAILCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_MAILCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_MAILCANNEDANSWER": "Textvorlage löschen",
+    "INTERACTIONS_MAILACCOUNT": "Zu Wechselwirkungen gehen",
+    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
+    "PENDING": "Ausstehend",
+    "SEND_AS_PENDING": "Senden als Ausstehend",
+    "SEND_AND_CLOSE": "Senden und Schließen",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_MAILCANNEDANSWER": "Neue vordefinierte Antowrt",
+    "ADD_MAILCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_MAILCANNEDANSWER": "Vordefiierte Antwort bearbeiten",
+    "DELETE_MAILCANNEDANSWER": "Vordefinierte Antwort löschen",
     "SHOW_ORIGINAL_MESSAGE": "Ursprüngliche Nachricht anzeigen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "ACCEPTED": "Akzeptiert",
     "FONT_FAMILY": "Schriftfamilie",
     "FONT_SIZE": "Schriftgröße",
-    "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "ADD_MAILSUBSTATUS": "SubStatus hinzufügen",
-    "DELETE_MAILSUBSTATUS": "SubStatus löschen",
-    "EDIT_MAILSUBSTATUS": "SubStatus bearbeiten",
-    "MAILSUBSTATUSES": "E-Mail SubStatus",
-    "NEW_MAILSUBSTATUS": "Neuer SubStatus",
-    "SEND_AS": "Senden als",
-    "COMMAND": "Eingabe",
+    "MARK_AS_UNREAD": "als ungelesen markieren",
+    "ADD_MAILSUBSTATUS": "Unterstatus hinzufügen",
+    "DELETE_MAILSUBSTATUS": "Löschen",
+    "EDIT_MAILSUBSTATUS": "Bearbeiten",
+    "MAILSUBSTATUSES": "E-Mail-Unterstatus",
+    "NEW_MAILSUBSTATUS": "Neuer Unterstatus",
+    "SEND_AS": "Senden Als",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klingen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Tag",
-    "AGENTTRANSFER": "Weiterleitung Agent",
-    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agententransfer",
-    "QUEUETRANSFER": "Weiterleitung Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
-    "TRANSFER": "Weiterleitung",
-    "AGENTADD_MAILACCOUNT": "Agenten zum E-Mail Konto hinzufügen",
+    "TAG": "Etikett",
+    "AGENTTRANSFER": "Agentenübertragung",
+    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agentenübertragungen",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
+    "TRANSFER": "Transfer",
+    "AGENTADD_MAILACCOUNT": "Fügen Sie dem E-Mail-Konto Agent hinzu",
     "YOU_ARE_REGISTERED_AS_A": "Sie sind registriert als",
-    "CANNEDANSWERS": "Textvorlagen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "MAILCANNEDANSWERS": "E-Mail Textvorlagen",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "MAILCANNEDANSWERS": "Vordefinierte Antworten",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "DOWNLOAD": "Herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern sonst erforderlich",
-    "ADVANCED": "Erweitert",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung angehalten",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Herunterladen ohne Anhang",
-    "DOWNLOAD_WITH_ATTACHMENT": "Herunterladen inkl. Anhang",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "ADVANCED": "Fortgeschritten",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Ohne Anhang herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENT": "Download mit Anhang",
     "LASTMESSAGE": "Letzte Nachricht",
     "REPLY_TYPE": "Antworttyp"
   }
index 97c6fe2..235afae 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "وصف",
     "DOWNLOAD_PLUGIN": "تنزيل المكون الإضافي",
     "DROP_TO_UPLOAD": "إسقاط للتحميل",
-    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 2MB",
     "EDITOR": "محرر",
     "EDIT_PLUGIN": "تحرير المكوّن الإضافي",
     "FINISH": "إنهاء",
index 312c4ab..e80fbe2 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 495ea1e..3bd5ad2 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 2MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Afslut",
index 054564e..f150ff2 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. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 2 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Plugin bearbeiten",
     "FINISH": "Fertig",
index 312c4ab..e80fbe2 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 56d6276..a85d3cb 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. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 2 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 312c4ab..e80fbe2 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 0202268..bf299e5 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "شرح",
     "DOWNLOAD_PLUGIN": "دانلود پلاگین",
     "DROP_TO_UPLOAD": "قطره برای آپلود",
-    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 4 مگابایت",
+    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 2 مگابایت",
     "EDITOR": "ویرایشگر",
     "EDIT_PLUGIN": "ویرایش پلاگین",
     "FINISH": "پایان دادن",
index b934012..be3860b 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. 4 Mt",
+    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 2 Mt",
     "EDITOR": "toimittaja",
     "EDIT_PLUGIN": "Muokkaa lisäosaa",
     "FINISH": "Suorittaa loppuun",
index bbf8e7b..edbcd90 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. 4 Mo",
+    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 2 Mo",
     "EDITOR": "Éditeur",
     "EDIT_PLUGIN": "Modifier le plugin",
     "FINISH": "terminer",
index d5a9a13..c3cb181 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "שמור",
     "INSTALLING": "התקנה",
     "DROP_TO_UPLOAD": "שחרר כדי להעלות",
-    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 2MB",
     "UPLOAD_PLUGIN": "יישום Plug-in להעלאות",
     "UPLOADING": "העלאה",
     "CREATED_AT": "נוצר ב-",
index 043d58e..1170227 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "विवरण",
     "DOWNLOAD_PLUGIN": "प्लगइन डाउनलोड करें",
     "DROP_TO_UPLOAD": "अपलोड करने के लिए ड्रॉप",
-    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 4 एमबी",
+    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 2 एमबी",
     "EDITOR": "संपादक",
     "EDIT_PLUGIN": "प्लगइन संपादित करें",
     "FINISH": "समाप्त",
index 86fb87a..c4fbe7e 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. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 2 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Edit plugin",
     "FINISH": "Selesai",
index 212fdff..68e0c53 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Upload in corso",
     "CREATED_AT": "Creato il",
index 190c600..3fd4f57 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "説明",
     "DOWNLOAD_PLUGIN": "プラグインをダウンロード",
     "DROP_TO_UPLOAD": "アップロードするドロップ",
-    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 2MB",
     "EDITOR": "編集者",
     "EDIT_PLUGIN": "プラグインを編集",
     "FINISH": "フィニッシュ",
index a3774d1..29c0869 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "기술",
     "DOWNLOAD_PLUGIN": "플러그인 다운로드",
     "DROP_TO_UPLOAD": "올리기",
-    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 2MB",
     "EDITOR": "편집자",
     "EDIT_PLUGIN": "플러그인 편집",
     "FINISH": "끝",
index 312c4ab..e80fbe2 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index aad4d13..154c0b7 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. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 2 MB",
     "EDITOR": "Redaktors",
     "EDIT_PLUGIN": "Rediģēt spraudni",
     "FINISH": "Pabeigt",
index 0ab1946..361f77e 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 2MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Bewerk plugin",
     "FINISH": "Af hebben",
index 0fbd637..d49bd20 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 2MB",
     "EDITOR": "Redaktør",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Bli ferdig",
index 2bda13c..d694357 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. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 2 MB",
     "EDITOR": "Redaktor",
     "EDIT_PLUGIN": "Edytuj wtyczkę",
     "FINISH": "koniec",
index 312c4ab..e80fbe2 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index e93ddba..ac5383c 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 2MB",
     "EDITOR": "editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 534d51d..39efe9f 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Описание",
     "DOWNLOAD_PLUGIN": "Скачать плагин",
     "DROP_TO_UPLOAD": "Загрузить",
-    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 2MB",
     "EDITOR": "редактор",
     "EDIT_PLUGIN": "Изменить плагин",
     "FINISH": "Конец",
index 4085544..171327a 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 2MB",
     "EDITOR": "Redaktör",
     "EDIT_PLUGIN": "Redigera plugin",
     "FINISH": "Avsluta",
index 0c17adc..4646459 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. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 2MB",
     "EDITOR": "Editör",
     "EDIT_PLUGIN": "Eklentiyi düzenle",
     "FINISH": "Bitiş",
index ac2f84c..18246b8 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下载插件",
     "DROP_TO_UPLOAD": "删除上传",
-    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 2MB",
     "EDITOR": "编辑",
     "EDIT_PLUGIN": "编辑插件",
     "FINISH": "完",
index 98dc201..2956f0d 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下載插件",
     "DROP_TO_UPLOAD": "刪除上傳",
-    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 2MB",
     "EDITOR": "編輯",
     "EDIT_PLUGIN": "編輯插件",
     "FINISH": "完",
index bc7a95d..3964882 100644 (file)
       "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"
+      "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition"
     },
     "MUSICONHOLD": "Music On Hold",
     "ANNOUNCETOAGENT": "Announce To Agent",
     "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"
+    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available"
   }
 }
index e326679..903bd47 100644 (file)
       "MACHINERETRYTIME": "Tempo in minuti prima di provare a richiamare un contatto non riuscito a causa della macchina",
       "NOSUCHNUMBERETRYTIME": "Tempo in minuti prima di provare a chiamare nuovamente un contatto non riuscito a causa di tale numero",
       "NOSUCHNUMBERMAXRETRY": "Numero massimo di volte in cui un contatto viene chiamato prima di considerarlo chiuso, quando la chiamata non è riuscita senza tale numero",
-      "NOSUCHNUMBERRETRYTIME": "Tempo in minuti prima di provare a chiamare di nuovo un contatto fallito a causa della mancanza di tale numero",
-      "PREVIEW_AUTO_RECALL_ME": "Se abilitato, il sistema genererà automaticamente le chiamate Recall Me, altrimenti l'agente dovrà effettuarle manualmente"
+      "NOSUCHNUMBERRETRYTIME": "Tempo in minuti prima di provare a chiamare di nuovo un contatto fallito a causa della mancanza di tale numero"
     },
     "MUSICONHOLD": "Musica di attesa",
     "ANNOUNCETOAGENT": "Annuncio all'Agente",
     "NOSUCHNUMBERMAXRETRY": "Numero massimo di tentativi",
     "NOSUCHNUMBERRETRYTIME": "Riprova [min]",
     "TOOLTIP_SCREENRECORDING_OFF": "Registrazione dello schermo disponibile",
-    "TOOLTIP_SCREENRECORDING_ON": "Registrazione dello schermo in corso",
-    "PREVIEW_AUTO_RECALL_ME": "Automatizza chiamate Recall Me"
+    "TOOLTIP_SCREENRECORDING_ON": "Registrazione dello schermo in corso"
   }
 }
index d002733..0ef1225 100644 (file)
@@ -1,59 +1,59 @@
 {
   "OPENCHANNEL": {
     "TEXT": "Text",
-    "TIMES": "Zeitstempel",
-    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
+    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
+    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
     "AUTOREPLY": "Automatische Antwort",
     "NAME": "Name",
-    "OPENCHANNELQUEUES": "Warteschlangen offener Kanal",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "OPENCHANNELQUEUES": "Offener Kanal Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "ERRORS": {
-      "TEXT_REQUIRED": "Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Agent Timeout ist erforderlich",
-      "MOTIONADDRESS_REQUIRED": "Adresse ist erforderlich",
-      "MOTIONADDRESS_MUST_VALID_URL": "Adresse ungültiges Format",
-      "ACCEPTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "CLOSEURL_MUST_VALID_URL": "URL ungültiges Format",
-      "REPLYURI_REQUIRED": "Antwort-URL ungültiges Format",
-      "REPLYURI_MUST_VALID_URL": "Antwort-URL ungültiges Format",
-      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
-      "CONDITION_REQUIRED": "Bedingung ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Falsche Priorität ist erforderlich",
+      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
+      "MOTIONADDRESS_REQUIRED": "Die Adresse ist erforderlich",
+      "MOTIONADDRESS_MUST_VALID_URL": "Die Adresse muss in einem gültigen Format",
+      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "REPLYURI_REQUIRED": "Die Antwort URL ist erforderlich",
+      "REPLYURI_MUST_VALID_URL": "Die Antwort URL muss im gültigen Format geschrieben werden",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
       "AGENT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge haben von {{max}}",
-      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}}",
+      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "VALUE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
       "LIST_REQUIRED": "Pflichtfeld",
       "KEY_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "NAME_MUST_VALID_PATTERN": "Format ungültig",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "NAME_MUST_VALID_PATTERN": "Falsches Format",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID ist erforderlich",
-      "BOTNAME_REQUIRED": "Bot-Name ist erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Geheimer Schlüssel ist erforderlich",
+      "BOTNAME_REQUIRED": "Der Bot-Name ist erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Zugangsschlüssel geheim ist erforderlich",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
     "QUEUE": "Warteschlange",
-    "EDIT_AGENT": "Agenteb bearbeiten",
-    "EDIT_GOTO": "Gehe zu bearbeiten",
-    "EDIT_NOOP": "Noop bearbeiten",
-    "EDIT_GOTOIF": "GoToIf bearbeiten",
+    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_GOTO": "Bearbeiten Gehe zu",
+    "EDIT_NOOP": "Bearbeiten Noop",
+    "EDIT_GOTOIF": "Bearbeiten Gotoif",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Bedingung",
+    "CONDITION": "Zustand",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "PRIORITY": "Priorität",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "ADD_OPENCHANNELQUEUE": "Warteschlange offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELQUEUE": "Warteschlange offener Kanal bearbeiten",
-    "DELETE_OPENCHANNELQUEUE": "Warteschlange offener Kanal löschen",
-    "PENALTY": "Verzögerung",
+    "ADD_OPENCHANNELQUEUE": "Fügen Sie im Offenen Kanal Warteschlange",
+    "EDIT_OPENCHANNELQUEUE": "Offener Kanal Warteschlange bearbeiten",
+    "DELETE_OPENCHANNELQUEUE": "Löschen der Warteschlange im Offenen Kanal",
+    "PENALTY": "Strafe",
     "TEAMADD_OPENCHANNELQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_OPENCHANNELQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_OPENCHANNELQUEUE": "Agent zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "OPENCHANNELACCOUNTS": "Konten offener Kanal",
+    "OPENCHANNELACCOUNTS": "Offener Kanal Konten",
     "MOTIONADDRESS": "Motion Adresse",
-    "ADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELACCOUNT": "Konto offener Kanal bearbeiten",
-    "DELETE_OPENCHANNELACCOUNT": "Konto offener Kanal löschen",
+    "ADD_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account hinzufügen",
+    "EDIT_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account bearbeiten",
+    "DELETE_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account löschen.",
     "API": "API",
-    "DISPOSITIONS": "Qualifizierungen",
+    "DISPOSITIONS": "Bestimmungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Die Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
-    "CLOSEMETHOD": "Methode schließen",
-    "CLOSEURL": "URL schließen",
-    "SELECTED": "Ausgewählt",
+    "CLOSE": "In der Nähe",
+    "CLOSEMETHOD": "In der Nähe Methode",
+    "CLOSEURL": "Der URL",
+    "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "OPENCHANNEL": "Offener Kanal",
-    "ID": "ID",
+    "ID": "Id",
     "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Qualifizierungen offener Kanal",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
-    "NEW_OPENCHANNELDISPOSITION": "Neue Qualifizierung",
-    "ADD_OPENCHANNELDISPOSITION": "Qualifizierung offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_OPENCHANNELDISPOSITION": "Qualifizierung löschen",
-    "NEW_OPENCHANNELQUEUE": "Neue Warteschlange offener Kanal",
-    "NEW_OPENCHANNELACCOUNT": "Neues Konto offener Kanal",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ALL_TEAMS": "Alle Teams",
+    "OPENCHANNELDISPOSITIONS": "Offener Kanal Verfügungen",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine offenen Kanal Dispositionen verfügbar",
+    "NEW_OPENCHANNELDISPOSITION": "Neue Offene Kanal inspektion",
+    "ADD_OPENCHANNELDISPOSITION": "Fügen Sie im Offenen Kanal inspektion",
+    "EDIT_OPENCHANNELDISPOSITION": "Bearbeiten Sie im Offenen Kanal inspektion",
+    "DELETE_OPENCHANNELDISPOSITION": "Löschen Sie im Offenen Kanal inspektion",
+    "NEW_OPENCHANNELQUEUE": "Neue Offene Kanal Warteschlange",
+    "NEW_OPENCHANNELACCOUNT": "Neue Open Channel Account",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "REPLYURI": "Antwort URL",
     "RECEIVEURI": "Erhalten URL",
     "HELP": {
-      "RECEIVEURI": "Automatisch generierter API-String, um die Nachrichten über den offenen Kanal zu erhalten (POST-Methode). Zum Kopieren in die Zwischenablage klicken",
-      "REPLYURI": "URL des offenen Kanals zum Senden und Empfangen von Nachrichten",
+      "RECEIVEURI": "Dies ist die automatisch generierte API-String müssen Sie die Nachrichten in Ihrem offenen Kanal zu erhalten von der externen Anwendung (POST-Methode verwendet werden muss). Drücken Sie die Zwischenablage, um Sie in die Zwischenablage zu kopieren.",
+      "REPLYURI": "Dies ist die URL der Offene Kanal wird beim Senden oder Beantworten von Nachrichten",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "LIST": "Contact Manager Liste zu verknüpfen von Kontakten",
       "TOKEN": "Fügen Sie diese Eigenschaft als Abfragezeichenfolge in Ihrer Web-Service-URL hinzu. Weitere Informationen finden Sie im Dokument doc <a target = \"_ blank\" href = \"https://wiki.xcallymotion.com/display/XMV/New Channels Configuration Steps",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
-      "WELCOMEMESSAGE": "Willkommensnachricht beim Eintreffen der ersten Anfrage"
+      "MANDATORYDISPOSITION": "Zwingende Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+      "WELCOMEMESSAGE": "Dies ist die erste Nachricht, die an das Schütz gesendet wird"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CONTACT": "Kontakt",
-    "STARTEDAT": "Startdatum",
+    "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Geöffnet",
+    "OPENED": "Öffnen",
     "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Interaktionen",
+    "INTERACTIONS": "Wechselwirkungen",
     "ALL": "Alle",
-    "SELECT_STATUS": "Status auswählen",
+    "SELECT_STATUS": "Wählen Sie einen Status",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Qualifizierung",
-    "NOTES": "Anmerkungen",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
-    "SELECT_ACCOUNT": "Konto auswählen",
+    "DISPOSITION": "Disposition",
+    "NOTES": "Hinweise",
+    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "INFO": "Information",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "INFO": "Info",
     "KEY": "Schlüssel",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
+    "IN_USE": "Im Einsatz",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
+    "AGENTADD_QUEUE": "Agent zu Offenen Kanal Warteschlange hinzufügen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "VOICE": "Anrufe",
+    "WAITING": "Warten",
+    "VOICE": "Voice",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten, die Offenen Kanal Warteschlange hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Zum offener Kanal Echtzeitmonitoring",
-    "PARTIALPAUSE": "Teilpause",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "In Echtzeit, offenen Kanal Warteschlange",
+    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Mithören",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Interaktionen gehen",
-    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
+    "SPYINTERACTION": "Spy",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Wechselwirkungen gehen",
+    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
     "DELETE": "Löschen",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_OPENCHANNELCANNEDANSWER": "Neue Textvorlage",
-    "ADD_OPENCHANNELCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Textvorlage löschen",
-    "DELIVERYREPORTURL": "URL für Zustellungsbericht",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_OPENCHANNELCANNEDANSWER": "Neue vordefinierte Antwort",
+    "ADD_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "DELIVERYREPORTURL": "Zustellungsbericht-URL",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klingen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "INSERT_MESSAGE_HERE": "Textnachricht hier eingeben",
+    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Fortgeschritten",
     "PROXY": "Proxy",
-    "TOKEN": "Token",
+    "TOKEN": "Zeichen",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Tag",
-    "AGENTADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
-    "MAPKEY": "MAP-KEY",
+    "TAG": "Etikett",
+    "AGENTADD_OPENCHANNELACCOUNT": "Fügen Sie Agent zu Openchannel Account hinzu",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "MAPKEY": "Karten Schlüssel",
     "SEND": "Senden",
-    "TO": "An",
-    "AGENTTRANSFER": "Weiterleitung Agent",
+    "TO": "Zu",
+    "AGENTTRANSFER": "Agent Transfer",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Weiterleitung Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
-    "TRANSFER": "Weiterleitung",
-    "CANNEDANSWERS": "Textvorlagen",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
+    "TRANSFER": "Transfer",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "OPENCHANNELCANNEDANSWERS": "Textvorlagen offener Kanal",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern sonst erforderlich",
-    "DIALOGFLOW": "DialogFlow",
-    "EDIT_DIALOGFLOW": "DialogFlow bearbeiten",
+    "OPENCHANNELCANNEDANSWERS": "Vordefinierte Antworten",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "DIALOGFLOW": "Dialogablauf",
+    "EDIT_DIALOGFLOW": "Bearbeiten Sie die Dialogflow-Konfiguration",
     "LANGUAGE": "Sprache",
-    "WELCOMEMESSAGE": "Willkommensnachricht",
+    "WELCOMEMESSAGE": "Willkommen Messsage",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Botname",
-    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
-    "LEXREGION": "Lex Region",
-    "SECRETACCESSKEY": "Geheimer Schlüssel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme angehalten",
+    "BOTNAME": "Bot-Name",
+    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
+    "LEXREGION": "Region",
+    "SECRETACCESSKEY": "Zugangsschlüssel geheim",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
     "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterlagen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden E-Mail",
+    "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Notiz"
+    "NOTE": "Hinweis"
   }
 }
index ee88755..b5e8a7a 100644 (file)
 {
   "STAFF": {
     "CONTEXT": "Kontext",
-    "RINGINUSE": "Innerhalb Verteilungsgrupppe",
+    "RINGINUSE": "Ring im Einsatz",
     "USERS": "Benutzer",
     "AGENTS": "Agenten",
-    "TOGGLE_SIDENAV": "Navigationsleiste umschalten",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "TOGGLE_SIDENAV": "Um sidenav",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "BACK": "Zurück",
-    "MULTI_SELECT_TOGGLE": "Mehrfachauswahl ja/nein",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
-    "SELECTED": "Ausgewählt",
+    "MULTI_SELECT_TOGGLE": "Wählen Sie toggle multi",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählte",
     "DELETE_SELECTED": "Auswahl löschen",
     "EXPORT_SELECTED": "Auswahl exportieren",
     "ALL_USERS": "Alle Benutzer",
     "ALL_AGENTS": "Alle Agenten",
     "SORT": "Sortieren",
     "NAME": "Name",
-    "FULLNAME": "Vollständiger Name",
+    "FULLNAME": "Voller Name",
     "A_TO_Z": "(A bis Z)",
     "Z_TO_A": "(Z bis A)",
     "MORE": "Mehr",
     "DELETE_USER": "Benutzer löschen",
     "EDIT_USER": "Benutzer bearbeiten",
-    "DELETE_AGENT": "Agenten löschen",
-    "EDIT_AGENT": "Agenten bearbeiten",
+    "DELETE_AGENT": "Bedienplatz löschen",
+    "EDIT_AGENT": "Agent bearbeiten",
     "DELETE": "Löschen",
     "SAVE": "Speichern",
     "ADD_USER": "Benutzer hinzufügen",
     "ADD_AGENT": "AGENT HINZUFÜGEN",
-    "NO_RESULTS": "Keine Ergebnisse",
+    "NO_RESULTS": "Keine Ergebnisse.",
     "CLOSE_DIALOG": "Dialog schließen",
-    "NAME_REQUIRED": "Name (erforderlich)",
+    "NAME_REQUIRED": "Name (erforderlich).",
     "USERNAME": "Benutzername",
     "SHOW_ALL_FIELDS": "Alle Felder anzeigen",
     "PHONE_NUMBER": "Telefonnummer",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
     "ERRORS": {
-      "FULLNAME_REQUIRED": "Vollständiger Name ist erforderlich",
-      "USERNAME_REQUIRED": "Benutzername ist erforderlich",
-      "EMAIL_REQUIRED": "E-Mail ist erforderlich",
-      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
-      "ACCOUNTNAME_REQUIRED": "Konto ist erforderlich",
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "HOST_REQUIRED": "Host ist erforderlich",
-      "CHATCAPACITY_REQUIRED": "Kapazität Chat ist erforderlich",
-      "MAILCAPACITY_REQUIRED": "Kapazität E-Msil ist erforderlich",
-      "FAXCAPACITY_REQUIRED": "Kapazität Fax ist erforderlich",
-      "SMSCAPACITY_REQUIRED": "Kapazität SMS ist erforderlich",
-      "OPENCHANNELCAPACITY_REQUIRED": "Kapazität offener Kanal ist erforderlich",
-      "SIPEXPIRES_REQUIRED": "SIP-Ablaufdatum ist erforderlich",
-      "SIPPORT_REQUIRED": "SIP-Port ist erforderlich",
-      "UNCONDITIONALNUMBER_REQUIRED": "Zielrufnummer ist erforderlich",
-      "NOREPLYNUMBER_REQUIRED": "Nummer bei keiner Antwort ist erforderlich",
-      "BUSYNUMBER_REQUIRED": "Nummer bei Besetzt ist erforderlich",
-      "USERNAME_MUST_VALID_PATTERN": "Benutzername ungültig {{regex}}.",
-      "REMOTECONTROLPORT_REQUIRED": "Port für Remote ist erforderlich",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Chat muss größer oder gleich sein als",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität E-Mail muss größer oder gleich sein als",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Fax muss größer oder gleich sein als",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität offener Kanal muss größer oder gleich sein als",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FULLNAME_REQUIRED": "Der Fullname ist erforderlich",
+      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
+      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
+      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
+      "ACCOUNTNAME_REQUIRED": "Der Account ist erforderlich.",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "CHATCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
+      "MAILCAPACITY_REQUIRED": "Die E-Mail Kapazität erforderlich ist",
+      "FAXCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
+      "SMSCAPACITY_REQUIRED": "Die SMS-Kapazität erforderlich ist",
+      "OPENCHANNELCAPACITY_REQUIRED": "Der Offene Kanal Kapazität erforderlich ist",
+      "SIPEXPIRES_REQUIRED": "Der SIP-Ablauf ist erforderlich",
+      "SIPPORT_REQUIRED": "Die SIP-Port erforderlich.",
+      "UNCONDITIONALNUMBER_REQUIRED": "Die Zielrufnummer ist erforderlich",
+      "NOREPLYNUMBER_REQUIRED": "Die Nummer ist keine Antwort erforderlich",
+      "BUSYNUMBER_REQUIRED": "Die besetzt ist erforderlich",
+      "USERNAME_MUST_VALID_PATTERN": "Der Benutzername muss gültige {{regex}}.",
+      "REMOTECONTROLPORT_REQUIRED": "Die Fernbedienung Anschluss erforderlich",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Chat Kapazität muss größer als oder gleich",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die E-Mail Kapazität muss größer als oder gleich",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Fax Kapazität muss größer als oder gleich",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der offene Kanal Kapazität muss größer als oder gleich",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
       "AUTOANSWERDELAY_REQUIRED": "Pflichtfeld",
       "MONITOREXTENSION_REQUIRED": "Pflichtfeld",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "DTLSCERTFILE_REQUIRED": "Pflichtfeld",
       "DTLSPRIVATEKEY_REQUIRED": "Pflichtfeld",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten",
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
       "ALLOWCODECS_REQUIRED": "Pflichtfeld",
       "CRUDPERMISSIONS_REQUIRED": "Pflichtfeld",
       "USERPROFILE_REQUIRED": "Pflichtfeld",
-      "PASSWORD_OLDPASSWORD_MATCH": "Neues und altes Passwort dürfen nicht gleich sein",
+      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden",
       "CONFIRM_REQUIRED": "Pflichtfeld",
       "WHATSAPPCAPACITY_REQUIRED": "Pflichtfeld"
     },
     "ACCOUNT": "Konto",
-    "VOICE": "Anrufe",
+    "VOICE": "Voice",
     "CREATED_AT": "Erstellt am",
     "ROLE": "Rolle",
-    "PERSONAL_INFO": "Persönliche Informationen",
+    "PERSONAL_INFO": "Persönliche Infos",
     "DESCRIPTION": "Beschreibung",
-    "CHANGE_AVATAR": "Avatar ändern",
+    "CHANGE_AVATAR": "Avatar ändern.",
     "GENERAL": "Allgemein",
-    "INTERNAL": "Intern",
-    "TRANSPORT": "Transport",
+    "INTERNAL": "Interne",
+    "TRANSPORT": "Verkehr",
     "ALLOWCODECS": "Codecs erlaubt",
     "HELP": {
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen um das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
-      "SIPEXPIRES": "Standardeinstellung: 160",
+      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen. Wenn Sie möchten, dass das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
+      "SIPEXPIRES": "Standardeinstellung: 120",
       "SIPPORT": "Standardeinstellung: 5160",
-      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: eingehende Authentifizierung - Peer: für ausgehende Anrufe - Freund: Deckt beide Eigenschaften",
-      "CHATCAPACITY": "0 für unbegrenzt",
-      "MAILCAPACITY": "0 für unbegrenzt",
-      "FAXCAPACITY": "0 für unbegrenzt",
-      "SMSCAPACITY": "0 für unbegrenzt",
-      "OPENCHANNELCAPACITY": "0 für unbegrenzt",
-      "CALLGROUP": "Anrufgruppe",
-      "PICKUPGROUP": "Übernahmegruppe",
+      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
+      "CHATCAPACITY": "Null bedeutet unbegrenzt.",
+      "MAILCAPACITY": "Null bedeutet unbegrenzt.",
+      "FAXCAPACITY": "Null bedeutet unbegrenzt.",
+      "SMSCAPACITY": "Null bedeutet unbegrenzt.",
+      "OPENCHANNELCAPACITY": "Null bedeutet unbegrenzt.",
+      "CALLGROUP": "Legt der Agent callgroup",
+      "PICKUPGROUP": "Definiert die Gruppen in denen der Agent Anrufe annehmen können",
       "USERNAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "LAST_PASSWORD_RESET_AT": "Letztes Datum und Uhrzeit, zu der das Passwort geändert wurde. Wenn die Allgemeinen Einstellungen für Secure Suite aktiviert sind, läuft das Passwort nach 90 Tagen ab.",
       "DTLSCERTFILE": "Verknüpfen Sie mit dem gültigen TLS-Zertifikat (.crt-Datei). Standardwert: '/etc/pki/tls/certs/motion.crt'.",
       "DTLSPRIVATEKEY": "Verknüpfen Sie mit dem privaten Schlüssel des Zertifikats (.key-Datei). Standardwert: '/etc/pki/tls/private/motion.key'.",
       "SAVE_PERMISSIONS": "Jeder Abschnitt, der ausstehende Änderungen enthält, wird gespeichert",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Werkzeuge-Modul verwaltet",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Modul Tools verwaltet",
       "APIKEY": "Verwenden Sie die Schaltfläche \"API-Schlüsselmanager\" in der Symbolleiste, um diesen Schlüssel zu verwalten",
-      "ENABLEAUTOMATICSCREENRECORDING": "Funktionalität ist nur für Sprachkanäle verfügbar",
-      "BLOCKED": "Zugriff sperren/entsperren",
-      "DISABLED": "Auswählen zum Aktivieren",
-      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Whatsapp-Interaktionen pro Agent (0 = unbegrenzt)",
+      "ENABLEAUTOMATICSCREENRECORDING": "Die Funktionalität ist nur für Sprachkanäle verfügbar",
+      "BLOCKED": "Zugriff sperren / entsperren",
+      "DISABLED": "Zum Deaktivieren auswählen / Zum Reaktivieren deaktivieren",
+      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Kanalinteraktionen pro Agent (0 = unbegrenzt)",
       "MASK_SENSITIVE_DATA": "Maskieren Sie vertrauliche Daten in der gesamten Anwendung (z. B. Telefonnummern und E-Mail-Adressen).",
       "WSS_PORT": "Standard: 8089"
     },
-    "NEW_PASSWORD": "Neues Passwort",
+    "NEW_PASSWORD": "Neues Kennwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "CHANGE_PASSWORD": "Passwort ändern",
-    "CHANGEPASSWORD_AGENT": "Agent",
-    "CHANGEPASSWORD_USER": "Nutzer",
-    "CHANGEPASSWORD_TELEPHONE": "Telefon",
-    "LOGININPAUSE": "Pause nach Anmelden",
+    "CHANGEPASSWORD_AGENT": "Passwort ändern",
+    "CHANGEPASSWORD_USER": "Passwort ändern",
+    "CHANGEPASSWORD_TELEPHONE": "Passwort ändern",
+    "LOGININPAUSE": "Geben Sie Ihren Benutzernamen und Ihr Passwort In der Pause",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "Listen-In",
+    "CHANSPY": "ChanSpy",
     "OTHER_CHANNELS": "Andere Kanäle",
-    "CHATCAPACITY": "Kapazität Chats",
-    "MAILCAPACITY": "Kapazität E-Mail",
-    "FAXCAPACITY": "Kapazität Fax",
-    "SMSCAPACITY": "Kapazität SMSW",
-    "OPENCHANNELCAPACITY": "Kapazität offener Kanal",
+    "CHATCAPACITY": "Chat Kapazität",
+    "MAILCAPACITY": "E-Kapazität",
+    "FAXCAPACITY": "Fax Kapazität",
+    "SMSCAPACITY": "Sms-Kapazität",
+    "OPENCHANNELCAPACITY": "Offener Kanal Kapazität",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Einstellungen",
-    "AUTOANSWER": "Auto-Antwort",
+    "AUTOANSWER": "\"Autom. Antwort\"",
     "ENABLESETTINGS": "Einstellungen aktivieren",
     "CALL_FORWARDING": "Anrufweiterleitung",
-    "UNCONDITIONAL": "Generell",
-    "UNCONDITIONALNUMBER": "Nummer Weiterleitung generell",
-    "NOREPLY": "Bei keiner Antwort",
-    "NOREPLYNUMBER": "Nummer Weiterleitung keine Antwort",
-    "BUSY": "Bei Besetzt",
-    "BUSYNUMBER": "Nummer Weiterleitung Besetzt",
-    "REMOTE_CONTROL": "Remote-Nebenstelle",
-    "REMOTECONTROL": "Remote-Nebenstelle",
-    "REMOTECONTROLPORT": "Port Remote-Nebenstelle",
+    "UNCONDITIONAL": "Unbedingte",
+    "UNCONDITIONALNUMBER": "Uneingeschränkte Anzahl",
+    "NOREPLY": "Keine Antwort",
+    "NOREPLYNUMBER": "\"Keine Antwort\"-Nummer",
+    "BUSY": "Besetzt",
+    "BUSYNUMBER": "Nummer besetzt",
+    "REMOTE_CONTROL": "Fernbedienung",
+    "REMOTECONTROL": "Fernbedienung",
+    "REMOTECONTROLPORT": "Fernbedienung",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP-Ablaufdatum",
+    "SIPEXPIRES": "SIP läuft [sec]",
     "SIPPORT": "SIP-Port",
-    "PENALTY": "Verzögerung",
+    "PENALTY": "Strafe",
     "ACCOUNTNAME": "Account Name",
     "ADD_TELEPHONE": "Telefon hinzufügen",
     "EDIT_TELEPHONE": "Telefon bearbeiten",
     "DELETE_TELEPHONE": "Telefon löschen",
     "TEAMS": "Teams",
     "DELETE_TEAM": "Team löschen",
-    "AGENTADD_TEAM": "Agenten zu einem Team hinzufügen",
-    "EDIT_TEAM": "Team bearbeiten",
+    "AGENTADD_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
+    "EDIT_TEAM": "Team bearbeiten.",
     "TYPE": "Typ",
-    "TELEPHONES": "Telefonnummern",
-    "CALLERID": "Anrufer-ID",
-    "ENABLERECORDING": "Aufzeichnung aktiv",
+    "TELEPHONES": "Telefone",
+    "CALLERID": "Die Anrufer-ID",
+    "ENABLERECORDING": "Aktivieren der Aufzeichnung",
     "STAFF": "Personal",
-    "ID": "ID",
+    "ID": "Id",
     "NEW_USER": "Neuer Benutzer",
     "NEW_AGENT": "Neuer Agent",
     "NEW_TELEPHONE": "Neues Telefon",
     "NEW_TEAM": "Neues Team",
     "ADD_TEAM": "Team hinzufügen",
-    "JOIN_QUEUE": "In Warteschlange beitreten",
+    "JOIN_QUEUE": "Melden Sie Warteschlange",
     "CAPACITY": "Kapazität",
     "AUTOINTERNAL": "Interne Nummer automatisch generieren",
-    "ADD_AGENT_TO_TEAM": "Agenten zum Team hinzufügen",
-    "TEAMADD_AGENT": "Zum Team hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ADD_AGENT_TO_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
+    "TEAMADD_AGENT": "Agent zu Gruppe hinzufügen",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "PERMISSIONS": "Berechtigungen",
-    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
     "ALL_MODULES_AVAILABLE": "Alle Module verfügbar",
-    "CALLGROUP": "Gruppenanruf",
+    "CALLGROUP": "Gruppenruf",
     "PICKUPGROUP": "Übernahmegruppe",
-    "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",
-    "QUEUEADD_USER_VOICE_INBOUND": "Nutzer hinzufügen - eingehende Anrufe",
-    "QUEUEADD_USER_CHAT_INBOUND": "Nutzer hinzufügen - eingehende Chats",
-    "QUEUEADD_USER_MAIL_INBOUND": "Nutzer hinzufügen - eingehende E-Mails",
-    "QUEUEADD_USER_SMS_INBOUND": "Nutzer hinzufügen - eingehende SMS",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Nutzer hinzufügen - eingehender offener Kanal",
-    "QUEUEADD_USER_FAX_INBOUND": "Nutzer hinzufügen - eingehende Faxe",
-    "ALL_TEAMS": "Alle Teams",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agent in der Warteschlange Kampagnen hinzufügen",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Agent Voice Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Agent zu chatten Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Agent Mail Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Agent sms-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agent zu offenen Kanal Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Agent fax Warteschlangen hinzufügen",
+    "QUEUEADD_USER_VOICE_INBOUND": "Benutzer stimme Warteschlangen hinzufügen",
+    "QUEUEADD_USER_CHAT_INBOUND": "Benutzer zu chatten Warteschlangen hinzufügen",
+    "QUEUEADD_USER_MAIL_INBOUND": "Benutzer Mail Warteschlangen hinzufügen",
+    "QUEUEADD_USER_SMS_INBOUND": "Benutzer von SMS-Warteschlangen hinzufügen",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Benutzer zum offenen Kanal Warteschlangen hinzufügen",
+    "QUEUEADD_USER_FAX_INBOUND": "Benutzer fax Warteschlangen hinzufügen",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
-    "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_VOICE_OUTBOUND": "Alle Queue Kampagnen",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Ausgewählte Warteschlange Kampagnen",
+    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Voice Warteschlangen",
+    "ALL_QUEUES_CHAT_INBOUND": "Alle Chat Warteschlangen",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Chat-warteschlangen",
+    "ALL_QUEUES_MAIL_INBOUND": "Alle E-Mail-Warteschlangen",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Mail Warteschlangen",
+    "ALL_QUEUES_SMS_INBOUND": "Alle SMS-Warteschlangen",
+    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte SMS-Warteschlangen",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle offenen Kanal Warteschlangen",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählten Offenen Kanal Warteschlangen",
+    "ALL_QUEUES_FAX_INBOUND": "Alle Fax Warteschlangen",
+    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Fax Warteschlangen",
     "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "WebControl anzeigen",
+    "SHOWWEBCONTROL": "Anzeigen Web Control",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CALLFORWARDING": "Anrufweiterleitung",
-    "DND": "Nicht stören",
-    "UNANSWEREDCALLBADGE": "Badge unbeantwortete Anrufe",
-    "ENABLEDTMFTONE": "DMFT-Töne aktivieren",
-    "AUTOANSWERDELAY": "Automatische Antwort nach",
+    "DND": "Während der Pause nicht stören",
+    "UNANSWEREDCALLBADGE": "Zeige unbeantwortete Anruf Abzeichen",
+    "ENABLEDTMFTONE": "Dtmf-Töne aktivieren",
+    "AUTOANSWERDELAY": "Auto Antwortverzögerung",
     "ENCRYPTION": "Verschlüsselung",
     "CHANNELS": "Kanäle",
     "CHAT": "Chat",
-    "SMS": "SMS",
+    "SMS": "Sms",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Nutzer zu Warteschlange für eingehende Anrufe hinzufügen",
-    "MONITOREXTENSION": "Nebenstelle des Nutzers aufzeichnen",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Benutzer in Warteschlange Kampagnen hinzufügen",
+    "MONITOREXTENSION": "Anrufe an die Nebenstelle des Benutzers aufzeichnen",
     "NO_PASSWORD_CHANGE": "Keine Passwortänderung",
     "SECURITY_SUITE": "Sicherheitssuite",
-    "LAST_PASSWORD_RESET_AT": "Passwort zuletzt zurückgesetzt am:",
-    "SIP_WEBRTC": "SIP/WebRTC",
-    "SETTINGS_WEBRTC": "Einstellungen",
+    "LAST_PASSWORD_RESET_AT": "Letzte Passwort zurücksetzen um",
+    "SIP_WEBRTC": "Schluck",
+    "SETTINGS_WEBRTC": "die Einstellungen",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "TLS-Zertifikat",
-    "DTLSPRIVATEKEY": "Privater Schlüssel des TLS-Zertifikats",
-    "EDITPERMISSIONS": "Berechtigungen verwalten",
-    "READANDEDIT": "Lesen und Bearbeiten",
-    "READANDEDITANDDELETE": "Lesen, Bearbeiten und Löschen",
-    "GENERAL_PERMISSIONS": "Allgemein",
-    "ENABLEMESSENGER": "Internen Messenger aktivieren",
-    "OUTBOUNDPROXY": "Outbound-Proxy",
+    "DTLSPRIVATEKEY": "Der private Schlüssel des TLS-Zertifikats",
+    "EDITPERMISSIONS": "Bearbeiten von Berechtigungen",
+    "READANDEDIT": "Lesen, Bearbeiten",
+    "READANDEDITANDDELETE": "Lesen, Bearbeiten, Löschen",
+    "GENERAL_PERMISSIONS": "Allgemeines",
+    "ENABLEMESSENGER": "Aktivieren Sie den internen Messenger",
+    "OUTBOUNDPROXY": "Oubound-Proxy",
     "PHONE": "Telefon",
     "MOBILE": "Handy, Mobiltelefon",
     "ALIAS": "Alias",
     "ENABLEJAWSINTEGRATION": "Jaws-Integration aktivieren",
     "PREFIXREQUIRED": "Präfix erforderlich",
-    "ENABLEVIDEORECORDING": "Videoaufzeichnung aktivieren",
+    "ENABLEVIDEORECORDING": "Aktiviere Videoaufnahme",
     "OLD_PASSWORD": "Altes Passwort",
     "ALL_CHATQUEUES": "Alle Chat-Warteschlangen",
     "ALL_CHATWEBSITES": "Alle Chat-Websites",
     "ALL_FAXACCOUNTS": "Alle Faxkonten",
-    "ALL_FAXQUEUES": "Alle Fax-Warteschlangen",
+    "ALL_FAXQUEUES": "Alle Faxwarteschlangen",
     "ALL_MAILACCOUNTS": "Alle E-Mail-Konten",
     "ALL_MAILQUEUES": "Alle E-Mail-Warteschlangen",
-    "ALL_OPENCHANNELACCOUNTS": "Alle offener Kanal-Konten",
-    "ALL_OPENCHANNELQUEUES": "Alle offener Kanal-Warteschlangen",
+    "ALL_OPENCHANNELACCOUNTS": "Alle offenen Channel-Konten",
+    "ALL_OPENCHANNELQUEUES": "Alle offenen Kanalwarteschlangen",
     "ALL_PROJECTS": "Alle Cally Square-Projekte",
     "ALL_QUEUECAMPAIGNS": "Alle Queue-Kampagnen",
     "ALL_SMSACCOUNTS": "Alle SMS-Konten",
     "SELECTED_CHATQUEUES": "Ausgewählte E-Mail-Warteschlangen",
     "SELECTED_CHATWEBSITES": "Ausgewählte Chat-Websites",
     "SELECTED_FAXACCOUNTS": "Ausgewählte Faxkonten",
-    "SELECTED_FAXQUEUES": "Ausgewählte Fax-Warteschlangen",
+    "SELECTED_FAXQUEUES": "Ausgewählte Faxwarteschlangen",
     "SELECTED_MAILACCOUNTS": "Ausgewählte E-Mail-Konten",
     "SELECTED_MAILQUEUES": "Ausgewählte Chat-Warteschlangen",
-    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offener Kanal-Konten",
-    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanal-Warteschlangen",
+    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offene Channel-Konten",
+    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanalwarteschlangen",
     "SELECTED_PROJECTS": "Ausgewählte Projekte von Cally Square",
     "SELECTED_QUEUECAMPAIGNS": "Ausgewählte Queue-Kampagnen",
     "SELECTED_SMSACCOUNTS": "Ausgewählte SMS-Konten",
     "SELECTED_SMSQUEUES": "Ausgewählte SMS-Warteschlangen",
-    "SELECTED_VOICEQUEUES": "Ausgewählte Anruf-Warteschlangen",
+    "SELECTED_VOICEQUEUES": "Ausgewählte Sprachwarteschlangen",
     "USERADD_CHATQUEUES": "Chat-Warteschlange zum Benutzer hinzufügen",
     "USERADD_CHATWEBSITES": "Chat-Website zum Benutzer hinzufügen",
     "USERADD_FAXACCOUNTS": "Faxkonto zum Benutzer hinzufügen",
-    "USERADD_FAXQUEUES": "Fax-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_FAXQUEUES": "Faxwarteschlange zum Benutzer hinzufügen",
     "USERADD_MAILACCOUNTS": "E-Mail-Konto zum Benutzer hinzufügen",
     "USERADD_MAILQUEUES": "E-Mail-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELACCOUNTS": "Offener Kanal-Konto zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELQUEUES": "Offener Kanal-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELACCOUNTS": "Open Channel-Konto zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELQUEUES": "Open Channel-Warteschlange zum Benutzer hinzufügen",
     "USERADD_PROJECTS": "Cally Square-Projekt zum Benutzer hinzufügen",
     "USERADD_QUEUECAMPAIGNS": "Queue-Kampagne zum Benutzer hinzufügen",
     "USERADD_SMSACCOUNTS": "SMS-Konto zum Benutzer hinzufügen",
     "USERADD_SMSQUEUES": "SMS-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_VOICEQUEUES": "Anruf-Warteschlange zum Benutzer hinzufügen",
-    "HOTDESK": "Wechselnder Arbeitsplatz",
+    "USERADD_VOICEQUEUES": "Sprachwarteschlange zum Benutzer hinzufügen",
+    "HOTDESK": "Heißer Schreibtisch",
     "ADD_USERPROFILE": "Benutzerprofil hinzufügen",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "CLONE_USERPROFILE": "Benutzerprofil klonen",
     "CLOSE": "Schließen",
     "CONFIRM": "Bestätigen",
     "PERMISSIONS_SELECTED_RESOURCES": "Ausgewählte Ressourcen",
     "PERMISSIONS_SELECT_REPORT_TYPE": "Wählen Sie den Berichtstyp",
     "PERMISSIONS_SELECT_SECTION": "Wählen Sie einen Abschnitt aus",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Kein Zugriff auf den ausgewählten Bereich",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Sie dürfen nicht auf den ausgewählten Bereich zugreifen",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unbefugte Handlung",
-    "PERMISSIONS_WARNING_CLOSE": "Es wurden Änderungen nicht gespeichert. Fortfahren?",
+    "PERMISSIONS_WARNING_CLOSE": "Du hast nicht gespeicherte Änderungen. Möchten Sie den Vorgang wirklich ohne Speichern beenden?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Alle {{sectionName}} Unterabschnitte und ihre Ressourcen werden aktiviert. Sind Sie sicher, dass Sie fortfahren möchten?",
-    "QUEUES_ASSOCIATION": "{{channel}} Warteschlangen-Zuweisung",
+    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
     "READ_PERMISSION": "Lesen",
     "REPORT_TYPE": "Berichtstyp",
     "SECTIONS": "Abschnitte",
     "SUMMARY": "Zusammenfassung",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
     "USERPROFILE": "Benutzerprofil",
     "USERPROFILES": "Benutzerprofil",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Keine Berechtigung zum Erstellen der Ressource",
-    "VIDEOSUPPORT": "Unterstützt Video",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Sie dürfen die Ressource nicht erstellen",
+    "VIDEOSUPPORT": "Video-Unterstützung",
     "APIKEY": "API-Schlüssel",
     "APIKEYMANAGER_USER": "API Key Manager",
-    "GENERATE": "Erneut generieren",
+    "GENERATE": "(Regenerieren",
     "MANAGE_API_KEY": "API-Schlüsselmanager",
-    "REMOVE": "Entfernen",
-    "ENABLEAUTOMATICSCREENRECORDING": "Automatische Bildschirmaufzeichnung aktivieren",
-    "ENABLESCREENRECORDINGBYAGENT": "Bildschirmaufzeichnung durch Agenten aktivieren",
-    "ENABLEVIDEOECORDING": "Videoaufzeichnung aktivieren",
+    "REMOVE": "Löschen",
+    "ENABLEAUTOMATICSCREENRECORDING": "Aktivieren Sie die automatische Bildschirmaufnahme",
+    "ENABLESCREENRECORDINGBYAGENT": "Aktivieren Sie die Bildschirmaufzeichnung nach Agent",
+    "ENABLEVIDEOECORDING": "Videoaufnahme aktivieren",
     "BLOCKED": "Gesperrt",
     "DISABLED": "Deaktiviert",
-    "REGENERATE": "Erneut generieren",
+    "REGENERATE": "Regenerieren",
     "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-Konten",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agenten zu WhatsApp-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent zu WhatsApp-Warteschlangen hinzufügen",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Benutzer zu WhatsApp-Warteschlangen hinzufügen",
     "SELECTED_QUEUES_WHATSAPP_INBOUND": "Ausgewählte WhatsApp-Warteschlangen",
     "SELECTED_WHATSAPPACCOUNTS": "Ausgewählte WhatsApp-Konten",
     "SELECTED_WHATSAPPQUEUES": "Ausgewählte WhatsApp-Warteschlangen",
     "USERADD_WHATSAPPACCOUNTS": "WhatsApp-Konto zum Benutzer hinzufügen",
-    "USERADD_WHATSAPPQUEUES": "Whataspp-Warteschlange dem Benutzer hinzufügen",
+    "USERADD_WHATSAPPQUEUES": "Fügen Sie dem Benutzer die Whataspp-Warteschlange hinzu",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPCAPACITY": "Kapazität Whatsapp",
+    "WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität",
     "MASK_SENSITIVE_DATA": "Sensitive Daten maskieren",
     "WSS_PORT": "WSS-Port",
     "ATTACHMENTS": "Anhänge",
     "CALLYSQUARE_RECORDINGS": "Cally Square-Aufnahmen",
-    "CONTACT_MANAGER_LISTS": "Kontaktmanager Listen",
+    "CONTACT_MANAGER_LISTS": "Kontaktmanagerlisten",
     "DOWNLOADS": "Downloads",
     "DOWNLOAD_PERMISSIONS": "Download-Berechtigungen",
     "JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
-    "SCREEN_RECORDINGS": "Bildschirmaufzeichnungen",
-    "VOICE_RECORDINGS": "Sprachaufzeichnungen"
+    "SCREEN_RECORDINGS": "Bildschirmaufnahmen",
+    "VOICE_RECORDINGS": "Sprachaufnahmen"
   }
 }
index aabec46..556f7a7 100644 (file)
     "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"
+    "CALLYSQUARE_RECORDINGS": "Cally Square Recordings"
   }
 }
index b68f8f4..111b886 100644 (file)
     "SCREEN_RECORDINGS": "Registrazioni Screen",
     "JSCRIPTY_SESSIONS": "Sessioni Jscripty",
     "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"
+    "CALLYSQUARE_RECORDINGS": "Registrazioni Cally Square"
   }
 }
index d62768d..6207bf0 100644 (file)
     "BOT": "Voicebot",
     "CALL": "Anruf",
     "NAME": "Name",
-    "TRUNKS": "Trunks",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "TRUNKS": "Amtsleitungen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "ERRORS": {
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "HOST_REQUIRED": "Host wird benötigt",
-      "DEFAULTUSER_REQUIRED": "Standardbenutzer ist erforderlich",
-      "CALLERID_REQUIRED": "Anrufer-ID ist erforderlich",
-      "KEY_REQUIRED": "Schlüssel ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "VALIDITYSTART_REQUIRED": "Startzeit ist erforderlich",
-      "VALIDITYEND_REQUIRED": "Endzeit ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "DEFAULTUSER_REQUIRED": "Der Standardbenutzer ist erforderlich",
+      "CALLERID_REQUIRED": "Die Anrufer-ID ist erforderlich",
+      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter nicht übereinstimmen",
+      "VALIDITYSTART_REQUIRED": "Die Startzeit ist erforderlich",
+      "VALIDITYEND_REQUIRED": "Das Ende der Zeit ist erforderlich",
       "MONTHDAY_REQUIRED": "Tag des Monats ist erforderlich",
-      "HOUR_REQUIRED": "Stunde ist erforderlich",
-      "CONTENT_REQUIRED": "Inhalt ist erforderlich",
-      "URL_REQUIRED": "URL ist erforderlich",
-      "URL_MUST_VALID_URL": "URL ungültiges Format",
-      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
-      "ARGUMENTS_REQUIRED": "Bedingungen sind erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Name ungültiges Format",
-      "POLLING_INTERVAL_REQUIRED": "Abfrageintervall ist erforderlich",
-      "TITLE_REQUIRED": "Titel ist erforderlich",
-      "EMAILADDRESS_REQUIRED": "E-Mail Adresse ist erforderlich",
-      "EVENTVARIABLES_REQUIRED": "Variablen sind erforderlich",
-      "TYPE_REQUIRED": "Typ ist erforderlich",
-      "VALUE_REQUIRED": "Wert ist erforderlich",
-      "ACCOUNT_REQUIRED": "Konto ist erforderlich",
-      "FIELD_REQUIRED": "Feld ist erforderlich",
-      "INTEGRATION_REQUIRED": "Integration ist erforderlich",
-      "LIST_REQUIRED": "Liste ist erforderlich",
-      "TEMPLATE_REQUIRED": "Vorlage ist erforderlich",
-      "AUTOCREATECONTACT_REQUIRED": "Kontakterstellung erforderlich",
-      "OUTBOUNDROUTE_REQUIRED": "Ausgehende Route erforderlich",
-      "QUEUE_REQUIRED": "Warteschlange erforderlich",
-      "TIME_RANGE_TO_REQUIRED": "Zeitintervall erforderlich",
-      "WEEK_DAYS_TO_REQUIRED": "Wochentage erforderlich",
-      "MONTH_DAYS_TO_REQUIRED": "Tage des Monats erforderlich",
-      "MONTH_TO_REQUIRED": "Monat erforderlich",
+      "HOUR_REQUIRED": "Die Stunde ist erforderlich",
+      "CONTENT_REQUIRED": "Der Inhalt ist erforderlich",
+      "URL_REQUIRED": "Die URL ist erforderlich",
+      "URL_MUST_VALID_URL": "Die URL muss gültig sein",
+      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
+      "ARGUMENTS_REQUIRED": "Die Argumente sind erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
+      "POLLING_INTERVAL_REQUIRED": "Das Abfrageintervall ist erforderlich",
+      "TITLE_REQUIRED": "Der Titel ist erforderlich",
+      "EMAILADDRESS_REQUIRED": "Die E-Mail Adresse ist erforderlich",
+      "EVENTVARIABLES_REQUIRED": "Pflichtfeld",
+      "TYPE_REQUIRED": "Pflichtfeld",
+      "VALUE_REQUIRED": "Pflichtfeld",
+      "ACCOUNT_REQUIRED": "Pflichtfeld",
+      "FIELD_REQUIRED": "Pflichtfeld",
+      "INTEGRATION_REQUIRED": "Pflichtfeld",
+      "LIST_REQUIRED": "Pflichtfeld",
+      "TEMPLATE_REQUIRED": "Pflichtfeld",
+      "AUTOCREATECONTACT_REQUIRED": "Pflichtfeld",
+      "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
+      "QUEUE_REQUIRED": "Pflichtfeld",
+      "TIME_RANGE_TO_REQUIRED": "Pflichtfeld",
+      "WEEK_DAYS_TO_REQUIRED": "Pflichtfeld",
+      "MONTH_DAYS_TO_REQUIRED": "Pflichtfeld",
+      "MONTH_TO_REQUIRED": "Pflichtfeld",
       "TIME_RANGE_FROM_INVALID": "Falsches Format",
       "TIME_RANGE_TO_INVALID": "Falsches Format",
-      "ACTION_REQUIRED": "Aktion erforderlich",
-      "CONFIGURATION_REQUIRED": "Konfiguration erforderlich",
-      "PROJECT_REQUIRED": "Projekt erforderlich",
-      "LOCATION_REQUIRED": "Standort erforderlich",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FONTSIZE_REQUIRED": "Schriftgröße erforderlich",
-      "PATH_REQUIRED": "Pfad erforderlich",
-      "FORMAT_REQUIRED": "Format erforderlich",
-      "REPORT_REQUIRED": "Report erforderlich",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "REFRESH_REQUIRED": "Aktualisieren erforderlich",
-      "TITLE_MAX_LENGTH": "Titel darf eine maximale Länge haben von {{max}} ",
-      "NAME_MAX_LENGTH": "Name darf eine maximale Länge haben von {{max}} ",
-      "OUTPUT_REQUIRED": "Ausgabe erforderlich",
-      "REPORTFOLDER_REQUIRED": "Ordner erforderlich",
-      "REPORTSUBFOLDER_REQUIRED": "Unterordner erforderlich",
-      "REPORTTYPE_REQUIRED": "Reporttyp erforderlich",
-      "AGENT_REQUIRED": "Agent erforderlich",
-      "INFO_REQUIRED": "Information erforderlich",
-      "SCRIPT_REQUIRED": "Skript erforderlich",
-      "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"
+      "ACTION_REQUIRED": "Pflichtfeld",
+      "CONFIGURATION_REQUIRED": "Pflichtfeld",
+      "PROJECT_REQUIRED": "Pflichtfeld",
+      "LOCATION_REQUIRED": "Pflichtfeld",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FONTSIZE_REQUIRED": "Pflichtfeld",
+      "PATH_REQUIRED": "Pflichtfeld",
+      "FORMAT_REQUIRED": "Pflichtfeld",
+      "REPORT_REQUIRED": "Pflichtfeld",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "REFRESH_REQUIRED": "Pflichtfeld",
+      "TITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "NAME_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "OUTPUT_REQUIRED": "Pflichtfeld",
+      "REPORTFOLDER_REQUIRED": "Pflichtfeld",
+      "REPORTSUBFOLDER_REQUIRED": "Pflichtfeld",
+      "REPORTTYPE_REQUIRED": "Pflichtfeld",
+      "AGENT_REQUIRED": "Pflichtfeld",
+      "INFO_REQUIRED": "Pflichtfeld",
+      "SCRIPT_REQUIRED": "Pflichtfeld",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEOUT_REQUIRED": "Pflichtfeld",
+      "AUTOCREATE_FIELD_REQUIRED": "Pflichtfeld"
     },
     "HOST": "Host",
-    "SECRET": "Secret",
-    "DEFAULTUSER": "Standardnutzer",
+    "SECRET": "Geheimnis",
+    "DEFAULTUSER": "Default User",
     "DESCRIPTION": "Beschreibung",
-    "ADD_TRUNK": "Trunk hinzufügen",
+    "ADD_TRUNK": "Amtsleitung hinzufügen",
     "HELP": {
-      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Systemadministrator.",
+      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Anbieter.",
       "HOST": "Die Domäne oder den Hostnamen für den Anbieter.",
       "DEFAULTUSER": "Authentifizierung Benutzernamen, wenden Sie sich an den Anbieter.",
       "CALLERID": "Die Anrufer-ID im Format \"name\" <Nummer>.",
-      "REGISTRY": "Die SIP-Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
-      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client).",
-      "FROMUSER": "SIP-Nutzereinstellungen. Nur gültig für den Typ=peer.",
+      "REGISTRY": "Die amtsleitung Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
+      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client). Einige Ziele können die obligatorische Identität Name anstatt nur die IP-Adresse.",
+      "FROMUSER": "Rovider wie ihr sie kennt. Dies ist der Benutzer, um anstelle der Anrufer-ID beim Tätigen von Anrufen zu anderen Peer (SIP-Proxy). Nur gültig für den Typ=peer.",
       "OUTBOUNDPROXY": "IP-Adresse oder DNS-SRV-Ressourceneintrag name (ausgenommen die _sip._udp-Präfix): SRV Name, den Hostnamen oder die IP-Adresse des ausgehenden SIP-Proxy. Senden Sie ausgehende Signale zu diesem Proxy und nicht direkt an die Geräte. Nur gültig für den Typ=peer.",
-      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten.",
-      "CONTEXT": "Die nutzbaren Kontext für den Trunk.",
-      "TYPE": "Definiert die SIP-Rolle innerhalb der Anwendung. User: Authentifizierung für eingehende Verbindungen; Peer: für ausgehende Verbindungen - Freund: Beide Eigenschaften werden erfüllt",
-      "DTMFMODE": "Sendeart von DTMF-Tönen (Dual-Tone Multi-Frequency): RFC2833: Standardeinstellung, DMTF wird über RTP gesendet (außerhalb des Audiostreams) - INBAND DTMF wird innerhalb des Audiostreams gesendet, über die Lautsprecher hörbar. Erfordert eine höhere CPU-Last.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn \"Nein\", ignoriert der Asterisk alle anderen Einstellungen und die nat=No.",
+      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten wir auf der anderen Seite.",
+      "CONTEXT": "Die nutzbaren Rahmen für den Trunk.",
+      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
+      "DTMFMODE": "Wie DTMF (Dual-Tone Multi-Frequency): RFC2833: Die Standardeinstellung, die DTMF gesendet mit RTP, aber außerhalb der Audio Stream. INBAND DTMF gesendet wird: Die in der Audio Stream des aktuellen Gesprächs, wird über die Lautsprecher hörbar. Erfordert eine hohe CPU-Last. INFO: Diese Methode ist zwar sehr zuverlässig, es ist nicht für alle TK-Anlagen und viele SIP-Trunk.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
       "QUALIFY": "Legt fest, wann die SIP erreichbar ist.",
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz.",
-      "INSECURE": "Erlaubt unsichere Einstellungen für peer",
-      "CALL_LIMIT": "Maximale Anzahl aller gleichzeitigen ein- und ausgehenden Anrufe",
-      "DIRECTMEDIA": "Der Asterisk versucht, den RTP-Stream im Standard direkt zwischen dem Anrufer und dem Angerufenen aufzubauen. Manche Geräte (z.B. Firewalls) unterstützen diese Funktion nicht. Daher kann hier eine Umstellung erfolgen.",
-      "CALLCOUNTER": "Aktivieren der Anrufzähler für die Geräte",
-      "ADD_PHONE_TO_URI": "Fügt im SIP den user=phone zur URL hinzu",
-      "TRUST_REMOTE_PARTY_ID": "Soll der URL der anderen Partei vertraut werden?",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Soll die ID der anderen Partei gesendet werden?",
-      "ENCRYPTION": "Legt fest, ob die Verbindung über SRTP verschlüsselt vorliegt. Sollte das peer kein SRTP unterstützen, werden Anrufe mit dem HANGUPCAUSE=58 beendet.",
+      "INSECURE": "Legt fest, wie Verbindungen mit Peer, dass unsichere Einstellungen.",
+      "CALL_LIMIT": "Die Anzahl der eingehenden und abgehenden Anrufe, die zu einer Zeit.",
+      "DIRECTMEDIA": "Sternchen standardmäßig versucht, die RTP-Stream direkt aus den Anrufer an den Angerufenen. Einige Geräte werden nicht unterstützt wird (vor allem, wenn einer von Ihnen hinter einem NAT-Gerät befindet). Die Standardeinstellung ist Ja. Wenn Sie alle Clients hinter einem NAT-Gerät befindet, oder aus einem anderen Grund nicht möchten, dass Sternchen in der Audiospur, können Sie diese ausschalten.",
+      "CALLCOUNTER": "Aktivieren Sie die Zähler auf Geräte.",
+      "ADD_PHONE_TO_URI": "Legen Sie fest, ob die Provider ';user=Telefon\" an den URL.",
+      "TRUST_REMOTE_PARTY_ID": "Wenn Remote-Party-ID definieren sollte.",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Status",
+      "ENCRYPTION": "Festlegen, ob die Remote-Party-ID gesendet werden soll (standardmäßig auf Nein).",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Trunks conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
-      "EMAILADDRESS": "Mehrere Adressen mit Komma getrennt eingeben: (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
+      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Amtsleitungen conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
+      "EMAILADDRESS": "Sie können mehrere Adressen mit Kommata (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "EVENTVARIABLES": "Fügt die Event-Variablen der URL hinzu",
+      "EVENTVARIABLES": "Wenn aktiviert, Es fügt alle Event Variablen an die Url",
       "T38PT_UDPTL": "Es: Ja, Redundanz, maxdatagram = 400",
       "EMAILBCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
       "EMAILCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
-      "BODY": "(RAW-JSON-Format) Wenn nicht ausgefüllt, wird der Standardwert verwendet",
+      "BODY": "Wenn nicht ausgefüllt, wird der Standardwert gesendet",
       "INFO": "Titel einfügen",
       "SCRIPT": "Skript einfügen",
       "SCRIPT_INFO": "Fügen Sie eine Beschreibung für das Skript ein",
       "SCRIPT_TYPE": "Geben Sie eine Typologie für das Skript ein (zB curl, bash ...)",
-      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert verwendet",
-      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen - Standardwert ist 5."
+      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert gesendet",
+      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen und der Standardwert ist 5."
     },
     "EDIT_TRUNK": "Trunk bearbeiten",
-    "DELETE_TRUNK": "Trunk löschen",
+    "DELETE_TRUNK": "Löschen Sie Trunk",
     "CREATED_AT": "Erstellt am",
     "SETTINGS": "Einstellungen",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Erweiterte",
     "OTHER": "Andere",
     "ACTIVE": "Aktiv",
     "CONTEXT": "Kontext",
-    "CALLERID": "Anrufer-ID",
+    "CALLERID": "Die Anrufer-ID",
     "TYPE": "Typ",
-    "DTMFMODE": "DTMF-Modus",
+    "DTMFMODE": "Mfv-Modus",
     "NAT": "NAT",
     "QUALIFY": "Qualifizieren",
     "ALLOWCODECS": "Codecs erlaubt",
     "INSECURE": "Unsicher",
     "REGISTRY": "Registrierung",
-    "DIRECTMEDIA": "Direct Media",
+    "DIRECTMEDIA": "Direkte Medien",
     "CALLCOUNTER": "Anrufzähler",
-    "FROMDOMAIN": "From Domain",
-    "FROMUSER": "From Nutzer",
-    "OUTBOUNDPROXY": "Outbound Proxy",
-    "ADD_PHONE_TO_URI": "Telefon zur URL hinzufügen",
-    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Remote Party im Header senden",
+    "FROMDOMAIN": "Aus der Domäne",
+    "FROMUSER": "Vom Benutzer",
+    "OUTBOUNDPROXY": "Ausgehender Proxy",
+    "ADD_PHONE_TO_URI": "Telefon hinzufügen, URL",
+    "TRUST_REMOTE_PARTY_ID": "Vertrauen Gegenstelle ID",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Senden einer Partner-ID Header",
     "ENCRYPTION": "Verschlüsselung",
-    "PORT": "Port",
-    "TRANSPORT": "Transport",
+    "PORT": "Hafen",
+    "TRANSPORT": "Verkehr",
     "SAVE": "Speichern",
     "VARIABLES": "Variablen",
     "ADD_VARIABLE": "Variable hinzufügen",
     "EDIT_VARIABLE": "Variable bearbeiten",
     "DELETE_VARIABLE": "Variable löschen",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "TAGS": "Tags",
-    "ADD_TAG": "Tag hinzufügen",
-    "EDIT_TAG": "Tag bearbeiten",
-    "DELETE_TAG": "Tag löschen",
+    "ADD_TAG": "Variable hinzufügen",
+    "EDIT_TAG": "Variable bearbeiten",
+    "DELETE_TAG": "Variable löschen",
     "PAUSES": "Pausen",
     "ADD_PAUSE": "Pause hinzufügen",
     "EDIT_PAUSE": "Pause bearbeiten",
     "DELETE_PAUSE": "Pause löschen",
-    "ADD_CANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_CANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_CANNEDANSWER": "Testvorlage löschen",
+    "ADD_CANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_CANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_CANNEDANSWER": "Vordefinierte Antwort löschen",
     "KEY": "Schlüssel",
     "VALUE": "Wert",
-    "SOUNDS": "Audiodateien",
-    "EDIT_SOUND": "Audiodatei bearbeiten",
-    "DELETE_SOUND": "Audiodatei löschen",
-    "FINISH": "Abschließen",
+    "SOUNDS": "Sounds",
+    "EDIT_SOUND": "Ton bearbeiten",
+    "DELETE_SOUND": "Sound löschen",
+    "FINISH": "Fertig stellen",
     "DROP_TO_UPLOAD": "Drop hochladen",
     "TRIGGERS": "Trigger",
-    "EDIT_TRIGGER": "Trigger bearbeiten",
-    "DELETE_TRIGGER": "Trigger löschen",
+    "EDIT_TRIGGER": "Auslöser bearbeiten",
+    "DELETE_TRIGGER": "Auslöser löschen",
     "ADD_TRIGGER": "Trigger hinzufügen",
     "DELETE": "Löschen",
-    "AUTOMATIONS": "Automation",
-    "EDIT_AUTOMATION": "Automation bearbeiten",
+    "AUTOMATIONS": "Automatisierungen",
+    "EDIT_AUTOMATION": "Bearbeiten einer Automation",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
     "INTERVALS": "Intervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_INTERVAL": "Intervall löschen",
+    "DELETE_INTERVAL": "Intervall für Löschen.",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "TOOLS": "Werkzeuge",
-    "ID": "ID",
+    "ID": "Id",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Audiodatei herunterladen",
-    "UPLOAD_SOUND": "Audiodatei hochladen",
+    "DOWNLOAD_SOUND": "Download Sound",
+    "UPLOAD_SOUND": "Werkzeuge",
     "CHANNEL": "Kanal",
     "NEW_TRIGGER": "Neue Trigger",
     "GENERAL": "Allgemein",
     "STATUS": "Status",
     "CONDITIONS&ACTIONS": "Bedingungen und Aktionen",
-    "ALLCONDITIONS": "Alle Bedingungen werden erfüllt",
-    "ANYCONDITIONS": "Einige Bedingungen werden erfüllt",
-    "ACTIONS": "Aktionen",
+    "ALLCONDITIONS": "Alle diese Bedingungen erfüllen:",
+    "ANYCONDITIONS": "Treffen diese Voraussetzungen:",
+    "ACTIONS": "Aktionen:",
     "NEW_AUTOMATION": "Neue Automation",
     "TIMEOUT": "Timeout",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Anrufe limitieren",
-    "OTHERFIELDS": "Weitere Felder",
+    "CALL_LIMIT": "Anrufe beschränken",
+    "OTHERFIELDS": "Andere Felder",
     "NEW_VARIABLE": "Neue Variable",
     "NEW_TAG": "Neuer Tag",
     "NEW_PAUSE": "Neue Pause",
-    "NEW_CANNEDANSWER": "Neue Textvorlage",
+    "NEW_CANNEDANSWER": "Neue vordefinierte Antwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "NEW_TRUNK": "Neuer Trunk",
-    "FROM": "von",
-    "TO": "an",
-    "WEEKDAY": "Wochentag",
-    "MONTHDAY": "Monatstag",
+    "NEW_TRUNK": "Neue Leitung",
+    "FROM": "Von",
+    "TO": "Zu",
+    "WEEKDAY": "Woche Tag",
+    "MONTHDAY": "Monat Tag",
     "MONTH": "Monat",
     "ALWAYS": "Immer",
     "MON": "Montag",
     "PASSWORD": "Passwort",
     "CUSTOMDASHBOARDS": "Benutzerdefinierte Dashboards",
     "NEW_CUSTOMDASHBOARD": "Neues benutzerdefiniertes Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard hinzufügen",
-    "EDIT_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard bearbeiten",
-    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen",
-    "SCHEDULER": "Berichtsplanung",
-    "NEW_SCHEDULE": "Neue Planung",
-    "ADD_SCHEDULE": "Planung hinzufügen",
-    "EDIT_SCHEDULE": "Planung bearbeiten",
-    "DELETE_SCHEDULE": "Planung löschen",
+    "ADD_CUSTOMDASHBOARD": "Hinzufügen von benutzerdefinierten Dashboard",
+    "EDIT_CUSTOMDASHBOARD": "Benutzerdefinierte Dashboards bearbeiten",
+    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen.",
+    "SCHEDULER": "Scheduler",
+    "NEW_SCHEDULE": "Neuer Zeitplan",
+    "ADD_SCHEDULE": "Zeitplan hinzufügen",
+    "EDIT_SCHEDULE": "Zeitplan bearbeiten",
+    "DELETE_SCHEDULE": "Zeitplan löschen",
     "SENDMAIL": "E-Mail senden",
     "CONFIGURATION": "Konfiguration",
     "MAIL": "E-Mail",
     "REPORTTYPE": "Berichtstyp",
     "REPORT": "Bericht",
-    "OUTPUT": "Ausgabe",
+    "OUTPUT": "Ausgang",
     "EXECUTEON": "Ausführung",
-    "REPORTRANGE": "Bereich",
+    "REPORTRANGE": "Berichtsbereich",
     "VALIDITYSTART": "Startzeit",
     "VALIDITYEND": "Endzeit",
     "EXECUTEEVERY": "Alle ausführen",
     "MONTHLY": "Monatlich",
     "PREVIOUS_DAY": "Vorheriger Tag",
     "LAST_SEVEN_DAYS": "Letzte sieben Tage",
-    "LAST_THIRTY_DAYS": "Letzte 30 Tage",
+    "LAST_THIRTY_DAYS": "33 verbotenen letzte Tage",
     "LAST_MONTH": "Letzter Monat",
-    "WEEKDAYS": "Wochentage",
+    "WEEKDAYS": "Woche Tage",
     "HOUR": "Stunde",
     "DEFAULT": "Standard",
     "CSV": "CSV",
     "15MIN": "15 Minuten",
     "30MIN": "30 Minuten",
     "1H": "1 Stunde",
-    "VOICE": "Sprachanrufe",
+    "VOICE": "Voice",
     "CHAT": "Chat",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "ADD_ALLCONDITION": "Bedingung hinzufügen",
     "EDIT_ACTION": "Aktion bearbeiten",
     "DELETE_ACTION": "Aktion löschen",
-    "NEW_ACTION": "Neue Aktion",
+    "NEW_ACTION": "Neue Maßnahme",
     "ADD_ACTION": "Aktion hinzufügen",
     "QUEUE": "Warteschlange",
     "CALL_STATUS": "Anrufstatus",
-    "OUTBOUNDROUTE": "Ausgehende Routen",
-    "EQUALS": "ist gleich",
-    "NOT_EQUALS": "ist nicht gleich",
-    "CONTACT_MANAGER": "Kontaktmanager",
+    "OUTBOUNDROUTE": "Abgehende Routen",
+    "EQUALS": "Ist gleich",
+    "NOT_EQUALS": "Nicht gleich",
+    "CONTACT_MANAGER": "Contacts Manager",
     "INTEGRATIONS": "Integrationen",
     "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL-Weiterleitung",
-    "WEB_POPUP": "Web-Popup",
+    "URL_FORWARD": "URL Weiterleitung",
+    "WEB_POPUP": "Web Popup",
     "LIST": "Liste",
     "INTEGRATION": "Integration",
     "TEMPLATE": "Vorlage",
     "OPERATOR": "Betreiber",
     "NO_INTERVALS_AVAILABLE": "Keine Intervalle zur Verfügung",
     "YES": "Ja",
-    "NO": "Nein",
+    "NO": "Keine",
     "SUBJECT": "Betreff",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "BROWSER": "Browser",
     "INTERVAL": "Intervall",
-    "INFO": "Information",
+    "INFO": "Info",
     "TIME_RANGE": "Zeitbereich",
-    "WEEK_DAYS": "Wochentage",
-    "MONTH_DAYS": "Monatstage",
+    "WEEK_DAYS": "Woche Tage",
+    "MONTH_DAYS": "Monat Tage",
     "MONTHS": "Monate",
-    "DROP_TO_UPLOAD_MESSAGE": "Dateien hier hinein ziehen zum Hochladen. Unterstütze Formate: .mp3, .wav, .gsm; Max. Dateigröße: 15 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Sie können auch Audiodateien hier ablegen\" hochzuladen. Nur MP3-, WAV-, GSM-Max. 15 MB",
     "POLLING_INTERVAL": "Abfrageintervall (Sekunden)",
-    "DASHBOARD": "Dashboard",
-    "NEW_DASHBOARDITEM": "Neues Dashboard-Widget",
+    "DASHBOARD": "Armaturenbrett",
+    "NEW_DASHBOARDITEM": "Neue Dashboard Widget",
     "COUNTER": "Zähler",
     "IFRAME": "IFrame",
     "CLOCK": "Uhr",
-    "ADD_DASHBOARDITEM": "Dashboard-Widget hinzufügen",
-    "EDIT_WIDGET": "Widget bearbeiten",
-    "DELETE_WIDGET": "Widget löschen",
-    "FLIP_WIDGET": "Widget drehen",
+    "ADD_DASHBOARDITEM": "Dashboard Widget hinzufügen",
+    "EDIT_WIDGET": "Bearbeiten Widget",
+    "DELETE_WIDGET": "Löschen Widget",
+    "FLIP_WIDGET": "Flip Widget",
     "TITLE": "Titel",
     "UPDATE": "Aktualisieren",
     "LAYOUT": "Layout",
     "FOREGROUND_COLOR": "Vordergrundfarbe",
     "FOREGROUND_TITLE_COLOR": "Vordergrund Titel Farbe",
     "THEME": "Thema",
-    "LIGHT": "Hell",
+    "LIGHT": "Licht",
     "DARK": "Dunkel",
     "TIMEZONE": "Zeitzone",
-    "DIGITAL_FORMAT": "Digitales Datumsformat",
+    "DIGITAL_FORMAT": "Digitale Datum Format",
     "TOOLS_QUERY": "Abfrage",
-    "SELECT": "Auswählen",
+    "SELECT": "Wählen Sie",
     "WHERE": "Wo",
     "BACK": "Zurück",
     "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "Zum Echtzeitmonitoring SIP-Trunks gehen",
-    "GOTO_TRUNK": "Zum SIP-Trunk gehen",
-    "CRON": "CrOn",
+    "GOTOREALTIME_TRUNK": "In Echtzeit, Trunk gehen",
+    "GOTO_TRUNK": "Um die Leitungsbündel gehen",
+    "CRON": "Cron",
     "MINUTES": "Minuten",
     "HOURLY": "Stündlich",
     "YEARLY": "Jährlich",
     "EVERY": "Jede",
     "MINUTE": "Minute",
-    "ON_SECOND": "Zur Sekunde",
-    "HOUR_ON_MINUTE": "Stunde zur Minute",
-    "AND_SECOND": "und Sekunde",
-    "DAY_AT": "Am Tag",
+    "ON_SECOND": "Im 2.",
+    "HOUR_ON_MINUTE": "Stunde Minute",
+    "AND_SECOND": "Und 2.",
+    "DAY_AT": "Tag an",
     "START_TIME": "Startzeit",
-    "ON_THE": "Am",
-    "OF_EVERY": "An jedem",
+    "ON_THE": "Auf der",
+    "OF_EVERY": "Jedes",
     "MONTH_AT": "Monat",
-    "AT": "Um",
+    "AT": "An",
     "LAST": "Letzte",
     "LASTUNIT": "Einheit",
     "MAILACCOUNT": "E-Mail Konto",
-    "OF": "von",
+    "OF": "Von",
     "PAST_THE_HOUR": "Nach der vollen Stunde",
     "DAY": "Tag",
     "WEEK": "Woche",
     "YEAR": "Jahr",
-    "ON": "Am",
+    "ON": "Auf",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OUTBOUND_ROUTE": "Ausgehende Routen",
-    "EVENTVARIABLES": "Event-Variablen",
+    "OUTBOUND_ROUTE": "Abgehende Routen",
+    "EVENTVARIABLES": "Bei Variablen",
     "FAX": "Fax",
     "INTERACTION": "Interaktion",
     "MESSAGE": "Nachricht",
     "T38PT_UDPTL": "T38 pt Udptl",
-    "AUTOCREATECONTACT": "Automatische Kontakterstellung",
+    "AUTOCREATECONTACT": "Erstellen Sie automatisch",
     "COLOR": "Farbe",
-    "LOCATION": "Standort",
-    "NEW_TAB": "Neuer Tab",
+    "LOCATION": "Lage",
+    "NEW_TAB": "Neue Registerkarte",
     "NEW_WINDOW": "Neues Fenster",
-    "WINDOWWIDTH": "Fensterbreite (px)",
+    "WINDOWWIDTH": "Fenster Breite (px)",
     "WINDOWHEIGHT": "Fensterhöhe (px)",
     "EDIT_DASHBOARDITEM": "Dashboard-Widget bearbeiten",
     "FONTSIZE": "Schriftgröße",
     "FOREGROUND": "Vordergrund",
     "NONE": "Keiner",
     "TOTAL": "Gesamt",
-    "ABANDONED": "Abgebrochen",
+    "ABANDONED": "Verlassen",
     "WAITING": "Warten",
-    "TALKING": "im Gespräch",
-    "ANSWERED": "Beantwortet",
-    "UNMANAGED": "Nicht bearbeitet",
+    "TALKING": "Reden",
+    "ANSWERED": "Antwortete",
+    "UNMANAGED": "Nicht verwaltet",
     "CUSTOMTYPE": "Benutzerdefiniert [Pfad]",
     "WEBREPORT": "Webbericht",
     "PIECHART": "Kuchendiagramm",
     "MULTIBARCHART": "Multibar-Diagramm",
     "MOVE_WIDGET": "Widget verschieben",
-    "USERADD_CUSTOMDASHBOARD": "Berechtigungen hinzufügen",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Vorschau Dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "USERADD_CUSTOMDASHBOARD": "Hinzufügen von Benutzerberechtigungen",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
     "METRIC": "Metrisch",
-    "FILTERVOICEQUEUES": "Anruf-Warteschlangen filtern",
+    "FILTERVOICEQUEUES": "Voice-Warteschlangen filtern",
     "SERIE1": "Serie 1",
     "SERIE2": "Serie 2",
     "SERIE3": "Serie 3",
     "ALL_USERS": "Alle Nutzer",
     "SELECTED_USERS": "Ausgewählte Benutzer",
     "ADD_WIDGET": "Widget hinzufügen",
-    "NEXTCONTACT": "Nächster Kontakt",
+    "NEXTCONTACT": "Nächster",
     "SENDIFEMPTY": "Senden, wenn leer",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "UPLOADING": "Hochladen",
-    "EMAILBCCADDRESS": "BCC",
-    "EMAILCCADDRESS": "CC",
-    "RUN_SCHEDULE": "Zeitplanung ausführen",
-    "ADD_DISPOSITION": "Qualifizierung hinzufügen",
-    "DELETE_DISPOSITION": "Qualifizierung löschen",
-    "DISPOSITIONS": "Qualifizierungen",
-    "EDIT_DISPOSITION": "Qualifizierung bearbeiten",
-    "NEW_DISPOSITION": "Neue Qualifizierung",
-    "CLONE_TRUNK": "Trunk klonen",
-    "BODY": "Textinhalt",
-    "CANNEDANSWERS": "Textvorlagen",
+    "EMAILBCCADDRESS": "Bcc",
+    "EMAILCCADDRESS": "Cc",
+    "RUN_SCHEDULE": "Zeitplan ausführen",
+    "ADD_DISPOSITION": "Disposition hinzufügen",
+    "DELETE_DISPOSITION": "Disposition löschen",
+    "DISPOSITIONS": "Dispositionen",
+    "EDIT_DISPOSITION": "Disposition bearbeiten",
+    "NEW_DISPOSITION": "Neue Disposition",
+    "CLONE_TRUNK": "Klon-Trunk",
+    "BODY": "Karosserie",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "REPORTFOLDER": "Berichtsordner",
-    "REPORTSUBFOLDER": "Unterordner",
-    "PREVIOUSCONTACT": "Vorherigen Kontakt",
+    "REPORTSUBFOLDER": "Unterordner melden",
+    "PREVIOUSCONTACT": "Bisherige",
     "VIDEOSUPPORT": "Video-Unterstützung",
     "AGENT": "Agent",
     "HEADERS": "Überschriften",
     "SCRIPT": "Skript",
-    "SCRIPT_INFO": "Information",
+    "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Art",
     "MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
     "WHATSAPP": "WhatsApp Connector",
     "AUTOCREATE_FIELD": "Feld automatisch erstellen",
-    "GLOBALS": "Globale Werte",
+    "GLOBALS": "Globals",
     "SEARCH_FIELDS": "Suchfelder",
     "STANDARD": "Standard",
     "MOTION_BAR": "Motion Bar",
     "ALL": "Alle",
-    "ALL_DISPOSITIONS": "Alle Qualifizierungen",
-    "FIRST_LEVEL_DISPOSITION": "Qualifizierung der ersten Ebene",
-    "LEVEL": "Ebene",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "SELECT_LEVEL": "Ebene auswählen",
-    "TITLEFONTSIZE": "Schriftgröße Titel"
+    "ALL_DISPOSITIONS": "Alle Dispositionen",
+    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
+    "LEVEL": "Niveau",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "SELECT_LEVEL": "Wählen Sie eine Ebene",
+    "TITLEFONTSIZE": "Schrifttitelgröße"
   }
 }
index 6308cde..bf0d36b 100644 (file)
@@ -20,7 +20,6 @@
     "LINK": "Link [https://]",
     "BACKGROUND": "Background",
     "FOREGROUND": "Foreground",
-    "IGNOREDIALERCONTACTID": "Ignore dialer contact Id",
     "NONE": "None",
     "TOTAL": "Total",
     "ABANDONED": "Abandoned",
@@ -75,7 +74,6 @@
       "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",
     "QUEUE": "Queue",
     "CALL_STATUS": "Call Status",
     "OUTBOUNDROUTE": "Outbound Route",
-    "MAIL_SUBSTATUS": "Email Substatus",
     "EQUALS": "Equals",
     "NOT_EQUALS": "Not Equals",
     "CONTACT_MANAGER": "Contacts Manager",
index 5f91d6d..c6b75fe 100644 (file)
@@ -19,7 +19,6 @@
     "LINK": "Link [https://]",
     "BACKGROUND": "Background",
     "FOREGROUND": "Foreground",
-    "IGNOREDIALERCONTACTID": "Ignora il contact Id del dialer",
     "NONE": "Nessuno",
     "TOTAL": "Totale",
     "ABANDONED": "Abbandonate",
@@ -99,7 +98,6 @@
       "TYPE_REQUIRED": "Campo obbligatorio",
       "VALUE_REQUIRED": "Campo obbligatorio",
       "ACCOUNT_REQUIRED": "Campo obbligatorio",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Campo obbligatorio",
       "FIELD_REQUIRED": "Campo obbligatorio",
       "TIME_RANGE_TO_REQUIRED": "Campo obbligatorio",
       "WEEK_DAYS_TO_REQUIRED": "Campo obbligatorio",
     "QUEUE": "Coda",
     "CALL_STATUS": "Stato chiamata",
     "OUTBOUNDROUTE": "Rotta Outbound",
-    "MAIL_SUBSTATUS": "Sotto stato Email",
     "EQUALS": "Uguale a",
     "NOT_EQUALS": "Diverso da",
     "CONTACT_MANAGER": "Manager Contatti",
index 254759d..91d5165 100644 (file)
     "SERVICELEVEL": "مستوى الخدمة",
     "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني",
     "THIRD_LEVEL_DISPOSITION": "الترتيب الثالث",
-    "TEAMADD_VOICEPREFIX": "أضف الفريق إلى البادئة",
     "ALIAS": "الاسم المستعار"
   }
 }
index 3f3b98d..5fe900e 100644 (file)
     "SERVICELEVEL": "Úroveň služby",
     "SECOND_LEVEL_DISPOSITION": "Dispozice druhé úrovně",
     "THIRD_LEVEL_DISPOSITION": "Dispozice třetí úrovně",
-    "TEAMADD_VOICEPREFIX": "Přidat tým k předponě",
     "ALIAS": "Alias"
   }
 }
index ea7f1fe..67570a2 100644 (file)
     "SERVICELEVEL": "Serviceniveau",
     "SECOND_LEVEL_DISPOSITION": "Andet niveau disposition",
     "THIRD_LEVEL_DISPOSITION": "Tredje niveau disposition",
-    "TEAMADD_VOICEPREFIX": "Føj team til præfiks",
     "ALIAS": "Alias"
   }
 }
index bd7bae8..c698d09 100644 (file)
@@ -1,68 +1,68 @@
 {
   "VOICE": {
-    "GOTO_VOICEQUEUE": "Zur Anruf-Warteschlange gehen",
-    "GOTOREALTIME_VOICEQUEUE": "Zur Echtzeitansicht Anruf-Warteschlange gehen",
+    "GOTO_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
+    "GOTOREALTIME_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
     "NAME": "Name",
     "LOGOUT": "An-/Abmelden",
-    "VOICEQUEUES": "Anruf-Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "VOICEQUEUES": "Voice Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
-    "DELETE_VOICEDISPOSITION": "Qualifizierung löschen",
-    "EDIT_VOICEDISPOSITION": "Qualifizierung bearbeiten",
-    "EDIT_VOICEQUEUE": "Anruf-Warteschlange bearbeiten",
-    "DELETE_VOICEQUEUE": "Anruf-Warteschlange löschen",
-    "MOHSOUNDS": "MOH-Töne",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "DELETE_VOICEDISPOSITION": "Disposition löschen",
+    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
+    "EDIT_VOICEQUEUE": "Edit Voice Warteschlange",
+    "DELETE_VOICEQUEUE": "Warteschlange löschen",
+    "MOHSOUNDS": "Die MOH-Sounds",
     "STRATEGY": "Strategie",
     "DESCRIPTION": "Beschreibung",
-    "ADD_VOICEQUEUE": "Warteschlangen hinzufügen",
+    "ADD_VOICEQUEUE": "Hinzufügen von Warteschlangen",
     "CREATED_AT": "Erstellt am",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht GSM-Audiodateien",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht gsm-Audiodateien",
     "APPLICATIONS_LIST": "Liste der Anwendungen",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Benutzerdefinierte Anwendung."
     },
     "ERRORS": {
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "APPLICATION_NAME_REQUIRED": "Name der Anwendung ist erforderlich",
-      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
-      "PHONENUMBER_REQUIRED": "Telefonnummer ist erforderlich",
-      "CONTEXT_REQUIRED": "Kontext ist erforderlich",
-      "DESTINATIONPATTERN_REQUIRED": "Ziel-Pattern ist erforderlich",
-      "FULLNAME_REQUIRED": "Vollständiger Name ist erforderlich",
-      "EMAIL_REQUIRED": "E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
-      "MAILBOX_REQUIRED": "Mailbox ist erforderlich",
-      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "TIMEZONE_REQUIRED": "Zeitzone ist erforderlich",
-      "PREFIX_REQUIRED": "Präfix ist erforderlich",
-      "OPTIONS_REQUIRED": "Bedingungen sind Erforderlich",
-      "AFTERCALLWORKDURATION_REQUIRED": "Dauer Nacharbeit ist erforderlich",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Ressource ist erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
-      "VALUE_REQUIRED": "Wert ist erforderlich",
-      "EXTENSION_REQUIRED": "Nebenstelle ist erforderlich",
-      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Format Name ungültig",
-      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer oder gleich sein als",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederversuche muss größer oder gleich sein als",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gewichtung muss größer oder gleich sein als",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Frequenz der Ansagen muss größer oder gleich sein als",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min. Frequenz der Ansagen muss größer oder gleich sein als",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederholende Frequenz der Ansagen muss größer oder gleich sein als",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Verzögerung muss größer oder gleich sein als",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Position muss größer oder gleich sein als",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Schnitt muss größer oder gleich sein als",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Sekundenmuss größer oder gleich sein als",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Nachrichten muss größer oder gleich sein als",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Nachrichten muss kleiner oder gleich sein als",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "APPLICATION_NAME_REQUIRED": "Der Name der Anwendung ist erforderlich",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "PHONENUMBER_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "CONTEXT_REQUIRED": "Der Rahmen ist erforderlich",
+      "DESTINATIONPATTERN_REQUIRED": "Das Ziel-pattern ist erforderlich",
+      "FULLNAME_REQUIRED": "Der vollständige Name ist erforderlich",
+      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
+      "MAILBOX_REQUIRED": "Die Mailbox ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
+      "TIMEZONE_REQUIRED": "Die Zeitzone ist erforderlich",
+      "PREFIX_REQUIRED": "Das Präfix ist erforderlich",
+      "OPTIONS_REQUIRED": "Die Optionen sind Erforderlich",
+      "AFTERCALLWORKDURATION_REQUIRED": "Die Arbeit nach Anruf Dauer ist erforderlich",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Die Technologie/Ressource erforderlich ist",
+      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "VALUE_REQUIRED": "Der Wert ist erforderlich",
+      "EXTENSION_REQUIRED": "Die Verlängerung ist erforderlich",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
+      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer als oder gleich",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Wiederholung muss größer als oder gleich",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Nachlese Zeit muss größer als oder gleich",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Gewicht muss größer als oder gleich",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Häufigkeit verkünden muss größer als oder gleich",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min Frequenz ankündigen muss größer als oder gleich",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die periodische Frequenz ankündigen muss größer als oder gleich",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Arbeit nach Anruf Dauer muss größer als oder gleich",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Verzögerung muss größer als oder gleich",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Position muss größer als oder gleich",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den Schnitt stellen muss größer als oder gleich",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Muss die Max Sekunden größer als oder gleich",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Max Meldungen muss größer als oder gleich",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Max Meldungen muss kleiner als oder gleich",
       "CALLERIDALL_MUST_VALID_PATTERN": "Falsches Format",
       "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
       "TRUNK_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "PROJECT_REQUIRED": "Pflichtfeld",
-      "PENALTY_REQUIRED": "Wert für Verzögerung erforderlich"
+      "PENALTY_REQUIRED": "Sie müssen einen Wert für die Strafe angeben"
     },
     "GENERAL": "Allgemein",
     "TIMEOUT": "Timeout",
     "MAXLENGTH": "Maximale Länge",
-    "RETRY": "Bitte erneut versuchen",
-    "WRAPUPTIME": "Nacharbeit",
-    "WEIGHT": "Gewichtung",
-    "JOINWHENEMPTY": "Beitreten, wenn leer",
-    "LEAVEWHENEMPTY": "Verlassen, wenn leer",
+    "RETRY": "Versuchen Sie es erneut",
+    "WRAPUPTIME": "-Zeit",
+    "WEIGHT": "Gewicht",
+    "JOINWHENEMPTY": "Melden Sie wenn sie leer sind",
+    "LEAVEWHENEMPTY": "Wenn sie leer lassen",
     "HELP": {
-      "TIMEOUT": "Zeitüberschreitung in Sekunden",
-      "MAXLENGTH": "Maximaler Anrufer in der Warteschlange. Wenn Wert 0, dann keine Begrenzung.",
-      "RETRY": "Klingelzeit in Sekunden pro Mitglied. Danach erfolgt ein weiterer Versuch bei der nächsten freien Nebenstelle.",
-      "WRAPUPTIME": "Nacharbeitszeit in Sekunden, bis ein Nutzer nach einem Anruf wieder verfügbar ist.",
-      "WEIGHT": "Gewichtung der Warteschlange. Ein höherer Wert bedeutet eine Priorisierung gegenüber anderen Warteschlangen.",
-      "JOINWHENEMPTY": "Legt fest, ob ein Anruf in die Warteschlange eintreten kann, wenn dort keine Nutzer angemeldet sind.",
-      "LEAVEWHENEMPTY": "Wirft den Anruf aus der Warteschlange, wenn dort kein Nutzer angemeldet ist.",
-      "ANNOUNCEFREQUENCY": "Intervall für automatische Ansagen der Wartezeit, Position, etc. Der Wert 0 deaktiviert diese Option.",
-      "MINANNOUNCEFREQUENCY": "Minimales Intervall für die Ansagen der Wartezeit. Verhindert, dass ein Nutzer bei häufigen Wechsel der Warteposition zu viele Ansagen erhält.",
-      "PERIODICANNOUNCEFREQUENCY": "Legt fest, wie oft die sich wiederholenden Ansagen gespielt werden sollen",
-      "ANNOUNCEPOSITIONLIMIT": "Wird verwendet, wenn der Wert für die Warteposition auf \"Limitierung\" oder \"Mehr\" gestellt wird.",
-      "AFTERCALLWORKDURATION": "Die Dauer der Nacharbeit nach einem Anruf",
-      "MEMBERDELAY": "Erstellt eine Verzögerung des Anrufes für bestimmte Agenten. Kann zum Skillbasierten Routing verwendet werden.",
-      "MUSICONHOLD": "Legt die Haltemusik auf Basis der Warteschlange fest",
-      "ANNOUNCETOAGENT": "Legt fest, ob der Agent vor Annahme des Anrufes einen Hinweis auf die eingehende Warteschlange hört",
-      "RANDOMPERIODICANNOUNCE": "Bei ja, werden die zugewiesenen Ansagen zufällig abgespielt",
-      "ANNOUNCEHOLDTIME": "Spielt die geschätzte Wartezeit zusammen oder ohne die sich wiederholenden Ansagen ab.",
-      "ANNOUNCECALLERPOSITION": "Definiert die Ansage der Warteposition für den Anrufer. Nein = Niemals; Ja = Immer; Limitierung = nur, wenn die Zeit innerhalb dem eingetragenen Wert liegt; Mehr = nur, wenn die Zeit oberhalb dem eingetragenen Wert liegt ",
-      "REPORTHOLDTIMEAGENT": "Haltezeiten der Agenten in den Berichten verwenden",
-      "PERIODICANNOUNCE": "Sich wiederholende Ansagen; können je nach Konfiguration in definierter Reihenfolge oder zufällig abgespielt werden.",
-      "HOLDTIMEANNOUNCE": "Ansage der Wartezeit. Leer lassen zum Überspringen",
-      "YOUARENEXTANNOUNCE": "Ansage \"Sie sind an erster Position der Warteschlange\", Leer lassen zum Überspringen",
-      "THEREAREANNOUNCE": "Ansage \"Es befinden sich..\" Leer lassen zum Überspringen",
-      "WAITINGCALLSANNOUNCE": "Ansage \"...Anrufe in der Warteschlange\" Leer lassen zum Überspringen",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Ansage: \"Die geschätzte Wartezeit beträgt derzeit...\" Leer lassen zum Überspringen",
-      "MINUTESANNOUNCE": "Ansage \"Minuten\"",
-      "MINUTEANNOUNCE": "Ansage \"Minute\"",
-      "SECONDSANNOUNCE": "Ansage \"Sekunden\" Leer lassen zum Überspringen",
-      "THANKYOUANNOUNCE": "Ansage \"Vielen Dank für Ihre Geduld\" Leer lassen zum Überspringen",
-      "AFTERCALLWORK": "Wenn aktiviert, erhalten die Agenten eine kurze Pause nach jedem Anruf",
-      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Pause der Agenten, bei einem verpassten Anruf. Hinweis: bezieht sich dann auf alle Anruf-Warteschlangen des Agenten.",
-      "RINGINUSE": "Verhindert das Klingeln bei Agenten, deren Nebenstelle in Verwendung ist",
-      "TIMEOUTRESTART": "Wenn ja, wird die Zeitüberschreitung bei Agenten mit \"Besetzt\" oder \"Verbindungsfehler\"-Status übersprungen",
-      "CONTEXT": "Ermöglicht einem Anrufer, durch Drücken einer einzelnen Taste, die Warteschlange zu verlassen.",
-      "SETINTERFACEVARIABLES": "Definiert die Variablen im Interface, welche bei einem Anruf übergeben werden können. ",
-      "SETQUEUEVARIABLES": "Definiert die Variablen in der Warteschlange, welche bei einem Anruf übergeben werden können. ",
-      "SETQUEUEENTRYVARIABLES": "Definiert die Variablen beim Eintritt in die Warteschlange, welche bei einem Anruf übergeben werden können. ",
+      "TIMEOUT": "Gibt die Anzahl von Sekunden an, die das Gerät.",
+      "MAXLENGTH": "Gibt die maximale Anzahl der Anrufer, die in der Warteschlange. Ein Wert von Null bedeutet, dass eine unbegrenzte Anzahl von Anrufern in der Warteschlange sind erlaubt.",
+      "RETRY": "Gibt die Anzahl der Sekunden, die gewartet wird, bevor das nächste Mitglied in die Warteschlange, wenn der Wert für die Zeitüberschreitung erschöpft ist, während versucht wird, den ein Mitglied der Warteschlange.",
+      "WRAPUPTIME": "Die Anzahl der Sekunden, die ein Mitglied in einer Warteschlange verfügbar, nachdem Sie einen Anruf.",
+      "WEIGHT": "Legt das Gewicht einer Warteschlange. Eine Warteschlange mit einem höheren Gewicht definiert werden erste Priorität, wenn Mitglieder, die mit mehreren Warteschlangen.",
+      "JOINWHENEMPTY": "Steuert, ob ein Anrufer wird zur Warteschlange hinzugefügt werden, wenn keine Mitglieder verfügbar sind.",
+      "LEAVEWHENEMPTY": "Zur Kontrolle, ob die Anrufer aus der Warteschlange, wenn die Mitglieder nicht mehr bereit sind, Anrufe zu beantworten.",
+      "ANNOUNCEFREQUENCY": "Legt fest, wie oft sollten wir den Anrufer ankündigen und/oder geschätzte Wartezeit in der Warteschlange. Setzen Sie diesen Wert auf Null, um die Funktion zu deaktivieren.",
+      "MINANNOUNCEFREQUENCY": "Gibt die minimale Zeit, die verstreichen müssen, bevor wir Ihnen die Anrufer in der Warteschlange wieder. Dieser wird verwendet, wenn der Anrufer die Position kann sich häufig ändern, um zu verhindern, dass der Anrufer hören mehrere Updates in einem kurzen Zeitraum.",
+      "PERIODICANNOUNCEFREQUENCY": "Gibt an, wie oft wir sollten regelmäßige Ansagen, die dem Anrufer vorgespielt werden.",
+      "ANNOUNCEPOSITIONLIMIT": "Sie kann verwendet werden, wenn Sie definiert haben, verkünden-Position entweder als Begrenzung oder mehr.",
+      "AFTERCALLWORKDURATION": "Die Dauer der Pause durch die Option \"Arbeit nach Anruf",
+      "MEMBERDELAY": "Sie kann verwendet werden, wenn Sie wollen, dass es eine Verzögerung, bevor der Anrufer und Mitglied der Warteschlange, die miteinander verbunden sind.",
+      "MUSICONHOLD": "Setzt die Musik klasse verwendet werden, die von einer bestimmten Warteschlange an.",
+      "ANNOUNCETOAGENT": "Für die Wiedergabe einer Ansage auf den Agenten, der den Anruf entgegengenommen hat, ihn wissen zu lassen, was der Anrufer die Warteschlange aus.",
+      "RANDOMPERIODICANNOUNCE": "Falls auf Ja eingestellt, wird die festgelegte regelmäßige Mitteilungen in einer zufälligen Reihenfolge.",
+      "ANNOUNCEHOLDTIME": "Legt fest, ob die geschätzte Wartezeit gespielt werden sollte zusammen mit den regelmäßigen Ankündigungen.",
+      "ANNOUNCECALLERPOSITION": "Legt fest, ob es sich bei dem Anrufer seine Position in der Warteschlange mitgeteilt werden sollten. Wenn die Einstellung Nein lautet, die Position wird nicht bekannt gegeben. Falls auf Ja eingestellt, wird die Position des Anrufers wird immer bekannt gegeben. Wenn der Wert überschritten wird, wird der Anrufer hört ihre Position in der Warteschlange nur, wenn er sich innerhalb der Grenze von AK-Position. Wenn der Wert auf Mehr, hört der Anrufer ihre Position, wenn es über die Zahl von AK-Position.",
+      "REPORTHOLDTIMEAGENT": "Die Berichterstattung über die CLI des Anrufers mit der Zeit in der Warteschleife in der Warteschlange vor.",
+      "PERIODICANNOUNCE": "Eine Reihe von regelmäßigen Mitteilungen gespielt zu werden, in der Reihenfolge wiedergegeben, in der sie definiert sind.",
+      "HOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Hold\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "YOUARENEXTANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sie sind jetzt in erster Linie\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "THEREAREANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Es gibt\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "WAITINGCALLSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Wartende Anrufe\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Die voraussichtliche Wartezeit ist\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "MINUTESANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "MINUTEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "SECONDSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sekunden\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "THANKYOUANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Vielen Dank für Ihre Geduld.\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "AFTERCALLWORK": "Wenn der Agent aktiv ist, wird auf eine Pause nach einer abgeschlossenen Anruf in der Warteschlange",
+      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Unterbrechung der Mitglieder, die es versäumen, um einen Anruf zu beantworten. Wenn aktiv, wird diese Mitgliedstaaten angehalten zu werden in allen Warteschlangen er Mitglied ist.",
+      "RINGINUSE": "Verwendet werden, um zu vermeiden, Senden von Anrufen an Mitglieder, deren Status im Einsatz ist.",
+      "TIMEOUTRESTART": "Falls auf Ja eingestellt, wird das Timeout für einen Agenten zu beantworten, wenn entweder ein Besetztzeichen oder wird mit dem Status \"Überlastung des Kanals.",
+      "CONTEXT": "Ermöglicht einem Anrufer zu beenden, die die Warteschlange durch Drücken einer einzigen Taste MFV-Ziffer. Wenn Sie einen Kontext angegeben ist und der Anrufer gibt eine Zahl, Ziffer wird versuchen, die angepasst werden können, im Rahmen festgelegt, und es wird auch weiterhin die Ausführung Nummernplan.",
+      "SETINTERFACEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
+      "SETQUEUEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange und kurz vor dem Anrufer die Warteschlange verlassen einige Variablen werden(siehe wiki)",
+      "SETQUEUEENTRYVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
       "RECORDING": "Aktivieren der Aufzeichnung",
-      "VOICEMAIL_CONTEXT": "Kontext der verwendeten Nebenstellen",
+      "VOICEMAIL_CONTEXT": "Im Rahmen der relativen Erweiterung.",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "CALLERIDALL": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
       "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"
+      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, der während der Zwangsdisposition festgelegt werden soll",
+      "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 Aufnahmedatei an. Wenn es auf 'inaktiv' gesetzt ist, 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."
     },
-    "MUSICONHOLD": "Wartemusik",
-    "ANNOUNCETOAGENT": "Ansage an Agenten",
-    "ANNOUNCEMENTS": "Ansagen",
-    "ADVANCED": "Erweitert",
-    "ANNOUNCEFREQUENCY": "Ansagefrequenz",
-    "MINANNOUNCEFREQUENCY": "Min. Ansagefrequenz",
-    "PERIODICANNOUNCEFREQUENCY": "Frequenz wiederholende Ansagen",
-    "RANDOMPERIODICANNOUNCE": "Zufällige Ansagen",
-    "ANNOUNCEHOLDTIME": "Wartezeit ansagen",
-    "ANNOUNCECALLERPOSITION": "Warteposition ansagen",
-    "ANNOUNCEPOSITIONLIMIT": "Limitierung Warteposition ansagen",
-    "REPORTHOLDTIMEAGENT": "Haltezeit in Agentenbericht",
-    "PERIODICANNOUNCE": "Wiederholende Ansagen",
-    "HOLDTIMEANNOUNCE": "Wartezeit ansagen",
-    "YOUARENEXTANNOUNCE": "Erste Position",
-    "THEREAREANNOUNCE": "Es befinden sich",
-    "WAITINGCALLSANNOUNCE": "Wartende Anrufe",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Wartezeit ansagen",
-    "MINUTESANNOUNCE": "Minuten",
-    "MINUTEANNOUNCE": "Minute",
-    "SECONDSANNOUNCE": "Sekunden",
+    "MUSICONHOLD": "Musik auf Halten",
+    "ANNOUNCETOAGENT": "Geben Sie Agent",
+    "ANNOUNCEMENTS": "Ankündigungen",
+    "ADVANCED": "Erweiterte",
+    "ANNOUNCEFREQUENCY": "Frequenz ankündigen",
+    "MINANNOUNCEFREQUENCY": "Minimale Frequenz ankündigen",
+    "PERIODICANNOUNCEFREQUENCY": "Periodische Frequenz ankündigen",
+    "RANDOMPERIODICANNOUNCE": "Random Periodische verkünden",
+    "ANNOUNCEHOLDTIME": "Geben Sie Zeit",
+    "ANNOUNCECALLERPOSITION": "Position des Anrufers bekannt",
+    "ANNOUNCEPOSITIONLIMIT": "Geben Position Limit",
+    "REPORTHOLDTIMEAGENT": "Bericht Agenten",
+    "PERIODICANNOUNCE": "Periodische verkünden",
+    "HOLDTIMEANNOUNCE": "Zeit in der Warteschleife verkünden",
+    "YOUARENEXTANNOUNCE": "\"Sie sind weiter' verkünden",
+    "THEREAREANNOUNCE": "'Es gibt' verkünden",
+    "WAITINGCALLSANNOUNCE": "Wartende Anrufe,",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Zeit halten,",
+    "MINUTESANNOUNCE": "Minuten ankündigen",
+    "MINUTEANNOUNCE": "Minute verkünden",
+    "SECONDSANNOUNCE": "Sekunden,",
     "THANKYOUANNOUNCE": "'Vielen Dank' verkünden",
     "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "Nacharbeit",
-    "AFTERCALLWORKDURATION": "Dauer Nacharbeit",
-    "RINGINUSE": "Klingeln bei Besetzt",
-    "MEMBERDELAY": "Verzögerung",
-    "TIMEOUTRESTART": "Zeitüberschreitung",
+    "AFTERCALLWORK": "Arbeit nach Anruf",
+    "AFTERCALLWORKDURATION": "Arbeit nach Anruf Dauer",
+    "RINGINUSE": "Ring in Verwendung",
+    "MEMBERDELAY": "Die Verzögerung",
+    "TIMEOUTRESTART": "Timeout starten",
     "MONITORFORMAT": "Aufzeichnungsformat",
-    "SETINTERFACEVARIABLES": "Interface-Variablen",
-    "SETQUEUEVARIABLES": "Warteschlangen-Variablen",
-    "SETQUEUEENTRYVARIABLES": "Warteschlangen-Eintritts-Variablen",
+    "SETINTERFACEVARIABLES": "Die Interface- Variablen",
+    "SETQUEUEVARIABLES": "Die Warteschlange Variablen",
+    "SETQUEUEENTRYVARIABLES": "Die Warteschlange ENTRY-Variablen",
     "VARIABLE": "Variable",
-    "CONTEXT": "Kontext Austritt aus Warteschlange",
+    "CONTEXT": "Kontext",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Eingehende Routen",
+    "INBOUNDROUTES": "Ankommende Routen",
     "PHONENUMBER": "Telefonnummer",
     "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
-    "EDIT_INBOUNDROUTE": "Eingehende Route bearbeiten",
-    "DELETE_INBOUNDROUTE": "Eingehende Route löschen",
+    "EDIT_INBOUNDROUTE": "Route für eingehende Anrufe bearbeiten.",
+    "DELETE_INBOUNDROUTE": "Löschen der Route für eingehende Anrufe",
     "ACTIONS": "Aktionen",
-    "OUTBOUNDROUTES": "Ausgehende Routen",
-    "DESTINATIONPATTERN": "Ziel-Pattern",
+    "OUTBOUNDROUTES": "Abgehende Routen",
+    "DESTINATIONPATTERN": "Ziel Muster",
     "ADD_OUTBOUNDROUTE": "Ausgehende Route hinzufügen",
-    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
-    "CUTDIGITS": "Ziffern",
-    "RECORDING": "Aufzeichnung",
+    "EDIT_OUTBOUNDROUTE": "Abgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
+    "CUTDIGITS": "Die Ziffern",
+    "RECORDING": "Aufnahme",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
+    "ADD_INTERNALROUTE": "Fügen Sie interne Routen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
-    "DELETE_INTERNALROUTE": "Interne Route löschen",
+    "DELETE_INTERNALROUTE": "Interne Routen löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Kontext hinzufügen",
+    "ADD_CONTEXT": "Rahmen hinzufügen",
     "EDIT_CONTEXT": "Kontext bearbeiten",
-    "DELETE_CONTEXT": "Kontext löschen",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Voicemail hinzufügen",
-    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
+    "DELETE_CONTEXT": "Löschen von Rahmen",
+    "VOICEMAILS": "Von Voicemails",
+    "ADD_VOICEMAIL": "Fügen Sie Voicemail",
+    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Vollständiger Name",
+    "FULLNAME": "Voller Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
     "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Anhängen",
+    "ATTACH": "Befestigen Sie",
     "ENVELOPE": "Umschlag",
     "DELETE": "Löschen",
     "EMAILBODY": "E-Mail-Text",
     "EMAILSUBJECT": "Betreff der E-Mail",
-    "MAXSECONDS": "Max. Sekunden",
+    "MAXSECONDS": "In Sekunden",
     "MAXMESSAGES": "Max. Nachrichten",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
-    "MUSICONHOLDS": "Wartemusik",
-    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
-    "DELETE_MUSICONHOLD": "Wartemusik löschen",
+    "ADD_MUSICONHOLD": "Hinzufügen von Musik auf Halten",
+    "MUSICONHOLDS": "Musik auf Halten",
+    "EDIT_MUSICONHOLD": "Bearbeiten Musik auf Halten",
+    "DELETE_MUSICONHOLD": "Löschen Sie Musik auf Halten",
     "DIRECTORY": "Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufzeichnungen",
-    "CHANSPY": "Listen-In",
+    "RECORDINGS": "Aufnahmen",
+    "CHANSPY": "ChanSpy",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Authentifizierung",
-    "ADD_CHANSPY": "Listen-In hinzufügen",
-    "EDIT_CHANSPY": "Listen-In bearbeiten",
-    "DELETE_CHANSPY": "Listen-In löschen",
+    "AUTH": "Auth",
+    "ADD_CHANSPY": "Fügen Sie ChanSpy",
+    "EDIT_CHANSPY": "Bearbeiten Sie ChanSpy",
+    "DELETE_CHANSPY": "Löschen Sie ChanSpy",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe in Warteschlange",
-    "QUEUE_PARAMETERS": "Warteschlangen Parameter",
+    "QUEUE_CALLS": "Anrufe aus einer Warteschlange",
+    "QUEUE_PARAMETERS": "Queue Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
     "AGI": "AGI",
-    "DIAL": "Wählen",
+    "DIAL": "Kurzwahl",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Interner Anruf",
-    "EXTERNALDIAL": "Externer Anruf",
-    "RINGGROUP": "Rufgruppe",
+    "INTERNALDIAL": "Interne Wahl",
+    "EXTERNALDIAL": "Externes Wählen",
+    "RINGGROUP": "Ring-Gruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Einstellen",
+    "SET": "Set",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefiniert",
+    "CUSTOM": "Benutzerdefinierte",
     "PROJECT": "Cally-Square Projekt",
     "TECHNOLOGY/RESOURCE": "Technologie-/Ressourcen",
     "URL": "URL",
-    "EDIT_APP": "App bearbeiten.",
+    "EDIT_APP": "Anwendung bearbeiten.",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_APP": "App löschen",
+    "DELETE_APP": "Anwendung löschen",
     "INTERVALS": "Intervalle",
     "USER": "Benutzer",
-    "TRUNK": "Trunk",
+    "TRUNK": "Amtsleitung",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Überschreibungen ankündigen",
+    "ANNOUNCE_OVERRIDES": "Überschreibt ankündigen",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "ANSWER": "Antwort",
     "VALUE": "Wert",
     "MAILBOX@CONTEXT": "Mailbox@Kontext",
-    "EXTENSION": "Nebenstelle",
+    "EXTENSION": "Erweiterung",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Ablehnungsgrund",
-    "OUTBOUNDDIAL": "Extern wählen",
-    "CALLER_ID": "Anrufer-ID",
+    "HANGUP_CAUSE": "Ursache auflegen",
+    "OUTBOUNDDIAL": "Wählen Sie für abgehende Anrufe",
+    "CALLER_ID": "Die Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufzeichnungen",
-    "CHANSPIES": "Listen-Ins",
-    "VOICE": "Anrufe",
+    "VOICERECORDINGS": "Sprachaufnahmen",
+    "CHANSPIES": "Chan Spies",
+    "VOICE": "Voice",
     "REALTIME": "Echtzeit",
-    "ID": "ID",
+    "ID": "Id",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "ADD_MOHSOUND": "Musik bei Halten hinzufügen",
-    "DOWNLOAD_MOHSOUND": "Musik bei Halten herunterladen",
-    "DELETE_MOHSOUND": "Musik bei Halten löschen",
+    "ADD_MOHSOUND": "Hinzufügen von Musik auf Halten sound",
+    "DOWNLOAD_MOHSOUND": "Download Music-on-Hold sound",
+    "DELETE_MOHSOUND": "Löschen Sie Music On Hold sound",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "NEW_VOICEQUEUE": "Neue Anruf-Warteschlange",
-    "NEW_INBOUNDROUTE": "Neue eingehende Route",
-    "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
-    "NEW_INTERNALROUTE": "Neue interne Route",
-    "NEW_CONTEXT": "Neuer Kontext",
+    "NEW_VOICEQUEUE": "Neue Stimme der Warteschlange",
+    "NEW_INBOUNDROUTE": "Neue Route für eingehende Anrufe",
+    "NEW_OUTBOUNDROUTE": "Neue abgehende Route",
+    "NEW_INTERNALROUTE": "Neue interne Routen",
+    "NEW_CONTEXT": "Neue Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "NEW_MUSICONHOLD": "Neue Haltemusik",
-    "NEW_CHANSPY": "Neuer Listen-In",
-    "PENALTY": "Verzögerung",
-    "ADD_TEAM_TO_VOICEQUEUE": "Team zur Warteschlange hinzufügen",
-    "ADD_AGENT_TO_VOICEQUEUE": "Agenten zur Warteschlange hinzufügen",
-    "EDIT_DIAL": "Wählen anpassen",
+    "NEW_MUSICONHOLD": "Neue Musik auf Halten",
+    "NEW_CHANSPY": "Neue ChanSpy",
+    "PENALTY": "Strafe",
+    "ADD_TEAM_TO_VOICEQUEUE": "Team hinzufügen, Warteschlange",
+    "ADD_AGENT_TO_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
+    "EDIT_DIAL": "Wählen Sie Bearbeiten.",
     "EDIT_AGI": "AGI bearbeiten",
-    "EDIT_INTERNALDIAL": "Internes Wählen bearbeiten",
-    "EDIT_EXTERNALDIAL": "Externes Wählen bearbeiten",
-    "EDIT_RINGGROUP": "Rufgruppe bearbeiten",
-    "EDIT_PLAYBACK": "Wiedergabe bearbeiten",
-    "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "EDIT_SET": "Set bearbeiten",
-    "EDIT_GOTO": "Gehe zu bearbeiten",
-    "EDIT_HANGUP": "Auflegen bearbeiten",
-    "EDIT_CUSTOM": "Benutzerdef. Einstellungen bearbeiten",
+    "EDIT_INTERNALDIAL": "Interne Wahl bearbeiten.",
+    "EDIT_EXTERNALDIAL": "Wählen Sie Externen bearbeiten",
+    "EDIT_RINGGROUP": "Gruppe bearbeiten",
+    "EDIT_PLAYBACK": "Bearbeiten Sie die Wiedergabe",
+    "EDIT_QUEUE": "Bearbeiten von Warteschlangen",
+    "EDIT_SET": "Bearbeiten",
+    "EDIT_GOTO": "Gehe zu bearbeiten.",
+    "EDIT_HANGUP": "Bearbeiten Sie Auflegen",
+    "EDIT_CUSTOM": "Bearbeiten von benutzerdefinierten",
     "DURATION": "Dauer",
-    "RECEIVED_AT": "Eingegangen am",
+    "RECEIVED_AT": "Empfangen am",
     "YES": "Ja",
-    "NO": "Nein",
-    "HANGUPCAUSE_1": "1 = Nummer nicht zugewiesen",
-    "HANGUPCAUSE_16": "16 = Beenden durch Nutzer",
-    "HANGUPCAUSE_17": "17 = Besetzt",
-    "HANGUPCAUSE_18": "18 = Keine Antwort (Nebenstelle nicht verbunden)",
+    "NO": "Keine",
+    "HANGUPCAUSE_1": "1 = Nicht zugewiesene Nummer",
+    "HANGUPCAUSE_16": "16 = Normail Anruf löschen",
+    "HANGUPCAUSE_17": "17 = Benutzer besetzt",
+    "HANGUPCAUSE_18": "18 = Keine Reaktion (Telefon Gerät nicht verbunden)",
     "HANGUPCAUSE_21": "21 = Anruf abgelehnt",
-    "HANGUPCAUSE_22": "22 = Nummer geändert",
-    "HANGUPCAUSE_27": "27 = Ziel nicht verfügbar",
-    "HANGUPCAUSE_38": "38 = Netzwerk nicht verfügbar",
+    "HANGUPCAUSE_22": "22 = Anzahl geändert",
+    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
+    "HANGUPCAUSE_38": "38 = Netzwerk aus, um",
     "HANGUPCAUSE_41": "41 = vorübergehende Störung",
-    "RANDOM": "Zufall",
+    "RANDOM": "Random",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
-    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
-    "INTERNAL": "Intern",
+    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
+    "DELETE_VOICERECORDING": "Löschen von Voice Recording",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "TRUNK_STATUS": "Trunk Status",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "LAGGED": "Zurück",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Verwendung",
-    "INUSE": "In Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
+    "INUSE": "Im Einsatz",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Halten",
-    "RING": "Klingeln",
-    "UP": "Nach Oben",
-    "INFO": "Information",
-    "TRUNKS": "Trunks",
+    "ONHOLD": "Auf Halten",
+    "RING": "Ring",
+    "UP": "Bis",
+    "INFO": "Info",
+    "TRUNKS": "Amtsleitungen",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine Registrierung",
+    "NO_REGISTRY": "Keine registry",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "WAITING": "Wartezustand",
-    "TALKING": "Im Gespräch",
-    "DID": "DID",
+    "WAITING": "Warten",
+    "TALKING": "Sprechen",
+    "DID": "Haben",
     "CALLER": "Anrufer",
-    "TOTAL": "Gesamt",
+    "TOTAL": "Insgesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht bearbeitet",
-    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "AVG_DURATION": "Durchschnittliche Dauer",
-    "AVG_BILLABLE": "Durchschnittliche abrechenbare Zeit",
-    "SOURCE": "Ursprung",
+    "UNMANAGED": "Nicht verwaltete",
+    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
+    "AVG_DURATION": "Av-Dauer",
+    "AVG_BILLABLE": "Avg Fakturierbaren",
+    "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Angerufen",
+    "CALLED": "Aufgerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Sprachaufzeichnungen verwalten",
+    "EDIT_VOICERECORDING": "Edit Voice Recording",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "DEFAULT_PAUSE": "Standard PAUSE",
     "PAUSE": "Pause",
-    "UNPAUSE": "Fortsetzen",
-    "REDIRECT_TO_NUMBER": "Weiterleiten an Nummer",
-    "REDIRECT_TO_AGENT": "Weiterleiten an Agenten",
-    "AGENTADD_VOICEQUEUE": "Agenten zu Anruf-Warteschlange hinzufügen",
+    "UNPAUSE": "Pause",
+    "REDIRECT_TO_NUMBER": "Umleiten zu: Anzahl",
+    "REDIRECT_TO_AGENT": "Umleiten zu: Agent",
+    "AGENTADD_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
     "APPLICATION": "Anwendung",
     "FILES": "Dateien",
     "FORMAT": "Format",
     "MODE": "Modus",
     "RECORD": "Datensatz",
-    "TEAMADD_VOICEQUEUE": "Team zur Anruf-Warteschlange hinzufügen",
-    "NEW_MOHSOUND": "Neue Wartemusik",
-    "DOWNLOAD_MESSAGE": "Herunterladen",
+    "TEAMADD_VOICEQUEUE": "Hinzufügen Team voicequeue",
+    "NEW_MOHSOUND": "Neue Musik auf Halten",
+    "DOWNLOAD_MESSAGE": "Download",
     "DELETE_MESSAGE": "Löschen",
     "QUEUE_PARAMS": "Queue Parameter",
-    "TOTAL_OFFERED": "Gesamt",
+    "TOTAL_OFFERED": "Insgesamt",
     "READY": "Bereit",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlangen hinzufügen",
-    "ALL_TEAMS": "Alle Teams",
+    "AGENTADD_QUEUE": "Agent hinzufügen Warteschlangen zu Voice",
+    "AGENTSADD_QUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSING": "Schließen",
     "TAGS": "Tags",
     "WAITING_FOR_AGENT": "Warten auf Agenten",
-    "EDIT_OUTBOUNDDIAL": "Wählverhalten ausgehend bearbeiten",
-    "ACCOUNTNAME": "Kontoname",
+    "EDIT_OUTBOUNDDIAL": "Bearbeiten ausgehenden DFÜ",
+    "ACCOUNTNAME": "Konto Name",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "DISPOSITION": "Qualifizierung",
+    "OF": "Von",
+    "DISPOSITION": "Disposition",
     "WAITING_FOR_AGENTS": "Warten auf Agenten",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Teilpause",
+    "PARTIALPAUSE": "Teilweise Pause",
     "STATUS": "Status",
     "TIMER": "Timer",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
-    "EDIT_TRUNK": "Trunk bearbeiten",
+    "EDIT_TRUNK": "Bearbeiten Trunk",
     "ACTIVE": "Aktiv",
-    "CLEAR": "Leeren",
+    "CLEAR": "klar",
     "CALLS": "Anrufe",
-    "STARTEDAT": "Startdatum",
-    "ENDEDAT": "Enddatum",
-    "TAG": "Tag",
-    "DETAILS": "Details",
+    "STARTEDAT": "Fing an bei",
+    "ENDEDAT": "Beendet bei",
+    "TAG": "Etikett",
+    "DETAILS": "Einzelheiten",
     "BILLABLESECONDS": "Abrechenbare Sekunden",
-    "ANSWEREDAT": "Beantwortet am",
-    "NOTE": "Notiz",
+    "ANSWEREDAT": "Beantwortet bei",
+    "NOTE": "Hinweis",
     "CLOSE": "Schließen",
-    "SELECT_DATE": "Startdatum auswählen",
-    "SELECT_TYPE": "Typ auswählen",
-    "ABANDONEDCALLS": "Abgebrochene Anrufe",
+    "SELECT_DATE": "Wählen Sie Startdatum",
+    "SELECT_TYPE": "Art auswählen",
+    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
     "ADD_VOICEPREFIX": "Präfix hinzufügen",
-    "AGENTADD_VOICEPREFIX": "Agentenpräfix hinzufügen",
+    "AGENTADD_VOICEPREFIX": "Fügen Sie Agent zu Präfix hinzu",
     "DELETE_VOICEPREFIX": "Präfix löschen",
     "EDIT_VOICEPREFIX": "Präfix bearbeiten",
     "NEW_VOICEPREFIX": "Neues Präfix",
-    "VOICEPREFIXES": "Präfixe für Sprachanrufe",
+    "VOICEPREFIXES": "Vorgegebene Präfixe",
     "CALLERIDALL": "Anruferidentifikation",
     "OUTBOUNDROUTE": "Ausgehende Route",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "DIALER": "Dialer",
-    "INBOUND": "Eingehend",
+    "INBOUND": "Eingehende",
     "OUTBOUND": "Ausgehend",
-    "MANDATORYDISPOSITION": "Qualifikation erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
     "CANT_DOWNLOAD_THIS_FILE": "Diese Datei kann nicht heruntergeladen werden",
     "FILE_NOT_FOUND": "Datei nicht gefunden",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
-    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
-    "STOP_SCREENRECORDING": "Bildschirmaufzeichnung beenden",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "WRONG_EXTENSION": "Ungültige Dateiendung",
+    "START_SCREENRECORDING": "Starten Sie die Bildschirmaufnahme",
+    "STOP_SCREENRECORDING": "Beenden Sie die Bildschirmaufnahme",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "WRONG_EXTENSION": "Die Datei weist die falsche Erweiterung auf",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkript herunterladen",
     "FAILUREREASON": "Fehlergrund",
-    "RUNSENTIMENT_VOICERECORDING": "Starten Sprachaufzeichnung inkl. Sentiment",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transkription und Sentinemtaufzeichnung starten",
-    "RUNTRANSCRIBE_VOICERECORDING": "Transkription starten",
-    "SENTIMENT": "Sentiment",
-    "SENTIMENTANALYSIS": "Sentiment-Analyse",
+    "RUNSENTIMENT_VOICERECORDING": "Führen Sie Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Führen Sie Transcribe & Sentiment aus",
+    "RUNTRANSCRIBE_VOICERECORDING": "Führen Sie Transcribe aus",
+    "SENTIMENT": "Gefühl",
+    "SENTIMENTANALYSIS": "Stimmungsanalyse",
     "SENTIMENT_MIXED": "Gemischt",
     "SENTIMENT_NEGATIVE": "Negativ",
     "SENTIMENT_NEUTRAL": "Neutral",
     "SENTIMENT_POSITIVE": "Positiv",
     "TEXT": "Text",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBESTATUS_COMPLETED": "Transkription abgeschlossen",
-    "TRANSCRIBESTATUS_FAILED": "Transkription fehlgeschlagen",
+    "TRANSCRIBESTATUS_COMPLETED": "Abgeschlossen",
+    "TRANSCRIBESTATUS_FAILED": "Gescheitert",
     "TRANSCRIBESTATUS_IN_PROGRESS": "In Bearbeitung",
     "TRANSCRIBESTATUS_NEW": "Neu",
     "TRANSCRIPT": "Transkript",
     "TRANSCRIPTANALYSIS": "Transkript & Analyse",
     "SERVICELEVEL": "Service Level",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
-    "TEAMADD_VOICEPREFIX": "Team zum Präfix hinzufügen",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
     "ALIAS": "Alias"
   }
 }
index a06798a..0e070f7 100644 (file)
     "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",
index b29a2d3..90b1016 100644 (file)
     "SERVICELEVEL": "Nivel de servicio",
     "SECOND_LEVEL_DISPOSITION": "Tipificación de segundo nivel",
     "THIRD_LEVEL_DISPOSITION": "Tipificación de tercer nivel",
-    "TEAMADD_VOICEPREFIX": "Agregar equipo al prefijo",
     "ALIAS": "Alias"
   }
 }
index b52a7e9..bd75c5e 100644 (file)
     "SERVICELEVEL": "Teenuse tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
-    "TEAMADD_VOICEPREFIX": "Lisa meeskond eesliidesse",
     "ALIAS": "Teise nimega"
   }
 }
index 4c8f69b..64fd7ba 100644 (file)
     "SERVICELEVEL": "سطح سرویس",
     "SECOND_LEVEL_DISPOSITION": "دفع سطح دوم",
     "THIRD_LEVEL_DISPOSITION": "دفع سطح سوم",
-    "TEAMADD_VOICEPREFIX": "اضافه کردن تیم به پیشوند",
     "ALIAS": "نام مستعار"
   }
 }
index 664bc29..f1874d1 100644 (file)
     "SERVICELEVEL": "Palvelutaso",
     "SECOND_LEVEL_DISPOSITION": "Toisen tason sijoitus",
     "THIRD_LEVEL_DISPOSITION": "Kolmannen tason sijoitus",
-    "TEAMADD_VOICEPREFIX": "Lisää joukkue etuliitteeseen",
     "ALIAS": "Alias"
   }
 }
index 51099a3..ca6418d 100644 (file)
     "SERVICELEVEL": "Niveau de service",
     "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"
   }
 }
index 61c740b..2da30a3 100644 (file)
     "SERVICELEVEL": "רמת שירות",
     "SECOND_LEVEL_DISPOSITION": "נטייה בדרגה שנייה",
     "THIRD_LEVEL_DISPOSITION": "נטייה ברמה השלישית",
-    "TEAMADD_VOICEPREFIX": "הוסף צוות לקידומת",
     "ALIAS": "כינוי"
   }
 }
index 905e9aa..2fbd46a 100644 (file)
     "SERVICELEVEL": "सेवा का स्तर",
     "SECOND_LEVEL_DISPOSITION": "दूसरा स्तर विवाद",
     "THIRD_LEVEL_DISPOSITION": "तीसरे स्तर का विवाद",
-    "TEAMADD_VOICEPREFIX": "उपसर्ग में टीम जोड़ें",
     "ALIAS": "उपनाम"
   }
 }
index eef7ebe..1fecba7 100644 (file)
     "SERVICELEVEL": "Tingkat layanan",
     "SECOND_LEVEL_DISPOSITION": "Disposisi Tingkat Kedua",
     "THIRD_LEVEL_DISPOSITION": "Disposisi Tingkat Ketiga",
-    "TEAMADD_VOICEPREFIX": "Tambahkan Tim ke Awalan",
     "ALIAS": "Alias"
   }
 }
index 527d7c5..3b739d4 100644 (file)
     "ADD_VOICEPREFIX": "Aggiungi Prefisso",
     "EDIT_VOICEPREFIX": "Modifica Prefisso",
     "AGENTADD_VOICEPREFIX": "Aggiungi Agente al Prefisso",
-    "TEAMADD_VOICEPREFIX": "Aggiungi Team al Prefisso",
     "DELETE_VOICEPREFIX": "Elimina Prefisso",
     "OUTBOUNDROUTE": "Rotta Outbound",
     "CALLERIDALL": "Numero Chiamante",
index d2accf3..c7d5d57 100644 (file)
     "SERVICELEVEL": "サービスレベル",
     "SECOND_LEVEL_DISPOSITION": "第2レベルの気質",
     "THIRD_LEVEL_DISPOSITION": "第3レベルの気質",
-    "TEAMADD_VOICEPREFIX": "プレフィックスにチームを追加",
     "ALIAS": "エイリアス"
   }
 }
index 9e4a917..bc9ce6e 100644 (file)
     "SERVICELEVEL": "서비스 수준",
     "SECOND_LEVEL_DISPOSITION": "두 번째 수준 처리",
     "THIRD_LEVEL_DISPOSITION": "3 단계 처리",
-    "TEAMADD_VOICEPREFIX": "접두사에 팀 추가",
     "ALIAS": "별명"
   }
 }
index 65172e6..1a07f3d 100644 (file)
     "SERVICELEVEL": "Aptarnavimo lygis",
     "SECOND_LEVEL_DISPOSITION": "Antro lygio disponavimas",
     "THIRD_LEVEL_DISPOSITION": "Trečiojo lygio disponavimas",
-    "TEAMADD_VOICEPREFIX": "Pridėti komandą prie priešdėlio",
     "ALIAS": "Pseudonimas"
   }
 }
index 499925d..3e683d8 100644 (file)
     "SERVICELEVEL": "Pakalpojuma līmenis",
     "SECOND_LEVEL_DISPOSITION": "Otrā līmeņa izvietojums",
     "THIRD_LEVEL_DISPOSITION": "Trešā līmeņa izvietojums",
-    "TEAMADD_VOICEPREFIX": "Pievienot komandu prefiksam",
     "ALIAS": "Pseidonīms"
   }
 }
index a1ad47d..103a753 100644 (file)
     "SERVICELEVEL": "Service Level",
     "SECOND_LEVEL_DISPOSITION": "Tweede niveau dispositie",
     "THIRD_LEVEL_DISPOSITION": "Dispositie op het derde niveau",
-    "TEAMADD_VOICEPREFIX": "Team toevoegen aan voorvoegsel",
     "ALIAS": "Alias"
   }
 }
index f979e88..729522a 100644 (file)
     "SERVICELEVEL": "Service nivå",
     "SECOND_LEVEL_DISPOSITION": "Andre nivå disposisjon",
     "THIRD_LEVEL_DISPOSITION": "Tredje nivå disposisjon",
-    "TEAMADD_VOICEPREFIX": "Legg Team til prefiks",
     "ALIAS": "Alias"
   }
 }
index 9974a58..3988cbe 100644 (file)
     "SERVICELEVEL": "Poziom usług",
     "SECOND_LEVEL_DISPOSITION": "Dyspozycja drugiego poziomu",
     "THIRD_LEVEL_DISPOSITION": "Dyspozycja trzeciego poziomu",
-    "TEAMADD_VOICEPREFIX": "Dodaj drużynę do prefiksu",
     "ALIAS": "Alias"
   }
 }
index 95abd15..5113530 100644 (file)
     "SERVICELEVEL": "Nível de serviço",
     "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"
   }
 }
index 3c55740..a46bf2f 100644 (file)
     "SERVICELEVEL": "Nível de serviço",
     "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"
   }
 }
index 022d0b1..672f53d 100644 (file)
     "SERVICELEVEL": "Уровень обслуживания",
     "SECOND_LEVEL_DISPOSITION": "Расположение второго уровня",
     "THIRD_LEVEL_DISPOSITION": "Расположение третьего уровня",
-    "TEAMADD_VOICEPREFIX": "Добавить команду к префиксу",
     "ALIAS": "Псевдоним"
   }
 }
index 6a741b4..83c6c54 100644 (file)
     "SERVICELEVEL": "Servicenivå",
     "SECOND_LEVEL_DISPOSITION": "Andra nivån disposition",
     "THIRD_LEVEL_DISPOSITION": "Tredje nivåens disposition",
-    "TEAMADD_VOICEPREFIX": "Lägg till Team i prefixet",
     "ALIAS": "Alias"
   }
 }
index 51a4ca4..6dd9d26 100644 (file)
     "SERVICELEVEL": "Servis seviyesi",
     "SECOND_LEVEL_DISPOSITION": "İkinci Düzey Tasarruf",
     "THIRD_LEVEL_DISPOSITION": "Üçüncü Düzey Tasarruf",
-    "TEAMADD_VOICEPREFIX": "Önek'e Takım Ekle",
     "ALIAS": "takma ad"
   }
 }
index 3abaa1b..2415dcc 100644 (file)
     "SERVICELEVEL": "服务等级",
     "SECOND_LEVEL_DISPOSITION": "二级处置",
     "THIRD_LEVEL_DISPOSITION": "第三级处置",
-    "TEAMADD_VOICEPREFIX": "将团队添加到前缀",
     "ALIAS": "别名"
   }
 }
index c78fea9..294b15a 100644 (file)
     "SERVICELEVEL": "服務等級",
     "SECOND_LEVEL_DISPOSITION": "二級處置",
     "THIRD_LEVEL_DISPOSITION": "第三級處置",
-    "TEAMADD_VOICEPREFIX": "將團隊添加到前綴",
     "ALIAS": "別名"
   }
 }
index 6f42238..03bcbeb 100644 (file)
     "LASTMESSAGE": "اخر رسالة",
     "LEXREGION": "منطقة",
     "LIST": "قائمة",
-    "LOGGED_IN": "تم تسجيل الدخول",
+    "LOGGED_IN": "تم تسجيل الدخول (SIP متصل)",
     "LOGIN_TIME": "وقت تسجيل الدخول",
     "LOGOUT": "تسجيل خروج",
     "MANDATORYDISPOSITION": "الترتيب الإلزامي",
index e361766..07beea8 100644 (file)
     "LASTMESSAGE": "Poslední zpráva",
     "LEXREGION": "Kraj",
     "LIST": "Seznam",
-    "LOGGED_IN": "Přihlášen",
+    "LOGGED_IN": "Přihlášen (připojeno SIP)",
     "LOGIN_TIME": "Čas přihlášení",
     "LOGOUT": "Odhlásit se",
     "MANDATORYDISPOSITION": "Povinná dispozice",
index 00e305d..67fc111 100644 (file)
     "LASTMESSAGE": "Sidste meddelelse",
     "LEXREGION": "Område",
     "LIST": "Liste",
-    "LOGGED_IN": "Logget ind",
+    "LOGGED_IN": "Logget ind (SIP tilsluttet)",
     "LOGIN_TIME": "Login tid",
     "LOGOUT": "Log ud",
     "MANDATORYDISPOSITION": "Obligatorisk disposition",
index f01cf37..80b51fd 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "ACCOUNTSID_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "AGENT_REQUIRED": "Pflichtfeld",
       "AGENT_TIMEOUT_REQUIRED": "Pflichtfeld",
@@ -14,9 +14,9 @@
       "CONDITION_REQUIRED": "Pflichtfeld",
       "DESCRIPTION_REQUIRED": "Pflichtfeld",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
       "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "KEY_REQUIRED": "Pflichtfeld",
       "LANGUAGE_REQUIRED": "Pflichtfeld",
       "LEXREGION_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "NAME_REQUIRED": "Pflichtfeld",
       "PHONE_REQUIRED": "Pflichtfeld",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
       "PRIORITY_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
       "TEXT_REQUIRED": "Pflichtfeld",
-      "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_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "TIMEOUT_REQUIRED": "Pflichtfeld",
       "TIMES_REQUIRED": "Pflichtfeld",
       "TOKEN_REQUIRED": "Pflichtfeld",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
       "TRUEPRIORITY_REQUIRED": "Pflichtfeld",
       "TYPE_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "WELCOMEMESSAGE_REQUIRED": "Pflichtfeld",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     },
     "HELP": {
-      "LIST": "Liste für die Zuordnung von Kontakten",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+      "LIST": "Kontaktmanagerliste zum Zuordnen von Kontakten",
+      "MANDATORYDISPOSITION": "Obligatorische Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: <Protokoll>: // <IP-Adresse> [: <Port>]. Beispiel: https: //X.Y.Z.W",
       "NAME": "Es werden nur Zahlen, Buchstaben und bestimmte Zeichen (._) unterstützt",
       "RECEIVEURL": "Dies ist die automatisch generierte API-Zeichenfolge, die Sie zum Empfangen der Nachrichten in Ihrem Konto von Ihrem WhatsApp Connector-Anbieter verwenden müssen (POST-Methode muss verwendet werden): Klicken Sie auf die Schaltfläche in der Zwischenablage, um sie zu kopieren",
-      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, welche bei einer neuen Interaktion gesendet wird"
+      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, die an neue Interaktionen gesendet wird"
     },
     "ACCESSKEYID": "Zugriffsschlüssel-ID",
-    "ACCOUNTSID": "Konto-ID",
+    "ACCOUNTSID": "Konto-SID",
     "ACTIONS": "Aktionen",
     "ADD_NOTE": "Notiz hinzufügen",
-    "ADD_WHATSAPPACCOUNT": "Whatsapp Konto konzufügen",
-    "ADD_WHATSAPPCANNEDANSWER": "Textvorlage hinzufügen",
-    "ADD_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung hinzufügen",
+    "ADD_WHATSAPPACCOUNT": "Hinzufügen",
+    "ADD_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "ADD_WHATSAPPDISPOSITION": "WhatsApp Disposition hinzufügen",
     "ADD_WHATSAPPQUEUE": "WhatsApp-Warteschlange hinzufügen",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Fortgeschrittene",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTADD_WHATSAPPACCOUNT": "Agenten zum WhatsApp-Konto hinzufügen",
-    "AGENTADD_WHATSAPPQUEUE": "Agenten zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_WHATSAPPACCOUNT": "Agent zum WhatsApp-Konto hinzufügen",
+    "AGENTADD_WHATSAPPQUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
     "AGENTS": "Agenten",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTTRANSFER": "Transfer Agent",
-    "AGENTTRANSFERTIMEOUT": "Timeout Agententransfer",
-    "AGENT_TIMEOUT": "Timeout Agent",
+    "AGENTSADD_QUEUE": "Hinzufügen von Agenten zur WhatsApp-Warteschlange",
+    "AGENTTRANSFER": "Agententransfer",
+    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung bei der Agentenübertragung",
+    "AGENT_TIMEOUT": "Agent Timeout",
     "ALL": "Alles",
     "ALL_AGENTS": "Alle Agenten",
     "ALL_TEAMS": "Alle Teams",
     "AUTHTOKEN": "Auth Token",
     "AUTOREPLY": "Automatische Antwort",
     "BACK": "Zurück",
-    "BOTNAME": "Botname",
+    "BOTNAME": "Bot Name",
     "BUSY": "Beschäftigt",
-    "CANNEDANSWERS": "Textvorlagen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Suchen nach Textvorlagen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
     "CAPACITY": "Kapazität",
     "CLOSE": "Schließen",
     "CLOSED": "Geschlossen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "CONDITION": "Bedingung",
     "CONTACT": "Kontakt",
-    "CREATED_AT": "Erstellt am",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "CREATED_AT": "Hergestellt in",
+    "DEFAULT_PAUSE": "STANDARD PAUSE",
     "DELETE": "Löschen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "DELETE_SELECTED": "Ausgewählte löschen",
     "DELETE_WHATSAPPACCOUNT": "WhatsApp-Konto löschen",
-    "DELETE_WHATSAPPCANNEDANSWER": "Textvorlage löschen",
-    "DELETE_WHATSAPPDISPOSITION": "Qualifizierung löschen",
+    "DELETE_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "DELETE_WHATSAPPDISPOSITION": "WhatsApp-Disposition löschen",
     "DELETE_WHATSAPPQUEUE": "WhatsApp-Warteschlange löschen",
     "DESCRIPTION": "Beschreibung",
     "DIALOGFLOW": "DialogFlow",
-    "DISPOSITION": "Qualifizierung",
-    "DISPOSITIONS": "Qualifizierungen",
-    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
-    "EDIT_AGENT": "Agenten bearbeiten",
-    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
+    "DISPOSITION": "Anordnung",
+    "DISPOSITIONS": "Dispositionen",
+    "DOWNLOAD_INTERACTION": "Herunterladen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Ohne Anhänge herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "EDIT_DIALOGFLOW": "DialogFlow-Konfiguration bearbeiten",
-    "EDIT_GOTOIF": "GoToIf bearbeiten",
-    "EDIT_GOTOP": "GoTop bearbeiten",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "EDIT_DIALOGFLOW": "Bearbeiten Sie die DialogFlow-Konfiguration",
+    "EDIT_GOTOIF": "Bearbeiten Sie Gotoif",
+    "EDIT_GOTOP": "Gotop bearbeiten",
     "EDIT_NOOP": "Noop bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_SYSTEM": "System bearbeiten",
     "EDIT_TAG": "Tag bearbeiten",
     "EDIT_WHATSAPPACCOUNT": "WhatsApp-Konto bearbeiten",
-    "EDIT_WHATSAPPCANNEDANSWER": "Textvorlage bearbeiten",
-    "EDIT_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung bearbeiten",
-    "EDIT_WHATSAPPQUEUE": "Whatsapp-Warteschlange bearbeiten",
-    "FALSEPRIORITY": "Priorität falsch",
-    "GENERAL": "Allgemein",
+    "EDIT_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "EDIT_WHATSAPPDISPOSITION": "WhatsApp-Disposition bearbeiten",
+    "EDIT_WHATSAPPQUEUE": "Bearbeiten Sie die WhatsApp-Warteschlange",
+    "FALSEPRIORITY": "Falsche Priorität",
+    "GENERAL": "Allgemeines",
     "GOTOIF": "Gotoif",
     "GOTOP": "Zum Seitenanfang",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Zur Echtzeitansicht gehen",
-    "GO_TO_WHATSAPPACCOUNTS": "Zum Whatsapp-Konto gehen",
-    "ID": "ID",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Wechseln Sie zur WhatsApp-Warteschlange in Echtzeit",
+    "GO_TO_WHATSAPPACCOUNTS": "Gehe zu Konto",
+    "ID": "Ich würde",
     "IDLE": "Leerlauf",
     "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
     "INTERACTIONS": "Interaktionen",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Zu Interaktionen gehen",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Gehen Sie zu Interaktionen",
     "KEY": "Schlüssel",
     "LANGUAGE": "Sprache",
     "LASTMESSAGE": "Letzte Nachricht",
-    "LEXREGION": "LexRegion",
-    "LIST": "Liste",
-    "LOGGED_IN": "Eingeloggt",
+    "LEXREGION": "Region",
+    "LIST": "Aufführen",
+    "LOGGED_IN": "Eingeloggt (SIP verbunden)",
     "LOGIN_TIME": "Anmeldezeit",
     "LOGOUT": "Ausloggen",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern erforderlich",
+    "MANDATORYDISPOSITION": "Obligatorische Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
     "MORE": "Mehr",
-    "MOTIONPROXY": "Proxy",
+    "MOTIONPROXY": "Proxy- oder Bewegungsdomäne",
     "MULTI_SELECT_TOGGLE": "Mehrfachauswahl umschalten",
     "NAME": "Name",
     "NEW_WHATSAPPACCOUNT": "Neues WhatsApp-Konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Neue WhatsApp-Textvorlage",
-    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Quailifizierung",
+    "NEW_WHATSAPPCANNEDANSWER": "Neue vordefinierte WhatsApp-Antwort",
+    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Disposition",
     "NEW_WHATSAPPQUEUE": "Neue WhatsApp-Warteschlange",
     "NOOP": "Noop",
-    "NOTE": "Anmerkung",
+    "NOTE": "Hinweis",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klang",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "NO_AGENT_ONLINE": "Kein Agent online",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
+    "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine vordefinierten WhatsApp-Antworten verfügbar",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine WhatsApp-Dispositionen verfügbar",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Keine WhatsApp-Konten verfügbar",
     "OF": "von",
     "OPENED": "Geöffnet",
     "PROXY": "Proxy",
     "QUEUE": "Warteschlange",
     "QUEUES": "Warteschlangen",
-    "QUEUETRANSFER": "Transfer an Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangentransfer",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
     "READY": "Bereit",
     "REALTIME": "Echtzeit",
-    "RECEIVEURL": "URL für Erhalt",
+    "RECEIVEURL": "URL erhalten",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "REMOTE": "Remote",
+    "REMOTE": "Fernbedienung",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "SAVE": "Speichern",
+    "SAVE": "sparen",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
     "SEARCH_FOR_ANYONE": "Suche",
-    "SECRETACCESSKEY": "Geheimer Schlüssel",
+    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
     "SELECTED": "Ausgewählt",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "SELECTED_TEAMS": "Ausgewählte Teams",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Wählen Sie Alle",
+    "SELECT_NONE": "Nichts ausgewählt",
     "SEND": "Senden",
-    "SETTINGS": "Einstellungen",
-    "SPYINTERACTION": "Mitlesen",
-    "STARTEDAT": "Startdatum",
-    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
+    "SETTINGS": "die Einstellungen",
+    "SPYINTERACTION": "Spionage-Interaktion",
+    "STARTEDAT": "Fing an bei",
+    "START_SCREENRECORDING": "Bildschirmaufnahme starten",
     "STATUS": "Status",
     "STOP_SCREENRECORDING": "Bildschirmaufzeichnung stoppen",
     "STRATEGY": "Strategie",
     "SYSTEM": "System",
-    "TAG": "Tag",
-    "TAGS": "Tags",
+    "TAG": "Etikett",
+    "TAGS": "Stichworte",
     "TEAMADD_WHATSAPPQUEUE": "Team zur WhatsApp-Warteschlange hinzufügen",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "TEAMS_ASSOCIATION": "Mannschaftsverband",
     "TEXT": "Text",
-    "TIMEOUT": "Zeitüberschreitung",
+    "TIMEOUT": "Auszeit",
     "TIMER": "Timer",
-    "TIMES": "Zeiten",
-    "TO": "an",
-    "TOKEN": "Token",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "TRANSFER": "Weiterleiten",
+    "TIMES": "Mal",
+    "TO": "Zu",
+    "TOKEN": "Zeichen",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "TRANSFER": "Transfer",
     "TRUEPRIORITY": "Wahre Priorität",
-    "TYPE": "Typ",
+    "TYPE": "Art",
     "UNPAUSE": "Pause beenden",
     "VALUE": "Wert",
     "VARIABLE": "Variable",
-    "WAITFORTHEASSIGNEDAGENT": "Auf den zugewiesenen Mitarbeiter warten",
+    "WAITFORTHEASSIGNEDAGENT": "Warten Sie auf den zugewiesenen Agenten",
     "WAITING": "Warten",
     "WELCOMEMESSAGE": "Willkommensnachricht",
     "WHATSAPP": "WhatsApp Connector",
     "WHATSAPPACCOUNTS": "WhatsApp-Konten",
-    "WHATSAPPCANNEDANSWERS": "WhatsApp-Textvorlagen",
-    "WHATSAPPDISPOSITIONS": "WhatsApp-Qualifizierungen",
+    "WHATSAPPCANNEDANSWERS": "WhatsApp vordefinierte Antworten",
+    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositionen",
     "WHATSAPPQUEUES": "WhatsApp-Warteschlangen",
-    "CLIENTEMAIL": "Kunden E-Mail",
+    "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Schlüssel",
     "PROJECTID": "Projekt-ID"
   }
 }
index 8ac07bf..0920067 100644 (file)
     "LASTMESSAGE": "Last Message",
     "LEXREGION": "Region",
     "LIST": "List",
-    "LOGGED_IN": "Logged In",
+    "LOGGED_IN": "Logged In (SIP Connected)",
     "LOGIN_TIME": "Login Time",
     "LOGOUT": "Logout",
     "MANDATORYDISPOSITION": "Mandatory Disposition",
index a7cb714..03aafb4 100644 (file)
     "LASTMESSAGE": "Ultimo mensaje",
     "LEXREGION": "Región",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado",
+    "LOGGED_IN": "Conectado (SIP conectado)",
     "LOGIN_TIME": "Hora de inicio de sesión",
     "LOGOUT": "Cerrar sesión",
     "MANDATORYDISPOSITION": "Tipificación obligatoria",
index c40e5bd..5ff75f9 100644 (file)
     "LASTMESSAGE": "Viimane sõnum",
     "LEXREGION": "Piirkond",
     "LIST": "Loend",
-    "LOGGED_IN": "Sisse logitud",
+    "LOGGED_IN": "Sisse logitud (SIP ühendatud)",
     "LOGIN_TIME": "Sisselogimise aeg",
     "LOGOUT": "Logi välja",
     "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
index 76a3444..2bfad68 100644 (file)
     "LASTMESSAGE": "آخرین پیام",
     "LEXREGION": "منطقه",
     "LIST": "لیست",
-    "LOGGED_IN": "ورود به سیستم",
+    "LOGGED_IN": "ورود به سیستم (SIP متصل)",
     "LOGIN_TIME": "زمان ورود",
     "LOGOUT": "خروج",
     "MANDATORYDISPOSITION": "اختیار اجباری",
index 52f4f20..647eabf 100644 (file)
     "LASTMESSAGE": "Viimeinen viesti",
     "LEXREGION": "alue",
     "LIST": "Lista",
-    "LOGGED_IN": "Sisäänkirjautunut",
+    "LOGGED_IN": "Sisäänkirjautunut (SIP kytketty)",
     "LOGIN_TIME": "Sisäänkirjautumisaika",
     "LOGOUT": "Kirjautua ulos",
     "MANDATORYDISPOSITION": "Pakollinen sijoittaminen",
index 919bb35..b2e331a 100644 (file)
     "LASTMESSAGE": "Dernier message",
     "LEXREGION": "Région",
     "LIST": "liste",
-    "LOGGED_IN": "Connecté",
+    "LOGGED_IN": "Connecté (SIP connecté)",
     "LOGIN_TIME": "Heure de connexion",
     "LOGOUT": "Se déconnecter",
     "MANDATORYDISPOSITION": "Disposition obligatoire",
index a6c765d..00d0fa4 100644 (file)
     "LASTMESSAGE": "הודעה אחרונה",
     "LEXREGION": "אזור",
     "LIST": "רשימה",
-    "LOGGED_IN": "מחובר",
+    "LOGGED_IN": "מחובר (SIP מחובר)",
     "LOGIN_TIME": "זמן כניסה",
     "LOGOUT": "להתנתק",
     "MANDATORYDISPOSITION": "התנהגות חובה",
index 0550a1a..819f531 100644 (file)
     "LASTMESSAGE": "आखिरी सन्देश",
     "LEXREGION": "क्षेत्र",
     "LIST": "सूची",
-    "LOGGED_IN": "लॉग इन",
+    "LOGGED_IN": "लॉग इन (SIP कनेक्टेड)",
     "LOGIN_TIME": "लॉग इन टाइम",
     "LOGOUT": "लॉग आउट",
     "MANDATORYDISPOSITION": "अनिवार्य विवाद",
index 246085c..b2e703c 100644 (file)
     "LASTMESSAGE": "Pesan Terakhir",
     "LEXREGION": "Wilayah",
     "LIST": "Daftar",
-    "LOGGED_IN": "Masuk",
+    "LOGGED_IN": "Masuk (SIP Terhubung)",
     "LOGIN_TIME": "Waktu Login",
     "LOGOUT": "Keluar",
     "MANDATORYDISPOSITION": "Disposisi Wajib",
index d23db62..0350e8d 100644 (file)
     "LASTMESSAGE": "最後のメッセージ",
     "LEXREGION": "領域",
     "LIST": "リスト",
-    "LOGGED_IN": "ログイン済み",
+    "LOGGED_IN": "ログイン済み(SIP接続済み)",
     "LOGIN_TIME": "ログイン時間",
     "LOGOUT": "ログアウト",
     "MANDATORYDISPOSITION": "強制処分",
index 53a3344..d6c34e1 100644 (file)
     "LASTMESSAGE": "마지막 메시지",
     "LEXREGION": "부위",
     "LIST": "명부",
-    "LOGGED_IN": "로그인 됨",
+    "LOGGED_IN": "로그인 됨 (SIP 연결됨)",
     "LOGIN_TIME": "로그인 시간",
     "LOGOUT": "로그 아웃",
     "MANDATORYDISPOSITION": "필수 처분",
index a074057..282dd81 100644 (file)
     "LASTMESSAGE": "Paskutinė žinutė",
     "LEXREGION": "Regionas",
     "LIST": "Sąrašas",
-    "LOGGED_IN": "Prisijungęs",
+    "LOGGED_IN": "Prisijungęs (prijungtas prie SIP)",
     "LOGIN_TIME": "Prisijungimo laikas",
     "LOGOUT": "Atsijungti",
     "MANDATORYDISPOSITION": "Privalomas nusistatymas",
index fb7beca..2389947 100644 (file)
     "LASTMESSAGE": "Pēdējā ziņa",
     "LEXREGION": "Novads",
     "LIST": "Saraksts",
-    "LOGGED_IN": "Pieteicies",
+    "LOGGED_IN": "Pieteicies (savienots ar SIP)",
     "LOGIN_TIME": "Pieteikšanās laiks",
     "LOGOUT": "Izlogoties",
     "MANDATORYDISPOSITION": "Obligāta rīcība",
index 5eed559..85a42ac 100644 (file)
     "LASTMESSAGE": "Laatste bericht",
     "LEXREGION": "Regio",
     "LIST": "Lijst",
-    "LOGGED_IN": "Ingelogd",
+    "LOGGED_IN": "Ingelogd (SIP verbonden)",
     "LOGIN_TIME": "Login Tijd",
     "LOGOUT": "Uitloggen",
     "MANDATORYDISPOSITION": "Verplichte dispositie",
index efdafa2..b8c8675 100644 (file)
     "LASTMESSAGE": "Siste melding",
     "LEXREGION": "Region",
     "LIST": "Liste",
-    "LOGGED_IN": "Logget inn",
+    "LOGGED_IN": "Logget inn (SIP-tilkoblet)",
     "LOGIN_TIME": "Innloggingstid",
     "LOGOUT": "Logg ut",
     "MANDATORYDISPOSITION": "Obligatorisk disposisjon",
index 510b8e5..da5dad6 100644 (file)
     "LASTMESSAGE": "Ostatnia wiadomość",
     "LEXREGION": "Region",
     "LIST": "Lista",
-    "LOGGED_IN": "Zalogowano",
+    "LOGGED_IN": "Zalogowano (połączenie SIP)",
     "LOGIN_TIME": "Czas logowania",
     "LOGOUT": "Wyloguj",
     "MANDATORYDISPOSITION": "Obowiązkowa dyspozycja",
index 29fd2ec..ec3412a 100644 (file)
     "LASTMESSAGE": "Última mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado",
+    "LOGGED_IN": "Conectado (SIP conectado)",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
     "MANDATORYDISPOSITION": "Disposição Obrigatória",
index 29fd2ec..ec3412a 100644 (file)
     "LASTMESSAGE": "Última mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado",
+    "LOGGED_IN": "Conectado (SIP conectado)",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
     "MANDATORYDISPOSITION": "Disposição Obrigatória",
index 5131899..87a083a 100644 (file)
     "LASTMESSAGE": "Последнее сообщение",
     "LEXREGION": "Область",
     "LIST": "Список",
-    "LOGGED_IN": "Авторизован",
+    "LOGGED_IN": "Авторизован (SIP подключен)",
     "LOGIN_TIME": "Время входа",
     "LOGOUT": "Выйти",
     "MANDATORYDISPOSITION": "Обязательное распоряжение",
index ae13a80..f4f2b7e 100644 (file)
     "LASTMESSAGE": "Senaste meddelandet",
     "LEXREGION": "Område",
     "LIST": "Lista",
-    "LOGGED_IN": "Inloggad",
+    "LOGGED_IN": "Inloggad (SIP ansluten)",
     "LOGIN_TIME": "Inloggningstid",
     "LOGOUT": "Logga ut",
     "MANDATORYDISPOSITION": "Obligatorisk disposition",
index da1b4f9..e867462 100644 (file)
     "LASTMESSAGE": "Son Mesaj",
     "LEXREGION": "bölge",
     "LIST": "Liste",
-    "LOGGED_IN": "Oturum Açıldı",
+    "LOGGED_IN": "Oturum Açıldı (SIP Bağlı)",
     "LOGIN_TIME": "Giriş Zamanı",
     "LOGOUT": "Çıkış Yap",
     "MANDATORYDISPOSITION": "Zorunlu Elden Çıkarma",
index 4804111..b81f80a 100644 (file)
     "LASTMESSAGE": "最后留言",
     "LEXREGION": "地区",
     "LIST": "清单",
-    "LOGGED_IN": "已登录",
+    "LOGGED_IN": "已登录(已连接SIP)",
     "LOGIN_TIME": "登录时间",
     "LOGOUT": "登出",
     "MANDATORYDISPOSITION": "强制性",
index 6d85da7..cb5a2ee 100644 (file)
     "LASTMESSAGE": "最後留言",
     "LEXREGION": "地區",
     "LIST": "清單",
-    "LOGGED_IN": "已登錄",
+    "LOGGED_IN": "已登錄(已連接SIP)",
     "LOGIN_TIME": "登錄時間",
     "LOGOUT": "登出",
     "MANDATORYDISPOSITION": "強制性",
index fd8ccd9..3162f7a 100644 (file)
     "CHAT": "CHAT",
     "ACTIVITY": "Aktivität",
     "FRIENDS": "Freunde",
-    "APP_SERVERS": "Server Anwendung",
-    "USER_STATS": "Benutzer Statistiken",
-    "EVENTS": "Ereignisse",
-    "NOTES": "Notizen",
-    "QUICK_SETTINGS": "Schnelleinstellungen",
+    "APP_SERVERS": "Anwendungsserver",
+    "USER_STATS": "Benutzer Stats",
+    "EVENTS": "Veranstaltungen",
+    "NOTES": "Hinweise",
+    "QUICK_SETTINGS": "Schnelle Einstellungen",
     "NOTIFICATIONS": "Benachrichtigungen",
     "CLOUD_SYNC": "Cloud Synchronisieren",
-    "RETRO_THRUSTERS": "Retro Thrusters",
-    "RECENT": "Neuste",
+    "RETRO_THRUSTERS": "Retro Triebwerke",
+    "RECENT": "Die jüngsten",
     "START_NEW_CHAT": "Neuen Chat starten",
     "BACK": "Zurück",
-    "CALL": "Anrufen",
+    "CALL": "Anruf",
     "MORE": "Mehr",
     "SEND_MESSAGE": "Nachricht senden",
-    "REPLY_PLACEHOLDER": "Nachricht eingeben und Enter drücken zum Senden",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Support kontaktieren",
+    "REPLY_PLACEHOLDER": "Geben Sie ein, und drücken Sie die Eingabetaste, um Nachricht senden",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Kontakt xCALLY Motion Support",
     "EXPIRATION_DATE": "Ablaufdatum",
     "EXPIRATION_REASON": "Ablauf Grund",
     "LICENSE": "Lizenz",
-    "NEW_TOKEN": "Neuer Token",
-    "OLD_TOKEN": "Alter Token",
+    "NEW_TOKEN": "Neue Token",
+    "OLD_TOKEN": "Alte Token",
     "SEND_EMAIL_TO": "E-Mail senden an",
     "TOKEN": "Token",
-    "EXPIRATION_REASON_MESSAGE": "Ihre Lizenz ist abgelaufen oder Ihre eindeutige ID wurde aufgrund einer Änderung an Ihrem System aktualisiert. Bitte den Support kontaktieren",
-    "GRAY_PERIOD_EXPIRATION": "Ablauf Testphase",
+    "EXPIRATION_REASON_MESSAGE": "Ihre Lizenz ist abgelaufen oder Ihre Maschine eindeutige Id wurde aufgrund einer Änderung an Ihrem System aktualisiert. Die xCALLY Motion Support Team Ihre alte und Ihre neue uuid senden Kontakt.",
+    "GRAY_PERIOD_EXPIRATION": "Grau Zeitraum Ablauf",
     "ERRORS": {
       "NAME_REQUIRED": "Pflichtfeld"
     },
-    "EXPIRATION_GRAY_PERIOD": "Ablauf Testphase",
-    "NO_AVAILABLE_GROUPS": "Keine Gruppen verfügbar",
-    "SAVE": "Speichern",
-    "INFO": "Information",
+    "EXPIRATION_GRAY_PERIOD": "Ablauf Grauzeit",
+    "NO_AVAILABLE_GROUPS": "Keine verfügbaren Gruppen",
+    "SAVE": "sparen",
+    "INFO": "Info",
     "NEW_CHATGROUP": "Neue Gruppe",
     "NAME": "Name",
     "MEMBERS": "Mitglieder",
@@ -65,9 +65,9 @@
     "DELETE": "Löschen",
     "SEARCH": "Suche",
     "USERS": "Benutzer",
-    "EXPIRATION_REASON_MESSAGE_GRAY": "Ihre Lizenz ist abgelaufen oder wurde deaktiviert. Bitte den Support kontaktieren.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Ihre Lizenz ist abgelaufen oder Ihre eindeutige ID wurde aufgrund einer Änderung an Ihrem System aktualisiert. Bitte den Support kontaktieren",
-    "MESSENGER_DISABLED": "Internes Messaging für diesen Benutzer nicht aktiviert",
+    "EXPIRATION_REASON_MESSAGE_GRAY": "Ihre Lizenz ist abgelaufen oder wurde deaktiviert. Kontaktieren Sie xCALLY Motion Support Team.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Die eindeutige ID Ihres Rechners wurde aufgrund einer Änderung Ihres Systems aktualisiert. Kontaktieren Sie xCALLY Motion Support Team, das sowohl Ihren alten als auch Ihren neuen UUID sendet.",
+    "MESSENGER_DISABLED": "Das interne Messaging ist für diesen Agenten deaktiviert!",
     "WARNING": "Warnung"
   }
 }
index 6eb58fc..1d7248b 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Passwort zurücksetzen",
-    "EMAIL_ADRESS": "E-Mail Adresse",
-    "PASSWORD": "Passwort",
-    "PASSWORD_CONFIRM": "Passwort bestätigen",
-    "UPDATE_PASSWORD": "Passwort zurücksetzen",
+    "TITLE": "Ihr Kennwort zurücksetzen",
+    "EMAIL_ADRESS": "E-mail Adresse",
+    "PASSWORD": "Kennwort",
+    "PASSWORD_CONFIRM": "Kennwort (bestätigen)",
+    "UPDATE_PASSWORD": "Kennwort zurücksetzen",
     "GO_BACK": "Zurück zum Login",
-    "PASSWORD_RESET": "Passwort zurücksetzen",
-    "PASSWORD_RESET_MESSAGE": "Das Passwort wurde erfolgreich zurückgesetzt. Sie können sich nun erneut anmelden",
-    "PASSWORD_RESET_ERROR": "Fehler beim Zurücksetzen des Passwortes",
+    "PASSWORD_RESET": "Kennwort zurücksetzen",
+    "PASSWORD_RESET_MESSAGE": "Ihr Passwort wurde korrekt zurückgesetzt wurde, können Sie sich jetzt!",
+    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
     "ERRORS": {
-      "EMAIL_REQUIRED": "E-Mail Adresse erfoderlich",
-      "EMAIL_MUST_VALID": "E-Mail Adresse ungültig",
-      "PASSWORD_REQUIRED": "Passwort erforderlich",
+      "EMAIL_REQUIRED": "Im Feld \"E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse",
+      "PASSWORD_REQUIRED": "Kennwort Feld ist erforderlich.",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein.",
-      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, Minimum von 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
+      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, mit einem Minimum von 1 Kleinbuchstaben, Großbuchstaben, 1 numerisches und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index b6abdf2..a399ee6 100644 (file)
@@ -1,11 +1,11 @@
 {
   "TOOLBAR": {
-    "TOGGLE_NAVIGATION": "Navigation umschalten",
-    "TOGGLE_NAVIGATION_FOLD": "Navigation einklappen",
-    "TOGGLE_NAVIGATION_MODE": "Navigation Moduswechsel",
+    "TOGGLE_NAVIGATION": "Navigation wechseln",
+    "TOGGLE_NAVIGATION_FOLD": "Navigation wechseln Fach",
+    "TOGGLE_NAVIGATION_MODE": "Navigation Modus umschalten",
     "SEARCH": "Suche",
-    "USER_SETTINGS": "Nutzereinstellungen",
-    "TOGGLE_QUICK_PANEL": "Schnelles Panel umschalten",
+    "USER_SETTINGS": "Benutzereinstellungen",
+    "TOGGLE_QUICK_PANEL": "Um schnelle Panel",
     "ENGLISH": "Englisch",
     "ITALIAN": "Italienisch",
     "FRENCH": "Französisch",
     "CHINESESIMPLIFIED": "Vereinfachtes Chinesisch",
     "CHINESETRADITIONAL": "Traditionelles Chinesisch",
     "DUTCH": "Niederländisch",
-    "FINNISH": "Finnisch",
+    "FINNISH": "Finnische",
     "DANISH": "Dänisch",
     "PORTUGUESE": "Portugiesisch",
     "NORWEGIAN": "Norwegisch",
     "HINDI": "Hindi",
     "TURKISH": "Türkisch",
     "PERSIAN": "Persisch",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "PREVIEW": "Vorschau",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "NEW_PASSWORD": "Neues Passwort",
     "OLD_PASSWORD": "Altes Passwort",
     "SAVE": "Speichern",
     "TRIAL_VERSION": "Testversion",
-    "SOMEONE_LOGGED_YOU_OUT": "Sie wurden von einem anderen Benutzer abgemeldet. Erneut anmelden?",
+    "SOMEONE_LOGGED_YOU_OUT": "Jemand eingeloggt haben, möchten Sie angemeldet bleiben?",
     "STAY_LOGGED": "Angemeldet bleiben",
     "WARNING": "Warnung",
     "PAUSE": "Pause",
-    "RESUME": "Fortsetzen",
-    "NO_PAUSES_AVAILABLE": "Keine Pausen verfügbar",
-    "LATVIAN": "Lettisch",
+    "RESUME": "Lebenslauf",
+    "NO_PAUSES_AVAILABLE": "Keine Pausen zur Verfügung",
+    "LATVIAN": "Lettische",
     "POLISH": "Polnisch",
     "ERRORS": {
       "FIELD_REQUIRED": "Pflichtfeld",
       "PASSWORD_REQUIRED": "Pflichtfeld",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten.",
-      "PASSWORD_OLDPASSWORD_MATCH": "Die Passwörter stimmen nicht überein"
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
+      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden"
     },
     "RESETPASSWORD": "Passwort zurücksetzen",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bis zum Ablauf des Passwortes",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bevor Ihr Passwort abläuft",
     "BROWSER_COMPATIBILITY": "Browserkompatibilität [Chrome, Opera, Safari]",
     "RECORDING": "Aufzeichnung",
-    "INVALID_LICENSE": "Lizenz ungültig",
+    "INVALID_LICENSE": "Ungültige Lizenz",
     "BROWSER": "Browser",
     "OS": "Betriebssystem",
-    "REQUIREMENTS": "Anforderungen",
+    "REQUIREMENTS": "Bedarf",
     "LICENSE": "Lizenz",
     "HTTPS": "HTTPS",
     "WEBRTCSUPPORT": "WebRTC-Unterstützung",
-    "REGISTERED": "Registriert",
+    "REGISTERED": "Eingetragen",
     "NOT_REGISTERED": "Nicht registriert",
-    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC-Lizenz ist nicht aktiviert",
-    "ATTENDED_TRANSFER": "Warmer Transfer",
+    "WEBRTC_LICENSE_NOT_ENABELD": "Die WebRTC-Lizenz ist nicht aktiviert",
+    "ATTENDED_TRANSFER": "Begleiteter Tranfer",
     "TRANSFER": "Transfer",
     "TARGET": "Ziel",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "FILENAME": "Dateiname",
     "STATUS": "Status",
     "ACTIONS": "Aktionen",
-    "SPEAKER": "Lautsprecher",
-    "RINGING": "Klingeln",
+    "SPEAKER": "Redner",
+    "RINGING": "Klingelton",
     "MICROPHONE": "Mikrofon",
     "PROFILE": "Profil",
-    "SERVICES": "Dienste",
+    "SERVICES": "Dienstleistungen",
     "AUDIO": "Audio",
     "FULLNAME": "Vollständiger Name",
     "NAME": "Name",
     "INTERNAL": "Intern",
-    "RINGINGDEVICE": "Klingeln auf Gerät",
-    "SPEAKERDEVICE": "Verwendeter Lautsprecher",
-    "MICROPHONEDEVICE": "Verwendetes Mikrofon",
+    "RINGINGDEVICE": "Klingelgerät",
+    "SPEAKERDEVICE": "Lautsprechergerät",
+    "MICROPHONEDEVICE": "Mikrofon Gerät",
     "CHANGEPASSWORD": "Passwort ändern",
-    "SETTINGS": "Einstellungen",
+    "SETTINGS": "die Einstellungen",
     "AUTOANSWER": "Automatische Antwort",
     "INDONESIAN": "Indonesisch",
     "ARABIC": "Arabisch",
-    "CALL": "Anrufen",
+    "CALL": "Anruf",
     "PREFIXES": "Präfixe",
     "HEBREW": "Hebräisch",
-    "ESTONIAN": "Estnisch",
+    "ESTONIAN": "estnisch",
     "CZECH": "Tschechisch",
-    "BRAZILIAN": "Brasilianisch",
-    "CONFERENCE": "Konferenz mit 2 aktiven Sitzungen",
-    "CHANGE_LANGUAGE_MESSAGE": "Bitte Seite aktualisieren, um Änderungen zu übernehmen",
+    "BRAZILIAN": "Brasilianer",
+    "CONFERENCE": "Konferenz mit 2 aktiven Sessions",
+    "CHANGE_LANGUAGE_MESSAGE": "Denken Sie daran, die Seite zu aktualisieren, um die RTL-Unterstützung anzuwenden (falls aktiviert).",
     "CHANGE_LANGUAGE_TITLE": "Sprache ändern",
     "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Keine Audiogeräte verfügbar",
     "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Kein Mikrofon vorhanden",
     "WEBRTC_SPEAKER_NOT_AVAILABLE": "Kein Lautsprecher verfügbar",
     "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "LITHUANIAN": "Litauisch",
+    "LITHUANIAN": "litauisch",
     "NOTIFICATION_TITLE": "Neue Benachrichtigung von {{Absender}}",
     "NOTIFICATION_TITLE_RECIPIENT": "an {{Empfänger}}",
     "USER_FORCE_LOGOUT": "{{ip}} hat sich mit Ihren Anmeldeinformationen angemeldet.\nMehrfachanmeldungen sind nicht zulässig",
index 39a5cef..945c4cb 100644 (file)
     "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}}"
-    }
+    "SESSION_TIMEOUT": "The session will be automatically closed after 60 seconds"
   }
 }
index 25ff681..adb2f85 100644 (file)
     "NOTIFICATION_TITLE_RECIPIENT": "a {{recipient}}",
     "USER_FORCE_LOGOUT": "{{ip}} si è connesso con le tue credenziali. \nNon sono consentite connessioni multiple",
     "LOGOUT": "Disconnettersi",
-    "SESSION_TIMEOUT": "La sessione verrà chiusa automaticamente dopo 60 secondi",
-    "HELP": {
-      "PREVIEW_RECALLME": "Questa è una chiamata Recall Me programmata per il {{date}}"
-    }
+    "SESSION_TIMEOUT": "La sessione verrà chiusa automaticamente dopo 60 secondi"
   }
 }
index af09f78..3278422 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.def00a0c.css">
 
-  <link rel="stylesheet" href="styles/app.e700e376.css">
+  <link rel="stylesheet" href="styles/app.0b303223.css">
 
   <!-- <link href='//fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700italic,700,900,900italic'
               rel='stylesheet' type='text/css'> -->
@@ -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.cc966f7e.js"></script>
+  <script src="scripts/app.5edda6d7.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 53%
rename from public/scripts/app.cc966f7e.js
rename to public/scripts/app.5edda6d7.js
index 3c20fe7..0df6105 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.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",controller:"AgentsChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",controller:"AgentsFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",controller:"AgentsMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",controller:"AgentsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",controller:"AgentsOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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";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",controller:"AgentsSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",controller:"AgentsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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})}],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",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",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 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,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.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={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.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!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.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 f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.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 p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{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:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(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:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(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 f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],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()})})}.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}}).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){var t=this;function a(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=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(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,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],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";angular.module("app.core").factory("realtimeManager",function(){var 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){return!_.every([e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause],function(e){return e})}return{updateBusyCounter:s,isPartialPause:o,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?o(e)||!e[a+"Pause"]||t.paused?!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)}}})}(),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",{},{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("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){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("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(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],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"]),{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(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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",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&&T(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(e){if(e){var n="loading...";if("in"!==e.direction)return e.UserId?e.sender=h.usersMap?h.usersMap[e.UserId]:n:e.sender="System";var t=e.Contact||e.contact;return e.sender=t?t.firstName||"Anonymous":n}}function T(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 I(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 C(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){e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]};for(var n=0;n<h.messages.count;n++)S(h.messages.rows[n]);return 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&&C(),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):I()))}))},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&&T(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&&T(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&&T(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&&T(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=I,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;T(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>");T({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):(S(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=C,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)S(e.rows[n]),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(C(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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",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;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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",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:"bull"===c.channel?"voice":c.channel,type:c.direction,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:c.direction,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.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),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_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),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(){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(){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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",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){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.voiceRecording=c||e.params.voiceRecording||{},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.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.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","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){var f=this;function b(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 A(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 E(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()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{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="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.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},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.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()})})},f.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()})})},f.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(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.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:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.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){f.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){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",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(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=[],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!":""}),v(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=[],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!":""}),v(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!"}),v(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=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.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.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(){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",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"}],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 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"},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 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)" ng-disabled="!vm_pb.registered">\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              <div layout="row" layout-align="space-between center">\n                <md-switch 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/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            <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              <form name="scriptForm" flex="100" novalidate>\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              </form>\n            </div>\n\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">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\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/agents/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="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.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          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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        <md-input-container ng-if="!vm.dialerCall || 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    </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>{{ message.sender }}</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>{{ message.sender }}</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>{{ message.sender }}</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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.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          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" 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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.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          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" 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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.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          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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/agents/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="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.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          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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/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/agents/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="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.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          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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              {{ (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\'">None</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              {{ (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\'">None</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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\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.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\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.order.length">\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="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" 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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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" 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" 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" 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" 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 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 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 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 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/agents/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="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.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          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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-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\'" 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\'" 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      <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\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\'" 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\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              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" 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              <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\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                <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 ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.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.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></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 translate="{{lang.translation}}">{{lang.title}}</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.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",controller:"AgentsChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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"):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",controller:"AgentsFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",controller:"AgentsMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",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",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",controller:"AgentsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",controller:"AgentsOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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";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",controller:"AgentsSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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,t,a){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","Auth",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",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",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",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",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","Auth",function(e,n){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","msApiProvider","msNavigationServiceProvider"],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",controller:"AgentsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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})}],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",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",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})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",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 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,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.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={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.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!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.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 f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.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 p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{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:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(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:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(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 f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],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(s,o,e,t){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 l(n){return e[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return 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=e[r.selectedField.options.searchFields[n]]||"";e.displayValue+=t+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return o.when(n)}).catch(function(e){t.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()})})}function a(){!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 i(){"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),a()}function d(){var e=m();r.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),p(),r.pendingCondition.style=null,r.pendingCondition=void 0}function m(){return{name:r.selectedField.name,operator:s.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:u(r.value),displayEndValue:u(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||"name";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 u(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 p(){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=d,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=c,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(){{if(r.selectedField.options.routes&&Array.isArray(r.selectedField.options.routes)){var e=angular.copy(r.selectedField.options.routes),n=_.map(e,function(e){return l(e)});return o.all(n).then(function(e){r.selectedField.values=_.flatten(e)})}var t=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var a=0;a<Object.keys(t.params).length;a++){var i=Object.keys(t.params)[a];"@autocomplete"===t.params[i]&&(t.params[i]=r.searchText)}if(!r.selectedField.values)return l(t).then(function(e){r.selectedField.values=_.flatten(e)});r.selectedField.values.forEach(function(e){e.translate&&(e.name=s.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})));a()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?i():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),a()):a()},r.checkRange=i,r.handleKeyboardAction=function(){r.pendingCondition?c():d()}}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(u,t,p,e,a,i,n,g,s,v,h,f,b,o,A){var E=this,r=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],l=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function d(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:g.instant("TOOLBAR.WARNING"),msg:g.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:g.instant("TOOLBAR.WARNING"),msg:g.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(){new Promise(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:g.instant("TOOLBAR.WARNING"),msg:g.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:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){l.webrtc=_.pick(E.conf,r),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(l))}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 c(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",u.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function m(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 x(){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 N(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 D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(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(l.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:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.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();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(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&&p(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 m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(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&&P(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()})})}.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),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.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)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(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)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(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)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(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)),o.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(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)),o.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,u.$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 m(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){c()})}},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 m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(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,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):c():c()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),c())},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(){x()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){x()},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=x,u.$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}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!1)))})}),u.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),u.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$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 m(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:N(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:N(E.sessions[t],"requestFailed","top right",3e3)}})})}),u.$on("$destroy",function(){console.debug("$destroy event fired"),o.removeAllListeners("webbar:originate"),o.removeAllListeners("webbar:hangup"),o.removeAllListeners("webbar:answer"),o.removeAllListeners("webbar:hold"),o.removeAllListeners("webbar:unhold"),o.removeAllListeners("webbar:transfer"),o.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","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){var t=this;function a(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=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(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,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],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 Promise.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";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;if(n)return 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("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("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"}}),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",{},{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("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){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("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(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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(n){var a={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(a,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){return n[a[e]].describe().$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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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"]),{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(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,_.pick(e.toJSON(),_.keys(n))),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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"first"}}}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"second"}}}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"third"}}}}]},d.tag.get().$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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("chat_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userChatQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userChatQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.chatPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.chatPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("chat_queue:save"),o.removeAllListeners("userChatQueue:remove"),o.removeAllListeners("userChatQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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(){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,c.ListId=c.contact.ListId||void 0):(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!":""}),m()}).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!":""}),m()}).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!":""}),m()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=m,c.getCustomFields=function(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});l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}},c.getDateFromString=function(e){return null===e?void 0:new Date(e)}}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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,i,s,o,e,t,a,r,l,d,c,m){var u=this;function p(){var e=u.selectedDisposition?u.selectedDisposition.name.toLowerCase():void 0;return{id:u.call.uniqueid,disposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,secondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,thirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?l.getCurrentUser().id:null,OwnerId:l.getCurrentUser().id}}function g(e){n.hide([e,u.autoClose])}u.isReschedule=!1,u.recallme=!1,u.queueCampaign=void 0,u.queueCampaigns={count:0,rows:[]},u.dispositions=_.orderBy(_.concat([],e.rows,t.rows),["name"],["asc"]),u.contact=r,u.call=a,u.note=u.call.note||void 0,u.dialerCall=!1,u.hasBlackLists=!1,u.availableCalls=c,u.autoClose=m,u.hopper={minDate:new Date,dateTime:new Date},u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]?(u.dialerCall=!0,o.voiceQueue.getBlackLists({id:u.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(u.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()})})):o.user.getQueues({id:l.getCurrentUser().id,fields:"id,name,dialActive",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){u.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.onDispositionChange=function(e){switch(e){case"first":u.selectedDisposition=u.firstLevelDisposition,u.anySecondLevelDisposition=_.some(u.dispositions,["ParentId",u.firstLevelDisposition.id]),u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.anyThirdLevelDisposition=!1;break;case"second":u.selectedDisposition=u.secondLevelDisposition,u.anyThirdLevelDisposition=_.some(u.dispositions,["ParentId",u.secondLevelDisposition.id]);break;case"third":u.selectedDisposition=u.thirdLevelDisposition}},u.clearDispositionSelection=function(e){"second"===e?(u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.selectedDisposition=u.firstLevelDisposition):"third"===e&&(u.thirdLevelDisposition=void 0,u.selectedDisposition=u.secondLevelDisposition)},u.saveDisposition=function(e){u.selectedDisposition=_.isNil(e)?u.selectedDisposition:{name:e},e&&(u.firstLevelDisposition=u.selectedDisposition);u.call.note=u.note,o.voiceCallReport.update({id:u.call.uniqueid,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,note:u.note,UserId:l.getCurrentUser().id,ContactId:u.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:u.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:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.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()})}),u.dialerCall&&(o.cmHopperFinal.update(p()).$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(p()).$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(u.selectedDisposition))g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"");else switch(u.selectedDisposition.name.toLowerCase()){case"blacklist":u.call&&u.call.variables&&u.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(u.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+u.selectedDisposition}),u.selectedDisposition=void 0}).then(function(e){e&&g(u.selectedDisposition?u.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()}),g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}(u.call.variables["xmd-voicequeueid"]);break;case"reschedule":u.isReschedule=!0,u.recallme=!1;break;case"recallme":u.isReschedule=!0,u.recallme=!0;break;default:g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}},u.closeDialog=function(){n.cancel()},u.saveReschedule=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:u.recallme?l.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:u.dialerCall?Number(u.call["xmd-voicequeueid"]):u.queueCampaign?u.queueCampaign.id:null,scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:u.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){u.dialerCall&&o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:u.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(u.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).finally(function(){u.disable=!1,g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$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(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(c.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function u(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&E(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)g(c.chatInteractions.rows[n])}function p(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,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function v(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 h(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(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&&p(c.query.page)}}function b(e){if(e){var n=_.find(c.chatInteractions.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(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 E(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||p()},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.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().$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"}],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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:m("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:m("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:m("third")}}]}}).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",f),l.on("chatInteraction:update",f),l.on("chatInteractionTags:save",b),l.on("chatMessage:save",A),l.on("chatMessage:update",A),l.on("user_has_chat_interactions:save",v),l.on("user_has_chat_interactions:remove",h),p(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&E()})},c.success=u,c.getChatInteractions=p,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=g,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,p())}).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().$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(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(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||g()},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)v(m.faxInteractions.rows[n])}function g(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,p).$promise}function v(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function h(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 f(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(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 g(m.query.page)}}function A(e){if(e){var n=_.find(m.faxInteractions.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(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.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().$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"}],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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).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",b),l.on("faxInteraction:update",b),l.on("faxInteractionTags:save",A),l.on("faxMessage:save",E),l.on("faxMessage:update",E),l.on("user_has_fax_interactions:save",h),l.on("user_has_fax_interactions:remove",f),g(m.query.page)})},m.success=p,m.getFaxInteractions=g,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=v,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,g())}).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(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(u.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&S(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)h(u.mailInteractions.rows[n])}function g(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,p).$promise}function v(e,n){o.$parent.vm.addInteractionTab("mail",n)}function h(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 f(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 b(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function A(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&&g(u.query.page)}}function E(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function y(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 S(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||g()},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.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().$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"}],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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:s("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:s("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:s("third")}}]}}).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",A),i.on("mailInteraction:update",A),i.on("mailInteractionTags:save",E),i.on("mailMessage:save",y),i.on("mailMessage:update",y),i.on("user_has_mail_interactions:save",f),i.on("user_has_mail_interactions:remove",b),g(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&S()})},u.success=p,u.getMailInteractions=g,u.showMailInteraction=v,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=h,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,g())}).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,v(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().$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(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&y(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)v(m.openchannelInteractions.rows[n])}function g(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,p).$promise}function v(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(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 f(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(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&&g(m.query.page)}}function A(e){if(e){var n=_.find(m.openchannelInteractions.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(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 y(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},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.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().$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"}],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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).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",b),l.on("openchannelInteraction:update",b),l.on("openchannelInteractionTags:save",A),l.on("openchannelMessage:save",E),l.on("openchannelMessage:update",E),l.on("user_has_openchannel_interactions:save",h),l.on("user_has_openchannel_interactions:remove",f),g(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&y()})},m.success=p,m.getOpenchannelInteractions=g,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=v,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,g())}).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(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&y(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)v(m.smsInteractions.rows[n])}function g(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,p).$promise}function v(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(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 f(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(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&&g(m.query.page)}}function A(e){if(e){var n=_.find(m.smsInteractions.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(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 y(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},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.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().$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"}],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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).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",b),l.on("smsInteraction:update",b),l.on("smsInteractionTags:save",A),l.on("smsMessage:save",E),l.on("smsMessage:update",E),l.on("user_has_sms_interactions:save",h),l.on("user_has_sms_interactions:remove",f),g(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&y()})},m.success=p,m.getSmsInteractions=g,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=v,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,g())}).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().$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(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&y(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)v(m.whatsappInteractions.rows[n])}function g(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,p).$promise}function v(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(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 f(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(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&&g(m.query.page)}}function A(e){if(e){var n=_.find(m.whatsappInteractions.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(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 y(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},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.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().$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"}],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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).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",b),l.on("whatsappInteraction:update",b),l.on("whatsappInteractionTags:save",A),l.on("whatsappMessage:save",E),l.on("whatsappMessage:update",E),l.on("user_has_whatsapp_interactions:save",h),l.on("user_has_whatsapp_interactions:remove",f),g(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&y()})},m.success=p,m.getWhatsappInteractions=g,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=v,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,g())}).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").filter("secToTime",function(){return function(e){return new Date(1e3*e).toISOString().substr(11,8)}}).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,_.pick(e.toJSON(),_.keys(n))),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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"first"}}}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"second"}}}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"third"}}}}]},d.tag.get().$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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("fax_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userFaxQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userFaxQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.faxPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.faxPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("fax_queue:save"),o.removeAllListeners("userFaxQueue:remove"),o.removeAllListeners("userFaxQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"first"}}}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"second"}}}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"third"}}}}]},d.tag.get().$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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("mail_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userMailQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userMailQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.mailPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.mailPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("mail_queue:save"),o.removeAllListeners("userMailQueue:remove"),o.removeAllListeners("userMailQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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=2,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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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",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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",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){var m=this,u=["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"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},m.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}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,u)),_.isNil(e.startPredictive)&&(n.startPredictive=void 0))}),o.on("userVoiceQueueRt:save",function(e){var n=_.find(m.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueueRt:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"first"}}}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"second"}}}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"third"}}}}]},d.tag.get().$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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("openchannel_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userOpenchannelQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userOpenchannelQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.openchannelPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.openchannelPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("openchannel_queue:save"),o.removeAllListeners("userOpenchannelQueue:remove"),o.removeAllListeners("userOpenchannelQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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;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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("sms_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userSmsQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userSmsQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.smsPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.smsPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("sms_queue:save"),o.removeAllListeners("userSmsQueue:remove"),o.removeAllListeners("userSmsQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"first"}}}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"second"}}}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"third"}}}}]},d.tag.get().$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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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.agents=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="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.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",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],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.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],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.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.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:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.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");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=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="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.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){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.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","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,_.pick(e.toJSON(),_.keys(n))),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:"bull"===c.channel?"voice":c.channel,type:c.direction,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:c.direction,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.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),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_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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:"-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,_.pick(e.toJSON(),_.keys(n))),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()})})))):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"},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()})})}()}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(){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()})})))):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"},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()})})}()}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(){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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",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){var m=this,u=["loggedIn","available","waiting","talking","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting),_.merge(n,_.pick(e,u)))}),o.on("userVoiceQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userVoiceQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueue:remove"),o.removeAllListeners("userVoiceQueue:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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.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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){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.voiceRecording=c||e.params.voiceRecording||{},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.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.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","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){var f=this;function b(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 A(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 E(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()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{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="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.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},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.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()})})},f.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()})})},f.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(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.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:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.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){f.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){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("whatsapp_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userWhatsappQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userWhatsappQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.whatsappPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.whatsappPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("whatsapp_queue:save"),o.removeAllListeners("userWhatsappQueue:remove"),o.removeAllListeners("userWhatsappQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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(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=[],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!":""}),v(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=[],d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.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.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!"}),v(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=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.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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"first"}}}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"second"}}}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"third"}}}}]},d.tag.get().$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.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(){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,_.pick(e.toJSON(),_.keys(n))),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",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"}],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,_.pick(e.toJSON(),_.keys(n))),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 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,l){var d=this;function c(e){_.isNil(e)&&s.cmHopper.update({id:d.preview.id,UserId:null}),a.hide()}d.customFieldsMap=l&&l.rows?_.mapValues(_.keyBy(l.rows,function(e){return"cf_"+e.id}),"name"):{},d.errors=[],d.hopperIds=[],d.preview=o,d.currentUser=r,d.originated=!1,d.disable=!1,d.disableGetContact=!1,d.hopperIds.push(d.preview.id),d.originatePreview=function(){d.originated=!0,d.disable=!0,_.isEmpty(d.preview)?(i.error({title:"Message",msg:"Contact not available"}),d.disable=!1,d.hopperIds=[],c(!0)):s.rpc.getVoiceQueuesPreview({id:d.preview.id}).$promise.then(function(e){c(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),c(!0)}).finally(function(){d.disable=!1,d.hopperIds=[]})},d.closeDialog=c,d.nextContact=function(){return d.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:d.hopperIds,direction:"next"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(d.disableGetContact=!1,d.hopperIds=[],404===e.status)d.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()})})},d.previousContact=function(){if(d.disableGetContact=!0,1<d.hopperIds.length){var e=_.without(d.hopperIds,d.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(d.hopperIds,function(e){return e==d.preview.id}),d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e)}).catch(function(e){if(404===e.status)d.hopperIds=[d.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){d.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 d.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()})})}},d.getFirstAvailableContact=function(){return d.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[d.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"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.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(){d.disableGetContact=!1})},d.isCustomField=function(e){return _.startsWith(e,"cf_")},d.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)},d.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){d.originated||s.cmHopper.update({id:d.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","currentUser","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"},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&&T.currentUser.name===e.membername){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 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)" ng-disabled="!vm_pb.registered">\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              <div layout="row" layout-align="space-between center">\n                <md-switch 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/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            <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              <form name="scriptForm" flex="100" novalidate>\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              </form>\n            </div>\n\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">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\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" style="width:200px">{{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/agents/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="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.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          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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-init="vm.getCustomFields(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\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        </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">\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 mr-0">\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-card-header>\n            <md-divider></md-divider>\n            <md-card-content>\n              <div layout="row" layout-align="end center" class="reload-container">\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"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </div>\n              <div layout="column" layout-align="space-between start" class="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="mr-8">\n                  </md-icon>\n                  <span class="h1" 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"></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"></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"></md-icon>\n                  Extra: {{call.variables.extravar}}\n                </div>\n              </div>\n              <div layout="row" layout-align="end center">\n                <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised">\n                  {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                </md-button>\n              </div>\n            </md-card-content>\n          </md-card>\n          <div flex layout="row" layout-align="end 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        <md-input-container ng-if="!vm.dialerCall" 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              {{ queueCampaign.name }} ({{ queueCampaign.dialActive ? \'Active\' : \'Not Active\' }})</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    </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              <md-card class="tooltip-preview-text" ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}">\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" style="width:200px">{{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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.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          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" 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" style="width:200px">{{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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.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          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" 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\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.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          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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" style="width:200px">{{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/agents/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="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.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          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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/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/agents/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="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.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          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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" style="width:200px">{{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 ng-if="vm.table == \'users\' || vm.table == \'agents\'" 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 && (vm.table == \'users\' || vm.table == \'agents\')"><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 ">{{ vm.arrayshowWebBar[agent.showWebBar].option }}</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\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\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="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\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\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\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\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\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 == \'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)" 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  <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-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 == \'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-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.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-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 == \'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-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" style="width:200px">{{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" style="width:200px">{{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" 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" 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" style="width:200px">{{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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\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.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\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.order.length">\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="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" 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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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.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 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/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 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" 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" 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" 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" 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 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 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 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 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/agents/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="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\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\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.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          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\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'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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-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\'" 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\'" 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      <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\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\'" 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\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              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" 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              <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\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                <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 ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.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.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></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" style="width:200px">{{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 translate="{{lang.translation}}">{{lang.title}}</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">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" ng-if="vm.preview">\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" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\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 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
diff --git a/public/styles/app.0b303223.css b/public/styles/app.0b303223.css
new file mode 100644 (file)
index 0000000..9363192
--- /dev/null
@@ -0,0 +1 @@
+[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:absolute;top:0;right:0;bottom:0;left:0}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden}#layout-vertical-navigation #content-container #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content{padding:24px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.animate-slide-up{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-up.ng-enter{transform:translateY(100%);opacity:0}.animate-slide-up.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-up.ng-leave{transform:translateY(0);opacity:1}.animate-slide-up.ng-leave.ng-leave-active{transition-property:all;transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide-add-active,.animate-slide-up.ng-hide-remove-active{transition-property:all}.animate-slide-down{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-down.ng-enter{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-down.ng-leave{transform:translateY(0);opacity:1}.animate-slide-down.ng-leave.ng-leave-active{transition-property:all;transform:translateY(100%);opacity:0}.animate-slide-down.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-hide-add-active,.animate-slide-down.ng-hide-remove-active{transition-property:all}.animate-slide-left{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-left.ng-enter{transform:translateX(100%);opacity:0}.animate-slide-left.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-left.ng-leave{transform:translateX(0);opacity:1}.animate-slide-left.ng-leave.ng-leave-active{transition-property:all;transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide{transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide-add-active,.animate-slide-left.ng-hide-remove-active{transition-property:all}.animate-slide-right{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-right.ng-enter{transform:translateX(-100%);opacity:0}.animate-slide-right.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-right.ng-leave{transform:translateX(0);opacity:1}.animate-slide-right.ng-leave.ng-leave-active{transition-property:all;transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide{transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide-add-active,.animate-slide-right.ng-hide-remove-active{transition-property:all}.animate-fade-in-out{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-fade-in-out.ng-enter{opacity:0}.animate-fade-in-out.ng-enter.ng-enter-active{transition-property:all;opacity:1}.animate-fade-in-out.ng-leave{opacity:1}.animate-fade-in-out.ng-leave.ng-leave-active{transition-property:all;opacity:0}.animate-fade-in-out.ng-hide{opacity:0}.animate-fade-in-out.ng-hide-add-active,.animate-fade-in-out.ng-hide-remove-active{transition-property:all}@keyframes slide-in-left{0%{opacity:0;transform:translateX(-500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-bottom{0%{opacity:0;transform:translateY(200px)}65%{opacity:1;transform:translateY(0)}100%{transform:translateY(0)}}.animate-rotate{animation:rotate 1.75s linear infinite}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ps-container:hover .ps-in-scrolling{pointer-events:auto}.ps-container .ps-in-scrolling{pointer-events:auto}.ps-container>.ps-scrollbar-x-rail{background:0 0!important;margin:4px 0;height:4px;z-index:49}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{height:4px}.ps-container>.ps-scrollbar-y-rail{background:0 0!important;margin:4px 0;width:4px;z-index:49}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{width:4px}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-scroll{overflow:hidden!important}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general{position:fixed;width:100%;height:100%}#agent-general .agent-content{position:fixed;top:36px;bottom:0;left:0;right:0}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{visibility:hidden;width:500px;position:absolute;white-space:pre-line;left:100%;z-index:9999}#agent-general .tooltip-preview:hover .tooltip-preview-text{visibility:visible}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:200px}#agent-general md-card.call-info-card div.reload-container{position:relative}#agent-general md-card.call-info-card button.reload-button{position:absolute;right:-16px}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:350px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}#agent-general span.subject-text{width:500px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smtp-dialog{max-width:720px;width:720px}md-dialog.smtp-dialog md-dialog-content{display:block;position:relative}md-dialog.smtp-dialog md-toolbar .title{font-size:17px}md-dialog.smtp-dialog md-input-container textarea{min-height:150px}md-dialog.smtp-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smtp-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smtp-dialog .date-container{padding:16px 0 24px 0}md-dialog.smtp-dialog .error-list{font-size:13px}md-dialog.smtp-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smtp-dialog .error-list .error .message{font-weight:500}md-dialog.smtp-dialog .error-list .error .md-button{margin:0}md-dialog.smtp-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smtp-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
diff --git a/public/styles/app.e700e376.css b/public/styles/app.e700e376.css
deleted file mode 100644 (file)
index 3c36211..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}.word-break-all{word-break:break-all}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}#toasty.toasty-position-top-right{top:64px}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:absolute;top:0;right:0;bottom:0;left:0}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden}#layout-vertical-navigation #content-container #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content{padding:24px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.animate-slide-up{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-up.ng-enter{transform:translateY(100%);opacity:0}.animate-slide-up.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-up.ng-leave{transform:translateY(0);opacity:1}.animate-slide-up.ng-leave.ng-leave-active{transition-property:all;transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide-add-active,.animate-slide-up.ng-hide-remove-active{transition-property:all}.animate-slide-down{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-down.ng-enter{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-down.ng-leave{transform:translateY(0);opacity:1}.animate-slide-down.ng-leave.ng-leave-active{transition-property:all;transform:translateY(100%);opacity:0}.animate-slide-down.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-hide-add-active,.animate-slide-down.ng-hide-remove-active{transition-property:all}.animate-slide-left{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-left.ng-enter{transform:translateX(100%);opacity:0}.animate-slide-left.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-left.ng-leave{transform:translateX(0);opacity:1}.animate-slide-left.ng-leave.ng-leave-active{transition-property:all;transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide{transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide-add-active,.animate-slide-left.ng-hide-remove-active{transition-property:all}.animate-slide-right{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-right.ng-enter{transform:translateX(-100%);opacity:0}.animate-slide-right.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-right.ng-leave{transform:translateX(0);opacity:1}.animate-slide-right.ng-leave.ng-leave-active{transition-property:all;transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide{transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide-add-active,.animate-slide-right.ng-hide-remove-active{transition-property:all}.animate-fade-in-out{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-fade-in-out.ng-enter{opacity:0}.animate-fade-in-out.ng-enter.ng-enter-active{transition-property:all;opacity:1}.animate-fade-in-out.ng-leave{opacity:1}.animate-fade-in-out.ng-leave.ng-leave-active{transition-property:all;opacity:0}.animate-fade-in-out.ng-hide{opacity:0}.animate-fade-in-out.ng-hide-add-active,.animate-fade-in-out.ng-hide-remove-active{transition-property:all}@keyframes slide-in-left{0%{opacity:0;transform:translateX(-500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-bottom{0%{opacity:0;transform:translateY(200px)}65%{opacity:1;transform:translateY(0)}100%{transform:translateY(0)}}.animate-rotate{animation:rotate 1.75s linear infinite}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ps-container:hover .ps-in-scrolling{pointer-events:auto}.ps-container .ps-in-scrolling{pointer-events:auto}.ps-container>.ps-scrollbar-x-rail{background:0 0!important;margin:4px 0;height:4px;z-index:49}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{height:4px}.ps-container>.ps-scrollbar-y-rail{background:0 0!important;margin:4px 0;width:4px;z-index:49}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{width:4px}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-scroll{overflow:hidden!important}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#chat-chatWebsite .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#chat-chatWebsite .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#chat-chatWebsite .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#chat-chatWebsite .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#chat-chatWebsite .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#chat-chatWebsite .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#chat-chatWebsite .actionAppData{width:150px!important}}@media screen and (max-width:960px){#chat-chatWebsite .actionAppData{width:80px!important}}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general{position:fixed;width:100%;height:100%}#agent-general .agent-content{position:fixed;top:36px;bottom:0;left:0;right:0}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{visibility:hidden;width:500px;position:fixed;white-space:pre-line;left:28%;z-index:9999}#agent-general .tooltip-preview:hover .tooltip-preview-text{visibility:visible}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:220px}#agent-general md-card.call-info-card md-card-content,#agent-general md-card.call-info-card md-card-header{padding:10px!important}#agent-general md-card.call-info-card button.reload-button{padding:0;height:22px;width:auto}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:350px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}#agent-general span.subject-text{width:500px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#fax-faxAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#fax-faxAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#fax-faxAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#fax-faxAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#fax-faxAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#fax-faxAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#fax-faxAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#fax-faxAccount .actionAppData{width:80px!important}}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#mail-mailAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#mail-mailAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#mail-mailAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#mail-mailAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#mail-mailAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#mail-mailAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#mail-mailAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#mail-mailAccount .actionAppData{width:80px!important}}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#openchannel-openchannelAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#openchannel-openchannelAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#openchannel-openchannelAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#openchannel-openchannelAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#openchannel-openchannelAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#openchannel-openchannelAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#openchannel-openchannelAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#openchannel-openchannelAccount .actionAppData{width:80px!important}}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smtp-dialog{max-width:720px;width:720px}md-dialog.smtp-dialog md-dialog-content{display:block;position:relative}md-dialog.smtp-dialog md-toolbar .title{font-size:17px}md-dialog.smtp-dialog md-input-container textarea{min-height:150px}md-dialog.smtp-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smtp-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smtp-dialog .date-container{padding:16px 0 24px 0}md-dialog.smtp-dialog .error-list{font-size:13px}md-dialog.smtp-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smtp-dialog .error-list .error .message{font-weight:500}md-dialog.smtp-dialog .error-list .error .md-button{margin:0}md-dialog.smtp-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smtp-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#sms-smsAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#sms-smsAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#sms-smsAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#sms-smsAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#sms-smsAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#sms-smsAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#sms-smsAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#sms-smsAccount .actionAppData{width:80px!important}}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-inbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-inbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-inbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-inbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-inbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-inbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-inbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-inbound-route .actionAppData{width:80px!important}}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-internal-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-internal-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-internal-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-internal-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-internal-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-internal-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-internal-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-internal-route .actionAppData{width:80px!important}}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-outbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-outbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-outbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-outbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-outbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-outbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-outbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-outbound-route .actionAppData{width:80px!important}}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#whatsapp-whatsappAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#whatsapp-whatsappAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#whatsapp-whatsappAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#whatsapp-whatsappAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#whatsapp-whatsappAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#whatsapp-whatsappAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#whatsapp-whatsappAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#whatsapp-whatsappAccount .actionAppData{width:80px!important}}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-dialog-content .recall-me-info{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.12);min-height:64px;padding:8px 8px 8px 16px}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
index b116376..a820c80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb36=['bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','STRING','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]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','exports','getDataValue','contactManager','integration','motionbar','jscripty','urlForward','browser'];(function(_0xc6ea98,_0x1f0fe7){var _0x154999=function(_0x5c0555){while(--_0x5c0555){_0xc6ea98['push'](_0xc6ea98['shift']());}};_0x154999(++_0x1f0fe7);}(_0xbb36,0x90));var _0x6bb3=function(_0x3e39f3,_0x36fd03){_0x3e39f3=_0x3e39f3-0x0;var _0x364ec7=_0xbb36[_0x3e39f3];return _0x364ec7;};'use strict';var Sequelize=require('sequelize');module[_0x6bb3('0x0')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x1ba019){return this[_0x6bb3('0x1')]('action');}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[[_0x6bb3('0x2'),_0x6bb3('0x3'),_0x6bb3('0x4'),_0x6bb3('0x5'),_0x6bb3('0x6'),_0x6bb3('0x7'),_0x6bb3('0x8'),_0x6bb3('0x9')]],'msg':_0x6bb3('0xa')}},'comment':_0x6bb3('0xa')},'data1':{'type':Sequelize[_0x6bb3('0xb')](0x1000),'comment':_0x6bb3('0xc')},'data2':{'type':Sequelize[_0x6bb3('0xb')](0x1000),'comment':_0x6bb3('0xd')},'data3':{'type':Sequelize[_0x6bb3('0xb')](0x1000),'comment':_0x6bb3('0xe')},'data4':{'type':Sequelize[_0x6bb3('0xb')](0x1000),'comments':_0x6bb3('0xf')},'data5':{'type':Sequelize['STRING'](0x1000),'comments':_0x6bb3('0x10')},'data6':{'type':Sequelize['STRING'],'comments':_0x6bb3('0x11')},'data7':{'type':Sequelize[_0x6bb3('0x12')],'comments':'urlForward[body]'}};
\ No newline at end of file
+var _0x7ee1=['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]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','sequelize','getDataValue','action','STRING','integration','motionbar','jscripty','urlForward','bot','script','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)]'];(function(_0x211b6c,_0x426260){var _0x674451=function(_0xefbc67){while(--_0xefbc67){_0x211b6c['push'](_0x211b6c['shift']());}};_0x674451(++_0x426260);}(_0x7ee1,0x8d));var _0x17ee=function(_0x19cf55,_0x1503cf){_0x19cf55=_0x19cf55-0x0;var _0x3271f5=_0x7ee1[_0x19cf55];return _0x3271f5;};'use strict';var Sequelize=require(_0x17ee('0x0'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x549f74){return this[_0x17ee('0x1')](_0x17ee('0x2'));}},'action':{'type':Sequelize[_0x17ee('0x3')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0x17ee('0x4'),_0x17ee('0x5'),_0x17ee('0x6'),_0x17ee('0x7'),'browser',_0x17ee('0x8'),_0x17ee('0x9')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':_0x17ee('0xa')},'data1':{'type':Sequelize['STRING'](0x1000),'comment':_0x17ee('0xb')},'data2':{'type':Sequelize[_0x17ee('0x3')](0x1000),'comment':_0x17ee('0xc')},'data3':{'type':Sequelize['STRING'](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':_0x17ee('0xd')},'data5':{'type':Sequelize['STRING'](0x1000),'comments':_0x17ee('0xe')},'data6':{'type':Sequelize[_0x17ee('0x3')],'comments':_0x17ee('0xf')},'data7':{'type':Sequelize[_0x17ee('0x10')],'comments':'urlForward[body]'}};
\ No newline at end of file
index 1d6c127..31befa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf7e=['bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','reject','save','update','then','destroy','stack','name','body','Action','find','params','catch','eml-format','fast-json-patch','request-promise','moment'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xcf7e,0xa8));var _0xecf7=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xcf7e[_0x5f1391];return _0x50ebe3;};'use strict';var emlformat=require(_0xecf7('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xecf7('0x1'));var rp=require(_0xecf7('0x2'));var moment=require(_0xecf7('0x3'));var BPromise=require(_0xecf7('0x4'));var Mustache=require(_0xecf7('0x5'));var util=require('util');var path=require('path');var sox=require(_0xecf7('0x6'));var csv=require(_0xecf7('0x7'));var ejs=require(_0xecf7('0x8'));var fs=require('fs');var fs_extra=require(_0xecf7('0x9'));var _=require(_0xecf7('0xa'));var squel=require(_0xecf7('0xb'));var crypto=require('crypto');var jsforce=require(_0xecf7('0xc'));var deskjs=require(_0xecf7('0xd'));var toCsv=require(_0xecf7('0x7'));var querystring=require('querystring');var Papa=require(_0xecf7('0xe'));var Redis=require('ioredis');var authService=require(_0xecf7('0xf'));var qs=require(_0xecf7('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xecf7('0x11'))('api');var utils=require(_0xecf7('0x12'));var config=require(_0xecf7('0x13'));var licenseUtil=require(_0xecf7('0x14'));var db=require(_0xecf7('0x15'))['db'];function respondWithStatusCode(_0x4e56cc,_0x42a5c1){_0x42a5c1=_0x42a5c1||0xcc;return function(_0x440fe5){if(_0x440fe5){return _0x4e56cc[_0xecf7('0x16')](_0x42a5c1);}return _0x4e56cc[_0xecf7('0x17')](_0x42a5c1)[_0xecf7('0x18')]();};}function respondWithResult(_0x5a1e17,_0x2f9e80){_0x2f9e80=_0x2f9e80||0xc8;return function(_0x3496b0){if(_0x3496b0){return _0x5a1e17[_0xecf7('0x17')](_0x2f9e80)[_0xecf7('0x19')](_0x3496b0);}};}function respondWithFilteredResult(_0x25131c,_0x121e6c){return function(_0x51f42c){if(_0x51f42c){var _0x30498a=typeof _0x121e6c['offset']===_0xecf7('0x1a')&&typeof _0x121e6c[_0xecf7('0x1b')]==='undefined';var _0x209825=_0x51f42c[_0xecf7('0x1c')];var _0x164aea=_0x30498a?0x0:_0x121e6c[_0xecf7('0x1d')];var _0x2c1c8f=_0x30498a?_0x51f42c[_0xecf7('0x1c')]:_0x121e6c[_0xecf7('0x1d')]+_0x121e6c[_0xecf7('0x1b')];var _0x43fc1e;if(_0x2c1c8f>=_0x209825){_0x2c1c8f=_0x209825;_0x43fc1e=0xc8;}else{_0x43fc1e=0xce;}_0x25131c[_0xecf7('0x17')](_0x43fc1e);return _0x25131c[_0xecf7('0x1e')]('Content-Range',_0x164aea+'-'+_0x2c1c8f+'/'+_0x209825)['json'](_0x51f42c);}return null;};}function patchUpdates(_0x1b0fdb){return function(_0x44042d){try{jsonpatch['apply'](_0x44042d,_0x1b0fdb,!![]);}catch(_0x3692d9){return BPromise[_0xecf7('0x1f')](_0x3692d9);}return _0x44042d[_0xecf7('0x20')]();};}function saveUpdates(_0x137c7b,_0x6a7c7c){return function(_0x3f2d9d){if(_0x3f2d9d){return _0x3f2d9d[_0xecf7('0x21')](_0x137c7b)[_0xecf7('0x22')](function(_0x2f0bb1){return _0x2f0bb1;});}return null;};}function removeEntity(_0x273426,_0x10fa28){return function(_0x5c6e85){if(_0x5c6e85){return _0x5c6e85[_0xecf7('0x23')]()['then'](function(){_0x273426[_0xecf7('0x17')](0xcc)[_0xecf7('0x18')]();});}};}function handleEntityNotFound(_0x2a066e,_0x4b9755){return function(_0x5797b6){if(!_0x5797b6){_0x2a066e[_0xecf7('0x16')](0x194);}return _0x5797b6;};}function handleError(_0x330eee,_0x15b0d3){_0x15b0d3=_0x15b0d3||0x1f4;return function(_0xc2e39b){logger['error'](_0xc2e39b[_0xecf7('0x24')]);if(_0xc2e39b['name']){delete _0xc2e39b[_0xecf7('0x25')];}_0x330eee['status'](_0x15b0d3)['send'](_0xc2e39b);};}exports[_0xecf7('0x21')]=function(_0x5c9b60,_0x43a730){if(_0x5c9b60[_0xecf7('0x26')]['id']){delete _0x5c9b60['body']['id'];}return db[_0xecf7('0x27')][_0xecf7('0x28')]({'where':{'id':_0x5c9b60[_0xecf7('0x29')]['id']}})[_0xecf7('0x22')](handleEntityNotFound(_0x43a730,null))[_0xecf7('0x22')](saveUpdates(_0x5c9b60[_0xecf7('0x26')],null))['then'](respondWithResult(_0x43a730,null))[_0xecf7('0x2a')](handleError(_0x43a730,null));};exports[_0xecf7('0x23')]=function(_0x24881d,_0x54bf3f){return db[_0xecf7('0x27')][_0xecf7('0x28')]({'where':{'id':_0x24881d[_0xecf7('0x29')]['id']}})['then'](handleEntityNotFound(_0x54bf3f,null))[_0xecf7('0x22')](removeEntity(_0x54bf3f,null))[_0xecf7('0x2a')](handleError(_0x54bf3f,null));};
\ No newline at end of file
+var _0x39f4=['to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','apply','save','update','then','destroy','error','stack','name','send','body','Action','params','catch','find','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','crypto','desk.js'];(function(_0x286f1d,_0x563563){var _0x10164a=function(_0x3890d8){while(--_0x3890d8){_0x286f1d['push'](_0x286f1d['shift']());}};_0x10164a(++_0x563563);}(_0x39f4,0x192));var _0x439f=function(_0x347252,_0x36b640){_0x347252=_0x347252-0x0;var _0x35d9f6=_0x39f4[_0x347252];return _0x35d9f6;};'use strict';var emlformat=require(_0x439f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x439f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x439f('0x2'));var moment=require(_0x439f('0x3'));var BPromise=require(_0x439f('0x4'));var Mustache=require(_0x439f('0x5'));var util=require(_0x439f('0x6'));var path=require('path');var sox=require(_0x439f('0x7'));var csv=require('to-csv');var ejs=require(_0x439f('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x439f('0x9'));var squel=require('squel');var crypto=require(_0x439f('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x439f('0xb'));var toCsv=require(_0x439f('0xc'));var querystring=require(_0x439f('0xd'));var Papa=require(_0x439f('0xe'));var Redis=require(_0x439f('0xf'));var authService=require(_0x439f('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x439f('0x11'));var hardwareService=require(_0x439f('0x12'));var logger=require(_0x439f('0x13'))(_0x439f('0x14'));var utils=require('../../config/utils');var config=require(_0x439f('0x15'));var licenseUtil=require(_0x439f('0x16'));var db=require(_0x439f('0x17'))['db'];function respondWithStatusCode(_0x1cb480,_0x33055f){_0x33055f=_0x33055f||0xcc;return function(_0x504754){if(_0x504754){return _0x1cb480[_0x439f('0x18')](_0x33055f);}return _0x1cb480[_0x439f('0x19')](_0x33055f)[_0x439f('0x1a')]();};}function respondWithResult(_0x5ea3fd,_0x2cb3ba){_0x2cb3ba=_0x2cb3ba||0xc8;return function(_0x4f3917){if(_0x4f3917){return _0x5ea3fd[_0x439f('0x19')](_0x2cb3ba)['json'](_0x4f3917);}};}function respondWithFilteredResult(_0x18fde6,_0x4abd1c){return function(_0x515009){if(_0x515009){var _0x53331c=typeof _0x4abd1c['offset']===_0x439f('0x1b')&&typeof _0x4abd1c['limit']===_0x439f('0x1b');var _0x239f78=_0x515009[_0x439f('0x1c')];var _0x47063b=_0x53331c?0x0:_0x4abd1c[_0x439f('0x1d')];var _0x4fc073=_0x53331c?_0x515009[_0x439f('0x1c')]:_0x4abd1c['offset']+_0x4abd1c[_0x439f('0x1e')];var _0x4148b1;if(_0x4fc073>=_0x239f78){_0x4fc073=_0x239f78;_0x4148b1=0xc8;}else{_0x4148b1=0xce;}_0x18fde6[_0x439f('0x19')](_0x4148b1);return _0x18fde6[_0x439f('0x1f')]('Content-Range',_0x47063b+'-'+_0x4fc073+'/'+_0x239f78)['json'](_0x515009);}return null;};}function patchUpdates(_0x305381){return function(_0x3e9a53){try{jsonpatch[_0x439f('0x20')](_0x3e9a53,_0x305381,!![]);}catch(_0x2134b3){return BPromise['reject'](_0x2134b3);}return _0x3e9a53[_0x439f('0x21')]();};}function saveUpdates(_0x9d2c66,_0x47b6ec){return function(_0x4cf4fe){if(_0x4cf4fe){return _0x4cf4fe[_0x439f('0x22')](_0x9d2c66)[_0x439f('0x23')](function(_0x1f76fd){return _0x1f76fd;});}return null;};}function removeEntity(_0x2efe69,_0x1b95ab){return function(_0x2c0fa1){if(_0x2c0fa1){return _0x2c0fa1[_0x439f('0x24')]()[_0x439f('0x23')](function(){_0x2efe69[_0x439f('0x19')](0xcc)[_0x439f('0x1a')]();});}};}function handleEntityNotFound(_0x4fdfcd,_0x426190){return function(_0xe1f409){if(!_0xe1f409){_0x4fdfcd[_0x439f('0x18')](0x194);}return _0xe1f409;};}function handleError(_0xf29afb,_0x2d0237){_0x2d0237=_0x2d0237||0x1f4;return function(_0x2ece41){logger[_0x439f('0x25')](_0x2ece41[_0x439f('0x26')]);if(_0x2ece41[_0x439f('0x27')]){delete _0x2ece41[_0x439f('0x27')];}_0xf29afb[_0x439f('0x19')](_0x2d0237)[_0x439f('0x28')](_0x2ece41);};}exports['update']=function(_0x1e9355,_0x4c598c){if(_0x1e9355[_0x439f('0x29')]['id']){delete _0x1e9355[_0x439f('0x29')]['id'];}return db[_0x439f('0x2a')]['find']({'where':{'id':_0x1e9355[_0x439f('0x2b')]['id']}})['then'](handleEntityNotFound(_0x4c598c,null))[_0x439f('0x23')](saveUpdates(_0x1e9355[_0x439f('0x29')],null))[_0x439f('0x23')](respondWithResult(_0x4c598c,null))[_0x439f('0x2c')](handleError(_0x4c598c,null));};exports[_0x439f('0x24')]=function(_0x343d15,_0x1e97fa){return db['Action'][_0x439f('0x2d')]({'where':{'id':_0x343d15[_0x439f('0x2b')]['id']}})[_0x439f('0x23')](handleEntityNotFound(_0x1e97fa,null))['then'](removeEntity(_0x1e97fa,null))[_0x439f('0x2c')](handleError(_0x1e97fa,null));};
\ No newline at end of file
index b3e146b..a66c83b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8ff=['moment','bluebird','request-promise','../../config/environment','exports','Action','tools_actions','../../config/logger'];(function(_0x3a4e51,_0x280273){var _0x5e7e1f=function(_0x2757d3){while(--_0x2757d3){_0x3a4e51['push'](_0x3a4e51['shift']());}};_0x5e7e1f(++_0x280273);}(_0xf8ff,0x127));var _0xff8f=function(_0x50e0b4,_0x1057f7){_0x50e0b4=_0x50e0b4-0x0;var _0x2fa8b0=_0xf8ff[_0x50e0b4];return _0x2fa8b0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xff8f('0x0'))('api');var moment=require(_0xff8f('0x1'));var BPromise=require(_0xff8f('0x2'));var rp=require(_0xff8f('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xff8f('0x4'));var attributes=require('./action.attributes');module[_0xff8f('0x5')]=function(_0x11ab12,_0x3c6a96){return _0x11ab12['define'](_0xff8f('0x6'),attributes,{'tableName':_0xff8f('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbc10=['rimraf','./action.attributes','exports','define','Action','tools_actions','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x5bb1ca,_0x284db8){var _0x3ab175=function(_0x3a1e5d){while(--_0x3a1e5d){_0x5bb1ca['push'](_0x5bb1ca['shift']());}};_0x3ab175(++_0x284db8);}(_0xbc10,0xa2));var _0x0bc1=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0xbc10[_0xbe200f];return _0x192597;};'use strict';var _=require(_0x0bc1('0x0'));var util=require('util');var logger=require(_0x0bc1('0x1'))(_0x0bc1('0x2'));var moment=require(_0x0bc1('0x3'));var BPromise=require(_0x0bc1('0x4'));var rp=require(_0x0bc1('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0bc1('0x6'));var config=require('../../config/environment');var attributes=require(_0x0bc1('0x7'));module[_0x0bc1('0x8')]=function(_0x495244,_0x5bb153){return _0x495244[_0x0bc1('0x9')](_0x0bc1('0xa'),attributes,{'tableName':_0x0bc1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2815f2b..65df8fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','Action,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x1a5c97,_0x47162e){var _0x9493dc=function(_0x553a7a){while(--_0x553a7a){_0x1a5c97['push'](_0x1a5c97['shift']());}};_0x9493dc(++_0x47162e);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0xc4aa[_0x3d42d8];return _0x27fc41;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('Action,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
+var _0xe14b=['../../config/environment','jayson/promise','client','http','then','info','Action,\x20%s,\x20%s','Action,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils'];(function(_0x4f4786,_0x39668f){var _0xbbf909=function(_0x20d675){while(--_0x20d675){_0x4f4786['push'](_0x4f4786['shift']());}};_0xbbf909(++_0x39668f);}(_0xe14b,0x93));var _0xbe14=function(_0x7cdaae,_0x55fb8d){_0x7cdaae=_0x7cdaae-0x0;var _0x39779f=_0xe14b[_0x7cdaae];return _0x39779f;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbe14('0x2'));var fs=require('fs');var Redis=require(_0xbe14('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbe14('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xbe14('0x5'));var jayson=require(_0xbe14('0x6'));var client=jayson[_0xbe14('0x7')][_0xbe14('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d9ade,_0x39387e,_0x196fca){return new BPromise(function(_0x566ae7,_0x50f909){return client['request'](_0x1d9ade,_0x196fca)[_0xbe14('0x9')](function(_0x6fceff){logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,'request\x20sent');logger['debug'](_0xbe14('0xc'),_0x39387e,_0xbe14('0xd'),JSON['stringify'](_0x6fceff));if(_0x6fceff[_0xbe14('0xe')]){if(_0x6fceff[_0xbe14('0xe')][_0xbe14('0xf')]===0x1f4){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x50f909(_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);}logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x566ae7(_0x6fceff['error']['message']);}else{logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,_0xbe14('0xd'));_0x566ae7(_0x6fceff[_0xbe14('0x11')]['message']);}})[_0xbe14('0x12')](function(_0xe9c3ec){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0xe9c3ec);_0x50f909(_0xe9c3ec);});});}
\ No newline at end of file
index 4dcf0c8..fc195b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce56=['isAuthenticated','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./action.controller','put'];(function(_0x3a7a9c,_0x24f7d6){var _0x59156e=function(_0x5bc930){while(--_0x5bc930){_0x3a7a9c['push'](_0x3a7a9c['shift']());}};_0x59156e(++_0x24f7d6);}(_0xce56,0xc8));var _0x6ce5=function(_0xffa198,_0x5a8940){_0xffa198=_0xffa198-0x0;var _0x1e4b50=_0xce56[_0xffa198];return _0x1e4b50;};'use strict';var multer=require(_0x6ce5('0x0'));var util=require(_0x6ce5('0x1'));var path=require(_0x6ce5('0x2'));var timeout=require(_0x6ce5('0x3'));var express=require(_0x6ce5('0x4'));var router=express[_0x6ce5('0x5')]();var fs_extra=require(_0x6ce5('0x6'));var auth=require(_0x6ce5('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6ce5('0x8'));router[_0x6ce5('0x9')]('/:id',auth[_0x6ce5('0xa')](),controller['update']);router[_0x6ce5('0xb')](_0x6ce5('0xc'),auth[_0x6ce5('0xa')](),controller[_0x6ce5('0xd')]);module[_0x6ce5('0xe')]=router;
\ No newline at end of file
+var _0x1d99=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','put','/:id','isAuthenticated','update','destroy','exports'];(function(_0x1e4dc4,_0x1dc0fd){var _0x1fa331=function(_0xa60c97){while(--_0xa60c97){_0x1e4dc4['push'](_0x1e4dc4['shift']());}};_0x1fa331(++_0x1dc0fd);}(_0x1d99,0xf0));var _0x91d9=function(_0x126f7a,_0xa66a83){_0x126f7a=_0x126f7a-0x0;var _0x484228=_0x1d99[_0x126f7a];return _0x484228;};'use strict';var multer=require(_0x91d9('0x0'));var util=require(_0x91d9('0x1'));var path=require(_0x91d9('0x2'));var timeout=require(_0x91d9('0x3'));var express=require(_0x91d9('0x4'));var router=express['Router']();var fs_extra=require(_0x91d9('0x5'));var auth=require(_0x91d9('0x6'));var interaction=require(_0x91d9('0x7'));var config=require(_0x91d9('0x8'));var controller=require(_0x91d9('0x9'));router[_0x91d9('0xa')](_0x91d9('0xb'),auth[_0x91d9('0xc')](),controller[_0x91d9('0xd')]);router['delete'](_0x91d9('0xb'),auth['isAuthenticated'](),controller[_0x91d9('0xe')]);module[_0x91d9('0xf')]=router;
\ No newline at end of file
index 7065cb8..ae80398 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeda8=['sequelize','exports','STRING','TEXT'];(function(_0x3dade6,_0x5dda7b){var _0x518a04=function(_0x9b01db){while(--_0x9b01db){_0x3dade6['push'](_0x3dade6['shift']());}};_0x518a04(++_0x5dda7b);}(_0xeda8,0x104));var _0x8eda=function(_0x352602,_0x3d8f96){_0x352602=_0x352602-0x0;var _0x4601b7=_0xeda8[_0x352602];return _0x4601b7;};'use strict';var Sequelize=require(_0x8eda('0x0'));module[_0x8eda('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x8eda('0x2')]},'parent':{'type':Sequelize[_0x8eda('0x2')]},'table':{'type':Sequelize[_0x8eda('0x2')]},'conditions':{'type':Sequelize[_0x8eda('0x3')]},'joins':{'type':Sequelize[_0x8eda('0x3')]}};
\ No newline at end of file
+var _0x7217=['sequelize','STRING','TEXT'];(function(_0x358e05,_0x167aed){var _0x549450=function(_0x485caf){while(--_0x485caf){_0x358e05['push'](_0x358e05['shift']());}};_0x549450(++_0x167aed);}(_0x7217,0x19e));var _0x7721=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x7217[_0x5ddb1c];return _0x354adc;};'use strict';var Sequelize=require(_0x7721('0x0'));module['exports']={'name':{'type':Sequelize[_0x7721('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x7721('0x1')]},'parent':{'type':Sequelize[_0x7721('0x1')]},'table':{'type':Sequelize[_0x7721('0x1')]},'conditions':{'type':Sequelize[_0x7721('0x2')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index ff768a1..f488be5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1103=['../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','offset','undefined','limit','count','set','json','reject','save','update','destroy','then','CustomReports','UserProfileResource','end','error','stack','name','send','index','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','type','options','AnalyticCustomReport','includeAll','include','findAll','rows','catch','params','find','create','user','get','role','Reports','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','preview','left_join','cross_join','SUM(%s)','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)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','condition','value','getFields','ValidationErrorItem','keyBy','select','from','table','MetricId','metric','field','format','replace','groupBy','order','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','foreignKey','conditions','clone','debug','Limited\x20Query:','sequelize','QueryTypes','SELECT','join','right_join','COUNT(%s)','group','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','function','output','web','fullPath','randomstring','generate','csv','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','toString','child_process','fork','savename','countTable','COUNT(*)','run','runReport','MIN(%s)','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','ioredis'];(function(_0x4cb04e,_0x272284){var _0x33eec0=function(_0x1accd8){while(--_0x1accd8){_0x4cb04e['push'](_0x4cb04e['shift']());}};_0x33eec0(++_0x272284);}(_0x1103,0x97));var _0x3110=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1103[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3110('0x0'));var zipdir=require(_0x3110('0x1'));var jsonpatch=require(_0x3110('0x2'));var rp=require(_0x3110('0x3'));var moment=require(_0x3110('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3110('0x5'));var util=require(_0x3110('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x3110('0x7'));var ejs=require(_0x3110('0x8'));var fs=require('fs');var fs_extra=require(_0x3110('0x9'));var _=require(_0x3110('0xa'));var squel=require(_0x3110('0xb'));var crypto=require(_0x3110('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x3110('0x7'));var querystring=require('querystring');var Papa=require(_0x3110('0xd'));var Redis=require(_0x3110('0xe'));var authService=require(_0x3110('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x3110('0x10'));var hardwareService=require(_0x3110('0x11'));var logger=require(_0x3110('0x12'))('api');var utils=require(_0x3110('0x13'));var config=require(_0x3110('0x14'));var licenseUtil=require(_0x3110('0x15'));var db=require('../../mysqldb')['db'];var dbH=require(_0x3110('0x16'))[_0x3110('0x17')];function respondWithStatusCode(_0x26b051,_0x10fdaa){_0x10fdaa=_0x10fdaa||0xcc;return function(_0x574b31){if(_0x574b31){return _0x26b051[_0x3110('0x18')](_0x10fdaa);}return _0x26b051['status'](_0x10fdaa)['end']();};}function respondWithResult(_0x3c2d82,_0x560483){_0x560483=_0x560483||0xc8;return function(_0x5b3998){if(_0x5b3998){return _0x3c2d82[_0x3110('0x19')](_0x560483)['json'](_0x5b3998);}};}function respondWithFilteredResult(_0x1fbf01,_0x1a042e){return function(_0x3651ed){if(_0x3651ed){var _0x3b6d3f=typeof _0x1a042e[_0x3110('0x1a')]===_0x3110('0x1b')&&typeof _0x1a042e[_0x3110('0x1c')]===_0x3110('0x1b');var _0x534c46=_0x3651ed[_0x3110('0x1d')];var _0x29ac8d=_0x3b6d3f?0x0:_0x1a042e[_0x3110('0x1a')];var _0x3157f2=_0x3b6d3f?_0x3651ed[_0x3110('0x1d')]:_0x1a042e[_0x3110('0x1a')]+_0x1a042e['limit'];var _0x26844a;if(_0x3157f2>=_0x534c46){_0x3157f2=_0x534c46;_0x26844a=0xc8;}else{_0x26844a=0xce;}_0x1fbf01[_0x3110('0x19')](_0x26844a);return _0x1fbf01[_0x3110('0x1e')]('Content-Range',_0x29ac8d+'-'+_0x3157f2+'/'+_0x534c46)[_0x3110('0x1f')](_0x3651ed);}return null;};}function patchUpdates(_0x356d5f){return function(_0x2dac6d){try{jsonpatch['apply'](_0x2dac6d,_0x356d5f,!![]);}catch(_0x87457c){return BPromise[_0x3110('0x20')](_0x87457c);}return _0x2dac6d[_0x3110('0x21')]();};}function saveUpdates(_0x1c98af,_0xf37b91){return function(_0x1b366a){if(_0x1b366a){return _0x1b366a[_0x3110('0x22')](_0x1c98af)['then'](function(_0xbf26ac){return _0xbf26ac;});}return null;};}function removeEntity(_0x284f5c,_0x80132f){return function(_0x2b8b06){if(_0x2b8b06){return _0x2b8b06[_0x3110('0x23')]()[_0x3110('0x24')](function(){var _0x4fa2cb=_0x2b8b06['get']({'plain':!![]});var _0x27f145=_0x3110('0x25');return db[_0x3110('0x26')]['destroy']({'where':{'type':_0x27f145,'resourceId':_0x4fa2cb['id']}})[_0x3110('0x24')](function(){return _0x2b8b06;});})[_0x3110('0x24')](function(){_0x284f5c[_0x3110('0x19')](0xcc)[_0x3110('0x27')]();});}};}function handleEntityNotFound(_0x63a730,_0x4505d9){return function(_0x2d08c5){if(!_0x2d08c5){_0x63a730[_0x3110('0x18')](0x194);}return _0x2d08c5;};}function handleError(_0x38425a,_0x30ca08){_0x30ca08=_0x30ca08||0x1f4;return function(_0x2f4a92){logger[_0x3110('0x28')](_0x2f4a92[_0x3110('0x29')]);if(_0x2f4a92[_0x3110('0x2a')]){delete _0x2f4a92['name'];}_0x38425a['status'](_0x30ca08)[_0x3110('0x2b')](_0x2f4a92);};}exports[_0x3110('0x2c')]=function(_0xa5578c,_0x4538e6){var _0xd0dd75={},_0x5cfabb={},_0x1c1005={'count':0x0,'rows':[]};var _0x10d4f9=_['map'](db['AnalyticCustomReport'][_0x3110('0x2d')],function(_0x4461cb){return{'name':_0x4461cb[_0x3110('0x2e')],'type':_0x4461cb['type'][_0x3110('0x2f')]};});_0x5cfabb[_0x3110('0x30')]=_['map'](_0x10d4f9,_0x3110('0x2a'));_0x5cfabb[_0x3110('0x31')]=_[_0x3110('0x32')](_0xa5578c[_0x3110('0x31')]);_0x5cfabb[_0x3110('0x33')]=_[_0x3110('0x34')](_0x5cfabb[_0x3110('0x30')],_0x5cfabb[_0x3110('0x31')]);_0xd0dd75[_0x3110('0x35')]=_[_0x3110('0x34')](_0x5cfabb[_0x3110('0x30')],qs['fields'](_0xa5578c[_0x3110('0x31')][_0x3110('0x36')]));_0xd0dd75[_0x3110('0x35')]=_0xd0dd75[_0x3110('0x35')][_0x3110('0x37')]?_0xd0dd75[_0x3110('0x35')]:_0x5cfabb[_0x3110('0x30')];if(!_0xa5578c[_0x3110('0x31')][_0x3110('0x38')](_0x3110('0x39'))){_0xd0dd75['limit']=qs[_0x3110('0x1c')](_0xa5578c[_0x3110('0x31')][_0x3110('0x1c')]);_0xd0dd75[_0x3110('0x1a')]=qs[_0x3110('0x1a')](_0xa5578c[_0x3110('0x31')][_0x3110('0x1a')]);}_0xd0dd75['order']=qs[_0x3110('0x3a')](_0xa5578c[_0x3110('0x31')][_0x3110('0x3a')]);_0xd0dd75[_0x3110('0x3b')]=qs['filters'](_[_0x3110('0x3c')](_0xa5578c['query'],_0x5cfabb['filters']),_0x10d4f9);if(_0xa5578c[_0x3110('0x31')][_0x3110('0x3d')]){_0xd0dd75[_0x3110('0x3b')]=_[_0x3110('0x3e')](_0xd0dd75[_0x3110('0x3b')],{'$or':_[_0x3110('0x3f')](_0x10d4f9,function(_0x30be93){if(_0x30be93[_0x3110('0x40')]!=='VIRTUAL'){var _0x1de99f={};_0x1de99f[_0x30be93['name']]={'$like':'%'+_0xa5578c[_0x3110('0x31')]['filter']+'%'};return _0x1de99f;}})});}_0xd0dd75=_[_0x3110('0x3e')]({},_0xd0dd75,_0xa5578c[_0x3110('0x41')]);var _0x388943={'where':_0xd0dd75[_0x3110('0x3b')]};return db[_0x3110('0x42')][_0x3110('0x1d')](_0x388943)[_0x3110('0x24')](function(_0x4da01d){_0x1c1005[_0x3110('0x1d')]=_0x4da01d;if(_0xa5578c['query'][_0x3110('0x43')]){_0xd0dd75[_0x3110('0x44')]=[{'all':!![]}];}return db[_0x3110('0x42')][_0x3110('0x45')](_0xd0dd75);})[_0x3110('0x24')](function(_0x91427e){_0x1c1005[_0x3110('0x46')]=_0x91427e;return _0x1c1005;})[_0x3110('0x24')](respondWithFilteredResult(_0x4538e6,_0xd0dd75))[_0x3110('0x47')](handleError(_0x4538e6,null));};exports['show']=function(_0x5c8916,_0x4122c2){var _0x180156={'raw':![],'where':{'id':_0x5c8916[_0x3110('0x48')]['id']}},_0x2cc6fb={};_0x2cc6fb[_0x3110('0x30')]=_[_0x3110('0x32')](db['AnalyticCustomReport'][_0x3110('0x2d')]);_0x2cc6fb[_0x3110('0x31')]=_[_0x3110('0x32')](_0x5c8916[_0x3110('0x31')]);_0x2cc6fb[_0x3110('0x33')]=_[_0x3110('0x34')](_0x2cc6fb['model'],_0x2cc6fb[_0x3110('0x31')]);_0x180156[_0x3110('0x35')]=_[_0x3110('0x34')](_0x2cc6fb[_0x3110('0x30')],qs[_0x3110('0x36')](_0x5c8916[_0x3110('0x31')][_0x3110('0x36')]));_0x180156['attributes']=_0x180156[_0x3110('0x35')][_0x3110('0x37')]?_0x180156['attributes']:_0x2cc6fb[_0x3110('0x30')];if(_0x5c8916['query'][_0x3110('0x43')]){_0x180156['include']=[{'all':!![]}];}_0x180156=_[_0x3110('0x3e')]({},_0x180156,_0x5c8916['options']);return db[_0x3110('0x42')][_0x3110('0x49')](_0x180156)[_0x3110('0x24')](handleEntityNotFound(_0x4122c2,null))[_0x3110('0x24')](respondWithResult(_0x4122c2,null))['catch'](handleError(_0x4122c2,null));};exports[_0x3110('0x4a')]=function(_0x5dfdba,_0x3ac5c1){return db['AnalyticCustomReport'][_0x3110('0x4a')](_0x5dfdba['body'],{})[_0x3110('0x24')](function(_0x3ec77e){var _0x4383c9=_0x5dfdba[_0x3110('0x4b')][_0x3110('0x4c')]({'plain':!![]});if(!_0x4383c9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4383c9[_0x3110('0x4d')]==='user'){var _0x15a699=_0x3ec77e[_0x3110('0x4c')]({'plain':!![]});var _0x10c184=_0x3110('0x4e');return db[_0x3110('0x4f')][_0x3110('0x49')]({'where':{'name':_0x10c184,'userProfileId':_0x4383c9[_0x3110('0x50')]},'raw':!![]})[_0x3110('0x24')](function(_0x366c97){if(_0x366c97&&_0x366c97[_0x3110('0x51')]===0x0){return db[_0x3110('0x26')]['create']({'name':_0x15a699[_0x3110('0x2a')],'resourceId':_0x15a699['id'],'type':_0x3110('0x25'),'sectionId':_0x366c97['id']},{})[_0x3110('0x24')](function(){return _0x3ec77e;});}else{return _0x3ec77e;}})[_0x3110('0x47')](function(_0x1684ba){logger[_0x3110('0x28')](_0x3110('0x52'),_0x1684ba);throw _0x1684ba;});}return _0x3ec77e;})[_0x3110('0x24')](respondWithResult(_0x3ac5c1,0xc9))[_0x3110('0x47')](handleError(_0x3ac5c1,null));};exports[_0x3110('0x22')]=function(_0x1dcf46,_0x2921fc){if(_0x1dcf46[_0x3110('0x53')]['id']){delete _0x1dcf46['body']['id'];}return db[_0x3110('0x42')][_0x3110('0x49')]({'where':{'id':_0x1dcf46[_0x3110('0x48')]['id']}})[_0x3110('0x24')](handleEntityNotFound(_0x2921fc,null))[_0x3110('0x24')](saveUpdates(_0x1dcf46['body'],null))[_0x3110('0x24')](respondWithResult(_0x2921fc,null))[_0x3110('0x47')](handleError(_0x2921fc,null));};exports[_0x3110('0x23')]=function(_0x45615e,_0x3ddefe){return db[_0x3110('0x42')][_0x3110('0x49')]({'where':{'id':_0x45615e['params']['id']}})[_0x3110('0x24')](handleEntityNotFound(_0x3ddefe,null))[_0x3110('0x24')](removeEntity(_0x3ddefe,null))[_0x3110('0x47')](handleError(_0x3ddefe,null));};exports[_0x3110('0x54')]=function(_0x5e228f,_0x396875){var _0x15b18f=0xa;var _0x4ea7e6=['join',_0x3110('0x55'),'right_join',_0x3110('0x56')];var _0x3d655b={'SUM':_0x3110('0x57'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x3110('0x58'),'MIN':'MIN(%s)','AVG':_0x3110('0x59'),'GROUP_CONCAT':_0x3110('0x5a'),'GROUP_CONCAT ASC':_0x3110('0x5b'),'GROUP_CONCAT DESC':_0x3110('0x5c')};var _0x136b71={'SEC_TO_TIME':_0x3110('0x5d'),'DATE':_0x3110('0x5e'),'HOUR':_0x3110('0x5f'),'ROUND':_0x3110('0x60'),'UNIX_TIMESTAMP':_0x3110('0x61')};var _0x178ea1=function(_0x20a188){return!_[_0x3110('0x62')]([_0x3110('0x63'),_0x3110('0x64'),_0x3110('0x65'),_0x3110('0x66')],_0x20a188);};var _0xa78a50=function(_0x4a7260){if(!_0x4a7260||!_0x4a7260[_0x3110('0x67')][_0x3110('0x37')]){return'';}for(var _0x16ac4a='(',_0x2f0ce3=0x0;_0x2f0ce3<_0x4a7260['rules'][_0x3110('0x37')];_0x2f0ce3+=0x1){_0x2f0ce3>0x0&&(_0x16ac4a+='\x20'+_0x4a7260[_0x3110('0x68')]+'\x20');_0x16ac4a+=_0x4a7260[_0x3110('0x67')][_0x2f0ce3]['group']?_0xa78a50(_0x4a7260['rules'][_0x2f0ce3]['group']):_0x4a7260[_0x3110('0x67')][_0x2f0ce3]['field']+'\x20'+_0x4a7260['rules'][_0x2f0ce3][_0x3110('0x69')]+(_0x178ea1(_0x4a7260['rules'][_0x2f0ce3][_0x3110('0x69')])?'\x20'+_0x4a7260[_0x3110('0x67')][_0x2f0ce3][_0x3110('0x6a')]:'');}return _0x16ac4a+')';};var _0x142284={'where':{'id':_0x5e228f[_0x3110('0x48')]['id']}},_0x2688c1,_0x25a299,_0x33dfab,_0xdf0e3d,_0x1ddf03;_0x142284=_['merge']({},_0x142284,_0x5e228f[_0x3110('0x41')]);return db[_0x3110('0x42')][_0x3110('0x49')](_0x142284)[_0x3110('0x24')](function(_0x5ed475){if(_0x5ed475){_0x2688c1=_0x5ed475;return _0x5ed475[_0x3110('0x6b')]();}return null;})[_0x3110('0x24')](function(_0x8e11f0){if(_0x8e11f0){if(!_0x8e11f0['length']){throw new db['Sequelize'][(_0x3110('0x6c'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x25a299=_0x8e11f0;return db['AnalyticMetric'][_0x3110('0x45')]({'raw':!![]});}return null;})[_0x3110('0x24')](function(_0x282e0f){if(_0x282e0f){_0x33dfab=_[_0x3110('0x6d')](_0x282e0f,'id');var _0x1814ad;var _0x1e585e=squel[_0x3110('0x6e')]();_0x1e585e[_0x3110('0x6f')](_0x2688c1[_0x3110('0x70')]);for(var _0x30b4f7=0x0;_0x30b4f7<_0x25a299['length'];_0x30b4f7+=0x1){_0x1814ad=_0x25a299[_0x30b4f7][_0x3110('0x71')]?_0x33dfab[_0x25a299[_0x30b4f7][_0x3110('0x71')]][_0x3110('0x72')]:_0x25a299[_0x30b4f7][_0x3110('0x73')];_0x1814ad=_0x25a299[_0x30b4f7]['function']?_['replace'](_0x3d655b[_0x25a299[_0x30b4f7]['function']],'%s',_0x1814ad):_0x1814ad;_0x1814ad=_0x25a299[_0x30b4f7][_0x3110('0x74')]?_[_0x3110('0x75')](_0x136b71[_0x25a299[_0x30b4f7][_0x3110('0x74')]],'%s',_0x1814ad):_0x1814ad;if(_0x25a299[_0x30b4f7][_0x3110('0x76')]){_0x1e585e['group'](_0x1814ad);}_0x25a299[_0x30b4f7]['orderBy']&&_0x1e585e[_0x3110('0x77')](_0x1814ad,_0x25a299[_0x30b4f7][_0x3110('0x78')]===_0x3110('0x79')?![]:!![]);_0x1e585e[_0x3110('0x73')](_0x1814ad,_0x25a299[_0x30b4f7][_0x3110('0x7a')]||_0x1814ad);}if(_0x2688c1[_0x3110('0x7b')]){_0x2688c1['joins']=JSON[_0x3110('0x7c')](_0x2688c1[_0x3110('0x7b')]);for(var _0x9586c3=0x0;_0x9586c3<_0x2688c1[_0x3110('0x7b')][_0x3110('0x37')];_0x9586c3+=0x1){if(_0x2688c1[_0x3110('0x7b')][_0x9586c3][_0x3110('0x40')]&&_[_0x3110('0x62')](_0x4ea7e6,_0x2688c1[_0x3110('0x7b')][_0x9586c3][_0x3110('0x40')])&&_0x2688c1[_0x3110('0x7b')][_0x9586c3][_0x3110('0x7d')]&&_0x2688c1[_0x3110('0x7b')][_0x9586c3][_0x3110('0x7e')]&&_0x2688c1[_0x3110('0x7b')][_0x9586c3]['foreignKey']){_0x1e585e[_0x2688c1[_0x3110('0x7b')][_0x9586c3]['type']](_0x2688c1['joins'][_0x9586c3][_0x3110('0x7e')],null,util['format'](_0x3110('0x7f'),_0x2688c1[_0x3110('0x70')],_0x2688c1[_0x3110('0x7b')][_0x9586c3][_0x3110('0x7d')],_0x2688c1[_0x3110('0x7b')][_0x9586c3]['foreignTable'],_0x2688c1[_0x3110('0x7b')][_0x9586c3][_0x3110('0x80')]));}}}if(_0x2688c1[_0x3110('0x81')]){_0x2688c1[_0x3110('0x81')]=JSON['parse'](_0x2688c1['conditions']);_0x1e585e[_0x3110('0x3b')](_0xa78a50(_0x2688c1[_0x3110('0x81')]['group']));}_0x1ddf03=_0x1e585e[_0x3110('0x82')]();_0x1e585e[_0x3110('0x1c')](_0x15b18f);_0x1e585e[_0x3110('0x1a')](0x0);logger[_0x3110('0x83')](_0x3110('0x84'),_0x1e585e['toString']());return dbH[_0x3110('0x85')][_0x3110('0x31')](_0x1e585e['toString'](),{'type':dbH['sequelize'][_0x3110('0x86')][_0x3110('0x87')]});}})[_0x3110('0x24')](respondWithResult(_0x396875,null))['catch'](handleError(_0x396875,null));};function runReport(_0x26127c,_0x5eb9a0,_0x212e59){var _0xa900f1=_0x5eb9a0['name'];var _0x52abc6=0xa;var _0x3e71b6=[_0x3110('0x88'),_0x3110('0x55'),_0x3110('0x89'),_0x3110('0x56')];var _0xdcf20={'SUM':_0x3110('0x57'),'COUNT':_0x3110('0x8a'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x3110('0x58'),'MIN':'MIN(%s)','AVG':_0x3110('0x59'),'GROUP_CONCAT':_0x3110('0x5a'),'GROUP_CONCAT ASC':_0x3110('0x5b'),'GROUP_CONCAT DESC':_0x3110('0x5c')};var _0x21ea85={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x3110('0x5e'),'HOUR':'HOUR(%s)','ROUND':_0x3110('0x60'),'UNIX_TIMESTAMP':_0x3110('0x61')};var _0x564c57=function(_0x508333){return!_[_0x3110('0x62')](['IS\x20NULL',_0x3110('0x64'),_0x3110('0x65'),_0x3110('0x66')],_0x508333);};var _0x1569dd=function(_0x57b63f){if(!_0x57b63f||!_0x57b63f[_0x3110('0x67')][_0x3110('0x37')]){return'';}for(var _0x501785='(',_0x5c3648=0x0;_0x5c3648<_0x57b63f[_0x3110('0x67')][_0x3110('0x37')];_0x5c3648+=0x1){_0x5c3648>0x0&&(_0x501785+='\x20'+_0x57b63f[_0x3110('0x68')]+'\x20');_0x501785+=_0x57b63f[_0x3110('0x67')][_0x5c3648][_0x3110('0x8b')]?_0x1569dd(_0x57b63f['rules'][_0x5c3648][_0x3110('0x8b')]):_0x57b63f[_0x3110('0x67')][_0x5c3648][_0x3110('0x73')]+'\x20'+_0x57b63f[_0x3110('0x67')][_0x5c3648][_0x3110('0x69')]+(_0x564c57(_0x57b63f['rules'][_0x5c3648][_0x3110('0x69')])?'\x20'+_0x57b63f['rules'][_0x5c3648][_0x3110('0x6a')]:'');}return _0x501785+')';};var _0x584221={'where':{'id':_0x26127c['id']}},_0x493868,_0x41a022,_0x465c03,_0x486c7b,_0x496955;_0x584221=_[_0x3110('0x3e')]({},_0x584221,_0x212e59);return db[_0x3110('0x42')][_0x3110('0x49')](_0x584221)[_0x3110('0x24')](function(_0xd05d8e){if(_0xd05d8e){_0x493868=_0xd05d8e;return _0xd05d8e['getFields']();}return null;})[_0x3110('0x24')](function(_0x15e151){if(_0x15e151){if(!_0x15e151[_0x3110('0x37')]){throw new db[(_0x3110('0x8c'))][(_0x3110('0x6c'))](_0x3110('0x8d'),0x193);}_0x41a022=_0x15e151;return db[_0x3110('0x8e')]['findAll']({'raw':!![]});}return null;})[_0x3110('0x24')](function(_0x3d7e40){if(_0x3d7e40){_0x465c03=_[_0x3110('0x6d')](_0x3d7e40,'id');var _0x34bd98;var _0x39b8c7=squel['select']();_0x39b8c7['from'](_0x493868['table']);for(var _0x515b20=0x0;_0x515b20<_0x41a022[_0x3110('0x37')];_0x515b20+=0x1){_0x34bd98=_0x41a022[_0x515b20]['MetricId']?_0x465c03[_0x41a022[_0x515b20][_0x3110('0x71')]][_0x3110('0x72')]:_0x41a022[_0x515b20]['field'];_0x34bd98=_0x41a022[_0x515b20][_0x3110('0x8f')]?_[_0x3110('0x75')](_0xdcf20[_0x41a022[_0x515b20][_0x3110('0x8f')]],'%s',_0x34bd98):_0x34bd98;_0x34bd98=_0x41a022[_0x515b20][_0x3110('0x74')]?_[_0x3110('0x75')](_0x21ea85[_0x41a022[_0x515b20]['format']],'%s',_0x34bd98):_0x34bd98;if(_0x41a022[_0x515b20]['groupBy']){_0x39b8c7[_0x3110('0x8b')](_0x34bd98);}_0x41a022[_0x515b20][_0x3110('0x78')]&&_0x39b8c7[_0x3110('0x77')](_0x34bd98,_0x41a022[_0x515b20][_0x3110('0x78')]===_0x3110('0x79')?![]:!![]);_0x39b8c7[_0x3110('0x73')](_0x34bd98,_0x41a022[_0x515b20][_0x3110('0x7a')]||_0x34bd98);}if(_0x493868[_0x3110('0x7b')]){_0x493868[_0x3110('0x7b')]=JSON[_0x3110('0x7c')](_0x493868['joins']);for(var _0x1c3bd4=0x0;_0x1c3bd4<_0x493868[_0x3110('0x7b')]['length'];_0x1c3bd4+=0x1){if(_0x493868['joins'][_0x1c3bd4]['type']&&_['includes'](_0x3e71b6,_0x493868[_0x3110('0x7b')][_0x1c3bd4][_0x3110('0x40')])&&_0x493868[_0x3110('0x7b')][_0x1c3bd4][_0x3110('0x7d')]&&_0x493868[_0x3110('0x7b')][_0x1c3bd4][_0x3110('0x7e')]&&_0x493868[_0x3110('0x7b')][_0x1c3bd4]['foreignKey']){_0x39b8c7[_0x493868[_0x3110('0x7b')][_0x1c3bd4][_0x3110('0x40')]](_0x493868[_0x3110('0x7b')][_0x1c3bd4]['foreignTable'],null,util['format'](_0x3110('0x7f'),_0x493868[_0x3110('0x70')],_0x493868[_0x3110('0x7b')][_0x1c3bd4]['parentKey'],_0x493868[_0x3110('0x7b')][_0x1c3bd4][_0x3110('0x7e')],_0x493868[_0x3110('0x7b')][_0x1c3bd4][_0x3110('0x80')]));}}}if(_0x493868[_0x3110('0x81')]){_0x493868['conditions']=JSON['parse'](_0x493868[_0x3110('0x81')]);_0x39b8c7[_0x3110('0x3b')](_0x1569dd(_0x493868[_0x3110('0x81')][_0x3110('0x8b')]));}_0x496955=_0x39b8c7[_0x3110('0x82')]();_0x39b8c7[_0x3110('0x1c')](_0x52abc6);_0x39b8c7[_0x3110('0x1a')](0x0);return;}})[_0x3110('0x24')](function(){if(_0x5eb9a0[_0x3110('0x90')]===_0x3110('0x91')){return null;}var _0x19ca70=_[_0x3110('0x3e')](_0x5eb9a0,{'name':_0x5eb9a0[_0x3110('0x92')]||_0x5eb9a0[_0x3110('0x2a')]||_0x493868[_0x3110('0x2a')],'basename':_0xa900f1,'savename':util[_0x3110('0x74')]('%s-%s.%s',_0x5eb9a0[_0x3110('0x2a')]||_0x493868['name'],require(_0x3110('0x93'))[_0x3110('0x94')](0x4),_0x5eb9a0[_0x3110('0x90')]||_0x3110('0x95')),'reportId':_0x493868['id'],'reportType':'custom'});return db[_0x3110('0x96')]['create'](_0x19ca70,{'raw':!![]});})[_0x3110('0x24')](function(_0x46ae5a){if(_0x493868[_0x3110('0x70')]===_0x3110('0x97')){_0x496955[_0x3110('0x3b')](_0x493868[_0x3110('0x70')]+_0x3110('0x98'),_0x5eb9a0[_0x3110('0x99')],_0x5eb9a0[_0x3110('0x9a')]);}else{_0x496955[_0x3110('0x3b')](_0x493868[_0x3110('0x70')]+_0x3110('0x9b'),_0x5eb9a0[_0x3110('0x99')],_0x5eb9a0[_0x3110('0x9a')]);}if(_0x46ae5a){logger[_0x3110('0x9c')]('Run\x20Query:',_0x496955[_0x3110('0x9d')]());require(_0x3110('0x9e'))[_0x3110('0x9f')](path[_0x3110('0x88')](__dirname,'../../components/export/',_0x46ae5a[_0x3110('0x90')]),[_0x46ae5a['id'],_0x496955[_0x3110('0x9d')](),path['join'](__dirname,'../../files/reports',_0x46ae5a[_0x3110('0xa0')]),_0xa900f1]);return _0x46ae5a;}else{var _0x50285a=squel[_0x3110('0x6e')]();_0x50285a['from']('('+_0x496955['toString']()+')',_0x3110('0xa1'));_0x50285a[_0x3110('0x73')](_0x3110('0xa2'),_0x3110('0x1d'));_0x496955[_0x3110('0x1c')](_0x5eb9a0[_0x3110('0x1c')]||_0x52abc6);_0x496955[_0x3110('0x1a')](_0x5eb9a0['offset']||0x0);return dbH[_0x3110('0x85')][_0x3110('0x31')](_0x50285a[_0x3110('0x9d')](),{'type':dbH[_0x3110('0x85')]['QueryTypes'][_0x3110('0x87')]})['then'](function(_0x42b657){if(!_0x42b657['length']){_0x486c7b=0x0;}else{_0x486c7b=_0x42b657[0x0][_0x3110('0x1d')]||0x0;}return dbH[_0x3110('0x85')]['query'](_0x496955['toString'](),{'type':dbH[_0x3110('0x85')][_0x3110('0x86')]['SELECT']});})['then'](function(_0x20d3c2){return{'rows':_0x20d3c2||[],'count':_0x486c7b};});}});}exports[_0x3110('0xa3')]=function(_0xf1cf8,_0x1a8176){return runReport(_0xf1cf8[_0x3110('0x48')],_0xf1cf8[_0x3110('0x31')],_0xf1cf8[_0x3110('0x41')])[_0x3110('0x24')](respondWithResult(_0x1a8176,null))[_0x3110('0x47')](handleError(_0x1a8176,null));};exports[_0x3110('0xa4')]=runReport;exports['query']=function(_0x2a8cd0,_0x454124){var _0x38fc43=0xa;var _0x677448=[_0x3110('0x88'),_0x3110('0x55'),'right_join','cross_join'];var _0x45918f={'SUM':_0x3110('0x57'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0x3110('0xa5'),'AVG':_0x3110('0x59'),'GROUP_CONCAT':_0x3110('0x5a'),'GROUP_CONCAT ASC':_0x3110('0x5b'),'GROUP_CONCAT DESC':_0x3110('0x5c')};var _0x5f2c23={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x3110('0x5e'),'HOUR':_0x3110('0x5f'),'ROUND':_0x3110('0x60'),'UNIX_TIMESTAMP':_0x3110('0x61')};var _0x1097d7=function(_0x7cb42f){return!_[_0x3110('0x62')]([_0x3110('0x63'),_0x3110('0x64'),_0x3110('0x65'),_0x3110('0x66')],_0x7cb42f);};var _0x45fb46=function(_0x347832){if(!_0x347832||!_0x347832['rules'][_0x3110('0x37')]){return'';}for(var _0x35b4e9='(',_0x39a96c=0x0;_0x39a96c<_0x347832['rules']['length'];_0x39a96c+=0x1){_0x39a96c>0x0&&(_0x35b4e9+='\x20'+_0x347832[_0x3110('0x68')]+'\x20');_0x35b4e9+=_0x347832[_0x3110('0x67')][_0x39a96c][_0x3110('0x8b')]?_0x45fb46(_0x347832[_0x3110('0x67')][_0x39a96c][_0x3110('0x8b')]):_0x347832[_0x3110('0x67')][_0x39a96c][_0x3110('0x73')]+'\x20'+_0x347832[_0x3110('0x67')][_0x39a96c][_0x3110('0x69')]+(_0x1097d7(_0x347832[_0x3110('0x67')][_0x39a96c]['condition'])?'\x20'+_0x347832[_0x3110('0x67')][_0x39a96c][_0x3110('0x6a')]:'');}return _0x35b4e9+')';};var _0xabf29f={'where':{'id':_0x2a8cd0[_0x3110('0x48')]['id']}},_0x4a02aa,_0x1fd833,_0x51fb99,_0x4ecf0d,_0x170b26;_0xabf29f=_[_0x3110('0x3e')]({},_0xabf29f,_0x2a8cd0['options']);return db['AnalyticCustomReport']['find'](_0xabf29f)[_0x3110('0x24')](function(_0x54c1bc){if(_0x54c1bc){_0x4a02aa=_0x54c1bc;return _0x54c1bc['getFields']();}return null;})[_0x3110('0x24')](function(_0x10221b){if(_0x10221b){if(!_0x10221b['length']){throw new db[(_0x3110('0x8c'))][(_0x3110('0x6c'))](_0x3110('0x8d'),0x193);}_0x1fd833=_0x10221b;return db[_0x3110('0x8e')][_0x3110('0x45')]({'raw':!![]});}return null;})[_0x3110('0x24')](function(_0x4865a8){if(_0x4865a8){_0x51fb99=_[_0x3110('0x6d')](_0x4865a8,'id');var _0x151c61;var _0x1f2bee=squel[_0x3110('0x6e')]();_0x1f2bee[_0x3110('0x6f')](_0x4a02aa[_0x3110('0x70')]);for(var _0x46c2f1=0x0;_0x46c2f1<_0x1fd833[_0x3110('0x37')];_0x46c2f1+=0x1){_0x151c61=_0x1fd833[_0x46c2f1][_0x3110('0x71')]?_0x51fb99[_0x1fd833[_0x46c2f1][_0x3110('0x71')]]['metric']:_0x1fd833[_0x46c2f1]['field'];_0x151c61=_0x1fd833[_0x46c2f1][_0x3110('0x8f')]?_[_0x3110('0x75')](_0x45918f[_0x1fd833[_0x46c2f1][_0x3110('0x8f')]],'%s',_0x151c61):_0x151c61;_0x151c61=_0x1fd833[_0x46c2f1][_0x3110('0x74')]?_['replace'](_0x5f2c23[_0x1fd833[_0x46c2f1][_0x3110('0x74')]],'%s',_0x151c61):_0x151c61;if(_0x1fd833[_0x46c2f1][_0x3110('0x76')]){_0x1f2bee[_0x3110('0x8b')](_0x151c61);}_0x1fd833[_0x46c2f1]['orderBy']&&_0x1f2bee[_0x3110('0x77')](_0x151c61,_0x1fd833[_0x46c2f1][_0x3110('0x78')]===_0x3110('0x79')?![]:!![]);_0x1f2bee[_0x3110('0x73')](_0x151c61,_0x1fd833[_0x46c2f1][_0x3110('0x7a')]||_0x151c61);}if(_0x4a02aa[_0x3110('0x7b')]){_0x4a02aa[_0x3110('0x7b')]=JSON[_0x3110('0x7c')](_0x4a02aa[_0x3110('0x7b')]);for(var _0x1da364=0x0;_0x1da364<_0x4a02aa['joins'][_0x3110('0x37')];_0x1da364+=0x1){if(_0x4a02aa[_0x3110('0x7b')][_0x1da364][_0x3110('0x40')]&&_[_0x3110('0x62')](_0x677448,_0x4a02aa[_0x3110('0x7b')][_0x1da364]['type'])&&_0x4a02aa[_0x3110('0x7b')][_0x1da364]['parentKey']&&_0x4a02aa[_0x3110('0x7b')][_0x1da364][_0x3110('0x7e')]&&_0x4a02aa[_0x3110('0x7b')][_0x1da364][_0x3110('0x80')]){_0x1f2bee[_0x4a02aa[_0x3110('0x7b')][_0x1da364][_0x3110('0x40')]](_0x4a02aa['joins'][_0x1da364][_0x3110('0x7e')],null,util[_0x3110('0x74')]('%s.%s\x20=\x20%s.%s',_0x4a02aa[_0x3110('0x70')],_0x4a02aa[_0x3110('0x7b')][_0x1da364][_0x3110('0x7d')],_0x4a02aa['joins'][_0x1da364][_0x3110('0x7e')],_0x4a02aa[_0x3110('0x7b')][_0x1da364]['foreignKey']));}}}if(_0x4a02aa['conditions']){_0x4a02aa[_0x3110('0x81')]=JSON[_0x3110('0x7c')](_0x4a02aa['conditions']);_0x1f2bee[_0x3110('0x3b')](_0x45fb46(_0x4a02aa['conditions'][_0x3110('0x8b')]));}_0x170b26=_0x1f2bee[_0x3110('0x82')]();_0x1f2bee['limit'](_0x38fc43);_0x1f2bee[_0x3110('0x1a')](0x0);logger[_0x3110('0x83')]('Limited\x20Query:',_0x1f2bee['toString']());return dbH[_0x3110('0x85')]['query'](_0x1f2bee[_0x3110('0x9d')](),{'type':dbH['sequelize'][_0x3110('0x86')][_0x3110('0x87')]});}})[_0x3110('0x24')](function(){return{'sql':_0x170b26[_0x3110('0x9d')]()};})[_0x3110('0x24')](respondWithResult(_0x454124,null))[_0x3110('0x47')](handleError(_0x454124,null));};
\ No newline at end of file
+var _0xbc20=['fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','params','options','find','create','user','role','Reports','UserProfileSection','userProfileId','autoAssociation','CustomReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','preview','left_join','right_join','cross_join','COUNT(%s)','COUNT(DISTINCT\x20%s)','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)','includes','IS\x20NULL','rules','operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','from','MetricId','metric','function','format','replace','groupBy','orderBy','DESC','alias','joins','parse','type','foreignKey','foreignTable','table','parentKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','join','SUM(%s)','MIN(%s)','IS\x20EMPTY','IS\x20NOT\x20EMPTY','select','order','%s.%s\x20=\x20%s.%s','output','web','fullPath','%s-%s.%s','csv','custom','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','info','Run\x20Query:','child_process','fork','../../components/export/','countTable','COUNT(*)','runReport','IS\x20NOT\x20NULL','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','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','dbH','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','destroy','get','UserProfileResource','then','end','sendStatus','error','name','send','index','AnalyticCustomReport','rawAttributes'];(function(_0x1e9e5c,_0x13fb10){var _0x191cb9=function(_0x323746){while(--_0x323746){_0x1e9e5c['push'](_0x1e9e5c['shift']());}};_0x191cb9(++_0x13fb10);}(_0xbc20,0x1c7));var _0x0bc2=function(_0x4a7389,_0xa99bd9){_0x4a7389=_0x4a7389-0x0;var _0x246ee8=_0xbc20[_0x4a7389];return _0x246ee8;};'use strict';var emlformat=require(_0x0bc2('0x0'));var rimraf=require(_0x0bc2('0x1'));var zipdir=require(_0x0bc2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0bc2('0x3'));var moment=require(_0x0bc2('0x4'));var BPromise=require(_0x0bc2('0x5'));var Mustache=require(_0x0bc2('0x6'));var util=require('util');var path=require(_0x0bc2('0x7'));var sox=require(_0x0bc2('0x8'));var csv=require(_0x0bc2('0x9'));var ejs=require(_0x0bc2('0xa'));var fs=require('fs');var fs_extra=require(_0x0bc2('0xb'));var _=require(_0x0bc2('0xc'));var squel=require('squel');var crypto=require(_0x0bc2('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x0bc2('0xe'));var toCsv=require(_0x0bc2('0x9'));var querystring=require('querystring');var Papa=require(_0x0bc2('0xf'));var Redis=require('ioredis');var authService=require(_0x0bc2('0x10'));var qs=require(_0x0bc2('0x11'));var as=require(_0x0bc2('0x12'));var hardwareService=require(_0x0bc2('0x13'));var logger=require(_0x0bc2('0x14'))('api');var utils=require(_0x0bc2('0x15'));var config=require(_0x0bc2('0x16'));var licenseUtil=require(_0x0bc2('0x17'));var db=require(_0x0bc2('0x18'))['db'];var dbH=require(_0x0bc2('0x18'))[_0x0bc2('0x19')];function respondWithStatusCode(_0xcd4603,_0x23260e){_0x23260e=_0x23260e||0xcc;return function(_0x3e0ca7){if(_0x3e0ca7){return _0xcd4603['sendStatus'](_0x23260e);}return _0xcd4603['status'](_0x23260e)['end']();};}function respondWithResult(_0x41c192,_0x456344){_0x456344=_0x456344||0xc8;return function(_0x3523a0){if(_0x3523a0){return _0x41c192[_0x0bc2('0x1a')](_0x456344)[_0x0bc2('0x1b')](_0x3523a0);}};}function respondWithFilteredResult(_0x4b8d4f,_0x17326b){return function(_0x447e80){if(_0x447e80){var _0x36f7d4=typeof _0x17326b['offset']===_0x0bc2('0x1c')&&typeof _0x17326b[_0x0bc2('0x1d')]===_0x0bc2('0x1c');var _0x384e86=_0x447e80[_0x0bc2('0x1e')];var _0x599550=_0x36f7d4?0x0:_0x17326b[_0x0bc2('0x1f')];var _0x38c4ad=_0x36f7d4?_0x447e80[_0x0bc2('0x1e')]:_0x17326b[_0x0bc2('0x1f')]+_0x17326b[_0x0bc2('0x1d')];var _0x402436;if(_0x38c4ad>=_0x384e86){_0x38c4ad=_0x384e86;_0x402436=0xc8;}else{_0x402436=0xce;}_0x4b8d4f[_0x0bc2('0x1a')](_0x402436);return _0x4b8d4f[_0x0bc2('0x20')](_0x0bc2('0x21'),_0x599550+'-'+_0x38c4ad+'/'+_0x384e86)[_0x0bc2('0x1b')](_0x447e80);}return null;};}function patchUpdates(_0x477b1d){return function(_0x5112c4){try{jsonpatch[_0x0bc2('0x22')](_0x5112c4,_0x477b1d,!![]);}catch(_0x27c589){return BPromise[_0x0bc2('0x23')](_0x27c589);}return _0x5112c4[_0x0bc2('0x24')]();};}function saveUpdates(_0x60e956,_0x10cfbb){return function(_0x530cac){if(_0x530cac){return _0x530cac['update'](_0x60e956)['then'](function(_0x510c2e){return _0x510c2e;});}return null;};}function removeEntity(_0xa45bd9,_0x4d5e78){return function(_0x3f1c9b){if(_0x3f1c9b){return _0x3f1c9b[_0x0bc2('0x25')]()['then'](function(){var _0x5c6a07=_0x3f1c9b[_0x0bc2('0x26')]({'plain':!![]});var _0x4ad453='CustomReports';return db[_0x0bc2('0x27')][_0x0bc2('0x25')]({'where':{'type':_0x4ad453,'resourceId':_0x5c6a07['id']}})[_0x0bc2('0x28')](function(){return _0x3f1c9b;});})[_0x0bc2('0x28')](function(){_0xa45bd9[_0x0bc2('0x1a')](0xcc)[_0x0bc2('0x29')]();});}};}function handleEntityNotFound(_0x3add03,_0x3b41b1){return function(_0x5013ef){if(!_0x5013ef){_0x3add03[_0x0bc2('0x2a')](0x194);}return _0x5013ef;};}function handleError(_0x51c3bf,_0x262ebc){_0x262ebc=_0x262ebc||0x1f4;return function(_0x3c35a6){logger[_0x0bc2('0x2b')](_0x3c35a6['stack']);if(_0x3c35a6[_0x0bc2('0x2c')]){delete _0x3c35a6[_0x0bc2('0x2c')];}_0x51c3bf[_0x0bc2('0x1a')](_0x262ebc)[_0x0bc2('0x2d')](_0x3c35a6);};}exports[_0x0bc2('0x2e')]=function(_0x222d76,_0x4b0dda){var _0x46f98c={},_0x26b7df={},_0x117946={'count':0x0,'rows':[]};var _0x27c809=_['map'](db[_0x0bc2('0x2f')][_0x0bc2('0x30')],function(_0x3c567d){return{'name':_0x3c567d[_0x0bc2('0x31')],'type':_0x3c567d['type'][_0x0bc2('0x32')]};});_0x26b7df[_0x0bc2('0x33')]=_[_0x0bc2('0x34')](_0x27c809,'name');_0x26b7df[_0x0bc2('0x35')]=_[_0x0bc2('0x36')](_0x222d76['query']);_0x26b7df[_0x0bc2('0x37')]=_[_0x0bc2('0x38')](_0x26b7df[_0x0bc2('0x33')],_0x26b7df[_0x0bc2('0x35')]);_0x46f98c[_0x0bc2('0x39')]=_[_0x0bc2('0x38')](_0x26b7df[_0x0bc2('0x33')],qs[_0x0bc2('0x3a')](_0x222d76[_0x0bc2('0x35')][_0x0bc2('0x3a')]));_0x46f98c[_0x0bc2('0x39')]=_0x46f98c[_0x0bc2('0x39')][_0x0bc2('0x3b')]?_0x46f98c[_0x0bc2('0x39')]:_0x26b7df[_0x0bc2('0x33')];if(!_0x222d76[_0x0bc2('0x35')][_0x0bc2('0x3c')](_0x0bc2('0x3d'))){_0x46f98c['limit']=qs[_0x0bc2('0x1d')](_0x222d76[_0x0bc2('0x35')][_0x0bc2('0x1d')]);_0x46f98c[_0x0bc2('0x1f')]=qs['offset'](_0x222d76['query'][_0x0bc2('0x1f')]);}_0x46f98c['order']=qs[_0x0bc2('0x3e')](_0x222d76['query'][_0x0bc2('0x3e')]);_0x46f98c[_0x0bc2('0x3f')]=qs[_0x0bc2('0x37')](_[_0x0bc2('0x40')](_0x222d76[_0x0bc2('0x35')],_0x26b7df[_0x0bc2('0x37')]),_0x27c809);if(_0x222d76[_0x0bc2('0x35')][_0x0bc2('0x41')]){_0x46f98c[_0x0bc2('0x3f')]=_[_0x0bc2('0x42')](_0x46f98c[_0x0bc2('0x3f')],{'$or':_['map'](_0x27c809,function(_0x142c70){if(_0x142c70['type']!==_0x0bc2('0x43')){var _0x17d5f6={};_0x17d5f6[_0x142c70[_0x0bc2('0x2c')]]={'$like':'%'+_0x222d76[_0x0bc2('0x35')][_0x0bc2('0x41')]+'%'};return _0x17d5f6;}})});}_0x46f98c=_[_0x0bc2('0x42')]({},_0x46f98c,_0x222d76['options']);var _0x3e1f69={'where':_0x46f98c[_0x0bc2('0x3f')]};return db[_0x0bc2('0x2f')][_0x0bc2('0x1e')](_0x3e1f69)['then'](function(_0x40c7b7){_0x117946[_0x0bc2('0x1e')]=_0x40c7b7;if(_0x222d76[_0x0bc2('0x35')][_0x0bc2('0x44')]){_0x46f98c[_0x0bc2('0x45')]=[{'all':!![]}];}return db[_0x0bc2('0x2f')][_0x0bc2('0x46')](_0x46f98c);})['then'](function(_0xaefa7){_0x117946['rows']=_0xaefa7;return _0x117946;})[_0x0bc2('0x28')](respondWithFilteredResult(_0x4b0dda,_0x46f98c))[_0x0bc2('0x47')](handleError(_0x4b0dda,null));};exports[_0x0bc2('0x48')]=function(_0x3fa039,_0x21a076){var _0x365aad={'raw':![],'where':{'id':_0x3fa039[_0x0bc2('0x49')]['id']}},_0xef3c5d={};_0xef3c5d[_0x0bc2('0x33')]=_[_0x0bc2('0x36')](db[_0x0bc2('0x2f')][_0x0bc2('0x30')]);_0xef3c5d[_0x0bc2('0x35')]=_[_0x0bc2('0x36')](_0x3fa039[_0x0bc2('0x35')]);_0xef3c5d['filters']=_[_0x0bc2('0x38')](_0xef3c5d[_0x0bc2('0x33')],_0xef3c5d[_0x0bc2('0x35')]);_0x365aad['attributes']=_[_0x0bc2('0x38')](_0xef3c5d[_0x0bc2('0x33')],qs[_0x0bc2('0x3a')](_0x3fa039[_0x0bc2('0x35')][_0x0bc2('0x3a')]));_0x365aad[_0x0bc2('0x39')]=_0x365aad[_0x0bc2('0x39')][_0x0bc2('0x3b')]?_0x365aad[_0x0bc2('0x39')]:_0xef3c5d[_0x0bc2('0x33')];if(_0x3fa039[_0x0bc2('0x35')][_0x0bc2('0x44')]){_0x365aad[_0x0bc2('0x45')]=[{'all':!![]}];}_0x365aad=_[_0x0bc2('0x42')]({},_0x365aad,_0x3fa039[_0x0bc2('0x4a')]);return db[_0x0bc2('0x2f')][_0x0bc2('0x4b')](_0x365aad)[_0x0bc2('0x28')](handleEntityNotFound(_0x21a076,null))[_0x0bc2('0x28')](respondWithResult(_0x21a076,null))[_0x0bc2('0x47')](handleError(_0x21a076,null));};exports[_0x0bc2('0x4c')]=function(_0xab65ac,_0x201af2){return db['AnalyticCustomReport'][_0x0bc2('0x4c')](_0xab65ac['body'],{})['then'](function(_0x5d5a2f){var _0x1417da=_0xab65ac[_0x0bc2('0x4d')][_0x0bc2('0x26')]({'plain':!![]});if(!_0x1417da)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1417da[_0x0bc2('0x4e')]===_0x0bc2('0x4d')){var _0x43d5fe=_0x5d5a2f[_0x0bc2('0x26')]({'plain':!![]});var _0x4ff086=_0x0bc2('0x4f');return db[_0x0bc2('0x50')][_0x0bc2('0x4b')]({'where':{'name':_0x4ff086,'userProfileId':_0x1417da[_0x0bc2('0x51')]},'raw':!![]})[_0x0bc2('0x28')](function(_0x3ad21d){if(_0x3ad21d&&_0x3ad21d[_0x0bc2('0x52')]===0x0){return db[_0x0bc2('0x27')]['create']({'name':_0x43d5fe[_0x0bc2('0x2c')],'resourceId':_0x43d5fe['id'],'type':_0x0bc2('0x53'),'sectionId':_0x3ad21d['id']},{})[_0x0bc2('0x28')](function(){return _0x5d5a2f;});}else{return _0x5d5a2f;}})[_0x0bc2('0x47')](function(_0x46a380){logger[_0x0bc2('0x2b')](_0x0bc2('0x54'),_0x46a380);throw _0x46a380;});}return _0x5d5a2f;})['then'](respondWithResult(_0x201af2,0xc9))[_0x0bc2('0x47')](handleError(_0x201af2,null));};exports['update']=function(_0x393ce9,_0x3a7f94){if(_0x393ce9[_0x0bc2('0x55')]['id']){delete _0x393ce9[_0x0bc2('0x55')]['id'];}return db['AnalyticCustomReport'][_0x0bc2('0x4b')]({'where':{'id':_0x393ce9['params']['id']}})[_0x0bc2('0x28')](handleEntityNotFound(_0x3a7f94,null))[_0x0bc2('0x28')](saveUpdates(_0x393ce9[_0x0bc2('0x55')],null))[_0x0bc2('0x28')](respondWithResult(_0x3a7f94,null))['catch'](handleError(_0x3a7f94,null));};exports['destroy']=function(_0x39499c,_0x436f8a){return db[_0x0bc2('0x2f')][_0x0bc2('0x4b')]({'where':{'id':_0x39499c[_0x0bc2('0x49')]['id']}})[_0x0bc2('0x28')](handleEntityNotFound(_0x436f8a,null))['then'](removeEntity(_0x436f8a,null))[_0x0bc2('0x47')](handleError(_0x436f8a,null));};exports[_0x0bc2('0x56')]=function(_0x4c2337,_0x4bb765){var _0x305fbd=0xa;var _0x9a35dd=['join',_0x0bc2('0x57'),_0x0bc2('0x58'),_0x0bc2('0x59')];var _0x3a9437={'SUM':'SUM(%s)','COUNT':_0x0bc2('0x5a'),'COUNT DISTINCT':_0x0bc2('0x5b'),'MAX':_0x0bc2('0x5c'),'MIN':'MIN(%s)','AVG':_0x0bc2('0x5d'),'GROUP_CONCAT':_0x0bc2('0x5e'),'GROUP_CONCAT ASC':_0x0bc2('0x5f'),'GROUP_CONCAT DESC':_0x0bc2('0x60')};var _0x2f8fc9={'SEC_TO_TIME':_0x0bc2('0x61'),'DATE':_0x0bc2('0x62'),'HOUR':_0x0bc2('0x63'),'ROUND':_0x0bc2('0x64'),'UNIX_TIMESTAMP':_0x0bc2('0x65')};var _0x54d320=function(_0x2e644c){return!_[_0x0bc2('0x66')]([_0x0bc2('0x67'),'IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY'],_0x2e644c);};var _0x266559=function(_0x5f2c25){if(!_0x5f2c25||!_0x5f2c25[_0x0bc2('0x68')]['length']){return'';}for(var _0x4fcc08='(',_0x54fa87=0x0;_0x54fa87<_0x5f2c25[_0x0bc2('0x68')][_0x0bc2('0x3b')];_0x54fa87+=0x1){_0x54fa87>0x0&&(_0x4fcc08+='\x20'+_0x5f2c25[_0x0bc2('0x69')]+'\x20');_0x4fcc08+=_0x5f2c25[_0x0bc2('0x68')][_0x54fa87][_0x0bc2('0x6a')]?_0x266559(_0x5f2c25[_0x0bc2('0x68')][_0x54fa87][_0x0bc2('0x6a')]):_0x5f2c25['rules'][_0x54fa87][_0x0bc2('0x6b')]+'\x20'+_0x5f2c25[_0x0bc2('0x68')][_0x54fa87][_0x0bc2('0x6c')]+(_0x54d320(_0x5f2c25[_0x0bc2('0x68')][_0x54fa87]['condition'])?'\x20'+_0x5f2c25[_0x0bc2('0x68')][_0x54fa87][_0x0bc2('0x6d')]:'');}return _0x4fcc08+')';};var _0x1611eb={'where':{'id':_0x4c2337[_0x0bc2('0x49')]['id']}},_0xcb9248,_0x29320c,_0x5d8fc5,_0x3abd40,_0x5734ac;_0x1611eb=_[_0x0bc2('0x42')]({},_0x1611eb,_0x4c2337[_0x0bc2('0x4a')]);return db[_0x0bc2('0x2f')][_0x0bc2('0x4b')](_0x1611eb)['then'](function(_0x52dd6d){if(_0x52dd6d){_0xcb9248=_0x52dd6d;return _0x52dd6d[_0x0bc2('0x6e')]();}return null;})[_0x0bc2('0x28')](function(_0xd67268){if(_0xd67268){if(!_0xd67268[_0x0bc2('0x3b')]){throw new db[(_0x0bc2('0x6f'))][(_0x0bc2('0x70'))](_0x0bc2('0x71'),0x193);}_0x29320c=_0xd67268;return db[_0x0bc2('0x72')][_0x0bc2('0x46')]({'raw':!![]});}return null;})[_0x0bc2('0x28')](function(_0x196ad7){if(_0x196ad7){_0x5d8fc5=_[_0x0bc2('0x73')](_0x196ad7,'id');var _0x300c6f;var _0x258005=squel['select']();_0x258005[_0x0bc2('0x74')](_0xcb9248['table']);for(var _0x4f2e07=0x0;_0x4f2e07<_0x29320c['length'];_0x4f2e07+=0x1){_0x300c6f=_0x29320c[_0x4f2e07][_0x0bc2('0x75')]?_0x5d8fc5[_0x29320c[_0x4f2e07][_0x0bc2('0x75')]][_0x0bc2('0x76')]:_0x29320c[_0x4f2e07][_0x0bc2('0x6b')];_0x300c6f=_0x29320c[_0x4f2e07][_0x0bc2('0x77')]?_['replace'](_0x3a9437[_0x29320c[_0x4f2e07][_0x0bc2('0x77')]],'%s',_0x300c6f):_0x300c6f;_0x300c6f=_0x29320c[_0x4f2e07][_0x0bc2('0x78')]?_[_0x0bc2('0x79')](_0x2f8fc9[_0x29320c[_0x4f2e07]['format']],'%s',_0x300c6f):_0x300c6f;if(_0x29320c[_0x4f2e07][_0x0bc2('0x7a')]){_0x258005[_0x0bc2('0x6a')](_0x300c6f);}_0x29320c[_0x4f2e07][_0x0bc2('0x7b')]&&_0x258005['order'](_0x300c6f,_0x29320c[_0x4f2e07][_0x0bc2('0x7b')]===_0x0bc2('0x7c')?![]:!![]);_0x258005[_0x0bc2('0x6b')](_0x300c6f,_0x29320c[_0x4f2e07][_0x0bc2('0x7d')]||_0x300c6f);}if(_0xcb9248[_0x0bc2('0x7e')]){_0xcb9248['joins']=JSON[_0x0bc2('0x7f')](_0xcb9248[_0x0bc2('0x7e')]);for(var _0xcff9fa=0x0;_0xcff9fa<_0xcb9248[_0x0bc2('0x7e')][_0x0bc2('0x3b')];_0xcff9fa+=0x1){if(_0xcb9248[_0x0bc2('0x7e')][_0xcff9fa][_0x0bc2('0x80')]&&_[_0x0bc2('0x66')](_0x9a35dd,_0xcb9248['joins'][_0xcff9fa][_0x0bc2('0x80')])&&_0xcb9248['joins'][_0xcff9fa]['parentKey']&&_0xcb9248['joins'][_0xcff9fa]['foreignTable']&&_0xcb9248[_0x0bc2('0x7e')][_0xcff9fa][_0x0bc2('0x81')]){_0x258005[_0xcb9248[_0x0bc2('0x7e')][_0xcff9fa][_0x0bc2('0x80')]](_0xcb9248[_0x0bc2('0x7e')][_0xcff9fa][_0x0bc2('0x82')],null,util[_0x0bc2('0x78')]('%s.%s\x20=\x20%s.%s',_0xcb9248[_0x0bc2('0x83')],_0xcb9248[_0x0bc2('0x7e')][_0xcff9fa][_0x0bc2('0x84')],_0xcb9248[_0x0bc2('0x7e')][_0xcff9fa]['foreignTable'],_0xcb9248[_0x0bc2('0x7e')][_0xcff9fa][_0x0bc2('0x81')]));}}}if(_0xcb9248[_0x0bc2('0x85')]){_0xcb9248[_0x0bc2('0x85')]=JSON[_0x0bc2('0x7f')](_0xcb9248[_0x0bc2('0x85')]);_0x258005[_0x0bc2('0x3f')](_0x266559(_0xcb9248[_0x0bc2('0x85')][_0x0bc2('0x6a')]));}_0x5734ac=_0x258005[_0x0bc2('0x86')]();_0x258005['limit'](_0x305fbd);_0x258005['offset'](0x0);logger[_0x0bc2('0x87')](_0x0bc2('0x88'),_0x258005[_0x0bc2('0x89')]());return dbH[_0x0bc2('0x8a')][_0x0bc2('0x35')](_0x258005[_0x0bc2('0x89')](),{'type':dbH[_0x0bc2('0x8a')][_0x0bc2('0x8b')][_0x0bc2('0x8c')]});}})['then'](respondWithResult(_0x4bb765,null))['catch'](handleError(_0x4bb765,null));};function runReport(_0x59cf38,_0x3df27a,_0x24f12c){var _0x1baf6d=_0x3df27a[_0x0bc2('0x2c')];var _0x4ccc74=0xa;var _0xbbbc19=[_0x0bc2('0x8d'),_0x0bc2('0x57'),_0x0bc2('0x58'),_0x0bc2('0x59')];var _0x319dcd={'SUM':_0x0bc2('0x8e'),'COUNT':_0x0bc2('0x5a'),'COUNT DISTINCT':_0x0bc2('0x5b'),'MAX':'MAX(%s)','MIN':_0x0bc2('0x8f'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x0bc2('0x5e'),'GROUP_CONCAT ASC':_0x0bc2('0x5f'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x217557={'SEC_TO_TIME':_0x0bc2('0x61'),'DATE':_0x0bc2('0x62'),'HOUR':_0x0bc2('0x63'),'ROUND':_0x0bc2('0x64'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x568010=function(_0x1f8f74){return!_[_0x0bc2('0x66')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x0bc2('0x90'),_0x0bc2('0x91')],_0x1f8f74);};var _0x2b2452=function(_0x14c08c){if(!_0x14c08c||!_0x14c08c['rules'][_0x0bc2('0x3b')]){return'';}for(var _0x46d7e='(',_0x3eb262=0x0;_0x3eb262<_0x14c08c[_0x0bc2('0x68')][_0x0bc2('0x3b')];_0x3eb262+=0x1){_0x3eb262>0x0&&(_0x46d7e+='\x20'+_0x14c08c[_0x0bc2('0x69')]+'\x20');_0x46d7e+=_0x14c08c[_0x0bc2('0x68')][_0x3eb262][_0x0bc2('0x6a')]?_0x2b2452(_0x14c08c['rules'][_0x3eb262][_0x0bc2('0x6a')]):_0x14c08c[_0x0bc2('0x68')][_0x3eb262][_0x0bc2('0x6b')]+'\x20'+_0x14c08c[_0x0bc2('0x68')][_0x3eb262][_0x0bc2('0x6c')]+(_0x568010(_0x14c08c[_0x0bc2('0x68')][_0x3eb262][_0x0bc2('0x6c')])?'\x20'+_0x14c08c[_0x0bc2('0x68')][_0x3eb262][_0x0bc2('0x6d')]:'');}return _0x46d7e+')';};var _0x4a4f0d={'where':{'id':_0x59cf38['id']}},_0x5d98fa,_0x476a40,_0x418b36,_0x2fad45,_0xcbb2b7;_0x4a4f0d=_[_0x0bc2('0x42')]({},_0x4a4f0d,_0x24f12c);return db[_0x0bc2('0x2f')][_0x0bc2('0x4b')](_0x4a4f0d)[_0x0bc2('0x28')](function(_0x374d4f){if(_0x374d4f){_0x5d98fa=_0x374d4f;return _0x374d4f[_0x0bc2('0x6e')]();}return null;})[_0x0bc2('0x28')](function(_0xd136e6){if(_0xd136e6){if(!_0xd136e6[_0x0bc2('0x3b')]){throw new db[(_0x0bc2('0x6f'))]['ValidationErrorItem'](_0x0bc2('0x71'),0x193);}_0x476a40=_0xd136e6;return db[_0x0bc2('0x72')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x47cf9f){if(_0x47cf9f){_0x418b36=_[_0x0bc2('0x73')](_0x47cf9f,'id');var _0x29872e;var _0x486b0f=squel[_0x0bc2('0x92')]();_0x486b0f[_0x0bc2('0x74')](_0x5d98fa['table']);for(var _0x37beed=0x0;_0x37beed<_0x476a40[_0x0bc2('0x3b')];_0x37beed+=0x1){_0x29872e=_0x476a40[_0x37beed][_0x0bc2('0x75')]?_0x418b36[_0x476a40[_0x37beed]['MetricId']]['metric']:_0x476a40[_0x37beed]['field'];_0x29872e=_0x476a40[_0x37beed][_0x0bc2('0x77')]?_[_0x0bc2('0x79')](_0x319dcd[_0x476a40[_0x37beed]['function']],'%s',_0x29872e):_0x29872e;_0x29872e=_0x476a40[_0x37beed][_0x0bc2('0x78')]?_['replace'](_0x217557[_0x476a40[_0x37beed][_0x0bc2('0x78')]],'%s',_0x29872e):_0x29872e;if(_0x476a40[_0x37beed][_0x0bc2('0x7a')]){_0x486b0f[_0x0bc2('0x6a')](_0x29872e);}_0x476a40[_0x37beed]['orderBy']&&_0x486b0f[_0x0bc2('0x93')](_0x29872e,_0x476a40[_0x37beed]['orderBy']===_0x0bc2('0x7c')?![]:!![]);_0x486b0f[_0x0bc2('0x6b')](_0x29872e,_0x476a40[_0x37beed][_0x0bc2('0x7d')]||_0x29872e);}if(_0x5d98fa['joins']){_0x5d98fa[_0x0bc2('0x7e')]=JSON[_0x0bc2('0x7f')](_0x5d98fa[_0x0bc2('0x7e')]);for(var _0x27798f=0x0;_0x27798f<_0x5d98fa[_0x0bc2('0x7e')][_0x0bc2('0x3b')];_0x27798f+=0x1){if(_0x5d98fa[_0x0bc2('0x7e')][_0x27798f][_0x0bc2('0x80')]&&_[_0x0bc2('0x66')](_0xbbbc19,_0x5d98fa['joins'][_0x27798f][_0x0bc2('0x80')])&&_0x5d98fa[_0x0bc2('0x7e')][_0x27798f]['parentKey']&&_0x5d98fa[_0x0bc2('0x7e')][_0x27798f]['foreignTable']&&_0x5d98fa[_0x0bc2('0x7e')][_0x27798f][_0x0bc2('0x81')]){_0x486b0f[_0x5d98fa[_0x0bc2('0x7e')][_0x27798f][_0x0bc2('0x80')]](_0x5d98fa[_0x0bc2('0x7e')][_0x27798f]['foreignTable'],null,util['format'](_0x0bc2('0x94'),_0x5d98fa[_0x0bc2('0x83')],_0x5d98fa['joins'][_0x27798f]['parentKey'],_0x5d98fa[_0x0bc2('0x7e')][_0x27798f][_0x0bc2('0x82')],_0x5d98fa[_0x0bc2('0x7e')][_0x27798f]['foreignKey']));}}}if(_0x5d98fa[_0x0bc2('0x85')]){_0x5d98fa[_0x0bc2('0x85')]=JSON['parse'](_0x5d98fa[_0x0bc2('0x85')]);_0x486b0f[_0x0bc2('0x3f')](_0x2b2452(_0x5d98fa[_0x0bc2('0x85')][_0x0bc2('0x6a')]));}_0xcbb2b7=_0x486b0f[_0x0bc2('0x86')]();_0x486b0f[_0x0bc2('0x1d')](_0x4ccc74);_0x486b0f[_0x0bc2('0x1f')](0x0);return;}})[_0x0bc2('0x28')](function(){if(_0x3df27a[_0x0bc2('0x95')]===_0x0bc2('0x96')){return null;}var _0x525c40=_[_0x0bc2('0x42')](_0x3df27a,{'name':_0x3df27a[_0x0bc2('0x97')]||_0x3df27a['name']||_0x5d98fa[_0x0bc2('0x2c')],'basename':_0x1baf6d,'savename':util['format'](_0x0bc2('0x98'),_0x3df27a[_0x0bc2('0x2c')]||_0x5d98fa[_0x0bc2('0x2c')],require('randomstring')['generate'](0x4),_0x3df27a[_0x0bc2('0x95')]||_0x0bc2('0x99')),'reportId':_0x5d98fa['id'],'reportType':_0x0bc2('0x9a')});return db[_0x0bc2('0x9b')][_0x0bc2('0x4c')](_0x525c40,{'raw':!![]});})[_0x0bc2('0x28')](function(_0x531023){if(_0x5d98fa[_0x0bc2('0x83')]==='cdr'){_0xcbb2b7[_0x0bc2('0x3f')](_0x5d98fa['table']+_0x0bc2('0x9c'),_0x3df27a[_0x0bc2('0x9d')],_0x3df27a[_0x0bc2('0x9e')]);}else{_0xcbb2b7['where'](_0x5d98fa[_0x0bc2('0x83')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x3df27a[_0x0bc2('0x9d')],_0x3df27a[_0x0bc2('0x9e')]);}if(_0x531023){logger[_0x0bc2('0x9f')](_0x0bc2('0xa0'),_0xcbb2b7[_0x0bc2('0x89')]());require(_0x0bc2('0xa1'))[_0x0bc2('0xa2')](path[_0x0bc2('0x8d')](__dirname,_0x0bc2('0xa3'),_0x531023[_0x0bc2('0x95')]),[_0x531023['id'],_0xcbb2b7[_0x0bc2('0x89')](),path['join'](__dirname,'../../files/reports',_0x531023['savename']),_0x1baf6d]);return _0x531023;}else{var _0x4f34ac=squel[_0x0bc2('0x92')]();_0x4f34ac[_0x0bc2('0x74')]('('+_0xcbb2b7[_0x0bc2('0x89')]()+')',_0x0bc2('0xa4'));_0x4f34ac['field'](_0x0bc2('0xa5'),_0x0bc2('0x1e'));_0xcbb2b7['limit'](_0x3df27a[_0x0bc2('0x1d')]||_0x4ccc74);_0xcbb2b7[_0x0bc2('0x1f')](_0x3df27a[_0x0bc2('0x1f')]||0x0);return dbH[_0x0bc2('0x8a')]['query'](_0x4f34ac['toString'](),{'type':dbH[_0x0bc2('0x8a')]['QueryTypes'][_0x0bc2('0x8c')]})[_0x0bc2('0x28')](function(_0x5db7b7){if(!_0x5db7b7[_0x0bc2('0x3b')]){_0x2fad45=0x0;}else{_0x2fad45=_0x5db7b7[0x0][_0x0bc2('0x1e')]||0x0;}return dbH['sequelize']['query'](_0xcbb2b7[_0x0bc2('0x89')](),{'type':dbH[_0x0bc2('0x8a')][_0x0bc2('0x8b')][_0x0bc2('0x8c')]});})[_0x0bc2('0x28')](function(_0x170465){return{'rows':_0x170465||[],'count':_0x2fad45};});}});}exports['run']=function(_0x813b6b,_0x5e7645){return runReport(_0x813b6b['params'],_0x813b6b[_0x0bc2('0x35')],_0x813b6b['options'])['then'](respondWithResult(_0x5e7645,null))[_0x0bc2('0x47')](handleError(_0x5e7645,null));};exports[_0x0bc2('0xa6')]=runReport;exports[_0x0bc2('0x35')]=function(_0x3d3695,_0x47782a){var _0x1c7ec9=0xa;var _0x2ab1de=[_0x0bc2('0x8d'),_0x0bc2('0x57'),_0x0bc2('0x58'),_0x0bc2('0x59')];var _0x14d4f6={'SUM':_0x0bc2('0x8e'),'COUNT':_0x0bc2('0x5a'),'COUNT DISTINCT':_0x0bc2('0x5b'),'MAX':'MAX(%s)','MIN':_0x0bc2('0x8f'),'AVG':_0x0bc2('0x5d'),'GROUP_CONCAT':_0x0bc2('0x5e'),'GROUP_CONCAT ASC':_0x0bc2('0x5f'),'GROUP_CONCAT DESC':_0x0bc2('0x60')};var _0x53c54b={'SEC_TO_TIME':_0x0bc2('0x61'),'DATE':_0x0bc2('0x62'),'HOUR':_0x0bc2('0x63'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x0bc2('0x65')};var _0x304fde=function(_0x5ea3d8){return!_['includes']([_0x0bc2('0x67'),_0x0bc2('0xa7'),'IS\x20EMPTY',_0x0bc2('0x91')],_0x5ea3d8);};var _0x1ef3a2=function(_0x1af6c0){if(!_0x1af6c0||!_0x1af6c0[_0x0bc2('0x68')][_0x0bc2('0x3b')]){return'';}for(var _0x581ec8='(',_0x2846e0=0x0;_0x2846e0<_0x1af6c0[_0x0bc2('0x68')][_0x0bc2('0x3b')];_0x2846e0+=0x1){_0x2846e0>0x0&&(_0x581ec8+='\x20'+_0x1af6c0['operator']+'\x20');_0x581ec8+=_0x1af6c0['rules'][_0x2846e0][_0x0bc2('0x6a')]?_0x1ef3a2(_0x1af6c0['rules'][_0x2846e0][_0x0bc2('0x6a')]):_0x1af6c0[_0x0bc2('0x68')][_0x2846e0][_0x0bc2('0x6b')]+'\x20'+_0x1af6c0[_0x0bc2('0x68')][_0x2846e0][_0x0bc2('0x6c')]+(_0x304fde(_0x1af6c0[_0x0bc2('0x68')][_0x2846e0][_0x0bc2('0x6c')])?'\x20'+_0x1af6c0[_0x0bc2('0x68')][_0x2846e0][_0x0bc2('0x6d')]:'');}return _0x581ec8+')';};var _0x5637ce={'where':{'id':_0x3d3695[_0x0bc2('0x49')]['id']}},_0x4dcd96,_0x1b9dbf,_0x361538,_0x276b53,_0x51be3c;_0x5637ce=_[_0x0bc2('0x42')]({},_0x5637ce,_0x3d3695[_0x0bc2('0x4a')]);return db['AnalyticCustomReport'][_0x0bc2('0x4b')](_0x5637ce)[_0x0bc2('0x28')](function(_0x34c399){if(_0x34c399){_0x4dcd96=_0x34c399;return _0x34c399['getFields']();}return null;})[_0x0bc2('0x28')](function(_0x5b76e5){if(_0x5b76e5){if(!_0x5b76e5[_0x0bc2('0x3b')]){throw new db[(_0x0bc2('0x6f'))][(_0x0bc2('0x70'))](_0x0bc2('0x71'),0x193);}_0x1b9dbf=_0x5b76e5;return db[_0x0bc2('0x72')]['findAll']({'raw':!![]});}return null;})[_0x0bc2('0x28')](function(_0x422740){if(_0x422740){_0x361538=_[_0x0bc2('0x73')](_0x422740,'id');var _0x115d7e;var _0x298dfc=squel[_0x0bc2('0x92')]();_0x298dfc[_0x0bc2('0x74')](_0x4dcd96[_0x0bc2('0x83')]);for(var _0x244145=0x0;_0x244145<_0x1b9dbf[_0x0bc2('0x3b')];_0x244145+=0x1){_0x115d7e=_0x1b9dbf[_0x244145][_0x0bc2('0x75')]?_0x361538[_0x1b9dbf[_0x244145][_0x0bc2('0x75')]]['metric']:_0x1b9dbf[_0x244145][_0x0bc2('0x6b')];_0x115d7e=_0x1b9dbf[_0x244145]['function']?_['replace'](_0x14d4f6[_0x1b9dbf[_0x244145][_0x0bc2('0x77')]],'%s',_0x115d7e):_0x115d7e;_0x115d7e=_0x1b9dbf[_0x244145][_0x0bc2('0x78')]?_[_0x0bc2('0x79')](_0x53c54b[_0x1b9dbf[_0x244145]['format']],'%s',_0x115d7e):_0x115d7e;if(_0x1b9dbf[_0x244145][_0x0bc2('0x7a')]){_0x298dfc[_0x0bc2('0x6a')](_0x115d7e);}_0x1b9dbf[_0x244145][_0x0bc2('0x7b')]&&_0x298dfc[_0x0bc2('0x93')](_0x115d7e,_0x1b9dbf[_0x244145][_0x0bc2('0x7b')]===_0x0bc2('0x7c')?![]:!![]);_0x298dfc['field'](_0x115d7e,_0x1b9dbf[_0x244145][_0x0bc2('0x7d')]||_0x115d7e);}if(_0x4dcd96['joins']){_0x4dcd96[_0x0bc2('0x7e')]=JSON[_0x0bc2('0x7f')](_0x4dcd96[_0x0bc2('0x7e')]);for(var _0x2e1b8d=0x0;_0x2e1b8d<_0x4dcd96[_0x0bc2('0x7e')][_0x0bc2('0x3b')];_0x2e1b8d+=0x1){if(_0x4dcd96[_0x0bc2('0x7e')][_0x2e1b8d][_0x0bc2('0x80')]&&_['includes'](_0x2ab1de,_0x4dcd96[_0x0bc2('0x7e')][_0x2e1b8d][_0x0bc2('0x80')])&&_0x4dcd96['joins'][_0x2e1b8d][_0x0bc2('0x84')]&&_0x4dcd96[_0x0bc2('0x7e')][_0x2e1b8d][_0x0bc2('0x82')]&&_0x4dcd96[_0x0bc2('0x7e')][_0x2e1b8d]['foreignKey']){_0x298dfc[_0x4dcd96[_0x0bc2('0x7e')][_0x2e1b8d][_0x0bc2('0x80')]](_0x4dcd96[_0x0bc2('0x7e')][_0x2e1b8d][_0x0bc2('0x82')],null,util[_0x0bc2('0x78')]('%s.%s\x20=\x20%s.%s',_0x4dcd96[_0x0bc2('0x83')],_0x4dcd96[_0x0bc2('0x7e')][_0x2e1b8d]['parentKey'],_0x4dcd96[_0x0bc2('0x7e')][_0x2e1b8d][_0x0bc2('0x82')],_0x4dcd96['joins'][_0x2e1b8d][_0x0bc2('0x81')]));}}}if(_0x4dcd96['conditions']){_0x4dcd96['conditions']=JSON[_0x0bc2('0x7f')](_0x4dcd96['conditions']);_0x298dfc[_0x0bc2('0x3f')](_0x1ef3a2(_0x4dcd96[_0x0bc2('0x85')]['group']));}_0x51be3c=_0x298dfc[_0x0bc2('0x86')]();_0x298dfc[_0x0bc2('0x1d')](_0x1c7ec9);_0x298dfc[_0x0bc2('0x1f')](0x0);logger[_0x0bc2('0x87')](_0x0bc2('0x88'),_0x298dfc['toString']());return dbH[_0x0bc2('0x8a')]['query'](_0x298dfc[_0x0bc2('0x89')](),{'type':dbH[_0x0bc2('0x8a')][_0x0bc2('0x8b')][_0x0bc2('0x8c')]});}})[_0x0bc2('0x28')](function(){return{'sql':_0x51be3c[_0x0bc2('0x89')]()};})[_0x0bc2('0x28')](respondWithResult(_0x47782a,null))[_0x0bc2('0x47')](handleError(_0x47782a,null));};
\ No newline at end of file
index 798d534..d855a3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe715=['bluebird','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','exports','define','analytics_custom_reports','api','moment'];(function(_0x725b8e,_0xc22b48){var _0x43ac45=function(_0x46bb4a){while(--_0x46bb4a){_0x725b8e['push'](_0x725b8e['shift']());}};_0x43ac45(++_0xc22b48);}(_0xe715,0x132));var _0x5e71=function(_0x534a83,_0x42f120){_0x534a83=_0x534a83-0x0;var _0x2e764f=_0xe715[_0x534a83];return _0x2e764f;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x5e71('0x0'));var moment=require(_0x5e71('0x1'));var BPromise=require(_0x5e71('0x2'));var rp=require(_0x5e71('0x3'));var fs=require('fs');var path=require(_0x5e71('0x4'));var rimraf=require(_0x5e71('0x5'));var config=require(_0x5e71('0x6'));var attributes=require(_0x5e71('0x7'));module[_0x5e71('0x8')]=function(_0x6c6071,_0x59f198){return _0x6c6071[_0x5e71('0x9')]('AnalyticCustomReport',attributes,{'tableName':_0x5e71('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7d7b=['rimraf','./analyticCustomReport.attributes','define','analytics_custom_reports','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x4280c3,_0x8ae891){var _0x3fd914=function(_0x3c2f9c){while(--_0x3c2f9c){_0x4280c3['push'](_0x4280c3['shift']());}};_0x3fd914(++_0x8ae891);}(_0x7d7b,0x185));var _0xb7d7=function(_0x4039b5,_0xf884f){_0x4039b5=_0x4039b5-0x0;var _0x4bf30b=_0x7d7b[_0x4039b5];return _0x4bf30b;};'use strict';var _=require(_0xb7d7('0x0'));var util=require(_0xb7d7('0x1'));var logger=require('../../config/logger')(_0xb7d7('0x2'));var moment=require(_0xb7d7('0x3'));var BPromise=require(_0xb7d7('0x4'));var rp=require(_0xb7d7('0x5'));var fs=require('fs');var path=require(_0xb7d7('0x6'));var rimraf=require(_0xb7d7('0x7'));var config=require('../../config/environment');var attributes=require(_0xb7d7('0x8'));module['exports']=function(_0x389070,_0x5a025d){return _0x389070[_0xb7d7('0x9')]('AnalyticCustomReport',attributes,{'tableName':_0xb7d7('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f45092b..d6fbd30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb74e=['request','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x20e375,_0xdc0dde){var _0x55ac5d=function(_0x4a9b96){while(--_0x4a9b96){_0x20e375['push'](_0x20e375['shift']());}};_0x55ac5d(++_0xdc0dde);}(_0xb74e,0x1d9));var _0xeb74=function(_0x327867,_0x52e5e3){_0x327867=_0x327867-0x0;var _0x5061e0=_0xb74e[_0x327867];return _0x5061e0;};'use strict';var _=require(_0xeb74('0x0'));var util=require(_0xeb74('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xeb74('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeb74('0x3'));var logger=require(_0xeb74('0x4'))(_0xeb74('0x5'));var config=require(_0xeb74('0x6'));var jayson=require(_0xeb74('0x7'));var client=jayson[_0xeb74('0x8')][_0xeb74('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x44cb91,_0x1d168f,_0x3e8604){return new BPromise(function(_0x2bb3d2,_0xe55b5a){return client[_0xeb74('0xa')](_0x44cb91,_0x3e8604)[_0xeb74('0xb')](function(_0x58bc92){logger[_0xeb74('0xc')](_0xeb74('0xd'),_0x1d168f,_0xeb74('0xe'));logger['debug']('AnalyticCustomReport,\x20%s,\x20%s,\x20%s',_0x1d168f,_0xeb74('0xe'),JSON[_0xeb74('0xf')](_0x58bc92));if(_0x58bc92[_0xeb74('0x10')]){if(_0x58bc92[_0xeb74('0x10')][_0xeb74('0x11')]===0x1f4){logger['error'](_0xeb74('0xd'),_0x1d168f,_0x58bc92[_0xeb74('0x10')]['message']);return _0xe55b5a(_0x58bc92[_0xeb74('0x10')]['message']);}logger[_0xeb74('0x10')](_0xeb74('0xd'),_0x1d168f,_0x58bc92[_0xeb74('0x10')][_0xeb74('0x12')]);return _0x2bb3d2(_0x58bc92[_0xeb74('0x10')][_0xeb74('0x12')]);}else{logger[_0xeb74('0xc')](_0xeb74('0xd'),_0x1d168f,_0xeb74('0xe'));_0x2bb3d2(_0x58bc92[_0xeb74('0x13')][_0xeb74('0x12')]);}})[_0xeb74('0x14')](function(_0xde40e1){logger[_0xeb74('0x10')](_0xeb74('0xd'),_0x1d168f,_0xde40e1);_0xe55b5a(_0xde40e1);});});}
\ No newline at end of file
+var _0x819f=['AnalyticCustomReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','AnalyticCustomReport,\x20%s,\x20%s','message','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','debug'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x819f,0x8d));var _0xf819=function(_0x1ca93c,_0x3271ab){_0x1ca93c=_0x1ca93c-0x0;var _0x185169=_0x819f[_0x1ca93c];return _0x185169;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf819('0x0'));var BPromise=require(_0xf819('0x1'));var rs=require(_0xf819('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf819('0x3'))['db'];var utils=require(_0xf819('0x4'));var logger=require(_0xf819('0x5'))(_0xf819('0x6'));var config=require(_0xf819('0x7'));var jayson=require(_0xf819('0x8'));var client=jayson['client'][_0xf819('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xb03389,_0x1ec2b6,_0x4e4a8e){return new BPromise(function(_0x2cad05,_0x424c3c){return client[_0xf819('0xa')](_0xb03389,_0x4e4a8e)['then'](function(_0x791a72){logger[_0xf819('0xb')]('AnalyticCustomReport,\x20%s,\x20%s',_0x1ec2b6,'request\x20sent');logger[_0xf819('0xc')](_0xf819('0xd'),_0x1ec2b6,_0xf819('0xe'),JSON[_0xf819('0xf')](_0x791a72));if(_0x791a72[_0xf819('0x10')]){if(_0x791a72[_0xf819('0x10')][_0xf819('0x11')]===0x1f4){logger[_0xf819('0x10')](_0xf819('0x12'),_0x1ec2b6,_0x791a72[_0xf819('0x10')][_0xf819('0x13')]);return _0x424c3c(_0x791a72['error']['message']);}logger['error'](_0xf819('0x12'),_0x1ec2b6,_0x791a72[_0xf819('0x10')][_0xf819('0x13')]);return _0x2cad05(_0x791a72['error']['message']);}else{logger['info'](_0xf819('0x12'),_0x1ec2b6,'request\x20sent');_0x2cad05(_0x791a72[_0xf819('0x14')][_0xf819('0x13')]);}})[_0xf819('0x15')](function(_0x445952){logger[_0xf819('0x10')](_0xf819('0x12'),_0x1ec2b6,_0x445952);_0x424c3c(_0x445952);});});}
\ No newline at end of file
index 22ebf89..93b0d89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e8e=['../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','index','/:id','show','/:id/preview','preview','run','query','post','create','delete','destroy','exports','util','path','express','Router','../../components/auth/service'];(function(_0xdf7da7,_0x3428e3){var _0x39c3d1=function(_0x31e29c){while(--_0x31e29c){_0xdf7da7['push'](_0xdf7da7['shift']());}};_0x39c3d1(++_0x3428e3);}(_0x6e8e,0x171));var _0xe6e8=function(_0x21ef21,_0x3e8e28){_0x21ef21=_0x21ef21-0x0;var _0x4c35ba=_0x6e8e[_0x21ef21];return _0x4c35ba;};'use strict';var multer=require('multer');var util=require(_0xe6e8('0x0'));var path=require(_0xe6e8('0x1'));var timeout=require('connect-timeout');var express=require(_0xe6e8('0x2'));var router=express[_0xe6e8('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xe6e8('0x4'));var interaction=require(_0xe6e8('0x5'));var config=require(_0xe6e8('0x6'));var controller=require(_0xe6e8('0x7'));router[_0xe6e8('0x8')]('/',auth[_0xe6e8('0x9')](),controller[_0xe6e8('0xa')]);router[_0xe6e8('0x8')](_0xe6e8('0xb'),auth[_0xe6e8('0x9')](),controller[_0xe6e8('0xc')]);router['get'](_0xe6e8('0xd'),auth[_0xe6e8('0x9')](),controller[_0xe6e8('0xe')]);router[_0xe6e8('0x8')]('/:id/run',auth[_0xe6e8('0x9')](),controller[_0xe6e8('0xf')]);router[_0xe6e8('0x8')]('/:id/query',auth['isAuthenticated'](),controller[_0xe6e8('0x10')]);router[_0xe6e8('0x11')]('/',auth[_0xe6e8('0x9')](),controller[_0xe6e8('0x12')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0xe6e8('0x13')]('/:id',auth[_0xe6e8('0x9')](),controller[_0xe6e8('0x14')]);module[_0xe6e8('0x15')]=router;
\ No newline at end of file
+var _0xf9e1=['/:id/preview','/:id/run','run','/:id/query','query','create','put','/:id','update','delete','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticCustomReport.controller','get','isAuthenticated','show'];(function(_0x3745ad,_0x5b4f6c){var _0x2ce9ab=function(_0x35bfe0){while(--_0x35bfe0){_0x3745ad['push'](_0x3745ad['shift']());}};_0x2ce9ab(++_0x5b4f6c);}(_0xf9e1,0x16b));var _0x1f9e=function(_0x5df766,_0x385e41){_0x5df766=_0x5df766-0x0;var _0x17e175=_0xf9e1[_0x5df766];return _0x17e175;};'use strict';var multer=require('multer');var util=require(_0x1f9e('0x0'));var path=require('path');var timeout=require(_0x1f9e('0x1'));var express=require(_0x1f9e('0x2'));var router=express[_0x1f9e('0x3')]();var fs_extra=require(_0x1f9e('0x4'));var auth=require(_0x1f9e('0x5'));var interaction=require(_0x1f9e('0x6'));var config=require('../../config/environment');var controller=require(_0x1f9e('0x7'));router[_0x1f9e('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x1f9e('0x8')]('/:id',auth[_0x1f9e('0x9')](),controller[_0x1f9e('0xa')]);router[_0x1f9e('0x8')](_0x1f9e('0xb'),auth['isAuthenticated'](),controller['preview']);router[_0x1f9e('0x8')](_0x1f9e('0xc'),auth[_0x1f9e('0x9')](),controller[_0x1f9e('0xd')]);router['get'](_0x1f9e('0xe'),auth[_0x1f9e('0x9')](),controller[_0x1f9e('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x1f9e('0x10')]);router[_0x1f9e('0x11')](_0x1f9e('0x12'),auth['isAuthenticated'](),controller[_0x1f9e('0x13')]);router[_0x1f9e('0x14')](_0x1f9e('0x12'),auth[_0x1f9e('0x9')](),controller['destroy']);module[_0x1f9e('0x15')]=router;
\ No newline at end of file
index 916957b..d432aac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd1=['STRING','TEXT','sequelize'];(function(_0x2e78e9,_0x42957c){var _0x35aad4=function(_0x360fa1){while(--_0x360fa1){_0x2e78e9['push'](_0x2e78e9['shift']());}};_0x35aad4(++_0x42957c);}(_0x5fd1,0x155));var _0x15fd=function(_0x4ac8de,_0x603d63){_0x4ac8de=_0x4ac8de-0x0;var _0x37cfe5=_0x5fd1[_0x4ac8de];return _0x37cfe5;};'use strict';var Sequelize=require(_0x15fd('0x0'));module['exports']={'name':{'type':Sequelize[_0x15fd('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x15fd('0x1')]},'parent':{'type':Sequelize[_0x15fd('0x1')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0x15fd('0x2')]}};
\ No newline at end of file
+var _0xf494=['STRING','TEXT','sequelize','exports'];(function(_0x31c978,_0x9ec435){var _0x384c44=function(_0x38501d){while(--_0x38501d){_0x31c978['push'](_0x31c978['shift']());}};_0x384c44(++_0x9ec435);}(_0xf494,0x1c6));var _0x4f49=function(_0x4b8e77,_0xceac66){_0x4b8e77=_0x4b8e77-0x0;var _0x5ca7ae=_0xf494[_0x4b8e77];return _0x5ca7ae;};'use strict';var Sequelize=require(_0x4f49('0x0'));module[_0x4f49('0x1')]={'name':{'type':Sequelize[_0x4f49('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x4f49('0x2')]},'table':{'type':Sequelize[_0x4f49('0x2')]},'conditions':{'type':Sequelize[_0x4f49('0x3')]},'joins':{'type':Sequelize[_0x4f49('0x3')]}};
\ No newline at end of file
index e52e707..c5ff5c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','COUNT(DISTINCT\x20%s)','from','function','order','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','countTable','run','params','runReport','AVG(%s)','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','status','end','limit','undefined','count','offset','Content-Range','apply','save','update','then','destroy','get','DefaultReports','UserProfileResource','sendStatus','error','stack','name','send','index','map','AnalyticDefaultReport','rawAttributes','type','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','query','where','pick','filters','filter','VIRTUAL','merge','options','include','findAll','rows','catch','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','MAX(%s)','MIN(%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)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','table','MetricId','metric','replace','format','groupBy','orderBy','DESC','alias','joins','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone'];(function(_0x4043b3,_0x199e56){var _0x2396b7=function(_0x29a2b9){while(--_0x29a2b9){_0x4043b3['push'](_0x4043b3['shift']());}};_0x2396b7(++_0x199e56);}(_0x5fab,0x177));var _0xb5fa=function(_0x5a596f,_0x776d83){_0x5a596f=_0x5a596f-0x0;var _0x23a0e9=_0x5fab[_0x5a596f];return _0x23a0e9;};'use strict';var emlformat=require(_0xb5fa('0x0'));var rimraf=require(_0xb5fa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb5fa('0x2'));var rp=require(_0xb5fa('0x3'));var moment=require(_0xb5fa('0x4'));var BPromise=require(_0xb5fa('0x5'));var Mustache=require(_0xb5fa('0x6'));var util=require(_0xb5fa('0x7'));var path=require(_0xb5fa('0x8'));var sox=require(_0xb5fa('0x9'));var csv=require(_0xb5fa('0xa'));var ejs=require(_0xb5fa('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb5fa('0xc'));var crypto=require(_0xb5fa('0xd'));var jsforce=require(_0xb5fa('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xb5fa('0xa'));var querystring=require(_0xb5fa('0xf'));var Papa=require(_0xb5fa('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb5fa('0x11'));var as=require(_0xb5fa('0x12'));var hardwareService=require(_0xb5fa('0x13'));var logger=require(_0xb5fa('0x14'))(_0xb5fa('0x15'));var utils=require(_0xb5fa('0x16'));var config=require(_0xb5fa('0x17'));var licenseUtil=require(_0xb5fa('0x18'));var db=require(_0xb5fa('0x19'))['db'];var dbH=require('../../mysqldb')[_0xb5fa('0x1a')];function respondWithStatusCode(_0x3dad4d,_0x56e8b0){_0x56e8b0=_0x56e8b0||0xcc;return function(_0x116849){if(_0x116849){return _0x3dad4d['sendStatus'](_0x56e8b0);}return _0x3dad4d[_0xb5fa('0x1b')](_0x56e8b0)[_0xb5fa('0x1c')]();};}function respondWithResult(_0x40c914,_0xca8d82){_0xca8d82=_0xca8d82||0xc8;return function(_0x8e9d1c){if(_0x8e9d1c){return _0x40c914['status'](_0xca8d82)['json'](_0x8e9d1c);}};}function respondWithFilteredResult(_0x38e964,_0x587043){return function(_0x31f252){if(_0x31f252){var _0x27c8f7=typeof _0x587043['offset']==='undefined'&&typeof _0x587043[_0xb5fa('0x1d')]===_0xb5fa('0x1e');var _0x32e9e5=_0x31f252[_0xb5fa('0x1f')];var _0x324ba5=_0x27c8f7?0x0:_0x587043[_0xb5fa('0x20')];var _0x3b0f69=_0x27c8f7?_0x31f252[_0xb5fa('0x1f')]:_0x587043[_0xb5fa('0x20')]+_0x587043[_0xb5fa('0x1d')];var _0x3c8d53;if(_0x3b0f69>=_0x32e9e5){_0x3b0f69=_0x32e9e5;_0x3c8d53=0xc8;}else{_0x3c8d53=0xce;}_0x38e964[_0xb5fa('0x1b')](_0x3c8d53);return _0x38e964['set'](_0xb5fa('0x21'),_0x324ba5+'-'+_0x3b0f69+'/'+_0x32e9e5)['json'](_0x31f252);}return null;};}function patchUpdates(_0x37ae06){return function(_0x4a6c04){try{jsonpatch[_0xb5fa('0x22')](_0x4a6c04,_0x37ae06,!![]);}catch(_0x43c09f){return BPromise['reject'](_0x43c09f);}return _0x4a6c04[_0xb5fa('0x23')]();};}function saveUpdates(_0x3a2ab9,_0x283a56){return function(_0x47f71a){if(_0x47f71a){return _0x47f71a[_0xb5fa('0x24')](_0x3a2ab9)[_0xb5fa('0x25')](function(_0x444237){return _0x444237;});}return null;};}function removeEntity(_0x542348,_0x224ec8){return function(_0x5d55f7){if(_0x5d55f7){return _0x5d55f7[_0xb5fa('0x26')]()[_0xb5fa('0x25')](function(){var _0x11053a=_0x5d55f7[_0xb5fa('0x27')]({'plain':!![]});var _0x2dbd22=_0xb5fa('0x28');return db[_0xb5fa('0x29')][_0xb5fa('0x26')]({'where':{'type':_0x2dbd22,'resourceId':_0x11053a['id']}})['then'](function(){return _0x5d55f7;});})['then'](function(){_0x542348['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x28a350,_0x460b54){return function(_0x12c0d4){if(!_0x12c0d4){_0x28a350[_0xb5fa('0x2a')](0x194);}return _0x12c0d4;};}function handleError(_0x534884,_0x3506a4){_0x3506a4=_0x3506a4||0x1f4;return function(_0x358549){logger[_0xb5fa('0x2b')](_0x358549[_0xb5fa('0x2c')]);if(_0x358549[_0xb5fa('0x2d')]){delete _0x358549[_0xb5fa('0x2d')];}_0x534884[_0xb5fa('0x1b')](_0x3506a4)[_0xb5fa('0x2e')](_0x358549);};}exports[_0xb5fa('0x2f')]=function(_0xed02e,_0x116773){var _0x5a0152={},_0x3fd1fb={},_0x21fc7e={'count':0x0,'rows':[]};var _0x319c48=_[_0xb5fa('0x30')](db[_0xb5fa('0x31')][_0xb5fa('0x32')],function(_0x25fc7c){return{'name':_0x25fc7c['fieldName'],'type':_0x25fc7c[_0xb5fa('0x33')]['key']};});_0x3fd1fb['model']=_['map'](_0x319c48,_0xb5fa('0x2d'));_0x3fd1fb['query']=_[_0xb5fa('0x34')](_0xed02e['query']);_0x3fd1fb['filters']=_[_0xb5fa('0x35')](_0x3fd1fb[_0xb5fa('0x36')],_0x3fd1fb['query']);_0x5a0152['attributes']=_[_0xb5fa('0x35')](_0x3fd1fb[_0xb5fa('0x36')],qs[_0xb5fa('0x37')](_0xed02e['query'][_0xb5fa('0x37')]));_0x5a0152[_0xb5fa('0x38')]=_0x5a0152['attributes'][_0xb5fa('0x39')]?_0x5a0152[_0xb5fa('0x38')]:_0x3fd1fb[_0xb5fa('0x36')];if(!_0xed02e['query'][_0xb5fa('0x3a')](_0xb5fa('0x3b'))){_0x5a0152[_0xb5fa('0x1d')]=qs['limit'](_0xed02e[_0xb5fa('0x3c')][_0xb5fa('0x1d')]);_0x5a0152[_0xb5fa('0x20')]=qs[_0xb5fa('0x20')](_0xed02e['query']['offset']);}_0x5a0152['order']=qs['sort'](_0xed02e['query']['sort']);_0x5a0152[_0xb5fa('0x3d')]=qs['filters'](_[_0xb5fa('0x3e')](_0xed02e[_0xb5fa('0x3c')],_0x3fd1fb[_0xb5fa('0x3f')]),_0x319c48);if(_0xed02e[_0xb5fa('0x3c')][_0xb5fa('0x40')]){_0x5a0152[_0xb5fa('0x3d')]=_['merge'](_0x5a0152['where'],{'$or':_['map'](_0x319c48,function(_0x534b38){if(_0x534b38['type']!==_0xb5fa('0x41')){var _0x5addd5={};_0x5addd5[_0x534b38['name']]={'$like':'%'+_0xed02e[_0xb5fa('0x3c')][_0xb5fa('0x40')]+'%'};return _0x5addd5;}})});}_0x5a0152=_[_0xb5fa('0x42')]({},_0x5a0152,_0xed02e[_0xb5fa('0x43')]);var _0x5bc93f={'where':_0x5a0152[_0xb5fa('0x3d')]};return db[_0xb5fa('0x31')][_0xb5fa('0x1f')](_0x5bc93f)[_0xb5fa('0x25')](function(_0x402a68){_0x21fc7e['count']=_0x402a68;if(_0xed02e[_0xb5fa('0x3c')]['includeAll']){_0x5a0152[_0xb5fa('0x44')]=[{'all':!![]}];}return db[_0xb5fa('0x31')][_0xb5fa('0x45')](_0x5a0152);})[_0xb5fa('0x25')](function(_0x1c706b){_0x21fc7e[_0xb5fa('0x46')]=_0x1c706b;return _0x21fc7e;})[_0xb5fa('0x25')](respondWithFilteredResult(_0x116773,_0x5a0152))[_0xb5fa('0x47')](handleError(_0x116773,null));};exports['show']=function(_0x1c3c2c,_0xc03e44){var _0x59ae64={'raw':!![],'where':{'id':_0x1c3c2c['params']['id']}},_0x293c19={};_0x293c19[_0xb5fa('0x36')]=_[_0xb5fa('0x34')](db['AnalyticDefaultReport']['rawAttributes']);_0x293c19[_0xb5fa('0x3c')]=_[_0xb5fa('0x34')](_0x1c3c2c[_0xb5fa('0x3c')]);_0x293c19[_0xb5fa('0x3f')]=_[_0xb5fa('0x35')](_0x293c19[_0xb5fa('0x36')],_0x293c19[_0xb5fa('0x3c')]);_0x59ae64[_0xb5fa('0x38')]=_['intersection'](_0x293c19[_0xb5fa('0x36')],qs[_0xb5fa('0x37')](_0x1c3c2c['query'][_0xb5fa('0x37')]));_0x59ae64[_0xb5fa('0x38')]=_0x59ae64[_0xb5fa('0x38')][_0xb5fa('0x39')]?_0x59ae64[_0xb5fa('0x38')]:_0x293c19[_0xb5fa('0x36')];if(_0x1c3c2c[_0xb5fa('0x3c')][_0xb5fa('0x48')]){_0x59ae64[_0xb5fa('0x44')]=[{'all':!![]}];}_0x59ae64=_[_0xb5fa('0x42')]({},_0x59ae64,_0x1c3c2c[_0xb5fa('0x43')]);return db[_0xb5fa('0x31')][_0xb5fa('0x49')](_0x59ae64)[_0xb5fa('0x25')](handleEntityNotFound(_0xc03e44,null))[_0xb5fa('0x25')](respondWithResult(_0xc03e44,null))[_0xb5fa('0x47')](handleError(_0xc03e44,null));};exports['create']=function(_0x56dceb,_0x46194d){return db['AnalyticDefaultReport'][_0xb5fa('0x4a')](_0x56dceb[_0xb5fa('0x4b')],{})['then'](function(_0x4ef1d0){var _0x2931a7=_0x56dceb[_0xb5fa('0x4c')][_0xb5fa('0x27')]({'plain':!![]});if(!_0x2931a7)throw new Error(_0xb5fa('0x4d'));if(_0x2931a7[_0xb5fa('0x4e')]==='user'){var _0x27a651=_0x4ef1d0['get']({'plain':!![]});var _0x251d36=_0xb5fa('0x4f');return db[_0xb5fa('0x50')]['find']({'where':{'name':_0x251d36,'userProfileId':_0x2931a7[_0xb5fa('0x51')]},'raw':!![]})[_0xb5fa('0x25')](function(_0x4dea87){if(_0x4dea87&&_0x4dea87['autoAssociation']===0x0){return db[_0xb5fa('0x29')][_0xb5fa('0x4a')]({'name':_0x27a651[_0xb5fa('0x2d')],'resourceId':_0x27a651['id'],'type':_0xb5fa('0x28'),'sectionId':_0x4dea87['id']},{})[_0xb5fa('0x25')](function(){return _0x4ef1d0;});}else{return _0x4ef1d0;}})[_0xb5fa('0x47')](function(_0x31c91f){logger[_0xb5fa('0x2b')](_0xb5fa('0x52'),_0x31c91f);throw _0x31c91f;});}return _0x4ef1d0;})[_0xb5fa('0x25')](respondWithResult(_0x46194d,0xc9))[_0xb5fa('0x47')](handleError(_0x46194d,null));};exports[_0xb5fa('0x24')]=function(_0x3ccfd1,_0x2799e7){if(_0x3ccfd1[_0xb5fa('0x4b')]['id']){delete _0x3ccfd1[_0xb5fa('0x4b')]['id'];}return db[_0xb5fa('0x31')][_0xb5fa('0x49')]({'where':{'id':_0x3ccfd1['params']['id']}})[_0xb5fa('0x25')](handleEntityNotFound(_0x2799e7,null))[_0xb5fa('0x25')](saveUpdates(_0x3ccfd1[_0xb5fa('0x4b')],null))[_0xb5fa('0x25')](respondWithResult(_0x2799e7,null))[_0xb5fa('0x47')](handleError(_0x2799e7,null));};exports[_0xb5fa('0x26')]=function(_0x4224cf,_0x24117e){return db[_0xb5fa('0x31')][_0xb5fa('0x49')]({'where':{'id':_0x4224cf['params']['id']}})['then'](handleEntityNotFound(_0x24117e,null))[_0xb5fa('0x25')](removeEntity(_0x24117e,null))[_0xb5fa('0x47')](handleError(_0x24117e,null));};exports[_0xb5fa('0x53')]=function(_0x5caf84,_0x441c41){var _0x367f7a=0xa;var _0x1572fb=[_0xb5fa('0x54'),_0xb5fa('0x55'),_0xb5fa('0x56'),_0xb5fa('0x57')];var _0x4f82f0={'SUM':_0xb5fa('0x58'),'COUNT':_0xb5fa('0x59'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xb5fa('0x5a'),'MIN':_0xb5fa('0x5b'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xb5fa('0x5c'),'GROUP_CONCAT ASC':_0xb5fa('0x5d'),'GROUP_CONCAT DESC':_0xb5fa('0x5e')};var _0x2b9a45={'SEC_TO_TIME':_0xb5fa('0x5f'),'DATE':_0xb5fa('0x60'),'HOUR':_0xb5fa('0x61'),'ROUND':_0xb5fa('0x62'),'UNIX_TIMESTAMP':_0xb5fa('0x63')};var _0x1c24e3=function(_0xfb88cc){return!_[_0xb5fa('0x64')]([_0xb5fa('0x65'),_0xb5fa('0x66'),_0xb5fa('0x67'),_0xb5fa('0x68')],_0xfb88cc);};var _0x41cce9=function(_0x23fb01){if(!_0x23fb01||!_0x23fb01[_0xb5fa('0x69')][_0xb5fa('0x39')]){return'';}for(var _0x421a93='(',_0x36fc0f=0x0;_0x36fc0f<_0x23fb01['rules'][_0xb5fa('0x39')];_0x36fc0f+=0x1){_0x36fc0f>0x0&&(_0x421a93+='\x20'+_0x23fb01[_0xb5fa('0x6a')]+'\x20');_0x421a93+=_0x23fb01[_0xb5fa('0x69')][_0x36fc0f]['group']?_0x41cce9(_0x23fb01[_0xb5fa('0x69')][_0x36fc0f][_0xb5fa('0x6b')]):_0x23fb01['rules'][_0x36fc0f][_0xb5fa('0x6c')]+'\x20'+_0x23fb01[_0xb5fa('0x69')][_0x36fc0f][_0xb5fa('0x6d')]+(_0x1c24e3(_0x23fb01['rules'][_0x36fc0f]['condition'])?'\x20'+_0x23fb01[_0xb5fa('0x69')][_0x36fc0f][_0xb5fa('0x6e')]:'');}return _0x421a93+')';};var _0x432f04={'where':{'id':_0x5caf84['params']['id']}},_0x57d8b7,_0x597206,_0x30d53b,_0x199555,_0x12b0a2;_0x432f04=_['merge']({},_0x432f04,_0x5caf84['options']);return db[_0xb5fa('0x31')][_0xb5fa('0x49')](_0x432f04)[_0xb5fa('0x25')](function(_0x4ce1bd){if(_0x4ce1bd){_0x57d8b7=_0x4ce1bd;return _0x4ce1bd[_0xb5fa('0x6f')]();}return null;})[_0xb5fa('0x25')](function(_0x13ef3a){if(_0x13ef3a){if(!_0x13ef3a[_0xb5fa('0x39')]){throw new db[(_0xb5fa('0x70'))][(_0xb5fa('0x71'))](_0xb5fa('0x72'),0x193);}_0x597206=_0x13ef3a;return db[_0xb5fa('0x73')][_0xb5fa('0x45')]({'raw':!![]});}return null;})[_0xb5fa('0x25')](function(_0x3a1db9){if(_0x3a1db9){_0x30d53b=_[_0xb5fa('0x74')](_0x3a1db9,'id');var _0xecdff3;var _0x38faa6=squel[_0xb5fa('0x75')]();_0x38faa6['from'](_0x57d8b7[_0xb5fa('0x76')]);for(var _0x5a6f74=0x0;_0x5a6f74<_0x597206[_0xb5fa('0x39')];_0x5a6f74+=0x1){_0xecdff3=_0x597206[_0x5a6f74][_0xb5fa('0x77')]?_0x30d53b[_0x597206[_0x5a6f74][_0xb5fa('0x77')]][_0xb5fa('0x78')]:_0x597206[_0x5a6f74][_0xb5fa('0x6c')];_0xecdff3=_0x597206[_0x5a6f74]['function']?_[_0xb5fa('0x79')](_0x4f82f0[_0x597206[_0x5a6f74]['function']],'%s',_0xecdff3):_0xecdff3;_0xecdff3=_0x597206[_0x5a6f74][_0xb5fa('0x7a')]?_[_0xb5fa('0x79')](_0x2b9a45[_0x597206[_0x5a6f74][_0xb5fa('0x7a')]],'%s',_0xecdff3):_0xecdff3;if(_0x597206[_0x5a6f74][_0xb5fa('0x7b')]){_0x38faa6['group'](_0xecdff3);}_0x597206[_0x5a6f74]['orderBy']&&_0x38faa6['order'](_0xecdff3,_0x597206[_0x5a6f74][_0xb5fa('0x7c')]===_0xb5fa('0x7d')?![]:!![]);_0x38faa6[_0xb5fa('0x6c')](_0xecdff3,_0x597206[_0x5a6f74][_0xb5fa('0x7e')]||_0xecdff3);}if(_0x57d8b7[_0xb5fa('0x7f')]){_0x57d8b7[_0xb5fa('0x7f')]=JSON['parse'](_0x57d8b7[_0xb5fa('0x7f')]);for(var _0x5c08e1=0x0;_0x5c08e1<_0x57d8b7['joins'][_0xb5fa('0x39')];_0x5c08e1+=0x1){if(_0x57d8b7['joins'][_0x5c08e1]['type']&&_['includes'](_0x1572fb,_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1]['type'])&&_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x80')]&&_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1]['foreignTable']&&_0x57d8b7['joins'][_0x5c08e1][_0xb5fa('0x81')]){_0x38faa6[_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1]['type']](_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x82')],null,util[_0xb5fa('0x7a')](_0xb5fa('0x83'),_0x57d8b7['table'],_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x80')],_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x82')],_0x57d8b7[_0xb5fa('0x7f')][_0x5c08e1][_0xb5fa('0x81')]));}}}if(_0x57d8b7[_0xb5fa('0x84')]){_0x57d8b7['conditions']=JSON[_0xb5fa('0x85')](_0x57d8b7['conditions']);_0x38faa6[_0xb5fa('0x3d')](_0x41cce9(_0x57d8b7[_0xb5fa('0x84')]['group']));}_0x12b0a2=_0x38faa6[_0xb5fa('0x86')]();_0x38faa6[_0xb5fa('0x1d')](_0x367f7a);_0x38faa6[_0xb5fa('0x20')](0x0);logger[_0xb5fa('0x87')](_0xb5fa('0x88'),_0x38faa6[_0xb5fa('0x89')]());return dbH[_0xb5fa('0x8a')][_0xb5fa('0x3c')](_0x38faa6['toString'](),{'type':dbH[_0xb5fa('0x8a')][_0xb5fa('0x8b')][_0xb5fa('0x8c')]});}})[_0xb5fa('0x25')](respondWithResult(_0x441c41,null))['catch'](handleError(_0x441c41,null));};function runReport(_0x593386,_0x47d72b,_0x5557a3){var _0x1c60bd=_0x47d72b[_0xb5fa('0x2d')];var _0xff504d=0xa;var _0x188e66=['join','left_join',_0xb5fa('0x56'),'cross_join'];var _0x32eebd={'SUM':_0xb5fa('0x58'),'COUNT':_0xb5fa('0x59'),'COUNT DISTINCT':_0xb5fa('0x8d'),'MAX':'MAX(%s)','MIN':_0xb5fa('0x5b'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xb5fa('0x5c'),'GROUP_CONCAT ASC':_0xb5fa('0x5d'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x5e6852={'SEC_TO_TIME':_0xb5fa('0x5f'),'DATE':_0xb5fa('0x60'),'HOUR':_0xb5fa('0x61'),'ROUND':_0xb5fa('0x62'),'UNIX_TIMESTAMP':_0xb5fa('0x63')};var _0xa7fd3b=function(_0x42e210){return!_[_0xb5fa('0x64')]([_0xb5fa('0x65'),_0xb5fa('0x66'),_0xb5fa('0x67'),_0xb5fa('0x68')],_0x42e210);};var _0x86dfe9=function(_0x53c7b5){if(!_0x53c7b5||!_0x53c7b5['rules'][_0xb5fa('0x39')]){return'';}for(var _0x52384b='(',_0x1cb113=0x0;_0x1cb113<_0x53c7b5[_0xb5fa('0x69')]['length'];_0x1cb113+=0x1){_0x1cb113>0x0&&(_0x52384b+='\x20'+_0x53c7b5[_0xb5fa('0x6a')]+'\x20');_0x52384b+=_0x53c7b5[_0xb5fa('0x69')][_0x1cb113]['group']?_0x86dfe9(_0x53c7b5[_0xb5fa('0x69')][_0x1cb113][_0xb5fa('0x6b')]):_0x53c7b5['rules'][_0x1cb113][_0xb5fa('0x6c')]+'\x20'+_0x53c7b5[_0xb5fa('0x69')][_0x1cb113][_0xb5fa('0x6d')]+(_0xa7fd3b(_0x53c7b5['rules'][_0x1cb113]['condition'])?'\x20'+_0x53c7b5[_0xb5fa('0x69')][_0x1cb113][_0xb5fa('0x6e')]:'');}return _0x52384b+')';};var _0x3b5e1d={'where':{'id':_0x593386['id']}},_0x3d18a9,_0x397830,_0x234d9d,_0x10222c,_0x1eec65;_0x3b5e1d=_[_0xb5fa('0x42')]({},_0x3b5e1d,_0x5557a3);return db[_0xb5fa('0x31')]['find'](_0x3b5e1d)['then'](function(_0x3c5563){if(_0x3c5563){_0x3d18a9=_0x3c5563;return _0x3c5563[_0xb5fa('0x6f')]();}return null;})[_0xb5fa('0x25')](function(_0x18498d){if(_0x18498d){if(!_0x18498d['length']){throw new db[(_0xb5fa('0x70'))][(_0xb5fa('0x71'))](_0xb5fa('0x72'),0x193);}_0x397830=_0x18498d;return db['AnalyticMetric'][_0xb5fa('0x45')]({'raw':!![]});}return null;})[_0xb5fa('0x25')](function(_0x109dd9){if(_0x109dd9){_0x234d9d=_[_0xb5fa('0x74')](_0x109dd9,'id');var _0x5ba2e7;var _0x1175da=squel[_0xb5fa('0x75')]();_0x1175da[_0xb5fa('0x8e')](_0x3d18a9[_0xb5fa('0x76')]);for(var _0x19717a=0x0;_0x19717a<_0x397830[_0xb5fa('0x39')];_0x19717a+=0x1){_0x5ba2e7=_0x397830[_0x19717a][_0xb5fa('0x77')]?_0x234d9d[_0x397830[_0x19717a][_0xb5fa('0x77')]][_0xb5fa('0x78')]:_0x397830[_0x19717a][_0xb5fa('0x6c')];_0x5ba2e7=_0x397830[_0x19717a][_0xb5fa('0x8f')]?_[_0xb5fa('0x79')](_0x32eebd[_0x397830[_0x19717a][_0xb5fa('0x8f')]],'%s',_0x5ba2e7):_0x5ba2e7;_0x5ba2e7=_0x397830[_0x19717a][_0xb5fa('0x7a')]?_[_0xb5fa('0x79')](_0x5e6852[_0x397830[_0x19717a]['format']],'%s',_0x5ba2e7):_0x5ba2e7;if(_0x397830[_0x19717a][_0xb5fa('0x7b')]){_0x1175da[_0xb5fa('0x6b')](_0x5ba2e7);}_0x397830[_0x19717a][_0xb5fa('0x7c')]&&_0x1175da[_0xb5fa('0x90')](_0x5ba2e7,_0x397830[_0x19717a][_0xb5fa('0x7c')]===_0xb5fa('0x7d')?![]:!![]);_0x1175da[_0xb5fa('0x6c')](_0x5ba2e7,_0x397830[_0x19717a][_0xb5fa('0x7e')]||_0x5ba2e7);}if(_0x3d18a9['joins']){_0x3d18a9['joins']=JSON[_0xb5fa('0x85')](_0x3d18a9['joins']);for(var _0x5d0ca8=0x0;_0x5d0ca8<_0x3d18a9[_0xb5fa('0x7f')][_0xb5fa('0x39')];_0x5d0ca8+=0x1){if(_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8]['type']&&_[_0xb5fa('0x64')](_0x188e66,_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x33')])&&_0x3d18a9['joins'][_0x5d0ca8][_0xb5fa('0x80')]&&_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8]['foreignTable']&&_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x81')]){_0x1175da[_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x33')]](_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x82')],null,util[_0xb5fa('0x7a')]('%s.%s\x20=\x20%s.%s',_0x3d18a9[_0xb5fa('0x76')],_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8][_0xb5fa('0x80')],_0x3d18a9[_0xb5fa('0x7f')][_0x5d0ca8]['foreignTable'],_0x3d18a9['joins'][_0x5d0ca8][_0xb5fa('0x81')]));}}}if(_0x3d18a9[_0xb5fa('0x84')]){_0x3d18a9[_0xb5fa('0x84')]=JSON[_0xb5fa('0x85')](_0x3d18a9['conditions']);_0x1175da['where'](_0x86dfe9(_0x3d18a9['conditions']['group']));}_0x1eec65=_0x1175da[_0xb5fa('0x86')]();_0x1175da[_0xb5fa('0x1d')](_0xff504d);_0x1175da[_0xb5fa('0x20')](0x0);return;}})[_0xb5fa('0x25')](function(){if(_0x47d72b[_0xb5fa('0x91')]===_0xb5fa('0x92')){return null;}var _0x3c36a8=_[_0xb5fa('0x42')](_0x47d72b,{'name':_0x47d72b[_0xb5fa('0x93')]||_0x47d72b[_0xb5fa('0x2d')]||_0x3d18a9[_0xb5fa('0x2d')],'basename':_0x1c60bd,'savename':util['format'](_0xb5fa('0x94'),_0x47d72b[_0xb5fa('0x2d')]||_0x3d18a9['name'],require(_0xb5fa('0x95'))[_0xb5fa('0x96')](0x4),_0x47d72b['output']||_0xb5fa('0x97')),'reportId':_0x3d18a9['id'],'reportType':_0xb5fa('0x98')});return db[_0xb5fa('0x99')][_0xb5fa('0x4a')](_0x3c36a8,{'raw':!![]});})[_0xb5fa('0x25')](function(_0x2b449a){if(_0x3d18a9[_0xb5fa('0x76')]===_0xb5fa('0x9a')){_0x1eec65[_0xb5fa('0x3d')](_0x3d18a9['table']+_0xb5fa('0x9b'),_0x47d72b[_0xb5fa('0x9c')],_0x47d72b[_0xb5fa('0x9d')]);}else{_0x1eec65[_0xb5fa('0x3d')](_0x3d18a9[_0xb5fa('0x76')]+_0xb5fa('0x9e'),_0x47d72b[_0xb5fa('0x9c')],_0x47d72b[_0xb5fa('0x9d')]);}if(_0x2b449a){logger['info'](_0xb5fa('0x9f'),_0x1eec65['toString']());require(_0xb5fa('0xa0'))[_0xb5fa('0xa1')](path[_0xb5fa('0x54')](__dirname,_0xb5fa('0xa2'),_0x2b449a[_0xb5fa('0x91')]),[_0x2b449a['id'],_0x1eec65[_0xb5fa('0x89')](),path[_0xb5fa('0x54')](__dirname,_0xb5fa('0xa3'),_0x2b449a[_0xb5fa('0xa4')]),_0x1c60bd]);return _0x2b449a;}else{var _0x4bb9b4=squel['select']();_0x4bb9b4[_0xb5fa('0x8e')]('('+_0x1eec65[_0xb5fa('0x89')]()+')',_0xb5fa('0xa5'));_0x4bb9b4[_0xb5fa('0x6c')]('COUNT(*)',_0xb5fa('0x1f'));_0x1eec65['limit'](_0x47d72b[_0xb5fa('0x1d')]||_0xff504d);_0x1eec65[_0xb5fa('0x20')](_0x47d72b['offset']||0x0);return dbH[_0xb5fa('0x8a')]['query'](_0x4bb9b4[_0xb5fa('0x89')](),{'type':dbH['sequelize'][_0xb5fa('0x8b')][_0xb5fa('0x8c')]})[_0xb5fa('0x25')](function(_0x70e4ae){if(!_0x70e4ae[_0xb5fa('0x39')]){_0x10222c=0x0;}else{_0x10222c=_0x70e4ae[0x0][_0xb5fa('0x1f')]||0x0;}return dbH[_0xb5fa('0x8a')][_0xb5fa('0x3c')](_0x1eec65[_0xb5fa('0x89')](),{'type':dbH[_0xb5fa('0x8a')][_0xb5fa('0x8b')]['SELECT']});})[_0xb5fa('0x25')](function(_0x284b34){return{'rows':_0x284b34||[],'count':_0x10222c};});}});}exports[_0xb5fa('0xa6')]=function(_0x497931,_0x2145d8){return runReport(_0x497931[_0xb5fa('0xa7')],_0x497931[_0xb5fa('0x3c')],_0x497931[_0xb5fa('0x43')])[_0xb5fa('0x25')](respondWithResult(_0x2145d8,null))[_0xb5fa('0x47')](handleError(_0x2145d8,null));};exports[_0xb5fa('0xa8')]=runReport;exports[_0xb5fa('0x3c')]=function(_0x59fd75,_0x245ee1){var _0x5c1e1f=0xa;var _0x3ba723=[_0xb5fa('0x54'),_0xb5fa('0x55'),_0xb5fa('0x56'),_0xb5fa('0x57')];var _0x105c0f={'SUM':_0xb5fa('0x58'),'COUNT':_0xb5fa('0x59'),'COUNT DISTINCT':_0xb5fa('0x8d'),'MAX':_0xb5fa('0x5a'),'MIN':_0xb5fa('0x5b'),'AVG':_0xb5fa('0xa9'),'GROUP_CONCAT':_0xb5fa('0x5c'),'GROUP_CONCAT ASC':_0xb5fa('0x5d'),'GROUP_CONCAT DESC':_0xb5fa('0x5e')};var _0x41e086={'SEC_TO_TIME':_0xb5fa('0x5f'),'DATE':'DATE(%s)','HOUR':_0xb5fa('0x61'),'ROUND':_0xb5fa('0x62'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0xd34c31=function(_0x2e614e){return!_['includes'](['IS\x20NULL','IS\x20NOT\x20NULL',_0xb5fa('0x67'),_0xb5fa('0x68')],_0x2e614e);};var _0x1aae82=function(_0x474bb){if(!_0x474bb||!_0x474bb[_0xb5fa('0x69')][_0xb5fa('0x39')]){return'';}for(var _0x17ae50='(',_0x51c9ba=0x0;_0x51c9ba<_0x474bb['rules']['length'];_0x51c9ba+=0x1){_0x51c9ba>0x0&&(_0x17ae50+='\x20'+_0x474bb[_0xb5fa('0x6a')]+'\x20');_0x17ae50+=_0x474bb['rules'][_0x51c9ba]['group']?_0x1aae82(_0x474bb[_0xb5fa('0x69')][_0x51c9ba]['group']):_0x474bb[_0xb5fa('0x69')][_0x51c9ba][_0xb5fa('0x6c')]+'\x20'+_0x474bb[_0xb5fa('0x69')][_0x51c9ba][_0xb5fa('0x6d')]+(_0xd34c31(_0x474bb[_0xb5fa('0x69')][_0x51c9ba]['condition'])?'\x20'+_0x474bb[_0xb5fa('0x69')][_0x51c9ba][_0xb5fa('0x6e')]:'');}return _0x17ae50+')';};var _0x2fe715={'where':{'id':_0x59fd75[_0xb5fa('0xa7')]['id']}},_0x3c5ac4,_0x23b70f,_0x488818,_0x15b228,_0x42fd84;_0x2fe715=_[_0xb5fa('0x42')]({},_0x2fe715,_0x59fd75[_0xb5fa('0x43')]);return db[_0xb5fa('0x31')]['find'](_0x2fe715)[_0xb5fa('0x25')](function(_0x390043){if(_0x390043){_0x3c5ac4=_0x390043;return _0x390043[_0xb5fa('0x6f')]();}return null;})[_0xb5fa('0x25')](function(_0x32c191){if(_0x32c191){if(!_0x32c191[_0xb5fa('0x39')]){throw new db[(_0xb5fa('0x70'))][(_0xb5fa('0x71'))](_0xb5fa('0x72'),0x193);}_0x23b70f=_0x32c191;return db[_0xb5fa('0x73')][_0xb5fa('0x45')]({'raw':!![]});}return null;})[_0xb5fa('0x25')](function(_0x1d307c){if(_0x1d307c){_0x488818=_[_0xb5fa('0x74')](_0x1d307c,'id');var _0x3347eb;var _0x349e0b=squel[_0xb5fa('0x75')]();_0x349e0b[_0xb5fa('0x8e')](_0x3c5ac4[_0xb5fa('0x76')]);for(var _0x2b1c3f=0x0;_0x2b1c3f<_0x23b70f[_0xb5fa('0x39')];_0x2b1c3f+=0x1){_0x3347eb=_0x23b70f[_0x2b1c3f][_0xb5fa('0x77')]?_0x488818[_0x23b70f[_0x2b1c3f]['MetricId']]['metric']:_0x23b70f[_0x2b1c3f][_0xb5fa('0x6c')];_0x3347eb=_0x23b70f[_0x2b1c3f][_0xb5fa('0x8f')]?_[_0xb5fa('0x79')](_0x105c0f[_0x23b70f[_0x2b1c3f][_0xb5fa('0x8f')]],'%s',_0x3347eb):_0x3347eb;_0x3347eb=_0x23b70f[_0x2b1c3f][_0xb5fa('0x7a')]?_[_0xb5fa('0x79')](_0x41e086[_0x23b70f[_0x2b1c3f]['format']],'%s',_0x3347eb):_0x3347eb;if(_0x23b70f[_0x2b1c3f]['groupBy']){_0x349e0b['group'](_0x3347eb);}_0x23b70f[_0x2b1c3f][_0xb5fa('0x7c')]&&_0x349e0b[_0xb5fa('0x90')](_0x3347eb,_0x23b70f[_0x2b1c3f]['orderBy']===_0xb5fa('0x7d')?![]:!![]);_0x349e0b[_0xb5fa('0x6c')](_0x3347eb,_0x23b70f[_0x2b1c3f]['alias']||_0x3347eb);}if(_0x3c5ac4[_0xb5fa('0x7f')]){_0x3c5ac4[_0xb5fa('0x7f')]=JSON[_0xb5fa('0x85')](_0x3c5ac4[_0xb5fa('0x7f')]);for(var _0x10dbdf=0x0;_0x10dbdf<_0x3c5ac4[_0xb5fa('0x7f')][_0xb5fa('0x39')];_0x10dbdf+=0x1){if(_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf]['type']&&_[_0xb5fa('0x64')](_0x3ba723,_0x3c5ac4['joins'][_0x10dbdf][_0xb5fa('0x33')])&&_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf][_0xb5fa('0x80')]&&_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf]['foreignTable']&&_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf][_0xb5fa('0x81')]){_0x349e0b[_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf][_0xb5fa('0x33')]](_0x3c5ac4['joins'][_0x10dbdf][_0xb5fa('0x82')],null,util[_0xb5fa('0x7a')](_0xb5fa('0x83'),_0x3c5ac4[_0xb5fa('0x76')],_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf][_0xb5fa('0x80')],_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf]['foreignTable'],_0x3c5ac4[_0xb5fa('0x7f')][_0x10dbdf]['foreignKey']));}}}if(_0x3c5ac4[_0xb5fa('0x84')]){_0x3c5ac4[_0xb5fa('0x84')]=JSON[_0xb5fa('0x85')](_0x3c5ac4[_0xb5fa('0x84')]);_0x349e0b[_0xb5fa('0x3d')](_0x1aae82(_0x3c5ac4[_0xb5fa('0x84')][_0xb5fa('0x6b')]));}_0x42fd84=_0x349e0b['clone']();_0x349e0b['limit'](_0x5c1e1f);_0x349e0b[_0xb5fa('0x20')](0x0);logger[_0xb5fa('0x87')](_0xb5fa('0x88'),_0x349e0b[_0xb5fa('0x89')]());return dbH[_0xb5fa('0x8a')][_0xb5fa('0x3c')](_0x349e0b[_0xb5fa('0x89')](),{'type':dbH[_0xb5fa('0x8a')]['QueryTypes'][_0xb5fa('0x8c')]});}})[_0xb5fa('0x25')](function(){return{'sql':_0x42fd84[_0xb5fa('0x89')]()};})[_0xb5fa('0x25')](respondWithResult(_0x245ee1,null))[_0xb5fa('0x47')](handleError(_0x245ee1,null));};
\ No newline at end of file
+var _0x53ec=['IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','value','getFields','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','select','from','table','MetricId','metric','function','format','replace','orderBy','DESC','alias','joins','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone','debug','Limited\x20Query:','sequelize','toString','QueryTypes','right_join','SUM(%s)','COUNT(DISTINCT\x20%s)','GROUP_CONCAT(%s)','HOUR(%s)','ROUND(%s)','condition','Sequelize','groupBy','foreignKey','output','fullPath','%s-%s.%s','randomstring','generate','csv','default','AnalyticExtractedReport','cdr','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../files/reports','savename','countTable','COUNT(*)','SELECT','runReport','cross_join','COUNT(%s)','MIN(%s)','ValidationErrorItem','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','DefaultReports','UserProfileResource','error','stack','name','send','index','map','rawAttributes','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','where','filter','merge','type','include','AnalyticDefaultReport','params','includeAll','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','catch','preview','join','left_join','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','UNIX_TIMESTAMP(%s)','includes'];(function(_0x24775a,_0x41e09d){var _0x2b3993=function(_0x134453){while(--_0x134453){_0x24775a['push'](_0x24775a['shift']());}};_0x2b3993(++_0x41e09d);}(_0x53ec,0x192));var _0xc53e=function(_0x2bdecd,_0x21805f){_0x2bdecd=_0x2bdecd-0x0;var _0x56116e=_0x53ec[_0x2bdecd];return _0x56116e;};'use strict';var emlformat=require(_0xc53e('0x0'));var rimraf=require(_0xc53e('0x1'));var zipdir=require(_0xc53e('0x2'));var jsonpatch=require(_0xc53e('0x3'));var rp=require(_0xc53e('0x4'));var moment=require(_0xc53e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc53e('0x6'));var util=require('util');var path=require(_0xc53e('0x7'));var sox=require(_0xc53e('0x8'));var csv=require('to-csv');var ejs=require(_0xc53e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc53e('0xa'));var squel=require(_0xc53e('0xb'));var crypto=require('crypto');var jsforce=require(_0xc53e('0xc'));var deskjs=require(_0xc53e('0xd'));var toCsv=require(_0xc53e('0xe'));var querystring=require(_0xc53e('0xf'));var Papa=require(_0xc53e('0x10'));var Redis=require(_0xc53e('0x11'));var authService=require(_0xc53e('0x12'));var qs=require(_0xc53e('0x13'));var as=require(_0xc53e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc53e('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc53e('0x16'));var db=require(_0xc53e('0x17'))['db'];var dbH=require(_0xc53e('0x17'))[_0xc53e('0x18')];function respondWithStatusCode(_0x56f0e5,_0x4e74c9){_0x4e74c9=_0x4e74c9||0xcc;return function(_0x1c06cd){if(_0x1c06cd){return _0x56f0e5[_0xc53e('0x19')](_0x4e74c9);}return _0x56f0e5[_0xc53e('0x1a')](_0x4e74c9)[_0xc53e('0x1b')]();};}function respondWithResult(_0x358ef3,_0x382e87){_0x382e87=_0x382e87||0xc8;return function(_0x3dc2fa){if(_0x3dc2fa){return _0x358ef3[_0xc53e('0x1a')](_0x382e87)[_0xc53e('0x1c')](_0x3dc2fa);}};}function respondWithFilteredResult(_0x2ad6eb,_0x5b0a88){return function(_0x8a522e){if(_0x8a522e){var _0x191567=typeof _0x5b0a88[_0xc53e('0x1d')]===_0xc53e('0x1e')&&typeof _0x5b0a88[_0xc53e('0x1f')]===_0xc53e('0x1e');var _0x164016=_0x8a522e[_0xc53e('0x20')];var _0x3b550e=_0x191567?0x0:_0x5b0a88['offset'];var _0x546fab=_0x191567?_0x8a522e[_0xc53e('0x20')]:_0x5b0a88[_0xc53e('0x1d')]+_0x5b0a88[_0xc53e('0x1f')];var _0x2e85df;if(_0x546fab>=_0x164016){_0x546fab=_0x164016;_0x2e85df=0xc8;}else{_0x2e85df=0xce;}_0x2ad6eb[_0xc53e('0x1a')](_0x2e85df);return _0x2ad6eb[_0xc53e('0x21')](_0xc53e('0x22'),_0x3b550e+'-'+_0x546fab+'/'+_0x164016)[_0xc53e('0x1c')](_0x8a522e);}return null;};}function patchUpdates(_0x364c80){return function(_0x401af6){try{jsonpatch[_0xc53e('0x23')](_0x401af6,_0x364c80,!![]);}catch(_0x44fd93){return BPromise[_0xc53e('0x24')](_0x44fd93);}return _0x401af6['save']();};}function saveUpdates(_0x47cfdd,_0x531ede){return function(_0x4f4304){if(_0x4f4304){return _0x4f4304[_0xc53e('0x25')](_0x47cfdd)[_0xc53e('0x26')](function(_0x4015c8){return _0x4015c8;});}return null;};}function removeEntity(_0x180811,_0x5009e1){return function(_0x5e5377){if(_0x5e5377){return _0x5e5377[_0xc53e('0x27')]()['then'](function(){var _0x1ae55e=_0x5e5377[_0xc53e('0x28')]({'plain':!![]});var _0x443179=_0xc53e('0x29');return db[_0xc53e('0x2a')]['destroy']({'where':{'type':_0x443179,'resourceId':_0x1ae55e['id']}})[_0xc53e('0x26')](function(){return _0x5e5377;});})['then'](function(){_0x180811['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c5056,_0x57a1f5){return function(_0x28240a){if(!_0x28240a){_0x3c5056['sendStatus'](0x194);}return _0x28240a;};}function handleError(_0x24a77e,_0x5112d2){_0x5112d2=_0x5112d2||0x1f4;return function(_0x5ce216){logger[_0xc53e('0x2b')](_0x5ce216[_0xc53e('0x2c')]);if(_0x5ce216[_0xc53e('0x2d')]){delete _0x5ce216[_0xc53e('0x2d')];}_0x24a77e[_0xc53e('0x1a')](_0x5112d2)[_0xc53e('0x2e')](_0x5ce216);};}exports[_0xc53e('0x2f')]=function(_0x2a2ca9,_0x4ace0b){var _0x437893={},_0x311835={},_0x2d36c0={'count':0x0,'rows':[]};var _0x56206b=_[_0xc53e('0x30')](db['AnalyticDefaultReport'][_0xc53e('0x31')],function(_0x2467f4){return{'name':_0x2467f4['fieldName'],'type':_0x2467f4['type'][_0xc53e('0x32')]};});_0x311835[_0xc53e('0x33')]=_[_0xc53e('0x30')](_0x56206b,_0xc53e('0x2d'));_0x311835[_0xc53e('0x34')]=_[_0xc53e('0x35')](_0x2a2ca9[_0xc53e('0x34')]);_0x311835[_0xc53e('0x36')]=_['intersection'](_0x311835[_0xc53e('0x33')],_0x311835[_0xc53e('0x34')]);_0x437893[_0xc53e('0x37')]=_[_0xc53e('0x38')](_0x311835[_0xc53e('0x33')],qs[_0xc53e('0x39')](_0x2a2ca9[_0xc53e('0x34')][_0xc53e('0x39')]));_0x437893[_0xc53e('0x37')]=_0x437893['attributes'][_0xc53e('0x3a')]?_0x437893['attributes']:_0x311835[_0xc53e('0x33')];if(!_0x2a2ca9[_0xc53e('0x34')]['hasOwnProperty'](_0xc53e('0x3b'))){_0x437893[_0xc53e('0x1f')]=qs[_0xc53e('0x1f')](_0x2a2ca9['query'][_0xc53e('0x1f')]);_0x437893[_0xc53e('0x1d')]=qs[_0xc53e('0x1d')](_0x2a2ca9[_0xc53e('0x34')][_0xc53e('0x1d')]);}_0x437893[_0xc53e('0x3c')]=qs[_0xc53e('0x3d')](_0x2a2ca9['query'][_0xc53e('0x3d')]);_0x437893[_0xc53e('0x3e')]=qs[_0xc53e('0x36')](_['pick'](_0x2a2ca9[_0xc53e('0x34')],_0x311835['filters']),_0x56206b);if(_0x2a2ca9[_0xc53e('0x34')][_0xc53e('0x3f')]){_0x437893[_0xc53e('0x3e')]=_[_0xc53e('0x40')](_0x437893[_0xc53e('0x3e')],{'$or':_['map'](_0x56206b,function(_0x3dda55){if(_0x3dda55[_0xc53e('0x41')]!=='VIRTUAL'){var _0x5b7354={};_0x5b7354[_0x3dda55['name']]={'$like':'%'+_0x2a2ca9['query'][_0xc53e('0x3f')]+'%'};return _0x5b7354;}})});}_0x437893=_[_0xc53e('0x40')]({},_0x437893,_0x2a2ca9['options']);var _0x460ee6={'where':_0x437893['where']};return db['AnalyticDefaultReport']['count'](_0x460ee6)[_0xc53e('0x26')](function(_0x4ba96f){_0x2d36c0['count']=_0x4ba96f;if(_0x2a2ca9[_0xc53e('0x34')]['includeAll']){_0x437893[_0xc53e('0x42')]=[{'all':!![]}];}return db[_0xc53e('0x43')]['findAll'](_0x437893);})[_0xc53e('0x26')](function(_0x3a4ebc){_0x2d36c0['rows']=_0x3a4ebc;return _0x2d36c0;})[_0xc53e('0x26')](respondWithFilteredResult(_0x4ace0b,_0x437893))['catch'](handleError(_0x4ace0b,null));};exports['show']=function(_0x481e6d,_0x4efee5){var _0x887d78={'raw':!![],'where':{'id':_0x481e6d[_0xc53e('0x44')]['id']}},_0x17b586={};_0x17b586['model']=_[_0xc53e('0x35')](db[_0xc53e('0x43')]['rawAttributes']);_0x17b586['query']=_[_0xc53e('0x35')](_0x481e6d[_0xc53e('0x34')]);_0x17b586[_0xc53e('0x36')]=_['intersection'](_0x17b586[_0xc53e('0x33')],_0x17b586[_0xc53e('0x34')]);_0x887d78[_0xc53e('0x37')]=_[_0xc53e('0x38')](_0x17b586[_0xc53e('0x33')],qs[_0xc53e('0x39')](_0x481e6d[_0xc53e('0x34')]['fields']));_0x887d78[_0xc53e('0x37')]=_0x887d78[_0xc53e('0x37')][_0xc53e('0x3a')]?_0x887d78['attributes']:_0x17b586[_0xc53e('0x33')];if(_0x481e6d[_0xc53e('0x34')][_0xc53e('0x45')]){_0x887d78[_0xc53e('0x42')]=[{'all':!![]}];}_0x887d78=_[_0xc53e('0x40')]({},_0x887d78,_0x481e6d[_0xc53e('0x46')]);return db['AnalyticDefaultReport'][_0xc53e('0x47')](_0x887d78)[_0xc53e('0x26')](handleEntityNotFound(_0x4efee5,null))[_0xc53e('0x26')](respondWithResult(_0x4efee5,null))['catch'](handleError(_0x4efee5,null));};exports[_0xc53e('0x48')]=function(_0x1d2491,_0x1eeb65){return db[_0xc53e('0x43')][_0xc53e('0x48')](_0x1d2491[_0xc53e('0x49')],{})[_0xc53e('0x26')](function(_0x2ba2b4){var _0x34de2d=_0x1d2491[_0xc53e('0x4a')]['get']({'plain':!![]});if(!_0x34de2d)throw new Error(_0xc53e('0x4b'));if(_0x34de2d[_0xc53e('0x4c')]===_0xc53e('0x4a')){var _0x3d74ac=_0x2ba2b4[_0xc53e('0x28')]({'plain':!![]});var _0x52dac7='Reports';return db[_0xc53e('0x4d')]['find']({'where':{'name':_0x52dac7,'userProfileId':_0x34de2d[_0xc53e('0x4e')]},'raw':!![]})['then'](function(_0x3a49a4){if(_0x3a49a4&&_0x3a49a4[_0xc53e('0x4f')]===0x0){return db[_0xc53e('0x2a')]['create']({'name':_0x3d74ac[_0xc53e('0x2d')],'resourceId':_0x3d74ac['id'],'type':_0xc53e('0x29'),'sectionId':_0x3a49a4['id']},{})[_0xc53e('0x26')](function(){return _0x2ba2b4;});}else{return _0x2ba2b4;}})['catch'](function(_0x2f7df2){logger['error'](_0xc53e('0x50'),_0x2f7df2);throw _0x2f7df2;});}return _0x2ba2b4;})[_0xc53e('0x26')](respondWithResult(_0x1eeb65,0xc9))['catch'](handleError(_0x1eeb65,null));};exports[_0xc53e('0x25')]=function(_0x1515ea,_0x5bba72){if(_0x1515ea[_0xc53e('0x49')]['id']){delete _0x1515ea[_0xc53e('0x49')]['id'];}return db[_0xc53e('0x43')][_0xc53e('0x47')]({'where':{'id':_0x1515ea[_0xc53e('0x44')]['id']}})[_0xc53e('0x26')](handleEntityNotFound(_0x5bba72,null))[_0xc53e('0x26')](saveUpdates(_0x1515ea[_0xc53e('0x49')],null))[_0xc53e('0x26')](respondWithResult(_0x5bba72,null))[_0xc53e('0x51')](handleError(_0x5bba72,null));};exports[_0xc53e('0x27')]=function(_0x47dd5a,_0x8364f6){return db['AnalyticDefaultReport'][_0xc53e('0x47')]({'where':{'id':_0x47dd5a['params']['id']}})[_0xc53e('0x26')](handleEntityNotFound(_0x8364f6,null))[_0xc53e('0x26')](removeEntity(_0x8364f6,null))['catch'](handleError(_0x8364f6,null));};exports[_0xc53e('0x52')]=function(_0x7f0bc0,_0x9c0112){var _0x432a91=0xa;var _0x53083b=[_0xc53e('0x53'),_0xc53e('0x54'),'right_join','cross_join'];var _0x3c0aa1={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xc53e('0x55'),'MIN':'MIN(%s)','AVG':_0xc53e('0x56'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xc53e('0x57'),'GROUP_CONCAT DESC':_0xc53e('0x58')};var _0x5fcd58={'SEC_TO_TIME':_0xc53e('0x59'),'DATE':_0xc53e('0x5a'),'HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xc53e('0x5b')};var _0x37b091=function(_0x31e22b){return!_[_0xc53e('0x5c')]([_0xc53e('0x5d'),_0xc53e('0x5e'),_0xc53e('0x5f'),_0xc53e('0x60')],_0x31e22b);};var _0x13bf71=function(_0x16d8a1){if(!_0x16d8a1||!_0x16d8a1[_0xc53e('0x61')][_0xc53e('0x3a')]){return'';}for(var _0xdc0e49='(',_0x520738=0x0;_0x520738<_0x16d8a1[_0xc53e('0x61')]['length'];_0x520738+=0x1){_0x520738>0x0&&(_0xdc0e49+='\x20'+_0x16d8a1[_0xc53e('0x62')]+'\x20');_0xdc0e49+=_0x16d8a1[_0xc53e('0x61')][_0x520738][_0xc53e('0x63')]?_0x13bf71(_0x16d8a1[_0xc53e('0x61')][_0x520738][_0xc53e('0x63')]):_0x16d8a1[_0xc53e('0x61')][_0x520738][_0xc53e('0x64')]+'\x20'+_0x16d8a1[_0xc53e('0x61')][_0x520738]['condition']+(_0x37b091(_0x16d8a1['rules'][_0x520738]['condition'])?'\x20'+_0x16d8a1[_0xc53e('0x61')][_0x520738][_0xc53e('0x65')]:'');}return _0xdc0e49+')';};var _0x37ac78={'where':{'id':_0x7f0bc0['params']['id']}},_0x25e4b6,_0x247d99,_0x160ca3,_0x3581ab,_0x5a9596;_0x37ac78=_['merge']({},_0x37ac78,_0x7f0bc0[_0xc53e('0x46')]);return db[_0xc53e('0x43')]['find'](_0x37ac78)[_0xc53e('0x26')](function(_0x235a6b){if(_0x235a6b){_0x25e4b6=_0x235a6b;return _0x235a6b[_0xc53e('0x66')]();}return null;})[_0xc53e('0x26')](function(_0x22829b){if(_0x22829b){if(!_0x22829b[_0xc53e('0x3a')]){throw new db['Sequelize']['ValidationErrorItem'](_0xc53e('0x67'),0x193);}_0x247d99=_0x22829b;return db[_0xc53e('0x68')][_0xc53e('0x69')]({'raw':!![]});}return null;})[_0xc53e('0x26')](function(_0x29ee08){if(_0x29ee08){_0x160ca3=_[_0xc53e('0x6a')](_0x29ee08,'id');var _0x5a1a4b;var _0x2b6734=squel[_0xc53e('0x6b')]();_0x2b6734[_0xc53e('0x6c')](_0x25e4b6[_0xc53e('0x6d')]);for(var _0x4d2609=0x0;_0x4d2609<_0x247d99[_0xc53e('0x3a')];_0x4d2609+=0x1){_0x5a1a4b=_0x247d99[_0x4d2609][_0xc53e('0x6e')]?_0x160ca3[_0x247d99[_0x4d2609][_0xc53e('0x6e')]][_0xc53e('0x6f')]:_0x247d99[_0x4d2609][_0xc53e('0x64')];_0x5a1a4b=_0x247d99[_0x4d2609][_0xc53e('0x70')]?_['replace'](_0x3c0aa1[_0x247d99[_0x4d2609][_0xc53e('0x70')]],'%s',_0x5a1a4b):_0x5a1a4b;_0x5a1a4b=_0x247d99[_0x4d2609][_0xc53e('0x71')]?_[_0xc53e('0x72')](_0x5fcd58[_0x247d99[_0x4d2609][_0xc53e('0x71')]],'%s',_0x5a1a4b):_0x5a1a4b;if(_0x247d99[_0x4d2609]['groupBy']){_0x2b6734['group'](_0x5a1a4b);}_0x247d99[_0x4d2609][_0xc53e('0x73')]&&_0x2b6734[_0xc53e('0x3c')](_0x5a1a4b,_0x247d99[_0x4d2609][_0xc53e('0x73')]===_0xc53e('0x74')?![]:!![]);_0x2b6734['field'](_0x5a1a4b,_0x247d99[_0x4d2609][_0xc53e('0x75')]||_0x5a1a4b);}if(_0x25e4b6['joins']){_0x25e4b6[_0xc53e('0x76')]=JSON['parse'](_0x25e4b6[_0xc53e('0x76')]);for(var _0x4e128a=0x0;_0x4e128a<_0x25e4b6[_0xc53e('0x76')][_0xc53e('0x3a')];_0x4e128a+=0x1){if(_0x25e4b6['joins'][_0x4e128a][_0xc53e('0x41')]&&_[_0xc53e('0x5c')](_0x53083b,_0x25e4b6['joins'][_0x4e128a]['type'])&&_0x25e4b6[_0xc53e('0x76')][_0x4e128a][_0xc53e('0x77')]&&_0x25e4b6['joins'][_0x4e128a]['foreignTable']&&_0x25e4b6[_0xc53e('0x76')][_0x4e128a]['foreignKey']){_0x2b6734[_0x25e4b6[_0xc53e('0x76')][_0x4e128a]['type']](_0x25e4b6[_0xc53e('0x76')][_0x4e128a][_0xc53e('0x78')],null,util[_0xc53e('0x71')](_0xc53e('0x79'),_0x25e4b6[_0xc53e('0x6d')],_0x25e4b6[_0xc53e('0x76')][_0x4e128a][_0xc53e('0x77')],_0x25e4b6[_0xc53e('0x76')][_0x4e128a][_0xc53e('0x78')],_0x25e4b6[_0xc53e('0x76')][_0x4e128a]['foreignKey']));}}}if(_0x25e4b6[_0xc53e('0x7a')]){_0x25e4b6['conditions']=JSON[_0xc53e('0x7b')](_0x25e4b6[_0xc53e('0x7a')]);_0x2b6734[_0xc53e('0x3e')](_0x13bf71(_0x25e4b6[_0xc53e('0x7a')][_0xc53e('0x63')]));}_0x5a9596=_0x2b6734[_0xc53e('0x7c')]();_0x2b6734[_0xc53e('0x1f')](_0x432a91);_0x2b6734[_0xc53e('0x1d')](0x0);logger[_0xc53e('0x7d')](_0xc53e('0x7e'),_0x2b6734['toString']());return dbH[_0xc53e('0x7f')]['query'](_0x2b6734[_0xc53e('0x80')](),{'type':dbH[_0xc53e('0x7f')][_0xc53e('0x81')]['SELECT']});}})[_0xc53e('0x26')](respondWithResult(_0x9c0112,null))[_0xc53e('0x51')](handleError(_0x9c0112,null));};function runReport(_0x381652,_0xec3738,_0x3a84a2){var _0x508671=_0xec3738[_0xc53e('0x2d')];var _0x48e337=0xa;var _0x56c66f=[_0xc53e('0x53'),_0xc53e('0x54'),_0xc53e('0x82'),'cross_join'];var _0x35b6dc={'SUM':_0xc53e('0x83'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xc53e('0x84'),'MAX':_0xc53e('0x55'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0xc53e('0x85'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xc53e('0x58')};var _0x3d2636={'SEC_TO_TIME':_0xc53e('0x59'),'DATE':'DATE(%s)','HOUR':_0xc53e('0x86'),'ROUND':_0xc53e('0x87'),'UNIX_TIMESTAMP':_0xc53e('0x5b')};var _0x4c8112=function(_0x1a8ae4){return!_[_0xc53e('0x5c')]([_0xc53e('0x5d'),_0xc53e('0x5e'),_0xc53e('0x5f'),'IS\x20NOT\x20EMPTY'],_0x1a8ae4);};var _0x3dac82=function(_0x325287){if(!_0x325287||!_0x325287[_0xc53e('0x61')][_0xc53e('0x3a')]){return'';}for(var _0xe6a976='(',_0x4102bc=0x0;_0x4102bc<_0x325287[_0xc53e('0x61')][_0xc53e('0x3a')];_0x4102bc+=0x1){_0x4102bc>0x0&&(_0xe6a976+='\x20'+_0x325287[_0xc53e('0x62')]+'\x20');_0xe6a976+=_0x325287['rules'][_0x4102bc][_0xc53e('0x63')]?_0x3dac82(_0x325287[_0xc53e('0x61')][_0x4102bc][_0xc53e('0x63')]):_0x325287[_0xc53e('0x61')][_0x4102bc][_0xc53e('0x64')]+'\x20'+_0x325287[_0xc53e('0x61')][_0x4102bc][_0xc53e('0x88')]+(_0x4c8112(_0x325287[_0xc53e('0x61')][_0x4102bc][_0xc53e('0x88')])?'\x20'+_0x325287['rules'][_0x4102bc][_0xc53e('0x65')]:'');}return _0xe6a976+')';};var _0x190509={'where':{'id':_0x381652['id']}},_0x110e32,_0x2135d4,_0x4bbf8a,_0x31b06d,_0x21fc8d;_0x190509=_[_0xc53e('0x40')]({},_0x190509,_0x3a84a2);return db[_0xc53e('0x43')]['find'](_0x190509)[_0xc53e('0x26')](function(_0x138870){if(_0x138870){_0x110e32=_0x138870;return _0x138870[_0xc53e('0x66')]();}return null;})[_0xc53e('0x26')](function(_0x621e78){if(_0x621e78){if(!_0x621e78[_0xc53e('0x3a')]){throw new db[(_0xc53e('0x89'))]['ValidationErrorItem'](_0xc53e('0x67'),0x193);}_0x2135d4=_0x621e78;return db['AnalyticMetric'][_0xc53e('0x69')]({'raw':!![]});}return null;})[_0xc53e('0x26')](function(_0x3fe278){if(_0x3fe278){_0x4bbf8a=_['keyBy'](_0x3fe278,'id');var _0x7c56eb;var _0x36dffe=squel[_0xc53e('0x6b')]();_0x36dffe['from'](_0x110e32[_0xc53e('0x6d')]);for(var _0xedb93a=0x0;_0xedb93a<_0x2135d4[_0xc53e('0x3a')];_0xedb93a+=0x1){_0x7c56eb=_0x2135d4[_0xedb93a]['MetricId']?_0x4bbf8a[_0x2135d4[_0xedb93a][_0xc53e('0x6e')]][_0xc53e('0x6f')]:_0x2135d4[_0xedb93a][_0xc53e('0x64')];_0x7c56eb=_0x2135d4[_0xedb93a][_0xc53e('0x70')]?_[_0xc53e('0x72')](_0x35b6dc[_0x2135d4[_0xedb93a]['function']],'%s',_0x7c56eb):_0x7c56eb;_0x7c56eb=_0x2135d4[_0xedb93a]['format']?_['replace'](_0x3d2636[_0x2135d4[_0xedb93a][_0xc53e('0x71')]],'%s',_0x7c56eb):_0x7c56eb;if(_0x2135d4[_0xedb93a][_0xc53e('0x8a')]){_0x36dffe[_0xc53e('0x63')](_0x7c56eb);}_0x2135d4[_0xedb93a][_0xc53e('0x73')]&&_0x36dffe['order'](_0x7c56eb,_0x2135d4[_0xedb93a][_0xc53e('0x73')]==='DESC'?![]:!![]);_0x36dffe[_0xc53e('0x64')](_0x7c56eb,_0x2135d4[_0xedb93a][_0xc53e('0x75')]||_0x7c56eb);}if(_0x110e32[_0xc53e('0x76')]){_0x110e32[_0xc53e('0x76')]=JSON['parse'](_0x110e32[_0xc53e('0x76')]);for(var _0xc23eef=0x0;_0xc23eef<_0x110e32[_0xc53e('0x76')][_0xc53e('0x3a')];_0xc23eef+=0x1){if(_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x41')]&&_[_0xc53e('0x5c')](_0x56c66f,_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x41')])&&_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x77')]&&_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x78')]&&_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x8b')]){_0x36dffe[_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x41')]](_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x78')],null,util[_0xc53e('0x71')](_0xc53e('0x79'),_0x110e32[_0xc53e('0x6d')],_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x77')],_0x110e32[_0xc53e('0x76')][_0xc23eef]['foreignTable'],_0x110e32[_0xc53e('0x76')][_0xc23eef]['foreignKey']));}}}if(_0x110e32[_0xc53e('0x7a')]){_0x110e32[_0xc53e('0x7a')]=JSON['parse'](_0x110e32[_0xc53e('0x7a')]);_0x36dffe[_0xc53e('0x3e')](_0x3dac82(_0x110e32[_0xc53e('0x7a')][_0xc53e('0x63')]));}_0x21fc8d=_0x36dffe[_0xc53e('0x7c')]();_0x36dffe[_0xc53e('0x1f')](_0x48e337);_0x36dffe[_0xc53e('0x1d')](0x0);return;}})[_0xc53e('0x26')](function(){if(_0xec3738[_0xc53e('0x8c')]==='web'){return null;}var _0x37c8e6=_['merge'](_0xec3738,{'name':_0xec3738[_0xc53e('0x8d')]||_0xec3738[_0xc53e('0x2d')]||_0x110e32[_0xc53e('0x2d')],'basename':_0x508671,'savename':util[_0xc53e('0x71')](_0xc53e('0x8e'),_0xec3738[_0xc53e('0x2d')]||_0x110e32[_0xc53e('0x2d')],require(_0xc53e('0x8f'))[_0xc53e('0x90')](0x4),_0xec3738[_0xc53e('0x8c')]||_0xc53e('0x91')),'reportId':_0x110e32['id'],'reportType':_0xc53e('0x92')});return db[_0xc53e('0x93')]['create'](_0x37c8e6,{'raw':!![]});})[_0xc53e('0x26')](function(_0x575ef5){if(_0x110e32[_0xc53e('0x6d')]===_0xc53e('0x94')){_0x21fc8d[_0xc53e('0x3e')](_0x110e32[_0xc53e('0x6d')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0xec3738['startDate'],_0xec3738[_0xc53e('0x95')]);}else{_0x21fc8d[_0xc53e('0x3e')](_0x110e32[_0xc53e('0x6d')]+_0xc53e('0x96'),_0xec3738['startDate'],_0xec3738['endDate']);}if(_0x575ef5){logger[_0xc53e('0x97')](_0xc53e('0x98'),_0x21fc8d[_0xc53e('0x80')]());require(_0xc53e('0x99'))[_0xc53e('0x9a')](path[_0xc53e('0x53')](__dirname,'../../components/export/',_0x575ef5[_0xc53e('0x8c')]),[_0x575ef5['id'],_0x21fc8d[_0xc53e('0x80')](),path[_0xc53e('0x53')](__dirname,_0xc53e('0x9b'),_0x575ef5[_0xc53e('0x9c')]),_0x508671]);return _0x575ef5;}else{var _0x4f527e=squel[_0xc53e('0x6b')]();_0x4f527e[_0xc53e('0x6c')]('('+_0x21fc8d[_0xc53e('0x80')]()+')',_0xc53e('0x9d'));_0x4f527e[_0xc53e('0x64')](_0xc53e('0x9e'),_0xc53e('0x20'));_0x21fc8d[_0xc53e('0x1f')](_0xec3738[_0xc53e('0x1f')]||_0x48e337);_0x21fc8d[_0xc53e('0x1d')](_0xec3738[_0xc53e('0x1d')]||0x0);return dbH[_0xc53e('0x7f')][_0xc53e('0x34')](_0x4f527e['toString'](),{'type':dbH[_0xc53e('0x7f')][_0xc53e('0x81')]['SELECT']})[_0xc53e('0x26')](function(_0x4ee56b){if(!_0x4ee56b['length']){_0x31b06d=0x0;}else{_0x31b06d=_0x4ee56b[0x0][_0xc53e('0x20')]||0x0;}return dbH['sequelize'][_0xc53e('0x34')](_0x21fc8d['toString'](),{'type':dbH[_0xc53e('0x7f')]['QueryTypes'][_0xc53e('0x9f')]});})[_0xc53e('0x26')](function(_0x10ad32){return{'rows':_0x10ad32||[],'count':_0x31b06d};});}});}exports['run']=function(_0xf3f34a,_0x5dd87e){return runReport(_0xf3f34a[_0xc53e('0x44')],_0xf3f34a[_0xc53e('0x34')],_0xf3f34a[_0xc53e('0x46')])[_0xc53e('0x26')](respondWithResult(_0x5dd87e,null))[_0xc53e('0x51')](handleError(_0x5dd87e,null));};exports[_0xc53e('0xa0')]=runReport;exports[_0xc53e('0x34')]=function(_0x265292,_0x2c776c){var _0x383f22=0xa;var _0x51f2a4=['join',_0xc53e('0x54'),'right_join',_0xc53e('0xa1')];var _0xbc960={'SUM':_0xc53e('0x83'),'COUNT':_0xc53e('0xa2'),'COUNT DISTINCT':_0xc53e('0x84'),'MAX':_0xc53e('0x55'),'MIN':_0xc53e('0xa3'),'AVG':_0xc53e('0x56'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xc53e('0x57'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x34cb12={'SEC_TO_TIME':_0xc53e('0x59'),'DATE':_0xc53e('0x5a'),'HOUR':_0xc53e('0x86'),'ROUND':_0xc53e('0x87'),'UNIX_TIMESTAMP':_0xc53e('0x5b')};var _0x227e0c=function(_0x4c0802){return!_[_0xc53e('0x5c')]([_0xc53e('0x5d'),_0xc53e('0x5e'),_0xc53e('0x5f'),_0xc53e('0x60')],_0x4c0802);};var _0x590fb6=function(_0x15d269){if(!_0x15d269||!_0x15d269[_0xc53e('0x61')]['length']){return'';}for(var _0x5253b1='(',_0x208c17=0x0;_0x208c17<_0x15d269['rules'][_0xc53e('0x3a')];_0x208c17+=0x1){_0x208c17>0x0&&(_0x5253b1+='\x20'+_0x15d269[_0xc53e('0x62')]+'\x20');_0x5253b1+=_0x15d269['rules'][_0x208c17]['group']?_0x590fb6(_0x15d269[_0xc53e('0x61')][_0x208c17]['group']):_0x15d269[_0xc53e('0x61')][_0x208c17]['field']+'\x20'+_0x15d269[_0xc53e('0x61')][_0x208c17][_0xc53e('0x88')]+(_0x227e0c(_0x15d269[_0xc53e('0x61')][_0x208c17][_0xc53e('0x88')])?'\x20'+_0x15d269[_0xc53e('0x61')][_0x208c17]['value']:'');}return _0x5253b1+')';};var _0x2f5d22={'where':{'id':_0x265292[_0xc53e('0x44')]['id']}},_0x478e57,_0x5e427a,_0x3e666b,_0x365a98,_0x375d8b;_0x2f5d22=_[_0xc53e('0x40')]({},_0x2f5d22,_0x265292[_0xc53e('0x46')]);return db[_0xc53e('0x43')][_0xc53e('0x47')](_0x2f5d22)[_0xc53e('0x26')](function(_0x3b778b){if(_0x3b778b){_0x478e57=_0x3b778b;return _0x3b778b[_0xc53e('0x66')]();}return null;})[_0xc53e('0x26')](function(_0x55581a){if(_0x55581a){if(!_0x55581a[_0xc53e('0x3a')]){throw new db[(_0xc53e('0x89'))][(_0xc53e('0xa4'))](_0xc53e('0x67'),0x193);}_0x5e427a=_0x55581a;return db[_0xc53e('0x68')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x34c717){if(_0x34c717){_0x3e666b=_[_0xc53e('0x6a')](_0x34c717,'id');var _0x2718fe;var _0x15014e=squel[_0xc53e('0x6b')]();_0x15014e[_0xc53e('0x6c')](_0x478e57[_0xc53e('0x6d')]);for(var _0x2d80f5=0x0;_0x2d80f5<_0x5e427a[_0xc53e('0x3a')];_0x2d80f5+=0x1){_0x2718fe=_0x5e427a[_0x2d80f5][_0xc53e('0x6e')]?_0x3e666b[_0x5e427a[_0x2d80f5][_0xc53e('0x6e')]][_0xc53e('0x6f')]:_0x5e427a[_0x2d80f5][_0xc53e('0x64')];_0x2718fe=_0x5e427a[_0x2d80f5]['function']?_[_0xc53e('0x72')](_0xbc960[_0x5e427a[_0x2d80f5][_0xc53e('0x70')]],'%s',_0x2718fe):_0x2718fe;_0x2718fe=_0x5e427a[_0x2d80f5]['format']?_[_0xc53e('0x72')](_0x34cb12[_0x5e427a[_0x2d80f5][_0xc53e('0x71')]],'%s',_0x2718fe):_0x2718fe;if(_0x5e427a[_0x2d80f5][_0xc53e('0x8a')]){_0x15014e['group'](_0x2718fe);}_0x5e427a[_0x2d80f5]['orderBy']&&_0x15014e[_0xc53e('0x3c')](_0x2718fe,_0x5e427a[_0x2d80f5][_0xc53e('0x73')]===_0xc53e('0x74')?![]:!![]);_0x15014e[_0xc53e('0x64')](_0x2718fe,_0x5e427a[_0x2d80f5]['alias']||_0x2718fe);}if(_0x478e57[_0xc53e('0x76')]){_0x478e57[_0xc53e('0x76')]=JSON[_0xc53e('0x7b')](_0x478e57['joins']);for(var _0x48d301=0x0;_0x48d301<_0x478e57[_0xc53e('0x76')][_0xc53e('0x3a')];_0x48d301+=0x1){if(_0x478e57[_0xc53e('0x76')][_0x48d301]['type']&&_[_0xc53e('0x5c')](_0x51f2a4,_0x478e57[_0xc53e('0x76')][_0x48d301]['type'])&&_0x478e57[_0xc53e('0x76')][_0x48d301][_0xc53e('0x77')]&&_0x478e57[_0xc53e('0x76')][_0x48d301][_0xc53e('0x78')]&&_0x478e57[_0xc53e('0x76')][_0x48d301]['foreignKey']){_0x15014e[_0x478e57[_0xc53e('0x76')][_0x48d301][_0xc53e('0x41')]](_0x478e57[_0xc53e('0x76')][_0x48d301]['foreignTable'],null,util['format'](_0xc53e('0x79'),_0x478e57[_0xc53e('0x6d')],_0x478e57[_0xc53e('0x76')][_0x48d301][_0xc53e('0x77')],_0x478e57[_0xc53e('0x76')][_0x48d301]['foreignTable'],_0x478e57[_0xc53e('0x76')][_0x48d301]['foreignKey']));}}}if(_0x478e57[_0xc53e('0x7a')]){_0x478e57[_0xc53e('0x7a')]=JSON[_0xc53e('0x7b')](_0x478e57[_0xc53e('0x7a')]);_0x15014e[_0xc53e('0x3e')](_0x590fb6(_0x478e57[_0xc53e('0x7a')][_0xc53e('0x63')]));}_0x375d8b=_0x15014e[_0xc53e('0x7c')]();_0x15014e[_0xc53e('0x1f')](_0x383f22);_0x15014e['offset'](0x0);logger[_0xc53e('0x7d')](_0xc53e('0x7e'),_0x15014e[_0xc53e('0x80')]());return dbH[_0xc53e('0x7f')][_0xc53e('0x34')](_0x15014e[_0xc53e('0x80')](),{'type':dbH['sequelize'][_0xc53e('0x81')][_0xc53e('0x9f')]});}})[_0xc53e('0x26')](function(){return{'sql':_0x375d8b[_0xc53e('0x80')]()};})[_0xc53e('0x26')](respondWithResult(_0x2c776c,null))[_0xc53e('0x51')](handleError(_0x2c776c,null));};
\ No newline at end of file
index a29cae8..a81ee59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd62=['./analyticDefaultReport.attributes','define','AnalyticDefaultReport','analytics_default_reports','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment'];(function(_0xa0e0a2,_0x1c47ad){var _0x51cea2=function(_0x30466e){while(--_0x30466e){_0xa0e0a2['push'](_0xa0e0a2['shift']());}};_0x51cea2(++_0x1c47ad);}(_0xdd62,0x117));var _0x2dd6=function(_0x2b7764,_0x2606f1){_0x2b7764=_0x2b7764-0x0;var _0x848dcb=_0xdd62[_0x2b7764];return _0x848dcb;};'use strict';var _=require('lodash');var util=require(_0x2dd6('0x0'));var logger=require(_0x2dd6('0x1'))(_0x2dd6('0x2'));var moment=require(_0x2dd6('0x3'));var BPromise=require('bluebird');var rp=require(_0x2dd6('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2dd6('0x5'));var config=require(_0x2dd6('0x6'));var attributes=require(_0x2dd6('0x7'));module['exports']=function(_0x450845,_0x3215b8){return _0x450845[_0x2dd6('0x8')](_0x2dd6('0x9'),attributes,{'tableName':_0x2dd6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe384=['util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','define','AnalyticDefaultReport','analytics_default_reports','lodash'];(function(_0x12ca5f,_0x223d98){var _0xfc3ae9=function(_0x1928fb){while(--_0x1928fb){_0x12ca5f['push'](_0x12ca5f['shift']());}};_0xfc3ae9(++_0x223d98);}(_0xe384,0x99));var _0x4e38=function(_0x4889aa,_0x267b77){_0x4889aa=_0x4889aa-0x0;var _0x124cbc=_0xe384[_0x4889aa];return _0x124cbc;};'use strict';var _=require(_0x4e38('0x0'));var util=require(_0x4e38('0x1'));var logger=require(_0x4e38('0x2'))(_0x4e38('0x3'));var moment=require(_0x4e38('0x4'));var BPromise=require(_0x4e38('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4e38('0x6'));var config=require(_0x4e38('0x7'));var attributes=require('./analyticDefaultReport.attributes');module['exports']=function(_0x1edccc,_0x192896){return _0x1edccc[_0x4e38('0x8')](_0x4e38('0x9'),attributes,{'tableName':_0x4e38('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 30954a7..ca78aac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29d2=['request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','AnalyticDefaultReport,\x20%s,\x20%s','message','result','catch','moment','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0x29d2,0x1be));var _0x229d=function(_0x6bbd97,_0x24d12b){_0x6bbd97=_0x6bbd97-0x0;var _0x3ed436=_0x29d2[_0x6bbd97];return _0x3ed436;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x229d('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x229d('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x229d('0x2'));var logger=require(_0x229d('0x3'))('rpc');var config=require(_0x229d('0x4'));var jayson=require(_0x229d('0x5'));var client=jayson[_0x229d('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x31cdd,_0x6944e6,_0x2f7fce){return new BPromise(function(_0x5b4ac1,_0x1aa0bf){return client[_0x229d('0x7')](_0x31cdd,_0x2f7fce)[_0x229d('0x8')](function(_0x4e2dee){logger[_0x229d('0x9')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x6944e6,_0x229d('0xa'));logger[_0x229d('0xb')](_0x229d('0xc'),_0x6944e6,_0x229d('0xa'),JSON[_0x229d('0xd')](_0x4e2dee));if(_0x4e2dee[_0x229d('0xe')]){if(_0x4e2dee[_0x229d('0xe')]['code']===0x1f4){logger[_0x229d('0xe')](_0x229d('0xf'),_0x6944e6,_0x4e2dee[_0x229d('0xe')][_0x229d('0x10')]);return _0x1aa0bf(_0x4e2dee['error'][_0x229d('0x10')]);}logger[_0x229d('0xe')](_0x229d('0xf'),_0x6944e6,_0x4e2dee[_0x229d('0xe')]['message']);return _0x5b4ac1(_0x4e2dee[_0x229d('0xe')][_0x229d('0x10')]);}else{logger[_0x229d('0x9')](_0x229d('0xf'),_0x6944e6,_0x229d('0xa'));_0x5b4ac1(_0x4e2dee[_0x229d('0x11')]['message']);}})[_0x229d('0x12')](function(_0x13c81f){logger[_0x229d('0xe')](_0x229d('0xf'),_0x6944e6,_0x13c81f);_0x1aa0bf(_0x13c81f);});});}
\ No newline at end of file
+var _0x2e6d=['AnalyticDefaultReport,\x20%s,\x20%s','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x90d183,_0x2c06de){var _0x41fbb8=function(_0x1d4786){while(--_0x1d4786){_0x90d183['push'](_0x90d183['shift']());}};_0x41fbb8(++_0x2c06de);}(_0x2e6d,0xbb));var _0xd2e6=function(_0x7c257c,_0x26bd82){_0x7c257c=_0x7c257c-0x0;var _0x249fda=_0x2e6d[_0x7c257c];return _0x249fda;};'use strict';var _=require(_0xd2e6('0x0'));var util=require(_0xd2e6('0x1'));var moment=require('moment');var BPromise=require(_0xd2e6('0x2'));var rs=require(_0xd2e6('0x3'));var fs=require('fs');var Redis=require(_0xd2e6('0x4'));var db=require(_0xd2e6('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd2e6('0x6'))(_0xd2e6('0x7'));var config=require(_0xd2e6('0x8'));var jayson=require(_0xd2e6('0x9'));var client=jayson[_0xd2e6('0xa')][_0xd2e6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1011af,_0x453c0a,_0x1c82f7){return new BPromise(function(_0x1e3524,_0x1004e0){return client[_0xd2e6('0xc')](_0x1011af,_0x1c82f7)[_0xd2e6('0xd')](function(_0x2084df){logger['info']('AnalyticDefaultReport,\x20%s,\x20%s',_0x453c0a,'request\x20sent');logger[_0xd2e6('0xe')](_0xd2e6('0xf'),_0x453c0a,_0xd2e6('0x10'),JSON[_0xd2e6('0x11')](_0x2084df));if(_0x2084df[_0xd2e6('0x12')]){if(_0x2084df[_0xd2e6('0x12')][_0xd2e6('0x13')]===0x1f4){logger[_0xd2e6('0x12')](_0xd2e6('0x14'),_0x453c0a,_0x2084df[_0xd2e6('0x12')]['message']);return _0x1004e0(_0x2084df[_0xd2e6('0x12')][_0xd2e6('0x15')]);}logger[_0xd2e6('0x12')](_0xd2e6('0x14'),_0x453c0a,_0x2084df['error'][_0xd2e6('0x15')]);return _0x1e3524(_0x2084df['error']['message']);}else{logger['info'](_0xd2e6('0x14'),_0x453c0a,_0xd2e6('0x10'));_0x1e3524(_0x2084df['result']['message']);}})[_0xd2e6('0x16')](function(_0x3a1137){logger[_0xd2e6('0x12')](_0xd2e6('0x14'),_0x453c0a,_0x3a1137);_0x1004e0(_0x3a1137);});});}
\ No newline at end of file
index 6b48054..414c3f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a51=['../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','/:id','/:id/query','put','delete','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x33c9f8,_0x5aedbb){var _0x2d7004=function(_0x4f4f43){while(--_0x4f4f43){_0x33c9f8['push'](_0x33c9f8['shift']());}};_0x2d7004(++_0x5aedbb);}(_0x0a51,0x12a));var _0x10a5=function(_0x71b3f5,_0x413b41){_0x71b3f5=_0x71b3f5-0x0;var _0x44ad22=_0x0a51[_0x71b3f5];return _0x44ad22;};'use strict';var multer=require(_0x10a5('0x0'));var util=require(_0x10a5('0x1'));var path=require(_0x10a5('0x2'));var timeout=require(_0x10a5('0x3'));var express=require(_0x10a5('0x4'));var router=express['Router']();var fs_extra=require(_0x10a5('0x5'));var auth=require(_0x10a5('0x6'));var interaction=require(_0x10a5('0x7'));var config=require(_0x10a5('0x8'));var controller=require(_0x10a5('0x9'));router[_0x10a5('0xa')]('/',auth[_0x10a5('0xb')](),controller['index']);router['get'](_0x10a5('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x10a5('0xa')]('/:id/preview',auth['isAuthenticated'](),controller['preview']);router[_0x10a5('0xa')]('/:id/run',auth[_0x10a5('0xb')](),controller['run']);router[_0x10a5('0xa')](_0x10a5('0xd'),auth[_0x10a5('0xb')](),controller['query']);router['post']('/',auth[_0x10a5('0xb')](),controller['create']);router[_0x10a5('0xe')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x10a5('0xf')](_0x10a5('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xbb6d=['isAuthenticated','index','/:id','show','/:id/preview','preview','/:id/run','run','/:id/query','post','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../config/environment','get'];(function(_0x41daeb,_0x3f138d){var _0x5b142d=function(_0x195224){while(--_0x195224){_0x41daeb['push'](_0x41daeb['shift']());}};_0x5b142d(++_0x3f138d);}(_0xbb6d,0x168));var _0xdbb6=function(_0x434ee7,_0x1baf42){_0x434ee7=_0x434ee7-0x0;var _0x184f6b=_0xbb6d[_0x434ee7];return _0x184f6b;};'use strict';var multer=require(_0xdbb6('0x0'));var util=require(_0xdbb6('0x1'));var path=require(_0xdbb6('0x2'));var timeout=require('connect-timeout');var express=require(_0xdbb6('0x3'));var router=express[_0xdbb6('0x4')]();var fs_extra=require(_0xdbb6('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xdbb6('0x6'));var controller=require('./analyticDefaultReport.controller');router[_0xdbb6('0x7')]('/',auth[_0xdbb6('0x8')](),controller[_0xdbb6('0x9')]);router[_0xdbb6('0x7')](_0xdbb6('0xa'),auth['isAuthenticated'](),controller[_0xdbb6('0xb')]);router['get'](_0xdbb6('0xc'),auth[_0xdbb6('0x8')](),controller[_0xdbb6('0xd')]);router[_0xdbb6('0x7')](_0xdbb6('0xe'),auth[_0xdbb6('0x8')](),controller[_0xdbb6('0xf')]);router[_0xdbb6('0x7')](_0xdbb6('0x10'),auth[_0xdbb6('0x8')](),controller['query']);router[_0xdbb6('0x11')]('/',auth[_0xdbb6('0x8')](),controller['create']);router[_0xdbb6('0x12')](_0xdbb6('0xa'),auth[_0xdbb6('0x8')](),controller[_0xdbb6('0x13')]);router[_0xdbb6('0x14')](_0xdbb6('0xa'),auth[_0xdbb6('0x8')](),controller[_0xdbb6('0x15')]);module[_0xdbb6('0x16')]=router;
\ No newline at end of file
index 0c266c3..c1f3f5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03ed=['xlsx','DATE','Loading','ENUM','manual','INTEGER','exports','STRING','csv','pdf'];(function(_0xf74372,_0x51fe82){var _0x36bb65=function(_0x499b7a){while(--_0x499b7a){_0xf74372['push'](_0xf74372['shift']());}};_0x36bb65(++_0x51fe82);}(_0x03ed,0x1a0));var _0xd03e=function(_0x36cc77,_0x54bd79){_0x36cc77=_0x36cc77-0x0;var _0x29a54a=_0x03ed[_0x36cc77];return _0x29a54a;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0xd03e('0x0')]={'name':{'type':Sequelize[_0xd03e('0x1')],'allowNull':![]},'basename':{'type':Sequelize[_0xd03e('0x1')],'allowNull':![]},'output':{'type':Sequelize['ENUM'](_0xd03e('0x2'),_0xd03e('0x3'),_0xd03e('0x4')),'allowNull':![],'defaultValue':_0xd03e('0x2')},'savename':{'type':Sequelize[_0xd03e('0x1')],'allowNull':![]},'startDate':{'type':Sequelize[_0xd03e('0x5')]},'endDate':{'type':Sequelize[_0xd03e('0x5')]},'status':{'type':Sequelize[_0xd03e('0x1')],'defaultValue':_0xd03e('0x6')},'type':{'type':Sequelize[_0xd03e('0x7')](_0xd03e('0x8'),'scheduled'),'allowNull':![],'defaultValue':_0xd03e('0x8')},'reportId':{'type':Sequelize[_0xd03e('0x9')](0xb)['UNSIGNED']},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0e09=['ENUM','csv','DATE','Loading','manual','sequelize','exports','STRING'];(function(_0x2114e3,_0x2c3028){var _0x6bff25=function(_0x197a39){while(--_0x197a39){_0x2114e3['push'](_0x2114e3['shift']());}};_0x6bff25(++_0x2c3028);}(_0x0e09,0x115));var _0x90e0=function(_0x195ce8,_0x370bbb){_0x195ce8=_0x195ce8-0x0;var _0x5f00eb=_0x0e09[_0x195ce8];return _0x5f00eb;};'use strict';var Sequelize=require(_0x90e0('0x0'));var moment=require('moment');module[_0x90e0('0x1')]={'name':{'type':Sequelize[_0x90e0('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x90e0('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x90e0('0x3')](_0x90e0('0x4'),'pdf','xlsx'),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize[_0x90e0('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x90e0('0x5')]},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize[_0x90e0('0x2')],'defaultValue':_0x90e0('0x6')},'type':{'type':Sequelize[_0x90e0('0x3')](_0x90e0('0x7'),'scheduled'),'allowNull':![],'defaultValue':_0x90e0('0x7')},'reportId':{'type':Sequelize['INTEGER'](0xb)['UNSIGNED']},'reportType':{'type':Sequelize[_0x90e0('0x2')]}};
\ No newline at end of file
index b3cc780..13a5a4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacac=['../../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','apply','reject','save','then','destroy','get','ExtractedReports','UserProfileResource','error','name','send','AnalyticExtractedReport','rawAttributes','type','map','query','keys','filters','model','fields','attributes','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','intersection','length','includeAll','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','download','basename','output','existsSync','join','root','server/files/reports','Sequelize','Report\x20not\x20found\x20or\x20empty','exists','format','toLowerCase','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x2a7b44,_0x3786f2){var _0x1af209=function(_0x5155f3){while(--_0x5155f3){_0x2a7b44['push'](_0x2a7b44['shift']());}};_0x1af209(++_0x3786f2);}(_0xacac,0x16e));var _0xcaca=function(_0xa15794,_0x5b4529){_0xa15794=_0xa15794-0x0;var _0x556335=_0xacac[_0xa15794];return _0x556335;};'use strict';var emlformat=require(_0xcaca('0x0'));var rimraf=require(_0xcaca('0x1'));var zipdir=require(_0xcaca('0x2'));var jsonpatch=require(_0xcaca('0x3'));var rp=require(_0xcaca('0x4'));var moment=require(_0xcaca('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xcaca('0x6'));var util=require('util');var path=require(_0xcaca('0x7'));var sox=require('sox');var csv=require(_0xcaca('0x8'));var ejs=require(_0xcaca('0x9'));var fs=require('fs');var fs_extra=require(_0xcaca('0xa'));var _=require(_0xcaca('0xb'));var squel=require(_0xcaca('0xc'));var crypto=require(_0xcaca('0xd'));var jsforce=require(_0xcaca('0xe'));var deskjs=require(_0xcaca('0xf'));var toCsv=require(_0xcaca('0x8'));var querystring=require(_0xcaca('0x10'));var Papa=require(_0xcaca('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xcaca('0x12'));var as=require(_0xcaca('0x13'));var hardwareService=require(_0xcaca('0x14'));var logger=require(_0xcaca('0x15'))(_0xcaca('0x16'));var utils=require(_0xcaca('0x17'));var config=require(_0xcaca('0x18'));var licenseUtil=require(_0xcaca('0x19'));var db=require(_0xcaca('0x1a'))['db'];function respondWithStatusCode(_0x3e81b8,_0x8cdbf9){_0x8cdbf9=_0x8cdbf9||0xcc;return function(_0x53d51d){if(_0x53d51d){return _0x3e81b8[_0xcaca('0x1b')](_0x8cdbf9);}return _0x3e81b8[_0xcaca('0x1c')](_0x8cdbf9)[_0xcaca('0x1d')]();};}function respondWithResult(_0x12ec1a,_0x153fa1){_0x153fa1=_0x153fa1||0xc8;return function(_0x462a99){if(_0x462a99){return _0x12ec1a['status'](_0x153fa1)['json'](_0x462a99);}};}function respondWithFilteredResult(_0x3460a3,_0x3fb169){return function(_0x55744a){if(_0x55744a){var _0x34d345=typeof _0x3fb169['offset']===_0xcaca('0x1e')&&typeof _0x3fb169['limit']===_0xcaca('0x1e');var _0x4b2973=_0x55744a[_0xcaca('0x1f')];var _0x9a2132=_0x34d345?0x0:_0x3fb169[_0xcaca('0x20')];var _0x4ffdf4=_0x34d345?_0x55744a[_0xcaca('0x1f')]:_0x3fb169['offset']+_0x3fb169[_0xcaca('0x21')];var _0x261a24;if(_0x4ffdf4>=_0x4b2973){_0x4ffdf4=_0x4b2973;_0x261a24=0xc8;}else{_0x261a24=0xce;}_0x3460a3['status'](_0x261a24);return _0x3460a3[_0xcaca('0x22')](_0xcaca('0x23'),_0x9a2132+'-'+_0x4ffdf4+'/'+_0x4b2973)[_0xcaca('0x24')](_0x55744a);}return null;};}function patchUpdates(_0x150379){return function(_0x1362c1){try{jsonpatch[_0xcaca('0x25')](_0x1362c1,_0x150379,!![]);}catch(_0x580278){return BPromise[_0xcaca('0x26')](_0x580278);}return _0x1362c1[_0xcaca('0x27')]();};}function saveUpdates(_0x109003,_0x2c92d7){return function(_0x57f890){if(_0x57f890){return _0x57f890['update'](_0x109003)[_0xcaca('0x28')](function(_0x466570){return _0x466570;});}return null;};}function removeEntity(_0x2617ff,_0xf3ab6d){return function(_0x64cf29){if(_0x64cf29){return _0x64cf29[_0xcaca('0x29')]()[_0xcaca('0x28')](function(){var _0x1c0634=_0x64cf29[_0xcaca('0x2a')]({'plain':!![]});var _0x1758ff=_0xcaca('0x2b');return db[_0xcaca('0x2c')][_0xcaca('0x29')]({'where':{'type':_0x1758ff,'resourceId':_0x1c0634['id']}})[_0xcaca('0x28')](function(){return _0x64cf29;});})[_0xcaca('0x28')](function(){_0x2617ff[_0xcaca('0x1c')](0xcc)[_0xcaca('0x1d')]();});}};}function handleEntityNotFound(_0x573bee,_0x3427b5){return function(_0x29c659){if(!_0x29c659){_0x573bee[_0xcaca('0x1b')](0x194);}return _0x29c659;};}function handleError(_0x3c8bc1,_0x2624ae){_0x2624ae=_0x2624ae||0x1f4;return function(_0x3f3a92){logger[_0xcaca('0x2d')](_0x3f3a92['stack']);if(_0x3f3a92[_0xcaca('0x2e')]){delete _0x3f3a92[_0xcaca('0x2e')];}_0x3c8bc1[_0xcaca('0x1c')](_0x2624ae)[_0xcaca('0x2f')](_0x3f3a92);};}exports['index']=function(_0x1f7770,_0x441ebf){var _0x25afdf={},_0x23b2bd={},_0x4bf8fa={'count':0x0,'rows':[]};var _0x544348=_['map'](db[_0xcaca('0x30')][_0xcaca('0x31')],function(_0x59d206){return{'name':_0x59d206['fieldName'],'type':_0x59d206[_0xcaca('0x32')]['key']};});_0x23b2bd['model']=_[_0xcaca('0x33')](_0x544348,_0xcaca('0x2e'));_0x23b2bd[_0xcaca('0x34')]=_[_0xcaca('0x35')](_0x1f7770[_0xcaca('0x34')]);_0x23b2bd[_0xcaca('0x36')]=_['intersection'](_0x23b2bd[_0xcaca('0x37')],_0x23b2bd[_0xcaca('0x34')]);_0x25afdf['attributes']=_['intersection'](_0x23b2bd[_0xcaca('0x37')],qs[_0xcaca('0x38')](_0x1f7770[_0xcaca('0x34')][_0xcaca('0x38')]));_0x25afdf[_0xcaca('0x39')]=_0x25afdf[_0xcaca('0x39')]['length']?_0x25afdf[_0xcaca('0x39')]:_0x23b2bd['model'];if(!_0x1f7770['query']['hasOwnProperty']('nolimit')){_0x25afdf[_0xcaca('0x21')]=qs[_0xcaca('0x21')](_0x1f7770['query'][_0xcaca('0x21')]);_0x25afdf[_0xcaca('0x20')]=qs[_0xcaca('0x20')](_0x1f7770[_0xcaca('0x34')][_0xcaca('0x20')]);}_0x25afdf[_0xcaca('0x3a')]=qs[_0xcaca('0x3b')](_0x1f7770[_0xcaca('0x34')][_0xcaca('0x3b')]);_0x25afdf[_0xcaca('0x3c')]=qs[_0xcaca('0x36')](_[_0xcaca('0x3d')](_0x1f7770[_0xcaca('0x34')],_0x23b2bd[_0xcaca('0x36')]),_0x544348);if(_0x1f7770[_0xcaca('0x34')]['filter']){_0x25afdf[_0xcaca('0x3c')]=_[_0xcaca('0x3e')](_0x25afdf['where'],{'$or':_[_0xcaca('0x33')](_0x544348,function(_0x2bb082){if(_0x2bb082[_0xcaca('0x32')]!==_0xcaca('0x3f')){var _0x4cd544={};_0x4cd544[_0x2bb082[_0xcaca('0x2e')]]={'$like':'%'+_0x1f7770['query'][_0xcaca('0x40')]+'%'};return _0x4cd544;}})});}_0x25afdf=_[_0xcaca('0x3e')]({},_0x25afdf,_0x1f7770[_0xcaca('0x41')]);var _0x129582={'where':_0x25afdf['where']};return db['AnalyticExtractedReport']['count'](_0x129582)['then'](function(_0x197d13){_0x4bf8fa[_0xcaca('0x1f')]=_0x197d13;if(_0x1f7770[_0xcaca('0x34')]['includeAll']){_0x25afdf[_0xcaca('0x42')]=[{'all':!![]}];}return db[_0xcaca('0x30')][_0xcaca('0x43')](_0x25afdf);})[_0xcaca('0x28')](function(_0x2ebbcc){_0x4bf8fa[_0xcaca('0x44')]=_0x2ebbcc;return _0x4bf8fa;})['then'](respondWithFilteredResult(_0x441ebf,_0x25afdf))[_0xcaca('0x45')](handleError(_0x441ebf,null));};exports[_0xcaca('0x46')]=function(_0x5701c6,_0x26bac4){var _0x402c7c={'raw':!![],'where':{'id':_0x5701c6[_0xcaca('0x47')]['id']}},_0x5144fb={};_0x5144fb[_0xcaca('0x37')]=_[_0xcaca('0x35')](db[_0xcaca('0x30')][_0xcaca('0x31')]);_0x5144fb[_0xcaca('0x34')]=_[_0xcaca('0x35')](_0x5701c6['query']);_0x5144fb[_0xcaca('0x36')]=_[_0xcaca('0x48')](_0x5144fb['model'],_0x5144fb[_0xcaca('0x34')]);_0x402c7c[_0xcaca('0x39')]=_['intersection'](_0x5144fb[_0xcaca('0x37')],qs[_0xcaca('0x38')](_0x5701c6['query'][_0xcaca('0x38')]));_0x402c7c[_0xcaca('0x39')]=_0x402c7c[_0xcaca('0x39')][_0xcaca('0x49')]?_0x402c7c[_0xcaca('0x39')]:_0x5144fb[_0xcaca('0x37')];if(_0x5701c6['query'][_0xcaca('0x4a')]){_0x402c7c[_0xcaca('0x42')]=[{'all':!![]}];}_0x402c7c=_[_0xcaca('0x3e')]({},_0x402c7c,_0x5701c6[_0xcaca('0x41')]);return db[_0xcaca('0x30')][_0xcaca('0x4b')](_0x402c7c)[_0xcaca('0x28')](handleEntityNotFound(_0x26bac4,null))[_0xcaca('0x28')](respondWithResult(_0x26bac4,null))['catch'](handleError(_0x26bac4,null));};exports[_0xcaca('0x4c')]=function(_0x269e41,_0x1cc1d8){return db[_0xcaca('0x30')][_0xcaca('0x4c')](_0x269e41[_0xcaca('0x4d')],{})[_0xcaca('0x28')](function(_0x2224a2){var _0x5dec3d=_0x269e41['user'][_0xcaca('0x2a')]({'plain':!![]});if(!_0x5dec3d)throw new Error(_0xcaca('0x4e'));if(_0x5dec3d['role']===_0xcaca('0x4f')){var _0x15ba68=_0x2224a2[_0xcaca('0x2a')]({'plain':!![]});var _0x563df5=_0xcaca('0x2b');return db[_0xcaca('0x50')]['find']({'where':{'name':_0x563df5,'userProfileId':_0x5dec3d['userProfileId']},'raw':!![]})[_0xcaca('0x28')](function(_0x3f8b78){if(_0x3f8b78&&_0x3f8b78[_0xcaca('0x51')]===0x0){return db[_0xcaca('0x2c')][_0xcaca('0x4c')]({'name':_0x15ba68[_0xcaca('0x2e')],'resourceId':_0x15ba68['id'],'type':_0x3f8b78[_0xcaca('0x2e')],'sectionId':_0x3f8b78['id']},{})[_0xcaca('0x28')](function(){return _0x2224a2;});}else{return _0x2224a2;}})[_0xcaca('0x45')](function(_0x5d1476){logger[_0xcaca('0x2d')](_0xcaca('0x52'),_0x5d1476);throw _0x5d1476;});}return _0x2224a2;})[_0xcaca('0x28')](respondWithResult(_0x1cc1d8,0xc9))[_0xcaca('0x45')](handleError(_0x1cc1d8,null));};exports[_0xcaca('0x53')]=function(_0x2aaf4b,_0x1914ac){if(_0x2aaf4b['body']['id']){delete _0x2aaf4b[_0xcaca('0x4d')]['id'];}return db[_0xcaca('0x30')][_0xcaca('0x4b')]({'where':{'id':_0x2aaf4b[_0xcaca('0x47')]['id']}})['then'](handleEntityNotFound(_0x1914ac,null))[_0xcaca('0x28')](saveUpdates(_0x2aaf4b[_0xcaca('0x4d')],null))[_0xcaca('0x28')](respondWithResult(_0x1914ac,null))['catch'](handleError(_0x1914ac,null));};exports['destroy']=function(_0xd96f52,_0x4f61b7){return db[_0xcaca('0x30')]['find']({'where':{'id':_0xd96f52[_0xcaca('0x47')]['id']}})[_0xcaca('0x28')](handleEntityNotFound(_0x4f61b7,null))['then'](removeEntity(_0x4f61b7,null))[_0xcaca('0x45')](handleError(_0x4f61b7,null));};exports[_0xcaca('0x54')]=function(_0x379ed2,_0x2b095f,_0xb0783){return db[_0xcaca('0x30')]['find']({'where':{'id':_0x379ed2[_0xcaca('0x47')]['id']},'attributes':[_0xcaca('0x2e'),_0xcaca('0x55'),'savename',_0xcaca('0x56')],'raw':!![]})[_0xcaca('0x28')](handleEntityNotFound(_0x2b095f,null))[_0xcaca('0x28')](function(_0x2aa189){if(_0x2aa189){if(!fs[_0xcaca('0x57')](path[_0xcaca('0x58')](config[_0xcaca('0x59')],_0xcaca('0x5a'),_0x2aa189['savename']))){throw new db[(_0xcaca('0x5b'))]['ValidationError'](_0xcaca('0x5c'));}if(_0x379ed2[_0xcaca('0x34')][_0xcaca('0x5d')]){return _0x2b095f[_0xcaca('0x1b')](0xc8);}return _0x2b095f[_0xcaca('0x54')](path[_0xcaca('0x58')](config[_0xcaca('0x59')],_0xcaca('0x5a'),_0x2aa189['savename']),util[_0xcaca('0x5e')]('%s.%s',_0x2aa189[_0xcaca('0x55')]||_0x2aa189[_0xcaca('0x2e')],_0x2aa189[_0xcaca('0x56')][_0xcaca('0x5f')]()));}})[_0xcaca('0x45')](handleError(_0x2b095f,null));};
\ No newline at end of file
+var _0x2b8b=['apply','reject','save','update','then','get','ExtractedReports','UserProfileResource','destroy','end','name','send','index','map','AnalyticExtractedReport','rawAttributes','type','key','model','keys','filters','intersection','query','attributes','fields','length','nolimit','order','where','pick','filter','VIRTUAL','options','include','findAll','rows','show','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','body','params','basename','savename','output','existsSync','join','root','server/files/reports','Sequelize','ValidationError','download','format','%s.%s','toLowerCase','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','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','sendStatus','undefined','count','offset','limit','status','set','Content-Range'];(function(_0x32320a,_0x5b9b6f){var _0x505d3e=function(_0x4efb9c){while(--_0x4efb9c){_0x32320a['push'](_0x32320a['shift']());}};_0x505d3e(++_0x5b9b6f);}(_0x2b8b,0x160));var _0xb2b8=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x2b8b[_0x465a0c];return _0x1e202e;};'use strict';var emlformat=require(_0xb2b8('0x0'));var rimraf=require(_0xb2b8('0x1'));var zipdir=require(_0xb2b8('0x2'));var jsonpatch=require(_0xb2b8('0x3'));var rp=require(_0xb2b8('0x4'));var moment=require(_0xb2b8('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb2b8('0x6'));var util=require(_0xb2b8('0x7'));var path=require(_0xb2b8('0x8'));var sox=require(_0xb2b8('0x9'));var csv=require(_0xb2b8('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb2b8('0xb'));var _=require(_0xb2b8('0xc'));var squel=require(_0xb2b8('0xd'));var crypto=require(_0xb2b8('0xe'));var jsforce=require(_0xb2b8('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xb2b8('0xa'));var querystring=require(_0xb2b8('0x10'));var Papa=require(_0xb2b8('0x11'));var Redis=require(_0xb2b8('0x12'));var authService=require(_0xb2b8('0x13'));var qs=require(_0xb2b8('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb2b8('0x15'));var logger=require(_0xb2b8('0x16'))(_0xb2b8('0x17'));var utils=require(_0xb2b8('0x18'));var config=require(_0xb2b8('0x19'));var licenseUtil=require(_0xb2b8('0x1a'));var db=require(_0xb2b8('0x1b'))['db'];function respondWithStatusCode(_0x13c388,_0x3867ad){_0x3867ad=_0x3867ad||0xcc;return function(_0x1ebfa9){if(_0x1ebfa9){return _0x13c388[_0xb2b8('0x1c')](_0x3867ad);}return _0x13c388['status'](_0x3867ad)['end']();};}function respondWithResult(_0x1594b4,_0x979ab7){_0x979ab7=_0x979ab7||0xc8;return function(_0x2d6646){if(_0x2d6646){return _0x1594b4['status'](_0x979ab7)['json'](_0x2d6646);}};}function respondWithFilteredResult(_0x464cde,_0x307960){return function(_0x9e3927){if(_0x9e3927){var _0x536cb4=typeof _0x307960['offset']===_0xb2b8('0x1d')&&typeof _0x307960['limit']===_0xb2b8('0x1d');var _0x3c1e6c=_0x9e3927[_0xb2b8('0x1e')];var _0x1beba6=_0x536cb4?0x0:_0x307960[_0xb2b8('0x1f')];var _0x10cde5=_0x536cb4?_0x9e3927[_0xb2b8('0x1e')]:_0x307960[_0xb2b8('0x1f')]+_0x307960[_0xb2b8('0x20')];var _0x1b61f6;if(_0x10cde5>=_0x3c1e6c){_0x10cde5=_0x3c1e6c;_0x1b61f6=0xc8;}else{_0x1b61f6=0xce;}_0x464cde[_0xb2b8('0x21')](_0x1b61f6);return _0x464cde[_0xb2b8('0x22')](_0xb2b8('0x23'),_0x1beba6+'-'+_0x10cde5+'/'+_0x3c1e6c)['json'](_0x9e3927);}return null;};}function patchUpdates(_0x5935ba){return function(_0x276d09){try{jsonpatch[_0xb2b8('0x24')](_0x276d09,_0x5935ba,!![]);}catch(_0x178fd6){return BPromise[_0xb2b8('0x25')](_0x178fd6);}return _0x276d09[_0xb2b8('0x26')]();};}function saveUpdates(_0x1e66fd,_0x1ea699){return function(_0x1f3197){if(_0x1f3197){return _0x1f3197[_0xb2b8('0x27')](_0x1e66fd)['then'](function(_0xf3370d){return _0xf3370d;});}return null;};}function removeEntity(_0x420d74,_0x5c213e){return function(_0x5ee39d){if(_0x5ee39d){return _0x5ee39d['destroy']()[_0xb2b8('0x28')](function(){var _0x43b94b=_0x5ee39d[_0xb2b8('0x29')]({'plain':!![]});var _0xcdda1b=_0xb2b8('0x2a');return db[_0xb2b8('0x2b')][_0xb2b8('0x2c')]({'where':{'type':_0xcdda1b,'resourceId':_0x43b94b['id']}})[_0xb2b8('0x28')](function(){return _0x5ee39d;});})[_0xb2b8('0x28')](function(){_0x420d74['status'](0xcc)[_0xb2b8('0x2d')]();});}};}function handleEntityNotFound(_0x46f377,_0x53c4b8){return function(_0x2d3e77){if(!_0x2d3e77){_0x46f377[_0xb2b8('0x1c')](0x194);}return _0x2d3e77;};}function handleError(_0xbf75c9,_0x47dd30){_0x47dd30=_0x47dd30||0x1f4;return function(_0x3bdd5a){logger['error'](_0x3bdd5a['stack']);if(_0x3bdd5a[_0xb2b8('0x2e')]){delete _0x3bdd5a[_0xb2b8('0x2e')];}_0xbf75c9[_0xb2b8('0x21')](_0x47dd30)[_0xb2b8('0x2f')](_0x3bdd5a);};}exports[_0xb2b8('0x30')]=function(_0x3570e3,_0x42e31f){var _0x16c49f={},_0x52299f={},_0x5b6631={'count':0x0,'rows':[]};var _0x5c1094=_[_0xb2b8('0x31')](db[_0xb2b8('0x32')][_0xb2b8('0x33')],function(_0x57d1b1){return{'name':_0x57d1b1['fieldName'],'type':_0x57d1b1[_0xb2b8('0x34')][_0xb2b8('0x35')]};});_0x52299f[_0xb2b8('0x36')]=_[_0xb2b8('0x31')](_0x5c1094,_0xb2b8('0x2e'));_0x52299f['query']=_[_0xb2b8('0x37')](_0x3570e3['query']);_0x52299f[_0xb2b8('0x38')]=_[_0xb2b8('0x39')](_0x52299f[_0xb2b8('0x36')],_0x52299f[_0xb2b8('0x3a')]);_0x16c49f[_0xb2b8('0x3b')]=_['intersection'](_0x52299f[_0xb2b8('0x36')],qs[_0xb2b8('0x3c')](_0x3570e3[_0xb2b8('0x3a')][_0xb2b8('0x3c')]));_0x16c49f['attributes']=_0x16c49f[_0xb2b8('0x3b')][_0xb2b8('0x3d')]?_0x16c49f[_0xb2b8('0x3b')]:_0x52299f[_0xb2b8('0x36')];if(!_0x3570e3[_0xb2b8('0x3a')]['hasOwnProperty'](_0xb2b8('0x3e'))){_0x16c49f['limit']=qs[_0xb2b8('0x20')](_0x3570e3[_0xb2b8('0x3a')][_0xb2b8('0x20')]);_0x16c49f[_0xb2b8('0x1f')]=qs['offset'](_0x3570e3['query'][_0xb2b8('0x1f')]);}_0x16c49f[_0xb2b8('0x3f')]=qs['sort'](_0x3570e3['query']['sort']);_0x16c49f[_0xb2b8('0x40')]=qs[_0xb2b8('0x38')](_[_0xb2b8('0x41')](_0x3570e3['query'],_0x52299f[_0xb2b8('0x38')]),_0x5c1094);if(_0x3570e3['query'][_0xb2b8('0x42')]){_0x16c49f[_0xb2b8('0x40')]=_['merge'](_0x16c49f['where'],{'$or':_['map'](_0x5c1094,function(_0x123d4c){if(_0x123d4c[_0xb2b8('0x34')]!==_0xb2b8('0x43')){var _0x4a2bfd={};_0x4a2bfd[_0x123d4c['name']]={'$like':'%'+_0x3570e3['query'][_0xb2b8('0x42')]+'%'};return _0x4a2bfd;}})});}_0x16c49f=_['merge']({},_0x16c49f,_0x3570e3[_0xb2b8('0x44')]);var _0x1bc67e={'where':_0x16c49f[_0xb2b8('0x40')]};return db['AnalyticExtractedReport'][_0xb2b8('0x1e')](_0x1bc67e)['then'](function(_0x4b9504){_0x5b6631[_0xb2b8('0x1e')]=_0x4b9504;if(_0x3570e3['query']['includeAll']){_0x16c49f[_0xb2b8('0x45')]=[{'all':!![]}];}return db[_0xb2b8('0x32')][_0xb2b8('0x46')](_0x16c49f);})[_0xb2b8('0x28')](function(_0x23426c){_0x5b6631[_0xb2b8('0x47')]=_0x23426c;return _0x5b6631;})[_0xb2b8('0x28')](respondWithFilteredResult(_0x42e31f,_0x16c49f))['catch'](handleError(_0x42e31f,null));};exports[_0xb2b8('0x48')]=function(_0x1c2d7b,_0x4af06d){var _0x3056c1={'raw':!![],'where':{'id':_0x1c2d7b['params']['id']}},_0x5a62f2={};_0x5a62f2[_0xb2b8('0x36')]=_['keys'](db[_0xb2b8('0x32')][_0xb2b8('0x33')]);_0x5a62f2[_0xb2b8('0x3a')]=_['keys'](_0x1c2d7b[_0xb2b8('0x3a')]);_0x5a62f2['filters']=_[_0xb2b8('0x39')](_0x5a62f2[_0xb2b8('0x36')],_0x5a62f2[_0xb2b8('0x3a')]);_0x3056c1[_0xb2b8('0x3b')]=_['intersection'](_0x5a62f2['model'],qs[_0xb2b8('0x3c')](_0x1c2d7b[_0xb2b8('0x3a')][_0xb2b8('0x3c')]));_0x3056c1[_0xb2b8('0x3b')]=_0x3056c1[_0xb2b8('0x3b')][_0xb2b8('0x3d')]?_0x3056c1[_0xb2b8('0x3b')]:_0x5a62f2[_0xb2b8('0x36')];if(_0x1c2d7b[_0xb2b8('0x3a')]['includeAll']){_0x3056c1['include']=[{'all':!![]}];}_0x3056c1=_['merge']({},_0x3056c1,_0x1c2d7b['options']);return db[_0xb2b8('0x32')][_0xb2b8('0x49')](_0x3056c1)[_0xb2b8('0x28')](handleEntityNotFound(_0x4af06d,null))['then'](respondWithResult(_0x4af06d,null))[_0xb2b8('0x4a')](handleError(_0x4af06d,null));};exports[_0xb2b8('0x4b')]=function(_0x1e0a9d,_0x17615f){return db['AnalyticExtractedReport'][_0xb2b8('0x4b')](_0x1e0a9d['body'],{})[_0xb2b8('0x28')](function(_0x1ff646){var _0x280729=_0x1e0a9d['user'][_0xb2b8('0x29')]({'plain':!![]});if(!_0x280729)throw new Error(_0xb2b8('0x4c'));if(_0x280729[_0xb2b8('0x4d')]===_0xb2b8('0x4e')){var _0x4bf933=_0x1ff646[_0xb2b8('0x29')]({'plain':!![]});var _0x151c47=_0xb2b8('0x2a');return db[_0xb2b8('0x4f')]['find']({'where':{'name':_0x151c47,'userProfileId':_0x280729[_0xb2b8('0x50')]},'raw':!![]})['then'](function(_0x2c431b){if(_0x2c431b&&_0x2c431b[_0xb2b8('0x51')]===0x0){return db['UserProfileResource']['create']({'name':_0x4bf933[_0xb2b8('0x2e')],'resourceId':_0x4bf933['id'],'type':_0x2c431b['name'],'sectionId':_0x2c431b['id']},{})[_0xb2b8('0x28')](function(){return _0x1ff646;});}else{return _0x1ff646;}})[_0xb2b8('0x4a')](function(_0x228e50){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x228e50);throw _0x228e50;});}return _0x1ff646;})[_0xb2b8('0x28')](respondWithResult(_0x17615f,0xc9))[_0xb2b8('0x4a')](handleError(_0x17615f,null));};exports[_0xb2b8('0x27')]=function(_0x4db57e,_0xfa7316){if(_0x4db57e[_0xb2b8('0x52')]['id']){delete _0x4db57e['body']['id'];}return db[_0xb2b8('0x32')][_0xb2b8('0x49')]({'where':{'id':_0x4db57e['params']['id']}})[_0xb2b8('0x28')](handleEntityNotFound(_0xfa7316,null))['then'](saveUpdates(_0x4db57e[_0xb2b8('0x52')],null))[_0xb2b8('0x28')](respondWithResult(_0xfa7316,null))['catch'](handleError(_0xfa7316,null));};exports[_0xb2b8('0x2c')]=function(_0x5ee2d1,_0x180a19){return db[_0xb2b8('0x32')][_0xb2b8('0x49')]({'where':{'id':_0x5ee2d1[_0xb2b8('0x53')]['id']}})[_0xb2b8('0x28')](handleEntityNotFound(_0x180a19,null))[_0xb2b8('0x28')](removeEntity(_0x180a19,null))[_0xb2b8('0x4a')](handleError(_0x180a19,null));};exports['download']=function(_0x270fc9,_0x5d62e8,_0xcc518d){return db['AnalyticExtractedReport'][_0xb2b8('0x49')]({'where':{'id':_0x270fc9[_0xb2b8('0x53')]['id']},'attributes':['name',_0xb2b8('0x54'),_0xb2b8('0x55'),_0xb2b8('0x56')],'raw':!![]})['then'](handleEntityNotFound(_0x5d62e8,null))[_0xb2b8('0x28')](function(_0x298465){if(_0x298465){if(!fs[_0xb2b8('0x57')](path[_0xb2b8('0x58')](config[_0xb2b8('0x59')],_0xb2b8('0x5a'),_0x298465[_0xb2b8('0x55')]))){throw new db[(_0xb2b8('0x5b'))][(_0xb2b8('0x5c'))]('Report\x20not\x20found\x20or\x20empty');}if(_0x270fc9[_0xb2b8('0x3a')]['exists']){return _0x5d62e8[_0xb2b8('0x1c')](0xc8);}return _0x5d62e8[_0xb2b8('0x5d')](path['join'](config[_0xb2b8('0x59')],_0xb2b8('0x5a'),_0x298465[_0xb2b8('0x55')]),util[_0xb2b8('0x5e')](_0xb2b8('0x5f'),_0x298465[_0xb2b8('0x54')]||_0x298465[_0xb2b8('0x2e')],_0x298465[_0xb2b8('0x56')][_0xb2b8('0x60')]()));}})[_0xb2b8('0x4a')](handleError(_0x5d62e8,null));};
\ No newline at end of file
index 87afedc..bb347c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe659=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','AnalyticExtractedReport'];(function(_0x325a08,_0x571fff){var _0x436e01=function(_0x2c7719){while(--_0x2c7719){_0x325a08['push'](_0x325a08['shift']());}};_0x436e01(++_0x571fff);}(_0xe659,0xa8));var _0x9e65=function(_0x55ab21,_0x5dd62a){_0x55ab21=_0x55ab21-0x0;var _0x3d17d0=_0xe659[_0x55ab21];return _0x3d17d0;};'use strict';var _=require(_0x9e65('0x0'));var util=require(_0x9e65('0x1'));var logger=require(_0x9e65('0x2'))(_0x9e65('0x3'));var moment=require(_0x9e65('0x4'));var BPromise=require(_0x9e65('0x5'));var rp=require(_0x9e65('0x6'));var fs=require('fs');var path=require(_0x9e65('0x7'));var rimraf=require(_0x9e65('0x8'));var config=require(_0x9e65('0x9'));var attributes=require('./analyticExtractedReport.attributes');module['exports']=function(_0x4464e3,_0x2fbd3e){return _0x4464e3[_0x9e65('0xa')](_0x9e65('0xb'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2cd9=['analytics_extracted_reports','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport'];(function(_0x487d78,_0x404605){var _0xa964c1=function(_0x267876){while(--_0x267876){_0x487d78['push'](_0x487d78['shift']());}};_0xa964c1(++_0x404605);}(_0x2cd9,0xe1));var _0x92cd=function(_0x62230d,_0x487dac){_0x62230d=_0x62230d-0x0;var _0x3d5b1a=_0x2cd9[_0x62230d];return _0x3d5b1a;};'use strict';var _=require(_0x92cd('0x0'));var util=require(_0x92cd('0x1'));var logger=require(_0x92cd('0x2'))(_0x92cd('0x3'));var moment=require(_0x92cd('0x4'));var BPromise=require(_0x92cd('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x92cd('0x6'));var rimraf=require(_0x92cd('0x7'));var config=require(_0x92cd('0x8'));var attributes=require(_0x92cd('0x9'));module[_0x92cd('0xa')]=function(_0x401ded,_0xcf86f2){return _0x401ded[_0x92cd('0xb')](_0x92cd('0xc'),attributes,{'tableName':_0x92cd('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c21316d..1c1150b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3af6=['message','catch','util','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x1047f2,_0x173c88){var _0x1c0b7a=function(_0x38093a){while(--_0x38093a){_0x1047f2['push'](_0x1047f2['shift']());}};_0x1c0b7a(++_0x173c88);}(_0x3af6,0x17c));var _0x63af=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x3af6[_0x502c7d];return _0x30b7ed;};'use strict';var _=require('lodash');var util=require(_0x63af('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x63af('0x1'));var db=require(_0x63af('0x2'))['db'];var utils=require(_0x63af('0x3'));var logger=require('../../config/logger')(_0x63af('0x4'));var config=require(_0x63af('0x5'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4eead9,_0x4a9ece,_0x3faec4){return new BPromise(function(_0x3d6a1a,_0x1da6c5){return client[_0x63af('0x6')](_0x4eead9,_0x3faec4)[_0x63af('0x7')](function(_0x3d85d1){logger[_0x63af('0x8')](_0x63af('0x9'),_0x4a9ece,_0x63af('0xa'));logger[_0x63af('0xb')](_0x63af('0xc'),_0x4a9ece,_0x63af('0xa'),JSON[_0x63af('0xd')](_0x3d85d1));if(_0x3d85d1[_0x63af('0xe')]){if(_0x3d85d1[_0x63af('0xe')][_0x63af('0xf')]===0x1f4){logger[_0x63af('0xe')](_0x63af('0x9'),_0x4a9ece,_0x3d85d1[_0x63af('0xe')][_0x63af('0x10')]);return _0x1da6c5(_0x3d85d1[_0x63af('0xe')][_0x63af('0x10')]);}logger[_0x63af('0xe')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x4a9ece,_0x3d85d1['error'][_0x63af('0x10')]);return _0x3d6a1a(_0x3d85d1['error'][_0x63af('0x10')]);}else{logger[_0x63af('0x8')](_0x63af('0x9'),_0x4a9ece,_0x63af('0xa'));_0x3d6a1a(_0x3d85d1['result'][_0x63af('0x10')]);}})[_0x63af('0x11')](function(_0x4d0986){logger[_0x63af('0xe')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x4a9ece,_0x4d0986);_0x1da6c5(_0x4d0986);});});}
\ No newline at end of file
+var _0xa01e=['../../mysqldb','rpc','jayson/promise','client','http','then','info','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','AnalyticExtractedReport,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','ioredis'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xa01e,0x137));var _0xea01=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa01e[_0x1cfa0d];return _0xe33279;};'use strict';var _=require(_0xea01('0x0'));var util=require(_0xea01('0x1'));var moment=require('moment');var BPromise=require(_0xea01('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xea01('0x3'));var db=require(_0xea01('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xea01('0x5'));var config=require('../../config/environment');var jayson=require(_0xea01('0x6'));var client=jayson[_0xea01('0x7')][_0xea01('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x207453,_0x2533f3,_0x9599be){return new BPromise(function(_0x544ffb,_0x943ad0){return client['request'](_0x207453,_0x9599be)[_0xea01('0x9')](function(_0x1b335a){logger[_0xea01('0xa')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x2533f3,'request\x20sent');logger[_0xea01('0xb')](_0xea01('0xc'),_0x2533f3,_0xea01('0xd'),JSON[_0xea01('0xe')](_0x1b335a));if(_0x1b335a[_0xea01('0xf')]){if(_0x1b335a[_0xea01('0xf')][_0xea01('0x10')]===0x1f4){logger['error']('AnalyticExtractedReport,\x20%s,\x20%s',_0x2533f3,_0x1b335a[_0xea01('0xf')]['message']);return _0x943ad0(_0x1b335a[_0xea01('0xf')]['message']);}logger[_0xea01('0xf')](_0xea01('0x11'),_0x2533f3,_0x1b335a[_0xea01('0xf')][_0xea01('0x12')]);return _0x544ffb(_0x1b335a[_0xea01('0xf')][_0xea01('0x12')]);}else{logger[_0xea01('0xa')](_0xea01('0x11'),_0x2533f3,_0xea01('0xd'));_0x544ffb(_0x1b335a[_0xea01('0x13')][_0xea01('0x12')]);}})[_0xea01('0x14')](function(_0x20c6d1){logger['error'](_0xea01('0x11'),_0x2533f3,_0x20c6d1);_0x943ad0(_0x20c6d1);});});}
\ No newline at end of file
index 6091733..6438f13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4792=['../../config/environment','./analyticExtractedReport.controller','get','index','/:id','isAuthenticated','show','download','post','create','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x31eefb,_0x21395c){var _0x2b6abb=function(_0x55037a){while(--_0x55037a){_0x31eefb['push'](_0x31eefb['shift']());}};_0x2b6abb(++_0x21395c);}(_0x4792,0xcb));var _0x2479=function(_0x1b7ea6,_0x195a62){_0x1b7ea6=_0x1b7ea6-0x0;var _0x4fcea6=_0x4792[_0x1b7ea6];return _0x4fcea6;};'use strict';var multer=require('multer');var util=require(_0x2479('0x0'));var path=require('path');var timeout=require(_0x2479('0x1'));var express=require(_0x2479('0x2'));var router=express[_0x2479('0x3')]();var fs_extra=require(_0x2479('0x4'));var auth=require(_0x2479('0x5'));var interaction=require(_0x2479('0x6'));var config=require(_0x2479('0x7'));var controller=require(_0x2479('0x8'));router[_0x2479('0x9')]('/',auth['isAuthenticated'](),controller[_0x2479('0xa')]);router[_0x2479('0x9')](_0x2479('0xb'),auth[_0x2479('0xc')](),controller[_0x2479('0xd')]);router[_0x2479('0x9')]('/:id/download',auth[_0x2479('0xc')](),controller[_0x2479('0xe')]);router[_0x2479('0xf')]('/',auth[_0x2479('0xc')](),controller[_0x2479('0x10')]);router['put'](_0x2479('0xb'),auth[_0x2479('0xc')](),controller[_0x2479('0x11')]);router[_0x2479('0x12')](_0x2479('0xb'),auth[_0x2479('0xc')](),controller[_0x2479('0x13')]);module[_0x2479('0x14')]=router;
\ No newline at end of file
+var _0x6f53=['index','/:id','show','/:id/download','download','post','put','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticExtractedReport.controller','get','isAuthenticated'];(function(_0x101afa,_0x5c89d0){var _0x40ed10=function(_0x1f274e){while(--_0x1f274e){_0x101afa['push'](_0x101afa['shift']());}};_0x40ed10(++_0x5c89d0);}(_0x6f53,0xc8));var _0x36f5=function(_0x18dd7b,_0x15e3f6){_0x18dd7b=_0x18dd7b-0x0;var _0x263045=_0x6f53[_0x18dd7b];return _0x263045;};'use strict';var multer=require(_0x36f5('0x0'));var util=require(_0x36f5('0x1'));var path=require('path');var timeout=require(_0x36f5('0x2'));var express=require(_0x36f5('0x3'));var router=express['Router']();var fs_extra=require(_0x36f5('0x4'));var auth=require(_0x36f5('0x5'));var interaction=require(_0x36f5('0x6'));var config=require('../../config/environment');var controller=require(_0x36f5('0x7'));router[_0x36f5('0x8')]('/',auth[_0x36f5('0x9')](),controller[_0x36f5('0xa')]);router[_0x36f5('0x8')](_0x36f5('0xb'),auth[_0x36f5('0x9')](),controller[_0x36f5('0xc')]);router[_0x36f5('0x8')](_0x36f5('0xd'),auth['isAuthenticated'](),controller[_0x36f5('0xe')]);router[_0x36f5('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x36f5('0x10')]('/:id',auth[_0x36f5('0x9')](),controller[_0x36f5('0x11')]);router[_0x36f5('0x12')](_0x36f5('0xb'),auth[_0x36f5('0x9')](),controller[_0x36f5('0x13')]);module[_0x36f5('0x14')]=router;
\ No newline at end of file
index 5c7c4bd..681e4a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0148=['sequelize','TEXT','STRING','BOOLEAN'];(function(_0x2c9a43,_0x38a20f){var _0x45a95f=function(_0x40b392){while(--_0x40b392){_0x2c9a43['push'](_0x2c9a43['shift']());}};_0x45a95f(++_0x38a20f);}(_0x0148,0x13c));var _0x8014=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x0148[_0x3e5086];return _0xfeb102;};'use strict';var Sequelize=require(_0x8014('0x0'));module['exports']={'field':{'type':Sequelize[_0x8014('0x1')]},'alias':{'type':Sequelize[_0x8014('0x2')]},'function':{'type':Sequelize[_0x8014('0x2')]},'format':{'type':Sequelize['STRING']},'groupBy':{'type':Sequelize[_0x8014('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x8014('0x2')]},'custom':{'type':Sequelize[_0x8014('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x2a5e=['exports','TEXT','STRING','BOOLEAN'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x2a5e,0x1b8));var _0xe2a5=function(_0x294e34,_0xf4dc01){_0x294e34=_0x294e34-0x0;var _0x1cd3d6=_0x2a5e[_0x294e34];return _0x1cd3d6;};'use strict';var Sequelize=require('sequelize');module[_0xe2a5('0x0')]={'field':{'type':Sequelize[_0xe2a5('0x1')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize[_0xe2a5('0x2')]},'format':{'type':Sequelize[_0xe2a5('0x2')]},'groupBy':{'type':Sequelize[_0xe2a5('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xe2a5('0x2')]},'custom':{'type':Sequelize[_0xe2a5('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 550bf00..7612e2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabe8=['../../config/utils','../../mysqldb','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','then','destroy','end','sendStatus','error','stack','name','send','fieldName','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','AnalyticFieldReport','include','findAll','rows','catch','show','params','rawAttributes','includeAll','create','body','bulkCreate','update','find','ids','addFields','AnalyticCustomReport','findOne','sequelize','CustomReportId','eml-format','rimraf','zip-dir','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x1c51dc,_0x5bf327){var _0x2cf25f=function(_0x1aa898){while(--_0x1aa898){_0x1c51dc['push'](_0x1c51dc['shift']());}};_0x2cf25f(++_0x5bf327);}(_0xabe8,0x8c));var _0x8abe=function(_0x219d51,_0x51d87f){_0x219d51=_0x219d51-0x0;var _0x54254e=_0xabe8[_0x219d51];return _0x54254e;};'use strict';var emlformat=require(_0x8abe('0x0'));var rimraf=require(_0x8abe('0x1'));var zipdir=require(_0x8abe('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8abe('0x3'));var moment=require(_0x8abe('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8abe('0x5'));var util=require('util');var path=require(_0x8abe('0x6'));var sox=require(_0x8abe('0x7'));var csv=require(_0x8abe('0x8'));var ejs=require(_0x8abe('0x9'));var fs=require('fs');var fs_extra=require(_0x8abe('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x8abe('0xb'));var jsforce=require(_0x8abe('0xc'));var deskjs=require(_0x8abe('0xd'));var toCsv=require(_0x8abe('0x8'));var querystring=require(_0x8abe('0xe'));var Papa=require(_0x8abe('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8abe('0x10'));var hardwareService=require(_0x8abe('0x11'));var logger=require(_0x8abe('0x12'))(_0x8abe('0x13'));var utils=require(_0x8abe('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x8abe('0x15'))['db'];function respondWithStatusCode(_0x8d4179,_0x1970b2){_0x1970b2=_0x1970b2||0xcc;return function(_0x3890f8){if(_0x3890f8){return _0x8d4179['sendStatus'](_0x1970b2);}return _0x8d4179['status'](_0x1970b2)['end']();};}function respondWithResult(_0xb75397,_0x5e7c8b){_0x5e7c8b=_0x5e7c8b||0xc8;return function(_0x1c407d){if(_0x1c407d){return _0xb75397['status'](_0x5e7c8b)[_0x8abe('0x16')](_0x1c407d);}};}function respondWithFilteredResult(_0x168f96,_0x5d24ad){return function(_0x1bcd6d){if(_0x1bcd6d){var _0x5bc34a=typeof _0x5d24ad[_0x8abe('0x17')]===_0x8abe('0x18')&&typeof _0x5d24ad[_0x8abe('0x19')]===_0x8abe('0x18');var _0x3f5d9b=_0x1bcd6d[_0x8abe('0x1a')];var _0x1cd7c9=_0x5bc34a?0x0:_0x5d24ad[_0x8abe('0x17')];var _0x45905e=_0x5bc34a?_0x1bcd6d[_0x8abe('0x1a')]:_0x5d24ad[_0x8abe('0x17')]+_0x5d24ad['limit'];var _0x190e2e;if(_0x45905e>=_0x3f5d9b){_0x45905e=_0x3f5d9b;_0x190e2e=0xc8;}else{_0x190e2e=0xce;}_0x168f96[_0x8abe('0x1b')](_0x190e2e);return _0x168f96[_0x8abe('0x1c')](_0x8abe('0x1d'),_0x1cd7c9+'-'+_0x45905e+'/'+_0x3f5d9b)[_0x8abe('0x16')](_0x1bcd6d);}return null;};}function patchUpdates(_0x49f03d){return function(_0x4f6c1c){try{jsonpatch[_0x8abe('0x1e')](_0x4f6c1c,_0x49f03d,!![]);}catch(_0xfa8e74){return BPromise[_0x8abe('0x1f')](_0xfa8e74);}return _0x4f6c1c[_0x8abe('0x20')]();};}function saveUpdates(_0x346153,_0x2f7e3c){return function(_0x113ab2){if(_0x113ab2){return _0x113ab2['update'](_0x346153)[_0x8abe('0x21')](function(_0x1eaf31){return _0x1eaf31;});}return null;};}function removeEntity(_0x383ca7,_0x1873d5){return function(_0x1f9bde){if(_0x1f9bde){return _0x1f9bde[_0x8abe('0x22')]()[_0x8abe('0x21')](function(){_0x383ca7[_0x8abe('0x1b')](0xcc)[_0x8abe('0x23')]();});}};}function handleEntityNotFound(_0x3d1785,_0x40f33a){return function(_0x301d4a){if(!_0x301d4a){_0x3d1785[_0x8abe('0x24')](0x194);}return _0x301d4a;};}function handleError(_0x189440,_0x14c9db){_0x14c9db=_0x14c9db||0x1f4;return function(_0x261c62){logger[_0x8abe('0x25')](_0x261c62[_0x8abe('0x26')]);if(_0x261c62['name']){delete _0x261c62[_0x8abe('0x27')];}_0x189440[_0x8abe('0x1b')](_0x14c9db)[_0x8abe('0x28')](_0x261c62);};}exports['index']=function(_0xca4d,_0x4a899c){var _0x1e9316={},_0x3f30bf={},_0x5ce205={'count':0x0,'rows':[]};var _0x23b1c3=_['map'](db['AnalyticFieldReport']['rawAttributes'],function(_0x51f8ac){return{'name':_0x51f8ac[_0x8abe('0x29')],'type':_0x51f8ac['type'][_0x8abe('0x2a')]};});_0x3f30bf[_0x8abe('0x2b')]=_[_0x8abe('0x2c')](_0x23b1c3,_0x8abe('0x27'));_0x3f30bf[_0x8abe('0x2d')]=_[_0x8abe('0x2e')](_0xca4d[_0x8abe('0x2d')]);_0x3f30bf['filters']=_[_0x8abe('0x2f')](_0x3f30bf[_0x8abe('0x2b')],_0x3f30bf[_0x8abe('0x2d')]);_0x1e9316[_0x8abe('0x30')]=_[_0x8abe('0x2f')](_0x3f30bf[_0x8abe('0x2b')],qs['fields'](_0xca4d[_0x8abe('0x2d')][_0x8abe('0x31')]));_0x1e9316[_0x8abe('0x30')]=_0x1e9316[_0x8abe('0x30')][_0x8abe('0x32')]?_0x1e9316[_0x8abe('0x30')]:_0x3f30bf[_0x8abe('0x2b')];if(!_0xca4d[_0x8abe('0x2d')][_0x8abe('0x33')]('nolimit')){_0x1e9316[_0x8abe('0x19')]=qs['limit'](_0xca4d[_0x8abe('0x2d')][_0x8abe('0x19')]);_0x1e9316['offset']=qs['offset'](_0xca4d[_0x8abe('0x2d')]['offset']);}_0x1e9316[_0x8abe('0x34')]=qs[_0x8abe('0x35')](_0xca4d[_0x8abe('0x2d')][_0x8abe('0x35')]);_0x1e9316[_0x8abe('0x36')]=qs['filters'](_[_0x8abe('0x37')](_0xca4d['query'],_0x3f30bf['filters']),_0x23b1c3);if(_0xca4d[_0x8abe('0x2d')][_0x8abe('0x38')]){_0x1e9316[_0x8abe('0x36')]=_[_0x8abe('0x39')](_0x1e9316['where'],{'$or':_[_0x8abe('0x2c')](_0x23b1c3,function(_0x30af7c){if(_0x30af7c['type']!==_0x8abe('0x3a')){var _0x67c104={};_0x67c104[_0x30af7c['name']]={'$like':'%'+_0xca4d[_0x8abe('0x2d')]['filter']+'%'};return _0x67c104;}})});}_0x1e9316=_[_0x8abe('0x39')]({},_0x1e9316,_0xca4d[_0x8abe('0x3b')]);var _0x2ff789={'where':_0x1e9316[_0x8abe('0x36')]};return db[_0x8abe('0x3c')][_0x8abe('0x1a')](_0x2ff789)[_0x8abe('0x21')](function(_0x4f46d3){_0x5ce205[_0x8abe('0x1a')]=_0x4f46d3;if(_0xca4d[_0x8abe('0x2d')]['includeAll']){_0x1e9316[_0x8abe('0x3d')]=[{'all':!![]}];}return db['AnalyticFieldReport'][_0x8abe('0x3e')](_0x1e9316);})[_0x8abe('0x21')](function(_0xe68a69){_0x5ce205[_0x8abe('0x3f')]=_0xe68a69;return _0x5ce205;})[_0x8abe('0x21')](respondWithFilteredResult(_0x4a899c,_0x1e9316))[_0x8abe('0x40')](handleError(_0x4a899c,null));};exports[_0x8abe('0x41')]=function(_0x19fb20,_0x74ee49){var _0x5e2698={'raw':![],'where':{'id':_0x19fb20[_0x8abe('0x42')]['id']}},_0x409102={};_0x409102[_0x8abe('0x2b')]=_[_0x8abe('0x2e')](db[_0x8abe('0x3c')][_0x8abe('0x43')]);_0x409102[_0x8abe('0x2d')]=_[_0x8abe('0x2e')](_0x19fb20[_0x8abe('0x2d')]);_0x409102['filters']=_[_0x8abe('0x2f')](_0x409102[_0x8abe('0x2b')],_0x409102[_0x8abe('0x2d')]);_0x5e2698['attributes']=_[_0x8abe('0x2f')](_0x409102['model'],qs['fields'](_0x19fb20[_0x8abe('0x2d')]['fields']));_0x5e2698['attributes']=_0x5e2698['attributes']['length']?_0x5e2698[_0x8abe('0x30')]:_0x409102['model'];if(_0x19fb20[_0x8abe('0x2d')][_0x8abe('0x44')]){_0x5e2698[_0x8abe('0x3d')]=[{'all':!![]}];}_0x5e2698=_['merge']({},_0x5e2698,_0x19fb20[_0x8abe('0x3b')]);return db[_0x8abe('0x3c')]['find'](_0x5e2698)[_0x8abe('0x21')](handleEntityNotFound(_0x74ee49,null))['then'](respondWithResult(_0x74ee49,null))[_0x8abe('0x40')](handleError(_0x74ee49,null));};exports['create']=function(_0x2f8db9,_0x1386b6){return db[_0x8abe('0x3c')][_0x8abe('0x45')](_0x2f8db9[_0x8abe('0x46')],{})[_0x8abe('0x21')](respondWithResult(_0x1386b6,0xc9))['catch'](handleError(_0x1386b6,null));};exports[_0x8abe('0x47')]=function(_0x3c554a,_0x490069){return db[_0x8abe('0x3c')]['bulkCreate'](_0x3c554a['body'],{'raw':![],'individualHooks':!![]})[_0x8abe('0x21')](respondWithResult(_0x490069,0xc9))[_0x8abe('0x40')](handleError(_0x490069,null));};exports[_0x8abe('0x48')]=function(_0x5c3946,_0x4a33dd){if(_0x5c3946[_0x8abe('0x46')]['id']){delete _0x5c3946[_0x8abe('0x46')]['id'];}return db[_0x8abe('0x3c')][_0x8abe('0x49')]({'where':{'id':_0x5c3946[_0x8abe('0x42')]['id']}})[_0x8abe('0x21')](handleEntityNotFound(_0x4a33dd,null))[_0x8abe('0x21')](saveUpdates(_0x5c3946[_0x8abe('0x46')],null))[_0x8abe('0x21')](respondWithResult(_0x4a33dd,null))[_0x8abe('0x40')](handleError(_0x4a33dd,null));};exports[_0x8abe('0x22')]=function(_0x573a6f,_0x1d35d2){return db[_0x8abe('0x3c')]['find']({'where':{'id':_0x573a6f[_0x8abe('0x42')]['id']}})[_0x8abe('0x21')](handleEntityNotFound(_0x1d35d2,null))[_0x8abe('0x21')](removeEntity(_0x1d35d2,null))[_0x8abe('0x40')](handleError(_0x1d35d2,null));};exports['bulkDestroy']=function(_0x39f1c6,_0x492282){return db[_0x8abe('0x3c')][_0x8abe('0x22')]({'where':{'id':_0x39f1c6[_0x8abe('0x2d')][_0x8abe('0x4a')]||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x492282,0xcc))[_0x8abe('0x40')](handleError(_0x492282,null));};exports[_0x8abe('0x4b')]=function(_0x1ea73c,_0xf42e4,_0xb46652){return db[_0x8abe('0x4c')][_0x8abe('0x4d')]({'where':{'id':_0x1ea73c[_0x8abe('0x42')]['id']}})[_0x8abe('0x21')](handleEntityNotFound(_0xf42e4,null))[_0x8abe('0x21')](function(_0x42a46a){if(_0x42a46a){return db[_0x8abe('0x4e')]['transaction'](function(_0x3bcabc){return db[_0x8abe('0x3c')][_0x8abe('0x22')]({'where':{'CustomReportId':_0x1ea73c[_0x8abe('0x42')]['id']},'transaction':_0x3bcabc})['then'](function(_0x51862f){var _0x383d65=_[_0x8abe('0x2c')](_0x1ea73c['body'],function(_0x5b18dd){delete _0x5b18dd['id'];_0x5b18dd[_0x8abe('0x4f')]=_0x1ea73c[_0x8abe('0x42')]['id'];return _0x5b18dd;});return db[_0x8abe('0x3c')]['bulkCreate'](_0x383d65,{'transaction':_0x3bcabc});});})[_0x8abe('0x21')](function(){return db[_0x8abe('0x3c')][_0x8abe('0x3e')]({'where':{'CustomReportId':_0x1ea73c[_0x8abe('0x42')]['id']}});});}})[_0x8abe('0x21')](respondWithResult(_0xf42e4,null))[_0x8abe('0x40')](handleError(_0xf42e4,null));};
\ No newline at end of file
+var _0xa372=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','sendStatus','end','json','undefined','limit','count','offset','status','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','options','AnalyticFieldReport','includeAll','findAll','rows','catch','params','intersection','merge','find','create','body','bulkCreate','bulkDestroy','addFields','findOne','sequelize','transaction','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','jsforce'];(function(_0x2e6327,_0x138703){var _0x2f0ebd=function(_0x5a709f){while(--_0x5a709f){_0x2e6327['push'](_0x2e6327['shift']());}};_0x2f0ebd(++_0x138703);}(_0xa372,0x1dd));var _0x2a37=function(_0x2e4fa6,_0x5f20bf){_0x2e4fa6=_0x2e4fa6-0x0;var _0x22b795=_0xa372[_0x2e4fa6];return _0x22b795;};'use strict';var emlformat=require(_0x2a37('0x0'));var rimraf=require(_0x2a37('0x1'));var zipdir=require(_0x2a37('0x2'));var jsonpatch=require(_0x2a37('0x3'));var rp=require(_0x2a37('0x4'));var moment=require(_0x2a37('0x5'));var BPromise=require(_0x2a37('0x6'));var Mustache=require(_0x2a37('0x7'));var util=require(_0x2a37('0x8'));var path=require(_0x2a37('0x9'));var sox=require(_0x2a37('0xa'));var csv=require(_0x2a37('0xb'));var ejs=require(_0x2a37('0xc'));var fs=require('fs');var fs_extra=require(_0x2a37('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2a37('0xe'));var deskjs=require(_0x2a37('0xf'));var toCsv=require(_0x2a37('0xb'));var querystring=require(_0x2a37('0x10'));var Papa=require(_0x2a37('0x11'));var Redis=require(_0x2a37('0x12'));var authService=require(_0x2a37('0x13'));var qs=require(_0x2a37('0x14'));var as=require(_0x2a37('0x15'));var hardwareService=require(_0x2a37('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x2a37('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x2a37('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4ad3fb,_0x379824){_0x379824=_0x379824||0xcc;return function(_0xfaa463){if(_0xfaa463){return _0x4ad3fb[_0x2a37('0x19')](_0x379824);}return _0x4ad3fb['status'](_0x379824)[_0x2a37('0x1a')]();};}function respondWithResult(_0x31e8a1,_0x42be27){_0x42be27=_0x42be27||0xc8;return function(_0x5dd959){if(_0x5dd959){return _0x31e8a1['status'](_0x42be27)[_0x2a37('0x1b')](_0x5dd959);}};}function respondWithFilteredResult(_0x26cd57,_0x10d94b){return function(_0x28c5af){if(_0x28c5af){var _0x4cb9cd=typeof _0x10d94b['offset']===_0x2a37('0x1c')&&typeof _0x10d94b[_0x2a37('0x1d')]==='undefined';var _0x4ac640=_0x28c5af[_0x2a37('0x1e')];var _0x251cc9=_0x4cb9cd?0x0:_0x10d94b[_0x2a37('0x1f')];var _0xac556b=_0x4cb9cd?_0x28c5af[_0x2a37('0x1e')]:_0x10d94b['offset']+_0x10d94b[_0x2a37('0x1d')];var _0x3796f3;if(_0xac556b>=_0x4ac640){_0xac556b=_0x4ac640;_0x3796f3=0xc8;}else{_0x3796f3=0xce;}_0x26cd57[_0x2a37('0x20')](_0x3796f3);return _0x26cd57['set'](_0x2a37('0x21'),_0x251cc9+'-'+_0xac556b+'/'+_0x4ac640)[_0x2a37('0x1b')](_0x28c5af);}return null;};}function patchUpdates(_0x49c59b){return function(_0x3c7a8e){try{jsonpatch[_0x2a37('0x22')](_0x3c7a8e,_0x49c59b,!![]);}catch(_0x1eabc4){return BPromise[_0x2a37('0x23')](_0x1eabc4);}return _0x3c7a8e['save']();};}function saveUpdates(_0x4f5ad6,_0x3b6213){return function(_0x3644c6){if(_0x3644c6){return _0x3644c6[_0x2a37('0x24')](_0x4f5ad6)[_0x2a37('0x25')](function(_0x5c9683){return _0x5c9683;});}return null;};}function removeEntity(_0x4086fc,_0x5cc93c){return function(_0x4266e1){if(_0x4266e1){return _0x4266e1[_0x2a37('0x26')]()[_0x2a37('0x25')](function(){_0x4086fc[_0x2a37('0x20')](0xcc)[_0x2a37('0x1a')]();});}};}function handleEntityNotFound(_0x3f0d10,_0x4ac4ab){return function(_0x3060a4){if(!_0x3060a4){_0x3f0d10[_0x2a37('0x19')](0x194);}return _0x3060a4;};}function handleError(_0x2c0829,_0x2cb101){_0x2cb101=_0x2cb101||0x1f4;return function(_0x4df687){logger[_0x2a37('0x27')](_0x4df687[_0x2a37('0x28')]);if(_0x4df687['name']){delete _0x4df687[_0x2a37('0x29')];}_0x2c0829[_0x2a37('0x20')](_0x2cb101)[_0x2a37('0x2a')](_0x4df687);};}exports[_0x2a37('0x2b')]=function(_0x1fa47f,_0x3a321a){var _0x32e8cd={},_0x1d3cf5={},_0x227203={'count':0x0,'rows':[]};var _0x36d009=_[_0x2a37('0x2c')](db['AnalyticFieldReport'][_0x2a37('0x2d')],function(_0x798478){return{'name':_0x798478[_0x2a37('0x2e')],'type':_0x798478[_0x2a37('0x2f')][_0x2a37('0x30')]};});_0x1d3cf5['model']=_[_0x2a37('0x2c')](_0x36d009,'name');_0x1d3cf5[_0x2a37('0x31')]=_[_0x2a37('0x32')](_0x1fa47f['query']);_0x1d3cf5[_0x2a37('0x33')]=_['intersection'](_0x1d3cf5['model'],_0x1d3cf5['query']);_0x32e8cd[_0x2a37('0x34')]=_['intersection'](_0x1d3cf5[_0x2a37('0x35')],qs[_0x2a37('0x36')](_0x1fa47f[_0x2a37('0x31')]['fields']));_0x32e8cd['attributes']=_0x32e8cd['attributes'][_0x2a37('0x37')]?_0x32e8cd[_0x2a37('0x34')]:_0x1d3cf5['model'];if(!_0x1fa47f[_0x2a37('0x31')][_0x2a37('0x38')](_0x2a37('0x39'))){_0x32e8cd[_0x2a37('0x1d')]=qs[_0x2a37('0x1d')](_0x1fa47f['query'][_0x2a37('0x1d')]);_0x32e8cd[_0x2a37('0x1f')]=qs[_0x2a37('0x1f')](_0x1fa47f['query'][_0x2a37('0x1f')]);}_0x32e8cd[_0x2a37('0x3a')]=qs['sort'](_0x1fa47f['query'][_0x2a37('0x3b')]);_0x32e8cd['where']=qs[_0x2a37('0x33')](_[_0x2a37('0x3c')](_0x1fa47f[_0x2a37('0x31')],_0x1d3cf5['filters']),_0x36d009);if(_0x1fa47f['query'][_0x2a37('0x3d')]){_0x32e8cd[_0x2a37('0x3e')]=_['merge'](_0x32e8cd[_0x2a37('0x3e')],{'$or':_[_0x2a37('0x2c')](_0x36d009,function(_0xc4ba2f){if(_0xc4ba2f[_0x2a37('0x2f')]!==_0x2a37('0x3f')){var _0x37e7e2={};_0x37e7e2[_0xc4ba2f[_0x2a37('0x29')]]={'$like':'%'+_0x1fa47f['query'][_0x2a37('0x3d')]+'%'};return _0x37e7e2;}})});}_0x32e8cd=_['merge']({},_0x32e8cd,_0x1fa47f[_0x2a37('0x40')]);var _0x10f27d={'where':_0x32e8cd[_0x2a37('0x3e')]};return db[_0x2a37('0x41')][_0x2a37('0x1e')](_0x10f27d)['then'](function(_0x52218e){_0x227203[_0x2a37('0x1e')]=_0x52218e;if(_0x1fa47f[_0x2a37('0x31')][_0x2a37('0x42')]){_0x32e8cd['include']=[{'all':!![]}];}return db['AnalyticFieldReport'][_0x2a37('0x43')](_0x32e8cd);})[_0x2a37('0x25')](function(_0x39e1d2){_0x227203[_0x2a37('0x44')]=_0x39e1d2;return _0x227203;})[_0x2a37('0x25')](respondWithFilteredResult(_0x3a321a,_0x32e8cd))[_0x2a37('0x45')](handleError(_0x3a321a,null));};exports['show']=function(_0x2c1204,_0x15083d){var _0x5e6c31={'raw':![],'where':{'id':_0x2c1204[_0x2a37('0x46')]['id']}},_0x4379f6={};_0x4379f6['model']=_['keys'](db[_0x2a37('0x41')][_0x2a37('0x2d')]);_0x4379f6[_0x2a37('0x31')]=_[_0x2a37('0x32')](_0x2c1204[_0x2a37('0x31')]);_0x4379f6[_0x2a37('0x33')]=_[_0x2a37('0x47')](_0x4379f6['model'],_0x4379f6[_0x2a37('0x31')]);_0x5e6c31[_0x2a37('0x34')]=_[_0x2a37('0x47')](_0x4379f6[_0x2a37('0x35')],qs['fields'](_0x2c1204['query'][_0x2a37('0x36')]));_0x5e6c31['attributes']=_0x5e6c31['attributes'][_0x2a37('0x37')]?_0x5e6c31[_0x2a37('0x34')]:_0x4379f6[_0x2a37('0x35')];if(_0x2c1204['query'][_0x2a37('0x42')]){_0x5e6c31['include']=[{'all':!![]}];}_0x5e6c31=_[_0x2a37('0x48')]({},_0x5e6c31,_0x2c1204[_0x2a37('0x40')]);return db[_0x2a37('0x41')][_0x2a37('0x49')](_0x5e6c31)[_0x2a37('0x25')](handleEntityNotFound(_0x15083d,null))[_0x2a37('0x25')](respondWithResult(_0x15083d,null))[_0x2a37('0x45')](handleError(_0x15083d,null));};exports[_0x2a37('0x4a')]=function(_0x3bebca,_0x121671){return db[_0x2a37('0x41')][_0x2a37('0x4a')](_0x3bebca[_0x2a37('0x4b')],{})[_0x2a37('0x25')](respondWithResult(_0x121671,0xc9))[_0x2a37('0x45')](handleError(_0x121671,null));};exports['bulkCreate']=function(_0x97a42a,_0x43b3f0){return db[_0x2a37('0x41')][_0x2a37('0x4c')](_0x97a42a['body'],{'raw':![],'individualHooks':!![]})[_0x2a37('0x25')](respondWithResult(_0x43b3f0,0xc9))[_0x2a37('0x45')](handleError(_0x43b3f0,null));};exports[_0x2a37('0x24')]=function(_0xb5ee36,_0x1ef9cf){if(_0xb5ee36[_0x2a37('0x4b')]['id']){delete _0xb5ee36[_0x2a37('0x4b')]['id'];}return db['AnalyticFieldReport'][_0x2a37('0x49')]({'where':{'id':_0xb5ee36['params']['id']}})[_0x2a37('0x25')](handleEntityNotFound(_0x1ef9cf,null))['then'](saveUpdates(_0xb5ee36['body'],null))[_0x2a37('0x25')](respondWithResult(_0x1ef9cf,null))[_0x2a37('0x45')](handleError(_0x1ef9cf,null));};exports[_0x2a37('0x26')]=function(_0x3a962f,_0x58eb43){return db[_0x2a37('0x41')][_0x2a37('0x49')]({'where':{'id':_0x3a962f[_0x2a37('0x46')]['id']}})[_0x2a37('0x25')](handleEntityNotFound(_0x58eb43,null))[_0x2a37('0x25')](removeEntity(_0x58eb43,null))['catch'](handleError(_0x58eb43,null));};exports[_0x2a37('0x4d')]=function(_0x5eb3ee,_0x1a5a63){return db[_0x2a37('0x41')][_0x2a37('0x26')]({'where':{'id':_0x5eb3ee[_0x2a37('0x31')]['ids']||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x1a5a63,0xcc))[_0x2a37('0x45')](handleError(_0x1a5a63,null));};exports[_0x2a37('0x4e')]=function(_0x2650cf,_0x2eb6de,_0x40d1ec){return db['AnalyticCustomReport'][_0x2a37('0x4f')]({'where':{'id':_0x2650cf[_0x2a37('0x46')]['id']}})[_0x2a37('0x25')](handleEntityNotFound(_0x2eb6de,null))[_0x2a37('0x25')](function(_0x837a12){if(_0x837a12){return db[_0x2a37('0x50')][_0x2a37('0x51')](function(_0x3ff28b){return db[_0x2a37('0x41')][_0x2a37('0x26')]({'where':{'CustomReportId':_0x2650cf[_0x2a37('0x46')]['id']},'transaction':_0x3ff28b})[_0x2a37('0x25')](function(_0x319f34){var _0x5d8b1c=_['map'](_0x2650cf[_0x2a37('0x4b')],function(_0x3daa15){delete _0x3daa15['id'];_0x3daa15['CustomReportId']=_0x2650cf[_0x2a37('0x46')]['id'];return _0x3daa15;});return db['AnalyticFieldReport'][_0x2a37('0x4c')](_0x5d8b1c,{'transaction':_0x3ff28b});});})['then'](function(){return db[_0x2a37('0x41')]['findAll']({'where':{'CustomReportId':_0x2650cf[_0x2a37('0x46')]['id']}});});}})[_0x2a37('0x25')](respondWithResult(_0x2eb6de,null))['catch'](handleError(_0x2eb6de,null));};
\ No newline at end of file
index 0f99113..111475c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd82a=['../../config/environment','./analyticFieldReport.attributes','exports','AnalyticFieldReport','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x121226,_0x5aec56){var _0x3a608f=function(_0x247d71){while(--_0x247d71){_0x121226['push'](_0x121226['shift']());}};_0x3a608f(++_0x5aec56);}(_0xd82a,0xe1));var _0xad82=function(_0x474bc0,_0x26989c){_0x474bc0=_0x474bc0-0x0;var _0x4b24cf=_0xd82a[_0x474bc0];return _0x4b24cf;};'use strict';var _=require(_0xad82('0x0'));var util=require(_0xad82('0x1'));var logger=require(_0xad82('0x2'))(_0xad82('0x3'));var moment=require(_0xad82('0x4'));var BPromise=require(_0xad82('0x5'));var rp=require(_0xad82('0x6'));var fs=require('fs');var path=require(_0xad82('0x7'));var rimraf=require(_0xad82('0x8'));var config=require(_0xad82('0x9'));var attributes=require(_0xad82('0xa'));module[_0xad82('0xb')]=function(_0x594823,_0x3b74d3){return _0x594823['define'](_0xad82('0xc'),attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9134=['./analyticFieldReport.attributes','exports','define','lodash','util','../../config/logger','moment','bluebird','request-promise','../../config/environment'];(function(_0x4c89e4,_0x3fa7b3){var _0x224f68=function(_0x46e34d){while(--_0x46e34d){_0x4c89e4['push'](_0x4c89e4['shift']());}};_0x224f68(++_0x3fa7b3);}(_0x9134,0x189));var _0x4913=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9134[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x4913('0x0'));var util=require(_0x4913('0x1'));var logger=require(_0x4913('0x2'))('api');var moment=require(_0x4913('0x3'));var BPromise=require(_0x4913('0x4'));var rp=require(_0x4913('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x4913('0x6'));var attributes=require(_0x4913('0x7'));module[_0x4913('0x8')]=function(_0x58e010,_0x259f1a){return _0x58e010[_0x4913('0x9')]('AnalyticFieldReport',attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0ff378e..a8f7fee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x542c=['moment','bluebird','randomstring','ioredis','../../config/logger','client','http','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash'];(function(_0x3a7b72,_0x43751b){var _0x2752a3=function(_0x564050){while(--_0x564050){_0x3a7b72['push'](_0x3a7b72['shift']());}};_0x2752a3(++_0x43751b);}(_0x542c,0x131));var _0xc542=function(_0x27aae7,_0x49b8d3){_0x27aae7=_0x27aae7-0x0;var _0x5780b9=_0x542c[_0x27aae7];return _0x5780b9;};'use strict';var _=require(_0xc542('0x0'));var util=require('util');var moment=require(_0xc542('0x1'));var BPromise=require(_0xc542('0x2'));var rs=require(_0xc542('0x3'));var fs=require('fs');var Redis=require(_0xc542('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc542('0x5'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc542('0x6')][_0xc542('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1100bc,_0x5914a2,_0x350d44){return new BPromise(function(_0x3473f2,_0x49b557){return client['request'](_0x1100bc,_0x350d44)[_0xc542('0x8')](function(_0x42980){logger[_0xc542('0x9')](_0xc542('0xa'),_0x5914a2,_0xc542('0xb'));logger[_0xc542('0xc')]('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0x5914a2,_0xc542('0xb'),JSON[_0xc542('0xd')](_0x42980));if(_0x42980[_0xc542('0xe')]){if(_0x42980['error'][_0xc542('0xf')]===0x1f4){logger[_0xc542('0xe')](_0xc542('0xa'),_0x5914a2,_0x42980[_0xc542('0xe')][_0xc542('0x10')]);return _0x49b557(_0x42980['error'][_0xc542('0x10')]);}logger[_0xc542('0xe')](_0xc542('0xa'),_0x5914a2,_0x42980[_0xc542('0xe')][_0xc542('0x10')]);return _0x3473f2(_0x42980['error'][_0xc542('0x10')]);}else{logger['info'](_0xc542('0xa'),_0x5914a2,_0xc542('0xb'));_0x3473f2(_0x42980['result'][_0xc542('0x10')]);}})[_0xc542('0x11')](function(_0x4b9ac5){logger[_0xc542('0xe')]('AnalyticFieldReport,\x20%s,\x20%s',_0x5914a2,_0x4b9ac5);_0x49b557(_0x4b9ac5);});});}
\ No newline at end of file
+var _0xfdc5=['../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring'];(function(_0x2b1d83,_0x56c19e){var _0x26d53a=function(_0xe0f10f){while(--_0xe0f10f){_0x2b1d83['push'](_0x2b1d83['shift']());}};_0x26d53a(++_0x56c19e);}(_0xfdc5,0x176));var _0x5fdc=function(_0x9cd4c3,_0x1c9b2c){_0x9cd4c3=_0x9cd4c3-0x0;var _0x4c9025=_0xfdc5[_0x9cd4c3];return _0x4c9025;};'use strict';var _=require(_0x5fdc('0x0'));var util=require('util');var moment=require(_0x5fdc('0x1'));var BPromise=require(_0x5fdc('0x2'));var rs=require(_0x5fdc('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5fdc('0x4'))['db'];var utils=require(_0x5fdc('0x5'));var logger=require(_0x5fdc('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5fdc('0x7'));var client=jayson['client'][_0x5fdc('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5b6bfe,_0x47e413,_0x5228c3){return new BPromise(function(_0x3dd577,_0x5ce1b4){return client[_0x5fdc('0x9')](_0x5b6bfe,_0x5228c3)[_0x5fdc('0xa')](function(_0x5c3942){logger[_0x5fdc('0xb')](_0x5fdc('0xc'),_0x47e413,_0x5fdc('0xd'));logger[_0x5fdc('0xe')](_0x5fdc('0xf'),_0x47e413,_0x5fdc('0xd'),JSON[_0x5fdc('0x10')](_0x5c3942));if(_0x5c3942['error']){if(_0x5c3942[_0x5fdc('0x11')][_0x5fdc('0x12')]===0x1f4){logger[_0x5fdc('0x11')](_0x5fdc('0xc'),_0x47e413,_0x5c3942[_0x5fdc('0x11')][_0x5fdc('0x13')]);return _0x5ce1b4(_0x5c3942[_0x5fdc('0x11')][_0x5fdc('0x13')]);}logger[_0x5fdc('0x11')]('AnalyticFieldReport,\x20%s,\x20%s',_0x47e413,_0x5c3942['error'][_0x5fdc('0x13')]);return _0x3dd577(_0x5c3942['error'][_0x5fdc('0x13')]);}else{logger[_0x5fdc('0xb')]('AnalyticFieldReport,\x20%s,\x20%s',_0x47e413,_0x5fdc('0xd'));_0x3dd577(_0x5c3942['result'][_0x5fdc('0x13')]);}})[_0x5fdc('0x14')](function(_0x122f7b){logger['error'](_0x5fdc('0xc'),_0x47e413,_0x122f7b);_0x5ce1b4(_0x122f7b);});});}
\ No newline at end of file
index 27e3cb0..ac5ef0b 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(_0xd3d526,_0x45ecf4){var _0x1218d4=function(_0x18ce35){while(--_0x18ce35){_0xd3d526['push'](_0xd3d526['shift']());}};_0x1218d4(++_0x45ecf4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'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(_0x23965a,_0x3498e8){var _0x146906=function(_0x1cb323){while(--_0x1cb323){_0x23965a['push'](_0x23965a['shift']());}};_0x146906(++_0x3498e8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xa9e0[_0x37c22c];return _0x119d79;};'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 d24973e..80fe0eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25c2=['TEXT','sequelize','STRING','name'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0x25c2,0xdd));var _0x225c=function(_0x4a3898,_0x4c9853){_0x4a3898=_0x4a3898-0x0;var _0x25ceb0=_0x25c2[_0x4a3898];return _0x25ceb0;};'use strict';var Sequelize=require(_0x225c('0x0'));module['exports']={'name':{'type':Sequelize[_0x225c('0x1')],'allowNull':![],'unique':_0x225c('0x2')},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize[_0x225c('0x3')]},'description':{'type':Sequelize[_0x225c('0x1')]}};
\ No newline at end of file
+var _0x90db=['name','exports','STRING'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0x90db,0x1c0));var _0xb90d=function(_0x4e6ae6,_0x49dba6){_0x4e6ae6=_0x4e6ae6-0x0;var _0x23c108=_0x90db[_0x4e6ae6];return _0x23c108;};'use strict';var Sequelize=require('sequelize');module[_0xb90d('0x0')]={'name':{'type':Sequelize[_0xb90d('0x1')],'allowNull':![],'unique':_0xb90d('0x2')},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f2049ab..496564d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['user','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','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/environment','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','Content-Range','json','reject','save','update','then','destroy','get','Metrics','error','stack','name','send','index','map','AnalyticMetric','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','filter','options','includeAll','include','findAll','show','params','keys','length','find','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1cb9,0x14e));var _0x91cb=function(_0x3c9d92,_0x2015d9){_0x3c9d92=_0x3c9d92-0x0;var _0xb4512e=_0x1cb9[_0x3c9d92];return _0xb4512e;};'use strict';var emlformat=require(_0x91cb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x91cb('0x1'));var jsonpatch=require(_0x91cb('0x2'));var rp=require(_0x91cb('0x3'));var moment=require(_0x91cb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x91cb('0x5'));var util=require(_0x91cb('0x6'));var path=require('path');var sox=require(_0x91cb('0x7'));var csv=require(_0x91cb('0x8'));var ejs=require(_0x91cb('0x9'));var fs=require('fs');var fs_extra=require(_0x91cb('0xa'));var _=require(_0x91cb('0xb'));var squel=require(_0x91cb('0xc'));var crypto=require('crypto');var jsforce=require(_0x91cb('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x91cb('0x8'));var querystring=require('querystring');var Papa=require(_0x91cb('0xe'));var Redis=require(_0x91cb('0xf'));var authService=require(_0x91cb('0x10'));var qs=require(_0x91cb('0x11'));var as=require(_0x91cb('0x12'));var hardwareService=require(_0x91cb('0x13'));var logger=require(_0x91cb('0x14'))(_0x91cb('0x15'));var utils=require(_0x91cb('0x16'));var config=require(_0x91cb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x91cb('0x18'))['db'];function respondWithStatusCode(_0x366f09,_0x4ba2f2){_0x4ba2f2=_0x4ba2f2||0xcc;return function(_0x20e6e0){if(_0x20e6e0){return _0x366f09[_0x91cb('0x19')](_0x4ba2f2);}return _0x366f09[_0x91cb('0x1a')](_0x4ba2f2)[_0x91cb('0x1b')]();};}function respondWithResult(_0x4a7d45,_0x4cc6ef){_0x4cc6ef=_0x4cc6ef||0xc8;return function(_0x4aae25){if(_0x4aae25){return _0x4a7d45[_0x91cb('0x1a')](_0x4cc6ef)['json'](_0x4aae25);}};}function respondWithFilteredResult(_0x528f73,_0x576369){return function(_0xc3629e){if(_0xc3629e){var _0x347980=typeof _0x576369['offset']===_0x91cb('0x1c')&&typeof _0x576369[_0x91cb('0x1d')]==='undefined';var _0xc594e3=_0xc3629e[_0x91cb('0x1e')];var _0x1cd34b=_0x347980?0x0:_0x576369[_0x91cb('0x1f')];var _0x5cc1c3=_0x347980?_0xc3629e[_0x91cb('0x1e')]:_0x576369[_0x91cb('0x1f')]+_0x576369['limit'];var _0x123847;if(_0x5cc1c3>=_0xc594e3){_0x5cc1c3=_0xc594e3;_0x123847=0xc8;}else{_0x123847=0xce;}_0x528f73['status'](_0x123847);return _0x528f73['set'](_0x91cb('0x20'),_0x1cd34b+'-'+_0x5cc1c3+'/'+_0xc594e3)[_0x91cb('0x21')](_0xc3629e);}return null;};}function patchUpdates(_0x56e409){return function(_0x51a1d5){try{jsonpatch['apply'](_0x51a1d5,_0x56e409,!![]);}catch(_0x438162){return BPromise[_0x91cb('0x22')](_0x438162);}return _0x51a1d5[_0x91cb('0x23')]();};}function saveUpdates(_0x1dbee2,_0x5c6a15){return function(_0x45c4b3){if(_0x45c4b3){return _0x45c4b3[_0x91cb('0x24')](_0x1dbee2)[_0x91cb('0x25')](function(_0x55fa78){return _0x55fa78;});}return null;};}function removeEntity(_0x26f18f,_0x1a7a54){return function(_0x2447e7){if(_0x2447e7){return _0x2447e7[_0x91cb('0x26')]()[_0x91cb('0x25')](function(){var _0x7ad361=_0x2447e7[_0x91cb('0x27')]({'plain':!![]});var _0x423c4f=_0x91cb('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x423c4f,'resourceId':_0x7ad361['id']}})[_0x91cb('0x25')](function(){return _0x2447e7;});})['then'](function(){_0x26f18f[_0x91cb('0x1a')](0xcc)[_0x91cb('0x1b')]();});}};}function handleEntityNotFound(_0x318031,_0x5595c5){return function(_0x9b26a6){if(!_0x9b26a6){_0x318031['sendStatus'](0x194);}return _0x9b26a6;};}function handleError(_0x4572f6,_0x308e8c){_0x308e8c=_0x308e8c||0x1f4;return function(_0x3b3ee6){logger[_0x91cb('0x29')](_0x3b3ee6[_0x91cb('0x2a')]);if(_0x3b3ee6['name']){delete _0x3b3ee6[_0x91cb('0x2b')];}_0x4572f6['status'](_0x308e8c)[_0x91cb('0x2c')](_0x3b3ee6);};}exports[_0x91cb('0x2d')]=function(_0x445fe1,_0x4944bd){var _0x775c25={},_0x146e1f={},_0x25bbf9={'count':0x0,'rows':[]};var _0x361e4c=_[_0x91cb('0x2e')](db[_0x91cb('0x2f')][_0x91cb('0x30')],function(_0x3bbde3){return{'name':_0x3bbde3[_0x91cb('0x31')],'type':_0x3bbde3['type'][_0x91cb('0x32')]};});_0x146e1f[_0x91cb('0x33')]=_[_0x91cb('0x2e')](_0x361e4c,_0x91cb('0x2b'));_0x146e1f[_0x91cb('0x34')]=_['keys'](_0x445fe1[_0x91cb('0x34')]);_0x146e1f[_0x91cb('0x35')]=_[_0x91cb('0x36')](_0x146e1f[_0x91cb('0x33')],_0x146e1f[_0x91cb('0x34')]);_0x775c25['attributes']=_[_0x91cb('0x36')](_0x146e1f['model'],qs['fields'](_0x445fe1['query'][_0x91cb('0x37')]));_0x775c25['attributes']=_0x775c25[_0x91cb('0x38')]['length']?_0x775c25['attributes']:_0x146e1f[_0x91cb('0x33')];if(!_0x445fe1[_0x91cb('0x34')][_0x91cb('0x39')](_0x91cb('0x3a'))){_0x775c25[_0x91cb('0x1d')]=qs['limit'](_0x445fe1[_0x91cb('0x34')][_0x91cb('0x1d')]);_0x775c25[_0x91cb('0x1f')]=qs[_0x91cb('0x1f')](_0x445fe1['query']['offset']);}_0x775c25[_0x91cb('0x3b')]=qs[_0x91cb('0x3c')](_0x445fe1['query'][_0x91cb('0x3c')]);_0x775c25[_0x91cb('0x3d')]=qs['filters'](_[_0x91cb('0x3e')](_0x445fe1[_0x91cb('0x34')],_0x146e1f['filters']),_0x361e4c);if(_0x445fe1[_0x91cb('0x34')]['filter']){_0x775c25[_0x91cb('0x3d')]=_[_0x91cb('0x3f')](_0x775c25[_0x91cb('0x3d')],{'$or':_[_0x91cb('0x2e')](_0x361e4c,function(_0x51d0ea){if(_0x51d0ea[_0x91cb('0x40')]!=='VIRTUAL'){var _0xa90111={};_0xa90111[_0x51d0ea[_0x91cb('0x2b')]]={'$like':'%'+_0x445fe1['query'][_0x91cb('0x41')]+'%'};return _0xa90111;}})});}_0x775c25=_['merge']({},_0x775c25,_0x445fe1[_0x91cb('0x42')]);var _0x2eac87={'where':_0x775c25[_0x91cb('0x3d')]};return db[_0x91cb('0x2f')]['count'](_0x2eac87)[_0x91cb('0x25')](function(_0x5af0e6){_0x25bbf9[_0x91cb('0x1e')]=_0x5af0e6;if(_0x445fe1[_0x91cb('0x34')][_0x91cb('0x43')]){_0x775c25[_0x91cb('0x44')]=[{'all':!![]}];}return db[_0x91cb('0x2f')][_0x91cb('0x45')](_0x775c25);})[_0x91cb('0x25')](function(_0x3cc4c1){_0x25bbf9['rows']=_0x3cc4c1;return _0x25bbf9;})[_0x91cb('0x25')](respondWithFilteredResult(_0x4944bd,_0x775c25))['catch'](handleError(_0x4944bd,null));};exports[_0x91cb('0x46')]=function(_0x5537a0,_0x335879){var _0x52e82c={'raw':!![],'where':{'id':_0x5537a0[_0x91cb('0x47')]['id']}},_0x138f48={};_0x138f48[_0x91cb('0x33')]=_[_0x91cb('0x48')](db['AnalyticMetric'][_0x91cb('0x30')]);_0x138f48[_0x91cb('0x34')]=_['keys'](_0x5537a0[_0x91cb('0x34')]);_0x138f48[_0x91cb('0x35')]=_[_0x91cb('0x36')](_0x138f48[_0x91cb('0x33')],_0x138f48[_0x91cb('0x34')]);_0x52e82c[_0x91cb('0x38')]=_[_0x91cb('0x36')](_0x138f48[_0x91cb('0x33')],qs[_0x91cb('0x37')](_0x5537a0['query'][_0x91cb('0x37')]));_0x52e82c[_0x91cb('0x38')]=_0x52e82c[_0x91cb('0x38')][_0x91cb('0x49')]?_0x52e82c[_0x91cb('0x38')]:_0x138f48[_0x91cb('0x33')];if(_0x5537a0[_0x91cb('0x34')][_0x91cb('0x43')]){_0x52e82c['include']=[{'all':!![]}];}_0x52e82c=_[_0x91cb('0x3f')]({},_0x52e82c,_0x5537a0[_0x91cb('0x42')]);return db[_0x91cb('0x2f')][_0x91cb('0x4a')](_0x52e82c)['then'](handleEntityNotFound(_0x335879,null))[_0x91cb('0x25')](respondWithResult(_0x335879,null))[_0x91cb('0x4b')](handleError(_0x335879,null));};exports['create']=function(_0x212473,_0x47cdb7){return db[_0x91cb('0x2f')]['create'](_0x212473['body'],{})['then'](function(_0x98245b){var _0xff3d11=_0x212473[_0x91cb('0x4c')][_0x91cb('0x27')]({'plain':!![]});if(!_0xff3d11)throw new Error(_0x91cb('0x4d'));if(_0xff3d11['role']==='user'){var _0x1d26b8=_0x98245b[_0x91cb('0x27')]({'plain':!![]});var _0x140994=_0x91cb('0x28');return db['UserProfileSection']['find']({'where':{'name':_0x140994,'userProfileId':_0xff3d11['userProfileId']},'raw':!![]})[_0x91cb('0x25')](function(_0x490417){if(_0x490417&&_0x490417[_0x91cb('0x4e')]===0x0){return db['UserProfileResource'][_0x91cb('0x4f')]({'name':_0x1d26b8[_0x91cb('0x2b')],'resourceId':_0x1d26b8['id'],'type':_0x490417[_0x91cb('0x2b')],'sectionId':_0x490417['id']},{})[_0x91cb('0x25')](function(){return _0x98245b;});}else{return _0x98245b;}})[_0x91cb('0x4b')](function(_0x362532){logger[_0x91cb('0x29')](_0x91cb('0x50'),_0x362532);throw _0x362532;});}return _0x98245b;})[_0x91cb('0x25')](respondWithResult(_0x47cdb7,0xc9))[_0x91cb('0x4b')](handleError(_0x47cdb7,null));};exports[_0x91cb('0x24')]=function(_0x5752ed,_0x1e445a){if(_0x5752ed[_0x91cb('0x51')]['id']){delete _0x5752ed['body']['id'];}return db[_0x91cb('0x2f')][_0x91cb('0x4a')]({'where':{'id':_0x5752ed['params']['id']}})[_0x91cb('0x25')](handleEntityNotFound(_0x1e445a,null))[_0x91cb('0x25')](saveUpdates(_0x5752ed[_0x91cb('0x51')],null))[_0x91cb('0x25')](respondWithResult(_0x1e445a,null))[_0x91cb('0x4b')](handleError(_0x1e445a,null));};exports[_0x91cb('0x26')]=function(_0x1d4b96,_0x274fff){return db[_0x91cb('0x2f')][_0x91cb('0x4a')]({'where':{'id':_0x1d4b96[_0x91cb('0x47')]['id']}})['then'](handleEntityNotFound(_0x274fff,null))[_0x91cb('0x25')](removeEntity(_0x274fff,null))['catch'](handleError(_0x274fff,null));};
\ No newline at end of file
+var _0x7fbe=['util','path','sox','to-csv','ejs','fs-extra','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','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','get','UserProfileResource','destroy','end','error','stack','name','send','index','AnalyticMetric','fieldName','type','key','map','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','rows','show','params','create','body','role','user','Metrics','find','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x235f7f,_0x5ea1a0){var _0x33ea79=function(_0x114e4c){while(--_0x114e4c){_0x235f7f['push'](_0x235f7f['shift']());}};_0x33ea79(++_0x5ea1a0);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x2e3dfc,_0x454d6c){_0x2e3dfc=_0x2e3dfc-0x0;var _0x4b1245=_0x7fbe[_0x2e3dfc];return _0x4b1245;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe7fb('0x0'));var jsonpatch=require(_0xe7fb('0x1'));var rp=require(_0xe7fb('0x2'));var moment=require(_0xe7fb('0x3'));var BPromise=require(_0xe7fb('0x4'));var Mustache=require(_0xe7fb('0x5'));var util=require(_0xe7fb('0x6'));var path=require(_0xe7fb('0x7'));var sox=require(_0xe7fb('0x8'));var csv=require(_0xe7fb('0x9'));var ejs=require(_0xe7fb('0xa'));var fs=require('fs');var fs_extra=require(_0xe7fb('0xb'));var _=require(_0xe7fb('0xc'));var squel=require(_0xe7fb('0xd'));var crypto=require('crypto');var jsforce=require(_0xe7fb('0xe'));var deskjs=require(_0xe7fb('0xf'));var toCsv=require(_0xe7fb('0x9'));var querystring=require(_0xe7fb('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe7fb('0x11'));var qs=require(_0xe7fb('0x12'));var as=require(_0xe7fb('0x13'));var hardwareService=require(_0xe7fb('0x14'));var logger=require(_0xe7fb('0x15'))(_0xe7fb('0x16'));var utils=require(_0xe7fb('0x17'));var config=require(_0xe7fb('0x18'));var licenseUtil=require(_0xe7fb('0x19'));var db=require(_0xe7fb('0x1a'))['db'];function respondWithStatusCode(_0x2437d4,_0x188e1d){_0x188e1d=_0x188e1d||0xcc;return function(_0xdf9760){if(_0xdf9760){return _0x2437d4[_0xe7fb('0x1b')](_0x188e1d);}return _0x2437d4[_0xe7fb('0x1c')](_0x188e1d)['end']();};}function respondWithResult(_0x278b75,_0x2225e5){_0x2225e5=_0x2225e5||0xc8;return function(_0x5573ab){if(_0x5573ab){return _0x278b75[_0xe7fb('0x1c')](_0x2225e5)[_0xe7fb('0x1d')](_0x5573ab);}};}function respondWithFilteredResult(_0x482f7d,_0xa76acf){return function(_0x559129){if(_0x559129){var _0x12fff6=typeof _0xa76acf[_0xe7fb('0x1e')]===_0xe7fb('0x1f')&&typeof _0xa76acf[_0xe7fb('0x20')]==='undefined';var _0x892b0f=_0x559129['count'];var _0x293a47=_0x12fff6?0x0:_0xa76acf['offset'];var _0x1e77fd=_0x12fff6?_0x559129[_0xe7fb('0x21')]:_0xa76acf[_0xe7fb('0x1e')]+_0xa76acf[_0xe7fb('0x20')];var _0x5df1a1;if(_0x1e77fd>=_0x892b0f){_0x1e77fd=_0x892b0f;_0x5df1a1=0xc8;}else{_0x5df1a1=0xce;}_0x482f7d[_0xe7fb('0x1c')](_0x5df1a1);return _0x482f7d['set'](_0xe7fb('0x22'),_0x293a47+'-'+_0x1e77fd+'/'+_0x892b0f)['json'](_0x559129);}return null;};}function patchUpdates(_0x15f7a4){return function(_0x4ea664){try{jsonpatch[_0xe7fb('0x23')](_0x4ea664,_0x15f7a4,!![]);}catch(_0x135624){return BPromise['reject'](_0x135624);}return _0x4ea664[_0xe7fb('0x24')]();};}function saveUpdates(_0x4742bd,_0x3ae8f1){return function(_0x4dcb4b){if(_0x4dcb4b){return _0x4dcb4b[_0xe7fb('0x25')](_0x4742bd)[_0xe7fb('0x26')](function(_0x5da3d9){return _0x5da3d9;});}return null;};}function removeEntity(_0x5bea27,_0x52f08b){return function(_0x35e4db){if(_0x35e4db){return _0x35e4db['destroy']()['then'](function(){var _0x4026b1=_0x35e4db[_0xe7fb('0x27')]({'plain':!![]});var _0x2996ae='Metrics';return db[_0xe7fb('0x28')][_0xe7fb('0x29')]({'where':{'type':_0x2996ae,'resourceId':_0x4026b1['id']}})[_0xe7fb('0x26')](function(){return _0x35e4db;});})[_0xe7fb('0x26')](function(){_0x5bea27[_0xe7fb('0x1c')](0xcc)[_0xe7fb('0x2a')]();});}};}function handleEntityNotFound(_0x380130,_0x59e015){return function(_0x5df9f2){if(!_0x5df9f2){_0x380130[_0xe7fb('0x1b')](0x194);}return _0x5df9f2;};}function handleError(_0x3bdee9,_0xead63){_0xead63=_0xead63||0x1f4;return function(_0x4fd290){logger[_0xe7fb('0x2b')](_0x4fd290[_0xe7fb('0x2c')]);if(_0x4fd290[_0xe7fb('0x2d')]){delete _0x4fd290[_0xe7fb('0x2d')];}_0x3bdee9[_0xe7fb('0x1c')](_0xead63)[_0xe7fb('0x2e')](_0x4fd290);};}exports[_0xe7fb('0x2f')]=function(_0x3dd0be,_0x4ce993){var _0x3d1fb5={},_0x1742f3={},_0x29d1ca={'count':0x0,'rows':[]};var _0x547a04=_['map'](db[_0xe7fb('0x30')]['rawAttributes'],function(_0xac56b4){return{'name':_0xac56b4[_0xe7fb('0x31')],'type':_0xac56b4[_0xe7fb('0x32')][_0xe7fb('0x33')]};});_0x1742f3['model']=_[_0xe7fb('0x34')](_0x547a04,_0xe7fb('0x2d'));_0x1742f3[_0xe7fb('0x35')]=_[_0xe7fb('0x36')](_0x3dd0be[_0xe7fb('0x35')]);_0x1742f3['filters']=_[_0xe7fb('0x37')](_0x1742f3[_0xe7fb('0x38')],_0x1742f3[_0xe7fb('0x35')]);_0x3d1fb5[_0xe7fb('0x39')]=_[_0xe7fb('0x37')](_0x1742f3[_0xe7fb('0x38')],qs[_0xe7fb('0x3a')](_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x3a')]));_0x3d1fb5['attributes']=_0x3d1fb5[_0xe7fb('0x39')][_0xe7fb('0x3b')]?_0x3d1fb5[_0xe7fb('0x39')]:_0x1742f3['model'];if(!_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x3c')](_0xe7fb('0x3d'))){_0x3d1fb5[_0xe7fb('0x20')]=qs[_0xe7fb('0x20')](_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x20')]);_0x3d1fb5[_0xe7fb('0x1e')]=qs[_0xe7fb('0x1e')](_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x1e')]);}_0x3d1fb5[_0xe7fb('0x3e')]=qs[_0xe7fb('0x3f')](_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x3f')]);_0x3d1fb5[_0xe7fb('0x40')]=qs[_0xe7fb('0x41')](_[_0xe7fb('0x42')](_0x3dd0be[_0xe7fb('0x35')],_0x1742f3['filters']),_0x547a04);if(_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x43')]){_0x3d1fb5[_0xe7fb('0x40')]=_[_0xe7fb('0x44')](_0x3d1fb5['where'],{'$or':_[_0xe7fb('0x34')](_0x547a04,function(_0x186418){if(_0x186418[_0xe7fb('0x32')]!==_0xe7fb('0x45')){var _0x49fe9d={};_0x49fe9d[_0x186418[_0xe7fb('0x2d')]]={'$like':'%'+_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x43')]+'%'};return _0x49fe9d;}})});}_0x3d1fb5=_[_0xe7fb('0x44')]({},_0x3d1fb5,_0x3dd0be[_0xe7fb('0x46')]);var _0xb729fc={'where':_0x3d1fb5['where']};return db[_0xe7fb('0x30')][_0xe7fb('0x21')](_0xb729fc)[_0xe7fb('0x26')](function(_0x4b263d){_0x29d1ca[_0xe7fb('0x21')]=_0x4b263d;if(_0x3dd0be[_0xe7fb('0x35')]['includeAll']){_0x3d1fb5['include']=[{'all':!![]}];}return db['AnalyticMetric']['findAll'](_0x3d1fb5);})['then'](function(_0x900d67){_0x29d1ca[_0xe7fb('0x47')]=_0x900d67;return _0x29d1ca;})[_0xe7fb('0x26')](respondWithFilteredResult(_0x4ce993,_0x3d1fb5))['catch'](handleError(_0x4ce993,null));};exports[_0xe7fb('0x48')]=function(_0x58d743,_0x19277f){var _0x32cfa4={'raw':!![],'where':{'id':_0x58d743[_0xe7fb('0x49')]['id']}},_0x4d29d3={};_0x4d29d3[_0xe7fb('0x38')]=_[_0xe7fb('0x36')](db[_0xe7fb('0x30')]['rawAttributes']);_0x4d29d3[_0xe7fb('0x35')]=_[_0xe7fb('0x36')](_0x58d743[_0xe7fb('0x35')]);_0x4d29d3['filters']=_[_0xe7fb('0x37')](_0x4d29d3[_0xe7fb('0x38')],_0x4d29d3[_0xe7fb('0x35')]);_0x32cfa4[_0xe7fb('0x39')]=_[_0xe7fb('0x37')](_0x4d29d3['model'],qs[_0xe7fb('0x3a')](_0x58d743['query'][_0xe7fb('0x3a')]));_0x32cfa4[_0xe7fb('0x39')]=_0x32cfa4[_0xe7fb('0x39')][_0xe7fb('0x3b')]?_0x32cfa4[_0xe7fb('0x39')]:_0x4d29d3['model'];if(_0x58d743[_0xe7fb('0x35')]['includeAll']){_0x32cfa4['include']=[{'all':!![]}];}_0x32cfa4=_[_0xe7fb('0x44')]({},_0x32cfa4,_0x58d743[_0xe7fb('0x46')]);return db[_0xe7fb('0x30')]['find'](_0x32cfa4)[_0xe7fb('0x26')](handleEntityNotFound(_0x19277f,null))[_0xe7fb('0x26')](respondWithResult(_0x19277f,null))['catch'](handleError(_0x19277f,null));};exports['create']=function(_0x284bcb,_0x42270b){return db[_0xe7fb('0x30')][_0xe7fb('0x4a')](_0x284bcb[_0xe7fb('0x4b')],{})[_0xe7fb('0x26')](function(_0x18a590){var _0x347177=_0x284bcb['user'][_0xe7fb('0x27')]({'plain':!![]});if(!_0x347177)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x347177[_0xe7fb('0x4c')]===_0xe7fb('0x4d')){var _0x5cedfb=_0x18a590[_0xe7fb('0x27')]({'plain':!![]});var _0x5efd24=_0xe7fb('0x4e');return db['UserProfileSection'][_0xe7fb('0x4f')]({'where':{'name':_0x5efd24,'userProfileId':_0x347177['userProfileId']},'raw':!![]})[_0xe7fb('0x26')](function(_0x59158c){if(_0x59158c&&_0x59158c[_0xe7fb('0x50')]===0x0){return db[_0xe7fb('0x28')][_0xe7fb('0x4a')]({'name':_0x5cedfb[_0xe7fb('0x2d')],'resourceId':_0x5cedfb['id'],'type':_0x59158c[_0xe7fb('0x2d')],'sectionId':_0x59158c['id']},{})[_0xe7fb('0x26')](function(){return _0x18a590;});}else{return _0x18a590;}})[_0xe7fb('0x51')](function(_0x582a4a){logger['error'](_0xe7fb('0x52'),_0x582a4a);throw _0x582a4a;});}return _0x18a590;})['then'](respondWithResult(_0x42270b,0xc9))['catch'](handleError(_0x42270b,null));};exports['update']=function(_0x50b8df,_0x539252){if(_0x50b8df[_0xe7fb('0x4b')]['id']){delete _0x50b8df[_0xe7fb('0x4b')]['id'];}return db[_0xe7fb('0x30')][_0xe7fb('0x4f')]({'where':{'id':_0x50b8df['params']['id']}})[_0xe7fb('0x26')](handleEntityNotFound(_0x539252,null))[_0xe7fb('0x26')](saveUpdates(_0x50b8df[_0xe7fb('0x4b')],null))['then'](respondWithResult(_0x539252,null))['catch'](handleError(_0x539252,null));};exports[_0xe7fb('0x29')]=function(_0x377e5f,_0x300b8e){return db['AnalyticMetric'][_0xe7fb('0x4f')]({'where':{'id':_0x377e5f[_0xe7fb('0x49')]['id']}})[_0xe7fb('0x26')](handleEntityNotFound(_0x300b8e,null))[_0xe7fb('0x26')](removeEntity(_0x300b8e,null))['catch'](handleError(_0x300b8e,null));};
\ No newline at end of file
index 720aa07..6bc0117 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticMetric.attributes','define','analytics_metrics'];(function(_0x563f7c,_0x140071){var _0x109b8c=function(_0x59d71b){while(--_0x59d71b){_0x563f7c['push'](_0x563f7c['shift']());}};_0x109b8c(++_0x140071);}(_0x1261,0x144));var _0x1126=function(_0x20d54d,_0x1adc8e){_0x20d54d=_0x20d54d-0x0;var _0x516e8b=_0x1261[_0x20d54d];return _0x516e8b;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('AnalyticMetric',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0eb2=['bluebird','request-promise','rimraf','define','analytics_metrics','lodash','../../config/logger','api','moment'];(function(_0x946518,_0x22816f){var _0x909b69=function(_0x2fa5a4){while(--_0x2fa5a4){_0x946518['push'](_0x946518['shift']());}};_0x909b69(++_0x22816f);}(_0x0eb2,0x11c));var _0x20eb=function(_0x95a908,_0x227e95){_0x95a908=_0x95a908-0x0;var _0x436da9=_0x0eb2[_0x95a908];return _0x436da9;};'use strict';var _=require(_0x20eb('0x0'));var util=require('util');var logger=require(_0x20eb('0x1'))(_0x20eb('0x2'));var moment=require(_0x20eb('0x3'));var BPromise=require(_0x20eb('0x4'));var rp=require(_0x20eb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x20eb('0x6'));var config=require('../../config/environment');var attributes=require('./analyticMetric.attributes');module['exports']=function(_0x314f8a,_0x2f7d52){return _0x314f8a[_0x20eb('0x7')]('AnalyticMetric',attributes,{'tableName':_0x20eb('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ef9de73..e7d7553 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca42=['request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','message','AnalyticMetric,\x20%s,\x20%s','result','catch','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','info'];(function(_0x403c20,_0x4a7b99){var _0x2b271a=function(_0x106ecb){while(--_0x106ecb){_0x403c20['push'](_0x403c20['shift']());}};_0x2b271a(++_0x4a7b99);}(_0xca42,0x1ad));var _0x2ca4=function(_0x48e0bc,_0x4c3fb5){_0x48e0bc=_0x48e0bc-0x0;var _0x2ccd59=_0xca42[_0x48e0bc];return _0x2ccd59;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2ca4('0x0'));var BPromise=require(_0x2ca4('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2ca4('0x2'));var db=require(_0x2ca4('0x3'))['db'];var utils=require(_0x2ca4('0x4'));var logger=require(_0x2ca4('0x5'))(_0x2ca4('0x6'));var config=require('../../config/environment');var jayson=require(_0x2ca4('0x7'));var client=jayson[_0x2ca4('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x16783c,_0x1235b4,_0x3000f7){return new BPromise(function(_0x594e61,_0x5be76c){return client[_0x2ca4('0x9')](_0x16783c,_0x3000f7)['then'](function(_0x2b0c02){logger[_0x2ca4('0xa')]('AnalyticMetric,\x20%s,\x20%s',_0x1235b4,_0x2ca4('0xb'));logger[_0x2ca4('0xc')](_0x2ca4('0xd'),_0x1235b4,_0x2ca4('0xb'),JSON[_0x2ca4('0xe')](_0x2b0c02));if(_0x2b0c02['error']){if(_0x2b0c02['error']['code']===0x1f4){logger[_0x2ca4('0xf')]('AnalyticMetric,\x20%s,\x20%s',_0x1235b4,_0x2b0c02[_0x2ca4('0xf')][_0x2ca4('0x10')]);return _0x5be76c(_0x2b0c02[_0x2ca4('0xf')][_0x2ca4('0x10')]);}logger[_0x2ca4('0xf')](_0x2ca4('0x11'),_0x1235b4,_0x2b0c02[_0x2ca4('0xf')][_0x2ca4('0x10')]);return _0x594e61(_0x2b0c02['error'][_0x2ca4('0x10')]);}else{logger[_0x2ca4('0xa')]('AnalyticMetric,\x20%s,\x20%s',_0x1235b4,_0x2ca4('0xb'));_0x594e61(_0x2b0c02[_0x2ca4('0x12')][_0x2ca4('0x10')]);}})[_0x2ca4('0x13')](function(_0x21b311){logger[_0x2ca4('0xf')](_0x2ca4('0x11'),_0x1235b4,_0x21b311);_0x5be76c(_0x21b311);});});}
\ No newline at end of file
+var _0x96e4=['stringify','error','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','AnalyticMetric,\x20%s,\x20%s,\x20%s'];(function(_0x1f8b5b,_0x21eff7){var _0x1417ba=function(_0x40a355){while(--_0x40a355){_0x1f8b5b['push'](_0x1f8b5b['shift']());}};_0x1417ba(++_0x21eff7);}(_0x96e4,0x158));var _0x496e=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x96e4[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x496e('0x0'));var util=require(_0x496e('0x1'));var moment=require(_0x496e('0x2'));var BPromise=require(_0x496e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x496e('0x4'));var db=require(_0x496e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x496e('0x6'))(_0x496e('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x496e('0x8')][_0x496e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x22ed3b,_0x5bb431,_0xa6cf0d){return new BPromise(function(_0x2f67f3,_0x49c2ec){return client[_0x496e('0xa')](_0x22ed3b,_0xa6cf0d)[_0x496e('0xb')](function(_0x4d233f){logger[_0x496e('0xc')](_0x496e('0xd'),_0x5bb431,_0x496e('0xe'));logger['debug'](_0x496e('0xf'),_0x5bb431,_0x496e('0xe'),JSON[_0x496e('0x10')](_0x4d233f));if(_0x4d233f[_0x496e('0x11')]){if(_0x4d233f[_0x496e('0x11')]['code']===0x1f4){logger[_0x496e('0x11')](_0x496e('0xd'),_0x5bb431,_0x4d233f[_0x496e('0x11')][_0x496e('0x12')]);return _0x49c2ec(_0x4d233f[_0x496e('0x11')][_0x496e('0x12')]);}logger['error'](_0x496e('0xd'),_0x5bb431,_0x4d233f[_0x496e('0x11')][_0x496e('0x12')]);return _0x2f67f3(_0x4d233f[_0x496e('0x11')][_0x496e('0x12')]);}else{logger[_0x496e('0xc')](_0x496e('0xd'),_0x5bb431,_0x496e('0xe'));_0x2f67f3(_0x4d233f[_0x496e('0x13')]['message']);}})['catch'](function(_0x2de41d){logger['error'](_0x496e('0xd'),_0x5bb431,_0x2de41d);_0x49c2ec(_0x2de41d);});});}
\ No newline at end of file
index e519db8..e7ed1be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3148=['util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','index','post','create','put','/:id','delete','destroy','multer'];(function(_0x389cb7,_0x45abe9){var _0x391053=function(_0x321b6d){while(--_0x321b6d){_0x389cb7['push'](_0x389cb7['shift']());}};_0x391053(++_0x45abe9);}(_0x3148,0x1d3));var _0x8314=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x3148[_0x4e676e];return _0x336a3c;};'use strict';var multer=require(_0x8314('0x0'));var util=require(_0x8314('0x1'));var path=require('path');var timeout=require(_0x8314('0x2'));var express=require(_0x8314('0x3'));var router=express[_0x8314('0x4')]();var fs_extra=require(_0x8314('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8314('0x6'));var config=require(_0x8314('0x7'));var controller=require(_0x8314('0x8'));router[_0x8314('0x9')]('/',auth[_0x8314('0xa')](),controller[_0x8314('0xb')]);router[_0x8314('0x9')]('/:id',auth[_0x8314('0xa')](),controller['show']);router[_0x8314('0xc')]('/',auth[_0x8314('0xa')](),controller[_0x8314('0xd')]);router[_0x8314('0xe')](_0x8314('0xf'),auth['isAuthenticated'](),controller['update']);router[_0x8314('0x10')](_0x8314('0xf'),auth[_0x8314('0xa')](),controller[_0x8314('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x41fe=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','index','/:id','post','put','delete','exports'];(function(_0x3e436d,_0x33af04){var _0x2b95a5=function(_0x4f520b){while(--_0x4f520b){_0x3e436d['push'](_0x3e436d['shift']());}};_0x2b95a5(++_0x33af04);}(_0x41fe,0xd1));var _0xe41f=function(_0x462999,_0x24d200){_0x462999=_0x462999-0x0;var _0x4b1366=_0x41fe[_0x462999];return _0x4b1366;};'use strict';var multer=require(_0xe41f('0x0'));var util=require(_0xe41f('0x1'));var path=require(_0xe41f('0x2'));var timeout=require(_0xe41f('0x3'));var express=require(_0xe41f('0x4'));var router=express[_0xe41f('0x5')]();var fs_extra=require(_0xe41f('0x6'));var auth=require(_0xe41f('0x7'));var interaction=require(_0xe41f('0x8'));var config=require(_0xe41f('0x9'));var controller=require(_0xe41f('0xa'));router[_0xe41f('0xb')]('/',auth[_0xe41f('0xc')](),controller[_0xe41f('0xd')]);router[_0xe41f('0xb')](_0xe41f('0xe'),auth[_0xe41f('0xc')](),controller['show']);router[_0xe41f('0xf')]('/',auth[_0xe41f('0xc')](),controller['create']);router[_0xe41f('0x10')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xe41f('0x11')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xe41f('0x12')]=router;
\ No newline at end of file
index 4de9e17..2b08018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd202=['TEXT','exports'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xd202,0x1a3));var _0x2d20=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xd202[_0x138adb];return _0x1b27f2;};'use strict';var Sequelize=require('sequelize');module[_0x2d20('0x0')]={'tree':{'type':Sequelize[_0x2d20('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xd643=['sequelize','TEXT'];(function(_0x23c9f2,_0x1110db){var _0x4496b9=function(_0x1308fa){while(--_0x1308fa){_0x23c9f2['push'](_0x23c9f2['shift']());}};_0x4496b9(++_0x1110db);}(_0xd643,0x1ae));var _0x3d64=function(_0x3a4f3d,_0x1e54cc){_0x3a4f3d=_0x3a4f3d-0x0;var _0x44ecc7=_0xd643[_0x3a4f3d];return _0x44ecc7;};'use strict';var Sequelize=require(_0x3d64('0x0'));module['exports']={'tree':{'type':Sequelize[_0x3d64('0x1')],'allowNull':![]}};
\ No newline at end of file
index 4fe3e4a..21ea3a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cb6=['request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','destroy','end','stack','send','index','map','rawAttributes','fieldName','type','model','name','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','filters','pick','filter','merge','VIRTUAL','options','AnalyticTreeReport','then','include','findAll','rows','catch','show','keys','includeAll','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x3c80c6,_0x4f2fc4){var _0x3aa80c=function(_0x476f9e){while(--_0x476f9e){_0x3c80c6['push'](_0x3c80c6['shift']());}};_0x3aa80c(++_0x4f2fc4);}(_0x6cb6,0x173));var _0x66cb=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0x6cb6[_0xc6be3a];return _0x56a310;};'use strict';var emlformat=require(_0x66cb('0x0'));var rimraf=require(_0x66cb('0x1'));var zipdir=require(_0x66cb('0x2'));var jsonpatch=require(_0x66cb('0x3'));var rp=require(_0x66cb('0x4'));var moment=require(_0x66cb('0x5'));var BPromise=require(_0x66cb('0x6'));var Mustache=require(_0x66cb('0x7'));var util=require(_0x66cb('0x8'));var path=require(_0x66cb('0x9'));var sox=require('sox');var csv=require(_0x66cb('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x66cb('0xb'));var _=require(_0x66cb('0xc'));var squel=require(_0x66cb('0xd'));var crypto=require(_0x66cb('0xe'));var jsforce=require(_0x66cb('0xf'));var deskjs=require(_0x66cb('0x10'));var toCsv=require(_0x66cb('0xa'));var querystring=require(_0x66cb('0x11'));var Papa=require('papaparse');var Redis=require(_0x66cb('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x66cb('0x13'))(_0x66cb('0x14'));var utils=require(_0x66cb('0x15'));var config=require(_0x66cb('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x66cb('0x17'))['db'];function respondWithStatusCode(_0x2cd465,_0x237ee6){_0x237ee6=_0x237ee6||0xcc;return function(_0x36337d){if(_0x36337d){return _0x2cd465[_0x66cb('0x18')](_0x237ee6);}return _0x2cd465[_0x66cb('0x19')](_0x237ee6)['end']();};}function respondWithResult(_0x69c67e,_0x62f938){_0x62f938=_0x62f938||0xc8;return function(_0x23e0c1){if(_0x23e0c1){return _0x69c67e['status'](_0x62f938)[_0x66cb('0x1a')](_0x23e0c1);}};}function respondWithFilteredResult(_0x46aa95,_0x357194){return function(_0x925ed1){if(_0x925ed1){var _0x3433ba=typeof _0x357194[_0x66cb('0x1b')]==='undefined'&&typeof _0x357194[_0x66cb('0x1c')]===_0x66cb('0x1d');var _0x40c301=_0x925ed1[_0x66cb('0x1e')];var _0x378e88=_0x3433ba?0x0:_0x357194[_0x66cb('0x1b')];var _0x1a3ddc=_0x3433ba?_0x925ed1['count']:_0x357194['offset']+_0x357194[_0x66cb('0x1c')];var _0xdf40c5;if(_0x1a3ddc>=_0x40c301){_0x1a3ddc=_0x40c301;_0xdf40c5=0xc8;}else{_0xdf40c5=0xce;}_0x46aa95['status'](_0xdf40c5);return _0x46aa95['set'](_0x66cb('0x1f'),_0x378e88+'-'+_0x1a3ddc+'/'+_0x40c301)[_0x66cb('0x1a')](_0x925ed1);}return null;};}function patchUpdates(_0x4aeacc){return function(_0x3156ec){try{jsonpatch[_0x66cb('0x20')](_0x3156ec,_0x4aeacc,!![]);}catch(_0x3c7847){return BPromise[_0x66cb('0x21')](_0x3c7847);}return _0x3156ec[_0x66cb('0x22')]();};}function saveUpdates(_0x2bee37,_0x30bfa3){return function(_0x4fea05){if(_0x4fea05){return _0x4fea05[_0x66cb('0x23')](_0x2bee37)['then'](function(_0x5a78a7){return _0x5a78a7;});}return null;};}function removeEntity(_0x4ea913,_0x44db02){return function(_0x356062){if(_0x356062){return _0x356062[_0x66cb('0x24')]()['then'](function(){_0x4ea913[_0x66cb('0x19')](0xcc)[_0x66cb('0x25')]();});}};}function handleEntityNotFound(_0x3bb3df,_0x2b14c5){return function(_0x2fedc8){if(!_0x2fedc8){_0x3bb3df[_0x66cb('0x18')](0x194);}return _0x2fedc8;};}function handleError(_0xf3d153,_0x43c8b6){_0x43c8b6=_0x43c8b6||0x1f4;return function(_0x4cca1b){logger['error'](_0x4cca1b[_0x66cb('0x26')]);if(_0x4cca1b['name']){delete _0x4cca1b['name'];}_0xf3d153[_0x66cb('0x19')](_0x43c8b6)[_0x66cb('0x27')](_0x4cca1b);};}exports[_0x66cb('0x28')]=function(_0x2ec376,_0x10e8f0){var _0x144b46={},_0x6ff814={},_0x31fc7c={'count':0x0,'rows':[]};var _0x5f496f=_[_0x66cb('0x29')](db['AnalyticTreeReport'][_0x66cb('0x2a')],function(_0x327b91){return{'name':_0x327b91[_0x66cb('0x2b')],'type':_0x327b91[_0x66cb('0x2c')]['key']};});_0x6ff814[_0x66cb('0x2d')]=_[_0x66cb('0x29')](_0x5f496f,_0x66cb('0x2e'));_0x6ff814['query']=_['keys'](_0x2ec376[_0x66cb('0x2f')]);_0x6ff814['filters']=_[_0x66cb('0x30')](_0x6ff814[_0x66cb('0x2d')],_0x6ff814[_0x66cb('0x2f')]);_0x144b46['attributes']=_[_0x66cb('0x30')](_0x6ff814[_0x66cb('0x2d')],qs[_0x66cb('0x31')](_0x2ec376[_0x66cb('0x2f')][_0x66cb('0x31')]));_0x144b46[_0x66cb('0x32')]=_0x144b46[_0x66cb('0x32')][_0x66cb('0x33')]?_0x144b46[_0x66cb('0x32')]:_0x6ff814['model'];if(!_0x2ec376[_0x66cb('0x2f')][_0x66cb('0x34')](_0x66cb('0x35'))){_0x144b46[_0x66cb('0x1c')]=qs[_0x66cb('0x1c')](_0x2ec376[_0x66cb('0x2f')][_0x66cb('0x1c')]);_0x144b46['offset']=qs[_0x66cb('0x1b')](_0x2ec376[_0x66cb('0x2f')][_0x66cb('0x1b')]);}_0x144b46[_0x66cb('0x36')]=qs['sort'](_0x2ec376[_0x66cb('0x2f')]['sort']);_0x144b46[_0x66cb('0x37')]=qs[_0x66cb('0x38')](_[_0x66cb('0x39')](_0x2ec376[_0x66cb('0x2f')],_0x6ff814[_0x66cb('0x38')]),_0x5f496f);if(_0x2ec376[_0x66cb('0x2f')][_0x66cb('0x3a')]){_0x144b46['where']=_[_0x66cb('0x3b')](_0x144b46['where'],{'$or':_['map'](_0x5f496f,function(_0x4fe4ca){if(_0x4fe4ca[_0x66cb('0x2c')]!==_0x66cb('0x3c')){var _0x314096={};_0x314096[_0x4fe4ca[_0x66cb('0x2e')]]={'$like':'%'+_0x2ec376[_0x66cb('0x2f')][_0x66cb('0x3a')]+'%'};return _0x314096;}})});}_0x144b46=_['merge']({},_0x144b46,_0x2ec376[_0x66cb('0x3d')]);var _0x442aa0={'where':_0x144b46['where']};return db[_0x66cb('0x3e')]['count'](_0x442aa0)[_0x66cb('0x3f')](function(_0x1c209f){_0x31fc7c[_0x66cb('0x1e')]=_0x1c209f;if(_0x2ec376['query']['includeAll']){_0x144b46[_0x66cb('0x40')]=[{'all':!![]}];}return db[_0x66cb('0x3e')][_0x66cb('0x41')](_0x144b46);})[_0x66cb('0x3f')](function(_0x5e346c){_0x31fc7c[_0x66cb('0x42')]=_0x5e346c;return _0x31fc7c;})[_0x66cb('0x3f')](respondWithFilteredResult(_0x10e8f0,_0x144b46))[_0x66cb('0x43')](handleError(_0x10e8f0,null));};exports[_0x66cb('0x44')]=function(_0x413d02,_0x15a9cb){var _0x33a2e8={'raw':!![],'where':{'id':_0x413d02['params']['id']}},_0x4d7f92={};_0x4d7f92[_0x66cb('0x2d')]=_[_0x66cb('0x45')](db['AnalyticTreeReport'][_0x66cb('0x2a')]);_0x4d7f92[_0x66cb('0x2f')]=_[_0x66cb('0x45')](_0x413d02[_0x66cb('0x2f')]);_0x4d7f92[_0x66cb('0x38')]=_['intersection'](_0x4d7f92[_0x66cb('0x2d')],_0x4d7f92[_0x66cb('0x2f')]);_0x33a2e8[_0x66cb('0x32')]=_[_0x66cb('0x30')](_0x4d7f92[_0x66cb('0x2d')],qs['fields'](_0x413d02[_0x66cb('0x2f')][_0x66cb('0x31')]));_0x33a2e8[_0x66cb('0x32')]=_0x33a2e8['attributes'][_0x66cb('0x33')]?_0x33a2e8[_0x66cb('0x32')]:_0x4d7f92['model'];if(_0x413d02[_0x66cb('0x2f')][_0x66cb('0x46')]){_0x33a2e8[_0x66cb('0x40')]=[{'all':!![]}];}_0x33a2e8=_['merge']({},_0x33a2e8,_0x413d02[_0x66cb('0x3d')]);return db[_0x66cb('0x3e')][_0x66cb('0x47')](_0x33a2e8)[_0x66cb('0x3f')](handleEntityNotFound(_0x15a9cb,null))[_0x66cb('0x3f')](respondWithResult(_0x15a9cb,null))[_0x66cb('0x43')](handleError(_0x15a9cb,null));};exports[_0x66cb('0x48')]=function(_0x5ffe7e,_0x5b636e){return db[_0x66cb('0x3e')][_0x66cb('0x48')](_0x5ffe7e[_0x66cb('0x49')],{})[_0x66cb('0x3f')](respondWithResult(_0x5b636e,0xc9))[_0x66cb('0x43')](handleError(_0x5b636e,null));};exports['update']=function(_0x24b968,_0x5ada23){if(_0x24b968[_0x66cb('0x49')]['id']){delete _0x24b968[_0x66cb('0x49')]['id'];}return db['AnalyticTreeReport'][_0x66cb('0x47')]({'where':{'id':_0x24b968[_0x66cb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5ada23,null))['then'](saveUpdates(_0x24b968[_0x66cb('0x49')],null))[_0x66cb('0x3f')](respondWithResult(_0x5ada23,null))['catch'](handleError(_0x5ada23,null));};exports[_0x66cb('0x24')]=function(_0x35c269,_0x213a18){return db[_0x66cb('0x3e')][_0x66cb('0x47')]({'where':{'id':_0x35c269[_0x66cb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x213a18,null))[_0x66cb('0x3f')](removeEntity(_0x213a18,null))['catch'](handleError(_0x213a18,null));};
\ No newline at end of file
+var _0xaa0e=['intersection','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','options','includeAll','include','rows','show','params','find','catch','create','body','destroy','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','crypto','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','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','error','stack','name','index','map','AnalyticTreeReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes'];(function(_0x23af2c,_0x1f0ed3){var _0x4e6982=function(_0x586020){while(--_0x586020){_0x23af2c['push'](_0x23af2c['shift']());}};_0x4e6982(++_0x1f0ed3);}(_0xaa0e,0x139));var _0xeaa0=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xaa0e[_0x43d11d];return _0x38cd08;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xeaa0('0x0'));var zipdir=require(_0xeaa0('0x1'));var jsonpatch=require(_0xeaa0('0x2'));var rp=require(_0xeaa0('0x3'));var moment=require('moment');var BPromise=require(_0xeaa0('0x4'));var Mustache=require(_0xeaa0('0x5'));var util=require(_0xeaa0('0x6'));var path=require('path');var sox=require(_0xeaa0('0x7'));var csv=require(_0xeaa0('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xeaa0('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xeaa0('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xeaa0('0x8'));var querystring=require(_0xeaa0('0xb'));var Papa=require('papaparse');var Redis=require(_0xeaa0('0xc'));var authService=require(_0xeaa0('0xd'));var qs=require(_0xeaa0('0xe'));var as=require(_0xeaa0('0xf'));var hardwareService=require(_0xeaa0('0x10'));var logger=require(_0xeaa0('0x11'))(_0xeaa0('0x12'));var utils=require(_0xeaa0('0x13'));var config=require(_0xeaa0('0x14'));var licenseUtil=require(_0xeaa0('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e4a33,_0x177aa0){_0x177aa0=_0x177aa0||0xcc;return function(_0x3d9b6a){if(_0x3d9b6a){return _0x1e4a33[_0xeaa0('0x16')](_0x177aa0);}return _0x1e4a33[_0xeaa0('0x17')](_0x177aa0)[_0xeaa0('0x18')]();};}function respondWithResult(_0x5bde88,_0x3f2774){_0x3f2774=_0x3f2774||0xc8;return function(_0x47ca83){if(_0x47ca83){return _0x5bde88[_0xeaa0('0x17')](_0x3f2774)[_0xeaa0('0x19')](_0x47ca83);}};}function respondWithFilteredResult(_0x372f09,_0x8aa816){return function(_0x4aafcc){if(_0x4aafcc){var _0x4c60b3=typeof _0x8aa816[_0xeaa0('0x1a')]==='undefined'&&typeof _0x8aa816['limit']===_0xeaa0('0x1b');var _0x9869c3=_0x4aafcc['count'];var _0x1e6c1c=_0x4c60b3?0x0:_0x8aa816[_0xeaa0('0x1a')];var _0x109448=_0x4c60b3?_0x4aafcc[_0xeaa0('0x1c')]:_0x8aa816['offset']+_0x8aa816[_0xeaa0('0x1d')];var _0x1cc6d1;if(_0x109448>=_0x9869c3){_0x109448=_0x9869c3;_0x1cc6d1=0xc8;}else{_0x1cc6d1=0xce;}_0x372f09[_0xeaa0('0x17')](_0x1cc6d1);return _0x372f09[_0xeaa0('0x1e')](_0xeaa0('0x1f'),_0x1e6c1c+'-'+_0x109448+'/'+_0x9869c3)[_0xeaa0('0x19')](_0x4aafcc);}return null;};}function patchUpdates(_0x23f92c){return function(_0x4c7d2c){try{jsonpatch[_0xeaa0('0x20')](_0x4c7d2c,_0x23f92c,!![]);}catch(_0x1d3851){return BPromise[_0xeaa0('0x21')](_0x1d3851);}return _0x4c7d2c[_0xeaa0('0x22')]();};}function saveUpdates(_0x5933ad,_0x4aeee4){return function(_0x433bf0){if(_0x433bf0){return _0x433bf0[_0xeaa0('0x23')](_0x5933ad)[_0xeaa0('0x24')](function(_0x514467){return _0x514467;});}return null;};}function removeEntity(_0xb827c8,_0x18b783){return function(_0x4c50f8){if(_0x4c50f8){return _0x4c50f8['destroy']()[_0xeaa0('0x24')](function(){_0xb827c8[_0xeaa0('0x17')](0xcc)[_0xeaa0('0x18')]();});}};}function handleEntityNotFound(_0x5eaa7e,_0x486ce5){return function(_0x504d8c){if(!_0x504d8c){_0x5eaa7e[_0xeaa0('0x16')](0x194);}return _0x504d8c;};}function handleError(_0x84919a,_0x44e135){_0x44e135=_0x44e135||0x1f4;return function(_0x5809ec){logger[_0xeaa0('0x25')](_0x5809ec[_0xeaa0('0x26')]);if(_0x5809ec[_0xeaa0('0x27')]){delete _0x5809ec[_0xeaa0('0x27')];}_0x84919a[_0xeaa0('0x17')](_0x44e135)['send'](_0x5809ec);};}exports[_0xeaa0('0x28')]=function(_0x10c57e,_0x292296){var _0x41bf7b={},_0x33d821={},_0x465a1f={'count':0x0,'rows':[]};var _0x35b0af=_[_0xeaa0('0x29')](db[_0xeaa0('0x2a')][_0xeaa0('0x2b')],function(_0xffea96){return{'name':_0xffea96[_0xeaa0('0x2c')],'type':_0xffea96[_0xeaa0('0x2d')][_0xeaa0('0x2e')]};});_0x33d821[_0xeaa0('0x2f')]=_[_0xeaa0('0x29')](_0x35b0af,'name');_0x33d821[_0xeaa0('0x30')]=_[_0xeaa0('0x31')](_0x10c57e[_0xeaa0('0x30')]);_0x33d821[_0xeaa0('0x32')]=_['intersection'](_0x33d821[_0xeaa0('0x2f')],_0x33d821['query']);_0x41bf7b[_0xeaa0('0x33')]=_[_0xeaa0('0x34')](_0x33d821['model'],qs[_0xeaa0('0x35')](_0x10c57e[_0xeaa0('0x30')][_0xeaa0('0x35')]));_0x41bf7b['attributes']=_0x41bf7b[_0xeaa0('0x33')][_0xeaa0('0x36')]?_0x41bf7b[_0xeaa0('0x33')]:_0x33d821[_0xeaa0('0x2f')];if(!_0x10c57e['query'][_0xeaa0('0x37')](_0xeaa0('0x38'))){_0x41bf7b[_0xeaa0('0x1d')]=qs[_0xeaa0('0x1d')](_0x10c57e[_0xeaa0('0x30')][_0xeaa0('0x1d')]);_0x41bf7b[_0xeaa0('0x1a')]=qs[_0xeaa0('0x1a')](_0x10c57e[_0xeaa0('0x30')][_0xeaa0('0x1a')]);}_0x41bf7b[_0xeaa0('0x39')]=qs['sort'](_0x10c57e[_0xeaa0('0x30')]['sort']);_0x41bf7b[_0xeaa0('0x3a')]=qs[_0xeaa0('0x32')](_[_0xeaa0('0x3b')](_0x10c57e[_0xeaa0('0x30')],_0x33d821['filters']),_0x35b0af);if(_0x10c57e[_0xeaa0('0x30')][_0xeaa0('0x3c')]){_0x41bf7b['where']=_[_0xeaa0('0x3d')](_0x41bf7b['where'],{'$or':_[_0xeaa0('0x29')](_0x35b0af,function(_0x1802e2){if(_0x1802e2[_0xeaa0('0x2d')]!=='VIRTUAL'){var _0x32f4d6={};_0x32f4d6[_0x1802e2[_0xeaa0('0x27')]]={'$like':'%'+_0x10c57e['query'][_0xeaa0('0x3c')]+'%'};return _0x32f4d6;}})});}_0x41bf7b=_[_0xeaa0('0x3d')]({},_0x41bf7b,_0x10c57e[_0xeaa0('0x3e')]);var _0x42e0dc={'where':_0x41bf7b[_0xeaa0('0x3a')]};return db[_0xeaa0('0x2a')][_0xeaa0('0x1c')](_0x42e0dc)[_0xeaa0('0x24')](function(_0x3113b6){_0x465a1f['count']=_0x3113b6;if(_0x10c57e[_0xeaa0('0x30')][_0xeaa0('0x3f')]){_0x41bf7b[_0xeaa0('0x40')]=[{'all':!![]}];}return db['AnalyticTreeReport']['findAll'](_0x41bf7b);})[_0xeaa0('0x24')](function(_0xab7878){_0x465a1f[_0xeaa0('0x41')]=_0xab7878;return _0x465a1f;})['then'](respondWithFilteredResult(_0x292296,_0x41bf7b))['catch'](handleError(_0x292296,null));};exports[_0xeaa0('0x42')]=function(_0x40f984,_0x485b8f){var _0x56d331={'raw':!![],'where':{'id':_0x40f984[_0xeaa0('0x43')]['id']}},_0x46fb67={};_0x46fb67[_0xeaa0('0x2f')]=_[_0xeaa0('0x31')](db[_0xeaa0('0x2a')][_0xeaa0('0x2b')]);_0x46fb67[_0xeaa0('0x30')]=_[_0xeaa0('0x31')](_0x40f984['query']);_0x46fb67[_0xeaa0('0x32')]=_[_0xeaa0('0x34')](_0x46fb67[_0xeaa0('0x2f')],_0x46fb67[_0xeaa0('0x30')]);_0x56d331[_0xeaa0('0x33')]=_['intersection'](_0x46fb67['model'],qs[_0xeaa0('0x35')](_0x40f984[_0xeaa0('0x30')][_0xeaa0('0x35')]));_0x56d331[_0xeaa0('0x33')]=_0x56d331[_0xeaa0('0x33')]['length']?_0x56d331[_0xeaa0('0x33')]:_0x46fb67[_0xeaa0('0x2f')];if(_0x40f984[_0xeaa0('0x30')][_0xeaa0('0x3f')]){_0x56d331['include']=[{'all':!![]}];}_0x56d331=_[_0xeaa0('0x3d')]({},_0x56d331,_0x40f984['options']);return db['AnalyticTreeReport'][_0xeaa0('0x44')](_0x56d331)[_0xeaa0('0x24')](handleEntityNotFound(_0x485b8f,null))['then'](respondWithResult(_0x485b8f,null))[_0xeaa0('0x45')](handleError(_0x485b8f,null));};exports[_0xeaa0('0x46')]=function(_0x155062,_0xdcf879){return db[_0xeaa0('0x2a')]['create'](_0x155062[_0xeaa0('0x47')],{})[_0xeaa0('0x24')](respondWithResult(_0xdcf879,0xc9))[_0xeaa0('0x45')](handleError(_0xdcf879,null));};exports[_0xeaa0('0x23')]=function(_0x1dda27,_0x55ec78){if(_0x1dda27[_0xeaa0('0x47')]['id']){delete _0x1dda27[_0xeaa0('0x47')]['id'];}return db[_0xeaa0('0x2a')][_0xeaa0('0x44')]({'where':{'id':_0x1dda27['params']['id']}})[_0xeaa0('0x24')](handleEntityNotFound(_0x55ec78,null))[_0xeaa0('0x24')](saveUpdates(_0x1dda27[_0xeaa0('0x47')],null))[_0xeaa0('0x24')](respondWithResult(_0x55ec78,null))[_0xeaa0('0x45')](handleError(_0x55ec78,null));};exports[_0xeaa0('0x48')]=function(_0x1ac2df,_0x55165c){return db[_0xeaa0('0x2a')]['find']({'where':{'id':_0x1ac2df['params']['id']}})[_0xeaa0('0x24')](handleEntityNotFound(_0x55165c,null))['then'](removeEntity(_0x55165c,null))['catch'](handleError(_0x55165c,null));};
\ No newline at end of file
index 3cf6d0e..2be74c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8387=['define','analytics_report_trees','lodash','util','../../config/logger','api','moment','path','rimraf','./analyticTreeReport.attributes','exports'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x8387,0xb2));var _0x7838=function(_0x17cf73,_0x5b7789){_0x17cf73=_0x17cf73-0x0;var _0x27886f=_0x8387[_0x17cf73];return _0x27886f;};'use strict';var _=require(_0x7838('0x0'));var util=require(_0x7838('0x1'));var logger=require(_0x7838('0x2'))(_0x7838('0x3'));var moment=require(_0x7838('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7838('0x5'));var rimraf=require(_0x7838('0x6'));var config=require('../../config/environment');var attributes=require(_0x7838('0x7'));module[_0x7838('0x8')]=function(_0x4aa9d1,_0x2d8b33){return _0x4aa9d1[_0x7838('0x9')]('AnalyticTreeReport',attributes,{'tableName':_0x7838('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8bf1=['path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define','AnalyticTreeReport','analytics_report_trees','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x48ac40,_0x1e3beb){var _0x55df02=function(_0x5e27d6){while(--_0x5e27d6){_0x48ac40['push'](_0x48ac40['shift']());}};_0x55df02(++_0x1e3beb);}(_0x8bf1,0x19e));var _0x18bf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8bf1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x18bf('0x0'));var util=require(_0x18bf('0x1'));var logger=require(_0x18bf('0x2'))(_0x18bf('0x3'));var moment=require('moment');var BPromise=require(_0x18bf('0x4'));var rp=require(_0x18bf('0x5'));var fs=require('fs');var path=require(_0x18bf('0x6'));var rimraf=require(_0x18bf('0x7'));var config=require(_0x18bf('0x8'));var attributes=require(_0x18bf('0x9'));module[_0x18bf('0xa')]=function(_0x43b1d7,_0x201da2){return _0x43b1d7[_0x18bf('0xb')](_0x18bf('0xc'),attributes,{'tableName':_0x18bf('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 036c581..3c73d4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x4ec328,_0x31e00c){var _0x565272=function(_0x8839a8){while(--_0x8839a8){_0x4ec328['push'](_0x4ec328['shift']());}};_0x565272(++_0x31e00c);}(_0x2ef3,0xba));var _0x32ef=function(_0x3ec0bc,_0x26e626){_0x3ec0bc=_0x3ec0bc-0x0;var _0x3311d8=_0x2ef3[_0x3ec0bc];return _0x3311d8;};'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')]('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
+var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x1ee7a7,_0x2478b0){var _0x291a52=function(_0x54718c){while(--_0x54718c){_0x1ee7a7['push'](_0x1ee7a7['shift']());}};_0x291a52(++_0x2478b0);}(_0x2ef3,0xba));var _0x32ef=function(_0x4b30bf,_0x57d6a6){_0x4b30bf=_0x4b30bf-0x0;var _0x18dd3c=_0x2ef3[_0x4b30bf];return _0x18dd3c;};'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')]('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
index 407aa6f..428e2bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdda1=['get','isAuthenticated','index','/:id','post','create','update','delete','exports','multer','util','fs-extra','../../components/interaction/service','./analyticTreeReport.controller'];(function(_0x3b1b23,_0x21bccd){var _0x1efc85=function(_0x102a95){while(--_0x102a95){_0x3b1b23['push'](_0x3b1b23['shift']());}};_0x1efc85(++_0x21bccd);}(_0xdda1,0x159));var _0x1dda=function(_0x5b3c26,_0x128353){_0x5b3c26=_0x5b3c26-0x0;var _0x252107=_0xdda1[_0x5b3c26];return _0x252107;};'use strict';var multer=require(_0x1dda('0x0'));var util=require(_0x1dda('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x1dda('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x1dda('0x3'));var config=require('../../config/environment');var controller=require(_0x1dda('0x4'));router[_0x1dda('0x5')]('/',auth[_0x1dda('0x6')](),controller[_0x1dda('0x7')]);router[_0x1dda('0x5')](_0x1dda('0x8'),auth[_0x1dda('0x6')](),controller['show']);router[_0x1dda('0x9')]('/',auth[_0x1dda('0x6')](),controller[_0x1dda('0xa')]);router['put'](_0x1dda('0x8'),auth[_0x1dda('0x6')](),controller[_0x1dda('0xb')]);router[_0x1dda('0xc')](_0x1dda('0x8'),auth['isAuthenticated'](),controller['destroy']);module[_0x1dda('0xd')]=router;
\ No newline at end of file
+var _0x5c6a=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticTreeReport.controller','isAuthenticated','show','/:id','update','delete','destroy','exports','multer','util'];(function(_0x177ea4,_0x5da123){var _0x34dbc7=function(_0x5b4426){while(--_0x5b4426){_0x177ea4['push'](_0x177ea4['shift']());}};_0x34dbc7(++_0x5da123);}(_0x5c6a,0x18e));var _0xa5c6=function(_0x26fa9b,_0x5992e2){_0x26fa9b=_0x26fa9b-0x0;var _0x1ab7df=_0x5c6a[_0x26fa9b];return _0x1ab7df;};'use strict';var multer=require(_0xa5c6('0x0'));var util=require(_0xa5c6('0x1'));var path=require(_0xa5c6('0x2'));var timeout=require(_0xa5c6('0x3'));var express=require('express');var router=express[_0xa5c6('0x4')]();var fs_extra=require(_0xa5c6('0x5'));var auth=require(_0xa5c6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa5c6('0x7'));var controller=require(_0xa5c6('0x8'));router['get']('/',auth[_0xa5c6('0x9')](),controller['index']);router['get']('/:id',auth[_0xa5c6('0x9')](),controller[_0xa5c6('0xa')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xa5c6('0xb'),auth['isAuthenticated'](),controller[_0xa5c6('0xc')]);router[_0xa5c6('0xd')](_0xa5c6('0xb'),auth[_0xa5c6('0x9')](),controller[_0xa5c6('0xe')]);module[_0xa5c6('0xf')]=router;
\ No newline at end of file
index 810a4c9..3fe3477 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe06f=['exports','STRING','sequelize'];(function(_0x2d525e,_0x301d21){var _0x1b04d0=function(_0x402b43){while(--_0x402b43){_0x2d525e['push'](_0x2d525e['shift']());}};_0x1b04d0(++_0x301d21);}(_0xe06f,0x65));var _0xfe06=function(_0x58a4c0,_0x115e58){_0x58a4c0=_0x58a4c0-0x0;var _0x47f355=_0xe06f[_0x58a4c0];return _0x47f355;};'use strict';var Sequelize=require(_0xfe06('0x0'));module[_0xfe06('0x1')]={'name':{'type':Sequelize['STRING']},'basename':{'type':Sequelize[_0xfe06('0x2')]},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xdd0c=['STRING','exports'];(function(_0x1fb7d1,_0x108781){var _0x2480d8=function(_0x9bc3d9){while(--_0x9bc3d9){_0x1fb7d1['push'](_0x1fb7d1['shift']());}};_0x2480d8(++_0x108781);}(_0xdd0c,0x165));var _0xcdd0=function(_0x2bb307,_0x393f95){_0x2bb307=_0x2bb307-0x0;var _0x1efad6=_0xdd0c[_0x2bb307];return _0x1efad6;};'use strict';var Sequelize=require('sequelize');module[_0xcdd0('0x0')]={'name':{'type':Sequelize[_0xcdd0('0x1')]},'basename':{'type':Sequelize[_0xcdd0('0x1')]},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
index cafbf0a..2472b0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc92=['VIRTUAL','options','include','rows','catch','params','keys','includeAll','find','clone','get','omit','createdAt','updatedAt','body','create','file','originalname','basename','filename','download','findOne','ChatOfflineMessageId','root','server/files/attachments/','join','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../config/license/hardware','../../config/utils','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','destroy','then','error','name','send','index','map','Attachment','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x44cb92,_0x59afa3){var _0x56b9e6=function(_0x2841e0){while(--_0x2841e0){_0x44cb92['push'](_0x44cb92['shift']());}};_0x56b9e6(++_0x59afa3);}(_0xfc92,0x11c));var _0x2fc9=function(_0x4d2f00,_0x4e94d5){_0x4d2f00=_0x4d2f00-0x0;var _0x2d7b7f=_0xfc92[_0x4d2f00];return _0x2d7b7f;};'use strict';var emlformat=require(_0x2fc9('0x0'));var rimraf=require(_0x2fc9('0x1'));var zipdir=require(_0x2fc9('0x2'));var jsonpatch=require(_0x2fc9('0x3'));var rp=require(_0x2fc9('0x4'));var moment=require(_0x2fc9('0x5'));var BPromise=require(_0x2fc9('0x6'));var Mustache=require(_0x2fc9('0x7'));var util=require('util');var path=require(_0x2fc9('0x8'));var sox=require(_0x2fc9('0x9'));var csv=require('to-csv');var ejs=require(_0x2fc9('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x2fc9('0xb'));var crypto=require(_0x2fc9('0xc'));var jsforce=require(_0x2fc9('0xd'));var deskjs=require(_0x2fc9('0xe'));var toCsv=require(_0x2fc9('0xf'));var querystring=require('querystring');var Papa=require(_0x2fc9('0x10'));var Redis=require(_0x2fc9('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2fc9('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x2fc9('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2fc9('0x14'))['db'];function respondWithStatusCode(_0x44a6ea,_0x10f846){_0x10f846=_0x10f846||0xcc;return function(_0x15abfd){if(_0x15abfd){return _0x44a6ea[_0x2fc9('0x15')](_0x10f846);}return _0x44a6ea[_0x2fc9('0x16')](_0x10f846)['end']();};}function respondWithResult(_0x2e27b3,_0x5087b2){_0x5087b2=_0x5087b2||0xc8;return function(_0x581e1c){if(_0x581e1c){return _0x2e27b3['status'](_0x5087b2)[_0x2fc9('0x17')](_0x581e1c);}};}function respondWithFilteredResult(_0x585a4a,_0x196234){return function(_0x3d23b2){if(_0x3d23b2){var _0x28a365=typeof _0x196234[_0x2fc9('0x18')]==='undefined'&&typeof _0x196234[_0x2fc9('0x19')]===_0x2fc9('0x1a');var _0x410d74=_0x3d23b2[_0x2fc9('0x1b')];var _0x34d44d=_0x28a365?0x0:_0x196234[_0x2fc9('0x18')];var _0x5635ca=_0x28a365?_0x3d23b2[_0x2fc9('0x1b')]:_0x196234['offset']+_0x196234[_0x2fc9('0x19')];var _0x1c1ef6;if(_0x5635ca>=_0x410d74){_0x5635ca=_0x410d74;_0x1c1ef6=0xc8;}else{_0x1c1ef6=0xce;}_0x585a4a[_0x2fc9('0x16')](_0x1c1ef6);return _0x585a4a[_0x2fc9('0x1c')](_0x2fc9('0x1d'),_0x34d44d+'-'+_0x5635ca+'/'+_0x410d74)['json'](_0x3d23b2);}return null;};}function patchUpdates(_0x25c8ca){return function(_0x2176a0){try{jsonpatch[_0x2fc9('0x1e')](_0x2176a0,_0x25c8ca,!![]);}catch(_0x1e5f5b){return BPromise[_0x2fc9('0x1f')](_0x1e5f5b);}return _0x2176a0['save']();};}function saveUpdates(_0x52d805,_0x1d3c5b){return function(_0x4bcb71){if(_0x4bcb71){return _0x4bcb71[_0x2fc9('0x20')](_0x52d805)['then'](function(_0x4ecdb5){return _0x4ecdb5;});}return null;};}function removeEntity(_0x1562af,_0x2e8b5e){return function(_0x180a51){if(_0x180a51){return _0x180a51[_0x2fc9('0x21')]()[_0x2fc9('0x22')](function(){_0x1562af[_0x2fc9('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3dbe9f,_0x209999){return function(_0x1e93d3){if(!_0x1e93d3){_0x3dbe9f[_0x2fc9('0x15')](0x194);}return _0x1e93d3;};}function handleError(_0x68daff,_0x14d235){_0x14d235=_0x14d235||0x1f4;return function(_0x116b0d){logger[_0x2fc9('0x23')](_0x116b0d['stack']);if(_0x116b0d[_0x2fc9('0x24')]){delete _0x116b0d[_0x2fc9('0x24')];}_0x68daff[_0x2fc9('0x16')](_0x14d235)[_0x2fc9('0x25')](_0x116b0d);};}exports[_0x2fc9('0x26')]=function(_0xe71a96,_0x4e4230){var _0x5548d6={},_0x180587={},_0x6252d8={'count':0x0,'rows':[]};var _0x4da788=_[_0x2fc9('0x27')](db[_0x2fc9('0x28')][_0x2fc9('0x29')],function(_0x3b62b6){return{'name':_0x3b62b6[_0x2fc9('0x2a')],'type':_0x3b62b6[_0x2fc9('0x2b')][_0x2fc9('0x2c')]};});_0x180587['model']=_[_0x2fc9('0x27')](_0x4da788,_0x2fc9('0x24'));_0x180587[_0x2fc9('0x2d')]=_['keys'](_0xe71a96[_0x2fc9('0x2d')]);_0x180587[_0x2fc9('0x2e')]=_[_0x2fc9('0x2f')](_0x180587[_0x2fc9('0x30')],_0x180587['query']);_0x5548d6[_0x2fc9('0x31')]=_[_0x2fc9('0x2f')](_0x180587[_0x2fc9('0x30')],qs[_0x2fc9('0x32')](_0xe71a96['query'][_0x2fc9('0x32')]));_0x5548d6['attributes']=_0x5548d6[_0x2fc9('0x31')][_0x2fc9('0x33')]?_0x5548d6['attributes']:_0x180587['model'];if(!_0xe71a96['query'][_0x2fc9('0x34')](_0x2fc9('0x35'))){_0x5548d6['limit']=qs[_0x2fc9('0x19')](_0xe71a96[_0x2fc9('0x2d')][_0x2fc9('0x19')]);_0x5548d6[_0x2fc9('0x18')]=qs[_0x2fc9('0x18')](_0xe71a96[_0x2fc9('0x2d')]['offset']);}_0x5548d6[_0x2fc9('0x36')]=qs[_0x2fc9('0x37')](_0xe71a96[_0x2fc9('0x2d')][_0x2fc9('0x37')]);_0x5548d6[_0x2fc9('0x38')]=qs['filters'](_[_0x2fc9('0x39')](_0xe71a96[_0x2fc9('0x2d')],_0x180587[_0x2fc9('0x2e')]),_0x4da788);if(_0xe71a96['query'][_0x2fc9('0x3a')]){_0x5548d6[_0x2fc9('0x38')]=_[_0x2fc9('0x3b')](_0x5548d6[_0x2fc9('0x38')],{'$or':_[_0x2fc9('0x27')](_0x4da788,function(_0x2c6af6){if(_0x2c6af6[_0x2fc9('0x2b')]!==_0x2fc9('0x3c')){var _0x1cb6bc={};_0x1cb6bc[_0x2c6af6[_0x2fc9('0x24')]]={'$like':'%'+_0xe71a96[_0x2fc9('0x2d')]['filter']+'%'};return _0x1cb6bc;}})});}_0x5548d6=_[_0x2fc9('0x3b')]({},_0x5548d6,_0xe71a96[_0x2fc9('0x3d')]);var _0x38cf6e={'where':_0x5548d6[_0x2fc9('0x38')]};return db['Attachment'][_0x2fc9('0x1b')](_0x38cf6e)['then'](function(_0x469a90){_0x6252d8[_0x2fc9('0x1b')]=_0x469a90;if(_0xe71a96['query']['includeAll']){_0x5548d6[_0x2fc9('0x3e')]=[{'all':!![]}];}return db[_0x2fc9('0x28')]['findAll'](_0x5548d6);})['then'](function(_0x2d2205){_0x6252d8[_0x2fc9('0x3f')]=_0x2d2205;return _0x6252d8;})[_0x2fc9('0x22')](respondWithFilteredResult(_0x4e4230,_0x5548d6))[_0x2fc9('0x40')](handleError(_0x4e4230,null));};exports['show']=function(_0x24c606,_0x31d229){var _0x3915d1={'raw':!![],'where':{'id':_0x24c606[_0x2fc9('0x41')]['id']}},_0x5f286f={};_0x5f286f[_0x2fc9('0x30')]=_[_0x2fc9('0x42')](db['Attachment'][_0x2fc9('0x29')]);_0x5f286f['query']=_[_0x2fc9('0x42')](_0x24c606[_0x2fc9('0x2d')]);_0x5f286f['filters']=_[_0x2fc9('0x2f')](_0x5f286f[_0x2fc9('0x30')],_0x5f286f[_0x2fc9('0x2d')]);_0x3915d1['attributes']=_[_0x2fc9('0x2f')](_0x5f286f[_0x2fc9('0x30')],qs[_0x2fc9('0x32')](_0x24c606[_0x2fc9('0x2d')][_0x2fc9('0x32')]));_0x3915d1[_0x2fc9('0x31')]=_0x3915d1[_0x2fc9('0x31')][_0x2fc9('0x33')]?_0x3915d1[_0x2fc9('0x31')]:_0x5f286f['model'];if(_0x24c606[_0x2fc9('0x2d')][_0x2fc9('0x43')]){_0x3915d1[_0x2fc9('0x3e')]=[{'all':!![]}];}_0x3915d1=_['merge']({},_0x3915d1,_0x24c606[_0x2fc9('0x3d')]);return db[_0x2fc9('0x28')][_0x2fc9('0x44')](_0x3915d1)[_0x2fc9('0x22')](handleEntityNotFound(_0x31d229,null))[_0x2fc9('0x22')](respondWithResult(_0x31d229,null))[_0x2fc9('0x40')](handleError(_0x31d229,null));};exports[_0x2fc9('0x45')]=function(_0x177faa,_0x38829f){var _0x34cb65={'where':{'id':_0x177faa['params']['id']}},_0xf0b960={};_0xf0b960[_0x2fc9('0x30')]=_['keys'](db['Attachment']['rawAttributes']);_0x34cb65[_0x2fc9('0x31')]=_['intersection'](_0xf0b960[_0x2fc9('0x30')],qs['fields'](_0x177faa['query'][_0x2fc9('0x32')]));_0x34cb65[_0x2fc9('0x31')]=_0x34cb65[_0x2fc9('0x31')][_0x2fc9('0x33')]?_0x34cb65[_0x2fc9('0x31')]:_0xf0b960['model'];if(_0x177faa[_0x2fc9('0x2d')][_0x2fc9('0x43')]){_0x34cb65[_0x2fc9('0x3e')]=[{'all':!![]}];}_0x34cb65=_[_0x2fc9('0x3b')]({},_0x34cb65,_0x177faa['options']);return db[_0x2fc9('0x28')]['find'](_0x34cb65)[_0x2fc9('0x22')](handleEntityNotFound(_0x38829f,null))[_0x2fc9('0x22')](function(_0x3fa924){if(_0x3fa924){var _0x2cdce3=_0x3fa924[_0x2fc9('0x46')]({'plain':!![]});_0x2cdce3=qs[_0x2fc9('0x47')](_0x2cdce3,['id',_0x2fc9('0x48'),_0x2fc9('0x49')]);_0x177faa['body']=_[_0x2fc9('0x47')](_0x177faa[_0x2fc9('0x4a')],['id','createdAt',_0x2fc9('0x49')]);return db[_0x2fc9('0x28')][_0x2fc9('0x4b')](_['merge'](_0x2cdce3,_0x177faa[_0x2fc9('0x4a')]),{'include':_0x177faa[_0x2fc9('0x2d')]['includeAll']?[{'all':!![]}]:undefined});}})[_0x2fc9('0x22')](respondWithResult(_0x38829f,0xc9))[_0x2fc9('0x40')](handleError(_0x38829f,null));};exports[_0x2fc9('0x20')]=function(_0x82c0b3,_0x43bafd){if(_0x82c0b3[_0x2fc9('0x4a')]['id']){delete _0x82c0b3['body']['id'];}return db[_0x2fc9('0x28')][_0x2fc9('0x44')]({'where':{'id':_0x82c0b3[_0x2fc9('0x41')]['id']}})['then'](handleEntityNotFound(_0x43bafd,null))[_0x2fc9('0x22')](saveUpdates(_0x82c0b3[_0x2fc9('0x4a')],null))[_0x2fc9('0x22')](respondWithResult(_0x43bafd,null))[_0x2fc9('0x40')](handleError(_0x43bafd,null));};exports[_0x2fc9('0x21')]=function(_0x1bd984,_0x10cca7){return db[_0x2fc9('0x28')][_0x2fc9('0x44')]({'where':{'id':_0x1bd984[_0x2fc9('0x41')]['id']}})[_0x2fc9('0x22')](handleEntityNotFound(_0x10cca7,null))['then'](removeEntity(_0x10cca7,null))[_0x2fc9('0x40')](handleError(_0x10cca7,null));};exports[_0x2fc9('0x4b')]=function(_0x1418cf,_0x50a5f3,_0x20a51a){_0x1418cf[_0x2fc9('0x4a')]['name']=_0x1418cf[_0x2fc9('0x4c')][_0x2fc9('0x4d')];_0x1418cf[_0x2fc9('0x4a')][_0x2fc9('0x4e')]=_0x1418cf[_0x2fc9('0x4c')][_0x2fc9('0x4f')];_0x1418cf[_0x2fc9('0x4a')]['type']=_0x1418cf[_0x2fc9('0x4c')]['mimetype'];return db['Attachment'][_0x2fc9('0x4b')](_0x1418cf[_0x2fc9('0x4a')])[_0x2fc9('0x22')](respondWithResult(_0x50a5f3,0xc9))['catch'](handleError(_0x50a5f3,null));};exports[_0x2fc9('0x50')]=function(_0x2ce5de,_0x1ee32f,_0x52b7bc){return db[_0x2fc9('0x28')][_0x2fc9('0x51')]({'where':{'id':_0x2ce5de[_0x2fc9('0x41')]['id']},'raw':!![]})[_0x2fc9('0x22')](handleEntityNotFound(_0x1ee32f,null))[_0x2fc9('0x22')](function(_0x210186){if(_0x210186){var _0x44736e=_0x210186[_0x2fc9('0x52')]!==null;var _0xddca8c=path['join'](config[_0x2fc9('0x53')],_0x2fc9('0x54'));if(_0x44736e){_0xddca8c=path[_0x2fc9('0x55')](_0xddca8c,'offline-chat/');}var _0x4c6fce=path['join'](_0xddca8c,_0x210186[_0x2fc9('0x4e')]);return _0x1ee32f[_0x2fc9('0x50')](_0x4c6fce);}})[_0x2fc9('0x40')](handleError(_0x1ee32f,null));};
\ No newline at end of file
+var _0x7b0a=['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/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','sendStatus','error','stack','send','map','Attachment','rawAttributes','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','options','includeAll','findAll','rows','catch','show','params','keys','clone','include','find','omit','createdAt','updatedAt','body','update','destroy','name','file','originalname','filename','create','download','ChatOfflineMessageId','join','server/files/attachments/','offline-chat/','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x7b0a,0x10b));var _0xa7b0=function(_0x6d643c,_0x3fa775){_0x6d643c=_0x6d643c-0x0;var _0x183c56=_0x7b0a[_0x6d643c];return _0x183c56;};'use strict';var emlformat=require(_0xa7b0('0x0'));var rimraf=require(_0xa7b0('0x1'));var zipdir=require(_0xa7b0('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa7b0('0x3'));var moment=require(_0xa7b0('0x4'));var BPromise=require(_0xa7b0('0x5'));var Mustache=require(_0xa7b0('0x6'));var util=require(_0xa7b0('0x7'));var path=require(_0xa7b0('0x8'));var sox=require(_0xa7b0('0x9'));var csv=require(_0xa7b0('0xa'));var ejs=require(_0xa7b0('0xb'));var fs=require('fs');var fs_extra=require(_0xa7b0('0xc'));var _=require(_0xa7b0('0xd'));var squel=require(_0xa7b0('0xe'));var crypto=require(_0xa7b0('0xf'));var jsforce=require(_0xa7b0('0x10'));var deskjs=require(_0xa7b0('0x11'));var toCsv=require(_0xa7b0('0xa'));var querystring=require(_0xa7b0('0x12'));var Papa=require(_0xa7b0('0x13'));var Redis=require(_0xa7b0('0x14'));var authService=require(_0xa7b0('0x15'));var qs=require(_0xa7b0('0x16'));var as=require(_0xa7b0('0x17'));var hardwareService=require(_0xa7b0('0x18'));var logger=require('../../config/logger')(_0xa7b0('0x19'));var utils=require('../../config/utils');var config=require(_0xa7b0('0x1a'));var licenseUtil=require(_0xa7b0('0x1b'));var db=require(_0xa7b0('0x1c'))['db'];function respondWithStatusCode(_0xabd2d,_0x53e324){_0x53e324=_0x53e324||0xcc;return function(_0xda5217){if(_0xda5217){return _0xabd2d['sendStatus'](_0x53e324);}return _0xabd2d[_0xa7b0('0x1d')](_0x53e324)[_0xa7b0('0x1e')]();};}function respondWithResult(_0x2b137d,_0x4bef89){_0x4bef89=_0x4bef89||0xc8;return function(_0xd3005f){if(_0xd3005f){return _0x2b137d[_0xa7b0('0x1d')](_0x4bef89)[_0xa7b0('0x1f')](_0xd3005f);}};}function respondWithFilteredResult(_0x2f5299,_0x5d5d4e){return function(_0x319692){if(_0x319692){var _0x21e517=typeof _0x5d5d4e[_0xa7b0('0x20')]===_0xa7b0('0x21')&&typeof _0x5d5d4e[_0xa7b0('0x22')]===_0xa7b0('0x21');var _0xcd279e=_0x319692[_0xa7b0('0x23')];var _0x3a1c47=_0x21e517?0x0:_0x5d5d4e['offset'];var _0x163f31=_0x21e517?_0x319692['count']:_0x5d5d4e[_0xa7b0('0x20')]+_0x5d5d4e[_0xa7b0('0x22')];var _0x5e4b06;if(_0x163f31>=_0xcd279e){_0x163f31=_0xcd279e;_0x5e4b06=0xc8;}else{_0x5e4b06=0xce;}_0x2f5299['status'](_0x5e4b06);return _0x2f5299[_0xa7b0('0x24')](_0xa7b0('0x25'),_0x3a1c47+'-'+_0x163f31+'/'+_0xcd279e)[_0xa7b0('0x1f')](_0x319692);}return null;};}function patchUpdates(_0xfc549e){return function(_0x5455e2){try{jsonpatch[_0xa7b0('0x26')](_0x5455e2,_0xfc549e,!![]);}catch(_0x31b0d3){return BPromise[_0xa7b0('0x27')](_0x31b0d3);}return _0x5455e2[_0xa7b0('0x28')]();};}function saveUpdates(_0x1efba9,_0xb897ba){return function(_0x1ef238){if(_0x1ef238){return _0x1ef238['update'](_0x1efba9)[_0xa7b0('0x29')](function(_0xa46f4e){return _0xa46f4e;});}return null;};}function removeEntity(_0x4ba246,_0x5b5692){return function(_0x4af407){if(_0x4af407){return _0x4af407['destroy']()['then'](function(){_0x4ba246['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1bf03c,_0x37e63c){return function(_0x18a599){if(!_0x18a599){_0x1bf03c[_0xa7b0('0x2a')](0x194);}return _0x18a599;};}function handleError(_0x5cc75d,_0x1d4af3){_0x1d4af3=_0x1d4af3||0x1f4;return function(_0x4f1565){logger[_0xa7b0('0x2b')](_0x4f1565[_0xa7b0('0x2c')]);if(_0x4f1565['name']){delete _0x4f1565['name'];}_0x5cc75d[_0xa7b0('0x1d')](_0x1d4af3)[_0xa7b0('0x2d')](_0x4f1565);};}exports['index']=function(_0x13c888,_0x258084){var _0x4b7526={},_0x4e919e={},_0x3e665b={'count':0x0,'rows':[]};var _0x24f2e5=_[_0xa7b0('0x2e')](db[_0xa7b0('0x2f')][_0xa7b0('0x30')],function(_0x32a142){return{'name':_0x32a142['fieldName'],'type':_0x32a142[_0xa7b0('0x31')][_0xa7b0('0x32')]};});_0x4e919e['model']=_[_0xa7b0('0x2e')](_0x24f2e5,'name');_0x4e919e[_0xa7b0('0x33')]=_['keys'](_0x13c888[_0xa7b0('0x33')]);_0x4e919e[_0xa7b0('0x34')]=_[_0xa7b0('0x35')](_0x4e919e[_0xa7b0('0x36')],_0x4e919e[_0xa7b0('0x33')]);_0x4b7526[_0xa7b0('0x37')]=_['intersection'](_0x4e919e[_0xa7b0('0x36')],qs['fields'](_0x13c888['query'][_0xa7b0('0x38')]));_0x4b7526['attributes']=_0x4b7526['attributes'][_0xa7b0('0x39')]?_0x4b7526[_0xa7b0('0x37')]:_0x4e919e[_0xa7b0('0x36')];if(!_0x13c888[_0xa7b0('0x33')][_0xa7b0('0x3a')](_0xa7b0('0x3b'))){_0x4b7526[_0xa7b0('0x22')]=qs[_0xa7b0('0x22')](_0x13c888[_0xa7b0('0x33')][_0xa7b0('0x22')]);_0x4b7526[_0xa7b0('0x20')]=qs[_0xa7b0('0x20')](_0x13c888['query']['offset']);}_0x4b7526['order']=qs[_0xa7b0('0x3c')](_0x13c888['query']['sort']);_0x4b7526[_0xa7b0('0x3d')]=qs['filters'](_[_0xa7b0('0x3e')](_0x13c888['query'],_0x4e919e[_0xa7b0('0x34')]),_0x24f2e5);if(_0x13c888[_0xa7b0('0x33')]['filter']){_0x4b7526['where']=_[_0xa7b0('0x3f')](_0x4b7526['where'],{'$or':_['map'](_0x24f2e5,function(_0x45d32e){if(_0x45d32e['type']!=='VIRTUAL'){var _0x5b4277={};_0x5b4277[_0x45d32e['name']]={'$like':'%'+_0x13c888[_0xa7b0('0x33')][_0xa7b0('0x40')]+'%'};return _0x5b4277;}})});}_0x4b7526=_[_0xa7b0('0x3f')]({},_0x4b7526,_0x13c888[_0xa7b0('0x41')]);var _0x48aefc={'where':_0x4b7526[_0xa7b0('0x3d')]};return db[_0xa7b0('0x2f')][_0xa7b0('0x23')](_0x48aefc)[_0xa7b0('0x29')](function(_0x5e71e8){_0x3e665b['count']=_0x5e71e8;if(_0x13c888[_0xa7b0('0x33')][_0xa7b0('0x42')]){_0x4b7526['include']=[{'all':!![]}];}return db[_0xa7b0('0x2f')][_0xa7b0('0x43')](_0x4b7526);})[_0xa7b0('0x29')](function(_0x1de506){_0x3e665b[_0xa7b0('0x44')]=_0x1de506;return _0x3e665b;})[_0xa7b0('0x29')](respondWithFilteredResult(_0x258084,_0x4b7526))[_0xa7b0('0x45')](handleError(_0x258084,null));};exports[_0xa7b0('0x46')]=function(_0x5557f4,_0x21fbae){var _0x583785={'raw':!![],'where':{'id':_0x5557f4[_0xa7b0('0x47')]['id']}},_0x224322={};_0x224322[_0xa7b0('0x36')]=_[_0xa7b0('0x48')](db[_0xa7b0('0x2f')][_0xa7b0('0x30')]);_0x224322[_0xa7b0('0x33')]=_[_0xa7b0('0x48')](_0x5557f4['query']);_0x224322['filters']=_[_0xa7b0('0x35')](_0x224322['model'],_0x224322[_0xa7b0('0x33')]);_0x583785[_0xa7b0('0x37')]=_[_0xa7b0('0x35')](_0x224322['model'],qs[_0xa7b0('0x38')](_0x5557f4[_0xa7b0('0x33')][_0xa7b0('0x38')]));_0x583785[_0xa7b0('0x37')]=_0x583785[_0xa7b0('0x37')][_0xa7b0('0x39')]?_0x583785['attributes']:_0x224322[_0xa7b0('0x36')];if(_0x5557f4[_0xa7b0('0x33')][_0xa7b0('0x42')]){_0x583785['include']=[{'all':!![]}];}_0x583785=_[_0xa7b0('0x3f')]({},_0x583785,_0x5557f4[_0xa7b0('0x41')]);return db[_0xa7b0('0x2f')]['find'](_0x583785)['then'](handleEntityNotFound(_0x21fbae,null))['then'](respondWithResult(_0x21fbae,null))[_0xa7b0('0x45')](handleError(_0x21fbae,null));};exports[_0xa7b0('0x49')]=function(_0x1954b2,_0x4e2017){var _0xb7919b={'where':{'id':_0x1954b2[_0xa7b0('0x47')]['id']}},_0xf136c={};_0xf136c[_0xa7b0('0x36')]=_[_0xa7b0('0x48')](db[_0xa7b0('0x2f')][_0xa7b0('0x30')]);_0xb7919b[_0xa7b0('0x37')]=_['intersection'](_0xf136c[_0xa7b0('0x36')],qs[_0xa7b0('0x38')](_0x1954b2[_0xa7b0('0x33')][_0xa7b0('0x38')]));_0xb7919b[_0xa7b0('0x37')]=_0xb7919b[_0xa7b0('0x37')][_0xa7b0('0x39')]?_0xb7919b['attributes']:_0xf136c[_0xa7b0('0x36')];if(_0x1954b2[_0xa7b0('0x33')][_0xa7b0('0x42')]){_0xb7919b[_0xa7b0('0x4a')]=[{'all':!![]}];}_0xb7919b=_[_0xa7b0('0x3f')]({},_0xb7919b,_0x1954b2['options']);return db[_0xa7b0('0x2f')][_0xa7b0('0x4b')](_0xb7919b)[_0xa7b0('0x29')](handleEntityNotFound(_0x4e2017,null))[_0xa7b0('0x29')](function(_0x36f9ea){if(_0x36f9ea){var _0x1ce822=_0x36f9ea['get']({'plain':!![]});_0x1ce822=qs[_0xa7b0('0x4c')](_0x1ce822,['id',_0xa7b0('0x4d'),_0xa7b0('0x4e')]);_0x1954b2[_0xa7b0('0x4f')]=_[_0xa7b0('0x4c')](_0x1954b2[_0xa7b0('0x4f')],['id',_0xa7b0('0x4d'),_0xa7b0('0x4e')]);return db[_0xa7b0('0x2f')]['create'](_[_0xa7b0('0x3f')](_0x1ce822,_0x1954b2[_0xa7b0('0x4f')]),{'include':_0x1954b2[_0xa7b0('0x33')][_0xa7b0('0x42')]?[{'all':!![]}]:undefined});}})[_0xa7b0('0x29')](respondWithResult(_0x4e2017,0xc9))[_0xa7b0('0x45')](handleError(_0x4e2017,null));};exports[_0xa7b0('0x50')]=function(_0x5cb0c0,_0x22e84c){if(_0x5cb0c0[_0xa7b0('0x4f')]['id']){delete _0x5cb0c0[_0xa7b0('0x4f')]['id'];}return db[_0xa7b0('0x2f')][_0xa7b0('0x4b')]({'where':{'id':_0x5cb0c0['params']['id']}})['then'](handleEntityNotFound(_0x22e84c,null))[_0xa7b0('0x29')](saveUpdates(_0x5cb0c0[_0xa7b0('0x4f')],null))['then'](respondWithResult(_0x22e84c,null))[_0xa7b0('0x45')](handleError(_0x22e84c,null));};exports[_0xa7b0('0x51')]=function(_0x3c3e6a,_0x22242d){return db[_0xa7b0('0x2f')][_0xa7b0('0x4b')]({'where':{'id':_0x3c3e6a[_0xa7b0('0x47')]['id']}})[_0xa7b0('0x29')](handleEntityNotFound(_0x22242d,null))[_0xa7b0('0x29')](removeEntity(_0x22242d,null))[_0xa7b0('0x45')](handleError(_0x22242d,null));};exports['create']=function(_0x155ee4,_0x221915,_0x1ca1aa){_0x155ee4[_0xa7b0('0x4f')][_0xa7b0('0x52')]=_0x155ee4[_0xa7b0('0x53')][_0xa7b0('0x54')];_0x155ee4['body']['basename']=_0x155ee4[_0xa7b0('0x53')][_0xa7b0('0x55')];_0x155ee4[_0xa7b0('0x4f')]['type']=_0x155ee4[_0xa7b0('0x53')]['mimetype'];return db[_0xa7b0('0x2f')][_0xa7b0('0x56')](_0x155ee4[_0xa7b0('0x4f')])[_0xa7b0('0x29')](respondWithResult(_0x221915,0xc9))[_0xa7b0('0x45')](handleError(_0x221915,null));};exports[_0xa7b0('0x57')]=function(_0x56ddff,_0x200feb,_0x57ccdd){return db[_0xa7b0('0x2f')]['findOne']({'where':{'id':_0x56ddff[_0xa7b0('0x47')]['id']},'raw':!![]})[_0xa7b0('0x29')](handleEntityNotFound(_0x200feb,null))[_0xa7b0('0x29')](function(_0x2571f4){if(_0x2571f4){var _0x4bcb65=_0x2571f4[_0xa7b0('0x58')]!==null;var _0x5b7956=path[_0xa7b0('0x59')](config['root'],_0xa7b0('0x5a'));if(_0x4bcb65){_0x5b7956=path['join'](_0x5b7956,_0xa7b0('0x5b'));}var _0x14e3f8=path[_0xa7b0('0x59')](_0x5b7956,_0x2571f4['basename']);return _0x200feb[_0xa7b0('0x57')](_0x14e3f8);}})['catch'](handleError(_0x200feb,null));};
\ No newline at end of file
index 48baaec..9661631 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1427=['./attachment.attributes','exports','attachments','lodash','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x75f869,_0x3690d6){var _0x10af8b=function(_0x22d3ff){while(--_0x22d3ff){_0x75f869['push'](_0x75f869['shift']());}};_0x10af8b(++_0x3690d6);}(_0x1427,0xa3));var _0x7142=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1427[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7142('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7142('0x1'));var moment=require(_0x7142('0x2'));var BPromise=require('bluebird');var rp=require(_0x7142('0x3'));var fs=require('fs');var path=require(_0x7142('0x4'));var rimraf=require(_0x7142('0x5'));var config=require(_0x7142('0x6'));var attributes=require(_0x7142('0x7'));module[_0x7142('0x8')]=function(_0x5e7396,_0x2b38db){return _0x5e7396['define']('Attachment',attributes,{'tableName':_0x7142('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaadb=['request-promise','path','../../config/environment','./attachment.attributes','Attachment','attachments','lodash','../../config/logger','api','moment','bluebird'];(function(_0x31e759,_0x521725){var _0x486d64=function(_0x126e7a){while(--_0x126e7a){_0x31e759['push'](_0x31e759['shift']());}};_0x486d64(++_0x521725);}(_0xaadb,0xed));var _0xbaad=function(_0x53e412,_0xef5c27){_0x53e412=_0x53e412-0x0;var _0x2ef367=_0xaadb[_0x53e412];return _0x2ef367;};'use strict';var _=require(_0xbaad('0x0'));var util=require('util');var logger=require(_0xbaad('0x1'))(_0xbaad('0x2'));var moment=require(_0xbaad('0x3'));var BPromise=require(_0xbaad('0x4'));var rp=require(_0xbaad('0x5'));var fs=require('fs');var path=require(_0xbaad('0x6'));var rimraf=require('rimraf');var config=require(_0xbaad('0x7'));var attributes=require(_0xbaad('0x8'));module['exports']=function(_0x1493f6,_0x39c572){return _0x1493f6['define'](_0xbaad('0x9'),attributes,{'tableName':_0xbaad('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d467767..ccfc8b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13c0=['message','result','catch','CreateAttachment','create','body','options','raw','then','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','Attachment,\x20%s,\x20%s','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0xeb76c6,_0x166990){var _0x53c136=function(_0x525ae1){while(--_0x525ae1){_0xeb76c6['push'](_0xeb76c6['shift']());}};_0x53c136(++_0x166990);}(_0x13c0,0x79));var _0x013c=function(_0x3299d1,_0x545733){_0x3299d1=_0x3299d1-0x0;var _0x44356e=_0x13c0[_0x3299d1];return _0x44356e;};'use strict';var _=require(_0x013c('0x0'));var util=require(_0x013c('0x1'));var moment=require(_0x013c('0x2'));var BPromise=require(_0x013c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x013c('0x4'));var logger=require(_0x013c('0x5'))(_0x013c('0x6'));var config=require(_0x013c('0x7'));var jayson=require(_0x013c('0x8'));var client=jayson[_0x013c('0x9')][_0x013c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3decb5,_0x50caf2,_0x4cf99d){return new BPromise(function(_0x593053,_0x27c830){return client[_0x013c('0xb')](_0x3decb5,_0x4cf99d)['then'](function(_0x28c3a0){logger[_0x013c('0xc')](_0x013c('0xd'),_0x50caf2,_0x013c('0xe'));logger[_0x013c('0xf')](_0x013c('0x10'),_0x50caf2,_0x013c('0xe'),JSON[_0x013c('0x11')](_0x28c3a0));if(_0x28c3a0[_0x013c('0x12')]){if(_0x28c3a0[_0x013c('0x12')]['code']===0x1f4){logger['error'](_0x013c('0xd'),_0x50caf2,_0x28c3a0[_0x013c('0x12')][_0x013c('0x13')]);return _0x27c830(_0x28c3a0[_0x013c('0x12')]['message']);}logger[_0x013c('0x12')](_0x013c('0xd'),_0x50caf2,_0x28c3a0[_0x013c('0x12')][_0x013c('0x13')]);return _0x593053(_0x28c3a0[_0x013c('0x12')]['message']);}else{logger[_0x013c('0xc')](_0x013c('0xd'),_0x50caf2,_0x013c('0xe'));_0x593053(_0x28c3a0[_0x013c('0x14')][_0x013c('0x13')]);}})[_0x013c('0x15')](function(_0x6b8b5){logger[_0x013c('0x12')](_0x013c('0xd'),_0x50caf2,_0x6b8b5);_0x27c830(_0x6b8b5);});});}exports[_0x013c('0x16')]=function(_0x34d59f){var _0x4268cf=this;return new Promise(function(_0x25eb26,_0x5a9142){return db['Attachment'][_0x013c('0x17')](_0x34d59f[_0x013c('0x18')],{'raw':_0x34d59f['options']?_0x34d59f[_0x013c('0x19')][_0x013c('0x1a')]===undefined?!![]:![]:!![]})[_0x013c('0x1b')](function(_0x38bac2){logger[_0x013c('0xc')]('CreateAttachment',_0x34d59f);logger[_0x013c('0xf')](_0x013c('0x16'),_0x34d59f,JSON['stringify'](_0x38bac2));_0x25eb26(_0x38bac2);})[_0x013c('0x15')](function(_0x82f9f1){logger['error']('CreateAttachment',_0x82f9f1[_0x013c('0x13')],_0x34d59f);_0x5a9142(_0x4268cf[_0x013c('0x12')](0x1f4,_0x82f9f1[_0x013c('0x13')]));});});};
\ No newline at end of file
+var _0x8f37=['lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','info','Attachment,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateAttachment','Attachment','create','raw','then'];(function(_0x4548f1,_0x2f973c){var _0xca6772=function(_0x51ef54){while(--_0x51ef54){_0x4548f1['push'](_0x4548f1['shift']());}};_0xca6772(++_0x2f973c);}(_0x8f37,0x190));var _0x78f3=function(_0x55e039,_0x42dfca){_0x55e039=_0x55e039-0x0;var _0x4c6e54=_0x8f37[_0x55e039];return _0x4c6e54;};'use strict';var _=require(_0x78f3('0x0'));var util=require(_0x78f3('0x1'));var moment=require(_0x78f3('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x78f3('0x3'));var db=require(_0x78f3('0x4'))['db'];var utils=require(_0x78f3('0x5'));var logger=require('../../config/logger')(_0x78f3('0x6'));var config=require('../../config/environment');var jayson=require(_0x78f3('0x7'));var client=jayson['client'][_0x78f3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3dc185,_0x492dc7,_0x58bd73){return new BPromise(function(_0x55e353,_0x35d861){return client[_0x78f3('0x9')](_0x3dc185,_0x58bd73)['then'](function(_0x20c081){logger[_0x78f3('0xa')](_0x78f3('0xb'),_0x492dc7,_0x78f3('0xc'));logger[_0x78f3('0xd')]('Attachment,\x20%s,\x20%s,\x20%s',_0x492dc7,_0x78f3('0xc'),JSON[_0x78f3('0xe')](_0x20c081));if(_0x20c081['error']){if(_0x20c081[_0x78f3('0xf')][_0x78f3('0x10')]===0x1f4){logger[_0x78f3('0xf')]('Attachment,\x20%s,\x20%s',_0x492dc7,_0x20c081[_0x78f3('0xf')][_0x78f3('0x11')]);return _0x35d861(_0x20c081[_0x78f3('0xf')][_0x78f3('0x11')]);}logger[_0x78f3('0xf')](_0x78f3('0xb'),_0x492dc7,_0x20c081[_0x78f3('0xf')][_0x78f3('0x11')]);return _0x55e353(_0x20c081[_0x78f3('0xf')][_0x78f3('0x11')]);}else{logger[_0x78f3('0xa')](_0x78f3('0xb'),_0x492dc7,_0x78f3('0xc'));_0x55e353(_0x20c081[_0x78f3('0x12')][_0x78f3('0x11')]);}})[_0x78f3('0x13')](function(_0x39adfc){logger[_0x78f3('0xf')](_0x78f3('0xb'),_0x492dc7,_0x39adfc);_0x35d861(_0x39adfc);});});}exports[_0x78f3('0x14')]=function(_0x3c76d2){var _0x1c25f2=this;return new Promise(function(_0x225176,_0x4a5db4){return db[_0x78f3('0x15')][_0x78f3('0x16')](_0x3c76d2['body'],{'raw':_0x3c76d2['options']?_0x3c76d2['options'][_0x78f3('0x17')]===undefined?!![]:![]:!![]})[_0x78f3('0x18')](function(_0x31621a){logger[_0x78f3('0xa')](_0x78f3('0x14'),_0x3c76d2);logger['debug'](_0x78f3('0x14'),_0x3c76d2,JSON[_0x78f3('0xe')](_0x31621a));_0x225176(_0x31621a);})[_0x78f3('0x13')](function(_0x3f623f){logger[_0x78f3('0xf')](_0x78f3('0x14'),_0x3f623f[_0x78f3('0x11')],_0x3c76d2);_0x4a5db4(_0x1c25f2[_0x78f3('0xf')](0x1f4,_0x3f623f[_0x78f3('0x11')]));});});};
\ No newline at end of file
index ee5f21e..0adddb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/download','/:id/clone','clone','diskStorage','root','format','%s-%s','now','originalname','replace','post','single','file','create','delete','destroy','exports','util','connect-timeout','express','Router'];(function(_0x40b493,_0x4050de){var _0x548365=function(_0x8ceba7){while(--_0x8ceba7){_0x40b493['push'](_0x40b493['shift']());}};_0x548365(++_0x4050de);}(_0x5f66,0x1a0));var _0x65f6=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x5f66[_0x164eca];return _0x2ce562;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./attachment.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['download']);router['post'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);var upload=multer({'storage':multer[_0x65f6('0xe')]({'destination':function(_0x50d26d,_0x41a7fd,_0x571436){_0x571436(null,path['join'](config[_0x65f6('0xf')],'server/files/attachments/'));},'filename':function(_0x419819,_0x4862a5,_0x2f964a){_0x2f964a(null,util[_0x65f6('0x10')](_0x65f6('0x11'),Date[_0x65f6('0x12')](),_0x4862a5[_0x65f6('0x13')][_0x65f6('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x65f6('0x15')]('/',upload[_0x65f6('0x16')](_0x65f6('0x17')),controller[_0x65f6('0x18')]);router['put'](_0x65f6('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x65f6('0x19')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x1a')]);module[_0x65f6('0x1b')]=router;
\ No newline at end of file
+var _0x0b0e=['/:id/clone','clone','diskStorage','join','server/files/attachments/','format','now','originalname','replace','single','create','/:id','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','isAuthenticated','index','show','/:id/download','post'];(function(_0x1b5aea,_0x3f04b7){var _0x15cfc6=function(_0x204e92){while(--_0x204e92){_0x1b5aea['push'](_0x1b5aea['shift']());}};_0x15cfc6(++_0x3f04b7);}(_0x0b0e,0x187));var _0xe0b0=function(_0x2ef8f1,_0x1280a3){_0x2ef8f1=_0x2ef8f1-0x0;var _0x17498d=_0x0b0e[_0x2ef8f1];return _0x17498d;};'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')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0x9')](_0xe0b0('0xd'),auth[_0xe0b0('0xa')](),controller['download']);router[_0xe0b0('0xe')](_0xe0b0('0xf'),auth['isAuthenticated'](),controller[_0xe0b0('0x10')]);var upload=multer({'storage':multer[_0xe0b0('0x11')]({'destination':function(_0x574d96,_0x399320,_0x2cdad2){_0x2cdad2(null,path[_0xe0b0('0x12')](config['root'],_0xe0b0('0x13')));},'filename':function(_0x1c358a,_0x3cc19a,_0x45f914){_0x45f914(null,util[_0xe0b0('0x14')]('%s-%s',Date[_0xe0b0('0x15')](),_0x3cc19a[_0xe0b0('0x16')][_0xe0b0('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xe0b0('0xe')]('/',upload[_0xe0b0('0x18')]('file'),controller[_0xe0b0('0x19')]);router['put'](_0xe0b0('0x1a'),auth[_0xe0b0('0xa')](),controller['update']);router[_0xe0b0('0x1b')]('/:id',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x1c')]);module['exports']=router;
\ No newline at end of file
index e0142f4..9dada91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4c0=['map','emails','admin','then','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','blockedAt','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/environment','../../components/auth/service','signToken','../../config/utils','login','authenticate','google','callback','/login','use','clientID','clientSecret','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','User','find'];(function(_0x27604f,_0x5ae336){var _0x40d189=function(_0xebacde){while(--_0xebacde){_0x27604f['push'](_0x27604f['shift']());}};_0x40d189(++_0x5ae336);}(_0xd4c0,0x78));var _0x0d4c=function(_0x56786f,_0x3b0415){_0x56786f=_0x56786f-0x0;var _0x9281b4=_0xd4c0[_0x56786f];return _0x9281b4;};'use strict';var _=require(_0x0d4c('0x0'));var passport=require(_0x0d4c('0x1'));var GoogleStrategy=require(_0x0d4c('0x2'))['Strategy'];var moment=require(_0x0d4c('0x3'));var db=require(_0x0d4c('0x4'))['db'];var config=require(_0x0d4c('0x5'));var signToken=require(_0x0d4c('0x6'))[_0x0d4c('0x7')];var utils=require(_0x0d4c('0x8'));exports[_0x0d4c('0x9')]=passport[_0x0d4c('0xa')](_0x0d4c('0xb'),{'failureRedirect':'/login','scope':['profile','email'],'session':![]});exports[_0x0d4c('0xc')]=passport[_0x0d4c('0xa')](_0x0d4c('0xb'),{'failureRedirect':_0x0d4c('0xd'),'session':![]});passport[_0x0d4c('0xe')](new GoogleStrategy({'clientID':config[_0x0d4c('0xb')]?config[_0x0d4c('0xb')][_0x0d4c('0xf')]:'id','clientSecret':config[_0x0d4c('0xb')]?config[_0x0d4c('0xb')][_0x0d4c('0x10')]:_0x0d4c('0x11'),'callbackURL':config[_0x0d4c('0xb')]?config[_0x0d4c('0xb')][_0x0d4c('0x12')]:''},function(_0x261b60,_0x528787,_0x267997,_0x4af9b9){var _0x3366b2,_0x351492;return db['Setting'][_0x0d4c('0x13')]({'where':{'id':0x1},'attributes':[_0x0d4c('0x14'),_0x0d4c('0x15')],'raw':!![]})['then'](function(_0x1d9179){_0x3366b2=_0x1d9179;return db[_0x0d4c('0x16')][_0x0d4c('0x17')]({'where':{'email':_[_0x0d4c('0x18')](_0x267997[_0x0d4c('0x19')],'value'),'role':{'$or':[_0x0d4c('0x1a'),'user','agent']}}});})[_0x0d4c('0x1b')](function(_0x3e0bb5){_0x351492=_0x3e0bb5;if(_0x351492){if(_0x351492[_0x0d4c('0x1c')]){return _0x4af9b9(_0x0d4c('0x1d'));}else if(_0x3366b2['blockDuration']>0x0){if(_0x351492[_0x0d4c('0x1e')]){if(moment(_0x351492[_0x0d4c('0x1f')])['add'](_0x3366b2[_0x0d4c('0x15')],_0x0d4c('0x20'))>moment()){return _0x4af9b9(_0x0d4c('0x1d'));}else{return utils[_0x0d4c('0x21')](_0x351492,0x0,![],null)[_0x0d4c('0x1b')](function(){return utils[_0x0d4c('0x22')](_0x351492);})[_0x0d4c('0x1b')](function(){return _0x4af9b9(null,_0x351492);});}}else{return utils[_0x0d4c('0x22')](_0x351492)[_0x0d4c('0x1b')](function(){return _0x4af9b9(null,_0x351492);});}}else{return utils[_0x0d4c('0x22')](_0x351492)[_0x0d4c('0x1b')](function(){return _0x4af9b9(null,_0x351492);});}}return _0x4af9b9(_0x0d4c('0x1d'));})[_0x0d4c('0x23')](function(_0x3ddadc){_0x4af9b9(_0x3ddadc);});}));
\ No newline at end of file
+var _0x8e3c=['then','getLicense','lodash','passport','passport-google-oauth20','Strategy','moment','../../mysqldb','../../config/environment','../../components/auth/service','signToken','../../config/utils','login','authenticate','email','callback','google','use','clientID','clientSecret','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','User','map','emails','value','admin','user','disabled','blockedAt','minutes','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','clearBlockUser'];(function(_0x75f869,_0x3690d6){var _0x10af8b=function(_0x22d3ff){while(--_0x22d3ff){_0x75f869['push'](_0x75f869['shift']());}};_0x10af8b(++_0x3690d6);}(_0x8e3c,0x16a));var _0xc8e3=function(_0x5c436e,_0x145ed8){_0x5c436e=_0x5c436e-0x0;var _0x51d618=_0x8e3c[_0x5c436e];return _0x51d618;};'use strict';var _=require(_0xc8e3('0x0'));var passport=require(_0xc8e3('0x1'));var GoogleStrategy=require(_0xc8e3('0x2'))[_0xc8e3('0x3')];var moment=require(_0xc8e3('0x4'));var db=require(_0xc8e3('0x5'))['db'];var config=require(_0xc8e3('0x6'));var signToken=require(_0xc8e3('0x7'))[_0xc8e3('0x8')];var utils=require(_0xc8e3('0x9'));exports[_0xc8e3('0xa')]=passport[_0xc8e3('0xb')]('google',{'failureRedirect':'/login','scope':['profile',_0xc8e3('0xc')],'session':![]});exports[_0xc8e3('0xd')]=passport[_0xc8e3('0xb')](_0xc8e3('0xe'),{'failureRedirect':'/login','session':![]});passport[_0xc8e3('0xf')](new GoogleStrategy({'clientID':config[_0xc8e3('0xe')]?config[_0xc8e3('0xe')][_0xc8e3('0x10')]:'id','clientSecret':config['google']?config[_0xc8e3('0xe')][_0xc8e3('0x11')]:_0xc8e3('0x12'),'callbackURL':config['google']?config[_0xc8e3('0xe')][_0xc8e3('0x13')]:''},function(_0x29163f,_0x3fe148,_0x57e3f8,_0x482e03){var _0x475331,_0x26b484;return db['Setting'][_0xc8e3('0x14')]({'where':{'id':0x1},'attributes':[_0xc8e3('0x15'),_0xc8e3('0x16')],'raw':!![]})['then'](function(_0x1074fd){_0x475331=_0x1074fd;return db[_0xc8e3('0x17')]['find']({'where':{'email':_[_0xc8e3('0x18')](_0x57e3f8[_0xc8e3('0x19')],_0xc8e3('0x1a')),'role':{'$or':[_0xc8e3('0x1b'),_0xc8e3('0x1c'),'agent']}}});})['then'](function(_0x10bc55){_0x26b484=_0x10bc55;if(_0x26b484){if(_0x26b484[_0xc8e3('0x1d')]){return _0x482e03('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(_0x475331[_0xc8e3('0x16')]>0x0){if(_0x26b484['blocked']){if(moment(_0x26b484[_0xc8e3('0x1e')])['add'](_0x475331['blockDuration'],_0xc8e3('0x1f'))>moment()){return _0x482e03(_0xc8e3('0x20'));}else{return utils[_0xc8e3('0x21')](_0x26b484,0x0,![],null)[_0xc8e3('0x22')](function(){return utils[_0xc8e3('0x23')](_0x26b484);})[_0xc8e3('0x22')](function(){return _0x482e03(null,_0x26b484);});}}else{return utils['getLicense'](_0x26b484)[_0xc8e3('0x22')](function(){return _0x482e03(null,_0x26b484);});}}else{return utils[_0xc8e3('0x23')](_0x26b484)[_0xc8e3('0x22')](function(){return _0x482e03(null,_0x26b484);});}}return _0x482e03(_0xc8e3('0x20'));})['catch'](function(_0x13705b){_0x482e03(_0x13705b);});}));
\ No newline at end of file
index a998aa6..7671cef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84d9=['login','/callback','callback','setTokenCookie','exports','../user/user.controller.js','get'];(function(_0x540d74,_0x2db845){var _0x43a17b=function(_0x45553b){while(--_0x45553b){_0x540d74['push'](_0x540d74['shift']());}};_0x43a17b(++_0x2db845);}(_0x84d9,0x6e));var _0x984d=function(_0x2ee81f,_0x583668){_0x2ee81f=_0x2ee81f-0x0;var _0xcf8859=_0x84d9[_0x2ee81f];return _0xcf8859;};'use strict';var express=require('express');var passport=require('passport');var router=express['Router']();var controller=require('./authGoogle.controller');var userController=require(_0x984d('0x0'));var authService=require('../../components/auth/service');router[_0x984d('0x1')]('/',controller[_0x984d('0x2')]);router[_0x984d('0x1')](_0x984d('0x3'),controller[_0x984d('0x4')],authService['isMiddleware'],userController['login'],authService[_0x984d('0x5')]);module[_0x984d('0x6')]=router;
\ No newline at end of file
+var _0x8996=['get','login','callback','setTokenCookie','exports','express','passport','Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0x8996,0x1d3));var _0x6899=function(_0x380e33,_0x51b842){_0x380e33=_0x380e33-0x0;var _0x56e499=_0x8996[_0x380e33];return _0x56e499;};'use strict';var express=require(_0x6899('0x0'));var passport=require(_0x6899('0x1'));var router=express[_0x6899('0x2')]();var controller=require(_0x6899('0x3'));var userController=require(_0x6899('0x4'));var authService=require(_0x6899('0x5'));router[_0x6899('0x6')]('/',controller[_0x6899('0x7')]);router['get']('/callback',controller[_0x6899('0x8')],authService['isMiddleware'],userController[_0x6899('0x7')],authService[_0x6899('0x9')]);module[_0x6899('0xa')]=router;
\ No newline at end of file
index e46536d..af0acbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cda=['passport','passport-local','Strategy','lodash','randomstring','../../mysqldb','../../components/auth/service','../../config/utils','client','Setting','findOne','allowedLoginAttempts','blockDuration','then','name','role','disabled','blockedAt','loginAttempts','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','minutes','clearBlockUser','blocked','catch','email','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','auth','pass','format','\x22%s\x22\x20<%s>','request','SendMail','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','error','message','stringify','status','send','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','forgot','body','generate','toLowerCase','User','find','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','add','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','reset','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','password','previousPasswords','validatePasswordHistory','Password\x20reset!','use'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x7cda,0xf6));var _0xa7cd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7cda[_0x3dd15e];return _0x231fd0;};'use strict';var util=require('util');var passport=require(_0xa7cd('0x0'));var LocalStrategy=require(_0xa7cd('0x1'))[_0xa7cd('0x2')];var jayson=require('jayson/promise');var _=require(_0xa7cd('0x3'));var rs=require(_0xa7cd('0x4'));var moment=require('moment');var db=require(_0xa7cd('0x5'))['db'];var authService=require(_0xa7cd('0x6'));var utils=require(_0xa7cd('0x7'));var client=jayson[_0xa7cd('0x8')]['http']({'port':0x232b});function localAuthenticate(_0x3d43e6,_0x5c2b39,_0x596ad6,_0x6525a){var _0x4a9e39,_0x2554e8;return db[_0xa7cd('0x9')][_0xa7cd('0xa')]({'where':{'id':0x1},'attributes':[_0xa7cd('0xb'),_0xa7cd('0xc')],'raw':!![]})[_0xa7cd('0xd')](function(_0x39d8c4){_0x4a9e39=_0x39d8c4;return _0x3d43e6[_0xa7cd('0xa')]({'attributes':['id',_0xa7cd('0xe'),'password','salt',_0xa7cd('0xf'),_0xa7cd('0x10'),'blocked',_0xa7cd('0x11'),_0xa7cd('0x12')],'where':{'name':_0x5c2b39,'role':{'$or':['admin',_0xa7cd('0x13'),_0xa7cd('0x14')]}}});})[_0xa7cd('0xd')](function(_0x55c60d){if(!_0x55c60d||_0x55c60d&&_0x55c60d[_0xa7cd('0xe')]!==_0x5c2b39){throw new Error(_0xa7cd('0x15'));}else{_0x2554e8=_0x55c60d;return _0x2554e8;}})[_0xa7cd('0xd')](function(){_0x2554e8[_0xa7cd('0x16')](_0x596ad6,function(_0x1a51c2,_0x2f53cd){var _0x4e8710=_0x2554e8['loginAttempts']+0x1;if(_0x1a51c2){return _0x6525a(_0x1a51c2);}else if(!_0x2f53cd){if(_0x2554e8[_0xa7cd('0x10')]){return _0x6525a(null,![],{'message':_0xa7cd('0x15')});}else if(_0x4a9e39[_0xa7cd('0xb')]>0x0){if(_0x2554e8['blocked']){if(_0x4a9e39[_0xa7cd('0xc')]>0x0){if(moment(_0x2554e8[_0xa7cd('0x11')])['add'](_0x4a9e39[_0xa7cd('0xc')],_0xa7cd('0x17'))>moment()){return _0x6525a(null,![],{'message':_0xa7cd('0x15')});}else{return utils['clearBlockUser'](_0x2554e8,_0x4e8710,![],null)[_0xa7cd('0xd')](function(){return _0x6525a(null,![],{'message':_0xa7cd('0x15')});});}}else{return _0x6525a(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x4e8710>=_0x4a9e39[_0xa7cd('0xb')]){return utils[_0xa7cd('0x18')](_0x2554e8,0x0,!![],moment())[_0xa7cd('0xd')](function(){return _0x6525a(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils['clearBlockUser'](_0x2554e8,_0x4e8710,![],null)['then'](function(){return _0x6525a(null,![],{'message':_0xa7cd('0x15')});});}}}else{return _0x6525a(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x2554e8['disabled']){return _0x6525a(null,![],{'message':_0xa7cd('0x15')});}else if(_0x4a9e39['allowedLoginAttempts']>0x0){if(_0x2554e8[_0xa7cd('0x19')]){if(_0x4a9e39[_0xa7cd('0xc')]>0x0){if(moment(_0x2554e8['blockedAt'])['add'](_0x4a9e39['blockDuration'],_0xa7cd('0x17'))>moment()){return _0x6525a(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xa7cd('0x18')](_0x2554e8,0x0,![],null)[_0xa7cd('0xd')](function(){return utils['getLicense'](_0x2554e8);})[_0xa7cd('0xd')](function(){return _0x6525a(null,_0x2554e8);});}}else{return _0x6525a(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0xa7cd('0x18')](_0x2554e8,0x0,![],null)[_0xa7cd('0xd')](function(){return utils['getLicense'](_0x2554e8);})[_0xa7cd('0xd')](function(){return _0x6525a(null,_0x2554e8);})[_0xa7cd('0x1a')](function(_0x53d3b7){return _0x6525a(null,![],_0x53d3b7);});}}else{if(_0x2554e8['blocked']){return _0x6525a(null,![],{'message':_0xa7cd('0x15')});}else{return utils['getLicense'](_0x2554e8)[_0xa7cd('0xd')](function(){return _0x6525a(null,_0x2554e8);});}}}});})['catch'](function(_0x39ea67){return _0x6525a(null,![],_0x39ea67);});}function sendServiceMail(_0x2b1b0a){return db['MailAccount']['find']({'where':{'service':!![]},'attributes':['id','name',_0xa7cd('0x1b')],'include':[{'model':db['MailServerOut'],'as':_0xa7cd('0x1c')}]})[_0xa7cd('0xd')](function(_0x194f0a){if(!_0x194f0a){throw new Error(_0xa7cd('0x1d'));}var _0x578c35={'tls':{'rejectUnauthorized':![]}};if(_0x194f0a[_0xa7cd('0x1c')]['service']){_0x578c35[_0xa7cd('0x1e')]=_0x194f0a[_0xa7cd('0x1c')]['service'];}else{_0x578c35[_0xa7cd('0x1f')]=_0x194f0a[_0xa7cd('0x1c')][_0xa7cd('0x1f')];_0x578c35[_0xa7cd('0x20')]=_0x194f0a[_0xa7cd('0x1c')][_0xa7cd('0x20')];_0x578c35[_0xa7cd('0x21')]=_0x194f0a[_0xa7cd('0x1c')][_0xa7cd('0x21')];}if(_0x194f0a[_0xa7cd('0x1c')]['authentication']){_0x578c35[_0xa7cd('0x22')]={'user':_0x194f0a[_0xa7cd('0x1c')]['user'],'pass':_0x194f0a['Smtp'][_0xa7cd('0x23')]};}var _0x430c30={'account':_0x578c35,'message':_['merge']({'from':util[_0xa7cd('0x24')](_0xa7cd('0x25'),_0x194f0a[_0xa7cd('0xe')],_0x194f0a['email']||_0x194f0a[_0xa7cd('0x1c')]['user'])},_0x2b1b0a)};return client[_0xa7cd('0x26')](_0xa7cd('0x27'),_0x430c30);})[_0xa7cd('0xd')](function(_0x2f1ad2){if(_0x2f1ad2['error']){throw new Error(util['format'](_0xa7cd('0x28'),_0x2f1ad2[_0xa7cd('0x29')][_0xa7cd('0x2a')]||JSON[_0xa7cd('0x2b')](_0x2f1ad2[_0xa7cd('0x29')])));}return!![];});}function handleError(_0x46a7c5,_0x1d97ca,_0x5e09c3){return _0x46a7c5[_0xa7cd('0x2c')](_0x1d97ca||0x1f4)[_0xa7cd('0x2d')]({'message':_0x5e09c3?_0x5e09c3[_0xa7cd('0x2a')]||_0x5e09c3:''});}exports[_0xa7cd('0x2e')]=function(_0x31f618,_0x392c12,_0x2d4c7f){passport[_0xa7cd('0x16')]('local',function(_0x40c77a,_0xd99fde,_0x375088){var _0x3aa1a0=_0x40c77a||_0x375088;if(_0x3aa1a0){return handleError(_0x392c12,0x191,_0x3aa1a0);}if(!_0xd99fde){return handleError(_0x392c12,0x194,{'message':_0xa7cd('0x2f')});}else{var _0xe18d52={'payload':{'id':_0xd99fde['id'],'role':_0xd99fde[_0xa7cd('0xf')]},'options':{'expiresIn':0x15180}};return authService[_0xa7cd('0x30')](_0xe18d52)['then'](function(_0x560e76){_0x392c12[_0xa7cd('0x31')]({'id':_0xd99fde['id'],'token':_0x560e76,'statusCall':'','isAlreadyLogged':_0xd99fde[_0xa7cd('0x32')]});});}})(_0x31f618,_0x392c12,_0x2d4c7f);};exports[_0xa7cd('0x33')]=function(_0x496cfb,_0x1c1305,_0x68eaff){if(!_0x496cfb[_0xa7cd('0x34')][_0xa7cd('0x1b')]){return handleError(_0x1c1305,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0x1a17f0=rs[_0xa7cd('0x35')]();_0x496cfb[_0xa7cd('0x34')][_0xa7cd('0x1b')]=_0x496cfb['body']['email']['trim']()[_0xa7cd('0x36')]();var _0x42d77d;return db[_0xa7cd('0x9')]['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xa7cd('0xc')],'raw':!![]})[_0xa7cd('0xd')](function(_0x16bc34){_0x42d77d=_0x16bc34;return db[_0xa7cd('0x37')][_0xa7cd('0x38')]({'where':{'email':_0x496cfb[_0xa7cd('0x34')][_0xa7cd('0x1b')]}});})[_0xa7cd('0xd')](function(_0x4683d0){if(!_0x4683d0){throw new Error(_0xa7cd('0x39'));}if(_0x4683d0[_0xa7cd('0x10')]){throw new Error(_0xa7cd('0x3a'));}if(_0x4683d0[_0xa7cd('0x19')]){if(moment(_0x4683d0[_0xa7cd('0x11')])[_0xa7cd('0x3b')](_0x42d77d[_0xa7cd('0xc')],'minutes')>moment()){throw new Error(_0xa7cd('0x3c'));}else{_0x4683d0[_0xa7cd('0x19')]=![];_0x4683d0[_0xa7cd('0x11')]=null;}}_0x4683d0[_0xa7cd('0x3d')]=_0x1a17f0;_0x4683d0[_0xa7cd('0x3e')]=Date[_0xa7cd('0x3f')]()+0x36ee80;return _0x4683d0[_0xa7cd('0x40')]();})['then'](function(){return sendServiceMail({'to':_0x496cfb[_0xa7cd('0x34')][_0xa7cd('0x1b')],'subject':_0xa7cd('0x41'),'text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0xa7cd('0x42')+_0xa7cd('0x43')+_0x496cfb[_0xa7cd('0x44')][_0xa7cd('0x1f')]+_0xa7cd('0x45')+_0x1a17f0+'\x0a\x0a'+_0xa7cd('0x46')});})[_0xa7cd('0xd')](function(){_0x1c1305[_0xa7cd('0x2c')](0xc8)[_0xa7cd('0x2d')]({'message':'Reset\x20Email\x20sent!'});})['catch'](function(_0x54299b){return handleError(_0x1c1305,0x1f4,_0x54299b);});};exports[_0xa7cd('0x47')]=function(_0xf668be,_0x40b05b,_0x4afd2b){return db[_0xa7cd('0x37')][_0xa7cd('0x38')]({'where':{'resetPasswordToken':_0xf668be['params']['token'],'resetPasswordExpires':{'$gt':Date['now']()}}})['then'](function(_0x183900){if(!_0x183900){throw new Error(_0xa7cd('0x48'));}return db[_0xa7cd('0x9')][_0xa7cd('0xa')]({'attributes':['id',_0xa7cd('0x49'),_0xa7cd('0x4a'),_0xa7cd('0x4b')]})['then'](function(_0x3150c4){if(_0x3150c4['securePassword'])authService[_0xa7cd('0x4c')](_0xf668be[_0xa7cd('0x34')][_0xa7cd('0x4d')]);if(!_0x3150c4[_0xa7cd('0x4a')]||!_0x183900[_0xa7cd('0x4e')])return _0x183900;authService[_0xa7cd('0x4f')](_0xf668be[_0xa7cd('0x34')]['password'],_0x183900[_0xa7cd('0x4e')],_0x3150c4[_0xa7cd('0x4b')]);return _0x183900;})[_0xa7cd('0xd')](function(){_0x183900[_0xa7cd('0x4d')]=_0xf668be[_0xa7cd('0x34')][_0xa7cd('0x4d')];_0x183900[_0xa7cd('0x3d')]=null;_0x183900['resetPasswordExpires']=null;return _0x183900['save']();});})[_0xa7cd('0xd')](function(){_0x40b05b[_0xa7cd('0x2c')](0xc8)[_0xa7cd('0x2d')]({'message':_0xa7cd('0x50')});})['catch'](function(_0x19469f){return handleError(_0x40b05b,0x1f4,_0x19469f);});};passport[_0xa7cd('0x51')](new LocalStrategy({'usernameField':_0xa7cd('0xe'),'passwordField':_0xa7cd('0x4d')},function(_0x4e0f1d,_0x4fb8d4,_0x555594){return localAuthenticate(db[_0xa7cd('0x37')],_0x4e0f1d,_0x4fb8d4,_0x555594);}));
\ No newline at end of file
+var _0x8243=['format','message','status','send','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','online','forgot','generate','body','toLowerCase','find','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','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','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','User','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','enforcePasswordHistory','securePassword','validatePasswordPattern','previousPasswords','validatePasswordHistory','passwordHistoryLimit','Password\x20reset!','use','util','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','Setting','findOne','allowedLoginAttempts','blockDuration','then','name','password','salt','role','blockedAt','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','disabled','blocked','add','minutes','clearBlockUser','getLicense','catch','Smtp','service','host','port','secure','authentication','auth','pass','\x22%s\x22\x20<%s>','email','request','error'];(function(_0x1d07c7,_0x28ba8f){var _0x9bff6=function(_0x512e59){while(--_0x512e59){_0x1d07c7['push'](_0x1d07c7['shift']());}};_0x9bff6(++_0x28ba8f);}(_0x8243,0x1ba));var _0x3824=function(_0x14e951,_0x5b2adf){_0x14e951=_0x14e951-0x0;var _0x47f211=_0x8243[_0x14e951];return _0x47f211;};'use strict';var util=require(_0x3824('0x0'));var passport=require('passport');var LocalStrategy=require(_0x3824('0x1'))[_0x3824('0x2')];var jayson=require(_0x3824('0x3'));var _=require(_0x3824('0x4'));var rs=require(_0x3824('0x5'));var moment=require(_0x3824('0x6'));var db=require(_0x3824('0x7'))['db'];var authService=require(_0x3824('0x8'));var utils=require(_0x3824('0x9'));var client=jayson[_0x3824('0xa')]['http']({'port':0x232b});function localAuthenticate(_0x362756,_0x452028,_0xc2d29f,_0x2bacde){var _0x103f4b,_0x120a91;return db[_0x3824('0xb')][_0x3824('0xc')]({'where':{'id':0x1},'attributes':[_0x3824('0xd'),_0x3824('0xe')],'raw':!![]})[_0x3824('0xf')](function(_0x2a97f4){_0x103f4b=_0x2a97f4;return _0x362756[_0x3824('0xc')]({'attributes':['id',_0x3824('0x10'),_0x3824('0x11'),_0x3824('0x12'),_0x3824('0x13'),'disabled','blocked',_0x3824('0x14'),'loginAttempts'],'where':{'name':_0x452028,'role':{'$or':['admin',_0x3824('0x15'),_0x3824('0x16')]}}});})[_0x3824('0xf')](function(_0x21df98){if(!_0x21df98||_0x21df98&&_0x21df98['name']!==_0x452028){throw new Error(_0x3824('0x17'));}else{_0x120a91=_0x21df98;return _0x120a91;}})['then'](function(){_0x120a91[_0x3824('0x18')](_0xc2d29f,function(_0xccd3f6,_0x36cbf4){var _0x550a0a=_0x120a91['loginAttempts']+0x1;if(_0xccd3f6){return _0x2bacde(_0xccd3f6);}else if(!_0x36cbf4){if(_0x120a91[_0x3824('0x19')]){return _0x2bacde(null,![],{'message':_0x3824('0x17')});}else if(_0x103f4b[_0x3824('0xd')]>0x0){if(_0x120a91[_0x3824('0x1a')]){if(_0x103f4b['blockDuration']>0x0){if(moment(_0x120a91[_0x3824('0x14')])[_0x3824('0x1b')](_0x103f4b['blockDuration'],_0x3824('0x1c'))>moment()){return _0x2bacde(null,![],{'message':_0x3824('0x17')});}else{return utils[_0x3824('0x1d')](_0x120a91,_0x550a0a,![],null)[_0x3824('0xf')](function(){return _0x2bacde(null,![],{'message':_0x3824('0x17')});});}}else{return _0x2bacde(null,![],{'message':_0x3824('0x17')});}}else{if(_0x550a0a>=_0x103f4b[_0x3824('0xd')]){return utils[_0x3824('0x1d')](_0x120a91,0x0,!![],moment())[_0x3824('0xf')](function(){return _0x2bacde(null,![],{'message':_0x3824('0x17')});});}else{return utils[_0x3824('0x1d')](_0x120a91,_0x550a0a,![],null)['then'](function(){return _0x2bacde(null,![],{'message':_0x3824('0x17')});});}}}else{return _0x2bacde(null,![],{'message':_0x3824('0x17')});}}else{if(_0x120a91[_0x3824('0x19')]){return _0x2bacde(null,![],{'message':_0x3824('0x17')});}else if(_0x103f4b[_0x3824('0xd')]>0x0){if(_0x120a91[_0x3824('0x1a')]){if(_0x103f4b['blockDuration']>0x0){if(moment(_0x120a91[_0x3824('0x14')])[_0x3824('0x1b')](_0x103f4b[_0x3824('0xe')],_0x3824('0x1c'))>moment()){return _0x2bacde(null,![],{'message':_0x3824('0x17')});}else{return utils['clearBlockUser'](_0x120a91,0x0,![],null)['then'](function(){return utils[_0x3824('0x1e')](_0x120a91);})['then'](function(){return _0x2bacde(null,_0x120a91);});}}else{return _0x2bacde(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0x3824('0x1d')](_0x120a91,0x0,![],null)[_0x3824('0xf')](function(){return utils[_0x3824('0x1e')](_0x120a91);})[_0x3824('0xf')](function(){return _0x2bacde(null,_0x120a91);})[_0x3824('0x1f')](function(_0x5a703c){return _0x2bacde(null,![],_0x5a703c);});}}else{if(_0x120a91[_0x3824('0x1a')]){return _0x2bacde(null,![],{'message':_0x3824('0x17')});}else{return utils[_0x3824('0x1e')](_0x120a91)['then'](function(){return _0x2bacde(null,_0x120a91);});}}}});})[_0x3824('0x1f')](function(_0x3e8fa8){return _0x2bacde(null,![],_0x3e8fa8);});}function sendServiceMail(_0x5b46ee){return db['MailAccount']['find']({'where':{'service':!![]},'attributes':['id',_0x3824('0x10'),'email'],'include':[{'model':db['MailServerOut'],'as':_0x3824('0x20')}]})[_0x3824('0xf')](function(_0x3928cc){if(!_0x3928cc){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x324ed7={'tls':{'rejectUnauthorized':![]}};if(_0x3928cc[_0x3824('0x20')][_0x3824('0x21')]){_0x324ed7['service']=_0x3928cc[_0x3824('0x20')][_0x3824('0x21')];}else{_0x324ed7['host']=_0x3928cc[_0x3824('0x20')][_0x3824('0x22')];_0x324ed7[_0x3824('0x23')]=_0x3928cc[_0x3824('0x20')]['port'];_0x324ed7[_0x3824('0x24')]=_0x3928cc[_0x3824('0x20')][_0x3824('0x24')];}if(_0x3928cc[_0x3824('0x20')][_0x3824('0x25')]){_0x324ed7[_0x3824('0x26')]={'user':_0x3928cc[_0x3824('0x20')][_0x3824('0x15')],'pass':_0x3928cc[_0x3824('0x20')][_0x3824('0x27')]};}var _0x5e47ac={'account':_0x324ed7,'message':_['merge']({'from':util['format'](_0x3824('0x28'),_0x3928cc['name'],_0x3928cc[_0x3824('0x29')]||_0x3928cc['Smtp'][_0x3824('0x15')])},_0x5b46ee)};return client[_0x3824('0x2a')]('SendMail',_0x5e47ac);})[_0x3824('0xf')](function(_0x1140db){if(_0x1140db[_0x3824('0x2b')]){throw new Error(util[_0x3824('0x2c')]('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x1140db['error'][_0x3824('0x2d')]||JSON['stringify'](_0x1140db[_0x3824('0x2b')])));}return!![];});}function handleError(_0x4e6874,_0x5b96dd,_0x3a0fff){return _0x4e6874[_0x3824('0x2e')](_0x5b96dd||0x1f4)[_0x3824('0x2f')]({'message':_0x3a0fff?_0x3a0fff['message']||_0x3a0fff:''});}exports['login']=function(_0x3c232d,_0x18513e,_0x1e48c5){passport['authenticate'](_0x3824('0x30'),function(_0x24d8e9,_0x3a17dd,_0x4fc9c7){var _0x4348a1=_0x24d8e9||_0x4fc9c7;if(_0x4348a1){return handleError(_0x18513e,0x191,_0x4348a1);}if(!_0x3a17dd){return handleError(_0x18513e,0x194,{'message':_0x3824('0x31')});}else{var _0x10b7c7={'payload':{'id':_0x3a17dd['id'],'role':_0x3a17dd[_0x3824('0x13')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x10b7c7)['then'](function(_0x93c43a){_0x18513e['json']({'id':_0x3a17dd['id'],'token':_0x93c43a,'statusCall':'','isAlreadyLogged':_0x3a17dd[_0x3824('0x32')]});});}})(_0x3c232d,_0x18513e,_0x1e48c5);};exports[_0x3824('0x33')]=function(_0x38a504,_0x2d807b,_0x14e860){if(!_0x38a504['body'][_0x3824('0x29')]){return handleError(_0x2d807b,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0xe2b758=rs[_0x3824('0x34')]();_0x38a504[_0x3824('0x35')][_0x3824('0x29')]=_0x38a504[_0x3824('0x35')][_0x3824('0x29')]['trim']()[_0x3824('0x36')]();var _0x19b2ff;return db[_0x3824('0xb')][_0x3824('0xc')]({'where':{'id':0x1},'attributes':[_0x3824('0xd'),_0x3824('0xe')],'raw':!![]})[_0x3824('0xf')](function(_0x5de042){_0x19b2ff=_0x5de042;return db['User'][_0x3824('0x37')]({'where':{'email':_0x38a504[_0x3824('0x35')][_0x3824('0x29')]}});})['then'](function(_0x4519df){if(!_0x4519df){throw new Error('This\x20email\x20is\x20not\x20registered.');}if(_0x4519df['disabled']){throw new Error(_0x3824('0x38'));}if(_0x4519df[_0x3824('0x1a')]){if(moment(_0x4519df['blockedAt'])[_0x3824('0x1b')](_0x19b2ff['blockDuration'],_0x3824('0x1c'))>moment()){throw new Error(_0x3824('0x39'));}else{_0x4519df[_0x3824('0x1a')]=![];_0x4519df[_0x3824('0x14')]=null;}}_0x4519df[_0x3824('0x3a')]=_0xe2b758;_0x4519df[_0x3824('0x3b')]=Date[_0x3824('0x3c')]()+0x36ee80;return _0x4519df[_0x3824('0x3d')]();})[_0x3824('0xf')](function(){return sendServiceMail({'to':_0x38a504[_0x3824('0x35')][_0x3824('0x29')],'subject':_0x3824('0x3e'),'text':_0x3824('0x3f')+_0x3824('0x40')+'https://'+_0x38a504['headers'][_0x3824('0x22')]+_0x3824('0x41')+_0xe2b758+'\x0a\x0a'+_0x3824('0x42')});})[_0x3824('0xf')](function(){_0x2d807b[_0x3824('0x2e')](0xc8)[_0x3824('0x2f')]({'message':_0x3824('0x43')});})[_0x3824('0x1f')](function(_0x144adf){return handleError(_0x2d807b,0x1f4,_0x144adf);});};exports[_0x3824('0x44')]=function(_0x1c4617,_0x56550b,_0x36571c){return db[_0x3824('0x45')][_0x3824('0x37')]({'where':{'resetPasswordToken':_0x1c4617[_0x3824('0x46')][_0x3824('0x47')],'resetPasswordExpires':{'$gt':Date[_0x3824('0x3c')]()}}})[_0x3824('0xf')](function(_0x507296){if(!_0x507296){throw new Error(_0x3824('0x48'));}return db['Setting']['findOne']({'attributes':['id','securePassword',_0x3824('0x49'),'passwordHistoryLimit']})[_0x3824('0xf')](function(_0x4cd033){if(_0x4cd033[_0x3824('0x4a')])authService[_0x3824('0x4b')](_0x1c4617[_0x3824('0x35')][_0x3824('0x11')]);if(!_0x4cd033['enforcePasswordHistory']||!_0x507296[_0x3824('0x4c')])return _0x507296;authService[_0x3824('0x4d')](_0x1c4617[_0x3824('0x35')][_0x3824('0x11')],_0x507296[_0x3824('0x4c')],_0x4cd033[_0x3824('0x4e')]);return _0x507296;})['then'](function(){_0x507296[_0x3824('0x11')]=_0x1c4617[_0x3824('0x35')][_0x3824('0x11')];_0x507296[_0x3824('0x3a')]=null;_0x507296['resetPasswordExpires']=null;return _0x507296[_0x3824('0x3d')]();});})[_0x3824('0xf')](function(){_0x56550b[_0x3824('0x2e')](0xc8)[_0x3824('0x2f')]({'message':_0x3824('0x4f')});})['catch'](function(_0x1f970a){return handleError(_0x56550b,0x1f4,_0x1f970a);});};passport[_0x3824('0x50')](new LocalStrategy({'usernameField':_0x3824('0x10'),'passwordField':_0x3824('0x11')},function(_0x32e66b,_0x39c3bf,_0x5838b8){return localAuthenticate(db[_0x3824('0x45')],_0x32e66b,_0x39c3bf,_0x5838b8);}));
\ No newline at end of file
index 37c41da..3b7cf0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe418=['./authLocal.controller','post','login','forgot','/reset/:token','reset','exports','Router'];(function(_0x2b5eb6,_0x176e24){var _0x28b26f=function(_0x358136){while(--_0x358136){_0x2b5eb6['push'](_0x2b5eb6['shift']());}};_0x28b26f(++_0x176e24);}(_0xe418,0xaf));var _0x8e41=function(_0x36cb67,_0x489ffe){_0x36cb67=_0x36cb67-0x0;var _0x4ab524=_0xe418[_0x36cb67];return _0x4ab524;};'use strict';var express=require('express');var router=express[_0x8e41('0x0')]();var controller=require(_0x8e41('0x1'));router[_0x8e41('0x2')]('/',controller[_0x8e41('0x3')]);router[_0x8e41('0x2')]('/forgot',controller[_0x8e41('0x4')]);router[_0x8e41('0x2')](_0x8e41('0x5'),controller[_0x8e41('0x6')]);module[_0x8e41('0x7')]=router;
\ No newline at end of file
+var _0x521e=['reset','exports','express','Router','post','login','/forgot','/reset/:token'];(function(_0x577d4c,_0x3fa829){var _0x252c3d=function(_0x290826){while(--_0x290826){_0x577d4c['push'](_0x577d4c['shift']());}};_0x252c3d(++_0x3fa829);}(_0x521e,0x1c2));var _0xe521=function(_0x4bbc69,_0x2fc408){_0x4bbc69=_0x4bbc69-0x0;var _0x129c1f=_0x521e[_0x4bbc69];return _0x129c1f;};'use strict';var express=require(_0xe521('0x0'));var router=express[_0xe521('0x1')]();var controller=require('./authLocal.controller');router[_0xe521('0x2')]('/',controller[_0xe521('0x3')]);router['post'](_0xe521('0x4'),controller['forgot']);router[_0xe521('0x2')](_0xe521('0x5'),controller[_0xe521('0x6')]);module[_0xe521('0x7')]=router;
\ No newline at end of file
index 9335944..d59c21a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0477=['STRING','BOOLEAN','INTEGER','sequelize','exports'];(function(_0x379719,_0x5c1e61){var _0x1e21d3=function(_0x449406){while(--_0x449406){_0x379719['push'](_0x379719['shift']());}};_0x1e21d3(++_0x5c1e61);}(_0x0477,0x198));var _0x7047=function(_0x5a4b42,_0x2b9c18){_0x5a4b42=_0x5a4b42-0x0;var _0x5e81d6=_0x0477[_0x5a4b42];return _0x5e81d6;};'use strict';var Sequelize=require(_0x7047('0x0'));module[_0x7047('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'channel':{'type':Sequelize[_0x7047('0x2')]},'description':{'type':Sequelize[_0x7047('0x2')]},'status':{'type':Sequelize[_0x7047('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x7047('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x8124=['BOOLEAN','INTEGER','sequelize','exports','STRING'];(function(_0x4d636e,_0x33a03e){var _0x2a4454=function(_0x13c484){while(--_0x13c484){_0x4d636e['push'](_0x4d636e['shift']());}};_0x2a4454(++_0x33a03e);}(_0x8124,0x1c4));var _0x4812=function(_0x542d6b,_0x1615bd){_0x542d6b=_0x542d6b-0x0;var _0x22d616=_0x8124[_0x542d6b];return _0x22d616;};'use strict';var Sequelize=require(_0x4812('0x0'));module[_0x4812('0x1')]={'name':{'type':Sequelize[_0x4812('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x4812('0x2')]},'description':{'type':Sequelize[_0x4812('0x2')]},'status':{'type':Sequelize[_0x4812('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x4812('0x4')],'defaultValue':0xa}};
\ No newline at end of file
index ff2a204..c2e6a1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86f0=['pick','merge','VIRTUAL','filter','options','findAll','rows','show','params','length','includeAll','find','catch','create','body','destroy','addConditions','ids','getConditions','findOne','Action','omit','getActions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','error','stack','name','index','map','Automation','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where'];(function(_0xeed77e,_0xa3860a){var _0x47d1ec=function(_0x1af138){while(--_0x1af138){_0xeed77e['push'](_0xeed77e['shift']());}};_0x47d1ec(++_0xa3860a);}(_0x86f0,0x110));var _0x086f=function(_0x1efa72,_0x2394a5){_0x1efa72=_0x1efa72-0x0;var _0x34ba7d=_0x86f0[_0x1efa72];return _0x34ba7d;};'use strict';var emlformat=require(_0x086f('0x0'));var rimraf=require(_0x086f('0x1'));var zipdir=require(_0x086f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x086f('0x3'));var moment=require(_0x086f('0x4'));var BPromise=require(_0x086f('0x5'));var Mustache=require(_0x086f('0x6'));var util=require(_0x086f('0x7'));var path=require(_0x086f('0x8'));var sox=require(_0x086f('0x9'));var csv=require(_0x086f('0xa'));var ejs=require(_0x086f('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x086f('0xc'));var crypto=require('crypto');var jsforce=require(_0x086f('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x086f('0xa'));var querystring=require(_0x086f('0xe'));var Papa=require(_0x086f('0xf'));var Redis=require(_0x086f('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x086f('0x11'));var as=require(_0x086f('0x12'));var hardwareService=require(_0x086f('0x13'));var logger=require(_0x086f('0x14'))(_0x086f('0x15'));var utils=require('../../config/utils');var config=require(_0x086f('0x16'));var licenseUtil=require(_0x086f('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xdc91e8,_0x39e8fe){_0x39e8fe=_0x39e8fe||0xcc;return function(_0x11bc46){if(_0x11bc46){return _0xdc91e8[_0x086f('0x18')](_0x39e8fe);}return _0xdc91e8[_0x086f('0x19')](_0x39e8fe)[_0x086f('0x1a')]();};}function respondWithResult(_0x18b61c,_0x75f0bb){_0x75f0bb=_0x75f0bb||0xc8;return function(_0x2457a5){if(_0x2457a5){return _0x18b61c['status'](_0x75f0bb)[_0x086f('0x1b')](_0x2457a5);}};}function respondWithFilteredResult(_0x366235,_0x3d1eac){return function(_0x1cb1cc){if(_0x1cb1cc){var _0x2c280c=typeof _0x3d1eac[_0x086f('0x1c')]===_0x086f('0x1d')&&typeof _0x3d1eac[_0x086f('0x1e')]===_0x086f('0x1d');var _0x226ab6=_0x1cb1cc[_0x086f('0x1f')];var _0x592bbd=_0x2c280c?0x0:_0x3d1eac[_0x086f('0x1c')];var _0x505185=_0x2c280c?_0x1cb1cc[_0x086f('0x1f')]:_0x3d1eac['offset']+_0x3d1eac[_0x086f('0x1e')];var _0x3a6e82;if(_0x505185>=_0x226ab6){_0x505185=_0x226ab6;_0x3a6e82=0xc8;}else{_0x3a6e82=0xce;}_0x366235[_0x086f('0x19')](_0x3a6e82);return _0x366235[_0x086f('0x20')](_0x086f('0x21'),_0x592bbd+'-'+_0x505185+'/'+_0x226ab6)[_0x086f('0x1b')](_0x1cb1cc);}return null;};}function patchUpdates(_0x4a4c81){return function(_0x215972){try{jsonpatch['apply'](_0x215972,_0x4a4c81,!![]);}catch(_0x1e9ff4){return BPromise[_0x086f('0x22')](_0x1e9ff4);}return _0x215972[_0x086f('0x23')]();};}function saveUpdates(_0x4c595e,_0x22a656){return function(_0x592ec5){if(_0x592ec5){return _0x592ec5[_0x086f('0x24')](_0x4c595e)[_0x086f('0x25')](function(_0x3cba86){return _0x3cba86;});}return null;};}function removeEntity(_0x1868df,_0x3b2f2b){return function(_0x4028db){if(_0x4028db){return _0x4028db['destroy']()[_0x086f('0x25')](function(){_0x1868df[_0x086f('0x19')](0xcc)[_0x086f('0x1a')]();});}};}function handleEntityNotFound(_0x46da92,_0x1f3933){return function(_0x40ea63){if(!_0x40ea63){_0x46da92[_0x086f('0x18')](0x194);}return _0x40ea63;};}function handleError(_0x1b5862,_0xc489fd){_0xc489fd=_0xc489fd||0x1f4;return function(_0x3b34ce){logger[_0x086f('0x26')](_0x3b34ce[_0x086f('0x27')]);if(_0x3b34ce[_0x086f('0x28')]){delete _0x3b34ce['name'];}_0x1b5862[_0x086f('0x19')](_0xc489fd)['send'](_0x3b34ce);};}exports[_0x086f('0x29')]=function(_0x441c79,_0x5116d4){var _0x4464cf={},_0x16c465={},_0x1b7e6d={'count':0x0,'rows':[]};var _0x358306=_[_0x086f('0x2a')](db[_0x086f('0x2b')][_0x086f('0x2c')],function(_0x108e53){return{'name':_0x108e53[_0x086f('0x2d')],'type':_0x108e53[_0x086f('0x2e')][_0x086f('0x2f')]};});_0x16c465[_0x086f('0x30')]=_['map'](_0x358306,_0x086f('0x28'));_0x16c465[_0x086f('0x31')]=_[_0x086f('0x32')](_0x441c79['query']);_0x16c465[_0x086f('0x33')]=_['intersection'](_0x16c465[_0x086f('0x30')],_0x16c465[_0x086f('0x31')]);_0x4464cf[_0x086f('0x34')]=_[_0x086f('0x35')](_0x16c465[_0x086f('0x30')],qs[_0x086f('0x36')](_0x441c79[_0x086f('0x31')][_0x086f('0x36')]));_0x4464cf[_0x086f('0x34')]=_0x4464cf[_0x086f('0x34')]['length']?_0x4464cf[_0x086f('0x34')]:_0x16c465[_0x086f('0x30')];if(!_0x441c79[_0x086f('0x31')][_0x086f('0x37')](_0x086f('0x38'))){_0x4464cf[_0x086f('0x1e')]=qs[_0x086f('0x1e')](_0x441c79[_0x086f('0x31')][_0x086f('0x1e')]);_0x4464cf[_0x086f('0x1c')]=qs[_0x086f('0x1c')](_0x441c79['query'][_0x086f('0x1c')]);}_0x4464cf[_0x086f('0x39')]=qs[_0x086f('0x3a')](_0x441c79[_0x086f('0x31')]['sort']);_0x4464cf[_0x086f('0x3b')]=qs[_0x086f('0x33')](_[_0x086f('0x3c')](_0x441c79[_0x086f('0x31')],_0x16c465[_0x086f('0x33')]),_0x358306);if(_0x441c79[_0x086f('0x31')]['filter']){_0x4464cf['where']=_[_0x086f('0x3d')](_0x4464cf[_0x086f('0x3b')],{'$or':_['map'](_0x358306,function(_0xbb176){if(_0xbb176[_0x086f('0x2e')]!==_0x086f('0x3e')){var _0x2b651f={};_0x2b651f[_0xbb176[_0x086f('0x28')]]={'$like':'%'+_0x441c79[_0x086f('0x31')][_0x086f('0x3f')]+'%'};return _0x2b651f;}})});}_0x4464cf=_[_0x086f('0x3d')]({},_0x4464cf,_0x441c79[_0x086f('0x40')]);var _0x2aa760={'where':_0x4464cf['where']};return db[_0x086f('0x2b')][_0x086f('0x1f')](_0x2aa760)[_0x086f('0x25')](function(_0x14613b){_0x1b7e6d[_0x086f('0x1f')]=_0x14613b;if(_0x441c79[_0x086f('0x31')]['includeAll']){_0x4464cf['include']=[{'all':!![]}];}return db[_0x086f('0x2b')][_0x086f('0x41')](_0x4464cf);})[_0x086f('0x25')](function(_0xd64527){_0x1b7e6d[_0x086f('0x42')]=_0xd64527;return _0x1b7e6d;})['then'](respondWithFilteredResult(_0x5116d4,_0x4464cf))['catch'](handleError(_0x5116d4,null));};exports[_0x086f('0x43')]=function(_0x25f887,_0x508861){var _0x55f0bc={'raw':![],'where':{'id':_0x25f887[_0x086f('0x44')]['id']}},_0x412b8d={};_0x412b8d[_0x086f('0x30')]=_[_0x086f('0x32')](db['Automation'][_0x086f('0x2c')]);_0x412b8d[_0x086f('0x31')]=_[_0x086f('0x32')](_0x25f887[_0x086f('0x31')]);_0x412b8d[_0x086f('0x33')]=_[_0x086f('0x35')](_0x412b8d[_0x086f('0x30')],_0x412b8d['query']);_0x55f0bc[_0x086f('0x34')]=_['intersection'](_0x412b8d[_0x086f('0x30')],qs[_0x086f('0x36')](_0x25f887['query'][_0x086f('0x36')]));_0x55f0bc[_0x086f('0x34')]=_0x55f0bc['attributes'][_0x086f('0x45')]?_0x55f0bc['attributes']:_0x412b8d['model'];if(_0x25f887[_0x086f('0x31')][_0x086f('0x46')]){_0x55f0bc['include']=[{'all':!![]}];}_0x55f0bc=_[_0x086f('0x3d')]({},_0x55f0bc,_0x25f887[_0x086f('0x40')]);return db[_0x086f('0x2b')][_0x086f('0x47')](_0x55f0bc)['then'](handleEntityNotFound(_0x508861,null))[_0x086f('0x25')](respondWithResult(_0x508861,null))[_0x086f('0x48')](handleError(_0x508861,null));};exports[_0x086f('0x49')]=function(_0x8f5df9,_0x20fdfc){return db[_0x086f('0x2b')][_0x086f('0x49')](_0x8f5df9[_0x086f('0x4a')],{})[_0x086f('0x25')](respondWithResult(_0x20fdfc,0xc9))[_0x086f('0x48')](handleError(_0x20fdfc,null));};exports[_0x086f('0x24')]=function(_0x583a5a,_0x5dfbc3){if(_0x583a5a[_0x086f('0x4a')]['id']){delete _0x583a5a[_0x086f('0x4a')]['id'];}return db['Automation'][_0x086f('0x47')]({'where':{'id':_0x583a5a[_0x086f('0x44')]['id']}})[_0x086f('0x25')](handleEntityNotFound(_0x5dfbc3,null))[_0x086f('0x25')](saveUpdates(_0x583a5a[_0x086f('0x4a')],null))[_0x086f('0x25')](respondWithResult(_0x5dfbc3,null))['catch'](handleError(_0x5dfbc3,null));};exports[_0x086f('0x4b')]=function(_0x326271,_0x101105){return db[_0x086f('0x2b')][_0x086f('0x47')]({'where':{'id':_0x326271['params']['id']}})['then'](handleEntityNotFound(_0x101105,null))[_0x086f('0x25')](removeEntity(_0x101105,null))[_0x086f('0x48')](handleError(_0x101105,null));};exports[_0x086f('0x4c')]=function(_0x46c5c8,_0x3b101c,_0x53ec28){return db['Condition']['find']({'where':{'id':_0x46c5c8[_0x086f('0x44')]['id']}})[_0x086f('0x25')](handleEntityNotFound(_0x3b101c,null))[_0x086f('0x25')](function(_0x330166){if(_0x330166){return _0x330166['addConditions'](_0x46c5c8[_0x086f('0x4a')]['ids'],_['omit'](_0x46c5c8[_0x086f('0x4a')],[_0x086f('0x4d'),'id'])||{});}})['then'](respondWithResult(_0x3b101c,null))[_0x086f('0x48')](handleError(_0x3b101c,null));};exports[_0x086f('0x4e')]=function(_0x193500,_0x441f1d,_0x2fc5f3){var _0x5daee7={};var _0x5c1e0e={};var _0x3102d1;var _0xf83b8a;return db['Automation'][_0x086f('0x4f')]({'where':{'id':_0x193500['params']['id']}})[_0x086f('0x25')](handleEntityNotFound(_0x441f1d,null))[_0x086f('0x25')](function(_0x1b4f60){if(_0x1b4f60){_0x3102d1=_0x1b4f60;_0x5c1e0e['model']=_[_0x086f('0x32')](db['Condition'][_0x086f('0x2c')]);_0x5c1e0e[_0x086f('0x31')]=_[_0x086f('0x32')](_0x193500['query']);_0x5c1e0e['filters']=_[_0x086f('0x35')](_0x5c1e0e[_0x086f('0x30')],_0x5c1e0e[_0x086f('0x31')]);_0x5daee7[_0x086f('0x34')]=_[_0x086f('0x35')](_0x5c1e0e[_0x086f('0x30')],qs[_0x086f('0x36')](_0x193500[_0x086f('0x31')]['fields']));_0x5daee7['attributes']=_0x5daee7['attributes'][_0x086f('0x45')]?_0x5daee7[_0x086f('0x34')]:_0x5c1e0e['model'];_0x5daee7[_0x086f('0x39')]=qs['sort'](_0x193500['query'][_0x086f('0x3a')]);_0x5daee7['where']=qs['filters'](_[_0x086f('0x3c')](_0x193500[_0x086f('0x31')],_0x5c1e0e[_0x086f('0x33')]));if(_0x193500[_0x086f('0x31')]['filter']){_0x5daee7[_0x086f('0x3b')]=_['merge'](_0x5daee7['where'],{'$or':_[_0x086f('0x2a')](_0x5daee7[_0x086f('0x34')],function(_0x54a549){var _0x9ae003={};_0x9ae003[_0x54a549]={'$like':'%'+_0x193500[_0x086f('0x31')]['filter']+'%'};return _0x9ae003;})});}_0x5daee7=_[_0x086f('0x3d')]({},_0x5daee7,_0x193500[_0x086f('0x40')]);return _0x3102d1[_0x086f('0x4e')](_0x5daee7);}})['then'](function(_0x13e6d2){if(_0x13e6d2){_0xf83b8a=_0x13e6d2[_0x086f('0x45')];if(!_0x193500['query'][_0x086f('0x37')](_0x086f('0x38'))){_0x5daee7[_0x086f('0x1e')]=qs['limit'](_0x193500['query'][_0x086f('0x1e')]);_0x5daee7['offset']=qs[_0x086f('0x1c')](_0x193500[_0x086f('0x31')][_0x086f('0x1c')]);}return _0x3102d1['getConditions'](_0x5daee7);}})['then'](function(_0x3efdab){if(_0x3efdab){return _0x3efdab?{'count':_0xf83b8a,'rows':_0x3efdab}:null;}})[_0x086f('0x25')](respondWithResult(_0x441f1d,null))[_0x086f('0x48')](handleError(_0x441f1d,null));};exports['addActions']=function(_0x1e2dec,_0x1ddf44,_0xcfb6d6){return db[_0x086f('0x50')]['find']({'where':{'id':_0x1e2dec[_0x086f('0x44')]['id']}})[_0x086f('0x25')](handleEntityNotFound(_0x1ddf44,null))[_0x086f('0x25')](function(_0xe26a30){if(_0xe26a30){return _0xe26a30['addActions'](_0x1e2dec[_0x086f('0x4a')]['ids'],_[_0x086f('0x51')](_0x1e2dec['body'],[_0x086f('0x4d'),'id'])||{});}})[_0x086f('0x25')](respondWithResult(_0x1ddf44,null))[_0x086f('0x48')](handleError(_0x1ddf44,null));};exports[_0x086f('0x52')]=function(_0x8ac7f6,_0x4326cf,_0x355b4f){var _0x38d494={};var _0x495655={};var _0x4ad678;var _0x528b30;return db[_0x086f('0x2b')][_0x086f('0x4f')]({'where':{'id':_0x8ac7f6[_0x086f('0x44')]['id']}})[_0x086f('0x25')](handleEntityNotFound(_0x4326cf,null))['then'](function(_0x3e6e3f){if(_0x3e6e3f){_0x4ad678=_0x3e6e3f;_0x495655[_0x086f('0x30')]=_['keys'](db[_0x086f('0x50')]['rawAttributes']);_0x495655[_0x086f('0x31')]=_[_0x086f('0x32')](_0x8ac7f6['query']);_0x495655[_0x086f('0x33')]=_[_0x086f('0x35')](_0x495655[_0x086f('0x30')],_0x495655[_0x086f('0x31')]);_0x38d494[_0x086f('0x34')]=_[_0x086f('0x35')](_0x495655[_0x086f('0x30')],qs[_0x086f('0x36')](_0x8ac7f6[_0x086f('0x31')][_0x086f('0x36')]));_0x38d494[_0x086f('0x34')]=_0x38d494['attributes'][_0x086f('0x45')]?_0x38d494[_0x086f('0x34')]:_0x495655['model'];_0x38d494[_0x086f('0x39')]=qs[_0x086f('0x3a')](_0x8ac7f6[_0x086f('0x31')][_0x086f('0x3a')]);_0x38d494['where']=qs[_0x086f('0x33')](_[_0x086f('0x3c')](_0x8ac7f6[_0x086f('0x31')],_0x495655[_0x086f('0x33')]));if(_0x8ac7f6[_0x086f('0x31')][_0x086f('0x3f')]){_0x38d494[_0x086f('0x3b')]=_[_0x086f('0x3d')](_0x38d494['where'],{'$or':_[_0x086f('0x2a')](_0x38d494['attributes'],function(_0x29eb05){var _0x153fba={};_0x153fba[_0x29eb05]={'$like':'%'+_0x8ac7f6[_0x086f('0x31')][_0x086f('0x3f')]+'%'};return _0x153fba;})});}_0x38d494=_['merge']({},_0x38d494,_0x8ac7f6[_0x086f('0x40')]);return _0x4ad678['getActions'](_0x38d494);}})[_0x086f('0x25')](function(_0x273771){if(_0x273771){_0x528b30=_0x273771[_0x086f('0x45')];if(!_0x8ac7f6['query'][_0x086f('0x37')](_0x086f('0x38'))){_0x38d494[_0x086f('0x1e')]=qs['limit'](_0x8ac7f6['query'][_0x086f('0x1e')]);_0x38d494[_0x086f('0x1c')]=qs[_0x086f('0x1c')](_0x8ac7f6[_0x086f('0x31')][_0x086f('0x1c')]);}return _0x4ad678[_0x086f('0x52')](_0x38d494);}})[_0x086f('0x25')](function(_0xa34fa6){if(_0xa34fa6){return _0xa34fa6?{'count':_0x528b30,'rows':_0xa34fa6}:null;}})[_0x086f('0x25')](respondWithResult(_0x4326cf,null))[_0x086f('0x48')](handleError(_0x4326cf,null));};
\ No newline at end of file
+var _0x6cef=['includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','addConditions','ids','omit','getConditions','findOne','Condition','addActions','Action','getActions','rimraf','fast-json-patch','request-promise','bluebird','util','path','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','limit','count','set','Content-Range','json','reject','save','update','then','destroy','end','error','name','index','Automation','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options'];(function(_0x11008e,_0x3c9be6){var _0x4ae70d=function(_0x1f9c52){while(--_0x1f9c52){_0x11008e['push'](_0x11008e['shift']());}};_0x4ae70d(++_0x3c9be6);}(_0x6cef,0xb6));var _0xf6ce=function(_0x4a48cf,_0x5f1870){_0x4a48cf=_0x4a48cf-0x0;var _0x24a970=_0x6cef[_0x4a48cf];return _0x24a970;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf6ce('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf6ce('0x1'));var rp=require(_0xf6ce('0x2'));var moment=require('moment');var BPromise=require(_0xf6ce('0x3'));var Mustache=require('mustache');var util=require(_0xf6ce('0x4'));var path=require(_0xf6ce('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf6ce('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf6ce('0x7'));var squel=require('squel');var crypto=require(_0xf6ce('0x8'));var jsforce=require(_0xf6ce('0x9'));var deskjs=require(_0xf6ce('0xa'));var toCsv=require(_0xf6ce('0xb'));var querystring=require(_0xf6ce('0xc'));var Papa=require(_0xf6ce('0xd'));var Redis=require('ioredis');var authService=require(_0xf6ce('0xe'));var qs=require(_0xf6ce('0xf'));var as=require(_0xf6ce('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf6ce('0x11'))(_0xf6ce('0x12'));var utils=require(_0xf6ce('0x13'));var config=require(_0xf6ce('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xf6ce('0x15'))['db'];function respondWithStatusCode(_0xeee64d,_0x146a5b){_0x146a5b=_0x146a5b||0xcc;return function(_0x20e323){if(_0x20e323){return _0xeee64d[_0xf6ce('0x16')](_0x146a5b);}return _0xeee64d['status'](_0x146a5b)['end']();};}function respondWithResult(_0x399b2d,_0x4545c1){_0x4545c1=_0x4545c1||0xc8;return function(_0x3f2bfb){if(_0x3f2bfb){return _0x399b2d[_0xf6ce('0x17')](_0x4545c1)['json'](_0x3f2bfb);}};}function respondWithFilteredResult(_0x46ee31,_0x2f3ecb){return function(_0x5bdb44){if(_0x5bdb44){var _0x37a366=typeof _0x2f3ecb[_0xf6ce('0x18')]==='undefined'&&typeof _0x2f3ecb[_0xf6ce('0x19')]==='undefined';var _0x443f7c=_0x5bdb44[_0xf6ce('0x1a')];var _0x3056fe=_0x37a366?0x0:_0x2f3ecb[_0xf6ce('0x18')];var _0x281943=_0x37a366?_0x5bdb44[_0xf6ce('0x1a')]:_0x2f3ecb['offset']+_0x2f3ecb[_0xf6ce('0x19')];var _0x1b2268;if(_0x281943>=_0x443f7c){_0x281943=_0x443f7c;_0x1b2268=0xc8;}else{_0x1b2268=0xce;}_0x46ee31[_0xf6ce('0x17')](_0x1b2268);return _0x46ee31[_0xf6ce('0x1b')](_0xf6ce('0x1c'),_0x3056fe+'-'+_0x281943+'/'+_0x443f7c)[_0xf6ce('0x1d')](_0x5bdb44);}return null;};}function patchUpdates(_0x29a2df){return function(_0x38d6c2){try{jsonpatch['apply'](_0x38d6c2,_0x29a2df,!![]);}catch(_0x2cac30){return BPromise[_0xf6ce('0x1e')](_0x2cac30);}return _0x38d6c2[_0xf6ce('0x1f')]();};}function saveUpdates(_0x3cf335,_0x194abd){return function(_0x4b4bbc){if(_0x4b4bbc){return _0x4b4bbc[_0xf6ce('0x20')](_0x3cf335)[_0xf6ce('0x21')](function(_0x90c253){return _0x90c253;});}return null;};}function removeEntity(_0x4ed721,_0x82cbda){return function(_0x5bcadd){if(_0x5bcadd){return _0x5bcadd[_0xf6ce('0x22')]()[_0xf6ce('0x21')](function(){_0x4ed721['status'](0xcc)[_0xf6ce('0x23')]();});}};}function handleEntityNotFound(_0x2f7729,_0x2d0a56){return function(_0x5b0030){if(!_0x5b0030){_0x2f7729['sendStatus'](0x194);}return _0x5b0030;};}function handleError(_0x1fdd98,_0x1a1461){_0x1a1461=_0x1a1461||0x1f4;return function(_0x553dc9){logger[_0xf6ce('0x24')](_0x553dc9['stack']);if(_0x553dc9[_0xf6ce('0x25')]){delete _0x553dc9[_0xf6ce('0x25')];}_0x1fdd98['status'](_0x1a1461)['send'](_0x553dc9);};}exports[_0xf6ce('0x26')]=function(_0x4abab6,_0x416864){var _0x3352b2={},_0x3d0a6a={},_0x1b8ac9={'count':0x0,'rows':[]};var _0xa6e54a=_['map'](db[_0xf6ce('0x27')]['rawAttributes'],function(_0x167a0d){return{'name':_0x167a0d[_0xf6ce('0x28')],'type':_0x167a0d['type'][_0xf6ce('0x29')]};});_0x3d0a6a[_0xf6ce('0x2a')]=_[_0xf6ce('0x2b')](_0xa6e54a,'name');_0x3d0a6a[_0xf6ce('0x2c')]=_[_0xf6ce('0x2d')](_0x4abab6[_0xf6ce('0x2c')]);_0x3d0a6a[_0xf6ce('0x2e')]=_[_0xf6ce('0x2f')](_0x3d0a6a[_0xf6ce('0x2a')],_0x3d0a6a[_0xf6ce('0x2c')]);_0x3352b2['attributes']=_[_0xf6ce('0x2f')](_0x3d0a6a[_0xf6ce('0x2a')],qs['fields'](_0x4abab6['query'][_0xf6ce('0x30')]));_0x3352b2[_0xf6ce('0x31')]=_0x3352b2[_0xf6ce('0x31')][_0xf6ce('0x32')]?_0x3352b2[_0xf6ce('0x31')]:_0x3d0a6a[_0xf6ce('0x2a')];if(!_0x4abab6[_0xf6ce('0x2c')][_0xf6ce('0x33')](_0xf6ce('0x34'))){_0x3352b2['limit']=qs[_0xf6ce('0x19')](_0x4abab6[_0xf6ce('0x2c')][_0xf6ce('0x19')]);_0x3352b2['offset']=qs[_0xf6ce('0x18')](_0x4abab6[_0xf6ce('0x2c')][_0xf6ce('0x18')]);}_0x3352b2[_0xf6ce('0x35')]=qs[_0xf6ce('0x36')](_0x4abab6[_0xf6ce('0x2c')][_0xf6ce('0x36')]);_0x3352b2[_0xf6ce('0x37')]=qs[_0xf6ce('0x2e')](_[_0xf6ce('0x38')](_0x4abab6[_0xf6ce('0x2c')],_0x3d0a6a[_0xf6ce('0x2e')]),_0xa6e54a);if(_0x4abab6[_0xf6ce('0x2c')][_0xf6ce('0x39')]){_0x3352b2[_0xf6ce('0x37')]=_[_0xf6ce('0x3a')](_0x3352b2[_0xf6ce('0x37')],{'$or':_[_0xf6ce('0x2b')](_0xa6e54a,function(_0x9197bc){if(_0x9197bc['type']!==_0xf6ce('0x3b')){var _0x4af382={};_0x4af382[_0x9197bc['name']]={'$like':'%'+_0x4abab6['query'][_0xf6ce('0x39')]+'%'};return _0x4af382;}})});}_0x3352b2=_[_0xf6ce('0x3a')]({},_0x3352b2,_0x4abab6[_0xf6ce('0x3c')]);var _0x27d024={'where':_0x3352b2[_0xf6ce('0x37')]};return db[_0xf6ce('0x27')][_0xf6ce('0x1a')](_0x27d024)[_0xf6ce('0x21')](function(_0x525932){_0x1b8ac9[_0xf6ce('0x1a')]=_0x525932;if(_0x4abab6[_0xf6ce('0x2c')][_0xf6ce('0x3d')]){_0x3352b2[_0xf6ce('0x3e')]=[{'all':!![]}];}return db[_0xf6ce('0x27')][_0xf6ce('0x3f')](_0x3352b2);})[_0xf6ce('0x21')](function(_0x2102af){_0x1b8ac9[_0xf6ce('0x40')]=_0x2102af;return _0x1b8ac9;})[_0xf6ce('0x21')](respondWithFilteredResult(_0x416864,_0x3352b2))[_0xf6ce('0x41')](handleError(_0x416864,null));};exports[_0xf6ce('0x42')]=function(_0x5cb118,_0x4db790){var _0x1cb13c={'raw':![],'where':{'id':_0x5cb118[_0xf6ce('0x43')]['id']}},_0x92f9f5={};_0x92f9f5[_0xf6ce('0x2a')]=_[_0xf6ce('0x2d')](db[_0xf6ce('0x27')][_0xf6ce('0x44')]);_0x92f9f5[_0xf6ce('0x2c')]=_['keys'](_0x5cb118[_0xf6ce('0x2c')]);_0x92f9f5[_0xf6ce('0x2e')]=_[_0xf6ce('0x2f')](_0x92f9f5[_0xf6ce('0x2a')],_0x92f9f5[_0xf6ce('0x2c')]);_0x1cb13c[_0xf6ce('0x31')]=_[_0xf6ce('0x2f')](_0x92f9f5[_0xf6ce('0x2a')],qs['fields'](_0x5cb118[_0xf6ce('0x2c')][_0xf6ce('0x30')]));_0x1cb13c[_0xf6ce('0x31')]=_0x1cb13c[_0xf6ce('0x31')][_0xf6ce('0x32')]?_0x1cb13c[_0xf6ce('0x31')]:_0x92f9f5[_0xf6ce('0x2a')];if(_0x5cb118[_0xf6ce('0x2c')][_0xf6ce('0x3d')]){_0x1cb13c[_0xf6ce('0x3e')]=[{'all':!![]}];}_0x1cb13c=_[_0xf6ce('0x3a')]({},_0x1cb13c,_0x5cb118['options']);return db[_0xf6ce('0x27')][_0xf6ce('0x45')](_0x1cb13c)[_0xf6ce('0x21')](handleEntityNotFound(_0x4db790,null))[_0xf6ce('0x21')](respondWithResult(_0x4db790,null))['catch'](handleError(_0x4db790,null));};exports['create']=function(_0x248d90,_0x3c183a){return db[_0xf6ce('0x27')][_0xf6ce('0x46')](_0x248d90['body'],{})[_0xf6ce('0x21')](respondWithResult(_0x3c183a,0xc9))['catch'](handleError(_0x3c183a,null));};exports[_0xf6ce('0x20')]=function(_0x1debee,_0x5c62d2){if(_0x1debee[_0xf6ce('0x47')]['id']){delete _0x1debee['body']['id'];}return db[_0xf6ce('0x27')][_0xf6ce('0x45')]({'where':{'id':_0x1debee[_0xf6ce('0x43')]['id']}})['then'](handleEntityNotFound(_0x5c62d2,null))['then'](saveUpdates(_0x1debee[_0xf6ce('0x47')],null))[_0xf6ce('0x21')](respondWithResult(_0x5c62d2,null))[_0xf6ce('0x41')](handleError(_0x5c62d2,null));};exports[_0xf6ce('0x22')]=function(_0x434de8,_0x4152e5){return db[_0xf6ce('0x27')][_0xf6ce('0x45')]({'where':{'id':_0x434de8[_0xf6ce('0x43')]['id']}})[_0xf6ce('0x21')](handleEntityNotFound(_0x4152e5,null))['then'](removeEntity(_0x4152e5,null))[_0xf6ce('0x41')](handleError(_0x4152e5,null));};exports[_0xf6ce('0x48')]=function(_0x19d0ba,_0x1acc7a,_0x3fea2c){return db['Condition'][_0xf6ce('0x45')]({'where':{'id':_0x19d0ba['params']['id']}})[_0xf6ce('0x21')](handleEntityNotFound(_0x1acc7a,null))[_0xf6ce('0x21')](function(_0x1b32fd){if(_0x1b32fd){return _0x1b32fd[_0xf6ce('0x48')](_0x19d0ba[_0xf6ce('0x47')][_0xf6ce('0x49')],_[_0xf6ce('0x4a')](_0x19d0ba[_0xf6ce('0x47')],[_0xf6ce('0x49'),'id'])||{});}})[_0xf6ce('0x21')](respondWithResult(_0x1acc7a,null))[_0xf6ce('0x41')](handleError(_0x1acc7a,null));};exports[_0xf6ce('0x4b')]=function(_0x51ea2b,_0x56c89e,_0x537d7e){var _0x4fbcdb={};var _0x2d0865={};var _0x3ee344;var _0x556007;return db['Automation'][_0xf6ce('0x4c')]({'where':{'id':_0x51ea2b['params']['id']}})['then'](handleEntityNotFound(_0x56c89e,null))[_0xf6ce('0x21')](function(_0xe51ee2){if(_0xe51ee2){_0x3ee344=_0xe51ee2;_0x2d0865[_0xf6ce('0x2a')]=_[_0xf6ce('0x2d')](db[_0xf6ce('0x4d')][_0xf6ce('0x44')]);_0x2d0865[_0xf6ce('0x2c')]=_[_0xf6ce('0x2d')](_0x51ea2b['query']);_0x2d0865['filters']=_[_0xf6ce('0x2f')](_0x2d0865[_0xf6ce('0x2a')],_0x2d0865[_0xf6ce('0x2c')]);_0x4fbcdb[_0xf6ce('0x31')]=_[_0xf6ce('0x2f')](_0x2d0865[_0xf6ce('0x2a')],qs[_0xf6ce('0x30')](_0x51ea2b[_0xf6ce('0x2c')][_0xf6ce('0x30')]));_0x4fbcdb[_0xf6ce('0x31')]=_0x4fbcdb[_0xf6ce('0x31')][_0xf6ce('0x32')]?_0x4fbcdb[_0xf6ce('0x31')]:_0x2d0865['model'];_0x4fbcdb[_0xf6ce('0x35')]=qs[_0xf6ce('0x36')](_0x51ea2b[_0xf6ce('0x2c')]['sort']);_0x4fbcdb[_0xf6ce('0x37')]=qs[_0xf6ce('0x2e')](_[_0xf6ce('0x38')](_0x51ea2b[_0xf6ce('0x2c')],_0x2d0865[_0xf6ce('0x2e')]));if(_0x51ea2b[_0xf6ce('0x2c')][_0xf6ce('0x39')]){_0x4fbcdb[_0xf6ce('0x37')]=_['merge'](_0x4fbcdb[_0xf6ce('0x37')],{'$or':_[_0xf6ce('0x2b')](_0x4fbcdb[_0xf6ce('0x31')],function(_0x4b43c5){var _0x1ba31e={};_0x1ba31e[_0x4b43c5]={'$like':'%'+_0x51ea2b[_0xf6ce('0x2c')]['filter']+'%'};return _0x1ba31e;})});}_0x4fbcdb=_[_0xf6ce('0x3a')]({},_0x4fbcdb,_0x51ea2b['options']);return _0x3ee344['getConditions'](_0x4fbcdb);}})[_0xf6ce('0x21')](function(_0x593c38){if(_0x593c38){_0x556007=_0x593c38[_0xf6ce('0x32')];if(!_0x51ea2b[_0xf6ce('0x2c')][_0xf6ce('0x33')](_0xf6ce('0x34'))){_0x4fbcdb[_0xf6ce('0x19')]=qs[_0xf6ce('0x19')](_0x51ea2b[_0xf6ce('0x2c')]['limit']);_0x4fbcdb[_0xf6ce('0x18')]=qs[_0xf6ce('0x18')](_0x51ea2b[_0xf6ce('0x2c')][_0xf6ce('0x18')]);}return _0x3ee344[_0xf6ce('0x4b')](_0x4fbcdb);}})[_0xf6ce('0x21')](function(_0x2626f0){if(_0x2626f0){return _0x2626f0?{'count':_0x556007,'rows':_0x2626f0}:null;}})['then'](respondWithResult(_0x56c89e,null))[_0xf6ce('0x41')](handleError(_0x56c89e,null));};exports[_0xf6ce('0x4e')]=function(_0x1d3c92,_0x19bc7a,_0x566a02){return db[_0xf6ce('0x4f')][_0xf6ce('0x45')]({'where':{'id':_0x1d3c92[_0xf6ce('0x43')]['id']}})[_0xf6ce('0x21')](handleEntityNotFound(_0x19bc7a,null))[_0xf6ce('0x21')](function(_0x326ea5){if(_0x326ea5){return _0x326ea5['addActions'](_0x1d3c92[_0xf6ce('0x47')][_0xf6ce('0x49')],_[_0xf6ce('0x4a')](_0x1d3c92['body'],[_0xf6ce('0x49'),'id'])||{});}})[_0xf6ce('0x21')](respondWithResult(_0x19bc7a,null))[_0xf6ce('0x41')](handleError(_0x19bc7a,null));};exports[_0xf6ce('0x50')]=function(_0x3fc2bb,_0x16cb59,_0x462dd9){var _0xb10df7={};var _0x542fe5={};var _0x264339;var _0x16216d;return db[_0xf6ce('0x27')]['findOne']({'where':{'id':_0x3fc2bb[_0xf6ce('0x43')]['id']}})[_0xf6ce('0x21')](handleEntityNotFound(_0x16cb59,null))['then'](function(_0x391429){if(_0x391429){_0x264339=_0x391429;_0x542fe5['model']=_['keys'](db[_0xf6ce('0x4f')]['rawAttributes']);_0x542fe5[_0xf6ce('0x2c')]=_['keys'](_0x3fc2bb['query']);_0x542fe5[_0xf6ce('0x2e')]=_[_0xf6ce('0x2f')](_0x542fe5[_0xf6ce('0x2a')],_0x542fe5[_0xf6ce('0x2c')]);_0xb10df7[_0xf6ce('0x31')]=_[_0xf6ce('0x2f')](_0x542fe5[_0xf6ce('0x2a')],qs[_0xf6ce('0x30')](_0x3fc2bb[_0xf6ce('0x2c')]['fields']));_0xb10df7[_0xf6ce('0x31')]=_0xb10df7['attributes'][_0xf6ce('0x32')]?_0xb10df7['attributes']:_0x542fe5[_0xf6ce('0x2a')];_0xb10df7[_0xf6ce('0x35')]=qs['sort'](_0x3fc2bb['query'][_0xf6ce('0x36')]);_0xb10df7['where']=qs[_0xf6ce('0x2e')](_['pick'](_0x3fc2bb[_0xf6ce('0x2c')],_0x542fe5[_0xf6ce('0x2e')]));if(_0x3fc2bb['query']['filter']){_0xb10df7[_0xf6ce('0x37')]=_[_0xf6ce('0x3a')](_0xb10df7['where'],{'$or':_[_0xf6ce('0x2b')](_0xb10df7[_0xf6ce('0x31')],function(_0x1e9240){var _0x517590={};_0x517590[_0x1e9240]={'$like':'%'+_0x3fc2bb['query'][_0xf6ce('0x39')]+'%'};return _0x517590;})});}_0xb10df7=_[_0xf6ce('0x3a')]({},_0xb10df7,_0x3fc2bb[_0xf6ce('0x3c')]);return _0x264339[_0xf6ce('0x50')](_0xb10df7);}})['then'](function(_0x2c71a3){if(_0x2c71a3){_0x16216d=_0x2c71a3[_0xf6ce('0x32')];if(!_0x3fc2bb[_0xf6ce('0x2c')][_0xf6ce('0x33')](_0xf6ce('0x34'))){_0xb10df7[_0xf6ce('0x19')]=qs[_0xf6ce('0x19')](_0x3fc2bb[_0xf6ce('0x2c')][_0xf6ce('0x19')]);_0xb10df7[_0xf6ce('0x18')]=qs[_0xf6ce('0x18')](_0x3fc2bb[_0xf6ce('0x2c')][_0xf6ce('0x18')]);}return _0x264339[_0xf6ce('0x50')](_0xb10df7);}})[_0xf6ce('0x21')](function(_0x1376e1){if(_0x1376e1){return _0x1376e1?{'count':_0x16216d,'rows':_0x1376e1}:null;}})[_0xf6ce('0x21')](respondWithResult(_0x16cb59,null))[_0xf6ce('0x41')](handleError(_0x16cb59,null));};
\ No newline at end of file
index d25db22..8a14f50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68ab=['lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./automation.attributes','exports','define','Automation','tools_automations'];(function(_0x206f57,_0x47781c){var _0x1fd9d5=function(_0x3a8339){while(--_0x3a8339){_0x206f57['push'](_0x206f57['shift']());}};_0x1fd9d5(++_0x47781c);}(_0x68ab,0x12b));var _0xb68a=function(_0x3a4236,_0x1488df){_0x3a4236=_0x3a4236-0x0;var _0x52d615=_0x68ab[_0x3a4236];return _0x52d615;};'use strict';var _=require(_0xb68a('0x0'));var util=require(_0xb68a('0x1'));var logger=require(_0xb68a('0x2'))(_0xb68a('0x3'));var moment=require(_0xb68a('0x4'));var BPromise=require('bluebird');var rp=require(_0xb68a('0x5'));var fs=require('fs');var path=require(_0xb68a('0x6'));var rimraf=require(_0xb68a('0x7'));var config=require('../../config/environment');var attributes=require(_0xb68a('0x8'));module[_0xb68a('0x9')]=function(_0x51dafd,_0x2d2b0f){return _0x51dafd[_0xb68a('0xa')](_0xb68a('0xb'),attributes,{'tableName':_0xb68a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe3da=['define','tools_automations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./automation.attributes','exports'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xe3da,0xb8));var _0xae3d=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xe3da[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0xae3d('0x0'));var util=require(_0xae3d('0x1'));var logger=require(_0xae3d('0x2'))(_0xae3d('0x3'));var moment=require(_0xae3d('0x4'));var BPromise=require(_0xae3d('0x5'));var rp=require(_0xae3d('0x6'));var fs=require('fs');var path=require(_0xae3d('0x7'));var rimraf=require(_0xae3d('0x8'));var config=require(_0xae3d('0x9'));var attributes=require(_0xae3d('0xa'));module[_0xae3d('0xb')]=function(_0x2ee7c1,_0x3256e2){return _0x2ee7c1[_0xae3d('0xc')]('Automation',attributes,{'tableName':_0xae3d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6192f93..b7304b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82d8=['jayson/promise','client','http','request','then','info','Automation,\x20%s,\x20%s','debug','Automation,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','moment','ioredis','../../config/utils','../../config/environment'];(function(_0x44be9a,_0x5ce1a6){var _0x3dbb78=function(_0x19fdd0){while(--_0x19fdd0){_0x44be9a['push'](_0x44be9a['shift']());}};_0x3dbb78(++_0x5ce1a6);}(_0x82d8,0xff));var _0x882d=function(_0xed829f,_0x20c3e6){_0xed829f=_0xed829f-0x0;var _0x96fc6b=_0x82d8[_0xed829f];return _0x96fc6b;};'use strict';var _=require(_0x882d('0x0'));var util=require('util');var moment=require(_0x882d('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x882d('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x882d('0x3'));var logger=require('../../config/logger')('rpc');var config=require(_0x882d('0x4'));var jayson=require(_0x882d('0x5'));var client=jayson[_0x882d('0x6')][_0x882d('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xb7539b,_0x3c8b67,_0x4067a9){return new BPromise(function(_0x4ea710,_0x4035ba){return client[_0x882d('0x8')](_0xb7539b,_0x4067a9)[_0x882d('0x9')](function(_0x4da4aa){logger[_0x882d('0xa')](_0x882d('0xb'),_0x3c8b67,'request\x20sent');logger[_0x882d('0xc')](_0x882d('0xd'),_0x3c8b67,_0x882d('0xe'),JSON['stringify'](_0x4da4aa));if(_0x4da4aa[_0x882d('0xf')]){if(_0x4da4aa[_0x882d('0xf')][_0x882d('0x10')]===0x1f4){logger[_0x882d('0xf')](_0x882d('0xb'),_0x3c8b67,_0x4da4aa[_0x882d('0xf')][_0x882d('0x11')]);return _0x4035ba(_0x4da4aa['error']['message']);}logger[_0x882d('0xf')](_0x882d('0xb'),_0x3c8b67,_0x4da4aa[_0x882d('0xf')][_0x882d('0x11')]);return _0x4ea710(_0x4da4aa[_0x882d('0xf')]['message']);}else{logger[_0x882d('0xa')](_0x882d('0xb'),_0x3c8b67,_0x882d('0xe'));_0x4ea710(_0x4da4aa[_0x882d('0x12')][_0x882d('0x11')]);}})[_0x882d('0x13')](function(_0x46cfcc){logger[_0x882d('0xf')](_0x882d('0xb'),_0x3c8b67,_0x46cfcc);_0x4035ba(_0x46cfcc);});});}
\ No newline at end of file
+var _0x6132=['../../config/logger','../../config/environment','client','http','then','info','Automation,\x20%s,\x20%s','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','bluebird','randomstring','ioredis'];(function(_0x5b6988,_0x67e002){var _0x4e2cc9=function(_0x1f3a40){while(--_0x1f3a40){_0x5b6988['push'](_0x5b6988['shift']());}};_0x4e2cc9(++_0x67e002);}(_0x6132,0xf3));var _0x2613=function(_0x435149,_0x4d9424){_0x435149=_0x435149-0x0;var _0x360fcd=_0x6132[_0x435149];return _0x360fcd;};'use strict';var _=require('lodash');var util=require(_0x2613('0x0'));var moment=require('moment');var BPromise=require(_0x2613('0x1'));var rs=require(_0x2613('0x2'));var fs=require('fs');var Redis=require(_0x2613('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2613('0x4'))('rpc');var config=require(_0x2613('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x2613('0x6')][_0x2613('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1083a6,_0x546fd4,_0x43c9d4){return new BPromise(function(_0x43c876,_0x51f79d){return client['request'](_0x1083a6,_0x43c9d4)[_0x2613('0x8')](function(_0x47dfc5){logger[_0x2613('0x9')](_0x2613('0xa'),_0x546fd4,_0x2613('0xb'));logger[_0x2613('0xc')](_0x2613('0xd'),_0x546fd4,_0x2613('0xb'),JSON['stringify'](_0x47dfc5));if(_0x47dfc5[_0x2613('0xe')]){if(_0x47dfc5[_0x2613('0xe')][_0x2613('0xf')]===0x1f4){logger[_0x2613('0xe')]('Automation,\x20%s,\x20%s',_0x546fd4,_0x47dfc5[_0x2613('0xe')][_0x2613('0x10')]);return _0x51f79d(_0x47dfc5[_0x2613('0xe')][_0x2613('0x10')]);}logger[_0x2613('0xe')](_0x2613('0xa'),_0x546fd4,_0x47dfc5[_0x2613('0xe')][_0x2613('0x10')]);return _0x43c876(_0x47dfc5[_0x2613('0xe')][_0x2613('0x10')]);}else{logger[_0x2613('0x9')](_0x2613('0xa'),_0x546fd4,_0x2613('0xb'));_0x43c876(_0x47dfc5[_0x2613('0x11')][_0x2613('0x10')]);}})[_0x2613('0x12')](function(_0xb99fd7){logger[_0x2613('0xe')](_0x2613('0xa'),_0x546fd4,_0xb99fd7);_0x51f79d(_0xb99fd7);});});}
\ No newline at end of file
index 79c9aed..d933787 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7025=['getActions','post','create','addActions','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','/:id','show','/:id/conditions','getConditions','/:id/actions'];(function(_0x384e0a,_0x520fcd){var _0x1c719b=function(_0x532460){while(--_0x532460){_0x384e0a['push'](_0x384e0a['shift']());}};_0x1c719b(++_0x520fcd);}(_0x7025,0x132));var _0x5702=function(_0x7dac20,_0x226beb){_0x7dac20=_0x7dac20-0x0;var _0x2903e3=_0x7025[_0x7dac20];return _0x2903e3;};'use strict';var multer=require(_0x5702('0x0'));var util=require(_0x5702('0x1'));var path=require(_0x5702('0x2'));var timeout=require(_0x5702('0x3'));var express=require('express');var router=express[_0x5702('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x5702('0x5'));var interaction=require(_0x5702('0x6'));var config=require(_0x5702('0x7'));var controller=require(_0x5702('0x8'));router[_0x5702('0x9')]('/',auth[_0x5702('0xa')](),controller['index']);router['get'](_0x5702('0xb'),auth[_0x5702('0xa')](),controller[_0x5702('0xc')]);router[_0x5702('0x9')](_0x5702('0xd'),auth[_0x5702('0xa')](),controller[_0x5702('0xe')]);router[_0x5702('0x9')](_0x5702('0xf'),auth[_0x5702('0xa')](),controller[_0x5702('0x10')]);router[_0x5702('0x11')]('/',auth[_0x5702('0xa')](),controller[_0x5702('0x12')]);router[_0x5702('0x11')](_0x5702('0xd'),auth['isAuthenticated'](),controller['addConditions']);router[_0x5702('0x11')](_0x5702('0xf'),auth['isAuthenticated'](),controller[_0x5702('0x13')]);router['put']('/:id',auth[_0x5702('0xa')](),controller['update']);router[_0x5702('0x14')](_0x5702('0xb'),auth[_0x5702('0xa')](),controller[_0x5702('0x15')]);module[_0x5702('0x16')]=router;
\ No newline at end of file
+var _0xe638=['post','/:id/conditions','addConditions','addActions','put','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','get','isAuthenticated','index','/:id','show','getConditions','/:id/actions','getActions'];(function(_0xb68438,_0x21c2c0){var _0xbb3e85=function(_0x564de7){while(--_0x564de7){_0xb68438['push'](_0xb68438['shift']());}};_0xbb3e85(++_0x21c2c0);}(_0xe638,0x92));var _0x8e63=function(_0x57c160,_0x480ebe){_0x57c160=_0x57c160-0x0;var _0xd95dd7=_0xe638[_0x57c160];return _0xd95dd7;};'use strict';var multer=require(_0x8e63('0x0'));var util=require(_0x8e63('0x1'));var path=require(_0x8e63('0x2'));var timeout=require(_0x8e63('0x3'));var express=require('express');var router=express[_0x8e63('0x4')]();var fs_extra=require(_0x8e63('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x8e63('0x6'));var controller=require('./automation.controller');router[_0x8e63('0x7')]('/',auth[_0x8e63('0x8')](),controller[_0x8e63('0x9')]);router['get'](_0x8e63('0xa'),auth[_0x8e63('0x8')](),controller[_0x8e63('0xb')]);router[_0x8e63('0x7')]('/:id/conditions',auth[_0x8e63('0x8')](),controller[_0x8e63('0xc')]);router[_0x8e63('0x7')](_0x8e63('0xd'),auth[_0x8e63('0x8')](),controller[_0x8e63('0xe')]);router[_0x8e63('0xf')]('/',auth[_0x8e63('0x8')](),controller['create']);router[_0x8e63('0xf')](_0x8e63('0x10'),auth[_0x8e63('0x8')](),controller[_0x8e63('0x11')]);router[_0x8e63('0xf')](_0x8e63('0xd'),auth['isAuthenticated'](),controller[_0x8e63('0x12')]);router[_0x8e63('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x8e63('0x14')]);router[_0x8e63('0x15')](_0x8e63('0xa'),auth['isAuthenticated'](),controller[_0x8e63('0x16')]);module['exports']=router;
\ No newline at end of file
index 88d1b95..6a288c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a8a=['Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','DESC','ASC','Cut\x20Digit\x20(min:1,\x20max:15)','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)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','exports','STRING','name','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#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,*,*,*','ENUM','always','never','onlyIfOpen'];(function(_0x35f3c9,_0x1aaafe){var _0x483f61=function(_0x4022f3){while(--_0x4022f3){_0x35f3c9['push'](_0x35f3c9['shift']());}};_0x483f61(++_0x1aaafe);}(_0x9a8a,0x1d9));var _0xa9a8=function(_0x40c301,_0x541ef8){_0x40c301=_0x40c301-0x0;var _0x2e5c60=_0x9a8a[_0x40c301];return _0x2e5c60;};'use strict';var Sequelize=require('sequelize');module[_0xa9a8('0x0')]={'name':{'type':Sequelize[_0xa9a8('0x1')],'unique':_0xa9a8('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0xa9a8('0x3')),'allowNull':![],'defaultValue':_0xa9a8('0x3')},'description':{'type':Sequelize[_0xa9a8('0x1')]},'active':{'type':Sequelize[_0xa9a8('0x4')],'defaultValue':0x0,'comment':_0xa9a8('0x5')},'limitCalls':{'type':Sequelize[_0xa9a8('0x6')](0x4)[_0xa9a8('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xa9a8('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0xa9a8('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xa9a8('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0xa9a8('0x6')](0x3)[_0xa9a8('0x7')],'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':_0xa9a8('0x9')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xa9a8('0x6')](0x5)[_0xa9a8('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa9a8('0xa')},'dialBusyMaxRetry':{'type':Sequelize[_0xa9a8('0x6')](0x3)[_0xa9a8('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa9a8('0xb')},'dialBusyRetryFrequency':{'type':Sequelize[_0xa9a8('0x6')](0x5)[_0xa9a8('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa9a8('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xa9a8('0x6')](0x3)[_0xa9a8('0x7')],'defaultValue':0x3,'comment':_0xa9a8('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xa9a8('0x6')](0x5)[_0xa9a8('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa9a8('0xe')},'dialGlobalMaxRetry':{'type':Sequelize[_0xa9a8('0x6')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xa9a8('0xf')},'dialTimezone':{'type':Sequelize[_0xa9a8('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xa9a8('0x1')],'defaultValue':_0xa9a8('0x10')},'dialCheckDuplicateType':{'type':Sequelize[_0xa9a8('0x11')](_0xa9a8('0x12'),_0xa9a8('0x13'),_0xa9a8('0x14')),'defaultValue':_0xa9a8('0x12')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xa9a8('0x15')},'dialAMDInitialSilence':{'type':Sequelize[_0xa9a8('0x6')](0x9)[_0xa9a8('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xa9a8('0x16')},'dialAMDGreeting':{'type':Sequelize[_0xa9a8('0x6')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xa9a8('0x6')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xa9a8('0x17')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xa9a8('0x6')](0x9)[_0xa9a8('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xa9a8('0x18')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xa9a8('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xa9a8('0x19')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0xa9a8('0x7')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xa9a8('0x6')](0x9)[_0xa9a8('0x7')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xa9a8('0x1a')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xa9a8('0x6')](0x5)[_0xa9a8('0x7')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xa9a8('0x1b')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xa9a8('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0xa9a8('0x11')](_0xa9a8('0x1c'),_0xa9a8('0x1d')),'defaultValue':_0xa9a8('0x1c')},'dialPrefix':{'type':Sequelize[_0xa9a8('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xa9a8('0x6')](0x3)[_0xa9a8('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0xa9a8('0x6')](0x3)[_0xa9a8('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xa9a8('0x1e')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xa9a8('0x6')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xa9a8('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa9a8('0x1f')},'dialDropMaxRetry':{'type':Sequelize[_0xa9a8('0x6')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa9a8('0x20')},'dialDropRetryFrequency':{'type':Sequelize[_0xa9a8('0x6')](0x5)[_0xa9a8('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa9a8('0x21')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xa9a8('0x6')](0x3)[_0xa9a8('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa9a8('0x22')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xa9a8('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xa9a8('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa9a8('0x23')},'dialMachineRetryFrequency':{'type':Sequelize[_0xa9a8('0x6')](0x5)[_0xa9a8('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa9a8('0x24')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xa9a8('0x6')](0x3)[_0xa9a8('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa9a8('0x25')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xa9a8('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'}};
\ No newline at end of file
+var _0x9341=['STRING','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','#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)','07:00-22:00,*,*,*','ENUM','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#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','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\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','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','ivr'];(function(_0x57b643,_0x387e6a){var _0x401817=function(_0x2a4181){while(--_0x2a4181){_0x57b643['push'](_0x57b643['shift']());}};_0x401817(++_0x387e6a);}(_0x9341,0xff));var _0x1934=function(_0x9b100e,_0x278556){_0x9b100e=_0x9b100e-0x0;var _0x215940=_0x9341[_0x9b100e];return _0x215940;};'use strict';var Sequelize=require(_0x1934('0x0'));module[_0x1934('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x1934('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0x1934('0x3')),'allowNull':![],'defaultValue':_0x1934('0x3')},'description':{'type':Sequelize[_0x1934('0x4')]},'active':{'type':Sequelize[_0x1934('0x5')],'defaultValue':0x0,'comment':_0x1934('0x6')},'limitCalls':{'type':Sequelize[_0x1934('0x7')](0x4)[_0x1934('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x1934('0x9')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x1934('0x4')]},'dialOriginateTimeout':{'type':Sequelize[_0x1934('0x7')](0x3)[_0x1934('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x1934('0x7')](0x3)[_0x1934('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x1934('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x1934('0x7')](0x3)[_0x1934('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x1934('0xa')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x1934('0xb')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x1934('0x8')],'defaultValue':0x3,'comment':_0x1934('0xc')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x1934('0x7')](0x5)[_0x1934('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x1934('0xd')},'dialGlobalMaxRetry':{'type':Sequelize[_0x1934('0x7')](0x3)[_0x1934('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x1934('0x4')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x1934('0x4')],'defaultValue':_0x1934('0xe')},'dialCheckDuplicateType':{'type':Sequelize[_0x1934('0xf')](_0x1934('0x10'),_0x1934('0x11'),_0x1934('0x12')),'defaultValue':_0x1934('0x10')},'dialAMDActive':{'type':Sequelize[_0x1934('0x5')],'defaultValue':0x0,'comment':_0x1934('0x13')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x1934('0x14')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x1934('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x1934('0x15')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x1934('0x7')](0x9)[_0x1934('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x1934('0x16')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x1934('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x1934('0x17')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x1934('0x7')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x1934('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x1934('0x18')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x1934('0x7')](0x5)[_0x1934('0x8')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x1934('0x19')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x1934('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x1934('0x1a')},'dialOrderByScheduledAt':{'type':Sequelize[_0x1934('0xf')]('DESC','ASC'),'defaultValue':_0x1934('0x1b')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x1934('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x1934('0x1c')},'dialCutDigit':{'type':Sequelize[_0x1934('0x7')](0x3)[_0x1934('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x1934('0x1d')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x1934('0x7')](0x3)[_0x1934('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x1934('0x1e')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x1934('0x7')](0x5)[_0x1934('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x1934('0x1f')},'dialDropMaxRetry':{'type':Sequelize[_0x1934('0x7')](0x3)[_0x1934('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x1934('0x20')},'dialDropRetryFrequency':{'type':Sequelize[_0x1934('0x7')](0x5)[_0x1934('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x1934('0x21')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x1934('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x1934('0x7')](0x5)[_0x1934('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x1934('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0x1934('0x7')](0x5)[_0x1934('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x1934('0x22')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x1934('0x7')](0x3)[_0x1934('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x1934('0x23')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x1934('0x7')](0x5)[_0x1934('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x1934('0x24')}};
\ No newline at end of file
index 7b49dc8..823f062 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cd7=['crypto','jsforce','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','json','offset','undefined','limit','count','set','Content-Range','then','destroy','get','IvrCampaigns','UserProfileResource','end','stack','name','index','map','Campaign','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','length','nolimit','order','sort','where','filter','merge','options','includeAll','include','rows','catch','show','params','attributes','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','body','createdAt','updatedAt','update','getHoppers','findOne','CmHopper','hasOwnProperty','pick','CampaignId','findAll','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','insert','into','fromQuery','phone','ContactId','field','NOW()','CmListId','toString','ListId','cm_contacts','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','select','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','from','cm_hopper','onlyIfOpen','scheduledAt','COALESCE(phone,\x27\x27)','ListId\x20=\x20?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel'];(function(_0x4baf6d,_0x52f43e){var _0x233caf=function(_0x4cf125){while(--_0x4cf125){_0x4baf6d['push'](_0x4baf6d['shift']());}};_0x233caf(++_0x52f43e);}(_0x9cd7,0x7c));var _0x79cd=function(_0x51beba,_0x202d19){_0x51beba=_0x51beba-0x0;var _0x167ee0=_0x9cd7[_0x51beba];return _0x167ee0;};'use strict';var emlformat=require(_0x79cd('0x0'));var rimraf=require(_0x79cd('0x1'));var zipdir=require(_0x79cd('0x2'));var jsonpatch=require(_0x79cd('0x3'));var rp=require(_0x79cd('0x4'));var moment=require(_0x79cd('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x79cd('0x6'));var util=require(_0x79cd('0x7'));var path=require(_0x79cd('0x8'));var sox=require(_0x79cd('0x9'));var csv=require(_0x79cd('0xa'));var ejs=require(_0x79cd('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x79cd('0xc'));var squel=require(_0x79cd('0xd'));var crypto=require(_0x79cd('0xe'));var jsforce=require(_0x79cd('0xf'));var deskjs=require(_0x79cd('0x10'));var toCsv=require('to-csv');var querystring=require(_0x79cd('0x11'));var Papa=require(_0x79cd('0x12'));var Redis=require(_0x79cd('0x13'));var authService=require(_0x79cd('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x79cd('0x15'));var hardwareService=require(_0x79cd('0x16'));var logger=require(_0x79cd('0x17'))(_0x79cd('0x18'));var utils=require('../../config/utils');var config=require(_0x79cd('0x19'));var licenseUtil=require(_0x79cd('0x1a'));var db=require(_0x79cd('0x1b'))['db'];function respondWithStatusCode(_0x56eaa8,_0x1a4def){_0x1a4def=_0x1a4def||0xcc;return function(_0x4e2f26){if(_0x4e2f26){return _0x56eaa8[_0x79cd('0x1c')](_0x1a4def);}return _0x56eaa8[_0x79cd('0x1d')](_0x1a4def)['end']();};}function respondWithResult(_0x2170b7,_0x259a1e){_0x259a1e=_0x259a1e||0xc8;return function(_0x23419d){if(_0x23419d){return _0x2170b7[_0x79cd('0x1d')](_0x259a1e)[_0x79cd('0x1e')](_0x23419d);}};}function respondWithFilteredResult(_0xfc1cbd,_0x48fa47){return function(_0x17bd35){if(_0x17bd35){var _0x3af397=typeof _0x48fa47[_0x79cd('0x1f')]===_0x79cd('0x20')&&typeof _0x48fa47[_0x79cd('0x21')]==='undefined';var _0x21a789=_0x17bd35['count'];var _0x4b9ac3=_0x3af397?0x0:_0x48fa47[_0x79cd('0x1f')];var _0x115d60=_0x3af397?_0x17bd35[_0x79cd('0x22')]:_0x48fa47[_0x79cd('0x1f')]+_0x48fa47[_0x79cd('0x21')];var _0x5d2a53;if(_0x115d60>=_0x21a789){_0x115d60=_0x21a789;_0x5d2a53=0xc8;}else{_0x5d2a53=0xce;}_0xfc1cbd[_0x79cd('0x1d')](_0x5d2a53);return _0xfc1cbd[_0x79cd('0x23')](_0x79cd('0x24'),_0x4b9ac3+'-'+_0x115d60+'/'+_0x21a789)[_0x79cd('0x1e')](_0x17bd35);}return null;};}function patchUpdates(_0x50ec65){return function(_0x3c3bc0){try{jsonpatch['apply'](_0x3c3bc0,_0x50ec65,!![]);}catch(_0x1710c5){return BPromise['reject'](_0x1710c5);}return _0x3c3bc0['save']();};}function saveUpdates(_0x18db52,_0x50e855){return function(_0x31cffe){if(_0x31cffe){return _0x31cffe['update'](_0x18db52)[_0x79cd('0x25')](function(_0x26d67c){return _0x26d67c;});}return null;};}function removeEntity(_0x40aba7,_0x3d070b){return function(_0x362a2c){if(_0x362a2c){return _0x362a2c[_0x79cd('0x26')]()['then'](function(){var _0x211078=_0x362a2c[_0x79cd('0x27')]({'plain':!![]});var _0xffe587=_0x79cd('0x28');return db[_0x79cd('0x29')][_0x79cd('0x26')]({'where':{'type':_0xffe587,'resourceId':_0x211078['id']}})['then'](function(){return _0x362a2c;});})[_0x79cd('0x25')](function(){_0x40aba7[_0x79cd('0x1d')](0xcc)[_0x79cd('0x2a')]();});}};}function handleEntityNotFound(_0xcb6d2,_0x31bc6d){return function(_0x27011e){if(!_0x27011e){_0xcb6d2[_0x79cd('0x1c')](0x194);}return _0x27011e;};}function handleError(_0x5bc128,_0x157cb4){_0x157cb4=_0x157cb4||0x1f4;return function(_0x1bc9a2){logger['error'](_0x1bc9a2[_0x79cd('0x2b')]);if(_0x1bc9a2[_0x79cd('0x2c')]){delete _0x1bc9a2[_0x79cd('0x2c')];}_0x5bc128[_0x79cd('0x1d')](_0x157cb4)['send'](_0x1bc9a2);};}exports[_0x79cd('0x2d')]=function(_0x32fbab,_0x791e65){var _0x8f3d26={},_0x4099fb={},_0x13089a={'count':0x0,'rows':[]};var _0x101b6a=_[_0x79cd('0x2e')](db[_0x79cd('0x2f')][_0x79cd('0x30')],function(_0xc3e66b){return{'name':_0xc3e66b[_0x79cd('0x31')],'type':_0xc3e66b[_0x79cd('0x32')][_0x79cd('0x33')]};});_0x4099fb['model']=_['map'](_0x101b6a,_0x79cd('0x2c'));_0x4099fb[_0x79cd('0x34')]=_[_0x79cd('0x35')](_0x32fbab[_0x79cd('0x34')]);_0x4099fb[_0x79cd('0x36')]=_[_0x79cd('0x37')](_0x4099fb[_0x79cd('0x38')],_0x4099fb[_0x79cd('0x34')]);_0x8f3d26['attributes']=_['intersection'](_0x4099fb[_0x79cd('0x38')],qs[_0x79cd('0x39')](_0x32fbab[_0x79cd('0x34')]['fields']));_0x8f3d26['attributes']=_0x8f3d26['attributes'][_0x79cd('0x3a')]?_0x8f3d26['attributes']:_0x4099fb[_0x79cd('0x38')];if(!_0x32fbab[_0x79cd('0x34')]['hasOwnProperty'](_0x79cd('0x3b'))){_0x8f3d26[_0x79cd('0x21')]=qs[_0x79cd('0x21')](_0x32fbab['query'][_0x79cd('0x21')]);_0x8f3d26[_0x79cd('0x1f')]=qs[_0x79cd('0x1f')](_0x32fbab[_0x79cd('0x34')][_0x79cd('0x1f')]);}_0x8f3d26[_0x79cd('0x3c')]=qs[_0x79cd('0x3d')](_0x32fbab['query']['sort']);_0x8f3d26[_0x79cd('0x3e')]=qs[_0x79cd('0x36')](_['pick'](_0x32fbab[_0x79cd('0x34')],_0x4099fb['filters']),_0x101b6a);if(_0x32fbab[_0x79cd('0x34')][_0x79cd('0x3f')]){_0x8f3d26['where']=_[_0x79cd('0x40')](_0x8f3d26[_0x79cd('0x3e')],{'$or':_[_0x79cd('0x2e')](_0x101b6a,function(_0x4360df){if(_0x4360df[_0x79cd('0x32')]!=='VIRTUAL'){var _0x3d4c8a={};_0x3d4c8a[_0x4360df[_0x79cd('0x2c')]]={'$like':'%'+_0x32fbab[_0x79cd('0x34')][_0x79cd('0x3f')]+'%'};return _0x3d4c8a;}})});}_0x8f3d26=_['merge']({},_0x8f3d26,_0x32fbab[_0x79cd('0x41')]);var _0x515259={'where':_0x8f3d26['where']};return db[_0x79cd('0x2f')][_0x79cd('0x22')](_0x515259)[_0x79cd('0x25')](function(_0x3151aa){_0x13089a[_0x79cd('0x22')]=_0x3151aa;if(_0x32fbab[_0x79cd('0x34')][_0x79cd('0x42')]){_0x8f3d26[_0x79cd('0x43')]=[{'all':!![]}];}return db['Campaign']['findAll'](_0x8f3d26);})[_0x79cd('0x25')](function(_0x845ddd){_0x13089a[_0x79cd('0x44')]=_0x845ddd;return _0x13089a;})[_0x79cd('0x25')](respondWithFilteredResult(_0x791e65,_0x8f3d26))[_0x79cd('0x45')](handleError(_0x791e65,null));};exports[_0x79cd('0x46')]=function(_0x33e980,_0x143e7){var _0x533bcf={'raw':![],'where':{'id':_0x33e980[_0x79cd('0x47')]['id']}},_0x236133={};_0x236133[_0x79cd('0x38')]=_[_0x79cd('0x35')](db[_0x79cd('0x2f')]['rawAttributes']);_0x236133[_0x79cd('0x34')]=_[_0x79cd('0x35')](_0x33e980[_0x79cd('0x34')]);_0x236133[_0x79cd('0x36')]=_[_0x79cd('0x37')](_0x236133[_0x79cd('0x38')],_0x236133[_0x79cd('0x34')]);_0x533bcf[_0x79cd('0x48')]=_['intersection'](_0x236133['model'],qs[_0x79cd('0x39')](_0x33e980[_0x79cd('0x34')][_0x79cd('0x39')]));_0x533bcf[_0x79cd('0x48')]=_0x533bcf[_0x79cd('0x48')]['length']?_0x533bcf[_0x79cd('0x48')]:_0x236133['model'];if(_0x33e980[_0x79cd('0x34')][_0x79cd('0x42')]){_0x533bcf[_0x79cd('0x43')]=[{'all':!![]}];}_0x533bcf=_['merge']({},_0x533bcf,_0x33e980['options']);return db[_0x79cd('0x2f')][_0x79cd('0x49')](_0x533bcf)[_0x79cd('0x25')](handleEntityNotFound(_0x143e7,null))[_0x79cd('0x25')](respondWithResult(_0x143e7,null))[_0x79cd('0x45')](handleError(_0x143e7,null));};exports['create']=function(_0x4fa4ee,_0x5497d9){return db[_0x79cd('0x2f')][_0x79cd('0x4a')](_0x4fa4ee['body'],{})['then'](function(_0x385a6a){var _0x49aaf8=_0x4fa4ee[_0x79cd('0x4b')]['get']({'plain':!![]});if(!_0x49aaf8)throw new Error(_0x79cd('0x4c'));if(_0x49aaf8[_0x79cd('0x4d')]===_0x79cd('0x4b')){var _0x3a7088=_0x385a6a[_0x79cd('0x27')]({'plain':!![]});var _0x440938=_0x79cd('0x28');return db[_0x79cd('0x4e')][_0x79cd('0x49')]({'where':{'name':_0x440938,'userProfileId':_0x49aaf8[_0x79cd('0x4f')]},'raw':!![]})[_0x79cd('0x25')](function(_0x54d7c2){if(_0x54d7c2&&_0x54d7c2['autoAssociation']===0x0){return db[_0x79cd('0x29')][_0x79cd('0x4a')]({'name':_0x3a7088[_0x79cd('0x2c')],'resourceId':_0x3a7088['id'],'type':_0x54d7c2[_0x79cd('0x2c')],'sectionId':_0x54d7c2['id']},{})[_0x79cd('0x25')](function(){return _0x385a6a;});}else{return _0x385a6a;}})[_0x79cd('0x45')](function(_0x27a63a){logger[_0x79cd('0x50')](_0x79cd('0x51'),_0x27a63a);throw _0x27a63a;});}return _0x385a6a;})[_0x79cd('0x25')](respondWithResult(_0x5497d9,0xc9))[_0x79cd('0x45')](handleError(_0x5497d9,null));};exports[_0x79cd('0x52')]=function(_0x2c1efa,_0x35521b){var _0xee7e2e={'where':{'id':_0x2c1efa[_0x79cd('0x47')]['id']}},_0x586c6a={};_0x586c6a['model']=_[_0x79cd('0x35')](db[_0x79cd('0x2f')][_0x79cd('0x30')]);_0xee7e2e['attributes']=_[_0x79cd('0x37')](_0x586c6a[_0x79cd('0x38')],qs[_0x79cd('0x39')](_0x2c1efa['query'][_0x79cd('0x39')]));_0xee7e2e['attributes']=_0xee7e2e['attributes'][_0x79cd('0x3a')]?_0xee7e2e['attributes']:_0x586c6a['model'];if(_0x2c1efa[_0x79cd('0x34')]['includeAll']){_0xee7e2e[_0x79cd('0x43')]=[{'all':!![]}];}_0xee7e2e=_['merge']({},_0xee7e2e,_0x2c1efa[_0x79cd('0x41')]);return db['Campaign'][_0x79cd('0x49')](_0xee7e2e)[_0x79cd('0x25')](handleEntityNotFound(_0x35521b,null))[_0x79cd('0x25')](function(_0x34ac35){if(_0x34ac35){var _0x3c09aa=_0x34ac35[_0x79cd('0x27')]({'plain':!![]});_0x3c09aa=qs[_0x79cd('0x53')](_0x3c09aa,['id','createdAt','updatedAt']);_0x2c1efa[_0x79cd('0x54')]=_[_0x79cd('0x53')](_0x2c1efa[_0x79cd('0x54')],['id',_0x79cd('0x55'),_0x79cd('0x56')]);return db['Campaign'][_0x79cd('0x4a')](_[_0x79cd('0x40')](_0x3c09aa,_0x2c1efa[_0x79cd('0x54')]),{'include':_0x2c1efa['query'][_0x79cd('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x21c2bf){var _0x4084fc=_0x2c1efa[_0x79cd('0x4b')][_0x79cd('0x27')]({'plain':!![]});if(!_0x4084fc)throw new Error(_0x79cd('0x4c'));if(_0x4084fc['role']===_0x79cd('0x4b')){var _0x3eaf1b=_0x21c2bf['get']({'plain':!![]});var _0x4441c3='IvrCampaigns';return db['UserProfileSection'][_0x79cd('0x49')]({'where':{'name':_0x4441c3,'userProfileId':_0x4084fc[_0x79cd('0x4f')]},'raw':!![]})['then'](function(_0x3b3638){if(_0x3b3638&&_0x3b3638['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x3eaf1b['name'],'resourceId':_0x3eaf1b['id'],'type':_0x3b3638[_0x79cd('0x2c')],'sectionId':_0x3b3638['id']},{})[_0x79cd('0x25')](function(){return _0x21c2bf;});}else{return _0x21c2bf;}})[_0x79cd('0x45')](function(_0x5ae2d0){logger[_0x79cd('0x50')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5ae2d0);throw _0x5ae2d0;});}return _0x21c2bf;});}})[_0x79cd('0x25')](respondWithResult(_0x35521b,0xc9))[_0x79cd('0x45')](handleError(_0x35521b,null));};exports[_0x79cd('0x57')]=function(_0x1359c4,_0x4ebf2d){if(_0x1359c4[_0x79cd('0x54')]['id']){delete _0x1359c4[_0x79cd('0x54')]['id'];}return db[_0x79cd('0x2f')][_0x79cd('0x49')]({'where':{'id':_0x1359c4[_0x79cd('0x47')]['id']}})[_0x79cd('0x25')](handleEntityNotFound(_0x4ebf2d,null))[_0x79cd('0x25')](saveUpdates(_0x1359c4['body'],null))[_0x79cd('0x25')](respondWithResult(_0x4ebf2d,null))[_0x79cd('0x45')](handleError(_0x4ebf2d,null));};exports[_0x79cd('0x26')]=function(_0x89964d,_0x3260d2){return db[_0x79cd('0x2f')][_0x79cd('0x49')]({'where':{'id':_0x89964d['params']['id']}})[_0x79cd('0x25')](handleEntityNotFound(_0x3260d2,null))[_0x79cd('0x25')](removeEntity(_0x3260d2,null))[_0x79cd('0x45')](handleError(_0x3260d2,null));};exports[_0x79cd('0x58')]=function(_0x34cf0c,_0x3afe96,_0x2528b0){var _0x1e8194={'raw':!![],'where':{}};var _0x4b56cf={};var _0x37289f={'count':0x0,'rows':[]};return db[_0x79cd('0x2f')][_0x79cd('0x59')]({'where':{'id':_0x34cf0c[_0x79cd('0x47')]['id']}})[_0x79cd('0x25')](handleEntityNotFound(_0x3afe96,null))[_0x79cd('0x25')](function(_0x6eed65){if(_0x6eed65){_0x4b56cf[_0x79cd('0x38')]=_[_0x79cd('0x35')](db[_0x79cd('0x5a')][_0x79cd('0x30')]);_0x4b56cf[_0x79cd('0x34')]=_['keys'](_0x34cf0c[_0x79cd('0x34')]);_0x4b56cf[_0x79cd('0x36')]=_['intersection'](_0x4b56cf[_0x79cd('0x38')],_0x4b56cf[_0x79cd('0x34')]);_0x1e8194['attributes']=_[_0x79cd('0x37')](_0x4b56cf[_0x79cd('0x38')],qs['fields'](_0x34cf0c[_0x79cd('0x34')][_0x79cd('0x39')]));_0x1e8194[_0x79cd('0x48')]=_0x1e8194['attributes'][_0x79cd('0x3a')]?_0x1e8194[_0x79cd('0x48')]:_0x4b56cf[_0x79cd('0x38')];if(!_0x34cf0c[_0x79cd('0x34')][_0x79cd('0x5b')]('nolimit')){_0x1e8194[_0x79cd('0x21')]=qs[_0x79cd('0x21')](_0x34cf0c[_0x79cd('0x34')][_0x79cd('0x21')]);_0x1e8194[_0x79cd('0x1f')]=qs[_0x79cd('0x1f')](_0x34cf0c[_0x79cd('0x34')][_0x79cd('0x1f')]);}_0x1e8194[_0x79cd('0x3c')]=qs['sort'](_0x34cf0c[_0x79cd('0x34')][_0x79cd('0x3d')]);_0x1e8194[_0x79cd('0x3e')]=qs[_0x79cd('0x36')](_[_0x79cd('0x5c')](_0x34cf0c[_0x79cd('0x34')],_0x4b56cf[_0x79cd('0x36')]));_0x1e8194['where'][_0x79cd('0x5d')]=_0x6eed65['id'];if(_0x34cf0c['query']['filter']){_0x1e8194[_0x79cd('0x3e')]=_['merge'](_0x1e8194[_0x79cd('0x3e')],{'$or':_['map'](_0x1e8194[_0x79cd('0x48')],function(_0xd89c29){var _0x5336f6={};_0x5336f6[_0xd89c29]={'$like':'%'+_0x34cf0c[_0x79cd('0x34')][_0x79cd('0x3f')]+'%'};return _0x5336f6;})});}_0x1e8194=_[_0x79cd('0x40')]({},_0x1e8194,_0x34cf0c['options']);return db[_0x79cd('0x5a')][_0x79cd('0x22')]({'where':_0x1e8194[_0x79cd('0x3e')]})[_0x79cd('0x25')](function(_0x58a2c7){_0x37289f[_0x79cd('0x22')]=_0x58a2c7;if(_0x34cf0c[_0x79cd('0x34')][_0x79cd('0x42')]){_0x1e8194['include']=[{'all':!![]}];}return db['CmHopper'][_0x79cd('0x5e')](_0x1e8194);})[_0x79cd('0x25')](function(_0x308261){_0x37289f['rows']=_0x308261;return _0x37289f;});}})[_0x79cd('0x25')](respondWithFilteredResult(_0x3afe96,_0x1e8194))[_0x79cd('0x45')](handleError(_0x3afe96,null));};exports['getHopperHistories']=function(_0x566e14,_0x2fc724,_0x221563){var _0x45353f={'raw':!![],'where':{}};var _0x52fed4={};var _0x14935b={'count':0x0,'rows':[]};return db[_0x79cd('0x2f')][_0x79cd('0x59')]({'where':{'id':_0x566e14['params']['id']}})[_0x79cd('0x25')](handleEntityNotFound(_0x2fc724,null))[_0x79cd('0x25')](function(_0x1771e7){if(_0x1771e7){_0x52fed4[_0x79cd('0x38')]=_[_0x79cd('0x35')](db[_0x79cd('0x5f')][_0x79cd('0x30')]);_0x52fed4[_0x79cd('0x34')]=_[_0x79cd('0x35')](_0x566e14[_0x79cd('0x34')]);_0x52fed4[_0x79cd('0x36')]=_[_0x79cd('0x37')](_0x52fed4[_0x79cd('0x38')],_0x52fed4['query']);_0x45353f[_0x79cd('0x48')]=_[_0x79cd('0x37')](_0x52fed4[_0x79cd('0x38')],qs['fields'](_0x566e14[_0x79cd('0x34')][_0x79cd('0x39')]));_0x45353f[_0x79cd('0x48')]=_0x45353f[_0x79cd('0x48')][_0x79cd('0x3a')]?_0x45353f[_0x79cd('0x48')]:_0x52fed4[_0x79cd('0x38')];if(!_0x566e14['query'][_0x79cd('0x5b')](_0x79cd('0x3b'))){_0x45353f[_0x79cd('0x21')]=qs[_0x79cd('0x21')](_0x566e14[_0x79cd('0x34')]['limit']);_0x45353f['offset']=qs['offset'](_0x566e14[_0x79cd('0x34')][_0x79cd('0x1f')]);}_0x45353f[_0x79cd('0x3c')]=qs[_0x79cd('0x3d')](_0x566e14[_0x79cd('0x34')]['sort']);_0x45353f['where']=qs[_0x79cd('0x36')](_['pick'](_0x566e14[_0x79cd('0x34')],_0x52fed4[_0x79cd('0x36')]));_0x45353f[_0x79cd('0x3e')]['CampaignId']=_0x1771e7['id'];if(_0x566e14['query'][_0x79cd('0x3f')]){_0x45353f[_0x79cd('0x3e')]=_[_0x79cd('0x40')](_0x45353f[_0x79cd('0x3e')],{'$or':_[_0x79cd('0x2e')](_0x45353f[_0x79cd('0x48')],function(_0x5ee934){var _0x447963={};_0x447963[_0x5ee934]={'$like':'%'+_0x566e14[_0x79cd('0x34')][_0x79cd('0x3f')]+'%'};return _0x447963;})});}_0x45353f=_[_0x79cd('0x40')]({},_0x45353f,_0x566e14[_0x79cd('0x41')]);return db[_0x79cd('0x5f')][_0x79cd('0x22')]({'where':_0x45353f[_0x79cd('0x3e')]})[_0x79cd('0x25')](function(_0x2ee763){_0x14935b[_0x79cd('0x22')]=_0x2ee763;if(_0x566e14[_0x79cd('0x34')]['includeAll']){_0x45353f[_0x79cd('0x43')]=[{'all':!![]}];}return db[_0x79cd('0x5f')][_0x79cd('0x5e')](_0x45353f);})[_0x79cd('0x25')](function(_0x224555){_0x14935b[_0x79cd('0x44')]=_0x224555;return _0x14935b;});}})[_0x79cd('0x25')](respondWithFilteredResult(_0x2fc724,_0x45353f))[_0x79cd('0x45')](handleError(_0x2fc724,null));};exports[_0x79cd('0x60')]=function(_0x480841,_0x45338f,_0x1d87d1){var _0xcd8945={'raw':!![],'where':{}};var _0x2524f9={};var _0x3d2d83={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x480841[_0x79cd('0x47')]['id']}})[_0x79cd('0x25')](handleEntityNotFound(_0x45338f,null))[_0x79cd('0x25')](function(_0x39b686){if(_0x39b686){_0x2524f9[_0x79cd('0x38')]=_[_0x79cd('0x35')](db[_0x79cd('0x61')][_0x79cd('0x30')]);_0x2524f9[_0x79cd('0x34')]=_[_0x79cd('0x35')](_0x480841[_0x79cd('0x34')]);_0x2524f9[_0x79cd('0x36')]=_[_0x79cd('0x37')](_0x2524f9['model'],_0x2524f9[_0x79cd('0x34')]);_0xcd8945['attributes']=_['intersection'](_0x2524f9[_0x79cd('0x38')],qs['fields'](_0x480841[_0x79cd('0x34')][_0x79cd('0x39')]));_0xcd8945[_0x79cd('0x48')]=_0xcd8945[_0x79cd('0x48')][_0x79cd('0x3a')]?_0xcd8945[_0x79cd('0x48')]:_0x2524f9['model'];if(!_0x480841[_0x79cd('0x34')]['hasOwnProperty'](_0x79cd('0x3b'))){_0xcd8945['limit']=qs[_0x79cd('0x21')](_0x480841[_0x79cd('0x34')][_0x79cd('0x21')]);_0xcd8945[_0x79cd('0x1f')]=qs[_0x79cd('0x1f')](_0x480841[_0x79cd('0x34')][_0x79cd('0x1f')]);}_0xcd8945[_0x79cd('0x3c')]=qs[_0x79cd('0x3d')](_0x480841['query'][_0x79cd('0x3d')]);_0xcd8945[_0x79cd('0x3e')]=qs[_0x79cd('0x36')](_[_0x79cd('0x5c')](_0x480841[_0x79cd('0x34')],_0x2524f9[_0x79cd('0x36')]));_0xcd8945['where']['CampaignId']=_0x39b686['id'];if(_0x480841[_0x79cd('0x34')][_0x79cd('0x3f')]){_0xcd8945[_0x79cd('0x3e')]=_[_0x79cd('0x40')](_0xcd8945[_0x79cd('0x3e')],{'$or':_['map'](_0xcd8945['attributes'],function(_0x58db59){var _0x3228af={};_0x3228af[_0x58db59]={'$like':'%'+_0x480841[_0x79cd('0x34')]['filter']+'%'};return _0x3228af;})});}_0xcd8945=_['merge']({},_0xcd8945,_0x480841['options']);return db[_0x79cd('0x61')][_0x79cd('0x22')]({'where':_0xcd8945[_0x79cd('0x3e')]})[_0x79cd('0x25')](function(_0x1f56ea){_0x3d2d83[_0x79cd('0x22')]=_0x1f56ea;if(_0x480841[_0x79cd('0x34')][_0x79cd('0x42')]){_0xcd8945[_0x79cd('0x43')]=[{'all':!![]}];}return db[_0x79cd('0x61')]['findAll'](_0xcd8945);})['then'](function(_0x54bcf7){_0x3d2d83[_0x79cd('0x44')]=_0x54bcf7;return _0x3d2d83;});}})[_0x79cd('0x25')](respondWithFilteredResult(_0x45338f,_0xcd8945))['catch'](handleError(_0x45338f,null));};exports[_0x79cd('0x62')]=function(_0x563e49,_0x5cda02,_0x4d42a3){var _0x3efb15={'raw':!![],'where':{}};var _0x257787={};var _0x562722={'count':0x0,'rows':[]};return db['Campaign'][_0x79cd('0x59')]({'where':{'id':_0x563e49[_0x79cd('0x47')]['id']}})[_0x79cd('0x25')](handleEntityNotFound(_0x5cda02,null))[_0x79cd('0x25')](function(_0xf6e9e2){if(_0xf6e9e2){_0x257787[_0x79cd('0x38')]=_[_0x79cd('0x35')](db[_0x79cd('0x63')]['rawAttributes']);_0x257787[_0x79cd('0x34')]=_[_0x79cd('0x35')](_0x563e49[_0x79cd('0x34')]);_0x257787[_0x79cd('0x36')]=_[_0x79cd('0x37')](_0x257787[_0x79cd('0x38')],_0x257787[_0x79cd('0x34')]);_0x3efb15['attributes']=_[_0x79cd('0x37')](_0x257787[_0x79cd('0x38')],qs[_0x79cd('0x39')](_0x563e49[_0x79cd('0x34')]['fields']));_0x3efb15['attributes']=_0x3efb15[_0x79cd('0x48')][_0x79cd('0x3a')]?_0x3efb15[_0x79cd('0x48')]:_0x257787[_0x79cd('0x38')];if(!_0x563e49[_0x79cd('0x34')]['hasOwnProperty'](_0x79cd('0x3b'))){_0x3efb15[_0x79cd('0x21')]=qs['limit'](_0x563e49['query'][_0x79cd('0x21')]);_0x3efb15[_0x79cd('0x1f')]=qs[_0x79cd('0x1f')](_0x563e49['query'][_0x79cd('0x1f')]);}_0x3efb15[_0x79cd('0x3c')]=qs[_0x79cd('0x3d')](_0x563e49[_0x79cd('0x34')][_0x79cd('0x3d')]);_0x3efb15['where']=qs['filters'](_[_0x79cd('0x5c')](_0x563e49[_0x79cd('0x34')],_0x257787['filters']));_0x3efb15[_0x79cd('0x3e')]['CampaignId']=_0xf6e9e2['id'];if(_0x563e49[_0x79cd('0x34')][_0x79cd('0x3f')]){_0x3efb15[_0x79cd('0x3e')]=_['merge'](_0x3efb15[_0x79cd('0x3e')],{'$or':_[_0x79cd('0x2e')](_0x3efb15[_0x79cd('0x48')],function(_0x8fec7d){var _0x2d7759={};_0x2d7759[_0x8fec7d]={'$like':'%'+_0x563e49[_0x79cd('0x34')]['filter']+'%'};return _0x2d7759;})});}_0x3efb15=_[_0x79cd('0x40')]({},_0x3efb15,_0x563e49['options']);return db['CmHopperBlack'][_0x79cd('0x22')]({'where':_0x3efb15['where']})['then'](function(_0x226b53){_0x562722['count']=_0x226b53;if(_0x563e49['query']['includeAll']){_0x3efb15[_0x79cd('0x43')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x79cd('0x5e')](_0x3efb15);})[_0x79cd('0x25')](function(_0x1f3eb4){_0x562722['rows']=_0x1f3eb4;return _0x562722;});}})['then'](respondWithFilteredResult(_0x5cda02,_0x3efb15))['catch'](handleError(_0x5cda02,null));};exports[_0x79cd('0x64')]=function(_0x5a55b1,_0x2fa8fb,_0x53c089){var _0x123d36={};var _0x5da988={};var _0x402704;var _0x20c840;return db['Campaign'][_0x79cd('0x59')]({'where':{'id':_0x5a55b1[_0x79cd('0x47')]['id']}})[_0x79cd('0x25')](handleEntityNotFound(_0x2fa8fb,null))[_0x79cd('0x25')](function(_0x2830de){if(_0x2830de){_0x402704=_0x2830de;_0x5da988[_0x79cd('0x38')]=_[_0x79cd('0x35')](db[_0x79cd('0x65')][_0x79cd('0x30')]);_0x5da988[_0x79cd('0x34')]=_[_0x79cd('0x35')](_0x5a55b1[_0x79cd('0x34')]);_0x5da988['filters']=_[_0x79cd('0x37')](_0x5da988['model'],_0x5da988[_0x79cd('0x34')]);_0x123d36[_0x79cd('0x48')]=_[_0x79cd('0x37')](_0x5da988[_0x79cd('0x38')],qs[_0x79cd('0x39')](_0x5a55b1[_0x79cd('0x34')][_0x79cd('0x39')]));_0x123d36[_0x79cd('0x48')]=_0x123d36[_0x79cd('0x48')][_0x79cd('0x3a')]?_0x123d36['attributes']:_0x5da988[_0x79cd('0x38')];_0x123d36[_0x79cd('0x3c')]=qs[_0x79cd('0x3d')](_0x5a55b1['query'][_0x79cd('0x3d')]);_0x123d36[_0x79cd('0x3e')]=qs[_0x79cd('0x36')](_[_0x79cd('0x5c')](_0x5a55b1[_0x79cd('0x34')],_0x5da988[_0x79cd('0x36')]));if(_0x5a55b1[_0x79cd('0x34')]['filter']){_0x123d36[_0x79cd('0x3e')]=_[_0x79cd('0x40')](_0x123d36[_0x79cd('0x3e')],{'$or':_[_0x79cd('0x2e')](_0x123d36[_0x79cd('0x48')],function(_0x422c7d){var _0x5a27e8={};_0x5a27e8[_0x422c7d]={'$like':'%'+_0x5a55b1['query']['filter']+'%'};return _0x5a27e8;})});}_0x123d36=_[_0x79cd('0x40')]({},_0x123d36,_0x5a55b1['options']);return _0x402704[_0x79cd('0x64')](_0x123d36);}})[_0x79cd('0x25')](function(_0x4d8367){if(_0x4d8367){_0x20c840=_0x4d8367[_0x79cd('0x3a')];if(!_0x5a55b1[_0x79cd('0x34')]['hasOwnProperty'](_0x79cd('0x3b'))){_0x123d36[_0x79cd('0x21')]=qs[_0x79cd('0x21')](_0x5a55b1['query']['limit']);_0x123d36[_0x79cd('0x1f')]=qs[_0x79cd('0x1f')](_0x5a55b1['query'][_0x79cd('0x1f')]);}return _0x402704[_0x79cd('0x64')](_0x123d36);}})[_0x79cd('0x25')](function(_0x1555aa){if(_0x1555aa){return _0x1555aa?{'count':_0x20c840,'rows':_0x1555aa}:null;}})[_0x79cd('0x25')](respondWithResult(_0x2fa8fb,null))[_0x79cd('0x45')](handleError(_0x2fa8fb,null));};exports[_0x79cd('0x66')]=function(_0x264420,_0x1fb776,_0x4425df){var _0x504d9b,_0x1a0f76;return db['Campaign'][_0x79cd('0x49')]({'where':{'id':_0x264420['params']['id']}})['then'](handleEntityNotFound(_0x1fb776,null))[_0x79cd('0x25')](function(_0x32fdc9){if(_0x32fdc9){_0x1a0f76=_0x32fdc9;return _0x32fdc9[_0x79cd('0x66')](_0x264420[_0x79cd('0x54')][_0x79cd('0x67')],_[_0x79cd('0x53')](_0x264420[_0x79cd('0x54')],[_0x79cd('0x67'),'id'])||{});}return null;})[_0x79cd('0x68')](function(_0x7bb11a){var _0x44a775;_0x504d9b=_0x7bb11a||[];var _0x52f1a7=[];if(_0x7bb11a){for(var _0x3c7a46=0x0;_0x3c7a46<_0x7bb11a[_0x79cd('0x3a')];_0x3c7a46+=0x1){var _0x362574=_0x7bb11a[_0x3c7a46][_0x79cd('0x27')]({'plain':!![]});_0x1a0f76[_0x79cd('0x69')]=_0x264420['body'][_0x79cd('0x69')]?_0x264420[_0x79cd('0x54')]['dialCheckDuplicateType']:_0x1a0f76[_0x79cd('0x69')];switch(_0x1a0f76[_0x79cd('0x69')]){case'always':_0x44a775=squel[_0x79cd('0x6a')]()[_0x79cd('0x6b')]('cm_hopper')[_0x79cd('0x6c')]([_0x79cd('0x6d'),'scheduledAt',_0x79cd('0x6e'),'ListId',_0x79cd('0x5d'),_0x79cd('0x55'),_0x79cd('0x56')],squel['select']()[_0x79cd('0x6f')](_0x79cd('0x6d'),_0x79cd('0x6d'))[_0x79cd('0x6f')](_0x79cd('0x70'),'scheduledAt')[_0x79cd('0x6f')]('id',_0x79cd('0x6e'))[_0x79cd('0x6f')](_0x362574[_0x79cd('0x71')][_0x79cd('0x72')](),_0x79cd('0x73'))[_0x79cd('0x6f')](_0x264420[_0x79cd('0x47')]['id'][_0x79cd('0x72')](),_0x79cd('0x5d'))[_0x79cd('0x6f')](_0x79cd('0x70'),_0x79cd('0x55'))[_0x79cd('0x6f')]('NOW()',_0x79cd('0x56'))['from'](_0x79cd('0x74'))[_0x79cd('0x3e')](_0x79cd('0x75'))[_0x79cd('0x3e')]('ListId\x20=\x20?',_0x362574['CmListId']['toString']())[_0x79cd('0x3e')](_0x79cd('0x76'))[_0x79cd('0x3e')]('phone\x20NOT\x20IN\x20(?)',squel[_0x79cd('0x77')]()['field'](_0x79cd('0x78'))['from'](_0x79cd('0x79'))[_0x79cd('0x3e')](_0x79cd('0x7a'),_0x264420[_0x79cd('0x47')]['id']['toString']()))[_0x79cd('0x3e')](_0x79cd('0x7b'),squel[_0x79cd('0x77')]()['field']('COALESCE(phone,\x27\x27)')[_0x79cd('0x7c')](_0x79cd('0x7d'))[_0x79cd('0x3e')]('CampaignId\x20=\x20?',_0x264420[_0x79cd('0x47')]['id'][_0x79cd('0x72')]())))['toString']();break;case _0x79cd('0x7e'):_0x44a775=squel[_0x79cd('0x6a')]()[_0x79cd('0x6b')](_0x79cd('0x7d'))[_0x79cd('0x6c')]([_0x79cd('0x6d'),_0x79cd('0x7f'),_0x79cd('0x6e'),_0x79cd('0x73'),_0x79cd('0x5d'),_0x79cd('0x55'),'updatedAt'],squel[_0x79cd('0x77')]()[_0x79cd('0x6f')]('phone','phone')[_0x79cd('0x6f')](_0x79cd('0x70'),_0x79cd('0x7f'))[_0x79cd('0x6f')]('id',_0x79cd('0x6e'))['field'](_0x362574[_0x79cd('0x71')]['toString'](),_0x79cd('0x73'))[_0x79cd('0x6f')](_0x264420[_0x79cd('0x47')]['id'][_0x79cd('0x72')](),_0x79cd('0x5d'))['field'](_0x79cd('0x70'),'createdAt')[_0x79cd('0x6f')](_0x79cd('0x70'),_0x79cd('0x56'))[_0x79cd('0x7c')](_0x79cd('0x74'))[_0x79cd('0x3e')]('deletedAt\x20IS\x20NULL')[_0x79cd('0x3e')]('ListId\x20=\x20?',_0x362574[_0x79cd('0x71')]['toString']())[_0x79cd('0x3e')](_0x79cd('0x76'))[_0x79cd('0x3e')](_0x79cd('0x7b'),squel[_0x79cd('0x77')]()['field'](_0x79cd('0x80'))['from'](_0x79cd('0x7d'))['where'](_0x79cd('0x7a'),_0x264420['params']['id'][_0x79cd('0x72')]())))[_0x79cd('0x72')]();break;default:_0x44a775=squel[_0x79cd('0x6a')]()[_0x79cd('0x6b')](_0x79cd('0x7d'))['fromQuery']([_0x79cd('0x6d'),_0x79cd('0x7f'),_0x79cd('0x6e'),_0x79cd('0x73'),'CampaignId',_0x79cd('0x55'),'updatedAt'],squel[_0x79cd('0x77')]()[_0x79cd('0x6f')](_0x79cd('0x6d'),_0x79cd('0x6d'))[_0x79cd('0x6f')]('NOW()',_0x79cd('0x7f'))[_0x79cd('0x6f')]('id',_0x79cd('0x6e'))[_0x79cd('0x6f')](_0x362574['CmListId'][_0x79cd('0x72')](),'ListId')[_0x79cd('0x6f')](_0x264420[_0x79cd('0x47')]['id'][_0x79cd('0x72')](),_0x79cd('0x5d'))['field']('NOW()',_0x79cd('0x55'))[_0x79cd('0x6f')](_0x79cd('0x70'),_0x79cd('0x56'))[_0x79cd('0x7c')]('cm_contacts')['where'](_0x79cd('0x75'))[_0x79cd('0x3e')](_0x79cd('0x81'),_0x362574['CmListId'][_0x79cd('0x72')]())[_0x79cd('0x3e')](_0x79cd('0x76')))[_0x79cd('0x72')]();}_0x52f1a7[_0x79cd('0x82')](db[_0x79cd('0x83')][_0x79cd('0x34')](_0x44a775));}return BPromise[_0x79cd('0x84')](_0x52f1a7);}})[_0x79cd('0x25')](function(){return _0x504d9b;})[_0x79cd('0x25')](respondWithResult(_0x1fb776,null))[_0x79cd('0x45')](handleError(_0x1fb776,null));};exports[_0x79cd('0x85')]=function(_0x376234,_0x3ab4e0,_0x6d7546){return db['Campaign'][_0x79cd('0x49')]({'where':{'id':_0x376234[_0x79cd('0x47')]['id']}})[_0x79cd('0x25')](handleEntityNotFound(_0x3ab4e0,null))[_0x79cd('0x25')](function(_0x28e82b){if(_0x28e82b){return _0x28e82b[_0x79cd('0x85')](_0x376234[_0x79cd('0x34')][_0x79cd('0x67')]);}})[_0x79cd('0x25')](function(_0x52c976){if(_0x52c976){return db[_0x79cd('0x5a')][_0x79cd('0x26')]({'where':{'ListId':_0x376234['query'][_0x79cd('0x67')],'CampaignId':_0x376234[_0x79cd('0x47')]['id']}})[_0x79cd('0x25')](function(){return _0x52c976;});}})[_0x79cd('0x25')](respondWithStatusCode(_0x3ab4e0,null))['catch'](handleError(_0x3ab4e0,null));};exports[_0x79cd('0x86')]=function(_0x269b35,_0x5f33a5,_0x217dc7){var _0x5cda29={};var _0x212cbe={};var _0x23934d;var _0x4a7439;return db[_0x79cd('0x2f')][_0x79cd('0x59')]({'where':{'id':_0x269b35[_0x79cd('0x47')]['id']}})['then'](handleEntityNotFound(_0x5f33a5,null))[_0x79cd('0x25')](function(_0x3483b3){if(_0x3483b3){_0x23934d=_0x3483b3;_0x212cbe[_0x79cd('0x38')]=_[_0x79cd('0x35')](db[_0x79cd('0x65')][_0x79cd('0x30')]);_0x212cbe[_0x79cd('0x34')]=_['keys'](_0x269b35[_0x79cd('0x34')]);_0x212cbe['filters']=_[_0x79cd('0x37')](_0x212cbe['model'],_0x212cbe[_0x79cd('0x34')]);_0x5cda29[_0x79cd('0x48')]=_[_0x79cd('0x37')](_0x212cbe[_0x79cd('0x38')],qs['fields'](_0x269b35[_0x79cd('0x34')][_0x79cd('0x39')]));_0x5cda29['attributes']=_0x5cda29[_0x79cd('0x48')][_0x79cd('0x3a')]?_0x5cda29[_0x79cd('0x48')]:_0x212cbe[_0x79cd('0x38')];_0x5cda29[_0x79cd('0x3c')]=qs[_0x79cd('0x3d')](_0x269b35[_0x79cd('0x34')][_0x79cd('0x3d')]);_0x5cda29[_0x79cd('0x3e')]=qs['filters'](_[_0x79cd('0x5c')](_0x269b35[_0x79cd('0x34')],_0x212cbe['filters']));if(_0x269b35['query'][_0x79cd('0x3f')]){_0x5cda29[_0x79cd('0x3e')]=_[_0x79cd('0x40')](_0x5cda29[_0x79cd('0x3e')],{'$or':_[_0x79cd('0x2e')](_0x5cda29[_0x79cd('0x48')],function(_0xa90046){var _0x31f1da={};_0x31f1da[_0xa90046]={'$like':'%'+_0x269b35[_0x79cd('0x34')][_0x79cd('0x3f')]+'%'};return _0x31f1da;})});}_0x5cda29=_[_0x79cd('0x40')]({},_0x5cda29,_0x269b35[_0x79cd('0x41')]);return _0x23934d['getBlackLists'](_0x5cda29);}})[_0x79cd('0x25')](function(_0x5acccb){if(_0x5acccb){_0x4a7439=_0x5acccb['length'];if(!_0x269b35[_0x79cd('0x34')]['hasOwnProperty'](_0x79cd('0x3b'))){_0x5cda29['limit']=qs[_0x79cd('0x21')](_0x269b35['query'][_0x79cd('0x21')]);_0x5cda29[_0x79cd('0x1f')]=qs[_0x79cd('0x1f')](_0x269b35[_0x79cd('0x34')][_0x79cd('0x1f')]);}return _0x23934d[_0x79cd('0x86')](_0x5cda29);}})[_0x79cd('0x25')](function(_0x57eeec){if(_0x57eeec){return _0x57eeec?{'count':_0x4a7439,'rows':_0x57eeec}:null;}})[_0x79cd('0x25')](respondWithResult(_0x5f33a5,null))[_0x79cd('0x45')](handleError(_0x5f33a5,null));};exports['addBlackLists']=function(_0x393b44,_0x2ed186,_0x5e5335){var _0x1a4bed,_0x5f25eb;return db['Campaign'][_0x79cd('0x49')]({'where':{'id':_0x393b44[_0x79cd('0x47')]['id']}})[_0x79cd('0x25')](handleEntityNotFound(_0x2ed186,null))[_0x79cd('0x25')](function(_0x1ac2b9){if(_0x1ac2b9){_0x5f25eb=_0x1ac2b9;return _0x1ac2b9[_0x79cd('0x87')](_0x393b44[_0x79cd('0x54')]['ids'],_[_0x79cd('0x53')](_0x393b44[_0x79cd('0x54')],[_0x79cd('0x67'),'id'])||{});}return null;})[_0x79cd('0x68')](function(_0x1cc283){var _0x46964e;_0x1a4bed=_0x1cc283||[];var _0x515648=[];if(_0x1cc283){for(var _0x1f4959=0x0;_0x1f4959<_0x1cc283[_0x79cd('0x3a')];_0x1f4959+=0x1){var _0x551b34=_0x1cc283[_0x1f4959]['get']({'plain':!![]});_0x46964e=squel[_0x79cd('0x6a')]()['into'](_0x79cd('0x88'))[_0x79cd('0x6c')]([_0x79cd('0x6d'),'ContactId',_0x79cd('0x73'),_0x79cd('0x5d'),_0x79cd('0x55'),_0x79cd('0x56')],squel[_0x79cd('0x77')]()[_0x79cd('0x6f')](_0x79cd('0x6d'),'phone')[_0x79cd('0x6f')]('id',_0x79cd('0x6e'))[_0x79cd('0x6f')](_0x551b34[_0x79cd('0x71')]['toString'](),'ListId')[_0x79cd('0x6f')](_0x393b44['params']['id']['toString'](),_0x79cd('0x5d'))['field'](_0x79cd('0x70'),_0x79cd('0x55'))['field']('NOW()',_0x79cd('0x56'))[_0x79cd('0x7c')](_0x79cd('0x74'))[_0x79cd('0x3e')](_0x79cd('0x75'))[_0x79cd('0x3e')](_0x79cd('0x81'),_0x551b34['CmListId'][_0x79cd('0x72')]())[_0x79cd('0x3e')](_0x79cd('0x76')))[_0x79cd('0x72')]();_0x515648[_0x79cd('0x82')](db[_0x79cd('0x83')][_0x79cd('0x34')](_0x46964e));}return BPromise[_0x79cd('0x84')](_0x515648);}})['then'](function(){return _0x1a4bed;})[_0x79cd('0x25')](respondWithResult(_0x2ed186,null))[_0x79cd('0x45')](handleError(_0x2ed186,null));};exports['removeBlackLists']=function(_0x2aaac3,_0x1f7fcc,_0x5b9fda){return db[_0x79cd('0x2f')]['find']({'where':{'id':_0x2aaac3[_0x79cd('0x47')]['id']}})[_0x79cd('0x25')](handleEntityNotFound(_0x1f7fcc,null))[_0x79cd('0x25')](function(_0x5eddae){if(_0x5eddae){return _0x5eddae[_0x79cd('0x89')](_0x2aaac3[_0x79cd('0x34')][_0x79cd('0x67')]);}})[_0x79cd('0x25')](function(_0x4888a6){if(_0x4888a6){return db[_0x79cd('0x63')][_0x79cd('0x26')]({'where':{'ListId':_0x2aaac3[_0x79cd('0x34')][_0x79cd('0x67')],'CampaignId':_0x2aaac3['params']['id']}})[_0x79cd('0x25')](function(){return _0x4888a6;});}})[_0x79cd('0x25')](respondWithStatusCode(_0x1f7fcc,null))['catch'](handleError(_0x1f7fcc,null));};
\ No newline at end of file
+var _0x2305=['bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','update','then','destroy','IvrCampaigns','UserProfileResource','end','error','stack','name','send','index','map','Campaign','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','role','getHoppers','findOne','CmHopper','getHopperHistories','CmHopperHistory','order','CampaignId','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','always','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','select','field','NOW()','toString','ListId','from','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','insert','CmListId','cm_contacts','ListId\x20=\x20?','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','push','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2305,0x88));var _0x5230=function(_0x187718,_0x427383){_0x187718=_0x187718-0x0;var _0x29ddf4=_0x2305[_0x187718];return _0x29ddf4;};'use strict';var emlformat=require(_0x5230('0x0'));var rimraf=require(_0x5230('0x1'));var zipdir=require(_0x5230('0x2'));var jsonpatch=require(_0x5230('0x3'));var rp=require(_0x5230('0x4'));var moment=require('moment');var BPromise=require(_0x5230('0x5'));var Mustache=require('mustache');var util=require(_0x5230('0x6'));var path=require(_0x5230('0x7'));var sox=require(_0x5230('0x8'));var csv=require(_0x5230('0x9'));var ejs=require(_0x5230('0xa'));var fs=require('fs');var fs_extra=require(_0x5230('0xb'));var _=require(_0x5230('0xc'));var squel=require(_0x5230('0xd'));var crypto=require(_0x5230('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x5230('0xf'));var toCsv=require(_0x5230('0x9'));var querystring=require('querystring');var Papa=require(_0x5230('0x10'));var Redis=require(_0x5230('0x11'));var authService=require(_0x5230('0x12'));var qs=require(_0x5230('0x13'));var as=require(_0x5230('0x14'));var hardwareService=require(_0x5230('0x15'));var logger=require(_0x5230('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x5230('0x17'));var licenseUtil=require(_0x5230('0x18'));var db=require(_0x5230('0x19'))['db'];function respondWithStatusCode(_0x1fc498,_0x349994){_0x349994=_0x349994||0xcc;return function(_0x2d74a9){if(_0x2d74a9){return _0x1fc498[_0x5230('0x1a')](_0x349994);}return _0x1fc498[_0x5230('0x1b')](_0x349994)['end']();};}function respondWithResult(_0x4facbb,_0x4e68a2){_0x4e68a2=_0x4e68a2||0xc8;return function(_0x559f1e){if(_0x559f1e){return _0x4facbb[_0x5230('0x1b')](_0x4e68a2)['json'](_0x559f1e);}};}function respondWithFilteredResult(_0x2a4b71,_0x4e9a7d){return function(_0x47a6da){if(_0x47a6da){var _0x3f3dde=typeof _0x4e9a7d[_0x5230('0x1c')]===_0x5230('0x1d')&&typeof _0x4e9a7d['limit']===_0x5230('0x1d');var _0x7d2a13=_0x47a6da[_0x5230('0x1e')];var _0x4dfb0e=_0x3f3dde?0x0:_0x4e9a7d[_0x5230('0x1c')];var _0x14ce1b=_0x3f3dde?_0x47a6da['count']:_0x4e9a7d[_0x5230('0x1c')]+_0x4e9a7d[_0x5230('0x1f')];var _0x244f20;if(_0x14ce1b>=_0x7d2a13){_0x14ce1b=_0x7d2a13;_0x244f20=0xc8;}else{_0x244f20=0xce;}_0x2a4b71[_0x5230('0x1b')](_0x244f20);return _0x2a4b71[_0x5230('0x20')](_0x5230('0x21'),_0x4dfb0e+'-'+_0x14ce1b+'/'+_0x7d2a13)[_0x5230('0x22')](_0x47a6da);}return null;};}function patchUpdates(_0x18e955){return function(_0x5b3a98){try{jsonpatch[_0x5230('0x23')](_0x5b3a98,_0x18e955,!![]);}catch(_0x50abaa){return BPromise[_0x5230('0x24')](_0x50abaa);}return _0x5b3a98['save']();};}function saveUpdates(_0xf43652,_0xa3bdc6){return function(_0x2dedbb){if(_0x2dedbb){return _0x2dedbb[_0x5230('0x25')](_0xf43652)[_0x5230('0x26')](function(_0x1fcd2a){return _0x1fcd2a;});}return null;};}function removeEntity(_0x54d5fe,_0x7ddc76){return function(_0x981b93){if(_0x981b93){return _0x981b93[_0x5230('0x27')]()[_0x5230('0x26')](function(){var _0x18bff6=_0x981b93['get']({'plain':!![]});var _0xe7b527=_0x5230('0x28');return db[_0x5230('0x29')][_0x5230('0x27')]({'where':{'type':_0xe7b527,'resourceId':_0x18bff6['id']}})[_0x5230('0x26')](function(){return _0x981b93;});})[_0x5230('0x26')](function(){_0x54d5fe[_0x5230('0x1b')](0xcc)[_0x5230('0x2a')]();});}};}function handleEntityNotFound(_0x148b14,_0xb933ae){return function(_0x2493d9){if(!_0x2493d9){_0x148b14[_0x5230('0x1a')](0x194);}return _0x2493d9;};}function handleError(_0x3015e2,_0xc50794){_0xc50794=_0xc50794||0x1f4;return function(_0x5991a9){logger[_0x5230('0x2b')](_0x5991a9[_0x5230('0x2c')]);if(_0x5991a9[_0x5230('0x2d')]){delete _0x5991a9['name'];}_0x3015e2[_0x5230('0x1b')](_0xc50794)[_0x5230('0x2e')](_0x5991a9);};}exports[_0x5230('0x2f')]=function(_0x478664,_0x542315){var _0x56b71e={},_0x45507a={},_0x4db9e0={'count':0x0,'rows':[]};var _0x57e90e=_[_0x5230('0x30')](db[_0x5230('0x31')][_0x5230('0x32')],function(_0x38249a){return{'name':_0x38249a[_0x5230('0x33')],'type':_0x38249a[_0x5230('0x34')][_0x5230('0x35')]};});_0x45507a[_0x5230('0x36')]=_[_0x5230('0x30')](_0x57e90e,_0x5230('0x2d'));_0x45507a[_0x5230('0x37')]=_[_0x5230('0x38')](_0x478664['query']);_0x45507a['filters']=_[_0x5230('0x39')](_0x45507a[_0x5230('0x36')],_0x45507a[_0x5230('0x37')]);_0x56b71e[_0x5230('0x3a')]=_[_0x5230('0x39')](_0x45507a[_0x5230('0x36')],qs[_0x5230('0x3b')](_0x478664[_0x5230('0x37')][_0x5230('0x3b')]));_0x56b71e[_0x5230('0x3a')]=_0x56b71e[_0x5230('0x3a')][_0x5230('0x3c')]?_0x56b71e['attributes']:_0x45507a[_0x5230('0x36')];if(!_0x478664[_0x5230('0x37')][_0x5230('0x3d')](_0x5230('0x3e'))){_0x56b71e[_0x5230('0x1f')]=qs[_0x5230('0x1f')](_0x478664[_0x5230('0x37')][_0x5230('0x1f')]);_0x56b71e['offset']=qs[_0x5230('0x1c')](_0x478664[_0x5230('0x37')]['offset']);}_0x56b71e['order']=qs[_0x5230('0x3f')](_0x478664[_0x5230('0x37')][_0x5230('0x3f')]);_0x56b71e[_0x5230('0x40')]=qs[_0x5230('0x41')](_[_0x5230('0x42')](_0x478664[_0x5230('0x37')],_0x45507a[_0x5230('0x41')]),_0x57e90e);if(_0x478664[_0x5230('0x37')][_0x5230('0x43')]){_0x56b71e['where']=_[_0x5230('0x44')](_0x56b71e[_0x5230('0x40')],{'$or':_[_0x5230('0x30')](_0x57e90e,function(_0x598884){if(_0x598884[_0x5230('0x34')]!==_0x5230('0x45')){var _0x120ba8={};_0x120ba8[_0x598884[_0x5230('0x2d')]]={'$like':'%'+_0x478664['query'][_0x5230('0x43')]+'%'};return _0x120ba8;}})});}_0x56b71e=_['merge']({},_0x56b71e,_0x478664[_0x5230('0x46')]);var _0x4e7a78={'where':_0x56b71e['where']};return db[_0x5230('0x31')][_0x5230('0x1e')](_0x4e7a78)['then'](function(_0x1037f9){_0x4db9e0[_0x5230('0x1e')]=_0x1037f9;if(_0x478664['query']['includeAll']){_0x56b71e[_0x5230('0x47')]=[{'all':!![]}];}return db[_0x5230('0x31')][_0x5230('0x48')](_0x56b71e);})[_0x5230('0x26')](function(_0x57c7db){_0x4db9e0[_0x5230('0x49')]=_0x57c7db;return _0x4db9e0;})['then'](respondWithFilteredResult(_0x542315,_0x56b71e))[_0x5230('0x4a')](handleError(_0x542315,null));};exports['show']=function(_0x38ffaf,_0x7c334a){var _0x2e1aff={'raw':![],'where':{'id':_0x38ffaf['params']['id']}},_0x123ded={};_0x123ded[_0x5230('0x36')]=_[_0x5230('0x38')](db[_0x5230('0x31')][_0x5230('0x32')]);_0x123ded[_0x5230('0x37')]=_[_0x5230('0x38')](_0x38ffaf[_0x5230('0x37')]);_0x123ded[_0x5230('0x41')]=_[_0x5230('0x39')](_0x123ded[_0x5230('0x36')],_0x123ded['query']);_0x2e1aff[_0x5230('0x3a')]=_[_0x5230('0x39')](_0x123ded['model'],qs[_0x5230('0x3b')](_0x38ffaf[_0x5230('0x37')][_0x5230('0x3b')]));_0x2e1aff[_0x5230('0x3a')]=_0x2e1aff[_0x5230('0x3a')]['length']?_0x2e1aff[_0x5230('0x3a')]:_0x123ded[_0x5230('0x36')];if(_0x38ffaf['query'][_0x5230('0x4b')]){_0x2e1aff['include']=[{'all':!![]}];}_0x2e1aff=_[_0x5230('0x44')]({},_0x2e1aff,_0x38ffaf[_0x5230('0x46')]);return db[_0x5230('0x31')][_0x5230('0x4c')](_0x2e1aff)[_0x5230('0x26')](handleEntityNotFound(_0x7c334a,null))[_0x5230('0x26')](respondWithResult(_0x7c334a,null))[_0x5230('0x4a')](handleError(_0x7c334a,null));};exports[_0x5230('0x4d')]=function(_0x1e4961,_0x1553c5){return db[_0x5230('0x31')][_0x5230('0x4d')](_0x1e4961[_0x5230('0x4e')],{})[_0x5230('0x26')](function(_0x5c03a8){var _0x2cdbf1=_0x1e4961[_0x5230('0x4f')]['get']({'plain':!![]});if(!_0x2cdbf1)throw new Error(_0x5230('0x50'));if(_0x2cdbf1['role']==='user'){var _0xaa757f=_0x5c03a8[_0x5230('0x51')]({'plain':!![]});var _0xa8f1c=_0x5230('0x28');return db[_0x5230('0x52')]['find']({'where':{'name':_0xa8f1c,'userProfileId':_0x2cdbf1[_0x5230('0x53')]},'raw':!![]})['then'](function(_0x568c2c){if(_0x568c2c&&_0x568c2c[_0x5230('0x54')]===0x0){return db[_0x5230('0x29')][_0x5230('0x4d')]({'name':_0xaa757f[_0x5230('0x2d')],'resourceId':_0xaa757f['id'],'type':_0x568c2c[_0x5230('0x2d')],'sectionId':_0x568c2c['id']},{})['then'](function(){return _0x5c03a8;});}else{return _0x5c03a8;}})['catch'](function(_0x253208){logger[_0x5230('0x2b')](_0x5230('0x55'),_0x253208);throw _0x253208;});}return _0x5c03a8;})['then'](respondWithResult(_0x1553c5,0xc9))[_0x5230('0x4a')](handleError(_0x1553c5,null));};exports[_0x5230('0x56')]=function(_0x5eb85e,_0x259d70){var _0xebcda9={'where':{'id':_0x5eb85e[_0x5230('0x57')]['id']}},_0x4025cb={};_0x4025cb[_0x5230('0x36')]=_['keys'](db[_0x5230('0x31')][_0x5230('0x32')]);_0xebcda9[_0x5230('0x3a')]=_[_0x5230('0x39')](_0x4025cb['model'],qs[_0x5230('0x3b')](_0x5eb85e['query'][_0x5230('0x3b')]));_0xebcda9[_0x5230('0x3a')]=_0xebcda9[_0x5230('0x3a')][_0x5230('0x3c')]?_0xebcda9[_0x5230('0x3a')]:_0x4025cb[_0x5230('0x36')];if(_0x5eb85e[_0x5230('0x37')][_0x5230('0x4b')]){_0xebcda9[_0x5230('0x47')]=[{'all':!![]}];}_0xebcda9=_[_0x5230('0x44')]({},_0xebcda9,_0x5eb85e[_0x5230('0x46')]);return db[_0x5230('0x31')][_0x5230('0x4c')](_0xebcda9)['then'](handleEntityNotFound(_0x259d70,null))[_0x5230('0x26')](function(_0x36c442){if(_0x36c442){var _0x23be23=_0x36c442[_0x5230('0x51')]({'plain':!![]});_0x23be23=qs[_0x5230('0x58')](_0x23be23,['id',_0x5230('0x59'),_0x5230('0x5a')]);_0x5eb85e['body']=_[_0x5230('0x58')](_0x5eb85e[_0x5230('0x4e')],['id',_0x5230('0x59'),_0x5230('0x5a')]);return db[_0x5230('0x31')][_0x5230('0x4d')](_['merge'](_0x23be23,_0x5eb85e[_0x5230('0x4e')]),{'include':_0x5eb85e[_0x5230('0x37')][_0x5230('0x4b')]?[{'all':!![]}]:undefined})[_0x5230('0x26')](function(_0x2b0879){var _0x388bd5=_0x5eb85e[_0x5230('0x4f')][_0x5230('0x51')]({'plain':!![]});if(!_0x388bd5)throw new Error(_0x5230('0x50'));if(_0x388bd5[_0x5230('0x5b')]===_0x5230('0x4f')){var _0x489a3b=_0x2b0879[_0x5230('0x51')]({'plain':!![]});var _0xa0916f='IvrCampaigns';return db[_0x5230('0x52')][_0x5230('0x4c')]({'where':{'name':_0xa0916f,'userProfileId':_0x388bd5[_0x5230('0x53')]},'raw':!![]})[_0x5230('0x26')](function(_0x2fe385){if(_0x2fe385&&_0x2fe385[_0x5230('0x54')]===0x0){return db['UserProfileResource'][_0x5230('0x4d')]({'name':_0x489a3b[_0x5230('0x2d')],'resourceId':_0x489a3b['id'],'type':_0x2fe385[_0x5230('0x2d')],'sectionId':_0x2fe385['id']},{})['then'](function(){return _0x2b0879;});}else{return _0x2b0879;}})[_0x5230('0x4a')](function(_0x380301){logger[_0x5230('0x2b')](_0x5230('0x55'),_0x380301);throw _0x380301;});}return _0x2b0879;});}})['then'](respondWithResult(_0x259d70,0xc9))['catch'](handleError(_0x259d70,null));};exports['update']=function(_0x51e9f1,_0x46de3b){if(_0x51e9f1[_0x5230('0x4e')]['id']){delete _0x51e9f1[_0x5230('0x4e')]['id'];}return db[_0x5230('0x31')][_0x5230('0x4c')]({'where':{'id':_0x51e9f1[_0x5230('0x57')]['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x46de3b,null))[_0x5230('0x26')](saveUpdates(_0x51e9f1['body'],null))[_0x5230('0x26')](respondWithResult(_0x46de3b,null))[_0x5230('0x4a')](handleError(_0x46de3b,null));};exports['destroy']=function(_0x583a3d,_0x2b49a3){return db[_0x5230('0x31')][_0x5230('0x4c')]({'where':{'id':_0x583a3d[_0x5230('0x57')]['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x2b49a3,null))[_0x5230('0x26')](removeEntity(_0x2b49a3,null))[_0x5230('0x4a')](handleError(_0x2b49a3,null));};exports[_0x5230('0x5c')]=function(_0x649df6,_0x269075,_0x21a126){var _0x5ece09={'raw':!![],'where':{}};var _0x5428e3={};var _0x463afa={'count':0x0,'rows':[]};return db['Campaign'][_0x5230('0x5d')]({'where':{'id':_0x649df6[_0x5230('0x57')]['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x269075,null))[_0x5230('0x26')](function(_0x4d777c){if(_0x4d777c){_0x5428e3['model']=_[_0x5230('0x38')](db[_0x5230('0x5e')]['rawAttributes']);_0x5428e3[_0x5230('0x37')]=_['keys'](_0x649df6[_0x5230('0x37')]);_0x5428e3[_0x5230('0x41')]=_[_0x5230('0x39')](_0x5428e3['model'],_0x5428e3[_0x5230('0x37')]);_0x5ece09[_0x5230('0x3a')]=_[_0x5230('0x39')](_0x5428e3[_0x5230('0x36')],qs['fields'](_0x649df6[_0x5230('0x37')][_0x5230('0x3b')]));_0x5ece09['attributes']=_0x5ece09[_0x5230('0x3a')][_0x5230('0x3c')]?_0x5ece09[_0x5230('0x3a')]:_0x5428e3['model'];if(!_0x649df6['query'][_0x5230('0x3d')](_0x5230('0x3e'))){_0x5ece09[_0x5230('0x1f')]=qs[_0x5230('0x1f')](_0x649df6['query'][_0x5230('0x1f')]);_0x5ece09[_0x5230('0x1c')]=qs[_0x5230('0x1c')](_0x649df6[_0x5230('0x37')][_0x5230('0x1c')]);}_0x5ece09['order']=qs[_0x5230('0x3f')](_0x649df6[_0x5230('0x37')][_0x5230('0x3f')]);_0x5ece09['where']=qs[_0x5230('0x41')](_[_0x5230('0x42')](_0x649df6[_0x5230('0x37')],_0x5428e3[_0x5230('0x41')]));_0x5ece09[_0x5230('0x40')]['CampaignId']=_0x4d777c['id'];if(_0x649df6[_0x5230('0x37')][_0x5230('0x43')]){_0x5ece09[_0x5230('0x40')]=_[_0x5230('0x44')](_0x5ece09[_0x5230('0x40')],{'$or':_[_0x5230('0x30')](_0x5ece09[_0x5230('0x3a')],function(_0x4165c1){var _0x21d29f={};_0x21d29f[_0x4165c1]={'$like':'%'+_0x649df6[_0x5230('0x37')][_0x5230('0x43')]+'%'};return _0x21d29f;})});}_0x5ece09=_[_0x5230('0x44')]({},_0x5ece09,_0x649df6['options']);return db[_0x5230('0x5e')][_0x5230('0x1e')]({'where':_0x5ece09[_0x5230('0x40')]})[_0x5230('0x26')](function(_0x2c0b47){_0x463afa[_0x5230('0x1e')]=_0x2c0b47;if(_0x649df6[_0x5230('0x37')][_0x5230('0x4b')]){_0x5ece09[_0x5230('0x47')]=[{'all':!![]}];}return db[_0x5230('0x5e')][_0x5230('0x48')](_0x5ece09);})[_0x5230('0x26')](function(_0x75a1){_0x463afa[_0x5230('0x49')]=_0x75a1;return _0x463afa;});}})[_0x5230('0x26')](respondWithFilteredResult(_0x269075,_0x5ece09))[_0x5230('0x4a')](handleError(_0x269075,null));};exports[_0x5230('0x5f')]=function(_0x1605d3,_0x226da0,_0x276bae){var _0x1dfcd6={'raw':!![],'where':{}};var _0x275fd8={};var _0x163ff3={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x1605d3[_0x5230('0x57')]['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x226da0,null))[_0x5230('0x26')](function(_0x116619){if(_0x116619){_0x275fd8[_0x5230('0x36')]=_['keys'](db[_0x5230('0x60')][_0x5230('0x32')]);_0x275fd8[_0x5230('0x37')]=_[_0x5230('0x38')](_0x1605d3['query']);_0x275fd8[_0x5230('0x41')]=_[_0x5230('0x39')](_0x275fd8[_0x5230('0x36')],_0x275fd8[_0x5230('0x37')]);_0x1dfcd6[_0x5230('0x3a')]=_[_0x5230('0x39')](_0x275fd8[_0x5230('0x36')],qs[_0x5230('0x3b')](_0x1605d3[_0x5230('0x37')][_0x5230('0x3b')]));_0x1dfcd6['attributes']=_0x1dfcd6['attributes']['length']?_0x1dfcd6[_0x5230('0x3a')]:_0x275fd8[_0x5230('0x36')];if(!_0x1605d3[_0x5230('0x37')][_0x5230('0x3d')](_0x5230('0x3e'))){_0x1dfcd6[_0x5230('0x1f')]=qs[_0x5230('0x1f')](_0x1605d3[_0x5230('0x37')][_0x5230('0x1f')]);_0x1dfcd6[_0x5230('0x1c')]=qs[_0x5230('0x1c')](_0x1605d3[_0x5230('0x37')][_0x5230('0x1c')]);}_0x1dfcd6[_0x5230('0x61')]=qs['sort'](_0x1605d3[_0x5230('0x37')][_0x5230('0x3f')]);_0x1dfcd6[_0x5230('0x40')]=qs[_0x5230('0x41')](_[_0x5230('0x42')](_0x1605d3['query'],_0x275fd8[_0x5230('0x41')]));_0x1dfcd6[_0x5230('0x40')][_0x5230('0x62')]=_0x116619['id'];if(_0x1605d3[_0x5230('0x37')]['filter']){_0x1dfcd6['where']=_[_0x5230('0x44')](_0x1dfcd6['where'],{'$or':_[_0x5230('0x30')](_0x1dfcd6[_0x5230('0x3a')],function(_0x4d3e6a){var _0x1b3633={};_0x1b3633[_0x4d3e6a]={'$like':'%'+_0x1605d3['query']['filter']+'%'};return _0x1b3633;})});}_0x1dfcd6=_[_0x5230('0x44')]({},_0x1dfcd6,_0x1605d3[_0x5230('0x46')]);return db['CmHopperHistory']['count']({'where':_0x1dfcd6[_0x5230('0x40')]})[_0x5230('0x26')](function(_0xee310){_0x163ff3[_0x5230('0x1e')]=_0xee310;if(_0x1605d3[_0x5230('0x37')][_0x5230('0x4b')]){_0x1dfcd6['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x5230('0x48')](_0x1dfcd6);})[_0x5230('0x26')](function(_0x212e94){_0x163ff3[_0x5230('0x49')]=_0x212e94;return _0x163ff3;});}})[_0x5230('0x26')](respondWithFilteredResult(_0x226da0,_0x1dfcd6))[_0x5230('0x4a')](handleError(_0x226da0,null));};exports['getHopperFinals']=function(_0x51e2df,_0x1be2bf,_0x18fb0b){var _0x2c3d42={'raw':!![],'where':{}};var _0x185b39={};var _0x1e4fdd={'count':0x0,'rows':[]};return db['Campaign'][_0x5230('0x5d')]({'where':{'id':_0x51e2df[_0x5230('0x57')]['id']}})['then'](handleEntityNotFound(_0x1be2bf,null))[_0x5230('0x26')](function(_0x542b38){if(_0x542b38){_0x185b39[_0x5230('0x36')]=_[_0x5230('0x38')](db['CmHopperFinal']['rawAttributes']);_0x185b39[_0x5230('0x37')]=_[_0x5230('0x38')](_0x51e2df['query']);_0x185b39[_0x5230('0x41')]=_['intersection'](_0x185b39[_0x5230('0x36')],_0x185b39[_0x5230('0x37')]);_0x2c3d42[_0x5230('0x3a')]=_[_0x5230('0x39')](_0x185b39['model'],qs[_0x5230('0x3b')](_0x51e2df[_0x5230('0x37')]['fields']));_0x2c3d42[_0x5230('0x3a')]=_0x2c3d42[_0x5230('0x3a')][_0x5230('0x3c')]?_0x2c3d42[_0x5230('0x3a')]:_0x185b39['model'];if(!_0x51e2df[_0x5230('0x37')][_0x5230('0x3d')](_0x5230('0x3e'))){_0x2c3d42[_0x5230('0x1f')]=qs[_0x5230('0x1f')](_0x51e2df['query'][_0x5230('0x1f')]);_0x2c3d42[_0x5230('0x1c')]=qs['offset'](_0x51e2df['query'][_0x5230('0x1c')]);}_0x2c3d42[_0x5230('0x61')]=qs[_0x5230('0x3f')](_0x51e2df['query']['sort']);_0x2c3d42[_0x5230('0x40')]=qs[_0x5230('0x41')](_[_0x5230('0x42')](_0x51e2df[_0x5230('0x37')],_0x185b39['filters']));_0x2c3d42['where']['CampaignId']=_0x542b38['id'];if(_0x51e2df['query'][_0x5230('0x43')]){_0x2c3d42[_0x5230('0x40')]=_[_0x5230('0x44')](_0x2c3d42[_0x5230('0x40')],{'$or':_['map'](_0x2c3d42[_0x5230('0x3a')],function(_0x41be45){var _0x5204a1={};_0x5204a1[_0x41be45]={'$like':'%'+_0x51e2df[_0x5230('0x37')][_0x5230('0x43')]+'%'};return _0x5204a1;})});}_0x2c3d42=_['merge']({},_0x2c3d42,_0x51e2df[_0x5230('0x46')]);return db[_0x5230('0x63')][_0x5230('0x1e')]({'where':_0x2c3d42[_0x5230('0x40')]})[_0x5230('0x26')](function(_0x44302d){_0x1e4fdd[_0x5230('0x1e')]=_0x44302d;if(_0x51e2df[_0x5230('0x37')][_0x5230('0x4b')]){_0x2c3d42[_0x5230('0x47')]=[{'all':!![]}];}return db[_0x5230('0x63')][_0x5230('0x48')](_0x2c3d42);})[_0x5230('0x26')](function(_0x30b4b5){_0x1e4fdd[_0x5230('0x49')]=_0x30b4b5;return _0x1e4fdd;});}})[_0x5230('0x26')](respondWithFilteredResult(_0x1be2bf,_0x2c3d42))['catch'](handleError(_0x1be2bf,null));};exports[_0x5230('0x64')]=function(_0x1f1349,_0x13a3f9,_0x2fd6d2){var _0x2424d5={'raw':!![],'where':{}};var _0x51ccf6={};var _0x20cb52={'count':0x0,'rows':[]};return db[_0x5230('0x31')]['findOne']({'where':{'id':_0x1f1349['params']['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x13a3f9,null))['then'](function(_0x1dce7b){if(_0x1dce7b){_0x51ccf6[_0x5230('0x36')]=_[_0x5230('0x38')](db[_0x5230('0x65')][_0x5230('0x32')]);_0x51ccf6['query']=_['keys'](_0x1f1349[_0x5230('0x37')]);_0x51ccf6[_0x5230('0x41')]=_[_0x5230('0x39')](_0x51ccf6[_0x5230('0x36')],_0x51ccf6['query']);_0x2424d5[_0x5230('0x3a')]=_['intersection'](_0x51ccf6['model'],qs[_0x5230('0x3b')](_0x1f1349[_0x5230('0x37')][_0x5230('0x3b')]));_0x2424d5[_0x5230('0x3a')]=_0x2424d5[_0x5230('0x3a')][_0x5230('0x3c')]?_0x2424d5['attributes']:_0x51ccf6[_0x5230('0x36')];if(!_0x1f1349[_0x5230('0x37')][_0x5230('0x3d')](_0x5230('0x3e'))){_0x2424d5['limit']=qs[_0x5230('0x1f')](_0x1f1349[_0x5230('0x37')]['limit']);_0x2424d5[_0x5230('0x1c')]=qs[_0x5230('0x1c')](_0x1f1349[_0x5230('0x37')][_0x5230('0x1c')]);}_0x2424d5[_0x5230('0x61')]=qs[_0x5230('0x3f')](_0x1f1349[_0x5230('0x37')][_0x5230('0x3f')]);_0x2424d5[_0x5230('0x40')]=qs['filters'](_[_0x5230('0x42')](_0x1f1349['query'],_0x51ccf6['filters']));_0x2424d5[_0x5230('0x40')][_0x5230('0x62')]=_0x1dce7b['id'];if(_0x1f1349['query'][_0x5230('0x43')]){_0x2424d5[_0x5230('0x40')]=_[_0x5230('0x44')](_0x2424d5[_0x5230('0x40')],{'$or':_['map'](_0x2424d5[_0x5230('0x3a')],function(_0x53efe9){var _0x539a47={};_0x539a47[_0x53efe9]={'$like':'%'+_0x1f1349[_0x5230('0x37')]['filter']+'%'};return _0x539a47;})});}_0x2424d5=_[_0x5230('0x44')]({},_0x2424d5,_0x1f1349[_0x5230('0x46')]);return db[_0x5230('0x65')][_0x5230('0x1e')]({'where':_0x2424d5[_0x5230('0x40')]})[_0x5230('0x26')](function(_0x191bbc){_0x20cb52[_0x5230('0x1e')]=_0x191bbc;if(_0x1f1349['query']['includeAll']){_0x2424d5['include']=[{'all':!![]}];}return db['CmHopperBlack'][_0x5230('0x48')](_0x2424d5);})[_0x5230('0x26')](function(_0x41f0c2){_0x20cb52[_0x5230('0x49')]=_0x41f0c2;return _0x20cb52;});}})['then'](respondWithFilteredResult(_0x13a3f9,_0x2424d5))[_0x5230('0x4a')](handleError(_0x13a3f9,null));};exports[_0x5230('0x66')]=function(_0x21c2e2,_0x1b27cf,_0x40bd73){var _0x1f7374={};var _0x4c9832={};var _0x4b3d35;var _0x9182c;return db['Campaign'][_0x5230('0x5d')]({'where':{'id':_0x21c2e2['params']['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x1b27cf,null))[_0x5230('0x26')](function(_0x4b2c39){if(_0x4b2c39){_0x4b3d35=_0x4b2c39;_0x4c9832[_0x5230('0x36')]=_[_0x5230('0x38')](db[_0x5230('0x67')][_0x5230('0x32')]);_0x4c9832[_0x5230('0x37')]=_['keys'](_0x21c2e2[_0x5230('0x37')]);_0x4c9832[_0x5230('0x41')]=_[_0x5230('0x39')](_0x4c9832[_0x5230('0x36')],_0x4c9832['query']);_0x1f7374[_0x5230('0x3a')]=_[_0x5230('0x39')](_0x4c9832[_0x5230('0x36')],qs['fields'](_0x21c2e2[_0x5230('0x37')][_0x5230('0x3b')]));_0x1f7374[_0x5230('0x3a')]=_0x1f7374[_0x5230('0x3a')]['length']?_0x1f7374[_0x5230('0x3a')]:_0x4c9832[_0x5230('0x36')];_0x1f7374[_0x5230('0x61')]=qs[_0x5230('0x3f')](_0x21c2e2['query'][_0x5230('0x3f')]);_0x1f7374['where']=qs[_0x5230('0x41')](_[_0x5230('0x42')](_0x21c2e2['query'],_0x4c9832[_0x5230('0x41')]));if(_0x21c2e2[_0x5230('0x37')][_0x5230('0x43')]){_0x1f7374['where']=_[_0x5230('0x44')](_0x1f7374['where'],{'$or':_[_0x5230('0x30')](_0x1f7374[_0x5230('0x3a')],function(_0x1252c8){var _0x2d08ea={};_0x2d08ea[_0x1252c8]={'$like':'%'+_0x21c2e2[_0x5230('0x37')]['filter']+'%'};return _0x2d08ea;})});}_0x1f7374=_[_0x5230('0x44')]({},_0x1f7374,_0x21c2e2[_0x5230('0x46')]);return _0x4b3d35[_0x5230('0x66')](_0x1f7374);}})['then'](function(_0x35954f){if(_0x35954f){_0x9182c=_0x35954f[_0x5230('0x3c')];if(!_0x21c2e2[_0x5230('0x37')]['hasOwnProperty'](_0x5230('0x3e'))){_0x1f7374[_0x5230('0x1f')]=qs[_0x5230('0x1f')](_0x21c2e2[_0x5230('0x37')]['limit']);_0x1f7374['offset']=qs['offset'](_0x21c2e2[_0x5230('0x37')][_0x5230('0x1c')]);}return _0x4b3d35[_0x5230('0x66')](_0x1f7374);}})['then'](function(_0x108f77){if(_0x108f77){return _0x108f77?{'count':_0x9182c,'rows':_0x108f77}:null;}})['then'](respondWithResult(_0x1b27cf,null))[_0x5230('0x4a')](handleError(_0x1b27cf,null));};exports[_0x5230('0x68')]=function(_0x4c80b1,_0x35df25,_0x92dd9f){var _0xcf5fbe,_0x9bb6bb;return db[_0x5230('0x31')]['find']({'where':{'id':_0x4c80b1['params']['id']}})['then'](handleEntityNotFound(_0x35df25,null))[_0x5230('0x26')](function(_0x4ab3da){if(_0x4ab3da){_0x9bb6bb=_0x4ab3da;return _0x4ab3da['addLists'](_0x4c80b1['body'][_0x5230('0x69')],_[_0x5230('0x58')](_0x4c80b1['body'],['ids','id'])||{});}return null;})[_0x5230('0x6a')](function(_0x9374d4){var _0xe6abaa;_0xcf5fbe=_0x9374d4||[];var _0x45247a=[];if(_0x9374d4){for(var _0x4fbac8=0x0;_0x4fbac8<_0x9374d4[_0x5230('0x3c')];_0x4fbac8+=0x1){var _0x11e774=_0x9374d4[_0x4fbac8][_0x5230('0x51')]({'plain':!![]});_0x9bb6bb[_0x5230('0x6b')]=_0x4c80b1[_0x5230('0x4e')][_0x5230('0x6b')]?_0x4c80b1[_0x5230('0x4e')][_0x5230('0x6b')]:_0x9bb6bb[_0x5230('0x6b')];switch(_0x9bb6bb[_0x5230('0x6b')]){case _0x5230('0x6c'):_0xe6abaa=squel['insert']()[_0x5230('0x6d')](_0x5230('0x6e'))[_0x5230('0x6f')]([_0x5230('0x70'),_0x5230('0x71'),_0x5230('0x72'),'ListId',_0x5230('0x62'),_0x5230('0x59'),_0x5230('0x5a')],squel[_0x5230('0x73')]()[_0x5230('0x74')]('phone',_0x5230('0x70'))[_0x5230('0x74')](_0x5230('0x75'),_0x5230('0x71'))[_0x5230('0x74')]('id',_0x5230('0x72'))[_0x5230('0x74')](_0x11e774['CmListId'][_0x5230('0x76')](),_0x5230('0x77'))[_0x5230('0x74')](_0x4c80b1[_0x5230('0x57')]['id'][_0x5230('0x76')](),_0x5230('0x62'))[_0x5230('0x74')]('NOW()',_0x5230('0x59'))['field'](_0x5230('0x75'),'updatedAt')[_0x5230('0x78')]('cm_contacts')[_0x5230('0x40')](_0x5230('0x79'))[_0x5230('0x40')]('ListId\x20=\x20?',_0x11e774['CmListId']['toString']())[_0x5230('0x40')](_0x5230('0x7a'))[_0x5230('0x40')](_0x5230('0x7b'),squel['select']()[_0x5230('0x74')](_0x5230('0x7c'))[_0x5230('0x78')](_0x5230('0x7d'))[_0x5230('0x40')](_0x5230('0x7e'),_0x4c80b1[_0x5230('0x57')]['id']['toString']()))['where'](_0x5230('0x7b'),squel[_0x5230('0x73')]()[_0x5230('0x74')](_0x5230('0x7f'))[_0x5230('0x78')]('cm_hopper')[_0x5230('0x40')](_0x5230('0x7e'),_0x4c80b1[_0x5230('0x57')]['id'][_0x5230('0x76')]())))[_0x5230('0x76')]();break;case _0x5230('0x80'):_0xe6abaa=squel[_0x5230('0x81')]()['into'](_0x5230('0x6e'))[_0x5230('0x6f')]([_0x5230('0x70'),_0x5230('0x71'),_0x5230('0x72'),_0x5230('0x77'),_0x5230('0x62'),_0x5230('0x59'),_0x5230('0x5a')],squel['select']()[_0x5230('0x74')]('phone',_0x5230('0x70'))[_0x5230('0x74')](_0x5230('0x75'),_0x5230('0x71'))['field']('id',_0x5230('0x72'))['field'](_0x11e774[_0x5230('0x82')][_0x5230('0x76')](),_0x5230('0x77'))['field'](_0x4c80b1[_0x5230('0x57')]['id'][_0x5230('0x76')](),_0x5230('0x62'))[_0x5230('0x74')](_0x5230('0x75'),'createdAt')['field'](_0x5230('0x75'),_0x5230('0x5a'))[_0x5230('0x78')]('cm_contacts')[_0x5230('0x40')]('deletedAt\x20IS\x20NULL')[_0x5230('0x40')]('ListId\x20=\x20?',_0x11e774[_0x5230('0x82')][_0x5230('0x76')]())['where'](_0x5230('0x7a'))['where'](_0x5230('0x7b'),squel[_0x5230('0x73')]()['field'](_0x5230('0x7f'))['from'](_0x5230('0x6e'))[_0x5230('0x40')](_0x5230('0x7e'),_0x4c80b1[_0x5230('0x57')]['id'][_0x5230('0x76')]())))[_0x5230('0x76')]();break;default:_0xe6abaa=squel[_0x5230('0x81')]()[_0x5230('0x6d')](_0x5230('0x6e'))[_0x5230('0x6f')]([_0x5230('0x70'),'scheduledAt',_0x5230('0x72'),'ListId',_0x5230('0x62'),_0x5230('0x59'),_0x5230('0x5a')],squel[_0x5230('0x73')]()[_0x5230('0x74')](_0x5230('0x70'),'phone')['field']('NOW()',_0x5230('0x71'))[_0x5230('0x74')]('id',_0x5230('0x72'))[_0x5230('0x74')](_0x11e774[_0x5230('0x82')]['toString'](),_0x5230('0x77'))['field'](_0x4c80b1[_0x5230('0x57')]['id'][_0x5230('0x76')](),_0x5230('0x62'))['field']('NOW()',_0x5230('0x59'))['field'](_0x5230('0x75'),_0x5230('0x5a'))[_0x5230('0x78')](_0x5230('0x83'))[_0x5230('0x40')](_0x5230('0x79'))[_0x5230('0x40')](_0x5230('0x84'),_0x11e774['CmListId'][_0x5230('0x76')]())[_0x5230('0x40')](_0x5230('0x7a')))[_0x5230('0x76')]();}_0x45247a['push'](db[_0x5230('0x85')]['query'](_0xe6abaa));}return BPromise[_0x5230('0x86')](_0x45247a);}})[_0x5230('0x26')](function(){return _0xcf5fbe;})[_0x5230('0x26')](respondWithResult(_0x35df25,null))['catch'](handleError(_0x35df25,null));};exports[_0x5230('0x87')]=function(_0x2c167b,_0x5e6ff1,_0x2891f2){return db[_0x5230('0x31')][_0x5230('0x4c')]({'where':{'id':_0x2c167b[_0x5230('0x57')]['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x5e6ff1,null))[_0x5230('0x26')](function(_0xe8a492){if(_0xe8a492){return _0xe8a492[_0x5230('0x87')](_0x2c167b[_0x5230('0x37')][_0x5230('0x69')]);}})['then'](function(_0x422425){if(_0x422425){return db['CmHopper'][_0x5230('0x27')]({'where':{'ListId':_0x2c167b[_0x5230('0x37')][_0x5230('0x69')],'CampaignId':_0x2c167b[_0x5230('0x57')]['id']}})[_0x5230('0x26')](function(){return _0x422425;});}})[_0x5230('0x26')](respondWithStatusCode(_0x5e6ff1,null))[_0x5230('0x4a')](handleError(_0x5e6ff1,null));};exports[_0x5230('0x88')]=function(_0x5dbc27,_0x12c7de,_0x14230b){var _0x3a92cf={};var _0x55b741={};var _0x38f470;var _0x1e09ae;return db[_0x5230('0x31')][_0x5230('0x5d')]({'where':{'id':_0x5dbc27[_0x5230('0x57')]['id']}})['then'](handleEntityNotFound(_0x12c7de,null))[_0x5230('0x26')](function(_0x2eb530){if(_0x2eb530){_0x38f470=_0x2eb530;_0x55b741['model']=_['keys'](db[_0x5230('0x67')][_0x5230('0x32')]);_0x55b741[_0x5230('0x37')]=_[_0x5230('0x38')](_0x5dbc27[_0x5230('0x37')]);_0x55b741[_0x5230('0x41')]=_[_0x5230('0x39')](_0x55b741[_0x5230('0x36')],_0x55b741[_0x5230('0x37')]);_0x3a92cf[_0x5230('0x3a')]=_[_0x5230('0x39')](_0x55b741[_0x5230('0x36')],qs[_0x5230('0x3b')](_0x5dbc27[_0x5230('0x37')][_0x5230('0x3b')]));_0x3a92cf[_0x5230('0x3a')]=_0x3a92cf[_0x5230('0x3a')][_0x5230('0x3c')]?_0x3a92cf[_0x5230('0x3a')]:_0x55b741[_0x5230('0x36')];_0x3a92cf[_0x5230('0x61')]=qs[_0x5230('0x3f')](_0x5dbc27['query'][_0x5230('0x3f')]);_0x3a92cf[_0x5230('0x40')]=qs['filters'](_[_0x5230('0x42')](_0x5dbc27['query'],_0x55b741[_0x5230('0x41')]));if(_0x5dbc27['query'][_0x5230('0x43')]){_0x3a92cf[_0x5230('0x40')]=_[_0x5230('0x44')](_0x3a92cf[_0x5230('0x40')],{'$or':_['map'](_0x3a92cf[_0x5230('0x3a')],function(_0x5acbdd){var _0x193626={};_0x193626[_0x5acbdd]={'$like':'%'+_0x5dbc27[_0x5230('0x37')][_0x5230('0x43')]+'%'};return _0x193626;})});}_0x3a92cf=_[_0x5230('0x44')]({},_0x3a92cf,_0x5dbc27['options']);return _0x38f470[_0x5230('0x88')](_0x3a92cf);}})[_0x5230('0x26')](function(_0x59ca17){if(_0x59ca17){_0x1e09ae=_0x59ca17['length'];if(!_0x5dbc27['query']['hasOwnProperty'](_0x5230('0x3e'))){_0x3a92cf[_0x5230('0x1f')]=qs[_0x5230('0x1f')](_0x5dbc27[_0x5230('0x37')][_0x5230('0x1f')]);_0x3a92cf['offset']=qs[_0x5230('0x1c')](_0x5dbc27['query']['offset']);}return _0x38f470[_0x5230('0x88')](_0x3a92cf);}})[_0x5230('0x26')](function(_0xeefe29){if(_0xeefe29){return _0xeefe29?{'count':_0x1e09ae,'rows':_0xeefe29}:null;}})['then'](respondWithResult(_0x12c7de,null))[_0x5230('0x4a')](handleError(_0x12c7de,null));};exports[_0x5230('0x89')]=function(_0x2a1f85,_0x528d69,_0x1a6713){var _0x28ef0b,_0xd20f0e;return db[_0x5230('0x31')]['find']({'where':{'id':_0x2a1f85[_0x5230('0x57')]['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x528d69,null))[_0x5230('0x26')](function(_0x364bce){if(_0x364bce){_0xd20f0e=_0x364bce;return _0x364bce[_0x5230('0x89')](_0x2a1f85['body']['ids'],_[_0x5230('0x58')](_0x2a1f85[_0x5230('0x4e')],[_0x5230('0x69'),'id'])||{});}return null;})['spread'](function(_0x45ee8a){var _0x3d9b26;_0x28ef0b=_0x45ee8a||[];var _0x1c80c1=[];if(_0x45ee8a){for(var _0x1030d5=0x0;_0x1030d5<_0x45ee8a[_0x5230('0x3c')];_0x1030d5+=0x1){var _0x22818d=_0x45ee8a[_0x1030d5][_0x5230('0x51')]({'plain':!![]});_0x3d9b26=squel[_0x5230('0x81')]()[_0x5230('0x6d')](_0x5230('0x8a'))['fromQuery'](['phone',_0x5230('0x72'),_0x5230('0x77'),_0x5230('0x62'),_0x5230('0x59'),_0x5230('0x5a')],squel[_0x5230('0x73')]()[_0x5230('0x74')]('phone','phone')[_0x5230('0x74')]('id',_0x5230('0x72'))['field'](_0x22818d['CmListId'][_0x5230('0x76')](),_0x5230('0x77'))[_0x5230('0x74')](_0x2a1f85[_0x5230('0x57')]['id'][_0x5230('0x76')](),_0x5230('0x62'))[_0x5230('0x74')](_0x5230('0x75'),_0x5230('0x59'))[_0x5230('0x74')]('NOW()',_0x5230('0x5a'))[_0x5230('0x78')](_0x5230('0x83'))[_0x5230('0x40')](_0x5230('0x79'))[_0x5230('0x40')](_0x5230('0x84'),_0x22818d['CmListId']['toString']())['where'](_0x5230('0x7a')))[_0x5230('0x76')]();_0x1c80c1[_0x5230('0x8b')](db[_0x5230('0x85')]['query'](_0x3d9b26));}return BPromise['all'](_0x1c80c1);}})[_0x5230('0x26')](function(){return _0x28ef0b;})[_0x5230('0x26')](respondWithResult(_0x528d69,null))[_0x5230('0x4a')](handleError(_0x528d69,null));};exports[_0x5230('0x8c')]=function(_0x309278,_0x155ab7,_0x26d09e){return db[_0x5230('0x31')][_0x5230('0x4c')]({'where':{'id':_0x309278[_0x5230('0x57')]['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x155ab7,null))[_0x5230('0x26')](function(_0x28eb74){if(_0x28eb74){return _0x28eb74[_0x5230('0x8c')](_0x309278[_0x5230('0x37')]['ids']);}})[_0x5230('0x26')](function(_0x29be9c){if(_0x29be9c){return db[_0x5230('0x65')][_0x5230('0x27')]({'where':{'ListId':_0x309278[_0x5230('0x37')][_0x5230('0x69')],'CampaignId':_0x309278['params']['id']}})[_0x5230('0x26')](function(){return _0x29be9c;});}})[_0x5230('0x26')](respondWithStatusCode(_0x155ab7,null))[_0x5230('0x4a')](handleError(_0x155ab7,null));};
\ No newline at end of file
index 0b4332a..ddac6be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x56ce7d,_0x57d050){var _0x72a880=function(_0x3179a2){while(--_0x3179a2){_0x56ce7d['push'](_0x56ce7d['shift']());}};_0x72a880(++_0x57d050);}(_0x7a54,0x106));var _0x47a5=function(_0x8a5308,_0x600cba){_0x8a5308=_0x8a5308-0x0;var _0x1b50fb=_0x7a54[_0x8a5308];return _0x1b50fb;};'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':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x48ebe8,_0x300832){var _0x5c65fb=function(_0x55a95b){while(--_0x55a95b){_0x48ebe8['push'](_0x48ebe8['shift']());}};_0x5c65fb(++_0x300832);}(_0x7a54,0x106));var _0x47a5=function(_0x5f2f25,_0x303080){_0x5f2f25=_0x5f2f25-0x0;var _0x435c1d=_0x7a54[_0x5f2f25];return _0x435c1d;};'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':[],'timestamps':!![]});};
\ No newline at end of file
index cf5642d..36ff300 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x295f=['where','attributes','limit','include','map','model','GetCampaign','catch','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','findAll','options'];(function(_0x24c405,_0x56d6fb){var _0x383aef=function(_0x20da69){while(--_0x20da69){_0x24c405['push'](_0x24c405['shift']());}};_0x383aef(++_0x56d6fb);}(_0x295f,0x168));var _0xf295=function(_0x37d441,_0x21bdf1){_0x37d441=_0x37d441-0x0;var _0x2cd26d=_0x295f[_0x37d441];return _0x2cd26d;};'use strict';var _=require('lodash');var util=require(_0xf295('0x0'));var moment=require(_0xf295('0x1'));var BPromise=require(_0xf295('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf295('0x3'));var db=require(_0xf295('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf295('0x5'));var config=require(_0xf295('0x6'));var jayson=require(_0xf295('0x7'));var client=jayson[_0xf295('0x8')][_0xf295('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x50a890,_0x2b302f,_0x44e292){return new BPromise(function(_0x1f3320,_0x4041d5){return client[_0xf295('0xa')](_0x50a890,_0x44e292)[_0xf295('0xb')](function(_0xaf1853){logger[_0xf295('0xc')](_0xf295('0xd'),_0x2b302f,_0xf295('0xe'));logger[_0xf295('0xf')](_0xf295('0x10'),_0x2b302f,'request\x20sent',JSON[_0xf295('0x11')](_0xaf1853));if(_0xaf1853[_0xf295('0x12')]){if(_0xaf1853['error'][_0xf295('0x13')]===0x1f4){logger[_0xf295('0x12')](_0xf295('0xd'),_0x2b302f,_0xaf1853[_0xf295('0x12')][_0xf295('0x14')]);return _0x4041d5(_0xaf1853[_0xf295('0x12')][_0xf295('0x14')]);}logger[_0xf295('0x12')](_0xf295('0xd'),_0x2b302f,_0xaf1853[_0xf295('0x12')][_0xf295('0x14')]);return _0x1f3320(_0xaf1853[_0xf295('0x12')][_0xf295('0x14')]);}else{logger[_0xf295('0xc')](_0xf295('0xd'),_0x2b302f,_0xf295('0xe'));_0x1f3320(_0xaf1853[_0xf295('0x15')][_0xf295('0x14')]);}})['catch'](function(_0x57e1bc){logger[_0xf295('0x12')](_0xf295('0xd'),_0x2b302f,_0x57e1bc);_0x4041d5(_0x57e1bc);});});}exports['GetCampaign']=function(_0x3e0a44){var _0x5d18e1=this;return new Promise(function(_0x30ad22,_0x4deacb){return db['Campaign'][_0xf295('0x16')]({'raw':_0x3e0a44[_0xf295('0x17')]?_0x3e0a44['options']['raw']===undefined?!![]:![]:!![],'where':_0x3e0a44[_0xf295('0x17')]?_0x3e0a44[_0xf295('0x17')][_0xf295('0x18')]||null:null,'attributes':_0x3e0a44[_0xf295('0x17')]?_0x3e0a44[_0xf295('0x17')][_0xf295('0x19')]||null:null,'limit':_0x3e0a44['options']?_0x3e0a44['options'][_0xf295('0x1a')]||null:null,'include':_0x3e0a44['options']?_0x3e0a44[_0xf295('0x17')][_0xf295('0x1b')]?_[_0xf295('0x1c')](_0x3e0a44['options'][_0xf295('0x1b')],function(_0x2e079e){return{'model':db[_0x2e079e['model']],'as':_0x2e079e['as'],'attributes':_0x2e079e[_0xf295('0x19')],'include':_0x2e079e[_0xf295('0x1b')]?_[_0xf295('0x1c')](_0x2e079e[_0xf295('0x1b')],function(_0x111449){return{'model':db[_0x111449['model']],'as':_0x111449['as'],'attributes':_0x111449[_0xf295('0x19')],'include':_0x111449[_0xf295('0x1b')]?_['map'](_0x111449['include'],function(_0x1ba1dd){return{'model':db[_0x1ba1dd[_0xf295('0x1d')]],'as':_0x1ba1dd['as'],'attributes':_0x1ba1dd[_0xf295('0x19')]};}):[]};}):[]};}):[]:[]})[_0xf295('0xb')](function(_0x2f3f73){logger[_0xf295('0xc')](_0xf295('0x1e'),_0x3e0a44);logger[_0xf295('0xf')](_0xf295('0x1e'),_0x3e0a44,JSON['stringify'](_0x2f3f73));_0x30ad22(_0x2f3f73);})[_0xf295('0x1f')](function(_0x19ec3a){logger[_0xf295('0x12')](_0xf295('0x1e'),_0x19ec3a[_0xf295('0x14')],_0x3e0a44);_0x4deacb(_0x5d18e1[_0xf295('0x12')](0x1f4,_0x19ec3a['message']));});});};
\ No newline at end of file
+var _0x89e8=['GetCampaign','Campaign','findAll','options','raw','where','attributes','limit','include','map','model','then','stringify','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','request','info','Campaign,\x20%s,\x20%s','request\x20sent','Campaign,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x131019,_0x2b969d){var _0x470cd4=function(_0xc064de){while(--_0xc064de){_0x131019['push'](_0x131019['shift']());}};_0x470cd4(++_0x2b969d);}(_0x89e8,0x74));var _0x889e=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x89e8[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x889e('0x0'));var util=require(_0x889e('0x1'));var moment=require(_0x889e('0x2'));var BPromise=require(_0x889e('0x3'));var rs=require(_0x889e('0x4'));var fs=require('fs');var Redis=require(_0x889e('0x5'));var db=require(_0x889e('0x6'))['db'];var utils=require(_0x889e('0x7'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x889e('0x8'));var client=jayson[_0x889e('0x9')][_0x889e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5ed85f,_0x38eeae,_0x54f734){return new BPromise(function(_0x2bfae4,_0x42be62){return client[_0x889e('0xb')](_0x5ed85f,_0x54f734)['then'](function(_0x21c1d9){logger[_0x889e('0xc')](_0x889e('0xd'),_0x38eeae,_0x889e('0xe'));logger['debug'](_0x889e('0xf'),_0x38eeae,_0x889e('0xe'),JSON['stringify'](_0x21c1d9));if(_0x21c1d9[_0x889e('0x10')]){if(_0x21c1d9[_0x889e('0x10')][_0x889e('0x11')]===0x1f4){logger[_0x889e('0x10')]('Campaign,\x20%s,\x20%s',_0x38eeae,_0x21c1d9[_0x889e('0x10')][_0x889e('0x12')]);return _0x42be62(_0x21c1d9[_0x889e('0x10')]['message']);}logger[_0x889e('0x10')](_0x889e('0xd'),_0x38eeae,_0x21c1d9[_0x889e('0x10')][_0x889e('0x12')]);return _0x2bfae4(_0x21c1d9[_0x889e('0x10')]['message']);}else{logger['info'](_0x889e('0xd'),_0x38eeae,_0x889e('0xe'));_0x2bfae4(_0x21c1d9[_0x889e('0x13')][_0x889e('0x12')]);}})['catch'](function(_0x22fbf6){logger[_0x889e('0x10')]('Campaign,\x20%s,\x20%s',_0x38eeae,_0x22fbf6);_0x42be62(_0x22fbf6);});});}exports[_0x889e('0x14')]=function(_0x4f9b2c){var _0x75e219=this;return new Promise(function(_0x168fed,_0x232452){return db[_0x889e('0x15')][_0x889e('0x16')]({'raw':_0x4f9b2c['options']?_0x4f9b2c[_0x889e('0x17')][_0x889e('0x18')]===undefined?!![]:![]:!![],'where':_0x4f9b2c['options']?_0x4f9b2c[_0x889e('0x17')][_0x889e('0x19')]||null:null,'attributes':_0x4f9b2c[_0x889e('0x17')]?_0x4f9b2c['options'][_0x889e('0x1a')]||null:null,'limit':_0x4f9b2c[_0x889e('0x17')]?_0x4f9b2c[_0x889e('0x17')][_0x889e('0x1b')]||null:null,'include':_0x4f9b2c['options']?_0x4f9b2c['options'][_0x889e('0x1c')]?_[_0x889e('0x1d')](_0x4f9b2c[_0x889e('0x17')]['include'],function(_0x956dae){return{'model':db[_0x956dae[_0x889e('0x1e')]],'as':_0x956dae['as'],'attributes':_0x956dae[_0x889e('0x1a')],'include':_0x956dae['include']?_[_0x889e('0x1d')](_0x956dae['include'],function(_0x37fb09){return{'model':db[_0x37fb09[_0x889e('0x1e')]],'as':_0x37fb09['as'],'attributes':_0x37fb09[_0x889e('0x1a')],'include':_0x37fb09['include']?_[_0x889e('0x1d')](_0x37fb09['include'],function(_0x34db77){return{'model':db[_0x34db77[_0x889e('0x1e')]],'as':_0x34db77['as'],'attributes':_0x34db77[_0x889e('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x889e('0x1f')](function(_0x5e0267){logger['info'](_0x889e('0x14'),_0x4f9b2c);logger['debug'](_0x889e('0x14'),_0x4f9b2c,JSON[_0x889e('0x20')](_0x5e0267));_0x168fed(_0x5e0267);})[_0x889e('0x21')](function(_0x9e8192){logger[_0x889e('0x10')]('GetCampaign',_0x9e8192['message'],_0x4f9b2c);_0x232452(_0x75e219['error'](0x1f4,_0x9e8192['message']));});});};
\ No newline at end of file
index 4e3e192..a2a5ea6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62ee=['getHopperBlacks','/:id/lists','getLists','post','create','/:id/clone','clone','addLists','/:id/blacklists','addBlackLists','put','/:id','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','./campaign.controller','get','index','isAuthenticated','show','/:id/hoppers','getHopperHistories','/:id/hopper_finals','getHopperFinals'];(function(_0x100905,_0x3e3c97){var _0x4d5ccf=function(_0x3d677b){while(--_0x3d677b){_0x100905['push'](_0x100905['shift']());}};_0x4d5ccf(++_0x3e3c97);}(_0x62ee,0x13a));var _0xe62e=function(_0x1e92b4,_0x13010d){_0x1e92b4=_0x1e92b4-0x0;var _0x11c813=_0x62ee[_0x1e92b4];return _0x11c813;};'use strict';var multer=require(_0xe62e('0x0'));var util=require(_0xe62e('0x1'));var path=require(_0xe62e('0x2'));var timeout=require(_0xe62e('0x3'));var express=require('express');var router=express[_0xe62e('0x4')]();var fs_extra=require(_0xe62e('0x5'));var auth=require(_0xe62e('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xe62e('0x7'));router[_0xe62e('0x8')]('/',auth['isAuthenticated'](),controller[_0xe62e('0x9')]);router[_0xe62e('0x8')]('/:id',auth[_0xe62e('0xa')](),controller[_0xe62e('0xb')]);router[_0xe62e('0x8')](_0xe62e('0xc'),auth[_0xe62e('0xa')](),controller['getHoppers']);router[_0xe62e('0x8')]('/:id/hopper_histories',auth['isAuthenticated'](),controller[_0xe62e('0xd')]);router[_0xe62e('0x8')](_0xe62e('0xe'),auth[_0xe62e('0xa')](),controller[_0xe62e('0xf')]);router[_0xe62e('0x8')]('/:id/hopper_black',auth[_0xe62e('0xa')](),controller[_0xe62e('0x10')]);router[_0xe62e('0x8')](_0xe62e('0x11'),auth[_0xe62e('0xa')](),controller[_0xe62e('0x12')]);router['get']('/:id/blacklists',auth[_0xe62e('0xa')](),controller['getBlackLists']);router[_0xe62e('0x13')]('/',auth['isAuthenticated'](),controller[_0xe62e('0x14')]);router[_0xe62e('0x13')](_0xe62e('0x15'),auth[_0xe62e('0xa')](),controller[_0xe62e('0x16')]);router[_0xe62e('0x13')](_0xe62e('0x11'),auth[_0xe62e('0xa')](),controller[_0xe62e('0x17')]);router[_0xe62e('0x13')](_0xe62e('0x18'),auth[_0xe62e('0xa')](),controller[_0xe62e('0x19')]);router[_0xe62e('0x1a')](_0xe62e('0x1b'),auth[_0xe62e('0xa')](),controller['update']);router[_0xe62e('0x1c')](_0xe62e('0x1b'),auth[_0xe62e('0xa')](),controller[_0xe62e('0x1d')]);router[_0xe62e('0x1c')]('/:id/lists',auth[_0xe62e('0xa')](),controller['removeLists']);router[_0xe62e('0x1c')](_0xe62e('0x18'),auth[_0xe62e('0xa')](),controller['removeBlackLists']);module['exports']=router;
\ No newline at end of file
+var _0xc5b5=['/:id/hopper_finals','getHopperFinals','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','addLists','addBlackLists','put','update','delete','removeLists','removeBlackLists','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./campaign.controller','get','isAuthenticated','index','/:id','show','/:id/hopper_histories','getHopperHistories'];(function(_0x4636e9,_0x33aefb){var _0x358ef1=function(_0x21479f){while(--_0x21479f){_0x4636e9['push'](_0x4636e9['shift']());}};_0x358ef1(++_0x33aefb);}(_0xc5b5,0x1b2));var _0x5c5b=function(_0x571d85,_0xda439c){_0x571d85=_0x571d85-0x0;var _0x3c2e07=_0xc5b5[_0x571d85];return _0x3c2e07;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x5c5b('0x0'));var timeout=require(_0x5c5b('0x1'));var express=require('express');var router=express[_0x5c5b('0x2')]();var fs_extra=require(_0x5c5b('0x3'));var auth=require(_0x5c5b('0x4'));var interaction=require(_0x5c5b('0x5'));var config=require('../../config/environment');var controller=require(_0x5c5b('0x6'));router[_0x5c5b('0x7')]('/',auth[_0x5c5b('0x8')](),controller[_0x5c5b('0x9')]);router[_0x5c5b('0x7')](_0x5c5b('0xa'),auth['isAuthenticated'](),controller[_0x5c5b('0xb')]);router[_0x5c5b('0x7')]('/:id/hoppers',auth[_0x5c5b('0x8')](),controller['getHoppers']);router[_0x5c5b('0x7')](_0x5c5b('0xc'),auth[_0x5c5b('0x8')](),controller[_0x5c5b('0xd')]);router['get'](_0x5c5b('0xe'),auth[_0x5c5b('0x8')](),controller[_0x5c5b('0xf')]);router['get']('/:id/hopper_black',auth['isAuthenticated'](),controller[_0x5c5b('0x10')]);router[_0x5c5b('0x7')](_0x5c5b('0x11'),auth[_0x5c5b('0x8')](),controller[_0x5c5b('0x12')]);router['get'](_0x5c5b('0x13'),auth[_0x5c5b('0x8')](),controller[_0x5c5b('0x14')]);router[_0x5c5b('0x15')]('/',auth[_0x5c5b('0x8')](),controller[_0x5c5b('0x16')]);router[_0x5c5b('0x15')](_0x5c5b('0x17'),auth[_0x5c5b('0x8')](),controller['clone']);router[_0x5c5b('0x15')](_0x5c5b('0x11'),auth[_0x5c5b('0x8')](),controller[_0x5c5b('0x18')]);router[_0x5c5b('0x15')](_0x5c5b('0x13'),auth['isAuthenticated'](),controller[_0x5c5b('0x19')]);router[_0x5c5b('0x1a')](_0x5c5b('0xa'),auth['isAuthenticated'](),controller[_0x5c5b('0x1b')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0x5c5b('0x1c')](_0x5c5b('0x11'),auth[_0x5c5b('0x8')](),controller[_0x5c5b('0x1d')]);router[_0x5c5b('0x1c')]('/:id/blacklists',auth[_0x5c5b('0x8')](),controller[_0x5c5b('0x1e')]);module[_0x5c5b('0x1f')]=router;
\ No newline at end of file
index c408802..de45b3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc400=['VIRTUAL','sequelize','exports','STRING'];(function(_0xd102be,_0x5e17b4){var _0x2f62dc=function(_0x288227){while(--_0x288227){_0xd102be['push'](_0xd102be['shift']());}};_0x2f62dc(++_0x5e17b4);}(_0xc400,0x6d));var _0x0c40=function(_0x31badd,_0x48e05c){_0x31badd=_0x31badd-0x0;var _0x42dc63=_0xc400[_0x31badd];return _0x42dc63;};'use strict';var Sequelize=require(_0x0c40('0x0'));module[_0x0c40('0x1')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize[_0x0c40('0x2')]},'name':{'type':Sequelize[_0x0c40('0x3')],'get':function(){return this['getDataValue']('key');}}};
\ No newline at end of file
+var _0x7eb9=['sequelize','TEXT','STRING','getDataValue','key'];(function(_0x5a0373,_0x2dc45c){var _0x302833=function(_0x8e5e7e){while(--_0x8e5e7e){_0x5a0373['push'](_0x5a0373['shift']());}};_0x302833(++_0x2dc45c);}(_0x7eb9,0xff));var _0x97eb=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7eb9[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x97eb('0x0'));module['exports']={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x97eb('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x97eb('0x2')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x97eb('0x3')](_0x97eb('0x4'));}}};
\ No newline at end of file
index 5fa1900..31eedc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73e7=['fs-extra','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','offset','undefined','limit','count','status','set','Content-Range','json','apply','reject','update','then','CannedAnswers','UserProfileResource','error','stack','name','send','index','CannedAnswer','fieldName','type','model','map','query','keys','attributes','intersection','fields','hasOwnProperty','order','sort','filters','where','merge','filter','includeAll','include','findAll','show','params','length','options','catch','body','find','destroy','key','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','create','get','role','UserProfileSection','userProfileId','autoAssociation','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv'];(function(_0x376ebb,_0x1a69bb){var _0x93a8f6=function(_0x59bdab){while(--_0x59bdab){_0x376ebb['push'](_0x376ebb['shift']());}};_0x93a8f6(++_0x1a69bb);}(_0x73e7,0x9f));var _0x773e=function(_0x4b0b4e,_0x234d10){_0x4b0b4e=_0x4b0b4e-0x0;var _0xe14e3c=_0x73e7[_0x4b0b4e];return _0xe14e3c;};'use strict';var emlformat=require(_0x773e('0x0'));var rimraf=require(_0x773e('0x1'));var zipdir=require(_0x773e('0x2'));var jsonpatch=require(_0x773e('0x3'));var rp=require(_0x773e('0x4'));var moment=require(_0x773e('0x5'));var BPromise=require(_0x773e('0x6'));var Mustache=require(_0x773e('0x7'));var util=require(_0x773e('0x8'));var path=require('path');var sox=require(_0x773e('0x9'));var csv=require(_0x773e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x773e('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x773e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x773e('0xa'));var querystring=require(_0x773e('0xd'));var Papa=require(_0x773e('0xe'));var Redis=require(_0x773e('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x773e('0x10'));var as=require(_0x773e('0x11'));var hardwareService=require(_0x773e('0x12'));var logger=require(_0x773e('0x13'))(_0x773e('0x14'));var utils=require(_0x773e('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x773e('0x16'))['db'];function respondWithStatusCode(_0x1bea66,_0x34da60){_0x34da60=_0x34da60||0xcc;return function(_0x32321d){if(_0x32321d){return _0x1bea66[_0x773e('0x17')](_0x34da60);}return _0x1bea66['status'](_0x34da60)['end']();};}function respondWithResult(_0x27833e,_0x4d2582){_0x4d2582=_0x4d2582||0xc8;return function(_0x4813dd){if(_0x4813dd){return _0x27833e['status'](_0x4d2582)['json'](_0x4813dd);}};}function respondWithFilteredResult(_0xe57024,_0x2cceee){return function(_0x44f782){if(_0x44f782){var _0x4c2d08=typeof _0x2cceee[_0x773e('0x18')]===_0x773e('0x19')&&typeof _0x2cceee[_0x773e('0x1a')]===_0x773e('0x19');var _0x52af97=_0x44f782[_0x773e('0x1b')];var _0x53b440=_0x4c2d08?0x0:_0x2cceee[_0x773e('0x18')];var _0x233328=_0x4c2d08?_0x44f782[_0x773e('0x1b')]:_0x2cceee[_0x773e('0x18')]+_0x2cceee[_0x773e('0x1a')];var _0x4bf73d;if(_0x233328>=_0x52af97){_0x233328=_0x52af97;_0x4bf73d=0xc8;}else{_0x4bf73d=0xce;}_0xe57024[_0x773e('0x1c')](_0x4bf73d);return _0xe57024[_0x773e('0x1d')](_0x773e('0x1e'),_0x53b440+'-'+_0x233328+'/'+_0x52af97)[_0x773e('0x1f')](_0x44f782);}return null;};}function patchUpdates(_0x1148b1){return function(_0x378254){try{jsonpatch[_0x773e('0x20')](_0x378254,_0x1148b1,!![]);}catch(_0x25543b){return BPromise[_0x773e('0x21')](_0x25543b);}return _0x378254['save']();};}function saveUpdates(_0x3211d3,_0x54dba2){return function(_0x4a6fcf){if(_0x4a6fcf){return _0x4a6fcf[_0x773e('0x22')](_0x3211d3)[_0x773e('0x23')](function(_0x45570d){return _0x45570d;});}return null;};}function removeEntity(_0x3a5484,_0x5ec1b1){return function(_0x183544){if(_0x183544){return _0x183544['destroy']()[_0x773e('0x23')](function(){var _0x29dfd0=_0x183544['get']({'plain':!![]});var _0x3eb4c9=_0x773e('0x24');return db[_0x773e('0x25')]['destroy']({'where':{'type':_0x3eb4c9,'resourceId':_0x29dfd0['id']}})['then'](function(){return _0x183544;});})['then'](function(){_0x3a5484[_0x773e('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe710c5,_0x795b17){return function(_0x48334b){if(!_0x48334b){_0xe710c5[_0x773e('0x17')](0x194);}return _0x48334b;};}function handleError(_0x185e85,_0x22fe53){_0x22fe53=_0x22fe53||0x1f4;return function(_0x520efe){logger[_0x773e('0x26')](_0x520efe[_0x773e('0x27')]);if(_0x520efe[_0x773e('0x28')]){delete _0x520efe[_0x773e('0x28')];}_0x185e85['status'](_0x22fe53)[_0x773e('0x29')](_0x520efe);};}exports[_0x773e('0x2a')]=function(_0x43accc,_0x3e09c4){var _0x4f328a={},_0x1cfee8={},_0x1644a5={'count':0x0,'rows':[]};var _0x3a6d4d=_['map'](db[_0x773e('0x2b')]['rawAttributes'],function(_0x1ffb49){return{'name':_0x1ffb49[_0x773e('0x2c')],'type':_0x1ffb49[_0x773e('0x2d')]['key']};});_0x1cfee8[_0x773e('0x2e')]=_[_0x773e('0x2f')](_0x3a6d4d,_0x773e('0x28'));_0x1cfee8[_0x773e('0x30')]=_[_0x773e('0x31')](_0x43accc[_0x773e('0x30')]);_0x1cfee8['filters']=_['intersection'](_0x1cfee8[_0x773e('0x2e')],_0x1cfee8[_0x773e('0x30')]);_0x4f328a[_0x773e('0x32')]=_[_0x773e('0x33')](_0x1cfee8[_0x773e('0x2e')],qs[_0x773e('0x34')](_0x43accc[_0x773e('0x30')][_0x773e('0x34')]));_0x4f328a[_0x773e('0x32')]=_0x4f328a[_0x773e('0x32')]['length']?_0x4f328a[_0x773e('0x32')]:_0x1cfee8[_0x773e('0x2e')];if(!_0x43accc[_0x773e('0x30')][_0x773e('0x35')]('nolimit')){_0x4f328a[_0x773e('0x1a')]=qs[_0x773e('0x1a')](_0x43accc[_0x773e('0x30')][_0x773e('0x1a')]);_0x4f328a[_0x773e('0x18')]=qs[_0x773e('0x18')](_0x43accc[_0x773e('0x30')]['offset']);}_0x4f328a[_0x773e('0x36')]=qs[_0x773e('0x37')](_0x43accc[_0x773e('0x30')][_0x773e('0x37')]);_0x4f328a['where']=qs[_0x773e('0x38')](_['pick'](_0x43accc[_0x773e('0x30')],_0x1cfee8[_0x773e('0x38')]),_0x3a6d4d);if(_0x43accc[_0x773e('0x30')]['filter']){_0x4f328a[_0x773e('0x39')]=_[_0x773e('0x3a')](_0x4f328a['where'],{'$or':[{'key':{'$like':'%'+_0x43accc[_0x773e('0x30')][_0x773e('0x3b')]+'%'}},{'value':{'$like':'%'+_0x43accc[_0x773e('0x30')][_0x773e('0x3b')]+'%'}}]});}_0x4f328a=_[_0x773e('0x3a')]({},_0x4f328a,_0x43accc['options']);var _0x13dec1={'where':_0x4f328a[_0x773e('0x39')]};return db[_0x773e('0x2b')][_0x773e('0x1b')](_0x13dec1)[_0x773e('0x23')](function(_0x477c7b){_0x1644a5[_0x773e('0x1b')]=_0x477c7b;if(_0x43accc['query'][_0x773e('0x3c')]){_0x4f328a[_0x773e('0x3d')]=[{'all':!![]}];}return db[_0x773e('0x2b')][_0x773e('0x3e')](_0x4f328a);})[_0x773e('0x23')](function(_0x300a41){_0x1644a5['rows']=_0x300a41;return _0x1644a5;})[_0x773e('0x23')](respondWithFilteredResult(_0x3e09c4,_0x4f328a))['catch'](handleError(_0x3e09c4,null));};exports[_0x773e('0x3f')]=function(_0xd0c6ba,_0x25b6bf){var _0x241a78={'raw':!![],'where':{'id':_0xd0c6ba[_0x773e('0x40')]['id']}},_0x2e44cc={};_0x2e44cc[_0x773e('0x2e')]=_['keys'](db[_0x773e('0x2b')]['rawAttributes']);_0x2e44cc[_0x773e('0x30')]=_[_0x773e('0x31')](_0xd0c6ba['query']);_0x2e44cc['filters']=_[_0x773e('0x33')](_0x2e44cc['model'],_0x2e44cc[_0x773e('0x30')]);_0x241a78['attributes']=_[_0x773e('0x33')](_0x2e44cc[_0x773e('0x2e')],qs['fields'](_0xd0c6ba[_0x773e('0x30')][_0x773e('0x34')]));_0x241a78[_0x773e('0x32')]=_0x241a78[_0x773e('0x32')][_0x773e('0x41')]?_0x241a78['attributes']:_0x2e44cc[_0x773e('0x2e')];if(_0xd0c6ba[_0x773e('0x30')][_0x773e('0x3c')]){_0x241a78[_0x773e('0x3d')]=[{'all':!![]}];}_0x241a78=_[_0x773e('0x3a')]({},_0x241a78,_0xd0c6ba[_0x773e('0x42')]);return db[_0x773e('0x2b')]['find'](_0x241a78)[_0x773e('0x23')](handleEntityNotFound(_0x25b6bf,null))[_0x773e('0x23')](respondWithResult(_0x25b6bf,null))[_0x773e('0x43')](handleError(_0x25b6bf,null));};exports[_0x773e('0x22')]=function(_0x19783a,_0x3cf0ee){if(_0x19783a[_0x773e('0x44')]['id']){delete _0x19783a[_0x773e('0x44')]['id'];}return db[_0x773e('0x2b')][_0x773e('0x45')]({'where':{'id':_0x19783a[_0x773e('0x40')]['id']}})['then'](handleEntityNotFound(_0x3cf0ee,null))[_0x773e('0x23')](saveUpdates(_0x19783a[_0x773e('0x44')],null))[_0x773e('0x23')](respondWithResult(_0x3cf0ee,null))[_0x773e('0x43')](handleError(_0x3cf0ee,null));};exports[_0x773e('0x46')]=function(_0x3eacd8,_0xd16e19){return db[_0x773e('0x2b')]['find']({'where':{'id':_0x3eacd8[_0x773e('0x40')]['id']}})[_0x773e('0x23')](handleEntityNotFound(_0xd16e19,null))[_0x773e('0x23')](removeEntity(_0xd16e19,null))[_0x773e('0x43')](handleError(_0xd16e19,null));};exports['create']=function(_0x39152c,_0x2718d5){var _0x3e3ca4={'key':_0x39152c['body'][_0x773e('0x47')]};if(_0x39152c[_0x773e('0x44')][_0x773e('0x48')]){_0x3e3ca4[_0x773e('0x48')]=_0x39152c[_0x773e('0x44')][_0x773e('0x48')];}else if(_0x39152c[_0x773e('0x44')][_0x773e('0x49')]){_0x3e3ca4['SmsAccountId']=_0x39152c['body']['SmsAccountId'];}else if(_0x39152c['body'][_0x773e('0x4a')]){_0x3e3ca4[_0x773e('0x4a')]=_0x39152c[_0x773e('0x44')]['OpenchannelAccountId'];}else if(_0x39152c[_0x773e('0x44')][_0x773e('0x4b')]){_0x3e3ca4[_0x773e('0x4b')]=_0x39152c[_0x773e('0x44')][_0x773e('0x4b')];}return db[_0x773e('0x2b')][_0x773e('0x45')]({'where':_0x3e3ca4})[_0x773e('0x23')](function(_0x14e7d2){if(_0x14e7d2){throw new db[(_0x773e('0x4c'))][(_0x773e('0x4d'))](_0x773e('0x4e'));}return db[_0x773e('0x2b')][_0x773e('0x4f')](_0x39152c[_0x773e('0x44')]);})[_0x773e('0x23')](function(_0x267421){var _0x213dcd=_0x39152c['user'][_0x773e('0x50')]({'plain':!![]});if(!_0x213dcd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x213dcd[_0x773e('0x51')]==='user'){var _0x1ec568=_0x267421[_0x773e('0x50')]({'plain':!![]});return db[_0x773e('0x52')][_0x773e('0x45')]({'where':{'name':_0x773e('0x24'),'userProfileId':_0x213dcd[_0x773e('0x53')]},'raw':!![]})[_0x773e('0x23')](function(_0x5315ed){if(_0x5315ed&&_0x5315ed[_0x773e('0x54')]===0x0){return db['UserProfileResource'][_0x773e('0x4f')]({'name':_0x1ec568[_0x773e('0x28')],'resourceId':_0x1ec568['id'],'type':_0x5315ed['name'],'sectionId':_0x5315ed['id']},{})[_0x773e('0x23')](function(){return _0x267421;});}else{return _0x267421;}})[_0x773e('0x43')](function(_0x3b2f86){logger[_0x773e('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3b2f86);throw _0x3b2f86;});}return _0x267421;})['then'](respondWithResult(_0x2718d5,0xc9))[_0x773e('0x43')](handleError(_0x2718d5,null));};
\ No newline at end of file
+var _0xe3a5=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','json','apply','save','update','then','get','CannedAnswers','UserProfileResource','end','error','name','send','index','CannedAnswer','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','catch','show','params','find','body','destroy','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','The\x20inserted\x20key\x20already\x20exists.','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger'];(function(_0x5d51e9,_0x8d4ad6){var _0x262f1c=function(_0x1ea530){while(--_0x1ea530){_0x5d51e9['push'](_0x5d51e9['shift']());}};_0x262f1c(++_0x8d4ad6);}(_0xe3a5,0x9a));var _0x5e3a=function(_0x49b667,_0x540309){_0x49b667=_0x49b667-0x0;var _0xcbbf84=_0xe3a5[_0x49b667];return _0xcbbf84;};'use strict';var emlformat=require(_0x5e3a('0x0'));var rimraf=require(_0x5e3a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5e3a('0x2'));var rp=require('request-promise');var moment=require(_0x5e3a('0x3'));var BPromise=require(_0x5e3a('0x4'));var Mustache=require(_0x5e3a('0x5'));var util=require(_0x5e3a('0x6'));var path=require(_0x5e3a('0x7'));var sox=require(_0x5e3a('0x8'));var csv=require(_0x5e3a('0x9'));var ejs=require(_0x5e3a('0xa'));var fs=require('fs');var fs_extra=require(_0x5e3a('0xb'));var _=require(_0x5e3a('0xc'));var squel=require('squel');var crypto=require(_0x5e3a('0xd'));var jsforce=require(_0x5e3a('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x5e3a('0xf'));var Papa=require(_0x5e3a('0x10'));var Redis=require(_0x5e3a('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x5e3a('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5e3a('0x13'))(_0x5e3a('0x14'));var utils=require(_0x5e3a('0x15'));var config=require(_0x5e3a('0x16'));var licenseUtil=require(_0x5e3a('0x17'));var db=require(_0x5e3a('0x18'))['db'];function respondWithStatusCode(_0x304f3a,_0x5899f3){_0x5899f3=_0x5899f3||0xcc;return function(_0x13209b){if(_0x13209b){return _0x304f3a[_0x5e3a('0x19')](_0x5899f3);}return _0x304f3a[_0x5e3a('0x1a')](_0x5899f3)['end']();};}function respondWithResult(_0x442855,_0x175ddc){_0x175ddc=_0x175ddc||0xc8;return function(_0x4bf2dc){if(_0x4bf2dc){return _0x442855[_0x5e3a('0x1a')](_0x175ddc)['json'](_0x4bf2dc);}};}function respondWithFilteredResult(_0x55abe1,_0x3017c6){return function(_0x4415a8){if(_0x4415a8){var _0x7f4fc4=typeof _0x3017c6[_0x5e3a('0x1b')]===_0x5e3a('0x1c')&&typeof _0x3017c6[_0x5e3a('0x1d')]===_0x5e3a('0x1c');var _0x505e04=_0x4415a8[_0x5e3a('0x1e')];var _0x1d59a2=_0x7f4fc4?0x0:_0x3017c6['offset'];var _0x13825e=_0x7f4fc4?_0x4415a8[_0x5e3a('0x1e')]:_0x3017c6[_0x5e3a('0x1b')]+_0x3017c6['limit'];var _0x2fda1d;if(_0x13825e>=_0x505e04){_0x13825e=_0x505e04;_0x2fda1d=0xc8;}else{_0x2fda1d=0xce;}_0x55abe1[_0x5e3a('0x1a')](_0x2fda1d);return _0x55abe1[_0x5e3a('0x1f')]('Content-Range',_0x1d59a2+'-'+_0x13825e+'/'+_0x505e04)[_0x5e3a('0x20')](_0x4415a8);}return null;};}function patchUpdates(_0x49d667){return function(_0xd1e770){try{jsonpatch[_0x5e3a('0x21')](_0xd1e770,_0x49d667,!![]);}catch(_0x2fded6){return BPromise['reject'](_0x2fded6);}return _0xd1e770[_0x5e3a('0x22')]();};}function saveUpdates(_0x43fb18,_0x1356a4){return function(_0x41d83d){if(_0x41d83d){return _0x41d83d[_0x5e3a('0x23')](_0x43fb18)[_0x5e3a('0x24')](function(_0x4ea4a8){return _0x4ea4a8;});}return null;};}function removeEntity(_0x21e34d,_0x2803f2){return function(_0x3e6d6b){if(_0x3e6d6b){return _0x3e6d6b['destroy']()[_0x5e3a('0x24')](function(){var _0x11dc4a=_0x3e6d6b[_0x5e3a('0x25')]({'plain':!![]});var _0x4f1fd8=_0x5e3a('0x26');return db[_0x5e3a('0x27')]['destroy']({'where':{'type':_0x4f1fd8,'resourceId':_0x11dc4a['id']}})[_0x5e3a('0x24')](function(){return _0x3e6d6b;});})['then'](function(){_0x21e34d[_0x5e3a('0x1a')](0xcc)[_0x5e3a('0x28')]();});}};}function handleEntityNotFound(_0x5750eb,_0x3fe222){return function(_0x3f1df4){if(!_0x3f1df4){_0x5750eb[_0x5e3a('0x19')](0x194);}return _0x3f1df4;};}function handleError(_0x5a4317,_0x450258){_0x450258=_0x450258||0x1f4;return function(_0x7dd20c){logger[_0x5e3a('0x29')](_0x7dd20c['stack']);if(_0x7dd20c['name']){delete _0x7dd20c[_0x5e3a('0x2a')];}_0x5a4317[_0x5e3a('0x1a')](_0x450258)[_0x5e3a('0x2b')](_0x7dd20c);};}exports[_0x5e3a('0x2c')]=function(_0x1ede8a,_0x3e5a0f){var _0x48824c={},_0x18af4c={},_0x4cca23={'count':0x0,'rows':[]};var _0x1a886f=_['map'](db[_0x5e3a('0x2d')][_0x5e3a('0x2e')],function(_0x21f955){return{'name':_0x21f955[_0x5e3a('0x2f')],'type':_0x21f955['type'][_0x5e3a('0x30')]};});_0x18af4c[_0x5e3a('0x31')]=_[_0x5e3a('0x32')](_0x1a886f,_0x5e3a('0x2a'));_0x18af4c[_0x5e3a('0x33')]=_[_0x5e3a('0x34')](_0x1ede8a[_0x5e3a('0x33')]);_0x18af4c[_0x5e3a('0x35')]=_[_0x5e3a('0x36')](_0x18af4c[_0x5e3a('0x31')],_0x18af4c[_0x5e3a('0x33')]);_0x48824c['attributes']=_[_0x5e3a('0x36')](_0x18af4c['model'],qs[_0x5e3a('0x37')](_0x1ede8a['query'][_0x5e3a('0x37')]));_0x48824c[_0x5e3a('0x38')]=_0x48824c[_0x5e3a('0x38')][_0x5e3a('0x39')]?_0x48824c[_0x5e3a('0x38')]:_0x18af4c['model'];if(!_0x1ede8a[_0x5e3a('0x33')][_0x5e3a('0x3a')](_0x5e3a('0x3b'))){_0x48824c[_0x5e3a('0x1d')]=qs[_0x5e3a('0x1d')](_0x1ede8a[_0x5e3a('0x33')][_0x5e3a('0x1d')]);_0x48824c[_0x5e3a('0x1b')]=qs[_0x5e3a('0x1b')](_0x1ede8a[_0x5e3a('0x33')][_0x5e3a('0x1b')]);}_0x48824c[_0x5e3a('0x3c')]=qs['sort'](_0x1ede8a[_0x5e3a('0x33')][_0x5e3a('0x3d')]);_0x48824c[_0x5e3a('0x3e')]=qs[_0x5e3a('0x35')](_[_0x5e3a('0x3f')](_0x1ede8a['query'],_0x18af4c['filters']),_0x1a886f);if(_0x1ede8a[_0x5e3a('0x33')][_0x5e3a('0x40')]){_0x48824c[_0x5e3a('0x3e')]=_[_0x5e3a('0x41')](_0x48824c['where'],{'$or':[{'key':{'$like':'%'+_0x1ede8a[_0x5e3a('0x33')]['filter']+'%'}},{'value':{'$like':'%'+_0x1ede8a[_0x5e3a('0x33')][_0x5e3a('0x40')]+'%'}}]});}_0x48824c=_['merge']({},_0x48824c,_0x1ede8a[_0x5e3a('0x42')]);var _0x526075={'where':_0x48824c['where']};return db[_0x5e3a('0x2d')][_0x5e3a('0x1e')](_0x526075)[_0x5e3a('0x24')](function(_0x11bfb6){_0x4cca23[_0x5e3a('0x1e')]=_0x11bfb6;if(_0x1ede8a[_0x5e3a('0x33')][_0x5e3a('0x43')]){_0x48824c[_0x5e3a('0x44')]=[{'all':!![]}];}return db[_0x5e3a('0x2d')]['findAll'](_0x48824c);})['then'](function(_0x31278e){_0x4cca23['rows']=_0x31278e;return _0x4cca23;})[_0x5e3a('0x24')](respondWithFilteredResult(_0x3e5a0f,_0x48824c))[_0x5e3a('0x45')](handleError(_0x3e5a0f,null));};exports[_0x5e3a('0x46')]=function(_0x5576e0,_0x3f3f47){var _0x408ab3={'raw':!![],'where':{'id':_0x5576e0[_0x5e3a('0x47')]['id']}},_0x29495e={};_0x29495e[_0x5e3a('0x31')]=_[_0x5e3a('0x34')](db[_0x5e3a('0x2d')][_0x5e3a('0x2e')]);_0x29495e[_0x5e3a('0x33')]=_[_0x5e3a('0x34')](_0x5576e0[_0x5e3a('0x33')]);_0x29495e[_0x5e3a('0x35')]=_['intersection'](_0x29495e[_0x5e3a('0x31')],_0x29495e[_0x5e3a('0x33')]);_0x408ab3[_0x5e3a('0x38')]=_['intersection'](_0x29495e[_0x5e3a('0x31')],qs[_0x5e3a('0x37')](_0x5576e0[_0x5e3a('0x33')][_0x5e3a('0x37')]));_0x408ab3[_0x5e3a('0x38')]=_0x408ab3[_0x5e3a('0x38')][_0x5e3a('0x39')]?_0x408ab3['attributes']:_0x29495e[_0x5e3a('0x31')];if(_0x5576e0['query'][_0x5e3a('0x43')]){_0x408ab3[_0x5e3a('0x44')]=[{'all':!![]}];}_0x408ab3=_[_0x5e3a('0x41')]({},_0x408ab3,_0x5576e0['options']);return db[_0x5e3a('0x2d')][_0x5e3a('0x48')](_0x408ab3)[_0x5e3a('0x24')](handleEntityNotFound(_0x3f3f47,null))['then'](respondWithResult(_0x3f3f47,null))[_0x5e3a('0x45')](handleError(_0x3f3f47,null));};exports[_0x5e3a('0x23')]=function(_0x5c42f6,_0x423a43){if(_0x5c42f6['body']['id']){delete _0x5c42f6['body']['id'];}return db['CannedAnswer'][_0x5e3a('0x48')]({'where':{'id':_0x5c42f6[_0x5e3a('0x47')]['id']}})[_0x5e3a('0x24')](handleEntityNotFound(_0x423a43,null))[_0x5e3a('0x24')](saveUpdates(_0x5c42f6[_0x5e3a('0x49')],null))[_0x5e3a('0x24')](respondWithResult(_0x423a43,null))[_0x5e3a('0x45')](handleError(_0x423a43,null));};exports[_0x5e3a('0x4a')]=function(_0x5110c4,_0x5d4518){return db[_0x5e3a('0x2d')][_0x5e3a('0x48')]({'where':{'id':_0x5110c4[_0x5e3a('0x47')]['id']}})[_0x5e3a('0x24')](handleEntityNotFound(_0x5d4518,null))['then'](removeEntity(_0x5d4518,null))[_0x5e3a('0x45')](handleError(_0x5d4518,null));};exports[_0x5e3a('0x4b')]=function(_0x1677c0,_0x5621f0){var _0x2e5c15={'key':_0x1677c0['body']['key']};if(_0x1677c0[_0x5e3a('0x49')][_0x5e3a('0x4c')]){_0x2e5c15['MailAccountId']=_0x1677c0[_0x5e3a('0x49')][_0x5e3a('0x4c')];}else if(_0x1677c0[_0x5e3a('0x49')][_0x5e3a('0x4d')]){_0x2e5c15['SmsAccountId']=_0x1677c0[_0x5e3a('0x49')][_0x5e3a('0x4d')];}else if(_0x1677c0[_0x5e3a('0x49')][_0x5e3a('0x4e')]){_0x2e5c15[_0x5e3a('0x4e')]=_0x1677c0[_0x5e3a('0x49')][_0x5e3a('0x4e')];}else if(_0x1677c0[_0x5e3a('0x49')]['ChatWebsiteId']){_0x2e5c15[_0x5e3a('0x4f')]=_0x1677c0['body'][_0x5e3a('0x4f')];}return db[_0x5e3a('0x2d')]['find']({'where':_0x2e5c15})['then'](function(_0x403866){if(_0x403866){throw new db['Sequelize']['ValidationError'](_0x5e3a('0x50'));}return db['CannedAnswer'][_0x5e3a('0x4b')](_0x1677c0['body']);})['then'](function(_0x37df37){var _0x574aab=_0x1677c0['user'][_0x5e3a('0x25')]({'plain':!![]});if(!_0x574aab)throw new Error(_0x5e3a('0x51'));if(_0x574aab[_0x5e3a('0x52')]===_0x5e3a('0x53')){var _0x3dfd41=_0x37df37[_0x5e3a('0x25')]({'plain':!![]});return db[_0x5e3a('0x54')][_0x5e3a('0x48')]({'where':{'name':'CannedAnswers','userProfileId':_0x574aab[_0x5e3a('0x55')]},'raw':!![]})[_0x5e3a('0x24')](function(_0x104c03){if(_0x104c03&&_0x104c03[_0x5e3a('0x56')]===0x0){return db[_0x5e3a('0x27')]['create']({'name':_0x3dfd41[_0x5e3a('0x2a')],'resourceId':_0x3dfd41['id'],'type':_0x104c03[_0x5e3a('0x2a')],'sectionId':_0x104c03['id']},{})[_0x5e3a('0x24')](function(){return _0x37df37;});}else{return _0x37df37;}})['catch'](function(_0x46262d){logger[_0x5e3a('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x46262d);throw _0x46262d;});}return _0x37df37;})[_0x5e3a('0x24')](respondWithResult(_0x5621f0,0xc9))[_0x5e3a('0x45')](handleError(_0x5621f0,null));};
\ No newline at end of file
index 1b334a2..22a978d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8d8=['exports','define','tools_canned_answers','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./cannedAnswer.attributes'];(function(_0x450c96,_0x4561a6){var _0x16bbf6=function(_0x1c5986){while(--_0x1c5986){_0x450c96['push'](_0x450c96['shift']());}};_0x16bbf6(++_0x4561a6);}(_0xa8d8,0x79));var _0x8a8d=function(_0x3b8487,_0x1e57d1){_0x3b8487=_0x3b8487-0x0;var _0x3ed9d5=_0xa8d8[_0x3b8487];return _0x3ed9d5;};'use strict';var _=require(_0x8a8d('0x0'));var util=require(_0x8a8d('0x1'));var logger=require(_0x8a8d('0x2'))(_0x8a8d('0x3'));var moment=require(_0x8a8d('0x4'));var BPromise=require(_0x8a8d('0x5'));var rp=require(_0x8a8d('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8a8d('0x7'));var config=require('../../config/environment');var attributes=require(_0x8a8d('0x8'));module[_0x8a8d('0x9')]=function(_0x2fa3a2,_0x5dad5c){return _0x2fa3a2[_0x8a8d('0xa')]('CannedAnswer',attributes,{'tableName':_0x8a8d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x8a8d('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x4b2c=['api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','CannedAnswer','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x30ce9b,_0x2225c6){var _0x2dbab0=function(_0x3e982e){while(--_0x3e982e){_0x30ce9b['push'](_0x30ce9b['shift']());}};_0x2dbab0(++_0x2225c6);}(_0x4b2c,0x1b0));var _0xc4b2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4b2c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc4b2('0x0'));var util=require(_0xc4b2('0x1'));var logger=require(_0xc4b2('0x2'))(_0xc4b2('0x3'));var moment=require(_0xc4b2('0x4'));var BPromise=require(_0xc4b2('0x5'));var rp=require(_0xc4b2('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc4b2('0x7'));var config=require(_0xc4b2('0x8'));var attributes=require('./cannedAnswer.attributes');module[_0xc4b2('0x9')]=function(_0x2f1535,_0x27c1b2){return _0x2f1535[_0xc4b2('0xa')](_0xc4b2('0xb'),attributes,{'tableName':_0xc4b2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc4b2('0xd'),'collate':_0xc4b2('0xe')});};
\ No newline at end of file
index 5160d24..fdf9865 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(_0x444c55,_0x133a75){var _0x894b19=function(_0x1c3d76){while(--_0x1c3d76){_0x444c55['push'](_0x444c55['shift']());}};_0x894b19(++_0x133a75);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'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(_0x467e2b,_0x167973){var _0x41993b=function(_0x51260d){while(--_0x51260d){_0x467e2b['push'](_0x467e2b['shift']());}};_0x41993b(++_0x167973);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'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 23b1716..6c2d83c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd46=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x2044ed,_0x34aba5){var _0x496c63=function(_0x406266){while(--_0x406266){_0x2044ed['push'](_0x2044ed['shift']());}};_0x496c63(++_0x34aba5);}(_0xcd46,0x16f));var _0x6cd4=function(_0x32d6f5,_0x4e2dcc){_0x32d6f5=_0x32d6f5-0x0;var _0x4c8466=_0xcd46[_0x32d6f5];return _0x4c8466;};'use strict';var multer=require(_0x6cd4('0x0'));var util=require(_0x6cd4('0x1'));var path=require(_0x6cd4('0x2'));var timeout=require(_0x6cd4('0x3'));var express=require(_0x6cd4('0x4'));var router=express[_0x6cd4('0x5')]();var fs_extra=require(_0x6cd4('0x6'));var auth=require(_0x6cd4('0x7'));var interaction=require(_0x6cd4('0x8'));var config=require(_0x6cd4('0x9'));var controller=require('./cannedAnswer.controller');router[_0x6cd4('0xa')]('/',auth['isAuthenticated'](),controller[_0x6cd4('0xb')]);router[_0x6cd4('0xa')](_0x6cd4('0xc'),auth[_0x6cd4('0xd')](),controller[_0x6cd4('0xe')]);router[_0x6cd4('0xf')]('/',auth['isAuthenticated'](),controller[_0x6cd4('0x10')]);router[_0x6cd4('0x11')](_0x6cd4('0xc'),auth[_0x6cd4('0xd')](),controller[_0x6cd4('0x12')]);router[_0x6cd4('0x13')]('/:id',auth[_0x6cd4('0xd')](),controller[_0x6cd4('0x14')]);module[_0x6cd4('0x15')]=router;
\ No newline at end of file
+var _0x5926=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./cannedAnswer.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','multer','util','path'];(function(_0x4ea755,_0x3512e4){var _0x3c37bb=function(_0x54ca3a){while(--_0x54ca3a){_0x4ea755['push'](_0x4ea755['shift']());}};_0x3c37bb(++_0x3512e4);}(_0x5926,0x101));var _0x6592=function(_0x19288f,_0x30b58f){_0x19288f=_0x19288f-0x0;var _0x1c7046=_0x5926[_0x19288f];return _0x1c7046;};'use strict';var multer=require(_0x6592('0x0'));var util=require(_0x6592('0x1'));var path=require(_0x6592('0x2'));var timeout=require(_0x6592('0x3'));var express=require(_0x6592('0x4'));var router=express[_0x6592('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x6592('0x6'));var interaction=require(_0x6592('0x7'));var config=require('../../config/environment');var controller=require(_0x6592('0x8'));router[_0x6592('0x9')]('/',auth[_0x6592('0xa')](),controller[_0x6592('0xb')]);router[_0x6592('0x9')](_0x6592('0xc'),auth['isAuthenticated'](),controller[_0x6592('0xd')]);router[_0x6592('0xe')]('/',auth[_0x6592('0xa')](),controller[_0x6592('0xf')]);router[_0x6592('0x10')](_0x6592('0xc'),auth['isAuthenticated'](),controller[_0x6592('0x11')]);router['delete']('/:id',auth[_0x6592('0xa')](),controller[_0x6592('0x12')]);module[_0x6592('0x13')]=router;
\ No newline at end of file
index 4c3aeb3..45b89dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97da=['INTEGER','sequelize','DATE','1970-01-01\x2000:00:01','STRING'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x97da,0x164));var _0xa97d=function(_0x28189a,_0x23721b){_0x28189a=_0x28189a-0x0;var _0x5148ee=_0x97da[_0x28189a];return _0x5148ee;};'use strict';var Sequelize=require(_0xa97d('0x0'));module['exports']={'calldate':{'type':Sequelize[_0xa97d('0x1')],'allowNull':![],'defaultValue':_0xa97d('0x2')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0xa97d('0x3')]},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize[_0xa97d('0x3')]},'channel':{'type':Sequelize[_0xa97d('0x3')]},'dstchannel':{'type':Sequelize[_0xa97d('0x3')]},'lastapp':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize['STRING']},'duration':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xa97d('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xa97d('0x3')]},'amaflags':{'type':Sequelize[_0xa97d('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xa97d('0x3')]},'userfield':{'type':Sequelize[_0xa97d('0x3')]},'uniqueid':{'type':Sequelize[_0xa97d('0x3')]},'linkedid':{'type':Sequelize[_0xa97d('0x3')]},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize[_0xa97d('0x3')]},'type':{'type':Sequelize[_0xa97d('0x3')]},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6427=['exports','DATE','1970-01-01\x2000:00:01','STRING','INTEGER'];(function(_0x7f3f23,_0x1f794b){var _0xfef172=function(_0x3964f3){while(--_0x3964f3){_0x7f3f23['push'](_0x7f3f23['shift']());}};_0xfef172(++_0x1f794b);}(_0x6427,0xbe));var _0x7642=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0x6427[_0x4baae2];return _0x1a2285;};'use strict';var Sequelize=require('sequelize');module[_0x7642('0x0')]={'calldate':{'type':Sequelize[_0x7642('0x1')],'allowNull':![],'defaultValue':_0x7642('0x2')},'clid':{'type':Sequelize[_0x7642('0x3')]},'src':{'type':Sequelize[_0x7642('0x3')]},'dst':{'type':Sequelize[_0x7642('0x3')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x7642('0x3')]},'dstchannel':{'type':Sequelize[_0x7642('0x3')]},'lastapp':{'type':Sequelize[_0x7642('0x3')]},'lastdata':{'type':Sequelize[_0x7642('0x3')]},'duration':{'type':Sequelize[_0x7642('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x7642('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x7642('0x3')]},'amaflags':{'type':Sequelize[_0x7642('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x7642('0x3')]},'userfield':{'type':Sequelize[_0x7642('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0x7642('0x3')]},'peeraccount':{'type':Sequelize[_0x7642('0x3')]},'type':{'type':Sequelize[_0x7642('0x3')]},'tag':{'type':Sequelize[_0x7642('0x3')]}};
\ No newline at end of file
index 4aee97e..38c7cc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98a8=['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','../../mysqldb','end','status','json','undefined','count','offset','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','Cdr','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','limit','sort','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe'];(function(_0x1c35fb,_0x512960){var _0x4612aa=function(_0xbf406c){while(--_0xbf406c){_0x1c35fb['push'](_0x1c35fb['shift']());}};_0x4612aa(++_0x512960);}(_0x98a8,0x12c));var _0x898a=function(_0x137560,_0x54c730){_0x137560=_0x137560-0x0;var _0x5b59b6=_0x98a8[_0x137560];return _0x5b59b6;};'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'];function respondWithStatusCode(_0x2c76b7,_0x364a23){_0x364a23=_0x364a23||0xcc;return function(_0x5f5e06){if(_0x5f5e06){return _0x2c76b7['sendStatus'](_0x364a23);}return _0x2c76b7['status'](_0x364a23)[_0x898a('0x19')]();};}function respondWithResult(_0x1f5be4,_0xb24335){_0xb24335=_0xb24335||0xc8;return function(_0x116fbe){if(_0x116fbe){return _0x1f5be4[_0x898a('0x1a')](_0xb24335)[_0x898a('0x1b')](_0x116fbe);}};}function respondWithFilteredResult(_0x506023,_0x47033c){return function(_0x53a4b8){if(_0x53a4b8){var _0x3fec7a=typeof _0x47033c['offset']===_0x898a('0x1c')&&typeof _0x47033c['limit']===_0x898a('0x1c');var _0x56f8f9=_0x53a4b8[_0x898a('0x1d')];var _0x3197f7=_0x3fec7a?0x0:_0x47033c[_0x898a('0x1e')];var _0x4ddd4d=_0x3fec7a?_0x53a4b8[_0x898a('0x1d')]:_0x47033c['offset']+_0x47033c['limit'];var _0x3f8af4;if(_0x4ddd4d>=_0x56f8f9){_0x4ddd4d=_0x56f8f9;_0x3f8af4=0xc8;}else{_0x3f8af4=0xce;}_0x506023[_0x898a('0x1a')](_0x3f8af4);return _0x506023['set']('Content-Range',_0x3197f7+'-'+_0x4ddd4d+'/'+_0x56f8f9)[_0x898a('0x1b')](_0x53a4b8);}return null;};}function patchUpdates(_0x26449a){return function(_0x38a8f0){try{jsonpatch[_0x898a('0x1f')](_0x38a8f0,_0x26449a,!![]);}catch(_0x2da52d){return BPromise[_0x898a('0x20')](_0x2da52d);}return _0x38a8f0[_0x898a('0x21')]();};}function saveUpdates(_0x483212,_0x247cfc){return function(_0x50718e){if(_0x50718e){return _0x50718e[_0x898a('0x22')](_0x483212)[_0x898a('0x23')](function(_0x30495a){return _0x30495a;});}return null;};}function removeEntity(_0x310bfa,_0x4e254d){return function(_0x274cdf){if(_0x274cdf){return _0x274cdf[_0x898a('0x24')]()[_0x898a('0x23')](function(){_0x310bfa[_0x898a('0x1a')](0xcc)[_0x898a('0x19')]();});}};}function handleEntityNotFound(_0x1426e3,_0x5b7719){return function(_0x20bde0){if(!_0x20bde0){_0x1426e3['sendStatus'](0x194);}return _0x20bde0;};}function handleError(_0x513c6b,_0x53ddb2){_0x53ddb2=_0x53ddb2||0x1f4;return function(_0x3678be){logger[_0x898a('0x25')](_0x3678be[_0x898a('0x26')]);if(_0x3678be[_0x898a('0x27')]){delete _0x3678be[_0x898a('0x27')];}_0x513c6b[_0x898a('0x1a')](_0x53ddb2)[_0x898a('0x28')](_0x3678be);};}exports[_0x898a('0x29')]=function(_0xd31922,_0x58149d){var _0x4b3e68={},_0x47f1ed={},_0xe9c33d={'count':0x0,'rows':[]};var _0x62fe93=_[_0x898a('0x2a')](db[_0x898a('0x2b')][_0x898a('0x2c')],function(_0x560000){return{'name':_0x560000[_0x898a('0x2d')],'type':_0x560000[_0x898a('0x2e')][_0x898a('0x2f')]};});_0x47f1ed[_0x898a('0x30')]=_[_0x898a('0x2a')](_0x62fe93,_0x898a('0x27'));_0x47f1ed['query']=_[_0x898a('0x31')](_0xd31922[_0x898a('0x32')]);_0x47f1ed[_0x898a('0x33')]=_[_0x898a('0x34')](_0x47f1ed[_0x898a('0x30')],_0x47f1ed['query']);_0x4b3e68['attributes']=_[_0x898a('0x34')](_0x47f1ed[_0x898a('0x30')],qs[_0x898a('0x35')](_0xd31922['query'][_0x898a('0x35')]));_0x4b3e68[_0x898a('0x36')]=_0x4b3e68[_0x898a('0x36')][_0x898a('0x37')]?_0x4b3e68[_0x898a('0x36')]:_0x47f1ed[_0x898a('0x30')];if(!_0xd31922[_0x898a('0x32')][_0x898a('0x38')]('nolimit')){_0x4b3e68[_0x898a('0x39')]=qs['limit'](_0xd31922['query'][_0x898a('0x39')]);_0x4b3e68['offset']=qs[_0x898a('0x1e')](_0xd31922['query'][_0x898a('0x1e')]);}_0x4b3e68['order']=qs[_0x898a('0x3a')](_0xd31922[_0x898a('0x32')][_0x898a('0x3a')]);_0x4b3e68['where']=qs['filters'](_['pick'](_0xd31922[_0x898a('0x32')],_0x47f1ed[_0x898a('0x33')]),_0x62fe93);if(_0xd31922['query'][_0x898a('0x3b')]){_0x4b3e68[_0x898a('0x3c')]=_[_0x898a('0x3d')](_0x4b3e68[_0x898a('0x3c')],{'$or':_['map'](_0x62fe93,function(_0x4b07bc){if(_0x4b07bc[_0x898a('0x2e')]!==_0x898a('0x3e')){var _0x4d486b={};_0x4d486b[_0x4b07bc['name']]={'$like':'%'+_0xd31922[_0x898a('0x32')][_0x898a('0x3b')]+'%'};return _0x4d486b;}})});}_0x4b3e68=_[_0x898a('0x3d')]({},_0x4b3e68,_0xd31922[_0x898a('0x3f')]);var _0x51681f={'where':_0x4b3e68[_0x898a('0x3c')]};return db[_0x898a('0x2b')]['count'](_0x51681f)['then'](function(_0x48cc85){_0xe9c33d[_0x898a('0x1d')]=_0x48cc85;if(_0xd31922[_0x898a('0x32')][_0x898a('0x40')]){_0x4b3e68[_0x898a('0x41')]=[{'all':!![]}];}return db[_0x898a('0x2b')][_0x898a('0x42')](_0x4b3e68);})[_0x898a('0x23')](function(_0x1432ec){_0xe9c33d[_0x898a('0x43')]=_0x1432ec;return _0xe9c33d;})[_0x898a('0x23')](respondWithFilteredResult(_0x58149d,_0x4b3e68))[_0x898a('0x44')](handleError(_0x58149d,null));};exports[_0x898a('0x45')]=function(_0x32db83,_0x40f037){var _0x21f307={'raw':!![],'where':{'id':_0x32db83[_0x898a('0x46')]['id']}},_0x4c8628={};_0x4c8628[_0x898a('0x30')]=_[_0x898a('0x31')](db['Cdr'][_0x898a('0x2c')]);_0x4c8628[_0x898a('0x32')]=_[_0x898a('0x31')](_0x32db83[_0x898a('0x32')]);_0x4c8628[_0x898a('0x33')]=_[_0x898a('0x34')](_0x4c8628[_0x898a('0x30')],_0x4c8628[_0x898a('0x32')]);_0x21f307['attributes']=_[_0x898a('0x34')](_0x4c8628[_0x898a('0x30')],qs[_0x898a('0x35')](_0x32db83[_0x898a('0x32')]['fields']));_0x21f307[_0x898a('0x36')]=_0x21f307[_0x898a('0x36')]['length']?_0x21f307[_0x898a('0x36')]:_0x4c8628['model'];if(_0x32db83[_0x898a('0x32')]['includeAll']){_0x21f307['include']=[{'all':!![]}];}_0x21f307=_[_0x898a('0x3d')]({},_0x21f307,_0x32db83['options']);return db[_0x898a('0x2b')][_0x898a('0x47')](_0x21f307)['then'](handleEntityNotFound(_0x40f037,null))[_0x898a('0x23')](respondWithResult(_0x40f037,null))[_0x898a('0x44')](handleError(_0x40f037,null));};exports['create']=function(_0x2cf8a6,_0x199437){return db[_0x898a('0x2b')][_0x898a('0x48')](_0x2cf8a6['body'],{})[_0x898a('0x23')](respondWithResult(_0x199437,0xc9))[_0x898a('0x44')](handleError(_0x199437,null));};exports['update']=function(_0x25adcc,_0x1d8c16){if(_0x25adcc['body']['id']){delete _0x25adcc[_0x898a('0x49')]['id'];}return db['Cdr'][_0x898a('0x47')]({'where':{'id':_0x25adcc[_0x898a('0x46')]['id']}})[_0x898a('0x23')](handleEntityNotFound(_0x1d8c16,null))['then'](saveUpdates(_0x25adcc[_0x898a('0x49')],null))[_0x898a('0x23')](respondWithResult(_0x1d8c16,null))[_0x898a('0x44')](handleError(_0x1d8c16,null));};exports[_0x898a('0x24')]=function(_0x5a8a2c,_0x2a21ad){return db['Cdr'][_0x898a('0x47')]({'where':{'id':_0x5a8a2c[_0x898a('0x46')]['id']}})[_0x898a('0x23')](handleEntityNotFound(_0x2a21ad,null))['then'](removeEntity(_0x2a21ad,null))[_0x898a('0x44')](handleError(_0x2a21ad,null));};exports[_0x898a('0x4a')]=function(_0x195ac2,_0x5d325a){return db['Cdr'][_0x898a('0x4a')]()[_0x898a('0x23')](respondWithResult(_0x5d325a,null))[_0x898a('0x44')](handleError(_0x5d325a,null));};
\ No newline at end of file
+var _0x5d17=['to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','name','send','index','Cdr','rawAttributes','fieldName','type','model','map','query','intersection','attributes','fields','length','nolimit','sort','where','filters','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','create','update','body','find','describe','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox'];(function(_0x5cfc86,_0x2fa759){var _0x3003c1=function(_0x84976){while(--_0x84976){_0x5cfc86['push'](_0x5cfc86['shift']());}};_0x3003c1(++_0x2fa759);}(_0x5d17,0x114));var _0x75d1=function(_0x4ba3c4,_0x24842d){_0x4ba3c4=_0x4ba3c4-0x0;var _0x2b6605=_0x5d17[_0x4ba3c4];return _0x2b6605;};'use strict';var emlformat=require(_0x75d1('0x0'));var rimraf=require(_0x75d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x75d1('0x2'));var moment=require(_0x75d1('0x3'));var BPromise=require(_0x75d1('0x4'));var Mustache=require('mustache');var util=require(_0x75d1('0x5'));var path=require(_0x75d1('0x6'));var sox=require(_0x75d1('0x7'));var csv=require(_0x75d1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x75d1('0x9'));var _=require(_0x75d1('0xa'));var squel=require(_0x75d1('0xb'));var crypto=require(_0x75d1('0xc'));var jsforce=require(_0x75d1('0xd'));var deskjs=require(_0x75d1('0xe'));var toCsv=require(_0x75d1('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x75d1('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x75d1('0x10'));var hardwareService=require(_0x75d1('0x11'));var logger=require('../../config/logger')(_0x75d1('0x12'));var utils=require(_0x75d1('0x13'));var config=require(_0x75d1('0x14'));var licenseUtil=require(_0x75d1('0x15'));var db=require(_0x75d1('0x16'))['db'];function respondWithStatusCode(_0xd089cf,_0x49667a){_0x49667a=_0x49667a||0xcc;return function(_0x19e825){if(_0x19e825){return _0xd089cf[_0x75d1('0x17')](_0x49667a);}return _0xd089cf[_0x75d1('0x18')](_0x49667a)[_0x75d1('0x19')]();};}function respondWithResult(_0x49d723,_0x553697){_0x553697=_0x553697||0xc8;return function(_0x55b8a0){if(_0x55b8a0){return _0x49d723[_0x75d1('0x18')](_0x553697)[_0x75d1('0x1a')](_0x55b8a0);}};}function respondWithFilteredResult(_0x2fd022,_0x52e649){return function(_0x1f9620){if(_0x1f9620){var _0x3fff9b=typeof _0x52e649[_0x75d1('0x1b')]===_0x75d1('0x1c')&&typeof _0x52e649[_0x75d1('0x1d')]===_0x75d1('0x1c');var _0x2845bc=_0x1f9620[_0x75d1('0x1e')];var _0x1bc5de=_0x3fff9b?0x0:_0x52e649[_0x75d1('0x1b')];var _0x2c2a6d=_0x3fff9b?_0x1f9620['count']:_0x52e649['offset']+_0x52e649[_0x75d1('0x1d')];var _0x42b7ac;if(_0x2c2a6d>=_0x2845bc){_0x2c2a6d=_0x2845bc;_0x42b7ac=0xc8;}else{_0x42b7ac=0xce;}_0x2fd022['status'](_0x42b7ac);return _0x2fd022[_0x75d1('0x1f')](_0x75d1('0x20'),_0x1bc5de+'-'+_0x2c2a6d+'/'+_0x2845bc)[_0x75d1('0x1a')](_0x1f9620);}return null;};}function patchUpdates(_0xf6cc70){return function(_0xa42dbe){try{jsonpatch[_0x75d1('0x21')](_0xa42dbe,_0xf6cc70,!![]);}catch(_0x51d3b0){return BPromise[_0x75d1('0x22')](_0x51d3b0);}return _0xa42dbe[_0x75d1('0x23')]();};}function saveUpdates(_0x501cc7,_0x1cb58c){return function(_0x641ea4){if(_0x641ea4){return _0x641ea4['update'](_0x501cc7)[_0x75d1('0x24')](function(_0x5e70ec){return _0x5e70ec;});}return null;};}function removeEntity(_0x3a85c0,_0xc256af){return function(_0x345cf5){if(_0x345cf5){return _0x345cf5['destroy']()['then'](function(){_0x3a85c0[_0x75d1('0x18')](0xcc)[_0x75d1('0x19')]();});}};}function handleEntityNotFound(_0x315ce5,_0x18184b){return function(_0x51d043){if(!_0x51d043){_0x315ce5[_0x75d1('0x17')](0x194);}return _0x51d043;};}function handleError(_0x2b5848,_0x367238){_0x367238=_0x367238||0x1f4;return function(_0x51138e){logger['error'](_0x51138e['stack']);if(_0x51138e[_0x75d1('0x25')]){delete _0x51138e[_0x75d1('0x25')];}_0x2b5848[_0x75d1('0x18')](_0x367238)[_0x75d1('0x26')](_0x51138e);};}exports[_0x75d1('0x27')]=function(_0x519ceb,_0x4d292e){var _0x410e16={},_0x197f52={},_0x4967b5={'count':0x0,'rows':[]};var _0x2408b6=_['map'](db[_0x75d1('0x28')][_0x75d1('0x29')],function(_0x91e7c9){return{'name':_0x91e7c9[_0x75d1('0x2a')],'type':_0x91e7c9[_0x75d1('0x2b')]['key']};});_0x197f52[_0x75d1('0x2c')]=_[_0x75d1('0x2d')](_0x2408b6,_0x75d1('0x25'));_0x197f52[_0x75d1('0x2e')]=_['keys'](_0x519ceb[_0x75d1('0x2e')]);_0x197f52['filters']=_[_0x75d1('0x2f')](_0x197f52[_0x75d1('0x2c')],_0x197f52['query']);_0x410e16[_0x75d1('0x30')]=_[_0x75d1('0x2f')](_0x197f52[_0x75d1('0x2c')],qs[_0x75d1('0x31')](_0x519ceb[_0x75d1('0x2e')]['fields']));_0x410e16[_0x75d1('0x30')]=_0x410e16[_0x75d1('0x30')][_0x75d1('0x32')]?_0x410e16[_0x75d1('0x30')]:_0x197f52['model'];if(!_0x519ceb['query']['hasOwnProperty'](_0x75d1('0x33'))){_0x410e16[_0x75d1('0x1d')]=qs[_0x75d1('0x1d')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x1d')]);_0x410e16[_0x75d1('0x1b')]=qs[_0x75d1('0x1b')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x1b')]);}_0x410e16['order']=qs[_0x75d1('0x34')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x34')]);_0x410e16[_0x75d1('0x35')]=qs[_0x75d1('0x36')](_['pick'](_0x519ceb['query'],_0x197f52['filters']),_0x2408b6);if(_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x37')]){_0x410e16[_0x75d1('0x35')]=_[_0x75d1('0x38')](_0x410e16[_0x75d1('0x35')],{'$or':_[_0x75d1('0x2d')](_0x2408b6,function(_0x48f9f3){if(_0x48f9f3['type']!=='VIRTUAL'){var _0x3f2569={};_0x3f2569[_0x48f9f3['name']]={'$like':'%'+_0x519ceb['query'][_0x75d1('0x37')]+'%'};return _0x3f2569;}})});}_0x410e16=_[_0x75d1('0x38')]({},_0x410e16,_0x519ceb[_0x75d1('0x39')]);var _0x46854c={'where':_0x410e16['where']};return db[_0x75d1('0x28')][_0x75d1('0x1e')](_0x46854c)[_0x75d1('0x24')](function(_0x3d4137){_0x4967b5[_0x75d1('0x1e')]=_0x3d4137;if(_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x3a')]){_0x410e16[_0x75d1('0x3b')]=[{'all':!![]}];}return db[_0x75d1('0x28')][_0x75d1('0x3c')](_0x410e16);})[_0x75d1('0x24')](function(_0x93922f){_0x4967b5[_0x75d1('0x3d')]=_0x93922f;return _0x4967b5;})[_0x75d1('0x24')](respondWithFilteredResult(_0x4d292e,_0x410e16))[_0x75d1('0x3e')](handleError(_0x4d292e,null));};exports[_0x75d1('0x3f')]=function(_0x25f689,_0x2ad3ef){var _0x42c18c={'raw':!![],'where':{'id':_0x25f689[_0x75d1('0x40')]['id']}},_0x2384aa={};_0x2384aa[_0x75d1('0x2c')]=_['keys'](db['Cdr'][_0x75d1('0x29')]);_0x2384aa[_0x75d1('0x2e')]=_[_0x75d1('0x41')](_0x25f689[_0x75d1('0x2e')]);_0x2384aa['filters']=_[_0x75d1('0x2f')](_0x2384aa[_0x75d1('0x2c')],_0x2384aa[_0x75d1('0x2e')]);_0x42c18c[_0x75d1('0x30')]=_['intersection'](_0x2384aa[_0x75d1('0x2c')],qs[_0x75d1('0x31')](_0x25f689[_0x75d1('0x2e')][_0x75d1('0x31')]));_0x42c18c['attributes']=_0x42c18c[_0x75d1('0x30')]['length']?_0x42c18c[_0x75d1('0x30')]:_0x2384aa[_0x75d1('0x2c')];if(_0x25f689[_0x75d1('0x2e')][_0x75d1('0x3a')]){_0x42c18c[_0x75d1('0x3b')]=[{'all':!![]}];}_0x42c18c=_[_0x75d1('0x38')]({},_0x42c18c,_0x25f689['options']);return db[_0x75d1('0x28')]['find'](_0x42c18c)['then'](handleEntityNotFound(_0x2ad3ef,null))[_0x75d1('0x24')](respondWithResult(_0x2ad3ef,null))[_0x75d1('0x3e')](handleError(_0x2ad3ef,null));};exports[_0x75d1('0x42')]=function(_0x12bd67,_0x16f744){return db[_0x75d1('0x28')][_0x75d1('0x42')](_0x12bd67['body'],{})['then'](respondWithResult(_0x16f744,0xc9))[_0x75d1('0x3e')](handleError(_0x16f744,null));};exports[_0x75d1('0x43')]=function(_0x50def3,_0x2d380d){if(_0x50def3[_0x75d1('0x44')]['id']){delete _0x50def3[_0x75d1('0x44')]['id'];}return db['Cdr'][_0x75d1('0x45')]({'where':{'id':_0x50def3[_0x75d1('0x40')]['id']}})[_0x75d1('0x24')](handleEntityNotFound(_0x2d380d,null))[_0x75d1('0x24')](saveUpdates(_0x50def3[_0x75d1('0x44')],null))[_0x75d1('0x24')](respondWithResult(_0x2d380d,null))[_0x75d1('0x3e')](handleError(_0x2d380d,null));};exports['destroy']=function(_0x1eaa66,_0x382195){return db[_0x75d1('0x28')][_0x75d1('0x45')]({'where':{'id':_0x1eaa66[_0x75d1('0x40')]['id']}})[_0x75d1('0x24')](handleEntityNotFound(_0x382195,null))[_0x75d1('0x24')](removeEntity(_0x382195,null))['catch'](handleError(_0x382195,null));};exports[_0x75d1('0x46')]=function(_0x3af9c5,_0x42d587){return db['Cdr'][_0x75d1('0x46')]()[_0x75d1('0x24')](respondWithResult(_0x42d587,null))[_0x75d1('0x3e')](handleError(_0x42d587,null));};
\ No newline at end of file
index a02b842..537af5f 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(_0x283528,_0x3454e9){var _0x89f2b8=function(_0x5bf57a){while(--_0x5bf57a){_0x283528['push'](_0x283528['shift']());}};_0x89f2b8(++_0x3454e9);}(_0x7a54,0x106));var _0x47a5=function(_0x6a2362,_0x48058d){_0x6a2362=_0x6a2362-0x0;var _0x230fbb=_0x7a54[_0x6a2362];return _0x230fbb;};'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 _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x48139c,_0x393763){var _0x5b6efc=function(_0x499cf5){while(--_0x499cf5){_0x48139c['push'](_0x48139c['shift']());}};_0x5b6efc(++_0x393763);}(_0x7a54,0x106));var _0x47a5=function(_0x2fbe1d,_0x1f2737){_0x2fbe1d=_0x2fbe1d-0x0;var _0x421dc5=_0x7a54[_0x2fbe1d];return _0x421dc5;};'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
index 9d13900..a0182f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6e1=['../../config/environment','jayson/promise','client','http','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x17cf25,_0x105482){var _0x5ac801=function(_0x8ce7d7){while(--_0x8ce7d7){_0x17cf25['push'](_0x17cf25['shift']());}};_0x5ac801(++_0x105482);}(_0xb6e1,0x196));var _0x1b6e=function(_0x304395,_0x5016d9){_0x304395=_0x304395-0x0;var _0x28a4ac=_0xb6e1[_0x304395];return _0x28a4ac;};'use strict';var _=require(_0x1b6e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x1b6e('0x1'));var rs=require(_0x1b6e('0x2'));var fs=require('fs');var Redis=require(_0x1b6e('0x3'));var db=require(_0x1b6e('0x4'))['db'];var utils=require(_0x1b6e('0x5'));var logger=require(_0x1b6e('0x6'))(_0x1b6e('0x7'));var config=require(_0x1b6e('0x8'));var jayson=require(_0x1b6e('0x9'));var client=jayson[_0x1b6e('0xa')][_0x1b6e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x479489,_0x3fb081,_0x550f61){return new BPromise(function(_0x37ffec,_0x44774c){return client[_0x1b6e('0xc')](_0x479489,_0x550f61)[_0x1b6e('0xd')](function(_0x222a41){logger[_0x1b6e('0xe')](_0x1b6e('0xf'),_0x3fb081,_0x1b6e('0x10'));logger[_0x1b6e('0x11')](_0x1b6e('0x12'),_0x3fb081,'request\x20sent',JSON['stringify'](_0x222a41));if(_0x222a41[_0x1b6e('0x13')]){if(_0x222a41[_0x1b6e('0x13')][_0x1b6e('0x14')]===0x1f4){logger['error']('Cdr,\x20%s,\x20%s',_0x3fb081,_0x222a41[_0x1b6e('0x13')][_0x1b6e('0x15')]);return _0x44774c(_0x222a41['error']['message']);}logger[_0x1b6e('0x13')](_0x1b6e('0xf'),_0x3fb081,_0x222a41[_0x1b6e('0x13')]['message']);return _0x37ffec(_0x222a41[_0x1b6e('0x13')][_0x1b6e('0x15')]);}else{logger[_0x1b6e('0xe')]('Cdr,\x20%s,\x20%s',_0x3fb081,_0x1b6e('0x10'));_0x37ffec(_0x222a41[_0x1b6e('0x16')][_0x1b6e('0x15')]);}})['catch'](function(_0x41e00c){logger['error'](_0x1b6e('0xf'),_0x3fb081,_0x41e00c);_0x44774c(_0x41e00c);});});}
\ No newline at end of file
+var _0x25bc=['Cdr,\x20%s,\x20%s','debug','Cdr,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x2df537,_0x1359a8){var _0x288850=function(_0x2468a1){while(--_0x2468a1){_0x2df537['push'](_0x2df537['shift']());}};_0x288850(++_0x1359a8);}(_0x25bc,0x87));var _0xc25b=function(_0x184662,_0x335dec){_0x184662=_0x184662-0x0;var _0x101bd2=_0x25bc[_0x184662];return _0x101bd2;};'use strict';var _=require(_0xc25b('0x0'));var util=require(_0xc25b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc25b('0x2'));var db=require(_0xc25b('0x3'))['db'];var utils=require(_0xc25b('0x4'));var logger=require(_0xc25b('0x5'))(_0xc25b('0x6'));var config=require(_0xc25b('0x7'));var jayson=require(_0xc25b('0x8'));var client=jayson[_0xc25b('0x9')][_0xc25b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3866b8,_0x5ec4b1,_0x16e840){return new BPromise(function(_0x39ee6e,_0x1daebd){return client['request'](_0x3866b8,_0x16e840)[_0xc25b('0xb')](function(_0x595735){logger['info'](_0xc25b('0xc'),_0x5ec4b1,'request\x20sent');logger[_0xc25b('0xd')](_0xc25b('0xe'),_0x5ec4b1,_0xc25b('0xf'),JSON[_0xc25b('0x10')](_0x595735));if(_0x595735[_0xc25b('0x11')]){if(_0x595735[_0xc25b('0x11')][_0xc25b('0x12')]===0x1f4){logger['error'](_0xc25b('0xc'),_0x5ec4b1,_0x595735[_0xc25b('0x11')][_0xc25b('0x13')]);return _0x1daebd(_0x595735[_0xc25b('0x11')][_0xc25b('0x13')]);}logger['error'](_0xc25b('0xc'),_0x5ec4b1,_0x595735['error'][_0xc25b('0x13')]);return _0x39ee6e(_0x595735['error']['message']);}else{logger[_0xc25b('0x14')]('Cdr,\x20%s,\x20%s',_0x5ec4b1,_0xc25b('0xf'));_0x39ee6e(_0x595735['result'][_0xc25b('0x13')]);}})['catch'](function(_0x228d4c){logger['error']('Cdr,\x20%s,\x20%s',_0x5ec4b1,_0x228d4c);_0x1daebd(_0x228d4c);});});}
\ No newline at end of file
index 19222a4..0a194c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x227fe7,_0x392329){var _0x4b98be=function(_0xd90e58){while(--_0xd90e58){_0x227fe7['push'](_0x227fe7['shift']());}};_0x4b98be(++_0x392329);}(_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'));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
+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(_0x4b5813,_0x5769de){var _0x423465=function(_0x18071f){while(--_0x18071f){_0x4b5813['push'](_0x4b5813['shift']());}};_0x423465(++_0x5769de);}(_0xa9e0,0x123));var _0x0a9e=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xa9e0[_0x110c3d];return _0x226d67;};'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 ed3601b..7e7bcac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d90=['exports','INTEGER','noop','TEXT','STRING','*,*,*,*','sequelize'];(function(_0x203bb3,_0x138de1){var _0x5100c0=function(_0x27d59c){while(--_0x27d59c){_0x203bb3['push'](_0x203bb3['shift']());}};_0x5100c0(++_0x138de1);}(_0x0d90,0xd1));var _0x00d9=function(_0x136eb7,_0xc8ca3f){_0x136eb7=_0x136eb7-0x0;var _0x4289ee=_0x0d90[_0x136eb7];return _0x4289ee;};'use strict';var Sequelize=require(_0x00d9('0x0'));module[_0x00d9('0x1')]={'priority':{'type':Sequelize[_0x00d9('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x00d9('0x3')},'appdata':{'type':Sequelize[_0x00d9('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x00d9('0x5')],'defaultValue':_0x00d9('0x6')}};
\ No newline at end of file
+var _0x48a7=['TEXT','sequelize','exports','INTEGER','STRING'];(function(_0x366855,_0xd0dd9a){var _0x4e251a=function(_0x5448d2){while(--_0x5448d2){_0x366855['push'](_0x366855['shift']());}};_0x4e251a(++_0xd0dd9a);}(_0x48a7,0xe7));var _0x748a=function(_0x3952f8,_0x239e56){_0x3952f8=_0x3952f8-0x0;var _0x38e19c=_0x48a7[_0x3952f8];return _0x38e19c;};'use strict';var Sequelize=require(_0x748a('0x0'));module[_0x748a('0x1')]={'priority':{'type':Sequelize[_0x748a('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x748a('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x748a('0x4')]()},'description':{'type':Sequelize[_0x748a('0x3')]},'interval':{'type':Sequelize[_0x748a('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index be103f6..73dedb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83e1=['../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','destroy','sendStatus','error','stack','name','send','show','model','ChatApplication','rawAttributes','keys','intersection','attributes','fields','query','length','include','merge','find','catch','body','params','eml-format','rimraf','fast-json-patch','moment','util','path','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils'];(function(_0x155cf2,_0xda7edc){var _0x1a7534=function(_0x446e3d){while(--_0x446e3d){_0x155cf2['push'](_0x155cf2['shift']());}};_0x1a7534(++_0xda7edc);}(_0x83e1,0x1ad));var _0x183e=function(_0x3688c2,_0x45adb5){_0x3688c2=_0x3688c2-0x0;var _0x27c78f=_0x83e1[_0x3688c2];return _0x27c78f;};'use strict';var emlformat=require(_0x183e('0x0'));var rimraf=require(_0x183e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x183e('0x2'));var rp=require('request-promise');var moment=require(_0x183e('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x183e('0x4'));var path=require(_0x183e('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x183e('0x6'));var _=require(_0x183e('0x7'));var squel=require(_0x183e('0x8'));var crypto=require('crypto');var jsforce=require(_0x183e('0x9'));var deskjs=require(_0x183e('0xa'));var toCsv=require(_0x183e('0xb'));var querystring=require('querystring');var Papa=require(_0x183e('0xc'));var Redis=require(_0x183e('0xd'));var authService=require(_0x183e('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x183e('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x183e('0x10'))(_0x183e('0x11'));var utils=require(_0x183e('0x12'));var config=require(_0x183e('0x13'));var licenseUtil=require(_0x183e('0x14'));var db=require(_0x183e('0x15'))['db'];function respondWithStatusCode(_0x192605,_0x5b86b3){_0x5b86b3=_0x5b86b3||0xcc;return function(_0x53e576){if(_0x53e576){return _0x192605['sendStatus'](_0x5b86b3);}return _0x192605[_0x183e('0x16')](_0x5b86b3)[_0x183e('0x17')]();};}function respondWithResult(_0x1aae2f,_0x5d4941){_0x5d4941=_0x5d4941||0xc8;return function(_0x140a70){if(_0x140a70){return _0x1aae2f[_0x183e('0x16')](_0x5d4941)[_0x183e('0x18')](_0x140a70);}};}function respondWithFilteredResult(_0x51b258,_0x8f4af8){return function(_0x35badd){if(_0x35badd){var _0x3faadf=typeof _0x8f4af8[_0x183e('0x19')]===_0x183e('0x1a')&&typeof _0x8f4af8[_0x183e('0x1b')]===_0x183e('0x1a');var _0x271d11=_0x35badd['count'];var _0x27d487=_0x3faadf?0x0:_0x8f4af8[_0x183e('0x19')];var _0x322f56=_0x3faadf?_0x35badd[_0x183e('0x1c')]:_0x8f4af8[_0x183e('0x19')]+_0x8f4af8[_0x183e('0x1b')];var _0x5d3de1;if(_0x322f56>=_0x271d11){_0x322f56=_0x271d11;_0x5d3de1=0xc8;}else{_0x5d3de1=0xce;}_0x51b258[_0x183e('0x16')](_0x5d3de1);return _0x51b258[_0x183e('0x1d')](_0x183e('0x1e'),_0x27d487+'-'+_0x322f56+'/'+_0x271d11)[_0x183e('0x18')](_0x35badd);}return null;};}function patchUpdates(_0x4cf0da){return function(_0x4d8102){try{jsonpatch['apply'](_0x4d8102,_0x4cf0da,!![]);}catch(_0x4dc915){return BPromise[_0x183e('0x1f')](_0x4dc915);}return _0x4d8102['save']();};}function saveUpdates(_0x553fee,_0xc96e61){return function(_0x34a128){if(_0x34a128){return _0x34a128[_0x183e('0x20')](_0x553fee)[_0x183e('0x21')](function(_0x4031d8){return _0x4031d8;});}return null;};}function removeEntity(_0x4ea291,_0x223351){return function(_0x5d6b29){if(_0x5d6b29){return _0x5d6b29[_0x183e('0x22')]()[_0x183e('0x21')](function(){_0x4ea291[_0x183e('0x16')](0xcc)[_0x183e('0x17')]();});}};}function handleEntityNotFound(_0x5a0d1d,_0x5eda06){return function(_0x7b9a98){if(!_0x7b9a98){_0x5a0d1d[_0x183e('0x23')](0x194);}return _0x7b9a98;};}function handleError(_0x4b5467,_0x5457ed){_0x5457ed=_0x5457ed||0x1f4;return function(_0x14522f){logger[_0x183e('0x24')](_0x14522f[_0x183e('0x25')]);if(_0x14522f['name']){delete _0x14522f[_0x183e('0x26')];}_0x4b5467[_0x183e('0x16')](_0x5457ed)[_0x183e('0x27')](_0x14522f);};}exports[_0x183e('0x28')]=function(_0x26de99,_0x1f8603){var _0x2f9657={'raw':!![],'where':{'id':_0x26de99['params']['id']}},_0x1bc636={};_0x1bc636[_0x183e('0x29')]=_['keys'](db[_0x183e('0x2a')][_0x183e('0x2b')]);_0x1bc636['query']=_[_0x183e('0x2c')](_0x26de99['query']);_0x1bc636['filters']=_[_0x183e('0x2d')](_0x1bc636['model'],_0x1bc636['query']);_0x2f9657[_0x183e('0x2e')]=_[_0x183e('0x2d')](_0x1bc636[_0x183e('0x29')],qs[_0x183e('0x2f')](_0x26de99[_0x183e('0x30')][_0x183e('0x2f')]));_0x2f9657[_0x183e('0x2e')]=_0x2f9657['attributes'][_0x183e('0x31')]?_0x2f9657['attributes']:_0x1bc636[_0x183e('0x29')];if(_0x26de99[_0x183e('0x30')]['includeAll']){_0x2f9657[_0x183e('0x32')]=[{'all':!![]}];}_0x2f9657=_[_0x183e('0x33')]({},_0x2f9657,_0x26de99['options']);return db['ChatApplication'][_0x183e('0x34')](_0x2f9657)[_0x183e('0x21')](handleEntityNotFound(_0x1f8603,null))[_0x183e('0x21')](respondWithResult(_0x1f8603,null))[_0x183e('0x35')](handleError(_0x1f8603,null));};exports[_0x183e('0x20')]=function(_0x3f2ddb,_0x4fbaff){if(_0x3f2ddb[_0x183e('0x36')]['id']){delete _0x3f2ddb['body']['id'];}return db['ChatApplication'][_0x183e('0x34')]({'where':{'id':_0x3f2ddb[_0x183e('0x37')]['id']}})[_0x183e('0x21')](handleEntityNotFound(_0x4fbaff,null))['then'](saveUpdates(_0x3f2ddb['body'],null))[_0x183e('0x21')](respondWithResult(_0x4fbaff,null))['catch'](handleError(_0x4fbaff,null));};exports[_0x183e('0x22')]=function(_0x3efe07,_0x52f113){return db[_0x183e('0x2a')][_0x183e('0x34')]({'where':{'id':_0x3efe07[_0x183e('0x37')]['id']}})[_0x183e('0x21')](handleEntityNotFound(_0x52f113,null))[_0x183e('0x21')](removeEntity(_0x52f113,null))[_0x183e('0x35')](handleError(_0x52f113,null));};
\ No newline at end of file
+var _0xd71d=['fields','length','includeAll','merge','find','body','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','name','show','keys','ChatApplication','rawAttributes','query','filters','intersection','model','attributes'];(function(_0x19fc54,_0xcfeb5d){var _0x515a5f=function(_0x194360){while(--_0x194360){_0x19fc54['push'](_0x19fc54['shift']());}};_0x515a5f(++_0xcfeb5d);}(_0xd71d,0x1a5));var _0xdd71=function(_0x2080a3,_0x48acfa){_0x2080a3=_0x2080a3-0x0;var _0x8d7d17=_0xd71d[_0x2080a3];return _0x8d7d17;};'use strict';var emlformat=require(_0xdd71('0x0'));var rimraf=require(_0xdd71('0x1'));var zipdir=require(_0xdd71('0x2'));var jsonpatch=require(_0xdd71('0x3'));var rp=require(_0xdd71('0x4'));var moment=require('moment');var BPromise=require(_0xdd71('0x5'));var Mustache=require(_0xdd71('0x6'));var util=require(_0xdd71('0x7'));var path=require('path');var sox=require(_0xdd71('0x8'));var csv=require(_0xdd71('0x9'));var ejs=require(_0xdd71('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdd71('0xb'));var squel=require(_0xdd71('0xc'));var crypto=require(_0xdd71('0xd'));var jsforce=require(_0xdd71('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xdd71('0x9'));var querystring=require(_0xdd71('0xf'));var Papa=require(_0xdd71('0x10'));var Redis=require(_0xdd71('0x11'));var authService=require(_0xdd71('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xdd71('0x13'));var hardwareService=require(_0xdd71('0x14'));var logger=require(_0xdd71('0x15'))(_0xdd71('0x16'));var utils=require('../../config/utils');var config=require(_0xdd71('0x17'));var licenseUtil=require(_0xdd71('0x18'));var db=require(_0xdd71('0x19'))['db'];function respondWithStatusCode(_0x29f12a,_0x21ebd3){_0x21ebd3=_0x21ebd3||0xcc;return function(_0x2e5393){if(_0x2e5393){return _0x29f12a['sendStatus'](_0x21ebd3);}return _0x29f12a[_0xdd71('0x1a')](_0x21ebd3)[_0xdd71('0x1b')]();};}function respondWithResult(_0x36a531,_0x3ede09){_0x3ede09=_0x3ede09||0xc8;return function(_0x4b1f2d){if(_0x4b1f2d){return _0x36a531[_0xdd71('0x1a')](_0x3ede09)[_0xdd71('0x1c')](_0x4b1f2d);}};}function respondWithFilteredResult(_0x654fda,_0x364dc9){return function(_0x27c527){if(_0x27c527){var _0x42b476=typeof _0x364dc9[_0xdd71('0x1d')]===_0xdd71('0x1e')&&typeof _0x364dc9[_0xdd71('0x1f')]===_0xdd71('0x1e');var _0x11accc=_0x27c527['count'];var _0x4c3601=_0x42b476?0x0:_0x364dc9[_0xdd71('0x1d')];var _0x689edf=_0x42b476?_0x27c527[_0xdd71('0x20')]:_0x364dc9[_0xdd71('0x1d')]+_0x364dc9[_0xdd71('0x1f')];var _0x3b4c67;if(_0x689edf>=_0x11accc){_0x689edf=_0x11accc;_0x3b4c67=0xc8;}else{_0x3b4c67=0xce;}_0x654fda['status'](_0x3b4c67);return _0x654fda[_0xdd71('0x21')](_0xdd71('0x22'),_0x4c3601+'-'+_0x689edf+'/'+_0x11accc)[_0xdd71('0x1c')](_0x27c527);}return null;};}function patchUpdates(_0x3635fc){return function(_0x3905d8){try{jsonpatch[_0xdd71('0x23')](_0x3905d8,_0x3635fc,!![]);}catch(_0x928bb8){return BPromise[_0xdd71('0x24')](_0x928bb8);}return _0x3905d8[_0xdd71('0x25')]();};}function saveUpdates(_0x3e1faa,_0x13f10e){return function(_0x5a9960){if(_0x5a9960){return _0x5a9960['update'](_0x3e1faa)[_0xdd71('0x26')](function(_0x10d988){return _0x10d988;});}return null;};}function removeEntity(_0x50ba0a,_0x10ebb0){return function(_0x52d386){if(_0x52d386){return _0x52d386[_0xdd71('0x27')]()['then'](function(){_0x50ba0a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ae9b3,_0x168a14){return function(_0x5bb250){if(!_0x5bb250){_0x4ae9b3[_0xdd71('0x28')](0x194);}return _0x5bb250;};}function handleError(_0x37846b,_0xd8739d){_0xd8739d=_0xd8739d||0x1f4;return function(_0x11850a){logger['error'](_0x11850a['stack']);if(_0x11850a[_0xdd71('0x29')]){delete _0x11850a[_0xdd71('0x29')];}_0x37846b[_0xdd71('0x1a')](_0xd8739d)['send'](_0x11850a);};}exports[_0xdd71('0x2a')]=function(_0x3a57fc,_0x38093d){var _0x5f1d12={'raw':!![],'where':{'id':_0x3a57fc['params']['id']}},_0x9eb773={};_0x9eb773['model']=_[_0xdd71('0x2b')](db[_0xdd71('0x2c')][_0xdd71('0x2d')]);_0x9eb773[_0xdd71('0x2e')]=_[_0xdd71('0x2b')](_0x3a57fc[_0xdd71('0x2e')]);_0x9eb773[_0xdd71('0x2f')]=_[_0xdd71('0x30')](_0x9eb773[_0xdd71('0x31')],_0x9eb773['query']);_0x5f1d12[_0xdd71('0x32')]=_[_0xdd71('0x30')](_0x9eb773[_0xdd71('0x31')],qs[_0xdd71('0x33')](_0x3a57fc['query'][_0xdd71('0x33')]));_0x5f1d12['attributes']=_0x5f1d12['attributes'][_0xdd71('0x34')]?_0x5f1d12[_0xdd71('0x32')]:_0x9eb773[_0xdd71('0x31')];if(_0x3a57fc['query'][_0xdd71('0x35')]){_0x5f1d12['include']=[{'all':!![]}];}_0x5f1d12=_[_0xdd71('0x36')]({},_0x5f1d12,_0x3a57fc['options']);return db['ChatApplication'][_0xdd71('0x37')](_0x5f1d12)[_0xdd71('0x26')](handleEntityNotFound(_0x38093d,null))[_0xdd71('0x26')](respondWithResult(_0x38093d,null))['catch'](handleError(_0x38093d,null));};exports['update']=function(_0x1ce984,_0x5a4668){if(_0x1ce984['body']['id']){delete _0x1ce984[_0xdd71('0x38')]['id'];}return db['ChatApplication']['find']({'where':{'id':_0x1ce984[_0xdd71('0x39')]['id']}})[_0xdd71('0x26')](handleEntityNotFound(_0x5a4668,null))[_0xdd71('0x26')](saveUpdates(_0x1ce984[_0xdd71('0x38')],null))[_0xdd71('0x26')](respondWithResult(_0x5a4668,null))[_0xdd71('0x3a')](handleError(_0x5a4668,null));};exports[_0xdd71('0x27')]=function(_0x45ec8d,_0x4650b6){return db[_0xdd71('0x2c')][_0xdd71('0x37')]({'where':{'id':_0x45ec8d[_0xdd71('0x39')]['id']}})[_0xdd71('0x26')](handleEntityNotFound(_0x4650b6,null))[_0xdd71('0x26')](removeEntity(_0x4650b6,null))[_0xdd71('0x3a')](handleError(_0x4650b6,null));};
\ No newline at end of file
index 7441aaa..e58d023 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4556=['utf8mb4_unicode_ci','lodash','util','../../config/logger','../../config/environment','./chatApplication.attributes','exports','define','ChatApplication','chat_applications','utf8mb4'];(function(_0x547cd2,_0x3d2c18){var _0x5c0ae1=function(_0xfb2727){while(--_0xfb2727){_0x547cd2['push'](_0x547cd2['shift']());}};_0x5c0ae1(++_0x3d2c18);}(_0x4556,0x156));var _0x6455=function(_0x350b70,_0x53837b){_0x350b70=_0x350b70-0x0;var _0x3f7126=_0x4556[_0x350b70];return _0x3f7126;};'use strict';var _=require(_0x6455('0x0'));var util=require(_0x6455('0x1'));var logger=require(_0x6455('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6455('0x3'));var attributes=require(_0x6455('0x4'));module[_0x6455('0x5')]=function(_0x303d6b,_0x6eed96){return _0x303d6b[_0x6455('0x6')](_0x6455('0x7'),attributes,{'tableName':_0x6455('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6455('0x9'),'collate':_0x6455('0xa')});};
\ No newline at end of file
+var _0x189e=['exports','define','chat_applications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./chatApplication.attributes'];(function(_0x50d3ca,_0x5ec74c){var _0x5a7b8f=function(_0x4121f5){while(--_0x4121f5){_0x50d3ca['push'](_0x50d3ca['shift']());}};_0x5a7b8f(++_0x5ec74c);}(_0x189e,0x14a));var _0xe189=function(_0x2f8b05,_0x425a73){_0x2f8b05=_0x2f8b05-0x0;var _0x3143c4=_0x189e[_0x2f8b05];return _0x3143c4;};'use strict';var _=require('lodash');var util=require(_0xe189('0x0'));var logger=require(_0xe189('0x1'))(_0xe189('0x2'));var moment=require(_0xe189('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xe189('0x4'));var rimraf=require(_0xe189('0x5'));var config=require(_0xe189('0x6'));var attributes=require(_0xe189('0x7'));module[_0xe189('0x8')]=function(_0x28d165,_0x245ab9){return _0x28d165[_0xe189('0x9')]('ChatApplication',attributes,{'tableName':_0xe189('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe189('0xb'),'collate':_0xe189('0xc')});};
\ No newline at end of file
index adc4ca3..99bf2ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81f1=['request','then','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','ChatApplication,\x20%s,\x20%s','message','info','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x1c5393,_0x5f417b){var _0x2baa76=function(_0x1ed2b7){while(--_0x1ed2b7){_0x1c5393['push'](_0x1c5393['shift']());}};_0x2baa76(++_0x5f417b);}(_0x81f1,0xe7));var _0x181f=function(_0x156d68,_0x5d9b07){_0x156d68=_0x156d68-0x0;var _0x90cd7d=_0x81f1[_0x156d68];return _0x90cd7d;};'use strict';var _=require(_0x181f('0x0'));var util=require(_0x181f('0x1'));var moment=require(_0x181f('0x2'));var BPromise=require(_0x181f('0x3'));var rs=require(_0x181f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x181f('0x5'))['db'];var utils=require(_0x181f('0x6'));var logger=require('../../config/logger')(_0x181f('0x7'));var config=require(_0x181f('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5ada11,_0xc11b3f,_0x2ed1a0){return new BPromise(function(_0x5ac3c3,_0x2bfcac){return client[_0x181f('0x9')](_0x5ada11,_0x2ed1a0)[_0x181f('0xa')](function(_0x337386){logger['info']('ChatApplication,\x20%s,\x20%s',_0xc11b3f,_0x181f('0xb'));logger[_0x181f('0xc')](_0x181f('0xd'),_0xc11b3f,_0x181f('0xb'),JSON[_0x181f('0xe')](_0x337386));if(_0x337386[_0x181f('0xf')]){if(_0x337386[_0x181f('0xf')]['code']===0x1f4){logger[_0x181f('0xf')](_0x181f('0x10'),_0xc11b3f,_0x337386[_0x181f('0xf')][_0x181f('0x11')]);return _0x2bfcac(_0x337386[_0x181f('0xf')][_0x181f('0x11')]);}logger[_0x181f('0xf')](_0x181f('0x10'),_0xc11b3f,_0x337386[_0x181f('0xf')][_0x181f('0x11')]);return _0x5ac3c3(_0x337386['error']['message']);}else{logger[_0x181f('0x12')](_0x181f('0x10'),_0xc11b3f,_0x181f('0xb'));_0x5ac3c3(_0x337386[_0x181f('0x13')][_0x181f('0x11')]);}})['catch'](function(_0x56099c){logger[_0x181f('0xf')](_0x181f('0x10'),_0xc11b3f,_0x56099c);_0x2bfcac(_0x56099c);});});}
\ No newline at end of file
+var _0xb62e=['http','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','ChatApplication,\x20%s,\x20%s,\x20%s','error','message','result','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x594d0f,_0x4a0407){var _0x501577=function(_0x3b2543){while(--_0x3b2543){_0x594d0f['push'](_0x594d0f['shift']());}};_0x501577(++_0x4a0407);}(_0xb62e,0x1d6));var _0xeb62=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xb62e[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0xeb62('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xeb62('0x1'));var rs=require(_0xeb62('0x2'));var fs=require('fs');var Redis=require(_0xeb62('0x3'));var db=require(_0xeb62('0x4'))['db'];var utils=require(_0xeb62('0x5'));var logger=require(_0xeb62('0x6'))(_0xeb62('0x7'));var config=require('../../config/environment');var jayson=require(_0xeb62('0x8'));var client=jayson[_0xeb62('0x9')][_0xeb62('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x20530c,_0x5966d7,_0x26accd){return new BPromise(function(_0x54c2d5,_0x1e96fa){return client[_0xeb62('0xb')](_0x20530c,_0x26accd)[_0xeb62('0xc')](function(_0x5251ba){logger[_0xeb62('0xd')](_0xeb62('0xe'),_0x5966d7,_0xeb62('0xf'));logger['debug'](_0xeb62('0x10'),_0x5966d7,'request\x20sent',JSON['stringify'](_0x5251ba));if(_0x5251ba[_0xeb62('0x11')]){if(_0x5251ba[_0xeb62('0x11')]['code']===0x1f4){logger[_0xeb62('0x11')](_0xeb62('0xe'),_0x5966d7,_0x5251ba[_0xeb62('0x11')][_0xeb62('0x12')]);return _0x1e96fa(_0x5251ba[_0xeb62('0x11')][_0xeb62('0x12')]);}logger['error']('ChatApplication,\x20%s,\x20%s',_0x5966d7,_0x5251ba[_0xeb62('0x11')][_0xeb62('0x12')]);return _0x54c2d5(_0x5251ba['error'][_0xeb62('0x12')]);}else{logger['info'](_0xeb62('0xe'),_0x5966d7,_0xeb62('0xf'));_0x54c2d5(_0x5251ba[_0xeb62('0x13')]['message']);}})['catch'](function(_0x3fae9c){logger['error'](_0xeb62('0xe'),_0x5966d7,_0x3fae9c);_0x1e96fa(_0x3fae9c);});});}
\ No newline at end of file
index 2dbcfbe..6db2f92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15ae=['delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatApplication.controller','/:id','isAuthenticated','put','update'];(function(_0x1e7d0b,_0x395352){var _0x261b3d=function(_0x500a1f){while(--_0x500a1f){_0x1e7d0b['push'](_0x1e7d0b['shift']());}};_0x261b3d(++_0x395352);}(_0x15ae,0x173));var _0xe15a=function(_0x2d7f73,_0x47b8f8){_0x2d7f73=_0x2d7f73-0x0;var _0xef207e=_0x15ae[_0x2d7f73];return _0xef207e;};'use strict';var multer=require(_0xe15a('0x0'));var util=require('util');var path=require(_0xe15a('0x1'));var timeout=require(_0xe15a('0x2'));var express=require(_0xe15a('0x3'));var router=express[_0xe15a('0x4')]();var fs_extra=require(_0xe15a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe15a('0x6'));var config=require(_0xe15a('0x7'));var controller=require(_0xe15a('0x8'));router['get'](_0xe15a('0x9'),auth[_0xe15a('0xa')](),controller['show']);router[_0xe15a('0xb')](_0xe15a('0x9'),auth[_0xe15a('0xa')](),controller[_0xe15a('0xc')]);router[_0xe15a('0xd')](_0xe15a('0x9'),auth[_0xe15a('0xa')](),controller[_0xe15a('0xe')]);module[_0xe15a('0xf')]=router;
\ No newline at end of file
+var _0x0f37=['Router','./chatApplication.controller','/:id','isAuthenticated','show','put','update','destroy','multer'];(function(_0x1f00f0,_0x40bb93){var _0x291a2f=function(_0x2d5414){while(--_0x2d5414){_0x1f00f0['push'](_0x1f00f0['shift']());}};_0x291a2f(++_0x40bb93);}(_0x0f37,0x116));var _0x70f3=function(_0xc051b2,_0x3d6d9d){_0xc051b2=_0xc051b2-0x0;var _0x599dc2=_0x0f37[_0xc051b2];return _0x599dc2;};'use strict';var multer=require(_0x70f3('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x70f3('0x1')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x70f3('0x2'));router['get'](_0x70f3('0x3'),auth[_0x70f3('0x4')](),controller[_0x70f3('0x5')]);router[_0x70f3('0x6')](_0x70f3('0x3'),auth[_0x70f3('0x4')](),controller[_0x70f3('0x7')]);router['delete'](_0x70f3('0x3'),auth[_0x70f3('0x4')](),controller[_0x70f3('0x8')]);module['exports']=router;
\ No newline at end of file
index 289b20d..59a3546 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3809=['exports','STRING'];(function(_0x284680,_0x5beaf3){var _0x11981e=function(_0x18f193){while(--_0x18f193){_0x284680['push'](_0x284680['shift']());}};_0x11981e(++_0x5beaf3);}(_0x3809,0xca));var _0x9380=function(_0x1d8ade,_0x215671){_0x1d8ade=_0x1d8ade-0x0;var _0x580f59=_0x3809[_0x1d8ade];return _0x580f59;};'use strict';var Sequelize=require('sequelize');module[_0x9380('0x0')]={'name':{'type':Sequelize[_0x9380('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x9380('0x1')]},'write':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x7fd6=['BOOLEAN','sequelize','STRING'];(function(_0x5e0833,_0x261c36){var _0x536c31=function(_0xf019b0){while(--_0xf019b0){_0x5e0833['push'](_0x5e0833['shift']());}};_0x536c31(++_0x261c36);}(_0x7fd6,0x157));var _0x67fd=function(_0x11588e,_0x27fb16){_0x11588e=_0x11588e-0x0;var _0x3c2c3b=_0x7fd6[_0x11588e];return _0x3c2c3b;};'use strict';var Sequelize=require(_0x67fd('0x0'));module['exports']={'name':{'type':Sequelize[_0x67fd('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x67fd('0x1')]},'write':{'type':Sequelize[_0x67fd('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index da25abe..73aaba4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3034=['update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','ChatGroup','includeAll','findAll','catch','show','params','keys','include','find','create','body','describe','getUnread','ChatInternalMessage','user','addMembers','ids','omit','getMembers','findOne','User','pick','removeMembers','addMessage','ChatGroupId','getMessages','$gte','split','format','eml-format','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','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','sendStatus','status','end','json','undefined','limit','count','offset','set','reject'];(function(_0xf168d3,_0x43dcfc){var _0x17fb54=function(_0x3d9674){while(--_0x3d9674){_0xf168d3['push'](_0xf168d3['shift']());}};_0x17fb54(++_0x43dcfc);}(_0x3034,0x9e));var _0x4303=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x3034[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x4303('0x0'));var rimraf=require(_0x4303('0x1'));var zipdir=require(_0x4303('0x2'));var jsonpatch=require(_0x4303('0x3'));var rp=require(_0x4303('0x4'));var moment=require(_0x4303('0x5'));var BPromise=require(_0x4303('0x6'));var Mustache=require(_0x4303('0x7'));var util=require(_0x4303('0x8'));var path=require(_0x4303('0x9'));var sox=require(_0x4303('0xa'));var csv=require(_0x4303('0xb'));var ejs=require(_0x4303('0xc'));var fs=require('fs');var fs_extra=require(_0x4303('0xd'));var _=require(_0x4303('0xe'));var squel=require(_0x4303('0xf'));var crypto=require(_0x4303('0x10'));var jsforce=require(_0x4303('0x11'));var deskjs=require(_0x4303('0x12'));var toCsv=require(_0x4303('0xb'));var querystring=require(_0x4303('0x13'));var Papa=require(_0x4303('0x14'));var Redis=require(_0x4303('0x15'));var authService=require(_0x4303('0x16'));var qs=require('../../components/parsers/qs');var as=require(_0x4303('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4303('0x18'));var utils=require(_0x4303('0x19'));var config=require(_0x4303('0x1a'));var licenseUtil=require(_0x4303('0x1b'));var db=require(_0x4303('0x1c'))['db'];config[_0x4303('0x1d')]=_[_0x4303('0x1e')](config['redis'],{'host':_0x4303('0x1f'),'port':0x18eb});var socket=require(_0x4303('0x20'))(new Redis(config[_0x4303('0x1d')]));require(_0x4303('0x21'))['register'](socket);function respondWithStatusCode(_0x230a58,_0x760bbd){_0x760bbd=_0x760bbd||0xcc;return function(_0x5f1187){if(_0x5f1187){return _0x230a58[_0x4303('0x22')](_0x760bbd);}return _0x230a58[_0x4303('0x23')](_0x760bbd)[_0x4303('0x24')]();};}function respondWithResult(_0x3e3938,_0x1b7f14){_0x1b7f14=_0x1b7f14||0xc8;return function(_0x52f747){if(_0x52f747){return _0x3e3938[_0x4303('0x23')](_0x1b7f14)[_0x4303('0x25')](_0x52f747);}};}function respondWithFilteredResult(_0x44fafd,_0x27a147){return function(_0x2a1941){if(_0x2a1941){var _0x42fd45=typeof _0x27a147['offset']===_0x4303('0x26')&&typeof _0x27a147[_0x4303('0x27')]===_0x4303('0x26');var _0x23fd98=_0x2a1941[_0x4303('0x28')];var _0x5b631f=_0x42fd45?0x0:_0x27a147[_0x4303('0x29')];var _0x263f2b=_0x42fd45?_0x2a1941[_0x4303('0x28')]:_0x27a147[_0x4303('0x29')]+_0x27a147[_0x4303('0x27')];var _0x23f06e;if(_0x263f2b>=_0x23fd98){_0x263f2b=_0x23fd98;_0x23f06e=0xc8;}else{_0x23f06e=0xce;}_0x44fafd[_0x4303('0x23')](_0x23f06e);return _0x44fafd[_0x4303('0x2a')]('Content-Range',_0x5b631f+'-'+_0x263f2b+'/'+_0x23fd98)['json'](_0x2a1941);}return null;};}function patchUpdates(_0x701431){return function(_0x29932b){try{jsonpatch['apply'](_0x29932b,_0x701431,!![]);}catch(_0x51069e){return BPromise[_0x4303('0x2b')](_0x51069e);}return _0x29932b['save']();};}function saveUpdates(_0x5a5fa8,_0xf17e4){return function(_0x298da8){if(_0x298da8){return _0x298da8[_0x4303('0x2c')](_0x5a5fa8)[_0x4303('0x2d')](function(_0x35f3a3){return _0x35f3a3;});}return null;};}function removeEntity(_0x3e2180,_0x4546b3){return function(_0x409bf9){if(_0x409bf9){return _0x409bf9[_0x4303('0x2e')]()[_0x4303('0x2d')](function(){_0x3e2180[_0x4303('0x23')](0xcc)[_0x4303('0x24')]();});}};}function handleEntityNotFound(_0xbaa8ce,_0x392730){return function(_0x5f5dcb){if(!_0x5f5dcb){_0xbaa8ce[_0x4303('0x22')](0x194);}return _0x5f5dcb;};}function handleError(_0xa8d357,_0x5027e2){_0x5027e2=_0x5027e2||0x1f4;return function(_0x278834){logger[_0x4303('0x2f')](_0x278834[_0x4303('0x30')]);if(_0x278834['name']){delete _0x278834[_0x4303('0x31')];}_0xa8d357['status'](_0x5027e2)[_0x4303('0x32')](_0x278834);};}exports['index']=function(_0x33ac7f,_0x1e72a5){var _0x44eedb={},_0x5f2e88={},_0x14ea50={'count':0x0,'rows':[]};var _0xfe114c=_[_0x4303('0x33')](db['ChatGroup'][_0x4303('0x34')],function(_0x3d0d69){return{'name':_0x3d0d69[_0x4303('0x35')],'type':_0x3d0d69[_0x4303('0x36')][_0x4303('0x37')]};});_0x5f2e88['model']=_[_0x4303('0x33')](_0xfe114c,_0x4303('0x31'));_0x5f2e88[_0x4303('0x38')]=_['keys'](_0x33ac7f[_0x4303('0x38')]);_0x5f2e88[_0x4303('0x39')]=_[_0x4303('0x3a')](_0x5f2e88[_0x4303('0x3b')],_0x5f2e88['query']);_0x44eedb[_0x4303('0x3c')]=_['intersection'](_0x5f2e88[_0x4303('0x3b')],qs[_0x4303('0x3d')](_0x33ac7f[_0x4303('0x38')]['fields']));_0x44eedb[_0x4303('0x3c')]=_0x44eedb[_0x4303('0x3c')][_0x4303('0x3e')]?_0x44eedb[_0x4303('0x3c')]:_0x5f2e88['model'];if(!_0x33ac7f[_0x4303('0x38')][_0x4303('0x3f')](_0x4303('0x40'))){_0x44eedb[_0x4303('0x27')]=qs['limit'](_0x33ac7f[_0x4303('0x38')][_0x4303('0x27')]);_0x44eedb['offset']=qs['offset'](_0x33ac7f[_0x4303('0x38')][_0x4303('0x29')]);}_0x44eedb[_0x4303('0x41')]=qs[_0x4303('0x42')](_0x33ac7f[_0x4303('0x38')][_0x4303('0x42')]);_0x44eedb[_0x4303('0x43')]=qs[_0x4303('0x39')](_['pick'](_0x33ac7f[_0x4303('0x38')],_0x5f2e88[_0x4303('0x39')]),_0xfe114c);if(_0x33ac7f[_0x4303('0x38')][_0x4303('0x44')]){_0x44eedb[_0x4303('0x43')]=_['merge'](_0x44eedb[_0x4303('0x43')],{'$or':_['map'](_0xfe114c,function(_0x7de25e){if(_0x7de25e['type']!==_0x4303('0x45')){var _0x248e07={};_0x248e07[_0x7de25e['name']]={'$like':'%'+_0x33ac7f['query'][_0x4303('0x44')]+'%'};return _0x248e07;}})});}_0x44eedb=_[_0x4303('0x46')]({},_0x44eedb,_0x33ac7f[_0x4303('0x47')]);var _0x43d7b8={'where':_0x44eedb[_0x4303('0x43')]};return db[_0x4303('0x48')]['count'](_0x43d7b8)[_0x4303('0x2d')](function(_0x4127d8){_0x14ea50[_0x4303('0x28')]=_0x4127d8;if(_0x33ac7f['query'][_0x4303('0x49')]){_0x44eedb['include']=[{'all':!![]}];}return db[_0x4303('0x48')][_0x4303('0x4a')](_0x44eedb);})[_0x4303('0x2d')](function(_0x454622){_0x14ea50['rows']=_0x454622;return _0x14ea50;})[_0x4303('0x2d')](respondWithFilteredResult(_0x1e72a5,_0x44eedb))[_0x4303('0x4b')](handleError(_0x1e72a5,null));};exports[_0x4303('0x4c')]=function(_0x2cb683,_0x3cb5be){var _0x44512e={'raw':!![],'where':{'id':_0x2cb683[_0x4303('0x4d')]['id']}},_0x164015={};_0x164015[_0x4303('0x3b')]=_[_0x4303('0x4e')](db[_0x4303('0x48')][_0x4303('0x34')]);_0x164015['query']=_[_0x4303('0x4e')](_0x2cb683['query']);_0x164015['filters']=_[_0x4303('0x3a')](_0x164015['model'],_0x164015[_0x4303('0x38')]);_0x44512e['attributes']=_[_0x4303('0x3a')](_0x164015[_0x4303('0x3b')],qs[_0x4303('0x3d')](_0x2cb683['query'][_0x4303('0x3d')]));_0x44512e[_0x4303('0x3c')]=_0x44512e[_0x4303('0x3c')][_0x4303('0x3e')]?_0x44512e[_0x4303('0x3c')]:_0x164015[_0x4303('0x3b')];if(_0x2cb683[_0x4303('0x38')][_0x4303('0x49')]){_0x44512e[_0x4303('0x4f')]=[{'all':!![]}];}_0x44512e=_[_0x4303('0x46')]({},_0x44512e,_0x2cb683[_0x4303('0x47')]);return db[_0x4303('0x48')][_0x4303('0x50')](_0x44512e)[_0x4303('0x2d')](handleEntityNotFound(_0x3cb5be,null))[_0x4303('0x2d')](respondWithResult(_0x3cb5be,null))[_0x4303('0x4b')](handleError(_0x3cb5be,null));};exports[_0x4303('0x51')]=function(_0x2dff31,_0x473543){return db[_0x4303('0x48')][_0x4303('0x51')](_0x2dff31[_0x4303('0x52')],{})[_0x4303('0x2d')](respondWithResult(_0x473543,0xc9))[_0x4303('0x4b')](handleError(_0x473543,null));};exports[_0x4303('0x2c')]=function(_0x6abbbd,_0x59cddd){if(_0x6abbbd[_0x4303('0x52')]['id']){delete _0x6abbbd[_0x4303('0x52')]['id'];}return db[_0x4303('0x48')][_0x4303('0x50')]({'where':{'id':_0x6abbbd[_0x4303('0x4d')]['id']}})[_0x4303('0x2d')](handleEntityNotFound(_0x59cddd,null))['then'](saveUpdates(_0x6abbbd['body'],null))[_0x4303('0x2d')](respondWithResult(_0x59cddd,null))['catch'](handleError(_0x59cddd,null));};exports[_0x4303('0x2e')]=function(_0x496738,_0x11acf5){return db[_0x4303('0x48')][_0x4303('0x50')]({'where':{'id':_0x496738[_0x4303('0x4d')]['id']}})[_0x4303('0x2d')](handleEntityNotFound(_0x11acf5,null))[_0x4303('0x2d')](removeEntity(_0x11acf5,null))['catch'](handleError(_0x11acf5,null));};exports[_0x4303('0x53')]=function(_0x3ee0ed,_0x2a439f){return db['ChatGroup'][_0x4303('0x53')]()['then'](respondWithResult(_0x2a439f,null))['catch'](handleError(_0x2a439f,null));};exports[_0x4303('0x54')]=function(_0xb2a52a,_0x3d4fef,_0x5b71f2){return db[_0x4303('0x55')]['count']({'where':{'ChatGroupId':_0xb2a52a['params']['id'],'ToId':_0xb2a52a[_0x4303('0x56')]['id'],'read':![]}})[_0x4303('0x2d')](function(_0x47d1bf){return{'id':_['toInteger'](_0xb2a52a[_0x4303('0x4d')]['id']),'count':_0x47d1bf};})['then'](respondWithResult(_0x3d4fef,null))[_0x4303('0x4b')](handleError(_0x3d4fef,null));};exports[_0x4303('0x57')]=function(_0x2755d7,_0x38893e,_0x40c202){return db[_0x4303('0x48')][_0x4303('0x50')]({'where':{'id':_0x2755d7[_0x4303('0x4d')]['id']}})[_0x4303('0x2d')](handleEntityNotFound(_0x38893e,null))[_0x4303('0x2d')](function(_0x22cbee){if(_0x22cbee){return _0x22cbee[_0x4303('0x57')](_0x2755d7[_0x4303('0x52')][_0x4303('0x58')],_[_0x4303('0x59')](_0x2755d7['body'],[_0x4303('0x58'),'id'])||{});}})[_0x4303('0x2d')](respondWithResult(_0x38893e,null))['catch'](handleError(_0x38893e,null));};exports[_0x4303('0x5a')]=function(_0xe054fe,_0x2cff17,_0x7e4e94){var _0xef858c={};var _0x22d077={};var _0x524a77;var _0x12115f;return db['ChatGroup'][_0x4303('0x5b')]({'where':{'id':_0xe054fe[_0x4303('0x4d')]['id']}})[_0x4303('0x2d')](handleEntityNotFound(_0x2cff17,null))[_0x4303('0x2d')](function(_0x102d02){if(_0x102d02){_0x524a77=_0x102d02;_0x22d077[_0x4303('0x3b')]=_[_0x4303('0x4e')](db[_0x4303('0x5c')][_0x4303('0x34')]);_0x22d077['query']=_[_0x4303('0x4e')](_0xe054fe['query']);_0x22d077[_0x4303('0x39')]=_[_0x4303('0x3a')](_0x22d077['model'],_0x22d077[_0x4303('0x38')]);_0xef858c['attributes']=_['intersection'](_0x22d077['model'],qs['fields'](_0xe054fe[_0x4303('0x38')]['fields']));_0xef858c[_0x4303('0x3c')]=_0xef858c[_0x4303('0x3c')][_0x4303('0x3e')]?_0xef858c[_0x4303('0x3c')]:_0x22d077[_0x4303('0x3b')];_0xef858c[_0x4303('0x41')]=qs['sort'](_0xe054fe['query'][_0x4303('0x42')]);_0xef858c[_0x4303('0x43')]=qs[_0x4303('0x39')](_[_0x4303('0x5d')](_0xe054fe[_0x4303('0x38')],_0x22d077[_0x4303('0x39')]));if(_0xe054fe[_0x4303('0x38')]['filter']){_0xef858c['where']=_[_0x4303('0x46')](_0xef858c[_0x4303('0x43')],{'$or':_[_0x4303('0x33')](_0xef858c[_0x4303('0x3c')],function(_0x27066e){var _0x373663={};_0x373663[_0x27066e]={'$like':'%'+_0xe054fe[_0x4303('0x38')][_0x4303('0x44')]+'%'};return _0x373663;})});}_0xef858c=_[_0x4303('0x46')]({},_0xef858c,_0xe054fe[_0x4303('0x47')]);return _0x524a77[_0x4303('0x5a')](_0xef858c);}})[_0x4303('0x2d')](function(_0x4f17f4){if(_0x4f17f4){_0x12115f=_0x4f17f4['length'];if(!_0xe054fe['query'][_0x4303('0x3f')]('nolimit')){_0xef858c[_0x4303('0x27')]=qs[_0x4303('0x27')](_0xe054fe[_0x4303('0x38')][_0x4303('0x27')]);_0xef858c['offset']=qs[_0x4303('0x29')](_0xe054fe[_0x4303('0x38')]['offset']);}return _0x524a77[_0x4303('0x5a')](_0xef858c);}})[_0x4303('0x2d')](function(_0x4edd2e){if(_0x4edd2e){return _0x4edd2e?{'count':_0x12115f,'rows':_0x4edd2e}:null;}})[_0x4303('0x2d')](respondWithResult(_0x2cff17,null))[_0x4303('0x4b')](handleError(_0x2cff17,null));};exports[_0x4303('0x5e')]=function(_0x33298,_0x566a1f,_0x3c574b){return db[_0x4303('0x48')][_0x4303('0x50')]({'where':{'id':_0x33298['params']['id']}})[_0x4303('0x2d')](handleEntityNotFound(_0x566a1f,null))[_0x4303('0x2d')](function(_0x5ec15a){if(_0x5ec15a){return _0x5ec15a['removeMembers'](_0x33298['query'][_0x4303('0x58')]);}})[_0x4303('0x2d')](respondWithStatusCode(_0x566a1f,null))['catch'](handleError(_0x566a1f,null));};exports[_0x4303('0x5f')]=function(_0xea2d17,_0x2f9166,_0x179055){if(_0xea2d17['body']['id']){delete _0xea2d17['body']['id'];}return db['ChatGroup'][_0x4303('0x50')]({'where':{'id':_0xea2d17[_0x4303('0x4d')]['id']}})[_0x4303('0x2d')](handleEntityNotFound(_0x2f9166,null))[_0x4303('0x2d')](function(_0x239195){if(_0x239195){_0xea2d17[_0x4303('0x52')][_0x4303('0x60')]=_0x239195['id'];return db[_0x4303('0x55')][_0x4303('0x51')](_0xea2d17[_0x4303('0x52')]);}})[_0x4303('0x2d')](respondWithResult(_0x2f9166,null))[_0x4303('0x4b')](handleError(_0x2f9166,null));};exports[_0x4303('0x61')]=function(_0x8765a4,_0x4479bd,_0x1ecc07){var _0x58bede={};var _0x43e529={};var _0x38e4cb;var _0x4553f0;return db['ChatGroup'][_0x4303('0x5b')]({'where':{'id':_0x8765a4['params']['id']}})[_0x4303('0x2d')](handleEntityNotFound(_0x4479bd,null))[_0x4303('0x2d')](function(_0x20b99d){if(_0x20b99d){_0x38e4cb=_0x20b99d;_0x43e529[_0x4303('0x3b')]=_['keys'](db[_0x4303('0x55')]['rawAttributes']);_0x43e529['query']=_['keys'](_0x8765a4[_0x4303('0x38')]);_0x43e529[_0x4303('0x39')]=_['intersection'](_0x43e529[_0x4303('0x3b')],_0x43e529[_0x4303('0x38')]);_0x58bede[_0x4303('0x3c')]=_[_0x4303('0x3a')](_0x43e529['model'],qs['fields'](_0x8765a4['query'][_0x4303('0x3d')]));_0x58bede[_0x4303('0x3c')]=_0x58bede[_0x4303('0x3c')]['length']?_0x58bede[_0x4303('0x3c')]:_0x43e529[_0x4303('0x3b')];_0x58bede[_0x4303('0x41')]=qs[_0x4303('0x42')](_0x8765a4['query']['sort']);_0x58bede[_0x4303('0x43')]=qs[_0x4303('0x39')](_['pick'](_0x8765a4['query'],_0x43e529[_0x4303('0x39')]));if(_0x8765a4['query']['filter']){_0x58bede['where']=_[_0x4303('0x46')](_0x58bede[_0x4303('0x43')],{'$or':_[_0x4303('0x33')](_0x58bede[_0x4303('0x3c')],function(_0x15716e){var _0x2d25d2={};_0x2d25d2[_0x15716e]={'$like':'%'+_0x8765a4[_0x4303('0x38')][_0x4303('0x44')]+'%'};return _0x2d25d2;})});}if(_0x8765a4['query'][_0x4303('0x62')]){var _0x2a4f09=_0x8765a4[_0x4303('0x38')][_0x4303('0x62')][_0x4303('0x63')](',');var _0x45be40={};_0x45be40[_0x2a4f09[0x0]]={'$gte':moment(_0x2a4f09[0x1])[_0x4303('0x64')]('YYYY-MM-DD\x20HH:mm:ss')};_0x58bede[_0x4303('0x43')]=_[_0x4303('0x46')](_0x58bede[_0x4303('0x43')],_0x45be40);}_0x58bede=_[_0x4303('0x46')]({},_0x58bede,_0x8765a4[_0x4303('0x47')]);return _0x38e4cb['getMessages'](_0x58bede);}})[_0x4303('0x2d')](function(_0x2598e1){if(_0x2598e1){_0x4553f0=_0x2598e1['length'];if(!_0x8765a4[_0x4303('0x38')][_0x4303('0x3f')](_0x4303('0x40'))){_0x58bede[_0x4303('0x27')]=qs[_0x4303('0x27')](_0x8765a4[_0x4303('0x38')][_0x4303('0x27')]);_0x58bede['offset']=qs[_0x4303('0x29')](_0x8765a4[_0x4303('0x38')][_0x4303('0x29')]);}return _0x38e4cb['getMessages'](_0x58bede);}})[_0x4303('0x2d')](function(_0x35667e){if(_0x35667e){return _0x35667e?{'count':_0x4553f0,'rows':_0x35667e}:null;}})[_0x4303('0x2d')](respondWithResult(_0x4479bd,null))[_0x4303('0x4b')](handleError(_0x4479bd,null));};
\ No newline at end of file
+var _0xf23b=['sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','include','ChatGroup','findAll','rows','catch','params','keys','includeAll','find','create','body','destroy','describe','getUnread','addMembers','omit','ids','getMembers','findOne','User','removeMembers','addMessage','ChatInternalMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','getMessages','nolimit','zip-dir','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','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','./chatGroup.socket','register'];(function(_0x36d831,_0x6c602a){var _0x5bc013=function(_0x1b0e7f){while(--_0x1b0e7f){_0x36d831['push'](_0x36d831['shift']());}};_0x5bc013(++_0x6c602a);}(_0xf23b,0xa2));var _0xbf23=function(_0x289b3a,_0x16a8e6){_0x289b3a=_0x289b3a-0x0;var _0x4d5cae=_0xf23b[_0x289b3a];return _0x4d5cae;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xbf23('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbf23('0x1'));var moment=require('moment');var BPromise=require(_0xbf23('0x2'));var Mustache=require(_0xbf23('0x3'));var util=require('util');var path=require(_0xbf23('0x4'));var sox=require(_0xbf23('0x5'));var csv=require('to-csv');var ejs=require(_0xbf23('0x6'));var fs=require('fs');var fs_extra=require(_0xbf23('0x7'));var _=require(_0xbf23('0x8'));var squel=require(_0xbf23('0x9'));var crypto=require(_0xbf23('0xa'));var jsforce=require(_0xbf23('0xb'));var deskjs=require(_0xbf23('0xc'));var toCsv=require(_0xbf23('0xd'));var querystring=require('querystring');var Papa=require(_0xbf23('0xe'));var Redis=require(_0xbf23('0xf'));var authService=require(_0xbf23('0x10'));var qs=require(_0xbf23('0x11'));var as=require(_0xbf23('0x12'));var hardwareService=require(_0xbf23('0x13'));var logger=require(_0xbf23('0x14'))('api');var utils=require(_0xbf23('0x15'));var config=require(_0xbf23('0x16'));var licenseUtil=require(_0xbf23('0x17'));var db=require('../../mysqldb')['db'];config[_0xbf23('0x18')]=_[_0xbf23('0x19')](config[_0xbf23('0x18')],{'host':_0xbf23('0x1a'),'port':0x18eb});var socket=require(_0xbf23('0x1b'))(new Redis(config[_0xbf23('0x18')]));require(_0xbf23('0x1c'))[_0xbf23('0x1d')](socket);function respondWithStatusCode(_0x3e349b,_0x4f868f){_0x4f868f=_0x4f868f||0xcc;return function(_0x3c2555){if(_0x3c2555){return _0x3e349b[_0xbf23('0x1e')](_0x4f868f);}return _0x3e349b[_0xbf23('0x1f')](_0x4f868f)[_0xbf23('0x20')]();};}function respondWithResult(_0x4d43d4,_0x13bbe8){_0x13bbe8=_0x13bbe8||0xc8;return function(_0x534ef1){if(_0x534ef1){return _0x4d43d4['status'](_0x13bbe8)['json'](_0x534ef1);}};}function respondWithFilteredResult(_0x2b75ac,_0x4db3f1){return function(_0x371df3){if(_0x371df3){var _0x972017=typeof _0x4db3f1[_0xbf23('0x21')]===_0xbf23('0x22')&&typeof _0x4db3f1[_0xbf23('0x23')]===_0xbf23('0x22');var _0x584d7c=_0x371df3[_0xbf23('0x24')];var _0x1e6caa=_0x972017?0x0:_0x4db3f1[_0xbf23('0x21')];var _0x762aea=_0x972017?_0x371df3['count']:_0x4db3f1['offset']+_0x4db3f1[_0xbf23('0x23')];var _0x203c16;if(_0x762aea>=_0x584d7c){_0x762aea=_0x584d7c;_0x203c16=0xc8;}else{_0x203c16=0xce;}_0x2b75ac['status'](_0x203c16);return _0x2b75ac[_0xbf23('0x25')](_0xbf23('0x26'),_0x1e6caa+'-'+_0x762aea+'/'+_0x584d7c)[_0xbf23('0x27')](_0x371df3);}return null;};}function patchUpdates(_0xfd9a8e){return function(_0x321453){try{jsonpatch[_0xbf23('0x28')](_0x321453,_0xfd9a8e,!![]);}catch(_0x23b435){return BPromise['reject'](_0x23b435);}return _0x321453[_0xbf23('0x29')]();};}function saveUpdates(_0x3c3f29,_0xff8466){return function(_0x5e5f5d){if(_0x5e5f5d){return _0x5e5f5d[_0xbf23('0x2a')](_0x3c3f29)[_0xbf23('0x2b')](function(_0x16fc41){return _0x16fc41;});}return null;};}function removeEntity(_0x1eb395,_0x5f1b7f){return function(_0x353dbb){if(_0x353dbb){return _0x353dbb['destroy']()[_0xbf23('0x2b')](function(){_0x1eb395[_0xbf23('0x1f')](0xcc)[_0xbf23('0x20')]();});}};}function handleEntityNotFound(_0x117983,_0x52e308){return function(_0x4487ec){if(!_0x4487ec){_0x117983[_0xbf23('0x1e')](0x194);}return _0x4487ec;};}function handleError(_0x2dc7b8,_0x31041d){_0x31041d=_0x31041d||0x1f4;return function(_0x3f8a65){logger['error'](_0x3f8a65['stack']);if(_0x3f8a65[_0xbf23('0x2c')]){delete _0x3f8a65[_0xbf23('0x2c')];}_0x2dc7b8[_0xbf23('0x1f')](_0x31041d)[_0xbf23('0x2d')](_0x3f8a65);};}exports[_0xbf23('0x2e')]=function(_0xa51906,_0x1a6640){var _0x394fd2={},_0x30e5e7={},_0x590168={'count':0x0,'rows':[]};var _0x60ba49=_[_0xbf23('0x2f')](db['ChatGroup'][_0xbf23('0x30')],function(_0x70a212){return{'name':_0x70a212[_0xbf23('0x31')],'type':_0x70a212[_0xbf23('0x32')][_0xbf23('0x33')]};});_0x30e5e7[_0xbf23('0x34')]=_['map'](_0x60ba49,_0xbf23('0x2c'));_0x30e5e7[_0xbf23('0x35')]=_['keys'](_0xa51906[_0xbf23('0x35')]);_0x30e5e7[_0xbf23('0x36')]=_[_0xbf23('0x37')](_0x30e5e7['model'],_0x30e5e7['query']);_0x394fd2[_0xbf23('0x38')]=_[_0xbf23('0x37')](_0x30e5e7[_0xbf23('0x34')],qs[_0xbf23('0x39')](_0xa51906['query'][_0xbf23('0x39')]));_0x394fd2[_0xbf23('0x38')]=_0x394fd2[_0xbf23('0x38')][_0xbf23('0x3a')]?_0x394fd2['attributes']:_0x30e5e7[_0xbf23('0x34')];if(!_0xa51906[_0xbf23('0x35')][_0xbf23('0x3b')]('nolimit')){_0x394fd2[_0xbf23('0x23')]=qs['limit'](_0xa51906['query']['limit']);_0x394fd2[_0xbf23('0x21')]=qs[_0xbf23('0x21')](_0xa51906['query'][_0xbf23('0x21')]);}_0x394fd2[_0xbf23('0x3c')]=qs['sort'](_0xa51906['query'][_0xbf23('0x3d')]);_0x394fd2[_0xbf23('0x3e')]=qs[_0xbf23('0x36')](_[_0xbf23('0x3f')](_0xa51906[_0xbf23('0x35')],_0x30e5e7[_0xbf23('0x36')]),_0x60ba49);if(_0xa51906[_0xbf23('0x35')][_0xbf23('0x40')]){_0x394fd2[_0xbf23('0x3e')]=_['merge'](_0x394fd2['where'],{'$or':_['map'](_0x60ba49,function(_0x24776b){if(_0x24776b[_0xbf23('0x32')]!==_0xbf23('0x41')){var _0x173033={};_0x173033[_0x24776b[_0xbf23('0x2c')]]={'$like':'%'+_0xa51906['query'][_0xbf23('0x40')]+'%'};return _0x173033;}})});}_0x394fd2=_[_0xbf23('0x42')]({},_0x394fd2,_0xa51906[_0xbf23('0x43')]);var _0x6dc019={'where':_0x394fd2[_0xbf23('0x3e')]};return db['ChatGroup'][_0xbf23('0x24')](_0x6dc019)[_0xbf23('0x2b')](function(_0x2f0aea){_0x590168['count']=_0x2f0aea;if(_0xa51906['query']['includeAll']){_0x394fd2[_0xbf23('0x44')]=[{'all':!![]}];}return db[_0xbf23('0x45')][_0xbf23('0x46')](_0x394fd2);})[_0xbf23('0x2b')](function(_0x39c026){_0x590168[_0xbf23('0x47')]=_0x39c026;return _0x590168;})[_0xbf23('0x2b')](respondWithFilteredResult(_0x1a6640,_0x394fd2))[_0xbf23('0x48')](handleError(_0x1a6640,null));};exports['show']=function(_0xe9f4ab,_0x262838){var _0x2e8a0d={'raw':!![],'where':{'id':_0xe9f4ab[_0xbf23('0x49')]['id']}},_0x1a0a44={};_0x1a0a44[_0xbf23('0x34')]=_['keys'](db[_0xbf23('0x45')][_0xbf23('0x30')]);_0x1a0a44[_0xbf23('0x35')]=_[_0xbf23('0x4a')](_0xe9f4ab[_0xbf23('0x35')]);_0x1a0a44['filters']=_[_0xbf23('0x37')](_0x1a0a44[_0xbf23('0x34')],_0x1a0a44['query']);_0x2e8a0d[_0xbf23('0x38')]=_['intersection'](_0x1a0a44[_0xbf23('0x34')],qs[_0xbf23('0x39')](_0xe9f4ab[_0xbf23('0x35')][_0xbf23('0x39')]));_0x2e8a0d[_0xbf23('0x38')]=_0x2e8a0d['attributes'][_0xbf23('0x3a')]?_0x2e8a0d[_0xbf23('0x38')]:_0x1a0a44[_0xbf23('0x34')];if(_0xe9f4ab[_0xbf23('0x35')][_0xbf23('0x4b')]){_0x2e8a0d[_0xbf23('0x44')]=[{'all':!![]}];}_0x2e8a0d=_[_0xbf23('0x42')]({},_0x2e8a0d,_0xe9f4ab[_0xbf23('0x43')]);return db[_0xbf23('0x45')][_0xbf23('0x4c')](_0x2e8a0d)[_0xbf23('0x2b')](handleEntityNotFound(_0x262838,null))[_0xbf23('0x2b')](respondWithResult(_0x262838,null))['catch'](handleError(_0x262838,null));};exports[_0xbf23('0x4d')]=function(_0x4c630d,_0x58f8ad){return db['ChatGroup'][_0xbf23('0x4d')](_0x4c630d['body'],{})[_0xbf23('0x2b')](respondWithResult(_0x58f8ad,0xc9))['catch'](handleError(_0x58f8ad,null));};exports['update']=function(_0xca3d74,_0x526326){if(_0xca3d74[_0xbf23('0x4e')]['id']){delete _0xca3d74['body']['id'];}return db[_0xbf23('0x45')][_0xbf23('0x4c')]({'where':{'id':_0xca3d74[_0xbf23('0x49')]['id']}})['then'](handleEntityNotFound(_0x526326,null))[_0xbf23('0x2b')](saveUpdates(_0xca3d74['body'],null))[_0xbf23('0x2b')](respondWithResult(_0x526326,null))[_0xbf23('0x48')](handleError(_0x526326,null));};exports[_0xbf23('0x4f')]=function(_0x2cc7ad,_0x34020d){return db[_0xbf23('0x45')][_0xbf23('0x4c')]({'where':{'id':_0x2cc7ad[_0xbf23('0x49')]['id']}})[_0xbf23('0x2b')](handleEntityNotFound(_0x34020d,null))[_0xbf23('0x2b')](removeEntity(_0x34020d,null))[_0xbf23('0x48')](handleError(_0x34020d,null));};exports['describe']=function(_0x19f579,_0x4b69be){return db[_0xbf23('0x45')][_0xbf23('0x50')]()['then'](respondWithResult(_0x4b69be,null))[_0xbf23('0x48')](handleError(_0x4b69be,null));};exports[_0xbf23('0x51')]=function(_0x5dafee,_0xb09319,_0xc0774f){return db['ChatInternalMessage']['count']({'where':{'ChatGroupId':_0x5dafee[_0xbf23('0x49')]['id'],'ToId':_0x5dafee['user']['id'],'read':![]}})[_0xbf23('0x2b')](function(_0x462c47){return{'id':_['toInteger'](_0x5dafee[_0xbf23('0x49')]['id']),'count':_0x462c47};})[_0xbf23('0x2b')](respondWithResult(_0xb09319,null))[_0xbf23('0x48')](handleError(_0xb09319,null));};exports['addMembers']=function(_0x709239,_0xb4b7c8,_0x9d66d7){return db['ChatGroup'][_0xbf23('0x4c')]({'where':{'id':_0x709239[_0xbf23('0x49')]['id']}})[_0xbf23('0x2b')](handleEntityNotFound(_0xb4b7c8,null))[_0xbf23('0x2b')](function(_0x33b984){if(_0x33b984){return _0x33b984[_0xbf23('0x52')](_0x709239[_0xbf23('0x4e')]['ids'],_[_0xbf23('0x53')](_0x709239[_0xbf23('0x4e')],[_0xbf23('0x54'),'id'])||{});}})[_0xbf23('0x2b')](respondWithResult(_0xb4b7c8,null))[_0xbf23('0x48')](handleError(_0xb4b7c8,null));};exports[_0xbf23('0x55')]=function(_0x11c627,_0x1f5eae,_0x558bb3){var _0xa2ac0e={};var _0x1fdc41={};var _0x400271;var _0x2b5fa4;return db[_0xbf23('0x45')][_0xbf23('0x56')]({'where':{'id':_0x11c627[_0xbf23('0x49')]['id']}})[_0xbf23('0x2b')](handleEntityNotFound(_0x1f5eae,null))[_0xbf23('0x2b')](function(_0x2c1e12){if(_0x2c1e12){_0x400271=_0x2c1e12;_0x1fdc41[_0xbf23('0x34')]=_[_0xbf23('0x4a')](db[_0xbf23('0x57')]['rawAttributes']);_0x1fdc41[_0xbf23('0x35')]=_['keys'](_0x11c627[_0xbf23('0x35')]);_0x1fdc41[_0xbf23('0x36')]=_[_0xbf23('0x37')](_0x1fdc41[_0xbf23('0x34')],_0x1fdc41[_0xbf23('0x35')]);_0xa2ac0e[_0xbf23('0x38')]=_[_0xbf23('0x37')](_0x1fdc41[_0xbf23('0x34')],qs[_0xbf23('0x39')](_0x11c627[_0xbf23('0x35')][_0xbf23('0x39')]));_0xa2ac0e['attributes']=_0xa2ac0e[_0xbf23('0x38')]['length']?_0xa2ac0e[_0xbf23('0x38')]:_0x1fdc41['model'];_0xa2ac0e[_0xbf23('0x3c')]=qs[_0xbf23('0x3d')](_0x11c627['query'][_0xbf23('0x3d')]);_0xa2ac0e[_0xbf23('0x3e')]=qs['filters'](_[_0xbf23('0x3f')](_0x11c627[_0xbf23('0x35')],_0x1fdc41[_0xbf23('0x36')]));if(_0x11c627[_0xbf23('0x35')][_0xbf23('0x40')]){_0xa2ac0e[_0xbf23('0x3e')]=_[_0xbf23('0x42')](_0xa2ac0e['where'],{'$or':_[_0xbf23('0x2f')](_0xa2ac0e[_0xbf23('0x38')],function(_0x5edbbb){var _0x85aae7={};_0x85aae7[_0x5edbbb]={'$like':'%'+_0x11c627[_0xbf23('0x35')][_0xbf23('0x40')]+'%'};return _0x85aae7;})});}_0xa2ac0e=_[_0xbf23('0x42')]({},_0xa2ac0e,_0x11c627['options']);return _0x400271['getMembers'](_0xa2ac0e);}})[_0xbf23('0x2b')](function(_0x3eaa55){if(_0x3eaa55){_0x2b5fa4=_0x3eaa55[_0xbf23('0x3a')];if(!_0x11c627[_0xbf23('0x35')]['hasOwnProperty']('nolimit')){_0xa2ac0e[_0xbf23('0x23')]=qs[_0xbf23('0x23')](_0x11c627[_0xbf23('0x35')]['limit']);_0xa2ac0e[_0xbf23('0x21')]=qs[_0xbf23('0x21')](_0x11c627[_0xbf23('0x35')][_0xbf23('0x21')]);}return _0x400271[_0xbf23('0x55')](_0xa2ac0e);}})[_0xbf23('0x2b')](function(_0x54938b){if(_0x54938b){return _0x54938b?{'count':_0x2b5fa4,'rows':_0x54938b}:null;}})[_0xbf23('0x2b')](respondWithResult(_0x1f5eae,null))['catch'](handleError(_0x1f5eae,null));};exports[_0xbf23('0x58')]=function(_0x464992,_0x448a3c,_0x539eb7){return db['ChatGroup']['find']({'where':{'id':_0x464992['params']['id']}})[_0xbf23('0x2b')](handleEntityNotFound(_0x448a3c,null))[_0xbf23('0x2b')](function(_0x4ac2f4){if(_0x4ac2f4){return _0x4ac2f4[_0xbf23('0x58')](_0x464992['query']['ids']);}})[_0xbf23('0x2b')](respondWithStatusCode(_0x448a3c,null))[_0xbf23('0x48')](handleError(_0x448a3c,null));};exports[_0xbf23('0x59')]=function(_0x456b53,_0x433db5,_0xf8c631){if(_0x456b53[_0xbf23('0x4e')]['id']){delete _0x456b53['body']['id'];}return db['ChatGroup'][_0xbf23('0x4c')]({'where':{'id':_0x456b53[_0xbf23('0x49')]['id']}})[_0xbf23('0x2b')](handleEntityNotFound(_0x433db5,null))[_0xbf23('0x2b')](function(_0x5bdf78){if(_0x5bdf78){_0x456b53[_0xbf23('0x4e')]['ChatGroupId']=_0x5bdf78['id'];return db[_0xbf23('0x5a')][_0xbf23('0x4d')](_0x456b53[_0xbf23('0x4e')]);}})[_0xbf23('0x2b')](respondWithResult(_0x433db5,null))[_0xbf23('0x48')](handleError(_0x433db5,null));};exports['getMessages']=function(_0x2024f8,_0xab5d60,_0x569a62){var _0x31515f={};var _0x22a2f2={};var _0x3d0400;var _0x4442eb;return db['ChatGroup'][_0xbf23('0x56')]({'where':{'id':_0x2024f8[_0xbf23('0x49')]['id']}})[_0xbf23('0x2b')](handleEntityNotFound(_0xab5d60,null))[_0xbf23('0x2b')](function(_0x4a4e69){if(_0x4a4e69){_0x3d0400=_0x4a4e69;_0x22a2f2[_0xbf23('0x34')]=_[_0xbf23('0x4a')](db['ChatInternalMessage'][_0xbf23('0x30')]);_0x22a2f2[_0xbf23('0x35')]=_[_0xbf23('0x4a')](_0x2024f8[_0xbf23('0x35')]);_0x22a2f2[_0xbf23('0x36')]=_['intersection'](_0x22a2f2[_0xbf23('0x34')],_0x22a2f2[_0xbf23('0x35')]);_0x31515f['attributes']=_[_0xbf23('0x37')](_0x22a2f2[_0xbf23('0x34')],qs['fields'](_0x2024f8[_0xbf23('0x35')][_0xbf23('0x39')]));_0x31515f[_0xbf23('0x38')]=_0x31515f[_0xbf23('0x38')][_0xbf23('0x3a')]?_0x31515f['attributes']:_0x22a2f2[_0xbf23('0x34')];_0x31515f[_0xbf23('0x3c')]=qs[_0xbf23('0x3d')](_0x2024f8[_0xbf23('0x35')][_0xbf23('0x3d')]);_0x31515f[_0xbf23('0x3e')]=qs[_0xbf23('0x36')](_[_0xbf23('0x3f')](_0x2024f8[_0xbf23('0x35')],_0x22a2f2[_0xbf23('0x36')]));if(_0x2024f8['query'][_0xbf23('0x40')]){_0x31515f[_0xbf23('0x3e')]=_[_0xbf23('0x42')](_0x31515f['where'],{'$or':_[_0xbf23('0x2f')](_0x31515f['attributes'],function(_0x123b2d){var _0x55ec50={};_0x55ec50[_0x123b2d]={'$like':'%'+_0x2024f8['query'][_0xbf23('0x40')]+'%'};return _0x55ec50;})});}if(_0x2024f8['query']['$gte']){var _0x33e8f4=_0x2024f8[_0xbf23('0x35')][_0xbf23('0x5b')]['split'](',');var _0x397d3b={};_0x397d3b[_0x33e8f4[0x0]]={'$gte':moment(_0x33e8f4[0x1])[_0xbf23('0x5c')](_0xbf23('0x5d'))};_0x31515f['where']=_[_0xbf23('0x42')](_0x31515f['where'],_0x397d3b);}_0x31515f=_[_0xbf23('0x42')]({},_0x31515f,_0x2024f8[_0xbf23('0x43')]);return _0x3d0400[_0xbf23('0x5e')](_0x31515f);}})[_0xbf23('0x2b')](function(_0x384f22){if(_0x384f22){_0x4442eb=_0x384f22[_0xbf23('0x3a')];if(!_0x2024f8[_0xbf23('0x35')][_0xbf23('0x3b')](_0xbf23('0x5f'))){_0x31515f['limit']=qs[_0xbf23('0x23')](_0x2024f8[_0xbf23('0x35')][_0xbf23('0x23')]);_0x31515f[_0xbf23('0x21')]=qs['offset'](_0x2024f8[_0xbf23('0x35')][_0xbf23('0x21')]);}return _0x3d0400['getMessages'](_0x31515f);}})[_0xbf23('0x2b')](function(_0x1e79e6){if(_0x1e79e6){return _0x1e79e6?{'count':_0x4442eb,'rows':_0x1e79e6}:null;}})[_0xbf23('0x2b')](respondWithResult(_0xab5d60,null))[_0xbf23('0x48')](handleError(_0xab5d60,null));};
\ No newline at end of file
index 54bd822..64fe290 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68fd=['exports','events','ChatGroup','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0x68fd,0x1e9));var _0xd68f=function(_0x7e9a0b,_0x285775){_0x7e9a0b=_0x7e9a0b-0x0;var _0x716ab=_0x68fd[_0x7e9a0b];return _0x716ab;};'use strict';var EventEmitter=require(_0xd68f('0x0'));var ChatGroup=require('../../mysqldb')['db'][_0xd68f('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xd68f('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd68f('0x3'),'afterDestroy':_0xd68f('0x4')};function emitEvent(_0x96d959){return function(_0x3e5e78,_0x37c481,_0x9814cb){ChatGroupEvents[_0xd68f('0x5')](_0x96d959+':'+_0x3e5e78['id'],_0x3e5e78);ChatGroupEvents[_0xd68f('0x5')](_0x96d959,_0x3e5e78);_0x9814cb(null);};}for(var e in events){if(events[_0xd68f('0x6')](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module[_0xd68f('0x7')]=ChatGroupEvents;
\ No newline at end of file
+var _0xd5eb=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x497a85,_0x2bd7cf){var _0x33207e=function(_0x56e9ec){while(--_0x56e9ec){_0x497a85['push'](_0x497a85['shift']());}};_0x33207e(++_0x2bd7cf);}(_0xd5eb,0x183));var _0xbd5e=function(_0x3fbf39,_0x14c2f0){_0x3fbf39=_0x3fbf39-0x0;var _0x33eff3=_0xd5eb[_0x3fbf39];return _0x33eff3;};'use strict';var EventEmitter=require(_0xbd5e('0x0'));var ChatGroup=require(_0xbd5e('0x1'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xbd5e('0x2')](0x0);var events={'afterCreate':_0xbd5e('0x3'),'afterUpdate':_0xbd5e('0x4'),'afterDestroy':_0xbd5e('0x5')};function emitEvent(_0x1aa352){return function(_0x381ed9,_0x5005d2,_0x4eedc1){ChatGroupEvents['emit'](_0x1aa352+':'+_0x381ed9['id'],_0x381ed9);ChatGroupEvents[_0xbd5e('0x6')](_0x1aa352,_0x381ed9);_0x4eedc1(null);};}for(var e in events){if(events[_0xbd5e('0x7')](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module[_0xbd5e('0x8')]=ChatGroupEvents;
\ No newline at end of file
index 7d0b117..6539cda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bb4=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatGroup.attributes','exports','chat_groups','../../config/logger'];(function(_0x2d344f,_0x25fa84){var _0x2e796b=function(_0x10466a){while(--_0x10466a){_0x2d344f['push'](_0x2d344f['shift']());}};_0x2e796b(++_0x25fa84);}(_0x6bb4,0x175));var _0x46bb=function(_0x66bb31,_0x2d90cf){_0x66bb31=_0x66bb31-0x0;var _0xf47485=_0x6bb4[_0x66bb31];return _0xf47485;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x46bb('0x0'))(_0x46bb('0x1'));var moment=require(_0x46bb('0x2'));var BPromise=require(_0x46bb('0x3'));var rp=require(_0x46bb('0x4'));var fs=require('fs');var path=require(_0x46bb('0x5'));var rimraf=require(_0x46bb('0x6'));var config=require(_0x46bb('0x7'));var attributes=require(_0x46bb('0x8'));module[_0x46bb('0x9')]=function(_0x3e1934,_0x3b01b7){return _0x3e1934['define']('ChatGroup',attributes,{'tableName':_0x46bb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbb60=['define','ChatGroup','chat_groups','lodash','util','api','request-promise','path','rimraf','../../config/environment','./chatGroup.attributes','exports'];(function(_0x3cf1dc,_0x1d3274){var _0xb97c58=function(_0x1460d7){while(--_0x1460d7){_0x3cf1dc['push'](_0x3cf1dc['shift']());}};_0xb97c58(++_0x1d3274);}(_0xbb60,0x93));var _0x0bb6=function(_0x58d635,_0x137157){_0x58d635=_0x58d635-0x0;var _0xf4e50f=_0xbb60[_0x58d635];return _0xf4e50f;};'use strict';var _=require(_0x0bb6('0x0'));var util=require(_0x0bb6('0x1'));var logger=require('../../config/logger')(_0x0bb6('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0bb6('0x3'));var fs=require('fs');var path=require(_0x0bb6('0x4'));var rimraf=require(_0x0bb6('0x5'));var config=require(_0x0bb6('0x6'));var attributes=require(_0x0bb6('0x7'));module[_0x0bb6('0x8')]=function(_0x5f1a97,_0x297eb6){return _0x5f1a97[_0x0bb6('0x9')](_0x0bb6('0xa'),attributes,{'tableName':_0x0bb6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 90eee95..7af9587 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64f0=['redis','localhost','socket.io-emitter','./chatGroup.socket','register','request','info','ChatGroup,\x20%s,\x20%s','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http'];(function(_0x263f4c,_0x438626){var _0x3a78d3=function(_0xbdb00f){while(--_0xbdb00f){_0x263f4c['push'](_0x263f4c['shift']());}};_0x3a78d3(++_0x438626);}(_0x64f0,0x1a0));var _0x064f=function(_0x19e928,_0x26a0e4){_0x19e928=_0x19e928-0x0;var _0x4e941f=_0x64f0[_0x19e928];return _0x4e941f;};'use strict';var _=require(_0x064f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x064f('0x1'));var rs=require(_0x064f('0x2'));var fs=require('fs');var Redis=require(_0x064f('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x064f('0x4'));var logger=require(_0x064f('0x5'))('rpc');var config=require(_0x064f('0x6'));var jayson=require(_0x064f('0x7'));var client=jayson['client'][_0x064f('0x8')]({'port':0x232a});config['redis']=_['defaults'](config[_0x064f('0x9')],{'host':_0x064f('0xa'),'port':0x18eb});var socket=require(_0x064f('0xb'))(new Redis(config[_0x064f('0x9')]));require(_0x064f('0xc'))[_0x064f('0xd')](socket);function respondWithRpcPromise(_0x420296,_0x262579,_0x59d5dd){return new BPromise(function(_0x4fa8cc,_0x36516f){return client[_0x064f('0xe')](_0x420296,_0x59d5dd)['then'](function(_0x61edab){logger[_0x064f('0xf')](_0x064f('0x10'),_0x262579,'request\x20sent');logger['debug'](_0x064f('0x11'),_0x262579,'request\x20sent',JSON[_0x064f('0x12')](_0x61edab));if(_0x61edab[_0x064f('0x13')]){if(_0x61edab[_0x064f('0x13')][_0x064f('0x14')]===0x1f4){logger[_0x064f('0x13')](_0x064f('0x10'),_0x262579,_0x61edab['error'][_0x064f('0x15')]);return _0x36516f(_0x61edab[_0x064f('0x13')]['message']);}logger[_0x064f('0x13')](_0x064f('0x10'),_0x262579,_0x61edab[_0x064f('0x13')][_0x064f('0x15')]);return _0x4fa8cc(_0x61edab[_0x064f('0x13')][_0x064f('0x15')]);}else{logger[_0x064f('0xf')](_0x064f('0x10'),_0x262579,_0x064f('0x16'));_0x4fa8cc(_0x61edab[_0x064f('0x17')][_0x064f('0x15')]);}})[_0x064f('0x18')](function(_0x6f5024){logger[_0x064f('0x13')](_0x064f('0x10'),_0x262579,_0x6f5024);_0x36516f(_0x6f5024);});});}
\ No newline at end of file
+var _0xd1f9=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','request','then','info','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','code','error','ChatGroup,\x20%s,\x20%s','message','moment','bluebird','randomstring','ioredis'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xd1f9,0x88));var _0x9d1f=function(_0x1ee5ef,_0x38d42b){_0x1ee5ef=_0x1ee5ef-0x0;var _0x448ab8=_0xd1f9[_0x1ee5ef];return _0x448ab8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9d1f('0x0'));var BPromise=require(_0x9d1f('0x1'));var rs=require(_0x9d1f('0x2'));var fs=require('fs');var Redis=require(_0x9d1f('0x3'));var db=require(_0x9d1f('0x4'))['db'];var utils=require(_0x9d1f('0x5'));var logger=require(_0x9d1f('0x6'))(_0x9d1f('0x7'));var config=require(_0x9d1f('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9d1f('0x9')][_0x9d1f('0xa')]({'port':0x232a});config[_0x9d1f('0xb')]=_[_0x9d1f('0xc')](config[_0x9d1f('0xb')],{'host':_0x9d1f('0xd'),'port':0x18eb});var socket=require(_0x9d1f('0xe'))(new Redis(config[_0x9d1f('0xb')]));require(_0x9d1f('0xf'))[_0x9d1f('0x10')](socket);function respondWithRpcPromise(_0x153ef3,_0x1d960c,_0x1c5446){return new BPromise(function(_0x27480b,_0x34e67a){return client[_0x9d1f('0x11')](_0x153ef3,_0x1c5446)[_0x9d1f('0x12')](function(_0x1dcf5f){logger[_0x9d1f('0x13')]('ChatGroup,\x20%s,\x20%s',_0x1d960c,_0x9d1f('0x14'));logger[_0x9d1f('0x15')](_0x9d1f('0x16'),_0x1d960c,'request\x20sent',JSON[_0x9d1f('0x17')](_0x1dcf5f));if(_0x1dcf5f['error']){if(_0x1dcf5f['error'][_0x9d1f('0x18')]===0x1f4){logger[_0x9d1f('0x19')](_0x9d1f('0x1a'),_0x1d960c,_0x1dcf5f[_0x9d1f('0x19')][_0x9d1f('0x1b')]);return _0x34e67a(_0x1dcf5f[_0x9d1f('0x19')][_0x9d1f('0x1b')]);}logger[_0x9d1f('0x19')](_0x9d1f('0x1a'),_0x1d960c,_0x1dcf5f[_0x9d1f('0x19')][_0x9d1f('0x1b')]);return _0x27480b(_0x1dcf5f[_0x9d1f('0x19')][_0x9d1f('0x1b')]);}else{logger['info'](_0x9d1f('0x1a'),_0x1d960c,_0x9d1f('0x14'));_0x27480b(_0x1dcf5f['result'][_0x9d1f('0x1b')]);}})['catch'](function(_0x4ab476){logger['error'](_0x9d1f('0x1a'),_0x1d960c,_0x4ab476);_0x34e67a(_0x4ab476);});});}
\ No newline at end of file
index fd7168c..8a7f316 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86eb=['removeListener','register','chatGroup:','save','emit'];(function(_0x5e3b04,_0xbb6795){var _0x1fc44d=function(_0x3472a1){while(--_0x3472a1){_0x5e3b04['push'](_0x5e3b04['shift']());}};_0x1fc44d(++_0xbb6795);}(_0x86eb,0x6c));var _0xb86e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x86eb[_0x321bb2];return _0x9c12ed;};'use strict';var ChatGroupEvents=require('./chatGroup.events');var events=[_0xb86e('0x0'),'remove','update'];function createListener(_0x1fc1a6,_0x5698b3){return function(_0x467304){_0x5698b3[_0xb86e('0x1')](_0x1fc1a6,_0x467304);};}function removeListener(_0x4e6eab,_0xba80af){return function(){ChatGroupEvents[_0xb86e('0x2')](_0x4e6eab,_0xba80af);};}exports[_0xb86e('0x3')]=function(_0x557741){for(var _0x7d7b2c=0x0,_0xe6fbcf=events['length'];_0x7d7b2c<_0xe6fbcf;_0x7d7b2c++){var _0x39599d=events[_0x7d7b2c];var _0x5a7b23=createListener(_0xb86e('0x4')+_0x39599d,_0x557741);ChatGroupEvents['on'](_0x39599d,_0x5a7b23);}};
\ No newline at end of file
+var _0x9f31=['update','emit','removeListener','register','length','./chatGroup.events','save','remove'];(function(_0x254d01,_0x418207){var _0x19c9c7=function(_0x254df5){while(--_0x254df5){_0x254d01['push'](_0x254d01['shift']());}};_0x19c9c7(++_0x418207);}(_0x9f31,0x195));var _0x19f3=function(_0x4c2f30,_0xa91340){_0x4c2f30=_0x4c2f30-0x0;var _0xb8854d=_0x9f31[_0x4c2f30];return _0xb8854d;};'use strict';var ChatGroupEvents=require(_0x19f3('0x0'));var events=[_0x19f3('0x1'),_0x19f3('0x2'),_0x19f3('0x3')];function createListener(_0x53c1dc,_0x359bf6){return function(_0x4fa0f4){_0x359bf6[_0x19f3('0x4')](_0x53c1dc,_0x4fa0f4);};}function removeListener(_0x276f37,_0x5036c0){return function(){ChatGroupEvents[_0x19f3('0x5')](_0x276f37,_0x5036c0);};}exports[_0x19f3('0x6')]=function(_0x2e00e5){for(var _0x406595=0x0,_0x367aeb=events[_0x19f3('0x7')];_0x406595<_0x367aeb;_0x406595++){var _0x53f44f=events[_0x406595];var _0x433cf9=createListener('chatGroup:'+_0x53f44f,_0x2e00e5);ChatGroupEvents['on'](_0x53f44f,_0x433cf9);}};
\ No newline at end of file
index 2543ba2..e773f6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa133=['/:id/messages','getMessages','post','addMembers','addMessage','update','destroy','removeMembers','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','describe','/:id','/:id/unread','/:id/members'];(function(_0x306b6a,_0x23de14){var _0x326f02=function(_0x33d5b7){while(--_0x33d5b7){_0x306b6a['push'](_0x306b6a['shift']());}};_0x326f02(++_0x23de14);}(_0xa133,0xa5));var _0x3a13=function(_0x264545,_0x214037){_0x264545=_0x264545-0x0;var _0x114d10=_0xa133[_0x264545];return _0x114d10;};'use strict';var multer=require(_0x3a13('0x0'));var util=require(_0x3a13('0x1'));var path=require(_0x3a13('0x2'));var timeout=require(_0x3a13('0x3'));var express=require(_0x3a13('0x4'));var router=express[_0x3a13('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x3a13('0x6'));var interaction=require(_0x3a13('0x7'));var config=require(_0x3a13('0x8'));var controller=require(_0x3a13('0x9'));router[_0x3a13('0xa')]('/',auth[_0x3a13('0xb')](),controller[_0x3a13('0xc')]);router['get']('/describe',auth[_0x3a13('0xb')](),controller[_0x3a13('0xd')]);router[_0x3a13('0xa')](_0x3a13('0xe'),auth[_0x3a13('0xb')](),controller['show']);router['get'](_0x3a13('0xf'),auth[_0x3a13('0xb')](),controller['getUnread']);router[_0x3a13('0xa')](_0x3a13('0x10'),auth[_0x3a13('0xb')](),controller['getMembers']);router['get'](_0x3a13('0x11'),auth[_0x3a13('0xb')](),controller[_0x3a13('0x12')]);router[_0x3a13('0x13')]('/',auth[_0x3a13('0xb')](),controller['create']);router[_0x3a13('0x13')](_0x3a13('0x10'),auth[_0x3a13('0xb')](),controller[_0x3a13('0x14')]);router[_0x3a13('0x13')]('/:id/messages',auth[_0x3a13('0xb')](),controller[_0x3a13('0x15')]);router['put']('/:id',auth[_0x3a13('0xb')](),controller[_0x3a13('0x16')]);router['delete'](_0x3a13('0xe'),auth[_0x3a13('0xb')](),controller[_0x3a13('0x17')]);router['delete'](_0x3a13('0x10'),auth[_0x3a13('0xb')](),controller[_0x3a13('0x18')]);module[_0x3a13('0x19')]=router;
\ No newline at end of file
+var _0x5724=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatGroup.controller','isAuthenticated','index','/describe','describe','show','get','/:id/unread','/:id/members','getMembers','/:id/messages','post','create','addMembers','addMessage','put','update','delete','destroy','removeMembers','multer','util','path','express'];(function(_0x54cd25,_0x462584){var _0x5068a8=function(_0x31fa2e){while(--_0x31fa2e){_0x54cd25['push'](_0x54cd25['shift']());}};_0x5068a8(++_0x462584);}(_0x5724,0x6c));var _0x4572=function(_0x59972e,_0x2748ee){_0x59972e=_0x59972e-0x0;var _0x19094f=_0x5724[_0x59972e];return _0x19094f;};'use strict';var multer=require(_0x4572('0x0'));var util=require(_0x4572('0x1'));var path=require(_0x4572('0x2'));var timeout=require('connect-timeout');var express=require(_0x4572('0x3'));var router=express[_0x4572('0x4')]();var fs_extra=require(_0x4572('0x5'));var auth=require(_0x4572('0x6'));var interaction=require(_0x4572('0x7'));var config=require('../../config/environment');var controller=require(_0x4572('0x8'));router['get']('/',auth[_0x4572('0x9')](),controller[_0x4572('0xa')]);router['get'](_0x4572('0xb'),auth[_0x4572('0x9')](),controller[_0x4572('0xc')]);router['get']('/:id',auth[_0x4572('0x9')](),controller[_0x4572('0xd')]);router[_0x4572('0xe')](_0x4572('0xf'),auth['isAuthenticated'](),controller['getUnread']);router['get'](_0x4572('0x10'),auth[_0x4572('0x9')](),controller[_0x4572('0x11')]);router[_0x4572('0xe')](_0x4572('0x12'),auth[_0x4572('0x9')](),controller['getMessages']);router[_0x4572('0x13')]('/',auth[_0x4572('0x9')](),controller[_0x4572('0x14')]);router[_0x4572('0x13')](_0x4572('0x10'),auth[_0x4572('0x9')](),controller[_0x4572('0x15')]);router[_0x4572('0x13')](_0x4572('0x12'),auth[_0x4572('0x9')](),controller[_0x4572('0x16')]);router[_0x4572('0x17')]('/:id',auth['isAuthenticated'](),controller[_0x4572('0x18')]);router[_0x4572('0x19')]('/:id',auth['isAuthenticated'](),controller[_0x4572('0x1a')]);router['delete'](_0x4572('0x10'),auth[_0x4572('0x9')](),controller[_0x4572('0x1b')]);module['exports']=router;
\ No newline at end of file
index bdeb16c..bf69ce4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb677=['DATE','STRING','sequelize','BOOLEAN','INTEGER','ENUM','star','thumb','TEXT'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xb677,0x119));var _0x7b67=function(_0x1f13eb,_0x1de2aa){_0x1f13eb=_0x1f13eb-0x0;var _0xaa1331=_0xb677[_0x1f13eb];return _0xaa1331;};'use strict';var Sequelize=require(_0x7b67('0x0'));module['exports']={'closed':{'type':Sequelize[_0x7b67('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x7b67('0x2')]},'ratingType':{'type':Sequelize[_0x7b67('0x3')](_0x7b67('0x4'),_0x7b67('0x5')),'defaultValue':_0x7b67('0x4')},'ratingMessage':{'type':Sequelize[_0x7b67('0x6')]},'pathTranscript':{'type':Sequelize[_0x7b67('0x6')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x7b67('0x7')]},'disposition':{'type':Sequelize[_0x7b67('0x8')]},'secondDisposition':{'type':Sequelize[_0x7b67('0x8')]},'thirdDisposition':{'type':Sequelize[_0x7b67('0x8')]},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0x7b67('0x8')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x7b67('0x8')]},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize[_0x7b67('0x8')]},'referer':{'type':Sequelize[_0x7b67('0x6')]},'customerIp':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0x7b67('0x6')]('long')},'read1stAt':{'type':Sequelize[_0x7b67('0x7')]},'lastMsgAt':{'type':Sequelize[_0x7b67('0x7')]},'lastMsgDirection':{'type':Sequelize[_0x7b67('0x3')]('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize['STRING']},'vidaooSessionId':{'type':Sequelize[_0x7b67('0x6')]},'autoreplyExecuted':{'type':Sequelize[_0x7b67('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0c1a=['exports','BOOLEAN','star','TEXT','STRING','DATE','out','sequelize'];(function(_0x37d5d0,_0x4e775d){var _0x5bd43c=function(_0x1efd46){while(--_0x1efd46){_0x37d5d0['push'](_0x37d5d0['shift']());}};_0x5bd43c(++_0x4e775d);}(_0x0c1a,0x127));var _0xa0c1=function(_0x42144f,_0x2edc4f){_0x42144f=_0x42144f-0x0;var _0x36930f=_0x0c1a[_0x42144f];return _0x36930f;};'use strict';var Sequelize=require(_0xa0c1('0x0'));module[_0xa0c1('0x1')]={'closed':{'type':Sequelize[_0xa0c1('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize['ENUM'](_0xa0c1('0x3'),'thumb'),'defaultValue':_0xa0c1('0x3')},'ratingMessage':{'type':Sequelize[_0xa0c1('0x4')]},'pathTranscript':{'type':Sequelize[_0xa0c1('0x4')]},'mailTranscript':{'type':Sequelize[_0xa0c1('0x5')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xa0c1('0x6')]},'disposition':{'type':Sequelize[_0xa0c1('0x5')]},'secondDisposition':{'type':Sequelize[_0xa0c1('0x5')]},'thirdDisposition':{'type':Sequelize[_0xa0c1('0x5')]},'note':{'type':Sequelize[_0xa0c1('0x5')]},'browserName':{'type':Sequelize[_0xa0c1('0x5')]},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0xa0c1('0x5')]},'osVersion':{'type':Sequelize[_0xa0c1('0x5')]},'deviceModel':{'type':Sequelize[_0xa0c1('0x5')]},'deviceVendor':{'type':Sequelize[_0xa0c1('0x5')]},'deviceType':{'type':Sequelize[_0xa0c1('0x5')]},'referer':{'type':Sequelize[_0xa0c1('0x4')]},'customerIp':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0xa0c1('0x4')]('long')},'read1stAt':{'type':Sequelize[_0xa0c1('0x6')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xa0c1('0x7')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0xa0c1('0x5')]},'customerPort':{'type':Sequelize[_0xa0c1('0x5')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0xa0c1('0x2')],'defaultValue':![]}};
\ No newline at end of file
index dd70551..dd647f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x896e=['group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','agent','getChatWebsites','isEmpty','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','keyBy','Account.key','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','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','ChatInteractionId','all','show','params','rawAttributes','include','options','create','update','destroy','describe','createVidaooSession','findOne','ChatWebsite','vidaooTopic','vidaooNote','vidaooMetadata','vidaooApiKey','vidaooEscalation','email','https://api-vidaoo.xcally.com/api/v1/meetings','follow','metadata','ValidationError','join_url','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','entity\x20not\x20found','closed','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','mimetype','Attachment','Unauthorized','ChatOfflineMessageId','join','root','offline-chat/','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','pathTranscript','Messages','%s%d','System','Visitor','website_alias','agentAlias','agent_alias','alias','agent_fullname','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','appendFileSync','MailAccount','Smtp','service','host','port','secure','authentication','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','omit','ids','getMessages','hasOwnProperty','YYYY-MM-DD\x20HH:mm:ss','rows','getMyMessages','secret','includeAgent','includeAll','findAll','addTags','setTags','spread','Tag','chatInteractionTags:save','removeTags','download','server','files','attachments','transcript-%d-%s.zip','firstName','Account','Owner','get','mkdirSync','Chat','closedAt','disposition','osName','referer','customerIp','customerPort','N.A.','tail','existsSync','createReadStream','createWriteStream','out','lastName','renderFile','views','transcript-','.pdf','createPdfFromHTML','log','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./chatInteraction.socket','register','http','client','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','reject','save','name','render','merge','body','contact','account','fullname','TagIds','Tags','split','forEach','push','catch','map','ChatInteraction','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','limit','order','sort','where','pick','field','color','from','select','u.id','u.fullname','ui.ChatInteractionId','user_has_chat_interactions','left_join','u.id\x20=\x20ui.UserId','chat_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','a.id\x20=\x20i.ChatWebsiteId','chat_messages','it.ChatInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','conditions','find','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)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','some','compact','ChatWebsiteId','i.ChatWebsiteId\x20IN\x20?','concat','parse','$gte','$lte','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?'];(function(_0x25f0fb,_0x54ce66){var _0x1e0b0b=function(_0x1d3893){while(--_0x1d3893){_0x25f0fb['push'](_0x25f0fb['shift']());}};_0x1e0b0b(++_0x54ce66);}(_0x896e,0x1e9));var _0xe896=function(_0x2df502,_0x395679){_0x2df502=_0x2df502-0x0;var _0x3c233d=_0x896e[_0x2df502];return _0x3c233d;};'use strict';var emlformat=require(_0xe896('0x0'));var rimraf=require(_0xe896('0x1'));var zipdir=require(_0xe896('0x2'));var jsonpatch=require(_0xe896('0x3'));var rp=require(_0xe896('0x4'));var moment=require(_0xe896('0x5'));var BPromise=require(_0xe896('0x6'));var Mustache=require(_0xe896('0x7'));var util=require(_0xe896('0x8'));var path=require(_0xe896('0x9'));var sox=require(_0xe896('0xa'));var csv=require(_0xe896('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe896('0xc'));var _=require(_0xe896('0xd'));var squel=require(_0xe896('0xe'));var crypto=require(_0xe896('0xf'));var jsforce=require(_0xe896('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xe896('0xb'));var querystring=require(_0xe896('0x11'));var Papa=require(_0xe896('0x12'));var Redis=require('ioredis');var authService=require(_0xe896('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xe896('0x14'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0xe896('0x15'));var logger=require(_0xe896('0x16'))(_0xe896('0x17'));var utils=require('../../config/utils');var config=require(_0xe896('0x18'));var licenseUtil=require(_0xe896('0x19'));var db=require(_0xe896('0x1a'))['db'];config['redis']=_[_0xe896('0x1b')](config[_0xe896('0x1c')],{'host':_0xe896('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe896('0x1c')]));require(_0xe896('0x1e'))[_0xe896('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0xe896('0x20')]({'port':0x232b});var client9004=jayson[_0xe896('0x21')]['http']({'port':0x232c});function respondWithRpcPromise(_0x5e78d6,_0x11f41c,_0x16e272,_0x57f04b){return new BPromise(function(_0x50d224,_0x4e062a){var _0x41cbd7=_0x57f04b||client;return _0x41cbd7[_0xe896('0x22')](_0x5e78d6,_0x16e272)[_0xe896('0x23')](function(_0x5dc89d){logger[_0xe896('0x24')](_0xe896('0x25'),_0x11f41c,_0xe896('0x26'));logger[_0xe896('0x27')](_0xe896('0x28'),_0x11f41c,_0xe896('0x26'),JSON[_0xe896('0x29')](_0x5dc89d));if(_0x5dc89d[_0xe896('0x2a')]){if(_0x5dc89d['error'][_0xe896('0x2b')]===0x1f4){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x11f41c,_0x5dc89d[_0xe896('0x2a')][_0xe896('0x2c')]);return _0x4e062a(_0x5dc89d[_0xe896('0x2a')][_0xe896('0x2c')]);}logger['error'](_0xe896('0x25'),_0x11f41c,_0x5dc89d['error']['message']);return _0x50d224(_0x5dc89d[_0xe896('0x2a')][_0xe896('0x2c')]);}else{logger[_0xe896('0x24')](_0xe896('0x25'),_0x11f41c,_0xe896('0x26'));_0x50d224(_0x5dc89d[_0xe896('0x2d')][_0xe896('0x2c')]);}})['catch'](function(_0x390128){logger[_0xe896('0x2a')](_0xe896('0x25'),_0x11f41c,_0x390128);_0x4e062a(_0x390128);});});}function respondWithStatusCode(_0x569d5f,_0x26635e){_0x26635e=_0x26635e||0xcc;return function(_0xd50fe2){if(_0xd50fe2){return _0x569d5f[_0xe896('0x2e')](_0x26635e);}return _0x569d5f[_0xe896('0x2f')](_0x26635e)[_0xe896('0x30')]();};}function respondWithResult(_0x3f8ceb,_0x498341){_0x498341=_0x498341||0xc8;return function(_0x10adad){if(_0x10adad){return _0x3f8ceb[_0xe896('0x2f')](_0x498341)[_0xe896('0x31')](_0x10adad);}};}function respondWithFilteredResult(_0xbfb15b,_0xace03f){return function(_0x5e0d9b){if(_0x5e0d9b){var _0x47c268=typeof _0xace03f['offset']==='undefined'&&typeof _0xace03f['limit']===_0xe896('0x32');var _0x29a18e=_0x5e0d9b[_0xe896('0x33')];var _0x76c781=_0x47c268?0x0:_0xace03f[_0xe896('0x34')];var _0x1a6090=_0x47c268?_0x5e0d9b[_0xe896('0x33')]:_0xace03f[_0xe896('0x34')]+_0xace03f['limit'];var _0x4ce052;if(_0x1a6090>=_0x29a18e){_0x1a6090=_0x29a18e;_0x4ce052=0xc8;}else{_0x4ce052=0xce;}_0xbfb15b[_0xe896('0x2f')](_0x4ce052);return _0xbfb15b[_0xe896('0x35')](_0xe896('0x36'),_0x76c781+'-'+_0x1a6090+'/'+_0x29a18e)[_0xe896('0x31')](_0x5e0d9b);}return null;};}function patchUpdates(_0x4ddeb6){return function(_0x14ad7a){try{jsonpatch['apply'](_0x14ad7a,_0x4ddeb6,!![]);}catch(_0x57c6e8){return BPromise[_0xe896('0x37')](_0x57c6e8);}return _0x14ad7a[_0xe896('0x38')]();};}function saveUpdates(_0x266c0e,_0x4a1115){return function(_0x4d8092){if(_0x4d8092){return _0x4d8092['update'](_0x266c0e)[_0xe896('0x23')](function(_0x1493b8){return _0x1493b8;});}return null;};}function removeEntity(_0x10fa64,_0x13e8fa){return function(_0x36d2d7){if(_0x36d2d7){return _0x36d2d7['destroy']()[_0xe896('0x23')](function(){_0x10fa64[_0xe896('0x2f')](0xcc)[_0xe896('0x30')]();});}};}function handleEntityNotFound(_0x28e09c,_0x1366d0){return function(_0x2cce09){if(!_0x2cce09){_0x28e09c[_0xe896('0x2e')](0x194);}return _0x2cce09;};}function handleError(_0x3e28f0,_0x5ea3ce){_0x5ea3ce=_0x5ea3ce||0x1f4;return function(_0x42f3fb){logger[_0xe896('0x2a')](_0x42f3fb['stack']);if(_0x42f3fb[_0xe896('0x39')]){delete _0x42f3fb['name'];}_0x3e28f0[_0xe896('0x2f')](_0x5ea3ce)['send'](_0x42f3fb);};}function getMustacheRender(_0x42f445,_0x5ba71e){return Mustache[_0xe896('0x3a')](_0x42f445,_[_0xe896('0x3b')](_0x5ba71e[_0xe896('0x3c')],{'contact':_0x5ba71e[_0xe896('0x3d')],'message':_0x5ba71e[_0xe896('0x2c')],'agent':_0x5ba71e['agent'],'interaction':_0x5ba71e['interaction'],'account':_0x5ba71e[_0xe896('0x3e')]}))||'';}function getInteractionUsers(_0x2ea387,_0x387cc6){return new BPromise(function(_0x15b6c5,_0x2ff489){try{if(_0x387cc6[_0x2ea387['id']]){_0x2ea387['Users']=_['map'](_0x387cc6[_0x2ea387['id']],function(_0x127a6f){return{'id':_0x127a6f['id'],'fullname':_0x127a6f[_0xe896('0x3f')]};});}}catch(_0x5890b1){_0x2ff489(_0x5890b1);}_0x15b6c5(_0x2ea387);});}function getInteractionTags(_0x57e194,_0x19d2fd){return new BPromise(function(_0x3b1de8,_0x911adb){try{if(_0x57e194[_0xe896('0x40')]){_0x57e194[_0xe896('0x41')]=[];_0x57e194[_0xe896('0x40')][_0xe896('0x42')](',')[_0xe896('0x43')](function(_0x372c71){_0x57e194[_0xe896('0x41')][_0xe896('0x44')](_0x19d2fd[_0x372c71]);});}delete _0x57e194[_0xe896('0x40')];}catch(_0x5c00c6){_0x911adb(_0x5c00c6);}_0x3b1de8(_0x57e194);});}function updateChatInteraction(_0x1e5434,_0x143ad4,_0x59b97f){return new BPromise(function(_0x57366b,_0x5cd5a3){return getInteractionUsers(_0x1e5434,_0x59b97f)[_0xe896('0x23')](function(_0x2a354f){return getInteractionTags(_0x2a354f,_0x143ad4);})[_0xe896('0x23')](function(_0x5d1a19){_0x57366b(_0x5d1a19);})[_0xe896('0x45')](function(_0x22189c){_0x5cd5a3(_0x22189c);});});}exports['index']=function(_0x4c05ce,_0x489254){var _0x22c628={},_0x2b0273={},_0x16927a={'count':0x0,'rows':[]};var _0x402aef=_[_0xe896('0x46')](db[_0xe896('0x47')]['rawAttributes'],function(_0x125fbc){return{'name':_0x125fbc[_0xe896('0x48')],'type':_0x125fbc['type'][_0xe896('0x49')]};});_0x2b0273[_0xe896('0x4a')]=_[_0xe896('0x46')](_0x402aef,_0xe896('0x39'));_0x2b0273['query']=_[_0xe896('0x4b')](_0x4c05ce[_0xe896('0x4c')]);_0x2b0273[_0xe896('0x4d')]=_[_0xe896('0x4e')](_0x2b0273[_0xe896('0x4a')],_0x2b0273[_0xe896('0x4c')]);_0x22c628['attributes']=_[_0xe896('0x4e')](_0x2b0273['model'],qs[_0xe896('0x4f')](_0x4c05ce[_0xe896('0x4c')][_0xe896('0x4f')]));_0x22c628[_0xe896('0x50')]=_0x22c628[_0xe896('0x50')][_0xe896('0x51')]?_0x22c628['attributes']:_0x2b0273[_0xe896('0x4a')];if(!_0x4c05ce[_0xe896('0x4c')]['hasOwnProperty'](_0xe896('0x52'))){_0x22c628[_0xe896('0x53')]=qs['limit'](_0x4c05ce[_0xe896('0x4c')]['limit']);_0x22c628[_0xe896('0x34')]=qs[_0xe896('0x34')](_0x4c05ce[_0xe896('0x4c')][_0xe896('0x34')]);}_0x22c628[_0xe896('0x54')]=qs['sort'](_0x4c05ce[_0xe896('0x4c')][_0xe896('0x55')]);_0x22c628[_0xe896('0x56')]=qs['filters'](_[_0xe896('0x57')](_0x4c05ce['query'],_0x2b0273['filters']),_0x402aef);var _0x388375=[];var _0x20fe4f=squel['select']()[_0xe896('0x58')]('id')[_0xe896('0x58')]('name')['field'](_0xe896('0x59'))[_0xe896('0x5a')]('tools_tags');var _0x1d18f6=squel[_0xe896('0x5b')]()[_0xe896('0x58')](_0xe896('0x5c'))[_0xe896('0x58')](_0xe896('0x5d'))[_0xe896('0x58')](_0xe896('0x5e'))[_0xe896('0x5a')](_0xe896('0x5f'),'ui')[_0xe896('0x60')]('users','u',_0xe896('0x61'));var _0x2a23a2=squel[_0xe896('0x5b')]()[_0xe896('0x5a')](_0xe896('0x62'),'i')[_0xe896('0x60')](_0xe896('0x63'),'c',_0xe896('0x64'))[_0xe896('0x60')](_0xe896('0x65'),'o',_0xe896('0x66'))[_0xe896('0x60')]('chat_websites','a',_0xe896('0x67'))[_0xe896('0x60')](_0xe896('0x68'),'me','me.ChatInteractionId\x20=\x20i.id')['left_join']('chat_interaction_has_tags','it',_0xe896('0x69'))[_0xe896('0x60')](_0xe896('0x6a'),'t',_0xe896('0x6b'));var _0x50c910=squel[_0xe896('0x6c')]();var _0x28396c=[];var _0x57ed84=squel[_0xe896('0x6c')]();var _0x5d6c1c;if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x6d')]){_0x5d6c1c=as['parseSearch'](_0x4c05ce[_0xe896('0x4c')][_0xe896('0x6d')]);var _0x568d89=_0x5d6c1c['sqlOperator'];for(var _0x2a5e68=0x0;_0x2a5e68<_0x5d6c1c[_0xe896('0x6e')][_0xe896('0x51')];_0x2a5e68++){var _0x11291a=_0x5d6c1c[_0xe896('0x6e')][_0x2a5e68];var _0x4e4092='i';var _0xdadb92=_[_0xe896('0x6f')](_0x402aef,[_0xe896('0x39'),_0x11291a[_0xe896('0x58')]]);if(!_0xdadb92){switch(_0x11291a['field']){case'unreadMessages':if(_0x11291a[_0xe896('0x70')]==0x1){_0x2a23a2[_0xe896('0x71')]('`'+_0x11291a['field']+_0xe896('0x72'));}else{_0x2a23a2['having']('`'+_0x11291a[_0xe896('0x58')]+_0xe896('0x73'));}break;case _0xe896('0x74'):if(_0x11291a[_0xe896('0x75')]===_0xe896('0x76')){if(_0x11291a[_0xe896('0x70')][_0xe896('0x42')]('\x20')[_0xe896('0x51')]>0x1){_0x50c910[_0x568d89](_0xe896('0x77'),qs[_0xe896('0x78')](_0x11291a[_0xe896('0x70')]),null);}else{var _0x3248e6='%'+_0x11291a[_0xe896('0x70')]+'%';_0x50c910[_0x568d89](_0xe896('0x79'),_0x3248e6,_0x3248e6,_0x3248e6);}}else{_0xdadb92=_[_0xe896('0x6f')](_0x402aef,[_0xe896('0x39'),_0xe896('0x7a')]);_0x11291a[_0xe896('0x58')]=_0xe896('0x7a');_0x1c118e=as[_0xe896('0x7b')](_0x4e4092,_0xdadb92[_0xe896('0x7c')],_0x11291a);_0x50c910[_0x568d89](_0x1c118e[_0xe896('0x7d')],_0x1c118e['value']['start'],_0x1c118e[_0xe896('0x70')][_0xe896('0x30')]);}break;case'Tag':var _0x1165ad=_0x11291a[_0xe896('0x70')][_0xe896('0x42')](',')[_0xe896('0x46')](function(_0x19781b){return Number(_0x19781b);});_0x1165ad[_0xe896('0x43')](function(_0x475459){_0x57ed84['or'](_0xe896('0x7e'),'%,'+_0x475459+',%');});_0x28396c=_[_0xe896('0x7f')](_0x28396c,_0x1165ad);break;case _0xe896('0x80'):if(_0x11291a[_0xe896('0x75')]==='$substring'){_0x50c910[_0x568d89](_0xe896('0x81'),'%'+_0x11291a[_0xe896('0x70')]+'%',null);}else{_0xdadb92=_['find'](_0x402aef,[_0xe896('0x39'),'UserId']);_0x11291a['field']=_0xe896('0x82');_0x1c118e=as[_0xe896('0x7b')](_0x4e4092,_0xdadb92['type'],_0x11291a);_0x50c910[_0x568d89](_0x1c118e['text'],_0x1c118e[_0xe896('0x70')]['start'],_0x1c118e['value'][_0xe896('0x30')]);}break;case _0xe896('0x3c'):_0x1c118e=as[_0xe896('0x7b')]('me',null,_0x11291a);_0x50c910[_0x568d89](_0x1c118e['text'],_0x1c118e[_0xe896('0x70')][_0xe896('0x83')],_0x1c118e[_0xe896('0x70')]['end']);break;}}else{var _0x1c118e=as[_0xe896('0x7b')](_0x4e4092,_0xdadb92[_0xe896('0x7c')],_0x11291a);_0x50c910[_0x568d89](_0x1c118e[_0xe896('0x7d')],_0x1c118e['value'][_0xe896('0x83')],_0x1c118e[_0xe896('0x70')][_0xe896('0x30')]);}}}else{var _0x4fcd37=_(_0x4c05ce['query'])[_0xe896('0x4b')]()[_0xe896('0x46')](function(_0x4c5091){return _[_0xe896('0x84')](_0x402aef,[_0xe896('0x39'),_0x4c5091])?_0x4c5091:undefined;})[_0xe896('0x85')]()[_0xe896('0x70')]();if(!_['isEmpty'](_0x4fcd37)){_0x4fcd37[_0xe896('0x43')](function(_0x234a3a){if(_0x234a3a===_0xe896('0x86')){_0x2a23a2[_0xe896('0x56')](_0xe896('0x87'),[][_0xe896('0x88')](_0x4c05ce['query'][_0x234a3a]));}else if(_0x234a3a==='createdAt'){var _0x48b523=JSON[_0xe896('0x89')](_0x4c05ce[_0xe896('0x4c')][_0x234a3a])[_0xe896('0x8a')];var _0x270121=JSON[_0xe896('0x89')](_0x4c05ce[_0xe896('0x4c')][_0x234a3a])[_0xe896('0x8b')];_0x2a23a2['where']('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x48b523,_0x270121);}else{if(_0x4c05ce[_0xe896('0x4c')][_0x234a3a]==='null'){_0x2a23a2[_0xe896('0x56')]('i.'+_0x234a3a+'\x20IS\x20NULL');}else{_0x2a23a2[_0xe896('0x56')]('i.'+_0x234a3a+'\x20=\x20?',_0x4c05ce[_0xe896('0x4c')][_0x234a3a]);}}});}if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x8c')]){if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x8c')]==0x1){_0x2a23a2['having'](_0xe896('0x8d'));}else{_0x2a23a2[_0xe896('0x71')](_0xe896('0x8e'));}}if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x8f')]){_0x28396c=_[_0xe896('0x90')](_0x4c05ce[_0xe896('0x4c')]['tag'])?_0x4c05ce[_0xe896('0x4c')]['tag']:new Array(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x8f')]);_0x28396c[_0xe896('0x43')](function(_0x503131){_0x57ed84['or'](_0xe896('0x7e'),'%,'+_0x503131+',%');});}if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x91')]){var _0x1913b2=_0x4c05ce[_0xe896('0x4c')][_0xe896('0x91')][_0xe896('0x92')]('\x5c','\x5c\x5c')[_0xe896('0x92')](/'/g,'\x27\x27');if(qs[_0xe896('0x93')](_0x1913b2)){_0x50c910['or'](_0xe896('0x94'),_0x1913b2+'%');}else{_0x50c910['or'](_0xe896('0x95'),qs['getFullTextValue'](_0x1913b2))['or'](_0xe896('0x96'),_0x1913b2+'%');}}}_0x2a23a2[_0xe896('0x56')](_0x50c910);_0x2a23a2[_0xe896('0x97')](_0xe896('0x98'));var _0x48885e={'type':db[_0xe896('0x99')][_0xe896('0x9a')][_0xe896('0x9b')],'raw':!![]};var _0x779db6=_0x2a23a2[_0xe896('0x9c')]();_0x779db6[_0xe896('0x58')](_0xe896('0x98'));_0x779db6[_0xe896('0x58')](_0xe896('0x9d'),_0xe896('0x9e'));if(_0x22c628[_0xe896('0x54')]){_0x22c628[_0xe896('0x54')]['forEach'](function(_0x2bd061){var _0x1d1364=_0x2bd061[0x0]===_0xe896('0x9f')?_0x2bd061[0x0]:'i.'+_0x2bd061[0x0];_0x2a23a2['order'](_0x1d1364,_0x2bd061[0x1]===_0xe896('0xa0')?![]:!![]);});}if(!_['isEmpty'](_0x28396c)){_0x2a23a2['having'](_0x57ed84);_0x779db6[_0xe896('0x56')](_0xe896('0xa1'),_0x28396c);}BPromise[_0xe896('0xa2')]()['then'](function(){if(!_0x5d6c1c){if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x86')])return;_0x779db6['where']('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x2a23a2[_0xe896('0x56')](_0xe896('0xa3'));return;}if(_0x4c05ce[_0xe896('0xa4')][_0xe896('0xa5')]!==_0xe896('0xa6'))return;return _0x4c05ce[_0xe896('0xa4')][_0xe896('0xa7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x544d2d){if(_[_0xe896('0xa8')](_0x544d2d)){_0x779db6['where']('i.ChatWebsiteId\x20IS\x20NULL');_0x2a23a2[_0xe896('0x56')](_0xe896('0xa9'));}else{_0x779db6[_0xe896('0x56')](_0xe896('0x87'),_['map'](_0x544d2d,'id'));_0x2a23a2[_0xe896('0x56')](_0xe896('0x87'),_['map'](_0x544d2d,'id'));}});})[_0xe896('0x23')](function(){if(_0x4c05ce[_0xe896('0xa4')][_0xe896('0xa5')]===_0xe896('0xa6')&&!_0x5d6c1c&&!_0x4c05ce[_0xe896('0x4c')][_0xe896('0x86')])return[];return db[_0xe896('0xaa')][_0xe896('0x4c')](_0x779db6[_0xe896('0xab')](),_0x48885e);})[_0xe896('0x23')](function(_0x16ff5e){_0x16927a[_0xe896('0x33')]=_0x16ff5e[_0xe896('0x51')];if(_0x16927a['count']===0x0)return[];return db[_0xe896('0xaa')][_0xe896('0x4c')](_0x20fe4f[_0xe896('0xab')](),_0x48885e)[_0xe896('0x23')](function(_0x229150){_0x388375=_[_0xe896('0xac')](_0x229150,'id');_0x48885e=_[_0xe896('0x3b')](_0x48885e,{'model':db[_0xe896('0x47')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4c05ce[_0xe896('0x4c')][_0xe896('0x4f')]){_0x22c628['attributes']['forEach'](function(_0x41e6c4){_0x2a23a2[_0xe896('0x58')]('i.'+_0x41e6c4);});}else{_0x2a23a2[_0xe896('0x58')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xe896('0x9e'));_0x2a23a2[_0xe896('0x58')]('a.key',_0xe896('0xad'));_0x2a23a2[_0xe896('0x58')]('a.mandatoryDisposition',_0xe896('0xae'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xaf'),_0xe896('0x9f'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xb0'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xb1'),'Contact.firstName');_0x2a23a2[_0xe896('0x58')](_0xe896('0xb2'),_0xe896('0xb3'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xb4'),'Contact.email');_0x2a23a2[_0xe896('0x58')](_0xe896('0xb5'),_0xe896('0xb6'));_0x2a23a2['field'](_0xe896('0xb7'),_0xe896('0xb8'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xb9'),_0xe896('0xba'));_0x2a23a2[_0xe896('0x58')](_0xe896('0xbb'),_0xe896('0xbc'));_0x2a23a2[_0xe896('0x58')]('o.internal',_0xe896('0xbd'));_0x2a23a2['field'](_0xe896('0xbe'),_0xe896('0x40'));}if(_0x22c628[_0xe896('0x53')])_0x2a23a2[_0xe896('0x53')](_0x22c628['limit']);if(_0x22c628[_0xe896('0x34')])_0x2a23a2[_0xe896('0x34')](_0x22c628['offset']);return db[_0xe896('0xaa')][_0xe896('0x4c')](_0x2a23a2[_0xe896('0xab')](),_0x48885e);})['then'](function(_0xadc81f){if(_0xadc81f['length']>0x0)_0x1d18f6['where'](_0xe896('0xbf'),_[_0xe896('0x46')](_0xadc81f,'id'));return db['sequelize'][_0xe896('0x4c')](_0x1d18f6[_0xe896('0xab')](),_0x48885e)['then'](function(_0x529df2){var _0x5b4e01=_['groupBy'](_0x529df2,_0xe896('0xc0'));var _0x237cae=[];_0xadc81f[_0xe896('0x43')](function(_0xc0fa84){_0x237cae[_0xe896('0x44')](updateChatInteraction(_0xc0fa84,_0x388375,_0x5b4e01));});return BPromise[_0xe896('0xc1')](_0x237cae);});});})[_0xe896('0x23')](function(_0x2dbfd3){_0x16927a['rows']=_0x2dbfd3;return _0x16927a;})[_0xe896('0x23')](respondWithFilteredResult(_0x489254,_0x22c628))[_0xe896('0x45')](handleError(_0x489254,null));};exports[_0xe896('0xc2')]=function(_0x2a1d41,_0x5a254b){var _0x4f4d26={'raw':![],'where':{'id':_0x2a1d41[_0xe896('0xc3')]['id']}},_0x2f30a9={};_0x2f30a9['model']=_['keys'](db[_0xe896('0x47')][_0xe896('0xc4')]);_0x2f30a9[_0xe896('0x4c')]=_[_0xe896('0x4b')](_0x2a1d41[_0xe896('0x4c')]);_0x2f30a9['filters']=_[_0xe896('0x4e')](_0x2f30a9[_0xe896('0x4a')],_0x2f30a9[_0xe896('0x4c')]);_0x4f4d26['attributes']=_[_0xe896('0x4e')](_0x2f30a9[_0xe896('0x4a')],qs[_0xe896('0x4f')](_0x2a1d41[_0xe896('0x4c')][_0xe896('0x4f')]));_0x4f4d26['attributes']=_0x4f4d26[_0xe896('0x50')][_0xe896('0x51')]?_0x4f4d26[_0xe896('0x50')]:_0x2f30a9['model'];if(_0x2a1d41[_0xe896('0x4c')]['includeAll']){_0x4f4d26[_0xe896('0xc5')]=[{'all':!![]}];}_0x4f4d26=_[_0xe896('0x3b')]({},_0x4f4d26,_0x2a1d41[_0xe896('0xc6')]);return db[_0xe896('0x47')][_0xe896('0x6f')](_0x4f4d26)[_0xe896('0x23')](handleEntityNotFound(_0x5a254b,null))['then'](respondWithResult(_0x5a254b,null))['catch'](handleError(_0x5a254b,null));};exports[_0xe896('0xc7')]=function(_0x54c61f,_0x15af0e){return db[_0xe896('0x47')]['create'](_0x54c61f[_0xe896('0x3c')],{})[_0xe896('0x23')](respondWithResult(_0x15af0e,0xc9))['catch'](handleError(_0x15af0e,null));};exports[_0xe896('0xc8')]=function(_0x4bcd8c,_0x326c67){if(_0x4bcd8c[_0xe896('0x3c')]['id']){delete _0x4bcd8c[_0xe896('0x3c')]['id'];}return db[_0xe896('0x47')]['find']({'where':{'id':_0x4bcd8c[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](handleEntityNotFound(_0x326c67,null))[_0xe896('0x23')](saveUpdates(_0x4bcd8c[_0xe896('0x3c')],null))[_0xe896('0x23')](respondWithResult(_0x326c67,null))[_0xe896('0x45')](handleError(_0x326c67,null));};exports[_0xe896('0xc9')]=function(_0x3c8951,_0x41b162){return db[_0xe896('0x47')][_0xe896('0x6f')]({'where':{'id':_0x3c8951[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](handleEntityNotFound(_0x41b162,null))[_0xe896('0x23')](removeEntity(_0x41b162,null))[_0xe896('0x45')](handleError(_0x41b162,null));};exports[_0xe896('0xca')]=function(_0x16b398,_0x4edeaf){return db[_0xe896('0x47')][_0xe896('0xca')]()['then'](respondWithResult(_0x4edeaf,null))['catch'](handleError(_0x4edeaf,null));};exports[_0xe896('0xcb')]=function(_0xdd4767,_0x3df01d){var _0xf6563d=_0xdd4767[_0xe896('0xc3')]['id'];var _0x21e7a2;var _0x43b9e0;var _0x46a4f0;return db['ChatInteraction'][_0xe896('0xcc')]({'where':{'id':_0xf6563d}})[_0xe896('0x23')](function(_0x2ee264){_0x21e7a2=_0x2ee264;return db[_0xe896('0xcd')]['findOne']({'where':{'id':_0x2ee264[_0xe896('0x86')]},'attributes':['id','vidaooApiKey','vidaooEscalation',_0xe896('0xce'),_0xe896('0xcf'),_0xe896('0xd0')],'raw':!![]});})[_0xe896('0x23')](function(_0x3e55b7){if(_0x3e55b7&&_0x3e55b7[_0xe896('0xd1')]&&_0x3e55b7[_0xe896('0xd2')]){_0x43b9e0=_0x3e55b7;var _0x49293e={'interaction':{'id':_0xf6563d},'agent':{'id':_0xdd4767[_0xe896('0xa4')]['id'],'name':_0xdd4767[_0xe896('0xa4')][_0xe896('0x39')],'fullname':_0xdd4767[_0xe896('0xa4')][_0xe896('0x3f')],'email':_0xdd4767[_0xe896('0xa4')][_0xe896('0xd3')]},'contact':_0xdd4767[_0xe896('0x3c')][_0xe896('0x3d')],'account':_0xdd4767['body'][_0xe896('0x3e')]};var _0x13c2fb={'rejectUnauthorized':![],'method':'POST','url':_0xe896('0xd4'),'headers':{'X-APIKEY':_0x3e55b7['vidaooApiKey']},'body':{'duration':null,'scheduledAt':null,'participants':[_0xdd4767['user'][_0xe896('0xd3')]],'buttons':null,'topic':_0x43b9e0['vidaooTopic'],'note':_['isNull'](_0x43b9e0[_0xe896('0xcf')])?null:getMustacheRender(_0x43b9e0[_0xe896('0xcf')],_0x49293e),'metadata':null},'redirect':_0xe896('0xd5'),'json':!![]};try{if(!_['isNull'](_0x43b9e0[_0xe896('0xd0')])){var _0x55be9b=getMustacheRender(_0x43b9e0[_0xe896('0xd0')],_0x49293e);var _0x1406c2=JSON['parse'](_0x55be9b);_0x13c2fb[_0xe896('0x3c')][_0xe896('0xd6')]=_0x1406c2;}}catch(_0x53cebb){throw new db[(_0xe896('0x99'))]['ValidationError']('Error\x20in\x20conversion\x20vidaooMetadata');}return rp(_0x13c2fb);}else{throw new db['Sequelize'][(_0xe896('0xd7'))]('Error\x20in\x20Vidaoo\x20configuration');}})[_0xe896('0x23')](function(_0x30c8f4){_0x46a4f0=_0x30c8f4;if(_0x46a4f0['id']){var _0x386f5a={'body':_0x46a4f0[_0xe896('0xd8')],'ChatWebsiteId':_0x43b9e0['id'],'ChatInteractionId':_0x21e7a2['id'],'direction':'out','UserId':_0xdd4767[_0xe896('0xa4')]['id']};return db[_0xe896('0xd9')][_0xe896('0xc7')](_0x386f5a,{});}else{throw new db[(_0xe896('0x99'))]['ValidationError'](_0xe896('0xda'));}})['then'](function(){return _0x21e7a2[_0xe896('0xdb')]({'vidaooSessionId':_0x46a4f0['id']});})[_0xe896('0x23')](respondWithResult(_0x3df01d,null))[_0xe896('0x45')](handleError(_0x3df01d,null));};exports[_0xe896('0xdc')]=function(_0x5a5336,_0x42ab19){if(_0x5a5336['body']['id']){delete _0x5a5336[_0xe896('0x3c')]['id'];}return db['ChatInteraction'][_0xe896('0x6f')]({'where':{'id':_0x5a5336[_0xe896('0xc3')]['id']},'include':[{'model':db[_0xe896('0xdd')],'as':'Contact'}]})[_0xe896('0x23')](handleEntityNotFound(_0x42ab19,null))['then'](saveUpdates(_0x5a5336[_0xe896('0x3c')],null))[_0xe896('0x23')](respondWithResult(_0x42ab19,null))['catch'](handleError(_0x42ab19,null));};exports[_0xe896('0xde')]=function(_0x384116,_0x5949f1,_0x432775){if(_0x384116[_0xe896('0x3c')]['id']){delete _0x384116[_0xe896('0x3c')]['id'];}return db[_0xe896('0x47')][_0xe896('0x6f')]({'where':{'id':_0x384116[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](function(_0x5da1fa){if(!_0x5da1fa){logger[_0xe896('0x2a')]('abandonInteraction,\x20%s,\x20%s,\x20%s','abandon',0x194,_0xe896('0xdf'));_0x5949f1[_0xe896('0x2e')](0x194);}else{if(_0x5da1fa['UserId']){throw new db[(_0xe896('0x99'))][(_0xe896('0xd7'))]('Interaction\x20already\x20assigned');}}return _0x5da1fa;})['then'](function(_0x24c6bc){if(_0x24c6bc){return _0x24c6bc[_0xe896('0xc8')]({'closed':_0x384116['body'][_0xe896('0xe0')],'disposition':_0x384116[_0xe896('0x3c')]['disposition']})[_0xe896('0x23')](function(_0x54219c){return _0x54219c;});}})[_0xe896('0x23')](function(_0x577d5a){return respondWithRpcPromise(_0xe896('0xe1'),_0xe896('0xde'),_0x384116['body'],client9004);})[_0xe896('0x23')](respondWithResult(_0x5949f1,null))[_0xe896('0x45')](handleError(_0x5949f1,null));};exports[_0xe896('0xe2')]=function(_0x32f30e,_0x265206,_0x90a856){_0x32f30e[_0xe896('0x3c')][_0xe896('0x39')]=_0x32f30e[_0xe896('0xe3')][_0xe896('0xe4')];_0x32f30e[_0xe896('0x3c')][_0xe896('0xe5')]=_0x32f30e[_0xe896('0xe3')][_0xe896('0xe6')];_0x32f30e['body'][_0xe896('0x7c')]=_0x32f30e['file'][_0xe896('0xe7')];return db[_0xe896('0xe8')]['create'](_0x32f30e[_0xe896('0x3c')])[_0xe896('0x23')](respondWithResult(_0x265206,0xc9))[_0xe896('0x45')](handleError(_0x265206,null));};exports['attachmentDownload']=function(_0x28deef,_0x3f32f7,_0x2b1427){return db[_0xe896('0x47')][_0xe896('0xcc')]({'where':{'id':_0x28deef[_0xe896('0xc3')]['id']},'raw':!![]})[_0xe896('0x23')](handleEntityNotFound(_0x3f32f7,null))[_0xe896('0x23')](function(_0xdd5dbf){if(_0xdd5dbf){if(_0xdd5dbf['closed']){return _0x3f32f7['status'](0x193)['json']({'status':0x193,'message':_0xe896('0xe9')});}return db['Attachment']['findOne']({'where':{'id':_0x28deef[_0xe896('0x4c')]['attachId']},'raw':!![]})['then'](handleEntityNotFound(_0x3f32f7,null));}})['then'](function(_0x348cd5){if(_0x348cd5){var _0x4a5f7f=_0x348cd5[_0xe896('0xea')]!==null;var _0x222029=path[_0xe896('0xeb')](config[_0xe896('0xec')],'server/files/attachments/');if(_0x4a5f7f){_0x222029=path[_0xe896('0xeb')](_0x222029,_0xe896('0xed'));}var _0x36c394=path[_0xe896('0xeb')](_0x222029,_0x348cd5[_0xe896('0xe5')]);return _0x3f32f7['download'](_0x36c394);}})['catch'](handleError(_0x3f32f7,null));};exports[_0xe896('0xee')]=function(_0x1a5056,_0x57aa1b){var _0x21b078=null;var _0x17edcd=null;var _0x71d912=null;var _0x22a63d=null;if(_0x1a5056[_0xe896('0x3c')]['id']){delete _0x1a5056[_0xe896('0x3c')]['id'];}if(_0x1a5056[_0xe896('0x3c')][_0xe896('0xef')]){_0x22a63d=path[_0xe896('0xeb')](config[_0xe896('0xec')],_0xe896('0xf0'),util[_0xe896('0xf1')](_0xe896('0xf2'),Date['now']()));_0x1a5056[_0xe896('0x3c')][_0xe896('0xf3')]=_0x22a63d;}return db['ChatInteraction'][_0xe896('0x6f')]({'where':{'id':_0x1a5056[_0xe896('0xc3')]['id']},'include':[{'model':db[_0xe896('0xd9')],'as':_0xe896('0xf4'),'include':[{'model':db[_0xe896('0x80')],'as':_0xe896('0x80')}]}]})[_0xe896('0x23')](handleEntityNotFound(_0x57aa1b,null))[_0xe896('0x23')](saveUpdates(_0x1a5056[_0xe896('0x3c')],null))[_0xe896('0x23')](function(_0x5487f0){if(_0x5487f0){_0x21b078=_0x5487f0;return db[_0xe896('0xcd')]['find']({'where':{'id':_0x21b078[_0xe896('0x86')]}});}})[_0xe896('0x23')](function(_0xb528ff){if(_0xb528ff){_0x71d912=_0xb528ff;return db[_0xe896('0xdd')][_0xe896('0x6f')]({'where':{'id':_0x21b078[_0xe896('0x7a')]}});}})[_0xe896('0x23')](function(_0x6e53ae){if(_0x6e53ae){_0x17edcd=_0x6e53ae;if(_0x22a63d){var _0x52337e=null;for(var _0x1d6003=0x1;_0x1d6003<_0x21b078[_0xe896('0xf4')][_0xe896('0x51')];++_0x1d6003){_0x52337e=_0x21b078[_0xe896('0xf4')][_0x1d6003];var _0x882a0e=_0x52337e[_0xe896('0x82')]?util[_0xe896('0xf1')](_0xe896('0xf5'),_0x71d912['agentAlias'],_0x52337e[_0xe896('0x82')]):_0xe896('0xf6');var _0x27743a=_0x1a5056['body']['customer']||util[_0xe896('0xf1')](_0xe896('0xf5'),_0xe896('0xf7'),_0x52337e['ContactId']);switch(_0x71d912['agentIdentifier']){case _0xe896('0xf8'):_0x882a0e=_0x52337e[_0xe896('0x82')]?util['format'](_0xe896('0xf5'),_0x71d912[_0xe896('0xf9')],_0x52337e[_0xe896('0x82')]):_0xe896('0xf6');break;case _0xe896('0xfa'):_0x882a0e=_0x52337e[_0xe896('0x82')]?_0x52337e['User'][_0xe896('0xfb')]||_0x52337e[_0xe896('0x80')]['fullname']:_0xe896('0xf6');break;case _0xe896('0xfc'):_0x882a0e=_0x52337e['UserId']?_0x52337e['User']['fullname']:'System';break;default:_0x882a0e=_0x52337e[_0xe896('0x82')]?util[_0xe896('0xf1')](_0xe896('0xf5'),_0x71d912[_0xe896('0xf9')],_0x52337e[_0xe896('0x82')]):_0xe896('0xf6');}var _0x58fcf9=util[_0xe896('0xf1')]('[%s]\x20%s:\x20%s\x0a',moment(_0x52337e[_0xe896('0xfd')])['format'](_0xe896('0xfe')),_0x52337e[_0xe896('0xff')]==='in'?_0x27743a:_0x882a0e,_0x52337e['body']);if(!_0x52337e['secret']){fs[_0xe896('0x100')](_0x22a63d,_0x58fcf9);}}return db[_0xe896('0x101')]['findOne']({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0xe896('0x102'),'raw':!![]}]});}}})[_0xe896('0x23')](function(_0xbee8fa){if(_0xbee8fa&&_0xbee8fa[_0xe896('0x102')]&&_0x1a5056[_0xe896('0x3c')]){var _0x1a50c3={'tls':{'rejectUnauthorized':![]}};if(_0xbee8fa[_0xe896('0x102')][_0xe896('0x103')]){_0x1a50c3[_0xe896('0x103')]=_0xbee8fa[_0xe896('0x102')][_0xe896('0x103')];}else{_0x1a50c3[_0xe896('0x104')]=_0xbee8fa[_0xe896('0x102')]['host'];_0x1a50c3['port']=_0xbee8fa[_0xe896('0x102')][_0xe896('0x105')];_0x1a50c3[_0xe896('0x106')]=_0xbee8fa[_0xe896('0x102')][_0xe896('0x106')];}if(_0xbee8fa[_0xe896('0x102')][_0xe896('0x107')]){_0x1a50c3[_0xe896('0x108')]={'user':_0xbee8fa[_0xe896('0x102')][_0xe896('0xa4')],'pass':_0xbee8fa[_0xe896('0x102')][_0xe896('0x109')]};}return respondWithRpcPromise(_0xe896('0x10a'),_0xe896('0x10b'),{'account':_0x1a50c3,'message':{'from':util[_0xe896('0xf1')](_0xe896('0x10c'),_0xbee8fa['name'],_0xbee8fa['email']||_0xbee8fa['Smtp'][_0xe896('0xa4')]),'to':_0x1a5056[_0xe896('0x3c')][_0xe896('0xef')],'subject':_0xe896('0x10d'),'text':util[_0xe896('0xf1')](_0xe896('0x10e'),_0x1a5056[_0xe896('0x3c')]['mailTranscript']),'attachments':[{'path':_0x22a63d}]}})['then'](function(){return _0x21b078;})[_0xe896('0x45')](function(_0x550c55){console['error'](_0x550c55);});}else{return _0x21b078;}})['then'](respondWithStatusCode(_0x57aa1b,0xc8))[_0xe896('0x45')](handleError(_0x57aa1b,null));};exports[_0xe896('0x10f')]=function(_0x14da55,_0x5656d0,_0x31ca0b){return db[_0xe896('0xd9')][_0xe896('0x6f')]({'where':{'id':_0x14da55[_0xe896('0xc3')]['id']}})['then'](handleEntityNotFound(_0x5656d0,null))['then'](function(_0x518847){if(_0x518847){return _0x518847[_0xe896('0x10f')](_0x14da55[_0xe896('0x3c')]['ids'],_[_0xe896('0x110')](_0x14da55[_0xe896('0x3c')],[_0xe896('0x111'),'id'])||{});}})[_0xe896('0x23')](respondWithResult(_0x5656d0,null))['catch'](handleError(_0x5656d0,null));};exports[_0xe896('0x112')]=function(_0xf78ce2,_0x3f8ea0,_0x254420){var _0x1196d4={'raw':![],'where':{}};var _0x1ee26e={};var _0x1bd649={'count':0x0,'rows':[]};return db[_0xe896('0x47')][_0xe896('0xcc')]({'where':{'id':_0xf78ce2[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](handleEntityNotFound(_0x3f8ea0,null))[_0xe896('0x23')](function(_0x2e5c38){if(_0x2e5c38){_0x1ee26e[_0xe896('0x4a')]=_['keys'](db[_0xe896('0xd9')]['rawAttributes']);_0x1ee26e[_0xe896('0x4c')]=_[_0xe896('0x4b')](_0xf78ce2['query']);_0x1ee26e['filters']=_[_0xe896('0x4e')](_0x1ee26e[_0xe896('0x4a')],_0x1ee26e[_0xe896('0x4c')]);_0x1196d4['attributes']=_[_0xe896('0x4e')](_0x1ee26e[_0xe896('0x4a')],qs[_0xe896('0x4f')](_0xf78ce2['query'][_0xe896('0x4f')]));_0x1196d4[_0xe896('0x50')]=_0x1196d4[_0xe896('0x50')]['length']?_0x1196d4['attributes']:_0x1ee26e[_0xe896('0x4a')];if(!_0xf78ce2['query'][_0xe896('0x113')](_0xe896('0x52'))){_0x1196d4[_0xe896('0x53')]=qs[_0xe896('0x53')](_0xf78ce2[_0xe896('0x4c')][_0xe896('0x53')]);_0x1196d4[_0xe896('0x34')]=qs['offset'](_0xf78ce2['query'][_0xe896('0x34')]);}_0x1196d4[_0xe896('0x54')]=qs['sort'](_0xf78ce2[_0xe896('0x4c')][_0xe896('0x55')]);_0x1196d4['where']=qs['filters'](_['pick'](_0xf78ce2['query'],_0x1ee26e['filters']));_0x1196d4['where'][_0xe896('0xc0')]=_0x2e5c38['id'];if(_0xf78ce2['query'][_0xe896('0x91')]){_0x1196d4[_0xe896('0x56')]=_[_0xe896('0x3b')](_0x1196d4[_0xe896('0x56')],{'$or':_['map'](_0x1196d4[_0xe896('0x50')],function(_0x646354){var _0x3d751c={};_0x3d751c[_0x646354]={'$like':'%'+_0xf78ce2['query'][_0xe896('0x91')]+'%'};return _0x3d751c;})});}if(_0xf78ce2[_0xe896('0x4c')][_0xe896('0x8a')]){var _0x42bf84=_0xf78ce2[_0xe896('0x4c')][_0xe896('0x8a')][_0xe896('0x42')](',');var _0x115450={};_0x115450[_0x42bf84[0x0]]={'$gte':moment(_0x42bf84[0x1])[_0xe896('0xf1')](_0xe896('0x114'))};_0x1196d4['where']=_[_0xe896('0x3b')](_0x1196d4[_0xe896('0x56')],_0x115450);}_0x1196d4=_[_0xe896('0x3b')]({},_0x1196d4,_0xf78ce2[_0xe896('0xc6')]);return db['ChatMessage'][_0xe896('0x33')]({'where':_0x1196d4[_0xe896('0x56')]})[_0xe896('0x23')](function(_0x3bee56){_0x1bd649[_0xe896('0x33')]=_0x3bee56;if(_0xf78ce2[_0xe896('0x4c')]['includeAll']){_0x1196d4['include']=[{'all':!![]}];}return db[_0xe896('0xd9')]['findAll'](_0x1196d4);})['then'](function(_0x1d3083){_0x1bd649[_0xe896('0x115')]=_0x1d3083;return _0x1bd649;});}})[_0xe896('0x23')](respondWithFilteredResult(_0x3f8ea0,_0x1196d4))['catch'](handleError(_0x3f8ea0,null));};exports[_0xe896('0x116')]=function(_0x4ddfde,_0xc1bdcf,_0xdea91f){var _0x5c2af6={'where':{}},_0x306757={},_0x31f4e1={'count':0x0,'rows':[]};return db[_0xe896('0x47')][_0xe896('0xcc')]({'where':{'id':_0x4ddfde['params']['id']}})[_0xe896('0x23')](handleEntityNotFound(_0xc1bdcf,null))['then'](function(_0x186b58){if(_0x186b58){_0x306757[_0xe896('0x4a')]=_[_0xe896('0x4b')](db['ChatMessage']['rawAttributes']);_0x306757[_0xe896('0x4c')]=_[_0xe896('0x4b')](_0x4ddfde[_0xe896('0x4c')]);_0x306757[_0xe896('0x4d')]=_[_0xe896('0x4e')](_0x306757[_0xe896('0x4a')],_0x306757[_0xe896('0x4c')]);_0x5c2af6[_0xe896('0x50')]=_['intersection'](_0x306757[_0xe896('0x4a')],qs[_0xe896('0x4f')](_0x4ddfde['query'][_0xe896('0x4f')]));_0x5c2af6['attributes']=_0x5c2af6['attributes'][_0xe896('0x51')]?_0x5c2af6[_0xe896('0x50')]:_0x306757[_0xe896('0x4a')];if(!_0x4ddfde[_0xe896('0x4c')][_0xe896('0x113')]('nolimit')){_0x5c2af6[_0xe896('0x53')]=qs[_0xe896('0x53')](_0x4ddfde[_0xe896('0x4c')][_0xe896('0x53')]);_0x5c2af6[_0xe896('0x34')]=qs['offset'](_0x4ddfde[_0xe896('0x4c')][_0xe896('0x34')]);}_0x5c2af6[_0xe896('0x54')]=qs[_0xe896('0x55')](_0x4ddfde['query'][_0xe896('0x55')]);_0x5c2af6[_0xe896('0x56')]=qs[_0xe896('0x4d')](_[_0xe896('0x57')](_0x4ddfde['query'],_0x306757[_0xe896('0x4d')]));_0x5c2af6[_0xe896('0x56')][_0xe896('0xc0')]=_0x186b58['id'];if(_0x4ddfde[_0xe896('0x4c')][_0xe896('0x91')]){_0x5c2af6['where']=_[_0xe896('0x3b')](_0x5c2af6[_0xe896('0x56')],{'$or':_['map'](_0x5c2af6['attributes'],function(_0x42490d){var _0x2dba2f={};_0x2dba2f[_0x42490d]={'$like':'%'+_0x4ddfde[_0xe896('0x4c')][_0xe896('0x91')]+'%'};return _0x2dba2f;})});}_0x5c2af6['where'][_0xe896('0x117')]=![];if(_0x4ddfde[_0xe896('0x4c')]['id']){_0x5c2af6[_0xe896('0x56')]['id']={'$gt':_0x4ddfde[_0xe896('0x4c')]['id']};}_0x5c2af6=_['merge']({},_0x5c2af6,_0x4ddfde['options']);return db['ChatMessage'][_0xe896('0x33')]({'where':_0x5c2af6[_0xe896('0x56')]})[_0xe896('0x23')](function(_0xabf68b){_0x31f4e1[_0xe896('0x33')]=_0xabf68b;_0x5c2af6['include']=[];if(_0x4ddfde[_0xe896('0x4c')][_0xe896('0x118')]){_0x5c2af6['include'][_0xe896('0x44')]({'model':db[_0xe896('0x80')],'as':_0xe896('0x80'),'attributes':['id','fullname',_0xe896('0xfb')]});}if(_0x4ddfde[_0xe896('0x4c')][_0xe896('0x119')]){_0x5c2af6[_0xe896('0xc5')]=[{'all':!![]}];}return db[_0xe896('0xd9')][_0xe896('0x11a')](_0x5c2af6);})['then'](function(_0xbf5fec){_0x31f4e1[_0xe896('0x115')]=_0xbf5fec;return _0x31f4e1;});}})['then'](respondWithFilteredResult(_0xc1bdcf,_0x5c2af6))[_0xe896('0x45')](handleError(_0xc1bdcf,null));};exports[_0xe896('0x11b')]=function(_0x50e9f6,_0x3f7f9b,_0x45fbfd){return db['ChatInteraction']['find']({'where':{'id':_0x50e9f6[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](handleEntityNotFound(_0x3f7f9b,null))['then'](function(_0xd7222b){if(_0xd7222b){return _0xd7222b[_0xe896('0x11c')](_0x50e9f6['body'][_0xe896('0x111')],_[_0xe896('0x110')](_0x50e9f6[_0xe896('0x3c')],[_0xe896('0x111'),'id'])||{})[_0xe896('0x11d')](function(){return db[_0xe896('0x11e')][_0xe896('0x11a')]({'attributes':['id',_0xe896('0x39'),_0xe896('0x59')],'where':{'id':_0x50e9f6[_0xe896('0x3c')]['ids']}});})[_0xe896('0x23')](function(_0x4b7dda){socket['emit'](_0xe896('0x11f'),{'id':Number(_0x50e9f6[_0xe896('0xc3')]['id']),'tags':_0x4b7dda||[]});return{'id':Number(_0x50e9f6['params']['id']),'tags':_0x4b7dda||[]};});}})['then'](respondWithResult(_0x3f7f9b,null))[_0xe896('0x45')](handleError(_0x3f7f9b,null));};exports[_0xe896('0x120')]=function(_0x40efd6,_0x513fbe,_0x17b841){return db[_0xe896('0x47')][_0xe896('0x6f')]({'where':{'id':_0x40efd6[_0xe896('0xc3')]['id']}})[_0xe896('0x23')](handleEntityNotFound(_0x513fbe,null))['then'](function(_0x704996){if(_0x704996){return _0x704996[_0xe896('0x120')](_0x40efd6[_0xe896('0x4c')]['ids']);}})[_0xe896('0x23')](respondWithStatusCode(_0x513fbe,null))[_0xe896('0x45')](handleError(_0x513fbe,null));};exports[_0xe896('0x121')]=function(_0x99a090,_0x15c4f9){var _0x4b1785=moment()['unix']()[_0xe896('0xab')]();var _0x5bc230=path[_0xe896('0xeb')](config[_0xe896('0xec')],_0xe896('0x122'),_0xe896('0x123'),'tmp');var _0x2d2654=path[_0xe896('0xeb')](config[_0xe896('0xec')],'server',_0xe896('0x123'),_0xe896('0x124'));var _0x5bbc65=path[_0xe896('0xeb')](_0x5bc230,_0x4b1785);var _0x194003=util[_0xe896('0xf1')](_0xe896('0x125'),_0x99a090[_0xe896('0xc3')]['id'],_0x4b1785);var _0x2a3489=path[_0xe896('0xeb')](_0x5bc230,_0x194003);var _0x54df80=[];_0x54df80[_0xe896('0x44')]({'model':db[_0xe896('0x80')],'as':_0xe896('0x80'),'attributes':['id',_0xe896('0x3f')],'raw':!![]});_0x54df80[_0xe896('0x44')]({'model':db[_0xe896('0xdd')],'as':_0xe896('0x74'),'attributes':['id',_0xe896('0x126'),'lastName'],'raw':!![]});if(_0x99a090[_0xe896('0x4c')][_0xe896('0x124')]){_0x54df80[_0xe896('0x44')]({'model':db['Attachment'],'as':_0xe896('0xe8'),'raw':!![]});}var _0x2279c9=[{'model':db[_0xe896('0xd9')],'as':_0xe896('0xf4'),'attributes':['id','body',_0xe896('0xfd'),_0xe896('0xff'),_0xe896('0x117'),_0xe896('0x8c')],'include':_0x54df80}];_0x2279c9[_0xe896('0x44')]({'model':db[_0xe896('0xcd')],'as':_0xe896('0x127'),'attributes':['id',_0xe896('0x39')]});_0x2279c9[_0xe896('0x44')]({'model':db[_0xe896('0x80')],'as':_0xe896('0x128'),'attributes':['id',_0xe896('0x3f')]});return db[_0xe896('0x47')][_0xe896('0x6f')]({'where':{'id':_0x99a090[_0xe896('0xc3')]['id']},'include':_0x2279c9})['then'](handleEntityNotFound(_0x15c4f9,null))['then'](function(_0x5cd4ff){if(_0x5cd4ff){var _0x81d8be=_0x5cd4ff[_0xe896('0x129')]({'plain':!![]});fs[_0xe896('0x12a')](_0x5bbc65);var _0x132625={'channel':_0xe896('0x12b'),'account':_0x81d8be[_0xe896('0x127')][_0xe896('0x39')],'agent':_0x81d8be[_0xe896('0x128')]?_0x81d8be[_0xe896('0x128')][_0xe896('0x3f')]:'N.A.','createdAt':moment(_0x81d8be[_0xe896('0xfd')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xe896('0xab')](),'closedAt':_0x81d8be[_0xe896('0xe0')]?moment(_0x81d8be[_0xe896('0x12c')])[_0xe896('0xf1')]('YYYY-MM-DD\x20HH:mm:ss')[_0xe896('0xab')]():'','disposition':_0x81d8be[_0xe896('0x12d')],'chatInfo':{'browser':_0x81d8be['browserName'],'os':_0x81d8be[_0xe896('0x12e')],'referer':_0x81d8be[_0xe896('0x12f')],'customerIp':_0x81d8be[_0xe896('0x130')],'customerPort':_0x81d8be[_0xe896('0x131')]?_0x81d8be['customerPort']:_0xe896('0x132')},'messages':_(_0x81d8be['Messages'])[_0xe896('0x133')]()[_0xe896('0x91')]({'secret':![]})[_0xe896('0x46')](function(_0x374e2f){if(_0x374e2f[_0xe896('0xe8')]){var _0x328e2b=path['join'](_0x2d2654,_0x374e2f[_0xe896('0xe8')][_0xe896('0xe5')]);if(fs[_0xe896('0x134')](_0x328e2b)){fs[_0xe896('0x135')](_0x328e2b)['pipe'](fs[_0xe896('0x136')](path[_0xe896('0xeb')](_0x5bbc65,_0x374e2f[_0xe896('0xe8')][_0xe896('0xe5')])));}}return{'date':moment(_0x374e2f['createdAt'])[_0xe896('0xf1')](_0xe896('0x114'))[_0xe896('0xab')](),'sender':_0x374e2f[_0xe896('0xff')]===_0xe896('0x137')?_0x374e2f[_0xe896('0x80')]?_0x374e2f[_0xe896('0x80')][_0xe896('0x3f')]:'System':_0x374e2f['Contact'][_0xe896('0x126')]+(_0x374e2f[_0xe896('0x74')][_0xe896('0x138')]?'\x20'+_0x374e2f[_0xe896('0x74')]['lastName']:''),'body':_0x374e2f[_0xe896('0xe8')]?_0x374e2f[_0xe896('0xe8')][_0xe896('0xe5')]:_0x374e2f[_0xe896('0x3c')],'direction':_0x374e2f[_0xe896('0xff')]===_0xe896('0x137')?'A':'C','secret':_0x374e2f[_0xe896('0x117')],'read':_0x374e2f['read'],'attachment':_0x374e2f[_0xe896('0xe8')]};})[_0xe896('0x70')]()};return ejs[_0xe896('0x139')](path[_0xe896('0xeb')](config[_0xe896('0xec')],'server',_0xe896('0x13a'),'downloadInteraction.ejs'),{'interaction':_0x132625})[_0xe896('0x23')](function(_0x50d56b){var _0x5d05a4=path[_0xe896('0xeb')](_0x5bbc65,_0xe896('0x13b')+_0x81d8be['id']+'-'+_0x4b1785+_0xe896('0x13c'));var _0x9223f={'path':_0x5d05a4,'channel':_0xe896('0x12b'),'interactionId':_0x81d8be['id']};return pdf[_0xe896('0x13d')](_0x50d56b,_0x9223f);})[_0xe896('0x23')](function(){return new BPromise(function(_0x399827,_0x2a2fa5){zipdir(_0x5bbc65,{'saveTo':_0x2a3489},function(_0x21d235,_0x3d7f5f){if(_0x21d235)return _0x2a2fa5(_0x21d235);return _0x399827(_0x3d7f5f);});})[_0xe896('0x23')](function(){return new BPromise(function(_0x313eb0,_0x54a741){rimraf(_0x5bbc65,function(_0x3edee9){if(_0x3edee9)_0x54a741(_0x3edee9);return _0x313eb0();});});})[_0xe896('0x23')](function(){return _0x15c4f9['download'](_0x2a3489,_0x194003,function(_0x42163c){if(_0x42163c){console[_0xe896('0x13e')]('err',_0x42163c);}else{fs[_0xe896('0x13f')](_0x2a3489);}});});});}else{return _0x15c4f9[_0xe896('0x2e')](0xc8);}})[_0xe896('0x45')](handleError(_0x15c4f9,null));};
\ No newline at end of file
+var _0xea28=['fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','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','redis','defaults','localhost','./chatInteraction.socket','register','jayson/promise','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','message','catch','status','end','json','offset','undefined','limit','count','Content-Range','apply','update','destroy','sendStatus','stack','name','merge','contact','agent','interaction','account','Users','map','TagIds','Tags','split','forEach','index','ChatInteraction','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','u.id','ui.ChatInteractionId','from','user_has_chat_interactions','users','u.id\x20=\x20ui.UserId','chat_interactions','left_join','cm_contacts','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId','chat_messages','me.ChatInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','search','parseSearch','conditions','find','unreadMessages','having','`\x20=\x200','Contact','$substring','value','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','Tag','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','compact','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','isNumeric','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)','contactName','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','role','user','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','keyBy','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','Contact.lastName','Contact.email','Contact.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','push','all','params','includeAll','options','create','body','describe','createVidaooSession','findOne','ChatWebsite','ChatWebsiteId','vidaooApiKey','vidaooEscalation','vidaooNote','vidaooMetadata','POST','https://api-vidaoo.xcally.com/api/v1/meetings','email','isNull','follow','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','join_url','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','entity\x20not\x20found','Interaction\x20already\x20assigned','disposition','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','mimetype','attachmentDownload','closed','Unauthorized','Attachment','attachId','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','download','close','mailTranscript','server/files/chat/upload/','now','pathTranscript','%s%d','agentAlias','System','customer','format','Visitor','agentIdentifier','website_alias','agent_alias','alias','agent_fullname','fullname','[%s]\x20%s:\x20%s\x0a','direction','appendFileSync','MailServerOut','Smtp','service','port','secure','authentication','auth','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','addMessage','ids','omit','getMessages','include','findAll','rows','getMyMessages','secret','includeAgent','addTags','setTags','spread','emit','removeTags','files','attachments','transcript-%d-%s.zip','firstName','lastName','Messages','read','Account','Chat','Owner','YYYY-MM-DD\x20HH:mm:ss','browserName','customerIp','customerPort','tail','existsSync','createReadStream','pipe','createWriteStream','out','renderFile','views','downloadInteraction.ejs','transcript-','log','unlinkSync','eml-format','rimraf','zip-dir'];(function(_0x16f25c,_0x2ae009){var _0x35244b=function(_0x12eb8a){while(--_0x12eb8a){_0x16f25c['push'](_0x16f25c['shift']());}};_0x35244b(++_0x2ae009);}(_0xea28,0x13a));var _0x8ea2=function(_0x481600,_0x264e83){_0x481600=_0x481600-0x0;var _0x59b978=_0xea28[_0x481600];return _0x59b978;};'use strict';var emlformat=require(_0x8ea2('0x0'));var rimraf=require(_0x8ea2('0x1'));var zipdir=require(_0x8ea2('0x2'));var jsonpatch=require(_0x8ea2('0x3'));var rp=require(_0x8ea2('0x4'));var moment=require(_0x8ea2('0x5'));var BPromise=require(_0x8ea2('0x6'));var Mustache=require(_0x8ea2('0x7'));var util=require('util');var path=require(_0x8ea2('0x8'));var sox=require(_0x8ea2('0x9'));var csv=require(_0x8ea2('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8ea2('0xb'));var _=require(_0x8ea2('0xc'));var squel=require(_0x8ea2('0xd'));var crypto=require(_0x8ea2('0xe'));var jsforce=require(_0x8ea2('0xf'));var deskjs=require(_0x8ea2('0x10'));var toCsv=require(_0x8ea2('0xa'));var querystring=require(_0x8ea2('0x11'));var Papa=require(_0x8ea2('0x12'));var Redis=require(_0x8ea2('0x13'));var authService=require(_0x8ea2('0x14'));var qs=require(_0x8ea2('0x15'));var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require(_0x8ea2('0x16'));var logger=require(_0x8ea2('0x17'))(_0x8ea2('0x18'));var utils=require('../../config/utils');var config=require(_0x8ea2('0x19'));var licenseUtil=require(_0x8ea2('0x1a'));var db=require(_0x8ea2('0x1b'))['db'];config[_0x8ea2('0x1c')]=_[_0x8ea2('0x1d')](config['redis'],{'host':_0x8ea2('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8ea2('0x1f'))[_0x8ea2('0x20')](socket);var jayson=require(_0x8ea2('0x21'));var client=jayson[_0x8ea2('0x22')][_0x8ea2('0x23')]({'port':0x232b});var client9004=jayson[_0x8ea2('0x22')][_0x8ea2('0x23')]({'port':0x232c});function respondWithRpcPromise(_0x11f5e8,_0x474873,_0x396aab,_0x2dfa7c){return new BPromise(function(_0x1c1715,_0x3bc774){var _0xaa8abf=_0x2dfa7c||client;return _0xaa8abf[_0x8ea2('0x24')](_0x11f5e8,_0x396aab)[_0x8ea2('0x25')](function(_0x467045){logger[_0x8ea2('0x26')](_0x8ea2('0x27'),_0x474873,_0x8ea2('0x28'));logger[_0x8ea2('0x29')](_0x8ea2('0x2a'),_0x474873,'request\x20sent',JSON['stringify'](_0x467045));if(_0x467045[_0x8ea2('0x2b')]){if(_0x467045[_0x8ea2('0x2b')][_0x8ea2('0x2c')]===0x1f4){logger['error'](_0x8ea2('0x27'),_0x474873,_0x467045[_0x8ea2('0x2b')]['message']);return _0x3bc774(_0x467045[_0x8ea2('0x2b')][_0x8ea2('0x2d')]);}logger[_0x8ea2('0x2b')](_0x8ea2('0x27'),_0x474873,_0x467045[_0x8ea2('0x2b')][_0x8ea2('0x2d')]);return _0x1c1715(_0x467045[_0x8ea2('0x2b')][_0x8ea2('0x2d')]);}else{logger[_0x8ea2('0x26')]('ChatInteraction,\x20%s,\x20%s',_0x474873,_0x8ea2('0x28'));_0x1c1715(_0x467045['result'][_0x8ea2('0x2d')]);}})[_0x8ea2('0x2e')](function(_0x29b38f){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x474873,_0x29b38f);_0x3bc774(_0x29b38f);});});}function respondWithStatusCode(_0x2e4da3,_0x4dc7bf){_0x4dc7bf=_0x4dc7bf||0xcc;return function(_0x200a49){if(_0x200a49){return _0x2e4da3['sendStatus'](_0x4dc7bf);}return _0x2e4da3[_0x8ea2('0x2f')](_0x4dc7bf)[_0x8ea2('0x30')]();};}function respondWithResult(_0x21c526,_0x266db8){_0x266db8=_0x266db8||0xc8;return function(_0x4e1b90){if(_0x4e1b90){return _0x21c526['status'](_0x266db8)[_0x8ea2('0x31')](_0x4e1b90);}};}function respondWithFilteredResult(_0x4da5b3,_0x4a9875){return function(_0x287078){if(_0x287078){var _0x24f187=typeof _0x4a9875[_0x8ea2('0x32')]===_0x8ea2('0x33')&&typeof _0x4a9875[_0x8ea2('0x34')]===_0x8ea2('0x33');var _0x316707=_0x287078[_0x8ea2('0x35')];var _0x9c5fac=_0x24f187?0x0:_0x4a9875['offset'];var _0x5b7ff9=_0x24f187?_0x287078[_0x8ea2('0x35')]:_0x4a9875[_0x8ea2('0x32')]+_0x4a9875['limit'];var _0x4a110f;if(_0x5b7ff9>=_0x316707){_0x5b7ff9=_0x316707;_0x4a110f=0xc8;}else{_0x4a110f=0xce;}_0x4da5b3[_0x8ea2('0x2f')](_0x4a110f);return _0x4da5b3['set'](_0x8ea2('0x36'),_0x9c5fac+'-'+_0x5b7ff9+'/'+_0x316707)[_0x8ea2('0x31')](_0x287078);}return null;};}function patchUpdates(_0x53fd06){return function(_0x17b21c){try{jsonpatch[_0x8ea2('0x37')](_0x17b21c,_0x53fd06,!![]);}catch(_0x33abc8){return BPromise['reject'](_0x33abc8);}return _0x17b21c['save']();};}function saveUpdates(_0x49a252,_0x3880c3){return function(_0x233e12){if(_0x233e12){return _0x233e12[_0x8ea2('0x38')](_0x49a252)['then'](function(_0x456487){return _0x456487;});}return null;};}function removeEntity(_0x391b08,_0x3d5bf0){return function(_0x278e5d){if(_0x278e5d){return _0x278e5d[_0x8ea2('0x39')]()[_0x8ea2('0x25')](function(){_0x391b08[_0x8ea2('0x2f')](0xcc)[_0x8ea2('0x30')]();});}};}function handleEntityNotFound(_0x5e9b1f,_0x955ef3){return function(_0x29e3f5){if(!_0x29e3f5){_0x5e9b1f[_0x8ea2('0x3a')](0x194);}return _0x29e3f5;};}function handleError(_0x467d97,_0x4eebc1){_0x4eebc1=_0x4eebc1||0x1f4;return function(_0x2a1f14){logger['error'](_0x2a1f14[_0x8ea2('0x3b')]);if(_0x2a1f14[_0x8ea2('0x3c')]){delete _0x2a1f14[_0x8ea2('0x3c')];}_0x467d97[_0x8ea2('0x2f')](_0x4eebc1)['send'](_0x2a1f14);};}function getMustacheRender(_0x2bed24,_0x531979){return Mustache['render'](_0x2bed24,_[_0x8ea2('0x3d')](_0x531979['body'],{'contact':_0x531979[_0x8ea2('0x3e')],'message':_0x531979[_0x8ea2('0x2d')],'agent':_0x531979[_0x8ea2('0x3f')],'interaction':_0x531979[_0x8ea2('0x40')],'account':_0x531979[_0x8ea2('0x41')]}))||'';}function getInteractionUsers(_0x4ae536,_0x84685d){return new BPromise(function(_0x5c5d2d,_0x12a6c2){try{if(_0x84685d[_0x4ae536['id']]){_0x4ae536[_0x8ea2('0x42')]=_[_0x8ea2('0x43')](_0x84685d[_0x4ae536['id']],function(_0x3995ff){return{'id':_0x3995ff['id'],'fullname':_0x3995ff['fullname']};});}}catch(_0x44e8bc){_0x12a6c2(_0x44e8bc);}_0x5c5d2d(_0x4ae536);});}function getInteractionTags(_0x57a6b8,_0x3f0c78){return new BPromise(function(_0x5ba351,_0x2ee78b){try{if(_0x57a6b8[_0x8ea2('0x44')]){_0x57a6b8[_0x8ea2('0x45')]=[];_0x57a6b8[_0x8ea2('0x44')][_0x8ea2('0x46')](',')[_0x8ea2('0x47')](function(_0x2f4fa8){_0x57a6b8['Tags']['push'](_0x3f0c78[_0x2f4fa8]);});}delete _0x57a6b8[_0x8ea2('0x44')];}catch(_0x53455a){_0x2ee78b(_0x53455a);}_0x5ba351(_0x57a6b8);});}function updateChatInteraction(_0x4b03fa,_0x59e2fa,_0x3cbc09){return new BPromise(function(_0x5d9ba0,_0x40a532){return getInteractionUsers(_0x4b03fa,_0x3cbc09)[_0x8ea2('0x25')](function(_0x39c944){return getInteractionTags(_0x39c944,_0x59e2fa);})[_0x8ea2('0x25')](function(_0x989d9b){_0x5d9ba0(_0x989d9b);})[_0x8ea2('0x2e')](function(_0x3b2219){_0x40a532(_0x3b2219);});});}exports[_0x8ea2('0x48')]=function(_0x5352b9,_0x3afb80){var _0x1ef615={},_0x1db25c={},_0x5cb6ad={'count':0x0,'rows':[]};var _0x2d6bbb=_[_0x8ea2('0x43')](db[_0x8ea2('0x49')][_0x8ea2('0x4a')],function(_0x20992d){return{'name':_0x20992d['fieldName'],'type':_0x20992d[_0x8ea2('0x4b')][_0x8ea2('0x4c')]};});_0x1db25c[_0x8ea2('0x4d')]=_['map'](_0x2d6bbb,_0x8ea2('0x3c'));_0x1db25c[_0x8ea2('0x4e')]=_[_0x8ea2('0x4f')](_0x5352b9[_0x8ea2('0x4e')]);_0x1db25c[_0x8ea2('0x50')]=_[_0x8ea2('0x51')](_0x1db25c[_0x8ea2('0x4d')],_0x1db25c[_0x8ea2('0x4e')]);_0x1ef615[_0x8ea2('0x52')]=_[_0x8ea2('0x51')](_0x1db25c[_0x8ea2('0x4d')],qs[_0x8ea2('0x53')](_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x53')]));_0x1ef615['attributes']=_0x1ef615[_0x8ea2('0x52')][_0x8ea2('0x54')]?_0x1ef615[_0x8ea2('0x52')]:_0x1db25c[_0x8ea2('0x4d')];if(!_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x55')](_0x8ea2('0x56'))){_0x1ef615[_0x8ea2('0x34')]=qs['limit'](_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x34')]);_0x1ef615[_0x8ea2('0x32')]=qs['offset'](_0x5352b9['query'][_0x8ea2('0x32')]);}_0x1ef615[_0x8ea2('0x57')]=qs[_0x8ea2('0x58')](_0x5352b9['query'][_0x8ea2('0x58')]);_0x1ef615[_0x8ea2('0x59')]=qs[_0x8ea2('0x50')](_[_0x8ea2('0x5a')](_0x5352b9[_0x8ea2('0x4e')],_0x1db25c['filters']),_0x2d6bbb);var _0x4afd85=[];var _0x24a22a=squel[_0x8ea2('0x5b')]()[_0x8ea2('0x5c')]('id')['field'](_0x8ea2('0x3c'))[_0x8ea2('0x5c')](_0x8ea2('0x5d'))['from']('tools_tags');var _0x48aebf=squel['select']()['field'](_0x8ea2('0x5e'))[_0x8ea2('0x5c')]('u.fullname')['field'](_0x8ea2('0x5f'))[_0x8ea2('0x60')](_0x8ea2('0x61'),'ui')['left_join'](_0x8ea2('0x62'),'u',_0x8ea2('0x63'));var _0x59e3df=squel[_0x8ea2('0x5b')]()[_0x8ea2('0x60')](_0x8ea2('0x64'),'i')[_0x8ea2('0x65')](_0x8ea2('0x66'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join']('users','o',_0x8ea2('0x67'))[_0x8ea2('0x65')](_0x8ea2('0x68'),'a',_0x8ea2('0x69'))[_0x8ea2('0x65')](_0x8ea2('0x6a'),'me',_0x8ea2('0x6b'))['left_join']('chat_interaction_has_tags','it','it.ChatInteractionId\x20=\x20i.id')[_0x8ea2('0x65')](_0x8ea2('0x6c'),'t',_0x8ea2('0x6d'));var _0x2bbec0=squel['expr']();var _0x11824e=[];var _0x2b8662=squel['expr']();var _0x21485a;if(_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x6e')]){_0x21485a=as[_0x8ea2('0x6f')](_0x5352b9[_0x8ea2('0x4e')]['search']);var _0x479c05=_0x21485a['sqlOperator'];for(var _0x53a62c=0x0;_0x53a62c<_0x21485a[_0x8ea2('0x70')][_0x8ea2('0x54')];_0x53a62c++){var _0x2d8221=_0x21485a[_0x8ea2('0x70')][_0x53a62c];var _0x491d3d='i';var _0x461d32=_[_0x8ea2('0x71')](_0x2d6bbb,[_0x8ea2('0x3c'),_0x2d8221[_0x8ea2('0x5c')]]);if(!_0x461d32){switch(_0x2d8221['field']){case _0x8ea2('0x72'):if(_0x2d8221['value']==0x1){_0x59e3df[_0x8ea2('0x73')]('`'+_0x2d8221['field']+_0x8ea2('0x74'));}else{_0x59e3df[_0x8ea2('0x73')]('`'+_0x2d8221['field']+'`\x20>\x200');}break;case _0x8ea2('0x75'):if(_0x2d8221['operator']===_0x8ea2('0x76')){if(_0x2d8221[_0x8ea2('0x77')][_0x8ea2('0x46')]('\x20')[_0x8ea2('0x54')]>0x1){_0x2bbec0[_0x479c05]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x8ea2('0x78')](_0x2d8221[_0x8ea2('0x77')]),null);}else{var _0x39776d='%'+_0x2d8221[_0x8ea2('0x77')]+'%';_0x2bbec0[_0x479c05](_0x8ea2('0x79'),_0x39776d,_0x39776d,_0x39776d);}}else{_0x461d32=_[_0x8ea2('0x71')](_0x2d6bbb,[_0x8ea2('0x3c'),_0x8ea2('0x7a')]);_0x2d8221[_0x8ea2('0x5c')]=_0x8ea2('0x7a');_0x3d55db=as[_0x8ea2('0x7b')](_0x491d3d,_0x461d32[_0x8ea2('0x4b')],_0x2d8221);_0x2bbec0[_0x479c05](_0x3d55db['text'],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x7c')],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x30')]);}break;case _0x8ea2('0x7d'):var _0x219f78=_0x2d8221[_0x8ea2('0x77')][_0x8ea2('0x46')](',')[_0x8ea2('0x43')](function(_0xefb7b){return Number(_0xefb7b);});_0x219f78[_0x8ea2('0x47')](function(_0x35cfc5){_0x2b8662['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x35cfc5+',%');});_0x11824e=_[_0x8ea2('0x7e')](_0x11824e,_0x219f78);break;case _0x8ea2('0x7f'):if(_0x2d8221[_0x8ea2('0x80')]===_0x8ea2('0x76')){_0x2bbec0[_0x479c05](_0x8ea2('0x81'),'%'+_0x2d8221['value']+'%',null);}else{_0x461d32=_['find'](_0x2d6bbb,['name',_0x8ea2('0x82')]);_0x2d8221[_0x8ea2('0x5c')]=_0x8ea2('0x82');_0x3d55db=as[_0x8ea2('0x7b')](_0x491d3d,_0x461d32[_0x8ea2('0x4b')],_0x2d8221);_0x2bbec0[_0x479c05](_0x3d55db[_0x8ea2('0x83')],_0x3d55db['value'][_0x8ea2('0x7c')],_0x3d55db[_0x8ea2('0x77')]['end']);}break;case'body':_0x3d55db=as[_0x8ea2('0x7b')]('me',null,_0x2d8221);_0x2bbec0[_0x479c05](_0x3d55db[_0x8ea2('0x83')],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x7c')],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x30')]);break;}}else{var _0x3d55db=as['buildExpression'](_0x491d3d,_0x461d32[_0x8ea2('0x4b')],_0x2d8221);_0x2bbec0[_0x479c05](_0x3d55db[_0x8ea2('0x83')],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x7c')],_0x3d55db['value'][_0x8ea2('0x30')]);}}}else{var _0x356099=_(_0x5352b9[_0x8ea2('0x4e')])['keys']()[_0x8ea2('0x43')](function(_0x5c2d05){return _['some'](_0x2d6bbb,[_0x8ea2('0x3c'),_0x5c2d05])?_0x5c2d05:undefined;})[_0x8ea2('0x84')]()['value']();if(!_['isEmpty'](_0x356099)){_0x356099['forEach'](function(_0x167f15){if(_0x167f15==='ChatWebsiteId'){_0x59e3df['where'](_0x8ea2('0x85'),[][_0x8ea2('0x86')](_0x5352b9[_0x8ea2('0x4e')][_0x167f15]));}else if(_0x167f15===_0x8ea2('0x87')){var _0x1681d8=JSON[_0x8ea2('0x88')](_0x5352b9[_0x8ea2('0x4e')][_0x167f15])[_0x8ea2('0x89')];var _0x14a5de=JSON[_0x8ea2('0x88')](_0x5352b9[_0x8ea2('0x4e')][_0x167f15])[_0x8ea2('0x8a')];_0x59e3df[_0x8ea2('0x59')](_0x8ea2('0x8b'),_0x1681d8,_0x14a5de);}else{if(_0x5352b9['query'][_0x167f15]===_0x8ea2('0x8c')){_0x59e3df[_0x8ea2('0x59')]('i.'+_0x167f15+_0x8ea2('0x8d'));}else{_0x59e3df['where']('i.'+_0x167f15+_0x8ea2('0x8e'),_0x5352b9['query'][_0x167f15]);}}});}if(_0x5352b9[_0x8ea2('0x4e')]['read']){if(_0x5352b9[_0x8ea2('0x4e')]['read']==0x1){_0x59e3df[_0x8ea2('0x73')](_0x8ea2('0x8f'));}else{_0x59e3df['having'](_0x8ea2('0x90'));}}if(_0x5352b9['query'][_0x8ea2('0x91')]){_0x11824e=_[_0x8ea2('0x92')](_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x91')])?_0x5352b9[_0x8ea2('0x4e')]['tag']:new Array(_0x5352b9['query'][_0x8ea2('0x91')]);_0x11824e['forEach'](function(_0x410f78){_0x2b8662['or'](_0x8ea2('0x93'),'%,'+_0x410f78+',%');});}if(_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x94')]){var _0x262cef=_0x5352b9[_0x8ea2('0x4e')]['filter']['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x8ea2('0x95')](_0x262cef)){_0x2bbec0['or']('i.id\x20LIKE\x20?',_0x262cef+'%');}else{_0x2bbec0['or'](_0x8ea2('0x96'),qs[_0x8ea2('0x78')](_0x262cef))['or'](_0x8ea2('0x97'),_0x262cef+'%');}}}_0x59e3df[_0x8ea2('0x59')](_0x2bbec0);_0x59e3df[_0x8ea2('0x98')](_0x8ea2('0x99'));var _0x4b4d64={'type':db[_0x8ea2('0x9a')][_0x8ea2('0x9b')][_0x8ea2('0x9c')],'raw':!![]};var _0x335a96=_0x59e3df[_0x8ea2('0x9d')]();_0x335a96['field']('i.id');_0x335a96[_0x8ea2('0x5c')](_0x8ea2('0x9e'),_0x8ea2('0x72'));if(_0x1ef615[_0x8ea2('0x57')]){_0x1ef615[_0x8ea2('0x57')][_0x8ea2('0x47')](function(_0x2e0bbe){var _0x9c4960=_0x2e0bbe[0x0]===_0x8ea2('0x9f')?_0x2e0bbe[0x0]:'i.'+_0x2e0bbe[0x0];_0x59e3df[_0x8ea2('0x57')](_0x9c4960,_0x2e0bbe[0x1]===_0x8ea2('0xa0')?![]:!![]);});}if(!_[_0x8ea2('0xa1')](_0x11824e)){_0x59e3df[_0x8ea2('0x73')](_0x2b8662);_0x335a96[_0x8ea2('0x59')](_0x8ea2('0xa2'),_0x11824e);}BPromise[_0x8ea2('0xa3')]()[_0x8ea2('0x25')](function(){if(!_0x21485a){if(_0x5352b9['query']['ChatWebsiteId'])return;_0x335a96[_0x8ea2('0x59')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x59e3df[_0x8ea2('0x59')](_0x8ea2('0xa4'));return;}if(_0x5352b9['user'][_0x8ea2('0xa5')]!=='agent')return;return _0x5352b9[_0x8ea2('0xa6')][_0x8ea2('0xa7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x17dee8){if(_[_0x8ea2('0xa1')](_0x17dee8)){_0x335a96[_0x8ea2('0x59')](_0x8ea2('0xa8'));_0x59e3df[_0x8ea2('0x59')](_0x8ea2('0xa8'));}else{_0x335a96[_0x8ea2('0x59')](_0x8ea2('0x85'),_[_0x8ea2('0x43')](_0x17dee8,'id'));_0x59e3df[_0x8ea2('0x59')]('i.ChatWebsiteId\x20IN\x20?',_[_0x8ea2('0x43')](_0x17dee8,'id'));}});})[_0x8ea2('0x25')](function(){if(_0x5352b9['user'][_0x8ea2('0xa5')]==='agent'&&!_0x21485a&&!_0x5352b9['query']['ChatWebsiteId'])return[];return db[_0x8ea2('0xa9')]['query'](_0x335a96[_0x8ea2('0xaa')](),_0x4b4d64);})[_0x8ea2('0x25')](function(_0x12ed20){_0x5cb6ad[_0x8ea2('0x35')]=_0x12ed20[_0x8ea2('0x54')];if(_0x5cb6ad[_0x8ea2('0x35')]===0x0)return[];return db['sequelize'][_0x8ea2('0x4e')](_0x24a22a['toString'](),_0x4b4d64)[_0x8ea2('0x25')](function(_0x18aa81){_0x4afd85=_[_0x8ea2('0xab')](_0x18aa81,'id');_0x4b4d64=_[_0x8ea2('0x3d')](_0x4b4d64,{'model':db[_0x8ea2('0x49')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5352b9['query'][_0x8ea2('0x53')]){_0x1ef615[_0x8ea2('0x52')][_0x8ea2('0x47')](function(_0x2a82b2){_0x59e3df[_0x8ea2('0x5c')]('i.'+_0x2a82b2);});}else{_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0x9e'),_0x8ea2('0x72'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xac'),_0x8ea2('0xad'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xae'),_0x8ea2('0xaf'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xb0'),_0x8ea2('0x9f'));_0x59e3df['field'](_0x8ea2('0xb1'));_0x59e3df['field']('c.firstName',_0x8ea2('0xb2'));_0x59e3df[_0x8ea2('0x5c')]('c.lastName',_0x8ea2('0xb3'));_0x59e3df[_0x8ea2('0x5c')]('c.email',_0x8ea2('0xb4'));_0x59e3df[_0x8ea2('0x5c')]('c.phone',_0x8ea2('0xb5'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xb6'),_0x8ea2('0xb7'));_0x59e3df[_0x8ea2('0x5c')]('c.fax',_0x8ea2('0xb8'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xb9'),_0x8ea2('0xba'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xbb'),_0x8ea2('0xbc'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xbd'),'TagIds');}if(_0x1ef615[_0x8ea2('0x34')])_0x59e3df['limit'](_0x1ef615[_0x8ea2('0x34')]);if(_0x1ef615[_0x8ea2('0x32')])_0x59e3df[_0x8ea2('0x32')](_0x1ef615[_0x8ea2('0x32')]);return db[_0x8ea2('0xa9')]['query'](_0x59e3df[_0x8ea2('0xaa')](),_0x4b4d64);})[_0x8ea2('0x25')](function(_0x4fdd16){if(_0x4fdd16['length']>0x0)_0x48aebf[_0x8ea2('0x59')](_0x8ea2('0xbe'),_['map'](_0x4fdd16,'id'));return db['sequelize'][_0x8ea2('0x4e')](_0x48aebf[_0x8ea2('0xaa')](),_0x4b4d64)['then'](function(_0x2b7e80){var _0x2f6673=_[_0x8ea2('0xbf')](_0x2b7e80,_0x8ea2('0xc0'));var _0xdf4de9=[];_0x4fdd16['forEach'](function(_0x2e3a5d){_0xdf4de9[_0x8ea2('0xc1')](updateChatInteraction(_0x2e3a5d,_0x4afd85,_0x2f6673));});return BPromise[_0x8ea2('0xc2')](_0xdf4de9);});});})[_0x8ea2('0x25')](function(_0x412af1){_0x5cb6ad['rows']=_0x412af1;return _0x5cb6ad;})[_0x8ea2('0x25')](respondWithFilteredResult(_0x3afb80,_0x1ef615))['catch'](handleError(_0x3afb80,null));};exports['show']=function(_0x9468be,_0x17e9fc){var _0x5c95ec={'raw':![],'where':{'id':_0x9468be[_0x8ea2('0xc3')]['id']}},_0x239516={};_0x239516[_0x8ea2('0x4d')]=_[_0x8ea2('0x4f')](db[_0x8ea2('0x49')][_0x8ea2('0x4a')]);_0x239516['query']=_[_0x8ea2('0x4f')](_0x9468be[_0x8ea2('0x4e')]);_0x239516[_0x8ea2('0x50')]=_['intersection'](_0x239516[_0x8ea2('0x4d')],_0x239516[_0x8ea2('0x4e')]);_0x5c95ec[_0x8ea2('0x52')]=_[_0x8ea2('0x51')](_0x239516[_0x8ea2('0x4d')],qs['fields'](_0x9468be[_0x8ea2('0x4e')][_0x8ea2('0x53')]));_0x5c95ec[_0x8ea2('0x52')]=_0x5c95ec[_0x8ea2('0x52')]['length']?_0x5c95ec['attributes']:_0x239516[_0x8ea2('0x4d')];if(_0x9468be['query'][_0x8ea2('0xc4')]){_0x5c95ec['include']=[{'all':!![]}];}_0x5c95ec=_[_0x8ea2('0x3d')]({},_0x5c95ec,_0x9468be[_0x8ea2('0xc5')]);return db[_0x8ea2('0x49')][_0x8ea2('0x71')](_0x5c95ec)[_0x8ea2('0x25')](handleEntityNotFound(_0x17e9fc,null))[_0x8ea2('0x25')](respondWithResult(_0x17e9fc,null))[_0x8ea2('0x2e')](handleError(_0x17e9fc,null));};exports['create']=function(_0x2c5677,_0x224fca){return db[_0x8ea2('0x49')][_0x8ea2('0xc6')](_0x2c5677[_0x8ea2('0xc7')],{})[_0x8ea2('0x25')](respondWithResult(_0x224fca,0xc9))['catch'](handleError(_0x224fca,null));};exports[_0x8ea2('0x38')]=function(_0x463372,_0x76085){if(_0x463372[_0x8ea2('0xc7')]['id']){delete _0x463372['body']['id'];}return db['ChatInteraction']['find']({'where':{'id':_0x463372[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x76085,null))[_0x8ea2('0x25')](saveUpdates(_0x463372['body'],null))[_0x8ea2('0x25')](respondWithResult(_0x76085,null))[_0x8ea2('0x2e')](handleError(_0x76085,null));};exports[_0x8ea2('0x39')]=function(_0x500b47,_0x331019){return db[_0x8ea2('0x49')]['find']({'where':{'id':_0x500b47[_0x8ea2('0xc3')]['id']}})['then'](handleEntityNotFound(_0x331019,null))['then'](removeEntity(_0x331019,null))[_0x8ea2('0x2e')](handleError(_0x331019,null));};exports[_0x8ea2('0xc8')]=function(_0x405020,_0x5c9359){return db[_0x8ea2('0x49')][_0x8ea2('0xc8')]()[_0x8ea2('0x25')](respondWithResult(_0x5c9359,null))[_0x8ea2('0x2e')](handleError(_0x5c9359,null));};exports[_0x8ea2('0xc9')]=function(_0x11c59e,_0x11b02a){var _0x5ab2c4=_0x11c59e[_0x8ea2('0xc3')]['id'];var _0x111f97;var _0xf76d70;var _0x384500;return db[_0x8ea2('0x49')][_0x8ea2('0xca')]({'where':{'id':_0x5ab2c4}})[_0x8ea2('0x25')](function(_0x568581){_0x111f97=_0x568581;return db[_0x8ea2('0xcb')][_0x8ea2('0xca')]({'where':{'id':_0x568581[_0x8ea2('0xcc')]},'attributes':['id',_0x8ea2('0xcd'),_0x8ea2('0xce'),'vidaooTopic',_0x8ea2('0xcf'),_0x8ea2('0xd0')],'raw':!![]});})[_0x8ea2('0x25')](function(_0x1c336e){if(_0x1c336e&&_0x1c336e[_0x8ea2('0xcd')]&&_0x1c336e[_0x8ea2('0xce')]){_0xf76d70=_0x1c336e;var _0x473ae2={'interaction':{'id':_0x5ab2c4},'agent':{'id':_0x11c59e[_0x8ea2('0xa6')]['id'],'name':_0x11c59e[_0x8ea2('0xa6')]['name'],'fullname':_0x11c59e['user']['fullname'],'email':_0x11c59e[_0x8ea2('0xa6')]['email']},'contact':_0x11c59e[_0x8ea2('0xc7')][_0x8ea2('0x3e')],'account':_0x11c59e[_0x8ea2('0xc7')][_0x8ea2('0x41')]};var _0x6c0ccc={'rejectUnauthorized':![],'method':_0x8ea2('0xd1'),'url':_0x8ea2('0xd2'),'headers':{'X-APIKEY':_0x1c336e[_0x8ea2('0xcd')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x11c59e[_0x8ea2('0xa6')][_0x8ea2('0xd3')]],'buttons':null,'topic':_0xf76d70['vidaooTopic'],'note':_[_0x8ea2('0xd4')](_0xf76d70[_0x8ea2('0xcf')])?null:getMustacheRender(_0xf76d70[_0x8ea2('0xcf')],_0x473ae2),'metadata':null},'redirect':_0x8ea2('0xd5'),'json':!![]};try{if(!_[_0x8ea2('0xd4')](_0xf76d70[_0x8ea2('0xd0')])){var _0xc6888c=getMustacheRender(_0xf76d70[_0x8ea2('0xd0')],_0x473ae2);var _0x152d46=JSON[_0x8ea2('0x88')](_0xc6888c);_0x6c0ccc[_0x8ea2('0xc7')][_0x8ea2('0xd6')]=_0x152d46;}}catch(_0x465e7f){throw new db[(_0x8ea2('0x9a'))][(_0x8ea2('0xd7'))](_0x8ea2('0xd8'));}return rp(_0x6c0ccc);}else{throw new db[(_0x8ea2('0x9a'))]['ValidationError']('Error\x20in\x20Vidaoo\x20configuration');}})['then'](function(_0x4b2c0f){_0x384500=_0x4b2c0f;if(_0x384500['id']){var _0x2fcddc={'body':_0x384500[_0x8ea2('0xd9')],'ChatWebsiteId':_0xf76d70['id'],'ChatInteractionId':_0x111f97['id'],'direction':'out','UserId':_0x11c59e[_0x8ea2('0xa6')]['id']};return db[_0x8ea2('0xda')][_0x8ea2('0xc6')](_0x2fcddc,{});}else{throw new db[(_0x8ea2('0x9a'))]['ValidationError'](_0x8ea2('0xdb'));}})['then'](function(){return _0x111f97[_0x8ea2('0xdc')]({'vidaooSessionId':_0x384500['id']});})[_0x8ea2('0x25')](respondWithResult(_0x11b02a,null))[_0x8ea2('0x2e')](handleError(_0x11b02a,null));};exports[_0x8ea2('0xdd')]=function(_0x3b6b03,_0x3292bc){if(_0x3b6b03['body']['id']){delete _0x3b6b03['body']['id'];}return db[_0x8ea2('0x49')][_0x8ea2('0x71')]({'where':{'id':_0x3b6b03['params']['id']},'include':[{'model':db[_0x8ea2('0xde')],'as':'Contact'}]})[_0x8ea2('0x25')](handleEntityNotFound(_0x3292bc,null))[_0x8ea2('0x25')](saveUpdates(_0x3b6b03[_0x8ea2('0xc7')],null))[_0x8ea2('0x25')](respondWithResult(_0x3292bc,null))[_0x8ea2('0x2e')](handleError(_0x3292bc,null));};exports[_0x8ea2('0xdf')]=function(_0x1383b4,_0x4c1b9d,_0x3f3822){if(_0x1383b4[_0x8ea2('0xc7')]['id']){delete _0x1383b4[_0x8ea2('0xc7')]['id'];}return db[_0x8ea2('0x49')][_0x8ea2('0x71')]({'where':{'id':_0x1383b4[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](function(_0x1c974d){if(!_0x1c974d){logger[_0x8ea2('0x2b')]('abandonInteraction,\x20%s,\x20%s,\x20%s',_0x8ea2('0xdf'),0x194,_0x8ea2('0xe0'));_0x4c1b9d[_0x8ea2('0x3a')](0x194);}else{if(_0x1c974d['UserId']){throw new db[(_0x8ea2('0x9a'))][(_0x8ea2('0xd7'))](_0x8ea2('0xe1'));}}return _0x1c974d;})[_0x8ea2('0x25')](function(_0xe18090){if(_0xe18090){return _0xe18090[_0x8ea2('0x38')]({'closed':_0x1383b4['body']['closed'],'disposition':_0x1383b4[_0x8ea2('0xc7')][_0x8ea2('0xe2')]})[_0x8ea2('0x25')](function(_0x695f4a){return _0x695f4a;});}})[_0x8ea2('0x25')](function(_0x57ff72){return respondWithRpcPromise(_0x8ea2('0xe3'),'abandon',_0x1383b4[_0x8ea2('0xc7')],client9004);})[_0x8ea2('0x25')](respondWithResult(_0x4c1b9d,null))['catch'](handleError(_0x4c1b9d,null));};exports[_0x8ea2('0xe4')]=function(_0x254b51,_0x2c11d2,_0x2aaa88){_0x254b51[_0x8ea2('0xc7')][_0x8ea2('0x3c')]=_0x254b51[_0x8ea2('0xe5')][_0x8ea2('0xe6')];_0x254b51[_0x8ea2('0xc7')][_0x8ea2('0xe7')]=_0x254b51['file'][_0x8ea2('0xe8')];_0x254b51[_0x8ea2('0xc7')][_0x8ea2('0x4b')]=_0x254b51['file'][_0x8ea2('0xe9')];return db['Attachment'][_0x8ea2('0xc6')](_0x254b51[_0x8ea2('0xc7')])[_0x8ea2('0x25')](respondWithResult(_0x2c11d2,0xc9))[_0x8ea2('0x2e')](handleError(_0x2c11d2,null));};exports[_0x8ea2('0xea')]=function(_0x1786ac,_0x7a45a8,_0x3a68e2){return db[_0x8ea2('0x49')]['findOne']({'where':{'id':_0x1786ac[_0x8ea2('0xc3')]['id']},'raw':!![]})[_0x8ea2('0x25')](handleEntityNotFound(_0x7a45a8,null))[_0x8ea2('0x25')](function(_0x8d4abd){if(_0x8d4abd){if(_0x8d4abd[_0x8ea2('0xeb')]){return _0x7a45a8[_0x8ea2('0x2f')](0x193)[_0x8ea2('0x31')]({'status':0x193,'message':_0x8ea2('0xec')});}return db[_0x8ea2('0xed')]['findOne']({'where':{'id':_0x1786ac[_0x8ea2('0x4e')][_0x8ea2('0xee')]},'raw':!![]})[_0x8ea2('0x25')](handleEntityNotFound(_0x7a45a8,null));}})[_0x8ea2('0x25')](function(_0xcbb6b3){if(_0xcbb6b3){var _0x4bdbe0=_0xcbb6b3[_0x8ea2('0xef')]!==null;var _0x44791f=path[_0x8ea2('0xf0')](config[_0x8ea2('0xf1')],_0x8ea2('0xf2'));if(_0x4bdbe0){_0x44791f=path['join'](_0x44791f,_0x8ea2('0xf3'));}var _0x4e7aff=path[_0x8ea2('0xf0')](_0x44791f,_0xcbb6b3[_0x8ea2('0xe7')]);return _0x7a45a8[_0x8ea2('0xf4')](_0x4e7aff);}})['catch'](handleError(_0x7a45a8,null));};exports[_0x8ea2('0xf5')]=function(_0x48a2e2,_0x4e804c){var _0x487bab=null;var _0x1a0966=null;var _0x50087b=null;var _0x196b89=null;if(_0x48a2e2[_0x8ea2('0xc7')]['id']){delete _0x48a2e2[_0x8ea2('0xc7')]['id'];}if(_0x48a2e2[_0x8ea2('0xc7')][_0x8ea2('0xf6')]){_0x196b89=path[_0x8ea2('0xf0')](config[_0x8ea2('0xf1')],_0x8ea2('0xf7'),util['format']('transcript-%s.txt',Date[_0x8ea2('0xf8')]()));_0x48a2e2[_0x8ea2('0xc7')][_0x8ea2('0xf9')]=_0x196b89;}return db['ChatInteraction']['find']({'where':{'id':_0x48a2e2['params']['id']},'include':[{'model':db[_0x8ea2('0xda')],'as':'Messages','include':[{'model':db['User'],'as':_0x8ea2('0x7f')}]}]})[_0x8ea2('0x25')](handleEntityNotFound(_0x4e804c,null))['then'](saveUpdates(_0x48a2e2['body'],null))[_0x8ea2('0x25')](function(_0x48eac8){if(_0x48eac8){_0x487bab=_0x48eac8;return db['ChatWebsite'][_0x8ea2('0x71')]({'where':{'id':_0x487bab[_0x8ea2('0xcc')]}});}})[_0x8ea2('0x25')](function(_0x54da21){if(_0x54da21){_0x50087b=_0x54da21;return db[_0x8ea2('0xde')][_0x8ea2('0x71')]({'where':{'id':_0x487bab[_0x8ea2('0x7a')]}});}})[_0x8ea2('0x25')](function(_0x3a43d5){if(_0x3a43d5){_0x1a0966=_0x3a43d5;if(_0x196b89){var _0x535b01=null;for(var _0x22e4cd=0x1;_0x22e4cd<_0x487bab['Messages'][_0x8ea2('0x54')];++_0x22e4cd){_0x535b01=_0x487bab['Messages'][_0x22e4cd];var _0x230a70=_0x535b01['UserId']?util['format'](_0x8ea2('0xfa'),_0x50087b[_0x8ea2('0xfb')],_0x535b01[_0x8ea2('0x82')]):_0x8ea2('0xfc');var _0x332670=_0x48a2e2[_0x8ea2('0xc7')][_0x8ea2('0xfd')]||util[_0x8ea2('0xfe')]('%s%d',_0x8ea2('0xff'),_0x535b01[_0x8ea2('0x7a')]);switch(_0x50087b[_0x8ea2('0x100')]){case _0x8ea2('0x101'):_0x230a70=_0x535b01[_0x8ea2('0x82')]?util['format'](_0x8ea2('0xfa'),_0x50087b['agentAlias'],_0x535b01[_0x8ea2('0x82')]):'System';break;case _0x8ea2('0x102'):_0x230a70=_0x535b01[_0x8ea2('0x82')]?_0x535b01[_0x8ea2('0x7f')][_0x8ea2('0x103')]||_0x535b01['User']['fullname']:'System';break;case _0x8ea2('0x104'):_0x230a70=_0x535b01[_0x8ea2('0x82')]?_0x535b01['User'][_0x8ea2('0x105')]:_0x8ea2('0xfc');break;default:_0x230a70=_0x535b01[_0x8ea2('0x82')]?util[_0x8ea2('0xfe')](_0x8ea2('0xfa'),_0x50087b[_0x8ea2('0xfb')],_0x535b01[_0x8ea2('0x82')]):_0x8ea2('0xfc');}var _0x422280=util[_0x8ea2('0xfe')](_0x8ea2('0x106'),moment(_0x535b01[_0x8ea2('0x87')])[_0x8ea2('0xfe')]('MM/DD/YYYY\x20HH:mm:ss'),_0x535b01[_0x8ea2('0x107')]==='in'?_0x332670:_0x230a70,_0x535b01['body']);if(!_0x535b01['secret']){fs[_0x8ea2('0x108')](_0x196b89,_0x422280);}}return db['MailAccount'][_0x8ea2('0xca')]({'where':{'service':!![]},'include':[{'model':db[_0x8ea2('0x109')],'as':_0x8ea2('0x10a'),'raw':!![]}]});}}})[_0x8ea2('0x25')](function(_0xff0fae){if(_0xff0fae&&_0xff0fae['Smtp']&&_0x48a2e2[_0x8ea2('0xc7')]){var _0x3f5688={'tls':{'rejectUnauthorized':![]}};if(_0xff0fae[_0x8ea2('0x10a')]['service']){_0x3f5688['service']=_0xff0fae[_0x8ea2('0x10a')][_0x8ea2('0x10b')];}else{_0x3f5688['host']=_0xff0fae[_0x8ea2('0x10a')]['host'];_0x3f5688[_0x8ea2('0x10c')]=_0xff0fae[_0x8ea2('0x10a')][_0x8ea2('0x10c')];_0x3f5688[_0x8ea2('0x10d')]=_0xff0fae[_0x8ea2('0x10a')][_0x8ea2('0x10d')];}if(_0xff0fae[_0x8ea2('0x10a')][_0x8ea2('0x10e')]){_0x3f5688[_0x8ea2('0x10f')]={'user':_0xff0fae['Smtp']['user'],'pass':_0xff0fae[_0x8ea2('0x10a')]['pass']};}return respondWithRpcPromise(_0x8ea2('0x110'),_0x8ea2('0x111'),{'account':_0x3f5688,'message':{'from':util[_0x8ea2('0xfe')](_0x8ea2('0x112'),_0xff0fae['name'],_0xff0fae[_0x8ea2('0xd3')]||_0xff0fae[_0x8ea2('0x10a')]['user']),'to':_0x48a2e2[_0x8ea2('0xc7')][_0x8ea2('0xf6')],'subject':_0x8ea2('0x113'),'text':util['format']('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x48a2e2['body'][_0x8ea2('0xf6')]),'attachments':[{'path':_0x196b89}]}})['then'](function(){return _0x487bab;})[_0x8ea2('0x2e')](function(_0x488acb){console[_0x8ea2('0x2b')](_0x488acb);});}else{return _0x487bab;}})[_0x8ea2('0x25')](respondWithStatusCode(_0x4e804c,0xc8))[_0x8ea2('0x2e')](handleError(_0x4e804c,null));};exports[_0x8ea2('0x114')]=function(_0x54925a,_0x295339,_0x55c23c){return db['ChatMessage']['find']({'where':{'id':_0x54925a[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x295339,null))[_0x8ea2('0x25')](function(_0x48b51d){if(_0x48b51d){return _0x48b51d[_0x8ea2('0x114')](_0x54925a[_0x8ea2('0xc7')][_0x8ea2('0x115')],_[_0x8ea2('0x116')](_0x54925a[_0x8ea2('0xc7')],[_0x8ea2('0x115'),'id'])||{});}})[_0x8ea2('0x25')](respondWithResult(_0x295339,null))[_0x8ea2('0x2e')](handleError(_0x295339,null));};exports[_0x8ea2('0x117')]=function(_0x102d70,_0x2b014d,_0xc35654){var _0x355b91={'raw':![],'where':{}};var _0x1cf414={};var _0x48e543={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x8ea2('0xca')]({'where':{'id':_0x102d70['params']['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x2b014d,null))[_0x8ea2('0x25')](function(_0x3ebbc8){if(_0x3ebbc8){_0x1cf414['model']=_[_0x8ea2('0x4f')](db['ChatMessage']['rawAttributes']);_0x1cf414[_0x8ea2('0x4e')]=_[_0x8ea2('0x4f')](_0x102d70[_0x8ea2('0x4e')]);_0x1cf414[_0x8ea2('0x50')]=_[_0x8ea2('0x51')](_0x1cf414[_0x8ea2('0x4d')],_0x1cf414[_0x8ea2('0x4e')]);_0x355b91['attributes']=_[_0x8ea2('0x51')](_0x1cf414[_0x8ea2('0x4d')],qs[_0x8ea2('0x53')](_0x102d70['query'][_0x8ea2('0x53')]));_0x355b91[_0x8ea2('0x52')]=_0x355b91[_0x8ea2('0x52')]['length']?_0x355b91[_0x8ea2('0x52')]:_0x1cf414[_0x8ea2('0x4d')];if(!_0x102d70[_0x8ea2('0x4e')]['hasOwnProperty']('nolimit')){_0x355b91[_0x8ea2('0x34')]=qs['limit'](_0x102d70[_0x8ea2('0x4e')]['limit']);_0x355b91[_0x8ea2('0x32')]=qs[_0x8ea2('0x32')](_0x102d70[_0x8ea2('0x4e')][_0x8ea2('0x32')]);}_0x355b91[_0x8ea2('0x57')]=qs['sort'](_0x102d70[_0x8ea2('0x4e')][_0x8ea2('0x58')]);_0x355b91[_0x8ea2('0x59')]=qs[_0x8ea2('0x50')](_[_0x8ea2('0x5a')](_0x102d70[_0x8ea2('0x4e')],_0x1cf414['filters']));_0x355b91['where'][_0x8ea2('0xc0')]=_0x3ebbc8['id'];if(_0x102d70[_0x8ea2('0x4e')]['filter']){_0x355b91[_0x8ea2('0x59')]=_[_0x8ea2('0x3d')](_0x355b91[_0x8ea2('0x59')],{'$or':_[_0x8ea2('0x43')](_0x355b91['attributes'],function(_0x19ea2b){var _0x4450e8={};_0x4450e8[_0x19ea2b]={'$like':'%'+_0x102d70['query'][_0x8ea2('0x94')]+'%'};return _0x4450e8;})});}if(_0x102d70['query'][_0x8ea2('0x89')]){var _0x479b40=_0x102d70['query'][_0x8ea2('0x89')][_0x8ea2('0x46')](',');var _0xbb5964={};_0xbb5964[_0x479b40[0x0]]={'$gte':moment(_0x479b40[0x1])[_0x8ea2('0xfe')]('YYYY-MM-DD\x20HH:mm:ss')};_0x355b91[_0x8ea2('0x59')]=_[_0x8ea2('0x3d')](_0x355b91[_0x8ea2('0x59')],_0xbb5964);}_0x355b91=_['merge']({},_0x355b91,_0x102d70[_0x8ea2('0xc5')]);return db[_0x8ea2('0xda')][_0x8ea2('0x35')]({'where':_0x355b91[_0x8ea2('0x59')]})[_0x8ea2('0x25')](function(_0x46d38e){_0x48e543[_0x8ea2('0x35')]=_0x46d38e;if(_0x102d70['query'][_0x8ea2('0xc4')]){_0x355b91[_0x8ea2('0x118')]=[{'all':!![]}];}return db[_0x8ea2('0xda')][_0x8ea2('0x119')](_0x355b91);})[_0x8ea2('0x25')](function(_0x23f247){_0x48e543[_0x8ea2('0x11a')]=_0x23f247;return _0x48e543;});}})[_0x8ea2('0x25')](respondWithFilteredResult(_0x2b014d,_0x355b91))[_0x8ea2('0x2e')](handleError(_0x2b014d,null));};exports[_0x8ea2('0x11b')]=function(_0x3a37fb,_0x455009,_0x556919){var _0x58a0e5={'where':{}},_0x3be2ce={},_0x56a973={'count':0x0,'rows':[]};return db[_0x8ea2('0x49')][_0x8ea2('0xca')]({'where':{'id':_0x3a37fb[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x455009,null))[_0x8ea2('0x25')](function(_0x515381){if(_0x515381){_0x3be2ce[_0x8ea2('0x4d')]=_[_0x8ea2('0x4f')](db['ChatMessage'][_0x8ea2('0x4a')]);_0x3be2ce[_0x8ea2('0x4e')]=_[_0x8ea2('0x4f')](_0x3a37fb[_0x8ea2('0x4e')]);_0x3be2ce['filters']=_[_0x8ea2('0x51')](_0x3be2ce[_0x8ea2('0x4d')],_0x3be2ce[_0x8ea2('0x4e')]);_0x58a0e5[_0x8ea2('0x52')]=_['intersection'](_0x3be2ce[_0x8ea2('0x4d')],qs[_0x8ea2('0x53')](_0x3a37fb[_0x8ea2('0x4e')]['fields']));_0x58a0e5[_0x8ea2('0x52')]=_0x58a0e5[_0x8ea2('0x52')][_0x8ea2('0x54')]?_0x58a0e5['attributes']:_0x3be2ce['model'];if(!_0x3a37fb[_0x8ea2('0x4e')]['hasOwnProperty'](_0x8ea2('0x56'))){_0x58a0e5[_0x8ea2('0x34')]=qs[_0x8ea2('0x34')](_0x3a37fb[_0x8ea2('0x4e')]['limit']);_0x58a0e5[_0x8ea2('0x32')]=qs['offset'](_0x3a37fb['query']['offset']);}_0x58a0e5['order']=qs[_0x8ea2('0x58')](_0x3a37fb[_0x8ea2('0x4e')][_0x8ea2('0x58')]);_0x58a0e5[_0x8ea2('0x59')]=qs[_0x8ea2('0x50')](_['pick'](_0x3a37fb['query'],_0x3be2ce[_0x8ea2('0x50')]));_0x58a0e5['where']['ChatInteractionId']=_0x515381['id'];if(_0x3a37fb[_0x8ea2('0x4e')][_0x8ea2('0x94')]){_0x58a0e5[_0x8ea2('0x59')]=_['merge'](_0x58a0e5[_0x8ea2('0x59')],{'$or':_['map'](_0x58a0e5[_0x8ea2('0x52')],function(_0x4041ec){var _0x56178b={};_0x56178b[_0x4041ec]={'$like':'%'+_0x3a37fb[_0x8ea2('0x4e')][_0x8ea2('0x94')]+'%'};return _0x56178b;})});}_0x58a0e5['where'][_0x8ea2('0x11c')]=![];if(_0x3a37fb[_0x8ea2('0x4e')]['id']){_0x58a0e5[_0x8ea2('0x59')]['id']={'$gt':_0x3a37fb[_0x8ea2('0x4e')]['id']};}_0x58a0e5=_[_0x8ea2('0x3d')]({},_0x58a0e5,_0x3a37fb[_0x8ea2('0xc5')]);return db[_0x8ea2('0xda')][_0x8ea2('0x35')]({'where':_0x58a0e5[_0x8ea2('0x59')]})['then'](function(_0xcedece){_0x56a973['count']=_0xcedece;_0x58a0e5[_0x8ea2('0x118')]=[];if(_0x3a37fb[_0x8ea2('0x4e')][_0x8ea2('0x11d')]){_0x58a0e5[_0x8ea2('0x118')][_0x8ea2('0xc1')]({'model':db[_0x8ea2('0x7f')],'as':_0x8ea2('0x7f'),'attributes':['id',_0x8ea2('0x105'),'alias']});}if(_0x3a37fb['query'][_0x8ea2('0xc4')]){_0x58a0e5[_0x8ea2('0x118')]=[{'all':!![]}];}return db[_0x8ea2('0xda')][_0x8ea2('0x119')](_0x58a0e5);})[_0x8ea2('0x25')](function(_0x52bf7c){_0x56a973[_0x8ea2('0x11a')]=_0x52bf7c;return _0x56a973;});}})[_0x8ea2('0x25')](respondWithFilteredResult(_0x455009,_0x58a0e5))['catch'](handleError(_0x455009,null));};exports[_0x8ea2('0x11e')]=function(_0x3be5d0,_0x3ac848,_0x52ce76){return db['ChatInteraction'][_0x8ea2('0x71')]({'where':{'id':_0x3be5d0['params']['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x3ac848,null))[_0x8ea2('0x25')](function(_0x1030c9){if(_0x1030c9){return _0x1030c9[_0x8ea2('0x11f')](_0x3be5d0[_0x8ea2('0xc7')][_0x8ea2('0x115')],_[_0x8ea2('0x116')](_0x3be5d0[_0x8ea2('0xc7')],[_0x8ea2('0x115'),'id'])||{})[_0x8ea2('0x120')](function(){return db[_0x8ea2('0x7d')][_0x8ea2('0x119')]({'attributes':['id',_0x8ea2('0x3c'),_0x8ea2('0x5d')],'where':{'id':_0x3be5d0[_0x8ea2('0xc7')][_0x8ea2('0x115')]}});})[_0x8ea2('0x25')](function(_0x452b94){socket[_0x8ea2('0x121')]('chatInteractionTags:save',{'id':Number(_0x3be5d0['params']['id']),'tags':_0x452b94||[]});return{'id':Number(_0x3be5d0['params']['id']),'tags':_0x452b94||[]};});}})[_0x8ea2('0x25')](respondWithResult(_0x3ac848,null))[_0x8ea2('0x2e')](handleError(_0x3ac848,null));};exports[_0x8ea2('0x122')]=function(_0x9410dd,_0x497671,_0x5e3e8d){return db[_0x8ea2('0x49')]['find']({'where':{'id':_0x9410dd[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x497671,null))[_0x8ea2('0x25')](function(_0x19b042){if(_0x19b042){return _0x19b042[_0x8ea2('0x122')](_0x9410dd[_0x8ea2('0x4e')][_0x8ea2('0x115')]);}})['then'](respondWithStatusCode(_0x497671,null))[_0x8ea2('0x2e')](handleError(_0x497671,null));};exports[_0x8ea2('0xf4')]=function(_0x2dc450,_0x34e1c5){var _0x5b929c=moment()['unix']()[_0x8ea2('0xaa')]();var _0x263123=path[_0x8ea2('0xf0')](config['root'],'server',_0x8ea2('0x123'),'tmp');var _0x40e8e6=path[_0x8ea2('0xf0')](config[_0x8ea2('0xf1')],'server',_0x8ea2('0x123'),_0x8ea2('0x124'));var _0x2dfabc=path[_0x8ea2('0xf0')](_0x263123,_0x5b929c);var _0x515049=util['format'](_0x8ea2('0x125'),_0x2dc450[_0x8ea2('0xc3')]['id'],_0x5b929c);var _0x39000d=path['join'](_0x263123,_0x515049);var _0x3a1752=[];_0x3a1752['push']({'model':db[_0x8ea2('0x7f')],'as':'User','attributes':['id',_0x8ea2('0x105')],'raw':!![]});_0x3a1752['push']({'model':db[_0x8ea2('0xde')],'as':_0x8ea2('0x75'),'attributes':['id',_0x8ea2('0x126'),_0x8ea2('0x127')],'raw':!![]});if(_0x2dc450['query'][_0x8ea2('0x124')]){_0x3a1752[_0x8ea2('0xc1')]({'model':db[_0x8ea2('0xed')],'as':_0x8ea2('0xed'),'raw':!![]});}var _0x5ba508=[{'model':db[_0x8ea2('0xda')],'as':_0x8ea2('0x128'),'attributes':['id',_0x8ea2('0xc7'),_0x8ea2('0x87'),_0x8ea2('0x107'),'secret',_0x8ea2('0x129')],'include':_0x3a1752}];_0x5ba508[_0x8ea2('0xc1')]({'model':db[_0x8ea2('0xcb')],'as':_0x8ea2('0x12a'),'attributes':['id','name']});_0x5ba508[_0x8ea2('0xc1')]({'model':db[_0x8ea2('0x7f')],'as':'Owner','attributes':['id','fullname']});return db['ChatInteraction'][_0x8ea2('0x71')]({'where':{'id':_0x2dc450[_0x8ea2('0xc3')]['id']},'include':_0x5ba508})[_0x8ea2('0x25')](handleEntityNotFound(_0x34e1c5,null))[_0x8ea2('0x25')](function(_0x3c9013){if(_0x3c9013){var _0x103c43=_0x3c9013['get']({'plain':!![]});fs['mkdirSync'](_0x2dfabc);var _0xc099b6={'channel':_0x8ea2('0x12b'),'account':_0x103c43[_0x8ea2('0x12a')]['name'],'agent':_0x103c43['Owner']?_0x103c43[_0x8ea2('0x12c')][_0x8ea2('0x105')]:'N.A.','createdAt':moment(_0x103c43[_0x8ea2('0x87')])['format'](_0x8ea2('0x12d'))[_0x8ea2('0xaa')](),'closedAt':_0x103c43[_0x8ea2('0xeb')]?moment(_0x103c43['closedAt'])[_0x8ea2('0xfe')](_0x8ea2('0x12d'))['toString']():'','disposition':_0x103c43[_0x8ea2('0xe2')],'chatInfo':{'browser':_0x103c43[_0x8ea2('0x12e')],'os':_0x103c43['osName'],'referer':_0x103c43['referer'],'customerIp':_0x103c43[_0x8ea2('0x12f')],'customerPort':_0x103c43[_0x8ea2('0x130')]?_0x103c43[_0x8ea2('0x130')]:'N.A.'},'messages':_(_0x103c43[_0x8ea2('0x128')])[_0x8ea2('0x131')]()[_0x8ea2('0x94')]({'secret':![]})[_0x8ea2('0x43')](function(_0x36799a){if(_0x36799a['Attachment']){var _0x1cc1d9=path['join'](_0x40e8e6,_0x36799a[_0x8ea2('0xed')]['basename']);if(fs[_0x8ea2('0x132')](_0x1cc1d9)){fs[_0x8ea2('0x133')](_0x1cc1d9)[_0x8ea2('0x134')](fs[_0x8ea2('0x135')](path['join'](_0x2dfabc,_0x36799a[_0x8ea2('0xed')][_0x8ea2('0xe7')])));}}return{'date':moment(_0x36799a[_0x8ea2('0x87')])[_0x8ea2('0xfe')](_0x8ea2('0x12d'))[_0x8ea2('0xaa')](),'sender':_0x36799a[_0x8ea2('0x107')]===_0x8ea2('0x136')?_0x36799a[_0x8ea2('0x7f')]?_0x36799a[_0x8ea2('0x7f')][_0x8ea2('0x105')]:'System':_0x36799a[_0x8ea2('0x75')][_0x8ea2('0x126')]+(_0x36799a[_0x8ea2('0x75')]['lastName']?'\x20'+_0x36799a[_0x8ea2('0x75')][_0x8ea2('0x127')]:''),'body':_0x36799a[_0x8ea2('0xed')]?_0x36799a[_0x8ea2('0xed')][_0x8ea2('0xe7')]:_0x36799a[_0x8ea2('0xc7')],'direction':_0x36799a[_0x8ea2('0x107')]===_0x8ea2('0x136')?'A':'C','secret':_0x36799a[_0x8ea2('0x11c')],'read':_0x36799a[_0x8ea2('0x129')],'attachment':_0x36799a['Attachment']};})[_0x8ea2('0x77')]()};return ejs[_0x8ea2('0x137')](path[_0x8ea2('0xf0')](config[_0x8ea2('0xf1')],'server',_0x8ea2('0x138'),_0x8ea2('0x139')),{'interaction':_0xc099b6})[_0x8ea2('0x25')](function(_0x10d2b3){var _0x12a217=path[_0x8ea2('0xf0')](_0x2dfabc,_0x8ea2('0x13a')+_0x103c43['id']+'-'+_0x5b929c+'.pdf');var _0x44b0dc={'path':_0x12a217,'channel':_0x8ea2('0x12b'),'interactionId':_0x103c43['id']};return pdf['createPdfFromHTML'](_0x10d2b3,_0x44b0dc);})[_0x8ea2('0x25')](function(){return new BPromise(function(_0x27f5e9,_0x19b678){zipdir(_0x2dfabc,{'saveTo':_0x39000d},function(_0x50ebcd,_0x5d6c63){if(_0x50ebcd)return _0x19b678(_0x50ebcd);return _0x27f5e9(_0x5d6c63);});})[_0x8ea2('0x25')](function(){return new BPromise(function(_0x55b3a1,_0x57e228){rimraf(_0x2dfabc,function(_0x3c669b){if(_0x3c669b)_0x57e228(_0x3c669b);return _0x55b3a1();});});})[_0x8ea2('0x25')](function(){return _0x34e1c5['download'](_0x39000d,_0x515049,function(_0x688d21){if(_0x688d21){console[_0x8ea2('0x13b')]('err',_0x688d21);}else{fs[_0x8ea2('0x13c')](_0x39000d);}});});});}else{return _0x34e1c5['sendStatus'](0xc8);}})[_0x8ea2('0x2e')](handleError(_0x34e1c5,null));};
\ No newline at end of file
index b4d772c..cf5cd1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98c8=['Users','map','findAll','then','unreadMessages','emit','catch','hook','exports','events','../../mysqldb','update','remove','getUsers','setDataValue'];(function(_0x3ba3bb,_0x4cc522){var _0x24d31e=function(_0x4f84c5){while(--_0x4f84c5){_0x3ba3bb['push'](_0x3ba3bb['shift']());}};_0x24d31e(++_0x4cc522);}(_0x98c8,0xea));var _0x898c=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x98c8[_0x53ccf2];return _0x5a2964;};'use strict';var EventEmitter=require(_0x898c('0x0'));var ChatInteraction=require(_0x898c('0x1'))['db']['ChatInteraction'];var ChatMessage=require('../../mysqldb')['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x898c('0x2'),'afterDestroy':_0x898c('0x3')};function emitEvent(_0x1508a7){return function(_0x5d091a,_0x23c550,_0x1305e0){_0x5d091a[_0x898c('0x4')]({'attributes':['id'],'raw':!![]})['then'](function(_0x411d4a){_0x5d091a[_0x898c('0x5')](_0x898c('0x6'),_0x411d4a[_0x898c('0x7')](function(_0x136e86){return{'id':_0x136e86['id']};}));return ChatMessage[_0x898c('0x8')]({'where':{'ChatInteractionId':_0x5d091a['id'],'direction':'in','read':![]},'raw':!![]});})[_0x898c('0x9')](function(_0x306697){_0x5d091a[_0x898c('0x5')](_0x898c('0xa'),_0x306697['length']);ChatInteractionEvents[_0x898c('0xb')](_0x1508a7+':'+_0x5d091a['id'],_0x5d091a);ChatInteractionEvents['emit'](_0x1508a7,_0x5d091a);_0x1305e0(null);})[_0x898c('0xc')](_0x1305e0(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction[_0x898c('0xd')](e,emitEvent(event));}}module[_0x898c('0xe')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x7d83=['events','ChatInteraction','../../mysqldb','setMaxListeners','save','update','then','setDataValue','map','findAll','unreadMessages','length','emit','hasOwnProperty','exports'];(function(_0x33306b,_0x2c144d){var _0x7b7012=function(_0x324870){while(--_0x324870){_0x33306b['push'](_0x33306b['shift']());}};_0x7b7012(++_0x2c144d);}(_0x7d83,0xff));var _0x37d8=function(_0x3b231a,_0x53a00d){_0x3b231a=_0x3b231a-0x0;var _0x18d67a=_0x7d83[_0x3b231a];return _0x18d67a;};'use strict';var EventEmitter=require(_0x37d8('0x0'));var ChatInteraction=require('../../mysqldb')['db'][_0x37d8('0x1')];var ChatMessage=require(_0x37d8('0x2'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x37d8('0x3')](0x0);var events={'afterCreate':_0x37d8('0x4'),'afterUpdate':_0x37d8('0x5'),'afterDestroy':'remove'};function emitEvent(_0x18525b){return function(_0x1ade7e,_0x5d1a9d,_0x55a43d){_0x1ade7e['getUsers']({'attributes':['id'],'raw':!![]})[_0x37d8('0x6')](function(_0x52bb6c){_0x1ade7e[_0x37d8('0x7')]('Users',_0x52bb6c[_0x37d8('0x8')](function(_0x134c0c){return{'id':_0x134c0c['id']};}));return ChatMessage[_0x37d8('0x9')]({'where':{'ChatInteractionId':_0x1ade7e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x37d8('0x6')](function(_0x11a493){_0x1ade7e[_0x37d8('0x7')](_0x37d8('0xa'),_0x11a493[_0x37d8('0xb')]);ChatInteractionEvents['emit'](_0x18525b+':'+_0x1ade7e['id'],_0x1ade7e);ChatInteractionEvents[_0x37d8('0xc')](_0x18525b,_0x1ade7e);_0x55a43d(null);})['catch'](_0x55a43d(null));};}for(var e in events){if(events[_0x37d8('0xd')](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module[_0x37d8('0xe')]=ChatInteractionEvents;
\ No newline at end of file
index 8bbb883..f2f4816 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b7f=['bluebird','request-promise','rimraf','./chatInteraction.attributes','exports','define','chat_interactions','closed','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','lodash','util','../../config/logger','moment'];(function(_0x4d498c,_0x2d3bc2){var _0x487028=function(_0xe4740d){while(--_0xe4740d){_0x4d498c['push'](_0x4d498c['shift']());}};_0x487028(++_0x2d3bc2);}(_0x8b7f,0x10a));var _0xf8b7=function(_0x5242af,_0x4ae6ef){_0x5242af=_0x5242af-0x0;var _0x4e79a7=_0x8b7f[_0x5242af];return _0x4e79a7;};'use strict';var _=require(_0xf8b7('0x0'));var util=require(_0xf8b7('0x1'));var logger=require(_0xf8b7('0x2'))('api');var moment=require(_0xf8b7('0x3'));var BPromise=require(_0xf8b7('0x4'));var rp=require(_0xf8b7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf8b7('0x6'));var config=require('../../config/environment');var attributes=require(_0xf8b7('0x7'));module[_0xf8b7('0x8')]=function(_0x5d44b5,_0x3c0e3c){return _0x5d44b5[_0xf8b7('0x9')]('ChatInteraction',attributes,{'tableName':_0xf8b7('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xe2fa2d,_0x5efe88,_0x104ba2){if(_0xe2fa2d['changed'](_0xf8b7('0xb'))){_0xe2fa2d['closedAt']=moment()[_0xf8b7('0xc')](_0xf8b7('0xd'));}_0x104ba2(null,_0xe2fa2d);}},'charset':_0xf8b7('0xe'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x1562=['rimraf','../../config/environment','exports','ChatInteraction','chat_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','lodash','util','bluebird','request-promise','path'];(function(_0x5bb702,_0x331110){var _0x576fbd=function(_0x46b396){while(--_0x46b396){_0x5bb702['push'](_0x5bb702['shift']());}};_0x576fbd(++_0x331110);}(_0x1562,0x1db));var _0x2156=function(_0x1d6a82,_0x37c315){_0x1d6a82=_0x1d6a82-0x0;var _0x5834ac=_0x1562[_0x1d6a82];return _0x5834ac;};'use strict';var _=require(_0x2156('0x0'));var util=require(_0x2156('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x2156('0x2'));var rp=require(_0x2156('0x3'));var fs=require('fs');var path=require(_0x2156('0x4'));var rimraf=require(_0x2156('0x5'));var config=require(_0x2156('0x6'));var attributes=require('./chatInteraction.attributes');module[_0x2156('0x7')]=function(_0x3fbd76,_0x30c138){return _0x3fbd76['define'](_0x2156('0x8'),attributes,{'tableName':_0x2156('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1df25e,_0x4302fe,_0xc15c87){if(_0x1df25e[_0x2156('0xa')]('closed')){_0x1df25e[_0x2156('0xb')]=moment()[_0x2156('0xc')](_0x2156('0xd'));}_0xc15c87(null,_0x1df25e);}},'charset':_0x2156('0xe'),'collate':_0x2156('0xf')});};
\ No newline at end of file
index 55c4753..d1f0480 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf6e=['../../config/utils','../../config/logger','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','request','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','ChatInteraction,\x20%s,\x20%s','message','result','catch','ChatInteraction','update','options','raw','attributes','limit','UpdateChatInteraction','AddTagsToChatInteraction','find','where','body','ids','omit','AddTags','stringify','lodash','util','moment','../../mysqldb'];(function(_0x2a45fa,_0x444045){var _0x16a841=function(_0x14e18c){while(--_0x14e18c){_0x2a45fa['push'](_0x2a45fa['shift']());}};_0x16a841(++_0x444045);}(_0xdf6e,0xf2));var _0xedf6=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xdf6e[_0x47a7d0];return _0xb9bd08;};'use strict';var _=require(_0xedf6('0x0'));var util=require(_0xedf6('0x1'));var moment=require(_0xedf6('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xedf6('0x3'))['db'];var utils=require(_0xedf6('0x4'));var logger=require(_0xedf6('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xedf6('0x6'));var client=jayson['client'][_0xedf6('0x7')]({'port':0x232a});config[_0xedf6('0x8')]=_[_0xedf6('0x9')](config[_0xedf6('0x8')],{'host':_0xedf6('0xa'),'port':0x18eb});var socket=require(_0xedf6('0xb'))(new Redis(config[_0xedf6('0x8')]));require(_0xedf6('0xc'))[_0xedf6('0xd')](socket);function respondWithRpcPromise(_0x536569,_0x206176,_0x198a3f){return new BPromise(function(_0x4b2e50,_0x2697c7){return client[_0xedf6('0xe')](_0x536569,_0x198a3f)[_0xedf6('0xf')](function(_0x361e16){logger[_0xedf6('0x10')]('ChatInteraction,\x20%s,\x20%s',_0x206176,_0xedf6('0x11'));logger[_0xedf6('0x12')](_0xedf6('0x13'),_0x206176,_0xedf6('0x11'),JSON['stringify'](_0x361e16));if(_0x361e16[_0xedf6('0x14')]){if(_0x361e16['error'][_0xedf6('0x15')]===0x1f4){logger['error'](_0xedf6('0x16'),_0x206176,_0x361e16[_0xedf6('0x14')][_0xedf6('0x17')]);return _0x2697c7(_0x361e16[_0xedf6('0x14')]['message']);}logger[_0xedf6('0x14')]('ChatInteraction,\x20%s,\x20%s',_0x206176,_0x361e16[_0xedf6('0x14')]['message']);return _0x4b2e50(_0x361e16['error'][_0xedf6('0x17')]);}else{logger[_0xedf6('0x10')](_0xedf6('0x16'),_0x206176,'request\x20sent');_0x4b2e50(_0x361e16[_0xedf6('0x18')]['message']);}})[_0xedf6('0x19')](function(_0x4d4328){logger[_0xedf6('0x14')](_0xedf6('0x16'),_0x206176,_0x4d4328);_0x2697c7(_0x4d4328);});});}exports['UpdateChatInteraction']=function(_0x2cd341){var _0x216f36=this;return new Promise(function(_0xdc7f16,_0x1f5e85){return db[_0xedf6('0x1a')][_0xedf6('0x1b')](_0x2cd341['body'],{'raw':_0x2cd341['options']?_0x2cd341[_0xedf6('0x1c')][_0xedf6('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2cd341[_0xedf6('0x1c')]?_0x2cd341['options']['where']||null:null,'attributes':_0x2cd341['options']?_0x2cd341['options'][_0xedf6('0x1e')]||null:null,'limit':_0x2cd341[_0xedf6('0x1c')]?_0x2cd341[_0xedf6('0x1c')][_0xedf6('0x1f')]||null:null})[_0xedf6('0xf')](function(_0x4f0f76){logger[_0xedf6('0x10')](_0xedf6('0x20'),_0x2cd341);logger[_0xedf6('0x12')](_0xedf6('0x20'),_0x2cd341,JSON['stringify'](_0x4f0f76));_0xdc7f16(_0x4f0f76);})['catch'](function(_0x2cfdb2){logger[_0xedf6('0x14')](_0xedf6('0x20'),_0x2cfdb2[_0xedf6('0x17')],_0x2cd341);_0x1f5e85(_0x216f36[_0xedf6('0x14')](0x1f4,_0x2cfdb2[_0xedf6('0x17')]));});});};exports[_0xedf6('0x21')]=function(_0x3edcfa){return new Promise(function(_0xe5feee,_0x1d36b3){return db[_0xedf6('0x1a')][_0xedf6('0x22')]({'where':_0x3edcfa[_0xedf6('0x1c')]?_0x3edcfa[_0xedf6('0x1c')][_0xedf6('0x23')]||null:null})[_0xedf6('0xf')](function(_0x24612c){if(_0x24612c){return _0x24612c['addTags'](_0x3edcfa[_0xedf6('0x24')][_0xedf6('0x25')],_[_0xedf6('0x26')](_0x3edcfa['body'],['ids','id'])||{});}})['spread'](function(_0x1dd5c0){logger[_0xedf6('0x10')](_0xedf6('0x27'),_0x3edcfa);logger['debug'](_0xedf6('0x27'),_0x3edcfa,JSON[_0xedf6('0x28')](_0x1dd5c0));_0xe5feee(_0x1dd5c0);})[_0xedf6('0x19')](function(_0x4d589c){logger[_0xedf6('0x14')]('AddTags',_0x4d589c[_0xedf6('0x17')],_0x3edcfa);_0x1d36b3(_this[_0xedf6('0x14')](0x1f4,_0x4d589c[_0xedf6('0x17')]));});});};
\ No newline at end of file
+var _0xdef9=['find','where','ids','omit','spread','AddTags','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc','jayson/promise','client','http','redis','defaults','localhost','./chatInteraction.socket','register','request','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','message','catch','UpdateChatInteraction','ChatInteraction','update','body','options','raw','attributes','then','AddTagsToChatInteraction'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0xdef9,0x196));var _0x9def=function(_0x35d294,_0x3a9b4){_0x35d294=_0x35d294-0x0;var _0xb9ae9a=_0xdef9[_0x35d294];return _0xb9ae9a;};'use strict';var _=require(_0x9def('0x0'));var util=require(_0x9def('0x1'));var moment=require(_0x9def('0x2'));var BPromise=require(_0x9def('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9def('0x4'));var db=require(_0x9def('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9def('0x6'));var config=require('../../config/environment');var jayson=require(_0x9def('0x7'));var client=jayson[_0x9def('0x8')][_0x9def('0x9')]({'port':0x232a});config[_0x9def('0xa')]=_[_0x9def('0xb')](config[_0x9def('0xa')],{'host':_0x9def('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9def('0xa')]));require(_0x9def('0xd'))[_0x9def('0xe')](socket);function respondWithRpcPromise(_0x3365d1,_0x54a05c,_0x440809){return new BPromise(function(_0x3bcc87,_0x43fbc5){return client[_0x9def('0xf')](_0x3365d1,_0x440809)['then'](function(_0x46db0a){logger[_0x9def('0x10')](_0x9def('0x11'),_0x54a05c,_0x9def('0x12'));logger[_0x9def('0x13')](_0x9def('0x14'),_0x54a05c,_0x9def('0x12'),JSON['stringify'](_0x46db0a));if(_0x46db0a[_0x9def('0x15')]){if(_0x46db0a[_0x9def('0x15')][_0x9def('0x16')]===0x1f4){logger[_0x9def('0x15')](_0x9def('0x11'),_0x54a05c,_0x46db0a['error']['message']);return _0x43fbc5(_0x46db0a['error'][_0x9def('0x17')]);}logger[_0x9def('0x15')]('ChatInteraction,\x20%s,\x20%s',_0x54a05c,_0x46db0a[_0x9def('0x15')]['message']);return _0x3bcc87(_0x46db0a['error'][_0x9def('0x17')]);}else{logger[_0x9def('0x10')](_0x9def('0x11'),_0x54a05c,'request\x20sent');_0x3bcc87(_0x46db0a['result'][_0x9def('0x17')]);}})[_0x9def('0x18')](function(_0x15fc53){logger[_0x9def('0x15')]('ChatInteraction,\x20%s,\x20%s',_0x54a05c,_0x15fc53);_0x43fbc5(_0x15fc53);});});}exports[_0x9def('0x19')]=function(_0x409790){var _0x2a90ca=this;return new Promise(function(_0xe2c879,_0x320de3){return db[_0x9def('0x1a')][_0x9def('0x1b')](_0x409790[_0x9def('0x1c')],{'raw':_0x409790['options']?_0x409790[_0x9def('0x1d')][_0x9def('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x409790[_0x9def('0x1d')]?_0x409790[_0x9def('0x1d')]['where']||null:null,'attributes':_0x409790[_0x9def('0x1d')]?_0x409790[_0x9def('0x1d')][_0x9def('0x1f')]||null:null,'limit':_0x409790[_0x9def('0x1d')]?_0x409790[_0x9def('0x1d')]['limit']||null:null})[_0x9def('0x20')](function(_0xd2fa45){logger[_0x9def('0x10')](_0x9def('0x19'),_0x409790);logger[_0x9def('0x13')]('UpdateChatInteraction',_0x409790,JSON['stringify'](_0xd2fa45));_0xe2c879(_0xd2fa45);})[_0x9def('0x18')](function(_0x1cec37){logger['error']('UpdateChatInteraction',_0x1cec37[_0x9def('0x17')],_0x409790);_0x320de3(_0x2a90ca[_0x9def('0x15')](0x1f4,_0x1cec37[_0x9def('0x17')]));});});};exports[_0x9def('0x21')]=function(_0x1432c2){return new Promise(function(_0x5555c2,_0x55d77b){return db[_0x9def('0x1a')][_0x9def('0x22')]({'where':_0x1432c2['options']?_0x1432c2['options'][_0x9def('0x23')]||null:null})['then'](function(_0x1bcc7f){if(_0x1bcc7f){return _0x1bcc7f['addTags'](_0x1432c2[_0x9def('0x1c')][_0x9def('0x24')],_[_0x9def('0x25')](_0x1432c2['body'],[_0x9def('0x24'),'id'])||{});}})[_0x9def('0x26')](function(_0x1f82fb){logger[_0x9def('0x10')](_0x9def('0x27'),_0x1432c2);logger['debug'](_0x9def('0x27'),_0x1432c2,JSON['stringify'](_0x1f82fb));_0x5555c2(_0x1f82fb);})['catch'](function(_0x5d2fd4){logger[_0x9def('0x15')](_0x9def('0x27'),_0x5d2fd4[_0x9def('0x17')],_0x1432c2);_0x55d77b(_this['error'](0x1f4,_0x5d2fd4[_0x9def('0x17')]));});});};
\ No newline at end of file
index bc08603..956413c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa631=['update','removeListener','length','save','remove'];(function(_0x2d157f,_0x330119){var _0x58960f=function(_0x4f8508){while(--_0x4f8508){_0x2d157f['push'](_0x2d157f['shift']());}};_0x58960f(++_0x330119);}(_0xa631,0xe4));var _0x1a63=function(_0x59d89f,_0x195975){_0x59d89f=_0x59d89f-0x0;var _0x297bf2=_0xa631[_0x59d89f];return _0x297bf2;};'use strict';var ChatInteractionEvents=require('./chatInteraction.events');var events=[_0x1a63('0x0'),_0x1a63('0x1'),_0x1a63('0x2')];function createListener(_0x53c6fb,_0x265d0d){return function(_0x584ab0){_0x265d0d['emit'](_0x53c6fb,_0x584ab0);};}function removeListener(_0x2d36b7,_0x1def2e){return function(){ChatInteractionEvents[_0x1a63('0x3')](_0x2d36b7,_0x1def2e);};}exports['register']=function(_0x51ff47){for(var _0x5a2067=0x0,_0x5df65f=events[_0x1a63('0x4')];_0x5a2067<_0x5df65f;_0x5a2067++){var _0xf1cb96=events[_0x5a2067];var _0xd81213=createListener('chatInteraction:'+_0xf1cb96,_0x51ff47);ChatInteractionEvents['on'](_0xf1cb96,_0xd81213);}};
\ No newline at end of file
+var _0xd84e=['./chatInteraction.events','save','remove','update','emit','removeListener','register','length','chatInteraction:'];(function(_0x568657,_0x8a16b){var _0x4d8589=function(_0x41c43a){while(--_0x41c43a){_0x568657['push'](_0x568657['shift']());}};_0x4d8589(++_0x8a16b);}(_0xd84e,0x1a7));var _0xed84=function(_0x57a45b,_0x1d6529){_0x57a45b=_0x57a45b-0x0;var _0x9ab9c9=_0xd84e[_0x57a45b];return _0x9ab9c9;};'use strict';var ChatInteractionEvents=require(_0xed84('0x0'));var events=[_0xed84('0x1'),_0xed84('0x2'),_0xed84('0x3')];function createListener(_0x17e00a,_0x220e51){return function(_0x2851c8){_0x220e51[_0xed84('0x4')](_0x17e00a,_0x2851c8);};}function removeListener(_0x25da96,_0x37c733){return function(){ChatInteractionEvents[_0xed84('0x5')](_0x25da96,_0x37c733);};}exports[_0xed84('0x6')]=function(_0x15a730){for(var _0x1a99ef=0x0,_0x400cf8=events[_0xed84('0x7')];_0x1a99ef<_0x400cf8;_0x1a99ef++){var _0x3fcc2f=events[_0x1a99ef];var _0x531320=createListener(_0xed84('0x8')+_0x3fcc2f,_0x15a730);ChatInteractionEvents['on'](_0x3fcc2f,_0x531320);}};
\ No newline at end of file
index 4903995..1d4ea0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4db2=['put','chatinteraction:update','update','/:id/custom_update','customUpdate','abandon','/:id/close','close','delete','chatinteraction:destroy','removeTags','exports','util','path','express','Router','fs-extra','../../components/interaction/service','./chatInteraction.controller','get','/describe','isAuthenticated','describe','/:id','isChatInteractionAuthorized','/:id/attachment_download','attachmentDownload','getMessages','getMyMessages','/:id/download','download','post','create','/:id/vidaoo','diskStorage','join','root','server/files/attachments/','format','%s-%s','now','originalname','/:id/attachment_upload','single','file','/:id/messages','/:id/tags','tracked','chat','chatinteraction:addtags','addTags'];(function(_0x5d3bda,_0x4d10c1){var _0x5b6d20=function(_0x18bdcb){while(--_0x18bdcb){_0x5d3bda['push'](_0x5d3bda['shift']());}};_0x5b6d20(++_0x4d10c1);}(_0x4db2,0x10b));var _0x24db=function(_0x55abcb,_0x1c8ce0){_0x55abcb=_0x55abcb-0x0;var _0x10b891=_0x4db2[_0x55abcb];return _0x10b891;};'use strict';var multer=require('multer');var util=require(_0x24db('0x0'));var path=require(_0x24db('0x1'));var timeout=require('connect-timeout');var express=require(_0x24db('0x2'));var router=express[_0x24db('0x3')]();var fs_extra=require(_0x24db('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x24db('0x5'));var config=require('../../config/environment');var controller=require(_0x24db('0x6'));router[_0x24db('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x24db('0x8'),auth[_0x24db('0x9')](),controller[_0x24db('0xa')]);router[_0x24db('0x7')](_0x24db('0xb'),auth[_0x24db('0xc')](),controller['show']);router[_0x24db('0x7')](_0x24db('0xd'),auth[_0x24db('0xc')](),controller[_0x24db('0xe')]);router[_0x24db('0x7')]('/:id/messages',auth[_0x24db('0x9')](),controller[_0x24db('0xf')]);router['get']('/:id/my_messages',auth['isChatInteractionAuthorized'](),controller[_0x24db('0x10')]);router['get'](_0x24db('0x11'),auth[_0x24db('0x9')](),controller[_0x24db('0x12')]);router[_0x24db('0x13')]('/',auth['isAuthenticated'](),controller[_0x24db('0x14')]);router[_0x24db('0x13')](_0x24db('0x15'),auth[_0x24db('0x9')](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0x24db('0x16')]({'destination':function(_0x13e2e1,_0x467261,_0x14523e){_0x14523e(null,path[_0x24db('0x17')](config[_0x24db('0x18')],_0x24db('0x19')));},'filename':function(_0x2ac4a1,_0x17cb24,_0x3e825b){_0x3e825b(null,util[_0x24db('0x1a')](_0x24db('0x1b'),Date[_0x24db('0x1c')](),_0x17cb24[_0x24db('0x1d')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x24db('0x13')](_0x24db('0x1e'),upload[_0x24db('0x1f')](_0x24db('0x20')),controller['attachmentUpload']);router[_0x24db('0x13')](_0x24db('0x21'),auth[_0x24db('0xc')](),controller['addMessage']);router[_0x24db('0x13')](_0x24db('0x22'),auth[_0x24db('0x9')](),interaction[_0x24db('0x23')](_0x24db('0x24'),_0x24db('0x25')),controller[_0x24db('0x26')]);router[_0x24db('0x27')](_0x24db('0xb'),auth[_0x24db('0x9')](),interaction[_0x24db('0x23')](_0x24db('0x24'),_0x24db('0x28')),controller[_0x24db('0x29')]);router['put'](_0x24db('0x2a'),controller[_0x24db('0x2b')]);router['put']('/:id/abandon',auth[_0x24db('0xc')](),controller[_0x24db('0x2c')]);router[_0x24db('0x27')](_0x24db('0x2d'),controller[_0x24db('0x2e')]);router[_0x24db('0x2f')](_0x24db('0xb'),auth[_0x24db('0x9')](),interaction['tracked']('chat',_0x24db('0x30')),controller['destroy']);router[_0x24db('0x2f')]('/:id/tags',auth['isAuthenticated'](),controller[_0x24db('0x31')]);module[_0x24db('0x32')]=router;
\ No newline at end of file
+var _0x4b05=['file','attachmentUpload','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','chatinteraction:update','update','/:id/custom_update','customUpdate','abandon','/:id/close','close','delete','chatinteraction:destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./chatInteraction.controller','isAuthenticated','index','get','/describe','describe','/:id','isChatInteractionAuthorized','show','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','getMyMessages','/:id/download','download','post','create','diskStorage','join','root','server/files/attachments/','format','%s-%s','now','replace','single'];(function(_0x120123,_0x4eff59){var _0x3bec4c=function(_0x182818){while(--_0x182818){_0x120123['push'](_0x120123['shift']());}};_0x3bec4c(++_0x4eff59);}(_0x4b05,0x142));var _0x54b0=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x4b05[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x54b0('0x0'));var util=require(_0x54b0('0x1'));var path=require(_0x54b0('0x2'));var timeout=require(_0x54b0('0x3'));var express=require('express');var router=express[_0x54b0('0x4')]();var fs_extra=require(_0x54b0('0x5'));var auth=require(_0x54b0('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x54b0('0x7'));var controller=require(_0x54b0('0x8'));router['get']('/',auth[_0x54b0('0x9')](),controller[_0x54b0('0xa')]);router[_0x54b0('0xb')](_0x54b0('0xc'),auth['isAuthenticated'](),controller[_0x54b0('0xd')]);router[_0x54b0('0xb')](_0x54b0('0xe'),auth[_0x54b0('0xf')](),controller[_0x54b0('0x10')]);router['get']('/:id/attachment_download',auth[_0x54b0('0xf')](),controller[_0x54b0('0x11')]);router[_0x54b0('0xb')](_0x54b0('0x12'),auth[_0x54b0('0x9')](),controller[_0x54b0('0x13')]);router[_0x54b0('0xb')](_0x54b0('0x14'),auth['isChatInteractionAuthorized'](),controller[_0x54b0('0x15')]);router[_0x54b0('0xb')](_0x54b0('0x16'),auth[_0x54b0('0x9')](),controller[_0x54b0('0x17')]);router[_0x54b0('0x18')]('/',auth[_0x54b0('0x9')](),controller[_0x54b0('0x19')]);router[_0x54b0('0x18')]('/:id/vidaoo',auth[_0x54b0('0x9')](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0x54b0('0x1a')]({'destination':function(_0xfa0cd3,_0x38720c,_0x48cfb4){_0x48cfb4(null,path[_0x54b0('0x1b')](config[_0x54b0('0x1c')],_0x54b0('0x1d')));},'filename':function(_0x4a895f,_0x58c856,_0x5e069a){_0x5e069a(null,util[_0x54b0('0x1e')](_0x54b0('0x1f'),Date[_0x54b0('0x20')](),_0x58c856['originalname'][_0x54b0('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post']('/:id/attachment_upload',upload[_0x54b0('0x22')](_0x54b0('0x23')),controller[_0x54b0('0x24')]);router['post'](_0x54b0('0x12'),auth[_0x54b0('0xf')](),controller[_0x54b0('0x25')]);router['post'](_0x54b0('0x26'),auth['isAuthenticated'](),interaction[_0x54b0('0x27')](_0x54b0('0x28'),_0x54b0('0x29')),controller['addTags']);router['put'](_0x54b0('0xe'),auth[_0x54b0('0x9')](),interaction[_0x54b0('0x27')](_0x54b0('0x28'),_0x54b0('0x2a')),controller[_0x54b0('0x2b')]);router['put'](_0x54b0('0x2c'),controller[_0x54b0('0x2d')]);router['put']('/:id/abandon',auth[_0x54b0('0xf')](),controller[_0x54b0('0x2e')]);router['put'](_0x54b0('0x2f'),controller[_0x54b0('0x30')]);router[_0x54b0('0x31')](_0x54b0('0xe'),auth[_0x54b0('0x9')](),interaction[_0x54b0('0x27')](_0x54b0('0x28'),_0x54b0('0x32')),controller['destroy']);router[_0x54b0('0x31')](_0x54b0('0x26'),auth['isAuthenticated'](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
index a8cbc05..7d4fcef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x806a=['medium','INTEGER','sequelize','exports','TEXT'];(function(_0xefcc2e,_0x33020b){var _0x3cec91=function(_0x13e1b1){while(--_0x13e1b1){_0xefcc2e['push'](_0xefcc2e['shift']());}};_0x3cec91(++_0x33020b);}(_0x806a,0x142));var _0xa806=function(_0xf21795,_0x113cdb){_0xf21795=_0xf21795-0x0;var _0x50f919=_0x806a[_0xf21795];return _0x50f919;};'use strict';var Sequelize=require(_0xa806('0x0'));module[_0xa806('0x1')]={'body':{'type':Sequelize[_0xa806('0x2')](_0xa806('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xa806('0x4')]}};
\ No newline at end of file
+var _0x73ff=['BOOLEAN','INTEGER','sequelize','exports','medium'];(function(_0x5cab8b,_0x1e56e8){var _0x3ec3bf=function(_0x2bf408){while(--_0x2bf408){_0x5cab8b['push'](_0x5cab8b['shift']());}};_0x3ec3bf(++_0x1e56e8);}(_0x73ff,0xe3));var _0xf73f=function(_0x557bab,_0x24cfae){_0x557bab=_0x557bab-0x0;var _0x5b711c=_0x73ff[_0x557bab];return _0x5b711c;};'use strict';var Sequelize=require(_0xf73f('0x0'));module[_0xf73f('0x1')]={'body':{'type':Sequelize['TEXT'](_0xf73f('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xf73f('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xf73f('0x4')]}};
\ No newline at end of file
index c982dee..99ce8f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf7e=['showWebBar','-online','VoiceQueue','VoiceQueues','role','UserProfileSection','Agents','autoAssociation','UserProfileResource','isEmpty','agent','length','resourceId','push','ToId','read','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','then','destroy','end','error','send','index','ChatInternalMessage','rawAttributes','fieldName','type','key','model','map','name','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','describe','get','messages','lastMessageAt','createdAt','lastMessage','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','admin','user','fullname','userpic','internal','online','lastLoginAt','allowmessenger'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xcf7e,0xfa));var _0xecf7=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0xcf7e[_0x543084];return _0x306a57;};'use strict';var emlformat=require(_0xecf7('0x0'));var rimraf=require(_0xecf7('0x1'));var zipdir=require(_0xecf7('0x2'));var jsonpatch=require(_0xecf7('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xecf7('0x4'));var Mustache=require(_0xecf7('0x5'));var util=require(_0xecf7('0x6'));var path=require(_0xecf7('0x7'));var sox=require(_0xecf7('0x8'));var csv=require(_0xecf7('0x9'));var ejs=require(_0xecf7('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xecf7('0xb'));var squel=require(_0xecf7('0xc'));var crypto=require(_0xecf7('0xd'));var jsforce=require(_0xecf7('0xe'));var deskjs=require(_0xecf7('0xf'));var toCsv=require(_0xecf7('0x9'));var querystring=require('querystring');var Papa=require(_0xecf7('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xecf7('0x11'));var hardwareService=require(_0xecf7('0x12'));var logger=require(_0xecf7('0x13'))(_0xecf7('0x14'));var utils=require(_0xecf7('0x15'));var config=require(_0xecf7('0x16'));var licenseUtil=require(_0xecf7('0x17'));var db=require(_0xecf7('0x18'))['db'];config[_0xecf7('0x19')]=_[_0xecf7('0x1a')](config[_0xecf7('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xecf7('0x1b'))(new Redis(config[_0xecf7('0x19')]));require(_0xecf7('0x1c'))[_0xecf7('0x1d')](socket);function respondWithStatusCode(_0x5bc85c,_0xb69b57){_0xb69b57=_0xb69b57||0xcc;return function(_0x56d358){if(_0x56d358){return _0x5bc85c[_0xecf7('0x1e')](_0xb69b57);}return _0x5bc85c[_0xecf7('0x1f')](_0xb69b57)['end']();};}function respondWithResult(_0x4e3f4c,_0x4d5226){_0x4d5226=_0x4d5226||0xc8;return function(_0x4d8c0c){if(_0x4d8c0c){return _0x4e3f4c[_0xecf7('0x1f')](_0x4d5226)[_0xecf7('0x20')](_0x4d8c0c);}};}function respondWithFilteredResult(_0x4145a9,_0x467047){return function(_0x43af50){if(_0x43af50){var _0x759bcb=typeof _0x467047['offset']===_0xecf7('0x21')&&typeof _0x467047[_0xecf7('0x22')]===_0xecf7('0x21');var _0x5673cb=_0x43af50[_0xecf7('0x23')];var _0x232f21=_0x759bcb?0x0:_0x467047[_0xecf7('0x24')];var _0x250aa7=_0x759bcb?_0x43af50['count']:_0x467047[_0xecf7('0x24')]+_0x467047['limit'];var _0x2b5e6a;if(_0x250aa7>=_0x5673cb){_0x250aa7=_0x5673cb;_0x2b5e6a=0xc8;}else{_0x2b5e6a=0xce;}_0x4145a9[_0xecf7('0x1f')](_0x2b5e6a);return _0x4145a9[_0xecf7('0x25')](_0xecf7('0x26'),_0x232f21+'-'+_0x250aa7+'/'+_0x5673cb)[_0xecf7('0x20')](_0x43af50);}return null;};}function patchUpdates(_0x3ac7af){return function(_0x53b88a){try{jsonpatch['apply'](_0x53b88a,_0x3ac7af,!![]);}catch(_0x45bc01){return BPromise[_0xecf7('0x27')](_0x45bc01);}return _0x53b88a[_0xecf7('0x28')]();};}function saveUpdates(_0x1d2301,_0x5f0ff0){return function(_0x5a3c7c){if(_0x5a3c7c){return _0x5a3c7c['update'](_0x1d2301)[_0xecf7('0x29')](function(_0x43af3d){return _0x43af3d;});}return null;};}function removeEntity(_0x4598f8,_0x36b735){return function(_0x436fb7){if(_0x436fb7){return _0x436fb7[_0xecf7('0x2a')]()[_0xecf7('0x29')](function(){_0x4598f8['status'](0xcc)[_0xecf7('0x2b')]();});}};}function handleEntityNotFound(_0x3b794b,_0x29df60){return function(_0x32d1a5){if(!_0x32d1a5){_0x3b794b[_0xecf7('0x1e')](0x194);}return _0x32d1a5;};}function handleError(_0x5c9228,_0x339ceb){_0x339ceb=_0x339ceb||0x1f4;return function(_0x3e73a0){logger[_0xecf7('0x2c')](_0x3e73a0['stack']);if(_0x3e73a0['name']){delete _0x3e73a0['name'];}_0x5c9228['status'](_0x339ceb)[_0xecf7('0x2d')](_0x3e73a0);};}exports[_0xecf7('0x2e')]=function(_0x423f65,_0x5318b9){var _0x4f6064={},_0x415da7={},_0x42e0e5={'count':0x0,'rows':[]};var _0xeda4e1=_['map'](db[_0xecf7('0x2f')][_0xecf7('0x30')],function(_0x507e76){return{'name':_0x507e76[_0xecf7('0x31')],'type':_0x507e76[_0xecf7('0x32')][_0xecf7('0x33')]};});_0x415da7[_0xecf7('0x34')]=_[_0xecf7('0x35')](_0xeda4e1,_0xecf7('0x36'));_0x415da7[_0xecf7('0x37')]=_[_0xecf7('0x38')](_0x423f65['query']);_0x415da7[_0xecf7('0x39')]=_[_0xecf7('0x3a')](_0x415da7[_0xecf7('0x34')],_0x415da7[_0xecf7('0x37')]);_0x4f6064[_0xecf7('0x3b')]=_[_0xecf7('0x3a')](_0x415da7[_0xecf7('0x34')],qs[_0xecf7('0x3c')](_0x423f65[_0xecf7('0x37')][_0xecf7('0x3c')]));_0x4f6064[_0xecf7('0x3b')]=_0x4f6064['attributes']['length']?_0x4f6064[_0xecf7('0x3b')]:_0x415da7['model'];if(!_0x423f65[_0xecf7('0x37')][_0xecf7('0x3d')](_0xecf7('0x3e'))){_0x4f6064['limit']=qs[_0xecf7('0x22')](_0x423f65['query'][_0xecf7('0x22')]);_0x4f6064['offset']=qs['offset'](_0x423f65[_0xecf7('0x37')][_0xecf7('0x24')]);}_0x4f6064[_0xecf7('0x3f')]=qs[_0xecf7('0x40')](_0x423f65['query'][_0xecf7('0x40')]);_0x4f6064[_0xecf7('0x41')]=qs[_0xecf7('0x39')](_['pick'](_0x423f65[_0xecf7('0x37')],_0x415da7['filters']),_0xeda4e1);if(_0x423f65[_0xecf7('0x37')][_0xecf7('0x42')]){_0x4f6064[_0xecf7('0x41')]=_[_0xecf7('0x43')](_0x4f6064[_0xecf7('0x41')],{'$or':_[_0xecf7('0x35')](_0xeda4e1,function(_0x23271c){if(_0x23271c[_0xecf7('0x32')]!==_0xecf7('0x44')){var _0x460d6c={};_0x460d6c[_0x23271c['name']]={'$like':'%'+_0x423f65['query'][_0xecf7('0x42')]+'%'};return _0x460d6c;}})});}_0x4f6064=_['merge']({},_0x4f6064,_0x423f65[_0xecf7('0x45')]);var _0x312aff={'where':_0x4f6064[_0xecf7('0x41')]};return db[_0xecf7('0x2f')][_0xecf7('0x23')](_0x312aff)[_0xecf7('0x29')](function(_0x52a441){_0x42e0e5['count']=_0x52a441;if(_0x423f65[_0xecf7('0x37')][_0xecf7('0x46')]){_0x4f6064[_0xecf7('0x47')]=[{'all':!![]}];}return db['ChatInternalMessage'][_0xecf7('0x48')](_0x4f6064);})[_0xecf7('0x29')](function(_0x56a121){_0x42e0e5[_0xecf7('0x49')]=_0x56a121;return _0x42e0e5;})[_0xecf7('0x29')](respondWithFilteredResult(_0x5318b9,_0x4f6064))[_0xecf7('0x4a')](handleError(_0x5318b9,null));};exports[_0xecf7('0x4b')]=function(_0x5b097c,_0x16d875){var _0x24316f={'raw':!![],'where':{'id':_0x5b097c[_0xecf7('0x4c')]['id']}},_0x365885={};_0x365885[_0xecf7('0x34')]=_[_0xecf7('0x38')](db[_0xecf7('0x2f')][_0xecf7('0x30')]);_0x365885[_0xecf7('0x37')]=_[_0xecf7('0x38')](_0x5b097c['query']);_0x365885[_0xecf7('0x39')]=_[_0xecf7('0x3a')](_0x365885[_0xecf7('0x34')],_0x365885[_0xecf7('0x37')]);_0x24316f[_0xecf7('0x3b')]=_['intersection'](_0x365885[_0xecf7('0x34')],qs[_0xecf7('0x3c')](_0x5b097c[_0xecf7('0x37')][_0xecf7('0x3c')]));_0x24316f[_0xecf7('0x3b')]=_0x24316f['attributes']['length']?_0x24316f['attributes']:_0x365885[_0xecf7('0x34')];if(_0x5b097c[_0xecf7('0x37')]['includeAll']){_0x24316f[_0xecf7('0x47')]=[{'all':!![]}];}_0x24316f=_[_0xecf7('0x43')]({},_0x24316f,_0x5b097c[_0xecf7('0x45')]);return db[_0xecf7('0x2f')][_0xecf7('0x4d')](_0x24316f)[_0xecf7('0x29')](handleEntityNotFound(_0x16d875,null))[_0xecf7('0x29')](respondWithResult(_0x16d875,null))[_0xecf7('0x4a')](handleError(_0x16d875,null));};exports[_0xecf7('0x4e')]=function(_0x573f61,_0x58e227){return db[_0xecf7('0x2f')]['create'](_0x573f61[_0xecf7('0x4f')],{})[_0xecf7('0x29')](respondWithResult(_0x58e227,0xc9))[_0xecf7('0x4a')](handleError(_0x58e227,null));};exports[_0xecf7('0x50')]=function(_0x5a85de,_0x4f286c){if(_0x5a85de[_0xecf7('0x4f')]['id']){delete _0x5a85de[_0xecf7('0x4f')]['id'];}return db[_0xecf7('0x2f')][_0xecf7('0x4d')]({'where':{'id':_0x5a85de[_0xecf7('0x4c')]['id']}})[_0xecf7('0x29')](handleEntityNotFound(_0x4f286c,null))['then'](saveUpdates(_0x5a85de[_0xecf7('0x4f')],null))[_0xecf7('0x29')](respondWithResult(_0x4f286c,null))[_0xecf7('0x4a')](handleError(_0x4f286c,null));};exports[_0xecf7('0x2a')]=function(_0x2f5880,_0x5922bc){return db[_0xecf7('0x2f')]['find']({'where':{'id':_0x2f5880[_0xecf7('0x4c')]['id']}})[_0xecf7('0x29')](handleEntityNotFound(_0x5922bc,null))['then'](removeEntity(_0x5922bc,null))[_0xecf7('0x4a')](handleError(_0x5922bc,null));};exports[_0xecf7('0x51')]=function(_0x197a5e,_0x103e2a){return db['ChatInternalMessage']['describe']()[_0xecf7('0x29')](respondWithResult(_0x103e2a,null))[_0xecf7('0x4a')](handleError(_0x103e2a,null));};function wrapUser(_0x8a1265){return function(_0x5548a1){var _0x22a6e2=_0x8a1265[_0xecf7('0x52')]({'plain':!![]});_0x22a6e2[_0xecf7('0x53')]=[];if(_0x5548a1){_0x22a6e2[_0xecf7('0x54')]=_0x5548a1[_0xecf7('0x55')];_0x22a6e2[_0xecf7('0x56')]=_0x5548a1;}else{_0x22a6e2['lastMessageAt']=moment(0x0)['format'](_0xecf7('0x57'));_0x22a6e2[_0xecf7('0x56')]={};}return _0x22a6e2;};}exports[_0xecf7('0x58')]=function(_0x156dbc,_0x1f7ba7,_0x48f933){var _0x564d75=[];return db[_0xecf7('0x59')][_0xecf7('0x48')]({'where':{'role':['agent',_0xecf7('0x5a'),_0xecf7('0x5b')]},'attributes':['id',_0xecf7('0x5c'),'name','role',_0xecf7('0x5d'),_0xecf7('0x5e'),_0xecf7('0x5f'),_0xecf7('0x60'),_0xecf7('0x61'),_0xecf7('0x62')],'order':qs['sort'](_0xecf7('0x63')),'include':[{'model':db[_0xecf7('0x64')],'as':_0xecf7('0x65'),'attributes':['id',_0xecf7('0x36'),_0xecf7('0x32')],'through':{'attributes':[]}}]})[_0xecf7('0x29')](function(_0x43fa28){if(_0x43fa28){var _0x20a495=_0x156dbc['user']['get']({'plain':!![]});if(!_0x20a495)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x20a495[_0xecf7('0x66')]===_0xecf7('0x5b')){return db[_0xecf7('0x67')][_0xecf7('0x4d')]({'where':{'name':_0xecf7('0x68'),'userProfileId':_0x20a495['userProfileId']},'raw':!![]})[_0xecf7('0x29')](function(_0x18cfff){if(_0x18cfff){if(_0x18cfff[_0xecf7('0x69')]===0x0){return db[_0xecf7('0x6a')][_0xecf7('0x48')]({'where':{'sectionId':_0x18cfff['id']},'raw':!![]})[_0xecf7('0x29')](function(_0x4ddbc4){var _0x3a99cb=[];if(_[_0xecf7('0x6b')](_0x4ddbc4)){_0x3a99cb=_[_0xecf7('0x42')](_0x43fa28,function(_0x58d177){if(_0x58d177['role']!==_0xecf7('0x6c')){return _0x58d177;}});return _0x3a99cb;}else{for(var _0x25d59d=0x0;_0x25d59d<_0x43fa28[_0xecf7('0x6d')];_0x25d59d++){var _0xfbb81a=_0x43fa28[_0x25d59d];if(_0xfbb81a['role']==='agent'){var _0x49329b=_[_0xecf7('0x4d')](_0x4ddbc4,function(_0x2e5ddc){return _0x2e5ddc[_0xecf7('0x6e')]===_0xfbb81a['id'];});if(_0x49329b)_0x3a99cb['push'](_0xfbb81a);}else{_0x3a99cb[_0xecf7('0x6f')](_0xfbb81a);}}return _0x3a99cb;}});}else{return _0x43fa28;}}else{var _0x5517f9=_[_0xecf7('0x42')](_0x43fa28,function(_0x265221){if(_0x265221['role']!==_0xecf7('0x6c')){return _0x265221;}});return _0x5517f9;}});}else{return _0x43fa28;}}})['then'](function(_0x500db3){var _0x360954=[];if(_0x500db3){_0x564d75=_0x500db3;for(var _0x425602=0x0;_0x425602<_0x500db3['length'];_0x425602+=0x1){_0x564d75[_0x425602][_0xecf7('0x53')]=[];_0x360954[_0xecf7('0x6f')](db[_0xecf7('0x2f')][_0xecf7('0x4d')]({'where':{'FromId':[_0x156dbc[_0xecf7('0x5b')]['id'],_0x500db3[_0x425602]['id']],'ToId':[_0x156dbc[_0xecf7('0x5b')]['id'],_0x500db3[_0x425602]['id']],'ChatGroupId':null},'attributes':['id',_0xecf7('0x55'),'FromId',_0xecf7('0x70'),_0xecf7('0x71'),_0xecf7('0x4f')],'order':qs[_0xecf7('0x40')](_0xecf7('0x72')),'limit':0x1,'offset':0x0,'raw':!![]})['then'](wrapUser(_0x500db3[_0x425602])));}return BPromise[_0xecf7('0x73')](_0x360954);}return[];})['then'](function(_0x5ca5d3){return{'rows':_0x5ca5d3,'count':_0x5ca5d3['length']};})[_0xecf7('0x29')](respondWithResult(_0x1f7ba7,null))[_0xecf7('0x4a')](handleError(_0x1f7ba7,null));};
\ No newline at end of file
+var _0x89bf=['user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','isEmpty','agent','resourceId','push','FromId','-createdAt','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatInternalMessage.socket','sendStatus','status','end','undefined','limit','offset','count','Content-Range','json','apply','reject','save','update','then','stack','name','index','map','ChatInternalMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','length','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','params','fields','find','catch','create','body','destroy','describe','get','messages','createdAt','lastMessage','lastMessageAt','getUsers','User','admin','fullname','role','internal','online','lastLoginAt','-online','VoiceQueue','VoiceQueues'];(function(_0x223844,_0x4f9175){var _0x1b8013=function(_0x5993ac){while(--_0x5993ac){_0x223844['push'](_0x223844['shift']());}};_0x1b8013(++_0x4f9175);}(_0x89bf,0xda));var _0xf89b=function(_0x1cb88d,_0x588ba3){_0x1cb88d=_0x1cb88d-0x0;var _0x95a661=_0x89bf[_0x1cb88d];return _0x95a661;};'use strict';var emlformat=require(_0xf89b('0x0'));var rimraf=require(_0xf89b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf89b('0x2'));var rp=require(_0xf89b('0x3'));var moment=require(_0xf89b('0x4'));var BPromise=require(_0xf89b('0x5'));var Mustache=require(_0xf89b('0x6'));var util=require(_0xf89b('0x7'));var path=require(_0xf89b('0x8'));var sox=require(_0xf89b('0x9'));var csv=require(_0xf89b('0xa'));var ejs=require(_0xf89b('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf89b('0xc'));var squel=require('squel');var crypto=require(_0xf89b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf89b('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf89b('0xf'));var Redis=require(_0xf89b('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xf89b('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf89b('0x12'));var utils=require(_0xf89b('0x13'));var config=require(_0xf89b('0x14'));var licenseUtil=require(_0xf89b('0x15'));var db=require(_0xf89b('0x16'))['db'];config[_0xf89b('0x17')]=_[_0xf89b('0x18')](config[_0xf89b('0x17')],{'host':_0xf89b('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf89b('0x17')]));require(_0xf89b('0x1a'))['register'](socket);function respondWithStatusCode(_0x22664b,_0x4441b7){_0x4441b7=_0x4441b7||0xcc;return function(_0x49024f){if(_0x49024f){return _0x22664b[_0xf89b('0x1b')](_0x4441b7);}return _0x22664b[_0xf89b('0x1c')](_0x4441b7)[_0xf89b('0x1d')]();};}function respondWithResult(_0x2e1695,_0x110e7b){_0x110e7b=_0x110e7b||0xc8;return function(_0xb01e5e){if(_0xb01e5e){return _0x2e1695[_0xf89b('0x1c')](_0x110e7b)['json'](_0xb01e5e);}};}function respondWithFilteredResult(_0x233ca9,_0xfad240){return function(_0xb9dd83){if(_0xb9dd83){var _0x56c01d=typeof _0xfad240['offset']===_0xf89b('0x1e')&&typeof _0xfad240[_0xf89b('0x1f')]===_0xf89b('0x1e');var _0x26b030=_0xb9dd83['count'];var _0xeab306=_0x56c01d?0x0:_0xfad240[_0xf89b('0x20')];var _0x1699d6=_0x56c01d?_0xb9dd83[_0xf89b('0x21')]:_0xfad240['offset']+_0xfad240[_0xf89b('0x1f')];var _0x3f0ec2;if(_0x1699d6>=_0x26b030){_0x1699d6=_0x26b030;_0x3f0ec2=0xc8;}else{_0x3f0ec2=0xce;}_0x233ca9[_0xf89b('0x1c')](_0x3f0ec2);return _0x233ca9['set'](_0xf89b('0x22'),_0xeab306+'-'+_0x1699d6+'/'+_0x26b030)[_0xf89b('0x23')](_0xb9dd83);}return null;};}function patchUpdates(_0x17726d){return function(_0x108b71){try{jsonpatch[_0xf89b('0x24')](_0x108b71,_0x17726d,!![]);}catch(_0x45482e){return BPromise[_0xf89b('0x25')](_0x45482e);}return _0x108b71[_0xf89b('0x26')]();};}function saveUpdates(_0x1c5321,_0x25c4d9){return function(_0x548b77){if(_0x548b77){return _0x548b77[_0xf89b('0x27')](_0x1c5321)[_0xf89b('0x28')](function(_0x3998a1){return _0x3998a1;});}return null;};}function removeEntity(_0x405666,_0x34fa92){return function(_0x2b75a3){if(_0x2b75a3){return _0x2b75a3['destroy']()['then'](function(){_0x405666[_0xf89b('0x1c')](0xcc)[_0xf89b('0x1d')]();});}};}function handleEntityNotFound(_0x1b1602,_0x35255f){return function(_0x248536){if(!_0x248536){_0x1b1602[_0xf89b('0x1b')](0x194);}return _0x248536;};}function handleError(_0x31ef9a,_0x20d378){_0x20d378=_0x20d378||0x1f4;return function(_0x33ca3c){logger['error'](_0x33ca3c[_0xf89b('0x29')]);if(_0x33ca3c['name']){delete _0x33ca3c[_0xf89b('0x2a')];}_0x31ef9a['status'](_0x20d378)['send'](_0x33ca3c);};}exports[_0xf89b('0x2b')]=function(_0x445ac1,_0x519b79){var _0x215ece={},_0xd4692={},_0x37bddc={'count':0x0,'rows':[]};var _0x273a3c=_[_0xf89b('0x2c')](db[_0xf89b('0x2d')][_0xf89b('0x2e')],function(_0x56f600){return{'name':_0x56f600[_0xf89b('0x2f')],'type':_0x56f600[_0xf89b('0x30')][_0xf89b('0x31')]};});_0xd4692[_0xf89b('0x32')]=_[_0xf89b('0x2c')](_0x273a3c,_0xf89b('0x2a'));_0xd4692[_0xf89b('0x33')]=_[_0xf89b('0x34')](_0x445ac1[_0xf89b('0x33')]);_0xd4692[_0xf89b('0x35')]=_['intersection'](_0xd4692[_0xf89b('0x32')],_0xd4692[_0xf89b('0x33')]);_0x215ece[_0xf89b('0x36')]=_[_0xf89b('0x37')](_0xd4692[_0xf89b('0x32')],qs['fields'](_0x445ac1[_0xf89b('0x33')]['fields']));_0x215ece[_0xf89b('0x36')]=_0x215ece['attributes'][_0xf89b('0x38')]?_0x215ece[_0xf89b('0x36')]:_0xd4692[_0xf89b('0x32')];if(!_0x445ac1[_0xf89b('0x33')][_0xf89b('0x39')]('nolimit')){_0x215ece[_0xf89b('0x1f')]=qs[_0xf89b('0x1f')](_0x445ac1[_0xf89b('0x33')][_0xf89b('0x1f')]);_0x215ece[_0xf89b('0x20')]=qs[_0xf89b('0x20')](_0x445ac1[_0xf89b('0x33')][_0xf89b('0x20')]);}_0x215ece['order']=qs['sort'](_0x445ac1[_0xf89b('0x33')][_0xf89b('0x3a')]);_0x215ece[_0xf89b('0x3b')]=qs['filters'](_['pick'](_0x445ac1[_0xf89b('0x33')],_0xd4692[_0xf89b('0x35')]),_0x273a3c);if(_0x445ac1[_0xf89b('0x33')][_0xf89b('0x3c')]){_0x215ece[_0xf89b('0x3b')]=_[_0xf89b('0x3d')](_0x215ece[_0xf89b('0x3b')],{'$or':_[_0xf89b('0x2c')](_0x273a3c,function(_0x98ba8a){if(_0x98ba8a[_0xf89b('0x30')]!==_0xf89b('0x3e')){var _0xfea256={};_0xfea256[_0x98ba8a[_0xf89b('0x2a')]]={'$like':'%'+_0x445ac1[_0xf89b('0x33')][_0xf89b('0x3c')]+'%'};return _0xfea256;}})});}_0x215ece=_['merge']({},_0x215ece,_0x445ac1[_0xf89b('0x3f')]);var _0x17f779={'where':_0x215ece[_0xf89b('0x3b')]};return db[_0xf89b('0x2d')]['count'](_0x17f779)['then'](function(_0x5d3fe4){_0x37bddc[_0xf89b('0x21')]=_0x5d3fe4;if(_0x445ac1['query'][_0xf89b('0x40')]){_0x215ece[_0xf89b('0x41')]=[{'all':!![]}];}return db[_0xf89b('0x2d')][_0xf89b('0x42')](_0x215ece);})['then'](function(_0x9487e0){_0x37bddc['rows']=_0x9487e0;return _0x37bddc;})['then'](respondWithFilteredResult(_0x519b79,_0x215ece))['catch'](handleError(_0x519b79,null));};exports['show']=function(_0x3e34d3,_0x116a3a){var _0x257f61={'raw':!![],'where':{'id':_0x3e34d3[_0xf89b('0x43')]['id']}},_0x9f1799={};_0x9f1799[_0xf89b('0x32')]=_['keys'](db['ChatInternalMessage'][_0xf89b('0x2e')]);_0x9f1799[_0xf89b('0x33')]=_[_0xf89b('0x34')](_0x3e34d3[_0xf89b('0x33')]);_0x9f1799['filters']=_[_0xf89b('0x37')](_0x9f1799[_0xf89b('0x32')],_0x9f1799[_0xf89b('0x33')]);_0x257f61['attributes']=_[_0xf89b('0x37')](_0x9f1799[_0xf89b('0x32')],qs[_0xf89b('0x44')](_0x3e34d3[_0xf89b('0x33')][_0xf89b('0x44')]));_0x257f61['attributes']=_0x257f61[_0xf89b('0x36')][_0xf89b('0x38')]?_0x257f61[_0xf89b('0x36')]:_0x9f1799['model'];if(_0x3e34d3[_0xf89b('0x33')]['includeAll']){_0x257f61['include']=[{'all':!![]}];}_0x257f61=_['merge']({},_0x257f61,_0x3e34d3[_0xf89b('0x3f')]);return db['ChatInternalMessage'][_0xf89b('0x45')](_0x257f61)[_0xf89b('0x28')](handleEntityNotFound(_0x116a3a,null))[_0xf89b('0x28')](respondWithResult(_0x116a3a,null))[_0xf89b('0x46')](handleError(_0x116a3a,null));};exports['create']=function(_0x2b1ac3,_0x5143b7){return db[_0xf89b('0x2d')][_0xf89b('0x47')](_0x2b1ac3[_0xf89b('0x48')],{})[_0xf89b('0x28')](respondWithResult(_0x5143b7,0xc9))['catch'](handleError(_0x5143b7,null));};exports['update']=function(_0x32d2d3,_0x48f0be){if(_0x32d2d3['body']['id']){delete _0x32d2d3[_0xf89b('0x48')]['id'];}return db[_0xf89b('0x2d')][_0xf89b('0x45')]({'where':{'id':_0x32d2d3[_0xf89b('0x43')]['id']}})[_0xf89b('0x28')](handleEntityNotFound(_0x48f0be,null))[_0xf89b('0x28')](saveUpdates(_0x32d2d3[_0xf89b('0x48')],null))[_0xf89b('0x28')](respondWithResult(_0x48f0be,null))['catch'](handleError(_0x48f0be,null));};exports[_0xf89b('0x49')]=function(_0xa8f72e,_0x44ef85){return db['ChatInternalMessage']['find']({'where':{'id':_0xa8f72e['params']['id']}})['then'](handleEntityNotFound(_0x44ef85,null))[_0xf89b('0x28')](removeEntity(_0x44ef85,null))['catch'](handleError(_0x44ef85,null));};exports[_0xf89b('0x4a')]=function(_0x26c7d9,_0x4c8350){return db[_0xf89b('0x2d')][_0xf89b('0x4a')]()[_0xf89b('0x28')](respondWithResult(_0x4c8350,null))[_0xf89b('0x46')](handleError(_0x4c8350,null));};function wrapUser(_0x112f71){return function(_0xcd529){var _0x4a06a7=_0x112f71[_0xf89b('0x4b')]({'plain':!![]});_0x4a06a7[_0xf89b('0x4c')]=[];if(_0xcd529){_0x4a06a7['lastMessageAt']=_0xcd529[_0xf89b('0x4d')];_0x4a06a7[_0xf89b('0x4e')]=_0xcd529;}else{_0x4a06a7[_0xf89b('0x4f')]=moment(0x0)['format']('YYYY-MM-DD\x20HH:mm:ss');_0x4a06a7[_0xf89b('0x4e')]={};}return _0x4a06a7;};}exports[_0xf89b('0x50')]=function(_0x33c5f5,_0x2816c3,_0x4ea814){var _0x52b7e3=[];return db[_0xf89b('0x51')]['findAll']({'where':{'role':['agent',_0xf89b('0x52'),'user']},'attributes':['id',_0xf89b('0x53'),_0xf89b('0x2a'),_0xf89b('0x54'),'userpic',_0xf89b('0x55'),_0xf89b('0x56'),_0xf89b('0x57'),'allowmessenger','showWebBar'],'order':qs['sort'](_0xf89b('0x58')),'include':[{'model':db[_0xf89b('0x59')],'as':_0xf89b('0x5a'),'attributes':['id','name',_0xf89b('0x30')],'through':{'attributes':[]}}]})[_0xf89b('0x28')](function(_0x59e830){if(_0x59e830){var _0x2f4698=_0x33c5f5[_0xf89b('0x5b')]['get']({'plain':!![]});if(!_0x2f4698)throw new Error(_0xf89b('0x5c'));if(_0x2f4698['role']===_0xf89b('0x5b')){return db[_0xf89b('0x5d')][_0xf89b('0x45')]({'where':{'name':_0xf89b('0x5e'),'userProfileId':_0x2f4698[_0xf89b('0x5f')]},'raw':!![]})[_0xf89b('0x28')](function(_0x32047f){if(_0x32047f){if(_0x32047f[_0xf89b('0x60')]===0x0){return db['UserProfileResource'][_0xf89b('0x42')]({'where':{'sectionId':_0x32047f['id']},'raw':!![]})[_0xf89b('0x28')](function(_0x165fe2){var _0x40097c=[];if(_[_0xf89b('0x61')](_0x165fe2)){_0x40097c=_[_0xf89b('0x3c')](_0x59e830,function(_0x477da2){if(_0x477da2[_0xf89b('0x54')]!==_0xf89b('0x62')){return _0x477da2;}});return _0x40097c;}else{for(var _0x3fa352=0x0;_0x3fa352<_0x59e830[_0xf89b('0x38')];_0x3fa352++){var _0xceebcc=_0x59e830[_0x3fa352];if(_0xceebcc[_0xf89b('0x54')]==='agent'){var _0x2787b7=_['find'](_0x165fe2,function(_0x2cf56c){return _0x2cf56c[_0xf89b('0x63')]===_0xceebcc['id'];});if(_0x2787b7)_0x40097c[_0xf89b('0x64')](_0xceebcc);}else{_0x40097c['push'](_0xceebcc);}}return _0x40097c;}});}else{return _0x59e830;}}else{var _0x57360e=_[_0xf89b('0x3c')](_0x59e830,function(_0x12ea80){if(_0x12ea80['role']!==_0xf89b('0x62')){return _0x12ea80;}});return _0x57360e;}});}else{return _0x59e830;}}})['then'](function(_0x1751cf){var _0x360bc7=[];if(_0x1751cf){_0x52b7e3=_0x1751cf;for(var _0x99c14a=0x0;_0x99c14a<_0x1751cf[_0xf89b('0x38')];_0x99c14a+=0x1){_0x52b7e3[_0x99c14a][_0xf89b('0x4c')]=[];_0x360bc7[_0xf89b('0x64')](db['ChatInternalMessage']['find']({'where':{'FromId':[_0x33c5f5[_0xf89b('0x5b')]['id'],_0x1751cf[_0x99c14a]['id']],'ToId':[_0x33c5f5[_0xf89b('0x5b')]['id'],_0x1751cf[_0x99c14a]['id']],'ChatGroupId':null},'attributes':['id',_0xf89b('0x4d'),_0xf89b('0x65'),'ToId','read',_0xf89b('0x48')],'order':qs[_0xf89b('0x3a')](_0xf89b('0x66')),'limit':0x1,'offset':0x0,'raw':!![]})['then'](wrapUser(_0x1751cf[_0x99c14a])));}return BPromise['all'](_0x360bc7);}return[];})['then'](function(_0x427e8a){return{'rows':_0x427e8a,'count':_0x427e8a[_0xf89b('0x38')]};})[_0xf89b('0x28')](respondWithResult(_0x2816c3,null))[_0xf89b('0x46')](handleError(_0x2816c3,null));};
\ No newline at end of file
index 0233b0b..f769da5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9490=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatInternalMessage','setMaxListeners','update'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x9490,0x148));var _0x0949=function(_0x1b3ec4,_0x1c86dc){_0x1b3ec4=_0x1b3ec4-0x0;var _0x47cd2d=_0x9490[_0x1b3ec4];return _0x47cd2d;};'use strict';var EventEmitter=require(_0x0949('0x0'));var ChatInternalMessage=require(_0x0949('0x1'))['db'][_0x0949('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x0949('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0949('0x4'),'afterDestroy':'remove'};function emitEvent(_0xefc063){return function(_0x1ccf37,_0x3f266a,_0x17a5ae){ChatInternalMessageEvents[_0x0949('0x5')](_0xefc063+':'+_0x1ccf37['id'],_0x1ccf37);ChatInternalMessageEvents[_0x0949('0x5')](_0xefc063,_0x1ccf37);_0x17a5ae(null);};}for(var e in events){if(events[_0x0949('0x6')](e)){var event=events[e];ChatInternalMessage[_0x0949('0x7')](e,emitEvent(event));}}module[_0x0949('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x8481=['events','ChatInternalMessage','setMaxListeners','save','update','remove','emit'];(function(_0x2632e4,_0x200715){var _0x4a6e53=function(_0x313a5d){while(--_0x313a5d){_0x2632e4['push'](_0x2632e4['shift']());}};_0x4a6e53(++_0x200715);}(_0x8481,0x1c7));var _0x1848=function(_0x2b5513,_0x3fe5cd){_0x2b5513=_0x2b5513-0x0;var _0x578fd2=_0x8481[_0x2b5513];return _0x578fd2;};'use strict';var EventEmitter=require(_0x1848('0x0'));var ChatInternalMessage=require('../../mysqldb')['db'][_0x1848('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x1848('0x2')](0x0);var events={'afterCreate':_0x1848('0x3'),'afterUpdate':_0x1848('0x4'),'afterDestroy':_0x1848('0x5')};function emitEvent(_0x3264e5){return function(_0x3d07fd,_0x391e1e,_0x4c64b6){ChatInternalMessageEvents[_0x1848('0x6')](_0x3264e5+':'+_0x3d07fd['id'],_0x3d07fd);ChatInternalMessageEvents['emit'](_0x3264e5,_0x3d07fd);_0x4c64b6(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module['exports']=ChatInternalMessageEvents;
\ No newline at end of file
index 9eecd05..f4ffbcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ca0=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4_unicode_ci','lodash','util'];(function(_0x36ae67,_0x5d460f){var _0x254a0d=function(_0x361090){while(--_0x361090){_0x36ae67['push'](_0x36ae67['shift']());}};_0x254a0d(++_0x5d460f);}(_0x3ca0,0x12a));var _0x03ca=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3ca0[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x03ca('0x0'));var util=require(_0x03ca('0x1'));var logger=require(_0x03ca('0x2'))(_0x03ca('0x3'));var moment=require(_0x03ca('0x4'));var BPromise=require(_0x03ca('0x5'));var rp=require(_0x03ca('0x6'));var fs=require('fs');var path=require(_0x03ca('0x7'));var rimraf=require(_0x03ca('0x8'));var config=require('../../config/environment');var attributes=require(_0x03ca('0x9'));module[_0x03ca('0xa')]=function(_0x401512,_0x4416d0){return _0x401512[_0x03ca('0xb')](_0x03ca('0xc'),attributes,{'tableName':_0x03ca('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x03ca('0xe')});};
\ No newline at end of file
+var _0x8e7e=['chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','bluebird','path','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage'];(function(_0x447f2a,_0x5721e7){var _0x42d932=function(_0x28616d){while(--_0x28616d){_0x447f2a['push'](_0x447f2a['shift']());}};_0x42d932(++_0x5721e7);}(_0x8e7e,0x1a7));var _0xe8e7=function(_0x1887f8,_0x423cee){_0x1887f8=_0x1887f8-0x0;var _0x1d7a4e=_0x8e7e[_0x1887f8];return _0x1d7a4e;};'use strict';var _=require(_0xe8e7('0x0'));var util=require(_0xe8e7('0x1'));var logger=require('../../config/logger')(_0xe8e7('0x2'));var moment=require('moment');var BPromise=require(_0xe8e7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe8e7('0x4'));var rimraf=require(_0xe8e7('0x5'));var config=require(_0xe8e7('0x6'));var attributes=require(_0xe8e7('0x7'));module[_0xe8e7('0x8')]=function(_0x500f54,_0x51983f){return _0x500f54[_0xe8e7('0x9')](_0xe8e7('0xa'),attributes,{'tableName':_0xe8e7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe8e7('0xc'),'collate':_0xe8e7('0xd')});};
\ No newline at end of file
index de58cd7..fb5d903 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1782=['ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatInternalMessage,\x20%s,\x20%s','result','catch','util','moment','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','then','info','request\x20sent'];(function(_0xf769a5,_0x98e228){var _0x514763=function(_0x38e367){while(--_0x38e367){_0xf769a5['push'](_0xf769a5['shift']());}};_0x514763(++_0x98e228);}(_0x1782,0x188));var _0x2178=function(_0x3e8fc1,_0x598549){_0x3e8fc1=_0x3e8fc1-0x0;var _0x2c8f88=_0x1782[_0x3e8fc1];return _0x2c8f88;};'use strict';var _=require('lodash');var util=require(_0x2178('0x0'));var moment=require(_0x2178('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2178('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x2178('0x3'));var logger=require(_0x2178('0x4'))('rpc');var config=require(_0x2178('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x2178('0x6')][_0x2178('0x7')]({'port':0x232a});config[_0x2178('0x8')]=_['defaults'](config['redis'],{'host':_0x2178('0x9'),'port':0x18eb});var socket=require(_0x2178('0xa'))(new Redis(config[_0x2178('0x8')]));require(_0x2178('0xb'))[_0x2178('0xc')](socket);function respondWithRpcPromise(_0x2643b6,_0x4ec58d,_0x3558a2){return new BPromise(function(_0x1a356b,_0x10c477){return client['request'](_0x2643b6,_0x3558a2)[_0x2178('0xd')](function(_0x1d412f){logger[_0x2178('0xe')]('ChatInternalMessage,\x20%s,\x20%s',_0x4ec58d,_0x2178('0xf'));logger['debug'](_0x2178('0x10'),_0x4ec58d,_0x2178('0xf'),JSON[_0x2178('0x11')](_0x1d412f));if(_0x1d412f[_0x2178('0x12')]){if(_0x1d412f[_0x2178('0x12')][_0x2178('0x13')]===0x1f4){logger[_0x2178('0x12')]('ChatInternalMessage,\x20%s,\x20%s',_0x4ec58d,_0x1d412f[_0x2178('0x12')][_0x2178('0x14')]);return _0x10c477(_0x1d412f[_0x2178('0x12')][_0x2178('0x14')]);}logger[_0x2178('0x12')](_0x2178('0x15'),_0x4ec58d,_0x1d412f[_0x2178('0x12')]['message']);return _0x1a356b(_0x1d412f[_0x2178('0x12')]['message']);}else{logger['info'](_0x2178('0x15'),_0x4ec58d,_0x2178('0xf'));_0x1a356b(_0x1d412f[_0x2178('0x16')][_0x2178('0x14')]);}})[_0x2178('0x17')](function(_0x3f6e8e){logger[_0x2178('0x12')](_0x2178('0x15'),_0x4ec58d,_0x3f6e8e);_0x10c477(_0x3f6e8e);});});}
\ No newline at end of file
+var _0xcb79=['defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','info','ChatInternalMessage,\x20%s,\x20%s','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcb79,0x15f));var _0x9cb7=function(_0x55d1d3,_0x414178){_0x55d1d3=_0x55d1d3-0x0;var _0x375aef=_0xcb79[_0x55d1d3];return _0x375aef;};'use strict';var _=require(_0x9cb7('0x0'));var util=require(_0x9cb7('0x1'));var moment=require(_0x9cb7('0x2'));var BPromise=require(_0x9cb7('0x3'));var rs=require(_0x9cb7('0x4'));var fs=require('fs');var Redis=require(_0x9cb7('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x9cb7('0x6'));var logger=require(_0x9cb7('0x7'))(_0x9cb7('0x8'));var config=require(_0x9cb7('0x9'));var jayson=require(_0x9cb7('0xa'));var client=jayson[_0x9cb7('0xb')][_0x9cb7('0xc')]({'port':0x232a});config['redis']=_[_0x9cb7('0xd')](config['redis'],{'host':_0x9cb7('0xe'),'port':0x18eb});var socket=require(_0x9cb7('0xf'))(new Redis(config['redis']));require(_0x9cb7('0x10'))['register'](socket);function respondWithRpcPromise(_0x1d61e1,_0x39e8a9,_0x38de4f){return new BPromise(function(_0x51481d,_0x1e18b0){return client['request'](_0x1d61e1,_0x38de4f)['then'](function(_0x5e626e){logger[_0x9cb7('0x11')](_0x9cb7('0x12'),_0x39e8a9,'request\x20sent');logger[_0x9cb7('0x13')](_0x9cb7('0x14'),_0x39e8a9,'request\x20sent',JSON[_0x9cb7('0x15')](_0x5e626e));if(_0x5e626e[_0x9cb7('0x16')]){if(_0x5e626e['error'][_0x9cb7('0x17')]===0x1f4){logger['error'](_0x9cb7('0x12'),_0x39e8a9,_0x5e626e[_0x9cb7('0x16')][_0x9cb7('0x18')]);return _0x1e18b0(_0x5e626e[_0x9cb7('0x16')][_0x9cb7('0x18')]);}logger[_0x9cb7('0x16')](_0x9cb7('0x12'),_0x39e8a9,_0x5e626e['error'][_0x9cb7('0x18')]);return _0x51481d(_0x5e626e['error']['message']);}else{logger[_0x9cb7('0x11')](_0x9cb7('0x12'),_0x39e8a9,_0x9cb7('0x19'));_0x51481d(_0x5e626e[_0x9cb7('0x1a')][_0x9cb7('0x18')]);}})[_0x9cb7('0x1b')](function(_0x38940f){logger[_0x9cb7('0x16')](_0x9cb7('0x12'),_0x39e8a9,_0x38940f);_0x1e18b0(_0x38940f);});});}
\ No newline at end of file
index 6b311fd..da8c751 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa081=['chatInternalMessage:','./chatInternalMessage.events','emit','register','length'];(function(_0x4ee6e6,_0x4d4543){var _0x316505=function(_0xfc6fe3){while(--_0xfc6fe3){_0x4ee6e6['push'](_0x4ee6e6['shift']());}};_0x316505(++_0x4d4543);}(_0xa081,0x146));var _0x1a08=function(_0x1226b9,_0x486663){_0x1226b9=_0x1226b9-0x0;var _0x13dcb8=_0xa081[_0x1226b9];return _0x13dcb8;};'use strict';var ChatInternalMessageEvents=require(_0x1a08('0x0'));var events=['save','remove','update'];function createListener(_0x31384e,_0x438aa5){return function(_0x3c805f){_0x438aa5[_0x1a08('0x1')](_0x31384e,_0x3c805f);};}function removeListener(_0x140336,_0x3e981d){return function(){ChatInternalMessageEvents['removeListener'](_0x140336,_0x3e981d);};}exports[_0x1a08('0x2')]=function(_0x4ae349){for(var _0x5ac2d5=0x0,_0x165e70=events[_0x1a08('0x3')];_0x5ac2d5<_0x165e70;_0x5ac2d5++){var _0xcbf95=events[_0x5ac2d5];var _0x2d396f=createListener(_0x1a08('0x4')+_0xcbf95,_0x4ae349);ChatInternalMessageEvents['on'](_0xcbf95,_0x2d396f);}};
\ No newline at end of file
+var _0xaa2f=['removeListener','length','remove','emit'];(function(_0x806ece,_0x10282e){var _0x18b6c7=function(_0x325cd2){while(--_0x325cd2){_0x806ece['push'](_0x806ece['shift']());}};_0x18b6c7(++_0x10282e);}(_0xaa2f,0x66));var _0xfaa2=function(_0x470d13,_0x3f22fa){_0x470d13=_0x470d13-0x0;var _0x18cc32=_0xaa2f[_0x470d13];return _0x18cc32;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=['save',_0xfaa2('0x0'),'update'];function createListener(_0x4f3502,_0x5b3885){return function(_0x1f0eaf){_0x5b3885[_0xfaa2('0x1')](_0x4f3502,_0x1f0eaf);};}function removeListener(_0x4ae7cb,_0x23c1a1){return function(){ChatInternalMessageEvents[_0xfaa2('0x2')](_0x4ae7cb,_0x23c1a1);};}exports['register']=function(_0x21e3de){for(var _0x13d200=0x0,_0x2c8e75=events[_0xfaa2('0x3')];_0x13d200<_0x2c8e75;_0x13d200++){var _0xece912=events[_0x13d200];var _0x26e1ef=createListener('chatInternalMessage:'+_0xece912,_0x21e3de);ChatInternalMessageEvents['on'](_0xece912,_0x26e1ef);}};
\ No newline at end of file
index 2a1740d..ca3eb05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95cc=['../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','index','/describe','describe','/users','getUsers','/:id','show','post','create','put','update','delete','destroy','multer','util','path','Router'];(function(_0x463f29,_0x315360){var _0x516d9b=function(_0x8c52c9){while(--_0x8c52c9){_0x463f29['push'](_0x463f29['shift']());}};_0x516d9b(++_0x315360);}(_0x95cc,0x19a));var _0xc95c=function(_0x2468b5,_0x506b9e){_0x2468b5=_0x2468b5-0x0;var _0x1056e4=_0x95cc[_0x2468b5];return _0x1056e4;};'use strict';var multer=require(_0xc95c('0x0'));var util=require(_0xc95c('0x1'));var path=require(_0xc95c('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc95c('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc95c('0x4'));var interaction=require(_0xc95c('0x5'));var config=require(_0xc95c('0x6'));var controller=require(_0xc95c('0x7'));router[_0xc95c('0x8')]('/',auth[_0xc95c('0x9')](),controller[_0xc95c('0xa')]);router[_0xc95c('0x8')](_0xc95c('0xb'),auth[_0xc95c('0x9')](),controller[_0xc95c('0xc')]);router['get'](_0xc95c('0xd'),auth[_0xc95c('0x9')](),controller[_0xc95c('0xe')]);router[_0xc95c('0x8')](_0xc95c('0xf'),auth[_0xc95c('0x9')](),controller[_0xc95c('0x10')]);router[_0xc95c('0x11')]('/',auth[_0xc95c('0x9')](),controller[_0xc95c('0x12')]);router[_0xc95c('0x13')](_0xc95c('0xf'),controller[_0xc95c('0x14')]);router[_0xc95c('0x15')](_0xc95c('0xf'),auth[_0xc95c('0x9')](),controller[_0xc95c('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xe6b8=['./chatInternalMessage.controller','get','isAuthenticated','index','/describe','getUsers','/:id','create','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4b81ad,_0x2d63ec){var _0x449c80=function(_0x55143f){while(--_0x55143f){_0x4b81ad['push'](_0x4b81ad['shift']());}};_0x449c80(++_0x2d63ec);}(_0xe6b8,0x124));var _0x8e6b=function(_0x361f40,_0x36d252){_0x361f40=_0x361f40-0x0;var _0x3c54a8=_0xe6b8[_0x361f40];return _0x3c54a8;};'use strict';var multer=require(_0x8e6b('0x0'));var util=require(_0x8e6b('0x1'));var path=require('path');var timeout=require(_0x8e6b('0x2'));var express=require(_0x8e6b('0x3'));var router=express['Router']();var fs_extra=require(_0x8e6b('0x4'));var auth=require(_0x8e6b('0x5'));var interaction=require(_0x8e6b('0x6'));var config=require(_0x8e6b('0x7'));var controller=require(_0x8e6b('0x8'));router[_0x8e6b('0x9')]('/',auth[_0x8e6b('0xa')](),controller[_0x8e6b('0xb')]);router['get'](_0x8e6b('0xc'),auth[_0x8e6b('0xa')](),controller['describe']);router[_0x8e6b('0x9')]('/users',auth[_0x8e6b('0xa')](),controller[_0x8e6b('0xd')]);router[_0x8e6b('0x9')](_0x8e6b('0xe'),auth[_0x8e6b('0xa')](),controller['show']);router['post']('/',auth[_0x8e6b('0xa')](),controller[_0x8e6b('0xf')]);router['put'](_0x8e6b('0xe'),controller[_0x8e6b('0x10')]);router[_0x8e6b('0x11')](_0x8e6b('0xe'),auth[_0x8e6b('0xa')](),controller[_0x8e6b('0x12')]);module[_0x8e6b('0x13')]=router;
\ No newline at end of file
index a5a3e3a..bd29bb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c52=['TEXT','medium','out','STRING','sequelize','exports'];(function(_0x421c11,_0xcf7560){var _0x317709=function(_0x5c8c71){while(--_0x5c8c71){_0x421c11['push'](_0x421c11['shift']());}};_0x317709(++_0xcf7560);}(_0x1c52,0x7c));var _0x21c5=function(_0x3b5c8a,_0x216a3c){_0x3b5c8a=_0x3b5c8a-0x0;var _0x5ee6b0=_0x1c52[_0x3b5c8a];return _0x5ee6b0;};'use strict';var Sequelize=require(_0x21c5('0x0'));module[_0x21c5('0x1')]={'body':{'type':Sequelize[_0x21c5('0x2')](_0x21c5('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x21c5('0x4')),'defaultValue':_0x21c5('0x4'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0x21c5('0x5')]},'providerResponse':{'type':Sequelize[_0x21c5('0x2')]}};
\ No newline at end of file
+var _0x793b=['STRING','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x793b,0x189));var _0xb793=function(_0x23dbea,_0x34bdc0){_0x23dbea=_0x23dbea-0x0;var _0x50d237=_0x793b[_0x23dbea];return _0x50d237;};'use strict';var Sequelize=require(_0xb793('0x0'));module[_0xb793('0x1')]={'body':{'type':Sequelize[_0xb793('0x2')](_0xb793('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xb793('0x4')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xb793('0x5')]('in',_0xb793('0x6')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0xb793('0x7')]},'providerResponse':{'type':Sequelize[_0xb793('0x2')]}};
\ No newline at end of file
index a51ca6a..f408226 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cb2=['contact','User','fullname','agent','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','parse','formData','ChatInteractionId','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','ContactId','sequelize','internal','motionChannel','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatMessage.socket','jayson/promise','client','http','request','then','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','stack','name','send','index','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','ChatMessage','includeAll','include','findAll','rows','catch','show','rawAttributes','create','body','params','find','describe','chat-interactions','accept','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','ChatInteraction','read1stAt','format','interaction','role','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','QueryTypes','SELECT'];(function(_0x4181f5,_0x1e6345){var _0x5298cd=function(_0xbc294b){while(--_0xbc294b){_0x4181f5['push'](_0x4181f5['shift']());}};_0x5298cd(++_0x1e6345);}(_0x7cb2,0x11b));var _0x27cb=function(_0x5ca39d,_0x8b690d){_0x5ca39d=_0x5ca39d-0x0;var _0x1c9730=_0x7cb2[_0x5ca39d];return _0x1c9730;};'use strict';var emlformat=require(_0x27cb('0x0'));var rimraf=require(_0x27cb('0x1'));var zipdir=require(_0x27cb('0x2'));var jsonpatch=require(_0x27cb('0x3'));var rp=require('request-promise');var moment=require(_0x27cb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x27cb('0x5'));var util=require(_0x27cb('0x6'));var path=require(_0x27cb('0x7'));var sox=require(_0x27cb('0x8'));var csv=require(_0x27cb('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x27cb('0xa'));var _=require(_0x27cb('0xb'));var squel=require(_0x27cb('0xc'));var crypto=require(_0x27cb('0xd'));var jsforce=require(_0x27cb('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x27cb('0x9'));var querystring=require('querystring');var Papa=require(_0x27cb('0xf'));var Redis=require('ioredis');var authService=require(_0x27cb('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x27cb('0x11'));var hardwareService=require(_0x27cb('0x12'));var logger=require(_0x27cb('0x13'))('api');var utils=require(_0x27cb('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x27cb('0x15'));var db=require(_0x27cb('0x16'))['db'];config[_0x27cb('0x17')]=_[_0x27cb('0x18')](config[_0x27cb('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x27cb('0x19'))(new Redis(config[_0x27cb('0x17')]));require(_0x27cb('0x1a'))['register'](socket);var jayson=require(_0x27cb('0x1b'));var client=jayson[_0x27cb('0x1c')][_0x27cb('0x1d')]({'port':0x232c});var client9002=jayson[_0x27cb('0x1c')][_0x27cb('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x4e762e,_0x15f8bc,_0x35e269,_0x567fe3){return new BPromise(function(_0x4e9972,_0x382c3e){var _0x555fcb=_0x567fe3||client;return _0x555fcb[_0x27cb('0x1e')](_0x4e762e,_0x35e269)[_0x27cb('0x1f')](function(_0x1f9625){logger['info'](_0x27cb('0x20'),_0x15f8bc,_0x27cb('0x21'));logger[_0x27cb('0x22')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x15f8bc,_0x27cb('0x21'),JSON[_0x27cb('0x23')](_0x1f9625));if(_0x1f9625[_0x27cb('0x24')]){if(_0x1f9625['error']['code']===0x1f4){logger[_0x27cb('0x24')]('ChatMessage,\x20%s,\x20%s',_0x15f8bc,_0x1f9625['error'][_0x27cb('0x25')]);return _0x382c3e(_0x1f9625[_0x27cb('0x24')]['message']);}logger[_0x27cb('0x24')]('ChatMessage,\x20%s,\x20%s',_0x15f8bc,_0x1f9625[_0x27cb('0x24')][_0x27cb('0x25')]);return _0x4e9972(_0x1f9625['error']['message']);}else{logger['info'](_0x27cb('0x20'),_0x15f8bc,_0x27cb('0x21'));_0x4e9972(_0x1f9625[_0x27cb('0x26')]['message']);}})['catch'](function(_0x5d3ea0){logger[_0x27cb('0x24')](_0x27cb('0x20'),_0x15f8bc,_0x5d3ea0);_0x382c3e(_0x5d3ea0);});});}function respondWithStatusCode(_0x7bc224,_0x4a9838){_0x4a9838=_0x4a9838||0xcc;return function(_0x3331c9){if(_0x3331c9){return _0x7bc224[_0x27cb('0x27')](_0x4a9838);}return _0x7bc224[_0x27cb('0x28')](_0x4a9838)[_0x27cb('0x29')]();};}function respondWithResult(_0x51a4ce,_0x2dfc4e){_0x2dfc4e=_0x2dfc4e||0xc8;return function(_0x5d2a93){if(_0x5d2a93){return _0x51a4ce[_0x27cb('0x28')](_0x2dfc4e)['json'](_0x5d2a93);}};}function respondWithFilteredResult(_0x30f461,_0x3fd479){return function(_0x16af2c){if(_0x16af2c){var _0x7630c3=typeof _0x3fd479[_0x27cb('0x2a')]===_0x27cb('0x2b')&&typeof _0x3fd479[_0x27cb('0x2c')]==='undefined';var _0x1f738c=_0x16af2c[_0x27cb('0x2d')];var _0x10bf46=_0x7630c3?0x0:_0x3fd479[_0x27cb('0x2a')];var _0x21ec89=_0x7630c3?_0x16af2c['count']:_0x3fd479[_0x27cb('0x2a')]+_0x3fd479[_0x27cb('0x2c')];var _0x5c7b3c;if(_0x21ec89>=_0x1f738c){_0x21ec89=_0x1f738c;_0x5c7b3c=0xc8;}else{_0x5c7b3c=0xce;}_0x30f461[_0x27cb('0x28')](_0x5c7b3c);return _0x30f461[_0x27cb('0x2e')](_0x27cb('0x2f'),_0x10bf46+'-'+_0x21ec89+'/'+_0x1f738c)[_0x27cb('0x30')](_0x16af2c);}return null;};}function patchUpdates(_0x572655){return function(_0x1b3ce4){try{jsonpatch[_0x27cb('0x31')](_0x1b3ce4,_0x572655,!![]);}catch(_0x19475c){return BPromise[_0x27cb('0x32')](_0x19475c);}return _0x1b3ce4[_0x27cb('0x33')]();};}function saveUpdates(_0x2fa932,_0x45229f){return function(_0x29b594){if(_0x29b594){return _0x29b594[_0x27cb('0x34')](_0x2fa932)['then'](function(_0x4193e0){return _0x4193e0;});}return null;};}function removeEntity(_0x474dc8,_0x21a479){return function(_0x51f632){if(_0x51f632){return _0x51f632[_0x27cb('0x35')]()[_0x27cb('0x1f')](function(){_0x474dc8[_0x27cb('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x516d1f,_0x5bb783){return function(_0x30f1e2){if(!_0x30f1e2){_0x516d1f['sendStatus'](0x194);}return _0x30f1e2;};}function handleError(_0x6c2ffd,_0xb11ab5){_0xb11ab5=_0xb11ab5||0x1f4;return function(_0x529c56){logger[_0x27cb('0x24')](_0x529c56[_0x27cb('0x36')]);if(_0x529c56[_0x27cb('0x37')]){delete _0x529c56['name'];}_0x6c2ffd[_0x27cb('0x28')](_0xb11ab5)[_0x27cb('0x38')](_0x529c56);};}exports[_0x27cb('0x39')]=function(_0x604a87,_0x1e5fa7){var _0x541623={},_0x1d3098={},_0xecfa66={'count':0x0,'rows':[]};var _0x22d419=_['map'](db['ChatMessage']['rawAttributes'],function(_0x49cb00){return{'name':_0x49cb00[_0x27cb('0x3a')],'type':_0x49cb00[_0x27cb('0x3b')]['key']};});_0x1d3098[_0x27cb('0x3c')]=_[_0x27cb('0x3d')](_0x22d419,_0x27cb('0x37'));_0x1d3098[_0x27cb('0x3e')]=_[_0x27cb('0x3f')](_0x604a87[_0x27cb('0x3e')]);_0x1d3098[_0x27cb('0x40')]=_[_0x27cb('0x41')](_0x1d3098[_0x27cb('0x3c')],_0x1d3098['query']);_0x541623[_0x27cb('0x42')]=_[_0x27cb('0x41')](_0x1d3098[_0x27cb('0x3c')],qs[_0x27cb('0x43')](_0x604a87[_0x27cb('0x3e')][_0x27cb('0x43')]));_0x541623[_0x27cb('0x42')]=_0x541623[_0x27cb('0x42')][_0x27cb('0x44')]?_0x541623[_0x27cb('0x42')]:_0x1d3098['model'];if(!_0x604a87[_0x27cb('0x3e')][_0x27cb('0x45')](_0x27cb('0x46'))){_0x541623[_0x27cb('0x2c')]=qs['limit'](_0x604a87[_0x27cb('0x3e')][_0x27cb('0x2c')]);_0x541623['offset']=qs['offset'](_0x604a87['query'][_0x27cb('0x2a')]);}_0x541623['order']=qs[_0x27cb('0x47')](_0x604a87['query'][_0x27cb('0x47')]);_0x541623[_0x27cb('0x48')]=qs[_0x27cb('0x40')](_[_0x27cb('0x49')](_0x604a87[_0x27cb('0x3e')],_0x1d3098[_0x27cb('0x40')]),_0x22d419);if(_0x604a87['query'][_0x27cb('0x4a')]){_0x541623[_0x27cb('0x48')]=_[_0x27cb('0x4b')](_0x541623[_0x27cb('0x48')],{'$or':_[_0x27cb('0x3d')](_0x22d419,function(_0x524460){if(_0x524460[_0x27cb('0x3b')]!=='VIRTUAL'){var _0x5b7a62={};_0x5b7a62[_0x524460[_0x27cb('0x37')]]={'$like':'%'+_0x604a87[_0x27cb('0x3e')][_0x27cb('0x4a')]+'%'};return _0x5b7a62;}})});}_0x541623=_['merge']({},_0x541623,_0x604a87[_0x27cb('0x4c')]);var _0x508470={'where':_0x541623[_0x27cb('0x48')]};return db[_0x27cb('0x4d')][_0x27cb('0x2d')](_0x508470)['then'](function(_0x380887){_0xecfa66['count']=_0x380887;if(_0x604a87[_0x27cb('0x3e')][_0x27cb('0x4e')]){_0x541623[_0x27cb('0x4f')]=[{'all':!![]}];}return db['ChatMessage'][_0x27cb('0x50')](_0x541623);})[_0x27cb('0x1f')](function(_0x26d10d){_0xecfa66[_0x27cb('0x51')]=_0x26d10d;return _0xecfa66;})[_0x27cb('0x1f')](respondWithFilteredResult(_0x1e5fa7,_0x541623))[_0x27cb('0x52')](handleError(_0x1e5fa7,null));};exports[_0x27cb('0x53')]=function(_0x50c7f0,_0x3d6914){var _0x2d5981={'raw':!![],'where':{'id':_0x50c7f0['params']['id']}},_0x3fe7dd={};_0x3fe7dd['model']=_[_0x27cb('0x3f')](db[_0x27cb('0x4d')][_0x27cb('0x54')]);_0x3fe7dd[_0x27cb('0x3e')]=_[_0x27cb('0x3f')](_0x50c7f0['query']);_0x3fe7dd['filters']=_[_0x27cb('0x41')](_0x3fe7dd[_0x27cb('0x3c')],_0x3fe7dd[_0x27cb('0x3e')]);_0x2d5981[_0x27cb('0x42')]=_[_0x27cb('0x41')](_0x3fe7dd[_0x27cb('0x3c')],qs[_0x27cb('0x43')](_0x50c7f0[_0x27cb('0x3e')][_0x27cb('0x43')]));_0x2d5981['attributes']=_0x2d5981[_0x27cb('0x42')][_0x27cb('0x44')]?_0x2d5981[_0x27cb('0x42')]:_0x3fe7dd[_0x27cb('0x3c')];if(_0x50c7f0['query']['includeAll']){_0x2d5981['include']=[{'all':!![]}];}_0x2d5981=_[_0x27cb('0x4b')]({},_0x2d5981,_0x50c7f0[_0x27cb('0x4c')]);return db[_0x27cb('0x4d')]['find'](_0x2d5981)[_0x27cb('0x1f')](handleEntityNotFound(_0x3d6914,null))[_0x27cb('0x1f')](respondWithResult(_0x3d6914,null))[_0x27cb('0x52')](handleError(_0x3d6914,null));};exports[_0x27cb('0x55')]=function(_0x145138,_0xc11a84){return db[_0x27cb('0x4d')][_0x27cb('0x55')](_0x145138[_0x27cb('0x56')],{})[_0x27cb('0x1f')](respondWithResult(_0xc11a84,0xc9))[_0x27cb('0x52')](handleError(_0xc11a84,null));};exports[_0x27cb('0x34')]=function(_0x3139f6,_0x303035){if(_0x3139f6[_0x27cb('0x56')]['id']){delete _0x3139f6[_0x27cb('0x56')]['id'];}return db['ChatMessage']['find']({'where':{'id':_0x3139f6[_0x27cb('0x57')]['id']}})[_0x27cb('0x1f')](handleEntityNotFound(_0x303035,null))[_0x27cb('0x1f')](saveUpdates(_0x3139f6[_0x27cb('0x56')],null))['then'](respondWithResult(_0x303035,null))['catch'](handleError(_0x303035,null));};exports[_0x27cb('0x35')]=function(_0xc5fc67,_0x4a18fe){return db[_0x27cb('0x4d')][_0x27cb('0x58')]({'where':{'id':_0xc5fc67[_0x27cb('0x57')]['id']}})[_0x27cb('0x1f')](handleEntityNotFound(_0x4a18fe,null))['then'](removeEntity(_0x4a18fe,null))[_0x27cb('0x52')](handleError(_0x4a18fe,null));};exports[_0x27cb('0x59')]=function(_0x1ea27e,_0x55dcf1){return db['ChatMessage']['describe']()[_0x27cb('0x1f')](respondWithResult(_0x55dcf1,null))[_0x27cb('0x52')](handleError(_0x55dcf1,null));};var interaction_log=require('../../config/logger')(_0x27cb('0x5a'));exports[_0x27cb('0x5b')]=function(_0x549cb4,_0x209787,_0x13b1dc){var _0xad5463={'agent':{},'channel':'chat'};if(_0x549cb4[_0x27cb('0x56')]['id']){delete _0x549cb4[_0x27cb('0x56')]['id'];}_0x549cb4[_0x27cb('0x56')][_0x27cb('0x5c')]=!![];_0x549cb4['body'][_0x27cb('0x5d')]=moment()['format'](_0x27cb('0x5e'));_0x549cb4[_0x27cb('0x56')][_0x27cb('0x5f')]=_0x549cb4[_0x27cb('0x56')]['UserId']||_0x549cb4[_0x27cb('0x60')]['id'];_0xad5463['agent']['id']=_0x549cb4[_0x27cb('0x56')][_0x27cb('0x5f')];return db[_0x27cb('0x4d')]['find']({'where':{'id':_0x549cb4[_0x27cb('0x57')]['id'],'UserId':null}})[_0x27cb('0x1f')](handleEntityNotFound(_0x209787,null))['then'](saveUpdates(_0x549cb4['body'],null))[_0x27cb('0x1f')](function(_0x2291a3){if(_0x2291a3){_0xad5463[_0x27cb('0x25')]=_0x2291a3[_0x27cb('0x61')]({'plain':!![]});return db[_0x27cb('0x62')]['find']({'where':{'id':_0x2291a3['ChatInteractionId']}});}return null;})[_0x27cb('0x1f')](handleEntityNotFound(_0x209787,null))['then'](function(_0x1ef8ce){if(_0x1ef8ce){return _0x1ef8ce[_0x27cb('0x34')]({'UserId':_0x549cb4[_0x27cb('0x56')][_0x27cb('0x5f')],'read1stAt':_['isNil'](_0x1ef8ce[_0x27cb('0x63')])?moment()[_0x27cb('0x64')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x2d6e25){if(_0x2d6e25){_0xad5463[_0x27cb('0x65')]=_0x2d6e25[_0x27cb('0x61')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x549cb4['user']['id'],_0x549cb4[_0x27cb('0x60')][_0x27cb('0x37')],_0x549cb4[_0x27cb('0x60')][_0x27cb('0x66')],_0xad5463[_0x27cb('0x65')]['id'],_0x549cb4[_0x27cb('0x56')]?JSON[_0x27cb('0x23')](_0x549cb4['body']):'null');return respondWithRpcPromise('AcceptMessage','acceptMessage',_0xad5463);}return null;})[_0x27cb('0x1f')](function(_0x54b31e){var _0x4000f9=_0x27cb('0x67')+_0x54b31e[_0x27cb('0x25')]['ContactId'];return db['sequelize'][_0x27cb('0x3e')](_0x4000f9,{'type':db[_0x27cb('0x68')][_0x27cb('0x69')][_0x27cb('0x6a')],'raw':!![]})['then'](function(_0xe6d9c6){return _0xe6d9c6;});})[_0x27cb('0x1f')](function(_0x4d6327){if(_0x4d6327){_0xad5463['message'][_0x27cb('0x6b')]=_0x4d6327[0x0];if(!_0x549cb4['body'][_0x27cb('0x5f')])return;return db[_0x27cb('0x6c')][_0x27cb('0x58')]({'where':{'id':_0x549cb4[_0x27cb('0x56')]['UserId'],'role':'agent'},'attributes':['id',_0x27cb('0x37'),_0x27cb('0x6d'),'email','internal'],'raw':!![]});}return null;})[_0x27cb('0x1f')](function(_0x55cc17){if(!_0x55cc17)return null;_0xad5463['message'][_0x27cb('0x6e')]=_0x55cc17;return _0xad5463;})[_0x27cb('0x1f')](function(_0xac1b78){if(_0xac1b78){if(_0x549cb4['body'][_0x27cb('0x6f')]){_0xad5463['message'][_0x27cb('0x70')]=util[_0x27cb('0x64')](_0x27cb('0x71'),_0x549cb4['user'][_0x27cb('0x37')]);_0xad5463['message'][_0x27cb('0x72')]=_0xad5463['channel'];_0xad5463[_0x27cb('0x25')]['motionChannel']=_0xad5463[_0x27cb('0x72')];_0xad5463['message'][_0x27cb('0x73')]=_0x27cb('0x5b');return respondWithRpcPromise('EventManager',_0x27cb('0x74'),{'event':_0x27cb('0x75'),'message':_[_0x27cb('0x4b')](_0xad5463[_0x27cb('0x25')],JSON[_0x27cb('0x76')](_0xad5463[_0x27cb('0x65')][_0x27cb('0x77')]))},client9002)[_0x27cb('0x1f')](function(){return _0xad5463;});}return _0xad5463;}return null;})['then'](respondWithResult(_0x209787,null))[_0x27cb('0x52')](handleError(_0x209787,null));};var interaction_log=require(_0x27cb('0x13'))(_0x27cb('0x5a'));exports['reject']=function(_0x22ace1,_0x34dcdc,_0x59d85f){var _0x580030={'agent':{},'channel':'chat'};if(_0x22ace1[_0x27cb('0x56')]['id']){delete _0x22ace1[_0x27cb('0x56')]['id'];}_0x22ace1[_0x27cb('0x56')][_0x27cb('0x5f')]=_0x22ace1[_0x27cb('0x56')]['UserId']||_0x22ace1[_0x27cb('0x60')]['id'];_0x580030[_0x27cb('0x6e')]['id']=_0x22ace1[_0x27cb('0x56')][_0x27cb('0x5f')];return db[_0x27cb('0x4d')]['find']({'where':{'id':_0x22ace1['params']['id'],'UserId':null}})[_0x27cb('0x1f')](handleEntityNotFound(_0x34dcdc,null))[_0x27cb('0x1f')](function(_0x4845fb){if(_0x4845fb){_0x580030[_0x27cb('0x25')]=_0x4845fb[_0x27cb('0x61')]({'plain':!![]});return db[_0x27cb('0x62')][_0x27cb('0x58')]({'where':{'id':_0x4845fb[_0x27cb('0x78')]}});}return null;})['then'](handleEntityNotFound(_0x34dcdc,null))['then'](function(_0x5ab813){if(_0x5ab813){_0x580030[_0x27cb('0x65')]=_0x5ab813[_0x27cb('0x61')]({'plain':!![]});interaction_log['info'](_0x27cb('0x79'),_0x22ace1[_0x27cb('0x60')]['id'],_0x22ace1[_0x27cb('0x60')][_0x27cb('0x37')],_0x22ace1[_0x27cb('0x60')][_0x27cb('0x66')],_0x580030[_0x27cb('0x65')]['id'],_0x22ace1[_0x27cb('0x56')]?JSON[_0x27cb('0x23')](_0x22ace1[_0x27cb('0x56')]):_0x27cb('0x7a'));return respondWithRpcPromise(_0x27cb('0x7b'),_0x27cb('0x7c'),_0x580030);}return null;})[_0x27cb('0x1f')](function(_0x2085cc){var _0x9c7260='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2085cc['message'][_0x27cb('0x7d')];return db[_0x27cb('0x7e')]['query'](_0x9c7260,{'type':db[_0x27cb('0x68')][_0x27cb('0x69')][_0x27cb('0x6a')],'raw':!![]})['then'](function(_0x23e146){return _0x23e146;});})['then'](function(_0x5b95f5){if(_0x5b95f5){_0x580030['message'][_0x27cb('0x6b')]=_0x5b95f5[0x0];if(!_0x22ace1['body']['UserId'])return;return db['User'][_0x27cb('0x58')]({'where':{'id':_0x22ace1[_0x27cb('0x56')][_0x27cb('0x5f')],'role':_0x27cb('0x6e')},'attributes':['id',_0x27cb('0x37'),_0x27cb('0x6d'),'email',_0x27cb('0x7f')],'raw':!![]});}return null;})['then'](function(_0x50e13f){if(!_0x50e13f)return null;_0x580030[_0x27cb('0x25')][_0x27cb('0x6e')]=_0x50e13f;return _0x580030;})['then'](function(_0x5794a7){if(_0x5794a7){_0x5794a7[_0x27cb('0x25')]['interface']=util[_0x27cb('0x64')](_0x27cb('0x71'),_0x22ace1[_0x27cb('0x60')][_0x27cb('0x37')]);_0x5794a7['message'][_0x27cb('0x72')]=_0x580030['channel'];_0x5794a7[_0x27cb('0x25')][_0x27cb('0x80')]=_0x580030[_0x27cb('0x72')];_0x5794a7[_0x27cb('0x25')]['event']=_0x27cb('0x32');respondWithRpcPromise(_0x27cb('0x74'),_0x27cb('0x74'),{'event':_0x27cb('0x81'),'message':_[_0x27cb('0x4b')](_0x580030[_0x27cb('0x25')],JSON[_0x27cb('0x76')](_0x580030[_0x27cb('0x65')][_0x27cb('0x77')]))},client9002);return _0x580030;}return null;})[_0x27cb('0x1f')](respondWithResult(_0x34dcdc,null))[_0x27cb('0x52')](handleError(_0x34dcdc,null));};
\ No newline at end of file
+var _0xa9e0=['interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','contact','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','parse','formData','chat-interactions','chat','ChatInteraction','RejectMessage','rejectMessage','Sequelize','QueryTypes','SELECT','fullname','rejectmessage','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','redis','defaults','localhost','./chatMessage.socket','register','jayson/promise','client','http','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','destroy','stack','name','send','map','ChatMessage','fieldName','type','keys','query','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','body','find','describe','../../config/logger','accept','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','ChatInteractionId','isNil','read1stAt','format'];(function(_0x4da1ec,_0x3039b8){var _0x3fc0cc=function(_0x5d5d4c){while(--_0x5d5d4c){_0x4da1ec['push'](_0x4da1ec['shift']());}};_0x3fc0cc(++_0x3039b8);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'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'];config[_0x0a9e('0x15')]=_[_0x0a9e('0x16')](config[_0x0a9e('0x15')],{'host':_0x0a9e('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x15')]));require(_0x0a9e('0x18'))[_0x0a9e('0x19')](socket);var jayson=require(_0x0a9e('0x1a'));var client=jayson[_0x0a9e('0x1b')][_0x0a9e('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0x0a9e('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x5d0880,_0x1985b6,_0x519dfd,_0x16033c){return new BPromise(function(_0x12066b,_0x48f32d){var _0x225616=_0x16033c||client;return _0x225616['request'](_0x5d0880,_0x519dfd)[_0x0a9e('0x1d')](function(_0x478723){logger[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x1985b6,_0x0a9e('0x20'));logger[_0x0a9e('0x21')](_0x0a9e('0x22'),_0x1985b6,_0x0a9e('0x20'),JSON[_0x0a9e('0x23')](_0x478723));if(_0x478723[_0x0a9e('0x24')]){if(_0x478723[_0x0a9e('0x24')][_0x0a9e('0x25')]===0x1f4){logger['error'](_0x0a9e('0x1f'),_0x1985b6,_0x478723[_0x0a9e('0x24')]['message']);return _0x48f32d(_0x478723[_0x0a9e('0x24')]['message']);}logger['error'](_0x0a9e('0x1f'),_0x1985b6,_0x478723[_0x0a9e('0x24')][_0x0a9e('0x26')]);return _0x12066b(_0x478723[_0x0a9e('0x24')]['message']);}else{logger[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x1985b6,_0x0a9e('0x20'));_0x12066b(_0x478723[_0x0a9e('0x27')][_0x0a9e('0x26')]);}})[_0x0a9e('0x28')](function(_0x16b1ca){logger['error']('ChatMessage,\x20%s,\x20%s',_0x1985b6,_0x16b1ca);_0x48f32d(_0x16b1ca);});});}function respondWithStatusCode(_0x197ec0,_0x3a8e58){_0x3a8e58=_0x3a8e58||0xcc;return function(_0x40c424){if(_0x40c424){return _0x197ec0[_0x0a9e('0x29')](_0x3a8e58);}return _0x197ec0['status'](_0x3a8e58)[_0x0a9e('0x2a')]();};}function respondWithResult(_0x479bc4,_0x45a1e7){_0x45a1e7=_0x45a1e7||0xc8;return function(_0x5bfb33){if(_0x5bfb33){return _0x479bc4[_0x0a9e('0x2b')](_0x45a1e7)[_0x0a9e('0x2c')](_0x5bfb33);}};}function respondWithFilteredResult(_0x25fba9,_0x14433c){return function(_0x140511){if(_0x140511){var _0x1538a4=typeof _0x14433c[_0x0a9e('0x2d')]===_0x0a9e('0x2e')&&typeof _0x14433c['limit']===_0x0a9e('0x2e');var _0x468813=_0x140511[_0x0a9e('0x2f')];var _0x2ec755=_0x1538a4?0x0:_0x14433c['offset'];var _0x15b200=_0x1538a4?_0x140511[_0x0a9e('0x2f')]:_0x14433c[_0x0a9e('0x2d')]+_0x14433c[_0x0a9e('0x30')];var _0x58b06f;if(_0x15b200>=_0x468813){_0x15b200=_0x468813;_0x58b06f=0xc8;}else{_0x58b06f=0xce;}_0x25fba9[_0x0a9e('0x2b')](_0x58b06f);return _0x25fba9[_0x0a9e('0x31')](_0x0a9e('0x32'),_0x2ec755+'-'+_0x15b200+'/'+_0x468813)[_0x0a9e('0x2c')](_0x140511);}return null;};}function patchUpdates(_0x540530){return function(_0x426950){try{jsonpatch['apply'](_0x426950,_0x540530,!![]);}catch(_0x2407f9){return BPromise[_0x0a9e('0x33')](_0x2407f9);}return _0x426950[_0x0a9e('0x34')]();};}function saveUpdates(_0x33bdb7,_0x25ce3a){return function(_0x5180f1){if(_0x5180f1){return _0x5180f1[_0x0a9e('0x35')](_0x33bdb7)[_0x0a9e('0x1d')](function(_0x40cb85){return _0x40cb85;});}return null;};}function removeEntity(_0x2da5c0,_0x2b45ea){return function(_0x409319){if(_0x409319){return _0x409319[_0x0a9e('0x36')]()[_0x0a9e('0x1d')](function(){_0x2da5c0['status'](0xcc)[_0x0a9e('0x2a')]();});}};}function handleEntityNotFound(_0x5e7238,_0x2cc7a0){return function(_0x14b13f){if(!_0x14b13f){_0x5e7238[_0x0a9e('0x29')](0x194);}return _0x14b13f;};}function handleError(_0x3f3d41,_0x567193){_0x567193=_0x567193||0x1f4;return function(_0x191e91){logger[_0x0a9e('0x24')](_0x191e91[_0x0a9e('0x37')]);if(_0x191e91[_0x0a9e('0x38')]){delete _0x191e91['name'];}_0x3f3d41['status'](_0x567193)[_0x0a9e('0x39')](_0x191e91);};}exports['index']=function(_0x24936a,_0x3d9717){var _0x381c37={},_0x1ef87a={},_0x4f41ae={'count':0x0,'rows':[]};var _0x31916f=_[_0x0a9e('0x3a')](db[_0x0a9e('0x3b')]['rawAttributes'],function(_0x1dbf74){return{'name':_0x1dbf74[_0x0a9e('0x3c')],'type':_0x1dbf74[_0x0a9e('0x3d')]['key']};});_0x1ef87a['model']=_[_0x0a9e('0x3a')](_0x31916f,_0x0a9e('0x38'));_0x1ef87a['query']=_[_0x0a9e('0x3e')](_0x24936a[_0x0a9e('0x3f')]);_0x1ef87a[_0x0a9e('0x40')]=_[_0x0a9e('0x41')](_0x1ef87a['model'],_0x1ef87a['query']);_0x381c37[_0x0a9e('0x42')]=_[_0x0a9e('0x41')](_0x1ef87a['model'],qs[_0x0a9e('0x43')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x43')]));_0x381c37['attributes']=_0x381c37[_0x0a9e('0x42')][_0x0a9e('0x44')]?_0x381c37[_0x0a9e('0x42')]:_0x1ef87a[_0x0a9e('0x45')];if(!_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x46')](_0x0a9e('0x47'))){_0x381c37[_0x0a9e('0x30')]=qs[_0x0a9e('0x30')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x30')]);_0x381c37[_0x0a9e('0x2d')]=qs[_0x0a9e('0x2d')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x2d')]);}_0x381c37['order']=qs['sort'](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x48')]);_0x381c37[_0x0a9e('0x49')]=qs[_0x0a9e('0x40')](_[_0x0a9e('0x4a')](_0x24936a[_0x0a9e('0x3f')],_0x1ef87a[_0x0a9e('0x40')]),_0x31916f);if(_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4b')]){_0x381c37[_0x0a9e('0x49')]=_[_0x0a9e('0x4c')](_0x381c37[_0x0a9e('0x49')],{'$or':_['map'](_0x31916f,function(_0x117c99){if(_0x117c99[_0x0a9e('0x3d')]!==_0x0a9e('0x4d')){var _0xfbd5ad={};_0xfbd5ad[_0x117c99[_0x0a9e('0x38')]]={'$like':'%'+_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4b')]+'%'};return _0xfbd5ad;}})});}_0x381c37=_[_0x0a9e('0x4c')]({},_0x381c37,_0x24936a['options']);var _0x2e9d90={'where':_0x381c37['where']};return db[_0x0a9e('0x3b')][_0x0a9e('0x2f')](_0x2e9d90)[_0x0a9e('0x1d')](function(_0x562fb4){_0x4f41ae[_0x0a9e('0x2f')]=_0x562fb4;if(_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4e')]){_0x381c37[_0x0a9e('0x4f')]=[{'all':!![]}];}return db[_0x0a9e('0x3b')][_0x0a9e('0x50')](_0x381c37);})[_0x0a9e('0x1d')](function(_0x5bbcde){_0x4f41ae[_0x0a9e('0x51')]=_0x5bbcde;return _0x4f41ae;})[_0x0a9e('0x1d')](respondWithFilteredResult(_0x3d9717,_0x381c37))[_0x0a9e('0x28')](handleError(_0x3d9717,null));};exports[_0x0a9e('0x52')]=function(_0x409789,_0x992c77){var _0x6054ee={'raw':!![],'where':{'id':_0x409789[_0x0a9e('0x53')]['id']}},_0x19383e={};_0x19383e['model']=_[_0x0a9e('0x3e')](db[_0x0a9e('0x3b')]['rawAttributes']);_0x19383e['query']=_['keys'](_0x409789[_0x0a9e('0x3f')]);_0x19383e[_0x0a9e('0x40')]=_[_0x0a9e('0x41')](_0x19383e[_0x0a9e('0x45')],_0x19383e[_0x0a9e('0x3f')]);_0x6054ee[_0x0a9e('0x42')]=_[_0x0a9e('0x41')](_0x19383e[_0x0a9e('0x45')],qs['fields'](_0x409789['query']['fields']));_0x6054ee[_0x0a9e('0x42')]=_0x6054ee[_0x0a9e('0x42')][_0x0a9e('0x44')]?_0x6054ee['attributes']:_0x19383e[_0x0a9e('0x45')];if(_0x409789[_0x0a9e('0x3f')]['includeAll']){_0x6054ee['include']=[{'all':!![]}];}_0x6054ee=_[_0x0a9e('0x4c')]({},_0x6054ee,_0x409789['options']);return db[_0x0a9e('0x3b')]['find'](_0x6054ee)[_0x0a9e('0x1d')](handleEntityNotFound(_0x992c77,null))[_0x0a9e('0x1d')](respondWithResult(_0x992c77,null))[_0x0a9e('0x28')](handleError(_0x992c77,null));};exports['create']=function(_0x2f82da,_0x1bf38a){return db['ChatMessage']['create'](_0x2f82da[_0x0a9e('0x54')],{})[_0x0a9e('0x1d')](respondWithResult(_0x1bf38a,0xc9))['catch'](handleError(_0x1bf38a,null));};exports[_0x0a9e('0x35')]=function(_0x5ce9ac,_0x211ef9){if(_0x5ce9ac['body']['id']){delete _0x5ce9ac[_0x0a9e('0x54')]['id'];}return db['ChatMessage']['find']({'where':{'id':_0x5ce9ac['params']['id']}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x211ef9,null))['then'](saveUpdates(_0x5ce9ac[_0x0a9e('0x54')],null))[_0x0a9e('0x1d')](respondWithResult(_0x211ef9,null))[_0x0a9e('0x28')](handleError(_0x211ef9,null));};exports[_0x0a9e('0x36')]=function(_0x232830,_0x272738){return db[_0x0a9e('0x3b')][_0x0a9e('0x55')]({'where':{'id':_0x232830['params']['id']}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x272738,null))[_0x0a9e('0x1d')](removeEntity(_0x272738,null))[_0x0a9e('0x28')](handleError(_0x272738,null));};exports[_0x0a9e('0x56')]=function(_0xb83dfd,_0x156662){return db['ChatMessage'][_0x0a9e('0x56')]()[_0x0a9e('0x1d')](respondWithResult(_0x156662,null))['catch'](handleError(_0x156662,null));};var interaction_log=require(_0x0a9e('0x57'))('chat-interactions');exports[_0x0a9e('0x58')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee){var _0x273cb5={'agent':{},'channel':'chat'};if(_0x5ba1f9[_0x0a9e('0x54')]['id']){delete _0x5ba1f9[_0x0a9e('0x54')]['id'];}_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x59')]=!![];_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5a')]=moment()['format'](_0x0a9e('0x5b'));_0x5ba1f9['body'][_0x0a9e('0x5c')]=_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')]||_0x5ba1f9['user']['id'];_0x273cb5[_0x0a9e('0x5d')]['id']=_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')];return db[_0x0a9e('0x3b')]['find']({'where':{'id':_0x5ba1f9[_0x0a9e('0x53')]['id'],'UserId':null}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x4b3c1a,null))['then'](saveUpdates(_0x5ba1f9[_0x0a9e('0x54')],null))[_0x0a9e('0x1d')](function(_0x88dcbf){if(_0x88dcbf){_0x273cb5[_0x0a9e('0x26')]=_0x88dcbf[_0x0a9e('0x5e')]({'plain':!![]});return db['ChatInteraction'][_0x0a9e('0x55')]({'where':{'id':_0x88dcbf[_0x0a9e('0x5f')]}});}return null;})[_0x0a9e('0x1d')](handleEntityNotFound(_0x4b3c1a,null))['then'](function(_0x3528b7){if(_0x3528b7){return _0x3528b7['update']({'UserId':_0x5ba1f9['body'][_0x0a9e('0x5c')],'read1stAt':_[_0x0a9e('0x60')](_0x3528b7[_0x0a9e('0x61')])?moment()[_0x0a9e('0x62')](_0x0a9e('0x5b')):undefined});}return null;})[_0x0a9e('0x1d')](function(_0x387489){if(_0x387489){_0x273cb5[_0x0a9e('0x63')]=_0x387489[_0x0a9e('0x5e')]({'plain':!![]});interaction_log[_0x0a9e('0x1e')](_0x0a9e('0x64'),_0x5ba1f9[_0x0a9e('0x65')]['id'],_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x38')],_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x66')],_0x273cb5[_0x0a9e('0x63')]['id'],_0x5ba1f9[_0x0a9e('0x54')]?JSON['stringify'](_0x5ba1f9[_0x0a9e('0x54')]):_0x0a9e('0x67'));return respondWithRpcPromise(_0x0a9e('0x68'),'acceptMessage',_0x273cb5);}return null;})[_0x0a9e('0x1d')](function(_0x30944e){var _0x4b341d=_0x0a9e('0x69')+_0x30944e[_0x0a9e('0x26')][_0x0a9e('0x6a')];return db[_0x0a9e('0x6b')][_0x0a9e('0x3f')](_0x4b341d,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})[_0x0a9e('0x1d')](function(_0x18bf5d){return _0x18bf5d;});})[_0x0a9e('0x1d')](function(_0x23a7d3){if(_0x23a7d3){_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x6c')]=_0x23a7d3[0x0];if(!_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')])return;return db['User'][_0x0a9e('0x55')]({'where':{'id':_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')],'role':'agent'},'attributes':['id',_0x0a9e('0x38'),'fullname',_0x0a9e('0x6d'),_0x0a9e('0x6e')],'raw':!![]});}return null;})['then'](function(_0x2ed01e){if(!_0x2ed01e)return null;_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x5d')]=_0x2ed01e;return _0x273cb5;})[_0x0a9e('0x1d')](function(_0x542ece){if(_0x542ece){if(_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x6f')]){_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x70')]=util['format'](_0x0a9e('0x71'),_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x38')]);_0x273cb5[_0x0a9e('0x26')]['channel']=_0x273cb5[_0x0a9e('0x72')];_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x73')]=_0x0a9e('0x58');return respondWithRpcPromise(_0x0a9e('0x74'),_0x0a9e('0x74'),{'event':_0x0a9e('0x75'),'message':_[_0x0a9e('0x4c')](_0x273cb5[_0x0a9e('0x26')],JSON[_0x0a9e('0x76')](_0x273cb5[_0x0a9e('0x63')][_0x0a9e('0x77')]))},client9002)[_0x0a9e('0x1d')](function(){return _0x273cb5;});}return _0x273cb5;}return null;})[_0x0a9e('0x1d')](respondWithResult(_0x4b3c1a,null))['catch'](handleError(_0x4b3c1a,null));};var interaction_log=require(_0x0a9e('0x57'))(_0x0a9e('0x78'));exports[_0x0a9e('0x33')]=function(_0x563627,_0x3736e0,_0x33dda0){var _0x8cea96={'agent':{},'channel':_0x0a9e('0x79')};if(_0x563627['body']['id']){delete _0x563627['body']['id'];}_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')]=_0x563627['body'][_0x0a9e('0x5c')]||_0x563627['user']['id'];_0x8cea96[_0x0a9e('0x5d')]['id']=_0x563627[_0x0a9e('0x54')]['UserId'];return db[_0x0a9e('0x3b')][_0x0a9e('0x55')]({'where':{'id':_0x563627[_0x0a9e('0x53')]['id'],'UserId':null}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x3736e0,null))[_0x0a9e('0x1d')](function(_0x1f42a0){if(_0x1f42a0){_0x8cea96[_0x0a9e('0x26')]=_0x1f42a0['get']({'plain':!![]});return db[_0x0a9e('0x7a')][_0x0a9e('0x55')]({'where':{'id':_0x1f42a0[_0x0a9e('0x5f')]}});}return null;})[_0x0a9e('0x1d')](handleEntityNotFound(_0x3736e0,null))['then'](function(_0xf51744){if(_0xf51744){_0x8cea96[_0x0a9e('0x63')]=_0xf51744['get']({'plain':!![]});interaction_log[_0x0a9e('0x1e')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x563627[_0x0a9e('0x65')]['id'],_0x563627[_0x0a9e('0x65')][_0x0a9e('0x38')],_0x563627[_0x0a9e('0x65')]['role'],_0x8cea96['interaction']['id'],_0x563627[_0x0a9e('0x54')]?JSON[_0x0a9e('0x23')](_0x563627[_0x0a9e('0x54')]):'null');return respondWithRpcPromise(_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x8cea96);}return null;})['then'](function(_0x4e46b2){var _0xf0a802='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4e46b2['message']['ContactId'];return db[_0x0a9e('0x6b')][_0x0a9e('0x3f')](_0xf0a802,{'type':db[_0x0a9e('0x7d')][_0x0a9e('0x7e')][_0x0a9e('0x7f')],'raw':!![]})[_0x0a9e('0x1d')](function(_0x5a8854){return _0x5a8854;});})[_0x0a9e('0x1d')](function(_0x5955f1){if(_0x5955f1){_0x8cea96[_0x0a9e('0x26')][_0x0a9e('0x6c')]=_0x5955f1[0x0];if(!_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')])return;return db['User'][_0x0a9e('0x55')]({'where':{'id':_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')],'role':'agent'},'attributes':['id',_0x0a9e('0x38'),_0x0a9e('0x80'),_0x0a9e('0x6d'),_0x0a9e('0x6e')],'raw':!![]});}return null;})[_0x0a9e('0x1d')](function(_0x1910bf){if(!_0x1910bf)return null;_0x8cea96[_0x0a9e('0x26')][_0x0a9e('0x5d')]=_0x1910bf;return _0x8cea96;})['then'](function(_0x2645d6){if(_0x2645d6){_0x2645d6[_0x0a9e('0x26')]['interface']=util[_0x0a9e('0x62')](_0x0a9e('0x71'),_0x563627[_0x0a9e('0x65')]['name']);_0x2645d6[_0x0a9e('0x26')]['channel']=_0x8cea96[_0x0a9e('0x72')];_0x2645d6[_0x0a9e('0x26')][_0x0a9e('0x73')]=_0x0a9e('0x33');respondWithRpcPromise(_0x0a9e('0x74'),_0x0a9e('0x74'),{'event':_0x0a9e('0x81'),'message':_[_0x0a9e('0x4c')](_0x8cea96['message'],JSON[_0x0a9e('0x76')](_0x8cea96[_0x0a9e('0x63')][_0x0a9e('0x77')]))},client9002);return _0x8cea96;}return null;})[_0x0a9e('0x1d')](respondWithResult(_0x3736e0,null))[_0x0a9e('0x28')](handleError(_0x3736e0,null));};
\ No newline at end of file
index 5c0828c..0dbbcda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe538=['update','emit','hasOwnProperty','exports','events','../../mysqldb','ChatMessage'];(function(_0xd4ae3f,_0x410d0f){var _0x52e69b=function(_0x454872){while(--_0x454872){_0xd4ae3f['push'](_0xd4ae3f['shift']());}};_0x52e69b(++_0x410d0f);}(_0xe538,0xe4));var _0x8e53=function(_0x37909b,_0xbd548c){_0x37909b=_0x37909b-0x0;var _0x1a949b=_0xe538[_0x37909b];return _0x1a949b;};'use strict';var EventEmitter=require(_0x8e53('0x0'));var ChatMessage=require(_0x8e53('0x1'))['db'][_0x8e53('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x8e53('0x3'),'afterDestroy':'remove'};function emitEvent(_0x228ecb){return function(_0x2963dd,_0x10636c,_0x12df56){ChatMessageEvents[_0x8e53('0x4')](_0x228ecb+':'+_0x2963dd['id'],_0x2963dd);ChatMessageEvents[_0x8e53('0x4')](_0x228ecb,_0x2963dd);_0x12df56(null);};}for(var e in events){if(events[_0x8e53('0x5')](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module[_0x8e53('0x6')]=ChatMessageEvents;
\ No newline at end of file
+var _0x66e6=['remove','hasOwnProperty','events','../../mysqldb','ChatMessage','setMaxListeners','update'];(function(_0x34c1aa,_0x226691){var _0x22797c=function(_0x166e8e){while(--_0x166e8e){_0x34c1aa['push'](_0x34c1aa['shift']());}};_0x22797c(++_0x226691);}(_0x66e6,0x136));var _0x666e=function(_0x2745c8,_0x10b836){_0x2745c8=_0x2745c8-0x0;var _0x56f0c4=_0x66e6[_0x2745c8];return _0x56f0c4;};'use strict';var EventEmitter=require(_0x666e('0x0'));var ChatMessage=require(_0x666e('0x1'))['db'][_0x666e('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x666e('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x666e('0x4'),'afterDestroy':_0x666e('0x5')};function emitEvent(_0x24ecf9){return function(_0x28fa9f,_0x48126e,_0x50e35e){ChatMessageEvents['emit'](_0x24ecf9+':'+_0x28fa9f['id'],_0x28fa9f);ChatMessageEvents['emit'](_0x24ecf9,_0x28fa9f);_0x50e35e(null);};}for(var e in events){if(events[_0x666e('0x6')](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
index 4d9070d..6a3bfe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f0c=['exports','ChatMessage','fti_chat_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','isNil','ChatInteraction','findOne','ChatInteractionId','then','update','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes'];(function(_0x310870,_0x5d4149){var _0x5f2b2a=function(_0x59f383){while(--_0x59f383){_0x310870['push'](_0x310870['shift']());}};_0x5f2b2a(++_0x5d4149);}(_0x3f0c,0x6e));var _0xc3f0=function(_0x8ad473,_0x4e40db){_0x8ad473=_0x8ad473-0x0;var _0x5ca4b9=_0x3f0c[_0x8ad473];return _0x5ca4b9;};'use strict';var _=require(_0xc3f0('0x0'));var util=require(_0xc3f0('0x1'));var logger=require(_0xc3f0('0x2'))(_0xc3f0('0x3'));var moment=require(_0xc3f0('0x4'));var BPromise=require('bluebird');var rp=require(_0xc3f0('0x5'));var fs=require('fs');var path=require(_0xc3f0('0x6'));var rimraf=require(_0xc3f0('0x7'));var config=require(_0xc3f0('0x8'));var attributes=require(_0xc3f0('0x9'));module[_0xc3f0('0xa')]=function(_0x2a5738,_0x32b905){return _0x2a5738['define'](_0xc3f0('0xb'),attributes,{'tableName':'chat_messages','paranoid':![],'indexes':[{'name':_0xc3f0('0xc'),'fields':[_0xc3f0('0xd')],'type':_0xc3f0('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x198328,_0x40ce0d,_0x255d83){var _0x4d76c0=_0x2a5738[_0xc3f0('0xf')];var _0x5e3700=_0x198328[_0xc3f0('0x10')]({'plain':!![]});if(_0x5e3700[_0xc3f0('0x11')][_0xc3f0('0x12')]()==='in'||_0x5e3700[_0xc3f0('0x11')][_0xc3f0('0x12')]()===_0xc3f0('0x13')&&!_0x5e3700['secret']&&!_[_0xc3f0('0x14')](_0x5e3700['UserId'])){_0x4d76c0[_0xc3f0('0x15')][_0xc3f0('0x16')]({'where':{'id':_0x5e3700[_0xc3f0('0x17')]}})[_0xc3f0('0x18')](function(_0x4c28af){if(_0x4c28af){_0x4c28af[_0xc3f0('0x19')]({'lastMsgAt':_0x5e3700['createdAt'],'lastMsgDirection':_0x5e3700[_0xc3f0('0x11')]['toLowerCase']()});}})[_0xc3f0('0x1a')](function(_0x56c441){console[_0xc3f0('0x1b')](_0x56c441);});}_0x255d83();}},'charset':_0xc3f0('0x1c'),'collate':_0xc3f0('0x1d')});};
\ No newline at end of file
+var _0xc55d=['api','bluebird','path','rimraf','../../config/environment','./chatMessage.attributes','exports','define','chat_messages','fti_chat_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','UserId','findOne','ChatInteractionId','update','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x2304cc,_0x56281f){var _0x2d4a58=function(_0x3ab390){while(--_0x3ab390){_0x2304cc['push'](_0x2304cc['shift']());}};_0x2d4a58(++_0x56281f);}(_0xc55d,0x1d9));var _0xdc55=function(_0x34a242,_0x3113a3){_0x34a242=_0x34a242-0x0;var _0x59cf4f=_0xc55d[_0x34a242];return _0x59cf4f;};'use strict';var _=require(_0xdc55('0x0'));var util=require(_0xdc55('0x1'));var logger=require(_0xdc55('0x2'))(_0xdc55('0x3'));var moment=require('moment');var BPromise=require(_0xdc55('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xdc55('0x5'));var rimraf=require(_0xdc55('0x6'));var config=require(_0xdc55('0x7'));var attributes=require(_0xdc55('0x8'));module[_0xdc55('0x9')]=function(_0x29809d,_0x19df86){return _0x29809d[_0xdc55('0xa')]('ChatMessage',attributes,{'tableName':_0xdc55('0xb'),'paranoid':![],'indexes':[{'name':_0xdc55('0xc'),'fields':[_0xdc55('0xd')],'type':_0xdc55('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xf88ad8,_0x3b788d,_0x53bfc0){var _0x16939e=_0x29809d[_0xdc55('0xf')];var _0x53db7d=_0xf88ad8[_0xdc55('0x10')]({'plain':!![]});if(_0x53db7d[_0xdc55('0x11')][_0xdc55('0x12')]()==='in'||_0x53db7d[_0xdc55('0x11')][_0xdc55('0x12')]()===_0xdc55('0x13')&&!_0x53db7d[_0xdc55('0x14')]&&!_['isNil'](_0x53db7d[_0xdc55('0x15')])){_0x16939e['ChatInteraction'][_0xdc55('0x16')]({'where':{'id':_0x53db7d[_0xdc55('0x17')]}})['then'](function(_0x5c28d8){if(_0x5c28d8){_0x5c28d8[_0xdc55('0x18')]({'lastMsgAt':_0x53db7d['createdAt'],'lastMsgDirection':_0x53db7d[_0xdc55('0x11')]['toLowerCase']()});}})['catch'](function(_0x44e348){console[_0xdc55('0x19')](_0x44e348);});}_0x53bfc0();}},'charset':_0xdc55('0x1a'),'collate':_0xdc55('0x1b')});};
\ No newline at end of file
index 2dbed14..ee1f050 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb986=['request\x20sent','stringify','error','code','message','ChatMessage,\x20%s,\x20%s','result','catch','ChatMessage','body','options','raw','then','CreateChatMessage','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','info','ChatMessage,\x20%s,\x20%s,\x20%s'];(function(_0x4a1b18,_0x58a4c0){var _0x4ccb41=function(_0x102c33){while(--_0x102c33){_0x4a1b18['push'](_0x4a1b18['shift']());}};_0x4ccb41(++_0x58a4c0);}(_0xb986,0xc8));var _0x6b98=function(_0x1f9ea7,_0x57865d){_0x1f9ea7=_0x1f9ea7-0x0;var _0xc971d6=_0xb986[_0x1f9ea7];return _0xc971d6;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6b98('0x0'));var BPromise=require(_0x6b98('0x1'));var rs=require(_0x6b98('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6b98('0x3'))['db'];var utils=require(_0x6b98('0x4'));var logger=require('../../config/logger')(_0x6b98('0x5'));var config=require('../../config/environment');var jayson=require(_0x6b98('0x6'));var client=jayson[_0x6b98('0x7')][_0x6b98('0x8')]({'port':0x232a});config[_0x6b98('0x9')]=_[_0x6b98('0xa')](config['redis'],{'host':_0x6b98('0xb'),'port':0x18eb});var socket=require(_0x6b98('0xc'))(new Redis(config[_0x6b98('0x9')]));require('./chatMessage.socket')[_0x6b98('0xd')](socket);function respondWithRpcPromise(_0x1aa6bb,_0x17c1a2,_0x168b9d){return new BPromise(function(_0x559054,_0x310479){return client[_0x6b98('0xe')](_0x1aa6bb,_0x168b9d)['then'](function(_0x526d3c){logger[_0x6b98('0xf')]('ChatMessage,\x20%s,\x20%s',_0x17c1a2,'request\x20sent');logger['debug'](_0x6b98('0x10'),_0x17c1a2,_0x6b98('0x11'),JSON[_0x6b98('0x12')](_0x526d3c));if(_0x526d3c[_0x6b98('0x13')]){if(_0x526d3c[_0x6b98('0x13')][_0x6b98('0x14')]===0x1f4){logger['error']('ChatMessage,\x20%s,\x20%s',_0x17c1a2,_0x526d3c[_0x6b98('0x13')][_0x6b98('0x15')]);return _0x310479(_0x526d3c[_0x6b98('0x13')][_0x6b98('0x15')]);}logger[_0x6b98('0x13')](_0x6b98('0x16'),_0x17c1a2,_0x526d3c[_0x6b98('0x13')][_0x6b98('0x15')]);return _0x559054(_0x526d3c['error']['message']);}else{logger[_0x6b98('0xf')](_0x6b98('0x16'),_0x17c1a2,_0x6b98('0x11'));_0x559054(_0x526d3c[_0x6b98('0x17')][_0x6b98('0x15')]);}})[_0x6b98('0x18')](function(_0x745504){logger[_0x6b98('0x13')](_0x6b98('0x16'),_0x17c1a2,_0x745504);_0x310479(_0x745504);});});}exports['CreateChatMessage']=function(_0x2d05e3){var _0x105112=this;return new Promise(function(_0x37245f,_0x240404){return db[_0x6b98('0x19')]['create'](_0x2d05e3[_0x6b98('0x1a')],{'raw':_0x2d05e3[_0x6b98('0x1b')]?_0x2d05e3[_0x6b98('0x1b')][_0x6b98('0x1c')]===undefined?!![]:![]:!![]})[_0x6b98('0x1d')](function(_0x5a2f5d){logger[_0x6b98('0xf')](_0x6b98('0x1e'),_0x2d05e3);logger['debug'](_0x6b98('0x1e'),_0x2d05e3,JSON['stringify'](_0x5a2f5d));_0x37245f(_0x5a2f5d);})['catch'](function(_0xbef8cc){logger[_0x6b98('0x13')](_0x6b98('0x1e'),_0xbef8cc[_0x6b98('0x15')],_0x2d05e3);_0x240404(_0x105112['error'](0x1f4,_0xbef8cc[_0x6b98('0x15')]));});});};
\ No newline at end of file
+var _0x3989=['http','redis','localhost','socket.io-emitter','./chatMessage.socket','request','then','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','CreateChatMessage','create','body','options','raw','stringify','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x12db73,_0x46faa9){var _0x295be1=function(_0x42a203){while(--_0x42a203){_0x12db73['push'](_0x12db73['shift']());}};_0x295be1(++_0x46faa9);}(_0x3989,0x12f));var _0x9398=function(_0x1250db,_0x4ce917){_0x1250db=_0x1250db-0x0;var _0x390024=_0x3989[_0x1250db];return _0x390024;};'use strict';var _=require(_0x9398('0x0'));var util=require('util');var moment=require(_0x9398('0x1'));var BPromise=require(_0x9398('0x2'));var rs=require(_0x9398('0x3'));var fs=require('fs');var Redis=require(_0x9398('0x4'));var db=require(_0x9398('0x5'))['db'];var utils=require(_0x9398('0x6'));var logger=require(_0x9398('0x7'))(_0x9398('0x8'));var config=require(_0x9398('0x9'));var jayson=require(_0x9398('0xa'));var client=jayson[_0x9398('0xb')][_0x9398('0xc')]({'port':0x232a});config['redis']=_['defaults'](config[_0x9398('0xd')],{'host':_0x9398('0xe'),'port':0x18eb});var socket=require(_0x9398('0xf'))(new Redis(config[_0x9398('0xd')]));require(_0x9398('0x10'))['register'](socket);function respondWithRpcPromise(_0x4d1fac,_0x26c6ed,_0x17ba46){return new BPromise(function(_0x5c83b0,_0x18fdd8){return client[_0x9398('0x11')](_0x4d1fac,_0x17ba46)[_0x9398('0x12')](function(_0x33d9aa){logger['info'](_0x9398('0x13'),_0x26c6ed,_0x9398('0x14'));logger[_0x9398('0x15')](_0x9398('0x16'),_0x26c6ed,_0x9398('0x14'),JSON['stringify'](_0x33d9aa));if(_0x33d9aa[_0x9398('0x17')]){if(_0x33d9aa['error'][_0x9398('0x18')]===0x1f4){logger[_0x9398('0x17')](_0x9398('0x13'),_0x26c6ed,_0x33d9aa[_0x9398('0x17')]['message']);return _0x18fdd8(_0x33d9aa[_0x9398('0x17')][_0x9398('0x19')]);}logger[_0x9398('0x17')](_0x9398('0x13'),_0x26c6ed,_0x33d9aa[_0x9398('0x17')][_0x9398('0x19')]);return _0x5c83b0(_0x33d9aa[_0x9398('0x17')]['message']);}else{logger[_0x9398('0x1a')]('ChatMessage,\x20%s,\x20%s',_0x26c6ed,_0x9398('0x14'));_0x5c83b0(_0x33d9aa[_0x9398('0x1b')][_0x9398('0x19')]);}})[_0x9398('0x1c')](function(_0x5d3d75){logger[_0x9398('0x17')](_0x9398('0x13'),_0x26c6ed,_0x5d3d75);_0x18fdd8(_0x5d3d75);});});}exports[_0x9398('0x1d')]=function(_0x32046a){var _0x141514=this;return new Promise(function(_0x2b1cbc,_0x2b0d5e){return db['ChatMessage'][_0x9398('0x1e')](_0x32046a[_0x9398('0x1f')],{'raw':_0x32046a[_0x9398('0x20')]?_0x32046a[_0x9398('0x20')][_0x9398('0x21')]===undefined?!![]:![]:!![]})[_0x9398('0x12')](function(_0xa87335){logger[_0x9398('0x1a')](_0x9398('0x1d'),_0x32046a);logger[_0x9398('0x15')](_0x9398('0x1d'),_0x32046a,JSON[_0x9398('0x22')](_0xa87335));_0x2b1cbc(_0xa87335);})[_0x9398('0x1c')](function(_0x57dcaa){logger[_0x9398('0x17')]('CreateChatMessage',_0x57dcaa['message'],_0x32046a);_0x2b0d5e(_0x141514['error'](0x1f4,_0x57dcaa[_0x9398('0x19')]));});});};
\ No newline at end of file
index 5dab1f1..36179d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c32=['remove','emit','removeListener','register','length','chatMessage:','./chatMessage.events'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x6c32,0xb5));var _0x26c3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6c32[_0x20a584];return _0x4b41a8;};'use strict';var ChatMessageEvents=require(_0x26c3('0x0'));var events=['save',_0x26c3('0x1'),'update'];function createListener(_0x3428b4,_0x4eac69){return function(_0x3847b3){_0x4eac69[_0x26c3('0x2')](_0x3428b4,_0x3847b3);};}function removeListener(_0x5e8a24,_0x4c2de2){return function(){ChatMessageEvents[_0x26c3('0x3')](_0x5e8a24,_0x4c2de2);};}exports[_0x26c3('0x4')]=function(_0x421941){for(var _0x402393=0x0,_0x17bc12=events[_0x26c3('0x5')];_0x402393<_0x17bc12;_0x402393++){var _0x438a89=events[_0x402393];var _0x11ed3d=createListener(_0x26c3('0x6')+_0x438a89,_0x421941);ChatMessageEvents['on'](_0x438a89,_0x11ed3d);}};
\ No newline at end of file
+var _0x2d17=['update','emit','register','chatMessage:','./chatMessage.events','save'];(function(_0x5c1e1d,_0x20ec9b){var _0x28c8d6=function(_0x5a5d2c){while(--_0x5a5d2c){_0x5c1e1d['push'](_0x5c1e1d['shift']());}};_0x28c8d6(++_0x20ec9b);}(_0x2d17,0x17e));var _0x72d1=function(_0x4c0100,_0x2f14c3){_0x4c0100=_0x4c0100-0x0;var _0x44eb68=_0x2d17[_0x4c0100];return _0x44eb68;};'use strict';var ChatMessageEvents=require(_0x72d1('0x0'));var events=[_0x72d1('0x1'),'remove',_0x72d1('0x2')];function createListener(_0x4727f9,_0x531f4e){return function(_0x3687bc){_0x531f4e[_0x72d1('0x3')](_0x4727f9,_0x3687bc);};}function removeListener(_0x55b722,_0x1dd6d8){return function(){ChatMessageEvents['removeListener'](_0x55b722,_0x1dd6d8);};}exports[_0x72d1('0x4')]=function(_0x50f551){for(var _0x139ba0=0x0,_0x239d1f=events['length'];_0x139ba0<_0x239d1f;_0x139ba0++){var _0x477264=events[_0x139ba0];var _0x422f5a=createListener(_0x72d1('0x5')+_0x477264,_0x50f551);ChatMessageEvents['on'](_0x477264,_0x422f5a);}};
\ No newline at end of file
index 9f3437a..41f2676 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c14=['reject','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatMessage.controller','index','get','describe','/:id','isAuthenticated','post','chat','chatmessage:create','create','put','update','/:id/accept','accept','/:id/reject'];(function(_0x321bf7,_0x2af09a){var _0x4d4c96=function(_0xfe9481){while(--_0xfe9481){_0x321bf7['push'](_0x321bf7['shift']());}};_0x4d4c96(++_0x2af09a);}(_0x9c14,0xc1));var _0x49c1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9c14[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x49c1('0x0'));var util=require('util');var path=require(_0x49c1('0x1'));var timeout=require(_0x49c1('0x2'));var express=require(_0x49c1('0x3'));var router=express[_0x49c1('0x4')]();var fs_extra=require(_0x49c1('0x5'));var auth=require(_0x49c1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x49c1('0x7'));var controller=require(_0x49c1('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x49c1('0x9')]);router[_0x49c1('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x49c1('0xb')]);router[_0x49c1('0xa')](_0x49c1('0xc'),auth[_0x49c1('0xd')](),controller['show']);router[_0x49c1('0xe')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x49c1('0xf'),_0x49c1('0x10')),controller[_0x49c1('0x11')]);router[_0x49c1('0x12')]('/:id',controller[_0x49c1('0x13')]);router['put'](_0x49c1('0x14'),auth['isAuthenticated'](),controller[_0x49c1('0x15')]);router[_0x49c1('0x12')](_0x49c1('0x16'),auth[_0x49c1('0xd')](),controller[_0x49c1('0x17')]);router[_0x49c1('0x18')]('/:id',auth[_0x49c1('0xd')](),controller[_0x49c1('0x19')]);module[_0x49c1('0x1a')]=router;
\ No newline at end of file
+var _0x99a1=['/:id/reject','reject','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','post','chat','chatmessage:create','create','update','/:id/accept','accept'];(function(_0x5be892,_0x68238a){var _0x53fc35=function(_0x8626ac){while(--_0x8626ac){_0x5be892['push'](_0x5be892['shift']());}};_0x53fc35(++_0x68238a);}(_0x99a1,0x1d8));var _0x199a=function(_0x501109,_0x5b64ab){_0x501109=_0x501109-0x0;var _0x510513=_0x99a1[_0x501109];return _0x510513;};'use strict';var multer=require(_0x199a('0x0'));var util=require(_0x199a('0x1'));var path=require(_0x199a('0x2'));var timeout=require(_0x199a('0x3'));var express=require(_0x199a('0x4'));var router=express[_0x199a('0x5')]();var fs_extra=require(_0x199a('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x199a('0x7'));var config=require('../../config/environment');var controller=require('./chatMessage.controller');router[_0x199a('0x8')]('/',auth[_0x199a('0x9')](),controller[_0x199a('0xa')]);router[_0x199a('0x8')](_0x199a('0xb'),auth[_0x199a('0x9')](),controller[_0x199a('0xc')]);router[_0x199a('0x8')](_0x199a('0xd'),auth[_0x199a('0x9')](),controller[_0x199a('0xe')]);router[_0x199a('0xf')]('/',auth[_0x199a('0x9')](),interaction['tracked'](_0x199a('0x10'),_0x199a('0x11')),controller[_0x199a('0x12')]);router['put']('/:id',controller[_0x199a('0x13')]);router['put'](_0x199a('0x14'),auth[_0x199a('0x9')](),controller[_0x199a('0x15')]);router['put'](_0x199a('0x16'),auth[_0x199a('0x9')](),controller[_0x199a('0x17')]);router[_0x199a('0x18')](_0x199a('0xd'),auth['isAuthenticated'](),controller[_0x199a('0x19')]);module['exports']=router;
\ No newline at end of file
index 1a4df26..05c244e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d8e=['exports','TEXT','medium','sequelize'];(function(_0xabbd2f,_0x44d05a){var _0x34a040=function(_0x3736d9){while(--_0x3736d9){_0xabbd2f['push'](_0xabbd2f['shift']());}};_0x34a040(++_0x44d05a);}(_0x9d8e,0xc3));var _0xe9d8=function(_0x3a8409,_0x27fb45){_0x3a8409=_0x3a8409-0x0;var _0x42fe30=_0x9d8e[_0x3a8409];return _0x42fe30;};'use strict';var Sequelize=require(_0xe9d8('0x0'));module[_0xe9d8('0x1')]={'body':{'type':Sequelize[_0xe9d8('0x2')](_0xe9d8('0x3')),'allowNull':![]}};
\ No newline at end of file
+var _0xf654=['exports','medium'];(function(_0x2c37c8,_0x458d3d){var _0x3008ee=function(_0x40cc80){while(--_0x40cc80){_0x2c37c8['push'](_0x2c37c8['shift']());}};_0x3008ee(++_0x458d3d);}(_0xf654,0xf0));var _0x4f65=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf654[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module[_0x4f65('0x0')]={'body':{'type':Sequelize['TEXT'](_0x4f65('0x1')),'allowNull':![]}};
\ No newline at end of file
index ffd41d4..cf9e48f 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(_0x41f59c,_0x3eaf47){var _0x3b727a=function(_0x456a62){while(--_0x456a62){_0x41f59c['push'](_0x41f59c['shift']());}};_0x3b727a(++_0x3eaf47);}(_0x9957,0x93));var _0x7995=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9957[_0x19e35c];return _0x3e1fe8;};'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(_0x16d10f,_0x2ba2d5){var _0x50c823=function(_0x44e43f){while(--_0x44e43f){_0x16d10f['push'](_0x16d10f['shift']());}};_0x50c823(++_0x2ba2d5);}(_0x7a54,0x106));var _0x47a5=function(_0x2de455,_0x28bb5d){_0x2de455=_0x2de455-0x0;var _0x520fe2=_0x7a54[_0x2de455];return _0x520fe2;};'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 c2e22d8..53d8230 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f4a=['define','chat_offline_messages','utf8mb4_unicode_ci','util','bluebird','request-promise','path','../../config/environment','exports'];(function(_0x31df6f,_0x380e73){var _0x31e353=function(_0x3a434b){while(--_0x3a434b){_0x31df6f['push'](_0x31df6f['shift']());}};_0x31e353(++_0x380e73);}(_0x9f4a,0x162));var _0xa9f4=function(_0x5cd349,_0x2ee62d){_0x5cd349=_0x5cd349-0x0;var _0x36e9a6=_0x9f4a[_0x5cd349];return _0x36e9a6;};'use strict';var _=require('lodash');var util=require(_0xa9f4('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa9f4('0x1'));var rp=require(_0xa9f4('0x2'));var fs=require('fs');var path=require(_0xa9f4('0x3'));var rimraf=require('rimraf');var config=require(_0xa9f4('0x4'));var attributes=require('./chatOfflineMessage.attributes');module[_0xa9f4('0x5')]=function(_0x9eaf6c,_0x2df96a){return _0x9eaf6c[_0xa9f4('0x6')]('ChatOfflineMessage',attributes,{'tableName':_0xa9f4('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xa9f4('0x8')});};
\ No newline at end of file
+var _0xb55f=['exports','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatOfflineMessage.attributes'];(function(_0x4111d2,_0x57a5a3){var _0x1d811d=function(_0xe605e3){while(--_0xe605e3){_0x4111d2['push'](_0x4111d2['shift']());}};_0x1d811d(++_0x57a5a3);}(_0xb55f,0x1df));var _0xfb55=function(_0x512579,_0x4c2902){_0x512579=_0x512579-0x0;var _0x1af5ad=_0xb55f[_0x512579];return _0x1af5ad;};'use strict';var _=require(_0xfb55('0x0'));var util=require(_0xfb55('0x1'));var logger=require(_0xfb55('0x2'))(_0xfb55('0x3'));var moment=require(_0xfb55('0x4'));var BPromise=require(_0xfb55('0x5'));var rp=require(_0xfb55('0x6'));var fs=require('fs');var path=require(_0xfb55('0x7'));var rimraf=require(_0xfb55('0x8'));var config=require(_0xfb55('0x9'));var attributes=require(_0xfb55('0xa'));module[_0xfb55('0xb')]=function(_0x524784,_0x3da37d){return _0x524784['define']('ChatOfflineMessage',attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xfb55('0xc'),'collate':_0xfb55('0xd')});};
\ No newline at end of file
index 881cd10..61f798a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d8a=['moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request','then','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util'];(function(_0x566bdf,_0x1f4861){var _0x331215=function(_0x524d0d){while(--_0x524d0d){_0x566bdf['push'](_0x566bdf['shift']());}};_0x331215(++_0x1f4861);}(_0x7d8a,0x1e1));var _0xa7d8=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x7d8a[_0x18ab2a];return _0x16dcee;};'use strict';var _=require(_0xa7d8('0x0'));var util=require(_0xa7d8('0x1'));var moment=require(_0xa7d8('0x2'));var BPromise=require(_0xa7d8('0x3'));var rs=require(_0xa7d8('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa7d8('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xa7d8('0x6'))('rpc');var config=require(_0xa7d8('0x7'));var jayson=require(_0xa7d8('0x8'));var client=jayson[_0xa7d8('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41d42b,_0x30c6a5,_0x14f5ff){return new BPromise(function(_0x554c7f,_0x5d90dd){return client[_0xa7d8('0xa')](_0x41d42b,_0x14f5ff)[_0xa7d8('0xb')](function(_0xc1788b){logger['info'](_0xa7d8('0xc'),_0x30c6a5,_0xa7d8('0xd'));logger[_0xa7d8('0xe')](_0xa7d8('0xf'),_0x30c6a5,_0xa7d8('0xd'),JSON[_0xa7d8('0x10')](_0xc1788b));if(_0xc1788b[_0xa7d8('0x11')]){if(_0xc1788b[_0xa7d8('0x11')][_0xa7d8('0x12')]===0x1f4){logger[_0xa7d8('0x11')](_0xa7d8('0xc'),_0x30c6a5,_0xc1788b[_0xa7d8('0x11')]['message']);return _0x5d90dd(_0xc1788b[_0xa7d8('0x11')][_0xa7d8('0x13')]);}logger[_0xa7d8('0x11')]('ChatOfflineMessage,\x20%s,\x20%s',_0x30c6a5,_0xc1788b[_0xa7d8('0x11')][_0xa7d8('0x13')]);return _0x554c7f(_0xc1788b[_0xa7d8('0x11')][_0xa7d8('0x13')]);}else{logger[_0xa7d8('0x14')](_0xa7d8('0xc'),_0x30c6a5,_0xa7d8('0xd'));_0x554c7f(_0xc1788b[_0xa7d8('0x15')][_0xa7d8('0x13')]);}})[_0xa7d8('0x16')](function(_0x59101b){logger[_0xa7d8('0x11')](_0xa7d8('0xc'),_0x30c6a5,_0x59101b);_0x5d90dd(_0x59101b);});});}
\ No newline at end of file
+var _0x5058=['message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','http','then','request\x20sent','debug','stringify','error','code','ChatOfflineMessage,\x20%s,\x20%s'];(function(_0x342700,_0x135c24){var _0x4719db=function(_0x1a7f1a){while(--_0x1a7f1a){_0x342700['push'](_0x342700['shift']());}};_0x4719db(++_0x135c24);}(_0x5058,0xde));var _0x8505=function(_0x13992d,_0x3029ea){_0x13992d=_0x13992d-0x0;var _0x3d15bf=_0x5058[_0x13992d];return _0x3d15bf;};'use strict';var _=require(_0x8505('0x0'));var util=require(_0x8505('0x1'));var moment=require(_0x8505('0x2'));var BPromise=require(_0x8505('0x3'));var rs=require(_0x8505('0x4'));var fs=require('fs');var Redis=require(_0x8505('0x5'));var db=require(_0x8505('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8505('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x8505('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x403bae,_0xde4fd2,_0x218328){return new BPromise(function(_0x2e84ac,_0x300364){return client['request'](_0x403bae,_0x218328)[_0x8505('0x9')](function(_0x25758f){logger['info']('ChatOfflineMessage,\x20%s,\x20%s',_0xde4fd2,_0x8505('0xa'));logger[_0x8505('0xb')]('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0xde4fd2,'request\x20sent',JSON[_0x8505('0xc')](_0x25758f));if(_0x25758f['error']){if(_0x25758f[_0x8505('0xd')][_0x8505('0xe')]===0x1f4){logger[_0x8505('0xd')](_0x8505('0xf'),_0xde4fd2,_0x25758f['error'][_0x8505('0x10')]);return _0x300364(_0x25758f[_0x8505('0xd')][_0x8505('0x10')]);}logger[_0x8505('0xd')](_0x8505('0xf'),_0xde4fd2,_0x25758f[_0x8505('0xd')][_0x8505('0x10')]);return _0x2e84ac(_0x25758f['error']['message']);}else{logger['info'](_0x8505('0xf'),_0xde4fd2,_0x8505('0xa'));_0x2e84ac(_0x25758f['result'][_0x8505('0x10')]);}})['catch'](function(_0x7221b2){logger[_0x8505('0xd')]('ChatOfflineMessage,\x20%s,\x20%s',_0xde4fd2,_0x7221b2);_0x300364(_0x7221b2);});});}
\ No newline at end of file
index 67182ea..5172b44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x028e=['/describe','isAuthenticated','describe','show','create','put','/:id','update','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get'];(function(_0xf46d11,_0x3abdc5){var _0x2bc350=function(_0x5b1fc0){while(--_0x5b1fc0){_0xf46d11['push'](_0xf46d11['shift']());}};_0x2bc350(++_0x3abdc5);}(_0x028e,0x14c));var _0xe028=function(_0x3ba768,_0x4cb125){_0x3ba768=_0x3ba768-0x0;var _0x12ac1f=_0x028e[_0x3ba768];return _0x12ac1f;};'use strict';var multer=require(_0xe028('0x0'));var util=require(_0xe028('0x1'));var path=require(_0xe028('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xe028('0x3')]();var fs_extra=require(_0xe028('0x4'));var auth=require(_0xe028('0x5'));var interaction=require(_0xe028('0x6'));var config=require(_0xe028('0x7'));var controller=require(_0xe028('0x8'));router[_0xe028('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xe028('0x9')](_0xe028('0xa'),auth[_0xe028('0xb')](),controller[_0xe028('0xc')]);router[_0xe028('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe028('0xd')]);router['post']('/',auth[_0xe028('0xb')](),controller[_0xe028('0xe')]);router[_0xe028('0xf')](_0xe028('0x10'),auth['isAuthenticated'](),controller[_0xe028('0x11')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xe028('0x12')]=router;
\ No newline at end of file
+var _0xa666=['describe','/:id','show','post','create','put','update','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./chatOfflineMessage.controller','get','/describe','isAuthenticated'];(function(_0x1af577,_0x1bd440){var _0x18ec4f=function(_0x4c9f95){while(--_0x4c9f95){_0x1af577['push'](_0x1af577['shift']());}};_0x18ec4f(++_0x1bd440);}(_0xa666,0x137));var _0x6a66=function(_0x22156f,_0x1cd9ee){_0x22156f=_0x22156f-0x0;var _0x44b016=_0xa666[_0x22156f];return _0x44b016;};'use strict';var multer=require(_0x6a66('0x0'));var util=require(_0x6a66('0x1'));var path=require(_0x6a66('0x2'));var timeout=require(_0x6a66('0x3'));var express=require(_0x6a66('0x4'));var router=express[_0x6a66('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x6a66('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6a66('0x7'));var controller=require(_0x6a66('0x8'));router[_0x6a66('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6a66('0x9')](_0x6a66('0xa'),auth[_0x6a66('0xb')](),controller[_0x6a66('0xc')]);router['get'](_0x6a66('0xd'),auth[_0x6a66('0xb')](),controller[_0x6a66('0xe')]);router[_0x6a66('0xf')]('/',auth['isAuthenticated'](),controller[_0x6a66('0x10')]);router[_0x6a66('0x11')](_0x6a66('0xd'),auth[_0x6a66('0xb')](),controller[_0x6a66('0x12')]);router['delete'](_0x6a66('0xd'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 57ed3ca..126b127 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99a6=['INTEGER','sequelize','exports','STRING','ENUM','timeout'];(function(_0x302c48,_0x5e02c9){var _0x29b609=function(_0x4d0bdc){while(--_0x4d0bdc){_0x302c48['push'](_0x302c48['shift']());}};_0x29b609(++_0x5e02c9);}(_0x99a6,0x1b1));var _0x699a=function(_0x4b3d10,_0x3da823){_0x4b3d10=_0x4b3d10-0x0;var _0x3f62cc=_0x99a6[_0x4b3d10];return _0x3f62cc;};'use strict';var Sequelize=require(_0x699a('0x0'));module[_0x699a('0x1')]={'name':{'type':Sequelize[_0x699a('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x699a('0x3')]('mouseOver',_0x699a('0x4')),'defaultValue':'mouseOver'},'selector':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x699a('0x5')]}};
\ No newline at end of file
+var _0x96ae=['ENUM','timeout','mouseOver','INTEGER','sequelize','exports','STRING'];(function(_0x43a4fd,_0x505e78){var _0xe33e21=function(_0x97e173){while(--_0x97e173){_0x43a4fd['push'](_0x43a4fd['shift']());}};_0xe33e21(++_0x505e78);}(_0x96ae,0x162));var _0xe96a=function(_0x2fc5db,_0x2253b1){_0x2fc5db=_0x2fc5db-0x0;var _0x1ef11b=_0x96ae[_0x2fc5db];return _0x1ef11b;};'use strict';var Sequelize=require(_0xe96a('0x0'));module[_0xe96a('0x1')]={'name':{'type':Sequelize[_0xe96a('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xe96a('0x3')]('mouseOver',_0xe96a('0x4')),'defaultValue':_0xe96a('0x5')},'selector':{'type':Sequelize[_0xe96a('0x2')]},'timeout':{'type':Sequelize[_0xe96a('0x6')]}};
\ No newline at end of file
index 8136bcb..34eacc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dfa=['catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','destroy','stack','name','send','show','params','model','keys','ChatProactiveAction','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0x6dfa,0x7b));var _0xa6df=function(_0x433e2f,_0x3897bc){_0x433e2f=_0x433e2f-0x0;var _0x3d6270=_0x6dfa[_0x433e2f];return _0x3d6270;};'use strict';var emlformat=require(_0xa6df('0x0'));var rimraf=require(_0xa6df('0x1'));var zipdir=require(_0xa6df('0x2'));var jsonpatch=require(_0xa6df('0x3'));var rp=require(_0xa6df('0x4'));var moment=require('moment');var BPromise=require(_0xa6df('0x5'));var Mustache=require('mustache');var util=require(_0xa6df('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xa6df('0x7'));var ejs=require(_0xa6df('0x8'));var fs=require('fs');var fs_extra=require(_0xa6df('0x9'));var _=require(_0xa6df('0xa'));var squel=require(_0xa6df('0xb'));var crypto=require(_0xa6df('0xc'));var jsforce=require(_0xa6df('0xd'));var deskjs=require(_0xa6df('0xe'));var toCsv=require(_0xa6df('0x7'));var querystring=require(_0xa6df('0xf'));var Papa=require('papaparse');var Redis=require(_0xa6df('0x10'));var authService=require(_0xa6df('0x11'));var qs=require(_0xa6df('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa6df('0x13'));var logger=require('../../config/logger')(_0xa6df('0x14'));var utils=require(_0xa6df('0x15'));var config=require(_0xa6df('0x16'));var licenseUtil=require(_0xa6df('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x6bdaa,_0x500e77){_0x500e77=_0x500e77||0xcc;return function(_0x1540f1){if(_0x1540f1){return _0x6bdaa[_0xa6df('0x18')](_0x500e77);}return _0x6bdaa[_0xa6df('0x19')](_0x500e77)[_0xa6df('0x1a')]();};}function respondWithResult(_0x53325a,_0x1e536d){_0x1e536d=_0x1e536d||0xc8;return function(_0x5bbd9e){if(_0x5bbd9e){return _0x53325a[_0xa6df('0x19')](_0x1e536d)[_0xa6df('0x1b')](_0x5bbd9e);}};}function respondWithFilteredResult(_0x59c2a2,_0x300a72){return function(_0x414cae){if(_0x414cae){var _0x23f4c1=typeof _0x300a72[_0xa6df('0x1c')]===_0xa6df('0x1d')&&typeof _0x300a72['limit']===_0xa6df('0x1d');var _0x3f9a6b=_0x414cae[_0xa6df('0x1e')];var _0x172bb9=_0x23f4c1?0x0:_0x300a72['offset'];var _0x203375=_0x23f4c1?_0x414cae[_0xa6df('0x1e')]:_0x300a72[_0xa6df('0x1c')]+_0x300a72[_0xa6df('0x1f')];var _0x48de1c;if(_0x203375>=_0x3f9a6b){_0x203375=_0x3f9a6b;_0x48de1c=0xc8;}else{_0x48de1c=0xce;}_0x59c2a2['status'](_0x48de1c);return _0x59c2a2[_0xa6df('0x20')]('Content-Range',_0x172bb9+'-'+_0x203375+'/'+_0x3f9a6b)[_0xa6df('0x1b')](_0x414cae);}return null;};}function patchUpdates(_0xfefceb){return function(_0x297e0f){try{jsonpatch[_0xa6df('0x21')](_0x297e0f,_0xfefceb,!![]);}catch(_0x2f41e1){return BPromise['reject'](_0x2f41e1);}return _0x297e0f[_0xa6df('0x22')]();};}function saveUpdates(_0x37dcbd,_0x3c09de){return function(_0x10fb11){if(_0x10fb11){return _0x10fb11[_0xa6df('0x23')](_0x37dcbd)[_0xa6df('0x24')](function(_0x539be3){return _0x539be3;});}return null;};}function removeEntity(_0x4be3e0,_0xcaa3a1){return function(_0x111659){if(_0x111659){return _0x111659[_0xa6df('0x25')]()[_0xa6df('0x24')](function(){_0x4be3e0[_0xa6df('0x19')](0xcc)[_0xa6df('0x1a')]();});}};}function handleEntityNotFound(_0x557aa6,_0x51e836){return function(_0x1f138b){if(!_0x1f138b){_0x557aa6[_0xa6df('0x18')](0x194);}return _0x1f138b;};}function handleError(_0x2745f8,_0x50e7b8){_0x50e7b8=_0x50e7b8||0x1f4;return function(_0x54ff44){logger['error'](_0x54ff44[_0xa6df('0x26')]);if(_0x54ff44['name']){delete _0x54ff44[_0xa6df('0x27')];}_0x2745f8[_0xa6df('0x19')](_0x50e7b8)[_0xa6df('0x28')](_0x54ff44);};}exports[_0xa6df('0x29')]=function(_0x37b079,_0x25a36a){var _0x55161d={'raw':!![],'where':{'id':_0x37b079[_0xa6df('0x2a')]['id']}},_0x42fa1b={};_0x42fa1b[_0xa6df('0x2b')]=_[_0xa6df('0x2c')](db[_0xa6df('0x2d')]['rawAttributes']);_0x42fa1b[_0xa6df('0x2e')]=_[_0xa6df('0x2c')](_0x37b079['query']);_0x42fa1b[_0xa6df('0x2f')]=_[_0xa6df('0x30')](_0x42fa1b['model'],_0x42fa1b[_0xa6df('0x2e')]);_0x55161d[_0xa6df('0x31')]=_[_0xa6df('0x30')](_0x42fa1b[_0xa6df('0x2b')],qs[_0xa6df('0x32')](_0x37b079['query'][_0xa6df('0x32')]));_0x55161d[_0xa6df('0x31')]=_0x55161d[_0xa6df('0x31')][_0xa6df('0x33')]?_0x55161d['attributes']:_0x42fa1b[_0xa6df('0x2b')];if(_0x37b079['query'][_0xa6df('0x34')]){_0x55161d[_0xa6df('0x35')]=[{'all':!![]}];}_0x55161d=_[_0xa6df('0x36')]({},_0x55161d,_0x37b079[_0xa6df('0x37')]);return db[_0xa6df('0x2d')][_0xa6df('0x38')](_0x55161d)[_0xa6df('0x24')](handleEntityNotFound(_0x25a36a,null))[_0xa6df('0x24')](respondWithResult(_0x25a36a,null))[_0xa6df('0x39')](handleError(_0x25a36a,null));};exports[_0xa6df('0x3a')]=function(_0x55c1e3,_0x48c21f){return db['ChatProactiveAction'][_0xa6df('0x3a')](_0x55c1e3[_0xa6df('0x3b')],{})[_0xa6df('0x24')](respondWithResult(_0x48c21f,0xc9))[_0xa6df('0x39')](handleError(_0x48c21f,null));};exports[_0xa6df('0x23')]=function(_0x4e2d03,_0x463d54){if(_0x4e2d03[_0xa6df('0x3b')]['id']){delete _0x4e2d03[_0xa6df('0x3b')]['id'];}return db[_0xa6df('0x2d')][_0xa6df('0x38')]({'where':{'id':_0x4e2d03['params']['id']}})[_0xa6df('0x24')](handleEntityNotFound(_0x463d54,null))[_0xa6df('0x24')](saveUpdates(_0x4e2d03[_0xa6df('0x3b')],null))['then'](respondWithResult(_0x463d54,null))[_0xa6df('0x39')](handleError(_0x463d54,null));};exports['destroy']=function(_0x56c2bf,_0x56d9e6){return db[_0xa6df('0x2d')][_0xa6df('0x38')]({'where':{'id':_0x56c2bf['params']['id']}})['then'](handleEntityNotFound(_0x56d9e6,null))[_0xa6df('0x24')](removeEntity(_0x56d9e6,null))[_0xa6df('0x39')](handleError(_0x56d9e6,null));};
\ No newline at end of file
+var _0xa991=['fields','length','include','merge','create','body','catch','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','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','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','show','params','model','ChatProactiveAction','rawAttributes','query','keys','filters','attributes','intersection'];(function(_0x3b54f6,_0x227ca1){var _0x5238b6=function(_0x570a07){while(--_0x570a07){_0x3b54f6['push'](_0x3b54f6['shift']());}};_0x5238b6(++_0x227ca1);}(_0xa991,0x143));var _0x1a99=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xa991[_0x5f1391];return _0x50ebe3;};'use strict';var emlformat=require(_0x1a99('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1a99('0x1'));var jsonpatch=require(_0x1a99('0x2'));var rp=require(_0x1a99('0x3'));var moment=require(_0x1a99('0x4'));var BPromise=require(_0x1a99('0x5'));var Mustache=require('mustache');var util=require(_0x1a99('0x6'));var path=require(_0x1a99('0x7'));var sox=require(_0x1a99('0x8'));var csv=require(_0x1a99('0x9'));var ejs=require(_0x1a99('0xa'));var fs=require('fs');var fs_extra=require(_0x1a99('0xb'));var _=require(_0x1a99('0xc'));var squel=require('squel');var crypto=require(_0x1a99('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1a99('0xe'));var toCsv=require(_0x1a99('0x9'));var querystring=require(_0x1a99('0xf'));var Papa=require(_0x1a99('0x10'));var Redis=require(_0x1a99('0x11'));var authService=require(_0x1a99('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x1a99('0x13'));var hardwareService=require(_0x1a99('0x14'));var logger=require(_0x1a99('0x15'))('api');var utils=require(_0x1a99('0x16'));var config=require(_0x1a99('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x1a99('0x18'))['db'];function respondWithStatusCode(_0x539d17,_0x4839ed){_0x4839ed=_0x4839ed||0xcc;return function(_0x11e4a7){if(_0x11e4a7){return _0x539d17[_0x1a99('0x19')](_0x4839ed);}return _0x539d17[_0x1a99('0x1a')](_0x4839ed)[_0x1a99('0x1b')]();};}function respondWithResult(_0x49d5f7,_0x957f06){_0x957f06=_0x957f06||0xc8;return function(_0x2eb92f){if(_0x2eb92f){return _0x49d5f7[_0x1a99('0x1a')](_0x957f06)[_0x1a99('0x1c')](_0x2eb92f);}};}function respondWithFilteredResult(_0x2ef6f4,_0x4efdb6){return function(_0x257450){if(_0x257450){var _0x4a4e28=typeof _0x4efdb6[_0x1a99('0x1d')]===_0x1a99('0x1e')&&typeof _0x4efdb6[_0x1a99('0x1f')]===_0x1a99('0x1e');var _0x26b4d0=_0x257450[_0x1a99('0x20')];var _0x5c0f09=_0x4a4e28?0x0:_0x4efdb6['offset'];var _0x250781=_0x4a4e28?_0x257450['count']:_0x4efdb6[_0x1a99('0x1d')]+_0x4efdb6[_0x1a99('0x1f')];var _0x4753b4;if(_0x250781>=_0x26b4d0){_0x250781=_0x26b4d0;_0x4753b4=0xc8;}else{_0x4753b4=0xce;}_0x2ef6f4[_0x1a99('0x1a')](_0x4753b4);return _0x2ef6f4[_0x1a99('0x21')](_0x1a99('0x22'),_0x5c0f09+'-'+_0x250781+'/'+_0x26b4d0)[_0x1a99('0x1c')](_0x257450);}return null;};}function patchUpdates(_0x4f6087){return function(_0x41d1d0){try{jsonpatch[_0x1a99('0x23')](_0x41d1d0,_0x4f6087,!![]);}catch(_0x3fccfb){return BPromise[_0x1a99('0x24')](_0x3fccfb);}return _0x41d1d0[_0x1a99('0x25')]();};}function saveUpdates(_0x583f65,_0x31d6e5){return function(_0x9875db){if(_0x9875db){return _0x9875db[_0x1a99('0x26')](_0x583f65)[_0x1a99('0x27')](function(_0x510ec6){return _0x510ec6;});}return null;};}function removeEntity(_0xca6db7,_0x2e6a05){return function(_0x5dfe1f){if(_0x5dfe1f){return _0x5dfe1f[_0x1a99('0x28')]()[_0x1a99('0x27')](function(){_0xca6db7['status'](0xcc)[_0x1a99('0x1b')]();});}};}function handleEntityNotFound(_0x1812be,_0x1c4033){return function(_0x54faf6){if(!_0x54faf6){_0x1812be['sendStatus'](0x194);}return _0x54faf6;};}function handleError(_0x2a5e66,_0x5c5c83){_0x5c5c83=_0x5c5c83||0x1f4;return function(_0x210060){logger[_0x1a99('0x29')](_0x210060[_0x1a99('0x2a')]);if(_0x210060[_0x1a99('0x2b')]){delete _0x210060[_0x1a99('0x2b')];}_0x2a5e66[_0x1a99('0x1a')](_0x5c5c83)[_0x1a99('0x2c')](_0x210060);};}exports[_0x1a99('0x2d')]=function(_0x66b7a4,_0xe92ae1){var _0x5ddaf4={'raw':!![],'where':{'id':_0x66b7a4[_0x1a99('0x2e')]['id']}},_0x5d4545={};_0x5d4545[_0x1a99('0x2f')]=_['keys'](db[_0x1a99('0x30')][_0x1a99('0x31')]);_0x5d4545[_0x1a99('0x32')]=_[_0x1a99('0x33')](_0x66b7a4[_0x1a99('0x32')]);_0x5d4545[_0x1a99('0x34')]=_['intersection'](_0x5d4545['model'],_0x5d4545[_0x1a99('0x32')]);_0x5ddaf4[_0x1a99('0x35')]=_[_0x1a99('0x36')](_0x5d4545[_0x1a99('0x2f')],qs['fields'](_0x66b7a4[_0x1a99('0x32')][_0x1a99('0x37')]));_0x5ddaf4[_0x1a99('0x35')]=_0x5ddaf4[_0x1a99('0x35')][_0x1a99('0x38')]?_0x5ddaf4[_0x1a99('0x35')]:_0x5d4545['model'];if(_0x66b7a4[_0x1a99('0x32')]['includeAll']){_0x5ddaf4[_0x1a99('0x39')]=[{'all':!![]}];}_0x5ddaf4=_[_0x1a99('0x3a')]({},_0x5ddaf4,_0x66b7a4['options']);return db[_0x1a99('0x30')]['find'](_0x5ddaf4)['then'](handleEntityNotFound(_0xe92ae1,null))[_0x1a99('0x27')](respondWithResult(_0xe92ae1,null))['catch'](handleError(_0xe92ae1,null));};exports[_0x1a99('0x3b')]=function(_0x46c4c7,_0x1f66ac){return db[_0x1a99('0x30')][_0x1a99('0x3b')](_0x46c4c7[_0x1a99('0x3c')],{})[_0x1a99('0x27')](respondWithResult(_0x1f66ac,0xc9))[_0x1a99('0x3d')](handleError(_0x1f66ac,null));};exports[_0x1a99('0x26')]=function(_0x52c781,_0x37c141){if(_0x52c781[_0x1a99('0x3c')]['id']){delete _0x52c781[_0x1a99('0x3c')]['id'];}return db[_0x1a99('0x30')][_0x1a99('0x3e')]({'where':{'id':_0x52c781[_0x1a99('0x2e')]['id']}})[_0x1a99('0x27')](handleEntityNotFound(_0x37c141,null))[_0x1a99('0x27')](saveUpdates(_0x52c781['body'],null))[_0x1a99('0x27')](respondWithResult(_0x37c141,null))[_0x1a99('0x3d')](handleError(_0x37c141,null));};exports[_0x1a99('0x28')]=function(_0x5040e8,_0x3508cb){return db[_0x1a99('0x30')][_0x1a99('0x3e')]({'where':{'id':_0x5040e8[_0x1a99('0x2e')]['id']}})['then'](handleEntityNotFound(_0x3508cb,null))[_0x1a99('0x27')](removeEntity(_0x3508cb,null))[_0x1a99('0x3d')](handleError(_0x3508cb,null));};
\ No newline at end of file
index 779c9cc..aca832b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa47c=['./chatProactiveAction.attributes','exports','define','ChatProactiveAction','chat_proactive_actions','lodash','util','../../config/logger','api','bluebird','path','rimraf'];(function(_0x110267,_0xad85d0){var _0xb1415a=function(_0x4bd4ec){while(--_0x4bd4ec){_0x110267['push'](_0x110267['shift']());}};_0xb1415a(++_0xad85d0);}(_0xa47c,0xdd));var _0xca47=function(_0x557529,_0x7f4fe9){_0x557529=_0x557529-0x0;var _0x28fd65=_0xa47c[_0x557529];return _0x28fd65;};'use strict';var _=require(_0xca47('0x0'));var util=require(_0xca47('0x1'));var logger=require(_0xca47('0x2'))(_0xca47('0x3'));var moment=require('moment');var BPromise=require(_0xca47('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xca47('0x5'));var rimraf=require(_0xca47('0x6'));var config=require('../../config/environment');var attributes=require(_0xca47('0x7'));module[_0xca47('0x8')]=function(_0x5d9532,_0x5315be){return _0x5d9532[_0xca47('0x9')](_0xca47('0xa'),attributes,{'tableName':_0xca47('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbc8d=['api','moment','bluebird','rimraf','../../config/environment','./chatProactiveAction.attributes','define','ChatProactiveAction','chat_proactive_actions','../../config/logger'];(function(_0x18eee6,_0x234b90){var _0x47ee36=function(_0x5552b4){while(--_0x5552b4){_0x18eee6['push'](_0x18eee6['shift']());}};_0x47ee36(++_0x234b90);}(_0xbc8d,0xdb));var _0xdbc8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbc8d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xdbc8('0x0'))(_0xdbc8('0x1'));var moment=require(_0xdbc8('0x2'));var BPromise=require(_0xdbc8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xdbc8('0x4'));var config=require(_0xdbc8('0x5'));var attributes=require(_0xdbc8('0x6'));module['exports']=function(_0x2321c9,_0x4b9fc3){return _0x2321c9[_0xdbc8('0x7')](_0xdbc8('0x8'),attributes,{'tableName':_0xdbc8('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4d6d788..55ab06a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc619=['util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','then','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash'];(function(_0x58712a,_0x1d88a9){var _0x342032=function(_0x5365f0){while(--_0x5365f0){_0x58712a['push'](_0x58712a['shift']());}};_0x342032(++_0x1d88a9);}(_0xc619,0x110));var _0x9c61=function(_0x256abe,_0x28279e){_0x256abe=_0x256abe-0x0;var _0x16f298=_0xc619[_0x256abe];return _0x16f298;};'use strict';var _=require(_0x9c61('0x0'));var util=require(_0x9c61('0x1'));var moment=require(_0x9c61('0x2'));var BPromise=require('bluebird');var rs=require(_0x9c61('0x3'));var fs=require('fs');var Redis=require(_0x9c61('0x4'));var db=require(_0x9c61('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9c61('0x6'));var config=require(_0x9c61('0x7'));var jayson=require(_0x9c61('0x8'));var client=jayson['client'][_0x9c61('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x35d635,_0x267092,_0x266470){return new BPromise(function(_0x4dcce1,_0x116fdc){return client[_0x9c61('0xa')](_0x35d635,_0x266470)[_0x9c61('0xb')](function(_0x46db1e){logger['info'](_0x9c61('0xc'),_0x267092,_0x9c61('0xd'));logger[_0x9c61('0xe')](_0x9c61('0xf'),_0x267092,_0x9c61('0xd'),JSON['stringify'](_0x46db1e));if(_0x46db1e[_0x9c61('0x10')]){if(_0x46db1e[_0x9c61('0x10')][_0x9c61('0x11')]===0x1f4){logger['error'](_0x9c61('0xc'),_0x267092,_0x46db1e[_0x9c61('0x10')][_0x9c61('0x12')]);return _0x116fdc(_0x46db1e[_0x9c61('0x10')][_0x9c61('0x12')]);}logger['error'](_0x9c61('0xc'),_0x267092,_0x46db1e[_0x9c61('0x10')]['message']);return _0x4dcce1(_0x46db1e[_0x9c61('0x10')][_0x9c61('0x12')]);}else{logger['info'](_0x9c61('0xc'),_0x267092,_0x9c61('0xd'));_0x4dcce1(_0x46db1e[_0x9c61('0x13')][_0x9c61('0x12')]);}})[_0x9c61('0x14')](function(_0x8fa83b){logger[_0x9c61('0x10')](_0x9c61('0xc'),_0x267092,_0x8fa83b);_0x116fdc(_0x8fa83b);});});}
\ No newline at end of file
+var _0xcff8=['request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','request','then','info','ChatProactiveAction,\x20%s,\x20%s'];(function(_0x23165a,_0x19d021){var _0x40c6c4=function(_0x57e397){while(--_0x57e397){_0x23165a['push'](_0x23165a['shift']());}};_0x40c6c4(++_0x19d021);}(_0xcff8,0x11a));var _0x8cff=function(_0x46e7f9,_0x1bd875){_0x46e7f9=_0x46e7f9-0x0;var _0x363df5=_0xcff8[_0x46e7f9];return _0x363df5;};'use strict';var _=require('lodash');var util=require(_0x8cff('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8cff('0x1'));var fs=require('fs');var Redis=require(_0x8cff('0x2'));var db=require(_0x8cff('0x3'))['db'];var utils=require(_0x8cff('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x8cff('0x5'));var client=jayson[_0x8cff('0x6')][_0x8cff('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5a5ecc,_0x5a9772,_0x24b4f6){return new BPromise(function(_0x5bbda8,_0x16ea9d){return client[_0x8cff('0x8')](_0x5a5ecc,_0x24b4f6)[_0x8cff('0x9')](function(_0x321007){logger[_0x8cff('0xa')](_0x8cff('0xb'),_0x5a9772,_0x8cff('0xc'));logger[_0x8cff('0xd')](_0x8cff('0xe'),_0x5a9772,_0x8cff('0xc'),JSON[_0x8cff('0xf')](_0x321007));if(_0x321007[_0x8cff('0x10')]){if(_0x321007[_0x8cff('0x10')][_0x8cff('0x11')]===0x1f4){logger[_0x8cff('0x10')](_0x8cff('0xb'),_0x5a9772,_0x321007[_0x8cff('0x10')][_0x8cff('0x12')]);return _0x16ea9d(_0x321007[_0x8cff('0x10')]['message']);}logger[_0x8cff('0x10')](_0x8cff('0xb'),_0x5a9772,_0x321007[_0x8cff('0x10')][_0x8cff('0x12')]);return _0x5bbda8(_0x321007['error'][_0x8cff('0x12')]);}else{logger[_0x8cff('0xa')]('ChatProactiveAction,\x20%s,\x20%s',_0x5a9772,'request\x20sent');_0x5bbda8(_0x321007[_0x8cff('0x13')][_0x8cff('0x12')]);}})[_0x8cff('0x14')](function(_0x2bb409){logger[_0x8cff('0x10')](_0x8cff('0xb'),_0x5a9772,_0x2bb409);_0x16ea9d(_0x2bb409);});});}
\ No newline at end of file
index 5b6c548..2fe528a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['post','create','update','destroy','exports','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','/:id','isAuthenticated','show'];(function(_0x2e986d,_0x250cf7){var _0x2209a4=function(_0x4eb649){while(--_0x4eb649){_0x2e986d['push'](_0x2e986d['shift']());}};_0x2209a4(++_0x250cf7);}(_0xda19,0xd5));var _0x9da1=function(_0x2508d8,_0x5bb2d9){_0x2508d8=_0x2508d8-0x0;var _0x432fe2=_0xda19[_0x2508d8];return _0x432fe2;};'use strict';var multer=require('multer');var util=require(_0x9da1('0x0'));var path=require(_0x9da1('0x1'));var timeout=require('connect-timeout');var express=require(_0x9da1('0x2'));var router=express['Router']();var fs_extra=require(_0x9da1('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x9da1('0x4'));var config=require(_0x9da1('0x5'));var controller=require(_0x9da1('0x6'));router[_0x9da1('0x7')](_0x9da1('0x8'),auth[_0x9da1('0x9')](),controller[_0x9da1('0xa')]);router[_0x9da1('0xb')]('/',auth[_0x9da1('0x9')](),controller[_0x9da1('0xc')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x9da1('0xd')]);router['delete'](_0x9da1('0x8'),auth[_0x9da1('0x9')](),controller[_0x9da1('0xe')]);module[_0x9da1('0xf')]=router;
\ No newline at end of file
+var _0x46ed=['multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./chatProactiveAction.controller','get','/:id','isAuthenticated','show','post','create','put','delete','destroy','exports'];(function(_0x3dc538,_0x4f7702){var _0x72c2fd=function(_0x5a7260){while(--_0x5a7260){_0x3dc538['push'](_0x3dc538['shift']());}};_0x72c2fd(++_0x4f7702);}(_0x46ed,0x168));var _0xd46e=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0x46ed[_0x29d94e];return _0x106237;};'use strict';var multer=require(_0xd46e('0x0'));var util=require(_0xd46e('0x1'));var path=require('path');var timeout=require(_0xd46e('0x2'));var express=require(_0xd46e('0x3'));var router=express[_0xd46e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd46e('0x5'));var interaction=require(_0xd46e('0x6'));var config=require('../../config/environment');var controller=require(_0xd46e('0x7'));router[_0xd46e('0x8')](_0xd46e('0x9'),auth[_0xd46e('0xa')](),controller[_0xd46e('0xb')]);router[_0xd46e('0xc')]('/',auth[_0xd46e('0xa')](),controller[_0xd46e('0xd')]);router[_0xd46e('0xe')](_0xd46e('0x9'),auth[_0xd46e('0xa')](),controller['update']);router[_0xd46e('0xf')](_0xd46e('0x9'),auth['isAuthenticated'](),controller[_0xd46e('0x10')]);module[_0xd46e('0x11')]=router;
\ No newline at end of file
index 3a0f1a7..c3cb36c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bc8=['name','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING'];(function(_0x77ed6f,_0x574728){var _0x4d661f=function(_0x11f63a){while(--_0x11f63a){_0x77ed6f['push'](_0x77ed6f['shift']());}};_0x4d661f(++_0x574728);}(_0x8bc8,0x84));var _0x88bc=function(_0x346962,_0x4f69d6){_0x346962=_0x346962-0x0;var _0x3f2a3d=_0x8bc8[_0x346962];return _0x3f2a3d;};'use strict';var Sequelize=require(_0x88bc('0x0'));module[_0x88bc('0x1')]={'name':{'type':Sequelize[_0x88bc('0x2')],'unique':_0x88bc('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x88bc('0x2')]},'timeout':{'type':Sequelize[_0x88bc('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x88bc('0x5')](_0x88bc('0x6'),_0x88bc('0x7'),_0x88bc('0x8'))}};
\ No newline at end of file
+var _0x6343=['sequelize','name','STRING','INTEGER','rrmemory','beepall','roundrobin'];(function(_0x13da5a,_0x106c1c){var _0x1b1128=function(_0x2c2ecd){while(--_0x2c2ecd){_0x13da5a['push'](_0x13da5a['shift']());}};_0x1b1128(++_0x106c1c);}(_0x6343,0x196));var _0x3634=function(_0x1889cc,_0xf4a1e1){_0x1889cc=_0x1889cc-0x0;var _0x37aca1=_0x6343[_0x1889cc];return _0x37aca1;};'use strict';var Sequelize=require(_0x3634('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x3634('0x1'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x3634('0x2')]},'timeout':{'type':Sequelize[_0x3634('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x3634('0x4'),_0x3634('0x5'),_0x3634('0x6'))}};
\ No newline at end of file
index 20b7141..e6d0cbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfa1=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','http','info','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','get','ChatQueues','UserProfileResource','stack','name','send','index','ChatQueue','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','filter','merge','map','type','VIRTUAL','includeAll','include','findAll','rows','show','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','params','getMembers','findOne','UserChatQueue','order','pick','ChatQueueId','options','User','UserId','chatPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','addTeams','Team','Agents','online','voicePause','flatMap','sequelize','transaction','findOrCreate','forEach','emit','userChatQueue:save','removeTeams','select','field','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','all','compact','ids','isEmpty','removeAgents','userChatQueue:remove','addAgents','omit','isArray','getAgents'];(function(_0x4c4019,_0x401781){var _0x510ec8=function(_0x53fc5d){while(--_0x53fc5d){_0x4c4019['push'](_0x4c4019['shift']());}};_0x510ec8(++_0x401781);}(_0xcfa1,0x99));var _0x1cfa=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xcfa1[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0x1cfa('0x0'));var rimraf=require(_0x1cfa('0x1'));var zipdir=require(_0x1cfa('0x2'));var jsonpatch=require(_0x1cfa('0x3'));var rp=require(_0x1cfa('0x4'));var moment=require('moment');var BPromise=require(_0x1cfa('0x5'));var Mustache=require('mustache');var util=require(_0x1cfa('0x6'));var path=require(_0x1cfa('0x7'));var sox=require(_0x1cfa('0x8'));var csv=require(_0x1cfa('0x9'));var ejs=require(_0x1cfa('0xa'));var fs=require('fs');var fs_extra=require(_0x1cfa('0xb'));var _=require(_0x1cfa('0xc'));var squel=require(_0x1cfa('0xd'));var crypto=require(_0x1cfa('0xe'));var jsforce=require(_0x1cfa('0xf'));var deskjs=require(_0x1cfa('0x10'));var toCsv=require(_0x1cfa('0x9'));var querystring=require(_0x1cfa('0x11'));var Papa=require(_0x1cfa('0x12'));var Redis=require(_0x1cfa('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x1cfa('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1cfa('0x15'));var utils=require('../../config/utils');var config=require(_0x1cfa('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x1cfa('0x17')]=_[_0x1cfa('0x18')](config['redis'],{'host':_0x1cfa('0x19'),'port':0x18eb});var socket=require(_0x1cfa('0x1a'))(new Redis(config['redis']));require(_0x1cfa('0x1b'))[_0x1cfa('0x1c')](socket);var jayson=require(_0x1cfa('0x1d'));var client=jayson[_0x1cfa('0x1e')][_0x1cfa('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x309cf7,_0x2231f9,_0x5d38c4,_0x369d87){return new BPromise(function(_0x15bbce,_0xda6e18){var _0x543255=_0x369d87||client;return _0x543255['request'](_0x309cf7,_0x5d38c4)['then'](function(_0x395954){logger[_0x1cfa('0x20')](_0x1cfa('0x21'),_0x2231f9,_0x1cfa('0x22'));logger['debug'](_0x1cfa('0x23'),_0x2231f9,_0x1cfa('0x22'),JSON[_0x1cfa('0x24')](_0x395954));if(_0x395954[_0x1cfa('0x25')]){if(_0x395954['error'][_0x1cfa('0x26')]===0x1f4){logger[_0x1cfa('0x25')]('ChatQueue,\x20%s,\x20%s',_0x2231f9,_0x395954[_0x1cfa('0x25')][_0x1cfa('0x27')]);return _0xda6e18(_0x395954[_0x1cfa('0x25')]['message']);}logger['error'](_0x1cfa('0x21'),_0x2231f9,_0x395954[_0x1cfa('0x25')][_0x1cfa('0x27')]);return _0x15bbce(_0x395954['error'][_0x1cfa('0x27')]);}else{logger[_0x1cfa('0x20')](_0x1cfa('0x21'),_0x2231f9,'request\x20sent');_0x15bbce(_0x395954['result'][_0x1cfa('0x27')]);}})[_0x1cfa('0x28')](function(_0xc1c669){logger[_0x1cfa('0x25')](_0x1cfa('0x21'),_0x2231f9,_0xc1c669);_0xda6e18(_0xc1c669);});});}function respondWithStatusCode(_0x3d31c8,_0x32b1f7){_0x32b1f7=_0x32b1f7||0xcc;return function(_0x22571b){if(_0x22571b){return _0x3d31c8[_0x1cfa('0x29')](_0x32b1f7);}return _0x3d31c8[_0x1cfa('0x2a')](_0x32b1f7)['end']();};}function respondWithResult(_0x5beb5f,_0x515d7b){_0x515d7b=_0x515d7b||0xc8;return function(_0xf46c99){if(_0xf46c99){return _0x5beb5f[_0x1cfa('0x2a')](_0x515d7b)[_0x1cfa('0x2b')](_0xf46c99);}};}function respondWithFilteredResult(_0x5e0b2e,_0x234694){return function(_0x3a3774){if(_0x3a3774){var _0x1200f3=typeof _0x234694[_0x1cfa('0x2c')]===_0x1cfa('0x2d')&&typeof _0x234694['limit']===_0x1cfa('0x2d');var _0x4815ec=_0x3a3774[_0x1cfa('0x2e')];var _0x3b72dd=_0x1200f3?0x0:_0x234694[_0x1cfa('0x2c')];var _0x7336ea=_0x1200f3?_0x3a3774['count']:_0x234694[_0x1cfa('0x2c')]+_0x234694['limit'];var _0x26ed27;if(_0x7336ea>=_0x4815ec){_0x7336ea=_0x4815ec;_0x26ed27=0xc8;}else{_0x26ed27=0xce;}_0x5e0b2e[_0x1cfa('0x2a')](_0x26ed27);return _0x5e0b2e[_0x1cfa('0x2f')](_0x1cfa('0x30'),_0x3b72dd+'-'+_0x7336ea+'/'+_0x4815ec)[_0x1cfa('0x2b')](_0x3a3774);}return null;};}function patchUpdates(_0xbe63f7){return function(_0x5d736c){try{jsonpatch[_0x1cfa('0x31')](_0x5d736c,_0xbe63f7,!![]);}catch(_0x14ad94){return BPromise[_0x1cfa('0x32')](_0x14ad94);}return _0x5d736c[_0x1cfa('0x33')]();};}function saveUpdates(_0x43a187,_0x4c05d2){return function(_0x489055){if(_0x489055){return _0x489055[_0x1cfa('0x34')](_0x43a187)['then'](function(_0x4f706f){return _0x4f706f;});}return null;};}function removeEntity(_0x1abfec,_0x570191){return function(_0x400bd4){if(_0x400bd4){return _0x400bd4[_0x1cfa('0x35')]()[_0x1cfa('0x36')](function(){var _0x3448b7=_0x400bd4[_0x1cfa('0x37')]({'plain':!![]});var _0x45c4e1=_0x1cfa('0x38');return db[_0x1cfa('0x39')][_0x1cfa('0x35')]({'where':{'type':_0x45c4e1,'resourceId':_0x3448b7['id']}})[_0x1cfa('0x36')](function(){return _0x400bd4;});})[_0x1cfa('0x36')](function(){_0x1abfec['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ed6e4,_0x11613c){return function(_0x1f8088){if(!_0x1f8088){_0x1ed6e4['sendStatus'](0x194);}return _0x1f8088;};}function handleError(_0x362625,_0x922f1a){_0x922f1a=_0x922f1a||0x1f4;return function(_0xdc0eb3){logger[_0x1cfa('0x25')](_0xdc0eb3[_0x1cfa('0x3a')]);if(_0xdc0eb3[_0x1cfa('0x3b')]){delete _0xdc0eb3[_0x1cfa('0x3b')];}_0x362625[_0x1cfa('0x2a')](_0x922f1a)[_0x1cfa('0x3c')](_0xdc0eb3);};}exports[_0x1cfa('0x3d')]=function(_0x4a561e,_0x2c4d7d){var _0x4e969f={},_0x2f69cf={},_0x19ea01={'count':0x0,'rows':[]};var _0x53d22c=_['map'](db[_0x1cfa('0x3e')][_0x1cfa('0x3f')],function(_0x73a57d){return{'name':_0x73a57d[_0x1cfa('0x40')],'type':_0x73a57d['type'][_0x1cfa('0x41')]};});_0x2f69cf[_0x1cfa('0x42')]=_['map'](_0x53d22c,_0x1cfa('0x3b'));_0x2f69cf[_0x1cfa('0x43')]=_[_0x1cfa('0x44')](_0x4a561e[_0x1cfa('0x43')]);_0x2f69cf[_0x1cfa('0x45')]=_[_0x1cfa('0x46')](_0x2f69cf[_0x1cfa('0x42')],_0x2f69cf[_0x1cfa('0x43')]);_0x4e969f[_0x1cfa('0x47')]=_[_0x1cfa('0x46')](_0x2f69cf[_0x1cfa('0x42')],qs['fields'](_0x4a561e[_0x1cfa('0x43')][_0x1cfa('0x48')]));_0x4e969f[_0x1cfa('0x47')]=_0x4e969f[_0x1cfa('0x47')][_0x1cfa('0x49')]?_0x4e969f[_0x1cfa('0x47')]:_0x2f69cf[_0x1cfa('0x42')];if(!_0x4a561e[_0x1cfa('0x43')][_0x1cfa('0x4a')](_0x1cfa('0x4b'))){_0x4e969f[_0x1cfa('0x4c')]=qs[_0x1cfa('0x4c')](_0x4a561e['query'][_0x1cfa('0x4c')]);_0x4e969f[_0x1cfa('0x2c')]=qs[_0x1cfa('0x2c')](_0x4a561e[_0x1cfa('0x43')][_0x1cfa('0x2c')]);}_0x4e969f['order']=qs[_0x1cfa('0x4d')](_0x4a561e[_0x1cfa('0x43')][_0x1cfa('0x4d')]);_0x4e969f[_0x1cfa('0x4e')]=qs[_0x1cfa('0x45')](_['pick'](_0x4a561e[_0x1cfa('0x43')],_0x2f69cf['filters']),_0x53d22c);if(_0x4a561e[_0x1cfa('0x43')][_0x1cfa('0x4f')]){_0x4e969f['where']=_[_0x1cfa('0x50')](_0x4e969f[_0x1cfa('0x4e')],{'$or':_[_0x1cfa('0x51')](_0x53d22c,function(_0x298d5b){if(_0x298d5b[_0x1cfa('0x52')]!==_0x1cfa('0x53')){var _0x3d10cb={};_0x3d10cb[_0x298d5b[_0x1cfa('0x3b')]]={'$like':'%'+_0x4a561e[_0x1cfa('0x43')][_0x1cfa('0x4f')]+'%'};return _0x3d10cb;}})});}_0x4e969f=_[_0x1cfa('0x50')]({},_0x4e969f,_0x4a561e['options']);var _0x270426={'where':_0x4e969f[_0x1cfa('0x4e')]};return db['ChatQueue'][_0x1cfa('0x2e')](_0x270426)[_0x1cfa('0x36')](function(_0x18225f){_0x19ea01[_0x1cfa('0x2e')]=_0x18225f;if(_0x4a561e['query'][_0x1cfa('0x54')]){_0x4e969f[_0x1cfa('0x55')]=[{'all':!![]}];}return db[_0x1cfa('0x3e')][_0x1cfa('0x56')](_0x4e969f);})['then'](function(_0xfd7f97){_0x19ea01[_0x1cfa('0x57')]=_0xfd7f97;return _0x19ea01;})[_0x1cfa('0x36')](respondWithFilteredResult(_0x2c4d7d,_0x4e969f))[_0x1cfa('0x28')](handleError(_0x2c4d7d,null));};exports[_0x1cfa('0x58')]=function(_0x320bb2,_0x3d4fae){var _0x36d070={'raw':!![],'where':{'id':_0x320bb2['params']['id']}},_0x45d355={};_0x45d355[_0x1cfa('0x42')]=_[_0x1cfa('0x44')](db[_0x1cfa('0x3e')][_0x1cfa('0x3f')]);_0x45d355['query']=_[_0x1cfa('0x44')](_0x320bb2['query']);_0x45d355['filters']=_['intersection'](_0x45d355[_0x1cfa('0x42')],_0x45d355[_0x1cfa('0x43')]);_0x36d070['attributes']=_[_0x1cfa('0x46')](_0x45d355['model'],qs[_0x1cfa('0x48')](_0x320bb2['query'][_0x1cfa('0x48')]));_0x36d070[_0x1cfa('0x47')]=_0x36d070['attributes']['length']?_0x36d070['attributes']:_0x45d355[_0x1cfa('0x42')];if(_0x320bb2[_0x1cfa('0x43')][_0x1cfa('0x54')]){_0x36d070[_0x1cfa('0x55')]=[{'all':!![]}];}_0x36d070=_[_0x1cfa('0x50')]({},_0x36d070,_0x320bb2['options']);return db[_0x1cfa('0x3e')]['find'](_0x36d070)[_0x1cfa('0x36')](handleEntityNotFound(_0x3d4fae,null))['then'](respondWithResult(_0x3d4fae,null))[_0x1cfa('0x28')](handleError(_0x3d4fae,null));};exports[_0x1cfa('0x59')]=function(_0x2cd25b,_0xdad9a6){return db[_0x1cfa('0x3e')][_0x1cfa('0x59')](_0x2cd25b[_0x1cfa('0x5a')],{})['then'](function(_0x192b46){var _0x3372a2=_0x2cd25b['user'][_0x1cfa('0x37')]({'plain':!![]});if(!_0x3372a2)throw new Error(_0x1cfa('0x5b'));if(_0x3372a2[_0x1cfa('0x5c')]===_0x1cfa('0x5d')){var _0x309070=_0x192b46[_0x1cfa('0x37')]({'plain':!![]});var _0x2b9334=_0x1cfa('0x38');return db[_0x1cfa('0x5e')][_0x1cfa('0x5f')]({'where':{'name':_0x2b9334,'userProfileId':_0x3372a2[_0x1cfa('0x60')]},'raw':!![]})['then'](function(_0xd363ee){if(_0xd363ee&&_0xd363ee[_0x1cfa('0x61')]===0x0){return db[_0x1cfa('0x39')][_0x1cfa('0x59')]({'name':_0x309070['name'],'resourceId':_0x309070['id'],'type':_0xd363ee[_0x1cfa('0x3b')],'sectionId':_0xd363ee['id']},{})[_0x1cfa('0x36')](function(){return _0x192b46;});}else{return _0x192b46;}})[_0x1cfa('0x28')](function(_0x3c1714){logger[_0x1cfa('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3c1714);throw _0x3c1714;});}return _0x192b46;})[_0x1cfa('0x36')](respondWithResult(_0xdad9a6,0xc9))[_0x1cfa('0x28')](handleError(_0xdad9a6,null));};exports['update']=function(_0x2a6986,_0x319c5b){if(_0x2a6986['body']['id']){delete _0x2a6986['body']['id'];}return db[_0x1cfa('0x3e')][_0x1cfa('0x5f')]({'where':{'id':_0x2a6986[_0x1cfa('0x62')]['id']}})[_0x1cfa('0x36')](handleEntityNotFound(_0x319c5b,null))[_0x1cfa('0x36')](saveUpdates(_0x2a6986[_0x1cfa('0x5a')],null))['then'](respondWithResult(_0x319c5b,null))['catch'](handleError(_0x319c5b,null));};exports[_0x1cfa('0x35')]=function(_0x13a207,_0x451741){return db[_0x1cfa('0x3e')][_0x1cfa('0x5f')]({'where':{'id':_0x13a207['params']['id']}})[_0x1cfa('0x36')](handleEntityNotFound(_0x451741,null))['then'](removeEntity(_0x451741,null))[_0x1cfa('0x28')](handleError(_0x451741,null));};exports['describe']=function(_0x333bec,_0x4c5bd6){return db[_0x1cfa('0x3e')]['describe']()['then'](respondWithResult(_0x4c5bd6,null))['catch'](handleError(_0x4c5bd6,null));};exports[_0x1cfa('0x63')]=function(_0x24da74,_0x14974b,_0x4501ce){var _0x440612={'raw':!![],'where':{}},_0x595833={},_0x14a34c;return db[_0x1cfa('0x3e')][_0x1cfa('0x64')]({'where':{'id':_0x24da74[_0x1cfa('0x62')]['id']}})[_0x1cfa('0x36')](handleEntityNotFound(_0x14974b,null))[_0x1cfa('0x36')](function(_0x5cedb1){if(_0x5cedb1){_0x14a34c=_0x5cedb1['get']({'plain':!![]});_0x595833['model']=_['keys'](db[_0x1cfa('0x65')][_0x1cfa('0x3f')]);_0x595833[_0x1cfa('0x43')]=_[_0x1cfa('0x44')](_0x24da74[_0x1cfa('0x43')]);_0x595833[_0x1cfa('0x45')]=_[_0x1cfa('0x46')](_0x595833['model'],_0x595833['query']);_0x440612[_0x1cfa('0x47')]=_['intersection'](_0x595833[_0x1cfa('0x42')],qs[_0x1cfa('0x48')](_0x24da74[_0x1cfa('0x43')][_0x1cfa('0x48')]));_0x440612[_0x1cfa('0x47')]=_0x440612[_0x1cfa('0x47')][_0x1cfa('0x49')]?_0x440612[_0x1cfa('0x47')]:_0x595833['model'];if(!_0x24da74[_0x1cfa('0x43')][_0x1cfa('0x4a')]('nolimit')){_0x440612[_0x1cfa('0x4c')]=qs[_0x1cfa('0x4c')](_0x24da74[_0x1cfa('0x43')][_0x1cfa('0x4c')]);_0x440612[_0x1cfa('0x2c')]=qs[_0x1cfa('0x2c')](_0x24da74[_0x1cfa('0x43')]['offset']);}_0x440612[_0x1cfa('0x66')]=qs['sort'](_0x24da74['query']['sort']);_0x440612[_0x1cfa('0x4e')]=qs[_0x1cfa('0x45')](_[_0x1cfa('0x67')](_0x24da74[_0x1cfa('0x43')],_0x595833[_0x1cfa('0x45')]));_0x440612['where'][_0x1cfa('0x68')]=_0x5cedb1['id'];if(_0x24da74['query']['filter']){_0x440612[_0x1cfa('0x4e')]=_[_0x1cfa('0x50')](_0x440612[_0x1cfa('0x4e')],{'$or':_[_0x1cfa('0x51')](_0x440612['attributes'],function(_0x3d198e){var _0x41db07={};_0x41db07[_0x3d198e]={'$like':'%'+_0x24da74[_0x1cfa('0x43')][_0x1cfa('0x4f')]+'%'};return _0x41db07;})});}_0x440612=_[_0x1cfa('0x50')]({},_0x440612,_0x24da74[_0x1cfa('0x69')]);return db[_0x1cfa('0x65')]['findAll'](_0x440612);}})['then'](function(_0xe22161){if(_0xe22161){return db[_0x1cfa('0x6a')]['findAndCountAll']({'where':{'id':_[_0x1cfa('0x51')](_0xe22161,_0x1cfa('0x6b')),'role':'agent'},'attributes':['id',_0x1cfa('0x3b'),_0x1cfa('0x6c'),_0x1cfa('0x6d'),_0x1cfa('0x6e')]});}})['then'](function(_0x20c6a6){if(_0x20c6a6){return{'count':_0x20c6a6[_0x1cfa('0x2e')],'rows':_['map'](_0x20c6a6[_0x1cfa('0x57')],function(_0x1ee53e){return{'membername':_0x1ee53e['name'],'UserId':_0x1ee53e['id'],'queue_name':_0x14a34c[_0x1cfa('0x3b')],'ChatQueueId':_0x14a34c['id'],'interface':util[_0x1cfa('0x6f')](_0x1cfa('0x70'),_0x1cfa('0x71'),_0x1ee53e[_0x1cfa('0x3b')]),'penalty':0x0,'paused':_0x1ee53e[_0x1cfa('0x6c')],'createdAt':_0x1ee53e[_0x1cfa('0x6e')],'updatedAt':_0x1ee53e[_0x1cfa('0x6d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x1cfa('0x36')](respondWithFilteredResult(_0x14974b,_0x440612))['catch'](handleError(_0x14974b,null));};exports['getTeams']=function(_0x1a3c34,_0x3dbca2,_0x356e11){var _0x57f652={};var _0x50bf01={};var _0x542d3b;var _0x3bad02;return db[_0x1cfa('0x3e')][_0x1cfa('0x64')]({'where':{'id':_0x1a3c34[_0x1cfa('0x62')]['id']}})[_0x1cfa('0x36')](handleEntityNotFound(_0x3dbca2,null))[_0x1cfa('0x36')](function(_0x12c77c){if(_0x12c77c){_0x542d3b=_0x12c77c;_0x50bf01[_0x1cfa('0x42')]=_[_0x1cfa('0x44')](db['Team'][_0x1cfa('0x3f')]);_0x50bf01[_0x1cfa('0x43')]=_[_0x1cfa('0x44')](_0x1a3c34[_0x1cfa('0x43')]);_0x50bf01[_0x1cfa('0x45')]=_[_0x1cfa('0x46')](_0x50bf01[_0x1cfa('0x42')],_0x50bf01[_0x1cfa('0x43')]);_0x57f652[_0x1cfa('0x47')]=_[_0x1cfa('0x46')](_0x50bf01[_0x1cfa('0x42')],qs[_0x1cfa('0x48')](_0x1a3c34['query'][_0x1cfa('0x48')]));_0x57f652[_0x1cfa('0x47')]=_0x57f652[_0x1cfa('0x47')][_0x1cfa('0x49')]?_0x57f652['attributes']:_0x50bf01[_0x1cfa('0x42')];_0x57f652[_0x1cfa('0x66')]=qs['sort'](_0x1a3c34[_0x1cfa('0x43')][_0x1cfa('0x4d')]);_0x57f652['where']=qs[_0x1cfa('0x45')](_[_0x1cfa('0x67')](_0x1a3c34[_0x1cfa('0x43')],_0x50bf01[_0x1cfa('0x45')]));if(_0x1a3c34[_0x1cfa('0x43')][_0x1cfa('0x4f')]){_0x57f652[_0x1cfa('0x4e')]=_['merge'](_0x57f652[_0x1cfa('0x4e')],{'$or':_[_0x1cfa('0x51')](_0x57f652[_0x1cfa('0x47')],function(_0x4f4d11){var _0x449ff7={};_0x449ff7[_0x4f4d11]={'$like':'%'+_0x1a3c34[_0x1cfa('0x43')][_0x1cfa('0x4f')]+'%'};return _0x449ff7;})});}_0x57f652=_[_0x1cfa('0x50')]({},_0x57f652,_0x1a3c34[_0x1cfa('0x69')]);return _0x542d3b[_0x1cfa('0x72')](_0x57f652);}})[_0x1cfa('0x36')](function(_0x4e9687){if(_0x4e9687){_0x3bad02=_0x4e9687['length'];if(!_0x1a3c34[_0x1cfa('0x43')][_0x1cfa('0x4a')](_0x1cfa('0x4b'))){_0x57f652['limit']=qs['limit'](_0x1a3c34[_0x1cfa('0x43')]['limit']);_0x57f652[_0x1cfa('0x2c')]=qs[_0x1cfa('0x2c')](_0x1a3c34[_0x1cfa('0x43')][_0x1cfa('0x2c')]);}return _0x542d3b[_0x1cfa('0x72')](_0x57f652);}})[_0x1cfa('0x36')](function(_0x19a935){if(_0x19a935){return _0x19a935?{'count':_0x3bad02,'rows':_0x19a935}:null;}})[_0x1cfa('0x36')](respondWithResult(_0x3dbca2,null))[_0x1cfa('0x28')](handleError(_0x3dbca2,null));};exports[_0x1cfa('0x73')]=function(_0x4a3ec8,_0x579359,_0x375e57){var _0x46fca6=_0x4a3ec8['body']['ids'];return db[_0x1cfa('0x74')][_0x1cfa('0x56')]({'where':{'id':_0x46fca6},'attributes':['id'],'include':[{'model':db[_0x1cfa('0x6a')],'as':_0x1cfa('0x75'),'attributes':['id',_0x1cfa('0x3b'),_0x1cfa('0x76'),_0x1cfa('0x77'),'interface'],'raw':!![]}]})[_0x1cfa('0x36')](function(_0x5a6689){if(_0x5a6689){var _0x56fc75=_[_0x1cfa('0x78')](_0x5a6689,function(_0x19d339){var _0x4a2a50=_0x19d339[_0x1cfa('0x37')]({'plain':!![]});return _0x4a2a50[_0x1cfa('0x75')];});return db[_0x1cfa('0x3e')][_0x1cfa('0x5f')]({'where':{'id':_0x4a3ec8['params']['id']}})[_0x1cfa('0x36')](function(_0x3e3e8d){return db[_0x1cfa('0x79')][_0x1cfa('0x7a')](function(_0x104a97){return _0x3e3e8d[_0x1cfa('0x73')](_0x46fca6,{'transaction':_0x104a97})[_0x1cfa('0x36')](function(){return BPromise['each'](_0x56fc75,function(_0x1a1179){return db[_0x1cfa('0x65')][_0x1cfa('0x7b')]({'where':{'UserId':_0x1a1179['id'],'ChatQueueId':_0x4a3ec8[_0x1cfa('0x62')]['id']},'transaction':_0x104a97});});})['then'](function(){_0x56fc75[_0x1cfa('0x7c')](function(_0x5b32c2){socket[_0x1cfa('0x7d')](_0x1cfa('0x7e'),{'UserId':_0x5b32c2['id'],'ChatQueueId':_0x3e3e8d['id']});});});});});}})[_0x1cfa('0x36')](respondWithStatusCode(_0x579359,null))['catch'](handleError(_0x579359,null));};exports[_0x1cfa('0x7f')]=function(_0x13c84e,_0x19adf9,_0x30a18e){return db[_0x1cfa('0x74')][_0x1cfa('0x56')]({'where':{'id':_0x13c84e[_0x1cfa('0x43')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x1cfa('0x75'),'attributes':['id'],'raw':!![]}]})[_0x1cfa('0x36')](handleEntityNotFound(_0x19adf9,null))[_0x1cfa('0x36')](function(_0x2dbf4c){var _0x36f43e=_[_0x1cfa('0x51')](_0x2dbf4c,'id');var _0x112237=[];var _0x1d8d58=[];var _0x10efff=squel[_0x1cfa('0x80')]();_0x10efff[_0x1cfa('0x81')]('tq.TeamId')[_0x1cfa('0x82')](_0x1cfa('0x83'),'tq')[_0x1cfa('0x84')](_0x1cfa('0x85'),'ut',_0x1cfa('0x86'))[_0x1cfa('0x4e')](_0x1cfa('0x87'),_0x13c84e[_0x1cfa('0x62')]['id']);for(var _0x479379=0x0;_0x479379<_0x2dbf4c[_0x1cfa('0x49')];_0x479379+=0x1){let _0x2560f2=_0x2dbf4c[_0x479379];for(var _0x15e841=0x0;_0x15e841<_0x2560f2['Agents']['length'];_0x15e841+=0x1){let _0x3d748f=_0x2560f2[_0x1cfa('0x75')][_0x15e841];var _0x50ea78=_0x10efff['clone']();_0x50ea78[_0x1cfa('0x4e')](_0x1cfa('0x88'),_0x3d748f['id']);_0x1d8d58[_0x1cfa('0x89')](db[_0x1cfa('0x79')]['query'](_0x50ea78[_0x1cfa('0x8a')](),{'type':db[_0x1cfa('0x79')][_0x1cfa('0x8b')][_0x1cfa('0x8c')]})['then'](function(_0x24c31f){if(_0x24c31f[_0x1cfa('0x49')]===0x1){return _0x3d748f['id'];}else{var _0x480a92=_[_0x1cfa('0x8d')](_[_0x1cfa('0x51')](_0x24c31f,_0x1cfa('0x8e')),function(_0x1348d0){return _['includes'](_0x36f43e,_0x1348d0);});if(_0x480a92){return _0x3d748f['id'];}}}));}}return BPromise[_0x1cfa('0x8f')](_0x1d8d58)['then'](function(_0x5bf695){_0x112237=_(_0x112237)['union'](_0x5bf695)[_0x1cfa('0x90')]()['value']();return db['ChatQueue'][_0x1cfa('0x5f')]({'where':{'id':_0x13c84e[_0x1cfa('0x62')]['id']}})[_0x1cfa('0x36')](function(_0x4b2f1d){return db[_0x1cfa('0x79')][_0x1cfa('0x7a')](function(_0x1b201d){return _0x4b2f1d[_0x1cfa('0x7f')](_0x13c84e[_0x1cfa('0x43')][_0x1cfa('0x91')],{'transaction':_0x1b201d})[_0x1cfa('0x36')](function(){if(!_[_0x1cfa('0x92')](_0x112237)){return _0x4b2f1d[_0x1cfa('0x93')](_0x112237,{'transaction':_0x1b201d});}})[_0x1cfa('0x36')](function(){_0x112237[_0x1cfa('0x7c')](function(_0x18aa4c){socket[_0x1cfa('0x7d')](_0x1cfa('0x94'),{'UserId':_0x18aa4c,'ChatQueueId':_0x4b2f1d['id']});});});});});});})['then'](respondWithStatusCode(_0x19adf9,null))[_0x1cfa('0x28')](handleError(_0x19adf9,null));};exports[_0x1cfa('0x95')]=function(_0x5de349,_0x1bc391,_0x4fe758){return db[_0x1cfa('0x3e')][_0x1cfa('0x5f')]({'where':{'id':_0x5de349[_0x1cfa('0x62')]['id']}})[_0x1cfa('0x36')](handleEntityNotFound(_0x1bc391,null))[_0x1cfa('0x36')](function(_0x2ee0fe){if(_0x2ee0fe){return _0x2ee0fe[_0x1cfa('0x95')](_0x5de349[_0x1cfa('0x5a')][_0x1cfa('0x91')],_[_0x1cfa('0x96')](_0x5de349[_0x1cfa('0x5a')],[_0x1cfa('0x91'),'id'])||{})['spread'](function(_0x466874){for(var _0x44d098=0x0;_0x44d098<_0x5de349[_0x1cfa('0x5a')][_0x1cfa('0x91')][_0x1cfa('0x49')];_0x44d098+=0x1){socket['emit'](_0x1cfa('0x7e'),{'UserId':Number(_0x5de349['body'][_0x1cfa('0x91')][_0x44d098]),'ChatQueueId':Number(_0x5de349[_0x1cfa('0x62')]['id'])});}return _0x466874;});}})['then'](respondWithResult(_0x1bc391,null))[_0x1cfa('0x28')](handleError(_0x1bc391,null));};exports[_0x1cfa('0x93')]=function(_0x336d7a,_0x31f96e,_0x4761d5){return db['ChatQueue'][_0x1cfa('0x5f')]({'where':{'id':_0x336d7a[_0x1cfa('0x62')]['id']}})['then'](handleEntityNotFound(_0x31f96e,null))[_0x1cfa('0x36')](function(_0x138f13){if(_0x138f13){return _0x138f13[_0x1cfa('0x93')](_0x336d7a[_0x1cfa('0x43')][_0x1cfa('0x91')])[_0x1cfa('0x36')](function(){if(_[_0x1cfa('0x97')](_0x336d7a[_0x1cfa('0x43')][_0x1cfa('0x91')])){for(var _0x339278=0x0;_0x339278<_0x336d7a['query'][_0x1cfa('0x91')]['length'];_0x339278+=0x1){socket['emit'](_0x1cfa('0x94'),{'UserId':Number(_0x336d7a[_0x1cfa('0x43')][_0x1cfa('0x91')][_0x339278]),'ChatQueueId':Number(_0x336d7a[_0x1cfa('0x62')]['id'])});}}else{socket['emit']('userChatQueue:remove',{'UserId':Number(_0x336d7a['query']['ids']),'ChatQueueId':Number(_0x336d7a[_0x1cfa('0x62')]['id'])});}});}})[_0x1cfa('0x36')](respondWithStatusCode(_0x31f96e,null))[_0x1cfa('0x28')](handleError(_0x31f96e,null));};exports[_0x1cfa('0x98')]=function(_0x22ae84,_0x4b2590,_0xd5ffdc){var _0x47acc3={};var _0x2bdafe={};var _0x47670c;var _0x2c8c5f;return db['ChatQueue'][_0x1cfa('0x64')]({'where':{'id':_0x22ae84['params']['id']}})[_0x1cfa('0x36')](handleEntityNotFound(_0x4b2590,null))[_0x1cfa('0x36')](function(_0x2397f3){if(_0x2397f3){_0x47670c=_0x2397f3;_0x2bdafe[_0x1cfa('0x42')]=_[_0x1cfa('0x44')](db[_0x1cfa('0x6a')]['rawAttributes']);_0x2bdafe['query']=_[_0x1cfa('0x44')](_0x22ae84[_0x1cfa('0x43')]);_0x2bdafe['filters']=_[_0x1cfa('0x46')](_0x2bdafe[_0x1cfa('0x42')],_0x2bdafe[_0x1cfa('0x43')]);_0x47acc3[_0x1cfa('0x47')]=_['intersection'](_0x2bdafe['model'],qs[_0x1cfa('0x48')](_0x22ae84[_0x1cfa('0x43')][_0x1cfa('0x48')]));_0x47acc3[_0x1cfa('0x47')]=_0x47acc3[_0x1cfa('0x47')][_0x1cfa('0x49')]?_0x47acc3[_0x1cfa('0x47')]:_0x2bdafe[_0x1cfa('0x42')];_0x47acc3[_0x1cfa('0x66')]=qs[_0x1cfa('0x4d')](_0x22ae84[_0x1cfa('0x43')][_0x1cfa('0x4d')]);_0x47acc3[_0x1cfa('0x4e')]=qs[_0x1cfa('0x45')](_[_0x1cfa('0x67')](_0x22ae84[_0x1cfa('0x43')],_0x2bdafe[_0x1cfa('0x45')]));if(_0x22ae84[_0x1cfa('0x43')][_0x1cfa('0x4f')]){_0x47acc3[_0x1cfa('0x4e')]=_[_0x1cfa('0x50')](_0x47acc3[_0x1cfa('0x4e')],{'$or':_[_0x1cfa('0x51')](_0x47acc3[_0x1cfa('0x47')],function(_0x25bca6){var _0x477ec2={};_0x477ec2[_0x25bca6]={'$like':'%'+_0x22ae84[_0x1cfa('0x43')]['filter']+'%'};return _0x477ec2;})});}_0x47acc3=_[_0x1cfa('0x50')]({},_0x47acc3,_0x22ae84[_0x1cfa('0x69')]);return _0x47670c['getAgents'](_0x47acc3);}})[_0x1cfa('0x36')](function(_0x272790){if(_0x272790){_0x2c8c5f=_0x272790[_0x1cfa('0x49')];if(!_0x22ae84[_0x1cfa('0x43')][_0x1cfa('0x4a')](_0x1cfa('0x4b'))){_0x47acc3['limit']=qs[_0x1cfa('0x4c')](_0x22ae84['query'][_0x1cfa('0x4c')]);_0x47acc3['offset']=qs[_0x1cfa('0x2c')](_0x22ae84[_0x1cfa('0x43')][_0x1cfa('0x2c')]);}return _0x47670c[_0x1cfa('0x98')](_0x47acc3);}})[_0x1cfa('0x36')](function(_0x40b7d0){if(_0x40b7d0){return _0x40b7d0?{'count':_0x2c8c5f,'rows':_0x40b7d0}:null;}})[_0x1cfa('0x36')](respondWithResult(_0x4b2590,null))[_0x1cfa('0x28')](handleError(_0x4b2590,null));};
\ No newline at end of file
+var _0x7ffd=['sendStatus','stack','name','send','map','ChatQueue','type','key','model','query','keys','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','rawAttributes','intersection','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','params','getMembers','findOne','order','pick','ChatQueueId','findAndCountAll','agent','chatPause','updatedAt','format','%s/%s','SIP','createdAt','getTeams','Team','addTeams','ids','User','Agents','interface','flatMap','transaction','UserChatQueue','forEach','emit','removeTeams','select','field','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','TeamId','includes','all','union','value','isEmpty','removeAgents','userChatQueue:remove','addAgents','spread','getAgents','eml-format','rimraf','request-promise','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./chatQueue.socket','register','request','then','info','debug','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatQueue,\x20%s,\x20%s','message','catch','status','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','destroy','get','ChatQueues','UserProfileResource','end'];(function(_0x2b4b4c,_0x53a5ed){var _0x5f55df=function(_0x4bb440){while(--_0x4bb440){_0x2b4b4c['push'](_0x2b4b4c['shift']());}};_0x5f55df(++_0x53a5ed);}(_0x7ffd,0xe8));var _0xd7ff=function(_0x26b622,_0x237e9e){_0x26b622=_0x26b622-0x0;var _0x58a028=_0x7ffd[_0x26b622];return _0x58a028;};'use strict';var emlformat=require(_0xd7ff('0x0'));var rimraf=require(_0xd7ff('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd7ff('0x2'));var moment=require('moment');var BPromise=require(_0xd7ff('0x3'));var Mustache=require(_0xd7ff('0x4'));var util=require('util');var path=require(_0xd7ff('0x5'));var sox=require(_0xd7ff('0x6'));var csv=require(_0xd7ff('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd7ff('0x8'));var squel=require(_0xd7ff('0x9'));var crypto=require(_0xd7ff('0xa'));var jsforce=require(_0xd7ff('0xb'));var deskjs=require(_0xd7ff('0xc'));var toCsv=require(_0xd7ff('0x7'));var querystring=require(_0xd7ff('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xd7ff('0xe'));var qs=require(_0xd7ff('0xf'));var as=require(_0xd7ff('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd7ff('0x11'));var utils=require(_0xd7ff('0x12'));var config=require(_0xd7ff('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xd7ff('0x14'))['db'];config[_0xd7ff('0x15')]=_[_0xd7ff('0x16')](config[_0xd7ff('0x15')],{'host':'localhost','port':0x18eb});var socket=require(_0xd7ff('0x17'))(new Redis(config[_0xd7ff('0x15')]));require(_0xd7ff('0x18'))[_0xd7ff('0x19')](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3dfb06,_0x56afff,_0x4ef968,_0x506d24){return new BPromise(function(_0x27f582,_0x52a16a){var _0x4df2cb=_0x506d24||client;return _0x4df2cb[_0xd7ff('0x1a')](_0x3dfb06,_0x4ef968)[_0xd7ff('0x1b')](function(_0x2a2722){logger[_0xd7ff('0x1c')]('ChatQueue,\x20%s,\x20%s',_0x56afff,'request\x20sent');logger[_0xd7ff('0x1d')](_0xd7ff('0x1e'),_0x56afff,_0xd7ff('0x1f'),JSON[_0xd7ff('0x20')](_0x2a2722));if(_0x2a2722[_0xd7ff('0x21')]){if(_0x2a2722[_0xd7ff('0x21')][_0xd7ff('0x22')]===0x1f4){logger[_0xd7ff('0x21')](_0xd7ff('0x23'),_0x56afff,_0x2a2722[_0xd7ff('0x21')][_0xd7ff('0x24')]);return _0x52a16a(_0x2a2722[_0xd7ff('0x21')][_0xd7ff('0x24')]);}logger[_0xd7ff('0x21')](_0xd7ff('0x23'),_0x56afff,_0x2a2722[_0xd7ff('0x21')]['message']);return _0x27f582(_0x2a2722[_0xd7ff('0x21')][_0xd7ff('0x24')]);}else{logger[_0xd7ff('0x1c')](_0xd7ff('0x23'),_0x56afff,_0xd7ff('0x1f'));_0x27f582(_0x2a2722['result'][_0xd7ff('0x24')]);}})[_0xd7ff('0x25')](function(_0x1ecdc9){logger[_0xd7ff('0x21')](_0xd7ff('0x23'),_0x56afff,_0x1ecdc9);_0x52a16a(_0x1ecdc9);});});}function respondWithStatusCode(_0x3f687f,_0x19d1fa){_0x19d1fa=_0x19d1fa||0xcc;return function(_0x2aac13){if(_0x2aac13){return _0x3f687f['sendStatus'](_0x19d1fa);}return _0x3f687f[_0xd7ff('0x26')](_0x19d1fa)['end']();};}function respondWithResult(_0x31c4d6,_0x21bbe6){_0x21bbe6=_0x21bbe6||0xc8;return function(_0x3dffde){if(_0x3dffde){return _0x31c4d6[_0xd7ff('0x26')](_0x21bbe6)[_0xd7ff('0x27')](_0x3dffde);}};}function respondWithFilteredResult(_0x24684d,_0x2a905b){return function(_0x5396f8){if(_0x5396f8){var _0x1e4bfe=typeof _0x2a905b['offset']===_0xd7ff('0x28')&&typeof _0x2a905b['limit']==='undefined';var _0x446058=_0x5396f8[_0xd7ff('0x29')];var _0x589d99=_0x1e4bfe?0x0:_0x2a905b['offset'];var _0x240da2=_0x1e4bfe?_0x5396f8[_0xd7ff('0x29')]:_0x2a905b[_0xd7ff('0x2a')]+_0x2a905b[_0xd7ff('0x2b')];var _0x44f9ee;if(_0x240da2>=_0x446058){_0x240da2=_0x446058;_0x44f9ee=0xc8;}else{_0x44f9ee=0xce;}_0x24684d[_0xd7ff('0x26')](_0x44f9ee);return _0x24684d[_0xd7ff('0x2c')](_0xd7ff('0x2d'),_0x589d99+'-'+_0x240da2+'/'+_0x446058)[_0xd7ff('0x27')](_0x5396f8);}return null;};}function patchUpdates(_0x151134){return function(_0x14e4a0){try{jsonpatch[_0xd7ff('0x2e')](_0x14e4a0,_0x151134,!![]);}catch(_0x2be27a){return BPromise['reject'](_0x2be27a);}return _0x14e4a0[_0xd7ff('0x2f')]();};}function saveUpdates(_0x570b5a,_0x4f1cb9){return function(_0x4c6f1d){if(_0x4c6f1d){return _0x4c6f1d[_0xd7ff('0x30')](_0x570b5a)['then'](function(_0x2a297e){return _0x2a297e;});}return null;};}function removeEntity(_0x3f1388,_0x15e88f){return function(_0x42fae8){if(_0x42fae8){return _0x42fae8[_0xd7ff('0x31')]()[_0xd7ff('0x1b')](function(){var _0x5b130f=_0x42fae8[_0xd7ff('0x32')]({'plain':!![]});var _0x10985d=_0xd7ff('0x33');return db[_0xd7ff('0x34')][_0xd7ff('0x31')]({'where':{'type':_0x10985d,'resourceId':_0x5b130f['id']}})[_0xd7ff('0x1b')](function(){return _0x42fae8;});})[_0xd7ff('0x1b')](function(){_0x3f1388['status'](0xcc)[_0xd7ff('0x35')]();});}};}function handleEntityNotFound(_0x81d78b,_0x445800){return function(_0x562fe7){if(!_0x562fe7){_0x81d78b[_0xd7ff('0x36')](0x194);}return _0x562fe7;};}function handleError(_0x3f8924,_0x51666c){_0x51666c=_0x51666c||0x1f4;return function(_0x1ff967){logger[_0xd7ff('0x21')](_0x1ff967[_0xd7ff('0x37')]);if(_0x1ff967[_0xd7ff('0x38')]){delete _0x1ff967[_0xd7ff('0x38')];}_0x3f8924[_0xd7ff('0x26')](_0x51666c)[_0xd7ff('0x39')](_0x1ff967);};}exports['index']=function(_0x50b1ab,_0x4556f0){var _0x1ea38a={},_0x57e8ca={},_0x44075e={'count':0x0,'rows':[]};var _0xdabe9b=_[_0xd7ff('0x3a')](db[_0xd7ff('0x3b')]['rawAttributes'],function(_0x5c85be){return{'name':_0x5c85be['fieldName'],'type':_0x5c85be[_0xd7ff('0x3c')][_0xd7ff('0x3d')]};});_0x57e8ca[_0xd7ff('0x3e')]=_[_0xd7ff('0x3a')](_0xdabe9b,'name');_0x57e8ca[_0xd7ff('0x3f')]=_[_0xd7ff('0x40')](_0x50b1ab[_0xd7ff('0x3f')]);_0x57e8ca['filters']=_['intersection'](_0x57e8ca[_0xd7ff('0x3e')],_0x57e8ca[_0xd7ff('0x3f')]);_0x1ea38a['attributes']=_['intersection'](_0x57e8ca[_0xd7ff('0x3e')],qs[_0xd7ff('0x41')](_0x50b1ab[_0xd7ff('0x3f')][_0xd7ff('0x41')]));_0x1ea38a[_0xd7ff('0x42')]=_0x1ea38a[_0xd7ff('0x42')][_0xd7ff('0x43')]?_0x1ea38a['attributes']:_0x57e8ca[_0xd7ff('0x3e')];if(!_0x50b1ab['query'][_0xd7ff('0x44')](_0xd7ff('0x45'))){_0x1ea38a[_0xd7ff('0x2b')]=qs['limit'](_0x50b1ab['query']['limit']);_0x1ea38a['offset']=qs[_0xd7ff('0x2a')](_0x50b1ab[_0xd7ff('0x3f')][_0xd7ff('0x2a')]);}_0x1ea38a['order']=qs[_0xd7ff('0x46')](_0x50b1ab[_0xd7ff('0x3f')][_0xd7ff('0x46')]);_0x1ea38a[_0xd7ff('0x47')]=qs[_0xd7ff('0x48')](_['pick'](_0x50b1ab[_0xd7ff('0x3f')],_0x57e8ca[_0xd7ff('0x48')]),_0xdabe9b);if(_0x50b1ab[_0xd7ff('0x3f')]['filter']){_0x1ea38a['where']=_[_0xd7ff('0x49')](_0x1ea38a[_0xd7ff('0x47')],{'$or':_[_0xd7ff('0x3a')](_0xdabe9b,function(_0x1af7ef){if(_0x1af7ef[_0xd7ff('0x3c')]!==_0xd7ff('0x4a')){var _0xec9d7d={};_0xec9d7d[_0x1af7ef[_0xd7ff('0x38')]]={'$like':'%'+_0x50b1ab['query'][_0xd7ff('0x4b')]+'%'};return _0xec9d7d;}})});}_0x1ea38a=_['merge']({},_0x1ea38a,_0x50b1ab[_0xd7ff('0x4c')]);var _0xf4e735={'where':_0x1ea38a[_0xd7ff('0x47')]};return db['ChatQueue'][_0xd7ff('0x29')](_0xf4e735)[_0xd7ff('0x1b')](function(_0x13894a){_0x44075e[_0xd7ff('0x29')]=_0x13894a;if(_0x50b1ab[_0xd7ff('0x3f')][_0xd7ff('0x4d')]){_0x1ea38a[_0xd7ff('0x4e')]=[{'all':!![]}];}return db['ChatQueue'][_0xd7ff('0x4f')](_0x1ea38a);})[_0xd7ff('0x1b')](function(_0x2f48cf){_0x44075e['rows']=_0x2f48cf;return _0x44075e;})[_0xd7ff('0x1b')](respondWithFilteredResult(_0x4556f0,_0x1ea38a))[_0xd7ff('0x25')](handleError(_0x4556f0,null));};exports[_0xd7ff('0x50')]=function(_0x555780,_0x13c9c8){var _0x1088af={'raw':!![],'where':{'id':_0x555780['params']['id']}},_0x3125e4={};_0x3125e4['model']=_['keys'](db[_0xd7ff('0x3b')][_0xd7ff('0x51')]);_0x3125e4['query']=_['keys'](_0x555780[_0xd7ff('0x3f')]);_0x3125e4['filters']=_[_0xd7ff('0x52')](_0x3125e4[_0xd7ff('0x3e')],_0x3125e4[_0xd7ff('0x3f')]);_0x1088af[_0xd7ff('0x42')]=_[_0xd7ff('0x52')](_0x3125e4['model'],qs[_0xd7ff('0x41')](_0x555780[_0xd7ff('0x3f')]['fields']));_0x1088af[_0xd7ff('0x42')]=_0x1088af[_0xd7ff('0x42')][_0xd7ff('0x43')]?_0x1088af[_0xd7ff('0x42')]:_0x3125e4[_0xd7ff('0x3e')];if(_0x555780[_0xd7ff('0x3f')]['includeAll']){_0x1088af[_0xd7ff('0x4e')]=[{'all':!![]}];}_0x1088af=_[_0xd7ff('0x49')]({},_0x1088af,_0x555780[_0xd7ff('0x4c')]);return db[_0xd7ff('0x3b')][_0xd7ff('0x53')](_0x1088af)['then'](handleEntityNotFound(_0x13c9c8,null))[_0xd7ff('0x1b')](respondWithResult(_0x13c9c8,null))[_0xd7ff('0x25')](handleError(_0x13c9c8,null));};exports[_0xd7ff('0x54')]=function(_0x533311,_0x2ea663){return db[_0xd7ff('0x3b')]['create'](_0x533311[_0xd7ff('0x55')],{})['then'](function(_0x3217ce){var _0x1ec390=_0x533311[_0xd7ff('0x56')][_0xd7ff('0x32')]({'plain':!![]});if(!_0x1ec390)throw new Error(_0xd7ff('0x57'));if(_0x1ec390['role']===_0xd7ff('0x56')){var _0x5ca663=_0x3217ce[_0xd7ff('0x32')]({'plain':!![]});var _0x4169d2=_0xd7ff('0x33');return db[_0xd7ff('0x58')][_0xd7ff('0x53')]({'where':{'name':_0x4169d2,'userProfileId':_0x1ec390[_0xd7ff('0x59')]},'raw':!![]})[_0xd7ff('0x1b')](function(_0x102da4){if(_0x102da4&&_0x102da4[_0xd7ff('0x5a')]===0x0){return db['UserProfileResource'][_0xd7ff('0x54')]({'name':_0x5ca663[_0xd7ff('0x38')],'resourceId':_0x5ca663['id'],'type':_0x102da4['name'],'sectionId':_0x102da4['id']},{})[_0xd7ff('0x1b')](function(){return _0x3217ce;});}else{return _0x3217ce;}})['catch'](function(_0x4615f7){logger[_0xd7ff('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4615f7);throw _0x4615f7;});}return _0x3217ce;})[_0xd7ff('0x1b')](respondWithResult(_0x2ea663,0xc9))[_0xd7ff('0x25')](handleError(_0x2ea663,null));};exports[_0xd7ff('0x30')]=function(_0x56c6c3,_0x5e3cbc){if(_0x56c6c3[_0xd7ff('0x55')]['id']){delete _0x56c6c3['body']['id'];}return db[_0xd7ff('0x3b')][_0xd7ff('0x53')]({'where':{'id':_0x56c6c3[_0xd7ff('0x5b')]['id']}})[_0xd7ff('0x1b')](handleEntityNotFound(_0x5e3cbc,null))[_0xd7ff('0x1b')](saveUpdates(_0x56c6c3[_0xd7ff('0x55')],null))['then'](respondWithResult(_0x5e3cbc,null))[_0xd7ff('0x25')](handleError(_0x5e3cbc,null));};exports[_0xd7ff('0x31')]=function(_0xc8bff1,_0x5acdd1){return db['ChatQueue'][_0xd7ff('0x53')]({'where':{'id':_0xc8bff1[_0xd7ff('0x5b')]['id']}})[_0xd7ff('0x1b')](handleEntityNotFound(_0x5acdd1,null))[_0xd7ff('0x1b')](removeEntity(_0x5acdd1,null))[_0xd7ff('0x25')](handleError(_0x5acdd1,null));};exports['describe']=function(_0x758040,_0x56ec11){return db[_0xd7ff('0x3b')]['describe']()[_0xd7ff('0x1b')](respondWithResult(_0x56ec11,null))[_0xd7ff('0x25')](handleError(_0x56ec11,null));};exports[_0xd7ff('0x5c')]=function(_0x5847e8,_0x5eefe2,_0x69734f){var _0x5c05e7={'raw':!![],'where':{}},_0x52c570={},_0x539dfc;return db[_0xd7ff('0x3b')][_0xd7ff('0x5d')]({'where':{'id':_0x5847e8[_0xd7ff('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5eefe2,null))['then'](function(_0x24ffbe){if(_0x24ffbe){_0x539dfc=_0x24ffbe['get']({'plain':!![]});_0x52c570[_0xd7ff('0x3e')]=_['keys'](db['UserChatQueue'][_0xd7ff('0x51')]);_0x52c570[_0xd7ff('0x3f')]=_[_0xd7ff('0x40')](_0x5847e8['query']);_0x52c570['filters']=_['intersection'](_0x52c570[_0xd7ff('0x3e')],_0x52c570[_0xd7ff('0x3f')]);_0x5c05e7[_0xd7ff('0x42')]=_[_0xd7ff('0x52')](_0x52c570[_0xd7ff('0x3e')],qs[_0xd7ff('0x41')](_0x5847e8[_0xd7ff('0x3f')][_0xd7ff('0x41')]));_0x5c05e7[_0xd7ff('0x42')]=_0x5c05e7[_0xd7ff('0x42')][_0xd7ff('0x43')]?_0x5c05e7[_0xd7ff('0x42')]:_0x52c570['model'];if(!_0x5847e8[_0xd7ff('0x3f')][_0xd7ff('0x44')]('nolimit')){_0x5c05e7[_0xd7ff('0x2b')]=qs[_0xd7ff('0x2b')](_0x5847e8['query'][_0xd7ff('0x2b')]);_0x5c05e7['offset']=qs[_0xd7ff('0x2a')](_0x5847e8[_0xd7ff('0x3f')][_0xd7ff('0x2a')]);}_0x5c05e7[_0xd7ff('0x5e')]=qs['sort'](_0x5847e8[_0xd7ff('0x3f')][_0xd7ff('0x46')]);_0x5c05e7[_0xd7ff('0x47')]=qs[_0xd7ff('0x48')](_[_0xd7ff('0x5f')](_0x5847e8[_0xd7ff('0x3f')],_0x52c570['filters']));_0x5c05e7[_0xd7ff('0x47')][_0xd7ff('0x60')]=_0x24ffbe['id'];if(_0x5847e8['query'][_0xd7ff('0x4b')]){_0x5c05e7['where']=_['merge'](_0x5c05e7[_0xd7ff('0x47')],{'$or':_['map'](_0x5c05e7[_0xd7ff('0x42')],function(_0x2ef45e){var _0x1b7019={};_0x1b7019[_0x2ef45e]={'$like':'%'+_0x5847e8[_0xd7ff('0x3f')][_0xd7ff('0x4b')]+'%'};return _0x1b7019;})});}_0x5c05e7=_[_0xd7ff('0x49')]({},_0x5c05e7,_0x5847e8[_0xd7ff('0x4c')]);return db['UserChatQueue']['findAll'](_0x5c05e7);}})[_0xd7ff('0x1b')](function(_0x1f7f7f){if(_0x1f7f7f){return db['User'][_0xd7ff('0x61')]({'where':{'id':_[_0xd7ff('0x3a')](_0x1f7f7f,'UserId'),'role':_0xd7ff('0x62')},'attributes':['id','name',_0xd7ff('0x63'),_0xd7ff('0x64'),'createdAt']});}})[_0xd7ff('0x1b')](function(_0x35f48a){if(_0x35f48a){return{'count':_0x35f48a['count'],'rows':_['map'](_0x35f48a['rows'],function(_0x1198c9){return{'membername':_0x1198c9[_0xd7ff('0x38')],'UserId':_0x1198c9['id'],'queue_name':_0x539dfc[_0xd7ff('0x38')],'ChatQueueId':_0x539dfc['id'],'interface':util[_0xd7ff('0x65')](_0xd7ff('0x66'),_0xd7ff('0x67'),_0x1198c9[_0xd7ff('0x38')]),'penalty':0x0,'paused':_0x1198c9[_0xd7ff('0x63')],'createdAt':_0x1198c9[_0xd7ff('0x68')],'updatedAt':_0x1198c9[_0xd7ff('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xd7ff('0x1b')](respondWithFilteredResult(_0x5eefe2,_0x5c05e7))[_0xd7ff('0x25')](handleError(_0x5eefe2,null));};exports[_0xd7ff('0x69')]=function(_0x1df1e7,_0x4a139b,_0x26256b){var _0xe68c92={};var _0x25728a={};var _0x1ea99d;var _0x13f901;return db['ChatQueue'][_0xd7ff('0x5d')]({'where':{'id':_0x1df1e7[_0xd7ff('0x5b')]['id']}})[_0xd7ff('0x1b')](handleEntityNotFound(_0x4a139b,null))[_0xd7ff('0x1b')](function(_0x53c347){if(_0x53c347){_0x1ea99d=_0x53c347;_0x25728a['model']=_[_0xd7ff('0x40')](db[_0xd7ff('0x6a')][_0xd7ff('0x51')]);_0x25728a[_0xd7ff('0x3f')]=_[_0xd7ff('0x40')](_0x1df1e7[_0xd7ff('0x3f')]);_0x25728a[_0xd7ff('0x48')]=_['intersection'](_0x25728a[_0xd7ff('0x3e')],_0x25728a[_0xd7ff('0x3f')]);_0xe68c92['attributes']=_[_0xd7ff('0x52')](_0x25728a[_0xd7ff('0x3e')],qs[_0xd7ff('0x41')](_0x1df1e7[_0xd7ff('0x3f')][_0xd7ff('0x41')]));_0xe68c92['attributes']=_0xe68c92[_0xd7ff('0x42')]['length']?_0xe68c92['attributes']:_0x25728a[_0xd7ff('0x3e')];_0xe68c92[_0xd7ff('0x5e')]=qs[_0xd7ff('0x46')](_0x1df1e7[_0xd7ff('0x3f')][_0xd7ff('0x46')]);_0xe68c92['where']=qs[_0xd7ff('0x48')](_[_0xd7ff('0x5f')](_0x1df1e7[_0xd7ff('0x3f')],_0x25728a[_0xd7ff('0x48')]));if(_0x1df1e7['query'][_0xd7ff('0x4b')]){_0xe68c92[_0xd7ff('0x47')]=_[_0xd7ff('0x49')](_0xe68c92['where'],{'$or':_['map'](_0xe68c92[_0xd7ff('0x42')],function(_0x4c7a1f){var _0x1c9837={};_0x1c9837[_0x4c7a1f]={'$like':'%'+_0x1df1e7[_0xd7ff('0x3f')][_0xd7ff('0x4b')]+'%'};return _0x1c9837;})});}_0xe68c92=_[_0xd7ff('0x49')]({},_0xe68c92,_0x1df1e7['options']);return _0x1ea99d[_0xd7ff('0x69')](_0xe68c92);}})[_0xd7ff('0x1b')](function(_0x5aec50){if(_0x5aec50){_0x13f901=_0x5aec50[_0xd7ff('0x43')];if(!_0x1df1e7['query'][_0xd7ff('0x44')](_0xd7ff('0x45'))){_0xe68c92[_0xd7ff('0x2b')]=qs[_0xd7ff('0x2b')](_0x1df1e7[_0xd7ff('0x3f')][_0xd7ff('0x2b')]);_0xe68c92[_0xd7ff('0x2a')]=qs[_0xd7ff('0x2a')](_0x1df1e7[_0xd7ff('0x3f')][_0xd7ff('0x2a')]);}return _0x1ea99d[_0xd7ff('0x69')](_0xe68c92);}})[_0xd7ff('0x1b')](function(_0x585dd5){if(_0x585dd5){return _0x585dd5?{'count':_0x13f901,'rows':_0x585dd5}:null;}})[_0xd7ff('0x1b')](respondWithResult(_0x4a139b,null))[_0xd7ff('0x25')](handleError(_0x4a139b,null));};exports[_0xd7ff('0x6b')]=function(_0x1d0b56,_0x4c3ca2,_0x124fdb){var _0x1b8f32=_0x1d0b56[_0xd7ff('0x55')][_0xd7ff('0x6c')];return db[_0xd7ff('0x6a')][_0xd7ff('0x4f')]({'where':{'id':_0x1b8f32},'attributes':['id'],'include':[{'model':db[_0xd7ff('0x6d')],'as':_0xd7ff('0x6e'),'attributes':['id','name','online','voicePause',_0xd7ff('0x6f')],'raw':!![]}]})[_0xd7ff('0x1b')](function(_0x1a040c){if(_0x1a040c){var _0x889c55=_[_0xd7ff('0x70')](_0x1a040c,function(_0x143a2b){var _0x4d6e21=_0x143a2b[_0xd7ff('0x32')]({'plain':!![]});return _0x4d6e21['Agents'];});return db[_0xd7ff('0x3b')]['find']({'where':{'id':_0x1d0b56[_0xd7ff('0x5b')]['id']}})['then'](function(_0x13c686){return db['sequelize'][_0xd7ff('0x71')](function(_0x21a32a){return _0x13c686[_0xd7ff('0x6b')](_0x1b8f32,{'transaction':_0x21a32a})[_0xd7ff('0x1b')](function(){return BPromise['each'](_0x889c55,function(_0x52f020){return db[_0xd7ff('0x72')]['findOrCreate']({'where':{'UserId':_0x52f020['id'],'ChatQueueId':_0x1d0b56['params']['id']},'transaction':_0x21a32a});});})[_0xd7ff('0x1b')](function(){_0x889c55[_0xd7ff('0x73')](function(_0x4410e5){socket[_0xd7ff('0x74')]('userChatQueue:save',{'UserId':_0x4410e5['id'],'ChatQueueId':_0x13c686['id']});});});});});}})['then'](respondWithStatusCode(_0x4c3ca2,null))[_0xd7ff('0x25')](handleError(_0x4c3ca2,null));};exports[_0xd7ff('0x75')]=function(_0x29055c,_0x2f49bc,_0x43cede){return db[_0xd7ff('0x6a')][_0xd7ff('0x4f')]({'where':{'id':_0x29055c['query'][_0xd7ff('0x6c')]},'attributes':['id'],'include':[{'model':db[_0xd7ff('0x6d')],'as':_0xd7ff('0x6e'),'attributes':['id'],'raw':!![]}]})[_0xd7ff('0x1b')](handleEntityNotFound(_0x2f49bc,null))[_0xd7ff('0x1b')](function(_0x48fbd8){var _0x320fd3=_[_0xd7ff('0x3a')](_0x48fbd8,'id');var _0x462175=[];var _0x262445=[];var _0x54baeb=squel[_0xd7ff('0x76')]();_0x54baeb[_0xd7ff('0x77')]('tq.TeamId')[_0xd7ff('0x78')](_0xd7ff('0x79'),'tq')[_0xd7ff('0x7a')](_0xd7ff('0x7b'),'ut',_0xd7ff('0x7c'))['where'](_0xd7ff('0x7d'),_0x29055c[_0xd7ff('0x5b')]['id']);for(var _0x40c6f8=0x0;_0x40c6f8<_0x48fbd8[_0xd7ff('0x43')];_0x40c6f8+=0x1){let _0x333bb2=_0x48fbd8[_0x40c6f8];for(var _0x4a6199=0x0;_0x4a6199<_0x333bb2['Agents'][_0xd7ff('0x43')];_0x4a6199+=0x1){let _0x331914=_0x333bb2['Agents'][_0x4a6199];var _0x20643c=_0x54baeb['clone']();_0x20643c['where'](_0xd7ff('0x7e'),_0x331914['id']);_0x262445[_0xd7ff('0x7f')](db[_0xd7ff('0x80')][_0xd7ff('0x3f')](_0x20643c[_0xd7ff('0x81')](),{'type':db[_0xd7ff('0x80')][_0xd7ff('0x82')][_0xd7ff('0x83')]})[_0xd7ff('0x1b')](function(_0x817b38){if(_0x817b38['length']===0x1){return _0x331914['id'];}else{var _0x38c7db=_['every'](_[_0xd7ff('0x3a')](_0x817b38,_0xd7ff('0x84')),function(_0x8007b0){return _[_0xd7ff('0x85')](_0x320fd3,_0x8007b0);});if(_0x38c7db){return _0x331914['id'];}}}));}}return BPromise[_0xd7ff('0x86')](_0x262445)[_0xd7ff('0x1b')](function(_0x53ae02){_0x462175=_(_0x462175)[_0xd7ff('0x87')](_0x53ae02)['compact']()[_0xd7ff('0x88')]();return db[_0xd7ff('0x3b')][_0xd7ff('0x53')]({'where':{'id':_0x29055c[_0xd7ff('0x5b')]['id']}})[_0xd7ff('0x1b')](function(_0x488783){return db[_0xd7ff('0x80')][_0xd7ff('0x71')](function(_0x3476e9){return _0x488783['removeTeams'](_0x29055c[_0xd7ff('0x3f')][_0xd7ff('0x6c')],{'transaction':_0x3476e9})['then'](function(){if(!_[_0xd7ff('0x89')](_0x462175)){return _0x488783[_0xd7ff('0x8a')](_0x462175,{'transaction':_0x3476e9});}})['then'](function(){_0x462175[_0xd7ff('0x73')](function(_0x975d13){socket[_0xd7ff('0x74')](_0xd7ff('0x8b'),{'UserId':_0x975d13,'ChatQueueId':_0x488783['id']});});});});});});})['then'](respondWithStatusCode(_0x2f49bc,null))[_0xd7ff('0x25')](handleError(_0x2f49bc,null));};exports['addAgents']=function(_0x59dd4c,_0x21f14d,_0xc6db8d){return db[_0xd7ff('0x3b')]['find']({'where':{'id':_0x59dd4c[_0xd7ff('0x5b')]['id']}})[_0xd7ff('0x1b')](handleEntityNotFound(_0x21f14d,null))[_0xd7ff('0x1b')](function(_0x1ced88){if(_0x1ced88){return _0x1ced88[_0xd7ff('0x8c')](_0x59dd4c['body'][_0xd7ff('0x6c')],_['omit'](_0x59dd4c[_0xd7ff('0x55')],['ids','id'])||{})[_0xd7ff('0x8d')](function(_0x33ee23){for(var _0x5744e4=0x0;_0x5744e4<_0x59dd4c[_0xd7ff('0x55')]['ids']['length'];_0x5744e4+=0x1){socket[_0xd7ff('0x74')]('userChatQueue:save',{'UserId':Number(_0x59dd4c[_0xd7ff('0x55')][_0xd7ff('0x6c')][_0x5744e4]),'ChatQueueId':Number(_0x59dd4c[_0xd7ff('0x5b')]['id'])});}return _0x33ee23;});}})['then'](respondWithResult(_0x21f14d,null))[_0xd7ff('0x25')](handleError(_0x21f14d,null));};exports[_0xd7ff('0x8a')]=function(_0x32fc64,_0x22b8aa,_0x49527b){return db[_0xd7ff('0x3b')][_0xd7ff('0x53')]({'where':{'id':_0x32fc64[_0xd7ff('0x5b')]['id']}})[_0xd7ff('0x1b')](handleEntityNotFound(_0x22b8aa,null))[_0xd7ff('0x1b')](function(_0x3abb37){if(_0x3abb37){return _0x3abb37[_0xd7ff('0x8a')](_0x32fc64[_0xd7ff('0x3f')][_0xd7ff('0x6c')])[_0xd7ff('0x1b')](function(){if(_['isArray'](_0x32fc64[_0xd7ff('0x3f')][_0xd7ff('0x6c')])){for(var _0x1cf52a=0x0;_0x1cf52a<_0x32fc64[_0xd7ff('0x3f')][_0xd7ff('0x6c')][_0xd7ff('0x43')];_0x1cf52a+=0x1){socket[_0xd7ff('0x74')](_0xd7ff('0x8b'),{'UserId':Number(_0x32fc64['query']['ids'][_0x1cf52a]),'ChatQueueId':Number(_0x32fc64[_0xd7ff('0x5b')]['id'])});}}else{socket[_0xd7ff('0x74')](_0xd7ff('0x8b'),{'UserId':Number(_0x32fc64[_0xd7ff('0x3f')][_0xd7ff('0x6c')]),'ChatQueueId':Number(_0x32fc64['params']['id'])});}});}})[_0xd7ff('0x1b')](respondWithStatusCode(_0x22b8aa,null))[_0xd7ff('0x25')](handleError(_0x22b8aa,null));};exports[_0xd7ff('0x8e')]=function(_0xfcadd2,_0x59740a,_0x1d9c0b){var _0x135238={};var _0x1d2618={};var _0x1ff614;var _0x294a00;return db['ChatQueue'][_0xd7ff('0x5d')]({'where':{'id':_0xfcadd2['params']['id']}})['then'](handleEntityNotFound(_0x59740a,null))['then'](function(_0xaae0c4){if(_0xaae0c4){_0x1ff614=_0xaae0c4;_0x1d2618[_0xd7ff('0x3e')]=_[_0xd7ff('0x40')](db[_0xd7ff('0x6d')][_0xd7ff('0x51')]);_0x1d2618[_0xd7ff('0x3f')]=_['keys'](_0xfcadd2[_0xd7ff('0x3f')]);_0x1d2618[_0xd7ff('0x48')]=_[_0xd7ff('0x52')](_0x1d2618[_0xd7ff('0x3e')],_0x1d2618['query']);_0x135238[_0xd7ff('0x42')]=_[_0xd7ff('0x52')](_0x1d2618[_0xd7ff('0x3e')],qs[_0xd7ff('0x41')](_0xfcadd2[_0xd7ff('0x3f')][_0xd7ff('0x41')]));_0x135238[_0xd7ff('0x42')]=_0x135238[_0xd7ff('0x42')][_0xd7ff('0x43')]?_0x135238[_0xd7ff('0x42')]:_0x1d2618[_0xd7ff('0x3e')];_0x135238[_0xd7ff('0x5e')]=qs[_0xd7ff('0x46')](_0xfcadd2['query'][_0xd7ff('0x46')]);_0x135238['where']=qs['filters'](_[_0xd7ff('0x5f')](_0xfcadd2[_0xd7ff('0x3f')],_0x1d2618[_0xd7ff('0x48')]));if(_0xfcadd2[_0xd7ff('0x3f')][_0xd7ff('0x4b')]){_0x135238['where']=_[_0xd7ff('0x49')](_0x135238[_0xd7ff('0x47')],{'$or':_[_0xd7ff('0x3a')](_0x135238['attributes'],function(_0x3ecfd4){var _0x373e90={};_0x373e90[_0x3ecfd4]={'$like':'%'+_0xfcadd2[_0xd7ff('0x3f')][_0xd7ff('0x4b')]+'%'};return _0x373e90;})});}_0x135238=_[_0xd7ff('0x49')]({},_0x135238,_0xfcadd2['options']);return _0x1ff614[_0xd7ff('0x8e')](_0x135238);}})[_0xd7ff('0x1b')](function(_0x1d496c){if(_0x1d496c){_0x294a00=_0x1d496c[_0xd7ff('0x43')];if(!_0xfcadd2['query'][_0xd7ff('0x44')](_0xd7ff('0x45'))){_0x135238[_0xd7ff('0x2b')]=qs[_0xd7ff('0x2b')](_0xfcadd2['query'][_0xd7ff('0x2b')]);_0x135238[_0xd7ff('0x2a')]=qs[_0xd7ff('0x2a')](_0xfcadd2[_0xd7ff('0x3f')]['offset']);}return _0x1ff614['getAgents'](_0x135238);}})[_0xd7ff('0x1b')](function(_0x3d6685){if(_0x3d6685){return _0x3d6685?{'count':_0x294a00,'rows':_0x3d6685}:null;}})[_0xd7ff('0x1b')](respondWithResult(_0x59740a,null))[_0xd7ff('0x25')](handleError(_0x59740a,null));};
\ No newline at end of file
index 0d5592f..ac4ce91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fa0=['ChatQueue','setMaxListeners','save','update','remove','emit','hook','exports','events'];(function(_0x55e4e1,_0x352a79){var _0x1644e8=function(_0x4a2446){while(--_0x4a2446){_0x55e4e1['push'](_0x55e4e1['shift']());}};_0x1644e8(++_0x352a79);}(_0x0fa0,0xbc));var _0x00fa=function(_0x13d857,_0x51659d){_0x13d857=_0x13d857-0x0;var _0x2d9d98=_0x0fa0[_0x13d857];return _0x2d9d98;};'use strict';var EventEmitter=require(_0x00fa('0x0'));var ChatQueue=require('../../mysqldb')['db'][_0x00fa('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x00fa('0x2')](0x0);var events={'afterCreate':_0x00fa('0x3'),'afterUpdate':_0x00fa('0x4'),'afterDestroy':_0x00fa('0x5')};function emitEvent(_0x3a5f0b){return function(_0x39bea0,_0x295083,_0x4e2894){ChatQueueEvents[_0x00fa('0x6')](_0x3a5f0b+':'+_0x39bea0['id'],_0x39bea0);ChatQueueEvents[_0x00fa('0x6')](_0x3a5f0b,_0x39bea0);_0x4e2894(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue[_0x00fa('0x7')](e,emitEvent(event));}}module[_0x00fa('0x8')]=ChatQueueEvents;
\ No newline at end of file
+var _0x8bb9=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatQueue','setMaxListeners','save'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x8bb9,0x1f3));var _0x98bb=function(_0x435fa1,_0x58550a){_0x435fa1=_0x435fa1-0x0;var _0x845f9f=_0x8bb9[_0x435fa1];return _0x845f9f;};'use strict';var EventEmitter=require(_0x98bb('0x0'));var ChatQueue=require(_0x98bb('0x1'))['db'][_0x98bb('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x98bb('0x3')](0x0);var events={'afterCreate':_0x98bb('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x30218b){return function(_0x38b7cd,_0x5374d8,_0x186bc2){ChatQueueEvents[_0x98bb('0x5')](_0x30218b+':'+_0x38b7cd['id'],_0x38b7cd);ChatQueueEvents[_0x98bb('0x5')](_0x30218b,_0x38b7cd);_0x186bc2(null);};}for(var e in events){if(events[_0x98bb('0x6')](e)){var event=events[e];ChatQueue[_0x98bb('0x7')](e,emitEvent(event));}}module[_0x98bb('0x8')]=ChatQueueEvents;
\ No newline at end of file
index d429a52..23186c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c7b=['ChatQueue','chat_queues','util','../../config/logger','api','request-promise','../../config/environment','exports','define'];(function(_0x6173fc,_0x32aadf){var _0x965fbe=function(_0x50d5b3){while(--_0x50d5b3){_0x6173fc['push'](_0x6173fc['shift']());}};_0x965fbe(++_0x32aadf);}(_0x8c7b,0x80));var _0xb8c7=function(_0x29fd4c,_0x1a623d){_0x29fd4c=_0x29fd4c-0x0;var _0x4e183a=_0x8c7b[_0x29fd4c];return _0x4e183a;};'use strict';var _=require('lodash');var util=require(_0xb8c7('0x0'));var logger=require(_0xb8c7('0x1'))(_0xb8c7('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb8c7('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb8c7('0x4'));var attributes=require('./chatQueue.attributes');module[_0xb8c7('0x5')]=function(_0x3f29f7,_0x299032){return _0x3f29f7[_0xb8c7('0x6')](_0xb8c7('0x7'),attributes,{'tableName':_0xb8c7('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8ac5=['lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','./chatQueue.attributes','exports','ChatQueue','chat_queues'];(function(_0x5b6cf1,_0x32fdcd){var _0x46278c=function(_0x53fd9b){while(--_0x53fd9b){_0x5b6cf1['push'](_0x5b6cf1['shift']());}};_0x46278c(++_0x32fdcd);}(_0x8ac5,0x1ad));var _0x58ac=function(_0x485221,_0x1f5ca6){_0x485221=_0x485221-0x0;var _0x43a0c7=_0x8ac5[_0x485221];return _0x43a0c7;};'use strict';var _=require(_0x58ac('0x0'));var util=require(_0x58ac('0x1'));var logger=require(_0x58ac('0x2'))(_0x58ac('0x3'));var moment=require('moment');var BPromise=require(_0x58ac('0x4'));var rp=require(_0x58ac('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x58ac('0x6'));var config=require('../../config/environment');var attributes=require(_0x58ac('0x7'));module[_0x58ac('0x8')]=function(_0xe02ad2,_0x3da386){return _0xe02ad2['define'](_0x58ac('0x9'),attributes,{'tableName':_0x58ac('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6631607..d9d3e52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77ff=['options','where','attributes','limit','include','map','model','ChatQueue','raw','ShowChatQueue','util','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','redis','localhost','socket.io-emitter','./chatQueue.socket','register','request','then','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatQueue,\x20%s,\x20%s','info','result','catch','GetChatQueue'];(function(_0x51559a,_0x4c8432){var _0xe5bb1e=function(_0x563834){while(--_0x563834){_0x51559a['push'](_0x51559a['shift']());}};_0xe5bb1e(++_0x4c8432);}(_0x77ff,0x168));var _0xf77f=function(_0x3f2899,_0x11cfa4){_0x3f2899=_0x3f2899-0x0;var _0x3dc551=_0x77ff[_0x3f2899];return _0x3dc551;};'use strict';var _=require('lodash');var util=require(_0xf77f('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf77f('0x1'))['db'];var utils=require(_0xf77f('0x2'));var logger=require(_0xf77f('0x3'))('rpc');var config=require(_0xf77f('0x4'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf77f('0x5')]({'port':0x232a});config['redis']=_['defaults'](config[_0xf77f('0x6')],{'host':_0xf77f('0x7'),'port':0x18eb});var socket=require(_0xf77f('0x8'))(new Redis(config['redis']));require(_0xf77f('0x9'))[_0xf77f('0xa')](socket);function respondWithRpcPromise(_0x53aead,_0x27412c,_0x41dcee){return new BPromise(function(_0x66def4,_0x257499){return client[_0xf77f('0xb')](_0x53aead,_0x41dcee)[_0xf77f('0xc')](function(_0x1d8bca){logger['info']('ChatQueue,\x20%s,\x20%s',_0x27412c,_0xf77f('0xd'));logger[_0xf77f('0xe')](_0xf77f('0xf'),_0x27412c,_0xf77f('0xd'),JSON[_0xf77f('0x10')](_0x1d8bca));if(_0x1d8bca[_0xf77f('0x11')]){if(_0x1d8bca['error'][_0xf77f('0x12')]===0x1f4){logger['error']('ChatQueue,\x20%s,\x20%s',_0x27412c,_0x1d8bca[_0xf77f('0x11')][_0xf77f('0x13')]);return _0x257499(_0x1d8bca[_0xf77f('0x11')][_0xf77f('0x13')]);}logger[_0xf77f('0x11')](_0xf77f('0x14'),_0x27412c,_0x1d8bca[_0xf77f('0x11')][_0xf77f('0x13')]);return _0x66def4(_0x1d8bca[_0xf77f('0x11')]['message']);}else{logger[_0xf77f('0x15')]('ChatQueue,\x20%s,\x20%s',_0x27412c,_0xf77f('0xd'));_0x66def4(_0x1d8bca[_0xf77f('0x16')][_0xf77f('0x13')]);}})[_0xf77f('0x17')](function(_0x31a99f){logger[_0xf77f('0x11')](_0xf77f('0x14'),_0x27412c,_0x31a99f);_0x257499(_0x31a99f);});});}exports[_0xf77f('0x18')]=function(_0x28fc63){var _0x220606=this;return new Promise(function(_0x331db7,_0x4db2c2){return db['ChatQueue']['findAll']({'raw':_0x28fc63[_0xf77f('0x19')]?_0x28fc63[_0xf77f('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x28fc63[_0xf77f('0x19')]?_0x28fc63['options'][_0xf77f('0x1a')]||null:null,'attributes':_0x28fc63['options']?_0x28fc63[_0xf77f('0x19')][_0xf77f('0x1b')]||null:null,'limit':_0x28fc63[_0xf77f('0x19')]?_0x28fc63[_0xf77f('0x19')][_0xf77f('0x1c')]||null:null,'include':_0x28fc63[_0xf77f('0x19')]?_0x28fc63['options'][_0xf77f('0x1d')]?_[_0xf77f('0x1e')](_0x28fc63[_0xf77f('0x19')]['include'],function(_0x45bbe6){return{'model':db[_0x45bbe6['model']],'as':_0x45bbe6['as'],'attributes':_0x45bbe6[_0xf77f('0x1b')],'include':_0x45bbe6['include']?_['map'](_0x45bbe6['include'],function(_0x53aa0c){return{'model':db[_0x53aa0c[_0xf77f('0x1f')]],'as':_0x53aa0c['as'],'attributes':_0x53aa0c[_0xf77f('0x1b')],'include':_0x53aa0c['include']?_[_0xf77f('0x1e')](_0x53aa0c[_0xf77f('0x1d')],function(_0x534fee){return{'model':db[_0x534fee['model']],'as':_0x534fee['as'],'attributes':_0x534fee[_0xf77f('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xba82b){logger['info'](_0xf77f('0x18'),_0x28fc63);logger[_0xf77f('0xe')](_0xf77f('0x18'),_0x28fc63,JSON[_0xf77f('0x10')](_0xba82b));_0x331db7(_0xba82b);})['catch'](function(_0x5cd804){logger[_0xf77f('0x11')]('GetChatQueue',_0x5cd804[_0xf77f('0x13')],_0x28fc63);_0x4db2c2(_0x220606[_0xf77f('0x11')](0x1f4,_0x5cd804[_0xf77f('0x13')]));});});};exports['ShowChatQueue']=function(_0xd49582){var _0x1fd637=this;return new Promise(function(_0x418a94,_0x275daf){return db[_0xf77f('0x20')]['find']({'raw':_0xd49582[_0xf77f('0x19')]?_0xd49582['options'][_0xf77f('0x21')]===undefined?!![]:![]:!![],'where':_0xd49582[_0xf77f('0x19')]?_0xd49582[_0xf77f('0x19')]['where']||null:null,'attributes':_0xd49582[_0xf77f('0x19')]?_0xd49582[_0xf77f('0x19')][_0xf77f('0x1b')]||null:null,'include':_0xd49582[_0xf77f('0x19')]?_0xd49582[_0xf77f('0x19')][_0xf77f('0x1d')]?_[_0xf77f('0x1e')](_0xd49582[_0xf77f('0x19')][_0xf77f('0x1d')],function(_0x4f3ae2){return{'model':db[_0x4f3ae2['model']],'as':_0x4f3ae2['as'],'attributes':_0x4f3ae2[_0xf77f('0x1b')],'include':_0x4f3ae2[_0xf77f('0x1d')]?_[_0xf77f('0x1e')](_0x4f3ae2['include'],function(_0x4cf629){return{'model':db[_0x4cf629[_0xf77f('0x1f')]],'as':_0x4cf629['as'],'attributes':_0x4cf629[_0xf77f('0x1b')],'include':_0x4cf629['include']?_[_0xf77f('0x1e')](_0x4cf629[_0xf77f('0x1d')],function(_0x3c369a){return{'model':db[_0x3c369a[_0xf77f('0x1f')]],'as':_0x3c369a['as'],'attributes':_0x3c369a[_0xf77f('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1a8959){logger[_0xf77f('0x15')]('ShowChatQueue',_0xd49582);logger[_0xf77f('0xe')](_0xf77f('0x22'),_0xd49582,JSON[_0xf77f('0x10')](_0x1a8959));_0x418a94(_0x1a8959);})['catch'](function(_0x10a289){logger[_0xf77f('0x11')](_0xf77f('0x22'),_0x10a289[_0xf77f('0x13')],_0xd49582);_0x275daf(_0x1fd637[_0xf77f('0x11')](0x1f4,_0x10a289[_0xf77f('0x13')]));});});};
\ No newline at end of file
+var _0xa67e=['info','result','catch','GetChatQueue','findAll','options','where','attributes','limit','include','map','model','then','ShowChatQueue','ChatQueue','raw','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x5b0e01,_0x7174a9){var _0x5950b7=function(_0x453b39){while(--_0x453b39){_0x5b0e01['push'](_0x5b0e01['shift']());}};_0x5950b7(++_0x7174a9);}(_0xa67e,0xce));var _0xea67=function(_0x1123bc,_0x5a1fa0){_0x1123bc=_0x1123bc-0x0;var _0x2ed004=_0xa67e[_0x1123bc];return _0x2ed004;};'use strict';var _=require('lodash');var util=require(_0xea67('0x0'));var moment=require('moment');var BPromise=require(_0xea67('0x1'));var rs=require(_0xea67('0x2'));var fs=require('fs');var Redis=require(_0xea67('0x3'));var db=require(_0xea67('0x4'))['db'];var utils=require(_0xea67('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xea67('0x6'));var jayson=require(_0xea67('0x7'));var client=jayson[_0xea67('0x8')][_0xea67('0x9')]({'port':0x232a});config[_0xea67('0xa')]=_[_0xea67('0xb')](config[_0xea67('0xa')],{'host':_0xea67('0xc'),'port':0x18eb});var socket=require(_0xea67('0xd'))(new Redis(config[_0xea67('0xa')]));require(_0xea67('0xe'))['register'](socket);function respondWithRpcPromise(_0x29c622,_0x3967ca,_0xf9d861){return new BPromise(function(_0x1717e7,_0x378eab){return client['request'](_0x29c622,_0xf9d861)['then'](function(_0x5f4f1b){logger['info'](_0xea67('0xf'),_0x3967ca,_0xea67('0x10'));logger[_0xea67('0x11')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x3967ca,_0xea67('0x10'),JSON[_0xea67('0x12')](_0x5f4f1b));if(_0x5f4f1b['error']){if(_0x5f4f1b[_0xea67('0x13')][_0xea67('0x14')]===0x1f4){logger['error']('ChatQueue,\x20%s,\x20%s',_0x3967ca,_0x5f4f1b[_0xea67('0x13')]['message']);return _0x378eab(_0x5f4f1b[_0xea67('0x13')][_0xea67('0x15')]);}logger[_0xea67('0x13')](_0xea67('0xf'),_0x3967ca,_0x5f4f1b[_0xea67('0x13')]['message']);return _0x1717e7(_0x5f4f1b['error']['message']);}else{logger[_0xea67('0x16')](_0xea67('0xf'),_0x3967ca,_0xea67('0x10'));_0x1717e7(_0x5f4f1b[_0xea67('0x17')][_0xea67('0x15')]);}})[_0xea67('0x18')](function(_0x51baf7){logger[_0xea67('0x13')](_0xea67('0xf'),_0x3967ca,_0x51baf7);_0x378eab(_0x51baf7);});});}exports[_0xea67('0x19')]=function(_0x96270b){var _0xac22d6=this;return new Promise(function(_0x77e0e4,_0x45663f){return db['ChatQueue'][_0xea67('0x1a')]({'raw':_0x96270b[_0xea67('0x1b')]?_0x96270b[_0xea67('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x96270b['options']?_0x96270b[_0xea67('0x1b')][_0xea67('0x1c')]||null:null,'attributes':_0x96270b['options']?_0x96270b[_0xea67('0x1b')][_0xea67('0x1d')]||null:null,'limit':_0x96270b[_0xea67('0x1b')]?_0x96270b[_0xea67('0x1b')][_0xea67('0x1e')]||null:null,'include':_0x96270b[_0xea67('0x1b')]?_0x96270b[_0xea67('0x1b')][_0xea67('0x1f')]?_['map'](_0x96270b[_0xea67('0x1b')][_0xea67('0x1f')],function(_0x31b6ea){return{'model':db[_0x31b6ea['model']],'as':_0x31b6ea['as'],'attributes':_0x31b6ea[_0xea67('0x1d')],'include':_0x31b6ea['include']?_[_0xea67('0x20')](_0x31b6ea['include'],function(_0x3d2403){return{'model':db[_0x3d2403[_0xea67('0x21')]],'as':_0x3d2403['as'],'attributes':_0x3d2403['attributes'],'include':_0x3d2403[_0xea67('0x1f')]?_[_0xea67('0x20')](_0x3d2403[_0xea67('0x1f')],function(_0x30ccdb){return{'model':db[_0x30ccdb[_0xea67('0x21')]],'as':_0x30ccdb['as'],'attributes':_0x30ccdb[_0xea67('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xea67('0x22')](function(_0x106d58){logger[_0xea67('0x16')](_0xea67('0x19'),_0x96270b);logger['debug'](_0xea67('0x19'),_0x96270b,JSON[_0xea67('0x12')](_0x106d58));_0x77e0e4(_0x106d58);})[_0xea67('0x18')](function(_0x29f221){logger[_0xea67('0x13')](_0xea67('0x19'),_0x29f221[_0xea67('0x15')],_0x96270b);_0x45663f(_0xac22d6['error'](0x1f4,_0x29f221[_0xea67('0x15')]));});});};exports[_0xea67('0x23')]=function(_0x5f1f29){var _0xe7cb99=this;return new Promise(function(_0x3054d6,_0x5bad56){return db[_0xea67('0x24')]['find']({'raw':_0x5f1f29[_0xea67('0x1b')]?_0x5f1f29['options'][_0xea67('0x25')]===undefined?!![]:![]:!![],'where':_0x5f1f29[_0xea67('0x1b')]?_0x5f1f29[_0xea67('0x1b')][_0xea67('0x1c')]||null:null,'attributes':_0x5f1f29[_0xea67('0x1b')]?_0x5f1f29['options'][_0xea67('0x1d')]||null:null,'include':_0x5f1f29[_0xea67('0x1b')]?_0x5f1f29[_0xea67('0x1b')][_0xea67('0x1f')]?_['map'](_0x5f1f29[_0xea67('0x1b')][_0xea67('0x1f')],function(_0x46feba){return{'model':db[_0x46feba[_0xea67('0x21')]],'as':_0x46feba['as'],'attributes':_0x46feba[_0xea67('0x1d')],'include':_0x46feba[_0xea67('0x1f')]?_[_0xea67('0x20')](_0x46feba[_0xea67('0x1f')],function(_0x10fbc3){return{'model':db[_0x10fbc3[_0xea67('0x21')]],'as':_0x10fbc3['as'],'attributes':_0x10fbc3[_0xea67('0x1d')],'include':_0x10fbc3['include']?_[_0xea67('0x20')](_0x10fbc3[_0xea67('0x1f')],function(_0x4ec241){return{'model':db[_0x4ec241[_0xea67('0x21')]],'as':_0x4ec241['as'],'attributes':_0x4ec241[_0xea67('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x11ce00){logger['info'](_0xea67('0x23'),_0x5f1f29);logger[_0xea67('0x11')](_0xea67('0x23'),_0x5f1f29,JSON[_0xea67('0x12')](_0x11ce00));_0x3054d6(_0x11ce00);})['catch'](function(_0x3d132b){logger[_0xea67('0x13')]('ShowChatQueue',_0x3d132b['message'],_0x5f1f29);_0x5bad56(_0xe7cb99['error'](0x1f4,_0x3d132b[_0xea67('0x15')]));});});};
\ No newline at end of file
index 7b6241c..6f36ff1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbec5=['emit','removeListener','register','length','chatQueue:','./chatQueue.events','save','update'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0xbec5,0xe5));var _0x5bec=function(_0x44f974,_0x4db616){_0x44f974=_0x44f974-0x0;var _0x805dbd=_0xbec5[_0x44f974];return _0x805dbd;};'use strict';var ChatQueueEvents=require(_0x5bec('0x0'));var events=[_0x5bec('0x1'),'remove',_0x5bec('0x2')];function createListener(_0x38c81a,_0x276b9e){return function(_0x3859a1){_0x276b9e[_0x5bec('0x3')](_0x38c81a,_0x3859a1);};}function removeListener(_0x4ee982,_0x1f8933){return function(){ChatQueueEvents[_0x5bec('0x4')](_0x4ee982,_0x1f8933);};}exports[_0x5bec('0x5')]=function(_0x4aaac6){for(var _0x3ed67a=0x0,_0x28a427=events[_0x5bec('0x6')];_0x3ed67a<_0x28a427;_0x3ed67a++){var _0x406e65=events[_0x3ed67a];var _0x43d96e=createListener(_0x5bec('0x7')+_0x406e65,_0x4aaac6);ChatQueueEvents['on'](_0x406e65,_0x43d96e);}};
\ No newline at end of file
+var _0x9b9b=['save','emit','removeListener','register','length','chatQueue:'];(function(_0x2580cc,_0xd6dbe3){var _0xae6d3e=function(_0x19ed88){while(--_0x19ed88){_0x2580cc['push'](_0x2580cc['shift']());}};_0xae6d3e(++_0xd6dbe3);}(_0x9b9b,0x114));var _0xb9b9=function(_0xf7831f,_0x1c6188){_0xf7831f=_0xf7831f-0x0;var _0x3f88e7=_0x9b9b[_0xf7831f];return _0x3f88e7;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0xb9b9('0x0'),'remove','update'];function createListener(_0x2ae8a0,_0x153734){return function(_0x1adf50){_0x153734[_0xb9b9('0x1')](_0x2ae8a0,_0x1adf50);};}function removeListener(_0x1d6ab6,_0x43c8ff){return function(){ChatQueueEvents[_0xb9b9('0x2')](_0x1d6ab6,_0x43c8ff);};}exports[_0xb9b9('0x3')]=function(_0x79dd){for(var _0x3d1a95=0x0,_0x85eec=events[_0xb9b9('0x4')];_0x3d1a95<_0x85eec;_0x3d1a95++){var _0x5be5bc=events[_0x3d1a95];var _0x297cb6=createListener(_0xb9b9('0x5')+_0x5be5bc,_0x79dd);ChatQueueEvents['on'](_0x5be5bc,_0x297cb6);}};
\ No newline at end of file
index 64d246f..7cd5898 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','show','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','update','delete','/:id','removeTeams','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x56d4b0,_0xc429e){var _0x4305d0=function(_0xcada02){while(--_0xcada02){_0x56d4b0['push'](_0x56d4b0['shift']());}};_0x4305d0(++_0xc429e);}(_0x008c,0x188));var _0xc008=function(_0x348ea7,_0x591405){_0x348ea7=_0x348ea7-0x0;var _0x5eafdf=_0x008c[_0x348ea7];return _0x5eafdf;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/describe',auth[_0xc008('0xb')](),controller['describe']);router[_0xc008('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xc008('0xd')]);router[_0xc008('0xa')]('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router[_0xc008('0xa')](_0xc008('0xe'),auth['isAuthenticated'](),controller[_0xc008('0xf')]);router[_0xc008('0xa')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x11')]);router[_0xc008('0x12')]('/',auth[_0xc008('0xb')](),controller['create']);router['post'](_0xc008('0xe'),auth['isAuthenticated'](),controller[_0xc008('0x13')]);router[_0xc008('0x12')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x14')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xc008('0x15')]);router[_0xc008('0x16')](_0xc008('0x17'),auth[_0xc008('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth['isAuthenticated'](),controller[_0xc008('0x18')]);router[_0xc008('0x16')]('/:id/users',auth[_0xc008('0xb')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','/:id/teams','removeTeams','multer','util','path'];(function(_0x5077e4,_0x27fc17){var _0x508e23=function(_0x3b1e44){while(--_0x3b1e44){_0x5077e4['push'](_0x5077e4['shift']());}};_0x508e23(++_0x27fc17);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'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',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/teams',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x14')](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x17')]);router[_0x7995('0x18')](_0x7995('0x19'),auth[_0x7995('0xa')](),controller['update']);router[_0x7995('0x1a')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0x1b')]);router[_0x7995('0x1a')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x1d')]);router['delete']('/:id/users',auth[_0x7995('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index ceb9c81..b19c232 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49d2=['STRING','DATE','moment','sequelize','exports'];(function(_0xc8db6b,_0x320abd){var _0x12cb81=function(_0x417540){while(--_0x417540){_0xc8db6b['push'](_0xc8db6b['shift']());}};_0x12cb81(++_0x320abd);}(_0x49d2,0xa7));var _0x249d=function(_0x2ce6d5,_0x333e0c){_0x2ce6d5=_0x2ce6d5-0x0;var _0x32d272=_0x49d2[_0x2ce6d5];return _0x32d272;};'use strict';var moment=require(_0x249d('0x0'));var Sequelize=require(_0x249d('0x1'));module[_0x249d('0x2')]={'uniqueid':{'type':Sequelize[_0x249d('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x249d('0x3')]},'joinAt':{'type':Sequelize[_0x249d('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x249d('0x3')]}};
\ No newline at end of file
+var _0x1f84=['moment','sequelize','exports','STRING','DATE'];(function(_0x1945a5,_0x50de54){var _0x5817a5=function(_0x2a5a93){while(--_0x2a5a93){_0x1945a5['push'](_0x1945a5['shift']());}};_0x5817a5(++_0x50de54);}(_0x1f84,0x1b3));var _0x41f8=function(_0x53e0f1,_0x3bbca3){_0x53e0f1=_0x53e0f1-0x0;var _0x332f2a=_0x1f84[_0x53e0f1];return _0x332f2a;};'use strict';var moment=require(_0x41f8('0x0'));var Sequelize=require(_0x41f8('0x1'));module[_0x41f8('0x2')]={'uniqueid':{'type':Sequelize[_0x41f8('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x41f8('0x3')]},'joinAt':{'type':Sequelize[_0x41f8('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x41f8('0x4')]},'exitAt':{'type':Sequelize[_0x41f8('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 8ebc5b1..0497fa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02b6=['map','ChatQueueReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','includeAll','include','findAll','rows','show','params','keys','find','catch','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','index'];(function(_0x2513fe,_0x535f51){var _0x3d18bc=function(_0x486e99){while(--_0x486e99){_0x2513fe['push'](_0x2513fe['shift']());}};_0x3d18bc(++_0x535f51);}(_0x02b6,0xfe));var _0x602b=function(_0x36ef3a,_0x8ddb89){_0x36ef3a=_0x36ef3a-0x0;var _0x44caf5=_0x02b6[_0x36ef3a];return _0x44caf5;};'use strict';var emlformat=require(_0x602b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x602b('0x1'));var jsonpatch=require(_0x602b('0x2'));var rp=require(_0x602b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x602b('0x4'));var util=require(_0x602b('0x5'));var path=require(_0x602b('0x6'));var sox=require(_0x602b('0x7'));var csv=require('to-csv');var ejs=require(_0x602b('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x602b('0x9'));var squel=require(_0x602b('0xa'));var crypto=require(_0x602b('0xb'));var jsforce=require(_0x602b('0xc'));var deskjs=require(_0x602b('0xd'));var toCsv=require(_0x602b('0xe'));var querystring=require(_0x602b('0xf'));var Papa=require(_0x602b('0x10'));var Redis=require(_0x602b('0x11'));var authService=require(_0x602b('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x602b('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x602b('0x14'));var utils=require('../../config/utils');var config=require(_0x602b('0x15'));var licenseUtil=require(_0x602b('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e7882,_0x41cd15){_0x41cd15=_0x41cd15||0xcc;return function(_0x135847){if(_0x135847){return _0x1e7882['sendStatus'](_0x41cd15);}return _0x1e7882[_0x602b('0x17')](_0x41cd15)[_0x602b('0x18')]();};}function respondWithResult(_0x2c7f9a,_0x3742f1){_0x3742f1=_0x3742f1||0xc8;return function(_0x27eb0a){if(_0x27eb0a){return _0x2c7f9a[_0x602b('0x17')](_0x3742f1)[_0x602b('0x19')](_0x27eb0a);}};}function respondWithFilteredResult(_0x5035b6,_0x505efc){return function(_0xc4711d){if(_0xc4711d){var _0x41f957=typeof _0x505efc[_0x602b('0x1a')]===_0x602b('0x1b')&&typeof _0x505efc[_0x602b('0x1c')]===_0x602b('0x1b');var _0x416f64=_0xc4711d[_0x602b('0x1d')];var _0x46758d=_0x41f957?0x0:_0x505efc['offset'];var _0x48d992=_0x41f957?_0xc4711d[_0x602b('0x1d')]:_0x505efc[_0x602b('0x1a')]+_0x505efc['limit'];var _0x3c991c;if(_0x48d992>=_0x416f64){_0x48d992=_0x416f64;_0x3c991c=0xc8;}else{_0x3c991c=0xce;}_0x5035b6['status'](_0x3c991c);return _0x5035b6['set'](_0x602b('0x1e'),_0x46758d+'-'+_0x48d992+'/'+_0x416f64)['json'](_0xc4711d);}return null;};}function patchUpdates(_0x28eadf){return function(_0x5e0d15){try{jsonpatch[_0x602b('0x1f')](_0x5e0d15,_0x28eadf,!![]);}catch(_0x36cd1b){return BPromise[_0x602b('0x20')](_0x36cd1b);}return _0x5e0d15['save']();};}function saveUpdates(_0x258e11,_0x1264c8){return function(_0x580b66){if(_0x580b66){return _0x580b66[_0x602b('0x21')](_0x258e11)[_0x602b('0x22')](function(_0x2c59f3){return _0x2c59f3;});}return null;};}function removeEntity(_0x1943a0,_0x8510cf){return function(_0xb3beff){if(_0xb3beff){return _0xb3beff[_0x602b('0x23')]()[_0x602b('0x22')](function(){_0x1943a0[_0x602b('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x43acc3,_0x427bf1){return function(_0x5ce51b){if(!_0x5ce51b){_0x43acc3[_0x602b('0x24')](0x194);}return _0x5ce51b;};}function handleError(_0x469bd9,_0x50e64e){_0x50e64e=_0x50e64e||0x1f4;return function(_0x11dfd5){logger[_0x602b('0x25')](_0x11dfd5[_0x602b('0x26')]);if(_0x11dfd5[_0x602b('0x27')]){delete _0x11dfd5[_0x602b('0x27')];}_0x469bd9[_0x602b('0x17')](_0x50e64e)[_0x602b('0x28')](_0x11dfd5);};}exports[_0x602b('0x29')]=function(_0x3e82bc,_0x1fc94f){var _0x433ad0={},_0x529fa8={},_0x23a7f4={'count':0x0,'rows':[]};var _0x582ccc=_[_0x602b('0x2a')](db[_0x602b('0x2b')][_0x602b('0x2c')],function(_0x3b951b){return{'name':_0x3b951b[_0x602b('0x2d')],'type':_0x3b951b[_0x602b('0x2e')][_0x602b('0x2f')]};});_0x529fa8[_0x602b('0x30')]=_[_0x602b('0x2a')](_0x582ccc,_0x602b('0x27'));_0x529fa8[_0x602b('0x31')]=_['keys'](_0x3e82bc['query']);_0x529fa8[_0x602b('0x32')]=_[_0x602b('0x33')](_0x529fa8[_0x602b('0x30')],_0x529fa8[_0x602b('0x31')]);_0x433ad0['attributes']=_[_0x602b('0x33')](_0x529fa8[_0x602b('0x30')],qs[_0x602b('0x34')](_0x3e82bc['query'][_0x602b('0x34')]));_0x433ad0[_0x602b('0x35')]=_0x433ad0[_0x602b('0x35')][_0x602b('0x36')]?_0x433ad0['attributes']:_0x529fa8[_0x602b('0x30')];if(!_0x3e82bc['query'][_0x602b('0x37')](_0x602b('0x38'))){_0x433ad0[_0x602b('0x1c')]=qs[_0x602b('0x1c')](_0x3e82bc[_0x602b('0x31')][_0x602b('0x1c')]);_0x433ad0['offset']=qs[_0x602b('0x1a')](_0x3e82bc[_0x602b('0x31')][_0x602b('0x1a')]);}_0x433ad0['order']=qs[_0x602b('0x39')](_0x3e82bc['query'][_0x602b('0x39')]);_0x433ad0[_0x602b('0x3a')]=qs['filters'](_['pick'](_0x3e82bc['query'],_0x529fa8[_0x602b('0x32')]),_0x582ccc);if(_0x3e82bc[_0x602b('0x31')][_0x602b('0x3b')]){_0x433ad0[_0x602b('0x3a')]=_[_0x602b('0x3c')](_0x433ad0[_0x602b('0x3a')],{'$or':_[_0x602b('0x2a')](_0x582ccc,function(_0x1ca1e5){if(_0x1ca1e5[_0x602b('0x2e')]!=='VIRTUAL'){var _0x31bb71={};_0x31bb71[_0x1ca1e5[_0x602b('0x27')]]={'$like':'%'+_0x3e82bc[_0x602b('0x31')]['filter']+'%'};return _0x31bb71;}})});}_0x433ad0=_[_0x602b('0x3c')]({},_0x433ad0,_0x3e82bc[_0x602b('0x3d')]);var _0x10529a={'where':_0x433ad0['where']};return db[_0x602b('0x2b')][_0x602b('0x1d')](_0x10529a)[_0x602b('0x22')](function(_0x19376a){_0x23a7f4[_0x602b('0x1d')]=_0x19376a;if(_0x3e82bc['query'][_0x602b('0x3e')]){_0x433ad0[_0x602b('0x3f')]=[{'all':!![]}];}return db['ChatQueueReport'][_0x602b('0x40')](_0x433ad0);})[_0x602b('0x22')](function(_0x3888f6){_0x23a7f4[_0x602b('0x41')]=_0x3888f6;return _0x23a7f4;})['then'](respondWithFilteredResult(_0x1fc94f,_0x433ad0))['catch'](handleError(_0x1fc94f,null));};exports[_0x602b('0x42')]=function(_0x521cfd,_0x4a68d4){var _0x2ab1cf={'raw':!![],'where':{'id':_0x521cfd[_0x602b('0x43')]['id']}},_0x4bc46a={};_0x4bc46a[_0x602b('0x30')]=_[_0x602b('0x44')](db['ChatQueueReport'][_0x602b('0x2c')]);_0x4bc46a['query']=_['keys'](_0x521cfd[_0x602b('0x31')]);_0x4bc46a[_0x602b('0x32')]=_[_0x602b('0x33')](_0x4bc46a[_0x602b('0x30')],_0x4bc46a[_0x602b('0x31')]);_0x2ab1cf[_0x602b('0x35')]=_[_0x602b('0x33')](_0x4bc46a[_0x602b('0x30')],qs[_0x602b('0x34')](_0x521cfd[_0x602b('0x31')][_0x602b('0x34')]));_0x2ab1cf['attributes']=_0x2ab1cf[_0x602b('0x35')][_0x602b('0x36')]?_0x2ab1cf[_0x602b('0x35')]:_0x4bc46a['model'];if(_0x521cfd[_0x602b('0x31')][_0x602b('0x3e')]){_0x2ab1cf['include']=[{'all':!![]}];}_0x2ab1cf=_[_0x602b('0x3c')]({},_0x2ab1cf,_0x521cfd['options']);return db[_0x602b('0x2b')][_0x602b('0x45')](_0x2ab1cf)[_0x602b('0x22')](handleEntityNotFound(_0x4a68d4,null))[_0x602b('0x22')](respondWithResult(_0x4a68d4,null))[_0x602b('0x46')](handleError(_0x4a68d4,null));};exports[_0x602b('0x47')]=function(_0xec0931,_0x2fb9ad){return db[_0x602b('0x2b')][_0x602b('0x47')](_0xec0931[_0x602b('0x48')],{})[_0x602b('0x22')](respondWithResult(_0x2fb9ad,0xc9))['catch'](handleError(_0x2fb9ad,null));};exports['update']=function(_0x528837,_0x33b838){if(_0x528837[_0x602b('0x48')]['id']){delete _0x528837[_0x602b('0x48')]['id'];}return db[_0x602b('0x2b')][_0x602b('0x45')]({'where':{'id':_0x528837[_0x602b('0x43')]['id']}})[_0x602b('0x22')](handleEntityNotFound(_0x33b838,null))[_0x602b('0x22')](saveUpdates(_0x528837['body'],null))[_0x602b('0x22')](respondWithResult(_0x33b838,null))['catch'](handleError(_0x33b838,null));};exports[_0x602b('0x23')]=function(_0x1f72b0,_0x52677b){return db[_0x602b('0x2b')]['find']({'where':{'id':_0x1f72b0[_0x602b('0x43')]['id']}})[_0x602b('0x22')](handleEntityNotFound(_0x52677b,null))[_0x602b('0x22')](removeEntity(_0x52677b,null))[_0x602b('0x46')](handleError(_0x52677b,null));};exports[_0x602b('0x49')]=function(_0x1c27d3,_0x32343b){return db['ChatQueueReport'][_0x602b('0x49')]()[_0x602b('0x22')](respondWithResult(_0x32343b,null))[_0x602b('0x46')](handleError(_0x32343b,null));};
\ No newline at end of file
+var _0xf8af=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','ChatQueueReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filter','merge','type','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv'];(function(_0x5dd48d,_0x358c1f){var _0x2a45e9=function(_0x1823b1){while(--_0x1823b1){_0x5dd48d['push'](_0x5dd48d['shift']());}};_0x2a45e9(++_0x358c1f);}(_0xf8af,0x8b));var _0xff8a=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xf8af[_0x2be8c2];return _0x97f531;};'use strict';var emlformat=require(_0xff8a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xff8a('0x1'));var jsonpatch=require(_0xff8a('0x2'));var rp=require(_0xff8a('0x3'));var moment=require(_0xff8a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xff8a('0x5'));var util=require(_0xff8a('0x6'));var path=require(_0xff8a('0x7'));var sox=require(_0xff8a('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xff8a('0x9'));var _=require('lodash');var squel=require(_0xff8a('0xa'));var crypto=require(_0xff8a('0xb'));var jsforce=require(_0xff8a('0xc'));var deskjs=require(_0xff8a('0xd'));var toCsv=require(_0xff8a('0xe'));var querystring=require(_0xff8a('0xf'));var Papa=require(_0xff8a('0x10'));var Redis=require(_0xff8a('0x11'));var authService=require(_0xff8a('0x12'));var qs=require(_0xff8a('0x13'));var as=require(_0xff8a('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xff8a('0x15'))(_0xff8a('0x16'));var utils=require(_0xff8a('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xff8a('0x18'));var db=require(_0xff8a('0x19'))['db'];function respondWithStatusCode(_0x252271,_0x40bf06){_0x40bf06=_0x40bf06||0xcc;return function(_0x244e69){if(_0x244e69){return _0x252271['sendStatus'](_0x40bf06);}return _0x252271[_0xff8a('0x1a')](_0x40bf06)[_0xff8a('0x1b')]();};}function respondWithResult(_0xf81533,_0x1cd47d){_0x1cd47d=_0x1cd47d||0xc8;return function(_0x5d793b){if(_0x5d793b){return _0xf81533['status'](_0x1cd47d)['json'](_0x5d793b);}};}function respondWithFilteredResult(_0x4a5e6e,_0x2f83df){return function(_0x569b15){if(_0x569b15){var _0x279441=typeof _0x2f83df[_0xff8a('0x1c')]==='undefined'&&typeof _0x2f83df[_0xff8a('0x1d')]==='undefined';var _0x5ed382=_0x569b15[_0xff8a('0x1e')];var _0x68524a=_0x279441?0x0:_0x2f83df[_0xff8a('0x1c')];var _0x55a187=_0x279441?_0x569b15[_0xff8a('0x1e')]:_0x2f83df['offset']+_0x2f83df[_0xff8a('0x1d')];var _0x4bb5ec;if(_0x55a187>=_0x5ed382){_0x55a187=_0x5ed382;_0x4bb5ec=0xc8;}else{_0x4bb5ec=0xce;}_0x4a5e6e[_0xff8a('0x1a')](_0x4bb5ec);return _0x4a5e6e[_0xff8a('0x1f')](_0xff8a('0x20'),_0x68524a+'-'+_0x55a187+'/'+_0x5ed382)[_0xff8a('0x21')](_0x569b15);}return null;};}function patchUpdates(_0x145d95){return function(_0x33ee52){try{jsonpatch[_0xff8a('0x22')](_0x33ee52,_0x145d95,!![]);}catch(_0x1ba1f1){return BPromise[_0xff8a('0x23')](_0x1ba1f1);}return _0x33ee52[_0xff8a('0x24')]();};}function saveUpdates(_0x1fc147,_0x2d0fc2){return function(_0x3bb4ac){if(_0x3bb4ac){return _0x3bb4ac[_0xff8a('0x25')](_0x1fc147)[_0xff8a('0x26')](function(_0x5e7897){return _0x5e7897;});}return null;};}function removeEntity(_0x10e205,_0x491322){return function(_0x2d6d8f){if(_0x2d6d8f){return _0x2d6d8f[_0xff8a('0x27')]()['then'](function(){_0x10e205[_0xff8a('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c9ecc,_0x3f03ce){return function(_0x2c67c2){if(!_0x2c67c2){_0x1c9ecc[_0xff8a('0x28')](0x194);}return _0x2c67c2;};}function handleError(_0x375285,_0x55b267){_0x55b267=_0x55b267||0x1f4;return function(_0x2c57c9){logger[_0xff8a('0x29')](_0x2c57c9[_0xff8a('0x2a')]);if(_0x2c57c9['name']){delete _0x2c57c9[_0xff8a('0x2b')];}_0x375285[_0xff8a('0x1a')](_0x55b267)[_0xff8a('0x2c')](_0x2c57c9);};}exports[_0xff8a('0x2d')]=function(_0x38188f,_0xba33b6){var _0x20ac09={},_0x59b6d4={},_0x4ca17e={'count':0x0,'rows':[]};var _0x1fc2a8=_[_0xff8a('0x2e')](db[_0xff8a('0x2f')][_0xff8a('0x30')],function(_0x430cbd){return{'name':_0x430cbd[_0xff8a('0x31')],'type':_0x430cbd['type'][_0xff8a('0x32')]};});_0x59b6d4[_0xff8a('0x33')]=_['map'](_0x1fc2a8,_0xff8a('0x2b'));_0x59b6d4[_0xff8a('0x34')]=_[_0xff8a('0x35')](_0x38188f['query']);_0x59b6d4[_0xff8a('0x36')]=_[_0xff8a('0x37')](_0x59b6d4['model'],_0x59b6d4[_0xff8a('0x34')]);_0x20ac09[_0xff8a('0x38')]=_[_0xff8a('0x37')](_0x59b6d4[_0xff8a('0x33')],qs[_0xff8a('0x39')](_0x38188f[_0xff8a('0x34')][_0xff8a('0x39')]));_0x20ac09[_0xff8a('0x38')]=_0x20ac09[_0xff8a('0x38')]['length']?_0x20ac09[_0xff8a('0x38')]:_0x59b6d4[_0xff8a('0x33')];if(!_0x38188f['query'][_0xff8a('0x3a')](_0xff8a('0x3b'))){_0x20ac09[_0xff8a('0x1d')]=qs[_0xff8a('0x1d')](_0x38188f[_0xff8a('0x34')][_0xff8a('0x1d')]);_0x20ac09[_0xff8a('0x1c')]=qs[_0xff8a('0x1c')](_0x38188f[_0xff8a('0x34')]['offset']);}_0x20ac09['order']=qs[_0xff8a('0x3c')](_0x38188f[_0xff8a('0x34')]['sort']);_0x20ac09[_0xff8a('0x3d')]=qs[_0xff8a('0x36')](_['pick'](_0x38188f['query'],_0x59b6d4['filters']),_0x1fc2a8);if(_0x38188f[_0xff8a('0x34')][_0xff8a('0x3e')]){_0x20ac09['where']=_[_0xff8a('0x3f')](_0x20ac09[_0xff8a('0x3d')],{'$or':_[_0xff8a('0x2e')](_0x1fc2a8,function(_0x552710){if(_0x552710[_0xff8a('0x40')]!=='VIRTUAL'){var _0x2e7ac7={};_0x2e7ac7[_0x552710[_0xff8a('0x2b')]]={'$like':'%'+_0x38188f['query'][_0xff8a('0x3e')]+'%'};return _0x2e7ac7;}})});}_0x20ac09=_['merge']({},_0x20ac09,_0x38188f['options']);var _0x1ef830={'where':_0x20ac09[_0xff8a('0x3d')]};return db[_0xff8a('0x2f')][_0xff8a('0x1e')](_0x1ef830)[_0xff8a('0x26')](function(_0x4a28d0){_0x4ca17e[_0xff8a('0x1e')]=_0x4a28d0;if(_0x38188f['query'][_0xff8a('0x41')]){_0x20ac09[_0xff8a('0x42')]=[{'all':!![]}];}return db[_0xff8a('0x2f')][_0xff8a('0x43')](_0x20ac09);})[_0xff8a('0x26')](function(_0x2ab2e6){_0x4ca17e[_0xff8a('0x44')]=_0x2ab2e6;return _0x4ca17e;})['then'](respondWithFilteredResult(_0xba33b6,_0x20ac09))[_0xff8a('0x45')](handleError(_0xba33b6,null));};exports[_0xff8a('0x46')]=function(_0x2ba136,_0x273f26){var _0x2705e8={'raw':!![],'where':{'id':_0x2ba136[_0xff8a('0x47')]['id']}},_0x3a3152={};_0x3a3152[_0xff8a('0x33')]=_[_0xff8a('0x35')](db['ChatQueueReport'][_0xff8a('0x30')]);_0x3a3152['query']=_[_0xff8a('0x35')](_0x2ba136[_0xff8a('0x34')]);_0x3a3152[_0xff8a('0x36')]=_[_0xff8a('0x37')](_0x3a3152[_0xff8a('0x33')],_0x3a3152[_0xff8a('0x34')]);_0x2705e8[_0xff8a('0x38')]=_[_0xff8a('0x37')](_0x3a3152[_0xff8a('0x33')],qs[_0xff8a('0x39')](_0x2ba136[_0xff8a('0x34')]['fields']));_0x2705e8[_0xff8a('0x38')]=_0x2705e8[_0xff8a('0x38')][_0xff8a('0x48')]?_0x2705e8[_0xff8a('0x38')]:_0x3a3152[_0xff8a('0x33')];if(_0x2ba136['query'][_0xff8a('0x41')]){_0x2705e8[_0xff8a('0x42')]=[{'all':!![]}];}_0x2705e8=_[_0xff8a('0x3f')]({},_0x2705e8,_0x2ba136['options']);return db['ChatQueueReport'][_0xff8a('0x49')](_0x2705e8)[_0xff8a('0x26')](handleEntityNotFound(_0x273f26,null))[_0xff8a('0x26')](respondWithResult(_0x273f26,null))[_0xff8a('0x45')](handleError(_0x273f26,null));};exports['create']=function(_0x9873eb,_0x14c189){return db[_0xff8a('0x2f')][_0xff8a('0x4a')](_0x9873eb[_0xff8a('0x4b')],{})[_0xff8a('0x26')](respondWithResult(_0x14c189,0xc9))[_0xff8a('0x45')](handleError(_0x14c189,null));};exports[_0xff8a('0x25')]=function(_0x349573,_0x17fd91){if(_0x349573[_0xff8a('0x4b')]['id']){delete _0x349573['body']['id'];}return db[_0xff8a('0x2f')][_0xff8a('0x49')]({'where':{'id':_0x349573['params']['id']}})[_0xff8a('0x26')](handleEntityNotFound(_0x17fd91,null))[_0xff8a('0x26')](saveUpdates(_0x349573['body'],null))[_0xff8a('0x26')](respondWithResult(_0x17fd91,null))[_0xff8a('0x45')](handleError(_0x17fd91,null));};exports[_0xff8a('0x27')]=function(_0x90ea1f,_0x29cc35){return db[_0xff8a('0x2f')][_0xff8a('0x49')]({'where':{'id':_0x90ea1f[_0xff8a('0x47')]['id']}})[_0xff8a('0x26')](handleEntityNotFound(_0x29cc35,null))[_0xff8a('0x26')](removeEntity(_0x29cc35,null))[_0xff8a('0x45')](handleError(_0x29cc35,null));};exports[_0xff8a('0x4c')]=function(_0x3d415,_0x2e47ca){return db['ChatQueueReport'][_0xff8a('0x4c')]()[_0xff8a('0x26')](respondWithResult(_0x2e47ca,null))[_0xff8a('0x45')](handleError(_0x2e47ca,null));};
\ No newline at end of file
index 93e5b65..fc6ce7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid','lodash','util'];(function(_0x74c392,_0x29cc28){var _0x306791=function(_0x677d58){while(--_0x677d58){_0x74c392['push'](_0x74c392['shift']());}};_0x306791(++_0x29cc28);}(_0xe706,0xa3));var _0x6e70=function(_0x2e1821,_0x51f1be){_0x2e1821=_0x2e1821-0x0;var _0x53188c=_0xe706[_0x2e1821];return _0x53188c;};'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'));module[_0x6e70('0xa')]=function(_0x1b0389,_0x4381d1){return _0x1b0389[_0x6e70('0xb')](_0x6e70('0xc'),attributes,{'tableName':_0x6e70('0xd'),'paranoid':![],'indexes':[{'name':_0x6e70('0xe'),'fields':[_0x6e70('0xe')]}],'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(_0x427217,_0x4039b1){var _0x5b28fb=function(_0x3eaa08){while(--_0x3eaa08){_0x427217['push'](_0x427217['shift']());}};_0x5b28fb(++_0x4039b1);}(_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 a74b22c..0c92a46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec31=['then','request\x20sent','debug','stringify','error','code','message','ChatQueueReport,\x20%s,\x20%s','info','catch','ChatQueueReport','create','options','raw','CreateChatQueueReport','UpdateChatQueueReport','update','body','where','attributes','limit','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x3113b6,_0x9ce372){var _0x1b9aeb=function(_0x155fcc){while(--_0x155fcc){_0x3113b6['push'](_0x3113b6['shift']());}};_0x1b9aeb(++_0x9ce372);}(_0xec31,0xd5));var _0x1ec3=function(_0x4ef739,_0x174946){_0x4ef739=_0x4ef739-0x0;var _0xaf70bc=_0xec31[_0x4ef739];return _0xaf70bc;};'use strict';var _=require(_0x1ec3('0x0'));var util=require('util');var moment=require(_0x1ec3('0x1'));var BPromise=require(_0x1ec3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1ec3('0x3'));var db=require(_0x1ec3('0x4'))['db'];var utils=require(_0x1ec3('0x5'));var logger=require(_0x1ec3('0x6'))(_0x1ec3('0x7'));var config=require(_0x1ec3('0x8'));var jayson=require(_0x1ec3('0x9'));var client=jayson[_0x1ec3('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c8986,_0x494d23,_0x530394){return new BPromise(function(_0x2316e0,_0x26c8e9){return client['request'](_0x3c8986,_0x530394)[_0x1ec3('0xb')](function(_0x11c5e5){logger['info']('ChatQueueReport,\x20%s,\x20%s',_0x494d23,_0x1ec3('0xc'));logger[_0x1ec3('0xd')]('ChatQueueReport,\x20%s,\x20%s,\x20%s',_0x494d23,_0x1ec3('0xc'),JSON[_0x1ec3('0xe')](_0x11c5e5));if(_0x11c5e5[_0x1ec3('0xf')]){if(_0x11c5e5[_0x1ec3('0xf')][_0x1ec3('0x10')]===0x1f4){logger[_0x1ec3('0xf')]('ChatQueueReport,\x20%s,\x20%s',_0x494d23,_0x11c5e5[_0x1ec3('0xf')][_0x1ec3('0x11')]);return _0x26c8e9(_0x11c5e5[_0x1ec3('0xf')]['message']);}logger[_0x1ec3('0xf')](_0x1ec3('0x12'),_0x494d23,_0x11c5e5['error'][_0x1ec3('0x11')]);return _0x2316e0(_0x11c5e5[_0x1ec3('0xf')]['message']);}else{logger[_0x1ec3('0x13')](_0x1ec3('0x12'),_0x494d23,'request\x20sent');_0x2316e0(_0x11c5e5['result']['message']);}})[_0x1ec3('0x14')](function(_0x3d0f3c){logger[_0x1ec3('0xf')](_0x1ec3('0x12'),_0x494d23,_0x3d0f3c);_0x26c8e9(_0x3d0f3c);});});}exports['CreateChatQueueReport']=function(_0xf0d98a){var _0x3d46ae=this;return new Promise(function(_0x5ec235,_0x496aaa){return db[_0x1ec3('0x15')][_0x1ec3('0x16')](_0xf0d98a['body'],{'raw':_0xf0d98a[_0x1ec3('0x17')]?_0xf0d98a[_0x1ec3('0x17')][_0x1ec3('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x160932){logger[_0x1ec3('0x13')](_0x1ec3('0x19'),_0xf0d98a);logger[_0x1ec3('0xd')](_0x1ec3('0x19'),_0xf0d98a,JSON[_0x1ec3('0xe')](_0x160932));_0x5ec235(_0x160932);})[_0x1ec3('0x14')](function(_0x4c2731){logger[_0x1ec3('0xf')](_0x1ec3('0x19'),_0x4c2731[_0x1ec3('0x11')],_0xf0d98a);_0x496aaa(_0x3d46ae[_0x1ec3('0xf')](0x1f4,_0x4c2731[_0x1ec3('0x11')]));});});};exports[_0x1ec3('0x1a')]=function(_0x1ab501){var _0x48b2b0=this;return new Promise(function(_0x57ba1e,_0x3f2b){return db[_0x1ec3('0x15')][_0x1ec3('0x1b')](_0x1ab501[_0x1ec3('0x1c')],{'raw':_0x1ab501[_0x1ec3('0x17')]?_0x1ab501['options'][_0x1ec3('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ab501[_0x1ec3('0x17')]?_0x1ab501[_0x1ec3('0x17')][_0x1ec3('0x1d')]||null:null,'attributes':_0x1ab501[_0x1ec3('0x17')]?_0x1ab501[_0x1ec3('0x17')][_0x1ec3('0x1e')]||null:null,'limit':_0x1ab501[_0x1ec3('0x17')]?_0x1ab501['options'][_0x1ec3('0x1f')]||null:null})[_0x1ec3('0xb')](function(_0x1d1a05){logger[_0x1ec3('0x13')](_0x1ec3('0x1a'),_0x1ab501);logger[_0x1ec3('0xd')]('UpdateChatQueueReport',_0x1ab501,JSON[_0x1ec3('0xe')](_0x1d1a05));_0x57ba1e(_0x1d1a05);})[_0x1ec3('0x14')](function(_0x3b327f){logger[_0x1ec3('0xf')](_0x1ec3('0x1a'),_0x3b327f[_0x1ec3('0x11')],_0x1ab501);_0x3f2b(_0x48b2b0[_0x1ec3('0xf')](0x1f4,_0x3b327f[_0x1ec3('0x11')]));});});};
\ No newline at end of file
+var _0xa568=['util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','stringify','UpdateChatQueueReport','where','limit','lodash'];(function(_0x478200,_0x2240e2){var _0x287b43=function(_0x483ea8){while(--_0x483ea8){_0x478200['push'](_0x478200['shift']());}};_0x287b43(++_0x2240e2);}(_0xa568,0x77));var _0x8a56=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xa568[_0x46698a];return _0x356db0;};'use strict';var _=require(_0x8a56('0x0'));var util=require(_0x8a56('0x1'));var moment=require(_0x8a56('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8a56('0x3'));var db=require(_0x8a56('0x4'))['db'];var utils=require(_0x8a56('0x5'));var logger=require(_0x8a56('0x6'))(_0x8a56('0x7'));var config=require('../../config/environment');var jayson=require(_0x8a56('0x8'));var client=jayson[_0x8a56('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x43cdc5,_0x7b4622,_0x3cc8c3){return new BPromise(function(_0x325a0f,_0x195f0a){return client[_0x8a56('0xa')](_0x43cdc5,_0x3cc8c3)[_0x8a56('0xb')](function(_0x906ce4){logger[_0x8a56('0xc')](_0x8a56('0xd'),_0x7b4622,_0x8a56('0xe'));logger[_0x8a56('0xf')]('ChatQueueReport,\x20%s,\x20%s,\x20%s',_0x7b4622,_0x8a56('0xe'),JSON['stringify'](_0x906ce4));if(_0x906ce4[_0x8a56('0x10')]){if(_0x906ce4['error'][_0x8a56('0x11')]===0x1f4){logger['error'](_0x8a56('0xd'),_0x7b4622,_0x906ce4['error'][_0x8a56('0x12')]);return _0x195f0a(_0x906ce4['error'][_0x8a56('0x12')]);}logger['error'](_0x8a56('0xd'),_0x7b4622,_0x906ce4['error'][_0x8a56('0x12')]);return _0x325a0f(_0x906ce4['error'][_0x8a56('0x12')]);}else{logger[_0x8a56('0xc')]('ChatQueueReport,\x20%s,\x20%s',_0x7b4622,'request\x20sent');_0x325a0f(_0x906ce4['result'][_0x8a56('0x12')]);}})[_0x8a56('0x13')](function(_0x5ab81d){logger[_0x8a56('0x10')]('ChatQueueReport,\x20%s,\x20%s',_0x7b4622,_0x5ab81d);_0x195f0a(_0x5ab81d);});});}exports[_0x8a56('0x14')]=function(_0x1c35b3){var _0x267d08=this;return new Promise(function(_0x10695b,_0x4826a0){return db[_0x8a56('0x15')][_0x8a56('0x16')](_0x1c35b3[_0x8a56('0x17')],{'raw':_0x1c35b3[_0x8a56('0x18')]?_0x1c35b3[_0x8a56('0x18')][_0x8a56('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x5aac86){logger[_0x8a56('0xc')]('CreateChatQueueReport',_0x1c35b3);logger['debug'](_0x8a56('0x14'),_0x1c35b3,JSON[_0x8a56('0x1a')](_0x5aac86));_0x10695b(_0x5aac86);})['catch'](function(_0x17fef2){logger[_0x8a56('0x10')](_0x8a56('0x14'),_0x17fef2[_0x8a56('0x12')],_0x1c35b3);_0x4826a0(_0x267d08[_0x8a56('0x10')](0x1f4,_0x17fef2[_0x8a56('0x12')]));});});};exports[_0x8a56('0x1b')]=function(_0x39e323){var _0xb3c702=this;return new Promise(function(_0x27f25c,_0x18cf2d){return db['ChatQueueReport']['update'](_0x39e323[_0x8a56('0x17')],{'raw':_0x39e323[_0x8a56('0x18')]?_0x39e323[_0x8a56('0x18')][_0x8a56('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x39e323[_0x8a56('0x18')]?_0x39e323['options'][_0x8a56('0x1c')]||null:null,'attributes':_0x39e323[_0x8a56('0x18')]?_0x39e323[_0x8a56('0x18')]['attributes']||null:null,'limit':_0x39e323[_0x8a56('0x18')]?_0x39e323[_0x8a56('0x18')][_0x8a56('0x1d')]||null:null})[_0x8a56('0xb')](function(_0x1c5ed9){logger[_0x8a56('0xc')](_0x8a56('0x1b'),_0x39e323);logger[_0x8a56('0xf')](_0x8a56('0x1b'),_0x39e323,JSON[_0x8a56('0x1a')](_0x1c5ed9));_0x27f25c(_0x1c5ed9);})[_0x8a56('0x13')](function(_0x3fb298){logger['error'](_0x8a56('0x1b'),_0x3fb298['message'],_0x39e323);_0x18cf2d(_0xb3c702[_0x8a56('0x10')](0x1f4,_0x3fb298[_0x8a56('0x12')]));});});};
\ No newline at end of file
index 1510703..64aaaf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb8f=['post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','describe','show'];(function(_0x2c3d39,_0x276f09){var _0x36a6b6=function(_0x3640da){while(--_0x3640da){_0x2c3d39['push'](_0x2c3d39['shift']());}};_0x36a6b6(++_0x276f09);}(_0xfb8f,0x161));var _0xffb8=function(_0x3471de,_0x5de42b){_0x3471de=_0x3471de-0x0;var _0x13eaf3=_0xfb8f[_0x3471de];return _0x13eaf3;};'use strict';var multer=require(_0xffb8('0x0'));var util=require(_0xffb8('0x1'));var path=require(_0xffb8('0x2'));var timeout=require(_0xffb8('0x3'));var express=require('express');var router=express[_0xffb8('0x4')]();var fs_extra=require(_0xffb8('0x5'));var auth=require(_0xffb8('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xffb8('0x7'));var controller=require(_0xffb8('0x8'));router[_0xffb8('0x9')]('/',auth[_0xffb8('0xa')](),controller[_0xffb8('0xb')]);router[_0xffb8('0x9')](_0xffb8('0xc'),auth[_0xffb8('0xa')](),controller[_0xffb8('0xd')]);router['get']('/:id',auth[_0xffb8('0xa')](),controller[_0xffb8('0xe')]);router[_0xffb8('0xf')]('/',auth[_0xffb8('0xa')](),controller[_0xffb8('0x10')]);router[_0xffb8('0x11')](_0xffb8('0x12'),auth[_0xffb8('0xa')](),controller[_0xffb8('0x13')]);router[_0xffb8('0x14')](_0xffb8('0x12'),auth['isAuthenticated'](),controller[_0xffb8('0x15')]);module[_0xffb8('0x16')]=router;
\ No newline at end of file
+var _0xe811=['show','post','create','put','update','delete','multer','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','/:id'];(function(_0x49ca18,_0x5e6d05){var _0x145d54=function(_0x30b9be){while(--_0x30b9be){_0x49ca18['push'](_0x49ca18['shift']());}};_0x145d54(++_0x5e6d05);}(_0xe811,0x110));var _0x1e81=function(_0x10673b,_0x3d97b1){_0x10673b=_0x10673b-0x0;var _0x10d347=_0xe811[_0x10673b];return _0x10d347;};'use strict';var multer=require(_0x1e81('0x0'));var util=require('util');var path=require(_0x1e81('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1e81('0x2')]();var fs_extra=require(_0x1e81('0x3'));var auth=require(_0x1e81('0x4'));var interaction=require(_0x1e81('0x5'));var config=require(_0x1e81('0x6'));var controller=require(_0x1e81('0x7'));router[_0x1e81('0x8')]('/',auth[_0x1e81('0x9')](),controller[_0x1e81('0xa')]);router[_0x1e81('0x8')](_0x1e81('0xb'),auth[_0x1e81('0x9')](),controller['describe']);router[_0x1e81('0x8')](_0x1e81('0xc'),auth['isAuthenticated'](),controller[_0x1e81('0xd')]);router[_0x1e81('0xe')]('/',auth['isAuthenticated'](),controller[_0x1e81('0xf')]);router[_0x1e81('0x10')](_0x1e81('0xc'),auth[_0x1e81('0x9')](),controller[_0x1e81('0x11')]);router[_0x1e81('0x12')](_0x1e81('0xc'),auth[_0x1e81('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index b8944f6..beebd81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x547264,_0x1143ed){var _0x325fb5=function(_0x8e4328){while(--_0x8e4328){_0x547264['push'](_0x547264['shift']());}};_0x325fb5(++_0x1143ed);}(_0xf4eb,0xec));var _0xbf4e=function(_0x4acfcc,_0x57c331){_0x4acfcc=_0x4acfcc-0x0;var _0x5745d2=_0xf4eb[_0x4acfcc];return _0x5745d2;};'use strict';var moment=require(_0xbf4e('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xbf4e('0x1'),'agent','queue'),'allowNull':![],'defaultValue':_0xbf4e('0x2')},'transferredAt':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xbf4e('0x4')]}};
\ No newline at end of file
+var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x14349b,_0x1eb24d){var _0x34f8cb=function(_0x100008){while(--_0x100008){_0x14349b['push'](_0x14349b['shift']());}};_0x34f8cb(++_0x1eb24d);}(_0x9c44,0x178));var _0x49c4=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x9c44[_0x273c39];return _0x46d6b5;};'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 a4f1448..9812d66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb343=['set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','stack','name','send','index','ChatTransferReport','rawAttributes','fieldName','type','key','model','map','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','where','pick','VIRTUAL','filter','merge','include','findAll','rows','catch','params','options','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','ejs','fs-extra','lodash','squel','crypto','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','status','json','offset','undefined','limit','count'];(function(_0xab3c34,_0x26a51d){var _0x4352b9=function(_0x24354a){while(--_0x24354a){_0xab3c34['push'](_0xab3c34['shift']());}};_0x4352b9(++_0x26a51d);}(_0xb343,0x11d));var _0x3b34=function(_0x3c8d34,_0x57848a){_0x3c8d34=_0x3c8d34-0x0;var _0x11a091=_0xb343[_0x3c8d34];return _0x11a091;};'use strict';var emlformat=require(_0x3b34('0x0'));var rimraf=require(_0x3b34('0x1'));var zipdir=require(_0x3b34('0x2'));var jsonpatch=require(_0x3b34('0x3'));var rp=require(_0x3b34('0x4'));var moment=require(_0x3b34('0x5'));var BPromise=require(_0x3b34('0x6'));var Mustache=require(_0x3b34('0x7'));var util=require('util');var path=require(_0x3b34('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3b34('0x9'));var fs=require('fs');var fs_extra=require(_0x3b34('0xa'));var _=require(_0x3b34('0xb'));var squel=require(_0x3b34('0xc'));var crypto=require(_0x3b34('0xd'));var jsforce=require(_0x3b34('0xe'));var deskjs=require(_0x3b34('0xf'));var toCsv=require(_0x3b34('0x10'));var querystring=require(_0x3b34('0x11'));var Papa=require(_0x3b34('0x12'));var Redis=require(_0x3b34('0x13'));var authService=require(_0x3b34('0x14'));var qs=require(_0x3b34('0x15'));var as=require(_0x3b34('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3b34('0x17'))(_0x3b34('0x18'));var utils=require(_0x3b34('0x19'));var config=require(_0x3b34('0x1a'));var licenseUtil=require(_0x3b34('0x1b'));var db=require(_0x3b34('0x1c'))['db'];function respondWithStatusCode(_0x26a3b7,_0x4de551){_0x4de551=_0x4de551||0xcc;return function(_0x5b6fe2){if(_0x5b6fe2){return _0x26a3b7['sendStatus'](_0x4de551);}return _0x26a3b7[_0x3b34('0x1d')](_0x4de551)['end']();};}function respondWithResult(_0x4cb44c,_0x5f3155){_0x5f3155=_0x5f3155||0xc8;return function(_0x33d787){if(_0x33d787){return _0x4cb44c[_0x3b34('0x1d')](_0x5f3155)[_0x3b34('0x1e')](_0x33d787);}};}function respondWithFilteredResult(_0x5af54f,_0x1ae936){return function(_0x598c12){if(_0x598c12){var _0x4e83de=typeof _0x1ae936[_0x3b34('0x1f')]===_0x3b34('0x20')&&typeof _0x1ae936[_0x3b34('0x21')]===_0x3b34('0x20');var _0x112a20=_0x598c12['count'];var _0x5aae71=_0x4e83de?0x0:_0x1ae936[_0x3b34('0x1f')];var _0x5759d9=_0x4e83de?_0x598c12[_0x3b34('0x22')]:_0x1ae936[_0x3b34('0x1f')]+_0x1ae936[_0x3b34('0x21')];var _0x2751bf;if(_0x5759d9>=_0x112a20){_0x5759d9=_0x112a20;_0x2751bf=0xc8;}else{_0x2751bf=0xce;}_0x5af54f[_0x3b34('0x1d')](_0x2751bf);return _0x5af54f[_0x3b34('0x23')](_0x3b34('0x24'),_0x5aae71+'-'+_0x5759d9+'/'+_0x112a20)[_0x3b34('0x1e')](_0x598c12);}return null;};}function patchUpdates(_0x4fa2a7){return function(_0x10a5b0){try{jsonpatch[_0x3b34('0x25')](_0x10a5b0,_0x4fa2a7,!![]);}catch(_0x38b4c0){return BPromise[_0x3b34('0x26')](_0x38b4c0);}return _0x10a5b0[_0x3b34('0x27')]();};}function saveUpdates(_0x538e52,_0x307256){return function(_0x5a484a){if(_0x5a484a){return _0x5a484a[_0x3b34('0x28')](_0x538e52)[_0x3b34('0x29')](function(_0x175acb){return _0x175acb;});}return null;};}function removeEntity(_0x5902a0,_0x181075){return function(_0x4c41de){if(_0x4c41de){return _0x4c41de[_0x3b34('0x2a')]()[_0x3b34('0x29')](function(){_0x5902a0[_0x3b34('0x1d')](0xcc)[_0x3b34('0x2b')]();});}};}function handleEntityNotFound(_0x3e5791,_0x28cc9c){return function(_0x59965a){if(!_0x59965a){_0x3e5791[_0x3b34('0x2c')](0x194);}return _0x59965a;};}function handleError(_0x576153,_0x562d74){_0x562d74=_0x562d74||0x1f4;return function(_0x56ca41){logger['error'](_0x56ca41[_0x3b34('0x2d')]);if(_0x56ca41[_0x3b34('0x2e')]){delete _0x56ca41[_0x3b34('0x2e')];}_0x576153['status'](_0x562d74)[_0x3b34('0x2f')](_0x56ca41);};}exports[_0x3b34('0x30')]=function(_0xfb1f8d,_0x242909){var _0x4adb0e={},_0x5e3766={},_0x26dcec={'count':0x0,'rows':[]};var _0x2b1360=_['map'](db[_0x3b34('0x31')][_0x3b34('0x32')],function(_0x1b6ec8){return{'name':_0x1b6ec8[_0x3b34('0x33')],'type':_0x1b6ec8[_0x3b34('0x34')][_0x3b34('0x35')]};});_0x5e3766[_0x3b34('0x36')]=_[_0x3b34('0x37')](_0x2b1360,_0x3b34('0x2e'));_0x5e3766['query']=_[_0x3b34('0x38')](_0xfb1f8d[_0x3b34('0x39')]);_0x5e3766[_0x3b34('0x3a')]=_['intersection'](_0x5e3766[_0x3b34('0x36')],_0x5e3766[_0x3b34('0x39')]);_0x4adb0e[_0x3b34('0x3b')]=_[_0x3b34('0x3c')](_0x5e3766[_0x3b34('0x36')],qs[_0x3b34('0x3d')](_0xfb1f8d[_0x3b34('0x39')][_0x3b34('0x3d')]));_0x4adb0e[_0x3b34('0x3b')]=_0x4adb0e[_0x3b34('0x3b')][_0x3b34('0x3e')]?_0x4adb0e[_0x3b34('0x3b')]:_0x5e3766[_0x3b34('0x36')];if(!_0xfb1f8d['query'][_0x3b34('0x3f')](_0x3b34('0x40'))){_0x4adb0e[_0x3b34('0x21')]=qs[_0x3b34('0x21')](_0xfb1f8d[_0x3b34('0x39')][_0x3b34('0x21')]);_0x4adb0e[_0x3b34('0x1f')]=qs[_0x3b34('0x1f')](_0xfb1f8d[_0x3b34('0x39')][_0x3b34('0x1f')]);}_0x4adb0e['order']=qs['sort'](_0xfb1f8d[_0x3b34('0x39')]['sort']);_0x4adb0e[_0x3b34('0x41')]=qs[_0x3b34('0x3a')](_[_0x3b34('0x42')](_0xfb1f8d['query'],_0x5e3766['filters']),_0x2b1360);if(_0xfb1f8d[_0x3b34('0x39')]['filter']){_0x4adb0e[_0x3b34('0x41')]=_['merge'](_0x4adb0e[_0x3b34('0x41')],{'$or':_['map'](_0x2b1360,function(_0x5d268c){if(_0x5d268c[_0x3b34('0x34')]!==_0x3b34('0x43')){var _0x4e31ff={};_0x4e31ff[_0x5d268c[_0x3b34('0x2e')]]={'$like':'%'+_0xfb1f8d[_0x3b34('0x39')][_0x3b34('0x44')]+'%'};return _0x4e31ff;}})});}_0x4adb0e=_[_0x3b34('0x45')]({},_0x4adb0e,_0xfb1f8d['options']);var _0x4c6349={'where':_0x4adb0e[_0x3b34('0x41')]};return db[_0x3b34('0x31')][_0x3b34('0x22')](_0x4c6349)[_0x3b34('0x29')](function(_0x569b44){_0x26dcec[_0x3b34('0x22')]=_0x569b44;if(_0xfb1f8d[_0x3b34('0x39')]['includeAll']){_0x4adb0e[_0x3b34('0x46')]=[{'all':!![]}];}return db['ChatTransferReport'][_0x3b34('0x47')](_0x4adb0e);})[_0x3b34('0x29')](function(_0x4ceb65){_0x26dcec[_0x3b34('0x48')]=_0x4ceb65;return _0x26dcec;})[_0x3b34('0x29')](respondWithFilteredResult(_0x242909,_0x4adb0e))[_0x3b34('0x49')](handleError(_0x242909,null));};exports['show']=function(_0x5e4f3b,_0x4bf4ad){var _0x41f597={'raw':!![],'where':{'id':_0x5e4f3b[_0x3b34('0x4a')]['id']}},_0x542f5f={};_0x542f5f[_0x3b34('0x36')]=_[_0x3b34('0x38')](db['ChatTransferReport']['rawAttributes']);_0x542f5f[_0x3b34('0x39')]=_[_0x3b34('0x38')](_0x5e4f3b[_0x3b34('0x39')]);_0x542f5f[_0x3b34('0x3a')]=_['intersection'](_0x542f5f[_0x3b34('0x36')],_0x542f5f[_0x3b34('0x39')]);_0x41f597[_0x3b34('0x3b')]=_[_0x3b34('0x3c')](_0x542f5f[_0x3b34('0x36')],qs[_0x3b34('0x3d')](_0x5e4f3b[_0x3b34('0x39')][_0x3b34('0x3d')]));_0x41f597['attributes']=_0x41f597[_0x3b34('0x3b')][_0x3b34('0x3e')]?_0x41f597[_0x3b34('0x3b')]:_0x542f5f['model'];if(_0x5e4f3b[_0x3b34('0x39')]['includeAll']){_0x41f597[_0x3b34('0x46')]=[{'all':!![]}];}_0x41f597=_[_0x3b34('0x45')]({},_0x41f597,_0x5e4f3b[_0x3b34('0x4b')]);return db[_0x3b34('0x31')]['find'](_0x41f597)[_0x3b34('0x29')](handleEntityNotFound(_0x4bf4ad,null))['then'](respondWithResult(_0x4bf4ad,null))[_0x3b34('0x49')](handleError(_0x4bf4ad,null));};exports[_0x3b34('0x4c')]=function(_0x43e029,_0x1274eb){return db[_0x3b34('0x31')][_0x3b34('0x4c')](_0x43e029['body'],{})[_0x3b34('0x29')](respondWithResult(_0x1274eb,0xc9))['catch'](handleError(_0x1274eb,null));};exports['update']=function(_0x2598c1,_0x25cbdb){if(_0x2598c1['body']['id']){delete _0x2598c1[_0x3b34('0x4d')]['id'];}return db[_0x3b34('0x31')][_0x3b34('0x4e')]({'where':{'id':_0x2598c1[_0x3b34('0x4a')]['id']}})[_0x3b34('0x29')](handleEntityNotFound(_0x25cbdb,null))[_0x3b34('0x29')](saveUpdates(_0x2598c1[_0x3b34('0x4d')],null))[_0x3b34('0x29')](respondWithResult(_0x25cbdb,null))['catch'](handleError(_0x25cbdb,null));};exports['destroy']=function(_0x1eea55,_0x283184){return db[_0x3b34('0x31')]['find']({'where':{'id':_0x1eea55[_0x3b34('0x4a')]['id']}})[_0x3b34('0x29')](handleEntityNotFound(_0x283184,null))['then'](removeEntity(_0x283184,null))[_0x3b34('0x49')](handleError(_0x283184,null));};exports[_0x3b34('0x4f')]=function(_0x13d534,_0x9f761e){return db[_0x3b34('0x31')][_0x3b34('0x4f')]()[_0x3b34('0x29')](respondWithResult(_0x9f761e,null))[_0x3b34('0x49')](handleError(_0x9f761e,null));};
\ No newline at end of file
+var _0x20d9=['fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','options','ChatTransferReport','includeAll','include','findAll','catch','show','params','keys','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','apply','reject','update','then','destroy','sendStatus','stack','name','send','map','rawAttributes'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x20d9,0x66));var _0x920d=function(_0x3f1939,_0x893def){_0x3f1939=_0x3f1939-0x0;var _0x1e752a=_0x20d9[_0x3f1939];return _0x1e752a;};'use strict';var emlformat=require(_0x920d('0x0'));var rimraf=require(_0x920d('0x1'));var zipdir=require(_0x920d('0x2'));var jsonpatch=require(_0x920d('0x3'));var rp=require(_0x920d('0x4'));var moment=require(_0x920d('0x5'));var BPromise=require(_0x920d('0x6'));var Mustache=require(_0x920d('0x7'));var util=require(_0x920d('0x8'));var path=require(_0x920d('0x9'));var sox=require(_0x920d('0xa'));var csv=require(_0x920d('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x920d('0xc'));var _=require(_0x920d('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x920d('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x920d('0xf'));var Papa=require(_0x920d('0x10'));var Redis=require(_0x920d('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x920d('0x12'));var as=require(_0x920d('0x13'));var hardwareService=require(_0x920d('0x14'));var logger=require('../../config/logger')(_0x920d('0x15'));var utils=require(_0x920d('0x16'));var config=require(_0x920d('0x17'));var licenseUtil=require(_0x920d('0x18'));var db=require(_0x920d('0x19'))['db'];function respondWithStatusCode(_0x12ba33,_0x1d4ebb){_0x1d4ebb=_0x1d4ebb||0xcc;return function(_0x48f87c){if(_0x48f87c){return _0x12ba33['sendStatus'](_0x1d4ebb);}return _0x12ba33[_0x920d('0x1a')](_0x1d4ebb)[_0x920d('0x1b')]();};}function respondWithResult(_0x4e21a0,_0x34e575){_0x34e575=_0x34e575||0xc8;return function(_0x2d830d){if(_0x2d830d){return _0x4e21a0[_0x920d('0x1a')](_0x34e575)['json'](_0x2d830d);}};}function respondWithFilteredResult(_0x517cab,_0x1386e7){return function(_0x5f3057){if(_0x5f3057){var _0x44d859=typeof _0x1386e7[_0x920d('0x1c')]===_0x920d('0x1d')&&typeof _0x1386e7[_0x920d('0x1e')]==='undefined';var _0x545adb=_0x5f3057[_0x920d('0x1f')];var _0x3d95ee=_0x44d859?0x0:_0x1386e7[_0x920d('0x1c')];var _0x319f09=_0x44d859?_0x5f3057[_0x920d('0x1f')]:_0x1386e7[_0x920d('0x1c')]+_0x1386e7[_0x920d('0x1e')];var _0x22a952;if(_0x319f09>=_0x545adb){_0x319f09=_0x545adb;_0x22a952=0xc8;}else{_0x22a952=0xce;}_0x517cab['status'](_0x22a952);return _0x517cab[_0x920d('0x20')]('Content-Range',_0x3d95ee+'-'+_0x319f09+'/'+_0x545adb)['json'](_0x5f3057);}return null;};}function patchUpdates(_0x5ad344){return function(_0x1bd115){try{jsonpatch[_0x920d('0x21')](_0x1bd115,_0x5ad344,!![]);}catch(_0x395822){return BPromise[_0x920d('0x22')](_0x395822);}return _0x1bd115['save']();};}function saveUpdates(_0x20dfa1,_0x18604a){return function(_0x11a4b6){if(_0x11a4b6){return _0x11a4b6[_0x920d('0x23')](_0x20dfa1)[_0x920d('0x24')](function(_0x48cd32){return _0x48cd32;});}return null;};}function removeEntity(_0x37a5ba,_0x4b11b7){return function(_0x3ad0b1){if(_0x3ad0b1){return _0x3ad0b1[_0x920d('0x25')]()[_0x920d('0x24')](function(){_0x37a5ba[_0x920d('0x1a')](0xcc)[_0x920d('0x1b')]();});}};}function handleEntityNotFound(_0x1895b4,_0x2bc985){return function(_0x7e78fb){if(!_0x7e78fb){_0x1895b4[_0x920d('0x26')](0x194);}return _0x7e78fb;};}function handleError(_0x591961,_0xf0fd96){_0xf0fd96=_0xf0fd96||0x1f4;return function(_0x568d60){logger['error'](_0x568d60[_0x920d('0x27')]);if(_0x568d60[_0x920d('0x28')]){delete _0x568d60[_0x920d('0x28')];}_0x591961['status'](_0xf0fd96)[_0x920d('0x29')](_0x568d60);};}exports['index']=function(_0x2a286b,_0x11331c){var _0x1240ce={},_0x456fde={},_0x37c6d3={'count':0x0,'rows':[]};var _0x3fb5c1=_[_0x920d('0x2a')](db['ChatTransferReport'][_0x920d('0x2b')],function(_0x286bd5){return{'name':_0x286bd5[_0x920d('0x2c')],'type':_0x286bd5['type'][_0x920d('0x2d')]};});_0x456fde[_0x920d('0x2e')]=_['map'](_0x3fb5c1,'name');_0x456fde[_0x920d('0x2f')]=_['keys'](_0x2a286b[_0x920d('0x2f')]);_0x456fde[_0x920d('0x30')]=_[_0x920d('0x31')](_0x456fde[_0x920d('0x2e')],_0x456fde['query']);_0x1240ce[_0x920d('0x32')]=_[_0x920d('0x31')](_0x456fde[_0x920d('0x2e')],qs['fields'](_0x2a286b[_0x920d('0x2f')][_0x920d('0x33')]));_0x1240ce[_0x920d('0x32')]=_0x1240ce[_0x920d('0x32')][_0x920d('0x34')]?_0x1240ce[_0x920d('0x32')]:_0x456fde[_0x920d('0x2e')];if(!_0x2a286b[_0x920d('0x2f')][_0x920d('0x35')]('nolimit')){_0x1240ce[_0x920d('0x1e')]=qs[_0x920d('0x1e')](_0x2a286b['query'][_0x920d('0x1e')]);_0x1240ce[_0x920d('0x1c')]=qs[_0x920d('0x1c')](_0x2a286b['query']['offset']);}_0x1240ce['order']=qs['sort'](_0x2a286b[_0x920d('0x2f')][_0x920d('0x36')]);_0x1240ce[_0x920d('0x37')]=qs[_0x920d('0x30')](_[_0x920d('0x38')](_0x2a286b[_0x920d('0x2f')],_0x456fde[_0x920d('0x30')]),_0x3fb5c1);if(_0x2a286b[_0x920d('0x2f')][_0x920d('0x39')]){_0x1240ce[_0x920d('0x37')]=_['merge'](_0x1240ce[_0x920d('0x37')],{'$or':_[_0x920d('0x2a')](_0x3fb5c1,function(_0x249d73){if(_0x249d73['type']!==_0x920d('0x3a')){var _0x5c91a5={};_0x5c91a5[_0x249d73[_0x920d('0x28')]]={'$like':'%'+_0x2a286b[_0x920d('0x2f')][_0x920d('0x39')]+'%'};return _0x5c91a5;}})});}_0x1240ce=_[_0x920d('0x3b')]({},_0x1240ce,_0x2a286b[_0x920d('0x3c')]);var _0x39f677={'where':_0x1240ce[_0x920d('0x37')]};return db[_0x920d('0x3d')][_0x920d('0x1f')](_0x39f677)[_0x920d('0x24')](function(_0x3c512a){_0x37c6d3[_0x920d('0x1f')]=_0x3c512a;if(_0x2a286b['query'][_0x920d('0x3e')]){_0x1240ce[_0x920d('0x3f')]=[{'all':!![]}];}return db[_0x920d('0x3d')][_0x920d('0x40')](_0x1240ce);})[_0x920d('0x24')](function(_0x913f18){_0x37c6d3['rows']=_0x913f18;return _0x37c6d3;})[_0x920d('0x24')](respondWithFilteredResult(_0x11331c,_0x1240ce))[_0x920d('0x41')](handleError(_0x11331c,null));};exports[_0x920d('0x42')]=function(_0x354be1,_0x510b22){var _0x5bbc74={'raw':!![],'where':{'id':_0x354be1[_0x920d('0x43')]['id']}},_0x382eca={};_0x382eca[_0x920d('0x2e')]=_[_0x920d('0x44')](db[_0x920d('0x3d')][_0x920d('0x2b')]);_0x382eca[_0x920d('0x2f')]=_[_0x920d('0x44')](_0x354be1[_0x920d('0x2f')]);_0x382eca['filters']=_[_0x920d('0x31')](_0x382eca[_0x920d('0x2e')],_0x382eca[_0x920d('0x2f')]);_0x5bbc74[_0x920d('0x32')]=_[_0x920d('0x31')](_0x382eca['model'],qs[_0x920d('0x33')](_0x354be1['query']['fields']));_0x5bbc74[_0x920d('0x32')]=_0x5bbc74['attributes']['length']?_0x5bbc74[_0x920d('0x32')]:_0x382eca['model'];if(_0x354be1['query'][_0x920d('0x3e')]){_0x5bbc74[_0x920d('0x3f')]=[{'all':!![]}];}_0x5bbc74=_['merge']({},_0x5bbc74,_0x354be1['options']);return db[_0x920d('0x3d')][_0x920d('0x45')](_0x5bbc74)[_0x920d('0x24')](handleEntityNotFound(_0x510b22,null))['then'](respondWithResult(_0x510b22,null))[_0x920d('0x41')](handleError(_0x510b22,null));};exports[_0x920d('0x46')]=function(_0x18e422,_0x235b67){return db[_0x920d('0x3d')][_0x920d('0x46')](_0x18e422['body'],{})['then'](respondWithResult(_0x235b67,0xc9))[_0x920d('0x41')](handleError(_0x235b67,null));};exports[_0x920d('0x23')]=function(_0x1571b9,_0x4d6008){if(_0x1571b9[_0x920d('0x47')]['id']){delete _0x1571b9['body']['id'];}return db[_0x920d('0x3d')][_0x920d('0x45')]({'where':{'id':_0x1571b9['params']['id']}})[_0x920d('0x24')](handleEntityNotFound(_0x4d6008,null))[_0x920d('0x24')](saveUpdates(_0x1571b9['body'],null))[_0x920d('0x24')](respondWithResult(_0x4d6008,null))['catch'](handleError(_0x4d6008,null));};exports[_0x920d('0x25')]=function(_0x4f898c,_0x4137c1){return db[_0x920d('0x3d')]['find']({'where':{'id':_0x4f898c[_0x920d('0x43')]['id']}})[_0x920d('0x24')](handleEntityNotFound(_0x4137c1,null))[_0x920d('0x24')](removeEntity(_0x4137c1,null))[_0x920d('0x41')](handleError(_0x4137c1,null));};exports[_0x920d('0x48')]=function(_0x5a14cf,_0x390f44){return db[_0x920d('0x3d')]['describe']()[_0x920d('0x24')](respondWithResult(_0x390f44,null))[_0x920d('0x41')](handleError(_0x390f44,null));};
\ No newline at end of file
index ab7684f..86da23f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe789=['lodash','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports','report_chat_transfer','uniqueid'];(function(_0x543744,_0x3ec903){var _0x2e28e8=function(_0x519f50){while(--_0x519f50){_0x543744['push'](_0x543744['shift']());}};_0x2e28e8(++_0x3ec903);}(_0xe789,0x82));var _0x9e78=function(_0x440eec,_0x1e94e5){_0x440eec=_0x440eec-0x0;var _0x1e6ee5=_0xe789[_0x440eec];return _0x1e6ee5;};'use strict';var _=require(_0x9e78('0x0'));var util=require('util');var logger=require(_0x9e78('0x1'))(_0x9e78('0x2'));var moment=require(_0x9e78('0x3'));var BPromise=require(_0x9e78('0x4'));var rp=require(_0x9e78('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x9e78('0x6'));var attributes=require('./chatTransferReport.attributes');module[_0x9e78('0x7')]=function(_0x337419,_0x5abfe5){return _0x337419['define']('ChatTransferReport',attributes,{'tableName':_0x9e78('0x8'),'paranoid':![],'indexes':[{'name':_0x9e78('0x9'),'fields':[_0x9e78('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa6af=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','util'];(function(_0x545bed,_0x221e96){var _0x16c79c=function(_0x465346){while(--_0x465346){_0x545bed['push'](_0x545bed['shift']());}};_0x16c79c(++_0x221e96);}(_0xa6af,0x194));var _0xfa6a=function(_0x267f66,_0x33522f){_0x267f66=_0x267f66-0x0;var _0x5dd75f=_0xa6af[_0x267f66];return _0x5dd75f;};'use strict';var _=require(_0xfa6a('0x0'));var util=require(_0xfa6a('0x1'));var logger=require(_0xfa6a('0x2'))(_0xfa6a('0x3'));var moment=require(_0xfa6a('0x4'));var BPromise=require('bluebird');var rp=require(_0xfa6a('0x5'));var fs=require('fs');var path=require(_0xfa6a('0x6'));var rimraf=require(_0xfa6a('0x7'));var config=require(_0xfa6a('0x8'));var attributes=require('./chatTransferReport.attributes');module[_0xfa6a('0x9')]=function(_0x18c2fe,_0xc7dd43){return _0x18c2fe[_0xfa6a('0xa')](_0xfa6a('0xb'),attributes,{'tableName':_0xfa6a('0xc'),'paranoid':![],'indexes':[{'name':_0xfa6a('0xd'),'fields':[_0xfa6a('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 91bd9fe..e8b8f1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9762=['client','request','then','info','request\x20sent','debug','stringify','error','ChatTransferReport,\x20%s,\x20%s','message','catch','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x2dbce7,_0x57cb8d){var _0x3a3ed0=function(_0x28c8c6){while(--_0x28c8c6){_0x2dbce7['push'](_0x2dbce7['shift']());}};_0x3a3ed0(++_0x57cb8d);}(_0x9762,0x6f));var _0x2976=function(_0x270e9a,_0x21db5e){_0x270e9a=_0x270e9a-0x0;var _0x1d666b=_0x9762[_0x270e9a];return _0x1d666b;};'use strict';var _=require(_0x2976('0x0'));var util=require(_0x2976('0x1'));var moment=require(_0x2976('0x2'));var BPromise=require('bluebird');var rs=require(_0x2976('0x3'));var fs=require('fs');var Redis=require(_0x2976('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2976('0x5'))(_0x2976('0x6'));var config=require(_0x2976('0x7'));var jayson=require(_0x2976('0x8'));var client=jayson[_0x2976('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1ff660,_0x41f762,_0x4fd037){return new BPromise(function(_0x5b9125,_0x2bb046){return client[_0x2976('0xa')](_0x1ff660,_0x4fd037)[_0x2976('0xb')](function(_0x1dbe15){logger[_0x2976('0xc')]('ChatTransferReport,\x20%s,\x20%s',_0x41f762,_0x2976('0xd'));logger[_0x2976('0xe')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x41f762,'request\x20sent',JSON[_0x2976('0xf')](_0x1dbe15));if(_0x1dbe15[_0x2976('0x10')]){if(_0x1dbe15[_0x2976('0x10')]['code']===0x1f4){logger['error'](_0x2976('0x11'),_0x41f762,_0x1dbe15[_0x2976('0x10')][_0x2976('0x12')]);return _0x2bb046(_0x1dbe15['error']['message']);}logger['error'](_0x2976('0x11'),_0x41f762,_0x1dbe15[_0x2976('0x10')][_0x2976('0x12')]);return _0x5b9125(_0x1dbe15[_0x2976('0x10')][_0x2976('0x12')]);}else{logger[_0x2976('0xc')]('ChatTransferReport,\x20%s,\x20%s',_0x41f762,_0x2976('0xd'));_0x5b9125(_0x1dbe15['result'][_0x2976('0x12')]);}})[_0x2976('0x13')](function(_0x2489c6){logger[_0x2976('0x10')](_0x2976('0x11'),_0x41f762,_0x2489c6);_0x2bb046(_0x2489c6);});});}
\ No newline at end of file
+var _0x0da5=['info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','jayson/promise','http','request','then'];(function(_0x305b20,_0x5e57e9){var _0x26d64a=function(_0x2e17f0){while(--_0x2e17f0){_0x305b20['push'](_0x305b20['shift']());}};_0x26d64a(++_0x5e57e9);}(_0x0da5,0x19b));var _0x50da=function(_0x20ac00,_0x59a193){_0x20ac00=_0x20ac00-0x0;var _0x4979ff=_0x0da5[_0x20ac00];return _0x4979ff;};'use strict';var _=require(_0x50da('0x0'));var util=require('util');var moment=require(_0x50da('0x1'));var BPromise=require(_0x50da('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x50da('0x3'));var db=require(_0x50da('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x50da('0x5'));var client=jayson['client'][_0x50da('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x542b27,_0x10ae68,_0x4f9364){return new BPromise(function(_0x47b934,_0x375811){return client[_0x50da('0x7')](_0x542b27,_0x4f9364)[_0x50da('0x8')](function(_0x1ffe7d){logger[_0x50da('0x9')](_0x50da('0xa'),_0x10ae68,_0x50da('0xb'));logger[_0x50da('0xc')](_0x50da('0xd'),_0x10ae68,_0x50da('0xb'),JSON[_0x50da('0xe')](_0x1ffe7d));if(_0x1ffe7d['error']){if(_0x1ffe7d['error'][_0x50da('0xf')]===0x1f4){logger[_0x50da('0x10')](_0x50da('0xa'),_0x10ae68,_0x1ffe7d['error'][_0x50da('0x11')]);return _0x375811(_0x1ffe7d[_0x50da('0x10')][_0x50da('0x11')]);}logger[_0x50da('0x10')]('ChatTransferReport,\x20%s,\x20%s',_0x10ae68,_0x1ffe7d[_0x50da('0x10')][_0x50da('0x11')]);return _0x47b934(_0x1ffe7d['error'][_0x50da('0x11')]);}else{logger[_0x50da('0x9')](_0x50da('0xa'),_0x10ae68,'request\x20sent');_0x47b934(_0x1ffe7d[_0x50da('0x12')]['message']);}})[_0x50da('0x13')](function(_0x379e32){logger['error'](_0x50da('0xa'),_0x10ae68,_0x379e32);_0x375811(_0x379e32);});});}
\ No newline at end of file
index 6be5ea9..6092568 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a56=['put','update','delete','/:id','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','isAuthenticated','index','/describe','describe','get','post','create'];(function(_0x8b7417,_0x423d2f){var _0x116ce2=function(_0x5e3327){while(--_0x5e3327){_0x8b7417['push'](_0x8b7417['shift']());}};_0x116ce2(++_0x423d2f);}(_0x5a56,0x99));var _0x65a5=function(_0x4713f7,_0x1755ef){_0x4713f7=_0x4713f7-0x0;var _0x23b015=_0x5a56[_0x4713f7];return _0x23b015;};'use strict';var multer=require(_0x65a5('0x0'));var util=require(_0x65a5('0x1'));var path=require('path');var timeout=require(_0x65a5('0x2'));var express=require('express');var router=express[_0x65a5('0x3')]();var fs_extra=require(_0x65a5('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x65a5('0x5'));var config=require(_0x65a5('0x6'));var controller=require(_0x65a5('0x7'));router['get']('/',auth[_0x65a5('0x8')](),controller[_0x65a5('0x9')]);router['get'](_0x65a5('0xa'),auth[_0x65a5('0x8')](),controller[_0x65a5('0xb')]);router[_0x65a5('0xc')]('/:id',auth[_0x65a5('0x8')](),controller['show']);router[_0x65a5('0xd')]('/',auth[_0x65a5('0x8')](),controller[_0x65a5('0xe')]);router[_0x65a5('0xf')]('/:id',auth[_0x65a5('0x8')](),controller[_0x65a5('0x10')]);router[_0x65a5('0x11')](_0x65a5('0x12'),auth[_0x65a5('0x8')](),controller[_0x65a5('0x13')]);module[_0x65a5('0x14')]=router;
\ No newline at end of file
+var _0xcea1=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','exports','multer','util','path'];(function(_0x229121,_0x4cfd48){var _0x559765=function(_0x2f5d30){while(--_0x2f5d30){_0x229121['push'](_0x229121['shift']());}};_0x559765(++_0x4cfd48);}(_0xcea1,0x6b));var _0x1cea=function(_0x47c89e,_0x18692c){_0x47c89e=_0x47c89e-0x0;var _0x1de51e=_0xcea1[_0x47c89e];return _0x1de51e;};'use strict';var multer=require(_0x1cea('0x0'));var util=require(_0x1cea('0x1'));var path=require(_0x1cea('0x2'));var timeout=require(_0x1cea('0x3'));var express=require(_0x1cea('0x4'));var router=express[_0x1cea('0x5')]();var fs_extra=require(_0x1cea('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x1cea('0x7'));var config=require(_0x1cea('0x8'));var controller=require('./chatTransferReport.controller');router[_0x1cea('0x9')]('/',auth[_0x1cea('0xa')](),controller[_0x1cea('0xb')]);router[_0x1cea('0x9')](_0x1cea('0xc'),auth[_0x1cea('0xa')](),controller[_0x1cea('0xd')]);router[_0x1cea('0x9')](_0x1cea('0xe'),auth[_0x1cea('0xa')](),controller[_0x1cea('0xf')]);router[_0x1cea('0x10')]('/',auth[_0x1cea('0xa')](),controller[_0x1cea('0x11')]);router[_0x1cea('0x12')](_0x1cea('0xe'),auth['isAuthenticated'](),controller[_0x1cea('0x13')]);router[_0x1cea('0x14')](_0x1cea('0xe'),auth[_0x1cea('0xa')](),controller['destroy']);module[_0x1cea('0x15')]=router;
\ No newline at end of file
index adf1a8a..4539a3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6359=['System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','sequelize','randomstring','exports','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','squared','rounded','We\x20are\x20here!','Send','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','star','thumb','stringify','input','name','text','getDataValue','onlineForm','setDataValue','textarea','Comments','Leave\x20your\x20comments','offlineForm','parse','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','bottom_right','alternate','#fafafa'];(function(_0x3a0863,_0x4cd5ef){var _0x85c557=function(_0x3011cb){while(--_0x3011cb){_0x3a0863['push'](_0x3a0863['shift']());}};_0x85c557(++_0x4cd5ef);}(_0x6359,0x71));var _0x9635=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x6359[_0x19950b];return _0x3c6b41;};'use strict';var Sequelize=require(_0x9635('0x0'));var rs=require(_0x9635('0x1'));module[_0x9635('0x2')]={'name':{'type':Sequelize[_0x9635('0x3')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x9635('0x4')},'description':{'type':Sequelize[_0x9635('0x3')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0x9635('0x5')},'mapKeyOffline':{'type':Sequelize[_0x9635('0x3')],'defaultValue':_0x9635('0x5')},'key':{'type':Sequelize[_0x9635('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x9635('0x3')],'defaultValue':_0x9635('0x6')},'customerAlias':{'type':Sequelize[_0x9635('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x9635('0x3')],'allowNull':![],'defaultValue':_0x9635('0x7'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x9635('0x3')],'allowNull':![],'defaultValue':_0x9635('0x7'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x9635('0x3')],'allowNull':![],'defaultValue':_0x9635('0x8'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x9635('0x9')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x9635('0x3')]},'animation':{'type':Sequelize[_0x9635('0xa')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x9635('0xb')]('rounded',_0x9635('0xc')),'defaultValue':_0x9635('0xd')},'header_online':{'type':Sequelize['STRING'],'defaultValue':_0x9635('0xe')},'start_chat_button':{'type':Sequelize[_0x9635('0x3')],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize[_0x9635('0x3')],'defaultValue':_0x9635('0xf')},'header_offline':{'type':Sequelize[_0x9635('0x3')],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize[_0x9635('0xa')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x9635('0x9')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x9635('0x3')],'defaultValue':_0x9635('0x10')},'defaultWhiteLabel':{'type':Sequelize[_0x9635('0xa')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x9635('0x11')]},'closingQuestion':{'type':Sequelize[_0x9635('0x3')],'defaultValue':_0x9635('0x12')},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':_0x9635('0x13')},'formSubmitFailureMessage':{'type':Sequelize[_0x9635('0x3')],'defaultValue':_0x9635('0x14')},'noteTitle':{'type':Sequelize[_0x9635('0x3')],'defaultValue':_0x9635('0x15')},'placeholderMessage':{'type':Sequelize[_0x9635('0x3')],'defaultValue':_0x9635('0x16')},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x9635('0x17')},'closingMessageButton':{'type':Sequelize[_0x9635('0x3')],'defaultValue':_0x9635('0xf')},'skipMessageButton':{'type':Sequelize[_0x9635('0x3')],'defaultValue':_0x9635('0x18')},'conditionAgreement':{'type':Sequelize[_0x9635('0xa')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x9635('0xa')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x9635('0xa')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x9635('0xa')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x9635('0x3')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0x9635('0xb')](_0x9635('0x19'),_0x9635('0x1a')),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x9635('0x11')],'defaultValue':function(){return JSON[_0x9635('0x1b')]({'items':[{'type':_0x9635('0x1c'),'variable':null,'config':{'placeholder':_0x9635('0x1d'),'type':_0x9635('0x1e'),'required':!![]},'props':{'title':_0x9635('0x1d'),'helpText':''}},{'type':'input','props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x9635('0x5'),'type':_0x9635('0x5')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x9635('0x1f')]('onlineForm')?JSON['parse'](this[_0x9635('0x1f')](_0x9635('0x20'))):{};},'set':function(_0x2440f0){return this[_0x9635('0x21')](_0x9635('0x20'),JSON[_0x9635('0x1b')](_0x2440f0));}},'offlineForm':{'type':Sequelize[_0x9635('0x11')],'defaultValue':function(){return JSON[_0x9635('0x1b')]({'items':[{'type':'input','props':{'title':_0x9635('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0x9635('0x5'),'type':_0x9635('0x5')},'variable':null},{'type':_0x9635('0x22'),'config':{'placeholder':_0x9635('0x23')},'props':{'title':_0x9635('0x23'),'helpText':_0x9635('0x24')}}],'fromKey':0x0});},'get':function(){return this[_0x9635('0x1f')](_0x9635('0x25'))?JSON[_0x9635('0x26')](this[_0x9635('0x1f')]('offlineForm')):{};},'set':function(_0x495834){return this[_0x9635('0x21')](_0x9635('0x25'),JSON[_0x9635('0x1b')](_0x495834));}},'token':{'type':Sequelize[_0x9635('0x3')],'defaultValue':function(){return rs[_0x9635('0x27')]();}},'autoclose':{'type':Sequelize[_0x9635('0xa')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x9635('0xa')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x9635('0x3')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x9635('0x3')]},'waitingTitle':{'type':Sequelize[_0x9635('0x3')],'defaultValue':_0x9635('0x28')},'waitingMessage':{'type':Sequelize[_0x9635('0x3')],'defaultValue':_0x9635('0x29')},'offlineMessageSubject':{'type':Sequelize[_0x9635('0x3')],'defaultValue':_0x9635('0x2a')},'offlineMessageBody':{'type':Sequelize[_0x9635('0x3')],'defaultValue':_0x9635('0x2b')},'enableUnmanagedNote':{'type':Sequelize[_0x9635('0xa')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x9635('0x3')],'defaultValue':'Your\x20request\x20has\x20not\x20been\x20processed.'},'skipUnmanaged':{'type':Sequelize[_0x9635('0x3')],'defaultValue':_0x9635('0x18')},'sendUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x9635('0xf')},'enableCustomerAttachment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x9635('0xa')],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0x9635('0x3')]},'notificationTemplate':{'type':Sequelize[_0x9635('0x11')],'defaultValue':function(){return _0x9635('0x2c');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x9635('0xa')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize['STRING'],'defaultValue':_0x9635('0x2d')},'waitForTheAssignedAgent':{'type':Sequelize[_0x9635('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0x9635('0x2e')},'verticalAlignment':{'type':Sequelize[_0x9635('0x9')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':_0x9635('0x2f')},'defaultTitle':{'type':Sequelize[_0x9635('0x3')]},'customerAvatar':{'type':Sequelize[_0x9635('0x11')]},'showCustomerAvatar':{'type':Sequelize[_0x9635('0xa')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x9635('0x9')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x9635('0x3')],'allowNull':![],'defaultValue':_0x9635('0x30'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x9635('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9635('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x9635('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x9635('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x9635('0x3')],'defaultValue':_0x9635('0x31')},'systemAvatar':{'type':Sequelize[_0x9635('0x11')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x9635('0x9')],'comment':_0x9635('0x32')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x9635('0x33'),'set':function(_0x4a5e50){if(!_0x4a5e50)this[_0x9635('0x21')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0x9635('0x34'),_0x4a5e50);}},'vidaooEscalation':{'type':Sequelize[_0x9635('0xa')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x9635('0x3')]},'vidaooTopic':{'type':Sequelize[_0x9635('0x3')],'allowNull':![],'defaultValue':_0x9635('0x35')},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize[_0x9635('0x11')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x9635('0xa')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x9635('0x11')]}};
\ No newline at end of file
+var _0x4423=['Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','randomstring','exports','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','Chat','Contact\x20us','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Send','Skip','star','thumb','input','name','text','onlineForm','parse','getDataValue','stringify','textarea','Comments','offlineForm','setDataValue','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:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','alternate','#fafafa','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion'];(function(_0x4472ad,_0x3cc44b){var _0x356bcb=function(_0x3e9475){while(--_0x3e9475){_0x4472ad['push'](_0x4472ad['shift']());}};_0x356bcb(++_0x3cc44b);}(_0x4423,0x1a9));var _0x3442=function(_0x65c50e,_0x1aa926){_0x65c50e=_0x65c50e-0x0;var _0x4573e7=_0x4423[_0x65c50e];return _0x4573e7;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x3442('0x0'));module[_0x3442('0x1')]={'name':{'type':Sequelize[_0x3442('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0x3442('0x2')],'allowNull':![],'unique':_0x3442('0x3')},'description':{'type':Sequelize['STRING']},'mapKey':{'type':Sequelize[_0x3442('0x2')],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x4')},'key':{'type':Sequelize[_0x3442('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x5')},'customerAlias':{'type':Sequelize[_0x3442('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x3442('0x2')],'allowNull':![],'defaultValue':_0x3442('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x3442('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x3442('0x2')],'allowNull':![],'defaultValue':_0x3442('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x3442('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize['STRING']},'animation':{'type':Sequelize[_0x3442('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x3442('0xa')](_0x3442('0xb'),_0x3442('0xc')),'defaultValue':_0x3442('0xb')},'header_online':{'type':Sequelize[_0x3442('0x2')],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0xd')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':'Send'},'header_offline':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0xe')},'download_transcript':{'type':Sequelize[_0x3442('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x3442('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0xf')},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x3442('0x10')]},'closingQuestion':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x11')},'formSubmitSuccessMessage':{'type':Sequelize[_0x3442('0x2')],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x12')},'noteTitle':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x13')},'placeholderMessage':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x14')},'closingMessage':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x15')},'closingMessageButton':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x16')},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x3442('0x17')},'conditionAgreement':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x3442('0x2')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0x3442('0xa')](_0x3442('0x18'),_0x3442('0x19')),'defaultValue':_0x3442('0x18')},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x3442('0x1a'),'variable':null,'config':{'placeholder':_0x3442('0x1b'),'type':_0x3442('0x1c'),'required':!![]},'props':{'title':_0x3442('0x1b'),'helpText':''}},{'type':'input','props':{'title':_0x3442('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x3442('0x4'),'type':_0x3442('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue'](_0x3442('0x1d'))?JSON[_0x3442('0x1e')](this[_0x3442('0x1f')](_0x3442('0x1d'))):{};},'set':function(_0x31aae0){return this['setDataValue']('onlineForm',JSON[_0x3442('0x20')](_0x31aae0));}},'offlineForm':{'type':Sequelize[_0x3442('0x10')],'defaultValue':function(){return JSON[_0x3442('0x20')]({'items':[{'type':_0x3442('0x1a'),'props':{'title':_0x3442('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x3442('0x4'),'type':_0x3442('0x4')},'variable':null},{'type':_0x3442('0x21'),'config':{'placeholder':_0x3442('0x22')},'props':{'title':_0x3442('0x22'),'helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this[_0x3442('0x1f')]('offlineForm')?JSON[_0x3442('0x1e')](this['getDataValue'](_0x3442('0x23'))):{};},'set':function(_0x221c66){return this[_0x3442('0x24')]('offlineForm',JSON[_0x3442('0x20')](_0x221c66));}},'token':{'type':Sequelize[_0x3442('0x2')],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize[_0x3442('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x3442('0x2')]},'forwardOffline':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x3442('0x2')]},'waitingTitle':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x25')},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x3442('0x26')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':_0x3442('0x27')},'offlineMessageBody':{'type':Sequelize['STRING'],'defaultValue':_0x3442('0x28')},'enableUnmanagedNote':{'type':Sequelize[_0x3442('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x29')},'skipUnmanaged':{'type':Sequelize[_0x3442('0x2')],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x16')},'enableCustomerAttachment':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x3442('0x10')]},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0x3442('0x2')]},'notificationTemplate':{'type':Sequelize[_0x3442('0x10')],'defaultValue':function(){return _0x3442('0x2a');}},'notificationSound':{'type':Sequelize[_0x3442('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x2b')},'waitForTheAssignedAgent':{'type':Sequelize[_0x3442('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x2c')},'verticalAlignment':{'type':Sequelize[_0x3442('0x8')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':_0x3442('0x2d')},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x3442('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x3442('0x2e'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3442('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x2f')},'systemAvatar':{'type':Sequelize[_0x3442('0x10')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3442('0x8')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![],'comment':_0x3442('0x30'),'set':function(_0x33c8be){if(!_0x33c8be)this[_0x3442('0x24')](_0x3442('0x31'),null);this[_0x3442('0x24')](_0x3442('0x32'),_0x33c8be);}},'vidaooEscalation':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x3442('0x2')]},'vidaooTopic':{'type':Sequelize[_0x3442('0x2')],'allowNull':![],'defaultValue':_0x3442('0x33')},'vidaooNote':{'type':Sequelize[_0x3442('0x2')],'defaultValue':function(){return _0x3442('0x34');}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x3442('0x10')]}};
\ No newline at end of file
index c5bbd05..914e910 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b6a=['false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Attachments','emit','userChatWebsite:save','removeAgents','userChatWebsite:remove','getAgents','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatWebsite.socket','register','jayson/promise','http','client','request','then','info','request\x20sent','stringify','error','message','ChatWebsite,\x20%s,\x20%s','result','status','json','offset','undefined','limit','count','set','Content-Range','reject','destroy','get','ChatWebsites','sendStatus','stack','name','send','index','Pause','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','options','includeAll','include','findAll','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','describe','addDisposition','Disposition','getDispositions','merge','rows','removeDispositions','ids','addAnswer','ChatWebsiteId','CannedAnswer','removeAnswers','addLogo','sitepic','file','filename','addCustomerAvatar','customerAvatar','addSystemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','custom','isNil','existsSync','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','agentAvatar','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','server/files/images/avatars/system_avatar.png','systemAvatar','notify','user-agent-parser','setUA','headers','user-agent','getResult','chat','Sequelize','ValidationError','no\x20available\x20attributes','difference','updatedAt','createdAt','CompanyId','ListId','from','from\x20is\x20mandatory','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','CmContact','Contacts','DESC','ChatApplication','account','applications','Applications','priority','asc','contact','customerIp','cf-connecting-ip','first','x-forwarded-for','split','firstName','lastName','x-real-port','referer','browser','format','version','unknown','%s\x20%s','device','vendor','%s\x20%s\x20%s','threadId','externalUrl','ChatInteraction','ContactId','interaction','spread','messageId','created','push','close','unmanaged','*,*,*,*','UserId','User','unshift','agent','forcedOwnership','Start','startRouting','EventManager','offline','files','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline','MailAccount','readFileSync','utf8','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','server','offline-chat','basename','openNewInteraction','sequelize','transaction','Attachment','bulkCreate','findOne','MailServerOut','forwardOffline','forwardOfflineAddress','Smtp','service','host','port','secure','authentication','auth','SendMail','sendMail','\x22%s\x22\x20<%s>','offlineMessageSubject','MailAccountId','mimetype','subjectOffline','email','Chat','NotifyMailAccount','attachments','remove','addInteraction','omit','getInteractions','Contact','Owner','internal','Tag','Tags','tag','Command','getSnippet','iftime\x20%s,%s','interval','timezone','indexOf','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','Interval','Intervals','getProactiveActions','License','increment','some','server/files/chat/iframe.ejs','x-real-ip','connection','remoteAddress','virtual','replace','render','verticalAlignment','color','textColor','color_button','addApplications','findAndCountAll','getApplications','addProactiveActions','chatProactiveAction','online'];(function(_0xd49b47,_0x477a1a){var _0x359658=function(_0x22348c){while(--_0x22348c){_0xd49b47['push'](_0xd49b47['shift']());}};_0x359658(++_0x477a1a);}(_0x5b6a,0x13b));var _0xa5b6=function(_0x4ad17e,_0x4cf44b){_0x4ad17e=_0x4ad17e-0x0;var _0x309136=_0x5b6a[_0x4ad17e];return _0x309136;};'use strict';var emlformat=require(_0xa5b6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa5b6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa5b6('0x2'));var moment=require(_0xa5b6('0x3'));var BPromise=require(_0xa5b6('0x4'));var Mustache=require(_0xa5b6('0x5'));var util=require(_0xa5b6('0x6'));var path=require(_0xa5b6('0x7'));var sox=require(_0xa5b6('0x8'));var csv=require(_0xa5b6('0x9'));var ejs=require(_0xa5b6('0xa'));var fs=require('fs');var fs_extra=require(_0xa5b6('0xb'));var _=require(_0xa5b6('0xc'));var squel=require('squel');var crypto=require(_0xa5b6('0xd'));var jsforce=require(_0xa5b6('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xa5b6('0x9'));var querystring=require(_0xa5b6('0xf'));var Papa=require(_0xa5b6('0x10'));var Redis=require(_0xa5b6('0x11'));var authService=require(_0xa5b6('0x12'));var qs=require(_0xa5b6('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa5b6('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xa5b6('0x15'));var config=require(_0xa5b6('0x16'));var licenseUtil=require(_0xa5b6('0x17'));var db=require(_0xa5b6('0x18'))['db'];config[_0xa5b6('0x19')]=_[_0xa5b6('0x1a')](config[_0xa5b6('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xa5b6('0x1b'))(new Redis(config[_0xa5b6('0x19')]));require(_0xa5b6('0x1c'))[_0xa5b6('0x1d')](socket);var jayson=require(_0xa5b6('0x1e'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson['client'][_0xa5b6('0x1f')]({'port':0x232a});var client9003=jayson['client'][_0xa5b6('0x1f')]({'port':0x232b});var client9001=jayson[_0xa5b6('0x20')][_0xa5b6('0x1f')]({'port':0x2329});function respondWithRpcPromise(_0x199206,_0x1a1423,_0xebba84,_0x3bd4a1){return new BPromise(function(_0x42b936,_0x40ee28){var _0x582db6=_0x3bd4a1||client;return _0x582db6[_0xa5b6('0x21')](_0x199206,_0xebba84)[_0xa5b6('0x22')](function(_0x19d0ea){logger[_0xa5b6('0x23')]('ChatWebsite,\x20%s,\x20%s',_0x1a1423,_0xa5b6('0x24'));logger['debug']('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x1a1423,_0xa5b6('0x24'),JSON[_0xa5b6('0x25')](_0x19d0ea));if(_0x19d0ea['error']){if(_0x19d0ea[_0xa5b6('0x26')]['code']===0x1f4){logger[_0xa5b6('0x26')]('ChatWebsite,\x20%s,\x20%s',_0x1a1423,_0x19d0ea[_0xa5b6('0x26')][_0xa5b6('0x27')]);return _0x40ee28(_0x19d0ea[_0xa5b6('0x26')]['message']);}logger['error'](_0xa5b6('0x28'),_0x1a1423,_0x19d0ea[_0xa5b6('0x26')]['message']);return _0x42b936(_0x19d0ea[_0xa5b6('0x26')][_0xa5b6('0x27')]);}else{logger[_0xa5b6('0x23')]('ChatWebsite,\x20%s,\x20%s',_0x1a1423,_0xa5b6('0x24'));_0x42b936(_0x19d0ea[_0xa5b6('0x29')][_0xa5b6('0x27')]);}})['catch'](function(_0x5ae5f5){logger[_0xa5b6('0x26')](_0xa5b6('0x28'),_0x1a1423,_0x5ae5f5);_0x40ee28(_0x5ae5f5);});});}function respondWithStatusCode(_0x1ddb05,_0xf3671e){_0xf3671e=_0xf3671e||0xcc;return function(_0x4c56e4){if(_0x4c56e4){return _0x1ddb05['sendStatus'](_0xf3671e);}return _0x1ddb05['status'](_0xf3671e)['end']();};}function respondWithResult(_0x315952,_0x348c68){_0x348c68=_0x348c68||0xc8;return function(_0x4ed9c4){if(_0x4ed9c4){return _0x315952[_0xa5b6('0x2a')](_0x348c68)[_0xa5b6('0x2b')](_0x4ed9c4);}};}function respondWithFilteredResult(_0x2dc3be,_0x505d8d){return function(_0x75747){if(_0x75747){var _0x499da5=typeof _0x505d8d[_0xa5b6('0x2c')]===_0xa5b6('0x2d')&&typeof _0x505d8d[_0xa5b6('0x2e')]===_0xa5b6('0x2d');var _0x3fdb52=_0x75747[_0xa5b6('0x2f')];var _0x467b93=_0x499da5?0x0:_0x505d8d[_0xa5b6('0x2c')];var _0xea85fe=_0x499da5?_0x75747[_0xa5b6('0x2f')]:_0x505d8d['offset']+_0x505d8d['limit'];var _0xd1ac3;if(_0xea85fe>=_0x3fdb52){_0xea85fe=_0x3fdb52;_0xd1ac3=0xc8;}else{_0xd1ac3=0xce;}_0x2dc3be[_0xa5b6('0x2a')](_0xd1ac3);return _0x2dc3be[_0xa5b6('0x30')](_0xa5b6('0x31'),_0x467b93+'-'+_0xea85fe+'/'+_0x3fdb52)[_0xa5b6('0x2b')](_0x75747);}return null;};}function patchUpdates(_0x1509c1){return function(_0x38cf3e){try{jsonpatch['apply'](_0x38cf3e,_0x1509c1,!![]);}catch(_0xb11d1c){return BPromise[_0xa5b6('0x32')](_0xb11d1c);}return _0x38cf3e['save']();};}function saveUpdates(_0x5a00c9,_0x2882ea){return function(_0x4d698c){if(_0x4d698c){return _0x4d698c['update'](_0x5a00c9)[_0xa5b6('0x22')](function(_0x3e85e3){return _0x3e85e3;});}return null;};}function removeEntity(_0x39f540,_0x14bddc){return function(_0x3711a1){if(_0x3711a1){return _0x3711a1[_0xa5b6('0x33')]()[_0xa5b6('0x22')](function(){var _0x14fe23=_0x3711a1[_0xa5b6('0x34')]({'plain':!![]});var _0x27544d=_0xa5b6('0x35');return db['UserProfileResource']['destroy']({'where':{'type':_0x27544d,'resourceId':_0x14fe23['id']}})['then'](function(){return _0x3711a1;});})[_0xa5b6('0x22')](function(){_0x39f540[_0xa5b6('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f894a,_0x39f37a){return function(_0x5283c5){if(!_0x5283c5){_0x1f894a[_0xa5b6('0x36')](0x194);}return _0x5283c5;};}function handleError(_0xc43248,_0x361bbe){_0x361bbe=_0x361bbe||0x1f4;return function(_0x152772){logger[_0xa5b6('0x26')](_0x152772[_0xa5b6('0x37')]);if(_0x152772[_0xa5b6('0x38')]){delete _0x152772[_0xa5b6('0x38')];}_0xc43248[_0xa5b6('0x2a')](_0x361bbe)[_0xa5b6('0x39')](_0x152772);};}exports[_0xa5b6('0x3a')]=function(_0x29e800,_0x4aa9f0){var _0x4bd6e1={'include':[{'model':db[_0xa5b6('0x3b')],'as':_0xa5b6('0x3c')}]},_0x20b848={},_0x1f74c6={'count':0x0,'rows':[]};var _0x313198=_[_0xa5b6('0x3d')](db[_0xa5b6('0x3e')][_0xa5b6('0x3f')],function(_0x11da97){return{'name':_0x11da97[_0xa5b6('0x40')],'type':_0x11da97[_0xa5b6('0x41')][_0xa5b6('0x42')]};});_0x20b848[_0xa5b6('0x43')]=_['map'](_0x313198,'name');_0x20b848[_0xa5b6('0x44')]=_[_0xa5b6('0x45')](_0x29e800[_0xa5b6('0x44')]);_0x20b848['filters']=_[_0xa5b6('0x46')](_0x20b848[_0xa5b6('0x43')],_0x20b848[_0xa5b6('0x44')]);_0x4bd6e1[_0xa5b6('0x47')]=_['intersection'](_0x20b848[_0xa5b6('0x43')],qs['fields'](_0x29e800[_0xa5b6('0x44')][_0xa5b6('0x48')]));_0x4bd6e1['attributes']=_0x4bd6e1[_0xa5b6('0x47')][_0xa5b6('0x49')]?_0x4bd6e1[_0xa5b6('0x47')]:_0x20b848[_0xa5b6('0x43')];if(!_0x29e800[_0xa5b6('0x44')][_0xa5b6('0x4a')](_0xa5b6('0x4b'))){_0x4bd6e1[_0xa5b6('0x2e')]=qs[_0xa5b6('0x2e')](_0x29e800[_0xa5b6('0x44')][_0xa5b6('0x2e')]);_0x4bd6e1[_0xa5b6('0x2c')]=qs[_0xa5b6('0x2c')](_0x29e800[_0xa5b6('0x44')]['offset']);}_0x4bd6e1[_0xa5b6('0x4c')]=qs[_0xa5b6('0x4d')](_0x29e800[_0xa5b6('0x44')][_0xa5b6('0x4d')]);_0x4bd6e1[_0xa5b6('0x4e')]=qs[_0xa5b6('0x4f')](_[_0xa5b6('0x50')](_0x29e800['query'],_0x20b848[_0xa5b6('0x4f')]),_0x313198);if(_0x29e800[_0xa5b6('0x44')][_0xa5b6('0x51')]){_0x4bd6e1['where']=_['merge'](_0x4bd6e1[_0xa5b6('0x4e')],{'$or':_[_0xa5b6('0x3d')](_0x313198,function(_0x515b26){if(_0x515b26[_0xa5b6('0x41')]!==_0xa5b6('0x52')){var _0xb71ea0={};_0xb71ea0[_0x515b26[_0xa5b6('0x38')]]={'$like':'%'+_0x29e800[_0xa5b6('0x44')][_0xa5b6('0x51')]+'%'};return _0xb71ea0;}})});}_0x4bd6e1=_['merge']({},_0x4bd6e1,_0x29e800[_0xa5b6('0x53')]);var _0x5bbf0e={'where':_0x4bd6e1['where']};return db[_0xa5b6('0x3e')][_0xa5b6('0x2f')](_0x5bbf0e)[_0xa5b6('0x22')](function(_0x5cfb1b){_0x1f74c6[_0xa5b6('0x2f')]=_0x5cfb1b;if(_0x29e800[_0xa5b6('0x44')][_0xa5b6('0x54')]){_0x4bd6e1[_0xa5b6('0x55')]=[{'all':!![]}];}return db['ChatWebsite'][_0xa5b6('0x56')](_0x4bd6e1);})[_0xa5b6('0x22')](function(_0x367b22){_0x1f74c6['rows']=_0x367b22;return _0x1f74c6;})['then'](respondWithFilteredResult(_0x4aa9f0,_0x4bd6e1))['catch'](handleError(_0x4aa9f0,null));};exports['show']=function(_0x286ad3,_0x253d3b){var _0x2baadd={'raw':![],'where':{'id':_0x286ad3['params']['id']},'include':[{'model':db[_0xa5b6('0x3b')],'as':_0xa5b6('0x3c')}]},_0x5bc642={};_0x5bc642['model']=_[_0xa5b6('0x45')](db[_0xa5b6('0x3e')][_0xa5b6('0x3f')]);_0x5bc642[_0xa5b6('0x44')]=_['keys'](_0x286ad3[_0xa5b6('0x44')]);_0x5bc642[_0xa5b6('0x4f')]=_[_0xa5b6('0x46')](_0x5bc642[_0xa5b6('0x43')],_0x5bc642['query']);_0x2baadd['attributes']=_['intersection'](_0x5bc642[_0xa5b6('0x43')],qs[_0xa5b6('0x48')](_0x286ad3[_0xa5b6('0x44')]['fields']));_0x2baadd[_0xa5b6('0x47')]=_0x2baadd[_0xa5b6('0x47')][_0xa5b6('0x49')]?_0x2baadd[_0xa5b6('0x47')]:_0x5bc642['model'];if(_0x286ad3[_0xa5b6('0x44')][_0xa5b6('0x54')]){_0x2baadd[_0xa5b6('0x55')]=[{'all':!![]}];}_0x2baadd=_['merge']({},_0x2baadd,_0x286ad3['options']);return db[_0xa5b6('0x3e')][_0xa5b6('0x57')](_0x2baadd)[_0xa5b6('0x22')](handleEntityNotFound(_0x253d3b,null))['then'](respondWithResult(_0x253d3b,null))[_0xa5b6('0x58')](handleError(_0x253d3b,null));};exports[_0xa5b6('0x59')]=function(_0x2f20eb,_0x123dd8){return db['ChatWebsite'][_0xa5b6('0x59')](_0x2f20eb[_0xa5b6('0x5a')],{})[_0xa5b6('0x22')](function(_0x37f360){var _0x215641=_0x2f20eb[_0xa5b6('0x5b')][_0xa5b6('0x34')]({'plain':!![]});if(!_0x215641)throw new Error(_0xa5b6('0x5c'));if(_0x215641['role']===_0xa5b6('0x5b')){var _0x2ec76b=_0x37f360['get']({'plain':!![]});var _0x52762a=_0xa5b6('0x35');return db[_0xa5b6('0x5d')][_0xa5b6('0x57')]({'where':{'name':_0x52762a,'userProfileId':_0x215641['userProfileId']},'raw':!![]})[_0xa5b6('0x22')](function(_0xa88541){if(_0xa88541&&_0xa88541[_0xa5b6('0x5e')]===0x0){return db[_0xa5b6('0x5f')][_0xa5b6('0x59')]({'name':_0x2ec76b[_0xa5b6('0x38')],'resourceId':_0x2ec76b['id'],'type':_0xa88541['name'],'sectionId':_0xa88541['id']},{})[_0xa5b6('0x22')](function(){return _0x37f360;});}else{return _0x37f360;}})[_0xa5b6('0x58')](function(_0x4075ea){logger[_0xa5b6('0x26')](_0xa5b6('0x60'),_0x4075ea);throw _0x4075ea;});}return _0x37f360;})[_0xa5b6('0x22')](respondWithResult(_0x123dd8,0xc9))[_0xa5b6('0x58')](handleError(_0x123dd8,null));};exports[_0xa5b6('0x61')]=function(_0x5aeecd,_0x361c07){if(_0x5aeecd['body']['id']){delete _0x5aeecd[_0xa5b6('0x5a')]['id'];}return db[_0xa5b6('0x3e')][_0xa5b6('0x57')]({'where':{'id':_0x5aeecd[_0xa5b6('0x62')]['id']},'include':[{'model':db[_0xa5b6('0x3b')],'as':_0xa5b6('0x3c')}]})[_0xa5b6('0x22')](handleEntityNotFound(_0x361c07,null))[_0xa5b6('0x22')](saveUpdates(_0x5aeecd['body'],null))[_0xa5b6('0x22')](respondWithResult(_0x361c07,null))[_0xa5b6('0x58')](handleError(_0x361c07,null));};exports[_0xa5b6('0x33')]=function(_0x224e95,_0x258860){return db[_0xa5b6('0x3e')][_0xa5b6('0x57')]({'where':{'id':_0x224e95[_0xa5b6('0x62')]['id']}})[_0xa5b6('0x22')](handleEntityNotFound(_0x258860,null))[_0xa5b6('0x22')](removeEntity(_0x258860,null))['catch'](handleError(_0x258860,null));};exports['describe']=function(_0x178434,_0x24ad3a){return db[_0xa5b6('0x3e')][_0xa5b6('0x63')]()[_0xa5b6('0x22')](respondWithResult(_0x24ad3a,null))[_0xa5b6('0x58')](handleError(_0x24ad3a,null));};exports[_0xa5b6('0x64')]=function(_0x5b244c,_0x4b39a9,_0x5acd3e){if(_0x5b244c[_0xa5b6('0x5a')]['id']){delete _0x5b244c[_0xa5b6('0x5a')]['id'];}return db[_0xa5b6('0x3e')][_0xa5b6('0x57')]({'where':{'id':_0x5b244c[_0xa5b6('0x62')]['id']}})[_0xa5b6('0x22')](handleEntityNotFound(_0x4b39a9,null))[_0xa5b6('0x22')](function(_0x59e090){if(_0x59e090){_0x5b244c[_0xa5b6('0x5a')]['ChatWebsiteId']=_0x59e090['id'];return db[_0xa5b6('0x65')]['create'](_0x5b244c[_0xa5b6('0x5a')]);}})[_0xa5b6('0x22')](respondWithResult(_0x4b39a9,null))['catch'](handleError(_0x4b39a9,null));};exports[_0xa5b6('0x66')]=function(_0x258bc3,_0x254736,_0x2febb2){var _0x4d4c9a={'raw':![],'where':{}};var _0x11ee87={};var _0x1f8830={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0x258bc3[_0xa5b6('0x62')]['id']}})[_0xa5b6('0x22')](handleEntityNotFound(_0x254736,null))[_0xa5b6('0x22')](function(_0x4f7c0b){if(_0x4f7c0b){_0x11ee87[_0xa5b6('0x43')]=_['keys'](db[_0xa5b6('0x65')][_0xa5b6('0x3f')]);_0x11ee87[_0xa5b6('0x44')]=_['keys'](_0x258bc3[_0xa5b6('0x44')]);_0x11ee87[_0xa5b6('0x4f')]=_['intersection'](_0x11ee87['model'],_0x11ee87[_0xa5b6('0x44')]);_0x4d4c9a[_0xa5b6('0x47')]=_[_0xa5b6('0x46')](_0x11ee87[_0xa5b6('0x43')],qs[_0xa5b6('0x48')](_0x258bc3[_0xa5b6('0x44')][_0xa5b6('0x48')]));_0x4d4c9a[_0xa5b6('0x47')]=_0x4d4c9a[_0xa5b6('0x47')]['length']?_0x4d4c9a[_0xa5b6('0x47')]:_0x11ee87['model'];if(!_0x258bc3[_0xa5b6('0x44')][_0xa5b6('0x4a')](_0xa5b6('0x4b'))){_0x4d4c9a[_0xa5b6('0x2e')]=qs[_0xa5b6('0x2e')](_0x258bc3[_0xa5b6('0x44')][_0xa5b6('0x2e')]);_0x4d4c9a['offset']=qs['offset'](_0x258bc3['query'][_0xa5b6('0x2c')]);}_0x4d4c9a[_0xa5b6('0x4c')]=qs[_0xa5b6('0x4d')](_0x258bc3[_0xa5b6('0x44')][_0xa5b6('0x4d')]);_0x4d4c9a[_0xa5b6('0x4e')]=qs[_0xa5b6('0x4f')](_[_0xa5b6('0x50')](_0x258bc3[_0xa5b6('0x44')],_0x11ee87[_0xa5b6('0x4f')]));_0x4d4c9a[_0xa5b6('0x4e')]['ChatWebsiteId']=_0x4f7c0b['id'];if(_0x258bc3[_0xa5b6('0x44')]['filter']){_0x4d4c9a[_0xa5b6('0x4e')]=_[_0xa5b6('0x67')](_0x4d4c9a[_0xa5b6('0x4e')],{'$or':_[_0xa5b6('0x3d')](_0x4d4c9a[_0xa5b6('0x47')],function(_0x5469ca){var _0x208890={};_0x208890[_0x5469ca]={'$like':'%'+_0x258bc3[_0xa5b6('0x44')][_0xa5b6('0x51')]+'%'};return _0x208890;})});}_0x4d4c9a=_[_0xa5b6('0x67')]({},_0x4d4c9a,_0x258bc3[_0xa5b6('0x53')]);return db['Disposition'][_0xa5b6('0x2f')]({'where':_0x4d4c9a[_0xa5b6('0x4e')]})['then'](function(_0x107bbc){_0x1f8830[_0xa5b6('0x2f')]=_0x107bbc;if(_0x258bc3[_0xa5b6('0x44')][_0xa5b6('0x54')]){_0x4d4c9a[_0xa5b6('0x55')]=[{'all':!![]}];}return db['Disposition'][_0xa5b6('0x56')](_0x4d4c9a);})['then'](function(_0x4f2979){_0x1f8830[_0xa5b6('0x68')]=_0x4f2979;return _0x1f8830;});}})[_0xa5b6('0x22')](respondWithFilteredResult(_0x254736,_0x4d4c9a))[_0xa5b6('0x58')](handleError(_0x254736,null));};exports[_0xa5b6('0x69')]=function(_0x176703,_0x237b3b,_0xb5eb0c){return db['ChatWebsite'][_0xa5b6('0x57')]({'where':{'id':_0x176703[_0xa5b6('0x62')]['id']}})['then'](handleEntityNotFound(_0x237b3b,null))[_0xa5b6('0x22')](function(_0xa4bd7d){if(_0xa4bd7d){return _0xa4bd7d[_0xa5b6('0x69')](_0x176703[_0xa5b6('0x44')][_0xa5b6('0x6a')]);}})[_0xa5b6('0x22')](respondWithStatusCode(_0x237b3b,null))['catch'](handleError(_0x237b3b,null));};exports[_0xa5b6('0x6b')]=function(_0x22dbb9,_0x1f3338,_0x4f81a0){if(_0x22dbb9[_0xa5b6('0x5a')]['id']){delete _0x22dbb9[_0xa5b6('0x5a')]['id'];}return db[_0xa5b6('0x3e')]['find']({'where':{'id':_0x22dbb9[_0xa5b6('0x62')]['id']}})[_0xa5b6('0x22')](handleEntityNotFound(_0x1f3338,null))[_0xa5b6('0x22')](function(_0x233f20){if(_0x233f20){_0x22dbb9[_0xa5b6('0x5a')][_0xa5b6('0x6c')]=_0x233f20['id'];return db[_0xa5b6('0x6d')][_0xa5b6('0x59')](_0x22dbb9[_0xa5b6('0x5a')]);}})['then'](respondWithResult(_0x1f3338,null))[_0xa5b6('0x58')](handleError(_0x1f3338,null));};exports['getAnswers']=function(_0x52154d,_0x362860,_0x4ddedf){var _0x40484a={'raw':![],'where':{}};var _0x21264d={};var _0x42a2f1={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0x52154d['params']['id']}})[_0xa5b6('0x22')](handleEntityNotFound(_0x362860,null))[_0xa5b6('0x22')](function(_0x804c8b){if(_0x804c8b){_0x21264d['model']=_[_0xa5b6('0x45')](db[_0xa5b6('0x6d')]['rawAttributes']);_0x21264d[_0xa5b6('0x44')]=_[_0xa5b6('0x45')](_0x52154d['query']);_0x21264d['filters']=_['intersection'](_0x21264d['model'],_0x21264d[_0xa5b6('0x44')]);_0x40484a['attributes']=_[_0xa5b6('0x46')](_0x21264d['model'],qs[_0xa5b6('0x48')](_0x52154d['query']['fields']));_0x40484a[_0xa5b6('0x47')]=_0x40484a['attributes'][_0xa5b6('0x49')]?_0x40484a[_0xa5b6('0x47')]:_0x21264d['model'];if(!_0x52154d[_0xa5b6('0x44')][_0xa5b6('0x4a')]('nolimit')){_0x40484a[_0xa5b6('0x2e')]=qs[_0xa5b6('0x2e')](_0x52154d[_0xa5b6('0x44')][_0xa5b6('0x2e')]);_0x40484a[_0xa5b6('0x2c')]=qs[_0xa5b6('0x2c')](_0x52154d['query'][_0xa5b6('0x2c')]);}_0x40484a[_0xa5b6('0x4c')]=qs[_0xa5b6('0x4d')](_0x52154d[_0xa5b6('0x44')][_0xa5b6('0x4d')]);_0x40484a['where']=qs['filters'](_[_0xa5b6('0x50')](_0x52154d[_0xa5b6('0x44')],_0x21264d['filters']));_0x40484a[_0xa5b6('0x4e')][_0xa5b6('0x6c')]=_0x804c8b['id'];if(_0x52154d[_0xa5b6('0x44')][_0xa5b6('0x51')]){_0x40484a[_0xa5b6('0x4e')]=_[_0xa5b6('0x67')](_0x40484a['where'],{'$or':_[_0xa5b6('0x3d')](_0x40484a[_0xa5b6('0x47')],function(_0x252197){var _0x582d85={};_0x582d85[_0x252197]={'$like':'%'+_0x52154d['query'][_0xa5b6('0x51')]+'%'};return _0x582d85;})});}_0x40484a=_[_0xa5b6('0x67')]({},_0x40484a,_0x52154d['options']);return db[_0xa5b6('0x6d')][_0xa5b6('0x2f')]({'where':_0x40484a[_0xa5b6('0x4e')]})[_0xa5b6('0x22')](function(_0xfd66a3){_0x42a2f1[_0xa5b6('0x2f')]=_0xfd66a3;if(_0x52154d[_0xa5b6('0x44')][_0xa5b6('0x54')]){_0x40484a[_0xa5b6('0x55')]=[{'all':!![]}];}return db[_0xa5b6('0x6d')][_0xa5b6('0x56')](_0x40484a);})[_0xa5b6('0x22')](function(_0x21090c){_0x42a2f1['rows']=_0x21090c;return _0x42a2f1;});}})['then'](respondWithFilteredResult(_0x362860,_0x40484a))[_0xa5b6('0x58')](handleError(_0x362860,null));};exports['removeAnswers']=function(_0x19b567,_0x138e31,_0x567f1d){return db[_0xa5b6('0x3e')][_0xa5b6('0x57')]({'where':{'id':_0x19b567[_0xa5b6('0x62')]['id']}})[_0xa5b6('0x22')](handleEntityNotFound(_0x138e31,null))[_0xa5b6('0x22')](function(_0x2656f4){if(_0x2656f4){return _0x2656f4[_0xa5b6('0x6e')](_0x19b567[_0xa5b6('0x44')][_0xa5b6('0x6a')]);}})['then'](respondWithStatusCode(_0x138e31,null))[_0xa5b6('0x58')](handleError(_0x138e31,null));};exports[_0xa5b6('0x6f')]=function(_0x205108,_0x67f30,_0x39b34a){_0x205108[_0xa5b6('0x5a')][_0xa5b6('0x70')]=_0x205108[_0xa5b6('0x71')][_0xa5b6('0x72')];return db[_0xa5b6('0x3e')][_0xa5b6('0x57')]({'where':{'id':_0x205108[_0xa5b6('0x62')]['id']}})['then'](handleEntityNotFound(_0x67f30,null))[_0xa5b6('0x22')](saveUpdates(_0x205108['body'],null))['then'](respondWithResult(_0x67f30,null))[_0xa5b6('0x58')](handleError(_0x67f30,null));};exports['addAvatar']=function(_0x3d055d,_0x380100,_0x2e5734){_0x3d055d[_0xa5b6('0x5a')]['agentAvatar']=_0x3d055d[_0xa5b6('0x71')]['filename'];return db[_0xa5b6('0x3e')][_0xa5b6('0x57')]({'where':{'id':_0x3d055d[_0xa5b6('0x62')]['id']}})['then'](handleEntityNotFound(_0x380100,null))[_0xa5b6('0x22')](saveUpdates(_0x3d055d[_0xa5b6('0x5a')],null))[_0xa5b6('0x22')](respondWithResult(_0x380100,null))[_0xa5b6('0x58')](handleError(_0x380100,null));};exports[_0xa5b6('0x73')]=function(_0x406f57,_0x182431,_0x516110){_0x406f57['body'][_0xa5b6('0x74')]=_0x406f57[_0xa5b6('0x71')][_0xa5b6('0x72')];return db[_0xa5b6('0x3e')][_0xa5b6('0x57')]({'where':{'id':_0x406f57[_0xa5b6('0x62')]['id']}})[_0xa5b6('0x22')](handleEntityNotFound(_0x182431,null))[_0xa5b6('0x22')](saveUpdates(_0x406f57['body'],null))[_0xa5b6('0x22')](respondWithResult(_0x182431,null))[_0xa5b6('0x58')](handleError(_0x182431,null));};exports[_0xa5b6('0x75')]=function(_0x1310d6,_0x5d61a1,_0x36613e){_0x1310d6['body']['systemAvatar']=_0x1310d6['file'][_0xa5b6('0x72')];return db['ChatWebsite'][_0xa5b6('0x57')]({'where':{'id':_0x1310d6[_0xa5b6('0x62')]['id']}})['then'](handleEntityNotFound(_0x5d61a1,null))['then'](saveUpdates(_0x1310d6[_0xa5b6('0x5a')],null))[_0xa5b6('0x22')](respondWithResult(_0x5d61a1,null))[_0xa5b6('0x58')](handleError(_0x5d61a1,null));};exports[_0xa5b6('0x76')]=function(_0x5870f4,_0x2de205,_0x2ba8fa){var _0x50cbb6=path[_0xa5b6('0x77')](config[_0xa5b6('0x78')],_0xa5b6('0x79'));var _0x1f2385={'where':{'id':_0x5870f4[_0xa5b6('0x62')]['id']},'attributes':['id','sitepic'],'raw':!![]};var _0xc85871=![];return require(_0xa5b6('0x17'))['getLicense']()[_0xa5b6('0x22')](function(_0x547036){if(_0x547036){_0xc85871=_0x547036[_0xa5b6('0x7a')];}})[_0xa5b6('0x22')](function(){return db[_0xa5b6('0x3e')][_0xa5b6('0x57')](_0x1f2385);})[_0xa5b6('0x22')](handleEntityNotFound(_0x2de205,null))[_0xa5b6('0x22')](function(_0x399dd1){if(_0x399dd1){if(!_[_0xa5b6('0x7b')](_0x399dd1['sitepic'])){if(fs[_0xa5b6('0x7c')](path['join'](config[_0xa5b6('0x78')],_0xa5b6('0x7d'),_0x399dd1['sitepic']))&&_0xc85871){_0x50cbb6=path[_0xa5b6('0x77')](config[_0xa5b6('0x78')],'server/files/images/logos/',_0x399dd1[_0xa5b6('0x70')]);}}return _0x2de205[_0xa5b6('0x7e')](_0x50cbb6);}})[_0xa5b6('0x58')](handleError(_0x2de205,null));};exports[_0xa5b6('0x7f')]=function(_0x4b92cf,_0x15936f,_0x26537b){var _0x503d3b=path['join'](config[_0xa5b6('0x78')],_0xa5b6('0x80'));var _0x2b442f={'where':{'id':_0x4b92cf['params']['id']},'attributes':['id',_0xa5b6('0x81')],'raw':!![]};return db[_0xa5b6('0x3e')][_0xa5b6('0x57')](_0x2b442f)['then'](handleEntityNotFound(_0x15936f,null))[_0xa5b6('0x22')](function(_0x5910d0){if(_0x5910d0){if(!_[_0xa5b6('0x7b')](_0x5910d0[_0xa5b6('0x81')])){if(fs['existsSync'](path[_0xa5b6('0x77')](config[_0xa5b6('0x78')],_0xa5b6('0x82'),_0x5910d0[_0xa5b6('0x81')]))){_0x503d3b=path[_0xa5b6('0x77')](config['root'],_0xa5b6('0x82'),_0x5910d0[_0xa5b6('0x81')]);}}return _0x15936f[_0xa5b6('0x7e')](_0x503d3b);}})[_0xa5b6('0x58')](handleError(_0x15936f,null));};exports[_0xa5b6('0x83')]=function(_0x402130,_0x57669a,_0x81134e){var _0x55619d=path[_0xa5b6('0x77')](config[_0xa5b6('0x78')],_0xa5b6('0x84'));var _0x2b5d27={'where':{'id':_0x402130['params']['id']},'attributes':['id','customerAvatar',_0xa5b6('0x85')],'raw':!![]};return db[_0xa5b6('0x3e')]['find'](_0x2b5d27)[_0xa5b6('0x22')](handleEntityNotFound(_0x57669a,null))[_0xa5b6('0x22')](function(_0x4544d4){if(_0x4544d4){if(!_['isNil'](_0x4544d4['customerAvatar'])){if(fs[_0xa5b6('0x7c')](path['join'](config[_0xa5b6('0x78')],_0xa5b6('0x82'),_0x4544d4[_0xa5b6('0x74')]))&&_0x4544d4[_0xa5b6('0x85')]){_0x55619d=path[_0xa5b6('0x77')](config['root'],_0xa5b6('0x82'),_0x4544d4['customerAvatar']);}}return _0x57669a[_0xa5b6('0x7e')](_0x55619d);}})['catch'](handleError(_0x57669a,null));};exports['getSystemAvatar']=function(_0xad5863,_0x5a9831,_0x509bf8){var _0x1c3b64=path[_0xa5b6('0x77')](config[_0xa5b6('0x78')],_0xa5b6('0x86'));var _0x3586eb={'where':{'id':_0xad5863[_0xa5b6('0x62')]['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db[_0xa5b6('0x3e')][_0xa5b6('0x57')](_0x3586eb)[_0xa5b6('0x22')](handleEntityNotFound(_0x5a9831,null))[_0xa5b6('0x22')](function(_0x4b84fe){if(_0x4b84fe){if(!_[_0xa5b6('0x7b')](_0x4b84fe[_0xa5b6('0x87')])){if(fs[_0xa5b6('0x7c')](path[_0xa5b6('0x77')](config[_0xa5b6('0x78')],'server/files/images/avatars/',_0x4b84fe['systemAvatar']))){_0x1c3b64=path[_0xa5b6('0x77')](config[_0xa5b6('0x78')],_0xa5b6('0x82'),_0x4b84fe[_0xa5b6('0x87')]);}}return _0x5a9831[_0xa5b6('0x7e')](_0x1c3b64);}})[_0xa5b6('0x58')](handleError(_0x5a9831,null));};exports[_0xa5b6('0x88')]=function(_0x56a61a,_0x820fbb,_0x32fa2d){var _0x4252d8=require(_0xa5b6('0x89'));var _0x136852=new _0x4252d8();var _0x441d1d=_0x136852[_0xa5b6('0x8a')](_0x56a61a[_0xa5b6('0x8b')][_0xa5b6('0x8c')])[_0xa5b6('0x8d')]();var _0xac568d={'body':_0x56a61a[_0xa5b6('0x5a')],'channel':_0xa5b6('0x8e')};var _0xde9b4c=[];var _0x5930f0=[];var _0x40ba66={};var _0x16461d=![];return db['CmContact'][_0xa5b6('0x63')]()['then'](function(_0x22108c){if(!_0x22108c){throw new db[(_0xa5b6('0x8f'))][(_0xa5b6('0x90'))](_0xa5b6('0x91'));}_0xde9b4c=_[_0xa5b6('0x92')](_[_0xa5b6('0x45')](_0x22108c),['createdAt',_0xa5b6('0x93')]);_0x5930f0=_[_0xa5b6('0x92')](_['keys'](_0x22108c),[_0xa5b6('0x94'),_0xa5b6('0x93'),_0xa5b6('0x95'),_0xa5b6('0x96')]);if(_0x56a61a[_0xa5b6('0x5a')]['id']){delete _0x56a61a[_0xa5b6('0x5a')]['id'];}if(_[_0xa5b6('0x7b')](_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0x97')])){throw new db[(_0xa5b6('0x8f'))][(_0xa5b6('0x90'))](_0xa5b6('0x98'));}if(_[_0xa5b6('0x7b')](_0x56a61a[_0xa5b6('0x5a')]['body'])||_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0x5a')]===''){throw new db[(_0xa5b6('0x8f'))][(_0xa5b6('0x90'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xa5b6('0x7b')](_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0x99')])){throw new db[(_0xa5b6('0x8f'))][(_0xa5b6('0x90'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5930f0);}if(!_[_0xa5b6('0x9a')](_0x5930f0,_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0x99')])){throw new db[(_0xa5b6('0x8f'))][(_0xa5b6('0x90'))](_0xa5b6('0x9b')+_0x5930f0);}_0x40ba66[_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0x99')]]=_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0x97')];})['then'](function(){return db[_0xa5b6('0x3e')][_0xa5b6('0x57')]({'where':{'id':_0x56a61a['params']['id']},'include':[{'model':db[_0xa5b6('0x9c')],'as':_0xa5b6('0x9d'),'include':[{'model':db[_0xa5b6('0x9e')],'as':_0xa5b6('0x9f'),'where':_0x40ba66,'limit':0x1,'order':[[_0xa5b6('0x93'),_0xa5b6('0xa0')]]}]},{'model':db[_0xa5b6('0xa1')],'as':'Applications'}]});})[_0xa5b6('0x22')](handleEntityNotFound(_0x820fbb,null))[_0xa5b6('0x22')](function(_0xaa2c20){if(_0xaa2c20&&_0xaa2c20[_0xa5b6('0x9d')]){_0xac568d[_0xa5b6('0xa2')]=_0xaa2c20;_0xac568d[_0xa5b6('0xa3')]=_0xaa2c20[_0xa5b6('0xa4')];_0xac568d['list']=_0xaa2c20['List'];_0xac568d[_0xa5b6('0xa3')]=_['orderBy'](_0xac568d[_0xa5b6('0xa3')],[_0xa5b6('0xa5')],[_0xa5b6('0xa6')]);if(_0xac568d[_0xa5b6('0xa2')][_0xa5b6('0xa4')]){delete _0xac568d[_0xa5b6('0xa2')]['Applications'];}if(_0xac568d[_0xa5b6('0xa2')][_0xa5b6('0x9d')]&&_0xac568d['account'][_0xa5b6('0x9d')][_0xa5b6('0x9f')][_0xa5b6('0x49')]){return _0xac568d[_0xa5b6('0xa2')][_0xa5b6('0x9d')]['Contacts'][0x0];}var _0x52fdaf=_[_0xa5b6('0x1a')](_0x56a61a[_0xa5b6('0x5a')],{'firstName':_0x56a61a['body'][_0xa5b6('0x97')],'ListId':_0xaa2c20['ListId']});_0x52fdaf[_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0x99')]]=_0x56a61a['body'][_0xa5b6('0x97')];return db[_0xa5b6('0x9e')][_0xa5b6('0x59')](_0x52fdaf,{'fields':_0xde9b4c,'raw':!![]});}})[_0xa5b6('0x22')](handleEntityNotFound(_0x820fbb,null))[_0xa5b6('0x22')](function(_0x405175){_0xac568d[_0xa5b6('0xa7')]=_0x405175;var _0x19427b=_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0xa8')];if(_0x56a61a[_0xa5b6('0x8b')][_0xa5b6('0xa9')]){_0x19427b=_0x56a61a[_0xa5b6('0x8b')][_0xa5b6('0xa9')];}else if(_0x56a61a[_0xa5b6('0x8b')]['x-forwarded-for']){_0x19427b=_[_0xa5b6('0xaa')](_0x56a61a[_0xa5b6('0x8b')][_0xa5b6('0xab')][_0xa5b6('0xac')](','));}if(_0x405175){var _0x590097={'ContactId':_0x405175['id'],'ChatWebsiteId':_0x56a61a['params']['id'],'from':(_0x405175[_0xa5b6('0xad')]||'')+'\x20'+(_0x405175[_0xa5b6('0xae')]||''),'customerIp':_0x19427b,'customerPort':_0x56a61a[_0xa5b6('0x8b')][_0xa5b6('0xaf')]?_0x56a61a[_0xa5b6('0x8b')]['x-real-port']:null,'referer':_0x56a61a['body'][_0xa5b6('0xb0')],'browserName':_0x441d1d[_0xa5b6('0xb1')][_0xa5b6('0x38')]&&_0x441d1d[_0xa5b6('0xb1')]['version']?util[_0xa5b6('0xb2')]('%s\x20%s',_0x441d1d['browser'][_0xa5b6('0x38')],_0x441d1d[_0xa5b6('0xb1')][_0xa5b6('0xb3')]):_0xa5b6('0xb4'),'browserVersion':_0x441d1d[_0xa5b6('0xb1')]['version']||_0xa5b6('0xb4'),'osName':util['format'](_0xa5b6('0xb5'),_0x441d1d['os']['name'],_0x441d1d['os']['version']),'osVersion':_0x441d1d['os']['version'],'deviceModel':_0x441d1d[_0xa5b6('0xb6')][_0xa5b6('0x43')]&&_0x441d1d[_0xa5b6('0xb6')][_0xa5b6('0xb7')]?util[_0xa5b6('0xb2')](_0xa5b6('0xb8'),_0x441d1d[_0xa5b6('0xb6')][_0xa5b6('0x43')],_0x441d1d[_0xa5b6('0xb6')][_0xa5b6('0xb7')],_0x441d1d[_0xa5b6('0xb6')][_0xa5b6('0x41')]):null,'deviceVendor':_0x441d1d[_0xa5b6('0xb6')][_0xa5b6('0xb7')],'deviceType':_0x441d1d[_0xa5b6('0xb6')][_0xa5b6('0x41')],'formData':JSON[_0xa5b6('0x25')](_0x56a61a[_0xa5b6('0x5a')])};var _0x113ba4={'ChatWebsiteId':_0x56a61a[_0xa5b6('0x62')]['id'],'closed':![]};if(_0x56a61a['body'][_0xa5b6('0xb9')]){_0x113ba4[_0xa5b6('0xb9')]=_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0xb9')];return db['ChatInteraction'][_0xa5b6('0x57')]({'where':_0x113ba4})['then'](function(_0x4e0842){if(_0x4e0842){return[_0x4e0842,![]];}_0x590097['threadId']=_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0xb9')];_0x590097[_0xa5b6('0xba')]=_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0xba')];return db[_0xa5b6('0xbb')]['create'](_0x590097)[_0xa5b6('0x22')](function(_0x4cb402){return[_0x4cb402,!![]];});});}_0x113ba4[_0xa5b6('0xbc')]=_0x405175['id'];if(_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0xbd')]&&_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0xbd')]['id']){_0x113ba4['id']=_0x56a61a['body'][_0xa5b6('0xbd')]['id'];return db[_0xa5b6('0xbb')]['find']({'where':_0x113ba4})[_0xa5b6('0x22')](function(_0x5bff99){if(_0x5bff99){return[_0x5bff99,![]];}return db[_0xa5b6('0xbb')][_0xa5b6('0x59')](_0x590097)[_0xa5b6('0x22')](function(_0xb272fa){return[_0xb272fa,!![]];});});}return db['ChatInteraction'][_0xa5b6('0x59')](_0x590097)['then'](function(_0x455ad4){return[_0x455ad4,!![]];});}})[_0xa5b6('0xbe')](function(_0x26a08a,_0x10e3bd){if(_0x26a08a){_0x16461d=_0x10e3bd;if(!_0x10e3bd){var _0x131346={'from':(_0xac568d['contact'][_0xa5b6('0xad')]||'')+'\x20'+(_0xac568d['contact'][_0xa5b6('0xae')]||'')};if(_0x56a61a['body'][_0xa5b6('0xb9')]&&_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0xbf')]&&_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0xb9')]!=_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0xbf')]){_0x131346[_0xa5b6('0xb9')]=_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0xbf')];}return _0x26a08a[_0xa5b6('0x61')](_0x131346);}else{return _0x26a08a;}}})[_0xa5b6('0x22')](function(_0x531521){_0xac568d[_0xa5b6('0xbd')]=_0x531521[_0xa5b6('0x34')]({'plain':!![]});_0xac568d['interaction'][_0xa5b6('0xc0')]=_0x16461d;if(_0xac568d[_0xa5b6('0xbd')]['created']){if(_0xac568d['account']['autoclose']){_0xac568d[_0xa5b6('0xa3')][_0xa5b6('0xc1')]({'id':0x0,'priority':_0xac568d[_0xa5b6('0xa3')][_0xa5b6('0x49')]+0x1,'app':_0xa5b6('0xc2'),'appdata':_0xa5b6('0xc3'),'interval':_0xa5b6('0xc4')});}}return db['ChatMessage'][_0xa5b6('0x59')]({'body':_0x56a61a[_0xa5b6('0x5a')][_0xa5b6('0x5a')],'ChatWebsiteId':_0x56a61a[_0xa5b6('0x62')]['id'],'ChatInteractionId':_0x531521['id'],'direction':'in','ContactId':_0xac568d['contact']['id'],'AttachmentId':_0x56a61a[_0xa5b6('0x5a')]['AttachmentId']});})[_0xa5b6('0x22')](function(_0x566cd9){_0xac568d[_0xa5b6('0x27')]=_0x566cd9;if(_0xac568d[_0xa5b6('0xbd')][_0xa5b6('0xc5')]){return db[_0xa5b6('0xc6')][_0xa5b6('0x57')]({'attributes':['id','name'],'where':{'id':_0xac568d[_0xa5b6('0xbd')][_0xa5b6('0xc5')]}})['then'](function(_0x3da97b){if(_0x3da97b){_0xac568d[_0xa5b6('0xa3')][_0xa5b6('0xc7')]({'id':0x0,'priority':0x0,'app':_0xa5b6('0xc8'),'appdata':_0x3da97b[_0xa5b6('0x38')]+','+(_0xac568d[_0xa5b6('0xa2')]['waitForTheAssignedAgent']||0xa),'interval':_0xa5b6('0xc4')});_0xac568d[_0xa5b6('0xc9')]=!![];}return respondWithRpcPromise(_0xa5b6('0xca'),'startRouting',_0xac568d);});}return respondWithRpcPromise(_0xa5b6('0xca'),_0xa5b6('0xcb'),_0xac568d);})['then'](function(_0x47586e){respondWithRpcPromise(_0xa5b6('0xcc'),'EventManager',{'event':_0xa5b6('0x88'),'message':_0x47586e},client9002);return _0x47586e;})[_0xa5b6('0x22')](respondWithResult(_0x820fbb,null))[_0xa5b6('0x58')](handleError(_0x820fbb,null));};exports[_0xa5b6('0xcd')]=function(_0x1b64b3,_0x21b7bf,_0x39ac79){var _0x49f0a7,_0x367354,_0x56d3fa;var _0x1c8bcf=[];var _0x3c4d1f=[];var _0x3de8f2={};var _0x3a2180=_0x1b64b3[_0xa5b6('0xce')]||[];var _0x1b2884=[];var _0x483285;return db['CmContact']['describe']()[_0xa5b6('0x22')](function(_0x4569be){if(!_0x4569be){throw new db['Sequelize'][(_0xa5b6('0x90'))]('no\x20available\x20attributes');}_0x3c4d1f=_[_0xa5b6('0x92')](_[_0xa5b6('0x45')](_0x4569be),[_0xa5b6('0x94'),_0xa5b6('0x93')]);_0x1c8bcf=_[_0xa5b6('0x92')](_[_0xa5b6('0x45')](_0x4569be),[_0xa5b6('0x94'),'updatedAt',_0xa5b6('0x95'),_0xa5b6('0x96')]);if(_0x1b64b3[_0xa5b6('0x5a')]['id']){delete _0x1b64b3[_0xa5b6('0x5a')]['id'];}if(_[_0xa5b6('0x7b')](_0x1b64b3[_0xa5b6('0x5a')][_0xa5b6('0x97')])){throw _0x21b7bf[_0xa5b6('0x2a')](0x1f4)[_0xa5b6('0x39')](new db[(_0xa5b6('0x8f'))][(_0xa5b6('0x90'))](_0xa5b6('0x98')));}if(_[_0xa5b6('0x7b')](_0x1b64b3[_0xa5b6('0x5a')][_0xa5b6('0x5a')])||_0x1b64b3['body'][_0xa5b6('0x5a')]===''){throw _0x21b7bf[_0xa5b6('0x2a')](0x1f4)[_0xa5b6('0x39')](new db['Sequelize'][(_0xa5b6('0x90'))](_0xa5b6('0xcf')));}if(_[_0xa5b6('0x7b')](_0x1b64b3[_0xa5b6('0x5a')]['mapKeyOffline'])){throw _0x21b7bf[_0xa5b6('0x2a')](0x1f4)[_0xa5b6('0x39')](new db['Sequelize'][(_0xa5b6('0x90'))](_0xa5b6('0xd0')+_0x1c8bcf));}if(!_['includes'](_0x1c8bcf,_0x1b64b3['body']['mapKeyOffline'])){throw _0x21b7bf['status'](0x1f4)[_0xa5b6('0x39')](new db[(_0xa5b6('0x8f'))][(_0xa5b6('0x90'))](_0xa5b6('0xd1')+_0x1c8bcf));}_0x3de8f2[_0x1b64b3['body'][_0xa5b6('0xd2')]]=_0x1b64b3[_0xa5b6('0x5a')]['from'];})['then'](function(){return db[_0xa5b6('0x3e')][_0xa5b6('0x57')]({'where':{'id':_0x1b64b3['params']['id']},'include':[{'model':db['CmList'],'as':_0xa5b6('0x9d')},{'model':db['MailAccount'],'as':_0xa5b6('0xd3')}]});})[_0xa5b6('0x22')](handleEntityNotFound(_0x21b7bf,null))[_0xa5b6('0x22')](function(_0x26fee9){if(_0x26fee9&&_0x26fee9[_0xa5b6('0x9d')]){_0x367354=_0x26fee9;var _0x5ce34e=_[_0xa5b6('0x1a')](_0x1b64b3[_0xa5b6('0x5a')],{'firstName':_0x1b64b3['body'][_0xa5b6('0x97')],'phone':_0x1b64b3['body'][_0xa5b6('0x97')],'ListId':_0x26fee9['ListId']});_0x5ce34e[_0x1b64b3[_0xa5b6('0x5a')]['mapKeyOffline']]=_0x1b64b3[_0xa5b6('0x5a')][_0xa5b6('0x97')];return db['CmContact']['findOrCreate']({'where':_0x3de8f2,'defaults':_0x5ce34e});}})[_0xa5b6('0xbe')](function(_0x2c2ed1){if(_0x2c2ed1){_0x56d3fa=_0x2c2ed1;var _0x44a7f5=fs[_0xa5b6('0xd4')](path[_0xa5b6('0x77')](config[_0xa5b6('0x78')],'server/files/templates/chatOfflineMessage.ejs'),_0xa5b6('0xd5'));var _0x242ef0=ejs['render'](_0x44a7f5,{'body':_[_0xa5b6('0xd6')](_0x1b64b3[_0xa5b6('0x5a')][_0xa5b6('0x5a')]),'bodyTitle':_0x367354[_0xa5b6('0xd7')]});return db[_0xa5b6('0xd8')][_0xa5b6('0x59')]({'body':_0x242ef0,'ContactId':_0x2c2ed1['id'],'ChatWebsiteId':_0x367354['id']});}})[_0xa5b6('0x22')](function(_0x1e91cd){_0x483285=_0x1e91cd;if(_0x3a2180['length']){var _0x40c7d5=_0x3a2180[_0xa5b6('0x3d')](function(_0x13d14d){return{'name':_0x13d14d[_0xa5b6('0xd9')],'basename':_0x13d14d[_0xa5b6('0x72')],'type':_0x13d14d['mimetype'],'ChatOfflineMessageId':_0x1e91cd['id']};});_0x1b2884=_0x40c7d5[_0xa5b6('0x3d')](_0x462c3d=>{var _0x50ff0a={'filename':_0x462c3d[_0xa5b6('0x38')],'path':path[_0xa5b6('0x77')](config[_0xa5b6('0x78')],_0xa5b6('0xda'),_0xa5b6('0xce'),'attachments',_0xa5b6('0xdb'),_0x462c3d[_0xa5b6('0xdc')])};return _0x50ff0a;});if(!_0x367354[_0xa5b6('0xdd')]){return db[_0xa5b6('0xde')][_0xa5b6('0xdf')](function(_0xf5c923){return db[_0xa5b6('0xe0')][_0xa5b6('0xe1')](_0x40c7d5,{'transaction':_0xf5c923});});}}})[_0xa5b6('0x22')](function(){if(_0x483285){_0x49f0a7=_0x483285;return db[_0xa5b6('0xd3')][_0xa5b6('0xe2')]({'where':{'active':!![]},'include':[{'model':db[_0xa5b6('0xe3')],'as':'Smtp','raw':!![]}]});}})[_0xa5b6('0x22')](function(_0x170652){if(_0x170652&&_0x170652['Smtp']&&_0x367354[_0xa5b6('0xe4')]&&_0x367354[_0xa5b6('0xe5')]){var _0x23e2f0={'tls':{'rejectUnauthorized':![]}};if(_0x170652[_0xa5b6('0xe6')][_0xa5b6('0xe7')]){_0x23e2f0[_0xa5b6('0xe7')]=_0x170652[_0xa5b6('0xe6')][_0xa5b6('0xe7')];}else{_0x23e2f0[_0xa5b6('0xe8')]=_0x170652[_0xa5b6('0xe6')][_0xa5b6('0xe8')];_0x23e2f0['port']=_0x170652[_0xa5b6('0xe6')][_0xa5b6('0xe9')];_0x23e2f0[_0xa5b6('0xea')]=_0x170652[_0xa5b6('0xe6')]['secure'];}if(_0x170652[_0xa5b6('0xe6')][_0xa5b6('0xeb')]){_0x23e2f0[_0xa5b6('0xec')]={'user':_0x170652['Smtp'][_0xa5b6('0x5b')],'pass':_0x170652[_0xa5b6('0xe6')]['pass']};}return respondWithRpcPromise(_0xa5b6('0xed'),_0xa5b6('0xee'),{'account':_0x23e2f0,'message':{'from':util['format'](_0xa5b6('0xef'),_0x170652[_0xa5b6('0x38')],_0x170652['email']||_0x170652[_0xa5b6('0xe6')][_0xa5b6('0x5b')]),'to':_0x367354['forwardOfflineAddress'],'subject':_0x367354[_0xa5b6('0xf0')],'html':_0x49f0a7[_0xa5b6('0x5a')],'attachments':_0x1b2884}},client9003)[_0xa5b6('0x22')](function(){return _0x49f0a7;})[_0xa5b6('0x58')](function(_0x4d734c){console[_0xa5b6('0x26')](_0x4d734c);});}})[_0xa5b6('0x22')](function(){if(_0x367354&&_0x367354[_0xa5b6('0xdd')]&&_0x367354[_0xa5b6('0xf1')]){var _0x3505be=[];if(_0x3a2180[_0xa5b6('0x49')]){_0x3505be=_0x3a2180[_0xa5b6('0x3d')](function(_0x4ee007){return{'name':_0x4ee007[_0xa5b6('0xd9')],'basename':_0x4ee007['filename'],'type':_0x4ee007[_0xa5b6('0xf2')],'ChatOfflineMessageId':_0x483285['id']};});}var _0x3408f8;if(!_[_0xa5b6('0x7b')](_0x367354[_0xa5b6('0xf3')])){var _0x4831ff=_[_0xa5b6('0x3d')](_0x1b64b3[_0xa5b6('0x5a')],function(_0x541a82){return _0x541a82;});var _0x50f3c2=_['toPairsIn'](_0x4831ff)[0x0];var _0x10b1dd=_['mapValues'](_0x50f3c2,function(_0x1b9317){return _0x1b9317;});_0x3408f8=_0x10b1dd[0x1][_0x367354[_0xa5b6('0xf3')]];}var _0x4aa34b={'from':_0x56d3fa[_0xa5b6('0xf4')],'firstName':_0x56d3fa[_0xa5b6('0xad')],'lastName':_0x56d3fa[_0xa5b6('0xae')],'mapKey':'email','message':{'from':_0x56d3fa[_0xa5b6('0xf4')],'to':_0x367354[_0xa5b6('0xd3')][_0xa5b6('0xf4')],'cc':'','subject':_[_0xa5b6('0x7b')](_0x3408f8)?_0x367354[_0xa5b6('0xf0')]:_0x3408f8,'messageId':'','sentAt':new Date(),'attach':_0x3505be[_0xa5b6('0x49')],'attachments':_0x3505be,'originChannel':_0xa5b6('0xf5'),'ChatWebsiteId':_0x367354['id'],'ChatOfflineMessageId':_0x49f0a7['id'],'originTo':_0x367354[_0xa5b6('0xd3')][_0xa5b6('0xf4')]},'body':_0x49f0a7[_0xa5b6('0x5a')]};var _0x16b6ad={'account':{'id':_0x367354[_0xa5b6('0xf1')]},'body':_0x4aa34b,'log':_0xa5b6('0xf6')};return respondWithRpcPromise('NotifyMailAccount','notifyMail',_0x16b6ad,client9001)['then'](function(){return _0x49f0a7;})[_0xa5b6('0x58')](function(_0x32521f){console[_0xa5b6('0x26')](_0x32521f);});}return;})[_0xa5b6('0x22')](function(){if(_0x49f0a7){return _0x49f0a7;}})[_0xa5b6('0x22')](respondWithResult(_0x21b7bf,null))[_0xa5b6('0x58')](function(_0x49b2b7){console[_0xa5b6('0x26')](_0xa5b6('0x58'),_0x49b2b7);for(var _0x3cf73f of _0x3a2180){var _0x175e8f=path['join'](config[_0xa5b6('0x78')],_0xa5b6('0xda'),'files',_0xa5b6('0xf7'),'offline-chat',_0x3cf73f[_0xa5b6('0x72')]);fs_extra[_0xa5b6('0xf8')](_0x175e8f)[_0xa5b6('0x58')](function(_0x4c557d){console[_0xa5b6('0x26')]('Could\x20not\x20remove\x20attachment\x20file',_0x175e8f,_0x4c557d);});}});};exports[_0xa5b6('0xf9')]=function(_0x5a653f,_0x5d1ea5,_0x5b95c1){return db[_0xa5b6('0xbb')][_0xa5b6('0x57')]({'where':{'id':_0x5a653f[_0xa5b6('0x62')]['id']}})['then'](handleEntityNotFound(_0x5d1ea5,null))[_0xa5b6('0x22')](function(_0x46b78a){if(_0x46b78a){return _0x46b78a[_0xa5b6('0xf9')](_0x5a653f['body'][_0xa5b6('0x6a')],_[_0xa5b6('0xfa')](_0x5a653f[_0xa5b6('0x5a')],[_0xa5b6('0x6a'),'id'])||{});}})[_0xa5b6('0x22')](respondWithResult(_0x5d1ea5,null))['catch'](handleError(_0x5d1ea5,null));};exports[_0xa5b6('0xfb')]=function(_0x22adab,_0x385076,_0x36207a){var _0x21acb9={'raw':![],'where':{}};var _0x478a79={};var _0x373d29={'count':0x0,'rows':[]};return db[_0xa5b6('0x3e')][_0xa5b6('0xe2')]({'where':{'id':_0x22adab[_0xa5b6('0x62')]['id']}})['then'](handleEntityNotFound(_0x385076,null))[_0xa5b6('0x22')](function(_0xe07dfa){if(_0xe07dfa){_0x478a79['model']=_['keys'](db[_0xa5b6('0xbb')][_0xa5b6('0x3f')]);_0x478a79[_0xa5b6('0x44')]=_[_0xa5b6('0x45')](_0x22adab[_0xa5b6('0x44')]);_0x478a79[_0xa5b6('0x4f')]=_[_0xa5b6('0x46')](_0x478a79[_0xa5b6('0x43')],_0x478a79['query']);_0x21acb9[_0xa5b6('0x47')]=_[_0xa5b6('0x46')](_0x478a79[_0xa5b6('0x43')],qs['fields'](_0x22adab[_0xa5b6('0x44')][_0xa5b6('0x48')]));_0x21acb9[_0xa5b6('0x47')]=_0x21acb9[_0xa5b6('0x47')][_0xa5b6('0x49')]?_0x21acb9[_0xa5b6('0x47')]:_0x478a79[_0xa5b6('0x43')];if(!_0x22adab['query'][_0xa5b6('0x4a')](_0xa5b6('0x4b'))){_0x21acb9[_0xa5b6('0x2e')]=qs[_0xa5b6('0x2e')](_0x22adab[_0xa5b6('0x44')][_0xa5b6('0x2e')]);_0x21acb9[_0xa5b6('0x2c')]=qs[_0xa5b6('0x2c')](_0x22adab['query'][_0xa5b6('0x2c')]);}_0x21acb9[_0xa5b6('0x4c')]=qs[_0xa5b6('0x4d')](_0x22adab[_0xa5b6('0x44')][_0xa5b6('0x4d')]);_0x21acb9[_0xa5b6('0x4e')]=qs[_0xa5b6('0x4f')](_[_0xa5b6('0x50')](_0x22adab[_0xa5b6('0x44')],_0x478a79[_0xa5b6('0x4f')]));_0x21acb9[_0xa5b6('0x4e')][_0xa5b6('0x6c')]=_0xe07dfa['id'];if(_0x22adab[_0xa5b6('0x44')][_0xa5b6('0x51')]){_0x21acb9['where']=_[_0xa5b6('0x67')](_0x21acb9[_0xa5b6('0x4e')],{'$or':_['map'](_0x21acb9[_0xa5b6('0x47')],function(_0x2a4037){var _0x2099c1={};_0x2099c1[_0x2a4037]={'$like':'%'+_0x22adab[_0xa5b6('0x44')][_0xa5b6('0x51')]+'%'};return _0x2099c1;})});}_0x21acb9=_['merge']({},_0x21acb9,_0x22adab['options']);return db[_0xa5b6('0xbb')][_0xa5b6('0x2f')]({'where':_0x21acb9[_0xa5b6('0x4e')]})['then'](function(_0xee3775){_0x373d29[_0xa5b6('0x2f')]=_0xee3775;if(_0x22adab['query'][_0xa5b6('0x54')]){_0x21acb9[_0xa5b6('0x55')]=[{'model':db[_0xa5b6('0x9e')],'as':_0xa5b6('0xfc'),'required':![]},{'model':db['User'],'as':_0xa5b6('0xfd'),'attributes':[_0xa5b6('0x38'),'fullname',_0xa5b6('0xfe')],'required':![]},{'model':db[_0xa5b6('0xff')],'as':_0xa5b6('0x100'),'attributes':['id','name','color'],'where':_0x22adab[_0xa5b6('0x44')][_0xa5b6('0x101')]?{'id':_0x22adab['query'][_0xa5b6('0x101')]}:undefined,'required':_0x22adab['query'][_0xa5b6('0x101')]?!![]:![]}];}return db[_0xa5b6('0xbb')]['findAll'](_0x21acb9);})[_0xa5b6('0x22')](function(_0x315895){_0x373d29['rows']=_0x315895;return _0x373d29;});}})[_0xa5b6('0x22')](respondWithFilteredResult(_0x385076,_0x21acb9))['catch'](handleError(_0x385076,null));};function iftimePromise(_0xa536ae,_0x15b435){return respondWithRpcPromise(_0xa5b6('0x102'),_0xa5b6('0x103'),{'command':_0x15b435['timezone']?util[_0xa5b6('0xb2')](_0xa5b6('0x104'),_0xa536ae[_0xa5b6('0x105')],_0x15b435[_0xa5b6('0x106')]):util[_0xa5b6('0xb2')]('iftime\x20%s',_0xa536ae[_0xa5b6('0x105')])},client9002)[_0xa5b6('0x22')](function(_0xc78dc9){var _0x2efc9b=_0xc78dc9&&_0xc78dc9[_0xa5b6('0x107')]('true')>=0x0?!![]:![];logger[_0xa5b6('0x23')](_0xa5b6('0x108'),_0x15b435['id'],_0xa536ae['id'],_0xa536ae['interval'],_0x2efc9b?_0xa5b6('0x109'):_0xa5b6('0x10a'),_0x15b435[_0xa5b6('0x106')]?_0x15b435[_0xa5b6('0x106')]:_0xa5b6('0x10b'));return _0x2efc9b;})[_0xa5b6('0x58')](function(_0x183c0d){logger[_0xa5b6('0x26')](_0xa5b6('0x108'),_0x15b435['id'],_0xa536ae['id'],_0xa536ae[_0xa5b6('0x105')],util['inspect'](_0x183c0d,{'showHidden':![],'depth':null}),_0x15b435[_0xa5b6('0x106')]?_0x15b435[_0xa5b6('0x106')]:_0xa5b6('0x10b'));return![];});}exports[_0xa5b6('0x103')]=function(_0x21b927,_0x2d25ed,_0x184397){var _0x30f0df=0x0;var _0x18ea15=0x0;var _0x432308=![];var _0x400097;var _0x45692a;return db[_0xa5b6('0x3e')][_0xa5b6('0x57')]({'where':{'id':_0x21b927[_0xa5b6('0x62')]['id']},'include':[{'model':db[_0xa5b6('0x10c')],'as':_0xa5b6('0x10c'),'include':[{'model':db[_0xa5b6('0x10c')],'as':_0xa5b6('0x10d'),'attributes':['id',_0xa5b6('0x105')],'raw':!![]}]}]})[_0xa5b6('0x22')](handleEntityNotFound(_0x2d25ed,null))[_0xa5b6('0x22')](function(_0x5a6cba){if(_0x5a6cba){_0x400097=_0x5a6cba;return _0x5a6cba[_0xa5b6('0x10e')]({'raw':!![]});}})['then'](function(_0x30d581){if(_0x400097){if(_0x30d581){_0x45692a=_0x30d581;}}return require(_0xa5b6('0x17'))['getLicense']();})['then'](function(_0x870362){if(_0x870362){_0x18ea15=_0x870362['virtual'];_0x432308=_0x870362[_0xa5b6('0x7a')];}})[_0xa5b6('0x22')](function(){return db[_0xa5b6('0xbb')]['count']({'where':{'closed':![]}});})[_0xa5b6('0x22')](function(_0x1b08d5){_0x30f0df=_0x1b08d5;if(_0x18ea15&&_0x1b08d5>_0x18ea15){return db[_0xa5b6('0x10f')]['findOne']({'where':{'id':0x1}})['then'](function(_0x163951){if(_0x163951){_0x163951[_0xa5b6('0x110')]('chatLicenseExceeded');}});}})[_0xa5b6('0x22')](function(){if(_0x400097['Interval']&&_0x400097['Interval'][_0xa5b6('0x10d')]){var _0x57c04f=[];for(var _0xffdb59=0x0;_0xffdb59<_0x400097['Interval']['Intervals']['length'];_0xffdb59++){var _0x2de56c=_0x400097[_0xa5b6('0x10c')][_0xa5b6('0x10d')][_0xffdb59]['get']({'plain':!![]});_0x57c04f[_0xa5b6('0xc1')](iftimePromise(_0x2de56c,_0x400097));}return BPromise['all'](_0x57c04f)[_0xa5b6('0x22')](function(_0xa29677){return _[_0xa5b6('0x111')](_0xa29677);});}else{return!![];}})['then'](function(_0x4d5f26){var _0x398714=fs[_0xa5b6('0xd4')](path[_0xa5b6('0x77')](config[_0xa5b6('0x78')],_0xa5b6('0x112')),_0xa5b6('0xd5'));var _0x43892f={'remote':_0x400097['remote'],'query':querystring[_0xa5b6('0x25')](_[_0xa5b6('0x67')](_0x400097[_0xa5b6('0x34')]({'plain':!![]}),{'customerIp':_0x21b927['headers'][_0xa5b6('0xab')]||_0x21b927['headers'][_0xa5b6('0x113')]||_0x21b927[_0xa5b6('0x114')][_0xa5b6('0x115')]||_0x21b927['ip'],'referer':_0x21b927[_0xa5b6('0x8b')][_0xa5b6('0xb0')],'openedInteractions':_0x30f0df,'maxInteractions':_0x18ea15,'virtual':_0x432308[_0xa5b6('0x116')],'online':_0x4d5f26,'custom':_0x432308}))[_0xa5b6('0x117')](/'/g,'\x5c\x27')};_0x2d25ed[_0xa5b6('0x39')](ejs['render'](Mustache[_0xa5b6('0x118')](_0x398714,_0x43892f),{'proactiveActions':_0x45692a,'alignment':_0x400097['alignment'],'verticalAlignment':_0x400097[_0xa5b6('0x119')],'div_color':_0x400097[_0xa5b6('0x11a')],'text_color':_0x400097[_0xa5b6('0x11b')],'button_color':_0x400097[_0xa5b6('0x11c')],'background_color':_0x400097['backgroundColor']}));})['catch'](handleError(_0x2d25ed,null));};exports[_0xa5b6('0x11d')]=function(_0x291f22,_0x5ba493,_0x2ea366){return db[_0xa5b6('0x3e')][_0xa5b6('0xe2')]({'where':{'id':_0x291f22[_0xa5b6('0x62')]['id']}})[_0xa5b6('0x22')](handleEntityNotFound(_0x5ba493,null))[_0xa5b6('0x22')](function(_0x793522){if(_0x793522){return db['sequelize']['transaction'](function(_0x452c89){return db[_0xa5b6('0xa1')][_0xa5b6('0x33')]({'where':{'ChatWebsiteId':_0x291f22[_0xa5b6('0x62')]['id']},'transaction':_0x452c89})['then'](function(_0x13d503){var _0x45dec2=_['map'](_0x291f22['body'],function(_0x1f61da){_0x1f61da[_0xa5b6('0x6c')]=_0x291f22[_0xa5b6('0x62')]['id'];return _0x1f61da;});return db[_0xa5b6('0xa1')][_0xa5b6('0xe1')](_0x45dec2,{'transaction':_0x452c89});});})['then'](function(){return db['ChatApplication'][_0xa5b6('0x11e')]({'where':{'ChatWebsiteId':_0x291f22['params']['id']},'order':_0xa5b6('0xa5')});});}})['then'](respondWithResult(_0x5ba493,null))[_0xa5b6('0x58')](handleError(_0x5ba493,null));};exports[_0xa5b6('0x11f')]=function(_0x51dfa0,_0x59ccca,_0x308a8a){var _0x56e90f={};var _0x74f478={};var _0x593205;var _0x599bea;return db['ChatWebsite']['findOne']({'where':{'id':_0x51dfa0[_0xa5b6('0x62')]['id']}})[_0xa5b6('0x22')](handleEntityNotFound(_0x59ccca,null))[_0xa5b6('0x22')](function(_0x63eb3c){if(_0x63eb3c){_0x593205=_0x63eb3c;_0x74f478['model']=_['keys'](db[_0xa5b6('0xa1')][_0xa5b6('0x3f')]);_0x74f478[_0xa5b6('0x44')]=_[_0xa5b6('0x45')](_0x51dfa0[_0xa5b6('0x44')]);_0x74f478['filters']=_[_0xa5b6('0x46')](_0x74f478[_0xa5b6('0x43')],_0x74f478[_0xa5b6('0x44')]);_0x56e90f[_0xa5b6('0x47')]=_['intersection'](_0x74f478['model'],qs['fields'](_0x51dfa0[_0xa5b6('0x44')][_0xa5b6('0x48')]));_0x56e90f[_0xa5b6('0x47')]=_0x56e90f['attributes']['length']?_0x56e90f[_0xa5b6('0x47')]:_0x74f478[_0xa5b6('0x43')];_0x56e90f[_0xa5b6('0x4c')]=qs[_0xa5b6('0x4d')](_0x51dfa0[_0xa5b6('0x44')][_0xa5b6('0x4d')]);_0x56e90f[_0xa5b6('0x4e')]=qs[_0xa5b6('0x4f')](_[_0xa5b6('0x50')](_0x51dfa0['query'],_0x74f478['filters']));if(_0x51dfa0[_0xa5b6('0x44')][_0xa5b6('0x51')]){_0x56e90f['where']=_[_0xa5b6('0x67')](_0x56e90f[_0xa5b6('0x4e')],{'$or':_[_0xa5b6('0x3d')](_0x56e90f[_0xa5b6('0x47')],function(_0x1e2869){var _0x3cc31c={};_0x3cc31c[_0x1e2869]={'$like':'%'+_0x51dfa0[_0xa5b6('0x44')][_0xa5b6('0x51')]+'%'};return _0x3cc31c;})});}_0x56e90f=_[_0xa5b6('0x67')]({},_0x56e90f,_0x51dfa0[_0xa5b6('0x53')]);return _0x593205[_0xa5b6('0x11f')](_0x56e90f);}})[_0xa5b6('0x22')](function(_0x2d2c19){if(_0x2d2c19){_0x599bea=_0x2d2c19[_0xa5b6('0x49')];if(!_0x51dfa0[_0xa5b6('0x44')][_0xa5b6('0x4a')](_0xa5b6('0x4b'))){_0x56e90f['limit']=qs[_0xa5b6('0x2e')](_0x51dfa0[_0xa5b6('0x44')][_0xa5b6('0x2e')]);_0x56e90f[_0xa5b6('0x2c')]=qs['offset'](_0x51dfa0['query'][_0xa5b6('0x2c')]);}return _0x593205['getApplications'](_0x56e90f);}})[_0xa5b6('0x22')](function(_0x5a669b){if(_0x5a669b){return _0x5a669b?{'count':_0x599bea,'rows':_0x5a669b}:null;}})[_0xa5b6('0x22')](respondWithResult(_0x59ccca,null))['catch'](handleError(_0x59ccca,null));};exports[_0xa5b6('0x120')]=function(_0x20fadf,_0x2bb8cf,_0x41671c){return db[_0xa5b6('0x121')][_0xa5b6('0x57')]({'where':{'id':_0x20fadf[_0xa5b6('0x62')]['id']}})[_0xa5b6('0x22')](handleEntityNotFound(_0x2bb8cf,null))['then'](function(_0x862969){if(_0x862969){return _0x862969[_0xa5b6('0x120')](_0x20fadf[_0xa5b6('0x5a')]['ids'],_[_0xa5b6('0xfa')](_0x20fadf[_0xa5b6('0x5a')],[_0xa5b6('0x6a'),'id'])||{});}})[_0xa5b6('0x22')](respondWithResult(_0x2bb8cf,null))[_0xa5b6('0x58')](handleError(_0x2bb8cf,null));};exports[_0xa5b6('0x10e')]=function(_0x32992f,_0x1e1dc0,_0x5d7f4c){var _0xa87c02={};var _0x372393={};var _0x45ce95;var _0x330004;return db[_0xa5b6('0x3e')]['findOne']({'where':{'id':_0x32992f[_0xa5b6('0x62')]['id']}})[_0xa5b6('0x22')](handleEntityNotFound(_0x1e1dc0,null))[_0xa5b6('0x22')](function(_0x564ff3){if(_0x564ff3){_0x45ce95=_0x564ff3;_0x372393[_0xa5b6('0x43')]=_[_0xa5b6('0x45')](db['ChatProactiveAction'][_0xa5b6('0x3f')]);_0x372393[_0xa5b6('0x44')]=_['keys'](_0x32992f[_0xa5b6('0x44')]);_0x372393[_0xa5b6('0x4f')]=_[_0xa5b6('0x46')](_0x372393[_0xa5b6('0x43')],_0x372393[_0xa5b6('0x44')]);_0xa87c02['attributes']=_[_0xa5b6('0x46')](_0x372393[_0xa5b6('0x43')],qs[_0xa5b6('0x48')](_0x32992f['query'][_0xa5b6('0x48')]));_0xa87c02['attributes']=_0xa87c02[_0xa5b6('0x47')][_0xa5b6('0x49')]?_0xa87c02[_0xa5b6('0x47')]:_0x372393[_0xa5b6('0x43')];_0xa87c02['order']=qs[_0xa5b6('0x4d')](_0x32992f[_0xa5b6('0x44')][_0xa5b6('0x4d')]);_0xa87c02[_0xa5b6('0x4e')]=qs['filters'](_[_0xa5b6('0x50')](_0x32992f[_0xa5b6('0x44')],_0x372393[_0xa5b6('0x4f')]));if(_0x32992f[_0xa5b6('0x44')][_0xa5b6('0x51')]){_0xa87c02['where']=_[_0xa5b6('0x67')](_0xa87c02[_0xa5b6('0x4e')],{'$or':_[_0xa5b6('0x3d')](_0xa87c02['attributes'],function(_0x30d614){var _0x4cef5c={};_0x4cef5c[_0x30d614]={'$like':'%'+_0x32992f[_0xa5b6('0x44')][_0xa5b6('0x51')]+'%'};return _0x4cef5c;})});}_0xa87c02=_['merge']({},_0xa87c02,_0x32992f[_0xa5b6('0x53')]);return _0x45ce95[_0xa5b6('0x10e')](_0xa87c02);}})[_0xa5b6('0x22')](function(_0x11f447){if(_0x11f447){_0x330004=_0x11f447[_0xa5b6('0x49')];if(!_0x32992f[_0xa5b6('0x44')]['hasOwnProperty']('nolimit')){_0xa87c02[_0xa5b6('0x2e')]=qs[_0xa5b6('0x2e')](_0x32992f[_0xa5b6('0x44')][_0xa5b6('0x2e')]);_0xa87c02[_0xa5b6('0x2c')]=qs[_0xa5b6('0x2c')](_0x32992f[_0xa5b6('0x44')][_0xa5b6('0x2c')]);}return _0x45ce95[_0xa5b6('0x10e')](_0xa87c02);}})[_0xa5b6('0x22')](function(_0x26f4f0){if(_0x26f4f0){return _0x26f4f0?{'count':_0x330004,'rows':_0x26f4f0}:null;}})[_0xa5b6('0x22')](respondWithResult(_0x1e1dc0,null))[_0xa5b6('0x58')](handleError(_0x1e1dc0,null));};exports['getFields']=function(_0x1aab7a,_0x199441,_0x47fd35){var _0x238180=_0x1aab7a['query'][_0xa5b6('0x122')]===_0xa5b6('0x123')?_0xa5b6('0x124'):_0xa5b6('0x125');return db[_0xa5b6('0x3e')]['find']({'attributes':['id',_0x238180],'where':{'id':_0x1aab7a[_0xa5b6('0x62')]['id']}})[_0xa5b6('0x22')](handleEntityNotFound(_0x199441,null))['then'](function(_0x234d66){if(_0x234d66){var _0x42aff5=_0x234d66[_0x238180];var _0x56bac9=_0x42aff5&&_0x42aff5[_0xa5b6('0x126')]?_0x42aff5['items']:[];_0x199441['send']({'fromKey':_['isNil'](_0x42aff5[_0xa5b6('0x127')])?undefined:_0x42aff5['fromKey'],'count':_0x56bac9[_0xa5b6('0x49')],'rows':_0x56bac9});}})['catch'](handleError(_0x199441,null));};exports[_0xa5b6('0x128')]=function(_0x13a5e4,_0x2fb1de,_0x2c7c80){var _0x335e42={'raw':![],'where':{}};var _0x3c3a46={};var _0x3513de={'count':0x0,'rows':[]};return db[_0xa5b6('0x3e')][_0xa5b6('0xe2')]({'where':{'id':_0x13a5e4['params']['id']}})[_0xa5b6('0x22')](handleEntityNotFound(_0x2fb1de,null))[_0xa5b6('0x22')](function(_0x20c4d6){if(_0x20c4d6){_0x3c3a46[_0xa5b6('0x43')]=_[_0xa5b6('0x45')](db[_0xa5b6('0xd8')][_0xa5b6('0x3f')]);_0x3c3a46[_0xa5b6('0x44')]=_[_0xa5b6('0x45')](_0x13a5e4[_0xa5b6('0x44')]);_0x3c3a46['filters']=_['intersection'](_0x3c3a46[_0xa5b6('0x43')],_0x3c3a46[_0xa5b6('0x44')]);_0x335e42['attributes']=_[_0xa5b6('0x46')](_0x3c3a46[_0xa5b6('0x43')],qs[_0xa5b6('0x48')](_0x13a5e4['query']['fields']));_0x335e42['attributes']=_0x335e42[_0xa5b6('0x47')][_0xa5b6('0x49')]?_0x335e42[_0xa5b6('0x47')]:_0x3c3a46[_0xa5b6('0x43')];if(!_0x13a5e4['query']['hasOwnProperty'](_0xa5b6('0x4b'))){_0x335e42[_0xa5b6('0x2e')]=qs['limit'](_0x13a5e4[_0xa5b6('0x44')][_0xa5b6('0x2e')]);_0x335e42['offset']=qs[_0xa5b6('0x2c')](_0x13a5e4['query'][_0xa5b6('0x2c')]);}_0x335e42[_0xa5b6('0x4c')]=qs[_0xa5b6('0x4d')](_0x13a5e4['query'][_0xa5b6('0x4d')]);_0x335e42['where']=qs[_0xa5b6('0x4f')](_[_0xa5b6('0x50')](_0x13a5e4[_0xa5b6('0x44')],_0x3c3a46['filters']));_0x335e42[_0xa5b6('0x4e')][_0xa5b6('0x6c')]=_0x20c4d6['id'];if(_0x13a5e4[_0xa5b6('0x44')][_0xa5b6('0x51')]){_0x335e42['where']=_[_0xa5b6('0x67')](_0x335e42[_0xa5b6('0x4e')],{'$or':_['map'](_0x335e42[_0xa5b6('0x47')],function(_0x1f4614){var _0x55c7f2={};_0x55c7f2[_0x1f4614]={'$like':'%'+_0x13a5e4[_0xa5b6('0x44')][_0xa5b6('0x51')]+'%'};return _0x55c7f2;})});}_0x335e42=_['merge']({},_0x335e42,_0x13a5e4[_0xa5b6('0x53')]);return db[_0xa5b6('0xd8')][_0xa5b6('0x2f')]({'where':_0x335e42['where']})[_0xa5b6('0x22')](function(_0x9edc1){_0x3513de[_0xa5b6('0x2f')]=_0x9edc1;if(_0x13a5e4[_0xa5b6('0x44')][_0xa5b6('0x54')]){_0x335e42[_0xa5b6('0x55')]=[{'all':!![]}];}else{_0x335e42['include']=[{'model':db[_0xa5b6('0x9e')],'as':'Contact','required':![]},{'model':db[_0xa5b6('0xe0')],'as':_0xa5b6('0x129'),'required':![]}];}return db[_0xa5b6('0xd8')][_0xa5b6('0x56')](_0x335e42);})[_0xa5b6('0x22')](function(_0x183f22){_0x3513de['rows']=_0x183f22;return _0x3513de;});}})[_0xa5b6('0x22')](respondWithFilteredResult(_0x2fb1de,_0x335e42))[_0xa5b6('0x58')](handleError(_0x2fb1de,null));};exports['addAgents']=function(_0x377c9c,_0x4b8e95,_0x38fa06){return db[_0xa5b6('0x3e')][_0xa5b6('0x57')]({'where':{'id':_0x377c9c['params']['id']}})[_0xa5b6('0x22')](handleEntityNotFound(_0x4b8e95,null))['then'](function(_0x5a6cac){if(_0x5a6cac){return _0x5a6cac['addAgents'](_0x377c9c[_0xa5b6('0x5a')][_0xa5b6('0x6a')],_[_0xa5b6('0xfa')](_0x377c9c[_0xa5b6('0x5a')],[_0xa5b6('0x6a'),'id'])||{})[_0xa5b6('0xbe')](function(_0x14bc7d){for(var _0x17a00d=0x0;_0x17a00d<_0x377c9c['body'][_0xa5b6('0x6a')][_0xa5b6('0x49')];_0x17a00d+=0x1){socket[_0xa5b6('0x12a')](_0xa5b6('0x12b'),{'UserId':Number(_0x377c9c['body'][_0xa5b6('0x6a')][_0x17a00d]),'ChatWebsiteId':Number(_0x377c9c[_0xa5b6('0x62')]['id'])});}return _0x14bc7d;});}})[_0xa5b6('0x22')](respondWithResult(_0x4b8e95,null))['catch'](handleError(_0x4b8e95,null));};exports[_0xa5b6('0x12c')]=function(_0x4978bb,_0x35a675,_0x23515f){return db[_0xa5b6('0x3e')]['find']({'where':{'id':_0x4978bb[_0xa5b6('0x62')]['id']}})['then'](handleEntityNotFound(_0x35a675,null))[_0xa5b6('0x22')](function(_0x4b15a2){if(_0x4b15a2){return _0x4b15a2[_0xa5b6('0x12c')](_0x4978bb[_0xa5b6('0x44')][_0xa5b6('0x6a')])[_0xa5b6('0x22')](function(){if(_['isArray'](_0x4978bb[_0xa5b6('0x44')]['ids'])){for(var _0x508249=0x0;_0x508249<_0x4978bb[_0xa5b6('0x44')][_0xa5b6('0x6a')][_0xa5b6('0x49')];_0x508249+=0x1){socket[_0xa5b6('0x12a')](_0xa5b6('0x12d'),{'UserId':Number(_0x4978bb[_0xa5b6('0x44')][_0xa5b6('0x6a')][_0x508249]),'ChatWebsiteId':Number(_0x4978bb[_0xa5b6('0x62')]['id'])});}}else{socket[_0xa5b6('0x12a')](_0xa5b6('0x12d'),{'UserId':Number(_0x4978bb[_0xa5b6('0x44')][_0xa5b6('0x6a')]),'ChatWebsiteId':Number(_0x4978bb[_0xa5b6('0x62')]['id'])});}});}})[_0xa5b6('0x22')](respondWithStatusCode(_0x35a675,null))['catch'](handleError(_0x35a675,null));};exports[_0xa5b6('0x12e')]=function(_0x3c8291,_0x52c53f,_0x1ed4b1){var _0x2ec4cf={};var _0x6356a7={};var _0x26674f;var _0x252080;return db['ChatWebsite'][_0xa5b6('0xe2')]({'where':{'id':_0x3c8291['params']['id']}})[_0xa5b6('0x22')](handleEntityNotFound(_0x52c53f,null))['then'](function(_0x35b721){if(_0x35b721){_0x26674f=_0x35b721;_0x6356a7[_0xa5b6('0x43')]=_[_0xa5b6('0x45')](db[_0xa5b6('0xc6')][_0xa5b6('0x3f')]);_0x6356a7[_0xa5b6('0x44')]=_['keys'](_0x3c8291['query']);_0x6356a7[_0xa5b6('0x4f')]=_['intersection'](_0x6356a7[_0xa5b6('0x43')],_0x6356a7['query']);_0x2ec4cf[_0xa5b6('0x47')]=_[_0xa5b6('0x46')](_0x6356a7[_0xa5b6('0x43')],qs[_0xa5b6('0x48')](_0x3c8291[_0xa5b6('0x44')]['fields']));_0x2ec4cf[_0xa5b6('0x47')]=_0x2ec4cf['attributes'][_0xa5b6('0x49')]?_0x2ec4cf['attributes']:_0x6356a7[_0xa5b6('0x43')];_0x2ec4cf[_0xa5b6('0x4c')]=qs[_0xa5b6('0x4d')](_0x3c8291['query'][_0xa5b6('0x4d')]);_0x2ec4cf[_0xa5b6('0x4e')]=qs[_0xa5b6('0x4f')](_[_0xa5b6('0x50')](_0x3c8291[_0xa5b6('0x44')],_0x6356a7[_0xa5b6('0x4f')]));if(_0x3c8291[_0xa5b6('0x44')][_0xa5b6('0x51')]){_0x2ec4cf[_0xa5b6('0x4e')]=_[_0xa5b6('0x67')](_0x2ec4cf[_0xa5b6('0x4e')],{'$or':_['map'](_0x2ec4cf[_0xa5b6('0x47')],function(_0x2628fe){var _0x44a457={};_0x44a457[_0x2628fe]={'$like':'%'+_0x3c8291['query'][_0xa5b6('0x51')]+'%'};return _0x44a457;})});}_0x2ec4cf=_[_0xa5b6('0x67')]({},_0x2ec4cf,_0x3c8291[_0xa5b6('0x53')]);return _0x26674f[_0xa5b6('0x12e')](_0x2ec4cf);}})[_0xa5b6('0x22')](function(_0x9e6349){if(_0x9e6349){_0x252080=_0x9e6349[_0xa5b6('0x49')];if(!_0x3c8291['query']['hasOwnProperty'](_0xa5b6('0x4b'))){_0x2ec4cf[_0xa5b6('0x2e')]=qs[_0xa5b6('0x2e')](_0x3c8291[_0xa5b6('0x44')][_0xa5b6('0x2e')]);_0x2ec4cf[_0xa5b6('0x2c')]=qs[_0xa5b6('0x2c')](_0x3c8291[_0xa5b6('0x44')]['offset']);}return _0x26674f[_0xa5b6('0x12e')](_0x2ec4cf);}})['then'](function(_0x2d9270){if(_0x2d9270){return _0x2d9270?{'count':_0x252080,'rows':_0x2d9270}:null;}})[_0xa5b6('0x22')](respondWithResult(_0x52c53f,null))[_0xa5b6('0x58')](handleError(_0x52c53f,null));};
\ No newline at end of file
+var _0x0139=['addApplications','findAndCountAll','getApplications','addProactiveActions','online','false','offlineForm','onlineForm','items','getOfflineMessages','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','eml-format','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','jayson/promise','http','client','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','apply','save','update','get','ChatWebsites','UserProfileResource','end','name','send','index','Pause','mandatoryDispositionPause','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','ChatWebsite','count','includeAll','include','findAll','rows','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','destroy','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','hasOwnProperty','removeDispositions','addAnswer','CannedAnswer','removeAnswers','ids','addLogo','filename','addAvatar','file','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','root','server/files/images/logos/default_logo.svg','sitepic','getLicense','custom','isNil','join','server/files/images/logos/','download','agentAvatar','existsSync','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','headers','getResult','chat','Sequelize','updatedAt','difference','createdAt','CompanyId','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','from','List','CmContact','Contacts','DESC','ChatApplication','Applications','applications','list','orderBy','priority','account','ListId','contact','cf-connecting-ip','split','firstName','lastName','x-real-port','referer','browser','version','format','unknown','device','vendor','stringify','threadId','externalUrl','ChatInteraction','ContactId','interaction','spread','messageId','created','autoclose','push','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','User','agent','forcedOwnership','Start','EventManager','offline','files','no\x20available\x20attributes','from\x20is\x20mandatory','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','MailAccount','findOrCreate','readFileSync','render','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','mimetype','server','attachments','offline-chat','basename','openNewInteraction','transaction','Attachment','bulkCreate','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','authentication','auth','user','pass','SendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','subjectOffline','toPairsIn','mapValues','MailAccountId','NotifyMailAccount','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','Owner','fullname','color','tag','Command','getSnippet','iftime\x20%s,%s','interval','timezone','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','virtual','License','increment','chatLicenseExceeded','all','some','server/files/chat/iframe.ejs','utf8','remote','x-forwarded-for','x-real-ip','connection','remoteAddress','replace','alignment','verticalAlignment','textColor','backgroundColor'];(function(_0x37bb69,_0x45d9cc){var _0x2bfa4e=function(_0x5799e8){while(--_0x5799e8){_0x37bb69['push'](_0x37bb69['shift']());}};_0x2bfa4e(++_0x45d9cc);}(_0x0139,0x141));var _0x9013=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0139[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x9013('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9013('0x1'));var rp=require('request-promise');var moment=require(_0x9013('0x2'));var BPromise=require(_0x9013('0x3'));var Mustache=require(_0x9013('0x4'));var util=require(_0x9013('0x5'));var path=require('path');var sox=require(_0x9013('0x6'));var csv=require(_0x9013('0x7'));var ejs=require(_0x9013('0x8'));var fs=require('fs');var fs_extra=require(_0x9013('0x9'));var _=require('lodash');var squel=require(_0x9013('0xa'));var crypto=require(_0x9013('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x9013('0xc'));var toCsv=require(_0x9013('0x7'));var querystring=require(_0x9013('0xd'));var Papa=require('papaparse');var Redis=require(_0x9013('0xe'));var authService=require(_0x9013('0xf'));var qs=require(_0x9013('0x10'));var as=require(_0x9013('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9013('0x12'))('api');var utils=require(_0x9013('0x13'));var config=require(_0x9013('0x14'));var licenseUtil=require(_0x9013('0x15'));var db=require(_0x9013('0x16'))['db'];config[_0x9013('0x17')]=_[_0x9013('0x18')](config[_0x9013('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x9013('0x19'))(new Redis(config[_0x9013('0x17')]));require('./chatWebsite.socket')[_0x9013('0x1a')](socket);var jayson=require(_0x9013('0x1b'));var client=jayson['client'][_0x9013('0x1c')]({'port':0x232c});var client9002=jayson[_0x9013('0x1d')][_0x9013('0x1c')]({'port':0x232a});var client9003=jayson[_0x9013('0x1d')][_0x9013('0x1c')]({'port':0x232b});var client9001=jayson[_0x9013('0x1d')]['http']({'port':0x2329});function respondWithRpcPromise(_0x40b7fd,_0x51eed1,_0x1a6a82,_0x161913){return new BPromise(function(_0x47c61f,_0x39cef1){var _0x53bde8=_0x161913||client;return _0x53bde8[_0x9013('0x1e')](_0x40b7fd,_0x1a6a82)[_0x9013('0x1f')](function(_0x2362d4){logger[_0x9013('0x20')](_0x9013('0x21'),_0x51eed1,_0x9013('0x22'));logger[_0x9013('0x23')](_0x9013('0x24'),_0x51eed1,_0x9013('0x22'),JSON['stringify'](_0x2362d4));if(_0x2362d4[_0x9013('0x25')]){if(_0x2362d4[_0x9013('0x25')][_0x9013('0x26')]===0x1f4){logger['error'](_0x9013('0x21'),_0x51eed1,_0x2362d4[_0x9013('0x25')][_0x9013('0x27')]);return _0x39cef1(_0x2362d4[_0x9013('0x25')][_0x9013('0x27')]);}logger[_0x9013('0x25')](_0x9013('0x21'),_0x51eed1,_0x2362d4['error'][_0x9013('0x27')]);return _0x47c61f(_0x2362d4['error'][_0x9013('0x27')]);}else{logger['info'](_0x9013('0x21'),_0x51eed1,_0x9013('0x22'));_0x47c61f(_0x2362d4[_0x9013('0x28')]['message']);}})[_0x9013('0x29')](function(_0x3b22f2){logger[_0x9013('0x25')](_0x9013('0x21'),_0x51eed1,_0x3b22f2);_0x39cef1(_0x3b22f2);});});}function respondWithStatusCode(_0xeca71f,_0x340dc3){_0x340dc3=_0x340dc3||0xcc;return function(_0x2aa4c1){if(_0x2aa4c1){return _0xeca71f[_0x9013('0x2a')](_0x340dc3);}return _0xeca71f[_0x9013('0x2b')](_0x340dc3)['end']();};}function respondWithResult(_0x6884fc,_0x26f8df){_0x26f8df=_0x26f8df||0xc8;return function(_0x51e11d){if(_0x51e11d){return _0x6884fc[_0x9013('0x2b')](_0x26f8df)[_0x9013('0x2c')](_0x51e11d);}};}function respondWithFilteredResult(_0x30e784,_0x5036db){return function(_0x15d2a0){if(_0x15d2a0){var _0x11adc1=typeof _0x5036db[_0x9013('0x2d')]===_0x9013('0x2e')&&typeof _0x5036db[_0x9013('0x2f')]===_0x9013('0x2e');var _0x22e2b9=_0x15d2a0['count'];var _0x4074c1=_0x11adc1?0x0:_0x5036db[_0x9013('0x2d')];var _0x244f01=_0x11adc1?_0x15d2a0['count']:_0x5036db[_0x9013('0x2d')]+_0x5036db[_0x9013('0x2f')];var _0x520c2b;if(_0x244f01>=_0x22e2b9){_0x244f01=_0x22e2b9;_0x520c2b=0xc8;}else{_0x520c2b=0xce;}_0x30e784[_0x9013('0x2b')](_0x520c2b);return _0x30e784['set']('Content-Range',_0x4074c1+'-'+_0x244f01+'/'+_0x22e2b9)[_0x9013('0x2c')](_0x15d2a0);}return null;};}function patchUpdates(_0x292770){return function(_0x28ab5c){try{jsonpatch[_0x9013('0x30')](_0x28ab5c,_0x292770,!![]);}catch(_0x559db3){return BPromise['reject'](_0x559db3);}return _0x28ab5c[_0x9013('0x31')]();};}function saveUpdates(_0x4e8af5,_0x12b108){return function(_0x490a27){if(_0x490a27){return _0x490a27[_0x9013('0x32')](_0x4e8af5)[_0x9013('0x1f')](function(_0x27084b){return _0x27084b;});}return null;};}function removeEntity(_0xbe9655,_0x142ad8){return function(_0x20fa00){if(_0x20fa00){return _0x20fa00['destroy']()['then'](function(){var _0x56c55f=_0x20fa00[_0x9013('0x33')]({'plain':!![]});var _0x412d1d=_0x9013('0x34');return db[_0x9013('0x35')]['destroy']({'where':{'type':_0x412d1d,'resourceId':_0x56c55f['id']}})[_0x9013('0x1f')](function(){return _0x20fa00;});})[_0x9013('0x1f')](function(){_0xbe9655['status'](0xcc)[_0x9013('0x36')]();});}};}function handleEntityNotFound(_0x107d22,_0x33e6de){return function(_0x21df8f){if(!_0x21df8f){_0x107d22['sendStatus'](0x194);}return _0x21df8f;};}function handleError(_0x22b792,_0x14a05c){_0x14a05c=_0x14a05c||0x1f4;return function(_0x473477){logger['error'](_0x473477['stack']);if(_0x473477[_0x9013('0x37')]){delete _0x473477[_0x9013('0x37')];}_0x22b792[_0x9013('0x2b')](_0x14a05c)[_0x9013('0x38')](_0x473477);};}exports[_0x9013('0x39')]=function(_0x290dc5,_0x3d9f73){var _0x2b7bd3={'include':[{'model':db[_0x9013('0x3a')],'as':_0x9013('0x3b')}]},_0x2acc9d={},_0x43b442={'count':0x0,'rows':[]};var _0x2c6fa6=_['map'](db['ChatWebsite'][_0x9013('0x3c')],function(_0x5b443a){return{'name':_0x5b443a[_0x9013('0x3d')],'type':_0x5b443a[_0x9013('0x3e')][_0x9013('0x3f')]};});_0x2acc9d['model']=_[_0x9013('0x40')](_0x2c6fa6,_0x9013('0x37'));_0x2acc9d[_0x9013('0x41')]=_[_0x9013('0x42')](_0x290dc5[_0x9013('0x41')]);_0x2acc9d[_0x9013('0x43')]=_[_0x9013('0x44')](_0x2acc9d[_0x9013('0x45')],_0x2acc9d['query']);_0x2b7bd3[_0x9013('0x46')]=_[_0x9013('0x44')](_0x2acc9d[_0x9013('0x45')],qs[_0x9013('0x47')](_0x290dc5[_0x9013('0x41')][_0x9013('0x47')]));_0x2b7bd3[_0x9013('0x46')]=_0x2b7bd3[_0x9013('0x46')][_0x9013('0x48')]?_0x2b7bd3[_0x9013('0x46')]:_0x2acc9d[_0x9013('0x45')];if(!_0x290dc5['query']['hasOwnProperty'](_0x9013('0x49'))){_0x2b7bd3[_0x9013('0x2f')]=qs[_0x9013('0x2f')](_0x290dc5[_0x9013('0x41')][_0x9013('0x2f')]);_0x2b7bd3[_0x9013('0x2d')]=qs[_0x9013('0x2d')](_0x290dc5[_0x9013('0x41')][_0x9013('0x2d')]);}_0x2b7bd3[_0x9013('0x4a')]=qs[_0x9013('0x4b')](_0x290dc5[_0x9013('0x41')][_0x9013('0x4b')]);_0x2b7bd3[_0x9013('0x4c')]=qs[_0x9013('0x43')](_[_0x9013('0x4d')](_0x290dc5[_0x9013('0x41')],_0x2acc9d[_0x9013('0x43')]),_0x2c6fa6);if(_0x290dc5[_0x9013('0x41')]['filter']){_0x2b7bd3[_0x9013('0x4c')]=_['merge'](_0x2b7bd3['where'],{'$or':_[_0x9013('0x40')](_0x2c6fa6,function(_0x5ddfd8){if(_0x5ddfd8['type']!==_0x9013('0x4e')){var _0x314f48={};_0x314f48[_0x5ddfd8[_0x9013('0x37')]]={'$like':'%'+_0x290dc5[_0x9013('0x41')][_0x9013('0x4f')]+'%'};return _0x314f48;}})});}_0x2b7bd3=_[_0x9013('0x50')]({},_0x2b7bd3,_0x290dc5[_0x9013('0x51')]);var _0x2eda26={'where':_0x2b7bd3['where']};return db[_0x9013('0x52')][_0x9013('0x53')](_0x2eda26)[_0x9013('0x1f')](function(_0x1946d4){_0x43b442[_0x9013('0x53')]=_0x1946d4;if(_0x290dc5[_0x9013('0x41')][_0x9013('0x54')]){_0x2b7bd3[_0x9013('0x55')]=[{'all':!![]}];}return db['ChatWebsite'][_0x9013('0x56')](_0x2b7bd3);})[_0x9013('0x1f')](function(_0x337a5c){_0x43b442[_0x9013('0x57')]=_0x337a5c;return _0x43b442;})[_0x9013('0x1f')](respondWithFilteredResult(_0x3d9f73,_0x2b7bd3))[_0x9013('0x29')](handleError(_0x3d9f73,null));};exports['show']=function(_0x1cd127,_0x4fca6a){var _0x136943={'raw':![],'where':{'id':_0x1cd127['params']['id']},'include':[{'model':db[_0x9013('0x3a')],'as':_0x9013('0x3b')}]},_0x441e34={};_0x441e34[_0x9013('0x45')]=_[_0x9013('0x42')](db[_0x9013('0x52')]['rawAttributes']);_0x441e34[_0x9013('0x41')]=_[_0x9013('0x42')](_0x1cd127[_0x9013('0x41')]);_0x441e34[_0x9013('0x43')]=_[_0x9013('0x44')](_0x441e34['model'],_0x441e34[_0x9013('0x41')]);_0x136943[_0x9013('0x46')]=_[_0x9013('0x44')](_0x441e34[_0x9013('0x45')],qs[_0x9013('0x47')](_0x1cd127[_0x9013('0x41')]['fields']));_0x136943[_0x9013('0x46')]=_0x136943['attributes'][_0x9013('0x48')]?_0x136943[_0x9013('0x46')]:_0x441e34[_0x9013('0x45')];if(_0x1cd127[_0x9013('0x41')]['includeAll']){_0x136943[_0x9013('0x55')]=[{'all':!![]}];}_0x136943=_[_0x9013('0x50')]({},_0x136943,_0x1cd127[_0x9013('0x51')]);return db[_0x9013('0x52')][_0x9013('0x58')](_0x136943)[_0x9013('0x1f')](handleEntityNotFound(_0x4fca6a,null))[_0x9013('0x1f')](respondWithResult(_0x4fca6a,null))[_0x9013('0x29')](handleError(_0x4fca6a,null));};exports['create']=function(_0xfe39a7,_0x7eb5a4){return db['ChatWebsite'][_0x9013('0x59')](_0xfe39a7[_0x9013('0x5a')],{})[_0x9013('0x1f')](function(_0x4d493f){var _0x2ce2c3=_0xfe39a7['user'][_0x9013('0x33')]({'plain':!![]});if(!_0x2ce2c3)throw new Error(_0x9013('0x5b'));if(_0x2ce2c3['role']==='user'){var _0xe3f15b=_0x4d493f['get']({'plain':!![]});var _0x15332f=_0x9013('0x34');return db[_0x9013('0x5c')][_0x9013('0x58')]({'where':{'name':_0x15332f,'userProfileId':_0x2ce2c3['userProfileId']},'raw':!![]})[_0x9013('0x1f')](function(_0x33482a){if(_0x33482a&&_0x33482a['autoAssociation']===0x0){return db[_0x9013('0x35')]['create']({'name':_0xe3f15b['name'],'resourceId':_0xe3f15b['id'],'type':_0x33482a[_0x9013('0x37')],'sectionId':_0x33482a['id']},{})[_0x9013('0x1f')](function(){return _0x4d493f;});}else{return _0x4d493f;}})[_0x9013('0x29')](function(_0x3be9f4){logger['error'](_0x9013('0x5d'),_0x3be9f4);throw _0x3be9f4;});}return _0x4d493f;})[_0x9013('0x1f')](respondWithResult(_0x7eb5a4,0xc9))[_0x9013('0x29')](handleError(_0x7eb5a4,null));};exports[_0x9013('0x32')]=function(_0x3ccbd5,_0x3e6343){if(_0x3ccbd5[_0x9013('0x5a')]['id']){delete _0x3ccbd5[_0x9013('0x5a')]['id'];}return db['ChatWebsite'][_0x9013('0x58')]({'where':{'id':_0x3ccbd5[_0x9013('0x5e')]['id']},'include':[{'model':db[_0x9013('0x3a')],'as':_0x9013('0x3b')}]})[_0x9013('0x1f')](handleEntityNotFound(_0x3e6343,null))[_0x9013('0x1f')](saveUpdates(_0x3ccbd5[_0x9013('0x5a')],null))['then'](respondWithResult(_0x3e6343,null))['catch'](handleError(_0x3e6343,null));};exports[_0x9013('0x5f')]=function(_0x44a13c,_0x4cb939){return db[_0x9013('0x52')]['find']({'where':{'id':_0x44a13c[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x4cb939,null))['then'](removeEntity(_0x4cb939,null))[_0x9013('0x29')](handleError(_0x4cb939,null));};exports[_0x9013('0x60')]=function(_0x3fa345,_0x526102){return db[_0x9013('0x52')][_0x9013('0x60')]()[_0x9013('0x1f')](respondWithResult(_0x526102,null))[_0x9013('0x29')](handleError(_0x526102,null));};exports[_0x9013('0x61')]=function(_0x33c1ab,_0x484d39,_0x440a36){if(_0x33c1ab[_0x9013('0x5a')]['id']){delete _0x33c1ab['body']['id'];}return db['ChatWebsite'][_0x9013('0x58')]({'where':{'id':_0x33c1ab['params']['id']}})['then'](handleEntityNotFound(_0x484d39,null))[_0x9013('0x1f')](function(_0x2273c4){if(_0x2273c4){_0x33c1ab['body'][_0x9013('0x62')]=_0x2273c4['id'];return db[_0x9013('0x63')]['create'](_0x33c1ab[_0x9013('0x5a')]);}})['then'](respondWithResult(_0x484d39,null))[_0x9013('0x29')](handleError(_0x484d39,null));};exports[_0x9013('0x64')]=function(_0x47e3cf,_0x37ffa2,_0x51552b){var _0xe20da={'raw':![],'where':{}};var _0x4e2a94={};var _0x3191eb={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x9013('0x65')]({'where':{'id':_0x47e3cf['params']['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x37ffa2,null))['then'](function(_0x389d1f){if(_0x389d1f){_0x4e2a94[_0x9013('0x45')]=_[_0x9013('0x42')](db[_0x9013('0x63')][_0x9013('0x3c')]);_0x4e2a94['query']=_[_0x9013('0x42')](_0x47e3cf[_0x9013('0x41')]);_0x4e2a94['filters']=_[_0x9013('0x44')](_0x4e2a94[_0x9013('0x45')],_0x4e2a94[_0x9013('0x41')]);_0xe20da['attributes']=_[_0x9013('0x44')](_0x4e2a94[_0x9013('0x45')],qs[_0x9013('0x47')](_0x47e3cf['query'][_0x9013('0x47')]));_0xe20da[_0x9013('0x46')]=_0xe20da['attributes']['length']?_0xe20da[_0x9013('0x46')]:_0x4e2a94['model'];if(!_0x47e3cf[_0x9013('0x41')][_0x9013('0x66')](_0x9013('0x49'))){_0xe20da[_0x9013('0x2f')]=qs['limit'](_0x47e3cf['query'][_0x9013('0x2f')]);_0xe20da['offset']=qs[_0x9013('0x2d')](_0x47e3cf[_0x9013('0x41')][_0x9013('0x2d')]);}_0xe20da[_0x9013('0x4a')]=qs[_0x9013('0x4b')](_0x47e3cf[_0x9013('0x41')][_0x9013('0x4b')]);_0xe20da[_0x9013('0x4c')]=qs[_0x9013('0x43')](_[_0x9013('0x4d')](_0x47e3cf[_0x9013('0x41')],_0x4e2a94['filters']));_0xe20da['where'][_0x9013('0x62')]=_0x389d1f['id'];if(_0x47e3cf[_0x9013('0x41')][_0x9013('0x4f')]){_0xe20da[_0x9013('0x4c')]=_[_0x9013('0x50')](_0xe20da[_0x9013('0x4c')],{'$or':_[_0x9013('0x40')](_0xe20da['attributes'],function(_0x3a56a6){var _0x2b5a51={};_0x2b5a51[_0x3a56a6]={'$like':'%'+_0x47e3cf['query'][_0x9013('0x4f')]+'%'};return _0x2b5a51;})});}_0xe20da=_[_0x9013('0x50')]({},_0xe20da,_0x47e3cf[_0x9013('0x51')]);return db[_0x9013('0x63')][_0x9013('0x53')]({'where':_0xe20da['where']})[_0x9013('0x1f')](function(_0x270667){_0x3191eb[_0x9013('0x53')]=_0x270667;if(_0x47e3cf[_0x9013('0x41')][_0x9013('0x54')]){_0xe20da['include']=[{'all':!![]}];}return db[_0x9013('0x63')][_0x9013('0x56')](_0xe20da);})['then'](function(_0x332471){_0x3191eb[_0x9013('0x57')]=_0x332471;return _0x3191eb;});}})['then'](respondWithFilteredResult(_0x37ffa2,_0xe20da))[_0x9013('0x29')](handleError(_0x37ffa2,null));};exports[_0x9013('0x67')]=function(_0x48752a,_0x49b43c,_0x113e3d){return db[_0x9013('0x52')][_0x9013('0x58')]({'where':{'id':_0x48752a[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x49b43c,null))[_0x9013('0x1f')](function(_0x1a889d){if(_0x1a889d){return _0x1a889d[_0x9013('0x67')](_0x48752a[_0x9013('0x41')]['ids']);}})['then'](respondWithStatusCode(_0x49b43c,null))[_0x9013('0x29')](handleError(_0x49b43c,null));};exports[_0x9013('0x68')]=function(_0x158004,_0x56824e,_0x3aacd3){if(_0x158004[_0x9013('0x5a')]['id']){delete _0x158004[_0x9013('0x5a')]['id'];}return db[_0x9013('0x52')][_0x9013('0x58')]({'where':{'id':_0x158004[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x56824e,null))[_0x9013('0x1f')](function(_0x3102d5){if(_0x3102d5){_0x158004['body']['ChatWebsiteId']=_0x3102d5['id'];return db['CannedAnswer'][_0x9013('0x59')](_0x158004['body']);}})[_0x9013('0x1f')](respondWithResult(_0x56824e,null))['catch'](handleError(_0x56824e,null));};exports['getAnswers']=function(_0x5ce458,_0x232b1c,_0x420595){var _0x3ef102={'raw':![],'where':{}};var _0x56023a={};var _0x5ee467={'count':0x0,'rows':[]};return db[_0x9013('0x52')][_0x9013('0x65')]({'where':{'id':_0x5ce458['params']['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x232b1c,null))[_0x9013('0x1f')](function(_0x24ffea){if(_0x24ffea){_0x56023a[_0x9013('0x45')]=_[_0x9013('0x42')](db[_0x9013('0x69')][_0x9013('0x3c')]);_0x56023a[_0x9013('0x41')]=_['keys'](_0x5ce458[_0x9013('0x41')]);_0x56023a[_0x9013('0x43')]=_['intersection'](_0x56023a[_0x9013('0x45')],_0x56023a['query']);_0x3ef102[_0x9013('0x46')]=_['intersection'](_0x56023a[_0x9013('0x45')],qs['fields'](_0x5ce458['query'][_0x9013('0x47')]));_0x3ef102[_0x9013('0x46')]=_0x3ef102[_0x9013('0x46')]['length']?_0x3ef102[_0x9013('0x46')]:_0x56023a[_0x9013('0x45')];if(!_0x5ce458[_0x9013('0x41')][_0x9013('0x66')](_0x9013('0x49'))){_0x3ef102[_0x9013('0x2f')]=qs[_0x9013('0x2f')](_0x5ce458[_0x9013('0x41')][_0x9013('0x2f')]);_0x3ef102[_0x9013('0x2d')]=qs[_0x9013('0x2d')](_0x5ce458[_0x9013('0x41')][_0x9013('0x2d')]);}_0x3ef102[_0x9013('0x4a')]=qs[_0x9013('0x4b')](_0x5ce458[_0x9013('0x41')]['sort']);_0x3ef102[_0x9013('0x4c')]=qs[_0x9013('0x43')](_[_0x9013('0x4d')](_0x5ce458['query'],_0x56023a[_0x9013('0x43')]));_0x3ef102[_0x9013('0x4c')][_0x9013('0x62')]=_0x24ffea['id'];if(_0x5ce458[_0x9013('0x41')][_0x9013('0x4f')]){_0x3ef102['where']=_[_0x9013('0x50')](_0x3ef102[_0x9013('0x4c')],{'$or':_[_0x9013('0x40')](_0x3ef102[_0x9013('0x46')],function(_0x1a58f4){var _0x341790={};_0x341790[_0x1a58f4]={'$like':'%'+_0x5ce458[_0x9013('0x41')][_0x9013('0x4f')]+'%'};return _0x341790;})});}_0x3ef102=_['merge']({},_0x3ef102,_0x5ce458[_0x9013('0x51')]);return db['CannedAnswer'][_0x9013('0x53')]({'where':_0x3ef102['where']})['then'](function(_0x45dc2c){_0x5ee467['count']=_0x45dc2c;if(_0x5ce458[_0x9013('0x41')][_0x9013('0x54')]){_0x3ef102[_0x9013('0x55')]=[{'all':!![]}];}return db[_0x9013('0x69')][_0x9013('0x56')](_0x3ef102);})[_0x9013('0x1f')](function(_0x18e69c){_0x5ee467[_0x9013('0x57')]=_0x18e69c;return _0x5ee467;});}})[_0x9013('0x1f')](respondWithFilteredResult(_0x232b1c,_0x3ef102))[_0x9013('0x29')](handleError(_0x232b1c,null));};exports['removeAnswers']=function(_0x45abc2,_0x586ffc,_0x3add70){return db['ChatWebsite'][_0x9013('0x58')]({'where':{'id':_0x45abc2['params']['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x586ffc,null))[_0x9013('0x1f')](function(_0x3b642c){if(_0x3b642c){return _0x3b642c[_0x9013('0x6a')](_0x45abc2[_0x9013('0x41')][_0x9013('0x6b')]);}})[_0x9013('0x1f')](respondWithStatusCode(_0x586ffc,null))[_0x9013('0x29')](handleError(_0x586ffc,null));};exports[_0x9013('0x6c')]=function(_0x58c43c,_0x396d67,_0x152f4e){_0x58c43c[_0x9013('0x5a')]['sitepic']=_0x58c43c['file'][_0x9013('0x6d')];return db[_0x9013('0x52')][_0x9013('0x58')]({'where':{'id':_0x58c43c['params']['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x396d67,null))[_0x9013('0x1f')](saveUpdates(_0x58c43c[_0x9013('0x5a')],null))['then'](respondWithResult(_0x396d67,null))['catch'](handleError(_0x396d67,null));};exports[_0x9013('0x6e')]=function(_0x123846,_0x43ae70,_0x5ee425){_0x123846[_0x9013('0x5a')]['agentAvatar']=_0x123846[_0x9013('0x6f')][_0x9013('0x6d')];return db[_0x9013('0x52')][_0x9013('0x58')]({'where':{'id':_0x123846[_0x9013('0x5e')]['id']}})['then'](handleEntityNotFound(_0x43ae70,null))[_0x9013('0x1f')](saveUpdates(_0x123846['body'],null))[_0x9013('0x1f')](respondWithResult(_0x43ae70,null))['catch'](handleError(_0x43ae70,null));};exports[_0x9013('0x70')]=function(_0x3d96b2,_0x5bde83,_0xb0fe8f){_0x3d96b2['body'][_0x9013('0x71')]=_0x3d96b2['file']['filename'];return db[_0x9013('0x52')][_0x9013('0x58')]({'where':{'id':_0x3d96b2[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x5bde83,null))['then'](saveUpdates(_0x3d96b2[_0x9013('0x5a')],null))[_0x9013('0x1f')](respondWithResult(_0x5bde83,null))[_0x9013('0x29')](handleError(_0x5bde83,null));};exports[_0x9013('0x72')]=function(_0x28c372,_0x369fe9,_0x1f35e9){_0x28c372[_0x9013('0x5a')][_0x9013('0x73')]=_0x28c372['file'][_0x9013('0x6d')];return db[_0x9013('0x52')]['find']({'where':{'id':_0x28c372[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x369fe9,null))[_0x9013('0x1f')](saveUpdates(_0x28c372[_0x9013('0x5a')],null))[_0x9013('0x1f')](respondWithResult(_0x369fe9,null))[_0x9013('0x29')](handleError(_0x369fe9,null));};exports[_0x9013('0x74')]=function(_0x88f97e,_0x3acadc,_0x3d90da){var _0x59fec7=path['join'](config[_0x9013('0x75')],_0x9013('0x76'));var _0xe291e3={'where':{'id':_0x88f97e[_0x9013('0x5e')]['id']},'attributes':['id',_0x9013('0x77')],'raw':!![]};var _0x201343=![];return require('../../config/license/util')[_0x9013('0x78')]()['then'](function(_0x224ba4){if(_0x224ba4){_0x201343=_0x224ba4[_0x9013('0x79')];}})['then'](function(){return db[_0x9013('0x52')][_0x9013('0x58')](_0xe291e3);})[_0x9013('0x1f')](handleEntityNotFound(_0x3acadc,null))[_0x9013('0x1f')](function(_0x638e8f){if(_0x638e8f){if(!_[_0x9013('0x7a')](_0x638e8f['sitepic'])){if(fs['existsSync'](path[_0x9013('0x7b')](config[_0x9013('0x75')],_0x9013('0x7c'),_0x638e8f['sitepic']))&&_0x201343){_0x59fec7=path[_0x9013('0x7b')](config[_0x9013('0x75')],_0x9013('0x7c'),_0x638e8f[_0x9013('0x77')]);}}return _0x3acadc[_0x9013('0x7d')](_0x59fec7);}})['catch'](handleError(_0x3acadc,null));};exports['getAvatar']=function(_0x3f40f3,_0xba735c,_0x328aea){var _0x73ef82=path[_0x9013('0x7b')](config['root'],'server/files/images/avatars/default_avatar.png');var _0x222abd={'where':{'id':_0x3f40f3[_0x9013('0x5e')]['id']},'attributes':['id',_0x9013('0x7e')],'raw':!![]};return db[_0x9013('0x52')][_0x9013('0x58')](_0x222abd)[_0x9013('0x1f')](handleEntityNotFound(_0xba735c,null))['then'](function(_0x1d97b9){if(_0x1d97b9){if(!_[_0x9013('0x7a')](_0x1d97b9[_0x9013('0x7e')])){if(fs[_0x9013('0x7f')](path[_0x9013('0x7b')](config['root'],_0x9013('0x80'),_0x1d97b9[_0x9013('0x7e')]))){_0x73ef82=path['join'](config[_0x9013('0x75')],_0x9013('0x80'),_0x1d97b9[_0x9013('0x7e')]);}}return _0xba735c[_0x9013('0x7d')](_0x73ef82);}})['catch'](handleError(_0xba735c,null));};exports[_0x9013('0x81')]=function(_0x3cb932,_0x3d81e1,_0x116c03){var _0x1d1d96=path[_0x9013('0x7b')](config['root'],_0x9013('0x82'));var _0x35f26a={'where':{'id':_0x3cb932[_0x9013('0x5e')]['id']},'attributes':['id',_0x9013('0x71'),_0x9013('0x83')],'raw':!![]};return db[_0x9013('0x52')]['find'](_0x35f26a)['then'](handleEntityNotFound(_0x3d81e1,null))['then'](function(_0xea9024){if(_0xea9024){if(!_[_0x9013('0x7a')](_0xea9024[_0x9013('0x71')])){if(fs[_0x9013('0x7f')](path[_0x9013('0x7b')](config['root'],'server/files/images/avatars/',_0xea9024[_0x9013('0x71')]))&&_0xea9024[_0x9013('0x83')]){_0x1d1d96=path[_0x9013('0x7b')](config[_0x9013('0x75')],_0x9013('0x80'),_0xea9024['customerAvatar']);}}return _0x3d81e1[_0x9013('0x7d')](_0x1d1d96);}})[_0x9013('0x29')](handleError(_0x3d81e1,null));};exports[_0x9013('0x84')]=function(_0x1a72ec,_0x3c7419,_0x4a2e35){var _0x583514=path[_0x9013('0x7b')](config[_0x9013('0x75')],_0x9013('0x85'));var _0x90b0b6={'where':{'id':_0x1a72ec['params']['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db[_0x9013('0x52')]['find'](_0x90b0b6)[_0x9013('0x1f')](handleEntityNotFound(_0x3c7419,null))['then'](function(_0x27e7b0){if(_0x27e7b0){if(!_[_0x9013('0x7a')](_0x27e7b0[_0x9013('0x73')])){if(fs[_0x9013('0x7f')](path[_0x9013('0x7b')](config[_0x9013('0x75')],_0x9013('0x80'),_0x27e7b0[_0x9013('0x73')]))){_0x583514=path[_0x9013('0x7b')](config[_0x9013('0x75')],_0x9013('0x80'),_0x27e7b0[_0x9013('0x73')]);}}return _0x3c7419['download'](_0x583514);}})[_0x9013('0x29')](handleError(_0x3c7419,null));};exports[_0x9013('0x86')]=function(_0x29bfc4,_0x33dd57,_0x2834bd){var _0x454bf7=require(_0x9013('0x87'));var _0x542dd4=new _0x454bf7();var _0x1a498d=_0x542dd4['setUA'](_0x29bfc4[_0x9013('0x88')]['user-agent'])[_0x9013('0x89')]();var _0x2b9cdf={'body':_0x29bfc4[_0x9013('0x5a')],'channel':_0x9013('0x8a')};var _0xf36437=[];var _0x26e3c1=[];var _0x4aa539={};var _0x2b5bcb=![];return db['CmContact'][_0x9013('0x60')]()['then'](function(_0x2a7941){if(!_0x2a7941){throw new db[(_0x9013('0x8b'))]['ValidationError']('no\x20available\x20attributes');}_0xf36437=_['difference'](_[_0x9013('0x42')](_0x2a7941),['createdAt',_0x9013('0x8c')]);_0x26e3c1=_[_0x9013('0x8d')](_['keys'](_0x2a7941),[_0x9013('0x8e'),_0x9013('0x8c'),_0x9013('0x8f'),'ListId']);if(_0x29bfc4[_0x9013('0x5a')]['id']){delete _0x29bfc4[_0x9013('0x5a')]['id'];}if(_[_0x9013('0x7a')](_0x29bfc4[_0x9013('0x5a')]['from'])){throw new db['Sequelize'][(_0x9013('0x90'))]('from\x20is\x20mandatory');}if(_['isNil'](_0x29bfc4['body'][_0x9013('0x5a')])||_0x29bfc4[_0x9013('0x5a')]['body']===''){throw new db['Sequelize'][(_0x9013('0x90'))](_0x9013('0x91'));}if(_[_0x9013('0x7a')](_0x29bfc4[_0x9013('0x5a')]['mapKey'])){throw new db[(_0x9013('0x8b'))][(_0x9013('0x90'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x26e3c1);}if(!_[_0x9013('0x92')](_0x26e3c1,_0x29bfc4['body']['mapKey'])){throw new db[(_0x9013('0x8b'))][(_0x9013('0x90'))](_0x9013('0x93')+_0x26e3c1);}_0x4aa539[_0x29bfc4[_0x9013('0x5a')][_0x9013('0x94')]]=_0x29bfc4[_0x9013('0x5a')][_0x9013('0x95')];})[_0x9013('0x1f')](function(){return db[_0x9013('0x52')]['find']({'where':{'id':_0x29bfc4[_0x9013('0x5e')]['id']},'include':[{'model':db['CmList'],'as':_0x9013('0x96'),'include':[{'model':db[_0x9013('0x97')],'as':_0x9013('0x98'),'where':_0x4aa539,'limit':0x1,'order':[['updatedAt',_0x9013('0x99')]]}]},{'model':db[_0x9013('0x9a')],'as':_0x9013('0x9b')}]});})['then'](handleEntityNotFound(_0x33dd57,null))[_0x9013('0x1f')](function(_0x8cd2d4){if(_0x8cd2d4&&_0x8cd2d4[_0x9013('0x96')]){_0x2b9cdf['account']=_0x8cd2d4;_0x2b9cdf[_0x9013('0x9c')]=_0x8cd2d4['Applications'];_0x2b9cdf[_0x9013('0x9d')]=_0x8cd2d4[_0x9013('0x96')];_0x2b9cdf[_0x9013('0x9c')]=_[_0x9013('0x9e')](_0x2b9cdf[_0x9013('0x9c')],[_0x9013('0x9f')],['asc']);if(_0x2b9cdf['account'][_0x9013('0x9b')]){delete _0x2b9cdf[_0x9013('0xa0')][_0x9013('0x9b')];}if(_0x2b9cdf[_0x9013('0xa0')][_0x9013('0x96')]&&_0x2b9cdf[_0x9013('0xa0')][_0x9013('0x96')][_0x9013('0x98')][_0x9013('0x48')]){return _0x2b9cdf[_0x9013('0xa0')][_0x9013('0x96')][_0x9013('0x98')][0x0];}var _0x3c711d=_['defaults'](_0x29bfc4[_0x9013('0x5a')],{'firstName':_0x29bfc4[_0x9013('0x5a')]['from'],'ListId':_0x8cd2d4[_0x9013('0xa1')]});_0x3c711d[_0x29bfc4[_0x9013('0x5a')][_0x9013('0x94')]]=_0x29bfc4[_0x9013('0x5a')][_0x9013('0x95')];return db['CmContact'][_0x9013('0x59')](_0x3c711d,{'fields':_0xf36437,'raw':!![]});}})['then'](handleEntityNotFound(_0x33dd57,null))['then'](function(_0x4bc0d3){_0x2b9cdf[_0x9013('0xa2')]=_0x4bc0d3;var _0x3f87e0=_0x29bfc4[_0x9013('0x5a')]['customerIp'];if(_0x29bfc4['headers'][_0x9013('0xa3')]){_0x3f87e0=_0x29bfc4[_0x9013('0x88')][_0x9013('0xa3')];}else if(_0x29bfc4['headers']['x-forwarded-for']){_0x3f87e0=_['first'](_0x29bfc4[_0x9013('0x88')]['x-forwarded-for'][_0x9013('0xa4')](','));}if(_0x4bc0d3){var _0x144a04={'ContactId':_0x4bc0d3['id'],'ChatWebsiteId':_0x29bfc4[_0x9013('0x5e')]['id'],'from':(_0x4bc0d3[_0x9013('0xa5')]||'')+'\x20'+(_0x4bc0d3[_0x9013('0xa6')]||''),'customerIp':_0x3f87e0,'customerPort':_0x29bfc4[_0x9013('0x88')][_0x9013('0xa7')]?_0x29bfc4[_0x9013('0x88')][_0x9013('0xa7')]:null,'referer':_0x29bfc4[_0x9013('0x5a')][_0x9013('0xa8')],'browserName':_0x1a498d[_0x9013('0xa9')][_0x9013('0x37')]&&_0x1a498d['browser'][_0x9013('0xaa')]?util[_0x9013('0xab')]('%s\x20%s',_0x1a498d[_0x9013('0xa9')][_0x9013('0x37')],_0x1a498d['browser'][_0x9013('0xaa')]):_0x9013('0xac'),'browserVersion':_0x1a498d['browser'][_0x9013('0xaa')]||_0x9013('0xac'),'osName':util[_0x9013('0xab')]('%s\x20%s',_0x1a498d['os'][_0x9013('0x37')],_0x1a498d['os'][_0x9013('0xaa')]),'osVersion':_0x1a498d['os'][_0x9013('0xaa')],'deviceModel':_0x1a498d[_0x9013('0xad')][_0x9013('0x45')]&&_0x1a498d[_0x9013('0xad')][_0x9013('0xae')]?util[_0x9013('0xab')]('%s\x20%s\x20%s',_0x1a498d['device'][_0x9013('0x45')],_0x1a498d[_0x9013('0xad')][_0x9013('0xae')],_0x1a498d[_0x9013('0xad')][_0x9013('0x3e')]):null,'deviceVendor':_0x1a498d[_0x9013('0xad')][_0x9013('0xae')],'deviceType':_0x1a498d[_0x9013('0xad')]['type'],'formData':JSON[_0x9013('0xaf')](_0x29bfc4[_0x9013('0x5a')])};var _0x10e6ea={'ChatWebsiteId':_0x29bfc4['params']['id'],'closed':![]};if(_0x29bfc4['body'][_0x9013('0xb0')]){_0x10e6ea[_0x9013('0xb0')]=_0x29bfc4[_0x9013('0x5a')][_0x9013('0xb0')];return db['ChatInteraction'][_0x9013('0x58')]({'where':_0x10e6ea})['then'](function(_0x510743){if(_0x510743){return[_0x510743,![]];}_0x144a04[_0x9013('0xb0')]=_0x29bfc4[_0x9013('0x5a')][_0x9013('0xb0')];_0x144a04[_0x9013('0xb1')]=_0x29bfc4[_0x9013('0x5a')][_0x9013('0xb1')];return db[_0x9013('0xb2')][_0x9013('0x59')](_0x144a04)[_0x9013('0x1f')](function(_0x121fe2){return[_0x121fe2,!![]];});});}_0x10e6ea[_0x9013('0xb3')]=_0x4bc0d3['id'];if(_0x29bfc4[_0x9013('0x5a')][_0x9013('0xb4')]&&_0x29bfc4[_0x9013('0x5a')][_0x9013('0xb4')]['id']){_0x10e6ea['id']=_0x29bfc4[_0x9013('0x5a')]['interaction']['id'];return db['ChatInteraction']['find']({'where':_0x10e6ea})[_0x9013('0x1f')](function(_0x40cfef){if(_0x40cfef){return[_0x40cfef,![]];}return db[_0x9013('0xb2')][_0x9013('0x59')](_0x144a04)[_0x9013('0x1f')](function(_0x3cf909){return[_0x3cf909,!![]];});});}return db['ChatInteraction'][_0x9013('0x59')](_0x144a04)['then'](function(_0x4d2dd2){return[_0x4d2dd2,!![]];});}})[_0x9013('0xb5')](function(_0x2b6d09,_0x55b273){if(_0x2b6d09){_0x2b5bcb=_0x55b273;if(!_0x55b273){var _0x4d7103={'from':(_0x2b9cdf[_0x9013('0xa2')][_0x9013('0xa5')]||'')+'\x20'+(_0x2b9cdf[_0x9013('0xa2')][_0x9013('0xa6')]||'')};if(_0x29bfc4['body'][_0x9013('0xb0')]&&_0x29bfc4['body']['messageId']&&_0x29bfc4[_0x9013('0x5a')][_0x9013('0xb0')]!=_0x29bfc4[_0x9013('0x5a')][_0x9013('0xb6')]){_0x4d7103[_0x9013('0xb0')]=_0x29bfc4[_0x9013('0x5a')][_0x9013('0xb6')];}return _0x2b6d09[_0x9013('0x32')](_0x4d7103);}else{return _0x2b6d09;}}})[_0x9013('0x1f')](function(_0x3b46e1){_0x2b9cdf[_0x9013('0xb4')]=_0x3b46e1[_0x9013('0x33')]({'plain':!![]});_0x2b9cdf[_0x9013('0xb4')][_0x9013('0xb7')]=_0x2b5bcb;if(_0x2b9cdf[_0x9013('0xb4')][_0x9013('0xb7')]){if(_0x2b9cdf['account'][_0x9013('0xb8')]){_0x2b9cdf[_0x9013('0x9c')][_0x9013('0xb9')]({'id':0x0,'priority':_0x2b9cdf['applications']['length']+0x1,'app':_0x9013('0xba'),'appdata':_0x9013('0xbb'),'interval':_0x9013('0xbc')});}}return db[_0x9013('0xbd')][_0x9013('0x59')]({'body':_0x29bfc4[_0x9013('0x5a')][_0x9013('0x5a')],'ChatWebsiteId':_0x29bfc4[_0x9013('0x5e')]['id'],'ChatInteractionId':_0x3b46e1['id'],'direction':'in','ContactId':_0x2b9cdf[_0x9013('0xa2')]['id'],'AttachmentId':_0x29bfc4[_0x9013('0x5a')][_0x9013('0xbe')]});})[_0x9013('0x1f')](function(_0x50d1fe){_0x2b9cdf[_0x9013('0x27')]=_0x50d1fe;if(_0x2b9cdf[_0x9013('0xb4')][_0x9013('0xbf')]){return db[_0x9013('0xc0')][_0x9013('0x58')]({'attributes':['id',_0x9013('0x37')],'where':{'id':_0x2b9cdf[_0x9013('0xb4')][_0x9013('0xbf')]}})[_0x9013('0x1f')](function(_0x5a9441){if(_0x5a9441){_0x2b9cdf[_0x9013('0x9c')]['unshift']({'id':0x0,'priority':0x0,'app':_0x9013('0xc1'),'appdata':_0x5a9441['name']+','+(_0x2b9cdf[_0x9013('0xa0')]['waitForTheAssignedAgent']||0xa),'interval':_0x9013('0xbc')});_0x2b9cdf[_0x9013('0xc2')]=!![];}return respondWithRpcPromise('Start','startRouting',_0x2b9cdf);});}return respondWithRpcPromise(_0x9013('0xc3'),'startRouting',_0x2b9cdf);})[_0x9013('0x1f')](function(_0x114531){respondWithRpcPromise(_0x9013('0xc4'),'EventManager',{'event':_0x9013('0x86'),'message':_0x114531},client9002);return _0x114531;})[_0x9013('0x1f')](respondWithResult(_0x33dd57,null))[_0x9013('0x29')](handleError(_0x33dd57,null));};exports[_0x9013('0xc5')]=function(_0x330b41,_0x25ac00,_0x575d4e){var _0x5833f5,_0x1547bc,_0x449e33;var _0x493b89=[];var _0x306244=[];var _0x326290={};var _0x47f81d=_0x330b41[_0x9013('0xc6')]||[];var _0x170a13=[];var _0x17e7a0;return db[_0x9013('0x97')][_0x9013('0x60')]()[_0x9013('0x1f')](function(_0xaa1119){if(!_0xaa1119){throw new db[(_0x9013('0x8b'))][(_0x9013('0x90'))](_0x9013('0xc7'));}_0x306244=_['difference'](_['keys'](_0xaa1119),[_0x9013('0x8e'),_0x9013('0x8c')]);_0x493b89=_[_0x9013('0x8d')](_[_0x9013('0x42')](_0xaa1119),[_0x9013('0x8e'),_0x9013('0x8c'),_0x9013('0x8f'),'ListId']);if(_0x330b41[_0x9013('0x5a')]['id']){delete _0x330b41[_0x9013('0x5a')]['id'];}if(_[_0x9013('0x7a')](_0x330b41[_0x9013('0x5a')][_0x9013('0x95')])){throw _0x25ac00[_0x9013('0x2b')](0x1f4)[_0x9013('0x38')](new db['Sequelize']['ValidationError'](_0x9013('0xc8')));}if(_[_0x9013('0x7a')](_0x330b41[_0x9013('0x5a')][_0x9013('0x5a')])||_0x330b41[_0x9013('0x5a')]['body']===''){throw _0x25ac00[_0x9013('0x2b')](0x1f4)[_0x9013('0x38')](new db[(_0x9013('0x8b'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x9013('0x7a')](_0x330b41['body'][_0x9013('0xc9')])){throw _0x25ac00['status'](0x1f4)[_0x9013('0x38')](new db['Sequelize']['ValidationError'](_0x9013('0xca')+_0x493b89));}if(!_['includes'](_0x493b89,_0x330b41[_0x9013('0x5a')][_0x9013('0xc9')])){throw _0x25ac00[_0x9013('0x2b')](0x1f4)[_0x9013('0x38')](new db['Sequelize']['ValidationError'](_0x9013('0xcb')+_0x493b89));}_0x326290[_0x330b41[_0x9013('0x5a')]['mapKeyOffline']]=_0x330b41[_0x9013('0x5a')][_0x9013('0x95')];})[_0x9013('0x1f')](function(){return db[_0x9013('0x52')][_0x9013('0x58')]({'where':{'id':_0x330b41[_0x9013('0x5e')]['id']},'include':[{'model':db[_0x9013('0xcc')],'as':_0x9013('0x96')},{'model':db['MailAccount'],'as':_0x9013('0xcd')}]});})[_0x9013('0x1f')](handleEntityNotFound(_0x25ac00,null))[_0x9013('0x1f')](function(_0x2706c8){if(_0x2706c8&&_0x2706c8['List']){_0x1547bc=_0x2706c8;var _0x281bdf=_[_0x9013('0x18')](_0x330b41[_0x9013('0x5a')],{'firstName':_0x330b41[_0x9013('0x5a')]['from'],'phone':_0x330b41[_0x9013('0x5a')][_0x9013('0x95')],'ListId':_0x2706c8[_0x9013('0xa1')]});_0x281bdf[_0x330b41[_0x9013('0x5a')][_0x9013('0xc9')]]=_0x330b41[_0x9013('0x5a')]['from'];return db[_0x9013('0x97')][_0x9013('0xce')]({'where':_0x326290,'defaults':_0x281bdf});}})[_0x9013('0xb5')](function(_0x6a38ff){if(_0x6a38ff){_0x449e33=_0x6a38ff;var _0x17f362=fs[_0x9013('0xcf')](path[_0x9013('0x7b')](config[_0x9013('0x75')],'server/files/templates/chatOfflineMessage.ejs'),'utf8');var _0x24c451=ejs[_0x9013('0xd0')](_0x17f362,{'body':_[_0x9013('0xd1')](_0x330b41[_0x9013('0x5a')]['body']),'bodyTitle':_0x1547bc[_0x9013('0xd2')]});return db[_0x9013('0xd3')][_0x9013('0x59')]({'body':_0x24c451,'ContactId':_0x6a38ff['id'],'ChatWebsiteId':_0x1547bc['id']});}})['then'](function(_0x30105c){_0x17e7a0=_0x30105c;if(_0x47f81d[_0x9013('0x48')]){var _0x31e204=_0x47f81d[_0x9013('0x40')](function(_0x5c925a){return{'name':_0x5c925a[_0x9013('0xd4')],'basename':_0x5c925a[_0x9013('0x6d')],'type':_0x5c925a[_0x9013('0xd5')],'ChatOfflineMessageId':_0x30105c['id']};});_0x170a13=_0x31e204['map'](_0x22cb5a=>{var _0x5b3da={'filename':_0x22cb5a['name'],'path':path[_0x9013('0x7b')](config[_0x9013('0x75')],_0x9013('0xd6'),_0x9013('0xc6'),_0x9013('0xd7'),_0x9013('0xd8'),_0x22cb5a[_0x9013('0xd9')])};return _0x5b3da;});if(!_0x1547bc[_0x9013('0xda')]){return db['sequelize'][_0x9013('0xdb')](function(_0x287186){return db[_0x9013('0xdc')][_0x9013('0xdd')](_0x31e204,{'transaction':_0x287186});});}}})[_0x9013('0x1f')](function(){if(_0x17e7a0){_0x5833f5=_0x17e7a0;return db[_0x9013('0xcd')][_0x9013('0x65')]({'where':{'active':!![]},'include':[{'model':db['MailServerOut'],'as':_0x9013('0xde'),'raw':!![]}]});}})[_0x9013('0x1f')](function(_0x24828d){if(_0x24828d&&_0x24828d['Smtp']&&_0x1547bc[_0x9013('0xdf')]&&_0x1547bc[_0x9013('0xe0')]){var _0x113a0b={'tls':{'rejectUnauthorized':![]}};if(_0x24828d[_0x9013('0xde')][_0x9013('0xe1')]){_0x113a0b['service']=_0x24828d['Smtp'][_0x9013('0xe1')];}else{_0x113a0b[_0x9013('0xe2')]=_0x24828d[_0x9013('0xde')][_0x9013('0xe2')];_0x113a0b[_0x9013('0xe3')]=_0x24828d['Smtp'][_0x9013('0xe3')];_0x113a0b[_0x9013('0xe4')]=_0x24828d[_0x9013('0xde')][_0x9013('0xe4')];}if(_0x24828d[_0x9013('0xde')][_0x9013('0xe5')]){_0x113a0b[_0x9013('0xe6')]={'user':_0x24828d[_0x9013('0xde')][_0x9013('0xe7')],'pass':_0x24828d['Smtp'][_0x9013('0xe8')]};}return respondWithRpcPromise(_0x9013('0xe9'),'sendMail',{'account':_0x113a0b,'message':{'from':util['format'](_0x9013('0xea'),_0x24828d['name'],_0x24828d[_0x9013('0xeb')]||_0x24828d[_0x9013('0xde')]['user']),'to':_0x1547bc[_0x9013('0xe0')],'subject':_0x1547bc[_0x9013('0xec')],'html':_0x5833f5[_0x9013('0x5a')],'attachments':_0x170a13}},client9003)[_0x9013('0x1f')](function(){return _0x5833f5;})['catch'](function(_0x5e09b9){console[_0x9013('0x25')](_0x5e09b9);});}})[_0x9013('0x1f')](function(){if(_0x1547bc&&_0x1547bc[_0x9013('0xda')]&&_0x1547bc['MailAccountId']){var _0x4de2d6=[];if(_0x47f81d['length']){_0x4de2d6=_0x47f81d[_0x9013('0x40')](function(_0x5cfd8d){return{'name':_0x5cfd8d[_0x9013('0xd4')],'basename':_0x5cfd8d['filename'],'type':_0x5cfd8d['mimetype'],'ChatOfflineMessageId':_0x17e7a0['id']};});}var _0x12c8ea;if(!_[_0x9013('0x7a')](_0x1547bc[_0x9013('0xed')])){var _0x2b8460=_['map'](_0x330b41[_0x9013('0x5a')],function(_0x6f4e8){return _0x6f4e8;});var _0x512726=_[_0x9013('0xee')](_0x2b8460)[0x0];var _0x56eacb=_[_0x9013('0xef')](_0x512726,function(_0x5a0e0f){return _0x5a0e0f;});_0x12c8ea=_0x56eacb[0x1][_0x1547bc[_0x9013('0xed')]];}var _0x55f009={'from':_0x449e33[_0x9013('0xeb')],'firstName':_0x449e33['firstName'],'lastName':_0x449e33['lastName'],'mapKey':_0x9013('0xeb'),'message':{'from':_0x449e33[_0x9013('0xeb')],'to':_0x1547bc['MailAccount'][_0x9013('0xeb')],'cc':'','subject':_['isNil'](_0x12c8ea)?_0x1547bc[_0x9013('0xec')]:_0x12c8ea,'messageId':'','sentAt':new Date(),'attach':_0x4de2d6[_0x9013('0x48')],'attachments':_0x4de2d6,'originChannel':'Chat','ChatWebsiteId':_0x1547bc['id'],'ChatOfflineMessageId':_0x5833f5['id'],'originTo':_0x1547bc[_0x9013('0xcd')][_0x9013('0xeb')]},'body':_0x5833f5[_0x9013('0x5a')]};var _0x3d4405={'account':{'id':_0x1547bc[_0x9013('0xf0')]},'body':_0x55f009,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0x9013('0xf1'),'notifyMail',_0x3d4405,client9001)[_0x9013('0x1f')](function(){return _0x5833f5;})[_0x9013('0x29')](function(_0x1eac7f){console['error'](_0x1eac7f);});}return;})[_0x9013('0x1f')](function(){if(_0x5833f5){return _0x5833f5;}})[_0x9013('0x1f')](respondWithResult(_0x25ac00,null))[_0x9013('0x29')](function(_0x1d7afa){console[_0x9013('0x25')](_0x9013('0x29'),_0x1d7afa);for(var _0x43348a of _0x47f81d){var _0x461265=path['join'](config[_0x9013('0x75')],_0x9013('0xd6'),_0x9013('0xc6'),_0x9013('0xd7'),_0x9013('0xd8'),_0x43348a[_0x9013('0x6d')]);fs_extra[_0x9013('0xf2')](_0x461265)['catch'](function(_0x3607b8){console['error'](_0x9013('0xf3'),_0x461265,_0x3607b8);});}});};exports[_0x9013('0xf4')]=function(_0x329c8d,_0xea2024,_0x3c219f){return db['ChatInteraction'][_0x9013('0x58')]({'where':{'id':_0x329c8d[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0xea2024,null))['then'](function(_0x876cb6){if(_0x876cb6){return _0x876cb6[_0x9013('0xf4')](_0x329c8d[_0x9013('0x5a')][_0x9013('0x6b')],_[_0x9013('0xf5')](_0x329c8d[_0x9013('0x5a')],['ids','id'])||{});}})[_0x9013('0x1f')](respondWithResult(_0xea2024,null))[_0x9013('0x29')](handleError(_0xea2024,null));};exports[_0x9013('0xf6')]=function(_0xea098b,_0x345892,_0x157947){var _0x5b8394={'raw':![],'where':{}};var _0x293e71={};var _0x965288={'count':0x0,'rows':[]};return db[_0x9013('0x52')][_0x9013('0x65')]({'where':{'id':_0xea098b[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x345892,null))[_0x9013('0x1f')](function(_0x2f2d30){if(_0x2f2d30){_0x293e71[_0x9013('0x45')]=_[_0x9013('0x42')](db[_0x9013('0xb2')][_0x9013('0x3c')]);_0x293e71['query']=_[_0x9013('0x42')](_0xea098b[_0x9013('0x41')]);_0x293e71[_0x9013('0x43')]=_[_0x9013('0x44')](_0x293e71[_0x9013('0x45')],_0x293e71[_0x9013('0x41')]);_0x5b8394[_0x9013('0x46')]=_[_0x9013('0x44')](_0x293e71['model'],qs[_0x9013('0x47')](_0xea098b[_0x9013('0x41')]['fields']));_0x5b8394[_0x9013('0x46')]=_0x5b8394[_0x9013('0x46')][_0x9013('0x48')]?_0x5b8394['attributes']:_0x293e71['model'];if(!_0xea098b[_0x9013('0x41')][_0x9013('0x66')](_0x9013('0x49'))){_0x5b8394[_0x9013('0x2f')]=qs[_0x9013('0x2f')](_0xea098b[_0x9013('0x41')]['limit']);_0x5b8394[_0x9013('0x2d')]=qs[_0x9013('0x2d')](_0xea098b['query'][_0x9013('0x2d')]);}_0x5b8394[_0x9013('0x4a')]=qs[_0x9013('0x4b')](_0xea098b[_0x9013('0x41')]['sort']);_0x5b8394[_0x9013('0x4c')]=qs[_0x9013('0x43')](_[_0x9013('0x4d')](_0xea098b['query'],_0x293e71['filters']));_0x5b8394['where']['ChatWebsiteId']=_0x2f2d30['id'];if(_0xea098b[_0x9013('0x41')][_0x9013('0x4f')]){_0x5b8394[_0x9013('0x4c')]=_[_0x9013('0x50')](_0x5b8394[_0x9013('0x4c')],{'$or':_[_0x9013('0x40')](_0x5b8394[_0x9013('0x46')],function(_0x4ac1be){var _0x39a8df={};_0x39a8df[_0x4ac1be]={'$like':'%'+_0xea098b[_0x9013('0x41')][_0x9013('0x4f')]+'%'};return _0x39a8df;})});}_0x5b8394=_[_0x9013('0x50')]({},_0x5b8394,_0xea098b['options']);return db[_0x9013('0xb2')][_0x9013('0x53')]({'where':_0x5b8394[_0x9013('0x4c')]})[_0x9013('0x1f')](function(_0x31a44e){_0x965288['count']=_0x31a44e;if(_0xea098b[_0x9013('0x41')][_0x9013('0x54')]){_0x5b8394[_0x9013('0x55')]=[{'model':db[_0x9013('0x97')],'as':_0x9013('0xf7'),'required':![]},{'model':db['User'],'as':_0x9013('0xf8'),'attributes':['name',_0x9013('0xf9'),'internal'],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x9013('0x37'),_0x9013('0xfa')],'where':_0xea098b[_0x9013('0x41')][_0x9013('0xfb')]?{'id':_0xea098b[_0x9013('0x41')][_0x9013('0xfb')]}:undefined,'required':_0xea098b[_0x9013('0x41')][_0x9013('0xfb')]?!![]:![]}];}return db[_0x9013('0xb2')]['findAll'](_0x5b8394);})[_0x9013('0x1f')](function(_0x88151a){_0x965288[_0x9013('0x57')]=_0x88151a;return _0x965288;});}})['then'](respondWithFilteredResult(_0x345892,_0x5b8394))[_0x9013('0x29')](handleError(_0x345892,null));};function iftimePromise(_0x46e6ec,_0x307736){return respondWithRpcPromise(_0x9013('0xfc'),_0x9013('0xfd'),{'command':_0x307736['timezone']?util['format'](_0x9013('0xfe'),_0x46e6ec[_0x9013('0xff')],_0x307736[_0x9013('0x100')]):util[_0x9013('0xab')](_0x9013('0x101'),_0x46e6ec[_0x9013('0xff')])},client9002)['then'](function(_0x2ad1d0){var _0x1598d6=_0x2ad1d0&&_0x2ad1d0[_0x9013('0x102')](_0x9013('0x103'))>=0x0?!![]:![];logger[_0x9013('0x20')](_0x9013('0x104'),_0x307736['id'],_0x46e6ec['id'],_0x46e6ec[_0x9013('0xff')],_0x1598d6?'ONLINE':_0x9013('0x105'),_0x307736['timezone']?_0x307736[_0x9013('0x100')]:_0x9013('0x106'));return _0x1598d6;})['catch'](function(_0x55e674){logger[_0x9013('0x25')](_0x9013('0x104'),_0x307736['id'],_0x46e6ec['id'],_0x46e6ec[_0x9013('0xff')],util[_0x9013('0x107')](_0x55e674,{'showHidden':![],'depth':null}),_0x307736[_0x9013('0x100')]?_0x307736[_0x9013('0x100')]:'No\x20timezone');return![];});}exports[_0x9013('0xfd')]=function(_0x4bb1ce,_0x1e4c01,_0xea2354){var _0x4890e4=0x0;var _0x645b50=0x0;var _0x403e07=![];var _0x3d00f4;var _0x22e55c;return db[_0x9013('0x52')][_0x9013('0x58')]({'where':{'id':_0x4bb1ce[_0x9013('0x5e')]['id']},'include':[{'model':db[_0x9013('0x108')],'as':_0x9013('0x108'),'include':[{'model':db[_0x9013('0x108')],'as':_0x9013('0x109'),'attributes':['id',_0x9013('0xff')],'raw':!![]}]}]})[_0x9013('0x1f')](handleEntityNotFound(_0x1e4c01,null))[_0x9013('0x1f')](function(_0x18a4a4){if(_0x18a4a4){_0x3d00f4=_0x18a4a4;return _0x18a4a4[_0x9013('0x10a')]({'raw':!![]});}})[_0x9013('0x1f')](function(_0x2dfd31){if(_0x3d00f4){if(_0x2dfd31){_0x22e55c=_0x2dfd31;}}return require('../../config/license/util')['getLicense']();})[_0x9013('0x1f')](function(_0x17c4f7){if(_0x17c4f7){_0x645b50=_0x17c4f7[_0x9013('0x10b')];_0x403e07=_0x17c4f7[_0x9013('0x79')];}})['then'](function(){return db[_0x9013('0xb2')][_0x9013('0x53')]({'where':{'closed':![]}});})['then'](function(_0xda5cd5){_0x4890e4=_0xda5cd5;if(_0x645b50&&_0xda5cd5>_0x645b50){return db[_0x9013('0x10c')][_0x9013('0x65')]({'where':{'id':0x1}})[_0x9013('0x1f')](function(_0x24f812){if(_0x24f812){_0x24f812[_0x9013('0x10d')](_0x9013('0x10e'));}});}})[_0x9013('0x1f')](function(){if(_0x3d00f4[_0x9013('0x108')]&&_0x3d00f4[_0x9013('0x108')][_0x9013('0x109')]){var _0x1fed30=[];for(var _0x16b836=0x0;_0x16b836<_0x3d00f4[_0x9013('0x108')][_0x9013('0x109')][_0x9013('0x48')];_0x16b836++){var _0x49b33b=_0x3d00f4[_0x9013('0x108')]['Intervals'][_0x16b836]['get']({'plain':!![]});_0x1fed30[_0x9013('0xb9')](iftimePromise(_0x49b33b,_0x3d00f4));}return BPromise[_0x9013('0x10f')](_0x1fed30)[_0x9013('0x1f')](function(_0x5e4221){return _[_0x9013('0x110')](_0x5e4221);});}else{return!![];}})[_0x9013('0x1f')](function(_0x376587){var _0x470b65=fs[_0x9013('0xcf')](path[_0x9013('0x7b')](config[_0x9013('0x75')],_0x9013('0x111')),_0x9013('0x112'));var _0x34e82e={'remote':_0x3d00f4[_0x9013('0x113')],'query':querystring['stringify'](_[_0x9013('0x50')](_0x3d00f4[_0x9013('0x33')]({'plain':!![]}),{'customerIp':_0x4bb1ce['headers'][_0x9013('0x114')]||_0x4bb1ce[_0x9013('0x88')][_0x9013('0x115')]||_0x4bb1ce[_0x9013('0x116')][_0x9013('0x117')]||_0x4bb1ce['ip'],'referer':_0x4bb1ce['headers'][_0x9013('0xa8')],'openedInteractions':_0x4890e4,'maxInteractions':_0x645b50,'virtual':_0x403e07[_0x9013('0x10b')],'online':_0x376587,'custom':_0x403e07}))[_0x9013('0x118')](/'/g,'\x5c\x27')};_0x1e4c01[_0x9013('0x38')](ejs[_0x9013('0xd0')](Mustache[_0x9013('0xd0')](_0x470b65,_0x34e82e),{'proactiveActions':_0x22e55c,'alignment':_0x3d00f4[_0x9013('0x119')],'verticalAlignment':_0x3d00f4[_0x9013('0x11a')],'div_color':_0x3d00f4[_0x9013('0xfa')],'text_color':_0x3d00f4[_0x9013('0x11b')],'button_color':_0x3d00f4['color_button'],'background_color':_0x3d00f4[_0x9013('0x11c')]}));})['catch'](handleError(_0x1e4c01,null));};exports[_0x9013('0x11d')]=function(_0x180888,_0x771d5a,_0x1fb734){return db[_0x9013('0x52')][_0x9013('0x65')]({'where':{'id':_0x180888['params']['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x771d5a,null))['then'](function(_0x22d067){if(_0x22d067){return db['sequelize']['transaction'](function(_0x554324){return db[_0x9013('0x9a')][_0x9013('0x5f')]({'where':{'ChatWebsiteId':_0x180888[_0x9013('0x5e')]['id']},'transaction':_0x554324})[_0x9013('0x1f')](function(_0xb4adf8){var _0x4013c4=_[_0x9013('0x40')](_0x180888[_0x9013('0x5a')],function(_0x3fae9a){_0x3fae9a['ChatWebsiteId']=_0x180888[_0x9013('0x5e')]['id'];return _0x3fae9a;});return db[_0x9013('0x9a')][_0x9013('0xdd')](_0x4013c4,{'transaction':_0x554324});});})[_0x9013('0x1f')](function(){return db[_0x9013('0x9a')][_0x9013('0x11e')]({'where':{'ChatWebsiteId':_0x180888['params']['id']},'order':_0x9013('0x9f')});});}})[_0x9013('0x1f')](respondWithResult(_0x771d5a,null))[_0x9013('0x29')](handleError(_0x771d5a,null));};exports[_0x9013('0x11f')]=function(_0x2e9e7a,_0x47a9c8,_0x5a36e8){var _0x52d3f7={};var _0x99728e={};var _0x550c68;var _0x16f087;return db['ChatWebsite'][_0x9013('0x65')]({'where':{'id':_0x2e9e7a['params']['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x47a9c8,null))[_0x9013('0x1f')](function(_0x19c874){if(_0x19c874){_0x550c68=_0x19c874;_0x99728e['model']=_['keys'](db[_0x9013('0x9a')][_0x9013('0x3c')]);_0x99728e[_0x9013('0x41')]=_['keys'](_0x2e9e7a[_0x9013('0x41')]);_0x99728e[_0x9013('0x43')]=_['intersection'](_0x99728e[_0x9013('0x45')],_0x99728e[_0x9013('0x41')]);_0x52d3f7[_0x9013('0x46')]=_[_0x9013('0x44')](_0x99728e[_0x9013('0x45')],qs['fields'](_0x2e9e7a[_0x9013('0x41')]['fields']));_0x52d3f7[_0x9013('0x46')]=_0x52d3f7[_0x9013('0x46')][_0x9013('0x48')]?_0x52d3f7[_0x9013('0x46')]:_0x99728e[_0x9013('0x45')];_0x52d3f7['order']=qs['sort'](_0x2e9e7a[_0x9013('0x41')][_0x9013('0x4b')]);_0x52d3f7[_0x9013('0x4c')]=qs[_0x9013('0x43')](_['pick'](_0x2e9e7a[_0x9013('0x41')],_0x99728e[_0x9013('0x43')]));if(_0x2e9e7a['query'][_0x9013('0x4f')]){_0x52d3f7[_0x9013('0x4c')]=_['merge'](_0x52d3f7[_0x9013('0x4c')],{'$or':_[_0x9013('0x40')](_0x52d3f7[_0x9013('0x46')],function(_0x4d41a8){var _0x4a6c44={};_0x4a6c44[_0x4d41a8]={'$like':'%'+_0x2e9e7a[_0x9013('0x41')]['filter']+'%'};return _0x4a6c44;})});}_0x52d3f7=_[_0x9013('0x50')]({},_0x52d3f7,_0x2e9e7a['options']);return _0x550c68[_0x9013('0x11f')](_0x52d3f7);}})['then'](function(_0x17840e){if(_0x17840e){_0x16f087=_0x17840e[_0x9013('0x48')];if(!_0x2e9e7a[_0x9013('0x41')][_0x9013('0x66')](_0x9013('0x49'))){_0x52d3f7[_0x9013('0x2f')]=qs[_0x9013('0x2f')](_0x2e9e7a[_0x9013('0x41')][_0x9013('0x2f')]);_0x52d3f7[_0x9013('0x2d')]=qs[_0x9013('0x2d')](_0x2e9e7a[_0x9013('0x41')][_0x9013('0x2d')]);}return _0x550c68[_0x9013('0x11f')](_0x52d3f7);}})[_0x9013('0x1f')](function(_0x58e5f7){if(_0x58e5f7){return _0x58e5f7?{'count':_0x16f087,'rows':_0x58e5f7}:null;}})['then'](respondWithResult(_0x47a9c8,null))['catch'](handleError(_0x47a9c8,null));};exports['addProactiveActions']=function(_0x4037ff,_0x18cc07,_0x1c96dc){return db['chatProactiveAction'][_0x9013('0x58')]({'where':{'id':_0x4037ff['params']['id']}})['then'](handleEntityNotFound(_0x18cc07,null))[_0x9013('0x1f')](function(_0x2b647e){if(_0x2b647e){return _0x2b647e[_0x9013('0x120')](_0x4037ff['body'][_0x9013('0x6b')],_[_0x9013('0xf5')](_0x4037ff['body'],[_0x9013('0x6b'),'id'])||{});}})[_0x9013('0x1f')](respondWithResult(_0x18cc07,null))[_0x9013('0x29')](handleError(_0x18cc07,null));};exports[_0x9013('0x10a')]=function(_0x28ede4,_0x24cef4,_0x263ae8){var _0x19bd1a={};var _0x18e500={};var _0x41a928;var _0x38142b;return db[_0x9013('0x52')]['findOne']({'where':{'id':_0x28ede4[_0x9013('0x5e')]['id']}})['then'](handleEntityNotFound(_0x24cef4,null))[_0x9013('0x1f')](function(_0x4aa142){if(_0x4aa142){_0x41a928=_0x4aa142;_0x18e500[_0x9013('0x45')]=_[_0x9013('0x42')](db['ChatProactiveAction']['rawAttributes']);_0x18e500['query']=_[_0x9013('0x42')](_0x28ede4[_0x9013('0x41')]);_0x18e500['filters']=_[_0x9013('0x44')](_0x18e500[_0x9013('0x45')],_0x18e500['query']);_0x19bd1a[_0x9013('0x46')]=_['intersection'](_0x18e500[_0x9013('0x45')],qs[_0x9013('0x47')](_0x28ede4[_0x9013('0x41')]['fields']));_0x19bd1a[_0x9013('0x46')]=_0x19bd1a[_0x9013('0x46')][_0x9013('0x48')]?_0x19bd1a['attributes']:_0x18e500['model'];_0x19bd1a[_0x9013('0x4a')]=qs[_0x9013('0x4b')](_0x28ede4[_0x9013('0x41')][_0x9013('0x4b')]);_0x19bd1a['where']=qs[_0x9013('0x43')](_[_0x9013('0x4d')](_0x28ede4[_0x9013('0x41')],_0x18e500[_0x9013('0x43')]));if(_0x28ede4[_0x9013('0x41')][_0x9013('0x4f')]){_0x19bd1a[_0x9013('0x4c')]=_[_0x9013('0x50')](_0x19bd1a[_0x9013('0x4c')],{'$or':_[_0x9013('0x40')](_0x19bd1a[_0x9013('0x46')],function(_0x159a5f){var _0x185a3d={};_0x185a3d[_0x159a5f]={'$like':'%'+_0x28ede4['query'][_0x9013('0x4f')]+'%'};return _0x185a3d;})});}_0x19bd1a=_[_0x9013('0x50')]({},_0x19bd1a,_0x28ede4[_0x9013('0x51')]);return _0x41a928['getProactiveActions'](_0x19bd1a);}})[_0x9013('0x1f')](function(_0x489ce1){if(_0x489ce1){_0x38142b=_0x489ce1[_0x9013('0x48')];if(!_0x28ede4['query']['hasOwnProperty'](_0x9013('0x49'))){_0x19bd1a['limit']=qs[_0x9013('0x2f')](_0x28ede4[_0x9013('0x41')]['limit']);_0x19bd1a[_0x9013('0x2d')]=qs[_0x9013('0x2d')](_0x28ede4['query'][_0x9013('0x2d')]);}return _0x41a928['getProactiveActions'](_0x19bd1a);}})[_0x9013('0x1f')](function(_0x54ceec){if(_0x54ceec){return _0x54ceec?{'count':_0x38142b,'rows':_0x54ceec}:null;}})[_0x9013('0x1f')](respondWithResult(_0x24cef4,null))[_0x9013('0x29')](handleError(_0x24cef4,null));};exports['getFields']=function(_0x24dcdd,_0xfd3910,_0x47eec4){var _0x17e845=_0x24dcdd['query'][_0x9013('0x121')]===_0x9013('0x122')?_0x9013('0x123'):_0x9013('0x124');return db['ChatWebsite'][_0x9013('0x58')]({'attributes':['id',_0x17e845],'where':{'id':_0x24dcdd[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0xfd3910,null))['then'](function(_0x537289){if(_0x537289){var _0x5c86a3=_0x537289[_0x17e845];var _0x5e6b28=_0x5c86a3&&_0x5c86a3[_0x9013('0x125')]?_0x5c86a3[_0x9013('0x125')]:[];_0xfd3910[_0x9013('0x38')]({'fromKey':_[_0x9013('0x7a')](_0x5c86a3['fromKey'])?undefined:_0x5c86a3['fromKey'],'count':_0x5e6b28[_0x9013('0x48')],'rows':_0x5e6b28});}})[_0x9013('0x29')](handleError(_0xfd3910,null));};exports[_0x9013('0x126')]=function(_0xd0a4a,_0x1c3145,_0x4a10a7){var _0x21a9be={'raw':![],'where':{}};var _0x181895={};var _0x52d5c5={'count':0x0,'rows':[]};return db[_0x9013('0x52')][_0x9013('0x65')]({'where':{'id':_0xd0a4a[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x1c3145,null))[_0x9013('0x1f')](function(_0xf53545){if(_0xf53545){_0x181895[_0x9013('0x45')]=_['keys'](db['ChatOfflineMessage'][_0x9013('0x3c')]);_0x181895[_0x9013('0x41')]=_[_0x9013('0x42')](_0xd0a4a[_0x9013('0x41')]);_0x181895[_0x9013('0x43')]=_[_0x9013('0x44')](_0x181895[_0x9013('0x45')],_0x181895[_0x9013('0x41')]);_0x21a9be['attributes']=_['intersection'](_0x181895['model'],qs[_0x9013('0x47')](_0xd0a4a[_0x9013('0x41')][_0x9013('0x47')]));_0x21a9be[_0x9013('0x46')]=_0x21a9be[_0x9013('0x46')][_0x9013('0x48')]?_0x21a9be[_0x9013('0x46')]:_0x181895[_0x9013('0x45')];if(!_0xd0a4a[_0x9013('0x41')][_0x9013('0x66')](_0x9013('0x49'))){_0x21a9be['limit']=qs[_0x9013('0x2f')](_0xd0a4a[_0x9013('0x41')][_0x9013('0x2f')]);_0x21a9be['offset']=qs[_0x9013('0x2d')](_0xd0a4a['query'][_0x9013('0x2d')]);}_0x21a9be['order']=qs[_0x9013('0x4b')](_0xd0a4a[_0x9013('0x41')][_0x9013('0x4b')]);_0x21a9be[_0x9013('0x4c')]=qs[_0x9013('0x43')](_[_0x9013('0x4d')](_0xd0a4a['query'],_0x181895['filters']));_0x21a9be[_0x9013('0x4c')]['ChatWebsiteId']=_0xf53545['id'];if(_0xd0a4a[_0x9013('0x41')][_0x9013('0x4f')]){_0x21a9be[_0x9013('0x4c')]=_[_0x9013('0x50')](_0x21a9be[_0x9013('0x4c')],{'$or':_['map'](_0x21a9be['attributes'],function(_0x35a06c){var _0x102f45={};_0x102f45[_0x35a06c]={'$like':'%'+_0xd0a4a[_0x9013('0x41')]['filter']+'%'};return _0x102f45;})});}_0x21a9be=_[_0x9013('0x50')]({},_0x21a9be,_0xd0a4a[_0x9013('0x51')]);return db['ChatOfflineMessage'][_0x9013('0x53')]({'where':_0x21a9be[_0x9013('0x4c')]})[_0x9013('0x1f')](function(_0x18906c){_0x52d5c5[_0x9013('0x53')]=_0x18906c;if(_0xd0a4a[_0x9013('0x41')]['includeAll']){_0x21a9be[_0x9013('0x55')]=[{'all':!![]}];}else{_0x21a9be['include']=[{'model':db['CmContact'],'as':_0x9013('0xf7'),'required':![]},{'model':db['Attachment'],'as':_0x9013('0x127'),'required':![]}];}return db[_0x9013('0xd3')][_0x9013('0x56')](_0x21a9be);})['then'](function(_0x4bf782){_0x52d5c5[_0x9013('0x57')]=_0x4bf782;return _0x52d5c5;});}})[_0x9013('0x1f')](respondWithFilteredResult(_0x1c3145,_0x21a9be))[_0x9013('0x29')](handleError(_0x1c3145,null));};exports[_0x9013('0x128')]=function(_0x1658aa,_0x130008,_0x145cca){return db['ChatWebsite'][_0x9013('0x58')]({'where':{'id':_0x1658aa[_0x9013('0x5e')]['id']}})['then'](handleEntityNotFound(_0x130008,null))['then'](function(_0x3c83cf){if(_0x3c83cf){return _0x3c83cf[_0x9013('0x128')](_0x1658aa[_0x9013('0x5a')][_0x9013('0x6b')],_[_0x9013('0xf5')](_0x1658aa['body'],[_0x9013('0x6b'),'id'])||{})[_0x9013('0xb5')](function(_0x2d83b5){for(var _0x4f4f0c=0x0;_0x4f4f0c<_0x1658aa[_0x9013('0x5a')][_0x9013('0x6b')]['length'];_0x4f4f0c+=0x1){socket[_0x9013('0x129')](_0x9013('0x12a'),{'UserId':Number(_0x1658aa[_0x9013('0x5a')][_0x9013('0x6b')][_0x4f4f0c]),'ChatWebsiteId':Number(_0x1658aa[_0x9013('0x5e')]['id'])});}return _0x2d83b5;});}})['then'](respondWithResult(_0x130008,null))['catch'](handleError(_0x130008,null));};exports[_0x9013('0x12b')]=function(_0x32c342,_0x5bef04,_0x363696){return db['ChatWebsite'][_0x9013('0x58')]({'where':{'id':_0x32c342['params']['id']}})['then'](handleEntityNotFound(_0x5bef04,null))['then'](function(_0x1ab694){if(_0x1ab694){return _0x1ab694[_0x9013('0x12b')](_0x32c342['query']['ids'])[_0x9013('0x1f')](function(){if(_[_0x9013('0x12c')](_0x32c342[_0x9013('0x41')]['ids'])){for(var _0x373916=0x0;_0x373916<_0x32c342['query']['ids'][_0x9013('0x48')];_0x373916+=0x1){socket[_0x9013('0x129')](_0x9013('0x12d'),{'UserId':Number(_0x32c342[_0x9013('0x41')][_0x9013('0x6b')][_0x373916]),'ChatWebsiteId':Number(_0x32c342[_0x9013('0x5e')]['id'])});}}else{socket['emit']('userChatWebsite:remove',{'UserId':Number(_0x32c342['query'][_0x9013('0x6b')]),'ChatWebsiteId':Number(_0x32c342[_0x9013('0x5e')]['id'])});}});}})['then'](respondWithStatusCode(_0x5bef04,null))['catch'](handleError(_0x5bef04,null));};exports[_0x9013('0x12e')]=function(_0x14d666,_0x14be07,_0x2d66b7){var _0x5d24c9={};var _0x444e67={};var _0x54d73c;var _0x2c3094;return db[_0x9013('0x52')][_0x9013('0x65')]({'where':{'id':_0x14d666[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x14be07,null))[_0x9013('0x1f')](function(_0x3b6826){if(_0x3b6826){_0x54d73c=_0x3b6826;_0x444e67[_0x9013('0x45')]=_['keys'](db[_0x9013('0xc0')][_0x9013('0x3c')]);_0x444e67['query']=_['keys'](_0x14d666['query']);_0x444e67['filters']=_[_0x9013('0x44')](_0x444e67[_0x9013('0x45')],_0x444e67[_0x9013('0x41')]);_0x5d24c9[_0x9013('0x46')]=_[_0x9013('0x44')](_0x444e67[_0x9013('0x45')],qs['fields'](_0x14d666['query'][_0x9013('0x47')]));_0x5d24c9['attributes']=_0x5d24c9[_0x9013('0x46')][_0x9013('0x48')]?_0x5d24c9[_0x9013('0x46')]:_0x444e67[_0x9013('0x45')];_0x5d24c9[_0x9013('0x4a')]=qs[_0x9013('0x4b')](_0x14d666['query'][_0x9013('0x4b')]);_0x5d24c9[_0x9013('0x4c')]=qs[_0x9013('0x43')](_[_0x9013('0x4d')](_0x14d666[_0x9013('0x41')],_0x444e67[_0x9013('0x43')]));if(_0x14d666['query']['filter']){_0x5d24c9[_0x9013('0x4c')]=_[_0x9013('0x50')](_0x5d24c9[_0x9013('0x4c')],{'$or':_['map'](_0x5d24c9[_0x9013('0x46')],function(_0x23fc10){var _0x48f0f3={};_0x48f0f3[_0x23fc10]={'$like':'%'+_0x14d666['query'][_0x9013('0x4f')]+'%'};return _0x48f0f3;})});}_0x5d24c9=_['merge']({},_0x5d24c9,_0x14d666['options']);return _0x54d73c[_0x9013('0x12e')](_0x5d24c9);}})[_0x9013('0x1f')](function(_0x40f204){if(_0x40f204){_0x2c3094=_0x40f204[_0x9013('0x48')];if(!_0x14d666[_0x9013('0x41')][_0x9013('0x66')](_0x9013('0x49'))){_0x5d24c9[_0x9013('0x2f')]=qs[_0x9013('0x2f')](_0x14d666[_0x9013('0x41')][_0x9013('0x2f')]);_0x5d24c9[_0x9013('0x2d')]=qs['offset'](_0x14d666[_0x9013('0x41')]['offset']);}return _0x54d73c[_0x9013('0x12e')](_0x5d24c9);}})[_0x9013('0x1f')](function(_0x1d06f1){if(_0x1d06f1){return _0x1d06f1?{'count':_0x2c3094,'rows':_0x1d06f1}:null;}})[_0x9013('0x1f')](respondWithResult(_0x14be07,null))[_0x9013('0x29')](handleError(_0x14be07,null));};
\ No newline at end of file
index caf452d..d3c76bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x432b=['hook','exports','events','ChatWebsite','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x432b,0x161));var _0xb432=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x432b[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xb432('0x0'));var ChatWebsite=require('../../mysqldb')['db'][_0xb432('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xb432('0x2')](0x0);var events={'afterCreate':_0xb432('0x3'),'afterUpdate':_0xb432('0x4'),'afterDestroy':'remove'};function emitEvent(_0x525deb){return function(_0x93e722,_0x4cefc4,_0x4541d3){ChatWebsiteEvents['emit'](_0x525deb+':'+_0x93e722['id'],_0x93e722);ChatWebsiteEvents[_0xb432('0x5')](_0x525deb,_0x93e722);_0x4541d3(null);};}for(var e in events){if(events[_0xb432('0x6')](e)){var event=events[e];ChatWebsite[_0xb432('0x7')](e,emitEvent(event));}}module[_0xb432('0x8')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0x6737=['emit','hasOwnProperty','../../mysqldb','ChatWebsite','save','update','remove'];(function(_0x2d5eef,_0x1fbf3f){var _0x32da84=function(_0x2e66f1){while(--_0x2e66f1){_0x2d5eef['push'](_0x2d5eef['shift']());}};_0x32da84(++_0x1fbf3f);}(_0x6737,0xe2));var _0x7673=function(_0x3bfae5,_0x361fbd){_0x3bfae5=_0x3bfae5-0x0;var _0x138d33=_0x6737[_0x3bfae5];return _0x138d33;};'use strict';var EventEmitter=require('events');var ChatWebsite=require(_0x7673('0x0'))['db'][_0x7673('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7673('0x2'),'afterUpdate':_0x7673('0x3'),'afterDestroy':_0x7673('0x4')};function emitEvent(_0x12efff){return function(_0x54002e,_0x32e6f2,_0x22ce8d){ChatWebsiteEvents['emit'](_0x12efff+':'+_0x54002e['id'],_0x54002e);ChatWebsiteEvents[_0x7673('0x5')](_0x12efff,_0x54002e);_0x22ce8d(null);};}for(var e in events){if(events[_0x7673('0x6')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
index 9367586..e62ac68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0288=['../../config/logger','api','bluebird','path','../../config/environment','exports','define','ChatWebsite','chat_websites','lodash'];(function(_0x232ea0,_0x47e4f4){var _0x17d22f=function(_0x201bdd){while(--_0x201bdd){_0x232ea0['push'](_0x232ea0['shift']());}};_0x17d22f(++_0x47e4f4);}(_0x0288,0x171));var _0x8028=function(_0x5d3b79,_0x5acedc){_0x5d3b79=_0x5d3b79-0x0;var _0x4da191=_0x0288[_0x5d3b79];return _0x4da191;};'use strict';var _=require(_0x8028('0x0'));var util=require('util');var logger=require(_0x8028('0x1'))(_0x8028('0x2'));var moment=require('moment');var BPromise=require(_0x8028('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8028('0x4'));var rimraf=require('rimraf');var config=require(_0x8028('0x5'));var attributes=require('./chatWebsite.attributes');module[_0x8028('0x6')]=function(_0x368be3,_0xf1939f){return _0x368be3[_0x8028('0x7')](_0x8028('0x8'),attributes,{'tableName':_0x8028('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xba99=['api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatWebsite','chat_websites','lodash','util','../../config/logger'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xba99,0x142));var _0x9ba9=function(_0x128b42,_0x49d070){_0x128b42=_0x128b42-0x0;var _0x47d363=_0xba99[_0x128b42];return _0x47d363;};'use strict';var _=require(_0x9ba9('0x0'));var util=require(_0x9ba9('0x1'));var logger=require(_0x9ba9('0x2'))(_0x9ba9('0x3'));var moment=require('moment');var BPromise=require(_0x9ba9('0x4'));var rp=require(_0x9ba9('0x5'));var fs=require('fs');var path=require(_0x9ba9('0x6'));var rimraf=require(_0x9ba9('0x7'));var config=require(_0x9ba9('0x8'));var attributes=require('./chatWebsite.attributes');module[_0x9ba9('0x9')]=function(_0x506661,_0x2b9c9c){return _0x506661[_0x9ba9('0xa')](_0x9ba9('0xb'),attributes,{'tableName':_0x9ba9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1eb8b26..af10e26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd033=['code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','then','info','ChatWebsite,\x20%s,\x20%s','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x131c2a,_0x32cb6){var _0x4b7881=function(_0x46a99d){while(--_0x46a99d){_0x131c2a['push'](_0x131c2a['shift']());}};_0x4b7881(++_0x32cb6);}(_0xd033,0x1b4));var _0x3d03=function(_0x18aaaf,_0x385db6){_0x18aaaf=_0x18aaaf-0x0;var _0x52d892=_0xd033[_0x18aaaf];return _0x52d892;};'use strict';var _=require('lodash');var util=require(_0x3d03('0x0'));var moment=require(_0x3d03('0x1'));var BPromise=require(_0x3d03('0x2'));var rs=require(_0x3d03('0x3'));var fs=require('fs');var Redis=require(_0x3d03('0x4'));var db=require(_0x3d03('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3d03('0x6'));var config=require(_0x3d03('0x7'));var jayson=require(_0x3d03('0x8'));var client=jayson[_0x3d03('0x9')]['http']({'port':0x232a});config[_0x3d03('0xa')]=_[_0x3d03('0xb')](config[_0x3d03('0xa')],{'host':_0x3d03('0xc'),'port':0x18eb});var socket=require(_0x3d03('0xd'))(new Redis(config[_0x3d03('0xa')]));require(_0x3d03('0xe'))['register'](socket);function respondWithRpcPromise(_0xce9e0b,_0x47fbc2,_0x4fea38){return new BPromise(function(_0x13b443,_0x2937d1){return client['request'](_0xce9e0b,_0x4fea38)[_0x3d03('0xf')](function(_0x43684a){logger[_0x3d03('0x10')](_0x3d03('0x11'),_0x47fbc2,'request\x20sent');logger[_0x3d03('0x12')](_0x3d03('0x13'),_0x47fbc2,_0x3d03('0x14'),JSON[_0x3d03('0x15')](_0x43684a));if(_0x43684a[_0x3d03('0x16')]){if(_0x43684a[_0x3d03('0x16')][_0x3d03('0x17')]===0x1f4){logger[_0x3d03('0x16')](_0x3d03('0x11'),_0x47fbc2,_0x43684a['error'][_0x3d03('0x18')]);return _0x2937d1(_0x43684a[_0x3d03('0x16')][_0x3d03('0x18')]);}logger[_0x3d03('0x16')](_0x3d03('0x11'),_0x47fbc2,_0x43684a[_0x3d03('0x16')][_0x3d03('0x18')]);return _0x13b443(_0x43684a[_0x3d03('0x16')][_0x3d03('0x18')]);}else{logger['info'](_0x3d03('0x11'),_0x47fbc2,_0x3d03('0x14'));_0x13b443(_0x43684a[_0x3d03('0x19')]['message']);}})[_0x3d03('0x1a')](function(_0x461570){logger[_0x3d03('0x16')](_0x3d03('0x11'),_0x47fbc2,_0x461570);_0x2937d1(_0x461570);});});}
\ No newline at end of file
+var _0x4730=['request\x20sent','error','code','message','lodash','util','bluebird','ioredis','../../mysqldb','../../config/environment','client','http','redis','defaults','./chatWebsite.socket','register','request','info','ChatWebsite,\x20%s,\x20%s','debug'];(function(_0x4e7c2f,_0x43fb00){var _0x54ef14=function(_0x46e557){while(--_0x46e557){_0x4e7c2f['push'](_0x4e7c2f['shift']());}};_0x54ef14(++_0x43fb00);}(_0x4730,0x68));var _0x0473=function(_0x132844,_0x98bc49){_0x132844=_0x132844-0x0;var _0x13c26f=_0x4730[_0x132844];return _0x13c26f;};'use strict';var _=require(_0x0473('0x0'));var util=require(_0x0473('0x1'));var moment=require('moment');var BPromise=require(_0x0473('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0473('0x3'));var db=require(_0x0473('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x0473('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x0473('0x6')][_0x0473('0x7')]({'port':0x232a});config[_0x0473('0x8')]=_[_0x0473('0x9')](config[_0x0473('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0473('0x8')]));require(_0x0473('0xa'))[_0x0473('0xb')](socket);function respondWithRpcPromise(_0x5ac21,_0x1c74b2,_0x200aae){return new BPromise(function(_0x3885a1,_0x1c4ed6){return client[_0x0473('0xc')](_0x5ac21,_0x200aae)['then'](function(_0x5197e6){logger[_0x0473('0xd')](_0x0473('0xe'),_0x1c74b2,'request\x20sent');logger[_0x0473('0xf')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x1c74b2,_0x0473('0x10'),JSON['stringify'](_0x5197e6));if(_0x5197e6[_0x0473('0x11')]){if(_0x5197e6[_0x0473('0x11')][_0x0473('0x12')]===0x1f4){logger['error'](_0x0473('0xe'),_0x1c74b2,_0x5197e6[_0x0473('0x11')][_0x0473('0x13')]);return _0x1c4ed6(_0x5197e6[_0x0473('0x11')][_0x0473('0x13')]);}logger['error'](_0x0473('0xe'),_0x1c74b2,_0x5197e6['error']['message']);return _0x3885a1(_0x5197e6[_0x0473('0x11')][_0x0473('0x13')]);}else{logger[_0x0473('0xd')](_0x0473('0xe'),_0x1c74b2,_0x0473('0x10'));_0x3885a1(_0x5197e6['result'][_0x0473('0x13')]);}})['catch'](function(_0x4ae4ea){logger[_0x0473('0x11')](_0x0473('0xe'),_0x1c74b2,_0x4ae4ea);_0x1c4ed6(_0x4ae4ea);});});}
\ No newline at end of file
index 048178a..ae815b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c92=['remove','emit','removeListener','register','chatWebsite:','./chatWebsite.events'];(function(_0x56edc0,_0x415884){var _0x58a5c8=function(_0x4e3fc4){while(--_0x4e3fc4){_0x56edc0['push'](_0x56edc0['shift']());}};_0x58a5c8(++_0x415884);}(_0x2c92,0x65));var _0x22c9=function(_0x13cab0,_0x14d825){_0x13cab0=_0x13cab0-0x0;var _0x38804f=_0x2c92[_0x13cab0];return _0x38804f;};'use strict';var ChatWebsiteEvents=require(_0x22c9('0x0'));var events=['save',_0x22c9('0x1'),'update'];function createListener(_0x3bcc02,_0x5f4e32){return function(_0x427bfa){_0x5f4e32[_0x22c9('0x2')](_0x3bcc02,_0x427bfa);};}function removeListener(_0x416001,_0x2c9fbc){return function(){ChatWebsiteEvents[_0x22c9('0x3')](_0x416001,_0x2c9fbc);};}exports[_0x22c9('0x4')]=function(_0xf70d62){for(var _0x555ac7=0x0,_0x4e063d=events['length'];_0x555ac7<_0x4e063d;_0x555ac7++){var _0x172568=events[_0x555ac7];var _0x1a01e3=createListener(_0x22c9('0x5')+_0x172568,_0xf70d62);ChatWebsiteEvents['on'](_0x172568,_0x1a01e3);}};
\ No newline at end of file
+var _0x9f36=['removeListener','register','length','chatWebsite:','./chatWebsite.events','save','remove','update','emit'];(function(_0x456bd2,_0x156c79){var _0x2218c1=function(_0x44f2d4){while(--_0x44f2d4){_0x456bd2['push'](_0x456bd2['shift']());}};_0x2218c1(++_0x156c79);}(_0x9f36,0x151));var _0x69f3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9f36[_0x3dd15e];return _0x231fd0;};'use strict';var ChatWebsiteEvents=require(_0x69f3('0x0'));var events=[_0x69f3('0x1'),_0x69f3('0x2'),_0x69f3('0x3')];function createListener(_0x55977c,_0x133f83){return function(_0x267299){_0x133f83[_0x69f3('0x4')](_0x55977c,_0x267299);};}function removeListener(_0x11cc47,_0x5a4985){return function(){ChatWebsiteEvents[_0x69f3('0x5')](_0x11cc47,_0x5a4985);};}exports[_0x69f3('0x6')]=function(_0x390b3e){for(var _0x5f0c2f=0x0,_0x5b7eeb=events[_0x69f3('0x7')];_0x5f0c2f<_0x5b7eeb;_0x5f0c2f++){var _0x55edbd=events[_0x5f0c2f];var _0x53abbd=createListener(_0x69f3('0x8')+_0x55edbd,_0x390b3e);ChatWebsiteEvents['on'](_0x55edbd,_0x53abbd);}};
\ No newline at end of file
index 72e0a68..6db47df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf27d=['getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','create','addDisposition','post','/:id/canned_answers','diskStorage','root','server/files/images/logos/','format','now','originalname','single','file','server/files/images/avatars/','%s-%s','addAvatar','join','addCustomerAvatar','addSystemAvatar','/:id/notify','notify','server/files','replace','extname','offline','addInteraction','/:id/proactive_actions','addProactiveActions','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./chatWebsite.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/dispositions'];(function(_0x3ad61c,_0x1aee78){var _0x312762=function(_0x5dfe23){while(--_0x5dfe23){_0x3ad61c['push'](_0x3ad61c['shift']());}};_0x312762(++_0x1aee78);}(_0xf27d,0x157));var _0xdf27=function(_0xe74aae,_0x3488ed){_0xe74aae=_0xe74aae-0x0;var _0x4e868b=_0xf27d[_0xe74aae];return _0x4e868b;};'use strict';var multer=require(_0xdf27('0x0'));var util=require(_0xdf27('0x1'));var path=require(_0xdf27('0x2'));var timeout=require(_0xdf27('0x3'));var express=require(_0xdf27('0x4'));var router=express[_0xdf27('0x5')]();var fs_extra=require(_0xdf27('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xdf27('0x7'));var config=require('../../config/environment');var controller=require(_0xdf27('0x8'));router['get']('/',auth[_0xdf27('0x9')](),controller[_0xdf27('0xa')]);router[_0xdf27('0xb')](_0xdf27('0xc'),auth['isAuthenticated'](),controller[_0xdf27('0xd')]);router['get'](_0xdf27('0xe'),auth[_0xdf27('0x9')](),controller[_0xdf27('0xf')]);router[_0xdf27('0xb')](_0xdf27('0x10'),auth[_0xdf27('0x9')](),controller['getDispositions']);router['get']('/:id/canned_answers',auth[_0xdf27('0x9')](),controller[_0xdf27('0x11')]);router[_0xdf27('0xb')](_0xdf27('0x12'),controller[_0xdf27('0x13')]);router['get'](_0xdf27('0x14'),controller[_0xdf27('0x15')]);router[_0xdf27('0xb')](_0xdf27('0x16'),controller[_0xdf27('0x17')]);router[_0xdf27('0xb')]('/:id/system_avatar',controller[_0xdf27('0x18')]);router['get'](_0xdf27('0x19'),auth[_0xdf27('0x9')](),controller[_0xdf27('0x1a')]);router['get'](_0xdf27('0x1b'),controller[_0xdf27('0x1c')]);router[_0xdf27('0xb')](_0xdf27('0x1d'),auth[_0xdf27('0x9')](),controller[_0xdf27('0x1e')]);router['get']('/:id/proactive_actions',auth[_0xdf27('0x9')](),controller[_0xdf27('0x1f')]);router['get'](_0xdf27('0x20'),controller[_0xdf27('0x21')]);router[_0xdf27('0xb')](_0xdf27('0x22'),auth[_0xdf27('0x9')](),controller[_0xdf27('0x23')]);router[_0xdf27('0xb')](_0xdf27('0x24'),auth['isAuthenticated'](),controller['getAgents']);router['post']('/',auth[_0xdf27('0x9')](),controller[_0xdf27('0x25')]);router['post'](_0xdf27('0x10'),auth['isAuthenticated'](),controller[_0xdf27('0x26')]);router[_0xdf27('0x27')](_0xdf27('0x28'),auth['isAuthenticated'](),controller['addAnswer']);var upload=multer({'storage':multer[_0xdf27('0x29')]({'destination':function(_0x3a7c76,_0x3fb015,_0x2f3133){_0x2f3133(null,path['join'](config[_0xdf27('0x2a')],_0xdf27('0x2b')));},'filename':function(_0x1fe05f,_0x1a008a,_0x4b14fd){_0x4b14fd(null,util[_0xdf27('0x2c')]('%s-%s',Date[_0xdf27('0x2d')](),_0x1a008a[_0xdf27('0x2e')]));}})});router['post'](_0xdf27('0x12'),upload[_0xdf27('0x2f')](_0xdf27('0x30')),controller['addLogo']);var upload=multer({'storage':multer[_0xdf27('0x29')]({'destination':function(_0x23585e,_0x1cc2df,_0x392128){_0x392128(null,path['join'](config['root'],_0xdf27('0x31')));},'filename':function(_0x1c43b2,_0x3cb38e,_0x1910bb){_0x1910bb(null,util['format'](_0xdf27('0x32'),Date[_0xdf27('0x2d')](),_0x3cb38e[_0xdf27('0x2e')]));}})});router[_0xdf27('0x27')](_0xdf27('0x14'),upload[_0xdf27('0x2f')](_0xdf27('0x30')),controller[_0xdf27('0x33')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4d0dc4,_0x52332f,_0x5423cc){_0x5423cc(null,path[_0xdf27('0x34')](config['root'],_0xdf27('0x31')));},'filename':function(_0x146af5,_0x49800c,_0x52e665){_0x52e665(null,util[_0xdf27('0x2c')](_0xdf27('0x32'),Date[_0xdf27('0x2d')](),_0x49800c[_0xdf27('0x2e')]));}})});router[_0xdf27('0x27')](_0xdf27('0x16'),upload[_0xdf27('0x2f')](_0xdf27('0x30')),controller[_0xdf27('0x35')]);var upload=multer({'storage':multer[_0xdf27('0x29')]({'destination':function(_0x35b1b5,_0x2a3d78,_0x5c0e1a){_0x5c0e1a(null,path[_0xdf27('0x34')](config[_0xdf27('0x2a')],_0xdf27('0x31')));},'filename':function(_0x395128,_0x1d9481,_0x467a5b){_0x467a5b(null,util[_0xdf27('0x2c')](_0xdf27('0x32'),Date[_0xdf27('0x2d')](),_0x1d9481['originalname']));}})});router[_0xdf27('0x27')]('/:id/system_avatar',upload[_0xdf27('0x2f')](_0xdf27('0x30')),controller[_0xdf27('0x36')]);router[_0xdf27('0x27')](_0xdf27('0x37'),controller[_0xdf27('0x38')]);const offlineUploadMulter=multer({'storage':multer[_0xdf27('0x29')]({'destination':function(_0x42ca37,_0x43dc77,_0x3e09b0){const _0x2ab411=path[_0xdf27('0x34')](config['root'],_0xdf27('0x39'),'attachments','offline-chat');fs_extra['ensureDir'](_0x2ab411,function(){_0x3e09b0(null,_0x2ab411);});},'filename':function(_0x1debe4,_0x45614c,_0x2b439f){const _0x40a551=_0x45614c[_0xdf27('0x2e')][_0xdf27('0x3a')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x2bf712=path[_0xdf27('0x3b')](_0x40a551);const _0x36b150=Date['now']()+'-'+_0x40a551[_0xdf27('0x3a')](_0x2bf712,'')+_0x2bf712;_0x2b439f(null,_0x36b150);}})});router[_0xdf27('0x27')]('/:id/offline',offlineUploadMulter['any'](),controller[_0xdf27('0x3c')]);router[_0xdf27('0x27')](_0xdf27('0x19'),auth[_0xdf27('0x9')](),controller[_0xdf27('0x3d')]);router[_0xdf27('0x27')](_0xdf27('0x1d'),auth[_0xdf27('0x9')](),controller['addApplications']);router[_0xdf27('0x27')](_0xdf27('0x3e'),auth[_0xdf27('0x9')](),controller[_0xdf27('0x3f')]);router[_0xdf27('0x27')](_0xdf27('0x24'),auth['isAuthenticated'](),controller['addAgents']);router[_0xdf27('0x40')](_0xdf27('0xe'),auth['isAuthenticated'](),controller[_0xdf27('0x41')]);router[_0xdf27('0x42')](_0xdf27('0xe'),auth[_0xdf27('0x9')](),controller[_0xdf27('0x43')]);router[_0xdf27('0x42')](_0xdf27('0x10'),auth['isAuthenticated'](),controller[_0xdf27('0x44')]);router[_0xdf27('0x42')](_0xdf27('0x28'),auth[_0xdf27('0x9')](),controller[_0xdf27('0x45')]);router[_0xdf27('0x42')](_0xdf27('0x24'),auth[_0xdf27('0x9')](),controller[_0xdf27('0x46')]);module[_0xdf27('0x47')]=router;
\ No newline at end of file
+var _0x2657=['server/files/images/avatars/','addCustomerAvatar','/:id/notify','notify','server/files','attachments','ensureDir','replace','extname','/:id/offline','any','offline','addInteraction','/:id/applications','addApplications','addProactiveActions','/:id/users','put','/:id','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','describe','show','getDispositions','/:id/canned_answers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','getOfflineMessages','getAgents','post','create','/:id/dispositions','addDisposition','addAnswer','diskStorage','join','root','format','%s-%s','now','originalname','single','file','addLogo'];(function(_0x478829,_0x4ef2bb){var _0x59a14a=function(_0x11e88c){while(--_0x11e88c){_0x478829['push'](_0x478829['shift']());}};_0x59a14a(++_0x4ef2bb);}(_0x2657,0x186));var _0x7265=function(_0x47805d,_0x414d8a){_0x47805d=_0x47805d-0x0;var _0x22a824=_0x2657[_0x47805d];return _0x22a824;};'use strict';var multer=require('multer');var util=require(_0x7265('0x0'));var path=require(_0x7265('0x1'));var timeout=require(_0x7265('0x2'));var express=require(_0x7265('0x3'));var router=express[_0x7265('0x4')]();var fs_extra=require(_0x7265('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7265('0x6'));var controller=require('./chatWebsite.controller');router[_0x7265('0x7')]('/',auth[_0x7265('0x8')](),controller[_0x7265('0x9')]);router[_0x7265('0x7')](_0x7265('0xa'),auth[_0x7265('0x8')](),controller[_0x7265('0xb')]);router[_0x7265('0x7')]('/:id',auth[_0x7265('0x8')](),controller[_0x7265('0xc')]);router[_0x7265('0x7')]('/:id/dispositions',auth[_0x7265('0x8')](),controller[_0x7265('0xd')]);router['get'](_0x7265('0xe'),auth[_0x7265('0x8')](),controller['getAnswers']);router[_0x7265('0x7')](_0x7265('0xf'),controller[_0x7265('0x10')]);router[_0x7265('0x7')](_0x7265('0x11'),controller[_0x7265('0x12')]);router[_0x7265('0x7')](_0x7265('0x13'),controller[_0x7265('0x14')]);router[_0x7265('0x7')](_0x7265('0x15'),controller[_0x7265('0x16')]);router['get'](_0x7265('0x17'),auth[_0x7265('0x8')](),controller[_0x7265('0x18')]);router[_0x7265('0x7')](_0x7265('0x19'),controller[_0x7265('0x1a')]);router[_0x7265('0x7')]('/:id/applications',auth[_0x7265('0x8')](),controller['getApplications']);router[_0x7265('0x7')](_0x7265('0x1b'),auth[_0x7265('0x8')](),controller[_0x7265('0x1c')]);router['get'](_0x7265('0x1d'),controller[_0x7265('0x1e')]);router['get']('/:id/offline_messages',auth[_0x7265('0x8')](),controller[_0x7265('0x1f')]);router[_0x7265('0x7')]('/:id/users',auth[_0x7265('0x8')](),controller[_0x7265('0x20')]);router[_0x7265('0x21')]('/',auth[_0x7265('0x8')](),controller[_0x7265('0x22')]);router['post'](_0x7265('0x23'),auth[_0x7265('0x8')](),controller[_0x7265('0x24')]);router['post'](_0x7265('0xe'),auth[_0x7265('0x8')](),controller[_0x7265('0x25')]);var upload=multer({'storage':multer[_0x7265('0x26')]({'destination':function(_0x434c81,_0xceb111,_0x9562da){_0x9562da(null,path[_0x7265('0x27')](config[_0x7265('0x28')],'server/files/images/logos/'));},'filename':function(_0x2260f6,_0x311339,_0x298c55){_0x298c55(null,util[_0x7265('0x29')](_0x7265('0x2a'),Date[_0x7265('0x2b')](),_0x311339[_0x7265('0x2c')]));}})});router[_0x7265('0x21')](_0x7265('0xf'),upload[_0x7265('0x2d')](_0x7265('0x2e')),controller[_0x7265('0x2f')]);var upload=multer({'storage':multer[_0x7265('0x26')]({'destination':function(_0x43608,_0x1146fa,_0x52e03b){_0x52e03b(null,path[_0x7265('0x27')](config['root'],_0x7265('0x30')));},'filename':function(_0x34b95f,_0x41342c,_0x1a0d2c){_0x1a0d2c(null,util[_0x7265('0x29')](_0x7265('0x2a'),Date[_0x7265('0x2b')](),_0x41342c[_0x7265('0x2c')]));}})});router[_0x7265('0x21')](_0x7265('0x11'),upload['single'](_0x7265('0x2e')),controller['addAvatar']);var upload=multer({'storage':multer[_0x7265('0x26')]({'destination':function(_0x18f4fd,_0x276559,_0x53dda2){_0x53dda2(null,path[_0x7265('0x27')](config['root'],_0x7265('0x30')));},'filename':function(_0xa41062,_0x24665e,_0x58e45a){_0x58e45a(null,util[_0x7265('0x29')](_0x7265('0x2a'),Date[_0x7265('0x2b')](),_0x24665e[_0x7265('0x2c')]));}})});router[_0x7265('0x21')]('/:id/customer_avatar',upload[_0x7265('0x2d')]('file'),controller[_0x7265('0x31')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x40ef7a,_0x44ef4a,_0x38a2ce){_0x38a2ce(null,path['join'](config[_0x7265('0x28')],_0x7265('0x30')));},'filename':function(_0x25cc3e,_0x344af8,_0x43a674){_0x43a674(null,util['format'](_0x7265('0x2a'),Date[_0x7265('0x2b')](),_0x344af8[_0x7265('0x2c')]));}})});router['post'](_0x7265('0x15'),upload[_0x7265('0x2d')](_0x7265('0x2e')),controller['addSystemAvatar']);router[_0x7265('0x21')](_0x7265('0x32'),controller[_0x7265('0x33')]);const offlineUploadMulter=multer({'storage':multer[_0x7265('0x26')]({'destination':function(_0x1fa4d0,_0x6bc6b6,_0x3300be){const _0x22c396=path[_0x7265('0x27')](config['root'],_0x7265('0x34'),_0x7265('0x35'),'offline-chat');fs_extra[_0x7265('0x36')](_0x22c396,function(){_0x3300be(null,_0x22c396);});},'filename':function(_0x2e71e1,_0x23d6d9,_0x43383a){const _0x538310=_0x23d6d9[_0x7265('0x2c')][_0x7265('0x37')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x228bbc=path[_0x7265('0x38')](_0x538310);const _0xc228b=Date[_0x7265('0x2b')]()+'-'+_0x538310[_0x7265('0x37')](_0x228bbc,'')+_0x228bbc;_0x43383a(null,_0xc228b);}})});router[_0x7265('0x21')](_0x7265('0x39'),offlineUploadMulter[_0x7265('0x3a')](),controller[_0x7265('0x3b')]);router[_0x7265('0x21')](_0x7265('0x17'),auth[_0x7265('0x8')](),controller[_0x7265('0x3c')]);router[_0x7265('0x21')](_0x7265('0x3d'),auth[_0x7265('0x8')](),controller[_0x7265('0x3e')]);router[_0x7265('0x21')]('/:id/proactive_actions',auth[_0x7265('0x8')](),controller[_0x7265('0x3f')]);router[_0x7265('0x21')](_0x7265('0x40'),auth[_0x7265('0x8')](),controller['addAgents']);router[_0x7265('0x41')](_0x7265('0x42'),auth[_0x7265('0x8')](),controller['update']);router[_0x7265('0x43')](_0x7265('0x42'),auth['isAuthenticated'](),controller[_0x7265('0x44')]);router['delete'](_0x7265('0x23'),auth['isAuthenticated'](),controller[_0x7265('0x45')]);router[_0x7265('0x43')](_0x7265('0xe'),auth[_0x7265('0x8')](),controller[_0x7265('0x46')]);router['delete'](_0x7265('0x40'),auth[_0x7265('0x8')](),controller[_0x7265('0x47')]);module[_0x7265('0x48')]=router;
\ No newline at end of file
index e675abe..6850d85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd0a=['STRING','sequelize'];(function(_0x33c9f8,_0x5aedbb){var _0x2d7004=function(_0x4f4f43){while(--_0x4f4f43){_0x33c9f8['push'](_0x33c9f8['shift']());}};_0x2d7004(++_0x5aedbb);}(_0xbd0a,0x1b9));var _0xabd0=function(_0x379e7c,_0x6af1f4){_0x379e7c=_0x379e7c-0x0;var _0x41b054=_0xbd0a[_0x379e7c];return _0x41b054;};'use strict';var Sequelize=require(_0xabd0('0x0'));module['exports']={'name':{'type':Sequelize[_0xabd0('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM']('AmazonAWS','Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0xabd0('0x1')]},'data2':{'type':Sequelize[_0xabd0('0x1')]}};
\ No newline at end of file
+var _0xb39f=['STRING','ENUM','sequelize','exports'];(function(_0x2735f5,_0x23f497){var _0x2b9618=function(_0x337797){while(--_0x337797){_0x2735f5['push'](_0x2735f5['shift']());}};_0x2b9618(++_0x23f497);}(_0xb39f,0x1e6));var _0xfb39=function(_0x48130d,_0x257dde){_0x48130d=_0x48130d-0x0;var _0x202b4d=_0xb39f[_0x48130d];return _0x202b4d;};'use strict';var Sequelize=require(_0xfb39('0x0'));module[_0xfb39('0x1')]={'name':{'type':Sequelize[_0xfb39('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xfb39('0x3')]('AmazonAWS','Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0xfb39('0x2')]}};
\ No newline at end of file
index 4755a80..b957eb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','CloudProvider','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','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'];(function(_0x31c5a3,_0x37ee25){var _0x1a06dd=function(_0x17423b){while(--_0x17423b){_0x31c5a3['push'](_0x31c5a3['shift']());}};_0x1a06dd(++_0x37ee25);}(_0x7a54,0x106));var _0x47a5=function(_0x3456c4,_0x33c472){_0x3456c4=_0x3456c4-0x0;var _0x289213=_0x7a54[_0x3456c4];return _0x289213;};'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['CloudProvider'][_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['CloudProvider']['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['CloudProvider']['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));};
\ 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(_0x577e98,_0x1b3752){var _0x4092e4=function(_0x3b9906){while(--_0x3b9906){_0x577e98['push'](_0x577e98['shift']());}};_0x4092e4(++_0x1b3752);}(_0xdb28,0x106));var _0x8db2=function(_0x3c6861,_0x167088){_0x3c6861=_0x3c6861-0x0;var _0x1c95e7=_0xdb28[_0x3c6861];return _0x1c95e7;};'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 b1f32e0..7b71323 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc78c=['bluebird','request-promise','rimraf','../../config/environment','./cloudProvider.attributes','exports','CloudProvider','cloud_providers','lodash','util','../../config/logger','api','moment'];(function(_0x1bf8cc,_0x118778){var _0x322d20=function(_0x36953d){while(--_0x36953d){_0x1bf8cc['push'](_0x1bf8cc['shift']());}};_0x322d20(++_0x118778);}(_0xc78c,0x167));var _0xcc78=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xc78c[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0xcc78('0x0'));var util=require(_0xcc78('0x1'));var logger=require(_0xcc78('0x2'))(_0xcc78('0x3'));var moment=require(_0xcc78('0x4'));var BPromise=require(_0xcc78('0x5'));var rp=require(_0xcc78('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcc78('0x7'));var config=require(_0xcc78('0x8'));var attributes=require(_0xcc78('0x9'));module[_0xcc78('0xa')]=function(_0xe12879,_0x15af18){return _0xe12879['define'](_0xcc78('0xb'),attributes,{'tableName':_0xcc78('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfa46=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./cloudProvider.attributes','define','CloudProvider','cloud_providers','lodash','util','../../config/logger'];(function(_0x2ae443,_0x2582c4){var _0x2dd68d=function(_0xf21a61){while(--_0xf21a61){_0x2ae443['push'](_0x2ae443['shift']());}};_0x2dd68d(++_0x2582c4);}(_0xfa46,0x99));var _0x6fa4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfa46[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x6fa4('0x0'));var util=require(_0x6fa4('0x1'));var logger=require(_0x6fa4('0x2'))('api');var moment=require(_0x6fa4('0x3'));var BPromise=require(_0x6fa4('0x4'));var rp=require(_0x6fa4('0x5'));var fs=require('fs');var path=require(_0x6fa4('0x6'));var rimraf=require(_0x6fa4('0x7'));var config=require(_0x6fa4('0x8'));var attributes=require(_0x6fa4('0x9'));module['exports']=function(_0x2bf8f1,_0x569c2a){return _0x2bf8f1[_0x6fa4('0xa')](_0x6fa4('0xb'),attributes,{'tableName':_0x6fa4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0a3498d..d0cfd15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0a=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird'];(function(_0xb19393,_0x492065){var _0x137ec0=function(_0x4f0ffa){while(--_0x4f0ffa){_0xb19393['push'](_0xb19393['shift']());}};_0x137ec0(++_0x492065);}(_0xef0a,0xdd));var _0xaef0=function(_0x38f499,_0x95195f){_0x38f499=_0x38f499-0x0;var _0x223f1f=_0xef0a[_0x38f499];return _0x223f1f;};'use strict';var _=require(_0xaef0('0x0'));var util=require(_0xaef0('0x1'));var moment=require(_0xaef0('0x2'));var BPromise=require(_0xaef0('0x3'));var rs=require(_0xaef0('0x4'));var fs=require('fs');var Redis=require(_0xaef0('0x5'));var db=require(_0xaef0('0x6'))['db'];var utils=require(_0xaef0('0x7'));var logger=require(_0xaef0('0x8'))(_0xaef0('0x9'));var config=require(_0xaef0('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xaef0('0xb')][_0xaef0('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x273fae,_0x32f86c,_0x5c78d8){return new BPromise(function(_0x47ba50,_0x12ff96){return client[_0xaef0('0xd')](_0x273fae,_0x5c78d8)[_0xaef0('0xe')](function(_0x280d93){logger[_0xaef0('0xf')](_0xaef0('0x10'),_0x32f86c,_0xaef0('0x11'));logger[_0xaef0('0x12')](_0xaef0('0x13'),_0x32f86c,'request\x20sent',JSON[_0xaef0('0x14')](_0x280d93));if(_0x280d93[_0xaef0('0x15')]){if(_0x280d93['error'][_0xaef0('0x16')]===0x1f4){logger['error']('CloudProvider,\x20%s,\x20%s',_0x32f86c,_0x280d93[_0xaef0('0x15')][_0xaef0('0x17')]);return _0x12ff96(_0x280d93[_0xaef0('0x15')][_0xaef0('0x17')]);}logger[_0xaef0('0x15')](_0xaef0('0x10'),_0x32f86c,_0x280d93[_0xaef0('0x15')][_0xaef0('0x17')]);return _0x47ba50(_0x280d93[_0xaef0('0x15')][_0xaef0('0x17')]);}else{logger[_0xaef0('0xf')](_0xaef0('0x10'),_0x32f86c,_0xaef0('0x11'));_0x47ba50(_0x280d93['result'][_0xaef0('0x17')]);}})[_0xaef0('0x18')](function(_0x5c218b){logger[_0xaef0('0x15')](_0xaef0('0x10'),_0x32f86c,_0x5c218b);_0x12ff96(_0x5c218b);});});}
\ No newline at end of file
+var _0xc692=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','CloudProvider,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils'];(function(_0x596c43,_0x28647a){var _0x4e1315=function(_0x58e910){while(--_0x58e910){_0x596c43['push'](_0x596c43['shift']());}};_0x4e1315(++_0x28647a);}(_0xc692,0x15f));var _0x2c69=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0xc692[_0x23e7c1];return _0x1add43;};'use strict';var _=require(_0x2c69('0x0'));var util=require(_0x2c69('0x1'));var moment=require(_0x2c69('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2c69('0x3'));var db=require(_0x2c69('0x4'))['db'];var utils=require(_0x2c69('0x5'));var logger=require(_0x2c69('0x6'))(_0x2c69('0x7'));var config=require(_0x2c69('0x8'));var jayson=require(_0x2c69('0x9'));var client=jayson['client'][_0x2c69('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4da70c,_0x5c1260,_0x31688a){return new BPromise(function(_0x7a913a,_0xfc5ebb){return client[_0x2c69('0xb')](_0x4da70c,_0x31688a)[_0x2c69('0xc')](function(_0x131313){logger['info'](_0x2c69('0xd'),_0x5c1260,'request\x20sent');logger[_0x2c69('0xe')]('CloudProvider,\x20%s,\x20%s,\x20%s',_0x5c1260,_0x2c69('0xf'),JSON[_0x2c69('0x10')](_0x131313));if(_0x131313[_0x2c69('0x11')]){if(_0x131313[_0x2c69('0x11')][_0x2c69('0x12')]===0x1f4){logger[_0x2c69('0x11')]('CloudProvider,\x20%s,\x20%s',_0x5c1260,_0x131313[_0x2c69('0x11')]['message']);return _0xfc5ebb(_0x131313[_0x2c69('0x11')][_0x2c69('0x13')]);}logger[_0x2c69('0x11')](_0x2c69('0xd'),_0x5c1260,_0x131313[_0x2c69('0x11')][_0x2c69('0x13')]);return _0x7a913a(_0x131313['error'][_0x2c69('0x13')]);}else{logger['info']('CloudProvider,\x20%s,\x20%s',_0x5c1260,_0x2c69('0xf'));_0x7a913a(_0x131313['result'][_0x2c69('0x13')]);}})[_0x2c69('0x14')](function(_0x59e48a){logger['error'](_0x2c69('0xd'),_0x5c1260,_0x59e48a);_0xfc5ebb(_0x59e48a);});});}
\ No newline at end of file
index 3b8e4ea..d46611a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8f3=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cloudProvider.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xa8f3,0xc1));var _0x3a8f=function(_0x28be21,_0x39f90b){_0x28be21=_0x28be21-0x0;var _0x535a3d=_0xa8f3[_0x28be21];return _0x535a3d;};'use strict';var multer=require(_0x3a8f('0x0'));var util=require(_0x3a8f('0x1'));var path=require(_0x3a8f('0x2'));var timeout=require(_0x3a8f('0x3'));var express=require(_0x3a8f('0x4'));var router=express[_0x3a8f('0x5')]();var fs_extra=require(_0x3a8f('0x6'));var auth=require(_0x3a8f('0x7'));var interaction=require(_0x3a8f('0x8'));var config=require(_0x3a8f('0x9'));var controller=require(_0x3a8f('0xa'));router[_0x3a8f('0xb')]('/',auth[_0x3a8f('0xc')](),controller[_0x3a8f('0xd')]);router[_0x3a8f('0xb')](_0x3a8f('0xe'),auth['isAuthenticated'](),controller[_0x3a8f('0xf')]);router[_0x3a8f('0x10')]('/',auth[_0x3a8f('0xc')](),controller[_0x3a8f('0x11')]);router[_0x3a8f('0x12')](_0x3a8f('0xe'),auth[_0x3a8f('0xc')](),controller[_0x3a8f('0x13')]);router[_0x3a8f('0x14')](_0x3a8f('0xe'),auth['isAuthenticated'](),controller[_0x3a8f('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xbcf8=['get','/:id','post','isAuthenticated','create','put','update','destroy','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cloudProvider.controller'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbcf8,0x15d));var _0x8bcf=function(_0x1a02d2,_0x1b09aa){_0x1a02d2=_0x1a02d2-0x0;var _0x24524f=_0xbcf8[_0x1a02d2];return _0x24524f;};'use strict';var multer=require(_0x8bcf('0x0'));var util=require('util');var path=require(_0x8bcf('0x1'));var timeout=require('connect-timeout');var express=require(_0x8bcf('0x2'));var router=express[_0x8bcf('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x8bcf('0x4'));var interaction=require(_0x8bcf('0x5'));var config=require(_0x8bcf('0x6'));var controller=require(_0x8bcf('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x8bcf('0x8')](_0x8bcf('0x9'),auth['isAuthenticated'](),controller['show']);router[_0x8bcf('0xa')]('/',auth[_0x8bcf('0xb')](),controller[_0x8bcf('0xc')]);router[_0x8bcf('0xd')](_0x8bcf('0x9'),auth[_0x8bcf('0xb')](),controller[_0x8bcf('0xe')]);router['delete']('/:id',auth[_0x8bcf('0xb')](),controller[_0x8bcf('0xf')]);module[_0x8bcf('0x10')]=router;
\ No newline at end of file
index 9e8390a..f4735e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b59=['STRING','name','sequelize','exports'];(function(_0x30a2fd,_0x46c445){var _0xa9963a=function(_0x1af2ce){while(--_0x1af2ce){_0x30a2fd['push'](_0x30a2fd['shift']());}};_0xa9963a(++_0x46c445);}(_0x0b59,0xae));var _0x90b5=function(_0x1cf0a8,_0xe509f9){_0x1cf0a8=_0x1cf0a8-0x0;var _0x154a17=_0x0b59[_0x1cf0a8];return _0x154a17;};'use strict';var Sequelize=require(_0x90b5('0x0'));module[_0x90b5('0x1')]={'name':{'type':Sequelize[_0x90b5('0x2')],'unique':_0x90b5('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x90b5('0x2')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x90b5('0x2')]},'fax':{'type':Sequelize[_0x90b5('0x2')]},'type':{'type':Sequelize[_0x90b5('0x2')]},'street':{'type':Sequelize[_0x90b5('0x2')]},'postalCode':{'type':Sequelize[_0x90b5('0x2')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x90b5('0x2')]},'email':{'type':Sequelize[_0x90b5('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x90b5('0x2')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0x90b5('0x2')]},'sCity':{'type':Sequelize[_0x90b5('0x2')]},'sCountry':{'type':Sequelize[_0x90b5('0x2')]},'description':{'type':Sequelize[_0x90b5('0x2')]}};
\ No newline at end of file
+var _0x3f9d=['exports','STRING','name'];(function(_0x5302fb,_0x1a2db3){var _0x43e6a4=function(_0x324ae6){while(--_0x324ae6){_0x5302fb['push'](_0x5302fb['shift']());}};_0x43e6a4(++_0x1a2db3);}(_0x3f9d,0x10e));var _0xd3f9=function(_0x14f820,_0x37876f){_0x14f820=_0x14f820-0x0;var _0x2bf03d=_0x3f9d[_0x14f820];return _0x2bf03d;};'use strict';var Sequelize=require('sequelize');module[_0xd3f9('0x0')]={'name':{'type':Sequelize[_0xd3f9('0x1')],'unique':_0xd3f9('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0xd3f9('0x1')]},'website':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xd3f9('0x1')]},'fax':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xd3f9('0x1')]},'street':{'type':Sequelize[_0xd3f9('0x1')]},'postalCode':{'type':Sequelize[_0xd3f9('0x1')]},'city':{'type':Sequelize[_0xd3f9('0x1')]},'country':{'type':Sequelize[_0xd3f9('0x1')]},'email':{'type':Sequelize[_0xd3f9('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xd3f9('0x1')]},'sStreet':{'type':Sequelize[_0xd3f9('0x1')]},'sPostalCode':{'type':Sequelize[_0xd3f9('0x1')]},'sCity':{'type':Sequelize[_0xd3f9('0x1')]},'sCountry':{'type':Sequelize[_0xd3f9('0x1')]},'description':{'type':Sequelize[_0xd3f9('0x1')]}};
\ No newline at end of file
index c725adb..2b70857 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x756e=['name','send','describe','keys','query','intersection','attributes','model','fields','nolimit','order','where','filters','pick','filter','merge','options','include','CmCompany','findAll','rows','catch','show','params','rawAttributes','length','create','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addContacts','ids','omit','getContacts','findOne','sort','map','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','sendStatus','end','json','offset','undefined','limit','count','status','set','save','update','destroy','get','UserProfileResource','then','error','stack'];(function(_0x3e2435,_0xc531a1){var _0x5d49e7=function(_0x214b4f){while(--_0x214b4f){_0x3e2435['push'](_0x3e2435['shift']());}};_0x5d49e7(++_0xc531a1);}(_0x756e,0xc7));var _0xe756=function(_0x3b871c,_0x33da92){_0x3b871c=_0x3b871c-0x0;var _0x5e14a7=_0x756e[_0x3b871c];return _0x5e14a7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe756('0x0'));var zipdir=require(_0xe756('0x1'));var jsonpatch=require(_0xe756('0x2'));var rp=require(_0xe756('0x3'));var moment=require(_0xe756('0x4'));var BPromise=require(_0xe756('0x5'));var Mustache=require(_0xe756('0x6'));var util=require(_0xe756('0x7'));var path=require('path');var sox=require(_0xe756('0x8'));var csv=require(_0xe756('0x9'));var ejs=require(_0xe756('0xa'));var fs=require('fs');var fs_extra=require(_0xe756('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe756('0xc'));var deskjs=require(_0xe756('0xd'));var toCsv=require(_0xe756('0x9'));var querystring=require('querystring');var Papa=require(_0xe756('0xe'));var Redis=require(_0xe756('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xe756('0x10'));var as=require(_0xe756('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe756('0x12'))('api');var utils=require(_0xe756('0x13'));var config=require(_0xe756('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xbf09b,_0x37970f){_0x37970f=_0x37970f||0xcc;return function(_0x21646a){if(_0x21646a){return _0xbf09b[_0xe756('0x15')](_0x37970f);}return _0xbf09b['status'](_0x37970f)[_0xe756('0x16')]();};}function respondWithResult(_0x536170,_0x8418c0){_0x8418c0=_0x8418c0||0xc8;return function(_0x45c1cd){if(_0x45c1cd){return _0x536170['status'](_0x8418c0)[_0xe756('0x17')](_0x45c1cd);}};}function respondWithFilteredResult(_0x3baed1,_0x2543cb){return function(_0x446721){if(_0x446721){var _0x1f9281=typeof _0x2543cb[_0xe756('0x18')]===_0xe756('0x19')&&typeof _0x2543cb[_0xe756('0x1a')]==='undefined';var _0x464cfe=_0x446721['count'];var _0x15d22b=_0x1f9281?0x0:_0x2543cb['offset'];var _0x24c5ab=_0x1f9281?_0x446721[_0xe756('0x1b')]:_0x2543cb[_0xe756('0x18')]+_0x2543cb[_0xe756('0x1a')];var _0x3cd6c3;if(_0x24c5ab>=_0x464cfe){_0x24c5ab=_0x464cfe;_0x3cd6c3=0xc8;}else{_0x3cd6c3=0xce;}_0x3baed1[_0xe756('0x1c')](_0x3cd6c3);return _0x3baed1[_0xe756('0x1d')]('Content-Range',_0x15d22b+'-'+_0x24c5ab+'/'+_0x464cfe)[_0xe756('0x17')](_0x446721);}return null;};}function patchUpdates(_0x1a112d){return function(_0x3a0b23){try{jsonpatch['apply'](_0x3a0b23,_0x1a112d,!![]);}catch(_0x63e565){return BPromise['reject'](_0x63e565);}return _0x3a0b23[_0xe756('0x1e')]();};}function saveUpdates(_0x514cea,_0x261bed){return function(_0x3cb3de){if(_0x3cb3de){return _0x3cb3de[_0xe756('0x1f')](_0x514cea)['then'](function(_0x44dd2e){return _0x44dd2e;});}return null;};}function removeEntity(_0x1c78ef,_0x55a6e7){return function(_0x35ba30){if(_0x35ba30){return _0x35ba30[_0xe756('0x20')]()['then'](function(){var _0x3c6f57=_0x35ba30[_0xe756('0x21')]({'plain':!![]});var _0x4f7952='Companies';return db[_0xe756('0x22')]['destroy']({'where':{'type':_0x4f7952,'resourceId':_0x3c6f57['id']}})[_0xe756('0x23')](function(){return _0x35ba30;});})[_0xe756('0x23')](function(){_0x1c78ef['status'](0xcc)[_0xe756('0x16')]();});}};}function handleEntityNotFound(_0x1173fe,_0x384b7c){return function(_0x5a5c82){if(!_0x5a5c82){_0x1173fe[_0xe756('0x15')](0x194);}return _0x5a5c82;};}function handleError(_0x1fd3fd,_0x538776){_0x538776=_0x538776||0x1f4;return function(_0x26ebe6){logger[_0xe756('0x24')](_0x26ebe6[_0xe756('0x25')]);if(_0x26ebe6[_0xe756('0x26')]){delete _0x26ebe6[_0xe756('0x26')];}_0x1fd3fd[_0xe756('0x1c')](_0x538776)[_0xe756('0x27')](_0x26ebe6);};}exports['index']=function(_0x23ba45,_0x209cf3){var _0x4dab5f={},_0x489575={},_0x2cad5a={'count':0x0,'rows':[]};return db['CmCompany'][_0xe756('0x28')]()[_0xe756('0x23')](function(_0x4637f8){_0x489575['model']=_[_0xe756('0x29')](_0x4637f8);_0x489575[_0xe756('0x2a')]=_[_0xe756('0x29')](_0x23ba45[_0xe756('0x2a')]);_0x489575['filters']=_[_0xe756('0x2b')](_0x489575['model'],_0x489575['query']);_0x4dab5f[_0xe756('0x2c')]=_['intersection'](_0x489575[_0xe756('0x2d')],qs[_0xe756('0x2e')](_0x23ba45[_0xe756('0x2a')][_0xe756('0x2e')]));_0x4dab5f['attributes']=_0x4dab5f[_0xe756('0x2c')]['length']?_0x4dab5f[_0xe756('0x2c')]:_0x489575[_0xe756('0x2d')];if(!_0x23ba45[_0xe756('0x2a')]['hasOwnProperty'](_0xe756('0x2f'))){_0x4dab5f[_0xe756('0x1a')]=qs['limit'](_0x23ba45['query']['limit']);_0x4dab5f[_0xe756('0x18')]=qs[_0xe756('0x18')](_0x23ba45[_0xe756('0x2a')]['offset']);}_0x4dab5f[_0xe756('0x30')]=qs['sort'](_0x23ba45[_0xe756('0x2a')]['sort']);_0x4dab5f[_0xe756('0x31')]=qs[_0xe756('0x32')](_[_0xe756('0x33')](_0x23ba45['query'],_0x489575['filters']),_0x4637f8);if(_0x23ba45[_0xe756('0x2a')][_0xe756('0x34')]){_0x4dab5f[_0xe756('0x31')]=_[_0xe756('0x35')](_0x4dab5f[_0xe756('0x31')],{'$or':_['map'](_0x4dab5f[_0xe756('0x2c')],function(_0x2f8432){var _0x45a101={};_0x45a101[_0x2f8432]={'$like':'%'+_0x23ba45[_0xe756('0x2a')][_0xe756('0x34')]+'%'};return _0x45a101;})});}_0x4dab5f=_[_0xe756('0x35')]({},_0x4dab5f,_0x23ba45[_0xe756('0x36')]);var _0x8d6060={'where':_0x4dab5f[_0xe756('0x31')]};return db['CmCompany'][_0xe756('0x1b')](_0x8d6060)[_0xe756('0x23')](function(_0x39157a){_0x2cad5a['count']=_0x39157a;if(_0x23ba45[_0xe756('0x2a')]['includeAll']){_0x4dab5f[_0xe756('0x37')]=[{'all':!![]}];}return db[_0xe756('0x38')][_0xe756('0x39')](_0x4dab5f);})[_0xe756('0x23')](function(_0x2148ab){_0x2cad5a[_0xe756('0x3a')]=_0x2148ab;return _0x2cad5a;})[_0xe756('0x23')](respondWithFilteredResult(_0x209cf3,_0x4dab5f))['catch'](handleError(_0x209cf3,null));})[_0xe756('0x3b')](handleError(_0x209cf3,null));};exports[_0xe756('0x3c')]=function(_0x558cfb,_0x343b24){var _0x4b00e7={'raw':![],'where':{'id':_0x558cfb[_0xe756('0x3d')]['id']}},_0x416281={};_0x416281[_0xe756('0x2d')]=_[_0xe756('0x29')](db[_0xe756('0x38')][_0xe756('0x3e')]);_0x416281[_0xe756('0x2a')]=_[_0xe756('0x29')](_0x558cfb[_0xe756('0x2a')]);_0x416281[_0xe756('0x32')]=_[_0xe756('0x2b')](_0x416281[_0xe756('0x2d')],_0x416281[_0xe756('0x2a')]);_0x4b00e7['attributes']=_[_0xe756('0x2b')](_0x416281['model'],qs[_0xe756('0x2e')](_0x558cfb[_0xe756('0x2a')][_0xe756('0x2e')]));_0x4b00e7[_0xe756('0x2c')]=_0x4b00e7[_0xe756('0x2c')][_0xe756('0x3f')]?_0x4b00e7[_0xe756('0x2c')]:_0x416281[_0xe756('0x2d')];if(_0x558cfb[_0xe756('0x2a')]['includeAll']){_0x4b00e7['include']=[{'all':!![]}];}_0x4b00e7=_['merge']({},_0x4b00e7,_0x558cfb[_0xe756('0x36')]);return db['CmCompany']['find'](_0x4b00e7)[_0xe756('0x23')](handleEntityNotFound(_0x343b24,null))[_0xe756('0x23')](respondWithResult(_0x343b24,null))[_0xe756('0x3b')](handleError(_0x343b24,null));};exports[_0xe756('0x40')]=function(_0x50c794,_0x1153b2){return db[_0xe756('0x38')][_0xe756('0x40')](_0x50c794['body'],{})[_0xe756('0x23')](function(_0x3b153b){var _0x2d8e42=_0x50c794['user'][_0xe756('0x21')]({'plain':!![]});if(!_0x2d8e42)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2d8e42[_0xe756('0x41')]==='user'){var _0xb684cb=_0x3b153b[_0xe756('0x21')]({'plain':!![]});var _0x1741b6='Companies';return db[_0xe756('0x42')][_0xe756('0x43')]({'where':{'name':_0x1741b6,'userProfileId':_0x2d8e42[_0xe756('0x44')]},'raw':!![]})['then'](function(_0x425695){if(_0x425695&&_0x425695[_0xe756('0x45')]===0x0){return db[_0xe756('0x22')][_0xe756('0x40')]({'name':_0xb684cb[_0xe756('0x26')],'resourceId':_0xb684cb['id'],'type':_0x425695[_0xe756('0x26')],'sectionId':_0x425695['id']},{})[_0xe756('0x23')](function(){return _0x3b153b;});}else{return _0x3b153b;}})['catch'](function(_0x46dba0){logger[_0xe756('0x24')](_0xe756('0x46'),_0x46dba0);throw _0x46dba0;});}return _0x3b153b;})[_0xe756('0x23')](respondWithResult(_0x1153b2,0xc9))[_0xe756('0x3b')](handleError(_0x1153b2,null));};exports[_0xe756('0x1f')]=function(_0x55ba98,_0x5f2a49){if(_0x55ba98[_0xe756('0x47')]['id']){delete _0x55ba98[_0xe756('0x47')]['id'];}return db[_0xe756('0x38')]['find']({'where':{'id':_0x55ba98[_0xe756('0x3d')]['id']}})['then'](handleEntityNotFound(_0x5f2a49,null))['then'](saveUpdates(_0x55ba98[_0xe756('0x47')],null))['then'](respondWithResult(_0x5f2a49,null))[_0xe756('0x3b')](handleError(_0x5f2a49,null));};exports[_0xe756('0x20')]=function(_0x3d6170,_0x6476c0){return db[_0xe756('0x38')]['find']({'where':{'id':_0x3d6170[_0xe756('0x3d')]['id']}})[_0xe756('0x23')](handleEntityNotFound(_0x6476c0,null))[_0xe756('0x23')](removeEntity(_0x6476c0,null))[_0xe756('0x3b')](handleError(_0x6476c0,null));};exports[_0xe756('0x28')]=function(_0xcb6d78,_0x4395a7){return db[_0xe756('0x38')][_0xe756('0x28')]()[_0xe756('0x23')](respondWithResult(_0x4395a7,null))[_0xe756('0x3b')](handleError(_0x4395a7,null));};exports[_0xe756('0x48')]=function(_0x29832c,_0xa6dea4,_0x2b2535){return db['CmContact']['find']({'where':{'id':_0x29832c[_0xe756('0x3d')]['id']}})[_0xe756('0x23')](handleEntityNotFound(_0xa6dea4,null))[_0xe756('0x23')](function(_0x5ad054){if(_0x5ad054){return _0x5ad054['addContacts'](_0x29832c['body'][_0xe756('0x49')],_[_0xe756('0x4a')](_0x29832c[_0xe756('0x47')],[_0xe756('0x49'),'id'])||{});}})['then'](respondWithResult(_0xa6dea4,null))[_0xe756('0x3b')](handleError(_0xa6dea4,null));};exports[_0xe756('0x4b')]=function(_0x14420d,_0x3202ae,_0x3ce0e3){var _0x35fcc5={};var _0x5d4b9a={};var _0x25cd66;var _0x5ee624;return db[_0xe756('0x38')][_0xe756('0x4c')]({'where':{'id':_0x14420d['params']['id']}})[_0xe756('0x23')](handleEntityNotFound(_0x3202ae,null))[_0xe756('0x23')](function(_0x294ad3){if(_0x294ad3){_0x25cd66=_0x294ad3;_0x5d4b9a[_0xe756('0x2d')]=_[_0xe756('0x29')](db['CmContact'][_0xe756('0x3e')]);_0x5d4b9a[_0xe756('0x2a')]=_[_0xe756('0x29')](_0x14420d[_0xe756('0x2a')]);_0x5d4b9a['filters']=_[_0xe756('0x2b')](_0x5d4b9a[_0xe756('0x2d')],_0x5d4b9a['query']);_0x35fcc5[_0xe756('0x2c')]=_['intersection'](_0x5d4b9a[_0xe756('0x2d')],qs[_0xe756('0x2e')](_0x14420d[_0xe756('0x2a')][_0xe756('0x2e')]));_0x35fcc5[_0xe756('0x2c')]=_0x35fcc5['attributes']['length']?_0x35fcc5[_0xe756('0x2c')]:_0x5d4b9a[_0xe756('0x2d')];_0x35fcc5[_0xe756('0x30')]=qs[_0xe756('0x4d')](_0x14420d[_0xe756('0x2a')]['sort']);_0x35fcc5[_0xe756('0x31')]=qs[_0xe756('0x32')](_['pick'](_0x14420d[_0xe756('0x2a')],_0x5d4b9a['filters']));if(_0x14420d[_0xe756('0x2a')][_0xe756('0x34')]){_0x35fcc5[_0xe756('0x31')]=_['merge'](_0x35fcc5['where'],{'$or':_[_0xe756('0x4e')](_0x35fcc5['attributes'],function(_0x2cf5ac){var _0x298f6f={};_0x298f6f[_0x2cf5ac]={'$like':'%'+_0x14420d[_0xe756('0x2a')]['filter']+'%'};return _0x298f6f;})});}_0x35fcc5=_['merge']({},_0x35fcc5,_0x14420d[_0xe756('0x36')]);return _0x25cd66[_0xe756('0x4b')](_0x35fcc5);}})[_0xe756('0x23')](function(_0x11bdfd){if(_0x11bdfd){_0x5ee624=_0x11bdfd[_0xe756('0x3f')];if(!_0x14420d[_0xe756('0x2a')]['hasOwnProperty'](_0xe756('0x2f'))){_0x35fcc5['limit']=qs[_0xe756('0x1a')](_0x14420d[_0xe756('0x2a')][_0xe756('0x1a')]);_0x35fcc5[_0xe756('0x18')]=qs[_0xe756('0x18')](_0x14420d[_0xe756('0x2a')][_0xe756('0x18')]);}return _0x25cd66[_0xe756('0x4b')](_0x35fcc5);}})[_0xe756('0x23')](function(_0x5aa297){if(_0x5aa297){return _0x5aa297?{'count':_0x5ee624,'rows':_0x5aa297}:null;}})[_0xe756('0x23')](respondWithResult(_0x3202ae,null))[_0xe756('0x3b')](handleError(_0x3202ae,null));};
\ No newline at end of file
+var _0x6bcc=['find','create','body','user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addContacts','omit','ids','getContacts','findOne','CmContact','rawAttributes','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','json','offset','undefined','limit','count','status','apply','reject','save','update','then','destroy','get','Companies','UserProfileResource','error','name','send','index','CmCompany','describe','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','map','merge','includeAll','include','rows','catch','show','options'];(function(_0x58a138,_0x4de2fa){var _0x874531=function(_0x23bd17){while(--_0x23bd17){_0x58a138['push'](_0x58a138['shift']());}};_0x874531(++_0x4de2fa);}(_0x6bcc,0xb8));var _0xc6bc=function(_0x5940f5,_0x14a225){_0x5940f5=_0x5940f5-0x0;var _0x2add42=_0x6bcc[_0x5940f5];return _0x2add42;};'use strict';var emlformat=require(_0xc6bc('0x0'));var rimraf=require(_0xc6bc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc6bc('0x2'));var rp=require('request-promise');var moment=require(_0xc6bc('0x3'));var BPromise=require(_0xc6bc('0x4'));var Mustache=require('mustache');var util=require(_0xc6bc('0x5'));var path=require(_0xc6bc('0x6'));var sox=require(_0xc6bc('0x7'));var csv=require(_0xc6bc('0x8'));var ejs=require(_0xc6bc('0x9'));var fs=require('fs');var fs_extra=require(_0xc6bc('0xa'));var _=require(_0xc6bc('0xb'));var squel=require(_0xc6bc('0xc'));var crypto=require('crypto');var jsforce=require(_0xc6bc('0xd'));var deskjs=require(_0xc6bc('0xe'));var toCsv=require(_0xc6bc('0x8'));var querystring=require(_0xc6bc('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc6bc('0x10'));var hardwareService=require(_0xc6bc('0x11'));var logger=require('../../config/logger')(_0xc6bc('0x12'));var utils=require(_0xc6bc('0x13'));var config=require(_0xc6bc('0x14'));var licenseUtil=require(_0xc6bc('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x40930d,_0x36c030){_0x36c030=_0x36c030||0xcc;return function(_0x50f3b3){if(_0x50f3b3){return _0x40930d[_0xc6bc('0x16')](_0x36c030);}return _0x40930d['status'](_0x36c030)[_0xc6bc('0x17')]();};}function respondWithResult(_0x463166,_0x4c9a2e){_0x4c9a2e=_0x4c9a2e||0xc8;return function(_0x58e25f){if(_0x58e25f){return _0x463166['status'](_0x4c9a2e)[_0xc6bc('0x18')](_0x58e25f);}};}function respondWithFilteredResult(_0x5a5d92,_0x37c7ba){return function(_0x511fc0){if(_0x511fc0){var _0x59d403=typeof _0x37c7ba[_0xc6bc('0x19')]===_0xc6bc('0x1a')&&typeof _0x37c7ba[_0xc6bc('0x1b')]===_0xc6bc('0x1a');var _0x4f721a=_0x511fc0['count'];var _0x34edde=_0x59d403?0x0:_0x37c7ba[_0xc6bc('0x19')];var _0x3a5354=_0x59d403?_0x511fc0[_0xc6bc('0x1c')]:_0x37c7ba['offset']+_0x37c7ba[_0xc6bc('0x1b')];var _0xc9651a;if(_0x3a5354>=_0x4f721a){_0x3a5354=_0x4f721a;_0xc9651a=0xc8;}else{_0xc9651a=0xce;}_0x5a5d92[_0xc6bc('0x1d')](_0xc9651a);return _0x5a5d92['set']('Content-Range',_0x34edde+'-'+_0x3a5354+'/'+_0x4f721a)[_0xc6bc('0x18')](_0x511fc0);}return null;};}function patchUpdates(_0x3a4c8a){return function(_0x52c505){try{jsonpatch[_0xc6bc('0x1e')](_0x52c505,_0x3a4c8a,!![]);}catch(_0x3336bd){return BPromise[_0xc6bc('0x1f')](_0x3336bd);}return _0x52c505[_0xc6bc('0x20')]();};}function saveUpdates(_0x134124,_0x46c063){return function(_0x4c6bee){if(_0x4c6bee){return _0x4c6bee[_0xc6bc('0x21')](_0x134124)[_0xc6bc('0x22')](function(_0x12d5ec){return _0x12d5ec;});}return null;};}function removeEntity(_0x547039,_0x49436c){return function(_0x235d65){if(_0x235d65){return _0x235d65[_0xc6bc('0x23')]()[_0xc6bc('0x22')](function(){var _0x398185=_0x235d65[_0xc6bc('0x24')]({'plain':!![]});var _0x530472=_0xc6bc('0x25');return db[_0xc6bc('0x26')]['destroy']({'where':{'type':_0x530472,'resourceId':_0x398185['id']}})[_0xc6bc('0x22')](function(){return _0x235d65;});})['then'](function(){_0x547039['status'](0xcc)[_0xc6bc('0x17')]();});}};}function handleEntityNotFound(_0x446ae0,_0x1b1dd5){return function(_0x2ff128){if(!_0x2ff128){_0x446ae0['sendStatus'](0x194);}return _0x2ff128;};}function handleError(_0x398be8,_0x371e7c){_0x371e7c=_0x371e7c||0x1f4;return function(_0x23b3b2){logger[_0xc6bc('0x27')](_0x23b3b2['stack']);if(_0x23b3b2['name']){delete _0x23b3b2[_0xc6bc('0x28')];}_0x398be8[_0xc6bc('0x1d')](_0x371e7c)[_0xc6bc('0x29')](_0x23b3b2);};}exports[_0xc6bc('0x2a')]=function(_0x1006f1,_0x5a85ec){var _0x472bfe={},_0x10ddee={},_0x27d63e={'count':0x0,'rows':[]};return db[_0xc6bc('0x2b')][_0xc6bc('0x2c')]()[_0xc6bc('0x22')](function(_0x586a27){_0x10ddee[_0xc6bc('0x2d')]=_[_0xc6bc('0x2e')](_0x586a27);_0x10ddee[_0xc6bc('0x2f')]=_[_0xc6bc('0x2e')](_0x1006f1[_0xc6bc('0x2f')]);_0x10ddee['filters']=_[_0xc6bc('0x30')](_0x10ddee['model'],_0x10ddee[_0xc6bc('0x2f')]);_0x472bfe[_0xc6bc('0x31')]=_[_0xc6bc('0x30')](_0x10ddee[_0xc6bc('0x2d')],qs[_0xc6bc('0x32')](_0x1006f1[_0xc6bc('0x2f')][_0xc6bc('0x32')]));_0x472bfe[_0xc6bc('0x31')]=_0x472bfe[_0xc6bc('0x31')][_0xc6bc('0x33')]?_0x472bfe[_0xc6bc('0x31')]:_0x10ddee[_0xc6bc('0x2d')];if(!_0x1006f1['query'][_0xc6bc('0x34')](_0xc6bc('0x35'))){_0x472bfe[_0xc6bc('0x1b')]=qs[_0xc6bc('0x1b')](_0x1006f1['query']['limit']);_0x472bfe['offset']=qs[_0xc6bc('0x19')](_0x1006f1['query'][_0xc6bc('0x19')]);}_0x472bfe[_0xc6bc('0x36')]=qs[_0xc6bc('0x37')](_0x1006f1['query'][_0xc6bc('0x37')]);_0x472bfe[_0xc6bc('0x38')]=qs[_0xc6bc('0x39')](_[_0xc6bc('0x3a')](_0x1006f1[_0xc6bc('0x2f')],_0x10ddee['filters']),_0x586a27);if(_0x1006f1['query'][_0xc6bc('0x3b')]){_0x472bfe[_0xc6bc('0x38')]=_['merge'](_0x472bfe['where'],{'$or':_[_0xc6bc('0x3c')](_0x472bfe[_0xc6bc('0x31')],function(_0x186afd){var _0x444eb3={};_0x444eb3[_0x186afd]={'$like':'%'+_0x1006f1[_0xc6bc('0x2f')][_0xc6bc('0x3b')]+'%'};return _0x444eb3;})});}_0x472bfe=_[_0xc6bc('0x3d')]({},_0x472bfe,_0x1006f1['options']);var _0x1495d5={'where':_0x472bfe[_0xc6bc('0x38')]};return db[_0xc6bc('0x2b')][_0xc6bc('0x1c')](_0x1495d5)['then'](function(_0x1e1521){_0x27d63e[_0xc6bc('0x1c')]=_0x1e1521;if(_0x1006f1['query'][_0xc6bc('0x3e')]){_0x472bfe[_0xc6bc('0x3f')]=[{'all':!![]}];}return db[_0xc6bc('0x2b')]['findAll'](_0x472bfe);})[_0xc6bc('0x22')](function(_0x132ee3){_0x27d63e[_0xc6bc('0x40')]=_0x132ee3;return _0x27d63e;})[_0xc6bc('0x22')](respondWithFilteredResult(_0x5a85ec,_0x472bfe))[_0xc6bc('0x41')](handleError(_0x5a85ec,null));})['catch'](handleError(_0x5a85ec,null));};exports[_0xc6bc('0x42')]=function(_0x2ed88a,_0x369879){var _0x3fb007={'raw':![],'where':{'id':_0x2ed88a['params']['id']}},_0x555f62={};_0x555f62['model']=_[_0xc6bc('0x2e')](db[_0xc6bc('0x2b')]['rawAttributes']);_0x555f62[_0xc6bc('0x2f')]=_[_0xc6bc('0x2e')](_0x2ed88a[_0xc6bc('0x2f')]);_0x555f62[_0xc6bc('0x39')]=_['intersection'](_0x555f62[_0xc6bc('0x2d')],_0x555f62[_0xc6bc('0x2f')]);_0x3fb007[_0xc6bc('0x31')]=_[_0xc6bc('0x30')](_0x555f62[_0xc6bc('0x2d')],qs[_0xc6bc('0x32')](_0x2ed88a[_0xc6bc('0x2f')][_0xc6bc('0x32')]));_0x3fb007['attributes']=_0x3fb007['attributes'][_0xc6bc('0x33')]?_0x3fb007['attributes']:_0x555f62[_0xc6bc('0x2d')];if(_0x2ed88a['query']['includeAll']){_0x3fb007['include']=[{'all':!![]}];}_0x3fb007=_['merge']({},_0x3fb007,_0x2ed88a[_0xc6bc('0x43')]);return db[_0xc6bc('0x2b')][_0xc6bc('0x44')](_0x3fb007)[_0xc6bc('0x22')](handleEntityNotFound(_0x369879,null))[_0xc6bc('0x22')](respondWithResult(_0x369879,null))[_0xc6bc('0x41')](handleError(_0x369879,null));};exports[_0xc6bc('0x45')]=function(_0x10401c,_0x2db980){return db['CmCompany'][_0xc6bc('0x45')](_0x10401c[_0xc6bc('0x46')],{})[_0xc6bc('0x22')](function(_0x56de59){var _0x86842f=_0x10401c[_0xc6bc('0x47')]['get']({'plain':!![]});if(!_0x86842f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x86842f[_0xc6bc('0x48')]===_0xc6bc('0x47')){var _0x5b2c79=_0x56de59[_0xc6bc('0x24')]({'plain':!![]});var _0x59a40c=_0xc6bc('0x25');return db['UserProfileSection'][_0xc6bc('0x44')]({'where':{'name':_0x59a40c,'userProfileId':_0x86842f[_0xc6bc('0x49')]},'raw':!![]})[_0xc6bc('0x22')](function(_0x53505d){if(_0x53505d&&_0x53505d[_0xc6bc('0x4a')]===0x0){return db[_0xc6bc('0x26')]['create']({'name':_0x5b2c79[_0xc6bc('0x28')],'resourceId':_0x5b2c79['id'],'type':_0x53505d[_0xc6bc('0x28')],'sectionId':_0x53505d['id']},{})['then'](function(){return _0x56de59;});}else{return _0x56de59;}})[_0xc6bc('0x41')](function(_0x9548a4){logger[_0xc6bc('0x27')](_0xc6bc('0x4b'),_0x9548a4);throw _0x9548a4;});}return _0x56de59;})['then'](respondWithResult(_0x2db980,0xc9))[_0xc6bc('0x41')](handleError(_0x2db980,null));};exports['update']=function(_0x3345c0,_0x571c52){if(_0x3345c0[_0xc6bc('0x46')]['id']){delete _0x3345c0[_0xc6bc('0x46')]['id'];}return db[_0xc6bc('0x2b')]['find']({'where':{'id':_0x3345c0[_0xc6bc('0x4c')]['id']}})[_0xc6bc('0x22')](handleEntityNotFound(_0x571c52,null))[_0xc6bc('0x22')](saveUpdates(_0x3345c0[_0xc6bc('0x46')],null))[_0xc6bc('0x22')](respondWithResult(_0x571c52,null))[_0xc6bc('0x41')](handleError(_0x571c52,null));};exports[_0xc6bc('0x23')]=function(_0x473180,_0x14688a){return db['CmCompany']['find']({'where':{'id':_0x473180[_0xc6bc('0x4c')]['id']}})['then'](handleEntityNotFound(_0x14688a,null))[_0xc6bc('0x22')](removeEntity(_0x14688a,null))[_0xc6bc('0x41')](handleError(_0x14688a,null));};exports[_0xc6bc('0x2c')]=function(_0x9c4623,_0x584388){return db[_0xc6bc('0x2b')][_0xc6bc('0x2c')]()[_0xc6bc('0x22')](respondWithResult(_0x584388,null))[_0xc6bc('0x41')](handleError(_0x584388,null));};exports[_0xc6bc('0x4d')]=function(_0x420634,_0x2bad53,_0x5ce153){return db['CmContact'][_0xc6bc('0x44')]({'where':{'id':_0x420634[_0xc6bc('0x4c')]['id']}})[_0xc6bc('0x22')](handleEntityNotFound(_0x2bad53,null))[_0xc6bc('0x22')](function(_0x42b9fc){if(_0x42b9fc){return _0x42b9fc['addContacts'](_0x420634[_0xc6bc('0x46')]['ids'],_[_0xc6bc('0x4e')](_0x420634[_0xc6bc('0x46')],[_0xc6bc('0x4f'),'id'])||{});}})[_0xc6bc('0x22')](respondWithResult(_0x2bad53,null))[_0xc6bc('0x41')](handleError(_0x2bad53,null));};exports[_0xc6bc('0x50')]=function(_0x169e9f,_0x4b849a,_0x1e2369){var _0x24269d={};var _0x999655={};var _0x49dbbe;var _0x2baca7;return db[_0xc6bc('0x2b')][_0xc6bc('0x51')]({'where':{'id':_0x169e9f[_0xc6bc('0x4c')]['id']}})[_0xc6bc('0x22')](handleEntityNotFound(_0x4b849a,null))[_0xc6bc('0x22')](function(_0x30a9cc){if(_0x30a9cc){_0x49dbbe=_0x30a9cc;_0x999655['model']=_[_0xc6bc('0x2e')](db[_0xc6bc('0x52')][_0xc6bc('0x53')]);_0x999655[_0xc6bc('0x2f')]=_[_0xc6bc('0x2e')](_0x169e9f[_0xc6bc('0x2f')]);_0x999655['filters']=_['intersection'](_0x999655['model'],_0x999655[_0xc6bc('0x2f')]);_0x24269d['attributes']=_[_0xc6bc('0x30')](_0x999655['model'],qs['fields'](_0x169e9f[_0xc6bc('0x2f')][_0xc6bc('0x32')]));_0x24269d['attributes']=_0x24269d['attributes'][_0xc6bc('0x33')]?_0x24269d[_0xc6bc('0x31')]:_0x999655['model'];_0x24269d[_0xc6bc('0x36')]=qs[_0xc6bc('0x37')](_0x169e9f[_0xc6bc('0x2f')]['sort']);_0x24269d[_0xc6bc('0x38')]=qs['filters'](_[_0xc6bc('0x3a')](_0x169e9f['query'],_0x999655[_0xc6bc('0x39')]));if(_0x169e9f[_0xc6bc('0x2f')]['filter']){_0x24269d[_0xc6bc('0x38')]=_['merge'](_0x24269d[_0xc6bc('0x38')],{'$or':_[_0xc6bc('0x3c')](_0x24269d[_0xc6bc('0x31')],function(_0x3eefb7){var _0x2bd3e7={};_0x2bd3e7[_0x3eefb7]={'$like':'%'+_0x169e9f[_0xc6bc('0x2f')]['filter']+'%'};return _0x2bd3e7;})});}_0x24269d=_['merge']({},_0x24269d,_0x169e9f[_0xc6bc('0x43')]);return _0x49dbbe[_0xc6bc('0x50')](_0x24269d);}})['then'](function(_0x4bf3ef){if(_0x4bf3ef){_0x2baca7=_0x4bf3ef['length'];if(!_0x169e9f[_0xc6bc('0x2f')][_0xc6bc('0x34')](_0xc6bc('0x35'))){_0x24269d[_0xc6bc('0x1b')]=qs[_0xc6bc('0x1b')](_0x169e9f[_0xc6bc('0x2f')][_0xc6bc('0x1b')]);_0x24269d[_0xc6bc('0x19')]=qs[_0xc6bc('0x19')](_0x169e9f[_0xc6bc('0x2f')][_0xc6bc('0x19')]);}return _0x49dbbe['getContacts'](_0x24269d);}})[_0xc6bc('0x22')](function(_0x1fb706){if(_0x1fb706){return _0x1fb706?{'count':_0x2baca7,'rows':_0x1fb706}:null;}})['then'](respondWithResult(_0x4b849a,null))[_0xc6bc('0x41')](handleError(_0x4b849a,null));};
\ No newline at end of file
index e780efa..67b05cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcaf=['define','CmCompany','cm_companies','lodash','util','api','moment','bluebird','request-promise','../../config/environment','./cmCompany.attributes'];(function(_0x1b1a3b,_0x52a88a){var _0x385347=function(_0x4ca60a){while(--_0x4ca60a){_0x1b1a3b['push'](_0x1b1a3b['shift']());}};_0x385347(++_0x52a88a);}(_0xfcaf,0x1a5));var _0xffca=function(_0xf2628e,_0x521bf7){_0xf2628e=_0xf2628e-0x0;var _0x13863a=_0xfcaf[_0xf2628e];return _0x13863a;};'use strict';var _=require(_0xffca('0x0'));var util=require(_0xffca('0x1'));var logger=require('../../config/logger')(_0xffca('0x2'));var moment=require(_0xffca('0x3'));var BPromise=require(_0xffca('0x4'));var rp=require(_0xffca('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xffca('0x6'));var attributes=require(_0xffca('0x7'));module['exports']=function(_0x4faca1,_0x5abe7f){return _0x4faca1[_0xffca('0x8')](_0xffca('0x9'),attributes,{'tableName':_0xffca('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x751f=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','lodash','util','../../config/logger','api'];(function(_0x3d0669,_0x5133fa){var _0x1a512b=function(_0x459f03){while(--_0x459f03){_0x3d0669['push'](_0x3d0669['shift']());}};_0x1a512b(++_0x5133fa);}(_0x751f,0x10f));var _0xf751=function(_0xfd5785,_0x10b302){_0xfd5785=_0xfd5785-0x0;var _0xeeeee3=_0x751f[_0xfd5785];return _0xeeeee3;};'use strict';var _=require(_0xf751('0x0'));var util=require(_0xf751('0x1'));var logger=require(_0xf751('0x2'))(_0xf751('0x3'));var moment=require(_0xf751('0x4'));var BPromise=require(_0xf751('0x5'));var rp=require(_0xf751('0x6'));var fs=require('fs');var path=require(_0xf751('0x7'));var rimraf=require(_0xf751('0x8'));var config=require(_0xf751('0x9'));var attributes=require('./cmCompany.attributes');module[_0xf751('0xa')]=function(_0x5835ac,_0x549133){return _0x5835ac['define']('CmCompany',attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f54b9fd..6cc5b32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb763=['rpc','jayson/promise','client','http','request','then','CmCompany,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4516bd,_0x1eb922){var _0x3d307c=function(_0x3b72c8){while(--_0x3b72c8){_0x4516bd['push'](_0x4516bd['shift']());}};_0x3d307c(++_0x1eb922);}(_0xb763,0x19b));var _0x3b76=function(_0x371a5a,_0x23ef28){_0x371a5a=_0x371a5a-0x0;var _0x1da7c3=_0xb763[_0x371a5a];return _0x1da7c3;};'use strict';var _=require(_0x3b76('0x0'));var util=require(_0x3b76('0x1'));var moment=require(_0x3b76('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3b76('0x3'));var db=require(_0x3b76('0x4'))['db'];var utils=require(_0x3b76('0x5'));var logger=require(_0x3b76('0x6'))(_0x3b76('0x7'));var config=require('../../config/environment');var jayson=require(_0x3b76('0x8'));var client=jayson[_0x3b76('0x9')][_0x3b76('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3320e1,_0x83abf,_0x1f6ba9){return new BPromise(function(_0x3b1774,_0x5567db){return client[_0x3b76('0xb')](_0x3320e1,_0x1f6ba9)[_0x3b76('0xc')](function(_0x32ee62){logger['info'](_0x3b76('0xd'),_0x83abf,_0x3b76('0xe'));logger[_0x3b76('0xf')]('CmCompany,\x20%s,\x20%s,\x20%s',_0x83abf,_0x3b76('0xe'),JSON[_0x3b76('0x10')](_0x32ee62));if(_0x32ee62['error']){if(_0x32ee62[_0x3b76('0x11')][_0x3b76('0x12')]===0x1f4){logger[_0x3b76('0x11')](_0x3b76('0xd'),_0x83abf,_0x32ee62[_0x3b76('0x11')][_0x3b76('0x13')]);return _0x5567db(_0x32ee62[_0x3b76('0x11')][_0x3b76('0x13')]);}logger['error'](_0x3b76('0xd'),_0x83abf,_0x32ee62[_0x3b76('0x11')]['message']);return _0x3b1774(_0x32ee62[_0x3b76('0x11')][_0x3b76('0x13')]);}else{logger[_0x3b76('0x14')](_0x3b76('0xd'),_0x83abf,_0x3b76('0xe'));_0x3b1774(_0x32ee62[_0x3b76('0x15')][_0x3b76('0x13')]);}})['catch'](function(_0x2ec058){logger[_0x3b76('0x11')](_0x3b76('0xd'),_0x83abf,_0x2ec058);_0x5567db(_0x2ec058);});});}
\ No newline at end of file
+var _0xa575=['error','CmCompany,\x20%s,\x20%s','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x3e9930,_0x55b2f4){var _0x206ccb=function(_0x5634ec){while(--_0x5634ec){_0x3e9930['push'](_0x3e9930['shift']());}};_0x206ccb(++_0x55b2f4);}(_0xa575,0x1d2));var _0x5a57=function(_0x278345,_0x510277){_0x278345=_0x278345-0x0;var _0x4ddf36=_0xa575[_0x278345];return _0x4ddf36;};'use strict';var _=require(_0x5a57('0x0'));var util=require('util');var moment=require(_0x5a57('0x1'));var BPromise=require(_0x5a57('0x2'));var rs=require(_0x5a57('0x3'));var fs=require('fs');var Redis=require(_0x5a57('0x4'));var db=require(_0x5a57('0x5'))['db'];var utils=require(_0x5a57('0x6'));var logger=require(_0x5a57('0x7'))('rpc');var config=require(_0x5a57('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x5a57('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x23e31c,_0x4b6952,_0x52d267){return new BPromise(function(_0x403521,_0x16097e){return client[_0x5a57('0xa')](_0x23e31c,_0x52d267)[_0x5a57('0xb')](function(_0x5158d4){logger[_0x5a57('0xc')]('CmCompany,\x20%s,\x20%s',_0x4b6952,_0x5a57('0xd'));logger[_0x5a57('0xe')](_0x5a57('0xf'),_0x4b6952,'request\x20sent',JSON[_0x5a57('0x10')](_0x5158d4));if(_0x5158d4[_0x5a57('0x11')]){if(_0x5158d4[_0x5a57('0x11')]['code']===0x1f4){logger[_0x5a57('0x11')](_0x5a57('0x12'),_0x4b6952,_0x5158d4[_0x5a57('0x11')][_0x5a57('0x13')]);return _0x16097e(_0x5158d4['error']['message']);}logger[_0x5a57('0x11')]('CmCompany,\x20%s,\x20%s',_0x4b6952,_0x5158d4[_0x5a57('0x11')][_0x5a57('0x13')]);return _0x403521(_0x5158d4[_0x5a57('0x11')]['message']);}else{logger['info'](_0x5a57('0x12'),_0x4b6952,_0x5a57('0xd'));_0x403521(_0x5158d4[_0x5a57('0x14')][_0x5a57('0x13')]);}})['catch'](function(_0x59ff16){logger[_0x5a57('0x11')](_0x5a57('0x12'),_0x4b6952,_0x59ff16);_0x16097e(_0x59ff16);});});}
\ No newline at end of file
index d8d1c40..d69adaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4780=['../../config/environment','./cmCompany.controller','isAuthenticated','index','/describe','describe','get','/:id','show','/:id/contacts','getContacts','post','create','addContacts','put','destroy','exports','util','path','connect-timeout','Router','fs-extra'];(function(_0x550aed,_0x1ba6cb){var _0x1c43a5=function(_0x39e5f7){while(--_0x39e5f7){_0x550aed['push'](_0x550aed['shift']());}};_0x1c43a5(++_0x1ba6cb);}(_0x4780,0x145));var _0x0478=function(_0x4d3958,_0x32788e){_0x4d3958=_0x4d3958-0x0;var _0x499351=_0x4780[_0x4d3958];return _0x499351;};'use strict';var multer=require('multer');var util=require(_0x0478('0x0'));var path=require(_0x0478('0x1'));var timeout=require(_0x0478('0x2'));var express=require('express');var router=express[_0x0478('0x3')]();var fs_extra=require(_0x0478('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x0478('0x5'));var controller=require(_0x0478('0x6'));router['get']('/',auth[_0x0478('0x7')](),controller[_0x0478('0x8')]);router['get'](_0x0478('0x9'),auth[_0x0478('0x7')](),controller[_0x0478('0xa')]);router[_0x0478('0xb')](_0x0478('0xc'),auth[_0x0478('0x7')](),controller[_0x0478('0xd')]);router[_0x0478('0xb')](_0x0478('0xe'),auth['isAuthenticated'](),controller[_0x0478('0xf')]);router[_0x0478('0x10')]('/',auth[_0x0478('0x7')](),controller[_0x0478('0x11')]);router[_0x0478('0x10')](_0x0478('0xe'),auth[_0x0478('0x7')](),controller[_0x0478('0x12')]);router[_0x0478('0x13')](_0x0478('0xc'),auth[_0x0478('0x7')](),controller['update']);router['delete'](_0x0478('0xc'),auth[_0x0478('0x7')](),controller[_0x0478('0x14')]);module[_0x0478('0x15')]=router;
\ No newline at end of file
+var _0xd54f=['connect-timeout','Router','../../components/auth/service','../../config/environment','./cmCompany.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/contacts','post','create','addContacts','put','update','destroy','exports','multer','util','path'];(function(_0x5892f2,_0x53e53b){var _0x22f986=function(_0x242b53){while(--_0x242b53){_0x5892f2['push'](_0x5892f2['shift']());}};_0x22f986(++_0x53e53b);}(_0xd54f,0x6b));var _0xfd54=function(_0x55036a,_0x1e43dc){_0x55036a=_0x55036a-0x0;var _0x2ebe00=_0xd54f[_0x55036a];return _0x2ebe00;};'use strict';var multer=require(_0xfd54('0x0'));var util=require(_0xfd54('0x1'));var path=require(_0xfd54('0x2'));var timeout=require(_0xfd54('0x3'));var express=require('express');var router=express[_0xfd54('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xfd54('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xfd54('0x6'));var controller=require(_0xfd54('0x7'));router['get']('/',auth[_0xfd54('0x8')](),controller['index']);router[_0xfd54('0x9')](_0xfd54('0xa'),auth['isAuthenticated'](),controller[_0xfd54('0xb')]);router['get'](_0xfd54('0xc'),auth[_0xfd54('0x8')](),controller[_0xfd54('0xd')]);router[_0xfd54('0x9')](_0xfd54('0xe'),auth['isAuthenticated'](),controller['getContacts']);router[_0xfd54('0xf')]('/',auth[_0xfd54('0x8')](),controller[_0xfd54('0x10')]);router[_0xfd54('0xf')]('/:id/contacts',auth[_0xfd54('0x8')](),controller[_0xfd54('0x11')]);router[_0xfd54('0x12')](_0xfd54('0xc'),auth[_0xfd54('0x8')](),controller[_0xfd54('0x13')]);router['delete'](_0xfd54('0xc'),auth['isAuthenticated'](),controller[_0xfd54('0x14')]);module[_0xfd54('0x15')]=router;
\ No newline at end of file
index 4c30928..0b0f1d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cce=['STRING','TEXT','UNSIGNED','DATE','NOW','lodash','sequelize','exports'];(function(_0x35344a,_0x1790b6){var _0x285085=function(_0x30a6ca){while(--_0x30a6ca){_0x35344a['push'](_0x35344a['shift']());}};_0x285085(++_0x1790b6);}(_0x7cce,0x8d));var _0xe7cc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7cce[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe7cc('0x0'));var Sequelize=require(_0xe7cc('0x1'));module[_0xe7cc('0x2')]={'firstName':{'type':Sequelize['STRING'],'allowNull':![]},'lastName':{'type':Sequelize[_0xe7cc('0x3')]},'street':{'type':Sequelize[_0xe7cc('0x3')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0xe7cc('0x3')]},'country':{'type':Sequelize[_0xe7cc('0x3')]},'dateOfBirth':{'type':Sequelize[_0xe7cc('0x3')]},'description':{'type':Sequelize[_0xe7cc('0x4')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0xe7cc('0x3')]},'fax':{'type':Sequelize[_0xe7cc('0x3')]},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize[_0xe7cc('0x3')]},'facebook':{'type':Sequelize[_0xe7cc('0x3')]},'fb_data':{'type':Sequelize[_0xe7cc('0x3')]},'twitter':{'type':Sequelize[_0xe7cc('0x3')]},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize[_0xe7cc('0x3')]},'viber':{'type':Sequelize[_0xe7cc('0x3')]},'line':{'type':Sequelize['STRING']},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0xe7cc('0x3')]},'UserId':{'type':Sequelize['INTEGER']},'priority':{'type':Sequelize['INTEGER'](0x2)[_0xe7cc('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xe7cc('0x6')],'defaultValue':Sequelize[_0xe7cc('0x7')]}};
\ No newline at end of file
+var _0x87f0=['INTEGER','UNSIGNED','NOW','sequelize','exports','STRING','TEXT'];(function(_0x2867d8,_0xef3ee0){var _0x3b8176=function(_0x2b9eb8){while(--_0x2b9eb8){_0x2867d8['push'](_0x2867d8['shift']());}};_0x3b8176(++_0xef3ee0);}(_0x87f0,0x184));var _0x087f=function(_0xb31024,_0xf7095){_0xb31024=_0xb31024-0x0;var _0x4401ef=_0x87f0[_0xb31024];return _0x4401ef;};'use strict';var _=require('lodash');var Sequelize=require(_0x087f('0x0'));module[_0x087f('0x1')]={'firstName':{'type':Sequelize[_0x087f('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0x087f('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x087f('0x2')]},'city':{'type':Sequelize[_0x087f('0x2')]},'country':{'type':Sequelize[_0x087f('0x2')]},'dateOfBirth':{'type':Sequelize[_0x087f('0x2')]},'description':{'type':Sequelize[_0x087f('0x3')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x087f('0x2')]},'email':{'type':Sequelize[_0x087f('0x2')]},'url':{'type':Sequelize[_0x087f('0x2')]},'facebook':{'type':Sequelize[_0x087f('0x2')]},'fb_data':{'type':Sequelize['STRING']},'twitter':{'type':Sequelize[_0x087f('0x2')]},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize[_0x087f('0x2')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0x087f('0x2')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize['STRING']},'UserId':{'type':Sequelize[_0x087f('0x4')]},'priority':{'type':Sequelize[_0x087f('0x4')](0x2)[_0x087f('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize[_0x087f('0x6')]}};
\ No newline at end of file
index df8dc88..9aef8fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc76=['OpenchannelInteraction','ReportAgentPreview','VoiceCallReport','FaxQueueReport','MailQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','join','duplicates','$or','findOrCreate','show','find','Tags','omit','cf_%d','pickBy','startsWith','table','setFields','id\x20=\x20?','phone','getTags','findOne','attributes','options','setTags','ids','getHoppers','rawAttributes','ContactId','includeAll','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','include','uploadCsv','No\x20ListId\x20specified','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','zipObject','No\x20firstName\x20column\x20specified','root','server/files/tmp','file','filename','0777','child_process','fork','../../components/import/cm/csv','CompanyId','File\x20uploaded\x20correctly!','pid','upload','createReadStream','parse','meta','import','binding','No\x20phone\x20column\x20specified','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','getJourney','mail','sms','openchannel','fax','whatsapp','voice','-createdAt','channel','includes','toLowerCase','Invalid\x20channel','range','Invalid\x20date\x20for\x20range\x20from\x20filter','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','source','destination','callerid','starttime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','alias','DESC','chat','Website','closed','closedAt','disposition','thirdDisposition','Account','browserName','customerIp','customerPort','deviceModel','osName','ratingType','ratingValue','referer','subject','substatus','externalUrl','threadId','startCase','Interaction','Owner','flatten','sortBy','reverse','slice','moment','bluebird','util','path','squel','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','redis','defaults','./cmContact.socket','status','json','undefined','limit','count','offset','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','CmContact','describe','keys','cf_','push','CmCustomField','all','fieldType','type','query','filters','intersection','model','fields','nolimit','order','sort','where','pick','select','field','color','from','tools_tags','cm_contacts','uc.CmContactId\x20=\x20c.id','left_join','ct.CmContactId\x20=\x20c.id','c.deletedAt\x20IS\x20NULL','expr','search','sqlOperator','conditions','length','Tag','value','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','uc.UserId\x20=\x20?','dateOfBirth','castTo','DATE','buildExpression','text','map','hasOwnProperty','filter','isNil','Contact','isEmpty','ListId','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','isArray','replace','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','isNumeric','c.id\x20LIKE\x20?','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','QueryTypes','SELECT','clone','t.id\x20IN\x20?','resolve','user','role','agent','some','User','c.ListId\x20IS\x20NULL','sequelize','keyBy','merge','c.id','c.firstName','c.lastName','c.phone','c.ListId','c.createdAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','toString','TagIds','rows','params','catch','tags','columnName','displayName','analytics','custom','values','body','findAll','get','mergeWith','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','[CmContact][merge][destroy][CmHopperBlack],\x20%s','ChatInteraction','ChatMessage','ChatOfflineMessage','MailMessage','MailInteraction','SmsInteraction','SmsMessage','FaxInteraction'];(function(_0x531afe,_0xd50763){var _0x8882c9=function(_0x5dacb1){while(--_0x5dacb1){_0x531afe['push'](_0x531afe['shift']());}};_0x8882c9(++_0xd50763);}(_0xcc76,0x7e));var _0x6cc7=function(_0x35cc0,_0x4f3b39){_0x35cc0=_0x35cc0-0x0;var _0x487054=_0xcc76[_0x35cc0];return _0x487054;};'use strict';var moment=require(_0x6cc7('0x0'));var BPromise=require(_0x6cc7('0x1'));var util=require(_0x6cc7('0x2'));var path=require(_0x6cc7('0x3'));var fs=require('fs');var _=require('lodash');var squel=require(_0x6cc7('0x4'));var Papa=require(_0x6cc7('0x5'));var Redis=require('ioredis');var qs=require(_0x6cc7('0x6'));var as=require(_0x6cc7('0x7'));var logger=require(_0x6cc7('0x8'))('api');var config=require(_0x6cc7('0x9'));var db=require('../../mysqldb')['db'];config[_0x6cc7('0xa')]=_[_0x6cc7('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6cc7('0xa')]));require(_0x6cc7('0xc'))['register'](socket);function respondWithResult(_0x4a020f,_0x7db75f){_0x7db75f=_0x7db75f||0xc8;return function(_0x220023){if(_0x220023){return _0x4a020f[_0x6cc7('0xd')](_0x7db75f)[_0x6cc7('0xe')](_0x220023);}};}function respondWithFilteredResult(_0x12f81d,_0x27edd7){return function(_0x44a1ad){if(_0x44a1ad){var _0x3e9a96=typeof _0x27edd7['offset']===_0x6cc7('0xf')&&typeof _0x27edd7[_0x6cc7('0x10')]===_0x6cc7('0xf');var _0x5b6310=_0x44a1ad[_0x6cc7('0x11')];var _0x1d18ee=_0x3e9a96?0x0:_0x27edd7['offset'];var _0x297688=_0x3e9a96?_0x44a1ad[_0x6cc7('0x11')]:_0x27edd7[_0x6cc7('0x12')]+_0x27edd7[_0x6cc7('0x10')];var _0x33f54c;if(_0x297688>=_0x5b6310){_0x297688=_0x5b6310;_0x33f54c=0xc8;}else{_0x33f54c=0xce;}_0x12f81d['status'](_0x33f54c);return _0x12f81d[_0x6cc7('0x13')](_0x6cc7('0x14'),_0x1d18ee+'-'+_0x297688+'/'+_0x5b6310)[_0x6cc7('0xe')](_0x44a1ad);}return null;};}function saveUpdates(_0x1cdbbe){return function(_0x13b92c){if(_0x13b92c){return _0x13b92c[_0x6cc7('0x15')](_0x1cdbbe)[_0x6cc7('0x16')](function(_0x21102f){return _0x21102f;});}return null;};}function removeEntity(_0x1bc67b){return function(_0xc0d765){if(_0xc0d765){return _0xc0d765[_0x6cc7('0x17')]()[_0x6cc7('0x16')](function(){_0x1bc67b[_0x6cc7('0xd')](0xcc)[_0x6cc7('0x18')]();});}};}function handleEntityNotFound(_0x1d78ea){return function(_0x387881){if(!_0x387881){_0x1d78ea[_0x6cc7('0x19')](0x194);}return _0x387881;};}function handleError(_0x2b3a1d,_0x3c97e6){_0x3c97e6=_0x3c97e6||0x1f4;return function(_0x2e6d37){logger[_0x6cc7('0x1a')](_0x2e6d37[_0x6cc7('0x1b')]);if(_0x2e6d37[_0x6cc7('0x1c')]){delete _0x2e6d37['name'];}_0x2b3a1d[_0x6cc7('0xd')](_0x3c97e6)[_0x6cc7('0x1d')](_0x2e6d37);};}exports['index']=function(_0x33fad9,_0x1bf2db){var _0x5cf493={},_0x5093d2={},_0x58359b={'count':0x0,'rows':[]};return db[_0x6cc7('0x1e')][_0x6cc7('0x1f')]()[_0x6cc7('0x16')](function(_0x38601e){var _0x39e471=[];for(var _0x19c586=0x0;_0x19c586<Object[_0x6cc7('0x20')](_0x38601e)['length'];_0x19c586++){var _0x81caf3=Object[_0x6cc7('0x20')](_0x38601e)[_0x19c586];if(_['startsWith'](_0x81caf3,_0x6cc7('0x21'))){_0x39e471[_0x6cc7('0x22')](db[_0x6cc7('0x23')]['findOne']({'where':{'id':_['trimStart'](_0x81caf3,_0x6cc7('0x21'))},'raw':!![]}));}}return BPromise[_0x6cc7('0x24')](_0x39e471)[_0x6cc7('0x16')](function(_0x124270){for(var _0x19db13=0x0;_0x19db13<_0x124270['length'];_0x19db13++){if(_0x124270[_0x19db13]){var _0x195bc4=_0x6cc7('0x21')+_0x124270[_0x19db13]['id'];var _0x476117=_0x38601e[_0x195bc4];_0x476117[_0x6cc7('0x25')]=_0x124270[_0x19db13][_0x6cc7('0x26')];}}return _0x38601e;});})[_0x6cc7('0x16')](function(_0x15c282){_0x5093d2['model']=_[_0x6cc7('0x20')](_0x15c282);_0x5093d2['query']=_[_0x6cc7('0x20')](_0x33fad9[_0x6cc7('0x27')]);_0x5093d2[_0x6cc7('0x28')]=_[_0x6cc7('0x29')](_0x5093d2[_0x6cc7('0x2a')],_0x5093d2[_0x6cc7('0x27')]);_0x5cf493['attributes']=_[_0x6cc7('0x29')](_0x5093d2[_0x6cc7('0x2a')],qs['fields'](_0x33fad9[_0x6cc7('0x27')][_0x6cc7('0x2b')]));_0x5cf493['attributes']=_0x5cf493['attributes']['length']?_0x5cf493['attributes']:_0x5093d2['model'];if(!_0x33fad9['query']['hasOwnProperty'](_0x6cc7('0x2c'))){_0x5cf493[_0x6cc7('0x10')]=qs[_0x6cc7('0x10')](_0x33fad9[_0x6cc7('0x27')][_0x6cc7('0x10')]);_0x5cf493[_0x6cc7('0x12')]=qs[_0x6cc7('0x12')](_0x33fad9[_0x6cc7('0x27')][_0x6cc7('0x12')]);}_0x5cf493[_0x6cc7('0x2d')]=qs[_0x6cc7('0x2e')](_0x33fad9[_0x6cc7('0x27')][_0x6cc7('0x2e')]);_0x5cf493[_0x6cc7('0x2f')]=qs[_0x6cc7('0x28')](_[_0x6cc7('0x30')](_0x33fad9['query'],_0x5093d2['filters']),_0x15c282);var _0x34b45a=[];var _0x985269=squel[_0x6cc7('0x31')]()[_0x6cc7('0x32')]('id')[_0x6cc7('0x32')](_0x6cc7('0x1c'))[_0x6cc7('0x32')](_0x6cc7('0x33'))[_0x6cc7('0x34')](_0x6cc7('0x35'));var _0x478b14=squel['select']()[_0x6cc7('0x34')](_0x6cc7('0x36'),'c')['left_join']('cm_user_has_contacts','uc',_0x6cc7('0x37'))[_0x6cc7('0x38')]('cm_contact_has_tags','ct',_0x6cc7('0x39'))['left_join'](_0x6cc7('0x35'),'t','t.id\x20=\x20ct.TagId')['where'](_0x6cc7('0x3a'));var _0x8daa94=squel[_0x6cc7('0x3b')]();var _0x4d8316=[];var _0x1ffb35=squel[_0x6cc7('0x3b')]();var _0xbddded;if(_0x33fad9['query'][_0x6cc7('0x3c')]){_0xbddded=as['parseSearch'](_0x33fad9[_0x6cc7('0x27')]['search']);var _0xfdcd21=_0xbddded[_0x6cc7('0x3d')];for(var _0x438be7=0x0;_0x438be7<_0xbddded[_0x6cc7('0x3e')][_0x6cc7('0x3f')];_0x438be7++){var _0x5768a2=_0xbddded[_0x6cc7('0x3e')][_0x438be7];var _0x27e80d='c';var _0x45c70e=_(_0x15c282)[_0x6cc7('0x20')]()['find'](function(_0x4c5e5f){return _0x4c5e5f===_0x5768a2[_0x6cc7('0x32')];});if(_0x45c70e)_0x45c70e=_0x15c282[_0x5768a2[_0x6cc7('0x32')]];if(!_0x45c70e){if(_0x5768a2[_0x6cc7('0x32')]===_0x6cc7('0x40')){var _0x1dbda5=_0x5768a2[_0x6cc7('0x41')]['split'](',')['map'](function(_0x222259){return Number(_0x222259);});_0x1dbda5[_0x6cc7('0x42')](function(_0x8d210b){_0x1ffb35['or'](_0x6cc7('0x43'),'%,'+_0x8d210b+',%');});_0x4d8316=_['union'](_0x4d8316,_0x1dbda5);}else if(_0x5768a2[_0x6cc7('0x32')]==='User'){_0x8daa94['and'](_0x6cc7('0x44'),_0x5768a2['value']);}}else{if(_0x5768a2[_0x6cc7('0x32')]===_0x6cc7('0x45')||_0x45c70e[_0x6cc7('0x25')]==='datetime')_0x5768a2[_0x6cc7('0x46')]=_0x6cc7('0x47');var _0x313dc4=as[_0x6cc7('0x48')](_0x27e80d,_0x45c70e['type'],_0x5768a2);_0x8daa94[_0xfdcd21](_0x313dc4[_0x6cc7('0x49')],_0x313dc4[_0x6cc7('0x41')]['start'],_0x313dc4[_0x6cc7('0x41')]['end']);}}}else{var _0x4ef000=_(Object['keys'](_0x33fad9[_0x6cc7('0x27')]))[_0x6cc7('0x4a')](function(_0x4b7087){return _0x15c282[_0x6cc7('0x4b')](_0x4b7087)?_0x4b7087:undefined;})[_0x6cc7('0x4c')](function(_0x9bc082){return!_[_0x6cc7('0x4d')](_0x9bc082);})[_0x6cc7('0x41')]();if(_0x33fad9['query'][_0x6cc7('0x4e')])_0x4ef000['push'](_0x6cc7('0x4e'));if(!_[_0x6cc7('0x4f')](_0x4ef000)){_0x4ef000[_0x6cc7('0x42')](function(_0x594d74){if(_0x594d74===_0x6cc7('0x50')){_0x478b14[_0x6cc7('0x2f')](_0x6cc7('0x51'),[][_0x6cc7('0x52')](_0x33fad9[_0x6cc7('0x27')][_0x594d74]));}else if(_0x594d74===_0x6cc7('0x4e')){var _0x3fcb0b='%'+_0x33fad9[_0x6cc7('0x27')][_0x594d74]+'%';_0x478b14[_0x6cc7('0x2f')](_0x6cc7('0x53'),_0x3fcb0b);}else{_0x478b14[_0x6cc7('0x2f')]('c.'+_0x594d74+_0x6cc7('0x54'),_0x33fad9[_0x6cc7('0x27')][_0x594d74]);}});}if(_0x33fad9['query'][_0x6cc7('0x55')]){_0x4d8316=_[_0x6cc7('0x56')](_0x33fad9[_0x6cc7('0x27')][_0x6cc7('0x55')])?_0x33fad9[_0x6cc7('0x27')][_0x6cc7('0x55')]:new Array(_0x33fad9[_0x6cc7('0x27')][_0x6cc7('0x55')]);_0x4d8316[_0x6cc7('0x42')](function(_0x360b66){_0x1ffb35['or'](_0x6cc7('0x43'),'%,'+_0x360b66+',%');});}if(_0x33fad9[_0x6cc7('0x27')][_0x6cc7('0x4c')]){var _0x4a2e77=_0x33fad9[_0x6cc7('0x27')][_0x6cc7('0x4c')]['replace']('\x5c','\x5c\x5c')[_0x6cc7('0x57')](/'/g,'\x27\x27');if(_0x4a2e77[_0x6cc7('0x58')]('\x20')[_0x6cc7('0x3f')]>0x1){_0x8daa94['or'](_0x6cc7('0x59'),qs['getFullTextValue'](_0x4a2e77),null);}else{if(qs[_0x6cc7('0x5a')](_0x4a2e77)){_0x8daa94['or'](_0x6cc7('0x5b'),_0x4a2e77+'%');_0x8daa94['or'](_0x6cc7('0x5c'),_0x4a2e77+'%');_0x8daa94['or'](_0x6cc7('0x5d'),_0x4a2e77+'%');_0x8daa94['or'](_0x6cc7('0x5e'),_0x4a2e77+'%');}else if(qs['isEmail'](_0x4a2e77)){_0x8daa94['or'](_0x6cc7('0x5f'),_0x4a2e77+'%');}else{_0x8daa94['or'](_0x6cc7('0x60'),'%'+_0x4a2e77+'%');_0x8daa94['or'](_0x6cc7('0x61'),'%'+_0x4a2e77+'%');_0x8daa94['or'](_0x6cc7('0x5f'),'%'+_0x4a2e77+'%');}}}}_0x478b14[_0x6cc7('0x2f')](_0x8daa94);_0x478b14[_0x6cc7('0x62')]('c.id');var _0x7c50ec={'type':db['Sequelize'][_0x6cc7('0x63')][_0x6cc7('0x64')],'raw':!![]};var _0x8301b=_0x478b14[_0x6cc7('0x65')]()[_0x6cc7('0x32')]('c.id');if(_0x5cf493[_0x6cc7('0x2d')]){_0x5cf493['order'][_0x6cc7('0x42')](function(_0x37ab7f){_0x478b14[_0x6cc7('0x2d')]('c.'+_0x37ab7f[0x0],_0x37ab7f[0x1]==='DESC'?![]:!![]);});}if(!_['isEmpty'](_0x4d8316)){_0x478b14['having'](_0x1ffb35);_0x8301b[_0x6cc7('0x2f')](_0x6cc7('0x66'),_0x4d8316);}BPromise[_0x6cc7('0x67')]()['then'](function(){if(!_0xbddded)return;if(_0x33fad9[_0x6cc7('0x68')][_0x6cc7('0x69')]!==_0x6cc7('0x6a'))return;if(!_[_0x6cc7('0x6b')](_0xbddded[_0x6cc7('0x3e')],[_0x6cc7('0x32'),_0x6cc7('0x6c')])){return _0x33fad9[_0x6cc7('0x68')]['getLists']({'attributes':['id'],'raw':!![]})[_0x6cc7('0x16')](function(_0x169ca2){if(_[_0x6cc7('0x4f')](_0x169ca2)){_0x8301b[_0x6cc7('0x2f')](_0x6cc7('0x6d'));_0x478b14[_0x6cc7('0x2f')](_0x6cc7('0x6d'));}else{_0x8301b[_0x6cc7('0x2f')](_0x6cc7('0x51'),_[_0x6cc7('0x4a')](_0x169ca2,'id'));_0x478b14[_0x6cc7('0x2f')](_0x6cc7('0x51'),_['map'](_0x169ca2,'id'));}});}})[_0x6cc7('0x16')](function(){if(_0x33fad9[_0x6cc7('0x68')]['role']===_0x6cc7('0x6a')&&!_0xbddded&&!_0x33fad9[_0x6cc7('0x27')][_0x6cc7('0x50')])return[];return db[_0x6cc7('0x6e')]['query'](_0x8301b['toString'](),_0x7c50ec);})[_0x6cc7('0x16')](function(_0x2489b8){_0x58359b[_0x6cc7('0x11')]=_0x2489b8[_0x6cc7('0x3f')];if(_0x58359b[_0x6cc7('0x11')]===0x0)return[];return db[_0x6cc7('0x6e')]['query'](_0x985269['toString'](),_0x7c50ec)[_0x6cc7('0x16')](function(_0x4c14f9){_0x34b45a=_[_0x6cc7('0x6f')](_0x4c14f9,'id');_0x7c50ec=_[_0x6cc7('0x70')](_0x7c50ec,{'model':db['CmContact'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x33fad9[_0x6cc7('0x27')]['fields']){_0x5cf493['attributes'][_0x6cc7('0x42')](function(_0x14eec3){_0x478b14[_0x6cc7('0x32')]('c.'+_0x14eec3);});}else{_0x478b14[_0x6cc7('0x32')](_0x6cc7('0x71'));_0x478b14[_0x6cc7('0x32')](_0x6cc7('0x72'));_0x478b14[_0x6cc7('0x32')](_0x6cc7('0x73'));_0x478b14['field'](_0x6cc7('0x74'));_0x478b14[_0x6cc7('0x32')]('c.mobile');_0x478b14[_0x6cc7('0x32')]('c.fax');_0x478b14[_0x6cc7('0x32')]('c.email');_0x478b14[_0x6cc7('0x32')](_0x6cc7('0x75'));_0x478b14[_0x6cc7('0x32')](_0x6cc7('0x76'));_0x478b14['field']('c.deletedAt');_0x478b14['field'](_0x6cc7('0x77'));_0x478b14['field'](_0x6cc7('0x78'),'TagIds');}if(_0x5cf493[_0x6cc7('0x10')])_0x478b14[_0x6cc7('0x10')](_0x5cf493['limit']);if(_0x5cf493[_0x6cc7('0x12')])_0x478b14['offset'](_0x5cf493[_0x6cc7('0x12')]);return db['sequelize']['query'](_0x478b14[_0x6cc7('0x79')](),_0x7c50ec);});})[_0x6cc7('0x16')](function(_0x166261){_0x166261[_0x6cc7('0x42')](function(_0x59930a){if(_0x59930a[_0x6cc7('0x7a')]){_0x59930a['Tags']=[];_0x59930a[_0x6cc7('0x7a')][_0x6cc7('0x58')](',')[_0x6cc7('0x42')](function(_0x2340ff){_0x59930a['Tags']['push'](_0x34b45a[_0x2340ff]);});}delete _0x59930a['TagIds'];});_0x58359b[_0x6cc7('0x7b')]=_0x166261;return _0x58359b;})['then'](respondWithFilteredResult(_0x1bf2db,_0x5cf493));})['catch'](handleError(_0x1bf2db,null));};exports[_0x6cc7('0x17')]=function(_0x4f90e9,_0x102de2){return db['CmContact']['find']({'where':{'id':_0x4f90e9[_0x6cc7('0x7c')]['id']}})['then'](handleEntityNotFound(_0x102de2,null))[_0x6cc7('0x16')](removeEntity(_0x102de2,null))[_0x6cc7('0x7d')](handleError(_0x102de2,null));};exports['describe']=function(_0x2998b6,_0xe075d6){return db['CmContact'][_0x6cc7('0x1f')]()['then'](function(_0x2857f7){delete _0x2857f7[_0x6cc7('0x7e')];for(var _0x53333b=0x0;_0x53333b<Object['keys'](_0x2857f7)['length'];_0x53333b++){var _0x5442c1=Object['keys'](_0x2857f7)[_0x53333b];if(!_['startsWith'](_0x5442c1,'cf_')){_0x2857f7[_0x5442c1][_0x6cc7('0x7f')]=_0x5442c1;_0x2857f7[_0x5442c1][_0x6cc7('0x80')]=_0x5442c1;}}return _0x2857f7;})[_0x6cc7('0x16')](function(_0x25cfd8){var _0x591158={'where':Boolean(_0x2998b6[_0x6cc7('0x27')][_0x6cc7('0x81')])===!![]?undefined:{'$or':[{'ListId':_0x2998b6['query']['id']},{'ListId':null}]},'raw':!![]};return db[_0x6cc7('0x23')]['findAll'](_0x591158)[_0x6cc7('0x16')](function(_0x434300){for(var _0x1095db=0x0;_0x1095db<_0x434300[_0x6cc7('0x3f')];_0x1095db++){var _0x22192e=_0x6cc7('0x21')+_0x434300[_0x1095db]['id'];_0x25cfd8[_0x22192e][_0x6cc7('0x7f')]=_0x22192e;_0x25cfd8[_0x22192e][_0x6cc7('0x80')]=_0x434300[_0x1095db]['alias'];_0x25cfd8[_0x22192e][_0x6cc7('0x82')]={'type':_0x434300[_0x1095db]['type'],'values':_0x434300[_0x1095db][_0x6cc7('0x83')]};}Object[_0x6cc7('0x20')](_0x25cfd8)[_0x6cc7('0x42')](function(_0x576057){if(!_0x25cfd8[_0x576057][_0x6cc7('0x4b')](_0x6cc7('0x7f'))){delete _0x25cfd8[_0x576057];}});return _0x25cfd8;});})[_0x6cc7('0x16')](respondWithResult(_0xe075d6,null))['catch'](handleError(_0xe075d6,null));};exports[_0x6cc7('0x70')]=function(_0xe9f4ef,_0x29db69){var _0x34e62f;var _0x5b8dcb;var _0x479ce3;if(_0xe9f4ef[_0x6cc7('0x84')]['id']){delete _0xe9f4ef[_0x6cc7('0x84')]['id'];}return db[_0x6cc7('0x1e')][_0x6cc7('0x85')]({'where':{'id':[_0xe9f4ef[_0x6cc7('0x84')]['to'],_0xe9f4ef[_0x6cc7('0x84')][_0x6cc7('0x34')]]}})[_0x6cc7('0x16')](function(_0x3f2355){if(_0x3f2355){if(_0x3f2355[_0x6cc7('0x3f')]!==0x2){return null;}_0x3f2355[0x0]=_0x3f2355[0x0][_0x6cc7('0x86')]({'plain':!![]});_0x3f2355[0x1]=_0x3f2355[0x1][_0x6cc7('0x86')]({'plain':!![]});delete _0x3f2355[0x0]['id'];delete _0x3f2355[0x1]['id'];return _[_0x6cc7('0x87')](_0x3f2355[0x0],_0x3f2355[0x1],function(_0x5a03ae,_0x22588d){if(Array[_0x6cc7('0x56')](_0x22588d)&&!_0x22588d[_0x6cc7('0x3f')]){return _0x5a03ae;}else if(!_0x22588d){return _0x5a03ae;}});}})['then'](handleEntityNotFound(_0x29db69,null))[_0x6cc7('0x16')](function(_0x1c151c){if(_0x1c151c){if(_0x1c151c[_0x6cc7('0x7e')]&&_[_0x6cc7('0x56')](_0x1c151c[_0x6cc7('0x7e')])){_0x1c151c[_0x6cc7('0x7e')]=_0x1c151c['tags']['join']();}logger[_0x6cc7('0x88')](_0x6cc7('0x89'),_0xe9f4ef[_0x6cc7('0x84')]['to'],_0xe9f4ef[_0x6cc7('0x84')][_0x6cc7('0x34')]);return db[_0x6cc7('0x8a')]['destroy']({'where':{'ContactId':[_0xe9f4ef[_0x6cc7('0x84')]['to'],_0xe9f4ef['body']['from']]}})[_0x6cc7('0x16')](function(_0x260f1a){logger[_0x6cc7('0x88')](_0x6cc7('0x8b'),_0x260f1a);return db['CmHopperBlack'][_0x6cc7('0x17')]({'where':{'ContactId':[_0xe9f4ef[_0x6cc7('0x84')]['to'],_0xe9f4ef['body'][_0x6cc7('0x34')]]}})[_0x6cc7('0x16')](function(_0x2060e7){logger[_0x6cc7('0x88')](_0x6cc7('0x8c'),_0x2060e7);return db[_0x6cc7('0x1e')]['create'](_0x1c151c);});});}})[_0x6cc7('0x16')](function(_0x4da150){if(_0x4da150){_0x34e62f=_0x4da150;_0x5b8dcb={'ContactId':_0x34e62f['id']};_0x479ce3={'where':{'ContactId':[_0xe9f4ef[_0x6cc7('0x84')]['to'],_0xe9f4ef[_0x6cc7('0x84')][_0x6cc7('0x34')]]}};return db[_0x6cc7('0x8d')][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db[_0x6cc7('0x8e')][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db[_0x6cc7('0x8f')][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db['MailInteraction'][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db[_0x6cc7('0x90')][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db[_0x6cc7('0x91')][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db[_0x6cc7('0x90')][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db[_0x6cc7('0x92')][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db[_0x6cc7('0x93')][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db[_0x6cc7('0x94')]['update'](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db['FaxMessage'][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})['then'](function(){if(_0x34e62f){return db[_0x6cc7('0x95')][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db['OpenchannelMessage'][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db['CmHopperFinal'][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})['then'](function(){if(_0x34e62f){return db['CmHopperHistory'][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})['then'](function(){if(_0x34e62f){return db[_0x6cc7('0x96')][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db[_0x6cc7('0x97')][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db['ChatQueueReport']['update'](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db[_0x6cc7('0x98')][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db[_0x6cc7('0x99')][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db['OpenchannelQueueReport'][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})['then'](function(){if(_0x34e62f){return db['SmsQueueReport'][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})['then'](function(){if(_0x34e62f){return db[_0x6cc7('0x9a')][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db[_0x6cc7('0x9b')][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db[_0x6cc7('0x9c')][_0x6cc7('0x15')](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db['WhatsappQueueReport']['update'](_0x5b8dcb,_0x479ce3);}})[_0x6cc7('0x16')](function(){if(_0x34e62f){return db[_0x6cc7('0x1e')][_0x6cc7('0x17')]({'where':{'id':[_0xe9f4ef[_0x6cc7('0x84')]['to'],_0xe9f4ef[_0x6cc7('0x84')][_0x6cc7('0x34')]]}});}})['then'](function(){if(_0x34e62f){return _0x34e62f;}})[_0x6cc7('0x16')](respondWithResult(_0x29db69,null))[_0x6cc7('0x7d')](handleError(_0x29db69,null));};exports['create']=function(_0x5d5333,_0x49709b){return db[_0x6cc7('0x1e')][_0x6cc7('0x1f')]()[_0x6cc7('0x16')](function(_0x3dfd81){if(_0x5d5333['body'][_0x6cc7('0x7e')]&&_['isArray'](_0x5d5333[_0x6cc7('0x84')][_0x6cc7('0x7e')])){if(_0x5d5333[_0x6cc7('0x84')][_0x6cc7('0x7e')]['length']){_0x5d5333[_0x6cc7('0x84')][_0x6cc7('0x7e')]=_0x5d5333[_0x6cc7('0x84')]['tags'][_0x6cc7('0x9d')](';')+';';}else{_0x5d5333[_0x6cc7('0x84')][_0x6cc7('0x7e')]=null;}}else{_0x5d5333['body'][_0x6cc7('0x7e')]=null;}return db[_0x6cc7('0x1e')]['create'](_0x5d5333[_0x6cc7('0x84')],{'fields':_[_0x6cc7('0x20')](_0x3dfd81),'raw':!![]});})[_0x6cc7('0x16')](respondWithResult(_0x49709b,0xc9))[_0x6cc7('0x7d')](handleError(_0x49709b,null));};exports['bulkCreate']=function(_0x49969c,_0x518233){var _0x26a58f=0x0;var _0x92d36c=0x0;var _0x4a4fd7=0x0;return db[_0x6cc7('0x1e')]['describe']()[_0x6cc7('0x16')](function(_0x2fb88b){return BPromise['each'](_0x49969c[_0x6cc7('0x84')],function(_0x154fde){var _0x4643bd={'where':{'$or':[]},'defaults':_0x154fde,'fields':_[_0x6cc7('0x20')](_0x2fb88b),'raw':!![]};if(_0x154fde[_0x6cc7('0x9e')]){for(var _0x29292f=0x0;_0x29292f<_0x154fde[_0x6cc7('0x9e')]['length'];_0x29292f++){var _0x74fec2={};_0x74fec2[_0x154fde['duplicates'][_0x29292f]]=_0x154fde[_0x154fde[_0x6cc7('0x9e')][_0x29292f]];_0x4643bd['where'][_0x6cc7('0x9f')]['push'](_0x74fec2);}_0x4643bd[_0x6cc7('0x2f')][_0x6cc7('0x50')]=_0x154fde[_0x6cc7('0x50')];}return db[_0x6cc7('0x1e')][_0x6cc7('0xa0')](_0x4643bd)['spread'](function(_0x49c43e,_0x5bda9a){if(_0x5bda9a){_0x26a58f++;}else{_0x4a4fd7++;}})[_0x6cc7('0x7d')](function(){_0x92d36c++;});});})[_0x6cc7('0x16')](function(_0x4fd557){if(_0x4fd557){return{'success':_0x26a58f,'failure':_0x92d36c,'duplicates':_0x4a4fd7};}})['then'](respondWithResult(_0x518233,0xc9))[_0x6cc7('0x7d')](handleError(_0x518233,null));};exports[_0x6cc7('0xa1')]=function(_0x2ad5f3,_0x1c5936){var _0x2f7e8a;return db[_0x6cc7('0x1e')][_0x6cc7('0x1f')]()[_0x6cc7('0x16')](function(_0x53f000){return db[_0x6cc7('0x1e')][_0x6cc7('0xa2')]({'where':{'id':_0x2ad5f3[_0x6cc7('0x7c')]['id']},'include':[{'model':db[_0x6cc7('0x40')],'as':_0x6cc7('0xa3'),'attributes':['id','name',_0x6cc7('0x33')],'required':_0x2ad5f3[_0x6cc7('0x27')][_0x6cc7('0x55')]?!![]:![]}],'attributes':_['keys'](_0x53f000)});})[_0x6cc7('0x16')](function(_0x28e497){if(!_[_0x6cc7('0x4d')](_0x28e497)){_0x2f7e8a=_0x28e497[_0x6cc7('0x86')]({'plain':!![]});var _0x5c5a15={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x28e497&&_0x28e497[_0x6cc7('0x50')]){if(_0x28e497[_0x6cc7('0x50')]){_0x5c5a15[_0x6cc7('0x2f')]['$and'][_0x6cc7('0x22')]({'ListId':{'$ne':_0x28e497['ListId']}});}}return db[_0x6cc7('0x23')]['findAll'](_0x5c5a15);}})[_0x6cc7('0x16')](function(_0x10f242){if(!_[_0x6cc7('0x4d')](_0x10f242)){return _[_0x6cc7('0xa4')](_0x2f7e8a,_[_0x6cc7('0x4a')](_0x10f242,function(_0x8c610b){return util['format'](_0x6cc7('0xa5'),_0x8c610b['id']);}));}})[_0x6cc7('0x16')](handleEntityNotFound(_0x1c5936,null))[_0x6cc7('0x16')](respondWithResult(_0x1c5936,null))['catch'](handleError(_0x1c5936,null));};exports[_0x6cc7('0x15')]=function(_0x53b4ff,_0x4f692a){var _0x3019b8;if(_0x53b4ff['body']['id']){delete _0x53b4ff[_0x6cc7('0x84')]['id'];}return db[_0x6cc7('0x1e')][_0x6cc7('0xa2')]({'where':{'id':_0x53b4ff[_0x6cc7('0x7c')]['id']}})[_0x6cc7('0x16')](handleEntityNotFound(_0x4f692a,null))[_0x6cc7('0x16')](saveUpdates(_0x53b4ff[_0x6cc7('0x84')],null))[_0x6cc7('0x16')](function(_0x1560ea){_0x3019b8=_0x1560ea;var _0x5085d1={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x1560ea&&_0x1560ea['ListId']){if(_0x1560ea[_0x6cc7('0x50')]){_0x5085d1['where']['$and']['push']({'ListId':{'$ne':_0x1560ea[_0x6cc7('0x50')]}});}}return db[_0x6cc7('0x23')][_0x6cc7('0x85')](_0x5085d1);})['then'](function(_0x12e15d){if(_0x12e15d){return _[_0x6cc7('0xa4')](_[_0x6cc7('0xa6')](_0x53b4ff['body'],function(_0x1b7891,_0x44041c){return _[_0x6cc7('0xa7')](_0x44041c,'cf_');}),_[_0x6cc7('0x4a')](_0x12e15d,function(_0x10674b){return util['format']('cf_%d',_0x10674b['id']);}));}})[_0x6cc7('0x16')](function(_0x11e2a5){if(_0x11e2a5&&!_[_0x6cc7('0x4f')](_0x11e2a5)){var _0x20057a=squel[_0x6cc7('0x15')]()[_0x6cc7('0xa8')](_0x6cc7('0x36'))[_0x6cc7('0xa9')](_0x11e2a5)[_0x6cc7('0x2f')](_0x6cc7('0xaa'),_0x53b4ff[_0x6cc7('0x7c')]['id'])['toParam']();return db['sequelize'][_0x6cc7('0x27')](_0x20057a[_0x6cc7('0x49')],{'replacements':_0x20057a[_0x6cc7('0x83')]});}})[_0x6cc7('0x16')](function(){if(_0x53b4ff[_0x6cc7('0x84')][_0x6cc7('0xab')]&&_0x3019b8){return db[_0x6cc7('0x8a')][_0x6cc7('0x15')]({'phone':_0x53b4ff[_0x6cc7('0x84')]['phone']},{'where':{'ContactId':_0x3019b8['id']}});}})['then'](function(){return _0x3019b8;})['then'](respondWithResult(_0x4f692a,null))[_0x6cc7('0x7d')](handleError(_0x4f692a,null));};exports[_0x6cc7('0xac')]=function(_0x47da48,_0x481742){var _0x5bd4e5={};var _0x412a7d={};var _0x13d95c;var _0x4b52da;return db[_0x6cc7('0x1e')][_0x6cc7('0xad')]({'where':{'id':_0x47da48['params']['id']}})[_0x6cc7('0x16')](handleEntityNotFound(_0x481742,null))['then'](function(_0x5de1ed){if(_0x5de1ed){_0x13d95c=_0x5de1ed;_0x412a7d[_0x6cc7('0x2a')]=_['keys'](db[_0x6cc7('0x40')]['rawAttributes']);_0x412a7d[_0x6cc7('0x27')]=_['keys'](_0x47da48[_0x6cc7('0x27')]);_0x412a7d[_0x6cc7('0x28')]=_['intersection'](_0x412a7d[_0x6cc7('0x2a')],_0x412a7d[_0x6cc7('0x27')]);_0x5bd4e5['attributes']=_[_0x6cc7('0x29')](_0x412a7d[_0x6cc7('0x2a')],qs[_0x6cc7('0x2b')](_0x47da48[_0x6cc7('0x27')][_0x6cc7('0x2b')]));_0x5bd4e5[_0x6cc7('0xae')]=_0x5bd4e5[_0x6cc7('0xae')][_0x6cc7('0x3f')]?_0x5bd4e5[_0x6cc7('0xae')]:_0x412a7d['model'];_0x5bd4e5['order']=qs[_0x6cc7('0x2e')](_0x47da48[_0x6cc7('0x27')][_0x6cc7('0x2e')]);_0x5bd4e5['where']=qs['filters'](_['pick'](_0x47da48[_0x6cc7('0x27')],_0x412a7d[_0x6cc7('0x28')]));if(_0x47da48[_0x6cc7('0x27')][_0x6cc7('0x4c')]){_0x5bd4e5[_0x6cc7('0x2f')]=_[_0x6cc7('0x70')](_0x5bd4e5[_0x6cc7('0x2f')],{'$or':_[_0x6cc7('0x4a')](_0x5bd4e5[_0x6cc7('0xae')],function(_0x4e507c){var _0x1af692={};_0x1af692[_0x4e507c]={'$like':'%'+_0x47da48[_0x6cc7('0x27')][_0x6cc7('0x4c')]+'%'};return _0x1af692;})});}_0x5bd4e5=_['merge']({},_0x5bd4e5,_0x47da48[_0x6cc7('0xaf')]);return _0x13d95c[_0x6cc7('0xac')](_0x5bd4e5);}})[_0x6cc7('0x16')](function(_0x424719){if(_0x424719){_0x4b52da=_0x424719['length'];if(!_0x47da48['query'][_0x6cc7('0x4b')]('nolimit')){_0x5bd4e5[_0x6cc7('0x10')]=qs[_0x6cc7('0x10')](_0x47da48['query'][_0x6cc7('0x10')]);_0x5bd4e5[_0x6cc7('0x12')]=qs[_0x6cc7('0x12')](_0x47da48[_0x6cc7('0x27')][_0x6cc7('0x12')]);}return _0x13d95c[_0x6cc7('0xac')](_0x5bd4e5);}})[_0x6cc7('0x16')](function(_0x513f7c){if(_0x513f7c){return _0x513f7c?{'count':_0x4b52da,'rows':_0x513f7c}:null;}})[_0x6cc7('0x16')](respondWithResult(_0x481742,null))[_0x6cc7('0x7d')](handleError(_0x481742,null));};exports[_0x6cc7('0xb0')]=function(_0x1d8c8b,_0x291828){if(_0x1d8c8b['body']['id']){delete _0x1d8c8b['body']['id'];}return db[_0x6cc7('0x1e')]['findOne']({'where':{'id':_0x1d8c8b[_0x6cc7('0x7c')]['id']}})[_0x6cc7('0x16')](handleEntityNotFound(_0x291828,null))['then'](function(_0x4a3460){if(_0x4a3460){return _0x4a3460[_0x6cc7('0xb0')](_0x1d8c8b[_0x6cc7('0x84')][_0x6cc7('0xb1')]||[]);}return null;})[_0x6cc7('0x16')](respondWithResult(_0x291828,null))[_0x6cc7('0x7d')](handleError(_0x291828,null));};exports[_0x6cc7('0xb2')]=function(_0x3f0d1c,_0x5661b8){var _0x4f6d77={'raw':![],'where':{}};var _0x3d4210={};var _0x4be554={'count':0x0,'rows':[]};return db[_0x6cc7('0x1e')][_0x6cc7('0xad')]({'where':{'id':_0x3f0d1c[_0x6cc7('0x7c')]['id']}})[_0x6cc7('0x16')](handleEntityNotFound(_0x5661b8,null))[_0x6cc7('0x16')](function(_0x3aca2c){if(_0x3aca2c){_0x3d4210['model']=_['keys'](db[_0x6cc7('0x8a')][_0x6cc7('0xb3')]);_0x3d4210[_0x6cc7('0x27')]=_[_0x6cc7('0x20')](_0x3f0d1c[_0x6cc7('0x27')]);_0x3d4210[_0x6cc7('0x28')]=_[_0x6cc7('0x29')](_0x3d4210[_0x6cc7('0x2a')],_0x3d4210[_0x6cc7('0x27')]);_0x4f6d77['attributes']=_[_0x6cc7('0x29')](_0x3d4210[_0x6cc7('0x2a')],qs[_0x6cc7('0x2b')](_0x3f0d1c[_0x6cc7('0x27')]['fields']));_0x4f6d77[_0x6cc7('0xae')]=_0x4f6d77['attributes'][_0x6cc7('0x3f')]?_0x4f6d77[_0x6cc7('0xae')]:_0x3d4210[_0x6cc7('0x2a')];if(!_0x3f0d1c['query']['hasOwnProperty']('nolimit')){_0x4f6d77[_0x6cc7('0x10')]=qs['limit'](_0x3f0d1c['query']['limit']);_0x4f6d77[_0x6cc7('0x12')]=qs[_0x6cc7('0x12')](_0x3f0d1c[_0x6cc7('0x27')]['offset']);}_0x4f6d77['order']=qs[_0x6cc7('0x2e')](_0x3f0d1c[_0x6cc7('0x27')][_0x6cc7('0x2e')]);_0x4f6d77[_0x6cc7('0x2f')]=qs[_0x6cc7('0x28')](_[_0x6cc7('0x30')](_0x3f0d1c[_0x6cc7('0x27')],_0x3d4210[_0x6cc7('0x28')]));_0x4f6d77[_0x6cc7('0x2f')][_0x6cc7('0xb4')]=_0x3aca2c['id'];if(_0x3f0d1c[_0x6cc7('0x27')][_0x6cc7('0x4c')]){_0x4f6d77['where']=_['merge'](_0x4f6d77[_0x6cc7('0x2f')],{'$or':_[_0x6cc7('0x4a')](_0x4f6d77[_0x6cc7('0xae')],function(_0xb85941){var _0x2f2bc0={};_0x2f2bc0[_0xb85941]={'$like':'%'+_0x3f0d1c[_0x6cc7('0x27')]['filter']+'%'};return _0x2f2bc0;})});}_0x4f6d77=_[_0x6cc7('0x70')]({},_0x4f6d77,_0x3f0d1c['options']);return db[_0x6cc7('0x8a')][_0x6cc7('0x11')]({'where':_0x4f6d77['where']})[_0x6cc7('0x16')](function(_0x3b4e5d){_0x4be554[_0x6cc7('0x11')]=_0x3b4e5d;if(_0x3f0d1c[_0x6cc7('0x27')][_0x6cc7('0xb5')]){_0x4f6d77['include']=[{'all':!![]}];}return db['CmHopper'][_0x6cc7('0x85')](_0x4f6d77);})['then'](function(_0x389f57){_0x4be554[_0x6cc7('0x7b')]=_0x389f57;return _0x4be554;});}})[_0x6cc7('0x16')](respondWithFilteredResult(_0x5661b8,_0x4f6d77))[_0x6cc7('0x7d')](handleError(_0x5661b8,null));};exports[_0x6cc7('0xb6')]=function(_0x290a38,_0x4c152d){var _0x330c2a={'raw':!![],'where':{}};var _0x1409c7={};var _0x24bb63={'count':0x0,'rows':[]};return db[_0x6cc7('0x1e')]['findOne']({'where':{'id':_0x290a38['params']['id']}})[_0x6cc7('0x16')](handleEntityNotFound(_0x4c152d,null))[_0x6cc7('0x16')](function(_0x380219){if(_0x380219){_0x1409c7['model']=_['keys'](db['CmHopperHistory']['rawAttributes']);_0x1409c7[_0x6cc7('0x27')]=_[_0x6cc7('0x20')](_0x290a38[_0x6cc7('0x27')]);_0x1409c7[_0x6cc7('0x28')]=_[_0x6cc7('0x29')](_0x1409c7['model'],_0x1409c7[_0x6cc7('0x27')]);_0x330c2a[_0x6cc7('0xae')]=_[_0x6cc7('0x29')](_0x1409c7[_0x6cc7('0x2a')],qs['fields'](_0x290a38[_0x6cc7('0x27')][_0x6cc7('0x2b')]));_0x330c2a[_0x6cc7('0xae')]=_0x330c2a['attributes'][_0x6cc7('0x3f')]?_0x330c2a[_0x6cc7('0xae')]:_0x1409c7['model'];if(!_0x290a38[_0x6cc7('0x27')]['hasOwnProperty']('nolimit')){_0x330c2a[_0x6cc7('0x10')]=qs['limit'](_0x290a38['query'][_0x6cc7('0x10')]);_0x330c2a[_0x6cc7('0x12')]=qs[_0x6cc7('0x12')](_0x290a38['query'][_0x6cc7('0x12')]);}_0x330c2a[_0x6cc7('0x2d')]=qs['sort'](_0x290a38[_0x6cc7('0x27')]['sort']);_0x330c2a[_0x6cc7('0x2f')]=qs[_0x6cc7('0x28')](_[_0x6cc7('0x30')](_0x290a38[_0x6cc7('0x27')],_0x1409c7[_0x6cc7('0x28')]));_0x330c2a[_0x6cc7('0x2f')]['ContactId']=_0x380219['id'];if(_0x290a38[_0x6cc7('0x27')][_0x6cc7('0x4c')]){_0x330c2a['where']=_[_0x6cc7('0x70')](_0x330c2a[_0x6cc7('0x2f')],{'$or':_[_0x6cc7('0x4a')](_0x330c2a['attributes'],function(_0x866d4c){var _0x5be56f={};_0x5be56f[_0x866d4c]={'$like':'%'+_0x290a38[_0x6cc7('0x27')][_0x6cc7('0x4c')]+'%'};return _0x5be56f;})});}_0x330c2a=_[_0x6cc7('0x70')]({},_0x330c2a,_0x290a38['options']);return db[_0x6cc7('0xb7')][_0x6cc7('0x11')]({'where':_0x330c2a[_0x6cc7('0x2f')]})[_0x6cc7('0x16')](function(_0x24464b){_0x24bb63[_0x6cc7('0x11')]=_0x24464b;if(_0x290a38[_0x6cc7('0x27')][_0x6cc7('0xb5')]){_0x330c2a['include']=[{'all':!![]}];}return db[_0x6cc7('0xb7')]['findAll'](_0x330c2a);})[_0x6cc7('0x16')](function(_0x5fa031){_0x24bb63[_0x6cc7('0x7b')]=_0x5fa031;return _0x24bb63;});}})[_0x6cc7('0x16')](respondWithFilteredResult(_0x4c152d,_0x330c2a))[_0x6cc7('0x7d')](handleError(_0x4c152d,null));};exports[_0x6cc7('0xb8')]=function(_0x164769,_0x53fb0f){var _0x17c711={'raw':!![],'where':{}};var _0x3e3d2f={};var _0xff01dd={'count':0x0,'rows':[]};return db[_0x6cc7('0x1e')][_0x6cc7('0xad')]({'where':{'id':_0x164769['params']['id']}})['then'](handleEntityNotFound(_0x53fb0f,null))[_0x6cc7('0x16')](function(_0x3c9df3){if(_0x3c9df3){_0x3e3d2f[_0x6cc7('0x2a')]=_[_0x6cc7('0x20')](db[_0x6cc7('0xb9')][_0x6cc7('0xb3')]);_0x3e3d2f[_0x6cc7('0x27')]=_[_0x6cc7('0x20')](_0x164769[_0x6cc7('0x27')]);_0x3e3d2f[_0x6cc7('0x28')]=_['intersection'](_0x3e3d2f['model'],_0x3e3d2f[_0x6cc7('0x27')]);_0x17c711[_0x6cc7('0xae')]=_[_0x6cc7('0x29')](_0x3e3d2f[_0x6cc7('0x2a')],qs[_0x6cc7('0x2b')](_0x164769['query'][_0x6cc7('0x2b')]));_0x17c711[_0x6cc7('0xae')]=_0x17c711[_0x6cc7('0xae')][_0x6cc7('0x3f')]?_0x17c711[_0x6cc7('0xae')]:_0x3e3d2f[_0x6cc7('0x2a')];if(!_0x164769[_0x6cc7('0x27')][_0x6cc7('0x4b')](_0x6cc7('0x2c'))){_0x17c711[_0x6cc7('0x10')]=qs[_0x6cc7('0x10')](_0x164769[_0x6cc7('0x27')][_0x6cc7('0x10')]);_0x17c711[_0x6cc7('0x12')]=qs[_0x6cc7('0x12')](_0x164769[_0x6cc7('0x27')][_0x6cc7('0x12')]);}_0x17c711[_0x6cc7('0x2d')]=qs[_0x6cc7('0x2e')](_0x164769[_0x6cc7('0x27')][_0x6cc7('0x2e')]);_0x17c711[_0x6cc7('0x2f')]=qs[_0x6cc7('0x28')](_[_0x6cc7('0x30')](_0x164769['query'],_0x3e3d2f['filters']));_0x17c711[_0x6cc7('0x2f')]['ContactId']=_0x3c9df3['id'];if(_0x164769[_0x6cc7('0x27')][_0x6cc7('0x4c')]){_0x17c711[_0x6cc7('0x2f')]=_[_0x6cc7('0x70')](_0x17c711[_0x6cc7('0x2f')],{'$or':_[_0x6cc7('0x4a')](_0x17c711['attributes'],function(_0x5aa7b9){var _0xb14d00={};_0xb14d00[_0x5aa7b9]={'$like':'%'+_0x164769[_0x6cc7('0x27')]['filter']+'%'};return _0xb14d00;})});}_0x17c711=_[_0x6cc7('0x70')]({},_0x17c711,_0x164769[_0x6cc7('0xaf')]);return db[_0x6cc7('0xb9')][_0x6cc7('0x11')]({'where':_0x17c711[_0x6cc7('0x2f')]})[_0x6cc7('0x16')](function(_0x39d4a3){_0xff01dd[_0x6cc7('0x11')]=_0x39d4a3;if(_0x164769[_0x6cc7('0x27')][_0x6cc7('0xb5')]){_0x17c711['include']=[{'all':!![]}];}return db[_0x6cc7('0xb9')][_0x6cc7('0x85')](_0x17c711);})[_0x6cc7('0x16')](function(_0x515f1e){_0xff01dd[_0x6cc7('0x7b')]=_0x515f1e;return _0xff01dd;});}})[_0x6cc7('0x16')](respondWithFilteredResult(_0x53fb0f,_0x17c711))[_0x6cc7('0x7d')](handleError(_0x53fb0f,null));};exports['getJscriptySessions']=function(_0x7529b6,_0x521a1f){var _0x11dd2a={'raw':!![],'where':{}};var _0x2a30af={};var _0x42100e={'count':0x0,'rows':[]};return db[_0x6cc7('0x1e')]['findOne']({'where':{'id':_0x7529b6['params']['id']}})[_0x6cc7('0x16')](handleEntityNotFound(_0x521a1f,null))['then'](function(_0x525a19){if(_0x525a19){_0x2a30af['model']=_[_0x6cc7('0x20')](db['JscriptySessionReport'][_0x6cc7('0xb3')]);_0x2a30af[_0x6cc7('0x27')]=_['keys'](_0x7529b6['query']);_0x2a30af[_0x6cc7('0x28')]=_[_0x6cc7('0x29')](_0x2a30af[_0x6cc7('0x2a')],_0x2a30af[_0x6cc7('0x27')]);_0x11dd2a[_0x6cc7('0xae')]=_['intersection'](_0x2a30af[_0x6cc7('0x2a')],qs['fields'](_0x7529b6[_0x6cc7('0x27')][_0x6cc7('0x2b')]));_0x11dd2a[_0x6cc7('0xae')]=_0x11dd2a[_0x6cc7('0xae')]['length']?_0x11dd2a[_0x6cc7('0xae')]:_0x2a30af[_0x6cc7('0x2a')];if(!_0x7529b6[_0x6cc7('0x27')][_0x6cc7('0x4b')](_0x6cc7('0x2c'))){_0x11dd2a[_0x6cc7('0x10')]=qs[_0x6cc7('0x10')](_0x7529b6['query'][_0x6cc7('0x10')]);_0x11dd2a[_0x6cc7('0x12')]=qs[_0x6cc7('0x12')](_0x7529b6[_0x6cc7('0x27')][_0x6cc7('0x12')]);}_0x11dd2a[_0x6cc7('0x2d')]=qs[_0x6cc7('0x2e')](_0x7529b6[_0x6cc7('0x27')][_0x6cc7('0x2e')]);_0x11dd2a[_0x6cc7('0x2f')]=qs[_0x6cc7('0x28')](_[_0x6cc7('0x30')](_0x7529b6['query'],_0x2a30af[_0x6cc7('0x28')]));_0x11dd2a[_0x6cc7('0x2f')]['ContactId']=_0x525a19['id'];if(_0x7529b6[_0x6cc7('0x27')][_0x6cc7('0x4c')]){_0x11dd2a['where']=_['merge'](_0x11dd2a[_0x6cc7('0x2f')],{'$or':_[_0x6cc7('0x4a')](_0x11dd2a[_0x6cc7('0xae')],function(_0x187eff){var _0x59fb11={};_0x59fb11[_0x187eff]={'$like':'%'+_0x7529b6[_0x6cc7('0x27')][_0x6cc7('0x4c')]+'%'};return _0x59fb11;})});}_0x11dd2a=_['merge']({},_0x11dd2a,_0x7529b6[_0x6cc7('0xaf')]);return db['JscriptySessionReport']['count']({'where':_0x11dd2a['where']})[_0x6cc7('0x16')](function(_0x1d7111){_0x42100e[_0x6cc7('0x11')]=_0x1d7111;if(_0x7529b6[_0x6cc7('0x27')][_0x6cc7('0xb5')]){_0x11dd2a[_0x6cc7('0xba')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x6cc7('0x85')](_0x11dd2a);})[_0x6cc7('0x16')](function(_0x541e26){_0x42100e['rows']=_0x541e26;return _0x42100e;});}})[_0x6cc7('0x16')](respondWithFilteredResult(_0x521a1f,_0x11dd2a))[_0x6cc7('0x7d')](handleError(_0x521a1f,null));};exports[_0x6cc7('0xbb')]=function(_0x11fa33,_0x459a30){try{if(!_0x11fa33[_0x6cc7('0x84')][_0x6cc7('0x50')]){throw new Error(_0x6cc7('0xbc'));}if(!_0x11fa33[_0x6cc7('0x84')]['binding_keys']){throw new Error(_0x6cc7('0xbd'));}if(!_0x11fa33[_0x6cc7('0x84')][_0x6cc7('0xbe')]){throw new Error(_0x6cc7('0xbf'));}if(!_0x11fa33['body'][_0x6cc7('0xc0')]){throw new Error(_0x6cc7('0xc1'));}var _0x159fcf=_0x11fa33[_0x6cc7('0x84')]['binding_keys'][_0x6cc7('0x58')](',');var _0x293aa1=_0x11fa33[_0x6cc7('0x84')]['binding_values'][_0x6cc7('0x58')](',');if(!_0x159fcf['length']||!_0x293aa1[_0x6cc7('0x3f')]||_0x159fcf['length']!==_0x293aa1[_0x6cc7('0x3f')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x11fa33[_0x6cc7('0x84')][_0x6cc7('0x2b')]=_[_0x6cc7('0xc2')](_0x159fcf,_0x293aa1);if(!_0x11fa33[_0x6cc7('0x84')][_0x6cc7('0x2b')][_0x6cc7('0xab')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x11fa33[_0x6cc7('0x84')][_0x6cc7('0x2b')]['firstName']){throw new Error(_0x6cc7('0xc3'));}var _0x4c6932=path[_0x6cc7('0x9d')](config[_0x6cc7('0xc4')],_0x6cc7('0xc5'),_0x11fa33[_0x6cc7('0xc6')][_0x6cc7('0xc7')]);fs['chmodSync'](_0x4c6932,parseInt(_0x6cc7('0xc8'),0x8));var _0x388a13=require(_0x6cc7('0xc9'))[_0x6cc7('0xca')](path['join'](__dirname,_0x6cc7('0xcb')),[_0x4c6932,_0x11fa33['body']['binding_keys'],_0x11fa33[_0x6cc7('0x84')][_0x6cc7('0xbe')],_0x11fa33[_0x6cc7('0x84')][_0x6cc7('0x50')],_0x11fa33[_0x6cc7('0x84')][_0x6cc7('0xcc')],_0x11fa33[_0x6cc7('0x84')]['duplicates'],_0x11fa33[_0x6cc7('0x84')][_0x6cc7('0xc0')]]);return _0x459a30['status'](0xc8)['json']({'message':_0x6cc7('0xcd'),'pid':_0x388a13[_0x6cc7('0xce')]});}catch(_0xf53ee){return _0x459a30[_0x6cc7('0xd')](0x1f4)[_0x6cc7('0x1d')](_0xf53ee);}};exports[_0x6cc7('0xcf')]=function(_0x3fa4b7,_0x98b72e){var _0x1c9673=fs[_0x6cc7('0xd0')](_0x3fa4b7[_0x6cc7('0xc6')]['path']);Papa[_0x6cc7('0xd1')](_0x1c9673,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x49a211){return _0x98b72e[_0x6cc7('0xd')](0xc8)[_0x6cc7('0xe')]({'file':_0x3fa4b7[_0x6cc7('0xc6')],'fields':_0x49a211[_0x6cc7('0xd2')][_0x6cc7('0x2b')]});}});};exports[_0x6cc7('0xd3')]=function(_0x1cbe3e,_0x292000){return db[_0x6cc7('0x6c')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})[_0x6cc7('0x16')](function(_0x3fc526){var _0x574a25=![];if(!_0x1cbe3e[_0x6cc7('0x84')][_0x6cc7('0x50')]){throw new Error(_0x6cc7('0xbc'));}if(!_0x1cbe3e['body'][_0x6cc7('0xd4')][_0x6cc7('0xab')]){throw new Error(_0x6cc7('0xd5'));}if(!_0x1cbe3e[_0x6cc7('0x84')][_0x6cc7('0xd4')]['firstName']){throw new Error(_0x6cc7('0xc3'));}if(!_0x1cbe3e[_0x6cc7('0x84')][_0x6cc7('0xc0')]){throw new Error(_0x6cc7('0xc1'));}var _0x5343a1=require('child_process')[_0x6cc7('0xca')](path[_0x6cc7('0x9d')](__dirname,'../../components/import/cm/csv2'),[_0x1cbe3e['params']['id'],JSON[_0x6cc7('0xd6')](_0x1cbe3e[_0x6cc7('0x84')]),JSON['stringify'](_0x3fc526)]);_0x5343a1['on'](_0x6cc7('0xd7'),function(){_0x574a25=!![];return _0x292000[_0x6cc7('0xd')](0xc8)['json']({'message':_0x6cc7('0xd8'),'pid':_0x5343a1[_0x6cc7('0xce')]});});_0x5343a1['on']('exit',function(_0x21cd2b){if(_0x21cd2b&&!_0x574a25){return _0x292000[_0x6cc7('0xd')](0x1f4)[_0x6cc7('0xe')]({'message':_0x6cc7('0xd9'),'pid':_0x5343a1['pid']});}});})[_0x6cc7('0x7d')](handleError(_0x292000,null));};exports[_0x6cc7('0xda')]=function(_0x45734d,_0x5560d0){var _0x1331e2=[_0x6cc7('0xdb'),'chat',_0x6cc7('0xdc'),_0x6cc7('0xdd'),_0x6cc7('0xde'),_0x6cc7('0xdf'),_0x6cc7('0xe0')];var _0x463f44={'offset':0x0,'order':qs[_0x6cc7('0x2e')](_0x6cc7('0xe1'))},_0x4166f1={'count':0x0,'rows':[]};Promise[_0x6cc7('0x67')]()[_0x6cc7('0x16')](function(){if(_0x45734d[_0x6cc7('0x27')][_0x6cc7('0xe2')]){if(!_[_0x6cc7('0xe3')](_0x1331e2,_0x45734d['query'][_0x6cc7('0xe2')][_0x6cc7('0xe4')]())){throw new Error(_0x6cc7('0xe5'));}_0x1331e2=[_0x45734d[_0x6cc7('0x27')][_0x6cc7('0xe2')][_0x6cc7('0xe4')]()];}if(_0x45734d[_0x6cc7('0x27')][_0x6cc7('0xe6')]){try{var _0x12da59=JSON[_0x6cc7('0xd1')](_0x45734d[_0x6cc7('0x27')][_0x6cc7('0xe6')]);if(!moment(_0x12da59[_0x6cc7('0x34')])['isValid']()){throw new Error(_0x6cc7('0xe7'));}if(!moment(_0x12da59['to'])[_0x6cc7('0xe8')]()){throw new Error(_0x6cc7('0xe9'));}}catch(_0x423388){throw new Error(_0x6cc7('0xea'));}}if(!_0x45734d[_0x6cc7('0x27')][_0x6cc7('0x4b')](_0x6cc7('0x2c'))){_0x463f44[_0x6cc7('0x10')]=qs[_0x6cc7('0x10')](_0x45734d[_0x6cc7('0x27')][_0x6cc7('0x10')]||0xa);_0x463f44[_0x6cc7('0x12')]=qs[_0x6cc7('0x12')](_0x45734d[_0x6cc7('0x27')][_0x6cc7('0x12')]);}var _0x5047ff=_0x1331e2['map'](function(_0x11dc5a){if(_0x11dc5a===_0x6cc7('0xe0')){var _0x1e7c57={'attributes':['id','uniqueid',_0x6cc7('0x26'),_0x6cc7('0xeb'),_0x6cc7('0xec'),_0x6cc7('0xed'),_0x6cc7('0xee'),'endtime',_0x6cc7('0xef'),_0x6cc7('0xf0'),_0x6cc7('0xf1'),_0x6cc7('0xf2'),_0x6cc7('0xf3'),_0x6cc7('0xf4'),_0x6cc7('0xf5')],'where':{'ContactId':_0x45734d[_0x6cc7('0x7c')]['id']},'include':[{'model':db[_0x6cc7('0x6c')],'as':_0x6cc7('0x6c'),'attributes':['id',_0x6cc7('0x1c'),_0x6cc7('0xf6'),_0x6cc7('0xf7')]}],'order':[['createdAt',_0x6cc7('0xf8')]]};if(_0x45734d[_0x6cc7('0x27')]['range']){_0x1e7c57[_0x6cc7('0x2f')][_0x6cc7('0xf1')]={'$gte':_0x12da59[_0x6cc7('0x34')],'$lte':_0x12da59['to']};}return db[_0x6cc7('0x97')]['findAndCountAll'](_0x1e7c57)[_0x6cc7('0x16')](function(_0x4248c1){_0x4166f1[_0x6cc7('0x11')]+=_0x4248c1[_0x6cc7('0x11')];return _[_0x6cc7('0x4a')](_0x4248c1[_0x6cc7('0x7b')],function(_0x2d5121){var _0x5d4e9c=_0x2d5121[_0x6cc7('0x86')]({'plain':!![]});_0x5d4e9c[_0x6cc7('0xe2')]=_0x11dc5a;if(_0x5d4e9c[_0x6cc7('0x6c')]){_0x5d4e9c[_0x6cc7('0x6c')]={'id':_0x5d4e9c[_0x6cc7('0x6c')]['id'],'name':_0x5d4e9c[_0x6cc7('0x6c')]['name'],'fullname':_0x5d4e9c[_0x6cc7('0x6c')][_0x6cc7('0xf6')],'alias':_0x5d4e9c[_0x6cc7('0x6c')][_0x6cc7('0xf7')]};}return _0x5d4e9c;});});}else{var _0x243a1b=_['startCase'](_0x11dc5a)+(_0x11dc5a===_0x6cc7('0xf9')?_0x6cc7('0xfa'):'Account');var _0x585c48={'attributes':['id',_0x6cc7('0xfb'),_0x6cc7('0xfc'),_0x6cc7('0xf1'),_0x6cc7('0xf0'),_0x6cc7('0xfd'),'secondDisposition',_0x6cc7('0xfe'),_0x6cc7('0xf5'),_0x243a1b+'Id'],'where':{'ContactId':_0x45734d[_0x6cc7('0x7c')]['id']},'include':[{'model':db[_0x243a1b],'as':_0x6cc7('0xff'),'attributes':['id',_0x6cc7('0x1c'),'key']},{'model':db[_0x6cc7('0x6c')],'as':'Owner','attributes':['id','name',_0x6cc7('0xf6')]},{'model':db[_0x6cc7('0x40')],'as':_0x6cc7('0xa3'),'attributes':['id','name',_0x6cc7('0x33')],'through':{'attributes':[]}}],'order':[[_0x6cc7('0xf1'),_0x6cc7('0xf8')]]};if(_0x45734d[_0x6cc7('0x27')][_0x6cc7('0xe6')]){_0x585c48['where']['createdAt']={'$gte':_0x12da59[_0x6cc7('0x34')],'$lte':_0x12da59['to']};}switch(_0x11dc5a){case _0x6cc7('0xf9'):_0x585c48['attributes'][_0x6cc7('0x22')](_0x6cc7('0x100'),_0x6cc7('0x101'),_0x6cc7('0x102'),_0x6cc7('0x103'),_0x6cc7('0x104'),'ratingMessage',_0x6cc7('0x105'),_0x6cc7('0x106'),_0x6cc7('0x107'));break;case _0x6cc7('0xdb'):_0x585c48[_0x6cc7('0xae')]['push'](_0x6cc7('0x108'),_0x6cc7('0x109'));break;case'openchannel':_0x585c48[_0x6cc7('0xae')][_0x6cc7('0x22')](_0x6cc7('0x10a'),_0x6cc7('0x10b'));break;}return db[_[_0x6cc7('0x10c')](_0x11dc5a)+_0x6cc7('0x10d')]['findAndCountAll'](_0x585c48)['then'](function(_0x24a5e1){_0x4166f1[_0x6cc7('0x11')]+=_0x24a5e1[_0x6cc7('0x11')];return _[_0x6cc7('0x4a')](_0x24a5e1[_0x6cc7('0x7b')],function(_0xcaf26a){var _0x1a2736=_0xcaf26a['get']({'plain':!![]});_0x1a2736[_0x6cc7('0xe2')]=_0x11dc5a;if(_0x1a2736[_0x6cc7('0x10e')]){_0x1a2736[_0x6cc7('0x10e')]={'id':_0x1a2736[_0x6cc7('0x10e')]['id'],'name':_0x1a2736[_0x6cc7('0x10e')]['name'],'fullname':_0x1a2736['Owner'][_0x6cc7('0xf6')]};}return _0x1a2736;});});}});return Promise[_0x6cc7('0x24')](_0x5047ff);})[_0x6cc7('0x16')](function(_0x2d4ba6){return _(_0x2d4ba6)[_0x6cc7('0x10f')]()[_0x6cc7('0x110')]('createdAt')[_0x6cc7('0x111')]()[_0x6cc7('0x41')]();})[_0x6cc7('0x16')](function(_0x5c950b){_0x4166f1['rows']=_0x463f44[_0x6cc7('0x10')]?_0x5c950b[_0x6cc7('0x112')](_0x463f44[_0x6cc7('0x12')],_0x463f44[_0x6cc7('0x12')]+_0x463f44[_0x6cc7('0x10')]):_0x5c950b;return _0x4166f1;})[_0x6cc7('0x16')](respondWithFilteredResult(_0x5560d0,_0x463f44))[_0x6cc7('0x7d')](handleError(_0x5560d0,null));};
\ No newline at end of file
+var _0x8296=['c.mobile','c.fax','c.createdAt','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','catch','destroy','params','tags','startsWith','columnName','alias','values','merge','body','findAll','get','mergeWith','join','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','info','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','ChatMessage','MailInteraction','MailMessage','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','each','duplicates','$or','findOrCreate','spread','show','omit','format','cf_%d','$and','pickBy','table','setFields','id\x20=\x20?','phone','getTags','rawAttributes','intersection','options','setTags','ids','getHoppers','ContactId','include','getHopperFinals','includeAll','getJscriptySessions','No\x20ListId\x20specified','No\x20association\x20keys\x20specified!','No\x20association\x20values\x20specified!','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','No\x20phone\x20column\x20specified','No\x20firstName\x20column\x20specified','root','server/files/tmp','filename','chmodSync','0777','child_process','fork','binding_keys','binding_values','CompanyId','pid','upload','createReadStream','parse','file','meta','binding','firstName','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','getJourney','mail','chat','sms','fax','whatsapp','voice','-createdAt','channel','includes','toLowerCase','Invalid\x20channel','range','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','source','destination','callerid','starttime','endtime','duration','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','findAndCountAll','fullname','startCase','Website','Account','closed','closedAt','note','secondDisposition','key','Owner','DESC','browserName','customerIp','customerPort','deviceModel','osName','ratingMessage','ratingType','ratingValue','subject','substatus','openchannel','externalUrl','threadId','Interaction','flatten','sortBy','slice','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','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/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./cmContact.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','CmContact','describe','keys','length','cf_','push','CmCustomField','findOne','trimStart','all','model','query','fields','attributes','nolimit','order','sort','where','filters','pick','select','field','color','from','cm_contacts','left_join','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','c.deletedAt\x20IS\x20NULL','expr','search','parseSearch','sqlOperator','conditions','find','Tag','split','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','uc.UserId\x20=\x20?','dateOfBirth','fieldType','datetime','castTo','DATE','buildExpression','type','text','value','map','hasOwnProperty','isNil','Contact','isEmpty','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','tag','isArray','filter','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.firstName\x20LIKE\x20?','c.email\x20LIKE\x20?','c.id','QueryTypes','SELECT','clone','having','t.id\x20IN\x20?','resolve','user','role','agent','some','User','getLists','c.ListId\x20IS\x20NULL','ListId','sequelize','toString','keyBy','c.firstName','c.lastName','c.phone'];(function(_0x521929,_0x479be5){var _0x632436=function(_0x288290){while(--_0x288290){_0x521929['push'](_0x521929['shift']());}};_0x632436(++_0x479be5);}(_0x8296,0xa0));var _0x6829=function(_0x1f8778,_0x32cf44){_0x1f8778=_0x1f8778-0x0;var _0x2e528f=_0x8296[_0x1f8778];return _0x2e528f;};'use strict';var emlformat=require(_0x6829('0x0'));var rimraf=require(_0x6829('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6829('0x2'));var rp=require(_0x6829('0x3'));var moment=require(_0x6829('0x4'));var BPromise=require(_0x6829('0x5'));var Mustache=require('mustache');var util=require(_0x6829('0x6'));var path=require(_0x6829('0x7'));var sox=require(_0x6829('0x8'));var csv=require('to-csv');var ejs=require(_0x6829('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6829('0xa'));var squel=require(_0x6829('0xb'));var crypto=require(_0x6829('0xc'));var jsforce=require(_0x6829('0xd'));var deskjs=require(_0x6829('0xe'));var toCsv=require(_0x6829('0xf'));var querystring=require(_0x6829('0x10'));var Papa=require('papaparse');var Redis=require(_0x6829('0x11'));var authService=require(_0x6829('0x12'));var qs=require(_0x6829('0x13'));var as=require(_0x6829('0x14'));var hardwareService=require(_0x6829('0x15'));var logger=require(_0x6829('0x16'))(_0x6829('0x17'));var utils=require(_0x6829('0x18'));var config=require(_0x6829('0x19'));var licenseUtil=require(_0x6829('0x1a'));var db=require(_0x6829('0x1b'))['db'];config['redis']=_[_0x6829('0x1c')](config[_0x6829('0x1d')],{'host':_0x6829('0x1e'),'port':0x18eb});var socket=require(_0x6829('0x1f'))(new Redis(config[_0x6829('0x1d')]));require(_0x6829('0x20'))['register'](socket);function respondWithStatusCode(_0x3880af,_0xe06a28){_0xe06a28=_0xe06a28||0xcc;return function(_0x5cad56){if(_0x5cad56){return _0x3880af[_0x6829('0x21')](_0xe06a28);}return _0x3880af[_0x6829('0x22')](_0xe06a28)[_0x6829('0x23')]();};}function respondWithResult(_0x2fd325,_0x460e8a){_0x460e8a=_0x460e8a||0xc8;return function(_0x4615ca){if(_0x4615ca){return _0x2fd325[_0x6829('0x22')](_0x460e8a)[_0x6829('0x24')](_0x4615ca);}};}function respondWithFilteredResult(_0x106b7f,_0x53867c){return function(_0x2e385f){if(_0x2e385f){var _0x5b5ee8=typeof _0x53867c[_0x6829('0x25')]===_0x6829('0x26')&&typeof _0x53867c[_0x6829('0x27')]==='undefined';var _0xd5d0=_0x2e385f[_0x6829('0x28')];var _0x2fc61c=_0x5b5ee8?0x0:_0x53867c[_0x6829('0x25')];var _0x910818=_0x5b5ee8?_0x2e385f[_0x6829('0x28')]:_0x53867c[_0x6829('0x25')]+_0x53867c[_0x6829('0x27')];var _0x30a868;if(_0x910818>=_0xd5d0){_0x910818=_0xd5d0;_0x30a868=0xc8;}else{_0x30a868=0xce;}_0x106b7f[_0x6829('0x22')](_0x30a868);return _0x106b7f[_0x6829('0x29')](_0x6829('0x2a'),_0x2fc61c+'-'+_0x910818+'/'+_0xd5d0)[_0x6829('0x24')](_0x2e385f);}return null;};}function patchUpdates(_0x233b4b){return function(_0x3d9b08){try{jsonpatch[_0x6829('0x2b')](_0x3d9b08,_0x233b4b,!![]);}catch(_0xa894b8){return BPromise[_0x6829('0x2c')](_0xa894b8);}return _0x3d9b08[_0x6829('0x2d')]();};}function saveUpdates(_0x591e8b,_0x52ab3f){return function(_0x36f2c6){if(_0x36f2c6){return _0x36f2c6[_0x6829('0x2e')](_0x591e8b)[_0x6829('0x2f')](function(_0x566fd4){return _0x566fd4;});}return null;};}function removeEntity(_0x24a37a,_0x34925d){return function(_0x17c3da){if(_0x17c3da){return _0x17c3da['destroy']()[_0x6829('0x2f')](function(){_0x24a37a['status'](0xcc)[_0x6829('0x23')]();});}};}function handleEntityNotFound(_0x2f82a7,_0x2a4f37){return function(_0x8f183e){if(!_0x8f183e){_0x2f82a7[_0x6829('0x21')](0x194);}return _0x8f183e;};}function handleError(_0x3b31b5,_0x5a7d92){_0x5a7d92=_0x5a7d92||0x1f4;return function(_0x4d69e9){logger[_0x6829('0x30')](_0x4d69e9[_0x6829('0x31')]);if(_0x4d69e9[_0x6829('0x32')]){delete _0x4d69e9['name'];}_0x3b31b5[_0x6829('0x22')](_0x5a7d92)[_0x6829('0x33')](_0x4d69e9);};}exports[_0x6829('0x34')]=function(_0x315719,_0x4840c3){var _0x2d8b50={},_0x4744db={},_0x13b1c3={'count':0x0,'rows':[]};return db[_0x6829('0x35')][_0x6829('0x36')]()[_0x6829('0x2f')](function(_0x58a03b){var _0x26c390=[];for(var _0xfcbf39=0x0;_0xfcbf39<Object[_0x6829('0x37')](_0x58a03b)[_0x6829('0x38')];_0xfcbf39++){var _0x4433f5=Object['keys'](_0x58a03b)[_0xfcbf39];if(_['startsWith'](_0x4433f5,_0x6829('0x39'))){_0x26c390[_0x6829('0x3a')](db[_0x6829('0x3b')][_0x6829('0x3c')]({'where':{'id':_[_0x6829('0x3d')](_0x4433f5,_0x6829('0x39'))},'raw':!![]}));}}return BPromise[_0x6829('0x3e')](_0x26c390)[_0x6829('0x2f')](function(_0x2aa7a3){for(var _0x3f1af8=0x0;_0x3f1af8<_0x2aa7a3['length'];_0x3f1af8++){if(_0x2aa7a3[_0x3f1af8]){var _0x2ca1bd=_0x6829('0x39')+_0x2aa7a3[_0x3f1af8]['id'];var _0x142036=_0x58a03b[_0x2ca1bd];_0x142036['fieldType']=_0x2aa7a3[_0x3f1af8]['type'];}}return _0x58a03b;});})['then'](function(_0x365e76){_0x4744db[_0x6829('0x3f')]=_[_0x6829('0x37')](_0x365e76);_0x4744db[_0x6829('0x40')]=_[_0x6829('0x37')](_0x315719[_0x6829('0x40')]);_0x4744db['filters']=_['intersection'](_0x4744db['model'],_0x4744db[_0x6829('0x40')]);_0x2d8b50['attributes']=_['intersection'](_0x4744db[_0x6829('0x3f')],qs[_0x6829('0x41')](_0x315719[_0x6829('0x40')][_0x6829('0x41')]));_0x2d8b50[_0x6829('0x42')]=_0x2d8b50[_0x6829('0x42')]['length']?_0x2d8b50[_0x6829('0x42')]:_0x4744db[_0x6829('0x3f')];if(!_0x315719['query']['hasOwnProperty'](_0x6829('0x43'))){_0x2d8b50[_0x6829('0x27')]=qs[_0x6829('0x27')](_0x315719[_0x6829('0x40')][_0x6829('0x27')]);_0x2d8b50[_0x6829('0x25')]=qs[_0x6829('0x25')](_0x315719['query'][_0x6829('0x25')]);}_0x2d8b50[_0x6829('0x44')]=qs[_0x6829('0x45')](_0x315719[_0x6829('0x40')]['sort']);_0x2d8b50[_0x6829('0x46')]=qs[_0x6829('0x47')](_[_0x6829('0x48')](_0x315719[_0x6829('0x40')],_0x4744db[_0x6829('0x47')]),_0x365e76);var _0x1f2cb9=[];var _0x19d0ee=squel[_0x6829('0x49')]()[_0x6829('0x4a')]('id')[_0x6829('0x4a')](_0x6829('0x32'))[_0x6829('0x4a')](_0x6829('0x4b'))[_0x6829('0x4c')]('tools_tags');var _0x3e094e=squel[_0x6829('0x49')]()[_0x6829('0x4c')](_0x6829('0x4d'),'c')[_0x6829('0x4e')]('cm_user_has_contacts','uc',_0x6829('0x4f'))[_0x6829('0x4e')](_0x6829('0x50'),'ct',_0x6829('0x51'))[_0x6829('0x4e')]('tools_tags','t','t.id\x20=\x20ct.TagId')[_0x6829('0x46')](_0x6829('0x52'));var _0x27e092=squel[_0x6829('0x53')]();var _0x188b52=[];var _0x2da42a=squel['expr']();var _0x1a1600;if(_0x315719['query'][_0x6829('0x54')]){_0x1a1600=as[_0x6829('0x55')](_0x315719[_0x6829('0x40')][_0x6829('0x54')]);var _0x152f09=_0x1a1600[_0x6829('0x56')];for(var _0x32b49f=0x0;_0x32b49f<_0x1a1600['conditions'][_0x6829('0x38')];_0x32b49f++){var _0x31aeea=_0x1a1600[_0x6829('0x57')][_0x32b49f];var _0x2f38dc='c';var _0x253f9f=_(_0x365e76)['keys']()[_0x6829('0x58')](function(_0x42a9f0){return _0x42a9f0===_0x31aeea['field'];});if(_0x253f9f)_0x253f9f=_0x365e76[_0x31aeea[_0x6829('0x4a')]];if(!_0x253f9f){if(_0x31aeea['field']===_0x6829('0x59')){var _0x5ee8fb=_0x31aeea['value'][_0x6829('0x5a')](',')['map'](function(_0xd23894){return Number(_0xd23894);});_0x5ee8fb[_0x6829('0x5b')](function(_0x5448b7){_0x2da42a['or'](_0x6829('0x5c'),'%,'+_0x5448b7+',%');});_0x188b52=_[_0x6829('0x5d')](_0x188b52,_0x5ee8fb);}else if(_0x31aeea['field']==='User'){_0x27e092['and'](_0x6829('0x5e'),_0x31aeea['value']);}}else{if(_0x31aeea[_0x6829('0x4a')]===_0x6829('0x5f')||_0x253f9f[_0x6829('0x60')]===_0x6829('0x61'))_0x31aeea[_0x6829('0x62')]=_0x6829('0x63');var _0x34f9fe=as[_0x6829('0x64')](_0x2f38dc,_0x253f9f[_0x6829('0x65')],_0x31aeea);_0x27e092[_0x152f09](_0x34f9fe[_0x6829('0x66')],_0x34f9fe['value']['start'],_0x34f9fe[_0x6829('0x67')][_0x6829('0x23')]);}}}else{var _0x4ab2d7=_(Object[_0x6829('0x37')](_0x315719['query']))[_0x6829('0x68')](function(_0x488c5d){return _0x365e76[_0x6829('0x69')](_0x488c5d)?_0x488c5d:undefined;})['filter'](function(_0x2c164d){return!_[_0x6829('0x6a')](_0x2c164d);})[_0x6829('0x67')]();if(_0x315719[_0x6829('0x40')][_0x6829('0x6b')])_0x4ab2d7[_0x6829('0x3a')](_0x6829('0x6b'));if(!_[_0x6829('0x6c')](_0x4ab2d7)){_0x4ab2d7[_0x6829('0x5b')](function(_0x40fe48){if(_0x40fe48==='ListId'){_0x3e094e[_0x6829('0x46')](_0x6829('0x6d'),[][_0x6829('0x6e')](_0x315719[_0x6829('0x40')][_0x40fe48]));}else if(_0x40fe48==='Contact'){var _0x5f4c0a='%'+_0x315719[_0x6829('0x40')][_0x40fe48]+'%';_0x3e094e[_0x6829('0x46')](_0x6829('0x6f'),_0x5f4c0a);}else{_0x3e094e[_0x6829('0x46')]('c.'+_0x40fe48+'\x20=\x20?',_0x315719[_0x6829('0x40')][_0x40fe48]);}});}if(_0x315719[_0x6829('0x40')][_0x6829('0x70')]){_0x188b52=_[_0x6829('0x71')](_0x315719['query'][_0x6829('0x70')])?_0x315719[_0x6829('0x40')][_0x6829('0x70')]:new Array(_0x315719[_0x6829('0x40')][_0x6829('0x70')]);_0x188b52[_0x6829('0x5b')](function(_0x461661){_0x2da42a['or'](_0x6829('0x5c'),'%,'+_0x461661+',%');});}if(_0x315719[_0x6829('0x40')][_0x6829('0x72')]){var _0x2cb2bd=_0x315719[_0x6829('0x40')][_0x6829('0x72')][_0x6829('0x73')]('\x5c','\x5c\x5c')[_0x6829('0x73')](/'/g,'\x27\x27');if(_0x2cb2bd[_0x6829('0x5a')]('\x20')[_0x6829('0x38')]>0x1){_0x27e092['or'](_0x6829('0x74'),qs[_0x6829('0x75')](_0x2cb2bd),null);}else{if(qs[_0x6829('0x76')](_0x2cb2bd)){_0x27e092['or']('c.id\x20LIKE\x20?',_0x2cb2bd+'%');_0x27e092['or'](_0x6829('0x77'),_0x2cb2bd+'%');_0x27e092['or'](_0x6829('0x78'),_0x2cb2bd+'%');_0x27e092['or'](_0x6829('0x79'),_0x2cb2bd+'%');}else if(qs[_0x6829('0x7a')](_0x2cb2bd)){_0x27e092['or']('c.email\x20LIKE\x20?',_0x2cb2bd+'%');}else{_0x27e092['or'](_0x6829('0x7b'),'%'+_0x2cb2bd+'%');_0x27e092['or']('c.lastName\x20LIKE\x20?','%'+_0x2cb2bd+'%');_0x27e092['or'](_0x6829('0x7c'),'%'+_0x2cb2bd+'%');}}}}_0x3e094e[_0x6829('0x46')](_0x27e092);_0x3e094e['group'](_0x6829('0x7d'));var _0x2e26e0={'type':db['Sequelize'][_0x6829('0x7e')][_0x6829('0x7f')],'raw':!![]};var _0x8f2164=_0x3e094e[_0x6829('0x80')]()['field'](_0x6829('0x7d'));if(_0x2d8b50[_0x6829('0x44')]){_0x2d8b50[_0x6829('0x44')][_0x6829('0x5b')](function(_0xb26ea6){_0x3e094e[_0x6829('0x44')]('c.'+_0xb26ea6[0x0],_0xb26ea6[0x1]==='DESC'?![]:!![]);});}if(!_[_0x6829('0x6c')](_0x188b52)){_0x3e094e[_0x6829('0x81')](_0x2da42a);_0x8f2164[_0x6829('0x46')](_0x6829('0x82'),_0x188b52);}BPromise[_0x6829('0x83')]()[_0x6829('0x2f')](function(){if(!_0x1a1600)return;if(_0x315719[_0x6829('0x84')][_0x6829('0x85')]!==_0x6829('0x86'))return;if(!_[_0x6829('0x87')](_0x1a1600[_0x6829('0x57')],['field',_0x6829('0x88')])){return _0x315719['user'][_0x6829('0x89')]({'attributes':['id'],'raw':!![]})[_0x6829('0x2f')](function(_0xfea22b){if(_[_0x6829('0x6c')](_0xfea22b)){_0x8f2164['where'](_0x6829('0x8a'));_0x3e094e['where'](_0x6829('0x8a'));}else{_0x8f2164[_0x6829('0x46')](_0x6829('0x6d'),_[_0x6829('0x68')](_0xfea22b,'id'));_0x3e094e[_0x6829('0x46')]('c.ListId\x20IN\x20?',_[_0x6829('0x68')](_0xfea22b,'id'));}});}})['then'](function(){if(_0x315719[_0x6829('0x84')][_0x6829('0x85')]===_0x6829('0x86')&&!_0x1a1600&&!_0x315719['query'][_0x6829('0x8b')])return[];return db[_0x6829('0x8c')][_0x6829('0x40')](_0x8f2164[_0x6829('0x8d')](),_0x2e26e0);})['then'](function(_0x4a11ed){_0x13b1c3['count']=_0x4a11ed[_0x6829('0x38')];if(_0x13b1c3[_0x6829('0x28')]===0x0)return[];return db['sequelize'][_0x6829('0x40')](_0x19d0ee[_0x6829('0x8d')](),_0x2e26e0)[_0x6829('0x2f')](function(_0x585977){_0x1f2cb9=_[_0x6829('0x8e')](_0x585977,'id');_0x2e26e0=_['merge'](_0x2e26e0,{'model':db['CmContact'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x315719[_0x6829('0x40')][_0x6829('0x41')]){_0x2d8b50[_0x6829('0x42')]['forEach'](function(_0x32f14f){_0x3e094e[_0x6829('0x4a')]('c.'+_0x32f14f);});}else{_0x3e094e[_0x6829('0x4a')](_0x6829('0x7d'));_0x3e094e['field'](_0x6829('0x8f'));_0x3e094e[_0x6829('0x4a')](_0x6829('0x90'));_0x3e094e[_0x6829('0x4a')](_0x6829('0x91'));_0x3e094e[_0x6829('0x4a')](_0x6829('0x92'));_0x3e094e[_0x6829('0x4a')](_0x6829('0x93'));_0x3e094e['field']('c.email');_0x3e094e['field']('c.ListId');_0x3e094e[_0x6829('0x4a')](_0x6829('0x94'));_0x3e094e[_0x6829('0x4a')](_0x6829('0x95'));_0x3e094e['field'](_0x6829('0x96'));_0x3e094e['field'](_0x6829('0x97'),_0x6829('0x98'));}if(_0x2d8b50['limit'])_0x3e094e[_0x6829('0x27')](_0x2d8b50[_0x6829('0x27')]);if(_0x2d8b50[_0x6829('0x25')])_0x3e094e[_0x6829('0x25')](_0x2d8b50['offset']);return db[_0x6829('0x8c')][_0x6829('0x40')](_0x3e094e[_0x6829('0x8d')](),_0x2e26e0);});})[_0x6829('0x2f')](function(_0xb6cd60){_0xb6cd60['forEach'](function(_0x5cc0b7){if(_0x5cc0b7[_0x6829('0x98')]){_0x5cc0b7['Tags']=[];_0x5cc0b7[_0x6829('0x98')][_0x6829('0x5a')](',')['forEach'](function(_0x430d00){_0x5cc0b7[_0x6829('0x99')]['push'](_0x1f2cb9[_0x430d00]);});}delete _0x5cc0b7[_0x6829('0x98')];});_0x13b1c3[_0x6829('0x9a')]=_0xb6cd60;return _0x13b1c3;})[_0x6829('0x2f')](respondWithFilteredResult(_0x4840c3,_0x2d8b50));})[_0x6829('0x9b')](handleError(_0x4840c3,null));};exports[_0x6829('0x9c')]=function(_0x3c7d05,_0x51b533){return db[_0x6829('0x35')][_0x6829('0x58')]({'where':{'id':_0x3c7d05[_0x6829('0x9d')]['id']}})['then'](handleEntityNotFound(_0x51b533,null))[_0x6829('0x2f')](removeEntity(_0x51b533,null))[_0x6829('0x9b')](handleError(_0x51b533,null));};exports['describe']=function(_0x31c477,_0x539d36){return db[_0x6829('0x35')][_0x6829('0x36')]()[_0x6829('0x2f')](function(_0x531ace){delete _0x531ace[_0x6829('0x9e')];for(var _0x219082=0x0;_0x219082<Object['keys'](_0x531ace)[_0x6829('0x38')];_0x219082++){var _0x4a927e=Object[_0x6829('0x37')](_0x531ace)[_0x219082];if(!_[_0x6829('0x9f')](_0x4a927e,_0x6829('0x39'))){_0x531ace[_0x4a927e][_0x6829('0xa0')]=_0x4a927e;_0x531ace[_0x4a927e]['displayName']=_0x4a927e;}}return _0x531ace;})[_0x6829('0x2f')](function(_0x8a3e18){var _0x416dc0={'where':{'$or':[{'ListId':_0x31c477[_0x6829('0x40')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x6829('0x3b')]['findAll'](_0x416dc0)[_0x6829('0x2f')](function(_0x1b7447){for(var _0x35747b=0x0;_0x35747b<_0x1b7447[_0x6829('0x38')];_0x35747b++){var _0xd0c5e4=_0x6829('0x39')+_0x1b7447[_0x35747b]['id'];_0x8a3e18[_0xd0c5e4]['columnName']=_0xd0c5e4;_0x8a3e18[_0xd0c5e4]['displayName']=_0x1b7447[_0x35747b][_0x6829('0xa1')];_0x8a3e18[_0xd0c5e4]['custom']={'type':_0x1b7447[_0x35747b]['type'],'values':_0x1b7447[_0x35747b][_0x6829('0xa2')]};}Object[_0x6829('0x37')](_0x8a3e18)['forEach'](function(_0x3fed37){if(!_0x8a3e18[_0x3fed37][_0x6829('0x69')](_0x6829('0xa0'))){delete _0x8a3e18[_0x3fed37];}});return _0x8a3e18;});})[_0x6829('0x2f')](respondWithResult(_0x539d36,null))[_0x6829('0x9b')](handleError(_0x539d36,null));};exports[_0x6829('0xa3')]=function(_0x2282da,_0x15a6b3){var _0x1614bc;var _0x2c8ddf;var _0xd98acd;if(_0x2282da[_0x6829('0xa4')]['id']){delete _0x2282da[_0x6829('0xa4')]['id'];}return db[_0x6829('0x35')][_0x6829('0xa5')]({'where':{'id':[_0x2282da['body']['to'],_0x2282da[_0x6829('0xa4')][_0x6829('0x4c')]]}})[_0x6829('0x2f')](function(_0x171e4f){if(_0x171e4f){if(_0x171e4f['length']!==0x2){return null;}_0x171e4f[0x0]=_0x171e4f[0x0][_0x6829('0xa6')]({'plain':!![]});_0x171e4f[0x1]=_0x171e4f[0x1][_0x6829('0xa6')]({'plain':!![]});delete _0x171e4f[0x0]['id'];delete _0x171e4f[0x1]['id'];return _[_0x6829('0xa7')](_0x171e4f[0x0],_0x171e4f[0x1],function(_0x2269b6,_0x2e47d4){if(Array[_0x6829('0x71')](_0x2e47d4)&&!_0x2e47d4[_0x6829('0x38')]){return _0x2269b6;}else if(!_0x2e47d4){return _0x2269b6;}});}})[_0x6829('0x2f')](handleEntityNotFound(_0x15a6b3,null))[_0x6829('0x2f')](function(_0x2da265){if(_0x2da265){if(_0x2da265[_0x6829('0x9e')]&&_[_0x6829('0x71')](_0x2da265['tags'])){_0x2da265[_0x6829('0x9e')]=_0x2da265['tags'][_0x6829('0xa8')]();}logger['info'](_0x6829('0xa9'),_0x2282da[_0x6829('0xa4')]['to'],_0x2282da['body'][_0x6829('0x4c')]);return db[_0x6829('0xaa')][_0x6829('0x9c')]({'where':{'ContactId':[_0x2282da[_0x6829('0xa4')]['to'],_0x2282da[_0x6829('0xa4')][_0x6829('0x4c')]]}})[_0x6829('0x2f')](function(_0x2d1f39){logger['info'](_0x6829('0xab'),_0x2d1f39);return db['CmHopperBlack']['destroy']({'where':{'ContactId':[_0x2282da[_0x6829('0xa4')]['to'],_0x2282da[_0x6829('0xa4')][_0x6829('0x4c')]]}})['then'](function(_0x54567b){logger[_0x6829('0xac')](_0x6829('0xad'),_0x54567b);return db[_0x6829('0x35')][_0x6829('0xae')](_0x2da265);});});}})[_0x6829('0x2f')](function(_0x196796){if(_0x196796){_0x1614bc=_0x196796;_0x2c8ddf={'ContactId':_0x1614bc['id']};_0xd98acd={'where':{'ContactId':[_0x2282da['body']['to'],_0x2282da['body'][_0x6829('0x4c')]]}};return db[_0x6829('0xaf')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})['then'](function(){if(_0x1614bc){return db[_0x6829('0xb0')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db['ChatOfflineMessage'][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb1')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb2')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb1')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb2')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db['SmsInteraction'][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb3')]['update'](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb4')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb5')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb6')]['update'](_0x2c8ddf,_0xd98acd);}})['then'](function(){if(_0x1614bc){return db[_0x6829('0xb7')]['update'](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb8')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb9')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xba')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})['then'](function(){if(_0x1614bc){return db[_0x6829('0xbb')]['update'](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xbc')]['update'](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xbd')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xbe')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})['then'](function(){if(_0x1614bc){return db[_0x6829('0xbf')]['update'](_0x2c8ddf,_0xd98acd);}})['then'](function(){if(_0x1614bc){return db['SmsQueueReport'][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})['then'](function(){if(_0x1614bc){return db[_0x6829('0xc0')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})['then'](function(){if(_0x1614bc){return db[_0x6829('0xc1')]['update'](_0x2c8ddf,_0xd98acd);}})['then'](function(){if(_0x1614bc){return db[_0x6829('0xc2')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xc3')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0x35')][_0x6829('0x9c')]({'where':{'id':[_0x2282da['body']['to'],_0x2282da[_0x6829('0xa4')][_0x6829('0x4c')]]}});}})[_0x6829('0x2f')](function(){if(_0x1614bc){return _0x1614bc;}})[_0x6829('0x2f')](respondWithResult(_0x15a6b3,null))[_0x6829('0x9b')](handleError(_0x15a6b3,null));};exports[_0x6829('0xae')]=function(_0x2ba342,_0x208173){return db[_0x6829('0x35')]['describe']()[_0x6829('0x2f')](function(_0x274780){if(_0x2ba342[_0x6829('0xa4')]['tags']&&_[_0x6829('0x71')](_0x2ba342[_0x6829('0xa4')][_0x6829('0x9e')])){if(_0x2ba342[_0x6829('0xa4')][_0x6829('0x9e')][_0x6829('0x38')]){_0x2ba342[_0x6829('0xa4')]['tags']=_0x2ba342['body'][_0x6829('0x9e')]['join'](';')+';';}else{_0x2ba342[_0x6829('0xa4')][_0x6829('0x9e')]=null;}}else{_0x2ba342['body'][_0x6829('0x9e')]=null;}return db[_0x6829('0x35')][_0x6829('0xae')](_0x2ba342[_0x6829('0xa4')],{'fields':_[_0x6829('0x37')](_0x274780),'raw':!![]});})['then'](respondWithResult(_0x208173,0xc9))[_0x6829('0x9b')](handleError(_0x208173,null));};exports['bulkCreate']=function(_0xd06a8f,_0x1f04c8){var _0x1260f2=[];var _0x506eb7=0x0;var _0x3cda02=0x0;var _0x3356f7=0x0;return db[_0x6829('0x35')]['describe']()[_0x6829('0x2f')](function(_0x246b17){return BPromise[_0x6829('0xc4')](_0xd06a8f['body'],function(_0x2b8d55){var _0x1196c2={'where':{'$or':[]},'defaults':_0x2b8d55,'fields':_[_0x6829('0x37')](_0x246b17),'raw':!![]};if(_0x2b8d55[_0x6829('0xc5')]){for(var _0x303d47=0x0;_0x303d47<_0x2b8d55[_0x6829('0xc5')][_0x6829('0x38')];_0x303d47++){var _0x154d1d={};_0x154d1d[_0x2b8d55[_0x6829('0xc5')][_0x303d47]]=_0x2b8d55[_0x2b8d55[_0x6829('0xc5')][_0x303d47]];_0x1196c2[_0x6829('0x46')][_0x6829('0xc6')]['push'](_0x154d1d);}_0x1196c2[_0x6829('0x46')][_0x6829('0x8b')]=_0x2b8d55['ListId'];}return db[_0x6829('0x35')][_0x6829('0xc7')](_0x1196c2)[_0x6829('0xc8')](function(_0x2fbde7,_0x28458e){if(_0x28458e){_0x506eb7++;}else{_0x3356f7++;}})[_0x6829('0x9b')](function(_0x526a88){console[_0x6829('0x30')](_0x526a88);_0x3cda02++;});});})[_0x6829('0x2f')](function(_0x2fed40){if(_0x2fed40){return{'success':_0x506eb7,'failure':_0x3cda02,'duplicates':_0x3356f7};}})[_0x6829('0x2f')](respondWithResult(_0x1f04c8,0xc9))[_0x6829('0x9b')](handleError(_0x1f04c8,null));};exports[_0x6829('0xc9')]=function(_0x46e1d4,_0x397f84,_0x290e34){var _0xf7e35f;return db[_0x6829('0x35')][_0x6829('0x36')]()[_0x6829('0x2f')](function(_0x51816d){return db[_0x6829('0x35')][_0x6829('0x58')]({'where':{'id':_0x46e1d4[_0x6829('0x9d')]['id']},'include':[{'model':db[_0x6829('0x59')],'as':'Tags','attributes':['id',_0x6829('0x32'),_0x6829('0x4b')],'required':_0x46e1d4[_0x6829('0x40')][_0x6829('0x70')]?!![]:![]}],'attributes':_[_0x6829('0x37')](_0x51816d)});})[_0x6829('0x2f')](function(_0x57e12e){_0xf7e35f=_0x57e12e[_0x6829('0xa6')]({'plain':!![]});var _0x213c76={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x57e12e&&_0x57e12e[_0x6829('0x8b')]){if(_0x57e12e[_0x6829('0x8b')]){_0x213c76[_0x6829('0x46')]['$and'][_0x6829('0x3a')]({'ListId':{'$ne':_0x57e12e[_0x6829('0x8b')]}});}}return db[_0x6829('0x3b')][_0x6829('0xa5')](_0x213c76);})[_0x6829('0x2f')](function(_0x209fb1){return _[_0x6829('0xca')](_0xf7e35f,_[_0x6829('0x68')](_0x209fb1,function(_0x38cc70){return util[_0x6829('0xcb')](_0x6829('0xcc'),_0x38cc70['id']);}));})[_0x6829('0x2f')](handleEntityNotFound(_0x397f84,null))[_0x6829('0x2f')](respondWithResult(_0x397f84,null))[_0x6829('0x9b')](handleError(_0x397f84,null));};exports[_0x6829('0x2e')]=function(_0x18c9f4,_0x5a83ca){var _0x16ffb3;if(_0x18c9f4[_0x6829('0xa4')]['id']){delete _0x18c9f4[_0x6829('0xa4')]['id'];}return db[_0x6829('0x35')][_0x6829('0x58')]({'where':{'id':_0x18c9f4['params']['id']}})[_0x6829('0x2f')](handleEntityNotFound(_0x5a83ca,null))[_0x6829('0x2f')](saveUpdates(_0x18c9f4[_0x6829('0xa4')],null))[_0x6829('0x2f')](function(_0x12ac02){_0x16ffb3=_0x12ac02;var _0x5eaafd={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x12ac02&&_0x12ac02['ListId']){if(_0x12ac02[_0x6829('0x8b')]){_0x5eaafd[_0x6829('0x46')][_0x6829('0xcd')]['push']({'ListId':{'$ne':_0x12ac02[_0x6829('0x8b')]}});}}return db[_0x6829('0x3b')]['findAll'](_0x5eaafd);})[_0x6829('0x2f')](function(_0x1b0042){if(_0x1b0042){return _[_0x6829('0xca')](_[_0x6829('0xce')](_0x18c9f4['body'],function(_0x4ab26b,_0x8cf622){return _[_0x6829('0x9f')](_0x8cf622,'cf_');}),_[_0x6829('0x68')](_0x1b0042,function(_0x1e9130){return util[_0x6829('0xcb')](_0x6829('0xcc'),_0x1e9130['id']);}));}})[_0x6829('0x2f')](function(_0x49edd4){if(_0x49edd4&&!_[_0x6829('0x6c')](_0x49edd4)){var _0x5b9b6b=squel[_0x6829('0x2e')]()[_0x6829('0xcf')](_0x6829('0x4d'))[_0x6829('0xd0')](_0x49edd4)[_0x6829('0x46')](_0x6829('0xd1'),_0x18c9f4[_0x6829('0x9d')]['id'])['toParam']();return db['sequelize']['query'](_0x5b9b6b[_0x6829('0x66')],{'replacements':_0x5b9b6b[_0x6829('0xa2')]});}})[_0x6829('0x2f')](function(){if(_0x18c9f4['body'][_0x6829('0xd2')]&&_0x16ffb3){return db[_0x6829('0xaa')][_0x6829('0x2e')]({'phone':_0x18c9f4[_0x6829('0xa4')][_0x6829('0xd2')]},{'where':{'ContactId':_0x16ffb3['id']}});}})['then'](function(){return _0x16ffb3;})[_0x6829('0x2f')](respondWithResult(_0x5a83ca,null))[_0x6829('0x9b')](handleError(_0x5a83ca,null));};exports[_0x6829('0xd3')]=function(_0x1fba76,_0x24ae80,_0x3bf2be){var _0x2d534d={};var _0x333053={};var _0x1336bc;var _0x14d304;return db[_0x6829('0x35')][_0x6829('0x3c')]({'where':{'id':_0x1fba76[_0x6829('0x9d')]['id']}})[_0x6829('0x2f')](handleEntityNotFound(_0x24ae80,null))[_0x6829('0x2f')](function(_0x52ee62){if(_0x52ee62){_0x1336bc=_0x52ee62;_0x333053['model']=_[_0x6829('0x37')](db[_0x6829('0x59')][_0x6829('0xd4')]);_0x333053[_0x6829('0x40')]=_[_0x6829('0x37')](_0x1fba76['query']);_0x333053['filters']=_[_0x6829('0xd5')](_0x333053[_0x6829('0x3f')],_0x333053[_0x6829('0x40')]);_0x2d534d[_0x6829('0x42')]=_[_0x6829('0xd5')](_0x333053[_0x6829('0x3f')],qs[_0x6829('0x41')](_0x1fba76[_0x6829('0x40')][_0x6829('0x41')]));_0x2d534d[_0x6829('0x42')]=_0x2d534d[_0x6829('0x42')]['length']?_0x2d534d[_0x6829('0x42')]:_0x333053[_0x6829('0x3f')];_0x2d534d['order']=qs['sort'](_0x1fba76[_0x6829('0x40')]['sort']);_0x2d534d[_0x6829('0x46')]=qs[_0x6829('0x47')](_[_0x6829('0x48')](_0x1fba76[_0x6829('0x40')],_0x333053[_0x6829('0x47')]));if(_0x1fba76[_0x6829('0x40')][_0x6829('0x72')]){_0x2d534d[_0x6829('0x46')]=_['merge'](_0x2d534d[_0x6829('0x46')],{'$or':_[_0x6829('0x68')](_0x2d534d[_0x6829('0x42')],function(_0x52ef6f){var _0x2a9ce0={};_0x2a9ce0[_0x52ef6f]={'$like':'%'+_0x1fba76[_0x6829('0x40')][_0x6829('0x72')]+'%'};return _0x2a9ce0;})});}_0x2d534d=_[_0x6829('0xa3')]({},_0x2d534d,_0x1fba76[_0x6829('0xd6')]);return _0x1336bc[_0x6829('0xd3')](_0x2d534d);}})[_0x6829('0x2f')](function(_0x16ca4c){if(_0x16ca4c){_0x14d304=_0x16ca4c[_0x6829('0x38')];if(!_0x1fba76[_0x6829('0x40')][_0x6829('0x69')](_0x6829('0x43'))){_0x2d534d[_0x6829('0x27')]=qs['limit'](_0x1fba76[_0x6829('0x40')][_0x6829('0x27')]);_0x2d534d[_0x6829('0x25')]=qs['offset'](_0x1fba76['query']['offset']);}return _0x1336bc[_0x6829('0xd3')](_0x2d534d);}})[_0x6829('0x2f')](function(_0x40c73b){if(_0x40c73b){return _0x40c73b?{'count':_0x14d304,'rows':_0x40c73b}:null;}})[_0x6829('0x2f')](respondWithResult(_0x24ae80,null))[_0x6829('0x9b')](handleError(_0x24ae80,null));};exports[_0x6829('0xd7')]=function(_0x14f669,_0x1a1ad1,_0xa9be6d){if(_0x14f669[_0x6829('0xa4')]['id']){delete _0x14f669[_0x6829('0xa4')]['id'];}return db[_0x6829('0x35')]['findOne']({'where':{'id':_0x14f669[_0x6829('0x9d')]['id']}})[_0x6829('0x2f')](handleEntityNotFound(_0x1a1ad1,null))[_0x6829('0x2f')](function(_0x445d4a){if(_0x445d4a){return _0x445d4a['setTags'](_0x14f669[_0x6829('0xa4')][_0x6829('0xd8')]||[]);}return null;})[_0x6829('0x2f')](respondWithResult(_0x1a1ad1,null))[_0x6829('0x9b')](handleError(_0x1a1ad1,null));};exports[_0x6829('0xd9')]=function(_0x35f8a0,_0x1e45ce,_0x2655de){var _0x53ce1a={'raw':![],'where':{}};var _0x3fbf23={};var _0xf81f70={'count':0x0,'rows':[]};return db[_0x6829('0x35')][_0x6829('0x3c')]({'where':{'id':_0x35f8a0[_0x6829('0x9d')]['id']}})[_0x6829('0x2f')](handleEntityNotFound(_0x1e45ce,null))[_0x6829('0x2f')](function(_0x5e283a){if(_0x5e283a){_0x3fbf23[_0x6829('0x3f')]=_['keys'](db[_0x6829('0xaa')]['rawAttributes']);_0x3fbf23[_0x6829('0x40')]=_[_0x6829('0x37')](_0x35f8a0[_0x6829('0x40')]);_0x3fbf23[_0x6829('0x47')]=_[_0x6829('0xd5')](_0x3fbf23[_0x6829('0x3f')],_0x3fbf23[_0x6829('0x40')]);_0x53ce1a[_0x6829('0x42')]=_[_0x6829('0xd5')](_0x3fbf23[_0x6829('0x3f')],qs[_0x6829('0x41')](_0x35f8a0['query'][_0x6829('0x41')]));_0x53ce1a['attributes']=_0x53ce1a[_0x6829('0x42')][_0x6829('0x38')]?_0x53ce1a[_0x6829('0x42')]:_0x3fbf23[_0x6829('0x3f')];if(!_0x35f8a0['query'][_0x6829('0x69')](_0x6829('0x43'))){_0x53ce1a[_0x6829('0x27')]=qs[_0x6829('0x27')](_0x35f8a0['query']['limit']);_0x53ce1a[_0x6829('0x25')]=qs[_0x6829('0x25')](_0x35f8a0['query'][_0x6829('0x25')]);}_0x53ce1a[_0x6829('0x44')]=qs[_0x6829('0x45')](_0x35f8a0[_0x6829('0x40')]['sort']);_0x53ce1a[_0x6829('0x46')]=qs['filters'](_[_0x6829('0x48')](_0x35f8a0[_0x6829('0x40')],_0x3fbf23[_0x6829('0x47')]));_0x53ce1a[_0x6829('0x46')][_0x6829('0xda')]=_0x5e283a['id'];if(_0x35f8a0[_0x6829('0x40')]['filter']){_0x53ce1a[_0x6829('0x46')]=_[_0x6829('0xa3')](_0x53ce1a[_0x6829('0x46')],{'$or':_[_0x6829('0x68')](_0x53ce1a[_0x6829('0x42')],function(_0x311442){var _0x21e20b={};_0x21e20b[_0x311442]={'$like':'%'+_0x35f8a0[_0x6829('0x40')]['filter']+'%'};return _0x21e20b;})});}_0x53ce1a=_[_0x6829('0xa3')]({},_0x53ce1a,_0x35f8a0['options']);return db[_0x6829('0xaa')][_0x6829('0x28')]({'where':_0x53ce1a[_0x6829('0x46')]})['then'](function(_0x361cce){_0xf81f70[_0x6829('0x28')]=_0x361cce;if(_0x35f8a0[_0x6829('0x40')]['includeAll']){_0x53ce1a[_0x6829('0xdb')]=[{'all':!![]}];}return db[_0x6829('0xaa')]['findAll'](_0x53ce1a);})['then'](function(_0x4fecd2){_0xf81f70[_0x6829('0x9a')]=_0x4fecd2;return _0xf81f70;});}})[_0x6829('0x2f')](respondWithFilteredResult(_0x1e45ce,_0x53ce1a))[_0x6829('0x9b')](handleError(_0x1e45ce,null));};exports['getHopperHistories']=function(_0x19326c,_0x153267,_0x250276){var _0x349f0f={'raw':!![],'where':{}};var _0xae4b45={};var _0x39c997={'count':0x0,'rows':[]};return db['CmContact'][_0x6829('0x3c')]({'where':{'id':_0x19326c['params']['id']}})[_0x6829('0x2f')](handleEntityNotFound(_0x153267,null))[_0x6829('0x2f')](function(_0xab4b6e){if(_0xab4b6e){_0xae4b45['model']=_[_0x6829('0x37')](db[_0x6829('0xb9')]['rawAttributes']);_0xae4b45['query']=_[_0x6829('0x37')](_0x19326c['query']);_0xae4b45[_0x6829('0x47')]=_[_0x6829('0xd5')](_0xae4b45[_0x6829('0x3f')],_0xae4b45[_0x6829('0x40')]);_0x349f0f[_0x6829('0x42')]=_['intersection'](_0xae4b45[_0x6829('0x3f')],qs['fields'](_0x19326c['query'][_0x6829('0x41')]));_0x349f0f[_0x6829('0x42')]=_0x349f0f[_0x6829('0x42')][_0x6829('0x38')]?_0x349f0f[_0x6829('0x42')]:_0xae4b45['model'];if(!_0x19326c[_0x6829('0x40')][_0x6829('0x69')](_0x6829('0x43'))){_0x349f0f[_0x6829('0x27')]=qs['limit'](_0x19326c['query'][_0x6829('0x27')]);_0x349f0f[_0x6829('0x25')]=qs['offset'](_0x19326c[_0x6829('0x40')][_0x6829('0x25')]);}_0x349f0f[_0x6829('0x44')]=qs[_0x6829('0x45')](_0x19326c[_0x6829('0x40')][_0x6829('0x45')]);_0x349f0f['where']=qs[_0x6829('0x47')](_[_0x6829('0x48')](_0x19326c[_0x6829('0x40')],_0xae4b45['filters']));_0x349f0f[_0x6829('0x46')]['ContactId']=_0xab4b6e['id'];if(_0x19326c['query'][_0x6829('0x72')]){_0x349f0f[_0x6829('0x46')]=_[_0x6829('0xa3')](_0x349f0f[_0x6829('0x46')],{'$or':_[_0x6829('0x68')](_0x349f0f[_0x6829('0x42')],function(_0x2b7b55){var _0x3da847={};_0x3da847[_0x2b7b55]={'$like':'%'+_0x19326c[_0x6829('0x40')][_0x6829('0x72')]+'%'};return _0x3da847;})});}_0x349f0f=_['merge']({},_0x349f0f,_0x19326c['options']);return db['CmHopperHistory'][_0x6829('0x28')]({'where':_0x349f0f['where']})['then'](function(_0x2740b1){_0x39c997[_0x6829('0x28')]=_0x2740b1;if(_0x19326c['query']['includeAll']){_0x349f0f['include']=[{'all':!![]}];}return db[_0x6829('0xb9')]['findAll'](_0x349f0f);})[_0x6829('0x2f')](function(_0x2b1bc7){_0x39c997['rows']=_0x2b1bc7;return _0x39c997;});}})['then'](respondWithFilteredResult(_0x153267,_0x349f0f))[_0x6829('0x9b')](handleError(_0x153267,null));};exports[_0x6829('0xdc')]=function(_0x144b2a,_0x44818,_0x5b1c42){var _0x22b3a1={'raw':!![],'where':{}};var _0x345798={};var _0x23a4ae={'count':0x0,'rows':[]};return db['CmContact']['findOne']({'where':{'id':_0x144b2a[_0x6829('0x9d')]['id']}})[_0x6829('0x2f')](handleEntityNotFound(_0x44818,null))['then'](function(_0x2d84b3){if(_0x2d84b3){_0x345798['model']=_[_0x6829('0x37')](db[_0x6829('0xb8')]['rawAttributes']);_0x345798[_0x6829('0x40')]=_[_0x6829('0x37')](_0x144b2a[_0x6829('0x40')]);_0x345798['filters']=_[_0x6829('0xd5')](_0x345798[_0x6829('0x3f')],_0x345798[_0x6829('0x40')]);_0x22b3a1[_0x6829('0x42')]=_['intersection'](_0x345798[_0x6829('0x3f')],qs['fields'](_0x144b2a[_0x6829('0x40')][_0x6829('0x41')]));_0x22b3a1[_0x6829('0x42')]=_0x22b3a1[_0x6829('0x42')][_0x6829('0x38')]?_0x22b3a1[_0x6829('0x42')]:_0x345798['model'];if(!_0x144b2a['query'][_0x6829('0x69')](_0x6829('0x43'))){_0x22b3a1[_0x6829('0x27')]=qs[_0x6829('0x27')](_0x144b2a[_0x6829('0x40')][_0x6829('0x27')]);_0x22b3a1[_0x6829('0x25')]=qs[_0x6829('0x25')](_0x144b2a['query'][_0x6829('0x25')]);}_0x22b3a1[_0x6829('0x44')]=qs[_0x6829('0x45')](_0x144b2a[_0x6829('0x40')]['sort']);_0x22b3a1['where']=qs[_0x6829('0x47')](_['pick'](_0x144b2a['query'],_0x345798['filters']));_0x22b3a1[_0x6829('0x46')][_0x6829('0xda')]=_0x2d84b3['id'];if(_0x144b2a[_0x6829('0x40')][_0x6829('0x72')]){_0x22b3a1[_0x6829('0x46')]=_[_0x6829('0xa3')](_0x22b3a1[_0x6829('0x46')],{'$or':_[_0x6829('0x68')](_0x22b3a1['attributes'],function(_0xd6b885){var _0x1c3714={};_0x1c3714[_0xd6b885]={'$like':'%'+_0x144b2a[_0x6829('0x40')][_0x6829('0x72')]+'%'};return _0x1c3714;})});}_0x22b3a1=_[_0x6829('0xa3')]({},_0x22b3a1,_0x144b2a['options']);return db['CmHopperFinal'][_0x6829('0x28')]({'where':_0x22b3a1[_0x6829('0x46')]})[_0x6829('0x2f')](function(_0x42fb08){_0x23a4ae[_0x6829('0x28')]=_0x42fb08;if(_0x144b2a[_0x6829('0x40')][_0x6829('0xdd')]){_0x22b3a1[_0x6829('0xdb')]=[{'all':!![]}];}return db[_0x6829('0xb8')][_0x6829('0xa5')](_0x22b3a1);})[_0x6829('0x2f')](function(_0x3f3ad3){_0x23a4ae[_0x6829('0x9a')]=_0x3f3ad3;return _0x23a4ae;});}})['then'](respondWithFilteredResult(_0x44818,_0x22b3a1))[_0x6829('0x9b')](handleError(_0x44818,null));};exports[_0x6829('0xde')]=function(_0x1df06c,_0x882595,_0x1777ce){var _0xd5a3c8={'raw':!![],'where':{}};var _0x362b78={};var _0x20a923={'count':0x0,'rows':[]};return db[_0x6829('0x35')][_0x6829('0x3c')]({'where':{'id':_0x1df06c[_0x6829('0x9d')]['id']}})['then'](handleEntityNotFound(_0x882595,null))['then'](function(_0x204eb5){if(_0x204eb5){_0x362b78[_0x6829('0x3f')]=_[_0x6829('0x37')](db['JscriptySessionReport']['rawAttributes']);_0x362b78['query']=_[_0x6829('0x37')](_0x1df06c[_0x6829('0x40')]);_0x362b78[_0x6829('0x47')]=_[_0x6829('0xd5')](_0x362b78[_0x6829('0x3f')],_0x362b78['query']);_0xd5a3c8[_0x6829('0x42')]=_['intersection'](_0x362b78[_0x6829('0x3f')],qs[_0x6829('0x41')](_0x1df06c['query'][_0x6829('0x41')]));_0xd5a3c8[_0x6829('0x42')]=_0xd5a3c8['attributes'][_0x6829('0x38')]?_0xd5a3c8[_0x6829('0x42')]:_0x362b78['model'];if(!_0x1df06c[_0x6829('0x40')][_0x6829('0x69')]('nolimit')){_0xd5a3c8[_0x6829('0x27')]=qs[_0x6829('0x27')](_0x1df06c[_0x6829('0x40')][_0x6829('0x27')]);_0xd5a3c8['offset']=qs[_0x6829('0x25')](_0x1df06c[_0x6829('0x40')][_0x6829('0x25')]);}_0xd5a3c8['order']=qs[_0x6829('0x45')](_0x1df06c[_0x6829('0x40')][_0x6829('0x45')]);_0xd5a3c8[_0x6829('0x46')]=qs[_0x6829('0x47')](_[_0x6829('0x48')](_0x1df06c[_0x6829('0x40')],_0x362b78[_0x6829('0x47')]));_0xd5a3c8['where'][_0x6829('0xda')]=_0x204eb5['id'];if(_0x1df06c['query'][_0x6829('0x72')]){_0xd5a3c8[_0x6829('0x46')]=_[_0x6829('0xa3')](_0xd5a3c8[_0x6829('0x46')],{'$or':_[_0x6829('0x68')](_0xd5a3c8['attributes'],function(_0x23ac52){var _0x33e1ad={};_0x33e1ad[_0x23ac52]={'$like':'%'+_0x1df06c[_0x6829('0x40')]['filter']+'%'};return _0x33e1ad;})});}_0xd5a3c8=_[_0x6829('0xa3')]({},_0xd5a3c8,_0x1df06c['options']);return db[_0x6829('0xc0')][_0x6829('0x28')]({'where':_0xd5a3c8[_0x6829('0x46')]})[_0x6829('0x2f')](function(_0x2564c4){_0x20a923[_0x6829('0x28')]=_0x2564c4;if(_0x1df06c[_0x6829('0x40')]['includeAll']){_0xd5a3c8['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x6829('0xa5')](_0xd5a3c8);})[_0x6829('0x2f')](function(_0xecdae3){_0x20a923[_0x6829('0x9a')]=_0xecdae3;return _0x20a923;});}})['then'](respondWithFilteredResult(_0x882595,_0xd5a3c8))[_0x6829('0x9b')](handleError(_0x882595,null));};exports['uploadCsv']=function(_0x4048fb,_0x2ff83c,_0x168a57){try{if(!_0x4048fb['body'][_0x6829('0x8b')]){throw new Error(_0x6829('0xdf'));}if(!_0x4048fb['body']['binding_keys']){throw new Error(_0x6829('0xe0'));}if(!_0x4048fb['body']['binding_values']){throw new Error(_0x6829('0xe1'));}if(!_0x4048fb[_0x6829('0xa4')]['socket_timestamp']){throw new Error(_0x6829('0xe2'));}var _0xe92c2d=_0x4048fb['body']['binding_keys'][_0x6829('0x5a')](',');var _0x52d72c=_0x4048fb[_0x6829('0xa4')]['binding_values']['split'](',');if(!_0xe92c2d['length']||!_0x52d72c[_0x6829('0x38')]||_0xe92c2d[_0x6829('0x38')]!==_0x52d72c[_0x6829('0x38')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x4048fb['body']['fields']=_['zipObject'](_0xe92c2d,_0x52d72c);if(!_0x4048fb[_0x6829('0xa4')]['fields'][_0x6829('0xd2')]){throw new Error(_0x6829('0xe3'));}if(!_0x4048fb[_0x6829('0xa4')][_0x6829('0x41')]['firstName']){throw new Error(_0x6829('0xe4'));}var _0x4d973c=path[_0x6829('0xa8')](config[_0x6829('0xe5')],_0x6829('0xe6'),_0x4048fb['file'][_0x6829('0xe7')]);fs[_0x6829('0xe8')](_0x4d973c,parseInt(_0x6829('0xe9'),0x8));var _0x2af72f=require(_0x6829('0xea'))[_0x6829('0xeb')](path[_0x6829('0xa8')](__dirname,'../../components/import/cm/csv'),[_0x4d973c,_0x4048fb[_0x6829('0xa4')][_0x6829('0xec')],_0x4048fb[_0x6829('0xa4')][_0x6829('0xed')],_0x4048fb[_0x6829('0xa4')][_0x6829('0x8b')],_0x4048fb[_0x6829('0xa4')][_0x6829('0xee')],_0x4048fb['body'][_0x6829('0xc5')],_0x4048fb[_0x6829('0xa4')]['socket_timestamp']]);return _0x2ff83c[_0x6829('0x22')](0xc8)[_0x6829('0x24')]({'message':'File\x20uploaded\x20correctly!','pid':_0x2af72f[_0x6829('0xef')]});}catch(_0x52133d){return _0x2ff83c[_0x6829('0x22')](0x1f4)[_0x6829('0x33')](_0x52133d);}};exports[_0x6829('0xf0')]=function(_0x149e2d,_0x5aa51d,_0x376281){var _0x25f93c=fs[_0x6829('0xf1')](_0x149e2d['file'][_0x6829('0x7')]);Papa[_0x6829('0xf2')](_0x25f93c,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x2a1899){return _0x5aa51d['status'](0xc8)[_0x6829('0x24')]({'file':_0x149e2d[_0x6829('0xf3')],'fields':_0x2a1899[_0x6829('0xf4')][_0x6829('0x41')]});}});};exports['import']=function(_0x3954ef,_0x19ba66,_0x5006ed){return db[_0x6829('0x88')][_0x6829('0xa5')]({'raw':!![],'attributes':['id'],'where':{'role':_0x6829('0x86')}})[_0x6829('0x2f')](function(_0x665886){var _0x22fab9=![];if(!_0x3954ef['body'][_0x6829('0x8b')]){throw new Error(_0x6829('0xdf'));}if(!_0x3954ef['body'][_0x6829('0xf5')][_0x6829('0xd2')]){throw new Error(_0x6829('0xe3'));}if(!_0x3954ef['body'][_0x6829('0xf5')][_0x6829('0xf6')]){throw new Error(_0x6829('0xe4'));}if(!_0x3954ef[_0x6829('0xa4')]['socket_timestamp']){throw new Error(_0x6829('0xe2'));}var _0xffbcb3=require(_0x6829('0xea'))[_0x6829('0xeb')](path[_0x6829('0xa8')](__dirname,'../../components/import/cm/csv2'),[_0x3954ef[_0x6829('0x9d')]['id'],JSON['stringify'](_0x3954ef[_0x6829('0xa4')]),JSON[_0x6829('0xf7')](_0x665886)]);_0xffbcb3['on'](_0x6829('0xf8'),function(_0x1c8003){_0x22fab9=!![];return _0x19ba66['status'](0xc8)[_0x6829('0x24')]({'message':_0x6829('0xf9'),'pid':_0xffbcb3[_0x6829('0xef')]});});_0xffbcb3['on']('exit',function(_0x551f0a){if(_0x551f0a&&!_0x22fab9){return _0x19ba66['status'](0x1f4)['json']({'message':_0x6829('0xfa'),'pid':_0xffbcb3[_0x6829('0xef')]});}});})[_0x6829('0x9b')](handleError(_0x19ba66,null));};exports[_0x6829('0xfb')]=function(_0x205149,_0x253991){var _0x2e20dc=[_0x6829('0xfc'),_0x6829('0xfd'),_0x6829('0xfe'),'openchannel',_0x6829('0xff'),_0x6829('0x100'),_0x6829('0x101')];var _0x40e541={'offset':0x0,'order':qs[_0x6829('0x45')](_0x6829('0x102'))},_0x3af017={'count':0x0,'rows':[]};Promise[_0x6829('0x83')]()[_0x6829('0x2f')](function(){if(_0x205149[_0x6829('0x40')][_0x6829('0x103')]){if(!_[_0x6829('0x104')](_0x2e20dc,_0x205149['query'][_0x6829('0x103')][_0x6829('0x105')]())){throw new Error(_0x6829('0x106'));}_0x2e20dc=[_0x205149[_0x6829('0x40')][_0x6829('0x103')][_0x6829('0x105')]()];}if(_0x205149[_0x6829('0x40')][_0x6829('0x107')]){try{var _0x47d2e5=JSON[_0x6829('0xf2')](_0x205149[_0x6829('0x40')][_0x6829('0x107')]);if(!moment(_0x47d2e5[_0x6829('0x4c')])[_0x6829('0x108')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x47d2e5['to'])[_0x6829('0x108')]()){throw new Error(_0x6829('0x109'));}}catch(_0x5d461d){throw new Error('Invalid\x20createdAt\x20filter');}}if(!_0x205149[_0x6829('0x40')]['hasOwnProperty'](_0x6829('0x43'))){_0x40e541[_0x6829('0x27')]=qs[_0x6829('0x27')](_0x205149[_0x6829('0x40')][_0x6829('0x27')]||0xa);_0x40e541[_0x6829('0x25')]=qs[_0x6829('0x25')](_0x205149[_0x6829('0x40')]['offset']);}var _0x5f208b=_0x2e20dc['map'](function(_0x4bc2bf){if(_0x4bc2bf===_0x6829('0x101')){var _0x31ae43={'attributes':['id','uniqueid',_0x6829('0x65'),_0x6829('0x10a'),_0x6829('0x10b'),_0x6829('0x10c'),_0x6829('0x10d'),_0x6829('0x10e'),_0x6829('0x10f'),'note',_0x6829('0x110'),_0x6829('0x111'),_0x6829('0x112'),_0x6829('0x113'),_0x6829('0x114')],'where':{'ContactId':_0x205149[_0x6829('0x9d')]['id']},'include':[{'model':db[_0x6829('0x88')],'as':_0x6829('0x88'),'attributes':['id',_0x6829('0x32'),'fullname',_0x6829('0xa1')]}],'order':[['createdAt','DESC']]};if(_0x205149[_0x6829('0x40')][_0x6829('0x107')]){_0x31ae43['where'][_0x6829('0x110')]={'$gte':_0x47d2e5['from'],'$lte':_0x47d2e5['to']};}return db['VoiceCallReport'][_0x6829('0x115')](_0x31ae43)[_0x6829('0x2f')](function(_0x2fc809){_0x3af017[_0x6829('0x28')]+=_0x2fc809['count'];return _[_0x6829('0x68')](_0x2fc809[_0x6829('0x9a')],function(_0x26b5d2){var _0x4aa80a=_0x26b5d2['get']({'plain':!![]});_0x4aa80a['channel']=_0x4bc2bf;if(_0x4aa80a[_0x6829('0x88')]){_0x4aa80a[_0x6829('0x88')]={'id':_0x4aa80a[_0x6829('0x88')]['id'],'name':_0x4aa80a[_0x6829('0x88')][_0x6829('0x32')],'fullname':_0x4aa80a['User'][_0x6829('0x116')],'alias':_0x4aa80a[_0x6829('0x88')][_0x6829('0xa1')]};}return _0x4aa80a;});});}else{var _0x3afdbe=_[_0x6829('0x117')](_0x4bc2bf)+(_0x4bc2bf===_0x6829('0xfd')?_0x6829('0x118'):_0x6829('0x119'));var _0x6a069f={'attributes':['id',_0x6829('0x11a'),_0x6829('0x11b'),_0x6829('0x110'),_0x6829('0x11c'),'disposition',_0x6829('0x11d'),'thirdDisposition',_0x6829('0x114'),_0x3afdbe+'Id'],'where':{'ContactId':_0x205149[_0x6829('0x9d')]['id']},'include':[{'model':db[_0x3afdbe],'as':_0x6829('0x119'),'attributes':['id',_0x6829('0x32'),_0x6829('0x11e')]},{'model':db['User'],'as':_0x6829('0x11f'),'attributes':['id','name',_0x6829('0x116')]},{'model':db[_0x6829('0x59')],'as':_0x6829('0x99'),'attributes':['id',_0x6829('0x32'),_0x6829('0x4b')],'through':{'attributes':[]}}],'order':[[_0x6829('0x110'),_0x6829('0x120')]]};if(_0x205149[_0x6829('0x40')][_0x6829('0x107')]){_0x6a069f[_0x6829('0x46')][_0x6829('0x110')]={'$gte':_0x47d2e5[_0x6829('0x4c')],'$lte':_0x47d2e5['to']};}switch(_0x4bc2bf){case'chat':_0x6a069f[_0x6829('0x42')][_0x6829('0x3a')](_0x6829('0x121'),_0x6829('0x122'),_0x6829('0x123'),_0x6829('0x124'),_0x6829('0x125'),_0x6829('0x126'),_0x6829('0x127'),_0x6829('0x128'),'referer');break;case _0x6829('0xfc'):_0x6a069f[_0x6829('0x42')][_0x6829('0x3a')](_0x6829('0x129'),_0x6829('0x12a'));break;case _0x6829('0x12b'):_0x6a069f[_0x6829('0x42')]['push'](_0x6829('0x12c'),_0x6829('0x12d'));break;}return db[_['startCase'](_0x4bc2bf)+_0x6829('0x12e')][_0x6829('0x115')](_0x6a069f)[_0x6829('0x2f')](function(_0x39c0da){_0x3af017['count']+=_0x39c0da[_0x6829('0x28')];return _[_0x6829('0x68')](_0x39c0da['rows'],function(_0x199492){var _0x3402da=_0x199492['get']({'plain':!![]});_0x3402da[_0x6829('0x103')]=_0x4bc2bf;if(_0x3402da['Owner']){_0x3402da[_0x6829('0x11f')]={'id':_0x3402da[_0x6829('0x11f')]['id'],'name':_0x3402da[_0x6829('0x11f')][_0x6829('0x32')],'fullname':_0x3402da[_0x6829('0x11f')][_0x6829('0x116')]};}return _0x3402da;});});}});return Promise[_0x6829('0x3e')](_0x5f208b);})[_0x6829('0x2f')](function(_0x1a8758){return _(_0x1a8758)[_0x6829('0x12f')]()[_0x6829('0x130')](_0x6829('0x110'))['reverse']()['value']();})[_0x6829('0x2f')](function(_0x198937){_0x3af017[_0x6829('0x9a')]=_0x40e541[_0x6829('0x27')]?_0x198937[_0x6829('0x131')](_0x40e541[_0x6829('0x25')],_0x40e541[_0x6829('0x25')]+_0x40e541[_0x6829('0x27')]):_0x198937;return _0x3af017;})[_0x6829('0x2f')](respondWithFilteredResult(_0x253991,_0x40e541))['catch'](handleError(_0x253991,null));};
\ No newline at end of file
index b34c54e..bc2fd1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e36=['emit','hasOwnProperty','../../mysqldb','CmContact','save','remove'];(function(_0x4e4154,_0x1ffe63){var _0x53a194=function(_0x42bea1){while(--_0x42bea1){_0x4e4154['push'](_0x4e4154['shift']());}};_0x53a194(++_0x1ffe63);}(_0x5e36,0xe6));var _0x65e3=function(_0x3ac107,_0x11adc9){_0x3ac107=_0x3ac107-0x0;var _0x80523e=_0x5e36[_0x3ac107];return _0x80523e;};'use strict';var EventEmitter=require('events');var CmContact=require(_0x65e3('0x0'))['db'][_0x65e3('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x65e3('0x2'),'afterUpdate':'update','afterDestroy':_0x65e3('0x3')};function emitEvent(_0x5ee4f7){return function(_0x3c10c0,_0x55714d,_0x144f99){CmContactEvents['emit'](_0x5ee4f7+':'+_0x3c10c0['id'],_0x3c10c0);CmContactEvents[_0x65e3('0x4')](_0x5ee4f7,_0x3c10c0);_0x144f99(null);};}for(var e in events){if(events[_0x65e3('0x5')](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module['exports']=CmContactEvents;
\ No newline at end of file
+var _0xa0da=['exports','../../mysqldb','CmContact','setMaxListeners','update','emit','hasOwnProperty','hook'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0xa0da,0x91));var _0xaa0d=function(_0x142185,_0xf1bb34){_0x142185=_0x142185-0x0;var _0x2c08c8=_0xa0da[_0x142185];return _0x2c08c8;};'use strict';var EventEmitter=require('events');var CmContact=require(_0xaa0d('0x0'))['db'][_0xaa0d('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents[_0xaa0d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xaa0d('0x3'),'afterDestroy':'remove'};function emitEvent(_0x8c39b0){return function(_0x38caa0,_0x5ab2ec,_0x203be5){CmContactEvents[_0xaa0d('0x4')](_0x8c39b0+':'+_0x38caa0['id'],_0x38caa0);CmContactEvents['emit'](_0x8c39b0,_0x38caa0);_0x203be5(null);};}for(var e in events){if(events[_0xaa0d('0x5')](e)){var event=events[e];CmContact[_0xaa0d('0x6')](e,emitEvent(event));}}module[_0xaa0d('0x7')]=CmContactEvents;
\ No newline at end of file
index 0f397c1..1c929db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0d7=['[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','exports','CmContact','phone','fti_cm_contacts','lastName','mobile','fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','get','error','cmContact','afterCreate','inspect','findOne','then','isNil','cmContact,\x20afterCreate\x20','priority','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','CmHopper','\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','create','ListId','scheduledat','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','dialCheckDuplicateType','always','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','Lists','length','onlyIfOpen','CmList','List\x20not\x20found','models','isEmpty','destroy','ContactId','VoiceQueueId','push','all','[CmContact][afterDestroy][Succesfull]'];(function(_0x412686,_0x3fde24){var _0x18619e=function(_0x862bd1){while(--_0x862bd1){_0x412686['push'](_0x412686['shift']());}};_0x18619e(++_0x3fde24);}(_0xb0d7,0x146));var _0x7b0d=function(_0x3d4525,_0x279798){_0x3d4525=_0x3d4525-0x0;var _0x321587=_0xb0d7[_0x3d4525];return _0x321587;};'use strict';var _=require(_0x7b0d('0x0'));var util=require(_0x7b0d('0x1'));var logger=require(_0x7b0d('0x2'))(_0x7b0d('0x3'));var moment=require(_0x7b0d('0x4'));var BPromise=require('bluebird');var rp=require(_0x7b0d('0x5'));var fs=require('fs');var path=require(_0x7b0d('0x6'));var rimraf=require(_0x7b0d('0x7'));var config=require('../../config/environment');var attributes=require('./cmContact.attributes');module[_0x7b0d('0x8')]=function(_0x298e6f,_0x1f0dd3){return _0x298e6f['define'](_0x7b0d('0x9'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x7b0d('0xa'),'fields':[_0x7b0d('0xa')]},{'name':_0x7b0d('0xb'),'fields':['firstName',_0x7b0d('0xc'),_0x7b0d('0xa'),_0x7b0d('0xd'),_0x7b0d('0xe'),_0x7b0d('0xf')],'type':_0x7b0d('0x10')}],'timestamps':!![],'charset':_0x7b0d('0x11'),'collate':_0x7b0d('0x12'),'hooks':{'afterCreate':function(_0x780939,_0x1653e8,_0x3442db){var _0x1c4481=_0x298e6f['models'];var _0x3ae303=_0x780939[_0x7b0d('0x13')]({'plain':!![]});function _0x3fb6bb(){return function(_0x1e24dc){logger[_0x7b0d('0x14')](_0x7b0d('0x15'),_0x7b0d('0x16'),util[_0x7b0d('0x17')](_0x1e24dc,{'showHidden':![],'depth':null}));};}var _0x609f2b=function(_0x1a0295){return new BPromise(function(_0x61bf0e,_0x2081bf){_0x1c4481['CmHopper'][_0x7b0d('0x18')]({'where':{'phone':_0x3ae303[_0x7b0d('0xa')],'VoiceQueueId':_0x1a0295['id']}})[_0x7b0d('0x19')](function(_0x40982b){if(!_[_0x7b0d('0x1a')](_0x40982b)){throw new Error(_0x7b0d('0x1b')+_0x3ae303['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x1a0295['id']);}return _0x1c4481['CmHopper']['create']({'phone':_0x3ae303['phone'],'ContactId':_0x3ae303['id'],'ListId':_0x3ae303['ListId'],'priority':_0x3ae303[_0x7b0d('0x1c')]?_0x3ae303['priority']:0x2,'scheduledat':_0x3ae303['scheduledat']?_0x3ae303['scheduledat']:moment()[_0x7b0d('0x1d')](_0x7b0d('0x1e')),'callback':_0x3ae303[_0x7b0d('0x1f')]?!![]:![],'callbackuniqueid':_0x3ae303['callbackUniqueid']?_0x3ae303[_0x7b0d('0x1f')]:undefined,'callbackat':_0x3ae303[_0x7b0d('0x1f')]?moment()[_0x7b0d('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x1a0295['id']});})[_0x7b0d('0x20')](function(_0x4106d6){_0x2081bf(_0x4106d6);});});};var _0x2310d2=function(_0x25259b){return new BPromise(function(_0x43aa96,_0x1ae5b4){_0x1c4481[_0x7b0d('0x21')]['findOne']({'where':{'phone':_0x3ae303[_0x7b0d('0xa')],'VoiceQueueId':_0x25259b['id']}})[_0x7b0d('0x19')](function(_0x2af2f9){if(!_[_0x7b0d('0x1a')](_0x2af2f9)){throw new Error('cmContact,\x20afterCreate\x20'+_0x3ae303[_0x7b0d('0xa')]+_0x7b0d('0x22')+_0x25259b['id']);}return _0x1c4481[_0x7b0d('0x23')]['findOne']({'where':{'calleridnum':_0x3ae303['phone'],'VoiceQueueId':_0x25259b['id']}});})['then'](function(_0x3eb84b){if(!_[_0x7b0d('0x1a')](_0x3eb84b)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x3ae303['phone']+_0x7b0d('0x24')+_0x25259b['id']);}return _0x1c4481[_0x7b0d('0x21')][_0x7b0d('0x25')]({'phone':_0x3ae303[_0x7b0d('0xa')],'ContactId':_0x3ae303['id'],'ListId':_0x3ae303[_0x7b0d('0x26')],'priority':_0x3ae303[_0x7b0d('0x1c')]?_0x3ae303[_0x7b0d('0x1c')]:0x2,'scheduledat':_0x3ae303[_0x7b0d('0x27')]?_0x3ae303[_0x7b0d('0x27')]:moment()[_0x7b0d('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x3ae303[_0x7b0d('0x1f')]?!![]:![],'callbackuniqueid':_0x3ae303[_0x7b0d('0x1f')]?_0x3ae303[_0x7b0d('0x1f')]:undefined,'callbackat':_0x3ae303['callbackUniqueid']?moment()['format'](_0x7b0d('0x1e')):undefined,'VoiceQueueId':_0x25259b['id']});})[_0x7b0d('0x20')](function(_0x4f777c){_0x1ae5b4(_0x4f777c);});});};function _0x4a80c4(){return function(_0x3db2a4){logger[_0x7b0d('0x14')](_0x7b0d('0x15'),_0x7b0d('0x16'),util[_0x7b0d('0x17')](_0x3db2a4,{'showHidden':![],'depth':null}));};}var _0x12b50a=function(_0x60482c){return new BPromise(function(_0x548939,_0x2f7cab){_0x1c4481[_0x7b0d('0x21')]['findOne']({'where':{'phone':_0x3ae303[_0x7b0d('0xa')],'CampaignId':_0x60482c['id']}})['then'](function(_0x85fe38){if(!_['isNil'](_0x85fe38)){throw new Error(_0x7b0d('0x1b')+_0x3ae303[_0x7b0d('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x60482c['id']);}return _0x1c4481[_0x7b0d('0x21')][_0x7b0d('0x25')]({'phone':_0x3ae303[_0x7b0d('0xa')],'ContactId':_0x3ae303['id'],'ListId':_0x3ae303['ListId'],'priority':_0x3ae303[_0x7b0d('0x1c')]?_0x3ae303[_0x7b0d('0x1c')]:0x2,'scheduledat':_0x3ae303[_0x7b0d('0x27')]?_0x3ae303[_0x7b0d('0x27')]:moment()[_0x7b0d('0x1d')](_0x7b0d('0x1e')),'callback':_0x3ae303[_0x7b0d('0x1f')]?!![]:![],'callbackuniqueid':_0x3ae303['callbackUniqueid']?_0x3ae303[_0x7b0d('0x1f')]:undefined,'callbackat':_0x3ae303['callbackUniqueid']?moment()[_0x7b0d('0x1d')](_0x7b0d('0x1e')):undefined,'CampaignId':_0x60482c['id']});})[_0x7b0d('0x20')](function(_0x19c897){_0x2f7cab(_0x19c897);});});};var _0x47890f=function(_0x21459f){return new BPromise(function(_0x14a7ee,_0x4fee96){_0x1c4481[_0x7b0d('0x21')][_0x7b0d('0x18')]({'where':{'phone':_0x3ae303[_0x7b0d('0xa')],'CampaignId':_0x21459f['id']}})[_0x7b0d('0x19')](function(_0x218cea){if(!_[_0x7b0d('0x1a')](_0x218cea)){throw new Error('cmContact,\x20afterCreate\x20'+_0x3ae303[_0x7b0d('0xa')]+_0x7b0d('0x28')+_0x21459f['id']);}return _0x1c4481[_0x7b0d('0x23')][_0x7b0d('0x18')]({'where':{'calleridnum':_0x3ae303[_0x7b0d('0xa')],'CampaignId':_0x21459f['id']}});})[_0x7b0d('0x19')](function(_0x17d5c4){if(!_[_0x7b0d('0x1a')](_0x17d5c4)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x3ae303[_0x7b0d('0xa')]+_0x7b0d('0x29')+_0x21459f['id']);}return _0x1c4481['CmHopper'][_0x7b0d('0x25')]({'phone':_0x3ae303[_0x7b0d('0xa')],'ContactId':_0x3ae303['id'],'ListId':_0x3ae303['ListId'],'priority':_0x3ae303[_0x7b0d('0x1c')]?_0x3ae303[_0x7b0d('0x1c')]:0x2,'scheduledat':_0x3ae303[_0x7b0d('0x27')]?_0x3ae303[_0x7b0d('0x27')]:moment()[_0x7b0d('0x1d')](_0x7b0d('0x1e')),'callback':_0x3ae303[_0x7b0d('0x1f')]?!![]:![],'callbackuniqueid':_0x3ae303['callbackUniqueid']?_0x3ae303[_0x7b0d('0x1f')]:undefined,'callbackat':_0x3ae303[_0x7b0d('0x1f')]?moment()[_0x7b0d('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x21459f['id']});})[_0x7b0d('0x20')](function(_0x310493){_0x4fee96(_0x310493);});});};if(_0x3ae303[_0x7b0d('0x26')]){_0x1c4481[_0x7b0d('0x2a')][_0x7b0d('0x2b')]({'where':{'type':'outbound'},'attributes':['id',_0x7b0d('0x2c')],'include':[{'model':_0x1c4481['CmList'],'as':'Lists','where':{'id':_0x3ae303[_0x7b0d('0x26')]}}]})[_0x7b0d('0x19')](function(_0x5215a3){if(_0x5215a3){var _0x4b61cd=[];for(var _0x1e7d7a=0x0,_0x56ae3c;_0x1e7d7a<_0x5215a3['length'];_0x1e7d7a+=0x1){_0x56ae3c=_0x5215a3[_0x1e7d7a][_0x7b0d('0x13')]({'plain':!![]});switch(_0x56ae3c[_0x7b0d('0x2c')]){case _0x7b0d('0x2d'):_0x2310d2(_0x56ae3c)[_0x7b0d('0x20')](_0x3fb6bb());break;case'onlyIfOpen':_0x609f2b(_0x56ae3c)['catch'](_0x3fb6bb());break;default:_0x1c4481[_0x7b0d('0x21')][_0x7b0d('0x25')]({'phone':_0x3ae303['phone'],'ContactId':_0x3ae303['id'],'ListId':_0x3ae303[_0x7b0d('0x26')],'scheduledat':_0x3ae303[_0x7b0d('0x27')]?_0x3ae303[_0x7b0d('0x27')]:moment()['format'](_0x7b0d('0x1e')),'priority':_0x3ae303[_0x7b0d('0x1c')]?_0x3ae303['priority']:0x2,'callback':_0x3ae303[_0x7b0d('0x1f')]?!![]:![],'callbackuniqueid':_0x3ae303[_0x7b0d('0x1f')]?_0x3ae303[_0x7b0d('0x1f')]:undefined,'callbackat':_0x3ae303['callbackUniqueid']?moment()[_0x7b0d('0x1d')](_0x7b0d('0x1e')):undefined,'VoiceQueueId':_0x56ae3c['id']})['catch'](_0x3fb6bb());}}}})['then'](function(){return _0x1c4481[_0x7b0d('0x2a')]['findAll']({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x1c4481['CmList'],'as':_0x7b0d('0x2e'),'where':{'id':_0x3ae303[_0x7b0d('0x26')]}}]})['then'](function(_0x1e25d7){if(_0x1e25d7){var _0x80aae3=[];for(var _0x547375=0x0,_0x5002ed;_0x547375<_0x1e25d7['length'];_0x547375+=0x1){_0x5002ed=_0x1e25d7[_0x547375][_0x7b0d('0x13')]({'plain':!![]});_0x1c4481[_0x7b0d('0x2f')][_0x7b0d('0x25')]({'phone':_0x3ae303[_0x7b0d('0xa')],'ContactId':_0x3ae303['id'],'ListId':_0x3ae303[_0x7b0d('0x26')],'VoiceQueueId':_0x5002ed['id']})[_0x7b0d('0x20')](function(_0x4690d6){logger[_0x7b0d('0x14')](_0x7b0d('0x30'),_0x7b0d('0x16'),_0x4690d6[_0x7b0d('0x31')]);});}}});})['then'](function(){return _0x1c4481[_0x7b0d('0x32')][_0x7b0d('0x2b')]({'attributes':['id',_0x7b0d('0x2c')],'include':[{'model':_0x1c4481['CmList'],'as':_0x7b0d('0x33'),'where':{'id':_0x3ae303[_0x7b0d('0x26')]}}]})[_0x7b0d('0x19')](function(_0x381d31){if(_0x381d31){var _0x549bea=[];for(var _0x54b1e8=0x0,_0x8581f4;_0x54b1e8<_0x381d31[_0x7b0d('0x34')];_0x54b1e8+=0x1){_0x8581f4=_0x381d31[_0x54b1e8][_0x7b0d('0x13')]({'plain':!![]});switch(_0x8581f4[_0x7b0d('0x2c')]){case _0x7b0d('0x2d'):_0x47890f(_0x8581f4)[_0x7b0d('0x20')](_0x4a80c4());break;case _0x7b0d('0x35'):_0x12b50a(_0x8581f4)['catch'](_0x4a80c4());break;default:_0x1c4481['CmHopper'][_0x7b0d('0x25')]({'phone':_0x3ae303[_0x7b0d('0xa')],'ContactId':_0x3ae303['id'],'ListId':_0x3ae303[_0x7b0d('0x26')],'scheduledat':_0x3ae303[_0x7b0d('0x27')]?_0x3ae303[_0x7b0d('0x27')]:moment()[_0x7b0d('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x3ae303[_0x7b0d('0x1c')]?_0x3ae303[_0x7b0d('0x1c')]:0x2,'callback':_0x3ae303[_0x7b0d('0x1f')]?!![]:![],'callbackuniqueid':_0x3ae303[_0x7b0d('0x1f')]?_0x3ae303[_0x7b0d('0x1f')]:undefined,'callbackat':_0x3ae303[_0x7b0d('0x1f')]?moment()['format'](_0x7b0d('0x1e')):undefined,'CampaignId':_0x8581f4['id']})['catch'](_0x4a80c4());}}}});})[_0x7b0d('0x19')](function(){return _0x1c4481['Campaign']['findAll']({'attributes':['id'],'include':[{'model':_0x1c4481[_0x7b0d('0x36')],'as':'BlackLists','where':{'id':_0x3ae303[_0x7b0d('0x26')]}}]})[_0x7b0d('0x19')](function(_0x4d40f8){if(_0x4d40f8){var _0x384f24=[];for(var _0x54f0ea=0x0,_0x389754;_0x54f0ea<_0x4d40f8['length'];_0x54f0ea+=0x1){_0x389754=_0x4d40f8[_0x54f0ea][_0x7b0d('0x13')]({'plain':!![]});_0x1c4481[_0x7b0d('0x2f')][_0x7b0d('0x25')]({'phone':_0x3ae303[_0x7b0d('0xa')],'ContactId':_0x3ae303['id'],'ListId':_0x3ae303[_0x7b0d('0x26')],'CampaignId':_0x389754['id']})[_0x7b0d('0x20')](function(_0x58f410){logger[_0x7b0d('0x14')](_0x7b0d('0x30'),_0x7b0d('0x16'),_0x58f410[_0x7b0d('0x31')]);});}}});})[_0x7b0d('0x19')](function(){_0x3442db();})['catch'](function(_0x4c1cc3){logger[_0x7b0d('0x14')](_0x7b0d('0x30'),_0x7b0d('0x16'),_0x4c1cc3[_0x7b0d('0x31')]);_0x3442db(_0x4c1cc3);});}else{_0x3442db(new Error(_0x7b0d('0x37')));}},'afterDestroy':function(_0x4b5c52,_0x5baf73,_0x3b80ca){var _0x535186=_0x298e6f[_0x7b0d('0x38')];var _0x1b28f0=_0x4b5c52[_0x7b0d('0x13')]({'plain':!![]});return _0x535186[_0x7b0d('0x21')][_0x7b0d('0x2b')]({'raw':!![],'where':{'ListId':_0x1b28f0[_0x7b0d('0x26')],'ContactId':_0x1b28f0['id']}})[_0x7b0d('0x19')](function(_0x353a4e){if(!_[_0x7b0d('0x39')](_0x353a4e)){var _0x421e1f=[];for(var _0x4f11c8=0x0;_0x4f11c8<_0x353a4e[_0x7b0d('0x34')];_0x4f11c8+=0x1){var _0x210c69=_0x535186[_0x7b0d('0x21')][_0x7b0d('0x3a')]({'where':{'ListId':_0x353a4e[_0x4f11c8][_0x7b0d('0x26')],'ContactId':_0x353a4e[_0x4f11c8][_0x7b0d('0x3b')],'VoiceQueueId':_0x353a4e[_0x4f11c8][_0x7b0d('0x3c')],'CampaignId':_0x353a4e[_0x4f11c8]['CampaignId']}});_0x421e1f[_0x7b0d('0x3d')](_0x210c69);}return BPromise[_0x7b0d('0x3e')](_0x421e1f);}})[_0x7b0d('0x19')](function(_0x291534){logger['info'](_0x7b0d('0x3f'),util[_0x7b0d('0x17')](_0x291534,{'showHidden':![],'depth':null}));_0x3b80ca();})[_0x7b0d('0x20')](function(_0xed07){logger[_0x7b0d('0x14')](_0x7b0d('0x40'),util['inspect'](_0xed07,{'showHidden':![],'depth':null}));_0x3b80ca(_0xed07);});}}});};
\ No newline at end of file
+var _0x4d3c=['cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','\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','ListId','afterCreate','create','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','CmList','Lists','length','dialCheckDuplicateType','always','findAll','BlackLists','CmHopperBlack','message','Campaign','onlyIfOpen','cmContact,\x20%s,\x20%s','List\x20not\x20found','isEmpty','ContactId','VoiceQueueId','CampaignId','push','all','lodash','util','../../config/logger','api','moment','path','rimraf','./cmContact.attributes','exports','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','email','FULLTEXT','utf8mb4_unicode_ci','models','get','error','cmContact','inspect','CmHopper','findOne','then','isNil'];(function(_0x2c4cf4,_0x4058bd){var _0x199478=function(_0x1db77f){while(--_0x1db77f){_0x2c4cf4['push'](_0x2c4cf4['shift']());}};_0x199478(++_0x4058bd);}(_0x4d3c,0xa7));var _0xc4d3=function(_0x59ed96,_0x4025a4){_0x59ed96=_0x59ed96-0x0;var _0x236d06=_0x4d3c[_0x59ed96];return _0x236d06;};'use strict';var _=require(_0xc4d3('0x0'));var util=require(_0xc4d3('0x1'));var logger=require(_0xc4d3('0x2'))(_0xc4d3('0x3'));var moment=require(_0xc4d3('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xc4d3('0x5'));var rimraf=require(_0xc4d3('0x6'));var config=require('../../config/environment');var attributes=require(_0xc4d3('0x7'));module[_0xc4d3('0x8')]=function(_0x1361a1,_0x1e12b0){return _0x1361a1['define']('CmContact',attributes,{'tableName':_0xc4d3('0x9'),'paranoid':!![],'indexes':[{'name':_0xc4d3('0xa'),'fields':['phone']},{'name':_0xc4d3('0xb'),'fields':[_0xc4d3('0xc'),_0xc4d3('0xd'),'phone',_0xc4d3('0xe'),_0xc4d3('0xf'),_0xc4d3('0x10')],'type':_0xc4d3('0x11')}],'timestamps':!![],'charset':'utf8mb4','collate':_0xc4d3('0x12'),'hooks':{'afterCreate':function(_0x35bf04,_0x254784,_0x57a270){var _0x1c8a61=_0x1361a1[_0xc4d3('0x13')];var _0x1958be=_0x35bf04[_0xc4d3('0x14')]({'plain':!![]});function _0x5d3e9e(){return function(_0x409b67){logger[_0xc4d3('0x15')](_0xc4d3('0x16'),'afterCreate',util[_0xc4d3('0x17')](_0x409b67,{'showHidden':![],'depth':null}));};}var _0x318604=function(_0x2ddad3){return new BPromise(function(_0x1dab1b,_0x1d6fd7){_0x1c8a61[_0xc4d3('0x18')][_0xc4d3('0x19')]({'where':{'phone':_0x1958be[_0xc4d3('0xa')],'VoiceQueueId':_0x2ddad3['id']}})[_0xc4d3('0x1a')](function(_0x202a48){if(!_[_0xc4d3('0x1b')](_0x202a48)){throw new Error(_0xc4d3('0x1c')+_0x1958be['phone']+_0xc4d3('0x1d')+_0x2ddad3['id']);}return _0x1c8a61[_0xc4d3('0x18')]['create']({'phone':_0x1958be[_0xc4d3('0xa')],'ContactId':_0x1958be['id'],'ListId':_0x1958be['ListId'],'priority':_0x1958be[_0xc4d3('0x1e')]?_0x1958be['priority']:0x2,'scheduledat':_0x1958be[_0xc4d3('0x1f')]?_0x1958be['scheduledat']:moment()[_0xc4d3('0x20')](_0xc4d3('0x21')),'callback':_0x1958be[_0xc4d3('0x22')]?!![]:![],'callbackuniqueid':_0x1958be[_0xc4d3('0x22')]?_0x1958be[_0xc4d3('0x22')]:undefined,'callbackat':_0x1958be[_0xc4d3('0x22')]?moment()['format'](_0xc4d3('0x21')):undefined,'VoiceQueueId':_0x2ddad3['id']});})['catch'](function(_0x380f53){_0x1d6fd7(_0x380f53);});});};var _0x209ab7=function(_0x597693){return new BPromise(function(_0x282037,_0x533d4a){_0x1c8a61[_0xc4d3('0x18')][_0xc4d3('0x19')]({'where':{'phone':_0x1958be[_0xc4d3('0xa')],'VoiceQueueId':_0x597693['id']}})['then'](function(_0x2493ff){if(!_[_0xc4d3('0x1b')](_0x2493ff)){throw new Error(_0xc4d3('0x1c')+_0x1958be['phone']+_0xc4d3('0x23')+_0x597693['id']);}return _0x1c8a61[_0xc4d3('0x24')][_0xc4d3('0x19')]({'where':{'calleridnum':_0x1958be[_0xc4d3('0xa')],'VoiceQueueId':_0x597693['id']}});})[_0xc4d3('0x1a')](function(_0x2c734f){if(!_['isNil'](_0x2c734f)){throw new Error(_0xc4d3('0x25')+_0x1958be[_0xc4d3('0xa')]+_0xc4d3('0x26')+_0x597693['id']);}return _0x1c8a61[_0xc4d3('0x18')]['create']({'phone':_0x1958be['phone'],'ContactId':_0x1958be['id'],'ListId':_0x1958be[_0xc4d3('0x27')],'priority':_0x1958be['priority']?_0x1958be['priority']:0x2,'scheduledat':_0x1958be[_0xc4d3('0x1f')]?_0x1958be['scheduledat']:moment()[_0xc4d3('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x1958be[_0xc4d3('0x22')]?!![]:![],'callbackuniqueid':_0x1958be[_0xc4d3('0x22')]?_0x1958be[_0xc4d3('0x22')]:undefined,'callbackat':_0x1958be[_0xc4d3('0x22')]?moment()[_0xc4d3('0x20')](_0xc4d3('0x21')):undefined,'VoiceQueueId':_0x597693['id']});})['catch'](function(_0x4f2aa2){_0x533d4a(_0x4f2aa2);});});};function _0x36c9a3(){return function(_0x42f8bc){logger[_0xc4d3('0x15')](_0xc4d3('0x16'),_0xc4d3('0x28'),util[_0xc4d3('0x17')](_0x42f8bc,{'showHidden':![],'depth':null}));};}var _0xb6c5d5=function(_0x43d805){return new BPromise(function(_0x8021b6,_0x28d13d){_0x1c8a61['CmHopper'][_0xc4d3('0x19')]({'where':{'phone':_0x1958be[_0xc4d3('0xa')],'CampaignId':_0x43d805['id']}})[_0xc4d3('0x1a')](function(_0x4c0267){if(!_['isNil'](_0x4c0267)){throw new Error(_0xc4d3('0x1c')+_0x1958be[_0xc4d3('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x43d805['id']);}return _0x1c8a61[_0xc4d3('0x18')][_0xc4d3('0x29')]({'phone':_0x1958be[_0xc4d3('0xa')],'ContactId':_0x1958be['id'],'ListId':_0x1958be[_0xc4d3('0x27')],'priority':_0x1958be[_0xc4d3('0x1e')]?_0x1958be[_0xc4d3('0x1e')]:0x2,'scheduledat':_0x1958be['scheduledat']?_0x1958be[_0xc4d3('0x1f')]:moment()[_0xc4d3('0x20')](_0xc4d3('0x21')),'callback':_0x1958be['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x1958be[_0xc4d3('0x22')]?_0x1958be['callbackUniqueid']:undefined,'callbackat':_0x1958be[_0xc4d3('0x22')]?moment()[_0xc4d3('0x20')](_0xc4d3('0x21')):undefined,'CampaignId':_0x43d805['id']});})[_0xc4d3('0x2a')](function(_0x2ee562){_0x28d13d(_0x2ee562);});});};var _0x23664c=function(_0x2e1550){return new BPromise(function(_0x1c027d,_0x8ff788){_0x1c8a61[_0xc4d3('0x18')][_0xc4d3('0x19')]({'where':{'phone':_0x1958be[_0xc4d3('0xa')],'CampaignId':_0x2e1550['id']}})[_0xc4d3('0x1a')](function(_0x2bfa16){if(!_[_0xc4d3('0x1b')](_0x2bfa16)){throw new Error(_0xc4d3('0x1c')+_0x1958be[_0xc4d3('0xa')]+_0xc4d3('0x2b')+_0x2e1550['id']);}return _0x1c8a61['CmHopperFinal'][_0xc4d3('0x19')]({'where':{'calleridnum':_0x1958be[_0xc4d3('0xa')],'CampaignId':_0x2e1550['id']}});})[_0xc4d3('0x1a')](function(_0x5edb55){if(!_[_0xc4d3('0x1b')](_0x5edb55)){throw new Error(_0xc4d3('0x25')+_0x1958be[_0xc4d3('0xa')]+_0xc4d3('0x2c')+_0x2e1550['id']);}return _0x1c8a61['CmHopper'][_0xc4d3('0x29')]({'phone':_0x1958be[_0xc4d3('0xa')],'ContactId':_0x1958be['id'],'ListId':_0x1958be['ListId'],'priority':_0x1958be['priority']?_0x1958be[_0xc4d3('0x1e')]:0x2,'scheduledat':_0x1958be[_0xc4d3('0x1f')]?_0x1958be[_0xc4d3('0x1f')]:moment()[_0xc4d3('0x20')](_0xc4d3('0x21')),'callback':_0x1958be['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x1958be[_0xc4d3('0x22')]?_0x1958be['callbackUniqueid']:undefined,'callbackat':_0x1958be['callbackUniqueid']?moment()[_0xc4d3('0x20')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x2e1550['id']});})[_0xc4d3('0x2a')](function(_0x3a2fce){_0x8ff788(_0x3a2fce);});});};if(_0x1958be[_0xc4d3('0x27')]){_0x1c8a61[_0xc4d3('0x2d')]['findAll']({'where':{'type':'outbound'},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x1c8a61[_0xc4d3('0x2e')],'as':_0xc4d3('0x2f'),'where':{'id':_0x1958be[_0xc4d3('0x27')]}}]})[_0xc4d3('0x1a')](function(_0x4cd42f){if(_0x4cd42f){var _0x1425c9=[];for(var _0x7a293=0x0,_0x6c5791;_0x7a293<_0x4cd42f[_0xc4d3('0x30')];_0x7a293+=0x1){_0x6c5791=_0x4cd42f[_0x7a293][_0xc4d3('0x14')]({'plain':!![]});switch(_0x6c5791[_0xc4d3('0x31')]){case _0xc4d3('0x32'):_0x209ab7(_0x6c5791)['catch'](_0x5d3e9e());break;case'onlyIfOpen':_0x318604(_0x6c5791)['catch'](_0x5d3e9e());break;default:_0x1c8a61[_0xc4d3('0x18')][_0xc4d3('0x29')]({'phone':_0x1958be['phone'],'ContactId':_0x1958be['id'],'ListId':_0x1958be[_0xc4d3('0x27')],'scheduledat':_0x1958be['scheduledat']?_0x1958be[_0xc4d3('0x1f')]:moment()[_0xc4d3('0x20')](_0xc4d3('0x21')),'priority':_0x1958be[_0xc4d3('0x1e')]?_0x1958be['priority']:0x2,'callback':_0x1958be[_0xc4d3('0x22')]?!![]:![],'callbackuniqueid':_0x1958be['callbackUniqueid']?_0x1958be[_0xc4d3('0x22')]:undefined,'callbackat':_0x1958be[_0xc4d3('0x22')]?moment()[_0xc4d3('0x20')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x6c5791['id']})[_0xc4d3('0x2a')](_0x5d3e9e());}}}})['then'](function(){return _0x1c8a61[_0xc4d3('0x2d')][_0xc4d3('0x33')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x1c8a61[_0xc4d3('0x2e')],'as':_0xc4d3('0x34'),'where':{'id':_0x1958be[_0xc4d3('0x27')]}}]})[_0xc4d3('0x1a')](function(_0x31c84d){if(_0x31c84d){var _0xfb889b=[];for(var _0x454e3c=0x0,_0x2ce280;_0x454e3c<_0x31c84d['length'];_0x454e3c+=0x1){_0x2ce280=_0x31c84d[_0x454e3c]['get']({'plain':!![]});_0x1c8a61[_0xc4d3('0x35')][_0xc4d3('0x29')]({'phone':_0x1958be[_0xc4d3('0xa')],'ContactId':_0x1958be['id'],'ListId':_0x1958be[_0xc4d3('0x27')],'VoiceQueueId':_0x2ce280['id']})['catch'](function(_0x4fe62f){logger[_0xc4d3('0x15')]('cmContact,\x20%s,\x20%s',_0xc4d3('0x28'),_0x4fe62f[_0xc4d3('0x36')]);});}}});})[_0xc4d3('0x1a')](function(){return _0x1c8a61[_0xc4d3('0x37')]['findAll']({'attributes':['id',_0xc4d3('0x31')],'include':[{'model':_0x1c8a61[_0xc4d3('0x2e')],'as':_0xc4d3('0x2f'),'where':{'id':_0x1958be[_0xc4d3('0x27')]}}]})[_0xc4d3('0x1a')](function(_0x393008){if(_0x393008){var _0x1b2e8a=[];for(var _0x3e3269=0x0,_0x4e6b80;_0x3e3269<_0x393008[_0xc4d3('0x30')];_0x3e3269+=0x1){_0x4e6b80=_0x393008[_0x3e3269]['get']({'plain':!![]});switch(_0x4e6b80['dialCheckDuplicateType']){case _0xc4d3('0x32'):_0x23664c(_0x4e6b80)['catch'](_0x36c9a3());break;case _0xc4d3('0x38'):_0xb6c5d5(_0x4e6b80)[_0xc4d3('0x2a')](_0x36c9a3());break;default:_0x1c8a61[_0xc4d3('0x18')][_0xc4d3('0x29')]({'phone':_0x1958be[_0xc4d3('0xa')],'ContactId':_0x1958be['id'],'ListId':_0x1958be[_0xc4d3('0x27')],'scheduledat':_0x1958be['scheduledat']?_0x1958be['scheduledat']:moment()[_0xc4d3('0x20')](_0xc4d3('0x21')),'priority':_0x1958be[_0xc4d3('0x1e')]?_0x1958be[_0xc4d3('0x1e')]:0x2,'callback':_0x1958be[_0xc4d3('0x22')]?!![]:![],'callbackuniqueid':_0x1958be[_0xc4d3('0x22')]?_0x1958be['callbackUniqueid']:undefined,'callbackat':_0x1958be[_0xc4d3('0x22')]?moment()[_0xc4d3('0x20')](_0xc4d3('0x21')):undefined,'CampaignId':_0x4e6b80['id']})[_0xc4d3('0x2a')](_0x36c9a3());}}}});})[_0xc4d3('0x1a')](function(){return _0x1c8a61[_0xc4d3('0x37')][_0xc4d3('0x33')]({'attributes':['id'],'include':[{'model':_0x1c8a61[_0xc4d3('0x2e')],'as':_0xc4d3('0x34'),'where':{'id':_0x1958be[_0xc4d3('0x27')]}}]})[_0xc4d3('0x1a')](function(_0x4aed52){if(_0x4aed52){var _0x471334=[];for(var _0x5b37cd=0x0,_0x2e8481;_0x5b37cd<_0x4aed52[_0xc4d3('0x30')];_0x5b37cd+=0x1){_0x2e8481=_0x4aed52[_0x5b37cd]['get']({'plain':!![]});_0x1c8a61[_0xc4d3('0x35')]['create']({'phone':_0x1958be[_0xc4d3('0xa')],'ContactId':_0x1958be['id'],'ListId':_0x1958be[_0xc4d3('0x27')],'CampaignId':_0x2e8481['id']})[_0xc4d3('0x2a')](function(_0x271d3a){logger[_0xc4d3('0x15')](_0xc4d3('0x39'),_0xc4d3('0x28'),_0x271d3a['message']);});}}});})['then'](function(){_0x57a270();})['catch'](function(_0x5ca33f){logger[_0xc4d3('0x15')](_0xc4d3('0x39'),_0xc4d3('0x28'),_0x5ca33f['message']);_0x57a270(_0x5ca33f);});}else{_0x57a270(new Error(_0xc4d3('0x3a')));}},'afterDestroy':function(_0x3a1b2f,_0x1e749f,_0x29466){var _0xf228cc=_0x1361a1[_0xc4d3('0x13')];var _0x338223=_0x3a1b2f['get']({'plain':!![]});return _0xf228cc[_0xc4d3('0x18')][_0xc4d3('0x33')]({'raw':!![],'where':{'ListId':_0x338223['ListId'],'ContactId':_0x338223['id']}})['then'](function(_0xb0ab68){if(!_[_0xc4d3('0x3b')](_0xb0ab68)){var _0x697b2b=[];for(var _0x30f195=0x0;_0x30f195<_0xb0ab68['length'];_0x30f195+=0x1){var _0x1d0a70=_0xf228cc[_0xc4d3('0x18')]['destroy']({'where':{'ListId':_0xb0ab68[_0x30f195][_0xc4d3('0x27')],'ContactId':_0xb0ab68[_0x30f195][_0xc4d3('0x3c')],'VoiceQueueId':_0xb0ab68[_0x30f195][_0xc4d3('0x3d')],'CampaignId':_0xb0ab68[_0x30f195][_0xc4d3('0x3e')]}});_0x697b2b[_0xc4d3('0x3f')](_0x1d0a70);}return BPromise[_0xc4d3('0x40')](_0x697b2b);}})['then'](function(_0x326acc){logger['info']('[CmContact][afterDestroy][Succesfull]',util[_0xc4d3('0x17')](_0x326acc,{'showHidden':![],'depth':null}));_0x29466();})[_0xc4d3('0x2a')](function(_0x35fc69){logger['error']('[CmContact][afterDestroy][Error]',util[_0xc4d3('0x17')](_0x35fc69,{'showHidden':![],'depth':null}));_0x29466(_0x35fc69);});}}});};
\ No newline at end of file
index 38672e6..a2998e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c98=['raw','keys','body','startsWith','cf_','update','table','cm_contacts','id\x20=\x20?','sequelize','util','moment','ioredis','../../config/utils','../../config/logger','../../config/environment','client','redis','localhost','socket.io-emitter','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','CmContact,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CmContact','options','where','attributes','limit','include','model','map','GetCmContact','debug','CreateCmContact','create'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0x7c98,0x14c));var _0x87c9=function(_0x513986,_0x31bc65){_0x513986=_0x513986-0x0;var _0x282e99=_0x7c98[_0x513986];return _0x282e99;};'use strict';var _=require('lodash');var util=require(_0x87c9('0x0'));var moment=require(_0x87c9('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x87c9('0x2'));var squel=require('squel');var db=require('../../mysqldb')['db'];var utils=require(_0x87c9('0x3'));var logger=require(_0x87c9('0x4'))('rpc');var config=require(_0x87c9('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x87c9('0x6')]['http']({'port':0x232a});config[_0x87c9('0x7')]=_['defaults'](config[_0x87c9('0x7')],{'host':_0x87c9('0x8'),'port':0x18eb});var socket=require(_0x87c9('0x9'))(new Redis(config[_0x87c9('0x7')]));require(_0x87c9('0xa'))[_0x87c9('0xb')](socket);function respondWithRpcPromise(_0x25d01e,_0xdc77ca,_0xa98e25){return new BPromise(function(_0x323345,_0x2e95f8){return client[_0x87c9('0xc')](_0x25d01e,_0xa98e25)[_0x87c9('0xd')](function(_0x3dab2c){logger[_0x87c9('0xe')](_0x87c9('0xf'),_0xdc77ca,_0x87c9('0x10'));logger['debug'](_0x87c9('0x11'),_0xdc77ca,'request\x20sent',JSON[_0x87c9('0x12')](_0x3dab2c));if(_0x3dab2c['error']){if(_0x3dab2c[_0x87c9('0x13')][_0x87c9('0x14')]===0x1f4){logger[_0x87c9('0x13')](_0x87c9('0xf'),_0xdc77ca,_0x3dab2c[_0x87c9('0x13')][_0x87c9('0x15')]);return _0x2e95f8(_0x3dab2c[_0x87c9('0x13')]['message']);}logger[_0x87c9('0x13')]('CmContact,\x20%s,\x20%s',_0xdc77ca,_0x3dab2c[_0x87c9('0x13')][_0x87c9('0x15')]);return _0x323345(_0x3dab2c[_0x87c9('0x13')][_0x87c9('0x15')]);}else{logger['info'](_0x87c9('0xf'),_0xdc77ca,_0x87c9('0x10'));_0x323345(_0x3dab2c[_0x87c9('0x16')]['message']);}})[_0x87c9('0x17')](function(_0x49937b){logger[_0x87c9('0x13')](_0x87c9('0xf'),_0xdc77ca,_0x49937b);_0x2e95f8(_0x49937b);});});}exports['GetCmContact']=function(_0x65e0a6){var _0x2b6e91=this;return new Promise(function(_0x5ecf4a,_0x54c160){return db[_0x87c9('0x18')]['findAll']({'raw':_0x65e0a6[_0x87c9('0x19')]?_0x65e0a6[_0x87c9('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x65e0a6['options']?_0x65e0a6[_0x87c9('0x19')][_0x87c9('0x1a')]||null:null,'attributes':_0x65e0a6[_0x87c9('0x19')]?_0x65e0a6[_0x87c9('0x19')][_0x87c9('0x1b')]||null:null,'limit':_0x65e0a6[_0x87c9('0x19')]?_0x65e0a6[_0x87c9('0x19')][_0x87c9('0x1c')]||null:null,'include':_0x65e0a6[_0x87c9('0x19')]?_0x65e0a6['options'][_0x87c9('0x1d')]?_['map'](_0x65e0a6[_0x87c9('0x19')]['include'],function(_0x504018){return{'model':db[_0x504018[_0x87c9('0x1e')]],'as':_0x504018['as'],'attributes':_0x504018[_0x87c9('0x1b')],'include':_0x504018[_0x87c9('0x1d')]?_[_0x87c9('0x1f')](_0x504018['include'],function(_0x4606e7){return{'model':db[_0x4606e7[_0x87c9('0x1e')]],'as':_0x4606e7['as'],'attributes':_0x4606e7[_0x87c9('0x1b')],'include':_0x4606e7['include']?_[_0x87c9('0x1f')](_0x4606e7[_0x87c9('0x1d')],function(_0x31bdf8){return{'model':db[_0x31bdf8[_0x87c9('0x1e')]],'as':_0x31bdf8['as'],'attributes':_0x31bdf8[_0x87c9('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x100aa2){logger[_0x87c9('0xe')](_0x87c9('0x20'),_0x65e0a6);logger[_0x87c9('0x21')](_0x87c9('0x20'),_0x65e0a6,JSON[_0x87c9('0x12')](_0x100aa2));_0x5ecf4a(_0x100aa2);})[_0x87c9('0x17')](function(_0x47d59d){logger[_0x87c9('0x13')](_0x87c9('0x20'),_0x47d59d[_0x87c9('0x15')],_0x65e0a6);_0x54c160(_0x2b6e91[_0x87c9('0x13')](0x1f4,_0x47d59d[_0x87c9('0x15')]));});});};exports[_0x87c9('0x22')]=function(_0x3158db){var _0x263519=this;return new Promise(function(_0x221454,_0x56bcd6){return db['CmContact'][_0x87c9('0x23')](_0x3158db['body'],{'raw':_0x3158db[_0x87c9('0x19')]?_0x3158db[_0x87c9('0x19')][_0x87c9('0x24')]===undefined?!![]:![]:!![]})[_0x87c9('0xd')](function(_0x1e23ea){var _0x8252a0;for(var _0x55a4cd=0x0;_0x55a4cd<Object['keys'](_0x3158db['body'])['length'];_0x55a4cd++){var _0x1ff7ee=Object[_0x87c9('0x25')](_0x3158db[_0x87c9('0x26')])[_0x55a4cd];if(_0x1ff7ee[_0x87c9('0x27')](_0x87c9('0x28'))){_0x8252a0=squel[_0x87c9('0x29')]()[_0x87c9('0x2a')](_0x87c9('0x2b'))['set'](_0x1ff7ee,_0x3158db['body'][_0x1ff7ee])['where'](_0x87c9('0x2c'),_0x1e23ea['id'])['toString']();break;}}if(!_0x8252a0)return _0x1e23ea;return db[_0x87c9('0x2d')]['query'](_0x8252a0)['then'](function(){return _0x1e23ea;});})[_0x87c9('0xd')](function(_0xe79431){logger['info'](_0x87c9('0x22'),_0x3158db);logger[_0x87c9('0x21')](_0x87c9('0x22'),_0x3158db,JSON['stringify'](_0xe79431));_0x221454(_0xe79431);})[_0x87c9('0x17')](function(_0x42d00b){logger[_0x87c9('0x13')](_0x87c9('0x22'),_0x42d00b[_0x87c9('0x15')],_0x3158db);_0x56bcd6(_0x263519[_0x87c9('0x13')](0x1f4,_0x42d00b[_0x87c9('0x15')]));});});};
\ No newline at end of file
+var _0x4346=['model','GetCmContact','body','keys','startsWith','cf_','table','cm_contacts','set','sequelize','query','CreateCmContact','stringify','lodash','util','moment','bluebird','ioredis','squel','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','./cmContact.socket','register','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','error','message','result','catch','CmContact','findAll','options','raw','where','attributes','limit','include','map'];(function(_0x12b84a,_0x47422c){var _0x2e9b06=function(_0x426cc7){while(--_0x426cc7){_0x12b84a['push'](_0x12b84a['shift']());}};_0x2e9b06(++_0x47422c);}(_0x4346,0x139));var _0x6434=function(_0x1e79b9,_0x223ef3){_0x1e79b9=_0x1e79b9-0x0;var _0x2c2d29=_0x4346[_0x1e79b9];return _0x2c2d29;};'use strict';var _=require(_0x6434('0x0'));var util=require(_0x6434('0x1'));var moment=require(_0x6434('0x2'));var BPromise=require(_0x6434('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6434('0x4'));var squel=require(_0x6434('0x5'));var db=require(_0x6434('0x6'))['db'];var utils=require(_0x6434('0x7'));var logger=require('../../config/logger')(_0x6434('0x8'));var config=require(_0x6434('0x9'));var jayson=require(_0x6434('0xa'));var client=jayson[_0x6434('0xb')][_0x6434('0xc')]({'port':0x232a});config['redis']=_[_0x6434('0xd')](config[_0x6434('0xe')],{'host':_0x6434('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6434('0xe')]));require(_0x6434('0x10'))[_0x6434('0x11')](socket);function respondWithRpcPromise(_0x3edbe8,_0x412faa,_0x562fd1){return new BPromise(function(_0x5eac2d,_0x3f8338){return client['request'](_0x3edbe8,_0x562fd1)[_0x6434('0x12')](function(_0x130357){logger[_0x6434('0x13')](_0x6434('0x14'),_0x412faa,_0x6434('0x15'));logger[_0x6434('0x16')](_0x6434('0x17'),_0x412faa,_0x6434('0x15'),JSON['stringify'](_0x130357));if(_0x130357[_0x6434('0x18')]){if(_0x130357[_0x6434('0x18')]['code']===0x1f4){logger[_0x6434('0x18')]('CmContact,\x20%s,\x20%s',_0x412faa,_0x130357['error'][_0x6434('0x19')]);return _0x3f8338(_0x130357['error'][_0x6434('0x19')]);}logger[_0x6434('0x18')](_0x6434('0x14'),_0x412faa,_0x130357[_0x6434('0x18')]['message']);return _0x5eac2d(_0x130357[_0x6434('0x18')]['message']);}else{logger[_0x6434('0x13')](_0x6434('0x14'),_0x412faa,_0x6434('0x15'));_0x5eac2d(_0x130357[_0x6434('0x1a')][_0x6434('0x19')]);}})[_0x6434('0x1b')](function(_0x575df3){logger[_0x6434('0x18')](_0x6434('0x14'),_0x412faa,_0x575df3);_0x3f8338(_0x575df3);});});}exports['GetCmContact']=function(_0x30f2f0){var _0x5153ea=this;return new Promise(function(_0x448d89,_0x4bfaf6){return db[_0x6434('0x1c')][_0x6434('0x1d')]({'raw':_0x30f2f0['options']?_0x30f2f0[_0x6434('0x1e')][_0x6434('0x1f')]===undefined?!![]:![]:!![],'where':_0x30f2f0[_0x6434('0x1e')]?_0x30f2f0[_0x6434('0x1e')][_0x6434('0x20')]||null:null,'attributes':_0x30f2f0[_0x6434('0x1e')]?_0x30f2f0[_0x6434('0x1e')][_0x6434('0x21')]||null:null,'limit':_0x30f2f0[_0x6434('0x1e')]?_0x30f2f0[_0x6434('0x1e')][_0x6434('0x22')]||null:null,'include':_0x30f2f0['options']?_0x30f2f0[_0x6434('0x1e')][_0x6434('0x23')]?_[_0x6434('0x24')](_0x30f2f0[_0x6434('0x1e')][_0x6434('0x23')],function(_0x3b9dbe){return{'model':db[_0x3b9dbe[_0x6434('0x25')]],'as':_0x3b9dbe['as'],'attributes':_0x3b9dbe[_0x6434('0x21')],'include':_0x3b9dbe['include']?_[_0x6434('0x24')](_0x3b9dbe[_0x6434('0x23')],function(_0x1ed207){return{'model':db[_0x1ed207[_0x6434('0x25')]],'as':_0x1ed207['as'],'attributes':_0x1ed207['attributes'],'include':_0x1ed207['include']?_['map'](_0x1ed207[_0x6434('0x23')],function(_0x5eb448){return{'model':db[_0x5eb448[_0x6434('0x25')]],'as':_0x5eb448['as'],'attributes':_0x5eb448['attributes']};}):[]};}):[]};}):[]:[]})[_0x6434('0x12')](function(_0x35d778){logger['info'](_0x6434('0x26'),_0x30f2f0);logger[_0x6434('0x16')](_0x6434('0x26'),_0x30f2f0,JSON['stringify'](_0x35d778));_0x448d89(_0x35d778);})['catch'](function(_0x4a7fac){logger['error'](_0x6434('0x26'),_0x4a7fac[_0x6434('0x19')],_0x30f2f0);_0x4bfaf6(_0x5153ea[_0x6434('0x18')](0x1f4,_0x4a7fac['message']));});});};exports['CreateCmContact']=function(_0x2e87de){var _0x3a84bb=this;return new Promise(function(_0x461d44,_0x777d7e){return db[_0x6434('0x1c')]['create'](_0x2e87de[_0x6434('0x27')],{'raw':_0x2e87de['options']?_0x2e87de[_0x6434('0x1e')][_0x6434('0x1f')]===undefined?!![]:![]:!![]})[_0x6434('0x12')](function(_0x4175b2){var _0x40dc82;for(var _0x1165e1=0x0;_0x1165e1<Object['keys'](_0x2e87de[_0x6434('0x27')])['length'];_0x1165e1++){var _0x3bc011=Object[_0x6434('0x28')](_0x2e87de['body'])[_0x1165e1];if(_0x3bc011[_0x6434('0x29')](_0x6434('0x2a'))){_0x40dc82=squel['update']()[_0x6434('0x2b')](_0x6434('0x2c'))[_0x6434('0x2d')](_0x3bc011,_0x2e87de['body'][_0x3bc011])[_0x6434('0x20')]('id\x20=\x20?',_0x4175b2['id'])['toString']();break;}}if(!_0x40dc82)return _0x4175b2;return db[_0x6434('0x2e')][_0x6434('0x2f')](_0x40dc82)[_0x6434('0x12')](function(){return _0x4175b2;});})[_0x6434('0x12')](function(_0x472074){logger['info']('CreateCmContact',_0x2e87de);logger[_0x6434('0x16')](_0x6434('0x30'),_0x2e87de,JSON[_0x6434('0x31')](_0x472074));_0x461d44(_0x472074);})['catch'](function(_0xbf4f8d){logger[_0x6434('0x18')](_0x6434('0x30'),_0xbf4f8d['message'],_0x2e87de);_0x777d7e(_0x3a84bb[_0x6434('0x18')](0x1f4,_0xbf4f8d[_0x6434('0x19')]));});});};
\ No newline at end of file
index 83262ed..5cb3317 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(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'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(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'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 eb2f502..e4e74c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0198=['exports','multer','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./cmContact.controller','get','index','isAuthenticated','describe','/:id','show','getTags','/:id/hoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','getJscriptySessions','/:id/journey','post','/merge','merge','/create_many','bulkCreate','/:id/tags','diskStorage','join','root','server/files/tmp','originalname','replace','extname','now','/csv','file','format','/upload','single','/upload/:id','import','put','update','destroy'];(function(_0x17d363,_0x180411){var _0x3ea444=function(_0x19fb7a){while(--_0x19fb7a){_0x17d363['push'](_0x17d363['shift']());}};_0x3ea444(++_0x180411);}(_0x0198,0x19f));var _0x8019=function(_0x4d35f3,_0x19ba66){_0x4d35f3=_0x4d35f3-0x0;var _0x382fea=_0x0198[_0x4d35f3];return _0x382fea;};'use strict';var multer=require(_0x8019('0x0'));var util=require('util');var path=require(_0x8019('0x1'));var timeout=require(_0x8019('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x8019('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x8019('0x4'));var config=require(_0x8019('0x5'));var controller=require(_0x8019('0x6'));router[_0x8019('0x7')]('/',auth['isAuthenticated'](),controller[_0x8019('0x8')]);router[_0x8019('0x7')]('/describe',auth[_0x8019('0x9')](),controller[_0x8019('0xa')]);router[_0x8019('0x7')](_0x8019('0xb'),auth[_0x8019('0x9')](),controller[_0x8019('0xc')]);router['get']('/:id/tags',auth['isAuthenticated'](),controller[_0x8019('0xd')]);router[_0x8019('0x7')](_0x8019('0xe'),auth[_0x8019('0x9')](),controller['getHoppers']);router[_0x8019('0x7')](_0x8019('0xf'),auth['isAuthenticated'](),controller[_0x8019('0x10')]);router[_0x8019('0x7')](_0x8019('0x11'),auth[_0x8019('0x9')](),controller[_0x8019('0x12')]);router[_0x8019('0x7')]('/:id/jscripty_sessions',auth[_0x8019('0x9')](),controller[_0x8019('0x13')]);router[_0x8019('0x7')](_0x8019('0x14'),auth[_0x8019('0x9')](),controller['getJourney']);router[_0x8019('0x15')](_0x8019('0x16'),auth[_0x8019('0x9')](),controller[_0x8019('0x17')]);router[_0x8019('0x15')]('/',auth[_0x8019('0x9')](),controller['create']);router[_0x8019('0x15')](_0x8019('0x18'),auth[_0x8019('0x9')](),controller[_0x8019('0x19')]);router[_0x8019('0x15')](_0x8019('0x1a'),auth[_0x8019('0x9')](),controller['setTags']);var upload=multer({'storage':multer[_0x8019('0x1b')]({'destination':function(_0x1eb36e,_0x5227b3,_0x5080dc){_0x5080dc(null,path[_0x8019('0x1c')](config[_0x8019('0x1d')],_0x8019('0x1e')));},'filename':function(_0x3361a8,_0x177f64,_0x35e366){_0x177f64[_0x8019('0x1f')]=_0x177f64[_0x8019('0x1f')][_0x8019('0x20')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x35e366(null,util['format']('%s-%s%s',path['basename'](_0x177f64[_0x8019('0x1f')],path[_0x8019('0x21')](_0x177f64['originalname'])),Date[_0x8019('0x22')](),path['extname'](_0x177f64[_0x8019('0x1f')])));}})});router[_0x8019('0x15')](_0x8019('0x23'),upload['single'](_0x8019('0x24')),controller['uploadCsv']);var upload=multer({'storage':multer[_0x8019('0x1b')]({'destination':function(_0x3c79ce,_0x11c2ba,_0x24a103){_0x24a103(null,path[_0x8019('0x1c')](config['root'],_0x8019('0x1e')));},'filename':function(_0x47efd5,_0x71d506,_0x3e48bd){_0x71d506[_0x8019('0x1f')]=_0x71d506[_0x8019('0x1f')][_0x8019('0x20')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3e48bd(null,util[_0x8019('0x25')]('%s-%s%s',path['basename'](_0x71d506['originalname'],path[_0x8019('0x21')](_0x71d506['originalname'])),Date[_0x8019('0x22')](),path[_0x8019('0x21')](_0x71d506[_0x8019('0x1f')])));}})});router['post'](_0x8019('0x26'),upload[_0x8019('0x27')](_0x8019('0x24')),controller['upload']);router[_0x8019('0x15')](_0x8019('0x28'),auth['isAuthenticated'](),controller[_0x8019('0x29')]);router[_0x8019('0x2a')]('/:id',auth[_0x8019('0x9')](),controller[_0x8019('0x2b')]);router['delete'](_0x8019('0xb'),auth[_0x8019('0x9')](),controller[_0x8019('0x2c')]);module[_0x8019('0x2d')]=router;
\ No newline at end of file
+var _0xfd01=['./cmContact.controller','get','isAuthenticated','/describe','describe','/:id','/:id/tags','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getJscriptySessions','/:id/journey','getJourney','post','/merge','create','/create_many','setTags','diskStorage','join','root','originalname','basename','extname','/csv','single','file','replace','format','%s-%s%s','/upload','/upload/:id','import','put','delete','destroy','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xfd01,0x197));var _0x1fd0=function(_0x590d95,_0x5748fc){_0x590d95=_0x590d95-0x0;var _0x5b2b21=_0xfd01[_0x590d95];return _0x5b2b21;};'use strict';var multer=require(_0x1fd0('0x0'));var util=require('util');var path=require(_0x1fd0('0x1'));var timeout=require(_0x1fd0('0x2'));var express=require('express');var router=express[_0x1fd0('0x3')]();var fs_extra=require(_0x1fd0('0x4'));var auth=require(_0x1fd0('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x1fd0('0x6'));var controller=require(_0x1fd0('0x7'));router[_0x1fd0('0x8')]('/',auth[_0x1fd0('0x9')](),controller['index']);router[_0x1fd0('0x8')](_0x1fd0('0xa'),auth[_0x1fd0('0x9')](),controller[_0x1fd0('0xb')]);router[_0x1fd0('0x8')](_0x1fd0('0xc'),auth[_0x1fd0('0x9')](),controller['show']);router[_0x1fd0('0x8')](_0x1fd0('0xd'),auth[_0x1fd0('0x9')](),controller[_0x1fd0('0xe')]);router['get'](_0x1fd0('0xf'),auth[_0x1fd0('0x9')](),controller[_0x1fd0('0x10')]);router['get'](_0x1fd0('0x11'),auth[_0x1fd0('0x9')](),controller[_0x1fd0('0x12')]);router['get'](_0x1fd0('0x13'),auth[_0x1fd0('0x9')](),controller['getHopperFinals']);router[_0x1fd0('0x8')]('/:id/jscripty_sessions',auth[_0x1fd0('0x9')](),controller[_0x1fd0('0x14')]);router['get'](_0x1fd0('0x15'),auth['isAuthenticated'](),controller[_0x1fd0('0x16')]);router[_0x1fd0('0x17')](_0x1fd0('0x18'),auth[_0x1fd0('0x9')](),controller['merge']);router[_0x1fd0('0x17')]('/',auth[_0x1fd0('0x9')](),controller[_0x1fd0('0x19')]);router[_0x1fd0('0x17')](_0x1fd0('0x1a'),auth[_0x1fd0('0x9')](),controller['bulkCreate']);router[_0x1fd0('0x17')](_0x1fd0('0xd'),auth['isAuthenticated'](),controller[_0x1fd0('0x1b')]);var upload=multer({'storage':multer[_0x1fd0('0x1c')]({'destination':function(_0x354687,_0x11f3a9,_0x151103){_0x151103(null,path[_0x1fd0('0x1d')](config[_0x1fd0('0x1e')],'server/files/tmp'));},'filename':function(_0x2c253d,_0x33342a,_0x1d7581){_0x33342a['originalname']=_0x33342a[_0x1fd0('0x1f')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1d7581(null,util['format']('%s-%s%s',path[_0x1fd0('0x20')](_0x33342a[_0x1fd0('0x1f')],path[_0x1fd0('0x21')](_0x33342a[_0x1fd0('0x1f')])),Date['now'](),path[_0x1fd0('0x21')](_0x33342a[_0x1fd0('0x1f')])));}})});router[_0x1fd0('0x17')](_0x1fd0('0x22'),upload[_0x1fd0('0x23')](_0x1fd0('0x24')),controller['uploadCsv']);var upload=multer({'storage':multer[_0x1fd0('0x1c')]({'destination':function(_0x39f02b,_0xd50690,_0x87cc6d){_0x87cc6d(null,path[_0x1fd0('0x1d')](config['root'],'server/files/tmp'));},'filename':function(_0x1e7af1,_0x255034,_0x38c4e8){_0x255034[_0x1fd0('0x1f')]=_0x255034[_0x1fd0('0x1f')][_0x1fd0('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x38c4e8(null,util[_0x1fd0('0x26')](_0x1fd0('0x27'),path[_0x1fd0('0x20')](_0x255034[_0x1fd0('0x1f')],path[_0x1fd0('0x21')](_0x255034[_0x1fd0('0x1f')])),Date['now'](),path[_0x1fd0('0x21')](_0x255034['originalname'])));}})});router[_0x1fd0('0x17')](_0x1fd0('0x28'),upload['single'](_0x1fd0('0x24')),controller['upload']);router[_0x1fd0('0x17')](_0x1fd0('0x29'),auth[_0x1fd0('0x9')](),controller[_0x1fd0('0x2a')]);router[_0x1fd0('0x2b')](_0x1fd0('0xc'),auth[_0x1fd0('0x9')](),controller['update']);router[_0x1fd0('0x2c')](_0x1fd0('0xc'),auth[_0x1fd0('0x9')](),controller[_0x1fd0('0x2d')]);module['exports']=router;
\ No newline at end of file
index 0f76074..a559028 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd88d=['getDataValue','alias','STRING','setDataValue','name','TEXT','long','select','parse','values','isArray','stringify','BOOLEAN','ENUM','voice','sequelize','exports','VIRTUAL'];(function(_0x1a370f,_0x309099){var _0x498fb2=function(_0xf0add2){while(--_0xf0add2){_0x1a370f['push'](_0x1a370f['shift']());}};_0x498fb2(++_0x309099);}(_0xd88d,0x1e3));var _0xdd88=function(_0x389fee,_0x108671){_0x389fee=_0x389fee-0x0;var _0x3c00f9=_0xd88d[_0x389fee];return _0x3c00f9;};'use strict';var Sequelize=require(_0xdd88('0x0'));var _=require('lodash');module[_0xdd88('0x1')]={'name':{'type':Sequelize[_0xdd88('0x2')],'get':function(_0x3b8478){return this[_0xdd88('0x3')](_0xdd88('0x4'));}},'alias':{'type':Sequelize[_0xdd88('0x5')],'allowNull':![],'set':function(_0x5a76ae){this[_0xdd88('0x6')]('alias',_0x5a76ae?_0x5a76ae:this['getDataValue'](_0xdd88('0x7')));}},'type':{'type':Sequelize[_0xdd88('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0xdd88('0x8')](_0xdd88('0x9')),'get':function(){if(this[_0xdd88('0x3')]('type')===_0xdd88('0xa')){return JSON[_0xdd88('0xb')](this[_0xdd88('0x3')](_0xdd88('0xc')));}else{return this['getDataValue'](_0xdd88('0xc'));}},'set':function(_0x846eda){if(Array[_0xdd88('0xd')](_0x846eda)){this[_0xdd88('0x6')](_0xdd88('0xc'),JSON[_0xdd88('0xe')](_0x846eda));}else{this[_0xdd88('0x6')](_0xdd88('0xc'),_0x846eda);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xdd88('0xf')],'defaultValue':![]},'actionType':{'type':Sequelize[_0xdd88('0x10')](_0xdd88('0x11'))}};
\ No newline at end of file
+var _0xab20=['exports','getDataValue','alias','STRING','setDataValue','TEXT','type','parse','values','isArray','BOOLEAN','ENUM','voice','sequelize','lodash'];(function(_0x11d518,_0xc11a34){var _0x203b24=function(_0x515b8f){while(--_0x515b8f){_0x11d518['push'](_0x11d518['shift']());}};_0x203b24(++_0xc11a34);}(_0xab20,0x12a));var _0x0ab2=function(_0x441171,_0x28037b){_0x441171=_0x441171-0x0;var _0x6194ca=_0xab20[_0x441171];return _0x6194ca;};'use strict';var Sequelize=require(_0x0ab2('0x0'));var _=require(_0x0ab2('0x1'));module[_0x0ab2('0x2')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x5dbae9){return this[_0x0ab2('0x3')](_0x0ab2('0x4'));}},'alias':{'type':Sequelize[_0x0ab2('0x5')],'allowNull':![],'set':function(_0xa958e3){this[_0x0ab2('0x6')](_0x0ab2('0x4'),_0xa958e3?_0xa958e3:this[_0x0ab2('0x3')]('name'));}},'type':{'type':Sequelize[_0x0ab2('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0x0ab2('0x7')]('long'),'get':function(){if(this[_0x0ab2('0x3')](_0x0ab2('0x8'))==='select'){return JSON[_0x0ab2('0x9')](this['getDataValue'](_0x0ab2('0xa')));}else{return this[_0x0ab2('0x3')](_0x0ab2('0xa'));}},'set':function(_0x4a577a){if(Array[_0x0ab2('0xb')](_0x4a577a)){this[_0x0ab2('0x6')]('values',JSON['stringify'](_0x4a577a));}else{this[_0x0ab2('0x6')](_0x0ab2('0xa'),_0x4a577a);}}},'required':{'type':Sequelize[_0x0ab2('0xc')],'defaultValue':![]},'clickToAction':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'actionType':{'type':Sequelize[_0x0ab2('0xd')](_0x0ab2('0xe'))}};
\ No newline at end of file
index 09b16b6..3b2b23d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0ed=['query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','where','merge','VIRTUAL','filter','options','include','findAll','then','rows','catch','show','params','find','body','destroy','sequelize','transaction','create','Sequelize','TEXT','text','number','INTEGER','defaultValue','queryInterface','addColumn','format','cf_%d','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','end','error','stack','name','send','index','map','CmCustomField','rawAttributes','type','key','model','differenceBy'];(function(_0x50f9e6,_0x6f2199){var _0x424509=function(_0x130dac){while(--_0x130dac){_0x50f9e6['push'](_0x50f9e6['shift']());}};_0x424509(++_0x6f2199);}(_0xd0ed,0x127));var _0xdd0e=function(_0x45ff3e,_0x2d5827){_0x45ff3e=_0x45ff3e-0x0;var _0x5166bd=_0xd0ed[_0x45ff3e];return _0x5166bd;};'use strict';var emlformat=require(_0xdd0e('0x0'));var rimraf=require(_0xdd0e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdd0e('0x2'));var rp=require(_0xdd0e('0x3'));var moment=require(_0xdd0e('0x4'));var BPromise=require(_0xdd0e('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xdd0e('0x6'));var sox=require(_0xdd0e('0x7'));var csv=require('to-csv');var ejs=require(_0xdd0e('0x8'));var fs=require('fs');var fs_extra=require(_0xdd0e('0x9'));var _=require(_0xdd0e('0xa'));var squel=require(_0xdd0e('0xb'));var crypto=require('crypto');var jsforce=require(_0xdd0e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xdd0e('0xd'));var querystring=require(_0xdd0e('0xe'));var Papa=require('papaparse');var Redis=require(_0xdd0e('0xf'));var authService=require(_0xdd0e('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdd0e('0x11'));var logger=require(_0xdd0e('0x12'))(_0xdd0e('0x13'));var utils=require(_0xdd0e('0x14'));var config=require(_0xdd0e('0x15'));var licenseUtil=require(_0xdd0e('0x16'));var db=require(_0xdd0e('0x17'))['db'];function respondWithStatusCode(_0x32da20,_0x5eea7d){_0x5eea7d=_0x5eea7d||0xcc;return function(_0x3c801f){if(_0x3c801f){return _0x32da20[_0xdd0e('0x18')](_0x5eea7d);}return _0x32da20[_0xdd0e('0x19')](_0x5eea7d)['end']();};}function respondWithResult(_0x3e1060,_0x14f8b6){_0x14f8b6=_0x14f8b6||0xc8;return function(_0x31de3f){if(_0x31de3f){return _0x3e1060[_0xdd0e('0x19')](_0x14f8b6)[_0xdd0e('0x1a')](_0x31de3f);}};}function respondWithFilteredResult(_0x1efa5b,_0x169b38){return function(_0x1af92e){if(_0x1af92e){var _0x481ba6=typeof _0x169b38[_0xdd0e('0x1b')]===_0xdd0e('0x1c')&&typeof _0x169b38['limit']===_0xdd0e('0x1c');var _0x4cf1e4=_0x1af92e[_0xdd0e('0x1d')];var _0x18d01b=_0x481ba6?0x0:_0x169b38[_0xdd0e('0x1b')];var _0x502964=_0x481ba6?_0x1af92e[_0xdd0e('0x1d')]:_0x169b38['offset']+_0x169b38[_0xdd0e('0x1e')];var _0x1bdcf2;if(_0x502964>=_0x4cf1e4){_0x502964=_0x4cf1e4;_0x1bdcf2=0xc8;}else{_0x1bdcf2=0xce;}_0x1efa5b[_0xdd0e('0x19')](_0x1bdcf2);return _0x1efa5b[_0xdd0e('0x1f')](_0xdd0e('0x20'),_0x18d01b+'-'+_0x502964+'/'+_0x4cf1e4)[_0xdd0e('0x1a')](_0x1af92e);}return null;};}function patchUpdates(_0xbf172e){return function(_0x4abcee){try{jsonpatch[_0xdd0e('0x21')](_0x4abcee,_0xbf172e,!![]);}catch(_0x30645d){return BPromise[_0xdd0e('0x22')](_0x30645d);}return _0x4abcee['save']();};}function saveUpdates(_0x5a0ecd,_0x58211b){return function(_0x3243a5){if(_0x3243a5){return _0x3243a5[_0xdd0e('0x23')](_0x5a0ecd)['then'](function(_0x126bf7){return _0x126bf7;});}return null;};}function removeEntity(_0x4e6e95,_0x52c831){return function(_0xbabb31){if(_0xbabb31){return _0xbabb31['destroy']()['then'](function(){_0x4e6e95['status'](0xcc)[_0xdd0e('0x24')]();});}};}function handleEntityNotFound(_0x28f1ec,_0x556702){return function(_0x5f76ca){if(!_0x5f76ca){_0x28f1ec['sendStatus'](0x194);}return _0x5f76ca;};}function handleError(_0x46df22,_0x158112){_0x158112=_0x158112||0x1f4;return function(_0x1e8aad){logger[_0xdd0e('0x25')](_0x1e8aad[_0xdd0e('0x26')]);if(_0x1e8aad[_0xdd0e('0x27')]){delete _0x1e8aad[_0xdd0e('0x27')];}_0x46df22[_0xdd0e('0x19')](_0x158112)[_0xdd0e('0x28')](_0x1e8aad);};}exports[_0xdd0e('0x29')]=function(_0x29110a,_0x1ace7e){var _0x427378={},_0x3fbfc7={},_0x3e772f={'count':0x0,'rows':[]};var _0x4806c0=_[_0xdd0e('0x2a')](db[_0xdd0e('0x2b')][_0xdd0e('0x2c')],function(_0x6ea66c){return{'name':_0x6ea66c['fieldName'],'type':_0x6ea66c[_0xdd0e('0x2d')][_0xdd0e('0x2e')]};});_0x3fbfc7[_0xdd0e('0x2f')]=_[_0xdd0e('0x30')](_['map'](_0x4806c0,_0xdd0e('0x27')),[_0xdd0e('0x27')]);_0x3fbfc7[_0xdd0e('0x31')]=_[_0xdd0e('0x32')](_0x29110a[_0xdd0e('0x31')]);_0x3fbfc7[_0xdd0e('0x33')]=_[_0xdd0e('0x34')](_0x3fbfc7['model'],_0x3fbfc7[_0xdd0e('0x31')]);_0x427378[_0xdd0e('0x35')]=_[_0xdd0e('0x34')](_0x3fbfc7[_0xdd0e('0x2f')],qs[_0xdd0e('0x36')](_0x29110a[_0xdd0e('0x31')][_0xdd0e('0x36')]));_0x427378['attributes']=_0x427378[_0xdd0e('0x35')][_0xdd0e('0x37')]?_0x427378[_0xdd0e('0x35')]:_0x3fbfc7[_0xdd0e('0x2f')];if(!_0x29110a[_0xdd0e('0x31')][_0xdd0e('0x38')]('nolimit')){_0x427378['limit']=qs['limit'](_0x29110a['query'][_0xdd0e('0x1e')]);_0x427378[_0xdd0e('0x1b')]=qs[_0xdd0e('0x1b')](_0x29110a[_0xdd0e('0x31')]['offset']);}_0x427378[_0xdd0e('0x39')]=qs['sort'](_0x29110a['query']['sort']);_0x427378[_0xdd0e('0x3a')]=qs[_0xdd0e('0x33')](_['pick'](_0x29110a['query'],_0x3fbfc7['filters']),_0x4806c0);if(_0x29110a[_0xdd0e('0x31')]['filter']){_0x427378['where']=_[_0xdd0e('0x3b')](_0x427378[_0xdd0e('0x3a')],{'$or':_[_0xdd0e('0x2a')](_0x4806c0,function(_0x1d1916){if(_0x1d1916[_0xdd0e('0x2d')]!==_0xdd0e('0x3c')){var _0x3b206c={};_0x3b206c[_0x1d1916[_0xdd0e('0x27')]]={'$like':'%'+_0x29110a[_0xdd0e('0x31')][_0xdd0e('0x3d')]+'%'};return _0x3b206c;}})});}_0x427378=_['merge']({},_0x427378,_0x29110a[_0xdd0e('0x3e')]);var _0xd013d1={'where':_0x427378[_0xdd0e('0x3a')]};return db['CmCustomField'][_0xdd0e('0x1d')](_0xd013d1)['then'](function(_0x3467d7){_0x3e772f[_0xdd0e('0x1d')]=_0x3467d7;if(_0x29110a['query']['includeAll']){_0x427378[_0xdd0e('0x3f')]=[{'all':!![]}];}return db['CmCustomField'][_0xdd0e('0x40')](_0x427378);})[_0xdd0e('0x41')](function(_0x47b21b){_0x3e772f[_0xdd0e('0x42')]=_0x47b21b;return _0x3e772f;})['then'](respondWithFilteredResult(_0x1ace7e,_0x427378))[_0xdd0e('0x43')](handleError(_0x1ace7e,null));};exports[_0xdd0e('0x44')]=function(_0x8f74be,_0x2cc81a){var _0x287356={'raw':!![],'where':{'id':_0x8f74be[_0xdd0e('0x45')]['id']}},_0x33db4d={};_0x33db4d[_0xdd0e('0x2f')]=_[_0xdd0e('0x32')](db[_0xdd0e('0x2b')]['rawAttributes']);_0x33db4d[_0xdd0e('0x31')]=_[_0xdd0e('0x32')](_0x8f74be[_0xdd0e('0x31')]);_0x33db4d[_0xdd0e('0x33')]=_[_0xdd0e('0x34')](_0x33db4d[_0xdd0e('0x2f')],_0x33db4d[_0xdd0e('0x31')]);_0x287356[_0xdd0e('0x35')]=_[_0xdd0e('0x34')](_0x33db4d[_0xdd0e('0x2f')],qs['fields'](_0x8f74be[_0xdd0e('0x31')][_0xdd0e('0x36')]));_0x287356['attributes']=_0x287356[_0xdd0e('0x35')][_0xdd0e('0x37')]?_0x287356[_0xdd0e('0x35')]:_0x33db4d['model'];if(_0x8f74be[_0xdd0e('0x31')]['includeAll']){_0x287356['include']=[{'all':!![]}];}_0x287356=_[_0xdd0e('0x3b')]({},_0x287356,_0x8f74be[_0xdd0e('0x3e')]);return db['CmCustomField'][_0xdd0e('0x46')](_0x287356)[_0xdd0e('0x41')](handleEntityNotFound(_0x2cc81a,null))[_0xdd0e('0x41')](respondWithResult(_0x2cc81a,null))[_0xdd0e('0x43')](handleError(_0x2cc81a,null));};exports['update']=function(_0x56c4ff,_0x5352a6){if(_0x56c4ff[_0xdd0e('0x47')]['id']){delete _0x56c4ff[_0xdd0e('0x47')]['id'];}return db[_0xdd0e('0x2b')]['find']({'where':{'id':_0x56c4ff['params']['id']}})[_0xdd0e('0x41')](handleEntityNotFound(_0x5352a6,null))['then'](saveUpdates(_0x56c4ff[_0xdd0e('0x47')],null))[_0xdd0e('0x41')](respondWithResult(_0x5352a6,null))['catch'](handleError(_0x5352a6,null));};exports[_0xdd0e('0x48')]=function(_0x2c1269,_0x4a4ebc){return db[_0xdd0e('0x2b')][_0xdd0e('0x46')]({'where':{'id':_0x2c1269[_0xdd0e('0x45')]['id']}})[_0xdd0e('0x41')](handleEntityNotFound(_0x4a4ebc,null))[_0xdd0e('0x41')](removeEntity(_0x4a4ebc,null))[_0xdd0e('0x43')](handleError(_0x4a4ebc,null));};exports['create']=function(_0xad694a,_0x216f90){var _0xe88fcb;return db[_0xdd0e('0x49')][_0xdd0e('0x4a')](function(_0x45613c){return db[_0xdd0e('0x2b')][_0xdd0e('0x4b')](_0xad694a[_0xdd0e('0x47')],{'transaction':_0x45613c})[_0xdd0e('0x41')](function(_0x5ea8c1){_0xe88fcb=_0x5ea8c1;var _0x1b8365={'type':db[_0xdd0e('0x4c')][_0xdd0e('0x4d')],'transaction':_0x45613c};switch(_0xad694a['body']['type']){case _0xdd0e('0x4e'):_0x1b8365[_0xdd0e('0x2d')]=db[_0xdd0e('0x4c')][_0xdd0e('0x4d')];break;case _0xdd0e('0x4f'):_0x1b8365[_0xdd0e('0x2d')]=db['Sequelize'][_0xdd0e('0x50')];break;case'switch':_0x1b8365[_0xdd0e('0x2d')]=db[_0xdd0e('0x4c')]['BOOLEAN'];_0x1b8365[_0xdd0e('0x51')]=![];break;default:}return db[_0xdd0e('0x49')][_0xdd0e('0x52')][_0xdd0e('0x53')]('cm_contacts',util[_0xdd0e('0x54')](_0xdd0e('0x55'),_0xe88fcb['id']),_0x1b8365);})['then'](function(){return _0xe88fcb;});})[_0xdd0e('0x41')](respondWithResult(_0x216f90,0xc9))[_0xdd0e('0x43')](handleError(_0x216f90,null));};
\ No newline at end of file
+var _0xe8ea=['stack','name','send','map','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','intersection','attributes','fields','length','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','CmCustomField','findAll','catch','show','params','body','find','create','sequelize','transaction','Sequelize','TEXT','text','number','switch','BOOLEAN','defaultValue','addColumn','cm_contacts','format','cf_%d','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','fs-extra','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy'];(function(_0x1b31a5,_0x9e6d65){var _0x22f087=function(_0x3c18d8){while(--_0x3c18d8){_0x1b31a5['push'](_0x1b31a5['shift']());}};_0x22f087(++_0x9e6d65);}(_0xe8ea,0x18b));var _0xae8e=function(_0x38ad1d,_0x5de6a9){_0x38ad1d=_0x38ad1d-0x0;var _0x510890=_0xe8ea[_0x38ad1d];return _0x510890;};'use strict';var emlformat=require(_0xae8e('0x0'));var rimraf=require(_0xae8e('0x1'));var zipdir=require(_0xae8e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xae8e('0x3'));var moment=require(_0xae8e('0x4'));var BPromise=require(_0xae8e('0x5'));var Mustache=require(_0xae8e('0x6'));var util=require('util');var path=require(_0xae8e('0x7'));var sox=require(_0xae8e('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xae8e('0x9'));var _=require(_0xae8e('0xa'));var squel=require(_0xae8e('0xb'));var crypto=require(_0xae8e('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xae8e('0xd'));var toCsv=require(_0xae8e('0xe'));var querystring=require(_0xae8e('0xf'));var Papa=require('papaparse');var Redis=require(_0xae8e('0x10'));var authService=require(_0xae8e('0x11'));var qs=require(_0xae8e('0x12'));var as=require(_0xae8e('0x13'));var hardwareService=require(_0xae8e('0x14'));var logger=require(_0xae8e('0x15'))(_0xae8e('0x16'));var utils=require('../../config/utils');var config=require(_0xae8e('0x17'));var licenseUtil=require(_0xae8e('0x18'));var db=require(_0xae8e('0x19'))['db'];function respondWithStatusCode(_0x284108,_0x1804b2){_0x1804b2=_0x1804b2||0xcc;return function(_0x1d5158){if(_0x1d5158){return _0x284108[_0xae8e('0x1a')](_0x1804b2);}return _0x284108[_0xae8e('0x1b')](_0x1804b2)[_0xae8e('0x1c')]();};}function respondWithResult(_0x538ae0,_0x3cf44b){_0x3cf44b=_0x3cf44b||0xc8;return function(_0x324e44){if(_0x324e44){return _0x538ae0[_0xae8e('0x1b')](_0x3cf44b)['json'](_0x324e44);}};}function respondWithFilteredResult(_0x5235b2,_0x3c956f){return function(_0x5b8a37){if(_0x5b8a37){var _0x365f5c=typeof _0x3c956f[_0xae8e('0x1d')]==='undefined'&&typeof _0x3c956f[_0xae8e('0x1e')]===_0xae8e('0x1f');var _0x580ec3=_0x5b8a37[_0xae8e('0x20')];var _0x43986d=_0x365f5c?0x0:_0x3c956f['offset'];var _0x4f31f8=_0x365f5c?_0x5b8a37[_0xae8e('0x20')]:_0x3c956f[_0xae8e('0x1d')]+_0x3c956f[_0xae8e('0x1e')];var _0x9fa106;if(_0x4f31f8>=_0x580ec3){_0x4f31f8=_0x580ec3;_0x9fa106=0xc8;}else{_0x9fa106=0xce;}_0x5235b2[_0xae8e('0x1b')](_0x9fa106);return _0x5235b2[_0xae8e('0x21')]('Content-Range',_0x43986d+'-'+_0x4f31f8+'/'+_0x580ec3)['json'](_0x5b8a37);}return null;};}function patchUpdates(_0x5648e7){return function(_0x3294c2){try{jsonpatch[_0xae8e('0x22')](_0x3294c2,_0x5648e7,!![]);}catch(_0x79b56){return BPromise[_0xae8e('0x23')](_0x79b56);}return _0x3294c2[_0xae8e('0x24')]();};}function saveUpdates(_0x441335,_0x275497){return function(_0x5d3ad1){if(_0x5d3ad1){return _0x5d3ad1[_0xae8e('0x25')](_0x441335)[_0xae8e('0x26')](function(_0x519494){return _0x519494;});}return null;};}function removeEntity(_0x5cb616,_0x58f5e1){return function(_0x24f5c2){if(_0x24f5c2){return _0x24f5c2[_0xae8e('0x27')]()['then'](function(){_0x5cb616['status'](0xcc)[_0xae8e('0x1c')]();});}};}function handleEntityNotFound(_0x33d66b,_0x312d7a){return function(_0x58036c){if(!_0x58036c){_0x33d66b['sendStatus'](0x194);}return _0x58036c;};}function handleError(_0x26fccc,_0x1b509a){_0x1b509a=_0x1b509a||0x1f4;return function(_0x2bd031){logger['error'](_0x2bd031[_0xae8e('0x28')]);if(_0x2bd031['name']){delete _0x2bd031[_0xae8e('0x29')];}_0x26fccc[_0xae8e('0x1b')](_0x1b509a)[_0xae8e('0x2a')](_0x2bd031);};}exports['index']=function(_0x3beed7,_0x30d440){var _0x558c7e={},_0x18592={},_0x1a7ba1={'count':0x0,'rows':[]};var _0x1ac0c5=_[_0xae8e('0x2b')](db['CmCustomField'][_0xae8e('0x2c')],function(_0x4c79fb){return{'name':_0x4c79fb[_0xae8e('0x2d')],'type':_0x4c79fb[_0xae8e('0x2e')][_0xae8e('0x2f')]};});_0x18592[_0xae8e('0x30')]=_[_0xae8e('0x31')](_[_0xae8e('0x2b')](_0x1ac0c5,_0xae8e('0x29')),['name']);_0x18592[_0xae8e('0x32')]=_[_0xae8e('0x33')](_0x3beed7[_0xae8e('0x32')]);_0x18592['filters']=_[_0xae8e('0x34')](_0x18592[_0xae8e('0x30')],_0x18592['query']);_0x558c7e[_0xae8e('0x35')]=_[_0xae8e('0x34')](_0x18592[_0xae8e('0x30')],qs[_0xae8e('0x36')](_0x3beed7[_0xae8e('0x32')][_0xae8e('0x36')]));_0x558c7e[_0xae8e('0x35')]=_0x558c7e['attributes'][_0xae8e('0x37')]?_0x558c7e[_0xae8e('0x35')]:_0x18592[_0xae8e('0x30')];if(!_0x3beed7[_0xae8e('0x32')]['hasOwnProperty'](_0xae8e('0x38'))){_0x558c7e[_0xae8e('0x1e')]=qs[_0xae8e('0x1e')](_0x3beed7['query'][_0xae8e('0x1e')]);_0x558c7e[_0xae8e('0x1d')]=qs[_0xae8e('0x1d')](_0x3beed7['query'][_0xae8e('0x1d')]);}_0x558c7e['order']=qs[_0xae8e('0x39')](_0x3beed7[_0xae8e('0x32')]['sort']);_0x558c7e[_0xae8e('0x3a')]=qs[_0xae8e('0x3b')](_['pick'](_0x3beed7['query'],_0x18592[_0xae8e('0x3b')]),_0x1ac0c5);if(_0x3beed7[_0xae8e('0x32')][_0xae8e('0x3c')]){_0x558c7e[_0xae8e('0x3a')]=_[_0xae8e('0x3d')](_0x558c7e[_0xae8e('0x3a')],{'$or':_[_0xae8e('0x2b')](_0x1ac0c5,function(_0x2021d2){if(_0x2021d2['type']!==_0xae8e('0x3e')){var _0x77f6f5={};_0x77f6f5[_0x2021d2[_0xae8e('0x29')]]={'$like':'%'+_0x3beed7[_0xae8e('0x32')]['filter']+'%'};return _0x77f6f5;}})});}_0x558c7e=_['merge']({},_0x558c7e,_0x3beed7[_0xae8e('0x3f')]);var _0x4fa139={'where':_0x558c7e[_0xae8e('0x3a')]};return db['CmCustomField']['count'](_0x4fa139)[_0xae8e('0x26')](function(_0x4fa7d0){_0x1a7ba1[_0xae8e('0x20')]=_0x4fa7d0;if(_0x3beed7[_0xae8e('0x32')][_0xae8e('0x40')]){_0x558c7e[_0xae8e('0x41')]=[{'all':!![]}];}return db[_0xae8e('0x42')][_0xae8e('0x43')](_0x558c7e);})[_0xae8e('0x26')](function(_0xb97bbd){_0x1a7ba1['rows']=_0xb97bbd;return _0x1a7ba1;})[_0xae8e('0x26')](respondWithFilteredResult(_0x30d440,_0x558c7e))[_0xae8e('0x44')](handleError(_0x30d440,null));};exports[_0xae8e('0x45')]=function(_0x5dea79,_0x595aa2){var _0x139514={'raw':!![],'where':{'id':_0x5dea79[_0xae8e('0x46')]['id']}},_0x3a9bd3={};_0x3a9bd3[_0xae8e('0x30')]=_[_0xae8e('0x33')](db[_0xae8e('0x42')]['rawAttributes']);_0x3a9bd3[_0xae8e('0x32')]=_['keys'](_0x5dea79[_0xae8e('0x32')]);_0x3a9bd3['filters']=_['intersection'](_0x3a9bd3[_0xae8e('0x30')],_0x3a9bd3['query']);_0x139514[_0xae8e('0x35')]=_[_0xae8e('0x34')](_0x3a9bd3[_0xae8e('0x30')],qs[_0xae8e('0x36')](_0x5dea79['query'][_0xae8e('0x36')]));_0x139514['attributes']=_0x139514[_0xae8e('0x35')]['length']?_0x139514['attributes']:_0x3a9bd3[_0xae8e('0x30')];if(_0x5dea79[_0xae8e('0x32')]['includeAll']){_0x139514['include']=[{'all':!![]}];}_0x139514=_[_0xae8e('0x3d')]({},_0x139514,_0x5dea79['options']);return db['CmCustomField']['find'](_0x139514)['then'](handleEntityNotFound(_0x595aa2,null))[_0xae8e('0x26')](respondWithResult(_0x595aa2,null))['catch'](handleError(_0x595aa2,null));};exports[_0xae8e('0x25')]=function(_0x1f41f4,_0x57bdaa){if(_0x1f41f4[_0xae8e('0x47')]['id']){delete _0x1f41f4[_0xae8e('0x47')]['id'];}return db['CmCustomField'][_0xae8e('0x48')]({'where':{'id':_0x1f41f4[_0xae8e('0x46')]['id']}})[_0xae8e('0x26')](handleEntityNotFound(_0x57bdaa,null))['then'](saveUpdates(_0x1f41f4['body'],null))[_0xae8e('0x26')](respondWithResult(_0x57bdaa,null))['catch'](handleError(_0x57bdaa,null));};exports[_0xae8e('0x27')]=function(_0x45fc57,_0x24c1fc){return db[_0xae8e('0x42')]['find']({'where':{'id':_0x45fc57['params']['id']}})[_0xae8e('0x26')](handleEntityNotFound(_0x24c1fc,null))[_0xae8e('0x26')](removeEntity(_0x24c1fc,null))['catch'](handleError(_0x24c1fc,null));};exports[_0xae8e('0x49')]=function(_0x278796,_0x68862a){var _0xb96be3;return db[_0xae8e('0x4a')][_0xae8e('0x4b')](function(_0x77e9d1){return db[_0xae8e('0x42')]['create'](_0x278796[_0xae8e('0x47')],{'transaction':_0x77e9d1})[_0xae8e('0x26')](function(_0x1627be){_0xb96be3=_0x1627be;var _0x3aded2={'type':db[_0xae8e('0x4c')][_0xae8e('0x4d')],'transaction':_0x77e9d1};switch(_0x278796[_0xae8e('0x47')][_0xae8e('0x2e')]){case _0xae8e('0x4e'):_0x3aded2[_0xae8e('0x2e')]=db[_0xae8e('0x4c')][_0xae8e('0x4d')];break;case _0xae8e('0x4f'):_0x3aded2[_0xae8e('0x2e')]=db[_0xae8e('0x4c')]['INTEGER'];break;case _0xae8e('0x50'):_0x3aded2[_0xae8e('0x2e')]=db[_0xae8e('0x4c')][_0xae8e('0x51')];_0x3aded2[_0xae8e('0x52')]=![];break;default:}return db['sequelize']['queryInterface'][_0xae8e('0x53')](_0xae8e('0x54'),util[_0xae8e('0x55')](_0xae8e('0x56'),_0xb96be3['id']),_0x3aded2);})[_0xae8e('0x26')](function(){return _0xb96be3;});})[_0xae8e('0x26')](respondWithResult(_0x68862a,0xc9))[_0xae8e('0x44')](handleError(_0x68862a,null));};
\ No newline at end of file
index bd9ef70..713b93e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca13=['path','rimraf','./cmCustomField.attributes','exports','define','lodash','../../config/logger','moment','bluebird','request-promise'];(function(_0x3d618b,_0x33dfaf){var _0xead08f=function(_0x44e09e){while(--_0x44e09e){_0x3d618b['push'](_0x3d618b['shift']());}};_0xead08f(++_0x33dfaf);}(_0xca13,0x163));var _0x3ca1=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xca13[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x3ca1('0x0'));var util=require('util');var logger=require(_0x3ca1('0x1'))('api');var moment=require(_0x3ca1('0x2'));var BPromise=require(_0x3ca1('0x3'));var rp=require(_0x3ca1('0x4'));var fs=require('fs');var path=require(_0x3ca1('0x5'));var rimraf=require(_0x3ca1('0x6'));var config=require('../../config/environment');var attributes=require(_0x3ca1('0x7'));module[_0x3ca1('0x8')]=function(_0x23253a,_0x3411f0){return _0x23253a[_0x3ca1('0x9')]('CmCustomField',attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x41ef=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','CmCustomField','cm_custom_fields','util'];(function(_0x141486,_0x58ed56){var _0x1b5fb9=function(_0x273fc0){while(--_0x273fc0){_0x141486['push'](_0x141486['shift']());}};_0x1b5fb9(++_0x58ed56);}(_0x41ef,0x1b7));var _0xf41e=function(_0x362c86,_0x7b231f){_0x362c86=_0x362c86-0x0;var _0x220195=_0x41ef[_0x362c86];return _0x220195;};'use strict';var _=require('lodash');var util=require(_0xf41e('0x0'));var logger=require(_0xf41e('0x1'))(_0xf41e('0x2'));var moment=require(_0xf41e('0x3'));var BPromise=require('bluebird');var rp=require(_0xf41e('0x4'));var fs=require('fs');var path=require(_0xf41e('0x5'));var rimraf=require(_0xf41e('0x6'));var config=require(_0xf41e('0x7'));var attributes=require('./cmCustomField.attributes');module[_0xf41e('0x8')]=function(_0x4d2def,_0x4b3011){return _0x4d2def['define'](_0xf41e('0x9'),attributes,{'tableName':_0xf41e('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e6718f7..63b4a4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3863=['../../config/logger','rpc','../../config/environment','client','request','then','info','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','CmCustomField,\x20%s,\x20%s','message','lodash','moment','randomstring','../../config/utils'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3863,0xfb));var _0x3386=function(_0x3d8f0a,_0x26ce62){_0x3d8f0a=_0x3d8f0a-0x0;var _0x14d74b=_0x3863[_0x3d8f0a];return _0x14d74b;};'use strict';var _=require(_0x3386('0x0'));var util=require('util');var moment=require(_0x3386('0x1'));var BPromise=require('bluebird');var rs=require(_0x3386('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3386('0x3'));var logger=require(_0x3386('0x4'))(_0x3386('0x5'));var config=require(_0x3386('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x3386('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x17ece7,_0x22f7ef,_0xa163ed){return new BPromise(function(_0x11f735,_0x14a99e){return client[_0x3386('0x8')](_0x17ece7,_0xa163ed)[_0x3386('0x9')](function(_0x146548){logger[_0x3386('0xa')]('CmCustomField,\x20%s,\x20%s',_0x22f7ef,'request\x20sent');logger['debug'](_0x3386('0xb'),_0x22f7ef,'request\x20sent',JSON[_0x3386('0xc')](_0x146548));if(_0x146548[_0x3386('0xd')]){if(_0x146548[_0x3386('0xd')][_0x3386('0xe')]===0x1f4){logger[_0x3386('0xd')](_0x3386('0xf'),_0x22f7ef,_0x146548[_0x3386('0xd')]['message']);return _0x14a99e(_0x146548['error'][_0x3386('0x10')]);}logger[_0x3386('0xd')](_0x3386('0xf'),_0x22f7ef,_0x146548[_0x3386('0xd')][_0x3386('0x10')]);return _0x11f735(_0x146548[_0x3386('0xd')][_0x3386('0x10')]);}else{logger[_0x3386('0xa')](_0x3386('0xf'),_0x22f7ef,'request\x20sent');_0x11f735(_0x146548['result'][_0x3386('0x10')]);}})['catch'](function(_0x3ac625){logger[_0x3386('0xd')](_0x3386('0xf'),_0x22f7ef,_0x3ac625);_0x14a99e(_0x3ac625);});});}
\ No newline at end of file
+var _0xd508=['stringify','error','code','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s'];(function(_0x166d93,_0x301f09){var _0xba708=function(_0x349bf7){while(--_0x349bf7){_0x166d93['push'](_0x166d93['shift']());}};_0xba708(++_0x301f09);}(_0xd508,0x133));var _0x8d50=function(_0x60dad1,_0x44a161){_0x60dad1=_0x60dad1-0x0;var _0x512282=_0xd508[_0x60dad1];return _0x512282;};'use strict';var _=require('lodash');var util=require(_0x8d50('0x0'));var moment=require(_0x8d50('0x1'));var BPromise=require(_0x8d50('0x2'));var rs=require(_0x8d50('0x3'));var fs=require('fs');var Redis=require(_0x8d50('0x4'));var db=require(_0x8d50('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8d50('0x6'))(_0x8d50('0x7'));var config=require(_0x8d50('0x8'));var jayson=require(_0x8d50('0x9'));var client=jayson[_0x8d50('0xa')][_0x8d50('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5a285d,_0x5a7228,_0x22b2e1){return new BPromise(function(_0x3a7679,_0x263cce){return client[_0x8d50('0xc')](_0x5a285d,_0x22b2e1)[_0x8d50('0xd')](function(_0x3747e0){logger['info'](_0x8d50('0xe'),_0x5a7228,_0x8d50('0xf'));logger[_0x8d50('0x10')](_0x8d50('0x11'),_0x5a7228,_0x8d50('0xf'),JSON[_0x8d50('0x12')](_0x3747e0));if(_0x3747e0[_0x8d50('0x13')]){if(_0x3747e0['error'][_0x8d50('0x14')]===0x1f4){logger[_0x8d50('0x13')](_0x8d50('0xe'),_0x5a7228,_0x3747e0[_0x8d50('0x13')][_0x8d50('0x15')]);return _0x263cce(_0x3747e0[_0x8d50('0x13')][_0x8d50('0x15')]);}logger[_0x8d50('0x13')](_0x8d50('0xe'),_0x5a7228,_0x3747e0[_0x8d50('0x13')][_0x8d50('0x15')]);return _0x3a7679(_0x3747e0['error']['message']);}else{logger[_0x8d50('0x16')]('CmCustomField,\x20%s,\x20%s',_0x5a7228,'request\x20sent');_0x3a7679(_0x3747e0[_0x8d50('0x17')][_0x8d50('0x15')]);}})[_0x8d50('0x18')](function(_0x359324){logger[_0x8d50('0x13')](_0x8d50('0xe'),_0x5a7228,_0x359324);_0x263cce(_0x359324);});});}
\ No newline at end of file
index 6208084..7cffa71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97ed=['index','/:id','post','update','delete','destroy','exports','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCustomField.controller','isAuthenticated'];(function(_0x42d43e,_0x477d42){var _0x49f27e=function(_0x163b83){while(--_0x163b83){_0x42d43e['push'](_0x42d43e['shift']());}};_0x49f27e(++_0x477d42);}(_0x97ed,0x1e7));var _0xd97e=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x97ed[_0x1694f5];return _0x5b4321;};'use strict';var multer=require(_0xd97e('0x0'));var util=require(_0xd97e('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd97e('0x2'));var router=express[_0xd97e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xd97e('0x4'));var interaction=require(_0xd97e('0x5'));var config=require(_0xd97e('0x6'));var controller=require(_0xd97e('0x7'));router['get']('/',auth[_0xd97e('0x8')](),controller[_0xd97e('0x9')]);router['get'](_0xd97e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xd97e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xd97e('0xa'),auth['isAuthenticated'](),controller[_0xd97e('0xc')]);router[_0xd97e('0xd')]('/:id',auth[_0xd97e('0x8')](),controller[_0xd97e('0xe')]);module[_0xd97e('0xf')]=router;
\ No newline at end of file
+var _0x770d=['get','/:id','isAuthenticated','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmCustomField.controller'];(function(_0x2abb0c,_0xbcef8f){var _0x9bf167=function(_0x32eb05){while(--_0x32eb05){_0x2abb0c['push'](_0x2abb0c['shift']());}};_0x9bf167(++_0xbcef8f);}(_0x770d,0x122));var _0xd770=function(_0x5791de,_0x4494c1){_0x5791de=_0x5791de-0x0;var _0x103333=_0x770d[_0x5791de];return _0x103333;};'use strict';var multer=require(_0xd770('0x0'));var util=require(_0xd770('0x1'));var path=require(_0xd770('0x2'));var timeout=require(_0xd770('0x3'));var express=require(_0xd770('0x4'));var router=express[_0xd770('0x5')]();var fs_extra=require(_0xd770('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xd770('0x7'));var config=require(_0xd770('0x8'));var controller=require(_0xd770('0x9'));router[_0xd770('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xd770('0xa')](_0xd770('0xb'),auth[_0xd770('0xc')](),controller[_0xd770('0xd')]);router[_0xd770('0xe')]('/',auth[_0xd770('0xc')](),controller[_0xd770('0xf')]);router['put'](_0xd770('0xb'),auth[_0xd770('0xc')](),controller[_0xd770('0x10')]);router[_0xd770('0x11')](_0xd770('0xb'),auth['isAuthenticated'](),controller[_0xd770('0x12')]);module[_0xd770('0x13')]=router;
\ No newline at end of file
index b7e3cf5..c35a15a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60cf=['format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED','contactListQueue','sequelize','exports','STRING','BOOLEAN','DATE'];(function(_0x4361b6,_0x29e3fe){var _0x477231=function(_0x4c570d){while(--_0x4c570d){_0x4361b6['push'](_0x4361b6['shift']());}};_0x477231(++_0x29e3fe);}(_0x60cf,0x69));var _0xf60c=function(_0x3f54e1,_0x2aac41){_0x3f54e1=_0x3f54e1-0x0;var _0x5a0d29=_0x60cf[_0x3f54e1];return _0x5a0d29;};'use strict';var moment=require('moment');var Sequelize=require(_0xf60c('0x0'));module[_0xf60c('0x1')]={'phone':{'type':Sequelize[_0xf60c('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0xf60c('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0xf60c('0x4')],'defaultValue':moment()[_0xf60c('0x5')](_0xf60c('0x6'))},'countbusyretry':{'type':Sequelize[_0xf60c('0x7')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xf60c('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'priority':{'type':Sequelize['INTEGER'](0x2)[_0xf60c('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0xf60c('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0xf60c('0x9')},'ListId':{'type':Sequelize[_0xf60c('0x7')],'unique':_0xf60c('0x9')},'UserId':{'type':Sequelize[_0xf60c('0x7')]},'VoiceQueueId':{'type':Sequelize[_0xf60c('0x7')],'unique':_0xf60c('0x9')},'CampaignId':{'type':Sequelize[_0xf60c('0x7')]},'countnosuchnumberretry':{'type':Sequelize[_0xf60c('0x7')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xf60c('0x7')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xf60c('0x7')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xf60c('0x7')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9df5=['STRING','BOOLEAN','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED','contactListQueue','moment','sequelize','exports'];(function(_0x295779,_0xc1caab){var _0x2b98a3=function(_0x1b559d){while(--_0x1b559d){_0x295779['push'](_0x295779['shift']());}};_0x2b98a3(++_0xc1caab);}(_0x9df5,0x1b5));var _0x59df=function(_0x1510d8,_0x160648){_0x1510d8=_0x1510d8-0x0;var _0x166891=_0x9df5[_0x1510d8];return _0x166891;};'use strict';var moment=require(_0x59df('0x0'));var Sequelize=require(_0x59df('0x1'));module[_0x59df('0x2')]={'phone':{'type':Sequelize[_0x59df('0x3')],'allowNull':![]},'active':{'type':Sequelize[_0x59df('0x4')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x59df('0x5')],'defaultValue':moment()[_0x59df('0x6')](_0x59df('0x7'))},'countbusyretry':{'type':Sequelize[_0x59df('0x8')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x59df('0x8')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x59df('0x8')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x59df('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x59df('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x59df('0x5')]},'priority':{'type':Sequelize[_0x59df('0x8')](0x2)[_0x59df('0x9')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x59df('0x4')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x59df('0x8')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x59df('0x8')],'unique':'contactListQueue'},'UserId':{'type':Sequelize[_0x59df('0x8')]},'VoiceQueueId':{'type':Sequelize[_0x59df('0x8')],'unique':_0x59df('0xa')},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize[_0x59df('0x8')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x59df('0x8')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x59df('0x8')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x59df('0x8')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 7854d41..fd93a7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2a6=['scheduledAt','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','isEmpty','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','recallme','LOCK','UPDATE','CmCompany','Company','CmList','List','Queue','dialActive','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error','name','send','index','map','CmHopper','type','model','keys','filters','intersection','query','concat','$gt','$lt','$lte','$eq','$not','$between','$notBetween','$notIn','$notLike','$iLike','$notILike','$like','$overlap','$contains','$contained','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','params','include','find','catch','create','body','update','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','updatedAt','state','statedesc','deleted','campaign','membername','user','UserId','deletedat','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','CmHopperFinal','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','sequelize','format','direction','hopperIds','priority'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf2a6,0x13d));var _0x6f2a=function(_0x18672c,_0x1f61a8){_0x18672c=_0x18672c-0x0;var _0x19a0db=_0xf2a6[_0x18672c];return _0x19a0db;};'use strict';var emlformat=require(_0x6f2a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6f2a('0x1'));var moment=require('moment');var BPromise=require(_0x6f2a('0x2'));var Mustache=require(_0x6f2a('0x3'));var util=require(_0x6f2a('0x4'));var path=require(_0x6f2a('0x5'));var sox=require(_0x6f2a('0x6'));var csv=require(_0x6f2a('0x7'));var ejs=require(_0x6f2a('0x8'));var fs=require('fs');var fs_extra=require(_0x6f2a('0x9'));var _=require(_0x6f2a('0xa'));var squel=require(_0x6f2a('0xb'));var crypto=require('crypto');var jsforce=require(_0x6f2a('0xc'));var deskjs=require(_0x6f2a('0xd'));var toCsv=require(_0x6f2a('0x7'));var querystring=require(_0x6f2a('0xe'));var Papa=require('papaparse');var Redis=require(_0x6f2a('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x6f2a('0x10'));var as=require(_0x6f2a('0x11'));var hardwareService=require(_0x6f2a('0x12'));var logger=require('../../config/logger')(_0x6f2a('0x13'));var utils=require('../../config/utils');var config=require(_0x6f2a('0x14'));var licenseUtil=require(_0x6f2a('0x15'));var db=require(_0x6f2a('0x16'))['db'];function respondWithStatusCode(_0x59df4e,_0x46a54f){_0x46a54f=_0x46a54f||0xcc;return function(_0x4f1b32){if(_0x4f1b32){return _0x59df4e[_0x6f2a('0x17')](_0x46a54f);}return _0x59df4e[_0x6f2a('0x18')](_0x46a54f)[_0x6f2a('0x19')]();};}function respondWithResult(_0x421e15,_0xe24075){_0xe24075=_0xe24075||0xc8;return function(_0x5224e6){if(_0x5224e6){return _0x421e15[_0x6f2a('0x18')](_0xe24075)[_0x6f2a('0x1a')](_0x5224e6);}};}function respondWithFilteredResult(_0x27ca04,_0x44b317){return function(_0x1057f2){if(_0x1057f2){var _0x3dfc44=typeof _0x44b317[_0x6f2a('0x1b')]===_0x6f2a('0x1c')&&typeof _0x44b317[_0x6f2a('0x1d')]===_0x6f2a('0x1c');var _0x2aaed5=_0x1057f2[_0x6f2a('0x1e')];var _0x5c408b=_0x3dfc44?0x0:_0x44b317[_0x6f2a('0x1b')];var _0x3171b9=_0x3dfc44?_0x1057f2[_0x6f2a('0x1e')]:_0x44b317[_0x6f2a('0x1b')]+_0x44b317[_0x6f2a('0x1d')];var _0x43602b;if(_0x3171b9>=_0x2aaed5){_0x3171b9=_0x2aaed5;_0x43602b=0xc8;}else{_0x43602b=0xce;}_0x27ca04[_0x6f2a('0x18')](_0x43602b);return _0x27ca04[_0x6f2a('0x1f')](_0x6f2a('0x20'),_0x5c408b+'-'+_0x3171b9+'/'+_0x2aaed5)[_0x6f2a('0x1a')](_0x1057f2);}return null;};}function patchUpdates(_0x33554f){return function(_0x4eca00){try{jsonpatch[_0x6f2a('0x21')](_0x4eca00,_0x33554f,!![]);}catch(_0x20e7ff){return BPromise[_0x6f2a('0x22')](_0x20e7ff);}return _0x4eca00[_0x6f2a('0x23')]();};}function saveUpdates(_0x1da29f,_0x108b8b){return function(_0x28a8c2){if(_0x28a8c2){return _0x28a8c2['update'](_0x1da29f)[_0x6f2a('0x24')](function(_0x590c40){return _0x590c40;});}return null;};}function removeEntity(_0xb7de5a,_0x301aa9){return function(_0x148240){if(_0x148240){return _0x148240['destroy']()[_0x6f2a('0x24')](function(){_0xb7de5a[_0x6f2a('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x55c1bc,_0x1dabde){return function(_0x36c0b7){if(!_0x36c0b7){_0x55c1bc[_0x6f2a('0x17')](0x194);}return _0x36c0b7;};}function handleError(_0xf5105e,_0x6b781b){_0x6b781b=_0x6b781b||0x1f4;return function(_0x5efdda){logger[_0x6f2a('0x25')](_0x5efdda['stack']);if(_0x5efdda[_0x6f2a('0x26')]){delete _0x5efdda[_0x6f2a('0x26')];}_0xf5105e['status'](_0x6b781b)[_0x6f2a('0x27')](_0x5efdda);};}exports[_0x6f2a('0x28')]=function(_0x498d7e,_0x4035d8){var _0x1ca729={},_0x28d546={},_0x39a911={'count':0x0,'rows':[]};var _0x347767=_[_0x6f2a('0x29')](db[_0x6f2a('0x2a')]['rawAttributes'],function(_0xb0f466){return{'name':_0xb0f466['fieldName'],'type':_0xb0f466[_0x6f2a('0x2b')]['key']};});_0x28d546[_0x6f2a('0x2c')]=_[_0x6f2a('0x29')](_0x347767,_0x6f2a('0x26'));_0x28d546['query']=_[_0x6f2a('0x2d')](_0x498d7e['query']);_0x28d546[_0x6f2a('0x2e')]=_[_0x6f2a('0x2f')](_0x28d546['model'],_0x28d546[_0x6f2a('0x30')]);_0x28d546[_0x6f2a('0x2e')]=_[_0x6f2a('0x31')](_0x28d546['filters'],['$and','$or',_0x6f2a('0x32'),'$gte',_0x6f2a('0x33'),_0x6f2a('0x34'),'$ne',_0x6f2a('0x35'),_0x6f2a('0x36'),_0x6f2a('0x37'),_0x6f2a('0x38'),'$in',_0x6f2a('0x39'),'$like',_0x6f2a('0x3a'),_0x6f2a('0x3b'),_0x6f2a('0x3c'),_0x6f2a('0x3d'),_0x6f2a('0x3e'),_0x6f2a('0x3f'),_0x6f2a('0x40'),'$any']);_0x1ca729[_0x6f2a('0x41')]=_[_0x6f2a('0x2f')](_0x28d546[_0x6f2a('0x2c')],qs[_0x6f2a('0x42')](_0x498d7e[_0x6f2a('0x30')][_0x6f2a('0x42')]));_0x1ca729[_0x6f2a('0x41')]=_0x1ca729[_0x6f2a('0x41')][_0x6f2a('0x43')]?_0x1ca729[_0x6f2a('0x41')]:_0x28d546[_0x6f2a('0x2c')];if(!_0x498d7e['query'][_0x6f2a('0x44')](_0x6f2a('0x45'))){_0x1ca729[_0x6f2a('0x1d')]=qs['limit'](_0x498d7e[_0x6f2a('0x30')][_0x6f2a('0x1d')]);_0x1ca729[_0x6f2a('0x1b')]=qs[_0x6f2a('0x1b')](_0x498d7e[_0x6f2a('0x30')][_0x6f2a('0x1b')]);}_0x1ca729[_0x6f2a('0x46')]=qs[_0x6f2a('0x47')](_0x498d7e[_0x6f2a('0x30')][_0x6f2a('0x47')]);_0x1ca729[_0x6f2a('0x48')]=qs['filters'](_[_0x6f2a('0x49')](_0x498d7e[_0x6f2a('0x30')],_0x28d546[_0x6f2a('0x2e')]),_0x347767);if(_0x498d7e['query'][_0x6f2a('0x4a')]){_0x1ca729[_0x6f2a('0x48')]=_[_0x6f2a('0x4b')](_0x1ca729[_0x6f2a('0x48')],{'$or':_[_0x6f2a('0x29')](_0x347767,function(_0x2c5fbb){if(_0x2c5fbb[_0x6f2a('0x2b')]!==_0x6f2a('0x4c')){var _0x4accaf={};_0x4accaf[_0x2c5fbb[_0x6f2a('0x26')]]={'$like':'%'+_0x498d7e['query']['filter']+'%'};return _0x4accaf;}})});}_0x1ca729=_[_0x6f2a('0x4b')]({},_0x1ca729,_0x498d7e[_0x6f2a('0x4d')]);var _0x27dac7={'where':_0x1ca729[_0x6f2a('0x48')]};return db['CmHopper'][_0x6f2a('0x1e')](_0x27dac7)[_0x6f2a('0x24')](function(_0x34aef2){_0x39a911[_0x6f2a('0x1e')]=_0x34aef2;if(_0x498d7e[_0x6f2a('0x30')][_0x6f2a('0x4e')]){_0x1ca729['include']=[{'all':!![]}];}return db[_0x6f2a('0x2a')][_0x6f2a('0x4f')](_0x1ca729);})[_0x6f2a('0x24')](function(_0x40febf){_0x39a911[_0x6f2a('0x50')]=_0x40febf;return _0x39a911;})[_0x6f2a('0x24')](respondWithFilteredResult(_0x4035d8,_0x1ca729))['catch'](handleError(_0x4035d8,null));};exports['show']=function(_0x26fa98,_0x48f821){var _0x4130ef={'raw':!![],'where':{'id':_0x26fa98[_0x6f2a('0x51')]['id']}},_0x4c0a9f={};_0x4c0a9f[_0x6f2a('0x2c')]=_['keys'](db['CmHopper']['rawAttributes']);_0x4c0a9f[_0x6f2a('0x30')]=_['keys'](_0x26fa98['query']);_0x4c0a9f[_0x6f2a('0x2e')]=_[_0x6f2a('0x2f')](_0x4c0a9f[_0x6f2a('0x2c')],_0x4c0a9f[_0x6f2a('0x30')]);_0x4130ef['attributes']=_[_0x6f2a('0x2f')](_0x4c0a9f[_0x6f2a('0x2c')],qs[_0x6f2a('0x42')](_0x26fa98[_0x6f2a('0x30')][_0x6f2a('0x42')]));_0x4130ef[_0x6f2a('0x41')]=_0x4130ef['attributes'][_0x6f2a('0x43')]?_0x4130ef[_0x6f2a('0x41')]:_0x4c0a9f[_0x6f2a('0x2c')];if(_0x26fa98[_0x6f2a('0x30')][_0x6f2a('0x4e')]){_0x4130ef[_0x6f2a('0x52')]=[{'all':!![]}];}_0x4130ef=_['merge']({},_0x4130ef,_0x26fa98[_0x6f2a('0x4d')]);return db[_0x6f2a('0x2a')][_0x6f2a('0x53')](_0x4130ef)['then'](handleEntityNotFound(_0x48f821,null))['then'](respondWithResult(_0x48f821,null))[_0x6f2a('0x54')](handleError(_0x48f821,null));};exports[_0x6f2a('0x55')]=function(_0x2278ea,_0x26aff2){return db[_0x6f2a('0x2a')][_0x6f2a('0x55')](_0x2278ea[_0x6f2a('0x56')],{})[_0x6f2a('0x24')](respondWithResult(_0x26aff2,0xc9))[_0x6f2a('0x54')](handleError(_0x26aff2,null));};exports[_0x6f2a('0x57')]=function(_0x21f771,_0x1d1961){if(_0x21f771[_0x6f2a('0x56')]['id']){delete _0x21f771['body']['id'];}return db[_0x6f2a('0x2a')]['find']({'where':{'id':_0x21f771[_0x6f2a('0x51')]['id']}})['then'](handleEntityNotFound(_0x1d1961,null))[_0x6f2a('0x24')](saveUpdates(_0x21f771['body'],null))[_0x6f2a('0x24')](respondWithResult(_0x1d1961,null))[_0x6f2a('0x54')](handleError(_0x1d1961,null));};exports[_0x6f2a('0x58')]=function(_0x4a89a3,_0x45cb40){return db['CmHopper'][_0x6f2a('0x58')]()['then'](respondWithResult(_0x45cb40,null))['catch'](handleError(_0x45cb40,null));};exports[_0x6f2a('0x59')]=function(_0x3a213c,_0x1a5afb){var _0x33468e;return db[_0x6f2a('0x2a')][_0x6f2a('0x53')]({'where':{'id':_0x3a213c[_0x6f2a('0x51')]['id']}})['then'](handleEntityNotFound(_0x1a5afb,null))[_0x6f2a('0x24')](function(_0xe34f5c){if(_0xe34f5c){return _0xe34f5c[_0x6f2a('0x59')]()[_0x6f2a('0x24')](function(_0xc108ba){return _0xc108ba;});}})[_0x6f2a('0x24')](function(_0x242361){_0x33468e=_0x242361;if(_0x242361){if(_0x242361[_0x6f2a('0x5a')]||_0x242361[_0x6f2a('0x5b')]){return db[_0x242361[_0x6f2a('0x5a')]?_0x6f2a('0x5c'):_0x6f2a('0x5d')][_0x6f2a('0x53')]({'where':{'id':_0x242361['VoiceQueueId']?_0x242361[_0x6f2a('0x5a')]:_0x242361[_0x6f2a('0x5b')]},'attributes':['id',_0x6f2a('0x26')],'raw':!![]});}}})[_0x6f2a('0x24')](function(_0xe71f6a){var _0x307355={};if(_0xe71f6a){_[_0x6f2a('0x4b')](_0x307355,_[_0x6f2a('0x5e')](_0x33468e[_0x6f2a('0x5f')],['createdAt',_0x6f2a('0x60'),'id']));_0x307355[_0x6f2a('0x61')]=0x15;_0x307355[_0x6f2a('0x62')]=_0x6f2a('0x63');_0x307355[_0x6f2a('0x64')]=_0xe71f6a[_0x6f2a('0x26')];_0x307355[_0x6f2a('0x65')]=_0x3a213c[_0x6f2a('0x66')][_0x6f2a('0x26')];_0x307355[_0x6f2a('0x67')]=_0x3a213c['user']['id'];_0x307355[_0x6f2a('0x63')]=!![];_0x307355[_0x6f2a('0x68')]=moment()['format'](_0x6f2a('0x69'));_0x307355[_0x6f2a('0x6a')]=_0x33468e[_0x6f2a('0x6b')];_0x307355[_0x6f2a('0x6c')]=_0x33468e['VoiceQueueId']?'queue':_0x6f2a('0x6d');return db[_0x6f2a('0x6e')]['find']({'where':{'id':_0x307355[_0x6f2a('0x6f')]},'attributes':[_0x6f2a('0x70'),_0x6f2a('0x71')]})[_0x6f2a('0x24')](function(_0x564517){if(!_[_0x6f2a('0x72')](_0x1a5afb)&&!_[_0x6f2a('0x72')](_0x564517[_0x6f2a('0x70')])){_0x307355[_0x6f2a('0x73')]=_0x564517[_0x6f2a('0x70')];if(!_[_0x6f2a('0x72')](_0x564517[_0x6f2a('0x71')])){_0x307355[_0x6f2a('0x73')]+='\x20'+_0x564517[_0x6f2a('0x71')];}}})['finally'](function(){return db[_0x6f2a('0x74')][_0x6f2a('0x55')](_0x307355);});}})[_0x6f2a('0x24')](function(){return _0x1a5afb[_0x6f2a('0x18')](0xcc)[_0x6f2a('0x19')]();})[_0x6f2a('0x54')](handleError(_0x1a5afb,null));};exports[_0x6f2a('0x75')]=function(_0x2a8d40,_0x3fe6e3,_0x3f21d7){var _0x8f8d32=[];return db[_0x6f2a('0x6e')][_0x6f2a('0x58')]()[_0x6f2a('0x24')](function(_0x3d9972){_0x8f8d32=_[_0x6f2a('0x2d')](_0x3d9972);return _0x2a8d40[_0x6f2a('0x66')][_0x6f2a('0x76')]({'where':{'type':_0x6f2a('0x77'),'dialActive':!![],'dialMethod':_0x6f2a('0x78')},'attributes':['id',_0x6f2a('0x79'),'dialPreviewAutoRecallMe'],'raw':!![]});})[_0x6f2a('0x24')](function(_0x58c1a4){if(_0x58c1a4&&_0x58c1a4[_0x6f2a('0x43')]){return db[_0x6f2a('0x7a')]['transaction'](function(_0xc8393b){var _0x16bca1={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x6f2a('0x7b')](_0x6f2a('0x69'))},'VoiceQueueId':{'$in':_[_0x6f2a('0x29')](_0x58c1a4,'id')},'$or':[{'UserId':null},{'UserId':_0x2a8d40['user']['id']}]};var _0x2ab57e={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x58c1a4)[_0x6f2a('0x4a')](['dialPreviewAutoRecallMe',0x0])[_0x6f2a('0x29')]('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x2a8d40[_0x6f2a('0x66')]['id']}]};var _0x1c7d11={'$or':[_0x16bca1,_0x2ab57e]};var _0x5a275f=[];if(_0x2a8d40[_0x6f2a('0x56')][_0x6f2a('0x7c')]&&_0x2a8d40['body']['direction']==='prev'){if(!_['isEmpty'](_0x2a8d40['body'][_0x6f2a('0x7d')])){_0x1c7d11['id']={'$in':_0x2a8d40['body'][_0x6f2a('0x7d')]};}_0x5a275f=[[_0x6f2a('0x7e'),'ASC'],[_0x6f2a('0x7f'),_0x58c1a4[0x0][_0x6f2a('0x79')]===_0x6f2a('0x80')?_0x6f2a('0x81'):'ASC'],db[_0x6f2a('0x7a')][_0x6f2a('0x82')](_0x6f2a('0x83')),['id',_0x6f2a('0x81')]];}else{if(!_[_0x6f2a('0x84')](_0x2a8d40[_0x6f2a('0x56')]['hopperIds'])){_0x1c7d11['id']={'$notIn':_0x2a8d40[_0x6f2a('0x56')][_0x6f2a('0x7d')]};}_0x5a275f=[[_0x6f2a('0x7e'),'DESC'],['scheduledAt',_0x58c1a4[0x0][_0x6f2a('0x79')]],db[_0x6f2a('0x7a')][_0x6f2a('0x82')](_0x6f2a('0x85')),['id',_0x6f2a('0x80')]];}return db['CmHopper'][_0x6f2a('0x86')]({'attributes':['id','scheduledat',_0x6f2a('0x87')],'where':_0x1c7d11,'order':_0x5a275f,'transaction':_0xc8393b,'lock':_0xc8393b[_0x6f2a('0x88')][_0x6f2a('0x89')],'include':[{'model':db['CmContact'],'as':'Contact','attributes':_0x8f8d32,'include':[{'model':db[_0x6f2a('0x8a')],'as':_0x6f2a('0x8b'),'attributes':['id','name']}]},{'model':db[_0x6f2a('0x8c')],'as':_0x6f2a('0x8d'),'attributes':['id',_0x6f2a('0x26')]},{'model':db[_0x6f2a('0x5c')],'as':_0x6f2a('0x8e'),'attributes':['id',_0x6f2a('0x26'),_0x6f2a('0x8f')]}]})[_0x6f2a('0x24')](function(_0x5e8dfd){if(_0x5e8dfd){return _0x5e8dfd[_0x6f2a('0x57')]({'UserId':_0x2a8d40[_0x6f2a('0x66')]['id']},{'transaction':_0xc8393b});}});});}})['then'](handleEntityNotFound(_0x3fe6e3,null))[_0x6f2a('0x24')](respondWithResult(_0x3fe6e3,null))['catch'](handleError(_0x3fe6e3,null));};exports[_0x6f2a('0x90')]=function(_0x381d47,_0x172487,_0xa09c5c){return _0x381d47[_0x6f2a('0x66')]['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x6f2a('0x78')},'attributes':['id'],'raw':!![]})[_0x6f2a('0x24')](function(_0x360063){if(_0x360063&&_0x360063[_0x6f2a('0x43')]){return db[_0x6f2a('0x2a')]['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x6f2a('0x69'))},'VoiceQueueId':{'$in':_[_0x6f2a('0x29')](_0x360063,'id')},'$or':[{'UserId':null},{'UserId':_0x381d47[_0x6f2a('0x66')]['id']}]}});}return 0x0;})[_0x6f2a('0x24')](function(_0x1cf15c){if(!_[_0x6f2a('0x72')](_0x1cf15c)&&_[_0x6f2a('0x91')](_0x1cf15c)){return _0x172487[_0x6f2a('0x18')](0xc8)['json']({'contacts':_0x1cf15c});}else{logger[_0x6f2a('0x25')](_0x6f2a('0x92'),_0x6f2a('0x90'),0x194,_0x6f2a('0x93'));_0x172487[_0x6f2a('0x17')](0x194);}})[_0x6f2a('0x54')](handleError(_0x172487,null));};
\ No newline at end of file
+var _0xdd9d=['format','YYYY-MM-DD\x20HH:mm:ss','direction','prev','hopperIds','priority','scheduledAt','ASC','DESC','sequelize','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','dialOrderByScheduledAt','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','UPDATE','Contact','Company','CmList','List','Queue','getOpenContacts','getVoiceQueues','outbound','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','sendStatus','eml-format','rimraf','zip-dir','request-promise','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','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','apply','reject','save','update','then','destroy','error','send','index','CmHopper','rawAttributes','fieldName','type','key','model','map','name','query','filters','intersection','concat','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$between','$notBetween','$in','$notIn','$like','$notLike','$notILike','$overlap','$contains','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','VoiceQueueId','VoiceQueue','Campaign','CampaignId','omit','dataValues','createdAt','statedesc','campaign','user','deleted','deletedat','campaigntype','queue','ivr','CmContact','isNil','firstName','lastName','calleridname','finally','getPreview','describe','keys','preview','transaction'];(function(_0x1d355a,_0x118fd8){var _0x35cbd4=function(_0x33d9a9){while(--_0x33d9a9){_0x1d355a['push'](_0x1d355a['shift']());}};_0x35cbd4(++_0x118fd8);}(_0xdd9d,0x145));var _0xddd9=function(_0x2135d3,_0x152021){_0x2135d3=_0x2135d3-0x0;var _0x4d18c8=_0xdd9d[_0x2135d3];return _0x4d18c8;};'use strict';var emlformat=require(_0xddd9('0x0'));var rimraf=require(_0xddd9('0x1'));var zipdir=require(_0xddd9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xddd9('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xddd9('0x4'));var util=require(_0xddd9('0x5'));var path=require(_0xddd9('0x6'));var sox=require(_0xddd9('0x7'));var csv=require(_0xddd9('0x8'));var ejs=require(_0xddd9('0x9'));var fs=require('fs');var fs_extra=require(_0xddd9('0xa'));var _=require(_0xddd9('0xb'));var squel=require(_0xddd9('0xc'));var crypto=require(_0xddd9('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xddd9('0xe'));var toCsv=require(_0xddd9('0x8'));var querystring=require(_0xddd9('0xf'));var Papa=require('papaparse');var Redis=require(_0xddd9('0x10'));var authService=require(_0xddd9('0x11'));var qs=require(_0xddd9('0x12'));var as=require(_0xddd9('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xddd9('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xddd9('0x15'));var db=require(_0xddd9('0x16'))['db'];function respondWithStatusCode(_0x54aa60,_0x3fee11){_0x3fee11=_0x3fee11||0xcc;return function(_0x2f64c9){if(_0x2f64c9){return _0x54aa60['sendStatus'](_0x3fee11);}return _0x54aa60[_0xddd9('0x17')](_0x3fee11)[_0xddd9('0x18')]();};}function respondWithResult(_0x32cd74,_0x3006f7){_0x3006f7=_0x3006f7||0xc8;return function(_0x15f826){if(_0x15f826){return _0x32cd74[_0xddd9('0x17')](_0x3006f7)[_0xddd9('0x19')](_0x15f826);}};}function respondWithFilteredResult(_0x4738ae,_0x2192bd){return function(_0x3826fa){if(_0x3826fa){var _0x9e34f6=typeof _0x2192bd['offset']===_0xddd9('0x1a')&&typeof _0x2192bd['limit']===_0xddd9('0x1a');var _0x5726af=_0x3826fa[_0xddd9('0x1b')];var _0x5e0259=_0x9e34f6?0x0:_0x2192bd[_0xddd9('0x1c')];var _0x94cc0b=_0x9e34f6?_0x3826fa[_0xddd9('0x1b')]:_0x2192bd['offset']+_0x2192bd[_0xddd9('0x1d')];var _0x2a806d;if(_0x94cc0b>=_0x5726af){_0x94cc0b=_0x5726af;_0x2a806d=0xc8;}else{_0x2a806d=0xce;}_0x4738ae[_0xddd9('0x17')](_0x2a806d);return _0x4738ae[_0xddd9('0x1e')]('Content-Range',_0x5e0259+'-'+_0x94cc0b+'/'+_0x5726af)['json'](_0x3826fa);}return null;};}function patchUpdates(_0x560e60){return function(_0x3d873d){try{jsonpatch[_0xddd9('0x1f')](_0x3d873d,_0x560e60,!![]);}catch(_0x3e5d71){return BPromise[_0xddd9('0x20')](_0x3e5d71);}return _0x3d873d[_0xddd9('0x21')]();};}function saveUpdates(_0x319c29,_0x4188ff){return function(_0x4d070d){if(_0x4d070d){return _0x4d070d[_0xddd9('0x22')](_0x319c29)[_0xddd9('0x23')](function(_0x2e8882){return _0x2e8882;});}return null;};}function removeEntity(_0x17834d,_0x1169d2){return function(_0x4aad9b){if(_0x4aad9b){return _0x4aad9b[_0xddd9('0x24')]()[_0xddd9('0x23')](function(){_0x17834d['status'](0xcc)[_0xddd9('0x18')]();});}};}function handleEntityNotFound(_0xcfe50a,_0x46a8a0){return function(_0x142d54){if(!_0x142d54){_0xcfe50a['sendStatus'](0x194);}return _0x142d54;};}function handleError(_0x2135ce,_0x48abe6){_0x48abe6=_0x48abe6||0x1f4;return function(_0x4be006){logger[_0xddd9('0x25')](_0x4be006['stack']);if(_0x4be006['name']){delete _0x4be006['name'];}_0x2135ce[_0xddd9('0x17')](_0x48abe6)[_0xddd9('0x26')](_0x4be006);};}exports[_0xddd9('0x27')]=function(_0x51c01c,_0x53787b){var _0x4e3af1={},_0x318156={},_0xcf80e6={'count':0x0,'rows':[]};var _0x51cf25=_['map'](db[_0xddd9('0x28')][_0xddd9('0x29')],function(_0x41260c){return{'name':_0x41260c[_0xddd9('0x2a')],'type':_0x41260c[_0xddd9('0x2b')][_0xddd9('0x2c')]};});_0x318156[_0xddd9('0x2d')]=_[_0xddd9('0x2e')](_0x51cf25,_0xddd9('0x2f'));_0x318156[_0xddd9('0x30')]=_['keys'](_0x51c01c[_0xddd9('0x30')]);_0x318156[_0xddd9('0x31')]=_[_0xddd9('0x32')](_0x318156[_0xddd9('0x2d')],_0x318156[_0xddd9('0x30')]);_0x318156[_0xddd9('0x31')]=_[_0xddd9('0x33')](_0x318156[_0xddd9('0x31')],[_0xddd9('0x34'),_0xddd9('0x35'),_0xddd9('0x36'),_0xddd9('0x37'),_0xddd9('0x38'),_0xddd9('0x39'),_0xddd9('0x3a'),_0xddd9('0x3b'),'$not',_0xddd9('0x3c'),_0xddd9('0x3d'),_0xddd9('0x3e'),_0xddd9('0x3f'),_0xddd9('0x40'),_0xddd9('0x41'),'$iLike',_0xddd9('0x42'),_0xddd9('0x40'),_0xddd9('0x43'),_0xddd9('0x44'),_0xddd9('0x45'),_0xddd9('0x46')]);_0x4e3af1[_0xddd9('0x47')]=_['intersection'](_0x318156['model'],qs[_0xddd9('0x48')](_0x51c01c[_0xddd9('0x30')][_0xddd9('0x48')]));_0x4e3af1[_0xddd9('0x47')]=_0x4e3af1[_0xddd9('0x47')][_0xddd9('0x49')]?_0x4e3af1[_0xddd9('0x47')]:_0x318156[_0xddd9('0x2d')];if(!_0x51c01c[_0xddd9('0x30')][_0xddd9('0x4a')](_0xddd9('0x4b'))){_0x4e3af1['limit']=qs[_0xddd9('0x1d')](_0x51c01c[_0xddd9('0x30')]['limit']);_0x4e3af1[_0xddd9('0x1c')]=qs[_0xddd9('0x1c')](_0x51c01c['query'][_0xddd9('0x1c')]);}_0x4e3af1[_0xddd9('0x4c')]=qs[_0xddd9('0x4d')](_0x51c01c[_0xddd9('0x30')]['sort']);_0x4e3af1[_0xddd9('0x4e')]=qs['filters'](_[_0xddd9('0x4f')](_0x51c01c['query'],_0x318156[_0xddd9('0x31')]),_0x51cf25);if(_0x51c01c['query'][_0xddd9('0x50')]){_0x4e3af1[_0xddd9('0x4e')]=_[_0xddd9('0x51')](_0x4e3af1[_0xddd9('0x4e')],{'$or':_['map'](_0x51cf25,function(_0x38869b){if(_0x38869b['type']!=='VIRTUAL'){var _0x5f5a3e={};_0x5f5a3e[_0x38869b['name']]={'$like':'%'+_0x51c01c[_0xddd9('0x30')][_0xddd9('0x50')]+'%'};return _0x5f5a3e;}})});}_0x4e3af1=_[_0xddd9('0x51')]({},_0x4e3af1,_0x51c01c[_0xddd9('0x52')]);var _0x1714ce={'where':_0x4e3af1[_0xddd9('0x4e')]};return db[_0xddd9('0x28')][_0xddd9('0x1b')](_0x1714ce)[_0xddd9('0x23')](function(_0x2f2af3){_0xcf80e6[_0xddd9('0x1b')]=_0x2f2af3;if(_0x51c01c['query'][_0xddd9('0x53')]){_0x4e3af1[_0xddd9('0x54')]=[{'all':!![]}];}return db[_0xddd9('0x28')][_0xddd9('0x55')](_0x4e3af1);})[_0xddd9('0x23')](function(_0x58584d){_0xcf80e6[_0xddd9('0x56')]=_0x58584d;return _0xcf80e6;})[_0xddd9('0x23')](respondWithFilteredResult(_0x53787b,_0x4e3af1))[_0xddd9('0x57')](handleError(_0x53787b,null));};exports[_0xddd9('0x58')]=function(_0xcf060f,_0x57494c){var _0x30ba47={'raw':!![],'where':{'id':_0xcf060f['params']['id']}},_0x39af71={};_0x39af71[_0xddd9('0x2d')]=_['keys'](db[_0xddd9('0x28')]['rawAttributes']);_0x39af71[_0xddd9('0x30')]=_['keys'](_0xcf060f[_0xddd9('0x30')]);_0x39af71[_0xddd9('0x31')]=_[_0xddd9('0x32')](_0x39af71[_0xddd9('0x2d')],_0x39af71[_0xddd9('0x30')]);_0x30ba47['attributes']=_[_0xddd9('0x32')](_0x39af71['model'],qs['fields'](_0xcf060f[_0xddd9('0x30')][_0xddd9('0x48')]));_0x30ba47[_0xddd9('0x47')]=_0x30ba47['attributes'][_0xddd9('0x49')]?_0x30ba47[_0xddd9('0x47')]:_0x39af71['model'];if(_0xcf060f['query']['includeAll']){_0x30ba47[_0xddd9('0x54')]=[{'all':!![]}];}_0x30ba47=_[_0xddd9('0x51')]({},_0x30ba47,_0xcf060f[_0xddd9('0x52')]);return db[_0xddd9('0x28')][_0xddd9('0x59')](_0x30ba47)[_0xddd9('0x23')](handleEntityNotFound(_0x57494c,null))[_0xddd9('0x23')](respondWithResult(_0x57494c,null))[_0xddd9('0x57')](handleError(_0x57494c,null));};exports[_0xddd9('0x5a')]=function(_0x7f2e2d,_0x24db52){return db[_0xddd9('0x28')]['create'](_0x7f2e2d[_0xddd9('0x5b')],{})[_0xddd9('0x23')](respondWithResult(_0x24db52,0xc9))[_0xddd9('0x57')](handleError(_0x24db52,null));};exports[_0xddd9('0x22')]=function(_0x27d5fb,_0x206296){if(_0x27d5fb[_0xddd9('0x5b')]['id']){delete _0x27d5fb[_0xddd9('0x5b')]['id'];}return db[_0xddd9('0x28')][_0xddd9('0x59')]({'where':{'id':_0x27d5fb[_0xddd9('0x5c')]['id']}})[_0xddd9('0x23')](handleEntityNotFound(_0x206296,null))[_0xddd9('0x23')](saveUpdates(_0x27d5fb['body'],null))[_0xddd9('0x23')](respondWithResult(_0x206296,null))['catch'](handleError(_0x206296,null));};exports['describe']=function(_0x33d14e,_0x10f2b4){return db[_0xddd9('0x28')]['describe']()[_0xddd9('0x23')](respondWithResult(_0x10f2b4,null))[_0xddd9('0x57')](handleError(_0x10f2b4,null));};exports[_0xddd9('0x24')]=function(_0x21ad54,_0x5d4341){var _0x28028e;return db['CmHopper'][_0xddd9('0x59')]({'where':{'id':_0x21ad54[_0xddd9('0x5c')]['id']}})['then'](handleEntityNotFound(_0x5d4341,null))['then'](function(_0x4c48ec){if(_0x4c48ec){return _0x4c48ec[_0xddd9('0x24')]()['then'](function(_0x2c48db){return _0x2c48db;});}})[_0xddd9('0x23')](function(_0x4dddae){_0x28028e=_0x4dddae;if(_0x4dddae){if(_0x4dddae[_0xddd9('0x5d')]||_0x4dddae['CampaignId']){return db[_0x4dddae['VoiceQueueId']?_0xddd9('0x5e'):_0xddd9('0x5f')][_0xddd9('0x59')]({'where':{'id':_0x4dddae[_0xddd9('0x5d')]?_0x4dddae[_0xddd9('0x5d')]:_0x4dddae[_0xddd9('0x60')]},'attributes':['id',_0xddd9('0x2f')],'raw':!![]});}}})[_0xddd9('0x23')](function(_0x2de6f9){var _0x53269c={};if(_0x2de6f9){_[_0xddd9('0x51')](_0x53269c,_[_0xddd9('0x61')](_0x28028e[_0xddd9('0x62')],[_0xddd9('0x63'),'updatedAt','id']));_0x53269c['state']=0x15;_0x53269c[_0xddd9('0x64')]='deleted';_0x53269c[_0xddd9('0x65')]=_0x2de6f9[_0xddd9('0x2f')];_0x53269c['membername']=_0x21ad54[_0xddd9('0x66')][_0xddd9('0x2f')];_0x53269c['UserId']=_0x21ad54[_0xddd9('0x66')]['id'];_0x53269c[_0xddd9('0x67')]=!![];_0x53269c[_0xddd9('0x68')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x53269c['calleridnum']=_0x28028e['phone'];_0x53269c[_0xddd9('0x69')]=_0x28028e[_0xddd9('0x5d')]?_0xddd9('0x6a'):_0xddd9('0x6b');return db[_0xddd9('0x6c')][_0xddd9('0x59')]({'where':{'id':_0x53269c['ContactId']},'attributes':['firstName','lastName']})[_0xddd9('0x23')](function(_0x3e9c12){if(!_[_0xddd9('0x6d')](_0x5d4341)&&!_[_0xddd9('0x6d')](_0x3e9c12[_0xddd9('0x6e')])){_0x53269c['calleridname']=_0x3e9c12['firstName'];if(!_[_0xddd9('0x6d')](_0x3e9c12[_0xddd9('0x6f')])){_0x53269c[_0xddd9('0x70')]+='\x20'+_0x3e9c12[_0xddd9('0x6f')];}}})[_0xddd9('0x71')](function(){return db['CmHopperFinal'][_0xddd9('0x5a')](_0x53269c);});}})[_0xddd9('0x23')](function(){return _0x5d4341['status'](0xcc)[_0xddd9('0x18')]();})['catch'](handleError(_0x5d4341,null));};exports[_0xddd9('0x72')]=function(_0x23cd62,_0x14082e,_0x4a5f6f){var _0x6fcf79=[];return db[_0xddd9('0x6c')][_0xddd9('0x73')]()['then'](function(_0x4f811c){_0x6fcf79=_[_0xddd9('0x74')](_0x4f811c);return _0x23cd62[_0xddd9('0x66')]['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xddd9('0x75')},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})[_0xddd9('0x23')](function(_0x40f207){if(_0x40f207&&_0x40f207[_0xddd9('0x49')]){return db['sequelize'][_0xddd9('0x76')](function(_0x12a367){var _0x45e0bd={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xddd9('0x77')](_0xddd9('0x78'))},'VoiceQueueId':{'$in':_[_0xddd9('0x2e')](_0x40f207,'id')},'$or':[{'UserId':null},{'UserId':_0x23cd62[_0xddd9('0x66')]['id']}]};var _0x3faa22=[];if(_0x23cd62[_0xddd9('0x5b')][_0xddd9('0x79')]&&_0x23cd62['body']['direction']===_0xddd9('0x7a')){if(!_['isEmpty'](_0x23cd62[_0xddd9('0x5b')][_0xddd9('0x7b')])){_0x45e0bd['id']={'$in':_0x23cd62[_0xddd9('0x5b')][_0xddd9('0x7b')]};}_0x3faa22=[[_0xddd9('0x7c'),'ASC'],[_0xddd9('0x7d'),_0x40f207[0x0]['dialOrderByScheduledAt']===_0xddd9('0x7e')?_0xddd9('0x7f'):_0xddd9('0x7e')],db[_0xddd9('0x80')][_0xddd9('0x81')](_0xddd9('0x82')),['id',_0xddd9('0x7f')]];}else{if(!_['isEmpty'](_0x23cd62[_0xddd9('0x5b')][_0xddd9('0x7b')])){_0x45e0bd['id']={'$notIn':_0x23cd62['body'][_0xddd9('0x7b')]};}_0x3faa22=[[_0xddd9('0x7c'),'DESC'],[_0xddd9('0x7d'),_0x40f207[0x0][_0xddd9('0x83')]],db[_0xddd9('0x80')][_0xddd9('0x81')](_0xddd9('0x84')),['id',_0xddd9('0x7e')]];}return db[_0xddd9('0x28')][_0xddd9('0x85')]({'attributes':['id',_0xddd9('0x86')],'where':_0x45e0bd,'order':_0x3faa22,'transaction':_0x12a367,'lock':_0x12a367['LOCK'][_0xddd9('0x87')],'include':[{'model':db[_0xddd9('0x6c')],'as':_0xddd9('0x88'),'attributes':_0x6fcf79,'include':[{'model':db['CmCompany'],'as':_0xddd9('0x89'),'attributes':['id',_0xddd9('0x2f')]}]},{'model':db[_0xddd9('0x8a')],'as':_0xddd9('0x8b'),'attributes':['id','name']},{'model':db[_0xddd9('0x5e')],'as':_0xddd9('0x8c'),'attributes':['id',_0xddd9('0x2f'),'dialActive']}]})['then'](function(_0x1da507){if(_0x1da507){return _0x1da507[_0xddd9('0x22')]({'UserId':_0x23cd62[_0xddd9('0x66')]['id']},{'transaction':_0x12a367});}});});}})[_0xddd9('0x23')](handleEntityNotFound(_0x14082e,null))[_0xddd9('0x23')](respondWithResult(_0x14082e,null))[_0xddd9('0x57')](handleError(_0x14082e,null));};exports[_0xddd9('0x8d')]=function(_0x16d515,_0x19bde5,_0x5c19bc){return _0x16d515[_0xddd9('0x66')][_0xddd9('0x8e')]({'where':{'type':_0xddd9('0x8f'),'dialActive':!![],'dialMethod':_0xddd9('0x75')},'attributes':['id'],'raw':!![]})[_0xddd9('0x23')](function(_0x10a860){if(_0x10a860&&_0x10a860['length']){return db['CmHopper'][_0xddd9('0x1b')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xddd9('0x77')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0xddd9('0x2e')](_0x10a860,'id')},'$or':[{'UserId':null},{'UserId':_0x16d515[_0xddd9('0x66')]['id']}]}});}return 0x0;})[_0xddd9('0x23')](function(_0x1fa438){if(!_['isNil'](_0x1fa438)&&_[_0xddd9('0x90')](_0x1fa438)){return _0x19bde5[_0xddd9('0x17')](0xc8)[_0xddd9('0x19')]({'contacts':_0x1fa438});}else{logger[_0xddd9('0x25')](_0xddd9('0x91'),_0xddd9('0x8d'),0x194,_0xddd9('0x92'));_0x19bde5[_0xddd9('0x93')](0x194);}})[_0xddd9('0x57')](handleError(_0x19bde5,null));};
\ No newline at end of file
index 7b606e1..af3d829 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c09=['scheduledat','phone','priority','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','define','CmHopper','cm_hopper'];(function(_0x24e079,_0x8eb68d){var _0x45a1e5=function(_0x3472be){while(--_0x3472be){_0x24e079['push'](_0x24e079['shift']());}};_0x45a1e5(++_0x8eb68d);}(_0x7c09,0x102));var _0x97c0=function(_0x575283,_0x20e9c5){_0x575283=_0x575283-0x0;var _0x576f91=_0x7c09[_0x575283];return _0x576f91;};'use strict';var _=require('lodash');var util=require(_0x97c0('0x0'));var logger=require(_0x97c0('0x1'))('api');var moment=require(_0x97c0('0x2'));var BPromise=require(_0x97c0('0x3'));var rp=require(_0x97c0('0x4'));var fs=require('fs');var path=require(_0x97c0('0x5'));var rimraf=require(_0x97c0('0x6'));var config=require(_0x97c0('0x7'));var attributes=require(_0x97c0('0x8'));module['exports']=function(_0x4b2f81,_0x590368){return _0x4b2f81[_0x97c0('0x9')](_0x97c0('0xa'),attributes,{'tableName':_0x97c0('0xb'),'paranoid':![],'indexes':[{'name':_0x97c0('0xc'),'fields':[_0x97c0('0xc')]},{'name':'phone','fields':[_0x97c0('0xd')]},{'name':'priority','fields':[_0x97c0('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe2fe=['CmHopper','scheduledat','phone','priority','lodash','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x53e209,_0x1d2dad){var _0x58b7c7=function(_0x2befba){while(--_0x2befba){_0x53e209['push'](_0x53e209['shift']());}};_0x58b7c7(++_0x1d2dad);}(_0xe2fe,0x86));var _0xee2f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe2fe[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xee2f('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xee2f('0x1'));var moment=require('moment');var BPromise=require(_0xee2f('0x2'));var rp=require(_0xee2f('0x3'));var fs=require('fs');var path=require(_0xee2f('0x4'));var rimraf=require(_0xee2f('0x5'));var config=require(_0xee2f('0x6'));var attributes=require('./cmHopper.attributes');module[_0xee2f('0x7')]=function(_0x2b7e7c,_0x49926b){return _0x2b7e7c[_0xee2f('0x8')](_0xee2f('0x9'),attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0xee2f('0xa'),'fields':['scheduledat']},{'name':_0xee2f('0xb'),'fields':[_0xee2f('0xb')]},{'name':'priority','fields':[_0xee2f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index c1562e5..46068ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcba8=['findAll','options','where','attributes','limit','include','map','model','catch','ShowCmHopper','CmHopper','find','stringify','CreateCmHopper','create','body','raw','UpdateCmHopper','update','DestroyCmHopper','destroy','describe','sequelize','transaction','LOCK','UPDATE','Contact','keys','User','Agent','name','voicePause','length','push','GetContactDialer','MoveContactManagedDialer','CmHopperFinal','CountReScheduled','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','CmContact','order','UserId','all','GetCmHopperPreview','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','CmHopper,\x20%s,\x20%s','debug','error','code','message','request\x20sent','result','GetCmHopper'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xcba8,0x1dc));var _0x8cba=function(_0x167555,_0x508446){_0x167555=_0x167555-0x0;var _0x14d84a=_0xcba8[_0x167555];return _0x14d84a;};'use strict';var _=require('lodash');var util=require(_0x8cba('0x0'));var moment=require(_0x8cba('0x1'));var BPromise=require('bluebird');var rs=require(_0x8cba('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8cba('0x3'))['db'];var utils=require(_0x8cba('0x4'));var logger=require('../../config/logger')(_0x8cba('0x5'));var config=require(_0x8cba('0x6'));var jayson=require(_0x8cba('0x7'));var client=jayson[_0x8cba('0x8')][_0x8cba('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4a5b44,_0x27b09a,_0x10a690){return new BPromise(function(_0x2a0f63,_0xf14e33){return client[_0x8cba('0xa')](_0x4a5b44,_0x10a690)[_0x8cba('0xb')](function(_0x5e8b58){logger[_0x8cba('0xc')](_0x8cba('0xd'),_0x27b09a,'request\x20sent');logger[_0x8cba('0xe')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x27b09a,'request\x20sent',JSON['stringify'](_0x5e8b58));if(_0x5e8b58[_0x8cba('0xf')]){if(_0x5e8b58[_0x8cba('0xf')][_0x8cba('0x10')]===0x1f4){logger['error'](_0x8cba('0xd'),_0x27b09a,_0x5e8b58[_0x8cba('0xf')][_0x8cba('0x11')]);return _0xf14e33(_0x5e8b58['error'][_0x8cba('0x11')]);}logger[_0x8cba('0xf')]('CmHopper,\x20%s,\x20%s',_0x27b09a,_0x5e8b58[_0x8cba('0xf')][_0x8cba('0x11')]);return _0x2a0f63(_0x5e8b58[_0x8cba('0xf')]['message']);}else{logger[_0x8cba('0xc')]('CmHopper,\x20%s,\x20%s',_0x27b09a,_0x8cba('0x12'));_0x2a0f63(_0x5e8b58[_0x8cba('0x13')][_0x8cba('0x11')]);}})['catch'](function(_0x5cb2e4){logger[_0x8cba('0xf')](_0x8cba('0xd'),_0x27b09a,_0x5cb2e4);_0xf14e33(_0x5cb2e4);});});}exports[_0x8cba('0x14')]=function(_0x19f595){var _0x5c56e6=this;return new Promise(function(_0x576ac7,_0x586c64){return db['CmHopper'][_0x8cba('0x15')]({'raw':_0x19f595['options']?_0x19f595['options']['raw']===undefined?!![]:![]:!![],'where':_0x19f595[_0x8cba('0x16')]?_0x19f595[_0x8cba('0x16')][_0x8cba('0x17')]||null:null,'attributes':_0x19f595['options']?_0x19f595['options'][_0x8cba('0x18')]||null:null,'limit':_0x19f595[_0x8cba('0x16')]?_0x19f595[_0x8cba('0x16')][_0x8cba('0x19')]||null:null,'include':_0x19f595[_0x8cba('0x16')]?_0x19f595[_0x8cba('0x16')][_0x8cba('0x1a')]?_[_0x8cba('0x1b')](_0x19f595['options'][_0x8cba('0x1a')],function(_0x3d1027){return{'model':db[_0x3d1027['model']],'as':_0x3d1027['as'],'attributes':_0x3d1027[_0x8cba('0x18')],'include':_0x3d1027['include']?_[_0x8cba('0x1b')](_0x3d1027[_0x8cba('0x1a')],function(_0x48ec24){return{'model':db[_0x48ec24[_0x8cba('0x1c')]],'as':_0x48ec24['as'],'attributes':_0x48ec24['attributes'],'include':_0x48ec24[_0x8cba('0x1a')]?_[_0x8cba('0x1b')](_0x48ec24[_0x8cba('0x1a')],function(_0x6cee86){return{'model':db[_0x6cee86[_0x8cba('0x1c')]],'as':_0x6cee86['as'],'attributes':_0x6cee86[_0x8cba('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x419403){logger[_0x8cba('0xc')](_0x8cba('0x14'),_0x19f595);logger['debug'](_0x8cba('0x14'),_0x19f595,JSON['stringify'](_0x419403));_0x576ac7(_0x419403);})[_0x8cba('0x1d')](function(_0x142fcd){logger['error'](_0x8cba('0x14'),_0x142fcd[_0x8cba('0x11')],_0x19f595);_0x586c64(_0x5c56e6[_0x8cba('0xf')](0x1f4,_0x142fcd[_0x8cba('0x11')]));});});};exports[_0x8cba('0x1e')]=function(_0x6d264a){var _0x46e66a=this;return new Promise(function(_0x2b62ec,_0x31247d){return db[_0x8cba('0x1f')][_0x8cba('0x20')]({'raw':_0x6d264a[_0x8cba('0x16')]?_0x6d264a['options']['raw']===undefined?!![]:![]:!![],'where':_0x6d264a[_0x8cba('0x16')]?_0x6d264a[_0x8cba('0x16')]['where']||null:null,'attributes':_0x6d264a['options']?_0x6d264a['options']['attributes']||null:null,'include':_0x6d264a[_0x8cba('0x16')]?_0x6d264a[_0x8cba('0x16')][_0x8cba('0x1a')]?_[_0x8cba('0x1b')](_0x6d264a[_0x8cba('0x16')][_0x8cba('0x1a')],function(_0x29e0da){return{'model':db[_0x29e0da[_0x8cba('0x1c')]],'as':_0x29e0da['as'],'attributes':_0x29e0da['attributes'],'include':_0x29e0da[_0x8cba('0x1a')]?_['map'](_0x29e0da['include'],function(_0x20f2a4){return{'model':db[_0x20f2a4[_0x8cba('0x1c')]],'as':_0x20f2a4['as'],'attributes':_0x20f2a4[_0x8cba('0x18')],'include':_0x20f2a4[_0x8cba('0x1a')]?_['map'](_0x20f2a4[_0x8cba('0x1a')],function(_0x3240f8){return{'model':db[_0x3240f8[_0x8cba('0x1c')]],'as':_0x3240f8['as'],'attributes':_0x3240f8[_0x8cba('0x18')]};}):[]};}):[]};}):[]:[]})[_0x8cba('0xb')](function(_0x11fe69){logger[_0x8cba('0xc')](_0x8cba('0x1e'),_0x6d264a);logger[_0x8cba('0xe')](_0x8cba('0x1e'),_0x6d264a,JSON[_0x8cba('0x21')](_0x11fe69));_0x2b62ec(_0x11fe69);})['catch'](function(_0xc6120a){logger[_0x8cba('0xf')](_0x8cba('0x1e'),_0xc6120a[_0x8cba('0x11')],_0x6d264a);_0x31247d(_0x46e66a['error'](0x1f4,_0xc6120a[_0x8cba('0x11')]));});});};exports[_0x8cba('0x22')]=function(_0x259273){var _0x345609=this;return new Promise(function(_0x396079,_0x52738e){return db[_0x8cba('0x1f')][_0x8cba('0x23')](_0x259273[_0x8cba('0x24')],{'raw':_0x259273['options']?_0x259273['options'][_0x8cba('0x25')]===undefined?!![]:![]:!![]})[_0x8cba('0xb')](function(_0x5cf5b9){logger['info']('CreateCmHopper',_0x259273);logger[_0x8cba('0xe')](_0x8cba('0x22'),_0x259273,JSON[_0x8cba('0x21')](_0x5cf5b9));_0x396079(_0x5cf5b9);})[_0x8cba('0x1d')](function(_0x332297){logger[_0x8cba('0xf')](_0x8cba('0x22'),_0x332297[_0x8cba('0x11')],_0x259273);_0x52738e(_0x345609['error'](0x1f4,_0x332297[_0x8cba('0x11')]));});});};exports[_0x8cba('0x26')]=function(_0x1c7a1a){var _0x2a76ab=this;return new Promise(function(_0x263001,_0x42acb1){return db['CmHopper'][_0x8cba('0x27')](_0x1c7a1a['body'],{'raw':_0x1c7a1a[_0x8cba('0x16')]?_0x1c7a1a['options'][_0x8cba('0x25')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1c7a1a[_0x8cba('0x16')]?_0x1c7a1a[_0x8cba('0x16')][_0x8cba('0x17')]||null:null,'attributes':_0x1c7a1a[_0x8cba('0x16')]?_0x1c7a1a[_0x8cba('0x16')][_0x8cba('0x18')]||null:null,'limit':_0x1c7a1a['options']?_0x1c7a1a[_0x8cba('0x16')][_0x8cba('0x19')]||null:null})['then'](function(_0x3097e7){logger[_0x8cba('0xc')]('UpdateCmHopper',_0x1c7a1a);logger['debug'](_0x8cba('0x26'),_0x1c7a1a,JSON[_0x8cba('0x21')](_0x3097e7));_0x263001(_0x3097e7);})[_0x8cba('0x1d')](function(_0x218fb4){logger[_0x8cba('0xf')]('UpdateCmHopper',_0x218fb4[_0x8cba('0x11')],_0x1c7a1a);_0x42acb1(_0x2a76ab[_0x8cba('0xf')](0x1f4,_0x218fb4['message']));});});};exports[_0x8cba('0x28')]=function(_0x597681){var _0x1682f3=this;return new Promise(function(_0x32890b,_0x596b96){return db[_0x8cba('0x1f')][_0x8cba('0x29')]({'where':_0x597681[_0x8cba('0x16')]?_0x597681[_0x8cba('0x16')]['where']||null:null})['then'](function(_0x88306b){logger[_0x8cba('0xc')](_0x8cba('0x28'),_0x597681);logger[_0x8cba('0xe')](_0x8cba('0x28'),_0x597681,JSON[_0x8cba('0x21')](_0x88306b));_0x32890b(_0x88306b);})['catch'](function(_0x4c13fb){logger[_0x8cba('0xf')](_0x8cba('0x28'),_0x4c13fb['message'],_0x597681);_0x596b96(_0x1682f3[_0x8cba('0xf')](0x1f4,_0x4c13fb[_0x8cba('0x11')]));});});};exports['GetContactDialer']=function(_0x53e57c){var _0x218150=this;return new Promise(function(_0x8b2d27,_0x2b0210){return db['CmContact'][_0x8cba('0x2a')]()[_0x8cba('0xb')](function(_0x3d76f4){return db[_0x8cba('0x2b')][_0x8cba('0x2c')](function(_0x21ec5a){return db[_0x8cba('0x1f')][_0x8cba('0x15')]({'where':_0x53e57c[_0x8cba('0x16')]?_0x53e57c[_0x8cba('0x16')][_0x8cba('0x17')]||null:null,'attributes':_0x53e57c[_0x8cba('0x16')]?_0x53e57c[_0x8cba('0x16')][_0x8cba('0x18')]||null:null,'limit':_0x53e57c[_0x8cba('0x16')]?_0x53e57c[_0x8cba('0x16')][_0x8cba('0x19')]||null:null,'order':_0x53e57c['options']?_0x53e57c[_0x8cba('0x16')]['order']||null:null,'transaction':_0x21ec5a,'lock':_0x21ec5a[_0x8cba('0x2d')][_0x8cba('0x2e')],'include':[{'model':db['CmContact'],'as':_0x8cba('0x2f'),'attributes':_[_0x8cba('0x30')](_0x3d76f4)},{'model':db[_0x8cba('0x31')],'as':_0x8cba('0x32'),'attributes':['id',_0x8cba('0x33'),_0x8cba('0x34')]}]})['then'](function(_0x56f17a){var _0xaadecb=[];var _0x650c73=[];for(var _0xbfb9a5=0x0;_0xbfb9a5<_0x56f17a[_0x8cba('0x35')];_0xbfb9a5+=0x1){var _0x3b72db=_0x56f17a[_0xbfb9a5]['UserId'];if(_0x3b72db===null){_0xaadecb[_0x8cba('0x36')](_0x56f17a[_0xbfb9a5][_0x8cba('0x27')](_0x53e57c[_0x8cba('0x24')],{'transaction':_0x21ec5a}));}else if(!_0x650c73['includes'](_0x3b72db)){_0x650c73[_0x8cba('0x36')](_0x3b72db);_0xaadecb['push'](_0x56f17a[_0xbfb9a5][_0x8cba('0x27')](_0x53e57c[_0x8cba('0x24')],{'transaction':_0x21ec5a}));}}return BPromise['all'](_0xaadecb);});})[_0x8cba('0xb')](function(_0x5e8e5d){logger[_0x8cba('0xc')](_0x8cba('0x37'),_0x53e57c);logger[_0x8cba('0xe')](_0x8cba('0x37'),_0x53e57c,JSON[_0x8cba('0x21')](_0x5e8e5d));_0x8b2d27(_0x5e8e5d);})[_0x8cba('0x1d')](function(_0x1e4a4a){logger[_0x8cba('0xf')](_0x8cba('0x37'),_0x1e4a4a['message'],_0x53e57c);_0x2b0210(_0x218150[_0x8cba('0xf')](0x1f4,_0x1e4a4a[_0x8cba('0x11')]));});});});};exports[_0x8cba('0x38')]=function(_0x4da402){var _0x28d06d=this;return new Promise(function(_0x37bc47,_0x41c88a){return db[_0x8cba('0x2b')]['transaction'](function(_0x1e0e6e){return db[_0x8cba('0x39')][_0x8cba('0x23')](_0x4da402[_0x8cba('0x24')],{'raw':_0x4da402['options']?_0x4da402[_0x8cba('0x16')][_0x8cba('0x25')]===undefined?!![]:![]:!![],'transaction':_0x1e0e6e})[_0x8cba('0xb')](function(){return db[_0x8cba('0x1f')][_0x8cba('0x29')]({'where':_0x4da402[_0x8cba('0x16')]?_0x4da402[_0x8cba('0x16')][_0x8cba('0x17')]||null:null,'transaction':_0x1e0e6e});});})[_0x8cba('0xb')](function(_0x5e9be1){logger['info'](_0x8cba('0x38'),_0x4da402);logger[_0x8cba('0xe')]('MoveContactManagedDialer',_0x4da402,JSON[_0x8cba('0x21')](_0x5e9be1));_0x37bc47(_0x5e9be1);})['catch'](function(_0x16eb04){logger[_0x8cba('0xf')](_0x8cba('0x38'),_0x16eb04[_0x8cba('0x11')],_0x4da402);_0x41c88a(_0x28d06d['error'](0x1f4,_0x16eb04['message']));});});};exports[_0x8cba('0x3a')]=function(_0x5691d6){var _0x10450a=this;return new Promise(function(_0x4ae22a,_0x4b8642){return db[_0x8cba('0x1f')]['findAll']({'raw':_0x5691d6[_0x8cba('0x16')]?_0x5691d6[_0x8cba('0x16')][_0x8cba('0x25')]===undefined?!![]:![]:!![],'where':_0x5691d6[_0x8cba('0x16')]?_0x5691d6[_0x8cba('0x16')][_0x8cba('0x17')]||null:null,'attributes':[[db[_0x8cba('0x2b')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x8cba('0x2b')]['literal'](_0x8cba('0x3b')+util[_0x8cba('0x3c')](_0x8cba('0x3d'),moment()[_0x8cba('0x3c')](_0x8cba('0x3e')))+_0x8cba('0x3f')))),_0x8cba('0x40')]]})[_0x8cba('0xb')](function(_0x2936bf){logger[_0x8cba('0xc')](_0x8cba('0x3a'),_0x5691d6);logger[_0x8cba('0xe')]('CountReScheduled',_0x5691d6,JSON[_0x8cba('0x21')](_0x2936bf));_0x4ae22a(_0x2936bf);})[_0x8cba('0x1d')](function(_0x2c0096){logger[_0x8cba('0xf')](_0x8cba('0x3a'),_0x2c0096[_0x8cba('0x11')],_0x5691d6);_0x4b8642(_0x10450a[_0x8cba('0xf')](0x1f4,_0x2c0096[_0x8cba('0x11')]));});});};exports[_0x8cba('0x41')]=function(_0x2ee6d2){var _0x542861=this;return new Promise(function(_0x1e9d79,_0x3791cc){return db[_0x8cba('0x42')]['describe']()[_0x8cba('0xb')](function(_0x1fced9){return db[_0x8cba('0x2b')]['transaction'](function(_0x31ebfd){return db['CmHopper'][_0x8cba('0x15')]({'where':_0x2ee6d2[_0x8cba('0x16')]?_0x2ee6d2[_0x8cba('0x16')][_0x8cba('0x17')]||null:null,'attributes':_0x2ee6d2[_0x8cba('0x16')]?_0x2ee6d2[_0x8cba('0x16')][_0x8cba('0x18')]||null:null,'limit':0x1,'order':_0x2ee6d2[_0x8cba('0x16')]?_0x2ee6d2[_0x8cba('0x16')][_0x8cba('0x43')]||null:null,'group':db[_0x8cba('0x1f')][_0x8cba('0x44')],'transaction':_0x31ebfd,'lock':_0x31ebfd[_0x8cba('0x2d')][_0x8cba('0x2e')],'include':_0x2ee6d2[_0x8cba('0x16')]?_0x2ee6d2[_0x8cba('0x16')][_0x8cba('0x1a')]?_['map'](_0x2ee6d2[_0x8cba('0x16')][_0x8cba('0x1a')],function(_0x577cf6){return{'model':db[_0x577cf6[_0x8cba('0x1c')]],'as':_0x577cf6['as'],'attributes':_0x577cf6['attributes'],'include':_0x577cf6[_0x8cba('0x1a')]?_['map'](_0x577cf6[_0x8cba('0x1a')],function(_0x38c164){return{'model':db[_0x38c164[_0x8cba('0x1c')]],'as':_0x38c164['as'],'attributes':_0x38c164[_0x8cba('0x18')],'include':_0x38c164[_0x8cba('0x1a')]?_[_0x8cba('0x1b')](_0x38c164[_0x8cba('0x1a')],function(_0x2405b9){return{'model':db[_0x2405b9[_0x8cba('0x1c')]],'as':_0x2405b9['as'],'attributes':_0x2405b9[_0x8cba('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x126438){var _0x55a802=[];for(var _0x5012b3=0x0;_0x5012b3<_0x126438['length'];_0x5012b3+=0x1){_0x55a802[_0x8cba('0x36')](_0x126438[_0x5012b3][_0x8cba('0x27')](_0x2ee6d2['body'],{'transaction':_0x31ebfd}));}return BPromise[_0x8cba('0x45')](_0x55a802);});})['then'](function(_0x25eb90){logger['info'](_0x8cba('0x41'),_0x2ee6d2);logger[_0x8cba('0xe')](_0x8cba('0x41'),_0x2ee6d2,JSON['stringify'](_0x25eb90));_0x1e9d79(_0x25eb90);})[_0x8cba('0x1d')](function(_0x29a479){logger['error'](_0x8cba('0x41'),_0x29a479[_0x8cba('0x11')],_0x2ee6d2);_0x3791cc(_0x542861['error'](0x1f4,_0x29a479[_0x8cba('0x11')]));});});});};exports[_0x8cba('0x46')]=function(_0x1b865f){var _0x2f3a15=this;return new Promise(function(_0x5adad1,_0x111592){db['CmContact'][_0x8cba('0x2a')]()[_0x8cba('0xb')](function(_0x1f4e9e){return db[_0x8cba('0x1f')][_0x8cba('0x15')]({'raw':_0x1b865f[_0x8cba('0x16')]?_0x1b865f[_0x8cba('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x1b865f['options']?_0x1b865f[_0x8cba('0x16')]['where']||null:null,'attributes':_0x1b865f['options']?_0x1b865f[_0x8cba('0x16')][_0x8cba('0x18')]||null:null,'limit':_0x1b865f[_0x8cba('0x16')]?_0x1b865f[_0x8cba('0x16')][_0x8cba('0x19')]||null:null,'include':_0x1b865f[_0x8cba('0x16')]?_0x1b865f[_0x8cba('0x16')][_0x8cba('0x1a')]?_[_0x8cba('0x1b')](_0x1b865f['options'][_0x8cba('0x1a')],function(_0x301a50){return{'model':db[_0x301a50[_0x8cba('0x1c')]],'as':_0x301a50['as'],'attributes':_0x301a50['as']===_0x8cba('0x2f')?_['keys'](_0x1f4e9e):_0x301a50[_0x8cba('0x18')],'include':_0x301a50['include']?_['map'](_0x301a50[_0x8cba('0x1a')],function(_0x4238da){return{'model':db[_0x4238da[_0x8cba('0x1c')]],'as':_0x4238da['as'],'attributes':_0x4238da['attributes'],'include':_0x4238da[_0x8cba('0x1a')]?_['map'](_0x4238da[_0x8cba('0x1a')],function(_0x3c3153){return{'model':db[_0x3c3153['model']],'as':_0x3c3153['as'],'attributes':_0x3c3153['attributes']};}):[]};}):[]};}):[]:[]})[_0x8cba('0xb')](function(_0x5ca003){logger[_0x8cba('0xc')](_0x8cba('0x14'),_0x1b865f);logger[_0x8cba('0xe')](_0x8cba('0x14'),_0x1b865f,JSON[_0x8cba('0x21')](_0x5ca003));_0x5adad1(_0x5ca003);})[_0x8cba('0x1d')](function(_0x5aac12){logger['error'](_0x8cba('0x14'),_0x5aac12[_0x8cba('0x11')],_0x1b865f);_0x111592(_0x2f3a15[_0x8cba('0xf')](0x1f4,_0x5aac12[_0x8cba('0x11')]));});});});};
\ No newline at end of file
+var _0x95b0=['../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','CmHopper,\x20%s,\x20%s','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetCmHopper','CmHopper','findAll','options','where','attributes','limit','include','map','model','ShowCmHopper','find','raw','create','CreateCmHopper','UpdateCmHopper','update','body','DestroyCmHopper','destroy','GetContactDialer','describe','sequelize','transaction','order','LOCK','UPDATE','CmContact','Contact','keys','User','name','length','UserId','push','includes','CmHopperFinal','CountReScheduled','literal','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','GetCmHopperPreview','moment','bluebird','randomstring'];(function(_0xbd8d45,_0x17500a){var _0x5a50a8=function(_0x1bfcea){while(--_0x1bfcea){_0xbd8d45['push'](_0xbd8d45['shift']());}};_0x5a50a8(++_0x17500a);}(_0x95b0,0xc6));var _0x095b=function(_0x536f3c,_0x5e04d5){_0x536f3c=_0x536f3c-0x0;var _0x361698=_0x95b0[_0x536f3c];return _0x361698;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x095b('0x0'));var BPromise=require(_0x095b('0x1'));var rs=require(_0x095b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x095b('0x3'))['db'];var utils=require(_0x095b('0x4'));var logger=require(_0x095b('0x5'))(_0x095b('0x6'));var config=require('../../config/environment');var jayson=require(_0x095b('0x7'));var client=jayson[_0x095b('0x8')][_0x095b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5d94af,_0x447f8d,_0x339ca0){return new BPromise(function(_0xc91452,_0x136bda){return client['request'](_0x5d94af,_0x339ca0)[_0x095b('0xa')](function(_0x1cad5d){logger[_0x095b('0xb')](_0x095b('0xc'),_0x447f8d,_0x095b('0xd'));logger[_0x095b('0xe')](_0x095b('0xf'),_0x447f8d,_0x095b('0xd'),JSON[_0x095b('0x10')](_0x1cad5d));if(_0x1cad5d[_0x095b('0x11')]){if(_0x1cad5d[_0x095b('0x11')]['code']===0x1f4){logger[_0x095b('0x11')](_0x095b('0xc'),_0x447f8d,_0x1cad5d[_0x095b('0x11')][_0x095b('0x12')]);return _0x136bda(_0x1cad5d['error']['message']);}logger[_0x095b('0x11')](_0x095b('0xc'),_0x447f8d,_0x1cad5d[_0x095b('0x11')][_0x095b('0x12')]);return _0xc91452(_0x1cad5d[_0x095b('0x11')][_0x095b('0x12')]);}else{logger['info'](_0x095b('0xc'),_0x447f8d,'request\x20sent');_0xc91452(_0x1cad5d[_0x095b('0x13')][_0x095b('0x12')]);}})[_0x095b('0x14')](function(_0x15681a){logger[_0x095b('0x11')](_0x095b('0xc'),_0x447f8d,_0x15681a);_0x136bda(_0x15681a);});});}exports[_0x095b('0x15')]=function(_0x11aa3b){var _0x5631e3=this;return new Promise(function(_0x352ed2,_0x567a72){return db[_0x095b('0x16')][_0x095b('0x17')]({'raw':_0x11aa3b[_0x095b('0x18')]?_0x11aa3b['options']['raw']===undefined?!![]:![]:!![],'where':_0x11aa3b['options']?_0x11aa3b[_0x095b('0x18')][_0x095b('0x19')]||null:null,'attributes':_0x11aa3b[_0x095b('0x18')]?_0x11aa3b['options'][_0x095b('0x1a')]||null:null,'limit':_0x11aa3b['options']?_0x11aa3b[_0x095b('0x18')][_0x095b('0x1b')]||null:null,'include':_0x11aa3b['options']?_0x11aa3b[_0x095b('0x18')][_0x095b('0x1c')]?_[_0x095b('0x1d')](_0x11aa3b[_0x095b('0x18')]['include'],function(_0x3c2ccd){return{'model':db[_0x3c2ccd[_0x095b('0x1e')]],'as':_0x3c2ccd['as'],'attributes':_0x3c2ccd[_0x095b('0x1a')],'include':_0x3c2ccd['include']?_[_0x095b('0x1d')](_0x3c2ccd[_0x095b('0x1c')],function(_0x4a8219){return{'model':db[_0x4a8219[_0x095b('0x1e')]],'as':_0x4a8219['as'],'attributes':_0x4a8219['attributes'],'include':_0x4a8219[_0x095b('0x1c')]?_['map'](_0x4a8219[_0x095b('0x1c')],function(_0x92074f){return{'model':db[_0x92074f[_0x095b('0x1e')]],'as':_0x92074f['as'],'attributes':_0x92074f['attributes']};}):[]};}):[]};}):[]:[]})[_0x095b('0xa')](function(_0x125fe2){logger['info']('GetCmHopper',_0x11aa3b);logger['debug']('GetCmHopper',_0x11aa3b,JSON[_0x095b('0x10')](_0x125fe2));_0x352ed2(_0x125fe2);})[_0x095b('0x14')](function(_0x33e780){logger[_0x095b('0x11')]('GetCmHopper',_0x33e780[_0x095b('0x12')],_0x11aa3b);_0x567a72(_0x5631e3[_0x095b('0x11')](0x1f4,_0x33e780[_0x095b('0x12')]));});});};exports[_0x095b('0x1f')]=function(_0x2a9627){var _0x3f2bc0=this;return new Promise(function(_0x249e41,_0x55ae6d){return db[_0x095b('0x16')][_0x095b('0x20')]({'raw':_0x2a9627['options']?_0x2a9627['options'][_0x095b('0x21')]===undefined?!![]:![]:!![],'where':_0x2a9627['options']?_0x2a9627[_0x095b('0x18')][_0x095b('0x19')]||null:null,'attributes':_0x2a9627['options']?_0x2a9627['options'][_0x095b('0x1a')]||null:null,'include':_0x2a9627['options']?_0x2a9627['options'][_0x095b('0x1c')]?_['map'](_0x2a9627[_0x095b('0x18')][_0x095b('0x1c')],function(_0x1b4f99){return{'model':db[_0x1b4f99[_0x095b('0x1e')]],'as':_0x1b4f99['as'],'attributes':_0x1b4f99[_0x095b('0x1a')],'include':_0x1b4f99[_0x095b('0x1c')]?_[_0x095b('0x1d')](_0x1b4f99[_0x095b('0x1c')],function(_0x2578ab){return{'model':db[_0x2578ab['model']],'as':_0x2578ab['as'],'attributes':_0x2578ab[_0x095b('0x1a')],'include':_0x2578ab[_0x095b('0x1c')]?_[_0x095b('0x1d')](_0x2578ab[_0x095b('0x1c')],function(_0x107472){return{'model':db[_0x107472[_0x095b('0x1e')]],'as':_0x107472['as'],'attributes':_0x107472[_0x095b('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x095b('0xa')](function(_0x141a1c){logger[_0x095b('0xb')]('ShowCmHopper',_0x2a9627);logger['debug']('ShowCmHopper',_0x2a9627,JSON[_0x095b('0x10')](_0x141a1c));_0x249e41(_0x141a1c);})[_0x095b('0x14')](function(_0x3a1355){logger[_0x095b('0x11')](_0x095b('0x1f'),_0x3a1355[_0x095b('0x12')],_0x2a9627);_0x55ae6d(_0x3f2bc0[_0x095b('0x11')](0x1f4,_0x3a1355[_0x095b('0x12')]));});});};exports['CreateCmHopper']=function(_0xa72041){var _0x14e366=this;return new Promise(function(_0x50e89e,_0x4929a0){return db[_0x095b('0x16')][_0x095b('0x22')](_0xa72041['body'],{'raw':_0xa72041['options']?_0xa72041['options'][_0x095b('0x21')]===undefined?!![]:![]:!![]})[_0x095b('0xa')](function(_0x2af4e5){logger[_0x095b('0xb')](_0x095b('0x23'),_0xa72041);logger[_0x095b('0xe')](_0x095b('0x23'),_0xa72041,JSON[_0x095b('0x10')](_0x2af4e5));_0x50e89e(_0x2af4e5);})['catch'](function(_0x85d03f){logger[_0x095b('0x11')]('CreateCmHopper',_0x85d03f[_0x095b('0x12')],_0xa72041);_0x4929a0(_0x14e366['error'](0x1f4,_0x85d03f[_0x095b('0x12')]));});});};exports[_0x095b('0x24')]=function(_0x6648e4){var _0x19139b=this;return new Promise(function(_0x265092,_0x1db7ca){return db[_0x095b('0x16')][_0x095b('0x25')](_0x6648e4[_0x095b('0x26')],{'raw':_0x6648e4[_0x095b('0x18')]?_0x6648e4[_0x095b('0x18')][_0x095b('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x6648e4[_0x095b('0x18')]?_0x6648e4[_0x095b('0x18')]['where']||null:null,'attributes':_0x6648e4['options']?_0x6648e4[_0x095b('0x18')][_0x095b('0x1a')]||null:null,'limit':_0x6648e4['options']?_0x6648e4[_0x095b('0x18')][_0x095b('0x1b')]||null:null})[_0x095b('0xa')](function(_0x55b362){logger['info'](_0x095b('0x24'),_0x6648e4);logger['debug'](_0x095b('0x24'),_0x6648e4,JSON['stringify'](_0x55b362));_0x265092(_0x55b362);})[_0x095b('0x14')](function(_0x257df4){logger[_0x095b('0x11')](_0x095b('0x24'),_0x257df4[_0x095b('0x12')],_0x6648e4);_0x1db7ca(_0x19139b[_0x095b('0x11')](0x1f4,_0x257df4['message']));});});};exports[_0x095b('0x27')]=function(_0x183b82){var _0x292ff6=this;return new Promise(function(_0x1d799a,_0x31ee50){return db['CmHopper'][_0x095b('0x28')]({'where':_0x183b82[_0x095b('0x18')]?_0x183b82[_0x095b('0x18')][_0x095b('0x19')]||null:null})['then'](function(_0x36ab93){logger['info'](_0x095b('0x27'),_0x183b82);logger[_0x095b('0xe')](_0x095b('0x27'),_0x183b82,JSON['stringify'](_0x36ab93));_0x1d799a(_0x36ab93);})['catch'](function(_0x4e9f23){logger[_0x095b('0x11')](_0x095b('0x27'),_0x4e9f23['message'],_0x183b82);_0x31ee50(_0x292ff6[_0x095b('0x11')](0x1f4,_0x4e9f23[_0x095b('0x12')]));});});};exports[_0x095b('0x29')]=function(_0x4a1612){var _0x58f471=this;return new Promise(function(_0x7cba7b,_0x19580a){return db['CmContact'][_0x095b('0x2a')]()['then'](function(_0x408909){return db[_0x095b('0x2b')][_0x095b('0x2c')](function(_0x5dd9e8){return db[_0x095b('0x16')]['findAll']({'where':_0x4a1612['options']?_0x4a1612['options']['where']||null:null,'attributes':_0x4a1612[_0x095b('0x18')]?_0x4a1612['options']['attributes']||null:null,'limit':_0x4a1612['options']?_0x4a1612[_0x095b('0x18')]['limit']||null:null,'order':_0x4a1612['options']?_0x4a1612[_0x095b('0x18')][_0x095b('0x2d')]||null:null,'transaction':_0x5dd9e8,'lock':_0x5dd9e8[_0x095b('0x2e')][_0x095b('0x2f')],'include':[{'model':db[_0x095b('0x30')],'as':_0x095b('0x31'),'attributes':_[_0x095b('0x32')](_0x408909)},{'model':db[_0x095b('0x33')],'as':'Agent','attributes':['id',_0x095b('0x34'),'voicePause']}]})[_0x095b('0xa')](function(_0x1c5f0f){var _0x250619=[];var _0x3abd2a=[];for(var _0xb0bb99=0x0;_0xb0bb99<_0x1c5f0f[_0x095b('0x35')];_0xb0bb99+=0x1){var _0x461330=_0x1c5f0f[_0xb0bb99][_0x095b('0x36')];if(_0x461330===null){_0x250619[_0x095b('0x37')](_0x1c5f0f[_0xb0bb99][_0x095b('0x25')](_0x4a1612[_0x095b('0x26')],{'transaction':_0x5dd9e8}));}else if(!_0x3abd2a[_0x095b('0x38')](_0x461330)){_0x3abd2a[_0x095b('0x37')](_0x461330);_0x250619[_0x095b('0x37')](_0x1c5f0f[_0xb0bb99][_0x095b('0x25')](_0x4a1612[_0x095b('0x26')],{'transaction':_0x5dd9e8}));}}return BPromise['all'](_0x250619);});})['then'](function(_0x2352b8){logger[_0x095b('0xb')](_0x095b('0x29'),_0x4a1612);logger['debug'](_0x095b('0x29'),_0x4a1612,JSON['stringify'](_0x2352b8));_0x7cba7b(_0x2352b8);})[_0x095b('0x14')](function(_0x13afea){logger[_0x095b('0x11')](_0x095b('0x29'),_0x13afea[_0x095b('0x12')],_0x4a1612);_0x19580a(_0x58f471[_0x095b('0x11')](0x1f4,_0x13afea['message']));});});});};exports['MoveContactManagedDialer']=function(_0x2b2f34){var _0x140141=this;return new Promise(function(_0x445431,_0x58f73f){return db[_0x095b('0x2b')][_0x095b('0x2c')](function(_0x122196){return db[_0x095b('0x39')][_0x095b('0x22')](_0x2b2f34['body'],{'raw':_0x2b2f34[_0x095b('0x18')]?_0x2b2f34[_0x095b('0x18')]['raw']===undefined?!![]:![]:!![],'transaction':_0x122196})[_0x095b('0xa')](function(){return db[_0x095b('0x16')]['destroy']({'where':_0x2b2f34[_0x095b('0x18')]?_0x2b2f34[_0x095b('0x18')]['where']||null:null,'transaction':_0x122196});});})[_0x095b('0xa')](function(_0xb456e9){logger[_0x095b('0xb')]('MoveContactManagedDialer',_0x2b2f34);logger['debug']('MoveContactManagedDialer',_0x2b2f34,JSON['stringify'](_0xb456e9));_0x445431(_0xb456e9);})['catch'](function(_0x530dcf){logger[_0x095b('0x11')]('MoveContactManagedDialer',_0x530dcf[_0x095b('0x12')],_0x2b2f34);_0x58f73f(_0x140141[_0x095b('0x11')](0x1f4,_0x530dcf[_0x095b('0x12')]));});});};exports[_0x095b('0x3a')]=function(_0x4298d8){var _0x34f510=this;return new Promise(function(_0x59cd76,_0x339401){return db['CmHopper']['findAll']({'raw':_0x4298d8[_0x095b('0x18')]?_0x4298d8[_0x095b('0x18')][_0x095b('0x21')]===undefined?!![]:![]:!![],'where':_0x4298d8[_0x095b('0x18')]?_0x4298d8[_0x095b('0x18')]['where']||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0x095b('0x2b')]['fn']('IF',db[_0x095b('0x2b')][_0x095b('0x3b')]('`scheduledat`\x20>=\x20'+util[_0x095b('0x3c')](_0x095b('0x3d'),moment()[_0x095b('0x3c')](_0x095b('0x3e')))+_0x095b('0x3f')))),_0x095b('0x40')]]})[_0x095b('0xa')](function(_0x29dcfa){logger[_0x095b('0xb')]('CountReScheduled',_0x4298d8);logger['debug']('CountReScheduled',_0x4298d8,JSON[_0x095b('0x10')](_0x29dcfa));_0x59cd76(_0x29dcfa);})[_0x095b('0x14')](function(_0x529198){logger[_0x095b('0x11')](_0x095b('0x3a'),_0x529198[_0x095b('0x12')],_0x4298d8);_0x339401(_0x34f510['error'](0x1f4,_0x529198[_0x095b('0x12')]));});});};exports['GetContactRecallMe']=function(_0x596b64){var _0x452a04=this;return new Promise(function(_0x4624ad,_0x32f09a){return db[_0x095b('0x30')][_0x095b('0x2a')]()['then'](function(_0x594694){return db[_0x095b('0x2b')][_0x095b('0x2c')](function(_0x4f4ad7){return db[_0x095b('0x16')]['findAll']({'where':_0x596b64[_0x095b('0x18')]?_0x596b64['options'][_0x095b('0x19')]||null:null,'attributes':_0x596b64['options']?_0x596b64['options'][_0x095b('0x1a')]||null:null,'limit':0x1,'order':_0x596b64[_0x095b('0x18')]?_0x596b64[_0x095b('0x18')][_0x095b('0x2d')]||null:null,'group':db[_0x095b('0x16')][_0x095b('0x36')],'transaction':_0x4f4ad7,'lock':_0x4f4ad7[_0x095b('0x2e')]['UPDATE'],'include':_0x596b64[_0x095b('0x18')]?_0x596b64[_0x095b('0x18')][_0x095b('0x1c')]?_['map'](_0x596b64['options'][_0x095b('0x1c')],function(_0x3fd397){return{'model':db[_0x3fd397[_0x095b('0x1e')]],'as':_0x3fd397['as'],'attributes':_0x3fd397[_0x095b('0x1a')],'include':_0x3fd397[_0x095b('0x1c')]?_['map'](_0x3fd397[_0x095b('0x1c')],function(_0x23894c){return{'model':db[_0x23894c[_0x095b('0x1e')]],'as':_0x23894c['as'],'attributes':_0x23894c[_0x095b('0x1a')],'include':_0x23894c[_0x095b('0x1c')]?_[_0x095b('0x1d')](_0x23894c['include'],function(_0x38a61f){return{'model':db[_0x38a61f['model']],'as':_0x38a61f['as'],'attributes':_0x38a61f[_0x095b('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x340eed){var _0x4e4cfa=[];for(var _0x5d0d6e=0x0;_0x5d0d6e<_0x340eed[_0x095b('0x35')];_0x5d0d6e+=0x1){_0x4e4cfa[_0x095b('0x37')](_0x340eed[_0x5d0d6e]['update'](_0x596b64[_0x095b('0x26')],{'transaction':_0x4f4ad7}));}return BPromise['all'](_0x4e4cfa);});})[_0x095b('0xa')](function(_0x421a9c){logger[_0x095b('0xb')](_0x095b('0x41'),_0x596b64);logger[_0x095b('0xe')](_0x095b('0x41'),_0x596b64,JSON['stringify'](_0x421a9c));_0x4624ad(_0x421a9c);})[_0x095b('0x14')](function(_0x3b89b5){logger['error']('GetContactRecallMe',_0x3b89b5[_0x095b('0x12')],_0x596b64);_0x32f09a(_0x452a04[_0x095b('0x11')](0x1f4,_0x3b89b5[_0x095b('0x12')]));});});});};exports[_0x095b('0x42')]=function(_0x451a92){var _0x574f31=this;return new Promise(function(_0x3815f2,_0x496495){db[_0x095b('0x30')][_0x095b('0x2a')]()['then'](function(_0x552a7d){return db[_0x095b('0x16')][_0x095b('0x17')]({'raw':_0x451a92[_0x095b('0x18')]?_0x451a92['options'][_0x095b('0x21')]===undefined?!![]:![]:!![],'where':_0x451a92['options']?_0x451a92['options'][_0x095b('0x19')]||null:null,'attributes':_0x451a92[_0x095b('0x18')]?_0x451a92[_0x095b('0x18')][_0x095b('0x1a')]||null:null,'limit':_0x451a92[_0x095b('0x18')]?_0x451a92[_0x095b('0x18')]['limit']||null:null,'include':_0x451a92[_0x095b('0x18')]?_0x451a92[_0x095b('0x18')]['include']?_[_0x095b('0x1d')](_0x451a92[_0x095b('0x18')][_0x095b('0x1c')],function(_0x5e770d){return{'model':db[_0x5e770d['model']],'as':_0x5e770d['as'],'attributes':_0x5e770d['as']===_0x095b('0x31')?_[_0x095b('0x32')](_0x552a7d):_0x5e770d[_0x095b('0x1a')],'include':_0x5e770d[_0x095b('0x1c')]?_['map'](_0x5e770d[_0x095b('0x1c')],function(_0xbce71a){return{'model':db[_0xbce71a['model']],'as':_0xbce71a['as'],'attributes':_0xbce71a[_0x095b('0x1a')],'include':_0xbce71a[_0x095b('0x1c')]?_[_0x095b('0x1d')](_0xbce71a['include'],function(_0x523c8c){return{'model':db[_0x523c8c[_0x095b('0x1e')]],'as':_0x523c8c['as'],'attributes':_0x523c8c['attributes']};}):[]};}):[]};}):[]:[]})[_0x095b('0xa')](function(_0x5e6e44){logger[_0x095b('0xb')]('GetCmHopper',_0x451a92);logger['debug'](_0x095b('0x15'),_0x451a92,JSON[_0x095b('0x10')](_0x5e6e44));_0x3815f2(_0x5e6e44);})[_0x095b('0x14')](function(_0x5a3a77){logger[_0x095b('0x11')](_0x095b('0x15'),_0x5a3a77[_0x095b('0x12')],_0x451a92);_0x496495(_0x574f31[_0x095b('0x11')](0x1f4,_0x5a3a77['message']));});});});};
\ No newline at end of file
index 6fb29b0..38dd388 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeee8=['getPreview','put','update','delete','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','./cmHopper.controller','isAuthenticated','index','get','/describe','describe','/opencontacts','getOpenContacts','/:id','show','create','post','/preview'];(function(_0xdf6837,_0x440887){var _0x254cfa=function(_0x3bcbc2){while(--_0x3bcbc2){_0xdf6837['push'](_0xdf6837['shift']());}};_0x254cfa(++_0x440887);}(_0xeee8,0x18c));var _0x8eee=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xeee8[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8eee('0x0'));var timeout=require(_0x8eee('0x1'));var express=require(_0x8eee('0x2'));var router=express['Router']();var fs_extra=require(_0x8eee('0x3'));var auth=require(_0x8eee('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x8eee('0x5'));router['get']('/',auth[_0x8eee('0x6')](),controller[_0x8eee('0x7')]);router[_0x8eee('0x8')](_0x8eee('0x9'),auth['isAuthenticated'](),controller[_0x8eee('0xa')]);router['get'](_0x8eee('0xb'),auth[_0x8eee('0x6')](),controller[_0x8eee('0xc')]);router['get'](_0x8eee('0xd'),auth[_0x8eee('0x6')](),controller[_0x8eee('0xe')]);router['post']('/',auth[_0x8eee('0x6')](),controller[_0x8eee('0xf')]);router[_0x8eee('0x10')](_0x8eee('0x11'),auth[_0x8eee('0x6')](),controller[_0x8eee('0x12')]);router[_0x8eee('0x13')]('/:id',auth[_0x8eee('0x6')](),controller[_0x8eee('0x14')]);router[_0x8eee('0x15')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x8eee('0x16')]=router;
\ No newline at end of file
+var _0x45db=['../../components/interaction/service','../../config/environment','./cmHopper.controller','isAuthenticated','index','get','describe','/opencontacts','getOpenContacts','/:id','show','post','create','/preview','getPreview','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x2405bc,_0x2f28a1){var _0x5272d4=function(_0x225294){while(--_0x225294){_0x2405bc['push'](_0x2405bc['shift']());}};_0x5272d4(++_0x2f28a1);}(_0x45db,0xa9));var _0xb45d=function(_0x53308c,_0x2708fa){_0x53308c=_0x53308c-0x0;var _0x3e8a24=_0x45db[_0x53308c];return _0x3e8a24;};'use strict';var multer=require(_0xb45d('0x0'));var util=require(_0xb45d('0x1'));var path=require(_0xb45d('0x2'));var timeout=require(_0xb45d('0x3'));var express=require(_0xb45d('0x4'));var router=express[_0xb45d('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb45d('0x6'));var config=require(_0xb45d('0x7'));var controller=require(_0xb45d('0x8'));router['get']('/',auth[_0xb45d('0x9')](),controller[_0xb45d('0xa')]);router[_0xb45d('0xb')]('/describe',auth[_0xb45d('0x9')](),controller[_0xb45d('0xc')]);router['get'](_0xb45d('0xd'),auth['isAuthenticated'](),controller[_0xb45d('0xe')]);router['get'](_0xb45d('0xf'),auth[_0xb45d('0x9')](),controller[_0xb45d('0x10')]);router[_0xb45d('0x11')]('/',auth[_0xb45d('0x9')](),controller[_0xb45d('0x12')]);router['post'](_0xb45d('0x13'),auth['isAuthenticated'](),controller[_0xb45d('0x14')]);router[_0xb45d('0x15')](_0xb45d('0xf'),auth[_0xb45d('0x9')](),controller[_0xb45d('0x16')]);router['delete'](_0xb45d('0xf'),auth[_0xb45d('0x9')](),controller[_0xb45d('0x17')]);module[_0xb45d('0x18')]=router;
\ No newline at end of file
index eee801c..a170908 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd87=['INTEGER','contactListQueue','moment','sequelize','exports','STRING'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xfd87,0x80));var _0x7fd8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd87[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0x7fd8('0x0'));var Sequelize=require(_0x7fd8('0x1'));module[_0x7fd8('0x2')]={'phone':{'type':Sequelize[_0x7fd8('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x7fd8('0x4')],'unique':_0x7fd8('0x5')},'ListId':{'type':Sequelize[_0x7fd8('0x4')],'unique':_0x7fd8('0x5')},'VoiceQueueId':{'type':Sequelize[_0x7fd8('0x4')],'unique':_0x7fd8('0x5')}};
\ No newline at end of file
+var _0xa87e=['moment','sequelize','exports','STRING','contactListQueue','INTEGER'];(function(_0x70dc3f,_0xfc371b){var _0x447aa4=function(_0x2509fa){while(--_0x2509fa){_0x70dc3f['push'](_0x70dc3f['shift']());}};_0x447aa4(++_0xfc371b);}(_0xa87e,0x1c2));var _0xea87=function(_0xfe1d80,_0x1f2563){_0xfe1d80=_0xfe1d80-0x0;var _0x203ce9=_0xa87e[_0xfe1d80];return _0x203ce9;};'use strict';var moment=require(_0xea87('0x0'));var Sequelize=require(_0xea87('0x1'));module[_0xea87('0x2')]={'phone':{'type':Sequelize[_0xea87('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0xea87('0x4')},'ListId':{'type':Sequelize[_0xea87('0x5')],'unique':_0xea87('0x4')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0xea87('0x4')}};
\ No newline at end of file
index 3ef7cac..27bb98b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9f3=['offset','limit','undefined','count','set','Content-Range','reject','save','update','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','attributes','intersection','fields','hasOwnProperty','nolimit','order','where','filters','merge','VIRTUAL','filter','then','includeAll','include','CmHopperBlack','findAll','rows','catch','show','params','keys','length','find','body','destroy','describe','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','sox','to-csv','ejs','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','status','end','json'];(function(_0x4733ab,_0x6ce57e){var _0xebef4e=function(_0x469478){while(--_0x469478){_0x4733ab['push'](_0x4733ab['shift']());}};_0xebef4e(++_0x6ce57e);}(_0xa9f3,0x1de));var _0x3a9f=function(_0x2857e9,_0x5590f6){_0x2857e9=_0x2857e9-0x0;var _0x102691=_0xa9f3[_0x2857e9];return _0x102691;};'use strict';var emlformat=require(_0x3a9f('0x0'));var rimraf=require(_0x3a9f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3a9f('0x2'));var rp=require(_0x3a9f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3a9f('0x4'));var util=require(_0x3a9f('0x5'));var path=require('path');var sox=require(_0x3a9f('0x6'));var csv=require(_0x3a9f('0x7'));var ejs=require(_0x3a9f('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x3a9f('0x9'));var jsforce=require(_0x3a9f('0xa'));var deskjs=require(_0x3a9f('0xb'));var toCsv=require(_0x3a9f('0x7'));var querystring=require('querystring');var Papa=require(_0x3a9f('0xc'));var Redis=require(_0x3a9f('0xd'));var authService=require(_0x3a9f('0xe'));var qs=require(_0x3a9f('0xf'));var as=require(_0x3a9f('0x10'));var hardwareService=require(_0x3a9f('0x11'));var logger=require(_0x3a9f('0x12'))('api');var utils=require(_0x3a9f('0x13'));var config=require(_0x3a9f('0x14'));var licenseUtil=require(_0x3a9f('0x15'));var db=require(_0x3a9f('0x16'))['db'];function respondWithStatusCode(_0x103ed8,_0x34139d){_0x34139d=_0x34139d||0xcc;return function(_0x233599){if(_0x233599){return _0x103ed8['sendStatus'](_0x34139d);}return _0x103ed8[_0x3a9f('0x17')](_0x34139d)[_0x3a9f('0x18')]();};}function respondWithResult(_0x3fd8d0,_0x47112b){_0x47112b=_0x47112b||0xc8;return function(_0x130333){if(_0x130333){return _0x3fd8d0[_0x3a9f('0x17')](_0x47112b)[_0x3a9f('0x19')](_0x130333);}};}function respondWithFilteredResult(_0xd47bc2,_0x48b997){return function(_0x18a554){if(_0x18a554){var _0x10a665=typeof _0x48b997[_0x3a9f('0x1a')]==='undefined'&&typeof _0x48b997[_0x3a9f('0x1b')]===_0x3a9f('0x1c');var _0x2cfc8a=_0x18a554[_0x3a9f('0x1d')];var _0x1e2565=_0x10a665?0x0:_0x48b997[_0x3a9f('0x1a')];var _0x6c202c=_0x10a665?_0x18a554['count']:_0x48b997[_0x3a9f('0x1a')]+_0x48b997[_0x3a9f('0x1b')];var _0x41d9b2;if(_0x6c202c>=_0x2cfc8a){_0x6c202c=_0x2cfc8a;_0x41d9b2=0xc8;}else{_0x41d9b2=0xce;}_0xd47bc2[_0x3a9f('0x17')](_0x41d9b2);return _0xd47bc2[_0x3a9f('0x1e')](_0x3a9f('0x1f'),_0x1e2565+'-'+_0x6c202c+'/'+_0x2cfc8a)[_0x3a9f('0x19')](_0x18a554);}return null;};}function patchUpdates(_0x56fc71){return function(_0xf17f4){try{jsonpatch['apply'](_0xf17f4,_0x56fc71,!![]);}catch(_0x104ab2){return BPromise[_0x3a9f('0x20')](_0x104ab2);}return _0xf17f4[_0x3a9f('0x21')]();};}function saveUpdates(_0x576951,_0x515fc3){return function(_0x3d4e26){if(_0x3d4e26){return _0x3d4e26[_0x3a9f('0x22')](_0x576951)['then'](function(_0xbb6ab4){return _0xbb6ab4;});}return null;};}function removeEntity(_0x583a63,_0x3bbf81){return function(_0x483175){if(_0x483175){return _0x483175['destroy']()['then'](function(){_0x583a63['status'](0xcc)[_0x3a9f('0x18')]();});}};}function handleEntityNotFound(_0x37e641,_0x2b5bd1){return function(_0x22366a){if(!_0x22366a){_0x37e641['sendStatus'](0x194);}return _0x22366a;};}function handleError(_0x2df982,_0x2bf7c2){_0x2bf7c2=_0x2bf7c2||0x1f4;return function(_0x5c641c){logger['error'](_0x5c641c[_0x3a9f('0x23')]);if(_0x5c641c[_0x3a9f('0x24')]){delete _0x5c641c['name'];}_0x2df982[_0x3a9f('0x17')](_0x2bf7c2)[_0x3a9f('0x25')](_0x5c641c);};}exports[_0x3a9f('0x26')]=function(_0x313e80,_0x3aa580){var _0x493315={},_0x2a529e={},_0x1c1c18={'count':0x0,'rows':[]};var _0x310bb4=_[_0x3a9f('0x27')](db['CmHopperBlack'][_0x3a9f('0x28')],function(_0x37298d){return{'name':_0x37298d[_0x3a9f('0x29')],'type':_0x37298d[_0x3a9f('0x2a')][_0x3a9f('0x2b')]};});_0x2a529e[_0x3a9f('0x2c')]=_[_0x3a9f('0x27')](_0x310bb4,'name');_0x2a529e[_0x3a9f('0x2d')]=_['keys'](_0x313e80[_0x3a9f('0x2d')]);_0x2a529e['filters']=_['intersection'](_0x2a529e['model'],_0x2a529e[_0x3a9f('0x2d')]);_0x493315[_0x3a9f('0x2e')]=_[_0x3a9f('0x2f')](_0x2a529e[_0x3a9f('0x2c')],qs['fields'](_0x313e80[_0x3a9f('0x2d')][_0x3a9f('0x30')]));_0x493315[_0x3a9f('0x2e')]=_0x493315[_0x3a9f('0x2e')]['length']?_0x493315[_0x3a9f('0x2e')]:_0x2a529e[_0x3a9f('0x2c')];if(!_0x313e80[_0x3a9f('0x2d')][_0x3a9f('0x31')](_0x3a9f('0x32'))){_0x493315[_0x3a9f('0x1b')]=qs[_0x3a9f('0x1b')](_0x313e80[_0x3a9f('0x2d')][_0x3a9f('0x1b')]);_0x493315[_0x3a9f('0x1a')]=qs[_0x3a9f('0x1a')](_0x313e80[_0x3a9f('0x2d')][_0x3a9f('0x1a')]);}_0x493315[_0x3a9f('0x33')]=qs['sort'](_0x313e80['query']['sort']);_0x493315[_0x3a9f('0x34')]=qs[_0x3a9f('0x35')](_['pick'](_0x313e80['query'],_0x2a529e[_0x3a9f('0x35')]),_0x310bb4);if(_0x313e80[_0x3a9f('0x2d')]['filter']){_0x493315[_0x3a9f('0x34')]=_[_0x3a9f('0x36')](_0x493315[_0x3a9f('0x34')],{'$or':_[_0x3a9f('0x27')](_0x310bb4,function(_0x17a41b){if(_0x17a41b[_0x3a9f('0x2a')]!==_0x3a9f('0x37')){var _0x52d044={};_0x52d044[_0x17a41b[_0x3a9f('0x24')]]={'$like':'%'+_0x313e80[_0x3a9f('0x2d')][_0x3a9f('0x38')]+'%'};return _0x52d044;}})});}_0x493315=_[_0x3a9f('0x36')]({},_0x493315,_0x313e80['options']);var _0x4eb7a0={'where':_0x493315[_0x3a9f('0x34')]};return db['CmHopperBlack'][_0x3a9f('0x1d')](_0x4eb7a0)[_0x3a9f('0x39')](function(_0x44bc61){_0x1c1c18[_0x3a9f('0x1d')]=_0x44bc61;if(_0x313e80['query'][_0x3a9f('0x3a')]){_0x493315[_0x3a9f('0x3b')]=[{'all':!![]}];}return db[_0x3a9f('0x3c')][_0x3a9f('0x3d')](_0x493315);})[_0x3a9f('0x39')](function(_0x4d4d16){_0x1c1c18[_0x3a9f('0x3e')]=_0x4d4d16;return _0x1c1c18;})['then'](respondWithFilteredResult(_0x3aa580,_0x493315))[_0x3a9f('0x3f')](handleError(_0x3aa580,null));};exports[_0x3a9f('0x40')]=function(_0x55fc13,_0x851f1b){var _0x49c279={'raw':!![],'where':{'id':_0x55fc13[_0x3a9f('0x41')]['id']}},_0x1464d2={};_0x1464d2[_0x3a9f('0x2c')]=_[_0x3a9f('0x42')](db['CmHopperBlack'][_0x3a9f('0x28')]);_0x1464d2[_0x3a9f('0x2d')]=_['keys'](_0x55fc13[_0x3a9f('0x2d')]);_0x1464d2[_0x3a9f('0x35')]=_['intersection'](_0x1464d2[_0x3a9f('0x2c')],_0x1464d2[_0x3a9f('0x2d')]);_0x49c279[_0x3a9f('0x2e')]=_[_0x3a9f('0x2f')](_0x1464d2['model'],qs['fields'](_0x55fc13[_0x3a9f('0x2d')][_0x3a9f('0x30')]));_0x49c279[_0x3a9f('0x2e')]=_0x49c279['attributes'][_0x3a9f('0x43')]?_0x49c279[_0x3a9f('0x2e')]:_0x1464d2['model'];if(_0x55fc13['query'][_0x3a9f('0x3a')]){_0x49c279[_0x3a9f('0x3b')]=[{'all':!![]}];}_0x49c279=_[_0x3a9f('0x36')]({},_0x49c279,_0x55fc13['options']);return db[_0x3a9f('0x3c')][_0x3a9f('0x44')](_0x49c279)['then'](handleEntityNotFound(_0x851f1b,null))[_0x3a9f('0x39')](respondWithResult(_0x851f1b,null))['catch'](handleError(_0x851f1b,null));};exports[_0x3a9f('0x22')]=function(_0x12c00f,_0x4ab900){if(_0x12c00f[_0x3a9f('0x45')]['id']){delete _0x12c00f[_0x3a9f('0x45')]['id'];}return db[_0x3a9f('0x3c')]['find']({'where':{'id':_0x12c00f[_0x3a9f('0x41')]['id']}})['then'](handleEntityNotFound(_0x4ab900,null))[_0x3a9f('0x39')](saveUpdates(_0x12c00f[_0x3a9f('0x45')],null))[_0x3a9f('0x39')](respondWithResult(_0x4ab900,null))[_0x3a9f('0x3f')](handleError(_0x4ab900,null));};exports[_0x3a9f('0x46')]=function(_0x44b2ce,_0x486a5a){return db['CmHopperBlack'][_0x3a9f('0x44')]({'where':{'id':_0x44b2ce[_0x3a9f('0x41')]['id']}})[_0x3a9f('0x39')](handleEntityNotFound(_0x486a5a,null))['then'](removeEntity(_0x486a5a,null))['catch'](handleError(_0x486a5a,null));};exports[_0x3a9f('0x47')]=function(_0x3dd4a7,_0x317327){return db[_0x3a9f('0x3c')]['describe']()[_0x3a9f('0x39')](respondWithResult(_0x317327,null))[_0x3a9f('0x3f')](handleError(_0x317327,null));};
\ No newline at end of file
+var _0xe989=['ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','CmHopperBlack','includeAll','include','findAll','rows','catch','show','options','find','body','params','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse'];(function(_0x4f737f,_0x3a33ad){var _0x2d7f60=function(_0xdc50b2){while(--_0xdc50b2){_0x4f737f['push'](_0x4f737f['shift']());}};_0x2d7f60(++_0x3a33ad);}(_0xe989,0x11e));var _0x9e98=function(_0x5d7803,_0x30e9aa){_0x5d7803=_0x5d7803-0x0;var _0x1a43b2=_0xe989[_0x5d7803];return _0x1a43b2;};'use strict';var emlformat=require(_0x9e98('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9e98('0x1'));var jsonpatch=require(_0x9e98('0x2'));var rp=require(_0x9e98('0x3'));var moment=require(_0x9e98('0x4'));var BPromise=require(_0x9e98('0x5'));var Mustache=require(_0x9e98('0x6'));var util=require(_0x9e98('0x7'));var path=require(_0x9e98('0x8'));var sox=require(_0x9e98('0x9'));var csv=require(_0x9e98('0xa'));var ejs=require(_0x9e98('0xb'));var fs=require('fs');var fs_extra=require(_0x9e98('0xc'));var _=require('lodash');var squel=require(_0x9e98('0xd'));var crypto=require('crypto');var jsforce=require(_0x9e98('0xe'));var deskjs=require(_0x9e98('0xf'));var toCsv=require(_0x9e98('0xa'));var querystring=require(_0x9e98('0x10'));var Papa=require(_0x9e98('0x11'));var Redis=require(_0x9e98('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9e98('0x13'));var hardwareService=require(_0x9e98('0x14'));var logger=require(_0x9e98('0x15'))(_0x9e98('0x16'));var utils=require(_0x9e98('0x17'));var config=require(_0x9e98('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3ea642,_0x539611){_0x539611=_0x539611||0xcc;return function(_0x34ce72){if(_0x34ce72){return _0x3ea642[_0x9e98('0x19')](_0x539611);}return _0x3ea642[_0x9e98('0x1a')](_0x539611)[_0x9e98('0x1b')]();};}function respondWithResult(_0x2eff97,_0x2f04f8){_0x2f04f8=_0x2f04f8||0xc8;return function(_0xa25fb0){if(_0xa25fb0){return _0x2eff97[_0x9e98('0x1a')](_0x2f04f8)[_0x9e98('0x1c')](_0xa25fb0);}};}function respondWithFilteredResult(_0x314c48,_0x2ae26c){return function(_0x36cf00){if(_0x36cf00){var _0x3fc0c0=typeof _0x2ae26c[_0x9e98('0x1d')]===_0x9e98('0x1e')&&typeof _0x2ae26c[_0x9e98('0x1f')]===_0x9e98('0x1e');var _0x40c4ff=_0x36cf00[_0x9e98('0x20')];var _0x330d19=_0x3fc0c0?0x0:_0x2ae26c[_0x9e98('0x1d')];var _0x7e7e49=_0x3fc0c0?_0x36cf00[_0x9e98('0x20')]:_0x2ae26c[_0x9e98('0x1d')]+_0x2ae26c[_0x9e98('0x1f')];var _0x30e54e;if(_0x7e7e49>=_0x40c4ff){_0x7e7e49=_0x40c4ff;_0x30e54e=0xc8;}else{_0x30e54e=0xce;}_0x314c48['status'](_0x30e54e);return _0x314c48[_0x9e98('0x21')](_0x9e98('0x22'),_0x330d19+'-'+_0x7e7e49+'/'+_0x40c4ff)[_0x9e98('0x1c')](_0x36cf00);}return null;};}function patchUpdates(_0x19a3f8){return function(_0x5c857a){try{jsonpatch[_0x9e98('0x23')](_0x5c857a,_0x19a3f8,!![]);}catch(_0xf8454c){return BPromise[_0x9e98('0x24')](_0xf8454c);}return _0x5c857a[_0x9e98('0x25')]();};}function saveUpdates(_0x4abd06,_0x256b27){return function(_0x55dd16){if(_0x55dd16){return _0x55dd16[_0x9e98('0x26')](_0x4abd06)[_0x9e98('0x27')](function(_0x5608d1){return _0x5608d1;});}return null;};}function removeEntity(_0x12d1c3,_0xf0b9cb){return function(_0x343af3){if(_0x343af3){return _0x343af3[_0x9e98('0x28')]()['then'](function(){_0x12d1c3[_0x9e98('0x1a')](0xcc)[_0x9e98('0x1b')]();});}};}function handleEntityNotFound(_0x77458d,_0x503ce8){return function(_0x48b26a){if(!_0x48b26a){_0x77458d[_0x9e98('0x19')](0x194);}return _0x48b26a;};}function handleError(_0x51c785,_0x4b1a7a){_0x4b1a7a=_0x4b1a7a||0x1f4;return function(_0x2ad27a){logger[_0x9e98('0x29')](_0x2ad27a['stack']);if(_0x2ad27a['name']){delete _0x2ad27a[_0x9e98('0x2a')];}_0x51c785[_0x9e98('0x1a')](_0x4b1a7a)['send'](_0x2ad27a);};}exports[_0x9e98('0x2b')]=function(_0x3e5415,_0x70aa85){var _0x5d830d={},_0x470a21={},_0x27a6e3={'count':0x0,'rows':[]};var _0xde2f61=_[_0x9e98('0x2c')](db['CmHopperBlack'][_0x9e98('0x2d')],function(_0x4dc11b){return{'name':_0x4dc11b[_0x9e98('0x2e')],'type':_0x4dc11b[_0x9e98('0x2f')][_0x9e98('0x30')]};});_0x470a21[_0x9e98('0x31')]=_[_0x9e98('0x2c')](_0xde2f61,_0x9e98('0x2a'));_0x470a21[_0x9e98('0x32')]=_[_0x9e98('0x33')](_0x3e5415[_0x9e98('0x32')]);_0x470a21[_0x9e98('0x34')]=_[_0x9e98('0x35')](_0x470a21[_0x9e98('0x31')],_0x470a21[_0x9e98('0x32')]);_0x5d830d[_0x9e98('0x36')]=_[_0x9e98('0x35')](_0x470a21[_0x9e98('0x31')],qs[_0x9e98('0x37')](_0x3e5415[_0x9e98('0x32')][_0x9e98('0x37')]));_0x5d830d[_0x9e98('0x36')]=_0x5d830d['attributes'][_0x9e98('0x38')]?_0x5d830d['attributes']:_0x470a21[_0x9e98('0x31')];if(!_0x3e5415[_0x9e98('0x32')][_0x9e98('0x39')](_0x9e98('0x3a'))){_0x5d830d[_0x9e98('0x1f')]=qs[_0x9e98('0x1f')](_0x3e5415[_0x9e98('0x32')][_0x9e98('0x1f')]);_0x5d830d[_0x9e98('0x1d')]=qs[_0x9e98('0x1d')](_0x3e5415['query'][_0x9e98('0x1d')]);}_0x5d830d['order']=qs[_0x9e98('0x3b')](_0x3e5415[_0x9e98('0x32')][_0x9e98('0x3b')]);_0x5d830d[_0x9e98('0x3c')]=qs[_0x9e98('0x34')](_[_0x9e98('0x3d')](_0x3e5415['query'],_0x470a21[_0x9e98('0x34')]),_0xde2f61);if(_0x3e5415['query']['filter']){_0x5d830d[_0x9e98('0x3c')]=_[_0x9e98('0x3e')](_0x5d830d['where'],{'$or':_['map'](_0xde2f61,function(_0x5b05b6){if(_0x5b05b6[_0x9e98('0x2f')]!=='VIRTUAL'){var _0x2423b8={};_0x2423b8[_0x5b05b6[_0x9e98('0x2a')]]={'$like':'%'+_0x3e5415[_0x9e98('0x32')][_0x9e98('0x3f')]+'%'};return _0x2423b8;}})});}_0x5d830d=_[_0x9e98('0x3e')]({},_0x5d830d,_0x3e5415['options']);var _0x45fe0f={'where':_0x5d830d['where']};return db[_0x9e98('0x40')][_0x9e98('0x20')](_0x45fe0f)[_0x9e98('0x27')](function(_0x4a3cc9){_0x27a6e3[_0x9e98('0x20')]=_0x4a3cc9;if(_0x3e5415[_0x9e98('0x32')][_0x9e98('0x41')]){_0x5d830d[_0x9e98('0x42')]=[{'all':!![]}];}return db[_0x9e98('0x40')][_0x9e98('0x43')](_0x5d830d);})[_0x9e98('0x27')](function(_0x10f62c){_0x27a6e3[_0x9e98('0x44')]=_0x10f62c;return _0x27a6e3;})[_0x9e98('0x27')](respondWithFilteredResult(_0x70aa85,_0x5d830d))[_0x9e98('0x45')](handleError(_0x70aa85,null));};exports[_0x9e98('0x46')]=function(_0x59fa4f,_0x4194c5){var _0x546420={'raw':!![],'where':{'id':_0x59fa4f['params']['id']}},_0x1d10a6={};_0x1d10a6['model']=_['keys'](db[_0x9e98('0x40')][_0x9e98('0x2d')]);_0x1d10a6[_0x9e98('0x32')]=_['keys'](_0x59fa4f[_0x9e98('0x32')]);_0x1d10a6[_0x9e98('0x34')]=_[_0x9e98('0x35')](_0x1d10a6[_0x9e98('0x31')],_0x1d10a6[_0x9e98('0x32')]);_0x546420[_0x9e98('0x36')]=_['intersection'](_0x1d10a6[_0x9e98('0x31')],qs[_0x9e98('0x37')](_0x59fa4f[_0x9e98('0x32')][_0x9e98('0x37')]));_0x546420['attributes']=_0x546420[_0x9e98('0x36')][_0x9e98('0x38')]?_0x546420[_0x9e98('0x36')]:_0x1d10a6['model'];if(_0x59fa4f[_0x9e98('0x32')][_0x9e98('0x41')]){_0x546420[_0x9e98('0x42')]=[{'all':!![]}];}_0x546420=_['merge']({},_0x546420,_0x59fa4f[_0x9e98('0x47')]);return db[_0x9e98('0x40')][_0x9e98('0x48')](_0x546420)[_0x9e98('0x27')](handleEntityNotFound(_0x4194c5,null))[_0x9e98('0x27')](respondWithResult(_0x4194c5,null))[_0x9e98('0x45')](handleError(_0x4194c5,null));};exports[_0x9e98('0x26')]=function(_0x141678,_0x5aa126){if(_0x141678[_0x9e98('0x49')]['id']){delete _0x141678[_0x9e98('0x49')]['id'];}return db['CmHopperBlack']['find']({'where':{'id':_0x141678[_0x9e98('0x4a')]['id']}})[_0x9e98('0x27')](handleEntityNotFound(_0x5aa126,null))['then'](saveUpdates(_0x141678[_0x9e98('0x49')],null))[_0x9e98('0x27')](respondWithResult(_0x5aa126,null))[_0x9e98('0x45')](handleError(_0x5aa126,null));};exports[_0x9e98('0x28')]=function(_0x594429,_0x3959cf){return db[_0x9e98('0x40')][_0x9e98('0x48')]({'where':{'id':_0x594429[_0x9e98('0x4a')]['id']}})[_0x9e98('0x27')](handleEntityNotFound(_0x3959cf,null))['then'](removeEntity(_0x3959cf,null))[_0x9e98('0x45')](handleError(_0x3959cf,null));};exports[_0x9e98('0x4b')]=function(_0x4b024b,_0x4c39bb){return db[_0x9e98('0x40')][_0x9e98('0x4b')]()[_0x9e98('0x27')](respondWithResult(_0x4c39bb,null))[_0x9e98('0x45')](handleError(_0x4c39bb,null));};
\ No newline at end of file
index a4b0a02..d56d704 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c74=['exports','define','CmHopperBlack','cm_hopper_black','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./cmHopperBlack.attributes'];(function(_0x135168,_0x55379f){var _0x4950ce=function(_0x73ec0c){while(--_0x73ec0c){_0x135168['push'](_0x135168['shift']());}};_0x4950ce(++_0x55379f);}(_0x1c74,0x197));var _0x41c7=function(_0x14f812,_0x3860eb){_0x14f812=_0x14f812-0x0;var _0x150761=_0x1c74[_0x14f812];return _0x150761;};'use strict';var _=require(_0x41c7('0x0'));var util=require(_0x41c7('0x1'));var logger=require(_0x41c7('0x2'))(_0x41c7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x41c7('0x4'));var fs=require('fs');var path=require(_0x41c7('0x5'));var rimraf=require(_0x41c7('0x6'));var config=require(_0x41c7('0x7'));var attributes=require(_0x41c7('0x8'));module[_0x41c7('0x9')]=function(_0x3d291b,_0x22e71b){return _0x3d291b[_0x41c7('0xa')](_0x41c7('0xb'),attributes,{'tableName':_0x41c7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1192=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports','define','CmHopperBlack','cm_hopper_black'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1192,0x150));var _0x2119=function(_0x308374,_0x550e85){_0x308374=_0x308374-0x0;var _0x1f71e0=_0x1192[_0x308374];return _0x1f71e0;};'use strict';var _=require(_0x2119('0x0'));var util=require(_0x2119('0x1'));var logger=require(_0x2119('0x2'))(_0x2119('0x3'));var moment=require(_0x2119('0x4'));var BPromise=require(_0x2119('0x5'));var rp=require(_0x2119('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x2119('0x7'));var attributes=require('./cmHopperBlack.attributes');module[_0x2119('0x8')]=function(_0x3ca73d,_0x5afafb){return _0x3ca73d[_0x2119('0x9')](_0x2119('0xa'),attributes,{'tableName':_0x2119('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index abc99d9..310e6db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe902=['stringify','error','code','message','info','result','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where','attributes','include','map','model','UpdateCmHopperBlack','update','destroy','DestroyCmHopperBlack','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s'];(function(_0x2eb9de,_0x16f4b9){var _0x43b319=function(_0x58e1de){while(--_0x58e1de){_0x2eb9de['push'](_0x2eb9de['shift']());}};_0x43b319(++_0x16f4b9);}(_0xe902,0x17d));var _0x2e90=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xe902[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2e90('0x0'));var fs=require('fs');var Redis=require(_0x2e90('0x1'));var db=require(_0x2e90('0x2'))['db'];var utils=require(_0x2e90('0x3'));var logger=require(_0x2e90('0x4'))(_0x2e90('0x5'));var config=require(_0x2e90('0x6'));var jayson=require(_0x2e90('0x7'));var client=jayson[_0x2e90('0x8')][_0x2e90('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3fa4ef,_0xf43192,_0x24fb0a){return new BPromise(function(_0x4c0a5f,_0x30571d){return client['request'](_0x3fa4ef,_0x24fb0a)[_0x2e90('0xa')](function(_0x4698e8){logger['info'](_0x2e90('0xb'),_0xf43192,_0x2e90('0xc'));logger[_0x2e90('0xd')](_0x2e90('0xe'),_0xf43192,_0x2e90('0xc'),JSON[_0x2e90('0xf')](_0x4698e8));if(_0x4698e8[_0x2e90('0x10')]){if(_0x4698e8['error'][_0x2e90('0x11')]===0x1f4){logger['error'](_0x2e90('0xb'),_0xf43192,_0x4698e8[_0x2e90('0x10')][_0x2e90('0x12')]);return _0x30571d(_0x4698e8[_0x2e90('0x10')]['message']);}logger[_0x2e90('0x10')](_0x2e90('0xb'),_0xf43192,_0x4698e8['error']['message']);return _0x4c0a5f(_0x4698e8[_0x2e90('0x10')][_0x2e90('0x12')]);}else{logger[_0x2e90('0x13')](_0x2e90('0xb'),_0xf43192,_0x2e90('0xc'));_0x4c0a5f(_0x4698e8[_0x2e90('0x14')][_0x2e90('0x12')]);}})[_0x2e90('0x15')](function(_0x105c74){logger[_0x2e90('0x10')](_0x2e90('0xb'),_0xf43192,_0x105c74);_0x30571d(_0x105c74);});});}exports[_0x2e90('0x16')]=function(_0x58d6e7){var _0x253192=this;return new Promise(function(_0x591e5f,_0x260995){return db[_0x2e90('0x17')][_0x2e90('0x18')]({'raw':_0x58d6e7[_0x2e90('0x19')]?_0x58d6e7['options'][_0x2e90('0x1a')]===undefined?!![]:![]:!![],'where':_0x58d6e7[_0x2e90('0x19')]?_0x58d6e7[_0x2e90('0x19')][_0x2e90('0x1b')]||null:null,'attributes':_0x58d6e7['options']?_0x58d6e7[_0x2e90('0x19')][_0x2e90('0x1c')]||null:null,'limit':_0x58d6e7[_0x2e90('0x19')]?_0x58d6e7[_0x2e90('0x19')]['limit']||null:null,'include':_0x58d6e7['options']?_0x58d6e7['options'][_0x2e90('0x1d')]?_[_0x2e90('0x1e')](_0x58d6e7['options'][_0x2e90('0x1d')],function(_0x51665e){return{'model':db[_0x51665e[_0x2e90('0x1f')]],'as':_0x51665e['as'],'attributes':_0x51665e['attributes'],'include':_0x51665e[_0x2e90('0x1d')]?_['map'](_0x51665e[_0x2e90('0x1d')],function(_0x223c7f){return{'model':db[_0x223c7f[_0x2e90('0x1f')]],'as':_0x223c7f['as'],'attributes':_0x223c7f[_0x2e90('0x1c')],'include':_0x223c7f[_0x2e90('0x1d')]?_['map'](_0x223c7f[_0x2e90('0x1d')],function(_0x2808d7){return{'model':db[_0x2808d7[_0x2e90('0x1f')]],'as':_0x2808d7['as'],'attributes':_0x2808d7[_0x2e90('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xc12dcb){logger[_0x2e90('0x13')](_0x2e90('0x16'),_0x58d6e7);logger[_0x2e90('0xd')](_0x2e90('0x16'),_0x58d6e7,JSON[_0x2e90('0xf')](_0xc12dcb));_0x591e5f(_0xc12dcb);})[_0x2e90('0x15')](function(_0x40f757){logger['error'](_0x2e90('0x16'),_0x40f757[_0x2e90('0x12')],_0x58d6e7);_0x260995(_0x253192[_0x2e90('0x10')](0x1f4,_0x40f757[_0x2e90('0x12')]));});});};exports[_0x2e90('0x20')]=function(_0x4e8e13){var _0x21edda=this;return new Promise(function(_0x17b6b3,_0x510325){return db[_0x2e90('0x17')][_0x2e90('0x21')](_0x4e8e13['body'],{'raw':_0x4e8e13[_0x2e90('0x19')]?_0x4e8e13[_0x2e90('0x19')][_0x2e90('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4e8e13['options']?_0x4e8e13[_0x2e90('0x19')][_0x2e90('0x1b')]||null:null,'attributes':_0x4e8e13[_0x2e90('0x19')]?_0x4e8e13['options'][_0x2e90('0x1c')]||null:null,'limit':_0x4e8e13[_0x2e90('0x19')]?_0x4e8e13[_0x2e90('0x19')]['limit']||null:null})[_0x2e90('0xa')](function(_0x140ad1){logger[_0x2e90('0x13')](_0x2e90('0x20'),_0x4e8e13);logger[_0x2e90('0xd')](_0x2e90('0x20'),_0x4e8e13,JSON[_0x2e90('0xf')](_0x140ad1));_0x17b6b3(_0x140ad1);})[_0x2e90('0x15')](function(_0x3c333a){logger['error'](_0x2e90('0x20'),_0x3c333a[_0x2e90('0x12')],_0x4e8e13);_0x510325(_0x21edda[_0x2e90('0x10')](0x1f4,_0x3c333a[_0x2e90('0x12')]));});});};exports['DestroyCmHopperBlack']=function(_0x3565b5){var _0x5cf0fb=this;return new Promise(function(_0x349f67,_0x14b6f0){return db[_0x2e90('0x17')][_0x2e90('0x22')]({'where':_0x3565b5[_0x2e90('0x19')]?_0x3565b5['options'][_0x2e90('0x1b')]||null:null})['then'](function(_0x4d7bde){logger[_0x2e90('0x13')](_0x2e90('0x23'),_0x3565b5);logger[_0x2e90('0xd')]('DestroyCmHopperBlack',_0x3565b5,JSON[_0x2e90('0xf')](_0x4d7bde));_0x349f67(_0x4d7bde);})[_0x2e90('0x15')](function(_0x2fe8cd){logger[_0x2e90('0x10')]('DestroyCmHopperBlack',_0x2fe8cd[_0x2e90('0x12')],_0x3565b5);_0x14b6f0(_0x5cf0fb[_0x2e90('0x10')](0x1f4,_0x2fe8cd[_0x2e90('0x12')]));});});};
\ No newline at end of file
+var _0x78ba=['util','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopperBlack,\x20%s,\x20%s','message','result','catch','GetCmHopperBlack','options','raw','where','attributes','limit','include','map','model','then','CmHopperBlack','update','body','UpdateCmHopperBlack','DestroyCmHopperBlack','destroy','lodash'];(function(_0x1b5838,_0x25ec5b){var _0x213065=function(_0xde01bf){while(--_0xde01bf){_0x1b5838['push'](_0x1b5838['shift']());}};_0x213065(++_0x25ec5b);}(_0x78ba,0x1a1));var _0xa78b=function(_0x53390f,_0x510ac7){_0x53390f=_0x53390f-0x0;var _0xb73524=_0x78ba[_0x53390f];return _0xb73524;};'use strict';var _=require(_0xa78b('0x0'));var util=require(_0xa78b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa78b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa78b('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa78b('0x4'))(_0xa78b('0x5'));var config=require(_0xa78b('0x6'));var jayson=require(_0xa78b('0x7'));var client=jayson[_0xa78b('0x8')][_0xa78b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x140cff,_0x270341,_0x1b4672){return new BPromise(function(_0x3aa0c9,_0x4bb48a){return client[_0xa78b('0xa')](_0x140cff,_0x1b4672)['then'](function(_0x5e2762){logger[_0xa78b('0xb')]('CmHopperBlack,\x20%s,\x20%s',_0x270341,_0xa78b('0xc'));logger[_0xa78b('0xd')](_0xa78b('0xe'),_0x270341,_0xa78b('0xc'),JSON[_0xa78b('0xf')](_0x5e2762));if(_0x5e2762[_0xa78b('0x10')]){if(_0x5e2762[_0xa78b('0x10')][_0xa78b('0x11')]===0x1f4){logger[_0xa78b('0x10')](_0xa78b('0x12'),_0x270341,_0x5e2762[_0xa78b('0x10')]['message']);return _0x4bb48a(_0x5e2762[_0xa78b('0x10')][_0xa78b('0x13')]);}logger[_0xa78b('0x10')](_0xa78b('0x12'),_0x270341,_0x5e2762[_0xa78b('0x10')][_0xa78b('0x13')]);return _0x3aa0c9(_0x5e2762[_0xa78b('0x10')][_0xa78b('0x13')]);}else{logger[_0xa78b('0xb')]('CmHopperBlack,\x20%s,\x20%s',_0x270341,_0xa78b('0xc'));_0x3aa0c9(_0x5e2762[_0xa78b('0x14')][_0xa78b('0x13')]);}})[_0xa78b('0x15')](function(_0x441b7c){logger['error'](_0xa78b('0x12'),_0x270341,_0x441b7c);_0x4bb48a(_0x441b7c);});});}exports[_0xa78b('0x16')]=function(_0x160d7b){var _0x2539c4=this;return new Promise(function(_0x6f79b0,_0x54a215){return db['CmHopperBlack']['findAll']({'raw':_0x160d7b[_0xa78b('0x17')]?_0x160d7b[_0xa78b('0x17')][_0xa78b('0x18')]===undefined?!![]:![]:!![],'where':_0x160d7b[_0xa78b('0x17')]?_0x160d7b['options'][_0xa78b('0x19')]||null:null,'attributes':_0x160d7b[_0xa78b('0x17')]?_0x160d7b[_0xa78b('0x17')][_0xa78b('0x1a')]||null:null,'limit':_0x160d7b[_0xa78b('0x17')]?_0x160d7b[_0xa78b('0x17')][_0xa78b('0x1b')]||null:null,'include':_0x160d7b[_0xa78b('0x17')]?_0x160d7b[_0xa78b('0x17')][_0xa78b('0x1c')]?_[_0xa78b('0x1d')](_0x160d7b[_0xa78b('0x17')][_0xa78b('0x1c')],function(_0x484d33){return{'model':db[_0x484d33['model']],'as':_0x484d33['as'],'attributes':_0x484d33[_0xa78b('0x1a')],'include':_0x484d33['include']?_[_0xa78b('0x1d')](_0x484d33[_0xa78b('0x1c')],function(_0x4ee825){return{'model':db[_0x4ee825[_0xa78b('0x1e')]],'as':_0x4ee825['as'],'attributes':_0x4ee825[_0xa78b('0x1a')],'include':_0x4ee825[_0xa78b('0x1c')]?_[_0xa78b('0x1d')](_0x4ee825[_0xa78b('0x1c')],function(_0x26aea5){return{'model':db[_0x26aea5[_0xa78b('0x1e')]],'as':_0x26aea5['as'],'attributes':_0x26aea5['attributes']};}):[]};}):[]};}):[]:[]})[_0xa78b('0x1f')](function(_0xd88470){logger[_0xa78b('0xb')]('GetCmHopperBlack',_0x160d7b);logger[_0xa78b('0xd')](_0xa78b('0x16'),_0x160d7b,JSON['stringify'](_0xd88470));_0x6f79b0(_0xd88470);})[_0xa78b('0x15')](function(_0x2a83e4){logger['error'](_0xa78b('0x16'),_0x2a83e4['message'],_0x160d7b);_0x54a215(_0x2539c4[_0xa78b('0x10')](0x1f4,_0x2a83e4[_0xa78b('0x13')]));});});};exports['UpdateCmHopperBlack']=function(_0x408149){var _0x12841a=this;return new Promise(function(_0x36634e,_0xfe49b8){return db[_0xa78b('0x20')][_0xa78b('0x21')](_0x408149[_0xa78b('0x22')],{'raw':_0x408149[_0xa78b('0x17')]?_0x408149[_0xa78b('0x17')][_0xa78b('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x408149[_0xa78b('0x17')]?_0x408149[_0xa78b('0x17')][_0xa78b('0x19')]||null:null,'attributes':_0x408149[_0xa78b('0x17')]?_0x408149['options'][_0xa78b('0x1a')]||null:null,'limit':_0x408149[_0xa78b('0x17')]?_0x408149[_0xa78b('0x17')][_0xa78b('0x1b')]||null:null})[_0xa78b('0x1f')](function(_0xa9d364){logger['info'](_0xa78b('0x23'),_0x408149);logger[_0xa78b('0xd')]('UpdateCmHopperBlack',_0x408149,JSON[_0xa78b('0xf')](_0xa9d364));_0x36634e(_0xa9d364);})[_0xa78b('0x15')](function(_0x3b1569){logger['error'](_0xa78b('0x23'),_0x3b1569[_0xa78b('0x13')],_0x408149);_0xfe49b8(_0x12841a[_0xa78b('0x10')](0x1f4,_0x3b1569['message']));});});};exports[_0xa78b('0x24')]=function(_0x13db08){var _0x54f245=this;return new Promise(function(_0x45924d,_0x7451d2){return db[_0xa78b('0x20')][_0xa78b('0x25')]({'where':_0x13db08[_0xa78b('0x17')]?_0x13db08[_0xa78b('0x17')][_0xa78b('0x19')]||null:null})[_0xa78b('0x1f')](function(_0x476383){logger['info'](_0xa78b('0x24'),_0x13db08);logger[_0xa78b('0xd')]('DestroyCmHopperBlack',_0x13db08,JSON[_0xa78b('0xf')](_0x476383));_0x45924d(_0x476383);})[_0xa78b('0x15')](function(_0x10ad66){logger[_0xa78b('0x10')](_0xa78b('0x24'),_0x10ad66['message'],_0x13db08);_0x7451d2(_0x54f245[_0xa78b('0x10')](0x1f4,_0x10ad66[_0xa78b('0x13')]));});});};
\ No newline at end of file
index 5fff3b9..14ac30c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['isAuthenticated','index','/describe','/:id','show','update','destroy','multer','util','path','connect-timeout','express','Router','../../config/environment','./cmHopperBlack.controller','get'];(function(_0x3adc93,_0x1e1a10){var _0x3f3abf=function(_0x5bd193){while(--_0x5bd193){_0x3adc93['push'](_0x3adc93['shift']());}};_0x3f3abf(++_0x1e1a10);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xc4aa[_0x53ccf2];return _0x5a2964;};'use strict';var multer=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var path=require(_0xac4a('0x2'));var timeout=require(_0xac4a('0x3'));var express=require(_0xac4a('0x4'));var router=express[_0xac4a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xac4a('0x6'));var controller=require(_0xac4a('0x7'));router[_0xac4a('0x8')]('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xa')]);router[_0xac4a('0x8')](_0xac4a('0xb'),auth[_0xac4a('0x9')](),controller['describe']);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xd')]);router['put'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xe')]);router['delete'](_0xac4a('0xc'),auth['isAuthenticated'](),controller[_0xac4a('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x2675=['../../components/auth/service','../../components/interaction/service','./cmHopperBlack.controller','get','isAuthenticated','index','/describe','describe','put','/:id','delete','exports','multer','express','Router'];(function(_0x1992ec,_0x2c9b60){var _0x25dfcf=function(_0x509127){while(--_0x509127){_0x1992ec['push'](_0x1992ec['shift']());}};_0x25dfcf(++_0x2c9b60);}(_0x2675,0x75));var _0x5267=function(_0x3560b1,_0x41b664){_0x3560b1=_0x3560b1-0x0;var _0x46996a=_0x2675[_0x3560b1];return _0x46996a;};'use strict';var multer=require(_0x5267('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5267('0x1'));var router=express[_0x5267('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x5267('0x3'));var interaction=require(_0x5267('0x4'));var config=require('../../config/environment');var controller=require(_0x5267('0x5'));router[_0x5267('0x6')]('/',auth[_0x5267('0x7')](),controller[_0x5267('0x8')]);router[_0x5267('0x6')](_0x5267('0x9'),auth['isAuthenticated'](),controller[_0x5267('0xa')]);router[_0x5267('0x6')]('/:id',auth[_0x5267('0x7')](),controller['show']);router[_0x5267('0xb')](_0x5267('0xc'),auth[_0x5267('0x7')](),controller['update']);router[_0x5267('0xd')]('/:id',auth[_0x5267('0x7')](),controller['destroy']);module[_0x5267('0xe')]=router;
\ No newline at end of file
index afb2e82..d6db345 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ff3=['STRING','DATE','getDataValue','endtime','setDataValue','followuptime','diff','seconds','dispositionat','BOOLEAN','sequelize','moment','exports','INTEGER'];(function(_0x1220dc,_0x448145){var _0x264ada=function(_0x171972){while(--_0x171972){_0x1220dc['push'](_0x1220dc['shift']());}};_0x264ada(++_0x448145);}(_0x0ff3,0x7a));var _0x30ff=function(_0x371841,_0x30d8db){_0x371841=_0x371841-0x0;var _0xc41d83=_0x0ff3[_0x371841];return _0xc41d83;};'use strict';var Sequelize=require(_0x30ff('0x0'));var moment=require(_0x30ff('0x1'));module[_0x30ff('0x2')]={'state':{'type':Sequelize[_0x30ff('0x3')](0x2)},'statedesc':{'type':Sequelize[_0x30ff('0x4')]},'scheduledat':{'type':Sequelize[_0x30ff('0x5')]},'countbusyretry':{'type':Sequelize[_0x30ff('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x30ff('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x30ff('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x30ff('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x30ff('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x30ff('0x4')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x30ff('0x4')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x30ff('0x5')]},'answertime':{'type':Sequelize[_0x30ff('0x5')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x30ff('0x5')]},'ringtime':{'type':Sequelize[_0x30ff('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x30ff('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x30ff('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x30ff('0x4')]},'campaign':{'type':Sequelize[_0x30ff('0x4')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x30ff('0x4')]},'reason':{'type':Sequelize[_0x30ff('0x4')]},'disposition':{'type':Sequelize[_0x30ff('0x4')]},'secondDisposition':{'type':Sequelize[_0x30ff('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x23ef62){var _0xd537ec=this[_0x30ff('0x6')](_0x30ff('0x7'));if(_0xd537ec&&_0x23ef62){this[_0x30ff('0x8')](_0x30ff('0x9'),moment(_0x23ef62)[_0x30ff('0xa')](moment(_0xd537ec),_0x30ff('0xb')));}return this[_0x30ff('0x8')](_0x30ff('0xc'),_0x23ef62);}},'amd':{'type':Sequelize[_0x30ff('0xd')],'defaultValue':![]},'fax':{'type':Sequelize[_0x30ff('0xd')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x30ff('0xd')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x30ff('0xd')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x30ff('0x5')]},'callback':{'type':Sequelize[_0x30ff('0xd')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x30ff('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x30ff('0x5')]},'deleted':{'type':Sequelize[_0x30ff('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x30ff('0x5')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x30ff('0x5')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x30ff('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x30ff('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x49c0=['diff','BOOLEAN','sequelize','moment','exports','DATE','INTEGER','STRING','endtime','setDataValue','followuptime'];(function(_0x296c48,_0x26571f){var _0x46de16=function(_0x2b2335){while(--_0x2b2335){_0x296c48['push'](_0x296c48['shift']());}};_0x46de16(++_0x26571f);}(_0x49c0,0x86));var _0x049c=function(_0x140243,_0x172c22){_0x140243=_0x140243-0x0;var _0x2731ba=_0x49c0[_0x140243];return _0x2731ba;};'use strict';var Sequelize=require(_0x049c('0x0'));var moment=require(_0x049c('0x1'));module[_0x049c('0x2')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x049c('0x3')]},'countbusyretry':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x049c('0x5')]},'originatecalleridname':{'type':Sequelize[_0x049c('0x5')]},'calleridnum':{'type':Sequelize[_0x049c('0x5')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x049c('0x3')]},'responsetime':{'type':Sequelize[_0x049c('0x3')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x049c('0x5')]},'campaign':{'type':Sequelize[_0x049c('0x5')]},'campaigntype':{'type':Sequelize[_0x049c('0x5')]},'membername':{'type':Sequelize[_0x049c('0x5')]},'reason':{'type':Sequelize[_0x049c('0x5')]},'disposition':{'type':Sequelize[_0x049c('0x5')]},'secondDisposition':{'type':Sequelize[_0x049c('0x5')]},'thirdDisposition':{'type':Sequelize[_0x049c('0x5')]},'dispositionat':{'type':Sequelize[_0x049c('0x3')],'set':function(_0x332053){var _0x56f4fc=this['getDataValue'](_0x049c('0x6'));if(_0x56f4fc&&_0x332053){this[_0x049c('0x7')](_0x049c('0x8'),moment(_0x332053)[_0x049c('0x9')](moment(_0x56f4fc),'seconds'));}return this[_0x049c('0x7')]('dispositionat',_0x332053);}},'amd':{'type':Sequelize[_0x049c('0xa')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x049c('0x3')]},'callback':{'type':Sequelize[_0x049c('0xa')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x049c('0x5')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x049c('0x3')]},'deleted':{'type':Sequelize[_0x049c('0x5')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x049c('0x3')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x049c('0x3')]},'countnosuchnumberretry':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 146e46d..b11a699 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','cm_hopper','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','toString','group','moveContactsIvrCampaignHopperFinal','scheduledAt','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','from','state\x20=\x204','checkContactHopper','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','apply','save','update','then','destroy','end','sendStatus','error','stack','name','index','map','CmHopperFinal','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','options','includeAll','include','findAll','params','find','catch','describe','uniqueid','body','countContactsQueueCampaignHopperFinal','sequelize','COUNT','`state`\x20=\x200,\x201,\x20null','noSuchContacts','literal','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','busyContacts','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','noAnswerContacts','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','fromQuery','phone','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','cm_hopper_final','VoiceQueueId\x20=\x20?'];(function(_0x42ca61,_0x26f359){var _0x5a2dc8=function(_0x2fa349){while(--_0x2fa349){_0x42ca61['push'](_0x42ca61['shift']());}};_0x5a2dc8(++_0x26f359);}(_0x57ca,0x108));var _0xa57c=function(_0x54574a,_0x362dba){_0x54574a=_0x54574a-0x0;var _0x3bddc9=_0x57ca[_0x54574a];return _0x3bddc9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa57c('0x0'));var zipdir=require(_0xa57c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa57c('0x2'));var moment=require(_0xa57c('0x3'));var BPromise=require(_0xa57c('0x4'));var Mustache=require(_0xa57c('0x5'));var util=require(_0xa57c('0x6'));var path=require('path');var sox=require(_0xa57c('0x7'));var csv=require(_0xa57c('0x8'));var ejs=require(_0xa57c('0x9'));var fs=require('fs');var fs_extra=require(_0xa57c('0xa'));var _=require(_0xa57c('0xb'));var squel=require(_0xa57c('0xc'));var crypto=require(_0xa57c('0xd'));var jsforce=require(_0xa57c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xa57c('0x8'));var querystring=require('querystring');var Papa=require(_0xa57c('0xf'));var Redis=require(_0xa57c('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xa57c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa57c('0x12'));var logger=require(_0xa57c('0x13'))('api');var utils=require(_0xa57c('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa57c('0x15'));var db=require(_0xa57c('0x16'))['db'];function respondWithStatusCode(_0x1f2bb5,_0x9e25bf){_0x9e25bf=_0x9e25bf||0xcc;return function(_0x205e72){if(_0x205e72){return _0x1f2bb5['sendStatus'](_0x9e25bf);}return _0x1f2bb5[_0xa57c('0x17')](_0x9e25bf)['end']();};}function respondWithResult(_0x30d23d,_0x3d5995){_0x3d5995=_0x3d5995||0xc8;return function(_0x30940d){if(_0x30940d){return _0x30d23d[_0xa57c('0x17')](_0x3d5995)[_0xa57c('0x18')](_0x30940d);}};}function respondWithFilteredResult(_0x37a323,_0x3f900a){return function(_0x4b4bdb){if(_0x4b4bdb){var _0x26607a=typeof _0x3f900a[_0xa57c('0x19')]===_0xa57c('0x1a')&&typeof _0x3f900a['limit']===_0xa57c('0x1a');var _0x5f33f1=_0x4b4bdb[_0xa57c('0x1b')];var _0x3d781d=_0x26607a?0x0:_0x3f900a[_0xa57c('0x19')];var _0xe3d505=_0x26607a?_0x4b4bdb[_0xa57c('0x1b')]:_0x3f900a[_0xa57c('0x19')]+_0x3f900a[_0xa57c('0x1c')];var _0x595c7a;if(_0xe3d505>=_0x5f33f1){_0xe3d505=_0x5f33f1;_0x595c7a=0xc8;}else{_0x595c7a=0xce;}_0x37a323['status'](_0x595c7a);return _0x37a323[_0xa57c('0x1d')]('Content-Range',_0x3d781d+'-'+_0xe3d505+'/'+_0x5f33f1)['json'](_0x4b4bdb);}return null;};}function patchUpdates(_0x418415){return function(_0xa5b314){try{jsonpatch[_0xa57c('0x1e')](_0xa5b314,_0x418415,!![]);}catch(_0x23bec0){return BPromise['reject'](_0x23bec0);}return _0xa5b314[_0xa57c('0x1f')]();};}function saveUpdates(_0x25715f,_0x34d1bc){return function(_0x2213b2){if(_0x2213b2){return _0x2213b2[_0xa57c('0x20')](_0x25715f)[_0xa57c('0x21')](function(_0x1e0192){return _0x1e0192;});}return null;};}function removeEntity(_0x42038e,_0x2e99ed){return function(_0xdf65dd){if(_0xdf65dd){return _0xdf65dd[_0xa57c('0x22')]()[_0xa57c('0x21')](function(){_0x42038e[_0xa57c('0x17')](0xcc)[_0xa57c('0x23')]();});}};}function handleEntityNotFound(_0x431bec,_0x511a26){return function(_0x2db443){if(!_0x2db443){_0x431bec[_0xa57c('0x24')](0x194);}return _0x2db443;};}function handleError(_0x27884d,_0x5228b9){_0x5228b9=_0x5228b9||0x1f4;return function(_0x315ad7){logger[_0xa57c('0x25')](_0x315ad7[_0xa57c('0x26')]);if(_0x315ad7[_0xa57c('0x27')]){delete _0x315ad7[_0xa57c('0x27')];}_0x27884d[_0xa57c('0x17')](_0x5228b9)['send'](_0x315ad7);};}exports[_0xa57c('0x28')]=function(_0x4c1478,_0x54a18b){var _0x257661={},_0x7d10ec={},_0x5a3e03={'count':0x0,'rows':[]};var _0x12898b=_[_0xa57c('0x29')](db[_0xa57c('0x2a')]['rawAttributes'],function(_0xd779f1){return{'name':_0xd779f1['fieldName'],'type':_0xd779f1[_0xa57c('0x2b')]['key']};});_0x7d10ec[_0xa57c('0x2c')]=_['map'](_0x12898b,_0xa57c('0x27'));_0x7d10ec['query']=_[_0xa57c('0x2d')](_0x4c1478[_0xa57c('0x2e')]);_0x7d10ec[_0xa57c('0x2f')]=_[_0xa57c('0x30')](_0x7d10ec[_0xa57c('0x2c')],_0x7d10ec[_0xa57c('0x2e')]);_0x257661[_0xa57c('0x31')]=_['intersection'](_0x7d10ec[_0xa57c('0x2c')],qs['fields'](_0x4c1478[_0xa57c('0x2e')][_0xa57c('0x32')]));_0x257661[_0xa57c('0x31')]=_0x257661['attributes'][_0xa57c('0x33')]?_0x257661['attributes']:_0x7d10ec[_0xa57c('0x2c')];if(!_0x4c1478['query'][_0xa57c('0x34')]('nolimit')){_0x257661[_0xa57c('0x1c')]=qs[_0xa57c('0x1c')](_0x4c1478['query'][_0xa57c('0x1c')]);_0x257661['offset']=qs[_0xa57c('0x19')](_0x4c1478['query'][_0xa57c('0x19')]);}_0x257661[_0xa57c('0x35')]=qs[_0xa57c('0x36')](_0x4c1478[_0xa57c('0x2e')][_0xa57c('0x36')]);_0x257661[_0xa57c('0x37')]=qs['filters'](_['pick'](_0x4c1478[_0xa57c('0x2e')],_0x7d10ec[_0xa57c('0x2f')]),_0x12898b);if(_0x4c1478[_0xa57c('0x2e')]['filter']){_0x257661[_0xa57c('0x37')]=_['merge'](_0x257661[_0xa57c('0x37')],{'$or':_[_0xa57c('0x29')](_0x12898b,function(_0x5c8256){if(_0x5c8256['type']!=='VIRTUAL'){var _0x3be888={};_0x3be888[_0x5c8256[_0xa57c('0x27')]]={'$like':'%'+_0x4c1478[_0xa57c('0x2e')][_0xa57c('0x38')]+'%'};return _0x3be888;}})});}_0x257661=_[_0xa57c('0x39')]({},_0x257661,_0x4c1478[_0xa57c('0x3a')]);var _0x5a444a={'where':_0x257661[_0xa57c('0x37')]};return db[_0xa57c('0x2a')]['count'](_0x5a444a)['then'](function(_0x5e10b){_0x5a3e03[_0xa57c('0x1b')]=_0x5e10b;if(_0x4c1478['query'][_0xa57c('0x3b')]){_0x257661[_0xa57c('0x3c')]=[{'all':!![]}];}return db[_0xa57c('0x2a')][_0xa57c('0x3d')](_0x257661);})[_0xa57c('0x21')](function(_0x43c1d7){_0x5a3e03['rows']=_0x43c1d7;return _0x5a3e03;})[_0xa57c('0x21')](respondWithFilteredResult(_0x54a18b,_0x257661))['catch'](handleError(_0x54a18b,null));};exports['show']=function(_0x5b3300,_0x520383){var _0x588199={'raw':!![],'where':{'id':_0x5b3300[_0xa57c('0x3e')]['id']}},_0x39b20f={};_0x39b20f[_0xa57c('0x2c')]=_['keys'](db['CmHopperFinal']['rawAttributes']);_0x39b20f[_0xa57c('0x2e')]=_[_0xa57c('0x2d')](_0x5b3300[_0xa57c('0x2e')]);_0x39b20f[_0xa57c('0x2f')]=_[_0xa57c('0x30')](_0x39b20f[_0xa57c('0x2c')],_0x39b20f['query']);_0x588199[_0xa57c('0x31')]=_[_0xa57c('0x30')](_0x39b20f[_0xa57c('0x2c')],qs[_0xa57c('0x32')](_0x5b3300[_0xa57c('0x2e')][_0xa57c('0x32')]));_0x588199['attributes']=_0x588199[_0xa57c('0x31')][_0xa57c('0x33')]?_0x588199[_0xa57c('0x31')]:_0x39b20f[_0xa57c('0x2c')];if(_0x5b3300[_0xa57c('0x2e')]['includeAll']){_0x588199[_0xa57c('0x3c')]=[{'all':!![]}];}_0x588199=_[_0xa57c('0x39')]({},_0x588199,_0x5b3300[_0xa57c('0x3a')]);return db[_0xa57c('0x2a')][_0xa57c('0x3f')](_0x588199)[_0xa57c('0x21')](handleEntityNotFound(_0x520383,null))['then'](respondWithResult(_0x520383,null))[_0xa57c('0x40')](handleError(_0x520383,null));};exports[_0xa57c('0x41')]=function(_0x247906,_0x44ea0a){return db[_0xa57c('0x2a')][_0xa57c('0x41')]()['then'](respondWithResult(_0x44ea0a,null))['catch'](handleError(_0x44ea0a,null));};exports['update']=function(_0x5082ef,_0x232675){if(_0x5082ef['body'][_0xa57c('0x42')]){delete _0x5082ef[_0xa57c('0x43')]['uniqueid'];}return db[_0xa57c('0x2a')][_0xa57c('0x3f')]({'where':{'uniqueid':_0x5082ef[_0xa57c('0x3e')]['id']}})[_0xa57c('0x21')](handleEntityNotFound(_0x232675,null))[_0xa57c('0x21')](saveUpdates(_0x5082ef['body'],null))[_0xa57c('0x21')](respondWithResult(_0x232675,null))[_0xa57c('0x40')](handleError(_0x232675,null));};exports[_0xa57c('0x44')]=function(_0xd57bac,_0x2e4b84,_0x5ace6d){return db[_0xa57c('0x2a')]['findAll']({'raw':![],'where':{'VoiceQueueId':_0xd57bac['params']['id']},'attributes':[[db[_0xa57c('0x45')]['fn'](_0xa57c('0x46'),db[_0xa57c('0x45')]['fn']('IF',db['sequelize']['literal'](_0xa57c('0x47')))),_0xa57c('0x48')],[db[_0xa57c('0x45')]['fn'](_0xa57c('0x46'),db['sequelize']['fn']('IF',db[_0xa57c('0x45')][_0xa57c('0x49')](_0xa57c('0x4a')))),'noAnswerContacts'],[db['sequelize']['fn'](_0xa57c('0x46'),db[_0xa57c('0x45')]['fn']('IF',db['sequelize'][_0xa57c('0x49')](_0xa57c('0x4b')))),_0xa57c('0x4c')],[db[_0xa57c('0x45')]['fn'](_0xa57c('0x46'),db[_0xa57c('0x45')]['fn']('IF',db[_0xa57c('0x45')]['literal']('`state`\x20=\x208,\x201,\x20null'))),_0xa57c('0x4d')],[db[_0xa57c('0x45')]['fn'](_0xa57c('0x46'),db[_0xa57c('0x45')]['fn']('IF',db[_0xa57c('0x45')][_0xa57c('0x49')](_0xa57c('0x4e')))),_0xa57c('0x4f')],[db['sequelize']['fn']('COUNT',db[_0xa57c('0x45')]['fn']('IF',db['sequelize'][_0xa57c('0x49')](_0xa57c('0x50')))),_0xa57c('0x51')],[db['sequelize']['fn'](_0xa57c('0x46'),db['sequelize']['fn']('IF',db[_0xa57c('0x45')]['literal'](_0xa57c('0x52')))),_0xa57c('0x53')],[db[_0xa57c('0x45')]['fn'](_0xa57c('0x46'),db['sequelize']['fn']('IF',db[_0xa57c('0x45')][_0xa57c('0x49')](_0xa57c('0x54')))),_0xa57c('0x55')]]})[_0xa57c('0x21')](handleEntityNotFound(_0x2e4b84,null))['then'](respondWithResult(_0x2e4b84,null))[_0xa57c('0x40')](handleError(_0x2e4b84,null));};exports[_0xa57c('0x56')]=function(_0x1899ad,_0xb19d93,_0x2adcf6){return db[_0xa57c('0x2a')][_0xa57c('0x3d')]({'raw':![],'where':{'CampaignId':_0x1899ad[_0xa57c('0x3e')]['id']},'attributes':[[db[_0xa57c('0x45')]['fn'](_0xa57c('0x46'),db['sequelize']['fn']('IF',db[_0xa57c('0x45')][_0xa57c('0x49')](_0xa57c('0x47')))),_0xa57c('0x48')],[db[_0xa57c('0x45')]['fn'](_0xa57c('0x46'),db['sequelize']['fn']('IF',db[_0xa57c('0x45')][_0xa57c('0x49')]('`state`\x20=\x203,\x201,\x20null'))),_0xa57c('0x57')],[db[_0xa57c('0x45')]['fn'](_0xa57c('0x46'),db[_0xa57c('0x45')]['fn']('IF',db[_0xa57c('0x45')][_0xa57c('0x49')](_0xa57c('0x4b')))),'busyContacts'],[db[_0xa57c('0x45')]['fn']('COUNT',db[_0xa57c('0x45')]['fn']('IF',db['sequelize'][_0xa57c('0x49')]('`state`\x20=\x208,\x201,\x20null'))),_0xa57c('0x4d')],[db[_0xa57c('0x45')]['fn']('COUNT',db[_0xa57c('0x45')]['fn']('IF',db[_0xa57c('0x45')][_0xa57c('0x49')](_0xa57c('0x4e')))),'dropContacts'],[db[_0xa57c('0x45')]['fn'](_0xa57c('0x46'),db[_0xa57c('0x45')]['fn']('IF',db[_0xa57c('0x45')][_0xa57c('0x49')](_0xa57c('0x50')))),_0xa57c('0x51')],[db[_0xa57c('0x45')]['fn'](_0xa57c('0x46'),db[_0xa57c('0x45')]['fn']('IF',db[_0xa57c('0x45')][_0xa57c('0x49')](_0xa57c('0x52')))),_0xa57c('0x53')],[db[_0xa57c('0x45')]['fn'](_0xa57c('0x46'),db['sequelize']['fn']('IF',db[_0xa57c('0x45')]['literal'](_0xa57c('0x54')))),_0xa57c('0x55')]]})[_0xa57c('0x21')](handleEntityNotFound(_0xb19d93,null))['then'](respondWithResult(_0xb19d93,null))[_0xa57c('0x40')](handleError(_0xb19d93,null));};exports[_0xa57c('0x58')]=function(_0x1be631,_0x47e3d5,_0x571e10){return db[_0xa57c('0x59')][_0xa57c('0x3f')]({'where':{'id':_0x1be631[_0xa57c('0x3e')]['id']}})[_0xa57c('0x21')](handleEntityNotFound(_0x47e3d5,null))[_0xa57c('0x21')](function(_0x39411b){var _0x2a7aab;if(_0x39411b){_0x2a7aab=squel[_0xa57c('0x5a')]()[_0xa57c('0x5b')]('cm_hopper')[_0xa57c('0x5c')]([_0xa57c('0x5d'),'scheduledAt',_0xa57c('0x5e'),_0xa57c('0x5f'),_0xa57c('0x60'),_0xa57c('0x61'),_0xa57c('0x62')],squel[_0xa57c('0x63')]()[_0xa57c('0x64')](_0xa57c('0x65'),'phone')[_0xa57c('0x64')](_0xa57c('0x66'),'scheduledAt')[_0xa57c('0x64')](_0xa57c('0x67'),'ContactId')['field'](_0xa57c('0x68'),_0xa57c('0x5f'))[_0xa57c('0x64')](_0xa57c('0x69'),_0xa57c('0x60'))['field'](_0xa57c('0x66'),_0xa57c('0x61'))[_0xa57c('0x64')]('NOW()',_0xa57c('0x62'))['from'](_0xa57c('0x6a'))[_0xa57c('0x37')](_0xa57c('0x6b'),_0x1be631[_0xa57c('0x3e')]['id']['toString']())[_0xa57c('0x37')](_0xa57c('0x6c'),_0x1be631[_0xa57c('0x43')][_0xa57c('0x6d')]['toString']())[_0xa57c('0x37')](_0xa57c('0x6e'))[_0xa57c('0x37')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0xa57c('0x63')]()[_0xa57c('0x64')](_0xa57c('0x5d'))['from'](_0xa57c('0x6f'))[_0xa57c('0x37')](_0xa57c('0x6b'),_0x1be631[_0xa57c('0x3e')]['id']['toString']()))[_0xa57c('0x37')](_0xa57c('0x70'),squel['select']()[_0xa57c('0x64')](_0xa57c('0x71'))['from'](_0xa57c('0x6a'))['where'](_0xa57c('0x6b'),_0x1be631[_0xa57c('0x3e')]['id'][_0xa57c('0x72')]())[_0xa57c('0x37')]('state\x20=\x204'))[_0xa57c('0x73')](_0xa57c('0x5e')))[_0xa57c('0x72')]();return db[_0xa57c('0x45')][_0xa57c('0x2e')](_0x2a7aab);}return[];})[_0xa57c('0x21')](respondWithResult(_0x47e3d5,null))[_0xa57c('0x40')](handleError(_0x47e3d5,null));};exports[_0xa57c('0x74')]=function(_0x1129f,_0x2c4e6c,_0x46dbb1){return db['Campaign']['find']({'where':{'id':_0x1129f['params']['id']}})[_0xa57c('0x21')](handleEntityNotFound(_0x2c4e6c,null))['then'](function(_0x43c430){var _0x442dc7;if(_0x43c430){_0x442dc7=squel[_0xa57c('0x5a')]()['into'](_0xa57c('0x6f'))[_0xa57c('0x5c')]([_0xa57c('0x5d'),_0xa57c('0x75'),_0xa57c('0x5e'),_0xa57c('0x5f'),_0xa57c('0x76'),'createdAt',_0xa57c('0x62')],squel[_0xa57c('0x63')]()['field']('ANY_VALUE(calleridnum)',_0xa57c('0x5d'))[_0xa57c('0x64')]('NOW()','scheduledAt')[_0xa57c('0x64')]('ANY_VALUE(ContactId)',_0xa57c('0x5e'))[_0xa57c('0x64')]('ANY_VALUE(ListId)',_0xa57c('0x5f'))[_0xa57c('0x64')](_0xa57c('0x77'),_0xa57c('0x76'))[_0xa57c('0x64')]('NOW()',_0xa57c('0x61'))['field'](_0xa57c('0x66'),_0xa57c('0x62'))['from']('cm_hopper_final')['where'](_0xa57c('0x78'),_0x1129f['params']['id']['toString']())[_0xa57c('0x37')](_0xa57c('0x6c'),_0x1129f[_0xa57c('0x43')]['state'][_0xa57c('0x72')]())[_0xa57c('0x37')](_0xa57c('0x6e'))['where']('calleridnum\x20NOT\x20IN\x20(?)',squel[_0xa57c('0x63')]()['field'](_0xa57c('0x5d'))[_0xa57c('0x79')]('cm_hopper')[_0xa57c('0x37')]('CampaignId\x20=\x20?',_0x1129f['params']['id']['toString']()))[_0xa57c('0x37')]('calleridnum\x20NOT\x20IN\x20(?)',squel['select']()['field'](_0xa57c('0x71'))[_0xa57c('0x79')]('cm_hopper_final')[_0xa57c('0x37')](_0xa57c('0x78'),_0x1129f[_0xa57c('0x3e')]['id']['toString']())[_0xa57c('0x37')](_0xa57c('0x7a')))[_0xa57c('0x73')](_0xa57c('0x5e')))['toString']();return db['sequelize'][_0xa57c('0x2e')](_0x442dc7);}return[];})['then'](respondWithResult(_0x2c4e6c,null))[_0xa57c('0x40')](handleError(_0x2c4e6c,null));};exports[_0xa57c('0x7b')]=function(_0x2cc12b,_0x4dc6ac,_0x138c4e){return db['CmHopper']['findOne']({'where':{'VoiceQueueId':_0x2cc12b[_0xa57c('0x43')]['VoiceQueueId'],'CampaignId':_0x2cc12b[_0xa57c('0x43')][_0xa57c('0x76')],'ContactId':_0x2cc12b['body']['ContactId']}})[_0xa57c('0x21')](handleEntityNotFound(_0x4dc6ac,null))[_0xa57c('0x21')](function(_0x50a940){if(_0x50a940){return _0x50a940;}return null;})['then'](respondWithResult(_0x4dc6ac,null))[_0xa57c('0x40')](handleError(_0x4dc6ac,null));};
\ No newline at end of file
+var _0x814b=['into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','select','field','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(VoiceQueueId)','from','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','VoiceQueueId\x20=\x20?','state\x20=\x204','group','Campaign','ANY_VALUE(calleridnum)','ANY_VALUE(CampaignId)','CampaignId','cm_hopper_final','CampaignId\x20=\x20?','checkContactHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','options','CmHopperFinal','includeAll','include','findAll','catch','params','find','describe','body','uniqueid','sequelize','`state`\x20=\x200,\x201,\x20null','noSuchContacts','literal','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','COUNT','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','noAnswerContacts','busyContacts','congestionContacts','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert'];(function(_0x9cd4c3,_0x1c9b2c){var _0x4c9025=function(_0x25b3c6){while(--_0x25b3c6){_0x9cd4c3['push'](_0x9cd4c3['shift']());}};_0x4c9025(++_0x1c9b2c);}(_0x814b,0x1a2));var _0xb814=function(_0x554292,_0x82948a){_0x554292=_0x554292-0x0;var _0x3dd555=_0x814b[_0x554292];return _0x3dd555;};'use strict';var emlformat=require(_0xb814('0x0'));var rimraf=require(_0xb814('0x1'));var zipdir=require(_0xb814('0x2'));var jsonpatch=require(_0xb814('0x3'));var rp=require(_0xb814('0x4'));var moment=require(_0xb814('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb814('0x6'));var util=require(_0xb814('0x7'));var path=require(_0xb814('0x8'));var sox=require(_0xb814('0x9'));var csv=require(_0xb814('0xa'));var ejs=require(_0xb814('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb814('0xc'));var squel=require(_0xb814('0xd'));var crypto=require('crypto');var jsforce=require(_0xb814('0xe'));var deskjs=require(_0xb814('0xf'));var toCsv=require(_0xb814('0xa'));var querystring=require(_0xb814('0x10'));var Papa=require(_0xb814('0x11'));var Redis=require(_0xb814('0x12'));var authService=require(_0xb814('0x13'));var qs=require(_0xb814('0x14'));var as=require(_0xb814('0x15'));var hardwareService=require(_0xb814('0x16'));var logger=require(_0xb814('0x17'))('api');var utils=require(_0xb814('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xb814('0x19'));var db=require(_0xb814('0x1a'))['db'];function respondWithStatusCode(_0x35b10d,_0x2cc46b){_0x2cc46b=_0x2cc46b||0xcc;return function(_0x2ce718){if(_0x2ce718){return _0x35b10d[_0xb814('0x1b')](_0x2cc46b);}return _0x35b10d[_0xb814('0x1c')](_0x2cc46b)[_0xb814('0x1d')]();};}function respondWithResult(_0xa0a2e5,_0x2ab627){_0x2ab627=_0x2ab627||0xc8;return function(_0x3f4881){if(_0x3f4881){return _0xa0a2e5[_0xb814('0x1c')](_0x2ab627)[_0xb814('0x1e')](_0x3f4881);}};}function respondWithFilteredResult(_0x39bfcf,_0x303aca){return function(_0x3a71d6){if(_0x3a71d6){var _0x45e0d0=typeof _0x303aca[_0xb814('0x1f')]===_0xb814('0x20')&&typeof _0x303aca[_0xb814('0x21')]===_0xb814('0x20');var _0x48c9df=_0x3a71d6[_0xb814('0x22')];var _0x55ba16=_0x45e0d0?0x0:_0x303aca[_0xb814('0x1f')];var _0xfac75b=_0x45e0d0?_0x3a71d6['count']:_0x303aca['offset']+_0x303aca['limit'];var _0x399b43;if(_0xfac75b>=_0x48c9df){_0xfac75b=_0x48c9df;_0x399b43=0xc8;}else{_0x399b43=0xce;}_0x39bfcf['status'](_0x399b43);return _0x39bfcf['set'](_0xb814('0x23'),_0x55ba16+'-'+_0xfac75b+'/'+_0x48c9df)[_0xb814('0x1e')](_0x3a71d6);}return null;};}function patchUpdates(_0x25b6b6){return function(_0x4e139e){try{jsonpatch[_0xb814('0x24')](_0x4e139e,_0x25b6b6,!![]);}catch(_0x531032){return BPromise[_0xb814('0x25')](_0x531032);}return _0x4e139e[_0xb814('0x26')]();};}function saveUpdates(_0x3b267e,_0x470e81){return function(_0x27352e){if(_0x27352e){return _0x27352e[_0xb814('0x27')](_0x3b267e)[_0xb814('0x28')](function(_0x594470){return _0x594470;});}return null;};}function removeEntity(_0x2ead86,_0x52b7a3){return function(_0x3f81d0){if(_0x3f81d0){return _0x3f81d0[_0xb814('0x29')]()[_0xb814('0x28')](function(){_0x2ead86[_0xb814('0x1c')](0xcc)[_0xb814('0x1d')]();});}};}function handleEntityNotFound(_0xb9e57d,_0x3d836c){return function(_0x5755ea){if(!_0x5755ea){_0xb9e57d[_0xb814('0x1b')](0x194);}return _0x5755ea;};}function handleError(_0xc0ef66,_0x1c2625){_0x1c2625=_0x1c2625||0x1f4;return function(_0x349394){logger[_0xb814('0x2a')](_0x349394[_0xb814('0x2b')]);if(_0x349394[_0xb814('0x2c')]){delete _0x349394[_0xb814('0x2c')];}_0xc0ef66['status'](_0x1c2625)[_0xb814('0x2d')](_0x349394);};}exports[_0xb814('0x2e')]=function(_0x52ed64,_0x9008b2){var _0x37d24d={},_0x530744={},_0x499f22={'count':0x0,'rows':[]};var _0x20577b=_[_0xb814('0x2f')](db['CmHopperFinal'][_0xb814('0x30')],function(_0x526610){return{'name':_0x526610[_0xb814('0x31')],'type':_0x526610['type']['key']};});_0x530744[_0xb814('0x32')]=_['map'](_0x20577b,_0xb814('0x2c'));_0x530744[_0xb814('0x33')]=_[_0xb814('0x34')](_0x52ed64['query']);_0x530744['filters']=_[_0xb814('0x35')](_0x530744[_0xb814('0x32')],_0x530744['query']);_0x37d24d[_0xb814('0x36')]=_[_0xb814('0x35')](_0x530744[_0xb814('0x32')],qs[_0xb814('0x37')](_0x52ed64[_0xb814('0x33')][_0xb814('0x37')]));_0x37d24d[_0xb814('0x36')]=_0x37d24d['attributes'][_0xb814('0x38')]?_0x37d24d[_0xb814('0x36')]:_0x530744[_0xb814('0x32')];if(!_0x52ed64[_0xb814('0x33')][_0xb814('0x39')]('nolimit')){_0x37d24d[_0xb814('0x21')]=qs['limit'](_0x52ed64[_0xb814('0x33')][_0xb814('0x21')]);_0x37d24d[_0xb814('0x1f')]=qs['offset'](_0x52ed64[_0xb814('0x33')][_0xb814('0x1f')]);}_0x37d24d['order']=qs[_0xb814('0x3a')](_0x52ed64[_0xb814('0x33')][_0xb814('0x3a')]);_0x37d24d[_0xb814('0x3b')]=qs[_0xb814('0x3c')](_[_0xb814('0x3d')](_0x52ed64['query'],_0x530744[_0xb814('0x3c')]),_0x20577b);if(_0x52ed64['query'][_0xb814('0x3e')]){_0x37d24d['where']=_[_0xb814('0x3f')](_0x37d24d['where'],{'$or':_[_0xb814('0x2f')](_0x20577b,function(_0x26675a){if(_0x26675a['type']!=='VIRTUAL'){var _0x5dd6bc={};_0x5dd6bc[_0x26675a['name']]={'$like':'%'+_0x52ed64[_0xb814('0x33')][_0xb814('0x3e')]+'%'};return _0x5dd6bc;}})});}_0x37d24d=_[_0xb814('0x3f')]({},_0x37d24d,_0x52ed64[_0xb814('0x40')]);var _0x51cdba={'where':_0x37d24d['where']};return db[_0xb814('0x41')]['count'](_0x51cdba)[_0xb814('0x28')](function(_0x1098eb){_0x499f22[_0xb814('0x22')]=_0x1098eb;if(_0x52ed64[_0xb814('0x33')][_0xb814('0x42')]){_0x37d24d[_0xb814('0x43')]=[{'all':!![]}];}return db[_0xb814('0x41')][_0xb814('0x44')](_0x37d24d);})[_0xb814('0x28')](function(_0x4b6ff8){_0x499f22['rows']=_0x4b6ff8;return _0x499f22;})['then'](respondWithFilteredResult(_0x9008b2,_0x37d24d))[_0xb814('0x45')](handleError(_0x9008b2,null));};exports['show']=function(_0x29416a,_0x580171){var _0x411723={'raw':!![],'where':{'id':_0x29416a[_0xb814('0x46')]['id']}},_0x44ff56={};_0x44ff56[_0xb814('0x32')]=_['keys'](db[_0xb814('0x41')][_0xb814('0x30')]);_0x44ff56[_0xb814('0x33')]=_[_0xb814('0x34')](_0x29416a[_0xb814('0x33')]);_0x44ff56[_0xb814('0x3c')]=_['intersection'](_0x44ff56[_0xb814('0x32')],_0x44ff56[_0xb814('0x33')]);_0x411723[_0xb814('0x36')]=_[_0xb814('0x35')](_0x44ff56[_0xb814('0x32')],qs[_0xb814('0x37')](_0x29416a[_0xb814('0x33')]['fields']));_0x411723['attributes']=_0x411723[_0xb814('0x36')][_0xb814('0x38')]?_0x411723[_0xb814('0x36')]:_0x44ff56[_0xb814('0x32')];if(_0x29416a[_0xb814('0x33')][_0xb814('0x42')]){_0x411723[_0xb814('0x43')]=[{'all':!![]}];}_0x411723=_[_0xb814('0x3f')]({},_0x411723,_0x29416a[_0xb814('0x40')]);return db[_0xb814('0x41')][_0xb814('0x47')](_0x411723)['then'](handleEntityNotFound(_0x580171,null))[_0xb814('0x28')](respondWithResult(_0x580171,null))[_0xb814('0x45')](handleError(_0x580171,null));};exports['describe']=function(_0x338e80,_0x55234d){return db[_0xb814('0x41')][_0xb814('0x48')]()[_0xb814('0x28')](respondWithResult(_0x55234d,null))[_0xb814('0x45')](handleError(_0x55234d,null));};exports[_0xb814('0x27')]=function(_0x4096d4,_0x2cc806){if(_0x4096d4[_0xb814('0x49')][_0xb814('0x4a')]){delete _0x4096d4[_0xb814('0x49')]['uniqueid'];}return db['CmHopperFinal'][_0xb814('0x47')]({'where':{'uniqueid':_0x4096d4[_0xb814('0x46')]['id']}})[_0xb814('0x28')](handleEntityNotFound(_0x2cc806,null))[_0xb814('0x28')](saveUpdates(_0x4096d4[_0xb814('0x49')],null))[_0xb814('0x28')](respondWithResult(_0x2cc806,null))[_0xb814('0x45')](handleError(_0x2cc806,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0x26fd0b,_0x388324,_0xf27a6e){return db['CmHopperFinal'][_0xb814('0x44')]({'raw':![],'where':{'VoiceQueueId':_0x26fd0b['params']['id']},'attributes':[[db[_0xb814('0x4b')]['fn']('COUNT',db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x4c')))),_0xb814('0x4d')],[db[_0xb814('0x4b')]['fn']('COUNT',db[_0xb814('0x4b')]['fn']('IF',db['sequelize'][_0xb814('0x4e')](_0xb814('0x4f')))),'noAnswerContacts'],[db[_0xb814('0x4b')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xb814('0x4b')][_0xb814('0x4e')](_0xb814('0x50')))),'busyContacts'],[db[_0xb814('0x4b')]['fn']('COUNT',db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x51')))),'congestionContacts'],[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')][_0xb814('0x4e')](_0xb814('0x53')))),_0xb814('0x54')],[db[_0xb814('0x4b')]['fn']('COUNT',db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x55')))),_0xb814('0x56')],[db['sequelize']['fn'](_0xb814('0x52'),db['sequelize']['fn']('IF',db['sequelize'][_0xb814('0x4e')]('`state`\x20=\x2022,\x201,\x20null'))),_0xb814('0x57')],[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db['sequelize']['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x58')))),_0xb814('0x59')]]})[_0xb814('0x28')](handleEntityNotFound(_0x388324,null))[_0xb814('0x28')](respondWithResult(_0x388324,null))[_0xb814('0x45')](handleError(_0x388324,null));};exports[_0xb814('0x5a')]=function(_0x2e5f99,_0x113350,_0x46014f){return db['CmHopperFinal'][_0xb814('0x44')]({'raw':![],'where':{'CampaignId':_0x2e5f99[_0xb814('0x46')]['id']},'attributes':[[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x4c')))),'noSuchContacts'],[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db['sequelize'][_0xb814('0x4e')]('`state`\x20=\x203,\x201,\x20null'))),_0xb814('0x5b')],[db['sequelize']['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')][_0xb814('0x4e')](_0xb814('0x50')))),_0xb814('0x5c')],[db[_0xb814('0x4b')]['fn']('COUNT',db[_0xb814('0x4b')]['fn']('IF',db['sequelize'][_0xb814('0x4e')](_0xb814('0x51')))),_0xb814('0x5d')],[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db['sequelize'][_0xb814('0x4e')](_0xb814('0x53')))),'dropContacts'],[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')][_0xb814('0x4e')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xb814('0x56')],[db['sequelize']['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')][_0xb814('0x4e')](_0xb814('0x5e')))),_0xb814('0x57')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x58')))),_0xb814('0x59')]]})[_0xb814('0x28')](handleEntityNotFound(_0x113350,null))['then'](respondWithResult(_0x113350,null))[_0xb814('0x45')](handleError(_0x113350,null));};exports[_0xb814('0x5f')]=function(_0xee204,_0x5aabbe,_0x30f717){return db[_0xb814('0x60')][_0xb814('0x47')]({'where':{'id':_0xee204[_0xb814('0x46')]['id']}})['then'](handleEntityNotFound(_0x5aabbe,null))['then'](function(_0x28eaf8){var _0x295488;if(_0x28eaf8){_0x295488=squel[_0xb814('0x61')]()[_0xb814('0x62')](_0xb814('0x63'))[_0xb814('0x64')]([_0xb814('0x65'),_0xb814('0x66'),_0xb814('0x67'),_0xb814('0x68'),_0xb814('0x69'),_0xb814('0x6a'),_0xb814('0x6b')],squel[_0xb814('0x6c')]()[_0xb814('0x6d')]('ANY_VALUE(calleridnum)',_0xb814('0x65'))[_0xb814('0x6d')](_0xb814('0x6e'),_0xb814('0x66'))[_0xb814('0x6d')](_0xb814('0x6f'),'ContactId')[_0xb814('0x6d')]('ANY_VALUE(ListId)',_0xb814('0x68'))[_0xb814('0x6d')](_0xb814('0x70'),_0xb814('0x69'))[_0xb814('0x6d')]('NOW()','createdAt')[_0xb814('0x6d')](_0xb814('0x6e'),_0xb814('0x6b'))[_0xb814('0x71')]('cm_hopper_final')[_0xb814('0x3b')]('VoiceQueueId\x20=\x20?',_0xee204[_0xb814('0x46')]['id'][_0xb814('0x72')]())['where']('state\x20=\x20?',_0xee204[_0xb814('0x49')]['state'][_0xb814('0x72')]())[_0xb814('0x3b')](_0xb814('0x73'))[_0xb814('0x3b')](_0xb814('0x74'),squel[_0xb814('0x6c')]()[_0xb814('0x6d')]('phone')[_0xb814('0x71')]('cm_hopper')[_0xb814('0x3b')]('VoiceQueueId\x20=\x20?',_0xee204[_0xb814('0x46')]['id'][_0xb814('0x72')]()))['where'](_0xb814('0x74'),squel['select']()[_0xb814('0x6d')](_0xb814('0x75'))['from']('cm_hopper_final')[_0xb814('0x3b')](_0xb814('0x76'),_0xee204[_0xb814('0x46')]['id'][_0xb814('0x72')]())[_0xb814('0x3b')](_0xb814('0x77')))[_0xb814('0x78')](_0xb814('0x67')))[_0xb814('0x72')]();return db[_0xb814('0x4b')]['query'](_0x295488);}return[];})['then'](respondWithResult(_0x5aabbe,null))['catch'](handleError(_0x5aabbe,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x52b6da,_0x45a202,_0x75a33){return db[_0xb814('0x79')]['find']({'where':{'id':_0x52b6da[_0xb814('0x46')]['id']}})[_0xb814('0x28')](handleEntityNotFound(_0x45a202,null))[_0xb814('0x28')](function(_0x26ce5b){var _0x161658;if(_0x26ce5b){_0x161658=squel[_0xb814('0x61')]()[_0xb814('0x62')](_0xb814('0x63'))['fromQuery']([_0xb814('0x65'),_0xb814('0x66'),_0xb814('0x67'),_0xb814('0x68'),'CampaignId',_0xb814('0x6a'),_0xb814('0x6b')],squel[_0xb814('0x6c')]()[_0xb814('0x6d')](_0xb814('0x7a'),'phone')['field'](_0xb814('0x6e'),'scheduledAt')[_0xb814('0x6d')](_0xb814('0x6f'),'ContactId')[_0xb814('0x6d')]('ANY_VALUE(ListId)',_0xb814('0x68'))['field'](_0xb814('0x7b'),_0xb814('0x7c'))[_0xb814('0x6d')](_0xb814('0x6e'),_0xb814('0x6a'))[_0xb814('0x6d')](_0xb814('0x6e'),'updatedAt')['from'](_0xb814('0x7d'))['where']('CampaignId\x20=\x20?',_0x52b6da[_0xb814('0x46')]['id'][_0xb814('0x72')]())[_0xb814('0x3b')]('state\x20=\x20?',_0x52b6da[_0xb814('0x49')]['state'][_0xb814('0x72')]())[_0xb814('0x3b')](_0xb814('0x73'))[_0xb814('0x3b')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0xb814('0x6c')]()[_0xb814('0x6d')](_0xb814('0x65'))['from'](_0xb814('0x63'))[_0xb814('0x3b')](_0xb814('0x7e'),_0x52b6da['params']['id'][_0xb814('0x72')]()))[_0xb814('0x3b')](_0xb814('0x74'),squel[_0xb814('0x6c')]()[_0xb814('0x6d')](_0xb814('0x75'))[_0xb814('0x71')](_0xb814('0x7d'))[_0xb814('0x3b')](_0xb814('0x7e'),_0x52b6da[_0xb814('0x46')]['id'][_0xb814('0x72')]())[_0xb814('0x3b')]('state\x20=\x204'))['group'](_0xb814('0x67')))['toString']();return db[_0xb814('0x4b')][_0xb814('0x33')](_0x161658);}return[];})[_0xb814('0x28')](respondWithResult(_0x45a202,null))[_0xb814('0x45')](handleError(_0x45a202,null));};exports[_0xb814('0x7f')]=function(_0x2f1674,_0xf0610f,_0x5db5d0){return db['CmHopper'][_0xb814('0x80')]({'where':{'VoiceQueueId':_0x2f1674['body'][_0xb814('0x69')],'CampaignId':_0x2f1674[_0xb814('0x49')][_0xb814('0x7c')],'ContactId':_0x2f1674['body'][_0xb814('0x67')]}})[_0xb814('0x28')](handleEntityNotFound(_0xf0610f,null))[_0xb814('0x28')](function(_0x38c6da){if(_0x38c6da){return _0x38c6da;}return null;})[_0xb814('0x28')](respondWithResult(_0xf0610f,null))['catch'](handleError(_0xf0610f,null));};
\ No newline at end of file
index 5a8f594..c89dd15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc75f=['api','moment','request-promise','path','../../config/environment','./cmHopperFinal.attributes','define','CmHopperFinal','cm_hopper_final','calleridnum','lodash','util','../../config/logger'];(function(_0x3da16d,_0x3898a1){var _0x969d97=function(_0x847aeb){while(--_0x847aeb){_0x3da16d['push'](_0x3da16d['shift']());}};_0x969d97(++_0x3898a1);}(_0xc75f,0x1eb));var _0xfc75=function(_0x4ee859,_0xe044bc){_0x4ee859=_0x4ee859-0x0;var _0x42d1f8=_0xc75f[_0x4ee859];return _0x42d1f8;};'use strict';var _=require(_0xfc75('0x0'));var util=require(_0xfc75('0x1'));var logger=require(_0xfc75('0x2'))(_0xfc75('0x3'));var moment=require(_0xfc75('0x4'));var BPromise=require('bluebird');var rp=require(_0xfc75('0x5'));var fs=require('fs');var path=require(_0xfc75('0x6'));var rimraf=require('rimraf');var config=require(_0xfc75('0x7'));var attributes=require(_0xfc75('0x8'));module['exports']=function(_0x1ee0f6,_0x3b262b){return _0x1ee0f6[_0xfc75('0x9')](_0xfc75('0xa'),attributes,{'tableName':_0xfc75('0xb'),'paranoid':![],'indexes':[{'name':_0xfc75('0xc'),'fields':[_0xfc75('0xc')]},{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1be8=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x1be8,0x1ac));var _0x81be=function(_0x381005,_0x2b3564){_0x381005=_0x381005-0x0;var _0x7fb157=_0x1be8[_0x381005];return _0x7fb157;};'use strict';var _=require(_0x81be('0x0'));var util=require('util');var logger=require(_0x81be('0x1'))(_0x81be('0x2'));var moment=require(_0x81be('0x3'));var BPromise=require(_0x81be('0x4'));var rp=require(_0x81be('0x5'));var fs=require('fs');var path=require(_0x81be('0x6'));var rimraf=require(_0x81be('0x7'));var config=require(_0x81be('0x8'));var attributes=require('./cmHopperFinal.attributes');module['exports']=function(_0x24fa16,_0x16e66f){return _0x24fa16['define'](_0x81be('0x9'),attributes,{'tableName':_0x81be('0xa'),'paranoid':![],'indexes':[{'name':_0x81be('0xb'),'fields':['calleridnum']},{'name':'uniqueid','fields':[_0x81be('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 5a458f5..c712656 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x25d07e,_0x28b36c){var _0x4b9b49=function(_0x5df765){while(--_0x5df765){_0x25d07e['push'](_0x25d07e['shift']());}};_0x4b9b49(++_0x28b36c);}(_0xb10b,0x12a));var _0xbb10=function(_0x4a9e4a,_0x585df1){_0x4a9e4a=_0x4a9e4a-0x0;var _0xaa903e=_0xb10b[_0x4a9e4a];return _0xaa903e;};'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
+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(_0x1b723c,_0x3c8be9){var _0x2b7479=function(_0x4fd369){while(--_0x4fd369){_0x1b723c['push'](_0x1b723c['shift']());}};_0x2b7479(++_0x3c8be9);}(_0xb10b,0x12a));var _0xbb10=function(_0x2f5a22,_0x5e9f03){_0x2f5a22=_0x2f5a22-0x0;var _0x326b70=_0xb10b[_0x2f5a22];return _0x326b70;};'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 06c0866..f1fe99f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ed9=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','index','get','/describe','isAuthenticated','describe','/:id','show','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','post','checkContactHopper','put','update','multer','util'];(function(_0x4391b6,_0x438a42){var _0xe70c96=function(_0x4c62ac){while(--_0x4c62ac){_0x4391b6['push'](_0x4391b6['shift']());}};_0xe70c96(++_0x438a42);}(_0x8ed9,0x16a));var _0x98ed=function(_0x3ea343,_0x168e7e){_0x3ea343=_0x3ea343-0x0;var _0x1ae8e5=_0x8ed9[_0x3ea343];return _0x1ae8e5;};'use strict';var multer=require(_0x98ed('0x0'));var util=require(_0x98ed('0x1'));var path=require(_0x98ed('0x2'));var timeout=require(_0x98ed('0x3'));var express=require(_0x98ed('0x4'));var router=express[_0x98ed('0x5')]();var fs_extra=require(_0x98ed('0x6'));var auth=require(_0x98ed('0x7'));var interaction=require(_0x98ed('0x8'));var config=require(_0x98ed('0x9'));var controller=require(_0x98ed('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x98ed('0xb')]);router[_0x98ed('0xc')](_0x98ed('0xd'),auth[_0x98ed('0xe')](),controller[_0x98ed('0xf')]);router['get'](_0x98ed('0x10'),auth[_0x98ed('0xe')](),controller[_0x98ed('0x11')]);router[_0x98ed('0xc')]('/voice/queue/countAttributes/:id',auth[_0x98ed('0xe')](),controller[_0x98ed('0x12')]);router[_0x98ed('0xc')](_0x98ed('0x13'),auth[_0x98ed('0xe')](),controller[_0x98ed('0x14')]);router['post'](_0x98ed('0x15'),auth['isAuthenticated'](),controller[_0x98ed('0x16')]);router['post'](_0x98ed('0x17'),auth[_0x98ed('0xe')](),controller['moveContactsIvrCampaignHopperFinal']);router[_0x98ed('0x18')]('/checkContactHopper',auth[_0x98ed('0xe')](),controller[_0x98ed('0x19')]);router[_0x98ed('0x1a')](_0x98ed('0x10'),auth[_0x98ed('0xe')](),controller[_0x98ed('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x1afc=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','index','describe','/:id','show','/voice/queue/countAttributes/:id','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','/checkContactHopper','put','update','path'];(function(_0x296210,_0x1ef36a){var _0x2bd260=function(_0x2b9718){while(--_0x2b9718){_0x296210['push'](_0x296210['shift']());}};_0x2bd260(++_0x1ef36a);}(_0x1afc,0x167));var _0xc1af=function(_0x13fdb3,_0x4584de){_0x13fdb3=_0x13fdb3-0x0;var _0x4f647e=_0x1afc[_0x13fdb3];return _0x4f647e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc1af('0x0'));var timeout=require(_0xc1af('0x1'));var express=require('express');var router=express[_0xc1af('0x2')]();var fs_extra=require(_0xc1af('0x3'));var auth=require(_0xc1af('0x4'));var interaction=require(_0xc1af('0x5'));var config=require(_0xc1af('0x6'));var controller=require(_0xc1af('0x7'));router[_0xc1af('0x8')]('/',auth[_0xc1af('0x9')](),controller[_0xc1af('0xa')]);router[_0xc1af('0x8')]('/describe',auth[_0xc1af('0x9')](),controller[_0xc1af('0xb')]);router[_0xc1af('0x8')](_0xc1af('0xc'),auth['isAuthenticated'](),controller[_0xc1af('0xd')]);router[_0xc1af('0x8')](_0xc1af('0xe'),auth[_0xc1af('0x9')](),controller['countContactsQueueCampaignHopperFinal']);router['get'](_0xc1af('0xf'),auth[_0xc1af('0x9')](),controller[_0xc1af('0x10')]);router[_0xc1af('0x11')](_0xc1af('0x12'),auth[_0xc1af('0x9')](),controller[_0xc1af('0x13')]);router[_0xc1af('0x11')]('/voice/campaign/moveContacts/:id',auth[_0xc1af('0x9')](),controller[_0xc1af('0x14')]);router['post'](_0xc1af('0x15'),auth[_0xc1af('0x9')](),controller['checkContactHopper']);router[_0xc1af('0x16')](_0xc1af('0xc'),auth[_0xc1af('0x9')](),controller[_0xc1af('0x17')]);module['exports']=router;
\ No newline at end of file
index c8bc943..63e23d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1402=['exports','INTEGER','STRING','DATE','BOOLEAN','sequelize'];(function(_0xa72d8c,_0x3e9557){var _0x3c7bef=function(_0x3fdad4){while(--_0x3fdad4){_0xa72d8c['push'](_0xa72d8c['shift']());}};_0x3c7bef(++_0x3e9557);}(_0x1402,0x1c1));var _0x2140=function(_0x13e211,_0x9b584e){_0x13e211=_0x13e211-0x0;var _0xd1357e=_0x1402[_0x13e211];return _0xd1357e;};'use strict';var Sequelize=require(_0x2140('0x0'));module[_0x2140('0x1')]={'state':{'type':Sequelize[_0x2140('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x2140('0x3')]},'scheduledat':{'type':Sequelize[_0x2140('0x4')]},'countbusyretry':{'type':Sequelize[_0x2140('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x2140('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x2140('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x2140('0x3')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x2140('0x3')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x2140('0x4')]},'responsetime':{'type':Sequelize[_0x2140('0x4')]},'answertime':{'type':Sequelize[_0x2140('0x4')]},'droptime':{'type':Sequelize[_0x2140('0x4')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x2140('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x2140('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0x2140('0x3')]},'campaigntype':{'type':Sequelize[_0x2140('0x3')]},'membername':{'type':Sequelize[_0x2140('0x3')]},'reason':{'type':Sequelize[_0x2140('0x3')]},'amd':{'type':Sequelize[_0x2140('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x2140('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x2140('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x2140('0x4')]},'recallme':{'type':Sequelize[_0x2140('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x2140('0x4')]},'edited':{'type':Sequelize[_0x2140('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x2140('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x2140('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x2140('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x2140('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x8459=['sequelize','exports','INTEGER','STRING','DATE','BOOLEAN'];(function(_0x1a8bc1,_0x55eff6){var _0x183736=function(_0x2c74d9){while(--_0x2c74d9){_0x1a8bc1['push'](_0x1a8bc1['shift']());}};_0x183736(++_0x55eff6);}(_0x8459,0x1d4));var _0x9845=function(_0x3ad887,_0x36f6a6){_0x3ad887=_0x3ad887-0x0;var _0x345b8a=_0x8459[_0x3ad887];return _0x345b8a;};'use strict';var Sequelize=require(_0x9845('0x0'));module[_0x9845('0x1')]={'state':{'type':Sequelize[_0x9845('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x9845('0x3')]},'scheduledat':{'type':Sequelize[_0x9845('0x4')]},'countbusyretry':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x9845('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x9845('0x3')]},'originatecalleridname':{'type':Sequelize[_0x9845('0x3')]},'calleridnum':{'type':Sequelize[_0x9845('0x3')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x9845('0x4')]},'responsetime':{'type':Sequelize[_0x9845('0x4')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x9845('0x4')]},'endtime':{'type':Sequelize[_0x9845('0x4')]},'ringtime':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x9845('0x3')]},'campaign':{'type':Sequelize[_0x9845('0x3')]},'campaigntype':{'type':Sequelize[_0x9845('0x3')]},'membername':{'type':Sequelize[_0x9845('0x3')]},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize[_0x9845('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x9845('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x9845('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x9845('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x9845('0x4')]},'recallme':{'type':Sequelize[_0x9845('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x9845('0x4')]},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index d397140..45805a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9499=['mustache','util','path','sox','ejs','lodash','squel','desk.js','to-csv','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','count','set','apply','reject','update','then','error','stack','name','send','map','rawAttributes','fieldName','type','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','limit','where','pick','filter','merge','VIRTUAL','CmHopperHistory','include','findAll','rows','show','keys','includeAll','options','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x9499,0x1b0));var _0x9949=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x9499[_0x17d9e3];return _0x14192d;};'use strict';var emlformat=require(_0x9949('0x0'));var rimraf=require(_0x9949('0x1'));var zipdir=require(_0x9949('0x2'));var jsonpatch=require(_0x9949('0x3'));var rp=require(_0x9949('0x4'));var moment=require('moment');var BPromise=require(_0x9949('0x5'));var Mustache=require(_0x9949('0x6'));var util=require(_0x9949('0x7'));var path=require(_0x9949('0x8'));var sox=require(_0x9949('0x9'));var csv=require('to-csv');var ejs=require(_0x9949('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9949('0xb'));var squel=require(_0x9949('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9949('0xd'));var toCsv=require(_0x9949('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x9949('0xf'));var authService=require(_0x9949('0x10'));var qs=require(_0x9949('0x11'));var as=require(_0x9949('0x12'));var hardwareService=require(_0x9949('0x13'));var logger=require(_0x9949('0x14'))('api');var utils=require(_0x9949('0x15'));var config=require(_0x9949('0x16'));var licenseUtil=require(_0x9949('0x17'));var db=require(_0x9949('0x18'))['db'];function respondWithStatusCode(_0x1dc7fd,_0x151b00){_0x151b00=_0x151b00||0xcc;return function(_0x356c61){if(_0x356c61){return _0x1dc7fd[_0x9949('0x19')](_0x151b00);}return _0x1dc7fd[_0x9949('0x1a')](_0x151b00)[_0x9949('0x1b')]();};}function respondWithResult(_0x338b71,_0x2fe2e4){_0x2fe2e4=_0x2fe2e4||0xc8;return function(_0x51b168){if(_0x51b168){return _0x338b71[_0x9949('0x1a')](_0x2fe2e4)[_0x9949('0x1c')](_0x51b168);}};}function respondWithFilteredResult(_0x139f2a,_0x53609a){return function(_0x3f6b6b){if(_0x3f6b6b){var _0x5625d9=typeof _0x53609a[_0x9949('0x1d')]===_0x9949('0x1e')&&typeof _0x53609a['limit']===_0x9949('0x1e');var _0x1f6b3f=_0x3f6b6b[_0x9949('0x1f')];var _0xb5e35d=_0x5625d9?0x0:_0x53609a['offset'];var _0x65e975=_0x5625d9?_0x3f6b6b[_0x9949('0x1f')]:_0x53609a['offset']+_0x53609a['limit'];var _0x26fb20;if(_0x65e975>=_0x1f6b3f){_0x65e975=_0x1f6b3f;_0x26fb20=0xc8;}else{_0x26fb20=0xce;}_0x139f2a[_0x9949('0x1a')](_0x26fb20);return _0x139f2a[_0x9949('0x20')]('Content-Range',_0xb5e35d+'-'+_0x65e975+'/'+_0x1f6b3f)[_0x9949('0x1c')](_0x3f6b6b);}return null;};}function patchUpdates(_0x7eb759){return function(_0x5db1f2){try{jsonpatch[_0x9949('0x21')](_0x5db1f2,_0x7eb759,!![]);}catch(_0x36dcad){return BPromise[_0x9949('0x22')](_0x36dcad);}return _0x5db1f2['save']();};}function saveUpdates(_0x182763,_0x59f78e){return function(_0x2edcc9){if(_0x2edcc9){return _0x2edcc9[_0x9949('0x23')](_0x182763)['then'](function(_0x325a48){return _0x325a48;});}return null;};}function removeEntity(_0x4a7a12,_0x2c65f1){return function(_0x11bb99){if(_0x11bb99){return _0x11bb99['destroy']()[_0x9949('0x24')](function(){_0x4a7a12[_0x9949('0x1a')](0xcc)[_0x9949('0x1b')]();});}};}function handleEntityNotFound(_0x4ff550,_0x34b2bc){return function(_0xbd31b){if(!_0xbd31b){_0x4ff550[_0x9949('0x19')](0x194);}return _0xbd31b;};}function handleError(_0x492e89,_0x5285b4){_0x5285b4=_0x5285b4||0x1f4;return function(_0x28eaa0){logger[_0x9949('0x25')](_0x28eaa0[_0x9949('0x26')]);if(_0x28eaa0[_0x9949('0x27')]){delete _0x28eaa0[_0x9949('0x27')];}_0x492e89[_0x9949('0x1a')](_0x5285b4)[_0x9949('0x28')](_0x28eaa0);};}exports['index']=function(_0x50419e,_0x4f0e6f){var _0x360992={},_0x904eb1={},_0x1c001b={'count':0x0,'rows':[]};var _0x181091=_[_0x9949('0x29')](db['CmHopperHistory'][_0x9949('0x2a')],function(_0x5bcbe5){return{'name':_0x5bcbe5[_0x9949('0x2b')],'type':_0x5bcbe5[_0x9949('0x2c')]['key']};});_0x904eb1['model']=_['map'](_0x181091,'name');_0x904eb1[_0x9949('0x2d')]=_['keys'](_0x50419e[_0x9949('0x2d')]);_0x904eb1[_0x9949('0x2e')]=_[_0x9949('0x2f')](_0x904eb1['model'],_0x904eb1[_0x9949('0x2d')]);_0x360992['attributes']=_[_0x9949('0x2f')](_0x904eb1[_0x9949('0x30')],qs[_0x9949('0x31')](_0x50419e[_0x9949('0x2d')]['fields']));_0x360992[_0x9949('0x32')]=_0x360992[_0x9949('0x32')][_0x9949('0x33')]?_0x360992[_0x9949('0x32')]:_0x904eb1['model'];if(!_0x50419e['query'][_0x9949('0x34')](_0x9949('0x35'))){_0x360992[_0x9949('0x36')]=qs[_0x9949('0x36')](_0x50419e[_0x9949('0x2d')]['limit']);_0x360992[_0x9949('0x1d')]=qs['offset'](_0x50419e['query'][_0x9949('0x1d')]);}_0x360992['order']=qs['sort'](_0x50419e[_0x9949('0x2d')]['sort']);_0x360992[_0x9949('0x37')]=qs[_0x9949('0x2e')](_[_0x9949('0x38')](_0x50419e[_0x9949('0x2d')],_0x904eb1[_0x9949('0x2e')]),_0x181091);if(_0x50419e[_0x9949('0x2d')][_0x9949('0x39')]){_0x360992['where']=_[_0x9949('0x3a')](_0x360992[_0x9949('0x37')],{'$or':_[_0x9949('0x29')](_0x181091,function(_0x2db767){if(_0x2db767[_0x9949('0x2c')]!==_0x9949('0x3b')){var _0x2b272d={};_0x2b272d[_0x2db767[_0x9949('0x27')]]={'$like':'%'+_0x50419e[_0x9949('0x2d')][_0x9949('0x39')]+'%'};return _0x2b272d;}})});}_0x360992=_[_0x9949('0x3a')]({},_0x360992,_0x50419e['options']);var _0x1e1da5={'where':_0x360992[_0x9949('0x37')]};return db[_0x9949('0x3c')][_0x9949('0x1f')](_0x1e1da5)['then'](function(_0x2e378d){_0x1c001b[_0x9949('0x1f')]=_0x2e378d;if(_0x50419e['query']['includeAll']){_0x360992[_0x9949('0x3d')]=[{'all':!![]}];}return db[_0x9949('0x3c')][_0x9949('0x3e')](_0x360992);})[_0x9949('0x24')](function(_0x1b3400){_0x1c001b[_0x9949('0x3f')]=_0x1b3400;return _0x1c001b;})[_0x9949('0x24')](respondWithFilteredResult(_0x4f0e6f,_0x360992))['catch'](handleError(_0x4f0e6f,null));};exports[_0x9949('0x40')]=function(_0x52c401,_0x50a3b8){var _0x21673e={'raw':!![],'where':{'id':_0x52c401['params']['id']}},_0x4966d6={};_0x4966d6[_0x9949('0x30')]=_[_0x9949('0x41')](db[_0x9949('0x3c')][_0x9949('0x2a')]);_0x4966d6[_0x9949('0x2d')]=_[_0x9949('0x41')](_0x52c401[_0x9949('0x2d')]);_0x4966d6['filters']=_['intersection'](_0x4966d6[_0x9949('0x30')],_0x4966d6['query']);_0x21673e[_0x9949('0x32')]=_[_0x9949('0x2f')](_0x4966d6[_0x9949('0x30')],qs[_0x9949('0x31')](_0x52c401[_0x9949('0x2d')][_0x9949('0x31')]));_0x21673e['attributes']=_0x21673e[_0x9949('0x32')][_0x9949('0x33')]?_0x21673e[_0x9949('0x32')]:_0x4966d6[_0x9949('0x30')];if(_0x52c401[_0x9949('0x2d')][_0x9949('0x42')]){_0x21673e[_0x9949('0x3d')]=[{'all':!![]}];}_0x21673e=_[_0x9949('0x3a')]({},_0x21673e,_0x52c401[_0x9949('0x43')]);return db[_0x9949('0x3c')][_0x9949('0x44')](_0x21673e)['then'](handleEntityNotFound(_0x50a3b8,null))[_0x9949('0x24')](respondWithResult(_0x50a3b8,null))[_0x9949('0x45')](handleError(_0x50a3b8,null));};exports[_0x9949('0x46')]=function(_0x55001a,_0x20e2b9){return db[_0x9949('0x3c')][_0x9949('0x46')](_0x55001a[_0x9949('0x47')],{})['then'](respondWithResult(_0x20e2b9,0xc9))[_0x9949('0x45')](handleError(_0x20e2b9,null));};exports[_0x9949('0x48')]=function(_0x49d416,_0x20cd78){return db[_0x9949('0x3c')]['describe']()['then'](respondWithResult(_0x20cd78,null))['catch'](handleError(_0x20cd78,null));};exports['update']=function(_0xbc8b3c,_0x148165){if(_0xbc8b3c['body']['uniqueid']){delete _0xbc8b3c[_0x9949('0x47')]['uniqueid'];}return db[_0x9949('0x3c')][_0x9949('0x44')]({'where':{'uniqueid':_0xbc8b3c['params']['id']}})[_0x9949('0x24')](handleEntityNotFound(_0x148165,null))[_0x9949('0x24')](saveUpdates(_0xbc8b3c[_0x9949('0x47')],null))[_0x9949('0x24')](respondWithResult(_0x148165,null))[_0x9949('0x45')](handleError(_0x148165,null));};
\ No newline at end of file
+var _0x623c=['fieldName','map','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','includeAll','find','create','body','describe','uniqueid','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','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','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','destroy','then','error','stack','name','send','index','CmHopperHistory','rawAttributes'];(function(_0x476bf4,_0x2a3755){var _0x788ffe=function(_0x13fa11){while(--_0x13fa11){_0x476bf4['push'](_0x476bf4['shift']());}};_0x788ffe(++_0x2a3755);}(_0x623c,0x156));var _0xc623=function(_0x1221b1,_0x3fae72){_0x1221b1=_0x1221b1-0x0;var _0x35e1ac=_0x623c[_0x1221b1];return _0x35e1ac;};'use strict';var emlformat=require(_0xc623('0x0'));var rimraf=require(_0xc623('0x1'));var zipdir=require(_0xc623('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc623('0x3'));var moment=require(_0xc623('0x4'));var BPromise=require(_0xc623('0x5'));var Mustache=require(_0xc623('0x6'));var util=require(_0xc623('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xc623('0x8'));var ejs=require(_0xc623('0x9'));var fs=require('fs');var fs_extra=require(_0xc623('0xa'));var _=require(_0xc623('0xb'));var squel=require(_0xc623('0xc'));var crypto=require(_0xc623('0xd'));var jsforce=require(_0xc623('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc623('0x8'));var querystring=require(_0xc623('0xf'));var Papa=require(_0xc623('0x10'));var Redis=require(_0xc623('0x11'));var authService=require(_0xc623('0x12'));var qs=require(_0xc623('0x13'));var as=require(_0xc623('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc623('0x15'))('api');var utils=require(_0xc623('0x16'));var config=require(_0xc623('0x17'));var licenseUtil=require(_0xc623('0x18'));var db=require(_0xc623('0x19'))['db'];function respondWithStatusCode(_0x3fe44a,_0x95e7a5){_0x95e7a5=_0x95e7a5||0xcc;return function(_0x2337bb){if(_0x2337bb){return _0x3fe44a[_0xc623('0x1a')](_0x95e7a5);}return _0x3fe44a[_0xc623('0x1b')](_0x95e7a5)[_0xc623('0x1c')]();};}function respondWithResult(_0x148e94,_0x32bc1a){_0x32bc1a=_0x32bc1a||0xc8;return function(_0x200906){if(_0x200906){return _0x148e94['status'](_0x32bc1a)['json'](_0x200906);}};}function respondWithFilteredResult(_0x331502,_0x37f281){return function(_0x2773dd){if(_0x2773dd){var _0x35f206=typeof _0x37f281[_0xc623('0x1d')]===_0xc623('0x1e')&&typeof _0x37f281[_0xc623('0x1f')]===_0xc623('0x1e');var _0x448442=_0x2773dd[_0xc623('0x20')];var _0x2052ae=_0x35f206?0x0:_0x37f281['offset'];var _0x311343=_0x35f206?_0x2773dd[_0xc623('0x20')]:_0x37f281[_0xc623('0x1d')]+_0x37f281['limit'];var _0x241ab3;if(_0x311343>=_0x448442){_0x311343=_0x448442;_0x241ab3=0xc8;}else{_0x241ab3=0xce;}_0x331502[_0xc623('0x1b')](_0x241ab3);return _0x331502[_0xc623('0x21')](_0xc623('0x22'),_0x2052ae+'-'+_0x311343+'/'+_0x448442)[_0xc623('0x23')](_0x2773dd);}return null;};}function patchUpdates(_0x4eeaca){return function(_0x1cc851){try{jsonpatch[_0xc623('0x24')](_0x1cc851,_0x4eeaca,!![]);}catch(_0x1b3af9){return BPromise['reject'](_0x1b3af9);}return _0x1cc851[_0xc623('0x25')]();};}function saveUpdates(_0x14f828,_0x3d592a){return function(_0x50e590){if(_0x50e590){return _0x50e590[_0xc623('0x26')](_0x14f828)['then'](function(_0x165aa9){return _0x165aa9;});}return null;};}function removeEntity(_0x12ffaf,_0x4bf21d){return function(_0x43f5d1){if(_0x43f5d1){return _0x43f5d1[_0xc623('0x27')]()[_0xc623('0x28')](function(){_0x12ffaf[_0xc623('0x1b')](0xcc)[_0xc623('0x1c')]();});}};}function handleEntityNotFound(_0x259ad3,_0x4636eb){return function(_0x16fba3){if(!_0x16fba3){_0x259ad3[_0xc623('0x1a')](0x194);}return _0x16fba3;};}function handleError(_0x22a485,_0x145d8b){_0x145d8b=_0x145d8b||0x1f4;return function(_0x5d6a6a){logger[_0xc623('0x29')](_0x5d6a6a[_0xc623('0x2a')]);if(_0x5d6a6a['name']){delete _0x5d6a6a[_0xc623('0x2b')];}_0x22a485[_0xc623('0x1b')](_0x145d8b)[_0xc623('0x2c')](_0x5d6a6a);};}exports[_0xc623('0x2d')]=function(_0x2ee0b6,_0x825e46){var _0xb87425={},_0x214032={},_0x6bb85b={'count':0x0,'rows':[]};var _0x33942f=_['map'](db[_0xc623('0x2e')][_0xc623('0x2f')],function(_0x199de2){return{'name':_0x199de2[_0xc623('0x30')],'type':_0x199de2['type']['key']};});_0x214032['model']=_[_0xc623('0x31')](_0x33942f,_0xc623('0x2b'));_0x214032[_0xc623('0x32')]=_[_0xc623('0x33')](_0x2ee0b6[_0xc623('0x32')]);_0x214032[_0xc623('0x34')]=_[_0xc623('0x35')](_0x214032[_0xc623('0x36')],_0x214032[_0xc623('0x32')]);_0xb87425['attributes']=_['intersection'](_0x214032[_0xc623('0x36')],qs[_0xc623('0x37')](_0x2ee0b6[_0xc623('0x32')]['fields']));_0xb87425[_0xc623('0x38')]=_0xb87425['attributes']['length']?_0xb87425[_0xc623('0x38')]:_0x214032[_0xc623('0x36')];if(!_0x2ee0b6[_0xc623('0x32')][_0xc623('0x39')](_0xc623('0x3a'))){_0xb87425[_0xc623('0x1f')]=qs[_0xc623('0x1f')](_0x2ee0b6[_0xc623('0x32')]['limit']);_0xb87425[_0xc623('0x1d')]=qs['offset'](_0x2ee0b6['query']['offset']);}_0xb87425[_0xc623('0x3b')]=qs['sort'](_0x2ee0b6[_0xc623('0x32')][_0xc623('0x3c')]);_0xb87425[_0xc623('0x3d')]=qs[_0xc623('0x34')](_[_0xc623('0x3e')](_0x2ee0b6[_0xc623('0x32')],_0x214032['filters']),_0x33942f);if(_0x2ee0b6['query']['filter']){_0xb87425[_0xc623('0x3d')]=_[_0xc623('0x3f')](_0xb87425['where'],{'$or':_[_0xc623('0x31')](_0x33942f,function(_0x279d20){if(_0x279d20[_0xc623('0x40')]!==_0xc623('0x41')){var _0x3445c3={};_0x3445c3[_0x279d20['name']]={'$like':'%'+_0x2ee0b6[_0xc623('0x32')]['filter']+'%'};return _0x3445c3;}})});}_0xb87425=_['merge']({},_0xb87425,_0x2ee0b6[_0xc623('0x42')]);var _0x2be1ed={'where':_0xb87425[_0xc623('0x3d')]};return db[_0xc623('0x2e')][_0xc623('0x20')](_0x2be1ed)['then'](function(_0x40cb0e){_0x6bb85b[_0xc623('0x20')]=_0x40cb0e;if(_0x2ee0b6[_0xc623('0x32')]['includeAll']){_0xb87425[_0xc623('0x43')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xc623('0x44')](_0xb87425);})['then'](function(_0x443dbf){_0x6bb85b[_0xc623('0x45')]=_0x443dbf;return _0x6bb85b;})[_0xc623('0x28')](respondWithFilteredResult(_0x825e46,_0xb87425))[_0xc623('0x46')](handleError(_0x825e46,null));};exports[_0xc623('0x47')]=function(_0x3767fe,_0x3d1121){var _0x32430a={'raw':!![],'where':{'id':_0x3767fe['params']['id']}},_0x255a1e={};_0x255a1e['model']=_[_0xc623('0x33')](db['CmHopperHistory'][_0xc623('0x2f')]);_0x255a1e['query']=_[_0xc623('0x33')](_0x3767fe[_0xc623('0x32')]);_0x255a1e['filters']=_[_0xc623('0x35')](_0x255a1e[_0xc623('0x36')],_0x255a1e[_0xc623('0x32')]);_0x32430a[_0xc623('0x38')]=_['intersection'](_0x255a1e[_0xc623('0x36')],qs[_0xc623('0x37')](_0x3767fe[_0xc623('0x32')][_0xc623('0x37')]));_0x32430a[_0xc623('0x38')]=_0x32430a['attributes']['length']?_0x32430a[_0xc623('0x38')]:_0x255a1e[_0xc623('0x36')];if(_0x3767fe[_0xc623('0x32')][_0xc623('0x48')]){_0x32430a[_0xc623('0x43')]=[{'all':!![]}];}_0x32430a=_[_0xc623('0x3f')]({},_0x32430a,_0x3767fe['options']);return db['CmHopperHistory'][_0xc623('0x49')](_0x32430a)[_0xc623('0x28')](handleEntityNotFound(_0x3d1121,null))[_0xc623('0x28')](respondWithResult(_0x3d1121,null))[_0xc623('0x46')](handleError(_0x3d1121,null));};exports['create']=function(_0x1dcd18,_0x22a757){return db[_0xc623('0x2e')][_0xc623('0x4a')](_0x1dcd18[_0xc623('0x4b')],{})[_0xc623('0x28')](respondWithResult(_0x22a757,0xc9))['catch'](handleError(_0x22a757,null));};exports['describe']=function(_0x4025e3,_0x47be8c){return db[_0xc623('0x2e')][_0xc623('0x4c')]()[_0xc623('0x28')](respondWithResult(_0x47be8c,null))['catch'](handleError(_0x47be8c,null));};exports[_0xc623('0x26')]=function(_0x21b54b,_0x16ed03){if(_0x21b54b[_0xc623('0x4b')][_0xc623('0x4d')]){delete _0x21b54b[_0xc623('0x4b')][_0xc623('0x4d')];}return db[_0xc623('0x2e')][_0xc623('0x49')]({'where':{'uniqueid':_0x21b54b['params']['id']}})[_0xc623('0x28')](handleEntityNotFound(_0x16ed03,null))['then'](saveUpdates(_0x21b54b[_0xc623('0x4b')],null))[_0xc623('0x28')](respondWithResult(_0x16ed03,null))[_0xc623('0x46')](handleError(_0x16ed03,null));};
\ No newline at end of file
index 5b53e81..9def022 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6365=['../../config/environment','exports','define','cm_hopper_history','endtime','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0xb37bee,_0x7ebb39){var _0x3a579c=function(_0x1559f5){while(--_0x1559f5){_0xb37bee['push'](_0xb37bee['shift']());}};_0x3a579c(++_0x7ebb39);}(_0x6365,0x148));var _0x5636=function(_0xb48de9,_0x8eb108){_0xb48de9=_0xb48de9-0x0;var _0x54f3b8=_0x6365[_0xb48de9];return _0x54f3b8;};'use strict';var _=require(_0x5636('0x0'));var util=require(_0x5636('0x1'));var logger=require(_0x5636('0x2'))(_0x5636('0x3'));var moment=require('moment');var BPromise=require(_0x5636('0x4'));var rp=require(_0x5636('0x5'));var fs=require('fs');var path=require(_0x5636('0x6'));var rimraf=require(_0x5636('0x7'));var config=require(_0x5636('0x8'));var attributes=require('./cmHopperHistory.attributes');module[_0x5636('0x9')]=function(_0x230d78,_0x2a12df){return _0x230d78[_0x5636('0xa')]('CmHopperHistory',attributes,{'tableName':_0x5636('0xb'),'paranoid':![],'indexes':[{'name':_0x5636('0xc'),'fields':['endtime']},{'name':'uniqueid','fields':[_0x5636('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa1cc=['bluebird','request-promise','rimraf','./cmHopperHistory.attributes','exports','cm_hopper_history','endtime','lodash','util','../../config/logger','moment'];(function(_0x55abd9,_0x1148af){var _0x3e5669=function(_0x6f2105){while(--_0x6f2105){_0x55abd9['push'](_0x55abd9['shift']());}};_0x3e5669(++_0x1148af);}(_0xa1cc,0x10f));var _0xca1c=function(_0x2e9639,_0x392ecc){_0x2e9639=_0x2e9639-0x0;var _0x384e3d=_0xa1cc[_0x2e9639];return _0x384e3d;};'use strict';var _=require(_0xca1c('0x0'));var util=require(_0xca1c('0x1'));var logger=require(_0xca1c('0x2'))('api');var moment=require(_0xca1c('0x3'));var BPromise=require(_0xca1c('0x4'));var rp=require(_0xca1c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xca1c('0x6'));var config=require('../../config/environment');var attributes=require(_0xca1c('0x7'));module[_0xca1c('0x8')]=function(_0x375837,_0x98dd5f){return _0x375837['define']('CmHopperHistory',attributes,{'tableName':_0xca1c('0x9'),'paranoid':![],'indexes':[{'name':_0xca1c('0xa'),'fields':[_0xca1c('0xa')]},{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 541cc09..18c215d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x906c=['create','options','raw','CreateCmHopperHistory','AvgHandleTime','findAll','where','sequelize','COUNT','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CmHopperHistory'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x906c,0x195));var _0xc906=function(_0x1f02aa,_0x503e41){_0x1f02aa=_0x1f02aa-0x0;var _0x5228b4=_0x906c[_0x1f02aa];return _0x5228b4;};'use strict';var _=require(_0xc906('0x0'));var util=require(_0xc906('0x1'));var moment=require(_0xc906('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc906('0x3'));var db=require(_0xc906('0x4'))['db'];var utils=require(_0xc906('0x5'));var logger=require(_0xc906('0x6'))('rpc');var config=require(_0xc906('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xc906('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x62ff11,_0x3b8256,_0x541b60){return new BPromise(function(_0x56e837,_0x2ecf55){return client['request'](_0x62ff11,_0x541b60)[_0xc906('0x9')](function(_0x10d187){logger[_0xc906('0xa')](_0xc906('0xb'),_0x3b8256,_0xc906('0xc'));logger[_0xc906('0xd')](_0xc906('0xe'),_0x3b8256,_0xc906('0xc'),JSON[_0xc906('0xf')](_0x10d187));if(_0x10d187[_0xc906('0x10')]){if(_0x10d187[_0xc906('0x10')]['code']===0x1f4){logger[_0xc906('0x10')](_0xc906('0xb'),_0x3b8256,_0x10d187[_0xc906('0x10')][_0xc906('0x11')]);return _0x2ecf55(_0x10d187[_0xc906('0x10')][_0xc906('0x11')]);}logger[_0xc906('0x10')](_0xc906('0xb'),_0x3b8256,_0x10d187['error']['message']);return _0x56e837(_0x10d187[_0xc906('0x10')][_0xc906('0x11')]);}else{logger['info'](_0xc906('0xb'),_0x3b8256,'request\x20sent');_0x56e837(_0x10d187[_0xc906('0x12')]['message']);}})[_0xc906('0x13')](function(_0x3bbcfb){logger['error'](_0xc906('0xb'),_0x3b8256,_0x3bbcfb);_0x2ecf55(_0x3bbcfb);});});}exports['CreateCmHopperHistory']=function(_0x18c65d){var _0x5ac489=this;return new Promise(function(_0x1bd41e,_0x2e1f51){return db[_0xc906('0x14')][_0xc906('0x15')](_0x18c65d['body'],{'raw':_0x18c65d[_0xc906('0x16')]?_0x18c65d['options'][_0xc906('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x5d045d){logger[_0xc906('0xa')](_0xc906('0x18'),_0x18c65d);logger['debug'](_0xc906('0x18'),_0x18c65d,JSON[_0xc906('0xf')](_0x5d045d));_0x1bd41e(_0x5d045d);})[_0xc906('0x13')](function(_0x41ab46){logger['error'](_0xc906('0x18'),_0x41ab46[_0xc906('0x11')],_0x18c65d);_0x2e1f51(_0x5ac489[_0xc906('0x10')](0x1f4,_0x41ab46[_0xc906('0x11')]));});});};exports[_0xc906('0x19')]=function(_0x5bc2b5){var _0x253a11=this;return new Promise(function(_0x287e1c,_0x40245e){return db[_0xc906('0x14')][_0xc906('0x1a')]({'raw':_0x5bc2b5[_0xc906('0x16')]?_0x5bc2b5[_0xc906('0x16')][_0xc906('0x17')]===undefined?!![]:![]:!![],'where':_0x5bc2b5['options']?_0x5bc2b5[_0xc906('0x16')][_0xc906('0x1b')]||null:null,'attributes':[[db[_0xc906('0x1c')]['fn'](_0xc906('0x1d'),db['sequelize'][_0xc906('0x1e')]('id')),_0xc906('0x1f')],[db[_0xc906('0x1c')]['fn'](_0xc906('0x1d'),db[_0xc906('0x1c')]['fn']('IF',db['sequelize'][_0xc906('0x20')](_0xc906('0x21')))),_0xc906('0x22')],[db['sequelize']['fn']('COUNT',db[_0xc906('0x1c')]['fn']('IF',db[_0xc906('0x1c')][_0xc906('0x20')](_0xc906('0x23')))),_0xc906('0x24')],[db[_0xc906('0x1c')]['fn'](_0xc906('0x1d'),db[_0xc906('0x1c')]['fn']('IF',db['sequelize'][_0xc906('0x20')](_0xc906('0x25')))),_0xc906('0x26')],[db[_0xc906('0x1c')]['fn'](_0xc906('0x27'),db[_0xc906('0x1c')]['fn']('IF',db[_0xc906('0x1c')][_0xc906('0x20')](_0xc906('0x28')))),'predictiveIntervalAvgHoldtime'],[db[_0xc906('0x1c')]['fn'](_0xc906('0x27'),db[_0xc906('0x1c')]['fn']('IF',db['sequelize'][_0xc906('0x20')](_0xc906('0x29')))),_0xc906('0x2a')]]})[_0xc906('0x9')](function(_0x5ef599){logger[_0xc906('0xa')](_0xc906('0x19'),_0x5bc2b5);logger[_0xc906('0xd')]('AvgHandleTime',_0x5bc2b5,JSON[_0xc906('0xf')](_0x5ef599));_0x287e1c(_0x5ef599);})['catch'](function(_0x3d8e03){logger[_0xc906('0x10')]('AvgHandleTime',_0x3d8e03[_0xc906('0x11')],_0x5bc2b5);_0x40245e(_0x253a11[_0xc906('0x10')](0x1f4,_0x3d8e03[_0xc906('0x11')]));});});};exports['GetVoiceQueueHopperHistory']=function(_0x3eeed9){var _0x2e2af8=this;return new Promise(function(_0x2e8627,_0x52d1ac){return db[_0xc906('0x14')][_0xc906('0x1a')]({'raw':_0x3eeed9[_0xc906('0x16')]?_0x3eeed9['options'][_0xc906('0x17')]===undefined?!![]:![]:!![],'where':_0x3eeed9[_0xc906('0x16')]?_0x3eeed9['options'][_0xc906('0x1b')]||null:null,'attributes':[[_0xc906('0x2b'),_0xc906('0x2c')],[db[_0xc906('0x1c')]['fn'](_0xc906('0x1d'),db['sequelize']['fn']('IF',db[_0xc906('0x1c')]['literal'](_0xc906('0x2d')))),_0xc906('0x2e')],[db[_0xc906('0x1c')]['fn'](_0xc906('0x1d'),db[_0xc906('0x1c')]['fn']('IF',db[_0xc906('0x1c')][_0xc906('0x20')]('`state`\x20=\x203,\x201,\x20null'))),_0xc906('0x2f')],[db['sequelize']['fn'](_0xc906('0x1d'),db['sequelize']['fn']('IF',db[_0xc906('0x1c')][_0xc906('0x20')](_0xc906('0x21')))),_0xc906('0x30')],[db[_0xc906('0x1c')]['fn']('COUNT',db[_0xc906('0x1c')]['fn']('IF',db[_0xc906('0x1c')][_0xc906('0x20')](_0xc906('0x31')))),_0xc906('0x32')],[db['sequelize']['fn'](_0xc906('0x1d'),db['sequelize']['fn']('IF',db['sequelize'][_0xc906('0x20')]('`state`\x20=\x208,\x201,\x20null'))),_0xc906('0x33')],[db['sequelize']['fn'](_0xc906('0x1d'),db[_0xc906('0x1c')]['fn']('IF',db['sequelize']['literal'](_0xc906('0x34')))),_0xc906('0x35')],[db[_0xc906('0x1c')]['fn'](_0xc906('0x1d'),db[_0xc906('0x1c')]['fn']('IF',db[_0xc906('0x1c')][_0xc906('0x20')](_0xc906('0x36')))),_0xc906('0x37')],[db[_0xc906('0x1c')]['fn'](_0xc906('0x1d'),db['sequelize']['fn']('IF',db[_0xc906('0x1c')][_0xc906('0x20')](_0xc906('0x38')))),_0xc906('0x39')],[db[_0xc906('0x1c')]['fn'](_0xc906('0x1d'),db[_0xc906('0x1c')]['fn']('IF',db[_0xc906('0x1c')]['literal'](_0xc906('0x3a')))),'outboundBlacklistCallsDay'],[db['sequelize']['fn']('COUNT',db[_0xc906('0x1c')]['fn']('IF',db[_0xc906('0x1c')]['literal'](_0xc906('0x3b')))),_0xc906('0x3c')],[db[_0xc906('0x1c')]['fn'](_0xc906('0x1d'),db['sequelize']['fn']('IF',db[_0xc906('0x1c')][_0xc906('0x20')]('`state`\x20=\x2018,\x201,\x20null'))),_0xc906('0x3d')],[db[_0xc906('0x1c')]['fn']('COUNT',db[_0xc906('0x1c')]['fn']('IF',db[_0xc906('0x1c')]['literal'](_0xc906('0x3e')))),_0xc906('0x3f')],[db[_0xc906('0x1c')]['fn'](_0xc906('0x1d'),db['sequelize']['fn']('IF',db['sequelize'][_0xc906('0x20')](_0xc906('0x40')))),_0xc906('0x3d')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xc906('0x1c')][_0xc906('0x20')](_0xc906('0x41')))),_0xc906('0x42')]],'group':[_0xc906('0x2b')]})[_0xc906('0x9')](function(_0x1be092){logger[_0xc906('0xa')]('GetVoiceQueueHopperHistory',_0x3eeed9);logger[_0xc906('0xd')](_0xc906('0x43'),_0x3eeed9,JSON[_0xc906('0xf')](_0x1be092));_0x2e8627(_0x1be092);})[_0xc906('0x13')](function(_0x561ac9){logger[_0xc906('0x10')](_0xc906('0x43'),_0x561ac9['message'],_0x3eeed9);_0x52d1ac(_0x2e2af8['error'](0x1f4,_0x561ac9['message']));});});};exports[_0xc906('0x44')]=function(_0x1d64f3){var _0x209d18=this;return new Promise(function(_0x39a54b,_0x1041ea){return db[_0xc906('0x14')][_0xc906('0x1a')]({'raw':_0x1d64f3[_0xc906('0x16')]?_0x1d64f3[_0xc906('0x16')][_0xc906('0x17')]===undefined?!![]:![]:!![],'where':_0x1d64f3[_0xc906('0x16')]?_0x1d64f3[_0xc906('0x16')]['where']||null:null,'attributes':[[_0xc906('0x2b'),'name'],[db[_0xc906('0x1c')]['fn'](_0xc906('0x1d'),db[_0xc906('0x1c')][_0xc906('0x1e')]('id')),_0xc906('0x45')],[db[_0xc906('0x1c')]['fn'](_0xc906('0x1d'),db[_0xc906('0x1c')]['fn']('IF',db[_0xc906('0x1c')]['literal'](_0xc906('0x21')))),_0xc906('0x46')]],'group':[_0xc906('0x2b')]})[_0xc906('0x9')](function(_0x55f12b){logger[_0xc906('0xa')](_0xc906('0x44'),_0x1d64f3);logger[_0xc906('0xd')](_0xc906('0x44'),_0x1d64f3,JSON[_0xc906('0xf')](_0x55f12b));_0x39a54b(_0x55f12b);})[_0xc906('0x13')](function(_0x448481){logger[_0xc906('0x10')]('GetCampaignHopperHistory',_0x448481[_0xc906('0x11')],_0x1d64f3);_0x1041ea(_0x209d18[_0xc906('0x10')](0x1f4,_0x448481[_0xc906('0x11')]));});});};
\ No newline at end of file
+var _0xde13=['outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','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','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','name','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','CreateCmHopperHistory','CmHopperHistory','body','options','raw','then','info','AvgHandleTime','findAll','where','sequelize','col','predictiveIntervalTotalCalls','COUNT','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','campaign','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null'];(function(_0x58f479,_0xd68673){var _0x903b31=function(_0x413175){while(--_0x413175){_0x58f479['push'](_0x58f479['shift']());}};_0x903b31(++_0xd68673);}(_0xde13,0x146));var _0x3de1=function(_0x26e46c,_0x1751d4){_0x26e46c=_0x26e46c-0x0;var _0x51e33b=_0xde13[_0x26e46c];return _0x51e33b;};'use strict';var _=require(_0x3de1('0x0'));var util=require(_0x3de1('0x1'));var moment=require(_0x3de1('0x2'));var BPromise=require(_0x3de1('0x3'));var rs=require(_0x3de1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3de1('0x5'))['db'];var utils=require(_0x3de1('0x6'));var logger=require(_0x3de1('0x7'))('rpc');var config=require(_0x3de1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x3de1('0x9')][_0x3de1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3d2169,_0x34291a,_0x5f1aff){return new BPromise(function(_0x11df45,_0x41b5bb){return client[_0x3de1('0xb')](_0x3d2169,_0x5f1aff)['then'](function(_0x4eb503){logger['info'](_0x3de1('0xc'),_0x34291a,_0x3de1('0xd'));logger[_0x3de1('0xe')]('CmHopperHistory,\x20%s,\x20%s,\x20%s',_0x34291a,_0x3de1('0xd'),JSON[_0x3de1('0xf')](_0x4eb503));if(_0x4eb503[_0x3de1('0x10')]){if(_0x4eb503['error']['code']===0x1f4){logger[_0x3de1('0x10')]('CmHopperHistory,\x20%s,\x20%s',_0x34291a,_0x4eb503['error']['message']);return _0x41b5bb(_0x4eb503[_0x3de1('0x10')][_0x3de1('0x11')]);}logger[_0x3de1('0x10')](_0x3de1('0xc'),_0x34291a,_0x4eb503['error'][_0x3de1('0x11')]);return _0x11df45(_0x4eb503['error'][_0x3de1('0x11')]);}else{logger['info'](_0x3de1('0xc'),_0x34291a,_0x3de1('0xd'));_0x11df45(_0x4eb503[_0x3de1('0x12')]['message']);}})[_0x3de1('0x13')](function(_0x25f619){logger[_0x3de1('0x10')](_0x3de1('0xc'),_0x34291a,_0x25f619);_0x41b5bb(_0x25f619);});});}exports[_0x3de1('0x14')]=function(_0x510e5a){var _0x19254b=this;return new Promise(function(_0x5a10f2,_0x1e5a06){return db[_0x3de1('0x15')]['create'](_0x510e5a[_0x3de1('0x16')],{'raw':_0x510e5a['options']?_0x510e5a[_0x3de1('0x17')][_0x3de1('0x18')]===undefined?!![]:![]:!![]})[_0x3de1('0x19')](function(_0x5635b5){logger[_0x3de1('0x1a')](_0x3de1('0x14'),_0x510e5a);logger[_0x3de1('0xe')]('CreateCmHopperHistory',_0x510e5a,JSON[_0x3de1('0xf')](_0x5635b5));_0x5a10f2(_0x5635b5);})[_0x3de1('0x13')](function(_0x594bdb){logger['error'](_0x3de1('0x14'),_0x594bdb[_0x3de1('0x11')],_0x510e5a);_0x1e5a06(_0x19254b[_0x3de1('0x10')](0x1f4,_0x594bdb[_0x3de1('0x11')]));});});};exports[_0x3de1('0x1b')]=function(_0x4370f2){var _0x1e074c=this;return new Promise(function(_0xa7af52,_0x491b3d){return db['CmHopperHistory'][_0x3de1('0x1c')]({'raw':_0x4370f2[_0x3de1('0x17')]?_0x4370f2[_0x3de1('0x17')][_0x3de1('0x18')]===undefined?!![]:![]:!![],'where':_0x4370f2[_0x3de1('0x17')]?_0x4370f2['options'][_0x3de1('0x1d')]||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0x3de1('0x1e')][_0x3de1('0x1f')]('id')),_0x3de1('0x20')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x23')))),_0x3de1('0x24')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db['sequelize']['fn']('IF',db['sequelize'][_0x3de1('0x22')]('`state`\x20=\x2010,\x201,\x20null'))),_0x3de1('0x25')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db['sequelize']['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x26')))),_0x3de1('0x27')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x28'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x29')))),_0x3de1('0x2a')],[db[_0x3de1('0x1e')]['fn']('AVG',db['sequelize']['fn']('IF',db['sequelize'][_0x3de1('0x22')](_0x3de1('0x2b')))),_0x3de1('0x2c')]]})[_0x3de1('0x19')](function(_0x498068){logger['info'](_0x3de1('0x1b'),_0x4370f2);logger['debug']('AvgHandleTime',_0x4370f2,JSON[_0x3de1('0xf')](_0x498068));_0xa7af52(_0x498068);})[_0x3de1('0x13')](function(_0x4ee49b){logger[_0x3de1('0x10')](_0x3de1('0x1b'),_0x4ee49b[_0x3de1('0x11')],_0x4370f2);_0x491b3d(_0x1e074c[_0x3de1('0x10')](0x1f4,_0x4ee49b[_0x3de1('0x11')]));});});};exports['GetVoiceQueueHopperHistory']=function(_0x447186){var _0x5a389d=this;return new Promise(function(_0x23cc71,_0x336480){return db[_0x3de1('0x15')][_0x3de1('0x1c')]({'raw':_0x447186[_0x3de1('0x17')]?_0x447186[_0x3de1('0x17')][_0x3de1('0x18')]===undefined?!![]:![]:!![],'where':_0x447186[_0x3de1('0x17')]?_0x447186[_0x3de1('0x17')]['where']||null:null,'attributes':[[_0x3de1('0x2d'),'name'],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x2e')))),_0x3de1('0x2f')],[db['sequelize']['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x30')))),_0x3de1('0x31')],[db['sequelize']['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x23')))),_0x3de1('0x32')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db['sequelize'][_0x3de1('0x22')](_0x3de1('0x33')))),'outboundBusyCallsDay'],[db['sequelize']['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db['sequelize']['literal'](_0x3de1('0x34')))),_0x3de1('0x35')],[db['sequelize']['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')]['literal'](_0x3de1('0x36')))),_0x3de1('0x37')],[db[_0x3de1('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x3de1('0x38')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x39')))),_0x3de1('0x3a')],[db['sequelize']['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db['sequelize']['literal'](_0x3de1('0x3b')))),_0x3de1('0x3c')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x3de1('0x3d')))),_0x3de1('0x3e')],[db[_0x3de1('0x1e')]['fn']('COUNT',db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x3f')))),_0x3de1('0x40')],[db['sequelize']['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x41')))),_0x3de1('0x42')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x43')))),_0x3de1('0x40')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x44')))),_0x3de1('0x45')]],'group':[_0x3de1('0x2d')]})['then'](function(_0x3fa07a){logger[_0x3de1('0x1a')]('GetVoiceQueueHopperHistory',_0x447186);logger[_0x3de1('0xe')](_0x3de1('0x46'),_0x447186,JSON[_0x3de1('0xf')](_0x3fa07a));_0x23cc71(_0x3fa07a);})[_0x3de1('0x13')](function(_0x818fc5){logger[_0x3de1('0x10')](_0x3de1('0x46'),_0x818fc5[_0x3de1('0x11')],_0x447186);_0x336480(_0x5a389d['error'](0x1f4,_0x818fc5[_0x3de1('0x11')]));});});};exports[_0x3de1('0x47')]=function(_0x22de90){var _0x26b88f=this;return new Promise(function(_0x3a9898,_0x1c9671){return db[_0x3de1('0x15')][_0x3de1('0x1c')]({'raw':_0x22de90[_0x3de1('0x17')]?_0x22de90[_0x3de1('0x17')][_0x3de1('0x18')]===undefined?!![]:![]:!![],'where':_0x22de90['options']?_0x22de90[_0x3de1('0x17')]['where']||null:null,'attributes':[['campaign',_0x3de1('0x48')],[db[_0x3de1('0x1e')]['fn']('COUNT',db['sequelize'][_0x3de1('0x1f')]('id')),_0x3de1('0x49')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db['sequelize']['fn']('IF',db['sequelize'][_0x3de1('0x22')](_0x3de1('0x23')))),_0x3de1('0x4a')]],'group':[_0x3de1('0x2d')]})[_0x3de1('0x19')](function(_0x515a45){logger[_0x3de1('0x1a')](_0x3de1('0x47'),_0x22de90);logger['debug'](_0x3de1('0x47'),_0x22de90,JSON[_0x3de1('0xf')](_0x515a45));_0x3a9898(_0x515a45);})[_0x3de1('0x13')](function(_0x17b9f2){logger[_0x3de1('0x10')](_0x3de1('0x47'),_0x17b9f2[_0x3de1('0x11')],_0x22de90);_0x1c9671(_0x26b88f[_0x3de1('0x10')](0x1f4,_0x17b9f2[_0x3de1('0x11')]));});});};
\ No newline at end of file
index 9af0701..3858fc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcc8=['get','create','put','/:id','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','isAuthenticated','index','describe'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0xbcc8,0x101));var _0x8bcc=function(_0x3c4062,_0x3767fc){_0x3c4062=_0x3c4062-0x0;var _0x3f5bf3=_0xbcc8[_0x3c4062];return _0x3f5bf3;};'use strict';var multer=require(_0x8bcc('0x0'));var util=require(_0x8bcc('0x1'));var path=require(_0x8bcc('0x2'));var timeout=require(_0x8bcc('0x3'));var express=require(_0x8bcc('0x4'));var router=express[_0x8bcc('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8bcc('0x6'));var interaction=require(_0x8bcc('0x7'));var config=require(_0x8bcc('0x8'));var controller=require(_0x8bcc('0x9'));router['get']('/',auth[_0x8bcc('0xa')](),controller[_0x8bcc('0xb')]);router['get']('/describe',auth[_0x8bcc('0xa')](),controller[_0x8bcc('0xc')]);router[_0x8bcc('0xd')]('/:id',auth[_0x8bcc('0xa')](),controller['show']);router['post']('/',auth[_0x8bcc('0xa')](),controller[_0x8bcc('0xe')]);router[_0x8bcc('0xf')](_0x8bcc('0x10'),auth[_0x8bcc('0xa')](),controller['update']);module[_0x8bcc('0x11')]=router;
\ No newline at end of file
+var _0xfd6e=['get','index','/describe','describe','/:id','isAuthenticated','show','post','create','update','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0xfd6e,0xfb));var _0xefd6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd6e[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xefd6('0x0'));var util=require('util');var path=require(_0xefd6('0x1'));var timeout=require('connect-timeout');var express=require(_0xefd6('0x2'));var router=express[_0xefd6('0x3')]();var fs_extra=require(_0xefd6('0x4'));var auth=require(_0xefd6('0x5'));var interaction=require(_0xefd6('0x6'));var config=require(_0xefd6('0x7'));var controller=require(_0xefd6('0x8'));router[_0xefd6('0x9')]('/',auth['isAuthenticated'](),controller[_0xefd6('0xa')]);router[_0xefd6('0x9')](_0xefd6('0xb'),auth['isAuthenticated'](),controller[_0xefd6('0xc')]);router['get'](_0xefd6('0xd'),auth[_0xefd6('0xe')](),controller[_0xefd6('0xf')]);router[_0xefd6('0x10')]('/',auth[_0xefd6('0xe')](),controller[_0xefd6('0x11')]);router['put']('/:id',auth[_0xefd6('0xe')](),controller[_0xefd6('0x12')]);module[_0xefd6('0x13')]=router;
\ No newline at end of file
index f615b3d..91ba720 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x723e=['STRING','name','exports'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0x723e,0x179));var _0xe723=function(_0x3a88a2,_0x4d1357){_0x3a88a2=_0x3a88a2-0x0;var _0x10fb3b=_0x723e[_0x3a88a2];return _0x10fb3b;};'use strict';var Sequelize=require('sequelize');module[_0xe723('0x0')]={'name':{'type':Sequelize[_0xe723('0x1')],'unique':_0xe723('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xe723('0x1')]},'dialPrefix':{'type':Sequelize[_0xe723('0x1')]}};
\ No newline at end of file
+var _0x7f42=['sequelize','STRING','name'];(function(_0x13b781,_0x2a536b){var _0x3969a3=function(_0x3657ed){while(--_0x3657ed){_0x13b781['push'](_0x13b781['shift']());}};_0x3969a3(++_0x2a536b);}(_0x7f42,0x1dd));var _0x27f4=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x7f42[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x27f4('0x0'));module['exports']={'name':{'type':Sequelize[_0x27f4('0x1')],'unique':_0x27f4('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize[_0x27f4('0x1')]}};
\ No newline at end of file
index 1047ad8..c42e52e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8e2=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','UserProfileResource','name','send','map','CmList','fieldName','type','model','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','catch','show','params','rawAttributes','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Lists','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','ListId','Disposition','getDispositions','findOne','hasOwnProperty','rows','removeDispositions','addContacts','CmContact','tags','isArray','join','omit','ids','push','errors','CustomFields','concat','format','cf_%d','raw','getContacts','getContactsCsv','isEmpty','now','/tmp/list_%d_%s.csv','setHeader','list_%d_%s.csv','Content-type','text/csv','sequelize','CmCustomField','addCustomFields','Sequelize','TEXT','text','number','INTEGER','switch','defaultValue','addColumn','getCustomFields','findAndCountAll','addAgents','spread','userCmList:save','removeAgents','emit','getAgents','User','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs'];(function(_0x287c3a,_0x1b39e0){var _0x129cfd=function(_0x2b4d17){while(--_0x2b4d17){_0x287c3a['push'](_0x287c3a['shift']());}};_0x129cfd(++_0x1b39e0);}(_0xd8e2,0x18a));var _0x2d8e=function(_0x5b8fe1,_0x44fa37){_0x5b8fe1=_0x5b8fe1-0x0;var _0x5cbad8=_0xd8e2[_0x5b8fe1];return _0x5cbad8;};'use strict';var emlformat=require(_0x2d8e('0x0'));var rimraf=require(_0x2d8e('0x1'));var zipdir=require(_0x2d8e('0x2'));var jsonpatch=require(_0x2d8e('0x3'));var rp=require(_0x2d8e('0x4'));var moment=require(_0x2d8e('0x5'));var BPromise=require(_0x2d8e('0x6'));var Mustache=require(_0x2d8e('0x7'));var util=require(_0x2d8e('0x8'));var path=require('path');var sox=require(_0x2d8e('0x9'));var csv=require(_0x2d8e('0xa'));var ejs=require(_0x2d8e('0xb'));var fs=require('fs');var fs_extra=require(_0x2d8e('0xc'));var _=require(_0x2d8e('0xd'));var squel=require(_0x2d8e('0xe'));var crypto=require('crypto');var jsforce=require(_0x2d8e('0xf'));var deskjs=require(_0x2d8e('0x10'));var toCsv=require('to-csv');var querystring=require(_0x2d8e('0x11'));var Papa=require('papaparse');var Redis=require(_0x2d8e('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x2d8e('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2d8e('0x14'));var logger=require(_0x2d8e('0x15'))(_0x2d8e('0x16'));var utils=require(_0x2d8e('0x17'));var config=require(_0x2d8e('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x2d8e('0x19')]=_[_0x2d8e('0x1a')](config['redis'],{'host':_0x2d8e('0x1b'),'port':0x18eb});var socket=require(_0x2d8e('0x1c'))(new Redis(config[_0x2d8e('0x19')]));require(_0x2d8e('0x1d'))[_0x2d8e('0x1e')](socket);function respondWithStatusCode(_0x54602a,_0x185674){_0x185674=_0x185674||0xcc;return function(_0x379785){if(_0x379785){return _0x54602a[_0x2d8e('0x1f')](_0x185674);}return _0x54602a[_0x2d8e('0x20')](_0x185674)[_0x2d8e('0x21')]();};}function respondWithResult(_0xe4680,_0x5ee394){_0x5ee394=_0x5ee394||0xc8;return function(_0x50d887){if(_0x50d887){return _0xe4680[_0x2d8e('0x20')](_0x5ee394)[_0x2d8e('0x22')](_0x50d887);}};}function respondWithFilteredResult(_0x29d113,_0x33eb4f){return function(_0x4fec9f){if(_0x4fec9f){var _0x374f2c=typeof _0x33eb4f['offset']===_0x2d8e('0x23')&&typeof _0x33eb4f[_0x2d8e('0x24')]===_0x2d8e('0x23');var _0x4d0e53=_0x4fec9f['count'];var _0x2f3650=_0x374f2c?0x0:_0x33eb4f['offset'];var _0x247fa4=_0x374f2c?_0x4fec9f[_0x2d8e('0x25')]:_0x33eb4f[_0x2d8e('0x26')]+_0x33eb4f[_0x2d8e('0x24')];var _0x414650;if(_0x247fa4>=_0x4d0e53){_0x247fa4=_0x4d0e53;_0x414650=0xc8;}else{_0x414650=0xce;}_0x29d113[_0x2d8e('0x20')](_0x414650);return _0x29d113['set'](_0x2d8e('0x27'),_0x2f3650+'-'+_0x247fa4+'/'+_0x4d0e53)[_0x2d8e('0x22')](_0x4fec9f);}return null;};}function patchUpdates(_0x1f1329){return function(_0x1a56c6){try{jsonpatch[_0x2d8e('0x28')](_0x1a56c6,_0x1f1329,!![]);}catch(_0x812ef2){return BPromise[_0x2d8e('0x29')](_0x812ef2);}return _0x1a56c6[_0x2d8e('0x2a')]();};}function saveUpdates(_0x5d8748,_0x323bb3){return function(_0x48c9e7){if(_0x48c9e7){return _0x48c9e7[_0x2d8e('0x2b')](_0x5d8748)[_0x2d8e('0x2c')](function(_0x1bb34e){return _0x1bb34e;});}return null;};}function removeEntity(_0x2f8e57,_0x1c7826){return function(_0x50559d){if(_0x50559d){return _0x50559d[_0x2d8e('0x2d')]()[_0x2d8e('0x2c')](function(){var _0x5c3cb1=_0x50559d['get']({'plain':!![]});var _0x1b1cf0='Lists';return db[_0x2d8e('0x2e')][_0x2d8e('0x2d')]({'where':{'type':_0x1b1cf0,'resourceId':_0x5c3cb1['id']}})[_0x2d8e('0x2c')](function(){return _0x50559d;});})[_0x2d8e('0x2c')](function(){_0x2f8e57[_0x2d8e('0x20')](0xcc)[_0x2d8e('0x21')]();});}};}function handleEntityNotFound(_0x44791d,_0xb99055){return function(_0xfb09d2){if(!_0xfb09d2){_0x44791d['sendStatus'](0x194);}return _0xfb09d2;};}function handleError(_0x109bfc,_0xe4e1e5){_0xe4e1e5=_0xe4e1e5||0x1f4;return function(_0x3b4b42){logger['error'](_0x3b4b42['stack']);if(_0x3b4b42[_0x2d8e('0x2f')]){delete _0x3b4b42[_0x2d8e('0x2f')];}_0x109bfc[_0x2d8e('0x20')](_0xe4e1e5)[_0x2d8e('0x30')](_0x3b4b42);};}exports['index']=function(_0x15721e,_0x2fffdf){var _0x1d8c94={},_0x24ee68={},_0x545572={'count':0x0,'rows':[]};var _0x1bfbad=_[_0x2d8e('0x31')](db[_0x2d8e('0x32')]['rawAttributes'],function(_0x443835){return{'name':_0x443835[_0x2d8e('0x33')],'type':_0x443835[_0x2d8e('0x34')]['key']};});_0x24ee68[_0x2d8e('0x35')]=_['map'](_0x1bfbad,_0x2d8e('0x2f'));_0x24ee68[_0x2d8e('0x36')]=_[_0x2d8e('0x37')](_0x15721e['query']);_0x24ee68['filters']=_[_0x2d8e('0x38')](_0x24ee68['model'],_0x24ee68[_0x2d8e('0x36')]);_0x1d8c94['attributes']=_[_0x2d8e('0x38')](_0x24ee68[_0x2d8e('0x35')],qs['fields'](_0x15721e[_0x2d8e('0x36')][_0x2d8e('0x39')]));_0x1d8c94[_0x2d8e('0x3a')]=_0x1d8c94[_0x2d8e('0x3a')][_0x2d8e('0x3b')]?_0x1d8c94['attributes']:_0x24ee68[_0x2d8e('0x35')];if(!_0x15721e[_0x2d8e('0x36')]['hasOwnProperty'](_0x2d8e('0x3c'))){_0x1d8c94[_0x2d8e('0x24')]=qs[_0x2d8e('0x24')](_0x15721e[_0x2d8e('0x36')]['limit']);_0x1d8c94[_0x2d8e('0x26')]=qs[_0x2d8e('0x26')](_0x15721e[_0x2d8e('0x36')][_0x2d8e('0x26')]);}_0x1d8c94[_0x2d8e('0x3d')]=qs[_0x2d8e('0x3e')](_0x15721e[_0x2d8e('0x36')]['sort']);_0x1d8c94[_0x2d8e('0x3f')]=qs[_0x2d8e('0x40')](_[_0x2d8e('0x41')](_0x15721e['query'],_0x24ee68['filters']),_0x1bfbad);if(_0x15721e[_0x2d8e('0x36')][_0x2d8e('0x42')]){_0x1d8c94['where']=_[_0x2d8e('0x43')](_0x1d8c94[_0x2d8e('0x3f')],{'$or':_['map'](_0x1bfbad,function(_0x26be33){if(_0x26be33['type']!==_0x2d8e('0x44')){var _0x32e3dc={};_0x32e3dc[_0x26be33[_0x2d8e('0x2f')]]={'$like':'%'+_0x15721e[_0x2d8e('0x36')][_0x2d8e('0x42')]+'%'};return _0x32e3dc;}})});}_0x1d8c94=_[_0x2d8e('0x43')]({},_0x1d8c94,_0x15721e[_0x2d8e('0x45')]);var _0x53e1ba={'where':_0x1d8c94[_0x2d8e('0x3f')]};return db['CmList'][_0x2d8e('0x25')](_0x53e1ba)['then'](function(_0xb8736f){_0x545572[_0x2d8e('0x25')]=_0xb8736f;if(_0x15721e[_0x2d8e('0x36')][_0x2d8e('0x46')]){_0x1d8c94[_0x2d8e('0x47')]=[{'all':!![]}];}return db[_0x2d8e('0x32')]['findAll'](_0x1d8c94);})[_0x2d8e('0x2c')](function(_0x1c4c69){_0x545572['rows']=_0x1c4c69;return _0x545572;})[_0x2d8e('0x2c')](respondWithFilteredResult(_0x2fffdf,_0x1d8c94))[_0x2d8e('0x48')](handleError(_0x2fffdf,null));};exports[_0x2d8e('0x49')]=function(_0x34cdad,_0x16faff){var _0x5c30fb={'raw':![],'where':{'id':_0x34cdad[_0x2d8e('0x4a')]['id']}},_0x51fbec={};_0x51fbec['model']=_['keys'](db[_0x2d8e('0x32')][_0x2d8e('0x4b')]);_0x51fbec['query']=_[_0x2d8e('0x37')](_0x34cdad[_0x2d8e('0x36')]);_0x51fbec[_0x2d8e('0x40')]=_['intersection'](_0x51fbec[_0x2d8e('0x35')],_0x51fbec[_0x2d8e('0x36')]);_0x5c30fb[_0x2d8e('0x3a')]=_['intersection'](_0x51fbec[_0x2d8e('0x35')],qs[_0x2d8e('0x39')](_0x34cdad[_0x2d8e('0x36')][_0x2d8e('0x39')]));_0x5c30fb[_0x2d8e('0x3a')]=_0x5c30fb[_0x2d8e('0x3a')][_0x2d8e('0x3b')]?_0x5c30fb[_0x2d8e('0x3a')]:_0x51fbec['model'];if(_0x34cdad[_0x2d8e('0x36')][_0x2d8e('0x46')]){_0x5c30fb[_0x2d8e('0x47')]=[{'all':!![]}];}_0x5c30fb=_['merge']({},_0x5c30fb,_0x34cdad['options']);return db[_0x2d8e('0x32')][_0x2d8e('0x4c')](_0x5c30fb)[_0x2d8e('0x2c')](handleEntityNotFound(_0x16faff,null))[_0x2d8e('0x2c')](respondWithResult(_0x16faff,null))[_0x2d8e('0x48')](handleError(_0x16faff,null));};exports[_0x2d8e('0x4d')]=function(_0x54fb35,_0x5e4b11){return db[_0x2d8e('0x32')][_0x2d8e('0x4d')](_0x54fb35[_0x2d8e('0x4e')],{})['then'](function(_0x39e32c){var _0xe53d0e=_0x54fb35['user'][_0x2d8e('0x4f')]({'plain':!![]});if(!_0xe53d0e)throw new Error(_0x2d8e('0x50'));if(_0xe53d0e[_0x2d8e('0x51')]===_0x2d8e('0x52')){var _0x4ea135=_0x39e32c['get']({'plain':!![]});var _0xfad8d8=_0x2d8e('0x53');return db['UserProfileSection'][_0x2d8e('0x4c')]({'where':{'name':_0xfad8d8,'userProfileId':_0xe53d0e['userProfileId']},'raw':!![]})[_0x2d8e('0x2c')](function(_0x38b347){if(_0x38b347&&_0x38b347[_0x2d8e('0x54')]===0x0){return db['UserProfileResource'][_0x2d8e('0x4d')]({'name':_0x4ea135[_0x2d8e('0x2f')],'resourceId':_0x4ea135['id'],'type':_0x38b347[_0x2d8e('0x2f')],'sectionId':_0x38b347['id']},{})[_0x2d8e('0x2c')](function(){return _0x39e32c;});}else{return _0x39e32c;}})[_0x2d8e('0x48')](function(_0x2209fb){logger[_0x2d8e('0x55')](_0x2d8e('0x56'),_0x2209fb);throw _0x2209fb;});}return _0x39e32c;})[_0x2d8e('0x2c')](respondWithResult(_0x5e4b11,0xc9))[_0x2d8e('0x48')](handleError(_0x5e4b11,null));};exports[_0x2d8e('0x2b')]=function(_0x420cf1,_0xe50856){if(_0x420cf1[_0x2d8e('0x4e')]['id']){delete _0x420cf1[_0x2d8e('0x4e')]['id'];}return db[_0x2d8e('0x32')][_0x2d8e('0x4c')]({'where':{'id':_0x420cf1[_0x2d8e('0x4a')]['id']}})[_0x2d8e('0x2c')](handleEntityNotFound(_0xe50856,null))[_0x2d8e('0x2c')](saveUpdates(_0x420cf1[_0x2d8e('0x4e')],null))[_0x2d8e('0x2c')](respondWithResult(_0xe50856,null))[_0x2d8e('0x48')](handleError(_0xe50856,null));};exports['destroy']=function(_0x374907,_0x292027){return db['CmList']['find']({'where':{'id':_0x374907[_0x2d8e('0x4a')]['id']}})[_0x2d8e('0x2c')](handleEntityNotFound(_0x292027,null))[_0x2d8e('0x2c')](removeEntity(_0x292027,null))['catch'](handleError(_0x292027,null));};exports['describe']=function(_0x33e4cc,_0x92c9a6){return db['CmList'][_0x2d8e('0x57')]()[_0x2d8e('0x2c')](respondWithResult(_0x92c9a6,null))[_0x2d8e('0x48')](handleError(_0x92c9a6,null));};exports['addDisposition']=function(_0x525398,_0x14b12d,_0x10cad5){if(_0x525398['body']['id']){delete _0x525398[_0x2d8e('0x4e')]['id'];}return db[_0x2d8e('0x32')][_0x2d8e('0x4c')]({'where':{'id':_0x525398[_0x2d8e('0x4a')]['id']}})[_0x2d8e('0x2c')](handleEntityNotFound(_0x14b12d,null))['then'](function(_0xa7d7fe){if(_0xa7d7fe){_0x525398[_0x2d8e('0x4e')][_0x2d8e('0x58')]=_0xa7d7fe['id'];return db[_0x2d8e('0x59')][_0x2d8e('0x4d')](_0x525398[_0x2d8e('0x4e')]);}})[_0x2d8e('0x2c')](respondWithResult(_0x14b12d,null))[_0x2d8e('0x48')](handleError(_0x14b12d,null));};exports[_0x2d8e('0x5a')]=function(_0x8b0848,_0x3385c5,_0x2971a4){var _0x35f9de={'raw':![],'where':{}};var _0x464267={};var _0x4b5eb0={'count':0x0,'rows':[]};return db[_0x2d8e('0x32')][_0x2d8e('0x5b')]({'where':{'id':_0x8b0848[_0x2d8e('0x4a')]['id']}})[_0x2d8e('0x2c')](handleEntityNotFound(_0x3385c5,null))['then'](function(_0x1f64cb){if(_0x1f64cb){_0x464267[_0x2d8e('0x35')]=_[_0x2d8e('0x37')](db[_0x2d8e('0x59')][_0x2d8e('0x4b')]);_0x464267['query']=_[_0x2d8e('0x37')](_0x8b0848[_0x2d8e('0x36')]);_0x464267[_0x2d8e('0x40')]=_[_0x2d8e('0x38')](_0x464267[_0x2d8e('0x35')],_0x464267['query']);_0x35f9de[_0x2d8e('0x3a')]=_[_0x2d8e('0x38')](_0x464267['model'],qs[_0x2d8e('0x39')](_0x8b0848[_0x2d8e('0x36')]['fields']));_0x35f9de[_0x2d8e('0x3a')]=_0x35f9de[_0x2d8e('0x3a')]['length']?_0x35f9de['attributes']:_0x464267[_0x2d8e('0x35')];if(!_0x8b0848[_0x2d8e('0x36')][_0x2d8e('0x5c')](_0x2d8e('0x3c'))){_0x35f9de['limit']=qs[_0x2d8e('0x24')](_0x8b0848['query'][_0x2d8e('0x24')]);_0x35f9de['offset']=qs[_0x2d8e('0x26')](_0x8b0848[_0x2d8e('0x36')][_0x2d8e('0x26')]);}_0x35f9de[_0x2d8e('0x3d')]=qs[_0x2d8e('0x3e')](_0x8b0848['query'][_0x2d8e('0x3e')]);_0x35f9de['where']=qs['filters'](_[_0x2d8e('0x41')](_0x8b0848[_0x2d8e('0x36')],_0x464267[_0x2d8e('0x40')]));_0x35f9de[_0x2d8e('0x3f')][_0x2d8e('0x58')]=_0x1f64cb['id'];if(_0x8b0848[_0x2d8e('0x36')][_0x2d8e('0x42')]){_0x35f9de['where']=_[_0x2d8e('0x43')](_0x35f9de['where'],{'$or':_[_0x2d8e('0x31')](_0x35f9de[_0x2d8e('0x3a')],function(_0x26c488){var _0x6cc7b9={};_0x6cc7b9[_0x26c488]={'$like':'%'+_0x8b0848[_0x2d8e('0x36')][_0x2d8e('0x42')]+'%'};return _0x6cc7b9;})});}_0x35f9de=_['merge']({},_0x35f9de,_0x8b0848[_0x2d8e('0x45')]);return db[_0x2d8e('0x59')]['count']({'where':_0x35f9de['where']})[_0x2d8e('0x2c')](function(_0x384083){_0x4b5eb0[_0x2d8e('0x25')]=_0x384083;if(_0x8b0848[_0x2d8e('0x36')][_0x2d8e('0x46')]){_0x35f9de[_0x2d8e('0x47')]=[{'all':!![]}];}return db[_0x2d8e('0x59')]['findAll'](_0x35f9de);})['then'](function(_0x2fd400){_0x4b5eb0[_0x2d8e('0x5d')]=_0x2fd400;return _0x4b5eb0;});}})[_0x2d8e('0x2c')](respondWithFilteredResult(_0x3385c5,_0x35f9de))[_0x2d8e('0x48')](handleError(_0x3385c5,null));};exports[_0x2d8e('0x5e')]=function(_0x2a6076,_0x2a307d,_0x199027){return db[_0x2d8e('0x32')][_0x2d8e('0x4c')]({'where':{'id':_0x2a6076[_0x2d8e('0x4a')]['id']}})[_0x2d8e('0x2c')](handleEntityNotFound(_0x2a307d,null))[_0x2d8e('0x2c')](function(_0x2268d1){if(_0x2268d1){return _0x2268d1[_0x2d8e('0x5e')](_0x2a6076[_0x2d8e('0x36')]['ids']);}})[_0x2d8e('0x2c')](respondWithStatusCode(_0x2a307d,null))[_0x2d8e('0x48')](handleError(_0x2a307d,null));};exports[_0x2d8e('0x5f')]=function(_0x4bd147,_0x2ed921,_0x317ed1){return db[_0x2d8e('0x32')][_0x2d8e('0x4c')]({'where':{'id':_0x4bd147[_0x2d8e('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2ed921,null))[_0x2d8e('0x2c')](function(_0x4dce18){if(_0x4dce18){var _0x5bafb2=[];var _0x43c13f={'success':[],'errors':[]};return db[_0x2d8e('0x60')][_0x2d8e('0x57')]()[_0x2d8e('0x2c')](function(_0x433796){if(_0x4bd147[_0x2d8e('0x4e')][_0x2d8e('0x61')]&&_[_0x2d8e('0x62')](_0x4bd147[_0x2d8e('0x4e')][_0x2d8e('0x61')])){if(_0x4bd147[_0x2d8e('0x4e')][_0x2d8e('0x61')][_0x2d8e('0x3b')]){_0x4bd147[_0x2d8e('0x4e')][_0x2d8e('0x61')]=_0x4bd147[_0x2d8e('0x4e')][_0x2d8e('0x61')][_0x2d8e('0x63')](';')+';';}else{_0x4bd147['body'][_0x2d8e('0x61')]=null;}}else{_0x4bd147['body'][_0x2d8e('0x61')]=null;}if(_0x4bd147['body']&&_[_0x2d8e('0x62')](_0x4bd147['body'])){for(var _0xafee34=0x0;_0xafee34<_0x4bd147[_0x2d8e('0x4e')][_0x2d8e('0x3b')];_0xafee34+=0x1){_0x4bd147[_0x2d8e('0x4e')][_0xafee34][_0x2d8e('0x58')]=_0x4bd147['params']['id'];_0x5bafb2['push'](_0x4bd147['body'][_0xafee34]);}return BPromise['each'](_0x5bafb2,function(_0x4854c2){return db[_0x2d8e('0x60')][_0x2d8e('0x4d')](_[_0x2d8e('0x64')](_0x4854c2,[_0x2d8e('0x65'),'id'])||{},{'fields':_['keys'](_0x433796),'raw':!![]})[_0x2d8e('0x2c')](function(_0x270d4b){_0x43c13f['success'][_0x2d8e('0x66')](_0x270d4b['dataValues']);})[_0x2d8e('0x48')](function(_0x42765c){_0x43c13f[_0x2d8e('0x67')][_0x2d8e('0x66')]({'data':_0x4854c2,'error':_0x42765c['message']});});})[_0x2d8e('0x2c')](function(_0x43226c){return _0x43c13f;})[_0x2d8e('0x48')](function(_0x1ad5b6){return _0x1ad5b6;});}else{_0x2ed921['status'](0x190)[_0x2d8e('0x22')]({'message':'Malformed\x20request\x20syntax'});}});}})['then'](respondWithResult(_0x2ed921,null))['catch'](handleError(_0x2ed921,null));};exports['getContacts']=function(_0x307201,_0x44a722,_0x4c2a6b){var _0x37f81d;return db[_0x2d8e('0x32')][_0x2d8e('0x4c')]({'where':{'id':_0x307201[_0x2d8e('0x4a')]['id']},'include':[{'model':db['CmCustomField'],'as':_0x2d8e('0x68')}]})['then'](handleEntityNotFound(_0x44a722,null))[_0x2d8e('0x2c')](function(_0x3b5996){if(_0x3b5996){_0x37f81d=_0x3b5996;return db[_0x2d8e('0x60')][_0x2d8e('0x4b')];}})[_0x2d8e('0x2c')](function(_0xc00cb4){if(_0xc00cb4){var _0x5b0b00={};var _0x208031={};_0x208031[_0x2d8e('0x35')]=_[_0x2d8e('0x69')](_[_0x2d8e('0x37')](_0xc00cb4),_[_0x2d8e('0x31')](_0x37f81d['CustomFields'],function(_0x15f231){return util[_0x2d8e('0x6a')](_0x2d8e('0x6b'),_0x15f231['id']);}));_0x208031[_0x2d8e('0x36')]=_['keys'](_0x307201[_0x2d8e('0x36')]);_0x208031[_0x2d8e('0x40')]=_[_0x2d8e('0x38')](_0x208031[_0x2d8e('0x35')],_0x208031[_0x2d8e('0x36')]);_0x5b0b00[_0x2d8e('0x3a')]=_[_0x2d8e('0x38')](_0x208031[_0x2d8e('0x35')],qs[_0x2d8e('0x39')](_0x307201['query'][_0x2d8e('0x39')]));_0x5b0b00[_0x2d8e('0x3a')]=_0x5b0b00[_0x2d8e('0x3a')][_0x2d8e('0x3b')]?_0x5b0b00['attributes']:_0x208031[_0x2d8e('0x35')];if(!_0x307201['query']['hasOwnProperty'](_0x2d8e('0x3c'))){_0x5b0b00[_0x2d8e('0x24')]=qs[_0x2d8e('0x24')](_0x307201[_0x2d8e('0x36')][_0x2d8e('0x24')]);_0x5b0b00[_0x2d8e('0x26')]=qs[_0x2d8e('0x26')](_0x307201[_0x2d8e('0x36')][_0x2d8e('0x26')]);}_0x5b0b00['order']=qs[_0x2d8e('0x3e')](_0x307201[_0x2d8e('0x36')][_0x2d8e('0x3e')]);_0x5b0b00[_0x2d8e('0x3f')]=qs[_0x2d8e('0x40')](_[_0x2d8e('0x41')](_0x307201[_0x2d8e('0x36')],_0x208031[_0x2d8e('0x40')]));_0x5b0b00[_0x2d8e('0x6c')]=!![];if(_0x307201[_0x2d8e('0x36')][_0x2d8e('0x42')]){_0x5b0b00[_0x2d8e('0x3f')]=_[_0x2d8e('0x43')](_0x5b0b00[_0x2d8e('0x3f')],{'$or':_[_0x2d8e('0x31')](_0x5b0b00[_0x2d8e('0x3a')],function(_0x46aa1c){var _0xfffe68={};_0xfffe68[_0x46aa1c]={'$like':'%'+_0x307201[_0x2d8e('0x36')][_0x2d8e('0x42')]+'%'};return _0xfffe68;})});}_0x5b0b00=_[_0x2d8e('0x43')]({},_0x5b0b00,_0x307201['options']);return _0x37f81d[_0x2d8e('0x6d')](_0x5b0b00);}})[_0x2d8e('0x2c')](respondWithResult(_0x44a722,null))[_0x2d8e('0x48')](handleError(_0x44a722,null));};exports[_0x2d8e('0x6e')]=function(_0x56a0dd,_0x119218,_0x4e5cb0){var _0x5e8a3b;return db[_0x2d8e('0x32')][_0x2d8e('0x4c')]({'where':{'id':_0x56a0dd[_0x2d8e('0x4a')]['id']},'include':[{'model':db['CmCustomField'],'as':'CustomFields'}]})['then'](handleEntityNotFound(_0x119218,null))['then'](function(_0x4c4cf8){if(_0x4c4cf8){_0x5e8a3b=_0x4c4cf8;return db[_0x2d8e('0x60')]['rawAttributes'];}})[_0x2d8e('0x2c')](function(_0x5bee2f){if(_0x5bee2f){var _0x456b04={};var _0x576d2a={};_0x576d2a['model']=_[_0x2d8e('0x69')](_[_0x2d8e('0x37')](_0x5bee2f),_[_0x2d8e('0x31')](_0x5e8a3b[_0x2d8e('0x68')],function(_0x18771b){return util['format'](_0x2d8e('0x6b'),_0x18771b['id']);}));_0x576d2a[_0x2d8e('0x36')]=_[_0x2d8e('0x37')](_0x56a0dd[_0x2d8e('0x36')]);_0x576d2a[_0x2d8e('0x40')]=_[_0x2d8e('0x38')](_0x576d2a[_0x2d8e('0x35')],_0x576d2a[_0x2d8e('0x36')]);_0x456b04[_0x2d8e('0x3a')]=_[_0x2d8e('0x38')](_0x576d2a[_0x2d8e('0x35')],qs[_0x2d8e('0x39')](_0x56a0dd[_0x2d8e('0x36')]['fields']));_0x456b04['attributes']=_0x456b04[_0x2d8e('0x3a')][_0x2d8e('0x3b')]?_0x456b04[_0x2d8e('0x3a')]:_0x576d2a[_0x2d8e('0x35')];if(!_0x56a0dd[_0x2d8e('0x36')]['hasOwnProperty']('nolimit')){_0x456b04[_0x2d8e('0x24')]=qs['limit'](_0x56a0dd[_0x2d8e('0x36')][_0x2d8e('0x24')]);_0x456b04[_0x2d8e('0x26')]=qs['offset'](_0x56a0dd[_0x2d8e('0x36')][_0x2d8e('0x26')]);}_0x456b04['order']=qs[_0x2d8e('0x3e')](_0x56a0dd[_0x2d8e('0x36')][_0x2d8e('0x3e')]);_0x456b04[_0x2d8e('0x3f')]=qs[_0x2d8e('0x40')](_['pick'](_0x56a0dd[_0x2d8e('0x36')],_0x576d2a[_0x2d8e('0x40')]));_0x456b04['raw']=!![];if(_0x56a0dd[_0x2d8e('0x36')]['filter']){_0x456b04['where']=_[_0x2d8e('0x43')](_0x456b04[_0x2d8e('0x3f')],{'$or':_['map'](_0x456b04[_0x2d8e('0x3a')],function(_0x57834d){var _0x5ed48b={};_0x5ed48b[_0x57834d]={'$like':'%'+_0x56a0dd['query'][_0x2d8e('0x42')]+'%'};return _0x5ed48b;})});}_0x456b04=_['merge']({},_0x456b04,_0x56a0dd[_0x2d8e('0x45')]);return _0x5e8a3b[_0x2d8e('0x6d')](_0x456b04);}})[_0x2d8e('0x2c')](function(_0x24a7a7){if(!_[_0x2d8e('0x6f')](_0x24a7a7)){var _0x310955=toCsv(_0x24a7a7);var _0x5ba100=Date[_0x2d8e('0x70')]();fs['writeFileSync'](util['format'](_0x2d8e('0x71'),_0x5e8a3b['id'],_0x5ba100),_0x310955);_0x119218[_0x2d8e('0x72')]('Content-disposition','attachment;\x20filename='+util[_0x2d8e('0x6a')](_0x2d8e('0x73'),_0x5e8a3b['id'],_0x5ba100));_0x119218[_0x2d8e('0x72')](_0x2d8e('0x74'),_0x2d8e('0x75'));return _0x119218['download'](util[_0x2d8e('0x6a')](_0x2d8e('0x71'),_0x5e8a3b['id'],_0x5ba100));}else{return _0x119218[_0x2d8e('0x1f')](0xcc);}})[_0x2d8e('0x48')](handleError(_0x119218,null));};exports['addCustomField']=function(_0x2811ba,_0x44c187,_0x523e7b){var _0xc0e575;delete _0x2811ba[_0x2d8e('0x4e')]['id'];return db[_0x2d8e('0x32')][_0x2d8e('0x5b')]({'where':{'id':_0x2811ba[_0x2d8e('0x4a')]['id']}})[_0x2d8e('0x2c')](handleEntityNotFound(_0x44c187,null))[_0x2d8e('0x2c')](function(_0x6914dd){if(_0x6914dd){return db[_0x2d8e('0x76')]['transaction'](function(_0x178c2e){return db[_0x2d8e('0x77')][_0x2d8e('0x4d')](_0x2811ba[_0x2d8e('0x4e')],{'transaction':_0x178c2e})[_0x2d8e('0x2c')](function(_0x2c6b25){_0xc0e575=_0x2c6b25;return _0x6914dd[_0x2d8e('0x78')](_0x2c6b25,{'transaction':_0x178c2e});})[_0x2d8e('0x2c')](function(){var _0x58a147={'type':db[_0x2d8e('0x79')][_0x2d8e('0x7a')],'transaction':_0x178c2e};switch(_0x2811ba[_0x2d8e('0x4e')][_0x2d8e('0x34')]){case _0x2d8e('0x7b'):_0x58a147['type']=db[_0x2d8e('0x79')][_0x2d8e('0x7a')];break;case _0x2d8e('0x7c'):_0x58a147['type']=db['Sequelize'][_0x2d8e('0x7d')];break;case _0x2d8e('0x7e'):_0x58a147[_0x2d8e('0x34')]=db[_0x2d8e('0x79')]['BOOLEAN'];_0x58a147[_0x2d8e('0x7f')]=![];break;default:}return db[_0x2d8e('0x76')]['queryInterface'][_0x2d8e('0x80')]('cm_contacts',util['format']('cf_%s',_0xc0e575['id']),_0x58a147);})[_0x2d8e('0x2c')](function(){return _0xc0e575;});});}})['then'](respondWithResult(_0x44c187,null))[_0x2d8e('0x48')](handleError(_0x44c187,null));};exports[_0x2d8e('0x81')]=function(_0x24888e,_0x4821c6,_0x2ed9bb){var _0x5879e9={};var _0x2d8d63={};var _0x1e837e;var _0x55006b;return db[_0x2d8e('0x32')][_0x2d8e('0x5b')]({'where':{'id':_0x24888e[_0x2d8e('0x4a')]['id']}})[_0x2d8e('0x2c')](handleEntityNotFound(_0x4821c6,null))['then'](function(_0x35f104){if(_0x35f104){_0x1e837e=_0x35f104;_0x2d8d63[_0x2d8e('0x35')]=_[_0x2d8e('0x37')](db['CmCustomField']['rawAttributes']);_0x2d8d63[_0x2d8e('0x36')]=_[_0x2d8e('0x37')](_0x24888e[_0x2d8e('0x36')]);_0x2d8d63[_0x2d8e('0x40')]=_[_0x2d8e('0x38')](_0x2d8d63['model'],_0x2d8d63[_0x2d8e('0x36')]);_0x5879e9['attributes']=_['intersection'](_0x2d8d63[_0x2d8e('0x35')],qs['fields'](_0x24888e[_0x2d8e('0x36')][_0x2d8e('0x39')]));_0x5879e9['attributes']=_0x5879e9[_0x2d8e('0x3a')][_0x2d8e('0x3b')]?_0x5879e9[_0x2d8e('0x3a')]:_0x2d8d63[_0x2d8e('0x35')];_0x5879e9[_0x2d8e('0x3d')]=qs[_0x2d8e('0x3e')](_0x24888e[_0x2d8e('0x36')][_0x2d8e('0x3e')]);_0x5879e9[_0x2d8e('0x3f')]=qs['filters'](_[_0x2d8e('0x41')](_0x24888e[_0x2d8e('0x36')],_0x2d8d63['filters']));_0x5879e9[_0x2d8e('0x3f')]=_[_0x2d8e('0x43')](_0x5879e9[_0x2d8e('0x3f')],{'$or':[{'ListId':_0x35f104['id']},{'ListId':null}]});if(_0x24888e[_0x2d8e('0x36')][_0x2d8e('0x42')]){_0x5879e9[_0x2d8e('0x3f')]=_[_0x2d8e('0x43')](_0x5879e9[_0x2d8e('0x3f')],{'$or':_['map'](_0x5879e9[_0x2d8e('0x3a')],function(_0x5c013b){var _0xda028b={};_0xda028b[_0x5c013b]={'$like':'%'+_0x24888e['query'][_0x2d8e('0x42')]+'%'};return _0xda028b;})});}_0x5879e9=_[_0x2d8e('0x43')]({},_0x5879e9,_0x24888e[_0x2d8e('0x45')]);return db[_0x2d8e('0x77')][_0x2d8e('0x82')](_0x5879e9);}})[_0x2d8e('0x2c')](respondWithResult(_0x4821c6,null))[_0x2d8e('0x48')](handleError(_0x4821c6,null));};exports[_0x2d8e('0x83')]=function(_0x40f8a7,_0x5a90c1,_0x363330){return db[_0x2d8e('0x32')]['find']({'where':{'id':_0x40f8a7['params']['id']}})[_0x2d8e('0x2c')](handleEntityNotFound(_0x5a90c1,null))['then'](function(_0x37561c){if(_0x37561c){return _0x37561c[_0x2d8e('0x83')](_0x40f8a7[_0x2d8e('0x4e')][_0x2d8e('0x65')],_[_0x2d8e('0x64')](_0x40f8a7[_0x2d8e('0x4e')],[_0x2d8e('0x65'),'id'])||{})[_0x2d8e('0x84')](function(_0x165b0b){for(var _0x312325=0x0;_0x312325<_0x40f8a7[_0x2d8e('0x4e')]['ids'][_0x2d8e('0x3b')];_0x312325+=0x1){socket['emit'](_0x2d8e('0x85'),{'UserId':Number(_0x40f8a7['body'][_0x2d8e('0x65')][_0x312325]),'CmListId':Number(_0x40f8a7[_0x2d8e('0x4a')]['id'])});}return _0x165b0b;});}})[_0x2d8e('0x2c')](respondWithResult(_0x5a90c1,null))['catch'](handleError(_0x5a90c1,null));};exports[_0x2d8e('0x86')]=function(_0x394f46,_0xe03ba9,_0x540b76){return db['CmList']['find']({'where':{'id':_0x394f46[_0x2d8e('0x4a')]['id']}})[_0x2d8e('0x2c')](handleEntityNotFound(_0xe03ba9,null))['then'](function(_0xf85484){if(_0xf85484){return _0xf85484['removeAgents'](_0x394f46[_0x2d8e('0x36')][_0x2d8e('0x65')])[_0x2d8e('0x2c')](function(){if(_[_0x2d8e('0x62')](_0x394f46[_0x2d8e('0x36')][_0x2d8e('0x65')])){for(var _0x40cb4c=0x0;_0x40cb4c<_0x394f46[_0x2d8e('0x36')][_0x2d8e('0x65')][_0x2d8e('0x3b')];_0x40cb4c+=0x1){socket[_0x2d8e('0x87')]('userCmList:remove',{'UserId':Number(_0x394f46[_0x2d8e('0x36')][_0x2d8e('0x65')][_0x40cb4c]),'CmListId':Number(_0x394f46['params']['id'])});}}else{socket['emit']('userCmList:remove',{'UserId':Number(_0x394f46[_0x2d8e('0x36')][_0x2d8e('0x65')]),'CmListId':Number(_0x394f46[_0x2d8e('0x4a')]['id'])});}});}})[_0x2d8e('0x2c')](respondWithStatusCode(_0xe03ba9,null))[_0x2d8e('0x48')](handleError(_0xe03ba9,null));};exports[_0x2d8e('0x88')]=function(_0x3f8a68,_0x3519e9,_0x1790be){var _0x1494fb={};var _0x359b56={};var _0x578c83;var _0x5ec378;return db[_0x2d8e('0x32')]['findOne']({'where':{'id':_0x3f8a68[_0x2d8e('0x4a')]['id']}})[_0x2d8e('0x2c')](handleEntityNotFound(_0x3519e9,null))[_0x2d8e('0x2c')](function(_0x64c719){if(_0x64c719){_0x578c83=_0x64c719;_0x359b56[_0x2d8e('0x35')]=_[_0x2d8e('0x37')](db[_0x2d8e('0x89')][_0x2d8e('0x4b')]);_0x359b56[_0x2d8e('0x36')]=_[_0x2d8e('0x37')](_0x3f8a68['query']);_0x359b56[_0x2d8e('0x40')]=_['intersection'](_0x359b56[_0x2d8e('0x35')],_0x359b56['query']);_0x1494fb[_0x2d8e('0x3a')]=_[_0x2d8e('0x38')](_0x359b56[_0x2d8e('0x35')],qs[_0x2d8e('0x39')](_0x3f8a68['query'][_0x2d8e('0x39')]));_0x1494fb[_0x2d8e('0x3a')]=_0x1494fb[_0x2d8e('0x3a')][_0x2d8e('0x3b')]?_0x1494fb[_0x2d8e('0x3a')]:_0x359b56[_0x2d8e('0x35')];_0x1494fb[_0x2d8e('0x3d')]=qs['sort'](_0x3f8a68['query'][_0x2d8e('0x3e')]);_0x1494fb['where']=qs[_0x2d8e('0x40')](_['pick'](_0x3f8a68[_0x2d8e('0x36')],_0x359b56[_0x2d8e('0x40')]));if(_0x3f8a68[_0x2d8e('0x36')]['filter']){_0x1494fb[_0x2d8e('0x3f')]=_[_0x2d8e('0x43')](_0x1494fb[_0x2d8e('0x3f')],{'$or':_[_0x2d8e('0x31')](_0x1494fb[_0x2d8e('0x3a')],function(_0x1429d7){var _0x86da62={};_0x86da62[_0x1429d7]={'$like':'%'+_0x3f8a68[_0x2d8e('0x36')]['filter']+'%'};return _0x86da62;})});}_0x1494fb=_[_0x2d8e('0x43')]({},_0x1494fb,_0x3f8a68[_0x2d8e('0x45')]);return _0x578c83['getAgents'](_0x1494fb);}})[_0x2d8e('0x2c')](function(_0x36eb4c){if(_0x36eb4c){_0x5ec378=_0x36eb4c[_0x2d8e('0x3b')];if(!_0x3f8a68[_0x2d8e('0x36')]['hasOwnProperty'](_0x2d8e('0x3c'))){_0x1494fb[_0x2d8e('0x24')]=qs[_0x2d8e('0x24')](_0x3f8a68[_0x2d8e('0x36')]['limit']);_0x1494fb[_0x2d8e('0x26')]=qs[_0x2d8e('0x26')](_0x3f8a68[_0x2d8e('0x36')][_0x2d8e('0x26')]);}return _0x578c83[_0x2d8e('0x88')](_0x1494fb);}})[_0x2d8e('0x2c')](function(_0x260b1d){if(_0x260b1d){return _0x260b1d?{'count':_0x5ec378,'rows':_0x260b1d}:null;}})[_0x2d8e('0x2c')](respondWithResult(_0x3519e9,null))[_0x2d8e('0x48')](handleError(_0x3519e9,null));};
\ No newline at end of file
+var _0x172b=['TEXT','text','Sequelize','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','cm_contacts','getCustomFields','findAndCountAll','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','rimraf','zip-dir','request-promise','moment','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','register','sendStatus','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','Lists','destroy','status','end','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','nolimit','sort','pick','where','merge','VIRTUAL','filter','CmList','includeAll','findAll','rows','catch','params','keys','length','include','find','create','user','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','ListId','Disposition','findOne','hasOwnProperty','order','options','removeDispositions','ids','CmContact','isArray','tags','join','push','omit','success','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','raw','getContactsCsv','cf_%d','isEmpty','writeFileSync','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','Content-type','addCustomField','sequelize','addCustomFields'];(function(_0x16d369,_0xbbaa52){var _0x53c1ca=function(_0x49908d){while(--_0x49908d){_0x16d369['push'](_0x16d369['shift']());}};_0x53c1ca(++_0xbbaa52);}(_0x172b,0xa2));var _0xb172=function(_0x649844,_0x4a0bd9){_0x649844=_0x649844-0x0;var _0x3eb0a7=_0x172b[_0x649844];return _0x3eb0a7;};'use strict';var emlformat=require(_0xb172('0x0'));var rimraf=require(_0xb172('0x1'));var zipdir=require(_0xb172('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb172('0x3'));var moment=require(_0xb172('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb172('0x5'));var util=require('util');var path=require(_0xb172('0x6'));var sox=require('sox');var csv=require(_0xb172('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb172('0x8'));var _=require(_0xb172('0x9'));var squel=require(_0xb172('0xa'));var crypto=require(_0xb172('0xb'));var jsforce=require(_0xb172('0xc'));var deskjs=require(_0xb172('0xd'));var toCsv=require(_0xb172('0x7'));var querystring=require(_0xb172('0xe'));var Papa=require('papaparse');var Redis=require(_0xb172('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xb172('0x10'));var hardwareService=require(_0xb172('0x11'));var logger=require('../../config/logger')(_0xb172('0x12'));var utils=require(_0xb172('0x13'));var config=require(_0xb172('0x14'));var licenseUtil=require(_0xb172('0x15'));var db=require(_0xb172('0x16'))['db'];config[_0xb172('0x17')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb172('0x17')]));require('./cmList.socket')[_0xb172('0x18')](socket);function respondWithStatusCode(_0x390f05,_0x3bb7dd){_0x3bb7dd=_0x3bb7dd||0xcc;return function(_0xde31c5){if(_0xde31c5){return _0x390f05[_0xb172('0x19')](_0x3bb7dd);}return _0x390f05['status'](_0x3bb7dd)['end']();};}function respondWithResult(_0x3229c0,_0x500f0c){_0x500f0c=_0x500f0c||0xc8;return function(_0xce2f8){if(_0xce2f8){return _0x3229c0['status'](_0x500f0c)[_0xb172('0x1a')](_0xce2f8);}};}function respondWithFilteredResult(_0x300b11,_0x24f8e0){return function(_0x1618a6){if(_0x1618a6){var _0x21a6d7=typeof _0x24f8e0[_0xb172('0x1b')]===_0xb172('0x1c')&&typeof _0x24f8e0[_0xb172('0x1d')]===_0xb172('0x1c');var _0x437e44=_0x1618a6[_0xb172('0x1e')];var _0x1a7e0a=_0x21a6d7?0x0:_0x24f8e0[_0xb172('0x1b')];var _0x19fd8d=_0x21a6d7?_0x1618a6['count']:_0x24f8e0[_0xb172('0x1b')]+_0x24f8e0['limit'];var _0x525429;if(_0x19fd8d>=_0x437e44){_0x19fd8d=_0x437e44;_0x525429=0xc8;}else{_0x525429=0xce;}_0x300b11['status'](_0x525429);return _0x300b11[_0xb172('0x1f')](_0xb172('0x20'),_0x1a7e0a+'-'+_0x19fd8d+'/'+_0x437e44)[_0xb172('0x1a')](_0x1618a6);}return null;};}function patchUpdates(_0x2a9476){return function(_0xa11015){try{jsonpatch[_0xb172('0x21')](_0xa11015,_0x2a9476,!![]);}catch(_0x9b7188){return BPromise[_0xb172('0x22')](_0x9b7188);}return _0xa11015[_0xb172('0x23')]();};}function saveUpdates(_0x136357,_0x15b95b){return function(_0xab1d1){if(_0xab1d1){return _0xab1d1[_0xb172('0x24')](_0x136357)['then'](function(_0x53f7d5){return _0x53f7d5;});}return null;};}function removeEntity(_0x5ddc80,_0xaf5d67){return function(_0x41f788){if(_0x41f788){return _0x41f788['destroy']()[_0xb172('0x25')](function(){var _0x282f0f=_0x41f788[_0xb172('0x26')]({'plain':!![]});var _0x1af286=_0xb172('0x27');return db['UserProfileResource'][_0xb172('0x28')]({'where':{'type':_0x1af286,'resourceId':_0x282f0f['id']}})[_0xb172('0x25')](function(){return _0x41f788;});})[_0xb172('0x25')](function(){_0x5ddc80[_0xb172('0x29')](0xcc)[_0xb172('0x2a')]();});}};}function handleEntityNotFound(_0x453434,_0x5a2084){return function(_0x3b8aaa){if(!_0x3b8aaa){_0x453434[_0xb172('0x19')](0x194);}return _0x3b8aaa;};}function handleError(_0x48e97a,_0x41be1d){_0x41be1d=_0x41be1d||0x1f4;return function(_0x16c251){logger[_0xb172('0x2b')](_0x16c251[_0xb172('0x2c')]);if(_0x16c251[_0xb172('0x2d')]){delete _0x16c251[_0xb172('0x2d')];}_0x48e97a[_0xb172('0x29')](_0x41be1d)['send'](_0x16c251);};}exports[_0xb172('0x2e')]=function(_0x1fed03,_0x16aa5d){var _0x1d77f0={},_0xbff955={},_0x55577e={'count':0x0,'rows':[]};var _0x349b9e=_[_0xb172('0x2f')](db['CmList'][_0xb172('0x30')],function(_0x3ad24a){return{'name':_0x3ad24a[_0xb172('0x31')],'type':_0x3ad24a[_0xb172('0x32')][_0xb172('0x33')]};});_0xbff955[_0xb172('0x34')]=_[_0xb172('0x2f')](_0x349b9e,'name');_0xbff955['query']=_['keys'](_0x1fed03[_0xb172('0x35')]);_0xbff955[_0xb172('0x36')]=_['intersection'](_0xbff955[_0xb172('0x34')],_0xbff955[_0xb172('0x35')]);_0x1d77f0[_0xb172('0x37')]=_[_0xb172('0x38')](_0xbff955[_0xb172('0x34')],qs['fields'](_0x1fed03[_0xb172('0x35')][_0xb172('0x39')]));_0x1d77f0[_0xb172('0x37')]=_0x1d77f0[_0xb172('0x37')]['length']?_0x1d77f0[_0xb172('0x37')]:_0xbff955[_0xb172('0x34')];if(!_0x1fed03[_0xb172('0x35')]['hasOwnProperty'](_0xb172('0x3a'))){_0x1d77f0[_0xb172('0x1d')]=qs['limit'](_0x1fed03['query']['limit']);_0x1d77f0['offset']=qs[_0xb172('0x1b')](_0x1fed03[_0xb172('0x35')][_0xb172('0x1b')]);}_0x1d77f0['order']=qs[_0xb172('0x3b')](_0x1fed03['query']['sort']);_0x1d77f0['where']=qs[_0xb172('0x36')](_[_0xb172('0x3c')](_0x1fed03[_0xb172('0x35')],_0xbff955['filters']),_0x349b9e);if(_0x1fed03[_0xb172('0x35')]['filter']){_0x1d77f0[_0xb172('0x3d')]=_[_0xb172('0x3e')](_0x1d77f0[_0xb172('0x3d')],{'$or':_[_0xb172('0x2f')](_0x349b9e,function(_0x16bb26){if(_0x16bb26[_0xb172('0x32')]!==_0xb172('0x3f')){var _0x5ac29c={};_0x5ac29c[_0x16bb26[_0xb172('0x2d')]]={'$like':'%'+_0x1fed03[_0xb172('0x35')][_0xb172('0x40')]+'%'};return _0x5ac29c;}})});}_0x1d77f0=_[_0xb172('0x3e')]({},_0x1d77f0,_0x1fed03['options']);var _0x2c1fa5={'where':_0x1d77f0['where']};return db[_0xb172('0x41')]['count'](_0x2c1fa5)['then'](function(_0x32e5a4){_0x55577e[_0xb172('0x1e')]=_0x32e5a4;if(_0x1fed03[_0xb172('0x35')][_0xb172('0x42')]){_0x1d77f0['include']=[{'all':!![]}];}return db[_0xb172('0x41')][_0xb172('0x43')](_0x1d77f0);})[_0xb172('0x25')](function(_0x15368c){_0x55577e[_0xb172('0x44')]=_0x15368c;return _0x55577e;})[_0xb172('0x25')](respondWithFilteredResult(_0x16aa5d,_0x1d77f0))[_0xb172('0x45')](handleError(_0x16aa5d,null));};exports['show']=function(_0x5dd19b,_0x1811f4){var _0x4c6542={'raw':![],'where':{'id':_0x5dd19b[_0xb172('0x46')]['id']}},_0x42eca9={};_0x42eca9['model']=_[_0xb172('0x47')](db[_0xb172('0x41')][_0xb172('0x30')]);_0x42eca9[_0xb172('0x35')]=_['keys'](_0x5dd19b[_0xb172('0x35')]);_0x42eca9['filters']=_[_0xb172('0x38')](_0x42eca9[_0xb172('0x34')],_0x42eca9[_0xb172('0x35')]);_0x4c6542[_0xb172('0x37')]=_[_0xb172('0x38')](_0x42eca9[_0xb172('0x34')],qs[_0xb172('0x39')](_0x5dd19b[_0xb172('0x35')][_0xb172('0x39')]));_0x4c6542[_0xb172('0x37')]=_0x4c6542[_0xb172('0x37')][_0xb172('0x48')]?_0x4c6542[_0xb172('0x37')]:_0x42eca9[_0xb172('0x34')];if(_0x5dd19b[_0xb172('0x35')]['includeAll']){_0x4c6542[_0xb172('0x49')]=[{'all':!![]}];}_0x4c6542=_[_0xb172('0x3e')]({},_0x4c6542,_0x5dd19b['options']);return db[_0xb172('0x41')][_0xb172('0x4a')](_0x4c6542)[_0xb172('0x25')](handleEntityNotFound(_0x1811f4,null))[_0xb172('0x25')](respondWithResult(_0x1811f4,null))[_0xb172('0x45')](handleError(_0x1811f4,null));};exports['create']=function(_0x386519,_0x19d5ea){return db[_0xb172('0x41')][_0xb172('0x4b')](_0x386519['body'],{})[_0xb172('0x25')](function(_0x240481){var _0x20a6d2=_0x386519[_0xb172('0x4c')][_0xb172('0x26')]({'plain':!![]});if(!_0x20a6d2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x20a6d2['role']===_0xb172('0x4c')){var _0x25e78e=_0x240481[_0xb172('0x26')]({'plain':!![]});var _0x1f7912=_0xb172('0x27');return db['UserProfileSection']['find']({'where':{'name':_0x1f7912,'userProfileId':_0x20a6d2[_0xb172('0x4d')]},'raw':!![]})[_0xb172('0x25')](function(_0x58c45b){if(_0x58c45b&&_0x58c45b[_0xb172('0x4e')]===0x0){return db[_0xb172('0x4f')][_0xb172('0x4b')]({'name':_0x25e78e[_0xb172('0x2d')],'resourceId':_0x25e78e['id'],'type':_0x58c45b[_0xb172('0x2d')],'sectionId':_0x58c45b['id']},{})[_0xb172('0x25')](function(){return _0x240481;});}else{return _0x240481;}})['catch'](function(_0x89a8fe){logger['error'](_0xb172('0x50'),_0x89a8fe);throw _0x89a8fe;});}return _0x240481;})[_0xb172('0x25')](respondWithResult(_0x19d5ea,0xc9))[_0xb172('0x45')](handleError(_0x19d5ea,null));};exports[_0xb172('0x24')]=function(_0xc455b1,_0x3d2910){if(_0xc455b1[_0xb172('0x51')]['id']){delete _0xc455b1[_0xb172('0x51')]['id'];}return db[_0xb172('0x41')][_0xb172('0x4a')]({'where':{'id':_0xc455b1[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x3d2910,null))[_0xb172('0x25')](saveUpdates(_0xc455b1[_0xb172('0x51')],null))[_0xb172('0x25')](respondWithResult(_0x3d2910,null))[_0xb172('0x45')](handleError(_0x3d2910,null));};exports[_0xb172('0x28')]=function(_0x4f588d,_0x34c463){return db[_0xb172('0x41')]['find']({'where':{'id':_0x4f588d[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x34c463,null))[_0xb172('0x25')](removeEntity(_0x34c463,null))[_0xb172('0x45')](handleError(_0x34c463,null));};exports['describe']=function(_0x50c919,_0x367bcb){return db['CmList'][_0xb172('0x52')]()[_0xb172('0x25')](respondWithResult(_0x367bcb,null))[_0xb172('0x45')](handleError(_0x367bcb,null));};exports[_0xb172('0x53')]=function(_0x120c5,_0x5f4062,_0x115568){if(_0x120c5['body']['id']){delete _0x120c5['body']['id'];}return db[_0xb172('0x41')][_0xb172('0x4a')]({'where':{'id':_0x120c5['params']['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x5f4062,null))['then'](function(_0x3b2c84){if(_0x3b2c84){_0x120c5[_0xb172('0x51')][_0xb172('0x54')]=_0x3b2c84['id'];return db[_0xb172('0x55')][_0xb172('0x4b')](_0x120c5['body']);}})[_0xb172('0x25')](respondWithResult(_0x5f4062,null))['catch'](handleError(_0x5f4062,null));};exports['getDispositions']=function(_0x590cf1,_0x3841b0,_0x3727f7){var _0x5a77fe={'raw':![],'where':{}};var _0x117922={};var _0x3310cc={'count':0x0,'rows':[]};return db[_0xb172('0x41')][_0xb172('0x56')]({'where':{'id':_0x590cf1[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x3841b0,null))[_0xb172('0x25')](function(_0x1ffba0){if(_0x1ffba0){_0x117922[_0xb172('0x34')]=_['keys'](db[_0xb172('0x55')]['rawAttributes']);_0x117922[_0xb172('0x35')]=_[_0xb172('0x47')](_0x590cf1[_0xb172('0x35')]);_0x117922[_0xb172('0x36')]=_[_0xb172('0x38')](_0x117922[_0xb172('0x34')],_0x117922['query']);_0x5a77fe[_0xb172('0x37')]=_[_0xb172('0x38')](_0x117922[_0xb172('0x34')],qs[_0xb172('0x39')](_0x590cf1[_0xb172('0x35')][_0xb172('0x39')]));_0x5a77fe[_0xb172('0x37')]=_0x5a77fe[_0xb172('0x37')][_0xb172('0x48')]?_0x5a77fe['attributes']:_0x117922[_0xb172('0x34')];if(!_0x590cf1[_0xb172('0x35')][_0xb172('0x57')](_0xb172('0x3a'))){_0x5a77fe[_0xb172('0x1d')]=qs[_0xb172('0x1d')](_0x590cf1[_0xb172('0x35')][_0xb172('0x1d')]);_0x5a77fe['offset']=qs[_0xb172('0x1b')](_0x590cf1[_0xb172('0x35')][_0xb172('0x1b')]);}_0x5a77fe[_0xb172('0x58')]=qs['sort'](_0x590cf1[_0xb172('0x35')][_0xb172('0x3b')]);_0x5a77fe[_0xb172('0x3d')]=qs[_0xb172('0x36')](_[_0xb172('0x3c')](_0x590cf1[_0xb172('0x35')],_0x117922[_0xb172('0x36')]));_0x5a77fe[_0xb172('0x3d')]['ListId']=_0x1ffba0['id'];if(_0x590cf1[_0xb172('0x35')][_0xb172('0x40')]){_0x5a77fe[_0xb172('0x3d')]=_[_0xb172('0x3e')](_0x5a77fe[_0xb172('0x3d')],{'$or':_[_0xb172('0x2f')](_0x5a77fe[_0xb172('0x37')],function(_0x38f07c){var _0x25e606={};_0x25e606[_0x38f07c]={'$like':'%'+_0x590cf1[_0xb172('0x35')]['filter']+'%'};return _0x25e606;})});}_0x5a77fe=_['merge']({},_0x5a77fe,_0x590cf1[_0xb172('0x59')]);return db[_0xb172('0x55')][_0xb172('0x1e')]({'where':_0x5a77fe[_0xb172('0x3d')]})[_0xb172('0x25')](function(_0x382382){_0x3310cc[_0xb172('0x1e')]=_0x382382;if(_0x590cf1[_0xb172('0x35')][_0xb172('0x42')]){_0x5a77fe[_0xb172('0x49')]=[{'all':!![]}];}return db['Disposition'][_0xb172('0x43')](_0x5a77fe);})[_0xb172('0x25')](function(_0x3dd023){_0x3310cc[_0xb172('0x44')]=_0x3dd023;return _0x3310cc;});}})[_0xb172('0x25')](respondWithFilteredResult(_0x3841b0,_0x5a77fe))['catch'](handleError(_0x3841b0,null));};exports[_0xb172('0x5a')]=function(_0x6869a9,_0x15b28a,_0xe7cd18){return db[_0xb172('0x41')][_0xb172('0x4a')]({'where':{'id':_0x6869a9[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x15b28a,null))['then'](function(_0x448ba0){if(_0x448ba0){return _0x448ba0[_0xb172('0x5a')](_0x6869a9['query'][_0xb172('0x5b')]);}})[_0xb172('0x25')](respondWithStatusCode(_0x15b28a,null))[_0xb172('0x45')](handleError(_0x15b28a,null));};exports['addContacts']=function(_0x2d3bd8,_0x184b32,_0x30a2cf){return db[_0xb172('0x41')]['find']({'where':{'id':_0x2d3bd8[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x184b32,null))[_0xb172('0x25')](function(_0x4bd23b){if(_0x4bd23b){var _0x19f9de=[];var _0xa94360={'success':[],'errors':[]};return db[_0xb172('0x5c')][_0xb172('0x52')]()['then'](function(_0x338980){if(_0x2d3bd8['body']['tags']&&_[_0xb172('0x5d')](_0x2d3bd8[_0xb172('0x51')][_0xb172('0x5e')])){if(_0x2d3bd8[_0xb172('0x51')][_0xb172('0x5e')][_0xb172('0x48')]){_0x2d3bd8['body'][_0xb172('0x5e')]=_0x2d3bd8['body']['tags'][_0xb172('0x5f')](';')+';';}else{_0x2d3bd8[_0xb172('0x51')]['tags']=null;}}else{_0x2d3bd8[_0xb172('0x51')][_0xb172('0x5e')]=null;}if(_0x2d3bd8[_0xb172('0x51')]&&_[_0xb172('0x5d')](_0x2d3bd8['body'])){for(var _0x525975=0x0;_0x525975<_0x2d3bd8[_0xb172('0x51')]['length'];_0x525975+=0x1){_0x2d3bd8[_0xb172('0x51')][_0x525975][_0xb172('0x54')]=_0x2d3bd8[_0xb172('0x46')]['id'];_0x19f9de[_0xb172('0x60')](_0x2d3bd8['body'][_0x525975]);}return BPromise['each'](_0x19f9de,function(_0x4a60f3){return db[_0xb172('0x5c')]['create'](_[_0xb172('0x61')](_0x4a60f3,[_0xb172('0x5b'),'id'])||{},{'fields':_[_0xb172('0x47')](_0x338980),'raw':!![]})[_0xb172('0x25')](function(_0x58f780){_0xa94360[_0xb172('0x62')][_0xb172('0x60')](_0x58f780[_0xb172('0x63')]);})[_0xb172('0x45')](function(_0x15b317){_0xa94360[_0xb172('0x64')][_0xb172('0x60')]({'data':_0x4a60f3,'error':_0x15b317[_0xb172('0x65')]});});})[_0xb172('0x25')](function(_0x39a4b1){return _0xa94360;})[_0xb172('0x45')](function(_0x1f438e){return _0x1f438e;});}else{_0x184b32[_0xb172('0x29')](0x190)['json']({'message':_0xb172('0x66')});}});}})[_0xb172('0x25')](respondWithResult(_0x184b32,null))['catch'](handleError(_0x184b32,null));};exports[_0xb172('0x67')]=function(_0x40bd12,_0x2ddc3f,_0x3f4588){var _0x4c11ae;return db[_0xb172('0x41')]['find']({'where':{'id':_0x40bd12[_0xb172('0x46')]['id']},'include':[{'model':db[_0xb172('0x68')],'as':_0xb172('0x69')}]})[_0xb172('0x25')](handleEntityNotFound(_0x2ddc3f,null))[_0xb172('0x25')](function(_0x794bb1){if(_0x794bb1){_0x4c11ae=_0x794bb1;return db['CmContact'][_0xb172('0x30')];}})[_0xb172('0x25')](function(_0x5b2031){if(_0x5b2031){var _0x3d80f5={};var _0x233776={};_0x233776[_0xb172('0x34')]=_[_0xb172('0x6a')](_[_0xb172('0x47')](_0x5b2031),_[_0xb172('0x2f')](_0x4c11ae[_0xb172('0x69')],function(_0x56cbea){return util[_0xb172('0x6b')]('cf_%d',_0x56cbea['id']);}));_0x233776[_0xb172('0x35')]=_[_0xb172('0x47')](_0x40bd12['query']);_0x233776['filters']=_[_0xb172('0x38')](_0x233776['model'],_0x233776['query']);_0x3d80f5[_0xb172('0x37')]=_[_0xb172('0x38')](_0x233776[_0xb172('0x34')],qs[_0xb172('0x39')](_0x40bd12[_0xb172('0x35')][_0xb172('0x39')]));_0x3d80f5['attributes']=_0x3d80f5[_0xb172('0x37')][_0xb172('0x48')]?_0x3d80f5[_0xb172('0x37')]:_0x233776[_0xb172('0x34')];if(!_0x40bd12[_0xb172('0x35')][_0xb172('0x57')](_0xb172('0x3a'))){_0x3d80f5['limit']=qs[_0xb172('0x1d')](_0x40bd12[_0xb172('0x35')][_0xb172('0x1d')]);_0x3d80f5[_0xb172('0x1b')]=qs[_0xb172('0x1b')](_0x40bd12[_0xb172('0x35')]['offset']);}_0x3d80f5[_0xb172('0x58')]=qs['sort'](_0x40bd12[_0xb172('0x35')][_0xb172('0x3b')]);_0x3d80f5['where']=qs[_0xb172('0x36')](_['pick'](_0x40bd12[_0xb172('0x35')],_0x233776[_0xb172('0x36')]));_0x3d80f5[_0xb172('0x6c')]=!![];if(_0x40bd12[_0xb172('0x35')][_0xb172('0x40')]){_0x3d80f5[_0xb172('0x3d')]=_['merge'](_0x3d80f5[_0xb172('0x3d')],{'$or':_[_0xb172('0x2f')](_0x3d80f5[_0xb172('0x37')],function(_0x12cbab){var _0x152538={};_0x152538[_0x12cbab]={'$like':'%'+_0x40bd12[_0xb172('0x35')][_0xb172('0x40')]+'%'};return _0x152538;})});}_0x3d80f5=_['merge']({},_0x3d80f5,_0x40bd12[_0xb172('0x59')]);return _0x4c11ae['getContacts'](_0x3d80f5);}})[_0xb172('0x25')](respondWithResult(_0x2ddc3f,null))['catch'](handleError(_0x2ddc3f,null));};exports[_0xb172('0x6d')]=function(_0x12eb89,_0x163e89,_0xfb4a69){var _0x54b803;return db['CmList'][_0xb172('0x4a')]({'where':{'id':_0x12eb89['params']['id']},'include':[{'model':db['CmCustomField'],'as':_0xb172('0x69')}]})['then'](handleEntityNotFound(_0x163e89,null))[_0xb172('0x25')](function(_0x22cb2b){if(_0x22cb2b){_0x54b803=_0x22cb2b;return db[_0xb172('0x5c')]['rawAttributes'];}})['then'](function(_0x15bed0){if(_0x15bed0){var _0x3d66da={};var _0x3085b7={};_0x3085b7[_0xb172('0x34')]=_[_0xb172('0x6a')](_[_0xb172('0x47')](_0x15bed0),_['map'](_0x54b803[_0xb172('0x69')],function(_0x53bed4){return util[_0xb172('0x6b')](_0xb172('0x6e'),_0x53bed4['id']);}));_0x3085b7[_0xb172('0x35')]=_[_0xb172('0x47')](_0x12eb89[_0xb172('0x35')]);_0x3085b7[_0xb172('0x36')]=_[_0xb172('0x38')](_0x3085b7[_0xb172('0x34')],_0x3085b7[_0xb172('0x35')]);_0x3d66da[_0xb172('0x37')]=_[_0xb172('0x38')](_0x3085b7[_0xb172('0x34')],qs[_0xb172('0x39')](_0x12eb89[_0xb172('0x35')][_0xb172('0x39')]));_0x3d66da[_0xb172('0x37')]=_0x3d66da[_0xb172('0x37')]['length']?_0x3d66da[_0xb172('0x37')]:_0x3085b7['model'];if(!_0x12eb89[_0xb172('0x35')]['hasOwnProperty'](_0xb172('0x3a'))){_0x3d66da[_0xb172('0x1d')]=qs[_0xb172('0x1d')](_0x12eb89['query'][_0xb172('0x1d')]);_0x3d66da[_0xb172('0x1b')]=qs[_0xb172('0x1b')](_0x12eb89[_0xb172('0x35')]['offset']);}_0x3d66da[_0xb172('0x58')]=qs['sort'](_0x12eb89['query']['sort']);_0x3d66da[_0xb172('0x3d')]=qs[_0xb172('0x36')](_[_0xb172('0x3c')](_0x12eb89['query'],_0x3085b7[_0xb172('0x36')]));_0x3d66da[_0xb172('0x6c')]=!![];if(_0x12eb89[_0xb172('0x35')][_0xb172('0x40')]){_0x3d66da[_0xb172('0x3d')]=_[_0xb172('0x3e')](_0x3d66da[_0xb172('0x3d')],{'$or':_[_0xb172('0x2f')](_0x3d66da[_0xb172('0x37')],function(_0x1519a9){var _0x321874={};_0x321874[_0x1519a9]={'$like':'%'+_0x12eb89[_0xb172('0x35')]['filter']+'%'};return _0x321874;})});}_0x3d66da=_[_0xb172('0x3e')]({},_0x3d66da,_0x12eb89[_0xb172('0x59')]);return _0x54b803[_0xb172('0x67')](_0x3d66da);}})['then'](function(_0x2c186c){if(!_[_0xb172('0x6f')](_0x2c186c)){var _0x1e91c6=toCsv(_0x2c186c);var _0x153f55=Date['now']();fs[_0xb172('0x70')](util[_0xb172('0x6b')](_0xb172('0x71'),_0x54b803['id'],_0x153f55),_0x1e91c6);_0x163e89[_0xb172('0x72')](_0xb172('0x73'),_0xb172('0x74')+util['format'](_0xb172('0x75'),_0x54b803['id'],_0x153f55));_0x163e89['setHeader'](_0xb172('0x76'),'text/csv');return _0x163e89['download'](util[_0xb172('0x6b')](_0xb172('0x71'),_0x54b803['id'],_0x153f55));}else{return _0x163e89[_0xb172('0x19')](0xcc);}})[_0xb172('0x45')](handleError(_0x163e89,null));};exports[_0xb172('0x77')]=function(_0x2b2170,_0x595d7e,_0x4b08e0){var _0x81354c;delete _0x2b2170[_0xb172('0x51')]['id'];return db[_0xb172('0x41')][_0xb172('0x56')]({'where':{'id':_0x2b2170[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x595d7e,null))['then'](function(_0x1362e4){if(_0x1362e4){return db[_0xb172('0x78')]['transaction'](function(_0x1b4046){return db[_0xb172('0x68')][_0xb172('0x4b')](_0x2b2170['body'],{'transaction':_0x1b4046})[_0xb172('0x25')](function(_0x43a0c5){_0x81354c=_0x43a0c5;return _0x1362e4[_0xb172('0x79')](_0x43a0c5,{'transaction':_0x1b4046});})['then'](function(){var _0x5bcea2={'type':db['Sequelize'][_0xb172('0x7a')],'transaction':_0x1b4046};switch(_0x2b2170[_0xb172('0x51')]['type']){case _0xb172('0x7b'):_0x5bcea2['type']=db[_0xb172('0x7c')][_0xb172('0x7a')];break;case _0xb172('0x7d'):_0x5bcea2[_0xb172('0x32')]=db['Sequelize'][_0xb172('0x7e')];break;case _0xb172('0x7f'):_0x5bcea2['type']=db[_0xb172('0x7c')][_0xb172('0x80')];_0x5bcea2[_0xb172('0x81')]=![];break;default:}return db[_0xb172('0x78')][_0xb172('0x82')]['addColumn'](_0xb172('0x83'),util[_0xb172('0x6b')]('cf_%s',_0x81354c['id']),_0x5bcea2);})['then'](function(){return _0x81354c;});});}})[_0xb172('0x25')](respondWithResult(_0x595d7e,null))[_0xb172('0x45')](handleError(_0x595d7e,null));};exports[_0xb172('0x84')]=function(_0x2c49d1,_0x5e3601,_0x3070fa){var _0x3a306c={};var _0x2634c2={};var _0xf22c59;var _0x8574a9;return db[_0xb172('0x41')][_0xb172('0x56')]({'where':{'id':_0x2c49d1[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x5e3601,null))['then'](function(_0x3a2ed4){if(_0x3a2ed4){_0xf22c59=_0x3a2ed4;_0x2634c2[_0xb172('0x34')]=_[_0xb172('0x47')](db[_0xb172('0x68')][_0xb172('0x30')]);_0x2634c2['query']=_[_0xb172('0x47')](_0x2c49d1['query']);_0x2634c2[_0xb172('0x36')]=_[_0xb172('0x38')](_0x2634c2['model'],_0x2634c2[_0xb172('0x35')]);_0x3a306c[_0xb172('0x37')]=_[_0xb172('0x38')](_0x2634c2[_0xb172('0x34')],qs[_0xb172('0x39')](_0x2c49d1[_0xb172('0x35')]['fields']));_0x3a306c[_0xb172('0x37')]=_0x3a306c['attributes']['length']?_0x3a306c['attributes']:_0x2634c2['model'];_0x3a306c[_0xb172('0x58')]=qs[_0xb172('0x3b')](_0x2c49d1[_0xb172('0x35')][_0xb172('0x3b')]);_0x3a306c['where']=qs[_0xb172('0x36')](_[_0xb172('0x3c')](_0x2c49d1[_0xb172('0x35')],_0x2634c2['filters']));_0x3a306c[_0xb172('0x3d')]=_[_0xb172('0x3e')](_0x3a306c[_0xb172('0x3d')],{'$or':[{'ListId':_0x3a2ed4['id']},{'ListId':null}]});if(_0x2c49d1[_0xb172('0x35')][_0xb172('0x40')]){_0x3a306c['where']=_[_0xb172('0x3e')](_0x3a306c['where'],{'$or':_['map'](_0x3a306c[_0xb172('0x37')],function(_0x1806fd){var _0x526d78={};_0x526d78[_0x1806fd]={'$like':'%'+_0x2c49d1['query'][_0xb172('0x40')]+'%'};return _0x526d78;})});}_0x3a306c=_[_0xb172('0x3e')]({},_0x3a306c,_0x2c49d1[_0xb172('0x59')]);return db[_0xb172('0x68')][_0xb172('0x85')](_0x3a306c);}})[_0xb172('0x25')](respondWithResult(_0x5e3601,null))[_0xb172('0x45')](handleError(_0x5e3601,null));};exports[_0xb172('0x86')]=function(_0x325224,_0x555b00,_0x4e2647){return db[_0xb172('0x41')]['find']({'where':{'id':_0x325224[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x555b00,null))['then'](function(_0x3621c3){if(_0x3621c3){return _0x3621c3[_0xb172('0x86')](_0x325224['body'][_0xb172('0x5b')],_[_0xb172('0x61')](_0x325224[_0xb172('0x51')],[_0xb172('0x5b'),'id'])||{})[_0xb172('0x87')](function(_0x358b16){for(var _0x4d590d=0x0;_0x4d590d<_0x325224[_0xb172('0x51')][_0xb172('0x5b')][_0xb172('0x48')];_0x4d590d+=0x1){socket[_0xb172('0x88')](_0xb172('0x89'),{'UserId':Number(_0x325224[_0xb172('0x51')]['ids'][_0x4d590d]),'CmListId':Number(_0x325224['params']['id'])});}return _0x358b16;});}})[_0xb172('0x25')](respondWithResult(_0x555b00,null))[_0xb172('0x45')](handleError(_0x555b00,null));};exports[_0xb172('0x8a')]=function(_0x144f13,_0x526098,_0x2540c3){return db[_0xb172('0x41')]['find']({'where':{'id':_0x144f13[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x526098,null))[_0xb172('0x25')](function(_0x2b1efb){if(_0x2b1efb){return _0x2b1efb[_0xb172('0x8a')](_0x144f13['query']['ids'])['then'](function(){if(_[_0xb172('0x5d')](_0x144f13[_0xb172('0x35')]['ids'])){for(var _0x13e703=0x0;_0x13e703<_0x144f13[_0xb172('0x35')]['ids']['length'];_0x13e703+=0x1){socket['emit'](_0xb172('0x8b'),{'UserId':Number(_0x144f13[_0xb172('0x35')][_0xb172('0x5b')][_0x13e703]),'CmListId':Number(_0x144f13['params']['id'])});}}else{socket[_0xb172('0x88')]('userCmList:remove',{'UserId':Number(_0x144f13[_0xb172('0x35')][_0xb172('0x5b')]),'CmListId':Number(_0x144f13[_0xb172('0x46')]['id'])});}});}})[_0xb172('0x25')](respondWithStatusCode(_0x526098,null))[_0xb172('0x45')](handleError(_0x526098,null));};exports[_0xb172('0x8c')]=function(_0x1aedd5,_0x1f4d83,_0x24c01b){var _0x1b3f2f={};var _0x4d53d9={};var _0x163649;var _0x35e426;return db[_0xb172('0x41')][_0xb172('0x56')]({'where':{'id':_0x1aedd5[_0xb172('0x46')]['id']}})['then'](handleEntityNotFound(_0x1f4d83,null))[_0xb172('0x25')](function(_0x28e4ae){if(_0x28e4ae){_0x163649=_0x28e4ae;_0x4d53d9[_0xb172('0x34')]=_[_0xb172('0x47')](db[_0xb172('0x8d')][_0xb172('0x30')]);_0x4d53d9['query']=_['keys'](_0x1aedd5['query']);_0x4d53d9[_0xb172('0x36')]=_[_0xb172('0x38')](_0x4d53d9[_0xb172('0x34')],_0x4d53d9[_0xb172('0x35')]);_0x1b3f2f[_0xb172('0x37')]=_[_0xb172('0x38')](_0x4d53d9[_0xb172('0x34')],qs[_0xb172('0x39')](_0x1aedd5[_0xb172('0x35')][_0xb172('0x39')]));_0x1b3f2f[_0xb172('0x37')]=_0x1b3f2f['attributes'][_0xb172('0x48')]?_0x1b3f2f['attributes']:_0x4d53d9[_0xb172('0x34')];_0x1b3f2f[_0xb172('0x58')]=qs[_0xb172('0x3b')](_0x1aedd5[_0xb172('0x35')][_0xb172('0x3b')]);_0x1b3f2f['where']=qs[_0xb172('0x36')](_[_0xb172('0x3c')](_0x1aedd5[_0xb172('0x35')],_0x4d53d9[_0xb172('0x36')]));if(_0x1aedd5[_0xb172('0x35')][_0xb172('0x40')]){_0x1b3f2f[_0xb172('0x3d')]=_[_0xb172('0x3e')](_0x1b3f2f['where'],{'$or':_[_0xb172('0x2f')](_0x1b3f2f[_0xb172('0x37')],function(_0x31dde5){var _0x60d3e0={};_0x60d3e0[_0x31dde5]={'$like':'%'+_0x1aedd5[_0xb172('0x35')]['filter']+'%'};return _0x60d3e0;})});}_0x1b3f2f=_[_0xb172('0x3e')]({},_0x1b3f2f,_0x1aedd5[_0xb172('0x59')]);return _0x163649['getAgents'](_0x1b3f2f);}})[_0xb172('0x25')](function(_0x24aa0a){if(_0x24aa0a){_0x35e426=_0x24aa0a[_0xb172('0x48')];if(!_0x1aedd5[_0xb172('0x35')]['hasOwnProperty'](_0xb172('0x3a'))){_0x1b3f2f[_0xb172('0x1d')]=qs[_0xb172('0x1d')](_0x1aedd5['query'][_0xb172('0x1d')]);_0x1b3f2f[_0xb172('0x1b')]=qs[_0xb172('0x1b')](_0x1aedd5['query'][_0xb172('0x1b')]);}return _0x163649[_0xb172('0x8c')](_0x1b3f2f);}})['then'](function(_0x42b13f){if(_0x42b13f){return _0x42b13f?{'count':_0x35e426,'rows':_0x42b13f}:null;}})[_0xb172('0x25')](respondWithResult(_0x1f4d83,null))[_0xb172('0x45')](handleError(_0x1f4d83,null));};
\ No newline at end of file
index 80d753e..00ea291 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hook'];(function(_0x7feb90,_0x28e700){var _0x3c5b33=function(_0x113cfa){while(--_0x113cfa){_0x7feb90['push'](_0x7feb90['shift']());}};_0x3c5b33(++_0x28e700);}(_0x5fc3,0xa8));var _0x35fc=function(_0x2b8077,_0x453634){_0x2b8077=_0x2b8077-0x0;var _0x308091=_0x5fc3[_0x2b8077];return _0x308091;};'use strict';var EventEmitter=require(_0x35fc('0x0'));var CmList=require(_0x35fc('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents[_0x35fc('0x2')](0x0);var events={'afterCreate':_0x35fc('0x3'),'afterUpdate':_0x35fc('0x4'),'afterDestroy':_0x35fc('0x5')};function emitEvent(_0xb4f9ce){return function(_0x5e75e6,_0x2d1404,_0x1d5fec){CmListEvents[_0x35fc('0x6')](_0xb4f9ce+':'+_0x5e75e6['id'],_0x5e75e6);CmListEvents['emit'](_0xb4f9ce,_0x5e75e6);_0x1d5fec(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0x35fc('0x7')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
+var _0x5fc3=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hook'];(function(_0x4c184d,_0x4278ab){var _0x23d997=function(_0x22d068){while(--_0x22d068){_0x4c184d['push'](_0x4c184d['shift']());}};_0x23d997(++_0x4278ab);}(_0x5fc3,0xa8));var _0x35fc=function(_0x33a694,_0x9b6640){_0x33a694=_0x33a694-0x0;var _0x41ff01=_0x5fc3[_0x33a694];return _0x41ff01;};'use strict';var EventEmitter=require(_0x35fc('0x0'));var CmList=require(_0x35fc('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents[_0x35fc('0x2')](0x0);var events={'afterCreate':_0x35fc('0x3'),'afterUpdate':_0x35fc('0x4'),'afterDestroy':_0x35fc('0x5')};function emitEvent(_0xb4f9ce){return function(_0x5e75e6,_0x2d1404,_0x1d5fec){CmListEvents[_0x35fc('0x6')](_0xb4f9ce+':'+_0x5e75e6['id'],_0x5e75e6);CmListEvents['emit'](_0xb4f9ce,_0x5e75e6);_0x1d5fec(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0x35fc('0x7')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
index fe503fb..dd00823 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41bb=['bluebird','request-promise','path','rimraf','./cmList.attributes','exports','cm_lists','lodash','util','api'];(function(_0x50ffc5,_0x65bf9d){var _0x8cd63d=function(_0x4f876b){while(--_0x4f876b){_0x50ffc5['push'](_0x50ffc5['shift']());}};_0x8cd63d(++_0x65bf9d);}(_0x41bb,0xc5));var _0xb41b=function(_0x5d568a,_0x26529f){_0x5d568a=_0x5d568a-0x0;var _0x662138=_0x41bb[_0x5d568a];return _0x662138;};'use strict';var _=require(_0xb41b('0x0'));var util=require(_0xb41b('0x1'));var logger=require('../../config/logger')(_0xb41b('0x2'));var moment=require('moment');var BPromise=require(_0xb41b('0x3'));var rp=require(_0xb41b('0x4'));var fs=require('fs');var path=require(_0xb41b('0x5'));var rimraf=require(_0xb41b('0x6'));var config=require('../../config/environment');var attributes=require(_0xb41b('0x7'));module[_0xb41b('0x8')]=function(_0x2dbaa3,_0x50bc62){return _0x2dbaa3['define']('CmList',attributes,{'tableName':_0xb41b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa74f=['cm_lists','../../config/logger','bluebird','request-promise','path','rimraf','./cmList.attributes','define','CmList'];(function(_0xe09374,_0x13ff0a){var _0x4f8808=function(_0x847af){while(--_0x847af){_0xe09374['push'](_0xe09374['shift']());}};_0x4f8808(++_0x13ff0a);}(_0xa74f,0x9a));var _0xfa74=function(_0x3725ee,_0x543bd9){_0x3725ee=_0x3725ee-0x0;var _0x399c71=_0xa74f[_0x3725ee];return _0x399c71;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xfa74('0x0'))('api');var moment=require('moment');var BPromise=require(_0xfa74('0x1'));var rp=require(_0xfa74('0x2'));var fs=require('fs');var path=require(_0xfa74('0x3'));var rimraf=require(_0xfa74('0x4'));var config=require('../../config/environment');var attributes=require(_0xfa74('0x5'));module['exports']=function(_0x543cfe,_0x43dd2f){return _0x543cfe[_0xfa74('0x6')](_0xfa74('0x7'),attributes,{'tableName':_0xfa74('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 27ec17b..b561315 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cc1=['socket.io-emitter','./cmList.socket','register','request','then','info','CmList,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x3cc1,0x142));var _0x13cc=function(_0x1cb95c,_0x414883){_0x1cb95c=_0x1cb95c-0x0;var _0x492e1b=_0x3cc1[_0x1cb95c];return _0x492e1b;};'use strict';var _=require(_0x13cc('0x0'));var util=require(_0x13cc('0x1'));var moment=require(_0x13cc('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x13cc('0x3'));var db=require(_0x13cc('0x4'))['db'];var utils=require(_0x13cc('0x5'));var logger=require(_0x13cc('0x6'))('rpc');var config=require(_0x13cc('0x7'));var jayson=require(_0x13cc('0x8'));var client=jayson[_0x13cc('0x9')][_0x13cc('0xa')]({'port':0x232a});config[_0x13cc('0xb')]=_[_0x13cc('0xc')](config['redis'],{'host':_0x13cc('0xd'),'port':0x18eb});var socket=require(_0x13cc('0xe'))(new Redis(config[_0x13cc('0xb')]));require(_0x13cc('0xf'))[_0x13cc('0x10')](socket);function respondWithRpcPromise(_0x150670,_0x3afe47,_0x40b0f2){return new BPromise(function(_0xe41e58,_0x4adf8e){return client[_0x13cc('0x11')](_0x150670,_0x40b0f2)[_0x13cc('0x12')](function(_0x513bfd){logger[_0x13cc('0x13')](_0x13cc('0x14'),_0x3afe47,_0x13cc('0x15'));logger[_0x13cc('0x16')]('CmList,\x20%s,\x20%s,\x20%s',_0x3afe47,_0x13cc('0x15'),JSON['stringify'](_0x513bfd));if(_0x513bfd[_0x13cc('0x17')]){if(_0x513bfd[_0x13cc('0x17')][_0x13cc('0x18')]===0x1f4){logger[_0x13cc('0x17')](_0x13cc('0x14'),_0x3afe47,_0x513bfd[_0x13cc('0x17')][_0x13cc('0x19')]);return _0x4adf8e(_0x513bfd['error'][_0x13cc('0x19')]);}logger[_0x13cc('0x17')](_0x13cc('0x14'),_0x3afe47,_0x513bfd[_0x13cc('0x17')]['message']);return _0xe41e58(_0x513bfd['error'][_0x13cc('0x19')]);}else{logger['info'](_0x13cc('0x14'),_0x3afe47,'request\x20sent');_0xe41e58(_0x513bfd[_0x13cc('0x1a')]['message']);}})[_0x13cc('0x1b')](function(_0x990882){logger[_0x13cc('0x17')](_0x13cc('0x14'),_0x3afe47,_0x990882);_0x4adf8e(_0x990882);});});}
\ No newline at end of file
+var _0x9a03=['register','request','CmList,\x20%s,\x20%s','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./cmList.socket'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9a03,0xe3));var _0x39a0=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0x9a03[_0xaa0309];return _0x5de7ce;};'use strict';var _=require(_0x39a0('0x0'));var util=require(_0x39a0('0x1'));var moment=require('moment');var BPromise=require(_0x39a0('0x2'));var rs=require(_0x39a0('0x3'));var fs=require('fs');var Redis=require(_0x39a0('0x4'));var db=require(_0x39a0('0x5'))['db'];var utils=require(_0x39a0('0x6'));var logger=require(_0x39a0('0x7'))(_0x39a0('0x8'));var config=require(_0x39a0('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x39a0('0xa')]['http']({'port':0x232a});config[_0x39a0('0xb')]=_[_0x39a0('0xc')](config[_0x39a0('0xb')],{'host':_0x39a0('0xd'),'port':0x18eb});var socket=require(_0x39a0('0xe'))(new Redis(config[_0x39a0('0xb')]));require(_0x39a0('0xf'))[_0x39a0('0x10')](socket);function respondWithRpcPromise(_0xde8da0,_0x375ae9,_0x15e773){return new BPromise(function(_0x2ce797,_0x3df7af){return client[_0x39a0('0x11')](_0xde8da0,_0x15e773)['then'](function(_0x2de188){logger['info'](_0x39a0('0x12'),_0x375ae9,_0x39a0('0x13'));logger[_0x39a0('0x14')](_0x39a0('0x15'),_0x375ae9,_0x39a0('0x13'),JSON[_0x39a0('0x16')](_0x2de188));if(_0x2de188['error']){if(_0x2de188[_0x39a0('0x17')]['code']===0x1f4){logger['error'](_0x39a0('0x12'),_0x375ae9,_0x2de188[_0x39a0('0x17')][_0x39a0('0x18')]);return _0x3df7af(_0x2de188['error'][_0x39a0('0x18')]);}logger['error'](_0x39a0('0x12'),_0x375ae9,_0x2de188[_0x39a0('0x17')][_0x39a0('0x18')]);return _0x2ce797(_0x2de188['error']['message']);}else{logger[_0x39a0('0x19')](_0x39a0('0x12'),_0x375ae9,'request\x20sent');_0x2ce797(_0x2de188['result'][_0x39a0('0x18')]);}})[_0x39a0('0x1a')](function(_0x3cbd6a){logger[_0x39a0('0x17')](_0x39a0('0x12'),_0x375ae9,_0x3cbd6a);_0x3df7af(_0x3cbd6a);});});}
\ No newline at end of file
index fc7e499..eab7f83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86d0=['register','cmList:','./cmList.events','remove','update','emit','removeListener'];(function(_0x138b35,_0x20e9e6){var _0x1814f4=function(_0x5ba6bd){while(--_0x5ba6bd){_0x138b35['push'](_0x138b35['shift']());}};_0x1814f4(++_0x20e9e6);}(_0x86d0,0xbf));var _0x086d=function(_0x1282a0,_0x58b2f9){_0x1282a0=_0x1282a0-0x0;var _0x18af0c=_0x86d0[_0x1282a0];return _0x18af0c;};'use strict';var CmListEvents=require(_0x086d('0x0'));var events=['save',_0x086d('0x1'),_0x086d('0x2')];function createListener(_0x2d094f,_0x1a31c3){return function(_0x301507){_0x1a31c3[_0x086d('0x3')](_0x2d094f,_0x301507);};}function removeListener(_0x364d46,_0x1857cd){return function(){CmListEvents[_0x086d('0x4')](_0x364d46,_0x1857cd);};}exports[_0x086d('0x5')]=function(_0x146b71){for(var _0x78d966=0x0,_0xb9eb4f=events['length'];_0x78d966<_0xb9eb4f;_0x78d966++){var _0x414af9=events[_0x78d966];var _0x1fcb86=createListener(_0x086d('0x6')+_0x414af9,_0x146b71);CmListEvents['on'](_0x414af9,_0x1fcb86);}};
\ No newline at end of file
+var _0xfdb6=['./cmList.events','remove','update','emit','register','length','cmList:'];(function(_0x43c92a,_0x1c4901){var _0x5ebfe9=function(_0x87d98f){while(--_0x87d98f){_0x43c92a['push'](_0x43c92a['shift']());}};_0x5ebfe9(++_0x1c4901);}(_0xfdb6,0x118));var _0x6fdb=function(_0x4a7a95,_0x4062ad){_0x4a7a95=_0x4a7a95-0x0;var _0x17333d=_0xfdb6[_0x4a7a95];return _0x17333d;};'use strict';var CmListEvents=require(_0x6fdb('0x0'));var events=['save',_0x6fdb('0x1'),_0x6fdb('0x2')];function createListener(_0x299911,_0x10017d){return function(_0x311f86){_0x10017d[_0x6fdb('0x3')](_0x299911,_0x311f86);};}function removeListener(_0x54dffc,_0xd6904){return function(){CmListEvents['removeListener'](_0x54dffc,_0xd6904);};}exports[_0x6fdb('0x4')]=function(_0x2821ec){for(var _0x2db733=0x0,_0xbfbcda=events[_0x6fdb('0x5')];_0x2db733<_0xbfbcda;_0x2db733++){var _0x30f485=events[_0x2db733];var _0x2add6a=createListener(_0x6fdb('0x6')+_0x30f485,_0x2821ec);CmListEvents['on'](_0x30f485,_0x2add6a);}};
\ No newline at end of file
index 893b7e7..78a2ac6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05df=['addContacts','addAgents','put','/:id','update','delete','removeDispositions','removeAgents','exports','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','index','get','/describe','isAuthenticated','show','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','/:id/users','post','addDisposition'];(function(_0x11269a,_0x27b846){var _0x504ca4=function(_0x31cc10){while(--_0x31cc10){_0x11269a['push'](_0x11269a['shift']());}};_0x504ca4(++_0x27b846);}(_0x05df,0x111));var _0xf05d=function(_0x3ea820,_0x18967a){_0x3ea820=_0x3ea820-0x0;var _0xe558f2=_0x05df[_0x3ea820];return _0xe558f2;};'use strict';var multer=require('multer');var util=require(_0xf05d('0x0'));var path=require(_0xf05d('0x1'));var timeout=require(_0xf05d('0x2'));var express=require(_0xf05d('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf05d('0x4'));var interaction=require(_0xf05d('0x5'));var config=require(_0xf05d('0x6'));var controller=require(_0xf05d('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xf05d('0x8')]);router[_0xf05d('0x9')](_0xf05d('0xa'),auth['isAuthenticated'](),controller['describe']);router['get']('/:id',auth[_0xf05d('0xb')](),controller[_0xf05d('0xc')]);router[_0xf05d('0x9')](_0xf05d('0xd'),auth[_0xf05d('0xb')](),controller[_0xf05d('0xe')]);router[_0xf05d('0x9')](_0xf05d('0xf'),auth[_0xf05d('0xb')](),controller[_0xf05d('0x10')]);router['get'](_0xf05d('0x11'),auth['isAuthenticated'](),controller[_0xf05d('0x12')]);router[_0xf05d('0x9')](_0xf05d('0x13'),auth[_0xf05d('0xb')](),controller[_0xf05d('0x14')]);router['get'](_0xf05d('0x15'),auth[_0xf05d('0xb')](),controller['getAgents']);router[_0xf05d('0x16')]('/',auth['isAuthenticated'](),controller['create']);router[_0xf05d('0x16')]('/:id/dispositions',auth[_0xf05d('0xb')](),controller[_0xf05d('0x17')]);router[_0xf05d('0x16')](_0xf05d('0xf'),auth[_0xf05d('0xb')](),controller[_0xf05d('0x18')]);router[_0xf05d('0x16')](_0xf05d('0x13'),auth[_0xf05d('0xb')](),controller['addCustomField']);router[_0xf05d('0x16')](_0xf05d('0x15'),auth[_0xf05d('0xb')](),controller[_0xf05d('0x19')]);router[_0xf05d('0x1a')](_0xf05d('0x1b'),auth['isAuthenticated'](),controller[_0xf05d('0x1c')]);router[_0xf05d('0x1d')](_0xf05d('0x1b'),auth[_0xf05d('0xb')](),controller['destroy']);router[_0xf05d('0x1d')](_0xf05d('0xd'),auth[_0xf05d('0xb')](),controller[_0xf05d('0x1e')]);router[_0xf05d('0x1d')](_0xf05d('0x15'),auth[_0xf05d('0xb')](),controller[_0xf05d('0x1f')]);module[_0xf05d('0x20')]=router;
\ No newline at end of file
+var _0xdbc7=['/:id/users','getAgents','post','create','addDisposition','addCustomField','addAgents','delete','destroy','removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/fields','getCustomFields'];(function(_0x458363,_0x1675db){var _0x4d0290=function(_0x22960f){while(--_0x22960f){_0x458363['push'](_0x458363['shift']());}};_0x4d0290(++_0x1675db);}(_0xdbc7,0xfa));var _0x7dbc=function(_0x17823f,_0xffd807){_0x17823f=_0x17823f-0x0;var _0x51fc21=_0xdbc7[_0x17823f];return _0x51fc21;};'use strict';var multer=require(_0x7dbc('0x0'));var util=require(_0x7dbc('0x1'));var path=require(_0x7dbc('0x2'));var timeout=require(_0x7dbc('0x3'));var express=require('express');var router=express[_0x7dbc('0x4')]();var fs_extra=require(_0x7dbc('0x5'));var auth=require(_0x7dbc('0x6'));var interaction=require(_0x7dbc('0x7'));var config=require(_0x7dbc('0x8'));var controller=require(_0x7dbc('0x9'));router[_0x7dbc('0xa')]('/',auth[_0x7dbc('0xb')](),controller[_0x7dbc('0xc')]);router[_0x7dbc('0xa')](_0x7dbc('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0x7dbc('0xa')](_0x7dbc('0xe'),auth['isAuthenticated'](),controller[_0x7dbc('0xf')]);router[_0x7dbc('0xa')](_0x7dbc('0x10'),auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x11')]);router[_0x7dbc('0xa')](_0x7dbc('0x12'),auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x13')]);router[_0x7dbc('0xa')]('/:id/contacts/csv',auth[_0x7dbc('0xb')](),controller['getContactsCsv']);router['get'](_0x7dbc('0x14'),auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x15')]);router[_0x7dbc('0xa')](_0x7dbc('0x16'),auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x17')]);router[_0x7dbc('0x18')]('/',auth['isAuthenticated'](),controller[_0x7dbc('0x19')]);router['post'](_0x7dbc('0x10'),auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x1a')]);router[_0x7dbc('0x18')]('/:id/contacts',auth[_0x7dbc('0xb')](),controller['addContacts']);router[_0x7dbc('0x18')]('/:id/fields',auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x1b')]);router[_0x7dbc('0x18')](_0x7dbc('0x16'),auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x1c')]);router['put'](_0x7dbc('0xe'),auth[_0x7dbc('0xb')](),controller['update']);router[_0x7dbc('0x1d')](_0x7dbc('0xe'),auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x1e')]);router[_0x7dbc('0x1d')](_0x7dbc('0x10'),auth['isAuthenticated'](),controller[_0x7dbc('0x1f')]);router[_0x7dbc('0x1d')](_0x7dbc('0x16'),auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x20')]);module[_0x7dbc('0x21')]=router;
\ No newline at end of file
index ce4bbbb..90d4f9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x679b=['field','STRING','VIRTUAL'];(function(_0x11cb8d,_0x3a13e2){var _0x20a8ee=function(_0x30e2eb){while(--_0x30e2eb){_0x11cb8d['push'](_0x11cb8d['shift']());}};_0x20a8ee(++_0x3a13e2);}(_0x679b,0xb6));var _0xb679=function(_0x4b0bfc,_0x1fa5f2){_0x4b0bfc=_0x4b0bfc-0x0;var _0x47e631=_0x679b[_0x4b0bfc];return _0x47e631;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xb679('0x0')],'get':function(_0x51013f){return this['getDataValue'](_0xb679('0x1'));}},'field':{'type':Sequelize[_0xb679('0x2')],'allowNull':![]},'operator':{'type':Sequelize[_0xb679('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0xb679('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x0d49=['sequelize','exports','VIRTUAL','field','STRING'];(function(_0x286517,_0x15c9b0){var _0x15cf1f=function(_0x3a1b38){while(--_0x3a1b38){_0x286517['push'](_0x286517['shift']());}};_0x15cf1f(++_0x15c9b0);}(_0x0d49,0x181));var _0x90d4=function(_0x14fa6f,_0xf645c){_0x14fa6f=_0x14fa6f-0x0;var _0x2b1f6c=_0x0d49[_0x14fa6f];return _0x2b1f6c;};'use strict';var Sequelize=require(_0x90d4('0x0'));module[_0x90d4('0x1')]={'name':{'type':Sequelize[_0x90d4('0x2')],'get':function(_0x34a08f){return this['getDataValue'](_0x90d4('0x3'));}},'field':{'type':Sequelize[_0x90d4('0x4')],'allowNull':![]},'operator':{'type':Sequelize[_0x90d4('0x4')],'allowNull':![]},'value':{'type':Sequelize[_0x90d4('0x4')],'allowNull':![]}};
\ No newline at end of file
index 77970ff..9ec577e 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(_0x5818fc,_0x3483d4){var _0x1fc95f=function(_0x41792c){while(--_0x41792c){_0x5818fc['push'](_0x5818fc['shift']());}};_0x1fc95f(++_0x3483d4);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'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(_0x38d183,_0x52c883){var _0x5c7546=function(_0x55cbd0){while(--_0x55cbd0){_0x38d183['push'](_0x38d183['shift']());}};_0x5c7546(++_0x52c883);}(_0x7a54,0x106));var _0x47a5=function(_0x4fd550,_0x470148){_0x4fd550=_0x4fd550-0x0;var _0x9109c9=_0x7a54[_0x4fd550];return _0x9109c9;};'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 4713636..b0579f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9278=['util','../../config/logger','api','request-promise','path','rimraf','./condition.attributes','exports','define','Condition','tools_conditions'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0x9278,0xdc));var _0x8927=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x9278[_0x413feb];return _0x40ee88;};'use strict';var _=require('lodash');var util=require(_0x8927('0x0'));var logger=require(_0x8927('0x1'))(_0x8927('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8927('0x3'));var fs=require('fs');var path=require(_0x8927('0x4'));var rimraf=require(_0x8927('0x5'));var config=require('../../config/environment');var attributes=require(_0x8927('0x6'));module[_0x8927('0x7')]=function(_0x2d4fa0,_0x144bae){return _0x2d4fa0[_0x8927('0x8')](_0x8927('0x9'),attributes,{'tableName':_0x8927('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb50b=['Condition','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./condition.attributes','exports','define'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb50b,0x1dd));var _0xbb50=function(_0x3a3b9e,_0xc59037){_0x3a3b9e=_0x3a3b9e-0x0;var _0x148103=_0xb50b[_0x3a3b9e];return _0x148103;};'use strict';var _=require(_0xbb50('0x0'));var util=require(_0xbb50('0x1'));var logger=require(_0xbb50('0x2'))(_0xbb50('0x3'));var moment=require(_0xbb50('0x4'));var BPromise=require(_0xbb50('0x5'));var rp=require(_0xbb50('0x6'));var fs=require('fs');var path=require(_0xbb50('0x7'));var rimraf=require(_0xbb50('0x8'));var config=require(_0xbb50('0x9'));var attributes=require(_0xbb50('0xa'));module[_0xbb50('0xb')]=function(_0x296ebc,_0x4508b2){return _0x296ebc[_0xbb50('0xc')](_0xbb50('0xd'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8a4df49..2338e79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9528=['client','http','request','then','request\x20sent','Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','Condition,\x20%s,\x20%s','message','info','result','catch','util','moment','randomstring','ioredis','../../config/logger','rpc','jayson/promise'];(function(_0x59faa0,_0x39b762){var _0x7756df=function(_0x128de4){while(--_0x128de4){_0x59faa0['push'](_0x59faa0['shift']());}};_0x7756df(++_0x39b762);}(_0x9528,0xcb));var _0x8952=function(_0x36b34a,_0x2331ca){_0x36b34a=_0x36b34a-0x0;var _0x16d31d=_0x9528[_0x36b34a];return _0x16d31d;};'use strict';var _=require('lodash');var util=require(_0x8952('0x0'));var moment=require(_0x8952('0x1'));var BPromise=require('bluebird');var rs=require(_0x8952('0x2'));var fs=require('fs');var Redis=require(_0x8952('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8952('0x4'))(_0x8952('0x5'));var config=require('../../config/environment');var jayson=require(_0x8952('0x6'));var client=jayson[_0x8952('0x7')][_0x8952('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x444900,_0x5d9fee,_0x1f9fc4){return new BPromise(function(_0x11bf18,_0xacc9df){return client[_0x8952('0x9')](_0x444900,_0x1f9fc4)[_0x8952('0xa')](function(_0x538e7a){logger['info']('Condition,\x20%s,\x20%s',_0x5d9fee,_0x8952('0xb'));logger['debug'](_0x8952('0xc'),_0x5d9fee,_0x8952('0xb'),JSON[_0x8952('0xd')](_0x538e7a));if(_0x538e7a[_0x8952('0xe')]){if(_0x538e7a['error'][_0x8952('0xf')]===0x1f4){logger[_0x8952('0xe')](_0x8952('0x10'),_0x5d9fee,_0x538e7a[_0x8952('0xe')][_0x8952('0x11')]);return _0xacc9df(_0x538e7a[_0x8952('0xe')][_0x8952('0x11')]);}logger[_0x8952('0xe')](_0x8952('0x10'),_0x5d9fee,_0x538e7a['error'][_0x8952('0x11')]);return _0x11bf18(_0x538e7a[_0x8952('0xe')][_0x8952('0x11')]);}else{logger[_0x8952('0x12')]('Condition,\x20%s,\x20%s',_0x5d9fee,'request\x20sent');_0x11bf18(_0x538e7a[_0x8952('0x13')][_0x8952('0x11')]);}})[_0x8952('0x14')](function(_0x50737d){logger['error'](_0x8952('0x10'),_0x5d9fee,_0x50737d);_0xacc9df(_0x50737d);});});}
\ No newline at end of file
+var _0x17e5=['code','message','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','client','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4c70c4,_0x963969){var _0x437865=function(_0x54e323){while(--_0x54e323){_0x4c70c4['push'](_0x4c70c4['shift']());}};_0x437865(++_0x963969);}(_0x17e5,0x1bb));var _0x517e=function(_0x1d41a2,_0xd14069){_0x1d41a2=_0x1d41a2-0x0;var _0x4bd311=_0x17e5[_0x1d41a2];return _0x4bd311;};'use strict';var _=require(_0x517e('0x0'));var util=require(_0x517e('0x1'));var moment=require(_0x517e('0x2'));var BPromise=require(_0x517e('0x3'));var rs=require(_0x517e('0x4'));var fs=require('fs');var Redis=require(_0x517e('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x517e('0x6'));var config=require(_0x517e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x517e('0x8')][_0x517e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x372cda,_0x31166b,_0x5d94e8){return new BPromise(function(_0x188722,_0x4ac28b){return client[_0x517e('0xa')](_0x372cda,_0x5d94e8)[_0x517e('0xb')](function(_0x258f22){logger[_0x517e('0xc')](_0x517e('0xd'),_0x31166b,_0x517e('0xe'));logger[_0x517e('0xf')](_0x517e('0x10'),_0x31166b,_0x517e('0xe'),JSON[_0x517e('0x11')](_0x258f22));if(_0x258f22['error']){if(_0x258f22[_0x517e('0x12')][_0x517e('0x13')]===0x1f4){logger[_0x517e('0x12')](_0x517e('0xd'),_0x31166b,_0x258f22[_0x517e('0x12')]['message']);return _0x4ac28b(_0x258f22[_0x517e('0x12')][_0x517e('0x14')]);}logger[_0x517e('0x12')](_0x517e('0xd'),_0x31166b,_0x258f22[_0x517e('0x12')][_0x517e('0x14')]);return _0x188722(_0x258f22['error'][_0x517e('0x14')]);}else{logger[_0x517e('0xc')]('Condition,\x20%s,\x20%s',_0x31166b,'request\x20sent');_0x188722(_0x258f22['result'][_0x517e('0x14')]);}})['catch'](function(_0x21f8dc){logger['error'](_0x517e('0xd'),_0x31166b,_0x21f8dc);_0x4ac28b(_0x21f8dc);});});}
\ No newline at end of file
index d5f41ad..a651bdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f8a=['../../components/interaction/service','../../config/environment','./condition.controller','put','isAuthenticated','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x410b8f,_0x4a67fd){var _0x528a79=function(_0x1004ec){while(--_0x1004ec){_0x410b8f['push'](_0x410b8f['shift']());}};_0x528a79(++_0x4a67fd);}(_0x4f8a,0x160));var _0xa4f8=function(_0x4c4029,_0x4069aa){_0x4c4029=_0x4c4029-0x0;var _0x45e7f3=_0x4f8a[_0x4c4029];return _0x45e7f3;};'use strict';var multer=require(_0xa4f8('0x0'));var util=require(_0xa4f8('0x1'));var path=require(_0xa4f8('0x2'));var timeout=require(_0xa4f8('0x3'));var express=require(_0xa4f8('0x4'));var router=express[_0xa4f8('0x5')]();var fs_extra=require(_0xa4f8('0x6'));var auth=require(_0xa4f8('0x7'));var interaction=require(_0xa4f8('0x8'));var config=require(_0xa4f8('0x9'));var controller=require(_0xa4f8('0xa'));router[_0xa4f8('0xb')]('/:id',auth[_0xa4f8('0xc')](),controller[_0xa4f8('0xd')]);router[_0xa4f8('0xe')](_0xa4f8('0xf'),auth['isAuthenticated'](),controller[_0xa4f8('0x10')]);module[_0xa4f8('0x11')]=router;
\ No newline at end of file
+var _0x7bec=['./condition.controller','/:id','isAuthenticated','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x29d915,_0x54a040){var _0x160f86=function(_0x237dfa){while(--_0x237dfa){_0x29d915['push'](_0x29d915['shift']());}};_0x160f86(++_0x54a040);}(_0x7bec,0x18f));var _0xc7be=function(_0x19999a,_0x115921){_0x19999a=_0x19999a-0x0;var _0x47c593=_0x7bec[_0x19999a];return _0x47c593;};'use strict';var multer=require(_0xc7be('0x0'));var util=require(_0xc7be('0x1'));var path=require(_0xc7be('0x2'));var timeout=require(_0xc7be('0x3'));var express=require('express');var router=express[_0xc7be('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc7be('0x5'));var interaction=require(_0xc7be('0x6'));var config=require('../../config/environment');var controller=require(_0xc7be('0x7'));router['put'](_0xc7be('0x8'),auth[_0xc7be('0x9')](),controller[_0xc7be('0xa')]);router[_0xc7be('0xb')](_0xc7be('0x8'),auth[_0xc7be('0x9')](),controller[_0xc7be('0xc')]);module[_0xc7be('0xd')]=router;
\ No newline at end of file
index 0d48258..294e43c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['STRING','sequelize'];(function(_0x5eaa0b,_0x433b2f){var _0x28b295=function(_0x5e4f6d){while(--_0x5e4f6d){_0x5eaa0b['push'](_0x5eaa0b['shift']());}};_0x28b295(++_0x433b2f);}(_0xb7e7,0x121));var _0x7b7e=function(_0x39096d,_0x51f8a0){_0x39096d=_0x39096d-0x0;var _0x13da4f=_0xb7e7[_0x39096d];return _0x13da4f;};'use strict';var Sequelize=require(_0x7b7e('0x0'));module['exports']={'name':{'type':Sequelize[_0x7b7e('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x7b7e('0x1')]}};
\ No newline at end of file
+var _0x0713=['STRING','name'];(function(_0x1da883,_0x108650){var _0x3dba26=function(_0x56f7ad){while(--_0x56f7ad){_0x1da883['push'](_0x1da883['shift']());}};_0x3dba26(++_0x108650);}(_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
index da0e4bb..5b875c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99e7=['fast-json-patch','mustache','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/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./dashboard.socket','sendStatus','end','status','json','undefined','limit','count','offset','set','apply','reject','save','then','destroy','get','UserProfileResource','error','stack','name','index','map','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','Dashboard','rows','params','find','catch','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','rawAttributes','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','update','type','iframe','attrUrl','attrs','value','attrPath','clock','attrHourFormat','attrTimezone','attrFontSize','counter','attrMetric','total','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrVoiceQueues','web-report','attrReport','attrRefresh','widgetAttributes:\x20%s','addItem','DashboardId','DashboardItem','getItems','findOne','eml-format','rimraf','zip-dir'];(function(_0x34afdc,_0x43e9ab){var _0x1caf16=function(_0x50e339){while(--_0x50e339){_0x34afdc['push'](_0x34afdc['shift']());}};_0x1caf16(++_0x43e9ab);}(_0x99e7,0x1dd));var _0x799e=function(_0x1cbcf1,_0x3f9fd9){_0x1cbcf1=_0x1cbcf1-0x0;var _0x3a06f0=_0x99e7[_0x1cbcf1];return _0x3a06f0;};'use strict';var emlformat=require(_0x799e('0x0'));var rimraf=require(_0x799e('0x1'));var zipdir=require(_0x799e('0x2'));var jsonpatch=require(_0x799e('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x799e('0x4'));var util=require('util');var path=require('path');var sox=require(_0x799e('0x5'));var csv=require(_0x799e('0x6'));var ejs=require(_0x799e('0x7'));var fs=require('fs');var fs_extra=require(_0x799e('0x8'));var _=require(_0x799e('0x9'));var squel=require(_0x799e('0xa'));var crypto=require(_0x799e('0xb'));var jsforce=require(_0x799e('0xc'));var deskjs=require(_0x799e('0xd'));var toCsv=require(_0x799e('0x6'));var querystring=require(_0x799e('0xe'));var Papa=require(_0x799e('0xf'));var Redis=require('ioredis');var authService=require(_0x799e('0x10'));var qs=require(_0x799e('0x11'));var as=require(_0x799e('0x12'));var hardwareService=require(_0x799e('0x13'));var logger=require(_0x799e('0x14'))(_0x799e('0x15'));var utils=require('../../config/utils');var config=require(_0x799e('0x16'));var licenseUtil=require(_0x799e('0x17'));var db=require(_0x799e('0x18'))['db'];config['redis']=_[_0x799e('0x19')](config[_0x799e('0x1a')],{'host':_0x799e('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x799e('0x1a')]));require(_0x799e('0x1c'))['register'](socket);function respondWithStatusCode(_0x237529,_0x1f82d0){_0x1f82d0=_0x1f82d0||0xcc;return function(_0x5b76ba){if(_0x5b76ba){return _0x237529[_0x799e('0x1d')](_0x1f82d0);}return _0x237529['status'](_0x1f82d0)[_0x799e('0x1e')]();};}function respondWithResult(_0x27ac94,_0x43fabd){_0x43fabd=_0x43fabd||0xc8;return function(_0xa88072){if(_0xa88072){return _0x27ac94[_0x799e('0x1f')](_0x43fabd)[_0x799e('0x20')](_0xa88072);}};}function respondWithFilteredResult(_0x26f6ab,_0x50dfc6){return function(_0x3f53ff){if(_0x3f53ff){var _0x22acce=typeof _0x50dfc6['offset']===_0x799e('0x21')&&typeof _0x50dfc6[_0x799e('0x22')]===_0x799e('0x21');var _0x3a7394=_0x3f53ff[_0x799e('0x23')];var _0x5061a8=_0x22acce?0x0:_0x50dfc6[_0x799e('0x24')];var _0x70d8c2=_0x22acce?_0x3f53ff[_0x799e('0x23')]:_0x50dfc6['offset']+_0x50dfc6[_0x799e('0x22')];var _0xd09267;if(_0x70d8c2>=_0x3a7394){_0x70d8c2=_0x3a7394;_0xd09267=0xc8;}else{_0xd09267=0xce;}_0x26f6ab[_0x799e('0x1f')](_0xd09267);return _0x26f6ab[_0x799e('0x25')]('Content-Range',_0x5061a8+'-'+_0x70d8c2+'/'+_0x3a7394)[_0x799e('0x20')](_0x3f53ff);}return null;};}function patchUpdates(_0x35dbaa){return function(_0x3b7040){try{jsonpatch[_0x799e('0x26')](_0x3b7040,_0x35dbaa,!![]);}catch(_0x4a6aa3){return BPromise[_0x799e('0x27')](_0x4a6aa3);}return _0x3b7040[_0x799e('0x28')]();};}function saveUpdates(_0x5c6fb5,_0x1f6587){return function(_0x963d98){if(_0x963d98){return _0x963d98['update'](_0x5c6fb5)[_0x799e('0x29')](function(_0x175505){return _0x175505;});}return null;};}function removeEntity(_0x56798d,_0x205133){return function(_0x1ba96e){if(_0x1ba96e){return _0x1ba96e[_0x799e('0x2a')]()[_0x799e('0x29')](function(){var _0x3c3e02=_0x1ba96e[_0x799e('0x2b')]({'plain':!![]});var _0x7c51b='CustomDashboards';return db[_0x799e('0x2c')][_0x799e('0x2a')]({'where':{'type':_0x7c51b,'resourceId':_0x3c3e02['id']}})['then'](function(){return _0x1ba96e;});})[_0x799e('0x29')](function(){_0x56798d[_0x799e('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b83b8,_0x237916){return function(_0x282948){if(!_0x282948){_0x5b83b8[_0x799e('0x1d')](0x194);}return _0x282948;};}function handleError(_0xb997d6,_0x5776d8){_0x5776d8=_0x5776d8||0x1f4;return function(_0x24f899){logger[_0x799e('0x2d')](_0x24f899[_0x799e('0x2e')]);if(_0x24f899[_0x799e('0x2f')]){delete _0x24f899[_0x799e('0x2f')];}_0xb997d6[_0x799e('0x1f')](_0x5776d8)['send'](_0x24f899);};}exports[_0x799e('0x30')]=function(_0x2cd3f6,_0x561392){var _0x4c723b={},_0x531755={},_0x5eb9c6={'count':0x0,'rows':[]};var _0x19a78c=_[_0x799e('0x31')](db['Dashboard']['rawAttributes'],function(_0x5017a8){return{'name':_0x5017a8[_0x799e('0x32')],'type':_0x5017a8['type'][_0x799e('0x33')]};});_0x531755[_0x799e('0x34')]=_[_0x799e('0x31')](_0x19a78c,'name');_0x531755[_0x799e('0x35')]=_[_0x799e('0x36')](_0x2cd3f6[_0x799e('0x35')]);_0x531755['filters']=_[_0x799e('0x37')](_0x531755[_0x799e('0x34')],_0x531755['query']);_0x4c723b[_0x799e('0x38')]=_['intersection'](_0x531755[_0x799e('0x34')],qs[_0x799e('0x39')](_0x2cd3f6[_0x799e('0x35')]['fields']));_0x4c723b[_0x799e('0x38')]=_0x4c723b[_0x799e('0x38')][_0x799e('0x3a')]?_0x4c723b[_0x799e('0x38')]:_0x531755[_0x799e('0x34')];if(!_0x2cd3f6[_0x799e('0x35')][_0x799e('0x3b')](_0x799e('0x3c'))){_0x4c723b[_0x799e('0x22')]=qs[_0x799e('0x22')](_0x2cd3f6[_0x799e('0x35')]['limit']);_0x4c723b[_0x799e('0x24')]=qs[_0x799e('0x24')](_0x2cd3f6[_0x799e('0x35')][_0x799e('0x24')]);}_0x4c723b[_0x799e('0x3d')]=qs[_0x799e('0x3e')](_0x2cd3f6[_0x799e('0x35')][_0x799e('0x3e')]);_0x4c723b[_0x799e('0x3f')]=qs[_0x799e('0x40')](_[_0x799e('0x41')](_0x2cd3f6[_0x799e('0x35')],_0x531755[_0x799e('0x40')]),_0x19a78c);if(_0x2cd3f6['query'][_0x799e('0x42')]){_0x4c723b[_0x799e('0x3f')]=_[_0x799e('0x43')](_0x4c723b['where'],{'$or':_[_0x799e('0x31')](_0x19a78c,function(_0x3bc574){if(_0x3bc574['type']!==_0x799e('0x44')){var _0x2a8131={};_0x2a8131[_0x3bc574[_0x799e('0x2f')]]={'$like':'%'+_0x2cd3f6['query'][_0x799e('0x42')]+'%'};return _0x2a8131;}})});}_0x4c723b=_[_0x799e('0x43')]({},_0x4c723b,_0x2cd3f6[_0x799e('0x45')]);var _0x36baee={'where':_0x4c723b[_0x799e('0x3f')]};return db['Dashboard'][_0x799e('0x23')](_0x36baee)[_0x799e('0x29')](function(_0x2ce087){_0x5eb9c6[_0x799e('0x23')]=_0x2ce087;if(_0x2cd3f6['query'][_0x799e('0x46')]){_0x4c723b[_0x799e('0x47')]=[{'all':!![]}];}return db[_0x799e('0x48')]['findAll'](_0x4c723b);})[_0x799e('0x29')](function(_0x467f53){_0x5eb9c6[_0x799e('0x49')]=_0x467f53;return _0x5eb9c6;})[_0x799e('0x29')](respondWithFilteredResult(_0x561392,_0x4c723b))['catch'](handleError(_0x561392,null));};exports['show']=function(_0x59ebba,_0x39bc1f){var _0x25caa6={'raw':![],'where':{'id':_0x59ebba[_0x799e('0x4a')]['id']}},_0x21469f={};_0x21469f[_0x799e('0x34')]=_['keys'](db['Dashboard']['rawAttributes']);_0x21469f[_0x799e('0x35')]=_[_0x799e('0x36')](_0x59ebba[_0x799e('0x35')]);_0x21469f[_0x799e('0x40')]=_[_0x799e('0x37')](_0x21469f['model'],_0x21469f[_0x799e('0x35')]);_0x25caa6[_0x799e('0x38')]=_[_0x799e('0x37')](_0x21469f[_0x799e('0x34')],qs['fields'](_0x59ebba[_0x799e('0x35')][_0x799e('0x39')]));_0x25caa6[_0x799e('0x38')]=_0x25caa6[_0x799e('0x38')][_0x799e('0x3a')]?_0x25caa6[_0x799e('0x38')]:_0x21469f[_0x799e('0x34')];if(_0x59ebba[_0x799e('0x35')]['includeAll']){_0x25caa6[_0x799e('0x47')]=[{'all':!![]}];}_0x25caa6=_['merge']({},_0x25caa6,_0x59ebba[_0x799e('0x45')]);return db[_0x799e('0x48')][_0x799e('0x4b')](_0x25caa6)[_0x799e('0x29')](handleEntityNotFound(_0x39bc1f,null))[_0x799e('0x29')](respondWithResult(_0x39bc1f,null))[_0x799e('0x4c')](handleError(_0x39bc1f,null));};exports[_0x799e('0x4d')]=function(_0xe2d02,_0x40f3e7){return db[_0x799e('0x48')][_0x799e('0x4d')](_0xe2d02[_0x799e('0x4e')],{})[_0x799e('0x29')](function(_0x4e3bf1){var _0x7bd00=_0xe2d02[_0x799e('0x4f')]['get']({'plain':!![]});if(!_0x7bd00)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x7bd00[_0x799e('0x50')]===_0x799e('0x4f')){var _0x3f01ed=_0x4e3bf1['get']({'plain':!![]});var _0x4aa905='CustomDashboards';return db[_0x799e('0x51')][_0x799e('0x4b')]({'where':{'name':_0x4aa905,'userProfileId':_0x7bd00[_0x799e('0x52')]},'raw':!![]})[_0x799e('0x29')](function(_0x33aa05){if(_0x33aa05&&_0x33aa05[_0x799e('0x53')]===0x0){return db[_0x799e('0x2c')][_0x799e('0x4d')]({'name':_0x3f01ed[_0x799e('0x2f')],'resourceId':_0x3f01ed['id'],'type':_0x33aa05[_0x799e('0x2f')],'sectionId':_0x33aa05['id']},{})['then'](function(){return _0x4e3bf1;});}else{return _0x4e3bf1;}})['catch'](function(_0x1baa30){logger[_0x799e('0x2d')](_0x799e('0x54'),_0x1baa30);throw _0x1baa30;});}return _0x4e3bf1;})[_0x799e('0x29')](respondWithResult(_0x40f3e7,0xc9))[_0x799e('0x4c')](handleError(_0x40f3e7,null));};exports[_0x799e('0x55')]=function(_0x2d57e7,_0x353839){var _0x2fdac5={'where':{'id':_0x2d57e7[_0x799e('0x4a')]['id']}},_0x2d699a={};_0x2d699a['model']=_[_0x799e('0x36')](db[_0x799e('0x48')][_0x799e('0x56')]);_0x2fdac5[_0x799e('0x38')]=_[_0x799e('0x37')](_0x2d699a[_0x799e('0x34')],qs[_0x799e('0x39')](_0x2d57e7[_0x799e('0x35')][_0x799e('0x39')]));_0x2fdac5[_0x799e('0x38')]=_0x2fdac5[_0x799e('0x38')][_0x799e('0x3a')]?_0x2fdac5['attributes']:_0x2d699a[_0x799e('0x34')];if(_0x2d57e7['query'][_0x799e('0x46')]){_0x2fdac5[_0x799e('0x47')]=[{'all':!![]}];}_0x2fdac5=_['merge']({},_0x2fdac5,_0x2d57e7[_0x799e('0x45')]);return db[_0x799e('0x48')][_0x799e('0x4b')](_0x2fdac5)['then'](handleEntityNotFound(_0x353839,null))[_0x799e('0x29')](function(_0x185c46){if(_0x185c46){var _0x2badb7=_0x185c46[_0x799e('0x2b')]({'plain':!![]});_0x2badb7=qs[_0x799e('0x57')](_0x2badb7,['id',_0x799e('0x58'),_0x799e('0x59')]);_0x2d57e7[_0x799e('0x4e')]=_[_0x799e('0x57')](_0x2d57e7[_0x799e('0x4e')],['id',_0x799e('0x58'),'updatedAt']);return db['Dashboard'][_0x799e('0x4d')](_[_0x799e('0x43')](_0x2badb7,_0x2d57e7['body']),{'include':_0x2d57e7[_0x799e('0x35')][_0x799e('0x46')]?[{'all':!![]}]:undefined})[_0x799e('0x29')](function(_0x348a2d){var _0x2957aa=_0x2d57e7[_0x799e('0x4f')][_0x799e('0x2b')]({'plain':!![]});if(!_0x2957aa)throw new Error(_0x799e('0x5a'));if(_0x2957aa[_0x799e('0x50')]==='user'){var _0x5d6ce2=_0x348a2d[_0x799e('0x2b')]({'plain':!![]});var _0x3a20b3='CustomDashboards';return db[_0x799e('0x51')]['find']({'where':{'name':_0x3a20b3,'userProfileId':_0x2957aa[_0x799e('0x52')]},'raw':!![]})[_0x799e('0x29')](function(_0xb9c3fe){if(_0xb9c3fe&&_0xb9c3fe[_0x799e('0x53')]===0x0){return db['UserProfileResource']['create']({'name':_0x5d6ce2['name'],'resourceId':_0x5d6ce2['id'],'type':_0xb9c3fe['name'],'sectionId':_0xb9c3fe['id']},{})['then'](function(){return _0x348a2d;});}else{return _0x348a2d;}})['catch'](function(_0x2509b1){logger[_0x799e('0x2d')](_0x799e('0x54'),_0x2509b1);throw _0x2509b1;});}return _0x348a2d;});}})['then'](respondWithResult(_0x353839,0xc9))['catch'](handleError(_0x353839,null));};exports[_0x799e('0x5b')]=function(_0x1c6a15,_0x195b91){if(_0x1c6a15['body']['id']){delete _0x1c6a15[_0x799e('0x4e')]['id'];}return db[_0x799e('0x48')][_0x799e('0x4b')]({'where':{'id':_0x1c6a15[_0x799e('0x4a')]['id']}})[_0x799e('0x29')](handleEntityNotFound(_0x195b91,null))[_0x799e('0x29')](saveUpdates(_0x1c6a15[_0x799e('0x4e')],null))[_0x799e('0x29')](respondWithResult(_0x195b91,null))[_0x799e('0x4c')](handleError(_0x195b91,null));};exports[_0x799e('0x2a')]=function(_0x19ff9d,_0x5f6af9){return db[_0x799e('0x48')][_0x799e('0x4b')]({'where':{'id':_0x19ff9d[_0x799e('0x4a')]['id']}})[_0x799e('0x29')](handleEntityNotFound(_0x5f6af9,null))['then'](removeEntity(_0x5f6af9,null))[_0x799e('0x4c')](handleError(_0x5f6af9,null));};function widgetAttributes(_0x2f5491){try{switch(_0x2f5491[_0x799e('0x5c')]){case _0x799e('0x5d'):return[{'name':_0x799e('0x5e'),'value':_0x2f5491[_0x799e('0x5e')]||(_0x2f5491[_0x799e('0x5f')]&&_0x2f5491[_0x799e('0x5f')][0x0]?_0x2f5491[_0x799e('0x5f')][0x0][_0x799e('0x60')]:undefined)||'https://'}];case'custom':return[{'name':_0x799e('0x61'),'value':_0x2f5491['attrPath']||(_0x2f5491['attrs']&&_0x2f5491[_0x799e('0x5f')][0x0]?_0x2f5491['attrs'][0x0][_0x799e('0x60')]:undefined)||''}];case _0x799e('0x62'):return[{'name':_0x799e('0x63'),'value':_0x2f5491['attrHourFormat']||(_0x2f5491['attrs']&&_0x2f5491['attrs'][0x0]?_0x2f5491[_0x799e('0x5f')][0x0]['value']:undefined)||'HH:mm:ss'},{'name':'attrTimezone','value':_0x2f5491[_0x799e('0x64')]||(_0x2f5491['attrs']&&_0x2f5491[_0x799e('0x5f')][0x1]?_0x2f5491[_0x799e('0x5f')][0x1][_0x799e('0x60')]:undefined)||'0.00'},{'name':_0x799e('0x65'),'value':_0x2f5491[_0x799e('0x65')]||(_0x2f5491[_0x799e('0x5f')]&&_0x2f5491[_0x799e('0x5f')][0x2]?_0x2f5491[_0x799e('0x5f')][0x2][_0x799e('0x60')]:undefined)||0xc}];case _0x799e('0x66'):return[{'name':_0x799e('0x67'),'value':_0x2f5491[_0x799e('0x67')]||(_0x2f5491[_0x799e('0x5f')]&&_0x2f5491['attrs'][0x0]?_0x2f5491['attrs'][0x0][_0x799e('0x60')]:undefined)||_0x799e('0x68')},{'name':'attrVoiceQueues','value':_0x2f5491['attrVoiceQueues']||(_0x2f5491['attrs']&&_0x2f5491[_0x799e('0x5f')][0x1]?_0x2f5491['attrs'][0x1]['value']:undefined)||[]},{'name':'attrFontSize','value':_0x2f5491[_0x799e('0x65')]||(_0x2f5491[_0x799e('0x5f')]&&_0x2f5491[_0x799e('0x5f')][0x2]?_0x2f5491['attrs'][0x2][_0x799e('0x60')]:undefined)||0x14}];case _0x799e('0x69'):case _0x799e('0x6a'):return[{'name':_0x799e('0x6b'),'value':_0x2f5491[_0x799e('0x6b')]||(_0x2f5491[_0x799e('0x5f')]&&_0x2f5491[_0x799e('0x5f')][0x0]?_0x2f5491[_0x799e('0x5f')][0x0]['value']:undefined)||_0x799e('0x68')},{'name':_0x799e('0x6c'),'value':_0x2f5491[_0x799e('0x6c')]||(_0x2f5491[_0x799e('0x5f')]&&_0x2f5491[_0x799e('0x5f')][0x1]?_0x2f5491[_0x799e('0x5f')][0x1][_0x799e('0x60')]:undefined)||null},{'name':_0x799e('0x6d'),'value':_0x2f5491[_0x799e('0x6d')]||(_0x2f5491[_0x799e('0x5f')]&&_0x2f5491[_0x799e('0x5f')][0x2]?_0x2f5491[_0x799e('0x5f')][0x2]['value']:undefined)||null},{'name':_0x799e('0x6e'),'value':_0x2f5491[_0x799e('0x6e')]||(_0x2f5491[_0x799e('0x5f')]&&_0x2f5491[_0x799e('0x5f')][0x3]?_0x2f5491[_0x799e('0x5f')][0x3][_0x799e('0x60')]:undefined)||[]}];case _0x799e('0x6f'):return[{'name':_0x799e('0x70'),'type':_0x2f5491['reportType']||(_0x2f5491['attrs']&&_0x2f5491[_0x799e('0x5f')][0x0]?_0x2f5491[_0x799e('0x5f')][0x0]['type']:undefined)||null,'value':_0x2f5491['attrReport']||(_0x2f5491['attrs']&&_0x2f5491[_0x799e('0x5f')][0x0]?_0x2f5491['attrs'][0x0]['value']:undefined)||null},{'name':_0x799e('0x71'),'value':_0x2f5491['attrRefresh']||(_0x2f5491[_0x799e('0x5f')]&&_0x2f5491[_0x799e('0x5f')][0x1]?_0x2f5491[_0x799e('0x5f')][0x1][_0x799e('0x60')]:undefined)||0x0}];default:return[];}}catch(_0x4ae58b){logger[_0x799e('0x2d')](_0x799e('0x72'),JSON['stringify'](_0x4ae58b));return[];}}exports[_0x799e('0x73')]=function(_0x365ae0,_0x2ee338,_0x593b13){if(_0x365ae0[_0x799e('0x4e')]['id']){delete _0x365ae0[_0x799e('0x4e')]['id'];}return db['Dashboard'][_0x799e('0x4b')]({'where':{'id':_0x365ae0[_0x799e('0x4a')]['id']}})[_0x799e('0x29')](handleEntityNotFound(_0x2ee338,null))[_0x799e('0x29')](function(_0x204f60){if(_0x204f60){_0x365ae0[_0x799e('0x4e')][_0x799e('0x74')]=_0x204f60['id'];_0x365ae0[_0x799e('0x4e')][_0x799e('0x5f')]=widgetAttributes(_0x365ae0['body']);return db[_0x799e('0x75')][_0x799e('0x4d')](_0x365ae0[_0x799e('0x4e')]);}})[_0x799e('0x29')](respondWithResult(_0x2ee338,null))[_0x799e('0x4c')](handleError(_0x2ee338,null));};exports[_0x799e('0x76')]=function(_0x2e3c8f,_0xf433e5,_0x1c55fc){var _0x14cb0d={};var _0x3f090b={};var _0x4fd8ef;var _0xac02d8;return db[_0x799e('0x48')][_0x799e('0x77')]({'where':{'id':_0x2e3c8f['params']['id']}})[_0x799e('0x29')](handleEntityNotFound(_0xf433e5,null))[_0x799e('0x29')](function(_0x156121){if(_0x156121){_0x4fd8ef=_0x156121;_0x3f090b[_0x799e('0x34')]=_['keys'](db[_0x799e('0x75')]['rawAttributes']);_0x3f090b['query']=_[_0x799e('0x36')](_0x2e3c8f[_0x799e('0x35')]);_0x3f090b[_0x799e('0x40')]=_[_0x799e('0x37')](_0x3f090b['model'],_0x3f090b['query']);_0x14cb0d[_0x799e('0x38')]=_[_0x799e('0x37')](_0x3f090b['model'],qs[_0x799e('0x39')](_0x2e3c8f[_0x799e('0x35')][_0x799e('0x39')]));_0x14cb0d[_0x799e('0x38')]=_0x14cb0d[_0x799e('0x38')][_0x799e('0x3a')]?_0x14cb0d['attributes']:_0x3f090b[_0x799e('0x34')];_0x14cb0d[_0x799e('0x3d')]=qs['sort'](_0x2e3c8f['query']['sort']);_0x14cb0d[_0x799e('0x3f')]=qs[_0x799e('0x40')](_[_0x799e('0x41')](_0x2e3c8f[_0x799e('0x35')],_0x3f090b['filters']));if(_0x2e3c8f[_0x799e('0x35')][_0x799e('0x42')]){_0x14cb0d[_0x799e('0x3f')]=_['merge'](_0x14cb0d['where'],{'$or':_[_0x799e('0x31')](_0x14cb0d[_0x799e('0x38')],function(_0x7e088f){var _0x28504c={};_0x28504c[_0x7e088f]={'$like':'%'+_0x2e3c8f[_0x799e('0x35')][_0x799e('0x42')]+'%'};return _0x28504c;})});}_0x14cb0d=_[_0x799e('0x43')]({},_0x14cb0d,_0x2e3c8f[_0x799e('0x45')]);return _0x4fd8ef[_0x799e('0x76')](_0x14cb0d);}})[_0x799e('0x29')](function(_0x5e6eb1){if(_0x5e6eb1){_0xac02d8=_0x5e6eb1[_0x799e('0x3a')];if(!_0x2e3c8f[_0x799e('0x35')]['hasOwnProperty'](_0x799e('0x3c'))){_0x14cb0d[_0x799e('0x22')]=qs[_0x799e('0x22')](_0x2e3c8f[_0x799e('0x35')][_0x799e('0x22')]);_0x14cb0d[_0x799e('0x24')]=qs[_0x799e('0x24')](_0x2e3c8f[_0x799e('0x35')][_0x799e('0x24')]);}return _0x4fd8ef['getItems'](_0x14cb0d);}})['then'](function(_0x5c6daa){if(_0x5c6daa){return _0x5c6daa?{'count':_0xac02d8,'rows':_0x5c6daa}:null;}})[_0x799e('0x29')](respondWithResult(_0xf433e5,null))[_0x799e('0x4c')](handleError(_0xf433e5,null));};
\ No newline at end of file
+var _0xfd58=['get','CustomDashboards','UserProfileResource','stack','name','send','index','map','Dashboard','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','count','includeAll','include','rows','show','options','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','body','UserProfileSection','attrUrl','attrs','value','https://','custom','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','findOne','getItems','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','offset','undefined','limit','reject','save','update','then','destroy'];(function(_0x1e9631,_0x2491b1){var _0x15b274=function(_0x371073){while(--_0x371073){_0x1e9631['push'](_0x1e9631['shift']());}};_0x15b274(++_0x2491b1);}(_0xfd58,0x1c5));var _0x8fd5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd58[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x8fd5('0x0'));var rimraf=require(_0x8fd5('0x1'));var zipdir=require(_0x8fd5('0x2'));var jsonpatch=require(_0x8fd5('0x3'));var rp=require(_0x8fd5('0x4'));var moment=require(_0x8fd5('0x5'));var BPromise=require(_0x8fd5('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8fd5('0x7'));var sox=require(_0x8fd5('0x8'));var csv=require('to-csv');var ejs=require(_0x8fd5('0x9'));var fs=require('fs');var fs_extra=require(_0x8fd5('0xa'));var _=require(_0x8fd5('0xb'));var squel=require(_0x8fd5('0xc'));var crypto=require(_0x8fd5('0xd'));var jsforce=require(_0x8fd5('0xe'));var deskjs=require(_0x8fd5('0xf'));var toCsv=require(_0x8fd5('0x10'));var querystring=require(_0x8fd5('0x11'));var Papa=require(_0x8fd5('0x12'));var Redis=require(_0x8fd5('0x13'));var authService=require(_0x8fd5('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8fd5('0x15'))(_0x8fd5('0x16'));var utils=require(_0x8fd5('0x17'));var config=require(_0x8fd5('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x8fd5('0x19')]=_[_0x8fd5('0x1a')](config['redis'],{'host':_0x8fd5('0x1b'),'port':0x18eb});var socket=require(_0x8fd5('0x1c'))(new Redis(config[_0x8fd5('0x19')]));require(_0x8fd5('0x1d'))[_0x8fd5('0x1e')](socket);function respondWithStatusCode(_0x3ae3a0,_0x53876a){_0x53876a=_0x53876a||0xcc;return function(_0x3eb0c2){if(_0x3eb0c2){return _0x3ae3a0[_0x8fd5('0x1f')](_0x53876a);}return _0x3ae3a0[_0x8fd5('0x20')](_0x53876a)[_0x8fd5('0x21')]();};}function respondWithResult(_0x117ca5,_0x4fbac5){_0x4fbac5=_0x4fbac5||0xc8;return function(_0x3d5183){if(_0x3d5183){return _0x117ca5[_0x8fd5('0x20')](_0x4fbac5)[_0x8fd5('0x22')](_0x3d5183);}};}function respondWithFilteredResult(_0x17a6bb,_0x3b27ee){return function(_0x3aeed7){if(_0x3aeed7){var _0x560f38=typeof _0x3b27ee[_0x8fd5('0x23')]===_0x8fd5('0x24')&&typeof _0x3b27ee[_0x8fd5('0x25')]==='undefined';var _0x145dee=_0x3aeed7['count'];var _0x21dff1=_0x560f38?0x0:_0x3b27ee[_0x8fd5('0x23')];var _0x3f12c4=_0x560f38?_0x3aeed7['count']:_0x3b27ee[_0x8fd5('0x23')]+_0x3b27ee[_0x8fd5('0x25')];var _0x479b43;if(_0x3f12c4>=_0x145dee){_0x3f12c4=_0x145dee;_0x479b43=0xc8;}else{_0x479b43=0xce;}_0x17a6bb['status'](_0x479b43);return _0x17a6bb['set']('Content-Range',_0x21dff1+'-'+_0x3f12c4+'/'+_0x145dee)[_0x8fd5('0x22')](_0x3aeed7);}return null;};}function patchUpdates(_0x2f69f4){return function(_0x3493cb){try{jsonpatch['apply'](_0x3493cb,_0x2f69f4,!![]);}catch(_0x438f61){return BPromise[_0x8fd5('0x26')](_0x438f61);}return _0x3493cb[_0x8fd5('0x27')]();};}function saveUpdates(_0x1dfe6a,_0x1c9a75){return function(_0x3fb705){if(_0x3fb705){return _0x3fb705[_0x8fd5('0x28')](_0x1dfe6a)[_0x8fd5('0x29')](function(_0x3b98cf){return _0x3b98cf;});}return null;};}function removeEntity(_0x481eb2,_0x280092){return function(_0x49f52c){if(_0x49f52c){return _0x49f52c[_0x8fd5('0x2a')]()['then'](function(){var _0x17a19e=_0x49f52c[_0x8fd5('0x2b')]({'plain':!![]});var _0x31d7bd=_0x8fd5('0x2c');return db[_0x8fd5('0x2d')][_0x8fd5('0x2a')]({'where':{'type':_0x31d7bd,'resourceId':_0x17a19e['id']}})[_0x8fd5('0x29')](function(){return _0x49f52c;});})[_0x8fd5('0x29')](function(){_0x481eb2[_0x8fd5('0x20')](0xcc)[_0x8fd5('0x21')]();});}};}function handleEntityNotFound(_0x2486a4,_0x239b42){return function(_0x5aa0ad){if(!_0x5aa0ad){_0x2486a4[_0x8fd5('0x1f')](0x194);}return _0x5aa0ad;};}function handleError(_0x3232c0,_0x4f1a21){_0x4f1a21=_0x4f1a21||0x1f4;return function(_0x588092){logger['error'](_0x588092[_0x8fd5('0x2e')]);if(_0x588092['name']){delete _0x588092[_0x8fd5('0x2f')];}_0x3232c0[_0x8fd5('0x20')](_0x4f1a21)[_0x8fd5('0x30')](_0x588092);};}exports[_0x8fd5('0x31')]=function(_0x13349a,_0x4f8f0d){var _0x67c488={},_0x5c5fe6={},_0x35e501={'count':0x0,'rows':[]};var _0x56c344=_[_0x8fd5('0x32')](db[_0x8fd5('0x33')][_0x8fd5('0x34')],function(_0x19679e){return{'name':_0x19679e[_0x8fd5('0x35')],'type':_0x19679e[_0x8fd5('0x36')][_0x8fd5('0x37')]};});_0x5c5fe6[_0x8fd5('0x38')]=_[_0x8fd5('0x32')](_0x56c344,'name');_0x5c5fe6[_0x8fd5('0x39')]=_[_0x8fd5('0x3a')](_0x13349a['query']);_0x5c5fe6[_0x8fd5('0x3b')]=_[_0x8fd5('0x3c')](_0x5c5fe6[_0x8fd5('0x38')],_0x5c5fe6[_0x8fd5('0x39')]);_0x67c488['attributes']=_[_0x8fd5('0x3c')](_0x5c5fe6[_0x8fd5('0x38')],qs['fields'](_0x13349a[_0x8fd5('0x39')][_0x8fd5('0x3d')]));_0x67c488[_0x8fd5('0x3e')]=_0x67c488['attributes'][_0x8fd5('0x3f')]?_0x67c488['attributes']:_0x5c5fe6[_0x8fd5('0x38')];if(!_0x13349a[_0x8fd5('0x39')][_0x8fd5('0x40')](_0x8fd5('0x41'))){_0x67c488[_0x8fd5('0x25')]=qs[_0x8fd5('0x25')](_0x13349a[_0x8fd5('0x39')][_0x8fd5('0x25')]);_0x67c488[_0x8fd5('0x23')]=qs[_0x8fd5('0x23')](_0x13349a[_0x8fd5('0x39')][_0x8fd5('0x23')]);}_0x67c488[_0x8fd5('0x42')]=qs[_0x8fd5('0x43')](_0x13349a['query'][_0x8fd5('0x43')]);_0x67c488['where']=qs['filters'](_[_0x8fd5('0x44')](_0x13349a[_0x8fd5('0x39')],_0x5c5fe6[_0x8fd5('0x3b')]),_0x56c344);if(_0x13349a[_0x8fd5('0x39')][_0x8fd5('0x45')]){_0x67c488[_0x8fd5('0x46')]=_[_0x8fd5('0x47')](_0x67c488[_0x8fd5('0x46')],{'$or':_[_0x8fd5('0x32')](_0x56c344,function(_0x52b6fc){if(_0x52b6fc[_0x8fd5('0x36')]!==_0x8fd5('0x48')){var _0x135adb={};_0x135adb[_0x52b6fc[_0x8fd5('0x2f')]]={'$like':'%'+_0x13349a[_0x8fd5('0x39')][_0x8fd5('0x45')]+'%'};return _0x135adb;}})});}_0x67c488=_[_0x8fd5('0x47')]({},_0x67c488,_0x13349a['options']);var _0x3f9745={'where':_0x67c488[_0x8fd5('0x46')]};return db['Dashboard'][_0x8fd5('0x49')](_0x3f9745)['then'](function(_0x297ac6){_0x35e501[_0x8fd5('0x49')]=_0x297ac6;if(_0x13349a['query'][_0x8fd5('0x4a')]){_0x67c488[_0x8fd5('0x4b')]=[{'all':!![]}];}return db[_0x8fd5('0x33')]['findAll'](_0x67c488);})[_0x8fd5('0x29')](function(_0xdb845d){_0x35e501[_0x8fd5('0x4c')]=_0xdb845d;return _0x35e501;})[_0x8fd5('0x29')](respondWithFilteredResult(_0x4f8f0d,_0x67c488))['catch'](handleError(_0x4f8f0d,null));};exports[_0x8fd5('0x4d')]=function(_0x2ea423,_0x2c1e8c){var _0x3df786={'raw':![],'where':{'id':_0x2ea423['params']['id']}},_0x3580e2={};_0x3580e2['model']=_[_0x8fd5('0x3a')](db['Dashboard'][_0x8fd5('0x34')]);_0x3580e2['query']=_[_0x8fd5('0x3a')](_0x2ea423['query']);_0x3580e2[_0x8fd5('0x3b')]=_[_0x8fd5('0x3c')](_0x3580e2[_0x8fd5('0x38')],_0x3580e2[_0x8fd5('0x39')]);_0x3df786[_0x8fd5('0x3e')]=_[_0x8fd5('0x3c')](_0x3580e2[_0x8fd5('0x38')],qs[_0x8fd5('0x3d')](_0x2ea423[_0x8fd5('0x39')][_0x8fd5('0x3d')]));_0x3df786[_0x8fd5('0x3e')]=_0x3df786[_0x8fd5('0x3e')][_0x8fd5('0x3f')]?_0x3df786['attributes']:_0x3580e2[_0x8fd5('0x38')];if(_0x2ea423[_0x8fd5('0x39')][_0x8fd5('0x4a')]){_0x3df786[_0x8fd5('0x4b')]=[{'all':!![]}];}_0x3df786=_[_0x8fd5('0x47')]({},_0x3df786,_0x2ea423[_0x8fd5('0x4e')]);return db[_0x8fd5('0x33')][_0x8fd5('0x4f')](_0x3df786)[_0x8fd5('0x29')](handleEntityNotFound(_0x2c1e8c,null))[_0x8fd5('0x29')](respondWithResult(_0x2c1e8c,null))[_0x8fd5('0x50')](handleError(_0x2c1e8c,null));};exports['create']=function(_0x5b7b5b,_0x17bf09){return db['Dashboard'][_0x8fd5('0x51')](_0x5b7b5b['body'],{})['then'](function(_0x1b9ce7){var _0x10f7d6=_0x5b7b5b[_0x8fd5('0x52')][_0x8fd5('0x2b')]({'plain':!![]});if(!_0x10f7d6)throw new Error(_0x8fd5('0x53'));if(_0x10f7d6[_0x8fd5('0x54')]===_0x8fd5('0x52')){var _0x227204=_0x1b9ce7['get']({'plain':!![]});var _0x2687f3=_0x8fd5('0x2c');return db['UserProfileSection'][_0x8fd5('0x4f')]({'where':{'name':_0x2687f3,'userProfileId':_0x10f7d6[_0x8fd5('0x55')]},'raw':!![]})['then'](function(_0x281833){if(_0x281833&&_0x281833[_0x8fd5('0x56')]===0x0){return db[_0x8fd5('0x2d')][_0x8fd5('0x51')]({'name':_0x227204['name'],'resourceId':_0x227204['id'],'type':_0x281833[_0x8fd5('0x2f')],'sectionId':_0x281833['id']},{})[_0x8fd5('0x29')](function(){return _0x1b9ce7;});}else{return _0x1b9ce7;}})[_0x8fd5('0x50')](function(_0x4c2975){logger[_0x8fd5('0x57')](_0x8fd5('0x58'),_0x4c2975);throw _0x4c2975;});}return _0x1b9ce7;})[_0x8fd5('0x29')](respondWithResult(_0x17bf09,0xc9))[_0x8fd5('0x50')](handleError(_0x17bf09,null));};exports[_0x8fd5('0x59')]=function(_0x4a50f7,_0x265378){var _0x5f13fb={'where':{'id':_0x4a50f7[_0x8fd5('0x5a')]['id']}},_0x2f936f={};_0x2f936f[_0x8fd5('0x38')]=_[_0x8fd5('0x3a')](db[_0x8fd5('0x33')][_0x8fd5('0x34')]);_0x5f13fb[_0x8fd5('0x3e')]=_[_0x8fd5('0x3c')](_0x2f936f[_0x8fd5('0x38')],qs[_0x8fd5('0x3d')](_0x4a50f7[_0x8fd5('0x39')][_0x8fd5('0x3d')]));_0x5f13fb[_0x8fd5('0x3e')]=_0x5f13fb['attributes'][_0x8fd5('0x3f')]?_0x5f13fb[_0x8fd5('0x3e')]:_0x2f936f[_0x8fd5('0x38')];if(_0x4a50f7['query'][_0x8fd5('0x4a')]){_0x5f13fb['include']=[{'all':!![]}];}_0x5f13fb=_[_0x8fd5('0x47')]({},_0x5f13fb,_0x4a50f7[_0x8fd5('0x4e')]);return db['Dashboard']['find'](_0x5f13fb)['then'](handleEntityNotFound(_0x265378,null))['then'](function(_0x4175d8){if(_0x4175d8){var _0x167659=_0x4175d8[_0x8fd5('0x2b')]({'plain':!![]});_0x167659=qs[_0x8fd5('0x5b')](_0x167659,['id',_0x8fd5('0x5c'),_0x8fd5('0x5d')]);_0x4a50f7['body']=_['omit'](_0x4a50f7['body'],['id',_0x8fd5('0x5c'),_0x8fd5('0x5d')]);return db[_0x8fd5('0x33')][_0x8fd5('0x51')](_[_0x8fd5('0x47')](_0x167659,_0x4a50f7[_0x8fd5('0x5e')]),{'include':_0x4a50f7['query'][_0x8fd5('0x4a')]?[{'all':!![]}]:undefined})[_0x8fd5('0x29')](function(_0x2c98b7){var _0x5d805c=_0x4a50f7[_0x8fd5('0x52')]['get']({'plain':!![]});if(!_0x5d805c)throw new Error(_0x8fd5('0x53'));if(_0x5d805c[_0x8fd5('0x54')]===_0x8fd5('0x52')){var _0x54ff61=_0x2c98b7[_0x8fd5('0x2b')]({'plain':!![]});var _0x1901a2=_0x8fd5('0x2c');return db[_0x8fd5('0x5f')][_0x8fd5('0x4f')]({'where':{'name':_0x1901a2,'userProfileId':_0x5d805c[_0x8fd5('0x55')]},'raw':!![]})['then'](function(_0x4bc20c){if(_0x4bc20c&&_0x4bc20c[_0x8fd5('0x56')]===0x0){return db[_0x8fd5('0x2d')][_0x8fd5('0x51')]({'name':_0x54ff61['name'],'resourceId':_0x54ff61['id'],'type':_0x4bc20c[_0x8fd5('0x2f')],'sectionId':_0x4bc20c['id']},{})[_0x8fd5('0x29')](function(){return _0x2c98b7;});}else{return _0x2c98b7;}})[_0x8fd5('0x50')](function(_0x2f0adf){logger[_0x8fd5('0x57')](_0x8fd5('0x58'),_0x2f0adf);throw _0x2f0adf;});}return _0x2c98b7;});}})[_0x8fd5('0x29')](respondWithResult(_0x265378,0xc9))[_0x8fd5('0x50')](handleError(_0x265378,null));};exports[_0x8fd5('0x28')]=function(_0x5da1fd,_0x27036f){if(_0x5da1fd[_0x8fd5('0x5e')]['id']){delete _0x5da1fd[_0x8fd5('0x5e')]['id'];}return db[_0x8fd5('0x33')][_0x8fd5('0x4f')]({'where':{'id':_0x5da1fd[_0x8fd5('0x5a')]['id']}})[_0x8fd5('0x29')](handleEntityNotFound(_0x27036f,null))[_0x8fd5('0x29')](saveUpdates(_0x5da1fd[_0x8fd5('0x5e')],null))[_0x8fd5('0x29')](respondWithResult(_0x27036f,null))[_0x8fd5('0x50')](handleError(_0x27036f,null));};exports['destroy']=function(_0xc3aa64,_0xb88901){return db[_0x8fd5('0x33')][_0x8fd5('0x4f')]({'where':{'id':_0xc3aa64[_0x8fd5('0x5a')]['id']}})[_0x8fd5('0x29')](handleEntityNotFound(_0xb88901,null))[_0x8fd5('0x29')](removeEntity(_0xb88901,null))[_0x8fd5('0x50')](handleError(_0xb88901,null));};function widgetAttributes(_0x12e011){try{switch(_0x12e011[_0x8fd5('0x36')]){case'iframe':return[{'name':_0x8fd5('0x60'),'value':_0x12e011[_0x8fd5('0x60')]||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011['attrs'][0x0]?_0x12e011[_0x8fd5('0x61')][0x0][_0x8fd5('0x62')]:undefined)||_0x8fd5('0x63')}];case _0x8fd5('0x64'):return[{'name':'attrPath','value':_0x12e011['attrPath']||(_0x12e011['attrs']&&_0x12e011[_0x8fd5('0x61')][0x0]?_0x12e011['attrs'][0x0]['value']:undefined)||''}];case _0x8fd5('0x65'):return[{'name':_0x8fd5('0x66'),'value':_0x12e011[_0x8fd5('0x66')]||(_0x12e011['attrs']&&_0x12e011[_0x8fd5('0x61')][0x0]?_0x12e011[_0x8fd5('0x61')][0x0][_0x8fd5('0x62')]:undefined)||_0x8fd5('0x67')},{'name':_0x8fd5('0x68'),'value':_0x12e011[_0x8fd5('0x68')]||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011[_0x8fd5('0x61')][0x1]?_0x12e011['attrs'][0x1][_0x8fd5('0x62')]:undefined)||'0.00'},{'name':_0x8fd5('0x69'),'value':_0x12e011[_0x8fd5('0x69')]||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011['attrs'][0x2]?_0x12e011[_0x8fd5('0x61')][0x2]['value']:undefined)||0xc}];case _0x8fd5('0x6a'):return[{'name':_0x8fd5('0x6b'),'value':_0x12e011[_0x8fd5('0x6b')]||(_0x12e011['attrs']&&_0x12e011[_0x8fd5('0x61')][0x0]?_0x12e011['attrs'][0x0][_0x8fd5('0x62')]:undefined)||'total'},{'name':'attrVoiceQueues','value':_0x12e011[_0x8fd5('0x6c')]||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011['attrs'][0x1]?_0x12e011[_0x8fd5('0x61')][0x1]['value']:undefined)||[]},{'name':_0x8fd5('0x69'),'value':_0x12e011[_0x8fd5('0x69')]||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011[_0x8fd5('0x61')][0x2]?_0x12e011[_0x8fd5('0x61')][0x2][_0x8fd5('0x62')]:undefined)||0x14}];case _0x8fd5('0x6d'):case _0x8fd5('0x6e'):return[{'name':_0x8fd5('0x6f'),'value':_0x12e011[_0x8fd5('0x6f')]||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011['attrs'][0x0]?_0x12e011[_0x8fd5('0x61')][0x0]['value']:undefined)||'total'},{'name':_0x8fd5('0x70'),'value':_0x12e011[_0x8fd5('0x70')]||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011[_0x8fd5('0x61')][0x1]?_0x12e011[_0x8fd5('0x61')][0x1][_0x8fd5('0x62')]:undefined)||null},{'name':_0x8fd5('0x71'),'value':_0x12e011[_0x8fd5('0x71')]||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011[_0x8fd5('0x61')][0x2]?_0x12e011['attrs'][0x2][_0x8fd5('0x62')]:undefined)||null},{'name':_0x8fd5('0x6c'),'value':_0x12e011['attrVoiceQueues']||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011[_0x8fd5('0x61')][0x3]?_0x12e011[_0x8fd5('0x61')][0x3][_0x8fd5('0x62')]:undefined)||[]}];case _0x8fd5('0x72'):return[{'name':_0x8fd5('0x73'),'type':_0x12e011['reportType']||(_0x12e011['attrs']&&_0x12e011[_0x8fd5('0x61')][0x0]?_0x12e011[_0x8fd5('0x61')][0x0][_0x8fd5('0x36')]:undefined)||null,'value':_0x12e011[_0x8fd5('0x73')]||(_0x12e011['attrs']&&_0x12e011['attrs'][0x0]?_0x12e011[_0x8fd5('0x61')][0x0][_0x8fd5('0x62')]:undefined)||null},{'name':_0x8fd5('0x74'),'value':_0x12e011['attrRefresh']||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011[_0x8fd5('0x61')][0x1]?_0x12e011[_0x8fd5('0x61')][0x1][_0x8fd5('0x62')]:undefined)||0x0}];default:return[];}}catch(_0x485d76){logger['error'](_0x8fd5('0x75'),JSON[_0x8fd5('0x76')](_0x485d76));return[];}}exports[_0x8fd5('0x77')]=function(_0x397cb2,_0x3c3a93,_0xf73627){if(_0x397cb2[_0x8fd5('0x5e')]['id']){delete _0x397cb2['body']['id'];}return db[_0x8fd5('0x33')]['find']({'where':{'id':_0x397cb2[_0x8fd5('0x5a')]['id']}})[_0x8fd5('0x29')](handleEntityNotFound(_0x3c3a93,null))[_0x8fd5('0x29')](function(_0x2e0975){if(_0x2e0975){_0x397cb2[_0x8fd5('0x5e')][_0x8fd5('0x78')]=_0x2e0975['id'];_0x397cb2[_0x8fd5('0x5e')][_0x8fd5('0x61')]=widgetAttributes(_0x397cb2[_0x8fd5('0x5e')]);return db[_0x8fd5('0x79')][_0x8fd5('0x51')](_0x397cb2['body']);}})[_0x8fd5('0x29')](respondWithResult(_0x3c3a93,null))[_0x8fd5('0x50')](handleError(_0x3c3a93,null));};exports['getItems']=function(_0x4b7330,_0x4e5db6,_0x58e4ac){var _0x219a84={};var _0xf8cd04={};var _0x5c8ede;var _0x2b414b;return db[_0x8fd5('0x33')][_0x8fd5('0x7a')]({'where':{'id':_0x4b7330[_0x8fd5('0x5a')]['id']}})[_0x8fd5('0x29')](handleEntityNotFound(_0x4e5db6,null))[_0x8fd5('0x29')](function(_0x5ac3ae){if(_0x5ac3ae){_0x5c8ede=_0x5ac3ae;_0xf8cd04['model']=_['keys'](db['DashboardItem'][_0x8fd5('0x34')]);_0xf8cd04['query']=_[_0x8fd5('0x3a')](_0x4b7330[_0x8fd5('0x39')]);_0xf8cd04['filters']=_[_0x8fd5('0x3c')](_0xf8cd04[_0x8fd5('0x38')],_0xf8cd04[_0x8fd5('0x39')]);_0x219a84['attributes']=_[_0x8fd5('0x3c')](_0xf8cd04[_0x8fd5('0x38')],qs[_0x8fd5('0x3d')](_0x4b7330[_0x8fd5('0x39')]['fields']));_0x219a84['attributes']=_0x219a84[_0x8fd5('0x3e')]['length']?_0x219a84['attributes']:_0xf8cd04[_0x8fd5('0x38')];_0x219a84[_0x8fd5('0x42')]=qs[_0x8fd5('0x43')](_0x4b7330[_0x8fd5('0x39')][_0x8fd5('0x43')]);_0x219a84[_0x8fd5('0x46')]=qs[_0x8fd5('0x3b')](_['pick'](_0x4b7330[_0x8fd5('0x39')],_0xf8cd04['filters']));if(_0x4b7330['query'][_0x8fd5('0x45')]){_0x219a84[_0x8fd5('0x46')]=_[_0x8fd5('0x47')](_0x219a84[_0x8fd5('0x46')],{'$or':_[_0x8fd5('0x32')](_0x219a84[_0x8fd5('0x3e')],function(_0x2f7d41){var _0x1bbafa={};_0x1bbafa[_0x2f7d41]={'$like':'%'+_0x4b7330[_0x8fd5('0x39')][_0x8fd5('0x45')]+'%'};return _0x1bbafa;})});}_0x219a84=_[_0x8fd5('0x47')]({},_0x219a84,_0x4b7330['options']);return _0x5c8ede[_0x8fd5('0x7b')](_0x219a84);}})[_0x8fd5('0x29')](function(_0xee69c){if(_0xee69c){_0x2b414b=_0xee69c[_0x8fd5('0x3f')];if(!_0x4b7330[_0x8fd5('0x39')][_0x8fd5('0x40')](_0x8fd5('0x41'))){_0x219a84[_0x8fd5('0x25')]=qs[_0x8fd5('0x25')](_0x4b7330[_0x8fd5('0x39')][_0x8fd5('0x25')]);_0x219a84[_0x8fd5('0x23')]=qs[_0x8fd5('0x23')](_0x4b7330['query'][_0x8fd5('0x23')]);}return _0x5c8ede[_0x8fd5('0x7b')](_0x219a84);}})[_0x8fd5('0x29')](function(_0x4cbbc5){if(_0x4cbbc5){return _0x4cbbc5?{'count':_0x2b414b,'rows':_0x4cbbc5}:null;}})['then'](respondWithResult(_0x4e5db6,null))[_0x8fd5('0x50')](handleError(_0x4e5db6,null));};
\ No newline at end of file
index b0a1784..397ef67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f88=['hasOwnProperty','exports','events','../../mysqldb','Dashboard','save','update','emit'];(function(_0x5ae216,_0x2a7681){var _0x19f39f=function(_0x15038e){while(--_0x15038e){_0x5ae216['push'](_0x5ae216['shift']());}};_0x19f39f(++_0x2a7681);}(_0x4f88,0x9a));var _0x84f8=function(_0x5e1e25,_0xdc1421){_0x5e1e25=_0x5e1e25-0x0;var _0x548e5f=_0x4f88[_0x5e1e25];return _0x548e5f;};'use strict';var EventEmitter=require(_0x84f8('0x0'));var Dashboard=require(_0x84f8('0x1'))['db'][_0x84f8('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x84f8('0x3'),'afterUpdate':_0x84f8('0x4'),'afterDestroy':'remove'};function emitEvent(_0x407ed1){return function(_0x31def4,_0x1b35aa,_0x5a230d){DashboardEvents[_0x84f8('0x5')](_0x407ed1+':'+_0x31def4['id'],_0x31def4);DashboardEvents[_0x84f8('0x5')](_0x407ed1,_0x31def4);_0x5a230d(null);};}for(var e in events){if(events[_0x84f8('0x6')](e)){var event=events[e];Dashboard['hook'](e,emitEvent(event));}}module[_0x84f8('0x7')]=DashboardEvents;
\ No newline at end of file
+var _0x457b=['save','update','remove','emit','hook','exports','Dashboard','setMaxListeners'];(function(_0x229fe3,_0x296f4e){var _0xb1a383=function(_0x201e35){while(--_0x201e35){_0x229fe3['push'](_0x229fe3['shift']());}};_0xb1a383(++_0x296f4e);}(_0x457b,0x1b6));var _0xb457=function(_0x3fe0fe,_0x3bdc49){_0x3fe0fe=_0x3fe0fe-0x0;var _0x5c11f4=_0x457b[_0x3fe0fe];return _0x5c11f4;};'use strict';var EventEmitter=require('events');var Dashboard=require('../../mysqldb')['db'][_0xb457('0x0')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xb457('0x1')](0x0);var events={'afterCreate':_0xb457('0x2'),'afterUpdate':_0xb457('0x3'),'afterDestroy':_0xb457('0x4')};function emitEvent(_0x1cad27){return function(_0x134d98,_0x4a2a23,_0x31dbc0){DashboardEvents[_0xb457('0x5')](_0x1cad27+':'+_0x134d98['id'],_0x134d98);DashboardEvents['emit'](_0x1cad27,_0x134d98);_0x31dbc0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0xb457('0x6')](e,emitEvent(event));}}module[_0xb457('0x7')]=DashboardEvents;
\ No newline at end of file
index 55d64f0..f0372aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed4b=['path','rimraf','../../config/environment','exports','define','Dashboard','dashboards','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x2cbfeb,_0x2d0b71){var _0x38b7fa=function(_0x2fb7e5){while(--_0x2fb7e5){_0x2cbfeb['push'](_0x2cbfeb['shift']());}};_0x38b7fa(++_0x2d0b71);}(_0xed4b,0x96));var _0xbed4=function(_0x4f4a7e,_0x491a73){_0x4f4a7e=_0x4f4a7e-0x0;var _0x55d763=_0xed4b[_0x4f4a7e];return _0x55d763;};'use strict';var _=require(_0xbed4('0x0'));var util=require(_0xbed4('0x1'));var logger=require(_0xbed4('0x2'))('api');var moment=require(_0xbed4('0x3'));var BPromise=require(_0xbed4('0x4'));var rp=require(_0xbed4('0x5'));var fs=require('fs');var path=require(_0xbed4('0x6'));var rimraf=require(_0xbed4('0x7'));var config=require(_0xbed4('0x8'));var attributes=require('./dashboard.attributes');module[_0xbed4('0x9')]=function(_0xf71a47,_0x403756){return _0xf71a47[_0xbed4('0xa')](_0xbed4('0xb'),attributes,{'tableName':_0xbed4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf67d=['request-promise','path','rimraf','../../config/environment','./dashboard.attributes','exports','Dashboard','dashboards','bluebird'];(function(_0x4f8dbe,_0x366913){var _0x516e52=function(_0x1004da){while(--_0x1004da){_0x4f8dbe['push'](_0x4f8dbe['shift']());}};_0x516e52(++_0x366913);}(_0xf67d,0x182));var _0xdf67=function(_0x545cf0,_0x4c66fa){_0x545cf0=_0x545cf0-0x0;var _0x1f9bae=_0xf67d[_0x545cf0];return _0x1f9bae;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xdf67('0x0'));var rp=require(_0xdf67('0x1'));var fs=require('fs');var path=require(_0xdf67('0x2'));var rimraf=require(_0xdf67('0x3'));var config=require(_0xdf67('0x4'));var attributes=require(_0xdf67('0x5'));module[_0xdf67('0x6')]=function(_0x4ee71e,_0x55c0bc){return _0x4ee71e['define'](_0xdf67('0x7'),attributes,{'tableName':_0xdf67('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1729b40..3138e26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd818=['request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','redis','localhost','socket.io-emitter','./dashboard.socket'];(function(_0x160790,_0x136b54){var _0x31031d=function(_0x340da2){while(--_0x340da2){_0x160790['push'](_0x160790['shift']());}};_0x31031d(++_0x136b54);}(_0xd818,0x1a3));var _0x8d81=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0xd818[_0x45d55e];return _0x29812a;};'use strict';var _=require('lodash');var util=require(_0x8d81('0x0'));var moment=require(_0x8d81('0x1'));var BPromise=require(_0x8d81('0x2'));var rs=require(_0x8d81('0x3'));var fs=require('fs');var Redis=require(_0x8d81('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8d81('0x5'));var logger=require(_0x8d81('0x6'))('rpc');var config=require(_0x8d81('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x8d81('0x8')]['http']({'port':0x232a});config[_0x8d81('0x9')]=_['defaults'](config['redis'],{'host':_0x8d81('0xa'),'port':0x18eb});var socket=require(_0x8d81('0xb'))(new Redis(config[_0x8d81('0x9')]));require(_0x8d81('0xc'))['register'](socket);function respondWithRpcPromise(_0x233830,_0xa95651,_0x1cf576){return new BPromise(function(_0x2048c3,_0x567e75){return client[_0x8d81('0xd')](_0x233830,_0x1cf576)[_0x8d81('0xe')](function(_0x5817c1){logger[_0x8d81('0xf')](_0x8d81('0x10'),_0xa95651,_0x8d81('0x11'));logger[_0x8d81('0x12')](_0x8d81('0x13'),_0xa95651,_0x8d81('0x11'),JSON[_0x8d81('0x14')](_0x5817c1));if(_0x5817c1[_0x8d81('0x15')]){if(_0x5817c1[_0x8d81('0x15')]['code']===0x1f4){logger['error'](_0x8d81('0x10'),_0xa95651,_0x5817c1[_0x8d81('0x15')][_0x8d81('0x16')]);return _0x567e75(_0x5817c1['error']['message']);}logger['error']('Dashboard,\x20%s,\x20%s',_0xa95651,_0x5817c1['error'][_0x8d81('0x16')]);return _0x2048c3(_0x5817c1[_0x8d81('0x15')][_0x8d81('0x16')]);}else{logger[_0x8d81('0xf')](_0x8d81('0x10'),_0xa95651,_0x8d81('0x11'));_0x2048c3(_0x5817c1['result'][_0x8d81('0x16')]);}})[_0x8d81('0x17')](function(_0x1fd8cd){logger['error'](_0x8d81('0x10'),_0xa95651,_0x1fd8cd);_0x567e75(_0x1fd8cd);});});}
\ No newline at end of file
+var _0x45f9=['redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','request','then','info','debug','Dashboard,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','Dashboard,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','jayson/promise','client'];(function(_0x46a97d,_0x4864d5){var _0x47d7b0=function(_0x5b1ade){while(--_0x5b1ade){_0x46a97d['push'](_0x46a97d['shift']());}};_0x47d7b0(++_0x4864d5);}(_0x45f9,0x1e6));var _0x945f=function(_0xa77aff,_0x1f013c){_0xa77aff=_0xa77aff-0x0;var _0xf2dd26=_0x45f9[_0xa77aff];return _0xf2dd26;};'use strict';var _=require('lodash');var util=require(_0x945f('0x0'));var moment=require(_0x945f('0x1'));var BPromise=require(_0x945f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x945f('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x945f('0x4'));var logger=require(_0x945f('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x945f('0x6'));var client=jayson[_0x945f('0x7')]['http']({'port':0x232a});config[_0x945f('0x8')]=_[_0x945f('0x9')](config['redis'],{'host':_0x945f('0xa'),'port':0x18eb});var socket=require(_0x945f('0xb'))(new Redis(config[_0x945f('0x8')]));require(_0x945f('0xc'))[_0x945f('0xd')](socket);function respondWithRpcPromise(_0x487adf,_0x296a3b,_0x50bbf1){return new BPromise(function(_0x37a665,_0x305f24){return client[_0x945f('0xe')](_0x487adf,_0x50bbf1)[_0x945f('0xf')](function(_0x4e65f2){logger[_0x945f('0x10')]('Dashboard,\x20%s,\x20%s',_0x296a3b,'request\x20sent');logger[_0x945f('0x11')](_0x945f('0x12'),_0x296a3b,_0x945f('0x13'),JSON[_0x945f('0x14')](_0x4e65f2));if(_0x4e65f2['error']){if(_0x4e65f2[_0x945f('0x15')]['code']===0x1f4){logger[_0x945f('0x15')](_0x945f('0x16'),_0x296a3b,_0x4e65f2[_0x945f('0x15')][_0x945f('0x17')]);return _0x305f24(_0x4e65f2[_0x945f('0x15')][_0x945f('0x17')]);}logger[_0x945f('0x15')]('Dashboard,\x20%s,\x20%s',_0x296a3b,_0x4e65f2[_0x945f('0x15')][_0x945f('0x17')]);return _0x37a665(_0x4e65f2[_0x945f('0x15')][_0x945f('0x17')]);}else{logger[_0x945f('0x10')]('Dashboard,\x20%s,\x20%s',_0x296a3b,_0x945f('0x13'));_0x37a665(_0x4e65f2[_0x945f('0x18')][_0x945f('0x17')]);}})[_0x945f('0x19')](function(_0x3bc3b3){logger[_0x945f('0x15')](_0x945f('0x16'),_0x296a3b,_0x3bc3b3);_0x305f24(_0x3bc3b3);});});}
\ No newline at end of file
index e418a89..f2f0861 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82b1=['save','emit','removeListener','register','length','dashboard:','./dashboard.events'];(function(_0x1f9aa5,_0x3647b1){var _0x31b855=function(_0x2a6835){while(--_0x2a6835){_0x1f9aa5['push'](_0x1f9aa5['shift']());}};_0x31b855(++_0x3647b1);}(_0x82b1,0x1b8));var _0x182b=function(_0x4c9d24,_0x4b431d){_0x4c9d24=_0x4c9d24-0x0;var _0x147083=_0x82b1[_0x4c9d24];return _0x147083;};'use strict';var DashboardEvents=require(_0x182b('0x0'));var events=[_0x182b('0x1'),'remove','update'];function createListener(_0x5c868a,_0x3543b6){return function(_0xc607cd){_0x3543b6[_0x182b('0x2')](_0x5c868a,_0xc607cd);};}function removeListener(_0x147b83,_0x5a85d8){return function(){DashboardEvents[_0x182b('0x3')](_0x147b83,_0x5a85d8);};}exports[_0x182b('0x4')]=function(_0x12a607){for(var _0x406943=0x0,_0x22f321=events[_0x182b('0x5')];_0x406943<_0x22f321;_0x406943++){var _0x49c34f=events[_0x406943];var _0x2f60d9=createListener(_0x182b('0x6')+_0x49c34f,_0x12a607);DashboardEvents['on'](_0x49c34f,_0x2f60d9);}};
\ No newline at end of file
+var _0x9d73=['update','emit','register','length','dashboard:','./dashboard.events','save','remove'];(function(_0x4b49c9,_0x290d55){var _0xab2d67=function(_0x3a8e9c){while(--_0x3a8e9c){_0x4b49c9['push'](_0x4b49c9['shift']());}};_0xab2d67(++_0x290d55);}(_0x9d73,0xbd));var _0x39d7=function(_0xcc08e5,_0x1e52cb){_0xcc08e5=_0xcc08e5-0x0;var _0x44cdac=_0x9d73[_0xcc08e5];return _0x44cdac;};'use strict';var DashboardEvents=require(_0x39d7('0x0'));var events=[_0x39d7('0x1'),_0x39d7('0x2'),_0x39d7('0x3')];function createListener(_0x117969,_0xdf9751){return function(_0x13815d){_0xdf9751[_0x39d7('0x4')](_0x117969,_0x13815d);};}function removeListener(_0x1b681b,_0x5bf38d){return function(){DashboardEvents['removeListener'](_0x1b681b,_0x5bf38d);};}exports[_0x39d7('0x5')]=function(_0x5da51b){for(var _0x43ff1a=0x0,_0x3cfe5a=events[_0x39d7('0x6')];_0x43ff1a<_0x3cfe5a;_0x43ff1a++){var _0x4f9aa1=events[_0x43ff1a];var _0x4cf0b3=createListener(_0x39d7('0x7')+_0x4f9aa1,_0x5da51b);DashboardEvents['on'](_0x4f9aa1,_0x4cf0b3);}};
\ No newline at end of file
index c59bf8a..75457a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa057=['addItem','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','/:id','isAuthenticated','show','/:id/items','post','create','clone'];(function(_0x466db1,_0x3c4f0){var _0x46cd35=function(_0x273362){while(--_0x273362){_0x466db1['push'](_0x466db1['shift']());}};_0x46cd35(++_0x3c4f0);}(_0xa057,0x17f));var _0x7a05=function(_0x295690,_0x22a90f){_0x295690=_0x295690-0x0;var _0x6693ca=_0xa057[_0x295690];return _0x6693ca;};'use strict';var multer=require(_0x7a05('0x0'));var util=require(_0x7a05('0x1'));var path=require(_0x7a05('0x2'));var timeout=require(_0x7a05('0x3'));var express=require(_0x7a05('0x4'));var router=express[_0x7a05('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x7a05('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x7a05('0x7'));var controller=require('./dashboard.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x7a05('0x8')](_0x7a05('0x9'),auth[_0x7a05('0xa')](),controller[_0x7a05('0xb')]);router['get'](_0x7a05('0xc'),auth['isAuthenticated'](),controller['getItems']);router[_0x7a05('0xd')]('/',auth[_0x7a05('0xa')](),controller[_0x7a05('0xe')]);router[_0x7a05('0xd')]('/:id/clone',auth[_0x7a05('0xa')](),controller[_0x7a05('0xf')]);router[_0x7a05('0xd')](_0x7a05('0xc'),auth[_0x7a05('0xa')](),controller[_0x7a05('0x10')]);router[_0x7a05('0x11')](_0x7a05('0x9'),auth['isAuthenticated'](),controller[_0x7a05('0x12')]);router[_0x7a05('0x13')](_0x7a05('0x9'),auth[_0x7a05('0xa')](),controller['destroy']);module[_0x7a05('0x14')]=router;
\ No newline at end of file
+var _0x11e3=['/:id/items','create','post','/:id/clone','clone','addItem','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','get','isAuthenticated','/:id','show'];(function(_0x1c0763,_0x4e0420){var _0x49901d=function(_0x3258ef){while(--_0x3258ef){_0x1c0763['push'](_0x1c0763['shift']());}};_0x49901d(++_0x4e0420);}(_0x11e3,0xa1));var _0x311e=function(_0x3200a8,_0x275166){_0x3200a8=_0x3200a8-0x0;var _0x288129=_0x11e3[_0x3200a8];return _0x288129;};'use strict';var multer=require(_0x311e('0x0'));var util=require(_0x311e('0x1'));var path=require(_0x311e('0x2'));var timeout=require(_0x311e('0x3'));var express=require('express');var router=express[_0x311e('0x4')]();var fs_extra=require(_0x311e('0x5'));var auth=require(_0x311e('0x6'));var interaction=require(_0x311e('0x7'));var config=require(_0x311e('0x8'));var controller=require(_0x311e('0x9'));router[_0x311e('0xa')]('/',auth[_0x311e('0xb')](),controller['index']);router[_0x311e('0xa')](_0x311e('0xc'),auth['isAuthenticated'](),controller[_0x311e('0xd')]);router['get'](_0x311e('0xe'),auth[_0x311e('0xb')](),controller['getItems']);router['post']('/',auth[_0x311e('0xb')](),controller[_0x311e('0xf')]);router[_0x311e('0x10')](_0x311e('0x11'),auth[_0x311e('0xb')](),controller[_0x311e('0x12')]);router[_0x311e('0x10')]('/:id/items',auth[_0x311e('0xb')](),controller[_0x311e('0x13')]);router[_0x311e('0x14')](_0x311e('0xc'),auth['isAuthenticated'](),controller[_0x311e('0x15')]);router[_0x311e('0x16')](_0x311e('0xc'),auth[_0x311e('0xb')](),controller[_0x311e('0x17')]);module[_0x311e('0x18')]=router;
\ No newline at end of file
index a7e9068..d0cd994 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31f0=['INTEGER','#ffffff','#2196f3','sequelize','lodash','STRING','TEXT','long','getDataValue','attrs','setDataValue','stringify'];(function(_0x5f1ccc,_0x2c6f09){var _0x34a570=function(_0x254a55){while(--_0x254a55){_0x5f1ccc['push'](_0x5f1ccc['shift']());}};_0x34a570(++_0x2c6f09);}(_0x31f0,0xb7));var _0x031f=function(_0x53fd2c,_0x5cc1da){_0x53fd2c=_0x53fd2c-0x0;var _0x3a919f=_0x31f0[_0x53fd2c];return _0x3a919f;};'use strict';var Sequelize=require(_0x031f('0x0'));var squel=require('squel');var _=require(_0x031f('0x1'));module['exports']={'title':{'type':Sequelize[_0x031f('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x031f('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x031f('0x3')](_0x031f('0x4')),'get':function(){try{return JSON['parse'](this[_0x031f('0x5')](_0x031f('0x6')));}catch(_0x4f6059){return[];}},'set':function(_0x4c0f94){try{this['setDataValue'](_0x031f('0x6'),JSON['stringify'](_0x4c0f94));}catch(_0x365f59){this[_0x031f('0x7')](_0x031f('0x6'),JSON[_0x031f('0x8')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x031f('0x9')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x031f('0x9')]},'col':{'type':Sequelize[_0x031f('0x9')]},'background':{'type':Sequelize[_0x031f('0x2')],'allowNull':![],'defaultValue':_0x031f('0xa'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x031f('0x2')],'allowNull':![],'defaultValue':_0x031f('0xb'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x031f('0x2')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
+var _0xe2fe=['setDataValue','INTEGER','sequelize','exports','STRING','TEXT','long','parse','getDataValue','attrs','stringify'];(function(_0x44cec1,_0x57836e){var _0xe57a17=function(_0x3d1827){while(--_0x3d1827){_0x44cec1['push'](_0x44cec1['shift']());}};_0xe57a17(++_0x57836e);}(_0xe2fe,0x86));var _0xee2f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe2fe[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xee2f('0x0'));var squel=require('squel');var _=require('lodash');module[_0xee2f('0x1')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xee2f('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0xee2f('0x3')](_0xee2f('0x4')),'get':function(){try{return JSON[_0xee2f('0x5')](this[_0xee2f('0x6')]('attrs'));}catch(_0x311a2f){return[];}},'set':function(_0x2b7e7c){try{this['setDataValue'](_0xee2f('0x7'),JSON[_0xee2f('0x8')](_0x2b7e7c));}catch(_0x5a7975){this[_0xee2f('0x9')]('attrs',JSON[_0xee2f('0x8')]([]));}}},'sizeX':{'type':Sequelize[_0xee2f('0xa')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0xee2f('0xa')]},'col':{'type':Sequelize[_0xee2f('0xa')]},'background':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0xee2f('0x2')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
index 0b7e491..4c1912c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9a7=['attrSerie2','attrSerie3','web-report','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','update','then','destroy','error','stack','name','send','show','params','model','DashboardItem','rawAttributes','keys','query','filters','attributes','intersection','fields','includeAll','include','merge','find','catch','type','attrUrl','value','custom','attrPath','attrs','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1'];(function(_0x54c516,_0x420575){var _0x2583c0=function(_0x4171e4){while(--_0x4171e4){_0x54c516['push'](_0x54c516['shift']());}};_0x2583c0(++_0x420575);}(_0xb9a7,0x66));var _0x7b9a=function(_0x4ff09b,_0x53f67d){_0x4ff09b=_0x4ff09b-0x0;var _0x3f5c2e=_0xb9a7[_0x4ff09b];return _0x3f5c2e;};'use strict';var emlformat=require(_0x7b9a('0x0'));var rimraf=require(_0x7b9a('0x1'));var zipdir=require(_0x7b9a('0x2'));var jsonpatch=require(_0x7b9a('0x3'));var rp=require(_0x7b9a('0x4'));var moment=require(_0x7b9a('0x5'));var BPromise=require(_0x7b9a('0x6'));var Mustache=require(_0x7b9a('0x7'));var util=require(_0x7b9a('0x8'));var path=require(_0x7b9a('0x9'));var sox=require(_0x7b9a('0xa'));var csv=require(_0x7b9a('0xb'));var ejs=require(_0x7b9a('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7b9a('0xd'));var squel=require('squel');var crypto=require(_0x7b9a('0xe'));var jsforce=require(_0x7b9a('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x7b9a('0xb'));var querystring=require(_0x7b9a('0x10'));var Papa=require(_0x7b9a('0x11'));var Redis=require(_0x7b9a('0x12'));var authService=require(_0x7b9a('0x13'));var qs=require(_0x7b9a('0x14'));var as=require(_0x7b9a('0x15'));var hardwareService=require(_0x7b9a('0x16'));var logger=require(_0x7b9a('0x17'))(_0x7b9a('0x18'));var utils=require('../../config/utils');var config=require(_0x7b9a('0x19'));var licenseUtil=require(_0x7b9a('0x1a'));var db=require(_0x7b9a('0x1b'))['db'];config[_0x7b9a('0x1c')]=_['defaults'](config[_0x7b9a('0x1c')],{'host':_0x7b9a('0x1d'),'port':0x18eb});var socket=require(_0x7b9a('0x1e'))(new Redis(config[_0x7b9a('0x1c')]));require('./dashboardItem.socket')[_0x7b9a('0x1f')](socket);function respondWithStatusCode(_0x45536d,_0x4e9421){_0x4e9421=_0x4e9421||0xcc;return function(_0x5bdf7e){if(_0x5bdf7e){return _0x45536d[_0x7b9a('0x20')](_0x4e9421);}return _0x45536d[_0x7b9a('0x21')](_0x4e9421)[_0x7b9a('0x22')]();};}function respondWithResult(_0x48f20f,_0x2d2452){_0x2d2452=_0x2d2452||0xc8;return function(_0x2af91e){if(_0x2af91e){return _0x48f20f[_0x7b9a('0x21')](_0x2d2452)['json'](_0x2af91e);}};}function respondWithFilteredResult(_0xc1e8db,_0x2daaad){return function(_0x3b8d10){if(_0x3b8d10){var _0x32aa4f=typeof _0x2daaad[_0x7b9a('0x23')]===_0x7b9a('0x24')&&typeof _0x2daaad[_0x7b9a('0x25')]==='undefined';var _0x34edc1=_0x3b8d10['count'];var _0x4cca6d=_0x32aa4f?0x0:_0x2daaad[_0x7b9a('0x23')];var _0x15c28e=_0x32aa4f?_0x3b8d10[_0x7b9a('0x26')]:_0x2daaad[_0x7b9a('0x23')]+_0x2daaad['limit'];var _0x509fc0;if(_0x15c28e>=_0x34edc1){_0x15c28e=_0x34edc1;_0x509fc0=0xc8;}else{_0x509fc0=0xce;}_0xc1e8db[_0x7b9a('0x21')](_0x509fc0);return _0xc1e8db[_0x7b9a('0x27')](_0x7b9a('0x28'),_0x4cca6d+'-'+_0x15c28e+'/'+_0x34edc1)[_0x7b9a('0x29')](_0x3b8d10);}return null;};}function patchUpdates(_0x1a86c9){return function(_0x2a0d95){try{jsonpatch['apply'](_0x2a0d95,_0x1a86c9,!![]);}catch(_0x452f1b){return BPromise[_0x7b9a('0x2a')](_0x452f1b);}return _0x2a0d95['save']();};}function saveUpdates(_0x15e6f8,_0x594135){return function(_0x47fdf9){if(_0x47fdf9){return _0x47fdf9[_0x7b9a('0x2b')](_0x15e6f8)[_0x7b9a('0x2c')](function(_0x5f35ca){return _0x5f35ca;});}return null;};}function removeEntity(_0x7b14b6,_0x502708){return function(_0x2334d0){if(_0x2334d0){return _0x2334d0[_0x7b9a('0x2d')]()[_0x7b9a('0x2c')](function(){_0x7b14b6[_0x7b9a('0x21')](0xcc)[_0x7b9a('0x22')]();});}};}function handleEntityNotFound(_0xb19071,_0x5e722e){return function(_0x29bc7e){if(!_0x29bc7e){_0xb19071[_0x7b9a('0x20')](0x194);}return _0x29bc7e;};}function handleError(_0x197e23,_0x1de459){_0x1de459=_0x1de459||0x1f4;return function(_0x2e4d86){logger[_0x7b9a('0x2e')](_0x2e4d86[_0x7b9a('0x2f')]);if(_0x2e4d86[_0x7b9a('0x30')]){delete _0x2e4d86[_0x7b9a('0x30')];}_0x197e23['status'](_0x1de459)[_0x7b9a('0x31')](_0x2e4d86);};}exports[_0x7b9a('0x32')]=function(_0x1053d5,_0x18aaeb){var _0x5d9e7f={'raw':![],'where':{'id':_0x1053d5[_0x7b9a('0x33')]['id']}},_0x406873={};_0x406873[_0x7b9a('0x34')]=_['keys'](db[_0x7b9a('0x35')][_0x7b9a('0x36')]);_0x406873['query']=_[_0x7b9a('0x37')](_0x1053d5[_0x7b9a('0x38')]);_0x406873[_0x7b9a('0x39')]=_['intersection'](_0x406873['model'],_0x406873[_0x7b9a('0x38')]);_0x5d9e7f[_0x7b9a('0x3a')]=_[_0x7b9a('0x3b')](_0x406873[_0x7b9a('0x34')],qs[_0x7b9a('0x3c')](_0x1053d5[_0x7b9a('0x38')]['fields']));_0x5d9e7f['attributes']=_0x5d9e7f['attributes']['length']?_0x5d9e7f[_0x7b9a('0x3a')]:_0x406873[_0x7b9a('0x34')];if(_0x1053d5[_0x7b9a('0x38')][_0x7b9a('0x3d')]){_0x5d9e7f[_0x7b9a('0x3e')]=[{'all':!![]}];}_0x5d9e7f=_[_0x7b9a('0x3f')]({},_0x5d9e7f,_0x1053d5['options']);return db[_0x7b9a('0x35')][_0x7b9a('0x40')](_0x5d9e7f)[_0x7b9a('0x2c')](handleEntityNotFound(_0x18aaeb,null))[_0x7b9a('0x2c')](respondWithResult(_0x18aaeb,null))['catch'](handleError(_0x18aaeb,null));};exports[_0x7b9a('0x2d')]=function(_0xf94332,_0x2bb370){return db[_0x7b9a('0x35')][_0x7b9a('0x40')]({'where':{'id':_0xf94332[_0x7b9a('0x33')]['id']}})[_0x7b9a('0x2c')](handleEntityNotFound(_0x2bb370,null))['then'](removeEntity(_0x2bb370,null))[_0x7b9a('0x41')](handleError(_0x2bb370,null));};function widgetAttributes(_0x38e47c){try{switch(_0x38e47c[_0x7b9a('0x42')]){case'iframe':return[{'name':_0x7b9a('0x43'),'value':_0x38e47c[_0x7b9a('0x43')]||(_0x38e47c['attrs']&&_0x38e47c['attrs'][0x0]?_0x38e47c['attrs'][0x0][_0x7b9a('0x44')]:undefined)||'https://'}];case _0x7b9a('0x45'):return[{'name':_0x7b9a('0x46'),'value':_0x38e47c[_0x7b9a('0x46')]||(_0x38e47c[_0x7b9a('0x47')]&&_0x38e47c[_0x7b9a('0x47')][0x0]?_0x38e47c[_0x7b9a('0x47')][0x0][_0x7b9a('0x44')]:undefined)||''}];case _0x7b9a('0x48'):return[{'name':_0x7b9a('0x49'),'value':_0x38e47c['attrHourFormat']||(_0x38e47c[_0x7b9a('0x47')]&&_0x38e47c['attrs'][0x0]?_0x38e47c[_0x7b9a('0x47')][0x0]['value']:undefined)||'HH:mm:ss'},{'name':'attrTimezone','value':_0x38e47c[_0x7b9a('0x4a')]||(_0x38e47c[_0x7b9a('0x47')]&&_0x38e47c['attrs'][0x1]?_0x38e47c[_0x7b9a('0x47')][0x1][_0x7b9a('0x44')]:undefined)||_0x7b9a('0x4b')},{'name':_0x7b9a('0x4c'),'value':_0x38e47c['attrFontSize']||(_0x38e47c['attrs']&&_0x38e47c[_0x7b9a('0x47')][0x2]?_0x38e47c[_0x7b9a('0x47')][0x2][_0x7b9a('0x44')]:undefined)||0xc}];case _0x7b9a('0x4d'):return[{'name':_0x7b9a('0x4e'),'value':_0x38e47c[_0x7b9a('0x4e')]||(_0x38e47c['attrs']&&_0x38e47c[_0x7b9a('0x47')][0x0]?_0x38e47c[_0x7b9a('0x47')][0x0]['value']:undefined)||_0x7b9a('0x4f')},{'name':_0x7b9a('0x50'),'value':_0x38e47c['attrVoiceQueues']||(_0x38e47c[_0x7b9a('0x47')]&&_0x38e47c[_0x7b9a('0x47')][0x1]?_0x38e47c['attrs'][0x1][_0x7b9a('0x44')]:undefined)||[]},{'name':_0x7b9a('0x4c'),'value':_0x38e47c[_0x7b9a('0x4c')]||(_0x38e47c[_0x7b9a('0x47')]&&_0x38e47c['attrs'][0x2]?_0x38e47c[_0x7b9a('0x47')][0x2][_0x7b9a('0x44')]:undefined)||0x14}];case _0x7b9a('0x51'):case _0x7b9a('0x52'):return[{'name':_0x7b9a('0x53'),'value':_0x38e47c[_0x7b9a('0x53')]||(_0x38e47c[_0x7b9a('0x47')]&&_0x38e47c[_0x7b9a('0x47')][0x0]?_0x38e47c[_0x7b9a('0x47')][0x0][_0x7b9a('0x44')]:undefined)||_0x7b9a('0x4f')},{'name':'attrSerie2','value':_0x38e47c[_0x7b9a('0x54')]||(_0x38e47c['attrs']&&_0x38e47c[_0x7b9a('0x47')][0x1]?_0x38e47c[_0x7b9a('0x47')][0x1][_0x7b9a('0x44')]:undefined)||null},{'name':_0x7b9a('0x55'),'value':_0x38e47c['attrSerie3']||(_0x38e47c[_0x7b9a('0x47')]&&_0x38e47c[_0x7b9a('0x47')][0x2]?_0x38e47c[_0x7b9a('0x47')][0x2]['value']:undefined)||null},{'name':_0x7b9a('0x50'),'value':_0x38e47c[_0x7b9a('0x50')]||(_0x38e47c[_0x7b9a('0x47')]&&_0x38e47c[_0x7b9a('0x47')][0x3]?_0x38e47c[_0x7b9a('0x47')][0x3]['value']:undefined)||[]}];case _0x7b9a('0x56'):return[{'name':'attrReport','type':_0x38e47c[_0x7b9a('0x57')]||(_0x38e47c[_0x7b9a('0x47')]&&_0x38e47c['attrs'][0x0]?_0x38e47c[_0x7b9a('0x47')][0x0][_0x7b9a('0x42')]:undefined)||null,'value':_0x38e47c['attrReport']||(_0x38e47c[_0x7b9a('0x47')]&&_0x38e47c[_0x7b9a('0x47')][0x0]?_0x38e47c[_0x7b9a('0x47')][0x0][_0x7b9a('0x44')]:undefined)||null},{'name':'attrRefresh','value':_0x38e47c[_0x7b9a('0x58')]||(_0x38e47c[_0x7b9a('0x47')]&&_0x38e47c['attrs'][0x1]?_0x38e47c[_0x7b9a('0x47')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x2c998e){logger['error'](_0x7b9a('0x59'),JSON[_0x7b9a('0x5a')](_0x2c998e));return[];}}exports[_0x7b9a('0x5b')]=function(_0x46602f,_0x141718){if(_0x46602f[_0x7b9a('0x5c')]){_0x46602f[_0x7b9a('0x5c')][_0x7b9a('0x47')]=widgetAttributes(_0x46602f[_0x7b9a('0x5c')]);}return db['DashboardItem'][_0x7b9a('0x5b')](_0x46602f[_0x7b9a('0x5c')],{})['then'](respondWithResult(_0x141718,0xc9))[_0x7b9a('0x41')](handleError(_0x141718,null));};exports['update']=function(_0x299371,_0x1f4872){if(_0x299371[_0x7b9a('0x5c')]['id']){delete _0x299371[_0x7b9a('0x5c')]['id'];}_0x299371['body'][_0x7b9a('0x47')]=widgetAttributes(_0x299371[_0x7b9a('0x5c')]);return db[_0x7b9a('0x35')][_0x7b9a('0x40')]({'where':{'id':_0x299371[_0x7b9a('0x33')]['id']}})[_0x7b9a('0x2c')](handleEntityNotFound(_0x1f4872,null))[_0x7b9a('0x2c')](saveUpdates(_0x299371[_0x7b9a('0x5c')],null))['then'](respondWithResult(_0x1f4872,null))[_0x7b9a('0x41')](handleError(_0x1f4872,null));};
\ No newline at end of file
+var _0x65ba=['type','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','attrSerie1','attrSerie2','web-report','reportType','attrReport','attrRefresh','stringify','body','create','update','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','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','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','end','offset','undefined','count','Content-Range','apply','reject','save','then','destroy','error','stack','name','show','params','model','keys','DashboardItem','query','filters','intersection','fields','attributes','length','includeAll','include','merge','options','find','catch'];(function(_0x7e53f6,_0x1ce89b){var _0x4ce9fc=function(_0x13019c){while(--_0x13019c){_0x7e53f6['push'](_0x7e53f6['shift']());}};_0x4ce9fc(++_0x1ce89b);}(_0x65ba,0x13c));var _0xa65b=function(_0xa5373d,_0x3a8ec9){_0xa5373d=_0xa5373d-0x0;var _0x192973=_0x65ba[_0xa5373d];return _0x192973;};'use strict';var emlformat=require(_0xa65b('0x0'));var rimraf=require(_0xa65b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa65b('0x2'));var rp=require(_0xa65b('0x3'));var moment=require(_0xa65b('0x4'));var BPromise=require(_0xa65b('0x5'));var Mustache=require(_0xa65b('0x6'));var util=require(_0xa65b('0x7'));var path=require('path');var sox=require(_0xa65b('0x8'));var csv=require(_0xa65b('0x9'));var ejs=require(_0xa65b('0xa'));var fs=require('fs');var fs_extra=require(_0xa65b('0xb'));var _=require(_0xa65b('0xc'));var squel=require(_0xa65b('0xd'));var crypto=require(_0xa65b('0xe'));var jsforce=require(_0xa65b('0xf'));var deskjs=require(_0xa65b('0x10'));var toCsv=require(_0xa65b('0x9'));var querystring=require(_0xa65b('0x11'));var Papa=require(_0xa65b('0x12'));var Redis=require(_0xa65b('0x13'));var authService=require(_0xa65b('0x14'));var qs=require(_0xa65b('0x15'));var as=require(_0xa65b('0x16'));var hardwareService=require(_0xa65b('0x17'));var logger=require(_0xa65b('0x18'))(_0xa65b('0x19'));var utils=require(_0xa65b('0x1a'));var config=require(_0xa65b('0x1b'));var licenseUtil=require(_0xa65b('0x1c'));var db=require(_0xa65b('0x1d'))['db'];config['redis']=_[_0xa65b('0x1e')](config[_0xa65b('0x1f')],{'host':_0xa65b('0x20'),'port':0x18eb});var socket=require(_0xa65b('0x21'))(new Redis(config[_0xa65b('0x1f')]));require(_0xa65b('0x22'))[_0xa65b('0x23')](socket);function respondWithStatusCode(_0x2d8009,_0x16e2f0){_0x16e2f0=_0x16e2f0||0xcc;return function(_0x31ad42){if(_0x31ad42){return _0x2d8009[_0xa65b('0x24')](_0x16e2f0);}return _0x2d8009[_0xa65b('0x25')](_0x16e2f0)[_0xa65b('0x26')]();};}function respondWithResult(_0x2da26e,_0x578661){_0x578661=_0x578661||0xc8;return function(_0x4c4e10){if(_0x4c4e10){return _0x2da26e[_0xa65b('0x25')](_0x578661)['json'](_0x4c4e10);}};}function respondWithFilteredResult(_0x49b175,_0x582b48){return function(_0x20bf65){if(_0x20bf65){var _0x471dcf=typeof _0x582b48[_0xa65b('0x27')]===_0xa65b('0x28')&&typeof _0x582b48['limit']===_0xa65b('0x28');var _0x550e55=_0x20bf65[_0xa65b('0x29')];var _0x1b0320=_0x471dcf?0x0:_0x582b48[_0xa65b('0x27')];var _0x55d2ad=_0x471dcf?_0x20bf65[_0xa65b('0x29')]:_0x582b48[_0xa65b('0x27')]+_0x582b48['limit'];var _0x51c793;if(_0x55d2ad>=_0x550e55){_0x55d2ad=_0x550e55;_0x51c793=0xc8;}else{_0x51c793=0xce;}_0x49b175['status'](_0x51c793);return _0x49b175['set'](_0xa65b('0x2a'),_0x1b0320+'-'+_0x55d2ad+'/'+_0x550e55)['json'](_0x20bf65);}return null;};}function patchUpdates(_0x16ebb3){return function(_0x457757){try{jsonpatch[_0xa65b('0x2b')](_0x457757,_0x16ebb3,!![]);}catch(_0x1244e0){return BPromise[_0xa65b('0x2c')](_0x1244e0);}return _0x457757[_0xa65b('0x2d')]();};}function saveUpdates(_0x21332e,_0x1ba577){return function(_0x10fb29){if(_0x10fb29){return _0x10fb29['update'](_0x21332e)[_0xa65b('0x2e')](function(_0xb1f439){return _0xb1f439;});}return null;};}function removeEntity(_0x48a0a8,_0xebf541){return function(_0x889d19){if(_0x889d19){return _0x889d19[_0xa65b('0x2f')]()[_0xa65b('0x2e')](function(){_0x48a0a8['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x59607f,_0x114da6){return function(_0x5d1015){if(!_0x5d1015){_0x59607f[_0xa65b('0x24')](0x194);}return _0x5d1015;};}function handleError(_0x290b1c,_0x2df515){_0x2df515=_0x2df515||0x1f4;return function(_0x7c05c4){logger[_0xa65b('0x30')](_0x7c05c4[_0xa65b('0x31')]);if(_0x7c05c4[_0xa65b('0x32')]){delete _0x7c05c4['name'];}_0x290b1c[_0xa65b('0x25')](_0x2df515)['send'](_0x7c05c4);};}exports[_0xa65b('0x33')]=function(_0x1e67cb,_0x3830f5){var _0x57628c={'raw':![],'where':{'id':_0x1e67cb[_0xa65b('0x34')]['id']}},_0x2a2473={};_0x2a2473[_0xa65b('0x35')]=_[_0xa65b('0x36')](db[_0xa65b('0x37')]['rawAttributes']);_0x2a2473[_0xa65b('0x38')]=_[_0xa65b('0x36')](_0x1e67cb[_0xa65b('0x38')]);_0x2a2473[_0xa65b('0x39')]=_[_0xa65b('0x3a')](_0x2a2473[_0xa65b('0x35')],_0x2a2473['query']);_0x57628c['attributes']=_['intersection'](_0x2a2473[_0xa65b('0x35')],qs[_0xa65b('0x3b')](_0x1e67cb[_0xa65b('0x38')][_0xa65b('0x3b')]));_0x57628c[_0xa65b('0x3c')]=_0x57628c[_0xa65b('0x3c')][_0xa65b('0x3d')]?_0x57628c['attributes']:_0x2a2473[_0xa65b('0x35')];if(_0x1e67cb[_0xa65b('0x38')][_0xa65b('0x3e')]){_0x57628c[_0xa65b('0x3f')]=[{'all':!![]}];}_0x57628c=_[_0xa65b('0x40')]({},_0x57628c,_0x1e67cb[_0xa65b('0x41')]);return db[_0xa65b('0x37')][_0xa65b('0x42')](_0x57628c)['then'](handleEntityNotFound(_0x3830f5,null))[_0xa65b('0x2e')](respondWithResult(_0x3830f5,null))[_0xa65b('0x43')](handleError(_0x3830f5,null));};exports[_0xa65b('0x2f')]=function(_0x39ddca,_0x741bbe){return db[_0xa65b('0x37')]['find']({'where':{'id':_0x39ddca['params']['id']}})[_0xa65b('0x2e')](handleEntityNotFound(_0x741bbe,null))['then'](removeEntity(_0x741bbe,null))['catch'](handleError(_0x741bbe,null));};function widgetAttributes(_0x3efca4){try{switch(_0x3efca4[_0xa65b('0x44')]){case _0xa65b('0x45'):return[{'name':'attrUrl','value':_0x3efca4[_0xa65b('0x46')]||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4['attrs'][0x0]?_0x3efca4[_0xa65b('0x47')][0x0][_0xa65b('0x48')]:undefined)||_0xa65b('0x49')}];case _0xa65b('0x4a'):return[{'name':_0xa65b('0x4b'),'value':_0x3efca4['attrPath']||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4[_0xa65b('0x47')][0x0]?_0x3efca4[_0xa65b('0x47')][0x0]['value']:undefined)||''}];case _0xa65b('0x4c'):return[{'name':_0xa65b('0x4d'),'value':_0x3efca4['attrHourFormat']||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4[_0xa65b('0x47')][0x0]?_0x3efca4[_0xa65b('0x47')][0x0][_0xa65b('0x48')]:undefined)||'HH:mm:ss'},{'name':_0xa65b('0x4e'),'value':_0x3efca4[_0xa65b('0x4e')]||(_0x3efca4['attrs']&&_0x3efca4[_0xa65b('0x47')][0x1]?_0x3efca4[_0xa65b('0x47')][0x1][_0xa65b('0x48')]:undefined)||_0xa65b('0x4f')},{'name':_0xa65b('0x50'),'value':_0x3efca4['attrFontSize']||(_0x3efca4['attrs']&&_0x3efca4[_0xa65b('0x47')][0x2]?_0x3efca4[_0xa65b('0x47')][0x2][_0xa65b('0x48')]:undefined)||0xc}];case _0xa65b('0x51'):return[{'name':'attrMetric','value':_0x3efca4[_0xa65b('0x52')]||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4[_0xa65b('0x47')][0x0]?_0x3efca4[_0xa65b('0x47')][0x0]['value']:undefined)||_0xa65b('0x53')},{'name':'attrVoiceQueues','value':_0x3efca4[_0xa65b('0x54')]||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4['attrs'][0x1]?_0x3efca4['attrs'][0x1][_0xa65b('0x48')]:undefined)||[]},{'name':_0xa65b('0x50'),'value':_0x3efca4[_0xa65b('0x50')]||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4[_0xa65b('0x47')][0x2]?_0x3efca4['attrs'][0x2][_0xa65b('0x48')]:undefined)||0x14}];case _0xa65b('0x55'):case'pie-chart':return[{'name':_0xa65b('0x56'),'value':_0x3efca4['attrSerie1']||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4[_0xa65b('0x47')][0x0]?_0x3efca4[_0xa65b('0x47')][0x0]['value']:undefined)||_0xa65b('0x53')},{'name':'attrSerie2','value':_0x3efca4[_0xa65b('0x57')]||(_0x3efca4['attrs']&&_0x3efca4['attrs'][0x1]?_0x3efca4['attrs'][0x1][_0xa65b('0x48')]:undefined)||null},{'name':'attrSerie3','value':_0x3efca4['attrSerie3']||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4['attrs'][0x2]?_0x3efca4['attrs'][0x2]['value']:undefined)||null},{'name':_0xa65b('0x54'),'value':_0x3efca4['attrVoiceQueues']||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4['attrs'][0x3]?_0x3efca4[_0xa65b('0x47')][0x3][_0xa65b('0x48')]:undefined)||[]}];case _0xa65b('0x58'):return[{'name':'attrReport','type':_0x3efca4[_0xa65b('0x59')]||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4[_0xa65b('0x47')][0x0]?_0x3efca4[_0xa65b('0x47')][0x0]['type']:undefined)||null,'value':_0x3efca4[_0xa65b('0x5a')]||(_0x3efca4['attrs']&&_0x3efca4[_0xa65b('0x47')][0x0]?_0x3efca4['attrs'][0x0]['value']:undefined)||null},{'name':_0xa65b('0x5b'),'value':_0x3efca4[_0xa65b('0x5b')]||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4[_0xa65b('0x47')][0x1]?_0x3efca4[_0xa65b('0x47')][0x1][_0xa65b('0x48')]:undefined)||0x0}];default:return[];}}catch(_0x280bea){logger[_0xa65b('0x30')]('widgetAttributes:\x20%s',JSON[_0xa65b('0x5c')](_0x280bea));return[];}}exports['create']=function(_0x2b9386,_0x2dd7d1){if(_0x2b9386[_0xa65b('0x5d')]){_0x2b9386[_0xa65b('0x5d')]['attrs']=widgetAttributes(_0x2b9386[_0xa65b('0x5d')]);}return db['DashboardItem'][_0xa65b('0x5e')](_0x2b9386[_0xa65b('0x5d')],{})['then'](respondWithResult(_0x2dd7d1,0xc9))[_0xa65b('0x43')](handleError(_0x2dd7d1,null));};exports[_0xa65b('0x5f')]=function(_0x3c596e,_0x1d4bc5){if(_0x3c596e[_0xa65b('0x5d')]['id']){delete _0x3c596e[_0xa65b('0x5d')]['id'];}_0x3c596e[_0xa65b('0x5d')][_0xa65b('0x47')]=widgetAttributes(_0x3c596e['body']);return db['DashboardItem'][_0xa65b('0x42')]({'where':{'id':_0x3c596e[_0xa65b('0x34')]['id']}})['then'](handleEntityNotFound(_0x1d4bc5,null))[_0xa65b('0x2e')](saveUpdates(_0x3c596e['body'],null))[_0xa65b('0x2e')](respondWithResult(_0x1d4bc5,null))[_0xa65b('0x43')](handleError(_0x1d4bc5,null));};
\ No newline at end of file
index 9cefc9a..9c45f3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb153=['remove','emit','hasOwnProperty','exports','events','DashboardItem','setMaxListeners','save','update'];(function(_0x1c9049,_0x38253b){var _0xa61d8f=function(_0x4efd1a){while(--_0x4efd1a){_0x1c9049['push'](_0x1c9049['shift']());}};_0xa61d8f(++_0x38253b);}(_0xb153,0x136));var _0x3b15=function(_0x43567a,_0x457ab1){_0x43567a=_0x43567a-0x0;var _0x23a704=_0xb153[_0x43567a];return _0x23a704;};'use strict';var EventEmitter=require(_0x3b15('0x0'));var DashboardItem=require('../../mysqldb')['db'][_0x3b15('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x3b15('0x2')](0x0);var events={'afterCreate':_0x3b15('0x3'),'afterUpdate':_0x3b15('0x4'),'afterDestroy':_0x3b15('0x5')};function emitEvent(_0x3b5a5d){return function(_0x626b70,_0x2d34b7,_0x509663){DashboardItemEvents[_0x3b15('0x6')](_0x3b5a5d+':'+_0x626b70['id'],_0x626b70);DashboardItemEvents['emit'](_0x3b5a5d,_0x626b70);_0x509663(null);};}for(var e in events){if(events[_0x3b15('0x7')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module[_0x3b15('0x8')]=DashboardItemEvents;
\ No newline at end of file
+var _0xde97=['hook','exports','DashboardItem','save','update','remove','emit','hasOwnProperty'];(function(_0x207842,_0x31e375){var _0x11f811=function(_0x24fd82){while(--_0x24fd82){_0x207842['push'](_0x207842['shift']());}};_0x11f811(++_0x31e375);}(_0xde97,0x192));var _0x7de9=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0xde97[_0x2d2c16];return _0x53f2fb;};'use strict';var EventEmitter=require('events');var DashboardItem=require('../../mysqldb')['db'][_0x7de9('0x0')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7de9('0x1'),'afterUpdate':_0x7de9('0x2'),'afterDestroy':_0x7de9('0x3')};function emitEvent(_0x242756){return function(_0x5cdf65,_0x432974,_0x7be6ff){DashboardItemEvents[_0x7de9('0x4')](_0x242756+':'+_0x5cdf65['id'],_0x5cdf65);DashboardItemEvents[_0x7de9('0x4')](_0x242756,_0x5cdf65);_0x7be6ff(null);};}for(var e in events){if(events[_0x7de9('0x5')](e)){var event=events[e];DashboardItem[_0x7de9('0x6')](e,emitEvent(event));}}module[_0x7de9('0x7')]=DashboardItemEvents;
\ No newline at end of file
index 58526b6..c6f72c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf97e=['define','dashboard_items','util','../../config/logger','api','moment','bluebird','../../config/environment','./dashboardItem.attributes'];(function(_0x285d79,_0x2f81a1){var _0x3bdac6=function(_0x398d67){while(--_0x398d67){_0x285d79['push'](_0x285d79['shift']());}};_0x3bdac6(++_0x2f81a1);}(_0xf97e,0xa4));var _0xef97=function(_0x4c6c46,_0x4d5b50){_0x4c6c46=_0x4c6c46-0x0;var _0x4eca5e=_0xf97e[_0x4c6c46];return _0x4eca5e;};'use strict';var _=require('lodash');var util=require(_0xef97('0x0'));var logger=require(_0xef97('0x1'))(_0xef97('0x2'));var moment=require(_0xef97('0x3'));var BPromise=require(_0xef97('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xef97('0x5'));var attributes=require(_0xef97('0x6'));module['exports']=function(_0x5bdf5f,_0x1fe83a){return _0x5bdf5f[_0xef97('0x7')]('DashboardItem',attributes,{'tableName':_0xef97('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0a62=['../../config/environment','./dashboardItem.attributes','define','DashboardItem','dashboard_items','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4d0a38,_0x250363){var _0x3c9435=function(_0x4d0c0e){while(--_0x4d0c0e){_0x4d0a38['push'](_0x4d0a38['shift']());}};_0x3c9435(++_0x250363);}(_0x0a62,0x119));var _0x20a6=function(_0x4f33cb,_0x46c73d){_0x4f33cb=_0x4f33cb-0x0;var _0x2b2dbd=_0x0a62[_0x4f33cb];return _0x2b2dbd;};'use strict';var _=require(_0x20a6('0x0'));var util=require(_0x20a6('0x1'));var logger=require(_0x20a6('0x2'))(_0x20a6('0x3'));var moment=require(_0x20a6('0x4'));var BPromise=require(_0x20a6('0x5'));var rp=require(_0x20a6('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x20a6('0x7'));var attributes=require(_0x20a6('0x8'));module['exports']=function(_0x5629dd,_0x274d40){return _0x5629dd[_0x20a6('0x9')](_0x20a6('0xa'),attributes,{'tableName':_0x20a6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0fd6e28..ee9d6b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf5f=['./dashboardItem.socket','register','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','defaults','socket.io-emitter'];(function(_0x6487e0,_0x45b1c4){var _0x5681eb=function(_0x3f15b1){while(--_0x3f15b1){_0x6487e0['push'](_0x6487e0['shift']());}};_0x5681eb(++_0x45b1c4);}(_0xdf5f,0x1b4));var _0xfdf5=function(_0xa7c55b,_0x58e348){_0xa7c55b=_0xa7c55b-0x0;var _0x7952dc=_0xdf5f[_0xa7c55b];return _0x7952dc;};'use strict';var _=require(_0xfdf5('0x0'));var util=require(_0xfdf5('0x1'));var moment=require(_0xfdf5('0x2'));var BPromise=require(_0xfdf5('0x3'));var rs=require(_0xfdf5('0x4'));var fs=require('fs');var Redis=require(_0xfdf5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xfdf5('0x6'));var logger=require(_0xfdf5('0x7'))(_0xfdf5('0x8'));var config=require(_0xfdf5('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xfdf5('0xa')]['http']({'port':0x232a});config[_0xfdf5('0xb')]=_[_0xfdf5('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xfdf5('0xd'))(new Redis(config[_0xfdf5('0xb')]));require(_0xfdf5('0xe'))[_0xfdf5('0xf')](socket);function respondWithRpcPromise(_0x375f7d,_0x313609,_0x2b665a){return new BPromise(function(_0x610852,_0x3a032c){return client['request'](_0x375f7d,_0x2b665a)[_0xfdf5('0x10')](function(_0x1e7615){logger[_0xfdf5('0x11')](_0xfdf5('0x12'),_0x313609,_0xfdf5('0x13'));logger[_0xfdf5('0x14')]('DashboardItem,\x20%s,\x20%s,\x20%s',_0x313609,_0xfdf5('0x13'),JSON[_0xfdf5('0x15')](_0x1e7615));if(_0x1e7615['error']){if(_0x1e7615[_0xfdf5('0x16')]['code']===0x1f4){logger[_0xfdf5('0x16')]('DashboardItem,\x20%s,\x20%s',_0x313609,_0x1e7615['error'][_0xfdf5('0x17')]);return _0x3a032c(_0x1e7615[_0xfdf5('0x16')]['message']);}logger[_0xfdf5('0x16')](_0xfdf5('0x12'),_0x313609,_0x1e7615[_0xfdf5('0x16')][_0xfdf5('0x17')]);return _0x610852(_0x1e7615[_0xfdf5('0x16')][_0xfdf5('0x17')]);}else{logger[_0xfdf5('0x11')](_0xfdf5('0x12'),_0x313609,_0xfdf5('0x13'));_0x610852(_0x1e7615['result'][_0xfdf5('0x17')]);}})[_0xfdf5('0x18')](function(_0x1a6708){logger[_0xfdf5('0x16')](_0xfdf5('0x12'),_0x313609,_0x1a6708);_0x3a032c(_0x1a6708);});});}
\ No newline at end of file
+var _0x96f4=['../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','request','then','info','DashboardItem,\x20%s,\x20%s','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger'];(function(_0x42f027,_0x2bf311){var _0x5a31d1=function(_0x297ded){while(--_0x297ded){_0x42f027['push'](_0x42f027['shift']());}};_0x5a31d1(++_0x2bf311);}(_0x96f4,0xf5));var _0x496f=function(_0x4429e0,_0xee6f1f){_0x4429e0=_0x4429e0-0x0;var _0x51a5b3=_0x96f4[_0x4429e0];return _0x51a5b3;};'use strict';var _=require(_0x496f('0x0'));var util=require(_0x496f('0x1'));var moment=require(_0x496f('0x2'));var BPromise=require(_0x496f('0x3'));var rs=require(_0x496f('0x4'));var fs=require('fs');var Redis=require(_0x496f('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x496f('0x6'))('rpc');var config=require(_0x496f('0x7'));var jayson=require(_0x496f('0x8'));var client=jayson[_0x496f('0x9')]['http']({'port':0x232a});config[_0x496f('0xa')]=_[_0x496f('0xb')](config[_0x496f('0xa')],{'host':_0x496f('0xc'),'port':0x18eb});var socket=require(_0x496f('0xd'))(new Redis(config['redis']));require(_0x496f('0xe'))[_0x496f('0xf')](socket);function respondWithRpcPromise(_0x37b4d8,_0x32fef7,_0x516b93){return new BPromise(function(_0x1cf84c,_0x2a356f){return client[_0x496f('0x10')](_0x37b4d8,_0x516b93)[_0x496f('0x11')](function(_0x2c600d){logger[_0x496f('0x12')](_0x496f('0x13'),_0x32fef7,'request\x20sent');logger[_0x496f('0x14')](_0x496f('0x15'),_0x32fef7,'request\x20sent',JSON[_0x496f('0x16')](_0x2c600d));if(_0x2c600d[_0x496f('0x17')]){if(_0x2c600d[_0x496f('0x17')][_0x496f('0x18')]===0x1f4){logger[_0x496f('0x17')](_0x496f('0x13'),_0x32fef7,_0x2c600d[_0x496f('0x17')][_0x496f('0x19')]);return _0x2a356f(_0x2c600d['error']['message']);}logger[_0x496f('0x17')](_0x496f('0x13'),_0x32fef7,_0x2c600d['error'][_0x496f('0x19')]);return _0x1cf84c(_0x2c600d['error'][_0x496f('0x19')]);}else{logger[_0x496f('0x12')](_0x496f('0x13'),_0x32fef7,'request\x20sent');_0x1cf84c(_0x2c600d[_0x496f('0x1a')][_0x496f('0x19')]);}})[_0x496f('0x1b')](function(_0x15bb4a){logger[_0x496f('0x17')](_0x496f('0x13'),_0x32fef7,_0x15bb4a);_0x2a356f(_0x15bb4a);});});}
\ No newline at end of file
index 06cefbe..f5fe872 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda91=['remove','update','emit','removeListener','register','dashboardItem:','./dashboardItem.events','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xda91,0x1be));var _0x1da9=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xda91[_0x502c7d];return _0x30b7ed;};'use strict';var DashboardItemEvents=require(_0x1da9('0x0'));var events=[_0x1da9('0x1'),_0x1da9('0x2'),_0x1da9('0x3')];function createListener(_0x530c6f,_0xd9787c){return function(_0x50d7ff){_0xd9787c[_0x1da9('0x4')](_0x530c6f,_0x50d7ff);};}function removeListener(_0x1cd985,_0x1426b5){return function(){DashboardItemEvents[_0x1da9('0x5')](_0x1cd985,_0x1426b5);};}exports[_0x1da9('0x6')]=function(_0x277998){for(var _0x355fc7=0x0,_0xe8c829=events['length'];_0x355fc7<_0xe8c829;_0x355fc7++){var _0x31d22b=events[_0x355fc7];var _0xf0ba25=createListener(_0x1da9('0x7')+_0x31d22b,_0x277998);DashboardItemEvents['on'](_0x31d22b,_0xf0ba25);}};
\ No newline at end of file
+var _0xbf80=['remove','update','emit','removeListener','register','length','./dashboardItem.events','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbf80,0x1b6));var _0x0bf8=function(_0x25c326,_0x250137){_0x25c326=_0x25c326-0x0;var _0x762452=_0xbf80[_0x25c326];return _0x762452;};'use strict';var DashboardItemEvents=require(_0x0bf8('0x0'));var events=[_0x0bf8('0x1'),_0x0bf8('0x2'),_0x0bf8('0x3')];function createListener(_0x305d2d,_0x18d41c){return function(_0x17e5f1){_0x18d41c[_0x0bf8('0x4')](_0x305d2d,_0x17e5f1);};}function removeListener(_0x56117d,_0x324941){return function(){DashboardItemEvents[_0x0bf8('0x5')](_0x56117d,_0x324941);};}exports[_0x0bf8('0x6')]=function(_0x3bbb1d){for(var _0x11878d=0x0,_0x1e13bf=events[_0x0bf8('0x7')];_0x11878d<_0x1e13bf;_0x11878d++){var _0x45f1eb=events[_0x11878d];var _0x34a934=createListener('dashboardItem:'+_0x45f1eb,_0x3bbb1d);DashboardItemEvents['on'](_0x45f1eb,_0x34a934);}};
\ No newline at end of file
index fb59f9f..a0c2cdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb789=['../../config/environment','./dashboardItem.controller','get','isAuthenticated','show','put','delete','/:id','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x4dbd98,_0x28dada){var _0x9fe6d2=function(_0x197f7d){while(--_0x197f7d){_0x4dbd98['push'](_0x4dbd98['shift']());}};_0x9fe6d2(++_0x28dada);}(_0xb789,0xb3));var _0x9b78=function(_0x5be054,_0x2750ea){_0x5be054=_0x5be054-0x0;var _0x353f92=_0xb789[_0x5be054];return _0x353f92;};'use strict';var multer=require(_0x9b78('0x0'));var util=require('util');var path=require(_0x9b78('0x1'));var timeout=require(_0x9b78('0x2'));var express=require(_0x9b78('0x3'));var router=express[_0x9b78('0x4')]();var fs_extra=require(_0x9b78('0x5'));var auth=require(_0x9b78('0x6'));var interaction=require(_0x9b78('0x7'));var config=require(_0x9b78('0x8'));var controller=require(_0x9b78('0x9'));router[_0x9b78('0xa')]('/:id',auth[_0x9b78('0xb')](),controller[_0x9b78('0xc')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x9b78('0xd')]('/:id',auth[_0x9b78('0xb')](),controller['update']);router[_0x9b78('0xe')](_0x9b78('0xf'),auth[_0x9b78('0xb')](),controller[_0x9b78('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xd046=['create','put','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated'];(function(_0x5f04d5,_0xa52f6d){var _0x250dfa=function(_0x5224f4){while(--_0x5224f4){_0x5f04d5['push'](_0x5f04d5['shift']());}};_0x250dfa(++_0xa52f6d);}(_0xd046,0x16d));var _0x6d04=function(_0x2391f0,_0x25f8c4){_0x2391f0=_0x2391f0-0x0;var _0xbf9ae0=_0xd046[_0x2391f0];return _0xbf9ae0;};'use strict';var multer=require(_0x6d04('0x0'));var util=require(_0x6d04('0x1'));var path=require(_0x6d04('0x2'));var timeout=require(_0x6d04('0x3'));var express=require(_0x6d04('0x4'));var router=express['Router']();var fs_extra=require(_0x6d04('0x5'));var auth=require(_0x6d04('0x6'));var interaction=require(_0x6d04('0x7'));var config=require(_0x6d04('0x8'));var controller=require(_0x6d04('0x9'));router[_0x6d04('0xa')](_0x6d04('0xb'),auth[_0x6d04('0xc')](),controller['show']);router['post']('/',auth[_0x6d04('0xc')](),controller[_0x6d04('0xd')]);router[_0x6d04('0xe')]('/:id',auth[_0x6d04('0xc')](),controller[_0x6d04('0xf')]);router['delete']('/:id',auth[_0x6d04('0xc')](),controller[_0x6d04('0x10')]);module[_0x6d04('0x11')]=router;
\ No newline at end of file
index e8e70cb..eb9daac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbf7=['STRING','second','third','sequelize'];(function(_0x408345,_0x143387){var _0x367c7f=function(_0x26facf){while(--_0x26facf){_0x408345['push'](_0x408345['shift']());}};_0x367c7f(++_0x143387);}(_0xdbf7,0x1f3));var _0x7dbf=function(_0x16fb2a,_0x117a5d){_0x16fb2a=_0x16fb2a-0x0;var _0x4c5c29=_0xdbf7[_0x16fb2a];return _0x4c5c29;};'use strict';var Sequelize=require(_0x7dbf('0x0'));module['exports']={'name':{'type':Sequelize[_0x7dbf('0x1')],'allowNull':![]},'level':{'type':Sequelize['ENUM']('first',_0x7dbf('0x2'),_0x7dbf('0x3')),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize[_0x7dbf('0x1')]}};
\ No newline at end of file
+var _0xd871=['exports','STRING','ENUM','second','third','first','sequelize'];(function(_0x8a6975,_0x5ee2b0){var _0x1edcdb=function(_0x405446){while(--_0x405446){_0x8a6975['push'](_0x8a6975['shift']());}};_0x1edcdb(++_0x5ee2b0);}(_0xd871,0x15d));var _0x1d87=function(_0x140c1b,_0x5e6387){_0x140c1b=_0x140c1b-0x0;var _0x55349c=_0xd871[_0x140c1b];return _0x55349c;};'use strict';var Sequelize=require(_0x1d87('0x0'));module[_0x1d87('0x1')]={'name':{'type':Sequelize[_0x1d87('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x1d87('0x3')]('first',_0x1d87('0x4'),_0x1d87('0x5')),'allowNull':![],'defaultValue':_0x1d87('0x6')},'description':{'type':Sequelize[_0x1d87('0x2')]}};
\ No newline at end of file
index f0b31d6..a42ec2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a2c=['Dispositions','stack','name','send','index','map','Disposition','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','include','findAll','rows','catch','show','params','includeAll','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','error','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','limit','offset','set','json','apply','reject','save','update','then','destroy','get'];(function(_0x599ccd,_0x421338){var _0x214df3=function(_0xea800e){while(--_0xea800e){_0x599ccd['push'](_0x599ccd['shift']());}};_0x214df3(++_0x421338);}(_0x2a2c,0xd3));var _0xc2a2=function(_0x198c84,_0x5cfa76){_0x198c84=_0x198c84-0x0;var _0x4c1cb3=_0x2a2c[_0x198c84];return _0x4c1cb3;};'use strict';var emlformat=require(_0xc2a2('0x0'));var rimraf=require(_0xc2a2('0x1'));var zipdir=require(_0xc2a2('0x2'));var jsonpatch=require(_0xc2a2('0x3'));var rp=require(_0xc2a2('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc2a2('0x5'));var util=require(_0xc2a2('0x6'));var path=require(_0xc2a2('0x7'));var sox=require(_0xc2a2('0x8'));var csv=require(_0xc2a2('0x9'));var ejs=require(_0xc2a2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc2a2('0xb'));var crypto=require(_0xc2a2('0xc'));var jsforce=require(_0xc2a2('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc2a2('0xe'));var Papa=require(_0xc2a2('0xf'));var Redis=require('ioredis');var authService=require(_0xc2a2('0x10'));var qs=require(_0xc2a2('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc2a2('0x12'));var logger=require(_0xc2a2('0x13'))('api');var utils=require(_0xc2a2('0x14'));var config=require(_0xc2a2('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xc2a2('0x16'))['db'];function respondWithStatusCode(_0x383f6c,_0x53d208){_0x53d208=_0x53d208||0xcc;return function(_0x13e256){if(_0x13e256){return _0x383f6c[_0xc2a2('0x17')](_0x53d208);}return _0x383f6c[_0xc2a2('0x18')](_0x53d208)[_0xc2a2('0x19')]();};}function respondWithResult(_0x213523,_0x4a08c4){_0x4a08c4=_0x4a08c4||0xc8;return function(_0x1d9541){if(_0x1d9541){return _0x213523[_0xc2a2('0x18')](_0x4a08c4)['json'](_0x1d9541);}};}function respondWithFilteredResult(_0x68b829,_0x3784bc){return function(_0x4edf20){if(_0x4edf20){var _0x3f9766=typeof _0x3784bc['offset']===_0xc2a2('0x1a')&&typeof _0x3784bc[_0xc2a2('0x1b')]==='undefined';var _0x5c61c4=_0x4edf20['count'];var _0x33ee92=_0x3f9766?0x0:_0x3784bc['offset'];var _0x1ce313=_0x3f9766?_0x4edf20['count']:_0x3784bc[_0xc2a2('0x1c')]+_0x3784bc[_0xc2a2('0x1b')];var _0x1bb821;if(_0x1ce313>=_0x5c61c4){_0x1ce313=_0x5c61c4;_0x1bb821=0xc8;}else{_0x1bb821=0xce;}_0x68b829['status'](_0x1bb821);return _0x68b829[_0xc2a2('0x1d')]('Content-Range',_0x33ee92+'-'+_0x1ce313+'/'+_0x5c61c4)[_0xc2a2('0x1e')](_0x4edf20);}return null;};}function patchUpdates(_0x404f3f){return function(_0x32b7c1){try{jsonpatch[_0xc2a2('0x1f')](_0x32b7c1,_0x404f3f,!![]);}catch(_0x133670){return BPromise[_0xc2a2('0x20')](_0x133670);}return _0x32b7c1[_0xc2a2('0x21')]();};}function saveUpdates(_0x124e83,_0x29117d){return function(_0x5b5457){if(_0x5b5457){return _0x5b5457[_0xc2a2('0x22')](_0x124e83)[_0xc2a2('0x23')](function(_0x201a3e){return _0x201a3e;});}return null;};}function removeEntity(_0x2a2a6f,_0x3d2965){return function(_0x4d7b2c){if(_0x4d7b2c){return _0x4d7b2c[_0xc2a2('0x24')]()[_0xc2a2('0x23')](function(){var _0x4f5bf4=_0x4d7b2c[_0xc2a2('0x25')]({'plain':!![]});var _0x15b75c=_0xc2a2('0x26');return db['UserProfileResource'][_0xc2a2('0x24')]({'where':{'type':_0x15b75c,'resourceId':_0x4f5bf4['id']}})[_0xc2a2('0x23')](function(){return _0x4d7b2c;});})[_0xc2a2('0x23')](function(){_0x2a2a6f[_0xc2a2('0x18')](0xcc)[_0xc2a2('0x19')]();});}};}function handleEntityNotFound(_0x44d57d,_0x42e9bb){return function(_0xf57f0a){if(!_0xf57f0a){_0x44d57d[_0xc2a2('0x17')](0x194);}return _0xf57f0a;};}function handleError(_0x4b41a5,_0x2ef43a){_0x2ef43a=_0x2ef43a||0x1f4;return function(_0x4f3a94){logger['error'](_0x4f3a94[_0xc2a2('0x27')]);if(_0x4f3a94[_0xc2a2('0x28')]){delete _0x4f3a94[_0xc2a2('0x28')];}_0x4b41a5[_0xc2a2('0x18')](_0x2ef43a)[_0xc2a2('0x29')](_0x4f3a94);};}exports[_0xc2a2('0x2a')]=function(_0xc948c2,_0x3b697a){var _0xc9de74={},_0x16988a={},_0x577339={'count':0x0,'rows':[]};var _0x116df4=_[_0xc2a2('0x2b')](db[_0xc2a2('0x2c')][_0xc2a2('0x2d')],function(_0x430d17){return{'name':_0x430d17[_0xc2a2('0x2e')],'type':_0x430d17[_0xc2a2('0x2f')][_0xc2a2('0x30')]};});_0x16988a[_0xc2a2('0x31')]=_[_0xc2a2('0x2b')](_0x116df4,_0xc2a2('0x28'));_0x16988a[_0xc2a2('0x32')]=_[_0xc2a2('0x33')](_0xc948c2[_0xc2a2('0x32')]);_0x16988a[_0xc2a2('0x34')]=_[_0xc2a2('0x35')](_0x16988a[_0xc2a2('0x31')],_0x16988a[_0xc2a2('0x32')]);_0xc9de74[_0xc2a2('0x36')]=_[_0xc2a2('0x35')](_0x16988a[_0xc2a2('0x31')],qs['fields'](_0xc948c2[_0xc2a2('0x32')][_0xc2a2('0x37')]));_0xc9de74['attributes']=_0xc9de74[_0xc2a2('0x36')][_0xc2a2('0x38')]?_0xc9de74[_0xc2a2('0x36')]:_0x16988a['model'];if(!_0xc948c2['query']['hasOwnProperty'](_0xc2a2('0x39'))){_0xc9de74[_0xc2a2('0x1b')]=qs['limit'](_0xc948c2[_0xc2a2('0x32')][_0xc2a2('0x1b')]);_0xc9de74[_0xc2a2('0x1c')]=qs[_0xc2a2('0x1c')](_0xc948c2[_0xc2a2('0x32')][_0xc2a2('0x1c')]);}_0xc9de74[_0xc2a2('0x3a')]=qs[_0xc2a2('0x3b')](_0xc948c2[_0xc2a2('0x32')]['sort']);_0xc9de74[_0xc2a2('0x3c')]=qs[_0xc2a2('0x34')](_[_0xc2a2('0x3d')](_0xc948c2[_0xc2a2('0x32')],_0x16988a[_0xc2a2('0x34')]),_0x116df4);if(_0xc948c2[_0xc2a2('0x32')][_0xc2a2('0x3e')]){_0xc9de74[_0xc2a2('0x3c')]=_[_0xc2a2('0x3f')](_0xc9de74[_0xc2a2('0x3c')],{'$or':_[_0xc2a2('0x2b')](_0x116df4,function(_0x1c7f3a){if(_0x1c7f3a[_0xc2a2('0x2f')]!==_0xc2a2('0x40')){var _0x342a4a={};_0x342a4a[_0x1c7f3a[_0xc2a2('0x28')]]={'$like':'%'+_0xc948c2[_0xc2a2('0x32')]['filter']+'%'};return _0x342a4a;}})});}_0xc9de74=_['merge']({},_0xc9de74,_0xc948c2[_0xc2a2('0x41')]);var _0x405f24={'where':_0xc9de74[_0xc2a2('0x3c')]};return db['Disposition'][_0xc2a2('0x42')](_0x405f24)[_0xc2a2('0x23')](function(_0x4a7c0d){_0x577339[_0xc2a2('0x42')]=_0x4a7c0d;if(_0xc948c2[_0xc2a2('0x32')]['includeAll']){_0xc9de74[_0xc2a2('0x43')]=[{'all':!![]}];}return db[_0xc2a2('0x2c')][_0xc2a2('0x44')](_0xc9de74);})['then'](function(_0x30ab38){_0x577339[_0xc2a2('0x45')]=_0x30ab38;return _0x577339;})['then'](respondWithFilteredResult(_0x3b697a,_0xc9de74))[_0xc2a2('0x46')](handleError(_0x3b697a,null));};exports[_0xc2a2('0x47')]=function(_0x325424,_0x34a216){var _0x4194ba={'raw':!![],'where':{'id':_0x325424[_0xc2a2('0x48')]['id']}},_0x4b526b={};_0x4b526b['model']=_['keys'](db[_0xc2a2('0x2c')][_0xc2a2('0x2d')]);_0x4b526b[_0xc2a2('0x32')]=_['keys'](_0x325424[_0xc2a2('0x32')]);_0x4b526b['filters']=_['intersection'](_0x4b526b[_0xc2a2('0x31')],_0x4b526b[_0xc2a2('0x32')]);_0x4194ba[_0xc2a2('0x36')]=_[_0xc2a2('0x35')](_0x4b526b['model'],qs['fields'](_0x325424[_0xc2a2('0x32')][_0xc2a2('0x37')]));_0x4194ba['attributes']=_0x4194ba['attributes'][_0xc2a2('0x38')]?_0x4194ba[_0xc2a2('0x36')]:_0x4b526b['model'];if(_0x325424[_0xc2a2('0x32')][_0xc2a2('0x49')]){_0x4194ba[_0xc2a2('0x43')]=[{'all':!![]}];}_0x4194ba=_[_0xc2a2('0x3f')]({},_0x4194ba,_0x325424[_0xc2a2('0x41')]);return db[_0xc2a2('0x2c')][_0xc2a2('0x4a')](_0x4194ba)[_0xc2a2('0x23')](handleEntityNotFound(_0x34a216,null))[_0xc2a2('0x23')](respondWithResult(_0x34a216,null))[_0xc2a2('0x46')](handleError(_0x34a216,null));};exports[_0xc2a2('0x4b')]=function(_0x141b08,_0x4a10b2){return db[_0xc2a2('0x2c')][_0xc2a2('0x4b')](_0x141b08[_0xc2a2('0x4c')],{})[_0xc2a2('0x23')](function(_0x4f8976){var _0x72148a=_0x141b08['user']['get']({'plain':!![]});if(!_0x72148a)throw new Error(_0xc2a2('0x4d'));if(_0x72148a[_0xc2a2('0x4e')]===_0xc2a2('0x4f')){var _0x5234f7=_0x4f8976[_0xc2a2('0x25')]({'plain':!![]});var _0x4381df='Dispositions';return db[_0xc2a2('0x50')][_0xc2a2('0x4a')]({'where':{'name':_0x4381df,'userProfileId':_0x72148a[_0xc2a2('0x51')]},'raw':!![]})['then'](function(_0x1b026a){if(_0x1b026a&&_0x1b026a['autoAssociation']===0x0){return db['UserProfileResource'][_0xc2a2('0x4b')]({'name':_0x5234f7[_0xc2a2('0x28')],'resourceId':_0x5234f7['id'],'type':_0x1b026a[_0xc2a2('0x28')],'sectionId':_0x1b026a['id']},{})[_0xc2a2('0x23')](function(){return _0x4f8976;});}else{return _0x4f8976;}})[_0xc2a2('0x46')](function(_0x19122e){logger[_0xc2a2('0x52')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x19122e);throw _0x19122e;});}return _0x4f8976;})[_0xc2a2('0x23')](respondWithResult(_0x4a10b2,0xc9))[_0xc2a2('0x46')](handleError(_0x4a10b2,null));};exports[_0xc2a2('0x22')]=function(_0x4430df,_0x1706bf){if(_0x4430df[_0xc2a2('0x4c')]['id']){delete _0x4430df[_0xc2a2('0x4c')]['id'];}return db['Disposition'][_0xc2a2('0x4a')]({'where':{'id':_0x4430df['params']['id']}})[_0xc2a2('0x23')](handleEntityNotFound(_0x1706bf,null))[_0xc2a2('0x23')](saveUpdates(_0x4430df[_0xc2a2('0x4c')],null))[_0xc2a2('0x23')](respondWithResult(_0x1706bf,null))[_0xc2a2('0x46')](handleError(_0x1706bf,null));};exports[_0xc2a2('0x24')]=function(_0x1325f9,_0x2a6d64){return db[_0xc2a2('0x2c')]['find']({'where':{'id':_0x1325f9[_0xc2a2('0x48')]['id']}})[_0xc2a2('0x23')](handleEntityNotFound(_0x2a6d64,null))[_0xc2a2('0x23')](removeEntity(_0x2a6d64,null))[_0xc2a2('0x46')](handleError(_0x2a6d64,null));};
\ No newline at end of file
+var _0xc430=['../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','then','get','Dispositions','UserProfileResource','destroy','name','send','index','map','Disposition','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','show','params','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util'];(function(_0x5bb48f,_0x2bd274){var _0xccea88=function(_0x23442e){while(--_0x23442e){_0x5bb48f['push'](_0x5bb48f['shift']());}};_0xccea88(++_0x2bd274);}(_0xc430,0x1e0));var _0x0c43=function(_0x74a0c6,_0x327fee){_0x74a0c6=_0x74a0c6-0x0;var _0x2fb098=_0xc430[_0x74a0c6];return _0x2fb098;};'use strict';var emlformat=require(_0x0c43('0x0'));var rimraf=require(_0x0c43('0x1'));var zipdir=require(_0x0c43('0x2'));var jsonpatch=require(_0x0c43('0x3'));var rp=require('request-promise');var moment=require(_0x0c43('0x4'));var BPromise=require(_0x0c43('0x5'));var Mustache=require(_0x0c43('0x6'));var util=require(_0x0c43('0x7'));var path=require(_0x0c43('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0c43('0x9'));var fs=require('fs');var fs_extra=require(_0x0c43('0xa'));var _=require('lodash');var squel=require(_0x0c43('0xb'));var crypto=require(_0x0c43('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x0c43('0xd'));var querystring=require('querystring');var Papa=require(_0x0c43('0xe'));var Redis=require(_0x0c43('0xf'));var authService=require(_0x0c43('0x10'));var qs=require(_0x0c43('0x11'));var as=require(_0x0c43('0x12'));var hardwareService=require(_0x0c43('0x13'));var logger=require(_0x0c43('0x14'))(_0x0c43('0x15'));var utils=require('../../config/utils');var config=require(_0x0c43('0x16'));var licenseUtil=require(_0x0c43('0x17'));var db=require(_0x0c43('0x18'))['db'];function respondWithStatusCode(_0x924e72,_0x27d796){_0x27d796=_0x27d796||0xcc;return function(_0x88621c){if(_0x88621c){return _0x924e72[_0x0c43('0x19')](_0x27d796);}return _0x924e72[_0x0c43('0x1a')](_0x27d796)[_0x0c43('0x1b')]();};}function respondWithResult(_0x4f542d,_0x4e6e8d){_0x4e6e8d=_0x4e6e8d||0xc8;return function(_0x5e5d58){if(_0x5e5d58){return _0x4f542d[_0x0c43('0x1a')](_0x4e6e8d)[_0x0c43('0x1c')](_0x5e5d58);}};}function respondWithFilteredResult(_0x1d2d9d,_0x38b1ce){return function(_0x964f00){if(_0x964f00){var _0xd5cccb=typeof _0x38b1ce[_0x0c43('0x1d')]===_0x0c43('0x1e')&&typeof _0x38b1ce[_0x0c43('0x1f')]===_0x0c43('0x1e');var _0x4dcc74=_0x964f00[_0x0c43('0x20')];var _0x58803c=_0xd5cccb?0x0:_0x38b1ce[_0x0c43('0x1d')];var _0xf5d05a=_0xd5cccb?_0x964f00[_0x0c43('0x20')]:_0x38b1ce[_0x0c43('0x1d')]+_0x38b1ce[_0x0c43('0x1f')];var _0x2ed015;if(_0xf5d05a>=_0x4dcc74){_0xf5d05a=_0x4dcc74;_0x2ed015=0xc8;}else{_0x2ed015=0xce;}_0x1d2d9d[_0x0c43('0x1a')](_0x2ed015);return _0x1d2d9d['set']('Content-Range',_0x58803c+'-'+_0xf5d05a+'/'+_0x4dcc74)[_0x0c43('0x1c')](_0x964f00);}return null;};}function patchUpdates(_0x2f2d77){return function(_0xe1f210){try{jsonpatch[_0x0c43('0x21')](_0xe1f210,_0x2f2d77,!![]);}catch(_0x6e7595){return BPromise[_0x0c43('0x22')](_0x6e7595);}return _0xe1f210[_0x0c43('0x23')]();};}function saveUpdates(_0x1c7359,_0x19b393){return function(_0x50f8e2){if(_0x50f8e2){return _0x50f8e2['update'](_0x1c7359)['then'](function(_0x3a0fcf){return _0x3a0fcf;});}return null;};}function removeEntity(_0xa111cd,_0x1f4531){return function(_0x55bda7){if(_0x55bda7){return _0x55bda7['destroy']()[_0x0c43('0x24')](function(){var _0x48ea90=_0x55bda7[_0x0c43('0x25')]({'plain':!![]});var _0x3a0aeb=_0x0c43('0x26');return db[_0x0c43('0x27')][_0x0c43('0x28')]({'where':{'type':_0x3a0aeb,'resourceId':_0x48ea90['id']}})[_0x0c43('0x24')](function(){return _0x55bda7;});})['then'](function(){_0xa111cd[_0x0c43('0x1a')](0xcc)[_0x0c43('0x1b')]();});}};}function handleEntityNotFound(_0x226e88,_0x2e0c36){return function(_0x38835e){if(!_0x38835e){_0x226e88[_0x0c43('0x19')](0x194);}return _0x38835e;};}function handleError(_0x3fc6b8,_0x180cad){_0x180cad=_0x180cad||0x1f4;return function(_0x210120){logger['error'](_0x210120['stack']);if(_0x210120[_0x0c43('0x29')]){delete _0x210120[_0x0c43('0x29')];}_0x3fc6b8[_0x0c43('0x1a')](_0x180cad)[_0x0c43('0x2a')](_0x210120);};}exports[_0x0c43('0x2b')]=function(_0x5615d1,_0x4f7b97){var _0x144ee6={},_0x2378fb={},_0x424551={'count':0x0,'rows':[]};var _0x166d6c=_[_0x0c43('0x2c')](db[_0x0c43('0x2d')][_0x0c43('0x2e')],function(_0x3ba70f){return{'name':_0x3ba70f['fieldName'],'type':_0x3ba70f[_0x0c43('0x2f')][_0x0c43('0x30')]};});_0x2378fb[_0x0c43('0x31')]=_[_0x0c43('0x2c')](_0x166d6c,'name');_0x2378fb[_0x0c43('0x32')]=_[_0x0c43('0x33')](_0x5615d1['query']);_0x2378fb[_0x0c43('0x34')]=_[_0x0c43('0x35')](_0x2378fb[_0x0c43('0x31')],_0x2378fb[_0x0c43('0x32')]);_0x144ee6[_0x0c43('0x36')]=_['intersection'](_0x2378fb[_0x0c43('0x31')],qs[_0x0c43('0x37')](_0x5615d1[_0x0c43('0x32')][_0x0c43('0x37')]));_0x144ee6[_0x0c43('0x36')]=_0x144ee6['attributes']['length']?_0x144ee6[_0x0c43('0x36')]:_0x2378fb['model'];if(!_0x5615d1['query'][_0x0c43('0x38')](_0x0c43('0x39'))){_0x144ee6[_0x0c43('0x1f')]=qs['limit'](_0x5615d1[_0x0c43('0x32')][_0x0c43('0x1f')]);_0x144ee6['offset']=qs[_0x0c43('0x1d')](_0x5615d1['query']['offset']);}_0x144ee6[_0x0c43('0x3a')]=qs[_0x0c43('0x3b')](_0x5615d1[_0x0c43('0x32')][_0x0c43('0x3b')]);_0x144ee6[_0x0c43('0x3c')]=qs['filters'](_['pick'](_0x5615d1['query'],_0x2378fb[_0x0c43('0x34')]),_0x166d6c);if(_0x5615d1[_0x0c43('0x32')]['filter']){_0x144ee6[_0x0c43('0x3c')]=_['merge'](_0x144ee6[_0x0c43('0x3c')],{'$or':_[_0x0c43('0x2c')](_0x166d6c,function(_0x1a57c3){if(_0x1a57c3['type']!==_0x0c43('0x3d')){var _0x1aecf0={};_0x1aecf0[_0x1a57c3[_0x0c43('0x29')]]={'$like':'%'+_0x5615d1[_0x0c43('0x32')][_0x0c43('0x3e')]+'%'};return _0x1aecf0;}})});}_0x144ee6=_[_0x0c43('0x3f')]({},_0x144ee6,_0x5615d1[_0x0c43('0x40')]);var _0x247c26={'where':_0x144ee6[_0x0c43('0x3c')]};return db['Disposition'][_0x0c43('0x20')](_0x247c26)[_0x0c43('0x24')](function(_0x1dde2f){_0x424551[_0x0c43('0x20')]=_0x1dde2f;if(_0x5615d1[_0x0c43('0x32')][_0x0c43('0x41')]){_0x144ee6[_0x0c43('0x42')]=[{'all':!![]}];}return db[_0x0c43('0x2d')][_0x0c43('0x43')](_0x144ee6);})[_0x0c43('0x24')](function(_0x37a7b4){_0x424551[_0x0c43('0x44')]=_0x37a7b4;return _0x424551;})[_0x0c43('0x24')](respondWithFilteredResult(_0x4f7b97,_0x144ee6))['catch'](handleError(_0x4f7b97,null));};exports[_0x0c43('0x45')]=function(_0x72165a,_0x1c356f){var _0xb42c84={'raw':!![],'where':{'id':_0x72165a[_0x0c43('0x46')]['id']}},_0x354330={};_0x354330[_0x0c43('0x31')]=_['keys'](db['Disposition'][_0x0c43('0x2e')]);_0x354330[_0x0c43('0x32')]=_['keys'](_0x72165a[_0x0c43('0x32')]);_0x354330['filters']=_[_0x0c43('0x35')](_0x354330[_0x0c43('0x31')],_0x354330[_0x0c43('0x32')]);_0xb42c84[_0x0c43('0x36')]=_['intersection'](_0x354330[_0x0c43('0x31')],qs['fields'](_0x72165a[_0x0c43('0x32')][_0x0c43('0x37')]));_0xb42c84[_0x0c43('0x36')]=_0xb42c84[_0x0c43('0x36')][_0x0c43('0x47')]?_0xb42c84[_0x0c43('0x36')]:_0x354330[_0x0c43('0x31')];if(_0x72165a[_0x0c43('0x32')][_0x0c43('0x41')]){_0xb42c84[_0x0c43('0x42')]=[{'all':!![]}];}_0xb42c84=_['merge']({},_0xb42c84,_0x72165a[_0x0c43('0x40')]);return db[_0x0c43('0x2d')][_0x0c43('0x48')](_0xb42c84)['then'](handleEntityNotFound(_0x1c356f,null))[_0x0c43('0x24')](respondWithResult(_0x1c356f,null))['catch'](handleError(_0x1c356f,null));};exports[_0x0c43('0x49')]=function(_0x5f51cd,_0xdfbbff){return db['Disposition'][_0x0c43('0x49')](_0x5f51cd['body'],{})[_0x0c43('0x24')](function(_0xb8730a){var _0x1308bc=_0x5f51cd[_0x0c43('0x4a')][_0x0c43('0x25')]({'plain':!![]});if(!_0x1308bc)throw new Error(_0x0c43('0x4b'));if(_0x1308bc[_0x0c43('0x4c')]===_0x0c43('0x4a')){var _0x4259db=_0xb8730a[_0x0c43('0x25')]({'plain':!![]});var _0x442d88='Dispositions';return db[_0x0c43('0x4d')]['find']({'where':{'name':_0x442d88,'userProfileId':_0x1308bc[_0x0c43('0x4e')]},'raw':!![]})[_0x0c43('0x24')](function(_0x14513a){if(_0x14513a&&_0x14513a[_0x0c43('0x4f')]===0x0){return db[_0x0c43('0x27')][_0x0c43('0x49')]({'name':_0x4259db[_0x0c43('0x29')],'resourceId':_0x4259db['id'],'type':_0x14513a[_0x0c43('0x29')],'sectionId':_0x14513a['id']},{})[_0x0c43('0x24')](function(){return _0xb8730a;});}else{return _0xb8730a;}})[_0x0c43('0x50')](function(_0x320301){logger[_0x0c43('0x51')](_0x0c43('0x52'),_0x320301);throw _0x320301;});}return _0xb8730a;})['then'](respondWithResult(_0xdfbbff,0xc9))[_0x0c43('0x50')](handleError(_0xdfbbff,null));};exports['update']=function(_0x4de76e,_0x5a124b){if(_0x4de76e['body']['id']){delete _0x4de76e[_0x0c43('0x53')]['id'];}return db[_0x0c43('0x2d')][_0x0c43('0x48')]({'where':{'id':_0x4de76e['params']['id']}})[_0x0c43('0x24')](handleEntityNotFound(_0x5a124b,null))[_0x0c43('0x24')](saveUpdates(_0x4de76e[_0x0c43('0x53')],null))['then'](respondWithResult(_0x5a124b,null))[_0x0c43('0x50')](handleError(_0x5a124b,null));};exports[_0x0c43('0x28')]=function(_0x3e5efa,_0xd635cb){return db[_0x0c43('0x2d')][_0x0c43('0x48')]({'where':{'id':_0x3e5efa['params']['id']}})['then'](handleEntityNotFound(_0xd635cb,null))[_0x0c43('0x24')](removeEntity(_0xd635cb,null))[_0x0c43('0x50')](handleError(_0xd635cb,null));};
\ No newline at end of file
index f1ce5a8..3abed43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc4e=['../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./disposition.attributes','exports','define','Disposition','name_voice','name','ListId','name_chat','ChatWebsiteId','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId'];(function(_0x2ba853,_0x45be){var _0xe21285=function(_0x26c90d){while(--_0x26c90d){_0x2ba853['push'](_0x2ba853['shift']());}};_0xe21285(++_0x45be);}(_0xdc4e,0x1e0));var _0xedc4=function(_0x42fd4b,_0x20bea1){_0x42fd4b=_0x42fd4b-0x0;var _0x2aa690=_0xdc4e[_0x42fd4b];return _0x2aa690;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xedc4('0x0'))('api');var moment=require(_0xedc4('0x1'));var BPromise=require(_0xedc4('0x2'));var rp=require(_0xedc4('0x3'));var fs=require('fs');var path=require(_0xedc4('0x4'));var rimraf=require('rimraf');var config=require(_0xedc4('0x5'));var attributes=require(_0xedc4('0x6'));module[_0xedc4('0x7')]=function(_0xa3c1a6,_0x2a346a){return _0xa3c1a6[_0xedc4('0x8')](_0xedc4('0x9'),attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':_0xedc4('0xa'),'fields':[_0xedc4('0xb'),_0xedc4('0xc')]},{'unique':!![],'name':_0xedc4('0xd'),'fields':[_0xedc4('0xb'),_0xedc4('0xe')]},{'unique':!![],'name':'name_mail','fields':[_0xedc4('0xb'),_0xedc4('0xf')]},{'unique':!![],'name':_0xedc4('0x10'),'fields':[_0xedc4('0xb'),_0xedc4('0x11')]},{'unique':!![],'name':_0xedc4('0x12'),'fields':['name',_0xedc4('0x13')]},{'unique':!![],'name':_0xedc4('0x14'),'fields':[_0xedc4('0xb'),_0xedc4('0x15')]},{'unique':!![],'name':_0xedc4('0x16'),'fields':['name',_0xedc4('0x17')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfb6a=['ListId','name_mail','name_sms','SmsAccountId','name_fax','name_openchannel','OpenchannelAccountId','name_whatsapp','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','tools_dispositions','name_voice','name'];(function(_0x2d7563,_0x3bc9c4){var _0x3edd0f=function(_0x1d1253){while(--_0x1d1253){_0x2d7563['push'](_0x2d7563['shift']());}};_0x3edd0f(++_0x3bc9c4);}(_0xfb6a,0x1d6));var _0xafb6=function(_0x1e5068,_0x31e9c4){_0x1e5068=_0x1e5068-0x0;var _0x2230b6=_0xfb6a[_0x1e5068];return _0x2230b6;};'use strict';var _=require(_0xafb6('0x0'));var util=require(_0xafb6('0x1'));var logger=require(_0xafb6('0x2'))(_0xafb6('0x3'));var moment=require(_0xafb6('0x4'));var BPromise=require(_0xafb6('0x5'));var rp=require(_0xafb6('0x6'));var fs=require('fs');var path=require(_0xafb6('0x7'));var rimraf=require(_0xafb6('0x8'));var config=require(_0xafb6('0x9'));var attributes=require('./disposition.attributes');module[_0xafb6('0xa')]=function(_0x56db48,_0x275520){return _0x56db48['define']('Disposition',attributes,{'tableName':_0xafb6('0xb'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xafb6('0xc'),'fields':[_0xafb6('0xd'),_0xafb6('0xe')]},{'unique':!![],'name':'name_chat','fields':[_0xafb6('0xd'),'ChatWebsiteId']},{'unique':!![],'name':_0xafb6('0xf'),'fields':['name','MailAccountId']},{'unique':!![],'name':_0xafb6('0x10'),'fields':[_0xafb6('0xd'),_0xafb6('0x11')]},{'unique':!![],'name':_0xafb6('0x12'),'fields':[_0xafb6('0xd'),'FaxAccountId']},{'unique':!![],'name':_0xafb6('0x13'),'fields':[_0xafb6('0xd'),_0xafb6('0x14')]},{'unique':!![],'name':_0xafb6('0x15'),'fields':['name','WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
index e560f50..86ee286 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(_0x451ec4,_0x325364){var _0x2c0546=function(_0x171b64){while(--_0x171b64){_0x451ec4['push'](_0x451ec4['shift']());}};_0x2c0546(++_0x325364);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'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(_0x1177e9,_0x53c3d7){var _0x3a4f7a=function(_0x39460b){while(--_0x39460b){_0x1177e9['push'](_0x1177e9['shift']());}};_0x3a4f7a(++_0x53c3d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'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 c08b953..a3ba218 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf361=['/:id','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./disposition.controller','isAuthenticated','get','show','post','update'];(function(_0x47b498,_0x5260d8){var _0xa96394=function(_0x54903f){while(--_0x54903f){_0x47b498['push'](_0x47b498['shift']());}};_0xa96394(++_0x5260d8);}(_0xf361,0x6b));var _0x1f36=function(_0x325407,_0x207796){_0x325407=_0x325407-0x0;var _0x2662ff=_0xf361[_0x325407];return _0x2662ff;};'use strict';var multer=require(_0x1f36('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x1f36('0x1'));var express=require(_0x1f36('0x2'));var router=express[_0x1f36('0x3')]();var fs_extra=require(_0x1f36('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1f36('0x5'));var config=require(_0x1f36('0x6'));var controller=require(_0x1f36('0x7'));router['get']('/',auth[_0x1f36('0x8')](),controller['index']);router[_0x1f36('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x1f36('0xa')]);router[_0x1f36('0xb')]('/',auth[_0x1f36('0x8')](),controller['create']);router['put']('/:id',auth[_0x1f36('0x8')](),controller[_0x1f36('0xc')]);router['delete'](_0x1f36('0xd'),auth[_0x1f36('0x8')](),controller['destroy']);module[_0x1f36('0xe')]=router;
\ No newline at end of file
+var _0x43f0=['isAuthenticated','/:id','show','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','get'];(function(_0x176217,_0x32bcc2){var _0x5cbb04=function(_0x2162a5){while(--_0x2162a5){_0x176217['push'](_0x176217['shift']());}};_0x5cbb04(++_0x32bcc2);}(_0x43f0,0xa0));var _0x043f=function(_0x130159,_0x23fd08){_0x130159=_0x130159-0x0;var _0x57d8f8=_0x43f0[_0x130159];return _0x57d8f8;};'use strict';var multer=require('multer');var util=require(_0x043f('0x0'));var path=require(_0x043f('0x1'));var timeout=require(_0x043f('0x2'));var express=require(_0x043f('0x3'));var router=express[_0x043f('0x4')]();var fs_extra=require(_0x043f('0x5'));var auth=require(_0x043f('0x6'));var interaction=require(_0x043f('0x7'));var config=require(_0x043f('0x8'));var controller=require(_0x043f('0x9'));router[_0x043f('0xa')]('/',auth[_0x043f('0xb')](),controller['index']);router[_0x043f('0xa')](_0x043f('0xc'),auth[_0x043f('0xb')](),controller[_0x043f('0xd')]);router['post']('/',auth[_0x043f('0xb')](),controller['create']);router[_0x043f('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x043f('0xf')]);router[_0x043f('0x10')]('/:id',auth[_0x043f('0xb')](),controller[_0x043f('0x11')]);module[_0x043f('0x12')]=router;
\ No newline at end of file
index a5966cc..a2d8524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47ee=['2400','4800','7200','9600','14400','12000','v17,v27,v29','INTEGER','SIP','IAX','DADHI','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','yes','ENUM'];(function(_0x304a4c,_0x16fd58){var _0x1f9f88=function(_0x4f0d94){while(--_0x4f0d94){_0x304a4c['push'](_0x304a4c['shift']());}};_0x1f9f88(++_0x16fd58);}(_0x47ee,0xe1));var _0xe47e=function(_0x31080d,_0x3cd7f3){_0x31080d=_0x31080d-0x0;var _0x5be055=_0x47ee[_0x31080d];return _0x5be055;};'use strict';var Sequelize=require(_0xe47e('0x0'));module[_0xe47e('0x1')]={'name':{'type':Sequelize[_0xe47e('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'ecm':{'type':Sequelize['ENUM'](_0xe47e('0x3'),'no'),'defaultValue':_0xe47e('0x3')},'headerinfo':{'type':Sequelize[_0xe47e('0x2')],'defaultValue':'xCALLY\x20Motion\x20Fax'},'localstationid':{'type':Sequelize[_0xe47e('0x2')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0xe47e('0x4')](_0xe47e('0x5'),_0xe47e('0x6'),_0xe47e('0x7'),_0xe47e('0x8'),'12000',_0xe47e('0x9')),'defaultValue':_0xe47e('0x6')},'maxrate':{'type':Sequelize[_0xe47e('0x4')](_0xe47e('0x5'),'4800','7200',_0xe47e('0x8'),_0xe47e('0xa'),'14400'),'defaultValue':_0xe47e('0x9')},'modem':{'type':Sequelize[_0xe47e('0x2')],'defaultValue':_0xe47e('0xb')},'gateway':{'type':Sequelize[_0xe47e('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xe47e('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xe47e('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xe47e('0x4')](_0xe47e('0xd'),_0xe47e('0xe'),_0xe47e('0xf'),_0xe47e('0x10')),'defaultValue':'SIP'},'key':{'type':Sequelize[_0xe47e('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xe47e('0x11')],'defaultValue':function(){return _0xe47e('0x12');}},'notificationSound':{'type':Sequelize[_0xe47e('0x13')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xe47e('0x13')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xe47e('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xe47e('0x13')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xe47e('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xe47e('0x13')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xe47e('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xe47e('0xc')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xe47e('0x13')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x34e972){if(!_0x34e972)this[_0xe47e('0x14')](_0xe47e('0x15'),null);this[_0xe47e('0x14')](_0xe47e('0x16'),_0x34e972);}}};
\ No newline at end of file
+var _0xf212=['BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDisposition','sequelize','exports','STRING','ENUM','xCALLY\x20Motion\x20Fax','localstationid','2400','4800','9600','12000','14400','v17,v27,v29','SIP','IAX','DADHI','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER'];(function(_0x356dcc,_0xb32b97){var _0x2aa02c=function(_0x52dc2c){while(--_0x52dc2c){_0x356dcc['push'](_0x356dcc['shift']());}};_0x2aa02c(++_0xb32b97);}(_0xf212,0xd3));var _0x2f21=function(_0xe1c02b,_0xfbf124){_0xe1c02b=_0xe1c02b-0x0;var _0x376ac6=_0xf212[_0xe1c02b];return _0x376ac6;};'use strict';var Sequelize=require(_0x2f21('0x0'));module[_0x2f21('0x1')]={'name':{'type':Sequelize[_0x2f21('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x2f21('0x2')]},'ecm':{'type':Sequelize[_0x2f21('0x3')]('yes','no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x2f21('0x2')],'defaultValue':_0x2f21('0x4')},'localstationid':{'type':Sequelize[_0x2f21('0x2')],'unique':_0x2f21('0x5')},'minrate':{'type':Sequelize[_0x2f21('0x3')](_0x2f21('0x6'),_0x2f21('0x7'),'7200',_0x2f21('0x8'),_0x2f21('0x9'),_0x2f21('0xa')),'defaultValue':_0x2f21('0x7')},'maxrate':{'type':Sequelize['ENUM'](_0x2f21('0x6'),_0x2f21('0x7'),'7200',_0x2f21('0x8'),'12000',_0x2f21('0xa')),'defaultValue':'14400'},'modem':{'type':Sequelize[_0x2f21('0x2')],'defaultValue':_0x2f21('0xb')},'gateway':{'type':Sequelize[_0x2f21('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x2f21('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize['ENUM'](_0x2f21('0xc'),_0x2f21('0xd'),_0x2f21('0xe'),_0x2f21('0xf')),'defaultValue':_0x2f21('0xc')},'key':{'type':Sequelize[_0x2f21('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x2f21('0x10')],'defaultValue':function(){return _0x2f21('0x11');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x2f21('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2f21('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2f21('0x13')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2f21('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2f21('0x12')],'allowNull':!![],'defaultValue':null,'comment':_0x2f21('0x14')},'mandatoryDisposition':{'type':Sequelize[_0x2f21('0x13')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x4a1239){if(!_0x4a1239)this[_0x2f21('0x15')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0x2f21('0x16'),_0x4a1239);}}};
\ No newline at end of file
index a39f853..c8450be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfad7=['request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','save','update','destroy','get','FaxAccounts','UserProfileResource','stack','name','send','index','Pause','map','FaxAccount','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','mandatoryDispositionPause','rawAttributes','create','body','user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','describe','FaxAccountId','Disposition','getDispositions','findOne','removeDispositions','ids','CannedAnswer','removeAnswers','addInteraction','FaxInteraction','omit','hasOwnProperty','Contact','User','fullname','Tag','Tags','color','tag','addApplications','sequelize','transaction','FaxApplication','findAndCountAll','getApplications','context','exten','localstationid','app','system','description','appdata','push','Answer','Set','ecm','gateway','faxdetect','maxrate','minrate','modem','t38timeout','FAXOPT(','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','VoiceExtension','bulkCreate','updateAccountApplications','tech','createdAt','updatedAt','ListId','findById','getMessages','FaxMessage','$gte','split','format','CmList','CmContact','Contacts','DESC','attachments','join','root','basename','CheckAfterSend','isNil','path','from','fax','List','out','filename','Contact\x20not\x20found','spread','ContactId','Messages','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','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/environment','../../config/license/util','redis','localhost','./faxAccount.socket','jayson/promise','client','http'];(function(_0x415b32,_0x2b84e5){var _0x55cda6=function(_0x1a7452){while(--_0x1a7452){_0x415b32['push'](_0x415b32['shift']());}};_0x55cda6(++_0x2b84e5);}(_0xfad7,0x161));var _0x7fad=function(_0x5500a8,_0x1b8727){_0x5500a8=_0x5500a8-0x0;var _0x4d8734=_0xfad7[_0x5500a8];return _0x4d8734;};'use strict';var emlformat=require(_0x7fad('0x0'));var rimraf=require(_0x7fad('0x1'));var zipdir=require(_0x7fad('0x2'));var jsonpatch=require(_0x7fad('0x3'));var rp=require('request-promise');var moment=require(_0x7fad('0x4'));var BPromise=require(_0x7fad('0x5'));var Mustache=require(_0x7fad('0x6'));var util=require('util');var path=require('path');var sox=require(_0x7fad('0x7'));var csv=require(_0x7fad('0x8'));var ejs=require(_0x7fad('0x9'));var fs=require('fs');var fs_extra=require(_0x7fad('0xa'));var _=require(_0x7fad('0xb'));var squel=require(_0x7fad('0xc'));var crypto=require(_0x7fad('0xd'));var jsforce=require(_0x7fad('0xe'));var deskjs=require(_0x7fad('0xf'));var toCsv=require(_0x7fad('0x8'));var querystring=require(_0x7fad('0x10'));var Papa=require(_0x7fad('0x11'));var Redis=require(_0x7fad('0x12'));var authService=require(_0x7fad('0x13'));var qs=require(_0x7fad('0x14'));var as=require(_0x7fad('0x15'));var hardwareService=require(_0x7fad('0x16'));var logger=require(_0x7fad('0x17'))(_0x7fad('0x18'));var utils=require('../../config/utils');var config=require(_0x7fad('0x19'));var licenseUtil=require(_0x7fad('0x1a'));var db=require('../../mysqldb')['db'];config[_0x7fad('0x1b')]=_['defaults'](config[_0x7fad('0x1b')],{'host':_0x7fad('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x7fad('0x1d'))['register'](socket);var jayson=require(_0x7fad('0x1e'));var client=jayson[_0x7fad('0x1f')][_0x7fad('0x20')]({'port':0x232c});var client9002=jayson[_0x7fad('0x1f')][_0x7fad('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x453bac,_0x114280,_0x4f0a7c,_0x561f5c){return new BPromise(function(_0x5ebf32,_0xa02e64){var _0x5d005a=_0x561f5c||client;return _0x5d005a[_0x7fad('0x21')](_0x453bac,_0x4f0a7c)[_0x7fad('0x22')](function(_0x5dcfd1){logger[_0x7fad('0x23')](_0x7fad('0x24'),_0x114280,_0x7fad('0x25'));logger[_0x7fad('0x26')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x114280,_0x7fad('0x25'),JSON[_0x7fad('0x27')](_0x5dcfd1));if(_0x5dcfd1[_0x7fad('0x28')]){if(_0x5dcfd1[_0x7fad('0x28')][_0x7fad('0x29')]===0x1f4){logger[_0x7fad('0x28')](_0x7fad('0x24'),_0x114280,_0x5dcfd1[_0x7fad('0x28')]['message']);return _0xa02e64(_0x5dcfd1[_0x7fad('0x28')]['message']);}logger[_0x7fad('0x28')]('FaxAccount,\x20%s,\x20%s',_0x114280,_0x5dcfd1[_0x7fad('0x28')][_0x7fad('0x2a')]);return _0x5ebf32(_0x5dcfd1['error'][_0x7fad('0x2a')]);}else{logger[_0x7fad('0x23')](_0x7fad('0x24'),_0x114280,_0x7fad('0x25'));_0x5ebf32(_0x5dcfd1['result']['message']);}})['catch'](function(_0x332d80){logger['error'](_0x7fad('0x24'),_0x114280,_0x332d80);_0xa02e64(_0x332d80);});});}function respondWithStatusCode(_0x530e32,_0x501413){_0x501413=_0x501413||0xcc;return function(_0x10dfcc){if(_0x10dfcc){return _0x530e32[_0x7fad('0x2b')](_0x501413);}return _0x530e32['status'](_0x501413)[_0x7fad('0x2c')]();};}function respondWithResult(_0x4069cc,_0x1a7368){_0x1a7368=_0x1a7368||0xc8;return function(_0x49964b){if(_0x49964b){return _0x4069cc['status'](_0x1a7368)[_0x7fad('0x2d')](_0x49964b);}};}function respondWithFilteredResult(_0x2b8b71,_0x114d99){return function(_0x207d3b){if(_0x207d3b){var _0x291a2f=typeof _0x114d99[_0x7fad('0x2e')]===_0x7fad('0x2f')&&typeof _0x114d99[_0x7fad('0x30')]===_0x7fad('0x2f');var _0x202afd=_0x207d3b[_0x7fad('0x31')];var _0x917a43=_0x291a2f?0x0:_0x114d99[_0x7fad('0x2e')];var _0x3db370=_0x291a2f?_0x207d3b[_0x7fad('0x31')]:_0x114d99[_0x7fad('0x2e')]+_0x114d99[_0x7fad('0x30')];var _0x1079e7;if(_0x3db370>=_0x202afd){_0x3db370=_0x202afd;_0x1079e7=0xc8;}else{_0x1079e7=0xce;}_0x2b8b71[_0x7fad('0x32')](_0x1079e7);return _0x2b8b71[_0x7fad('0x33')](_0x7fad('0x34'),_0x917a43+'-'+_0x3db370+'/'+_0x202afd)['json'](_0x207d3b);}return null;};}function patchUpdates(_0x47cae8){return function(_0x229d42){try{jsonpatch[_0x7fad('0x35')](_0x229d42,_0x47cae8,!![]);}catch(_0x3b3482){return BPromise['reject'](_0x3b3482);}return _0x229d42[_0x7fad('0x36')]();};}function saveUpdates(_0x32279c,_0x559ae0){return function(_0x22ea6f){if(_0x22ea6f){return _0x22ea6f[_0x7fad('0x37')](_0x32279c)['then'](function(_0x41e5c3){return _0x41e5c3;});}return null;};}function removeEntity(_0x5ba6e0,_0xde2eb8){return function(_0x1d1815){if(_0x1d1815){return _0x1d1815[_0x7fad('0x38')]()[_0x7fad('0x22')](function(){var _0x10a055=_0x1d1815[_0x7fad('0x39')]({'plain':!![]});var _0x3da82f=_0x7fad('0x3a');return db[_0x7fad('0x3b')][_0x7fad('0x38')]({'where':{'type':_0x3da82f,'resourceId':_0x10a055['id']}})[_0x7fad('0x22')](function(){return _0x1d1815;});})['then'](function(){_0x5ba6e0[_0x7fad('0x32')](0xcc)[_0x7fad('0x2c')]();});}};}function handleEntityNotFound(_0x104854,_0x245df4){return function(_0x84151a){if(!_0x84151a){_0x104854[_0x7fad('0x2b')](0x194);}return _0x84151a;};}function handleError(_0x57f94e,_0x3ef83b){_0x3ef83b=_0x3ef83b||0x1f4;return function(_0x43980e){logger[_0x7fad('0x28')](_0x43980e[_0x7fad('0x3c')]);if(_0x43980e[_0x7fad('0x3d')]){delete _0x43980e[_0x7fad('0x3d')];}_0x57f94e[_0x7fad('0x32')](_0x3ef83b)[_0x7fad('0x3e')](_0x43980e);};}exports[_0x7fad('0x3f')]=function(_0x3ff89e,_0x519686){var _0xbcbdad={'include':[{'model':db[_0x7fad('0x40')],'as':'mandatoryDispositionPause'}]},_0x1350af={},_0x1900e5={'count':0x0,'rows':[]};var _0x393da4=_[_0x7fad('0x41')](db[_0x7fad('0x42')]['rawAttributes'],function(_0x40e508){return{'name':_0x40e508[_0x7fad('0x43')],'type':_0x40e508['type'][_0x7fad('0x44')]};});_0x1350af[_0x7fad('0x45')]=_[_0x7fad('0x41')](_0x393da4,_0x7fad('0x3d'));_0x1350af[_0x7fad('0x46')]=_[_0x7fad('0x47')](_0x3ff89e[_0x7fad('0x46')]);_0x1350af[_0x7fad('0x48')]=_[_0x7fad('0x49')](_0x1350af[_0x7fad('0x45')],_0x1350af['query']);_0xbcbdad['attributes']=_[_0x7fad('0x49')](_0x1350af['model'],qs[_0x7fad('0x4a')](_0x3ff89e['query'][_0x7fad('0x4a')]));_0xbcbdad[_0x7fad('0x4b')]=_0xbcbdad[_0x7fad('0x4b')][_0x7fad('0x4c')]?_0xbcbdad[_0x7fad('0x4b')]:_0x1350af[_0x7fad('0x45')];if(!_0x3ff89e[_0x7fad('0x46')]['hasOwnProperty'](_0x7fad('0x4d'))){_0xbcbdad[_0x7fad('0x30')]=qs[_0x7fad('0x30')](_0x3ff89e[_0x7fad('0x46')][_0x7fad('0x30')]);_0xbcbdad['offset']=qs[_0x7fad('0x2e')](_0x3ff89e[_0x7fad('0x46')][_0x7fad('0x2e')]);}_0xbcbdad[_0x7fad('0x4e')]=qs[_0x7fad('0x4f')](_0x3ff89e[_0x7fad('0x46')][_0x7fad('0x4f')]);_0xbcbdad[_0x7fad('0x50')]=qs[_0x7fad('0x48')](_[_0x7fad('0x51')](_0x3ff89e['query'],_0x1350af['filters']),_0x393da4);if(_0x3ff89e['query'][_0x7fad('0x52')]){_0xbcbdad[_0x7fad('0x50')]=_['merge'](_0xbcbdad[_0x7fad('0x50')],{'$or':_[_0x7fad('0x41')](_0x393da4,function(_0x16f3c8){if(_0x16f3c8['type']!==_0x7fad('0x53')){var _0x5be9e0={};_0x5be9e0[_0x16f3c8[_0x7fad('0x3d')]]={'$like':'%'+_0x3ff89e['query']['filter']+'%'};return _0x5be9e0;}})});}_0xbcbdad=_[_0x7fad('0x54')]({},_0xbcbdad,_0x3ff89e[_0x7fad('0x55')]);var _0x18ad97={'where':_0xbcbdad[_0x7fad('0x50')]};return db[_0x7fad('0x42')][_0x7fad('0x31')](_0x18ad97)[_0x7fad('0x22')](function(_0x1927d5){_0x1900e5[_0x7fad('0x31')]=_0x1927d5;if(_0x3ff89e[_0x7fad('0x46')][_0x7fad('0x56')]){_0xbcbdad[_0x7fad('0x57')]=[{'all':!![]}];}return db[_0x7fad('0x42')][_0x7fad('0x58')](_0xbcbdad);})['then'](function(_0x324605){_0x1900e5[_0x7fad('0x59')]=_0x324605;return _0x1900e5;})['then'](respondWithFilteredResult(_0x519686,_0xbcbdad))[_0x7fad('0x5a')](handleError(_0x519686,null));};exports[_0x7fad('0x5b')]=function(_0x3d0a11,_0x2397c5){var _0x2ef69f={'raw':![],'where':{'id':_0x3d0a11['params']['id']},'include':[{'model':db['Pause'],'as':_0x7fad('0x5c')}]},_0x1c15ad={};_0x1c15ad[_0x7fad('0x45')]=_[_0x7fad('0x47')](db[_0x7fad('0x42')][_0x7fad('0x5d')]);_0x1c15ad[_0x7fad('0x46')]=_[_0x7fad('0x47')](_0x3d0a11[_0x7fad('0x46')]);_0x1c15ad[_0x7fad('0x48')]=_[_0x7fad('0x49')](_0x1c15ad[_0x7fad('0x45')],_0x1c15ad[_0x7fad('0x46')]);_0x2ef69f[_0x7fad('0x4b')]=_[_0x7fad('0x49')](_0x1c15ad[_0x7fad('0x45')],qs['fields'](_0x3d0a11[_0x7fad('0x46')]['fields']));_0x2ef69f['attributes']=_0x2ef69f[_0x7fad('0x4b')][_0x7fad('0x4c')]?_0x2ef69f[_0x7fad('0x4b')]:_0x1c15ad[_0x7fad('0x45')];if(_0x3d0a11[_0x7fad('0x46')][_0x7fad('0x56')]){_0x2ef69f[_0x7fad('0x57')]=[{'all':!![]}];}_0x2ef69f=_[_0x7fad('0x54')]({},_0x2ef69f,_0x3d0a11[_0x7fad('0x55')]);return db[_0x7fad('0x42')]['find'](_0x2ef69f)[_0x7fad('0x22')](handleEntityNotFound(_0x2397c5,null))[_0x7fad('0x22')](respondWithResult(_0x2397c5,null))[_0x7fad('0x5a')](handleError(_0x2397c5,null));};exports[_0x7fad('0x5e')]=function(_0x2121ff,_0x1ce603){return db[_0x7fad('0x42')][_0x7fad('0x5e')](_0x2121ff[_0x7fad('0x5f')],{})[_0x7fad('0x22')](function(_0x3608bc){var _0x1f4caf=_0x2121ff[_0x7fad('0x60')][_0x7fad('0x39')]({'plain':!![]});if(!_0x1f4caf)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1f4caf[_0x7fad('0x61')]===_0x7fad('0x60')){var _0x3a29f0=_0x3608bc[_0x7fad('0x39')]({'plain':!![]});var _0x2931c0='FaxAccounts';return db[_0x7fad('0x62')]['find']({'where':{'name':_0x2931c0,'userProfileId':_0x1f4caf['userProfileId']},'raw':!![]})[_0x7fad('0x22')](function(_0x578e75){if(_0x578e75&&_0x578e75[_0x7fad('0x63')]===0x0){return db[_0x7fad('0x3b')]['create']({'name':_0x3a29f0[_0x7fad('0x3d')],'resourceId':_0x3a29f0['id'],'type':_0x578e75['name'],'sectionId':_0x578e75['id']},{})['then'](function(){return _0x3608bc;});}else{return _0x3608bc;}})[_0x7fad('0x5a')](function(_0x5f436c){logger[_0x7fad('0x28')](_0x7fad('0x64'),_0x5f436c);throw _0x5f436c;});}return _0x3608bc;})['then'](respondWithResult(_0x1ce603,0xc9))[_0x7fad('0x5a')](handleError(_0x1ce603,null));};exports[_0x7fad('0x37')]=function(_0xa117c6,_0x3feb60){if(_0xa117c6[_0x7fad('0x5f')]['id']){delete _0xa117c6[_0x7fad('0x5f')]['id'];}return db[_0x7fad('0x42')][_0x7fad('0x65')]({'where':{'id':_0xa117c6[_0x7fad('0x66')]['id']},'include':[{'model':db[_0x7fad('0x40')],'as':_0x7fad('0x5c')}]})[_0x7fad('0x22')](handleEntityNotFound(_0x3feb60,null))['then'](saveUpdates(_0xa117c6['body'],null))[_0x7fad('0x22')](respondWithResult(_0x3feb60,null))[_0x7fad('0x5a')](handleError(_0x3feb60,null));};exports['destroy']=function(_0x110af7,_0x35234a){return db[_0x7fad('0x42')][_0x7fad('0x65')]({'where':{'id':_0x110af7[_0x7fad('0x66')]['id']}})[_0x7fad('0x22')](handleEntityNotFound(_0x35234a,null))[_0x7fad('0x22')](removeEntity(_0x35234a,null))[_0x7fad('0x5a')](handleError(_0x35234a,null));};exports[_0x7fad('0x67')]=function(_0x517f73,_0x3fd452){return db[_0x7fad('0x42')][_0x7fad('0x67')]()['then'](respondWithResult(_0x3fd452,null))[_0x7fad('0x5a')](handleError(_0x3fd452,null));};exports['addDisposition']=function(_0x387b8a,_0x3f108d,_0x2329aa){if(_0x387b8a[_0x7fad('0x5f')]['id']){delete _0x387b8a[_0x7fad('0x5f')]['id'];}return db[_0x7fad('0x42')][_0x7fad('0x65')]({'where':{'id':_0x387b8a[_0x7fad('0x66')]['id']}})[_0x7fad('0x22')](handleEntityNotFound(_0x3f108d,null))[_0x7fad('0x22')](function(_0x16f339){if(_0x16f339){_0x387b8a[_0x7fad('0x5f')][_0x7fad('0x68')]=_0x16f339['id'];return db[_0x7fad('0x69')][_0x7fad('0x5e')](_0x387b8a[_0x7fad('0x5f')]);}})['then'](respondWithResult(_0x3f108d,null))[_0x7fad('0x5a')](handleError(_0x3f108d,null));};exports[_0x7fad('0x6a')]=function(_0x4eb815,_0x2ee605,_0x1355f4){var _0x151efe={'raw':![],'where':{}};var _0x2d6f9e={};var _0x4fc30c={'count':0x0,'rows':[]};return db[_0x7fad('0x42')][_0x7fad('0x6b')]({'where':{'id':_0x4eb815[_0x7fad('0x66')]['id']}})[_0x7fad('0x22')](handleEntityNotFound(_0x2ee605,null))[_0x7fad('0x22')](function(_0x5e8482){if(_0x5e8482){_0x2d6f9e[_0x7fad('0x45')]=_[_0x7fad('0x47')](db[_0x7fad('0x69')][_0x7fad('0x5d')]);_0x2d6f9e['query']=_[_0x7fad('0x47')](_0x4eb815['query']);_0x2d6f9e[_0x7fad('0x48')]=_[_0x7fad('0x49')](_0x2d6f9e['model'],_0x2d6f9e['query']);_0x151efe['attributes']=_[_0x7fad('0x49')](_0x2d6f9e['model'],qs[_0x7fad('0x4a')](_0x4eb815[_0x7fad('0x46')][_0x7fad('0x4a')]));_0x151efe[_0x7fad('0x4b')]=_0x151efe[_0x7fad('0x4b')][_0x7fad('0x4c')]?_0x151efe[_0x7fad('0x4b')]:_0x2d6f9e['model'];if(!_0x4eb815[_0x7fad('0x46')]['hasOwnProperty'](_0x7fad('0x4d'))){_0x151efe[_0x7fad('0x30')]=qs[_0x7fad('0x30')](_0x4eb815[_0x7fad('0x46')][_0x7fad('0x30')]);_0x151efe[_0x7fad('0x2e')]=qs['offset'](_0x4eb815['query'][_0x7fad('0x2e')]);}_0x151efe[_0x7fad('0x4e')]=qs[_0x7fad('0x4f')](_0x4eb815['query'][_0x7fad('0x4f')]);_0x151efe[_0x7fad('0x50')]=qs['filters'](_[_0x7fad('0x51')](_0x4eb815[_0x7fad('0x46')],_0x2d6f9e[_0x7fad('0x48')]));_0x151efe[_0x7fad('0x50')]['FaxAccountId']=_0x5e8482['id'];if(_0x4eb815['query'][_0x7fad('0x52')]){_0x151efe[_0x7fad('0x50')]=_[_0x7fad('0x54')](_0x151efe[_0x7fad('0x50')],{'$or':_[_0x7fad('0x41')](_0x151efe[_0x7fad('0x4b')],function(_0x4b40fa){var _0x1852c3={};_0x1852c3[_0x4b40fa]={'$like':'%'+_0x4eb815[_0x7fad('0x46')][_0x7fad('0x52')]+'%'};return _0x1852c3;})});}_0x151efe=_[_0x7fad('0x54')]({},_0x151efe,_0x4eb815[_0x7fad('0x55')]);return db[_0x7fad('0x69')][_0x7fad('0x31')]({'where':_0x151efe[_0x7fad('0x50')]})[_0x7fad('0x22')](function(_0x12204c){_0x4fc30c[_0x7fad('0x31')]=_0x12204c;if(_0x4eb815[_0x7fad('0x46')][_0x7fad('0x56')]){_0x151efe['include']=[{'all':!![]}];}return db[_0x7fad('0x69')][_0x7fad('0x58')](_0x151efe);})['then'](function(_0x5b0393){_0x4fc30c[_0x7fad('0x59')]=_0x5b0393;return _0x4fc30c;});}})[_0x7fad('0x22')](respondWithFilteredResult(_0x2ee605,_0x151efe))[_0x7fad('0x5a')](handleError(_0x2ee605,null));};exports[_0x7fad('0x6c')]=function(_0x3b9280,_0x1c6ab4,_0x43aa7e){return db[_0x7fad('0x42')][_0x7fad('0x65')]({'where':{'id':_0x3b9280[_0x7fad('0x66')]['id']}})[_0x7fad('0x22')](handleEntityNotFound(_0x1c6ab4,null))['then'](function(_0x47b9e9){if(_0x47b9e9){return _0x47b9e9[_0x7fad('0x6c')](_0x3b9280[_0x7fad('0x46')][_0x7fad('0x6d')]);}})[_0x7fad('0x22')](respondWithStatusCode(_0x1c6ab4,null))[_0x7fad('0x5a')](handleError(_0x1c6ab4,null));};exports['addAnswer']=function(_0x39197c,_0x5d3720,_0x3969a9){if(_0x39197c[_0x7fad('0x5f')]['id']){delete _0x39197c['body']['id'];}return db[_0x7fad('0x42')][_0x7fad('0x65')]({'where':{'id':_0x39197c['params']['id']}})[_0x7fad('0x22')](handleEntityNotFound(_0x5d3720,null))[_0x7fad('0x22')](function(_0x3afe64){if(_0x3afe64){_0x39197c[_0x7fad('0x5f')][_0x7fad('0x68')]=_0x3afe64['id'];return db[_0x7fad('0x6e')][_0x7fad('0x5e')](_0x39197c['body']);}})[_0x7fad('0x22')](respondWithResult(_0x5d3720,null))[_0x7fad('0x5a')](handleError(_0x5d3720,null));};exports['getAnswers']=function(_0x311c7b,_0x36a3e8,_0x56a54c){var _0x2fac4f={'raw':![],'where':{}};var _0x117be4={};var _0x593580={'count':0x0,'rows':[]};return db[_0x7fad('0x42')]['findOne']({'where':{'id':_0x311c7b['params']['id']}})[_0x7fad('0x22')](handleEntityNotFound(_0x36a3e8,null))['then'](function(_0xfec7b0){if(_0xfec7b0){_0x117be4[_0x7fad('0x45')]=_[_0x7fad('0x47')](db[_0x7fad('0x6e')][_0x7fad('0x5d')]);_0x117be4['query']=_[_0x7fad('0x47')](_0x311c7b[_0x7fad('0x46')]);_0x117be4[_0x7fad('0x48')]=_['intersection'](_0x117be4['model'],_0x117be4['query']);_0x2fac4f[_0x7fad('0x4b')]=_[_0x7fad('0x49')](_0x117be4[_0x7fad('0x45')],qs[_0x7fad('0x4a')](_0x311c7b[_0x7fad('0x46')][_0x7fad('0x4a')]));_0x2fac4f[_0x7fad('0x4b')]=_0x2fac4f[_0x7fad('0x4b')]['length']?_0x2fac4f['attributes']:_0x117be4[_0x7fad('0x45')];if(!_0x311c7b[_0x7fad('0x46')]['hasOwnProperty'](_0x7fad('0x4d'))){_0x2fac4f[_0x7fad('0x30')]=qs[_0x7fad('0x30')](_0x311c7b[_0x7fad('0x46')][_0x7fad('0x30')]);_0x2fac4f[_0x7fad('0x2e')]=qs['offset'](_0x311c7b[_0x7fad('0x46')][_0x7fad('0x2e')]);}_0x2fac4f[_0x7fad('0x4e')]=qs[_0x7fad('0x4f')](_0x311c7b[_0x7fad('0x46')][_0x7fad('0x4f')]);_0x2fac4f[_0x7fad('0x50')]=qs['filters'](_[_0x7fad('0x51')](_0x311c7b[_0x7fad('0x46')],_0x117be4[_0x7fad('0x48')]));_0x2fac4f[_0x7fad('0x50')][_0x7fad('0x68')]=_0xfec7b0['id'];if(_0x311c7b[_0x7fad('0x46')][_0x7fad('0x52')]){_0x2fac4f['where']=_[_0x7fad('0x54')](_0x2fac4f[_0x7fad('0x50')],{'$or':_[_0x7fad('0x41')](_0x2fac4f[_0x7fad('0x4b')],function(_0x28002e){var _0x229492={};_0x229492[_0x28002e]={'$like':'%'+_0x311c7b[_0x7fad('0x46')]['filter']+'%'};return _0x229492;})});}_0x2fac4f=_['merge']({},_0x2fac4f,_0x311c7b[_0x7fad('0x55')]);return db['CannedAnswer'][_0x7fad('0x31')]({'where':_0x2fac4f[_0x7fad('0x50')]})[_0x7fad('0x22')](function(_0x84b319){_0x593580['count']=_0x84b319;if(_0x311c7b['query'][_0x7fad('0x56')]){_0x2fac4f[_0x7fad('0x57')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x2fac4f);})['then'](function(_0x2570a2){_0x593580[_0x7fad('0x59')]=_0x2570a2;return _0x593580;});}})[_0x7fad('0x22')](respondWithFilteredResult(_0x36a3e8,_0x2fac4f))[_0x7fad('0x5a')](handleError(_0x36a3e8,null));};exports[_0x7fad('0x6f')]=function(_0x405e7f,_0x8c7341,_0x131475){return db[_0x7fad('0x42')][_0x7fad('0x65')]({'where':{'id':_0x405e7f['params']['id']}})[_0x7fad('0x22')](handleEntityNotFound(_0x8c7341,null))[_0x7fad('0x22')](function(_0x3cc93e){if(_0x3cc93e){return _0x3cc93e[_0x7fad('0x6f')](_0x405e7f[_0x7fad('0x46')]['ids']);}})[_0x7fad('0x22')](respondWithStatusCode(_0x8c7341,null))[_0x7fad('0x5a')](handleError(_0x8c7341,null));};exports[_0x7fad('0x70')]=function(_0x4b2507,_0x43c4ed,_0x94c905){return db[_0x7fad('0x71')]['find']({'where':{'id':_0x4b2507['params']['id']}})[_0x7fad('0x22')](handleEntityNotFound(_0x43c4ed,null))['then'](function(_0x57b01f){if(_0x57b01f){return _0x57b01f[_0x7fad('0x70')](_0x4b2507['body']['ids'],_[_0x7fad('0x72')](_0x4b2507[_0x7fad('0x5f')],['ids','id'])||{});}})[_0x7fad('0x22')](respondWithResult(_0x43c4ed,null))[_0x7fad('0x5a')](handleError(_0x43c4ed,null));};exports['getInteractions']=function(_0x170975,_0x5aa0c0,_0x503b6f){var _0x483305={'raw':![],'where':{}};var _0x185590={};var _0x5065ee={'count':0x0,'rows':[]};return db['FaxAccount']['findOne']({'where':{'id':_0x170975['params']['id']}})['then'](handleEntityNotFound(_0x5aa0c0,null))[_0x7fad('0x22')](function(_0x315432){if(_0x315432){_0x185590[_0x7fad('0x45')]=_[_0x7fad('0x47')](db[_0x7fad('0x71')]['rawAttributes']);_0x185590['query']=_[_0x7fad('0x47')](_0x170975[_0x7fad('0x46')]);_0x185590[_0x7fad('0x48')]=_[_0x7fad('0x49')](_0x185590[_0x7fad('0x45')],_0x185590['query']);_0x483305[_0x7fad('0x4b')]=_[_0x7fad('0x49')](_0x185590[_0x7fad('0x45')],qs[_0x7fad('0x4a')](_0x170975['query']['fields']));_0x483305['attributes']=_0x483305[_0x7fad('0x4b')][_0x7fad('0x4c')]?_0x483305[_0x7fad('0x4b')]:_0x185590[_0x7fad('0x45')];if(!_0x170975[_0x7fad('0x46')][_0x7fad('0x73')](_0x7fad('0x4d'))){_0x483305[_0x7fad('0x30')]=qs[_0x7fad('0x30')](_0x170975[_0x7fad('0x46')][_0x7fad('0x30')]);_0x483305['offset']=qs[_0x7fad('0x2e')](_0x170975['query'][_0x7fad('0x2e')]);}_0x483305[_0x7fad('0x4e')]=qs[_0x7fad('0x4f')](_0x170975[_0x7fad('0x46')]['sort']);_0x483305[_0x7fad('0x50')]=qs['filters'](_[_0x7fad('0x51')](_0x170975[_0x7fad('0x46')],_0x185590[_0x7fad('0x48')]));_0x483305[_0x7fad('0x50')][_0x7fad('0x68')]=_0x315432['id'];if(_0x170975[_0x7fad('0x46')]['filter']){_0x483305['where']=_[_0x7fad('0x54')](_0x483305[_0x7fad('0x50')],{'$or':_[_0x7fad('0x41')](_0x483305[_0x7fad('0x4b')],function(_0x2c37c0){var _0x4eb98e={};_0x4eb98e[_0x2c37c0]={'$like':'%'+_0x170975[_0x7fad('0x46')]['filter']+'%'};return _0x4eb98e;})});}_0x483305=_[_0x7fad('0x54')]({},_0x483305,_0x170975[_0x7fad('0x55')]);return db['FaxInteraction'][_0x7fad('0x31')]({'where':_0x483305['where']})['then'](function(_0x49a7fc){_0x5065ee[_0x7fad('0x31')]=_0x49a7fc;if(_0x170975[_0x7fad('0x46')][_0x7fad('0x56')]){_0x483305[_0x7fad('0x57')]=[{'model':db['CmContact'],'as':_0x7fad('0x74'),'required':![]},{'model':db[_0x7fad('0x75')],'as':'Owner','attributes':[_0x7fad('0x3d'),_0x7fad('0x76'),'internal'],'required':![]},{'model':db[_0x7fad('0x77')],'as':_0x7fad('0x78'),'attributes':['id','name',_0x7fad('0x79')],'where':_0x170975[_0x7fad('0x46')]['tag']?{'id':_0x170975[_0x7fad('0x46')][_0x7fad('0x7a')]}:undefined,'required':_0x170975[_0x7fad('0x46')]['tag']?!![]:![]}];}return db[_0x7fad('0x71')][_0x7fad('0x58')](_0x483305);})[_0x7fad('0x22')](function(_0x487fad){_0x5065ee['rows']=_0x487fad;return _0x5065ee;});}})[_0x7fad('0x22')](respondWithFilteredResult(_0x5aa0c0,_0x483305))[_0x7fad('0x5a')](handleError(_0x5aa0c0,null));};exports[_0x7fad('0x7b')]=function(_0x229525,_0x2d5066,_0x1d3bea){return db[_0x7fad('0x42')][_0x7fad('0x6b')]({'where':{'id':_0x229525[_0x7fad('0x66')]['id']}})[_0x7fad('0x22')](handleEntityNotFound(_0x2d5066,null))[_0x7fad('0x22')](function(_0x6964ef){if(_0x6964ef){return db[_0x7fad('0x7c')][_0x7fad('0x7d')](function(_0x38fc95){return db[_0x7fad('0x7e')][_0x7fad('0x38')]({'where':{'FaxAccountId':_0x229525['params']['id']},'transaction':_0x38fc95})[_0x7fad('0x22')](function(_0x2ebcdd){var _0x19b82a=_[_0x7fad('0x41')](_0x229525[_0x7fad('0x5f')],function(_0x274482){_0x274482[_0x7fad('0x68')]=_0x229525['params']['id'];return _0x274482;});return db['FaxApplication']['bulkCreate'](_0x19b82a,{'transaction':_0x38fc95});});})['then'](function(){return db[_0x7fad('0x7e')][_0x7fad('0x7f')]({'where':{'FaxAccountId':_0x229525[_0x7fad('0x66')]['id']},'order':'priority'});});}})['then'](respondWithResult(_0x2d5066,null))[_0x7fad('0x5a')](handleError(_0x2d5066,null));};exports[_0x7fad('0x80')]=function(_0x5930c7,_0x1f6176,_0x54aedb){var _0x58a6c6={};var _0x16a442={};var _0x517a92;var _0x108afb;return db[_0x7fad('0x42')][_0x7fad('0x6b')]({'where':{'id':_0x5930c7['params']['id']}})[_0x7fad('0x22')](handleEntityNotFound(_0x1f6176,null))[_0x7fad('0x22')](function(_0x4926ec){if(_0x4926ec){_0x517a92=_0x4926ec;_0x16a442[_0x7fad('0x45')]=_[_0x7fad('0x47')](db[_0x7fad('0x7e')][_0x7fad('0x5d')]);_0x16a442['query']=_[_0x7fad('0x47')](_0x5930c7[_0x7fad('0x46')]);_0x16a442[_0x7fad('0x48')]=_[_0x7fad('0x49')](_0x16a442[_0x7fad('0x45')],_0x16a442['query']);_0x58a6c6[_0x7fad('0x4b')]=_[_0x7fad('0x49')](_0x16a442[_0x7fad('0x45')],qs[_0x7fad('0x4a')](_0x5930c7[_0x7fad('0x46')]['fields']));_0x58a6c6[_0x7fad('0x4b')]=_0x58a6c6[_0x7fad('0x4b')][_0x7fad('0x4c')]?_0x58a6c6[_0x7fad('0x4b')]:_0x16a442['model'];_0x58a6c6[_0x7fad('0x4e')]=qs[_0x7fad('0x4f')](_0x5930c7[_0x7fad('0x46')]['sort']);_0x58a6c6[_0x7fad('0x50')]=qs['filters'](_[_0x7fad('0x51')](_0x5930c7['query'],_0x16a442[_0x7fad('0x48')]));if(_0x5930c7[_0x7fad('0x46')]['filter']){_0x58a6c6[_0x7fad('0x50')]=_[_0x7fad('0x54')](_0x58a6c6['where'],{'$or':_['map'](_0x58a6c6[_0x7fad('0x4b')],function(_0x93ab5e){var _0x3ca574={};_0x3ca574[_0x93ab5e]={'$like':'%'+_0x5930c7[_0x7fad('0x46')][_0x7fad('0x52')]+'%'};return _0x3ca574;})});}_0x58a6c6=_[_0x7fad('0x54')]({},_0x58a6c6,_0x5930c7[_0x7fad('0x55')]);return _0x517a92[_0x7fad('0x80')](_0x58a6c6);}})[_0x7fad('0x22')](function(_0xbb4155){if(_0xbb4155){_0x108afb=_0xbb4155[_0x7fad('0x4c')];if(!_0x5930c7[_0x7fad('0x46')]['hasOwnProperty'](_0x7fad('0x4d'))){_0x58a6c6[_0x7fad('0x30')]=qs[_0x7fad('0x30')](_0x5930c7[_0x7fad('0x46')][_0x7fad('0x30')]);_0x58a6c6[_0x7fad('0x2e')]=qs['offset'](_0x5930c7[_0x7fad('0x46')][_0x7fad('0x2e')]);}return _0x517a92[_0x7fad('0x80')](_0x58a6c6);}})[_0x7fad('0x22')](function(_0x4540db){if(_0x4540db){return _0x4540db?{'count':_0x108afb,'rows':_0x4540db}:null;}})[_0x7fad('0x22')](respondWithResult(_0x1f6176,null))[_0x7fad('0x5a')](handleError(_0x1f6176,null));};function Extension(_0x484110,_0xac3acb,_0x1fb07d,_0x1cd291){this[_0x7fad('0x81')]='from-voip-provider';this[_0x7fad('0x82')]=_0x484110[_0x7fad('0x83')];this[_0x7fad('0x84')]=_0x1cd291;this['type']=_0x7fad('0x85');this[_0x7fad('0x86')]='Fax\x20Extension';this[_0x7fad('0x68')]=_0x484110['id'];this['priority']=_0xac3acb;this[_0x7fad('0x87')]=_0x1fb07d;}function createExtensionsReciveFax(_0x5e4771){var _0x36252e=0x1;var _0x270d58=[];_0x270d58[_0x7fad('0x88')](new Extension(_0x5e4771,_0x36252e,'',_0x7fad('0x89')));_0x36252e+=0x1;_0x270d58[_0x7fad('0x88')](new Extension(_0x5e4771,_0x36252e,'CDR(type)=inbound-fax',_0x7fad('0x8a')));_0x36252e+=0x1;for(var _0x5b9543 in _0x5e4771){if(_0x5e4771[_0x7fad('0x73')](_0x5b9543)&&(_0x5b9543===_0x7fad('0x8b')||_0x5b9543===_0x7fad('0x83')||_0x5b9543===_0x7fad('0x8c')||_0x5b9543===_0x7fad('0x8d')||_0x5b9543==='headerinfo'||_0x5b9543===_0x7fad('0x8e')||_0x5b9543===_0x7fad('0x8f')||_0x5b9543===_0x7fad('0x90')||_0x5b9543===_0x7fad('0x91'))){_0x270d58[_0x7fad('0x88')](new Extension(_0x5e4771,_0x36252e,_0x7fad('0x92')+_0x5b9543+')='+_0x5e4771[_0x5b9543],_0x7fad('0x8a')));_0x36252e+=0x1;}}_0x270d58[_0x7fad('0x88')](new Extension(_0x5e4771,_0x36252e,'6',_0x7fad('0x93')));_0x36252e+=0x1;_0x270d58[_0x7fad('0x88')](new Extension(_0x5e4771,_0x36252e,_0x7fad('0x94'),_0x7fad('0x95')));_0x36252e=0x0;return _0x270d58;}exports[_0x7fad('0x96')]=function(_0x2897c5,_0x3dbfcf,_0xcfaa5){var _0x42ec89;return db[_0x7fad('0x7c')]['transaction'](function(_0x25ac06){return db[_0x7fad('0x42')][_0x7fad('0x5e')](_0x2897c5[_0x7fad('0x5f')],{'transaction':_0x25ac06})[_0x7fad('0x22')](function(_0x35d273){_0x42ec89=_0x35d273[_0x7fad('0x39')]({'plain':!![]});return db[_0x7fad('0x97')][_0x7fad('0x98')](createExtensionsReciveFax(_0x42ec89),{'transaction':_0x25ac06});});})[_0x7fad('0x22')](function(){return _0x42ec89;})[_0x7fad('0x22')](respondWithResult(_0x3dbfcf,null))[_0x7fad('0x5a')](handleError(_0x3dbfcf,null));};exports[_0x7fad('0x99')]=function(_0x2aeaf5,_0x5773cf,_0x3ebdb2){var _0x4d9a02;return db['sequelize'][_0x7fad('0x7d')](function(_0x456b94){return db[_0x7fad('0x42')][_0x7fad('0x37')](_0x2aeaf5[_0x7fad('0x5f')],{'where':{'id':_0x2aeaf5[_0x7fad('0x5f')]['id']},'transaction':_0x456b94})[_0x7fad('0x22')](function(_0x4494bc){return db[_0x7fad('0x97')][_0x7fad('0x38')]({'where':{'FaxAccountId':_0x2aeaf5[_0x7fad('0x5f')]['id']},'transaction':_0x456b94})['then'](function(_0x5a8ba9){return db[_0x7fad('0x97')][_0x7fad('0x98')](createExtensionsReciveFax(_[_0x7fad('0x72')](_0x2aeaf5[_0x7fad('0x5f')],[_0x7fad('0x9a'),_0x7fad('0x44'),_0x7fad('0x9b'),_0x7fad('0x9c'),'TrunkId',_0x7fad('0x9d')])),{'transaction':_0x456b94});});});})[_0x7fad('0x22')](function(){return db[_0x7fad('0x42')][_0x7fad('0x9e')](_0x2aeaf5[_0x7fad('0x5f')]['id']);})['then'](respondWithResult(_0x5773cf,null))[_0x7fad('0x5a')](handleError(_0x5773cf,null));};exports[_0x7fad('0x9f')]=function(_0x537807,_0x234b7c,_0x3dfd1c){var _0x1f0c50={'raw':!![],'where':{}};var _0x7ac92={};var _0x30c6ad={'count':0x0,'rows':[]};return db[_0x7fad('0x42')][_0x7fad('0x6b')]({'where':{'id':_0x537807[_0x7fad('0x66')]['id']}})[_0x7fad('0x22')](handleEntityNotFound(_0x234b7c,null))['then'](function(_0x3673c6){if(_0x3673c6){_0x7ac92[_0x7fad('0x45')]=_[_0x7fad('0x47')](db[_0x7fad('0xa0')][_0x7fad('0x5d')]);_0x7ac92[_0x7fad('0x46')]=_[_0x7fad('0x47')](_0x537807[_0x7fad('0x46')]);_0x7ac92['filters']=_['intersection'](_0x7ac92[_0x7fad('0x45')],_0x7ac92[_0x7fad('0x46')]);_0x1f0c50['attributes']=_[_0x7fad('0x49')](_0x7ac92[_0x7fad('0x45')],qs[_0x7fad('0x4a')](_0x537807[_0x7fad('0x46')][_0x7fad('0x4a')]));_0x1f0c50[_0x7fad('0x4b')]=_0x1f0c50[_0x7fad('0x4b')]['length']?_0x1f0c50['attributes']:_0x7ac92[_0x7fad('0x45')];if(!_0x537807[_0x7fad('0x46')][_0x7fad('0x73')](_0x7fad('0x4d'))){_0x1f0c50[_0x7fad('0x30')]=qs['limit'](_0x537807[_0x7fad('0x46')][_0x7fad('0x30')]);_0x1f0c50[_0x7fad('0x2e')]=qs['offset'](_0x537807[_0x7fad('0x46')][_0x7fad('0x2e')]);}_0x1f0c50[_0x7fad('0x4e')]=qs[_0x7fad('0x4f')](_0x537807['query'][_0x7fad('0x4f')]);_0x1f0c50[_0x7fad('0x50')]=qs[_0x7fad('0x48')](_[_0x7fad('0x51')](_0x537807[_0x7fad('0x46')],_0x7ac92[_0x7fad('0x48')]));_0x1f0c50[_0x7fad('0x50')][_0x7fad('0x68')]=_0x3673c6['id'];if(_0x537807[_0x7fad('0x46')][_0x7fad('0x52')]){_0x1f0c50[_0x7fad('0x50')]=_[_0x7fad('0x54')](_0x1f0c50[_0x7fad('0x50')],{'$or':_[_0x7fad('0x41')](_0x1f0c50[_0x7fad('0x4b')],function(_0x3fd36b){var _0x3a882b={};_0x3a882b[_0x3fd36b]={'$like':'%'+_0x537807[_0x7fad('0x46')][_0x7fad('0x52')]+'%'};return _0x3a882b;})});}if(_0x537807[_0x7fad('0x46')][_0x7fad('0xa1')]){var _0x4ad3d1=_0x537807['query'][_0x7fad('0xa1')][_0x7fad('0xa2')](',');var _0x158150={};_0x158150[_0x4ad3d1[0x0]]={'$gte':moment(_0x4ad3d1[0x1])[_0x7fad('0xa3')]('YYYY-MM-DD\x20HH:mm:ss')};_0x1f0c50[_0x7fad('0x50')]=_[_0x7fad('0x54')](_0x1f0c50[_0x7fad('0x50')],_0x158150);}_0x1f0c50=_[_0x7fad('0x54')]({},_0x1f0c50,_0x537807[_0x7fad('0x55')]);return db[_0x7fad('0xa0')][_0x7fad('0x31')]({'where':_0x1f0c50[_0x7fad('0x50')]})[_0x7fad('0x22')](function(_0x1d0dd6){_0x30c6ad[_0x7fad('0x31')]=_0x1d0dd6;if(_0x537807['query'][_0x7fad('0x56')]){_0x1f0c50['include']=[{'all':!![]}];}return db[_0x7fad('0xa0')][_0x7fad('0x58')](_0x1f0c50);})[_0x7fad('0x22')](function(_0x198a68){_0x30c6ad['rows']=_0x198a68;return _0x30c6ad;});}})[_0x7fad('0x22')](respondWithFilteredResult(_0x234b7c,_0x1f0c50))[_0x7fad('0x5a')](handleError(_0x234b7c,null));};exports[_0x7fad('0x3e')]=function(_0x17204a,_0x62aa3b,_0x1b84ca){var _0x12a19c,_0x3cb9b3={},_0x5c966c;if(_0x17204a['body']['to']){_0x5c966c=_0x17204a[_0x7fad('0x5f')]['to'][0x0];}return db[_0x7fad('0x42')][_0x7fad('0x65')]({'where':{'id':_0x17204a['params']['id']},'include':[{'model':db[_0x7fad('0xa4')],'as':'List','include':[{'model':db[_0x7fad('0xa5')],'as':_0x7fad('0xa6'),'where':{'fax':_0x5c966c},'limit':0x1,'order':[[_0x7fad('0x9c'),_0x7fad('0xa7')]]}]}]})[_0x7fad('0x22')](handleEntityNotFound(_0x62aa3b,null))[_0x7fad('0x22')](function(_0x21a484){_0x12a19c=_0x21a484;if(_0x17204a[_0x7fad('0x5f')]['attachments']&&_0x17204a[_0x7fad('0x5f')][_0x7fad('0xa8')][_0x7fad('0x4c')]){for(var _0x9cbc0e=0x0;_0x9cbc0e<_0x17204a[_0x7fad('0x5f')][_0x7fad('0xa8')][_0x7fad('0x4c')];_0x9cbc0e+=0x1){_0x17204a[_0x7fad('0x5f')]['attachments'][_0x9cbc0e]={'filename':_0x17204a[_0x7fad('0x5f')][_0x7fad('0xa8')][_0x9cbc0e][_0x7fad('0x3d')],'id':_0x17204a['body'][_0x7fad('0xa8')][_0x9cbc0e]['id'],'path':path[_0x7fad('0xa9')](config[_0x7fad('0xaa')],'server/files/attachments',_0x17204a[_0x7fad('0x5f')][_0x7fad('0xa8')][_0x9cbc0e][_0x7fad('0xab')])};}}return respondWithRpcPromise(_0x7fad('0xac'),'CheckAfterSend',{'FaxAccountId':_[_0x7fad('0xad')](_0x17204a[_0x7fad('0x66')]['id'])?undefined:_0x17204a[_0x7fad('0x66')]['id'],'path':_['isNil'](_0x17204a['body']['attachments'][0x0][_0x7fad('0xae')])?undefined:_0x17204a[_0x7fad('0x5f')]['attachments'][0x0]['path'],'fax':_['isNil'](_0x17204a[_0x7fad('0x5f')]['to'][0x0])?undefined:_0x17204a[_0x7fad('0x5f')]['to'][0x0]},client9002);})[_0x7fad('0x22')](function(){if(_0x12a19c){if(_['isNil'](_0x17204a[_0x7fad('0x5f')][_0x7fad('0xaf')])){_0x17204a[_0x7fad('0x5f')]['from']=util[_0x7fad('0xa3')]('\x22%s\x22\x20<%s>',_0x12a19c['name'],_0x12a19c[_0x7fad('0xb0')]);}if(_0x12a19c[_0x7fad('0xb1')]){if(_0x12a19c[_0x7fad('0xb1')][_0x7fad('0xa6')][_0x7fad('0x4c')]){return _0x12a19c[_0x7fad('0xb1')][_0x7fad('0xa6')][0x0];}else{return db[_0x7fad('0xa5')][_0x7fad('0x5e')](_['defaults'](_0x17204a[_0x7fad('0x5f')],{'firstName':_0x17204a[_0x7fad('0x5f')]['to'][0x0],'phone':_0x17204a[_0x7fad('0x5f')]['to'][0x0],'fax':_0x17204a[_0x7fad('0x5f')]['to'][0x0],'ListId':_0x12a19c[_0x7fad('0x9d')]}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error('Send\x20Fax\x20failed');}})[_0x7fad('0x22')](function(_0x51f886){if(_0x51f886){return db[_0x7fad('0x71')][_0x7fad('0x65')]({'where':{'ContactId':_0x51f886['id'],'closed':![],'FaxAccountId':_0x12a19c['id']}})[_0x7fad('0x22')](function(_0x37f160){if(_0x37f160){return[_0x37f160,![]];}return db[_0x7fad('0x71')]['create']({'UserId':_0x17204a[_0x7fad('0x60')]['id'],'ContactId':_0x51f886['id'],'FaxAccountId':_0x12a19c['id'],'fax':_0x17204a[_0x7fad('0x5f')]['to'][0x0],'firstMsgDirection':_0x7fad('0xb2'),'Messages':[_[_0x7fad('0x54')](_0x17204a[_0x7fad('0x5f')],{'read':![],'body':_0x17204a['body'][_0x7fad('0xa8')][0x0][_0x7fad('0xb3')],'FaxAccountId':_0x12a19c['id'],'UserId':_0x17204a['user']['id'],'ContactId':_0x51f886['id'],'AttachmentId':_0x17204a['body']['attachments'][0x0]['id']})]},{'include':[{'model':db[_0x7fad('0xa0')],'as':'Messages'}]})[_0x7fad('0x22')](function(_0x1607a1){return[_0x1607a1,!![]];});});}else{throw new Error(_0x7fad('0xb4'));}})[_0x7fad('0xb5')](function(_0x16cdf5,_0x2c0501){if(_0x2c0501){return _0x16cdf5;}return db['FaxMessage'][_0x7fad('0x5e')]({'direction':_0x7fad('0xb2'),'read':![],'body':_0x17204a[_0x7fad('0x5f')][_0x7fad('0xa8')][0x0]['filename'],'FaxAccountId':_0x12a19c['id'],'FaxInteractionId':_0x16cdf5['id'],'UserId':_0x17204a[_0x7fad('0x60')]['id'],'ContactId':_0x16cdf5[_0x7fad('0xb6')],'AttachmentId':_0x17204a[_0x7fad('0x5f')]['attachments'][0x0]['id']})[_0x7fad('0x22')](function(_0xe1260e){_0x16cdf5['dataValues'][_0x7fad('0xb7')]=[];_0x16cdf5[_0x7fad('0xb8')]['Messages'][_0x7fad('0x88')](_0xe1260e[_0x7fad('0xb8')]);return _0x16cdf5;});})['then'](function(_0x4022b6){respondWithRpcPromise('SendFax',_0x7fad('0xb9'),{'FaxAccountId':_['isNil'](_0x17204a[_0x7fad('0x66')]['id'])?undefined:_0x17204a[_0x7fad('0x66')]['id'],'path':_[_0x7fad('0xad')](_0x17204a[_0x7fad('0x5f')]['attachments'][0x0][_0x7fad('0xae')])?undefined:_0x17204a[_0x7fad('0x5f')][_0x7fad('0xa8')][0x0]['path'],'fax':_[_0x7fad('0xad')](_0x17204a[_0x7fad('0x5f')]['to'][0x0])?undefined:_0x17204a['body']['to'][0x0],'AttachmentId':_0x17204a['body'][_0x7fad('0xa8')][0x0]['id']},client9002)[_0x7fad('0x22')](function(_0x53ec0a){logger[_0x7fad('0x23')](_0x7fad('0xba'),_0x53ec0a);})[_0x7fad('0x5a')](function(_0x24bee2){logger[_0x7fad('0x23')](_0x7fad('0xba'),_0x24bee2);});return _0x4022b6;})[_0x7fad('0x22')](respondWithResult(_0x62aa3b,null))['catch'](handleError(_0x62aa3b,null));};exports[_0x7fad('0xbb')]=function(_0x33f67c,_0x4da575,_0xe89a3b){return db['FaxAccount'][_0x7fad('0x65')]({'where':{'id':_0x33f67c[_0x7fad('0x66')]['id']}})[_0x7fad('0x22')](handleEntityNotFound(_0x4da575,null))[_0x7fad('0x22')](function(_0x57509f){if(_0x57509f){return _0x57509f[_0x7fad('0xbb')](_0x33f67c[_0x7fad('0x5f')][_0x7fad('0x6d')],_[_0x7fad('0x72')](_0x33f67c[_0x7fad('0x5f')],['ids','id'])||{})['spread'](function(_0x3526a8){for(var _0x461e13=0x0;_0x461e13<_0x33f67c['body']['ids']['length'];_0x461e13+=0x1){socket[_0x7fad('0xbc')](_0x7fad('0xbd'),{'UserId':Number(_0x33f67c['body'][_0x7fad('0x6d')][_0x461e13]),'FaxAccountId':Number(_0x33f67c[_0x7fad('0x66')]['id'])});}return _0x3526a8;});}})[_0x7fad('0x22')](respondWithResult(_0x4da575,null))[_0x7fad('0x5a')](handleError(_0x4da575,null));};exports['removeAgents']=function(_0x9b92c1,_0x1497ed,_0x389a6a){return db[_0x7fad('0x42')]['find']({'where':{'id':_0x9b92c1[_0x7fad('0x66')]['id']}})[_0x7fad('0x22')](handleEntityNotFound(_0x1497ed,null))['then'](function(_0x4f8290){if(_0x4f8290){return _0x4f8290[_0x7fad('0xbe')](_0x9b92c1[_0x7fad('0x46')][_0x7fad('0x6d')])[_0x7fad('0x22')](function(){if(_['isArray'](_0x9b92c1[_0x7fad('0x46')][_0x7fad('0x6d')])){for(var _0x4570f5=0x0;_0x4570f5<_0x9b92c1[_0x7fad('0x46')][_0x7fad('0x6d')]['length'];_0x4570f5+=0x1){socket[_0x7fad('0xbc')](_0x7fad('0xbf'),{'UserId':Number(_0x9b92c1[_0x7fad('0x46')][_0x7fad('0x6d')][_0x4570f5]),'FaxAccountId':Number(_0x9b92c1[_0x7fad('0x66')]['id'])});}}else{socket[_0x7fad('0xbc')]('userFaxAccount:remove',{'UserId':Number(_0x9b92c1[_0x7fad('0x46')]['ids']),'FaxAccountId':Number(_0x9b92c1[_0x7fad('0x66')]['id'])});}});}})[_0x7fad('0x22')](respondWithStatusCode(_0x1497ed,null))[_0x7fad('0x5a')](handleError(_0x1497ed,null));};exports[_0x7fad('0xc0')]=function(_0x160435,_0x50b135,_0x5ad0ab){var _0x19055a={};var _0x540bba={};var _0x180172;var _0xb7d812;return db[_0x7fad('0x42')][_0x7fad('0x6b')]({'where':{'id':_0x160435[_0x7fad('0x66')]['id']}})[_0x7fad('0x22')](handleEntityNotFound(_0x50b135,null))[_0x7fad('0x22')](function(_0x5a2e67){if(_0x5a2e67){_0x180172=_0x5a2e67;_0x540bba[_0x7fad('0x45')]=_['keys'](db[_0x7fad('0x75')]['rawAttributes']);_0x540bba[_0x7fad('0x46')]=_[_0x7fad('0x47')](_0x160435[_0x7fad('0x46')]);_0x540bba[_0x7fad('0x48')]=_[_0x7fad('0x49')](_0x540bba[_0x7fad('0x45')],_0x540bba[_0x7fad('0x46')]);_0x19055a[_0x7fad('0x4b')]=_[_0x7fad('0x49')](_0x540bba[_0x7fad('0x45')],qs['fields'](_0x160435[_0x7fad('0x46')][_0x7fad('0x4a')]));_0x19055a['attributes']=_0x19055a[_0x7fad('0x4b')][_0x7fad('0x4c')]?_0x19055a['attributes']:_0x540bba['model'];_0x19055a[_0x7fad('0x4e')]=qs[_0x7fad('0x4f')](_0x160435[_0x7fad('0x46')][_0x7fad('0x4f')]);_0x19055a[_0x7fad('0x50')]=qs[_0x7fad('0x48')](_[_0x7fad('0x51')](_0x160435[_0x7fad('0x46')],_0x540bba[_0x7fad('0x48')]));if(_0x160435[_0x7fad('0x46')]['filter']){_0x19055a['where']=_[_0x7fad('0x54')](_0x19055a[_0x7fad('0x50')],{'$or':_[_0x7fad('0x41')](_0x19055a[_0x7fad('0x4b')],function(_0x25009a){var _0x3fe9a9={};_0x3fe9a9[_0x25009a]={'$like':'%'+_0x160435[_0x7fad('0x46')][_0x7fad('0x52')]+'%'};return _0x3fe9a9;})});}_0x19055a=_[_0x7fad('0x54')]({},_0x19055a,_0x160435[_0x7fad('0x55')]);return _0x180172[_0x7fad('0xc0')](_0x19055a);}})[_0x7fad('0x22')](function(_0x377f99){if(_0x377f99){_0xb7d812=_0x377f99['length'];if(!_0x160435[_0x7fad('0x46')][_0x7fad('0x73')](_0x7fad('0x4d'))){_0x19055a[_0x7fad('0x30')]=qs[_0x7fad('0x30')](_0x160435[_0x7fad('0x46')][_0x7fad('0x30')]);_0x19055a[_0x7fad('0x2e')]=qs[_0x7fad('0x2e')](_0x160435[_0x7fad('0x46')]['offset']);}return _0x180172[_0x7fad('0xc0')](_0x19055a);}})['then'](function(_0x17f7ba){if(_0x17f7ba){return _0x17f7ba?{'count':_0xb7d812,'rows':_0x17f7ba}:null;}})[_0x7fad('0x22')](respondWithResult(_0x50b135,null))[_0x7fad('0x5a')](handleError(_0x50b135,null));};
\ No newline at end of file
+var _0x3008=['squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','FaxAccounts','UserProfileResource','stack','name','send','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','Pause','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','removeDispositions','CannedAnswer','removeAnswers','ids','addInteraction','FaxInteraction','getInteractions','nolimit','CmContact','Contact','User','Owner','internal','Tag','Tags','color','addApplications','sequelize','transaction','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','from-voip-provider','exten','localstationid','app','system','description','Fax\x20Extension','appdata','Answer','CDR(type)=inbound-fax','gateway','maxrate','minrate','modem','t38timeout','push','FAXOPT(','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','addAccountApplications','VoiceExtension','updateAccountApplications','omit','tech','updatedAt','TrunkId','ListId','findById','FaxMessage','$gte','split','format','CmList','DESC','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','List','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Contact\x20not\x20found','spread','ContactId','dataValues','Messages','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','fs-extra'];(function(_0x4e0376,_0x5ba330){var _0x507be2=function(_0x4d38f4){while(--_0x4d38f4){_0x4e0376['push'](_0x4e0376['shift']());}};_0x507be2(++_0x5ba330);}(_0x3008,0x174));var _0x8300=function(_0x5416db,_0x55683a){_0x5416db=_0x5416db-0x0;var _0x243e35=_0x3008[_0x5416db];return _0x243e35;};'use strict';var emlformat=require(_0x8300('0x0'));var rimraf=require(_0x8300('0x1'));var zipdir=require(_0x8300('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8300('0x3'));var moment=require('moment');var BPromise=require(_0x8300('0x4'));var Mustache=require(_0x8300('0x5'));var util=require(_0x8300('0x6'));var path=require(_0x8300('0x7'));var sox=require('sox');var csv=require(_0x8300('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8300('0x9'));var _=require('lodash');var squel=require(_0x8300('0xa'));var crypto=require(_0x8300('0xb'));var jsforce=require(_0x8300('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8300('0x8'));var querystring=require('querystring');var Papa=require(_0x8300('0xd'));var Redis=require(_0x8300('0xe'));var authService=require(_0x8300('0xf'));var qs=require(_0x8300('0x10'));var as=require(_0x8300('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8300('0x12'));var utils=require('../../config/utils');var config=require(_0x8300('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x8300('0x14'))['db'];config[_0x8300('0x15')]=_[_0x8300('0x16')](config[_0x8300('0x15')],{'host':'localhost','port':0x18eb});var socket=require(_0x8300('0x17'))(new Redis(config[_0x8300('0x15')]));require(_0x8300('0x18'))[_0x8300('0x19')](socket);var jayson=require(_0x8300('0x1a'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x8300('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x37cde6,_0x585524,_0x115b7a,_0x23659c){return new BPromise(function(_0x5647b6,_0x3e6e68){var _0x137542=_0x23659c||client;return _0x137542[_0x8300('0x1c')](_0x37cde6,_0x115b7a)['then'](function(_0x49606f){logger[_0x8300('0x1d')](_0x8300('0x1e'),_0x585524,_0x8300('0x1f'));logger['debug'](_0x8300('0x20'),_0x585524,_0x8300('0x1f'),JSON[_0x8300('0x21')](_0x49606f));if(_0x49606f[_0x8300('0x22')]){if(_0x49606f[_0x8300('0x22')]['code']===0x1f4){logger[_0x8300('0x22')](_0x8300('0x1e'),_0x585524,_0x49606f['error'][_0x8300('0x23')]);return _0x3e6e68(_0x49606f[_0x8300('0x22')][_0x8300('0x23')]);}logger[_0x8300('0x22')](_0x8300('0x1e'),_0x585524,_0x49606f[_0x8300('0x22')][_0x8300('0x23')]);return _0x5647b6(_0x49606f[_0x8300('0x22')]['message']);}else{logger[_0x8300('0x1d')](_0x8300('0x1e'),_0x585524,'request\x20sent');_0x5647b6(_0x49606f[_0x8300('0x24')][_0x8300('0x23')]);}})[_0x8300('0x25')](function(_0x9052d8){logger[_0x8300('0x22')](_0x8300('0x1e'),_0x585524,_0x9052d8);_0x3e6e68(_0x9052d8);});});}function respondWithStatusCode(_0x251c05,_0x2edb59){_0x2edb59=_0x2edb59||0xcc;return function(_0xd65988){if(_0xd65988){return _0x251c05[_0x8300('0x26')](_0x2edb59);}return _0x251c05[_0x8300('0x27')](_0x2edb59)[_0x8300('0x28')]();};}function respondWithResult(_0x5acbed,_0x4835ab){_0x4835ab=_0x4835ab||0xc8;return function(_0x28092b){if(_0x28092b){return _0x5acbed[_0x8300('0x27')](_0x4835ab)[_0x8300('0x29')](_0x28092b);}};}function respondWithFilteredResult(_0x9b027,_0x828a4c){return function(_0x52003f){if(_0x52003f){var _0x1c88f4=typeof _0x828a4c[_0x8300('0x2a')]===_0x8300('0x2b')&&typeof _0x828a4c[_0x8300('0x2c')]==='undefined';var _0xc17991=_0x52003f[_0x8300('0x2d')];var _0x3d1df0=_0x1c88f4?0x0:_0x828a4c['offset'];var _0x178533=_0x1c88f4?_0x52003f[_0x8300('0x2d')]:_0x828a4c[_0x8300('0x2a')]+_0x828a4c[_0x8300('0x2c')];var _0x4444ec;if(_0x178533>=_0xc17991){_0x178533=_0xc17991;_0x4444ec=0xc8;}else{_0x4444ec=0xce;}_0x9b027[_0x8300('0x27')](_0x4444ec);return _0x9b027[_0x8300('0x2e')](_0x8300('0x2f'),_0x3d1df0+'-'+_0x178533+'/'+_0xc17991)[_0x8300('0x29')](_0x52003f);}return null;};}function patchUpdates(_0x3768cd){return function(_0x4ccb3a){try{jsonpatch[_0x8300('0x30')](_0x4ccb3a,_0x3768cd,!![]);}catch(_0x5b49e3){return BPromise[_0x8300('0x31')](_0x5b49e3);}return _0x4ccb3a[_0x8300('0x32')]();};}function saveUpdates(_0x353c01,_0x32fbd0){return function(_0x61242b){if(_0x61242b){return _0x61242b[_0x8300('0x33')](_0x353c01)[_0x8300('0x34')](function(_0x136c60){return _0x136c60;});}return null;};}function removeEntity(_0x2a2886,_0x4ac35c){return function(_0xfdc644){if(_0xfdc644){return _0xfdc644[_0x8300('0x35')]()[_0x8300('0x34')](function(){var _0x1e6795=_0xfdc644[_0x8300('0x36')]({'plain':!![]});var _0x402036=_0x8300('0x37');return db[_0x8300('0x38')]['destroy']({'where':{'type':_0x402036,'resourceId':_0x1e6795['id']}})['then'](function(){return _0xfdc644;});})[_0x8300('0x34')](function(){_0x2a2886['status'](0xcc)[_0x8300('0x28')]();});}};}function handleEntityNotFound(_0x4be029,_0x1ee948){return function(_0x2d1d9e){if(!_0x2d1d9e){_0x4be029[_0x8300('0x26')](0x194);}return _0x2d1d9e;};}function handleError(_0x22284c,_0x3267ff){_0x3267ff=_0x3267ff||0x1f4;return function(_0x4e1ede){logger[_0x8300('0x22')](_0x4e1ede[_0x8300('0x39')]);if(_0x4e1ede[_0x8300('0x3a')]){delete _0x4e1ede[_0x8300('0x3a')];}_0x22284c[_0x8300('0x27')](_0x3267ff)[_0x8300('0x3b')](_0x4e1ede);};}exports['index']=function(_0x40f9a1,_0x2cef93){var _0x5a920d={'include':[{'model':db['Pause'],'as':_0x8300('0x3c')}]},_0x6fd769={},_0x38cc37={'count':0x0,'rows':[]};var _0x1a8b35=_[_0x8300('0x3d')](db[_0x8300('0x3e')][_0x8300('0x3f')],function(_0x17ad10){return{'name':_0x17ad10[_0x8300('0x40')],'type':_0x17ad10[_0x8300('0x41')][_0x8300('0x42')]};});_0x6fd769[_0x8300('0x43')]=_['map'](_0x1a8b35,'name');_0x6fd769[_0x8300('0x44')]=_[_0x8300('0x45')](_0x40f9a1[_0x8300('0x44')]);_0x6fd769[_0x8300('0x46')]=_[_0x8300('0x47')](_0x6fd769[_0x8300('0x43')],_0x6fd769[_0x8300('0x44')]);_0x5a920d[_0x8300('0x48')]=_[_0x8300('0x47')](_0x6fd769['model'],qs[_0x8300('0x49')](_0x40f9a1[_0x8300('0x44')][_0x8300('0x49')]));_0x5a920d[_0x8300('0x48')]=_0x5a920d[_0x8300('0x48')][_0x8300('0x4a')]?_0x5a920d['attributes']:_0x6fd769[_0x8300('0x43')];if(!_0x40f9a1[_0x8300('0x44')][_0x8300('0x4b')]('nolimit')){_0x5a920d[_0x8300('0x2c')]=qs[_0x8300('0x2c')](_0x40f9a1[_0x8300('0x44')]['limit']);_0x5a920d[_0x8300('0x2a')]=qs[_0x8300('0x2a')](_0x40f9a1['query'][_0x8300('0x2a')]);}_0x5a920d[_0x8300('0x4c')]=qs[_0x8300('0x4d')](_0x40f9a1[_0x8300('0x44')]['sort']);_0x5a920d[_0x8300('0x4e')]=qs[_0x8300('0x46')](_[_0x8300('0x4f')](_0x40f9a1[_0x8300('0x44')],_0x6fd769[_0x8300('0x46')]),_0x1a8b35);if(_0x40f9a1['query'][_0x8300('0x50')]){_0x5a920d[_0x8300('0x4e')]=_[_0x8300('0x51')](_0x5a920d[_0x8300('0x4e')],{'$or':_[_0x8300('0x3d')](_0x1a8b35,function(_0xd90ba8){if(_0xd90ba8[_0x8300('0x41')]!=='VIRTUAL'){var _0x455c60={};_0x455c60[_0xd90ba8[_0x8300('0x3a')]]={'$like':'%'+_0x40f9a1[_0x8300('0x44')][_0x8300('0x50')]+'%'};return _0x455c60;}})});}_0x5a920d=_[_0x8300('0x51')]({},_0x5a920d,_0x40f9a1[_0x8300('0x52')]);var _0x4d76ef={'where':_0x5a920d[_0x8300('0x4e')]};return db[_0x8300('0x3e')][_0x8300('0x2d')](_0x4d76ef)[_0x8300('0x34')](function(_0x393fe1){_0x38cc37[_0x8300('0x2d')]=_0x393fe1;if(_0x40f9a1['query'][_0x8300('0x53')]){_0x5a920d[_0x8300('0x54')]=[{'all':!![]}];}return db[_0x8300('0x3e')][_0x8300('0x55')](_0x5a920d);})[_0x8300('0x34')](function(_0x36925c){_0x38cc37[_0x8300('0x56')]=_0x36925c;return _0x38cc37;})[_0x8300('0x34')](respondWithFilteredResult(_0x2cef93,_0x5a920d))[_0x8300('0x25')](handleError(_0x2cef93,null));};exports[_0x8300('0x57')]=function(_0x1c401f,_0xf3ff73){var _0x44d886={'raw':![],'where':{'id':_0x1c401f[_0x8300('0x58')]['id']},'include':[{'model':db[_0x8300('0x59')],'as':_0x8300('0x3c')}]},_0xa40f6c={};_0xa40f6c[_0x8300('0x43')]=_[_0x8300('0x45')](db['FaxAccount'][_0x8300('0x3f')]);_0xa40f6c[_0x8300('0x44')]=_['keys'](_0x1c401f[_0x8300('0x44')]);_0xa40f6c['filters']=_[_0x8300('0x47')](_0xa40f6c[_0x8300('0x43')],_0xa40f6c[_0x8300('0x44')]);_0x44d886['attributes']=_['intersection'](_0xa40f6c[_0x8300('0x43')],qs['fields'](_0x1c401f['query'][_0x8300('0x49')]));_0x44d886[_0x8300('0x48')]=_0x44d886[_0x8300('0x48')][_0x8300('0x4a')]?_0x44d886[_0x8300('0x48')]:_0xa40f6c[_0x8300('0x43')];if(_0x1c401f[_0x8300('0x44')][_0x8300('0x53')]){_0x44d886['include']=[{'all':!![]}];}_0x44d886=_['merge']({},_0x44d886,_0x1c401f['options']);return db[_0x8300('0x3e')][_0x8300('0x5a')](_0x44d886)[_0x8300('0x34')](handleEntityNotFound(_0xf3ff73,null))['then'](respondWithResult(_0xf3ff73,null))['catch'](handleError(_0xf3ff73,null));};exports[_0x8300('0x5b')]=function(_0x1162a5,_0x8e5a27){return db[_0x8300('0x3e')][_0x8300('0x5b')](_0x1162a5[_0x8300('0x5c')],{})[_0x8300('0x34')](function(_0x2989b4){var _0x2c9993=_0x1162a5[_0x8300('0x5d')][_0x8300('0x36')]({'plain':!![]});if(!_0x2c9993)throw new Error(_0x8300('0x5e'));if(_0x2c9993[_0x8300('0x5f')]==='user'){var _0x18cccb=_0x2989b4['get']({'plain':!![]});var _0x280116=_0x8300('0x37');return db['UserProfileSection'][_0x8300('0x5a')]({'where':{'name':_0x280116,'userProfileId':_0x2c9993[_0x8300('0x60')]},'raw':!![]})[_0x8300('0x34')](function(_0x3a1077){if(_0x3a1077&&_0x3a1077['autoAssociation']===0x0){return db[_0x8300('0x38')][_0x8300('0x5b')]({'name':_0x18cccb[_0x8300('0x3a')],'resourceId':_0x18cccb['id'],'type':_0x3a1077['name'],'sectionId':_0x3a1077['id']},{})[_0x8300('0x34')](function(){return _0x2989b4;});}else{return _0x2989b4;}})[_0x8300('0x25')](function(_0x333da9){logger[_0x8300('0x22')](_0x8300('0x61'),_0x333da9);throw _0x333da9;});}return _0x2989b4;})[_0x8300('0x34')](respondWithResult(_0x8e5a27,0xc9))[_0x8300('0x25')](handleError(_0x8e5a27,null));};exports[_0x8300('0x33')]=function(_0x3690cf,_0x209938){if(_0x3690cf[_0x8300('0x5c')]['id']){delete _0x3690cf[_0x8300('0x5c')]['id'];}return db[_0x8300('0x3e')][_0x8300('0x5a')]({'where':{'id':_0x3690cf[_0x8300('0x58')]['id']},'include':[{'model':db[_0x8300('0x59')],'as':_0x8300('0x3c')}]})[_0x8300('0x34')](handleEntityNotFound(_0x209938,null))[_0x8300('0x34')](saveUpdates(_0x3690cf[_0x8300('0x5c')],null))['then'](respondWithResult(_0x209938,null))[_0x8300('0x25')](handleError(_0x209938,null));};exports[_0x8300('0x35')]=function(_0x2e0de5,_0x1c816c){return db[_0x8300('0x3e')][_0x8300('0x5a')]({'where':{'id':_0x2e0de5[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x1c816c,null))[_0x8300('0x34')](removeEntity(_0x1c816c,null))['catch'](handleError(_0x1c816c,null));};exports[_0x8300('0x62')]=function(_0x1d28b0,_0x15117a){return db[_0x8300('0x3e')][_0x8300('0x62')]()['then'](respondWithResult(_0x15117a,null))[_0x8300('0x25')](handleError(_0x15117a,null));};exports[_0x8300('0x63')]=function(_0x2e26df,_0x441fc6,_0x1dcbc2){if(_0x2e26df[_0x8300('0x5c')]['id']){delete _0x2e26df[_0x8300('0x5c')]['id'];}return db[_0x8300('0x3e')]['find']({'where':{'id':_0x2e26df[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x441fc6,null))['then'](function(_0x4a3423){if(_0x4a3423){_0x2e26df['body'][_0x8300('0x64')]=_0x4a3423['id'];return db[_0x8300('0x65')][_0x8300('0x5b')](_0x2e26df[_0x8300('0x5c')]);}})[_0x8300('0x34')](respondWithResult(_0x441fc6,null))[_0x8300('0x25')](handleError(_0x441fc6,null));};exports[_0x8300('0x66')]=function(_0x2a7734,_0x3f6a2a,_0x3f3672){var _0x71e4fb={'raw':![],'where':{}};var _0xc52ffc={};var _0x417ac9={'count':0x0,'rows':[]};return db[_0x8300('0x3e')][_0x8300('0x67')]({'where':{'id':_0x2a7734[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x3f6a2a,null))[_0x8300('0x34')](function(_0x412859){if(_0x412859){_0xc52ffc[_0x8300('0x43')]=_[_0x8300('0x45')](db[_0x8300('0x65')][_0x8300('0x3f')]);_0xc52ffc[_0x8300('0x44')]=_[_0x8300('0x45')](_0x2a7734[_0x8300('0x44')]);_0xc52ffc[_0x8300('0x46')]=_[_0x8300('0x47')](_0xc52ffc['model'],_0xc52ffc[_0x8300('0x44')]);_0x71e4fb[_0x8300('0x48')]=_[_0x8300('0x47')](_0xc52ffc[_0x8300('0x43')],qs['fields'](_0x2a7734[_0x8300('0x44')]['fields']));_0x71e4fb[_0x8300('0x48')]=_0x71e4fb[_0x8300('0x48')][_0x8300('0x4a')]?_0x71e4fb[_0x8300('0x48')]:_0xc52ffc[_0x8300('0x43')];if(!_0x2a7734[_0x8300('0x44')][_0x8300('0x4b')]('nolimit')){_0x71e4fb[_0x8300('0x2c')]=qs['limit'](_0x2a7734[_0x8300('0x44')][_0x8300('0x2c')]);_0x71e4fb[_0x8300('0x2a')]=qs[_0x8300('0x2a')](_0x2a7734['query'][_0x8300('0x2a')]);}_0x71e4fb[_0x8300('0x4c')]=qs[_0x8300('0x4d')](_0x2a7734[_0x8300('0x44')][_0x8300('0x4d')]);_0x71e4fb[_0x8300('0x4e')]=qs[_0x8300('0x46')](_['pick'](_0x2a7734[_0x8300('0x44')],_0xc52ffc[_0x8300('0x46')]));_0x71e4fb['where']['FaxAccountId']=_0x412859['id'];if(_0x2a7734[_0x8300('0x44')][_0x8300('0x50')]){_0x71e4fb['where']=_[_0x8300('0x51')](_0x71e4fb[_0x8300('0x4e')],{'$or':_['map'](_0x71e4fb['attributes'],function(_0xa8a11c){var _0x14021d={};_0x14021d[_0xa8a11c]={'$like':'%'+_0x2a7734[_0x8300('0x44')][_0x8300('0x50')]+'%'};return _0x14021d;})});}_0x71e4fb=_[_0x8300('0x51')]({},_0x71e4fb,_0x2a7734['options']);return db['Disposition']['count']({'where':_0x71e4fb[_0x8300('0x4e')]})[_0x8300('0x34')](function(_0x27c75e){_0x417ac9[_0x8300('0x2d')]=_0x27c75e;if(_0x2a7734[_0x8300('0x44')]['includeAll']){_0x71e4fb[_0x8300('0x54')]=[{'all':!![]}];}return db[_0x8300('0x65')][_0x8300('0x55')](_0x71e4fb);})[_0x8300('0x34')](function(_0x4b05ef){_0x417ac9[_0x8300('0x56')]=_0x4b05ef;return _0x417ac9;});}})[_0x8300('0x34')](respondWithFilteredResult(_0x3f6a2a,_0x71e4fb))['catch'](handleError(_0x3f6a2a,null));};exports[_0x8300('0x68')]=function(_0x5469df,_0x11faed,_0x244dad){return db[_0x8300('0x3e')][_0x8300('0x5a')]({'where':{'id':_0x5469df[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x11faed,null))[_0x8300('0x34')](function(_0x3b8811){if(_0x3b8811){return _0x3b8811[_0x8300('0x68')](_0x5469df[_0x8300('0x44')]['ids']);}})[_0x8300('0x34')](respondWithStatusCode(_0x11faed,null))[_0x8300('0x25')](handleError(_0x11faed,null));};exports['addAnswer']=function(_0x30b3ca,_0x2f9530,_0x37fa2f){if(_0x30b3ca[_0x8300('0x5c')]['id']){delete _0x30b3ca[_0x8300('0x5c')]['id'];}return db['FaxAccount']['find']({'where':{'id':_0x30b3ca[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x2f9530,null))[_0x8300('0x34')](function(_0x5be569){if(_0x5be569){_0x30b3ca[_0x8300('0x5c')]['FaxAccountId']=_0x5be569['id'];return db[_0x8300('0x69')][_0x8300('0x5b')](_0x30b3ca[_0x8300('0x5c')]);}})['then'](respondWithResult(_0x2f9530,null))[_0x8300('0x25')](handleError(_0x2f9530,null));};exports['getAnswers']=function(_0x1176a3,_0x516bcf,_0x4dfa2c){var _0x341847={'raw':![],'where':{}};var _0x473154={};var _0x33b2f6={'count':0x0,'rows':[]};return db[_0x8300('0x3e')][_0x8300('0x67')]({'where':{'id':_0x1176a3[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x516bcf,null))[_0x8300('0x34')](function(_0x5b0c8e){if(_0x5b0c8e){_0x473154['model']=_['keys'](db[_0x8300('0x69')][_0x8300('0x3f')]);_0x473154['query']=_[_0x8300('0x45')](_0x1176a3[_0x8300('0x44')]);_0x473154['filters']=_[_0x8300('0x47')](_0x473154['model'],_0x473154[_0x8300('0x44')]);_0x341847[_0x8300('0x48')]=_[_0x8300('0x47')](_0x473154[_0x8300('0x43')],qs[_0x8300('0x49')](_0x1176a3['query']['fields']));_0x341847['attributes']=_0x341847[_0x8300('0x48')][_0x8300('0x4a')]?_0x341847[_0x8300('0x48')]:_0x473154[_0x8300('0x43')];if(!_0x1176a3['query'][_0x8300('0x4b')]('nolimit')){_0x341847[_0x8300('0x2c')]=qs[_0x8300('0x2c')](_0x1176a3[_0x8300('0x44')][_0x8300('0x2c')]);_0x341847[_0x8300('0x2a')]=qs[_0x8300('0x2a')](_0x1176a3['query'][_0x8300('0x2a')]);}_0x341847[_0x8300('0x4c')]=qs[_0x8300('0x4d')](_0x1176a3[_0x8300('0x44')][_0x8300('0x4d')]);_0x341847[_0x8300('0x4e')]=qs[_0x8300('0x46')](_[_0x8300('0x4f')](_0x1176a3[_0x8300('0x44')],_0x473154['filters']));_0x341847['where']['FaxAccountId']=_0x5b0c8e['id'];if(_0x1176a3[_0x8300('0x44')][_0x8300('0x50')]){_0x341847[_0x8300('0x4e')]=_[_0x8300('0x51')](_0x341847[_0x8300('0x4e')],{'$or':_[_0x8300('0x3d')](_0x341847[_0x8300('0x48')],function(_0x2bcd1c){var _0x26af1e={};_0x26af1e[_0x2bcd1c]={'$like':'%'+_0x1176a3[_0x8300('0x44')][_0x8300('0x50')]+'%'};return _0x26af1e;})});}_0x341847=_[_0x8300('0x51')]({},_0x341847,_0x1176a3[_0x8300('0x52')]);return db[_0x8300('0x69')][_0x8300('0x2d')]({'where':_0x341847['where']})[_0x8300('0x34')](function(_0x479050){_0x33b2f6[_0x8300('0x2d')]=_0x479050;if(_0x1176a3['query'][_0x8300('0x53')]){_0x341847[_0x8300('0x54')]=[{'all':!![]}];}return db[_0x8300('0x69')][_0x8300('0x55')](_0x341847);})[_0x8300('0x34')](function(_0x13b7cf){_0x33b2f6[_0x8300('0x56')]=_0x13b7cf;return _0x33b2f6;});}})[_0x8300('0x34')](respondWithFilteredResult(_0x516bcf,_0x341847))[_0x8300('0x25')](handleError(_0x516bcf,null));};exports[_0x8300('0x6a')]=function(_0x3078bf,_0x4d8365,_0x280ed6){return db[_0x8300('0x3e')]['find']({'where':{'id':_0x3078bf[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x4d8365,null))[_0x8300('0x34')](function(_0x5649d3){if(_0x5649d3){return _0x5649d3[_0x8300('0x6a')](_0x3078bf[_0x8300('0x44')][_0x8300('0x6b')]);}})[_0x8300('0x34')](respondWithStatusCode(_0x4d8365,null))[_0x8300('0x25')](handleError(_0x4d8365,null));};exports[_0x8300('0x6c')]=function(_0x4c20c7,_0x4bed14,_0x259b83){return db[_0x8300('0x6d')]['find']({'where':{'id':_0x4c20c7[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x4bed14,null))['then'](function(_0x3030c3){if(_0x3030c3){return _0x3030c3[_0x8300('0x6c')](_0x4c20c7['body'][_0x8300('0x6b')],_['omit'](_0x4c20c7['body'],[_0x8300('0x6b'),'id'])||{});}})[_0x8300('0x34')](respondWithResult(_0x4bed14,null))[_0x8300('0x25')](handleError(_0x4bed14,null));};exports[_0x8300('0x6e')]=function(_0x167528,_0x2a49e0,_0x36f25b){var _0x49825a={'raw':![],'where':{}};var _0x5d4ef4={};var _0x3a1ea1={'count':0x0,'rows':[]};return db['FaxAccount'][_0x8300('0x67')]({'where':{'id':_0x167528[_0x8300('0x58')]['id']}})['then'](handleEntityNotFound(_0x2a49e0,null))[_0x8300('0x34')](function(_0x23d230){if(_0x23d230){_0x5d4ef4[_0x8300('0x43')]=_[_0x8300('0x45')](db[_0x8300('0x6d')][_0x8300('0x3f')]);_0x5d4ef4[_0x8300('0x44')]=_['keys'](_0x167528[_0x8300('0x44')]);_0x5d4ef4[_0x8300('0x46')]=_[_0x8300('0x47')](_0x5d4ef4['model'],_0x5d4ef4[_0x8300('0x44')]);_0x49825a['attributes']=_['intersection'](_0x5d4ef4[_0x8300('0x43')],qs[_0x8300('0x49')](_0x167528[_0x8300('0x44')][_0x8300('0x49')]));_0x49825a[_0x8300('0x48')]=_0x49825a[_0x8300('0x48')]['length']?_0x49825a[_0x8300('0x48')]:_0x5d4ef4[_0x8300('0x43')];if(!_0x167528[_0x8300('0x44')][_0x8300('0x4b')](_0x8300('0x6f'))){_0x49825a[_0x8300('0x2c')]=qs[_0x8300('0x2c')](_0x167528['query'][_0x8300('0x2c')]);_0x49825a[_0x8300('0x2a')]=qs[_0x8300('0x2a')](_0x167528[_0x8300('0x44')]['offset']);}_0x49825a[_0x8300('0x4c')]=qs[_0x8300('0x4d')](_0x167528[_0x8300('0x44')][_0x8300('0x4d')]);_0x49825a[_0x8300('0x4e')]=qs[_0x8300('0x46')](_[_0x8300('0x4f')](_0x167528[_0x8300('0x44')],_0x5d4ef4['filters']));_0x49825a['where'][_0x8300('0x64')]=_0x23d230['id'];if(_0x167528[_0x8300('0x44')]['filter']){_0x49825a['where']=_[_0x8300('0x51')](_0x49825a[_0x8300('0x4e')],{'$or':_['map'](_0x49825a[_0x8300('0x48')],function(_0x58b9ff){var _0x3bd56b={};_0x3bd56b[_0x58b9ff]={'$like':'%'+_0x167528[_0x8300('0x44')][_0x8300('0x50')]+'%'};return _0x3bd56b;})});}_0x49825a=_[_0x8300('0x51')]({},_0x49825a,_0x167528['options']);return db[_0x8300('0x6d')][_0x8300('0x2d')]({'where':_0x49825a['where']})['then'](function(_0x27bc45){_0x3a1ea1['count']=_0x27bc45;if(_0x167528[_0x8300('0x44')]['includeAll']){_0x49825a[_0x8300('0x54')]=[{'model':db[_0x8300('0x70')],'as':_0x8300('0x71'),'required':![]},{'model':db[_0x8300('0x72')],'as':_0x8300('0x73'),'attributes':['name','fullname',_0x8300('0x74')],'required':![]},{'model':db[_0x8300('0x75')],'as':_0x8300('0x76'),'attributes':['id',_0x8300('0x3a'),_0x8300('0x77')],'where':_0x167528['query']['tag']?{'id':_0x167528[_0x8300('0x44')]['tag']}:undefined,'required':_0x167528[_0x8300('0x44')]['tag']?!![]:![]}];}return db[_0x8300('0x6d')]['findAll'](_0x49825a);})['then'](function(_0x16d344){_0x3a1ea1['rows']=_0x16d344;return _0x3a1ea1;});}})[_0x8300('0x34')](respondWithFilteredResult(_0x2a49e0,_0x49825a))[_0x8300('0x25')](handleError(_0x2a49e0,null));};exports[_0x8300('0x78')]=function(_0x11989a,_0x777974,_0x4b1b4a){return db[_0x8300('0x3e')]['findOne']({'where':{'id':_0x11989a[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x777974,null))[_0x8300('0x34')](function(_0x550f50){if(_0x550f50){return db[_0x8300('0x79')][_0x8300('0x7a')](function(_0x155ee6){return db[_0x8300('0x7b')][_0x8300('0x35')]({'where':{'FaxAccountId':_0x11989a[_0x8300('0x58')]['id']},'transaction':_0x155ee6})[_0x8300('0x34')](function(_0x3f23ae){var _0x1c84f8=_['map'](_0x11989a[_0x8300('0x5c')],function(_0x348c2c){_0x348c2c[_0x8300('0x64')]=_0x11989a[_0x8300('0x58')]['id'];return _0x348c2c;});return db[_0x8300('0x7b')][_0x8300('0x7c')](_0x1c84f8,{'transaction':_0x155ee6});});})[_0x8300('0x34')](function(){return db[_0x8300('0x7b')][_0x8300('0x7d')]({'where':{'FaxAccountId':_0x11989a[_0x8300('0x58')]['id']},'order':_0x8300('0x7e')});});}})[_0x8300('0x34')](respondWithResult(_0x777974,null))['catch'](handleError(_0x777974,null));};exports[_0x8300('0x7f')]=function(_0x5de958,_0x2e8bfa,_0x5946e5){var _0x479355={};var _0x1577eb={};var _0x57868b;var _0x488bfe;return db[_0x8300('0x3e')][_0x8300('0x67')]({'where':{'id':_0x5de958['params']['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x2e8bfa,null))['then'](function(_0xd78c2c){if(_0xd78c2c){_0x57868b=_0xd78c2c;_0x1577eb[_0x8300('0x43')]=_[_0x8300('0x45')](db['FaxApplication']['rawAttributes']);_0x1577eb[_0x8300('0x44')]=_[_0x8300('0x45')](_0x5de958['query']);_0x1577eb[_0x8300('0x46')]=_['intersection'](_0x1577eb[_0x8300('0x43')],_0x1577eb[_0x8300('0x44')]);_0x479355['attributes']=_['intersection'](_0x1577eb['model'],qs[_0x8300('0x49')](_0x5de958[_0x8300('0x44')][_0x8300('0x49')]));_0x479355[_0x8300('0x48')]=_0x479355[_0x8300('0x48')][_0x8300('0x4a')]?_0x479355['attributes']:_0x1577eb[_0x8300('0x43')];_0x479355[_0x8300('0x4c')]=qs[_0x8300('0x4d')](_0x5de958['query'][_0x8300('0x4d')]);_0x479355['where']=qs['filters'](_[_0x8300('0x4f')](_0x5de958['query'],_0x1577eb[_0x8300('0x46')]));if(_0x5de958[_0x8300('0x44')][_0x8300('0x50')]){_0x479355[_0x8300('0x4e')]=_['merge'](_0x479355[_0x8300('0x4e')],{'$or':_[_0x8300('0x3d')](_0x479355['attributes'],function(_0x18c5e3){var _0x20549b={};_0x20549b[_0x18c5e3]={'$like':'%'+_0x5de958[_0x8300('0x44')][_0x8300('0x50')]+'%'};return _0x20549b;})});}_0x479355=_[_0x8300('0x51')]({},_0x479355,_0x5de958[_0x8300('0x52')]);return _0x57868b[_0x8300('0x7f')](_0x479355);}})['then'](function(_0x39ee9a){if(_0x39ee9a){_0x488bfe=_0x39ee9a[_0x8300('0x4a')];if(!_0x5de958[_0x8300('0x44')][_0x8300('0x4b')](_0x8300('0x6f'))){_0x479355[_0x8300('0x2c')]=qs[_0x8300('0x2c')](_0x5de958[_0x8300('0x44')]['limit']);_0x479355[_0x8300('0x2a')]=qs[_0x8300('0x2a')](_0x5de958[_0x8300('0x44')][_0x8300('0x2a')]);}return _0x57868b[_0x8300('0x7f')](_0x479355);}})[_0x8300('0x34')](function(_0x526af6){if(_0x526af6){return _0x526af6?{'count':_0x488bfe,'rows':_0x526af6}:null;}})[_0x8300('0x34')](respondWithResult(_0x2e8bfa,null))['catch'](handleError(_0x2e8bfa,null));};function Extension(_0x31302f,_0x177de3,_0x2fd9ee,_0x4b8de5){this['context']=_0x8300('0x80');this[_0x8300('0x81')]=_0x31302f[_0x8300('0x82')];this[_0x8300('0x83')]=_0x4b8de5;this[_0x8300('0x41')]=_0x8300('0x84');this[_0x8300('0x85')]=_0x8300('0x86');this[_0x8300('0x64')]=_0x31302f['id'];this[_0x8300('0x7e')]=_0x177de3;this[_0x8300('0x87')]=_0x2fd9ee;}function createExtensionsReciveFax(_0x1fc285){var _0x127866=0x1;var _0x30f63a=[];_0x30f63a['push'](new Extension(_0x1fc285,_0x127866,'',_0x8300('0x88')));_0x127866+=0x1;_0x30f63a['push'](new Extension(_0x1fc285,_0x127866,_0x8300('0x89'),'Set'));_0x127866+=0x1;for(var _0x59bf01 in _0x1fc285){if(_0x1fc285[_0x8300('0x4b')](_0x59bf01)&&(_0x59bf01==='ecm'||_0x59bf01===_0x8300('0x82')||_0x59bf01===_0x8300('0x8a')||_0x59bf01==='faxdetect'||_0x59bf01==='headerinfo'||_0x59bf01===_0x8300('0x8b')||_0x59bf01===_0x8300('0x8c')||_0x59bf01===_0x8300('0x8d')||_0x59bf01===_0x8300('0x8e'))){_0x30f63a[_0x8300('0x8f')](new Extension(_0x1fc285,_0x127866,_0x8300('0x90')+_0x59bf01+')='+_0x1fc285[_0x59bf01],'Set'));_0x127866+=0x1;}}_0x30f63a[_0x8300('0x8f')](new Extension(_0x1fc285,_0x127866,'6',_0x8300('0x91')));_0x127866+=0x1;_0x30f63a['push'](new Extension(_0x1fc285,_0x127866,_0x8300('0x92'),'ReceiveFax'));_0x127866=0x0;return _0x30f63a;}exports[_0x8300('0x93')]=function(_0x13f4bf,_0x3551df,_0x4af3f0){var _0x3c7432;return db[_0x8300('0x79')][_0x8300('0x7a')](function(_0x1a2c1a){return db['FaxAccount']['create'](_0x13f4bf[_0x8300('0x5c')],{'transaction':_0x1a2c1a})[_0x8300('0x34')](function(_0x4c16cf){_0x3c7432=_0x4c16cf[_0x8300('0x36')]({'plain':!![]});return db[_0x8300('0x94')][_0x8300('0x7c')](createExtensionsReciveFax(_0x3c7432),{'transaction':_0x1a2c1a});});})['then'](function(){return _0x3c7432;})['then'](respondWithResult(_0x3551df,null))[_0x8300('0x25')](handleError(_0x3551df,null));};exports[_0x8300('0x95')]=function(_0x209b9e,_0x10b0b6,_0x276f18){var _0x5638b0;return db[_0x8300('0x79')][_0x8300('0x7a')](function(_0x2d33a3){return db[_0x8300('0x3e')]['update'](_0x209b9e[_0x8300('0x5c')],{'where':{'id':_0x209b9e[_0x8300('0x5c')]['id']},'transaction':_0x2d33a3})[_0x8300('0x34')](function(_0x5d600f){return db[_0x8300('0x94')][_0x8300('0x35')]({'where':{'FaxAccountId':_0x209b9e[_0x8300('0x5c')]['id']},'transaction':_0x2d33a3})[_0x8300('0x34')](function(_0x271dcb){return db[_0x8300('0x94')][_0x8300('0x7c')](createExtensionsReciveFax(_[_0x8300('0x96')](_0x209b9e['body'],[_0x8300('0x97'),_0x8300('0x42'),'createdAt',_0x8300('0x98'),_0x8300('0x99'),_0x8300('0x9a')])),{'transaction':_0x2d33a3});});});})[_0x8300('0x34')](function(){return db[_0x8300('0x3e')][_0x8300('0x9b')](_0x209b9e[_0x8300('0x5c')]['id']);})[_0x8300('0x34')](respondWithResult(_0x10b0b6,null))[_0x8300('0x25')](handleError(_0x10b0b6,null));};exports['getMessages']=function(_0x3d25a2,_0x333fa2,_0x1603de){var _0x1d9475={'raw':!![],'where':{}};var _0x28270c={};var _0x26243d={'count':0x0,'rows':[]};return db['FaxAccount'][_0x8300('0x67')]({'where':{'id':_0x3d25a2[_0x8300('0x58')]['id']}})['then'](handleEntityNotFound(_0x333fa2,null))[_0x8300('0x34')](function(_0x17f35c){if(_0x17f35c){_0x28270c[_0x8300('0x43')]=_[_0x8300('0x45')](db[_0x8300('0x9c')][_0x8300('0x3f')]);_0x28270c['query']=_[_0x8300('0x45')](_0x3d25a2['query']);_0x28270c['filters']=_[_0x8300('0x47')](_0x28270c[_0x8300('0x43')],_0x28270c[_0x8300('0x44')]);_0x1d9475['attributes']=_[_0x8300('0x47')](_0x28270c[_0x8300('0x43')],qs[_0x8300('0x49')](_0x3d25a2[_0x8300('0x44')][_0x8300('0x49')]));_0x1d9475['attributes']=_0x1d9475[_0x8300('0x48')][_0x8300('0x4a')]?_0x1d9475[_0x8300('0x48')]:_0x28270c[_0x8300('0x43')];if(!_0x3d25a2[_0x8300('0x44')][_0x8300('0x4b')](_0x8300('0x6f'))){_0x1d9475[_0x8300('0x2c')]=qs[_0x8300('0x2c')](_0x3d25a2[_0x8300('0x44')][_0x8300('0x2c')]);_0x1d9475['offset']=qs[_0x8300('0x2a')](_0x3d25a2[_0x8300('0x44')][_0x8300('0x2a')]);}_0x1d9475[_0x8300('0x4c')]=qs[_0x8300('0x4d')](_0x3d25a2['query'][_0x8300('0x4d')]);_0x1d9475[_0x8300('0x4e')]=qs[_0x8300('0x46')](_[_0x8300('0x4f')](_0x3d25a2[_0x8300('0x44')],_0x28270c[_0x8300('0x46')]));_0x1d9475[_0x8300('0x4e')][_0x8300('0x64')]=_0x17f35c['id'];if(_0x3d25a2[_0x8300('0x44')][_0x8300('0x50')]){_0x1d9475[_0x8300('0x4e')]=_[_0x8300('0x51')](_0x1d9475['where'],{'$or':_[_0x8300('0x3d')](_0x1d9475[_0x8300('0x48')],function(_0x3a54a2){var _0x2e75c1={};_0x2e75c1[_0x3a54a2]={'$like':'%'+_0x3d25a2[_0x8300('0x44')][_0x8300('0x50')]+'%'};return _0x2e75c1;})});}if(_0x3d25a2[_0x8300('0x44')][_0x8300('0x9d')]){var _0x4a2ce9=_0x3d25a2[_0x8300('0x44')][_0x8300('0x9d')][_0x8300('0x9e')](',');var _0x3fdbdc={};_0x3fdbdc[_0x4a2ce9[0x0]]={'$gte':moment(_0x4a2ce9[0x1])[_0x8300('0x9f')]('YYYY-MM-DD\x20HH:mm:ss')};_0x1d9475['where']=_[_0x8300('0x51')](_0x1d9475[_0x8300('0x4e')],_0x3fdbdc);}_0x1d9475=_['merge']({},_0x1d9475,_0x3d25a2[_0x8300('0x52')]);return db['FaxMessage'][_0x8300('0x2d')]({'where':_0x1d9475[_0x8300('0x4e')]})['then'](function(_0x3e4038){_0x26243d['count']=_0x3e4038;if(_0x3d25a2[_0x8300('0x44')][_0x8300('0x53')]){_0x1d9475[_0x8300('0x54')]=[{'all':!![]}];}return db[_0x8300('0x9c')]['findAll'](_0x1d9475);})[_0x8300('0x34')](function(_0x4a791a){_0x26243d[_0x8300('0x56')]=_0x4a791a;return _0x26243d;});}})[_0x8300('0x34')](respondWithFilteredResult(_0x333fa2,_0x1d9475))[_0x8300('0x25')](handleError(_0x333fa2,null));};exports['send']=function(_0x5bcc26,_0x53db46,_0x36d021){var _0x4e831b,_0x1413dc={},_0x3b2522;if(_0x5bcc26[_0x8300('0x5c')]['to']){_0x3b2522=_0x5bcc26['body']['to'][0x0];}return db['FaxAccount'][_0x8300('0x5a')]({'where':{'id':_0x5bcc26['params']['id']},'include':[{'model':db[_0x8300('0xa0')],'as':'List','include':[{'model':db[_0x8300('0x70')],'as':'Contacts','where':{'fax':_0x3b2522},'limit':0x1,'order':[[_0x8300('0x98'),_0x8300('0xa1')]]}]}]})[_0x8300('0x34')](handleEntityNotFound(_0x53db46,null))['then'](function(_0x5627da){_0x4e831b=_0x5627da;if(_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa2')]&&_0x5bcc26['body'][_0x8300('0xa2')][_0x8300('0x4a')]){for(var _0xba255e=0x0;_0xba255e<_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa2')]['length'];_0xba255e+=0x1){_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa2')][_0xba255e]={'filename':_0x5bcc26['body'][_0x8300('0xa2')][_0xba255e]['name'],'id':_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa2')][_0xba255e]['id'],'path':path[_0x8300('0xa3')](config[_0x8300('0xa4')],_0x8300('0xa5'),_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa2')][_0xba255e][_0x8300('0xa6')])};}}return respondWithRpcPromise('CheckAfterSend',_0x8300('0xa7'),{'FaxAccountId':_[_0x8300('0xa8')](_0x5bcc26[_0x8300('0x58')]['id'])?undefined:_0x5bcc26[_0x8300('0x58')]['id'],'path':_[_0x8300('0xa8')](_0x5bcc26['body'][_0x8300('0xa2')][0x0]['path'])?undefined:_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa2')][0x0][_0x8300('0x7')],'fax':_[_0x8300('0xa8')](_0x5bcc26[_0x8300('0x5c')]['to'][0x0])?undefined:_0x5bcc26['body']['to'][0x0]},client9002);})[_0x8300('0x34')](function(){if(_0x4e831b){if(_[_0x8300('0xa8')](_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa9')])){_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa9')]=util[_0x8300('0x9f')](_0x8300('0xaa'),_0x4e831b['name'],_0x4e831b[_0x8300('0xab')]);}if(_0x4e831b[_0x8300('0xac')]){if(_0x4e831b[_0x8300('0xac')]['Contacts'][_0x8300('0x4a')]){return _0x4e831b[_0x8300('0xac')]['Contacts'][0x0];}else{return db[_0x8300('0x70')]['create'](_[_0x8300('0x16')](_0x5bcc26[_0x8300('0x5c')],{'firstName':_0x5bcc26[_0x8300('0x5c')]['to'][0x0],'phone':_0x5bcc26[_0x8300('0x5c')]['to'][0x0],'fax':_0x5bcc26[_0x8300('0x5c')]['to'][0x0],'ListId':_0x4e831b[_0x8300('0x9a')]}));}}else{throw new Error(_0x8300('0xad'));}}else{throw new Error(_0x8300('0xae'));}})['then'](function(_0x104578){if(_0x104578){return db[_0x8300('0x6d')][_0x8300('0x5a')]({'where':{'ContactId':_0x104578['id'],'closed':![],'FaxAccountId':_0x4e831b['id']}})[_0x8300('0x34')](function(_0x158413){if(_0x158413){return[_0x158413,![]];}return db[_0x8300('0x6d')]['create']({'UserId':_0x5bcc26[_0x8300('0x5d')]['id'],'ContactId':_0x104578['id'],'FaxAccountId':_0x4e831b['id'],'fax':_0x5bcc26['body']['to'][0x0],'firstMsgDirection':_0x8300('0xaf'),'Messages':[_[_0x8300('0x51')](_0x5bcc26['body'],{'read':![],'body':_0x5bcc26[_0x8300('0x5c')]['attachments'][0x0][_0x8300('0xb0')],'FaxAccountId':_0x4e831b['id'],'UserId':_0x5bcc26[_0x8300('0x5d')]['id'],'ContactId':_0x104578['id'],'AttachmentId':_0x5bcc26['body'][_0x8300('0xa2')][0x0]['id']})]},{'include':[{'model':db[_0x8300('0x9c')],'as':'Messages'}]})[_0x8300('0x34')](function(_0x1ebfb5){return[_0x1ebfb5,!![]];});});}else{throw new Error(_0x8300('0xb1'));}})[_0x8300('0xb2')](function(_0x20ab30,_0x5411a8){if(_0x5411a8){return _0x20ab30;}return db[_0x8300('0x9c')][_0x8300('0x5b')]({'direction':'out','read':![],'body':_0x5bcc26['body']['attachments'][0x0][_0x8300('0xb0')],'FaxAccountId':_0x4e831b['id'],'FaxInteractionId':_0x20ab30['id'],'UserId':_0x5bcc26['user']['id'],'ContactId':_0x20ab30[_0x8300('0xb3')],'AttachmentId':_0x5bcc26[_0x8300('0x5c')]['attachments'][0x0]['id']})[_0x8300('0x34')](function(_0x471445){_0x20ab30[_0x8300('0xb4')][_0x8300('0xb5')]=[];_0x20ab30[_0x8300('0xb4')][_0x8300('0xb5')][_0x8300('0x8f')](_0x471445[_0x8300('0xb4')]);return _0x20ab30;});})[_0x8300('0x34')](function(_0x4d5b5e){respondWithRpcPromise(_0x8300('0xb6'),_0x8300('0xb6'),{'FaxAccountId':_[_0x8300('0xa8')](_0x5bcc26[_0x8300('0x58')]['id'])?undefined:_0x5bcc26[_0x8300('0x58')]['id'],'path':_['isNil'](_0x5bcc26['body'][_0x8300('0xa2')][0x0][_0x8300('0x7')])?undefined:_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa2')][0x0][_0x8300('0x7')],'fax':_[_0x8300('0xa8')](_0x5bcc26['body']['to'][0x0])?undefined:_0x5bcc26[_0x8300('0x5c')]['to'][0x0],'AttachmentId':_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa2')][0x0]['id']},client9002)['then'](function(_0x410c1b){logger['info'](_0x8300('0xb7'),_0x410c1b);})[_0x8300('0x25')](function(_0x1ba3f4){logger[_0x8300('0x1d')](_0x8300('0xb7'),_0x1ba3f4);});return _0x4d5b5e;})['then'](respondWithResult(_0x53db46,null))['catch'](handleError(_0x53db46,null));};exports[_0x8300('0xb8')]=function(_0x55d1dd,_0x5d6e03,_0x3c4fc6){return db[_0x8300('0x3e')][_0x8300('0x5a')]({'where':{'id':_0x55d1dd[_0x8300('0x58')]['id']}})['then'](handleEntityNotFound(_0x5d6e03,null))[_0x8300('0x34')](function(_0x21266c){if(_0x21266c){return _0x21266c['addAgents'](_0x55d1dd[_0x8300('0x5c')]['ids'],_[_0x8300('0x96')](_0x55d1dd[_0x8300('0x5c')],[_0x8300('0x6b'),'id'])||{})[_0x8300('0xb2')](function(_0x426482){for(var _0x27b4e7=0x0;_0x27b4e7<_0x55d1dd[_0x8300('0x5c')]['ids'][_0x8300('0x4a')];_0x27b4e7+=0x1){socket[_0x8300('0xb9')](_0x8300('0xba'),{'UserId':Number(_0x55d1dd[_0x8300('0x5c')][_0x8300('0x6b')][_0x27b4e7]),'FaxAccountId':Number(_0x55d1dd['params']['id'])});}return _0x426482;});}})[_0x8300('0x34')](respondWithResult(_0x5d6e03,null))[_0x8300('0x25')](handleError(_0x5d6e03,null));};exports['removeAgents']=function(_0x46140e,_0x5b39c8,_0xbc7168){return db[_0x8300('0x3e')][_0x8300('0x5a')]({'where':{'id':_0x46140e[_0x8300('0x58')]['id']}})['then'](handleEntityNotFound(_0x5b39c8,null))[_0x8300('0x34')](function(_0x265c16){if(_0x265c16){return _0x265c16[_0x8300('0xbb')](_0x46140e[_0x8300('0x44')][_0x8300('0x6b')])[_0x8300('0x34')](function(){if(_[_0x8300('0xbc')](_0x46140e[_0x8300('0x44')]['ids'])){for(var _0x4f7ec0=0x0;_0x4f7ec0<_0x46140e[_0x8300('0x44')][_0x8300('0x6b')]['length'];_0x4f7ec0+=0x1){socket[_0x8300('0xb9')]('userFaxAccount:remove',{'UserId':Number(_0x46140e[_0x8300('0x44')][_0x8300('0x6b')][_0x4f7ec0]),'FaxAccountId':Number(_0x46140e['params']['id'])});}}else{socket['emit'](_0x8300('0xbd'),{'UserId':Number(_0x46140e[_0x8300('0x44')][_0x8300('0x6b')]),'FaxAccountId':Number(_0x46140e[_0x8300('0x58')]['id'])});}});}})['then'](respondWithStatusCode(_0x5b39c8,null))['catch'](handleError(_0x5b39c8,null));};exports[_0x8300('0xbe')]=function(_0x37c584,_0xbd112b,_0x981bfe){var _0x39e6a9={};var _0x1fb81c={};var _0x52d53d;var _0x93bd0d;return db[_0x8300('0x3e')][_0x8300('0x67')]({'where':{'id':_0x37c584[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0xbd112b,null))[_0x8300('0x34')](function(_0x4b8db9){if(_0x4b8db9){_0x52d53d=_0x4b8db9;_0x1fb81c['model']=_[_0x8300('0x45')](db[_0x8300('0x72')][_0x8300('0x3f')]);_0x1fb81c['query']=_['keys'](_0x37c584[_0x8300('0x44')]);_0x1fb81c[_0x8300('0x46')]=_['intersection'](_0x1fb81c[_0x8300('0x43')],_0x1fb81c[_0x8300('0x44')]);_0x39e6a9[_0x8300('0x48')]=_[_0x8300('0x47')](_0x1fb81c[_0x8300('0x43')],qs['fields'](_0x37c584['query']['fields']));_0x39e6a9[_0x8300('0x48')]=_0x39e6a9[_0x8300('0x48')][_0x8300('0x4a')]?_0x39e6a9[_0x8300('0x48')]:_0x1fb81c[_0x8300('0x43')];_0x39e6a9[_0x8300('0x4c')]=qs[_0x8300('0x4d')](_0x37c584[_0x8300('0x44')][_0x8300('0x4d')]);_0x39e6a9['where']=qs['filters'](_['pick'](_0x37c584['query'],_0x1fb81c[_0x8300('0x46')]));if(_0x37c584[_0x8300('0x44')][_0x8300('0x50')]){_0x39e6a9[_0x8300('0x4e')]=_['merge'](_0x39e6a9[_0x8300('0x4e')],{'$or':_[_0x8300('0x3d')](_0x39e6a9[_0x8300('0x48')],function(_0x56120a){var _0x1d0426={};_0x1d0426[_0x56120a]={'$like':'%'+_0x37c584[_0x8300('0x44')][_0x8300('0x50')]+'%'};return _0x1d0426;})});}_0x39e6a9=_[_0x8300('0x51')]({},_0x39e6a9,_0x37c584['options']);return _0x52d53d[_0x8300('0xbe')](_0x39e6a9);}})[_0x8300('0x34')](function(_0x5c6ea5){if(_0x5c6ea5){_0x93bd0d=_0x5c6ea5[_0x8300('0x4a')];if(!_0x37c584[_0x8300('0x44')][_0x8300('0x4b')](_0x8300('0x6f'))){_0x39e6a9['limit']=qs[_0x8300('0x2c')](_0x37c584['query']['limit']);_0x39e6a9[_0x8300('0x2a')]=qs[_0x8300('0x2a')](_0x37c584['query'][_0x8300('0x2a')]);}return _0x52d53d[_0x8300('0xbe')](_0x39e6a9);}})[_0x8300('0x34')](function(_0x49caef){if(_0x49caef){return _0x49caef?{'count':_0x93bd0d,'rows':_0x49caef}:null;}})[_0x8300('0x34')](respondWithResult(_0xbd112b,null))['catch'](handleError(_0xbd112b,null));};
\ No newline at end of file
index 7d80181..2361e69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fc3=['save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxAccount','setMaxListeners'];(function(_0x1649af,_0x9522f8){var _0x28359a=function(_0x255fd8){while(--_0x255fd8){_0x1649af['push'](_0x1649af['shift']());}};_0x28359a(++_0x9522f8);}(_0x8fc3,0xc4));var _0x38fc=function(_0x2134b7,_0x1eb5e2){_0x2134b7=_0x2134b7-0x0;var _0x6c5914=_0x8fc3[_0x2134b7];return _0x6c5914;};'use strict';var EventEmitter=require(_0x38fc('0x0'));var FaxAccount=require(_0x38fc('0x1'))['db'][_0x38fc('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x38fc('0x3')](0x0);var events={'afterCreate':_0x38fc('0x4'),'afterUpdate':'update','afterDestroy':_0x38fc('0x5')};function emitEvent(_0x3c8e26){return function(_0x5357af,_0x5ccb12,_0x59f45b){FaxAccountEvents['emit'](_0x3c8e26+':'+_0x5357af['id'],_0x5357af);FaxAccountEvents[_0x38fc('0x6')](_0x3c8e26,_0x5357af);_0x59f45b(null);};}for(var e in events){if(events[_0x38fc('0x7')](e)){var event=events[e];FaxAccount[_0x38fc('0x8')](e,emitEvent(event));}}module[_0x38fc('0x9')]=FaxAccountEvents;
\ No newline at end of file
+var _0x3b3a=['emit','hasOwnProperty','hook','exports','../../mysqldb','FaxAccount','setMaxListeners','save','update'];(function(_0x4a005e,_0x33fdaf){var _0x4771a8=function(_0x3bd0ca){while(--_0x3bd0ca){_0x4a005e['push'](_0x4a005e['shift']());}};_0x4771a8(++_0x33fdaf);}(_0x3b3a,0x190));var _0xa3b3=function(_0x369ed8,_0x2527a3){_0x369ed8=_0x369ed8-0x0;var _0x3157b9=_0x3b3a[_0x369ed8];return _0x3157b9;};'use strict';var EventEmitter=require('events');var FaxAccount=require(_0xa3b3('0x0'))['db'][_0xa3b3('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xa3b3('0x2')](0x0);var events={'afterCreate':_0xa3b3('0x3'),'afterUpdate':_0xa3b3('0x4'),'afterDestroy':'remove'};function emitEvent(_0x113bd2){return function(_0x17e3c7,_0x3f4ab3,_0x1cc00a){FaxAccountEvents['emit'](_0x113bd2+':'+_0x17e3c7['id'],_0x17e3c7);FaxAccountEvents[_0xa3b3('0x5')](_0x113bd2,_0x17e3c7);_0x1cc00a(null);};}for(var e in events){if(events[_0xa3b3('0x6')](e)){var event=events[e];FaxAccount[_0xa3b3('0x7')](e,emitEvent(event));}}module[_0xa3b3('0x8')]=FaxAccountEvents;
\ No newline at end of file
index 7200b35..1208eeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36dc=['exports','define','lodash','util','../../config/logger','bluebird','request-promise','path','./faxAccount.attributes'];(function(_0x2a2591,_0x958577){var _0x45bde5=function(_0x581142){while(--_0x581142){_0x2a2591['push'](_0x2a2591['shift']());}};_0x45bde5(++_0x958577);}(_0x36dc,0xe3));var _0xc36d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x36dc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc36d('0x0'));var util=require(_0xc36d('0x1'));var logger=require(_0xc36d('0x2'))('api');var moment=require('moment');var BPromise=require(_0xc36d('0x3'));var rp=require(_0xc36d('0x4'));var fs=require('fs');var path=require(_0xc36d('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc36d('0x6'));module[_0xc36d('0x7')]=function(_0x62876b,_0x3b2484){return _0x62876b[_0xc36d('0x8')]('FaxAccount',attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x14e7=['bluebird','request-promise','path','rimraf','../../config/environment','./faxAccount.attributes','exports','define','FaxAccount','lodash','../../config/logger','api','moment'];(function(_0x4f9c46,_0x361afe){var _0x155365=function(_0x2e5c13){while(--_0x2e5c13){_0x4f9c46['push'](_0x4f9c46['shift']());}};_0x155365(++_0x361afe);}(_0x14e7,0x1b6));var _0x714e=function(_0x7d5925,_0x42792b){_0x7d5925=_0x7d5925-0x0;var _0x35e0df=_0x14e7[_0x7d5925];return _0x35e0df;};'use strict';var _=require(_0x714e('0x0'));var util=require('util');var logger=require(_0x714e('0x1'))(_0x714e('0x2'));var moment=require(_0x714e('0x3'));var BPromise=require(_0x714e('0x4'));var rp=require(_0x714e('0x5'));var fs=require('fs');var path=require(_0x714e('0x6'));var rimraf=require(_0x714e('0x7'));var config=require(_0x714e('0x8'));var attributes=require(_0x714e('0x9'));module[_0x714e('0xa')]=function(_0x1d4cb4,_0x24b223){return _0x1d4cb4[_0x714e('0xb')](_0x714e('0xc'),attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 03cf859..c05aff9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc836=['*,*,*,*','Start','startRouting','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','./faxAccount.socket','register','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','FaxAccount','findAll','options','where','limit','include','map','attributes','model','then','GetFaxAccount','debug','NotifyFaxAccount','body','fax','CmContact','describe','Sequelize','ValidationError','difference','keys','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','account','CmList','DESC','FaxApplication','Applications','List','get','applications','priority','asc','Contacts','length','create','contact','FaxInteraction','find','Contact\x20not\x20found','spread','push','close','unmanaged','created','interaction','AttachmentId','UserId','User','name','unshift','waitForTheAssignedAgent'];(function(_0x5071d4,_0x32176b){var _0x59feb4=function(_0x1037d6){while(--_0x1037d6){_0x5071d4['push'](_0x5071d4['shift']());}};_0x59feb4(++_0x32176b);}(_0xc836,0x1b6));var _0x6c83=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc836[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x6c83('0x0'));var rs=require(_0x6c83('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6c83('0x2'))['db'];var utils=require(_0x6c83('0x3'));var logger=require('../../config/logger')(_0x6c83('0x4'));var config=require('../../config/environment');var jayson=require(_0x6c83('0x5'));var client=jayson[_0x6c83('0x6')][_0x6c83('0x7')]({'port':0x232c});config[_0x6c83('0x8')]=_[_0x6c83('0x9')](config[_0x6c83('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6c83('0x8')]));require(_0x6c83('0xa'))[_0x6c83('0xb')](socket);function respondWithRpcPromise(_0x42c61e,_0x2273d8,_0xc34a9c){return new BPromise(function(_0x29b955,_0x48f01d){return client[_0x6c83('0xc')](_0x42c61e,_0xc34a9c)['then'](function(_0x4c10bc){logger[_0x6c83('0xd')](_0x6c83('0xe'),_0x2273d8,_0x6c83('0xf'));logger['debug'](_0x6c83('0x10'),_0x2273d8,_0x6c83('0xf'),JSON[_0x6c83('0x11')](_0x4c10bc));if(_0x4c10bc['error']){if(_0x4c10bc[_0x6c83('0x12')][_0x6c83('0x13')]===0x1f4){logger[_0x6c83('0x12')]('FaxAccount,\x20%s,\x20%s',_0x2273d8,_0x4c10bc[_0x6c83('0x12')][_0x6c83('0x14')]);return _0x48f01d(_0x4c10bc[_0x6c83('0x12')]['message']);}logger[_0x6c83('0x12')](_0x6c83('0xe'),_0x2273d8,_0x4c10bc['error'][_0x6c83('0x14')]);return _0x29b955(_0x4c10bc[_0x6c83('0x12')]['message']);}else{logger[_0x6c83('0xd')](_0x6c83('0xe'),_0x2273d8,_0x6c83('0xf'));_0x29b955(_0x4c10bc[_0x6c83('0x15')][_0x6c83('0x14')]);}})[_0x6c83('0x16')](function(_0x11a002){logger[_0x6c83('0x12')](_0x6c83('0xe'),_0x2273d8,_0x11a002);_0x48f01d(_0x11a002);});});}exports['GetFaxAccount']=function(_0x4429f4){var _0x303dea=this;return new Promise(function(_0x21de2c,_0x6b546b){return db[_0x6c83('0x17')][_0x6c83('0x18')]({'raw':_0x4429f4['options']?_0x4429f4[_0x6c83('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x4429f4['options']?_0x4429f4['options'][_0x6c83('0x1a')]||null:null,'attributes':_0x4429f4[_0x6c83('0x19')]?_0x4429f4[_0x6c83('0x19')]['attributes']||null:null,'limit':_0x4429f4[_0x6c83('0x19')]?_0x4429f4['options'][_0x6c83('0x1b')]||null:null,'include':_0x4429f4[_0x6c83('0x19')]?_0x4429f4[_0x6c83('0x19')][_0x6c83('0x1c')]?_[_0x6c83('0x1d')](_0x4429f4[_0x6c83('0x19')][_0x6c83('0x1c')],function(_0x439982){return{'model':db[_0x439982['model']],'as':_0x439982['as'],'attributes':_0x439982[_0x6c83('0x1e')],'include':_0x439982[_0x6c83('0x1c')]?_[_0x6c83('0x1d')](_0x439982[_0x6c83('0x1c')],function(_0x14c604){return{'model':db[_0x14c604['model']],'as':_0x14c604['as'],'attributes':_0x14c604[_0x6c83('0x1e')],'include':_0x14c604[_0x6c83('0x1c')]?_[_0x6c83('0x1d')](_0x14c604[_0x6c83('0x1c')],function(_0x316f70){return{'model':db[_0x316f70[_0x6c83('0x1f')]],'as':_0x316f70['as'],'attributes':_0x316f70[_0x6c83('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x6c83('0x20')](function(_0x5938a4){logger[_0x6c83('0xd')](_0x6c83('0x21'),_0x4429f4);logger[_0x6c83('0x22')](_0x6c83('0x21'),_0x4429f4,JSON[_0x6c83('0x11')](_0x5938a4));_0x21de2c(_0x5938a4);})[_0x6c83('0x16')](function(_0x2504da){logger[_0x6c83('0x12')](_0x6c83('0x21'),_0x2504da[_0x6c83('0x14')],_0x4429f4);_0x6b546b(_0x303dea[_0x6c83('0x12')](0x1f4,_0x2504da[_0x6c83('0x14')]));});});};exports[_0x6c83('0x23')]=function(_0x3709c5,_0x4b4aee,_0x253269){var _0x39232a=this;return new Promise(function(_0x26c0c0,_0x2977fb){var _0x5df903={'body':_0x3709c5[_0x6c83('0x24')],'channel':_0x6c83('0x25')};var _0x5a1637=[];var _0x23691c=[];var _0x39f2f9={};return db[_0x6c83('0x26')][_0x6c83('0x27')]()[_0x6c83('0x20')](function(_0x1645ef){if(!_0x1645ef){throw new db[(_0x6c83('0x28'))][(_0x6c83('0x29'))]('no\x20available\x20attributes');}_0x5a1637=_[_0x6c83('0x2a')](_[_0x6c83('0x2b')](_0x1645ef),[_0x6c83('0x2c'),_0x6c83('0x2d')]);_0x23691c=_[_0x6c83('0x2a')](_[_0x6c83('0x2b')](_0x1645ef),[_0x6c83('0x2c'),_0x6c83('0x2d'),_0x6c83('0x2e'),_0x6c83('0x2f')]);if(_0x3709c5[_0x6c83('0x24')]['id']){delete _0x3709c5[_0x6c83('0x24')]['id'];}if(_[_0x6c83('0x30')](_0x3709c5['body'][_0x6c83('0x31')])){throw new db[(_0x6c83('0x28'))][(_0x6c83('0x29'))](_0x6c83('0x32'));}if(_['isNil'](_0x3709c5[_0x6c83('0x24')][_0x6c83('0x24')])||_0x3709c5[_0x6c83('0x24')]['body']===''){throw new db[(_0x6c83('0x28'))][(_0x6c83('0x29'))](_0x6c83('0x33'));}if(_[_0x6c83('0x30')](_0x3709c5['body'][_0x6c83('0x34')])){throw new db['Sequelize']['ValidationError'](_0x6c83('0x35')+_0x23691c);}if(!_[_0x6c83('0x36')](_0x23691c,_0x3709c5[_0x6c83('0x24')][_0x6c83('0x34')])){throw new db[(_0x6c83('0x28'))][(_0x6c83('0x29'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x23691c);}_0x39f2f9[_0x3709c5['body'][_0x6c83('0x34')]]=_0x3709c5['body'][_0x6c83('0x31')];})['then'](function(){return db[_0x6c83('0x17')]['find']({'where':{'id':_0x3709c5[_0x6c83('0x37')]['id']},'include':[{'model':db[_0x6c83('0x38')],'as':'List','include':[{'model':db[_0x6c83('0x26')],'as':'Contacts','where':_0x39f2f9,'limit':0x1,'order':[[_0x6c83('0x2d'),_0x6c83('0x39')]]}]},{'model':db[_0x6c83('0x3a')],'as':_0x6c83('0x3b')}]});})[_0x6c83('0x20')](function(_0x414689){if(_0x414689&&_0x414689[_0x6c83('0x3c')]){var _0x4cbb21=_0x414689[_0x6c83('0x3d')]({'plain':!![]});_0x5df903[_0x6c83('0x37')]=_0x4cbb21;_0x5df903[_0x6c83('0x3e')]=_0x4cbb21['Applications'];_0x5df903['list']=_0x4cbb21[_0x6c83('0x3c')];_0x5df903[_0x6c83('0x3e')]=_['orderBy'](_0x5df903[_0x6c83('0x3e')],[_0x6c83('0x3f')],[_0x6c83('0x40')]);if(_0x5df903[_0x6c83('0x37')][_0x6c83('0x3b')]){delete _0x5df903[_0x6c83('0x37')][_0x6c83('0x3b')];}if(_0x5df903[_0x6c83('0x37')]['List']&&_0x5df903[_0x6c83('0x37')]['List'][_0x6c83('0x41')][_0x6c83('0x42')]){return _0x5df903[_0x6c83('0x37')][_0x6c83('0x3c')][_0x6c83('0x41')][0x0];}var _0x3ba9ce=_[_0x6c83('0x9')](_0x3709c5[_0x6c83('0x24')],{'firstName':_0x3709c5[_0x6c83('0x24')]['from'],'ListId':_0x4cbb21[_0x6c83('0x2f')]});_0x3ba9ce[_0x3709c5[_0x6c83('0x24')]['mapKey']]=_0x3709c5[_0x6c83('0x24')][_0x6c83('0x31')];return db[_0x6c83('0x26')][_0x6c83('0x43')](_0x3ba9ce,{'fields':_0x5a1637,'raw':!![]});}})[_0x6c83('0x20')](function(_0x268db7){_0x5df903[_0x6c83('0x44')]=_0x268db7;if(_0x268db7){var _0x478be9={'ContactId':_0x268db7['id'],'FaxAccountId':_0x3709c5[_0x6c83('0x37')]['id'],'fax':_0x268db7[_0x6c83('0x25')]};return db[_0x6c83('0x45')][_0x6c83('0x46')]({'where':{'ContactId':_0x268db7['id'],'closed':![],'FaxAccountId':_0x3709c5[_0x6c83('0x37')]['id']}})[_0x6c83('0x20')](function(_0x20d53f){if(_0x20d53f){return[_0x20d53f,![]];}return db[_0x6c83('0x45')][_0x6c83('0x43')](_0x478be9)['then'](function(_0xec41b3){return[_0xec41b3,!![]];});});}else{throw new Error(_0x6c83('0x47'));}})[_0x6c83('0x48')](function(_0x1bd16d,_0x190425){var _0x402449=_0x1bd16d['get']({'plain':!![]});if(_0x190425){if(_0x5df903['account']['autoclose']){_0x5df903[_0x6c83('0x3e')][_0x6c83('0x49')]({'id':0x0,'priority':_0x5df903['applications'][_0x6c83('0x42')]+0x1,'app':_0x6c83('0x4a'),'appdata':_0x6c83('0x4b'),'interval':'*,*,*,*'});}_0x402449['created']=!![];}else{_0x402449[_0x6c83('0x4c')]=![];}_0x5df903[_0x6c83('0x4d')]=_0x402449;return db['FaxMessage'][_0x6c83('0x43')]({'body':_0x3709c5[_0x6c83('0x24')]['body'],'FaxAccountId':_0x3709c5['account']['id'],'FaxInteractionId':_0x1bd16d['id'],'direction':'in','ContactId':_0x1bd16d['ContactId'],'AttachmentId':_0x3709c5[_0x6c83('0x24')][_0x6c83('0x4e')]});})[_0x6c83('0x20')](function(_0x2b0c8f){_0x5df903[_0x6c83('0x14')]=_0x2b0c8f;if(_0x5df903[_0x6c83('0x4d')][_0x6c83('0x4f')]){return db[_0x6c83('0x50')][_0x6c83('0x46')]({'attributes':['id',_0x6c83('0x51')],'where':{'id':_0x5df903[_0x6c83('0x4d')][_0x6c83('0x4f')]}})['then'](function(_0x58f3f2){if(_0x58f3f2){_0x5df903['applications'][_0x6c83('0x52')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x58f3f2['name']+','+(_0x5df903[_0x6c83('0x37')][_0x6c83('0x53')]||0xa),'interval':_0x6c83('0x54')});}return respondWithRpcPromise('Start','startRouting',_0x5df903);});}return respondWithRpcPromise(_0x6c83('0x55'),_0x6c83('0x56'),_0x5df903);})[_0x6c83('0x20')](function(_0x556184){_0x26c0c0(_0x556184);})[_0x6c83('0x16')](function(_0xbab036){_0x2977fb(_0x39232a[_0x6c83('0x12')](0x1f4,_0xbab036[_0x6c83('0x14')]));});});};
\ No newline at end of file
+var _0xd61e=['isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','List','CmContact','Contacts','DESC','FaxApplication','Applications','list','applications','priority','asc','length','create','contact','FaxInteraction','find','Contact\x20not\x20found','spread','get','push','close','unmanaged','created','interaction','ContactId','UserId','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','defaults','redis','localhost','register','request','info','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','FaxAccount,\x20%s,\x20%s','result','catch','FaxAccount','findAll','options','raw','where','attributes','limit','include','map','model','then','GetFaxAccount','NotifyFaxAccount','body','fax','describe','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','ListId','from','Sequelize','from\x20is\x20mandatory'];(function(_0x1ba99b,_0x128fc0){var _0x48f741=function(_0x4c1fd3){while(--_0x4c1fd3){_0x1ba99b['push'](_0x1ba99b['shift']());}};_0x48f741(++_0x128fc0);}(_0xd61e,0x1f2));var _0xed61=function(_0x7cecda,_0x477e36){_0x7cecda=_0x7cecda-0x0;var _0x51c84e=_0xd61e[_0x7cecda];return _0x51c84e;};'use strict';var _=require(_0xed61('0x0'));var util=require(_0xed61('0x1'));var moment=require(_0xed61('0x2'));var BPromise=require('bluebird');var rs=require(_0xed61('0x3'));var fs=require('fs');var Redis=require(_0xed61('0x4'));var db=require(_0xed61('0x5'))['db'];var utils=require(_0xed61('0x6'));var logger=require(_0xed61('0x7'))('rpc');var config=require(_0xed61('0x8'));var jayson=require(_0xed61('0x9'));var client=jayson['client'][_0xed61('0xa')]({'port':0x232c});config['redis']=_[_0xed61('0xb')](config[_0xed61('0xc')],{'host':_0xed61('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./faxAccount.socket')[_0xed61('0xe')](socket);function respondWithRpcPromise(_0x58a5df,_0x1222ff,_0x39cfb2){return new BPromise(function(_0x2ea749,_0x3786d4){return client[_0xed61('0xf')](_0x58a5df,_0x39cfb2)['then'](function(_0x18515c){logger[_0xed61('0x10')]('FaxAccount,\x20%s,\x20%s',_0x1222ff,'request\x20sent');logger[_0xed61('0x11')](_0xed61('0x12'),_0x1222ff,_0xed61('0x13'),JSON[_0xed61('0x14')](_0x18515c));if(_0x18515c[_0xed61('0x15')]){if(_0x18515c[_0xed61('0x15')][_0xed61('0x16')]===0x1f4){logger[_0xed61('0x15')]('FaxAccount,\x20%s,\x20%s',_0x1222ff,_0x18515c[_0xed61('0x15')][_0xed61('0x17')]);return _0x3786d4(_0x18515c[_0xed61('0x15')]['message']);}logger[_0xed61('0x15')](_0xed61('0x18'),_0x1222ff,_0x18515c[_0xed61('0x15')]['message']);return _0x2ea749(_0x18515c[_0xed61('0x15')][_0xed61('0x17')]);}else{logger[_0xed61('0x10')](_0xed61('0x18'),_0x1222ff,_0xed61('0x13'));_0x2ea749(_0x18515c[_0xed61('0x19')][_0xed61('0x17')]);}})[_0xed61('0x1a')](function(_0xb75aaa){logger['error']('FaxAccount,\x20%s,\x20%s',_0x1222ff,_0xb75aaa);_0x3786d4(_0xb75aaa);});});}exports['GetFaxAccount']=function(_0x3d5aed){var _0x22aacd=this;return new Promise(function(_0x245abf,_0x50d30e){return db[_0xed61('0x1b')][_0xed61('0x1c')]({'raw':_0x3d5aed[_0xed61('0x1d')]?_0x3d5aed[_0xed61('0x1d')][_0xed61('0x1e')]===undefined?!![]:![]:!![],'where':_0x3d5aed[_0xed61('0x1d')]?_0x3d5aed[_0xed61('0x1d')][_0xed61('0x1f')]||null:null,'attributes':_0x3d5aed[_0xed61('0x1d')]?_0x3d5aed['options'][_0xed61('0x20')]||null:null,'limit':_0x3d5aed['options']?_0x3d5aed['options'][_0xed61('0x21')]||null:null,'include':_0x3d5aed[_0xed61('0x1d')]?_0x3d5aed[_0xed61('0x1d')][_0xed61('0x22')]?_[_0xed61('0x23')](_0x3d5aed['options']['include'],function(_0x541db){return{'model':db[_0x541db['model']],'as':_0x541db['as'],'attributes':_0x541db[_0xed61('0x20')],'include':_0x541db[_0xed61('0x22')]?_[_0xed61('0x23')](_0x541db['include'],function(_0x3694ad){return{'model':db[_0x3694ad['model']],'as':_0x3694ad['as'],'attributes':_0x3694ad['attributes'],'include':_0x3694ad[_0xed61('0x22')]?_[_0xed61('0x23')](_0x3694ad[_0xed61('0x22')],function(_0x2e494b){return{'model':db[_0x2e494b[_0xed61('0x24')]],'as':_0x2e494b['as'],'attributes':_0x2e494b['attributes']};}):[]};}):[]};}):[]:[]})[_0xed61('0x25')](function(_0x1a867d){logger['info']('GetFaxAccount',_0x3d5aed);logger[_0xed61('0x11')]('GetFaxAccount',_0x3d5aed,JSON[_0xed61('0x14')](_0x1a867d));_0x245abf(_0x1a867d);})[_0xed61('0x1a')](function(_0x56afe6){logger[_0xed61('0x15')](_0xed61('0x26'),_0x56afe6[_0xed61('0x17')],_0x3d5aed);_0x50d30e(_0x22aacd[_0xed61('0x15')](0x1f4,_0x56afe6[_0xed61('0x17')]));});});};exports[_0xed61('0x27')]=function(_0x351e04,_0x701d8c,_0x30f208){var _0x147eac=this;return new Promise(function(_0x373af6,_0x19d280){var _0x37381e={'body':_0x351e04[_0xed61('0x28')],'channel':_0xed61('0x29')};var _0x6d76f4=[];var _0x1f93c8=[];var _0x45e49e={};return db['CmContact'][_0xed61('0x2a')]()[_0xed61('0x25')](function(_0x5cf88b){if(!_0x5cf88b){throw new db['Sequelize'][(_0xed61('0x2b'))](_0xed61('0x2c'));}_0x6d76f4=_[_0xed61('0x2d')](_[_0xed61('0x2e')](_0x5cf88b),[_0xed61('0x2f'),_0xed61('0x30')]);_0x1f93c8=_[_0xed61('0x2d')](_[_0xed61('0x2e')](_0x5cf88b),['createdAt',_0xed61('0x30'),_0xed61('0x31'),_0xed61('0x32')]);if(_0x351e04['body']['id']){delete _0x351e04[_0xed61('0x28')]['id'];}if(_['isNil'](_0x351e04[_0xed61('0x28')][_0xed61('0x33')])){throw new db[(_0xed61('0x34'))]['ValidationError'](_0xed61('0x35'));}if(_[_0xed61('0x36')](_0x351e04[_0xed61('0x28')][_0xed61('0x28')])||_0x351e04[_0xed61('0x28')][_0xed61('0x28')]===''){throw new db[(_0xed61('0x34'))][(_0xed61('0x2b'))](_0xed61('0x37'));}if(_[_0xed61('0x36')](_0x351e04[_0xed61('0x28')]['mapKey'])){throw new db[(_0xed61('0x34'))][(_0xed61('0x2b'))](_0xed61('0x38')+_0x1f93c8);}if(!_[_0xed61('0x39')](_0x1f93c8,_0x351e04['body'][_0xed61('0x3a')])){throw new db['Sequelize']['ValidationError'](_0xed61('0x3b')+_0x1f93c8);}_0x45e49e[_0x351e04[_0xed61('0x28')][_0xed61('0x3a')]]=_0x351e04[_0xed61('0x28')][_0xed61('0x33')];})[_0xed61('0x25')](function(){return db[_0xed61('0x1b')]['find']({'where':{'id':_0x351e04[_0xed61('0x3c')]['id']},'include':[{'model':db['CmList'],'as':_0xed61('0x3d'),'include':[{'model':db[_0xed61('0x3e')],'as':_0xed61('0x3f'),'where':_0x45e49e,'limit':0x1,'order':[[_0xed61('0x30'),_0xed61('0x40')]]}]},{'model':db[_0xed61('0x41')],'as':_0xed61('0x42')}]});})[_0xed61('0x25')](function(_0x1c5b74){if(_0x1c5b74&&_0x1c5b74['List']){var _0x3b994e=_0x1c5b74['get']({'plain':!![]});_0x37381e[_0xed61('0x3c')]=_0x3b994e;_0x37381e['applications']=_0x3b994e[_0xed61('0x42')];_0x37381e[_0xed61('0x43')]=_0x3b994e['List'];_0x37381e['applications']=_['orderBy'](_0x37381e[_0xed61('0x44')],[_0xed61('0x45')],[_0xed61('0x46')]);if(_0x37381e[_0xed61('0x3c')][_0xed61('0x42')]){delete _0x37381e[_0xed61('0x3c')][_0xed61('0x42')];}if(_0x37381e['account'][_0xed61('0x3d')]&&_0x37381e[_0xed61('0x3c')]['List'][_0xed61('0x3f')][_0xed61('0x47')]){return _0x37381e['account'][_0xed61('0x3d')]['Contacts'][0x0];}var _0x292c80=_[_0xed61('0xb')](_0x351e04[_0xed61('0x28')],{'firstName':_0x351e04[_0xed61('0x28')][_0xed61('0x33')],'ListId':_0x3b994e[_0xed61('0x32')]});_0x292c80[_0x351e04['body']['mapKey']]=_0x351e04[_0xed61('0x28')][_0xed61('0x33')];return db[_0xed61('0x3e')][_0xed61('0x48')](_0x292c80,{'fields':_0x6d76f4,'raw':!![]});}})[_0xed61('0x25')](function(_0x324234){_0x37381e[_0xed61('0x49')]=_0x324234;if(_0x324234){var _0x173cfa={'ContactId':_0x324234['id'],'FaxAccountId':_0x351e04[_0xed61('0x3c')]['id'],'fax':_0x324234[_0xed61('0x29')]};return db[_0xed61('0x4a')][_0xed61('0x4b')]({'where':{'ContactId':_0x324234['id'],'closed':![],'FaxAccountId':_0x351e04[_0xed61('0x3c')]['id']}})['then'](function(_0x483d80){if(_0x483d80){return[_0x483d80,![]];}return db[_0xed61('0x4a')]['create'](_0x173cfa)[_0xed61('0x25')](function(_0x52c146){return[_0x52c146,!![]];});});}else{throw new Error(_0xed61('0x4c'));}})[_0xed61('0x4d')](function(_0x759162,_0xbd190){var _0x3793db=_0x759162[_0xed61('0x4e')]({'plain':!![]});if(_0xbd190){if(_0x37381e[_0xed61('0x3c')]['autoclose']){_0x37381e[_0xed61('0x44')][_0xed61('0x4f')]({'id':0x0,'priority':_0x37381e[_0xed61('0x44')][_0xed61('0x47')]+0x1,'app':_0xed61('0x50'),'appdata':_0xed61('0x51'),'interval':'*,*,*,*'});}_0x3793db[_0xed61('0x52')]=!![];}else{_0x3793db[_0xed61('0x52')]=![];}_0x37381e[_0xed61('0x53')]=_0x3793db;return db['FaxMessage'][_0xed61('0x48')]({'body':_0x351e04[_0xed61('0x28')][_0xed61('0x28')],'FaxAccountId':_0x351e04[_0xed61('0x3c')]['id'],'FaxInteractionId':_0x759162['id'],'direction':'in','ContactId':_0x759162[_0xed61('0x54')],'AttachmentId':_0x351e04[_0xed61('0x28')]['AttachmentId']});})[_0xed61('0x25')](function(_0xa8f3d7){_0x37381e[_0xed61('0x17')]=_0xa8f3d7;if(_0x37381e['interaction'][_0xed61('0x55')]){return db['User']['find']({'attributes':['id',_0xed61('0x56')],'where':{'id':_0x37381e[_0xed61('0x53')][_0xed61('0x55')]}})[_0xed61('0x25')](function(_0x26a9fd){if(_0x26a9fd){_0x37381e[_0xed61('0x44')][_0xed61('0x57')]({'id':0x0,'priority':0x0,'app':_0xed61('0x58'),'appdata':_0x26a9fd['name']+','+(_0x37381e[_0xed61('0x3c')][_0xed61('0x59')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xed61('0x5a'),'startRouting',_0x37381e);});}return respondWithRpcPromise(_0xed61('0x5a'),_0xed61('0x5b'),_0x37381e);})[_0xed61('0x25')](function(_0x149355){_0x373af6(_0x149355);})['catch'](function(_0x605b20){_0x19d280(_0x147eac[_0xed61('0x15')](0x1f4,_0x605b20[_0xed61('0x17')]));});});};
\ No newline at end of file
index 2857fae..34a5b36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf38c=['emit','register','length','./faxAccount.events','save','remove','update'];(function(_0x11035a,_0x36d2ba){var _0x75ab79=function(_0x3cb4d4){while(--_0x3cb4d4){_0x11035a['push'](_0x11035a['shift']());}};_0x75ab79(++_0x36d2ba);}(_0xf38c,0x1bc));var _0xcf38=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xf38c[_0xa464c9];return _0x3d73c4;};'use strict';var FaxAccountEvents=require(_0xcf38('0x0'));var events=[_0xcf38('0x1'),_0xcf38('0x2'),_0xcf38('0x3')];function createListener(_0x1712bd,_0x18290c){return function(_0x55f668){_0x18290c[_0xcf38('0x4')](_0x1712bd,_0x55f668);};}function removeListener(_0x42443f,_0x449784){return function(){FaxAccountEvents['removeListener'](_0x42443f,_0x449784);};}exports[_0xcf38('0x5')]=function(_0x4d538b){for(var _0x24f058=0x0,_0x4669a1=events[_0xcf38('0x6')];_0x24f058<_0x4669a1;_0x24f058++){var _0x1692cb=events[_0x24f058];var _0x549346=createListener('faxAccount:'+_0x1692cb,_0x4d538b);FaxAccountEvents['on'](_0x1692cb,_0x549346);}};
\ No newline at end of file
+var _0x3fc0=['register','./faxAccount.events','save','update','emit','removeListener'];(function(_0x195eab,_0x4f2067){var _0x6c98ef=function(_0x333362){while(--_0x333362){_0x195eab['push'](_0x195eab['shift']());}};_0x6c98ef(++_0x4f2067);}(_0x3fc0,0xfd));var _0x03fc=function(_0x587fb5,_0x59cb3b){_0x587fb5=_0x587fb5-0x0;var _0x551105=_0x3fc0[_0x587fb5];return _0x551105;};'use strict';var FaxAccountEvents=require(_0x03fc('0x0'));var events=[_0x03fc('0x1'),'remove',_0x03fc('0x2')];function createListener(_0xf91bac,_0x3c96f6){return function(_0x440f10){_0x3c96f6[_0x03fc('0x3')](_0xf91bac,_0x440f10);};}function removeListener(_0x28a470,_0x53996b){return function(){FaxAccountEvents[_0x03fc('0x4')](_0x28a470,_0x53996b);};}exports[_0x03fc('0x5')]=function(_0x37e1ba){for(var _0x366110=0x0,_0x44a9e7=events['length'];_0x366110<_0x44a9e7;_0x366110++){var _0x5c2f40=events[_0x366110];var _0x53be39=createListener('faxAccount:'+_0x5c2f40,_0x37e1ba);FaxAccountEvents['on'](_0x5c2f40,_0x53be39);}};
\ No newline at end of file
index 045d980..f821c23 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(_0x1069ec,_0x5853d7){var _0x8dadf=function(_0x3388c5){while(--_0x3388c5){_0x1069ec['push'](_0x1069ec['shift']());}};_0x8dadf(++_0x5853d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'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(_0x5da2e1,_0x2adbbf){var _0x478240=function(_0x4f7c21){while(--_0x4f7c21){_0x5da2e1['push'](_0x5da2e1['shift']());}};_0x478240(++_0x2adbbf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xa9e0[_0x3899d1];return _0xeb4a7d;};'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 9a44765..990c76c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e4b=['TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x4ed32d,_0x327695){var _0xf624df=function(_0x29518c){while(--_0x29518c){_0x4ed32d['push'](_0x4ed32d['shift']());}};_0xf624df(++_0x327695);}(_0x6e4b,0x110));var _0xb6e4=function(_0x265aaa,_0x59fdb8){_0x265aaa=_0x265aaa-0x0;var _0x1359b5=_0x6e4b[_0x265aaa];return _0x1359b5;};'use strict';var Sequelize=require(_0xb6e4('0x0'));module[_0xb6e4('0x1')]={'priority':{'type':Sequelize[_0xb6e4('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xb6e4('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xb6e4('0x4')]()},'description':{'type':Sequelize[_0xb6e4('0x3')]},'interval':{'type':Sequelize[_0xb6e4('0x3')],'defaultValue':_0xb6e4('0x5')}};
\ No newline at end of file
+var _0x75cc=['noop','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x75cc,0x1ac));var _0xc75c=function(_0x5348ea,_0x11007e){_0x5348ea=_0x5348ea-0x0;var _0x44514a=_0x75cc[_0x5348ea];return _0x44514a;};'use strict';var Sequelize=require(_0xc75c('0x0'));module[_0xc75c('0x1')]={'priority':{'type':Sequelize[_0xc75c('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xc75c('0x3')],'allowNull':![],'defaultValue':_0xc75c('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xc75c('0x3')],'defaultValue':_0xc75c('0x5')}};
\ No newline at end of file
index 6dc7ea8..39dc585 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca9f=['sendStatus','error','stack','name','send','index','map','FaxApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','VIRTUAL','options','rows','catch','show','params','includeAll','include','merge','create','body','find','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','to-csv','ejs','lodash','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','status','json','offset','undefined','count','limit','save','update','then','destroy','end'];(function(_0xb8e982,_0xaf408f){var _0x291fad=function(_0x150641){while(--_0x150641){_0xb8e982['push'](_0xb8e982['shift']());}};_0x291fad(++_0xaf408f);}(_0xca9f,0x18d));var _0xfca9=function(_0x3cba1d,_0x2825ae){_0x3cba1d=_0x3cba1d-0x0;var _0x5f192b=_0xca9f[_0x3cba1d];return _0x5f192b;};'use strict';var emlformat=require(_0xfca9('0x0'));var rimraf=require(_0xfca9('0x1'));var zipdir=require(_0xfca9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfca9('0x3'));var moment=require(_0xfca9('0x4'));var BPromise=require(_0xfca9('0x5'));var Mustache=require(_0xfca9('0x6'));var util=require('util');var path=require(_0xfca9('0x7'));var sox=require('sox');var csv=require(_0xfca9('0x8'));var ejs=require(_0xfca9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfca9('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xfca9('0xb'));var toCsv=require(_0xfca9('0x8'));var querystring=require(_0xfca9('0xc'));var Papa=require(_0xfca9('0xd'));var Redis=require(_0xfca9('0xe'));var authService=require(_0xfca9('0xf'));var qs=require(_0xfca9('0x10'));var as=require(_0xfca9('0x11'));var hardwareService=require(_0xfca9('0x12'));var logger=require(_0xfca9('0x13'))(_0xfca9('0x14'));var utils=require(_0xfca9('0x15'));var config=require(_0xfca9('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xfca9('0x17'))['db'];function respondWithStatusCode(_0x1c294f,_0x9b87fb){_0x9b87fb=_0x9b87fb||0xcc;return function(_0x289ba4){if(_0x289ba4){return _0x1c294f['sendStatus'](_0x9b87fb);}return _0x1c294f[_0xfca9('0x18')](_0x9b87fb)['end']();};}function respondWithResult(_0x40e651,_0x45f0df){_0x45f0df=_0x45f0df||0xc8;return function(_0x35a1c9){if(_0x35a1c9){return _0x40e651[_0xfca9('0x18')](_0x45f0df)[_0xfca9('0x19')](_0x35a1c9);}};}function respondWithFilteredResult(_0x31873a,_0xc50c9a){return function(_0x4c6b63){if(_0x4c6b63){var _0x59014a=typeof _0xc50c9a[_0xfca9('0x1a')]===_0xfca9('0x1b')&&typeof _0xc50c9a['limit']===_0xfca9('0x1b');var _0x3c0af0=_0x4c6b63[_0xfca9('0x1c')];var _0x360a93=_0x59014a?0x0:_0xc50c9a[_0xfca9('0x1a')];var _0x3d4b38=_0x59014a?_0x4c6b63[_0xfca9('0x1c')]:_0xc50c9a[_0xfca9('0x1a')]+_0xc50c9a[_0xfca9('0x1d')];var _0x5c1856;if(_0x3d4b38>=_0x3c0af0){_0x3d4b38=_0x3c0af0;_0x5c1856=0xc8;}else{_0x5c1856=0xce;}_0x31873a[_0xfca9('0x18')](_0x5c1856);return _0x31873a['set']('Content-Range',_0x360a93+'-'+_0x3d4b38+'/'+_0x3c0af0)[_0xfca9('0x19')](_0x4c6b63);}return null;};}function patchUpdates(_0x458f71){return function(_0xbfbffb){try{jsonpatch['apply'](_0xbfbffb,_0x458f71,!![]);}catch(_0x2c3a30){return BPromise['reject'](_0x2c3a30);}return _0xbfbffb[_0xfca9('0x1e')]();};}function saveUpdates(_0x8a566b,_0xf41c34){return function(_0x14a69a){if(_0x14a69a){return _0x14a69a[_0xfca9('0x1f')](_0x8a566b)[_0xfca9('0x20')](function(_0x489b83){return _0x489b83;});}return null;};}function removeEntity(_0x3d838e,_0x5c85ec){return function(_0x31389b){if(_0x31389b){return _0x31389b[_0xfca9('0x21')]()[_0xfca9('0x20')](function(){_0x3d838e[_0xfca9('0x18')](0xcc)[_0xfca9('0x22')]();});}};}function handleEntityNotFound(_0x4815b4,_0x922ca4){return function(_0x2f7bf2){if(!_0x2f7bf2){_0x4815b4[_0xfca9('0x23')](0x194);}return _0x2f7bf2;};}function handleError(_0x562ec5,_0x2fc22b){_0x2fc22b=_0x2fc22b||0x1f4;return function(_0x172792){logger[_0xfca9('0x24')](_0x172792[_0xfca9('0x25')]);if(_0x172792[_0xfca9('0x26')]){delete _0x172792[_0xfca9('0x26')];}_0x562ec5[_0xfca9('0x18')](_0x2fc22b)[_0xfca9('0x27')](_0x172792);};}exports[_0xfca9('0x28')]=function(_0x28de7e,_0x58ae68){var _0x5d16a7={},_0x56fbc9={},_0x38c7fe={'count':0x0,'rows':[]};var _0x2ed6ca=_[_0xfca9('0x29')](db[_0xfca9('0x2a')][_0xfca9('0x2b')],function(_0x5090bd){return{'name':_0x5090bd[_0xfca9('0x2c')],'type':_0x5090bd[_0xfca9('0x2d')][_0xfca9('0x2e')]};});_0x56fbc9[_0xfca9('0x2f')]=_['map'](_0x2ed6ca,'name');_0x56fbc9[_0xfca9('0x30')]=_[_0xfca9('0x31')](_0x28de7e[_0xfca9('0x30')]);_0x56fbc9[_0xfca9('0x32')]=_[_0xfca9('0x33')](_0x56fbc9[_0xfca9('0x2f')],_0x56fbc9[_0xfca9('0x30')]);_0x5d16a7[_0xfca9('0x34')]=_['intersection'](_0x56fbc9[_0xfca9('0x2f')],qs[_0xfca9('0x35')](_0x28de7e[_0xfca9('0x30')][_0xfca9('0x35')]));_0x5d16a7[_0xfca9('0x34')]=_0x5d16a7[_0xfca9('0x34')][_0xfca9('0x36')]?_0x5d16a7[_0xfca9('0x34')]:_0x56fbc9[_0xfca9('0x2f')];if(!_0x28de7e['query']['hasOwnProperty'](_0xfca9('0x37'))){_0x5d16a7['limit']=qs[_0xfca9('0x1d')](_0x28de7e[_0xfca9('0x30')]['limit']);_0x5d16a7[_0xfca9('0x1a')]=qs['offset'](_0x28de7e[_0xfca9('0x30')]['offset']);}_0x5d16a7[_0xfca9('0x38')]=qs[_0xfca9('0x39')](_0x28de7e[_0xfca9('0x30')][_0xfca9('0x39')]);_0x5d16a7['where']=qs[_0xfca9('0x32')](_['pick'](_0x28de7e[_0xfca9('0x30')],_0x56fbc9[_0xfca9('0x32')]),_0x2ed6ca);if(_0x28de7e[_0xfca9('0x30')][_0xfca9('0x3a')]){_0x5d16a7['where']=_['merge'](_0x5d16a7[_0xfca9('0x3b')],{'$or':_[_0xfca9('0x29')](_0x2ed6ca,function(_0x348639){if(_0x348639['type']!==_0xfca9('0x3c')){var _0x2f4a4b={};_0x2f4a4b[_0x348639[_0xfca9('0x26')]]={'$like':'%'+_0x28de7e['query'][_0xfca9('0x3a')]+'%'};return _0x2f4a4b;}})});}_0x5d16a7=_['merge']({},_0x5d16a7,_0x28de7e[_0xfca9('0x3d')]);var _0x21ea55={'where':_0x5d16a7['where']};return db['FaxApplication'][_0xfca9('0x1c')](_0x21ea55)[_0xfca9('0x20')](function(_0x3047ce){_0x38c7fe[_0xfca9('0x1c')]=_0x3047ce;if(_0x28de7e[_0xfca9('0x30')]['includeAll']){_0x5d16a7['include']=[{'all':!![]}];}return db['FaxApplication']['findAll'](_0x5d16a7);})[_0xfca9('0x20')](function(_0x47c379){_0x38c7fe[_0xfca9('0x3e')]=_0x47c379;return _0x38c7fe;})[_0xfca9('0x20')](respondWithFilteredResult(_0x58ae68,_0x5d16a7))[_0xfca9('0x3f')](handleError(_0x58ae68,null));};exports[_0xfca9('0x40')]=function(_0x517a10,_0x4d60a8){var _0x27e5f0={'raw':!![],'where':{'id':_0x517a10[_0xfca9('0x41')]['id']}},_0x20263e={};_0x20263e[_0xfca9('0x2f')]=_[_0xfca9('0x31')](db['FaxApplication'][_0xfca9('0x2b')]);_0x20263e[_0xfca9('0x30')]=_[_0xfca9('0x31')](_0x517a10[_0xfca9('0x30')]);_0x20263e['filters']=_[_0xfca9('0x33')](_0x20263e[_0xfca9('0x2f')],_0x20263e[_0xfca9('0x30')]);_0x27e5f0[_0xfca9('0x34')]=_[_0xfca9('0x33')](_0x20263e[_0xfca9('0x2f')],qs[_0xfca9('0x35')](_0x517a10['query'][_0xfca9('0x35')]));_0x27e5f0['attributes']=_0x27e5f0[_0xfca9('0x34')][_0xfca9('0x36')]?_0x27e5f0[_0xfca9('0x34')]:_0x20263e['model'];if(_0x517a10[_0xfca9('0x30')][_0xfca9('0x42')]){_0x27e5f0[_0xfca9('0x43')]=[{'all':!![]}];}_0x27e5f0=_[_0xfca9('0x44')]({},_0x27e5f0,_0x517a10[_0xfca9('0x3d')]);return db[_0xfca9('0x2a')]['find'](_0x27e5f0)[_0xfca9('0x20')](handleEntityNotFound(_0x4d60a8,null))[_0xfca9('0x20')](respondWithResult(_0x4d60a8,null))[_0xfca9('0x3f')](handleError(_0x4d60a8,null));};exports[_0xfca9('0x45')]=function(_0x116195,_0x23ef0e){return db[_0xfca9('0x2a')][_0xfca9('0x45')](_0x116195[_0xfca9('0x46')],{})[_0xfca9('0x20')](respondWithResult(_0x23ef0e,0xc9))[_0xfca9('0x3f')](handleError(_0x23ef0e,null));};exports[_0xfca9('0x1f')]=function(_0xcef88a,_0xae4e63){if(_0xcef88a[_0xfca9('0x46')]['id']){delete _0xcef88a[_0xfca9('0x46')]['id'];}return db[_0xfca9('0x2a')][_0xfca9('0x47')]({'where':{'id':_0xcef88a['params']['id']}})[_0xfca9('0x20')](handleEntityNotFound(_0xae4e63,null))[_0xfca9('0x20')](saveUpdates(_0xcef88a[_0xfca9('0x46')],null))[_0xfca9('0x20')](respondWithResult(_0xae4e63,null))[_0xfca9('0x3f')](handleError(_0xae4e63,null));};exports[_0xfca9('0x21')]=function(_0x1dc656,_0xb7e446){return db['FaxApplication'][_0xfca9('0x47')]({'where':{'id':_0x1dc656[_0xfca9('0x41')]['id']}})[_0xfca9('0x20')](handleEntityNotFound(_0xb7e446,null))[_0xfca9('0x20')](removeEntity(_0xb7e446,null))[_0xfca9('0x3f')](handleError(_0xb7e446,null));};
\ No newline at end of file
+var _0xdbed=['name','query','keys','intersection','attributes','fields','length','nolimit','order','sort','filters','pick','filter','merge','where','VIRTUAL','options','count','includeAll','findAll','rows','show','params','find','catch','create','body','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','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','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','send','index','FaxApplication','rawAttributes','fieldName','model','map'];(function(_0xd3a39a,_0x32d04d){var _0x5229e2=function(_0x167037){while(--_0x167037){_0xd3a39a['push'](_0xd3a39a['shift']());}};_0x5229e2(++_0x32d04d);}(_0xdbed,0x69));var _0xddbe=function(_0x116d4c,_0xf58d9a){_0x116d4c=_0x116d4c-0x0;var _0x4d962d=_0xdbed[_0x116d4c];return _0x4d962d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xddbe('0x0'));var zipdir=require(_0xddbe('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xddbe('0x2'));var moment=require(_0xddbe('0x3'));var BPromise=require(_0xddbe('0x4'));var Mustache=require(_0xddbe('0x5'));var util=require(_0xddbe('0x6'));var path=require(_0xddbe('0x7'));var sox=require(_0xddbe('0x8'));var csv=require(_0xddbe('0x9'));var ejs=require(_0xddbe('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xddbe('0xb'));var squel=require(_0xddbe('0xc'));var crypto=require(_0xddbe('0xd'));var jsforce=require(_0xddbe('0xe'));var deskjs=require(_0xddbe('0xf'));var toCsv=require(_0xddbe('0x9'));var querystring=require(_0xddbe('0x10'));var Papa=require(_0xddbe('0x11'));var Redis=require(_0xddbe('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xddbe('0x13'));var as=require(_0xddbe('0x14'));var hardwareService=require(_0xddbe('0x15'));var logger=require(_0xddbe('0x16'))(_0xddbe('0x17'));var utils=require(_0xddbe('0x18'));var config=require(_0xddbe('0x19'));var licenseUtil=require(_0xddbe('0x1a'));var db=require(_0xddbe('0x1b'))['db'];function respondWithStatusCode(_0x354970,_0x32ba25){_0x32ba25=_0x32ba25||0xcc;return function(_0x4fc40a){if(_0x4fc40a){return _0x354970[_0xddbe('0x1c')](_0x32ba25);}return _0x354970[_0xddbe('0x1d')](_0x32ba25)['end']();};}function respondWithResult(_0xd02c5b,_0x36f034){_0x36f034=_0x36f034||0xc8;return function(_0x1ed2db){if(_0x1ed2db){return _0xd02c5b[_0xddbe('0x1d')](_0x36f034)[_0xddbe('0x1e')](_0x1ed2db);}};}function respondWithFilteredResult(_0x19e39f,_0x503c03){return function(_0xe26d8a){if(_0xe26d8a){var _0x1689a3=typeof _0x503c03[_0xddbe('0x1f')]===_0xddbe('0x20')&&typeof _0x503c03['limit']==='undefined';var _0x51bf9=_0xe26d8a['count'];var _0x358064=_0x1689a3?0x0:_0x503c03['offset'];var _0x5b3a2e=_0x1689a3?_0xe26d8a['count']:_0x503c03[_0xddbe('0x1f')]+_0x503c03[_0xddbe('0x21')];var _0x59aa93;if(_0x5b3a2e>=_0x51bf9){_0x5b3a2e=_0x51bf9;_0x59aa93=0xc8;}else{_0x59aa93=0xce;}_0x19e39f[_0xddbe('0x1d')](_0x59aa93);return _0x19e39f[_0xddbe('0x22')](_0xddbe('0x23'),_0x358064+'-'+_0x5b3a2e+'/'+_0x51bf9)[_0xddbe('0x1e')](_0xe26d8a);}return null;};}function patchUpdates(_0x1d938e){return function(_0x39d421){try{jsonpatch[_0xddbe('0x24')](_0x39d421,_0x1d938e,!![]);}catch(_0x563b3c){return BPromise[_0xddbe('0x25')](_0x563b3c);}return _0x39d421[_0xddbe('0x26')]();};}function saveUpdates(_0x370051,_0x1f6611){return function(_0x54139c){if(_0x54139c){return _0x54139c[_0xddbe('0x27')](_0x370051)[_0xddbe('0x28')](function(_0x9b5c36){return _0x9b5c36;});}return null;};}function removeEntity(_0x1f218d,_0x27ce71){return function(_0x2294d2){if(_0x2294d2){return _0x2294d2[_0xddbe('0x29')]()[_0xddbe('0x28')](function(){_0x1f218d['status'](0xcc)[_0xddbe('0x2a')]();});}};}function handleEntityNotFound(_0x261ea3,_0x35c277){return function(_0xb324c0){if(!_0xb324c0){_0x261ea3['sendStatus'](0x194);}return _0xb324c0;};}function handleError(_0x5aa0e7,_0x3a5cff){_0x3a5cff=_0x3a5cff||0x1f4;return function(_0x52797a){logger['error'](_0x52797a[_0xddbe('0x2b')]);if(_0x52797a['name']){delete _0x52797a['name'];}_0x5aa0e7['status'](_0x3a5cff)[_0xddbe('0x2c')](_0x52797a);};}exports[_0xddbe('0x2d')]=function(_0x590abb,_0x42ddfe){var _0x570110={},_0x3453fc={},_0xcb004c={'count':0x0,'rows':[]};var _0x3eedb2=_['map'](db[_0xddbe('0x2e')][_0xddbe('0x2f')],function(_0x406996){return{'name':_0x406996[_0xddbe('0x30')],'type':_0x406996['type']['key']};});_0x3453fc[_0xddbe('0x31')]=_[_0xddbe('0x32')](_0x3eedb2,_0xddbe('0x33'));_0x3453fc[_0xddbe('0x34')]=_[_0xddbe('0x35')](_0x590abb['query']);_0x3453fc['filters']=_[_0xddbe('0x36')](_0x3453fc[_0xddbe('0x31')],_0x3453fc[_0xddbe('0x34')]);_0x570110[_0xddbe('0x37')]=_[_0xddbe('0x36')](_0x3453fc[_0xddbe('0x31')],qs[_0xddbe('0x38')](_0x590abb[_0xddbe('0x34')][_0xddbe('0x38')]));_0x570110[_0xddbe('0x37')]=_0x570110[_0xddbe('0x37')][_0xddbe('0x39')]?_0x570110[_0xddbe('0x37')]:_0x3453fc[_0xddbe('0x31')];if(!_0x590abb['query']['hasOwnProperty'](_0xddbe('0x3a'))){_0x570110['limit']=qs[_0xddbe('0x21')](_0x590abb[_0xddbe('0x34')]['limit']);_0x570110[_0xddbe('0x1f')]=qs[_0xddbe('0x1f')](_0x590abb[_0xddbe('0x34')][_0xddbe('0x1f')]);}_0x570110[_0xddbe('0x3b')]=qs[_0xddbe('0x3c')](_0x590abb[_0xddbe('0x34')][_0xddbe('0x3c')]);_0x570110['where']=qs[_0xddbe('0x3d')](_[_0xddbe('0x3e')](_0x590abb[_0xddbe('0x34')],_0x3453fc[_0xddbe('0x3d')]),_0x3eedb2);if(_0x590abb[_0xddbe('0x34')][_0xddbe('0x3f')]){_0x570110['where']=_[_0xddbe('0x40')](_0x570110[_0xddbe('0x41')],{'$or':_['map'](_0x3eedb2,function(_0x449ce5){if(_0x449ce5['type']!==_0xddbe('0x42')){var _0x5bbaa1={};_0x5bbaa1[_0x449ce5[_0xddbe('0x33')]]={'$like':'%'+_0x590abb['query'][_0xddbe('0x3f')]+'%'};return _0x5bbaa1;}})});}_0x570110=_[_0xddbe('0x40')]({},_0x570110,_0x590abb[_0xddbe('0x43')]);var _0x1b7ead={'where':_0x570110['where']};return db[_0xddbe('0x2e')][_0xddbe('0x44')](_0x1b7ead)[_0xddbe('0x28')](function(_0x255ac0){_0xcb004c[_0xddbe('0x44')]=_0x255ac0;if(_0x590abb[_0xddbe('0x34')][_0xddbe('0x45')]){_0x570110['include']=[{'all':!![]}];}return db[_0xddbe('0x2e')][_0xddbe('0x46')](_0x570110);})[_0xddbe('0x28')](function(_0x40edd1){_0xcb004c[_0xddbe('0x47')]=_0x40edd1;return _0xcb004c;})[_0xddbe('0x28')](respondWithFilteredResult(_0x42ddfe,_0x570110))['catch'](handleError(_0x42ddfe,null));};exports[_0xddbe('0x48')]=function(_0x3d79df,_0x54dc07){var _0x4343a7={'raw':!![],'where':{'id':_0x3d79df[_0xddbe('0x49')]['id']}},_0xe51338={};_0xe51338[_0xddbe('0x31')]=_[_0xddbe('0x35')](db[_0xddbe('0x2e')]['rawAttributes']);_0xe51338[_0xddbe('0x34')]=_[_0xddbe('0x35')](_0x3d79df[_0xddbe('0x34')]);_0xe51338[_0xddbe('0x3d')]=_[_0xddbe('0x36')](_0xe51338[_0xddbe('0x31')],_0xe51338[_0xddbe('0x34')]);_0x4343a7['attributes']=_[_0xddbe('0x36')](_0xe51338[_0xddbe('0x31')],qs['fields'](_0x3d79df[_0xddbe('0x34')]['fields']));_0x4343a7[_0xddbe('0x37')]=_0x4343a7['attributes']['length']?_0x4343a7[_0xddbe('0x37')]:_0xe51338[_0xddbe('0x31')];if(_0x3d79df[_0xddbe('0x34')]['includeAll']){_0x4343a7['include']=[{'all':!![]}];}_0x4343a7=_['merge']({},_0x4343a7,_0x3d79df['options']);return db[_0xddbe('0x2e')][_0xddbe('0x4a')](_0x4343a7)[_0xddbe('0x28')](handleEntityNotFound(_0x54dc07,null))[_0xddbe('0x28')](respondWithResult(_0x54dc07,null))[_0xddbe('0x4b')](handleError(_0x54dc07,null));};exports[_0xddbe('0x4c')]=function(_0x486e32,_0xab122f){return db[_0xddbe('0x2e')][_0xddbe('0x4c')](_0x486e32[_0xddbe('0x4d')],{})[_0xddbe('0x28')](respondWithResult(_0xab122f,0xc9))[_0xddbe('0x4b')](handleError(_0xab122f,null));};exports['update']=function(_0x2737bc,_0x3a891e){if(_0x2737bc[_0xddbe('0x4d')]['id']){delete _0x2737bc[_0xddbe('0x4d')]['id'];}return db[_0xddbe('0x2e')][_0xddbe('0x4a')]({'where':{'id':_0x2737bc[_0xddbe('0x49')]['id']}})['then'](handleEntityNotFound(_0x3a891e,null))[_0xddbe('0x28')](saveUpdates(_0x2737bc['body'],null))[_0xddbe('0x28')](respondWithResult(_0x3a891e,null))[_0xddbe('0x4b')](handleError(_0x3a891e,null));};exports[_0xddbe('0x29')]=function(_0x2ce50a,_0xf4c79){return db[_0xddbe('0x2e')][_0xddbe('0x4a')]({'where':{'id':_0x2ce50a[_0xddbe('0x49')]['id']}})[_0xddbe('0x28')](handleEntityNotFound(_0xf4c79,null))[_0xddbe('0x28')](removeEntity(_0xf4c79,null))[_0xddbe('0x4b')](handleError(_0xf4c79,null));};
\ No newline at end of file
index fffa84e..1b8b087 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x261d=['rimraf','./faxApplication.attributes','define','FaxApplication','fax_applications','utf8mb4','utf8mb4_unicode_ci','lodash','api','bluebird','path'];(function(_0x5ba063,_0x142b43){var _0x5c932b=function(_0xcb94e9){while(--_0xcb94e9){_0x5ba063['push'](_0x5ba063['shift']());}};_0x5c932b(++_0x142b43);}(_0x261d,0x167));var _0xd261=function(_0x51f04f,_0x34883c){_0x51f04f=_0x51f04f-0x0;var _0x2d37a1=_0x261d[_0x51f04f];return _0x2d37a1;};'use strict';var _=require(_0xd261('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xd261('0x1'));var moment=require('moment');var BPromise=require(_0xd261('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd261('0x3'));var rimraf=require(_0xd261('0x4'));var config=require('../../config/environment');var attributes=require(_0xd261('0x5'));module['exports']=function(_0x304660,_0x28fcf7){return _0x304660[_0xd261('0x6')](_0xd261('0x7'),attributes,{'tableName':_0xd261('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xd261('0x9'),'collate':_0xd261('0xa')});};
\ No newline at end of file
+var _0x3ab6=['utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','fax_applications'];(function(_0x15d26a,_0x230cc1){var _0x4a031f=function(_0x34d7a2){while(--_0x34d7a2){_0x15d26a['push'](_0x15d26a['shift']());}};_0x4a031f(++_0x230cc1);}(_0x3ab6,0x1c4));var _0x63ab=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3ab6[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x63ab('0x0'));var util=require(_0x63ab('0x1'));var logger=require(_0x63ab('0x2'))(_0x63ab('0x3'));var moment=require(_0x63ab('0x4'));var BPromise=require(_0x63ab('0x5'));var rp=require(_0x63ab('0x6'));var fs=require('fs');var path=require(_0x63ab('0x7'));var rimraf=require(_0x63ab('0x8'));var config=require(_0x63ab('0x9'));var attributes=require('./faxApplication.attributes');module[_0x63ab('0xa')]=function(_0x482eac,_0x51599b){return _0x482eac[_0x63ab('0xb')]('FaxApplication',attributes,{'tableName':_0x63ab('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x63ab('0xd'),'collate':_0x63ab('0xe')});};
\ No newline at end of file
index cd26b00..792b784 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0af=['catch','UpdateFaxApplication','FaxApplication','body','options','where','limit','then','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','info','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxApplication,\x20%s,\x20%s','message'];(function(_0x10747c,_0x5b851a){var _0x59fc2e=function(_0x405806){while(--_0x405806){_0x10747c['push'](_0x10747c['shift']());}};_0x59fc2e(++_0x5b851a);}(_0xe0af,0x1e4));var _0xfe0a=function(_0x3ac312,_0x5d3903){_0x3ac312=_0x3ac312-0x0;var _0x36b673=_0xe0af[_0x3ac312];return _0x36b673;};'use strict';var _=require(_0xfe0a('0x0'));var util=require(_0xfe0a('0x1'));var moment=require(_0xfe0a('0x2'));var BPromise=require(_0xfe0a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfe0a('0x4'))['db'];var utils=require(_0xfe0a('0x5'));var logger=require('../../config/logger')(_0xfe0a('0x6'));var config=require(_0xfe0a('0x7'));var jayson=require(_0xfe0a('0x8'));var client=jayson['client'][_0xfe0a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3a9ac8,_0x26adee,_0x479973){return new BPromise(function(_0x51c0a2,_0x797cb0){return client[_0xfe0a('0xa')](_0x3a9ac8,_0x479973)['then'](function(_0x203d18){logger[_0xfe0a('0xb')]('FaxApplication,\x20%s,\x20%s',_0x26adee,_0xfe0a('0xc'));logger[_0xfe0a('0xd')](_0xfe0a('0xe'),_0x26adee,_0xfe0a('0xc'),JSON[_0xfe0a('0xf')](_0x203d18));if(_0x203d18['error']){if(_0x203d18[_0xfe0a('0x10')][_0xfe0a('0x11')]===0x1f4){logger[_0xfe0a('0x10')](_0xfe0a('0x12'),_0x26adee,_0x203d18['error'][_0xfe0a('0x13')]);return _0x797cb0(_0x203d18[_0xfe0a('0x10')][_0xfe0a('0x13')]);}logger[_0xfe0a('0x10')](_0xfe0a('0x12'),_0x26adee,_0x203d18[_0xfe0a('0x10')][_0xfe0a('0x13')]);return _0x51c0a2(_0x203d18[_0xfe0a('0x10')][_0xfe0a('0x13')]);}else{logger[_0xfe0a('0xb')](_0xfe0a('0x12'),_0x26adee,_0xfe0a('0xc'));_0x51c0a2(_0x203d18['result']['message']);}})[_0xfe0a('0x14')](function(_0x4dd7a8){logger['error']('FaxApplication,\x20%s,\x20%s',_0x26adee,_0x4dd7a8);_0x797cb0(_0x4dd7a8);});});}exports[_0xfe0a('0x15')]=function(_0x147079){var _0x4aeae4=this;return new Promise(function(_0x538ef5,_0x45f9fe){return db[_0xfe0a('0x16')]['update'](_0x147079[_0xfe0a('0x17')],{'raw':_0x147079[_0xfe0a('0x18')]?_0x147079['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x147079['options']?_0x147079[_0xfe0a('0x18')][_0xfe0a('0x19')]||null:null,'attributes':_0x147079[_0xfe0a('0x18')]?_0x147079[_0xfe0a('0x18')]['attributes']||null:null,'limit':_0x147079[_0xfe0a('0x18')]?_0x147079['options'][_0xfe0a('0x1a')]||null:null})[_0xfe0a('0x1b')](function(_0x54445e){logger[_0xfe0a('0xb')](_0xfe0a('0x15'),_0x147079);logger[_0xfe0a('0xd')](_0xfe0a('0x15'),_0x147079,JSON[_0xfe0a('0xf')](_0x54445e));_0x538ef5(_0x54445e);})['catch'](function(_0x458073){logger['error'](_0xfe0a('0x15'),_0x458073[_0xfe0a('0x13')],_0x147079);_0x45f9fe(_0x4aeae4[_0xfe0a('0x10')](0x1f4,_0x458073[_0xfe0a('0x13')]));});});};
\ No newline at end of file
+var _0xaa86=['info','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxApplication,\x20%s,\x20%s','message','catch','UpdateFaxApplication','FaxApplication','update','options','where','limit','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then'];(function(_0x561c25,_0x385020){var _0x45f2f3=function(_0x23b88d){while(--_0x23b88d){_0x561c25['push'](_0x561c25['shift']());}};_0x45f2f3(++_0x385020);}(_0xaa86,0x97));var _0x6aa8=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xaa86[_0x28947d];return _0x12d2ee;};'use strict';var _=require('lodash');var util=require(_0x6aa8('0x0'));var moment=require(_0x6aa8('0x1'));var BPromise=require(_0x6aa8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6aa8('0x3'));var db=require(_0x6aa8('0x4'))['db'];var utils=require(_0x6aa8('0x5'));var logger=require(_0x6aa8('0x6'))('rpc');var config=require(_0x6aa8('0x7'));var jayson=require(_0x6aa8('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xe3d069,_0x14b3c3,_0x261979){return new BPromise(function(_0x31b6c2,_0x3c8017){return client[_0x6aa8('0x9')](_0xe3d069,_0x261979)[_0x6aa8('0xa')](function(_0x407b92){logger[_0x6aa8('0xb')]('FaxApplication,\x20%s,\x20%s',_0x14b3c3,_0x6aa8('0xc'));logger[_0x6aa8('0xd')](_0x6aa8('0xe'),_0x14b3c3,'request\x20sent',JSON[_0x6aa8('0xf')](_0x407b92));if(_0x407b92[_0x6aa8('0x10')]){if(_0x407b92[_0x6aa8('0x10')][_0x6aa8('0x11')]===0x1f4){logger[_0x6aa8('0x10')](_0x6aa8('0x12'),_0x14b3c3,_0x407b92[_0x6aa8('0x10')]['message']);return _0x3c8017(_0x407b92['error'][_0x6aa8('0x13')]);}logger['error'](_0x6aa8('0x12'),_0x14b3c3,_0x407b92[_0x6aa8('0x10')]['message']);return _0x31b6c2(_0x407b92[_0x6aa8('0x10')][_0x6aa8('0x13')]);}else{logger[_0x6aa8('0xb')](_0x6aa8('0x12'),_0x14b3c3,'request\x20sent');_0x31b6c2(_0x407b92['result']['message']);}})[_0x6aa8('0x14')](function(_0x199595){logger[_0x6aa8('0x10')]('FaxApplication,\x20%s,\x20%s',_0x14b3c3,_0x199595);_0x3c8017(_0x199595);});});}exports[_0x6aa8('0x15')]=function(_0x388eee){var _0x3fbf4b=this;return new Promise(function(_0xb5b456,_0x2f0994){return db[_0x6aa8('0x16')][_0x6aa8('0x17')](_0x388eee['body'],{'raw':_0x388eee[_0x6aa8('0x18')]?_0x388eee[_0x6aa8('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x388eee[_0x6aa8('0x18')]?_0x388eee['options'][_0x6aa8('0x19')]||null:null,'attributes':_0x388eee[_0x6aa8('0x18')]?_0x388eee[_0x6aa8('0x18')]['attributes']||null:null,'limit':_0x388eee[_0x6aa8('0x18')]?_0x388eee['options'][_0x6aa8('0x1a')]||null:null})[_0x6aa8('0xa')](function(_0x4b9d9d){logger[_0x6aa8('0xb')](_0x6aa8('0x15'),_0x388eee);logger[_0x6aa8('0xd')]('UpdateFaxApplication',_0x388eee,JSON['stringify'](_0x4b9d9d));_0xb5b456(_0x4b9d9d);})['catch'](function(_0x4f9623){logger[_0x6aa8('0x10')](_0x6aa8('0x15'),_0x4f9623['message'],_0x388eee);_0x2f0994(_0x3fbf4b[_0x6aa8('0x10')](0x1f4,_0x4f9623[_0x6aa8('0x13')]));});});};
\ No newline at end of file
index 3c4ff4e..89685ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7d1=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x1ff575,_0xdba21f){var _0x48fc9e=function(_0x51cf97){while(--_0x51cf97){_0x1ff575['push'](_0x1ff575['shift']());}};_0x48fc9e(++_0xdba21f);}(_0xd7d1,0x1b3));var _0x1d7d=function(_0x5de140,_0x111788){_0x5de140=_0x5de140-0x0;var _0x412778=_0xd7d1[_0x5de140];return _0x412778;};'use strict';var multer=require(_0x1d7d('0x0'));var util=require(_0x1d7d('0x1'));var path=require(_0x1d7d('0x2'));var timeout=require(_0x1d7d('0x3'));var express=require(_0x1d7d('0x4'));var router=express[_0x1d7d('0x5')]();var fs_extra=require(_0x1d7d('0x6'));var auth=require(_0x1d7d('0x7'));var interaction=require(_0x1d7d('0x8'));var config=require(_0x1d7d('0x9'));var controller=require(_0x1d7d('0xa'));router[_0x1d7d('0xb')]('/',auth[_0x1d7d('0xc')](),controller['index']);router[_0x1d7d('0xb')](_0x1d7d('0xd'),auth[_0x1d7d('0xc')](),controller[_0x1d7d('0xe')]);router[_0x1d7d('0xf')]('/',auth[_0x1d7d('0xc')](),controller[_0x1d7d('0x10')]);router[_0x1d7d('0x11')](_0x1d7d('0xd'),auth[_0x1d7d('0xc')](),controller[_0x1d7d('0x12')]);router['delete'](_0x1d7d('0xd'),auth['isAuthenticated'](),controller[_0x1d7d('0x13')]);module[_0x1d7d('0x14')]=router;
\ No newline at end of file
+var _0xbaf0=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','util','path'];(function(_0x4b3f33,_0x263610){var _0x22516a=function(_0x1323b0){while(--_0x1323b0){_0x4b3f33['push'](_0x4b3f33['shift']());}};_0x22516a(++_0x263610);}(_0xbaf0,0x12a));var _0x0baf=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xbaf0[_0x6c993a];return _0x27f547;};'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 1128b22..864f63b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea54=['out','DATE','BOOLEAN','STRING'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xea54,0x142));var _0x4ea5=function(_0x131c24,_0xb7c584){_0x131c24=_0x131c24-0x0;var _0x28c053=_0xea54[_0x131c24];return _0x28c053;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize[_0x4ea5('0x0')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x4ea5('0x1')]},'read1stAt':{'type':Sequelize['DATE']},'fax':{'type':Sequelize[_0x4ea5('0x1')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x4ea5('0x2')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x4ea5('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x4ea5('0x2')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x9cef=['ENUM','sequelize','exports','DATE','STRING','out'];(function(_0x18be4a,_0x175619){var _0x2a367f=function(_0x4a83d8){while(--_0x4a83d8){_0x18be4a['push'](_0x18be4a['shift']());}};_0x2a367f(++_0x175619);}(_0x9cef,0x1d5));var _0xf9ce=function(_0x1e2f5b,_0x60bf47){_0x1e2f5b=_0x1e2f5b-0x0;var _0x2bb7bc=_0x9cef[_0x1e2f5b];return _0x2bb7bc;};'use strict';var Sequelize=require(_0xf9ce('0x0'));module[_0xf9ce('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xf9ce('0x2')]},'disposition':{'type':Sequelize[_0xf9ce('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xf9ce('0x3')]},'note':{'type':Sequelize[_0xf9ce('0x3')]},'read1stAt':{'type':Sequelize[_0xf9ce('0x2')]},'fax':{'type':Sequelize[_0xf9ce('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0xf9ce('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xf9ce('0x2')]},'lastMsgDirection':{'type':Sequelize[_0xf9ce('0x5')]('in','out'),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index c2b3fe3..abbd302 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8b0=['left_join','users','u.id\x20=\x20ui.UserId','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','fax_accounts','a.id\x20=\x20i.FaxAccountId','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','expr','search','parseSearch','sqlOperator','conditions','length','find','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','ContactId','buildExpression','type','text','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','some','compact','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','role','user','getFaxAccounts','isEmpty','i.FaxAccountId\x20IS\x20NULL','toString','keyBy','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','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','c.fax','Owner.fullname','o.internal','sequelize','groupBy','FaxInteractionId','rows','catch','show','includeAll','include','merge','create','body','params','describe','addMessage','FaxMessage','ids','omit','findOne','hasOwnProperty','format','options','findAll','addTags','setTags','spread','emit','faxInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','Messages','get','Attachment','basename','existsSync','createWriteStream','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','Users','map','fullname','TagIds','Tags','split','forEach','push','FaxInteraction','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.FaxInteractionId'];(function(_0x1b6563,_0x3bf0f1){var _0xdea7b8=function(_0x49e6c6){while(--_0x49e6c6){_0x1b6563['push'](_0x1b6563['shift']());}};_0xdea7b8(++_0x3bf0f1);}(_0xf8b0,0x89));var _0x0f8b=function(_0x33ae4a,_0x357330){_0x33ae4a=_0x33ae4a-0x0;var _0x2a88b9=_0xf8b0[_0x33ae4a];return _0x2a88b9;};'use strict';var emlformat=require(_0x0f8b('0x0'));var rimraf=require(_0x0f8b('0x1'));var zipdir=require(_0x0f8b('0x2'));var jsonpatch=require(_0x0f8b('0x3'));var rp=require(_0x0f8b('0x4'));var moment=require(_0x0f8b('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x0f8b('0x6'));var util=require(_0x0f8b('0x7'));var path=require(_0x0f8b('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0f8b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0f8b('0xa'));var squel=require(_0x0f8b('0xb'));var crypto=require(_0x0f8b('0xc'));var jsforce=require(_0x0f8b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x0f8b('0xe'));var querystring=require(_0x0f8b('0xf'));var Papa=require(_0x0f8b('0x10'));var Redis=require(_0x0f8b('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x0f8b('0x12'));var hardwareService=require(_0x0f8b('0x13'));var logger=require('../../config/logger')(_0x0f8b('0x14'));var utils=require(_0x0f8b('0x15'));var config=require(_0x0f8b('0x16'));var licenseUtil=require(_0x0f8b('0x17'));var db=require('../../mysqldb')['db'];config[_0x0f8b('0x18')]=_[_0x0f8b('0x19')](config['redis'],{'host':_0x0f8b('0x1a'),'port':0x18eb});var socket=require(_0x0f8b('0x1b'))(new Redis(config[_0x0f8b('0x18')]));require('./faxInteraction.socket')['register'](socket);function respondWithStatusCode(_0x1d360a,_0xcdfad){_0xcdfad=_0xcdfad||0xcc;return function(_0xa611ea){if(_0xa611ea){return _0x1d360a[_0x0f8b('0x1c')](_0xcdfad);}return _0x1d360a[_0x0f8b('0x1d')](_0xcdfad)[_0x0f8b('0x1e')]();};}function respondWithResult(_0x109082,_0x3577de){_0x3577de=_0x3577de||0xc8;return function(_0x2ac814){if(_0x2ac814){return _0x109082[_0x0f8b('0x1d')](_0x3577de)[_0x0f8b('0x1f')](_0x2ac814);}};}function respondWithFilteredResult(_0x38a180,_0x26bb4e){return function(_0xab64e5){if(_0xab64e5){var _0x12f922=typeof _0x26bb4e[_0x0f8b('0x20')]===_0x0f8b('0x21')&&typeof _0x26bb4e[_0x0f8b('0x22')]==='undefined';var _0x4e8016=_0xab64e5['count'];var _0x36bc11=_0x12f922?0x0:_0x26bb4e[_0x0f8b('0x20')];var _0x256cb8=_0x12f922?_0xab64e5[_0x0f8b('0x23')]:_0x26bb4e[_0x0f8b('0x20')]+_0x26bb4e[_0x0f8b('0x22')];var _0x12d10a;if(_0x256cb8>=_0x4e8016){_0x256cb8=_0x4e8016;_0x12d10a=0xc8;}else{_0x12d10a=0xce;}_0x38a180[_0x0f8b('0x1d')](_0x12d10a);return _0x38a180[_0x0f8b('0x24')](_0x0f8b('0x25'),_0x36bc11+'-'+_0x256cb8+'/'+_0x4e8016)['json'](_0xab64e5);}return null;};}function patchUpdates(_0x2bfdbe){return function(_0xe2fa8e){try{jsonpatch['apply'](_0xe2fa8e,_0x2bfdbe,!![]);}catch(_0x1f2bf2){return BPromise[_0x0f8b('0x26')](_0x1f2bf2);}return _0xe2fa8e[_0x0f8b('0x27')]();};}function saveUpdates(_0x1a9f24,_0x3e3a16){return function(_0x4a41d1){if(_0x4a41d1){return _0x4a41d1[_0x0f8b('0x28')](_0x1a9f24)[_0x0f8b('0x29')](function(_0xc4f76b){return _0xc4f76b;});}return null;};}function removeEntity(_0x5eea08,_0x3eec20){return function(_0x539936){if(_0x539936){return _0x539936[_0x0f8b('0x2a')]()[_0x0f8b('0x29')](function(){_0x5eea08[_0x0f8b('0x1d')](0xcc)[_0x0f8b('0x1e')]();});}};}function handleEntityNotFound(_0x1b5755,_0x21095c){return function(_0x361867){if(!_0x361867){_0x1b5755[_0x0f8b('0x1c')](0x194);}return _0x361867;};}function handleError(_0x1c11ad,_0x3313ee){_0x3313ee=_0x3313ee||0x1f4;return function(_0x40efeb){logger[_0x0f8b('0x2b')](_0x40efeb[_0x0f8b('0x2c')]);if(_0x40efeb['name']){delete _0x40efeb[_0x0f8b('0x2d')];}_0x1c11ad[_0x0f8b('0x1d')](_0x3313ee)[_0x0f8b('0x2e')](_0x40efeb);};}function getInteractionUsers(_0x5406de,_0x53cb08){return new BPromise(function(_0x311308,_0x58afbb){try{if(_0x53cb08[_0x5406de['id']]){_0x5406de[_0x0f8b('0x2f')]=_[_0x0f8b('0x30')](_0x53cb08[_0x5406de['id']],function(_0x35975b){return{'id':_0x35975b['id'],'fullname':_0x35975b[_0x0f8b('0x31')]};});}}catch(_0x2cfe1d){_0x58afbb(_0x2cfe1d);}_0x311308(_0x5406de);});}function getInteractionTags(_0x371666,_0x5d1224){return new BPromise(function(_0x23fdce,_0x15a22c){try{if(_0x371666[_0x0f8b('0x32')]){_0x371666[_0x0f8b('0x33')]=[];_0x371666[_0x0f8b('0x32')][_0x0f8b('0x34')](',')[_0x0f8b('0x35')](function(_0x2f530f){_0x371666[_0x0f8b('0x33')][_0x0f8b('0x36')](_0x5d1224[_0x2f530f]);});}delete _0x371666[_0x0f8b('0x32')];}catch(_0x30856f){_0x15a22c(_0x30856f);}_0x23fdce(_0x371666);});}function updateFaxInteraction(_0x153147,_0x1e104d,_0x47ced6){return new BPromise(function(_0x320430,_0x3f10ed){return getInteractionUsers(_0x153147,_0x47ced6)[_0x0f8b('0x29')](function(_0x3224c3){return getInteractionTags(_0x3224c3,_0x1e104d);})[_0x0f8b('0x29')](function(_0x31eddb){_0x320430(_0x31eddb);})['catch'](function(_0x417eb2){_0x3f10ed(_0x417eb2);});});}exports['index']=function(_0x3d24d6,_0x3f12bb){var _0x42a10f={},_0x42a30a={},_0x3966c5={'count':0x0,'rows':[]};var _0x539f38=_[_0x0f8b('0x30')](db[_0x0f8b('0x37')][_0x0f8b('0x38')],function(_0x4aaf20){return{'name':_0x4aaf20['fieldName'],'type':_0x4aaf20['type'][_0x0f8b('0x39')]};});_0x42a30a[_0x0f8b('0x3a')]=_[_0x0f8b('0x30')](_0x539f38,_0x0f8b('0x2d'));_0x42a30a[_0x0f8b('0x3b')]=_[_0x0f8b('0x3c')](_0x3d24d6['query']);_0x42a30a[_0x0f8b('0x3d')]=_[_0x0f8b('0x3e')](_0x42a30a['model'],_0x42a30a[_0x0f8b('0x3b')]);_0x42a10f[_0x0f8b('0x3f')]=_[_0x0f8b('0x3e')](_0x42a30a[_0x0f8b('0x3a')],qs[_0x0f8b('0x40')](_0x3d24d6[_0x0f8b('0x3b')][_0x0f8b('0x40')]));_0x42a10f[_0x0f8b('0x3f')]=_0x42a10f[_0x0f8b('0x3f')]['length']?_0x42a10f['attributes']:_0x42a30a['model'];if(!_0x3d24d6['query']['hasOwnProperty'](_0x0f8b('0x41'))){_0x42a10f[_0x0f8b('0x22')]=qs[_0x0f8b('0x22')](_0x3d24d6[_0x0f8b('0x3b')][_0x0f8b('0x22')]);_0x42a10f[_0x0f8b('0x20')]=qs['offset'](_0x3d24d6['query'][_0x0f8b('0x20')]);}_0x42a10f[_0x0f8b('0x42')]=qs[_0x0f8b('0x43')](_0x3d24d6[_0x0f8b('0x3b')]['sort']);_0x42a10f[_0x0f8b('0x44')]=qs[_0x0f8b('0x3d')](_[_0x0f8b('0x45')](_0x3d24d6[_0x0f8b('0x3b')],_0x42a30a['filters']),_0x539f38);var _0x3ee226=[];var _0x108e8e=squel[_0x0f8b('0x46')]()[_0x0f8b('0x47')]('id')[_0x0f8b('0x47')]('name')[_0x0f8b('0x47')](_0x0f8b('0x48'))[_0x0f8b('0x49')](_0x0f8b('0x4a'));var _0x4536d3=squel[_0x0f8b('0x46')]()[_0x0f8b('0x47')](_0x0f8b('0x4b'))['field'](_0x0f8b('0x4c'))['field'](_0x0f8b('0x4d'))['from']('user_has_fax_interactions','ui')[_0x0f8b('0x4e')](_0x0f8b('0x4f'),'u',_0x0f8b('0x50'));var _0x1b67f1=squel['select']()[_0x0f8b('0x49')](_0x0f8b('0x51'),'i')['left_join'](_0x0f8b('0x52'),'c',_0x0f8b('0x53'))['left_join'](_0x0f8b('0x4f'),'o','o.id\x20=\x20i.UserId')['left_join'](_0x0f8b('0x54'),'a',_0x0f8b('0x55'))['left_join']('fax_messages','me',_0x0f8b('0x56'))['left_join'](_0x0f8b('0x57'),'it',_0x0f8b('0x58'))[_0x0f8b('0x4e')](_0x0f8b('0x4a'),'t','t.id\x20=\x20it.TagId');var _0x935c58=squel[_0x0f8b('0x59')]();var _0x22cadf=[];var _0xff74e5=squel['expr']();var _0x13d275;if(_0x3d24d6[_0x0f8b('0x3b')][_0x0f8b('0x5a')]){_0x13d275=as[_0x0f8b('0x5b')](_0x3d24d6[_0x0f8b('0x3b')][_0x0f8b('0x5a')]);var _0x22f9de=_0x13d275[_0x0f8b('0x5c')];for(var _0x5067da=0x0;_0x5067da<_0x13d275[_0x0f8b('0x5d')][_0x0f8b('0x5e')];_0x5067da++){var _0x6c05f8=_0x13d275['conditions'][_0x5067da];var _0x461d20='i';var _0x3ea10f=_[_0x0f8b('0x5f')](_0x539f38,[_0x0f8b('0x2d'),_0x6c05f8['field']]);if(!_0x3ea10f){switch(_0x6c05f8['field']){case _0x0f8b('0x60'):if(_0x6c05f8[_0x0f8b('0x61')]==0x1){_0x1b67f1[_0x0f8b('0x62')]('`'+_0x6c05f8[_0x0f8b('0x47')]+_0x0f8b('0x63'));}else{_0x1b67f1[_0x0f8b('0x62')]('`'+_0x6c05f8['field']+_0x0f8b('0x64'));}break;case _0x0f8b('0x65'):if(_0x6c05f8[_0x0f8b('0x66')]==='$substring'){if(_0x6c05f8[_0x0f8b('0x61')]['split']('\x20')[_0x0f8b('0x5e')]>0x1){_0x935c58[_0x22f9de](_0x0f8b('0x67'),qs[_0x0f8b('0x68')](_0x6c05f8[_0x0f8b('0x61')]),null);}else{var _0x32c365='%'+_0x6c05f8[_0x0f8b('0x61')]+'%';_0x935c58[_0x22f9de]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x32c365,_0x32c365,_0x32c365);}}else{_0x3ea10f=_[_0x0f8b('0x5f')](_0x539f38,['name','ContactId']);_0x6c05f8[_0x0f8b('0x47')]=_0x0f8b('0x69');_0x569161=as[_0x0f8b('0x6a')](_0x461d20,_0x3ea10f[_0x0f8b('0x6b')],_0x6c05f8);_0x935c58[_0x22f9de](_0x569161[_0x0f8b('0x6c')],_0x569161[_0x0f8b('0x61')]['start'],_0x569161['value'][_0x0f8b('0x1e')]);}break;case'Tag':var _0x3f79b8=_0x6c05f8[_0x0f8b('0x61')][_0x0f8b('0x34')](',')[_0x0f8b('0x30')](function(_0x272a79){return Number(_0x272a79);});_0x3f79b8[_0x0f8b('0x35')](function(_0x53f363){_0xff74e5['or'](_0x0f8b('0x6d'),'%,'+_0x53f363+',%');});_0x22cadf=_[_0x0f8b('0x6e')](_0x22cadf,_0x3f79b8);break;case _0x0f8b('0x6f'):if(_0x6c05f8['operator']===_0x0f8b('0x70')){_0x935c58[_0x22f9de](_0x0f8b('0x71'),'%'+_0x6c05f8[_0x0f8b('0x61')]+'%',null);}else{_0x3ea10f=_[_0x0f8b('0x5f')](_0x539f38,[_0x0f8b('0x2d'),'UserId']);_0x6c05f8['field']=_0x0f8b('0x72');_0x569161=as[_0x0f8b('0x6a')](_0x461d20,_0x3ea10f[_0x0f8b('0x6b')],_0x6c05f8);_0x935c58[_0x22f9de](_0x569161[_0x0f8b('0x6c')],_0x569161[_0x0f8b('0x61')][_0x0f8b('0x73')],_0x569161[_0x0f8b('0x61')][_0x0f8b('0x1e')]);}break;case'body':_0x569161=as[_0x0f8b('0x6a')]('me',null,_0x6c05f8);_0x935c58[_0x22f9de](_0x569161['text'],_0x569161[_0x0f8b('0x61')][_0x0f8b('0x73')],_0x569161[_0x0f8b('0x61')]['end']);break;}}else{var _0x569161=as[_0x0f8b('0x6a')](_0x461d20,_0x3ea10f[_0x0f8b('0x6b')],_0x6c05f8);_0x935c58[_0x22f9de](_0x569161[_0x0f8b('0x6c')],_0x569161['value'][_0x0f8b('0x73')],_0x569161['value'][_0x0f8b('0x1e')]);}}}else{var _0x221483=_(_0x3d24d6['query'])[_0x0f8b('0x3c')]()[_0x0f8b('0x30')](function(_0x53d2d4){return _[_0x0f8b('0x74')](_0x539f38,['name',_0x53d2d4])?_0x53d2d4:undefined;})[_0x0f8b('0x75')]()[_0x0f8b('0x61')]();if(!_['isEmpty'](_0x221483)){_0x221483[_0x0f8b('0x35')](function(_0x13a7dd){if(_0x13a7dd===_0x0f8b('0x76')){_0x1b67f1['where'](_0x0f8b('0x77'),[][_0x0f8b('0x78')](_0x3d24d6[_0x0f8b('0x3b')][_0x13a7dd]));}else if(_0x13a7dd===_0x0f8b('0x79')){var _0x5edd44=JSON['parse'](_0x3d24d6[_0x0f8b('0x3b')][_0x13a7dd])[_0x0f8b('0x7a')];var _0x33fc50=JSON[_0x0f8b('0x7b')](_0x3d24d6[_0x0f8b('0x3b')][_0x13a7dd])[_0x0f8b('0x7c')];_0x1b67f1[_0x0f8b('0x44')](_0x0f8b('0x7d'),_0x5edd44,_0x33fc50);}else{if(_0x3d24d6[_0x0f8b('0x3b')][_0x13a7dd]===_0x0f8b('0x7e')){_0x1b67f1[_0x0f8b('0x44')]('i.'+_0x13a7dd+_0x0f8b('0x7f'));}else{_0x1b67f1['where']('i.'+_0x13a7dd+_0x0f8b('0x80'),_0x3d24d6[_0x0f8b('0x3b')][_0x13a7dd]);}}});}if(_0x3d24d6[_0x0f8b('0x3b')][_0x0f8b('0x81')]){if(_0x3d24d6['query'][_0x0f8b('0x81')]==0x1){_0x1b67f1[_0x0f8b('0x62')](_0x0f8b('0x82'));}else{_0x1b67f1[_0x0f8b('0x62')](_0x0f8b('0x83'));}}if(_0x3d24d6[_0x0f8b('0x3b')]['tag']){_0x22cadf=_[_0x0f8b('0x84')](_0x3d24d6['query'][_0x0f8b('0x85')])?_0x3d24d6[_0x0f8b('0x3b')]['tag']:new Array(_0x3d24d6[_0x0f8b('0x3b')][_0x0f8b('0x85')]);_0x22cadf['forEach'](function(_0x585972){_0xff74e5['or'](_0x0f8b('0x6d'),'%,'+_0x585972+',%');});}if(_0x3d24d6[_0x0f8b('0x3b')][_0x0f8b('0x86')]){var _0x3fa817=_0x3d24d6[_0x0f8b('0x3b')][_0x0f8b('0x86')][_0x0f8b('0x87')]('\x5c','\x5c\x5c')[_0x0f8b('0x87')](/'/g,'\x27\x27');if(qs[_0x0f8b('0x88')](_0x3fa817)){_0x935c58['or']('i.id\x20LIKE\x20?',_0x3fa817+'%')['or']('i.fax\x20LIKE\x20?',_0x3fa817+'%');}_0x935c58['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x3fa817+'%');}}_0x1b67f1['where'](_0x935c58);_0x1b67f1[_0x0f8b('0x89')](_0x0f8b('0x8a'));var _0xfc02a2={'type':db[_0x0f8b('0x8b')][_0x0f8b('0x8c')][_0x0f8b('0x8d')],'raw':!![]};var _0x13ecbb=_0x1b67f1[_0x0f8b('0x8e')]();_0x13ecbb['field'](_0x0f8b('0x8a'));_0x13ecbb[_0x0f8b('0x47')](_0x0f8b('0x8f'),_0x0f8b('0x60'));if(_0x42a10f[_0x0f8b('0x42')]){_0x42a10f[_0x0f8b('0x42')][_0x0f8b('0x35')](function(_0x5431bb){var _0xa8bebc=_0x5431bb[0x0]===_0x0f8b('0x90')?_0x5431bb[0x0]:'i.'+_0x5431bb[0x0];_0x1b67f1[_0x0f8b('0x42')](_0xa8bebc,_0x5431bb[0x1]===_0x0f8b('0x91')?![]:!![]);});}if(!_['isEmpty'](_0x22cadf)){_0x1b67f1[_0x0f8b('0x62')](_0xff74e5);_0x13ecbb['where'](_0x0f8b('0x92'),_0x22cadf);}BPromise[_0x0f8b('0x93')]()['then'](function(){if(!_0x13d275){if(_0x3d24d6[_0x0f8b('0x3b')][_0x0f8b('0x76')])return;_0x13ecbb[_0x0f8b('0x44')]('i.FaxAccountId\x20IS\x20NOT\x20NULL');_0x1b67f1['where'](_0x0f8b('0x94'));return;}if(_0x3d24d6['user'][_0x0f8b('0x95')]!=='agent')return;return _0x3d24d6[_0x0f8b('0x96')][_0x0f8b('0x97')]({'attributes':['id'],'raw':!![]})[_0x0f8b('0x29')](function(_0x2ac5a6){if(_[_0x0f8b('0x98')](_0x2ac5a6)){_0x13ecbb[_0x0f8b('0x44')](_0x0f8b('0x99'));_0x1b67f1['where'](_0x0f8b('0x99'));}else{_0x13ecbb['where'](_0x0f8b('0x77'),_[_0x0f8b('0x30')](_0x2ac5a6,'id'));_0x1b67f1[_0x0f8b('0x44')](_0x0f8b('0x77'),_[_0x0f8b('0x30')](_0x2ac5a6,'id'));}});})[_0x0f8b('0x29')](function(){if(_0x3d24d6[_0x0f8b('0x96')][_0x0f8b('0x95')]==='agent'&&!_0x13d275&&!_0x3d24d6['query'][_0x0f8b('0x76')])return[];return db['sequelize'][_0x0f8b('0x3b')](_0x13ecbb[_0x0f8b('0x9a')](),_0xfc02a2);})[_0x0f8b('0x29')](function(_0x2a8074){_0x3966c5[_0x0f8b('0x23')]=_0x2a8074[_0x0f8b('0x5e')];if(_0x3966c5['count']===0x0)return[];return db['sequelize'][_0x0f8b('0x3b')](_0x108e8e[_0x0f8b('0x9a')](),_0xfc02a2)['then'](function(_0x348c88){_0x3ee226=_[_0x0f8b('0x9b')](_0x348c88,'id');_0xfc02a2=_['merge'](_0xfc02a2,{'model':db['FaxInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3d24d6['query']['fields']){_0x42a10f[_0x0f8b('0x3f')][_0x0f8b('0x35')](function(_0x3fc15e){_0x1b67f1[_0x0f8b('0x47')]('i.'+_0x3fc15e);});}else{_0x1b67f1[_0x0f8b('0x47')](_0x0f8b('0x8f'),_0x0f8b('0x60'));_0x1b67f1[_0x0f8b('0x47')](_0x0f8b('0x9c'),'Account.key');_0x1b67f1['field'](_0x0f8b('0x9d'),_0x0f8b('0x9e'));_0x1b67f1[_0x0f8b('0x47')](_0x0f8b('0x9f'),_0x0f8b('0x90'));_0x1b67f1[_0x0f8b('0x47')]('i.*');_0x1b67f1[_0x0f8b('0x47')](_0x0f8b('0xa0'),_0x0f8b('0xa1'));_0x1b67f1[_0x0f8b('0x47')](_0x0f8b('0xa2'),_0x0f8b('0xa3'));_0x1b67f1[_0x0f8b('0x47')](_0x0f8b('0xa4'),_0x0f8b('0xa5'));_0x1b67f1[_0x0f8b('0x47')](_0x0f8b('0xa6'),_0x0f8b('0xa7'));_0x1b67f1['field']('c.mobile',_0x0f8b('0xa8'));_0x1b67f1[_0x0f8b('0x47')](_0x0f8b('0xa9'),'Contact.fax');_0x1b67f1['field']('o.fullname',_0x0f8b('0xaa'));_0x1b67f1[_0x0f8b('0x47')](_0x0f8b('0xab'),'Owner.internal');_0x1b67f1[_0x0f8b('0x47')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x0f8b('0x32'));}if(_0x42a10f[_0x0f8b('0x22')])_0x1b67f1[_0x0f8b('0x22')](_0x42a10f[_0x0f8b('0x22')]);if(_0x42a10f['offset'])_0x1b67f1[_0x0f8b('0x20')](_0x42a10f[_0x0f8b('0x20')]);return db[_0x0f8b('0xac')][_0x0f8b('0x3b')](_0x1b67f1[_0x0f8b('0x9a')](),_0xfc02a2);})[_0x0f8b('0x29')](function(_0x2e6994){if(_0x2e6994['length']>0x0)_0x4536d3['where']('ui.FaxInteractionId\x20IN\x20?',_['map'](_0x2e6994,'id'));return db['sequelize']['query'](_0x4536d3[_0x0f8b('0x9a')](),_0xfc02a2)[_0x0f8b('0x29')](function(_0x6b220a){var _0x18e566=_[_0x0f8b('0xad')](_0x6b220a,_0x0f8b('0xae'));var _0x3ec3a9=[];_0x2e6994[_0x0f8b('0x35')](function(_0x42fdc4){_0x3ec3a9[_0x0f8b('0x36')](updateFaxInteraction(_0x42fdc4,_0x3ee226,_0x18e566));});return BPromise['all'](_0x3ec3a9);});});})[_0x0f8b('0x29')](function(_0x503d80){_0x3966c5[_0x0f8b('0xaf')]=_0x503d80;return _0x3966c5;})[_0x0f8b('0x29')](respondWithFilteredResult(_0x3f12bb,_0x42a10f))[_0x0f8b('0xb0')](handleError(_0x3f12bb,null));};exports[_0x0f8b('0xb1')]=function(_0x1345d0,_0x2a43f8){var _0x457dde={'raw':![],'where':{'id':_0x1345d0['params']['id']}},_0x4f0721={};_0x4f0721[_0x0f8b('0x3a')]=_[_0x0f8b('0x3c')](db[_0x0f8b('0x37')][_0x0f8b('0x38')]);_0x4f0721[_0x0f8b('0x3b')]=_[_0x0f8b('0x3c')](_0x1345d0[_0x0f8b('0x3b')]);_0x4f0721[_0x0f8b('0x3d')]=_[_0x0f8b('0x3e')](_0x4f0721[_0x0f8b('0x3a')],_0x4f0721[_0x0f8b('0x3b')]);_0x457dde['attributes']=_[_0x0f8b('0x3e')](_0x4f0721[_0x0f8b('0x3a')],qs[_0x0f8b('0x40')](_0x1345d0[_0x0f8b('0x3b')][_0x0f8b('0x40')]));_0x457dde[_0x0f8b('0x3f')]=_0x457dde[_0x0f8b('0x3f')]['length']?_0x457dde[_0x0f8b('0x3f')]:_0x4f0721[_0x0f8b('0x3a')];if(_0x1345d0['query'][_0x0f8b('0xb2')]){_0x457dde[_0x0f8b('0xb3')]=[{'all':!![]}];}_0x457dde=_[_0x0f8b('0xb4')]({},_0x457dde,_0x1345d0['options']);return db[_0x0f8b('0x37')][_0x0f8b('0x5f')](_0x457dde)[_0x0f8b('0x29')](handleEntityNotFound(_0x2a43f8,null))[_0x0f8b('0x29')](respondWithResult(_0x2a43f8,null))[_0x0f8b('0xb0')](handleError(_0x2a43f8,null));};exports['create']=function(_0x320449,_0x43b851){return db[_0x0f8b('0x37')][_0x0f8b('0xb5')](_0x320449[_0x0f8b('0xb6')],{})[_0x0f8b('0x29')](respondWithResult(_0x43b851,0xc9))[_0x0f8b('0xb0')](handleError(_0x43b851,null));};exports['update']=function(_0x5d8822,_0x53ca87){if(_0x5d8822[_0x0f8b('0xb6')]['id']){delete _0x5d8822[_0x0f8b('0xb6')]['id'];}return db[_0x0f8b('0x37')][_0x0f8b('0x5f')]({'where':{'id':_0x5d8822[_0x0f8b('0xb7')]['id']}})[_0x0f8b('0x29')](handleEntityNotFound(_0x53ca87,null))['then'](saveUpdates(_0x5d8822[_0x0f8b('0xb6')],null))['then'](respondWithResult(_0x53ca87,null))[_0x0f8b('0xb0')](handleError(_0x53ca87,null));};exports['destroy']=function(_0x2a1e63,_0xf5fb67){return db[_0x0f8b('0x37')]['find']({'where':{'id':_0x2a1e63['params']['id']}})[_0x0f8b('0x29')](handleEntityNotFound(_0xf5fb67,null))[_0x0f8b('0x29')](removeEntity(_0xf5fb67,null))[_0x0f8b('0xb0')](handleError(_0xf5fb67,null));};exports['describe']=function(_0x29434e,_0x37ae24){return db[_0x0f8b('0x37')][_0x0f8b('0xb8')]()['then'](respondWithResult(_0x37ae24,null))[_0x0f8b('0xb0')](handleError(_0x37ae24,null));};exports[_0x0f8b('0xb9')]=function(_0x5d9dcc,_0x37f3e1,_0xe0d6ad){return db[_0x0f8b('0xba')][_0x0f8b('0x5f')]({'where':{'id':_0x5d9dcc['params']['id']}})[_0x0f8b('0x29')](handleEntityNotFound(_0x37f3e1,null))[_0x0f8b('0x29')](function(_0x327341){if(_0x327341){return _0x327341[_0x0f8b('0xb9')](_0x5d9dcc[_0x0f8b('0xb6')][_0x0f8b('0xbb')],_[_0x0f8b('0xbc')](_0x5d9dcc[_0x0f8b('0xb6')],[_0x0f8b('0xbb'),'id'])||{});}})[_0x0f8b('0x29')](respondWithResult(_0x37f3e1,null))[_0x0f8b('0xb0')](handleError(_0x37f3e1,null));};exports['getMessages']=function(_0x3ba3a4,_0x5e7732,_0x112b70){var _0xd8de50={'raw':![],'where':{}};var _0x26b59b={};var _0xf1c270={'count':0x0,'rows':[]};return db[_0x0f8b('0x37')][_0x0f8b('0xbd')]({'where':{'id':_0x3ba3a4[_0x0f8b('0xb7')]['id']}})[_0x0f8b('0x29')](handleEntityNotFound(_0x5e7732,null))[_0x0f8b('0x29')](function(_0x20a666){if(_0x20a666){_0x26b59b[_0x0f8b('0x3a')]=_[_0x0f8b('0x3c')](db[_0x0f8b('0xba')][_0x0f8b('0x38')]);_0x26b59b['query']=_[_0x0f8b('0x3c')](_0x3ba3a4[_0x0f8b('0x3b')]);_0x26b59b[_0x0f8b('0x3d')]=_[_0x0f8b('0x3e')](_0x26b59b[_0x0f8b('0x3a')],_0x26b59b[_0x0f8b('0x3b')]);_0xd8de50['attributes']=_['intersection'](_0x26b59b['model'],qs[_0x0f8b('0x40')](_0x3ba3a4[_0x0f8b('0x3b')][_0x0f8b('0x40')]));_0xd8de50[_0x0f8b('0x3f')]=_0xd8de50['attributes'][_0x0f8b('0x5e')]?_0xd8de50[_0x0f8b('0x3f')]:_0x26b59b[_0x0f8b('0x3a')];if(!_0x3ba3a4[_0x0f8b('0x3b')][_0x0f8b('0xbe')](_0x0f8b('0x41'))){_0xd8de50[_0x0f8b('0x22')]=qs[_0x0f8b('0x22')](_0x3ba3a4[_0x0f8b('0x3b')]['limit']);_0xd8de50['offset']=qs['offset'](_0x3ba3a4['query'][_0x0f8b('0x20')]);}_0xd8de50[_0x0f8b('0x42')]=qs[_0x0f8b('0x43')](_0x3ba3a4[_0x0f8b('0x3b')][_0x0f8b('0x43')]);_0xd8de50[_0x0f8b('0x44')]=qs[_0x0f8b('0x3d')](_[_0x0f8b('0x45')](_0x3ba3a4[_0x0f8b('0x3b')],_0x26b59b[_0x0f8b('0x3d')]));_0xd8de50['where'][_0x0f8b('0xae')]=_0x20a666['id'];if(_0x3ba3a4[_0x0f8b('0x3b')][_0x0f8b('0x86')]){_0xd8de50[_0x0f8b('0x44')]=_[_0x0f8b('0xb4')](_0xd8de50[_0x0f8b('0x44')],{'$or':_[_0x0f8b('0x30')](_0xd8de50[_0x0f8b('0x3f')],function(_0x5b88e4){var _0x5b9743={};_0x5b9743[_0x5b88e4]={'$like':'%'+_0x3ba3a4[_0x0f8b('0x3b')]['filter']+'%'};return _0x5b9743;})});}if(_0x3ba3a4[_0x0f8b('0x3b')][_0x0f8b('0x7a')]){var _0x4722ba=_0x3ba3a4[_0x0f8b('0x3b')][_0x0f8b('0x7a')][_0x0f8b('0x34')](',');var _0x231903={};_0x231903[_0x4722ba[0x0]]={'$gte':moment(_0x4722ba[0x1])[_0x0f8b('0xbf')]('YYYY-MM-DD\x20HH:mm:ss')};_0xd8de50['where']=_[_0x0f8b('0xb4')](_0xd8de50[_0x0f8b('0x44')],_0x231903);}_0xd8de50=_['merge']({},_0xd8de50,_0x3ba3a4[_0x0f8b('0xc0')]);return db[_0x0f8b('0xba')][_0x0f8b('0x23')]({'where':_0xd8de50[_0x0f8b('0x44')]})[_0x0f8b('0x29')](function(_0x3cdbda){_0xf1c270['count']=_0x3cdbda;if(_0x3ba3a4[_0x0f8b('0x3b')][_0x0f8b('0xb2')]){_0xd8de50['include']=[{'all':!![]}];}return db[_0x0f8b('0xba')][_0x0f8b('0xc1')](_0xd8de50);})['then'](function(_0x58ffc7){_0xf1c270['rows']=_0x58ffc7;return _0xf1c270;});}})[_0x0f8b('0x29')](respondWithFilteredResult(_0x5e7732,_0xd8de50))['catch'](handleError(_0x5e7732,null));};exports[_0x0f8b('0xc2')]=function(_0x420504,_0x15e5fd,_0x402d5f){return db[_0x0f8b('0x37')][_0x0f8b('0x5f')]({'where':{'id':_0x420504[_0x0f8b('0xb7')]['id']}})[_0x0f8b('0x29')](handleEntityNotFound(_0x15e5fd,null))[_0x0f8b('0x29')](function(_0xe4e02f){if(_0xe4e02f){return _0xe4e02f[_0x0f8b('0xc3')](_0x420504['body'][_0x0f8b('0xbb')],_[_0x0f8b('0xbc')](_0x420504[_0x0f8b('0xb6')],['ids','id'])||{})[_0x0f8b('0xc4')](function(){return db['Tag'][_0x0f8b('0xc1')]({'attributes':['id',_0x0f8b('0x2d'),_0x0f8b('0x48')],'where':{'id':_0x420504[_0x0f8b('0xb6')][_0x0f8b('0xbb')]}});})['then'](function(_0x505da4){socket[_0x0f8b('0xc5')](_0x0f8b('0xc6'),{'id':Number(_0x420504[_0x0f8b('0xb7')]['id']),'tags':_0x505da4||[]});return{'id':Number(_0x420504[_0x0f8b('0xb7')]['id']),'tags':_0x505da4||[]};});}})['then'](respondWithResult(_0x15e5fd,null))[_0x0f8b('0xb0')](handleError(_0x15e5fd,null));};exports[_0x0f8b('0xc7')]=function(_0x23bf64,_0x1a6552,_0xb69710){return db[_0x0f8b('0x37')]['find']({'where':{'id':_0x23bf64[_0x0f8b('0xb7')]['id']}})[_0x0f8b('0x29')](handleEntityNotFound(_0x1a6552,null))[_0x0f8b('0x29')](function(_0x2baa27){if(_0x2baa27){return _0x2baa27[_0x0f8b('0xc7')](_0x23bf64[_0x0f8b('0x3b')]['ids']);}})[_0x0f8b('0x29')](respondWithStatusCode(_0x1a6552,null))[_0x0f8b('0xb0')](handleError(_0x1a6552,null));};exports[_0x0f8b('0xc8')]=function(_0x308fe5,_0x284f5f){var _0x619b5f=moment()[_0x0f8b('0xc9')]()['toString']();var _0xcb6c60=path[_0x0f8b('0xca')](config[_0x0f8b('0xcb')],_0x0f8b('0xcc'),_0x0f8b('0xcd'),_0x0f8b('0xce'));var _0x581a97=path[_0x0f8b('0xca')](config[_0x0f8b('0xcb')],_0x0f8b('0xcc'),_0x0f8b('0xcd'),_0x0f8b('0xcf'));var _0x29c727=path[_0x0f8b('0xca')](_0xcb6c60,_0x619b5f);var _0xbf5c07=util[_0x0f8b('0xbf')](_0x0f8b('0xd0'),_0x308fe5['params']['id'],_0x619b5f);var _0x11562f=path['join'](_0xcb6c60,_0xbf5c07);var _0x7cc08=[];_0x7cc08[_0x0f8b('0x36')]({'model':db['Attachment'],'as':'Attachment','raw':!![]});var _0x4b5c8f=[{'model':db[_0x0f8b('0xba')],'as':_0x0f8b('0xd1'),'attributes':['id',_0x0f8b('0xb6'),'createdAt'],'include':_0x7cc08}];return db['FaxInteraction'][_0x0f8b('0x5f')]({'where':{'id':_0x308fe5['params']['id']},'include':_0x4b5c8f})[_0x0f8b('0x29')](handleEntityNotFound(_0x284f5f,null))[_0x0f8b('0x29')](function(_0x3a3fb0){if(_0x3a3fb0&&_0x3a3fb0[_0x0f8b('0xd1')]){var _0x27cc00=_0x3a3fb0[_0x0f8b('0xd2')]({'plain':!![]});fs['mkdirSync'](_0x29c727);for(var _0xb92dc0=0x0;_0xb92dc0<_0x27cc00[_0x0f8b('0xd1')]['length'];_0xb92dc0++){var _0x4e149a=_0x27cc00[_0x0f8b('0xd1')][_0xb92dc0][_0x0f8b('0xd3')];if(_0x4e149a){var _0x5d2df9=path[_0x0f8b('0xca')](_0x581a97,_0x4e149a[_0x0f8b('0xd4')]);if(fs[_0x0f8b('0xd5')](_0x5d2df9)){fs['createReadStream'](_0x5d2df9)['pipe'](fs[_0x0f8b('0xd6')](path[_0x0f8b('0xca')](_0x29c727,_0x4e149a[_0x0f8b('0xd4')])));}}}return BPromise[_0x0f8b('0x93')]()[_0x0f8b('0x29')](function(){return new BPromise(function(_0x3f9fc2,_0x1f5a4b){zipdir(_0x29c727,{'saveTo':_0x11562f},function(_0x54177d,_0x5978f0){if(_0x54177d)return _0x1f5a4b(_0x54177d);return _0x3f9fc2(_0x5978f0);});})[_0x0f8b('0x29')](function(){return new BPromise(function(_0x1cc0ae,_0x69d5d8){rimraf(_0x29c727,function(_0x9968c8){if(_0x9968c8)_0x69d5d8(_0x9968c8);return _0x1cc0ae();});});})[_0x0f8b('0x29')](function(){return _0x284f5f[_0x0f8b('0xc8')](_0x11562f,_0xbf5c07,function(_0x32874c){if(_0x32874c){console['log']('err',_0x32874c);}else{fs['unlinkSync'](_0x11562f);}});});});}else{return _0x284f5f[_0x0f8b('0x1c')](0xc8);}})['catch'](handleError(_0x284f5f,null));};
\ No newline at end of file
+var _0xbbaf=['error','stack','name','send','map','fullname','Tags','TagIds','split','push','catch','index','FaxInteraction','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','field','color','tools_tags','select','u.id','u.fullname','ui.FaxInteractionId','user_has_fax_interactions','users','u.id\x20=\x20ui.UserId','from','left_join','cm_contacts','o.id\x20=\x20i.UserId','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','find','unreadMessages','value','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)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','type','text','start','Tag','forEach','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','buildExpression','some','compact','isEmpty','FaxAccountId','concat','createdAt','$gte','parse','$lte','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','group','Sequelize','QueryTypes','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','agent','user','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','i.FaxAccountId\x20IN\x20?','sequelize','toString','keyBy','a.key','Account.key','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','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','groupBy','rows','show','params','includeAll','include','merge','create','body','update','describe','FaxMessage','addMessage','omit','ids','getMessages','findOne','format','YYYY-MM-DD\x20HH:mm:ss','options','findAll','addTags','emit','faxInteractionTags:save','removeTags','download','unix','join','server','files','tmp','root','attachments','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','existsSync','createReadStream','pipe','createWriteStream','basename','err','unlinkSync','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','apply','reject','then','destroy'];(function(_0xc87d08,_0x59c9be){var _0x30a714=function(_0x437c0d){while(--_0x437c0d){_0xc87d08['push'](_0xc87d08['shift']());}};_0x30a714(++_0x59c9be);}(_0xbbaf,0x195));var _0xfbba=function(_0x304022,_0x21b705){_0x304022=_0x304022-0x0;var _0x4d81cf=_0xbbaf[_0x304022];return _0x4d81cf;};'use strict';var emlformat=require(_0xfbba('0x0'));var rimraf=require(_0xfbba('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfbba('0x2'));var rp=require(_0xfbba('0x3'));var moment=require(_0xfbba('0x4'));var BPromise=require(_0xfbba('0x5'));var Mustache=require(_0xfbba('0x6'));var util=require(_0xfbba('0x7'));var path=require(_0xfbba('0x8'));var sox=require(_0xfbba('0x9'));var csv=require(_0xfbba('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfbba('0xb'));var _=require('lodash');var squel=require(_0xfbba('0xc'));var crypto=require('crypto');var jsforce=require(_0xfbba('0xd'));var deskjs=require(_0xfbba('0xe'));var toCsv=require(_0xfbba('0xa'));var querystring=require('querystring');var Papa=require(_0xfbba('0xf'));var Redis=require(_0xfbba('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xfbba('0x11'));var as=require(_0xfbba('0x12'));var hardwareService=require(_0xfbba('0x13'));var logger=require(_0xfbba('0x14'))('api');var utils=require(_0xfbba('0x15'));var config=require(_0xfbba('0x16'));var licenseUtil=require(_0xfbba('0x17'));var db=require(_0xfbba('0x18'))['db'];config['redis']=_['defaults'](config[_0xfbba('0x19')],{'host':_0xfbba('0x1a'),'port':0x18eb});var socket=require(_0xfbba('0x1b'))(new Redis(config[_0xfbba('0x19')]));require(_0xfbba('0x1c'))[_0xfbba('0x1d')](socket);function respondWithStatusCode(_0x1247d5,_0x3bfadb){_0x3bfadb=_0x3bfadb||0xcc;return function(_0x2e6d07){if(_0x2e6d07){return _0x1247d5[_0xfbba('0x1e')](_0x3bfadb);}return _0x1247d5[_0xfbba('0x1f')](_0x3bfadb)[_0xfbba('0x20')]();};}function respondWithResult(_0x2bae2a,_0x141ed1){_0x141ed1=_0x141ed1||0xc8;return function(_0x10a833){if(_0x10a833){return _0x2bae2a[_0xfbba('0x1f')](_0x141ed1)['json'](_0x10a833);}};}function respondWithFilteredResult(_0x279511,_0x23e929){return function(_0x4ab958){if(_0x4ab958){var _0x4be89c=typeof _0x23e929[_0xfbba('0x21')]===_0xfbba('0x22')&&typeof _0x23e929['limit']===_0xfbba('0x22');var _0x266360=_0x4ab958[_0xfbba('0x23')];var _0xa47944=_0x4be89c?0x0:_0x23e929[_0xfbba('0x21')];var _0x447a1f=_0x4be89c?_0x4ab958[_0xfbba('0x23')]:_0x23e929[_0xfbba('0x21')]+_0x23e929['limit'];var _0x3dfd84;if(_0x447a1f>=_0x266360){_0x447a1f=_0x266360;_0x3dfd84=0xc8;}else{_0x3dfd84=0xce;}_0x279511['status'](_0x3dfd84);return _0x279511[_0xfbba('0x24')](_0xfbba('0x25'),_0xa47944+'-'+_0x447a1f+'/'+_0x266360)[_0xfbba('0x26')](_0x4ab958);}return null;};}function patchUpdates(_0x4a74b1){return function(_0xe2c222){try{jsonpatch[_0xfbba('0x27')](_0xe2c222,_0x4a74b1,!![]);}catch(_0x571b9d){return BPromise[_0xfbba('0x28')](_0x571b9d);}return _0xe2c222['save']();};}function saveUpdates(_0x348508,_0x4058df){return function(_0x5cfcb5){if(_0x5cfcb5){return _0x5cfcb5['update'](_0x348508)[_0xfbba('0x29')](function(_0x1f2253){return _0x1f2253;});}return null;};}function removeEntity(_0x387c4c,_0x1286be){return function(_0x49a9c5){if(_0x49a9c5){return _0x49a9c5[_0xfbba('0x2a')]()[_0xfbba('0x29')](function(){_0x387c4c[_0xfbba('0x1f')](0xcc)[_0xfbba('0x20')]();});}};}function handleEntityNotFound(_0x5c12a1,_0x4d9f66){return function(_0x5a17d5){if(!_0x5a17d5){_0x5c12a1['sendStatus'](0x194);}return _0x5a17d5;};}function handleError(_0x5e77f1,_0x32803a){_0x32803a=_0x32803a||0x1f4;return function(_0x59ffb2){logger[_0xfbba('0x2b')](_0x59ffb2[_0xfbba('0x2c')]);if(_0x59ffb2[_0xfbba('0x2d')]){delete _0x59ffb2['name'];}_0x5e77f1['status'](_0x32803a)[_0xfbba('0x2e')](_0x59ffb2);};}function getInteractionUsers(_0x30e7ce,_0x2b03a1){return new BPromise(function(_0x118089,_0x46e52b){try{if(_0x2b03a1[_0x30e7ce['id']]){_0x30e7ce['Users']=_[_0xfbba('0x2f')](_0x2b03a1[_0x30e7ce['id']],function(_0x525ec7){return{'id':_0x525ec7['id'],'fullname':_0x525ec7[_0xfbba('0x30')]};});}}catch(_0x38afe8){_0x46e52b(_0x38afe8);}_0x118089(_0x30e7ce);});}function getInteractionTags(_0x1cb39d,_0x12b477){return new BPromise(function(_0x219e46,_0x4a8252){try{if(_0x1cb39d['TagIds']){_0x1cb39d[_0xfbba('0x31')]=[];_0x1cb39d[_0xfbba('0x32')][_0xfbba('0x33')](',')['forEach'](function(_0x44b0ce){_0x1cb39d[_0xfbba('0x31')][_0xfbba('0x34')](_0x12b477[_0x44b0ce]);});}delete _0x1cb39d[_0xfbba('0x32')];}catch(_0x4f7919){_0x4a8252(_0x4f7919);}_0x219e46(_0x1cb39d);});}function updateFaxInteraction(_0x4b5bc4,_0x31298c,_0x54e32f){return new BPromise(function(_0x5d5df3,_0x44b9e5){return getInteractionUsers(_0x4b5bc4,_0x54e32f)['then'](function(_0x47a093){return getInteractionTags(_0x47a093,_0x31298c);})[_0xfbba('0x29')](function(_0x54c918){_0x5d5df3(_0x54c918);})[_0xfbba('0x35')](function(_0xc35ef0){_0x44b9e5(_0xc35ef0);});});}exports[_0xfbba('0x36')]=function(_0x1b3aa9,_0x26538d){var _0x3635b2={},_0x599150={},_0x39024e={'count':0x0,'rows':[]};var _0x105160=_['map'](db[_0xfbba('0x37')][_0xfbba('0x38')],function(_0x5c8b33){return{'name':_0x5c8b33[_0xfbba('0x39')],'type':_0x5c8b33['type']['key']};});_0x599150[_0xfbba('0x3a')]=_[_0xfbba('0x2f')](_0x105160,'name');_0x599150[_0xfbba('0x3b')]=_[_0xfbba('0x3c')](_0x1b3aa9[_0xfbba('0x3b')]);_0x599150[_0xfbba('0x3d')]=_[_0xfbba('0x3e')](_0x599150[_0xfbba('0x3a')],_0x599150[_0xfbba('0x3b')]);_0x3635b2[_0xfbba('0x3f')]=_[_0xfbba('0x3e')](_0x599150[_0xfbba('0x3a')],qs[_0xfbba('0x40')](_0x1b3aa9[_0xfbba('0x3b')]['fields']));_0x3635b2[_0xfbba('0x3f')]=_0x3635b2[_0xfbba('0x3f')][_0xfbba('0x41')]?_0x3635b2[_0xfbba('0x3f')]:_0x599150[_0xfbba('0x3a')];if(!_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x42')](_0xfbba('0x43'))){_0x3635b2[_0xfbba('0x44')]=qs[_0xfbba('0x44')](_0x1b3aa9[_0xfbba('0x3b')]['limit']);_0x3635b2['offset']=qs[_0xfbba('0x21')](_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x21')]);}_0x3635b2[_0xfbba('0x45')]=qs[_0xfbba('0x46')](_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x46')]);_0x3635b2[_0xfbba('0x47')]=qs[_0xfbba('0x3d')](_[_0xfbba('0x48')](_0x1b3aa9[_0xfbba('0x3b')],_0x599150[_0xfbba('0x3d')]),_0x105160);var _0x186980=[];var _0x13ae1f=squel['select']()['field']('id')[_0xfbba('0x49')](_0xfbba('0x2d'))['field'](_0xfbba('0x4a'))['from'](_0xfbba('0x4b'));var _0x5433ba=squel[_0xfbba('0x4c')]()['field'](_0xfbba('0x4d'))['field'](_0xfbba('0x4e'))['field'](_0xfbba('0x4f'))['from'](_0xfbba('0x50'),'ui')['left_join'](_0xfbba('0x51'),'u',_0xfbba('0x52'));var _0x3cc2f6=squel[_0xfbba('0x4c')]()[_0xfbba('0x53')]('fax_interactions','i')[_0xfbba('0x54')](_0xfbba('0x55'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join'](_0xfbba('0x51'),'o',_0xfbba('0x56'))[_0xfbba('0x54')](_0xfbba('0x57'),'a',_0xfbba('0x58'))[_0xfbba('0x54')](_0xfbba('0x59'),'me',_0xfbba('0x5a'))['left_join'](_0xfbba('0x5b'),'it','it.FaxInteractionId\x20=\x20i.id')['left_join']('tools_tags','t',_0xfbba('0x5c'));var _0x3abc51=squel[_0xfbba('0x5d')]();var _0x418e5a=[];var _0x2eeaa5=squel[_0xfbba('0x5d')]();var _0x2501db;if(_0x1b3aa9[_0xfbba('0x3b')]['search']){_0x2501db=as[_0xfbba('0x5e')](_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x5f')]);var _0x4d1b7c=_0x2501db[_0xfbba('0x60')];for(var _0x6e74af=0x0;_0x6e74af<_0x2501db['conditions'][_0xfbba('0x41')];_0x6e74af++){var _0x5ed70e=_0x2501db[_0xfbba('0x61')][_0x6e74af];var _0xb3df33='i';var _0x742372=_[_0xfbba('0x62')](_0x105160,[_0xfbba('0x2d'),_0x5ed70e[_0xfbba('0x49')]]);if(!_0x742372){switch(_0x5ed70e['field']){case _0xfbba('0x63'):if(_0x5ed70e[_0xfbba('0x64')]==0x1){_0x3cc2f6[_0xfbba('0x65')]('`'+_0x5ed70e[_0xfbba('0x49')]+_0xfbba('0x66'));}else{_0x3cc2f6[_0xfbba('0x65')]('`'+_0x5ed70e[_0xfbba('0x49')]+_0xfbba('0x67'));}break;case _0xfbba('0x68'):if(_0x5ed70e['operator']===_0xfbba('0x69')){if(_0x5ed70e['value'][_0xfbba('0x33')]('\x20')[_0xfbba('0x41')]>0x1){_0x3abc51[_0x4d1b7c](_0xfbba('0x6a'),qs[_0xfbba('0x6b')](_0x5ed70e[_0xfbba('0x64')]),null);}else{var _0x248567='%'+_0x5ed70e[_0xfbba('0x64')]+'%';_0x3abc51[_0x4d1b7c](_0xfbba('0x6c'),_0x248567,_0x248567,_0x248567);}}else{_0x742372=_[_0xfbba('0x62')](_0x105160,['name',_0xfbba('0x6d')]);_0x5ed70e[_0xfbba('0x49')]='ContactId';_0x5eeab2=as['buildExpression'](_0xb3df33,_0x742372[_0xfbba('0x6e')],_0x5ed70e);_0x3abc51[_0x4d1b7c](_0x5eeab2[_0xfbba('0x6f')],_0x5eeab2[_0xfbba('0x64')][_0xfbba('0x70')],_0x5eeab2[_0xfbba('0x64')][_0xfbba('0x20')]);}break;case _0xfbba('0x71'):var _0x5a8465=_0x5ed70e['value'][_0xfbba('0x33')](',')[_0xfbba('0x2f')](function(_0x2db1fc){return Number(_0x2db1fc);});_0x5a8465[_0xfbba('0x72')](function(_0x2648b0){_0x2eeaa5['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2648b0+',%');});_0x418e5a=_[_0xfbba('0x73')](_0x418e5a,_0x5a8465);break;case _0xfbba('0x74'):if(_0x5ed70e[_0xfbba('0x75')]===_0xfbba('0x69')){_0x3abc51[_0x4d1b7c](_0xfbba('0x76'),'%'+_0x5ed70e[_0xfbba('0x64')]+'%',null);}else{_0x742372=_['find'](_0x105160,[_0xfbba('0x2d'),'UserId']);_0x5ed70e['field']='UserId';_0x5eeab2=as[_0xfbba('0x77')](_0xb3df33,_0x742372[_0xfbba('0x6e')],_0x5ed70e);_0x3abc51[_0x4d1b7c](_0x5eeab2['text'],_0x5eeab2['value'][_0xfbba('0x70')],_0x5eeab2['value'][_0xfbba('0x20')]);}break;case'body':_0x5eeab2=as['buildExpression']('me',null,_0x5ed70e);_0x3abc51[_0x4d1b7c](_0x5eeab2[_0xfbba('0x6f')],_0x5eeab2['value'][_0xfbba('0x70')],_0x5eeab2[_0xfbba('0x64')][_0xfbba('0x20')]);break;}}else{var _0x5eeab2=as['buildExpression'](_0xb3df33,_0x742372[_0xfbba('0x6e')],_0x5ed70e);_0x3abc51[_0x4d1b7c](_0x5eeab2['text'],_0x5eeab2['value']['start'],_0x5eeab2[_0xfbba('0x64')][_0xfbba('0x20')]);}}}else{var _0x5dfb47=_(_0x1b3aa9[_0xfbba('0x3b')])[_0xfbba('0x3c')]()[_0xfbba('0x2f')](function(_0x23d59d){return _[_0xfbba('0x78')](_0x105160,['name',_0x23d59d])?_0x23d59d:undefined;})[_0xfbba('0x79')]()[_0xfbba('0x64')]();if(!_[_0xfbba('0x7a')](_0x5dfb47)){_0x5dfb47[_0xfbba('0x72')](function(_0x2026f6){if(_0x2026f6===_0xfbba('0x7b')){_0x3cc2f6[_0xfbba('0x47')]('i.FaxAccountId\x20IN\x20?',[][_0xfbba('0x7c')](_0x1b3aa9[_0xfbba('0x3b')][_0x2026f6]));}else if(_0x2026f6===_0xfbba('0x7d')){var _0x208997=JSON['parse'](_0x1b3aa9['query'][_0x2026f6])[_0xfbba('0x7e')];var _0x57e207=JSON[_0xfbba('0x7f')](_0x1b3aa9[_0xfbba('0x3b')][_0x2026f6])[_0xfbba('0x80')];_0x3cc2f6[_0xfbba('0x47')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x208997,_0x57e207);}else{if(_0x1b3aa9[_0xfbba('0x3b')][_0x2026f6]===_0xfbba('0x81')){_0x3cc2f6[_0xfbba('0x47')]('i.'+_0x2026f6+_0xfbba('0x82'));}else{_0x3cc2f6[_0xfbba('0x47')]('i.'+_0x2026f6+_0xfbba('0x83'),_0x1b3aa9[_0xfbba('0x3b')][_0x2026f6]);}}});}if(_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x84')]){if(_0x1b3aa9[_0xfbba('0x3b')]['read']==0x1){_0x3cc2f6[_0xfbba('0x65')](_0xfbba('0x85'));}else{_0x3cc2f6[_0xfbba('0x65')](_0xfbba('0x86'));}}if(_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x87')]){_0x418e5a=_[_0xfbba('0x88')](_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x87')])?_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x87')]:new Array(_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x87')]);_0x418e5a[_0xfbba('0x72')](function(_0x5cc4da){_0x2eeaa5['or'](_0xfbba('0x89'),'%,'+_0x5cc4da+',%');});}if(_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x8a')]){var _0x294fee=_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x8a')][_0xfbba('0x8b')]('\x5c','\x5c\x5c')[_0xfbba('0x8b')](/'/g,'\x27\x27');if(qs[_0xfbba('0x8c')](_0x294fee)){_0x3abc51['or'](_0xfbba('0x8d'),_0x294fee+'%')['or']('i.fax\x20LIKE\x20?',_0x294fee+'%');}_0x3abc51['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x294fee+'%');}}_0x3cc2f6[_0xfbba('0x47')](_0x3abc51);_0x3cc2f6[_0xfbba('0x8e')]('i.id');var _0x4c74c0={'type':db[_0xfbba('0x8f')][_0xfbba('0x90')]['SELECT'],'raw':!![]};var _0x19c8bd=_0x3cc2f6[_0xfbba('0x91')]();_0x19c8bd[_0xfbba('0x49')](_0xfbba('0x92'));_0x19c8bd[_0xfbba('0x49')](_0xfbba('0x93'),'unreadMessages');if(_0x3635b2[_0xfbba('0x45')]){_0x3635b2[_0xfbba('0x45')][_0xfbba('0x72')](function(_0x601e62){var _0x37ea25=_0x601e62[0x0]===_0xfbba('0x94')?_0x601e62[0x0]:'i.'+_0x601e62[0x0];_0x3cc2f6[_0xfbba('0x45')](_0x37ea25,_0x601e62[0x1]===_0xfbba('0x95')?![]:!![]);});}if(!_[_0xfbba('0x7a')](_0x418e5a)){_0x3cc2f6[_0xfbba('0x65')](_0x2eeaa5);_0x19c8bd['where'](_0xfbba('0x96'),_0x418e5a);}BPromise[_0xfbba('0x97')]()[_0xfbba('0x29')](function(){if(!_0x2501db){if(_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x7b')])return;_0x19c8bd['where'](_0xfbba('0x98'));_0x3cc2f6['where']('i.FaxAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x1b3aa9['user']['role']!==_0xfbba('0x99'))return;return _0x1b3aa9[_0xfbba('0x9a')][_0xfbba('0x9b')]({'attributes':['id'],'raw':!![]})['then'](function(_0xec44c8){if(_['isEmpty'](_0xec44c8)){_0x19c8bd[_0xfbba('0x47')]('i.FaxAccountId\x20IS\x20NULL');_0x3cc2f6['where'](_0xfbba('0x9c'));}else{_0x19c8bd['where'](_0xfbba('0x9d'),_[_0xfbba('0x2f')](_0xec44c8,'id'));_0x3cc2f6[_0xfbba('0x47')]('i.FaxAccountId\x20IN\x20?',_['map'](_0xec44c8,'id'));}});})[_0xfbba('0x29')](function(){if(_0x1b3aa9['user']['role']===_0xfbba('0x99')&&!_0x2501db&&!_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x7b')])return[];return db[_0xfbba('0x9e')][_0xfbba('0x3b')](_0x19c8bd[_0xfbba('0x9f')](),_0x4c74c0);})[_0xfbba('0x29')](function(_0x5c7f94){_0x39024e[_0xfbba('0x23')]=_0x5c7f94[_0xfbba('0x41')];if(_0x39024e['count']===0x0)return[];return db['sequelize'][_0xfbba('0x3b')](_0x13ae1f[_0xfbba('0x9f')](),_0x4c74c0)[_0xfbba('0x29')](function(_0x4b65e3){_0x186980=_[_0xfbba('0xa0')](_0x4b65e3,'id');_0x4c74c0=_['merge'](_0x4c74c0,{'model':db[_0xfbba('0x37')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x40')]){_0x3635b2[_0xfbba('0x3f')][_0xfbba('0x72')](function(_0x100bbe){_0x3cc2f6[_0xfbba('0x49')]('i.'+_0x100bbe);});}else{_0x3cc2f6[_0xfbba('0x49')](_0xfbba('0x93'),_0xfbba('0x63'));_0x3cc2f6['field'](_0xfbba('0xa1'),_0xfbba('0xa2'));_0x3cc2f6[_0xfbba('0x49')]('a.mandatoryDisposition',_0xfbba('0xa3'));_0x3cc2f6['field'](_0xfbba('0xa4'),_0xfbba('0x94'));_0x3cc2f6['field']('i.*');_0x3cc2f6[_0xfbba('0x49')](_0xfbba('0xa5'),_0xfbba('0xa6'));_0x3cc2f6['field'](_0xfbba('0xa7'),_0xfbba('0xa8'));_0x3cc2f6[_0xfbba('0x49')]('c.email','Contact.email');_0x3cc2f6[_0xfbba('0x49')](_0xfbba('0xa9'),_0xfbba('0xaa'));_0x3cc2f6['field'](_0xfbba('0xab'),_0xfbba('0xac'));_0x3cc2f6[_0xfbba('0x49')](_0xfbba('0xad'),'Contact.fax');_0x3cc2f6[_0xfbba('0x49')](_0xfbba('0xae'),'Owner.fullname');_0x3cc2f6[_0xfbba('0x49')](_0xfbba('0xaf'),_0xfbba('0xb0'));_0x3cc2f6[_0xfbba('0x49')](_0xfbba('0xb1'),_0xfbba('0x32'));}if(_0x3635b2[_0xfbba('0x44')])_0x3cc2f6['limit'](_0x3635b2['limit']);if(_0x3635b2[_0xfbba('0x21')])_0x3cc2f6[_0xfbba('0x21')](_0x3635b2[_0xfbba('0x21')]);return db[_0xfbba('0x9e')][_0xfbba('0x3b')](_0x3cc2f6['toString'](),_0x4c74c0);})[_0xfbba('0x29')](function(_0xa4219a){if(_0xa4219a[_0xfbba('0x41')]>0x0)_0x5433ba[_0xfbba('0x47')](_0xfbba('0xb2'),_['map'](_0xa4219a,'id'));return db[_0xfbba('0x9e')][_0xfbba('0x3b')](_0x5433ba[_0xfbba('0x9f')](),_0x4c74c0)[_0xfbba('0x29')](function(_0x5f0b3f){var _0x3fda27=_[_0xfbba('0xb3')](_0x5f0b3f,'FaxInteractionId');var _0x4402f8=[];_0xa4219a[_0xfbba('0x72')](function(_0x27fa03){_0x4402f8[_0xfbba('0x34')](updateFaxInteraction(_0x27fa03,_0x186980,_0x3fda27));});return BPromise['all'](_0x4402f8);});});})[_0xfbba('0x29')](function(_0x2cab0b){_0x39024e[_0xfbba('0xb4')]=_0x2cab0b;return _0x39024e;})[_0xfbba('0x29')](respondWithFilteredResult(_0x26538d,_0x3635b2))[_0xfbba('0x35')](handleError(_0x26538d,null));};exports[_0xfbba('0xb5')]=function(_0x54eb90,_0xc7ea06){var _0x1de7db={'raw':![],'where':{'id':_0x54eb90[_0xfbba('0xb6')]['id']}},_0x356c48={};_0x356c48[_0xfbba('0x3a')]=_['keys'](db[_0xfbba('0x37')][_0xfbba('0x38')]);_0x356c48[_0xfbba('0x3b')]=_[_0xfbba('0x3c')](_0x54eb90[_0xfbba('0x3b')]);_0x356c48[_0xfbba('0x3d')]=_[_0xfbba('0x3e')](_0x356c48[_0xfbba('0x3a')],_0x356c48[_0xfbba('0x3b')]);_0x1de7db[_0xfbba('0x3f')]=_[_0xfbba('0x3e')](_0x356c48[_0xfbba('0x3a')],qs[_0xfbba('0x40')](_0x54eb90[_0xfbba('0x3b')][_0xfbba('0x40')]));_0x1de7db[_0xfbba('0x3f')]=_0x1de7db[_0xfbba('0x3f')][_0xfbba('0x41')]?_0x1de7db[_0xfbba('0x3f')]:_0x356c48[_0xfbba('0x3a')];if(_0x54eb90[_0xfbba('0x3b')][_0xfbba('0xb7')]){_0x1de7db[_0xfbba('0xb8')]=[{'all':!![]}];}_0x1de7db=_[_0xfbba('0xb9')]({},_0x1de7db,_0x54eb90['options']);return db[_0xfbba('0x37')]['find'](_0x1de7db)[_0xfbba('0x29')](handleEntityNotFound(_0xc7ea06,null))[_0xfbba('0x29')](respondWithResult(_0xc7ea06,null))[_0xfbba('0x35')](handleError(_0xc7ea06,null));};exports[_0xfbba('0xba')]=function(_0x499150,_0x19d1fd){return db[_0xfbba('0x37')][_0xfbba('0xba')](_0x499150[_0xfbba('0xbb')],{})[_0xfbba('0x29')](respondWithResult(_0x19d1fd,0xc9))[_0xfbba('0x35')](handleError(_0x19d1fd,null));};exports[_0xfbba('0xbc')]=function(_0x39e737,_0x58980e){if(_0x39e737['body']['id']){delete _0x39e737['body']['id'];}return db[_0xfbba('0x37')][_0xfbba('0x62')]({'where':{'id':_0x39e737[_0xfbba('0xb6')]['id']}})[_0xfbba('0x29')](handleEntityNotFound(_0x58980e,null))[_0xfbba('0x29')](saveUpdates(_0x39e737[_0xfbba('0xbb')],null))[_0xfbba('0x29')](respondWithResult(_0x58980e,null))[_0xfbba('0x35')](handleError(_0x58980e,null));};exports[_0xfbba('0x2a')]=function(_0x870931,_0x3a66e7){return db[_0xfbba('0x37')]['find']({'where':{'id':_0x870931[_0xfbba('0xb6')]['id']}})[_0xfbba('0x29')](handleEntityNotFound(_0x3a66e7,null))[_0xfbba('0x29')](removeEntity(_0x3a66e7,null))[_0xfbba('0x35')](handleError(_0x3a66e7,null));};exports[_0xfbba('0xbd')]=function(_0x1886e3,_0x58077f){return db[_0xfbba('0x37')][_0xfbba('0xbd')]()[_0xfbba('0x29')](respondWithResult(_0x58077f,null))[_0xfbba('0x35')](handleError(_0x58077f,null));};exports['addMessage']=function(_0xebc825,_0x106231,_0x38faab){return db[_0xfbba('0xbe')][_0xfbba('0x62')]({'where':{'id':_0xebc825[_0xfbba('0xb6')]['id']}})[_0xfbba('0x29')](handleEntityNotFound(_0x106231,null))[_0xfbba('0x29')](function(_0x13a6a0){if(_0x13a6a0){return _0x13a6a0[_0xfbba('0xbf')](_0xebc825[_0xfbba('0xbb')]['ids'],_[_0xfbba('0xc0')](_0xebc825[_0xfbba('0xbb')],[_0xfbba('0xc1'),'id'])||{});}})[_0xfbba('0x29')](respondWithResult(_0x106231,null))[_0xfbba('0x35')](handleError(_0x106231,null));};exports[_0xfbba('0xc2')]=function(_0xac6593,_0x1536f3,_0x3a0f13){var _0x333d8d={'raw':![],'where':{}};var _0x14b1c9={};var _0x251f53={'count':0x0,'rows':[]};return db[_0xfbba('0x37')][_0xfbba('0xc3')]({'where':{'id':_0xac6593['params']['id']}})[_0xfbba('0x29')](handleEntityNotFound(_0x1536f3,null))[_0xfbba('0x29')](function(_0x1f0f75){if(_0x1f0f75){_0x14b1c9[_0xfbba('0x3a')]=_['keys'](db[_0xfbba('0xbe')]['rawAttributes']);_0x14b1c9['query']=_[_0xfbba('0x3c')](_0xac6593[_0xfbba('0x3b')]);_0x14b1c9[_0xfbba('0x3d')]=_[_0xfbba('0x3e')](_0x14b1c9[_0xfbba('0x3a')],_0x14b1c9['query']);_0x333d8d[_0xfbba('0x3f')]=_[_0xfbba('0x3e')](_0x14b1c9[_0xfbba('0x3a')],qs[_0xfbba('0x40')](_0xac6593[_0xfbba('0x3b')][_0xfbba('0x40')]));_0x333d8d[_0xfbba('0x3f')]=_0x333d8d['attributes'][_0xfbba('0x41')]?_0x333d8d[_0xfbba('0x3f')]:_0x14b1c9[_0xfbba('0x3a')];if(!_0xac6593[_0xfbba('0x3b')][_0xfbba('0x42')](_0xfbba('0x43'))){_0x333d8d['limit']=qs['limit'](_0xac6593[_0xfbba('0x3b')][_0xfbba('0x44')]);_0x333d8d[_0xfbba('0x21')]=qs['offset'](_0xac6593[_0xfbba('0x3b')]['offset']);}_0x333d8d[_0xfbba('0x45')]=qs[_0xfbba('0x46')](_0xac6593[_0xfbba('0x3b')][_0xfbba('0x46')]);_0x333d8d[_0xfbba('0x47')]=qs[_0xfbba('0x3d')](_[_0xfbba('0x48')](_0xac6593[_0xfbba('0x3b')],_0x14b1c9['filters']));_0x333d8d[_0xfbba('0x47')]['FaxInteractionId']=_0x1f0f75['id'];if(_0xac6593['query']['filter']){_0x333d8d[_0xfbba('0x47')]=_['merge'](_0x333d8d[_0xfbba('0x47')],{'$or':_[_0xfbba('0x2f')](_0x333d8d[_0xfbba('0x3f')],function(_0x243a32){var _0x5d2c4e={};_0x5d2c4e[_0x243a32]={'$like':'%'+_0xac6593['query'][_0xfbba('0x8a')]+'%'};return _0x5d2c4e;})});}if(_0xac6593[_0xfbba('0x3b')][_0xfbba('0x7e')]){var _0x49c53a=_0xac6593['query'][_0xfbba('0x7e')][_0xfbba('0x33')](',');var _0x5349e9={};_0x5349e9[_0x49c53a[0x0]]={'$gte':moment(_0x49c53a[0x1])[_0xfbba('0xc4')](_0xfbba('0xc5'))};_0x333d8d[_0xfbba('0x47')]=_[_0xfbba('0xb9')](_0x333d8d['where'],_0x5349e9);}_0x333d8d=_[_0xfbba('0xb9')]({},_0x333d8d,_0xac6593[_0xfbba('0xc6')]);return db[_0xfbba('0xbe')]['count']({'where':_0x333d8d[_0xfbba('0x47')]})[_0xfbba('0x29')](function(_0x1a506f){_0x251f53[_0xfbba('0x23')]=_0x1a506f;if(_0xac6593[_0xfbba('0x3b')][_0xfbba('0xb7')]){_0x333d8d['include']=[{'all':!![]}];}return db[_0xfbba('0xbe')][_0xfbba('0xc7')](_0x333d8d);})['then'](function(_0x476e2c){_0x251f53[_0xfbba('0xb4')]=_0x476e2c;return _0x251f53;});}})['then'](respondWithFilteredResult(_0x1536f3,_0x333d8d))[_0xfbba('0x35')](handleError(_0x1536f3,null));};exports[_0xfbba('0xc8')]=function(_0x33c551,_0x27fb28,_0xe65295){return db[_0xfbba('0x37')][_0xfbba('0x62')]({'where':{'id':_0x33c551[_0xfbba('0xb6')]['id']}})[_0xfbba('0x29')](handleEntityNotFound(_0x27fb28,null))[_0xfbba('0x29')](function(_0x4497da){if(_0x4497da){return _0x4497da['setTags'](_0x33c551[_0xfbba('0xbb')]['ids'],_[_0xfbba('0xc0')](_0x33c551['body'],['ids','id'])||{})['spread'](function(){return db[_0xfbba('0x71')][_0xfbba('0xc7')]({'attributes':['id',_0xfbba('0x2d'),_0xfbba('0x4a')],'where':{'id':_0x33c551[_0xfbba('0xbb')][_0xfbba('0xc1')]}});})[_0xfbba('0x29')](function(_0x44d93e){socket[_0xfbba('0xc9')](_0xfbba('0xca'),{'id':Number(_0x33c551[_0xfbba('0xb6')]['id']),'tags':_0x44d93e||[]});return{'id':Number(_0x33c551['params']['id']),'tags':_0x44d93e||[]};});}})[_0xfbba('0x29')](respondWithResult(_0x27fb28,null))['catch'](handleError(_0x27fb28,null));};exports[_0xfbba('0xcb')]=function(_0x472e2e,_0x388c3f,_0xdf72ea){return db[_0xfbba('0x37')]['find']({'where':{'id':_0x472e2e[_0xfbba('0xb6')]['id']}})[_0xfbba('0x29')](handleEntityNotFound(_0x388c3f,null))[_0xfbba('0x29')](function(_0x2ff720){if(_0x2ff720){return _0x2ff720[_0xfbba('0xcb')](_0x472e2e['query'][_0xfbba('0xc1')]);}})[_0xfbba('0x29')](respondWithStatusCode(_0x388c3f,null))[_0xfbba('0x35')](handleError(_0x388c3f,null));};exports[_0xfbba('0xcc')]=function(_0x528134,_0x50ba44){var _0xa60c06=moment()[_0xfbba('0xcd')]()['toString']();var _0x129a45=path[_0xfbba('0xce')](config['root'],_0xfbba('0xcf'),_0xfbba('0xd0'),_0xfbba('0xd1'));var _0x1d1f77=path[_0xfbba('0xce')](config[_0xfbba('0xd2')],_0xfbba('0xcf'),_0xfbba('0xd0'),_0xfbba('0xd3'));var _0x4549b8=path[_0xfbba('0xce')](_0x129a45,_0xa60c06);var _0x49f826=util[_0xfbba('0xc4')](_0xfbba('0xd4'),_0x528134['params']['id'],_0xa60c06);var _0x77229c=path[_0xfbba('0xce')](_0x129a45,_0x49f826);var _0x51bd60=[];_0x51bd60[_0xfbba('0x34')]({'model':db[_0xfbba('0xd5')],'as':_0xfbba('0xd5'),'raw':!![]});var _0x8a0658=[{'model':db['FaxMessage'],'as':_0xfbba('0xd6'),'attributes':['id','body',_0xfbba('0x7d')],'include':_0x51bd60}];return db[_0xfbba('0x37')][_0xfbba('0x62')]({'where':{'id':_0x528134[_0xfbba('0xb6')]['id']},'include':_0x8a0658})[_0xfbba('0x29')](handleEntityNotFound(_0x50ba44,null))[_0xfbba('0x29')](function(_0x25f292){if(_0x25f292&&_0x25f292[_0xfbba('0xd6')]){var _0x5ac8f3=_0x25f292[_0xfbba('0xd7')]({'plain':!![]});fs[_0xfbba('0xd8')](_0x4549b8);for(var _0x41e256=0x0;_0x41e256<_0x5ac8f3[_0xfbba('0xd6')][_0xfbba('0x41')];_0x41e256++){var _0x5a9e7=_0x5ac8f3['Messages'][_0x41e256][_0xfbba('0xd5')];if(_0x5a9e7){var _0x31a298=path[_0xfbba('0xce')](_0x1d1f77,_0x5a9e7['basename']);if(fs[_0xfbba('0xd9')](_0x31a298)){fs[_0xfbba('0xda')](_0x31a298)[_0xfbba('0xdb')](fs[_0xfbba('0xdc')](path[_0xfbba('0xce')](_0x4549b8,_0x5a9e7[_0xfbba('0xdd')])));}}}return BPromise[_0xfbba('0x97')]()['then'](function(){return new BPromise(function(_0x5710f6,_0x4bafde){zipdir(_0x4549b8,{'saveTo':_0x77229c},function(_0x5cafc1,_0x54e56f){if(_0x5cafc1)return _0x4bafde(_0x5cafc1);return _0x5710f6(_0x54e56f);});})[_0xfbba('0x29')](function(){return new BPromise(function(_0x27b0e8,_0x3ca3b8){rimraf(_0x4549b8,function(_0xf0f764){if(_0xf0f764)_0x3ca3b8(_0xf0f764);return _0x27b0e8();});});})[_0xfbba('0x29')](function(){return _0x50ba44[_0xfbba('0xcc')](_0x77229c,_0x49f826,function(_0x53e5b4){if(_0x53e5b4){console['log'](_0xfbba('0xde'),_0x53e5b4);}else{fs[_0xfbba('0xdf')](_0x77229c);}});});});}else{return _0x50ba44[_0xfbba('0x1e')](0xc8);}})[_0xfbba('0x35')](handleError(_0x50ba44,null));};
\ No newline at end of file
index eaf293a..498493f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x842f=['setMaxListeners','save','update','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','events','../../mysqldb','FaxInteraction','FaxMessage'];(function(_0x33719a,_0x1530c5){var _0x256197=function(_0x3d5006){while(--_0x3d5006){_0x33719a['push'](_0x33719a['shift']());}};_0x256197(++_0x1530c5);}(_0x842f,0x19a));var _0xf842=function(_0x45aca3,_0x2dc880){_0x45aca3=_0x45aca3-0x0;var _0x540d06=_0x842f[_0x45aca3];return _0x540d06;};'use strict';var EventEmitter=require(_0xf842('0x0'));var FaxInteraction=require(_0xf842('0x1'))['db'][_0xf842('0x2')];var FaxMessage=require('../../mysqldb')['db'][_0xf842('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xf842('0x4')](0x0);var events={'afterCreate':_0xf842('0x5'),'afterUpdate':_0xf842('0x6'),'afterDestroy':'remove'};function emitEvent(_0x38db28){return function(_0x4dab5a,_0x4c9160,_0x548691){_0x4dab5a[_0xf842('0x7')]({'attributes':['id'],'raw':!![]})[_0xf842('0x8')](function(_0x4564eb){_0x4dab5a[_0xf842('0x9')](_0xf842('0xa'),_0x4564eb[_0xf842('0xb')](function(_0x36495f){return{'id':_0x36495f['id']};}));return FaxMessage[_0xf842('0xc')]({'where':{'FaxInteractionId':_0x4dab5a['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x30fe4a){_0x4dab5a[_0xf842('0x9')](_0xf842('0xd'),_0x30fe4a[_0xf842('0xe')]);FaxInteractionEvents[_0xf842('0xf')](_0x38db28+':'+_0x4dab5a['id'],_0x4dab5a);FaxInteractionEvents['emit'](_0x38db28,_0x4dab5a);_0x548691(null);})[_0xf842('0x10')](_0x548691(null));};}for(var e in events){if(events[_0xf842('0x11')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module['exports']=FaxInteractionEvents;
\ No newline at end of file
+var _0xf18b=['Users','map','findAll','then','setDataValue','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','remove','getUsers'];(function(_0x476bf4,_0x2a3755){var _0x788ffe=function(_0x13fa11){while(--_0x13fa11){_0x476bf4['push'](_0x476bf4['shift']());}};_0x788ffe(++_0x2a3755);}(_0xf18b,0xa4));var _0xbf18=function(_0x16dc56,_0x54149b){_0x16dc56=_0x16dc56-0x0;var _0x49d29e=_0xf18b[_0x16dc56];return _0x49d29e;};'use strict';var EventEmitter=require(_0xbf18('0x0'));var FaxInteraction=require(_0xbf18('0x1'))['db'][_0xbf18('0x2')];var FaxMessage=require('../../mysqldb')['db'][_0xbf18('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xbf18('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xbf18('0x5')};function emitEvent(_0x42f5e0){return function(_0x40cda6,_0x400937,_0xee6c79){_0x40cda6[_0xbf18('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x57a166){_0x40cda6['setDataValue'](_0xbf18('0x7'),_0x57a166[_0xbf18('0x8')](function(_0x24fe40){return{'id':_0x24fe40['id']};}));return FaxMessage[_0xbf18('0x9')]({'where':{'FaxInteractionId':_0x40cda6['id'],'direction':'in','read':![]},'raw':!![]});})[_0xbf18('0xa')](function(_0x29129d){_0x40cda6[_0xbf18('0xb')](_0xbf18('0xc'),_0x29129d[_0xbf18('0xd')]);FaxInteractionEvents[_0xbf18('0xe')](_0x42f5e0+':'+_0x40cda6['id'],_0x40cda6);FaxInteractionEvents['emit'](_0x42f5e0,_0x40cda6);_0xee6c79(null);})[_0xbf18('0xf')](_0xee6c79(null));};}for(var e in events){if(events[_0xbf18('0x10')](e)){var event=events[e];FaxInteraction[_0xbf18('0x11')](e,emitEvent(event));}}module[_0xbf18('0x12')]=FaxInteractionEvents;
\ No newline at end of file
index 2b02910..12017d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5848=['closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./faxInteraction.attributes','exports','define','FaxInteraction','fax_interactions','closed'];(function(_0x2eb5bc,_0x4634c6){var _0x51c7b1=function(_0x1af430){while(--_0x1af430){_0x2eb5bc['push'](_0x2eb5bc['shift']());}};_0x51c7b1(++_0x4634c6);}(_0x5848,0x17d));var _0x8584=function(_0x496993,_0x2e8a80){_0x496993=_0x496993-0x0;var _0x3d0449=_0x5848[_0x496993];return _0x3d0449;};'use strict';var _=require(_0x8584('0x0'));var util=require(_0x8584('0x1'));var logger=require(_0x8584('0x2'))(_0x8584('0x3'));var moment=require(_0x8584('0x4'));var BPromise=require(_0x8584('0x5'));var rp=require(_0x8584('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8584('0x7'));var config=require(_0x8584('0x8'));var attributes=require(_0x8584('0x9'));module[_0x8584('0xa')]=function(_0x32d68a,_0x5278c3){return _0x32d68a[_0x8584('0xb')](_0x8584('0xc'),attributes,{'tableName':_0x8584('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x643401,_0x2f3488,_0x31a673){if(_0x643401['changed'](_0x8584('0xe'))){_0x643401[_0x8584('0xf')]=moment()[_0x8584('0x10')](_0x8584('0x11'));}_0x31a673(null,_0x643401);}}});};
\ No newline at end of file
+var _0x6d5e=['closed','closedAt','format','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./faxInteraction.attributes','exports','FaxInteraction','changed'];(function(_0x41b4ff,_0x5d23be){var _0x1c1bd1=function(_0x1b8119){while(--_0x1b8119){_0x41b4ff['push'](_0x41b4ff['shift']());}};_0x1c1bd1(++_0x5d23be);}(_0x6d5e,0x103));var _0xe6d5=function(_0x310032,_0x50a437){_0x310032=_0x310032-0x0;var _0x1ca6e5=_0x6d5e[_0x310032];return _0x1ca6e5;};'use strict';var _=require(_0xe6d5('0x0'));var util=require(_0xe6d5('0x1'));var logger=require(_0xe6d5('0x2'))(_0xe6d5('0x3'));var moment=require('moment');var BPromise=require(_0xe6d5('0x4'));var rp=require(_0xe6d5('0x5'));var fs=require('fs');var path=require(_0xe6d5('0x6'));var rimraf=require(_0xe6d5('0x7'));var config=require(_0xe6d5('0x8'));var attributes=require(_0xe6d5('0x9'));module[_0xe6d5('0xa')]=function(_0x57c0ca,_0x13411d){return _0x57c0ca['define'](_0xe6d5('0xb'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x572986,_0x52913e,_0x5c08bb){if(_0x572986[_0xe6d5('0xc')](_0xe6d5('0xd'))){_0x572986[_0xe6d5('0xe')]=moment()[_0xe6d5('0xf')]('YYYY-MM-DD\x20HH:mm:ss');}_0x5c08bb(null,_0x572986);}}});};
\ No newline at end of file
index d01af6d..9131841 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x031d=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','request','then','info','request\x20sent','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxInteraction,\x20%s,\x20%s','message','result','catch','UpdateFaxInteraction','FaxInteraction','body','options','raw','attributes','debug','AddTagsToFaxInteraction','addTags','ids','omit','spread','AddTags','lodash'];(function(_0x5e939b,_0x5773ff){var _0x1236c4=function(_0x22e063){while(--_0x22e063){_0x5e939b['push'](_0x5e939b['shift']());}};_0x1236c4(++_0x5773ff);}(_0x031d,0x1b7));var _0xd031=function(_0x5d31f3,_0x4239b0){_0x5d31f3=_0x5d31f3-0x0;var _0x1cc88c=_0x031d[_0x5d31f3];return _0x1cc88c;};'use strict';var _=require(_0xd031('0x0'));var util=require(_0xd031('0x1'));var moment=require(_0xd031('0x2'));var BPromise=require(_0xd031('0x3'));var rs=require(_0xd031('0x4'));var fs=require('fs');var Redis=require(_0xd031('0x5'));var db=require(_0xd031('0x6'))['db'];var utils=require(_0xd031('0x7'));var logger=require(_0xd031('0x8'))(_0xd031('0x9'));var config=require(_0xd031('0xa'));var jayson=require(_0xd031('0xb'));var client=jayson[_0xd031('0xc')][_0xd031('0xd')]({'port':0x232a});config[_0xd031('0xe')]=_[_0xd031('0xf')](config[_0xd031('0xe')],{'host':_0xd031('0x10'),'port':0x18eb});var socket=require(_0xd031('0x11'))(new Redis(config[_0xd031('0xe')]));require(_0xd031('0x12'))['register'](socket);function respondWithRpcPromise(_0x544a95,_0x476899,_0xb330b){return new BPromise(function(_0x331d85,_0x1a060c){return client[_0xd031('0x13')](_0x544a95,_0xb330b)[_0xd031('0x14')](function(_0x532328){logger[_0xd031('0x15')]('FaxInteraction,\x20%s,\x20%s',_0x476899,_0xd031('0x16'));logger['debug'](_0xd031('0x17'),_0x476899,_0xd031('0x16'),JSON[_0xd031('0x18')](_0x532328));if(_0x532328[_0xd031('0x19')]){if(_0x532328[_0xd031('0x19')][_0xd031('0x1a')]===0x1f4){logger[_0xd031('0x19')](_0xd031('0x1b'),_0x476899,_0x532328[_0xd031('0x19')][_0xd031('0x1c')]);return _0x1a060c(_0x532328['error'][_0xd031('0x1c')]);}logger[_0xd031('0x19')]('FaxInteraction,\x20%s,\x20%s',_0x476899,_0x532328['error'][_0xd031('0x1c')]);return _0x331d85(_0x532328[_0xd031('0x19')][_0xd031('0x1c')]);}else{logger[_0xd031('0x15')](_0xd031('0x1b'),_0x476899,_0xd031('0x16'));_0x331d85(_0x532328[_0xd031('0x1d')][_0xd031('0x1c')]);}})[_0xd031('0x1e')](function(_0x7c8054){logger[_0xd031('0x19')](_0xd031('0x1b'),_0x476899,_0x7c8054);_0x1a060c(_0x7c8054);});});}exports[_0xd031('0x1f')]=function(_0x2da71e){var _0x4529a2=this;return new Promise(function(_0x26e780,_0x375ac8){return db[_0xd031('0x20')]['update'](_0x2da71e[_0xd031('0x21')],{'raw':_0x2da71e['options']?_0x2da71e[_0xd031('0x22')][_0xd031('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2da71e[_0xd031('0x22')]?_0x2da71e[_0xd031('0x22')]['where']||null:null,'attributes':_0x2da71e[_0xd031('0x22')]?_0x2da71e['options'][_0xd031('0x24')]||null:null,'limit':_0x2da71e['options']?_0x2da71e[_0xd031('0x22')]['limit']||null:null})[_0xd031('0x14')](function(_0x472fd4){logger[_0xd031('0x15')]('UpdateFaxInteraction',_0x2da71e);logger[_0xd031('0x25')]('UpdateFaxInteraction',_0x2da71e,JSON['stringify'](_0x472fd4));_0x26e780(_0x472fd4);})[_0xd031('0x1e')](function(_0x11a72e){logger['error'](_0xd031('0x1f'),_0x11a72e[_0xd031('0x1c')],_0x2da71e);_0x375ac8(_0x4529a2['error'](0x1f4,_0x11a72e[_0xd031('0x1c')]));});});};exports[_0xd031('0x26')]=function(_0x3d7aad){return new Promise(function(_0x3ca4b7,_0x385211){return db[_0xd031('0x20')]['find']({'where':_0x3d7aad[_0xd031('0x22')]?_0x3d7aad['options']['where']||null:null})[_0xd031('0x14')](function(_0xc55421){if(_0xc55421){return _0xc55421[_0xd031('0x27')](_0x3d7aad[_0xd031('0x21')][_0xd031('0x28')],_[_0xd031('0x29')](_0x3d7aad[_0xd031('0x21')],['ids','id'])||{});}})[_0xd031('0x2a')](function(_0xe41629){logger[_0xd031('0x15')](_0xd031('0x2b'),_0x3d7aad);logger[_0xd031('0x25')]('AddTags',_0x3d7aad,JSON[_0xd031('0x18')](_0xe41629));_0x3ca4b7(_0xe41629);})['catch'](function(_0x10278a){logger[_0xd031('0x19')](_0xd031('0x2b'),_0x10278a[_0xd031('0x1c')],_0x3d7aad);_0x385211(_this[_0xd031('0x19')](0x1f4,_0x10278a[_0xd031('0x1c')]));});});};
\ No newline at end of file
+var _0x649e=['body','options','where','limit','UpdateFaxInteraction','catch','AddTagsToFaxInteraction','find','addTags','omit','AddTags','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','register','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','FaxInteraction','update'];(function(_0x57db77,_0x3b8fbc){var _0x29cb52=function(_0x34badb){while(--_0x34badb){_0x57db77['push'](_0x57db77['shift']());}};_0x29cb52(++_0x3b8fbc);}(_0x649e,0xef));var _0xe649=function(_0x1627de,_0x3360bc){_0x1627de=_0x1627de-0x0;var _0x53d64c=_0x649e[_0x1627de];return _0x53d64c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe649('0x0'));var BPromise=require(_0xe649('0x1'));var rs=require(_0xe649('0x2'));var fs=require('fs');var Redis=require(_0xe649('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe649('0x4'));var logger=require('../../config/logger')(_0xe649('0x5'));var config=require('../../config/environment');var jayson=require(_0xe649('0x6'));var client=jayson[_0xe649('0x7')][_0xe649('0x8')]({'port':0x232a});config['redis']=_[_0xe649('0x9')](config['redis'],{'host':_0xe649('0xa'),'port':0x18eb});var socket=require(_0xe649('0xb'))(new Redis(config[_0xe649('0xc')]));require('./faxInteraction.socket')[_0xe649('0xd')](socket);function respondWithRpcPromise(_0x2819f8,_0x52cfda,_0x1b6152){return new BPromise(function(_0x1c53a8,_0x15defb){return client[_0xe649('0xe')](_0x2819f8,_0x1b6152)[_0xe649('0xf')](function(_0x134f3a){logger[_0xe649('0x10')](_0xe649('0x11'),_0x52cfda,_0xe649('0x12'));logger[_0xe649('0x13')](_0xe649('0x14'),_0x52cfda,_0xe649('0x12'),JSON[_0xe649('0x15')](_0x134f3a));if(_0x134f3a['error']){if(_0x134f3a[_0xe649('0x16')]['code']===0x1f4){logger[_0xe649('0x16')]('FaxInteraction,\x20%s,\x20%s',_0x52cfda,_0x134f3a['error'][_0xe649('0x17')]);return _0x15defb(_0x134f3a[_0xe649('0x16')][_0xe649('0x17')]);}logger[_0xe649('0x16')]('FaxInteraction,\x20%s,\x20%s',_0x52cfda,_0x134f3a[_0xe649('0x16')][_0xe649('0x17')]);return _0x1c53a8(_0x134f3a[_0xe649('0x16')][_0xe649('0x17')]);}else{logger['info'](_0xe649('0x11'),_0x52cfda,_0xe649('0x12'));_0x1c53a8(_0x134f3a[_0xe649('0x18')][_0xe649('0x17')]);}})['catch'](function(_0x5215e3){logger[_0xe649('0x16')](_0xe649('0x11'),_0x52cfda,_0x5215e3);_0x15defb(_0x5215e3);});});}exports['UpdateFaxInteraction']=function(_0x45f6e8){var _0x54b205=this;return new Promise(function(_0x463219,_0xd61708){return db[_0xe649('0x19')][_0xe649('0x1a')](_0x45f6e8[_0xe649('0x1b')],{'raw':_0x45f6e8[_0xe649('0x1c')]?_0x45f6e8[_0xe649('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x45f6e8[_0xe649('0x1c')]?_0x45f6e8['options'][_0xe649('0x1d')]||null:null,'attributes':_0x45f6e8[_0xe649('0x1c')]?_0x45f6e8[_0xe649('0x1c')]['attributes']||null:null,'limit':_0x45f6e8[_0xe649('0x1c')]?_0x45f6e8[_0xe649('0x1c')][_0xe649('0x1e')]||null:null})[_0xe649('0xf')](function(_0x5f2d89){logger[_0xe649('0x10')](_0xe649('0x1f'),_0x45f6e8);logger[_0xe649('0x13')]('UpdateFaxInteraction',_0x45f6e8,JSON[_0xe649('0x15')](_0x5f2d89));_0x463219(_0x5f2d89);})[_0xe649('0x20')](function(_0x2cf51f){logger[_0xe649('0x16')]('UpdateFaxInteraction',_0x2cf51f['message'],_0x45f6e8);_0xd61708(_0x54b205[_0xe649('0x16')](0x1f4,_0x2cf51f[_0xe649('0x17')]));});});};exports[_0xe649('0x21')]=function(_0x33733b){return new Promise(function(_0x2d10f6,_0x452f6d){return db['FaxInteraction'][_0xe649('0x22')]({'where':_0x33733b[_0xe649('0x1c')]?_0x33733b[_0xe649('0x1c')]['where']||null:null})['then'](function(_0x4912b3){if(_0x4912b3){return _0x4912b3[_0xe649('0x23')](_0x33733b[_0xe649('0x1b')]['ids'],_[_0xe649('0x24')](_0x33733b[_0xe649('0x1b')],['ids','id'])||{});}})['spread'](function(_0x58790d){logger[_0xe649('0x10')]('AddTags',_0x33733b);logger[_0xe649('0x13')](_0xe649('0x25'),_0x33733b,JSON['stringify'](_0x58790d));_0x2d10f6(_0x58790d);})[_0xe649('0x20')](function(_0x1e4de2){logger[_0xe649('0x16')]('AddTags',_0x1e4de2['message'],_0x33733b);_0x452f6d(_this[_0xe649('0x16')](0x1f4,_0x1e4de2['message']));});});};
\ No newline at end of file
index 693892c..b73debe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x170a=['register','length','faxInteraction:','./faxInteraction.events','update','emit','removeListener'];(function(_0x4cc03b,_0x299f1c){var _0xf0358c=function(_0x3d0da8){while(--_0x3d0da8){_0x4cc03b['push'](_0x4cc03b['shift']());}};_0xf0358c(++_0x299f1c);}(_0x170a,0x1df));var _0xa170=function(_0x1fe75e,_0x5a2ef2){_0x1fe75e=_0x1fe75e-0x0;var _0x55cfa8=_0x170a[_0x1fe75e];return _0x55cfa8;};'use strict';var FaxInteractionEvents=require(_0xa170('0x0'));var events=['save','remove',_0xa170('0x1')];function createListener(_0x3df47,_0x420d52){return function(_0x5a11a2){_0x420d52[_0xa170('0x2')](_0x3df47,_0x5a11a2);};}function removeListener(_0x1ca340,_0x3b93a9){return function(){FaxInteractionEvents[_0xa170('0x3')](_0x1ca340,_0x3b93a9);};}exports[_0xa170('0x4')]=function(_0x21a658){for(var _0x218954=0x0,_0x159ab0=events[_0xa170('0x5')];_0x218954<_0x159ab0;_0x218954++){var _0x2e2e4d=events[_0x218954];var _0x45d84e=createListener(_0xa170('0x6')+_0x2e2e4d,_0x21a658);FaxInteractionEvents['on'](_0x2e2e4d,_0x45d84e);}};
\ No newline at end of file
+var _0x72c2=['./faxInteraction.events','save','update','emit','removeListener','register','length','faxInteraction:'];(function(_0x5af024,_0x100fc1){var _0x231565=function(_0x4fc66b){while(--_0x4fc66b){_0x5af024['push'](_0x5af024['shift']());}};_0x231565(++_0x100fc1);}(_0x72c2,0x1d8));var _0x272c=function(_0x1beb84,_0x18f952){_0x1beb84=_0x1beb84-0x0;var _0x24b7fe=_0x72c2[_0x1beb84];return _0x24b7fe;};'use strict';var FaxInteractionEvents=require(_0x272c('0x0'));var events=[_0x272c('0x1'),'remove',_0x272c('0x2')];function createListener(_0x598e75,_0x911026){return function(_0x5df62d){_0x911026[_0x272c('0x3')](_0x598e75,_0x5df62d);};}function removeListener(_0x2d81bb,_0x2dcfed){return function(){FaxInteractionEvents[_0x272c('0x4')](_0x2d81bb,_0x2dcfed);};}exports[_0x272c('0x5')]=function(_0x21915a){for(var _0x34e1ff=0x0,_0x2609c2=events[_0x272c('0x6')];_0x34e1ff<_0x2609c2;_0x34e1ff++){var _0x4d48e2=events[_0x34e1ff];var _0x5cf668=createListener(_0x272c('0x7')+_0x4d48e2,_0x21915a);FaxInteractionEvents['on'](_0x4d48e2,_0x5cf668);}};
\ No newline at end of file
index 08d4f00..912284d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x266b=['addMessage','post','/:id/tags','tracked','fax','addTags','update','delete','faxinteraction:destroy','destroy','removeTags','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxInteraction.controller','isAuthenticated','get','/describe','describe','/:id','show','getMessages','/:id/download','download','/:id/messages'];(function(_0x23ccdc,_0x3a03b7){var _0x23f756=function(_0x3eb3e8){while(--_0x3eb3e8){_0x23ccdc['push'](_0x23ccdc['shift']());}};_0x23f756(++_0x3a03b7);}(_0x266b,0x12d));var _0xb266=function(_0x49bcc1,_0x518ef9){_0x49bcc1=_0x49bcc1-0x0;var _0x4f6403=_0x266b[_0x49bcc1];return _0x4f6403;};'use strict';var multer=require('multer');var util=require(_0xb266('0x0'));var path=require('path');var timeout=require(_0xb266('0x1'));var express=require(_0xb266('0x2'));var router=express['Router']();var fs_extra=require(_0xb266('0x3'));var auth=require(_0xb266('0x4'));var interaction=require(_0xb266('0x5'));var config=require(_0xb266('0x6'));var controller=require(_0xb266('0x7'));router['get']('/',auth[_0xb266('0x8')](),controller['index']);router[_0xb266('0x9')](_0xb266('0xa'),auth['isAuthenticated'](),controller[_0xb266('0xb')]);router[_0xb266('0x9')](_0xb266('0xc'),auth[_0xb266('0x8')](),controller[_0xb266('0xd')]);router[_0xb266('0x9')]('/:id/messages',auth[_0xb266('0x8')](),controller[_0xb266('0xe')]);router['get'](_0xb266('0xf'),auth[_0xb266('0x8')](),controller[_0xb266('0x10')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['post'](_0xb266('0x11'),auth['isAuthenticated'](),controller[_0xb266('0x12')]);router[_0xb266('0x13')](_0xb266('0x14'),auth[_0xb266('0x8')](),interaction[_0xb266('0x15')](_0xb266('0x16'),'faxinteraction:addtags'),controller[_0xb266('0x17')]);router['put'](_0xb266('0xc'),auth[_0xb266('0x8')](),interaction[_0xb266('0x15')](_0xb266('0x16'),'faxinteraction:update'),controller[_0xb266('0x18')]);router[_0xb266('0x19')](_0xb266('0xc'),auth['isAuthenticated'](),interaction['tracked']('fax',_0xb266('0x1a')),controller[_0xb266('0x1b')]);router[_0xb266('0x19')](_0xb266('0x14'),auth[_0xb266('0x8')](),controller[_0xb266('0x1c')]);module['exports']=router;
\ No newline at end of file
+var _0x3edc=['addMessage','/:id/tags','tracked','fax','faxinteraction:update','update','faxinteraction:destroy','destroy','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/messages','/:id/download','download','post','create'];(function(_0x22d66f,_0x1dd25b){var _0x5546b5=function(_0x20585f){while(--_0x20585f){_0x22d66f['push'](_0x22d66f['shift']());}};_0x5546b5(++_0x1dd25b);}(_0x3edc,0x1ae));var _0xc3ed=function(_0x595e96,_0x39b21b){_0x595e96=_0x595e96-0x0;var _0x382e4d=_0x3edc[_0x595e96];return _0x382e4d;};'use strict';var multer=require(_0xc3ed('0x0'));var util=require(_0xc3ed('0x1'));var path=require(_0xc3ed('0x2'));var timeout=require(_0xc3ed('0x3'));var express=require(_0xc3ed('0x4'));var router=express['Router']();var fs_extra=require(_0xc3ed('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc3ed('0x6'));var config=require(_0xc3ed('0x7'));var controller=require(_0xc3ed('0x8'));router[_0xc3ed('0x9')]('/',auth[_0xc3ed('0xa')](),controller['index']);router[_0xc3ed('0x9')](_0xc3ed('0xb'),auth[_0xc3ed('0xa')](),controller[_0xc3ed('0xc')]);router[_0xc3ed('0x9')](_0xc3ed('0xd'),auth['isAuthenticated'](),controller[_0xc3ed('0xe')]);router[_0xc3ed('0x9')](_0xc3ed('0xf'),auth['isAuthenticated'](),controller['getMessages']);router['get'](_0xc3ed('0x10'),auth[_0xc3ed('0xa')](),controller[_0xc3ed('0x11')]);router[_0xc3ed('0x12')]('/',auth[_0xc3ed('0xa')](),controller[_0xc3ed('0x13')]);router[_0xc3ed('0x12')](_0xc3ed('0xf'),auth[_0xc3ed('0xa')](),controller[_0xc3ed('0x14')]);router['post'](_0xc3ed('0x15'),auth[_0xc3ed('0xa')](),interaction[_0xc3ed('0x16')](_0xc3ed('0x17'),'faxinteraction:addtags'),controller['addTags']);router['put']('/:id',auth[_0xc3ed('0xa')](),interaction[_0xc3ed('0x16')]('fax',_0xc3ed('0x18')),controller[_0xc3ed('0x19')]);router['delete']('/:id',auth[_0xc3ed('0xa')](),interaction[_0xc3ed('0x16')]('fax',_0xc3ed('0x1a')),controller[_0xc3ed('0x1b')]);router[_0xc3ed('0x1c')](_0xc3ed('0x15'),auth[_0xc3ed('0xa')](),controller['removeTags']);module[_0xc3ed('0x1d')]=router;
\ No newline at end of file
index 3e2639f..fe804c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79d3=['ENUM','out','DATE','sequelize','TEXT','BOOLEAN'];(function(_0x4ab32c,_0x44ab5e){var _0x2b9644=function(_0x498479){while(--_0x498479){_0x4ab32c['push'](_0x4ab32c['shift']());}};_0x2b9644(++_0x44ab5e);}(_0x79d3,0x15f));var _0x379d=function(_0x1ba57f,_0xb81938){_0x1ba57f=_0x1ba57f-0x0;var _0x5a7f02=_0x79d3[_0x1ba57f];return _0x5a7f02;};'use strict';var Sequelize=require(_0x379d('0x0'));module['exports']={'body':{'type':Sequelize[_0x379d('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x379d('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x379d('0x3')]('in','out'),'defaultValue':_0x379d('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x379d('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0x379d('0x5')]}};
\ No newline at end of file
+var _0x2a3a=['exports','TEXT','medium','BOOLEAN','out','DATE','sequelize'];(function(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0x2a3a,0x1bf));var _0xa2a3=function(_0x96ad37,_0x2617aa){_0x96ad37=_0x96ad37-0x0;var _0x594059=_0x2a3a[_0x96ad37];return _0x594059;};'use strict';var Sequelize=require(_0xa2a3('0x0'));module[_0xa2a3('0x1')]={'body':{'type':Sequelize[_0xa2a3('0x2')](_0xa2a3('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xa2a3('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0xa2a3('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize[_0xa2a3('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0xa2a3('0x6')]}};
\ No newline at end of file
index 08e73ef..c00d143 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0736=['findOne','Attachment','AttachmentId','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','download','join','root','files','attachments','basename','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','http','client','request','then','info','FaxMessage,\x20%s,\x20%s','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','sendStatus','send','index','map','FaxMessage','rawAttributes','type','key','name','query','keys','filters','intersection','attributes','model','fields','length','nolimit','sort','where','pick','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','body','find','describe','../../config/logger','fax-interactions','fax','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','FaxInteraction','FaxInteractionId','isNil','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','acceptMessage','ContactId','sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','accept','EventManager','acceptmessage','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','rejectmessage','create','CmContact'];(function(_0x58ceb9,_0x5601df){var _0x3d0ff5=function(_0x3a79d0){while(--_0x3a79d0){_0x58ceb9['push'](_0x58ceb9['shift']());}};_0x3d0ff5(++_0x5601df);}(_0x0736,0x12d));var _0x6073=function(_0x46a915,_0x52c8ad){_0x46a915=_0x46a915-0x0;var _0x3629d2=_0x0736[_0x46a915];return _0x3629d2;};'use strict';var emlformat=require(_0x6073('0x0'));var rimraf=require(_0x6073('0x1'));var zipdir=require(_0x6073('0x2'));var jsonpatch=require(_0x6073('0x3'));var rp=require('request-promise');var moment=require(_0x6073('0x4'));var BPromise=require(_0x6073('0x5'));var Mustache=require('mustache');var util=require(_0x6073('0x6'));var path=require(_0x6073('0x7'));var sox=require(_0x6073('0x8'));var csv=require(_0x6073('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6073('0xa'));var _=require(_0x6073('0xb'));var squel=require(_0x6073('0xc'));var crypto=require(_0x6073('0xd'));var jsforce=require(_0x6073('0xe'));var deskjs=require(_0x6073('0xf'));var toCsv=require(_0x6073('0x9'));var querystring=require(_0x6073('0x10'));var Papa=require(_0x6073('0x11'));var Redis=require(_0x6073('0x12'));var authService=require(_0x6073('0x13'));var qs=require(_0x6073('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6073('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x6073('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x6073('0x17'));var db=require(_0x6073('0x18'))['db'];config[_0x6073('0x19')]=_[_0x6073('0x1a')](config[_0x6073('0x19')],{'host':_0x6073('0x1b'),'port':0x18eb});var socket=require(_0x6073('0x1c'))(new Redis(config['redis']));require(_0x6073('0x1d'))['register'](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x6073('0x1e')]({'port':0x232c});var client9002=jayson[_0x6073('0x1f')][_0x6073('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x6c1339,_0x57d742,_0xfc2a4e,_0x395f42){return new BPromise(function(_0x37eb04,_0x5e72a2){var _0x2d5470=_0x395f42||client;return _0x2d5470[_0x6073('0x20')](_0x6c1339,_0xfc2a4e)[_0x6073('0x21')](function(_0xdcc3d8){logger[_0x6073('0x22')](_0x6073('0x23'),_0x57d742,'request\x20sent');logger[_0x6073('0x24')](_0x6073('0x25'),_0x57d742,'request\x20sent',JSON[_0x6073('0x26')](_0xdcc3d8));if(_0xdcc3d8[_0x6073('0x27')]){if(_0xdcc3d8[_0x6073('0x27')][_0x6073('0x28')]===0x1f4){logger['error'](_0x6073('0x23'),_0x57d742,_0xdcc3d8[_0x6073('0x27')][_0x6073('0x29')]);return _0x5e72a2(_0xdcc3d8[_0x6073('0x27')]['message']);}logger[_0x6073('0x27')](_0x6073('0x23'),_0x57d742,_0xdcc3d8[_0x6073('0x27')]['message']);return _0x37eb04(_0xdcc3d8[_0x6073('0x27')][_0x6073('0x29')]);}else{logger[_0x6073('0x22')](_0x6073('0x23'),_0x57d742,'request\x20sent');_0x37eb04(_0xdcc3d8['result'][_0x6073('0x29')]);}})['catch'](function(_0x286f88){logger[_0x6073('0x27')](_0x6073('0x23'),_0x57d742,_0x286f88);_0x5e72a2(_0x286f88);});});}function respondWithStatusCode(_0x45a000,_0x307ab2){_0x307ab2=_0x307ab2||0xcc;return function(_0x19eca6){if(_0x19eca6){return _0x45a000['sendStatus'](_0x307ab2);}return _0x45a000[_0x6073('0x2a')](_0x307ab2)[_0x6073('0x2b')]();};}function respondWithResult(_0x3cf79f,_0x5296cc){_0x5296cc=_0x5296cc||0xc8;return function(_0x5e96c6){if(_0x5e96c6){return _0x3cf79f[_0x6073('0x2a')](_0x5296cc)[_0x6073('0x2c')](_0x5e96c6);}};}function respondWithFilteredResult(_0x23785f,_0x2dd6b0){return function(_0x1aa5eb){if(_0x1aa5eb){var _0x452cb6=typeof _0x2dd6b0['offset']===_0x6073('0x2d')&&typeof _0x2dd6b0[_0x6073('0x2e')]===_0x6073('0x2d');var _0x379b69=_0x1aa5eb[_0x6073('0x2f')];var _0x10d12f=_0x452cb6?0x0:_0x2dd6b0['offset'];var _0x74b3cb=_0x452cb6?_0x1aa5eb[_0x6073('0x2f')]:_0x2dd6b0[_0x6073('0x30')]+_0x2dd6b0['limit'];var _0x47b805;if(_0x74b3cb>=_0x379b69){_0x74b3cb=_0x379b69;_0x47b805=0xc8;}else{_0x47b805=0xce;}_0x23785f[_0x6073('0x2a')](_0x47b805);return _0x23785f[_0x6073('0x31')](_0x6073('0x32'),_0x10d12f+'-'+_0x74b3cb+'/'+_0x379b69)[_0x6073('0x2c')](_0x1aa5eb);}return null;};}function patchUpdates(_0x4943eb){return function(_0x2be227){try{jsonpatch[_0x6073('0x33')](_0x2be227,_0x4943eb,!![]);}catch(_0xc44dce){return BPromise[_0x6073('0x34')](_0xc44dce);}return _0x2be227[_0x6073('0x35')]();};}function saveUpdates(_0x4fec60,_0x6059f0){return function(_0xfa9998){if(_0xfa9998){return _0xfa9998[_0x6073('0x36')](_0x4fec60)[_0x6073('0x21')](function(_0x2af176){return _0x2af176;});}return null;};}function removeEntity(_0x492908,_0x5b5fc8){return function(_0x2a354b){if(_0x2a354b){return _0x2a354b[_0x6073('0x37')]()[_0x6073('0x21')](function(){_0x492908[_0x6073('0x2a')](0xcc)[_0x6073('0x2b')]();});}};}function handleEntityNotFound(_0x17bf60,_0x3e747b){return function(_0x3be535){if(!_0x3be535){_0x17bf60[_0x6073('0x38')](0x194);}return _0x3be535;};}function handleError(_0x31d02f,_0x2bc0cc){_0x2bc0cc=_0x2bc0cc||0x1f4;return function(_0xbe5137){logger[_0x6073('0x27')](_0xbe5137['stack']);if(_0xbe5137['name']){delete _0xbe5137['name'];}_0x31d02f['status'](_0x2bc0cc)[_0x6073('0x39')](_0xbe5137);};}exports[_0x6073('0x3a')]=function(_0x353f05,_0x410ecd){var _0x245c24={},_0x89d54b={},_0x109c0f={'count':0x0,'rows':[]};var _0x5e0c07=_[_0x6073('0x3b')](db[_0x6073('0x3c')][_0x6073('0x3d')],function(_0x5a94f6){return{'name':_0x5a94f6['fieldName'],'type':_0x5a94f6[_0x6073('0x3e')][_0x6073('0x3f')]};});_0x89d54b['model']=_[_0x6073('0x3b')](_0x5e0c07,_0x6073('0x40'));_0x89d54b[_0x6073('0x41')]=_[_0x6073('0x42')](_0x353f05['query']);_0x89d54b[_0x6073('0x43')]=_[_0x6073('0x44')](_0x89d54b['model'],_0x89d54b[_0x6073('0x41')]);_0x245c24[_0x6073('0x45')]=_[_0x6073('0x44')](_0x89d54b[_0x6073('0x46')],qs[_0x6073('0x47')](_0x353f05[_0x6073('0x41')][_0x6073('0x47')]));_0x245c24[_0x6073('0x45')]=_0x245c24[_0x6073('0x45')][_0x6073('0x48')]?_0x245c24[_0x6073('0x45')]:_0x89d54b['model'];if(!_0x353f05[_0x6073('0x41')]['hasOwnProperty'](_0x6073('0x49'))){_0x245c24['limit']=qs[_0x6073('0x2e')](_0x353f05[_0x6073('0x41')][_0x6073('0x2e')]);_0x245c24[_0x6073('0x30')]=qs[_0x6073('0x30')](_0x353f05[_0x6073('0x41')][_0x6073('0x30')]);}_0x245c24['order']=qs['sort'](_0x353f05[_0x6073('0x41')][_0x6073('0x4a')]);_0x245c24[_0x6073('0x4b')]=qs[_0x6073('0x43')](_[_0x6073('0x4c')](_0x353f05['query'],_0x89d54b[_0x6073('0x43')]),_0x5e0c07);if(_0x353f05['query']['filter']){_0x245c24[_0x6073('0x4b')]=_['merge'](_0x245c24['where'],{'$or':_['map'](_0x5e0c07,function(_0x30b4b1){if(_0x30b4b1['type']!==_0x6073('0x4d')){var _0x5939e2={};_0x5939e2[_0x30b4b1[_0x6073('0x40')]]={'$like':'%'+_0x353f05[_0x6073('0x41')]['filter']+'%'};return _0x5939e2;}})});}_0x245c24=_[_0x6073('0x4e')]({},_0x245c24,_0x353f05[_0x6073('0x4f')]);var _0x727751={'where':_0x245c24[_0x6073('0x4b')]};return db[_0x6073('0x3c')][_0x6073('0x2f')](_0x727751)[_0x6073('0x21')](function(_0xbb489c){_0x109c0f[_0x6073('0x2f')]=_0xbb489c;if(_0x353f05[_0x6073('0x41')][_0x6073('0x50')]){_0x245c24['include']=[{'all':!![]}];}return db[_0x6073('0x3c')][_0x6073('0x51')](_0x245c24);})[_0x6073('0x21')](function(_0x519a24){_0x109c0f[_0x6073('0x52')]=_0x519a24;return _0x109c0f;})[_0x6073('0x21')](respondWithFilteredResult(_0x410ecd,_0x245c24))[_0x6073('0x53')](handleError(_0x410ecd,null));};exports[_0x6073('0x54')]=function(_0x248250,_0x4b14dd){var _0x4241ce={'raw':!![],'where':{'id':_0x248250[_0x6073('0x55')]['id']}},_0xfdf0e9={};_0xfdf0e9[_0x6073('0x46')]=_['keys'](db['FaxMessage'][_0x6073('0x3d')]);_0xfdf0e9[_0x6073('0x41')]=_['keys'](_0x248250[_0x6073('0x41')]);_0xfdf0e9[_0x6073('0x43')]=_[_0x6073('0x44')](_0xfdf0e9[_0x6073('0x46')],_0xfdf0e9[_0x6073('0x41')]);_0x4241ce['attributes']=_['intersection'](_0xfdf0e9[_0x6073('0x46')],qs[_0x6073('0x47')](_0x248250[_0x6073('0x41')][_0x6073('0x47')]));_0x4241ce[_0x6073('0x45')]=_0x4241ce[_0x6073('0x45')][_0x6073('0x48')]?_0x4241ce['attributes']:_0xfdf0e9[_0x6073('0x46')];if(_0x248250[_0x6073('0x41')][_0x6073('0x50')]){_0x4241ce['include']=[{'all':!![]}];}_0x4241ce=_['merge']({},_0x4241ce,_0x248250[_0x6073('0x4f')]);return db['FaxMessage']['find'](_0x4241ce)[_0x6073('0x21')](handleEntityNotFound(_0x4b14dd,null))[_0x6073('0x21')](respondWithResult(_0x4b14dd,null))['catch'](handleError(_0x4b14dd,null));};exports[_0x6073('0x36')]=function(_0x374e56,_0x5d8d96){if(_0x374e56[_0x6073('0x56')]['id']){delete _0x374e56[_0x6073('0x56')]['id'];}return db[_0x6073('0x3c')][_0x6073('0x57')]({'where':{'id':_0x374e56[_0x6073('0x55')]['id']}})[_0x6073('0x21')](handleEntityNotFound(_0x5d8d96,null))['then'](saveUpdates(_0x374e56[_0x6073('0x56')],null))['then'](respondWithResult(_0x5d8d96,null))[_0x6073('0x53')](handleError(_0x5d8d96,null));};exports[_0x6073('0x37')]=function(_0x503470,_0x120cca){return db[_0x6073('0x3c')]['find']({'where':{'id':_0x503470[_0x6073('0x55')]['id']}})['then'](handleEntityNotFound(_0x120cca,null))[_0x6073('0x21')](removeEntity(_0x120cca,null))[_0x6073('0x53')](handleError(_0x120cca,null));};exports[_0x6073('0x58')]=function(_0x20b8e0,_0x4cd1ba){return db[_0x6073('0x3c')][_0x6073('0x58')]()[_0x6073('0x21')](respondWithResult(_0x4cd1ba,null))[_0x6073('0x53')](handleError(_0x4cd1ba,null));};var interaction_log=require(_0x6073('0x59'))(_0x6073('0x5a'));exports['accept']=function(_0x8fad4d,_0xecc769,_0x5db985){var _0x590f6b={'agent':{},'channel':_0x6073('0x5b')};if(_0x8fad4d[_0x6073('0x56')]['id']){delete _0x8fad4d[_0x6073('0x56')]['id'];}_0x8fad4d['body'][_0x6073('0x5c')]=!![];_0x8fad4d[_0x6073('0x56')][_0x6073('0x5d')]=moment()[_0x6073('0x5e')](_0x6073('0x5f'));_0x8fad4d[_0x6073('0x56')][_0x6073('0x60')]=_0x8fad4d[_0x6073('0x56')][_0x6073('0x60')]||_0x8fad4d['user']['id'];_0x590f6b[_0x6073('0x61')]['id']=_0x8fad4d[_0x6073('0x56')][_0x6073('0x60')];return db[_0x6073('0x3c')][_0x6073('0x57')]({'where':{'id':_0x8fad4d[_0x6073('0x55')]['id'],'UserId':null}})[_0x6073('0x21')](handleEntityNotFound(_0xecc769,null))[_0x6073('0x21')](saveUpdates(_0x8fad4d['body'],null))[_0x6073('0x21')](function(_0x57baa6){if(_0x57baa6){_0x590f6b[_0x6073('0x29')]=_0x57baa6[_0x6073('0x62')]({'plain':!![]});return db[_0x6073('0x63')]['find']({'where':{'id':_0x57baa6[_0x6073('0x64')]}});}return null;})[_0x6073('0x21')](handleEntityNotFound(_0xecc769,null))[_0x6073('0x21')](function(_0x52ebbc){if(_0x52ebbc){return _0x52ebbc[_0x6073('0x36')]({'UserId':_0x8fad4d[_0x6073('0x56')][_0x6073('0x60')],'read1stAt':_[_0x6073('0x65')](_0x52ebbc['read1stAt'])?moment()[_0x6073('0x5e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x21b720){if(_0x21b720){_0x590f6b[_0x6073('0x66')]=_0x21b720['get']({'plain':!![]});interaction_log[_0x6073('0x22')](_0x6073('0x67'),_0x8fad4d[_0x6073('0x68')]['id'],_0x8fad4d[_0x6073('0x68')]['name'],_0x8fad4d[_0x6073('0x68')][_0x6073('0x69')],_0x590f6b['interaction']['id'],_0x8fad4d[_0x6073('0x56')]?JSON[_0x6073('0x26')](_0x8fad4d[_0x6073('0x56')]):_0x6073('0x6a'));return respondWithRpcPromise('AcceptMessage',_0x6073('0x6b'),_0x590f6b);}return null;})[_0x6073('0x21')](function(_0x2c7ec7){var _0x403131='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2c7ec7[_0x6073('0x29')][_0x6073('0x6c')];return db[_0x6073('0x6d')][_0x6073('0x41')](_0x403131,{'type':db['Sequelize'][_0x6073('0x6e')][_0x6073('0x6f')],'raw':!![]})[_0x6073('0x21')](function(_0xf05a85){return _0xf05a85;});})[_0x6073('0x21')](function(_0x415c9f){if(_0x415c9f){_0x590f6b['message'][_0x6073('0x70')]=_0x415c9f[0x0];if(!_0x8fad4d[_0x6073('0x56')][_0x6073('0x60')])return;return db[_0x6073('0x71')]['find']({'where':{'id':_0x8fad4d['body'][_0x6073('0x60')],'role':_0x6073('0x61')},'attributes':['id',_0x6073('0x40'),_0x6073('0x72'),_0x6073('0x73'),_0x6073('0x74')],'raw':!![]});}return null;})[_0x6073('0x21')](function(_0x4ea9b9){if(!_0x4ea9b9)return null;_0x590f6b['message']['agent']=_0x4ea9b9;return _0x590f6b;})['then'](function(_0x336473){if(_0x336473){if(_0x8fad4d[_0x6073('0x56')][_0x6073('0x75')]){_0x590f6b[_0x6073('0x29')][_0x6073('0x76')]=util[_0x6073('0x5e')](_0x6073('0x77'),_0x8fad4d[_0x6073('0x68')][_0x6073('0x40')]);_0x590f6b[_0x6073('0x29')][_0x6073('0x78')]=_0x590f6b[_0x6073('0x78')];_0x590f6b['message'][_0x6073('0x79')]=_0x590f6b[_0x6073('0x78')];_0x590f6b[_0x6073('0x29')][_0x6073('0x7a')]=_0x6073('0x7b');return respondWithRpcPromise(_0x6073('0x7c'),_0x6073('0x7c'),{'event':_0x6073('0x7d'),'message':_0x590f6b[_0x6073('0x29')]},client9002)['then'](function(){return _0x590f6b;});}return _0x590f6b;}return null;})[_0x6073('0x21')](respondWithResult(_0xecc769,null))[_0x6073('0x53')](handleError(_0xecc769,null));};var interaction_log=require(_0x6073('0x59'))(_0x6073('0x5a'));exports[_0x6073('0x34')]=function(_0x47692a,_0xd1370c,_0x2e7803){var _0x1bee04={'agent':{},'channel':_0x6073('0x5b')};if(_0x47692a[_0x6073('0x56')]['id']){delete _0x47692a[_0x6073('0x56')]['id'];}_0x47692a[_0x6073('0x56')][_0x6073('0x60')]=_0x47692a[_0x6073('0x56')][_0x6073('0x60')]||_0x47692a[_0x6073('0x68')]['id'];_0x1bee04[_0x6073('0x61')]['id']=_0x47692a[_0x6073('0x56')]['UserId'];return db[_0x6073('0x3c')][_0x6073('0x57')]({'where':{'id':_0x47692a[_0x6073('0x55')]['id'],'UserId':null}})[_0x6073('0x21')](handleEntityNotFound(_0xd1370c,null))[_0x6073('0x21')](function(_0x1843ba){if(_0x1843ba){_0x1bee04[_0x6073('0x29')]=_0x1843ba[_0x6073('0x62')]({'plain':!![]});return db['FaxInteraction'][_0x6073('0x57')]({'where':{'id':_0x1843ba[_0x6073('0x64')]}});}return null;})[_0x6073('0x21')](handleEntityNotFound(_0xd1370c,null))[_0x6073('0x21')](function(_0x25562a){if(_0x25562a){_0x1bee04[_0x6073('0x66')]=_0x25562a[_0x6073('0x62')]({'plain':!![]});interaction_log[_0x6073('0x22')](_0x6073('0x7e'),_0x47692a[_0x6073('0x68')]['id'],_0x47692a[_0x6073('0x68')][_0x6073('0x40')],_0x47692a[_0x6073('0x68')][_0x6073('0x69')],_0x1bee04[_0x6073('0x66')]['id'],_0x47692a[_0x6073('0x56')]?JSON['stringify'](_0x47692a[_0x6073('0x56')]):_0x6073('0x6a'));return respondWithRpcPromise(_0x6073('0x7f'),_0x6073('0x80'),_0x1bee04);}return null;})['then'](function(_0x58920c){var _0x5223e9=_0x6073('0x81')+_0x58920c[_0x6073('0x29')]['ContactId'];return db[_0x6073('0x6d')][_0x6073('0x41')](_0x5223e9,{'type':db[_0x6073('0x82')][_0x6073('0x6e')]['SELECT'],'raw':!![]})[_0x6073('0x21')](function(_0x4a9dc2){return _0x4a9dc2;});})[_0x6073('0x21')](function(_0x4eb692){if(_0x4eb692){_0x1bee04[_0x6073('0x29')][_0x6073('0x70')]=_0x4eb692[0x0];if(!_0x47692a['body'][_0x6073('0x60')])return;return db['User']['find']({'where':{'id':_0x47692a['body'][_0x6073('0x60')],'role':_0x6073('0x61')},'attributes':['id',_0x6073('0x40'),_0x6073('0x72'),_0x6073('0x73'),_0x6073('0x74')],'raw':!![]});}return null;})[_0x6073('0x21')](function(_0x173685){if(!_0x173685)return null;_0x1bee04[_0x6073('0x29')]['agent']=_0x173685;return _0x1bee04;})[_0x6073('0x21')](function(_0x36577f){if(_0x36577f){_0x36577f[_0x6073('0x29')][_0x6073('0x76')]=util[_0x6073('0x5e')](_0x6073('0x77'),_0x47692a[_0x6073('0x68')]['name']);_0x36577f[_0x6073('0x29')][_0x6073('0x78')]=_0x1bee04[_0x6073('0x78')];_0x36577f['message']['motionChannel']=_0x1bee04['channel'];_0x36577f[_0x6073('0x29')][_0x6073('0x7a')]=_0x6073('0x34');respondWithRpcPromise(_0x6073('0x7c'),_0x6073('0x7c'),{'event':_0x6073('0x83'),'message':_0x36577f[_0x6073('0x29')]},client9002);return _0x1bee04;}return null;})['then'](respondWithResult(_0xd1370c,null))['catch'](handleError(_0xd1370c,null));};exports[_0x6073('0x84')]=function(_0x1354cb,_0x3069dd){var _0x24f60c;return db[_0x6073('0x3c')][_0x6073('0x84')](_0x1354cb[_0x6073('0x56')],{})[_0x6073('0x21')](function(_0x384288){_0x24f60c=_0x384288;return db[_0x6073('0x85')][_0x6073('0x86')]({'where':{'id':_0x24f60c[_0x6073('0x6c')]}});})[_0x6073('0x21')](function(_0x34c798){if(_['isNil'](_0x34c798)){return;}else{_0x24f60c['fax']=_0x34c798[_0x6073('0x5b')];return db[_0x6073('0x87')][_0x6073('0x86')]({'where':{'id':_0x24f60c[_0x6073('0x88')]}});}})[_0x6073('0x21')](function(_0x3ec3b2){return respondWithRpcPromise('SendFax','SendFax',{'FaxAccountId':_[_0x6073('0x65')](_0x1354cb['body'])?undefined:_0x1354cb['body'][_0x6073('0x89')],'path':_[_0x6073('0x65')](_0x3ec3b2)?undefined:util[_0x6073('0x5e')](_0x6073('0x8a'),_0x3ec3b2['basename']),'fax':_[_0x6073('0x65')](_0x24f60c[_0x6073('0x5b')])?undefined:_0x24f60c[_0x6073('0x5b')],'AttachmentId':_0x24f60c[_0x6073('0x88')]},client9002);})[_0x6073('0x21')](respondWithResult(_0x3069dd,0xc9))[_0x6073('0x53')](handleError(_0x3069dd,null));};exports[_0x6073('0x8b')]=function(_0x8d1fc,_0x1d80c7){var _0x525ee3=path[_0x6073('0x8c')](config[_0x6073('0x8d')],'server',_0x6073('0x8e'),_0x6073('0x8f'));return db[_0x6073('0x3c')][_0x6073('0x57')]({'where':{'id':_0x8d1fc[_0x6073('0x55')]['id']},'include':[{'model':db['Attachment'],'as':_0x6073('0x87')}]})[_0x6073('0x21')](handleEntityNotFound(_0x1d80c7,null))[_0x6073('0x21')](function(_0x3e027f){if(_0x3e027f){return _0x1d80c7[_0x6073('0x8b')](path[_0x6073('0x8c')](_0x525ee3,_0x3e027f['Attachment'][_0x6073('0x90')]));}})[_0x6073('0x53')](handleError(_0x1d80c7,null));};
\ No newline at end of file
+var _0x9ae4=['filter','merge','VIRTUAL','options','includeAll','rows','show','params','keys','length','include','find','update','body','describe','fax-interactions','accept','fax','read','readAt','format','UserId','user','get','FaxInteractionId','isNil','YYYY-MM-DD\x20HH:mm:ss','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','agent','fullname','email','manual','interface','SIP/%s','channel','EventManager','acceptmessage','FaxInteraction','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','User','create','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','join','root','files','attachments','Attachment','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','client','request','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','status','offset','limit','count','set','apply','reject','save','then','destroy','end','sendStatus','stack','name','send','map','FaxMessage','rawAttributes','fieldName','type','model','query','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0x9ae4,0xc9));var _0x49ae=function(_0x10585d,_0x5b1571){_0x10585d=_0x10585d-0x0;var _0x1c7708=_0x9ae4[_0x10585d];return _0x1c7708;};'use strict';var emlformat=require(_0x49ae('0x0'));var rimraf=require(_0x49ae('0x1'));var zipdir=require(_0x49ae('0x2'));var jsonpatch=require(_0x49ae('0x3'));var rp=require(_0x49ae('0x4'));var moment=require(_0x49ae('0x5'));var BPromise=require(_0x49ae('0x6'));var Mustache=require('mustache');var util=require(_0x49ae('0x7'));var path=require(_0x49ae('0x8'));var sox=require(_0x49ae('0x9'));var csv=require('to-csv');var ejs=require(_0x49ae('0xa'));var fs=require('fs');var fs_extra=require(_0x49ae('0xb'));var _=require('lodash');var squel=require(_0x49ae('0xc'));var crypto=require(_0x49ae('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x49ae('0xe'));var toCsv=require(_0x49ae('0xf'));var querystring=require(_0x49ae('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x49ae('0x11'));var qs=require(_0x49ae('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x49ae('0x13'))(_0x49ae('0x14'));var utils=require('../../config/utils');var config=require(_0x49ae('0x15'));var licenseUtil=require(_0x49ae('0x16'));var db=require(_0x49ae('0x17'))['db'];config['redis']=_[_0x49ae('0x18')](config[_0x49ae('0x19')],{'host':_0x49ae('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x49ae('0x19')]));require('./faxMessage.socket')['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x49ae('0x1b')]['http']({'port':0x232c});var client9002=jayson[_0x49ae('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x15c0b2,_0x4e1490,_0x32c84d,_0x2ccd8e){return new BPromise(function(_0x2d4902,_0x461461){var _0x2fddd9=_0x2ccd8e||client;return _0x2fddd9[_0x49ae('0x1c')](_0x15c0b2,_0x32c84d)['then'](function(_0x185a77){logger['info'](_0x49ae('0x1d'),_0x4e1490,_0x49ae('0x1e'));logger[_0x49ae('0x1f')](_0x49ae('0x20'),_0x4e1490,_0x49ae('0x1e'),JSON[_0x49ae('0x21')](_0x185a77));if(_0x185a77['error']){if(_0x185a77['error'][_0x49ae('0x22')]===0x1f4){logger[_0x49ae('0x23')](_0x49ae('0x1d'),_0x4e1490,_0x185a77['error']['message']);return _0x461461(_0x185a77[_0x49ae('0x23')]['message']);}logger[_0x49ae('0x23')](_0x49ae('0x1d'),_0x4e1490,_0x185a77[_0x49ae('0x23')][_0x49ae('0x24')]);return _0x2d4902(_0x185a77['error'][_0x49ae('0x24')]);}else{logger['info']('FaxMessage,\x20%s,\x20%s',_0x4e1490,_0x49ae('0x1e'));_0x2d4902(_0x185a77[_0x49ae('0x25')][_0x49ae('0x24')]);}})[_0x49ae('0x26')](function(_0x28419a){logger['error']('FaxMessage,\x20%s,\x20%s',_0x4e1490,_0x28419a);_0x461461(_0x28419a);});});}function respondWithStatusCode(_0x492f53,_0x566a6a){_0x566a6a=_0x566a6a||0xcc;return function(_0x4b8211){if(_0x4b8211){return _0x492f53['sendStatus'](_0x566a6a);}return _0x492f53[_0x49ae('0x27')](_0x566a6a)['end']();};}function respondWithResult(_0x59813f,_0x3a0241){_0x3a0241=_0x3a0241||0xc8;return function(_0x554298){if(_0x554298){return _0x59813f[_0x49ae('0x27')](_0x3a0241)['json'](_0x554298);}};}function respondWithFilteredResult(_0x46d55c,_0x86a772){return function(_0x415a62){if(_0x415a62){var _0x4dd062=typeof _0x86a772[_0x49ae('0x28')]==='undefined'&&typeof _0x86a772[_0x49ae('0x29')]==='undefined';var _0x3cff40=_0x415a62[_0x49ae('0x2a')];var _0x379f60=_0x4dd062?0x0:_0x86a772[_0x49ae('0x28')];var _0x89d3b9=_0x4dd062?_0x415a62[_0x49ae('0x2a')]:_0x86a772[_0x49ae('0x28')]+_0x86a772[_0x49ae('0x29')];var _0x1a6fdd;if(_0x89d3b9>=_0x3cff40){_0x89d3b9=_0x3cff40;_0x1a6fdd=0xc8;}else{_0x1a6fdd=0xce;}_0x46d55c[_0x49ae('0x27')](_0x1a6fdd);return _0x46d55c[_0x49ae('0x2b')]('Content-Range',_0x379f60+'-'+_0x89d3b9+'/'+_0x3cff40)['json'](_0x415a62);}return null;};}function patchUpdates(_0x523dd7){return function(_0x569dd7){try{jsonpatch[_0x49ae('0x2c')](_0x569dd7,_0x523dd7,!![]);}catch(_0x5e6dc5){return BPromise[_0x49ae('0x2d')](_0x5e6dc5);}return _0x569dd7[_0x49ae('0x2e')]();};}function saveUpdates(_0x2721e1,_0x2e60a3){return function(_0x128f0a){if(_0x128f0a){return _0x128f0a['update'](_0x2721e1)[_0x49ae('0x2f')](function(_0x2623af){return _0x2623af;});}return null;};}function removeEntity(_0x487f58,_0x5bc8bf){return function(_0x1fc8ac){if(_0x1fc8ac){return _0x1fc8ac[_0x49ae('0x30')]()[_0x49ae('0x2f')](function(){_0x487f58[_0x49ae('0x27')](0xcc)[_0x49ae('0x31')]();});}};}function handleEntityNotFound(_0x332821,_0x1461af){return function(_0x5bd4ea){if(!_0x5bd4ea){_0x332821[_0x49ae('0x32')](0x194);}return _0x5bd4ea;};}function handleError(_0x45bbfc,_0x45d580){_0x45d580=_0x45d580||0x1f4;return function(_0x9e13cf){logger[_0x49ae('0x23')](_0x9e13cf[_0x49ae('0x33')]);if(_0x9e13cf['name']){delete _0x9e13cf[_0x49ae('0x34')];}_0x45bbfc[_0x49ae('0x27')](_0x45d580)[_0x49ae('0x35')](_0x9e13cf);};}exports['index']=function(_0x535d0b,_0x2d1c58){var _0x32bbf6={},_0x8d43de={},_0x2a5c5f={'count':0x0,'rows':[]};var _0x531fcc=_[_0x49ae('0x36')](db[_0x49ae('0x37')][_0x49ae('0x38')],function(_0x4e6ca4){return{'name':_0x4e6ca4[_0x49ae('0x39')],'type':_0x4e6ca4[_0x49ae('0x3a')]['key']};});_0x8d43de[_0x49ae('0x3b')]=_['map'](_0x531fcc,_0x49ae('0x34'));_0x8d43de['query']=_['keys'](_0x535d0b[_0x49ae('0x3c')]);_0x8d43de['filters']=_['intersection'](_0x8d43de[_0x49ae('0x3b')],_0x8d43de[_0x49ae('0x3c')]);_0x32bbf6[_0x49ae('0x3d')]=_[_0x49ae('0x3e')](_0x8d43de['model'],qs[_0x49ae('0x3f')](_0x535d0b['query'][_0x49ae('0x3f')]));_0x32bbf6[_0x49ae('0x3d')]=_0x32bbf6[_0x49ae('0x3d')]['length']?_0x32bbf6[_0x49ae('0x3d')]:_0x8d43de['model'];if(!_0x535d0b[_0x49ae('0x3c')][_0x49ae('0x40')](_0x49ae('0x41'))){_0x32bbf6[_0x49ae('0x29')]=qs['limit'](_0x535d0b[_0x49ae('0x3c')]['limit']);_0x32bbf6[_0x49ae('0x28')]=qs['offset'](_0x535d0b['query'][_0x49ae('0x28')]);}_0x32bbf6[_0x49ae('0x42')]=qs[_0x49ae('0x43')](_0x535d0b['query']['sort']);_0x32bbf6[_0x49ae('0x44')]=qs[_0x49ae('0x45')](_[_0x49ae('0x46')](_0x535d0b[_0x49ae('0x3c')],_0x8d43de['filters']),_0x531fcc);if(_0x535d0b[_0x49ae('0x3c')][_0x49ae('0x47')]){_0x32bbf6['where']=_[_0x49ae('0x48')](_0x32bbf6['where'],{'$or':_[_0x49ae('0x36')](_0x531fcc,function(_0x4a0fe5){if(_0x4a0fe5[_0x49ae('0x3a')]!==_0x49ae('0x49')){var _0x1cb3c8={};_0x1cb3c8[_0x4a0fe5['name']]={'$like':'%'+_0x535d0b['query'][_0x49ae('0x47')]+'%'};return _0x1cb3c8;}})});}_0x32bbf6=_[_0x49ae('0x48')]({},_0x32bbf6,_0x535d0b[_0x49ae('0x4a')]);var _0x5bc0a7={'where':_0x32bbf6['where']};return db['FaxMessage'][_0x49ae('0x2a')](_0x5bc0a7)[_0x49ae('0x2f')](function(_0x4fd3ab){_0x2a5c5f[_0x49ae('0x2a')]=_0x4fd3ab;if(_0x535d0b[_0x49ae('0x3c')][_0x49ae('0x4b')]){_0x32bbf6['include']=[{'all':!![]}];}return db[_0x49ae('0x37')]['findAll'](_0x32bbf6);})['then'](function(_0x1d7f65){_0x2a5c5f[_0x49ae('0x4c')]=_0x1d7f65;return _0x2a5c5f;})[_0x49ae('0x2f')](respondWithFilteredResult(_0x2d1c58,_0x32bbf6))[_0x49ae('0x26')](handleError(_0x2d1c58,null));};exports[_0x49ae('0x4d')]=function(_0x8185fd,_0x563222){var _0x38eb5a={'raw':!![],'where':{'id':_0x8185fd[_0x49ae('0x4e')]['id']}},_0x4e2f53={};_0x4e2f53['model']=_[_0x49ae('0x4f')](db['FaxMessage'][_0x49ae('0x38')]);_0x4e2f53[_0x49ae('0x3c')]=_['keys'](_0x8185fd[_0x49ae('0x3c')]);_0x4e2f53[_0x49ae('0x45')]=_[_0x49ae('0x3e')](_0x4e2f53[_0x49ae('0x3b')],_0x4e2f53[_0x49ae('0x3c')]);_0x38eb5a[_0x49ae('0x3d')]=_[_0x49ae('0x3e')](_0x4e2f53[_0x49ae('0x3b')],qs['fields'](_0x8185fd[_0x49ae('0x3c')]['fields']));_0x38eb5a[_0x49ae('0x3d')]=_0x38eb5a[_0x49ae('0x3d')][_0x49ae('0x50')]?_0x38eb5a[_0x49ae('0x3d')]:_0x4e2f53[_0x49ae('0x3b')];if(_0x8185fd[_0x49ae('0x3c')]['includeAll']){_0x38eb5a[_0x49ae('0x51')]=[{'all':!![]}];}_0x38eb5a=_[_0x49ae('0x48')]({},_0x38eb5a,_0x8185fd['options']);return db[_0x49ae('0x37')][_0x49ae('0x52')](_0x38eb5a)[_0x49ae('0x2f')](handleEntityNotFound(_0x563222,null))[_0x49ae('0x2f')](respondWithResult(_0x563222,null))[_0x49ae('0x26')](handleError(_0x563222,null));};exports[_0x49ae('0x53')]=function(_0x54a351,_0x382126){if(_0x54a351[_0x49ae('0x54')]['id']){delete _0x54a351[_0x49ae('0x54')]['id'];}return db['FaxMessage']['find']({'where':{'id':_0x54a351[_0x49ae('0x4e')]['id']}})['then'](handleEntityNotFound(_0x382126,null))['then'](saveUpdates(_0x54a351[_0x49ae('0x54')],null))[_0x49ae('0x2f')](respondWithResult(_0x382126,null))[_0x49ae('0x26')](handleError(_0x382126,null));};exports['destroy']=function(_0x269bc7,_0x31b7ee){return db[_0x49ae('0x37')][_0x49ae('0x52')]({'where':{'id':_0x269bc7['params']['id']}})[_0x49ae('0x2f')](handleEntityNotFound(_0x31b7ee,null))[_0x49ae('0x2f')](removeEntity(_0x31b7ee,null))[_0x49ae('0x26')](handleError(_0x31b7ee,null));};exports[_0x49ae('0x55')]=function(_0x363657,_0x27b8d5){return db[_0x49ae('0x37')][_0x49ae('0x55')]()[_0x49ae('0x2f')](respondWithResult(_0x27b8d5,null))[_0x49ae('0x26')](handleError(_0x27b8d5,null));};var interaction_log=require('../../config/logger')(_0x49ae('0x56'));exports[_0x49ae('0x57')]=function(_0xea0f3f,_0x30e704,_0x3ceaca){var _0x18a589={'agent':{},'channel':_0x49ae('0x58')};if(_0xea0f3f[_0x49ae('0x54')]['id']){delete _0xea0f3f[_0x49ae('0x54')]['id'];}_0xea0f3f[_0x49ae('0x54')][_0x49ae('0x59')]=!![];_0xea0f3f[_0x49ae('0x54')][_0x49ae('0x5a')]=moment()[_0x49ae('0x5b')]('YYYY-MM-DD\x20HH:mm:ss');_0xea0f3f['body'][_0x49ae('0x5c')]=_0xea0f3f[_0x49ae('0x54')][_0x49ae('0x5c')]||_0xea0f3f[_0x49ae('0x5d')]['id'];_0x18a589['agent']['id']=_0xea0f3f['body'][_0x49ae('0x5c')];return db[_0x49ae('0x37')][_0x49ae('0x52')]({'where':{'id':_0xea0f3f[_0x49ae('0x4e')]['id'],'UserId':null}})[_0x49ae('0x2f')](handleEntityNotFound(_0x30e704,null))['then'](saveUpdates(_0xea0f3f[_0x49ae('0x54')],null))['then'](function(_0x3d14b8){if(_0x3d14b8){_0x18a589[_0x49ae('0x24')]=_0x3d14b8[_0x49ae('0x5e')]({'plain':!![]});return db['FaxInteraction'][_0x49ae('0x52')]({'where':{'id':_0x3d14b8[_0x49ae('0x5f')]}});}return null;})['then'](handleEntityNotFound(_0x30e704,null))[_0x49ae('0x2f')](function(_0x4fc10c){if(_0x4fc10c){return _0x4fc10c[_0x49ae('0x53')]({'UserId':_0xea0f3f[_0x49ae('0x54')][_0x49ae('0x5c')],'read1stAt':_[_0x49ae('0x60')](_0x4fc10c['read1stAt'])?moment()[_0x49ae('0x5b')](_0x49ae('0x61')):undefined});}return null;})[_0x49ae('0x2f')](function(_0x3fdde1){if(_0x3fdde1){_0x18a589['interaction']=_0x3fdde1['get']({'plain':!![]});interaction_log['info'](_0x49ae('0x62'),_0xea0f3f[_0x49ae('0x5d')]['id'],_0xea0f3f['user'][_0x49ae('0x34')],_0xea0f3f[_0x49ae('0x5d')][_0x49ae('0x63')],_0x18a589[_0x49ae('0x64')]['id'],_0xea0f3f[_0x49ae('0x54')]?JSON[_0x49ae('0x21')](_0xea0f3f[_0x49ae('0x54')]):'null');return respondWithRpcPromise(_0x49ae('0x65'),'acceptMessage',_0x18a589);}return null;})[_0x49ae('0x2f')](function(_0x3b54e0){var _0x4c045a=_0x49ae('0x66')+_0x3b54e0[_0x49ae('0x24')][_0x49ae('0x67')];return db[_0x49ae('0x68')][_0x49ae('0x3c')](_0x4c045a,{'type':db[_0x49ae('0x69')][_0x49ae('0x6a')]['SELECT'],'raw':!![]})[_0x49ae('0x2f')](function(_0x42a590){return _0x42a590;});})[_0x49ae('0x2f')](function(_0x5ce3af){if(_0x5ce3af){_0x18a589['message'][_0x49ae('0x6b')]=_0x5ce3af[0x0];if(!_0xea0f3f[_0x49ae('0x54')]['UserId'])return;return db['User'][_0x49ae('0x52')]({'where':{'id':_0xea0f3f[_0x49ae('0x54')]['UserId'],'role':_0x49ae('0x6c')},'attributes':['id',_0x49ae('0x34'),_0x49ae('0x6d'),_0x49ae('0x6e'),'internal'],'raw':!![]});}return null;})[_0x49ae('0x2f')](function(_0x54c9be){if(!_0x54c9be)return null;_0x18a589[_0x49ae('0x24')][_0x49ae('0x6c')]=_0x54c9be;return _0x18a589;})[_0x49ae('0x2f')](function(_0x4d3314){if(_0x4d3314){if(_0xea0f3f['body'][_0x49ae('0x6f')]){_0x18a589[_0x49ae('0x24')][_0x49ae('0x70')]=util[_0x49ae('0x5b')](_0x49ae('0x71'),_0xea0f3f[_0x49ae('0x5d')]['name']);_0x18a589['message'][_0x49ae('0x72')]=_0x18a589[_0x49ae('0x72')];_0x18a589['message']['event']='accept';return respondWithRpcPromise(_0x49ae('0x73'),_0x49ae('0x73'),{'event':_0x49ae('0x74'),'message':_0x18a589[_0x49ae('0x24')]},client9002)[_0x49ae('0x2f')](function(){return _0x18a589;});}return _0x18a589;}return null;})[_0x49ae('0x2f')](respondWithResult(_0x30e704,null))[_0x49ae('0x26')](handleError(_0x30e704,null));};var interaction_log=require(_0x49ae('0x13'))('fax-interactions');exports['reject']=function(_0x538ae5,_0x2c11c4,_0x155658){var _0x5b6515={'agent':{},'channel':'fax'};if(_0x538ae5[_0x49ae('0x54')]['id']){delete _0x538ae5[_0x49ae('0x54')]['id'];}_0x538ae5['body']['UserId']=_0x538ae5['body'][_0x49ae('0x5c')]||_0x538ae5['user']['id'];_0x5b6515[_0x49ae('0x6c')]['id']=_0x538ae5['body'][_0x49ae('0x5c')];return db[_0x49ae('0x37')]['find']({'where':{'id':_0x538ae5[_0x49ae('0x4e')]['id'],'UserId':null}})[_0x49ae('0x2f')](handleEntityNotFound(_0x2c11c4,null))[_0x49ae('0x2f')](function(_0x162c20){if(_0x162c20){_0x5b6515[_0x49ae('0x24')]=_0x162c20[_0x49ae('0x5e')]({'plain':!![]});return db[_0x49ae('0x75')][_0x49ae('0x52')]({'where':{'id':_0x162c20[_0x49ae('0x5f')]}});}return null;})[_0x49ae('0x2f')](handleEntityNotFound(_0x2c11c4,null))[_0x49ae('0x2f')](function(_0x53263b){if(_0x53263b){_0x5b6515[_0x49ae('0x64')]=_0x53263b['get']({'plain':!![]});interaction_log['info'](_0x49ae('0x76'),_0x538ae5['user']['id'],_0x538ae5[_0x49ae('0x5d')][_0x49ae('0x34')],_0x538ae5[_0x49ae('0x5d')]['role'],_0x5b6515[_0x49ae('0x64')]['id'],_0x538ae5[_0x49ae('0x54')]?JSON[_0x49ae('0x21')](_0x538ae5[_0x49ae('0x54')]):_0x49ae('0x77'));return respondWithRpcPromise(_0x49ae('0x78'),_0x49ae('0x79'),_0x5b6515);}return null;})[_0x49ae('0x2f')](function(_0x3a179c){var _0x3a0fd4=_0x49ae('0x66')+_0x3a179c[_0x49ae('0x24')][_0x49ae('0x67')];return db['sequelize'][_0x49ae('0x3c')](_0x3a0fd4,{'type':db[_0x49ae('0x69')][_0x49ae('0x6a')]['SELECT'],'raw':!![]})[_0x49ae('0x2f')](function(_0x3e1116){return _0x3e1116;});})[_0x49ae('0x2f')](function(_0x275783){if(_0x275783){_0x5b6515[_0x49ae('0x24')][_0x49ae('0x6b')]=_0x275783[0x0];if(!_0x538ae5[_0x49ae('0x54')]['UserId'])return;return db[_0x49ae('0x7a')]['find']({'where':{'id':_0x538ae5[_0x49ae('0x54')][_0x49ae('0x5c')],'role':_0x49ae('0x6c')},'attributes':['id',_0x49ae('0x34'),_0x49ae('0x6d'),_0x49ae('0x6e'),'internal'],'raw':!![]});}return null;})['then'](function(_0x1e4c87){if(!_0x1e4c87)return null;_0x5b6515['message'][_0x49ae('0x6c')]=_0x1e4c87;return _0x5b6515;})[_0x49ae('0x2f')](function(_0x22e73e){if(_0x22e73e){_0x22e73e[_0x49ae('0x24')][_0x49ae('0x70')]=util[_0x49ae('0x5b')]('SIP/%s',_0x538ae5[_0x49ae('0x5d')][_0x49ae('0x34')]);_0x22e73e[_0x49ae('0x24')][_0x49ae('0x72')]=_0x5b6515[_0x49ae('0x72')];_0x22e73e[_0x49ae('0x24')]['event']='reject';respondWithRpcPromise('EventManager',_0x49ae('0x73'),{'event':'rejectmessage','message':_0x22e73e[_0x49ae('0x24')]},client9002);return _0x5b6515;}return null;})['then'](respondWithResult(_0x2c11c4,null))[_0x49ae('0x26')](handleError(_0x2c11c4,null));};exports[_0x49ae('0x7b')]=function(_0x1c8cae,_0x4aa1b0){var _0x1464d2;return db['FaxMessage'][_0x49ae('0x7b')](_0x1c8cae[_0x49ae('0x54')],{})[_0x49ae('0x2f')](function(_0x1d1e8a){_0x1464d2=_0x1d1e8a;return db['CmContact'][_0x49ae('0x7c')]({'where':{'id':_0x1464d2['ContactId']}});})[_0x49ae('0x2f')](function(_0x17879f){if(_[_0x49ae('0x60')](_0x17879f)){return;}else{_0x1464d2[_0x49ae('0x58')]=_0x17879f[_0x49ae('0x58')];return db['Attachment'][_0x49ae('0x7c')]({'where':{'id':_0x1464d2[_0x49ae('0x7d')]}});}})[_0x49ae('0x2f')](function(_0x1be596){return respondWithRpcPromise(_0x49ae('0x7e'),_0x49ae('0x7e'),{'FaxAccountId':_[_0x49ae('0x60')](_0x1c8cae['body'])?undefined:_0x1c8cae['body'][_0x49ae('0x7f')],'path':_[_0x49ae('0x60')](_0x1be596)?undefined:util['format'](_0x49ae('0x80'),_0x1be596[_0x49ae('0x81')]),'fax':_['isNil'](_0x1464d2['fax'])?undefined:_0x1464d2[_0x49ae('0x58')],'AttachmentId':_0x1464d2[_0x49ae('0x7d')]},client9002);})[_0x49ae('0x2f')](respondWithResult(_0x4aa1b0,0xc9))['catch'](handleError(_0x4aa1b0,null));};exports['download']=function(_0x4a1e83,_0x236b4c){var _0x32bf1b=path[_0x49ae('0x82')](config[_0x49ae('0x83')],'server',_0x49ae('0x84'),_0x49ae('0x85'));return db[_0x49ae('0x37')][_0x49ae('0x52')]({'where':{'id':_0x4a1e83['params']['id']},'include':[{'model':db['Attachment'],'as':_0x49ae('0x86')}]})[_0x49ae('0x2f')](handleEntityNotFound(_0x236b4c,null))[_0x49ae('0x2f')](function(_0x36ce84){if(_0x36ce84){return _0x236b4c[_0x49ae('0x87')](path[_0x49ae('0x82')](_0x32bf1b,_0x36ce84[_0x49ae('0x86')][_0x49ae('0x81')]));}})[_0x49ae('0x26')](handleError(_0x236b4c,null));};
\ No newline at end of file
index 91a34cd..11c506f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a44=['update','remove','emit','hasOwnProperty','events','FaxMessage','setMaxListeners','save'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0x1a44,0xc4));var _0x41a4=function(_0x4f69ec,_0x3c06ec){_0x4f69ec=_0x4f69ec-0x0;var _0x28d410=_0x1a44[_0x4f69ec];return _0x28d410;};'use strict';var EventEmitter=require(_0x41a4('0x0'));var FaxMessage=require('../../mysqldb')['db'][_0x41a4('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x41a4('0x2')](0x0);var events={'afterCreate':_0x41a4('0x3'),'afterUpdate':_0x41a4('0x4'),'afterDestroy':_0x41a4('0x5')};function emitEvent(_0x3c3c23){return function(_0x397cb2,_0x529244,_0x20ab2d){FaxMessageEvents[_0x41a4('0x6')](_0x3c3c23+':'+_0x397cb2['id'],_0x397cb2);FaxMessageEvents[_0x41a4('0x6')](_0x3c3c23,_0x397cb2);_0x20ab2d(null);};}for(var e in events){if(events[_0x41a4('0x7')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
+var _0xd7c3=['remove','hook','exports','events','../../mysqldb','FaxMessage','setMaxListeners','save','update'];(function(_0x2db63a,_0x52ee8e){var _0x556b91=function(_0x4ad3aa){while(--_0x4ad3aa){_0x2db63a['push'](_0x2db63a['shift']());}};_0x556b91(++_0x52ee8e);}(_0xd7c3,0x1c5));var _0x3d7c=function(_0x404da7,_0x5216db){_0x404da7=_0x404da7-0x0;var _0x14aced=_0xd7c3[_0x404da7];return _0x14aced;};'use strict';var EventEmitter=require(_0x3d7c('0x0'));var FaxMessage=require(_0x3d7c('0x1'))['db'][_0x3d7c('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x3d7c('0x3')](0x0);var events={'afterCreate':_0x3d7c('0x4'),'afterUpdate':_0x3d7c('0x5'),'afterDestroy':_0x3d7c('0x6')};function emitEvent(_0x17c96a){return function(_0x22396c,_0x538ca7,_0x2da8b6){FaxMessageEvents['emit'](_0x17c96a+':'+_0x22396c['id'],_0x22396c);FaxMessageEvents['emit'](_0x17c96a,_0x22396c);_0x2da8b6(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxMessage[_0x3d7c('0x7')](e,emitEvent(event));}}module[_0x3d7c('0x8')]=FaxMessageEvents;
\ No newline at end of file
index fb3fbf8..9a7d729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82b6=['util','moment','request-promise','path','./faxMessage.attributes','exports','define','fax_messages','fti_fax_messages','models','direction','toLowerCase','out','secret','UserId','FaxInteraction','findOne','catch','utf8mb4','lodash'];(function(_0xd5be13,_0x20b26b){var _0x425f04=function(_0x5b0071){while(--_0x5b0071){_0xd5be13['push'](_0xd5be13['shift']());}};_0x425f04(++_0x20b26b);}(_0x82b6,0x1cb));var _0x682b=function(_0x485c12,_0x63ee16){_0x485c12=_0x485c12-0x0;var _0x5c87ad=_0x82b6[_0x485c12];return _0x5c87ad;};'use strict';var _=require(_0x682b('0x0'));var util=require(_0x682b('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x682b('0x2'));var BPromise=require('bluebird');var rp=require(_0x682b('0x3'));var fs=require('fs');var path=require(_0x682b('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x682b('0x5'));module[_0x682b('0x6')]=function(_0xb74b59,_0x4d6990){return _0xb74b59[_0x682b('0x7')]('FaxMessage',attributes,{'tableName':_0x682b('0x8'),'paranoid':![],'indexes':[{'name':_0x682b('0x9'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x433799,_0x38e26e,_0x3a9bdb){var _0x3dc3a5=_0xb74b59[_0x682b('0xa')];var _0x1d02e5=_0x433799['get']({'plain':!![]});if(_0x1d02e5[_0x682b('0xb')][_0x682b('0xc')]()==='in'||_0x1d02e5[_0x682b('0xb')][_0x682b('0xc')]()===_0x682b('0xd')&&!_0x1d02e5[_0x682b('0xe')]&&!_['isNil'](_0x1d02e5[_0x682b('0xf')])){_0x3dc3a5[_0x682b('0x10')][_0x682b('0x11')]({'where':{'id':_0x1d02e5['FaxInteractionId']}})['then'](function(_0x56c6a5){if(_0x56c6a5){_0x56c6a5['update']({'lastMsgAt':_0x1d02e5['createdAt'],'lastMsgDirection':_0x1d02e5[_0x682b('0xb')][_0x682b('0xc')]()});}})[_0x682b('0x12')](function(_0x254713){console['error'](_0x254713);});}_0x3a9bdb();}},'charset':_0x682b('0x13'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x5f9f=['utf8mb4_unicode_ci','lodash','util','bluebird','request-promise','path','../../config/environment','./faxMessage.attributes','define','FaxMessage','fti_fax_messages','body','models','get','toLowerCase','isNil','UserId','FaxInteractionId','then','update','createdAt','direction','error','utf8mb4'];(function(_0x63aa4,_0x70d23f){var _0x316ad4=function(_0x4f1e54){while(--_0x4f1e54){_0x63aa4['push'](_0x63aa4['shift']());}};_0x316ad4(++_0x70d23f);}(_0x5f9f,0xc1));var _0xf5f9=function(_0x257642,_0x270a80){_0x257642=_0x257642-0x0;var _0x3d813b=_0x5f9f[_0x257642];return _0x3d813b;};'use strict';var _=require(_0xf5f9('0x0'));var util=require(_0xf5f9('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xf5f9('0x2'));var rp=require(_0xf5f9('0x3'));var fs=require('fs');var path=require(_0xf5f9('0x4'));var rimraf=require('rimraf');var config=require(_0xf5f9('0x5'));var attributes=require(_0xf5f9('0x6'));module['exports']=function(_0x437db0,_0x5e8ccc){return _0x437db0[_0xf5f9('0x7')](_0xf5f9('0x8'),attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':_0xf5f9('0x9'),'fields':[_0xf5f9('0xa')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x43ebd9,_0x4c8549,_0x4ee23c){var _0x409217=_0x437db0[_0xf5f9('0xb')];var _0x2fc6b2=_0x43ebd9[_0xf5f9('0xc')]({'plain':!![]});if(_0x2fc6b2['direction']['toLowerCase']()==='in'||_0x2fc6b2['direction'][_0xf5f9('0xd')]()==='out'&&!_0x2fc6b2['secret']&&!_[_0xf5f9('0xe')](_0x2fc6b2[_0xf5f9('0xf')])){_0x409217['FaxInteraction']['findOne']({'where':{'id':_0x2fc6b2[_0xf5f9('0x10')]}})[_0xf5f9('0x11')](function(_0x549db3){if(_0x549db3){_0x549db3[_0xf5f9('0x12')]({'lastMsgAt':_0x2fc6b2[_0xf5f9('0x13')],'lastMsgDirection':_0x2fc6b2[_0xf5f9('0x14')][_0xf5f9('0xd')]()});}})['catch'](function(_0x165737){console[_0xf5f9('0x15')](_0x165737);});}_0x4ee23c();}},'charset':_0xf5f9('0x16'),'collate':_0xf5f9('0x17')});};
\ No newline at end of file
index 260437d..6893ca0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14d=['code','message','result','catch','FaxMessage','create','body','options','raw','CreateFaxMessage','UpdateFaxMessage','update','attributes','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./faxMessage.socket','register','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x55c194,_0x53de54){var _0x42e7ab=function(_0x3dccbf){while(--_0x3dccbf){_0x55c194['push'](_0x55c194['shift']());}};_0x42e7ab(++_0x53de54);}(_0xe14d,0x1ee));var _0xde14=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0xe14d[_0x550d12];return _0x12103d;};'use strict';var _=require(_0xde14('0x0'));var util=require(_0xde14('0x1'));var moment=require(_0xde14('0x2'));var BPromise=require(_0xde14('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xde14('0x4'));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')][_0xde14('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0xde14('0xc')],{'host':_0xde14('0xd'),'port':0x18eb});var socket=require(_0xde14('0xe'))(new Redis(config[_0xde14('0xc')]));require(_0xde14('0xf'))[_0xde14('0x10')](socket);function respondWithRpcPromise(_0xa17e8,_0x1ce0a2,_0x4b2b15){return new BPromise(function(_0x1a7167,_0xe785fb){return client[_0xde14('0x11')](_0xa17e8,_0x4b2b15)[_0xde14('0x12')](function(_0x8e0e){logger[_0xde14('0x13')](_0xde14('0x14'),_0x1ce0a2,_0xde14('0x15'));logger[_0xde14('0x16')](_0xde14('0x17'),_0x1ce0a2,_0xde14('0x15'),JSON[_0xde14('0x18')](_0x8e0e));if(_0x8e0e[_0xde14('0x19')]){if(_0x8e0e[_0xde14('0x19')][_0xde14('0x1a')]===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0x1ce0a2,_0x8e0e[_0xde14('0x19')][_0xde14('0x1b')]);return _0xe785fb(_0x8e0e[_0xde14('0x19')]['message']);}logger[_0xde14('0x19')](_0xde14('0x14'),_0x1ce0a2,_0x8e0e[_0xde14('0x19')][_0xde14('0x1b')]);return _0x1a7167(_0x8e0e[_0xde14('0x19')][_0xde14('0x1b')]);}else{logger[_0xde14('0x13')](_0xde14('0x14'),_0x1ce0a2,_0xde14('0x15'));_0x1a7167(_0x8e0e[_0xde14('0x1c')]['message']);}})[_0xde14('0x1d')](function(_0x3bfc59){logger[_0xde14('0x19')](_0xde14('0x14'),_0x1ce0a2,_0x3bfc59);_0xe785fb(_0x3bfc59);});});}exports['CreateFaxMessage']=function(_0x394de7){var _0x53e905=this;return new Promise(function(_0x45d101,_0x4c24a8){return db[_0xde14('0x1e')][_0xde14('0x1f')](_0x394de7[_0xde14('0x20')],{'raw':_0x394de7[_0xde14('0x21')]?_0x394de7[_0xde14('0x21')][_0xde14('0x22')]===undefined?!![]:![]:!![]})[_0xde14('0x12')](function(_0x2dd9e7){logger[_0xde14('0x13')](_0xde14('0x23'),_0x394de7);logger[_0xde14('0x16')](_0xde14('0x23'),_0x394de7,JSON[_0xde14('0x18')](_0x2dd9e7));_0x45d101(_0x2dd9e7);})['catch'](function(_0x42dd4f){logger[_0xde14('0x19')](_0xde14('0x23'),_0x42dd4f[_0xde14('0x1b')],_0x394de7);_0x4c24a8(_0x53e905[_0xde14('0x19')](0x1f4,_0x42dd4f[_0xde14('0x1b')]));});});};exports[_0xde14('0x24')]=function(_0x23c735){var _0x1618e1=this;return new Promise(function(_0x350a78,_0x4eff65){return db[_0xde14('0x1e')][_0xde14('0x25')](_0x23c735[_0xde14('0x20')],{'raw':_0x23c735[_0xde14('0x21')]?_0x23c735['options'][_0xde14('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23c735[_0xde14('0x21')]?_0x23c735[_0xde14('0x21')]['where']||null:null,'attributes':_0x23c735[_0xde14('0x21')]?_0x23c735['options'][_0xde14('0x26')]||null:null,'limit':_0x23c735[_0xde14('0x21')]?_0x23c735[_0xde14('0x21')][_0xde14('0x27')]||null:null})[_0xde14('0x12')](function(_0x237d3f){logger[_0xde14('0x13')](_0xde14('0x24'),_0x23c735);logger['debug'](_0xde14('0x24'),_0x23c735,JSON[_0xde14('0x18')](_0x237d3f));_0x350a78(_0x237d3f);})['catch'](function(_0xf25a9e){logger['error'](_0xde14('0x24'),_0xf25a9e[_0xde14('0x1b')],_0x23c735);_0x4eff65(_0x1618e1[_0xde14('0x19')](0x1f4,_0xf25a9e[_0xde14('0x1b')]));});});};
\ No newline at end of file
+var _0x8d0e=['http','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','error','message','result','catch','CreateFaxMessage','FaxMessage','create','body','options','raw','debug','UpdateFaxMessage','update','where','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x2f6167,_0x194b1b){var _0x51ed92=function(_0x43eb08){while(--_0x43eb08){_0x2f6167['push'](_0x2f6167['shift']());}};_0x51ed92(++_0x194b1b);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x2ece02,_0x339c51){_0x2ece02=_0x2ece02-0x0;var _0x4c2a3c=_0x8d0e[_0x2ece02];return _0x4c2a3c;};'use strict';var _=require(_0xe8d0('0x0'));var util=require(_0xe8d0('0x1'));var moment=require(_0xe8d0('0x2'));var BPromise=require(_0xe8d0('0x3'));var rs=require(_0xe8d0('0x4'));var fs=require('fs');var Redis=require(_0xe8d0('0x5'));var db=require(_0xe8d0('0x6'))['db'];var utils=require(_0xe8d0('0x7'));var logger=require(_0xe8d0('0x8'))('rpc');var config=require(_0xe8d0('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe8d0('0xa')]({'port':0x232a});config[_0xe8d0('0xb')]=_[_0xe8d0('0xc')](config[_0xe8d0('0xb')],{'host':_0xe8d0('0xd'),'port':0x18eb});var socket=require(_0xe8d0('0xe'))(new Redis(config[_0xe8d0('0xb')]));require(_0xe8d0('0xf'))['register'](socket);function respondWithRpcPromise(_0x10e56c,_0x19c3d0,_0x463159){return new BPromise(function(_0x599bc3,_0x580aab){return client[_0xe8d0('0x10')](_0x10e56c,_0x463159)[_0xe8d0('0x11')](function(_0x3da047){logger[_0xe8d0('0x12')](_0xe8d0('0x13'),_0x19c3d0,_0xe8d0('0x14'));logger['debug'](_0xe8d0('0x15'),_0x19c3d0,_0xe8d0('0x14'),JSON['stringify'](_0x3da047));if(_0x3da047[_0xe8d0('0x16')]){if(_0x3da047['error']['code']===0x1f4){logger[_0xe8d0('0x16')](_0xe8d0('0x13'),_0x19c3d0,_0x3da047[_0xe8d0('0x16')][_0xe8d0('0x17')]);return _0x580aab(_0x3da047[_0xe8d0('0x16')][_0xe8d0('0x17')]);}logger['error'](_0xe8d0('0x13'),_0x19c3d0,_0x3da047['error'][_0xe8d0('0x17')]);return _0x599bc3(_0x3da047[_0xe8d0('0x16')][_0xe8d0('0x17')]);}else{logger['info']('FaxMessage,\x20%s,\x20%s',_0x19c3d0,'request\x20sent');_0x599bc3(_0x3da047[_0xe8d0('0x18')][_0xe8d0('0x17')]);}})[_0xe8d0('0x19')](function(_0x44bbe4){logger[_0xe8d0('0x16')]('FaxMessage,\x20%s,\x20%s',_0x19c3d0,_0x44bbe4);_0x580aab(_0x44bbe4);});});}exports[_0xe8d0('0x1a')]=function(_0x12ebf4){var _0x524b00=this;return new Promise(function(_0x5ce284,_0x554402){return db[_0xe8d0('0x1b')][_0xe8d0('0x1c')](_0x12ebf4[_0xe8d0('0x1d')],{'raw':_0x12ebf4[_0xe8d0('0x1e')]?_0x12ebf4[_0xe8d0('0x1e')][_0xe8d0('0x1f')]===undefined?!![]:![]:!![]})[_0xe8d0('0x11')](function(_0x28a6b5){logger[_0xe8d0('0x12')]('CreateFaxMessage',_0x12ebf4);logger[_0xe8d0('0x20')](_0xe8d0('0x1a'),_0x12ebf4,JSON['stringify'](_0x28a6b5));_0x5ce284(_0x28a6b5);})[_0xe8d0('0x19')](function(_0x2e69d1){logger[_0xe8d0('0x16')](_0xe8d0('0x1a'),_0x2e69d1[_0xe8d0('0x17')],_0x12ebf4);_0x554402(_0x524b00[_0xe8d0('0x16')](0x1f4,_0x2e69d1[_0xe8d0('0x17')]));});});};exports[_0xe8d0('0x21')]=function(_0xfa3527){var _0x2dee67=this;return new Promise(function(_0x264de4,_0x539548){return db[_0xe8d0('0x1b')][_0xe8d0('0x22')](_0xfa3527[_0xe8d0('0x1d')],{'raw':_0xfa3527['options']?_0xfa3527[_0xe8d0('0x1e')][_0xe8d0('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xfa3527['options']?_0xfa3527[_0xe8d0('0x1e')][_0xe8d0('0x23')]||null:null,'attributes':_0xfa3527[_0xe8d0('0x1e')]?_0xfa3527[_0xe8d0('0x1e')][_0xe8d0('0x24')]||null:null,'limit':_0xfa3527['options']?_0xfa3527[_0xe8d0('0x1e')]['limit']||null:null})['then'](function(_0x50ad3c){logger[_0xe8d0('0x12')](_0xe8d0('0x21'),_0xfa3527);logger[_0xe8d0('0x20')]('UpdateFaxMessage',_0xfa3527,JSON['stringify'](_0x50ad3c));_0x264de4(_0x50ad3c);})[_0xe8d0('0x19')](function(_0x551999){logger[_0xe8d0('0x16')](_0xe8d0('0x21'),_0x551999[_0xe8d0('0x17')],_0xfa3527);_0x539548(_0x2dee67[_0xe8d0('0x16')](0x1f4,_0x551999[_0xe8d0('0x17')]));});});};
\ No newline at end of file
index bcee954..2779299 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd706=['length','faxMessage:','./faxMessage.events','save','remove','update','removeListener','register'];(function(_0x32b993,_0x1c5989){var _0x482780=function(_0x404179){while(--_0x404179){_0x32b993['push'](_0x32b993['shift']());}};_0x482780(++_0x1c5989);}(_0xd706,0x7a));var _0x6d70=function(_0x49070d,_0x127558){_0x49070d=_0x49070d-0x0;var _0x34321c=_0xd706[_0x49070d];return _0x34321c;};'use strict';var FaxMessageEvents=require(_0x6d70('0x0'));var events=[_0x6d70('0x1'),_0x6d70('0x2'),_0x6d70('0x3')];function createListener(_0x346505,_0x664970){return function(_0x4e833d){_0x664970['emit'](_0x346505,_0x4e833d);};}function removeListener(_0x57abac,_0x4007c3){return function(){FaxMessageEvents[_0x6d70('0x4')](_0x57abac,_0x4007c3);};}exports[_0x6d70('0x5')]=function(_0xb2b510){for(var _0x47c385=0x0,_0x3d2587=events[_0x6d70('0x6')];_0x47c385<_0x3d2587;_0x47c385++){var _0x155ee5=events[_0x47c385];var _0x582470=createListener(_0x6d70('0x7')+_0x155ee5,_0xb2b510);FaxMessageEvents['on'](_0x155ee5,_0x582470);}};
\ No newline at end of file
+var _0xdc5c=['update','emit','removeListener','register'];(function(_0x71552e,_0xe5ae5b){var _0x4784ac=function(_0x12c67e){while(--_0x12c67e){_0x71552e['push'](_0x71552e['shift']());}};_0x4784ac(++_0xe5ae5b);}(_0xdc5c,0x1a8));var _0xcdc5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdc5c[_0x3dd15e];return _0x231fd0;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=['save','remove',_0xcdc5('0x0')];function createListener(_0x4d3753,_0x438c8e){return function(_0x586332){_0x438c8e[_0xcdc5('0x1')](_0x4d3753,_0x586332);};}function removeListener(_0x40bd4f,_0x41fc55){return function(){FaxMessageEvents[_0xcdc5('0x2')](_0x40bd4f,_0x41fc55);};}exports[_0xcdc5('0x3')]=function(_0x4f248d){for(var _0x38949=0x0,_0x18d1ff=events['length'];_0x38949<_0x18d1ff;_0x38949++){var _0x5aa720=events[_0x38949];var _0xe3f0a6=createListener('faxMessage:'+_0x5aa720,_0x4f248d);FaxMessageEvents['on'](_0x5aa720,_0xe3f0a6);}};
\ No newline at end of file
index 2a421e8..bd1d6e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['/:id/reject','reject','destroy','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','index','/describe','show','/:id/download','isAuthenticated','download','post','create','put','/:id','update','accept'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'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('0xf')]('/',auth['isAuthenticated'](),interaction['tracked']('fax','faxmessage:create'),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x11')]('/:id/accept',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);router[_0x0a9e('0x11')](_0x0a9e('0x15'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x16')]);router['delete'](_0x0a9e('0x12'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0xb9a7=['faxmessage:create','create','put','update','/:id/accept','/:id/reject','reject','delete','destroy','exports','util','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','/:id','/:id/download','post','tracked'];(function(_0xbc68d3,_0x2896da){var _0xe9ac26=function(_0x30b87c){while(--_0x30b87c){_0xbc68d3['push'](_0xbc68d3['shift']());}};_0xe9ac26(++_0x2896da);}(_0xb9a7,0x112));var _0x7b9a=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xb9a7[_0xa148b7];return _0x51efd3;};'use strict';var multer=require('multer');var util=require(_0x7b9a('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7b9a('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x7b9a('0x2'));var interaction=require(_0x7b9a('0x3'));var config=require(_0x7b9a('0x4'));var controller=require(_0x7b9a('0x5'));router[_0x7b9a('0x6')]('/',auth[_0x7b9a('0x7')](),controller[_0x7b9a('0x8')]);router[_0x7b9a('0x6')](_0x7b9a('0x9'),auth[_0x7b9a('0x7')](),controller['describe']);router[_0x7b9a('0x6')](_0x7b9a('0xa'),auth['isAuthenticated'](),controller['show']);router['get'](_0x7b9a('0xb'),auth[_0x7b9a('0x7')](),controller['download']);router[_0x7b9a('0xc')]('/',auth['isAuthenticated'](),interaction[_0x7b9a('0xd')]('fax',_0x7b9a('0xe')),controller[_0x7b9a('0xf')]);router[_0x7b9a('0x10')]('/:id',auth[_0x7b9a('0x7')](),controller[_0x7b9a('0x11')]);router['put'](_0x7b9a('0x12'),auth[_0x7b9a('0x7')](),controller['accept']);router[_0x7b9a('0x10')](_0x7b9a('0x13'),auth[_0x7b9a('0x7')](),controller[_0x7b9a('0x14')]);router[_0x7b9a('0x15')](_0x7b9a('0xa'),auth[_0x7b9a('0x7')](),controller[_0x7b9a('0x16')]);module[_0x7b9a('0x17')]=router;
\ No newline at end of file
index affe794..18f3263 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e3f=['INTEGER','ENUM','beepall','roundrobin','sequelize','exports','STRING'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8e3f,0xc1));var _0xf8e3=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x8e3f[_0x40a045];return _0x1a687c;};'use strict';var Sequelize=require(_0xf8e3('0x0'));module[_0xf8e3('0x1')]={'name':{'type':Sequelize[_0xf8e3('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xf8e3('0x2')]},'timeout':{'type':Sequelize[_0xf8e3('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xf8e3('0x4')]('rrmemory',_0xf8e3('0x5'),_0xf8e3('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe58e=['STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x352c94,_0x31acf5){var _0x1d0584=function(_0xd37dfc){while(--_0xd37dfc){_0x352c94['push'](_0x352c94['shift']());}};_0x1d0584(++_0x31acf5);}(_0xe58e,0x10e));var _0xee58=function(_0x29092d,_0x214c46){_0x29092d=_0x29092d-0x0;var _0x2c4235=_0xe58e[_0x29092d];return _0x2c4235;};'use strict';var Sequelize=require(_0xee58('0x0'));module[_0xee58('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xee58('0x2')]},'timeout':{'type':Sequelize[_0xee58('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xee58('0x4')](_0xee58('0x5'),_0xee58('0x6'),_0xee58('0x7')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xee58('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 620caad..87b91ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7da6=['stack','name','send','index','fieldName','type','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','FaxQueue','findAll','rows','params','rawAttributes','fields','find','catch','create','body','user','role','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','UserFaxQueue','FaxQueueId','filter','User','findAndCountAll','UserId','agent','updatedAt','%s/%s','SIP','faxPause','createdAt','getTeams','Team','addTeams','Agents','online','voicePause','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','ids','select','field','tq.TeamId','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','SELECT','every','includes','union','value','removeTeams','isEmpty','userFaxQueue:remove','spread','removeAgents','isArray','getAgents','findOne','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','status','end','json','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','sendStatus','error'];(function(_0x15a7a7,_0xf47dca){var _0x57a36b=function(_0x4abc5a){while(--_0x4abc5a){_0x15a7a7['push'](_0x15a7a7['shift']());}};_0x57a36b(++_0xf47dca);}(_0x7da6,0x1f3));var _0x67da=function(_0x109dbd,_0x290d2b){_0x109dbd=_0x109dbd-0x0;var _0x395644=_0x7da6[_0x109dbd];return _0x395644;};'use strict';var emlformat=require(_0x67da('0x0'));var rimraf=require(_0x67da('0x1'));var zipdir=require(_0x67da('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x67da('0x3'));var BPromise=require(_0x67da('0x4'));var Mustache=require(_0x67da('0x5'));var util=require('util');var path=require(_0x67da('0x6'));var sox=require('sox');var csv=require(_0x67da('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x67da('0x8'));var _=require(_0x67da('0x9'));var squel=require(_0x67da('0xa'));var crypto=require(_0x67da('0xb'));var jsforce=require(_0x67da('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x67da('0xd'));var Papa=require(_0x67da('0xe'));var Redis=require(_0x67da('0xf'));var authService=require(_0x67da('0x10'));var qs=require(_0x67da('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x67da('0x12'));var logger=require('../../config/logger')(_0x67da('0x13'));var utils=require(_0x67da('0x14'));var config=require(_0x67da('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x67da('0x16'))['db'];config[_0x67da('0x17')]=_[_0x67da('0x18')](config[_0x67da('0x17')],{'host':_0x67da('0x19'),'port':0x18eb});var socket=require(_0x67da('0x1a'))(new Redis(config[_0x67da('0x17')]));require(_0x67da('0x1b'))['register'](socket);function respondWithStatusCode(_0x89c44e,_0x3d39af){_0x3d39af=_0x3d39af||0xcc;return function(_0x1b0d88){if(_0x1b0d88){return _0x89c44e['sendStatus'](_0x3d39af);}return _0x89c44e[_0x67da('0x1c')](_0x3d39af)[_0x67da('0x1d')]();};}function respondWithResult(_0x5d6915,_0x53bb03){_0x53bb03=_0x53bb03||0xc8;return function(_0x4afe7a){if(_0x4afe7a){return _0x5d6915[_0x67da('0x1c')](_0x53bb03)[_0x67da('0x1e')](_0x4afe7a);}};}function respondWithFilteredResult(_0x3f771d,_0x3c3674){return function(_0x10fde7){if(_0x10fde7){var _0x4c90b8=typeof _0x3c3674['offset']===_0x67da('0x1f')&&typeof _0x3c3674['limit']===_0x67da('0x1f');var _0x14144d=_0x10fde7[_0x67da('0x20')];var _0x5ef16c=_0x4c90b8?0x0:_0x3c3674['offset'];var _0x4d60a1=_0x4c90b8?_0x10fde7[_0x67da('0x20')]:_0x3c3674['offset']+_0x3c3674[_0x67da('0x21')];var _0x30ff6f;if(_0x4d60a1>=_0x14144d){_0x4d60a1=_0x14144d;_0x30ff6f=0xc8;}else{_0x30ff6f=0xce;}_0x3f771d[_0x67da('0x1c')](_0x30ff6f);return _0x3f771d[_0x67da('0x22')](_0x67da('0x23'),_0x5ef16c+'-'+_0x4d60a1+'/'+_0x14144d)['json'](_0x10fde7);}return null;};}function patchUpdates(_0x231299){return function(_0x112546){try{jsonpatch[_0x67da('0x24')](_0x112546,_0x231299,!![]);}catch(_0x461e56){return BPromise[_0x67da('0x25')](_0x461e56);}return _0x112546[_0x67da('0x26')]();};}function saveUpdates(_0x5b36d9,_0x287800){return function(_0x35b4c6){if(_0x35b4c6){return _0x35b4c6[_0x67da('0x27')](_0x5b36d9)[_0x67da('0x28')](function(_0x3c70be){return _0x3c70be;});}return null;};}function removeEntity(_0x6e8a62,_0xcaf0b8){return function(_0xcf777c){if(_0xcf777c){return _0xcf777c[_0x67da('0x29')]()['then'](function(){var _0x3a9394=_0xcf777c[_0x67da('0x2a')]({'plain':!![]});var _0x24413b='FaxQueues';return db['UserProfileResource'][_0x67da('0x29')]({'where':{'type':_0x24413b,'resourceId':_0x3a9394['id']}})[_0x67da('0x28')](function(){return _0xcf777c;});})[_0x67da('0x28')](function(){_0x6e8a62[_0x67da('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x17ac3c,_0x2a2bb8){return function(_0x415f8d){if(!_0x415f8d){_0x17ac3c[_0x67da('0x2b')](0x194);}return _0x415f8d;};}function handleError(_0xc23921,_0x404fe3){_0x404fe3=_0x404fe3||0x1f4;return function(_0x3110f8){logger[_0x67da('0x2c')](_0x3110f8[_0x67da('0x2d')]);if(_0x3110f8[_0x67da('0x2e')]){delete _0x3110f8[_0x67da('0x2e')];}_0xc23921['status'](_0x404fe3)[_0x67da('0x2f')](_0x3110f8);};}exports[_0x67da('0x30')]=function(_0x30bfef,_0x1ee914){var _0x462973={},_0x5c986d={},_0x19d410={'count':0x0,'rows':[]};var _0x52fe36=_['map'](db['FaxQueue']['rawAttributes'],function(_0x25e8d8){return{'name':_0x25e8d8[_0x67da('0x31')],'type':_0x25e8d8[_0x67da('0x32')]['key']};});_0x5c986d[_0x67da('0x33')]=_[_0x67da('0x34')](_0x52fe36,'name');_0x5c986d[_0x67da('0x35')]=_[_0x67da('0x36')](_0x30bfef[_0x67da('0x35')]);_0x5c986d[_0x67da('0x37')]=_['intersection'](_0x5c986d['model'],_0x5c986d['query']);_0x462973['attributes']=_[_0x67da('0x38')](_0x5c986d[_0x67da('0x33')],qs['fields'](_0x30bfef['query']['fields']));_0x462973[_0x67da('0x39')]=_0x462973[_0x67da('0x39')][_0x67da('0x3a')]?_0x462973['attributes']:_0x5c986d[_0x67da('0x33')];if(!_0x30bfef['query'][_0x67da('0x3b')](_0x67da('0x3c'))){_0x462973[_0x67da('0x21')]=qs['limit'](_0x30bfef[_0x67da('0x35')]['limit']);_0x462973[_0x67da('0x3d')]=qs['offset'](_0x30bfef[_0x67da('0x35')]['offset']);}_0x462973[_0x67da('0x3e')]=qs['sort'](_0x30bfef[_0x67da('0x35')][_0x67da('0x3f')]);_0x462973[_0x67da('0x40')]=qs[_0x67da('0x37')](_[_0x67da('0x41')](_0x30bfef[_0x67da('0x35')],_0x5c986d[_0x67da('0x37')]),_0x52fe36);if(_0x30bfef[_0x67da('0x35')]['filter']){_0x462973['where']=_[_0x67da('0x42')](_0x462973['where'],{'$or':_[_0x67da('0x34')](_0x52fe36,function(_0x3886d4){if(_0x3886d4[_0x67da('0x32')]!==_0x67da('0x43')){var _0x4bd86a={};_0x4bd86a[_0x3886d4['name']]={'$like':'%'+_0x30bfef[_0x67da('0x35')]['filter']+'%'};return _0x4bd86a;}})});}_0x462973=_[_0x67da('0x42')]({},_0x462973,_0x30bfef[_0x67da('0x44')]);var _0x42660d={'where':_0x462973[_0x67da('0x40')]};return db['FaxQueue'][_0x67da('0x20')](_0x42660d)[_0x67da('0x28')](function(_0x5d4176){_0x19d410['count']=_0x5d4176;if(_0x30bfef[_0x67da('0x35')][_0x67da('0x45')]){_0x462973[_0x67da('0x46')]=[{'all':!![]}];}return db[_0x67da('0x47')][_0x67da('0x48')](_0x462973);})[_0x67da('0x28')](function(_0x3beb5d){_0x19d410[_0x67da('0x49')]=_0x3beb5d;return _0x19d410;})[_0x67da('0x28')](respondWithFilteredResult(_0x1ee914,_0x462973))['catch'](handleError(_0x1ee914,null));};exports['show']=function(_0x450d8d,_0x257a15){var _0xece039={'raw':!![],'where':{'id':_0x450d8d[_0x67da('0x4a')]['id']}},_0x48b56f={};_0x48b56f[_0x67da('0x33')]=_[_0x67da('0x36')](db[_0x67da('0x47')][_0x67da('0x4b')]);_0x48b56f[_0x67da('0x35')]=_[_0x67da('0x36')](_0x450d8d[_0x67da('0x35')]);_0x48b56f['filters']=_[_0x67da('0x38')](_0x48b56f[_0x67da('0x33')],_0x48b56f[_0x67da('0x35')]);_0xece039[_0x67da('0x39')]=_[_0x67da('0x38')](_0x48b56f[_0x67da('0x33')],qs[_0x67da('0x4c')](_0x450d8d[_0x67da('0x35')][_0x67da('0x4c')]));_0xece039[_0x67da('0x39')]=_0xece039[_0x67da('0x39')][_0x67da('0x3a')]?_0xece039[_0x67da('0x39')]:_0x48b56f[_0x67da('0x33')];if(_0x450d8d[_0x67da('0x35')][_0x67da('0x45')]){_0xece039[_0x67da('0x46')]=[{'all':!![]}];}_0xece039=_['merge']({},_0xece039,_0x450d8d['options']);return db[_0x67da('0x47')][_0x67da('0x4d')](_0xece039)[_0x67da('0x28')](handleEntityNotFound(_0x257a15,null))['then'](respondWithResult(_0x257a15,null))[_0x67da('0x4e')](handleError(_0x257a15,null));};exports[_0x67da('0x4f')]=function(_0x1d1491,_0x3b3388){return db[_0x67da('0x47')]['create'](_0x1d1491[_0x67da('0x50')],{})['then'](function(_0x1d25ab){var _0xb396a5=_0x1d1491[_0x67da('0x51')][_0x67da('0x2a')]({'plain':!![]});if(!_0xb396a5)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xb396a5[_0x67da('0x52')]==='user'){var _0x1db671=_0x1d25ab[_0x67da('0x2a')]({'plain':!![]});var _0x395e93='FaxQueues';return db['UserProfileSection'][_0x67da('0x4d')]({'where':{'name':_0x395e93,'userProfileId':_0xb396a5['userProfileId']},'raw':!![]})[_0x67da('0x28')](function(_0x528ecb){if(_0x528ecb&&_0x528ecb['autoAssociation']===0x0){return db[_0x67da('0x53')]['create']({'name':_0x1db671['name'],'resourceId':_0x1db671['id'],'type':_0x528ecb[_0x67da('0x2e')],'sectionId':_0x528ecb['id']},{})[_0x67da('0x28')](function(){return _0x1d25ab;});}else{return _0x1d25ab;}})[_0x67da('0x4e')](function(_0x21206f){logger['error'](_0x67da('0x54'),_0x21206f);throw _0x21206f;});}return _0x1d25ab;})[_0x67da('0x28')](respondWithResult(_0x3b3388,0xc9))['catch'](handleError(_0x3b3388,null));};exports[_0x67da('0x27')]=function(_0x56e4b3,_0x485cd0){if(_0x56e4b3['body']['id']){delete _0x56e4b3[_0x67da('0x50')]['id'];}return db[_0x67da('0x47')]['find']({'where':{'id':_0x56e4b3[_0x67da('0x4a')]['id']}})[_0x67da('0x28')](handleEntityNotFound(_0x485cd0,null))[_0x67da('0x28')](saveUpdates(_0x56e4b3['body'],null))[_0x67da('0x28')](respondWithResult(_0x485cd0,null))[_0x67da('0x4e')](handleError(_0x485cd0,null));};exports['destroy']=function(_0x5cb813,_0x5e4be4){return db['FaxQueue']['find']({'where':{'id':_0x5cb813[_0x67da('0x4a')]['id']}})[_0x67da('0x28')](handleEntityNotFound(_0x5e4be4,null))[_0x67da('0x28')](removeEntity(_0x5e4be4,null))['catch'](handleError(_0x5e4be4,null));};exports[_0x67da('0x55')]=function(_0x54bb99,_0x4d97b3){return db[_0x67da('0x47')][_0x67da('0x55')]()[_0x67da('0x28')](respondWithResult(_0x4d97b3,null))[_0x67da('0x4e')](handleError(_0x4d97b3,null));};exports['getMembers']=function(_0x30aefc,_0x58de0e,_0x1a93e4){var _0x23708c={'raw':!![],'where':{}},_0x52f5fb={},_0x7036f;return db['FaxQueue']['findOne']({'where':{'id':_0x30aefc[_0x67da('0x4a')]['id']}})[_0x67da('0x28')](handleEntityNotFound(_0x58de0e,null))[_0x67da('0x28')](function(_0x23c33a){if(_0x23c33a){_0x7036f=_0x23c33a['get']({'plain':!![]});_0x52f5fb[_0x67da('0x33')]=_[_0x67da('0x36')](db[_0x67da('0x56')][_0x67da('0x4b')]);_0x52f5fb[_0x67da('0x35')]=_[_0x67da('0x36')](_0x30aefc[_0x67da('0x35')]);_0x52f5fb['filters']=_[_0x67da('0x38')](_0x52f5fb[_0x67da('0x33')],_0x52f5fb[_0x67da('0x35')]);_0x23708c[_0x67da('0x39')]=_['intersection'](_0x52f5fb[_0x67da('0x33')],qs[_0x67da('0x4c')](_0x30aefc['query'][_0x67da('0x4c')]));_0x23708c[_0x67da('0x39')]=_0x23708c['attributes'][_0x67da('0x3a')]?_0x23708c[_0x67da('0x39')]:_0x52f5fb[_0x67da('0x33')];if(!_0x30aefc[_0x67da('0x35')][_0x67da('0x3b')](_0x67da('0x3c'))){_0x23708c['limit']=qs['limit'](_0x30aefc[_0x67da('0x35')][_0x67da('0x21')]);_0x23708c[_0x67da('0x3d')]=qs[_0x67da('0x3d')](_0x30aefc[_0x67da('0x35')]['offset']);}_0x23708c[_0x67da('0x3e')]=qs[_0x67da('0x3f')](_0x30aefc[_0x67da('0x35')]['sort']);_0x23708c[_0x67da('0x40')]=qs[_0x67da('0x37')](_[_0x67da('0x41')](_0x30aefc[_0x67da('0x35')],_0x52f5fb[_0x67da('0x37')]));_0x23708c[_0x67da('0x40')][_0x67da('0x57')]=_0x23c33a['id'];if(_0x30aefc[_0x67da('0x35')][_0x67da('0x58')]){_0x23708c[_0x67da('0x40')]=_[_0x67da('0x42')](_0x23708c[_0x67da('0x40')],{'$or':_[_0x67da('0x34')](_0x23708c[_0x67da('0x39')],function(_0x2d9fd8){var _0x9d5819={};_0x9d5819[_0x2d9fd8]={'$like':'%'+_0x30aefc[_0x67da('0x35')][_0x67da('0x58')]+'%'};return _0x9d5819;})});}_0x23708c=_[_0x67da('0x42')]({},_0x23708c,_0x30aefc[_0x67da('0x44')]);return db[_0x67da('0x56')][_0x67da('0x48')](_0x23708c);}})[_0x67da('0x28')](function(_0x5ed6b0){if(_0x5ed6b0){return db[_0x67da('0x59')][_0x67da('0x5a')]({'where':{'id':_[_0x67da('0x34')](_0x5ed6b0,_0x67da('0x5b')),'role':_0x67da('0x5c')},'attributes':['id','name','faxPause',_0x67da('0x5d'),'createdAt']});}})[_0x67da('0x28')](function(_0x119e6e){if(_0x119e6e){return{'count':_0x119e6e[_0x67da('0x20')],'rows':_['map'](_0x119e6e[_0x67da('0x49')],function(_0x33a5fc){return{'membername':_0x33a5fc[_0x67da('0x2e')],'UserId':_0x33a5fc['id'],'queue_name':_0x7036f['name'],'FaxQueueId':_0x7036f['id'],'interface':util['format'](_0x67da('0x5e'),_0x67da('0x5f'),_0x33a5fc[_0x67da('0x2e')]),'penalty':0x0,'paused':_0x33a5fc[_0x67da('0x60')],'createdAt':_0x33a5fc[_0x67da('0x61')],'updatedAt':_0x33a5fc[_0x67da('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x58de0e,_0x23708c))[_0x67da('0x4e')](handleError(_0x58de0e,null));};exports[_0x67da('0x62')]=function(_0xfeb356,_0x157dd3,_0x23fc3d){var _0x7ad3a2={};var _0x4d5f98={};var _0x9068dc;var _0x59e106;return db[_0x67da('0x47')]['findOne']({'where':{'id':_0xfeb356[_0x67da('0x4a')]['id']}})[_0x67da('0x28')](handleEntityNotFound(_0x157dd3,null))['then'](function(_0x1cc242){if(_0x1cc242){_0x9068dc=_0x1cc242;_0x4d5f98[_0x67da('0x33')]=_[_0x67da('0x36')](db[_0x67da('0x63')]['rawAttributes']);_0x4d5f98['query']=_[_0x67da('0x36')](_0xfeb356[_0x67da('0x35')]);_0x4d5f98[_0x67da('0x37')]=_[_0x67da('0x38')](_0x4d5f98[_0x67da('0x33')],_0x4d5f98[_0x67da('0x35')]);_0x7ad3a2['attributes']=_['intersection'](_0x4d5f98[_0x67da('0x33')],qs['fields'](_0xfeb356[_0x67da('0x35')][_0x67da('0x4c')]));_0x7ad3a2[_0x67da('0x39')]=_0x7ad3a2[_0x67da('0x39')]['length']?_0x7ad3a2['attributes']:_0x4d5f98[_0x67da('0x33')];_0x7ad3a2[_0x67da('0x3e')]=qs[_0x67da('0x3f')](_0xfeb356[_0x67da('0x35')]['sort']);_0x7ad3a2[_0x67da('0x40')]=qs[_0x67da('0x37')](_[_0x67da('0x41')](_0xfeb356['query'],_0x4d5f98[_0x67da('0x37')]));if(_0xfeb356['query'][_0x67da('0x58')]){_0x7ad3a2['where']=_['merge'](_0x7ad3a2[_0x67da('0x40')],{'$or':_[_0x67da('0x34')](_0x7ad3a2[_0x67da('0x39')],function(_0xa7b0d8){var _0x178a5b={};_0x178a5b[_0xa7b0d8]={'$like':'%'+_0xfeb356[_0x67da('0x35')][_0x67da('0x58')]+'%'};return _0x178a5b;})});}_0x7ad3a2=_['merge']({},_0x7ad3a2,_0xfeb356[_0x67da('0x44')]);return _0x9068dc[_0x67da('0x62')](_0x7ad3a2);}})[_0x67da('0x28')](function(_0x33655b){if(_0x33655b){_0x59e106=_0x33655b[_0x67da('0x3a')];if(!_0xfeb356[_0x67da('0x35')][_0x67da('0x3b')](_0x67da('0x3c'))){_0x7ad3a2[_0x67da('0x21')]=qs['limit'](_0xfeb356[_0x67da('0x35')]['limit']);_0x7ad3a2[_0x67da('0x3d')]=qs[_0x67da('0x3d')](_0xfeb356['query'][_0x67da('0x3d')]);}return _0x9068dc[_0x67da('0x62')](_0x7ad3a2);}})[_0x67da('0x28')](function(_0x1c1ef0){if(_0x1c1ef0){return _0x1c1ef0?{'count':_0x59e106,'rows':_0x1c1ef0}:null;}})[_0x67da('0x28')](respondWithResult(_0x157dd3,null))[_0x67da('0x4e')](handleError(_0x157dd3,null));};exports[_0x67da('0x64')]=function(_0xd9a2b6,_0x2dc136,_0x3fdd6c){var _0x5cc214=_0xd9a2b6[_0x67da('0x50')]['ids'];return db[_0x67da('0x63')]['findAll']({'where':{'id':_0x5cc214},'attributes':['id'],'include':[{'model':db['User'],'as':_0x67da('0x65'),'attributes':['id',_0x67da('0x2e'),_0x67da('0x66'),_0x67da('0x67'),'interface'],'raw':!![]}]})['then'](function(_0x562b97){if(_0x562b97){var _0x303b70=_[_0x67da('0x68')](_0x562b97,function(_0x342b94){var _0x11d3e9=_0x342b94[_0x67da('0x2a')]({'plain':!![]});return _0x11d3e9['Agents'];});return db[_0x67da('0x47')][_0x67da('0x4d')]({'where':{'id':_0xd9a2b6[_0x67da('0x4a')]['id']}})['then'](function(_0x3a1ac9){return db[_0x67da('0x69')][_0x67da('0x6a')](function(_0x48606f){return _0x3a1ac9[_0x67da('0x64')](_0x5cc214,{'transaction':_0x48606f})[_0x67da('0x28')](function(){return BPromise[_0x67da('0x6b')](_0x303b70,function(_0x4ebddd){return db[_0x67da('0x56')][_0x67da('0x6c')]({'where':{'UserId':_0x4ebddd['id'],'FaxQueueId':_0xd9a2b6[_0x67da('0x4a')]['id']},'transaction':_0x48606f});});})['then'](function(){_0x303b70[_0x67da('0x6d')](function(_0x3550f1){socket[_0x67da('0x6e')]('userFaxQueue:save',{'UserId':_0x3550f1['id'],'FaxQueueId':_0x3a1ac9['id']});});});});});}})[_0x67da('0x28')](respondWithStatusCode(_0x2dc136,null))['catch'](handleError(_0x2dc136,null));};exports['removeTeams']=function(_0x4fdc48,_0x3c8e6f,_0xb93044){return db[_0x67da('0x63')][_0x67da('0x48')]({'where':{'id':_0x4fdc48[_0x67da('0x35')][_0x67da('0x6f')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x67da('0x28')](handleEntityNotFound(_0x3c8e6f,null))[_0x67da('0x28')](function(_0x37dc36){var _0x2a954b=_[_0x67da('0x34')](_0x37dc36,'id');var _0x41a7cd=[];var _0x49217a=[];var _0x1d6ba5=squel[_0x67da('0x70')]();_0x1d6ba5[_0x67da('0x71')](_0x67da('0x72'))['from'](_0x67da('0x73'),'tq')[_0x67da('0x74')](_0x67da('0x75'),'ut',_0x67da('0x76'))[_0x67da('0x40')](_0x67da('0x77'),_0x4fdc48[_0x67da('0x4a')]['id']);for(var _0x18c20f=0x0;_0x18c20f<_0x37dc36[_0x67da('0x3a')];_0x18c20f+=0x1){let _0x2049ef=_0x37dc36[_0x18c20f];for(var _0x5e519b=0x0;_0x5e519b<_0x2049ef['Agents']['length'];_0x5e519b+=0x1){let _0x371bd0=_0x2049ef[_0x67da('0x65')][_0x5e519b];var _0x4f2322=_0x1d6ba5[_0x67da('0x78')]();_0x4f2322['where'](_0x67da('0x79'),_0x371bd0['id']);_0x49217a['push'](db[_0x67da('0x69')]['query'](_0x4f2322[_0x67da('0x7a')](),{'type':db[_0x67da('0x69')]['QueryTypes'][_0x67da('0x7b')]})[_0x67da('0x28')](function(_0x51aeb7){if(_0x51aeb7[_0x67da('0x3a')]===0x1){return _0x371bd0['id'];}else{var _0x244b9d=_[_0x67da('0x7c')](_[_0x67da('0x34')](_0x51aeb7,'TeamId'),function(_0x553ae6){return _[_0x67da('0x7d')](_0x2a954b,_0x553ae6);});if(_0x244b9d){return _0x371bd0['id'];}}}));}}return BPromise['all'](_0x49217a)[_0x67da('0x28')](function(_0x19ef30){_0x41a7cd=_(_0x41a7cd)[_0x67da('0x7e')](_0x19ef30)['compact']()[_0x67da('0x7f')]();return db[_0x67da('0x47')][_0x67da('0x4d')]({'where':{'id':_0x4fdc48[_0x67da('0x4a')]['id']}})[_0x67da('0x28')](function(_0x14d9c6){return db[_0x67da('0x69')]['transaction'](function(_0x3520dc){return _0x14d9c6[_0x67da('0x80')](_0x4fdc48['query'][_0x67da('0x6f')],{'transaction':_0x3520dc})[_0x67da('0x28')](function(){if(!_[_0x67da('0x81')](_0x41a7cd)){return _0x14d9c6['removeAgents'](_0x41a7cd,{'transaction':_0x3520dc});}})[_0x67da('0x28')](function(){_0x41a7cd[_0x67da('0x6d')](function(_0x253671){socket['emit'](_0x67da('0x82'),{'UserId':_0x253671,'FaxQueueId':_0x14d9c6['id']});});});});});});})[_0x67da('0x28')](respondWithStatusCode(_0x3c8e6f,null))[_0x67da('0x4e')](handleError(_0x3c8e6f,null));};exports['addAgents']=function(_0x599587,_0x1028f0,_0x4821ed){return db[_0x67da('0x47')][_0x67da('0x4d')]({'where':{'id':_0x599587['params']['id']}})[_0x67da('0x28')](handleEntityNotFound(_0x1028f0,null))[_0x67da('0x28')](function(_0x76cd62){if(_0x76cd62){return _0x76cd62['addAgents'](_0x599587[_0x67da('0x50')]['ids'],_['omit'](_0x599587['body'],[_0x67da('0x6f'),'id'])||{})[_0x67da('0x83')](function(_0x225845){for(var _0x294238=0x0;_0x294238<_0x599587['body'][_0x67da('0x6f')][_0x67da('0x3a')];_0x294238+=0x1){socket[_0x67da('0x6e')]('userFaxQueue:save',{'UserId':Number(_0x599587[_0x67da('0x50')]['ids'][_0x294238]),'FaxQueueId':Number(_0x599587[_0x67da('0x4a')]['id'])});}return _0x225845;});}})['then'](respondWithResult(_0x1028f0,null))[_0x67da('0x4e')](handleError(_0x1028f0,null));};exports[_0x67da('0x84')]=function(_0x2679f0,_0x4fb239,_0x5c80a9){return db[_0x67da('0x47')][_0x67da('0x4d')]({'where':{'id':_0x2679f0[_0x67da('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4fb239,null))[_0x67da('0x28')](function(_0x383f83){if(_0x383f83){return _0x383f83[_0x67da('0x84')](_0x2679f0[_0x67da('0x35')][_0x67da('0x6f')])['then'](function(){if(_[_0x67da('0x85')](_0x2679f0[_0x67da('0x35')][_0x67da('0x6f')])){for(var _0x2ec19d=0x0;_0x2ec19d<_0x2679f0['query'][_0x67da('0x6f')][_0x67da('0x3a')];_0x2ec19d+=0x1){socket['emit'](_0x67da('0x82'),{'UserId':Number(_0x2679f0['query'][_0x67da('0x6f')][_0x2ec19d]),'FaxQueueId':Number(_0x2679f0['params']['id'])});}}else{socket[_0x67da('0x6e')](_0x67da('0x82'),{'UserId':Number(_0x2679f0[_0x67da('0x35')][_0x67da('0x6f')]),'FaxQueueId':Number(_0x2679f0[_0x67da('0x4a')]['id'])});}});}})[_0x67da('0x28')](respondWithStatusCode(_0x4fb239,null))[_0x67da('0x4e')](handleError(_0x4fb239,null));};exports[_0x67da('0x86')]=function(_0x5a1443,_0x595f02,_0x3890c0){var _0x46df90={};var _0x5fed07={};var _0x25cb5f;var _0x529fd3;return db[_0x67da('0x47')][_0x67da('0x87')]({'where':{'id':_0x5a1443['params']['id']}})[_0x67da('0x28')](handleEntityNotFound(_0x595f02,null))[_0x67da('0x28')](function(_0x6f54e7){if(_0x6f54e7){_0x25cb5f=_0x6f54e7;_0x5fed07[_0x67da('0x33')]=_[_0x67da('0x36')](db['User'][_0x67da('0x4b')]);_0x5fed07[_0x67da('0x35')]=_[_0x67da('0x36')](_0x5a1443[_0x67da('0x35')]);_0x5fed07[_0x67da('0x37')]=_['intersection'](_0x5fed07[_0x67da('0x33')],_0x5fed07[_0x67da('0x35')]);_0x46df90['attributes']=_['intersection'](_0x5fed07['model'],qs['fields'](_0x5a1443[_0x67da('0x35')]['fields']));_0x46df90['attributes']=_0x46df90[_0x67da('0x39')][_0x67da('0x3a')]?_0x46df90[_0x67da('0x39')]:_0x5fed07[_0x67da('0x33')];_0x46df90[_0x67da('0x3e')]=qs[_0x67da('0x3f')](_0x5a1443[_0x67da('0x35')][_0x67da('0x3f')]);_0x46df90[_0x67da('0x40')]=qs[_0x67da('0x37')](_['pick'](_0x5a1443['query'],_0x5fed07['filters']));if(_0x5a1443[_0x67da('0x35')][_0x67da('0x58')]){_0x46df90[_0x67da('0x40')]=_[_0x67da('0x42')](_0x46df90[_0x67da('0x40')],{'$or':_['map'](_0x46df90[_0x67da('0x39')],function(_0x2b79f5){var _0xb462b9={};_0xb462b9[_0x2b79f5]={'$like':'%'+_0x5a1443[_0x67da('0x35')][_0x67da('0x58')]+'%'};return _0xb462b9;})});}_0x46df90=_[_0x67da('0x42')]({},_0x46df90,_0x5a1443['options']);return _0x25cb5f[_0x67da('0x86')](_0x46df90);}})[_0x67da('0x28')](function(_0x2a08a0){if(_0x2a08a0){_0x529fd3=_0x2a08a0[_0x67da('0x3a')];if(!_0x5a1443[_0x67da('0x35')][_0x67da('0x3b')](_0x67da('0x3c'))){_0x46df90[_0x67da('0x21')]=qs[_0x67da('0x21')](_0x5a1443[_0x67da('0x35')][_0x67da('0x21')]);_0x46df90['offset']=qs[_0x67da('0x3d')](_0x5a1443['query'][_0x67da('0x3d')]);}return _0x25cb5f[_0x67da('0x86')](_0x46df90);}})['then'](function(_0x527b8b){if(_0x527b8b){return _0x527b8b?{'count':_0x529fd3,'rows':_0x527b8b}:null;}})['then'](respondWithResult(_0x595f02,null))['catch'](handleError(_0x595f02,null));};
\ No newline at end of file
+var _0xc614=['emit','removeTeams','select','field','tq.TeamId','join','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','transaction','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','spread','userFaxQueue:save','getAgents','hasOwnProperty','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','status','end','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','FaxQueues','sendStatus','error','stack','send','map','FaxQueue','rawAttributes','fieldName','type','key','model','name','keys','query','intersection','attributes','fields','nolimit','limit','sort','where','filters','pick','filter','merge','VIRTUAL','options','rows','catch','show','length','includeAll','include','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','find','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','findOne','UserFaxQueue','order','FaxQueueId','findAll','User','UserId','agent','faxPause','updatedAt','format','SIP','createdAt','getTeams','ids','Team','Agents','voicePause','flatMap','sequelize','forEach'];(function(_0x3ef892,_0x38fb64){var _0x19f2c0=function(_0x441ba3){while(--_0x441ba3){_0x3ef892['push'](_0x3ef892['shift']());}};_0x19f2c0(++_0x38fb64);}(_0xc614,0xa0));var _0x4c61=function(_0xb2a71b,_0x4e4abf){_0xb2a71b=_0xb2a71b-0x0;var _0x36afe7=_0xc614[_0xb2a71b];return _0x36afe7;};'use strict';var emlformat=require(_0x4c61('0x0'));var rimraf=require(_0x4c61('0x1'));var zipdir=require(_0x4c61('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4c61('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4c61('0x4'));var util=require(_0x4c61('0x5'));var path=require(_0x4c61('0x6'));var sox=require(_0x4c61('0x7'));var csv=require(_0x4c61('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4c61('0x9'));var _=require('lodash');var squel=require(_0x4c61('0xa'));var crypto=require('crypto');var jsforce=require(_0x4c61('0xb'));var deskjs=require(_0x4c61('0xc'));var toCsv=require('to-csv');var querystring=require(_0x4c61('0xd'));var Papa=require(_0x4c61('0xe'));var Redis=require('ioredis');var authService=require(_0x4c61('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4c61('0x10'));var utils=require(_0x4c61('0x11'));var config=require(_0x4c61('0x12'));var licenseUtil=require(_0x4c61('0x13'));var db=require('../../mysqldb')['db'];config[_0x4c61('0x14')]=_[_0x4c61('0x15')](config[_0x4c61('0x14')],{'host':_0x4c61('0x16'),'port':0x18eb});var socket=require(_0x4c61('0x17'))(new Redis(config['redis']));require(_0x4c61('0x18'))[_0x4c61('0x19')](socket);function respondWithStatusCode(_0x54533d,_0x34658c){_0x34658c=_0x34658c||0xcc;return function(_0x428adc){if(_0x428adc){return _0x54533d['sendStatus'](_0x34658c);}return _0x54533d[_0x4c61('0x1a')](_0x34658c)[_0x4c61('0x1b')]();};}function respondWithResult(_0x14d396,_0x2d62aa){_0x2d62aa=_0x2d62aa||0xc8;return function(_0x94f9af){if(_0x94f9af){return _0x14d396[_0x4c61('0x1a')](_0x2d62aa)['json'](_0x94f9af);}};}function respondWithFilteredResult(_0x584b2e,_0x21bf81){return function(_0xc33080){if(_0xc33080){var _0x55ffb8=typeof _0x21bf81[_0x4c61('0x1c')]===_0x4c61('0x1d')&&typeof _0x21bf81['limit']===_0x4c61('0x1d');var _0x3434bf=_0xc33080[_0x4c61('0x1e')];var _0x2626ac=_0x55ffb8?0x0:_0x21bf81[_0x4c61('0x1c')];var _0x3d69ac=_0x55ffb8?_0xc33080[_0x4c61('0x1e')]:_0x21bf81['offset']+_0x21bf81['limit'];var _0x57bb08;if(_0x3d69ac>=_0x3434bf){_0x3d69ac=_0x3434bf;_0x57bb08=0xc8;}else{_0x57bb08=0xce;}_0x584b2e[_0x4c61('0x1a')](_0x57bb08);return _0x584b2e[_0x4c61('0x1f')](_0x4c61('0x20'),_0x2626ac+'-'+_0x3d69ac+'/'+_0x3434bf)[_0x4c61('0x21')](_0xc33080);}return null;};}function patchUpdates(_0x4efafc){return function(_0x3e6d83){try{jsonpatch[_0x4c61('0x22')](_0x3e6d83,_0x4efafc,!![]);}catch(_0x3c2b6a){return BPromise[_0x4c61('0x23')](_0x3c2b6a);}return _0x3e6d83[_0x4c61('0x24')]();};}function saveUpdates(_0x1b5c29,_0x3dab99){return function(_0x419151){if(_0x419151){return _0x419151[_0x4c61('0x25')](_0x1b5c29)[_0x4c61('0x26')](function(_0x3dd633){return _0x3dd633;});}return null;};}function removeEntity(_0x2e9809,_0x43ba44){return function(_0x544e10){if(_0x544e10){return _0x544e10[_0x4c61('0x27')]()[_0x4c61('0x26')](function(){var _0x277aa4=_0x544e10[_0x4c61('0x28')]({'plain':!![]});var _0x2e3fd2=_0x4c61('0x29');return db['UserProfileResource'][_0x4c61('0x27')]({'where':{'type':_0x2e3fd2,'resourceId':_0x277aa4['id']}})['then'](function(){return _0x544e10;});})['then'](function(){_0x2e9809[_0x4c61('0x1a')](0xcc)[_0x4c61('0x1b')]();});}};}function handleEntityNotFound(_0x354ea5,_0x1c790b){return function(_0x5a34e9){if(!_0x5a34e9){_0x354ea5[_0x4c61('0x2a')](0x194);}return _0x5a34e9;};}function handleError(_0x48d50c,_0x30dc8c){_0x30dc8c=_0x30dc8c||0x1f4;return function(_0x18dd59){logger[_0x4c61('0x2b')](_0x18dd59[_0x4c61('0x2c')]);if(_0x18dd59['name']){delete _0x18dd59['name'];}_0x48d50c['status'](_0x30dc8c)[_0x4c61('0x2d')](_0x18dd59);};}exports['index']=function(_0x20f509,_0x3b3173){var _0x1a1eee={},_0x106f93={},_0x298451={'count':0x0,'rows':[]};var _0x181878=_[_0x4c61('0x2e')](db[_0x4c61('0x2f')][_0x4c61('0x30')],function(_0x590295){return{'name':_0x590295[_0x4c61('0x31')],'type':_0x590295[_0x4c61('0x32')][_0x4c61('0x33')]};});_0x106f93[_0x4c61('0x34')]=_['map'](_0x181878,_0x4c61('0x35'));_0x106f93['query']=_[_0x4c61('0x36')](_0x20f509[_0x4c61('0x37')]);_0x106f93['filters']=_[_0x4c61('0x38')](_0x106f93[_0x4c61('0x34')],_0x106f93[_0x4c61('0x37')]);_0x1a1eee[_0x4c61('0x39')]=_[_0x4c61('0x38')](_0x106f93['model'],qs['fields'](_0x20f509[_0x4c61('0x37')][_0x4c61('0x3a')]));_0x1a1eee[_0x4c61('0x39')]=_0x1a1eee[_0x4c61('0x39')]['length']?_0x1a1eee['attributes']:_0x106f93[_0x4c61('0x34')];if(!_0x20f509['query']['hasOwnProperty'](_0x4c61('0x3b'))){_0x1a1eee[_0x4c61('0x3c')]=qs[_0x4c61('0x3c')](_0x20f509[_0x4c61('0x37')]['limit']);_0x1a1eee[_0x4c61('0x1c')]=qs[_0x4c61('0x1c')](_0x20f509['query']['offset']);}_0x1a1eee['order']=qs[_0x4c61('0x3d')](_0x20f509[_0x4c61('0x37')]['sort']);_0x1a1eee[_0x4c61('0x3e')]=qs[_0x4c61('0x3f')](_[_0x4c61('0x40')](_0x20f509['query'],_0x106f93[_0x4c61('0x3f')]),_0x181878);if(_0x20f509['query'][_0x4c61('0x41')]){_0x1a1eee['where']=_[_0x4c61('0x42')](_0x1a1eee[_0x4c61('0x3e')],{'$or':_[_0x4c61('0x2e')](_0x181878,function(_0x13ebc9){if(_0x13ebc9['type']!==_0x4c61('0x43')){var _0x34a080={};_0x34a080[_0x13ebc9['name']]={'$like':'%'+_0x20f509[_0x4c61('0x37')][_0x4c61('0x41')]+'%'};return _0x34a080;}})});}_0x1a1eee=_[_0x4c61('0x42')]({},_0x1a1eee,_0x20f509[_0x4c61('0x44')]);var _0x4eabaf={'where':_0x1a1eee['where']};return db['FaxQueue'][_0x4c61('0x1e')](_0x4eabaf)[_0x4c61('0x26')](function(_0x578780){_0x298451['count']=_0x578780;if(_0x20f509[_0x4c61('0x37')]['includeAll']){_0x1a1eee['include']=[{'all':!![]}];}return db[_0x4c61('0x2f')]['findAll'](_0x1a1eee);})['then'](function(_0x21f526){_0x298451[_0x4c61('0x45')]=_0x21f526;return _0x298451;})[_0x4c61('0x26')](respondWithFilteredResult(_0x3b3173,_0x1a1eee))[_0x4c61('0x46')](handleError(_0x3b3173,null));};exports[_0x4c61('0x47')]=function(_0x1f7eb4,_0x261df2){var _0x3af3fb={'raw':!![],'where':{'id':_0x1f7eb4['params']['id']}},_0x486904={};_0x486904[_0x4c61('0x34')]=_[_0x4c61('0x36')](db[_0x4c61('0x2f')][_0x4c61('0x30')]);_0x486904[_0x4c61('0x37')]=_['keys'](_0x1f7eb4['query']);_0x486904['filters']=_['intersection'](_0x486904[_0x4c61('0x34')],_0x486904[_0x4c61('0x37')]);_0x3af3fb[_0x4c61('0x39')]=_[_0x4c61('0x38')](_0x486904[_0x4c61('0x34')],qs[_0x4c61('0x3a')](_0x1f7eb4['query'][_0x4c61('0x3a')]));_0x3af3fb[_0x4c61('0x39')]=_0x3af3fb[_0x4c61('0x39')][_0x4c61('0x48')]?_0x3af3fb['attributes']:_0x486904[_0x4c61('0x34')];if(_0x1f7eb4[_0x4c61('0x37')][_0x4c61('0x49')]){_0x3af3fb[_0x4c61('0x4a')]=[{'all':!![]}];}_0x3af3fb=_[_0x4c61('0x42')]({},_0x3af3fb,_0x1f7eb4[_0x4c61('0x44')]);return db[_0x4c61('0x2f')]['find'](_0x3af3fb)[_0x4c61('0x26')](handleEntityNotFound(_0x261df2,null))[_0x4c61('0x26')](respondWithResult(_0x261df2,null))[_0x4c61('0x46')](handleError(_0x261df2,null));};exports[_0x4c61('0x4b')]=function(_0x924811,_0xc12ffb){return db['FaxQueue']['create'](_0x924811['body'],{})[_0x4c61('0x26')](function(_0x21c5b3){var _0x2df76c=_0x924811['user'][_0x4c61('0x28')]({'plain':!![]});if(!_0x2df76c)throw new Error(_0x4c61('0x4c'));if(_0x2df76c['role']===_0x4c61('0x4d')){var _0x3fa23f=_0x21c5b3['get']({'plain':!![]});var _0x2e3134=_0x4c61('0x29');return db['UserProfileSection'][_0x4c61('0x4e')]({'where':{'name':_0x2e3134,'userProfileId':_0x2df76c[_0x4c61('0x4f')]},'raw':!![]})[_0x4c61('0x26')](function(_0x56a331){if(_0x56a331&&_0x56a331['autoAssociation']===0x0){return db[_0x4c61('0x50')][_0x4c61('0x4b')]({'name':_0x3fa23f['name'],'resourceId':_0x3fa23f['id'],'type':_0x56a331[_0x4c61('0x35')],'sectionId':_0x56a331['id']},{})[_0x4c61('0x26')](function(){return _0x21c5b3;});}else{return _0x21c5b3;}})['catch'](function(_0x82638a){logger[_0x4c61('0x2b')](_0x4c61('0x51'),_0x82638a);throw _0x82638a;});}return _0x21c5b3;})[_0x4c61('0x26')](respondWithResult(_0xc12ffb,0xc9))[_0x4c61('0x46')](handleError(_0xc12ffb,null));};exports['update']=function(_0x2ae0a9,_0x2b6594){if(_0x2ae0a9[_0x4c61('0x52')]['id']){delete _0x2ae0a9[_0x4c61('0x52')]['id'];}return db[_0x4c61('0x2f')][_0x4c61('0x4e')]({'where':{'id':_0x2ae0a9[_0x4c61('0x53')]['id']}})['then'](handleEntityNotFound(_0x2b6594,null))[_0x4c61('0x26')](saveUpdates(_0x2ae0a9['body'],null))[_0x4c61('0x26')](respondWithResult(_0x2b6594,null))['catch'](handleError(_0x2b6594,null));};exports[_0x4c61('0x27')]=function(_0x19454f,_0x40514b){return db[_0x4c61('0x2f')][_0x4c61('0x4e')]({'where':{'id':_0x19454f[_0x4c61('0x53')]['id']}})['then'](handleEntityNotFound(_0x40514b,null))[_0x4c61('0x26')](removeEntity(_0x40514b,null))['catch'](handleError(_0x40514b,null));};exports[_0x4c61('0x54')]=function(_0x1ef622,_0x284d0a){return db['FaxQueue'][_0x4c61('0x54')]()['then'](respondWithResult(_0x284d0a,null))[_0x4c61('0x46')](handleError(_0x284d0a,null));};exports['getMembers']=function(_0x30b264,_0x457738,_0x500e7d){var _0x287f7e={'raw':!![],'where':{}},_0x54866={},_0x51bc50;return db['FaxQueue'][_0x4c61('0x55')]({'where':{'id':_0x30b264[_0x4c61('0x53')]['id']}})[_0x4c61('0x26')](handleEntityNotFound(_0x457738,null))[_0x4c61('0x26')](function(_0x46af6f){if(_0x46af6f){_0x51bc50=_0x46af6f[_0x4c61('0x28')]({'plain':!![]});_0x54866[_0x4c61('0x34')]=_['keys'](db[_0x4c61('0x56')][_0x4c61('0x30')]);_0x54866[_0x4c61('0x37')]=_['keys'](_0x30b264['query']);_0x54866[_0x4c61('0x3f')]=_[_0x4c61('0x38')](_0x54866[_0x4c61('0x34')],_0x54866[_0x4c61('0x37')]);_0x287f7e[_0x4c61('0x39')]=_[_0x4c61('0x38')](_0x54866[_0x4c61('0x34')],qs[_0x4c61('0x3a')](_0x30b264[_0x4c61('0x37')][_0x4c61('0x3a')]));_0x287f7e[_0x4c61('0x39')]=_0x287f7e[_0x4c61('0x39')][_0x4c61('0x48')]?_0x287f7e[_0x4c61('0x39')]:_0x54866[_0x4c61('0x34')];if(!_0x30b264[_0x4c61('0x37')]['hasOwnProperty'](_0x4c61('0x3b'))){_0x287f7e[_0x4c61('0x3c')]=qs[_0x4c61('0x3c')](_0x30b264[_0x4c61('0x37')][_0x4c61('0x3c')]);_0x287f7e[_0x4c61('0x1c')]=qs[_0x4c61('0x1c')](_0x30b264[_0x4c61('0x37')][_0x4c61('0x1c')]);}_0x287f7e[_0x4c61('0x57')]=qs[_0x4c61('0x3d')](_0x30b264['query'][_0x4c61('0x3d')]);_0x287f7e[_0x4c61('0x3e')]=qs[_0x4c61('0x3f')](_[_0x4c61('0x40')](_0x30b264[_0x4c61('0x37')],_0x54866[_0x4c61('0x3f')]));_0x287f7e[_0x4c61('0x3e')][_0x4c61('0x58')]=_0x46af6f['id'];if(_0x30b264[_0x4c61('0x37')][_0x4c61('0x41')]){_0x287f7e[_0x4c61('0x3e')]=_[_0x4c61('0x42')](_0x287f7e[_0x4c61('0x3e')],{'$or':_['map'](_0x287f7e[_0x4c61('0x39')],function(_0x4c19e6){var _0x52ecec={};_0x52ecec[_0x4c19e6]={'$like':'%'+_0x30b264[_0x4c61('0x37')][_0x4c61('0x41')]+'%'};return _0x52ecec;})});}_0x287f7e=_[_0x4c61('0x42')]({},_0x287f7e,_0x30b264['options']);return db[_0x4c61('0x56')][_0x4c61('0x59')](_0x287f7e);}})[_0x4c61('0x26')](function(_0x4c711c){if(_0x4c711c){return db[_0x4c61('0x5a')]['findAndCountAll']({'where':{'id':_['map'](_0x4c711c,_0x4c61('0x5b')),'role':_0x4c61('0x5c')},'attributes':['id',_0x4c61('0x35'),_0x4c61('0x5d'),_0x4c61('0x5e'),'createdAt']});}})[_0x4c61('0x26')](function(_0x202a15){if(_0x202a15){return{'count':_0x202a15['count'],'rows':_['map'](_0x202a15[_0x4c61('0x45')],function(_0x3ec666){return{'membername':_0x3ec666['name'],'UserId':_0x3ec666['id'],'queue_name':_0x51bc50[_0x4c61('0x35')],'FaxQueueId':_0x51bc50['id'],'interface':util[_0x4c61('0x5f')]('%s/%s',_0x4c61('0x60'),_0x3ec666[_0x4c61('0x35')]),'penalty':0x0,'paused':_0x3ec666[_0x4c61('0x5d')],'createdAt':_0x3ec666[_0x4c61('0x61')],'updatedAt':_0x3ec666[_0x4c61('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x4c61('0x26')](respondWithFilteredResult(_0x457738,_0x287f7e))['catch'](handleError(_0x457738,null));};exports[_0x4c61('0x62')]=function(_0xa4760b,_0x286a3f,_0x595ada){var _0x4be9cc={};var _0x461e31={};var _0x342783;var _0x99846e;return db[_0x4c61('0x2f')]['findOne']({'where':{'id':_0xa4760b[_0x4c61('0x53')]['id']}})[_0x4c61('0x26')](handleEntityNotFound(_0x286a3f,null))[_0x4c61('0x26')](function(_0xa8a06e){if(_0xa8a06e){_0x342783=_0xa8a06e;_0x461e31['model']=_[_0x4c61('0x36')](db['Team'][_0x4c61('0x30')]);_0x461e31[_0x4c61('0x37')]=_[_0x4c61('0x36')](_0xa4760b[_0x4c61('0x37')]);_0x461e31[_0x4c61('0x3f')]=_[_0x4c61('0x38')](_0x461e31[_0x4c61('0x34')],_0x461e31[_0x4c61('0x37')]);_0x4be9cc[_0x4c61('0x39')]=_[_0x4c61('0x38')](_0x461e31[_0x4c61('0x34')],qs[_0x4c61('0x3a')](_0xa4760b[_0x4c61('0x37')][_0x4c61('0x3a')]));_0x4be9cc[_0x4c61('0x39')]=_0x4be9cc[_0x4c61('0x39')][_0x4c61('0x48')]?_0x4be9cc['attributes']:_0x461e31[_0x4c61('0x34')];_0x4be9cc[_0x4c61('0x57')]=qs[_0x4c61('0x3d')](_0xa4760b[_0x4c61('0x37')][_0x4c61('0x3d')]);_0x4be9cc[_0x4c61('0x3e')]=qs[_0x4c61('0x3f')](_[_0x4c61('0x40')](_0xa4760b['query'],_0x461e31[_0x4c61('0x3f')]));if(_0xa4760b['query'][_0x4c61('0x41')]){_0x4be9cc[_0x4c61('0x3e')]=_[_0x4c61('0x42')](_0x4be9cc[_0x4c61('0x3e')],{'$or':_[_0x4c61('0x2e')](_0x4be9cc[_0x4c61('0x39')],function(_0x58a831){var _0x136512={};_0x136512[_0x58a831]={'$like':'%'+_0xa4760b[_0x4c61('0x37')][_0x4c61('0x41')]+'%'};return _0x136512;})});}_0x4be9cc=_[_0x4c61('0x42')]({},_0x4be9cc,_0xa4760b[_0x4c61('0x44')]);return _0x342783[_0x4c61('0x62')](_0x4be9cc);}})[_0x4c61('0x26')](function(_0x2cc58d){if(_0x2cc58d){_0x99846e=_0x2cc58d[_0x4c61('0x48')];if(!_0xa4760b[_0x4c61('0x37')]['hasOwnProperty'](_0x4c61('0x3b'))){_0x4be9cc['limit']=qs[_0x4c61('0x3c')](_0xa4760b[_0x4c61('0x37')][_0x4c61('0x3c')]);_0x4be9cc[_0x4c61('0x1c')]=qs['offset'](_0xa4760b[_0x4c61('0x37')][_0x4c61('0x1c')]);}return _0x342783[_0x4c61('0x62')](_0x4be9cc);}})[_0x4c61('0x26')](function(_0x176568){if(_0x176568){return _0x176568?{'count':_0x99846e,'rows':_0x176568}:null;}})[_0x4c61('0x26')](respondWithResult(_0x286a3f,null))[_0x4c61('0x46')](handleError(_0x286a3f,null));};exports['addTeams']=function(_0x56fecd,_0x4db5b1,_0xe52c5c){var _0x477424=_0x56fecd['body'][_0x4c61('0x63')];return db[_0x4c61('0x64')]['findAll']({'where':{'id':_0x477424},'attributes':['id'],'include':[{'model':db[_0x4c61('0x5a')],'as':_0x4c61('0x65'),'attributes':['id','name','online',_0x4c61('0x66'),'interface'],'raw':!![]}]})['then'](function(_0x2b57fd){if(_0x2b57fd){var _0x18ef09=_[_0x4c61('0x67')](_0x2b57fd,function(_0x213cec){var _0x345375=_0x213cec[_0x4c61('0x28')]({'plain':!![]});return _0x345375['Agents'];});return db[_0x4c61('0x2f')][_0x4c61('0x4e')]({'where':{'id':_0x56fecd[_0x4c61('0x53')]['id']}})[_0x4c61('0x26')](function(_0x1ff98f){return db[_0x4c61('0x68')]['transaction'](function(_0x7642a9){return _0x1ff98f['addTeams'](_0x477424,{'transaction':_0x7642a9})[_0x4c61('0x26')](function(){return BPromise['each'](_0x18ef09,function(_0x167be7){return db[_0x4c61('0x56')]['findOrCreate']({'where':{'UserId':_0x167be7['id'],'FaxQueueId':_0x56fecd[_0x4c61('0x53')]['id']},'transaction':_0x7642a9});});})[_0x4c61('0x26')](function(){_0x18ef09[_0x4c61('0x69')](function(_0x33d047){socket[_0x4c61('0x6a')]('userFaxQueue:save',{'UserId':_0x33d047['id'],'FaxQueueId':_0x1ff98f['id']});});});});});}})[_0x4c61('0x26')](respondWithStatusCode(_0x4db5b1,null))['catch'](handleError(_0x4db5b1,null));};exports[_0x4c61('0x6b')]=function(_0x348c47,_0x4fa9ea,_0x1f7664){return db['Team'][_0x4c61('0x59')]({'where':{'id':_0x348c47['query'][_0x4c61('0x63')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x4c61('0x65'),'attributes':['id'],'raw':!![]}]})[_0x4c61('0x26')](handleEntityNotFound(_0x4fa9ea,null))['then'](function(_0x4c8810){var _0x28e7a6=_[_0x4c61('0x2e')](_0x4c8810,'id');var _0x4aaad2=[];var _0x695631=[];var _0x9b7f91=squel[_0x4c61('0x6c')]();_0x9b7f91[_0x4c61('0x6d')](_0x4c61('0x6e'))['from']('team_has_fax_queues','tq')[_0x4c61('0x6f')]('user_has_teams','ut',_0x4c61('0x70'))[_0x4c61('0x3e')](_0x4c61('0x71'),_0x348c47['params']['id']);for(var _0x3723e0=0x0;_0x3723e0<_0x4c8810[_0x4c61('0x48')];_0x3723e0+=0x1){let _0x5ef2be=_0x4c8810[_0x3723e0];for(var _0xb711fb=0x0;_0xb711fb<_0x5ef2be['Agents'][_0x4c61('0x48')];_0xb711fb+=0x1){let _0x219bda=_0x5ef2be[_0x4c61('0x65')][_0xb711fb];var _0xfc4f0=_0x9b7f91[_0x4c61('0x72')]();_0xfc4f0[_0x4c61('0x3e')]('ut.UserId\x20=\x20?',_0x219bda['id']);_0x695631['push'](db[_0x4c61('0x68')][_0x4c61('0x37')](_0xfc4f0['toString'](),{'type':db[_0x4c61('0x68')][_0x4c61('0x73')][_0x4c61('0x74')]})[_0x4c61('0x26')](function(_0x4a0cd3){if(_0x4a0cd3['length']===0x1){return _0x219bda['id'];}else{var _0x512b47=_[_0x4c61('0x75')](_[_0x4c61('0x2e')](_0x4a0cd3,_0x4c61('0x76')),function(_0x1ea405){return _[_0x4c61('0x77')](_0x28e7a6,_0x1ea405);});if(_0x512b47){return _0x219bda['id'];}}}));}}return BPromise[_0x4c61('0x78')](_0x695631)[_0x4c61('0x26')](function(_0x560810){_0x4aaad2=_(_0x4aaad2)[_0x4c61('0x79')](_0x560810)[_0x4c61('0x7a')]()['value']();return db[_0x4c61('0x2f')][_0x4c61('0x4e')]({'where':{'id':_0x348c47[_0x4c61('0x53')]['id']}})[_0x4c61('0x26')](function(_0x42cce8){return db[_0x4c61('0x68')][_0x4c61('0x7b')](function(_0xbeb23d){return _0x42cce8['removeTeams'](_0x348c47[_0x4c61('0x37')]['ids'],{'transaction':_0xbeb23d})[_0x4c61('0x26')](function(){if(!_[_0x4c61('0x7c')](_0x4aaad2)){return _0x42cce8[_0x4c61('0x7d')](_0x4aaad2,{'transaction':_0xbeb23d});}})[_0x4c61('0x26')](function(){_0x4aaad2['forEach'](function(_0x7123ae){socket[_0x4c61('0x6a')](_0x4c61('0x7e'),{'UserId':_0x7123ae,'FaxQueueId':_0x42cce8['id']});});});});});});})[_0x4c61('0x26')](respondWithStatusCode(_0x4fa9ea,null))[_0x4c61('0x46')](handleError(_0x4fa9ea,null));};exports['addAgents']=function(_0x55480a,_0x2160ba,_0x33dbcc){return db[_0x4c61('0x2f')][_0x4c61('0x4e')]({'where':{'id':_0x55480a[_0x4c61('0x53')]['id']}})[_0x4c61('0x26')](handleEntityNotFound(_0x2160ba,null))[_0x4c61('0x26')](function(_0x3a3584){if(_0x3a3584){return _0x3a3584[_0x4c61('0x7f')](_0x55480a['body'][_0x4c61('0x63')],_[_0x4c61('0x80')](_0x55480a[_0x4c61('0x52')],[_0x4c61('0x63'),'id'])||{})[_0x4c61('0x81')](function(_0x2e63ca){for(var _0x4a010d=0x0;_0x4a010d<_0x55480a['body'][_0x4c61('0x63')]['length'];_0x4a010d+=0x1){socket[_0x4c61('0x6a')](_0x4c61('0x82'),{'UserId':Number(_0x55480a[_0x4c61('0x52')][_0x4c61('0x63')][_0x4a010d]),'FaxQueueId':Number(_0x55480a[_0x4c61('0x53')]['id'])});}return _0x2e63ca;});}})['then'](respondWithResult(_0x2160ba,null))['catch'](handleError(_0x2160ba,null));};exports[_0x4c61('0x7d')]=function(_0x10551c,_0x10851f,_0x317dd7){return db[_0x4c61('0x2f')][_0x4c61('0x4e')]({'where':{'id':_0x10551c[_0x4c61('0x53')]['id']}})[_0x4c61('0x26')](handleEntityNotFound(_0x10851f,null))[_0x4c61('0x26')](function(_0x47a30b){if(_0x47a30b){return _0x47a30b[_0x4c61('0x7d')](_0x10551c[_0x4c61('0x37')]['ids'])[_0x4c61('0x26')](function(){if(_['isArray'](_0x10551c[_0x4c61('0x37')]['ids'])){for(var _0x4afe6b=0x0;_0x4afe6b<_0x10551c[_0x4c61('0x37')][_0x4c61('0x63')][_0x4c61('0x48')];_0x4afe6b+=0x1){socket['emit'](_0x4c61('0x7e'),{'UserId':Number(_0x10551c[_0x4c61('0x37')][_0x4c61('0x63')][_0x4afe6b]),'FaxQueueId':Number(_0x10551c[_0x4c61('0x53')]['id'])});}}else{socket[_0x4c61('0x6a')](_0x4c61('0x7e'),{'UserId':Number(_0x10551c[_0x4c61('0x37')]['ids']),'FaxQueueId':Number(_0x10551c[_0x4c61('0x53')]['id'])});}});}})['then'](respondWithStatusCode(_0x10851f,null))[_0x4c61('0x46')](handleError(_0x10851f,null));};exports[_0x4c61('0x83')]=function(_0x1858b6,_0x487871,_0x29be83){var _0x15906a={};var _0x2e32a6={};var _0x40f2e8;var _0x206c3b;return db[_0x4c61('0x2f')][_0x4c61('0x55')]({'where':{'id':_0x1858b6[_0x4c61('0x53')]['id']}})[_0x4c61('0x26')](handleEntityNotFound(_0x487871,null))[_0x4c61('0x26')](function(_0x350385){if(_0x350385){_0x40f2e8=_0x350385;_0x2e32a6['model']=_[_0x4c61('0x36')](db[_0x4c61('0x5a')][_0x4c61('0x30')]);_0x2e32a6[_0x4c61('0x37')]=_[_0x4c61('0x36')](_0x1858b6[_0x4c61('0x37')]);_0x2e32a6[_0x4c61('0x3f')]=_[_0x4c61('0x38')](_0x2e32a6['model'],_0x2e32a6[_0x4c61('0x37')]);_0x15906a[_0x4c61('0x39')]=_[_0x4c61('0x38')](_0x2e32a6[_0x4c61('0x34')],qs[_0x4c61('0x3a')](_0x1858b6[_0x4c61('0x37')]['fields']));_0x15906a[_0x4c61('0x39')]=_0x15906a[_0x4c61('0x39')][_0x4c61('0x48')]?_0x15906a['attributes']:_0x2e32a6[_0x4c61('0x34')];_0x15906a['order']=qs[_0x4c61('0x3d')](_0x1858b6['query'][_0x4c61('0x3d')]);_0x15906a[_0x4c61('0x3e')]=qs[_0x4c61('0x3f')](_[_0x4c61('0x40')](_0x1858b6['query'],_0x2e32a6[_0x4c61('0x3f')]));if(_0x1858b6[_0x4c61('0x37')]['filter']){_0x15906a[_0x4c61('0x3e')]=_['merge'](_0x15906a['where'],{'$or':_[_0x4c61('0x2e')](_0x15906a[_0x4c61('0x39')],function(_0x2bc5dc){var _0x5812c3={};_0x5812c3[_0x2bc5dc]={'$like':'%'+_0x1858b6[_0x4c61('0x37')]['filter']+'%'};return _0x5812c3;})});}_0x15906a=_[_0x4c61('0x42')]({},_0x15906a,_0x1858b6[_0x4c61('0x44')]);return _0x40f2e8[_0x4c61('0x83')](_0x15906a);}})[_0x4c61('0x26')](function(_0x325eba){if(_0x325eba){_0x206c3b=_0x325eba[_0x4c61('0x48')];if(!_0x1858b6[_0x4c61('0x37')][_0x4c61('0x84')]('nolimit')){_0x15906a[_0x4c61('0x3c')]=qs[_0x4c61('0x3c')](_0x1858b6[_0x4c61('0x37')]['limit']);_0x15906a['offset']=qs[_0x4c61('0x1c')](_0x1858b6[_0x4c61('0x37')]['offset']);}return _0x40f2e8[_0x4c61('0x83')](_0x15906a);}})['then'](function(_0x7aa753){if(_0x7aa753){return _0x7aa753?{'count':_0x206c3b,'rows':_0x7aa753}:null;}})[_0x4c61('0x26')](respondWithResult(_0x487871,null))[_0x4c61('0x46')](handleError(_0x487871,null));};
\ No newline at end of file
index 314e08b..06515a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9328=['emit','hasOwnProperty','exports','events','../../mysqldb','FaxQueue','setMaxListeners','save','update','remove'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9328,0x1d9));var _0x8932=function(_0x1dd64a,_0x212900){_0x1dd64a=_0x1dd64a-0x0;var _0x4b531c=_0x9328[_0x1dd64a];return _0x4b531c;};'use strict';var EventEmitter=require(_0x8932('0x0'));var FaxQueue=require(_0x8932('0x1'))['db'][_0x8932('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x8932('0x3')](0x0);var events={'afterCreate':_0x8932('0x4'),'afterUpdate':_0x8932('0x5'),'afterDestroy':_0x8932('0x6')};function emitEvent(_0x8568bb){return function(_0x4f382a,_0x10daf9,_0x1c04dd){FaxQueueEvents['emit'](_0x8568bb+':'+_0x4f382a['id'],_0x4f382a);FaxQueueEvents[_0x8932('0x7')](_0x8568bb,_0x4f382a);_0x1c04dd(null);};}for(var e in events){if(events[_0x8932('0x8')](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0x8932('0x9')]=FaxQueueEvents;
\ No newline at end of file
+var _0x93fc=['update','remove','emit','hasOwnProperty','exports','events','FaxQueue','setMaxListeners','save'];(function(_0x57ecd1,_0x235ad9){var _0x3822c0=function(_0x58d817){while(--_0x58d817){_0x57ecd1['push'](_0x57ecd1['shift']());}};_0x3822c0(++_0x235ad9);}(_0x93fc,0x113));var _0xc93f=function(_0xa92161,_0x414646){_0xa92161=_0xa92161-0x0;var _0x5b3d19=_0x93fc[_0xa92161];return _0x5b3d19;};'use strict';var EventEmitter=require(_0xc93f('0x0'));var FaxQueue=require('../../mysqldb')['db'][_0xc93f('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xc93f('0x2')](0x0);var events={'afterCreate':_0xc93f('0x3'),'afterUpdate':_0xc93f('0x4'),'afterDestroy':_0xc93f('0x5')};function emitEvent(_0x103e90){return function(_0x229c28,_0x4b1b59,_0x3199ff){FaxQueueEvents['emit'](_0x103e90+':'+_0x229c28['id'],_0x229c28);FaxQueueEvents[_0xc93f('0x6')](_0x103e90,_0x229c28);_0x3199ff(null);};}for(var e in events){if(events[_0xc93f('0x7')](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0xc93f('0x8')]=FaxQueueEvents;
\ No newline at end of file
index 50aa73b..7be4afe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc22a=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','fax_queues','lodash'];(function(_0x2a5f9e,_0x430d39){var _0xbf56b5=function(_0x5f41dc){while(--_0x5f41dc){_0x2a5f9e['push'](_0x2a5f9e['shift']());}};_0xbf56b5(++_0x430d39);}(_0xc22a,0x15d));var _0xac22=function(_0x5170fe,_0x104931){_0x5170fe=_0x5170fe-0x0;var _0x54e20b=_0xc22a[_0x5170fe];return _0x54e20b;};'use strict';var _=require(_0xac22('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xac22('0x1'));var moment=require(_0xac22('0x2'));var BPromise=require(_0xac22('0x3'));var rp=require(_0xac22('0x4'));var fs=require('fs');var path=require(_0xac22('0x5'));var rimraf=require(_0xac22('0x6'));var config=require(_0xac22('0x7'));var attributes=require('./faxQueue.attributes');module[_0xac22('0x8')]=function(_0x405f3e,_0x4b6853){return _0x405f3e['define']('FaxQueue',attributes,{'tableName':_0xac22('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2c07=['path','rimraf','../../config/environment','./faxQueue.attributes','exports','define','fax_queues','lodash','util','api','request-promise'];(function(_0x16dc94,_0x252b88){var _0x3947ac=function(_0x3e782e){while(--_0x3e782e){_0x16dc94['push'](_0x16dc94['shift']());}};_0x3947ac(++_0x252b88);}(_0x2c07,0x17d));var _0x72c0=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x2c07[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x72c0('0x0'));var util=require(_0x72c0('0x1'));var logger=require('../../config/logger')(_0x72c0('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x72c0('0x3'));var fs=require('fs');var path=require(_0x72c0('0x4'));var rimraf=require(_0x72c0('0x5'));var config=require(_0x72c0('0x6'));var attributes=require(_0x72c0('0x7'));module[_0x72c0('0x8')]=function(_0x11c6f1,_0x39bcbe){return _0x11c6f1[_0x72c0('0x9')]('FaxQueue',attributes,{'tableName':_0x72c0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 19520cd..bf4218e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x119b=['FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','FaxQueue','findAll','options','raw','where','attributes','limit','map','model','include','GetFaxQueue','find','ShowFaxQueue','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./faxQueue.socket','register','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x28b9dd,_0x2f2c7e){var _0x3c56ee=function(_0x13b03e){while(--_0x13b03e){_0x28b9dd['push'](_0x28b9dd['shift']());}};_0x3c56ee(++_0x2f2c7e);}(_0x119b,0xbc));var _0xb119=function(_0xee3051,_0xbe4f18){_0xee3051=_0xee3051-0x0;var _0x139e81=_0x119b[_0xee3051];return _0x139e81;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xb119('0x0'));var BPromise=require(_0xb119('0x1'));var rs=require(_0xb119('0x2'));var fs=require('fs');var Redis=require(_0xb119('0x3'));var db=require(_0xb119('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xb119('0x5'))(_0xb119('0x6'));var config=require(_0xb119('0x7'));var jayson=require(_0xb119('0x8'));var client=jayson[_0xb119('0x9')][_0xb119('0xa')]({'port':0x232a});config[_0xb119('0xb')]=_[_0xb119('0xc')](config[_0xb119('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xb119('0xd'))(new Redis(config[_0xb119('0xb')]));require(_0xb119('0xe'))[_0xb119('0xf')](socket);function respondWithRpcPromise(_0x3a474a,_0x3d25bc,_0x7fd2c7){return new BPromise(function(_0x3902cb,_0x5bb0d2){return client[_0xb119('0x10')](_0x3a474a,_0x7fd2c7)[_0xb119('0x11')](function(_0x8ffbb2){logger[_0xb119('0x12')](_0xb119('0x13'),_0x3d25bc,_0xb119('0x14'));logger[_0xb119('0x15')](_0xb119('0x16'),_0x3d25bc,_0xb119('0x14'),JSON[_0xb119('0x17')](_0x8ffbb2));if(_0x8ffbb2[_0xb119('0x18')]){if(_0x8ffbb2[_0xb119('0x18')][_0xb119('0x19')]===0x1f4){logger[_0xb119('0x18')]('FaxQueue,\x20%s,\x20%s',_0x3d25bc,_0x8ffbb2['error']['message']);return _0x5bb0d2(_0x8ffbb2[_0xb119('0x18')][_0xb119('0x1a')]);}logger[_0xb119('0x18')](_0xb119('0x13'),_0x3d25bc,_0x8ffbb2['error'][_0xb119('0x1a')]);return _0x3902cb(_0x8ffbb2[_0xb119('0x18')]['message']);}else{logger['info'](_0xb119('0x13'),_0x3d25bc,_0xb119('0x14'));_0x3902cb(_0x8ffbb2[_0xb119('0x1b')][_0xb119('0x1a')]);}})[_0xb119('0x1c')](function(_0x3ceaf6){logger[_0xb119('0x18')](_0xb119('0x13'),_0x3d25bc,_0x3ceaf6);_0x5bb0d2(_0x3ceaf6);});});}exports['GetFaxQueue']=function(_0x5739ef){var _0x57ecac=this;return new Promise(function(_0x29427a,_0x586fa2){return db[_0xb119('0x1d')][_0xb119('0x1e')]({'raw':_0x5739ef[_0xb119('0x1f')]?_0x5739ef[_0xb119('0x1f')][_0xb119('0x20')]===undefined?!![]:![]:!![],'where':_0x5739ef[_0xb119('0x1f')]?_0x5739ef[_0xb119('0x1f')][_0xb119('0x21')]||null:null,'attributes':_0x5739ef[_0xb119('0x1f')]?_0x5739ef[_0xb119('0x1f')][_0xb119('0x22')]||null:null,'limit':_0x5739ef['options']?_0x5739ef['options'][_0xb119('0x23')]||null:null,'include':_0x5739ef[_0xb119('0x1f')]?_0x5739ef['options']['include']?_[_0xb119('0x24')](_0x5739ef['options']['include'],function(_0x3e1946){return{'model':db[_0x3e1946[_0xb119('0x25')]],'as':_0x3e1946['as'],'attributes':_0x3e1946[_0xb119('0x22')],'include':_0x3e1946[_0xb119('0x26')]?_['map'](_0x3e1946['include'],function(_0x5dc882){return{'model':db[_0x5dc882['model']],'as':_0x5dc882['as'],'attributes':_0x5dc882[_0xb119('0x22')],'include':_0x5dc882[_0xb119('0x26')]?_[_0xb119('0x24')](_0x5dc882[_0xb119('0x26')],function(_0xbba2d5){return{'model':db[_0xbba2d5[_0xb119('0x25')]],'as':_0xbba2d5['as'],'attributes':_0xbba2d5[_0xb119('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2ac0e2){logger['info'](_0xb119('0x27'),_0x5739ef);logger[_0xb119('0x15')](_0xb119('0x27'),_0x5739ef,JSON['stringify'](_0x2ac0e2));_0x29427a(_0x2ac0e2);})[_0xb119('0x1c')](function(_0x213499){logger[_0xb119('0x18')](_0xb119('0x27'),_0x213499[_0xb119('0x1a')],_0x5739ef);_0x586fa2(_0x57ecac['error'](0x1f4,_0x213499[_0xb119('0x1a')]));});});};exports['ShowFaxQueue']=function(_0xf7fd52){var _0x1f0acd=this;return new Promise(function(_0x3458b4,_0x2b1a85){return db[_0xb119('0x1d')][_0xb119('0x28')]({'raw':_0xf7fd52[_0xb119('0x1f')]?_0xf7fd52[_0xb119('0x1f')][_0xb119('0x20')]===undefined?!![]:![]:!![],'where':_0xf7fd52[_0xb119('0x1f')]?_0xf7fd52['options']['where']||null:null,'attributes':_0xf7fd52['options']?_0xf7fd52[_0xb119('0x1f')][_0xb119('0x22')]||null:null,'include':_0xf7fd52[_0xb119('0x1f')]?_0xf7fd52[_0xb119('0x1f')][_0xb119('0x26')]?_[_0xb119('0x24')](_0xf7fd52[_0xb119('0x1f')]['include'],function(_0x1aa5db){return{'model':db[_0x1aa5db[_0xb119('0x25')]],'as':_0x1aa5db['as'],'attributes':_0x1aa5db[_0xb119('0x22')],'include':_0x1aa5db[_0xb119('0x26')]?_[_0xb119('0x24')](_0x1aa5db[_0xb119('0x26')],function(_0x362845){return{'model':db[_0x362845[_0xb119('0x25')]],'as':_0x362845['as'],'attributes':_0x362845[_0xb119('0x22')],'include':_0x362845[_0xb119('0x26')]?_[_0xb119('0x24')](_0x362845[_0xb119('0x26')],function(_0x2000dd){return{'model':db[_0x2000dd['model']],'as':_0x2000dd['as'],'attributes':_0x2000dd[_0xb119('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x13c149){logger[_0xb119('0x12')](_0xb119('0x29'),_0xf7fd52);logger[_0xb119('0x15')](_0xb119('0x29'),_0xf7fd52,JSON[_0xb119('0x17')](_0x13c149));_0x3458b4(_0x13c149);})[_0xb119('0x1c')](function(_0x2d5187){logger[_0xb119('0x18')]('ShowFaxQueue',_0x2d5187[_0xb119('0x1a')],_0xf7fd52);_0x2b1a85(_0x1f0acd[_0xb119('0x18')](0x1f4,_0x2d5187[_0xb119('0x1a')]));});});};
\ No newline at end of file
+var _0xba3d=['findAll','options','raw','where','attributes','include','map','GetFaxQueue','catch','ShowFaxQueue','model','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./faxQueue.socket','register','request','then','info','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxQueue,\x20%s,\x20%s','message','result','FaxQueue'];(function(_0x16c711,_0x19c10d){var _0x43e423=function(_0x4db493){while(--_0x4db493){_0x16c711['push'](_0x16c711['shift']());}};_0x43e423(++_0x19c10d);}(_0xba3d,0xa3));var _0xdba3=function(_0xef8146,_0x459c34){_0xef8146=_0xef8146-0x0;var _0x5a6cb0=_0xba3d[_0xef8146];return _0x5a6cb0;};'use strict';var _=require(_0xdba3('0x0'));var util=require('util');var moment=require(_0xdba3('0x1'));var BPromise=require(_0xdba3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdba3('0x3'))['db'];var utils=require(_0xdba3('0x4'));var logger=require(_0xdba3('0x5'))('rpc');var config=require(_0xdba3('0x6'));var jayson=require(_0xdba3('0x7'));var client=jayson[_0xdba3('0x8')][_0xdba3('0x9')]({'port':0x232a});config[_0xdba3('0xa')]=_['defaults'](config[_0xdba3('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xdba3('0xb'))(new Redis(config[_0xdba3('0xa')]));require(_0xdba3('0xc'))[_0xdba3('0xd')](socket);function respondWithRpcPromise(_0x59445a,_0x279349,_0x27b7bb){return new BPromise(function(_0x2507ba,_0x3e1be8){return client[_0xdba3('0xe')](_0x59445a,_0x27b7bb)[_0xdba3('0xf')](function(_0x5dd321){logger[_0xdba3('0x10')]('FaxQueue,\x20%s,\x20%s',_0x279349,_0xdba3('0x11'));logger[_0xdba3('0x12')](_0xdba3('0x13'),_0x279349,_0xdba3('0x11'),JSON[_0xdba3('0x14')](_0x5dd321));if(_0x5dd321[_0xdba3('0x15')]){if(_0x5dd321[_0xdba3('0x15')][_0xdba3('0x16')]===0x1f4){logger[_0xdba3('0x15')](_0xdba3('0x17'),_0x279349,_0x5dd321['error'][_0xdba3('0x18')]);return _0x3e1be8(_0x5dd321['error']['message']);}logger[_0xdba3('0x15')](_0xdba3('0x17'),_0x279349,_0x5dd321['error'][_0xdba3('0x18')]);return _0x2507ba(_0x5dd321[_0xdba3('0x15')][_0xdba3('0x18')]);}else{logger['info'](_0xdba3('0x17'),_0x279349,_0xdba3('0x11'));_0x2507ba(_0x5dd321[_0xdba3('0x19')][_0xdba3('0x18')]);}})['catch'](function(_0x453b53){logger[_0xdba3('0x15')](_0xdba3('0x17'),_0x279349,_0x453b53);_0x3e1be8(_0x453b53);});});}exports['GetFaxQueue']=function(_0x25d655){var _0x1a619c=this;return new Promise(function(_0x31e938,_0x42f786){return db[_0xdba3('0x1a')][_0xdba3('0x1b')]({'raw':_0x25d655[_0xdba3('0x1c')]?_0x25d655['options'][_0xdba3('0x1d')]===undefined?!![]:![]:!![],'where':_0x25d655[_0xdba3('0x1c')]?_0x25d655[_0xdba3('0x1c')][_0xdba3('0x1e')]||null:null,'attributes':_0x25d655[_0xdba3('0x1c')]?_0x25d655['options'][_0xdba3('0x1f')]||null:null,'limit':_0x25d655[_0xdba3('0x1c')]?_0x25d655['options']['limit']||null:null,'include':_0x25d655[_0xdba3('0x1c')]?_0x25d655['options'][_0xdba3('0x20')]?_['map'](_0x25d655[_0xdba3('0x1c')][_0xdba3('0x20')],function(_0x4c0a8d){return{'model':db[_0x4c0a8d['model']],'as':_0x4c0a8d['as'],'attributes':_0x4c0a8d[_0xdba3('0x1f')],'include':_0x4c0a8d['include']?_['map'](_0x4c0a8d[_0xdba3('0x20')],function(_0x4ebaa2){return{'model':db[_0x4ebaa2['model']],'as':_0x4ebaa2['as'],'attributes':_0x4ebaa2[_0xdba3('0x1f')],'include':_0x4ebaa2[_0xdba3('0x20')]?_[_0xdba3('0x21')](_0x4ebaa2[_0xdba3('0x20')],function(_0x49ee72){return{'model':db[_0x49ee72['model']],'as':_0x49ee72['as'],'attributes':_0x49ee72[_0xdba3('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xdba3('0xf')](function(_0x4e9e72){logger[_0xdba3('0x10')]('GetFaxQueue',_0x25d655);logger[_0xdba3('0x12')](_0xdba3('0x22'),_0x25d655,JSON['stringify'](_0x4e9e72));_0x31e938(_0x4e9e72);})[_0xdba3('0x23')](function(_0x30de8f){logger[_0xdba3('0x15')](_0xdba3('0x22'),_0x30de8f['message'],_0x25d655);_0x42f786(_0x1a619c[_0xdba3('0x15')](0x1f4,_0x30de8f['message']));});});};exports[_0xdba3('0x24')]=function(_0x3cc72a){var _0x6eb909=this;return new Promise(function(_0x444889,_0x261170){return db[_0xdba3('0x1a')]['find']({'raw':_0x3cc72a[_0xdba3('0x1c')]?_0x3cc72a[_0xdba3('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x3cc72a[_0xdba3('0x1c')]?_0x3cc72a[_0xdba3('0x1c')]['where']||null:null,'attributes':_0x3cc72a[_0xdba3('0x1c')]?_0x3cc72a[_0xdba3('0x1c')]['attributes']||null:null,'include':_0x3cc72a['options']?_0x3cc72a[_0xdba3('0x1c')][_0xdba3('0x20')]?_[_0xdba3('0x21')](_0x3cc72a[_0xdba3('0x1c')]['include'],function(_0x65d48e){return{'model':db[_0x65d48e[_0xdba3('0x25')]],'as':_0x65d48e['as'],'attributes':_0x65d48e[_0xdba3('0x1f')],'include':_0x65d48e['include']?_[_0xdba3('0x21')](_0x65d48e[_0xdba3('0x20')],function(_0x472302){return{'model':db[_0x472302[_0xdba3('0x25')]],'as':_0x472302['as'],'attributes':_0x472302['attributes'],'include':_0x472302[_0xdba3('0x20')]?_[_0xdba3('0x21')](_0x472302[_0xdba3('0x20')],function(_0x1900b0){return{'model':db[_0x1900b0[_0xdba3('0x25')]],'as':_0x1900b0['as'],'attributes':_0x1900b0[_0xdba3('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3a6cd0){logger['info'](_0xdba3('0x24'),_0x3cc72a);logger['debug'](_0xdba3('0x24'),_0x3cc72a,JSON[_0xdba3('0x14')](_0x3a6cd0));_0x444889(_0x3a6cd0);})[_0xdba3('0x23')](function(_0x1dfe9e){logger[_0xdba3('0x15')](_0xdba3('0x24'),_0x1dfe9e[_0xdba3('0x18')],_0x3cc72a);_0x261170(_0x6eb909[_0xdba3('0x15')](0x1f4,_0x1dfe9e['message']));});});};
\ No newline at end of file
index c32065a..698cd46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec46=['remove','update','emit','removeListener','register','length','faxQueue:','./faxQueue.events','save'];(function(_0x259b0a,_0x1ffef0){var _0x57fb1d=function(_0x58164b){while(--_0x58164b){_0x259b0a['push'](_0x259b0a['shift']());}};_0x57fb1d(++_0x1ffef0);}(_0xec46,0x19c));var _0x6ec4=function(_0x434672,_0x178e5b){_0x434672=_0x434672-0x0;var _0x1a6d6a=_0xec46[_0x434672];return _0x1a6d6a;};'use strict';var FaxQueueEvents=require(_0x6ec4('0x0'));var events=[_0x6ec4('0x1'),_0x6ec4('0x2'),_0x6ec4('0x3')];function createListener(_0x5e854b,_0x5052d2){return function(_0x307c5c){_0x5052d2[_0x6ec4('0x4')](_0x5e854b,_0x307c5c);};}function removeListener(_0x86b9f8,_0x53bbed){return function(){FaxQueueEvents[_0x6ec4('0x5')](_0x86b9f8,_0x53bbed);};}exports[_0x6ec4('0x6')]=function(_0x55b203){for(var _0x533fda=0x0,_0x55d260=events[_0x6ec4('0x7')];_0x533fda<_0x55d260;_0x533fda++){var _0x391ed9=events[_0x533fda];var _0x42b81b=createListener(_0x6ec4('0x8')+_0x391ed9,_0x55b203);FaxQueueEvents['on'](_0x391ed9,_0x42b81b);}};
\ No newline at end of file
+var _0x19ef=['register','length','faxQueue:','./faxQueue.events','update','emit','removeListener'];(function(_0x57bfb7,_0x4af626){var _0x147a93=function(_0x124b35){while(--_0x124b35){_0x57bfb7['push'](_0x57bfb7['shift']());}};_0x147a93(++_0x4af626);}(_0x19ef,0xea));var _0xf19e=function(_0x125d54,_0x1952f2){_0x125d54=_0x125d54-0x0;var _0x54d27f=_0x19ef[_0x125d54];return _0x54d27f;};'use strict';var FaxQueueEvents=require(_0xf19e('0x0'));var events=['save','remove',_0xf19e('0x1')];function createListener(_0xac1bf8,_0x44bb92){return function(_0x232c8a){_0x44bb92[_0xf19e('0x2')](_0xac1bf8,_0x232c8a);};}function removeListener(_0x5a57f8,_0x4a603e){return function(){FaxQueueEvents[_0xf19e('0x3')](_0x5a57f8,_0x4a603e);};}exports[_0xf19e('0x4')]=function(_0xff8def){for(var _0x12d8f3=0x0,_0x31ff9a=events[_0xf19e('0x5')];_0x12d8f3<_0x31ff9a;_0x12d8f3++){var _0x549633=events[_0x12d8f3];var _0x1c7426=createListener(_0xf19e('0x6')+_0x549633,_0xff8def);FaxQueueEvents['on'](_0x549633,_0x1c7426);}};
\ No newline at end of file
index b286dce..fb36530 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38b8=['Router','../../components/interaction/service','../../config/environment','isAuthenticated','index','/describe','/:id','show','/:id/members','getMembers','get','/:id/teams','getTeams','getAgents','post','create','addTeams','/:id/users','update','delete','destroy','removeAgents','exports','multer','path','connect-timeout'];(function(_0x25bea7,_0x49ab45){var _0x175952=function(_0x56a0b5){while(--_0x56a0b5){_0x25bea7['push'](_0x25bea7['shift']());}};_0x175952(++_0x49ab45);}(_0x38b8,0x7f));var _0x838b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x38b8[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x838b('0x0'));var util=require('util');var path=require(_0x838b('0x1'));var timeout=require(_0x838b('0x2'));var express=require('express');var router=express[_0x838b('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x838b('0x4'));var config=require(_0x838b('0x5'));var controller=require('./faxQueue.controller');router['get']('/',auth[_0x838b('0x6')](),controller[_0x838b('0x7')]);router['get'](_0x838b('0x8'),auth[_0x838b('0x6')](),controller['describe']);router['get'](_0x838b('0x9'),auth[_0x838b('0x6')](),controller[_0x838b('0xa')]);router['get'](_0x838b('0xb'),auth['isAuthenticated'](),controller[_0x838b('0xc')]);router[_0x838b('0xd')](_0x838b('0xe'),auth[_0x838b('0x6')](),controller[_0x838b('0xf')]);router[_0x838b('0xd')]('/:id/users',auth[_0x838b('0x6')](),controller[_0x838b('0x10')]);router[_0x838b('0x11')]('/',auth[_0x838b('0x6')](),controller[_0x838b('0x12')]);router[_0x838b('0x11')](_0x838b('0xe'),auth[_0x838b('0x6')](),controller[_0x838b('0x13')]);router['post'](_0x838b('0x14'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0x838b('0x9'),auth[_0x838b('0x6')](),controller[_0x838b('0x15')]);router[_0x838b('0x16')](_0x838b('0x9'),auth['isAuthenticated'](),controller[_0x838b('0x17')]);router[_0x838b('0x16')](_0x838b('0xe'),auth[_0x838b('0x6')](),controller['removeTeams']);router[_0x838b('0x16')](_0x838b('0x14'),auth['isAuthenticated'](),controller[_0x838b('0x18')]);module[_0x838b('0x19')]=router;
\ No newline at end of file
+var _0xd481=['create','addTeams','put','delete','destroy','removeTeams','removeAgents','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0xd481,0x1e4));var _0x1d48=function(_0x450468,_0x1f2655){_0x450468=_0x450468-0x0;var _0xbe24dc=_0xd481[_0x450468];return _0xbe24dc;};'use strict';var multer=require(_0x1d48('0x0'));var util=require('util');var path=require(_0x1d48('0x1'));var timeout=require(_0x1d48('0x2'));var express=require('express');var router=express[_0x1d48('0x3')]();var fs_extra=require(_0x1d48('0x4'));var auth=require(_0x1d48('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x1d48('0x6'));var controller=require('./faxQueue.controller');router[_0x1d48('0x7')]('/',auth[_0x1d48('0x8')](),controller['index']);router[_0x1d48('0x7')](_0x1d48('0x9'),auth[_0x1d48('0x8')](),controller[_0x1d48('0xa')]);router[_0x1d48('0x7')](_0x1d48('0xb'),auth[_0x1d48('0x8')](),controller[_0x1d48('0xc')]);router[_0x1d48('0x7')](_0x1d48('0xd'),auth[_0x1d48('0x8')](),controller[_0x1d48('0xe')]);router['get'](_0x1d48('0xf'),auth[_0x1d48('0x8')](),controller[_0x1d48('0x10')]);router[_0x1d48('0x7')](_0x1d48('0x11'),auth[_0x1d48('0x8')](),controller[_0x1d48('0x12')]);router[_0x1d48('0x13')]('/',auth[_0x1d48('0x8')](),controller[_0x1d48('0x14')]);router['post'](_0x1d48('0xf'),auth['isAuthenticated'](),controller[_0x1d48('0x15')]);router[_0x1d48('0x13')](_0x1d48('0x11'),auth[_0x1d48('0x8')](),controller['addAgents']);router[_0x1d48('0x16')](_0x1d48('0xb'),auth[_0x1d48('0x8')](),controller['update']);router[_0x1d48('0x17')](_0x1d48('0xb'),auth[_0x1d48('0x8')](),controller[_0x1d48('0x18')]);router[_0x1d48('0x17')](_0x1d48('0xf'),auth[_0x1d48('0x8')](),controller[_0x1d48('0x19')]);router[_0x1d48('0x17')]('/:id/users',auth['isAuthenticated'](),controller[_0x1d48('0x1a')]);module[_0x1d48('0x1b')]=router;
\ No newline at end of file
index 0eedcdb..8d60de7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1af3=['exports','STRING','DATE','moment','sequelize'];(function(_0x51cd34,_0x1486f7){var _0x345c33=function(_0x28e222){while(--_0x28e222){_0x51cd34['push'](_0x51cd34['shift']());}};_0x345c33(++_0x1486f7);}(_0x1af3,0x1ca));var _0x31af=function(_0x5da0d9,_0x49ee54){_0x5da0d9=_0x5da0d9-0x0;var _0x4b6d2f=_0x1af3[_0x5da0d9];return _0x4b6d2f;};'use strict';var moment=require(_0x31af('0x0'));var Sequelize=require(_0x31af('0x1'));module[_0x31af('0x2')]={'uniqueid':{'type':Sequelize[_0x31af('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x31af('0x3')]},'joinAt':{'type':Sequelize[_0x31af('0x4')]},'leaveAt':{'type':Sequelize[_0x31af('0x4')]},'acceptAt':{'type':Sequelize[_0x31af('0x4')]},'exitAt':{'type':Sequelize[_0x31af('0x4')]},'reason':{'type':Sequelize[_0x31af('0x3')]}};
\ No newline at end of file
+var _0x00af=['STRING','DATE','exports'];(function(_0x393d1e,_0x3d52ae){var _0x1da653=function(_0xefa197){while(--_0xefa197){_0x393d1e['push'](_0x393d1e['shift']());}};_0x1da653(++_0x3d52ae);}(_0x00af,0xd7));var _0xf00a=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x00af[_0x19e35c];return _0x3e1fe8;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0xf00a('0x0')]={'uniqueid':{'type':Sequelize[_0xf00a('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0xf00a('0x1')]},'joinAt':{'type':Sequelize[_0xf00a('0x2')]},'leaveAt':{'type':Sequelize[_0xf00a('0x2')]},'acceptAt':{'type':Sequelize[_0xf00a('0x2')]},'exitAt':{'type':Sequelize[_0xf00a('0x2')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 38ed784..5a1c849 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fc2=['map','type','key','model','query','attributes','intersection','fields','length','nolimit','sort','where','filters','pick','filter','merge','options','FaxQueueReport','includeAll','include','findAll','rows','catch','show','params','rawAttributes','keys','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','end','error','stack','name','index'];(function(_0x167a99,_0x1bbb59){var _0x442d62=function(_0x12c3f8){while(--_0x12c3f8){_0x167a99['push'](_0x167a99['shift']());}};_0x442d62(++_0x1bbb59);}(_0x0fc2,0x6e));var _0x20fc=function(_0x19e8c0,_0x942e5c){_0x19e8c0=_0x19e8c0-0x0;var _0x219d83=_0x0fc2[_0x19e8c0];return _0x219d83;};'use strict';var emlformat=require(_0x20fc('0x0'));var rimraf=require(_0x20fc('0x1'));var zipdir=require(_0x20fc('0x2'));var jsonpatch=require(_0x20fc('0x3'));var rp=require('request-promise');var moment=require(_0x20fc('0x4'));var BPromise=require(_0x20fc('0x5'));var Mustache=require(_0x20fc('0x6'));var util=require(_0x20fc('0x7'));var path=require(_0x20fc('0x8'));var sox=require(_0x20fc('0x9'));var csv=require(_0x20fc('0xa'));var ejs=require(_0x20fc('0xb'));var fs=require('fs');var fs_extra=require(_0x20fc('0xc'));var _=require(_0x20fc('0xd'));var squel=require(_0x20fc('0xe'));var crypto=require(_0x20fc('0xf'));var jsforce=require(_0x20fc('0x10'));var deskjs=require(_0x20fc('0x11'));var toCsv=require(_0x20fc('0xa'));var querystring=require(_0x20fc('0x12'));var Papa=require('papaparse');var Redis=require(_0x20fc('0x13'));var authService=require(_0x20fc('0x14'));var qs=require(_0x20fc('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x20fc('0x16'));var logger=require(_0x20fc('0x17'))(_0x20fc('0x18'));var utils=require(_0x20fc('0x19'));var config=require(_0x20fc('0x1a'));var licenseUtil=require(_0x20fc('0x1b'));var db=require(_0x20fc('0x1c'))['db'];function respondWithStatusCode(_0x395d8b,_0x552afe){_0x552afe=_0x552afe||0xcc;return function(_0xe97a3e){if(_0xe97a3e){return _0x395d8b['sendStatus'](_0x552afe);}return _0x395d8b[_0x20fc('0x1d')](_0x552afe)['end']();};}function respondWithResult(_0x2f0048,_0x4c7f0e){_0x4c7f0e=_0x4c7f0e||0xc8;return function(_0x520c02){if(_0x520c02){return _0x2f0048[_0x20fc('0x1d')](_0x4c7f0e)[_0x20fc('0x1e')](_0x520c02);}};}function respondWithFilteredResult(_0x25f620,_0x38a6da){return function(_0x511e79){if(_0x511e79){var _0x29fe77=typeof _0x38a6da[_0x20fc('0x1f')]==='undefined'&&typeof _0x38a6da['limit']===_0x20fc('0x20');var _0x3dbdc0=_0x511e79[_0x20fc('0x21')];var _0x421ff8=_0x29fe77?0x0:_0x38a6da['offset'];var _0x3f4190=_0x29fe77?_0x511e79[_0x20fc('0x21')]:_0x38a6da[_0x20fc('0x1f')]+_0x38a6da[_0x20fc('0x22')];var _0x1eaebd;if(_0x3f4190>=_0x3dbdc0){_0x3f4190=_0x3dbdc0;_0x1eaebd=0xc8;}else{_0x1eaebd=0xce;}_0x25f620[_0x20fc('0x1d')](_0x1eaebd);return _0x25f620[_0x20fc('0x23')](_0x20fc('0x24'),_0x421ff8+'-'+_0x3f4190+'/'+_0x3dbdc0)[_0x20fc('0x1e')](_0x511e79);}return null;};}function patchUpdates(_0x41be86){return function(_0x4e2b0c){try{jsonpatch[_0x20fc('0x25')](_0x4e2b0c,_0x41be86,!![]);}catch(_0x14b835){return BPromise['reject'](_0x14b835);}return _0x4e2b0c[_0x20fc('0x26')]();};}function saveUpdates(_0xd6e20e,_0x359881){return function(_0x39339a){if(_0x39339a){return _0x39339a[_0x20fc('0x27')](_0xd6e20e)[_0x20fc('0x28')](function(_0x1dcafe){return _0x1dcafe;});}return null;};}function removeEntity(_0x4bc36b,_0x37d3ad){return function(_0x25d8d9){if(_0x25d8d9){return _0x25d8d9['destroy']()[_0x20fc('0x28')](function(){_0x4bc36b[_0x20fc('0x1d')](0xcc)[_0x20fc('0x29')]();});}};}function handleEntityNotFound(_0x2ed63f,_0x4feaa1){return function(_0x1d1393){if(!_0x1d1393){_0x2ed63f['sendStatus'](0x194);}return _0x1d1393;};}function handleError(_0x4f9b49,_0x1b80f){_0x1b80f=_0x1b80f||0x1f4;return function(_0x554092){logger[_0x20fc('0x2a')](_0x554092[_0x20fc('0x2b')]);if(_0x554092[_0x20fc('0x2c')]){delete _0x554092['name'];}_0x4f9b49['status'](_0x1b80f)['send'](_0x554092);};}exports[_0x20fc('0x2d')]=function(_0x295f9a,_0x171d14){var _0x2c6408={},_0x5d705f={},_0x498468={'count':0x0,'rows':[]};var _0x2e4115=_[_0x20fc('0x2e')](db['FaxQueueReport']['rawAttributes'],function(_0x37fb71){return{'name':_0x37fb71['fieldName'],'type':_0x37fb71[_0x20fc('0x2f')][_0x20fc('0x30')]};});_0x5d705f[_0x20fc('0x31')]=_[_0x20fc('0x2e')](_0x2e4115,_0x20fc('0x2c'));_0x5d705f[_0x20fc('0x32')]=_['keys'](_0x295f9a[_0x20fc('0x32')]);_0x5d705f['filters']=_['intersection'](_0x5d705f[_0x20fc('0x31')],_0x5d705f['query']);_0x2c6408[_0x20fc('0x33')]=_[_0x20fc('0x34')](_0x5d705f[_0x20fc('0x31')],qs[_0x20fc('0x35')](_0x295f9a[_0x20fc('0x32')]['fields']));_0x2c6408[_0x20fc('0x33')]=_0x2c6408['attributes'][_0x20fc('0x36')]?_0x2c6408[_0x20fc('0x33')]:_0x5d705f['model'];if(!_0x295f9a[_0x20fc('0x32')]['hasOwnProperty'](_0x20fc('0x37'))){_0x2c6408['limit']=qs['limit'](_0x295f9a[_0x20fc('0x32')][_0x20fc('0x22')]);_0x2c6408[_0x20fc('0x1f')]=qs[_0x20fc('0x1f')](_0x295f9a[_0x20fc('0x32')][_0x20fc('0x1f')]);}_0x2c6408['order']=qs[_0x20fc('0x38')](_0x295f9a[_0x20fc('0x32')][_0x20fc('0x38')]);_0x2c6408[_0x20fc('0x39')]=qs[_0x20fc('0x3a')](_[_0x20fc('0x3b')](_0x295f9a[_0x20fc('0x32')],_0x5d705f[_0x20fc('0x3a')]),_0x2e4115);if(_0x295f9a['query'][_0x20fc('0x3c')]){_0x2c6408[_0x20fc('0x39')]=_[_0x20fc('0x3d')](_0x2c6408[_0x20fc('0x39')],{'$or':_[_0x20fc('0x2e')](_0x2e4115,function(_0x2627b9){if(_0x2627b9['type']!=='VIRTUAL'){var _0x4ee5a8={};_0x4ee5a8[_0x2627b9[_0x20fc('0x2c')]]={'$like':'%'+_0x295f9a['query'][_0x20fc('0x3c')]+'%'};return _0x4ee5a8;}})});}_0x2c6408=_[_0x20fc('0x3d')]({},_0x2c6408,_0x295f9a[_0x20fc('0x3e')]);var _0x49ed2c={'where':_0x2c6408[_0x20fc('0x39')]};return db[_0x20fc('0x3f')][_0x20fc('0x21')](_0x49ed2c)[_0x20fc('0x28')](function(_0x82c61){_0x498468[_0x20fc('0x21')]=_0x82c61;if(_0x295f9a[_0x20fc('0x32')][_0x20fc('0x40')]){_0x2c6408[_0x20fc('0x41')]=[{'all':!![]}];}return db[_0x20fc('0x3f')][_0x20fc('0x42')](_0x2c6408);})[_0x20fc('0x28')](function(_0x5ab2c9){_0x498468[_0x20fc('0x43')]=_0x5ab2c9;return _0x498468;})[_0x20fc('0x28')](respondWithFilteredResult(_0x171d14,_0x2c6408))[_0x20fc('0x44')](handleError(_0x171d14,null));};exports[_0x20fc('0x45')]=function(_0x592208,_0x57469d){var _0x249adb={'raw':!![],'where':{'id':_0x592208[_0x20fc('0x46')]['id']}},_0x2f8ee2={};_0x2f8ee2[_0x20fc('0x31')]=_['keys'](db['FaxQueueReport'][_0x20fc('0x47')]);_0x2f8ee2[_0x20fc('0x32')]=_[_0x20fc('0x48')](_0x592208[_0x20fc('0x32')]);_0x2f8ee2['filters']=_['intersection'](_0x2f8ee2[_0x20fc('0x31')],_0x2f8ee2[_0x20fc('0x32')]);_0x249adb[_0x20fc('0x33')]=_[_0x20fc('0x34')](_0x2f8ee2[_0x20fc('0x31')],qs['fields'](_0x592208[_0x20fc('0x32')]['fields']));_0x249adb[_0x20fc('0x33')]=_0x249adb[_0x20fc('0x33')][_0x20fc('0x36')]?_0x249adb[_0x20fc('0x33')]:_0x2f8ee2[_0x20fc('0x31')];if(_0x592208[_0x20fc('0x32')][_0x20fc('0x40')]){_0x249adb[_0x20fc('0x41')]=[{'all':!![]}];}_0x249adb=_[_0x20fc('0x3d')]({},_0x249adb,_0x592208[_0x20fc('0x3e')]);return db[_0x20fc('0x3f')][_0x20fc('0x49')](_0x249adb)[_0x20fc('0x28')](handleEntityNotFound(_0x57469d,null))[_0x20fc('0x28')](respondWithResult(_0x57469d,null))[_0x20fc('0x44')](handleError(_0x57469d,null));};exports[_0x20fc('0x4a')]=function(_0x4da6de,_0x21f50e){return db[_0x20fc('0x3f')][_0x20fc('0x4a')](_0x4da6de[_0x20fc('0x4b')],{})[_0x20fc('0x28')](respondWithResult(_0x21f50e,0xc9))[_0x20fc('0x44')](handleError(_0x21f50e,null));};exports[_0x20fc('0x27')]=function(_0x2a2897,_0x35d84c){if(_0x2a2897[_0x20fc('0x4b')]['id']){delete _0x2a2897[_0x20fc('0x4b')]['id'];}return db['FaxQueueReport'][_0x20fc('0x49')]({'where':{'id':_0x2a2897[_0x20fc('0x46')]['id']}})[_0x20fc('0x28')](handleEntityNotFound(_0x35d84c,null))[_0x20fc('0x28')](saveUpdates(_0x2a2897[_0x20fc('0x4b')],null))[_0x20fc('0x28')](respondWithResult(_0x35d84c,null))['catch'](handleError(_0x35d84c,null));};exports[_0x20fc('0x4c')]=function(_0x236628,_0x1f5975){return db[_0x20fc('0x3f')][_0x20fc('0x49')]({'where':{'id':_0x236628[_0x20fc('0x46')]['id']}})[_0x20fc('0x28')](handleEntityNotFound(_0x1f5975,null))[_0x20fc('0x28')](removeEntity(_0x1f5975,null))['catch'](handleError(_0x1f5975,null));};exports['describe']=function(_0x3c48f0,_0x113aa8){return db[_0x20fc('0x3f')][_0x20fc('0x4d')]()['then'](respondWithResult(_0x113aa8,null))['catch'](handleError(_0x113aa8,null));};
\ No newline at end of file
+var _0xdecb=['rows','catch','keys','find','body','params','describe','rimraf','zip-dir','fast-json-patch','moment','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','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','name','send','index','map','FaxQueueReport','rawAttributes','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include'];(function(_0x10f10b,_0x647c46){var _0x3f45db=function(_0x8bba40){while(--_0x8bba40){_0x10f10b['push'](_0x10f10b['shift']());}};_0x3f45db(++_0x647c46);}(_0xdecb,0xe2));var _0xbdec=function(_0x5cb817,_0x191e02){_0x5cb817=_0x5cb817-0x0;var _0x42870f=_0xdecb[_0x5cb817];return _0x42870f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbdec('0x0'));var zipdir=require(_0xbdec('0x1'));var jsonpatch=require(_0xbdec('0x2'));var rp=require('request-promise');var moment=require(_0xbdec('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xbdec('0x4'));var util=require(_0xbdec('0x5'));var path=require(_0xbdec('0x6'));var sox=require(_0xbdec('0x7'));var csv=require(_0xbdec('0x8'));var ejs=require(_0xbdec('0x9'));var fs=require('fs');var fs_extra=require(_0xbdec('0xa'));var _=require('lodash');var squel=require(_0xbdec('0xb'));var crypto=require(_0xbdec('0xc'));var jsforce=require(_0xbdec('0xd'));var deskjs=require(_0xbdec('0xe'));var toCsv=require(_0xbdec('0x8'));var querystring=require(_0xbdec('0xf'));var Papa=require(_0xbdec('0x10'));var Redis=require(_0xbdec('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xbdec('0x12'));var as=require(_0xbdec('0x13'));var hardwareService=require(_0xbdec('0x14'));var logger=require(_0xbdec('0x15'))('api');var utils=require(_0xbdec('0x16'));var config=require(_0xbdec('0x17'));var licenseUtil=require(_0xbdec('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23e7b1,_0xad1fc2){_0xad1fc2=_0xad1fc2||0xcc;return function(_0x1c6082){if(_0x1c6082){return _0x23e7b1[_0xbdec('0x19')](_0xad1fc2);}return _0x23e7b1[_0xbdec('0x1a')](_0xad1fc2)[_0xbdec('0x1b')]();};}function respondWithResult(_0x102bf3,_0x12ce2d){_0x12ce2d=_0x12ce2d||0xc8;return function(_0x37c79a){if(_0x37c79a){return _0x102bf3[_0xbdec('0x1a')](_0x12ce2d)[_0xbdec('0x1c')](_0x37c79a);}};}function respondWithFilteredResult(_0x36f697,_0x577c2e){return function(_0x1a34ef){if(_0x1a34ef){var _0x358b6f=typeof _0x577c2e[_0xbdec('0x1d')]===_0xbdec('0x1e')&&typeof _0x577c2e[_0xbdec('0x1f')]===_0xbdec('0x1e');var _0x31a62d=_0x1a34ef[_0xbdec('0x20')];var _0x2b9288=_0x358b6f?0x0:_0x577c2e['offset'];var _0x1206b8=_0x358b6f?_0x1a34ef['count']:_0x577c2e['offset']+_0x577c2e[_0xbdec('0x1f')];var _0x11ea74;if(_0x1206b8>=_0x31a62d){_0x1206b8=_0x31a62d;_0x11ea74=0xc8;}else{_0x11ea74=0xce;}_0x36f697[_0xbdec('0x1a')](_0x11ea74);return _0x36f697[_0xbdec('0x21')](_0xbdec('0x22'),_0x2b9288+'-'+_0x1206b8+'/'+_0x31a62d)['json'](_0x1a34ef);}return null;};}function patchUpdates(_0x34c8f6){return function(_0x5d0711){try{jsonpatch[_0xbdec('0x23')](_0x5d0711,_0x34c8f6,!![]);}catch(_0x5360e8){return BPromise['reject'](_0x5360e8);}return _0x5d0711[_0xbdec('0x24')]();};}function saveUpdates(_0x520e5a,_0x3ba757){return function(_0x5082bb){if(_0x5082bb){return _0x5082bb[_0xbdec('0x25')](_0x520e5a)[_0xbdec('0x26')](function(_0x26a219){return _0x26a219;});}return null;};}function removeEntity(_0x25a0c6,_0x1a93e1){return function(_0x490d22){if(_0x490d22){return _0x490d22[_0xbdec('0x27')]()[_0xbdec('0x26')](function(){_0x25a0c6[_0xbdec('0x1a')](0xcc)[_0xbdec('0x1b')]();});}};}function handleEntityNotFound(_0x45eb56,_0x44e7f7){return function(_0x1d6ed2){if(!_0x1d6ed2){_0x45eb56[_0xbdec('0x19')](0x194);}return _0x1d6ed2;};}function handleError(_0xad0981,_0x4d1df4){_0x4d1df4=_0x4d1df4||0x1f4;return function(_0x5aae12){logger['error'](_0x5aae12['stack']);if(_0x5aae12[_0xbdec('0x28')]){delete _0x5aae12[_0xbdec('0x28')];}_0xad0981[_0xbdec('0x1a')](_0x4d1df4)[_0xbdec('0x29')](_0x5aae12);};}exports[_0xbdec('0x2a')]=function(_0x516087,_0x1c1f28){var _0x710f95={},_0x11c971={},_0x3373c0={'count':0x0,'rows':[]};var _0x58d285=_[_0xbdec('0x2b')](db[_0xbdec('0x2c')][_0xbdec('0x2d')],function(_0x17441d){return{'name':_0x17441d['fieldName'],'type':_0x17441d[_0xbdec('0x2e')][_0xbdec('0x2f')]};});_0x11c971[_0xbdec('0x30')]=_['map'](_0x58d285,_0xbdec('0x28'));_0x11c971['query']=_['keys'](_0x516087[_0xbdec('0x31')]);_0x11c971[_0xbdec('0x32')]=_['intersection'](_0x11c971['model'],_0x11c971[_0xbdec('0x31')]);_0x710f95[_0xbdec('0x33')]=_[_0xbdec('0x34')](_0x11c971[_0xbdec('0x30')],qs[_0xbdec('0x35')](_0x516087[_0xbdec('0x31')]['fields']));_0x710f95['attributes']=_0x710f95[_0xbdec('0x33')][_0xbdec('0x36')]?_0x710f95[_0xbdec('0x33')]:_0x11c971[_0xbdec('0x30')];if(!_0x516087['query'][_0xbdec('0x37')](_0xbdec('0x38'))){_0x710f95['limit']=qs[_0xbdec('0x1f')](_0x516087['query'][_0xbdec('0x1f')]);_0x710f95[_0xbdec('0x1d')]=qs['offset'](_0x516087['query'][_0xbdec('0x1d')]);}_0x710f95['order']=qs[_0xbdec('0x39')](_0x516087[_0xbdec('0x31')][_0xbdec('0x39')]);_0x710f95[_0xbdec('0x3a')]=qs[_0xbdec('0x32')](_[_0xbdec('0x3b')](_0x516087['query'],_0x11c971[_0xbdec('0x32')]),_0x58d285);if(_0x516087['query']['filter']){_0x710f95[_0xbdec('0x3a')]=_[_0xbdec('0x3c')](_0x710f95[_0xbdec('0x3a')],{'$or':_[_0xbdec('0x2b')](_0x58d285,function(_0x44b2fa){if(_0x44b2fa['type']!==_0xbdec('0x3d')){var _0x426a99={};_0x426a99[_0x44b2fa[_0xbdec('0x28')]]={'$like':'%'+_0x516087[_0xbdec('0x31')][_0xbdec('0x3e')]+'%'};return _0x426a99;}})});}_0x710f95=_[_0xbdec('0x3c')]({},_0x710f95,_0x516087[_0xbdec('0x3f')]);var _0x421ca5={'where':_0x710f95[_0xbdec('0x3a')]};return db[_0xbdec('0x2c')][_0xbdec('0x20')](_0x421ca5)['then'](function(_0x2b66fa){_0x3373c0[_0xbdec('0x20')]=_0x2b66fa;if(_0x516087[_0xbdec('0x31')][_0xbdec('0x40')]){_0x710f95[_0xbdec('0x41')]=[{'all':!![]}];}return db[_0xbdec('0x2c')]['findAll'](_0x710f95);})['then'](function(_0x43828b){_0x3373c0[_0xbdec('0x42')]=_0x43828b;return _0x3373c0;})[_0xbdec('0x26')](respondWithFilteredResult(_0x1c1f28,_0x710f95))[_0xbdec('0x43')](handleError(_0x1c1f28,null));};exports['show']=function(_0x4b0451,_0x127e65){var _0x2822fa={'raw':!![],'where':{'id':_0x4b0451['params']['id']}},_0x167f9f={};_0x167f9f[_0xbdec('0x30')]=_[_0xbdec('0x44')](db['FaxQueueReport'][_0xbdec('0x2d')]);_0x167f9f[_0xbdec('0x31')]=_[_0xbdec('0x44')](_0x4b0451[_0xbdec('0x31')]);_0x167f9f[_0xbdec('0x32')]=_[_0xbdec('0x34')](_0x167f9f[_0xbdec('0x30')],_0x167f9f[_0xbdec('0x31')]);_0x2822fa[_0xbdec('0x33')]=_[_0xbdec('0x34')](_0x167f9f[_0xbdec('0x30')],qs[_0xbdec('0x35')](_0x4b0451[_0xbdec('0x31')][_0xbdec('0x35')]));_0x2822fa[_0xbdec('0x33')]=_0x2822fa['attributes'][_0xbdec('0x36')]?_0x2822fa[_0xbdec('0x33')]:_0x167f9f[_0xbdec('0x30')];if(_0x4b0451[_0xbdec('0x31')]['includeAll']){_0x2822fa[_0xbdec('0x41')]=[{'all':!![]}];}_0x2822fa=_['merge']({},_0x2822fa,_0x4b0451[_0xbdec('0x3f')]);return db['FaxQueueReport'][_0xbdec('0x45')](_0x2822fa)[_0xbdec('0x26')](handleEntityNotFound(_0x127e65,null))['then'](respondWithResult(_0x127e65,null))['catch'](handleError(_0x127e65,null));};exports['create']=function(_0x75e4e4,_0x42d130){return db[_0xbdec('0x2c')]['create'](_0x75e4e4[_0xbdec('0x46')],{})[_0xbdec('0x26')](respondWithResult(_0x42d130,0xc9))[_0xbdec('0x43')](handleError(_0x42d130,null));};exports[_0xbdec('0x25')]=function(_0x708d93,_0x2400a0){if(_0x708d93['body']['id']){delete _0x708d93['body']['id'];}return db[_0xbdec('0x2c')][_0xbdec('0x45')]({'where':{'id':_0x708d93[_0xbdec('0x47')]['id']}})[_0xbdec('0x26')](handleEntityNotFound(_0x2400a0,null))[_0xbdec('0x26')](saveUpdates(_0x708d93[_0xbdec('0x46')],null))[_0xbdec('0x26')](respondWithResult(_0x2400a0,null))['catch'](handleError(_0x2400a0,null));};exports[_0xbdec('0x27')]=function(_0x92cca0,_0x2410fb){return db[_0xbdec('0x2c')][_0xbdec('0x45')]({'where':{'id':_0x92cca0[_0xbdec('0x47')]['id']}})[_0xbdec('0x26')](handleEntityNotFound(_0x2410fb,null))[_0xbdec('0x26')](removeEntity(_0x2410fb,null))[_0xbdec('0x43')](handleError(_0x2410fb,null));};exports[_0xbdec('0x48')]=function(_0x225536,_0x4451c7){return db[_0xbdec('0x2c')][_0xbdec('0x48')]()[_0xbdec('0x26')](respondWithResult(_0x4451c7,null))['catch'](handleError(_0x4451c7,null));};
\ No newline at end of file
index e25b276..899596d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['path','../../config/environment','./faxQueueReport.attributes','define','FaxQueueReport','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x3ffbb2,_0x2ef801){var _0x51dcae=function(_0x25bf85){while(--_0x25bf85){_0x3ffbb2['push'](_0x3ffbb2['shift']());}};_0x51dcae(++_0x2ef801);}(_0x53ec,0x192));var _0xc53e=function(_0x421263,_0x18187d){_0x421263=_0x421263-0x0;var _0x34e4b5=_0x53ec[_0x421263];return _0x34e4b5;};'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':'report_fax_queue','paranoid':![],'indexes':[{'name':_0xc53e('0xb'),'fields':[_0xc53e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','uniqueid','lodash'];(function(_0x4d77e5,_0x54502f){var _0xb7db18=function(_0x22abfa){while(--_0x22abfa){_0x4d77e5['push'](_0x4d77e5['shift']());}};_0xb7db18(++_0x54502f);}(_0x326f,0xd1));var _0xf326=function(_0x229218,_0x2ed6e4){_0x229218=_0x229218-0x0;var _0x1b4eb8=_0x326f[_0x229218];return _0x1b4eb8;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 174418f..824857f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0820=['update','where','attributes','limit','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','code','error','message','result','CreateFaxQueueReport','create','body','options','raw','stringify','UpdateFaxQueueReport'];(function(_0x1bafb1,_0x3f4d43){var _0x1e9aa9=function(_0x34c867){while(--_0x34c867){_0x1bafb1['push'](_0x1bafb1['shift']());}};_0x1e9aa9(++_0x3f4d43);}(_0x0820,0xb4));var _0x0082=function(_0x24ed12,_0x12b2f0){_0x24ed12=_0x24ed12-0x0;var _0x2e9c55=_0x0820[_0x24ed12];return _0x2e9c55;};'use strict';var _=require(_0x0082('0x0'));var util=require(_0x0082('0x1'));var moment=require(_0x0082('0x2'));var BPromise=require(_0x0082('0x3'));var rs=require(_0x0082('0x4'));var fs=require('fs');var Redis=require(_0x0082('0x5'));var db=require(_0x0082('0x6'))['db'];var utils=require(_0x0082('0x7'));var logger=require('../../config/logger')(_0x0082('0x8'));var config=require('../../config/environment');var jayson=require(_0x0082('0x9'));var client=jayson[_0x0082('0xa')][_0x0082('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x160446,_0x5a66b2,_0x40e41b){return new BPromise(function(_0x170d3f,_0xf8bf25){return client[_0x0082('0xc')](_0x160446,_0x40e41b)[_0x0082('0xd')](function(_0x251b6e){logger[_0x0082('0xe')](_0x0082('0xf'),_0x5a66b2,_0x0082('0x10'));logger[_0x0082('0x11')](_0x0082('0x12'),_0x5a66b2,_0x0082('0x10'),JSON['stringify'](_0x251b6e));if(_0x251b6e['error']){if(_0x251b6e['error'][_0x0082('0x13')]===0x1f4){logger['error']('FaxQueueReport,\x20%s,\x20%s',_0x5a66b2,_0x251b6e[_0x0082('0x14')][_0x0082('0x15')]);return _0xf8bf25(_0x251b6e[_0x0082('0x14')]['message']);}logger[_0x0082('0x14')](_0x0082('0xf'),_0x5a66b2,_0x251b6e[_0x0082('0x14')][_0x0082('0x15')]);return _0x170d3f(_0x251b6e[_0x0082('0x14')]['message']);}else{logger['info'](_0x0082('0xf'),_0x5a66b2,_0x0082('0x10'));_0x170d3f(_0x251b6e[_0x0082('0x16')]['message']);}})['catch'](function(_0x2bcc69){logger[_0x0082('0x14')](_0x0082('0xf'),_0x5a66b2,_0x2bcc69);_0xf8bf25(_0x2bcc69);});});}exports[_0x0082('0x17')]=function(_0x56f71a){var _0x2db489=this;return new Promise(function(_0x582c04,_0x67b04c){return db['FaxQueueReport'][_0x0082('0x18')](_0x56f71a[_0x0082('0x19')],{'raw':_0x56f71a[_0x0082('0x1a')]?_0x56f71a[_0x0082('0x1a')][_0x0082('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x126d6e){logger[_0x0082('0xe')](_0x0082('0x17'),_0x56f71a);logger[_0x0082('0x11')](_0x0082('0x17'),_0x56f71a,JSON[_0x0082('0x1c')](_0x126d6e));_0x582c04(_0x126d6e);})['catch'](function(_0x59e461){logger[_0x0082('0x14')](_0x0082('0x17'),_0x59e461[_0x0082('0x15')],_0x56f71a);_0x67b04c(_0x2db489[_0x0082('0x14')](0x1f4,_0x59e461[_0x0082('0x15')]));});});};exports[_0x0082('0x1d')]=function(_0x32934d){var _0x446e4c=this;return new Promise(function(_0x11cac2,_0x3f3ea4){return db['FaxQueueReport'][_0x0082('0x1e')](_0x32934d[_0x0082('0x19')],{'raw':_0x32934d[_0x0082('0x1a')]?_0x32934d[_0x0082('0x1a')][_0x0082('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x32934d[_0x0082('0x1a')]?_0x32934d[_0x0082('0x1a')][_0x0082('0x1f')]||null:null,'attributes':_0x32934d[_0x0082('0x1a')]?_0x32934d[_0x0082('0x1a')][_0x0082('0x20')]||null:null,'limit':_0x32934d[_0x0082('0x1a')]?_0x32934d[_0x0082('0x1a')][_0x0082('0x21')]||null:null})['then'](function(_0x44512b){logger[_0x0082('0xe')]('UpdateFaxQueueReport',_0x32934d);logger['debug'](_0x0082('0x1d'),_0x32934d,JSON[_0x0082('0x1c')](_0x44512b));_0x11cac2(_0x44512b);})[_0x0082('0x22')](function(_0xa3eb00){logger[_0x0082('0x14')](_0x0082('0x1d'),_0xa3eb00[_0x0082('0x15')],_0x32934d);_0x3f3ea4(_0x446e4c[_0x0082('0x14')](0x1f4,_0xa3eb00['message']));});});};
\ No newline at end of file
+var _0x1d4b=['attributes','limit','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','request','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','CreateFaxQueueReport','FaxQueueReport','body','options','raw','then','UpdateFaxQueueReport','update','where'];(function(_0x3c4737,_0x2329ec){var _0x2bb926=function(_0x3b9605){while(--_0x3b9605){_0x3c4737['push'](_0x3c4737['shift']());}};_0x2bb926(++_0x2329ec);}(_0x1d4b,0x1d3));var _0xb1d4=function(_0x185f01,_0x3930e3){_0x185f01=_0x185f01-0x0;var _0x330844=_0x1d4b[_0x185f01];return _0x330844;};'use strict';var _=require(_0xb1d4('0x0'));var util=require(_0xb1d4('0x1'));var moment=require(_0xb1d4('0x2'));var BPromise=require('bluebird');var rs=require(_0xb1d4('0x3'));var fs=require('fs');var Redis=require(_0xb1d4('0x4'));var db=require(_0xb1d4('0x5'))['db'];var utils=require(_0xb1d4('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xb1d4('0x7'));var client=jayson[_0xb1d4('0x8')][_0xb1d4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3e4685,_0x3746bb,_0x15a87c){return new BPromise(function(_0x17f625,_0x144992){return client[_0xb1d4('0xa')](_0x3e4685,_0x15a87c)['then'](function(_0x13a431){logger[_0xb1d4('0xb')](_0xb1d4('0xc'),_0x3746bb,_0xb1d4('0xd'));logger[_0xb1d4('0xe')]('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x3746bb,_0xb1d4('0xd'),JSON[_0xb1d4('0xf')](_0x13a431));if(_0x13a431[_0xb1d4('0x10')]){if(_0x13a431['error']['code']===0x1f4){logger[_0xb1d4('0x10')](_0xb1d4('0xc'),_0x3746bb,_0x13a431['error']['message']);return _0x144992(_0x13a431[_0xb1d4('0x10')][_0xb1d4('0x11')]);}logger[_0xb1d4('0x10')](_0xb1d4('0xc'),_0x3746bb,_0x13a431[_0xb1d4('0x10')][_0xb1d4('0x11')]);return _0x17f625(_0x13a431[_0xb1d4('0x10')][_0xb1d4('0x11')]);}else{logger[_0xb1d4('0xb')](_0xb1d4('0xc'),_0x3746bb,_0xb1d4('0xd'));_0x17f625(_0x13a431[_0xb1d4('0x12')]['message']);}})[_0xb1d4('0x13')](function(_0x365b70){logger[_0xb1d4('0x10')](_0xb1d4('0xc'),_0x3746bb,_0x365b70);_0x144992(_0x365b70);});});}exports[_0xb1d4('0x14')]=function(_0x4ecdf9){var _0x43dbb3=this;return new Promise(function(_0x1b91f4,_0x95066){return db[_0xb1d4('0x15')]['create'](_0x4ecdf9[_0xb1d4('0x16')],{'raw':_0x4ecdf9['options']?_0x4ecdf9[_0xb1d4('0x17')][_0xb1d4('0x18')]===undefined?!![]:![]:!![]})[_0xb1d4('0x19')](function(_0x4a6cf7){logger[_0xb1d4('0xb')](_0xb1d4('0x14'),_0x4ecdf9);logger[_0xb1d4('0xe')]('CreateFaxQueueReport',_0x4ecdf9,JSON[_0xb1d4('0xf')](_0x4a6cf7));_0x1b91f4(_0x4a6cf7);})[_0xb1d4('0x13')](function(_0x2d6c68){logger[_0xb1d4('0x10')](_0xb1d4('0x14'),_0x2d6c68[_0xb1d4('0x11')],_0x4ecdf9);_0x95066(_0x43dbb3[_0xb1d4('0x10')](0x1f4,_0x2d6c68['message']));});});};exports[_0xb1d4('0x1a')]=function(_0x21e240){var _0x2aac9e=this;return new Promise(function(_0x43cd49,_0x524f30){return db['FaxQueueReport'][_0xb1d4('0x1b')](_0x21e240[_0xb1d4('0x16')],{'raw':_0x21e240[_0xb1d4('0x17')]?_0x21e240[_0xb1d4('0x17')][_0xb1d4('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21e240[_0xb1d4('0x17')]?_0x21e240['options'][_0xb1d4('0x1c')]||null:null,'attributes':_0x21e240[_0xb1d4('0x17')]?_0x21e240['options'][_0xb1d4('0x1d')]||null:null,'limit':_0x21e240[_0xb1d4('0x17')]?_0x21e240[_0xb1d4('0x17')][_0xb1d4('0x1e')]||null:null})[_0xb1d4('0x19')](function(_0x5718e1){logger['info'](_0xb1d4('0x1a'),_0x21e240);logger['debug'](_0xb1d4('0x1a'),_0x21e240,JSON[_0xb1d4('0xf')](_0x5718e1));_0x43cd49(_0x5718e1);})[_0xb1d4('0x13')](function(_0x2d2782){logger['error'](_0xb1d4('0x1a'),_0x2d2782[_0xb1d4('0x11')],_0x21e240);_0x524f30(_0x2aac9e[_0xb1d4('0x10')](0x1f4,_0x2d2782[_0xb1d4('0x11')]));});});};
\ No newline at end of file
index 86567fb..7d71908 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39cf=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','express'];(function(_0x500dc4,_0x14a331){var _0x2241b4=function(_0x527b88){while(--_0x527b88){_0x500dc4['push'](_0x500dc4['shift']());}};_0x2241b4(++_0x14a331);}(_0x39cf,0x188));var _0xf39c=function(_0x15797a,_0x16274f){_0x15797a=_0x15797a-0x0;var _0x3e2618=_0x39cf[_0x15797a];return _0x3e2618;};'use strict';var multer=require(_0xf39c('0x0'));var util=require(_0xf39c('0x1'));var path=require(_0xf39c('0x2'));var timeout=require('connect-timeout');var express=require(_0xf39c('0x3'));var router=express[_0xf39c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf39c('0x5'));var interaction=require(_0xf39c('0x6'));var config=require(_0xf39c('0x7'));var controller=require(_0xf39c('0x8'));router[_0xf39c('0x9')]('/',auth['isAuthenticated'](),controller[_0xf39c('0xa')]);router[_0xf39c('0x9')](_0xf39c('0xb'),auth[_0xf39c('0xc')](),controller[_0xf39c('0xd')]);router[_0xf39c('0x9')](_0xf39c('0xe'),auth['isAuthenticated'](),controller[_0xf39c('0xf')]);router[_0xf39c('0x10')]('/',auth[_0xf39c('0xc')](),controller[_0xf39c('0x11')]);router[_0xf39c('0x12')](_0xf39c('0xe'),auth[_0xf39c('0xc')](),controller['update']);router[_0xf39c('0x13')]('/:id',auth[_0xf39c('0xc')](),controller[_0xf39c('0x14')]);module[_0xf39c('0x15')]=router;
\ No newline at end of file
+var _0x3065=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','isAuthenticated','index','get','describe','/:id','show','post','put','update','destroy','exports','multer','util'];(function(_0x2c7b04,_0x5a35ee){var _0x2f7351=function(_0x34dede){while(--_0x34dede){_0x2c7b04['push'](_0x2c7b04['shift']());}};_0x2f7351(++_0x5a35ee);}(_0x3065,0x1f2));var _0x5306=function(_0xae2311,_0xeaf26c){_0xae2311=_0xae2311-0x0;var _0xecffc6=_0x3065[_0xae2311];return _0xecffc6;};'use strict';var multer=require(_0x5306('0x0'));var util=require(_0x5306('0x1'));var path=require('path');var timeout=require(_0x5306('0x2'));var express=require(_0x5306('0x3'));var router=express[_0x5306('0x4')]();var fs_extra=require(_0x5306('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x5306('0x6'));var config=require(_0x5306('0x7'));var controller=require(_0x5306('0x8'));router['get']('/',auth[_0x5306('0x9')](),controller[_0x5306('0xa')]);router[_0x5306('0xb')]('/describe',auth[_0x5306('0x9')](),controller[_0x5306('0xc')]);router['get'](_0x5306('0xd'),auth['isAuthenticated'](),controller[_0x5306('0xe')]);router[_0x5306('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x5306('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x5306('0x11')]);router['delete']('/:id',auth[_0x5306('0x9')](),controller[_0x5306('0x12')]);module[_0x5306('0x13')]=router;
\ No newline at end of file
index e393944..2a73eaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x1b4b23,_0x5dd6d6){var _0x2a325b=function(_0x175462){while(--_0x175462){_0x1b4b23['push'](_0x1b4b23['shift']());}};_0x2a325b(++_0x5dd6d6);}(_0x9bde,0xe1));var _0xe9bd=function(_0x50ed81,_0x453c78){_0x50ed81=_0x50ed81-0x0;var _0x444499=_0x9bde[_0x50ed81];return _0x444499;};'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 _0x00bb=['moment','sequelize','exports','ENUM','agent','queue','DATE','NOW'];(function(_0x55692f,_0x455987){var _0xf8d3fe=function(_0x5ec20d){while(--_0x5ec20d){_0x55692f['push'](_0x55692f['shift']());}};_0xf8d3fe(++_0x455987);}(_0x00bb,0x1d8));var _0xb00b=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0x00bb[_0x4709c0];return _0x13348b;};'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 df17c16..201fde0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5226=['pick','where','merge','VIRTUAL','filter','includeAll','include','FaxTransferReport','findAll','rows','catch','show','params','options','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','set','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort'];(function(_0x52dce7,_0x2b3c23){var _0x1c0391=function(_0x314d2a){while(--_0x314d2a){_0x52dce7['push'](_0x52dce7['shift']());}};_0x1c0391(++_0x2b3c23);}(_0x5226,0x13e));var _0x6522=function(_0x25e296,_0x172c5e){_0x25e296=_0x25e296-0x0;var _0x3cd140=_0x5226[_0x25e296];return _0x3cd140;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6522('0x0'));var zipdir=require(_0x6522('0x1'));var jsonpatch=require(_0x6522('0x2'));var rp=require(_0x6522('0x3'));var moment=require(_0x6522('0x4'));var BPromise=require(_0x6522('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x6522('0x6'));var sox=require(_0x6522('0x7'));var csv=require(_0x6522('0x8'));var ejs=require(_0x6522('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6522('0xa'));var squel=require('squel');var crypto=require(_0x6522('0xb'));var jsforce=require(_0x6522('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x6522('0x8'));var querystring=require(_0x6522('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6522('0xe'));var as=require(_0x6522('0xf'));var hardwareService=require(_0x6522('0x10'));var logger=require(_0x6522('0x11'))('api');var utils=require(_0x6522('0x12'));var config=require(_0x6522('0x13'));var licenseUtil=require(_0x6522('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x36c092,_0x317923){_0x317923=_0x317923||0xcc;return function(_0x18f28f){if(_0x18f28f){return _0x36c092['sendStatus'](_0x317923);}return _0x36c092[_0x6522('0x15')](_0x317923)[_0x6522('0x16')]();};}function respondWithResult(_0x556576,_0x6ff50e){_0x6ff50e=_0x6ff50e||0xc8;return function(_0x58ede7){if(_0x58ede7){return _0x556576[_0x6522('0x15')](_0x6ff50e)[_0x6522('0x17')](_0x58ede7);}};}function respondWithFilteredResult(_0x5d085d,_0x226c26){return function(_0x2e8b24){if(_0x2e8b24){var _0xc41536=typeof _0x226c26[_0x6522('0x18')]===_0x6522('0x19')&&typeof _0x226c26['limit']===_0x6522('0x19');var _0x324169=_0x2e8b24[_0x6522('0x1a')];var _0x2df716=_0xc41536?0x0:_0x226c26[_0x6522('0x18')];var _0xd5d420=_0xc41536?_0x2e8b24[_0x6522('0x1a')]:_0x226c26['offset']+_0x226c26['limit'];var _0x11931f;if(_0xd5d420>=_0x324169){_0xd5d420=_0x324169;_0x11931f=0xc8;}else{_0x11931f=0xce;}_0x5d085d[_0x6522('0x15')](_0x11931f);return _0x5d085d[_0x6522('0x1b')]('Content-Range',_0x2df716+'-'+_0xd5d420+'/'+_0x324169)[_0x6522('0x17')](_0x2e8b24);}return null;};}function patchUpdates(_0x297fde){return function(_0x3058de){try{jsonpatch[_0x6522('0x1c')](_0x3058de,_0x297fde,!![]);}catch(_0x30f2d5){return BPromise[_0x6522('0x1d')](_0x30f2d5);}return _0x3058de[_0x6522('0x1e')]();};}function saveUpdates(_0x40e23f,_0x5ecf33){return function(_0x3e9953){if(_0x3e9953){return _0x3e9953[_0x6522('0x1f')](_0x40e23f)[_0x6522('0x20')](function(_0x425f6c){return _0x425f6c;});}return null;};}function removeEntity(_0x443b83,_0x1087a9){return function(_0x510878){if(_0x510878){return _0x510878[_0x6522('0x21')]()[_0x6522('0x20')](function(){_0x443b83[_0x6522('0x15')](0xcc)[_0x6522('0x16')]();});}};}function handleEntityNotFound(_0x58aff0,_0x5bdd03){return function(_0x5aeee9){if(!_0x5aeee9){_0x58aff0[_0x6522('0x22')](0x194);}return _0x5aeee9;};}function handleError(_0x58a2d9,_0x4402c4){_0x4402c4=_0x4402c4||0x1f4;return function(_0x15d94b){logger[_0x6522('0x23')](_0x15d94b[_0x6522('0x24')]);if(_0x15d94b[_0x6522('0x25')]){delete _0x15d94b[_0x6522('0x25')];}_0x58a2d9['status'](_0x4402c4)[_0x6522('0x26')](_0x15d94b);};}exports[_0x6522('0x27')]=function(_0x56af40,_0x12494c){var _0x459e16={},_0xfb14c7={},_0x16f626={'count':0x0,'rows':[]};var _0x40aa75=_[_0x6522('0x28')](db['FaxTransferReport'][_0x6522('0x29')],function(_0x23767d){return{'name':_0x23767d[_0x6522('0x2a')],'type':_0x23767d[_0x6522('0x2b')][_0x6522('0x2c')]};});_0xfb14c7[_0x6522('0x2d')]=_[_0x6522('0x28')](_0x40aa75,'name');_0xfb14c7[_0x6522('0x2e')]=_[_0x6522('0x2f')](_0x56af40[_0x6522('0x2e')]);_0xfb14c7[_0x6522('0x30')]=_[_0x6522('0x31')](_0xfb14c7[_0x6522('0x2d')],_0xfb14c7['query']);_0x459e16[_0x6522('0x32')]=_[_0x6522('0x31')](_0xfb14c7[_0x6522('0x2d')],qs['fields'](_0x56af40['query'][_0x6522('0x33')]));_0x459e16[_0x6522('0x32')]=_0x459e16[_0x6522('0x32')][_0x6522('0x34')]?_0x459e16['attributes']:_0xfb14c7[_0x6522('0x2d')];if(!_0x56af40[_0x6522('0x2e')][_0x6522('0x35')](_0x6522('0x36'))){_0x459e16['limit']=qs[_0x6522('0x37')](_0x56af40[_0x6522('0x2e')][_0x6522('0x37')]);_0x459e16[_0x6522('0x18')]=qs[_0x6522('0x18')](_0x56af40[_0x6522('0x2e')][_0x6522('0x18')]);}_0x459e16['order']=qs[_0x6522('0x38')](_0x56af40[_0x6522('0x2e')]['sort']);_0x459e16['where']=qs[_0x6522('0x30')](_[_0x6522('0x39')](_0x56af40[_0x6522('0x2e')],_0xfb14c7[_0x6522('0x30')]),_0x40aa75);if(_0x56af40[_0x6522('0x2e')]['filter']){_0x459e16[_0x6522('0x3a')]=_[_0x6522('0x3b')](_0x459e16[_0x6522('0x3a')],{'$or':_['map'](_0x40aa75,function(_0x20e928){if(_0x20e928['type']!==_0x6522('0x3c')){var _0x484581={};_0x484581[_0x20e928[_0x6522('0x25')]]={'$like':'%'+_0x56af40[_0x6522('0x2e')][_0x6522('0x3d')]+'%'};return _0x484581;}})});}_0x459e16=_[_0x6522('0x3b')]({},_0x459e16,_0x56af40['options']);var _0x3e1332={'where':_0x459e16['where']};return db['FaxTransferReport'][_0x6522('0x1a')](_0x3e1332)[_0x6522('0x20')](function(_0x4a0aca){_0x16f626[_0x6522('0x1a')]=_0x4a0aca;if(_0x56af40[_0x6522('0x2e')][_0x6522('0x3e')]){_0x459e16[_0x6522('0x3f')]=[{'all':!![]}];}return db[_0x6522('0x40')][_0x6522('0x41')](_0x459e16);})[_0x6522('0x20')](function(_0x30d3db){_0x16f626[_0x6522('0x42')]=_0x30d3db;return _0x16f626;})[_0x6522('0x20')](respondWithFilteredResult(_0x12494c,_0x459e16))[_0x6522('0x43')](handleError(_0x12494c,null));};exports[_0x6522('0x44')]=function(_0x5e96af,_0x656813){var _0x2763a9={'raw':!![],'where':{'id':_0x5e96af[_0x6522('0x45')]['id']}},_0x1284b2={};_0x1284b2['model']=_[_0x6522('0x2f')](db['FaxTransferReport']['rawAttributes']);_0x1284b2[_0x6522('0x2e')]=_[_0x6522('0x2f')](_0x5e96af[_0x6522('0x2e')]);_0x1284b2[_0x6522('0x30')]=_['intersection'](_0x1284b2[_0x6522('0x2d')],_0x1284b2[_0x6522('0x2e')]);_0x2763a9[_0x6522('0x32')]=_[_0x6522('0x31')](_0x1284b2[_0x6522('0x2d')],qs[_0x6522('0x33')](_0x5e96af[_0x6522('0x2e')][_0x6522('0x33')]));_0x2763a9['attributes']=_0x2763a9[_0x6522('0x32')][_0x6522('0x34')]?_0x2763a9[_0x6522('0x32')]:_0x1284b2[_0x6522('0x2d')];if(_0x5e96af[_0x6522('0x2e')][_0x6522('0x3e')]){_0x2763a9[_0x6522('0x3f')]=[{'all':!![]}];}_0x2763a9=_['merge']({},_0x2763a9,_0x5e96af[_0x6522('0x46')]);return db['FaxTransferReport'][_0x6522('0x47')](_0x2763a9)[_0x6522('0x20')](handleEntityNotFound(_0x656813,null))[_0x6522('0x20')](respondWithResult(_0x656813,null))[_0x6522('0x43')](handleError(_0x656813,null));};exports[_0x6522('0x48')]=function(_0x1c728c,_0x1d26aa){return db['FaxTransferReport'][_0x6522('0x48')](_0x1c728c[_0x6522('0x49')],{})['then'](respondWithResult(_0x1d26aa,0xc9))[_0x6522('0x43')](handleError(_0x1d26aa,null));};exports['update']=function(_0x2460dc,_0x12944a){if(_0x2460dc['body']['id']){delete _0x2460dc[_0x6522('0x49')]['id'];}return db['FaxTransferReport']['find']({'where':{'id':_0x2460dc[_0x6522('0x45')]['id']}})[_0x6522('0x20')](handleEntityNotFound(_0x12944a,null))[_0x6522('0x20')](saveUpdates(_0x2460dc[_0x6522('0x49')],null))[_0x6522('0x20')](respondWithResult(_0x12944a,null))[_0x6522('0x43')](handleError(_0x12944a,null));};exports[_0x6522('0x21')]=function(_0x20bbd6,_0x29a991){return db[_0x6522('0x40')][_0x6522('0x47')]({'where':{'id':_0x20bbd6[_0x6522('0x45')]['id']}})[_0x6522('0x20')](handleEntityNotFound(_0x29a991,null))[_0x6522('0x20')](removeEntity(_0x29a991,null))[_0x6522('0x43')](handleError(_0x29a991,null));};exports[_0x6522('0x4a')]=function(_0x3cc2ff,_0x575dee){return db['FaxTransferReport'][_0x6522('0x4a')]()[_0x6522('0x20')](respondWithResult(_0x575dee,null))[_0x6522('0x43')](handleError(_0x575dee,null));};
\ No newline at end of file
+var _0xe377=['count','offset','Content-Range','json','apply','reject','end','sendStatus','error','name','send','map','FaxTransferReport','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','merge','filter','then','includeAll','include','rows','catch','show','options','update','body','destroy','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','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','undefined','limit'];(function(_0x5beb84,_0x26e729){var _0x2b00c4=function(_0x50fc5e){while(--_0x50fc5e){_0x5beb84['push'](_0x5beb84['shift']());}};_0x2b00c4(++_0x26e729);}(_0xe377,0x1e1));var _0x7e37=function(_0x1acb08,_0x47d04b){_0x1acb08=_0x1acb08-0x0;var _0xf928e0=_0xe377[_0x1acb08];return _0xf928e0;};'use strict';var emlformat=require(_0x7e37('0x0'));var rimraf=require(_0x7e37('0x1'));var zipdir=require(_0x7e37('0x2'));var jsonpatch=require(_0x7e37('0x3'));var rp=require('request-promise');var moment=require(_0x7e37('0x4'));var BPromise=require(_0x7e37('0x5'));var Mustache=require(_0x7e37('0x6'));var util=require(_0x7e37('0x7'));var path=require(_0x7e37('0x8'));var sox=require(_0x7e37('0x9'));var csv=require(_0x7e37('0xa'));var ejs=require(_0x7e37('0xb'));var fs=require('fs');var fs_extra=require(_0x7e37('0xc'));var _=require('lodash');var squel=require(_0x7e37('0xd'));var crypto=require(_0x7e37('0xe'));var jsforce=require(_0x7e37('0xf'));var deskjs=require(_0x7e37('0x10'));var toCsv=require(_0x7e37('0xa'));var querystring=require('querystring');var Papa=require(_0x7e37('0x11'));var Redis=require(_0x7e37('0x12'));var authService=require(_0x7e37('0x13'));var qs=require(_0x7e37('0x14'));var as=require(_0x7e37('0x15'));var hardwareService=require(_0x7e37('0x16'));var logger=require(_0x7e37('0x17'))(_0x7e37('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x7e37('0x19'));var db=require(_0x7e37('0x1a'))['db'];function respondWithStatusCode(_0x59ab28,_0x2b3f35){_0x2b3f35=_0x2b3f35||0xcc;return function(_0x5d4471){if(_0x5d4471){return _0x59ab28['sendStatus'](_0x2b3f35);}return _0x59ab28[_0x7e37('0x1b')](_0x2b3f35)['end']();};}function respondWithResult(_0x5c6ba5,_0x593307){_0x593307=_0x593307||0xc8;return function(_0x3a99fb){if(_0x3a99fb){return _0x5c6ba5[_0x7e37('0x1b')](_0x593307)['json'](_0x3a99fb);}};}function respondWithFilteredResult(_0x9d960,_0x5574bf){return function(_0x213f65){if(_0x213f65){var _0x275b37=typeof _0x5574bf['offset']===_0x7e37('0x1c')&&typeof _0x5574bf[_0x7e37('0x1d')]==='undefined';var _0x566d82=_0x213f65[_0x7e37('0x1e')];var _0xfeeb1f=_0x275b37?0x0:_0x5574bf[_0x7e37('0x1f')];var _0xce58d5=_0x275b37?_0x213f65[_0x7e37('0x1e')]:_0x5574bf['offset']+_0x5574bf[_0x7e37('0x1d')];var _0x39ab07;if(_0xce58d5>=_0x566d82){_0xce58d5=_0x566d82;_0x39ab07=0xc8;}else{_0x39ab07=0xce;}_0x9d960[_0x7e37('0x1b')](_0x39ab07);return _0x9d960['set'](_0x7e37('0x20'),_0xfeeb1f+'-'+_0xce58d5+'/'+_0x566d82)[_0x7e37('0x21')](_0x213f65);}return null;};}function patchUpdates(_0x5e0289){return function(_0x41c875){try{jsonpatch[_0x7e37('0x22')](_0x41c875,_0x5e0289,!![]);}catch(_0x412d36){return BPromise[_0x7e37('0x23')](_0x412d36);}return _0x41c875['save']();};}function saveUpdates(_0x52aa56,_0x3d6216){return function(_0x494ee1){if(_0x494ee1){return _0x494ee1['update'](_0x52aa56)['then'](function(_0x3b7e6e){return _0x3b7e6e;});}return null;};}function removeEntity(_0x19771b,_0x3343e3){return function(_0x3ff147){if(_0x3ff147){return _0x3ff147['destroy']()['then'](function(){_0x19771b[_0x7e37('0x1b')](0xcc)[_0x7e37('0x24')]();});}};}function handleEntityNotFound(_0xdc32cf,_0x21d16e){return function(_0x54cbfd){if(!_0x54cbfd){_0xdc32cf[_0x7e37('0x25')](0x194);}return _0x54cbfd;};}function handleError(_0x4fff64,_0x36d078){_0x36d078=_0x36d078||0x1f4;return function(_0x147786){logger[_0x7e37('0x26')](_0x147786['stack']);if(_0x147786[_0x7e37('0x27')]){delete _0x147786[_0x7e37('0x27')];}_0x4fff64['status'](_0x36d078)[_0x7e37('0x28')](_0x147786);};}exports['index']=function(_0x3fc13c,_0xbf57c5){var _0x5cef8a={},_0x167bec={},_0x57f92b={'count':0x0,'rows':[]};var _0x279109=_[_0x7e37('0x29')](db[_0x7e37('0x2a')][_0x7e37('0x2b')],function(_0x506c72){return{'name':_0x506c72['fieldName'],'type':_0x506c72[_0x7e37('0x2c')][_0x7e37('0x2d')]};});_0x167bec[_0x7e37('0x2e')]=_[_0x7e37('0x29')](_0x279109,'name');_0x167bec[_0x7e37('0x2f')]=_[_0x7e37('0x30')](_0x3fc13c[_0x7e37('0x2f')]);_0x167bec['filters']=_[_0x7e37('0x31')](_0x167bec[_0x7e37('0x2e')],_0x167bec[_0x7e37('0x2f')]);_0x5cef8a[_0x7e37('0x32')]=_[_0x7e37('0x31')](_0x167bec[_0x7e37('0x2e')],qs[_0x7e37('0x33')](_0x3fc13c[_0x7e37('0x2f')]['fields']));_0x5cef8a[_0x7e37('0x32')]=_0x5cef8a[_0x7e37('0x32')][_0x7e37('0x34')]?_0x5cef8a[_0x7e37('0x32')]:_0x167bec['model'];if(!_0x3fc13c[_0x7e37('0x2f')][_0x7e37('0x35')](_0x7e37('0x36'))){_0x5cef8a['limit']=qs[_0x7e37('0x1d')](_0x3fc13c[_0x7e37('0x2f')][_0x7e37('0x1d')]);_0x5cef8a['offset']=qs[_0x7e37('0x1f')](_0x3fc13c[_0x7e37('0x2f')][_0x7e37('0x1f')]);}_0x5cef8a[_0x7e37('0x37')]=qs[_0x7e37('0x38')](_0x3fc13c[_0x7e37('0x2f')][_0x7e37('0x38')]);_0x5cef8a[_0x7e37('0x39')]=qs['filters'](_[_0x7e37('0x3a')](_0x3fc13c[_0x7e37('0x2f')],_0x167bec[_0x7e37('0x3b')]),_0x279109);if(_0x3fc13c[_0x7e37('0x2f')]['filter']){_0x5cef8a[_0x7e37('0x39')]=_[_0x7e37('0x3c')](_0x5cef8a[_0x7e37('0x39')],{'$or':_[_0x7e37('0x29')](_0x279109,function(_0x27285e){if(_0x27285e[_0x7e37('0x2c')]!=='VIRTUAL'){var _0x20c836={};_0x20c836[_0x27285e['name']]={'$like':'%'+_0x3fc13c[_0x7e37('0x2f')][_0x7e37('0x3d')]+'%'};return _0x20c836;}})});}_0x5cef8a=_[_0x7e37('0x3c')]({},_0x5cef8a,_0x3fc13c['options']);var _0x44abde={'where':_0x5cef8a[_0x7e37('0x39')]};return db[_0x7e37('0x2a')][_0x7e37('0x1e')](_0x44abde)[_0x7e37('0x3e')](function(_0x75fa7f){_0x57f92b[_0x7e37('0x1e')]=_0x75fa7f;if(_0x3fc13c[_0x7e37('0x2f')][_0x7e37('0x3f')]){_0x5cef8a[_0x7e37('0x40')]=[{'all':!![]}];}return db[_0x7e37('0x2a')]['findAll'](_0x5cef8a);})[_0x7e37('0x3e')](function(_0xc3d6f6){_0x57f92b[_0x7e37('0x41')]=_0xc3d6f6;return _0x57f92b;})[_0x7e37('0x3e')](respondWithFilteredResult(_0xbf57c5,_0x5cef8a))[_0x7e37('0x42')](handleError(_0xbf57c5,null));};exports[_0x7e37('0x43')]=function(_0x2eb0be,_0x538729){var _0x585b5b={'raw':!![],'where':{'id':_0x2eb0be['params']['id']}},_0x14551e={};_0x14551e['model']=_['keys'](db[_0x7e37('0x2a')]['rawAttributes']);_0x14551e[_0x7e37('0x2f')]=_['keys'](_0x2eb0be[_0x7e37('0x2f')]);_0x14551e[_0x7e37('0x3b')]=_[_0x7e37('0x31')](_0x14551e[_0x7e37('0x2e')],_0x14551e[_0x7e37('0x2f')]);_0x585b5b[_0x7e37('0x32')]=_[_0x7e37('0x31')](_0x14551e[_0x7e37('0x2e')],qs[_0x7e37('0x33')](_0x2eb0be[_0x7e37('0x2f')]['fields']));_0x585b5b[_0x7e37('0x32')]=_0x585b5b[_0x7e37('0x32')][_0x7e37('0x34')]?_0x585b5b[_0x7e37('0x32')]:_0x14551e[_0x7e37('0x2e')];if(_0x2eb0be[_0x7e37('0x2f')]['includeAll']){_0x585b5b[_0x7e37('0x40')]=[{'all':!![]}];}_0x585b5b=_['merge']({},_0x585b5b,_0x2eb0be[_0x7e37('0x44')]);return db['FaxTransferReport']['find'](_0x585b5b)[_0x7e37('0x3e')](handleEntityNotFound(_0x538729,null))['then'](respondWithResult(_0x538729,null))['catch'](handleError(_0x538729,null));};exports['create']=function(_0x263f8c,_0x3df3e5){return db[_0x7e37('0x2a')]['create'](_0x263f8c['body'],{})['then'](respondWithResult(_0x3df3e5,0xc9))['catch'](handleError(_0x3df3e5,null));};exports[_0x7e37('0x45')]=function(_0x25fdd2,_0x3517b1){if(_0x25fdd2['body']['id']){delete _0x25fdd2[_0x7e37('0x46')]['id'];}return db[_0x7e37('0x2a')]['find']({'where':{'id':_0x25fdd2['params']['id']}})[_0x7e37('0x3e')](handleEntityNotFound(_0x3517b1,null))[_0x7e37('0x3e')](saveUpdates(_0x25fdd2[_0x7e37('0x46')],null))[_0x7e37('0x3e')](respondWithResult(_0x3517b1,null))['catch'](handleError(_0x3517b1,null));};exports[_0x7e37('0x47')]=function(_0x128d71,_0x13cb6a){return db[_0x7e37('0x2a')]['find']({'where':{'id':_0x128d71['params']['id']}})[_0x7e37('0x3e')](handleEntityNotFound(_0x13cb6a,null))[_0x7e37('0x3e')](removeEntity(_0x13cb6a,null))['catch'](handleError(_0x13cb6a,null));};exports[_0x7e37('0x48')]=function(_0x6f076e,_0x52635f){return db[_0x7e37('0x2a')]['describe']()[_0x7e37('0x3e')](respondWithResult(_0x52635f,null))[_0x7e37('0x42')](handleError(_0x52635f,null));};
\ No newline at end of file
index a3822ea..dd2df32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0060=['api','moment','request-promise','path','rimraf','./faxTransferReport.attributes','exports','define','report_fax_transfer','uniqueid','lodash','util'];(function(_0x103095,_0xd10dbc){var _0x2c435e=function(_0x45a383){while(--_0x45a383){_0x103095['push'](_0x103095['shift']());}};_0x2c435e(++_0xd10dbc);}(_0x0060,0x11e));var _0x0006=function(_0x233eab,_0x5c910f){_0x233eab=_0x233eab-0x0;var _0x288cc3=_0x0060[_0x233eab];return _0x288cc3;};'use strict';var _=require(_0x0006('0x0'));var util=require(_0x0006('0x1'));var logger=require('../../config/logger')(_0x0006('0x2'));var moment=require(_0x0006('0x3'));var BPromise=require('bluebird');var rp=require(_0x0006('0x4'));var fs=require('fs');var path=require(_0x0006('0x5'));var rimraf=require(_0x0006('0x6'));var config=require('../../config/environment');var attributes=require(_0x0006('0x7'));module[_0x0006('0x8')]=function(_0x17fc09,_0x47baea){return _0x17fc09[_0x0006('0x9')]('FaxTransferReport',attributes,{'tableName':_0x0006('0xa'),'paranoid':![],'indexes':[{'name':_0x0006('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x83d9=['util','../../config/logger','api','path','rimraf','../../config/environment','./faxTransferReport.attributes','exports','define','FaxTransferReport','report_fax_transfer'];(function(_0x5dfc2a,_0x1a953f){var _0x3f1a71=function(_0x15916){while(--_0x15916){_0x5dfc2a['push'](_0x5dfc2a['shift']());}};_0x3f1a71(++_0x1a953f);}(_0x83d9,0x134));var _0x983d=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0x83d9[_0x68ee8b];return _0x5148f7;};'use strict';var _=require('lodash');var util=require(_0x983d('0x0'));var logger=require(_0x983d('0x1'))(_0x983d('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x983d('0x3'));var rimraf=require(_0x983d('0x4'));var config=require(_0x983d('0x5'));var attributes=require(_0x983d('0x6'));module[_0x983d('0x7')]=function(_0x1da5f2,_0x6340bf){return _0x1da5f2[_0x983d('0x8')](_0x983d('0x9'),attributes,{'tableName':_0x983d('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 85cccbb..9a15c26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c96=['http','request','info','request\x20sent','error','code','FaxTransferReport,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8c96,0x9d));var _0x68c9=function(_0x3eed3f,_0x5253b5){_0x3eed3f=_0x3eed3f-0x0;var _0xd68fd8=_0x8c96[_0x3eed3f];return _0xd68fd8;};'use strict';var _=require(_0x68c9('0x0'));var util=require('util');var moment=require(_0x68c9('0x1'));var BPromise=require(_0x68c9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x68c9('0x3'));var db=require(_0x68c9('0x4'))['db'];var utils=require(_0x68c9('0x5'));var logger=require(_0x68c9('0x6'))(_0x68c9('0x7'));var config=require(_0x68c9('0x8'));var jayson=require(_0x68c9('0x9'));var client=jayson[_0x68c9('0xa')][_0x68c9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3d8183,_0x321386,_0x3690e0){return new BPromise(function(_0x5f5932,_0x314ada){return client[_0x68c9('0xc')](_0x3d8183,_0x3690e0)['then'](function(_0x12c1bf){logger[_0x68c9('0xd')]('FaxTransferReport,\x20%s,\x20%s',_0x321386,'request\x20sent');logger['debug']('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0x321386,_0x68c9('0xe'),JSON['stringify'](_0x12c1bf));if(_0x12c1bf['error']){if(_0x12c1bf[_0x68c9('0xf')][_0x68c9('0x10')]===0x1f4){logger[_0x68c9('0xf')](_0x68c9('0x11'),_0x321386,_0x12c1bf[_0x68c9('0xf')][_0x68c9('0x12')]);return _0x314ada(_0x12c1bf['error'][_0x68c9('0x12')]);}logger['error'](_0x68c9('0x11'),_0x321386,_0x12c1bf[_0x68c9('0xf')]['message']);return _0x5f5932(_0x12c1bf[_0x68c9('0xf')][_0x68c9('0x12')]);}else{logger[_0x68c9('0xd')](_0x68c9('0x11'),_0x321386,_0x68c9('0xe'));_0x5f5932(_0x12c1bf[_0x68c9('0x13')]['message']);}})[_0x68c9('0x14')](function(_0x9f2f55){logger['error'](_0x68c9('0x11'),_0x321386,_0x9f2f55);_0x314ada(_0x9f2f55);});});}
\ No newline at end of file
+var _0x07f8=['catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','FaxTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0xfe4906,_0x1683fa){var _0x1a82c4=function(_0x1e3a70){while(--_0x1e3a70){_0xfe4906['push'](_0xfe4906['shift']());}};_0x1a82c4(++_0x1683fa);}(_0x07f8,0x19f));var _0x807f=function(_0x5d0746,_0x511b2d){_0x5d0746=_0x5d0746-0x0;var _0x19a392=_0x07f8[_0x5d0746];return _0x19a392;};'use strict';var _=require(_0x807f('0x0'));var util=require('util');var moment=require(_0x807f('0x1'));var BPromise=require(_0x807f('0x2'));var rs=require(_0x807f('0x3'));var fs=require('fs');var Redis=require(_0x807f('0x4'));var db=require(_0x807f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x807f('0x6'))('rpc');var config=require(_0x807f('0x7'));var jayson=require(_0x807f('0x8'));var client=jayson[_0x807f('0x9')][_0x807f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5cde1a,_0x58f1ab,_0x5346dc){return new BPromise(function(_0x59f45f,_0x2d2622){return client[_0x807f('0xb')](_0x5cde1a,_0x5346dc)[_0x807f('0xc')](function(_0x3cc25a){logger[_0x807f('0xd')](_0x807f('0xe'),_0x58f1ab,'request\x20sent');logger['debug'](_0x807f('0xf'),_0x58f1ab,_0x807f('0x10'),JSON[_0x807f('0x11')](_0x3cc25a));if(_0x3cc25a[_0x807f('0x12')]){if(_0x3cc25a[_0x807f('0x12')][_0x807f('0x13')]===0x1f4){logger[_0x807f('0x12')]('FaxTransferReport,\x20%s,\x20%s',_0x58f1ab,_0x3cc25a['error']['message']);return _0x2d2622(_0x3cc25a[_0x807f('0x12')][_0x807f('0x14')]);}logger[_0x807f('0x12')]('FaxTransferReport,\x20%s,\x20%s',_0x58f1ab,_0x3cc25a[_0x807f('0x12')]['message']);return _0x59f45f(_0x3cc25a[_0x807f('0x12')]['message']);}else{logger[_0x807f('0xd')](_0x807f('0xe'),_0x58f1ab,_0x807f('0x10'));_0x59f45f(_0x3cc25a[_0x807f('0x15')][_0x807f('0x14')]);}})[_0x807f('0x16')](function(_0x12016d){logger[_0x807f('0x12')](_0x807f('0xe'),_0x58f1ab,_0x12016d);_0x2d2622(_0x12016d);});});}
\ No newline at end of file
index 850a7b2..3bfa0fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x763e=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x1a32fe,_0xdab6ac){var _0x1abca6=function(_0x280920){while(--_0x280920){_0x1a32fe['push'](_0x1a32fe['shift']());}};_0x1abca6(++_0xdab6ac);}(_0x763e,0x17a));var _0xe763=function(_0x2e8dbe,_0x361124){_0x2e8dbe=_0x2e8dbe-0x0;var _0x48b07a=_0x763e[_0x2e8dbe];return _0x48b07a;};'use strict';var multer=require(_0xe763('0x0'));var util=require(_0xe763('0x1'));var path=require(_0xe763('0x2'));var timeout=require(_0xe763('0x3'));var express=require(_0xe763('0x4'));var router=express[_0xe763('0x5')]();var fs_extra=require(_0xe763('0x6'));var auth=require(_0xe763('0x7'));var interaction=require(_0xe763('0x8'));var config=require(_0xe763('0x9'));var controller=require(_0xe763('0xa'));router[_0xe763('0xb')]('/',auth[_0xe763('0xc')](),controller['index']);router[_0xe763('0xb')](_0xe763('0xd'),auth[_0xe763('0xc')](),controller[_0xe763('0xe')]);router['get'](_0xe763('0xf'),auth[_0xe763('0xc')](),controller[_0xe763('0x10')]);router[_0xe763('0x11')]('/',auth[_0xe763('0xc')](),controller[_0xe763('0x12')]);router[_0xe763('0x13')](_0xe763('0xf'),auth[_0xe763('0xc')](),controller[_0xe763('0x14')]);router[_0xe763('0x15')](_0xe763('0xf'),auth[_0xe763('0xc')](),controller[_0xe763('0x16')]);module[_0xe763('0x17')]=router;
\ No newline at end of file
+var _0x79cc=['delete','destroy','exports','multer','util','path','Router','./faxTransferReport.controller','index','get','isAuthenticated','describe','/:id','show','post','create','put'];(function(_0x2dc29a,_0x4804cb){var _0x50b147=function(_0x4fcba3){while(--_0x4fcba3){_0x2dc29a['push'](_0x2dc29a['shift']());}};_0x50b147(++_0x4804cb);}(_0x79cc,0xf1));var _0xc79c=function(_0x31e5ca,_0x38af09){_0x31e5ca=_0x31e5ca-0x0;var _0x591b43=_0x79cc[_0x31e5ca];return _0x591b43;};'use strict';var multer=require(_0xc79c('0x0'));var util=require(_0xc79c('0x1'));var path=require(_0xc79c('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc79c('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc79c('0x4'));router['get']('/',auth['isAuthenticated'](),controller[_0xc79c('0x5')]);router[_0xc79c('0x6')]('/describe',auth[_0xc79c('0x7')](),controller[_0xc79c('0x8')]);router['get'](_0xc79c('0x9'),auth[_0xc79c('0x7')](),controller[_0xc79c('0xa')]);router[_0xc79c('0xb')]('/',auth[_0xc79c('0x7')](),controller[_0xc79c('0xc')]);router[_0xc79c('0xd')](_0xc79c('0x9'),auth[_0xc79c('0x7')](),controller['update']);router[_0xc79c('0xe')](_0xc79c('0x9'),auth[_0xc79c('0x7')](),controller[_0xc79c('0xf')]);module[_0xc79c('0x10')]=router;
\ No newline at end of file
index cca3938..09ff4f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0ab=['../../components/auth/service','../../config/environment','index','get','isAuthenticated','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','/:id','destroy','multer','path','express','Router'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xf0ab,0xd8));var _0xbf0a=function(_0x2dfd07,_0x2ebd46){_0x2dfd07=_0x2dfd07-0x0;var _0x3f31b6=_0xf0ab[_0x2dfd07];return _0x3f31b6;};'use strict';var multer=require(_0xbf0a('0x0'));var util=require('util');var path=require(_0xbf0a('0x1'));var timeout=require('connect-timeout');var express=require(_0xbf0a('0x2'));var router=express[_0xbf0a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbf0a('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xbf0a('0x5'));var controller=require('./intDeskAccount.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xbf0a('0x6')]);router[_0xbf0a('0x7')]('/:id',auth[_0xbf0a('0x8')](),controller['show']);router['get'](_0xbf0a('0x9'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0xbf0a('0x7')](_0xbf0a('0xa'),auth['isAuthenticated'](),controller[_0xbf0a('0xb')]);router[_0xbf0a('0xc')]('/',auth[_0xbf0a('0x8')](),controller[_0xbf0a('0xd')]);router[_0xbf0a('0xc')]('/:id/configurations',auth[_0xbf0a('0x8')](),controller[_0xbf0a('0xe')]);router[_0xbf0a('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xbf0a('0x10')]);router[_0xbf0a('0x11')](_0xbf0a('0x12'),auth[_0xbf0a('0x8')](),controller[_0xbf0a('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x2d19=['/:id/fields','getFields','post','create','addConfiguration','put','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','/:id','show','/:id/configurations','isAuthenticated'];(function(_0xa481b2,_0x835199){var _0x43c888=function(_0x4cbb84){while(--_0x4cbb84){_0xa481b2['push'](_0xa481b2['shift']());}};_0x43c888(++_0x835199);}(_0x2d19,0xd7));var _0x92d1=function(_0x403115,_0x2d6d03){_0x403115=_0x403115-0x0;var _0x596ef3=_0x2d19[_0x403115];return _0x596ef3;};'use strict';var multer=require(_0x92d1('0x0'));var util=require(_0x92d1('0x1'));var path=require(_0x92d1('0x2'));var timeout=require(_0x92d1('0x3'));var express=require(_0x92d1('0x4'));var router=express['Router']();var fs_extra=require(_0x92d1('0x5'));var auth=require(_0x92d1('0x6'));var interaction=require(_0x92d1('0x7'));var config=require(_0x92d1('0x8'));var controller=require(_0x92d1('0x9'));router[_0x92d1('0xa')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x92d1('0xb'),auth['isAuthenticated'](),controller[_0x92d1('0xc')]);router[_0x92d1('0xa')](_0x92d1('0xd'),auth[_0x92d1('0xe')](),controller['getConfigurations']);router[_0x92d1('0xa')](_0x92d1('0xf'),auth[_0x92d1('0xe')](),controller[_0x92d1('0x10')]);router[_0x92d1('0x11')]('/',auth[_0x92d1('0xe')](),controller[_0x92d1('0x12')]);router[_0x92d1('0x11')](_0x92d1('0xd'),auth[_0x92d1('0xe')](),controller[_0x92d1('0x13')]);router[_0x92d1('0x14')]('/:id',auth[_0x92d1('0xe')](),controller['update']);router[_0x92d1('0x15')]('/:id',auth[_0x92d1('0xe')](),controller[_0x92d1('0x16')]);module['exports']=router;
\ No newline at end of file
index d6ad3af..5767bf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x718b=['sequelize','STRING','ENUM','basic','integrationTab','newTab'];(function(_0x387e15,_0x4bd04e){var _0x368ac9=function(_0x31680f){while(--_0x31680f){_0x387e15['push'](_0x387e15['shift']());}};_0x368ac9(++_0x4bd04e);}(_0x718b,0x198));var _0xb718=function(_0x68c4d9,_0x419b3c){_0x68c4d9=_0x68c4d9-0x0;var _0x62da93=_0x718b[_0x68c4d9];return _0x62da93;};'use strict';var Sequelize=require(_0xb718('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb718('0x1')]},'username':{'type':Sequelize[_0xb718('0x1')]},'remoteUri':{'type':Sequelize[_0xb718('0x1')]},'authType':{'type':Sequelize[_0xb718('0x2')](_0xb718('0x3')),'defaultValue':_0xb718('0x3')},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize[_0xb718('0x1')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize[_0xb718('0x1')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb718('0x2')](_0xb718('0x4'),_0xb718('0x5')),'defaultValue':_0xb718('0x4')}};
\ No newline at end of file
+var _0xd227=['basic','integrationTab','newTab','sequelize','exports','STRING'];(function(_0xb2ef67,_0x23f7ce){var _0x3044b4=function(_0x52bde1){while(--_0x52bde1){_0xb2ef67['push'](_0xb2ef67['shift']());}};_0x3044b4(++_0x23f7ce);}(_0xd227,0x123));var _0x7d22=function(_0x3d34da,_0x3abcc1){_0x3d34da=_0x3d34da-0x0;var _0xcf6af8=_0xd227[_0x3d34da];return _0xcf6af8;};'use strict';var Sequelize=require(_0x7d22('0x0'));module[_0x7d22('0x1')]={'name':{'type':Sequelize[_0x7d22('0x2')]},'description':{'type':Sequelize[_0x7d22('0x2')]},'username':{'type':Sequelize[_0x7d22('0x2')]},'remoteUri':{'type':Sequelize[_0x7d22('0x2')]},'authType':{'type':Sequelize['ENUM'](_0x7d22('0x3')),'defaultValue':_0x7d22('0x3')},'password':{'type':Sequelize[_0x7d22('0x2')]},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize[_0x7d22('0x2')]},'token':{'type':Sequelize[_0x7d22('0x2')]},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x7d22('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x7d22('0x4'),_0x7d22('0x5')),'defaultValue':_0x7d22('0x4')}};
\ No newline at end of file
index cc53a8e..9e26b60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfd2=['query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','params','length','find','create','body','destroy','getConfigurations','findOne','order','sort','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','DeskField','getFields','priority','authType','username','password','consumerKey','consumerSecret','token','tokenSecret','remoteUri','slice','GET','format','%s/custom_fields','application/json','basic','headers','Basic\x20%s','base64','concat','_embedded','label','statusCode','send','test','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','error','stack','name','index','map','DeskAccount','rawAttributes','type','key','model','keys'];(function(_0x484942,_0x42a71d){var _0x51e301=function(_0x4426d1){while(--_0x4426d1){_0x484942['push'](_0x484942['shift']());}};_0x51e301(++_0x42a71d);}(_0xcfd2,0x17f));var _0x2cfd=function(_0x73e2bd,_0x38f007){_0x73e2bd=_0x73e2bd-0x0;var _0x1cf909=_0xcfd2[_0x73e2bd];return _0x1cf909;};'use strict';var emlformat=require(_0x2cfd('0x0'));var rimraf=require(_0x2cfd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2cfd('0x2'));var rp=require(_0x2cfd('0x3'));var moment=require(_0x2cfd('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2cfd('0x5'));var path=require('path');var sox=require(_0x2cfd('0x6'));var csv=require(_0x2cfd('0x7'));var ejs=require(_0x2cfd('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x2cfd('0x9'));var crypto=require(_0x2cfd('0xa'));var jsforce=require(_0x2cfd('0xb'));var deskjs=require(_0x2cfd('0xc'));var toCsv=require(_0x2cfd('0x7'));var querystring=require(_0x2cfd('0xd'));var Papa=require('papaparse');var Redis=require(_0x2cfd('0xe'));var authService=require(_0x2cfd('0xf'));var qs=require(_0x2cfd('0x10'));var as=require(_0x2cfd('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2cfd('0x12'));var utils=require(_0x2cfd('0x13'));var config=require(_0x2cfd('0x14'));var licenseUtil=require(_0x2cfd('0x15'));var db=require(_0x2cfd('0x16'))['db'];var integrations=require(_0x2cfd('0x17'));function respondWithStatusCode(_0x1eb835,_0x29e1dd){_0x29e1dd=_0x29e1dd||0xcc;return function(_0x57f8c5){if(_0x57f8c5){return _0x1eb835[_0x2cfd('0x18')](_0x29e1dd);}return _0x1eb835[_0x2cfd('0x19')](_0x29e1dd)[_0x2cfd('0x1a')]();};}function respondWithResult(_0x5c6f05,_0x2bf9f5){_0x2bf9f5=_0x2bf9f5||0xc8;return function(_0x2d2af7){if(_0x2d2af7){return _0x5c6f05['status'](_0x2bf9f5)[_0x2cfd('0x1b')](_0x2d2af7);}};}function respondWithFilteredResult(_0x186d32,_0x347b3c){return function(_0x84ca95){if(_0x84ca95){var _0x4fc34e=typeof _0x347b3c[_0x2cfd('0x1c')]===_0x2cfd('0x1d')&&typeof _0x347b3c[_0x2cfd('0x1e')]==='undefined';var _0x4a9b6e=_0x84ca95[_0x2cfd('0x1f')];var _0x55e817=_0x4fc34e?0x0:_0x347b3c[_0x2cfd('0x1c')];var _0x58d66c=_0x4fc34e?_0x84ca95[_0x2cfd('0x1f')]:_0x347b3c[_0x2cfd('0x1c')]+_0x347b3c[_0x2cfd('0x1e')];var _0x3669bd;if(_0x58d66c>=_0x4a9b6e){_0x58d66c=_0x4a9b6e;_0x3669bd=0xc8;}else{_0x3669bd=0xce;}_0x186d32[_0x2cfd('0x19')](_0x3669bd);return _0x186d32['set'](_0x2cfd('0x20'),_0x55e817+'-'+_0x58d66c+'/'+_0x4a9b6e)[_0x2cfd('0x1b')](_0x84ca95);}return null;};}function patchUpdates(_0x386bae){return function(_0x4af615){try{jsonpatch[_0x2cfd('0x21')](_0x4af615,_0x386bae,!![]);}catch(_0x2fb304){return BPromise[_0x2cfd('0x22')](_0x2fb304);}return _0x4af615[_0x2cfd('0x23')]();};}function saveUpdates(_0x5c9f52,_0x36de67){return function(_0x54e5c0){if(_0x54e5c0){return _0x54e5c0[_0x2cfd('0x24')](_0x5c9f52)[_0x2cfd('0x25')](function(_0x2c5250){return _0x2c5250;});}return null;};}function removeEntity(_0xcec052,_0x195b38){return function(_0x436f0f){if(_0x436f0f){return _0x436f0f['destroy']()['then'](function(){_0xcec052['status'](0xcc)[_0x2cfd('0x1a')]();});}};}function handleEntityNotFound(_0x8b1a32,_0x4336c7){return function(_0x396baa){if(!_0x396baa){_0x8b1a32[_0x2cfd('0x18')](0x194);}return _0x396baa;};}function handleError(_0x3b4a69,_0x35a376){_0x35a376=_0x35a376||0x1f4;return function(_0x313cc7){logger[_0x2cfd('0x26')](_0x313cc7[_0x2cfd('0x27')]);if(_0x313cc7[_0x2cfd('0x28')]){delete _0x313cc7['name'];}_0x3b4a69[_0x2cfd('0x19')](_0x35a376)['send'](_0x313cc7);};}exports[_0x2cfd('0x29')]=function(_0x478a05,_0x4d13d2){var _0x1004d2={},_0x5daecb={},_0x11fcac={'count':0x0,'rows':[]};var _0x2ac5c5=_[_0x2cfd('0x2a')](db[_0x2cfd('0x2b')][_0x2cfd('0x2c')],function(_0x1a573a){return{'name':_0x1a573a['fieldName'],'type':_0x1a573a[_0x2cfd('0x2d')][_0x2cfd('0x2e')]};});_0x5daecb[_0x2cfd('0x2f')]=_[_0x2cfd('0x2a')](_0x2ac5c5,_0x2cfd('0x28'));_0x5daecb['query']=_[_0x2cfd('0x30')](_0x478a05[_0x2cfd('0x31')]);_0x5daecb[_0x2cfd('0x32')]=_[_0x2cfd('0x33')](_0x5daecb[_0x2cfd('0x2f')],_0x5daecb[_0x2cfd('0x31')]);_0x1004d2['attributes']=_[_0x2cfd('0x33')](_0x5daecb[_0x2cfd('0x2f')],qs[_0x2cfd('0x34')](_0x478a05['query'][_0x2cfd('0x34')]));_0x1004d2[_0x2cfd('0x35')]=_0x1004d2['attributes']['length']?_0x1004d2[_0x2cfd('0x35')]:_0x5daecb[_0x2cfd('0x2f')];if(!_0x478a05['query'][_0x2cfd('0x36')](_0x2cfd('0x37'))){_0x1004d2['limit']=qs[_0x2cfd('0x1e')](_0x478a05[_0x2cfd('0x31')][_0x2cfd('0x1e')]);_0x1004d2[_0x2cfd('0x1c')]=qs[_0x2cfd('0x1c')](_0x478a05[_0x2cfd('0x31')]['offset']);}_0x1004d2['order']=qs['sort'](_0x478a05['query']['sort']);_0x1004d2[_0x2cfd('0x38')]=qs[_0x2cfd('0x32')](_[_0x2cfd('0x39')](_0x478a05[_0x2cfd('0x31')],_0x5daecb[_0x2cfd('0x32')]),_0x2ac5c5);if(_0x478a05['query'][_0x2cfd('0x3a')]){_0x1004d2[_0x2cfd('0x38')]=_[_0x2cfd('0x3b')](_0x1004d2['where'],{'$or':_[_0x2cfd('0x2a')](_0x2ac5c5,function(_0x488a24){if(_0x488a24['type']!==_0x2cfd('0x3c')){var _0x3b281d={};_0x3b281d[_0x488a24[_0x2cfd('0x28')]]={'$like':'%'+_0x478a05[_0x2cfd('0x31')]['filter']+'%'};return _0x3b281d;}})});}_0x1004d2=_['merge']({},_0x1004d2,_0x478a05[_0x2cfd('0x3d')]);var _0x587eb2={'where':_0x1004d2[_0x2cfd('0x38')]};return db[_0x2cfd('0x2b')][_0x2cfd('0x1f')](_0x587eb2)[_0x2cfd('0x25')](function(_0x40c44d){_0x11fcac['count']=_0x40c44d;if(_0x478a05['query'][_0x2cfd('0x3e')]){_0x1004d2[_0x2cfd('0x3f')]=[{'all':!![]}];}return db['DeskAccount']['findAll'](_0x1004d2);})[_0x2cfd('0x25')](function(_0x336c04){_0x11fcac[_0x2cfd('0x40')]=_0x336c04;return _0x11fcac;})[_0x2cfd('0x25')](respondWithFilteredResult(_0x4d13d2,_0x1004d2))[_0x2cfd('0x41')](handleError(_0x4d13d2,null));};exports['show']=function(_0x591e77,_0x4f6e91){var _0x4394cf={'raw':![],'where':{'id':_0x591e77[_0x2cfd('0x42')]['id']}},_0x37ebab={};_0x37ebab['model']=_[_0x2cfd('0x30')](db[_0x2cfd('0x2b')]['rawAttributes']);_0x37ebab[_0x2cfd('0x31')]=_[_0x2cfd('0x30')](_0x591e77[_0x2cfd('0x31')]);_0x37ebab[_0x2cfd('0x32')]=_['intersection'](_0x37ebab[_0x2cfd('0x2f')],_0x37ebab['query']);_0x4394cf['attributes']=_['intersection'](_0x37ebab['model'],qs[_0x2cfd('0x34')](_0x591e77['query'][_0x2cfd('0x34')]));_0x4394cf[_0x2cfd('0x35')]=_0x4394cf[_0x2cfd('0x35')][_0x2cfd('0x43')]?_0x4394cf[_0x2cfd('0x35')]:_0x37ebab[_0x2cfd('0x2f')];if(_0x591e77['query']['includeAll']){_0x4394cf[_0x2cfd('0x3f')]=[{'all':!![]}];}_0x4394cf=_[_0x2cfd('0x3b')]({},_0x4394cf,_0x591e77[_0x2cfd('0x3d')]);return db[_0x2cfd('0x2b')][_0x2cfd('0x44')](_0x4394cf)[_0x2cfd('0x25')](handleEntityNotFound(_0x4f6e91,null))['then'](respondWithResult(_0x4f6e91,null))[_0x2cfd('0x41')](handleError(_0x4f6e91,null));};exports[_0x2cfd('0x45')]=function(_0x3fd95a,_0x5113eb){return db[_0x2cfd('0x2b')][_0x2cfd('0x45')](_0x3fd95a['body'],{})[_0x2cfd('0x25')](respondWithResult(_0x5113eb,0xc9))['catch'](handleError(_0x5113eb,null));};exports[_0x2cfd('0x24')]=function(_0x53a6d0,_0x49a52f){if(_0x53a6d0[_0x2cfd('0x46')]['id']){delete _0x53a6d0['body']['id'];}return db[_0x2cfd('0x2b')][_0x2cfd('0x44')]({'where':{'id':_0x53a6d0[_0x2cfd('0x42')]['id']}})[_0x2cfd('0x25')](handleEntityNotFound(_0x49a52f,null))['then'](saveUpdates(_0x53a6d0[_0x2cfd('0x46')],null))['then'](respondWithResult(_0x49a52f,null))[_0x2cfd('0x41')](handleError(_0x49a52f,null));};exports[_0x2cfd('0x47')]=function(_0x1f592f,_0x49d9f1){return db[_0x2cfd('0x2b')][_0x2cfd('0x44')]({'where':{'id':_0x1f592f[_0x2cfd('0x42')]['id']}})[_0x2cfd('0x25')](handleEntityNotFound(_0x49d9f1,null))['then'](removeEntity(_0x49d9f1,null))[_0x2cfd('0x41')](handleError(_0x49d9f1,null));};exports[_0x2cfd('0x48')]=function(_0x462f31,_0x5b0566,_0x265c70){var _0x7ff2e0={};var _0x34d87a={};var _0xdf341b;var _0x142d4b;return db[_0x2cfd('0x2b')][_0x2cfd('0x49')]({'where':{'id':_0x462f31[_0x2cfd('0x42')]['id']}})['then'](handleEntityNotFound(_0x5b0566,null))[_0x2cfd('0x25')](function(_0x323984){if(_0x323984){_0xdf341b=_0x323984;_0x34d87a[_0x2cfd('0x2f')]=_[_0x2cfd('0x30')](db['DeskConfiguration']['rawAttributes']);_0x34d87a['query']=_[_0x2cfd('0x30')](_0x462f31[_0x2cfd('0x31')]);_0x34d87a[_0x2cfd('0x32')]=_[_0x2cfd('0x33')](_0x34d87a[_0x2cfd('0x2f')],_0x34d87a[_0x2cfd('0x31')]);_0x7ff2e0[_0x2cfd('0x35')]=_[_0x2cfd('0x33')](_0x34d87a[_0x2cfd('0x2f')],qs[_0x2cfd('0x34')](_0x462f31[_0x2cfd('0x31')][_0x2cfd('0x34')]));_0x7ff2e0[_0x2cfd('0x35')]=_0x7ff2e0[_0x2cfd('0x35')][_0x2cfd('0x43')]?_0x7ff2e0['attributes']:_0x34d87a['model'];_0x7ff2e0[_0x2cfd('0x4a')]=qs[_0x2cfd('0x4b')](_0x462f31[_0x2cfd('0x31')][_0x2cfd('0x4b')]);_0x7ff2e0[_0x2cfd('0x38')]=qs[_0x2cfd('0x32')](_['pick'](_0x462f31[_0x2cfd('0x31')],_0x34d87a[_0x2cfd('0x32')]));if(_0x462f31['query']['filter']){_0x7ff2e0[_0x2cfd('0x38')]=_['merge'](_0x7ff2e0[_0x2cfd('0x38')],{'$or':_[_0x2cfd('0x2a')](_0x7ff2e0[_0x2cfd('0x35')],function(_0x4ab95c){var _0xdc6425={};_0xdc6425[_0x4ab95c]={'$like':'%'+_0x462f31[_0x2cfd('0x31')][_0x2cfd('0x3a')]+'%'};return _0xdc6425;})});}_0x7ff2e0=_[_0x2cfd('0x3b')]({},_0x7ff2e0,_0x462f31[_0x2cfd('0x3d')]);return _0xdf341b[_0x2cfd('0x48')](_0x7ff2e0);}})[_0x2cfd('0x25')](function(_0x111057){if(_0x111057){_0x142d4b=_0x111057['length'];if(!_0x462f31[_0x2cfd('0x31')][_0x2cfd('0x36')](_0x2cfd('0x37'))){_0x7ff2e0[_0x2cfd('0x1e')]=qs[_0x2cfd('0x1e')](_0x462f31[_0x2cfd('0x31')]['limit']);_0x7ff2e0[_0x2cfd('0x1c')]=qs['offset'](_0x462f31[_0x2cfd('0x31')][_0x2cfd('0x1c')]);}return _0xdf341b[_0x2cfd('0x48')](_0x7ff2e0);}})[_0x2cfd('0x25')](function(_0x2c6358){if(_0x2c6358){return _0x2c6358?{'count':_0x142d4b,'rows':_0x2c6358}:null;}})[_0x2cfd('0x25')](respondWithResult(_0x5b0566,null))['catch'](handleError(_0x5b0566,null));};exports[_0x2cfd('0x4c')]=function(_0x390b42,_0x1fc5b5,_0x347489){if(_0x390b42[_0x2cfd('0x46')]['id']){delete _0x390b42[_0x2cfd('0x46')]['id'];}return db[_0x2cfd('0x2b')]['findOne']({'where':{'id':_0x390b42[_0x2cfd('0x42')]['id']}})[_0x2cfd('0x25')](handleEntityNotFound(_0x1fc5b5,null))[_0x2cfd('0x25')](function(_0x3fdc4f){if(_0x3fdc4f){_0x390b42[_0x2cfd('0x46')][_0x2cfd('0x4d')]=_0x3fdc4f['id'];_0x390b42[_0x2cfd('0x46')][_0x2cfd('0x4e')]=integrations[_0x2cfd('0x4f')](_0x390b42[_0x2cfd('0x46')]['channel'],_0x390b42[_0x2cfd('0x46')][_0x2cfd('0x2d')]);_0x390b42[_0x2cfd('0x46')][_0x2cfd('0x50')]=integrations['getDescriptions'](_0x390b42[_0x2cfd('0x46')]['channel'],_0x390b42[_0x2cfd('0x46')]['type']);return db['DeskConfiguration'][_0x2cfd('0x45')](_0x390b42[_0x2cfd('0x46')],{'include':[{'model':db[_0x2cfd('0x51')],'as':_0x2cfd('0x4e')},{'model':db['DeskField'],'as':_0x2cfd('0x50')}]});}return null;})[_0x2cfd('0x25')](respondWithResult(_0x1fc5b5,null))['catch'](handleError(_0x1fc5b5,null));};exports[_0x2cfd('0x52')]=function(_0xb27ae2,_0xb9dca0,_0xedeb8c){var _0x1a50db=[{'name':_0x2cfd('0x53'),'label':_0x2cfd('0x53'),'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 _0x5d577b='';return db[_0x2cfd('0x2b')][_0x2cfd('0x49')]({'where':{'id':_0xb27ae2[_0x2cfd('0x42')]['id']},'attributes':['id','remoteUri',_0x2cfd('0x54'),_0x2cfd('0x55'),_0x2cfd('0x56'),_0x2cfd('0x57'),_0x2cfd('0x58'),_0x2cfd('0x59'),_0x2cfd('0x5a')]})[_0x2cfd('0x25')](handleEntityNotFound(_0xb9dca0,null))['then'](function(_0x35d61b){if(_0x35d61b){_0x5d577b=_0x35d61b[_0x2cfd('0x5b')];var _0x46133f=_0x5d577b[_0x2cfd('0x5c')](-0x1);if(_0x46133f==='/'){_0x5d577b=_0x5d577b['substring'](0x0,_0x5d577b['lastIndexOf'](_0x46133f));}var _0xc8c236={'method':_0x2cfd('0x5d'),'uri':util[_0x2cfd('0x5e')](_0x2cfd('0x5f'),_0x5d577b),'headers':{'Content-Type':'application/json','Accept':_0x2cfd('0x60')},'json':!![]};if(_0x35d61b[_0x2cfd('0x54')]===_0x2cfd('0x61')){_0xc8c236[_0x2cfd('0x62')]['Authorization']=util[_0x2cfd('0x5e')](_0x2cfd('0x63'),new Buffer(util[_0x2cfd('0x5e')]('%s:%s',_0x35d61b[_0x2cfd('0x55')],_0x35d61b[_0x2cfd('0x56')]))['toString'](_0x2cfd('0x64')));}return rp(_0xc8c236)[_0x2cfd('0x25')](function(_0x15616a){return _0x1a50db[_0x2cfd('0x65')](_[_0x2cfd('0x2a')](_0x15616a[_0x2cfd('0x66')]['entries'],function(_0x14fc6d){return{'id':_0x14fc6d[_0x2cfd('0x28')],'name':_0x14fc6d['name'],'type':_0x14fc6d['type'],'active':_0x14fc6d['active'],'label':_0x14fc6d[_0x2cfd('0x67')],'custom':!![]};}));});}})['then'](function(_0x220e4d){return{'count':_0x220e4d[_0x2cfd('0x43')],'rows':_0x220e4d};})[_0x2cfd('0x25')](respondWithResult(_0xb9dca0,null))[_0x2cfd('0x41')](function(_0xd81869){var _0x14adac=_0xb27ae2[_0x2cfd('0x31')]['test']?0x1f4:_0xd81869[_0x2cfd('0x68')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x14adac,JSON['stringify'](_0xd81869));delete _0xd81869[_0x2cfd('0x28')];if(_0x14adac===0x191){_0x14adac=0x190;}_0xb9dca0[_0x2cfd('0x19')](_0x14adac)[_0x2cfd('0x69')](_0xb27ae2['query'][_0x2cfd('0x6a')]?{'message':_0x2cfd('0x6b'),'statusCode':_0xd81869[_0x2cfd('0x68')]}:_0xd81869);});};
\ No newline at end of file
+var _0x46a6=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','stack','name','map','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','DeskAccount','include','findAll','rows','catch','show','keys','rawAttributes','includeAll','find','body','params','destroy','getConfigurations','findOne','DeskConfiguration','pick','hasOwnProperty','addConfiguration','Subjects','channel','getDescriptions','create','DeskField','Descriptions','priority','password','consumerKey','consumerSecret','token','tokenSecret','remoteUri','slice','GET','format','%s/custom_fields','application/json','authType','basic','headers','Authorization','%s:%s','username','toString','_embedded','entries','active','label','test','statusCode','error','getFields','stringify','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0x46a6,0xe0));var _0x646a=function(_0x215e65,_0x183f97){_0x215e65=_0x215e65-0x0;var _0xa85842=_0x46a6[_0x215e65];return _0xa85842;};'use strict';var emlformat=require(_0x646a('0x0'));var rimraf=require(_0x646a('0x1'));var zipdir=require(_0x646a('0x2'));var jsonpatch=require(_0x646a('0x3'));var rp=require(_0x646a('0x4'));var moment=require(_0x646a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x646a('0x6'));var util=require(_0x646a('0x7'));var path=require(_0x646a('0x8'));var sox=require(_0x646a('0x9'));var csv=require(_0x646a('0xa'));var ejs=require(_0x646a('0xb'));var fs=require('fs');var fs_extra=require(_0x646a('0xc'));var _=require(_0x646a('0xd'));var squel=require(_0x646a('0xe'));var crypto=require(_0x646a('0xf'));var jsforce=require(_0x646a('0x10'));var deskjs=require(_0x646a('0x11'));var toCsv=require(_0x646a('0xa'));var querystring=require(_0x646a('0x12'));var Papa=require(_0x646a('0x13'));var Redis=require(_0x646a('0x14'));var authService=require(_0x646a('0x15'));var qs=require(_0x646a('0x16'));var as=require(_0x646a('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x646a('0x18'))(_0x646a('0x19'));var utils=require(_0x646a('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0x646a('0x1b'));var db=require(_0x646a('0x1c'))['db'];var integrations=require(_0x646a('0x1d'));function respondWithStatusCode(_0x5dd165,_0x404dad){_0x404dad=_0x404dad||0xcc;return function(_0x433495){if(_0x433495){return _0x5dd165[_0x646a('0x1e')](_0x404dad);}return _0x5dd165[_0x646a('0x1f')](_0x404dad)[_0x646a('0x20')]();};}function respondWithResult(_0x92d619,_0x183d49){_0x183d49=_0x183d49||0xc8;return function(_0x483677){if(_0x483677){return _0x92d619[_0x646a('0x1f')](_0x183d49)[_0x646a('0x21')](_0x483677);}};}function respondWithFilteredResult(_0x40c04d,_0x4327ec){return function(_0x41689e){if(_0x41689e){var _0x30edda=typeof _0x4327ec['offset']===_0x646a('0x22')&&typeof _0x4327ec[_0x646a('0x23')]===_0x646a('0x22');var _0x4809e5=_0x41689e[_0x646a('0x24')];var _0x23cbe0=_0x30edda?0x0:_0x4327ec[_0x646a('0x25')];var _0x51f0c5=_0x30edda?_0x41689e['count']:_0x4327ec[_0x646a('0x25')]+_0x4327ec['limit'];var _0x47ce46;if(_0x51f0c5>=_0x4809e5){_0x51f0c5=_0x4809e5;_0x47ce46=0xc8;}else{_0x47ce46=0xce;}_0x40c04d[_0x646a('0x1f')](_0x47ce46);return _0x40c04d[_0x646a('0x26')](_0x646a('0x27'),_0x23cbe0+'-'+_0x51f0c5+'/'+_0x4809e5)[_0x646a('0x21')](_0x41689e);}return null;};}function patchUpdates(_0x4af55b){return function(_0x410fa5){try{jsonpatch[_0x646a('0x28')](_0x410fa5,_0x4af55b,!![]);}catch(_0x4a77e7){return BPromise['reject'](_0x4a77e7);}return _0x410fa5[_0x646a('0x29')]();};}function saveUpdates(_0x56f966,_0x6a001c){return function(_0x369bf0){if(_0x369bf0){return _0x369bf0[_0x646a('0x2a')](_0x56f966)[_0x646a('0x2b')](function(_0x5a97c0){return _0x5a97c0;});}return null;};}function removeEntity(_0x32a906,_0x5c1941){return function(_0x5098f5){if(_0x5098f5){return _0x5098f5['destroy']()[_0x646a('0x2b')](function(){_0x32a906['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x21bf49,_0x517c68){return function(_0x48f0da){if(!_0x48f0da){_0x21bf49['sendStatus'](0x194);}return _0x48f0da;};}function handleError(_0x10984a,_0x2ef31f){_0x2ef31f=_0x2ef31f||0x1f4;return function(_0x3f9f37){logger['error'](_0x3f9f37[_0x646a('0x2c')]);if(_0x3f9f37['name']){delete _0x3f9f37[_0x646a('0x2d')];}_0x10984a[_0x646a('0x1f')](_0x2ef31f)['send'](_0x3f9f37);};}exports['index']=function(_0x6ae044,_0xdff050){var _0x79aaeb={},_0x121fd5={},_0x15093c={'count':0x0,'rows':[]};var _0x3657c0=_[_0x646a('0x2e')](db['DeskAccount']['rawAttributes'],function(_0x4cbdfc){return{'name':_0x4cbdfc[_0x646a('0x2f')],'type':_0x4cbdfc[_0x646a('0x30')][_0x646a('0x31')]};});_0x121fd5[_0x646a('0x32')]=_[_0x646a('0x2e')](_0x3657c0,'name');_0x121fd5[_0x646a('0x33')]=_['keys'](_0x6ae044[_0x646a('0x33')]);_0x121fd5[_0x646a('0x34')]=_[_0x646a('0x35')](_0x121fd5[_0x646a('0x32')],_0x121fd5[_0x646a('0x33')]);_0x79aaeb[_0x646a('0x36')]=_[_0x646a('0x35')](_0x121fd5['model'],qs[_0x646a('0x37')](_0x6ae044[_0x646a('0x33')][_0x646a('0x37')]));_0x79aaeb[_0x646a('0x36')]=_0x79aaeb[_0x646a('0x36')][_0x646a('0x38')]?_0x79aaeb[_0x646a('0x36')]:_0x121fd5[_0x646a('0x32')];if(!_0x6ae044['query']['hasOwnProperty'](_0x646a('0x39'))){_0x79aaeb[_0x646a('0x23')]=qs[_0x646a('0x23')](_0x6ae044[_0x646a('0x33')][_0x646a('0x23')]);_0x79aaeb[_0x646a('0x25')]=qs[_0x646a('0x25')](_0x6ae044[_0x646a('0x33')][_0x646a('0x25')]);}_0x79aaeb[_0x646a('0x3a')]=qs[_0x646a('0x3b')](_0x6ae044[_0x646a('0x33')][_0x646a('0x3b')]);_0x79aaeb[_0x646a('0x3c')]=qs[_0x646a('0x34')](_['pick'](_0x6ae044[_0x646a('0x33')],_0x121fd5[_0x646a('0x34')]),_0x3657c0);if(_0x6ae044['query'][_0x646a('0x3d')]){_0x79aaeb[_0x646a('0x3c')]=_[_0x646a('0x3e')](_0x79aaeb['where'],{'$or':_['map'](_0x3657c0,function(_0x1c94d5){if(_0x1c94d5[_0x646a('0x30')]!==_0x646a('0x3f')){var _0x29ec4e={};_0x29ec4e[_0x1c94d5[_0x646a('0x2d')]]={'$like':'%'+_0x6ae044[_0x646a('0x33')][_0x646a('0x3d')]+'%'};return _0x29ec4e;}})});}_0x79aaeb=_[_0x646a('0x3e')]({},_0x79aaeb,_0x6ae044[_0x646a('0x40')]);var _0x2d61f3={'where':_0x79aaeb[_0x646a('0x3c')]};return db[_0x646a('0x41')][_0x646a('0x24')](_0x2d61f3)[_0x646a('0x2b')](function(_0x53a828){_0x15093c[_0x646a('0x24')]=_0x53a828;if(_0x6ae044[_0x646a('0x33')]['includeAll']){_0x79aaeb[_0x646a('0x42')]=[{'all':!![]}];}return db[_0x646a('0x41')][_0x646a('0x43')](_0x79aaeb);})[_0x646a('0x2b')](function(_0x4eab63){_0x15093c[_0x646a('0x44')]=_0x4eab63;return _0x15093c;})['then'](respondWithFilteredResult(_0xdff050,_0x79aaeb))[_0x646a('0x45')](handleError(_0xdff050,null));};exports[_0x646a('0x46')]=function(_0x5e3669,_0x163d1d){var _0x5ee568={'raw':![],'where':{'id':_0x5e3669['params']['id']}},_0x496012={};_0x496012['model']=_[_0x646a('0x47')](db[_0x646a('0x41')][_0x646a('0x48')]);_0x496012[_0x646a('0x33')]=_[_0x646a('0x47')](_0x5e3669[_0x646a('0x33')]);_0x496012['filters']=_['intersection'](_0x496012[_0x646a('0x32')],_0x496012[_0x646a('0x33')]);_0x5ee568[_0x646a('0x36')]=_[_0x646a('0x35')](_0x496012[_0x646a('0x32')],qs[_0x646a('0x37')](_0x5e3669[_0x646a('0x33')][_0x646a('0x37')]));_0x5ee568['attributes']=_0x5ee568[_0x646a('0x36')][_0x646a('0x38')]?_0x5ee568['attributes']:_0x496012[_0x646a('0x32')];if(_0x5e3669[_0x646a('0x33')][_0x646a('0x49')]){_0x5ee568[_0x646a('0x42')]=[{'all':!![]}];}_0x5ee568=_[_0x646a('0x3e')]({},_0x5ee568,_0x5e3669[_0x646a('0x40')]);return db[_0x646a('0x41')][_0x646a('0x4a')](_0x5ee568)['then'](handleEntityNotFound(_0x163d1d,null))[_0x646a('0x2b')](respondWithResult(_0x163d1d,null))[_0x646a('0x45')](handleError(_0x163d1d,null));};exports['create']=function(_0x401b41,_0x1000cd){return db['DeskAccount']['create'](_0x401b41[_0x646a('0x4b')],{})[_0x646a('0x2b')](respondWithResult(_0x1000cd,0xc9))[_0x646a('0x45')](handleError(_0x1000cd,null));};exports['update']=function(_0x438b17,_0x480d90){if(_0x438b17[_0x646a('0x4b')]['id']){delete _0x438b17[_0x646a('0x4b')]['id'];}return db['DeskAccount'][_0x646a('0x4a')]({'where':{'id':_0x438b17[_0x646a('0x4c')]['id']}})['then'](handleEntityNotFound(_0x480d90,null))['then'](saveUpdates(_0x438b17[_0x646a('0x4b')],null))[_0x646a('0x2b')](respondWithResult(_0x480d90,null))['catch'](handleError(_0x480d90,null));};exports[_0x646a('0x4d')]=function(_0x57d71c,_0x253bfb){return db[_0x646a('0x41')][_0x646a('0x4a')]({'where':{'id':_0x57d71c[_0x646a('0x4c')]['id']}})[_0x646a('0x2b')](handleEntityNotFound(_0x253bfb,null))['then'](removeEntity(_0x253bfb,null))[_0x646a('0x45')](handleError(_0x253bfb,null));};exports[_0x646a('0x4e')]=function(_0x50fe86,_0x5cdb43,_0x522c60){var _0x4c315c={};var _0xb0a987={};var _0x1dd192;var _0x29660a;return db[_0x646a('0x41')][_0x646a('0x4f')]({'where':{'id':_0x50fe86[_0x646a('0x4c')]['id']}})[_0x646a('0x2b')](handleEntityNotFound(_0x5cdb43,null))[_0x646a('0x2b')](function(_0x18b34b){if(_0x18b34b){_0x1dd192=_0x18b34b;_0xb0a987[_0x646a('0x32')]=_[_0x646a('0x47')](db[_0x646a('0x50')]['rawAttributes']);_0xb0a987[_0x646a('0x33')]=_['keys'](_0x50fe86[_0x646a('0x33')]);_0xb0a987['filters']=_[_0x646a('0x35')](_0xb0a987[_0x646a('0x32')],_0xb0a987['query']);_0x4c315c['attributes']=_['intersection'](_0xb0a987[_0x646a('0x32')],qs[_0x646a('0x37')](_0x50fe86[_0x646a('0x33')][_0x646a('0x37')]));_0x4c315c[_0x646a('0x36')]=_0x4c315c[_0x646a('0x36')][_0x646a('0x38')]?_0x4c315c['attributes']:_0xb0a987['model'];_0x4c315c[_0x646a('0x3a')]=qs[_0x646a('0x3b')](_0x50fe86[_0x646a('0x33')][_0x646a('0x3b')]);_0x4c315c[_0x646a('0x3c')]=qs[_0x646a('0x34')](_[_0x646a('0x51')](_0x50fe86[_0x646a('0x33')],_0xb0a987[_0x646a('0x34')]));if(_0x50fe86[_0x646a('0x33')][_0x646a('0x3d')]){_0x4c315c['where']=_['merge'](_0x4c315c[_0x646a('0x3c')],{'$or':_[_0x646a('0x2e')](_0x4c315c[_0x646a('0x36')],function(_0x236d40){var _0x472395={};_0x472395[_0x236d40]={'$like':'%'+_0x50fe86[_0x646a('0x33')][_0x646a('0x3d')]+'%'};return _0x472395;})});}_0x4c315c=_[_0x646a('0x3e')]({},_0x4c315c,_0x50fe86['options']);return _0x1dd192[_0x646a('0x4e')](_0x4c315c);}})[_0x646a('0x2b')](function(_0x5e87ca){if(_0x5e87ca){_0x29660a=_0x5e87ca[_0x646a('0x38')];if(!_0x50fe86[_0x646a('0x33')][_0x646a('0x52')](_0x646a('0x39'))){_0x4c315c[_0x646a('0x23')]=qs[_0x646a('0x23')](_0x50fe86[_0x646a('0x33')][_0x646a('0x23')]);_0x4c315c[_0x646a('0x25')]=qs[_0x646a('0x25')](_0x50fe86[_0x646a('0x33')]['offset']);}return _0x1dd192[_0x646a('0x4e')](_0x4c315c);}})[_0x646a('0x2b')](function(_0x120064){if(_0x120064){return _0x120064?{'count':_0x29660a,'rows':_0x120064}:null;}})[_0x646a('0x2b')](respondWithResult(_0x5cdb43,null))['catch'](handleError(_0x5cdb43,null));};exports[_0x646a('0x53')]=function(_0x5f579b,_0x9dfbe,_0x2d22b1){if(_0x5f579b['body']['id']){delete _0x5f579b[_0x646a('0x4b')]['id'];}return db['DeskAccount'][_0x646a('0x4f')]({'where':{'id':_0x5f579b['params']['id']}})[_0x646a('0x2b')](handleEntityNotFound(_0x9dfbe,null))[_0x646a('0x2b')](function(_0xb3ab8){if(_0xb3ab8){_0x5f579b[_0x646a('0x4b')]['AccountId']=_0xb3ab8['id'];_0x5f579b[_0x646a('0x4b')][_0x646a('0x54')]=integrations['getSubjects'](_0x5f579b[_0x646a('0x4b')][_0x646a('0x55')],_0x5f579b[_0x646a('0x4b')][_0x646a('0x30')]);_0x5f579b[_0x646a('0x4b')]['Descriptions']=integrations[_0x646a('0x56')](_0x5f579b[_0x646a('0x4b')][_0x646a('0x55')],_0x5f579b[_0x646a('0x4b')][_0x646a('0x30')]);return db[_0x646a('0x50')][_0x646a('0x57')](_0x5f579b['body'],{'include':[{'model':db[_0x646a('0x58')],'as':_0x646a('0x54')},{'model':db[_0x646a('0x58')],'as':_0x646a('0x59')}]});}return null;})[_0x646a('0x2b')](respondWithResult(_0x9dfbe,null))[_0x646a('0x45')](handleError(_0x9dfbe,null));};exports['getFields']=function(_0x2db0b8,_0x3093d9,_0x44316a){var _0x407186=[{'name':_0x646a('0x5a'),'label':_0x646a('0x5a'),'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 _0x308b7b='';return db[_0x646a('0x41')][_0x646a('0x4f')]({'where':{'id':_0x2db0b8[_0x646a('0x4c')]['id']},'attributes':['id','remoteUri','authType','username',_0x646a('0x5b'),_0x646a('0x5c'),_0x646a('0x5d'),_0x646a('0x5e'),_0x646a('0x5f')]})[_0x646a('0x2b')](handleEntityNotFound(_0x3093d9,null))[_0x646a('0x2b')](function(_0x1b0d85){if(_0x1b0d85){_0x308b7b=_0x1b0d85[_0x646a('0x60')];var _0x5e2a46=_0x308b7b[_0x646a('0x61')](-0x1);if(_0x5e2a46==='/'){_0x308b7b=_0x308b7b['substring'](0x0,_0x308b7b['lastIndexOf'](_0x5e2a46));}var _0x28763e={'method':_0x646a('0x62'),'uri':util[_0x646a('0x63')](_0x646a('0x64'),_0x308b7b),'headers':{'Content-Type':'application/json','Accept':_0x646a('0x65')},'json':!![]};if(_0x1b0d85[_0x646a('0x66')]===_0x646a('0x67')){_0x28763e[_0x646a('0x68')][_0x646a('0x69')]=util['format']('Basic\x20%s',new Buffer(util[_0x646a('0x63')](_0x646a('0x6a'),_0x1b0d85[_0x646a('0x6b')],_0x1b0d85['password']))[_0x646a('0x6c')]('base64'));}return rp(_0x28763e)[_0x646a('0x2b')](function(_0x1669db){return _0x407186['concat'](_['map'](_0x1669db[_0x646a('0x6d')][_0x646a('0x6e')],function(_0x2b55a2){return{'id':_0x2b55a2[_0x646a('0x2d')],'name':_0x2b55a2['name'],'type':_0x2b55a2[_0x646a('0x30')],'active':_0x2b55a2[_0x646a('0x6f')],'label':_0x2b55a2[_0x646a('0x70')],'custom':!![]};}));});}})[_0x646a('0x2b')](function(_0x546098){return{'count':_0x546098[_0x646a('0x38')],'rows':_0x546098};})[_0x646a('0x2b')](respondWithResult(_0x3093d9,null))[_0x646a('0x45')](function(_0x334fd3){var _0x3ea865=_0x2db0b8[_0x646a('0x33')][_0x646a('0x71')]?0x1f4:_0x334fd3[_0x646a('0x72')]||0x1f4;logger[_0x646a('0x73')]('getFields,\x20%s,\x20%s,\x20%s',_0x646a('0x74'),_0x3ea865,JSON[_0x646a('0x75')](_0x334fd3));delete _0x334fd3[_0x646a('0x2d')];if(_0x3ea865===0x191){_0x3ea865=0x190;}_0x3093d9['status'](_0x3ea865)[_0x646a('0x76')](_0x2db0b8[_0x646a('0x33')][_0x646a('0x71')]?{'message':_0x646a('0x77'),'statusCode':_0x334fd3[_0x646a('0x72')]}:_0x334fd3);});};
\ No newline at end of file
index 38f920a..0ae04b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5541=['rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','DeskAccount','int_desk_accounts','api','bluebird','path'];(function(_0x408477,_0x413608){var _0x1157ff=function(_0x1872d2){while(--_0x1872d2){_0x408477['push'](_0x408477['shift']());}};_0x1157ff(++_0x413608);}(_0x5541,0x1b6));var _0x1554=function(_0x4cfc1d,_0x2c0927){_0x4cfc1d=_0x4cfc1d-0x0;var _0x1c01a0=_0x5541[_0x4cfc1d];return _0x1c01a0;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x1554('0x0'));var moment=require('moment');var BPromise=require(_0x1554('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1554('0x2'));var rimraf=require(_0x1554('0x3'));var config=require(_0x1554('0x4'));var attributes=require(_0x1554('0x5'));var integrations=require(_0x1554('0x6'));module['exports']=function(_0x3cc7ca,_0xa5fc45){return _0x3cc7ca['define'](_0x1554('0x7'),attributes,{'tableName':_0x1554('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9a36=['exports','define','lodash','util','api','moment','bluebird','path','../../config/environment','./intDeskAccount.attributes'];(function(_0x247fa1,_0x4ec37c){var _0x244f35=function(_0xfb98be){while(--_0xfb98be){_0x247fa1['push'](_0x247fa1['shift']());}};_0x244f35(++_0x4ec37c);}(_0x9a36,0xd4));var _0x69a3=function(_0x37c2bb,_0x340eab){_0x37c2bb=_0x37c2bb-0x0;var _0x22add5=_0x9a36[_0x37c2bb];return _0x22add5;};'use strict';var _=require(_0x69a3('0x0'));var util=require(_0x69a3('0x1'));var logger=require('../../config/logger')(_0x69a3('0x2'));var moment=require(_0x69a3('0x3'));var BPromise=require(_0x69a3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x69a3('0x5'));var rimraf=require('rimraf');var config=require(_0x69a3('0x6'));var attributes=require(_0x69a3('0x7'));var integrations=require('../../components/integrations/configuration');module[_0x69a3('0x8')]=function(_0x2673dd,_0xa2d9ac){return _0x2673dd[_0x69a3('0x9')]('DeskAccount',attributes,{'tableName':'int_desk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 59c300b..a6f4c39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ed9=['findAll','options','raw','where','attributes','include','map','model','stringify','catch','ShowDeskAccount','find','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','result','GetDeskAccount','DeskAccount'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9ed9,0x101));var _0x99ed=function(_0x5adb27,_0xd642da){_0x5adb27=_0x5adb27-0x0;var _0x49de3e=_0x9ed9[_0x5adb27];return _0x49de3e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x99ed('0x0'));var BPromise=require(_0x99ed('0x1'));var rs=require(_0x99ed('0x2'));var fs=require('fs');var Redis=require(_0x99ed('0x3'));var db=require(_0x99ed('0x4'))['db'];var utils=require(_0x99ed('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x99ed('0x6'));var jayson=require(_0x99ed('0x7'));var client=jayson[_0x99ed('0x8')][_0x99ed('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4932e5,_0x37d553,_0x40c0ba){return new BPromise(function(_0x4796e4,_0x16f193){return client[_0x99ed('0xa')](_0x4932e5,_0x40c0ba)[_0x99ed('0xb')](function(_0x4ec23b){logger['info'](_0x99ed('0xc'),_0x37d553,_0x99ed('0xd'));logger[_0x99ed('0xe')](_0x99ed('0xf'),_0x37d553,_0x99ed('0xd'),JSON['stringify'](_0x4ec23b));if(_0x4ec23b['error']){if(_0x4ec23b[_0x99ed('0x10')][_0x99ed('0x11')]===0x1f4){logger[_0x99ed('0x10')](_0x99ed('0xc'),_0x37d553,_0x4ec23b[_0x99ed('0x10')][_0x99ed('0x12')]);return _0x16f193(_0x4ec23b['error']['message']);}logger[_0x99ed('0x10')](_0x99ed('0xc'),_0x37d553,_0x4ec23b[_0x99ed('0x10')]['message']);return _0x4796e4(_0x4ec23b['error'][_0x99ed('0x12')]);}else{logger[_0x99ed('0x13')]('DeskAccount,\x20%s,\x20%s',_0x37d553,_0x99ed('0xd'));_0x4796e4(_0x4ec23b[_0x99ed('0x14')][_0x99ed('0x12')]);}})['catch'](function(_0x455d2e){logger[_0x99ed('0x10')](_0x99ed('0xc'),_0x37d553,_0x455d2e);_0x16f193(_0x455d2e);});});}exports[_0x99ed('0x15')]=function(_0x2048f1){var _0x2dff36=this;return new Promise(function(_0x312ab1,_0x2a8b19){return db[_0x99ed('0x16')][_0x99ed('0x17')]({'raw':_0x2048f1[_0x99ed('0x18')]?_0x2048f1[_0x99ed('0x18')][_0x99ed('0x19')]===undefined?!![]:![]:!![],'where':_0x2048f1['options']?_0x2048f1[_0x99ed('0x18')][_0x99ed('0x1a')]||null:null,'attributes':_0x2048f1[_0x99ed('0x18')]?_0x2048f1[_0x99ed('0x18')][_0x99ed('0x1b')]||null:null,'limit':_0x2048f1['options']?_0x2048f1[_0x99ed('0x18')]['limit']||null:null,'include':_0x2048f1['options']?_0x2048f1[_0x99ed('0x18')][_0x99ed('0x1c')]?_[_0x99ed('0x1d')](_0x2048f1[_0x99ed('0x18')][_0x99ed('0x1c')],function(_0x45b138){return{'model':db[_0x45b138[_0x99ed('0x1e')]],'as':_0x45b138['as'],'attributes':_0x45b138[_0x99ed('0x1b')],'include':_0x45b138[_0x99ed('0x1c')]?_[_0x99ed('0x1d')](_0x45b138['include'],function(_0x23171a){return{'model':db[_0x23171a[_0x99ed('0x1e')]],'as':_0x23171a['as'],'attributes':_0x23171a[_0x99ed('0x1b')],'include':_0x23171a['include']?_[_0x99ed('0x1d')](_0x23171a[_0x99ed('0x1c')],function(_0x26744f){return{'model':db[_0x26744f['model']],'as':_0x26744f['as'],'attributes':_0x26744f[_0x99ed('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x99ed('0xb')](function(_0x2462ae){logger['info'](_0x99ed('0x15'),_0x2048f1);logger[_0x99ed('0xe')]('GetDeskAccount',_0x2048f1,JSON[_0x99ed('0x1f')](_0x2462ae));_0x312ab1(_0x2462ae);})[_0x99ed('0x20')](function(_0x342795){logger[_0x99ed('0x10')](_0x99ed('0x15'),_0x342795[_0x99ed('0x12')],_0x2048f1);_0x2a8b19(_0x2dff36['error'](0x1f4,_0x342795[_0x99ed('0x12')]));});});};exports[_0x99ed('0x21')]=function(_0x3ca3b2){var _0x286f52=this;return new Promise(function(_0x1b3560,_0x5c3163){return db[_0x99ed('0x16')][_0x99ed('0x22')]({'raw':_0x3ca3b2[_0x99ed('0x18')]?_0x3ca3b2[_0x99ed('0x18')][_0x99ed('0x19')]===undefined?!![]:![]:!![],'where':_0x3ca3b2[_0x99ed('0x18')]?_0x3ca3b2[_0x99ed('0x18')][_0x99ed('0x1a')]||null:null,'attributes':_0x3ca3b2['options']?_0x3ca3b2[_0x99ed('0x18')][_0x99ed('0x1b')]||null:null,'include':_0x3ca3b2['options']?_0x3ca3b2[_0x99ed('0x18')][_0x99ed('0x1c')]?_[_0x99ed('0x1d')](_0x3ca3b2['options']['include'],function(_0x4d471d){return{'model':db[_0x4d471d[_0x99ed('0x1e')]],'as':_0x4d471d['as'],'attributes':_0x4d471d['attributes'],'include':_0x4d471d[_0x99ed('0x1c')]?_[_0x99ed('0x1d')](_0x4d471d[_0x99ed('0x1c')],function(_0x5b7519){return{'model':db[_0x5b7519['model']],'as':_0x5b7519['as'],'attributes':_0x5b7519[_0x99ed('0x1b')],'include':_0x5b7519[_0x99ed('0x1c')]?_[_0x99ed('0x1d')](_0x5b7519[_0x99ed('0x1c')],function(_0x12cd42){return{'model':db[_0x12cd42['model']],'as':_0x12cd42['as'],'attributes':_0x12cd42[_0x99ed('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x99ed('0xb')](function(_0x421656){logger['info']('ShowDeskAccount',_0x3ca3b2);logger[_0x99ed('0xe')](_0x99ed('0x21'),_0x3ca3b2,JSON[_0x99ed('0x1f')](_0x421656));_0x1b3560(_0x421656);})[_0x99ed('0x20')](function(_0x26efa2){logger[_0x99ed('0x10')](_0x99ed('0x21'),_0x26efa2['message'],_0x3ca3b2);_0x5c3163(_0x286f52[_0x99ed('0x10')](0x1f4,_0x26efa2[_0x99ed('0x12')]));});});};
\ No newline at end of file
+var _0x96f4=['options','raw','where','limit','include','map','attributes','model','then','GetDeskAccount','ShowDeskAccount','find','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','DeskAccount'];(function(_0x13f733,_0x41a917){var _0x42fe89=function(_0x4dbebe){while(--_0x4dbebe){_0x13f733['push'](_0x13f733['shift']());}};_0x42fe89(++_0x41a917);}(_0x96f4,0xb6));var _0x496f=function(_0x1a9e78,_0x180720){_0x1a9e78=_0x1a9e78-0x0;var _0x113e06=_0x96f4[_0x1a9e78];return _0x113e06;};'use strict';var _=require(_0x496f('0x0'));var util=require(_0x496f('0x1'));var moment=require(_0x496f('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x496f('0x3'));var db=require(_0x496f('0x4'))['db'];var utils=require(_0x496f('0x5'));var logger=require('../../config/logger')(_0x496f('0x6'));var config=require(_0x496f('0x7'));var jayson=require(_0x496f('0x8'));var client=jayson[_0x496f('0x9')][_0x496f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2306a7,_0xa2f1b8,_0x3062fe){return new BPromise(function(_0x1e71e8,_0xbff740){return client[_0x496f('0xb')](_0x2306a7,_0x3062fe)['then'](function(_0x7532ab){logger['info'](_0x496f('0xc'),_0xa2f1b8,_0x496f('0xd'));logger[_0x496f('0xe')]('DeskAccount,\x20%s,\x20%s,\x20%s',_0xa2f1b8,'request\x20sent',JSON[_0x496f('0xf')](_0x7532ab));if(_0x7532ab['error']){if(_0x7532ab[_0x496f('0x10')][_0x496f('0x11')]===0x1f4){logger['error'](_0x496f('0xc'),_0xa2f1b8,_0x7532ab[_0x496f('0x10')][_0x496f('0x12')]);return _0xbff740(_0x7532ab[_0x496f('0x10')][_0x496f('0x12')]);}logger[_0x496f('0x10')](_0x496f('0xc'),_0xa2f1b8,_0x7532ab[_0x496f('0x10')]['message']);return _0x1e71e8(_0x7532ab[_0x496f('0x10')][_0x496f('0x12')]);}else{logger[_0x496f('0x13')](_0x496f('0xc'),_0xa2f1b8,_0x496f('0xd'));_0x1e71e8(_0x7532ab['result'][_0x496f('0x12')]);}})[_0x496f('0x14')](function(_0x13ee06){logger[_0x496f('0x10')](_0x496f('0xc'),_0xa2f1b8,_0x13ee06);_0xbff740(_0x13ee06);});});}exports['GetDeskAccount']=function(_0x4134bc){var _0x5b0a26=this;return new Promise(function(_0x224229,_0x4c2dae){return db[_0x496f('0x15')]['findAll']({'raw':_0x4134bc[_0x496f('0x16')]?_0x4134bc[_0x496f('0x16')][_0x496f('0x17')]===undefined?!![]:![]:!![],'where':_0x4134bc[_0x496f('0x16')]?_0x4134bc[_0x496f('0x16')][_0x496f('0x18')]||null:null,'attributes':_0x4134bc[_0x496f('0x16')]?_0x4134bc[_0x496f('0x16')]['attributes']||null:null,'limit':_0x4134bc['options']?_0x4134bc[_0x496f('0x16')][_0x496f('0x19')]||null:null,'include':_0x4134bc['options']?_0x4134bc[_0x496f('0x16')][_0x496f('0x1a')]?_[_0x496f('0x1b')](_0x4134bc[_0x496f('0x16')][_0x496f('0x1a')],function(_0x495e5f){return{'model':db[_0x495e5f['model']],'as':_0x495e5f['as'],'attributes':_0x495e5f[_0x496f('0x1c')],'include':_0x495e5f[_0x496f('0x1a')]?_[_0x496f('0x1b')](_0x495e5f[_0x496f('0x1a')],function(_0x141baf){return{'model':db[_0x141baf[_0x496f('0x1d')]],'as':_0x141baf['as'],'attributes':_0x141baf[_0x496f('0x1c')],'include':_0x141baf[_0x496f('0x1a')]?_[_0x496f('0x1b')](_0x141baf['include'],function(_0x4d41b4){return{'model':db[_0x4d41b4['model']],'as':_0x4d41b4['as'],'attributes':_0x4d41b4[_0x496f('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x496f('0x1e')](function(_0x38b988){logger['info']('GetDeskAccount',_0x4134bc);logger[_0x496f('0xe')](_0x496f('0x1f'),_0x4134bc,JSON[_0x496f('0xf')](_0x38b988));_0x224229(_0x38b988);})[_0x496f('0x14')](function(_0x2ae30e){logger[_0x496f('0x10')](_0x496f('0x1f'),_0x2ae30e[_0x496f('0x12')],_0x4134bc);_0x4c2dae(_0x5b0a26[_0x496f('0x10')](0x1f4,_0x2ae30e[_0x496f('0x12')]));});});};exports[_0x496f('0x20')]=function(_0x390c89){var _0x36ebc3=this;return new Promise(function(_0x2ff825,_0x3cf0a2){return db[_0x496f('0x15')][_0x496f('0x21')]({'raw':_0x390c89['options']?_0x390c89[_0x496f('0x16')][_0x496f('0x17')]===undefined?!![]:![]:!![],'where':_0x390c89['options']?_0x390c89[_0x496f('0x16')][_0x496f('0x18')]||null:null,'attributes':_0x390c89[_0x496f('0x16')]?_0x390c89[_0x496f('0x16')][_0x496f('0x1c')]||null:null,'include':_0x390c89[_0x496f('0x16')]?_0x390c89['options']['include']?_['map'](_0x390c89[_0x496f('0x16')][_0x496f('0x1a')],function(_0x3aa359){return{'model':db[_0x3aa359[_0x496f('0x1d')]],'as':_0x3aa359['as'],'attributes':_0x3aa359[_0x496f('0x1c')],'include':_0x3aa359['include']?_[_0x496f('0x1b')](_0x3aa359[_0x496f('0x1a')],function(_0xa6bf4a){return{'model':db[_0xa6bf4a[_0x496f('0x1d')]],'as':_0xa6bf4a['as'],'attributes':_0xa6bf4a[_0x496f('0x1c')],'include':_0xa6bf4a['include']?_[_0x496f('0x1b')](_0xa6bf4a[_0x496f('0x1a')],function(_0x5ed3a1){return{'model':db[_0x5ed3a1['model']],'as':_0x5ed3a1['as'],'attributes':_0x5ed3a1[_0x496f('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x496f('0x1e')](function(_0x1634f1){logger[_0x496f('0x13')]('ShowDeskAccount',_0x390c89);logger[_0x496f('0xe')](_0x496f('0x20'),_0x390c89,JSON[_0x496f('0xf')](_0x1634f1));_0x2ff825(_0x1634f1);})['catch'](function(_0x3467c4){logger[_0x496f('0x10')](_0x496f('0x20'),_0x3467c4[_0x496f('0x12')],_0x390c89);_0x3cf0a2(_0x36ebc3[_0x496f('0x10')](0x1f4,_0x3467c4[_0x496f('0x12')]));});});};
\ No newline at end of file
index 76425bf..f902200 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','getTags','post','/:id/tags','setTags','update','delete','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id'];(function(_0x239bb8,_0x3f02af){var _0x3a895c=function(_0x54f329){while(--_0x54f329){_0x239bb8['push'](_0x239bb8['shift']());}};_0x3a895c(++_0x3f02af);}(_0x3e74,0x175));var _0x43e7=function(_0x466f41,_0x2d20f9){_0x466f41=_0x466f41-0x0;var _0x4eb2c3=_0x3e74[_0x466f41];return _0x4eb2c3;};'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/subjects',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/tags',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0x13'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router['put']('/:id',auth[_0x43e7('0x8')](),controller[_0x43e7('0x15')]);router[_0x43e7('0x16')](_0x43e7('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x43e7('0x17')]=router;
\ No newline at end of file
+var _0x3e74=['show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','getTags','post','/:id/tags','setTags','update','delete','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id'];(function(_0x2613e1,_0x6065a8){var _0x5a05bb=function(_0x5c7140){while(--_0x5c7140){_0x2613e1['push'](_0x2613e1['shift']());}};_0x5a05bb(++_0x6065a8);}(_0x3e74,0x175));var _0x43e7=function(_0x156758,_0x38df36){_0x156758=_0x156758-0x0;var _0x131c6c=_0x3e74[_0x156758];return _0x131c6c;};'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/subjects',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/tags',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0x13'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router['put']('/:id',auth[_0x43e7('0x8')](),controller[_0x43e7('0x15')]);router[_0x43e7('0x16')](_0x43e7('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x43e7('0x17')]=router;
\ No newline at end of file
index c08e85b..d40c0dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x628d=['STRING','exports'];(function(_0x2c8afe,_0x100f80){var _0x982977=function(_0x5b3a44){while(--_0x5b3a44){_0x2c8afe['push'](_0x2c8afe['shift']());}};_0x982977(++_0x100f80);}(_0x628d,0xfb));var _0xd628=function(_0xe3a0fe,_0x78e40f){_0xe3a0fe=_0xe3a0fe-0x0;var _0x361d3d=_0x628d[_0xe3a0fe];return _0x361d3d;};'use strict';var Sequelize=require('sequelize');module[_0xd628('0x0')]={'name':{'type':Sequelize[_0xd628('0x1')]},'description':{'type':Sequelize[_0xd628('0x1')]}};
\ No newline at end of file
+var _0x5093=['sequelize','exports','STRING'];(function(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0x5093,0x1d7));var _0x3509=function(_0x5c0b22,_0x56d46a){_0x5c0b22=_0x5c0b22-0x0;var _0x16a8a6=_0x5093[_0x5c0b22];return _0x16a8a6;};'use strict';var Sequelize=require(_0x3509('0x0'));module[_0x3509('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x3509('0x2')]}};
\ No newline at end of file
index fccd6a3..44587ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8630=['ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','DeskConfiguration','fieldName','key','map','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','count','includeAll','findAll','rows','catch','show','params','keys','filters','include','find','create','body','getFields','findOne','DeskField','rawAttributes','getSubjects','getDescriptions','getTags','setTags','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x4c1db5,_0x32be94){var _0x1b2bcb=function(_0x1c1668){while(--_0x1c1668){_0x4c1db5['push'](_0x4c1db5['shift']());}};_0x1b2bcb(++_0x32be94);}(_0x8630,0xf1));var _0x0863=function(_0x2cfeee,_0x8c46ab){_0x2cfeee=_0x2cfeee-0x0;var _0x199eb7=_0x8630[_0x2cfeee];return _0x199eb7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0863('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0863('0x1'));var rp=require(_0x0863('0x2'));var moment=require(_0x0863('0x3'));var BPromise=require(_0x0863('0x4'));var Mustache=require(_0x0863('0x5'));var util=require('util');var path=require(_0x0863('0x6'));var sox=require(_0x0863('0x7'));var csv=require(_0x0863('0x8'));var ejs=require(_0x0863('0x9'));var fs=require('fs');var fs_extra=require(_0x0863('0xa'));var _=require('lodash');var squel=require(_0x0863('0xb'));var crypto=require(_0x0863('0xc'));var jsforce=require(_0x0863('0xd'));var deskjs=require(_0x0863('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0863('0xf'));var Papa=require(_0x0863('0x10'));var Redis=require(_0x0863('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x0863('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0863('0x13'));var logger=require(_0x0863('0x14'))(_0x0863('0x15'));var utils=require('../../config/utils');var config=require(_0x0863('0x16'));var licenseUtil=require(_0x0863('0x17'));var db=require(_0x0863('0x18'))['db'];function respondWithStatusCode(_0x39ea36,_0xd35b24){_0xd35b24=_0xd35b24||0xcc;return function(_0x705956){if(_0x705956){return _0x39ea36[_0x0863('0x19')](_0xd35b24);}return _0x39ea36[_0x0863('0x1a')](_0xd35b24)[_0x0863('0x1b')]();};}function respondWithResult(_0x38fca,_0x5ae5a2){_0x5ae5a2=_0x5ae5a2||0xc8;return function(_0x3adb1b){if(_0x3adb1b){return _0x38fca[_0x0863('0x1a')](_0x5ae5a2)[_0x0863('0x1c')](_0x3adb1b);}};}function respondWithFilteredResult(_0x5d16a8,_0x4bf919){return function(_0x586ff1){if(_0x586ff1){var _0x242fa5=typeof _0x4bf919['offset']===_0x0863('0x1d')&&typeof _0x4bf919['limit']===_0x0863('0x1d');var _0x5d6950=_0x586ff1['count'];var _0x2648b7=_0x242fa5?0x0:_0x4bf919[_0x0863('0x1e')];var _0x545ad3=_0x242fa5?_0x586ff1['count']:_0x4bf919[_0x0863('0x1e')]+_0x4bf919['limit'];var _0x1d62ae;if(_0x545ad3>=_0x5d6950){_0x545ad3=_0x5d6950;_0x1d62ae=0xc8;}else{_0x1d62ae=0xce;}_0x5d16a8[_0x0863('0x1a')](_0x1d62ae);return _0x5d16a8['set'](_0x0863('0x1f'),_0x2648b7+'-'+_0x545ad3+'/'+_0x5d6950)['json'](_0x586ff1);}return null;};}function patchUpdates(_0x924a2){return function(_0x28c825){try{jsonpatch[_0x0863('0x20')](_0x28c825,_0x924a2,!![]);}catch(_0x20c614){return BPromise[_0x0863('0x21')](_0x20c614);}return _0x28c825[_0x0863('0x22')]();};}function saveUpdates(_0x43e3a9,_0x2a1c63){return function(_0x591f80){if(_0x591f80){return _0x591f80[_0x0863('0x23')](_0x43e3a9)[_0x0863('0x24')](function(_0x3c0f71){return _0x3c0f71;});}return null;};}function removeEntity(_0x3e5489,_0x21fa97){return function(_0x18f712){if(_0x18f712){return _0x18f712[_0x0863('0x25')]()[_0x0863('0x24')](function(){_0x3e5489['status'](0xcc)[_0x0863('0x1b')]();});}};}function handleEntityNotFound(_0x26220d,_0x31e7a1){return function(_0x58892f){if(!_0x58892f){_0x26220d['sendStatus'](0x194);}return _0x58892f;};}function handleError(_0x651e9b,_0x434173){_0x434173=_0x434173||0x1f4;return function(_0x92d5e7){logger[_0x0863('0x26')](_0x92d5e7[_0x0863('0x27')]);if(_0x92d5e7['name']){delete _0x92d5e7[_0x0863('0x28')];}_0x651e9b[_0x0863('0x1a')](_0x434173)[_0x0863('0x29')](_0x92d5e7);};}exports[_0x0863('0x2a')]=function(_0x5348dc,_0x38dac6){var _0x586ab0={},_0x399ab8={},_0x52ba49={'count':0x0,'rows':[]};var _0x14e950=_['map'](db[_0x0863('0x2b')]['rawAttributes'],function(_0x5eb353){return{'name':_0x5eb353[_0x0863('0x2c')],'type':_0x5eb353['type'][_0x0863('0x2d')]};});_0x399ab8['model']=_[_0x0863('0x2e')](_0x14e950,'name');_0x399ab8[_0x0863('0x2f')]=_['keys'](_0x5348dc[_0x0863('0x2f')]);_0x399ab8['filters']=_[_0x0863('0x30')](_0x399ab8['model'],_0x399ab8[_0x0863('0x2f')]);_0x586ab0[_0x0863('0x31')]=_[_0x0863('0x30')](_0x399ab8[_0x0863('0x32')],qs[_0x0863('0x33')](_0x5348dc[_0x0863('0x2f')][_0x0863('0x33')]));_0x586ab0[_0x0863('0x31')]=_0x586ab0[_0x0863('0x31')][_0x0863('0x34')]?_0x586ab0[_0x0863('0x31')]:_0x399ab8['model'];if(!_0x5348dc[_0x0863('0x2f')][_0x0863('0x35')](_0x0863('0x36'))){_0x586ab0[_0x0863('0x37')]=qs[_0x0863('0x37')](_0x5348dc['query'][_0x0863('0x37')]);_0x586ab0['offset']=qs[_0x0863('0x1e')](_0x5348dc['query'][_0x0863('0x1e')]);}_0x586ab0[_0x0863('0x38')]=qs[_0x0863('0x39')](_0x5348dc['query']['sort']);_0x586ab0[_0x0863('0x3a')]=qs['filters'](_[_0x0863('0x3b')](_0x5348dc['query'],_0x399ab8['filters']),_0x14e950);if(_0x5348dc[_0x0863('0x2f')][_0x0863('0x3c')]){_0x586ab0['where']=_[_0x0863('0x3d')](_0x586ab0['where'],{'$or':_[_0x0863('0x2e')](_0x14e950,function(_0x2e9951){if(_0x2e9951[_0x0863('0x3e')]!==_0x0863('0x3f')){var _0x2180b5={};_0x2180b5[_0x2e9951[_0x0863('0x28')]]={'$like':'%'+_0x5348dc[_0x0863('0x2f')]['filter']+'%'};return _0x2180b5;}})});}_0x586ab0=_[_0x0863('0x3d')]({},_0x586ab0,_0x5348dc[_0x0863('0x40')]);var _0x27ef96={'where':_0x586ab0['where']};return db['DeskConfiguration']['count'](_0x27ef96)[_0x0863('0x24')](function(_0x4c44b1){_0x52ba49[_0x0863('0x41')]=_0x4c44b1;if(_0x5348dc[_0x0863('0x2f')][_0x0863('0x42')]){_0x586ab0['include']=[{'all':!![]}];}return db[_0x0863('0x2b')][_0x0863('0x43')](_0x586ab0);})[_0x0863('0x24')](function(_0x757db2){_0x52ba49[_0x0863('0x44')]=_0x757db2;return _0x52ba49;})[_0x0863('0x24')](respondWithFilteredResult(_0x38dac6,_0x586ab0))[_0x0863('0x45')](handleError(_0x38dac6,null));};exports[_0x0863('0x46')]=function(_0x1b7ee9,_0xc82a93){var _0x1d5140={'raw':![],'where':{'id':_0x1b7ee9[_0x0863('0x47')]['id']}},_0x2d4d08={};_0x2d4d08[_0x0863('0x32')]=_[_0x0863('0x48')](db[_0x0863('0x2b')]['rawAttributes']);_0x2d4d08[_0x0863('0x2f')]=_[_0x0863('0x48')](_0x1b7ee9[_0x0863('0x2f')]);_0x2d4d08[_0x0863('0x49')]=_[_0x0863('0x30')](_0x2d4d08[_0x0863('0x32')],_0x2d4d08[_0x0863('0x2f')]);_0x1d5140[_0x0863('0x31')]=_['intersection'](_0x2d4d08[_0x0863('0x32')],qs[_0x0863('0x33')](_0x1b7ee9[_0x0863('0x2f')]['fields']));_0x1d5140['attributes']=_0x1d5140[_0x0863('0x31')]['length']?_0x1d5140[_0x0863('0x31')]:_0x2d4d08['model'];if(_0x1b7ee9[_0x0863('0x2f')]['includeAll']){_0x1d5140[_0x0863('0x4a')]=[{'all':!![]}];}_0x1d5140=_['merge']({},_0x1d5140,_0x1b7ee9['options']);return db[_0x0863('0x2b')][_0x0863('0x4b')](_0x1d5140)['then'](handleEntityNotFound(_0xc82a93,null))['then'](respondWithResult(_0xc82a93,null))[_0x0863('0x45')](handleError(_0xc82a93,null));};exports[_0x0863('0x4c')]=function(_0x7d5d94,_0x21bc19){return db[_0x0863('0x2b')][_0x0863('0x4c')](_0x7d5d94[_0x0863('0x4d')],{})['then'](respondWithResult(_0x21bc19,0xc9))[_0x0863('0x45')](handleError(_0x21bc19,null));};exports[_0x0863('0x23')]=function(_0x1de173,_0x4c12f3){if(_0x1de173[_0x0863('0x4d')]['id']){delete _0x1de173[_0x0863('0x4d')]['id'];}return db[_0x0863('0x2b')][_0x0863('0x4b')]({'where':{'id':_0x1de173[_0x0863('0x47')]['id']}})[_0x0863('0x24')](handleEntityNotFound(_0x4c12f3,null))[_0x0863('0x24')](saveUpdates(_0x1de173[_0x0863('0x4d')],null))['then'](respondWithResult(_0x4c12f3,null))[_0x0863('0x45')](handleError(_0x4c12f3,null));};exports['destroy']=function(_0x38b9f2,_0x481670){return db[_0x0863('0x2b')][_0x0863('0x4b')]({'where':{'id':_0x38b9f2[_0x0863('0x47')]['id']}})[_0x0863('0x24')](handleEntityNotFound(_0x481670,null))[_0x0863('0x24')](removeEntity(_0x481670,null))[_0x0863('0x45')](handleError(_0x481670,null));};exports[_0x0863('0x4e')]=function(_0x4873ce,_0x4ddfa7,_0x54a3ad){var _0x7c495a={};var _0x1fe73b={};var _0x125580;var _0x185d53;return db[_0x0863('0x2b')][_0x0863('0x4f')]({'where':{'id':_0x4873ce[_0x0863('0x47')]['id']}})[_0x0863('0x24')](handleEntityNotFound(_0x4ddfa7,null))[_0x0863('0x24')](function(_0x5b2f38){if(_0x5b2f38){_0x125580=_0x5b2f38;_0x1fe73b[_0x0863('0x32')]=_[_0x0863('0x48')](db[_0x0863('0x50')][_0x0863('0x51')]);_0x1fe73b['query']=_[_0x0863('0x48')](_0x4873ce[_0x0863('0x2f')]);_0x1fe73b[_0x0863('0x49')]=_[_0x0863('0x30')](_0x1fe73b['model'],_0x1fe73b['query']);_0x7c495a[_0x0863('0x31')]=_[_0x0863('0x30')](_0x1fe73b['model'],qs[_0x0863('0x33')](_0x4873ce[_0x0863('0x2f')]['fields']));_0x7c495a[_0x0863('0x31')]=_0x7c495a[_0x0863('0x31')][_0x0863('0x34')]?_0x7c495a[_0x0863('0x31')]:_0x1fe73b['model'];_0x7c495a[_0x0863('0x38')]=qs['sort'](_0x4873ce[_0x0863('0x2f')][_0x0863('0x39')]);_0x7c495a[_0x0863('0x3a')]=qs[_0x0863('0x49')](_[_0x0863('0x3b')](_0x4873ce[_0x0863('0x2f')],_0x1fe73b[_0x0863('0x49')]));if(_0x4873ce[_0x0863('0x2f')][_0x0863('0x3c')]){_0x7c495a['where']=_[_0x0863('0x3d')](_0x7c495a['where'],{'$or':_[_0x0863('0x2e')](_0x7c495a[_0x0863('0x31')],function(_0x47013e){var _0x5794d9={};_0x5794d9[_0x47013e]={'$like':'%'+_0x4873ce['query']['filter']+'%'};return _0x5794d9;})});}_0x7c495a=_['merge']({},_0x7c495a,_0x4873ce[_0x0863('0x40')]);return _0x125580['getFields'](_0x7c495a);}})[_0x0863('0x24')](function(_0x562bb9){if(_0x562bb9){_0x185d53=_0x562bb9[_0x0863('0x34')];if(!_0x4873ce[_0x0863('0x2f')][_0x0863('0x35')](_0x0863('0x36'))){_0x7c495a[_0x0863('0x37')]=qs[_0x0863('0x37')](_0x4873ce[_0x0863('0x2f')][_0x0863('0x37')]);_0x7c495a['offset']=qs['offset'](_0x4873ce[_0x0863('0x2f')]['offset']);}return _0x125580['getFields'](_0x7c495a);}})[_0x0863('0x24')](function(_0x3544d8){if(_0x3544d8){return _0x3544d8?{'count':_0x185d53,'rows':_0x3544d8}:null;}})[_0x0863('0x24')](respondWithResult(_0x4ddfa7,null))[_0x0863('0x45')](handleError(_0x4ddfa7,null));};exports[_0x0863('0x52')]=function(_0x29663b,_0x2b01ed,_0x2d84d6){var _0x9651c8={};var _0xadfe54={};var _0x4f282b;var _0x11fcce;return db['DeskConfiguration'][_0x0863('0x4f')]({'where':{'id':_0x29663b[_0x0863('0x47')]['id']}})[_0x0863('0x24')](handleEntityNotFound(_0x2b01ed,null))[_0x0863('0x24')](function(_0x20c5b6){if(_0x20c5b6){_0x4f282b=_0x20c5b6;_0xadfe54['model']=_['keys'](db[_0x0863('0x50')][_0x0863('0x51')]);_0xadfe54['query']=_[_0x0863('0x48')](_0x29663b[_0x0863('0x2f')]);_0xadfe54[_0x0863('0x49')]=_[_0x0863('0x30')](_0xadfe54['model'],_0xadfe54[_0x0863('0x2f')]);_0x9651c8[_0x0863('0x31')]=_[_0x0863('0x30')](_0xadfe54[_0x0863('0x32')],qs[_0x0863('0x33')](_0x29663b[_0x0863('0x2f')]['fields']));_0x9651c8['attributes']=_0x9651c8['attributes'][_0x0863('0x34')]?_0x9651c8['attributes']:_0xadfe54['model'];_0x9651c8['order']=qs[_0x0863('0x39')](_0x29663b['query'][_0x0863('0x39')]);_0x9651c8[_0x0863('0x3a')]=qs[_0x0863('0x49')](_['pick'](_0x29663b['query'],_0xadfe54['filters']));if(_0x29663b[_0x0863('0x2f')]['filter']){_0x9651c8[_0x0863('0x3a')]=_[_0x0863('0x3d')](_0x9651c8['where'],{'$or':_[_0x0863('0x2e')](_0x9651c8[_0x0863('0x31')],function(_0x38f89a){var _0x4774af={};_0x4774af[_0x38f89a]={'$like':'%'+_0x29663b[_0x0863('0x2f')][_0x0863('0x3c')]+'%'};return _0x4774af;})});}_0x9651c8=_[_0x0863('0x3d')]({},_0x9651c8,_0x29663b[_0x0863('0x40')]);return _0x4f282b[_0x0863('0x52')](_0x9651c8);}})[_0x0863('0x24')](function(_0x5a1d57){if(_0x5a1d57){_0x11fcce=_0x5a1d57[_0x0863('0x34')];if(!_0x29663b[_0x0863('0x2f')][_0x0863('0x35')]('nolimit')){_0x9651c8[_0x0863('0x37')]=qs[_0x0863('0x37')](_0x29663b['query'][_0x0863('0x37')]);_0x9651c8[_0x0863('0x1e')]=qs['offset'](_0x29663b[_0x0863('0x2f')][_0x0863('0x1e')]);}return _0x4f282b[_0x0863('0x52')](_0x9651c8);}})[_0x0863('0x24')](function(_0x93b044){if(_0x93b044){return _0x93b044?{'count':_0x11fcce,'rows':_0x93b044}:null;}})[_0x0863('0x24')](respondWithResult(_0x2b01ed,null))[_0x0863('0x45')](handleError(_0x2b01ed,null));};exports['getDescriptions']=function(_0x3a4461,_0x4dcbc5,_0x3b930d){var _0x4b4fbe={};var _0x2eb993={};var _0x115644;var _0x4df7b9;return db['DeskConfiguration'][_0x0863('0x4f')]({'where':{'id':_0x3a4461['params']['id']}})['then'](handleEntityNotFound(_0x4dcbc5,null))[_0x0863('0x24')](function(_0xded242){if(_0xded242){_0x115644=_0xded242;_0x2eb993['model']=_[_0x0863('0x48')](db[_0x0863('0x50')][_0x0863('0x51')]);_0x2eb993['query']=_['keys'](_0x3a4461[_0x0863('0x2f')]);_0x2eb993['filters']=_[_0x0863('0x30')](_0x2eb993['model'],_0x2eb993[_0x0863('0x2f')]);_0x4b4fbe[_0x0863('0x31')]=_['intersection'](_0x2eb993[_0x0863('0x32')],qs[_0x0863('0x33')](_0x3a4461['query']['fields']));_0x4b4fbe[_0x0863('0x31')]=_0x4b4fbe[_0x0863('0x31')][_0x0863('0x34')]?_0x4b4fbe[_0x0863('0x31')]:_0x2eb993[_0x0863('0x32')];_0x4b4fbe['order']=qs[_0x0863('0x39')](_0x3a4461[_0x0863('0x2f')][_0x0863('0x39')]);_0x4b4fbe[_0x0863('0x3a')]=qs[_0x0863('0x49')](_[_0x0863('0x3b')](_0x3a4461[_0x0863('0x2f')],_0x2eb993['filters']));if(_0x3a4461['query']['filter']){_0x4b4fbe[_0x0863('0x3a')]=_[_0x0863('0x3d')](_0x4b4fbe[_0x0863('0x3a')],{'$or':_['map'](_0x4b4fbe[_0x0863('0x31')],function(_0x134906){var _0x2625f3={};_0x2625f3[_0x134906]={'$like':'%'+_0x3a4461[_0x0863('0x2f')][_0x0863('0x3c')]+'%'};return _0x2625f3;})});}_0x4b4fbe=_['merge']({},_0x4b4fbe,_0x3a4461['options']);return _0x115644[_0x0863('0x53')](_0x4b4fbe);}})[_0x0863('0x24')](function(_0x2353ce){if(_0x2353ce){_0x4df7b9=_0x2353ce[_0x0863('0x34')];if(!_0x3a4461['query']['hasOwnProperty']('nolimit')){_0x4b4fbe[_0x0863('0x37')]=qs[_0x0863('0x37')](_0x3a4461['query'][_0x0863('0x37')]);_0x4b4fbe[_0x0863('0x1e')]=qs[_0x0863('0x1e')](_0x3a4461[_0x0863('0x2f')][_0x0863('0x1e')]);}return _0x115644[_0x0863('0x53')](_0x4b4fbe);}})['then'](function(_0x1e8c83){if(_0x1e8c83){return _0x1e8c83?{'count':_0x4df7b9,'rows':_0x1e8c83}:null;}})[_0x0863('0x24')](respondWithResult(_0x4dcbc5,null))[_0x0863('0x45')](handleError(_0x4dcbc5,null));};exports[_0x0863('0x54')]=function(_0x476507,_0x2b4aff,_0x5e5aa3){var _0x4bf68e={};var _0x437e31={};var _0x1fdfc6;var _0x3a6d5d;return db[_0x0863('0x2b')][_0x0863('0x4f')]({'where':{'id':_0x476507['params']['id']}})[_0x0863('0x24')](handleEntityNotFound(_0x2b4aff,null))['then'](function(_0x137e63){if(_0x137e63){_0x1fdfc6=_0x137e63;_0x437e31[_0x0863('0x32')]=_[_0x0863('0x48')](db['Tag']['rawAttributes']);_0x437e31[_0x0863('0x2f')]=_[_0x0863('0x48')](_0x476507[_0x0863('0x2f')]);_0x437e31[_0x0863('0x49')]=_['intersection'](_0x437e31[_0x0863('0x32')],_0x437e31[_0x0863('0x2f')]);_0x4bf68e[_0x0863('0x31')]=_[_0x0863('0x30')](_0x437e31[_0x0863('0x32')],qs[_0x0863('0x33')](_0x476507[_0x0863('0x2f')]['fields']));_0x4bf68e[_0x0863('0x31')]=_0x4bf68e['attributes'][_0x0863('0x34')]?_0x4bf68e[_0x0863('0x31')]:_0x437e31[_0x0863('0x32')];_0x4bf68e[_0x0863('0x38')]=qs[_0x0863('0x39')](_0x476507[_0x0863('0x2f')][_0x0863('0x39')]);_0x4bf68e[_0x0863('0x3a')]=qs[_0x0863('0x49')](_[_0x0863('0x3b')](_0x476507[_0x0863('0x2f')],_0x437e31[_0x0863('0x49')]));if(_0x476507[_0x0863('0x2f')][_0x0863('0x3c')]){_0x4bf68e[_0x0863('0x3a')]=_[_0x0863('0x3d')](_0x4bf68e[_0x0863('0x3a')],{'$or':_[_0x0863('0x2e')](_0x4bf68e[_0x0863('0x31')],function(_0x148ac6){var _0x304826={};_0x304826[_0x148ac6]={'$like':'%'+_0x476507[_0x0863('0x2f')][_0x0863('0x3c')]+'%'};return _0x304826;})});}_0x4bf68e=_['merge']({},_0x4bf68e,_0x476507[_0x0863('0x40')]);return _0x1fdfc6[_0x0863('0x54')](_0x4bf68e);}})[_0x0863('0x24')](function(_0x1f2af8){if(_0x1f2af8){_0x3a6d5d=_0x1f2af8[_0x0863('0x34')];if(!_0x476507[_0x0863('0x2f')][_0x0863('0x35')](_0x0863('0x36'))){_0x4bf68e[_0x0863('0x37')]=qs[_0x0863('0x37')](_0x476507[_0x0863('0x2f')][_0x0863('0x37')]);_0x4bf68e[_0x0863('0x1e')]=qs[_0x0863('0x1e')](_0x476507[_0x0863('0x2f')][_0x0863('0x1e')]);}return _0x1fdfc6[_0x0863('0x54')](_0x4bf68e);}})[_0x0863('0x24')](function(_0x3038f8){if(_0x3038f8){return _0x3038f8?{'count':_0x3a6d5d,'rows':_0x3038f8}:null;}})['then'](respondWithResult(_0x2b4aff,null))[_0x0863('0x45')](handleError(_0x2b4aff,null));};exports[_0x0863('0x55')]=function(_0xabfba9,_0x493872,_0x2ac7ae){if(_0xabfba9[_0x0863('0x4d')]['id']){delete _0xabfba9[_0x0863('0x4d')]['id'];}return db[_0x0863('0x2b')][_0x0863('0x4f')]({'where':{'id':_0xabfba9['params']['id']}})['then'](handleEntityNotFound(_0x493872,null))['then'](function(_0x4b1467){if(_0x4b1467){return _0x4b1467[_0x0863('0x55')](_0xabfba9['body']['ids']||[]);}return null;})[_0x0863('0x24')](respondWithResult(_0x493872,null))[_0x0863('0x45')](handleError(_0x493872,null));};
\ No newline at end of file
+var _0x2393=['merge','options','count','includeAll','include','findAll','rows','catch','params','find','create','body','getFields','DeskField','nolimit','getSubjects','findOne','hasOwnProperty','getDescriptions','getTags','Tag','setTags','ids','zip-dir','fast-json-patch','request-promise','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','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','limit','undefined','offset','set','Content-Range','save','update','destroy','then','stack','name','send','index','DeskConfiguration','rawAttributes','type','key','map','keys','query','filters','intersection','model','fields','attributes','length','order','sort','where','pick','VIRTUAL','filter'];(function(_0x38b8c,_0x4a0c9f){var _0x41f904=function(_0x3ecc4){while(--_0x3ecc4){_0x38b8c['push'](_0x38b8c['shift']());}};_0x41f904(++_0x4a0c9f);}(_0x2393,0x116));var _0x3239=function(_0x2a41f6,_0xc91ac1){_0x2a41f6=_0x2a41f6-0x0;var _0x1c1810=_0x2393[_0x2a41f6];return _0x1c1810;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3239('0x0'));var jsonpatch=require(_0x3239('0x1'));var rp=require(_0x3239('0x2'));var moment=require('moment');var BPromise=require(_0x3239('0x3'));var Mustache=require(_0x3239('0x4'));var util=require(_0x3239('0x5'));var path=require(_0x3239('0x6'));var sox=require(_0x3239('0x7'));var csv=require(_0x3239('0x8'));var ejs=require(_0x3239('0x9'));var fs=require('fs');var fs_extra=require(_0x3239('0xa'));var _=require(_0x3239('0xb'));var squel=require(_0x3239('0xc'));var crypto=require(_0x3239('0xd'));var jsforce=require(_0x3239('0xe'));var deskjs=require(_0x3239('0xf'));var toCsv=require('to-csv');var querystring=require(_0x3239('0x10'));var Papa=require(_0x3239('0x11'));var Redis=require(_0x3239('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x3239('0x13'));var as=require(_0x3239('0x14'));var hardwareService=require(_0x3239('0x15'));var logger=require(_0x3239('0x16'))(_0x3239('0x17'));var utils=require(_0x3239('0x18'));var config=require(_0x3239('0x19'));var licenseUtil=require(_0x3239('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4f0710,_0x5bc838){_0x5bc838=_0x5bc838||0xcc;return function(_0xc73fe9){if(_0xc73fe9){return _0x4f0710[_0x3239('0x1b')](_0x5bc838);}return _0x4f0710[_0x3239('0x1c')](_0x5bc838)['end']();};}function respondWithResult(_0x47c8b3,_0x17e708){_0x17e708=_0x17e708||0xc8;return function(_0x3bd862){if(_0x3bd862){return _0x47c8b3[_0x3239('0x1c')](_0x17e708)[_0x3239('0x1d')](_0x3bd862);}};}function respondWithFilteredResult(_0x3a6431,_0x183ff8){return function(_0x503a4b){if(_0x503a4b){var _0x2157bf=typeof _0x183ff8['offset']==='undefined'&&typeof _0x183ff8[_0x3239('0x1e')]===_0x3239('0x1f');var _0xc54236=_0x503a4b['count'];var _0x20e66a=_0x2157bf?0x0:_0x183ff8['offset'];var _0xbb4338=_0x2157bf?_0x503a4b['count']:_0x183ff8[_0x3239('0x20')]+_0x183ff8[_0x3239('0x1e')];var _0x11b416;if(_0xbb4338>=_0xc54236){_0xbb4338=_0xc54236;_0x11b416=0xc8;}else{_0x11b416=0xce;}_0x3a6431[_0x3239('0x1c')](_0x11b416);return _0x3a6431[_0x3239('0x21')](_0x3239('0x22'),_0x20e66a+'-'+_0xbb4338+'/'+_0xc54236)[_0x3239('0x1d')](_0x503a4b);}return null;};}function patchUpdates(_0x4879e0){return function(_0x1252af){try{jsonpatch['apply'](_0x1252af,_0x4879e0,!![]);}catch(_0x5452dc){return BPromise['reject'](_0x5452dc);}return _0x1252af[_0x3239('0x23')]();};}function saveUpdates(_0x5362a5,_0x3e9584){return function(_0x5d44e5){if(_0x5d44e5){return _0x5d44e5[_0x3239('0x24')](_0x5362a5)['then'](function(_0x126ca3){return _0x126ca3;});}return null;};}function removeEntity(_0x1a7163,_0x238974){return function(_0x527173){if(_0x527173){return _0x527173[_0x3239('0x25')]()[_0x3239('0x26')](function(){_0x1a7163[_0x3239('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x270669,_0x36065e){return function(_0x7d4417){if(!_0x7d4417){_0x270669[_0x3239('0x1b')](0x194);}return _0x7d4417;};}function handleError(_0x38ec7a,_0xc7dff4){_0xc7dff4=_0xc7dff4||0x1f4;return function(_0x661996){logger['error'](_0x661996[_0x3239('0x27')]);if(_0x661996[_0x3239('0x28')]){delete _0x661996[_0x3239('0x28')];}_0x38ec7a[_0x3239('0x1c')](_0xc7dff4)[_0x3239('0x29')](_0x661996);};}exports[_0x3239('0x2a')]=function(_0x48843e,_0x354f46){var _0x1827af={},_0x54e0e3={},_0x829268={'count':0x0,'rows':[]};var _0x679b6c=_['map'](db[_0x3239('0x2b')][_0x3239('0x2c')],function(_0x1526d1){return{'name':_0x1526d1['fieldName'],'type':_0x1526d1[_0x3239('0x2d')][_0x3239('0x2e')]};});_0x54e0e3['model']=_[_0x3239('0x2f')](_0x679b6c,_0x3239('0x28'));_0x54e0e3['query']=_[_0x3239('0x30')](_0x48843e[_0x3239('0x31')]);_0x54e0e3[_0x3239('0x32')]=_[_0x3239('0x33')](_0x54e0e3[_0x3239('0x34')],_0x54e0e3[_0x3239('0x31')]);_0x1827af['attributes']=_['intersection'](_0x54e0e3[_0x3239('0x34')],qs['fields'](_0x48843e[_0x3239('0x31')][_0x3239('0x35')]));_0x1827af[_0x3239('0x36')]=_0x1827af[_0x3239('0x36')][_0x3239('0x37')]?_0x1827af[_0x3239('0x36')]:_0x54e0e3[_0x3239('0x34')];if(!_0x48843e[_0x3239('0x31')]['hasOwnProperty']('nolimit')){_0x1827af[_0x3239('0x1e')]=qs[_0x3239('0x1e')](_0x48843e[_0x3239('0x31')][_0x3239('0x1e')]);_0x1827af[_0x3239('0x20')]=qs['offset'](_0x48843e['query']['offset']);}_0x1827af[_0x3239('0x38')]=qs[_0x3239('0x39')](_0x48843e[_0x3239('0x31')][_0x3239('0x39')]);_0x1827af[_0x3239('0x3a')]=qs[_0x3239('0x32')](_[_0x3239('0x3b')](_0x48843e[_0x3239('0x31')],_0x54e0e3[_0x3239('0x32')]),_0x679b6c);if(_0x48843e[_0x3239('0x31')]['filter']){_0x1827af[_0x3239('0x3a')]=_['merge'](_0x1827af['where'],{'$or':_[_0x3239('0x2f')](_0x679b6c,function(_0xeeae){if(_0xeeae['type']!==_0x3239('0x3c')){var _0x4d9a18={};_0x4d9a18[_0xeeae[_0x3239('0x28')]]={'$like':'%'+_0x48843e['query'][_0x3239('0x3d')]+'%'};return _0x4d9a18;}})});}_0x1827af=_[_0x3239('0x3e')]({},_0x1827af,_0x48843e[_0x3239('0x3f')]);var _0x44e5f8={'where':_0x1827af[_0x3239('0x3a')]};return db[_0x3239('0x2b')][_0x3239('0x40')](_0x44e5f8)['then'](function(_0x4dcd1e){_0x829268[_0x3239('0x40')]=_0x4dcd1e;if(_0x48843e['query'][_0x3239('0x41')]){_0x1827af[_0x3239('0x42')]=[{'all':!![]}];}return db[_0x3239('0x2b')][_0x3239('0x43')](_0x1827af);})['then'](function(_0x2c46e7){_0x829268[_0x3239('0x44')]=_0x2c46e7;return _0x829268;})[_0x3239('0x26')](respondWithFilteredResult(_0x354f46,_0x1827af))[_0x3239('0x45')](handleError(_0x354f46,null));};exports['show']=function(_0x23d280,_0x21bc73){var _0x4670b5={'raw':![],'where':{'id':_0x23d280[_0x3239('0x46')]['id']}},_0x218121={};_0x218121[_0x3239('0x34')]=_[_0x3239('0x30')](db[_0x3239('0x2b')][_0x3239('0x2c')]);_0x218121[_0x3239('0x31')]=_[_0x3239('0x30')](_0x23d280[_0x3239('0x31')]);_0x218121['filters']=_[_0x3239('0x33')](_0x218121['model'],_0x218121['query']);_0x4670b5[_0x3239('0x36')]=_['intersection'](_0x218121[_0x3239('0x34')],qs['fields'](_0x23d280[_0x3239('0x31')][_0x3239('0x35')]));_0x4670b5[_0x3239('0x36')]=_0x4670b5['attributes'][_0x3239('0x37')]?_0x4670b5[_0x3239('0x36')]:_0x218121['model'];if(_0x23d280['query'][_0x3239('0x41')]){_0x4670b5['include']=[{'all':!![]}];}_0x4670b5=_[_0x3239('0x3e')]({},_0x4670b5,_0x23d280[_0x3239('0x3f')]);return db[_0x3239('0x2b')][_0x3239('0x47')](_0x4670b5)[_0x3239('0x26')](handleEntityNotFound(_0x21bc73,null))['then'](respondWithResult(_0x21bc73,null))[_0x3239('0x45')](handleError(_0x21bc73,null));};exports[_0x3239('0x48')]=function(_0x457de1,_0x172dda){return db[_0x3239('0x2b')][_0x3239('0x48')](_0x457de1[_0x3239('0x49')],{})[_0x3239('0x26')](respondWithResult(_0x172dda,0xc9))[_0x3239('0x45')](handleError(_0x172dda,null));};exports['update']=function(_0x24978d,_0x33e443){if(_0x24978d[_0x3239('0x49')]['id']){delete _0x24978d[_0x3239('0x49')]['id'];}return db[_0x3239('0x2b')][_0x3239('0x47')]({'where':{'id':_0x24978d[_0x3239('0x46')]['id']}})['then'](handleEntityNotFound(_0x33e443,null))[_0x3239('0x26')](saveUpdates(_0x24978d[_0x3239('0x49')],null))[_0x3239('0x26')](respondWithResult(_0x33e443,null))[_0x3239('0x45')](handleError(_0x33e443,null));};exports['destroy']=function(_0x54d865,_0x491296){return db[_0x3239('0x2b')]['find']({'where':{'id':_0x54d865[_0x3239('0x46')]['id']}})[_0x3239('0x26')](handleEntityNotFound(_0x491296,null))[_0x3239('0x26')](removeEntity(_0x491296,null))['catch'](handleError(_0x491296,null));};exports[_0x3239('0x4a')]=function(_0x21efe7,_0x43b04e,_0x14d4d3){var _0xa5f0a5={};var _0x17cc23={};var _0x4a83cb;var _0x5f4ba7;return db[_0x3239('0x2b')]['findOne']({'where':{'id':_0x21efe7[_0x3239('0x46')]['id']}})[_0x3239('0x26')](handleEntityNotFound(_0x43b04e,null))[_0x3239('0x26')](function(_0x4d42b6){if(_0x4d42b6){_0x4a83cb=_0x4d42b6;_0x17cc23[_0x3239('0x34')]=_[_0x3239('0x30')](db[_0x3239('0x4b')][_0x3239('0x2c')]);_0x17cc23[_0x3239('0x31')]=_[_0x3239('0x30')](_0x21efe7[_0x3239('0x31')]);_0x17cc23[_0x3239('0x32')]=_['intersection'](_0x17cc23[_0x3239('0x34')],_0x17cc23[_0x3239('0x31')]);_0xa5f0a5[_0x3239('0x36')]=_[_0x3239('0x33')](_0x17cc23[_0x3239('0x34')],qs[_0x3239('0x35')](_0x21efe7[_0x3239('0x31')][_0x3239('0x35')]));_0xa5f0a5['attributes']=_0xa5f0a5['attributes'][_0x3239('0x37')]?_0xa5f0a5[_0x3239('0x36')]:_0x17cc23[_0x3239('0x34')];_0xa5f0a5[_0x3239('0x38')]=qs[_0x3239('0x39')](_0x21efe7['query']['sort']);_0xa5f0a5[_0x3239('0x3a')]=qs[_0x3239('0x32')](_[_0x3239('0x3b')](_0x21efe7[_0x3239('0x31')],_0x17cc23[_0x3239('0x32')]));if(_0x21efe7['query'][_0x3239('0x3d')]){_0xa5f0a5['where']=_[_0x3239('0x3e')](_0xa5f0a5[_0x3239('0x3a')],{'$or':_[_0x3239('0x2f')](_0xa5f0a5[_0x3239('0x36')],function(_0x212c46){var _0x51bbd8={};_0x51bbd8[_0x212c46]={'$like':'%'+_0x21efe7['query']['filter']+'%'};return _0x51bbd8;})});}_0xa5f0a5=_[_0x3239('0x3e')]({},_0xa5f0a5,_0x21efe7[_0x3239('0x3f')]);return _0x4a83cb[_0x3239('0x4a')](_0xa5f0a5);}})[_0x3239('0x26')](function(_0x22881e){if(_0x22881e){_0x5f4ba7=_0x22881e[_0x3239('0x37')];if(!_0x21efe7[_0x3239('0x31')]['hasOwnProperty'](_0x3239('0x4c'))){_0xa5f0a5[_0x3239('0x1e')]=qs[_0x3239('0x1e')](_0x21efe7[_0x3239('0x31')][_0x3239('0x1e')]);_0xa5f0a5[_0x3239('0x20')]=qs[_0x3239('0x20')](_0x21efe7[_0x3239('0x31')][_0x3239('0x20')]);}return _0x4a83cb['getFields'](_0xa5f0a5);}})[_0x3239('0x26')](function(_0x117ad9){if(_0x117ad9){return _0x117ad9?{'count':_0x5f4ba7,'rows':_0x117ad9}:null;}})[_0x3239('0x26')](respondWithResult(_0x43b04e,null))['catch'](handleError(_0x43b04e,null));};exports[_0x3239('0x4d')]=function(_0x152d43,_0x56e1fd,_0x38d376){var _0x1775e6={};var _0x3c5a3d={};var _0x506bd0;var _0x371f5c;return db[_0x3239('0x2b')][_0x3239('0x4e')]({'where':{'id':_0x152d43['params']['id']}})['then'](handleEntityNotFound(_0x56e1fd,null))[_0x3239('0x26')](function(_0x474dac){if(_0x474dac){_0x506bd0=_0x474dac;_0x3c5a3d[_0x3239('0x34')]=_[_0x3239('0x30')](db[_0x3239('0x4b')]['rawAttributes']);_0x3c5a3d[_0x3239('0x31')]=_[_0x3239('0x30')](_0x152d43['query']);_0x3c5a3d[_0x3239('0x32')]=_[_0x3239('0x33')](_0x3c5a3d[_0x3239('0x34')],_0x3c5a3d[_0x3239('0x31')]);_0x1775e6[_0x3239('0x36')]=_[_0x3239('0x33')](_0x3c5a3d[_0x3239('0x34')],qs[_0x3239('0x35')](_0x152d43[_0x3239('0x31')][_0x3239('0x35')]));_0x1775e6[_0x3239('0x36')]=_0x1775e6[_0x3239('0x36')][_0x3239('0x37')]?_0x1775e6[_0x3239('0x36')]:_0x3c5a3d['model'];_0x1775e6['order']=qs[_0x3239('0x39')](_0x152d43['query'][_0x3239('0x39')]);_0x1775e6[_0x3239('0x3a')]=qs[_0x3239('0x32')](_[_0x3239('0x3b')](_0x152d43[_0x3239('0x31')],_0x3c5a3d[_0x3239('0x32')]));if(_0x152d43[_0x3239('0x31')][_0x3239('0x3d')]){_0x1775e6[_0x3239('0x3a')]=_[_0x3239('0x3e')](_0x1775e6['where'],{'$or':_[_0x3239('0x2f')](_0x1775e6[_0x3239('0x36')],function(_0xc404ed){var _0x4b6c7d={};_0x4b6c7d[_0xc404ed]={'$like':'%'+_0x152d43[_0x3239('0x31')][_0x3239('0x3d')]+'%'};return _0x4b6c7d;})});}_0x1775e6=_[_0x3239('0x3e')]({},_0x1775e6,_0x152d43[_0x3239('0x3f')]);return _0x506bd0[_0x3239('0x4d')](_0x1775e6);}})[_0x3239('0x26')](function(_0x44b2d8){if(_0x44b2d8){_0x371f5c=_0x44b2d8['length'];if(!_0x152d43['query'][_0x3239('0x4f')]('nolimit')){_0x1775e6[_0x3239('0x1e')]=qs[_0x3239('0x1e')](_0x152d43[_0x3239('0x31')][_0x3239('0x1e')]);_0x1775e6[_0x3239('0x20')]=qs[_0x3239('0x20')](_0x152d43[_0x3239('0x31')][_0x3239('0x20')]);}return _0x506bd0[_0x3239('0x4d')](_0x1775e6);}})[_0x3239('0x26')](function(_0x1fa091){if(_0x1fa091){return _0x1fa091?{'count':_0x371f5c,'rows':_0x1fa091}:null;}})[_0x3239('0x26')](respondWithResult(_0x56e1fd,null))[_0x3239('0x45')](handleError(_0x56e1fd,null));};exports[_0x3239('0x50')]=function(_0x25db71,_0x207f2a,_0x28139c){var _0x3a64bb={};var _0x38c2ea={};var _0xe089ed;var _0x473c60;return db[_0x3239('0x2b')]['findOne']({'where':{'id':_0x25db71[_0x3239('0x46')]['id']}})[_0x3239('0x26')](handleEntityNotFound(_0x207f2a,null))[_0x3239('0x26')](function(_0x44fc1b){if(_0x44fc1b){_0xe089ed=_0x44fc1b;_0x38c2ea[_0x3239('0x34')]=_['keys'](db['DeskField']['rawAttributes']);_0x38c2ea['query']=_[_0x3239('0x30')](_0x25db71[_0x3239('0x31')]);_0x38c2ea[_0x3239('0x32')]=_['intersection'](_0x38c2ea['model'],_0x38c2ea[_0x3239('0x31')]);_0x3a64bb[_0x3239('0x36')]=_[_0x3239('0x33')](_0x38c2ea[_0x3239('0x34')],qs[_0x3239('0x35')](_0x25db71['query']['fields']));_0x3a64bb[_0x3239('0x36')]=_0x3a64bb[_0x3239('0x36')]['length']?_0x3a64bb['attributes']:_0x38c2ea[_0x3239('0x34')];_0x3a64bb[_0x3239('0x38')]=qs[_0x3239('0x39')](_0x25db71['query']['sort']);_0x3a64bb['where']=qs[_0x3239('0x32')](_[_0x3239('0x3b')](_0x25db71[_0x3239('0x31')],_0x38c2ea[_0x3239('0x32')]));if(_0x25db71[_0x3239('0x31')][_0x3239('0x3d')]){_0x3a64bb['where']=_[_0x3239('0x3e')](_0x3a64bb['where'],{'$or':_['map'](_0x3a64bb[_0x3239('0x36')],function(_0x3529bb){var _0x1518b6={};_0x1518b6[_0x3529bb]={'$like':'%'+_0x25db71['query'][_0x3239('0x3d')]+'%'};return _0x1518b6;})});}_0x3a64bb=_[_0x3239('0x3e')]({},_0x3a64bb,_0x25db71[_0x3239('0x3f')]);return _0xe089ed[_0x3239('0x50')](_0x3a64bb);}})['then'](function(_0x2cbbdb){if(_0x2cbbdb){_0x473c60=_0x2cbbdb[_0x3239('0x37')];if(!_0x25db71[_0x3239('0x31')]['hasOwnProperty'](_0x3239('0x4c'))){_0x3a64bb[_0x3239('0x1e')]=qs['limit'](_0x25db71[_0x3239('0x31')][_0x3239('0x1e')]);_0x3a64bb['offset']=qs[_0x3239('0x20')](_0x25db71[_0x3239('0x31')][_0x3239('0x20')]);}return _0xe089ed[_0x3239('0x50')](_0x3a64bb);}})['then'](function(_0xb472be){if(_0xb472be){return _0xb472be?{'count':_0x473c60,'rows':_0xb472be}:null;}})[_0x3239('0x26')](respondWithResult(_0x207f2a,null))[_0x3239('0x45')](handleError(_0x207f2a,null));};exports[_0x3239('0x51')]=function(_0x45aaf7,_0x3078f,_0x5b8ae6){var _0x617784={};var _0x1ccd6d={};var _0x49ae3f;var _0x546cc8;return db['DeskConfiguration'][_0x3239('0x4e')]({'where':{'id':_0x45aaf7[_0x3239('0x46')]['id']}})[_0x3239('0x26')](handleEntityNotFound(_0x3078f,null))['then'](function(_0x525b9c){if(_0x525b9c){_0x49ae3f=_0x525b9c;_0x1ccd6d[_0x3239('0x34')]=_[_0x3239('0x30')](db[_0x3239('0x52')][_0x3239('0x2c')]);_0x1ccd6d[_0x3239('0x31')]=_['keys'](_0x45aaf7[_0x3239('0x31')]);_0x1ccd6d[_0x3239('0x32')]=_[_0x3239('0x33')](_0x1ccd6d['model'],_0x1ccd6d[_0x3239('0x31')]);_0x617784[_0x3239('0x36')]=_['intersection'](_0x1ccd6d[_0x3239('0x34')],qs[_0x3239('0x35')](_0x45aaf7['query'][_0x3239('0x35')]));_0x617784[_0x3239('0x36')]=_0x617784[_0x3239('0x36')][_0x3239('0x37')]?_0x617784[_0x3239('0x36')]:_0x1ccd6d[_0x3239('0x34')];_0x617784[_0x3239('0x38')]=qs['sort'](_0x45aaf7[_0x3239('0x31')][_0x3239('0x39')]);_0x617784['where']=qs[_0x3239('0x32')](_[_0x3239('0x3b')](_0x45aaf7['query'],_0x1ccd6d[_0x3239('0x32')]));if(_0x45aaf7['query']['filter']){_0x617784[_0x3239('0x3a')]=_[_0x3239('0x3e')](_0x617784[_0x3239('0x3a')],{'$or':_['map'](_0x617784[_0x3239('0x36')],function(_0x22c898){var _0x457109={};_0x457109[_0x22c898]={'$like':'%'+_0x45aaf7['query']['filter']+'%'};return _0x457109;})});}_0x617784=_[_0x3239('0x3e')]({},_0x617784,_0x45aaf7[_0x3239('0x3f')]);return _0x49ae3f[_0x3239('0x51')](_0x617784);}})[_0x3239('0x26')](function(_0x10e539){if(_0x10e539){_0x546cc8=_0x10e539['length'];if(!_0x45aaf7[_0x3239('0x31')][_0x3239('0x4f')]('nolimit')){_0x617784[_0x3239('0x1e')]=qs[_0x3239('0x1e')](_0x45aaf7[_0x3239('0x31')][_0x3239('0x1e')]);_0x617784[_0x3239('0x20')]=qs[_0x3239('0x20')](_0x45aaf7[_0x3239('0x31')]['offset']);}return _0x49ae3f[_0x3239('0x51')](_0x617784);}})[_0x3239('0x26')](function(_0x2ae27a){if(_0x2ae27a){return _0x2ae27a?{'count':_0x546cc8,'rows':_0x2ae27a}:null;}})['then'](respondWithResult(_0x3078f,null))['catch'](handleError(_0x3078f,null));};exports[_0x3239('0x53')]=function(_0x461d21,_0x1adaed,_0x45d763){if(_0x461d21[_0x3239('0x49')]['id']){delete _0x461d21[_0x3239('0x49')]['id'];}return db[_0x3239('0x2b')][_0x3239('0x4e')]({'where':{'id':_0x461d21['params']['id']}})[_0x3239('0x26')](handleEntityNotFound(_0x1adaed,null))[_0x3239('0x26')](function(_0x11334f){if(_0x11334f){return _0x11334f[_0x3239('0x53')](_0x461d21['body'][_0x3239('0x54')]||[]);}return null;})[_0x3239('0x26')](respondWithResult(_0x1adaed,null))['catch'](handleError(_0x1adaed,null));};
\ No newline at end of file
index 9c902be..355cd2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0caf=['moment','bluebird','rimraf','../../config/environment','exports','DeskConfiguration','int_desk_configurations','api'];(function(_0x2b4e45,_0x548616){var _0xdae95=function(_0x2ac678){while(--_0x2ac678){_0x2b4e45['push'](_0x2b4e45['shift']());}};_0xdae95(++_0x548616);}(_0x0caf,0x9f));var _0xf0ca=function(_0x30f079,_0x2482a9){_0x30f079=_0x30f079-0x0;var _0x21fcf6=_0x0caf[_0x30f079];return _0x21fcf6;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xf0ca('0x0'));var moment=require(_0xf0ca('0x1'));var BPromise=require(_0xf0ca('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xf0ca('0x3'));var config=require(_0xf0ca('0x4'));var attributes=require('./intDeskConfiguration.attributes');module[_0xf0ca('0x5')]=function(_0x1053ad,_0xe9a74){return _0x1053ad['define'](_0xf0ca('0x6'),attributes,{'tableName':_0xf0ca('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x29c9=['exports','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intDeskConfiguration.attributes'];(function(_0x348652,_0x1ab849){var _0x18a9ea=function(_0x3fd540){while(--_0x3fd540){_0x348652['push'](_0x348652['shift']());}};_0x18a9ea(++_0x1ab849);}(_0x29c9,0x189));var _0x929c=function(_0x4e12c5,_0xf17788){_0x4e12c5=_0x4e12c5-0x0;var _0x11d934=_0x29c9[_0x4e12c5];return _0x11d934;};'use strict';var _=require(_0x929c('0x0'));var util=require(_0x929c('0x1'));var logger=require(_0x929c('0x2'))(_0x929c('0x3'));var moment=require(_0x929c('0x4'));var BPromise=require('bluebird');var rp=require(_0x929c('0x5'));var fs=require('fs');var path=require(_0x929c('0x6'));var rimraf=require(_0x929c('0x7'));var config=require(_0x929c('0x8'));var attributes=require(_0x929c('0x9'));module[_0x929c('0xa')]=function(_0x547baa,_0x161b59){return _0x547baa['define'](_0x929c('0xb'),attributes,{'tableName':_0x929c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4f9995a..0343c2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x758a=['bluebird','randomstring','ioredis','rpc','jayson/promise','client','http','request','then','DeskConfiguration,\x20%s,\x20%s','DeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','lodash','util','moment'];(function(_0x16f844,_0x5c2737){var _0x557e8e=function(_0x1ddb2b){while(--_0x1ddb2b){_0x16f844['push'](_0x16f844['shift']());}};_0x557e8e(++_0x5c2737);}(_0x758a,0x1d1));var _0xa758=function(_0x4b6896,_0x4a503a){_0x4b6896=_0x4b6896-0x0;var _0x225301=_0x758a[_0x4b6896];return _0x225301;};'use strict';var _=require(_0xa758('0x0'));var util=require(_0xa758('0x1'));var moment=require(_0xa758('0x2'));var BPromise=require(_0xa758('0x3'));var rs=require(_0xa758('0x4'));var fs=require('fs');var Redis=require(_0xa758('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa758('0x6'));var config=require('../../config/environment');var jayson=require(_0xa758('0x7'));var client=jayson[_0xa758('0x8')][_0xa758('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x57bdd1,_0x4b0de4,_0x6c8d0c){return new BPromise(function(_0x377e5e,_0x7bfa2c){return client[_0xa758('0xa')](_0x57bdd1,_0x6c8d0c)[_0xa758('0xb')](function(_0x44098b){logger['info'](_0xa758('0xc'),_0x4b0de4,'request\x20sent');logger['debug'](_0xa758('0xd'),_0x4b0de4,_0xa758('0xe'),JSON['stringify'](_0x44098b));if(_0x44098b[_0xa758('0xf')]){if(_0x44098b[_0xa758('0xf')][_0xa758('0x10')]===0x1f4){logger[_0xa758('0xf')](_0xa758('0xc'),_0x4b0de4,_0x44098b[_0xa758('0xf')][_0xa758('0x11')]);return _0x7bfa2c(_0x44098b['error']['message']);}logger[_0xa758('0xf')]('DeskConfiguration,\x20%s,\x20%s',_0x4b0de4,_0x44098b['error'][_0xa758('0x11')]);return _0x377e5e(_0x44098b[_0xa758('0xf')][_0xa758('0x11')]);}else{logger['info']('DeskConfiguration,\x20%s,\x20%s',_0x4b0de4,_0xa758('0xe'));_0x377e5e(_0x44098b['result'][_0xa758('0x11')]);}})['catch'](function(_0x1da460){logger['error'](_0xa758('0xc'),_0x4b0de4,_0x1da460);_0x7bfa2c(_0x1da460);});});}
\ No newline at end of file
+var _0x8325=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','moment','randomstring'];(function(_0x39d544,_0x35c14f){var _0x5a5ff2=function(_0x2271fb){while(--_0x2271fb){_0x39d544['push'](_0x39d544['shift']());}};_0x5a5ff2(++_0x35c14f);}(_0x8325,0x1f1));var _0x5832=function(_0x24585b,_0x1b268a){_0x24585b=_0x24585b-0x0;var _0x13cd8b=_0x8325[_0x24585b];return _0x13cd8b;};'use strict';var _=require(_0x5832('0x0'));var util=require('util');var moment=require(_0x5832('0x1'));var BPromise=require('bluebird');var rs=require(_0x5832('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5832('0x3'))['db'];var utils=require(_0x5832('0x4'));var logger=require(_0x5832('0x5'))(_0x5832('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5832('0x7')][_0x5832('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x8b3b30,_0xe80d1d,_0xb4e9b9){return new BPromise(function(_0x333780,_0x495531){return client[_0x5832('0x9')](_0x8b3b30,_0xb4e9b9)[_0x5832('0xa')](function(_0x10192d){logger[_0x5832('0xb')](_0x5832('0xc'),_0xe80d1d,_0x5832('0xd'));logger[_0x5832('0xe')](_0x5832('0xf'),_0xe80d1d,_0x5832('0xd'),JSON['stringify'](_0x10192d));if(_0x10192d['error']){if(_0x10192d[_0x5832('0x10')][_0x5832('0x11')]===0x1f4){logger[_0x5832('0x10')](_0x5832('0xc'),_0xe80d1d,_0x10192d['error']['message']);return _0x495531(_0x10192d[_0x5832('0x10')][_0x5832('0x12')]);}logger[_0x5832('0x10')](_0x5832('0xc'),_0xe80d1d,_0x10192d['error'][_0x5832('0x12')]);return _0x333780(_0x10192d[_0x5832('0x10')][_0x5832('0x12')]);}else{logger[_0x5832('0xb')]('DeskConfiguration,\x20%s,\x20%s',_0xe80d1d,_0x5832('0xd'));_0x333780(_0x10192d[_0x5832('0x13')][_0x5832('0x12')]);}})['catch'](function(_0x32d360){logger[_0x5832('0x10')](_0x5832('0xc'),_0xe80d1d,_0x32d360);_0x495531(_0x32d360);});});}
\ No newline at end of file
index edeb308..56ad0fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5baf=['put','update','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskField.controller','get','isAuthenticated','/:id','show','post'];(function(_0x84d5cd,_0x52aa86){var _0xe71f9d=function(_0x13cb46){while(--_0x13cb46){_0x84d5cd['push'](_0x84d5cd['shift']());}};_0xe71f9d(++_0x52aa86);}(_0x5baf,0xae));var _0xf5ba=function(_0x1afba9,_0x285954){_0x1afba9=_0x1afba9-0x0;var _0x4f4519=_0x5baf[_0x1afba9];return _0x4f4519;};'use strict';var multer=require(_0xf5ba('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf5ba('0x1'));var express=require(_0xf5ba('0x2'));var router=express[_0xf5ba('0x3')]();var fs_extra=require(_0xf5ba('0x4'));var auth=require(_0xf5ba('0x5'));var interaction=require(_0xf5ba('0x6'));var config=require('../../config/environment');var controller=require(_0xf5ba('0x7'));router[_0xf5ba('0x8')]('/',auth[_0xf5ba('0x9')](),controller['index']);router[_0xf5ba('0x8')](_0xf5ba('0xa'),auth['isAuthenticated'](),controller[_0xf5ba('0xb')]);router[_0xf5ba('0xc')]('/',auth[_0xf5ba('0x9')](),controller['create']);router[_0xf5ba('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xf5ba('0xe')]);router['delete']('/:id',auth[_0xf5ba('0x9')](),controller[_0xf5ba('0xf')]);module[_0xf5ba('0x10')]=router;
\ No newline at end of file
+var _0xecf5=['update','delete','exports','util','path','express','Router','../../config/environment','./intDeskField.controller','get','isAuthenticated','index','post','create','/:id'];(function(_0xbb6612,_0x3f12c7){var _0x3d9bd8=function(_0x5e8d23){while(--_0x5e8d23){_0xbb6612['push'](_0xbb6612['shift']());}};_0x3d9bd8(++_0x3f12c7);}(_0xecf5,0x1c5));var _0x5ecf=function(_0x3f9447,_0x2d0b5c){_0x3f9447=_0x3f9447-0x0;var _0x1800f2=_0xecf5[_0x3f9447];return _0x1800f2;};'use strict';var multer=require('multer');var util=require(_0x5ecf('0x0'));var path=require(_0x5ecf('0x1'));var timeout=require('connect-timeout');var express=require(_0x5ecf('0x2'));var router=express[_0x5ecf('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5ecf('0x4'));var controller=require(_0x5ecf('0x5'));router[_0x5ecf('0x6')]('/',auth[_0x5ecf('0x7')](),controller[_0x5ecf('0x8')]);router[_0x5ecf('0x6')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x5ecf('0x9')]('/',auth[_0x5ecf('0x7')](),controller[_0x5ecf('0xa')]);router['put'](_0x5ecf('0xb'),auth[_0x5ecf('0x7')](),controller[_0x5ecf('0xc')]);router[_0x5ecf('0xd')](_0x5ecf('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x5ecf('0xe')]=router;
\ No newline at end of file
index 0919b9c..8248fa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a68=['keyValue','STRING','BOOLEAN','sequelize','exports','string','variable','customVariable'];(function(_0x2b6e53,_0x4ed0d2){var _0x35bab1=function(_0x138843){while(--_0x138843){_0x2b6e53['push'](_0x2b6e53['shift']());}};_0x35bab1(++_0x4ed0d2);}(_0x0a68,0x17b));var _0x80a6=function(_0x464e13,_0x2616e4){_0x464e13=_0x464e13-0x0;var _0x2b3327=_0x0a68[_0x464e13];return _0x2b3327;};'use strict';var Sequelize=require(_0x80a6('0x0'));module[_0x80a6('0x1')]={'type':{'type':Sequelize['ENUM'](_0x80a6('0x2'),_0x80a6('0x3'),_0x80a6('0x4'),_0x80a6('0x5'),'picklist'),'defaultValue':_0x80a6('0x2')},'content':{'type':Sequelize[_0x80a6('0x6')]},'key':{'type':Sequelize[_0x80a6('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0x80a6('0x2'),_0x80a6('0x3'),_0x80a6('0x4'))},'keyContent':{'type':Sequelize[_0x80a6('0x6')]},'idField':{'type':Sequelize[_0x80a6('0x6')]},'nameField':{'type':Sequelize[_0x80a6('0x6')]},'customField':{'type':Sequelize[_0x80a6('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0ad4=['keyValue','STRING','BOOLEAN','ENUM','string','variable','customVariable'];(function(_0x19fdfe,_0x5b1633){var _0x2506cf=function(_0x327da9){while(--_0x327da9){_0x19fdfe['push'](_0x19fdfe['shift']());}};_0x2506cf(++_0x5b1633);}(_0x0ad4,0xc7));var _0x40ad=function(_0x5c7d48,_0x3e2460){_0x5c7d48=_0x5c7d48-0x0;var _0x3a37c2=_0x0ad4[_0x5c7d48];return _0x3a37c2;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x40ad('0x0')](_0x40ad('0x1'),_0x40ad('0x2'),_0x40ad('0x3'),_0x40ad('0x4'),'picklist'),'defaultValue':_0x40ad('0x1')},'content':{'type':Sequelize[_0x40ad('0x5')]},'key':{'type':Sequelize[_0x40ad('0x5')]},'keyType':{'type':Sequelize[_0x40ad('0x0')](_0x40ad('0x1'),'variable',_0x40ad('0x3'))},'keyContent':{'type':Sequelize[_0x40ad('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x40ad('0x5')]},'customField':{'type':Sequelize[_0x40ad('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x40ad('0x5')]}};
\ No newline at end of file
index dfc537b..79e87e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9137=['zip-dir','request-promise','bluebird','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/environment','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','save','update','destroy','then','end','error','stack','name','send','index','map','DeskField','rawAttributes','type','key','query','keys','filters','intersection','attributes','fields','length','model','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','show','params','includeAll','options','find','create','body','rimraf'];(function(_0x48aa9e,_0x2fd6db){var _0x17bc9f=function(_0x1caab0){while(--_0x1caab0){_0x48aa9e['push'](_0x48aa9e['shift']());}};_0x17bc9f(++_0x2fd6db);}(_0x9137,0x15d));var _0x7913=function(_0x4d8f6f,_0x559720){_0x4d8f6f=_0x4d8f6f-0x0;var _0x441c71=_0x9137[_0x4d8f6f];return _0x441c71;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7913('0x0'));var zipdir=require(_0x7913('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7913('0x2'));var moment=require('moment');var BPromise=require(_0x7913('0x3'));var Mustache=require('mustache');var util=require(_0x7913('0x4'));var path=require(_0x7913('0x5'));var sox=require(_0x7913('0x6'));var csv=require(_0x7913('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7913('0x8'));var squel=require(_0x7913('0x9'));var crypto=require(_0x7913('0xa'));var jsforce=require(_0x7913('0xb'));var deskjs=require(_0x7913('0xc'));var toCsv=require('to-csv');var querystring=require(_0x7913('0xd'));var Papa=require(_0x7913('0xe'));var Redis=require(_0x7913('0xf'));var authService=require(_0x7913('0x10'));var qs=require(_0x7913('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x7913('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4da319,_0x824a25){_0x824a25=_0x824a25||0xcc;return function(_0x255a97){if(_0x255a97){return _0x4da319[_0x7913('0x13')](_0x824a25);}return _0x4da319[_0x7913('0x14')](_0x824a25)['end']();};}function respondWithResult(_0x44b7f1,_0x2fec70){_0x2fec70=_0x2fec70||0xc8;return function(_0x84bba3){if(_0x84bba3){return _0x44b7f1['status'](_0x2fec70)[_0x7913('0x15')](_0x84bba3);}};}function respondWithFilteredResult(_0x43fb3d,_0x1a5216){return function(_0x11e5d0){if(_0x11e5d0){var _0x5cb3d2=typeof _0x1a5216[_0x7913('0x16')]===_0x7913('0x17')&&typeof _0x1a5216[_0x7913('0x18')]===_0x7913('0x17');var _0x657441=_0x11e5d0[_0x7913('0x19')];var _0x3c8a3d=_0x5cb3d2?0x0:_0x1a5216['offset'];var _0x2e47a1=_0x5cb3d2?_0x11e5d0[_0x7913('0x19')]:_0x1a5216[_0x7913('0x16')]+_0x1a5216[_0x7913('0x18')];var _0x33934d;if(_0x2e47a1>=_0x657441){_0x2e47a1=_0x657441;_0x33934d=0xc8;}else{_0x33934d=0xce;}_0x43fb3d['status'](_0x33934d);return _0x43fb3d[_0x7913('0x1a')](_0x7913('0x1b'),_0x3c8a3d+'-'+_0x2e47a1+'/'+_0x657441)[_0x7913('0x15')](_0x11e5d0);}return null;};}function patchUpdates(_0x1b58f1){return function(_0x82e242){try{jsonpatch['apply'](_0x82e242,_0x1b58f1,!![]);}catch(_0x1727b7){return BPromise['reject'](_0x1727b7);}return _0x82e242[_0x7913('0x1c')]();};}function saveUpdates(_0x10c1e7,_0x1e21c0){return function(_0x4d6783){if(_0x4d6783){return _0x4d6783[_0x7913('0x1d')](_0x10c1e7)['then'](function(_0x3c3791){return _0x3c3791;});}return null;};}function removeEntity(_0x19f81c,_0x55e3b9){return function(_0x21b918){if(_0x21b918){return _0x21b918[_0x7913('0x1e')]()[_0x7913('0x1f')](function(){_0x19f81c[_0x7913('0x14')](0xcc)[_0x7913('0x20')]();});}};}function handleEntityNotFound(_0xc1dc91,_0x5760fb){return function(_0xf5c315){if(!_0xf5c315){_0xc1dc91[_0x7913('0x13')](0x194);}return _0xf5c315;};}function handleError(_0x55a8e4,_0x5638f6){_0x5638f6=_0x5638f6||0x1f4;return function(_0x5b346e){logger[_0x7913('0x21')](_0x5b346e[_0x7913('0x22')]);if(_0x5b346e['name']){delete _0x5b346e[_0x7913('0x23')];}_0x55a8e4[_0x7913('0x14')](_0x5638f6)[_0x7913('0x24')](_0x5b346e);};}exports[_0x7913('0x25')]=function(_0x3b9afa,_0x57b4fe){var _0x23c9c2={},_0x1fe96c={},_0x1c2ccb={'count':0x0,'rows':[]};var _0x4f7214=_[_0x7913('0x26')](db[_0x7913('0x27')][_0x7913('0x28')],function(_0x4149f6){return{'name':_0x4149f6['fieldName'],'type':_0x4149f6[_0x7913('0x29')][_0x7913('0x2a')]};});_0x1fe96c['model']=_[_0x7913('0x26')](_0x4f7214,_0x7913('0x23'));_0x1fe96c[_0x7913('0x2b')]=_[_0x7913('0x2c')](_0x3b9afa['query']);_0x1fe96c[_0x7913('0x2d')]=_[_0x7913('0x2e')](_0x1fe96c['model'],_0x1fe96c[_0x7913('0x2b')]);_0x23c9c2[_0x7913('0x2f')]=_[_0x7913('0x2e')](_0x1fe96c['model'],qs[_0x7913('0x30')](_0x3b9afa[_0x7913('0x2b')][_0x7913('0x30')]));_0x23c9c2['attributes']=_0x23c9c2[_0x7913('0x2f')][_0x7913('0x31')]?_0x23c9c2[_0x7913('0x2f')]:_0x1fe96c[_0x7913('0x32')];if(!_0x3b9afa['query']['hasOwnProperty'](_0x7913('0x33'))){_0x23c9c2['limit']=qs[_0x7913('0x18')](_0x3b9afa[_0x7913('0x2b')][_0x7913('0x18')]);_0x23c9c2[_0x7913('0x16')]=qs['offset'](_0x3b9afa[_0x7913('0x2b')][_0x7913('0x16')]);}_0x23c9c2[_0x7913('0x34')]=qs['sort'](_0x3b9afa[_0x7913('0x2b')][_0x7913('0x35')]);_0x23c9c2[_0x7913('0x36')]=qs['filters'](_[_0x7913('0x37')](_0x3b9afa[_0x7913('0x2b')],_0x1fe96c[_0x7913('0x2d')]),_0x4f7214);if(_0x3b9afa['query'][_0x7913('0x38')]){_0x23c9c2['where']=_[_0x7913('0x39')](_0x23c9c2[_0x7913('0x36')],{'$or':_[_0x7913('0x26')](_0x4f7214,function(_0x487995){if(_0x487995[_0x7913('0x29')]!==_0x7913('0x3a')){var _0x3203fe={};_0x3203fe[_0x487995[_0x7913('0x23')]]={'$like':'%'+_0x3b9afa[_0x7913('0x2b')][_0x7913('0x38')]+'%'};return _0x3203fe;}})});}_0x23c9c2=_[_0x7913('0x39')]({},_0x23c9c2,_0x3b9afa['options']);var _0x5c36ab={'where':_0x23c9c2['where']};return db[_0x7913('0x27')][_0x7913('0x19')](_0x5c36ab)['then'](function(_0x5b5156){_0x1c2ccb[_0x7913('0x19')]=_0x5b5156;if(_0x3b9afa['query']['includeAll']){_0x23c9c2[_0x7913('0x3b')]=[{'all':!![]}];}return db[_0x7913('0x27')][_0x7913('0x3c')](_0x23c9c2);})[_0x7913('0x1f')](function(_0x330718){_0x1c2ccb[_0x7913('0x3d')]=_0x330718;return _0x1c2ccb;})[_0x7913('0x1f')](respondWithFilteredResult(_0x57b4fe,_0x23c9c2))[_0x7913('0x3e')](handleError(_0x57b4fe,null));};exports[_0x7913('0x3f')]=function(_0xb6b156,_0x55ca02){var _0x4504b9={'raw':!![],'where':{'id':_0xb6b156[_0x7913('0x40')]['id']}},_0x1bea7a={};_0x1bea7a[_0x7913('0x32')]=_[_0x7913('0x2c')](db[_0x7913('0x27')]['rawAttributes']);_0x1bea7a['query']=_['keys'](_0xb6b156[_0x7913('0x2b')]);_0x1bea7a[_0x7913('0x2d')]=_[_0x7913('0x2e')](_0x1bea7a[_0x7913('0x32')],_0x1bea7a[_0x7913('0x2b')]);_0x4504b9[_0x7913('0x2f')]=_[_0x7913('0x2e')](_0x1bea7a[_0x7913('0x32')],qs[_0x7913('0x30')](_0xb6b156[_0x7913('0x2b')]['fields']));_0x4504b9[_0x7913('0x2f')]=_0x4504b9['attributes'][_0x7913('0x31')]?_0x4504b9[_0x7913('0x2f')]:_0x1bea7a['model'];if(_0xb6b156[_0x7913('0x2b')][_0x7913('0x41')]){_0x4504b9['include']=[{'all':!![]}];}_0x4504b9=_[_0x7913('0x39')]({},_0x4504b9,_0xb6b156[_0x7913('0x42')]);return db[_0x7913('0x27')][_0x7913('0x43')](_0x4504b9)[_0x7913('0x1f')](handleEntityNotFound(_0x55ca02,null))[_0x7913('0x1f')](respondWithResult(_0x55ca02,null))[_0x7913('0x3e')](handleError(_0x55ca02,null));};exports['create']=function(_0x836b79,_0x18c2e3){return db[_0x7913('0x27')][_0x7913('0x44')](_0x836b79[_0x7913('0x45')],{})[_0x7913('0x1f')](respondWithResult(_0x18c2e3,0xc9))[_0x7913('0x3e')](handleError(_0x18c2e3,null));};exports[_0x7913('0x1d')]=function(_0x1da89b,_0x1d72a3){if(_0x1da89b[_0x7913('0x45')]['id']){delete _0x1da89b[_0x7913('0x45')]['id'];}return db[_0x7913('0x27')][_0x7913('0x43')]({'where':{'id':_0x1da89b['params']['id']}})[_0x7913('0x1f')](handleEntityNotFound(_0x1d72a3,null))[_0x7913('0x1f')](saveUpdates(_0x1da89b[_0x7913('0x45')],null))[_0x7913('0x1f')](respondWithResult(_0x1d72a3,null))[_0x7913('0x3e')](handleError(_0x1d72a3,null));};exports[_0x7913('0x1e')]=function(_0x126fa0,_0xa8399d){return db[_0x7913('0x27')][_0x7913('0x43')]({'where':{'id':_0x126fa0[_0x7913('0x40')]['id']}})['then'](handleEntityNotFound(_0xa8399d,null))[_0x7913('0x1f')](removeEntity(_0xa8399d,null))['catch'](handleError(_0xa8399d,null));};
\ No newline at end of file
+var _0xb39f=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','index','map','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','DeskField','includeAll','rows','show','params','length','find','catch','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','mustache','path','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x5929e8,_0x5e6795){var _0x2c48f3=function(_0x2e40fc){while(--_0x2e40fc){_0x5929e8['push'](_0x5929e8['shift']());}};_0x2c48f3(++_0x5e6795);}(_0xb39f,0x1e6));var _0xfb39=function(_0x1bd484,_0x3f421d){_0x1bd484=_0x1bd484-0x0;var _0x29fe5c=_0xb39f[_0x1bd484];return _0x29fe5c;};'use strict';var emlformat=require(_0xfb39('0x0'));var rimraf=require(_0xfb39('0x1'));var zipdir=require(_0xfb39('0x2'));var jsonpatch=require(_0xfb39('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xfb39('0x4'));var util=require('util');var path=require(_0xfb39('0x5'));var sox=require(_0xfb39('0x6'));var csv=require('to-csv');var ejs=require(_0xfb39('0x7'));var fs=require('fs');var fs_extra=require(_0xfb39('0x8'));var _=require(_0xfb39('0x9'));var squel=require(_0xfb39('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xfb39('0xb'));var toCsv=require(_0xfb39('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xfb39('0xd'));var qs=require(_0xfb39('0xe'));var as=require(_0xfb39('0xf'));var hardwareService=require(_0xfb39('0x10'));var logger=require(_0xfb39('0x11'))('api');var utils=require(_0xfb39('0x12'));var config=require(_0xfb39('0x13'));var licenseUtil=require(_0xfb39('0x14'));var db=require(_0xfb39('0x15'))['db'];function respondWithStatusCode(_0x35aeb4,_0x5e1cfa){_0x5e1cfa=_0x5e1cfa||0xcc;return function(_0x58249d){if(_0x58249d){return _0x35aeb4[_0xfb39('0x16')](_0x5e1cfa);}return _0x35aeb4[_0xfb39('0x17')](_0x5e1cfa)[_0xfb39('0x18')]();};}function respondWithResult(_0x480a86,_0x3ef405){_0x3ef405=_0x3ef405||0xc8;return function(_0x2a3724){if(_0x2a3724){return _0x480a86['status'](_0x3ef405)['json'](_0x2a3724);}};}function respondWithFilteredResult(_0x177a14,_0x4a0662){return function(_0x31b1dc){if(_0x31b1dc){var _0x4897be=typeof _0x4a0662['offset']===_0xfb39('0x19')&&typeof _0x4a0662[_0xfb39('0x1a')]===_0xfb39('0x19');var _0x1d1ad3=_0x31b1dc[_0xfb39('0x1b')];var _0x5cb552=_0x4897be?0x0:_0x4a0662[_0xfb39('0x1c')];var _0xd2ad6d=_0x4897be?_0x31b1dc[_0xfb39('0x1b')]:_0x4a0662[_0xfb39('0x1c')]+_0x4a0662['limit'];var _0x50765f;if(_0xd2ad6d>=_0x1d1ad3){_0xd2ad6d=_0x1d1ad3;_0x50765f=0xc8;}else{_0x50765f=0xce;}_0x177a14[_0xfb39('0x17')](_0x50765f);return _0x177a14[_0xfb39('0x1d')](_0xfb39('0x1e'),_0x5cb552+'-'+_0xd2ad6d+'/'+_0x1d1ad3)[_0xfb39('0x1f')](_0x31b1dc);}return null;};}function patchUpdates(_0x116b22){return function(_0x57bebf){try{jsonpatch[_0xfb39('0x20')](_0x57bebf,_0x116b22,!![]);}catch(_0x3d5697){return BPromise[_0xfb39('0x21')](_0x3d5697);}return _0x57bebf[_0xfb39('0x22')]();};}function saveUpdates(_0x3b4393,_0x5f2f60){return function(_0x50b2e2){if(_0x50b2e2){return _0x50b2e2[_0xfb39('0x23')](_0x3b4393)[_0xfb39('0x24')](function(_0x561b60){return _0x561b60;});}return null;};}function removeEntity(_0x1b1e65,_0x33d029){return function(_0x23bd78){if(_0x23bd78){return _0x23bd78['destroy']()['then'](function(){_0x1b1e65[_0xfb39('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x228288,_0x14651a){return function(_0x30dbc5){if(!_0x30dbc5){_0x228288[_0xfb39('0x16')](0x194);}return _0x30dbc5;};}function handleError(_0x118aa7,_0x2a7add){_0x2a7add=_0x2a7add||0x1f4;return function(_0x38e145){logger[_0xfb39('0x25')](_0x38e145[_0xfb39('0x26')]);if(_0x38e145[_0xfb39('0x27')]){delete _0x38e145[_0xfb39('0x27')];}_0x118aa7[_0xfb39('0x17')](_0x2a7add)[_0xfb39('0x28')](_0x38e145);};}exports[_0xfb39('0x29')]=function(_0x5d05e2,_0x4a98e9){var _0x34977d={},_0x233d80={},_0xc6129d={'count':0x0,'rows':[]};var _0x2a247c=_[_0xfb39('0x2a')](db['DeskField']['rawAttributes'],function(_0x4665e9){return{'name':_0x4665e9['fieldName'],'type':_0x4665e9['type'][_0xfb39('0x2b')]};});_0x233d80[_0xfb39('0x2c')]=_['map'](_0x2a247c,'name');_0x233d80[_0xfb39('0x2d')]=_[_0xfb39('0x2e')](_0x5d05e2[_0xfb39('0x2d')]);_0x233d80[_0xfb39('0x2f')]=_[_0xfb39('0x30')](_0x233d80['model'],_0x233d80[_0xfb39('0x2d')]);_0x34977d[_0xfb39('0x31')]=_['intersection'](_0x233d80[_0xfb39('0x2c')],qs['fields'](_0x5d05e2[_0xfb39('0x2d')][_0xfb39('0x32')]));_0x34977d['attributes']=_0x34977d[_0xfb39('0x31')]['length']?_0x34977d['attributes']:_0x233d80[_0xfb39('0x2c')];if(!_0x5d05e2[_0xfb39('0x2d')][_0xfb39('0x33')](_0xfb39('0x34'))){_0x34977d[_0xfb39('0x1a')]=qs[_0xfb39('0x1a')](_0x5d05e2[_0xfb39('0x2d')][_0xfb39('0x1a')]);_0x34977d[_0xfb39('0x1c')]=qs['offset'](_0x5d05e2[_0xfb39('0x2d')][_0xfb39('0x1c')]);}_0x34977d[_0xfb39('0x35')]=qs[_0xfb39('0x36')](_0x5d05e2[_0xfb39('0x2d')][_0xfb39('0x36')]);_0x34977d[_0xfb39('0x37')]=qs[_0xfb39('0x2f')](_['pick'](_0x5d05e2[_0xfb39('0x2d')],_0x233d80[_0xfb39('0x2f')]),_0x2a247c);if(_0x5d05e2['query'][_0xfb39('0x38')]){_0x34977d[_0xfb39('0x37')]=_[_0xfb39('0x39')](_0x34977d[_0xfb39('0x37')],{'$or':_[_0xfb39('0x2a')](_0x2a247c,function(_0x1347c0){if(_0x1347c0[_0xfb39('0x3a')]!==_0xfb39('0x3b')){var _0x42f414={};_0x42f414[_0x1347c0[_0xfb39('0x27')]]={'$like':'%'+_0x5d05e2[_0xfb39('0x2d')]['filter']+'%'};return _0x42f414;}})});}_0x34977d=_[_0xfb39('0x39')]({},_0x34977d,_0x5d05e2[_0xfb39('0x3c')]);var _0x5e55b7={'where':_0x34977d[_0xfb39('0x37')]};return db[_0xfb39('0x3d')][_0xfb39('0x1b')](_0x5e55b7)['then'](function(_0xff7831){_0xc6129d[_0xfb39('0x1b')]=_0xff7831;if(_0x5d05e2['query'][_0xfb39('0x3e')]){_0x34977d['include']=[{'all':!![]}];}return db[_0xfb39('0x3d')]['findAll'](_0x34977d);})['then'](function(_0x545180){_0xc6129d[_0xfb39('0x3f')]=_0x545180;return _0xc6129d;})[_0xfb39('0x24')](respondWithFilteredResult(_0x4a98e9,_0x34977d))['catch'](handleError(_0x4a98e9,null));};exports[_0xfb39('0x40')]=function(_0x328288,_0x2a8ec8){var _0x2ece4e={'raw':!![],'where':{'id':_0x328288[_0xfb39('0x41')]['id']}},_0x512bba={};_0x512bba[_0xfb39('0x2c')]=_[_0xfb39('0x2e')](db['DeskField']['rawAttributes']);_0x512bba[_0xfb39('0x2d')]=_['keys'](_0x328288[_0xfb39('0x2d')]);_0x512bba[_0xfb39('0x2f')]=_[_0xfb39('0x30')](_0x512bba['model'],_0x512bba[_0xfb39('0x2d')]);_0x2ece4e[_0xfb39('0x31')]=_['intersection'](_0x512bba[_0xfb39('0x2c')],qs['fields'](_0x328288['query'][_0xfb39('0x32')]));_0x2ece4e[_0xfb39('0x31')]=_0x2ece4e[_0xfb39('0x31')][_0xfb39('0x42')]?_0x2ece4e['attributes']:_0x512bba[_0xfb39('0x2c')];if(_0x328288['query'][_0xfb39('0x3e')]){_0x2ece4e['include']=[{'all':!![]}];}_0x2ece4e=_[_0xfb39('0x39')]({},_0x2ece4e,_0x328288[_0xfb39('0x3c')]);return db[_0xfb39('0x3d')][_0xfb39('0x43')](_0x2ece4e)[_0xfb39('0x24')](handleEntityNotFound(_0x2a8ec8,null))['then'](respondWithResult(_0x2a8ec8,null))[_0xfb39('0x44')](handleError(_0x2a8ec8,null));};exports['create']=function(_0x43ccf4,_0x544293){return db[_0xfb39('0x3d')][_0xfb39('0x45')](_0x43ccf4['body'],{})[_0xfb39('0x24')](respondWithResult(_0x544293,0xc9))[_0xfb39('0x44')](handleError(_0x544293,null));};exports[_0xfb39('0x23')]=function(_0x43c619,_0x197123){if(_0x43c619[_0xfb39('0x46')]['id']){delete _0x43c619['body']['id'];}return db['DeskField'][_0xfb39('0x43')]({'where':{'id':_0x43c619[_0xfb39('0x41')]['id']}})[_0xfb39('0x24')](handleEntityNotFound(_0x197123,null))[_0xfb39('0x24')](saveUpdates(_0x43c619[_0xfb39('0x46')],null))['then'](respondWithResult(_0x197123,null))[_0xfb39('0x44')](handleError(_0x197123,null));};exports[_0xfb39('0x47')]=function(_0x21fe27,_0x11d1e8){return db[_0xfb39('0x3d')][_0xfb39('0x43')]({'where':{'id':_0x21fe27['params']['id']}})[_0xfb39('0x24')](handleEntityNotFound(_0x11d1e8,null))[_0xfb39('0x24')](removeEntity(_0x11d1e8,null))['catch'](handleError(_0x11d1e8,null));};
\ No newline at end of file
index 852d237..20ecce2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dab=['path','rimraf','../../config/environment','exports','define','int_desk_fields','desk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','bluebird'];(function(_0x1071d6,_0x293323){var _0x4c6be4=function(_0x43a973){while(--_0x43a973){_0x1071d6['push'](_0x1071d6['shift']());}};_0x4c6be4(++_0x293323);}(_0x0dab,0x1ad));var _0xb0da=function(_0x4a7bb0,_0x138d7d){_0x4a7bb0=_0x4a7bb0-0x0;var _0x12f397=_0x0dab[_0x4a7bb0];return _0x12f397;};'use strict';var _=require(_0xb0da('0x0'));var util=require(_0xb0da('0x1'));var logger=require(_0xb0da('0x2'))(_0xb0da('0x3'));var moment=require('moment');var BPromise=require(_0xb0da('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb0da('0x5'));var rimraf=require(_0xb0da('0x6'));var config=require(_0xb0da('0x7'));var attributes=require('./intDeskField.attributes');module[_0xb0da('0x8')]=function(_0x30066f,_0x9c5846){return _0x30066f[_0xb0da('0x9')]('DeskField',attributes,{'tableName':_0xb0da('0xa'),'paranoid':![],'indexes':[{'name':_0xb0da('0xb'),'fields':[_0xb0da('0xc'),_0xb0da('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2498=['rimraf','./intDeskField.attributes','define','DeskField','int_desk_fields','desk_unique_index','idField','FieldId','lodash','util','api','bluebird','request-promise','path'];(function(_0x227478,_0x18c521){var _0x39c694=function(_0x5112ec){while(--_0x5112ec){_0x227478['push'](_0x227478['shift']());}};_0x39c694(++_0x18c521);}(_0x2498,0x6a));var _0x8249=function(_0x4b146b,_0xdf8dee){_0x4b146b=_0x4b146b-0x0;var _0x3c1c2c=_0x2498[_0x4b146b];return _0x3c1c2c;};'use strict';var _=require(_0x8249('0x0'));var util=require(_0x8249('0x1'));var logger=require('../../config/logger')(_0x8249('0x2'));var moment=require('moment');var BPromise=require(_0x8249('0x3'));var rp=require(_0x8249('0x4'));var fs=require('fs');var path=require(_0x8249('0x5'));var rimraf=require(_0x8249('0x6'));var config=require('../../config/environment');var attributes=require(_0x8249('0x7'));module['exports']=function(_0x26e133,_0x5f4956){return _0x26e133[_0x8249('0x8')](_0x8249('0x9'),attributes,{'tableName':_0x8249('0xa'),'paranoid':![],'indexes':[{'name':_0x8249('0xb'),'fields':[_0x8249('0xc'),_0x8249('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 30e3bba..43dd5fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1302=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','DeskField,\x20%s,\x20%s,\x20%s','error','code','DeskField,\x20%s,\x20%s','message','info','result','lodash','util'];(function(_0x5a96c7,_0x3241ef){var _0x2e0193=function(_0x5405e2){while(--_0x5405e2){_0x5a96c7['push'](_0x5a96c7['shift']());}};_0x2e0193(++_0x3241ef);}(_0x1302,0x185));var _0x2130=function(_0x814f48,_0x2a4cb7){_0x814f48=_0x814f48-0x0;var _0x27ebec=_0x1302[_0x814f48];return _0x27ebec;};'use strict';var _=require(_0x2130('0x0'));var util=require(_0x2130('0x1'));var moment=require(_0x2130('0x2'));var BPromise=require(_0x2130('0x3'));var rs=require(_0x2130('0x4'));var fs=require('fs');var Redis=require(_0x2130('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2130('0x6'));var logger=require(_0x2130('0x7'))(_0x2130('0x8'));var config=require(_0x2130('0x9'));var jayson=require(_0x2130('0xa'));var client=jayson[_0x2130('0xb')][_0x2130('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x26f590,_0x1e8d55,_0x5866f5){return new BPromise(function(_0xedb818,_0x1979b0){return client[_0x2130('0xd')](_0x26f590,_0x5866f5)[_0x2130('0xe')](function(_0x35dfe2){logger['info']('DeskField,\x20%s,\x20%s',_0x1e8d55,_0x2130('0xf'));logger['debug'](_0x2130('0x10'),_0x1e8d55,_0x2130('0xf'),JSON['stringify'](_0x35dfe2));if(_0x35dfe2[_0x2130('0x11')]){if(_0x35dfe2[_0x2130('0x11')][_0x2130('0x12')]===0x1f4){logger['error'](_0x2130('0x13'),_0x1e8d55,_0x35dfe2[_0x2130('0x11')][_0x2130('0x14')]);return _0x1979b0(_0x35dfe2[_0x2130('0x11')]['message']);}logger[_0x2130('0x11')](_0x2130('0x13'),_0x1e8d55,_0x35dfe2[_0x2130('0x11')][_0x2130('0x14')]);return _0xedb818(_0x35dfe2['error']['message']);}else{logger[_0x2130('0x15')](_0x2130('0x13'),_0x1e8d55,'request\x20sent');_0xedb818(_0x35dfe2[_0x2130('0x16')][_0x2130('0x14')]);}})['catch'](function(_0x61f445){logger[_0x2130('0x11')](_0x2130('0x13'),_0x1e8d55,_0x61f445);_0x1979b0(_0x61f445);});});}
\ No newline at end of file
+var _0x7ff5=['debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent'];(function(_0x3e750b,_0x2070d9){var _0x1e2ac3=function(_0x214aca){while(--_0x214aca){_0x3e750b['push'](_0x3e750b['shift']());}};_0x1e2ac3(++_0x2070d9);}(_0x7ff5,0x149));var _0x57ff=function(_0x1b1adb,_0x24e1a1){_0x1b1adb=_0x1b1adb-0x0;var _0x5077ab=_0x7ff5[_0x1b1adb];return _0x5077ab;};'use strict';var _=require('lodash');var util=require(_0x57ff('0x0'));var moment=require(_0x57ff('0x1'));var BPromise=require(_0x57ff('0x2'));var rs=require(_0x57ff('0x3'));var fs=require('fs');var Redis=require(_0x57ff('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x57ff('0x5'));var logger=require('../../config/logger')(_0x57ff('0x6'));var config=require(_0x57ff('0x7'));var jayson=require(_0x57ff('0x8'));var client=jayson[_0x57ff('0x9')][_0x57ff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x465f2f,_0x3916c4,_0x2d42b2){return new BPromise(function(_0x341a76,_0x8e57a2){return client[_0x57ff('0xb')](_0x465f2f,_0x2d42b2)[_0x57ff('0xc')](function(_0x55efeb){logger[_0x57ff('0xd')](_0x57ff('0xe'),_0x3916c4,_0x57ff('0xf'));logger[_0x57ff('0x10')](_0x57ff('0x11'),_0x3916c4,_0x57ff('0xf'),JSON[_0x57ff('0x12')](_0x55efeb));if(_0x55efeb[_0x57ff('0x13')]){if(_0x55efeb[_0x57ff('0x13')]['code']===0x1f4){logger[_0x57ff('0x13')](_0x57ff('0xe'),_0x3916c4,_0x55efeb['error'][_0x57ff('0x14')]);return _0x8e57a2(_0x55efeb['error'][_0x57ff('0x14')]);}logger[_0x57ff('0x13')]('DeskField,\x20%s,\x20%s',_0x3916c4,_0x55efeb[_0x57ff('0x13')][_0x57ff('0x14')]);return _0x341a76(_0x55efeb[_0x57ff('0x13')][_0x57ff('0x14')]);}else{logger['info']('DeskField,\x20%s,\x20%s',_0x3916c4,_0x57ff('0xf'));_0x341a76(_0x55efeb[_0x57ff('0x15')][_0x57ff('0x14')]);}})[_0x57ff('0x16')](function(_0x47be5f){logger[_0x57ff('0x13')](_0x57ff('0xe'),_0x3916c4,_0x47be5f);_0x8e57a2(_0x47be5f);});});}
\ No newline at end of file
index 0d1c93a..4155ae7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5523=['index','/:id','isAuthenticated','show','/:id/configurations','post','addConfiguration','put','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDynamics365Account.controller','get'];(function(_0x22dd6a,_0x519adc){var _0x42e3ce=function(_0x32e2f4){while(--_0x32e2f4){_0x22dd6a['push'](_0x22dd6a['shift']());}};_0x42e3ce(++_0x519adc);}(_0x5523,0xdd));var _0x3552=function(_0x2ed819,_0x403721){_0x2ed819=_0x2ed819-0x0;var _0x1e8d82=_0x5523[_0x2ed819];return _0x1e8d82;};'use strict';var multer=require(_0x3552('0x0'));var util=require('util');var path=require(_0x3552('0x1'));var timeout=require(_0x3552('0x2'));var express=require(_0x3552('0x3'));var router=express[_0x3552('0x4')]();var fs_extra=require(_0x3552('0x5'));var auth=require(_0x3552('0x6'));var interaction=require(_0x3552('0x7'));var config=require('../../config/environment');var controller=require(_0x3552('0x8'));router[_0x3552('0x9')]('/',auth['isAuthenticated'](),controller[_0x3552('0xa')]);router[_0x3552('0x9')](_0x3552('0xb'),auth[_0x3552('0xc')](),controller[_0x3552('0xd')]);router[_0x3552('0x9')](_0x3552('0xe'),auth[_0x3552('0xc')](),controller['getConfigurations']);router[_0x3552('0x9')]('/:id/fields',auth[_0x3552('0xc')](),controller['getFields']);router[_0x3552('0xf')]('/',auth[_0x3552('0xc')](),controller['create']);router[_0x3552('0xf')](_0x3552('0xe'),auth[_0x3552('0xc')](),controller[_0x3552('0x10')]);router[_0x3552('0x11')](_0x3552('0xb'),auth[_0x3552('0xc')](),controller[_0x3552('0x12')]);router[_0x3552('0x13')](_0x3552('0xb'),auth['isAuthenticated'](),controller[_0x3552('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x0809=['index','get','/:id','show','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','update','multer','util','path','express','../../components/auth/service','isAuthenticated'];(function(_0x383523,_0x262138){var _0x29c502=function(_0x3e64cd){while(--_0x3e64cd){_0x383523['push'](_0x383523['shift']());}};_0x29c502(++_0x262138);}(_0x0809,0x1d6));var _0x9080=function(_0x409bd2,_0x212647){_0x409bd2=_0x409bd2-0x0;var _0x5360f7=_0x0809[_0x409bd2];return _0x5360f7;};'use strict';var multer=require(_0x9080('0x0'));var util=require(_0x9080('0x1'));var path=require(_0x9080('0x2'));var timeout=require('connect-timeout');var express=require(_0x9080('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9080('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intDynamics365Account.controller');router['get']('/',auth[_0x9080('0x5')](),controller[_0x9080('0x6')]);router[_0x9080('0x7')](_0x9080('0x8'),auth[_0x9080('0x5')](),controller[_0x9080('0x9')]);router[_0x9080('0x7')]('/:id/configurations',auth[_0x9080('0x5')](),controller[_0x9080('0xa')]);router[_0x9080('0x7')](_0x9080('0xb'),auth['isAuthenticated'](),controller[_0x9080('0xc')]);router['post']('/',auth[_0x9080('0x5')](),controller[_0x9080('0xd')]);router[_0x9080('0xe')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x9080('0xf')]);router['put'](_0x9080('0x8'),auth[_0x9080('0x5')](),controller[_0x9080('0x10')]);router['delete']('/:id',auth[_0x9080('0x5')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d658fb2..ec4690d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb716=['STRING','sequelize','exports'];(function(_0x56fb33,_0x37be08){var _0x435ee4=function(_0xa80804){while(--_0xa80804){_0x56fb33['push'](_0x56fb33['shift']());}};_0x435ee4(++_0x37be08);}(_0xb716,0x14b));var _0x6b71=function(_0x1d83a5,_0x562195){_0x1d83a5=_0x1d83a5-0x0;var _0x1154cb=_0xb716[_0x1d83a5];return _0x1154cb;};'use strict';var Sequelize=require(_0x6b71('0x0'));module[_0x6b71('0x1')]={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x6b71('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0x6b71('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x6b71('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x55f6=['STRING'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x55f6,0xaa));var _0x655f=function(_0x3c4fa3,_0x351d99){_0x3c4fa3=_0x3c4fa3-0x0;var _0xfe5661=_0x55f6[_0x3c4fa3];return _0xfe5661;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x655f('0x0')]},'username':{'type':Sequelize[_0x655f('0x0')]},'password':{'type':Sequelize[_0x655f('0x0')]},'remoteUri':{'type':Sequelize[_0x655f('0x0')]},'tenantId':{'type':Sequelize[_0x655f('0x0')]},'clientId':{'type':Sequelize[_0x655f('0x0')]},'clientSecret':{'type':Sequelize[_0x655f('0x0')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x655f('0x0')]}};
\ No newline at end of file
index cdfae90..a03d9a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5395=['pick','filter','merge','map','VIRTUAL','options','count','includeAll','Dynamics365Account','findAll','rows','catch','show','params','keys','include','find','create','body','getConfigurations','Dynamics365Configuration','findOne','AccountId','Subjects','channel','Dynamics365Field','getFields','ticketType','incident','Incident','PhoneCall','title','description','customerid','ownerid','caseorigincode','subject','phonenumber','regardingobjectid','directioncode','accountidname','accountidyominame','billedserviceunits','contractdetailidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','onholdtime','overriddencreatedon','owneridtype','owneridyominame','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','slainvokedidname','slaname','statecode','statuscode','subjectidname','transactioncurrencyidname','utcconversiontimezonecode','versionnumber','concat','username','password','remoteUri','tenantId','clientId','clientSecret','slice','substring','%s/api/data/v9.0/','POST','/oauth2/token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','includes','LogicalName','forEach','@odata.type','push','all','isNil','StringAttributeMetadata','DoubleAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','StateAttributeMetadata','test','statusCode','error','stack',')/Attributes(','OptionSet','Options','Label','UserLocalizedLabel','Value','DisplayName','TrueOption','true','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','eml-format','zip-dir','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','name','send','rawAttributes','fieldName','type','model','query','intersection','fields','attributes','length','nolimit','order','sort','where','filters'];(function(_0x1cdc4e,_0x20108d){var _0x3fd184=function(_0x5840db){while(--_0x5840db){_0x1cdc4e['push'](_0x1cdc4e['shift']());}};_0x3fd184(++_0x20108d);}(_0x5395,0x150));var _0x5539=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x5395[_0x5d6456];return _0x4d66c1;};'use strict';var emlformat=require(_0x5539('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5539('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5539('0x2'));var BPromise=require(_0x5539('0x3'));var Mustache=require(_0x5539('0x4'));var util=require('util');var path=require(_0x5539('0x5'));var sox=require(_0x5539('0x6'));var csv=require(_0x5539('0x7'));var ejs=require(_0x5539('0x8'));var fs=require('fs');var fs_extra=require(_0x5539('0x9'));var _=require(_0x5539('0xa'));var squel=require(_0x5539('0xb'));var crypto=require(_0x5539('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5539('0xd'));var toCsv=require(_0x5539('0x7'));var querystring=require(_0x5539('0xe'));var Papa=require(_0x5539('0xf'));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(_0x5539('0x10'));var logger=require('../../config/logger')(_0x5539('0x11'));var utils=require('../../config/utils');var config=require(_0x5539('0x12'));var licenseUtil=require(_0x5539('0x13'));var db=require('../../mysqldb')['db'];var integrations=require(_0x5539('0x14'));function respondWithStatusCode(_0x14f0ac,_0x1a418b){_0x1a418b=_0x1a418b||0xcc;return function(_0xe57fc5){if(_0xe57fc5){return _0x14f0ac[_0x5539('0x15')](_0x1a418b);}return _0x14f0ac[_0x5539('0x16')](_0x1a418b)[_0x5539('0x17')]();};}function respondWithResult(_0x498eef,_0x17ec44){_0x17ec44=_0x17ec44||0xc8;return function(_0x25d1a1){if(_0x25d1a1){return _0x498eef['status'](_0x17ec44)[_0x5539('0x18')](_0x25d1a1);}};}function respondWithFilteredResult(_0x53a861,_0x3d1ad7){return function(_0x53b670){if(_0x53b670){var _0x3d1585=typeof _0x3d1ad7[_0x5539('0x19')]===_0x5539('0x1a')&&typeof _0x3d1ad7[_0x5539('0x1b')]===_0x5539('0x1a');var _0x2994f0=_0x53b670['count'];var _0x5e2b6f=_0x3d1585?0x0:_0x3d1ad7['offset'];var _0x41a241=_0x3d1585?_0x53b670['count']:_0x3d1ad7[_0x5539('0x19')]+_0x3d1ad7[_0x5539('0x1b')];var _0x1ee866;if(_0x41a241>=_0x2994f0){_0x41a241=_0x2994f0;_0x1ee866=0xc8;}else{_0x1ee866=0xce;}_0x53a861['status'](_0x1ee866);return _0x53a861[_0x5539('0x1c')](_0x5539('0x1d'),_0x5e2b6f+'-'+_0x41a241+'/'+_0x2994f0)['json'](_0x53b670);}return null;};}function patchUpdates(_0x1171cc){return function(_0x4e49b3){try{jsonpatch[_0x5539('0x1e')](_0x4e49b3,_0x1171cc,!![]);}catch(_0x3b5d05){return BPromise[_0x5539('0x1f')](_0x3b5d05);}return _0x4e49b3[_0x5539('0x20')]();};}function saveUpdates(_0x4eae80,_0x55732d){return function(_0x4b354f){if(_0x4b354f){return _0x4b354f[_0x5539('0x21')](_0x4eae80)[_0x5539('0x22')](function(_0x19b989){return _0x19b989;});}return null;};}function removeEntity(_0x1e12ad,_0xa0f93b){return function(_0x1f4744){if(_0x1f4744){return _0x1f4744[_0x5539('0x23')]()[_0x5539('0x22')](function(){_0x1e12ad[_0x5539('0x16')](0xcc)[_0x5539('0x17')]();});}};}function handleEntityNotFound(_0x3eb310,_0x1ebd4a){return function(_0x41f002){if(!_0x41f002){_0x3eb310[_0x5539('0x15')](0x194);}return _0x41f002;};}function handleError(_0x40e9fc,_0xacacfc){_0xacacfc=_0xacacfc||0x1f4;return function(_0x168f56){logger['error'](_0x168f56['stack']);if(_0x168f56[_0x5539('0x24')]){delete _0x168f56[_0x5539('0x24')];}_0x40e9fc['status'](_0xacacfc)[_0x5539('0x25')](_0x168f56);};}exports['index']=function(_0x58844f,_0x2679dd){var _0xcab0cf={},_0x54b69f={},_0x1e00ab={'count':0x0,'rows':[]};var _0x14974f=_['map'](db['Dynamics365Account'][_0x5539('0x26')],function(_0x47b482){return{'name':_0x47b482[_0x5539('0x27')],'type':_0x47b482[_0x5539('0x28')]['key']};});_0x54b69f[_0x5539('0x29')]=_['map'](_0x14974f,_0x5539('0x24'));_0x54b69f['query']=_['keys'](_0x58844f[_0x5539('0x2a')]);_0x54b69f['filters']=_[_0x5539('0x2b')](_0x54b69f[_0x5539('0x29')],_0x54b69f[_0x5539('0x2a')]);_0xcab0cf['attributes']=_[_0x5539('0x2b')](_0x54b69f[_0x5539('0x29')],qs[_0x5539('0x2c')](_0x58844f['query'][_0x5539('0x2c')]));_0xcab0cf[_0x5539('0x2d')]=_0xcab0cf[_0x5539('0x2d')][_0x5539('0x2e')]?_0xcab0cf[_0x5539('0x2d')]:_0x54b69f['model'];if(!_0x58844f[_0x5539('0x2a')]['hasOwnProperty'](_0x5539('0x2f'))){_0xcab0cf[_0x5539('0x1b')]=qs['limit'](_0x58844f[_0x5539('0x2a')][_0x5539('0x1b')]);_0xcab0cf['offset']=qs['offset'](_0x58844f[_0x5539('0x2a')]['offset']);}_0xcab0cf[_0x5539('0x30')]=qs['sort'](_0x58844f[_0x5539('0x2a')][_0x5539('0x31')]);_0xcab0cf[_0x5539('0x32')]=qs[_0x5539('0x33')](_[_0x5539('0x34')](_0x58844f['query'],_0x54b69f['filters']),_0x14974f);if(_0x58844f[_0x5539('0x2a')][_0x5539('0x35')]){_0xcab0cf[_0x5539('0x32')]=_[_0x5539('0x36')](_0xcab0cf['where'],{'$or':_[_0x5539('0x37')](_0x14974f,function(_0x1c0747){if(_0x1c0747[_0x5539('0x28')]!==_0x5539('0x38')){var _0x2b5d4c={};_0x2b5d4c[_0x1c0747[_0x5539('0x24')]]={'$like':'%'+_0x58844f['query']['filter']+'%'};return _0x2b5d4c;}})});}_0xcab0cf=_['merge']({},_0xcab0cf,_0x58844f[_0x5539('0x39')]);var _0x3b685d={'where':_0xcab0cf[_0x5539('0x32')]};return db['Dynamics365Account'][_0x5539('0x3a')](_0x3b685d)['then'](function(_0x402cbe){_0x1e00ab['count']=_0x402cbe;if(_0x58844f[_0x5539('0x2a')][_0x5539('0x3b')]){_0xcab0cf['include']=[{'all':!![]}];}return db[_0x5539('0x3c')][_0x5539('0x3d')](_0xcab0cf);})[_0x5539('0x22')](function(_0x3327f1){_0x1e00ab[_0x5539('0x3e')]=_0x3327f1;return _0x1e00ab;})[_0x5539('0x22')](respondWithFilteredResult(_0x2679dd,_0xcab0cf))[_0x5539('0x3f')](handleError(_0x2679dd,null));};exports[_0x5539('0x40')]=function(_0x15611b,_0x2e99e6){var _0x26b865={'raw':![],'where':{'id':_0x15611b[_0x5539('0x41')]['id']}},_0x4e3877={};_0x4e3877[_0x5539('0x29')]=_[_0x5539('0x42')](db[_0x5539('0x3c')][_0x5539('0x26')]);_0x4e3877[_0x5539('0x2a')]=_[_0x5539('0x42')](_0x15611b[_0x5539('0x2a')]);_0x4e3877[_0x5539('0x33')]=_[_0x5539('0x2b')](_0x4e3877[_0x5539('0x29')],_0x4e3877[_0x5539('0x2a')]);_0x26b865[_0x5539('0x2d')]=_[_0x5539('0x2b')](_0x4e3877[_0x5539('0x29')],qs[_0x5539('0x2c')](_0x15611b[_0x5539('0x2a')][_0x5539('0x2c')]));_0x26b865[_0x5539('0x2d')]=_0x26b865['attributes'][_0x5539('0x2e')]?_0x26b865[_0x5539('0x2d')]:_0x4e3877['model'];if(_0x15611b[_0x5539('0x2a')][_0x5539('0x3b')]){_0x26b865[_0x5539('0x43')]=[{'all':!![]}];}_0x26b865=_[_0x5539('0x36')]({},_0x26b865,_0x15611b[_0x5539('0x39')]);return db['Dynamics365Account'][_0x5539('0x44')](_0x26b865)[_0x5539('0x22')](handleEntityNotFound(_0x2e99e6,null))[_0x5539('0x22')](respondWithResult(_0x2e99e6,null))['catch'](handleError(_0x2e99e6,null));};exports[_0x5539('0x45')]=function(_0x3c990c,_0x5f0170){return db[_0x5539('0x3c')][_0x5539('0x45')](_0x3c990c[_0x5539('0x46')],{})['then'](respondWithResult(_0x5f0170,0xc9))[_0x5539('0x3f')](handleError(_0x5f0170,null));};exports['update']=function(_0x1b22d3,_0x220f5b){if(_0x1b22d3[_0x5539('0x46')]['id']){delete _0x1b22d3[_0x5539('0x46')]['id'];}return db[_0x5539('0x3c')][_0x5539('0x44')]({'where':{'id':_0x1b22d3[_0x5539('0x41')]['id']}})[_0x5539('0x22')](handleEntityNotFound(_0x220f5b,null))[_0x5539('0x22')](saveUpdates(_0x1b22d3[_0x5539('0x46')],null))[_0x5539('0x22')](respondWithResult(_0x220f5b,null))[_0x5539('0x3f')](handleError(_0x220f5b,null));};exports[_0x5539('0x23')]=function(_0x4973fa,_0x7e47e8){return db['Dynamics365Account'][_0x5539('0x44')]({'where':{'id':_0x4973fa[_0x5539('0x41')]['id']}})['then'](handleEntityNotFound(_0x7e47e8,null))['then'](removeEntity(_0x7e47e8,null))[_0x5539('0x3f')](handleError(_0x7e47e8,null));};exports[_0x5539('0x47')]=function(_0x39d4de,_0x59233f,_0x2f244f){var _0x47bd35={};var _0xecf2c7={};var _0x4cdff1;var _0x3e546c;return db[_0x5539('0x3c')]['findOne']({'where':{'id':_0x39d4de[_0x5539('0x41')]['id']}})['then'](handleEntityNotFound(_0x59233f,null))[_0x5539('0x22')](function(_0x38a24f){if(_0x38a24f){_0x4cdff1=_0x38a24f;_0xecf2c7['model']=_[_0x5539('0x42')](db[_0x5539('0x48')]['rawAttributes']);_0xecf2c7[_0x5539('0x2a')]=_[_0x5539('0x42')](_0x39d4de[_0x5539('0x2a')]);_0xecf2c7[_0x5539('0x33')]=_[_0x5539('0x2b')](_0xecf2c7[_0x5539('0x29')],_0xecf2c7['query']);_0x47bd35['attributes']=_[_0x5539('0x2b')](_0xecf2c7[_0x5539('0x29')],qs[_0x5539('0x2c')](_0x39d4de[_0x5539('0x2a')]['fields']));_0x47bd35[_0x5539('0x2d')]=_0x47bd35[_0x5539('0x2d')]['length']?_0x47bd35[_0x5539('0x2d')]:_0xecf2c7[_0x5539('0x29')];_0x47bd35['order']=qs[_0x5539('0x31')](_0x39d4de[_0x5539('0x2a')][_0x5539('0x31')]);_0x47bd35[_0x5539('0x32')]=qs[_0x5539('0x33')](_[_0x5539('0x34')](_0x39d4de[_0x5539('0x2a')],_0xecf2c7['filters']));if(_0x39d4de[_0x5539('0x2a')][_0x5539('0x35')]){_0x47bd35[_0x5539('0x32')]=_[_0x5539('0x36')](_0x47bd35[_0x5539('0x32')],{'$or':_['map'](_0x47bd35[_0x5539('0x2d')],function(_0x520a5b){var _0x202f9d={};_0x202f9d[_0x520a5b]={'$like':'%'+_0x39d4de[_0x5539('0x2a')]['filter']+'%'};return _0x202f9d;})});}_0x47bd35=_[_0x5539('0x36')]({},_0x47bd35,_0x39d4de[_0x5539('0x39')]);return _0x4cdff1['getConfigurations'](_0x47bd35);}})[_0x5539('0x22')](function(_0x891bef){if(_0x891bef){_0x3e546c=_0x891bef['length'];if(!_0x39d4de[_0x5539('0x2a')]['hasOwnProperty']('nolimit')){_0x47bd35[_0x5539('0x1b')]=qs[_0x5539('0x1b')](_0x39d4de[_0x5539('0x2a')][_0x5539('0x1b')]);_0x47bd35[_0x5539('0x19')]=qs[_0x5539('0x19')](_0x39d4de[_0x5539('0x2a')][_0x5539('0x19')]);}return _0x4cdff1[_0x5539('0x47')](_0x47bd35);}})['then'](function(_0x5c1c5e){if(_0x5c1c5e){return _0x5c1c5e?{'count':_0x3e546c,'rows':_0x5c1c5e}:null;}})['then'](respondWithResult(_0x59233f,null))[_0x5539('0x3f')](handleError(_0x59233f,null));};exports['addConfiguration']=function(_0x3cc9e2,_0x5977e1,_0x4f14da){if(_0x3cc9e2[_0x5539('0x46')]['id']){delete _0x3cc9e2[_0x5539('0x46')]['id'];}return db['Dynamics365Account'][_0x5539('0x49')]({'where':{'id':_0x3cc9e2[_0x5539('0x41')]['id']}})[_0x5539('0x22')](handleEntityNotFound(_0x5977e1,null))[_0x5539('0x22')](function(_0x4932a4){if(_0x4932a4){_0x3cc9e2['body'][_0x5539('0x4a')]=_0x4932a4['id'];_0x3cc9e2[_0x5539('0x46')][_0x5539('0x4b')]=integrations['getSubjects'](_0x3cc9e2[_0x5539('0x46')][_0x5539('0x4c')],_0x3cc9e2[_0x5539('0x46')][_0x5539('0x28')]);_0x3cc9e2[_0x5539('0x46')]['Descriptions']=integrations['getDescriptions'](_0x3cc9e2['body'][_0x5539('0x4c')],_0x3cc9e2[_0x5539('0x46')][_0x5539('0x28')]);return db['Dynamics365Configuration'][_0x5539('0x45')](_0x3cc9e2[_0x5539('0x46')],{'include':[{'model':db[_0x5539('0x4d')],'as':_0x5539('0x4b')},{'model':db[_0x5539('0x4d')],'as':'Descriptions'}]});}return null;})[_0x5539('0x22')](respondWithResult(_0x5977e1,null))[_0x5539('0x3f')](handleError(_0x5977e1,null));};exports[_0x5539('0x4e')]=function(_0x2e59d6,_0x10d021,_0x42fc3a){var _0x201c3e=_0x2e59d6[_0x5539('0x2a')][_0x5539('0x4f')];var _0x1219a2=_0x201c3e===_0x5539('0x50')?_0x5539('0x51'):_0x5539('0x52');var _0xb9e2eb='';var _0x3bc793='';var _0xc7b93c='';var _0xbe8850='';var _0x27399e='';var _0x3559d6='';var _0x1bb14b='';var _0x1255c4='';var _0x3d462b=[_0x5539('0x53'),_0x5539('0x54'),_0x5539('0x55'),_0x5539('0x56'),_0x5539('0x57'),_0x5539('0x58'),_0x5539('0x59'),_0x5539('0x5a'),_0x5539('0x5b'),'phonecall_activity_parties'];var _0x2861c2=[_0x5539('0x5c'),_0x5539('0x5d'),'actualserviceunits',_0x5539('0x5e'),'contactidname','contactidyominame',_0x5539('0x5f'),'contractidname',_0x5539('0x60'),_0x5539('0x61'),_0x5539('0x62'),_0x5539('0x63'),_0x5539('0x64'),'createdonbehalfbyname',_0x5539('0x65'),_0x5539('0x66'),_0x5539('0x67'),_0x5539('0x68'),_0x5539('0x69'),_0x5539('0x6a'),_0x5539('0x6b'),_0x5539('0x6c'),_0x5539('0x6d'),'exchangerate',_0x5539('0x6e'),_0x5539('0x6f'),_0x5539('0x70'),_0x5539('0x71'),'kbarticleidname',_0x5539('0x72'),_0x5539('0x73'),_0x5539('0x74'),_0x5539('0x75'),_0x5539('0x76'),_0x5539('0x77'),'modifiedon','modifiedonbehalfbyname',_0x5539('0x78'),_0x5539('0x79'),_0x5539('0x7a'),'numberofchildincidents',_0x5539('0x7b'),_0x5539('0x7c'),'owneridname',_0x5539('0x7d'),_0x5539('0x7e'),'parentcaseidname','primarycontactidname',_0x5539('0x7f'),_0x5539('0x80'),_0x5539('0x81'),_0x5539('0x82'),_0x5539('0x83'),_0x5539('0x84'),_0x5539('0x85'),_0x5539('0x86'),'responsiblecontactidyominame','sentimentvalue',_0x5539('0x87'),_0x5539('0x88'),'socialprofileidname',_0x5539('0x89'),_0x5539('0x8a'),_0x5539('0x8b'),'ticketnumber','timezoneruleversionnumber',_0x5539('0x8c'),'traversedpath',_0x5539('0x8d'),_0x5539('0x8e')];var _0x4af11f=_0x3d462b[_0x5539('0x8f')](_0x2861c2);return db[_0x5539('0x3c')][_0x5539('0x49')]({'where':{'id':_0x2e59d6[_0x5539('0x41')]['id']},'attributes':['id',_0x5539('0x90'),_0x5539('0x91'),_0x5539('0x92'),_0x5539('0x93'),_0x5539('0x94'),_0x5539('0x95')]})[_0x5539('0x22')](handleEntityNotFound(_0x10d021,null))['then'](function(_0x42eef1){if(_0x42eef1){_0x1255c4=_0x42eef1['remoteUri'];var _0x2c3ca5=_0x1255c4[_0x5539('0x96')](-0x1);if(_0x2c3ca5==='/'){_0x1255c4=_0x1255c4[_0x5539('0x97')](0x0,_0x1255c4['lastIndexOf'](_0x2c3ca5));}_0x1bb14b=util['format'](_0x5539('0x98'),_0x1255c4);var _0x139726={'method':_0x5539('0x99'),'uri':'https://login.microsoftonline.com/'+_0x42eef1[_0x5539('0x93')]+_0x5539('0x9a'),'form':{'client_id':_0x42eef1[_0x5539('0x94')],'resource':_0x1255c4,'username':_0x42eef1['username'],'password':_0x42eef1[_0x5539('0x91')],'grant_type':_0x5539('0x91'),'client_secret':_0x42eef1[_0x5539('0x95')]},'json':!![]};return rp(_0x139726);}})['then'](function(_0x3de858){_0x3559d6=_0x3de858['access_token'];var _0x3a8a22={'method':_0x5539('0x9b'),'uri':encodeURI(_0x1bb14b+_0x5539('0x9c')+_0x1219a2+'\x27'),'headers':{'Authorization':_0x5539('0x9d')+_0x3559d6,'If-None-Match':null,'OData-Version':_0x5539('0x9e')},'json':!![]};return rp(_0x3a8a22);})[_0x5539('0x22')](function(_0x8ed0e7){var _0xc58667=_0x8ed0e7[_0x5539('0x9f')][0x0];var _0x15cb30=_0xc58667[_0x5539('0xa0')];var _0x5a39ab={'method':'GET','uri':_0x1bb14b+_0x5539('0xa1')+_0x15cb30+_0x5539('0xa2'),'headers':{'Authorization':'Bearer\x20'+_0x3559d6,'If-None-Match':null,'OData-Version':_0x5539('0x9e')},'json':!![]};return rp(_0x5a39ab);})['then'](function(_0x5ec545){_0xb9e2eb=_0x5ec545;_0x3bc793=_0xb9e2eb[_0x5539('0xa3')];_0x3bc793=_['remove'](_0x3bc793,function(_0x3e6fc2){return!_0x4af11f[_0x5539('0xa4')](_0x3e6fc2[_0x5539('0xa5')]);});var _0x405b9b=[];var _0x461815=[];_0x3bc793[_0x5539('0xa6')](function(_0x2a812f){if(_0x2a812f[_0x5539('0xa7')]){var _0x22729d=_0x2a812f[_0x5539('0xa7')][_0x5539('0x97')](_0x2a812f[_0x5539('0xa7')]['lastIndexOf']('.')+0x1);if(_0x22729d==='PicklistAttributeMetadata'){_0x405b9b[_0x5539('0xa8')](getSelectList(_0x1bb14b,_0x201c3e,_0x461815,_0xb9e2eb['MetadataId'],_0x2a812f['MetadataId'],_0x3559d6));}}});return Promise[_0x5539('0xa9')](_0x405b9b);})[_0x5539('0x22')](function(_0x329650){_0xc7b93c=_0x329650[0x0];var _0x3b9d72=[];var _0x3077c0=[];_0x3bc793[_0x5539('0xa6')](function(_0x2c6af1){if(!_[_0x5539('0xaa')](_0x2c6af1['@odata.type'])){var _0x9be6b9=_0x2c6af1[_0x5539('0xa7')][_0x5539('0x97')](_0x2c6af1[_0x5539('0xa7')]['lastIndexOf']('.')+0x1);if(_0x9be6b9==='BooleanAttributeMetadata'){_0x3b9d72[_0x5539('0xa8')](getBooleanList(_0x1bb14b,_0x201c3e,_0x3077c0,_0xb9e2eb[_0x5539('0xa0')],_0x2c6af1[_0x5539('0xa0')],_0x3559d6));}}});return Promise[_0x5539('0xa9')](_0x3b9d72);})[_0x5539('0x22')](function(_0x21bcfe){_0xbe8850=_0x21bcfe[0x0];var _0x23f87a=[];var _0x290d15=[];_0x3bc793['forEach'](function(_0x2398c8){if(_0x2398c8[_0x5539('0xa7')]){var _0x2a8abb=_0x2398c8[_0x5539('0xa7')][_0x5539('0x97')](_0x2398c8[_0x5539('0xa7')]['lastIndexOf']('.')+0x1);if(_0x2a8abb===_0x5539('0xab')||_0x2a8abb===_0x5539('0xac')||_0x2a8abb==='BigIntAttributeMetadata'||_0x2a8abb===_0x5539('0xad')||_0x2a8abb===_0x5539('0xae')||_0x2a8abb===_0x5539('0xaf')||_0x2a8abb===_0x5539('0xb0')||_0x2a8abb==='EntityNameAttributeMetadata'||_0x2a8abb===_0x5539('0xb1')||_0x2a8abb==='DecimalAttributeMetadata'){_0x23f87a[_0x5539('0xa8')](getInputList(_0x1bb14b,_0x201c3e,_0x2a8abb,_0x290d15,_0xb9e2eb['MetadataId'],_0x2398c8[_0x5539('0xa0')],_0x3559d6));}}});return Promise[_0x5539('0xa9')](_0x23f87a);})[_0x5539('0x22')](function(_0x4c721e){_0x27399e=_0x4c721e[0x0];var _0x3505e1=_0xc7b93c[_0x5539('0x8f')](_0xbe8850)[_0x5539('0x8f')](_0x27399e);var _0x1b0e50={'count':_0x3505e1[_0x5539('0x2e')],'rows':_0x3505e1};return _0x1b0e50;})[_0x5539('0x22')](respondWithResult(_0x10d021,null))[_0x5539('0x3f')](function(_0x2185b0){var _0x5becc0=_0x2e59d6['query'][_0x5539('0xb2')]?0x1f4:_0x2185b0[_0x5539('0xb3')]||0x1f4;logger[_0x5539('0xb4')](_0x2185b0[_0x5539('0xb5')]);delete _0x2185b0['name'];if(_0x5becc0===0x191){_0x5becc0=0x190;}_0x10d021[_0x5539('0x16')](_0x5becc0)['send'](_0x2e59d6[_0x5539('0x2a')][_0x5539('0xb2')]?{'message':'Wrong\x20credentials','statusCode':_0x2185b0[_0x5539('0xb3')]}:_0x2185b0);});};function getSelectList(_0x3fad06,_0xc501ca,_0x4711d3,_0x490dad,_0x32789d,_0x2c388e){var _0x1faf15={'method':_0x5539('0x9b'),'uri':_0x3fad06+_0x5539('0xa1')+_0x490dad+_0x5539('0xb6')+_0x32789d+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':'Bearer\x20'+_0x2c388e,'If-None-Match':null,'OData-Version':_0x5539('0x9e')},'json':!![]};return rp(_0x1faf15)[_0x5539('0x22')](function(_0x6efee9){var _0x2b4aa6=[];var _0x44e075=_0x6efee9[_0x5539('0xb7')][_0x5539('0xb8')];_0x44e075['forEach'](function(_0x335c24){_0x2b4aa6[_0x5539('0xa8')]({'name':_0x335c24[_0x5539('0xb9')][_0x5539('0xba')][_0x5539('0xb9')],'value':String(_0x335c24[_0x5539('0xbb')])});});var _0xfb0c7c={'id':_0xc501ca+'_'+_0x6efee9[_0x5539('0xa5')],'name':_0x6efee9[_0x5539('0xbc')][_0x5539('0xba')][_0x5539('0xb9')],'custom':![],'options':_0x2b4aa6};_0x4711d3[_0x5539('0xa8')](_0xfb0c7c);return _0x4711d3;});}function getBooleanList(_0x9c7595,_0x34c20a,_0x17130f,_0x958026,_0x3edf2f,_0xc4944e){var _0x55fd14={'method':'GET','uri':_0x9c7595+_0x5539('0xa1')+_0x958026+_0x5539('0xb6')+_0x3edf2f+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0x5539('0x9d')+_0xc4944e,'If-None-Match':null,'OData-Version':_0x5539('0x9e')},'json':!![]};return rp(_0x55fd14)[_0x5539('0x22')](function(_0x14debe){var _0x18f811=[];_0x18f811[_0x5539('0xa8')]({'name':_0x14debe[_0x5539('0xb7')][_0x5539('0xbd')]['Label']['UserLocalizedLabel'][_0x5539('0xb9')],'value':_0x5539('0xbe')},{'name':_0x14debe[_0x5539('0xb7')]['FalseOption'][_0x5539('0xb9')][_0x5539('0xba')][_0x5539('0xb9')],'value':_0x5539('0xbf')});var _0x320740={'id':_0x34c20a+'_'+_0x14debe['LogicalName'],'name':_0x14debe[_0x5539('0xbc')][_0x5539('0xba')]['Label'],'custom':![],'options':_0x18f811};_0x17130f[_0x5539('0xa8')](_0x320740);return _0x17130f;});}function getInputList(_0x328605,_0x2ae6c,_0x17f52e,_0x4abdee,_0x3b60d2,_0x57ad63,_0x8737d2){var _0xf5f311={'method':_0x5539('0x9b'),'uri':_0x328605+_0x5539('0xa1')+_0x3b60d2+_0x5539('0xb6')+_0x57ad63+_0x5539('0xc0')+_0x17f52e+_0x5539('0xc1'),'headers':{'Authorization':_0x5539('0x9d')+_0x8737d2,'If-None-Match':null,'OData-Version':_0x5539('0x9e')},'json':!![]};return rp(_0xf5f311)[_0x5539('0x22')](function(_0x2c6d8f){var _0x5dd6f8={'id':_0x2ae6c+'_'+_0x2c6d8f[_0x5539('0xa5')],'name':_0x2c6d8f[_0x5539('0xbc')][_0x5539('0xba')]?_0x2c6d8f[_0x5539('0xbc')][_0x5539('0xba')][_0x5539('0xb9')]:_0x2c6d8f[_0x5539('0xa5')],'custom':![],'options':[]};_0x4abdee[_0x5539('0xa8')](_0x5dd6f8);return _0x4abdee;});}
\ No newline at end of file
+var _0x3561=['model','map','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','where','pick','merge','filter','options','include','findAll','rows','catch','params','rawAttributes','length','find','create','update','body','getConfigurations','findOne','Dynamics365Configuration','addConfiguration','Subjects','channel','Descriptions','Dynamics365Field','ticketType','Incident','PhoneCall','title','description','ownerid','caseorigincode','subject','directioncode','phonecall_activity_parties','accountidyominame','actualserviceunits','contactidname','contactidyominame','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdonbehalfbyname','customeridyominame','emailaddress','entitlementidname','entityimage_url','exchangerate','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidyominame','sentimentvalue','slaname','socialprofileidname','subjectidname','ticketnumber','transactioncurrencyidname','utcconversiontimezonecode','concat','username','remoteUri','tenantId','clientSecret','slice','substring','POST','https://login.microsoftonline.com/','/oauth2/token','clientId','password','access_token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','4.0','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Bearer\x20','remove','includes','LogicalName','@odata.type','PicklistAttributeMetadata','push','all','forEach','isNil','BooleanAttributeMetadata','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','test','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Options','Label','UserLocalizedLabel','Value',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','OptionSet','TrueOption','true','FalseOption','DisplayName',')/Microsoft.Dynamics.CRM.','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit','undefined','count','set','reject','save','then','destroy','error','stack','name','send','index','Dynamics365Account','fieldName','type'];(function(_0x458356,_0x5a16e1){var _0x38a5ad=function(_0x16a7ab){while(--_0x16a7ab){_0x458356['push'](_0x458356['shift']());}};_0x38a5ad(++_0x5a16e1);}(_0x3561,0x94));var _0x1356=function(_0x3d463a,_0x19314b){_0x3d463a=_0x3d463a-0x0;var _0x492adc=_0x3561[_0x3d463a];return _0x492adc;};'use strict';var emlformat=require(_0x1356('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1356('0x1'));var jsonpatch=require(_0x1356('0x2'));var rp=require(_0x1356('0x3'));var moment=require(_0x1356('0x4'));var BPromise=require(_0x1356('0x5'));var Mustache=require(_0x1356('0x6'));var util=require(_0x1356('0x7'));var path=require(_0x1356('0x8'));var sox=require(_0x1356('0x9'));var csv=require(_0x1356('0xa'));var ejs=require(_0x1356('0xb'));var fs=require('fs');var fs_extra=require(_0x1356('0xc'));var _=require(_0x1356('0xd'));var squel=require('squel');var crypto=require(_0x1356('0xe'));var jsforce=require(_0x1356('0xf'));var deskjs=require(_0x1356('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1356('0x11'));var Redis=require(_0x1356('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x1356('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1356('0x14'));var logger=require(_0x1356('0x15'))('api');var utils=require(_0x1356('0x16'));var config=require(_0x1356('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x1356('0x18'))['db'];var integrations=require(_0x1356('0x19'));function respondWithStatusCode(_0x466604,_0x31e769){_0x31e769=_0x31e769||0xcc;return function(_0x319af1){if(_0x319af1){return _0x466604[_0x1356('0x1a')](_0x31e769);}return _0x466604[_0x1356('0x1b')](_0x31e769)[_0x1356('0x1c')]();};}function respondWithResult(_0x365fb0,_0x324102){_0x324102=_0x324102||0xc8;return function(_0x396402){if(_0x396402){return _0x365fb0[_0x1356('0x1b')](_0x324102)[_0x1356('0x1d')](_0x396402);}};}function respondWithFilteredResult(_0x47a952,_0x593f6d){return function(_0x61991a){if(_0x61991a){var _0x3c2adc=typeof _0x593f6d[_0x1356('0x1e')]==='undefined'&&typeof _0x593f6d[_0x1356('0x1f')]===_0x1356('0x20');var _0x39f708=_0x61991a[_0x1356('0x21')];var _0xa115de=_0x3c2adc?0x0:_0x593f6d[_0x1356('0x1e')];var _0x459836=_0x3c2adc?_0x61991a[_0x1356('0x21')]:_0x593f6d[_0x1356('0x1e')]+_0x593f6d[_0x1356('0x1f')];var _0x8ff03f;if(_0x459836>=_0x39f708){_0x459836=_0x39f708;_0x8ff03f=0xc8;}else{_0x8ff03f=0xce;}_0x47a952[_0x1356('0x1b')](_0x8ff03f);return _0x47a952[_0x1356('0x22')]('Content-Range',_0xa115de+'-'+_0x459836+'/'+_0x39f708)[_0x1356('0x1d')](_0x61991a);}return null;};}function patchUpdates(_0x5b958c){return function(_0x2d2af1){try{jsonpatch['apply'](_0x2d2af1,_0x5b958c,!![]);}catch(_0x420dd6){return BPromise[_0x1356('0x23')](_0x420dd6);}return _0x2d2af1[_0x1356('0x24')]();};}function saveUpdates(_0x377fe7,_0x10d756){return function(_0x43e3b2){if(_0x43e3b2){return _0x43e3b2['update'](_0x377fe7)[_0x1356('0x25')](function(_0x2c26be){return _0x2c26be;});}return null;};}function removeEntity(_0x53eca1,_0xf0a5e9){return function(_0x13d30b){if(_0x13d30b){return _0x13d30b[_0x1356('0x26')]()['then'](function(){_0x53eca1[_0x1356('0x1b')](0xcc)[_0x1356('0x1c')]();});}};}function handleEntityNotFound(_0x3f5c7f,_0x231e6f){return function(_0x4a39ee){if(!_0x4a39ee){_0x3f5c7f['sendStatus'](0x194);}return _0x4a39ee;};}function handleError(_0x42d609,_0x50a4b6){_0x50a4b6=_0x50a4b6||0x1f4;return function(_0x9961c3){logger[_0x1356('0x27')](_0x9961c3[_0x1356('0x28')]);if(_0x9961c3[_0x1356('0x29')]){delete _0x9961c3[_0x1356('0x29')];}_0x42d609['status'](_0x50a4b6)[_0x1356('0x2a')](_0x9961c3);};}exports[_0x1356('0x2b')]=function(_0x31752a,_0x261710){var _0x3a479f={},_0x21a3ca={},_0x4bb4a9={'count':0x0,'rows':[]};var _0x3716cf=_['map'](db[_0x1356('0x2c')]['rawAttributes'],function(_0x5d3a34){return{'name':_0x5d3a34[_0x1356('0x2d')],'type':_0x5d3a34[_0x1356('0x2e')]['key']};});_0x21a3ca[_0x1356('0x2f')]=_[_0x1356('0x30')](_0x3716cf,_0x1356('0x29'));_0x21a3ca[_0x1356('0x31')]=_[_0x1356('0x32')](_0x31752a[_0x1356('0x31')]);_0x21a3ca[_0x1356('0x33')]=_['intersection'](_0x21a3ca[_0x1356('0x2f')],_0x21a3ca[_0x1356('0x31')]);_0x3a479f[_0x1356('0x34')]=_[_0x1356('0x35')](_0x21a3ca['model'],qs[_0x1356('0x36')](_0x31752a[_0x1356('0x31')][_0x1356('0x36')]));_0x3a479f[_0x1356('0x34')]=_0x3a479f[_0x1356('0x34')]['length']?_0x3a479f[_0x1356('0x34')]:_0x21a3ca['model'];if(!_0x31752a[_0x1356('0x31')][_0x1356('0x37')](_0x1356('0x38'))){_0x3a479f[_0x1356('0x1f')]=qs[_0x1356('0x1f')](_0x31752a[_0x1356('0x31')][_0x1356('0x1f')]);_0x3a479f['offset']=qs[_0x1356('0x1e')](_0x31752a[_0x1356('0x31')][_0x1356('0x1e')]);}_0x3a479f[_0x1356('0x39')]=qs['sort'](_0x31752a[_0x1356('0x31')]['sort']);_0x3a479f[_0x1356('0x3a')]=qs['filters'](_[_0x1356('0x3b')](_0x31752a[_0x1356('0x31')],_0x21a3ca['filters']),_0x3716cf);if(_0x31752a[_0x1356('0x31')]['filter']){_0x3a479f[_0x1356('0x3a')]=_[_0x1356('0x3c')](_0x3a479f[_0x1356('0x3a')],{'$or':_[_0x1356('0x30')](_0x3716cf,function(_0x4e9523){if(_0x4e9523[_0x1356('0x2e')]!=='VIRTUAL'){var _0x92d6cf={};_0x92d6cf[_0x4e9523[_0x1356('0x29')]]={'$like':'%'+_0x31752a[_0x1356('0x31')][_0x1356('0x3d')]+'%'};return _0x92d6cf;}})});}_0x3a479f=_[_0x1356('0x3c')]({},_0x3a479f,_0x31752a[_0x1356('0x3e')]);var _0x357b17={'where':_0x3a479f[_0x1356('0x3a')]};return db[_0x1356('0x2c')][_0x1356('0x21')](_0x357b17)[_0x1356('0x25')](function(_0x3459e2){_0x4bb4a9[_0x1356('0x21')]=_0x3459e2;if(_0x31752a[_0x1356('0x31')]['includeAll']){_0x3a479f[_0x1356('0x3f')]=[{'all':!![]}];}return db[_0x1356('0x2c')][_0x1356('0x40')](_0x3a479f);})[_0x1356('0x25')](function(_0x21559e){_0x4bb4a9[_0x1356('0x41')]=_0x21559e;return _0x4bb4a9;})[_0x1356('0x25')](respondWithFilteredResult(_0x261710,_0x3a479f))[_0x1356('0x42')](handleError(_0x261710,null));};exports['show']=function(_0x594dbd,_0x35b712){var _0x36cf22={'raw':![],'where':{'id':_0x594dbd[_0x1356('0x43')]['id']}},_0x55b399={};_0x55b399[_0x1356('0x2f')]=_[_0x1356('0x32')](db[_0x1356('0x2c')][_0x1356('0x44')]);_0x55b399[_0x1356('0x31')]=_[_0x1356('0x32')](_0x594dbd[_0x1356('0x31')]);_0x55b399['filters']=_[_0x1356('0x35')](_0x55b399['model'],_0x55b399[_0x1356('0x31')]);_0x36cf22[_0x1356('0x34')]=_[_0x1356('0x35')](_0x55b399[_0x1356('0x2f')],qs[_0x1356('0x36')](_0x594dbd['query']['fields']));_0x36cf22[_0x1356('0x34')]=_0x36cf22[_0x1356('0x34')][_0x1356('0x45')]?_0x36cf22[_0x1356('0x34')]:_0x55b399[_0x1356('0x2f')];if(_0x594dbd[_0x1356('0x31')]['includeAll']){_0x36cf22[_0x1356('0x3f')]=[{'all':!![]}];}_0x36cf22=_['merge']({},_0x36cf22,_0x594dbd['options']);return db[_0x1356('0x2c')][_0x1356('0x46')](_0x36cf22)[_0x1356('0x25')](handleEntityNotFound(_0x35b712,null))[_0x1356('0x25')](respondWithResult(_0x35b712,null))['catch'](handleError(_0x35b712,null));};exports[_0x1356('0x47')]=function(_0xe8714d,_0x197272){return db[_0x1356('0x2c')]['create'](_0xe8714d['body'],{})[_0x1356('0x25')](respondWithResult(_0x197272,0xc9))[_0x1356('0x42')](handleError(_0x197272,null));};exports[_0x1356('0x48')]=function(_0x2beee2,_0x3b5e70){if(_0x2beee2[_0x1356('0x49')]['id']){delete _0x2beee2['body']['id'];}return db[_0x1356('0x2c')][_0x1356('0x46')]({'where':{'id':_0x2beee2['params']['id']}})[_0x1356('0x25')](handleEntityNotFound(_0x3b5e70,null))[_0x1356('0x25')](saveUpdates(_0x2beee2[_0x1356('0x49')],null))[_0x1356('0x25')](respondWithResult(_0x3b5e70,null))['catch'](handleError(_0x3b5e70,null));};exports['destroy']=function(_0x48bccc,_0x3239c1){return db['Dynamics365Account'][_0x1356('0x46')]({'where':{'id':_0x48bccc[_0x1356('0x43')]['id']}})[_0x1356('0x25')](handleEntityNotFound(_0x3239c1,null))['then'](removeEntity(_0x3239c1,null))[_0x1356('0x42')](handleError(_0x3239c1,null));};exports[_0x1356('0x4a')]=function(_0x1cf6d5,_0x16fe6c,_0x3198d5){var _0x40264e={};var _0x570f7b={};var _0x5cee39;var _0x3de56d;return db[_0x1356('0x2c')][_0x1356('0x4b')]({'where':{'id':_0x1cf6d5[_0x1356('0x43')]['id']}})[_0x1356('0x25')](handleEntityNotFound(_0x16fe6c,null))[_0x1356('0x25')](function(_0x3bc591){if(_0x3bc591){_0x5cee39=_0x3bc591;_0x570f7b['model']=_[_0x1356('0x32')](db[_0x1356('0x4c')]['rawAttributes']);_0x570f7b['query']=_[_0x1356('0x32')](_0x1cf6d5[_0x1356('0x31')]);_0x570f7b[_0x1356('0x33')]=_[_0x1356('0x35')](_0x570f7b[_0x1356('0x2f')],_0x570f7b[_0x1356('0x31')]);_0x40264e[_0x1356('0x34')]=_['intersection'](_0x570f7b['model'],qs[_0x1356('0x36')](_0x1cf6d5[_0x1356('0x31')][_0x1356('0x36')]));_0x40264e[_0x1356('0x34')]=_0x40264e['attributes'][_0x1356('0x45')]?_0x40264e[_0x1356('0x34')]:_0x570f7b[_0x1356('0x2f')];_0x40264e[_0x1356('0x39')]=qs['sort'](_0x1cf6d5[_0x1356('0x31')]['sort']);_0x40264e[_0x1356('0x3a')]=qs[_0x1356('0x33')](_[_0x1356('0x3b')](_0x1cf6d5[_0x1356('0x31')],_0x570f7b[_0x1356('0x33')]));if(_0x1cf6d5[_0x1356('0x31')][_0x1356('0x3d')]){_0x40264e[_0x1356('0x3a')]=_[_0x1356('0x3c')](_0x40264e['where'],{'$or':_[_0x1356('0x30')](_0x40264e[_0x1356('0x34')],function(_0x29fc66){var _0x53b5f9={};_0x53b5f9[_0x29fc66]={'$like':'%'+_0x1cf6d5[_0x1356('0x31')][_0x1356('0x3d')]+'%'};return _0x53b5f9;})});}_0x40264e=_[_0x1356('0x3c')]({},_0x40264e,_0x1cf6d5[_0x1356('0x3e')]);return _0x5cee39['getConfigurations'](_0x40264e);}})[_0x1356('0x25')](function(_0x27c645){if(_0x27c645){_0x3de56d=_0x27c645[_0x1356('0x45')];if(!_0x1cf6d5[_0x1356('0x31')][_0x1356('0x37')](_0x1356('0x38'))){_0x40264e[_0x1356('0x1f')]=qs[_0x1356('0x1f')](_0x1cf6d5['query']['limit']);_0x40264e[_0x1356('0x1e')]=qs['offset'](_0x1cf6d5[_0x1356('0x31')]['offset']);}return _0x5cee39[_0x1356('0x4a')](_0x40264e);}})[_0x1356('0x25')](function(_0x563fe8){if(_0x563fe8){return _0x563fe8?{'count':_0x3de56d,'rows':_0x563fe8}:null;}})[_0x1356('0x25')](respondWithResult(_0x16fe6c,null))[_0x1356('0x42')](handleError(_0x16fe6c,null));};exports[_0x1356('0x4d')]=function(_0x2c07b3,_0x38fdf4,_0xe13b17){if(_0x2c07b3[_0x1356('0x49')]['id']){delete _0x2c07b3[_0x1356('0x49')]['id'];}return db['Dynamics365Account'][_0x1356('0x4b')]({'where':{'id':_0x2c07b3[_0x1356('0x43')]['id']}})[_0x1356('0x25')](handleEntityNotFound(_0x38fdf4,null))[_0x1356('0x25')](function(_0x139072){if(_0x139072){_0x2c07b3[_0x1356('0x49')]['AccountId']=_0x139072['id'];_0x2c07b3[_0x1356('0x49')][_0x1356('0x4e')]=integrations['getSubjects'](_0x2c07b3[_0x1356('0x49')][_0x1356('0x4f')],_0x2c07b3['body'][_0x1356('0x2e')]);_0x2c07b3[_0x1356('0x49')][_0x1356('0x50')]=integrations['getDescriptions'](_0x2c07b3['body'][_0x1356('0x4f')],_0x2c07b3['body'][_0x1356('0x2e')]);return db['Dynamics365Configuration']['create'](_0x2c07b3[_0x1356('0x49')],{'include':[{'model':db[_0x1356('0x51')],'as':_0x1356('0x4e')},{'model':db[_0x1356('0x51')],'as':_0x1356('0x50')}]});}return null;})[_0x1356('0x25')](respondWithResult(_0x38fdf4,null))[_0x1356('0x42')](handleError(_0x38fdf4,null));};exports['getFields']=function(_0x2e2002,_0x247610,_0x13b84e){var _0x219695=_0x2e2002[_0x1356('0x31')][_0x1356('0x52')];var _0x1d2a9f=_0x219695==='incident'?_0x1356('0x53'):_0x1356('0x54');var _0x1a898d='';var _0x2bb86a='';var _0x667135='';var _0x3c920b='';var _0x4bd596='';var _0x570652='';var _0x3a6be5='';var _0x286b73='';var _0x3d27f0=[_0x1356('0x55'),_0x1356('0x56'),'customerid',_0x1356('0x57'),_0x1356('0x58'),_0x1356('0x59'),'phonenumber','regardingobjectid',_0x1356('0x5a'),_0x1356('0x5b')];var _0x54304d=['accountidname',_0x1356('0x5c'),_0x1356('0x5d'),'billedserviceunits',_0x1356('0x5e'),_0x1356('0x5f'),'contractdetailidname','contractidname',_0x1356('0x60'),_0x1356('0x61'),_0x1356('0x62'),'createdbyyominame','createdon',_0x1356('0x63'),'createdonbehalfbyyominame','customeridname','customeridtype',_0x1356('0x64'),_0x1356('0x65'),_0x1356('0x66'),'entityimage_timestamp',_0x1356('0x67'),'escalatedon',_0x1356('0x68'),'firstresponsebykpiidname',_0x1356('0x69'),_0x1356('0x6a'),_0x1356('0x6b'),_0x1356('0x6c'),_0x1356('0x6d'),'masteridname',_0x1356('0x6e'),_0x1356('0x6f'),'modifiedbyname',_0x1356('0x70'),_0x1356('0x71'),_0x1356('0x72'),_0x1356('0x73'),_0x1356('0x74'),_0x1356('0x75'),_0x1356('0x76'),_0x1356('0x77'),_0x1356('0x78'),_0x1356('0x79'),_0x1356('0x7a'),_0x1356('0x7b'),_0x1356('0x7c'),'primarycontactidname',_0x1356('0x7d'),_0x1356('0x7e'),_0x1356('0x7f'),_0x1356('0x80'),_0x1356('0x81'),_0x1356('0x82'),_0x1356('0x83'),'responsiblecontactidname',_0x1356('0x84'),_0x1356('0x85'),'slainvokedidname',_0x1356('0x86'),_0x1356('0x87'),'statecode','statuscode',_0x1356('0x88'),_0x1356('0x89'),'timezoneruleversionnumber',_0x1356('0x8a'),'traversedpath',_0x1356('0x8b'),'versionnumber'];var _0x14a682=_0x3d27f0[_0x1356('0x8c')](_0x54304d);return db[_0x1356('0x2c')]['findOne']({'where':{'id':_0x2e2002[_0x1356('0x43')]['id']},'attributes':['id',_0x1356('0x8d'),'password',_0x1356('0x8e'),_0x1356('0x8f'),'clientId',_0x1356('0x90')]})[_0x1356('0x25')](handleEntityNotFound(_0x247610,null))[_0x1356('0x25')](function(_0x3a4530){if(_0x3a4530){_0x286b73=_0x3a4530[_0x1356('0x8e')];var _0x5bc58e=_0x286b73[_0x1356('0x91')](-0x1);if(_0x5bc58e==='/'){_0x286b73=_0x286b73[_0x1356('0x92')](0x0,_0x286b73['lastIndexOf'](_0x5bc58e));}_0x3a6be5=util['format']('%s/api/data/v9.0/',_0x286b73);var _0x3bafb4={'method':_0x1356('0x93'),'uri':_0x1356('0x94')+_0x3a4530[_0x1356('0x8f')]+_0x1356('0x95'),'form':{'client_id':_0x3a4530[_0x1356('0x96')],'resource':_0x286b73,'username':_0x3a4530[_0x1356('0x8d')],'password':_0x3a4530[_0x1356('0x97')],'grant_type':'password','client_secret':_0x3a4530[_0x1356('0x90')]},'json':!![]};return rp(_0x3bafb4);}})[_0x1356('0x25')](function(_0x64e5be){_0x570652=_0x64e5be[_0x1356('0x98')];var _0x159882={'method':_0x1356('0x99'),'uri':encodeURI(_0x3a6be5+_0x1356('0x9a')+_0x1d2a9f+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0x570652,'If-None-Match':null,'OData-Version':_0x1356('0x9b')},'json':!![]};return rp(_0x159882);})[_0x1356('0x25')](function(_0x141d5b){var _0x22ee07=_0x141d5b[_0x1356('0x9c')][0x0];var _0x54871d=_0x22ee07[_0x1356('0x9d')];var _0x40f9be={'method':'GET','uri':_0x3a6be5+_0x1356('0x9e')+_0x54871d+_0x1356('0x9f'),'headers':{'Authorization':_0x1356('0xa0')+_0x570652,'If-None-Match':null,'OData-Version':_0x1356('0x9b')},'json':!![]};return rp(_0x40f9be);})['then'](function(_0x3b38fc){_0x1a898d=_0x3b38fc;_0x2bb86a=_0x1a898d['Attributes'];_0x2bb86a=_[_0x1356('0xa1')](_0x2bb86a,function(_0x4da0ff){return!_0x14a682[_0x1356('0xa2')](_0x4da0ff[_0x1356('0xa3')]);});var _0x4ede24=[];var _0x5620f5=[];_0x2bb86a['forEach'](function(_0x49d2c6){if(_0x49d2c6['@odata.type']){var _0x41e9eb=_0x49d2c6[_0x1356('0xa4')][_0x1356('0x92')](_0x49d2c6['@odata.type']['lastIndexOf']('.')+0x1);if(_0x41e9eb===_0x1356('0xa5')){_0x4ede24[_0x1356('0xa6')](getSelectList(_0x3a6be5,_0x219695,_0x5620f5,_0x1a898d['MetadataId'],_0x49d2c6[_0x1356('0x9d')],_0x570652));}}});return Promise[_0x1356('0xa7')](_0x4ede24);})[_0x1356('0x25')](function(_0x464dee){_0x667135=_0x464dee[0x0];var _0x2fb2bf=[];var _0x2e19fb=[];_0x2bb86a[_0x1356('0xa8')](function(_0x5d60f6){if(!_[_0x1356('0xa9')](_0x5d60f6[_0x1356('0xa4')])){var _0x3d8b85=_0x5d60f6[_0x1356('0xa4')][_0x1356('0x92')](_0x5d60f6[_0x1356('0xa4')]['lastIndexOf']('.')+0x1);if(_0x3d8b85===_0x1356('0xaa')){_0x2fb2bf['push'](getBooleanList(_0x3a6be5,_0x219695,_0x2e19fb,_0x1a898d[_0x1356('0x9d')],_0x5d60f6[_0x1356('0x9d')],_0x570652));}}});return Promise[_0x1356('0xa7')](_0x2fb2bf);})[_0x1356('0x25')](function(_0x362f10){_0x3c920b=_0x362f10[0x0];var _0x1af402=[];var _0x38ba3d=[];_0x2bb86a[_0x1356('0xa8')](function(_0x37d23d){if(_0x37d23d[_0x1356('0xa4')]){var _0x3a71e6=_0x37d23d[_0x1356('0xa4')][_0x1356('0x92')](_0x37d23d['@odata.type']['lastIndexOf']('.')+0x1);if(_0x3a71e6===_0x1356('0xab')||_0x3a71e6===_0x1356('0xac')||_0x3a71e6===_0x1356('0xad')||_0x3a71e6===_0x1356('0xae')||_0x3a71e6===_0x1356('0xaf')||_0x3a71e6==='DateTimeAttributeMetadata'||_0x3a71e6===_0x1356('0xb0')||_0x3a71e6===_0x1356('0xb1')||_0x3a71e6===_0x1356('0xb2')||_0x3a71e6==='DecimalAttributeMetadata'){_0x1af402[_0x1356('0xa6')](getInputList(_0x3a6be5,_0x219695,_0x3a71e6,_0x38ba3d,_0x1a898d[_0x1356('0x9d')],_0x37d23d[_0x1356('0x9d')],_0x570652));}}});return Promise[_0x1356('0xa7')](_0x1af402);})[_0x1356('0x25')](function(_0x89bf5){_0x4bd596=_0x89bf5[0x0];var _0x3a554a=_0x667135[_0x1356('0x8c')](_0x3c920b)[_0x1356('0x8c')](_0x4bd596);var _0x32f681={'count':_0x3a554a[_0x1356('0x45')],'rows':_0x3a554a};return _0x32f681;})[_0x1356('0x25')](respondWithResult(_0x247610,null))[_0x1356('0x42')](function(_0xa5abbb){var _0xd68bf1=_0x2e2002['query'][_0x1356('0xb3')]?0x1f4:_0xa5abbb['statusCode']||0x1f4;logger[_0x1356('0x27')](_0xa5abbb['stack']);delete _0xa5abbb[_0x1356('0x29')];if(_0xd68bf1===0x191){_0xd68bf1=0x190;}_0x247610[_0x1356('0x1b')](_0xd68bf1)[_0x1356('0x2a')](_0x2e2002[_0x1356('0x31')][_0x1356('0xb3')]?{'message':_0x1356('0xb4'),'statusCode':_0xa5abbb['statusCode']}:_0xa5abbb);});};function getSelectList(_0x29f03c,_0x28d664,_0x308afc,_0x409751,_0x57b4ce,_0x2ff853){var _0xf52f2f={'method':_0x1356('0x99'),'uri':_0x29f03c+'EntityDefinitions('+_0x409751+_0x1356('0xb5')+_0x57b4ce+_0x1356('0xb6')+_0x1356('0xb7'),'headers':{'Authorization':_0x1356('0xa0')+_0x2ff853,'If-None-Match':null,'OData-Version':_0x1356('0x9b')},'json':!![]};return rp(_0xf52f2f)[_0x1356('0x25')](function(_0x4ca2c2){var _0x122202=[];var _0x3df36b=_0x4ca2c2['OptionSet'][_0x1356('0xb8')];_0x3df36b[_0x1356('0xa8')](function(_0x4c4a10){_0x122202[_0x1356('0xa6')]({'name':_0x4c4a10[_0x1356('0xb9')][_0x1356('0xba')][_0x1356('0xb9')],'value':String(_0x4c4a10[_0x1356('0xbb')])});});var _0x5b4ed4={'id':_0x28d664+'_'+_0x4ca2c2[_0x1356('0xa3')],'name':_0x4ca2c2['DisplayName'][_0x1356('0xba')]['Label'],'custom':![],'options':_0x122202};_0x308afc['push'](_0x5b4ed4);return _0x308afc;});}function getBooleanList(_0x5ac2be,_0x22875c,_0x5a9848,_0x2827ed,_0xfc50c3,_0x634d85){var _0x2d9d3={'method':'GET','uri':_0x5ac2be+_0x1356('0x9e')+_0x2827ed+_0x1356('0xb5')+_0xfc50c3+_0x1356('0xbc'),'headers':{'Authorization':_0x1356('0xa0')+_0x634d85,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x2d9d3)[_0x1356('0x25')](function(_0x1cafe7){var _0x164e03=[];_0x164e03[_0x1356('0xa6')]({'name':_0x1cafe7[_0x1356('0xbd')][_0x1356('0xbe')]['Label'][_0x1356('0xba')][_0x1356('0xb9')],'value':_0x1356('0xbf')},{'name':_0x1cafe7[_0x1356('0xbd')][_0x1356('0xc0')][_0x1356('0xb9')][_0x1356('0xba')][_0x1356('0xb9')],'value':'false'});var _0x2c8454={'id':_0x22875c+'_'+_0x1cafe7[_0x1356('0xa3')],'name':_0x1cafe7[_0x1356('0xc1')]['UserLocalizedLabel']['Label'],'custom':![],'options':_0x164e03};_0x5a9848[_0x1356('0xa6')](_0x2c8454);return _0x5a9848;});}function getInputList(_0x25ef3f,_0x12afb9,_0x5cd5a7,_0x363fb2,_0x4cbac5,_0xe2a6fe,_0x12088b){var _0x43020b={'method':_0x1356('0x99'),'uri':_0x25ef3f+_0x1356('0x9e')+_0x4cbac5+')/Attributes('+_0xe2a6fe+_0x1356('0xc2')+_0x5cd5a7+'?$select=DisplayName,LogicalName','headers':{'Authorization':_0x1356('0xa0')+_0x12088b,'If-None-Match':null,'OData-Version':_0x1356('0x9b')},'json':!![]};return rp(_0x43020b)[_0x1356('0x25')](function(_0x1ba44a){var _0x5b08e0={'id':_0x12afb9+'_'+_0x1ba44a[_0x1356('0xa3')],'name':_0x1ba44a[_0x1356('0xc1')][_0x1356('0xba')]?_0x1ba44a['DisplayName'][_0x1356('0xba')][_0x1356('0xb9')]:_0x1ba44a[_0x1356('0xa3')],'custom':![],'options':[]};_0x363fb2['push'](_0x5b08e0);return _0x363fb2;});}
\ No newline at end of file
index c29a1c6..7ef43db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['rimraf','./intDynamics365Account.attributes','../../components/integrations/configuration','Dynamics365Account','int_dynamics365_accounts','../../config/logger','api','moment','bluebird','path'];(function(_0xe7acee,_0x305b34){var _0x59a49f=function(_0x2e51b5){while(--_0x2e51b5){_0xe7acee['push'](_0xe7acee['shift']());}};_0x59a49f(++_0x305b34);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2842b4,_0x2b1b7b){_0x2842b4=_0x2842b4-0x0;var _0x2b9521=_0xcb91[_0x2842b4];return _0x2b9521;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));var integrations=require(_0x1cb9('0x7'));module['exports']=function(_0x226b69,_0x3f7deb){return _0x226b69['define'](_0x1cb9('0x8'),attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7e7=['int_dynamics365_accounts','lodash','../../config/logger','moment','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','define'];(function(_0x248b29,_0x346f40){var _0x5af959=function(_0x18bbcc){while(--_0x18bbcc){_0x248b29['push'](_0x248b29['shift']());}};_0x5af959(++_0x346f40);}(_0xb7e7,0x121));var _0x7b7e=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0xb7e7[_0x4d8ed9];return _0x1e2140;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x333fa4,_0x372bde){return _0x333fa4[_0x7b7e('0x7')]('Dynamics365Account',attributes,{'tableName':_0x7b7e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 53a7cf0..16ee9b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x762d=['../../mysqldb','../../config/utils','../../config/environment','jayson/promise','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','GetDynamics365Account','Dynamics365Account','findAll','options','include','map','model','attributes','stringify','find','raw','where','ShowDynamics365Account','lodash','util','bluebird','randomstring'];(function(_0x17615e,_0x483a49){var _0xa4c97e=function(_0x24ecf7){while(--_0x24ecf7){_0x17615e['push'](_0x17615e['shift']());}};_0xa4c97e(++_0x483a49);}(_0x762d,0xdc));var _0xd762=function(_0x2f221c,_0x23600d){_0x2f221c=_0x2f221c-0x0;var _0x596ea2=_0x762d[_0x2f221c];return _0x596ea2;};'use strict';var _=require(_0xd762('0x0'));var util=require(_0xd762('0x1'));var moment=require('moment');var BPromise=require(_0xd762('0x2'));var rs=require(_0xd762('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd762('0x4'))['db'];var utils=require(_0xd762('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xd762('0x6'));var jayson=require(_0xd762('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x44c311,_0x386f93,_0x48001d){return new BPromise(function(_0x1f8c5b,_0x53fa85){return client[_0xd762('0x8')](_0x44c311,_0x48001d)[_0xd762('0x9')](function(_0x2388c7){logger[_0xd762('0xa')](_0xd762('0xb'),_0x386f93,_0xd762('0xc'));logger[_0xd762('0xd')]('Dynamics365Account,\x20%s,\x20%s,\x20%s',_0x386f93,_0xd762('0xc'),JSON['stringify'](_0x2388c7));if(_0x2388c7[_0xd762('0xe')]){if(_0x2388c7[_0xd762('0xe')][_0xd762('0xf')]===0x1f4){logger[_0xd762('0xe')]('Dynamics365Account,\x20%s,\x20%s',_0x386f93,_0x2388c7['error'][_0xd762('0x10')]);return _0x53fa85(_0x2388c7[_0xd762('0xe')]['message']);}logger[_0xd762('0xe')](_0xd762('0xb'),_0x386f93,_0x2388c7['error'][_0xd762('0x10')]);return _0x1f8c5b(_0x2388c7[_0xd762('0xe')][_0xd762('0x10')]);}else{logger[_0xd762('0xa')](_0xd762('0xb'),_0x386f93,'request\x20sent');_0x1f8c5b(_0x2388c7[_0xd762('0x11')][_0xd762('0x10')]);}})[_0xd762('0x12')](function(_0x3f1211){logger[_0xd762('0xe')](_0xd762('0xb'),_0x386f93,_0x3f1211);_0x53fa85(_0x3f1211);});});}exports[_0xd762('0x13')]=function(_0x54e673){var _0x561e48=this;return new Promise(function(_0xc5ab1,_0x469631){return db[_0xd762('0x14')][_0xd762('0x15')]({'raw':_0x54e673[_0xd762('0x16')]?_0x54e673[_0xd762('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x54e673[_0xd762('0x16')]?_0x54e673['options']['where']||null:null,'attributes':_0x54e673[_0xd762('0x16')]?_0x54e673['options']['attributes']||null:null,'limit':_0x54e673[_0xd762('0x16')]?_0x54e673[_0xd762('0x16')]['limit']||null:null,'include':_0x54e673[_0xd762('0x16')]?_0x54e673['options'][_0xd762('0x17')]?_[_0xd762('0x18')](_0x54e673[_0xd762('0x16')][_0xd762('0x17')],function(_0x238233){return{'model':db[_0x238233[_0xd762('0x19')]],'as':_0x238233['as'],'attributes':_0x238233[_0xd762('0x1a')],'include':_0x238233['include']?_[_0xd762('0x18')](_0x238233['include'],function(_0xc9af28){return{'model':db[_0xc9af28['model']],'as':_0xc9af28['as'],'attributes':_0xc9af28[_0xd762('0x1a')],'include':_0xc9af28[_0xd762('0x17')]?_['map'](_0xc9af28['include'],function(_0x3aff7c){return{'model':db[_0x3aff7c['model']],'as':_0x3aff7c['as'],'attributes':_0x3aff7c[_0xd762('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xd762('0x9')](function(_0x1524c2){logger[_0xd762('0xa')]('GetDynamics365Account',_0x54e673);logger[_0xd762('0xd')](_0xd762('0x13'),_0x54e673,JSON[_0xd762('0x1b')](_0x1524c2));_0xc5ab1(_0x1524c2);})[_0xd762('0x12')](function(_0x32b3ce){logger[_0xd762('0xe')](_0xd762('0x13'),_0x32b3ce[_0xd762('0x10')],_0x54e673);_0x469631(_0x561e48[_0xd762('0xe')](0x1f4,_0x32b3ce[_0xd762('0x10')]));});});};exports['ShowDynamics365Account']=function(_0x18e27f){var _0x2851f6=this;return new Promise(function(_0x3b0ff6,_0x1b4967){return db[_0xd762('0x14')][_0xd762('0x1c')]({'raw':_0x18e27f[_0xd762('0x16')]?_0x18e27f[_0xd762('0x16')][_0xd762('0x1d')]===undefined?!![]:![]:!![],'where':_0x18e27f[_0xd762('0x16')]?_0x18e27f[_0xd762('0x16')][_0xd762('0x1e')]||null:null,'attributes':_0x18e27f[_0xd762('0x16')]?_0x18e27f[_0xd762('0x16')][_0xd762('0x1a')]||null:null,'include':_0x18e27f[_0xd762('0x16')]?_0x18e27f[_0xd762('0x16')][_0xd762('0x17')]?_[_0xd762('0x18')](_0x18e27f[_0xd762('0x16')][_0xd762('0x17')],function(_0x38a892){return{'model':db[_0x38a892[_0xd762('0x19')]],'as':_0x38a892['as'],'attributes':_0x38a892[_0xd762('0x1a')],'include':_0x38a892['include']?_[_0xd762('0x18')](_0x38a892[_0xd762('0x17')],function(_0x2f6e94){return{'model':db[_0x2f6e94[_0xd762('0x19')]],'as':_0x2f6e94['as'],'attributes':_0x2f6e94['attributes'],'include':_0x2f6e94['include']?_['map'](_0x2f6e94[_0xd762('0x17')],function(_0x2bca50){return{'model':db[_0x2bca50['model']],'as':_0x2bca50['as'],'attributes':_0x2bca50['attributes']};}):[]};}):[]};}):[]:[]})[_0xd762('0x9')](function(_0xe9f13a){logger[_0xd762('0xa')](_0xd762('0x1f'),_0x18e27f);logger['debug'](_0xd762('0x1f'),_0x18e27f,JSON[_0xd762('0x1b')](_0xe9f13a));_0x3b0ff6(_0xe9f13a);})[_0xd762('0x12')](function(_0x492cfc){logger[_0xd762('0xe')]('ShowDynamics365Account',_0x492cfc[_0xd762('0x10')],_0x18e27f);_0x1b4967(_0x2851f6[_0xd762('0xe')](0x1f4,_0x492cfc['message']));});});};
\ No newline at end of file
+var _0xdc20=['include','model','attributes','ShowDynamics365Account','moment','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','map'];(function(_0x18c923,_0x446ce7){var _0x209f1f=function(_0x9f42a4){while(--_0x9f42a4){_0x18c923['push'](_0x18c923['shift']());}};_0x209f1f(++_0x446ce7);}(_0xdc20,0x80));var _0x0dc2=function(_0x8e79ca,_0x1001f1){_0x8e79ca=_0x8e79ca-0x0;var _0x13f56b=_0xdc20[_0x8e79ca];return _0x13f56b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0dc2('0x0'));var BPromise=require('bluebird');var rs=require(_0x0dc2('0x1'));var fs=require('fs');var Redis=require(_0x0dc2('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x0dc2('0x3'));var logger=require('../../config/logger')('rpc');var config=require(_0x0dc2('0x4'));var jayson=require(_0x0dc2('0x5'));var client=jayson[_0x0dc2('0x6')][_0x0dc2('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x3479f5,_0x3aa1fe,_0x145e9c){return new BPromise(function(_0x432591,_0x542ca2){return client[_0x0dc2('0x8')](_0x3479f5,_0x145e9c)[_0x0dc2('0x9')](function(_0x450aa0){logger[_0x0dc2('0xa')](_0x0dc2('0xb'),_0x3aa1fe,_0x0dc2('0xc'));logger[_0x0dc2('0xd')]('Dynamics365Account,\x20%s,\x20%s,\x20%s',_0x3aa1fe,_0x0dc2('0xc'),JSON[_0x0dc2('0xe')](_0x450aa0));if(_0x450aa0[_0x0dc2('0xf')]){if(_0x450aa0[_0x0dc2('0xf')][_0x0dc2('0x10')]===0x1f4){logger['error'](_0x0dc2('0xb'),_0x3aa1fe,_0x450aa0['error']['message']);return _0x542ca2(_0x450aa0[_0x0dc2('0xf')][_0x0dc2('0x11')]);}logger[_0x0dc2('0xf')]('Dynamics365Account,\x20%s,\x20%s',_0x3aa1fe,_0x450aa0[_0x0dc2('0xf')][_0x0dc2('0x11')]);return _0x432591(_0x450aa0[_0x0dc2('0xf')][_0x0dc2('0x11')]);}else{logger[_0x0dc2('0xa')](_0x0dc2('0xb'),_0x3aa1fe,'request\x20sent');_0x432591(_0x450aa0[_0x0dc2('0x12')][_0x0dc2('0x11')]);}})[_0x0dc2('0x13')](function(_0x1a0c83){logger[_0x0dc2('0xf')](_0x0dc2('0xb'),_0x3aa1fe,_0x1a0c83);_0x542ca2(_0x1a0c83);});});}exports[_0x0dc2('0x14')]=function(_0x5e462d){var _0x8e3504=this;return new Promise(function(_0x2c5272,_0x39b9ba){return db[_0x0dc2('0x15')][_0x0dc2('0x16')]({'raw':_0x5e462d[_0x0dc2('0x17')]?_0x5e462d[_0x0dc2('0x17')][_0x0dc2('0x18')]===undefined?!![]:![]:!![],'where':_0x5e462d[_0x0dc2('0x17')]?_0x5e462d[_0x0dc2('0x17')][_0x0dc2('0x19')]||null:null,'attributes':_0x5e462d[_0x0dc2('0x17')]?_0x5e462d[_0x0dc2('0x17')]['attributes']||null:null,'limit':_0x5e462d['options']?_0x5e462d[_0x0dc2('0x17')]['limit']||null:null,'include':_0x5e462d[_0x0dc2('0x17')]?_0x5e462d[_0x0dc2('0x17')]['include']?_[_0x0dc2('0x1a')](_0x5e462d[_0x0dc2('0x17')][_0x0dc2('0x1b')],function(_0x5dd520){return{'model':db[_0x5dd520[_0x0dc2('0x1c')]],'as':_0x5dd520['as'],'attributes':_0x5dd520[_0x0dc2('0x1d')],'include':_0x5dd520['include']?_[_0x0dc2('0x1a')](_0x5dd520[_0x0dc2('0x1b')],function(_0x519d50){return{'model':db[_0x519d50[_0x0dc2('0x1c')]],'as':_0x519d50['as'],'attributes':_0x519d50[_0x0dc2('0x1d')],'include':_0x519d50['include']?_[_0x0dc2('0x1a')](_0x519d50['include'],function(_0x327ade){return{'model':db[_0x327ade['model']],'as':_0x327ade['as'],'attributes':_0x327ade[_0x0dc2('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x0dc2('0x9')](function(_0x204207){logger[_0x0dc2('0xa')](_0x0dc2('0x14'),_0x5e462d);logger[_0x0dc2('0xd')](_0x0dc2('0x14'),_0x5e462d,JSON[_0x0dc2('0xe')](_0x204207));_0x2c5272(_0x204207);})['catch'](function(_0x578c4b){logger[_0x0dc2('0xf')](_0x0dc2('0x14'),_0x578c4b['message'],_0x5e462d);_0x39b9ba(_0x8e3504['error'](0x1f4,_0x578c4b['message']));});});};exports['ShowDynamics365Account']=function(_0x5a07d0){var _0x5dea4c=this;return new Promise(function(_0xcb2a73,_0x2d4da7){return db['Dynamics365Account']['find']({'raw':_0x5a07d0[_0x0dc2('0x17')]?_0x5a07d0['options'][_0x0dc2('0x18')]===undefined?!![]:![]:!![],'where':_0x5a07d0['options']?_0x5a07d0['options'][_0x0dc2('0x19')]||null:null,'attributes':_0x5a07d0[_0x0dc2('0x17')]?_0x5a07d0['options'][_0x0dc2('0x1d')]||null:null,'include':_0x5a07d0[_0x0dc2('0x17')]?_0x5a07d0[_0x0dc2('0x17')][_0x0dc2('0x1b')]?_['map'](_0x5a07d0[_0x0dc2('0x17')][_0x0dc2('0x1b')],function(_0x579d46){return{'model':db[_0x579d46[_0x0dc2('0x1c')]],'as':_0x579d46['as'],'attributes':_0x579d46[_0x0dc2('0x1d')],'include':_0x579d46[_0x0dc2('0x1b')]?_[_0x0dc2('0x1a')](_0x579d46[_0x0dc2('0x1b')],function(_0x39f0fa){return{'model':db[_0x39f0fa[_0x0dc2('0x1c')]],'as':_0x39f0fa['as'],'attributes':_0x39f0fa[_0x0dc2('0x1d')],'include':_0x39f0fa[_0x0dc2('0x1b')]?_['map'](_0x39f0fa[_0x0dc2('0x1b')],function(_0x41ff07){return{'model':db[_0x41ff07[_0x0dc2('0x1c')]],'as':_0x41ff07['as'],'attributes':_0x41ff07[_0x0dc2('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x0dc2('0x9')](function(_0x1135d){logger['info'](_0x0dc2('0x1e'),_0x5a07d0);logger[_0x0dc2('0xd')](_0x0dc2('0x1e'),_0x5a07d0,JSON[_0x0dc2('0xe')](_0x1135d));_0xcb2a73(_0x1135d);})['catch'](function(_0x2804c4){logger[_0x0dc2('0xf')]('ShowDynamics365Account',_0x2804c4['message'],_0x5a07d0);_0x2d4da7(_0x5dea4c['error'](0x1f4,_0x2804c4[_0x0dc2('0x11')]));});});};
\ No newline at end of file
index 85bbddd..62dc944 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4d1=['exports','multer','util','path','express','../../components/auth/service','../../components/interaction/service','./intDynamics365Configuration.controller','get','isAuthenticated','/:id','show','/:id/fields','getSubjects','post','create','put','delete','destroy'];(function(_0x4d958f,_0x1ba867){var _0x5358d6=function(_0x343c3b){while(--_0x343c3b){_0x4d958f['push'](_0x4d958f['shift']());}};_0x5358d6(++_0x1ba867);}(_0xd4d1,0x86));var _0x1d4d=function(_0x4e121a,_0x146b95){_0x4e121a=_0x4e121a-0x0;var _0xe53492=_0xd4d1[_0x4e121a];return _0xe53492;};'use strict';var multer=require(_0x1d4d('0x0'));var util=require(_0x1d4d('0x1'));var path=require(_0x1d4d('0x2'));var timeout=require('connect-timeout');var express=require(_0x1d4d('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x1d4d('0x4'));var interaction=require(_0x1d4d('0x5'));var config=require('../../config/environment');var controller=require(_0x1d4d('0x6'));router[_0x1d4d('0x7')]('/',auth[_0x1d4d('0x8')](),controller['index']);router[_0x1d4d('0x7')](_0x1d4d('0x9'),auth[_0x1d4d('0x8')](),controller[_0x1d4d('0xa')]);router[_0x1d4d('0x7')](_0x1d4d('0xb'),auth[_0x1d4d('0x8')](),controller['getFields']);router['get']('/:id/subjects',auth[_0x1d4d('0x8')](),controller[_0x1d4d('0xc')]);router[_0x1d4d('0x7')]('/:id/descriptions',auth[_0x1d4d('0x8')](),controller['getDescriptions']);router[_0x1d4d('0xd')]('/',auth[_0x1d4d('0x8')](),controller[_0x1d4d('0xe')]);router[_0x1d4d('0xf')](_0x1d4d('0x9'),auth[_0x1d4d('0x8')](),controller['update']);router[_0x1d4d('0x10')]('/:id',auth[_0x1d4d('0x8')](),controller[_0x1d4d('0x11')]);module[_0x1d4d('0x12')]=router;
\ No newline at end of file
+var _0x6a95=['Router','fs-extra','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','index','/:id','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x767ca5,_0x1b956c){var _0x5afb41=function(_0xc5b064){while(--_0xc5b064){_0x767ca5['push'](_0x767ca5['shift']());}};_0x5afb41(++_0x1b956c);}(_0x6a95,0x1db));var _0x56a9=function(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0x6a95[_0x21aec3];return _0x288bbc;};'use strict';var multer=require(_0x56a9('0x0'));var util=require(_0x56a9('0x1'));var path=require(_0x56a9('0x2'));var timeout=require(_0x56a9('0x3'));var express=require(_0x56a9('0x4'));var router=express[_0x56a9('0x5')]();var fs_extra=require(_0x56a9('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x56a9('0x7'));var controller=require(_0x56a9('0x8'));router[_0x56a9('0x9')]('/',auth[_0x56a9('0xa')](),controller[_0x56a9('0xb')]);router[_0x56a9('0x9')](_0x56a9('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x56a9('0x9')](_0x56a9('0xd'),auth['isAuthenticated'](),controller[_0x56a9('0xe')]);router[_0x56a9('0x9')](_0x56a9('0xf'),auth[_0x56a9('0xa')](),controller[_0x56a9('0x10')]);router[_0x56a9('0x9')](_0x56a9('0x11'),auth[_0x56a9('0xa')](),controller[_0x56a9('0x12')]);router['post']('/',auth[_0x56a9('0xa')](),controller['create']);router[_0x56a9('0x13')](_0x56a9('0xc'),auth[_0x56a9('0xa')](),controller[_0x56a9('0x14')]);router[_0x56a9('0x15')](_0x56a9('0xc'),auth[_0x56a9('0xa')](),controller[_0x56a9('0x16')]);module[_0x56a9('0x17')]=router;
\ No newline at end of file
index c8bc84a..0d250dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fd2=['STRING','ENUM','incident','phonecall','sequelize','exports'];(function(_0x120339,_0x554c5e){var _0x49d6d3=function(_0x1de3a2){while(--_0x1de3a2){_0x120339['push'](_0x120339['shift']());}};_0x49d6d3(++_0x554c5e);}(_0x4fd2,0xbe));var _0x24fd=function(_0x25fa57,_0x13e828){_0x25fa57=_0x25fa57-0x0;var _0x4b1b87=_0x4fd2[_0x25fa57];return _0x4b1b87;};'use strict';var Sequelize=require(_0x24fd('0x0'));module[_0x24fd('0x1')]={'name':{'type':Sequelize[_0x24fd('0x2')]},'description':{'type':Sequelize[_0x24fd('0x2')]},'ticketType':{'type':Sequelize[_0x24fd('0x3')](_0x24fd('0x4'),_0x24fd('0x5')),'defaultValue':_0x24fd('0x4')}};
\ No newline at end of file
+var _0x62db=['ENUM','incident','phonecall','sequelize','exports','STRING'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x62db,0xc3));var _0xb62d=function(_0x3826ba,_0x4d70de){_0x3826ba=_0x3826ba-0x0;var _0x3084b7=_0x62db[_0x3826ba];return _0x3084b7;};'use strict';var Sequelize=require(_0xb62d('0x0'));module[_0xb62d('0x1')]={'name':{'type':Sequelize[_0xb62d('0x2')]},'description':{'type':Sequelize[_0xb62d('0x2')]},'ticketType':{'type':Sequelize[_0xb62d('0x3')](_0xb62d('0x4'),_0xb62d('0x5')),'defaultValue':'incident'}};
\ No newline at end of file
index 3240685..3f99d19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d85=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','sendStatus','error','stack','send','index','rawAttributes','fieldName','type','key','model','map','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','Dynamics365Configuration','include','rows','show','params','includeAll','find','catch','create','body','getFields','Dynamics365Field','getSubjects','findOne','pick','options','getDescriptions'];(function(_0x5d5d2c,_0x53a594){var _0x26e5ef=function(_0x448375){while(--_0x448375){_0x5d5d2c['push'](_0x5d5d2c['shift']());}};_0x26e5ef(++_0x53a594);}(_0x6d85,0xa2));var _0x56d8=function(_0x1b6ddf,_0x2e145d){_0x1b6ddf=_0x1b6ddf-0x0;var _0x3a567d=_0x6d85[_0x1b6ddf];return _0x3a567d;};'use strict';var emlformat=require(_0x56d8('0x0'));var rimraf=require(_0x56d8('0x1'));var zipdir=require(_0x56d8('0x2'));var jsonpatch=require(_0x56d8('0x3'));var rp=require(_0x56d8('0x4'));var moment=require('moment');var BPromise=require(_0x56d8('0x5'));var Mustache=require(_0x56d8('0x6'));var util=require(_0x56d8('0x7'));var path=require(_0x56d8('0x8'));var sox=require(_0x56d8('0x9'));var csv=require(_0x56d8('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x56d8('0xb'));var _=require(_0x56d8('0xc'));var squel=require(_0x56d8('0xd'));var crypto=require(_0x56d8('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x56d8('0xf'));var toCsv=require(_0x56d8('0xa'));var querystring=require(_0x56d8('0x10'));var Papa=require(_0x56d8('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x56d8('0x12'));var as=require(_0x56d8('0x13'));var hardwareService=require(_0x56d8('0x14'));var logger=require(_0x56d8('0x15'))(_0x56d8('0x16'));var utils=require(_0x56d8('0x17'));var config=require(_0x56d8('0x18'));var licenseUtil=require(_0x56d8('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x54a7db,_0x4328bc){_0x4328bc=_0x4328bc||0xcc;return function(_0xeee8cb){if(_0xeee8cb){return _0x54a7db['sendStatus'](_0x4328bc);}return _0x54a7db[_0x56d8('0x1a')](_0x4328bc)['end']();};}function respondWithResult(_0x301ce8,_0xd2eab7){_0xd2eab7=_0xd2eab7||0xc8;return function(_0x5d1fca){if(_0x5d1fca){return _0x301ce8['status'](_0xd2eab7)[_0x56d8('0x1b')](_0x5d1fca);}};}function respondWithFilteredResult(_0x46d4c1,_0x48b59c){return function(_0x839a83){if(_0x839a83){var _0xdcaaf1=typeof _0x48b59c[_0x56d8('0x1c')]===_0x56d8('0x1d')&&typeof _0x48b59c[_0x56d8('0x1e')]===_0x56d8('0x1d');var _0x32ad3e=_0x839a83['count'];var _0xeacd59=_0xdcaaf1?0x0:_0x48b59c[_0x56d8('0x1c')];var _0x516768=_0xdcaaf1?_0x839a83[_0x56d8('0x1f')]:_0x48b59c['offset']+_0x48b59c[_0x56d8('0x1e')];var _0x217bc3;if(_0x516768>=_0x32ad3e){_0x516768=_0x32ad3e;_0x217bc3=0xc8;}else{_0x217bc3=0xce;}_0x46d4c1[_0x56d8('0x1a')](_0x217bc3);return _0x46d4c1[_0x56d8('0x20')](_0x56d8('0x21'),_0xeacd59+'-'+_0x516768+'/'+_0x32ad3e)[_0x56d8('0x1b')](_0x839a83);}return null;};}function patchUpdates(_0x5242f6){return function(_0x4d1a2d){try{jsonpatch[_0x56d8('0x22')](_0x4d1a2d,_0x5242f6,!![]);}catch(_0xdfce5b){return BPromise['reject'](_0xdfce5b);}return _0x4d1a2d['save']();};}function saveUpdates(_0x589bcd,_0x57fa92){return function(_0xc4f7dc){if(_0xc4f7dc){return _0xc4f7dc[_0x56d8('0x23')](_0x589bcd)[_0x56d8('0x24')](function(_0x25edc8){return _0x25edc8;});}return null;};}function removeEntity(_0x55cff4,_0x18069a){return function(_0x17dd88){if(_0x17dd88){return _0x17dd88[_0x56d8('0x25')]()[_0x56d8('0x24')](function(){_0x55cff4[_0x56d8('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24ffd9,_0x4ff430){return function(_0x35beac){if(!_0x35beac){_0x24ffd9[_0x56d8('0x26')](0x194);}return _0x35beac;};}function handleError(_0x1fd46c,_0x1d9db1){_0x1d9db1=_0x1d9db1||0x1f4;return function(_0x3e69d5){logger[_0x56d8('0x27')](_0x3e69d5[_0x56d8('0x28')]);if(_0x3e69d5['name']){delete _0x3e69d5['name'];}_0x1fd46c[_0x56d8('0x1a')](_0x1d9db1)[_0x56d8('0x29')](_0x3e69d5);};}exports[_0x56d8('0x2a')]=function(_0x581713,_0x20898f){var _0x3267bf={},_0x463a9b={},_0x19d413={'count':0x0,'rows':[]};var _0x5a74e2=_['map'](db['Dynamics365Configuration'][_0x56d8('0x2b')],function(_0x333922){return{'name':_0x333922[_0x56d8('0x2c')],'type':_0x333922[_0x56d8('0x2d')][_0x56d8('0x2e')]};});_0x463a9b[_0x56d8('0x2f')]=_[_0x56d8('0x30')](_0x5a74e2,_0x56d8('0x31'));_0x463a9b[_0x56d8('0x32')]=_[_0x56d8('0x33')](_0x581713['query']);_0x463a9b[_0x56d8('0x34')]=_[_0x56d8('0x35')](_0x463a9b['model'],_0x463a9b[_0x56d8('0x32')]);_0x3267bf['attributes']=_[_0x56d8('0x35')](_0x463a9b[_0x56d8('0x2f')],qs[_0x56d8('0x36')](_0x581713[_0x56d8('0x32')]['fields']));_0x3267bf[_0x56d8('0x37')]=_0x3267bf[_0x56d8('0x37')][_0x56d8('0x38')]?_0x3267bf['attributes']:_0x463a9b[_0x56d8('0x2f')];if(!_0x581713['query'][_0x56d8('0x39')](_0x56d8('0x3a'))){_0x3267bf[_0x56d8('0x1e')]=qs[_0x56d8('0x1e')](_0x581713[_0x56d8('0x32')]['limit']);_0x3267bf[_0x56d8('0x1c')]=qs[_0x56d8('0x1c')](_0x581713[_0x56d8('0x32')][_0x56d8('0x1c')]);}_0x3267bf[_0x56d8('0x3b')]=qs[_0x56d8('0x3c')](_0x581713[_0x56d8('0x32')][_0x56d8('0x3c')]);_0x3267bf[_0x56d8('0x3d')]=qs[_0x56d8('0x34')](_['pick'](_0x581713[_0x56d8('0x32')],_0x463a9b[_0x56d8('0x34')]),_0x5a74e2);if(_0x581713['query'][_0x56d8('0x3e')]){_0x3267bf['where']=_['merge'](_0x3267bf[_0x56d8('0x3d')],{'$or':_[_0x56d8('0x30')](_0x5a74e2,function(_0x3c33a){if(_0x3c33a[_0x56d8('0x2d')]!=='VIRTUAL'){var _0x34b048={};_0x34b048[_0x3c33a[_0x56d8('0x31')]]={'$like':'%'+_0x581713[_0x56d8('0x32')][_0x56d8('0x3e')]+'%'};return _0x34b048;}})});}_0x3267bf=_[_0x56d8('0x3f')]({},_0x3267bf,_0x581713['options']);var _0x57743f={'where':_0x3267bf[_0x56d8('0x3d')]};return db[_0x56d8('0x40')]['count'](_0x57743f)[_0x56d8('0x24')](function(_0x4c350e){_0x19d413[_0x56d8('0x1f')]=_0x4c350e;if(_0x581713[_0x56d8('0x32')]['includeAll']){_0x3267bf[_0x56d8('0x41')]=[{'all':!![]}];}return db[_0x56d8('0x40')]['findAll'](_0x3267bf);})[_0x56d8('0x24')](function(_0x235a8f){_0x19d413[_0x56d8('0x42')]=_0x235a8f;return _0x19d413;})[_0x56d8('0x24')](respondWithFilteredResult(_0x20898f,_0x3267bf))['catch'](handleError(_0x20898f,null));};exports[_0x56d8('0x43')]=function(_0x1f679a,_0x123fe9){var _0x52b0d0={'raw':![],'where':{'id':_0x1f679a[_0x56d8('0x44')]['id']}},_0x596f4e={};_0x596f4e[_0x56d8('0x2f')]=_['keys'](db[_0x56d8('0x40')][_0x56d8('0x2b')]);_0x596f4e[_0x56d8('0x32')]=_[_0x56d8('0x33')](_0x1f679a[_0x56d8('0x32')]);_0x596f4e[_0x56d8('0x34')]=_[_0x56d8('0x35')](_0x596f4e[_0x56d8('0x2f')],_0x596f4e[_0x56d8('0x32')]);_0x52b0d0[_0x56d8('0x37')]=_[_0x56d8('0x35')](_0x596f4e['model'],qs[_0x56d8('0x36')](_0x1f679a['query'][_0x56d8('0x36')]));_0x52b0d0[_0x56d8('0x37')]=_0x52b0d0['attributes']['length']?_0x52b0d0['attributes']:_0x596f4e[_0x56d8('0x2f')];if(_0x1f679a[_0x56d8('0x32')][_0x56d8('0x45')]){_0x52b0d0['include']=[{'all':!![]}];}_0x52b0d0=_[_0x56d8('0x3f')]({},_0x52b0d0,_0x1f679a['options']);return db[_0x56d8('0x40')][_0x56d8('0x46')](_0x52b0d0)[_0x56d8('0x24')](handleEntityNotFound(_0x123fe9,null))[_0x56d8('0x24')](respondWithResult(_0x123fe9,null))[_0x56d8('0x47')](handleError(_0x123fe9,null));};exports['create']=function(_0x1287ee,_0x4e546a){return db['Dynamics365Configuration'][_0x56d8('0x48')](_0x1287ee[_0x56d8('0x49')],{})['then'](respondWithResult(_0x4e546a,0xc9))['catch'](handleError(_0x4e546a,null));};exports[_0x56d8('0x23')]=function(_0x17b4c5,_0x464da1){if(_0x17b4c5[_0x56d8('0x49')]['id']){delete _0x17b4c5[_0x56d8('0x49')]['id'];}return db[_0x56d8('0x40')][_0x56d8('0x46')]({'where':{'id':_0x17b4c5[_0x56d8('0x44')]['id']}})[_0x56d8('0x24')](handleEntityNotFound(_0x464da1,null))[_0x56d8('0x24')](saveUpdates(_0x17b4c5[_0x56d8('0x49')],null))[_0x56d8('0x24')](respondWithResult(_0x464da1,null))[_0x56d8('0x47')](handleError(_0x464da1,null));};exports[_0x56d8('0x25')]=function(_0x5aa7c3,_0x1b729e){return db[_0x56d8('0x40')][_0x56d8('0x46')]({'where':{'id':_0x5aa7c3[_0x56d8('0x44')]['id']}})['then'](handleEntityNotFound(_0x1b729e,null))[_0x56d8('0x24')](removeEntity(_0x1b729e,null))[_0x56d8('0x47')](handleError(_0x1b729e,null));};exports[_0x56d8('0x4a')]=function(_0x3c13d5,_0x2b1189,_0x120c7a){var _0x5f5338={};var _0x47c5a5={};var _0xad39de;var _0x359fc7;return db[_0x56d8('0x40')]['findOne']({'where':{'id':_0x3c13d5[_0x56d8('0x44')]['id']}})[_0x56d8('0x24')](handleEntityNotFound(_0x2b1189,null))[_0x56d8('0x24')](function(_0x2cbc13){if(_0x2cbc13){_0xad39de=_0x2cbc13;_0x47c5a5[_0x56d8('0x2f')]=_[_0x56d8('0x33')](db[_0x56d8('0x4b')][_0x56d8('0x2b')]);_0x47c5a5[_0x56d8('0x32')]=_['keys'](_0x3c13d5[_0x56d8('0x32')]);_0x47c5a5['filters']=_[_0x56d8('0x35')](_0x47c5a5['model'],_0x47c5a5[_0x56d8('0x32')]);_0x5f5338[_0x56d8('0x37')]=_[_0x56d8('0x35')](_0x47c5a5['model'],qs['fields'](_0x3c13d5[_0x56d8('0x32')][_0x56d8('0x36')]));_0x5f5338[_0x56d8('0x37')]=_0x5f5338['attributes'][_0x56d8('0x38')]?_0x5f5338['attributes']:_0x47c5a5[_0x56d8('0x2f')];_0x5f5338[_0x56d8('0x3b')]=qs[_0x56d8('0x3c')](_0x3c13d5['query'][_0x56d8('0x3c')]);_0x5f5338['where']=qs[_0x56d8('0x34')](_['pick'](_0x3c13d5[_0x56d8('0x32')],_0x47c5a5['filters']));if(_0x3c13d5[_0x56d8('0x32')][_0x56d8('0x3e')]){_0x5f5338['where']=_['merge'](_0x5f5338['where'],{'$or':_[_0x56d8('0x30')](_0x5f5338[_0x56d8('0x37')],function(_0x5641e5){var _0x903ce3={};_0x903ce3[_0x5641e5]={'$like':'%'+_0x3c13d5[_0x56d8('0x32')][_0x56d8('0x3e')]+'%'};return _0x903ce3;})});}_0x5f5338=_['merge']({},_0x5f5338,_0x3c13d5['options']);return _0xad39de[_0x56d8('0x4a')](_0x5f5338);}})[_0x56d8('0x24')](function(_0x395d10){if(_0x395d10){_0x359fc7=_0x395d10['length'];if(!_0x3c13d5[_0x56d8('0x32')][_0x56d8('0x39')](_0x56d8('0x3a'))){_0x5f5338[_0x56d8('0x1e')]=qs[_0x56d8('0x1e')](_0x3c13d5['query'][_0x56d8('0x1e')]);_0x5f5338['offset']=qs['offset'](_0x3c13d5[_0x56d8('0x32')][_0x56d8('0x1c')]);}return _0xad39de[_0x56d8('0x4a')](_0x5f5338);}})[_0x56d8('0x24')](function(_0x1a27a4){if(_0x1a27a4){return _0x1a27a4?{'count':_0x359fc7,'rows':_0x1a27a4}:null;}})[_0x56d8('0x24')](respondWithResult(_0x2b1189,null))[_0x56d8('0x47')](handleError(_0x2b1189,null));};exports[_0x56d8('0x4c')]=function(_0x5031e5,_0x4ea5e6,_0x3014d2){var _0x4955a0={};var _0xd11f69={};var _0x209d81;var _0x3aadd8;return db[_0x56d8('0x40')][_0x56d8('0x4d')]({'where':{'id':_0x5031e5[_0x56d8('0x44')]['id']}})['then'](handleEntityNotFound(_0x4ea5e6,null))[_0x56d8('0x24')](function(_0x5efb33){if(_0x5efb33){_0x209d81=_0x5efb33;_0xd11f69[_0x56d8('0x2f')]=_[_0x56d8('0x33')](db[_0x56d8('0x4b')][_0x56d8('0x2b')]);_0xd11f69[_0x56d8('0x32')]=_[_0x56d8('0x33')](_0x5031e5[_0x56d8('0x32')]);_0xd11f69[_0x56d8('0x34')]=_['intersection'](_0xd11f69[_0x56d8('0x2f')],_0xd11f69[_0x56d8('0x32')]);_0x4955a0['attributes']=_[_0x56d8('0x35')](_0xd11f69[_0x56d8('0x2f')],qs['fields'](_0x5031e5[_0x56d8('0x32')][_0x56d8('0x36')]));_0x4955a0[_0x56d8('0x37')]=_0x4955a0[_0x56d8('0x37')][_0x56d8('0x38')]?_0x4955a0['attributes']:_0xd11f69[_0x56d8('0x2f')];_0x4955a0[_0x56d8('0x3b')]=qs['sort'](_0x5031e5[_0x56d8('0x32')]['sort']);_0x4955a0[_0x56d8('0x3d')]=qs[_0x56d8('0x34')](_[_0x56d8('0x4e')](_0x5031e5[_0x56d8('0x32')],_0xd11f69['filters']));if(_0x5031e5[_0x56d8('0x32')][_0x56d8('0x3e')]){_0x4955a0[_0x56d8('0x3d')]=_[_0x56d8('0x3f')](_0x4955a0['where'],{'$or':_[_0x56d8('0x30')](_0x4955a0[_0x56d8('0x37')],function(_0xc5bc47){var _0x210149={};_0x210149[_0xc5bc47]={'$like':'%'+_0x5031e5['query'][_0x56d8('0x3e')]+'%'};return _0x210149;})});}_0x4955a0=_['merge']({},_0x4955a0,_0x5031e5[_0x56d8('0x4f')]);return _0x209d81[_0x56d8('0x4c')](_0x4955a0);}})[_0x56d8('0x24')](function(_0x209150){if(_0x209150){_0x3aadd8=_0x209150['length'];if(!_0x5031e5['query']['hasOwnProperty']('nolimit')){_0x4955a0[_0x56d8('0x1e')]=qs['limit'](_0x5031e5[_0x56d8('0x32')][_0x56d8('0x1e')]);_0x4955a0[_0x56d8('0x1c')]=qs[_0x56d8('0x1c')](_0x5031e5['query'][_0x56d8('0x1c')]);}return _0x209d81[_0x56d8('0x4c')](_0x4955a0);}})[_0x56d8('0x24')](function(_0x1426e0){if(_0x1426e0){return _0x1426e0?{'count':_0x3aadd8,'rows':_0x1426e0}:null;}})['then'](respondWithResult(_0x4ea5e6,null))['catch'](handleError(_0x4ea5e6,null));};exports[_0x56d8('0x50')]=function(_0x286768,_0x17c777,_0x10b9ef){var _0x1afeea={};var _0x31e30c={};var _0x137607;var _0x4ca81e;return db[_0x56d8('0x40')][_0x56d8('0x4d')]({'where':{'id':_0x286768[_0x56d8('0x44')]['id']}})[_0x56d8('0x24')](handleEntityNotFound(_0x17c777,null))[_0x56d8('0x24')](function(_0x130846){if(_0x130846){_0x137607=_0x130846;_0x31e30c['model']=_[_0x56d8('0x33')](db['Dynamics365Field']['rawAttributes']);_0x31e30c['query']=_[_0x56d8('0x33')](_0x286768['query']);_0x31e30c[_0x56d8('0x34')]=_[_0x56d8('0x35')](_0x31e30c[_0x56d8('0x2f')],_0x31e30c[_0x56d8('0x32')]);_0x1afeea[_0x56d8('0x37')]=_[_0x56d8('0x35')](_0x31e30c[_0x56d8('0x2f')],qs['fields'](_0x286768[_0x56d8('0x32')][_0x56d8('0x36')]));_0x1afeea[_0x56d8('0x37')]=_0x1afeea[_0x56d8('0x37')][_0x56d8('0x38')]?_0x1afeea[_0x56d8('0x37')]:_0x31e30c['model'];_0x1afeea[_0x56d8('0x3b')]=qs[_0x56d8('0x3c')](_0x286768['query'][_0x56d8('0x3c')]);_0x1afeea[_0x56d8('0x3d')]=qs[_0x56d8('0x34')](_[_0x56d8('0x4e')](_0x286768[_0x56d8('0x32')],_0x31e30c[_0x56d8('0x34')]));if(_0x286768[_0x56d8('0x32')][_0x56d8('0x3e')]){_0x1afeea[_0x56d8('0x3d')]=_[_0x56d8('0x3f')](_0x1afeea[_0x56d8('0x3d')],{'$or':_[_0x56d8('0x30')](_0x1afeea['attributes'],function(_0x46f277){var _0x2f35e0={};_0x2f35e0[_0x46f277]={'$like':'%'+_0x286768['query']['filter']+'%'};return _0x2f35e0;})});}_0x1afeea=_[_0x56d8('0x3f')]({},_0x1afeea,_0x286768[_0x56d8('0x4f')]);return _0x137607[_0x56d8('0x50')](_0x1afeea);}})[_0x56d8('0x24')](function(_0x9302a5){if(_0x9302a5){_0x4ca81e=_0x9302a5['length'];if(!_0x286768[_0x56d8('0x32')][_0x56d8('0x39')](_0x56d8('0x3a'))){_0x1afeea['limit']=qs[_0x56d8('0x1e')](_0x286768[_0x56d8('0x32')][_0x56d8('0x1e')]);_0x1afeea[_0x56d8('0x1c')]=qs['offset'](_0x286768['query']['offset']);}return _0x137607[_0x56d8('0x50')](_0x1afeea);}})['then'](function(_0x304951){if(_0x304951){return _0x304951?{'count':_0x4ca81e,'rows':_0x304951}:null;}})[_0x56d8('0x24')](respondWithResult(_0x17c777,null))[_0x56d8('0x47')](handleError(_0x17c777,null));};
\ No newline at end of file
+var _0x15f1=['intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','find','create','body','params','getFields','findOne','Dynamics365Field','pick','getSubjects','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','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','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','Dynamics365Configuration','rawAttributes','model','query','keys','filters'];(function(_0x3f1246,_0x4be302){var _0x5ee834=function(_0x2eec23){while(--_0x2eec23){_0x3f1246['push'](_0x3f1246['shift']());}};_0x5ee834(++_0x4be302);}(_0x15f1,0x17a));var _0x115f=function(_0x3ca809,_0x13cf67){_0x3ca809=_0x3ca809-0x0;var _0x12ecb0=_0x15f1[_0x3ca809];return _0x12ecb0;};'use strict';var emlformat=require(_0x115f('0x0'));var rimraf=require(_0x115f('0x1'));var zipdir=require(_0x115f('0x2'));var jsonpatch=require(_0x115f('0x3'));var rp=require(_0x115f('0x4'));var moment=require(_0x115f('0x5'));var BPromise=require(_0x115f('0x6'));var Mustache=require(_0x115f('0x7'));var util=require(_0x115f('0x8'));var path=require(_0x115f('0x9'));var sox=require(_0x115f('0xa'));var csv=require(_0x115f('0xb'));var ejs=require(_0x115f('0xc'));var fs=require('fs');var fs_extra=require(_0x115f('0xd'));var _=require(_0x115f('0xe'));var squel=require(_0x115f('0xf'));var crypto=require(_0x115f('0x10'));var jsforce=require(_0x115f('0x11'));var deskjs=require(_0x115f('0x12'));var toCsv=require(_0x115f('0xb'));var querystring=require('querystring');var Papa=require(_0x115f('0x13'));var Redis=require(_0x115f('0x14'));var authService=require(_0x115f('0x15'));var qs=require(_0x115f('0x16'));var as=require(_0x115f('0x17'));var hardwareService=require(_0x115f('0x18'));var logger=require('../../config/logger')(_0x115f('0x19'));var utils=require(_0x115f('0x1a'));var config=require(_0x115f('0x1b'));var licenseUtil=require(_0x115f('0x1c'));var db=require(_0x115f('0x1d'))['db'];function respondWithStatusCode(_0x585572,_0x5d7e6b){_0x5d7e6b=_0x5d7e6b||0xcc;return function(_0x46a160){if(_0x46a160){return _0x585572['sendStatus'](_0x5d7e6b);}return _0x585572[_0x115f('0x1e')](_0x5d7e6b)[_0x115f('0x1f')]();};}function respondWithResult(_0x1056bb,_0x1e9282){_0x1e9282=_0x1e9282||0xc8;return function(_0x37ab3d){if(_0x37ab3d){return _0x1056bb[_0x115f('0x1e')](_0x1e9282)[_0x115f('0x20')](_0x37ab3d);}};}function respondWithFilteredResult(_0xca86c,_0x5ea2b9){return function(_0x2182fa){if(_0x2182fa){var _0x125175=typeof _0x5ea2b9[_0x115f('0x21')]===_0x115f('0x22')&&typeof _0x5ea2b9['limit']===_0x115f('0x22');var _0x183fcd=_0x2182fa['count'];var _0x5bc694=_0x125175?0x0:_0x5ea2b9[_0x115f('0x21')];var _0x303c1e=_0x125175?_0x2182fa['count']:_0x5ea2b9[_0x115f('0x21')]+_0x5ea2b9[_0x115f('0x23')];var _0xab17ea;if(_0x303c1e>=_0x183fcd){_0x303c1e=_0x183fcd;_0xab17ea=0xc8;}else{_0xab17ea=0xce;}_0xca86c[_0x115f('0x1e')](_0xab17ea);return _0xca86c[_0x115f('0x24')](_0x115f('0x25'),_0x5bc694+'-'+_0x303c1e+'/'+_0x183fcd)[_0x115f('0x20')](_0x2182fa);}return null;};}function patchUpdates(_0x49228a){return function(_0x37b648){try{jsonpatch[_0x115f('0x26')](_0x37b648,_0x49228a,!![]);}catch(_0x445f71){return BPromise[_0x115f('0x27')](_0x445f71);}return _0x37b648[_0x115f('0x28')]();};}function saveUpdates(_0x264a95,_0x5a4a63){return function(_0x4b1c1c){if(_0x4b1c1c){return _0x4b1c1c[_0x115f('0x29')](_0x264a95)[_0x115f('0x2a')](function(_0x34a66d){return _0x34a66d;});}return null;};}function removeEntity(_0x352fa6,_0x59cfdb){return function(_0x53d903){if(_0x53d903){return _0x53d903[_0x115f('0x2b')]()[_0x115f('0x2a')](function(){_0x352fa6[_0x115f('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ba3dc,_0x179aa8){return function(_0x23d505){if(!_0x23d505){_0x5ba3dc[_0x115f('0x2c')](0x194);}return _0x23d505;};}function handleError(_0x5cee68,_0x1b6885){_0x1b6885=_0x1b6885||0x1f4;return function(_0x2cfc10){logger[_0x115f('0x2d')](_0x2cfc10[_0x115f('0x2e')]);if(_0x2cfc10['name']){delete _0x2cfc10[_0x115f('0x2f')];}_0x5cee68[_0x115f('0x1e')](_0x1b6885)[_0x115f('0x30')](_0x2cfc10);};}exports[_0x115f('0x31')]=function(_0x4b3c44,_0x2e1e33){var _0x4e5b15={},_0x1391bd={},_0x33bc88={'count':0x0,'rows':[]};var _0x242a69=_[_0x115f('0x32')](db[_0x115f('0x33')][_0x115f('0x34')],function(_0x1cf91e){return{'name':_0x1cf91e['fieldName'],'type':_0x1cf91e['type']['key']};});_0x1391bd[_0x115f('0x35')]=_['map'](_0x242a69,_0x115f('0x2f'));_0x1391bd[_0x115f('0x36')]=_[_0x115f('0x37')](_0x4b3c44[_0x115f('0x36')]);_0x1391bd[_0x115f('0x38')]=_[_0x115f('0x39')](_0x1391bd[_0x115f('0x35')],_0x1391bd['query']);_0x4e5b15['attributes']=_[_0x115f('0x39')](_0x1391bd[_0x115f('0x35')],qs[_0x115f('0x3a')](_0x4b3c44['query'][_0x115f('0x3a')]));_0x4e5b15['attributes']=_0x4e5b15[_0x115f('0x3b')][_0x115f('0x3c')]?_0x4e5b15[_0x115f('0x3b')]:_0x1391bd[_0x115f('0x35')];if(!_0x4b3c44[_0x115f('0x36')][_0x115f('0x3d')](_0x115f('0x3e'))){_0x4e5b15[_0x115f('0x23')]=qs[_0x115f('0x23')](_0x4b3c44['query'][_0x115f('0x23')]);_0x4e5b15[_0x115f('0x21')]=qs[_0x115f('0x21')](_0x4b3c44[_0x115f('0x36')][_0x115f('0x21')]);}_0x4e5b15[_0x115f('0x3f')]=qs[_0x115f('0x40')](_0x4b3c44[_0x115f('0x36')][_0x115f('0x40')]);_0x4e5b15[_0x115f('0x41')]=qs[_0x115f('0x38')](_['pick'](_0x4b3c44[_0x115f('0x36')],_0x1391bd[_0x115f('0x38')]),_0x242a69);if(_0x4b3c44['query'][_0x115f('0x42')]){_0x4e5b15[_0x115f('0x41')]=_[_0x115f('0x43')](_0x4e5b15[_0x115f('0x41')],{'$or':_[_0x115f('0x32')](_0x242a69,function(_0x3b57ca){if(_0x3b57ca['type']!==_0x115f('0x44')){var _0x5b2380={};_0x5b2380[_0x3b57ca['name']]={'$like':'%'+_0x4b3c44[_0x115f('0x36')][_0x115f('0x42')]+'%'};return _0x5b2380;}})});}_0x4e5b15=_[_0x115f('0x43')]({},_0x4e5b15,_0x4b3c44[_0x115f('0x45')]);var _0x2f31b2={'where':_0x4e5b15[_0x115f('0x41')]};return db[_0x115f('0x33')][_0x115f('0x46')](_0x2f31b2)[_0x115f('0x2a')](function(_0x13113a){_0x33bc88[_0x115f('0x46')]=_0x13113a;if(_0x4b3c44['query'][_0x115f('0x47')]){_0x4e5b15[_0x115f('0x48')]=[{'all':!![]}];}return db[_0x115f('0x33')][_0x115f('0x49')](_0x4e5b15);})['then'](function(_0x1b6b33){_0x33bc88[_0x115f('0x4a')]=_0x1b6b33;return _0x33bc88;})['then'](respondWithFilteredResult(_0x2e1e33,_0x4e5b15))[_0x115f('0x4b')](handleError(_0x2e1e33,null));};exports[_0x115f('0x4c')]=function(_0x350c08,_0x48eb10){var _0x60660c={'raw':![],'where':{'id':_0x350c08['params']['id']}},_0x5c7d2c={};_0x5c7d2c[_0x115f('0x35')]=_[_0x115f('0x37')](db[_0x115f('0x33')][_0x115f('0x34')]);_0x5c7d2c[_0x115f('0x36')]=_['keys'](_0x350c08[_0x115f('0x36')]);_0x5c7d2c[_0x115f('0x38')]=_['intersection'](_0x5c7d2c[_0x115f('0x35')],_0x5c7d2c[_0x115f('0x36')]);_0x60660c['attributes']=_[_0x115f('0x39')](_0x5c7d2c[_0x115f('0x35')],qs[_0x115f('0x3a')](_0x350c08['query'][_0x115f('0x3a')]));_0x60660c[_0x115f('0x3b')]=_0x60660c['attributes'][_0x115f('0x3c')]?_0x60660c[_0x115f('0x3b')]:_0x5c7d2c['model'];if(_0x350c08[_0x115f('0x36')][_0x115f('0x47')]){_0x60660c[_0x115f('0x48')]=[{'all':!![]}];}_0x60660c=_[_0x115f('0x43')]({},_0x60660c,_0x350c08[_0x115f('0x45')]);return db[_0x115f('0x33')][_0x115f('0x4d')](_0x60660c)[_0x115f('0x2a')](handleEntityNotFound(_0x48eb10,null))[_0x115f('0x2a')](respondWithResult(_0x48eb10,null))[_0x115f('0x4b')](handleError(_0x48eb10,null));};exports[_0x115f('0x4e')]=function(_0x219106,_0xce6425){return db[_0x115f('0x33')]['create'](_0x219106[_0x115f('0x4f')],{})[_0x115f('0x2a')](respondWithResult(_0xce6425,0xc9))[_0x115f('0x4b')](handleError(_0xce6425,null));};exports['update']=function(_0x175bd1,_0x22613c){if(_0x175bd1[_0x115f('0x4f')]['id']){delete _0x175bd1['body']['id'];}return db['Dynamics365Configuration'][_0x115f('0x4d')]({'where':{'id':_0x175bd1[_0x115f('0x50')]['id']}})[_0x115f('0x2a')](handleEntityNotFound(_0x22613c,null))['then'](saveUpdates(_0x175bd1[_0x115f('0x4f')],null))[_0x115f('0x2a')](respondWithResult(_0x22613c,null))[_0x115f('0x4b')](handleError(_0x22613c,null));};exports[_0x115f('0x2b')]=function(_0x36ed5a,_0x51b045){return db[_0x115f('0x33')]['find']({'where':{'id':_0x36ed5a[_0x115f('0x50')]['id']}})[_0x115f('0x2a')](handleEntityNotFound(_0x51b045,null))['then'](removeEntity(_0x51b045,null))[_0x115f('0x4b')](handleError(_0x51b045,null));};exports[_0x115f('0x51')]=function(_0x19ab34,_0x357356,_0x1ef5df){var _0xa2330c={};var _0x1c01dd={};var _0x3c0ec1;var _0x2e49b2;return db['Dynamics365Configuration'][_0x115f('0x52')]({'where':{'id':_0x19ab34[_0x115f('0x50')]['id']}})[_0x115f('0x2a')](handleEntityNotFound(_0x357356,null))['then'](function(_0x9bdf50){if(_0x9bdf50){_0x3c0ec1=_0x9bdf50;_0x1c01dd['model']=_[_0x115f('0x37')](db[_0x115f('0x53')]['rawAttributes']);_0x1c01dd[_0x115f('0x36')]=_[_0x115f('0x37')](_0x19ab34['query']);_0x1c01dd['filters']=_['intersection'](_0x1c01dd[_0x115f('0x35')],_0x1c01dd[_0x115f('0x36')]);_0xa2330c['attributes']=_['intersection'](_0x1c01dd[_0x115f('0x35')],qs[_0x115f('0x3a')](_0x19ab34['query'][_0x115f('0x3a')]));_0xa2330c[_0x115f('0x3b')]=_0xa2330c[_0x115f('0x3b')][_0x115f('0x3c')]?_0xa2330c[_0x115f('0x3b')]:_0x1c01dd[_0x115f('0x35')];_0xa2330c[_0x115f('0x3f')]=qs[_0x115f('0x40')](_0x19ab34[_0x115f('0x36')][_0x115f('0x40')]);_0xa2330c[_0x115f('0x41')]=qs[_0x115f('0x38')](_[_0x115f('0x54')](_0x19ab34[_0x115f('0x36')],_0x1c01dd[_0x115f('0x38')]));if(_0x19ab34[_0x115f('0x36')]['filter']){_0xa2330c[_0x115f('0x41')]=_[_0x115f('0x43')](_0xa2330c[_0x115f('0x41')],{'$or':_[_0x115f('0x32')](_0xa2330c[_0x115f('0x3b')],function(_0xd9e5e3){var _0x5af2ff={};_0x5af2ff[_0xd9e5e3]={'$like':'%'+_0x19ab34[_0x115f('0x36')][_0x115f('0x42')]+'%'};return _0x5af2ff;})});}_0xa2330c=_['merge']({},_0xa2330c,_0x19ab34[_0x115f('0x45')]);return _0x3c0ec1[_0x115f('0x51')](_0xa2330c);}})[_0x115f('0x2a')](function(_0x26a7c5){if(_0x26a7c5){_0x2e49b2=_0x26a7c5['length'];if(!_0x19ab34[_0x115f('0x36')][_0x115f('0x3d')](_0x115f('0x3e'))){_0xa2330c[_0x115f('0x23')]=qs['limit'](_0x19ab34[_0x115f('0x36')][_0x115f('0x23')]);_0xa2330c[_0x115f('0x21')]=qs['offset'](_0x19ab34['query'][_0x115f('0x21')]);}return _0x3c0ec1[_0x115f('0x51')](_0xa2330c);}})[_0x115f('0x2a')](function(_0x5e8cd6){if(_0x5e8cd6){return _0x5e8cd6?{'count':_0x2e49b2,'rows':_0x5e8cd6}:null;}})[_0x115f('0x2a')](respondWithResult(_0x357356,null))['catch'](handleError(_0x357356,null));};exports['getSubjects']=function(_0xea4ed1,_0x4925ba,_0x46ba74){var _0x252d91={};var _0x3890a9={};var _0x20df56;var _0x118226;return db[_0x115f('0x33')]['findOne']({'where':{'id':_0xea4ed1[_0x115f('0x50')]['id']}})['then'](handleEntityNotFound(_0x4925ba,null))[_0x115f('0x2a')](function(_0x2477e9){if(_0x2477e9){_0x20df56=_0x2477e9;_0x3890a9['model']=_[_0x115f('0x37')](db[_0x115f('0x53')]['rawAttributes']);_0x3890a9[_0x115f('0x36')]=_[_0x115f('0x37')](_0xea4ed1['query']);_0x3890a9[_0x115f('0x38')]=_[_0x115f('0x39')](_0x3890a9[_0x115f('0x35')],_0x3890a9[_0x115f('0x36')]);_0x252d91[_0x115f('0x3b')]=_['intersection'](_0x3890a9['model'],qs['fields'](_0xea4ed1[_0x115f('0x36')]['fields']));_0x252d91[_0x115f('0x3b')]=_0x252d91['attributes'][_0x115f('0x3c')]?_0x252d91['attributes']:_0x3890a9[_0x115f('0x35')];_0x252d91[_0x115f('0x3f')]=qs[_0x115f('0x40')](_0xea4ed1[_0x115f('0x36')][_0x115f('0x40')]);_0x252d91[_0x115f('0x41')]=qs[_0x115f('0x38')](_['pick'](_0xea4ed1[_0x115f('0x36')],_0x3890a9[_0x115f('0x38')]));if(_0xea4ed1[_0x115f('0x36')]['filter']){_0x252d91[_0x115f('0x41')]=_[_0x115f('0x43')](_0x252d91[_0x115f('0x41')],{'$or':_['map'](_0x252d91[_0x115f('0x3b')],function(_0x7b50e8){var _0x412053={};_0x412053[_0x7b50e8]={'$like':'%'+_0xea4ed1[_0x115f('0x36')][_0x115f('0x42')]+'%'};return _0x412053;})});}_0x252d91=_['merge']({},_0x252d91,_0xea4ed1[_0x115f('0x45')]);return _0x20df56[_0x115f('0x55')](_0x252d91);}})[_0x115f('0x2a')](function(_0x1f7fec){if(_0x1f7fec){_0x118226=_0x1f7fec['length'];if(!_0xea4ed1[_0x115f('0x36')][_0x115f('0x3d')]('nolimit')){_0x252d91['limit']=qs[_0x115f('0x23')](_0xea4ed1[_0x115f('0x36')][_0x115f('0x23')]);_0x252d91[_0x115f('0x21')]=qs[_0x115f('0x21')](_0xea4ed1[_0x115f('0x36')][_0x115f('0x21')]);}return _0x20df56[_0x115f('0x55')](_0x252d91);}})['then'](function(_0x2e87bc){if(_0x2e87bc){return _0x2e87bc?{'count':_0x118226,'rows':_0x2e87bc}:null;}})[_0x115f('0x2a')](respondWithResult(_0x4925ba,null))[_0x115f('0x4b')](handleError(_0x4925ba,null));};exports[_0x115f('0x56')]=function(_0x2930e8,_0x3dbc2e,_0x1c44cd){var _0x34fa7a={};var _0x42ad8e={};var _0x43df78;var _0x2a2486;return db[_0x115f('0x33')]['findOne']({'where':{'id':_0x2930e8['params']['id']}})['then'](handleEntityNotFound(_0x3dbc2e,null))[_0x115f('0x2a')](function(_0x61b1cc){if(_0x61b1cc){_0x43df78=_0x61b1cc;_0x42ad8e[_0x115f('0x35')]=_[_0x115f('0x37')](db['Dynamics365Field']['rawAttributes']);_0x42ad8e[_0x115f('0x36')]=_['keys'](_0x2930e8[_0x115f('0x36')]);_0x42ad8e[_0x115f('0x38')]=_['intersection'](_0x42ad8e['model'],_0x42ad8e[_0x115f('0x36')]);_0x34fa7a[_0x115f('0x3b')]=_[_0x115f('0x39')](_0x42ad8e[_0x115f('0x35')],qs[_0x115f('0x3a')](_0x2930e8[_0x115f('0x36')]['fields']));_0x34fa7a[_0x115f('0x3b')]=_0x34fa7a['attributes'][_0x115f('0x3c')]?_0x34fa7a[_0x115f('0x3b')]:_0x42ad8e[_0x115f('0x35')];_0x34fa7a[_0x115f('0x3f')]=qs['sort'](_0x2930e8[_0x115f('0x36')]['sort']);_0x34fa7a['where']=qs[_0x115f('0x38')](_[_0x115f('0x54')](_0x2930e8[_0x115f('0x36')],_0x42ad8e['filters']));if(_0x2930e8[_0x115f('0x36')][_0x115f('0x42')]){_0x34fa7a[_0x115f('0x41')]=_[_0x115f('0x43')](_0x34fa7a[_0x115f('0x41')],{'$or':_[_0x115f('0x32')](_0x34fa7a[_0x115f('0x3b')],function(_0x362e39){var _0x2db653={};_0x2db653[_0x362e39]={'$like':'%'+_0x2930e8[_0x115f('0x36')][_0x115f('0x42')]+'%'};return _0x2db653;})});}_0x34fa7a=_['merge']({},_0x34fa7a,_0x2930e8['options']);return _0x43df78['getDescriptions'](_0x34fa7a);}})[_0x115f('0x2a')](function(_0x419d09){if(_0x419d09){_0x2a2486=_0x419d09[_0x115f('0x3c')];if(!_0x2930e8[_0x115f('0x36')][_0x115f('0x3d')](_0x115f('0x3e'))){_0x34fa7a['limit']=qs[_0x115f('0x23')](_0x2930e8['query'][_0x115f('0x23')]);_0x34fa7a[_0x115f('0x21')]=qs[_0x115f('0x21')](_0x2930e8[_0x115f('0x36')][_0x115f('0x21')]);}return _0x43df78[_0x115f('0x56')](_0x34fa7a);}})[_0x115f('0x2a')](function(_0x22cefc){if(_0x22cefc){return _0x22cefc?{'count':_0x2a2486,'rows':_0x22cefc}:null;}})['then'](respondWithResult(_0x3dbc2e,null))['catch'](handleError(_0x3dbc2e,null));};
\ No newline at end of file
index 17f48f4..51ca03e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4e6=['path','rimraf','./intDynamics365Configuration.attributes','exports','define','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x23eb09,_0x3c26af){var _0x400452=function(_0x5bf963){while(--_0x5bf963){_0x23eb09['push'](_0x23eb09['shift']());}};_0x400452(++_0x3c26af);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x2dc343,_0xf015a2){_0x2dc343=_0x2dc343-0x0;var _0x51eac5=_0xb4e6[_0x2dc343];return _0x51eac5;};'use strict';var _=require(_0x6b4e('0x0'));var util=require('util');var logger=require(_0x6b4e('0x1'))(_0x6b4e('0x2'));var moment=require(_0x6b4e('0x3'));var BPromise=require(_0x6b4e('0x4'));var rp=require(_0x6b4e('0x5'));var fs=require('fs');var path=require(_0x6b4e('0x6'));var rimraf=require(_0x6b4e('0x7'));var config=require('../../config/environment');var attributes=require(_0x6b4e('0x8'));module[_0x6b4e('0x9')]=function(_0x1f67a2,_0x49de51){return _0x1f67a2[_0x6b4e('0xa')]('Dynamics365Configuration',attributes,{'tableName':'int_dynamics365_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6f0d=['./intDynamics365Configuration.attributes','define','Dynamics365Configuration','int_dynamics365_configurations','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0x6f0d,0x16c));var _0xd6f0=function(_0x3cb700,_0x507f5c){_0x3cb700=_0x3cb700-0x0;var _0x5148c8=_0x6f0d[_0x3cb700];return _0x5148c8;};'use strict';var _=require('lodash');var util=require(_0xd6f0('0x0'));var logger=require(_0xd6f0('0x1'))(_0xd6f0('0x2'));var moment=require(_0xd6f0('0x3'));var BPromise=require('bluebird');var rp=require(_0xd6f0('0x4'));var fs=require('fs');var path=require(_0xd6f0('0x5'));var rimraf=require(_0xd6f0('0x6'));var config=require(_0xd6f0('0x7'));var attributes=require(_0xd6f0('0x8'));module['exports']=function(_0x2d2ce6,_0x4a8b0c){return _0x2d2ce6[_0xd6f0('0x9')](_0xd6f0('0xa'),attributes,{'tableName':_0xd6f0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 86a6170..0cee62d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8960=['lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','error','code','message','info','result'];(function(_0x247f3d,_0x185f4b){var _0x1f18ce=function(_0x902b20){while(--_0x902b20){_0x247f3d['push'](_0x247f3d['shift']());}};_0x1f18ce(++_0x185f4b);}(_0x8960,0x169));var _0x0896=function(_0xec4278,_0x2f3bde){_0xec4278=_0xec4278-0x0;var _0x4b5e46=_0x8960[_0xec4278];return _0x4b5e46;};'use strict';var _=require(_0x0896('0x0'));var util=require('util');var moment=require(_0x0896('0x1'));var BPromise=require('bluebird');var rs=require(_0x0896('0x2'));var fs=require('fs');var Redis=require(_0x0896('0x3'));var db=require(_0x0896('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0896('0x5'))('rpc');var config=require(_0x0896('0x6'));var jayson=require(_0x0896('0x7'));var client=jayson[_0x0896('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x530e8f,_0x29003b,_0x1ded73){return new BPromise(function(_0xa813d5,_0x3e824c){return client[_0x0896('0x9')](_0x530e8f,_0x1ded73)['then'](function(_0x1f66f6){logger['info'](_0x0896('0xa'),_0x29003b,_0x0896('0xb'));logger[_0x0896('0xc')](_0x0896('0xd'),_0x29003b,'request\x20sent',JSON['stringify'](_0x1f66f6));if(_0x1f66f6[_0x0896('0xe')]){if(_0x1f66f6[_0x0896('0xe')][_0x0896('0xf')]===0x1f4){logger[_0x0896('0xe')]('Dynamics365Configuration,\x20%s,\x20%s',_0x29003b,_0x1f66f6[_0x0896('0xe')][_0x0896('0x10')]);return _0x3e824c(_0x1f66f6[_0x0896('0xe')][_0x0896('0x10')]);}logger[_0x0896('0xe')](_0x0896('0xa'),_0x29003b,_0x1f66f6['error'][_0x0896('0x10')]);return _0xa813d5(_0x1f66f6['error'][_0x0896('0x10')]);}else{logger[_0x0896('0x11')](_0x0896('0xa'),_0x29003b,_0x0896('0xb'));_0xa813d5(_0x1f66f6[_0x0896('0x12')]['message']);}})['catch'](function(_0x4f4c0a){logger[_0x0896('0xe')](_0x0896('0xa'),_0x29003b,_0x4f4c0a);_0x3e824c(_0x4f4c0a);});});}
\ No newline at end of file
+var _0xb729=['moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','Dynamics365Configuration,\x20%s,\x20%s','message','catch','lodash','util'];(function(_0x50ae15,_0x1b6b92){var _0x3d2791=function(_0x188080){while(--_0x188080){_0x50ae15['push'](_0x50ae15['shift']());}};_0x3d2791(++_0x1b6b92);}(_0xb729,0x132));var _0x9b72=function(_0xfcedad,_0x197686){_0xfcedad=_0xfcedad-0x0;var _0x2833ab=_0xb729[_0xfcedad];return _0x2833ab;};'use strict';var _=require(_0x9b72('0x0'));var util=require(_0x9b72('0x1'));var moment=require(_0x9b72('0x2'));var BPromise=require(_0x9b72('0x3'));var rs=require(_0x9b72('0x4'));var fs=require('fs');var Redis=require(_0x9b72('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9b72('0x6'))(_0x9b72('0x7'));var config=require(_0x9b72('0x8'));var jayson=require(_0x9b72('0x9'));var client=jayson[_0x9b72('0xa')][_0x9b72('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xabdc03,_0x1bd0a1,_0x3e9fb1){return new BPromise(function(_0x1d9c53,_0x4e5e08){return client[_0x9b72('0xc')](_0xabdc03,_0x3e9fb1)['then'](function(_0x3f3bae){logger[_0x9b72('0xd')]('Dynamics365Configuration,\x20%s,\x20%s',_0x1bd0a1,_0x9b72('0xe'));logger[_0x9b72('0xf')](_0x9b72('0x10'),_0x1bd0a1,'request\x20sent',JSON[_0x9b72('0x11')](_0x3f3bae));if(_0x3f3bae[_0x9b72('0x12')]){if(_0x3f3bae[_0x9b72('0x12')]['code']===0x1f4){logger['error'](_0x9b72('0x13'),_0x1bd0a1,_0x3f3bae['error'][_0x9b72('0x14')]);return _0x4e5e08(_0x3f3bae['error'][_0x9b72('0x14')]);}logger['error'](_0x9b72('0x13'),_0x1bd0a1,_0x3f3bae[_0x9b72('0x12')][_0x9b72('0x14')]);return _0x1d9c53(_0x3f3bae[_0x9b72('0x12')]['message']);}else{logger[_0x9b72('0xd')](_0x9b72('0x13'),_0x1bd0a1,_0x9b72('0xe'));_0x1d9c53(_0x3f3bae['result']['message']);}})[_0x9b72('0x15')](function(_0x14cbbf){logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x1bd0a1,_0x14cbbf);_0x4e5e08(_0x14cbbf);});});}
\ No newline at end of file
index 778da61..d6e9a98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1670=['destroy','multer','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get','index','/:id','isAuthenticated','post','create','update','delete'];(function(_0x17cca1,_0x4cd1f6){var _0x2a1d4a=function(_0x33c8a1){while(--_0x33c8a1){_0x17cca1['push'](_0x17cca1['shift']());}};_0x2a1d4a(++_0x4cd1f6);}(_0x1670,0x89));var _0x0167=function(_0x403ba1,_0x20eebf){_0x403ba1=_0x403ba1-0x0;var _0x43462c=_0x1670[_0x403ba1];return _0x43462c;};'use strict';var multer=require(_0x0167('0x0'));var util=require('util');var path=require(_0x0167('0x1'));var timeout=require('connect-timeout');var express=require(_0x0167('0x2'));var router=express[_0x0167('0x3')]();var fs_extra=require(_0x0167('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x0167('0x5'));var config=require(_0x0167('0x6'));var controller=require(_0x0167('0x7'));router[_0x0167('0x8')]('/',auth['isAuthenticated'](),controller[_0x0167('0x9')]);router[_0x0167('0x8')](_0x0167('0xa'),auth[_0x0167('0xb')](),controller['show']);router[_0x0167('0xc')]('/',auth[_0x0167('0xb')](),controller[_0x0167('0xd')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x0167('0xe')]);router[_0x0167('0xf')](_0x0167('0xa'),auth[_0x0167('0xb')](),controller[_0x0167('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xbb9b=['Router','fs-extra','../../config/environment','./intDynamics365Field.controller','index','get','/:id','isAuthenticated','show','post','put','destroy','exports','multer','util','express'];(function(_0x49e77b,_0x59ced7){var _0x58b978=function(_0x572228){while(--_0x572228){_0x49e77b['push'](_0x49e77b['shift']());}};_0x58b978(++_0x59ced7);}(_0xbb9b,0x10d));var _0xbbb9=function(_0x529964,_0x435c59){_0x529964=_0x529964-0x0;var _0x3c722c=_0xbb9b[_0x529964];return _0x3c722c;};'use strict';var multer=require(_0xbbb9('0x0'));var util=require(_0xbbb9('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbbb9('0x2'));var router=express[_0xbbb9('0x3')]();var fs_extra=require(_0xbbb9('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xbbb9('0x5'));var controller=require(_0xbbb9('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xbbb9('0x7')]);router[_0xbbb9('0x8')](_0xbbb9('0x9'),auth[_0xbbb9('0xa')](),controller[_0xbbb9('0xb')]);router[_0xbbb9('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0xbbb9('0xd')](_0xbbb9('0x9'),auth[_0xbbb9('0xa')](),controller['update']);router['delete']('/:id',auth[_0xbbb9('0xa')](),controller[_0xbbb9('0xe')]);module[_0xbbb9('0xf')]=router;
\ No newline at end of file
index ed92fa1..cc4893d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5fd=['sequelize','exports','ENUM','variable','customVariable','picklist','string','STRING'];(function(_0x4bd024,_0x2cde86){var _0x23f67c=function(_0x38d2f4){while(--_0x38d2f4){_0x4bd024['push'](_0x4bd024['shift']());}};_0x23f67c(++_0x2cde86);}(_0xe5fd,0x160));var _0xde5f=function(_0x385706,_0x13e346){_0x385706=_0x385706-0x0;var _0x921741=_0xe5fd[_0x385706];return _0x921741;};'use strict';var Sequelize=require(_0xde5f('0x0'));module[_0xde5f('0x1')]={'type':{'type':Sequelize[_0xde5f('0x2')]('string',_0xde5f('0x3'),_0xde5f('0x4'),'keyValue',_0xde5f('0x5')),'defaultValue':_0xde5f('0x6')},'content':{'type':Sequelize[_0xde5f('0x7')]},'key':{'type':Sequelize[_0xde5f('0x7')]},'keyType':{'type':Sequelize[_0xde5f('0x2')](_0xde5f('0x6'),_0xde5f('0x3'),_0xde5f('0x4'))},'keyContent':{'type':Sequelize[_0xde5f('0x7')]},'idField':{'type':Sequelize[_0xde5f('0x7')]},'nameField':{'type':Sequelize[_0xde5f('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf10c=['STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','picklist'];(function(_0x205e5a,_0x5c19fb){var _0x10da58=function(_0x1ba35d){while(--_0x1ba35d){_0x205e5a['push'](_0x205e5a['shift']());}};_0x10da58(++_0x5c19fb);}(_0xf10c,0x107));var _0xcf10=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf10c[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xcf10('0x0'));module[_0xcf10('0x1')]={'type':{'type':Sequelize[_0xcf10('0x2')](_0xcf10('0x3'),_0xcf10('0x4'),_0xcf10('0x5'),'keyValue',_0xcf10('0x6')),'defaultValue':_0xcf10('0x3')},'content':{'type':Sequelize[_0xcf10('0x7')]},'key':{'type':Sequelize[_0xcf10('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0xcf10('0x3'),_0xcf10('0x4'),_0xcf10('0x5'))},'keyContent':{'type':Sequelize[_0xcf10('0x7')]},'idField':{'type':Sequelize[_0xcf10('0x7')]},'nameField':{'type':Sequelize[_0xcf10('0x7')]},'customField':{'type':Sequelize[_0xcf10('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b2e37a7..bf9066f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14c=['key','model','keys','query','intersection','attributes','hasOwnProperty','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','params','fields','length','find','catch','create','body','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','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','status','json','undefined','limit','count','offset','set','apply','save','update','then','destroy','end','error','stack','name','send','index','map','Dynamics365Field','rawAttributes','type'];(function(_0x5013cf,_0x2025a5){var _0x1a6e16=function(_0x468779){while(--_0x468779){_0x5013cf['push'](_0x5013cf['shift']());}};_0x1a6e16(++_0x2025a5);}(_0xe14c,0x192));var _0xce14=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xe14c[_0x2641f9];return _0x585741;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xce14('0x0'));var zipdir=require(_0xce14('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xce14('0x2'));var moment=require(_0xce14('0x3'));var BPromise=require(_0xce14('0x4'));var Mustache=require(_0xce14('0x5'));var util=require(_0xce14('0x6'));var path=require(_0xce14('0x7'));var sox=require(_0xce14('0x8'));var csv=require(_0xce14('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xce14('0xa'));var _=require('lodash');var squel=require(_0xce14('0xb'));var crypto=require(_0xce14('0xc'));var jsforce=require(_0xce14('0xd'));var deskjs=require(_0xce14('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xce14('0xf'));var authService=require(_0xce14('0x10'));var qs=require(_0xce14('0x11'));var as=require(_0xce14('0x12'));var hardwareService=require(_0xce14('0x13'));var logger=require(_0xce14('0x14'))(_0xce14('0x15'));var utils=require(_0xce14('0x16'));var config=require(_0xce14('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xce14('0x18'))['db'];function respondWithStatusCode(_0x609faa,_0xde3eec){_0xde3eec=_0xde3eec||0xcc;return function(_0x164c02){if(_0x164c02){return _0x609faa[_0xce14('0x19')](_0xde3eec);}return _0x609faa[_0xce14('0x1a')](_0xde3eec)['end']();};}function respondWithResult(_0x565bf7,_0x3a3c00){_0x3a3c00=_0x3a3c00||0xc8;return function(_0xf1f80){if(_0xf1f80){return _0x565bf7[_0xce14('0x1a')](_0x3a3c00)[_0xce14('0x1b')](_0xf1f80);}};}function respondWithFilteredResult(_0x1d451d,_0x334bcd){return function(_0x3fcb16){if(_0x3fcb16){var _0xc522bc=typeof _0x334bcd['offset']===_0xce14('0x1c')&&typeof _0x334bcd[_0xce14('0x1d')]==='undefined';var _0xf20beb=_0x3fcb16[_0xce14('0x1e')];var _0x4fb4a=_0xc522bc?0x0:_0x334bcd['offset'];var _0xf5bdc=_0xc522bc?_0x3fcb16[_0xce14('0x1e')]:_0x334bcd[_0xce14('0x1f')]+_0x334bcd[_0xce14('0x1d')];var _0x4b727c;if(_0xf5bdc>=_0xf20beb){_0xf5bdc=_0xf20beb;_0x4b727c=0xc8;}else{_0x4b727c=0xce;}_0x1d451d[_0xce14('0x1a')](_0x4b727c);return _0x1d451d[_0xce14('0x20')]('Content-Range',_0x4fb4a+'-'+_0xf5bdc+'/'+_0xf20beb)[_0xce14('0x1b')](_0x3fcb16);}return null;};}function patchUpdates(_0x50db7b){return function(_0x42deed){try{jsonpatch[_0xce14('0x21')](_0x42deed,_0x50db7b,!![]);}catch(_0x22d7d9){return BPromise['reject'](_0x22d7d9);}return _0x42deed[_0xce14('0x22')]();};}function saveUpdates(_0x45d5c3,_0x1ece46){return function(_0x2ce548){if(_0x2ce548){return _0x2ce548[_0xce14('0x23')](_0x45d5c3)[_0xce14('0x24')](function(_0x802faf){return _0x802faf;});}return null;};}function removeEntity(_0x296cf5,_0x42c698){return function(_0x21e5f1){if(_0x21e5f1){return _0x21e5f1[_0xce14('0x25')]()[_0xce14('0x24')](function(){_0x296cf5['status'](0xcc)[_0xce14('0x26')]();});}};}function handleEntityNotFound(_0x49ba3e,_0x2c2b42){return function(_0x5bf7c9){if(!_0x5bf7c9){_0x49ba3e[_0xce14('0x19')](0x194);}return _0x5bf7c9;};}function handleError(_0x86fc16,_0x126308){_0x126308=_0x126308||0x1f4;return function(_0x590586){logger[_0xce14('0x27')](_0x590586[_0xce14('0x28')]);if(_0x590586[_0xce14('0x29')]){delete _0x590586[_0xce14('0x29')];}_0x86fc16[_0xce14('0x1a')](_0x126308)[_0xce14('0x2a')](_0x590586);};}exports[_0xce14('0x2b')]=function(_0x4bb9a2,_0x3d5797){var _0x3cb2ef={},_0x58e85f={},_0x1b0221={'count':0x0,'rows':[]};var _0x21d873=_[_0xce14('0x2c')](db[_0xce14('0x2d')][_0xce14('0x2e')],function(_0x55e5e3){return{'name':_0x55e5e3['fieldName'],'type':_0x55e5e3[_0xce14('0x2f')][_0xce14('0x30')]};});_0x58e85f[_0xce14('0x31')]=_['map'](_0x21d873,'name');_0x58e85f['query']=_[_0xce14('0x32')](_0x4bb9a2[_0xce14('0x33')]);_0x58e85f['filters']=_[_0xce14('0x34')](_0x58e85f[_0xce14('0x31')],_0x58e85f[_0xce14('0x33')]);_0x3cb2ef[_0xce14('0x35')]=_[_0xce14('0x34')](_0x58e85f['model'],qs['fields'](_0x4bb9a2[_0xce14('0x33')]['fields']));_0x3cb2ef[_0xce14('0x35')]=_0x3cb2ef[_0xce14('0x35')]['length']?_0x3cb2ef[_0xce14('0x35')]:_0x58e85f[_0xce14('0x31')];if(!_0x4bb9a2[_0xce14('0x33')][_0xce14('0x36')]('nolimit')){_0x3cb2ef[_0xce14('0x1d')]=qs['limit'](_0x4bb9a2['query'][_0xce14('0x1d')]);_0x3cb2ef[_0xce14('0x1f')]=qs[_0xce14('0x1f')](_0x4bb9a2[_0xce14('0x33')][_0xce14('0x1f')]);}_0x3cb2ef[_0xce14('0x37')]=qs[_0xce14('0x38')](_0x4bb9a2['query']['sort']);_0x3cb2ef[_0xce14('0x39')]=qs[_0xce14('0x3a')](_[_0xce14('0x3b')](_0x4bb9a2[_0xce14('0x33')],_0x58e85f[_0xce14('0x3a')]),_0x21d873);if(_0x4bb9a2[_0xce14('0x33')]['filter']){_0x3cb2ef['where']=_[_0xce14('0x3c')](_0x3cb2ef[_0xce14('0x39')],{'$or':_[_0xce14('0x2c')](_0x21d873,function(_0x532c83){if(_0x532c83[_0xce14('0x2f')]!==_0xce14('0x3d')){var _0x27c789={};_0x27c789[_0x532c83[_0xce14('0x29')]]={'$like':'%'+_0x4bb9a2[_0xce14('0x33')][_0xce14('0x3e')]+'%'};return _0x27c789;}})});}_0x3cb2ef=_['merge']({},_0x3cb2ef,_0x4bb9a2[_0xce14('0x3f')]);var _0xa17232={'where':_0x3cb2ef[_0xce14('0x39')]};return db[_0xce14('0x2d')]['count'](_0xa17232)[_0xce14('0x24')](function(_0x1b3c2f){_0x1b0221[_0xce14('0x1e')]=_0x1b3c2f;if(_0x4bb9a2['query'][_0xce14('0x40')]){_0x3cb2ef[_0xce14('0x41')]=[{'all':!![]}];}return db[_0xce14('0x2d')][_0xce14('0x42')](_0x3cb2ef);})[_0xce14('0x24')](function(_0x1e931d){_0x1b0221[_0xce14('0x43')]=_0x1e931d;return _0x1b0221;})[_0xce14('0x24')](respondWithFilteredResult(_0x3d5797,_0x3cb2ef))['catch'](handleError(_0x3d5797,null));};exports['show']=function(_0x585995,_0x482599){var _0x300da1={'raw':!![],'where':{'id':_0x585995[_0xce14('0x44')]['id']}},_0x12d8ca={};_0x12d8ca[_0xce14('0x31')]=_[_0xce14('0x32')](db[_0xce14('0x2d')][_0xce14('0x2e')]);_0x12d8ca[_0xce14('0x33')]=_['keys'](_0x585995[_0xce14('0x33')]);_0x12d8ca['filters']=_[_0xce14('0x34')](_0x12d8ca[_0xce14('0x31')],_0x12d8ca[_0xce14('0x33')]);_0x300da1[_0xce14('0x35')]=_['intersection'](_0x12d8ca[_0xce14('0x31')],qs[_0xce14('0x45')](_0x585995[_0xce14('0x33')][_0xce14('0x45')]));_0x300da1['attributes']=_0x300da1[_0xce14('0x35')][_0xce14('0x46')]?_0x300da1[_0xce14('0x35')]:_0x12d8ca[_0xce14('0x31')];if(_0x585995[_0xce14('0x33')][_0xce14('0x40')]){_0x300da1[_0xce14('0x41')]=[{'all':!![]}];}_0x300da1=_[_0xce14('0x3c')]({},_0x300da1,_0x585995[_0xce14('0x3f')]);return db['Dynamics365Field'][_0xce14('0x47')](_0x300da1)[_0xce14('0x24')](handleEntityNotFound(_0x482599,null))['then'](respondWithResult(_0x482599,null))[_0xce14('0x48')](handleError(_0x482599,null));};exports['create']=function(_0x8f167e,_0x2208f6){return db['Dynamics365Field'][_0xce14('0x49')](_0x8f167e['body'],{})[_0xce14('0x24')](respondWithResult(_0x2208f6,0xc9))['catch'](handleError(_0x2208f6,null));};exports[_0xce14('0x23')]=function(_0x506e3e,_0x4e715f){if(_0x506e3e['body']['id']){delete _0x506e3e[_0xce14('0x4a')]['id'];}return db[_0xce14('0x2d')]['find']({'where':{'id':_0x506e3e[_0xce14('0x44')]['id']}})[_0xce14('0x24')](handleEntityNotFound(_0x4e715f,null))[_0xce14('0x24')](saveUpdates(_0x506e3e[_0xce14('0x4a')],null))[_0xce14('0x24')](respondWithResult(_0x4e715f,null))['catch'](handleError(_0x4e715f,null));};exports[_0xce14('0x25')]=function(_0x4bd4a6,_0x147af5){return db[_0xce14('0x2d')][_0xce14('0x47')]({'where':{'id':_0x4bd4a6[_0xce14('0x44')]['id']}})[_0xce14('0x24')](handleEntityNotFound(_0x147af5,null))[_0xce14('0x24')](removeEntity(_0x147af5,null))[_0xce14('0x48')](handleError(_0x147af5,null));};
\ No newline at end of file
+var _0x1901=['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','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','map','Dynamics365Field','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','keys','length','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x3bb575,_0x528321){var _0x364ab6=function(_0x31c400){while(--_0x31c400){_0x3bb575['push'](_0x3bb575['shift']());}};_0x364ab6(++_0x528321);}(_0x1901,0x12f));var _0x1190=function(_0x3fddf3,_0x36ce44){_0x3fddf3=_0x3fddf3-0x0;var _0x15650d=_0x1901[_0x3fddf3];return _0x15650d;};'use strict';var emlformat=require(_0x1190('0x0'));var rimraf=require(_0x1190('0x1'));var zipdir=require(_0x1190('0x2'));var jsonpatch=require(_0x1190('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x1190('0x4'));var Mustache=require('mustache');var util=require(_0x1190('0x5'));var path=require(_0x1190('0x6'));var sox=require(_0x1190('0x7'));var csv=require(_0x1190('0x8'));var ejs=require(_0x1190('0x9'));var fs=require('fs');var fs_extra=require(_0x1190('0xa'));var _=require(_0x1190('0xb'));var squel=require(_0x1190('0xc'));var crypto=require(_0x1190('0xd'));var jsforce=require(_0x1190('0xe'));var deskjs=require(_0x1190('0xf'));var toCsv=require(_0x1190('0x8'));var querystring=require(_0x1190('0x10'));var Papa=require(_0x1190('0x11'));var Redis=require(_0x1190('0x12'));var authService=require(_0x1190('0x13'));var qs=require(_0x1190('0x14'));var as=require(_0x1190('0x15'));var hardwareService=require(_0x1190('0x16'));var logger=require(_0x1190('0x17'))(_0x1190('0x18'));var utils=require(_0x1190('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x1190('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1c2fb8,_0x3f3a8f){_0x3f3a8f=_0x3f3a8f||0xcc;return function(_0x2e5b83){if(_0x2e5b83){return _0x1c2fb8[_0x1190('0x1b')](_0x3f3a8f);}return _0x1c2fb8[_0x1190('0x1c')](_0x3f3a8f)[_0x1190('0x1d')]();};}function respondWithResult(_0xca85d4,_0x207f04){_0x207f04=_0x207f04||0xc8;return function(_0x3b8d4b){if(_0x3b8d4b){return _0xca85d4[_0x1190('0x1c')](_0x207f04)['json'](_0x3b8d4b);}};}function respondWithFilteredResult(_0x937761,_0x219331){return function(_0x15639a){if(_0x15639a){var _0x3fdafe=typeof _0x219331[_0x1190('0x1e')]===_0x1190('0x1f')&&typeof _0x219331['limit']===_0x1190('0x1f');var _0x184d88=_0x15639a[_0x1190('0x20')];var _0x5d2d9f=_0x3fdafe?0x0:_0x219331[_0x1190('0x1e')];var _0x85fd42=_0x3fdafe?_0x15639a[_0x1190('0x20')]:_0x219331['offset']+_0x219331[_0x1190('0x21')];var _0x125e63;if(_0x85fd42>=_0x184d88){_0x85fd42=_0x184d88;_0x125e63=0xc8;}else{_0x125e63=0xce;}_0x937761['status'](_0x125e63);return _0x937761['set'](_0x1190('0x22'),_0x5d2d9f+'-'+_0x85fd42+'/'+_0x184d88)[_0x1190('0x23')](_0x15639a);}return null;};}function patchUpdates(_0x5b8e06){return function(_0x1baf60){try{jsonpatch[_0x1190('0x24')](_0x1baf60,_0x5b8e06,!![]);}catch(_0xd9ad67){return BPromise[_0x1190('0x25')](_0xd9ad67);}return _0x1baf60[_0x1190('0x26')]();};}function saveUpdates(_0x1ee830,_0x2de2db){return function(_0x1110d5){if(_0x1110d5){return _0x1110d5[_0x1190('0x27')](_0x1ee830)[_0x1190('0x28')](function(_0x36cc32){return _0x36cc32;});}return null;};}function removeEntity(_0x29911a,_0x50d28f){return function(_0x19bfe4){if(_0x19bfe4){return _0x19bfe4[_0x1190('0x29')]()[_0x1190('0x28')](function(){_0x29911a[_0x1190('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x567291,_0x1b0df2){return function(_0x5ec68c){if(!_0x5ec68c){_0x567291[_0x1190('0x1b')](0x194);}return _0x5ec68c;};}function handleError(_0x3a660a,_0x465d35){_0x465d35=_0x465d35||0x1f4;return function(_0x1ee13e){logger['error'](_0x1ee13e[_0x1190('0x2a')]);if(_0x1ee13e[_0x1190('0x2b')]){delete _0x1ee13e['name'];}_0x3a660a[_0x1190('0x1c')](_0x465d35)[_0x1190('0x2c')](_0x1ee13e);};}exports[_0x1190('0x2d')]=function(_0x10cc28,_0x835974){var _0x16999c={},_0x5b8041={},_0x28869f={'count':0x0,'rows':[]};var _0x2da868=_[_0x1190('0x2e')](db[_0x1190('0x2f')][_0x1190('0x30')],function(_0x1aaca6){return{'name':_0x1aaca6[_0x1190('0x31')],'type':_0x1aaca6[_0x1190('0x32')][_0x1190('0x33')]};});_0x5b8041[_0x1190('0x34')]=_['map'](_0x2da868,_0x1190('0x2b'));_0x5b8041[_0x1190('0x35')]=_['keys'](_0x10cc28[_0x1190('0x35')]);_0x5b8041[_0x1190('0x36')]=_[_0x1190('0x37')](_0x5b8041[_0x1190('0x34')],_0x5b8041['query']);_0x16999c[_0x1190('0x38')]=_[_0x1190('0x37')](_0x5b8041['model'],qs[_0x1190('0x39')](_0x10cc28[_0x1190('0x35')][_0x1190('0x39')]));_0x16999c[_0x1190('0x38')]=_0x16999c['attributes']['length']?_0x16999c['attributes']:_0x5b8041[_0x1190('0x34')];if(!_0x10cc28[_0x1190('0x35')][_0x1190('0x3a')](_0x1190('0x3b'))){_0x16999c[_0x1190('0x21')]=qs[_0x1190('0x21')](_0x10cc28['query'][_0x1190('0x21')]);_0x16999c[_0x1190('0x1e')]=qs[_0x1190('0x1e')](_0x10cc28[_0x1190('0x35')][_0x1190('0x1e')]);}_0x16999c[_0x1190('0x3c')]=qs[_0x1190('0x3d')](_0x10cc28[_0x1190('0x35')][_0x1190('0x3d')]);_0x16999c['where']=qs[_0x1190('0x36')](_[_0x1190('0x3e')](_0x10cc28[_0x1190('0x35')],_0x5b8041[_0x1190('0x36')]),_0x2da868);if(_0x10cc28[_0x1190('0x35')]['filter']){_0x16999c[_0x1190('0x3f')]=_[_0x1190('0x40')](_0x16999c[_0x1190('0x3f')],{'$or':_[_0x1190('0x2e')](_0x2da868,function(_0x3d354b){if(_0x3d354b['type']!==_0x1190('0x41')){var _0x8035f3={};_0x8035f3[_0x3d354b[_0x1190('0x2b')]]={'$like':'%'+_0x10cc28['query'][_0x1190('0x42')]+'%'};return _0x8035f3;}})});}_0x16999c=_[_0x1190('0x40')]({},_0x16999c,_0x10cc28[_0x1190('0x43')]);var _0x390fd2={'where':_0x16999c[_0x1190('0x3f')]};return db[_0x1190('0x2f')][_0x1190('0x20')](_0x390fd2)[_0x1190('0x28')](function(_0x4d50ff){_0x28869f[_0x1190('0x20')]=_0x4d50ff;if(_0x10cc28['query'][_0x1190('0x44')]){_0x16999c['include']=[{'all':!![]}];}return db[_0x1190('0x2f')][_0x1190('0x45')](_0x16999c);})['then'](function(_0x4eaeae){_0x28869f[_0x1190('0x46')]=_0x4eaeae;return _0x28869f;})[_0x1190('0x28')](respondWithFilteredResult(_0x835974,_0x16999c))[_0x1190('0x47')](handleError(_0x835974,null));};exports[_0x1190('0x48')]=function(_0x995901,_0x109795){var _0x1163cb={'raw':!![],'where':{'id':_0x995901[_0x1190('0x49')]['id']}},_0x3f2d9b={};_0x3f2d9b['model']=_[_0x1190('0x4a')](db['Dynamics365Field'][_0x1190('0x30')]);_0x3f2d9b[_0x1190('0x35')]=_[_0x1190('0x4a')](_0x995901[_0x1190('0x35')]);_0x3f2d9b[_0x1190('0x36')]=_[_0x1190('0x37')](_0x3f2d9b[_0x1190('0x34')],_0x3f2d9b[_0x1190('0x35')]);_0x1163cb[_0x1190('0x38')]=_[_0x1190('0x37')](_0x3f2d9b[_0x1190('0x34')],qs[_0x1190('0x39')](_0x995901[_0x1190('0x35')]['fields']));_0x1163cb[_0x1190('0x38')]=_0x1163cb[_0x1190('0x38')][_0x1190('0x4b')]?_0x1163cb['attributes']:_0x3f2d9b[_0x1190('0x34')];if(_0x995901['query']['includeAll']){_0x1163cb['include']=[{'all':!![]}];}_0x1163cb=_[_0x1190('0x40')]({},_0x1163cb,_0x995901[_0x1190('0x43')]);return db[_0x1190('0x2f')][_0x1190('0x4c')](_0x1163cb)[_0x1190('0x28')](handleEntityNotFound(_0x109795,null))[_0x1190('0x28')](respondWithResult(_0x109795,null))['catch'](handleError(_0x109795,null));};exports[_0x1190('0x4d')]=function(_0x263eda,_0x1066fb){return db[_0x1190('0x2f')]['create'](_0x263eda[_0x1190('0x4e')],{})[_0x1190('0x28')](respondWithResult(_0x1066fb,0xc9))['catch'](handleError(_0x1066fb,null));};exports[_0x1190('0x27')]=function(_0x457579,_0x3ec2c6){if(_0x457579['body']['id']){delete _0x457579['body']['id'];}return db['Dynamics365Field']['find']({'where':{'id':_0x457579['params']['id']}})[_0x1190('0x28')](handleEntityNotFound(_0x3ec2c6,null))[_0x1190('0x28')](saveUpdates(_0x457579[_0x1190('0x4e')],null))['then'](respondWithResult(_0x3ec2c6,null))[_0x1190('0x47')](handleError(_0x3ec2c6,null));};exports[_0x1190('0x29')]=function(_0x2242b6,_0x2e9760){return db[_0x1190('0x2f')][_0x1190('0x4c')]({'where':{'id':_0x2242b6[_0x1190('0x49')]['id']}})['then'](handleEntityNotFound(_0x2e9760,null))[_0x1190('0x28')](removeEntity(_0x2e9760,null))[_0x1190('0x47')](handleError(_0x2e9760,null));};
\ No newline at end of file
index 0aae36e..31d82be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb61a=['../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','define','dynamics365_unique_index','idField','lodash','util'];(function(_0x4706a6,_0x5a1c63){var _0x1bb705=function(_0x484ebb){while(--_0x484ebb){_0x4706a6['push'](_0x4706a6['shift']());}};_0x1bb705(++_0x5a1c63);}(_0xb61a,0x1b8));var _0xab61=function(_0x5aeeee,_0x5b47f0){_0x5aeeee=_0x5aeeee-0x0;var _0x1f2622=_0xb61a[_0x5aeeee];return _0x1f2622;};'use strict';var _=require(_0xab61('0x0'));var util=require(_0xab61('0x1'));var logger=require(_0xab61('0x2'))(_0xab61('0x3'));var moment=require(_0xab61('0x4'));var BPromise=require(_0xab61('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xab61('0x6'));var config=require(_0xab61('0x7'));var attributes=require(_0xab61('0x8'));module[_0xab61('0x9')]=function(_0x555b96,_0x42d78b){return _0x555b96[_0xab61('0xa')]('Dynamics365Field',attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0xab61('0xb'),'fields':[_0xab61('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7767=['int_dynamics365_fields','dynamics365_unique_index','lodash','../../config/logger','api','moment','bluebird','path','../../config/environment','exports','define','Dynamics365Field'];(function(_0x2bcc3b,_0x2f6cb5){var _0x38f336=function(_0x1e8d3d){while(--_0x1e8d3d){_0x2bcc3b['push'](_0x2bcc3b['shift']());}};_0x38f336(++_0x2f6cb5);}(_0x7767,0x6e));var _0x7776=function(_0x45f951,_0x2750c8){_0x45f951=_0x45f951-0x0;var _0x24756c=_0x7767[_0x45f951];return _0x24756c;};'use strict';var _=require(_0x7776('0x0'));var util=require('util');var logger=require(_0x7776('0x1'))(_0x7776('0x2'));var moment=require(_0x7776('0x3'));var BPromise=require(_0x7776('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7776('0x5'));var rimraf=require('rimraf');var config=require(_0x7776('0x6'));var attributes=require('./intDynamics365Field.attributes');module[_0x7776('0x7')]=function(_0x1e7a66,_0x51c7c1){return _0x1e7a66[_0x7776('0x8')](_0x7776('0x9'),attributes,{'tableName':_0x7776('0xa'),'paranoid':![],'indexes':[{'name':_0x7776('0xb'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 2755a3d..d6818ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa5b=['../../config/environment','client','http','request','then','Dynamics365Field,\x20%s,\x20%s','Dynamics365Field,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','util','moment','ioredis','../../mysqldb','../../config/utils'];(function(_0x301c34,_0x15701e){var _0x1a8c5a=function(_0x297b4f){while(--_0x297b4f){_0x301c34['push'](_0x301c34['shift']());}};_0x1a8c5a(++_0x15701e);}(_0xfa5b,0x13e));var _0xbfa5=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0xfa5b[_0x5f0089];return _0x193892;};'use strict';var _=require('lodash');var util=require(_0xbfa5('0x0'));var moment=require(_0xbfa5('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbfa5('0x2'));var db=require(_0xbfa5('0x3'))['db'];var utils=require(_0xbfa5('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xbfa5('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xbfa5('0x6')][_0xbfa5('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x803ca0,_0x2e65b1,_0x10f8a5){return new BPromise(function(_0xac8ded,_0x3070c2){return client[_0xbfa5('0x8')](_0x803ca0,_0x10f8a5)[_0xbfa5('0x9')](function(_0x5eb278){logger['info'](_0xbfa5('0xa'),_0x2e65b1,'request\x20sent');logger['debug'](_0xbfa5('0xb'),_0x2e65b1,_0xbfa5('0xc'),JSON[_0xbfa5('0xd')](_0x5eb278));if(_0x5eb278[_0xbfa5('0xe')]){if(_0x5eb278['error'][_0xbfa5('0xf')]===0x1f4){logger[_0xbfa5('0xe')](_0xbfa5('0xa'),_0x2e65b1,_0x5eb278[_0xbfa5('0xe')][_0xbfa5('0x10')]);return _0x3070c2(_0x5eb278['error'][_0xbfa5('0x10')]);}logger[_0xbfa5('0xe')]('Dynamics365Field,\x20%s,\x20%s',_0x2e65b1,_0x5eb278[_0xbfa5('0xe')]['message']);return _0xac8ded(_0x5eb278[_0xbfa5('0xe')][_0xbfa5('0x10')]);}else{logger[_0xbfa5('0x11')]('Dynamics365Field,\x20%s,\x20%s',_0x2e65b1,_0xbfa5('0xc'));_0xac8ded(_0x5eb278['result']['message']);}})[_0xbfa5('0x12')](function(_0x2ae3bb){logger[_0xbfa5('0xe')](_0xbfa5('0xa'),_0x2e65b1,_0x2ae3bb);_0x3070c2(_0x2ae3bb);});});}
\ No newline at end of file
+var _0x7d77=['jayson/promise','client','http','request','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment'];(function(_0x5de5fa,_0xff49b8){var _0x510366=function(_0x1b6d84){while(--_0x1b6d84){_0x5de5fa['push'](_0x5de5fa['shift']());}};_0x510366(++_0xff49b8);}(_0x7d77,0xa8));var _0x77d7=function(_0x4b267e,_0x1c72f4){_0x4b267e=_0x4b267e-0x0;var _0x1ace17=_0x7d77[_0x4b267e];return _0x1ace17;};'use strict';var _=require(_0x77d7('0x0'));var util=require(_0x77d7('0x1'));var moment=require(_0x77d7('0x2'));var BPromise=require(_0x77d7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x77d7('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x77d7('0x5'))(_0x77d7('0x6'));var config=require(_0x77d7('0x7'));var jayson=require(_0x77d7('0x8'));var client=jayson[_0x77d7('0x9')][_0x77d7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1a2024,_0x18e7bb,_0x4125b5){return new BPromise(function(_0x5093e8,_0x3e30c2){return client[_0x77d7('0xb')](_0x1a2024,_0x4125b5)[_0x77d7('0xc')](function(_0xa8adf6){logger[_0x77d7('0xd')](_0x77d7('0xe'),_0x18e7bb,_0x77d7('0xf'));logger[_0x77d7('0x10')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x18e7bb,_0x77d7('0xf'),JSON['stringify'](_0xa8adf6));if(_0xa8adf6[_0x77d7('0x11')]){if(_0xa8adf6['error'][_0x77d7('0x12')]===0x1f4){logger[_0x77d7('0x11')]('Dynamics365Field,\x20%s,\x20%s',_0x18e7bb,_0xa8adf6['error'][_0x77d7('0x13')]);return _0x3e30c2(_0xa8adf6[_0x77d7('0x11')][_0x77d7('0x13')]);}logger[_0x77d7('0x11')](_0x77d7('0xe'),_0x18e7bb,_0xa8adf6[_0x77d7('0x11')]['message']);return _0x5093e8(_0xa8adf6[_0x77d7('0x11')]['message']);}else{logger[_0x77d7('0xd')]('Dynamics365Field,\x20%s,\x20%s',_0x18e7bb,_0x77d7('0xf'));_0x5093e8(_0xa8adf6[_0x77d7('0x14')][_0x77d7('0x13')]);}})[_0x77d7('0x15')](function(_0x2f7f36){logger['error'](_0x77d7('0xe'),_0x18e7bb,_0x2f7f36);_0x3e30c2(_0x2f7f36);});});}
\ No newline at end of file
index 0c5bdd9..c159dde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc65c=['/:id','show','getConfigurations','/:id/fields','post','create','addConfiguration','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index'];(function(_0x6d87a7,_0x4d5316){var _0x49c1f1=function(_0x519e79){while(--_0x519e79){_0x6d87a7['push'](_0x6d87a7['shift']());}};_0x49c1f1(++_0x4d5316);}(_0xc65c,0xbb));var _0xcc65=function(_0x4a5055,_0x3c97aa){_0x4a5055=_0x4a5055-0x0;var _0x329f81=_0xc65c[_0x4a5055];return _0x329f81;};'use strict';var multer=require(_0xcc65('0x0'));var util=require(_0xcc65('0x1'));var path=require(_0xcc65('0x2'));var timeout=require(_0xcc65('0x3'));var express=require('express');var router=express[_0xcc65('0x4')]();var fs_extra=require(_0xcc65('0x5'));var auth=require(_0xcc65('0x6'));var interaction=require(_0xcc65('0x7'));var config=require('../../config/environment');var controller=require('./intFreshdeskAccount.controller');router[_0xcc65('0x8')]('/',auth[_0xcc65('0x9')](),controller[_0xcc65('0xa')]);router['get'](_0xcc65('0xb'),auth[_0xcc65('0x9')](),controller[_0xcc65('0xc')]);router[_0xcc65('0x8')]('/:id/configurations',auth[_0xcc65('0x9')](),controller[_0xcc65('0xd')]);router[_0xcc65('0x8')](_0xcc65('0xe'),auth['isAuthenticated'](),controller['getFields']);router[_0xcc65('0xf')]('/',auth[_0xcc65('0x9')](),controller[_0xcc65('0x10')]);router[_0xcc65('0xf')]('/:id/configurations',auth['isAuthenticated'](),controller[_0xcc65('0x11')]);router[_0xcc65('0x12')](_0xcc65('0xb'),auth[_0xcc65('0x9')](),controller[_0xcc65('0x13')]);router[_0xcc65('0x14')](_0xcc65('0xb'),auth[_0xcc65('0x9')](),controller['destroy']);module[_0xcc65('0x15')]=router;
\ No newline at end of file
+var _0x64b5=['getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','isAuthenticated','index','get','/:id','show','/:id/configurations'];(function(_0x2bb9fa,_0x33f63d){var _0x18a068=function(_0x1b89c3){while(--_0x1b89c3){_0x2bb9fa['push'](_0x2bb9fa['shift']());}};_0x18a068(++_0x33f63d);}(_0x64b5,0x1ea));var _0x564b=function(_0x311968,_0x46fd9b){_0x311968=_0x311968-0x0;var _0x5325ef=_0x64b5[_0x311968];return _0x5325ef;};'use strict';var multer=require(_0x564b('0x0'));var util=require('util');var path=require(_0x564b('0x1'));var timeout=require(_0x564b('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x564b('0x3'));var auth=require(_0x564b('0x4'));var interaction=require(_0x564b('0x5'));var config=require(_0x564b('0x6'));var controller=require(_0x564b('0x7'));router['get']('/',auth[_0x564b('0x8')](),controller[_0x564b('0x9')]);router[_0x564b('0xa')](_0x564b('0xb'),auth[_0x564b('0x8')](),controller[_0x564b('0xc')]);router[_0x564b('0xa')](_0x564b('0xd'),auth[_0x564b('0x8')](),controller[_0x564b('0xe')]);router[_0x564b('0xa')](_0x564b('0xf'),auth[_0x564b('0x8')](),controller[_0x564b('0x10')]);router[_0x564b('0x11')]('/',auth[_0x564b('0x8')](),controller[_0x564b('0x12')]);router['post'](_0x564b('0xd'),auth[_0x564b('0x8')](),controller[_0x564b('0x13')]);router[_0x564b('0x14')](_0x564b('0xb'),auth[_0x564b('0x8')](),controller[_0x564b('0x15')]);router[_0x564b('0x16')](_0x564b('0xb'),auth[_0x564b('0x8')](),controller['destroy']);module[_0x564b('0x17')]=router;
\ No newline at end of file
index 1b389d5..04a98a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1399=['exports','STRING','username','remoteUri','sequelize'];(function(_0x51bb38,_0x4e57a0){var _0x51c09b=function(_0x3321e2){while(--_0x3321e2){_0x51bb38['push'](_0x51bb38['shift']());}};_0x51c09b(++_0x4e57a0);}(_0x1399,0x16c));var _0x9139=function(_0x1ce929,_0x4c0a6e){_0x1ce929=_0x1ce929-0x0;var _0x3506bd=_0x1399[_0x1ce929];return _0x3506bd;};'use strict';var Sequelize=require(_0x9139('0x0'));module[_0x9139('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x9139('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x9139('0x3')},'apiKey':{'type':Sequelize[_0x9139('0x2')]},'remoteUri':{'type':Sequelize[_0x9139('0x2')],'unique':_0x9139('0x4')},'serverUrl':{'type':Sequelize[_0x9139('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xf2e3=['STRING','username','remoteUri','sequelize'];(function(_0x1b6563,_0x3bf0f1){var _0xdea7b8=function(_0x49e6c6){while(--_0x49e6c6){_0x1b6563['push'](_0x1b6563['shift']());}};_0xdea7b8(++_0x3bf0f1);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x22b68a,_0x2bffc3){_0x22b68a=_0x22b68a-0x0;var _0x1ac67a=_0xf2e3[_0x22b68a];return _0x1ac67a;};'use strict';var Sequelize=require(_0x3f2e('0x0'));module['exports']={'name':{'type':Sequelize[_0x3f2e('0x1')]},'description':{'type':Sequelize[_0x3f2e('0x1')]},'username':{'type':Sequelize[_0x3f2e('0x1')],'unique':_0x3f2e('0x2')},'apiKey':{'type':Sequelize[_0x3f2e('0x1')]},'remoteUri':{'type':Sequelize[_0x3f2e('0x1')],'unique':_0x3f2e('0x3')},'serverUrl':{'type':Sequelize[_0x3f2e('0x1')],'allowNull':![]}};
\ No newline at end of file
index 03145b2..87ea419 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbac=['priority','group','source','company','remove','includes','default','custom_text','custom_dropdown','label','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','fs-extra','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','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','save','then','error','name','send','index','FreshdeskAccount','type','key','model','map','query','keys','attributes','fields','length','nolimit','order','sort','pick','filters','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','rawAttributes','intersection','find','create','body','params','destroy','getConfigurations','findOne','FreshdeskConfiguration','hasOwnProperty','addConfiguration','AccountId','channel','Descriptions','getDescriptions','FreshdeskField','Subjects','remoteUri','slice','substring','lastIndexOf','GET','format','Basic\x20%s','%s:X','apiKey','toString','base64','requester','subject','agent'];(function(_0x3f11f6,_0x2fd669){var _0x4f37d2=function(_0x4ab6dd){while(--_0x4ab6dd){_0x3f11f6['push'](_0x3f11f6['shift']());}};_0x4f37d2(++_0x2fd669);}(_0xfbac,0x167));var _0xcfba=function(_0x12e5c3,_0x294c97){_0x12e5c3=_0x12e5c3-0x0;var _0x3608c5=_0xfbac[_0x12e5c3];return _0x3608c5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcfba('0x0'));var zipdir=require(_0xcfba('0x1'));var jsonpatch=require(_0xcfba('0x2'));var rp=require(_0xcfba('0x3'));var moment=require(_0xcfba('0x4'));var BPromise=require(_0xcfba('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xcfba('0x6'));var sox=require(_0xcfba('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcfba('0x8'));var _=require('lodash');var squel=require(_0xcfba('0x9'));var crypto=require('crypto');var jsforce=require(_0xcfba('0xa'));var deskjs=require(_0xcfba('0xb'));var toCsv=require('to-csv');var querystring=require(_0xcfba('0xc'));var Papa=require(_0xcfba('0xd'));var Redis=require(_0xcfba('0xe'));var authService=require(_0xcfba('0xf'));var qs=require(_0xcfba('0x10'));var as=require(_0xcfba('0x11'));var hardwareService=require(_0xcfba('0x12'));var logger=require(_0xcfba('0x13'))(_0xcfba('0x14'));var utils=require(_0xcfba('0x15'));var config=require(_0xcfba('0x16'));var licenseUtil=require(_0xcfba('0x17'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x1f590b,_0x24168c){_0x24168c=_0x24168c||0xcc;return function(_0x4c2ae0){if(_0x4c2ae0){return _0x1f590b[_0xcfba('0x18')](_0x24168c);}return _0x1f590b[_0xcfba('0x19')](_0x24168c)[_0xcfba('0x1a')]();};}function respondWithResult(_0x226e89,_0x2333ee){_0x2333ee=_0x2333ee||0xc8;return function(_0x2db67a){if(_0x2db67a){return _0x226e89[_0xcfba('0x19')](_0x2333ee)[_0xcfba('0x1b')](_0x2db67a);}};}function respondWithFilteredResult(_0x2f497b,_0x18d1d6){return function(_0x231192){if(_0x231192){var _0x37a850=typeof _0x18d1d6[_0xcfba('0x1c')]==='undefined'&&typeof _0x18d1d6[_0xcfba('0x1d')]===_0xcfba('0x1e');var _0x8e34d6=_0x231192[_0xcfba('0x1f')];var _0x1bf52d=_0x37a850?0x0:_0x18d1d6[_0xcfba('0x1c')];var _0x112955=_0x37a850?_0x231192['count']:_0x18d1d6[_0xcfba('0x1c')]+_0x18d1d6[_0xcfba('0x1d')];var _0x35cec9;if(_0x112955>=_0x8e34d6){_0x112955=_0x8e34d6;_0x35cec9=0xc8;}else{_0x35cec9=0xce;}_0x2f497b['status'](_0x35cec9);return _0x2f497b['set'](_0xcfba('0x20'),_0x1bf52d+'-'+_0x112955+'/'+_0x8e34d6)[_0xcfba('0x1b')](_0x231192);}return null;};}function patchUpdates(_0x40a0df){return function(_0x467762){try{jsonpatch[_0xcfba('0x21')](_0x467762,_0x40a0df,!![]);}catch(_0x6d6f6d){return BPromise['reject'](_0x6d6f6d);}return _0x467762[_0xcfba('0x22')]();};}function saveUpdates(_0x5d4c92,_0x286d20){return function(_0x1e187f){if(_0x1e187f){return _0x1e187f['update'](_0x5d4c92)[_0xcfba('0x23')](function(_0x42cf58){return _0x42cf58;});}return null;};}function removeEntity(_0x14850f,_0x3fb061){return function(_0x5f4e17){if(_0x5f4e17){return _0x5f4e17['destroy']()[_0xcfba('0x23')](function(){_0x14850f[_0xcfba('0x19')](0xcc)[_0xcfba('0x1a')]();});}};}function handleEntityNotFound(_0x4c9098,_0x1f01a7){return function(_0x544913){if(!_0x544913){_0x4c9098[_0xcfba('0x18')](0x194);}return _0x544913;};}function handleError(_0x5e79c7,_0x4ee825){_0x4ee825=_0x4ee825||0x1f4;return function(_0xf2e3d5){logger[_0xcfba('0x24')](_0xf2e3d5['stack']);if(_0xf2e3d5[_0xcfba('0x25')]){delete _0xf2e3d5[_0xcfba('0x25')];}_0x5e79c7[_0xcfba('0x19')](_0x4ee825)[_0xcfba('0x26')](_0xf2e3d5);};}exports[_0xcfba('0x27')]=function(_0x1c3343,_0x2ee85c){var _0x4585ec={},_0x5c77c4={},_0x7c7d76={'count':0x0,'rows':[]};var _0x4aa981=_['map'](db[_0xcfba('0x28')]['rawAttributes'],function(_0x2ec629){return{'name':_0x2ec629['fieldName'],'type':_0x2ec629[_0xcfba('0x29')][_0xcfba('0x2a')]};});_0x5c77c4[_0xcfba('0x2b')]=_[_0xcfba('0x2c')](_0x4aa981,_0xcfba('0x25'));_0x5c77c4[_0xcfba('0x2d')]=_[_0xcfba('0x2e')](_0x1c3343[_0xcfba('0x2d')]);_0x5c77c4['filters']=_['intersection'](_0x5c77c4['model'],_0x5c77c4[_0xcfba('0x2d')]);_0x4585ec[_0xcfba('0x2f')]=_['intersection'](_0x5c77c4[_0xcfba('0x2b')],qs['fields'](_0x1c3343[_0xcfba('0x2d')][_0xcfba('0x30')]));_0x4585ec[_0xcfba('0x2f')]=_0x4585ec[_0xcfba('0x2f')][_0xcfba('0x31')]?_0x4585ec[_0xcfba('0x2f')]:_0x5c77c4[_0xcfba('0x2b')];if(!_0x1c3343[_0xcfba('0x2d')]['hasOwnProperty'](_0xcfba('0x32'))){_0x4585ec[_0xcfba('0x1d')]=qs[_0xcfba('0x1d')](_0x1c3343[_0xcfba('0x2d')][_0xcfba('0x1d')]);_0x4585ec[_0xcfba('0x1c')]=qs[_0xcfba('0x1c')](_0x1c3343['query'][_0xcfba('0x1c')]);}_0x4585ec[_0xcfba('0x33')]=qs[_0xcfba('0x34')](_0x1c3343[_0xcfba('0x2d')][_0xcfba('0x34')]);_0x4585ec['where']=qs['filters'](_[_0xcfba('0x35')](_0x1c3343[_0xcfba('0x2d')],_0x5c77c4[_0xcfba('0x36')]),_0x4aa981);if(_0x1c3343[_0xcfba('0x2d')]['filter']){_0x4585ec[_0xcfba('0x37')]=_[_0xcfba('0x38')](_0x4585ec['where'],{'$or':_['map'](_0x4aa981,function(_0x14ccc9){if(_0x14ccc9[_0xcfba('0x29')]!==_0xcfba('0x39')){var _0x39f058={};_0x39f058[_0x14ccc9[_0xcfba('0x25')]]={'$like':'%'+_0x1c3343[_0xcfba('0x2d')][_0xcfba('0x3a')]+'%'};return _0x39f058;}})});}_0x4585ec=_['merge']({},_0x4585ec,_0x1c3343[_0xcfba('0x3b')]);var _0x43c206={'where':_0x4585ec['where']};return db[_0xcfba('0x28')]['count'](_0x43c206)[_0xcfba('0x23')](function(_0x4a2750){_0x7c7d76[_0xcfba('0x1f')]=_0x4a2750;if(_0x1c3343[_0xcfba('0x2d')][_0xcfba('0x3c')]){_0x4585ec[_0xcfba('0x3d')]=[{'all':!![]}];}return db[_0xcfba('0x28')][_0xcfba('0x3e')](_0x4585ec);})['then'](function(_0x3be84d){_0x7c7d76['rows']=_0x3be84d;return _0x7c7d76;})['then'](respondWithFilteredResult(_0x2ee85c,_0x4585ec))[_0xcfba('0x3f')](handleError(_0x2ee85c,null));};exports[_0xcfba('0x40')]=function(_0x1279a9,_0x237015){var _0x3b4466={'raw':![],'where':{'id':_0x1279a9['params']['id']}},_0x1ea9d9={};_0x1ea9d9['model']=_['keys'](db[_0xcfba('0x28')][_0xcfba('0x41')]);_0x1ea9d9[_0xcfba('0x2d')]=_[_0xcfba('0x2e')](_0x1279a9[_0xcfba('0x2d')]);_0x1ea9d9[_0xcfba('0x36')]=_[_0xcfba('0x42')](_0x1ea9d9[_0xcfba('0x2b')],_0x1ea9d9[_0xcfba('0x2d')]);_0x3b4466['attributes']=_[_0xcfba('0x42')](_0x1ea9d9[_0xcfba('0x2b')],qs[_0xcfba('0x30')](_0x1279a9[_0xcfba('0x2d')][_0xcfba('0x30')]));_0x3b4466[_0xcfba('0x2f')]=_0x3b4466[_0xcfba('0x2f')]['length']?_0x3b4466[_0xcfba('0x2f')]:_0x1ea9d9[_0xcfba('0x2b')];if(_0x1279a9[_0xcfba('0x2d')][_0xcfba('0x3c')]){_0x3b4466['include']=[{'all':!![]}];}_0x3b4466=_[_0xcfba('0x38')]({},_0x3b4466,_0x1279a9[_0xcfba('0x3b')]);return db[_0xcfba('0x28')][_0xcfba('0x43')](_0x3b4466)[_0xcfba('0x23')](handleEntityNotFound(_0x237015,null))[_0xcfba('0x23')](respondWithResult(_0x237015,null))[_0xcfba('0x3f')](handleError(_0x237015,null));};exports['create']=function(_0x4a48e0,_0x11ad05){return db[_0xcfba('0x28')][_0xcfba('0x44')](_0x4a48e0[_0xcfba('0x45')],{})[_0xcfba('0x23')](respondWithResult(_0x11ad05,0xc9))[_0xcfba('0x3f')](handleError(_0x11ad05,null));};exports['update']=function(_0x57ff92,_0x53a599){if(_0x57ff92[_0xcfba('0x45')]['id']){delete _0x57ff92['body']['id'];}return db[_0xcfba('0x28')][_0xcfba('0x43')]({'where':{'id':_0x57ff92[_0xcfba('0x46')]['id']}})[_0xcfba('0x23')](handleEntityNotFound(_0x53a599,null))['then'](saveUpdates(_0x57ff92['body'],null))[_0xcfba('0x23')](respondWithResult(_0x53a599,null))[_0xcfba('0x3f')](handleError(_0x53a599,null));};exports[_0xcfba('0x47')]=function(_0x3a88b6,_0x2a204f){return db[_0xcfba('0x28')][_0xcfba('0x43')]({'where':{'id':_0x3a88b6[_0xcfba('0x46')]['id']}})['then'](handleEntityNotFound(_0x2a204f,null))['then'](removeEntity(_0x2a204f,null))[_0xcfba('0x3f')](handleError(_0x2a204f,null));};exports[_0xcfba('0x48')]=function(_0x358477,_0x1193c3,_0x47056f){var _0x187711={};var _0x3fc544={};var _0x3c76a4;var _0x288d88;return db[_0xcfba('0x28')][_0xcfba('0x49')]({'where':{'id':_0x358477[_0xcfba('0x46')]['id']}})[_0xcfba('0x23')](handleEntityNotFound(_0x1193c3,null))[_0xcfba('0x23')](function(_0x5f36ac){if(_0x5f36ac){_0x3c76a4=_0x5f36ac;_0x3fc544['model']=_[_0xcfba('0x2e')](db[_0xcfba('0x4a')][_0xcfba('0x41')]);_0x3fc544[_0xcfba('0x2d')]=_['keys'](_0x358477[_0xcfba('0x2d')]);_0x3fc544[_0xcfba('0x36')]=_[_0xcfba('0x42')](_0x3fc544['model'],_0x3fc544[_0xcfba('0x2d')]);_0x187711[_0xcfba('0x2f')]=_[_0xcfba('0x42')](_0x3fc544['model'],qs[_0xcfba('0x30')](_0x358477[_0xcfba('0x2d')][_0xcfba('0x30')]));_0x187711[_0xcfba('0x2f')]=_0x187711['attributes']['length']?_0x187711[_0xcfba('0x2f')]:_0x3fc544[_0xcfba('0x2b')];_0x187711['order']=qs['sort'](_0x358477[_0xcfba('0x2d')]['sort']);_0x187711[_0xcfba('0x37')]=qs[_0xcfba('0x36')](_[_0xcfba('0x35')](_0x358477['query'],_0x3fc544[_0xcfba('0x36')]));if(_0x358477[_0xcfba('0x2d')][_0xcfba('0x3a')]){_0x187711[_0xcfba('0x37')]=_['merge'](_0x187711[_0xcfba('0x37')],{'$or':_[_0xcfba('0x2c')](_0x187711[_0xcfba('0x2f')],function(_0x2cb131){var _0x11524f={};_0x11524f[_0x2cb131]={'$like':'%'+_0x358477[_0xcfba('0x2d')]['filter']+'%'};return _0x11524f;})});}_0x187711=_[_0xcfba('0x38')]({},_0x187711,_0x358477[_0xcfba('0x3b')]);return _0x3c76a4[_0xcfba('0x48')](_0x187711);}})['then'](function(_0x3a32a6){if(_0x3a32a6){_0x288d88=_0x3a32a6['length'];if(!_0x358477[_0xcfba('0x2d')][_0xcfba('0x4b')](_0xcfba('0x32'))){_0x187711[_0xcfba('0x1d')]=qs['limit'](_0x358477[_0xcfba('0x2d')][_0xcfba('0x1d')]);_0x187711[_0xcfba('0x1c')]=qs[_0xcfba('0x1c')](_0x358477['query'][_0xcfba('0x1c')]);}return _0x3c76a4['getConfigurations'](_0x187711);}})[_0xcfba('0x23')](function(_0x349d49){if(_0x349d49){return _0x349d49?{'count':_0x288d88,'rows':_0x349d49}:null;}})[_0xcfba('0x23')](respondWithResult(_0x1193c3,null))[_0xcfba('0x3f')](handleError(_0x1193c3,null));};exports[_0xcfba('0x4c')]=function(_0x4f352b,_0x46aa02,_0x590649){if(_0x4f352b[_0xcfba('0x45')]['id']){delete _0x4f352b[_0xcfba('0x45')]['id'];}return db[_0xcfba('0x28')][_0xcfba('0x49')]({'where':{'id':_0x4f352b['params']['id']}})[_0xcfba('0x23')](handleEntityNotFound(_0x46aa02,null))['then'](function(_0x3caa25){if(_0x3caa25){_0x4f352b['body'][_0xcfba('0x4d')]=_0x3caa25['id'];_0x4f352b[_0xcfba('0x45')]['Subjects']=integrations['getSubjects'](_0x4f352b[_0xcfba('0x45')][_0xcfba('0x4e')],_0x4f352b['body'][_0xcfba('0x29')]);_0x4f352b[_0xcfba('0x45')][_0xcfba('0x4f')]=integrations[_0xcfba('0x50')](_0x4f352b[_0xcfba('0x45')]['channel'],_0x4f352b[_0xcfba('0x45')][_0xcfba('0x29')]);return db['FreshdeskConfiguration']['create'](_0x4f352b[_0xcfba('0x45')],{'include':[{'model':db[_0xcfba('0x51')],'as':_0xcfba('0x52')},{'model':db[_0xcfba('0x51')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x46aa02,null))['catch'](handleError(_0x46aa02,null));};exports['getFields']=function(_0x120dd4,_0x223d03,_0x246c98){var _0x3dfe40='';return db[_0xcfba('0x28')][_0xcfba('0x49')]({'where':{'id':_0x120dd4[_0xcfba('0x46')]['id']},'attributes':['id',_0xcfba('0x53'),'apiKey']})[_0xcfba('0x23')](handleEntityNotFound(_0x223d03,null))[_0xcfba('0x23')](function(_0x3e5b25){if(_0x3e5b25){_0x3dfe40=_0x3e5b25[_0xcfba('0x53')];var _0x8e5974=_0x3dfe40[_0xcfba('0x54')](-0x1);if(_0x8e5974==='/'){_0x3dfe40=_0x3dfe40[_0xcfba('0x55')](0x0,_0x3dfe40[_0xcfba('0x56')](_0x8e5974));}return rp({'method':_0xcfba('0x57'),'uri':util[_0xcfba('0x58')]('%s/%s',_0x3dfe40,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0xcfba('0x58')](_0xcfba('0x59'),new Buffer(util[_0xcfba('0x58')](_0xcfba('0x5a'),_0x3e5b25[_0xcfba('0x5b')]))[_0xcfba('0x5c')](_0xcfba('0x5d')))},'json':!![]});}})[_0xcfba('0x23')](function(_0x380bab){if(_0x380bab){var _0x2afafb=[_0xcfba('0x5e'),_0xcfba('0x5f'),_0xcfba('0x60'),'description',_0xcfba('0x19'),_0xcfba('0x61'),_0xcfba('0x62'),_0xcfba('0x63'),'ticket_type',_0xcfba('0x62'),_0xcfba('0x64')];_[_0xcfba('0x65')](_0x380bab,function(_0x13ec29){return _0x2afafb[_0xcfba('0x66')](_0x13ec29['name'])||!_0x13ec29[_0xcfba('0x67')]&&_0x13ec29[_0xcfba('0x29')]!==_0xcfba('0x68')&&_0x13ec29[_0xcfba('0x29')]!==_0xcfba('0x69');});return{'count':_0x380bab[_0xcfba('0x31')],'rows':_[_0xcfba('0x2c')](_0x380bab,function(_0x19a59a){return{'id':_0x19a59a[_0xcfba('0x25')],'name':_0x19a59a[_0xcfba('0x6a')],'custom':!_0x19a59a[_0xcfba('0x67')],'options':_0x19a59a['choices']?_[_0xcfba('0x2c')](_0x19a59a['choices'],function(_0x4d5f47){return{'name':_[_0xcfba('0x6b')](_0x4d5f47),'value':_0x4d5f47};}):[]};})};}})[_0xcfba('0x23')](respondWithResult(_0x223d03,null))[_0xcfba('0x3f')](function(_0x385c0a){var _0x59674b=_0x120dd4[_0xcfba('0x2d')][_0xcfba('0x6c')]?0x1f4:_0x385c0a[_0xcfba('0x6d')]||0x1f4;logger[_0xcfba('0x24')](_0xcfba('0x6e'),_0xcfba('0x6f'),_0x59674b,JSON[_0xcfba('0x70')](_0x385c0a));delete _0x385c0a[_0xcfba('0x25')];if(_0x59674b===0x191){_0x59674b=0x190;}_0x223d03[_0xcfba('0x19')](_0x59674b)[_0xcfba('0x26')](_0x120dd4[_0xcfba('0x2d')][_0xcfba('0x6c')]?{'message':_0xcfba('0x71'),'statusCode':_0x385c0a[_0xcfba('0x6d')]}:_0x385c0a);});};
\ No newline at end of file
+var _0xde6f=['toString','base64','requester','subject','agent','description','priority','group','source','company','remove','includes','custom_text','label','default','capitalize','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','statusCode','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','status','end','limit','count','offset','set','Content-Range','json','apply','save','update','destroy','sendStatus','error','name','send','map','rawAttributes','key','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','type','VIRTUAL','options','then','includeAll','include','FreshdeskAccount','findAll','rows','catch','show','keys','find','create','body','params','getConfigurations','findOne','FreshdeskConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','lastIndexOf','GET','format','%s:X'];(function(_0x279279,_0x5902bc){var _0x41ae13=function(_0x3923cd){while(--_0x3923cd){_0x279279['push'](_0x279279['shift']());}};_0x41ae13(++_0x5902bc);}(_0xde6f,0x84));var _0xfde6=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xde6f[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfde6('0x0'));var jsonpatch=require(_0xfde6('0x1'));var rp=require(_0xfde6('0x2'));var moment=require('moment');var BPromise=require(_0xfde6('0x3'));var Mustache=require(_0xfde6('0x4'));var util=require(_0xfde6('0x5'));var path=require(_0xfde6('0x6'));var sox=require(_0xfde6('0x7'));var csv=require(_0xfde6('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfde6('0x9'));var squel=require(_0xfde6('0xa'));var crypto=require(_0xfde6('0xb'));var jsforce=require(_0xfde6('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xfde6('0x8'));var querystring=require(_0xfde6('0xd'));var Papa=require(_0xfde6('0xe'));var Redis=require('ioredis');var authService=require(_0xfde6('0xf'));var qs=require(_0xfde6('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xfde6('0x11'))(_0xfde6('0x12'));var utils=require(_0xfde6('0x13'));var config=require(_0xfde6('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xfde6('0x15'))['db'];var integrations=require(_0xfde6('0x16'));function respondWithStatusCode(_0x3a3776,_0x1c5ade){_0x1c5ade=_0x1c5ade||0xcc;return function(_0x13da60){if(_0x13da60){return _0x3a3776['sendStatus'](_0x1c5ade);}return _0x3a3776[_0xfde6('0x17')](_0x1c5ade)[_0xfde6('0x18')]();};}function respondWithResult(_0x5d129c,_0x8237f4){_0x8237f4=_0x8237f4||0xc8;return function(_0x35f5a4){if(_0x35f5a4){return _0x5d129c[_0xfde6('0x17')](_0x8237f4)['json'](_0x35f5a4);}};}function respondWithFilteredResult(_0x159254,_0xcd2776){return function(_0x101ea8){if(_0x101ea8){var _0x17d5e6=typeof _0xcd2776['offset']==='undefined'&&typeof _0xcd2776[_0xfde6('0x19')]==='undefined';var _0x799ed9=_0x101ea8[_0xfde6('0x1a')];var _0x480e5f=_0x17d5e6?0x0:_0xcd2776[_0xfde6('0x1b')];var _0x55195f=_0x17d5e6?_0x101ea8[_0xfde6('0x1a')]:_0xcd2776[_0xfde6('0x1b')]+_0xcd2776[_0xfde6('0x19')];var _0x39b235;if(_0x55195f>=_0x799ed9){_0x55195f=_0x799ed9;_0x39b235=0xc8;}else{_0x39b235=0xce;}_0x159254[_0xfde6('0x17')](_0x39b235);return _0x159254[_0xfde6('0x1c')](_0xfde6('0x1d'),_0x480e5f+'-'+_0x55195f+'/'+_0x799ed9)[_0xfde6('0x1e')](_0x101ea8);}return null;};}function patchUpdates(_0x1a4076){return function(_0x599c33){try{jsonpatch[_0xfde6('0x1f')](_0x599c33,_0x1a4076,!![]);}catch(_0x40644b){return BPromise['reject'](_0x40644b);}return _0x599c33[_0xfde6('0x20')]();};}function saveUpdates(_0x458cfc,_0x4ff8e2){return function(_0x2b2a6b){if(_0x2b2a6b){return _0x2b2a6b[_0xfde6('0x21')](_0x458cfc)['then'](function(_0x56664c){return _0x56664c;});}return null;};}function removeEntity(_0x2c3c4d,_0xc18655){return function(_0x4bc2c2){if(_0x4bc2c2){return _0x4bc2c2[_0xfde6('0x22')]()['then'](function(){_0x2c3c4d['status'](0xcc)[_0xfde6('0x18')]();});}};}function handleEntityNotFound(_0x3f2360,_0x62e9b8){return function(_0x207c0e){if(!_0x207c0e){_0x3f2360[_0xfde6('0x23')](0x194);}return _0x207c0e;};}function handleError(_0x3304d6,_0x4f1215){_0x4f1215=_0x4f1215||0x1f4;return function(_0xaa78f7){logger[_0xfde6('0x24')](_0xaa78f7['stack']);if(_0xaa78f7[_0xfde6('0x25')]){delete _0xaa78f7['name'];}_0x3304d6[_0xfde6('0x17')](_0x4f1215)[_0xfde6('0x26')](_0xaa78f7);};}exports['index']=function(_0x470b50,_0x10923b){var _0x54e872={},_0x43c043={},_0x3a7843={'count':0x0,'rows':[]};var _0x49fd9c=_[_0xfde6('0x27')](db['FreshdeskAccount'][_0xfde6('0x28')],function(_0x584476){return{'name':_0x584476['fieldName'],'type':_0x584476['type'][_0xfde6('0x29')]};});_0x43c043[_0xfde6('0x2a')]=_[_0xfde6('0x27')](_0x49fd9c,_0xfde6('0x25'));_0x43c043[_0xfde6('0x2b')]=_['keys'](_0x470b50['query']);_0x43c043['filters']=_[_0xfde6('0x2c')](_0x43c043[_0xfde6('0x2a')],_0x43c043[_0xfde6('0x2b')]);_0x54e872[_0xfde6('0x2d')]=_[_0xfde6('0x2c')](_0x43c043[_0xfde6('0x2a')],qs[_0xfde6('0x2e')](_0x470b50[_0xfde6('0x2b')][_0xfde6('0x2e')]));_0x54e872['attributes']=_0x54e872[_0xfde6('0x2d')][_0xfde6('0x2f')]?_0x54e872[_0xfde6('0x2d')]:_0x43c043[_0xfde6('0x2a')];if(!_0x470b50['query'][_0xfde6('0x30')]('nolimit')){_0x54e872[_0xfde6('0x19')]=qs[_0xfde6('0x19')](_0x470b50[_0xfde6('0x2b')][_0xfde6('0x19')]);_0x54e872['offset']=qs[_0xfde6('0x1b')](_0x470b50['query'][_0xfde6('0x1b')]);}_0x54e872[_0xfde6('0x31')]=qs['sort'](_0x470b50[_0xfde6('0x2b')][_0xfde6('0x32')]);_0x54e872[_0xfde6('0x33')]=qs[_0xfde6('0x34')](_['pick'](_0x470b50[_0xfde6('0x2b')],_0x43c043[_0xfde6('0x34')]),_0x49fd9c);if(_0x470b50[_0xfde6('0x2b')][_0xfde6('0x35')]){_0x54e872[_0xfde6('0x33')]=_[_0xfde6('0x36')](_0x54e872[_0xfde6('0x33')],{'$or':_[_0xfde6('0x27')](_0x49fd9c,function(_0x3716c6){if(_0x3716c6[_0xfde6('0x37')]!==_0xfde6('0x38')){var _0x266819={};_0x266819[_0x3716c6[_0xfde6('0x25')]]={'$like':'%'+_0x470b50[_0xfde6('0x2b')][_0xfde6('0x35')]+'%'};return _0x266819;}})});}_0x54e872=_[_0xfde6('0x36')]({},_0x54e872,_0x470b50[_0xfde6('0x39')]);var _0x59cfe2={'where':_0x54e872['where']};return db['FreshdeskAccount'][_0xfde6('0x1a')](_0x59cfe2)[_0xfde6('0x3a')](function(_0x507523){_0x3a7843[_0xfde6('0x1a')]=_0x507523;if(_0x470b50[_0xfde6('0x2b')][_0xfde6('0x3b')]){_0x54e872[_0xfde6('0x3c')]=[{'all':!![]}];}return db[_0xfde6('0x3d')][_0xfde6('0x3e')](_0x54e872);})[_0xfde6('0x3a')](function(_0x330f65){_0x3a7843[_0xfde6('0x3f')]=_0x330f65;return _0x3a7843;})[_0xfde6('0x3a')](respondWithFilteredResult(_0x10923b,_0x54e872))[_0xfde6('0x40')](handleError(_0x10923b,null));};exports[_0xfde6('0x41')]=function(_0x399213,_0x4d40f2){var _0x26e182={'raw':![],'where':{'id':_0x399213['params']['id']}},_0x23dd53={};_0x23dd53[_0xfde6('0x2a')]=_[_0xfde6('0x42')](db[_0xfde6('0x3d')][_0xfde6('0x28')]);_0x23dd53[_0xfde6('0x2b')]=_[_0xfde6('0x42')](_0x399213[_0xfde6('0x2b')]);_0x23dd53[_0xfde6('0x34')]=_[_0xfde6('0x2c')](_0x23dd53[_0xfde6('0x2a')],_0x23dd53[_0xfde6('0x2b')]);_0x26e182[_0xfde6('0x2d')]=_[_0xfde6('0x2c')](_0x23dd53[_0xfde6('0x2a')],qs[_0xfde6('0x2e')](_0x399213[_0xfde6('0x2b')]['fields']));_0x26e182[_0xfde6('0x2d')]=_0x26e182[_0xfde6('0x2d')][_0xfde6('0x2f')]?_0x26e182[_0xfde6('0x2d')]:_0x23dd53[_0xfde6('0x2a')];if(_0x399213['query'][_0xfde6('0x3b')]){_0x26e182[_0xfde6('0x3c')]=[{'all':!![]}];}_0x26e182=_[_0xfde6('0x36')]({},_0x26e182,_0x399213['options']);return db['FreshdeskAccount'][_0xfde6('0x43')](_0x26e182)[_0xfde6('0x3a')](handleEntityNotFound(_0x4d40f2,null))[_0xfde6('0x3a')](respondWithResult(_0x4d40f2,null))[_0xfde6('0x40')](handleError(_0x4d40f2,null));};exports[_0xfde6('0x44')]=function(_0x501894,_0x52d0c8){return db[_0xfde6('0x3d')][_0xfde6('0x44')](_0x501894[_0xfde6('0x45')],{})['then'](respondWithResult(_0x52d0c8,0xc9))[_0xfde6('0x40')](handleError(_0x52d0c8,null));};exports['update']=function(_0x1cb1c5,_0x2e9952){if(_0x1cb1c5[_0xfde6('0x45')]['id']){delete _0x1cb1c5[_0xfde6('0x45')]['id'];}return db[_0xfde6('0x3d')][_0xfde6('0x43')]({'where':{'id':_0x1cb1c5[_0xfde6('0x46')]['id']}})[_0xfde6('0x3a')](handleEntityNotFound(_0x2e9952,null))[_0xfde6('0x3a')](saveUpdates(_0x1cb1c5[_0xfde6('0x45')],null))['then'](respondWithResult(_0x2e9952,null))[_0xfde6('0x40')](handleError(_0x2e9952,null));};exports[_0xfde6('0x22')]=function(_0x52716c,_0xa649e7){return db[_0xfde6('0x3d')]['find']({'where':{'id':_0x52716c[_0xfde6('0x46')]['id']}})[_0xfde6('0x3a')](handleEntityNotFound(_0xa649e7,null))[_0xfde6('0x3a')](removeEntity(_0xa649e7,null))[_0xfde6('0x40')](handleError(_0xa649e7,null));};exports[_0xfde6('0x47')]=function(_0x22b79f,_0x9725,_0x369216){var _0xa012f2={};var _0x109428={};var _0x23f35f;var _0x507d55;return db['FreshdeskAccount'][_0xfde6('0x48')]({'where':{'id':_0x22b79f[_0xfde6('0x46')]['id']}})[_0xfde6('0x3a')](handleEntityNotFound(_0x9725,null))[_0xfde6('0x3a')](function(_0x344c8e){if(_0x344c8e){_0x23f35f=_0x344c8e;_0x109428[_0xfde6('0x2a')]=_[_0xfde6('0x42')](db[_0xfde6('0x49')][_0xfde6('0x28')]);_0x109428[_0xfde6('0x2b')]=_[_0xfde6('0x42')](_0x22b79f[_0xfde6('0x2b')]);_0x109428[_0xfde6('0x34')]=_[_0xfde6('0x2c')](_0x109428[_0xfde6('0x2a')],_0x109428[_0xfde6('0x2b')]);_0xa012f2[_0xfde6('0x2d')]=_['intersection'](_0x109428['model'],qs['fields'](_0x22b79f[_0xfde6('0x2b')][_0xfde6('0x2e')]));_0xa012f2[_0xfde6('0x2d')]=_0xa012f2[_0xfde6('0x2d')][_0xfde6('0x2f')]?_0xa012f2[_0xfde6('0x2d')]:_0x109428['model'];_0xa012f2['order']=qs[_0xfde6('0x32')](_0x22b79f['query']['sort']);_0xa012f2[_0xfde6('0x33')]=qs[_0xfde6('0x34')](_[_0xfde6('0x4a')](_0x22b79f[_0xfde6('0x2b')],_0x109428[_0xfde6('0x34')]));if(_0x22b79f[_0xfde6('0x2b')]['filter']){_0xa012f2['where']=_[_0xfde6('0x36')](_0xa012f2['where'],{'$or':_[_0xfde6('0x27')](_0xa012f2['attributes'],function(_0x4751a8){var _0x295276={};_0x295276[_0x4751a8]={'$like':'%'+_0x22b79f[_0xfde6('0x2b')][_0xfde6('0x35')]+'%'};return _0x295276;})});}_0xa012f2=_[_0xfde6('0x36')]({},_0xa012f2,_0x22b79f[_0xfde6('0x39')]);return _0x23f35f[_0xfde6('0x47')](_0xa012f2);}})[_0xfde6('0x3a')](function(_0x4ebd9){if(_0x4ebd9){_0x507d55=_0x4ebd9[_0xfde6('0x2f')];if(!_0x22b79f['query'][_0xfde6('0x30')]('nolimit')){_0xa012f2[_0xfde6('0x19')]=qs[_0xfde6('0x19')](_0x22b79f[_0xfde6('0x2b')][_0xfde6('0x19')]);_0xa012f2['offset']=qs[_0xfde6('0x1b')](_0x22b79f['query'][_0xfde6('0x1b')]);}return _0x23f35f[_0xfde6('0x47')](_0xa012f2);}})[_0xfde6('0x3a')](function(_0x5aa2d6){if(_0x5aa2d6){return _0x5aa2d6?{'count':_0x507d55,'rows':_0x5aa2d6}:null;}})[_0xfde6('0x3a')](respondWithResult(_0x9725,null))[_0xfde6('0x40')](handleError(_0x9725,null));};exports[_0xfde6('0x4b')]=function(_0x43488f,_0x3066b9,_0x3c29e2){if(_0x43488f[_0xfde6('0x45')]['id']){delete _0x43488f['body']['id'];}return db[_0xfde6('0x3d')][_0xfde6('0x48')]({'where':{'id':_0x43488f[_0xfde6('0x46')]['id']}})[_0xfde6('0x3a')](handleEntityNotFound(_0x3066b9,null))[_0xfde6('0x3a')](function(_0x2c6ade){if(_0x2c6ade){_0x43488f[_0xfde6('0x45')][_0xfde6('0x4c')]=_0x2c6ade['id'];_0x43488f[_0xfde6('0x45')][_0xfde6('0x4d')]=integrations[_0xfde6('0x4e')](_0x43488f[_0xfde6('0x45')][_0xfde6('0x4f')],_0x43488f[_0xfde6('0x45')][_0xfde6('0x37')]);_0x43488f['body'][_0xfde6('0x50')]=integrations['getDescriptions'](_0x43488f['body']['channel'],_0x43488f['body'][_0xfde6('0x37')]);return db['FreshdeskConfiguration']['create'](_0x43488f['body'],{'include':[{'model':db[_0xfde6('0x51')],'as':_0xfde6('0x4d')},{'model':db['FreshdeskField'],'as':_0xfde6('0x50')}]});}return null;})[_0xfde6('0x3a')](respondWithResult(_0x3066b9,null))[_0xfde6('0x40')](handleError(_0x3066b9,null));};exports[_0xfde6('0x52')]=function(_0x578ea7,_0x1210f9,_0x42453a){var _0x2821d2='';return db[_0xfde6('0x3d')][_0xfde6('0x48')]({'where':{'id':_0x578ea7[_0xfde6('0x46')]['id']},'attributes':['id',_0xfde6('0x53'),_0xfde6('0x54')]})[_0xfde6('0x3a')](handleEntityNotFound(_0x1210f9,null))[_0xfde6('0x3a')](function(_0x232447){if(_0x232447){_0x2821d2=_0x232447[_0xfde6('0x53')];var _0x86c7a9=_0x2821d2[_0xfde6('0x55')](-0x1);if(_0x86c7a9==='/'){_0x2821d2=_0x2821d2['substring'](0x0,_0x2821d2[_0xfde6('0x56')](_0x86c7a9));}return rp({'method':_0xfde6('0x57'),'uri':util[_0xfde6('0x58')]('%s/%s',_0x2821d2,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0xfde6('0x58')]('Basic\x20%s',new Buffer(util[_0xfde6('0x58')](_0xfde6('0x59'),_0x232447[_0xfde6('0x54')]))[_0xfde6('0x5a')](_0xfde6('0x5b')))},'json':!![]});}})[_0xfde6('0x3a')](function(_0x2a1cb0){if(_0x2a1cb0){var _0x17fd77=[_0xfde6('0x5c'),_0xfde6('0x5d'),_0xfde6('0x5e'),_0xfde6('0x5f'),_0xfde6('0x17'),_0xfde6('0x60'),_0xfde6('0x61'),_0xfde6('0x62'),'ticket_type',_0xfde6('0x61'),_0xfde6('0x63')];_[_0xfde6('0x64')](_0x2a1cb0,function(_0x4b3a7d){return _0x17fd77[_0xfde6('0x65')](_0x4b3a7d[_0xfde6('0x25')])||!_0x4b3a7d['default']&&_0x4b3a7d[_0xfde6('0x37')]!==_0xfde6('0x66')&&_0x4b3a7d[_0xfde6('0x37')]!=='custom_dropdown';});return{'count':_0x2a1cb0['length'],'rows':_[_0xfde6('0x27')](_0x2a1cb0,function(_0x2a8758){return{'id':_0x2a8758['name'],'name':_0x2a8758[_0xfde6('0x67')],'custom':!_0x2a8758[_0xfde6('0x68')],'options':_0x2a8758['choices']?_['map'](_0x2a8758['choices'],function(_0x5cb7ff){return{'name':_[_0xfde6('0x69')](_0x5cb7ff),'value':_0x5cb7ff};}):[]};})};}})[_0xfde6('0x3a')](respondWithResult(_0x1210f9,null))[_0xfde6('0x40')](function(_0x24e9bf){var _0x3d67d1=_0x578ea7[_0xfde6('0x2b')]['test']?0x1f4:_0x24e9bf['statusCode']||0x1f4;logger['error'](_0xfde6('0x6a'),_0xfde6('0x52'),_0x3d67d1,JSON[_0xfde6('0x6b')](_0x24e9bf));delete _0x24e9bf['name'];if(_0x3d67d1===0x191){_0x3d67d1=0x190;}_0x1210f9[_0xfde6('0x17')](_0x3d67d1)[_0xfde6('0x26')](_0x578ea7[_0xfde6('0x2b')][_0xfde6('0x6c')]?{'message':_0xfde6('0x6d'),'statusCode':_0x24e9bf[_0xfde6('0x6e')]}:_0x24e9bf);});};
\ No newline at end of file
index 89dbdbf..209dafd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x200c=['moment','request-promise','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','api'];(function(_0x26ae42,_0x539c41){var _0x483bd9=function(_0x358199){while(--_0x358199){_0x26ae42['push'](_0x26ae42['shift']());}};_0x483bd9(++_0x539c41);}(_0x200c,0x134));var _0xc200=function(_0x16dca4,_0x5c9306){_0x16dca4=_0x16dca4-0x0;var _0x234ee1=_0x200c[_0x16dca4];return _0x234ee1;};'use strict';var _=require(_0xc200('0x0'));var util=require(_0xc200('0x1'));var logger=require(_0xc200('0x2'))(_0xc200('0x3'));var moment=require(_0xc200('0x4'));var BPromise=require('bluebird');var rp=require(_0xc200('0x5'));var fs=require('fs');var path=require(_0xc200('0x6'));var rimraf=require(_0xc200('0x7'));var config=require(_0xc200('0x8'));var attributes=require(_0xc200('0x9'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x204c47,_0x8e6cec){return _0x204c47[_0xc200('0xa')](_0xc200('0xb'),attributes,{'tableName':_0xc200('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4b78=['path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x2a1e56,_0x2a6c8e){var _0x4e1005=function(_0x524003){while(--_0x524003){_0x2a1e56['push'](_0x2a1e56['shift']());}};_0x4e1005(++_0x2a6c8e);}(_0x4b78,0x1c1));var _0x84b7=function(_0x31f353,_0xbc26e3){_0x31f353=_0x31f353-0x0;var _0x31fa17=_0x4b78[_0x31f353];return _0x31fa17;};'use strict';var _=require(_0x84b7('0x0'));var util=require(_0x84b7('0x1'));var logger=require(_0x84b7('0x2'))(_0x84b7('0x3'));var moment=require('moment');var BPromise=require(_0x84b7('0x4'));var rp=require(_0x84b7('0x5'));var fs=require('fs');var path=require(_0x84b7('0x6'));var rimraf=require(_0x84b7('0x7'));var config=require(_0x84b7('0x8'));var attributes=require(_0x84b7('0x9'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x2d9829,_0x2476d){return _0x2d9829[_0x84b7('0xa')](_0x84b7('0xb'),attributes,{'tableName':_0x84b7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5a6620d..9375457 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3f2=['stringify','error','code','message','result','GetFreshdeskAccount','findAll','options','raw','where','include','model','attributes','map','then','ShowFreshdeskAccount','FreshdeskAccount','find','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/environment','client','http','request','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xe3f2,0x101));var _0x2e3f=function(_0x27550b,_0x32882e){_0x27550b=_0x27550b-0x0;var _0x12744b=_0xe3f2[_0x27550b];return _0x12744b;};'use strict';var _=require(_0x2e3f('0x0'));var util=require(_0x2e3f('0x1'));var moment=require(_0x2e3f('0x2'));var BPromise=require(_0x2e3f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2e3f('0x4'));var db=require(_0x2e3f('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x2e3f('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x2e3f('0x7')][_0x2e3f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x440d55,_0x3f05a9,_0x2f6d86){return new BPromise(function(_0x48ace0,_0x425d61){return client[_0x2e3f('0x9')](_0x440d55,_0x2f6d86)['then'](function(_0x2ca1db){logger[_0x2e3f('0xa')](_0x2e3f('0xb'),_0x3f05a9,_0x2e3f('0xc'));logger[_0x2e3f('0xd')](_0x2e3f('0xe'),_0x3f05a9,_0x2e3f('0xc'),JSON[_0x2e3f('0xf')](_0x2ca1db));if(_0x2ca1db[_0x2e3f('0x10')]){if(_0x2ca1db['error'][_0x2e3f('0x11')]===0x1f4){logger[_0x2e3f('0x10')](_0x2e3f('0xb'),_0x3f05a9,_0x2ca1db[_0x2e3f('0x10')][_0x2e3f('0x12')]);return _0x425d61(_0x2ca1db[_0x2e3f('0x10')][_0x2e3f('0x12')]);}logger[_0x2e3f('0x10')]('FreshdeskAccount,\x20%s,\x20%s',_0x3f05a9,_0x2ca1db[_0x2e3f('0x10')][_0x2e3f('0x12')]);return _0x48ace0(_0x2ca1db[_0x2e3f('0x10')][_0x2e3f('0x12')]);}else{logger[_0x2e3f('0xa')](_0x2e3f('0xb'),_0x3f05a9,_0x2e3f('0xc'));_0x48ace0(_0x2ca1db[_0x2e3f('0x13')][_0x2e3f('0x12')]);}})['catch'](function(_0x53f0b4){logger[_0x2e3f('0x10')](_0x2e3f('0xb'),_0x3f05a9,_0x53f0b4);_0x425d61(_0x53f0b4);});});}exports[_0x2e3f('0x14')]=function(_0xd52a46){var _0x53232e=this;return new Promise(function(_0x16daa6,_0x47a335){return db['FreshdeskAccount'][_0x2e3f('0x15')]({'raw':_0xd52a46[_0x2e3f('0x16')]?_0xd52a46[_0x2e3f('0x16')][_0x2e3f('0x17')]===undefined?!![]:![]:!![],'where':_0xd52a46[_0x2e3f('0x16')]?_0xd52a46[_0x2e3f('0x16')][_0x2e3f('0x18')]||null:null,'attributes':_0xd52a46[_0x2e3f('0x16')]?_0xd52a46[_0x2e3f('0x16')]['attributes']||null:null,'limit':_0xd52a46[_0x2e3f('0x16')]?_0xd52a46['options']['limit']||null:null,'include':_0xd52a46[_0x2e3f('0x16')]?_0xd52a46[_0x2e3f('0x16')][_0x2e3f('0x19')]?_['map'](_0xd52a46[_0x2e3f('0x16')][_0x2e3f('0x19')],function(_0x1f84c3){return{'model':db[_0x1f84c3[_0x2e3f('0x1a')]],'as':_0x1f84c3['as'],'attributes':_0x1f84c3[_0x2e3f('0x1b')],'include':_0x1f84c3[_0x2e3f('0x19')]?_['map'](_0x1f84c3[_0x2e3f('0x19')],function(_0x5fd03b){return{'model':db[_0x5fd03b['model']],'as':_0x5fd03b['as'],'attributes':_0x5fd03b[_0x2e3f('0x1b')],'include':_0x5fd03b[_0x2e3f('0x19')]?_[_0x2e3f('0x1c')](_0x5fd03b[_0x2e3f('0x19')],function(_0x81294e){return{'model':db[_0x81294e[_0x2e3f('0x1a')]],'as':_0x81294e['as'],'attributes':_0x81294e[_0x2e3f('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x2e3f('0x1d')](function(_0x577315){logger[_0x2e3f('0xa')](_0x2e3f('0x14'),_0xd52a46);logger[_0x2e3f('0xd')](_0x2e3f('0x14'),_0xd52a46,JSON[_0x2e3f('0xf')](_0x577315));_0x16daa6(_0x577315);})['catch'](function(_0x25f474){logger[_0x2e3f('0x10')](_0x2e3f('0x14'),_0x25f474[_0x2e3f('0x12')],_0xd52a46);_0x47a335(_0x53232e[_0x2e3f('0x10')](0x1f4,_0x25f474['message']));});});};exports[_0x2e3f('0x1e')]=function(_0x4dca8a){var _0x102f4e=this;return new Promise(function(_0x564a8e,_0x436d8a){return db[_0x2e3f('0x1f')][_0x2e3f('0x20')]({'raw':_0x4dca8a['options']?_0x4dca8a[_0x2e3f('0x16')][_0x2e3f('0x17')]===undefined?!![]:![]:!![],'where':_0x4dca8a['options']?_0x4dca8a['options']['where']||null:null,'attributes':_0x4dca8a[_0x2e3f('0x16')]?_0x4dca8a['options'][_0x2e3f('0x1b')]||null:null,'include':_0x4dca8a[_0x2e3f('0x16')]?_0x4dca8a['options']['include']?_[_0x2e3f('0x1c')](_0x4dca8a['options'][_0x2e3f('0x19')],function(_0x1ea807){return{'model':db[_0x1ea807[_0x2e3f('0x1a')]],'as':_0x1ea807['as'],'attributes':_0x1ea807['attributes'],'include':_0x1ea807[_0x2e3f('0x19')]?_[_0x2e3f('0x1c')](_0x1ea807[_0x2e3f('0x19')],function(_0x438fd4){return{'model':db[_0x438fd4['model']],'as':_0x438fd4['as'],'attributes':_0x438fd4[_0x2e3f('0x1b')],'include':_0x438fd4[_0x2e3f('0x19')]?_[_0x2e3f('0x1c')](_0x438fd4['include'],function(_0x1bf1f3){return{'model':db[_0x1bf1f3['model']],'as':_0x1bf1f3['as'],'attributes':_0x1bf1f3[_0x2e3f('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23dc36){logger['info'](_0x2e3f('0x1e'),_0x4dca8a);logger['debug'](_0x2e3f('0x1e'),_0x4dca8a,JSON['stringify'](_0x23dc36));_0x564a8e(_0x23dc36);})[_0x2e3f('0x21')](function(_0x196308){logger[_0x2e3f('0x10')]('ShowFreshdeskAccount',_0x196308[_0x2e3f('0x12')],_0x4dca8a);_0x436d8a(_0x102f4e[_0x2e3f('0x10')](0x1f4,_0x196308[_0x2e3f('0x12')]));});});};
\ No newline at end of file
+var _0x4a9c=['include','map','attributes','model','ShowFreshdeskAccount','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','http','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','limit'];(function(_0x5d8018,_0x588592){var _0x151ac4=function(_0x548679){while(--_0x548679){_0x5d8018['push'](_0x5d8018['shift']());}};_0x151ac4(++_0x588592);}(_0x4a9c,0xcc));var _0xc4a9=function(_0x1d12be,_0x2f6547){_0x1d12be=_0x1d12be-0x0;var _0x24d73c=_0x4a9c[_0x1d12be];return _0x24d73c;};'use strict';var _=require(_0xc4a9('0x0'));var util=require(_0xc4a9('0x1'));var moment=require(_0xc4a9('0x2'));var BPromise=require(_0xc4a9('0x3'));var rs=require(_0xc4a9('0x4'));var fs=require('fs');var Redis=require(_0xc4a9('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc4a9('0x6'));var logger=require(_0xc4a9('0x7'))(_0xc4a9('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc4a9('0x9')][_0xc4a9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x45f405,_0x569ce3,_0x49bbe0){return new BPromise(function(_0x2853c8,_0x57f8b5){return client['request'](_0x45f405,_0x49bbe0)[_0xc4a9('0xb')](function(_0x29272c){logger[_0xc4a9('0xc')](_0xc4a9('0xd'),_0x569ce3,_0xc4a9('0xe'));logger[_0xc4a9('0xf')](_0xc4a9('0x10'),_0x569ce3,_0xc4a9('0xe'),JSON[_0xc4a9('0x11')](_0x29272c));if(_0x29272c[_0xc4a9('0x12')]){if(_0x29272c[_0xc4a9('0x12')]['code']===0x1f4){logger[_0xc4a9('0x12')](_0xc4a9('0xd'),_0x569ce3,_0x29272c[_0xc4a9('0x12')]['message']);return _0x57f8b5(_0x29272c[_0xc4a9('0x12')][_0xc4a9('0x13')]);}logger['error']('FreshdeskAccount,\x20%s,\x20%s',_0x569ce3,_0x29272c[_0xc4a9('0x12')]['message']);return _0x2853c8(_0x29272c[_0xc4a9('0x12')][_0xc4a9('0x13')]);}else{logger[_0xc4a9('0xc')](_0xc4a9('0xd'),_0x569ce3,_0xc4a9('0xe'));_0x2853c8(_0x29272c['result'][_0xc4a9('0x13')]);}})['catch'](function(_0x5e83dc){logger['error'](_0xc4a9('0xd'),_0x569ce3,_0x5e83dc);_0x57f8b5(_0x5e83dc);});});}exports[_0xc4a9('0x14')]=function(_0x4da1dd){var _0x15660f=this;return new Promise(function(_0x48912e,_0x1d2f27){return db[_0xc4a9('0x15')][_0xc4a9('0x16')]({'raw':_0x4da1dd[_0xc4a9('0x17')]?_0x4da1dd[_0xc4a9('0x17')][_0xc4a9('0x18')]===undefined?!![]:![]:!![],'where':_0x4da1dd[_0xc4a9('0x17')]?_0x4da1dd[_0xc4a9('0x17')][_0xc4a9('0x19')]||null:null,'attributes':_0x4da1dd['options']?_0x4da1dd[_0xc4a9('0x17')]['attributes']||null:null,'limit':_0x4da1dd[_0xc4a9('0x17')]?_0x4da1dd[_0xc4a9('0x17')][_0xc4a9('0x1a')]||null:null,'include':_0x4da1dd[_0xc4a9('0x17')]?_0x4da1dd['options'][_0xc4a9('0x1b')]?_[_0xc4a9('0x1c')](_0x4da1dd['options'][_0xc4a9('0x1b')],function(_0x29cbc6){return{'model':db[_0x29cbc6['model']],'as':_0x29cbc6['as'],'attributes':_0x29cbc6[_0xc4a9('0x1d')],'include':_0x29cbc6[_0xc4a9('0x1b')]?_['map'](_0x29cbc6['include'],function(_0x10f05f){return{'model':db[_0x10f05f[_0xc4a9('0x1e')]],'as':_0x10f05f['as'],'attributes':_0x10f05f[_0xc4a9('0x1d')],'include':_0x10f05f[_0xc4a9('0x1b')]?_[_0xc4a9('0x1c')](_0x10f05f[_0xc4a9('0x1b')],function(_0x2b0b16){return{'model':db[_0x2b0b16[_0xc4a9('0x1e')]],'as':_0x2b0b16['as'],'attributes':_0x2b0b16['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fc199){logger[_0xc4a9('0xc')]('GetFreshdeskAccount',_0x4da1dd);logger[_0xc4a9('0xf')](_0xc4a9('0x14'),_0x4da1dd,JSON['stringify'](_0x2fc199));_0x48912e(_0x2fc199);})['catch'](function(_0x20990a){logger[_0xc4a9('0x12')](_0xc4a9('0x14'),_0x20990a['message'],_0x4da1dd);_0x1d2f27(_0x15660f[_0xc4a9('0x12')](0x1f4,_0x20990a[_0xc4a9('0x13')]));});});};exports['ShowFreshdeskAccount']=function(_0x3b941c){var _0x3bb34b=this;return new Promise(function(_0xa71c6f,_0xfe73f8){return db['FreshdeskAccount']['find']({'raw':_0x3b941c[_0xc4a9('0x17')]?_0x3b941c['options']['raw']===undefined?!![]:![]:!![],'where':_0x3b941c[_0xc4a9('0x17')]?_0x3b941c[_0xc4a9('0x17')]['where']||null:null,'attributes':_0x3b941c[_0xc4a9('0x17')]?_0x3b941c[_0xc4a9('0x17')]['attributes']||null:null,'include':_0x3b941c[_0xc4a9('0x17')]?_0x3b941c[_0xc4a9('0x17')][_0xc4a9('0x1b')]?_[_0xc4a9('0x1c')](_0x3b941c[_0xc4a9('0x17')]['include'],function(_0x1068b5){return{'model':db[_0x1068b5[_0xc4a9('0x1e')]],'as':_0x1068b5['as'],'attributes':_0x1068b5['attributes'],'include':_0x1068b5['include']?_[_0xc4a9('0x1c')](_0x1068b5['include'],function(_0x119996){return{'model':db[_0x119996['model']],'as':_0x119996['as'],'attributes':_0x119996[_0xc4a9('0x1d')],'include':_0x119996['include']?_['map'](_0x119996[_0xc4a9('0x1b')],function(_0x8ec037){return{'model':db[_0x8ec037[_0xc4a9('0x1e')]],'as':_0x8ec037['as'],'attributes':_0x8ec037[_0xc4a9('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xc4a9('0xb')](function(_0x2116d3){logger[_0xc4a9('0xc')](_0xc4a9('0x1f'),_0x3b941c);logger[_0xc4a9('0xf')](_0xc4a9('0x1f'),_0x3b941c,JSON[_0xc4a9('0x11')](_0x2116d3));_0xa71c6f(_0x2116d3);})[_0xc4a9('0x20')](function(_0x17c35d){logger[_0xc4a9('0x12')]('ShowFreshdeskAccount',_0x17c35d[_0xc4a9('0x13')],_0x3b941c);_0xfe73f8(_0x3bb34b[_0xc4a9('0x12')](0x1f4,_0x17c35d['message']));});});};
\ No newline at end of file
index 46393c6..d460f4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2f5=['get','/:id','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','getTags','create','post','setTags','update','delete','destroy','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshdeskConfiguration.controller','isAuthenticated','index'];(function(_0xf4555e,_0xff6417){var _0x207720=function(_0xa2d08d){while(--_0xa2d08d){_0xf4555e['push'](_0xf4555e['shift']());}};_0x207720(++_0xff6417);}(_0xd2f5,0x8c));var _0x5d2f=function(_0x395cb7,_0x4d35ba){_0x395cb7=_0x395cb7-0x0;var _0xc9c74c=_0xd2f5[_0x395cb7];return _0xc9c74c;};'use strict';var multer=require(_0x5d2f('0x0'));var util=require(_0x5d2f('0x1'));var path=require('path');var timeout=require(_0x5d2f('0x2'));var express=require('express');var router=express[_0x5d2f('0x3')]();var fs_extra=require(_0x5d2f('0x4'));var auth=require(_0x5d2f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x5d2f('0x6'));var controller=require(_0x5d2f('0x7'));router['get']('/',auth[_0x5d2f('0x8')](),controller[_0x5d2f('0x9')]);router[_0x5d2f('0xa')](_0x5d2f('0xb'),auth[_0x5d2f('0x8')](),controller[_0x5d2f('0xc')]);router[_0x5d2f('0xa')](_0x5d2f('0xd'),auth['isAuthenticated'](),controller['getFields']);router['get'](_0x5d2f('0xe'),auth['isAuthenticated'](),controller[_0x5d2f('0xf')]);router[_0x5d2f('0xa')](_0x5d2f('0x10'),auth[_0x5d2f('0x8')](),controller[_0x5d2f('0x11')]);router[_0x5d2f('0xa')]('/:id/tags',auth[_0x5d2f('0x8')](),controller[_0x5d2f('0x12')]);router['post']('/',auth[_0x5d2f('0x8')](),controller[_0x5d2f('0x13')]);router[_0x5d2f('0x14')]('/:id/tags',auth['isAuthenticated'](),controller[_0x5d2f('0x15')]);router['put']('/:id',auth[_0x5d2f('0x8')](),controller[_0x5d2f('0x16')]);router[_0x5d2f('0x17')]('/:id',auth['isAuthenticated'](),controller[_0x5d2f('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x0374=['/:id/fields','getFields','/:id/subjects','/:id/descriptions','/:id/tags','getTags','create','post','setTags','put','update','delete','/:id','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','isAuthenticated','index','show','get'];(function(_0x4149d1,_0x3664ed){var _0x4a439d=function(_0xd0472e){while(--_0xd0472e){_0x4149d1['push'](_0x4149d1['shift']());}};_0x4a439d(++_0x3664ed);}(_0x0374,0x1a4));var _0x4037=function(_0x574518,_0x177287){_0x574518=_0x574518-0x0;var _0x3ecd4b=_0x0374[_0x574518];return _0x3ecd4b;};'use strict';var multer=require(_0x4037('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4037('0x1'));var express=require(_0x4037('0x2'));var router=express[_0x4037('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x4037('0x4'));var interaction=require(_0x4037('0x5'));var config=require(_0x4037('0x6'));var controller=require(_0x4037('0x7'));router['get']('/',auth[_0x4037('0x8')](),controller[_0x4037('0x9')]);router['get']('/:id',auth[_0x4037('0x8')](),controller[_0x4037('0xa')]);router[_0x4037('0xb')](_0x4037('0xc'),auth[_0x4037('0x8')](),controller[_0x4037('0xd')]);router[_0x4037('0xb')](_0x4037('0xe'),auth[_0x4037('0x8')](),controller['getSubjects']);router[_0x4037('0xb')](_0x4037('0xf'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x4037('0xb')](_0x4037('0x10'),auth['isAuthenticated'](),controller[_0x4037('0x11')]);router['post']('/',auth[_0x4037('0x8')](),controller[_0x4037('0x12')]);router[_0x4037('0x13')]('/:id/tags',auth['isAuthenticated'](),controller[_0x4037('0x14')]);router[_0x4037('0x15')]('/:id',auth[_0x4037('0x8')](),controller[_0x4037('0x16')]);router[_0x4037('0x17')](_0x4037('0x18'),auth[_0x4037('0x8')](),controller[_0x4037('0x19')]);module[_0x4037('0x1a')]=router;
\ No newline at end of file
index 182f5a2..b79f815 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb37=['STRING','sequelize'];(function(_0x2db652,_0x38e52e){var _0x1a1d11=function(_0x3efd04){while(--_0x3efd04){_0x2db652['push'](_0x2db652['shift']());}};_0x1a1d11(++_0x38e52e);}(_0xdb37,0x1ab));var _0x7db3=function(_0x3b9e13,_0x21780e){_0x3b9e13=_0x3b9e13-0x0;var _0x18368b=_0xdb37[_0x3b9e13];return _0x18368b;};'use strict';var Sequelize=require(_0x7db3('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7db3('0x1')]}};
\ No newline at end of file
+var _0xb069=['sequelize'];(function(_0x598b78,_0xf4ee7e){var _0x6392fa=function(_0x810353){while(--_0x810353){_0x598b78['push'](_0x598b78['shift']());}};_0x6392fa(++_0xf4ee7e);}(_0xb069,0x1df));var _0x9b06=function(_0x93beb0,_0x5105d0){_0x93beb0=_0x93beb0-0x0;var _0x1e0025=_0xb069[_0x93beb0];return _0x1e0025;};'use strict';var Sequelize=require(_0x9b06('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e3fb51f..50f0a2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4428=['sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','error','stack','name','index','map','FreshdeskConfiguration','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','FreshdeskField','getFields','hasOwnProperty','getSubjects','findOne','pick','getTags','setTags','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x46d3cb,_0x5eabe4){var _0x18daa6=function(_0x1e0274){while(--_0x1e0274){_0x46d3cb['push'](_0x46d3cb['shift']());}};_0x18daa6(++_0x5eabe4);}(_0x4428,0x1cf));var _0x8442=function(_0x344a3f,_0x579a22){_0x344a3f=_0x344a3f-0x0;var _0x264712=_0x4428[_0x344a3f];return _0x264712;};'use strict';var emlformat=require(_0x8442('0x0'));var rimraf=require(_0x8442('0x1'));var zipdir=require(_0x8442('0x2'));var jsonpatch=require(_0x8442('0x3'));var rp=require('request-promise');var moment=require(_0x8442('0x4'));var BPromise=require(_0x8442('0x5'));var Mustache=require(_0x8442('0x6'));var util=require(_0x8442('0x7'));var path=require('path');var sox=require(_0x8442('0x8'));var csv=require('to-csv');var ejs=require(_0x8442('0x9'));var fs=require('fs');var fs_extra=require(_0x8442('0xa'));var _=require('lodash');var squel=require(_0x8442('0xb'));var crypto=require('crypto');var jsforce=require(_0x8442('0xc'));var deskjs=require(_0x8442('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8442('0xe'));var Papa=require('papaparse');var Redis=require(_0x8442('0xf'));var authService=require(_0x8442('0x10'));var qs=require(_0x8442('0x11'));var as=require(_0x8442('0x12'));var hardwareService=require(_0x8442('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x8442('0x14'));var config=require(_0x8442('0x15'));var licenseUtil=require(_0x8442('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x273eb3,_0x4e7519){_0x4e7519=_0x4e7519||0xcc;return function(_0x5986b7){if(_0x5986b7){return _0x273eb3[_0x8442('0x17')](_0x4e7519);}return _0x273eb3[_0x8442('0x18')](_0x4e7519)[_0x8442('0x19')]();};}function respondWithResult(_0x27aa2e,_0x30b022){_0x30b022=_0x30b022||0xc8;return function(_0x4ffdeb){if(_0x4ffdeb){return _0x27aa2e['status'](_0x30b022)[_0x8442('0x1a')](_0x4ffdeb);}};}function respondWithFilteredResult(_0xfd1041,_0x3ea5ed){return function(_0x4aa872){if(_0x4aa872){var _0x574488=typeof _0x3ea5ed[_0x8442('0x1b')]===_0x8442('0x1c')&&typeof _0x3ea5ed[_0x8442('0x1d')]===_0x8442('0x1c');var _0x474f5e=_0x4aa872[_0x8442('0x1e')];var _0x4402f1=_0x574488?0x0:_0x3ea5ed[_0x8442('0x1b')];var _0x394759=_0x574488?_0x4aa872[_0x8442('0x1e')]:_0x3ea5ed[_0x8442('0x1b')]+_0x3ea5ed[_0x8442('0x1d')];var _0x1b041e;if(_0x394759>=_0x474f5e){_0x394759=_0x474f5e;_0x1b041e=0xc8;}else{_0x1b041e=0xce;}_0xfd1041[_0x8442('0x18')](_0x1b041e);return _0xfd1041['set'](_0x8442('0x1f'),_0x4402f1+'-'+_0x394759+'/'+_0x474f5e)[_0x8442('0x1a')](_0x4aa872);}return null;};}function patchUpdates(_0x295b3d){return function(_0x5c7c32){try{jsonpatch[_0x8442('0x20')](_0x5c7c32,_0x295b3d,!![]);}catch(_0x15f595){return BPromise[_0x8442('0x21')](_0x15f595);}return _0x5c7c32['save']();};}function saveUpdates(_0xc50ac2,_0x43dbbe){return function(_0x4b9962){if(_0x4b9962){return _0x4b9962[_0x8442('0x22')](_0xc50ac2)[_0x8442('0x23')](function(_0x37a646){return _0x37a646;});}return null;};}function removeEntity(_0x5a7bfb,_0x410c77){return function(_0x45321e){if(_0x45321e){return _0x45321e[_0x8442('0x24')]()['then'](function(){_0x5a7bfb[_0x8442('0x18')](0xcc)[_0x8442('0x19')]();});}};}function handleEntityNotFound(_0x3a2efd,_0x45284e){return function(_0x26c6b6){if(!_0x26c6b6){_0x3a2efd[_0x8442('0x17')](0x194);}return _0x26c6b6;};}function handleError(_0x59228e,_0x5c876b){_0x5c876b=_0x5c876b||0x1f4;return function(_0x219109){logger[_0x8442('0x25')](_0x219109[_0x8442('0x26')]);if(_0x219109[_0x8442('0x27')]){delete _0x219109[_0x8442('0x27')];}_0x59228e[_0x8442('0x18')](_0x5c876b)['send'](_0x219109);};}exports[_0x8442('0x28')]=function(_0x215384,_0x44a0f7){var _0x4b0256={},_0x4dc09d={},_0x2a06b={'count':0x0,'rows':[]};var _0x8760d9=_[_0x8442('0x29')](db[_0x8442('0x2a')][_0x8442('0x2b')],function(_0x917a4e){return{'name':_0x917a4e[_0x8442('0x2c')],'type':_0x917a4e[_0x8442('0x2d')][_0x8442('0x2e')]};});_0x4dc09d['model']=_[_0x8442('0x29')](_0x8760d9,_0x8442('0x27'));_0x4dc09d['query']=_[_0x8442('0x2f')](_0x215384[_0x8442('0x30')]);_0x4dc09d[_0x8442('0x31')]=_[_0x8442('0x32')](_0x4dc09d[_0x8442('0x33')],_0x4dc09d['query']);_0x4b0256[_0x8442('0x34')]=_['intersection'](_0x4dc09d[_0x8442('0x33')],qs[_0x8442('0x35')](_0x215384[_0x8442('0x30')][_0x8442('0x35')]));_0x4b0256[_0x8442('0x34')]=_0x4b0256[_0x8442('0x34')][_0x8442('0x36')]?_0x4b0256[_0x8442('0x34')]:_0x4dc09d[_0x8442('0x33')];if(!_0x215384[_0x8442('0x30')]['hasOwnProperty'](_0x8442('0x37'))){_0x4b0256[_0x8442('0x1d')]=qs[_0x8442('0x1d')](_0x215384[_0x8442('0x30')][_0x8442('0x1d')]);_0x4b0256[_0x8442('0x1b')]=qs[_0x8442('0x1b')](_0x215384[_0x8442('0x30')][_0x8442('0x1b')]);}_0x4b0256[_0x8442('0x38')]=qs[_0x8442('0x39')](_0x215384[_0x8442('0x30')][_0x8442('0x39')]);_0x4b0256[_0x8442('0x3a')]=qs['filters'](_['pick'](_0x215384[_0x8442('0x30')],_0x4dc09d[_0x8442('0x31')]),_0x8760d9);if(_0x215384[_0x8442('0x30')][_0x8442('0x3b')]){_0x4b0256['where']=_[_0x8442('0x3c')](_0x4b0256[_0x8442('0x3a')],{'$or':_[_0x8442('0x29')](_0x8760d9,function(_0x58d2bb){if(_0x58d2bb[_0x8442('0x2d')]!==_0x8442('0x3d')){var _0x5c0d21={};_0x5c0d21[_0x58d2bb[_0x8442('0x27')]]={'$like':'%'+_0x215384[_0x8442('0x30')]['filter']+'%'};return _0x5c0d21;}})});}_0x4b0256=_[_0x8442('0x3c')]({},_0x4b0256,_0x215384[_0x8442('0x3e')]);var _0x557bfe={'where':_0x4b0256[_0x8442('0x3a')]};return db['FreshdeskConfiguration']['count'](_0x557bfe)['then'](function(_0x395b6d){_0x2a06b[_0x8442('0x1e')]=_0x395b6d;if(_0x215384[_0x8442('0x30')][_0x8442('0x3f')]){_0x4b0256[_0x8442('0x40')]=[{'all':!![]}];}return db[_0x8442('0x2a')][_0x8442('0x41')](_0x4b0256);})[_0x8442('0x23')](function(_0x209a20){_0x2a06b[_0x8442('0x42')]=_0x209a20;return _0x2a06b;})[_0x8442('0x23')](respondWithFilteredResult(_0x44a0f7,_0x4b0256))[_0x8442('0x43')](handleError(_0x44a0f7,null));};exports[_0x8442('0x44')]=function(_0x503def,_0x32bb01){var _0x4d0f27={'raw':![],'where':{'id':_0x503def[_0x8442('0x45')]['id']}},_0x1e4c10={};_0x1e4c10[_0x8442('0x33')]=_[_0x8442('0x2f')](db[_0x8442('0x2a')][_0x8442('0x2b')]);_0x1e4c10['query']=_['keys'](_0x503def[_0x8442('0x30')]);_0x1e4c10[_0x8442('0x31')]=_[_0x8442('0x32')](_0x1e4c10[_0x8442('0x33')],_0x1e4c10[_0x8442('0x30')]);_0x4d0f27['attributes']=_[_0x8442('0x32')](_0x1e4c10[_0x8442('0x33')],qs[_0x8442('0x35')](_0x503def['query'][_0x8442('0x35')]));_0x4d0f27[_0x8442('0x34')]=_0x4d0f27[_0x8442('0x34')]['length']?_0x4d0f27[_0x8442('0x34')]:_0x1e4c10[_0x8442('0x33')];if(_0x503def[_0x8442('0x30')][_0x8442('0x3f')]){_0x4d0f27[_0x8442('0x40')]=[{'all':!![]}];}_0x4d0f27=_[_0x8442('0x3c')]({},_0x4d0f27,_0x503def[_0x8442('0x3e')]);return db['FreshdeskConfiguration'][_0x8442('0x46')](_0x4d0f27)[_0x8442('0x23')](handleEntityNotFound(_0x32bb01,null))[_0x8442('0x23')](respondWithResult(_0x32bb01,null))[_0x8442('0x43')](handleError(_0x32bb01,null));};exports[_0x8442('0x47')]=function(_0x43e697,_0x2b7158){return db['FreshdeskConfiguration'][_0x8442('0x47')](_0x43e697[_0x8442('0x48')],{})[_0x8442('0x23')](respondWithResult(_0x2b7158,0xc9))['catch'](handleError(_0x2b7158,null));};exports[_0x8442('0x22')]=function(_0x41022c,_0x442340){if(_0x41022c['body']['id']){delete _0x41022c[_0x8442('0x48')]['id'];}return db[_0x8442('0x2a')][_0x8442('0x46')]({'where':{'id':_0x41022c['params']['id']}})[_0x8442('0x23')](handleEntityNotFound(_0x442340,null))[_0x8442('0x23')](saveUpdates(_0x41022c[_0x8442('0x48')],null))[_0x8442('0x23')](respondWithResult(_0x442340,null))[_0x8442('0x43')](handleError(_0x442340,null));};exports[_0x8442('0x24')]=function(_0x451143,_0x2f4101){return db['FreshdeskConfiguration'][_0x8442('0x46')]({'where':{'id':_0x451143[_0x8442('0x45')]['id']}})['then'](handleEntityNotFound(_0x2f4101,null))[_0x8442('0x23')](removeEntity(_0x2f4101,null))['catch'](handleError(_0x2f4101,null));};exports['getFields']=function(_0x49d86c,_0x3fa711,_0x2d2f94){var _0xab0ec9={};var _0x4ab0c9={};var _0x439045;var _0x29ec84;return db[_0x8442('0x2a')]['findOne']({'where':{'id':_0x49d86c['params']['id']}})['then'](handleEntityNotFound(_0x3fa711,null))[_0x8442('0x23')](function(_0x187414){if(_0x187414){_0x439045=_0x187414;_0x4ab0c9[_0x8442('0x33')]=_[_0x8442('0x2f')](db[_0x8442('0x49')][_0x8442('0x2b')]);_0x4ab0c9[_0x8442('0x30')]=_[_0x8442('0x2f')](_0x49d86c[_0x8442('0x30')]);_0x4ab0c9['filters']=_[_0x8442('0x32')](_0x4ab0c9[_0x8442('0x33')],_0x4ab0c9[_0x8442('0x30')]);_0xab0ec9['attributes']=_[_0x8442('0x32')](_0x4ab0c9[_0x8442('0x33')],qs['fields'](_0x49d86c[_0x8442('0x30')]['fields']));_0xab0ec9[_0x8442('0x34')]=_0xab0ec9['attributes'][_0x8442('0x36')]?_0xab0ec9[_0x8442('0x34')]:_0x4ab0c9[_0x8442('0x33')];_0xab0ec9[_0x8442('0x38')]=qs[_0x8442('0x39')](_0x49d86c[_0x8442('0x30')][_0x8442('0x39')]);_0xab0ec9[_0x8442('0x3a')]=qs['filters'](_['pick'](_0x49d86c['query'],_0x4ab0c9[_0x8442('0x31')]));if(_0x49d86c[_0x8442('0x30')][_0x8442('0x3b')]){_0xab0ec9[_0x8442('0x3a')]=_[_0x8442('0x3c')](_0xab0ec9[_0x8442('0x3a')],{'$or':_[_0x8442('0x29')](_0xab0ec9[_0x8442('0x34')],function(_0x4f548e){var _0x51c764={};_0x51c764[_0x4f548e]={'$like':'%'+_0x49d86c[_0x8442('0x30')]['filter']+'%'};return _0x51c764;})});}_0xab0ec9=_['merge']({},_0xab0ec9,_0x49d86c[_0x8442('0x3e')]);return _0x439045[_0x8442('0x4a')](_0xab0ec9);}})[_0x8442('0x23')](function(_0x46c332){if(_0x46c332){_0x29ec84=_0x46c332[_0x8442('0x36')];if(!_0x49d86c['query'][_0x8442('0x4b')](_0x8442('0x37'))){_0xab0ec9[_0x8442('0x1d')]=qs[_0x8442('0x1d')](_0x49d86c[_0x8442('0x30')][_0x8442('0x1d')]);_0xab0ec9[_0x8442('0x1b')]=qs['offset'](_0x49d86c['query'][_0x8442('0x1b')]);}return _0x439045[_0x8442('0x4a')](_0xab0ec9);}})[_0x8442('0x23')](function(_0x1cea4d){if(_0x1cea4d){return _0x1cea4d?{'count':_0x29ec84,'rows':_0x1cea4d}:null;}})['then'](respondWithResult(_0x3fa711,null))['catch'](handleError(_0x3fa711,null));};exports[_0x8442('0x4c')]=function(_0x3e7bf2,_0x3fac63,_0x3576eb){var _0x4d37e5={};var _0x217110={};var _0x51583a;var _0x253e97;return db[_0x8442('0x2a')][_0x8442('0x4d')]({'where':{'id':_0x3e7bf2['params']['id']}})[_0x8442('0x23')](handleEntityNotFound(_0x3fac63,null))[_0x8442('0x23')](function(_0x4e7b70){if(_0x4e7b70){_0x51583a=_0x4e7b70;_0x217110[_0x8442('0x33')]=_[_0x8442('0x2f')](db[_0x8442('0x49')]['rawAttributes']);_0x217110[_0x8442('0x30')]=_[_0x8442('0x2f')](_0x3e7bf2['query']);_0x217110['filters']=_[_0x8442('0x32')](_0x217110[_0x8442('0x33')],_0x217110[_0x8442('0x30')]);_0x4d37e5[_0x8442('0x34')]=_[_0x8442('0x32')](_0x217110[_0x8442('0x33')],qs['fields'](_0x3e7bf2[_0x8442('0x30')][_0x8442('0x35')]));_0x4d37e5[_0x8442('0x34')]=_0x4d37e5['attributes'][_0x8442('0x36')]?_0x4d37e5['attributes']:_0x217110[_0x8442('0x33')];_0x4d37e5[_0x8442('0x38')]=qs[_0x8442('0x39')](_0x3e7bf2[_0x8442('0x30')]['sort']);_0x4d37e5[_0x8442('0x3a')]=qs[_0x8442('0x31')](_['pick'](_0x3e7bf2[_0x8442('0x30')],_0x217110[_0x8442('0x31')]));if(_0x3e7bf2[_0x8442('0x30')][_0x8442('0x3b')]){_0x4d37e5[_0x8442('0x3a')]=_[_0x8442('0x3c')](_0x4d37e5[_0x8442('0x3a')],{'$or':_[_0x8442('0x29')](_0x4d37e5[_0x8442('0x34')],function(_0x2ce5e8){var _0x571e17={};_0x571e17[_0x2ce5e8]={'$like':'%'+_0x3e7bf2[_0x8442('0x30')][_0x8442('0x3b')]+'%'};return _0x571e17;})});}_0x4d37e5=_[_0x8442('0x3c')]({},_0x4d37e5,_0x3e7bf2[_0x8442('0x3e')]);return _0x51583a[_0x8442('0x4c')](_0x4d37e5);}})[_0x8442('0x23')](function(_0xe2cc84){if(_0xe2cc84){_0x253e97=_0xe2cc84[_0x8442('0x36')];if(!_0x3e7bf2['query'][_0x8442('0x4b')]('nolimit')){_0x4d37e5[_0x8442('0x1d')]=qs[_0x8442('0x1d')](_0x3e7bf2[_0x8442('0x30')]['limit']);_0x4d37e5[_0x8442('0x1b')]=qs['offset'](_0x3e7bf2[_0x8442('0x30')][_0x8442('0x1b')]);}return _0x51583a[_0x8442('0x4c')](_0x4d37e5);}})[_0x8442('0x23')](function(_0x5468e1){if(_0x5468e1){return _0x5468e1?{'count':_0x253e97,'rows':_0x5468e1}:null;}})['then'](respondWithResult(_0x3fac63,null))['catch'](handleError(_0x3fac63,null));};exports['getDescriptions']=function(_0x1807b4,_0x3b931c,_0x4ab4a8){var _0x562248={};var _0x33cc9e={};var _0x500c77;var _0xbd05d6;return db[_0x8442('0x2a')][_0x8442('0x4d')]({'where':{'id':_0x1807b4['params']['id']}})['then'](handleEntityNotFound(_0x3b931c,null))[_0x8442('0x23')](function(_0x4adf5f){if(_0x4adf5f){_0x500c77=_0x4adf5f;_0x33cc9e[_0x8442('0x33')]=_['keys'](db[_0x8442('0x49')][_0x8442('0x2b')]);_0x33cc9e[_0x8442('0x30')]=_[_0x8442('0x2f')](_0x1807b4[_0x8442('0x30')]);_0x33cc9e[_0x8442('0x31')]=_['intersection'](_0x33cc9e[_0x8442('0x33')],_0x33cc9e[_0x8442('0x30')]);_0x562248[_0x8442('0x34')]=_['intersection'](_0x33cc9e[_0x8442('0x33')],qs[_0x8442('0x35')](_0x1807b4[_0x8442('0x30')][_0x8442('0x35')]));_0x562248[_0x8442('0x34')]=_0x562248[_0x8442('0x34')][_0x8442('0x36')]?_0x562248[_0x8442('0x34')]:_0x33cc9e[_0x8442('0x33')];_0x562248[_0x8442('0x38')]=qs[_0x8442('0x39')](_0x1807b4['query']['sort']);_0x562248[_0x8442('0x3a')]=qs['filters'](_[_0x8442('0x4e')](_0x1807b4[_0x8442('0x30')],_0x33cc9e[_0x8442('0x31')]));if(_0x1807b4[_0x8442('0x30')][_0x8442('0x3b')]){_0x562248[_0x8442('0x3a')]=_[_0x8442('0x3c')](_0x562248[_0x8442('0x3a')],{'$or':_['map'](_0x562248[_0x8442('0x34')],function(_0x33496f){var _0x59b866={};_0x59b866[_0x33496f]={'$like':'%'+_0x1807b4[_0x8442('0x30')][_0x8442('0x3b')]+'%'};return _0x59b866;})});}_0x562248=_['merge']({},_0x562248,_0x1807b4['options']);return _0x500c77['getDescriptions'](_0x562248);}})[_0x8442('0x23')](function(_0x2bb928){if(_0x2bb928){_0xbd05d6=_0x2bb928['length'];if(!_0x1807b4[_0x8442('0x30')][_0x8442('0x4b')](_0x8442('0x37'))){_0x562248[_0x8442('0x1d')]=qs[_0x8442('0x1d')](_0x1807b4['query']['limit']);_0x562248[_0x8442('0x1b')]=qs[_0x8442('0x1b')](_0x1807b4[_0x8442('0x30')][_0x8442('0x1b')]);}return _0x500c77['getDescriptions'](_0x562248);}})[_0x8442('0x23')](function(_0xf5ecc3){if(_0xf5ecc3){return _0xf5ecc3?{'count':_0xbd05d6,'rows':_0xf5ecc3}:null;}})[_0x8442('0x23')](respondWithResult(_0x3b931c,null))['catch'](handleError(_0x3b931c,null));};exports['getTags']=function(_0x48b9c3,_0x4e9df9,_0x21bf0d){var _0x4f4b0a={};var _0x45228b={};var _0x3362f3;var _0x19fbe1;return db[_0x8442('0x2a')][_0x8442('0x4d')]({'where':{'id':_0x48b9c3[_0x8442('0x45')]['id']}})[_0x8442('0x23')](handleEntityNotFound(_0x4e9df9,null))[_0x8442('0x23')](function(_0x4fa76c){if(_0x4fa76c){_0x3362f3=_0x4fa76c;_0x45228b[_0x8442('0x33')]=_[_0x8442('0x2f')](db['Tag']['rawAttributes']);_0x45228b['query']=_[_0x8442('0x2f')](_0x48b9c3[_0x8442('0x30')]);_0x45228b[_0x8442('0x31')]=_[_0x8442('0x32')](_0x45228b[_0x8442('0x33')],_0x45228b[_0x8442('0x30')]);_0x4f4b0a[_0x8442('0x34')]=_[_0x8442('0x32')](_0x45228b[_0x8442('0x33')],qs['fields'](_0x48b9c3[_0x8442('0x30')][_0x8442('0x35')]));_0x4f4b0a[_0x8442('0x34')]=_0x4f4b0a['attributes']['length']?_0x4f4b0a[_0x8442('0x34')]:_0x45228b[_0x8442('0x33')];_0x4f4b0a[_0x8442('0x38')]=qs['sort'](_0x48b9c3['query'][_0x8442('0x39')]);_0x4f4b0a[_0x8442('0x3a')]=qs[_0x8442('0x31')](_['pick'](_0x48b9c3[_0x8442('0x30')],_0x45228b[_0x8442('0x31')]));if(_0x48b9c3[_0x8442('0x30')][_0x8442('0x3b')]){_0x4f4b0a[_0x8442('0x3a')]=_[_0x8442('0x3c')](_0x4f4b0a[_0x8442('0x3a')],{'$or':_[_0x8442('0x29')](_0x4f4b0a['attributes'],function(_0x57706a){var _0x353065={};_0x353065[_0x57706a]={'$like':'%'+_0x48b9c3['query']['filter']+'%'};return _0x353065;})});}_0x4f4b0a=_[_0x8442('0x3c')]({},_0x4f4b0a,_0x48b9c3['options']);return _0x3362f3[_0x8442('0x4f')](_0x4f4b0a);}})[_0x8442('0x23')](function(_0x51ce22){if(_0x51ce22){_0x19fbe1=_0x51ce22[_0x8442('0x36')];if(!_0x48b9c3[_0x8442('0x30')][_0x8442('0x4b')](_0x8442('0x37'))){_0x4f4b0a['limit']=qs[_0x8442('0x1d')](_0x48b9c3[_0x8442('0x30')][_0x8442('0x1d')]);_0x4f4b0a[_0x8442('0x1b')]=qs['offset'](_0x48b9c3[_0x8442('0x30')]['offset']);}return _0x3362f3['getTags'](_0x4f4b0a);}})['then'](function(_0x8e6378){if(_0x8e6378){return _0x8e6378?{'count':_0x19fbe1,'rows':_0x8e6378}:null;}})[_0x8442('0x23')](respondWithResult(_0x4e9df9,null))[_0x8442('0x43')](handleError(_0x4e9df9,null));};exports[_0x8442('0x50')]=function(_0x26b027,_0x3de0a3,_0xb680cf){if(_0x26b027[_0x8442('0x48')]['id']){delete _0x26b027[_0x8442('0x48')]['id'];}return db[_0x8442('0x2a')]['findOne']({'where':{'id':_0x26b027['params']['id']}})['then'](handleEntityNotFound(_0x3de0a3,null))['then'](function(_0x83fa4f){if(_0x83fa4f){return _0x83fa4f[_0x8442('0x50')](_0x26b027[_0x8442('0x48')]['ids']||[]);}return null;})[_0x8442('0x23')](respondWithResult(_0x3de0a3,null))['catch'](handleError(_0x3de0a3,null));};
\ No newline at end of file
+var _0x3060=['sort','where','filters','pick','filter','VIRTUAL','merge','includeAll','include','findAll','params','find','catch','create','body','getFields','findOne','options','getSubjects','FreshdeskField','getDescriptions','getTags','Tag','setTags','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','index','map','FreshdeskConfiguration','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order'];(function(_0x5ee73a,_0x1d0cd5){var _0x249d98=function(_0x2a9ebd){while(--_0x2a9ebd){_0x5ee73a['push'](_0x5ee73a['shift']());}};_0x249d98(++_0x1d0cd5);}(_0x3060,0x1b7));var _0x0306=function(_0x152fe3,_0x12b0c8){_0x152fe3=_0x152fe3-0x0;var _0xc5bb39=_0x3060[_0x152fe3];return _0xc5bb39;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0306('0x0'));var zipdir=require(_0x0306('0x1'));var jsonpatch=require(_0x0306('0x2'));var rp=require('request-promise');var moment=require(_0x0306('0x3'));var BPromise=require(_0x0306('0x4'));var Mustache=require('mustache');var util=require(_0x0306('0x5'));var path=require('path');var sox=require(_0x0306('0x6'));var csv=require(_0x0306('0x7'));var ejs=require(_0x0306('0x8'));var fs=require('fs');var fs_extra=require(_0x0306('0x9'));var _=require(_0x0306('0xa'));var squel=require(_0x0306('0xb'));var crypto=require(_0x0306('0xc'));var jsforce=require(_0x0306('0xd'));var deskjs=require(_0x0306('0xe'));var toCsv=require(_0x0306('0x7'));var querystring=require(_0x0306('0xf'));var Papa=require('papaparse');var Redis=require(_0x0306('0x10'));var authService=require(_0x0306('0x11'));var qs=require(_0x0306('0x12'));var as=require(_0x0306('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0306('0x14'))('api');var utils=require(_0x0306('0x15'));var config=require(_0x0306('0x16'));var licenseUtil=require(_0x0306('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2de9be,_0x1e4619){_0x1e4619=_0x1e4619||0xcc;return function(_0x2ea2de){if(_0x2ea2de){return _0x2de9be[_0x0306('0x18')](_0x1e4619);}return _0x2de9be[_0x0306('0x19')](_0x1e4619)[_0x0306('0x1a')]();};}function respondWithResult(_0x52b40a,_0x2f8c49){_0x2f8c49=_0x2f8c49||0xc8;return function(_0x8d4a0f){if(_0x8d4a0f){return _0x52b40a[_0x0306('0x19')](_0x2f8c49)[_0x0306('0x1b')](_0x8d4a0f);}};}function respondWithFilteredResult(_0x1602ad,_0x44776d){return function(_0x13dcc1){if(_0x13dcc1){var _0x3a803=typeof _0x44776d['offset']==='undefined'&&typeof _0x44776d['limit']===_0x0306('0x1c');var _0x4f0c8e=_0x13dcc1[_0x0306('0x1d')];var _0x3aba8a=_0x3a803?0x0:_0x44776d[_0x0306('0x1e')];var _0x4352f6=_0x3a803?_0x13dcc1[_0x0306('0x1d')]:_0x44776d[_0x0306('0x1e')]+_0x44776d[_0x0306('0x1f')];var _0x3824e5;if(_0x4352f6>=_0x4f0c8e){_0x4352f6=_0x4f0c8e;_0x3824e5=0xc8;}else{_0x3824e5=0xce;}_0x1602ad[_0x0306('0x19')](_0x3824e5);return _0x1602ad[_0x0306('0x20')](_0x0306('0x21'),_0x3aba8a+'-'+_0x4352f6+'/'+_0x4f0c8e)['json'](_0x13dcc1);}return null;};}function patchUpdates(_0x58619e){return function(_0x1a59a5){try{jsonpatch[_0x0306('0x22')](_0x1a59a5,_0x58619e,!![]);}catch(_0x4e4f40){return BPromise[_0x0306('0x23')](_0x4e4f40);}return _0x1a59a5['save']();};}function saveUpdates(_0x5c64f1,_0x50479e){return function(_0x1b3702){if(_0x1b3702){return _0x1b3702[_0x0306('0x24')](_0x5c64f1)['then'](function(_0x2a8a14){return _0x2a8a14;});}return null;};}function removeEntity(_0x2e4b40,_0x320c8f){return function(_0x452862){if(_0x452862){return _0x452862[_0x0306('0x25')]()[_0x0306('0x26')](function(){_0x2e4b40[_0x0306('0x19')](0xcc)[_0x0306('0x1a')]();});}};}function handleEntityNotFound(_0xae474f,_0x2dbcb0){return function(_0x362b6a){if(!_0x362b6a){_0xae474f[_0x0306('0x18')](0x194);}return _0x362b6a;};}function handleError(_0x5a458c,_0xa5150c){_0xa5150c=_0xa5150c||0x1f4;return function(_0x39a6fb){logger[_0x0306('0x27')](_0x39a6fb[_0x0306('0x28')]);if(_0x39a6fb[_0x0306('0x29')]){delete _0x39a6fb[_0x0306('0x29')];}_0x5a458c[_0x0306('0x19')](_0xa5150c)[_0x0306('0x2a')](_0x39a6fb);};}exports[_0x0306('0x2b')]=function(_0xc78e42,_0x57cd2a){var _0x5bf761={},_0x478c89={},_0x172855={'count':0x0,'rows':[]};var _0x193f7c=_[_0x0306('0x2c')](db[_0x0306('0x2d')][_0x0306('0x2e')],function(_0x36822b){return{'name':_0x36822b['fieldName'],'type':_0x36822b[_0x0306('0x2f')][_0x0306('0x30')]};});_0x478c89[_0x0306('0x31')]=_['map'](_0x193f7c,_0x0306('0x29'));_0x478c89[_0x0306('0x32')]=_[_0x0306('0x33')](_0xc78e42[_0x0306('0x32')]);_0x478c89['filters']=_[_0x0306('0x34')](_0x478c89[_0x0306('0x31')],_0x478c89['query']);_0x5bf761[_0x0306('0x35')]=_[_0x0306('0x34')](_0x478c89[_0x0306('0x31')],qs[_0x0306('0x36')](_0xc78e42[_0x0306('0x32')][_0x0306('0x36')]));_0x5bf761[_0x0306('0x35')]=_0x5bf761[_0x0306('0x35')][_0x0306('0x37')]?_0x5bf761['attributes']:_0x478c89[_0x0306('0x31')];if(!_0xc78e42[_0x0306('0x32')][_0x0306('0x38')](_0x0306('0x39'))){_0x5bf761['limit']=qs[_0x0306('0x1f')](_0xc78e42[_0x0306('0x32')][_0x0306('0x1f')]);_0x5bf761[_0x0306('0x1e')]=qs[_0x0306('0x1e')](_0xc78e42['query']['offset']);}_0x5bf761[_0x0306('0x3a')]=qs['sort'](_0xc78e42[_0x0306('0x32')][_0x0306('0x3b')]);_0x5bf761[_0x0306('0x3c')]=qs[_0x0306('0x3d')](_[_0x0306('0x3e')](_0xc78e42[_0x0306('0x32')],_0x478c89[_0x0306('0x3d')]),_0x193f7c);if(_0xc78e42[_0x0306('0x32')][_0x0306('0x3f')]){_0x5bf761[_0x0306('0x3c')]=_['merge'](_0x5bf761[_0x0306('0x3c')],{'$or':_[_0x0306('0x2c')](_0x193f7c,function(_0x115d6a){if(_0x115d6a[_0x0306('0x2f')]!==_0x0306('0x40')){var _0xf3042f={};_0xf3042f[_0x115d6a[_0x0306('0x29')]]={'$like':'%'+_0xc78e42[_0x0306('0x32')][_0x0306('0x3f')]+'%'};return _0xf3042f;}})});}_0x5bf761=_[_0x0306('0x41')]({},_0x5bf761,_0xc78e42['options']);var _0x5ddd95={'where':_0x5bf761[_0x0306('0x3c')]};return db[_0x0306('0x2d')][_0x0306('0x1d')](_0x5ddd95)['then'](function(_0x9c5e1b){_0x172855['count']=_0x9c5e1b;if(_0xc78e42[_0x0306('0x32')][_0x0306('0x42')]){_0x5bf761[_0x0306('0x43')]=[{'all':!![]}];}return db[_0x0306('0x2d')][_0x0306('0x44')](_0x5bf761);})['then'](function(_0x54ba12){_0x172855['rows']=_0x54ba12;return _0x172855;})['then'](respondWithFilteredResult(_0x57cd2a,_0x5bf761))['catch'](handleError(_0x57cd2a,null));};exports['show']=function(_0x31f0b1,_0x57fe00){var _0x109084={'raw':![],'where':{'id':_0x31f0b1[_0x0306('0x45')]['id']}},_0xa7d6ab={};_0xa7d6ab[_0x0306('0x31')]=_[_0x0306('0x33')](db[_0x0306('0x2d')][_0x0306('0x2e')]);_0xa7d6ab[_0x0306('0x32')]=_[_0x0306('0x33')](_0x31f0b1[_0x0306('0x32')]);_0xa7d6ab[_0x0306('0x3d')]=_['intersection'](_0xa7d6ab[_0x0306('0x31')],_0xa7d6ab[_0x0306('0x32')]);_0x109084[_0x0306('0x35')]=_[_0x0306('0x34')](_0xa7d6ab['model'],qs['fields'](_0x31f0b1['query'][_0x0306('0x36')]));_0x109084[_0x0306('0x35')]=_0x109084[_0x0306('0x35')][_0x0306('0x37')]?_0x109084[_0x0306('0x35')]:_0xa7d6ab[_0x0306('0x31')];if(_0x31f0b1[_0x0306('0x32')][_0x0306('0x42')]){_0x109084[_0x0306('0x43')]=[{'all':!![]}];}_0x109084=_['merge']({},_0x109084,_0x31f0b1['options']);return db[_0x0306('0x2d')][_0x0306('0x46')](_0x109084)[_0x0306('0x26')](handleEntityNotFound(_0x57fe00,null))['then'](respondWithResult(_0x57fe00,null))[_0x0306('0x47')](handleError(_0x57fe00,null));};exports[_0x0306('0x48')]=function(_0x1b5d85,_0x178333){return db[_0x0306('0x2d')][_0x0306('0x48')](_0x1b5d85[_0x0306('0x49')],{})[_0x0306('0x26')](respondWithResult(_0x178333,0xc9))[_0x0306('0x47')](handleError(_0x178333,null));};exports[_0x0306('0x24')]=function(_0x22bf2e,_0x25850b){if(_0x22bf2e[_0x0306('0x49')]['id']){delete _0x22bf2e[_0x0306('0x49')]['id'];}return db[_0x0306('0x2d')][_0x0306('0x46')]({'where':{'id':_0x22bf2e[_0x0306('0x45')]['id']}})[_0x0306('0x26')](handleEntityNotFound(_0x25850b,null))[_0x0306('0x26')](saveUpdates(_0x22bf2e[_0x0306('0x49')],null))[_0x0306('0x26')](respondWithResult(_0x25850b,null))[_0x0306('0x47')](handleError(_0x25850b,null));};exports['destroy']=function(_0x1308b7,_0x15d439){return db[_0x0306('0x2d')]['find']({'where':{'id':_0x1308b7[_0x0306('0x45')]['id']}})[_0x0306('0x26')](handleEntityNotFound(_0x15d439,null))['then'](removeEntity(_0x15d439,null))[_0x0306('0x47')](handleError(_0x15d439,null));};exports[_0x0306('0x4a')]=function(_0x2d2e51,_0x91ee8c,_0x5aa5f3){var _0x30e0df={};var _0x4f5535={};var _0x1392fe;var _0x36b877;return db['FreshdeskConfiguration'][_0x0306('0x4b')]({'where':{'id':_0x2d2e51['params']['id']}})[_0x0306('0x26')](handleEntityNotFound(_0x91ee8c,null))[_0x0306('0x26')](function(_0x1a0cf6){if(_0x1a0cf6){_0x1392fe=_0x1a0cf6;_0x4f5535[_0x0306('0x31')]=_[_0x0306('0x33')](db['FreshdeskField'][_0x0306('0x2e')]);_0x4f5535[_0x0306('0x32')]=_[_0x0306('0x33')](_0x2d2e51['query']);_0x4f5535[_0x0306('0x3d')]=_[_0x0306('0x34')](_0x4f5535[_0x0306('0x31')],_0x4f5535['query']);_0x30e0df[_0x0306('0x35')]=_[_0x0306('0x34')](_0x4f5535[_0x0306('0x31')],qs[_0x0306('0x36')](_0x2d2e51[_0x0306('0x32')]['fields']));_0x30e0df[_0x0306('0x35')]=_0x30e0df[_0x0306('0x35')][_0x0306('0x37')]?_0x30e0df[_0x0306('0x35')]:_0x4f5535[_0x0306('0x31')];_0x30e0df['order']=qs[_0x0306('0x3b')](_0x2d2e51['query'][_0x0306('0x3b')]);_0x30e0df['where']=qs[_0x0306('0x3d')](_[_0x0306('0x3e')](_0x2d2e51[_0x0306('0x32')],_0x4f5535['filters']));if(_0x2d2e51['query'][_0x0306('0x3f')]){_0x30e0df[_0x0306('0x3c')]=_[_0x0306('0x41')](_0x30e0df['where'],{'$or':_[_0x0306('0x2c')](_0x30e0df[_0x0306('0x35')],function(_0x5ef9b8){var _0x58d94e={};_0x58d94e[_0x5ef9b8]={'$like':'%'+_0x2d2e51['query'][_0x0306('0x3f')]+'%'};return _0x58d94e;})});}_0x30e0df=_[_0x0306('0x41')]({},_0x30e0df,_0x2d2e51[_0x0306('0x4c')]);return _0x1392fe[_0x0306('0x4a')](_0x30e0df);}})['then'](function(_0x1609ab){if(_0x1609ab){_0x36b877=_0x1609ab['length'];if(!_0x2d2e51['query'][_0x0306('0x38')](_0x0306('0x39'))){_0x30e0df['limit']=qs[_0x0306('0x1f')](_0x2d2e51[_0x0306('0x32')][_0x0306('0x1f')]);_0x30e0df[_0x0306('0x1e')]=qs[_0x0306('0x1e')](_0x2d2e51[_0x0306('0x32')][_0x0306('0x1e')]);}return _0x1392fe[_0x0306('0x4a')](_0x30e0df);}})[_0x0306('0x26')](function(_0x137d6f){if(_0x137d6f){return _0x137d6f?{'count':_0x36b877,'rows':_0x137d6f}:null;}})['then'](respondWithResult(_0x91ee8c,null))[_0x0306('0x47')](handleError(_0x91ee8c,null));};exports[_0x0306('0x4d')]=function(_0x53d94f,_0x5e32d0,_0x5ed102){var _0x2efa61={};var _0x50655d={};var _0x40a700;var _0x5a895a;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x53d94f['params']['id']}})[_0x0306('0x26')](handleEntityNotFound(_0x5e32d0,null))[_0x0306('0x26')](function(_0x1a6c0f){if(_0x1a6c0f){_0x40a700=_0x1a6c0f;_0x50655d['model']=_[_0x0306('0x33')](db[_0x0306('0x4e')][_0x0306('0x2e')]);_0x50655d[_0x0306('0x32')]=_[_0x0306('0x33')](_0x53d94f[_0x0306('0x32')]);_0x50655d[_0x0306('0x3d')]=_[_0x0306('0x34')](_0x50655d[_0x0306('0x31')],_0x50655d[_0x0306('0x32')]);_0x2efa61[_0x0306('0x35')]=_['intersection'](_0x50655d[_0x0306('0x31')],qs['fields'](_0x53d94f['query'][_0x0306('0x36')]));_0x2efa61[_0x0306('0x35')]=_0x2efa61['attributes'][_0x0306('0x37')]?_0x2efa61[_0x0306('0x35')]:_0x50655d[_0x0306('0x31')];_0x2efa61[_0x0306('0x3a')]=qs[_0x0306('0x3b')](_0x53d94f['query'][_0x0306('0x3b')]);_0x2efa61[_0x0306('0x3c')]=qs[_0x0306('0x3d')](_[_0x0306('0x3e')](_0x53d94f[_0x0306('0x32')],_0x50655d[_0x0306('0x3d')]));if(_0x53d94f[_0x0306('0x32')][_0x0306('0x3f')]){_0x2efa61[_0x0306('0x3c')]=_[_0x0306('0x41')](_0x2efa61[_0x0306('0x3c')],{'$or':_['map'](_0x2efa61[_0x0306('0x35')],function(_0x1bc9d4){var _0x4e3a2c={};_0x4e3a2c[_0x1bc9d4]={'$like':'%'+_0x53d94f[_0x0306('0x32')]['filter']+'%'};return _0x4e3a2c;})});}_0x2efa61=_[_0x0306('0x41')]({},_0x2efa61,_0x53d94f['options']);return _0x40a700['getSubjects'](_0x2efa61);}})[_0x0306('0x26')](function(_0x38ff10){if(_0x38ff10){_0x5a895a=_0x38ff10[_0x0306('0x37')];if(!_0x53d94f[_0x0306('0x32')][_0x0306('0x38')]('nolimit')){_0x2efa61[_0x0306('0x1f')]=qs[_0x0306('0x1f')](_0x53d94f[_0x0306('0x32')]['limit']);_0x2efa61[_0x0306('0x1e')]=qs[_0x0306('0x1e')](_0x53d94f[_0x0306('0x32')]['offset']);}return _0x40a700[_0x0306('0x4d')](_0x2efa61);}})[_0x0306('0x26')](function(_0x5c9c18){if(_0x5c9c18){return _0x5c9c18?{'count':_0x5a895a,'rows':_0x5c9c18}:null;}})['then'](respondWithResult(_0x5e32d0,null))[_0x0306('0x47')](handleError(_0x5e32d0,null));};exports[_0x0306('0x4f')]=function(_0x123dae,_0x33f58a,_0x153477){var _0x5ce3d3={};var _0x511b53={};var _0x430203;var _0x3a11ab;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x123dae[_0x0306('0x45')]['id']}})[_0x0306('0x26')](handleEntityNotFound(_0x33f58a,null))[_0x0306('0x26')](function(_0x3af5b0){if(_0x3af5b0){_0x430203=_0x3af5b0;_0x511b53[_0x0306('0x31')]=_[_0x0306('0x33')](db[_0x0306('0x4e')][_0x0306('0x2e')]);_0x511b53[_0x0306('0x32')]=_[_0x0306('0x33')](_0x123dae[_0x0306('0x32')]);_0x511b53[_0x0306('0x3d')]=_[_0x0306('0x34')](_0x511b53['model'],_0x511b53[_0x0306('0x32')]);_0x5ce3d3[_0x0306('0x35')]=_['intersection'](_0x511b53[_0x0306('0x31')],qs[_0x0306('0x36')](_0x123dae[_0x0306('0x32')][_0x0306('0x36')]));_0x5ce3d3[_0x0306('0x35')]=_0x5ce3d3['attributes'][_0x0306('0x37')]?_0x5ce3d3[_0x0306('0x35')]:_0x511b53[_0x0306('0x31')];_0x5ce3d3[_0x0306('0x3a')]=qs[_0x0306('0x3b')](_0x123dae[_0x0306('0x32')][_0x0306('0x3b')]);_0x5ce3d3[_0x0306('0x3c')]=qs[_0x0306('0x3d')](_[_0x0306('0x3e')](_0x123dae[_0x0306('0x32')],_0x511b53[_0x0306('0x3d')]));if(_0x123dae[_0x0306('0x32')]['filter']){_0x5ce3d3[_0x0306('0x3c')]=_[_0x0306('0x41')](_0x5ce3d3[_0x0306('0x3c')],{'$or':_[_0x0306('0x2c')](_0x5ce3d3[_0x0306('0x35')],function(_0x2fd501){var _0x552577={};_0x552577[_0x2fd501]={'$like':'%'+_0x123dae[_0x0306('0x32')][_0x0306('0x3f')]+'%'};return _0x552577;})});}_0x5ce3d3=_['merge']({},_0x5ce3d3,_0x123dae[_0x0306('0x4c')]);return _0x430203[_0x0306('0x4f')](_0x5ce3d3);}})[_0x0306('0x26')](function(_0x50eb6e){if(_0x50eb6e){_0x3a11ab=_0x50eb6e[_0x0306('0x37')];if(!_0x123dae[_0x0306('0x32')][_0x0306('0x38')]('nolimit')){_0x5ce3d3[_0x0306('0x1f')]=qs[_0x0306('0x1f')](_0x123dae[_0x0306('0x32')][_0x0306('0x1f')]);_0x5ce3d3[_0x0306('0x1e')]=qs['offset'](_0x123dae[_0x0306('0x32')]['offset']);}return _0x430203[_0x0306('0x4f')](_0x5ce3d3);}})[_0x0306('0x26')](function(_0x3b6a89){if(_0x3b6a89){return _0x3b6a89?{'count':_0x3a11ab,'rows':_0x3b6a89}:null;}})['then'](respondWithResult(_0x33f58a,null))[_0x0306('0x47')](handleError(_0x33f58a,null));};exports[_0x0306('0x50')]=function(_0x967d5e,_0x5efca4,_0x16204){var _0x57bf69={};var _0x540168={};var _0x1bcf69;var _0x5c86bc;return db[_0x0306('0x2d')]['findOne']({'where':{'id':_0x967d5e['params']['id']}})['then'](handleEntityNotFound(_0x5efca4,null))['then'](function(_0x388a9a){if(_0x388a9a){_0x1bcf69=_0x388a9a;_0x540168[_0x0306('0x31')]=_['keys'](db[_0x0306('0x51')][_0x0306('0x2e')]);_0x540168[_0x0306('0x32')]=_[_0x0306('0x33')](_0x967d5e[_0x0306('0x32')]);_0x540168['filters']=_['intersection'](_0x540168[_0x0306('0x31')],_0x540168['query']);_0x57bf69[_0x0306('0x35')]=_[_0x0306('0x34')](_0x540168[_0x0306('0x31')],qs[_0x0306('0x36')](_0x967d5e[_0x0306('0x32')][_0x0306('0x36')]));_0x57bf69[_0x0306('0x35')]=_0x57bf69[_0x0306('0x35')]['length']?_0x57bf69['attributes']:_0x540168[_0x0306('0x31')];_0x57bf69[_0x0306('0x3a')]=qs[_0x0306('0x3b')](_0x967d5e[_0x0306('0x32')][_0x0306('0x3b')]);_0x57bf69[_0x0306('0x3c')]=qs[_0x0306('0x3d')](_[_0x0306('0x3e')](_0x967d5e[_0x0306('0x32')],_0x540168[_0x0306('0x3d')]));if(_0x967d5e[_0x0306('0x32')][_0x0306('0x3f')]){_0x57bf69[_0x0306('0x3c')]=_[_0x0306('0x41')](_0x57bf69[_0x0306('0x3c')],{'$or':_[_0x0306('0x2c')](_0x57bf69['attributes'],function(_0x5bffe8){var _0x1922af={};_0x1922af[_0x5bffe8]={'$like':'%'+_0x967d5e[_0x0306('0x32')][_0x0306('0x3f')]+'%'};return _0x1922af;})});}_0x57bf69=_['merge']({},_0x57bf69,_0x967d5e['options']);return _0x1bcf69[_0x0306('0x50')](_0x57bf69);}})['then'](function(_0x42800e){if(_0x42800e){_0x5c86bc=_0x42800e[_0x0306('0x37')];if(!_0x967d5e[_0x0306('0x32')]['hasOwnProperty'](_0x0306('0x39'))){_0x57bf69[_0x0306('0x1f')]=qs['limit'](_0x967d5e[_0x0306('0x32')]['limit']);_0x57bf69['offset']=qs[_0x0306('0x1e')](_0x967d5e[_0x0306('0x32')][_0x0306('0x1e')]);}return _0x1bcf69['getTags'](_0x57bf69);}})[_0x0306('0x26')](function(_0x5b287d){if(_0x5b287d){return _0x5b287d?{'count':_0x5c86bc,'rows':_0x5b287d}:null;}})[_0x0306('0x26')](respondWithResult(_0x5efca4,null))['catch'](handleError(_0x5efca4,null));};exports['setTags']=function(_0x32f35c,_0x235e93,_0x2b6ab3){if(_0x32f35c['body']['id']){delete _0x32f35c['body']['id'];}return db[_0x0306('0x2d')][_0x0306('0x4b')]({'where':{'id':_0x32f35c[_0x0306('0x45')]['id']}})[_0x0306('0x26')](handleEntityNotFound(_0x235e93,null))['then'](function(_0x3332d0){if(_0x3332d0){return _0x3332d0[_0x0306('0x52')](_0x32f35c[_0x0306('0x49')]['ids']||[]);}return null;})[_0x0306('0x26')](respondWithResult(_0x235e93,null))[_0x0306('0x47')](handleError(_0x235e93,null));};
\ No newline at end of file
index 09773e2..f549c83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8b1=['exports','define','FreshdeskConfiguration','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./intFreshdeskConfiguration.attributes'];(function(_0x2555d0,_0x4150a6){var _0x3bb486=function(_0x1eb89f){while(--_0x1eb89f){_0x2555d0['push'](_0x2555d0['shift']());}};_0x3bb486(++_0x4150a6);}(_0xa8b1,0x1d7));var _0x1a8b=function(_0x3c74c8,_0x410d99){_0x3c74c8=_0x3c74c8-0x0;var _0x257db2=_0xa8b1[_0x3c74c8];return _0x257db2;};'use strict';var _=require(_0x1a8b('0x0'));var util=require(_0x1a8b('0x1'));var logger=require('../../config/logger')(_0x1a8b('0x2'));var moment=require(_0x1a8b('0x3'));var BPromise=require(_0x1a8b('0x4'));var rp=require(_0x1a8b('0x5'));var fs=require('fs');var path=require(_0x1a8b('0x6'));var rimraf=require('rimraf');var config=require(_0x1a8b('0x7'));var attributes=require(_0x1a8b('0x8'));module[_0x1a8b('0x9')]=function(_0x38526d,_0x42566a){return _0x38526d[_0x1a8b('0xa')](_0x1a8b('0xb'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdc6e=['FreshdeskConfiguration','int_freshdesk_configurations','util','../../config/logger','moment','bluebird','request-promise','path','exports','define'];(function(_0x7eee7,_0x3779a1){var _0x469f62=function(_0x553717){while(--_0x553717){_0x7eee7['push'](_0x7eee7['shift']());}};_0x469f62(++_0x3779a1);}(_0xdc6e,0x188));var _0xedc6=function(_0x183b97,_0x2d297c){_0x183b97=_0x183b97-0x0;var _0x629cf7=_0xdc6e[_0x183b97];return _0x629cf7;};'use strict';var _=require('lodash');var util=require(_0xedc6('0x0'));var logger=require(_0xedc6('0x1'))('api');var moment=require(_0xedc6('0x2'));var BPromise=require(_0xedc6('0x3'));var rp=require(_0xedc6('0x4'));var fs=require('fs');var path=require(_0xedc6('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intFreshdeskConfiguration.attributes');module[_0xedc6('0x6')]=function(_0x5ea8bb,_0x4984b9){return _0x5ea8bb[_0xedc6('0x7')](_0xedc6('0x8'),attributes,{'tableName':_0xedc6('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a388e3f..e870785 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda48=['jayson/promise','client','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x21b232,_0x1b9b77){var _0x54a541=function(_0x466d43){while(--_0x466d43){_0x21b232['push'](_0x21b232['shift']());}};_0x54a541(++_0x1b9b77);}(_0xda48,0x130));var _0x8da4=function(_0x4587be,_0x3ec73a){_0x4587be=_0x4587be-0x0;var _0x3da18f=_0xda48[_0x4587be];return _0x3da18f;};'use strict';var _=require(_0x8da4('0x0'));var util=require(_0x8da4('0x1'));var moment=require(_0x8da4('0x2'));var BPromise=require('bluebird');var rs=require(_0x8da4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8da4('0x4'))['db'];var utils=require(_0x8da4('0x5'));var logger=require('../../config/logger')(_0x8da4('0x6'));var config=require(_0x8da4('0x7'));var jayson=require(_0x8da4('0x8'));var client=jayson[_0x8da4('0x9')][_0x8da4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x191b8a,_0x21fc7e,_0x50ec3f){return new BPromise(function(_0x6d8f73,_0x42922e){return client[_0x8da4('0xb')](_0x191b8a,_0x50ec3f)[_0x8da4('0xc')](function(_0x1338fc){logger[_0x8da4('0xd')](_0x8da4('0xe'),_0x21fc7e,_0x8da4('0xf'));logger[_0x8da4('0x10')](_0x8da4('0x11'),_0x21fc7e,_0x8da4('0xf'),JSON[_0x8da4('0x12')](_0x1338fc));if(_0x1338fc[_0x8da4('0x13')]){if(_0x1338fc[_0x8da4('0x13')][_0x8da4('0x14')]===0x1f4){logger[_0x8da4('0x13')](_0x8da4('0xe'),_0x21fc7e,_0x1338fc['error']['message']);return _0x42922e(_0x1338fc[_0x8da4('0x13')][_0x8da4('0x15')]);}logger['error'](_0x8da4('0xe'),_0x21fc7e,_0x1338fc['error'][_0x8da4('0x15')]);return _0x6d8f73(_0x1338fc['error'][_0x8da4('0x15')]);}else{logger[_0x8da4('0xd')](_0x8da4('0xe'),_0x21fc7e,'request\x20sent');_0x6d8f73(_0x1338fc[_0x8da4('0x16')]['message']);}})[_0x8da4('0x17')](function(_0x250f71){logger['error'](_0x8da4('0xe'),_0x21fc7e,_0x250f71);_0x42922e(_0x250f71);});});}
\ No newline at end of file
+var _0xd18b=['client','request','then','FreshdeskConfiguration,\x20%s,\x20%s','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','util','moment','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0xd18b,0xd4));var _0xbd18=function(_0x5a7721,_0x7fd765){_0x5a7721=_0x5a7721-0x0;var _0x511167=_0xd18b[_0x5a7721];return _0x511167;};'use strict';var _=require(_0xbd18('0x0'));var util=require(_0xbd18('0x1'));var moment=require(_0xbd18('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbd18('0x3'))['db'];var utils=require(_0xbd18('0x4'));var logger=require('../../config/logger')(_0xbd18('0x5'));var config=require(_0xbd18('0x6'));var jayson=require(_0xbd18('0x7'));var client=jayson[_0xbd18('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5087ef,_0x33b9f6,_0x85bb15){return new BPromise(function(_0x36097d,_0xb87a3a){return client[_0xbd18('0x9')](_0x5087ef,_0x85bb15)[_0xbd18('0xa')](function(_0x243569){logger['info'](_0xbd18('0xb'),_0x33b9f6,'request\x20sent');logger[_0xbd18('0xc')](_0xbd18('0xd'),_0x33b9f6,_0xbd18('0xe'),JSON[_0xbd18('0xf')](_0x243569));if(_0x243569[_0xbd18('0x10')]){if(_0x243569[_0xbd18('0x10')][_0xbd18('0x11')]===0x1f4){logger['error']('FreshdeskConfiguration,\x20%s,\x20%s',_0x33b9f6,_0x243569[_0xbd18('0x10')][_0xbd18('0x12')]);return _0xb87a3a(_0x243569['error'][_0xbd18('0x12')]);}logger[_0xbd18('0x10')](_0xbd18('0xb'),_0x33b9f6,_0x243569['error']['message']);return _0x36097d(_0x243569[_0xbd18('0x10')]['message']);}else{logger[_0xbd18('0x13')](_0xbd18('0xb'),_0x33b9f6,_0xbd18('0xe'));_0x36097d(_0x243569[_0xbd18('0x14')]['message']);}})[_0xbd18('0x15')](function(_0x27b17c){logger[_0xbd18('0x10')](_0xbd18('0xb'),_0x33b9f6,_0x27b17c);_0xb87a3a(_0x27b17c);});});}
\ No newline at end of file
index f7fb320..24392ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5c2=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','util','path'];(function(_0x3de120,_0x510b60){var _0x5dfcda=function(_0x1d56cd){while(--_0x1d56cd){_0x3de120['push'](_0x3de120['shift']());}};_0x5dfcda(++_0x510b60);}(_0xf5c2,0x166));var _0x2f5c=function(_0x5aa992,_0x559ebb){_0x5aa992=_0x5aa992-0x0;var _0x2e2d59=_0xf5c2[_0x5aa992];return _0x2e2d59;};'use strict';var multer=require('multer');var util=require(_0x2f5c('0x0'));var path=require(_0x2f5c('0x1'));var timeout=require(_0x2f5c('0x2'));var express=require('express');var router=express[_0x2f5c('0x3')]();var fs_extra=require(_0x2f5c('0x4'));var auth=require(_0x2f5c('0x5'));var interaction=require(_0x2f5c('0x6'));var config=require(_0x2f5c('0x7'));var controller=require(_0x2f5c('0x8'));router[_0x2f5c('0x9')]('/',auth[_0x2f5c('0xa')](),controller[_0x2f5c('0xb')]);router[_0x2f5c('0x9')](_0x2f5c('0xc'),auth[_0x2f5c('0xa')](),controller[_0x2f5c('0xd')]);router[_0x2f5c('0xe')]('/',auth[_0x2f5c('0xa')](),controller[_0x2f5c('0xf')]);router[_0x2f5c('0x10')](_0x2f5c('0xc'),auth[_0x2f5c('0xa')](),controller[_0x2f5c('0x11')]);router[_0x2f5c('0x12')](_0x2f5c('0xc'),auth['isAuthenticated'](),controller[_0x2f5c('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x67ac=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','post','put','update','delete'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x67ac,0xa2));var _0xc67a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x67ac[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xc67a('0x0'));var util=require(_0xc67a('0x1'));var path=require(_0xc67a('0x2'));var timeout=require(_0xc67a('0x3'));var express=require(_0xc67a('0x4'));var router=express[_0xc67a('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc67a('0x6'));var interaction=require(_0xc67a('0x7'));var config=require(_0xc67a('0x8'));var controller=require('./intFreshdeskField.controller');router['get']('/',auth[_0xc67a('0x9')](),controller[_0xc67a('0xa')]);router[_0xc67a('0xb')](_0xc67a('0xc'),auth['isAuthenticated'](),controller[_0xc67a('0xd')]);router[_0xc67a('0xe')]('/',auth[_0xc67a('0x9')](),controller['create']);router[_0xc67a('0xf')](_0xc67a('0xc'),auth[_0xc67a('0x9')](),controller[_0xc67a('0x10')]);router[_0xc67a('0x11')](_0xc67a('0xc'),auth[_0xc67a('0x9')](),controller[_0xc67a('0x12')]);module[_0xc67a('0x13')]=router;
\ No newline at end of file
index 3d77d63..632f92f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x143e=['STRING','customVariable','sequelize','exports','ENUM','variable','keyValue','picklist','string'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x143e,0x197));var _0xe143=function(_0x5f16e5,_0x2c753b){_0x5f16e5=_0x5f16e5-0x0;var _0x2ced78=_0x143e[_0x5f16e5];return _0x2ced78;};'use strict';var Sequelize=require(_0xe143('0x0'));module[_0xe143('0x1')]={'type':{'type':Sequelize[_0xe143('0x2')]('string',_0xe143('0x3'),'customVariable',_0xe143('0x4'),_0xe143('0x5')),'defaultValue':_0xe143('0x6')},'content':{'type':Sequelize[_0xe143('0x7')]},'key':{'type':Sequelize[_0xe143('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0xe143('0x6'),'variable',_0xe143('0x8'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xe143('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe143('0x7')]}};
\ No newline at end of file
+var _0xd255=['keyValue','STRING','ENUM','sequelize','string','variable','customVariable'];(function(_0x4c0622,_0x5dacaf){var _0x1799d8=function(_0x2ba801){while(--_0x2ba801){_0x4c0622['push'](_0x4c0622['shift']());}};_0x1799d8(++_0x5dacaf);}(_0xd255,0x17d));var _0x5d25=function(_0xef2a,_0x2698b8){_0xef2a=_0xef2a-0x0;var _0x26d0bd=_0xd255[_0xef2a];return _0x26d0bd;};'use strict';var Sequelize=require(_0x5d25('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x5d25('0x1'),_0x5d25('0x2'),_0x5d25('0x3'),_0x5d25('0x4'),'picklist'),'defaultValue':_0x5d25('0x1')},'content':{'type':Sequelize[_0x5d25('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x5d25('0x6')](_0x5d25('0x1'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x5d25('0x5')]},'idField':{'type':Sequelize[_0x5d25('0x5')]},'nameField':{'type':Sequelize[_0x5d25('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x5d25('0x5')]}};
\ No newline at end of file
index d0a7bec..7a6ade7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb1=['status','limit','count','set','Content-Range','json','apply','reject','then','destroy','end','error','stack','send','index','map','FreshdeskField','rawAttributes','fieldName','type','model','name','query','filters','attributes','fields','length','hasOwnProperty','nolimit','offset','order','where','pick','merge','filter','options','includeAll','include','findAll','rows','catch','show','keys','intersection','create','update','body','find','params','rimraf','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/environment','sendStatus'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x5eb1,0x7c));var _0x15eb=function(_0x332109,_0x474add){_0x332109=_0x332109-0x0;var _0x7a6ab2=_0x5eb1[_0x332109];return _0x7a6ab2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x15eb('0x0'));var zipdir=require(_0x15eb('0x1'));var jsonpatch=require(_0x15eb('0x2'));var rp=require(_0x15eb('0x3'));var moment=require(_0x15eb('0x4'));var BPromise=require(_0x15eb('0x5'));var Mustache=require('mustache');var util=require(_0x15eb('0x6'));var path=require(_0x15eb('0x7'));var sox=require(_0x15eb('0x8'));var csv=require(_0x15eb('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x15eb('0xa'));var _=require(_0x15eb('0xb'));var squel=require('squel');var crypto=require(_0x15eb('0xc'));var jsforce=require(_0x15eb('0xd'));var deskjs=require(_0x15eb('0xe'));var toCsv=require(_0x15eb('0x9'));var querystring=require(_0x15eb('0xf'));var Papa=require(_0x15eb('0x10'));var Redis=require(_0x15eb('0x11'));var authService=require(_0x15eb('0x12'));var qs=require(_0x15eb('0x13'));var as=require(_0x15eb('0x14'));var hardwareService=require(_0x15eb('0x15'));var logger=require(_0x15eb('0x16'))(_0x15eb('0x17'));var utils=require('../../config/utils');var config=require(_0x15eb('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x498a0c,_0xda1ddf){_0xda1ddf=_0xda1ddf||0xcc;return function(_0x330436){if(_0x330436){return _0x498a0c[_0x15eb('0x19')](_0xda1ddf);}return _0x498a0c[_0x15eb('0x1a')](_0xda1ddf)['end']();};}function respondWithResult(_0x1d5326,_0x3b921c){_0x3b921c=_0x3b921c||0xc8;return function(_0x212f04){if(_0x212f04){return _0x1d5326[_0x15eb('0x1a')](_0x3b921c)['json'](_0x212f04);}};}function respondWithFilteredResult(_0x48aed7,_0x544e7c){return function(_0x500d58){if(_0x500d58){var _0x1188e0=typeof _0x544e7c['offset']==='undefined'&&typeof _0x544e7c[_0x15eb('0x1b')]==='undefined';var _0x2b898c=_0x500d58['count'];var _0x23a687=_0x1188e0?0x0:_0x544e7c['offset'];var _0x603d05=_0x1188e0?_0x500d58[_0x15eb('0x1c')]:_0x544e7c['offset']+_0x544e7c[_0x15eb('0x1b')];var _0x431ba8;if(_0x603d05>=_0x2b898c){_0x603d05=_0x2b898c;_0x431ba8=0xc8;}else{_0x431ba8=0xce;}_0x48aed7['status'](_0x431ba8);return _0x48aed7[_0x15eb('0x1d')](_0x15eb('0x1e'),_0x23a687+'-'+_0x603d05+'/'+_0x2b898c)[_0x15eb('0x1f')](_0x500d58);}return null;};}function patchUpdates(_0x149332){return function(_0xb66333){try{jsonpatch[_0x15eb('0x20')](_0xb66333,_0x149332,!![]);}catch(_0x56f51d){return BPromise[_0x15eb('0x21')](_0x56f51d);}return _0xb66333['save']();};}function saveUpdates(_0x2603fe,_0x49915b){return function(_0x195ae2){if(_0x195ae2){return _0x195ae2['update'](_0x2603fe)[_0x15eb('0x22')](function(_0x158674){return _0x158674;});}return null;};}function removeEntity(_0xa0cefc,_0x9b0a52){return function(_0x14d66e){if(_0x14d66e){return _0x14d66e[_0x15eb('0x23')]()[_0x15eb('0x22')](function(){_0xa0cefc[_0x15eb('0x1a')](0xcc)[_0x15eb('0x24')]();});}};}function handleEntityNotFound(_0x17c2ef,_0x526648){return function(_0x3a787d){if(!_0x3a787d){_0x17c2ef[_0x15eb('0x19')](0x194);}return _0x3a787d;};}function handleError(_0x394c25,_0x3f655b){_0x3f655b=_0x3f655b||0x1f4;return function(_0x1fcb1a){logger[_0x15eb('0x25')](_0x1fcb1a[_0x15eb('0x26')]);if(_0x1fcb1a['name']){delete _0x1fcb1a['name'];}_0x394c25[_0x15eb('0x1a')](_0x3f655b)[_0x15eb('0x27')](_0x1fcb1a);};}exports[_0x15eb('0x28')]=function(_0xa1ea61,_0x50f7be){var _0x222764={},_0x5f2df5={},_0x302bf7={'count':0x0,'rows':[]};var _0x47b056=_[_0x15eb('0x29')](db[_0x15eb('0x2a')][_0x15eb('0x2b')],function(_0x153d86){return{'name':_0x153d86[_0x15eb('0x2c')],'type':_0x153d86[_0x15eb('0x2d')]['key']};});_0x5f2df5[_0x15eb('0x2e')]=_[_0x15eb('0x29')](_0x47b056,_0x15eb('0x2f'));_0x5f2df5['query']=_['keys'](_0xa1ea61[_0x15eb('0x30')]);_0x5f2df5[_0x15eb('0x31')]=_['intersection'](_0x5f2df5['model'],_0x5f2df5['query']);_0x222764[_0x15eb('0x32')]=_['intersection'](_0x5f2df5[_0x15eb('0x2e')],qs[_0x15eb('0x33')](_0xa1ea61['query'][_0x15eb('0x33')]));_0x222764[_0x15eb('0x32')]=_0x222764[_0x15eb('0x32')][_0x15eb('0x34')]?_0x222764[_0x15eb('0x32')]:_0x5f2df5[_0x15eb('0x2e')];if(!_0xa1ea61['query'][_0x15eb('0x35')](_0x15eb('0x36'))){_0x222764[_0x15eb('0x1b')]=qs[_0x15eb('0x1b')](_0xa1ea61[_0x15eb('0x30')]['limit']);_0x222764[_0x15eb('0x37')]=qs[_0x15eb('0x37')](_0xa1ea61['query'][_0x15eb('0x37')]);}_0x222764[_0x15eb('0x38')]=qs['sort'](_0xa1ea61[_0x15eb('0x30')]['sort']);_0x222764[_0x15eb('0x39')]=qs['filters'](_[_0x15eb('0x3a')](_0xa1ea61['query'],_0x5f2df5[_0x15eb('0x31')]),_0x47b056);if(_0xa1ea61[_0x15eb('0x30')]['filter']){_0x222764['where']=_[_0x15eb('0x3b')](_0x222764[_0x15eb('0x39')],{'$or':_[_0x15eb('0x29')](_0x47b056,function(_0x530f1e){if(_0x530f1e[_0x15eb('0x2d')]!=='VIRTUAL'){var _0x2830={};_0x2830[_0x530f1e['name']]={'$like':'%'+_0xa1ea61[_0x15eb('0x30')][_0x15eb('0x3c')]+'%'};return _0x2830;}})});}_0x222764=_[_0x15eb('0x3b')]({},_0x222764,_0xa1ea61[_0x15eb('0x3d')]);var _0x724448={'where':_0x222764[_0x15eb('0x39')]};return db[_0x15eb('0x2a')][_0x15eb('0x1c')](_0x724448)[_0x15eb('0x22')](function(_0x32a5a6){_0x302bf7[_0x15eb('0x1c')]=_0x32a5a6;if(_0xa1ea61['query'][_0x15eb('0x3e')]){_0x222764[_0x15eb('0x3f')]=[{'all':!![]}];}return db[_0x15eb('0x2a')][_0x15eb('0x40')](_0x222764);})['then'](function(_0x1618e5){_0x302bf7[_0x15eb('0x41')]=_0x1618e5;return _0x302bf7;})[_0x15eb('0x22')](respondWithFilteredResult(_0x50f7be,_0x222764))[_0x15eb('0x42')](handleError(_0x50f7be,null));};exports[_0x15eb('0x43')]=function(_0x570599,_0x3ace6a){var _0x23aea0={'raw':!![],'where':{'id':_0x570599['params']['id']}},_0x5e1b5b={};_0x5e1b5b[_0x15eb('0x2e')]=_[_0x15eb('0x44')](db[_0x15eb('0x2a')]['rawAttributes']);_0x5e1b5b[_0x15eb('0x30')]=_[_0x15eb('0x44')](_0x570599['query']);_0x5e1b5b[_0x15eb('0x31')]=_[_0x15eb('0x45')](_0x5e1b5b[_0x15eb('0x2e')],_0x5e1b5b[_0x15eb('0x30')]);_0x23aea0[_0x15eb('0x32')]=_[_0x15eb('0x45')](_0x5e1b5b['model'],qs[_0x15eb('0x33')](_0x570599[_0x15eb('0x30')]['fields']));_0x23aea0[_0x15eb('0x32')]=_0x23aea0[_0x15eb('0x32')][_0x15eb('0x34')]?_0x23aea0[_0x15eb('0x32')]:_0x5e1b5b[_0x15eb('0x2e')];if(_0x570599[_0x15eb('0x30')]['includeAll']){_0x23aea0[_0x15eb('0x3f')]=[{'all':!![]}];}_0x23aea0=_['merge']({},_0x23aea0,_0x570599[_0x15eb('0x3d')]);return db['FreshdeskField']['find'](_0x23aea0)[_0x15eb('0x22')](handleEntityNotFound(_0x3ace6a,null))[_0x15eb('0x22')](respondWithResult(_0x3ace6a,null))[_0x15eb('0x42')](handleError(_0x3ace6a,null));};exports['create']=function(_0x556f9d,_0x121fc7){return db['FreshdeskField'][_0x15eb('0x46')](_0x556f9d['body'],{})[_0x15eb('0x22')](respondWithResult(_0x121fc7,0xc9))[_0x15eb('0x42')](handleError(_0x121fc7,null));};exports[_0x15eb('0x47')]=function(_0x50d0a,_0x5d5421){if(_0x50d0a[_0x15eb('0x48')]['id']){delete _0x50d0a[_0x15eb('0x48')]['id'];}return db['FreshdeskField'][_0x15eb('0x49')]({'where':{'id':_0x50d0a[_0x15eb('0x4a')]['id']}})[_0x15eb('0x22')](handleEntityNotFound(_0x5d5421,null))[_0x15eb('0x22')](saveUpdates(_0x50d0a[_0x15eb('0x48')],null))[_0x15eb('0x22')](respondWithResult(_0x5d5421,null))[_0x15eb('0x42')](handleError(_0x5d5421,null));};exports[_0x15eb('0x23')]=function(_0x33e324,_0x160c4a){return db[_0x15eb('0x2a')]['find']({'where':{'id':_0x33e324[_0x15eb('0x4a')]['id']}})[_0x15eb('0x22')](handleEntityNotFound(_0x160c4a,null))['then'](removeEntity(_0x160c4a,null))[_0x15eb('0x42')](handleError(_0x160c4a,null));};
\ No newline at end of file
+var _0x7980=['sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','catch','show','params','rawAttributes','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','name','send','index','FreshdeskField','type','key','model','map','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order'];(function(_0x1b3561,_0x213f68){var _0x4a62b2=function(_0x401c80){while(--_0x401c80){_0x1b3561['push'](_0x1b3561['shift']());}};_0x4a62b2(++_0x213f68);}(_0x7980,0xab));var _0x0798=function(_0x3e6ace,_0x2cb4f8){_0x3e6ace=_0x3e6ace-0x0;var _0x22390f=_0x7980[_0x3e6ace];return _0x22390f;};'use strict';var emlformat=require(_0x0798('0x0'));var rimraf=require(_0x0798('0x1'));var zipdir=require(_0x0798('0x2'));var jsonpatch=require(_0x0798('0x3'));var rp=require(_0x0798('0x4'));var moment=require('moment');var BPromise=require(_0x0798('0x5'));var Mustache=require(_0x0798('0x6'));var util=require(_0x0798('0x7'));var path=require(_0x0798('0x8'));var sox=require(_0x0798('0x9'));var csv=require('to-csv');var ejs=require(_0x0798('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0798('0xb'));var squel=require(_0x0798('0xc'));var crypto=require(_0x0798('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x0798('0xe'));var querystring=require(_0x0798('0xf'));var Papa=require(_0x0798('0x10'));var Redis=require(_0x0798('0x11'));var authService=require(_0x0798('0x12'));var qs=require(_0x0798('0x13'));var as=require(_0x0798('0x14'));var hardwareService=require(_0x0798('0x15'));var logger=require(_0x0798('0x16'))(_0x0798('0x17'));var utils=require('../../config/utils');var config=require(_0x0798('0x18'));var licenseUtil=require(_0x0798('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5323e5,_0x588f9d){_0x588f9d=_0x588f9d||0xcc;return function(_0x376a60){if(_0x376a60){return _0x5323e5[_0x0798('0x1a')](_0x588f9d);}return _0x5323e5[_0x0798('0x1b')](_0x588f9d)[_0x0798('0x1c')]();};}function respondWithResult(_0x39bacd,_0xfd88af){_0xfd88af=_0xfd88af||0xc8;return function(_0x5f1640){if(_0x5f1640){return _0x39bacd['status'](_0xfd88af)[_0x0798('0x1d')](_0x5f1640);}};}function respondWithFilteredResult(_0x112362,_0x47be56){return function(_0x555c45){if(_0x555c45){var _0x21c30b=typeof _0x47be56[_0x0798('0x1e')]===_0x0798('0x1f')&&typeof _0x47be56['limit']==='undefined';var _0x1c6d6f=_0x555c45['count'];var _0x41e217=_0x21c30b?0x0:_0x47be56[_0x0798('0x1e')];var _0x288f41=_0x21c30b?_0x555c45[_0x0798('0x20')]:_0x47be56['offset']+_0x47be56[_0x0798('0x21')];var _0x3039d6;if(_0x288f41>=_0x1c6d6f){_0x288f41=_0x1c6d6f;_0x3039d6=0xc8;}else{_0x3039d6=0xce;}_0x112362['status'](_0x3039d6);return _0x112362[_0x0798('0x22')](_0x0798('0x23'),_0x41e217+'-'+_0x288f41+'/'+_0x1c6d6f)[_0x0798('0x1d')](_0x555c45);}return null;};}function patchUpdates(_0x44ac33){return function(_0xfbb4a5){try{jsonpatch[_0x0798('0x24')](_0xfbb4a5,_0x44ac33,!![]);}catch(_0x3a7f8b){return BPromise[_0x0798('0x25')](_0x3a7f8b);}return _0xfbb4a5[_0x0798('0x26')]();};}function saveUpdates(_0x4a86d5,_0x2aaabf){return function(_0x35c141){if(_0x35c141){return _0x35c141[_0x0798('0x27')](_0x4a86d5)[_0x0798('0x28')](function(_0x20654b){return _0x20654b;});}return null;};}function removeEntity(_0x23f283,_0x52037c){return function(_0x3f66e2){if(_0x3f66e2){return _0x3f66e2[_0x0798('0x29')]()[_0x0798('0x28')](function(){_0x23f283[_0x0798('0x1b')](0xcc)[_0x0798('0x1c')]();});}};}function handleEntityNotFound(_0x23d59c,_0x4f648a){return function(_0x43d99f){if(!_0x43d99f){_0x23d59c[_0x0798('0x1a')](0x194);}return _0x43d99f;};}function handleError(_0x11e24d,_0x4d4e0a){_0x4d4e0a=_0x4d4e0a||0x1f4;return function(_0x4bc3f3){logger['error'](_0x4bc3f3['stack']);if(_0x4bc3f3[_0x0798('0x2a')]){delete _0x4bc3f3[_0x0798('0x2a')];}_0x11e24d[_0x0798('0x1b')](_0x4d4e0a)[_0x0798('0x2b')](_0x4bc3f3);};}exports[_0x0798('0x2c')]=function(_0x161244,_0x30bec){var _0x23e770={},_0x5bbe3d={},_0x167960={'count':0x0,'rows':[]};var _0x4f5d1d=_['map'](db[_0x0798('0x2d')]['rawAttributes'],function(_0x1dabd5){return{'name':_0x1dabd5['fieldName'],'type':_0x1dabd5[_0x0798('0x2e')][_0x0798('0x2f')]};});_0x5bbe3d[_0x0798('0x30')]=_[_0x0798('0x31')](_0x4f5d1d,_0x0798('0x2a'));_0x5bbe3d[_0x0798('0x32')]=_[_0x0798('0x33')](_0x161244[_0x0798('0x32')]);_0x5bbe3d[_0x0798('0x34')]=_[_0x0798('0x35')](_0x5bbe3d[_0x0798('0x30')],_0x5bbe3d[_0x0798('0x32')]);_0x23e770['attributes']=_[_0x0798('0x35')](_0x5bbe3d['model'],qs['fields'](_0x161244[_0x0798('0x32')][_0x0798('0x36')]));_0x23e770['attributes']=_0x23e770['attributes'][_0x0798('0x37')]?_0x23e770[_0x0798('0x38')]:_0x5bbe3d[_0x0798('0x30')];if(!_0x161244[_0x0798('0x32')][_0x0798('0x39')](_0x0798('0x3a'))){_0x23e770['limit']=qs['limit'](_0x161244[_0x0798('0x32')][_0x0798('0x21')]);_0x23e770[_0x0798('0x1e')]=qs['offset'](_0x161244['query']['offset']);}_0x23e770[_0x0798('0x3b')]=qs[_0x0798('0x3c')](_0x161244[_0x0798('0x32')][_0x0798('0x3c')]);_0x23e770[_0x0798('0x3d')]=qs[_0x0798('0x34')](_[_0x0798('0x3e')](_0x161244[_0x0798('0x32')],_0x5bbe3d['filters']),_0x4f5d1d);if(_0x161244[_0x0798('0x32')]['filter']){_0x23e770[_0x0798('0x3d')]=_[_0x0798('0x3f')](_0x23e770[_0x0798('0x3d')],{'$or':_['map'](_0x4f5d1d,function(_0x91de){if(_0x91de['type']!==_0x0798('0x40')){var _0x138bad={};_0x138bad[_0x91de[_0x0798('0x2a')]]={'$like':'%'+_0x161244['query'][_0x0798('0x41')]+'%'};return _0x138bad;}})});}_0x23e770=_[_0x0798('0x3f')]({},_0x23e770,_0x161244['options']);var _0xddc73b={'where':_0x23e770['where']};return db['FreshdeskField'][_0x0798('0x20')](_0xddc73b)[_0x0798('0x28')](function(_0x5f3e38){_0x167960['count']=_0x5f3e38;if(_0x161244[_0x0798('0x32')][_0x0798('0x42')]){_0x23e770[_0x0798('0x43')]=[{'all':!![]}];}return db[_0x0798('0x2d')][_0x0798('0x44')](_0x23e770);})[_0x0798('0x28')](function(_0x27a671){_0x167960['rows']=_0x27a671;return _0x167960;})[_0x0798('0x28')](respondWithFilteredResult(_0x30bec,_0x23e770))[_0x0798('0x45')](handleError(_0x30bec,null));};exports[_0x0798('0x46')]=function(_0x3d6de4,_0x3a8a14){var _0x26e9cb={'raw':!![],'where':{'id':_0x3d6de4[_0x0798('0x47')]['id']}},_0x4c2d8a={};_0x4c2d8a[_0x0798('0x30')]=_[_0x0798('0x33')](db[_0x0798('0x2d')][_0x0798('0x48')]);_0x4c2d8a[_0x0798('0x32')]=_[_0x0798('0x33')](_0x3d6de4[_0x0798('0x32')]);_0x4c2d8a[_0x0798('0x34')]=_[_0x0798('0x35')](_0x4c2d8a[_0x0798('0x30')],_0x4c2d8a[_0x0798('0x32')]);_0x26e9cb['attributes']=_[_0x0798('0x35')](_0x4c2d8a[_0x0798('0x30')],qs[_0x0798('0x36')](_0x3d6de4[_0x0798('0x32')]['fields']));_0x26e9cb['attributes']=_0x26e9cb[_0x0798('0x38')][_0x0798('0x37')]?_0x26e9cb[_0x0798('0x38')]:_0x4c2d8a[_0x0798('0x30')];if(_0x3d6de4['query'][_0x0798('0x42')]){_0x26e9cb['include']=[{'all':!![]}];}_0x26e9cb=_['merge']({},_0x26e9cb,_0x3d6de4[_0x0798('0x49')]);return db[_0x0798('0x2d')][_0x0798('0x4a')](_0x26e9cb)[_0x0798('0x28')](handleEntityNotFound(_0x3a8a14,null))[_0x0798('0x28')](respondWithResult(_0x3a8a14,null))[_0x0798('0x45')](handleError(_0x3a8a14,null));};exports[_0x0798('0x4b')]=function(_0x411c2a,_0x182e3b){return db['FreshdeskField'][_0x0798('0x4b')](_0x411c2a['body'],{})[_0x0798('0x28')](respondWithResult(_0x182e3b,0xc9))[_0x0798('0x45')](handleError(_0x182e3b,null));};exports[_0x0798('0x27')]=function(_0x54634d,_0x9dea1f){if(_0x54634d[_0x0798('0x4c')]['id']){delete _0x54634d[_0x0798('0x4c')]['id'];}return db[_0x0798('0x2d')]['find']({'where':{'id':_0x54634d[_0x0798('0x47')]['id']}})[_0x0798('0x28')](handleEntityNotFound(_0x9dea1f,null))[_0x0798('0x28')](saveUpdates(_0x54634d[_0x0798('0x4c')],null))[_0x0798('0x28')](respondWithResult(_0x9dea1f,null))['catch'](handleError(_0x9dea1f,null));};exports[_0x0798('0x29')]=function(_0x3e1c15,_0x2679b1){return db[_0x0798('0x2d')][_0x0798('0x4a')]({'where':{'id':_0x3e1c15[_0x0798('0x47')]['id']}})[_0x0798('0x28')](handleEntityNotFound(_0x2679b1,null))[_0x0798('0x28')](removeEntity(_0x2679b1,null))[_0x0798('0x45')](handleError(_0x2679b1,null));};
\ No newline at end of file
index a6d467a..63828f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3826=['path','rimraf','./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields','idField','lodash','util','api','moment','bluebird','request-promise'];(function(_0x5e183d,_0x37f16c){var _0x5f0a75=function(_0x5edf25){while(--_0x5edf25){_0x5e183d['push'](_0x5e183d['shift']());}};_0x5f0a75(++_0x37f16c);}(_0x3826,0x190));var _0x6382=function(_0x5185c6,_0x4e7c65){_0x5185c6=_0x5185c6-0x0;var _0x1a9c19=_0x3826[_0x5185c6];return _0x1a9c19;};'use strict';var _=require(_0x6382('0x0'));var util=require(_0x6382('0x1'));var logger=require('../../config/logger')(_0x6382('0x2'));var moment=require(_0x6382('0x3'));var BPromise=require(_0x6382('0x4'));var rp=require(_0x6382('0x5'));var fs=require('fs');var path=require(_0x6382('0x6'));var rimraf=require(_0x6382('0x7'));var config=require('../../config/environment');var attributes=require(_0x6382('0x8'));module[_0x6382('0x9')]=function(_0x38359d,_0x2c34ef){return _0x38359d[_0x6382('0xa')](_0x6382('0xb'),attributes,{'tableName':_0x6382('0xc'),'paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':[_0x6382('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb458=['util','../../config/logger','bluebird','request-promise','path','rimraf','./intFreshdeskField.attributes','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','FieldId','lodash'];(function(_0x1af2e1,_0x50074e){var _0x126714=function(_0x172d88){while(--_0x172d88){_0x1af2e1['push'](_0x1af2e1['shift']());}};_0x126714(++_0x50074e);}(_0xb458,0x103));var _0x8b45=function(_0xec7927,_0x417df7){_0xec7927=_0xec7927-0x0;var _0xb16197=_0xb458[_0xec7927];return _0xb16197;};'use strict';var _=require(_0x8b45('0x0'));var util=require(_0x8b45('0x1'));var logger=require(_0x8b45('0x2'))('api');var moment=require('moment');var BPromise=require(_0x8b45('0x3'));var rp=require(_0x8b45('0x4'));var fs=require('fs');var path=require(_0x8b45('0x5'));var rimraf=require(_0x8b45('0x6'));var config=require('../../config/environment');var attributes=require(_0x8b45('0x7'));module['exports']=function(_0x5cc2d5,_0xe8d774){return _0x5cc2d5[_0x8b45('0x8')](_0x8b45('0x9'),attributes,{'tableName':_0x8b45('0xa'),'paranoid':![],'indexes':[{'name':_0x8b45('0xb'),'fields':['idField',_0x8b45('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index aa77939..3299263 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x903a=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','bluebird','randomstring'];(function(_0x34c7e8,_0x16f1a3){var _0x3ec838=function(_0x1e9512){while(--_0x1e9512){_0x34c7e8['push'](_0x34c7e8['shift']());}};_0x3ec838(++_0x16f1a3);}(_0x903a,0x162));var _0xa903=function(_0x5f4488,_0x3e5788){_0x5f4488=_0x5f4488-0x0;var _0x5141cb=_0x903a[_0x5f4488];return _0x5141cb;};'use strict';var _=require('lodash');var util=require(_0xa903('0x0'));var moment=require('moment');var BPromise=require(_0xa903('0x1'));var rs=require(_0xa903('0x2'));var fs=require('fs');var Redis=require(_0xa903('0x3'));var db=require(_0xa903('0x4'))['db'];var utils=require(_0xa903('0x5'));var logger=require(_0xa903('0x6'))(_0xa903('0x7'));var config=require(_0xa903('0x8'));var jayson=require(_0xa903('0x9'));var client=jayson['client'][_0xa903('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x39c38c,_0x3357cb,_0x252411){return new BPromise(function(_0x4ce3f5,_0x264a33){return client[_0xa903('0xb')](_0x39c38c,_0x252411)['then'](function(_0x8559b8){logger[_0xa903('0xc')](_0xa903('0xd'),_0x3357cb,_0xa903('0xe'));logger['debug'](_0xa903('0xf'),_0x3357cb,_0xa903('0xe'),JSON[_0xa903('0x10')](_0x8559b8));if(_0x8559b8[_0xa903('0x11')]){if(_0x8559b8[_0xa903('0x11')][_0xa903('0x12')]===0x1f4){logger[_0xa903('0x11')](_0xa903('0xd'),_0x3357cb,_0x8559b8[_0xa903('0x11')][_0xa903('0x13')]);return _0x264a33(_0x8559b8[_0xa903('0x11')][_0xa903('0x13')]);}logger['error'](_0xa903('0xd'),_0x3357cb,_0x8559b8[_0xa903('0x11')]['message']);return _0x4ce3f5(_0x8559b8[_0xa903('0x11')][_0xa903('0x13')]);}else{logger[_0xa903('0xc')](_0xa903('0xd'),_0x3357cb,_0xa903('0xe'));_0x4ce3f5(_0x8559b8['result'][_0xa903('0x13')]);}})[_0xa903('0x14')](function(_0x522232){logger[_0xa903('0x11')](_0xa903('0xd'),_0x3357cb,_0x522232);_0x264a33(_0x522232);});});}
\ No newline at end of file
+var _0x3ae1=['info','FreshdeskField,\x20%s,\x20%s','request\x20sent','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x52cd24,_0x5d9cad){var _0x58be98=function(_0x3e0b6f){while(--_0x3e0b6f){_0x52cd24['push'](_0x52cd24['shift']());}};_0x58be98(++_0x5d9cad);}(_0x3ae1,0x1ea));var _0x13ae=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0x3ae1[_0x40ac5e];return _0x2839d6;};'use strict';var _=require(_0x13ae('0x0'));var util=require(_0x13ae('0x1'));var moment=require('moment');var BPromise=require(_0x13ae('0x2'));var rs=require(_0x13ae('0x3'));var fs=require('fs');var Redis=require(_0x13ae('0x4'));var db=require(_0x13ae('0x5'))['db'];var utils=require(_0x13ae('0x6'));var logger=require('../../config/logger')(_0x13ae('0x7'));var config=require(_0x13ae('0x8'));var jayson=require(_0x13ae('0x9'));var client=jayson[_0x13ae('0xa')][_0x13ae('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4224e3,_0x56b482,_0x23f43e){return new BPromise(function(_0x2c5e32,_0x1cbd4e){return client[_0x13ae('0xc')](_0x4224e3,_0x23f43e)[_0x13ae('0xd')](function(_0x28d9f0){logger[_0x13ae('0xe')](_0x13ae('0xf'),_0x56b482,_0x13ae('0x10'));logger['debug'](_0x13ae('0x11'),_0x56b482,_0x13ae('0x10'),JSON[_0x13ae('0x12')](_0x28d9f0));if(_0x28d9f0['error']){if(_0x28d9f0[_0x13ae('0x13')][_0x13ae('0x14')]===0x1f4){logger[_0x13ae('0x13')]('FreshdeskField,\x20%s,\x20%s',_0x56b482,_0x28d9f0[_0x13ae('0x13')][_0x13ae('0x15')]);return _0x1cbd4e(_0x28d9f0['error'][_0x13ae('0x15')]);}logger[_0x13ae('0x13')]('FreshdeskField,\x20%s,\x20%s',_0x56b482,_0x28d9f0[_0x13ae('0x13')][_0x13ae('0x15')]);return _0x2c5e32(_0x28d9f0['error']['message']);}else{logger[_0x13ae('0xe')](_0x13ae('0xf'),_0x56b482,_0x13ae('0x10'));_0x2c5e32(_0x28d9f0[_0x13ae('0x16')][_0x13ae('0x15')]);}})[_0x13ae('0x17')](function(_0x4c43da){logger[_0x13ae('0x13')]('FreshdeskField,\x20%s,\x20%s',_0x56b482,_0x4c43da);_0x1cbd4e(_0x4c43da);});});}
\ No newline at end of file
index 130dbf5..92e6ce2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['show','getFields','post','create','addConfiguration','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','isAuthenticated','get'];(function(_0x4612df,_0x37a8f7){var _0x2804c6=function(_0x2b1979){while(--_0x2b1979){_0x4612df['push'](_0x4612df['shift']());}};_0x2804c6(++_0x37a8f7);}(_0xac4a,0x13f));var _0xaac4=function(_0xaedc0a,_0x595119){_0xaedc0a=_0xaedc0a-0x0;var _0x21d2e8=_0xac4a[_0xaedc0a];return _0x21d2e8;};'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')]('/:id',auth[_0xaac4('0x9')](),controller[_0xaac4('0xb')]);router['get']('/:id/configurations',auth[_0xaac4('0x9')](),controller['getConfigurations']);router[_0xaac4('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0xaac4('0xc')]);router[_0xaac4('0xd')]('/',auth[_0xaac4('0x9')](),controller[_0xaac4('0xe')]);router[_0xaac4('0xd')]('/:id/configurations',auth['isAuthenticated'](),controller[_0xaac4('0xf')]);router[_0xaac4('0x10')](_0xaac4('0x11'),auth['isAuthenticated'](),controller[_0xaac4('0x12')]);router[_0xaac4('0x13')]('/:id',auth[_0xaac4('0x9')](),controller[_0xaac4('0x14')]);module[_0xaac4('0x15')]=router;
\ No newline at end of file
+var _0xbfcc=['destroy','exports','multer','connect-timeout','express','Router','fs-extra','get','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','/:id','update'];(function(_0x54c56d,_0x4a95b5){var _0x1a7059=function(_0x25a5c2){while(--_0x25a5c2){_0x54c56d['push'](_0x54c56d['shift']());}};_0x1a7059(++_0x4a95b5);}(_0xbfcc,0x1dd));var _0xcbfc=function(_0x3aaf0a,_0x450970){_0x3aaf0a=_0x3aaf0a-0x0;var _0x33e6bc=_0xbfcc[_0x3aaf0a];return _0x33e6bc;};'use strict';var multer=require(_0xcbfc('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xcbfc('0x1'));var express=require(_0xcbfc('0x2'));var router=express[_0xcbfc('0x3')]();var fs_extra=require(_0xcbfc('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intFreshsalesAccount.controller');router[_0xcbfc('0x5')]('/',auth[_0xcbfc('0x6')](),controller['index']);router[_0xcbfc('0x5')]('/:id',auth[_0xcbfc('0x6')](),controller[_0xcbfc('0x7')]);router[_0xcbfc('0x5')](_0xcbfc('0x8'),auth['isAuthenticated'](),controller[_0xcbfc('0x9')]);router[_0xcbfc('0x5')](_0xcbfc('0xa'),auth[_0xcbfc('0x6')](),controller[_0xcbfc('0xb')]);router[_0xcbfc('0xc')]('/',auth['isAuthenticated'](),controller[_0xcbfc('0xd')]);router[_0xcbfc('0xc')](_0xcbfc('0x8'),auth[_0xcbfc('0x6')](),controller[_0xcbfc('0xe')]);router['put'](_0xcbfc('0xf'),auth[_0xcbfc('0x6')](),controller[_0xcbfc('0x10')]);router['delete'](_0xcbfc('0xf'),auth[_0xcbfc('0x6')](),controller[_0xcbfc('0x11')]);module[_0xcbfc('0x12')]=router;
\ No newline at end of file
index 504887b..a291563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6343=['STRING','remoteUri'];(function(_0x1ea36f,_0x29be27){var _0x5b0b2d=function(_0x18c917){while(--_0x18c917){_0x1ea36f['push'](_0x1ea36f['shift']());}};_0x5b0b2d(++_0x29be27);}(_0x6343,0x168));var _0x3634=function(_0x4d8fc7,_0x5d012e){_0x4d8fc7=_0x4d8fc7-0x0;var _0xea2744=_0x6343[_0x4d8fc7];return _0xea2744;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3634('0x0')]},'description':{'type':Sequelize[_0x3634('0x0')]},'username':{'type':Sequelize['STRING'],'unique':'username'},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x3634('0x1')},'serverUrl':{'type':Sequelize[_0x3634('0x0')],'allowNull':![]}};
\ No newline at end of file
+var _0x3de3=['username','remoteUri','sequelize','STRING'];(function(_0x4914e2,_0x48be8f){var _0x2dcd07=function(_0x1a2565){while(--_0x1a2565){_0x4914e2['push'](_0x4914e2['shift']());}};_0x2dcd07(++_0x48be8f);}(_0x3de3,0x1ce));var _0x33de=function(_0x574b9b,_0x54e573){_0x574b9b=_0x574b9b-0x0;var _0x16ff80=_0x3de3[_0x574b9b];return _0x16ff80;};'use strict';var Sequelize=require(_0x33de('0x0'));module['exports']={'name':{'type':Sequelize[_0x33de('0x1')]},'description':{'type':Sequelize[_0x33de('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x33de('0x2')},'apiKey':{'type':Sequelize[_0x33de('0x1')]},'remoteUri':{'type':Sequelize[_0x33de('0x1')],'unique':_0x33de('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 4c9e07b..a8cb64e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ad3=['stringify','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','FreshsalesAccount','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','catch','show','params','rawAttributes','include','find','create','body','findOne','getConfigurations','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','FreshsalesConfiguration','FreshsalesField','getFields','username','remoteUri','apiKey','slice','lastIndexOf','GET','format','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','statusCode'];(function(_0x4d9db1,_0x22d64a){var _0x5e0448=function(_0x59fa58){while(--_0x59fa58){_0x4d9db1['push'](_0x4d9db1['shift']());}};_0x5e0448(++_0x22d64a);}(_0x7ad3,0x130));var _0x37ad=function(_0x324012,_0x23f45f){_0x324012=_0x324012-0x0;var _0x435cf2=_0x7ad3[_0x324012];return _0x435cf2;};'use strict';var emlformat=require(_0x37ad('0x0'));var rimraf=require(_0x37ad('0x1'));var zipdir=require(_0x37ad('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x37ad('0x3'));var moment=require(_0x37ad('0x4'));var BPromise=require(_0x37ad('0x5'));var Mustache=require(_0x37ad('0x6'));var util=require(_0x37ad('0x7'));var path=require(_0x37ad('0x8'));var sox=require(_0x37ad('0x9'));var csv=require('to-csv');var ejs=require(_0x37ad('0xa'));var fs=require('fs');var fs_extra=require(_0x37ad('0xb'));var _=require(_0x37ad('0xc'));var squel=require(_0x37ad('0xd'));var crypto=require('crypto');var jsforce=require(_0x37ad('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x37ad('0xf'));var Papa=require(_0x37ad('0x10'));var Redis=require(_0x37ad('0x11'));var authService=require(_0x37ad('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x37ad('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x37ad('0x14'))(_0x37ad('0x15'));var utils=require(_0x37ad('0x16'));var config=require(_0x37ad('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x415485,_0x3c403e){_0x3c403e=_0x3c403e||0xcc;return function(_0x1eca6e){if(_0x1eca6e){return _0x415485[_0x37ad('0x18')](_0x3c403e);}return _0x415485[_0x37ad('0x19')](_0x3c403e)[_0x37ad('0x1a')]();};}function respondWithResult(_0x3aa969,_0x2f679d){_0x2f679d=_0x2f679d||0xc8;return function(_0x1f5c11){if(_0x1f5c11){return _0x3aa969[_0x37ad('0x19')](_0x2f679d)[_0x37ad('0x1b')](_0x1f5c11);}};}function respondWithFilteredResult(_0x47229d,_0x4660ea){return function(_0x4fe72){if(_0x4fe72){var _0x48c9c8=typeof _0x4660ea[_0x37ad('0x1c')]===_0x37ad('0x1d')&&typeof _0x4660ea[_0x37ad('0x1e')]==='undefined';var _0x4e15a0=_0x4fe72[_0x37ad('0x1f')];var _0x269828=_0x48c9c8?0x0:_0x4660ea['offset'];var _0x13d001=_0x48c9c8?_0x4fe72['count']:_0x4660ea[_0x37ad('0x1c')]+_0x4660ea[_0x37ad('0x1e')];var _0x2f80d5;if(_0x13d001>=_0x4e15a0){_0x13d001=_0x4e15a0;_0x2f80d5=0xc8;}else{_0x2f80d5=0xce;}_0x47229d[_0x37ad('0x19')](_0x2f80d5);return _0x47229d[_0x37ad('0x20')]('Content-Range',_0x269828+'-'+_0x13d001+'/'+_0x4e15a0)[_0x37ad('0x1b')](_0x4fe72);}return null;};}function patchUpdates(_0xbe58ea){return function(_0x3d654e){try{jsonpatch[_0x37ad('0x21')](_0x3d654e,_0xbe58ea,!![]);}catch(_0x508295){return BPromise[_0x37ad('0x22')](_0x508295);}return _0x3d654e[_0x37ad('0x23')]();};}function saveUpdates(_0x17b135,_0x136ee2){return function(_0x43e5cb){if(_0x43e5cb){return _0x43e5cb[_0x37ad('0x24')](_0x17b135)[_0x37ad('0x25')](function(_0x1494ba){return _0x1494ba;});}return null;};}function removeEntity(_0x5ee549,_0x4a31a0){return function(_0x5f4249){if(_0x5f4249){return _0x5f4249[_0x37ad('0x26')]()['then'](function(){_0x5ee549['status'](0xcc)[_0x37ad('0x1a')]();});}};}function handleEntityNotFound(_0x1712f0,_0x1287c7){return function(_0x439192){if(!_0x439192){_0x1712f0[_0x37ad('0x18')](0x194);}return _0x439192;};}function handleError(_0xa7e130,_0x13d705){_0x13d705=_0x13d705||0x1f4;return function(_0x4af0ed){logger[_0x37ad('0x27')](_0x4af0ed[_0x37ad('0x28')]);if(_0x4af0ed[_0x37ad('0x29')]){delete _0x4af0ed[_0x37ad('0x29')];}_0xa7e130[_0x37ad('0x19')](_0x13d705)[_0x37ad('0x2a')](_0x4af0ed);};}exports[_0x37ad('0x2b')]=function(_0x575e39,_0x4b00a9){var _0x4820c0={},_0x4bdfb0={},_0x28ff61={'count':0x0,'rows':[]};var _0x1e22bd=_[_0x37ad('0x2c')](db[_0x37ad('0x2d')]['rawAttributes'],function(_0x423d09){return{'name':_0x423d09['fieldName'],'type':_0x423d09['type'][_0x37ad('0x2e')]};});_0x4bdfb0[_0x37ad('0x2f')]=_[_0x37ad('0x2c')](_0x1e22bd,_0x37ad('0x29'));_0x4bdfb0[_0x37ad('0x30')]=_[_0x37ad('0x31')](_0x575e39[_0x37ad('0x30')]);_0x4bdfb0[_0x37ad('0x32')]=_[_0x37ad('0x33')](_0x4bdfb0[_0x37ad('0x2f')],_0x4bdfb0[_0x37ad('0x30')]);_0x4820c0[_0x37ad('0x34')]=_[_0x37ad('0x33')](_0x4bdfb0[_0x37ad('0x2f')],qs[_0x37ad('0x35')](_0x575e39[_0x37ad('0x30')][_0x37ad('0x35')]));_0x4820c0[_0x37ad('0x34')]=_0x4820c0[_0x37ad('0x34')][_0x37ad('0x36')]?_0x4820c0[_0x37ad('0x34')]:_0x4bdfb0[_0x37ad('0x2f')];if(!_0x575e39[_0x37ad('0x30')][_0x37ad('0x37')](_0x37ad('0x38'))){_0x4820c0['limit']=qs[_0x37ad('0x1e')](_0x575e39[_0x37ad('0x30')][_0x37ad('0x1e')]);_0x4820c0[_0x37ad('0x1c')]=qs['offset'](_0x575e39[_0x37ad('0x30')][_0x37ad('0x1c')]);}_0x4820c0[_0x37ad('0x39')]=qs[_0x37ad('0x3a')](_0x575e39[_0x37ad('0x30')][_0x37ad('0x3a')]);_0x4820c0[_0x37ad('0x3b')]=qs[_0x37ad('0x32')](_[_0x37ad('0x3c')](_0x575e39['query'],_0x4bdfb0[_0x37ad('0x32')]),_0x1e22bd);if(_0x575e39['query'][_0x37ad('0x3d')]){_0x4820c0[_0x37ad('0x3b')]=_[_0x37ad('0x3e')](_0x4820c0[_0x37ad('0x3b')],{'$or':_[_0x37ad('0x2c')](_0x1e22bd,function(_0x47e182){if(_0x47e182[_0x37ad('0x3f')]!==_0x37ad('0x40')){var _0x2c20b0={};_0x2c20b0[_0x47e182[_0x37ad('0x29')]]={'$like':'%'+_0x575e39[_0x37ad('0x30')][_0x37ad('0x3d')]+'%'};return _0x2c20b0;}})});}_0x4820c0=_[_0x37ad('0x3e')]({},_0x4820c0,_0x575e39[_0x37ad('0x41')]);var _0x325ef5={'where':_0x4820c0[_0x37ad('0x3b')]};return db[_0x37ad('0x2d')][_0x37ad('0x1f')](_0x325ef5)[_0x37ad('0x25')](function(_0x2cdefe){_0x28ff61['count']=_0x2cdefe;if(_0x575e39[_0x37ad('0x30')][_0x37ad('0x42')]){_0x4820c0['include']=[{'all':!![]}];}return db[_0x37ad('0x2d')]['findAll'](_0x4820c0);})[_0x37ad('0x25')](function(_0x2500b4){_0x28ff61['rows']=_0x2500b4;return _0x28ff61;})[_0x37ad('0x25')](respondWithFilteredResult(_0x4b00a9,_0x4820c0))[_0x37ad('0x43')](handleError(_0x4b00a9,null));};exports[_0x37ad('0x44')]=function(_0x3cccdb,_0x5be9cb){var _0x17a044={'raw':![],'where':{'id':_0x3cccdb[_0x37ad('0x45')]['id']}},_0x413deb={};_0x413deb[_0x37ad('0x2f')]=_[_0x37ad('0x31')](db[_0x37ad('0x2d')][_0x37ad('0x46')]);_0x413deb['query']=_[_0x37ad('0x31')](_0x3cccdb[_0x37ad('0x30')]);_0x413deb['filters']=_[_0x37ad('0x33')](_0x413deb[_0x37ad('0x2f')],_0x413deb['query']);_0x17a044[_0x37ad('0x34')]=_[_0x37ad('0x33')](_0x413deb['model'],qs[_0x37ad('0x35')](_0x3cccdb[_0x37ad('0x30')]['fields']));_0x17a044[_0x37ad('0x34')]=_0x17a044[_0x37ad('0x34')][_0x37ad('0x36')]?_0x17a044['attributes']:_0x413deb[_0x37ad('0x2f')];if(_0x3cccdb[_0x37ad('0x30')][_0x37ad('0x42')]){_0x17a044[_0x37ad('0x47')]=[{'all':!![]}];}_0x17a044=_[_0x37ad('0x3e')]({},_0x17a044,_0x3cccdb[_0x37ad('0x41')]);return db['FreshsalesAccount'][_0x37ad('0x48')](_0x17a044)[_0x37ad('0x25')](handleEntityNotFound(_0x5be9cb,null))['then'](respondWithResult(_0x5be9cb,null))[_0x37ad('0x43')](handleError(_0x5be9cb,null));};exports[_0x37ad('0x49')]=function(_0x9d6549,_0x492ab1){return db['FreshsalesAccount'][_0x37ad('0x49')](_0x9d6549['body'],{})[_0x37ad('0x25')](respondWithResult(_0x492ab1,0xc9))['catch'](handleError(_0x492ab1,null));};exports[_0x37ad('0x24')]=function(_0x3488d1,_0x448999){if(_0x3488d1[_0x37ad('0x4a')]['id']){delete _0x3488d1[_0x37ad('0x4a')]['id'];}return db[_0x37ad('0x2d')][_0x37ad('0x48')]({'where':{'id':_0x3488d1['params']['id']}})[_0x37ad('0x25')](handleEntityNotFound(_0x448999,null))[_0x37ad('0x25')](saveUpdates(_0x3488d1['body'],null))[_0x37ad('0x25')](respondWithResult(_0x448999,null))[_0x37ad('0x43')](handleError(_0x448999,null));};exports[_0x37ad('0x26')]=function(_0xb5a028,_0x56b4e0){return db[_0x37ad('0x2d')][_0x37ad('0x48')]({'where':{'id':_0xb5a028['params']['id']}})[_0x37ad('0x25')](handleEntityNotFound(_0x56b4e0,null))['then'](removeEntity(_0x56b4e0,null))['catch'](handleError(_0x56b4e0,null));};exports['getConfigurations']=function(_0x3d5e0e,_0x152ee4,_0x22156a){var _0xe3927={};var _0x2ad2f9={};var _0x3ae2e3;var _0xca4f6;return db[_0x37ad('0x2d')][_0x37ad('0x4b')]({'where':{'id':_0x3d5e0e[_0x37ad('0x45')]['id']}})['then'](handleEntityNotFound(_0x152ee4,null))[_0x37ad('0x25')](function(_0x431e7a){if(_0x431e7a){_0x3ae2e3=_0x431e7a;_0x2ad2f9[_0x37ad('0x2f')]=_['keys'](db['FreshsalesConfiguration'][_0x37ad('0x46')]);_0x2ad2f9[_0x37ad('0x30')]=_[_0x37ad('0x31')](_0x3d5e0e[_0x37ad('0x30')]);_0x2ad2f9['filters']=_[_0x37ad('0x33')](_0x2ad2f9['model'],_0x2ad2f9[_0x37ad('0x30')]);_0xe3927[_0x37ad('0x34')]=_[_0x37ad('0x33')](_0x2ad2f9[_0x37ad('0x2f')],qs[_0x37ad('0x35')](_0x3d5e0e[_0x37ad('0x30')][_0x37ad('0x35')]));_0xe3927[_0x37ad('0x34')]=_0xe3927[_0x37ad('0x34')][_0x37ad('0x36')]?_0xe3927['attributes']:_0x2ad2f9[_0x37ad('0x2f')];_0xe3927[_0x37ad('0x39')]=qs[_0x37ad('0x3a')](_0x3d5e0e[_0x37ad('0x30')][_0x37ad('0x3a')]);_0xe3927[_0x37ad('0x3b')]=qs['filters'](_[_0x37ad('0x3c')](_0x3d5e0e['query'],_0x2ad2f9[_0x37ad('0x32')]));if(_0x3d5e0e[_0x37ad('0x30')]['filter']){_0xe3927[_0x37ad('0x3b')]=_[_0x37ad('0x3e')](_0xe3927[_0x37ad('0x3b')],{'$or':_[_0x37ad('0x2c')](_0xe3927['attributes'],function(_0x206c2f){var _0x50bfa6={};_0x50bfa6[_0x206c2f]={'$like':'%'+_0x3d5e0e['query'][_0x37ad('0x3d')]+'%'};return _0x50bfa6;})});}_0xe3927=_[_0x37ad('0x3e')]({},_0xe3927,_0x3d5e0e[_0x37ad('0x41')]);return _0x3ae2e3[_0x37ad('0x4c')](_0xe3927);}})['then'](function(_0x1fe15a){if(_0x1fe15a){_0xca4f6=_0x1fe15a[_0x37ad('0x36')];if(!_0x3d5e0e[_0x37ad('0x30')][_0x37ad('0x37')]('nolimit')){_0xe3927[_0x37ad('0x1e')]=qs[_0x37ad('0x1e')](_0x3d5e0e['query'][_0x37ad('0x1e')]);_0xe3927[_0x37ad('0x1c')]=qs[_0x37ad('0x1c')](_0x3d5e0e[_0x37ad('0x30')][_0x37ad('0x1c')]);}return _0x3ae2e3[_0x37ad('0x4c')](_0xe3927);}})[_0x37ad('0x25')](function(_0xb282fc){if(_0xb282fc){return _0xb282fc?{'count':_0xca4f6,'rows':_0xb282fc}:null;}})[_0x37ad('0x25')](respondWithResult(_0x152ee4,null))[_0x37ad('0x43')](handleError(_0x152ee4,null));};exports[_0x37ad('0x4d')]=function(_0x4fe2a2,_0x5b5286,_0x4eb9d5){if(_0x4fe2a2[_0x37ad('0x4a')]['id']){delete _0x4fe2a2[_0x37ad('0x4a')]['id'];}return db['FreshsalesAccount'][_0x37ad('0x4b')]({'where':{'id':_0x4fe2a2[_0x37ad('0x45')]['id']}})[_0x37ad('0x25')](handleEntityNotFound(_0x5b5286,null))['then'](function(_0x2900f4){if(_0x2900f4){_0x4fe2a2['body'][_0x37ad('0x4e')]=_0x2900f4['id'];_0x4fe2a2['body'][_0x37ad('0x4f')]=integrations['getSubjects'](_0x4fe2a2['body'][_0x37ad('0x50')],_0x4fe2a2['body']['type']);_0x4fe2a2[_0x37ad('0x4a')][_0x37ad('0x51')]=integrations[_0x37ad('0x52')](_0x4fe2a2[_0x37ad('0x4a')][_0x37ad('0x50')],_0x4fe2a2[_0x37ad('0x4a')][_0x37ad('0x3f')]);return db[_0x37ad('0x53')][_0x37ad('0x49')](_0x4fe2a2['body'],{'include':[{'model':db[_0x37ad('0x54')],'as':_0x37ad('0x4f')},{'model':db['FreshsalesField'],'as':_0x37ad('0x51')}]});}return null;})['then'](respondWithResult(_0x5b5286,null))[_0x37ad('0x43')](handleError(_0x5b5286,null));};exports[_0x37ad('0x55')]=function(_0x5b563b,_0x3bed16,_0x1e02b0){var _0x49a22a='';var _0x59c8db='';return db[_0x37ad('0x2d')]['findOne']({'where':{'id':_0x5b563b[_0x37ad('0x45')]['id']},'attributes':['id',_0x37ad('0x56'),_0x37ad('0x57'),_0x37ad('0x58')]})[_0x37ad('0x25')](handleEntityNotFound(_0x3bed16,null))[_0x37ad('0x25')](function(_0x2c427d){if(_0x2c427d){_0x59c8db=_0x2c427d[_0x37ad('0x56')];_0x49a22a=_0x2c427d[_0x37ad('0x57')];var _0xd59079=_0x2c427d['remoteUri'][_0x37ad('0x59')](-0x1);if(_0xd59079==='/'){_0x49a22a=_0x49a22a['substring'](0x0,_0x49a22a[_0x37ad('0x5a')](_0xd59079));}return rp({'method':_0x37ad('0x5b'),'uri':util[_0x37ad('0x5c')]('%s%s',_0x49a22a,_0x37ad('0x5d')),'headers':{'Authorization':_0x37ad('0x5e')+_0x2c427d[_0x37ad('0x58')]},'json':!![]});}})['then'](function(_0x40c680){if(_0x40c680){var _0x3ae520=_0x40c680[_0x37ad('0x5f')];var _0x344592=![];var _0x28af99=null;for(_0x28af99=0x0;_0x28af99<_0x3ae520[_0x37ad('0x36')];_0x28af99++){if(_0x3ae520[_0x28af99][_0x37ad('0x60')]===_0x59c8db){_0x344592=!![];}}if(_0x344592){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x37ad('0x61')});}}})[_0x37ad('0x25')](respondWithResult(_0x3bed16,null))['catch'](function(_0x181b2c){var _0x39a67c=_0x5b563b[_0x37ad('0x30')][_0x37ad('0x62')]?0x1f4:_0x181b2c[_0x37ad('0x63')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x37ad('0x55'),_0x39a67c,JSON[_0x37ad('0x64')](_0x181b2c));delete _0x181b2c[_0x37ad('0x29')];if(_0x39a67c===0x191){_0x39a67c=0x190;}_0x3bed16[_0x37ad('0x19')](_0x39a67c)[_0x37ad('0x2a')](_0x5b563b['query'][_0x37ad('0x62')]?{'message':'Wrong\x20credentials','statusCode':_0x181b2c[_0x37ad('0x63')]}:_0x181b2c);});};
\ No newline at end of file
+var _0x1060=['to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','end','offset','undefined','limit','count','status','set','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','FreshsalesAccount','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','length','order','sort','pick','filter','merge','where','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','getConfigurations','FreshsalesConfiguration','hasOwnProperty','nolimit','addConfiguration','findOne','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesField','getFields','username','remoteUri','apiKey','slice','substring','GET','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','desk.js'];(function(_0x245545,_0x4983b3){var _0x106a5f=function(_0x278277){while(--_0x278277){_0x245545['push'](_0x245545['shift']());}};_0x106a5f(++_0x4983b3);}(_0x1060,0xc1));var _0x0106=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x1060[_0x5f1391];return _0x50ebe3;};'use strict';var emlformat=require(_0x0106('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0106('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0106('0x2'));var moment=require('moment');var BPromise=require(_0x0106('0x3'));var Mustache=require(_0x0106('0x4'));var util=require(_0x0106('0x5'));var path=require(_0x0106('0x6'));var sox=require(_0x0106('0x7'));var csv=require('to-csv');var ejs=require(_0x0106('0x8'));var fs=require('fs');var fs_extra=require(_0x0106('0x9'));var _=require('lodash');var squel=require(_0x0106('0xa'));var crypto=require(_0x0106('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x0106('0xc'));var toCsv=require(_0x0106('0xd'));var querystring=require(_0x0106('0xe'));var Papa=require(_0x0106('0xf'));var Redis=require(_0x0106('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x0106('0x11'));var hardwareService=require(_0x0106('0x12'));var logger=require(_0x0106('0x13'))(_0x0106('0x14'));var utils=require(_0x0106('0x15'));var config=require(_0x0106('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x0106('0x17'))['db'];var integrations=require(_0x0106('0x18'));function respondWithStatusCode(_0x50cc9a,_0x470ab4){_0x470ab4=_0x470ab4||0xcc;return function(_0x1e0900){if(_0x1e0900){return _0x50cc9a['sendStatus'](_0x470ab4);}return _0x50cc9a['status'](_0x470ab4)[_0x0106('0x19')]();};}function respondWithResult(_0x519fe1,_0x5af373){_0x5af373=_0x5af373||0xc8;return function(_0x5f2fea){if(_0x5f2fea){return _0x519fe1['status'](_0x5af373)['json'](_0x5f2fea);}};}function respondWithFilteredResult(_0x4ae86e,_0x472e79){return function(_0x5a60b1){if(_0x5a60b1){var _0x52da27=typeof _0x472e79[_0x0106('0x1a')]===_0x0106('0x1b')&&typeof _0x472e79[_0x0106('0x1c')]===_0x0106('0x1b');var _0x38dd7e=_0x5a60b1[_0x0106('0x1d')];var _0xec8593=_0x52da27?0x0:_0x472e79[_0x0106('0x1a')];var _0x176b4a=_0x52da27?_0x5a60b1[_0x0106('0x1d')]:_0x472e79[_0x0106('0x1a')]+_0x472e79['limit'];var _0x4dabf1;if(_0x176b4a>=_0x38dd7e){_0x176b4a=_0x38dd7e;_0x4dabf1=0xc8;}else{_0x4dabf1=0xce;}_0x4ae86e[_0x0106('0x1e')](_0x4dabf1);return _0x4ae86e[_0x0106('0x1f')]('Content-Range',_0xec8593+'-'+_0x176b4a+'/'+_0x38dd7e)[_0x0106('0x20')](_0x5a60b1);}return null;};}function patchUpdates(_0x3479dc){return function(_0x41c214){try{jsonpatch[_0x0106('0x21')](_0x41c214,_0x3479dc,!![]);}catch(_0x437fe6){return BPromise[_0x0106('0x22')](_0x437fe6);}return _0x41c214[_0x0106('0x23')]();};}function saveUpdates(_0x19b1d2,_0x19b469){return function(_0x5f5a30){if(_0x5f5a30){return _0x5f5a30[_0x0106('0x24')](_0x19b1d2)[_0x0106('0x25')](function(_0x5f5904){return _0x5f5904;});}return null;};}function removeEntity(_0x35b0f3,_0x379800){return function(_0x36970d){if(_0x36970d){return _0x36970d[_0x0106('0x26')]()[_0x0106('0x25')](function(){_0x35b0f3['status'](0xcc)[_0x0106('0x19')]();});}};}function handleEntityNotFound(_0xea66a6,_0x4927be){return function(_0x50832a){if(!_0x50832a){_0xea66a6['sendStatus'](0x194);}return _0x50832a;};}function handleError(_0x51c21b,_0x3442d8){_0x3442d8=_0x3442d8||0x1f4;return function(_0x12b41a){logger[_0x0106('0x27')](_0x12b41a[_0x0106('0x28')]);if(_0x12b41a[_0x0106('0x29')]){delete _0x12b41a[_0x0106('0x29')];}_0x51c21b[_0x0106('0x1e')](_0x3442d8)[_0x0106('0x2a')](_0x12b41a);};}exports[_0x0106('0x2b')]=function(_0x3baf08,_0x2b24db){var _0x3ac176={},_0x3ee407={},_0x14f2cf={'count':0x0,'rows':[]};var _0x496bf7=_[_0x0106('0x2c')](db[_0x0106('0x2d')][_0x0106('0x2e')],function(_0x897294){return{'name':_0x897294['fieldName'],'type':_0x897294[_0x0106('0x2f')][_0x0106('0x30')]};});_0x3ee407[_0x0106('0x31')]=_[_0x0106('0x2c')](_0x496bf7,_0x0106('0x29'));_0x3ee407['query']=_[_0x0106('0x32')](_0x3baf08[_0x0106('0x33')]);_0x3ee407[_0x0106('0x34')]=_[_0x0106('0x35')](_0x3ee407['model'],_0x3ee407[_0x0106('0x33')]);_0x3ac176['attributes']=_[_0x0106('0x35')](_0x3ee407['model'],qs['fields'](_0x3baf08[_0x0106('0x33')][_0x0106('0x36')]));_0x3ac176[_0x0106('0x37')]=_0x3ac176[_0x0106('0x37')][_0x0106('0x38')]?_0x3ac176['attributes']:_0x3ee407['model'];if(!_0x3baf08[_0x0106('0x33')]['hasOwnProperty']('nolimit')){_0x3ac176[_0x0106('0x1c')]=qs['limit'](_0x3baf08[_0x0106('0x33')][_0x0106('0x1c')]);_0x3ac176[_0x0106('0x1a')]=qs[_0x0106('0x1a')](_0x3baf08[_0x0106('0x33')][_0x0106('0x1a')]);}_0x3ac176[_0x0106('0x39')]=qs[_0x0106('0x3a')](_0x3baf08[_0x0106('0x33')][_0x0106('0x3a')]);_0x3ac176['where']=qs[_0x0106('0x34')](_[_0x0106('0x3b')](_0x3baf08[_0x0106('0x33')],_0x3ee407[_0x0106('0x34')]),_0x496bf7);if(_0x3baf08[_0x0106('0x33')][_0x0106('0x3c')]){_0x3ac176['where']=_[_0x0106('0x3d')](_0x3ac176[_0x0106('0x3e')],{'$or':_[_0x0106('0x2c')](_0x496bf7,function(_0x8d5189){if(_0x8d5189[_0x0106('0x2f')]!=='VIRTUAL'){var _0x429f32={};_0x429f32[_0x8d5189[_0x0106('0x29')]]={'$like':'%'+_0x3baf08['query'][_0x0106('0x3c')]+'%'};return _0x429f32;}})});}_0x3ac176=_[_0x0106('0x3d')]({},_0x3ac176,_0x3baf08[_0x0106('0x3f')]);var _0x3ea63d={'where':_0x3ac176[_0x0106('0x3e')]};return db[_0x0106('0x2d')][_0x0106('0x1d')](_0x3ea63d)[_0x0106('0x25')](function(_0x3ed405){_0x14f2cf[_0x0106('0x1d')]=_0x3ed405;if(_0x3baf08[_0x0106('0x33')][_0x0106('0x40')]){_0x3ac176['include']=[{'all':!![]}];}return db[_0x0106('0x2d')][_0x0106('0x41')](_0x3ac176);})[_0x0106('0x25')](function(_0x22dbd3){_0x14f2cf[_0x0106('0x42')]=_0x22dbd3;return _0x14f2cf;})['then'](respondWithFilteredResult(_0x2b24db,_0x3ac176))[_0x0106('0x43')](handleError(_0x2b24db,null));};exports[_0x0106('0x44')]=function(_0x371c4b,_0x5ca71d){var _0x16e5c5={'raw':![],'where':{'id':_0x371c4b[_0x0106('0x45')]['id']}},_0x4761d4={};_0x4761d4['model']=_[_0x0106('0x32')](db[_0x0106('0x2d')][_0x0106('0x2e')]);_0x4761d4[_0x0106('0x33')]=_[_0x0106('0x32')](_0x371c4b['query']);_0x4761d4[_0x0106('0x34')]=_[_0x0106('0x35')](_0x4761d4['model'],_0x4761d4[_0x0106('0x33')]);_0x16e5c5[_0x0106('0x37')]=_[_0x0106('0x35')](_0x4761d4[_0x0106('0x31')],qs[_0x0106('0x36')](_0x371c4b[_0x0106('0x33')][_0x0106('0x36')]));_0x16e5c5['attributes']=_0x16e5c5['attributes'][_0x0106('0x38')]?_0x16e5c5[_0x0106('0x37')]:_0x4761d4[_0x0106('0x31')];if(_0x371c4b['query']['includeAll']){_0x16e5c5[_0x0106('0x46')]=[{'all':!![]}];}_0x16e5c5=_[_0x0106('0x3d')]({},_0x16e5c5,_0x371c4b[_0x0106('0x3f')]);return db[_0x0106('0x2d')][_0x0106('0x47')](_0x16e5c5)['then'](handleEntityNotFound(_0x5ca71d,null))[_0x0106('0x25')](respondWithResult(_0x5ca71d,null))[_0x0106('0x43')](handleError(_0x5ca71d,null));};exports[_0x0106('0x48')]=function(_0x4f3bf8,_0x326ecf){return db['FreshsalesAccount']['create'](_0x4f3bf8[_0x0106('0x49')],{})[_0x0106('0x25')](respondWithResult(_0x326ecf,0xc9))[_0x0106('0x43')](handleError(_0x326ecf,null));};exports['update']=function(_0x56f4ed,_0x3bf9d0){if(_0x56f4ed[_0x0106('0x49')]['id']){delete _0x56f4ed[_0x0106('0x49')]['id'];}return db[_0x0106('0x2d')][_0x0106('0x47')]({'where':{'id':_0x56f4ed[_0x0106('0x45')]['id']}})[_0x0106('0x25')](handleEntityNotFound(_0x3bf9d0,null))[_0x0106('0x25')](saveUpdates(_0x56f4ed[_0x0106('0x49')],null))[_0x0106('0x25')](respondWithResult(_0x3bf9d0,null))[_0x0106('0x43')](handleError(_0x3bf9d0,null));};exports[_0x0106('0x26')]=function(_0x298329,_0x573c6d){return db[_0x0106('0x2d')][_0x0106('0x47')]({'where':{'id':_0x298329[_0x0106('0x45')]['id']}})['then'](handleEntityNotFound(_0x573c6d,null))['then'](removeEntity(_0x573c6d,null))[_0x0106('0x43')](handleError(_0x573c6d,null));};exports[_0x0106('0x4a')]=function(_0xc8b933,_0x5c4fd6,_0x5980e9){var _0x3e2942={};var _0x6c39f5={};var _0x5039ed;var _0x354bbf;return db['FreshsalesAccount']['findOne']({'where':{'id':_0xc8b933[_0x0106('0x45')]['id']}})['then'](handleEntityNotFound(_0x5c4fd6,null))[_0x0106('0x25')](function(_0xa5c45b){if(_0xa5c45b){_0x5039ed=_0xa5c45b;_0x6c39f5[_0x0106('0x31')]=_[_0x0106('0x32')](db[_0x0106('0x4b')][_0x0106('0x2e')]);_0x6c39f5['query']=_[_0x0106('0x32')](_0xc8b933[_0x0106('0x33')]);_0x6c39f5[_0x0106('0x34')]=_['intersection'](_0x6c39f5[_0x0106('0x31')],_0x6c39f5['query']);_0x3e2942['attributes']=_[_0x0106('0x35')](_0x6c39f5[_0x0106('0x31')],qs[_0x0106('0x36')](_0xc8b933[_0x0106('0x33')][_0x0106('0x36')]));_0x3e2942[_0x0106('0x37')]=_0x3e2942[_0x0106('0x37')][_0x0106('0x38')]?_0x3e2942[_0x0106('0x37')]:_0x6c39f5['model'];_0x3e2942[_0x0106('0x39')]=qs['sort'](_0xc8b933[_0x0106('0x33')][_0x0106('0x3a')]);_0x3e2942['where']=qs[_0x0106('0x34')](_[_0x0106('0x3b')](_0xc8b933[_0x0106('0x33')],_0x6c39f5[_0x0106('0x34')]));if(_0xc8b933[_0x0106('0x33')][_0x0106('0x3c')]){_0x3e2942[_0x0106('0x3e')]=_[_0x0106('0x3d')](_0x3e2942[_0x0106('0x3e')],{'$or':_[_0x0106('0x2c')](_0x3e2942['attributes'],function(_0x5ce4e9){var _0x3165c2={};_0x3165c2[_0x5ce4e9]={'$like':'%'+_0xc8b933[_0x0106('0x33')][_0x0106('0x3c')]+'%'};return _0x3165c2;})});}_0x3e2942=_[_0x0106('0x3d')]({},_0x3e2942,_0xc8b933[_0x0106('0x3f')]);return _0x5039ed[_0x0106('0x4a')](_0x3e2942);}})['then'](function(_0x16894a){if(_0x16894a){_0x354bbf=_0x16894a[_0x0106('0x38')];if(!_0xc8b933[_0x0106('0x33')][_0x0106('0x4c')](_0x0106('0x4d'))){_0x3e2942['limit']=qs[_0x0106('0x1c')](_0xc8b933['query'][_0x0106('0x1c')]);_0x3e2942[_0x0106('0x1a')]=qs['offset'](_0xc8b933[_0x0106('0x33')][_0x0106('0x1a')]);}return _0x5039ed[_0x0106('0x4a')](_0x3e2942);}})[_0x0106('0x25')](function(_0x903ac8){if(_0x903ac8){return _0x903ac8?{'count':_0x354bbf,'rows':_0x903ac8}:null;}})[_0x0106('0x25')](respondWithResult(_0x5c4fd6,null))[_0x0106('0x43')](handleError(_0x5c4fd6,null));};exports[_0x0106('0x4e')]=function(_0x24b8bc,_0x160875,_0x10a481){if(_0x24b8bc['body']['id']){delete _0x24b8bc[_0x0106('0x49')]['id'];}return db[_0x0106('0x2d')][_0x0106('0x4f')]({'where':{'id':_0x24b8bc[_0x0106('0x45')]['id']}})[_0x0106('0x25')](handleEntityNotFound(_0x160875,null))[_0x0106('0x25')](function(_0x399c87){if(_0x399c87){_0x24b8bc[_0x0106('0x49')]['AccountId']=_0x399c87['id'];_0x24b8bc[_0x0106('0x49')][_0x0106('0x50')]=integrations[_0x0106('0x51')](_0x24b8bc['body'][_0x0106('0x52')],_0x24b8bc[_0x0106('0x49')][_0x0106('0x2f')]);_0x24b8bc[_0x0106('0x49')][_0x0106('0x53')]=integrations[_0x0106('0x54')](_0x24b8bc[_0x0106('0x49')][_0x0106('0x52')],_0x24b8bc[_0x0106('0x49')][_0x0106('0x2f')]);return db[_0x0106('0x4b')][_0x0106('0x48')](_0x24b8bc[_0x0106('0x49')],{'include':[{'model':db[_0x0106('0x55')],'as':_0x0106('0x50')},{'model':db['FreshsalesField'],'as':_0x0106('0x53')}]});}return null;})[_0x0106('0x25')](respondWithResult(_0x160875,null))['catch'](handleError(_0x160875,null));};exports[_0x0106('0x56')]=function(_0x5e2f96,_0x12a79f,_0x2aa0e2){var _0x580a5d='';var _0x119aad='';return db[_0x0106('0x2d')]['findOne']({'where':{'id':_0x5e2f96['params']['id']},'attributes':['id',_0x0106('0x57'),_0x0106('0x58'),_0x0106('0x59')]})[_0x0106('0x25')](handleEntityNotFound(_0x12a79f,null))[_0x0106('0x25')](function(_0x26eece){if(_0x26eece){_0x119aad=_0x26eece[_0x0106('0x57')];_0x580a5d=_0x26eece[_0x0106('0x58')];var _0x5d7e29=_0x26eece['remoteUri'][_0x0106('0x5a')](-0x1);if(_0x5d7e29==='/'){_0x580a5d=_0x580a5d[_0x0106('0x5b')](0x0,_0x580a5d['lastIndexOf'](_0x5d7e29));}return rp({'method':_0x0106('0x5c'),'uri':util['format']('%s%s',_0x580a5d,_0x0106('0x5d')),'headers':{'Authorization':_0x0106('0x5e')+_0x26eece[_0x0106('0x59')]},'json':!![]});}})[_0x0106('0x25')](function(_0x105c0e){if(_0x105c0e){var _0x19125b=_0x105c0e[_0x0106('0x5f')];var _0x210b0a=![];var _0x445884=null;for(_0x445884=0x0;_0x445884<_0x19125b[_0x0106('0x38')];_0x445884++){if(_0x19125b[_0x445884][_0x0106('0x60')]===_0x119aad){_0x210b0a=!![];}}if(_0x210b0a){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x0106('0x61')});}}})[_0x0106('0x25')](respondWithResult(_0x12a79f,null))['catch'](function(_0x1a5e8c){var _0x5bbdc1=_0x5e2f96[_0x0106('0x33')][_0x0106('0x62')]?0x1f4:_0x1a5e8c['statusCode']||0x1f4;logger[_0x0106('0x27')](_0x0106('0x63'),_0x0106('0x56'),_0x5bbdc1,JSON[_0x0106('0x64')](_0x1a5e8c));delete _0x1a5e8c[_0x0106('0x29')];if(_0x5bbdc1===0x191){_0x5bbdc1=0x190;}_0x12a79f[_0x0106('0x1e')](_0x5bbdc1)['send'](_0x5e2f96['query']['test']?{'message':_0x0106('0x65'),'statusCode':_0x1a5e8c[_0x0106('0x66')]}:_0x1a5e8c);});};
\ No newline at end of file
index 2f63a9c..5d3fc51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafb9=['moment','bluebird','request-promise','path','rimraf','../../components/integrations/configuration','FreshsalesAccount','int_freshsales_accounts','lodash','util','../../config/logger','api'];(function(_0x4d74c0,_0x138c26){var _0x1bf2d8=function(_0xb0243a){while(--_0xb0243a){_0x4d74c0['push'](_0x4d74c0['shift']());}};_0x1bf2d8(++_0x138c26);}(_0xafb9,0x68));var _0x9afb=function(_0x24ab10,_0x4e38bc){_0x24ab10=_0x24ab10-0x0;var _0xb37cab=_0xafb9[_0x24ab10];return _0xb37cab;};'use strict';var _=require(_0x9afb('0x0'));var util=require(_0x9afb('0x1'));var logger=require(_0x9afb('0x2'))(_0x9afb('0x3'));var moment=require(_0x9afb('0x4'));var BPromise=require(_0x9afb('0x5'));var rp=require(_0x9afb('0x6'));var fs=require('fs');var path=require(_0x9afb('0x7'));var rimraf=require(_0x9afb('0x8'));var config=require('../../config/environment');var attributes=require('./intFreshsalesAccount.attributes');var integrations=require(_0x9afb('0x9'));module['exports']=function(_0x1ccf93,_0x548b24){return _0x1ccf93['define'](_0x9afb('0xa'),attributes,{'tableName':_0x9afb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0424=['./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','FreshsalesAccount','../../config/logger','api','moment','bluebird','path'];(function(_0x511b27,_0x3ca555){var _0x50ad71=function(_0x21939f){while(--_0x21939f){_0x511b27['push'](_0x511b27['shift']());}};_0x50ad71(++_0x3ca555);}(_0x0424,0x159));var _0x4042=function(_0x544463,_0x214963){_0x544463=_0x544463-0x0;var _0x1add2a=_0x0424[_0x544463];return _0x1add2a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4042('0x0'))(_0x4042('0x1'));var moment=require(_0x4042('0x2'));var BPromise=require(_0x4042('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4042('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4042('0x5'));var integrations=require(_0x4042('0x6'));module[_0x4042('0x7')]=function(_0xc0fba0,_0x3abaf1){return _0xc0fba0[_0x4042('0x8')](_0x4042('0x9'),attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3e39b66..4fe19c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x781d=['model','map','GetFreshsalesAccount','find','ShowFreshsalesAccount','stringify','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','FreshsalesAccount,\x20%s,\x20%s','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','FreshsalesAccount','findAll','options','where','attributes','limit','include'];(function(_0x1b1e76,_0x31695b){var _0x3d743a=function(_0x4ae27b){while(--_0x4ae27b){_0x1b1e76['push'](_0x1b1e76['shift']());}};_0x3d743a(++_0x31695b);}(_0x781d,0x14a));var _0xd781=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x781d[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0xd781('0x0'));var util=require(_0xd781('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd781('0x2'));var fs=require('fs');var Redis=require(_0xd781('0x3'));var db=require(_0xd781('0x4'))['db'];var utils=require(_0xd781('0x5'));var logger=require(_0xd781('0x6'))(_0xd781('0x7'));var config=require(_0xd781('0x8'));var jayson=require(_0xd781('0x9'));var client=jayson[_0xd781('0xa')][_0xd781('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5a07f0,_0x133509,_0x1a242d){return new BPromise(function(_0x50610d,_0x248172){return client['request'](_0x5a07f0,_0x1a242d)[_0xd781('0xc')](function(_0x5c18c8){logger[_0xd781('0xd')](_0xd781('0xe'),_0x133509,'request\x20sent');logger[_0xd781('0xf')](_0xd781('0x10'),_0x133509,'request\x20sent',JSON['stringify'](_0x5c18c8));if(_0x5c18c8[_0xd781('0x11')]){if(_0x5c18c8[_0xd781('0x11')][_0xd781('0x12')]===0x1f4){logger[_0xd781('0x11')](_0xd781('0xe'),_0x133509,_0x5c18c8[_0xd781('0x11')][_0xd781('0x13')]);return _0x248172(_0x5c18c8[_0xd781('0x11')][_0xd781('0x13')]);}logger[_0xd781('0x11')](_0xd781('0xe'),_0x133509,_0x5c18c8['error'][_0xd781('0x13')]);return _0x50610d(_0x5c18c8[_0xd781('0x11')]['message']);}else{logger[_0xd781('0xd')]('FreshsalesAccount,\x20%s,\x20%s',_0x133509,_0xd781('0x14'));_0x50610d(_0x5c18c8[_0xd781('0x15')][_0xd781('0x13')]);}})[_0xd781('0x16')](function(_0x42a9c1){logger[_0xd781('0x11')](_0xd781('0xe'),_0x133509,_0x42a9c1);_0x248172(_0x42a9c1);});});}exports['GetFreshsalesAccount']=function(_0x1407fc){var _0x3f2922=this;return new Promise(function(_0x395d9c,_0x2f1273){return db[_0xd781('0x17')][_0xd781('0x18')]({'raw':_0x1407fc[_0xd781('0x19')]?_0x1407fc[_0xd781('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x1407fc[_0xd781('0x19')]?_0x1407fc[_0xd781('0x19')][_0xd781('0x1a')]||null:null,'attributes':_0x1407fc[_0xd781('0x19')]?_0x1407fc[_0xd781('0x19')][_0xd781('0x1b')]||null:null,'limit':_0x1407fc[_0xd781('0x19')]?_0x1407fc['options'][_0xd781('0x1c')]||null:null,'include':_0x1407fc['options']?_0x1407fc['options'][_0xd781('0x1d')]?_['map'](_0x1407fc[_0xd781('0x19')][_0xd781('0x1d')],function(_0x395087){return{'model':db[_0x395087[_0xd781('0x1e')]],'as':_0x395087['as'],'attributes':_0x395087[_0xd781('0x1b')],'include':_0x395087[_0xd781('0x1d')]?_[_0xd781('0x1f')](_0x395087[_0xd781('0x1d')],function(_0x10940b){return{'model':db[_0x10940b['model']],'as':_0x10940b['as'],'attributes':_0x10940b['attributes'],'include':_0x10940b[_0xd781('0x1d')]?_[_0xd781('0x1f')](_0x10940b[_0xd781('0x1d')],function(_0x57b41e){return{'model':db[_0x57b41e[_0xd781('0x1e')]],'as':_0x57b41e['as'],'attributes':_0x57b41e['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1e29c8){logger['info'](_0xd781('0x20'),_0x1407fc);logger[_0xd781('0xf')]('GetFreshsalesAccount',_0x1407fc,JSON['stringify'](_0x1e29c8));_0x395d9c(_0x1e29c8);})[_0xd781('0x16')](function(_0x5b0464){logger[_0xd781('0x11')]('GetFreshsalesAccount',_0x5b0464[_0xd781('0x13')],_0x1407fc);_0x2f1273(_0x3f2922[_0xd781('0x11')](0x1f4,_0x5b0464['message']));});});};exports['ShowFreshsalesAccount']=function(_0x432d14){var _0x29e81a=this;return new Promise(function(_0x1c7d83,_0x5a389c){return db['FreshsalesAccount'][_0xd781('0x21')]({'raw':_0x432d14[_0xd781('0x19')]?_0x432d14[_0xd781('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x432d14['options']?_0x432d14[_0xd781('0x19')][_0xd781('0x1a')]||null:null,'attributes':_0x432d14['options']?_0x432d14[_0xd781('0x19')][_0xd781('0x1b')]||null:null,'include':_0x432d14['options']?_0x432d14[_0xd781('0x19')][_0xd781('0x1d')]?_[_0xd781('0x1f')](_0x432d14[_0xd781('0x19')]['include'],function(_0x23dffb){return{'model':db[_0x23dffb[_0xd781('0x1e')]],'as':_0x23dffb['as'],'attributes':_0x23dffb[_0xd781('0x1b')],'include':_0x23dffb[_0xd781('0x1d')]?_['map'](_0x23dffb[_0xd781('0x1d')],function(_0x3f20e2){return{'model':db[_0x3f20e2['model']],'as':_0x3f20e2['as'],'attributes':_0x3f20e2[_0xd781('0x1b')],'include':_0x3f20e2['include']?_[_0xd781('0x1f')](_0x3f20e2[_0xd781('0x1d')],function(_0x57fdb6){return{'model':db[_0x57fdb6[_0xd781('0x1e')]],'as':_0x57fdb6['as'],'attributes':_0x57fdb6[_0xd781('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2a29b7){logger['info'](_0xd781('0x22'),_0x432d14);logger[_0xd781('0xf')]('ShowFreshsalesAccount',_0x432d14,JSON[_0xd781('0x23')](_0x2a29b7));_0x1c7d83(_0x2a29b7);})[_0xd781('0x16')](function(_0x5651de){logger[_0xd781('0x11')](_0xd781('0x22'),_0x5651de[_0xd781('0x13')],_0x432d14);_0x5a389c(_0x29e81a['error'](0x1f4,_0x5651de[_0xd781('0x13')]));});});};
\ 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(_0x41c58c,_0x348cf6){var _0x4e90f0=function(_0x109f91){while(--_0x109f91){_0x41c58c['push'](_0x41c58c['shift']());}};_0x4e90f0(++_0x348cf6);}(_0x3a6d,0x143));var _0xd3a6=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x3a6d[_0x199572];return _0x13cfa3;};'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 7b25f48..95ebb8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcdb=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshsalesConfiguration.controller','get','index','/:id','isAuthenticated','show','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','post','create','put'];(function(_0x383989,_0x20442f){var _0x2074f3=function(_0x3a417d){while(--_0x3a417d){_0x383989['push'](_0x383989['shift']());}};_0x2074f3(++_0x20442f);}(_0xbcdb,0x1ab));var _0xbbcd=function(_0x54f675,_0x38f8e4){_0x54f675=_0x54f675-0x0;var _0x354855=_0xbcdb[_0x54f675];return _0x354855;};'use strict';var multer=require(_0xbbcd('0x0'));var util=require(_0xbbcd('0x1'));var path=require(_0xbbcd('0x2'));var timeout=require(_0xbbcd('0x3'));var express=require(_0xbbcd('0x4'));var router=express[_0xbbcd('0x5')]();var fs_extra=require(_0xbbcd('0x6'));var auth=require(_0xbbcd('0x7'));var interaction=require(_0xbbcd('0x8'));var config=require('../../config/environment');var controller=require(_0xbbcd('0x9'));router[_0xbbcd('0xa')]('/',auth['isAuthenticated'](),controller[_0xbbcd('0xb')]);router[_0xbbcd('0xa')](_0xbbcd('0xc'),auth[_0xbbcd('0xd')](),controller[_0xbbcd('0xe')]);router[_0xbbcd('0xa')]('/:id/subjects',auth['isAuthenticated'](),controller[_0xbbcd('0xf')]);router[_0xbbcd('0xa')](_0xbbcd('0x10'),auth[_0xbbcd('0xd')](),controller[_0xbbcd('0x11')]);router[_0xbbcd('0xa')](_0xbbcd('0x12'),auth[_0xbbcd('0xd')](),controller[_0xbbcd('0x13')]);router[_0xbbcd('0x14')]('/',auth[_0xbbcd('0xd')](),controller[_0xbbcd('0x15')]);router[_0xbbcd('0x16')](_0xbbcd('0xc'),auth[_0xbbcd('0xd')](),controller['update']);router['delete'](_0xbbcd('0xc'),auth[_0xbbcd('0xd')](),controller[_0xbbcd('0x17')]);module[_0xbbcd('0x18')]=router;
\ No newline at end of file
+var _0x867e=['destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','post','create','update','delete'];(function(_0xbe208a,_0x111f6e){var _0xe17911=function(_0x2d9337){while(--_0x2d9337){_0xbe208a['push'](_0xbe208a['shift']());}};_0xe17911(++_0x111f6e);}(_0x867e,0x144));var _0xe867=function(_0x3bc930,_0x5ef08f){_0x3bc930=_0x3bc930-0x0;var _0x2a745b=_0x867e[_0x3bc930];return _0x2a745b;};'use strict';var multer=require(_0xe867('0x0'));var util=require(_0xe867('0x1'));var path=require(_0xe867('0x2'));var timeout=require(_0xe867('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xe867('0x4'));var auth=require(_0xe867('0x5'));var interaction=require(_0xe867('0x6'));var config=require(_0xe867('0x7'));var controller=require('./intFreshsalesConfiguration.controller');router[_0xe867('0x8')]('/',auth[_0xe867('0x9')](),controller['index']);router['get'](_0xe867('0xa'),auth[_0xe867('0x9')](),controller['show']);router[_0xe867('0x8')](_0xe867('0xb'),auth['isAuthenticated'](),controller[_0xe867('0xc')]);router[_0xe867('0x8')](_0xe867('0xd'),auth[_0xe867('0x9')](),controller[_0xe867('0xe')]);router['get'](_0xe867('0xf'),auth[_0xe867('0x9')](),controller[_0xe867('0x10')]);router[_0xe867('0x11')]('/',auth[_0xe867('0x9')](),controller[_0xe867('0x12')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xe867('0x13')]);router[_0xe867('0x14')](_0xe867('0xa'),auth[_0xe867('0x9')](),controller[_0xe867('0x15')]);module[_0xe867('0x16')]=router;
\ No newline at end of file
index 81ab9a2..ca780dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67fe=['exports','STRING'];(function(_0x20a0f7,_0x1f988d){var _0x27b9b2=function(_0x3ff58e){while(--_0x3ff58e){_0x20a0f7['push'](_0x20a0f7['shift']());}};_0x27b9b2(++_0x1f988d);}(_0x67fe,0x1a4));var _0xe67f=function(_0x3e6d9c,_0x3c52a7){_0x3e6d9c=_0x3e6d9c-0x0;var _0x5a92a6=_0x67fe[_0x3e6d9c];return _0x5a92a6;};'use strict';var Sequelize=require('sequelize');module[_0xe67f('0x0')]={'name':{'type':Sequelize[_0xe67f('0x1')]},'description':{'type':Sequelize[_0xe67f('0x1')]}};
\ No newline at end of file
+var _0x9fa2=['sequelize','exports','STRING'];(function(_0x425d5d,_0x3b8eb6){var _0x1f789a=function(_0x20c98d){while(--_0x20c98d){_0x425d5d['push'](_0x425d5d['shift']());}};_0x1f789a(++_0x3b8eb6);}(_0x9fa2,0x15c));var _0x29fa=function(_0x3ed054,_0x4d4f16){_0x3ed054=_0x3ed054-0x0;var _0x16dd95=_0x9fa2[_0x3ed054];return _0x16dd95;};'use strict';var Sequelize=require(_0x29fa('0x0'));module[_0x29fa('0x1')]={'name':{'type':Sequelize[_0x29fa('0x2')]},'description':{'type':Sequelize[_0x29fa('0x2')]}};
\ No newline at end of file
index 10c7a56..cadff95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe14=['reject','save','then','destroy','end','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','FreshsalesConfiguration','includeAll','include','findAll','rows','params','options','find','catch','create','body','getSubjects','order','findOne','FreshsalesField','getDescriptions','getFields','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','lodash','squel','crypto','to-csv','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','count','limit','set','Content-Range'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbe14,0x15e));var _0x4be1=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xbe14[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0x4be1('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x4be1('0x1'));var rp=require(_0x4be1('0x2'));var moment=require(_0x4be1('0x3'));var BPromise=require(_0x4be1('0x4'));var Mustache=require(_0x4be1('0x5'));var util=require(_0x4be1('0x6'));var path=require(_0x4be1('0x7'));var sox=require(_0x4be1('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4be1('0x9'));var squel=require(_0x4be1('0xa'));var crypto=require(_0x4be1('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4be1('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4be1('0xd'));var authService=require(_0x4be1('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x4be1('0xf'));var hardwareService=require(_0x4be1('0x10'));var logger=require(_0x4be1('0x11'))(_0x4be1('0x12'));var utils=require(_0x4be1('0x13'));var config=require(_0x4be1('0x14'));var licenseUtil=require(_0x4be1('0x15'));var db=require(_0x4be1('0x16'))['db'];function respondWithStatusCode(_0x140818,_0x317e7e){_0x317e7e=_0x317e7e||0xcc;return function(_0x5893dd){if(_0x5893dd){return _0x140818[_0x4be1('0x17')](_0x317e7e);}return _0x140818['status'](_0x317e7e)['end']();};}function respondWithResult(_0x344197,_0x4c9cb8){_0x4c9cb8=_0x4c9cb8||0xc8;return function(_0x3d945f){if(_0x3d945f){return _0x344197[_0x4be1('0x18')](_0x4c9cb8)['json'](_0x3d945f);}};}function respondWithFilteredResult(_0x1e6224,_0x70ad14){return function(_0x3f48a3){if(_0x3f48a3){var _0x2141b1=typeof _0x70ad14[_0x4be1('0x19')]==='undefined'&&typeof _0x70ad14['limit']==='undefined';var _0x5b4a65=_0x3f48a3[_0x4be1('0x1a')];var _0x3dd9dc=_0x2141b1?0x0:_0x70ad14['offset'];var _0x4a37d0=_0x2141b1?_0x3f48a3[_0x4be1('0x1a')]:_0x70ad14[_0x4be1('0x19')]+_0x70ad14[_0x4be1('0x1b')];var _0x212c3f;if(_0x4a37d0>=_0x5b4a65){_0x4a37d0=_0x5b4a65;_0x212c3f=0xc8;}else{_0x212c3f=0xce;}_0x1e6224['status'](_0x212c3f);return _0x1e6224[_0x4be1('0x1c')](_0x4be1('0x1d'),_0x3dd9dc+'-'+_0x4a37d0+'/'+_0x5b4a65)['json'](_0x3f48a3);}return null;};}function patchUpdates(_0x1bf705){return function(_0xe60ed9){try{jsonpatch['apply'](_0xe60ed9,_0x1bf705,!![]);}catch(_0x268391){return BPromise[_0x4be1('0x1e')](_0x268391);}return _0xe60ed9[_0x4be1('0x1f')]();};}function saveUpdates(_0x480334,_0x40c62d){return function(_0x483568){if(_0x483568){return _0x483568['update'](_0x480334)[_0x4be1('0x20')](function(_0x146f18){return _0x146f18;});}return null;};}function removeEntity(_0x14fdfc,_0x17cd91){return function(_0x899e4){if(_0x899e4){return _0x899e4[_0x4be1('0x21')]()[_0x4be1('0x20')](function(){_0x14fdfc['status'](0xcc)[_0x4be1('0x22')]();});}};}function handleEntityNotFound(_0x389ee3,_0x4cfbe8){return function(_0x1e0679){if(!_0x1e0679){_0x389ee3[_0x4be1('0x17')](0x194);}return _0x1e0679;};}function handleError(_0x43488c,_0x53a6a6){_0x53a6a6=_0x53a6a6||0x1f4;return function(_0x20b0d7){logger['error'](_0x20b0d7[_0x4be1('0x23')]);if(_0x20b0d7[_0x4be1('0x24')]){delete _0x20b0d7[_0x4be1('0x24')];}_0x43488c[_0x4be1('0x18')](_0x53a6a6)[_0x4be1('0x25')](_0x20b0d7);};}exports[_0x4be1('0x26')]=function(_0x863c53,_0x3e98b8){var _0x315857={},_0x4397fb={},_0x2b8584={'count':0x0,'rows':[]};var _0x506e11=_[_0x4be1('0x27')](db['FreshsalesConfiguration'][_0x4be1('0x28')],function(_0x4976dd){return{'name':_0x4976dd['fieldName'],'type':_0x4976dd[_0x4be1('0x29')][_0x4be1('0x2a')]};});_0x4397fb[_0x4be1('0x2b')]=_[_0x4be1('0x27')](_0x506e11,'name');_0x4397fb[_0x4be1('0x2c')]=_[_0x4be1('0x2d')](_0x863c53[_0x4be1('0x2c')]);_0x4397fb[_0x4be1('0x2e')]=_['intersection'](_0x4397fb[_0x4be1('0x2b')],_0x4397fb['query']);_0x315857[_0x4be1('0x2f')]=_[_0x4be1('0x30')](_0x4397fb[_0x4be1('0x2b')],qs['fields'](_0x863c53[_0x4be1('0x2c')][_0x4be1('0x31')]));_0x315857['attributes']=_0x315857[_0x4be1('0x2f')][_0x4be1('0x32')]?_0x315857['attributes']:_0x4397fb[_0x4be1('0x2b')];if(!_0x863c53[_0x4be1('0x2c')][_0x4be1('0x33')](_0x4be1('0x34'))){_0x315857[_0x4be1('0x1b')]=qs['limit'](_0x863c53[_0x4be1('0x2c')][_0x4be1('0x1b')]);_0x315857['offset']=qs[_0x4be1('0x19')](_0x863c53[_0x4be1('0x2c')][_0x4be1('0x19')]);}_0x315857['order']=qs[_0x4be1('0x35')](_0x863c53['query']['sort']);_0x315857[_0x4be1('0x36')]=qs[_0x4be1('0x2e')](_[_0x4be1('0x37')](_0x863c53['query'],_0x4397fb[_0x4be1('0x2e')]),_0x506e11);if(_0x863c53[_0x4be1('0x2c')][_0x4be1('0x38')]){_0x315857[_0x4be1('0x36')]=_[_0x4be1('0x39')](_0x315857[_0x4be1('0x36')],{'$or':_[_0x4be1('0x27')](_0x506e11,function(_0x35c582){if(_0x35c582[_0x4be1('0x29')]!==_0x4be1('0x3a')){var _0x575f17={};_0x575f17[_0x35c582[_0x4be1('0x24')]]={'$like':'%'+_0x863c53[_0x4be1('0x2c')]['filter']+'%'};return _0x575f17;}})});}_0x315857=_['merge']({},_0x315857,_0x863c53['options']);var _0xaccabf={'where':_0x315857[_0x4be1('0x36')]};return db[_0x4be1('0x3b')][_0x4be1('0x1a')](_0xaccabf)[_0x4be1('0x20')](function(_0x457f89){_0x2b8584['count']=_0x457f89;if(_0x863c53[_0x4be1('0x2c')][_0x4be1('0x3c')]){_0x315857[_0x4be1('0x3d')]=[{'all':!![]}];}return db[_0x4be1('0x3b')][_0x4be1('0x3e')](_0x315857);})[_0x4be1('0x20')](function(_0x4c87ad){_0x2b8584[_0x4be1('0x3f')]=_0x4c87ad;return _0x2b8584;})['then'](respondWithFilteredResult(_0x3e98b8,_0x315857))['catch'](handleError(_0x3e98b8,null));};exports['show']=function(_0x5ca6fe,_0x3f3062){var _0x2501f8={'raw':![],'where':{'id':_0x5ca6fe[_0x4be1('0x40')]['id']}},_0xddf5c0={};_0xddf5c0['model']=_[_0x4be1('0x2d')](db[_0x4be1('0x3b')][_0x4be1('0x28')]);_0xddf5c0[_0x4be1('0x2c')]=_[_0x4be1('0x2d')](_0x5ca6fe['query']);_0xddf5c0[_0x4be1('0x2e')]=_[_0x4be1('0x30')](_0xddf5c0[_0x4be1('0x2b')],_0xddf5c0[_0x4be1('0x2c')]);_0x2501f8['attributes']=_[_0x4be1('0x30')](_0xddf5c0[_0x4be1('0x2b')],qs['fields'](_0x5ca6fe[_0x4be1('0x2c')][_0x4be1('0x31')]));_0x2501f8[_0x4be1('0x2f')]=_0x2501f8[_0x4be1('0x2f')][_0x4be1('0x32')]?_0x2501f8[_0x4be1('0x2f')]:_0xddf5c0[_0x4be1('0x2b')];if(_0x5ca6fe[_0x4be1('0x2c')]['includeAll']){_0x2501f8[_0x4be1('0x3d')]=[{'all':!![]}];}_0x2501f8=_[_0x4be1('0x39')]({},_0x2501f8,_0x5ca6fe[_0x4be1('0x41')]);return db[_0x4be1('0x3b')][_0x4be1('0x42')](_0x2501f8)['then'](handleEntityNotFound(_0x3f3062,null))[_0x4be1('0x20')](respondWithResult(_0x3f3062,null))[_0x4be1('0x43')](handleError(_0x3f3062,null));};exports[_0x4be1('0x44')]=function(_0x461763,_0x2ef431){return db[_0x4be1('0x3b')][_0x4be1('0x44')](_0x461763['body'],{})['then'](respondWithResult(_0x2ef431,0xc9))[_0x4be1('0x43')](handleError(_0x2ef431,null));};exports['update']=function(_0x390d80,_0x422040){if(_0x390d80['body']['id']){delete _0x390d80[_0x4be1('0x45')]['id'];}return db[_0x4be1('0x3b')]['find']({'where':{'id':_0x390d80[_0x4be1('0x40')]['id']}})[_0x4be1('0x20')](handleEntityNotFound(_0x422040,null))[_0x4be1('0x20')](saveUpdates(_0x390d80['body'],null))[_0x4be1('0x20')](respondWithResult(_0x422040,null))['catch'](handleError(_0x422040,null));};exports[_0x4be1('0x21')]=function(_0x25bcc5,_0x33fd50){return db[_0x4be1('0x3b')][_0x4be1('0x42')]({'where':{'id':_0x25bcc5[_0x4be1('0x40')]['id']}})[_0x4be1('0x20')](handleEntityNotFound(_0x33fd50,null))[_0x4be1('0x20')](removeEntity(_0x33fd50,null))[_0x4be1('0x43')](handleError(_0x33fd50,null));};exports[_0x4be1('0x46')]=function(_0x5891c1,_0x26338b,_0x3431a1){var _0x4bbaf3={};var _0x3c830f={};var _0x25ac3d;var _0x5efaba;return db[_0x4be1('0x3b')]['findOne']({'where':{'id':_0x5891c1[_0x4be1('0x40')]['id']}})[_0x4be1('0x20')](handleEntityNotFound(_0x26338b,null))['then'](function(_0x3524c9){if(_0x3524c9){_0x25ac3d=_0x3524c9;_0x3c830f[_0x4be1('0x2b')]=_[_0x4be1('0x2d')](db['FreshsalesField'][_0x4be1('0x28')]);_0x3c830f[_0x4be1('0x2c')]=_[_0x4be1('0x2d')](_0x5891c1[_0x4be1('0x2c')]);_0x3c830f[_0x4be1('0x2e')]=_[_0x4be1('0x30')](_0x3c830f[_0x4be1('0x2b')],_0x3c830f[_0x4be1('0x2c')]);_0x4bbaf3[_0x4be1('0x2f')]=_[_0x4be1('0x30')](_0x3c830f[_0x4be1('0x2b')],qs[_0x4be1('0x31')](_0x5891c1[_0x4be1('0x2c')]['fields']));_0x4bbaf3['attributes']=_0x4bbaf3[_0x4be1('0x2f')]['length']?_0x4bbaf3[_0x4be1('0x2f')]:_0x3c830f[_0x4be1('0x2b')];_0x4bbaf3[_0x4be1('0x47')]=qs['sort'](_0x5891c1[_0x4be1('0x2c')]['sort']);_0x4bbaf3[_0x4be1('0x36')]=qs['filters'](_['pick'](_0x5891c1[_0x4be1('0x2c')],_0x3c830f[_0x4be1('0x2e')]));if(_0x5891c1[_0x4be1('0x2c')][_0x4be1('0x38')]){_0x4bbaf3['where']=_['merge'](_0x4bbaf3[_0x4be1('0x36')],{'$or':_[_0x4be1('0x27')](_0x4bbaf3[_0x4be1('0x2f')],function(_0x4a8ca3){var _0x55f35a={};_0x55f35a[_0x4a8ca3]={'$like':'%'+_0x5891c1['query'][_0x4be1('0x38')]+'%'};return _0x55f35a;})});}_0x4bbaf3=_['merge']({},_0x4bbaf3,_0x5891c1['options']);return _0x25ac3d[_0x4be1('0x46')](_0x4bbaf3);}})[_0x4be1('0x20')](function(_0x45d0d8){if(_0x45d0d8){_0x5efaba=_0x45d0d8['length'];if(!_0x5891c1[_0x4be1('0x2c')][_0x4be1('0x33')](_0x4be1('0x34'))){_0x4bbaf3['limit']=qs[_0x4be1('0x1b')](_0x5891c1[_0x4be1('0x2c')][_0x4be1('0x1b')]);_0x4bbaf3[_0x4be1('0x19')]=qs[_0x4be1('0x19')](_0x5891c1['query'][_0x4be1('0x19')]);}return _0x25ac3d[_0x4be1('0x46')](_0x4bbaf3);}})[_0x4be1('0x20')](function(_0x2bc480){if(_0x2bc480){return _0x2bc480?{'count':_0x5efaba,'rows':_0x2bc480}:null;}})[_0x4be1('0x20')](respondWithResult(_0x26338b,null))[_0x4be1('0x43')](handleError(_0x26338b,null));};exports['getDescriptions']=function(_0x50c165,_0x50ae46,_0x539928){var _0x2777c2={};var _0x53f40e={};var _0x26897d;var _0xb32b23;return db[_0x4be1('0x3b')][_0x4be1('0x48')]({'where':{'id':_0x50c165[_0x4be1('0x40')]['id']}})[_0x4be1('0x20')](handleEntityNotFound(_0x50ae46,null))[_0x4be1('0x20')](function(_0x256150){if(_0x256150){_0x26897d=_0x256150;_0x53f40e[_0x4be1('0x2b')]=_[_0x4be1('0x2d')](db[_0x4be1('0x49')][_0x4be1('0x28')]);_0x53f40e['query']=_['keys'](_0x50c165['query']);_0x53f40e[_0x4be1('0x2e')]=_[_0x4be1('0x30')](_0x53f40e[_0x4be1('0x2b')],_0x53f40e[_0x4be1('0x2c')]);_0x2777c2['attributes']=_[_0x4be1('0x30')](_0x53f40e['model'],qs[_0x4be1('0x31')](_0x50c165[_0x4be1('0x2c')][_0x4be1('0x31')]));_0x2777c2['attributes']=_0x2777c2[_0x4be1('0x2f')]['length']?_0x2777c2[_0x4be1('0x2f')]:_0x53f40e[_0x4be1('0x2b')];_0x2777c2[_0x4be1('0x47')]=qs[_0x4be1('0x35')](_0x50c165[_0x4be1('0x2c')][_0x4be1('0x35')]);_0x2777c2[_0x4be1('0x36')]=qs[_0x4be1('0x2e')](_['pick'](_0x50c165['query'],_0x53f40e[_0x4be1('0x2e')]));if(_0x50c165[_0x4be1('0x2c')][_0x4be1('0x38')]){_0x2777c2[_0x4be1('0x36')]=_[_0x4be1('0x39')](_0x2777c2[_0x4be1('0x36')],{'$or':_['map'](_0x2777c2[_0x4be1('0x2f')],function(_0xe8cabf){var _0x5d8581={};_0x5d8581[_0xe8cabf]={'$like':'%'+_0x50c165[_0x4be1('0x2c')][_0x4be1('0x38')]+'%'};return _0x5d8581;})});}_0x2777c2=_[_0x4be1('0x39')]({},_0x2777c2,_0x50c165[_0x4be1('0x41')]);return _0x26897d[_0x4be1('0x4a')](_0x2777c2);}})[_0x4be1('0x20')](function(_0xa05a56){if(_0xa05a56){_0xb32b23=_0xa05a56[_0x4be1('0x32')];if(!_0x50c165[_0x4be1('0x2c')][_0x4be1('0x33')]('nolimit')){_0x2777c2['limit']=qs['limit'](_0x50c165[_0x4be1('0x2c')][_0x4be1('0x1b')]);_0x2777c2[_0x4be1('0x19')]=qs[_0x4be1('0x19')](_0x50c165[_0x4be1('0x2c')][_0x4be1('0x19')]);}return _0x26897d[_0x4be1('0x4a')](_0x2777c2);}})[_0x4be1('0x20')](function(_0x120fa7){if(_0x120fa7){return _0x120fa7?{'count':_0xb32b23,'rows':_0x120fa7}:null;}})[_0x4be1('0x20')](respondWithResult(_0x50ae46,null))['catch'](handleError(_0x50ae46,null));};exports[_0x4be1('0x4b')]=function(_0x3f1a34,_0x192bc9,_0x3a8aeb){var _0x330331={};var _0x1d9941={};var _0x392997;var _0x4befff;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x3f1a34['params']['id']}})[_0x4be1('0x20')](handleEntityNotFound(_0x192bc9,null))[_0x4be1('0x20')](function(_0x3c15da){if(_0x3c15da){_0x392997=_0x3c15da;_0x1d9941['model']=_[_0x4be1('0x2d')](db[_0x4be1('0x49')][_0x4be1('0x28')]);_0x1d9941['query']=_['keys'](_0x3f1a34['query']);_0x1d9941['filters']=_[_0x4be1('0x30')](_0x1d9941['model'],_0x1d9941[_0x4be1('0x2c')]);_0x330331[_0x4be1('0x2f')]=_[_0x4be1('0x30')](_0x1d9941[_0x4be1('0x2b')],qs[_0x4be1('0x31')](_0x3f1a34[_0x4be1('0x2c')]['fields']));_0x330331[_0x4be1('0x2f')]=_0x330331[_0x4be1('0x2f')][_0x4be1('0x32')]?_0x330331[_0x4be1('0x2f')]:_0x1d9941[_0x4be1('0x2b')];_0x330331[_0x4be1('0x47')]=qs[_0x4be1('0x35')](_0x3f1a34['query'][_0x4be1('0x35')]);_0x330331['where']=qs[_0x4be1('0x2e')](_['pick'](_0x3f1a34[_0x4be1('0x2c')],_0x1d9941['filters']));if(_0x3f1a34[_0x4be1('0x2c')]['filter']){_0x330331[_0x4be1('0x36')]=_[_0x4be1('0x39')](_0x330331[_0x4be1('0x36')],{'$or':_[_0x4be1('0x27')](_0x330331[_0x4be1('0x2f')],function(_0x3aadd9){var _0x34c67b={};_0x34c67b[_0x3aadd9]={'$like':'%'+_0x3f1a34[_0x4be1('0x2c')][_0x4be1('0x38')]+'%'};return _0x34c67b;})});}_0x330331=_[_0x4be1('0x39')]({},_0x330331,_0x3f1a34[_0x4be1('0x41')]);return _0x392997[_0x4be1('0x4b')](_0x330331);}})['then'](function(_0x405f1e){if(_0x405f1e){_0x4befff=_0x405f1e[_0x4be1('0x32')];if(!_0x3f1a34[_0x4be1('0x2c')]['hasOwnProperty'](_0x4be1('0x34'))){_0x330331['limit']=qs['limit'](_0x3f1a34['query']['limit']);_0x330331[_0x4be1('0x19')]=qs[_0x4be1('0x19')](_0x3f1a34[_0x4be1('0x2c')][_0x4be1('0x19')]);}return _0x392997[_0x4be1('0x4b')](_0x330331);}})[_0x4be1('0x20')](function(_0x184e21){if(_0x184e21){return _0x184e21?{'count':_0x4befff,'rows':_0x184e21}:null;}})['then'](respondWithResult(_0x192bc9,null))[_0x4be1('0x43')](handleError(_0x192bc9,null));};
\ No newline at end of file
+var _0xd224=['crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','limit','count','offset','set','apply','reject','then','destroy','error','stack','name','send','index','fieldName','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','FreshsalesConfiguration','include','findAll','rows','show','params','rawAttributes','find','catch','create','body','update','getSubjects','FreshsalesField','nolimit','getDescriptions','getFields','eml-format','rimraf','fast-json-patch','moment','bluebird','util','sox','ejs','lodash','squel'];(function(_0x25d365,_0xd11e09){var _0x52ddfd=function(_0x393b1d){while(--_0x393b1d){_0x25d365['push'](_0x25d365['shift']());}};_0x52ddfd(++_0xd11e09);}(_0xd224,0x17c));var _0x4d22=function(_0x17850f,_0x3d7548){_0x17850f=_0x17850f-0x0;var _0x44dd09=_0xd224[_0x17850f];return _0x44dd09;};'use strict';var emlformat=require(_0x4d22('0x0'));var rimraf=require(_0x4d22('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4d22('0x2'));var rp=require('request-promise');var moment=require(_0x4d22('0x3'));var BPromise=require(_0x4d22('0x4'));var Mustache=require('mustache');var util=require(_0x4d22('0x5'));var path=require('path');var sox=require(_0x4d22('0x6'));var csv=require('to-csv');var ejs=require(_0x4d22('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4d22('0x8'));var squel=require(_0x4d22('0x9'));var crypto=require(_0x4d22('0xa'));var jsforce=require(_0x4d22('0xb'));var deskjs=require(_0x4d22('0xc'));var toCsv=require(_0x4d22('0xd'));var querystring=require(_0x4d22('0xe'));var Papa=require(_0x4d22('0xf'));var Redis=require(_0x4d22('0x10'));var authService=require(_0x4d22('0x11'));var qs=require(_0x4d22('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x4d22('0x13'))(_0x4d22('0x14'));var utils=require(_0x4d22('0x15'));var config=require(_0x4d22('0x16'));var licenseUtil=require(_0x4d22('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xd4e025,_0xc9b5c8){_0xc9b5c8=_0xc9b5c8||0xcc;return function(_0x421876){if(_0x421876){return _0xd4e025[_0x4d22('0x18')](_0xc9b5c8);}return _0xd4e025[_0x4d22('0x19')](_0xc9b5c8)[_0x4d22('0x1a')]();};}function respondWithResult(_0xdb3313,_0x17c4a3){_0x17c4a3=_0x17c4a3||0xc8;return function(_0x578cb6){if(_0x578cb6){return _0xdb3313[_0x4d22('0x19')](_0x17c4a3)[_0x4d22('0x1b')](_0x578cb6);}};}function respondWithFilteredResult(_0x11ed48,_0x2b34e0){return function(_0x33f187){if(_0x33f187){var _0x2abb9a=typeof _0x2b34e0['offset']==='undefined'&&typeof _0x2b34e0[_0x4d22('0x1c')]==='undefined';var _0x1bcf81=_0x33f187[_0x4d22('0x1d')];var _0x2aacb8=_0x2abb9a?0x0:_0x2b34e0['offset'];var _0x2bd3b7=_0x2abb9a?_0x33f187[_0x4d22('0x1d')]:_0x2b34e0[_0x4d22('0x1e')]+_0x2b34e0[_0x4d22('0x1c')];var _0x5c7224;if(_0x2bd3b7>=_0x1bcf81){_0x2bd3b7=_0x1bcf81;_0x5c7224=0xc8;}else{_0x5c7224=0xce;}_0x11ed48['status'](_0x5c7224);return _0x11ed48[_0x4d22('0x1f')]('Content-Range',_0x2aacb8+'-'+_0x2bd3b7+'/'+_0x1bcf81)['json'](_0x33f187);}return null;};}function patchUpdates(_0x1ef973){return function(_0x58772f){try{jsonpatch[_0x4d22('0x20')](_0x58772f,_0x1ef973,!![]);}catch(_0x75c520){return BPromise[_0x4d22('0x21')](_0x75c520);}return _0x58772f['save']();};}function saveUpdates(_0x39a2e1,_0x35152a){return function(_0x1fe1cb){if(_0x1fe1cb){return _0x1fe1cb['update'](_0x39a2e1)[_0x4d22('0x22')](function(_0x14ef8f){return _0x14ef8f;});}return null;};}function removeEntity(_0x159428,_0x566ef7){return function(_0x2f3c66){if(_0x2f3c66){return _0x2f3c66[_0x4d22('0x23')]()[_0x4d22('0x22')](function(){_0x159428[_0x4d22('0x19')](0xcc)[_0x4d22('0x1a')]();});}};}function handleEntityNotFound(_0x3afc3c,_0x26113f){return function(_0x149130){if(!_0x149130){_0x3afc3c[_0x4d22('0x18')](0x194);}return _0x149130;};}function handleError(_0x1783f3,_0x557b23){_0x557b23=_0x557b23||0x1f4;return function(_0x888088){logger[_0x4d22('0x24')](_0x888088[_0x4d22('0x25')]);if(_0x888088[_0x4d22('0x26')]){delete _0x888088[_0x4d22('0x26')];}_0x1783f3[_0x4d22('0x19')](_0x557b23)[_0x4d22('0x27')](_0x888088);};}exports[_0x4d22('0x28')]=function(_0x44254b,_0x144737){var _0x37ee0e={},_0x302505={},_0x25257a={'count':0x0,'rows':[]};var _0x561da5=_['map'](db['FreshsalesConfiguration']['rawAttributes'],function(_0x4b7565){return{'name':_0x4b7565[_0x4d22('0x29')],'type':_0x4b7565['type']['key']};});_0x302505[_0x4d22('0x2a')]=_[_0x4d22('0x2b')](_0x561da5,_0x4d22('0x26'));_0x302505[_0x4d22('0x2c')]=_[_0x4d22('0x2d')](_0x44254b[_0x4d22('0x2c')]);_0x302505[_0x4d22('0x2e')]=_[_0x4d22('0x2f')](_0x302505[_0x4d22('0x2a')],_0x302505['query']);_0x37ee0e[_0x4d22('0x30')]=_[_0x4d22('0x2f')](_0x302505['model'],qs[_0x4d22('0x31')](_0x44254b[_0x4d22('0x2c')][_0x4d22('0x31')]));_0x37ee0e[_0x4d22('0x30')]=_0x37ee0e['attributes'][_0x4d22('0x32')]?_0x37ee0e['attributes']:_0x302505[_0x4d22('0x2a')];if(!_0x44254b[_0x4d22('0x2c')][_0x4d22('0x33')]('nolimit')){_0x37ee0e['limit']=qs[_0x4d22('0x1c')](_0x44254b[_0x4d22('0x2c')]['limit']);_0x37ee0e[_0x4d22('0x1e')]=qs[_0x4d22('0x1e')](_0x44254b[_0x4d22('0x2c')][_0x4d22('0x1e')]);}_0x37ee0e[_0x4d22('0x34')]=qs['sort'](_0x44254b[_0x4d22('0x2c')][_0x4d22('0x35')]);_0x37ee0e[_0x4d22('0x36')]=qs[_0x4d22('0x2e')](_[_0x4d22('0x37')](_0x44254b[_0x4d22('0x2c')],_0x302505['filters']),_0x561da5);if(_0x44254b[_0x4d22('0x2c')][_0x4d22('0x38')]){_0x37ee0e[_0x4d22('0x36')]=_[_0x4d22('0x39')](_0x37ee0e[_0x4d22('0x36')],{'$or':_[_0x4d22('0x2b')](_0x561da5,function(_0x2284b4){if(_0x2284b4[_0x4d22('0x3a')]!==_0x4d22('0x3b')){var _0x5a5ba0={};_0x5a5ba0[_0x2284b4[_0x4d22('0x26')]]={'$like':'%'+_0x44254b['query'][_0x4d22('0x38')]+'%'};return _0x5a5ba0;}})});}_0x37ee0e=_['merge']({},_0x37ee0e,_0x44254b[_0x4d22('0x3c')]);var _0x3cd8de={'where':_0x37ee0e[_0x4d22('0x36')]};return db[_0x4d22('0x3d')]['count'](_0x3cd8de)[_0x4d22('0x22')](function(_0x517064){_0x25257a[_0x4d22('0x1d')]=_0x517064;if(_0x44254b[_0x4d22('0x2c')]['includeAll']){_0x37ee0e[_0x4d22('0x3e')]=[{'all':!![]}];}return db[_0x4d22('0x3d')][_0x4d22('0x3f')](_0x37ee0e);})['then'](function(_0x42f6bd){_0x25257a[_0x4d22('0x40')]=_0x42f6bd;return _0x25257a;})[_0x4d22('0x22')](respondWithFilteredResult(_0x144737,_0x37ee0e))['catch'](handleError(_0x144737,null));};exports[_0x4d22('0x41')]=function(_0x9160d9,_0x269d33){var _0x242934={'raw':![],'where':{'id':_0x9160d9[_0x4d22('0x42')]['id']}},_0x28dfc0={};_0x28dfc0[_0x4d22('0x2a')]=_[_0x4d22('0x2d')](db[_0x4d22('0x3d')][_0x4d22('0x43')]);_0x28dfc0[_0x4d22('0x2c')]=_[_0x4d22('0x2d')](_0x9160d9[_0x4d22('0x2c')]);_0x28dfc0[_0x4d22('0x2e')]=_[_0x4d22('0x2f')](_0x28dfc0[_0x4d22('0x2a')],_0x28dfc0[_0x4d22('0x2c')]);_0x242934[_0x4d22('0x30')]=_[_0x4d22('0x2f')](_0x28dfc0['model'],qs[_0x4d22('0x31')](_0x9160d9[_0x4d22('0x2c')][_0x4d22('0x31')]));_0x242934[_0x4d22('0x30')]=_0x242934[_0x4d22('0x30')][_0x4d22('0x32')]?_0x242934['attributes']:_0x28dfc0[_0x4d22('0x2a')];if(_0x9160d9[_0x4d22('0x2c')]['includeAll']){_0x242934[_0x4d22('0x3e')]=[{'all':!![]}];}_0x242934=_[_0x4d22('0x39')]({},_0x242934,_0x9160d9[_0x4d22('0x3c')]);return db[_0x4d22('0x3d')][_0x4d22('0x44')](_0x242934)[_0x4d22('0x22')](handleEntityNotFound(_0x269d33,null))[_0x4d22('0x22')](respondWithResult(_0x269d33,null))[_0x4d22('0x45')](handleError(_0x269d33,null));};exports[_0x4d22('0x46')]=function(_0x5454c6,_0x3fab40){return db[_0x4d22('0x3d')][_0x4d22('0x46')](_0x5454c6[_0x4d22('0x47')],{})['then'](respondWithResult(_0x3fab40,0xc9))[_0x4d22('0x45')](handleError(_0x3fab40,null));};exports[_0x4d22('0x48')]=function(_0x4b9301,_0x5823a7){if(_0x4b9301['body']['id']){delete _0x4b9301[_0x4d22('0x47')]['id'];}return db['FreshsalesConfiguration'][_0x4d22('0x44')]({'where':{'id':_0x4b9301[_0x4d22('0x42')]['id']}})[_0x4d22('0x22')](handleEntityNotFound(_0x5823a7,null))[_0x4d22('0x22')](saveUpdates(_0x4b9301[_0x4d22('0x47')],null))[_0x4d22('0x22')](respondWithResult(_0x5823a7,null))[_0x4d22('0x45')](handleError(_0x5823a7,null));};exports[_0x4d22('0x23')]=function(_0x47c6ee,_0x39d70e){return db[_0x4d22('0x3d')][_0x4d22('0x44')]({'where':{'id':_0x47c6ee[_0x4d22('0x42')]['id']}})[_0x4d22('0x22')](handleEntityNotFound(_0x39d70e,null))[_0x4d22('0x22')](removeEntity(_0x39d70e,null))['catch'](handleError(_0x39d70e,null));};exports[_0x4d22('0x49')]=function(_0x3f0ef0,_0x5c0aa2,_0x3b5c01){var _0xe0daa9={};var _0x4f0ee2={};var _0x366bd0;var _0x30b811;return db[_0x4d22('0x3d')]['findOne']({'where':{'id':_0x3f0ef0['params']['id']}})[_0x4d22('0x22')](handleEntityNotFound(_0x5c0aa2,null))[_0x4d22('0x22')](function(_0x3e9a36){if(_0x3e9a36){_0x366bd0=_0x3e9a36;_0x4f0ee2['model']=_[_0x4d22('0x2d')](db[_0x4d22('0x4a')]['rawAttributes']);_0x4f0ee2[_0x4d22('0x2c')]=_['keys'](_0x3f0ef0[_0x4d22('0x2c')]);_0x4f0ee2[_0x4d22('0x2e')]=_[_0x4d22('0x2f')](_0x4f0ee2[_0x4d22('0x2a')],_0x4f0ee2[_0x4d22('0x2c')]);_0xe0daa9[_0x4d22('0x30')]=_['intersection'](_0x4f0ee2[_0x4d22('0x2a')],qs[_0x4d22('0x31')](_0x3f0ef0[_0x4d22('0x2c')][_0x4d22('0x31')]));_0xe0daa9[_0x4d22('0x30')]=_0xe0daa9[_0x4d22('0x30')][_0x4d22('0x32')]?_0xe0daa9[_0x4d22('0x30')]:_0x4f0ee2['model'];_0xe0daa9['order']=qs[_0x4d22('0x35')](_0x3f0ef0[_0x4d22('0x2c')][_0x4d22('0x35')]);_0xe0daa9[_0x4d22('0x36')]=qs[_0x4d22('0x2e')](_[_0x4d22('0x37')](_0x3f0ef0[_0x4d22('0x2c')],_0x4f0ee2[_0x4d22('0x2e')]));if(_0x3f0ef0[_0x4d22('0x2c')]['filter']){_0xe0daa9[_0x4d22('0x36')]=_[_0x4d22('0x39')](_0xe0daa9['where'],{'$or':_[_0x4d22('0x2b')](_0xe0daa9[_0x4d22('0x30')],function(_0x2101b1){var _0x1d6dcf={};_0x1d6dcf[_0x2101b1]={'$like':'%'+_0x3f0ef0[_0x4d22('0x2c')][_0x4d22('0x38')]+'%'};return _0x1d6dcf;})});}_0xe0daa9=_[_0x4d22('0x39')]({},_0xe0daa9,_0x3f0ef0[_0x4d22('0x3c')]);return _0x366bd0['getSubjects'](_0xe0daa9);}})['then'](function(_0x45f783){if(_0x45f783){_0x30b811=_0x45f783[_0x4d22('0x32')];if(!_0x3f0ef0[_0x4d22('0x2c')][_0x4d22('0x33')](_0x4d22('0x4b'))){_0xe0daa9[_0x4d22('0x1c')]=qs['limit'](_0x3f0ef0['query'][_0x4d22('0x1c')]);_0xe0daa9['offset']=qs[_0x4d22('0x1e')](_0x3f0ef0['query'][_0x4d22('0x1e')]);}return _0x366bd0[_0x4d22('0x49')](_0xe0daa9);}})[_0x4d22('0x22')](function(_0x19e255){if(_0x19e255){return _0x19e255?{'count':_0x30b811,'rows':_0x19e255}:null;}})[_0x4d22('0x22')](respondWithResult(_0x5c0aa2,null))[_0x4d22('0x45')](handleError(_0x5c0aa2,null));};exports[_0x4d22('0x4c')]=function(_0x4d6e75,_0x515b63,_0x26b962){var _0x12f01f={};var _0x545d51={};var _0x3de4e8;var _0x12ff82;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x4d6e75['params']['id']}})[_0x4d22('0x22')](handleEntityNotFound(_0x515b63,null))[_0x4d22('0x22')](function(_0x145760){if(_0x145760){_0x3de4e8=_0x145760;_0x545d51['model']=_[_0x4d22('0x2d')](db[_0x4d22('0x4a')][_0x4d22('0x43')]);_0x545d51[_0x4d22('0x2c')]=_[_0x4d22('0x2d')](_0x4d6e75['query']);_0x545d51[_0x4d22('0x2e')]=_[_0x4d22('0x2f')](_0x545d51['model'],_0x545d51[_0x4d22('0x2c')]);_0x12f01f[_0x4d22('0x30')]=_[_0x4d22('0x2f')](_0x545d51['model'],qs[_0x4d22('0x31')](_0x4d6e75[_0x4d22('0x2c')][_0x4d22('0x31')]));_0x12f01f[_0x4d22('0x30')]=_0x12f01f[_0x4d22('0x30')][_0x4d22('0x32')]?_0x12f01f[_0x4d22('0x30')]:_0x545d51[_0x4d22('0x2a')];_0x12f01f[_0x4d22('0x34')]=qs['sort'](_0x4d6e75[_0x4d22('0x2c')]['sort']);_0x12f01f['where']=qs[_0x4d22('0x2e')](_[_0x4d22('0x37')](_0x4d6e75['query'],_0x545d51[_0x4d22('0x2e')]));if(_0x4d6e75[_0x4d22('0x2c')][_0x4d22('0x38')]){_0x12f01f['where']=_[_0x4d22('0x39')](_0x12f01f[_0x4d22('0x36')],{'$or':_['map'](_0x12f01f[_0x4d22('0x30')],function(_0x13d7e2){var _0x4c9652={};_0x4c9652[_0x13d7e2]={'$like':'%'+_0x4d6e75[_0x4d22('0x2c')][_0x4d22('0x38')]+'%'};return _0x4c9652;})});}_0x12f01f=_[_0x4d22('0x39')]({},_0x12f01f,_0x4d6e75['options']);return _0x3de4e8['getDescriptions'](_0x12f01f);}})[_0x4d22('0x22')](function(_0x4d8155){if(_0x4d8155){_0x12ff82=_0x4d8155[_0x4d22('0x32')];if(!_0x4d6e75['query'][_0x4d22('0x33')](_0x4d22('0x4b'))){_0x12f01f[_0x4d22('0x1c')]=qs[_0x4d22('0x1c')](_0x4d6e75[_0x4d22('0x2c')][_0x4d22('0x1c')]);_0x12f01f['offset']=qs['offset'](_0x4d6e75[_0x4d22('0x2c')]['offset']);}return _0x3de4e8[_0x4d22('0x4c')](_0x12f01f);}})['then'](function(_0x33c4e6){if(_0x33c4e6){return _0x33c4e6?{'count':_0x12ff82,'rows':_0x33c4e6}:null;}})[_0x4d22('0x22')](respondWithResult(_0x515b63,null))[_0x4d22('0x45')](handleError(_0x515b63,null));};exports[_0x4d22('0x4d')]=function(_0x21f7ff,_0x206210,_0x109d8e){var _0x5c054c={};var _0x2be6a7={};var _0x582bb2;var _0x6129b1;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x21f7ff[_0x4d22('0x42')]['id']}})[_0x4d22('0x22')](handleEntityNotFound(_0x206210,null))[_0x4d22('0x22')](function(_0x155205){if(_0x155205){_0x582bb2=_0x155205;_0x2be6a7[_0x4d22('0x2a')]=_[_0x4d22('0x2d')](db[_0x4d22('0x4a')][_0x4d22('0x43')]);_0x2be6a7['query']=_['keys'](_0x21f7ff[_0x4d22('0x2c')]);_0x2be6a7[_0x4d22('0x2e')]=_[_0x4d22('0x2f')](_0x2be6a7[_0x4d22('0x2a')],_0x2be6a7[_0x4d22('0x2c')]);_0x5c054c['attributes']=_[_0x4d22('0x2f')](_0x2be6a7['model'],qs[_0x4d22('0x31')](_0x21f7ff[_0x4d22('0x2c')]['fields']));_0x5c054c[_0x4d22('0x30')]=_0x5c054c[_0x4d22('0x30')]['length']?_0x5c054c[_0x4d22('0x30')]:_0x2be6a7[_0x4d22('0x2a')];_0x5c054c[_0x4d22('0x34')]=qs['sort'](_0x21f7ff['query']['sort']);_0x5c054c[_0x4d22('0x36')]=qs[_0x4d22('0x2e')](_[_0x4d22('0x37')](_0x21f7ff[_0x4d22('0x2c')],_0x2be6a7[_0x4d22('0x2e')]));if(_0x21f7ff['query'][_0x4d22('0x38')]){_0x5c054c[_0x4d22('0x36')]=_[_0x4d22('0x39')](_0x5c054c[_0x4d22('0x36')],{'$or':_[_0x4d22('0x2b')](_0x5c054c[_0x4d22('0x30')],function(_0x576f55){var _0xffc5d2={};_0xffc5d2[_0x576f55]={'$like':'%'+_0x21f7ff[_0x4d22('0x2c')][_0x4d22('0x38')]+'%'};return _0xffc5d2;})});}_0x5c054c=_['merge']({},_0x5c054c,_0x21f7ff[_0x4d22('0x3c')]);return _0x582bb2['getFields'](_0x5c054c);}})[_0x4d22('0x22')](function(_0x540b69){if(_0x540b69){_0x6129b1=_0x540b69[_0x4d22('0x32')];if(!_0x21f7ff[_0x4d22('0x2c')]['hasOwnProperty'](_0x4d22('0x4b'))){_0x5c054c['limit']=qs[_0x4d22('0x1c')](_0x21f7ff[_0x4d22('0x2c')][_0x4d22('0x1c')]);_0x5c054c[_0x4d22('0x1e')]=qs[_0x4d22('0x1e')](_0x21f7ff['query'][_0x4d22('0x1e')]);}return _0x582bb2[_0x4d22('0x4d')](_0x5c054c);}})['then'](function(_0x519574){if(_0x519574){return _0x519574?{'count':_0x6129b1,'rows':_0x519574}:null;}})[_0x4d22('0x22')](respondWithResult(_0x206210,null))[_0x4d22('0x45')](handleError(_0x206210,null));};
\ No newline at end of file
index 9eac092..99ccfef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbac=['../../config/logger','api','moment','bluebird','rimraf','exports','FreshsalesConfiguration','int_freshsales_configurations','lodash','util'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xfbac,0x9e));var _0xcfba=function(_0x3d06f1,_0x1e4c17){_0x3d06f1=_0x3d06f1-0x0;var _0x441f41=_0xfbac[_0x3d06f1];return _0x441f41;};'use strict';var _=require(_0xcfba('0x0'));var util=require(_0xcfba('0x1'));var logger=require(_0xcfba('0x2'))(_0xcfba('0x3'));var moment=require(_0xcfba('0x4'));var BPromise=require(_0xcfba('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xcfba('0x6'));var config=require('../../config/environment');var attributes=require('./intFreshsalesConfiguration.attributes');module[_0xcfba('0x7')]=function(_0x3a1e6d,_0x1c26cf){return _0x3a1e6d['define'](_0xcfba('0x8'),attributes,{'tableName':_0xcfba('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0ec1=['bluebird','path','rimraf','../../config/environment','exports','define','int_freshsales_configurations','util','api','moment'];(function(_0x4e722b,_0x34076c){var _0x5fe087=function(_0x1833ef){while(--_0x1833ef){_0x4e722b['push'](_0x4e722b['shift']());}};_0x5fe087(++_0x34076c);}(_0x0ec1,0x151));var _0x10ec=function(_0x99cd84,_0x1168e1){_0x99cd84=_0x99cd84-0x0;var _0x10f73e=_0x0ec1[_0x99cd84];return _0x10f73e;};'use strict';var _=require('lodash');var util=require(_0x10ec('0x0'));var logger=require('../../config/logger')(_0x10ec('0x1'));var moment=require(_0x10ec('0x2'));var BPromise=require(_0x10ec('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x10ec('0x4'));var rimraf=require(_0x10ec('0x5'));var config=require(_0x10ec('0x6'));var attributes=require('./intFreshsalesConfiguration.attributes');module[_0x10ec('0x7')]=function(_0x1191d7,_0xa75c0c){return _0x1191d7[_0x10ec('0x8')]('FreshsalesConfiguration',attributes,{'tableName':_0x10ec('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 63f4922..08a29e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x591a=['error','code','message','info','request\x20sent','result','util','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','client','http','request','then','FreshsalesConfiguration,\x20%s,\x20%s','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x54ef5b,_0x1dce7b){var _0x2dbd4f=function(_0x4731a7){while(--_0x4731a7){_0x54ef5b['push'](_0x54ef5b['shift']());}};_0x2dbd4f(++_0x1dce7b);}(_0x591a,0x1aa));var _0xa591=function(_0x49052b,_0x3ba709){_0x49052b=_0x49052b-0x0;var _0x48c045=_0x591a[_0x49052b];return _0x48c045;};'use strict';var _=require('lodash');var util=require(_0xa591('0x0'));var moment=require(_0xa591('0x1'));var BPromise=require(_0xa591('0x2'));var rs=require(_0xa591('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa591('0x4'))(_0xa591('0x5'));var config=require(_0xa591('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xa591('0x7')][_0xa591('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x456caa,_0x18f103,_0x233573){return new BPromise(function(_0x36ea7b,_0x3344d8){return client[_0xa591('0x9')](_0x456caa,_0x233573)[_0xa591('0xa')](function(_0x3cb894){logger['info'](_0xa591('0xb'),_0x18f103,'request\x20sent');logger[_0xa591('0xc')](_0xa591('0xd'),_0x18f103,'request\x20sent',JSON[_0xa591('0xe')](_0x3cb894));if(_0x3cb894[_0xa591('0xf')]){if(_0x3cb894[_0xa591('0xf')][_0xa591('0x10')]===0x1f4){logger['error']('FreshsalesConfiguration,\x20%s,\x20%s',_0x18f103,_0x3cb894[_0xa591('0xf')][_0xa591('0x11')]);return _0x3344d8(_0x3cb894[_0xa591('0xf')][_0xa591('0x11')]);}logger[_0xa591('0xf')](_0xa591('0xb'),_0x18f103,_0x3cb894[_0xa591('0xf')][_0xa591('0x11')]);return _0x36ea7b(_0x3cb894[_0xa591('0xf')][_0xa591('0x11')]);}else{logger[_0xa591('0x12')](_0xa591('0xb'),_0x18f103,_0xa591('0x13'));_0x36ea7b(_0x3cb894[_0xa591('0x14')][_0xa591('0x11')]);}})['catch'](function(_0x91e8e3){logger['error'](_0xa591('0xb'),_0x18f103,_0x91e8e3);_0x3344d8(_0x91e8e3);});});}
\ No newline at end of file
+var _0x34b6=['jayson/promise','client','http','request','then','FreshsalesConfiguration,\x20%s,\x20%s','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment'];(function(_0xb59dd6,_0x1d0c9d){var _0x3bee1d=function(_0x2e52c3){while(--_0x2e52c3){_0xb59dd6['push'](_0xb59dd6['shift']());}};_0x3bee1d(++_0x1d0c9d);}(_0x34b6,0x178));var _0x634b=function(_0x3d364d,_0x3abc8a){_0x3d364d=_0x3d364d-0x0;var _0x162512=_0x34b6[_0x3d364d];return _0x162512;};'use strict';var _=require(_0x634b('0x0'));var util=require(_0x634b('0x1'));var moment=require(_0x634b('0x2'));var BPromise=require(_0x634b('0x3'));var rs=require(_0x634b('0x4'));var fs=require('fs');var Redis=require(_0x634b('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x634b('0x6'))('rpc');var config=require(_0x634b('0x7'));var jayson=require(_0x634b('0x8'));var client=jayson[_0x634b('0x9')][_0x634b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59c9a5,_0x22bb61,_0x1d617f){return new BPromise(function(_0x289281,_0xb0ed76){return client[_0x634b('0xb')](_0x59c9a5,_0x1d617f)[_0x634b('0xc')](function(_0x39413d){logger['info'](_0x634b('0xd'),_0x22bb61,'request\x20sent');logger[_0x634b('0xe')](_0x634b('0xf'),_0x22bb61,'request\x20sent',JSON[_0x634b('0x10')](_0x39413d));if(_0x39413d[_0x634b('0x11')]){if(_0x39413d['error'][_0x634b('0x12')]===0x1f4){logger[_0x634b('0x11')](_0x634b('0xd'),_0x22bb61,_0x39413d[_0x634b('0x11')][_0x634b('0x13')]);return _0xb0ed76(_0x39413d[_0x634b('0x11')]['message']);}logger[_0x634b('0x11')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x22bb61,_0x39413d[_0x634b('0x11')][_0x634b('0x13')]);return _0x289281(_0x39413d[_0x634b('0x11')][_0x634b('0x13')]);}else{logger[_0x634b('0x14')](_0x634b('0xd'),_0x22bb61,_0x634b('0x15'));_0x289281(_0x39413d[_0x634b('0x16')][_0x634b('0x13')]);}})[_0x634b('0x17')](function(_0x4a0890){logger[_0x634b('0x11')](_0x634b('0xd'),_0x22bb61,_0x4a0890);_0xb0ed76(_0x4a0890);});});}
\ No newline at end of file
index b080259..303095c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf403=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','create','put','delete','exports','multer'];(function(_0x4bbdbd,_0x5771c4){var _0x2700c4=function(_0x9a7a19){while(--_0x9a7a19){_0x4bbdbd['push'](_0x4bbdbd['shift']());}};_0x2700c4(++_0x5771c4);}(_0xf403,0x1d3));var _0x3f40=function(_0x44fef1,_0x24d08f){_0x44fef1=_0x44fef1-0x0;var _0x5e6c7f=_0xf403[_0x44fef1];return _0x5e6c7f;};'use strict';var multer=require(_0x3f40('0x0'));var util=require('util');var path=require(_0x3f40('0x1'));var timeout=require(_0x3f40('0x2'));var express=require(_0x3f40('0x3'));var router=express[_0x3f40('0x4')]();var fs_extra=require(_0x3f40('0x5'));var auth=require(_0x3f40('0x6'));var interaction=require(_0x3f40('0x7'));var config=require(_0x3f40('0x8'));var controller=require('./intFreshsalesField.controller');router['get']('/',auth[_0x3f40('0x9')](),controller[_0x3f40('0xa')]);router[_0x3f40('0xb')](_0x3f40('0xc'),auth['isAuthenticated'](),controller[_0x3f40('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x3f40('0xe')]);router[_0x3f40('0xf')](_0x3f40('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x3f40('0x10')](_0x3f40('0xc'),auth[_0x3f40('0x9')](),controller['destroy']);module[_0x3f40('0x11')]=router;
\ No newline at end of file
+var _0x342b=['isAuthenticated','index','/:id','create','update','delete','destroy','exports','multer','path','connect-timeout','express','../../config/environment','./intFreshsalesField.controller','get'];(function(_0x4eb7e6,_0x451464){var _0x3cf508=function(_0x462471){while(--_0x462471){_0x4eb7e6['push'](_0x4eb7e6['shift']());}};_0x3cf508(++_0x451464);}(_0x342b,0xbc));var _0xb342=function(_0x1e290e,_0x165ad4){_0x1e290e=_0x1e290e-0x0;var _0x200b4e=_0x342b[_0x1e290e];return _0x200b4e;};'use strict';var multer=require(_0xb342('0x0'));var util=require('util');var path=require(_0xb342('0x1'));var timeout=require(_0xb342('0x2'));var express=require(_0xb342('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb342('0x4'));var controller=require(_0xb342('0x5'));router[_0xb342('0x6')]('/',auth[_0xb342('0x7')](),controller[_0xb342('0x8')]);router[_0xb342('0x6')](_0xb342('0x9'),auth[_0xb342('0x7')](),controller['show']);router['post']('/',auth[_0xb342('0x7')](),controller[_0xb342('0xa')]);router['put'](_0xb342('0x9'),auth[_0xb342('0x7')](),controller[_0xb342('0xb')]);router[_0xb342('0xc')](_0xb342('0x9'),auth[_0xb342('0x7')](),controller[_0xb342('0xd')]);module[_0xb342('0xe')]=router;
\ No newline at end of file
index 9e842d0..b696b92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ca2=['ENUM','customVariable','BOOLEAN','exports','string','variable','picklist','STRING'];(function(_0x59bd72,_0x16eb42){var _0x47d277=function(_0x291cee){while(--_0x291cee){_0x59bd72['push'](_0x59bd72['shift']());}};_0x47d277(++_0x16eb42);}(_0x6ca2,0xab));var _0x26ca=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6ca2[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module[_0x26ca('0x0')]={'type':{'type':Sequelize['ENUM'](_0x26ca('0x1'),_0x26ca('0x2'),'customVariable','keyValue',_0x26ca('0x3')),'defaultValue':_0x26ca('0x1')},'content':{'type':Sequelize[_0x26ca('0x4')]},'key':{'type':Sequelize[_0x26ca('0x4')]},'keyType':{'type':Sequelize[_0x26ca('0x5')]('string',_0x26ca('0x2'),_0x26ca('0x6'))},'keyContent':{'type':Sequelize[_0x26ca('0x4')]},'idField':{'type':Sequelize[_0x26ca('0x4')]},'nameField':{'type':Sequelize[_0x26ca('0x4')]},'customField':{'type':Sequelize[_0x26ca('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf3bc=['keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','customVariable'];(function(_0x13854c,_0x2ed273){var _0x4d9c2e=function(_0x2680d9){while(--_0x2680d9){_0x13854c['push'](_0x13854c['shift']());}};_0x4d9c2e(++_0x2ed273);}(_0xf3bc,0xc1));var _0xcf3b=function(_0x467e34,_0xaae9fd){_0x467e34=_0x467e34-0x0;var _0x7d77a7=_0xf3bc[_0x467e34];return _0x7d77a7;};'use strict';var Sequelize=require(_0xcf3b('0x0'));module[_0xcf3b('0x1')]={'type':{'type':Sequelize[_0xcf3b('0x2')](_0xcf3b('0x3'),'variable',_0xcf3b('0x4'),_0xcf3b('0x5'),_0xcf3b('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xcf3b('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xcf3b('0x2')](_0xcf3b('0x3'),'variable',_0xcf3b('0x4'))},'keyContent':{'type':Sequelize[_0xcf3b('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xcf3b('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xcf3b('0x7')]}};
\ No newline at end of file
index 8227f62..8db11e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdbd=['to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','limit','offset','count','set','Content-Range','json','apply','reject','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','FreshsalesField','includeAll','include','rows','catch','show','params','options','find','create','body','update','rimraf','fast-json-patch','request-promise','util','path','sox'];(function(_0x27b093,_0x1a8494){var _0x2634f2=function(_0x2c80d0){while(--_0x2c80d0){_0x27b093['push'](_0x27b093['shift']());}};_0x2634f2(++_0x1a8494);}(_0xbdbd,0xdb));var _0xdbdb=function(_0x337b5a,_0x870873){_0x337b5a=_0x337b5a-0x0;var _0x5a11e2=_0xbdbd[_0x337b5a];return _0x5a11e2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdbdb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdbdb('0x1'));var rp=require(_0xdbdb('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xdbdb('0x3'));var path=require(_0xdbdb('0x4'));var sox=require(_0xdbdb('0x5'));var csv=require(_0xdbdb('0x6'));var ejs=require(_0xdbdb('0x7'));var fs=require('fs');var fs_extra=require(_0xdbdb('0x8'));var _=require('lodash');var squel=require(_0xdbdb('0x9'));var crypto=require(_0xdbdb('0xa'));var jsforce=require(_0xdbdb('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xdbdb('0x6'));var querystring=require(_0xdbdb('0xc'));var Papa=require(_0xdbdb('0xd'));var Redis=require(_0xdbdb('0xe'));var authService=require(_0xdbdb('0xf'));var qs=require(_0xdbdb('0x10'));var as=require(_0xdbdb('0x11'));var hardwareService=require(_0xdbdb('0x12'));var logger=require(_0xdbdb('0x13'))(_0xdbdb('0x14'));var utils=require(_0xdbdb('0x15'));var config=require(_0xdbdb('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xdbdb('0x17'))['db'];function respondWithStatusCode(_0x1ce9f6,_0x2931ee){_0x2931ee=_0x2931ee||0xcc;return function(_0x1b72fe){if(_0x1b72fe){return _0x1ce9f6[_0xdbdb('0x18')](_0x2931ee);}return _0x1ce9f6[_0xdbdb('0x19')](_0x2931ee)[_0xdbdb('0x1a')]();};}function respondWithResult(_0x22fced,_0x1a1487){_0x1a1487=_0x1a1487||0xc8;return function(_0xbd5fef){if(_0xbd5fef){return _0x22fced[_0xdbdb('0x19')](_0x1a1487)['json'](_0xbd5fef);}};}function respondWithFilteredResult(_0x33be8e,_0x41ba1f){return function(_0x14a9f6){if(_0x14a9f6){var _0x6b7a0f=typeof _0x41ba1f['offset']===_0xdbdb('0x1b')&&typeof _0x41ba1f[_0xdbdb('0x1c')]===_0xdbdb('0x1b');var _0x3b929c=_0x14a9f6['count'];var _0x492f7a=_0x6b7a0f?0x0:_0x41ba1f[_0xdbdb('0x1d')];var _0x5f5675=_0x6b7a0f?_0x14a9f6[_0xdbdb('0x1e')]:_0x41ba1f[_0xdbdb('0x1d')]+_0x41ba1f['limit'];var _0x8ab0b0;if(_0x5f5675>=_0x3b929c){_0x5f5675=_0x3b929c;_0x8ab0b0=0xc8;}else{_0x8ab0b0=0xce;}_0x33be8e[_0xdbdb('0x19')](_0x8ab0b0);return _0x33be8e[_0xdbdb('0x1f')](_0xdbdb('0x20'),_0x492f7a+'-'+_0x5f5675+'/'+_0x3b929c)[_0xdbdb('0x21')](_0x14a9f6);}return null;};}function patchUpdates(_0x13cdd8){return function(_0xcbd160){try{jsonpatch[_0xdbdb('0x22')](_0xcbd160,_0x13cdd8,!![]);}catch(_0x49a4e3){return BPromise[_0xdbdb('0x23')](_0x49a4e3);}return _0xcbd160['save']();};}function saveUpdates(_0x51aa75,_0x5b1fb8){return function(_0x27bd05){if(_0x27bd05){return _0x27bd05['update'](_0x51aa75)[_0xdbdb('0x24')](function(_0x23a7e1){return _0x23a7e1;});}return null;};}function removeEntity(_0x3ed186,_0x3be94e){return function(_0x2ddc33){if(_0x2ddc33){return _0x2ddc33[_0xdbdb('0x25')]()[_0xdbdb('0x24')](function(){_0x3ed186['status'](0xcc)[_0xdbdb('0x1a')]();});}};}function handleEntityNotFound(_0xdeda61,_0x41b8a8){return function(_0x44de30){if(!_0x44de30){_0xdeda61['sendStatus'](0x194);}return _0x44de30;};}function handleError(_0x411a71,_0x1e5c7e){_0x1e5c7e=_0x1e5c7e||0x1f4;return function(_0x51f72a){logger[_0xdbdb('0x26')](_0x51f72a['stack']);if(_0x51f72a[_0xdbdb('0x27')]){delete _0x51f72a['name'];}_0x411a71[_0xdbdb('0x19')](_0x1e5c7e)[_0xdbdb('0x28')](_0x51f72a);};}exports[_0xdbdb('0x29')]=function(_0x149247,_0x1fbecf){var _0x58be7f={},_0x1c9630={},_0x185f7c={'count':0x0,'rows':[]};var _0x1b02b0=_[_0xdbdb('0x2a')](db['FreshsalesField'][_0xdbdb('0x2b')],function(_0x24ff88){return{'name':_0x24ff88[_0xdbdb('0x2c')],'type':_0x24ff88[_0xdbdb('0x2d')][_0xdbdb('0x2e')]};});_0x1c9630[_0xdbdb('0x2f')]=_[_0xdbdb('0x2a')](_0x1b02b0,'name');_0x1c9630[_0xdbdb('0x30')]=_[_0xdbdb('0x31')](_0x149247[_0xdbdb('0x30')]);_0x1c9630['filters']=_[_0xdbdb('0x32')](_0x1c9630[_0xdbdb('0x2f')],_0x1c9630[_0xdbdb('0x30')]);_0x58be7f[_0xdbdb('0x33')]=_[_0xdbdb('0x32')](_0x1c9630[_0xdbdb('0x2f')],qs[_0xdbdb('0x34')](_0x149247['query'][_0xdbdb('0x34')]));_0x58be7f['attributes']=_0x58be7f[_0xdbdb('0x33')][_0xdbdb('0x35')]?_0x58be7f[_0xdbdb('0x33')]:_0x1c9630[_0xdbdb('0x2f')];if(!_0x149247[_0xdbdb('0x30')]['hasOwnProperty'](_0xdbdb('0x36'))){_0x58be7f[_0xdbdb('0x1c')]=qs[_0xdbdb('0x1c')](_0x149247[_0xdbdb('0x30')][_0xdbdb('0x1c')]);_0x58be7f['offset']=qs[_0xdbdb('0x1d')](_0x149247[_0xdbdb('0x30')][_0xdbdb('0x1d')]);}_0x58be7f[_0xdbdb('0x37')]=qs[_0xdbdb('0x38')](_0x149247[_0xdbdb('0x30')][_0xdbdb('0x38')]);_0x58be7f[_0xdbdb('0x39')]=qs[_0xdbdb('0x3a')](_[_0xdbdb('0x3b')](_0x149247[_0xdbdb('0x30')],_0x1c9630['filters']),_0x1b02b0);if(_0x149247[_0xdbdb('0x30')][_0xdbdb('0x3c')]){_0x58be7f[_0xdbdb('0x39')]=_[_0xdbdb('0x3d')](_0x58be7f['where'],{'$or':_[_0xdbdb('0x2a')](_0x1b02b0,function(_0x4ef639){if(_0x4ef639[_0xdbdb('0x2d')]!==_0xdbdb('0x3e')){var _0x218ae5={};_0x218ae5[_0x4ef639['name']]={'$like':'%'+_0x149247[_0xdbdb('0x30')]['filter']+'%'};return _0x218ae5;}})});}_0x58be7f=_[_0xdbdb('0x3d')]({},_0x58be7f,_0x149247['options']);var _0x430a48={'where':_0x58be7f[_0xdbdb('0x39')]};return db[_0xdbdb('0x3f')][_0xdbdb('0x1e')](_0x430a48)[_0xdbdb('0x24')](function(_0x46f238){_0x185f7c[_0xdbdb('0x1e')]=_0x46f238;if(_0x149247['query'][_0xdbdb('0x40')]){_0x58be7f[_0xdbdb('0x41')]=[{'all':!![]}];}return db[_0xdbdb('0x3f')]['findAll'](_0x58be7f);})[_0xdbdb('0x24')](function(_0x3aa1e1){_0x185f7c[_0xdbdb('0x42')]=_0x3aa1e1;return _0x185f7c;})['then'](respondWithFilteredResult(_0x1fbecf,_0x58be7f))[_0xdbdb('0x43')](handleError(_0x1fbecf,null));};exports[_0xdbdb('0x44')]=function(_0x4822d4,_0x291836){var _0x18cc14={'raw':!![],'where':{'id':_0x4822d4[_0xdbdb('0x45')]['id']}},_0xaaff35={};_0xaaff35['model']=_['keys'](db[_0xdbdb('0x3f')][_0xdbdb('0x2b')]);_0xaaff35['query']=_[_0xdbdb('0x31')](_0x4822d4[_0xdbdb('0x30')]);_0xaaff35[_0xdbdb('0x3a')]=_[_0xdbdb('0x32')](_0xaaff35['model'],_0xaaff35[_0xdbdb('0x30')]);_0x18cc14[_0xdbdb('0x33')]=_[_0xdbdb('0x32')](_0xaaff35[_0xdbdb('0x2f')],qs[_0xdbdb('0x34')](_0x4822d4['query'][_0xdbdb('0x34')]));_0x18cc14['attributes']=_0x18cc14[_0xdbdb('0x33')][_0xdbdb('0x35')]?_0x18cc14[_0xdbdb('0x33')]:_0xaaff35['model'];if(_0x4822d4[_0xdbdb('0x30')][_0xdbdb('0x40')]){_0x18cc14['include']=[{'all':!![]}];}_0x18cc14=_['merge']({},_0x18cc14,_0x4822d4[_0xdbdb('0x46')]);return db[_0xdbdb('0x3f')][_0xdbdb('0x47')](_0x18cc14)['then'](handleEntityNotFound(_0x291836,null))['then'](respondWithResult(_0x291836,null))[_0xdbdb('0x43')](handleError(_0x291836,null));};exports[_0xdbdb('0x48')]=function(_0x42f60a,_0x106b79){return db['FreshsalesField'][_0xdbdb('0x48')](_0x42f60a[_0xdbdb('0x49')],{})[_0xdbdb('0x24')](respondWithResult(_0x106b79,0xc9))[_0xdbdb('0x43')](handleError(_0x106b79,null));};exports[_0xdbdb('0x4a')]=function(_0x4016eb,_0x522769){if(_0x4016eb[_0xdbdb('0x49')]['id']){delete _0x4016eb['body']['id'];}return db[_0xdbdb('0x3f')][_0xdbdb('0x47')]({'where':{'id':_0x4016eb['params']['id']}})[_0xdbdb('0x24')](handleEntityNotFound(_0x522769,null))[_0xdbdb('0x24')](saveUpdates(_0x4016eb[_0xdbdb('0x49')],null))[_0xdbdb('0x24')](respondWithResult(_0x522769,null))['catch'](handleError(_0x522769,null));};exports['destroy']=function(_0x3aa2ab,_0x364f6b){return db[_0xdbdb('0x3f')][_0xdbdb('0x47')]({'where':{'id':_0x3aa2ab[_0xdbdb('0x45')]['id']}})['then'](handleEntityNotFound(_0x364f6b,null))['then'](removeEntity(_0x364f6b,null))[_0xdbdb('0x43')](handleError(_0x364f6b,null));};
\ No newline at end of file
+var _0xc0d9=['find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','offset','limit','set','Content-Range','save','update','end','stack','name','send','index','map','FreshsalesField','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','count','includeAll','include','then','rows','catch','show','params','keys','length','create','body'];(function(_0xcfc14a,_0x3312a8){var _0x7d71e6=function(_0x8ef71){while(--_0x8ef71){_0xcfc14a['push'](_0xcfc14a['shift']());}};_0x7d71e6(++_0x3312a8);}(_0xc0d9,0x11a));var _0x9c0d=function(_0x427788,_0x55f238){_0x427788=_0x427788-0x0;var _0x48b26a=_0xc0d9[_0x427788];return _0x48b26a;};'use strict';var emlformat=require(_0x9c0d('0x0'));var rimraf=require(_0x9c0d('0x1'));var zipdir=require(_0x9c0d('0x2'));var jsonpatch=require(_0x9c0d('0x3'));var rp=require(_0x9c0d('0x4'));var moment=require(_0x9c0d('0x5'));var BPromise=require(_0x9c0d('0x6'));var Mustache=require('mustache');var util=require(_0x9c0d('0x7'));var path=require(_0x9c0d('0x8'));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(_0x9c0d('0x9'));var crypto=require(_0x9c0d('0xa'));var jsforce=require(_0x9c0d('0xb'));var deskjs=require(_0x9c0d('0xc'));var toCsv=require(_0x9c0d('0xd'));var querystring=require(_0x9c0d('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9c0d('0xf'));var as=require(_0x9c0d('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9c0d('0x11'))(_0x9c0d('0x12'));var utils=require(_0x9c0d('0x13'));var config=require(_0x9c0d('0x14'));var licenseUtil=require(_0x9c0d('0x15'));var db=require(_0x9c0d('0x16'))['db'];function respondWithStatusCode(_0x3d9d98,_0x4d8fb5){_0x4d8fb5=_0x4d8fb5||0xcc;return function(_0x3d47e1){if(_0x3d47e1){return _0x3d9d98[_0x9c0d('0x17')](_0x4d8fb5);}return _0x3d9d98[_0x9c0d('0x18')](_0x4d8fb5)['end']();};}function respondWithResult(_0x286cdf,_0x1da2b5){_0x1da2b5=_0x1da2b5||0xc8;return function(_0x2d4c7d){if(_0x2d4c7d){return _0x286cdf[_0x9c0d('0x18')](_0x1da2b5)[_0x9c0d('0x19')](_0x2d4c7d);}};}function respondWithFilteredResult(_0x54746e,_0x22f4a8){return function(_0x412eb6){if(_0x412eb6){var _0x2c0b13=typeof _0x22f4a8['offset']===_0x9c0d('0x1a')&&typeof _0x22f4a8['limit']===_0x9c0d('0x1a');var _0x57cfb1=_0x412eb6['count'];var _0x257bed=_0x2c0b13?0x0:_0x22f4a8[_0x9c0d('0x1b')];var _0x35d255=_0x2c0b13?_0x412eb6['count']:_0x22f4a8['offset']+_0x22f4a8[_0x9c0d('0x1c')];var _0x5befe2;if(_0x35d255>=_0x57cfb1){_0x35d255=_0x57cfb1;_0x5befe2=0xc8;}else{_0x5befe2=0xce;}_0x54746e['status'](_0x5befe2);return _0x54746e[_0x9c0d('0x1d')](_0x9c0d('0x1e'),_0x257bed+'-'+_0x35d255+'/'+_0x57cfb1)[_0x9c0d('0x19')](_0x412eb6);}return null;};}function patchUpdates(_0x4669c4){return function(_0x41a1f2){try{jsonpatch['apply'](_0x41a1f2,_0x4669c4,!![]);}catch(_0x1ae782){return BPromise['reject'](_0x1ae782);}return _0x41a1f2[_0x9c0d('0x1f')]();};}function saveUpdates(_0x1d632e,_0x199309){return function(_0x2c85df){if(_0x2c85df){return _0x2c85df[_0x9c0d('0x20')](_0x1d632e)['then'](function(_0x15ba7c){return _0x15ba7c;});}return null;};}function removeEntity(_0x3376dd,_0x16dc2f){return function(_0x32ba26){if(_0x32ba26){return _0x32ba26['destroy']()['then'](function(){_0x3376dd[_0x9c0d('0x18')](0xcc)[_0x9c0d('0x21')]();});}};}function handleEntityNotFound(_0x1632a1,_0x36d33f){return function(_0x20437e){if(!_0x20437e){_0x1632a1[_0x9c0d('0x17')](0x194);}return _0x20437e;};}function handleError(_0x5763c1,_0x5e4b9b){_0x5e4b9b=_0x5e4b9b||0x1f4;return function(_0x44f7e3){logger['error'](_0x44f7e3[_0x9c0d('0x22')]);if(_0x44f7e3[_0x9c0d('0x23')]){delete _0x44f7e3[_0x9c0d('0x23')];}_0x5763c1[_0x9c0d('0x18')](_0x5e4b9b)[_0x9c0d('0x24')](_0x44f7e3);};}exports[_0x9c0d('0x25')]=function(_0x37434b,_0x3dd5b8){var _0x4a01fb={},_0x3fa3e7={},_0x13482b={'count':0x0,'rows':[]};var _0x49b66a=_[_0x9c0d('0x26')](db[_0x9c0d('0x27')][_0x9c0d('0x28')],function(_0x35cc48){return{'name':_0x35cc48[_0x9c0d('0x29')],'type':_0x35cc48['type'][_0x9c0d('0x2a')]};});_0x3fa3e7[_0x9c0d('0x2b')]=_[_0x9c0d('0x26')](_0x49b66a,_0x9c0d('0x23'));_0x3fa3e7[_0x9c0d('0x2c')]=_['keys'](_0x37434b[_0x9c0d('0x2c')]);_0x3fa3e7[_0x9c0d('0x2d')]=_[_0x9c0d('0x2e')](_0x3fa3e7['model'],_0x3fa3e7['query']);_0x4a01fb[_0x9c0d('0x2f')]=_[_0x9c0d('0x2e')](_0x3fa3e7[_0x9c0d('0x2b')],qs[_0x9c0d('0x30')](_0x37434b[_0x9c0d('0x2c')][_0x9c0d('0x30')]));_0x4a01fb[_0x9c0d('0x2f')]=_0x4a01fb['attributes']['length']?_0x4a01fb[_0x9c0d('0x2f')]:_0x3fa3e7[_0x9c0d('0x2b')];if(!_0x37434b['query'][_0x9c0d('0x31')]('nolimit')){_0x4a01fb[_0x9c0d('0x1c')]=qs[_0x9c0d('0x1c')](_0x37434b['query']['limit']);_0x4a01fb[_0x9c0d('0x1b')]=qs[_0x9c0d('0x1b')](_0x37434b[_0x9c0d('0x2c')][_0x9c0d('0x1b')]);}_0x4a01fb['order']=qs[_0x9c0d('0x32')](_0x37434b[_0x9c0d('0x2c')]['sort']);_0x4a01fb[_0x9c0d('0x33')]=qs[_0x9c0d('0x2d')](_['pick'](_0x37434b[_0x9c0d('0x2c')],_0x3fa3e7[_0x9c0d('0x2d')]),_0x49b66a);if(_0x37434b[_0x9c0d('0x2c')][_0x9c0d('0x34')]){_0x4a01fb[_0x9c0d('0x33')]=_[_0x9c0d('0x35')](_0x4a01fb['where'],{'$or':_[_0x9c0d('0x26')](_0x49b66a,function(_0x124f01){if(_0x124f01['type']!==_0x9c0d('0x36')){var _0x45f659={};_0x45f659[_0x124f01['name']]={'$like':'%'+_0x37434b[_0x9c0d('0x2c')][_0x9c0d('0x34')]+'%'};return _0x45f659;}})});}_0x4a01fb=_[_0x9c0d('0x35')]({},_0x4a01fb,_0x37434b[_0x9c0d('0x37')]);var _0xe8ebc4={'where':_0x4a01fb[_0x9c0d('0x33')]};return db[_0x9c0d('0x27')][_0x9c0d('0x38')](_0xe8ebc4)['then'](function(_0x2314d5){_0x13482b['count']=_0x2314d5;if(_0x37434b[_0x9c0d('0x2c')][_0x9c0d('0x39')]){_0x4a01fb[_0x9c0d('0x3a')]=[{'all':!![]}];}return db[_0x9c0d('0x27')]['findAll'](_0x4a01fb);})[_0x9c0d('0x3b')](function(_0x42a144){_0x13482b[_0x9c0d('0x3c')]=_0x42a144;return _0x13482b;})[_0x9c0d('0x3b')](respondWithFilteredResult(_0x3dd5b8,_0x4a01fb))[_0x9c0d('0x3d')](handleError(_0x3dd5b8,null));};exports[_0x9c0d('0x3e')]=function(_0x2498bb,_0x23b969){var _0x16fa12={'raw':!![],'where':{'id':_0x2498bb[_0x9c0d('0x3f')]['id']}},_0x5de896={};_0x5de896['model']=_[_0x9c0d('0x40')](db['FreshsalesField'][_0x9c0d('0x28')]);_0x5de896[_0x9c0d('0x2c')]=_[_0x9c0d('0x40')](_0x2498bb[_0x9c0d('0x2c')]);_0x5de896[_0x9c0d('0x2d')]=_[_0x9c0d('0x2e')](_0x5de896['model'],_0x5de896[_0x9c0d('0x2c')]);_0x16fa12[_0x9c0d('0x2f')]=_[_0x9c0d('0x2e')](_0x5de896[_0x9c0d('0x2b')],qs[_0x9c0d('0x30')](_0x2498bb[_0x9c0d('0x2c')][_0x9c0d('0x30')]));_0x16fa12[_0x9c0d('0x2f')]=_0x16fa12[_0x9c0d('0x2f')][_0x9c0d('0x41')]?_0x16fa12[_0x9c0d('0x2f')]:_0x5de896[_0x9c0d('0x2b')];if(_0x2498bb[_0x9c0d('0x2c')]['includeAll']){_0x16fa12[_0x9c0d('0x3a')]=[{'all':!![]}];}_0x16fa12=_[_0x9c0d('0x35')]({},_0x16fa12,_0x2498bb['options']);return db[_0x9c0d('0x27')]['find'](_0x16fa12)[_0x9c0d('0x3b')](handleEntityNotFound(_0x23b969,null))[_0x9c0d('0x3b')](respondWithResult(_0x23b969,null))['catch'](handleError(_0x23b969,null));};exports[_0x9c0d('0x42')]=function(_0x471a8d,_0x62c67c){return db[_0x9c0d('0x27')][_0x9c0d('0x42')](_0x471a8d[_0x9c0d('0x43')],{})['then'](respondWithResult(_0x62c67c,0xc9))['catch'](handleError(_0x62c67c,null));};exports[_0x9c0d('0x20')]=function(_0x1e1173,_0x594763){if(_0x1e1173['body']['id']){delete _0x1e1173[_0x9c0d('0x43')]['id'];}return db['FreshsalesField'][_0x9c0d('0x44')]({'where':{'id':_0x1e1173['params']['id']}})['then'](handleEntityNotFound(_0x594763,null))[_0x9c0d('0x3b')](saveUpdates(_0x1e1173[_0x9c0d('0x43')],null))['then'](respondWithResult(_0x594763,null))[_0x9c0d('0x3d')](handleError(_0x594763,null));};exports[_0x9c0d('0x45')]=function(_0xd57c3c,_0x49976b){return db[_0x9c0d('0x27')][_0x9c0d('0x44')]({'where':{'id':_0xd57c3c[_0x9c0d('0x3f')]['id']}})[_0x9c0d('0x3b')](handleEntityNotFound(_0x49976b,null))[_0x9c0d('0x3b')](removeEntity(_0x49976b,null))[_0x9c0d('0x3d')](handleError(_0x49976b,null));};
\ No newline at end of file
index 2d5a9e4..42e5434 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5fc=['../../config/environment','exports','define','idField','lodash','moment','bluebird','request-promise','path','rimraf'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0xd5fc,0xae));var _0xcd5f=function(_0x494f56,_0x2b52ac){_0x494f56=_0x494f56-0x0;var _0x44b6db=_0xd5fc[_0x494f56];return _0x44b6db;};'use strict';var _=require(_0xcd5f('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xcd5f('0x1'));var BPromise=require(_0xcd5f('0x2'));var rp=require(_0xcd5f('0x3'));var fs=require('fs');var path=require(_0xcd5f('0x4'));var rimraf=require(_0xcd5f('0x5'));var config=require(_0xcd5f('0x6'));var attributes=require('./intFreshsalesField.attributes');module[_0xcd5f('0x7')]=function(_0x4b4ca8,_0x95b8bb){return _0x4b4ca8[_0xcd5f('0x8')]('FreshsalesField',attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0xcd5f('0x9'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbee0=['idField','FieldId','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','define','FreshsalesField','freshsales_unique_index'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xbee0,0x147));var _0x0bee=function(_0x2a32eb,_0x290aa5){_0x2a32eb=_0x2a32eb-0x0;var _0x238889=_0xbee0[_0x2a32eb];return _0x238889;};'use strict';var _=require('lodash');var util=require(_0x0bee('0x0'));var logger=require(_0x0bee('0x1'))(_0x0bee('0x2'));var moment=require(_0x0bee('0x3'));var BPromise=require(_0x0bee('0x4'));var rp=require(_0x0bee('0x5'));var fs=require('fs');var path=require(_0x0bee('0x6'));var rimraf=require(_0x0bee('0x7'));var config=require('../../config/environment');var attributes=require('./intFreshsalesField.attributes');module['exports']=function(_0xd0c8f,_0xa3a091){return _0xd0c8f[_0x0bee('0x8')](_0x0bee('0x9'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':_0x0bee('0xa'),'fields':[_0x0bee('0xb'),_0x0bee('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1cae69a..1ac12cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd51=['FreshsalesField,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/environment','jayson/promise','client','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0xbd51,0x1a8));var _0x1bd5=function(_0xf173df,_0x639566){_0xf173df=_0xf173df-0x0;var _0x5363a1=_0xbd51[_0xf173df];return _0x5363a1;};'use strict';var _=require(_0x1bd5('0x0'));var util=require('util');var moment=require(_0x1bd5('0x1'));var BPromise=require(_0x1bd5('0x2'));var rs=require(_0x1bd5('0x3'));var fs=require('fs');var Redis=require(_0x1bd5('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x1bd5('0x5'));var jayson=require(_0x1bd5('0x6'));var client=jayson[_0x1bd5('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x29abea,_0x30a385,_0x19077c){return new BPromise(function(_0x27d58f,_0xd8418f){return client['request'](_0x29abea,_0x19077c)[_0x1bd5('0x8')](function(_0x5c8e0d){logger[_0x1bd5('0x9')](_0x1bd5('0xa'),_0x30a385,_0x1bd5('0xb'));logger[_0x1bd5('0xc')](_0x1bd5('0xd'),_0x30a385,_0x1bd5('0xb'),JSON['stringify'](_0x5c8e0d));if(_0x5c8e0d[_0x1bd5('0xe')]){if(_0x5c8e0d['error'][_0x1bd5('0xf')]===0x1f4){logger[_0x1bd5('0xe')](_0x1bd5('0xa'),_0x30a385,_0x5c8e0d[_0x1bd5('0xe')][_0x1bd5('0x10')]);return _0xd8418f(_0x5c8e0d[_0x1bd5('0xe')][_0x1bd5('0x10')]);}logger['error']('FreshsalesField,\x20%s,\x20%s',_0x30a385,_0x5c8e0d[_0x1bd5('0xe')][_0x1bd5('0x10')]);return _0x27d58f(_0x5c8e0d[_0x1bd5('0xe')][_0x1bd5('0x10')]);}else{logger['info']('FreshsalesField,\x20%s,\x20%s',_0x30a385,_0x1bd5('0xb'));_0x27d58f(_0x5c8e0d[_0x1bd5('0x11')][_0x1bd5('0x10')]);}})[_0x1bd5('0x12')](function(_0x43ea3e){logger[_0x1bd5('0xe')](_0x1bd5('0xa'),_0x30a385,_0x43ea3e);_0xd8418f(_0x43ea3e);});});}
\ No newline at end of file
+var _0x2a07=['catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','FreshsalesField,\x20%s,\x20%s','request\x20sent','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','message','info'];(function(_0x197785,_0x406254){var _0x58190f=function(_0x5922a7){while(--_0x5922a7){_0x197785['push'](_0x197785['shift']());}};_0x58190f(++_0x406254);}(_0x2a07,0x74));var _0x72a0=function(_0x1dcbcc,_0x31a0fc){_0x1dcbcc=_0x1dcbcc-0x0;var _0x38590e=_0x2a07[_0x1dcbcc];return _0x38590e;};'use strict';var _=require(_0x72a0('0x0'));var util=require(_0x72a0('0x1'));var moment=require(_0x72a0('0x2'));var BPromise=require(_0x72a0('0x3'));var rs=require(_0x72a0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x72a0('0x5'))['db'];var utils=require(_0x72a0('0x6'));var logger=require(_0x72a0('0x7'))(_0x72a0('0x8'));var config=require(_0x72a0('0x9'));var jayson=require(_0x72a0('0xa'));var client=jayson[_0x72a0('0xb')][_0x72a0('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x193e3b,_0x287b06,_0x21c819){return new BPromise(function(_0x2c04eb,_0x22270e){return client[_0x72a0('0xd')](_0x193e3b,_0x21c819)[_0x72a0('0xe')](function(_0x2bc45b){logger['info'](_0x72a0('0xf'),_0x287b06,_0x72a0('0x10'));logger['debug'](_0x72a0('0x11'),_0x287b06,_0x72a0('0x10'),JSON[_0x72a0('0x12')](_0x2bc45b));if(_0x2bc45b[_0x72a0('0x13')]){if(_0x2bc45b[_0x72a0('0x13')]['code']===0x1f4){logger[_0x72a0('0x13')](_0x72a0('0xf'),_0x287b06,_0x2bc45b[_0x72a0('0x13')][_0x72a0('0x14')]);return _0x22270e(_0x2bc45b[_0x72a0('0x13')][_0x72a0('0x14')]);}logger[_0x72a0('0x13')]('FreshsalesField,\x20%s,\x20%s',_0x287b06,_0x2bc45b['error'][_0x72a0('0x14')]);return _0x2c04eb(_0x2bc45b[_0x72a0('0x13')][_0x72a0('0x14')]);}else{logger[_0x72a0('0x15')](_0x72a0('0xf'),_0x287b06,_0x72a0('0x10'));_0x2c04eb(_0x2bc45b['result'][_0x72a0('0x14')]);}})[_0x72a0('0x16')](function(_0x16ac70){logger[_0x72a0('0x13')](_0x72a0('0xf'),_0x287b06,_0x16ac70);_0x22270e(_0x16ac70);});});}
\ No newline at end of file
index 15d3c7b..35d6e4a 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','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x4efec5,_0x56bdec){var _0x5226f1=function(_0x3adc69){while(--_0x3adc69){_0x4efec5['push'](_0x4efec5['shift']());}};_0x5226f1(++_0x56bdec);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xa9e0[_0x2f5ac5];return _0x37c9a8;};'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
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x181fb0,_0x3eba82){var _0x1d125c=function(_0x28ee64){while(--_0x28ee64){_0x181fb0['push'](_0x181fb0['shift']());}};_0x1d125c(++_0x3eba82);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'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 60033c7..eb509a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9d9=['ENUM','integrationTab','sequelize','exports','STRING','username'];(function(_0x2f304e,_0x57736a){var _0x59b42d=function(_0x477cc5){while(--_0x477cc5){_0x2f304e['push'](_0x2f304e['shift']());}};_0x59b42d(++_0x57736a);}(_0xb9d9,0x104));var _0x9b9d=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xb9d9[_0x19e35c];return _0x3e1fe8;};'use strict';var Sequelize=require(_0x9b9d('0x0'));module[_0x9b9d('0x1')]={'name':{'type':Sequelize[_0x9b9d('0x2')]},'description':{'type':Sequelize[_0x9b9d('0x2')]},'username':{'type':Sequelize[_0x9b9d('0x2')],'unique':_0x9b9d('0x3')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x9b9d('0x2')]},'clientId':{'type':Sequelize[_0x9b9d('0x2')]},'clientSecret':{'type':Sequelize[_0x9b9d('0x2')]},'securityToken':{'type':Sequelize[_0x9b9d('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x9b9d('0x4')](_0x9b9d('0x5'),'newTab'),'defaultValue':_0x9b9d('0x5')}};
\ No newline at end of file
+var _0x26bd=['integrationTab','newTab','sequelize','exports','STRING','username','ENUM'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x26bd,0xaa));var _0xd26b=function(_0x530f68,_0x35808a){_0x530f68=_0x530f68-0x0;var _0x3abbab=_0x26bd[_0x530f68];return _0x3abbab;};'use strict';var Sequelize=require(_0xd26b('0x0'));module[_0xd26b('0x1')]={'name':{'type':Sequelize[_0xd26b('0x2')]},'description':{'type':Sequelize[_0xd26b('0x2')]},'username':{'type':Sequelize[_0xd26b('0x2')],'unique':_0xd26b('0x3')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xd26b('0x2')]},'clientId':{'type':Sequelize[_0xd26b('0x2')]},'clientSecret':{'type':Sequelize[_0xd26b('0x2')]},'securityToken':{'type':Sequelize[_0xd26b('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xd26b('0x4')](_0xd26b('0x5'),_0xd26b('0x6')),'defaultValue':_0xd26b('0x5')}};
\ No newline at end of file
index 7f47a2e..1758e81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2721=['save','then','destroy','name','send','map','SalesforceAccount','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','options','find','create','body','update','params','getConfigurations','findOne','SalesforceConfiguration','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','SalesforceField','getFields','Task','clientId','clientSecret','username','password','securityToken','remoteUri','slice','substring','lastIndexOf','Connection','concat','isNil','ticketType','sobject','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','string','int','picklist','boolean','email','textarea','remove','includes','label','picklistValues','value','True','False','statusCode','error','stringify','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','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','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','apply','reject'];(function(_0xacad16,_0x564592){var _0x484826=function(_0x5cca58){while(--_0x5cca58){_0xacad16['push'](_0xacad16['shift']());}};_0x484826(++_0x564592);}(_0x2721,0x1c3));var _0x1272=function(_0x5cb1af,_0x4bdc8c){_0x5cb1af=_0x5cb1af-0x0;var _0x8d7940=_0x2721[_0x5cb1af];return _0x8d7940;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1272('0x0'));var zipdir=require(_0x1272('0x1'));var jsonpatch=require(_0x1272('0x2'));var rp=require(_0x1272('0x3'));var moment=require(_0x1272('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1272('0x5'));var util=require(_0x1272('0x6'));var path=require(_0x1272('0x7'));var sox=require('sox');var csv=require(_0x1272('0x8'));var ejs=require(_0x1272('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1272('0xa'));var squel=require(_0x1272('0xb'));var crypto=require(_0x1272('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x1272('0xd'));var toCsv=require(_0x1272('0x8'));var querystring=require(_0x1272('0xe'));var Papa=require(_0x1272('0xf'));var Redis=require(_0x1272('0x10'));var authService=require(_0x1272('0x11'));var qs=require(_0x1272('0x12'));var as=require(_0x1272('0x13'));var hardwareService=require(_0x1272('0x14'));var logger=require('../../config/logger')(_0x1272('0x15'));var utils=require('../../config/utils');var config=require(_0x1272('0x16'));var licenseUtil=require(_0x1272('0x17'));var db=require(_0x1272('0x18'))['db'];var integrations=require(_0x1272('0x19'));function respondWithStatusCode(_0x2ffe35,_0x5ebe8e){_0x5ebe8e=_0x5ebe8e||0xcc;return function(_0x1cfe84){if(_0x1cfe84){return _0x2ffe35[_0x1272('0x1a')](_0x5ebe8e);}return _0x2ffe35[_0x1272('0x1b')](_0x5ebe8e)['end']();};}function respondWithResult(_0x11738d,_0x281f96){_0x281f96=_0x281f96||0xc8;return function(_0x59a925){if(_0x59a925){return _0x11738d['status'](_0x281f96)[_0x1272('0x1c')](_0x59a925);}};}function respondWithFilteredResult(_0x212140,_0x105f0b){return function(_0x4c5f1a){if(_0x4c5f1a){var _0x2b83ee=typeof _0x105f0b['offset']===_0x1272('0x1d')&&typeof _0x105f0b[_0x1272('0x1e')]===_0x1272('0x1d');var _0x478a2d=_0x4c5f1a['count'];var _0x416a0f=_0x2b83ee?0x0:_0x105f0b[_0x1272('0x1f')];var _0x172f0a=_0x2b83ee?_0x4c5f1a[_0x1272('0x20')]:_0x105f0b[_0x1272('0x1f')]+_0x105f0b['limit'];var _0x2a26e7;if(_0x172f0a>=_0x478a2d){_0x172f0a=_0x478a2d;_0x2a26e7=0xc8;}else{_0x2a26e7=0xce;}_0x212140[_0x1272('0x1b')](_0x2a26e7);return _0x212140[_0x1272('0x21')](_0x1272('0x22'),_0x416a0f+'-'+_0x172f0a+'/'+_0x478a2d)[_0x1272('0x1c')](_0x4c5f1a);}return null;};}function patchUpdates(_0xba9878){return function(_0x4e81a5){try{jsonpatch[_0x1272('0x23')](_0x4e81a5,_0xba9878,!![]);}catch(_0x11c48a){return BPromise[_0x1272('0x24')](_0x11c48a);}return _0x4e81a5[_0x1272('0x25')]();};}function saveUpdates(_0x142f91,_0x17d648){return function(_0x26e91b){if(_0x26e91b){return _0x26e91b['update'](_0x142f91)[_0x1272('0x26')](function(_0x50190e){return _0x50190e;});}return null;};}function removeEntity(_0x43e892,_0x2e7ac6){return function(_0x6f6b27){if(_0x6f6b27){return _0x6f6b27[_0x1272('0x27')]()['then'](function(){_0x43e892[_0x1272('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x409b9f,_0x585bc5){return function(_0x52f220){if(!_0x52f220){_0x409b9f[_0x1272('0x1a')](0x194);}return _0x52f220;};}function handleError(_0x4fc0f5,_0x4ca777){_0x4ca777=_0x4ca777||0x1f4;return function(_0x5bd214){logger['error'](_0x5bd214['stack']);if(_0x5bd214[_0x1272('0x28')]){delete _0x5bd214[_0x1272('0x28')];}_0x4fc0f5[_0x1272('0x1b')](_0x4ca777)[_0x1272('0x29')](_0x5bd214);};}exports['index']=function(_0x3cf2c7,_0xcd4f26){var _0x314773={},_0x4b159c={},_0x3dc9e1={'count':0x0,'rows':[]};var _0x3dee88=_[_0x1272('0x2a')](db[_0x1272('0x2b')][_0x1272('0x2c')],function(_0x4c609e){return{'name':_0x4c609e['fieldName'],'type':_0x4c609e[_0x1272('0x2d')][_0x1272('0x2e')]};});_0x4b159c[_0x1272('0x2f')]=_[_0x1272('0x2a')](_0x3dee88,_0x1272('0x28'));_0x4b159c[_0x1272('0x30')]=_[_0x1272('0x31')](_0x3cf2c7['query']);_0x4b159c[_0x1272('0x32')]=_[_0x1272('0x33')](_0x4b159c[_0x1272('0x2f')],_0x4b159c['query']);_0x314773['attributes']=_[_0x1272('0x33')](_0x4b159c[_0x1272('0x2f')],qs[_0x1272('0x34')](_0x3cf2c7[_0x1272('0x30')][_0x1272('0x34')]));_0x314773[_0x1272('0x35')]=_0x314773[_0x1272('0x35')][_0x1272('0x36')]?_0x314773['attributes']:_0x4b159c[_0x1272('0x2f')];if(!_0x3cf2c7[_0x1272('0x30')][_0x1272('0x37')](_0x1272('0x38'))){_0x314773[_0x1272('0x1e')]=qs[_0x1272('0x1e')](_0x3cf2c7['query'][_0x1272('0x1e')]);_0x314773[_0x1272('0x1f')]=qs[_0x1272('0x1f')](_0x3cf2c7[_0x1272('0x30')][_0x1272('0x1f')]);}_0x314773['order']=qs[_0x1272('0x39')](_0x3cf2c7[_0x1272('0x30')][_0x1272('0x39')]);_0x314773[_0x1272('0x3a')]=qs[_0x1272('0x32')](_[_0x1272('0x3b')](_0x3cf2c7[_0x1272('0x30')],_0x4b159c[_0x1272('0x32')]),_0x3dee88);if(_0x3cf2c7[_0x1272('0x30')][_0x1272('0x3c')]){_0x314773[_0x1272('0x3a')]=_[_0x1272('0x3d')](_0x314773[_0x1272('0x3a')],{'$or':_[_0x1272('0x2a')](_0x3dee88,function(_0xf83b82){if(_0xf83b82[_0x1272('0x2d')]!==_0x1272('0x3e')){var _0x4aa030={};_0x4aa030[_0xf83b82[_0x1272('0x28')]]={'$like':'%'+_0x3cf2c7[_0x1272('0x30')]['filter']+'%'};return _0x4aa030;}})});}_0x314773=_[_0x1272('0x3d')]({},_0x314773,_0x3cf2c7['options']);var _0x4e14fa={'where':_0x314773[_0x1272('0x3a')]};return db[_0x1272('0x2b')][_0x1272('0x20')](_0x4e14fa)[_0x1272('0x26')](function(_0x310108){_0x3dc9e1[_0x1272('0x20')]=_0x310108;if(_0x3cf2c7[_0x1272('0x30')][_0x1272('0x3f')]){_0x314773[_0x1272('0x40')]=[{'all':!![]}];}return db['SalesforceAccount'][_0x1272('0x41')](_0x314773);})[_0x1272('0x26')](function(_0x391f89){_0x3dc9e1['rows']=_0x391f89;return _0x3dc9e1;})['then'](respondWithFilteredResult(_0xcd4f26,_0x314773))[_0x1272('0x42')](handleError(_0xcd4f26,null));};exports[_0x1272('0x43')]=function(_0x58d46d,_0x33dee0){var _0xe69223={'raw':![],'where':{'id':_0x58d46d['params']['id']}},_0x4957bc={};_0x4957bc['model']=_[_0x1272('0x31')](db['SalesforceAccount'][_0x1272('0x2c')]);_0x4957bc[_0x1272('0x30')]=_[_0x1272('0x31')](_0x58d46d[_0x1272('0x30')]);_0x4957bc[_0x1272('0x32')]=_['intersection'](_0x4957bc[_0x1272('0x2f')],_0x4957bc[_0x1272('0x30')]);_0xe69223[_0x1272('0x35')]=_[_0x1272('0x33')](_0x4957bc[_0x1272('0x2f')],qs[_0x1272('0x34')](_0x58d46d[_0x1272('0x30')][_0x1272('0x34')]));_0xe69223[_0x1272('0x35')]=_0xe69223[_0x1272('0x35')][_0x1272('0x36')]?_0xe69223[_0x1272('0x35')]:_0x4957bc['model'];if(_0x58d46d['query'][_0x1272('0x3f')]){_0xe69223[_0x1272('0x40')]=[{'all':!![]}];}_0xe69223=_['merge']({},_0xe69223,_0x58d46d[_0x1272('0x44')]);return db[_0x1272('0x2b')][_0x1272('0x45')](_0xe69223)[_0x1272('0x26')](handleEntityNotFound(_0x33dee0,null))[_0x1272('0x26')](respondWithResult(_0x33dee0,null))[_0x1272('0x42')](handleError(_0x33dee0,null));};exports[_0x1272('0x46')]=function(_0x148e80,_0x121370){return db[_0x1272('0x2b')][_0x1272('0x46')](_0x148e80[_0x1272('0x47')],{})[_0x1272('0x26')](respondWithResult(_0x121370,0xc9))[_0x1272('0x42')](handleError(_0x121370,null));};exports[_0x1272('0x48')]=function(_0x51c6c0,_0x4ffe59){if(_0x51c6c0[_0x1272('0x47')]['id']){delete _0x51c6c0['body']['id'];}return db['SalesforceAccount']['find']({'where':{'id':_0x51c6c0[_0x1272('0x49')]['id']}})['then'](handleEntityNotFound(_0x4ffe59,null))[_0x1272('0x26')](saveUpdates(_0x51c6c0[_0x1272('0x47')],null))[_0x1272('0x26')](respondWithResult(_0x4ffe59,null))[_0x1272('0x42')](handleError(_0x4ffe59,null));};exports[_0x1272('0x27')]=function(_0x3d2475,_0x3264ee){return db[_0x1272('0x2b')][_0x1272('0x45')]({'where':{'id':_0x3d2475[_0x1272('0x49')]['id']}})[_0x1272('0x26')](handleEntityNotFound(_0x3264ee,null))['then'](removeEntity(_0x3264ee,null))[_0x1272('0x42')](handleError(_0x3264ee,null));};exports[_0x1272('0x4a')]=function(_0x2312fc,_0x5b0532,_0x2778e0){var _0x38ad14={};var _0x4867d9={};var _0x5c10fe;var _0x4480f6;return db[_0x1272('0x2b')][_0x1272('0x4b')]({'where':{'id':_0x2312fc[_0x1272('0x49')]['id']}})[_0x1272('0x26')](handleEntityNotFound(_0x5b0532,null))[_0x1272('0x26')](function(_0x482541){if(_0x482541){_0x5c10fe=_0x482541;_0x4867d9['model']=_['keys'](db[_0x1272('0x4c')][_0x1272('0x2c')]);_0x4867d9[_0x1272('0x30')]=_[_0x1272('0x31')](_0x2312fc[_0x1272('0x30')]);_0x4867d9['filters']=_['intersection'](_0x4867d9[_0x1272('0x2f')],_0x4867d9['query']);_0x38ad14[_0x1272('0x35')]=_[_0x1272('0x33')](_0x4867d9[_0x1272('0x2f')],qs[_0x1272('0x34')](_0x2312fc[_0x1272('0x30')]['fields']));_0x38ad14[_0x1272('0x35')]=_0x38ad14['attributes'][_0x1272('0x36')]?_0x38ad14[_0x1272('0x35')]:_0x4867d9[_0x1272('0x2f')];_0x38ad14['order']=qs['sort'](_0x2312fc[_0x1272('0x30')]['sort']);_0x38ad14['where']=qs[_0x1272('0x32')](_[_0x1272('0x3b')](_0x2312fc[_0x1272('0x30')],_0x4867d9[_0x1272('0x32')]));if(_0x2312fc[_0x1272('0x30')][_0x1272('0x3c')]){_0x38ad14['where']=_['merge'](_0x38ad14[_0x1272('0x3a')],{'$or':_[_0x1272('0x2a')](_0x38ad14[_0x1272('0x35')],function(_0x2aa109){var _0x2c653a={};_0x2c653a[_0x2aa109]={'$like':'%'+_0x2312fc[_0x1272('0x30')][_0x1272('0x3c')]+'%'};return _0x2c653a;})});}_0x38ad14=_[_0x1272('0x3d')]({},_0x38ad14,_0x2312fc[_0x1272('0x44')]);return _0x5c10fe[_0x1272('0x4a')](_0x38ad14);}})['then'](function(_0x1bb116){if(_0x1bb116){_0x4480f6=_0x1bb116[_0x1272('0x36')];if(!_0x2312fc[_0x1272('0x30')][_0x1272('0x37')]('nolimit')){_0x38ad14[_0x1272('0x1e')]=qs[_0x1272('0x1e')](_0x2312fc[_0x1272('0x30')]['limit']);_0x38ad14[_0x1272('0x1f')]=qs[_0x1272('0x1f')](_0x2312fc[_0x1272('0x30')][_0x1272('0x1f')]);}return _0x5c10fe['getConfigurations'](_0x38ad14);}})['then'](function(_0x1fe210){if(_0x1fe210){return _0x1fe210?{'count':_0x4480f6,'rows':_0x1fe210}:null;}})['then'](respondWithResult(_0x5b0532,null))[_0x1272('0x42')](handleError(_0x5b0532,null));};exports[_0x1272('0x4d')]=function(_0x396f93,_0x53d03e,_0x56b801){if(_0x396f93[_0x1272('0x47')]['id']){delete _0x396f93['body']['id'];}return db[_0x1272('0x2b')][_0x1272('0x4b')]({'where':{'id':_0x396f93[_0x1272('0x49')]['id']}})['then'](handleEntityNotFound(_0x53d03e,null))[_0x1272('0x26')](function(_0x2d605a){if(_0x2d605a){_0x396f93[_0x1272('0x47')][_0x1272('0x4e')]=_0x2d605a['id'];_0x396f93[_0x1272('0x47')][_0x1272('0x4f')]=integrations['getSubjects'](_0x396f93[_0x1272('0x47')][_0x1272('0x50')],_0x396f93['body'][_0x1272('0x2d')]);_0x396f93[_0x1272('0x47')][_0x1272('0x51')]=integrations[_0x1272('0x52')](_0x396f93[_0x1272('0x47')]['channel'],_0x396f93['body']['type']);return db[_0x1272('0x4c')]['create'](_0x396f93[_0x1272('0x47')],{'include':[{'model':db[_0x1272('0x53')],'as':_0x1272('0x4f')},{'model':db[_0x1272('0x53')],'as':'Descriptions'}]});}return null;})[_0x1272('0x26')](respondWithResult(_0x53d03e,null))[_0x1272('0x42')](handleError(_0x53d03e,null));};exports[_0x1272('0x54')]=function(_0x2b69f2,_0x5677f3,_0xddac71){var _0xc9558d;var _0x2243b0='';var _0x16a250=_0x1272('0x55');return db[_0x1272('0x2b')][_0x1272('0x4b')]({'where':{'id':_0x2b69f2['params']['id']},'attributes':['id','remoteUri',_0x1272('0x56'),_0x1272('0x57'),_0x1272('0x58'),_0x1272('0x59'),_0x1272('0x5a')]})[_0x1272('0x26')](handleEntityNotFound(_0x5677f3,null))[_0x1272('0x26')](function(_0x1dc9a0){if(_0x1dc9a0){_0x2243b0=_0x1dc9a0[_0x1272('0x5b')];var _0x4d4d0d=_0x2243b0[_0x1272('0x5c')](-0x1);if(_0x4d4d0d==='/'){_0x2243b0=_0x2243b0[_0x1272('0x5d')](0x0,_0x2243b0[_0x1272('0x5e')](_0x4d4d0d));}_0xc9558d=new jsforce[(_0x1272('0x5f'))]({'oauth2':{'loginUrl':_0x2243b0,'clientId':_0x1dc9a0[_0x1272('0x56')],'clientSecret':_0x1dc9a0[_0x1272('0x57')]}});return _0xc9558d['login'](_0x1dc9a0[_0x1272('0x58')],_0x1dc9a0[_0x1272('0x59')][_0x1272('0x60')](_0x1dc9a0[_0x1272('0x5a')]));}})[_0x1272('0x26')](function(_0x7937bf){if(_0x7937bf){if(!_[_0x1272('0x61')](_0x2b69f2[_0x1272('0x30')][_0x1272('0x62')])){_0x16a250=_0x2b69f2['query']['ticketType'];}return _0xc9558d[_0x1272('0x63')](_0x16a250)['describe']();}})['then'](function(_0x273fe1){var _0x49273c=['OwnerId',_0x1272('0x64'),_0x1272('0x65'),_0x1272('0x66'),_0x1272('0x67'),_0x1272('0x68')];var _0x4aa972=[_0x1272('0x69'),_0x1272('0x6a'),_0x1272('0x6b'),_0x1272('0x6c'),_0x1272('0x6d'),_0x1272('0x6e'),'phone'];if(_0x273fe1){_[_0x1272('0x6f')](_0x273fe1[_0x1272('0x34')],function(_0x51cb07){return _0x49273c['includes'](_0x51cb07[_0x1272('0x28')])||!_0x4aa972[_0x1272('0x70')](_0x51cb07[_0x1272('0x2d')]);});return{'count':_0x273fe1[_0x1272('0x34')][_0x1272('0x36')],'rows':_['map'](_0x273fe1[_0x1272('0x34')],function(_0x3ffda7){return{'id':_0x3ffda7[_0x1272('0x28')],'name':_0x3ffda7[_0x1272('0x71')],'custom':_0x3ffda7['custom'],'options':_0x3ffda7[_0x1272('0x72')]['length']>0x0?_[_0x1272('0x2a')](_0x3ffda7[_0x1272('0x72')],function(_0x3719af){return{'name':_0x3719af[_0x1272('0x71')],'value':_0x3719af[_0x1272('0x73')]};}):_0x3ffda7[_0x1272('0x2d')]=='boolean'?[{'name':_0x1272('0x74'),'value':'true'},{'name':_0x1272('0x75'),'value':'false'}]:[]};})};}})['then'](respondWithResult(_0x5677f3,null))[_0x1272('0x42')](function(_0x47a11f){var _0x102dc5=_0x2b69f2[_0x1272('0x30')]['test']?0x1f4:_0x47a11f[_0x1272('0x76')]||0x1f4;logger[_0x1272('0x77')]('getFields,\x20%s,\x20%s,\x20%s',_0x1272('0x54'),_0x102dc5,JSON[_0x1272('0x78')](_0x47a11f));delete _0x47a11f[_0x1272('0x28')];if(_0x102dc5===0x191){_0x102dc5=0x190;}_0x5677f3[_0x1272('0x1b')](_0x102dc5)[_0x1272('0x29')](_0x2b69f2[_0x1272('0x30')]['test']?{'message':_0x1272('0x79'),'statusCode':_0x47a11f[_0x1272('0x76')]}:_0x47a11f);});};
\ No newline at end of file
+var _0xdf65=['sobject','describe','OwnerId','ActivityDate','IsReminderSet','Subject','Description','string','int','boolean','email','textarea','phone','remove','includes','label','custom','picklistValues','True','true','False','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','send','Wrong\x20credentials','rimraf','fast-json-patch','moment','bluebird','util','sox','ejs','fs-extra','squel','crypto','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','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','name','index','map','SalesforceAccount','rawAttributes','query','keys','attributes','intersection','model','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','type','options','includeAll','include','findAll','rows','catch','fields','find','create','body','params','getConfigurations','findOne','SalesforceConfiguration','order','AccountId','Subjects','channel','Descriptions','getDescriptions','SalesforceField','Task','remoteUri','clientId','clientSecret','username','password','securityToken','slice','substring','lastIndexOf','Connection','login','concat','isNil','ticketType'];(function(_0x3fb67d,_0x111578){var _0xce1a2=function(_0x5dd1d0){while(--_0x5dd1d0){_0x3fb67d['push'](_0x3fb67d['shift']());}};_0xce1a2(++_0x111578);}(_0xdf65,0x112));var _0x5df6=function(_0x54aec9,_0x50e648){_0x54aec9=_0x54aec9-0x0;var _0x45f228=_0xdf65[_0x54aec9];return _0x45f228;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5df6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5df6('0x1'));var rp=require('request-promise');var moment=require(_0x5df6('0x2'));var BPromise=require(_0x5df6('0x3'));var Mustache=require('mustache');var util=require(_0x5df6('0x4'));var path=require('path');var sox=require(_0x5df6('0x5'));var csv=require('to-csv');var ejs=require(_0x5df6('0x6'));var fs=require('fs');var fs_extra=require(_0x5df6('0x7'));var _=require('lodash');var squel=require(_0x5df6('0x8'));var crypto=require(_0x5df6('0x9'));var jsforce=require(_0x5df6('0xa'));var deskjs=require(_0x5df6('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5df6('0xc'));var Redis=require(_0x5df6('0xd'));var authService=require(_0x5df6('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x5df6('0xf'));var hardwareService=require(_0x5df6('0x10'));var logger=require(_0x5df6('0x11'))(_0x5df6('0x12'));var utils=require(_0x5df6('0x13'));var config=require(_0x5df6('0x14'));var licenseUtil=require(_0x5df6('0x15'));var db=require(_0x5df6('0x16'))['db'];var integrations=require(_0x5df6('0x17'));function respondWithStatusCode(_0x2a280f,_0xb28d7){_0xb28d7=_0xb28d7||0xcc;return function(_0x586cf5){if(_0x586cf5){return _0x2a280f[_0x5df6('0x18')](_0xb28d7);}return _0x2a280f[_0x5df6('0x19')](_0xb28d7)[_0x5df6('0x1a')]();};}function respondWithResult(_0x46cee6,_0x582ed0){_0x582ed0=_0x582ed0||0xc8;return function(_0x389a97){if(_0x389a97){return _0x46cee6[_0x5df6('0x19')](_0x582ed0)[_0x5df6('0x1b')](_0x389a97);}};}function respondWithFilteredResult(_0x230998,_0x218fe6){return function(_0x3422c4){if(_0x3422c4){var _0x24db8e=typeof _0x218fe6[_0x5df6('0x1c')]===_0x5df6('0x1d')&&typeof _0x218fe6[_0x5df6('0x1e')]===_0x5df6('0x1d');var _0x32da70=_0x3422c4[_0x5df6('0x1f')];var _0x3bba65=_0x24db8e?0x0:_0x218fe6[_0x5df6('0x1c')];var _0x456b7d=_0x24db8e?_0x3422c4[_0x5df6('0x1f')]:_0x218fe6[_0x5df6('0x1c')]+_0x218fe6[_0x5df6('0x1e')];var _0x28ce87;if(_0x456b7d>=_0x32da70){_0x456b7d=_0x32da70;_0x28ce87=0xc8;}else{_0x28ce87=0xce;}_0x230998[_0x5df6('0x19')](_0x28ce87);return _0x230998[_0x5df6('0x20')](_0x5df6('0x21'),_0x3bba65+'-'+_0x456b7d+'/'+_0x32da70)['json'](_0x3422c4);}return null;};}function patchUpdates(_0x2ef064){return function(_0x4d871c){try{jsonpatch[_0x5df6('0x22')](_0x4d871c,_0x2ef064,!![]);}catch(_0x353f0c){return BPromise[_0x5df6('0x23')](_0x353f0c);}return _0x4d871c['save']();};}function saveUpdates(_0x204f53,_0x19f6f7){return function(_0x3f5134){if(_0x3f5134){return _0x3f5134[_0x5df6('0x24')](_0x204f53)[_0x5df6('0x25')](function(_0x3db627){return _0x3db627;});}return null;};}function removeEntity(_0x1dce17,_0x2c4cf4){return function(_0x454452){if(_0x454452){return _0x454452[_0x5df6('0x26')]()['then'](function(){_0x1dce17['status'](0xcc)[_0x5df6('0x1a')]();});}};}function handleEntityNotFound(_0x1f79f0,_0x587254){return function(_0x31aeff){if(!_0x31aeff){_0x1f79f0['sendStatus'](0x194);}return _0x31aeff;};}function handleError(_0x4a1a85,_0x2d848a){_0x2d848a=_0x2d848a||0x1f4;return function(_0x235dd5){logger[_0x5df6('0x27')](_0x235dd5['stack']);if(_0x235dd5[_0x5df6('0x28')]){delete _0x235dd5['name'];}_0x4a1a85['status'](_0x2d848a)['send'](_0x235dd5);};}exports[_0x5df6('0x29')]=function(_0x53b64d,_0x2aae0d){var _0x1498e5={},_0x10e21f={},_0x5ae0b6={'count':0x0,'rows':[]};var _0x362dd9=_[_0x5df6('0x2a')](db[_0x5df6('0x2b')][_0x5df6('0x2c')],function(_0x2f5bef){return{'name':_0x2f5bef['fieldName'],'type':_0x2f5bef['type']['key']};});_0x10e21f['model']=_[_0x5df6('0x2a')](_0x362dd9,_0x5df6('0x28'));_0x10e21f[_0x5df6('0x2d')]=_[_0x5df6('0x2e')](_0x53b64d[_0x5df6('0x2d')]);_0x10e21f['filters']=_['intersection'](_0x10e21f['model'],_0x10e21f[_0x5df6('0x2d')]);_0x1498e5[_0x5df6('0x2f')]=_[_0x5df6('0x30')](_0x10e21f[_0x5df6('0x31')],qs['fields'](_0x53b64d[_0x5df6('0x2d')]['fields']));_0x1498e5['attributes']=_0x1498e5[_0x5df6('0x2f')][_0x5df6('0x32')]?_0x1498e5[_0x5df6('0x2f')]:_0x10e21f['model'];if(!_0x53b64d[_0x5df6('0x2d')][_0x5df6('0x33')](_0x5df6('0x34'))){_0x1498e5[_0x5df6('0x1e')]=qs[_0x5df6('0x1e')](_0x53b64d[_0x5df6('0x2d')][_0x5df6('0x1e')]);_0x1498e5['offset']=qs['offset'](_0x53b64d[_0x5df6('0x2d')][_0x5df6('0x1c')]);}_0x1498e5['order']=qs[_0x5df6('0x35')](_0x53b64d[_0x5df6('0x2d')][_0x5df6('0x35')]);_0x1498e5[_0x5df6('0x36')]=qs[_0x5df6('0x37')](_['pick'](_0x53b64d[_0x5df6('0x2d')],_0x10e21f[_0x5df6('0x37')]),_0x362dd9);if(_0x53b64d['query'][_0x5df6('0x38')]){_0x1498e5['where']=_[_0x5df6('0x39')](_0x1498e5[_0x5df6('0x36')],{'$or':_[_0x5df6('0x2a')](_0x362dd9,function(_0x4aeca0){if(_0x4aeca0[_0x5df6('0x3a')]!=='VIRTUAL'){var _0x5d7516={};_0x5d7516[_0x4aeca0[_0x5df6('0x28')]]={'$like':'%'+_0x53b64d[_0x5df6('0x2d')]['filter']+'%'};return _0x5d7516;}})});}_0x1498e5=_[_0x5df6('0x39')]({},_0x1498e5,_0x53b64d[_0x5df6('0x3b')]);var _0x3ad28f={'where':_0x1498e5[_0x5df6('0x36')]};return db[_0x5df6('0x2b')]['count'](_0x3ad28f)[_0x5df6('0x25')](function(_0x29ee22){_0x5ae0b6['count']=_0x29ee22;if(_0x53b64d[_0x5df6('0x2d')][_0x5df6('0x3c')]){_0x1498e5[_0x5df6('0x3d')]=[{'all':!![]}];}return db[_0x5df6('0x2b')][_0x5df6('0x3e')](_0x1498e5);})['then'](function(_0x8cb35f){_0x5ae0b6[_0x5df6('0x3f')]=_0x8cb35f;return _0x5ae0b6;})[_0x5df6('0x25')](respondWithFilteredResult(_0x2aae0d,_0x1498e5))[_0x5df6('0x40')](handleError(_0x2aae0d,null));};exports['show']=function(_0x4a3c8d,_0x28a938){var _0x4dfb6c={'raw':![],'where':{'id':_0x4a3c8d['params']['id']}},_0x4980a6={};_0x4980a6['model']=_[_0x5df6('0x2e')](db['SalesforceAccount'][_0x5df6('0x2c')]);_0x4980a6['query']=_[_0x5df6('0x2e')](_0x4a3c8d[_0x5df6('0x2d')]);_0x4980a6[_0x5df6('0x37')]=_[_0x5df6('0x30')](_0x4980a6[_0x5df6('0x31')],_0x4980a6['query']);_0x4dfb6c[_0x5df6('0x2f')]=_[_0x5df6('0x30')](_0x4980a6[_0x5df6('0x31')],qs[_0x5df6('0x41')](_0x4a3c8d[_0x5df6('0x2d')][_0x5df6('0x41')]));_0x4dfb6c[_0x5df6('0x2f')]=_0x4dfb6c[_0x5df6('0x2f')]['length']?_0x4dfb6c[_0x5df6('0x2f')]:_0x4980a6['model'];if(_0x4a3c8d[_0x5df6('0x2d')]['includeAll']){_0x4dfb6c[_0x5df6('0x3d')]=[{'all':!![]}];}_0x4dfb6c=_[_0x5df6('0x39')]({},_0x4dfb6c,_0x4a3c8d['options']);return db[_0x5df6('0x2b')][_0x5df6('0x42')](_0x4dfb6c)[_0x5df6('0x25')](handleEntityNotFound(_0x28a938,null))[_0x5df6('0x25')](respondWithResult(_0x28a938,null))[_0x5df6('0x40')](handleError(_0x28a938,null));};exports[_0x5df6('0x43')]=function(_0x5bacf6,_0x1c44d1){return db[_0x5df6('0x2b')]['create'](_0x5bacf6[_0x5df6('0x44')],{})['then'](respondWithResult(_0x1c44d1,0xc9))[_0x5df6('0x40')](handleError(_0x1c44d1,null));};exports[_0x5df6('0x24')]=function(_0x5079f6,_0x451e20){if(_0x5079f6[_0x5df6('0x44')]['id']){delete _0x5079f6[_0x5df6('0x44')]['id'];}return db[_0x5df6('0x2b')][_0x5df6('0x42')]({'where':{'id':_0x5079f6['params']['id']}})[_0x5df6('0x25')](handleEntityNotFound(_0x451e20,null))[_0x5df6('0x25')](saveUpdates(_0x5079f6[_0x5df6('0x44')],null))[_0x5df6('0x25')](respondWithResult(_0x451e20,null))[_0x5df6('0x40')](handleError(_0x451e20,null));};exports[_0x5df6('0x26')]=function(_0x5abb35,_0x5bae6e){return db[_0x5df6('0x2b')][_0x5df6('0x42')]({'where':{'id':_0x5abb35[_0x5df6('0x45')]['id']}})[_0x5df6('0x25')](handleEntityNotFound(_0x5bae6e,null))['then'](removeEntity(_0x5bae6e,null))['catch'](handleError(_0x5bae6e,null));};exports[_0x5df6('0x46')]=function(_0x4b23e5,_0x178a91,_0x2878a6){var _0x4a0393={};var _0x58909c={};var _0x2e1bee;var _0x17836d;return db['SalesforceAccount'][_0x5df6('0x47')]({'where':{'id':_0x4b23e5[_0x5df6('0x45')]['id']}})[_0x5df6('0x25')](handleEntityNotFound(_0x178a91,null))[_0x5df6('0x25')](function(_0x2df627){if(_0x2df627){_0x2e1bee=_0x2df627;_0x58909c[_0x5df6('0x31')]=_[_0x5df6('0x2e')](db[_0x5df6('0x48')][_0x5df6('0x2c')]);_0x58909c[_0x5df6('0x2d')]=_['keys'](_0x4b23e5[_0x5df6('0x2d')]);_0x58909c[_0x5df6('0x37')]=_[_0x5df6('0x30')](_0x58909c[_0x5df6('0x31')],_0x58909c['query']);_0x4a0393[_0x5df6('0x2f')]=_['intersection'](_0x58909c[_0x5df6('0x31')],qs['fields'](_0x4b23e5[_0x5df6('0x2d')][_0x5df6('0x41')]));_0x4a0393['attributes']=_0x4a0393['attributes'][_0x5df6('0x32')]?_0x4a0393[_0x5df6('0x2f')]:_0x58909c['model'];_0x4a0393[_0x5df6('0x49')]=qs['sort'](_0x4b23e5[_0x5df6('0x2d')][_0x5df6('0x35')]);_0x4a0393[_0x5df6('0x36')]=qs[_0x5df6('0x37')](_['pick'](_0x4b23e5['query'],_0x58909c[_0x5df6('0x37')]));if(_0x4b23e5[_0x5df6('0x2d')][_0x5df6('0x38')]){_0x4a0393[_0x5df6('0x36')]=_['merge'](_0x4a0393[_0x5df6('0x36')],{'$or':_[_0x5df6('0x2a')](_0x4a0393[_0x5df6('0x2f')],function(_0x464ca7){var _0x103e64={};_0x103e64[_0x464ca7]={'$like':'%'+_0x4b23e5[_0x5df6('0x2d')][_0x5df6('0x38')]+'%'};return _0x103e64;})});}_0x4a0393=_[_0x5df6('0x39')]({},_0x4a0393,_0x4b23e5[_0x5df6('0x3b')]);return _0x2e1bee['getConfigurations'](_0x4a0393);}})[_0x5df6('0x25')](function(_0xbc8b0c){if(_0xbc8b0c){_0x17836d=_0xbc8b0c[_0x5df6('0x32')];if(!_0x4b23e5[_0x5df6('0x2d')][_0x5df6('0x33')](_0x5df6('0x34'))){_0x4a0393[_0x5df6('0x1e')]=qs[_0x5df6('0x1e')](_0x4b23e5[_0x5df6('0x2d')][_0x5df6('0x1e')]);_0x4a0393[_0x5df6('0x1c')]=qs[_0x5df6('0x1c')](_0x4b23e5['query'][_0x5df6('0x1c')]);}return _0x2e1bee[_0x5df6('0x46')](_0x4a0393);}})[_0x5df6('0x25')](function(_0x2531c2){if(_0x2531c2){return _0x2531c2?{'count':_0x17836d,'rows':_0x2531c2}:null;}})[_0x5df6('0x25')](respondWithResult(_0x178a91,null))[_0x5df6('0x40')](handleError(_0x178a91,null));};exports['addConfiguration']=function(_0x391d17,_0x33bd82,_0x1789f4){if(_0x391d17[_0x5df6('0x44')]['id']){delete _0x391d17[_0x5df6('0x44')]['id'];}return db[_0x5df6('0x2b')][_0x5df6('0x47')]({'where':{'id':_0x391d17[_0x5df6('0x45')]['id']}})[_0x5df6('0x25')](handleEntityNotFound(_0x33bd82,null))[_0x5df6('0x25')](function(_0x37037f){if(_0x37037f){_0x391d17[_0x5df6('0x44')][_0x5df6('0x4a')]=_0x37037f['id'];_0x391d17['body'][_0x5df6('0x4b')]=integrations['getSubjects'](_0x391d17[_0x5df6('0x44')][_0x5df6('0x4c')],_0x391d17[_0x5df6('0x44')]['type']);_0x391d17[_0x5df6('0x44')][_0x5df6('0x4d')]=integrations[_0x5df6('0x4e')](_0x391d17[_0x5df6('0x44')]['channel'],_0x391d17[_0x5df6('0x44')][_0x5df6('0x3a')]);return db[_0x5df6('0x48')]['create'](_0x391d17['body'],{'include':[{'model':db[_0x5df6('0x4f')],'as':_0x5df6('0x4b')},{'model':db['SalesforceField'],'as':_0x5df6('0x4d')}]});}return null;})['then'](respondWithResult(_0x33bd82,null))['catch'](handleError(_0x33bd82,null));};exports['getFields']=function(_0xaf0787,_0x1abe36,_0x2b709b){var _0x686e6c;var _0x3a0a23='';var _0x5c1c69=_0x5df6('0x50');return db['SalesforceAccount'][_0x5df6('0x47')]({'where':{'id':_0xaf0787[_0x5df6('0x45')]['id']},'attributes':['id',_0x5df6('0x51'),_0x5df6('0x52'),_0x5df6('0x53'),_0x5df6('0x54'),_0x5df6('0x55'),_0x5df6('0x56')]})[_0x5df6('0x25')](handleEntityNotFound(_0x1abe36,null))['then'](function(_0x1e66c6){if(_0x1e66c6){_0x3a0a23=_0x1e66c6[_0x5df6('0x51')];var _0x359b1b=_0x3a0a23[_0x5df6('0x57')](-0x1);if(_0x359b1b==='/'){_0x3a0a23=_0x3a0a23[_0x5df6('0x58')](0x0,_0x3a0a23[_0x5df6('0x59')](_0x359b1b));}_0x686e6c=new jsforce[(_0x5df6('0x5a'))]({'oauth2':{'loginUrl':_0x3a0a23,'clientId':_0x1e66c6[_0x5df6('0x52')],'clientSecret':_0x1e66c6[_0x5df6('0x53')]}});return _0x686e6c[_0x5df6('0x5b')](_0x1e66c6[_0x5df6('0x54')],_0x1e66c6['password'][_0x5df6('0x5c')](_0x1e66c6[_0x5df6('0x56')]));}})[_0x5df6('0x25')](function(_0x3ec6db){if(_0x3ec6db){if(!_[_0x5df6('0x5d')](_0xaf0787[_0x5df6('0x2d')][_0x5df6('0x5e')])){_0x5c1c69=_0xaf0787['query'][_0x5df6('0x5e')];}return _0x686e6c[_0x5df6('0x5f')](_0x5c1c69)[_0x5df6('0x60')]();}})['then'](function(_0x7bc61f){var _0x28dc95=[_0x5df6('0x61'),_0x5df6('0x62'),_0x5df6('0x63'),'IsRecurrence',_0x5df6('0x64'),_0x5df6('0x65')];var _0x3cd48a=[_0x5df6('0x66'),_0x5df6('0x67'),'picklist',_0x5df6('0x68'),_0x5df6('0x69'),_0x5df6('0x6a'),_0x5df6('0x6b')];if(_0x7bc61f){_[_0x5df6('0x6c')](_0x7bc61f[_0x5df6('0x41')],function(_0x2ae849){return _0x28dc95[_0x5df6('0x6d')](_0x2ae849[_0x5df6('0x28')])||!_0x3cd48a[_0x5df6('0x6d')](_0x2ae849[_0x5df6('0x3a')]);});return{'count':_0x7bc61f[_0x5df6('0x41')][_0x5df6('0x32')],'rows':_[_0x5df6('0x2a')](_0x7bc61f[_0x5df6('0x41')],function(_0xf3e53b){return{'id':_0xf3e53b['name'],'name':_0xf3e53b[_0x5df6('0x6e')],'custom':_0xf3e53b[_0x5df6('0x6f')],'options':_0xf3e53b[_0x5df6('0x70')][_0x5df6('0x32')]>0x0?_['map'](_0xf3e53b[_0x5df6('0x70')],function(_0x51921c){return{'name':_0x51921c[_0x5df6('0x6e')],'value':_0x51921c['value']};}):_0xf3e53b[_0x5df6('0x3a')]==_0x5df6('0x68')?[{'name':_0x5df6('0x71'),'value':_0x5df6('0x72')},{'name':_0x5df6('0x73'),'value':_0x5df6('0x74')}]:[]};})};}})[_0x5df6('0x25')](respondWithResult(_0x1abe36,null))[_0x5df6('0x40')](function(_0x2f84ef){var _0x10a0c7=_0xaf0787[_0x5df6('0x2d')][_0x5df6('0x75')]?0x1f4:_0x2f84ef[_0x5df6('0x76')]||0x1f4;logger[_0x5df6('0x27')](_0x5df6('0x77'),_0x5df6('0x78'),_0x10a0c7,JSON['stringify'](_0x2f84ef));delete _0x2f84ef[_0x5df6('0x28')];if(_0x10a0c7===0x191){_0x10a0c7=0x190;}_0x1abe36[_0x5df6('0x19')](_0x10a0c7)[_0x5df6('0x79')](_0xaf0787[_0x5df6('0x2d')][_0x5df6('0x75')]?{'message':_0x5df6('0x7a'),'statusCode':_0x2f84ef[_0x5df6('0x76')]}:_0x2f84ef);});};
\ No newline at end of file
index 6a61f7f..37ad121 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2354=['api','moment','bluebird','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','int_salesforce_accounts','lodash','util','../../config/logger'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x2354,0x159));var _0x4235=function(_0x5ec623,_0x443483){_0x5ec623=_0x5ec623-0x0;var _0x3de1b6=_0x2354[_0x5ec623];return _0x3de1b6;};'use strict';var _=require(_0x4235('0x0'));var util=require(_0x4235('0x1'));var logger=require(_0x4235('0x2'))(_0x4235('0x3'));var moment=require(_0x4235('0x4'));var BPromise=require(_0x4235('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4235('0x6'));var config=require(_0x4235('0x7'));var attributes=require(_0x4235('0x8'));var integrations=require(_0x4235('0x9'));module[_0x4235('0xa')]=function(_0x524a22,_0x1b5378){return _0x524a22['define']('SalesforceAccount',attributes,{'tableName':_0x4235('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2a8d=['path','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','define','int_salesforce_accounts','util','../../config/logger','moment','bluebird'];(function(_0x49d099,_0x18a93d){var _0x54daaf=function(_0x50f73d){while(--_0x50f73d){_0x49d099['push'](_0x49d099['shift']());}};_0x54daaf(++_0x18a93d);}(_0x2a8d,0xce));var _0xd2a8=function(_0x14914a,_0x3eae81){_0x14914a=_0x14914a-0x0;var _0x3766ec=_0x2a8d[_0x14914a];return _0x3766ec;};'use strict';var _=require('lodash');var util=require(_0xd2a8('0x0'));var logger=require(_0xd2a8('0x1'))('api');var moment=require(_0xd2a8('0x2'));var BPromise=require(_0xd2a8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd2a8('0x4'));var rimraf=require('rimraf');var config=require(_0xd2a8('0x5'));var attributes=require(_0xd2a8('0x6'));var integrations=require(_0xd2a8('0x7'));module['exports']=function(_0x5dd142,_0x116edd){return _0x5dd142[_0xd2a8('0x8')]('SalesforceAccount',attributes,{'tableName':_0xd2a8('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ac83f05..d82b49e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf401=['message','request\x20sent','result','GetSalesforceAccount','SalesforceAccount','options','raw','where','attributes','limit','include','map','model','stringify','catch','find','ShowSalesforceAccount','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','code','error','SalesforceAccount,\x20%s,\x20%s'];(function(_0x554616,_0x2fa0da){var _0x547382=function(_0x174497){while(--_0x174497){_0x554616['push'](_0x554616['shift']());}};_0x547382(++_0x2fa0da);}(_0xf401,0xe3));var _0x1f40=function(_0x361b35,_0x15589f){_0x361b35=_0x361b35-0x0;var _0x35ff4a=_0xf401[_0x361b35];return _0x35ff4a;};'use strict';var _=require('lodash');var util=require(_0x1f40('0x0'));var moment=require(_0x1f40('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1f40('0x2'));var db=require(_0x1f40('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x1f40('0x4'))(_0x1f40('0x5'));var config=require(_0x1f40('0x6'));var jayson=require(_0x1f40('0x7'));var client=jayson[_0x1f40('0x8')][_0x1f40('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4f884b,_0x351fdf,_0x521655){return new BPromise(function(_0x3a6edf,_0x448011){return client[_0x1f40('0xa')](_0x4f884b,_0x521655)[_0x1f40('0xb')](function(_0x242f56){logger[_0x1f40('0xc')]('SalesforceAccount,\x20%s,\x20%s',_0x351fdf,'request\x20sent');logger[_0x1f40('0xd')](_0x1f40('0xe'),_0x351fdf,'request\x20sent',JSON['stringify'](_0x242f56));if(_0x242f56['error']){if(_0x242f56['error'][_0x1f40('0xf')]===0x1f4){logger[_0x1f40('0x10')](_0x1f40('0x11'),_0x351fdf,_0x242f56[_0x1f40('0x10')][_0x1f40('0x12')]);return _0x448011(_0x242f56['error']['message']);}logger['error'](_0x1f40('0x11'),_0x351fdf,_0x242f56['error'][_0x1f40('0x12')]);return _0x3a6edf(_0x242f56[_0x1f40('0x10')][_0x1f40('0x12')]);}else{logger[_0x1f40('0xc')](_0x1f40('0x11'),_0x351fdf,_0x1f40('0x13'));_0x3a6edf(_0x242f56[_0x1f40('0x14')][_0x1f40('0x12')]);}})['catch'](function(_0x1de2d2){logger[_0x1f40('0x10')](_0x1f40('0x11'),_0x351fdf,_0x1de2d2);_0x448011(_0x1de2d2);});});}exports[_0x1f40('0x15')]=function(_0x47f2cc){var _0x457a9e=this;return new Promise(function(_0x5913ce,_0x47842e){return db[_0x1f40('0x16')]['findAll']({'raw':_0x47f2cc[_0x1f40('0x17')]?_0x47f2cc[_0x1f40('0x17')][_0x1f40('0x18')]===undefined?!![]:![]:!![],'where':_0x47f2cc[_0x1f40('0x17')]?_0x47f2cc[_0x1f40('0x17')][_0x1f40('0x19')]||null:null,'attributes':_0x47f2cc['options']?_0x47f2cc[_0x1f40('0x17')][_0x1f40('0x1a')]||null:null,'limit':_0x47f2cc[_0x1f40('0x17')]?_0x47f2cc[_0x1f40('0x17')][_0x1f40('0x1b')]||null:null,'include':_0x47f2cc[_0x1f40('0x17')]?_0x47f2cc['options'][_0x1f40('0x1c')]?_[_0x1f40('0x1d')](_0x47f2cc[_0x1f40('0x17')][_0x1f40('0x1c')],function(_0x4437f2){return{'model':db[_0x4437f2[_0x1f40('0x1e')]],'as':_0x4437f2['as'],'attributes':_0x4437f2['attributes'],'include':_0x4437f2['include']?_[_0x1f40('0x1d')](_0x4437f2[_0x1f40('0x1c')],function(_0x58e8d4){return{'model':db[_0x58e8d4['model']],'as':_0x58e8d4['as'],'attributes':_0x58e8d4[_0x1f40('0x1a')],'include':_0x58e8d4[_0x1f40('0x1c')]?_[_0x1f40('0x1d')](_0x58e8d4['include'],function(_0xabb84e){return{'model':db[_0xabb84e['model']],'as':_0xabb84e['as'],'attributes':_0xabb84e[_0x1f40('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x1f40('0xb')](function(_0x410b92){logger[_0x1f40('0xc')](_0x1f40('0x15'),_0x47f2cc);logger[_0x1f40('0xd')](_0x1f40('0x15'),_0x47f2cc,JSON[_0x1f40('0x1f')](_0x410b92));_0x5913ce(_0x410b92);})[_0x1f40('0x20')](function(_0xd45619){logger[_0x1f40('0x10')](_0x1f40('0x15'),_0xd45619[_0x1f40('0x12')],_0x47f2cc);_0x47842e(_0x457a9e[_0x1f40('0x10')](0x1f4,_0xd45619['message']));});});};exports['ShowSalesforceAccount']=function(_0x335547){var _0x1d8086=this;return new Promise(function(_0x453f58,_0x4d295e){return db[_0x1f40('0x16')][_0x1f40('0x21')]({'raw':_0x335547['options']?_0x335547['options'][_0x1f40('0x18')]===undefined?!![]:![]:!![],'where':_0x335547[_0x1f40('0x17')]?_0x335547[_0x1f40('0x17')]['where']||null:null,'attributes':_0x335547[_0x1f40('0x17')]?_0x335547[_0x1f40('0x17')][_0x1f40('0x1a')]||null:null,'include':_0x335547[_0x1f40('0x17')]?_0x335547[_0x1f40('0x17')][_0x1f40('0x1c')]?_[_0x1f40('0x1d')](_0x335547[_0x1f40('0x17')][_0x1f40('0x1c')],function(_0x222b0f){return{'model':db[_0x222b0f['model']],'as':_0x222b0f['as'],'attributes':_0x222b0f[_0x1f40('0x1a')],'include':_0x222b0f['include']?_[_0x1f40('0x1d')](_0x222b0f[_0x1f40('0x1c')],function(_0xf122ba){return{'model':db[_0xf122ba['model']],'as':_0xf122ba['as'],'attributes':_0xf122ba['attributes'],'include':_0xf122ba[_0x1f40('0x1c')]?_[_0x1f40('0x1d')](_0xf122ba[_0x1f40('0x1c')],function(_0x18789c){return{'model':db[_0x18789c[_0x1f40('0x1e')]],'as':_0x18789c['as'],'attributes':_0x18789c[_0x1f40('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x1f40('0xb')](function(_0x3f11a3){logger['info'](_0x1f40('0x22'),_0x335547);logger[_0x1f40('0xd')](_0x1f40('0x22'),_0x335547,JSON['stringify'](_0x3f11a3));_0x453f58(_0x3f11a3);})[_0x1f40('0x20')](function(_0x577c76){logger[_0x1f40('0x10')]('ShowSalesforceAccount',_0x577c76[_0x1f40('0x12')],_0x335547);_0x4d295e(_0x1d8086[_0x1f40('0x10')](0x1f4,_0x577c76['message']));});});};
\ No newline at end of file
+var _0xd599=['../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','error','SalesforceAccount,\x20%s,\x20%s','message','info','result','GetSalesforceAccount','findAll','options','where','attributes','limit','include','model','map','ShowSalesforceAccount','SalesforceAccount','find','raw','stringify','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x42c335,_0x183240){var _0x12cd21=function(_0x2f21e6){while(--_0x2f21e6){_0x42c335['push'](_0x42c335['shift']());}};_0x12cd21(++_0x183240);}(_0xd599,0x9f));var _0x9d59=function(_0x265e67,_0x20236d){_0x265e67=_0x265e67-0x0;var _0x15e190=_0xd599[_0x265e67];return _0x15e190;};'use strict';var _=require(_0x9d59('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x9d59('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9d59('0x2'));var db=require(_0x9d59('0x3'))['db'];var utils=require(_0x9d59('0x4'));var logger=require('../../config/logger')(_0x9d59('0x5'));var config=require(_0x9d59('0x6'));var jayson=require(_0x9d59('0x7'));var client=jayson[_0x9d59('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ebb13,_0xe0a967,_0x13bd65){return new BPromise(function(_0x200d77,_0x32535c){return client[_0x9d59('0x9')](_0x2ebb13,_0x13bd65)[_0x9d59('0xa')](function(_0x518de8){logger['info']('SalesforceAccount,\x20%s,\x20%s',_0xe0a967,_0x9d59('0xb'));logger[_0x9d59('0xc')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0xe0a967,'request\x20sent',JSON['stringify'](_0x518de8));if(_0x518de8[_0x9d59('0xd')]){if(_0x518de8['error']['code']===0x1f4){logger['error'](_0x9d59('0xe'),_0xe0a967,_0x518de8[_0x9d59('0xd')][_0x9d59('0xf')]);return _0x32535c(_0x518de8['error'][_0x9d59('0xf')]);}logger[_0x9d59('0xd')](_0x9d59('0xe'),_0xe0a967,_0x518de8[_0x9d59('0xd')][_0x9d59('0xf')]);return _0x200d77(_0x518de8[_0x9d59('0xd')][_0x9d59('0xf')]);}else{logger[_0x9d59('0x10')](_0x9d59('0xe'),_0xe0a967,_0x9d59('0xb'));_0x200d77(_0x518de8[_0x9d59('0x11')][_0x9d59('0xf')]);}})['catch'](function(_0x42b30a){logger['error'](_0x9d59('0xe'),_0xe0a967,_0x42b30a);_0x32535c(_0x42b30a);});});}exports[_0x9d59('0x12')]=function(_0xa65a37){var _0x304ac0=this;return new Promise(function(_0x5d2bd6,_0x2b99a1){return db['SalesforceAccount'][_0x9d59('0x13')]({'raw':_0xa65a37[_0x9d59('0x14')]?_0xa65a37[_0x9d59('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0xa65a37[_0x9d59('0x14')]?_0xa65a37[_0x9d59('0x14')][_0x9d59('0x15')]||null:null,'attributes':_0xa65a37[_0x9d59('0x14')]?_0xa65a37[_0x9d59('0x14')][_0x9d59('0x16')]||null:null,'limit':_0xa65a37[_0x9d59('0x14')]?_0xa65a37[_0x9d59('0x14')][_0x9d59('0x17')]||null:null,'include':_0xa65a37[_0x9d59('0x14')]?_0xa65a37[_0x9d59('0x14')][_0x9d59('0x18')]?_['map'](_0xa65a37[_0x9d59('0x14')][_0x9d59('0x18')],function(_0x2de56c){return{'model':db[_0x2de56c[_0x9d59('0x19')]],'as':_0x2de56c['as'],'attributes':_0x2de56c[_0x9d59('0x16')],'include':_0x2de56c[_0x9d59('0x18')]?_['map'](_0x2de56c[_0x9d59('0x18')],function(_0x2e57e0){return{'model':db[_0x2e57e0[_0x9d59('0x19')]],'as':_0x2e57e0['as'],'attributes':_0x2e57e0['attributes'],'include':_0x2e57e0[_0x9d59('0x18')]?_[_0x9d59('0x1a')](_0x2e57e0[_0x9d59('0x18')],function(_0x1cf92e){return{'model':db[_0x1cf92e['model']],'as':_0x1cf92e['as'],'attributes':_0x1cf92e[_0x9d59('0x16')]};}):[]};}):[]};}):[]:[]})[_0x9d59('0xa')](function(_0x47daf0){logger[_0x9d59('0x10')](_0x9d59('0x12'),_0xa65a37);logger[_0x9d59('0xc')](_0x9d59('0x12'),_0xa65a37,JSON['stringify'](_0x47daf0));_0x5d2bd6(_0x47daf0);})['catch'](function(_0x15a119){logger[_0x9d59('0xd')](_0x9d59('0x12'),_0x15a119['message'],_0xa65a37);_0x2b99a1(_0x304ac0[_0x9d59('0xd')](0x1f4,_0x15a119[_0x9d59('0xf')]));});});};exports[_0x9d59('0x1b')]=function(_0xe6d3ff){var _0x246d34=this;return new Promise(function(_0x2fdd7c,_0x19ade6){return db[_0x9d59('0x1c')][_0x9d59('0x1d')]({'raw':_0xe6d3ff[_0x9d59('0x14')]?_0xe6d3ff[_0x9d59('0x14')][_0x9d59('0x1e')]===undefined?!![]:![]:!![],'where':_0xe6d3ff['options']?_0xe6d3ff[_0x9d59('0x14')][_0x9d59('0x15')]||null:null,'attributes':_0xe6d3ff['options']?_0xe6d3ff[_0x9d59('0x14')]['attributes']||null:null,'include':_0xe6d3ff['options']?_0xe6d3ff['options'][_0x9d59('0x18')]?_['map'](_0xe6d3ff[_0x9d59('0x14')][_0x9d59('0x18')],function(_0x2afd46){return{'model':db[_0x2afd46['model']],'as':_0x2afd46['as'],'attributes':_0x2afd46[_0x9d59('0x16')],'include':_0x2afd46[_0x9d59('0x18')]?_[_0x9d59('0x1a')](_0x2afd46[_0x9d59('0x18')],function(_0x2fe8f7){return{'model':db[_0x2fe8f7['model']],'as':_0x2fe8f7['as'],'attributes':_0x2fe8f7[_0x9d59('0x16')],'include':_0x2fe8f7[_0x9d59('0x18')]?_[_0x9d59('0x1a')](_0x2fe8f7[_0x9d59('0x18')],function(_0x43f532){return{'model':db[_0x43f532[_0x9d59('0x19')]],'as':_0x43f532['as'],'attributes':_0x43f532[_0x9d59('0x16')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x11f704){logger['info'](_0x9d59('0x1b'),_0xe6d3ff);logger['debug'](_0x9d59('0x1b'),_0xe6d3ff,JSON[_0x9d59('0x1f')](_0x11f704));_0x2fdd7c(_0x11f704);})[_0x9d59('0x20')](function(_0x12f1ee){logger[_0x9d59('0xd')](_0x9d59('0x1b'),_0x12f1ee[_0x9d59('0xf')],_0xe6d3ff);_0x19ade6(_0x246d34[_0x9d59('0xd')](0x1f4,_0x12f1ee['message']));});});};
\ No newline at end of file
index dcc5e78..4bf6d24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','/:id/subjects','getSubjects','put','update','delete','destroy','exports','util','connect-timeout'];(function(_0x2298c1,_0x3e5257){var _0x5e6194=function(_0x3d7dae){while(--_0x3d7dae){_0x2298c1['push'](_0x2298c1['shift']());}};_0x5e6194(++_0x3e5257);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0x5f66[_0x4c12ec];return _0x3ae42c;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./intSalesforceConfiguration.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['getFields']);router['get'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);router[_0x65f6('0x7')]('/:id/descriptions',auth[_0x65f6('0x8')](),controller['getDescriptions']);router['post']('/',auth[_0x65f6('0x8')](),controller['create']);router[_0x65f6('0xe')]('/:id',auth[_0x65f6('0x8')](),controller[_0x65f6('0xf')]);router[_0x65f6('0x10')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x11')]);module[_0x65f6('0x12')]=router;
\ No newline at end of file
+var _0x5f2f=['Router','fs-extra','../../components/auth/service','./intSalesforceConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','create','put','update','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x3e5595,_0x38bf1d){var _0x19c9f7=function(_0x5b79ba){while(--_0x5b79ba){_0x3e5595['push'](_0x3e5595['shift']());}};_0x19c9f7(++_0x38bf1d);}(_0x5f2f,0x73));var _0xf5f2=function(_0x36641f,_0x1de996){_0x36641f=_0x36641f-0x0;var _0x264197=_0x5f2f[_0x36641f];return _0x264197;};'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('0x9')](_0xf5f2('0x10'),auth['isAuthenticated'](),controller[_0xf5f2('0x11')]);router['get']('/:id/descriptions',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x12')]);router['post']('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x13')]);router[_0xf5f2('0x14')](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x15')]);router['delete'](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x16')]);module[_0xf5f2('0x17')]=router;
\ No newline at end of file
index 77a0014..d33d2e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f92=['nothing','sequelize','exports','STRING','ENUM','Task','Case','contact_lead','contact','lead','account_contact_lead','account'];(function(_0x531607,_0x73fa88){var _0x1b1fbb=function(_0x4af491){while(--_0x4af491){_0x531607['push'](_0x531607['shift']());}};_0x1b1fbb(++_0x73fa88);}(_0x0f92,0xfd));var _0x20f9=function(_0x3f733f,_0x5b4c50){_0x3f733f=_0x3f733f-0x0;var _0x2588ca=_0x0f92[_0x3f733f];return _0x2588ca;};'use strict';var Sequelize=require(_0x20f9('0x0'));module[_0x20f9('0x1')]={'name':{'type':Sequelize[_0x20f9('0x2')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0x20f9('0x3')](_0x20f9('0x4'),_0x20f9('0x5')),'defaultValue':_0x20f9('0x4')},'moduleSearch':{'type':Sequelize[_0x20f9('0x3')](_0x20f9('0x6'),_0x20f9('0x7'),_0x20f9('0x8'),_0x20f9('0x9'),_0x20f9('0xa')),'defaultValue':_0x20f9('0x6')},'moduleCreate':{'type':Sequelize['ENUM'](_0x20f9('0xb'),_0x20f9('0x7'),_0x20f9('0x8'),_0x20f9('0xa')),'defaultValue':_0x20f9('0x8')},'leadId':{'type':Sequelize['STRING']},'additionalSearchAccount':{'type':Sequelize[_0x20f9('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x20f9('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x20f9('0x2')]}};
\ No newline at end of file
+var _0xfa7b=['STRING','ENUM','Case','Task','contact_lead','contact','lead','account_contact_lead','account','sequelize'];(function(_0x3831ed,_0x5e88ce){var _0x5521ce=function(_0x15fef7){while(--_0x15fef7){_0x3831ed['push'](_0x3831ed['shift']());}};_0x5521ce(++_0x5e88ce);}(_0xfa7b,0xa9));var _0xbfa7=function(_0x2556d6,_0x5112f8){_0x2556d6=_0x2556d6-0x0;var _0x4040ed=_0xfa7b[_0x2556d6];return _0x4040ed;};'use strict';var Sequelize=require(_0xbfa7('0x0'));module['exports']={'name':{'type':Sequelize[_0xbfa7('0x1')]},'description':{'type':Sequelize[_0xbfa7('0x1')]},'ticketType':{'type':Sequelize[_0xbfa7('0x2')]('Task',_0xbfa7('0x3')),'defaultValue':_0xbfa7('0x4')},'moduleSearch':{'type':Sequelize[_0xbfa7('0x2')](_0xbfa7('0x5'),_0xbfa7('0x6'),_0xbfa7('0x7'),_0xbfa7('0x8'),_0xbfa7('0x9')),'defaultValue':_0xbfa7('0x5')},'moduleCreate':{'type':Sequelize['ENUM']('nothing',_0xbfa7('0x6'),_0xbfa7('0x7'),_0xbfa7('0x9')),'defaultValue':'lead'},'leadId':{'type':Sequelize[_0xbfa7('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0xbfa7('0x1')]},'additionalSearchContact':{'type':Sequelize['STRING']},'additionalSearchLead':{'type':Sequelize[_0xbfa7('0x1')]}};
\ No newline at end of file
index 05b4ccb..62bcfa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5294=['intersection','fields','length','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','options','includeAll','include','findAll','rows','params','merge','find','catch','create','body','findOne','SalesforceField','order','pick','getFields','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','sendStatus','stack','name','send','SalesforceConfiguration','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes'];(function(_0x545cda,_0x245d37){var _0x36deb0=function(_0x381935){while(--_0x381935){_0x545cda['push'](_0x545cda['shift']());}};_0x36deb0(++_0x245d37);}(_0x5294,0x111));var _0x4529=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x5294[_0x2bf141];return _0x48277b;};'use strict';var emlformat=require(_0x4529('0x0'));var rimraf=require(_0x4529('0x1'));var zipdir=require(_0x4529('0x2'));var jsonpatch=require(_0x4529('0x3'));var rp=require(_0x4529('0x4'));var moment=require(_0x4529('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x4529('0x6'));var util=require(_0x4529('0x7'));var path=require(_0x4529('0x8'));var sox=require('sox');var csv=require(_0x4529('0x9'));var ejs=require(_0x4529('0xa'));var fs=require('fs');var fs_extra=require(_0x4529('0xb'));var _=require(_0x4529('0xc'));var squel=require('squel');var crypto=require(_0x4529('0xd'));var jsforce=require(_0x4529('0xe'));var deskjs=require(_0x4529('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4529('0x10'));var authService=require(_0x4529('0x11'));var qs=require(_0x4529('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4529('0x13'));var logger=require(_0x4529('0x14'))(_0x4529('0x15'));var utils=require(_0x4529('0x16'));var config=require(_0x4529('0x17'));var licenseUtil=require(_0x4529('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5c3de9,_0x416dcb){_0x416dcb=_0x416dcb||0xcc;return function(_0x1b0d24){if(_0x1b0d24){return _0x5c3de9['sendStatus'](_0x416dcb);}return _0x5c3de9[_0x4529('0x19')](_0x416dcb)['end']();};}function respondWithResult(_0x3bf3fb,_0x381501){_0x381501=_0x381501||0xc8;return function(_0x19dff1){if(_0x19dff1){return _0x3bf3fb[_0x4529('0x19')](_0x381501)['json'](_0x19dff1);}};}function respondWithFilteredResult(_0x3fa1a0,_0x6dec9a){return function(_0x208e16){if(_0x208e16){var _0x5ecbd0=typeof _0x6dec9a[_0x4529('0x1a')]===_0x4529('0x1b')&&typeof _0x6dec9a[_0x4529('0x1c')]===_0x4529('0x1b');var _0x4e17dd=_0x208e16[_0x4529('0x1d')];var _0x160177=_0x5ecbd0?0x0:_0x6dec9a['offset'];var _0x196c11=_0x5ecbd0?_0x208e16[_0x4529('0x1d')]:_0x6dec9a[_0x4529('0x1a')]+_0x6dec9a['limit'];var _0x522a1a;if(_0x196c11>=_0x4e17dd){_0x196c11=_0x4e17dd;_0x522a1a=0xc8;}else{_0x522a1a=0xce;}_0x3fa1a0[_0x4529('0x19')](_0x522a1a);return _0x3fa1a0[_0x4529('0x1e')](_0x4529('0x1f'),_0x160177+'-'+_0x196c11+'/'+_0x4e17dd)[_0x4529('0x20')](_0x208e16);}return null;};}function patchUpdates(_0x32b8dc){return function(_0x5c7e39){try{jsonpatch[_0x4529('0x21')](_0x5c7e39,_0x32b8dc,!![]);}catch(_0x1397a5){return BPromise[_0x4529('0x22')](_0x1397a5);}return _0x5c7e39[_0x4529('0x23')]();};}function saveUpdates(_0xf26d88,_0x25fa11){return function(_0x49bcbb){if(_0x49bcbb){return _0x49bcbb[_0x4529('0x24')](_0xf26d88)[_0x4529('0x25')](function(_0x178259){return _0x178259;});}return null;};}function removeEntity(_0x49fcdf,_0x34f91c){return function(_0x517434){if(_0x517434){return _0x517434[_0x4529('0x26')]()[_0x4529('0x25')](function(){_0x49fcdf[_0x4529('0x19')](0xcc)[_0x4529('0x27')]();});}};}function handleEntityNotFound(_0x44500b,_0x460036){return function(_0x2647d3){if(!_0x2647d3){_0x44500b[_0x4529('0x28')](0x194);}return _0x2647d3;};}function handleError(_0x1fb300,_0x539d48){_0x539d48=_0x539d48||0x1f4;return function(_0x5d129a){logger['error'](_0x5d129a[_0x4529('0x29')]);if(_0x5d129a[_0x4529('0x2a')]){delete _0x5d129a[_0x4529('0x2a')];}_0x1fb300[_0x4529('0x19')](_0x539d48)[_0x4529('0x2b')](_0x5d129a);};}exports['index']=function(_0x534c2d,_0x258957){var _0x3596cf={},_0x28097f={},_0x3e0d2c={'count':0x0,'rows':[]};var _0x5a9d63=_['map'](db[_0x4529('0x2c')][_0x4529('0x2d')],function(_0x5f1c84){return{'name':_0x5f1c84[_0x4529('0x2e')],'type':_0x5f1c84[_0x4529('0x2f')][_0x4529('0x30')]};});_0x28097f[_0x4529('0x31')]=_[_0x4529('0x32')](_0x5a9d63,_0x4529('0x2a'));_0x28097f[_0x4529('0x33')]=_[_0x4529('0x34')](_0x534c2d[_0x4529('0x33')]);_0x28097f[_0x4529('0x35')]=_['intersection'](_0x28097f[_0x4529('0x31')],_0x28097f[_0x4529('0x33')]);_0x3596cf[_0x4529('0x36')]=_[_0x4529('0x37')](_0x28097f[_0x4529('0x31')],qs['fields'](_0x534c2d[_0x4529('0x33')][_0x4529('0x38')]));_0x3596cf[_0x4529('0x36')]=_0x3596cf['attributes'][_0x4529('0x39')]?_0x3596cf[_0x4529('0x36')]:_0x28097f[_0x4529('0x31')];if(!_0x534c2d['query'][_0x4529('0x3a')](_0x4529('0x3b'))){_0x3596cf[_0x4529('0x1c')]=qs[_0x4529('0x1c')](_0x534c2d['query']['limit']);_0x3596cf[_0x4529('0x1a')]=qs[_0x4529('0x1a')](_0x534c2d['query']['offset']);}_0x3596cf['order']=qs[_0x4529('0x3c')](_0x534c2d[_0x4529('0x33')][_0x4529('0x3c')]);_0x3596cf[_0x4529('0x3d')]=qs[_0x4529('0x35')](_['pick'](_0x534c2d[_0x4529('0x33')],_0x28097f[_0x4529('0x35')]),_0x5a9d63);if(_0x534c2d['query'][_0x4529('0x3e')]){_0x3596cf['where']=_['merge'](_0x3596cf[_0x4529('0x3d')],{'$or':_[_0x4529('0x32')](_0x5a9d63,function(_0x3c7e7f){if(_0x3c7e7f['type']!==_0x4529('0x3f')){var _0x4a7e69={};_0x4a7e69[_0x3c7e7f[_0x4529('0x2a')]]={'$like':'%'+_0x534c2d['query']['filter']+'%'};return _0x4a7e69;}})});}_0x3596cf=_['merge']({},_0x3596cf,_0x534c2d[_0x4529('0x40')]);var _0x29c275={'where':_0x3596cf[_0x4529('0x3d')]};return db[_0x4529('0x2c')][_0x4529('0x1d')](_0x29c275)[_0x4529('0x25')](function(_0x162e69){_0x3e0d2c[_0x4529('0x1d')]=_0x162e69;if(_0x534c2d[_0x4529('0x33')][_0x4529('0x41')]){_0x3596cf[_0x4529('0x42')]=[{'all':!![]}];}return db['SalesforceConfiguration'][_0x4529('0x43')](_0x3596cf);})['then'](function(_0x26e661){_0x3e0d2c[_0x4529('0x44')]=_0x26e661;return _0x3e0d2c;})[_0x4529('0x25')](respondWithFilteredResult(_0x258957,_0x3596cf))['catch'](handleError(_0x258957,null));};exports['show']=function(_0x2aff17,_0x55c7e3){var _0x245368={'raw':![],'where':{'id':_0x2aff17[_0x4529('0x45')]['id']}},_0xdcc803={};_0xdcc803[_0x4529('0x31')]=_[_0x4529('0x34')](db[_0x4529('0x2c')][_0x4529('0x2d')]);_0xdcc803[_0x4529('0x33')]=_[_0x4529('0x34')](_0x2aff17[_0x4529('0x33')]);_0xdcc803['filters']=_[_0x4529('0x37')](_0xdcc803[_0x4529('0x31')],_0xdcc803['query']);_0x245368[_0x4529('0x36')]=_[_0x4529('0x37')](_0xdcc803[_0x4529('0x31')],qs['fields'](_0x2aff17[_0x4529('0x33')]['fields']));_0x245368[_0x4529('0x36')]=_0x245368['attributes'][_0x4529('0x39')]?_0x245368[_0x4529('0x36')]:_0xdcc803[_0x4529('0x31')];if(_0x2aff17[_0x4529('0x33')][_0x4529('0x41')]){_0x245368[_0x4529('0x42')]=[{'all':!![]}];}_0x245368=_[_0x4529('0x46')]({},_0x245368,_0x2aff17[_0x4529('0x40')]);return db[_0x4529('0x2c')][_0x4529('0x47')](_0x245368)[_0x4529('0x25')](handleEntityNotFound(_0x55c7e3,null))[_0x4529('0x25')](respondWithResult(_0x55c7e3,null))[_0x4529('0x48')](handleError(_0x55c7e3,null));};exports['create']=function(_0x32051e,_0x3cb323){return db[_0x4529('0x2c')][_0x4529('0x49')](_0x32051e[_0x4529('0x4a')],{})['then'](respondWithResult(_0x3cb323,0xc9))[_0x4529('0x48')](handleError(_0x3cb323,null));};exports['update']=function(_0x3c669f,_0x41d00c){if(_0x3c669f[_0x4529('0x4a')]['id']){delete _0x3c669f['body']['id'];}return db[_0x4529('0x2c')][_0x4529('0x47')]({'where':{'id':_0x3c669f[_0x4529('0x45')]['id']}})[_0x4529('0x25')](handleEntityNotFound(_0x41d00c,null))[_0x4529('0x25')](saveUpdates(_0x3c669f[_0x4529('0x4a')],null))[_0x4529('0x25')](respondWithResult(_0x41d00c,null))[_0x4529('0x48')](handleError(_0x41d00c,null));};exports[_0x4529('0x26')]=function(_0x489fa1,_0x1069d2){return db[_0x4529('0x2c')][_0x4529('0x47')]({'where':{'id':_0x489fa1[_0x4529('0x45')]['id']}})['then'](handleEntityNotFound(_0x1069d2,null))[_0x4529('0x25')](removeEntity(_0x1069d2,null))['catch'](handleError(_0x1069d2,null));};exports['getFields']=function(_0x387aa9,_0x445c62,_0x1c9479){var _0x4b4fe9={};var _0x5c2aa7={};var _0x3fa7ba;var _0x18e060;return db[_0x4529('0x2c')][_0x4529('0x4b')]({'where':{'id':_0x387aa9[_0x4529('0x45')]['id']}})[_0x4529('0x25')](handleEntityNotFound(_0x445c62,null))[_0x4529('0x25')](function(_0x362a20){if(_0x362a20){_0x3fa7ba=_0x362a20;_0x5c2aa7[_0x4529('0x31')]=_[_0x4529('0x34')](db[_0x4529('0x4c')][_0x4529('0x2d')]);_0x5c2aa7['query']=_[_0x4529('0x34')](_0x387aa9[_0x4529('0x33')]);_0x5c2aa7['filters']=_[_0x4529('0x37')](_0x5c2aa7[_0x4529('0x31')],_0x5c2aa7[_0x4529('0x33')]);_0x4b4fe9[_0x4529('0x36')]=_[_0x4529('0x37')](_0x5c2aa7[_0x4529('0x31')],qs['fields'](_0x387aa9[_0x4529('0x33')][_0x4529('0x38')]));_0x4b4fe9['attributes']=_0x4b4fe9[_0x4529('0x36')][_0x4529('0x39')]?_0x4b4fe9['attributes']:_0x5c2aa7[_0x4529('0x31')];_0x4b4fe9[_0x4529('0x4d')]=qs[_0x4529('0x3c')](_0x387aa9[_0x4529('0x33')][_0x4529('0x3c')]);_0x4b4fe9[_0x4529('0x3d')]=qs[_0x4529('0x35')](_[_0x4529('0x4e')](_0x387aa9[_0x4529('0x33')],_0x5c2aa7[_0x4529('0x35')]));if(_0x387aa9[_0x4529('0x33')][_0x4529('0x3e')]){_0x4b4fe9[_0x4529('0x3d')]=_[_0x4529('0x46')](_0x4b4fe9[_0x4529('0x3d')],{'$or':_['map'](_0x4b4fe9[_0x4529('0x36')],function(_0x596b86){var _0x22ba6a={};_0x22ba6a[_0x596b86]={'$like':'%'+_0x387aa9[_0x4529('0x33')][_0x4529('0x3e')]+'%'};return _0x22ba6a;})});}_0x4b4fe9=_[_0x4529('0x46')]({},_0x4b4fe9,_0x387aa9[_0x4529('0x40')]);return _0x3fa7ba[_0x4529('0x4f')](_0x4b4fe9);}})['then'](function(_0x943857){if(_0x943857){_0x18e060=_0x943857[_0x4529('0x39')];if(!_0x387aa9['query'][_0x4529('0x3a')](_0x4529('0x3b'))){_0x4b4fe9[_0x4529('0x1c')]=qs[_0x4529('0x1c')](_0x387aa9['query']['limit']);_0x4b4fe9[_0x4529('0x1a')]=qs[_0x4529('0x1a')](_0x387aa9[_0x4529('0x33')][_0x4529('0x1a')]);}return _0x3fa7ba[_0x4529('0x4f')](_0x4b4fe9);}})['then'](function(_0x3bef98){if(_0x3bef98){return _0x3bef98?{'count':_0x18e060,'rows':_0x3bef98}:null;}})[_0x4529('0x25')](respondWithResult(_0x445c62,null))[_0x4529('0x48')](handleError(_0x445c62,null));};exports['getSubjects']=function(_0x19773e,_0x5a4e15,_0x154b95){var _0x14558d={};var _0x538139={};var _0x18fd49;var _0x1b1ff6;return db[_0x4529('0x2c')][_0x4529('0x4b')]({'where':{'id':_0x19773e[_0x4529('0x45')]['id']}})['then'](handleEntityNotFound(_0x5a4e15,null))[_0x4529('0x25')](function(_0x465c02){if(_0x465c02){_0x18fd49=_0x465c02;_0x538139[_0x4529('0x31')]=_[_0x4529('0x34')](db['SalesforceField'][_0x4529('0x2d')]);_0x538139[_0x4529('0x33')]=_[_0x4529('0x34')](_0x19773e[_0x4529('0x33')]);_0x538139['filters']=_[_0x4529('0x37')](_0x538139[_0x4529('0x31')],_0x538139[_0x4529('0x33')]);_0x14558d[_0x4529('0x36')]=_[_0x4529('0x37')](_0x538139[_0x4529('0x31')],qs[_0x4529('0x38')](_0x19773e[_0x4529('0x33')][_0x4529('0x38')]));_0x14558d[_0x4529('0x36')]=_0x14558d['attributes'][_0x4529('0x39')]?_0x14558d[_0x4529('0x36')]:_0x538139[_0x4529('0x31')];_0x14558d[_0x4529('0x4d')]=qs['sort'](_0x19773e[_0x4529('0x33')][_0x4529('0x3c')]);_0x14558d[_0x4529('0x3d')]=qs[_0x4529('0x35')](_[_0x4529('0x4e')](_0x19773e[_0x4529('0x33')],_0x538139[_0x4529('0x35')]));if(_0x19773e[_0x4529('0x33')][_0x4529('0x3e')]){_0x14558d[_0x4529('0x3d')]=_[_0x4529('0x46')](_0x14558d[_0x4529('0x3d')],{'$or':_[_0x4529('0x32')](_0x14558d[_0x4529('0x36')],function(_0x42069c){var _0x554117={};_0x554117[_0x42069c]={'$like':'%'+_0x19773e[_0x4529('0x33')]['filter']+'%'};return _0x554117;})});}_0x14558d=_[_0x4529('0x46')]({},_0x14558d,_0x19773e[_0x4529('0x40')]);return _0x18fd49[_0x4529('0x50')](_0x14558d);}})['then'](function(_0x28df7a){if(_0x28df7a){_0x1b1ff6=_0x28df7a['length'];if(!_0x19773e['query'][_0x4529('0x3a')]('nolimit')){_0x14558d['limit']=qs[_0x4529('0x1c')](_0x19773e[_0x4529('0x33')][_0x4529('0x1c')]);_0x14558d['offset']=qs[_0x4529('0x1a')](_0x19773e[_0x4529('0x33')]['offset']);}return _0x18fd49[_0x4529('0x50')](_0x14558d);}})[_0x4529('0x25')](function(_0xefe2c0){if(_0xefe2c0){return _0xefe2c0?{'count':_0x1b1ff6,'rows':_0xefe2c0}:null;}})[_0x4529('0x25')](respondWithResult(_0x5a4e15,null))[_0x4529('0x48')](handleError(_0x5a4e15,null));};exports[_0x4529('0x51')]=function(_0x3aee02,_0x4f1172,_0x409511){var _0x338035={};var _0x15c5d1={};var _0x39269e;var _0x49c818;return db[_0x4529('0x2c')][_0x4529('0x4b')]({'where':{'id':_0x3aee02[_0x4529('0x45')]['id']}})[_0x4529('0x25')](handleEntityNotFound(_0x4f1172,null))['then'](function(_0x57a6e2){if(_0x57a6e2){_0x39269e=_0x57a6e2;_0x15c5d1[_0x4529('0x31')]=_[_0x4529('0x34')](db[_0x4529('0x4c')][_0x4529('0x2d')]);_0x15c5d1[_0x4529('0x33')]=_[_0x4529('0x34')](_0x3aee02[_0x4529('0x33')]);_0x15c5d1[_0x4529('0x35')]=_[_0x4529('0x37')](_0x15c5d1[_0x4529('0x31')],_0x15c5d1['query']);_0x338035[_0x4529('0x36')]=_[_0x4529('0x37')](_0x15c5d1['model'],qs[_0x4529('0x38')](_0x3aee02['query'][_0x4529('0x38')]));_0x338035[_0x4529('0x36')]=_0x338035[_0x4529('0x36')][_0x4529('0x39')]?_0x338035[_0x4529('0x36')]:_0x15c5d1['model'];_0x338035[_0x4529('0x4d')]=qs[_0x4529('0x3c')](_0x3aee02[_0x4529('0x33')][_0x4529('0x3c')]);_0x338035[_0x4529('0x3d')]=qs[_0x4529('0x35')](_[_0x4529('0x4e')](_0x3aee02[_0x4529('0x33')],_0x15c5d1[_0x4529('0x35')]));if(_0x3aee02['query'][_0x4529('0x3e')]){_0x338035[_0x4529('0x3d')]=_[_0x4529('0x46')](_0x338035[_0x4529('0x3d')],{'$or':_[_0x4529('0x32')](_0x338035['attributes'],function(_0x2264c7){var _0x3c13c2={};_0x3c13c2[_0x2264c7]={'$like':'%'+_0x3aee02['query']['filter']+'%'};return _0x3c13c2;})});}_0x338035=_['merge']({},_0x338035,_0x3aee02[_0x4529('0x40')]);return _0x39269e[_0x4529('0x51')](_0x338035);}})[_0x4529('0x25')](function(_0x471bb6){if(_0x471bb6){_0x49c818=_0x471bb6[_0x4529('0x39')];if(!_0x3aee02[_0x4529('0x33')][_0x4529('0x3a')](_0x4529('0x3b'))){_0x338035[_0x4529('0x1c')]=qs['limit'](_0x3aee02[_0x4529('0x33')][_0x4529('0x1c')]);_0x338035[_0x4529('0x1a')]=qs['offset'](_0x3aee02[_0x4529('0x33')][_0x4529('0x1a')]);}return _0x39269e[_0x4529('0x51')](_0x338035);}})[_0x4529('0x25')](function(_0x44f870){if(_0x44f870){return _0x44f870?{'count':_0x49c818,'rows':_0x44f870}:null;}})[_0x4529('0x25')](respondWithResult(_0x4f1172,null))['catch'](handleError(_0x4f1172,null));};
\ No newline at end of file
+var _0x2086=['offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','map','rawAttributes','key','query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','merge','options','SalesforceConfiguration','includeAll','include','rows','show','intersection','catch','create','body','find','params','getFields','SalesforceField','order','getSubjects','getDescriptions','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json'];(function(_0x4d4eac,_0x16d440){var _0x386641=function(_0x5c0187){while(--_0x5c0187){_0x4d4eac['push'](_0x4d4eac['shift']());}};_0x386641(++_0x16d440);}(_0x2086,0x124));var _0x6208=function(_0x1bb306,_0x3b03e6){_0x1bb306=_0x1bb306-0x0;var _0x17265b=_0x2086[_0x1bb306];return _0x17265b;};'use strict';var emlformat=require(_0x6208('0x0'));var rimraf=require(_0x6208('0x1'));var zipdir=require(_0x6208('0x2'));var jsonpatch=require(_0x6208('0x3'));var rp=require(_0x6208('0x4'));var moment=require(_0x6208('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x6208('0x6'));var util=require(_0x6208('0x7'));var path=require('path');var sox=require(_0x6208('0x8'));var csv=require(_0x6208('0x9'));var ejs=require(_0x6208('0xa'));var fs=require('fs');var fs_extra=require(_0x6208('0xb'));var _=require(_0x6208('0xc'));var squel=require('squel');var crypto=require(_0x6208('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6208('0x9'));var querystring=require(_0x6208('0xe'));var Papa=require(_0x6208('0xf'));var Redis=require(_0x6208('0x10'));var authService=require(_0x6208('0x11'));var qs=require(_0x6208('0x12'));var as=require(_0x6208('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6208('0x14'))(_0x6208('0x15'));var utils=require(_0x6208('0x16'));var config=require(_0x6208('0x17'));var licenseUtil=require(_0x6208('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3d5715,_0x53f5f1){_0x53f5f1=_0x53f5f1||0xcc;return function(_0x3b1cab){if(_0x3b1cab){return _0x3d5715[_0x6208('0x19')](_0x53f5f1);}return _0x3d5715[_0x6208('0x1a')](_0x53f5f1)['end']();};}function respondWithResult(_0x176cd5,_0x183e01){_0x183e01=_0x183e01||0xc8;return function(_0x3a54b3){if(_0x3a54b3){return _0x176cd5['status'](_0x183e01)[_0x6208('0x1b')](_0x3a54b3);}};}function respondWithFilteredResult(_0x32dda8,_0x1735e1){return function(_0x582218){if(_0x582218){var _0x37db49=typeof _0x1735e1[_0x6208('0x1c')]===_0x6208('0x1d')&&typeof _0x1735e1['limit']==='undefined';var _0x43263a=_0x582218['count'];var _0x4e7257=_0x37db49?0x0:_0x1735e1[_0x6208('0x1c')];var _0x5831f8=_0x37db49?_0x582218[_0x6208('0x1e')]:_0x1735e1[_0x6208('0x1c')]+_0x1735e1[_0x6208('0x1f')];var _0x451351;if(_0x5831f8>=_0x43263a){_0x5831f8=_0x43263a;_0x451351=0xc8;}else{_0x451351=0xce;}_0x32dda8[_0x6208('0x1a')](_0x451351);return _0x32dda8[_0x6208('0x20')](_0x6208('0x21'),_0x4e7257+'-'+_0x5831f8+'/'+_0x43263a)[_0x6208('0x1b')](_0x582218);}return null;};}function patchUpdates(_0x328af9){return function(_0x796d65){try{jsonpatch[_0x6208('0x22')](_0x796d65,_0x328af9,!![]);}catch(_0x3b1456){return BPromise['reject'](_0x3b1456);}return _0x796d65[_0x6208('0x23')]();};}function saveUpdates(_0x1b93b6,_0x25fa2b){return function(_0x1356cc){if(_0x1356cc){return _0x1356cc[_0x6208('0x24')](_0x1b93b6)[_0x6208('0x25')](function(_0x2890af){return _0x2890af;});}return null;};}function removeEntity(_0xfd79f4,_0x5e0852){return function(_0x15d14e){if(_0x15d14e){return _0x15d14e[_0x6208('0x26')]()[_0x6208('0x25')](function(){_0xfd79f4[_0x6208('0x1a')](0xcc)[_0x6208('0x27')]();});}};}function handleEntityNotFound(_0x40bab6,_0x117fa7){return function(_0x364b13){if(!_0x364b13){_0x40bab6[_0x6208('0x19')](0x194);}return _0x364b13;};}function handleError(_0x165c05,_0x4c6183){_0x4c6183=_0x4c6183||0x1f4;return function(_0x2bb9df){logger[_0x6208('0x28')](_0x2bb9df[_0x6208('0x29')]);if(_0x2bb9df[_0x6208('0x2a')]){delete _0x2bb9df[_0x6208('0x2a')];}_0x165c05[_0x6208('0x1a')](_0x4c6183)['send'](_0x2bb9df);};}exports['index']=function(_0x76dcda,_0x90d6c0){var _0x18df12={},_0x46f36d={},_0x5663f7={'count':0x0,'rows':[]};var _0x101e1b=_[_0x6208('0x2b')](db['SalesforceConfiguration'][_0x6208('0x2c')],function(_0x47b247){return{'name':_0x47b247['fieldName'],'type':_0x47b247['type'][_0x6208('0x2d')]};});_0x46f36d['model']=_[_0x6208('0x2b')](_0x101e1b,'name');_0x46f36d[_0x6208('0x2e')]=_[_0x6208('0x2f')](_0x76dcda['query']);_0x46f36d[_0x6208('0x30')]=_['intersection'](_0x46f36d[_0x6208('0x31')],_0x46f36d[_0x6208('0x2e')]);_0x18df12[_0x6208('0x32')]=_['intersection'](_0x46f36d[_0x6208('0x31')],qs[_0x6208('0x33')](_0x76dcda[_0x6208('0x2e')][_0x6208('0x33')]));_0x18df12[_0x6208('0x32')]=_0x18df12['attributes'][_0x6208('0x34')]?_0x18df12[_0x6208('0x32')]:_0x46f36d[_0x6208('0x31')];if(!_0x76dcda[_0x6208('0x2e')][_0x6208('0x35')](_0x6208('0x36'))){_0x18df12['limit']=qs['limit'](_0x76dcda[_0x6208('0x2e')]['limit']);_0x18df12['offset']=qs[_0x6208('0x1c')](_0x76dcda[_0x6208('0x2e')][_0x6208('0x1c')]);}_0x18df12['order']=qs[_0x6208('0x37')](_0x76dcda[_0x6208('0x2e')][_0x6208('0x37')]);_0x18df12[_0x6208('0x38')]=qs[_0x6208('0x30')](_[_0x6208('0x39')](_0x76dcda[_0x6208('0x2e')],_0x46f36d[_0x6208('0x30')]),_0x101e1b);if(_0x76dcda['query'][_0x6208('0x3a')]){_0x18df12[_0x6208('0x38')]=_['merge'](_0x18df12[_0x6208('0x38')],{'$or':_[_0x6208('0x2b')](_0x101e1b,function(_0x21933b){if(_0x21933b[_0x6208('0x3b')]!==_0x6208('0x3c')){var _0x164d28={};_0x164d28[_0x21933b[_0x6208('0x2a')]]={'$like':'%'+_0x76dcda[_0x6208('0x2e')][_0x6208('0x3a')]+'%'};return _0x164d28;}})});}_0x18df12=_[_0x6208('0x3d')]({},_0x18df12,_0x76dcda[_0x6208('0x3e')]);var _0xeadbd={'where':_0x18df12[_0x6208('0x38')]};return db[_0x6208('0x3f')][_0x6208('0x1e')](_0xeadbd)[_0x6208('0x25')](function(_0x296e6c){_0x5663f7[_0x6208('0x1e')]=_0x296e6c;if(_0x76dcda[_0x6208('0x2e')][_0x6208('0x40')]){_0x18df12[_0x6208('0x41')]=[{'all':!![]}];}return db['SalesforceConfiguration']['findAll'](_0x18df12);})[_0x6208('0x25')](function(_0x599ee6){_0x5663f7[_0x6208('0x42')]=_0x599ee6;return _0x5663f7;})[_0x6208('0x25')](respondWithFilteredResult(_0x90d6c0,_0x18df12))['catch'](handleError(_0x90d6c0,null));};exports[_0x6208('0x43')]=function(_0x149209,_0x49536d){var _0x236f8e={'raw':![],'where':{'id':_0x149209['params']['id']}},_0x54dd9b={};_0x54dd9b[_0x6208('0x31')]=_['keys'](db[_0x6208('0x3f')]['rawAttributes']);_0x54dd9b[_0x6208('0x2e')]=_[_0x6208('0x2f')](_0x149209['query']);_0x54dd9b[_0x6208('0x30')]=_[_0x6208('0x44')](_0x54dd9b['model'],_0x54dd9b[_0x6208('0x2e')]);_0x236f8e[_0x6208('0x32')]=_[_0x6208('0x44')](_0x54dd9b[_0x6208('0x31')],qs['fields'](_0x149209[_0x6208('0x2e')]['fields']));_0x236f8e[_0x6208('0x32')]=_0x236f8e['attributes'][_0x6208('0x34')]?_0x236f8e[_0x6208('0x32')]:_0x54dd9b[_0x6208('0x31')];if(_0x149209[_0x6208('0x2e')][_0x6208('0x40')]){_0x236f8e['include']=[{'all':!![]}];}_0x236f8e=_[_0x6208('0x3d')]({},_0x236f8e,_0x149209[_0x6208('0x3e')]);return db[_0x6208('0x3f')]['find'](_0x236f8e)['then'](handleEntityNotFound(_0x49536d,null))[_0x6208('0x25')](respondWithResult(_0x49536d,null))[_0x6208('0x45')](handleError(_0x49536d,null));};exports[_0x6208('0x46')]=function(_0x4528d1,_0x4d6b68){return db[_0x6208('0x3f')][_0x6208('0x46')](_0x4528d1[_0x6208('0x47')],{})[_0x6208('0x25')](respondWithResult(_0x4d6b68,0xc9))[_0x6208('0x45')](handleError(_0x4d6b68,null));};exports[_0x6208('0x24')]=function(_0x1aca58,_0x2f8481){if(_0x1aca58['body']['id']){delete _0x1aca58[_0x6208('0x47')]['id'];}return db[_0x6208('0x3f')][_0x6208('0x48')]({'where':{'id':_0x1aca58[_0x6208('0x49')]['id']}})['then'](handleEntityNotFound(_0x2f8481,null))[_0x6208('0x25')](saveUpdates(_0x1aca58['body'],null))[_0x6208('0x25')](respondWithResult(_0x2f8481,null))[_0x6208('0x45')](handleError(_0x2f8481,null));};exports[_0x6208('0x26')]=function(_0x4eddd1,_0x57dafe){return db[_0x6208('0x3f')][_0x6208('0x48')]({'where':{'id':_0x4eddd1[_0x6208('0x49')]['id']}})['then'](handleEntityNotFound(_0x57dafe,null))[_0x6208('0x25')](removeEntity(_0x57dafe,null))[_0x6208('0x45')](handleError(_0x57dafe,null));};exports[_0x6208('0x4a')]=function(_0x1b31aa,_0x57bf5c,_0x59dd04){var _0xc49e3e={};var _0xb8390b={};var _0x2a0b1c;var _0x269e32;return db[_0x6208('0x3f')]['findOne']({'where':{'id':_0x1b31aa[_0x6208('0x49')]['id']}})[_0x6208('0x25')](handleEntityNotFound(_0x57bf5c,null))[_0x6208('0x25')](function(_0x13f760){if(_0x13f760){_0x2a0b1c=_0x13f760;_0xb8390b[_0x6208('0x31')]=_[_0x6208('0x2f')](db[_0x6208('0x4b')]['rawAttributes']);_0xb8390b[_0x6208('0x2e')]=_[_0x6208('0x2f')](_0x1b31aa[_0x6208('0x2e')]);_0xb8390b[_0x6208('0x30')]=_[_0x6208('0x44')](_0xb8390b[_0x6208('0x31')],_0xb8390b[_0x6208('0x2e')]);_0xc49e3e[_0x6208('0x32')]=_['intersection'](_0xb8390b['model'],qs[_0x6208('0x33')](_0x1b31aa['query'][_0x6208('0x33')]));_0xc49e3e[_0x6208('0x32')]=_0xc49e3e[_0x6208('0x32')][_0x6208('0x34')]?_0xc49e3e[_0x6208('0x32')]:_0xb8390b['model'];_0xc49e3e[_0x6208('0x4c')]=qs['sort'](_0x1b31aa['query'][_0x6208('0x37')]);_0xc49e3e[_0x6208('0x38')]=qs[_0x6208('0x30')](_[_0x6208('0x39')](_0x1b31aa[_0x6208('0x2e')],_0xb8390b[_0x6208('0x30')]));if(_0x1b31aa[_0x6208('0x2e')]['filter']){_0xc49e3e[_0x6208('0x38')]=_[_0x6208('0x3d')](_0xc49e3e[_0x6208('0x38')],{'$or':_['map'](_0xc49e3e[_0x6208('0x32')],function(_0x34dec6){var _0x387553={};_0x387553[_0x34dec6]={'$like':'%'+_0x1b31aa[_0x6208('0x2e')]['filter']+'%'};return _0x387553;})});}_0xc49e3e=_[_0x6208('0x3d')]({},_0xc49e3e,_0x1b31aa[_0x6208('0x3e')]);return _0x2a0b1c['getFields'](_0xc49e3e);}})[_0x6208('0x25')](function(_0x428c4e){if(_0x428c4e){_0x269e32=_0x428c4e['length'];if(!_0x1b31aa[_0x6208('0x2e')][_0x6208('0x35')](_0x6208('0x36'))){_0xc49e3e[_0x6208('0x1f')]=qs[_0x6208('0x1f')](_0x1b31aa[_0x6208('0x2e')]['limit']);_0xc49e3e[_0x6208('0x1c')]=qs[_0x6208('0x1c')](_0x1b31aa['query'][_0x6208('0x1c')]);}return _0x2a0b1c[_0x6208('0x4a')](_0xc49e3e);}})['then'](function(_0x559f94){if(_0x559f94){return _0x559f94?{'count':_0x269e32,'rows':_0x559f94}:null;}})[_0x6208('0x25')](respondWithResult(_0x57bf5c,null))[_0x6208('0x45')](handleError(_0x57bf5c,null));};exports[_0x6208('0x4d')]=function(_0xad3d90,_0x3cc07c,_0x1fa553){var _0x2bc5e5={};var _0xe41940={};var _0x45c797;var _0x1ce10a;return db['SalesforceConfiguration']['findOne']({'where':{'id':_0xad3d90['params']['id']}})['then'](handleEntityNotFound(_0x3cc07c,null))[_0x6208('0x25')](function(_0x1b65c1){if(_0x1b65c1){_0x45c797=_0x1b65c1;_0xe41940[_0x6208('0x31')]=_[_0x6208('0x2f')](db[_0x6208('0x4b')][_0x6208('0x2c')]);_0xe41940[_0x6208('0x2e')]=_['keys'](_0xad3d90['query']);_0xe41940[_0x6208('0x30')]=_[_0x6208('0x44')](_0xe41940[_0x6208('0x31')],_0xe41940[_0x6208('0x2e')]);_0x2bc5e5[_0x6208('0x32')]=_[_0x6208('0x44')](_0xe41940[_0x6208('0x31')],qs[_0x6208('0x33')](_0xad3d90['query'][_0x6208('0x33')]));_0x2bc5e5[_0x6208('0x32')]=_0x2bc5e5[_0x6208('0x32')][_0x6208('0x34')]?_0x2bc5e5[_0x6208('0x32')]:_0xe41940[_0x6208('0x31')];_0x2bc5e5['order']=qs[_0x6208('0x37')](_0xad3d90['query'][_0x6208('0x37')]);_0x2bc5e5[_0x6208('0x38')]=qs[_0x6208('0x30')](_[_0x6208('0x39')](_0xad3d90[_0x6208('0x2e')],_0xe41940[_0x6208('0x30')]));if(_0xad3d90[_0x6208('0x2e')][_0x6208('0x3a')]){_0x2bc5e5[_0x6208('0x38')]=_[_0x6208('0x3d')](_0x2bc5e5[_0x6208('0x38')],{'$or':_[_0x6208('0x2b')](_0x2bc5e5[_0x6208('0x32')],function(_0x3dc6b1){var _0x1ab188={};_0x1ab188[_0x3dc6b1]={'$like':'%'+_0xad3d90[_0x6208('0x2e')][_0x6208('0x3a')]+'%'};return _0x1ab188;})});}_0x2bc5e5=_['merge']({},_0x2bc5e5,_0xad3d90[_0x6208('0x3e')]);return _0x45c797[_0x6208('0x4d')](_0x2bc5e5);}})[_0x6208('0x25')](function(_0x33a387){if(_0x33a387){_0x1ce10a=_0x33a387[_0x6208('0x34')];if(!_0xad3d90[_0x6208('0x2e')][_0x6208('0x35')](_0x6208('0x36'))){_0x2bc5e5[_0x6208('0x1f')]=qs[_0x6208('0x1f')](_0xad3d90[_0x6208('0x2e')][_0x6208('0x1f')]);_0x2bc5e5['offset']=qs['offset'](_0xad3d90[_0x6208('0x2e')]['offset']);}return _0x45c797[_0x6208('0x4d')](_0x2bc5e5);}})[_0x6208('0x25')](function(_0x437c19){if(_0x437c19){return _0x437c19?{'count':_0x1ce10a,'rows':_0x437c19}:null;}})[_0x6208('0x25')](respondWithResult(_0x3cc07c,null))['catch'](handleError(_0x3cc07c,null));};exports[_0x6208('0x4e')]=function(_0x16df84,_0x48436f,_0x27a374){var _0x3634f2={};var _0x2b02fc={};var _0x3cb60b;var _0x52fc53;return db[_0x6208('0x3f')][_0x6208('0x4f')]({'where':{'id':_0x16df84[_0x6208('0x49')]['id']}})['then'](handleEntityNotFound(_0x48436f,null))[_0x6208('0x25')](function(_0xd68633){if(_0xd68633){_0x3cb60b=_0xd68633;_0x2b02fc[_0x6208('0x31')]=_[_0x6208('0x2f')](db[_0x6208('0x4b')][_0x6208('0x2c')]);_0x2b02fc[_0x6208('0x2e')]=_[_0x6208('0x2f')](_0x16df84[_0x6208('0x2e')]);_0x2b02fc[_0x6208('0x30')]=_[_0x6208('0x44')](_0x2b02fc[_0x6208('0x31')],_0x2b02fc['query']);_0x3634f2[_0x6208('0x32')]=_[_0x6208('0x44')](_0x2b02fc[_0x6208('0x31')],qs[_0x6208('0x33')](_0x16df84['query']['fields']));_0x3634f2[_0x6208('0x32')]=_0x3634f2['attributes'][_0x6208('0x34')]?_0x3634f2[_0x6208('0x32')]:_0x2b02fc['model'];_0x3634f2['order']=qs[_0x6208('0x37')](_0x16df84['query']['sort']);_0x3634f2[_0x6208('0x38')]=qs[_0x6208('0x30')](_[_0x6208('0x39')](_0x16df84[_0x6208('0x2e')],_0x2b02fc[_0x6208('0x30')]));if(_0x16df84[_0x6208('0x2e')][_0x6208('0x3a')]){_0x3634f2[_0x6208('0x38')]=_['merge'](_0x3634f2['where'],{'$or':_[_0x6208('0x2b')](_0x3634f2[_0x6208('0x32')],function(_0x7ba321){var _0x4c3835={};_0x4c3835[_0x7ba321]={'$like':'%'+_0x16df84[_0x6208('0x2e')]['filter']+'%'};return _0x4c3835;})});}_0x3634f2=_[_0x6208('0x3d')]({},_0x3634f2,_0x16df84['options']);return _0x3cb60b[_0x6208('0x4e')](_0x3634f2);}})[_0x6208('0x25')](function(_0x3cdb04){if(_0x3cdb04){_0x52fc53=_0x3cdb04[_0x6208('0x34')];if(!_0x16df84[_0x6208('0x2e')][_0x6208('0x35')](_0x6208('0x36'))){_0x3634f2['limit']=qs[_0x6208('0x1f')](_0x16df84['query'][_0x6208('0x1f')]);_0x3634f2[_0x6208('0x1c')]=qs[_0x6208('0x1c')](_0x16df84[_0x6208('0x2e')]['offset']);}return _0x3cb60b['getDescriptions'](_0x3634f2);}})[_0x6208('0x25')](function(_0xf89814){if(_0xf89814){return _0xf89814?{'count':_0x52fc53,'rows':_0xf89814}:null;}})['then'](respondWithResult(_0x48436f,null))['catch'](handleError(_0x48436f,null));};
\ No newline at end of file
index 312eb08..f9053af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c0a=['util','../../config/logger','api','moment','request-promise','path','rimraf','./intSalesforceConfiguration.attributes','exports','SalesforceConfiguration','int_salesforce_configurations'];(function(_0x195a62,_0x2fdf54){var _0x2ba177=function(_0x113776){while(--_0x113776){_0x195a62['push'](_0x195a62['shift']());}};_0x2ba177(++_0x2fdf54);}(_0x1c0a,0x14a));var _0xa1c0=function(_0xa78054,_0x249d2a){_0xa78054=_0xa78054-0x0;var _0x3b6bcd=_0x1c0a[_0xa78054];return _0x3b6bcd;};'use strict';var _=require('lodash');var util=require(_0xa1c0('0x0'));var logger=require(_0xa1c0('0x1'))(_0xa1c0('0x2'));var moment=require(_0xa1c0('0x3'));var BPromise=require('bluebird');var rp=require(_0xa1c0('0x4'));var fs=require('fs');var path=require(_0xa1c0('0x5'));var rimraf=require(_0xa1c0('0x6'));var config=require('../../config/environment');var attributes=require(_0xa1c0('0x7'));module[_0xa1c0('0x8')]=function(_0x175a0b,_0x16010c){return _0x175a0b['define'](_0xa1c0('0x9'),attributes,{'tableName':_0xa1c0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbea7=['exports','int_salesforce_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intSalesforceConfiguration.attributes'];(function(_0x4ed520,_0x21be63){var _0x4415a6=function(_0x14b151){while(--_0x14b151){_0x4ed520['push'](_0x4ed520['shift']());}};_0x4415a6(++_0x21be63);}(_0xbea7,0x16a));var _0x7bea=function(_0x49ef98,_0x31ac68){_0x49ef98=_0x49ef98-0x0;var _0x5683fd=_0xbea7[_0x49ef98];return _0x5683fd;};'use strict';var _=require(_0x7bea('0x0'));var util=require(_0x7bea('0x1'));var logger=require(_0x7bea('0x2'))(_0x7bea('0x3'));var moment=require(_0x7bea('0x4'));var BPromise=require(_0x7bea('0x5'));var rp=require(_0x7bea('0x6'));var fs=require('fs');var path=require(_0x7bea('0x7'));var rimraf=require('rimraf');var config=require(_0x7bea('0x8'));var attributes=require(_0x7bea('0x9'));module[_0x7bea('0xa')]=function(_0x250ce8,_0x42e672){return _0x250ce8['define']('SalesforceConfiguration',attributes,{'tableName':_0x7bea('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7cadcdc..308d765 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd475=['ioredis','../../config/utils','rpc','../../config/environment','client','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','lodash','util','moment','bluebird','randomstring'];(function(_0x2c28aa,_0x16c729){var _0x3c6add=function(_0x758171){while(--_0x758171){_0x2c28aa['push'](_0x2c28aa['shift']());}};_0x3c6add(++_0x16c729);}(_0xd475,0x119));var _0x5d47=function(_0xfb4146,_0x4693ee){_0xfb4146=_0xfb4146-0x0;var _0x25ffb8=_0xd475[_0xfb4146];return _0x25ffb8;};'use strict';var _=require(_0x5d47('0x0'));var util=require(_0x5d47('0x1'));var moment=require(_0x5d47('0x2'));var BPromise=require(_0x5d47('0x3'));var rs=require(_0x5d47('0x4'));var fs=require('fs');var Redis=require(_0x5d47('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5d47('0x6'));var logger=require('../../config/logger')(_0x5d47('0x7'));var config=require(_0x5d47('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x5d47('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x22153b,_0x16fbf4,_0x5e1a2f){return new BPromise(function(_0x3fedad,_0x1a17cb){return client[_0x5d47('0xa')](_0x22153b,_0x5e1a2f)[_0x5d47('0xb')](function(_0x20a610){logger[_0x5d47('0xc')](_0x5d47('0xd'),_0x16fbf4,'request\x20sent');logger[_0x5d47('0xe')](_0x5d47('0xf'),_0x16fbf4,'request\x20sent',JSON[_0x5d47('0x10')](_0x20a610));if(_0x20a610[_0x5d47('0x11')]){if(_0x20a610[_0x5d47('0x11')][_0x5d47('0x12')]===0x1f4){logger['error'](_0x5d47('0xd'),_0x16fbf4,_0x20a610[_0x5d47('0x11')][_0x5d47('0x13')]);return _0x1a17cb(_0x20a610[_0x5d47('0x11')][_0x5d47('0x13')]);}logger[_0x5d47('0x11')](_0x5d47('0xd'),_0x16fbf4,_0x20a610[_0x5d47('0x11')]['message']);return _0x3fedad(_0x20a610[_0x5d47('0x11')][_0x5d47('0x13')]);}else{logger['info'](_0x5d47('0xd'),_0x16fbf4,_0x5d47('0x14'));_0x3fedad(_0x20a610[_0x5d47('0x15')]['message']);}})['catch'](function(_0x1fcd7c){logger[_0x5d47('0x11')](_0x5d47('0xd'),_0x16fbf4,_0x1fcd7c);_0x1a17cb(_0x1fcd7c);});});}
\ No newline at end of file
+var _0x7cf7=['result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent'];(function(_0x44c208,_0x7af421){var _0x278179=function(_0xf5fb13){while(--_0xf5fb13){_0x44c208['push'](_0x44c208['shift']());}};_0x278179(++_0x7af421);}(_0x7cf7,0x1e5));var _0x77cf=function(_0x6f96b6,_0x583f3b){_0x6f96b6=_0x6f96b6-0x0;var _0x39e017=_0x7cf7[_0x6f96b6];return _0x39e017;};'use strict';var _=require(_0x77cf('0x0'));var util=require(_0x77cf('0x1'));var moment=require(_0x77cf('0x2'));var BPromise=require(_0x77cf('0x3'));var rs=require(_0x77cf('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x77cf('0x5'))['db'];var utils=require(_0x77cf('0x6'));var logger=require(_0x77cf('0x7'))(_0x77cf('0x8'));var config=require('../../config/environment');var jayson=require(_0x77cf('0x9'));var client=jayson[_0x77cf('0xa')][_0x77cf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xa61a02,_0x2ac9e9,_0x40f034){return new BPromise(function(_0x3e296a,_0x2f7727){return client[_0x77cf('0xc')](_0xa61a02,_0x40f034)[_0x77cf('0xd')](function(_0x1cef61){logger[_0x77cf('0xe')](_0x77cf('0xf'),_0x2ac9e9,'request\x20sent');logger['debug'](_0x77cf('0x10'),_0x2ac9e9,'request\x20sent',JSON['stringify'](_0x1cef61));if(_0x1cef61[_0x77cf('0x11')]){if(_0x1cef61[_0x77cf('0x11')][_0x77cf('0x12')]===0x1f4){logger[_0x77cf('0x11')]('SalesforceConfiguration,\x20%s,\x20%s',_0x2ac9e9,_0x1cef61[_0x77cf('0x11')][_0x77cf('0x13')]);return _0x2f7727(_0x1cef61[_0x77cf('0x11')]['message']);}logger[_0x77cf('0x11')](_0x77cf('0xf'),_0x2ac9e9,_0x1cef61[_0x77cf('0x11')][_0x77cf('0x13')]);return _0x3e296a(_0x1cef61[_0x77cf('0x11')][_0x77cf('0x13')]);}else{logger['info'](_0x77cf('0xf'),_0x2ac9e9,_0x77cf('0x14'));_0x3e296a(_0x1cef61[_0x77cf('0x15')][_0x77cf('0x13')]);}})['catch'](function(_0x52e6b1){logger['error'](_0x77cf('0xf'),_0x2ac9e9,_0x52e6b1);_0x2f7727(_0x52e6b1);});});}
\ No newline at end of file
index 8353c00..b342691 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9f2=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','show','post','create','put','/:id','update'];(function(_0x232a65,_0xa30fa5){var _0x33b256=function(_0x409f2c){while(--_0x409f2c){_0x232a65['push'](_0x232a65['shift']());}};_0x33b256(++_0xa30fa5);}(_0xd9f2,0xc1));var _0x2d9f=function(_0xdae9ac,_0x18324e){_0xdae9ac=_0xdae9ac-0x0;var _0x515ccc=_0xd9f2[_0xdae9ac];return _0x515ccc;};'use strict';var multer=require(_0x2d9f('0x0'));var util=require(_0x2d9f('0x1'));var path=require(_0x2d9f('0x2'));var timeout=require(_0x2d9f('0x3'));var express=require(_0x2d9f('0x4'));var router=express[_0x2d9f('0x5')]();var fs_extra=require(_0x2d9f('0x6'));var auth=require(_0x2d9f('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intSalesforceField.controller');router[_0x2d9f('0x8')]('/',auth[_0x2d9f('0x9')](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller[_0x2d9f('0xa')]);router[_0x2d9f('0xb')]('/',auth['isAuthenticated'](),controller[_0x2d9f('0xc')]);router[_0x2d9f('0xd')](_0x2d9f('0xe'),auth[_0x2d9f('0x9')](),controller[_0x2d9f('0xf')]);router[_0x2d9f('0x10')]('/:id',auth[_0x2d9f('0x9')](),controller[_0x2d9f('0x11')]);module[_0x2d9f('0x12')]=router;
\ No newline at end of file
+var _0x6cb7=['../../components/interaction/service','get','index','/:id','isAuthenticated','show','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x5de84a,_0x4b82cb){var _0x46137c=function(_0x257b48){while(--_0x257b48){_0x5de84a['push'](_0x5de84a['shift']());}};_0x46137c(++_0x4b82cb);}(_0x6cb7,0x9b));var _0x76cb=function(_0x483761,_0x4abff8){_0x483761=_0x483761-0x0;var _0x531f98=_0x6cb7[_0x483761];return _0x531f98;};'use strict';var multer=require(_0x76cb('0x0'));var util=require(_0x76cb('0x1'));var path=require(_0x76cb('0x2'));var timeout=require(_0x76cb('0x3'));var express=require('express');var router=express[_0x76cb('0x4')]();var fs_extra=require(_0x76cb('0x5'));var auth=require(_0x76cb('0x6'));var interaction=require(_0x76cb('0x7'));var config=require('../../config/environment');var controller=require('./intSalesforceField.controller');router[_0x76cb('0x8')]('/',auth['isAuthenticated'](),controller[_0x76cb('0x9')]);router[_0x76cb('0x8')](_0x76cb('0xa'),auth[_0x76cb('0xb')](),controller[_0x76cb('0xc')]);router['post']('/',auth[_0x76cb('0xb')](),controller[_0x76cb('0xd')]);router['put'](_0x76cb('0xa'),auth[_0x76cb('0xb')](),controller[_0x76cb('0xe')]);router[_0x76cb('0xf')](_0x76cb('0xa'),auth[_0x76cb('0xb')](),controller[_0x76cb('0x10')]);module[_0x76cb('0x11')]=router;
\ No newline at end of file
index 3587230..a98db9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43f0=['string','STRING','customVariable','sequelize','ENUM','variable','keyValue','picklist'];(function(_0x5a6961,_0xd41ca6){var _0x4af0a6=function(_0x1201fe){while(--_0x1201fe){_0x5a6961['push'](_0x5a6961['shift']());}};_0x4af0a6(++_0xd41ca6);}(_0x43f0,0x12b));var _0x043f=function(_0x57b570,_0x4bbbc5){_0x57b570=_0x57b570-0x0;var _0x5ca60c=_0x43f0[_0x57b570];return _0x5ca60c;};'use strict';var Sequelize=require(_0x043f('0x0'));module['exports']={'type':{'type':Sequelize[_0x043f('0x1')]('string',_0x043f('0x2'),'customVariable',_0x043f('0x3'),_0x043f('0x4')),'defaultValue':_0x043f('0x5')},'content':{'type':Sequelize[_0x043f('0x6')]},'key':{'type':Sequelize[_0x043f('0x6')]},'keyType':{'type':Sequelize[_0x043f('0x1')](_0x043f('0x5'),'variable',_0x043f('0x7'))},'keyContent':{'type':Sequelize[_0x043f('0x6')]},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize[_0x043f('0x6')]}};
\ No newline at end of file
+var _0x5828=['ENUM','variable','keyValue','picklist','string','STRING','customVariable','sequelize','exports'];(function(_0x50c492,_0x5c1e67){var _0x3505a8=function(_0x2f7937){while(--_0x2f7937){_0x50c492['push'](_0x50c492['shift']());}};_0x3505a8(++_0x5c1e67);}(_0x5828,0xa0));var _0x8582=function(_0x11dd13,_0x45d34d){_0x11dd13=_0x11dd13-0x0;var _0x58e5d8=_0x5828[_0x11dd13];return _0x58e5d8;};'use strict';var Sequelize=require(_0x8582('0x0'));module[_0x8582('0x1')]={'type':{'type':Sequelize[_0x8582('0x2')]('string',_0x8582('0x3'),'customVariable',_0x8582('0x4'),_0x8582('0x5')),'defaultValue':_0x8582('0x6')},'content':{'type':Sequelize[_0x8582('0x7')]},'key':{'type':Sequelize[_0x8582('0x7')]},'keyType':{'type':Sequelize[_0x8582('0x2')](_0x8582('0x6'),_0x8582('0x3'),_0x8582('0x8'))},'keyContent':{'type':Sequelize[_0x8582('0x7')]},'idField':{'type':Sequelize[_0x8582('0x7')]},'variableName':{'type':Sequelize[_0x8582('0x7')]}};
\ No newline at end of file
index 6a3c9f6..3c6da5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1df0=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','stack','send','index','SalesforceField','fieldName','type','key','model','map','name','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','rawAttributes','catch','create','body','find','fast-json-patch','request-promise','moment'];(function(_0x465c7f,_0x2403ba){var _0x2c9152=function(_0x4fce5f){while(--_0x4fce5f){_0x465c7f['push'](_0x465c7f['shift']());}};_0x2c9152(++_0x2403ba);}(_0x1df0,0x1b3));var _0x01df=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x1df0[_0x432682];return _0x463d05;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x01df('0x0'));var rp=require(_0x01df('0x1'));var moment=require(_0x01df('0x2'));var BPromise=require(_0x01df('0x3'));var Mustache=require(_0x01df('0x4'));var util=require(_0x01df('0x5'));var path=require(_0x01df('0x6'));var sox=require(_0x01df('0x7'));var csv=require(_0x01df('0x8'));var ejs=require(_0x01df('0x9'));var fs=require('fs');var fs_extra=require(_0x01df('0xa'));var _=require(_0x01df('0xb'));var squel=require(_0x01df('0xc'));var crypto=require(_0x01df('0xd'));var jsforce=require(_0x01df('0xe'));var deskjs=require(_0x01df('0xf'));var toCsv=require(_0x01df('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x01df('0x10'));var authService=require(_0x01df('0x11'));var qs=require(_0x01df('0x12'));var as=require(_0x01df('0x13'));var hardwareService=require(_0x01df('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x01df('0x15'));var licenseUtil=require(_0x01df('0x16'));var db=require(_0x01df('0x17'))['db'];function respondWithStatusCode(_0x30b28a,_0x452096){_0x452096=_0x452096||0xcc;return function(_0x4fee1e){if(_0x4fee1e){return _0x30b28a[_0x01df('0x18')](_0x452096);}return _0x30b28a[_0x01df('0x19')](_0x452096)[_0x01df('0x1a')]();};}function respondWithResult(_0x48a199,_0x3d84c2){_0x3d84c2=_0x3d84c2||0xc8;return function(_0x3f70a5){if(_0x3f70a5){return _0x48a199[_0x01df('0x19')](_0x3d84c2)[_0x01df('0x1b')](_0x3f70a5);}};}function respondWithFilteredResult(_0x426b83,_0x22d760){return function(_0x15d710){if(_0x15d710){var _0x6b613=typeof _0x22d760[_0x01df('0x1c')]===_0x01df('0x1d')&&typeof _0x22d760[_0x01df('0x1e')]===_0x01df('0x1d');var _0x5cf493=_0x15d710[_0x01df('0x1f')];var _0x201e13=_0x6b613?0x0:_0x22d760[_0x01df('0x1c')];var _0x40494a=_0x6b613?_0x15d710[_0x01df('0x1f')]:_0x22d760[_0x01df('0x1c')]+_0x22d760[_0x01df('0x1e')];var _0x114d93;if(_0x40494a>=_0x5cf493){_0x40494a=_0x5cf493;_0x114d93=0xc8;}else{_0x114d93=0xce;}_0x426b83[_0x01df('0x19')](_0x114d93);return _0x426b83[_0x01df('0x20')](_0x01df('0x21'),_0x201e13+'-'+_0x40494a+'/'+_0x5cf493)['json'](_0x15d710);}return null;};}function patchUpdates(_0x571222){return function(_0x58d9da){try{jsonpatch[_0x01df('0x22')](_0x58d9da,_0x571222,!![]);}catch(_0x153928){return BPromise['reject'](_0x153928);}return _0x58d9da['save']();};}function saveUpdates(_0x15bc0d,_0x522ba6){return function(_0x469887){if(_0x469887){return _0x469887[_0x01df('0x23')](_0x15bc0d)[_0x01df('0x24')](function(_0x1a314c){return _0x1a314c;});}return null;};}function removeEntity(_0x275e64,_0x28bcfd){return function(_0x1ec9f2){if(_0x1ec9f2){return _0x1ec9f2[_0x01df('0x25')]()[_0x01df('0x24')](function(){_0x275e64[_0x01df('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41ef9b,_0x5ef9f2){return function(_0x696357){if(!_0x696357){_0x41ef9b[_0x01df('0x18')](0x194);}return _0x696357;};}function handleError(_0x143cfc,_0x4328f6){_0x4328f6=_0x4328f6||0x1f4;return function(_0x332fab){logger['error'](_0x332fab[_0x01df('0x26')]);if(_0x332fab['name']){delete _0x332fab['name'];}_0x143cfc['status'](_0x4328f6)[_0x01df('0x27')](_0x332fab);};}exports[_0x01df('0x28')]=function(_0x40b7df,_0x4dbb8d){var _0x33484a={},_0x1356c0={},_0x2df784={'count':0x0,'rows':[]};var _0x5eeb28=_['map'](db[_0x01df('0x29')]['rawAttributes'],function(_0x27ce45){return{'name':_0x27ce45[_0x01df('0x2a')],'type':_0x27ce45[_0x01df('0x2b')][_0x01df('0x2c')]};});_0x1356c0[_0x01df('0x2d')]=_[_0x01df('0x2e')](_0x5eeb28,_0x01df('0x2f'));_0x1356c0[_0x01df('0x30')]=_[_0x01df('0x31')](_0x40b7df[_0x01df('0x30')]);_0x1356c0[_0x01df('0x32')]=_['intersection'](_0x1356c0['model'],_0x1356c0[_0x01df('0x30')]);_0x33484a[_0x01df('0x33')]=_[_0x01df('0x34')](_0x1356c0[_0x01df('0x2d')],qs[_0x01df('0x35')](_0x40b7df[_0x01df('0x30')]['fields']));_0x33484a[_0x01df('0x33')]=_0x33484a[_0x01df('0x33')][_0x01df('0x36')]?_0x33484a['attributes']:_0x1356c0[_0x01df('0x2d')];if(!_0x40b7df[_0x01df('0x30')][_0x01df('0x37')](_0x01df('0x38'))){_0x33484a['limit']=qs[_0x01df('0x1e')](_0x40b7df['query'][_0x01df('0x1e')]);_0x33484a[_0x01df('0x1c')]=qs['offset'](_0x40b7df[_0x01df('0x30')][_0x01df('0x1c')]);}_0x33484a['order']=qs['sort'](_0x40b7df[_0x01df('0x30')]['sort']);_0x33484a[_0x01df('0x39')]=qs['filters'](_[_0x01df('0x3a')](_0x40b7df['query'],_0x1356c0[_0x01df('0x32')]),_0x5eeb28);if(_0x40b7df[_0x01df('0x30')][_0x01df('0x3b')]){_0x33484a[_0x01df('0x39')]=_[_0x01df('0x3c')](_0x33484a[_0x01df('0x39')],{'$or':_[_0x01df('0x2e')](_0x5eeb28,function(_0xe84db5){if(_0xe84db5['type']!==_0x01df('0x3d')){var _0x1aef00={};_0x1aef00[_0xe84db5[_0x01df('0x2f')]]={'$like':'%'+_0x40b7df[_0x01df('0x30')]['filter']+'%'};return _0x1aef00;}})});}_0x33484a=_[_0x01df('0x3c')]({},_0x33484a,_0x40b7df['options']);var _0x48ff51={'where':_0x33484a[_0x01df('0x39')]};return db[_0x01df('0x29')]['count'](_0x48ff51)[_0x01df('0x24')](function(_0x453f6f){_0x2df784[_0x01df('0x1f')]=_0x453f6f;if(_0x40b7df[_0x01df('0x30')][_0x01df('0x3e')]){_0x33484a[_0x01df('0x3f')]=[{'all':!![]}];}return db['SalesforceField'][_0x01df('0x40')](_0x33484a);})['then'](function(_0xeefbce){_0x2df784[_0x01df('0x41')]=_0xeefbce;return _0x2df784;})[_0x01df('0x24')](respondWithFilteredResult(_0x4dbb8d,_0x33484a))['catch'](handleError(_0x4dbb8d,null));};exports[_0x01df('0x42')]=function(_0x3a1305,_0xe27735){var _0x4750dd={'raw':!![],'where':{'id':_0x3a1305[_0x01df('0x43')]['id']}},_0x479de0={};_0x479de0[_0x01df('0x2d')]=_[_0x01df('0x31')](db[_0x01df('0x29')][_0x01df('0x44')]);_0x479de0['query']=_[_0x01df('0x31')](_0x3a1305[_0x01df('0x30')]);_0x479de0[_0x01df('0x32')]=_[_0x01df('0x34')](_0x479de0[_0x01df('0x2d')],_0x479de0['query']);_0x4750dd[_0x01df('0x33')]=_['intersection'](_0x479de0[_0x01df('0x2d')],qs[_0x01df('0x35')](_0x3a1305['query'][_0x01df('0x35')]));_0x4750dd[_0x01df('0x33')]=_0x4750dd['attributes'][_0x01df('0x36')]?_0x4750dd[_0x01df('0x33')]:_0x479de0['model'];if(_0x3a1305['query'][_0x01df('0x3e')]){_0x4750dd[_0x01df('0x3f')]=[{'all':!![]}];}_0x4750dd=_['merge']({},_0x4750dd,_0x3a1305['options']);return db[_0x01df('0x29')]['find'](_0x4750dd)[_0x01df('0x24')](handleEntityNotFound(_0xe27735,null))['then'](respondWithResult(_0xe27735,null))[_0x01df('0x45')](handleError(_0xe27735,null));};exports[_0x01df('0x46')]=function(_0xd0c947,_0x58d3b8){return db['SalesforceField'][_0x01df('0x46')](_0xd0c947[_0x01df('0x47')],{})[_0x01df('0x24')](respondWithResult(_0x58d3b8,0xc9))[_0x01df('0x45')](handleError(_0x58d3b8,null));};exports[_0x01df('0x23')]=function(_0x1fd5c5,_0x434cf5){if(_0x1fd5c5[_0x01df('0x47')]['id']){delete _0x1fd5c5[_0x01df('0x47')]['id'];}return db[_0x01df('0x29')]['find']({'where':{'id':_0x1fd5c5[_0x01df('0x43')]['id']}})[_0x01df('0x24')](handleEntityNotFound(_0x434cf5,null))['then'](saveUpdates(_0x1fd5c5['body'],null))[_0x01df('0x24')](respondWithResult(_0x434cf5,null))[_0x01df('0x45')](handleError(_0x434cf5,null));};exports[_0x01df('0x25')]=function(_0x1459ed,_0x40ea6f){return db['SalesforceField'][_0x01df('0x48')]({'where':{'id':_0x1459ed['params']['id']}})['then'](handleEntityNotFound(_0x40ea6f,null))[_0x01df('0x24')](removeEntity(_0x40ea6f,null))[_0x01df('0x45')](handleError(_0x40ea6f,null));};
\ No newline at end of file
+var _0x5df8=['crypto','jsforce','to-csv','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','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','map','SalesforceField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','include','rows','catch','show','fields','includeAll','options','create','body','params','destroy','find','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','fs-extra','squel'];(function(_0x150ae0,_0x17b63e){var _0x325074=function(_0x50c633){while(--_0x50c633){_0x150ae0['push'](_0x150ae0['shift']());}};_0x325074(++_0x17b63e);}(_0x5df8,0x8f));var _0x85df=function(_0x207151,_0x200b3c){_0x207151=_0x207151-0x0;var _0x2e21f2=_0x5df8[_0x207151];return _0x2e21f2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x85df('0x0'));var zipdir=require(_0x85df('0x1'));var jsonpatch=require(_0x85df('0x2'));var rp=require(_0x85df('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x85df('0x4'));var util=require('util');var path=require(_0x85df('0x5'));var sox=require(_0x85df('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x85df('0x7'));var _=require('lodash');var squel=require(_0x85df('0x8'));var crypto=require(_0x85df('0x9'));var jsforce=require(_0x85df('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x85df('0xb'));var querystring=require(_0x85df('0xc'));var Papa=require(_0x85df('0xd'));var Redis=require(_0x85df('0xe'));var authService=require(_0x85df('0xf'));var qs=require(_0x85df('0x10'));var as=require(_0x85df('0x11'));var hardwareService=require(_0x85df('0x12'));var logger=require(_0x85df('0x13'))(_0x85df('0x14'));var utils=require(_0x85df('0x15'));var config=require(_0x85df('0x16'));var licenseUtil=require(_0x85df('0x17'));var db=require(_0x85df('0x18'))['db'];function respondWithStatusCode(_0x417c35,_0x51a91a){_0x51a91a=_0x51a91a||0xcc;return function(_0x417b7f){if(_0x417b7f){return _0x417c35[_0x85df('0x19')](_0x51a91a);}return _0x417c35[_0x85df('0x1a')](_0x51a91a)[_0x85df('0x1b')]();};}function respondWithResult(_0x34af0e,_0x32edb2){_0x32edb2=_0x32edb2||0xc8;return function(_0x4a935c){if(_0x4a935c){return _0x34af0e[_0x85df('0x1a')](_0x32edb2)['json'](_0x4a935c);}};}function respondWithFilteredResult(_0x24d434,_0x5496ff){return function(_0x468437){if(_0x468437){var _0x24a1fd=typeof _0x5496ff['offset']==='undefined'&&typeof _0x5496ff[_0x85df('0x1c')]===_0x85df('0x1d');var _0x1df3e6=_0x468437[_0x85df('0x1e')];var _0x5b4739=_0x24a1fd?0x0:_0x5496ff['offset'];var _0x3ac8b5=_0x24a1fd?_0x468437[_0x85df('0x1e')]:_0x5496ff[_0x85df('0x1f')]+_0x5496ff[_0x85df('0x1c')];var _0x49046b;if(_0x3ac8b5>=_0x1df3e6){_0x3ac8b5=_0x1df3e6;_0x49046b=0xc8;}else{_0x49046b=0xce;}_0x24d434[_0x85df('0x1a')](_0x49046b);return _0x24d434[_0x85df('0x20')](_0x85df('0x21'),_0x5b4739+'-'+_0x3ac8b5+'/'+_0x1df3e6)['json'](_0x468437);}return null;};}function patchUpdates(_0x1e7659){return function(_0xf67aa3){try{jsonpatch[_0x85df('0x22')](_0xf67aa3,_0x1e7659,!![]);}catch(_0x1c395a){return BPromise[_0x85df('0x23')](_0x1c395a);}return _0xf67aa3[_0x85df('0x24')]();};}function saveUpdates(_0x51894f,_0x66558){return function(_0x2a3e50){if(_0x2a3e50){return _0x2a3e50[_0x85df('0x25')](_0x51894f)[_0x85df('0x26')](function(_0xbc29e6){return _0xbc29e6;});}return null;};}function removeEntity(_0x198232,_0x187485){return function(_0x2a5741){if(_0x2a5741){return _0x2a5741['destroy']()[_0x85df('0x26')](function(){_0x198232['status'](0xcc)[_0x85df('0x1b')]();});}};}function handleEntityNotFound(_0x14e3f5,_0x24a99d){return function(_0x4fcc35){if(!_0x4fcc35){_0x14e3f5[_0x85df('0x19')](0x194);}return _0x4fcc35;};}function handleError(_0x1725f6,_0x270648){_0x270648=_0x270648||0x1f4;return function(_0x3cbbbf){logger[_0x85df('0x27')](_0x3cbbbf[_0x85df('0x28')]);if(_0x3cbbbf[_0x85df('0x29')]){delete _0x3cbbbf[_0x85df('0x29')];}_0x1725f6[_0x85df('0x1a')](_0x270648)[_0x85df('0x2a')](_0x3cbbbf);};}exports['index']=function(_0x4dd3dc,_0x203ab8){var _0x3e4901={},_0x2c03b9={},_0x59166d={'count':0x0,'rows':[]};var _0x1412ac=_[_0x85df('0x2b')](db[_0x85df('0x2c')][_0x85df('0x2d')],function(_0x3a88aa){return{'name':_0x3a88aa[_0x85df('0x2e')],'type':_0x3a88aa[_0x85df('0x2f')][_0x85df('0x30')]};});_0x2c03b9[_0x85df('0x31')]=_[_0x85df('0x2b')](_0x1412ac,_0x85df('0x29'));_0x2c03b9[_0x85df('0x32')]=_[_0x85df('0x33')](_0x4dd3dc[_0x85df('0x32')]);_0x2c03b9[_0x85df('0x34')]=_[_0x85df('0x35')](_0x2c03b9[_0x85df('0x31')],_0x2c03b9['query']);_0x3e4901[_0x85df('0x36')]=_[_0x85df('0x35')](_0x2c03b9[_0x85df('0x31')],qs['fields'](_0x4dd3dc[_0x85df('0x32')]['fields']));_0x3e4901[_0x85df('0x36')]=_0x3e4901[_0x85df('0x36')][_0x85df('0x37')]?_0x3e4901[_0x85df('0x36')]:_0x2c03b9[_0x85df('0x31')];if(!_0x4dd3dc[_0x85df('0x32')]['hasOwnProperty'](_0x85df('0x38'))){_0x3e4901[_0x85df('0x1c')]=qs[_0x85df('0x1c')](_0x4dd3dc[_0x85df('0x32')][_0x85df('0x1c')]);_0x3e4901[_0x85df('0x1f')]=qs[_0x85df('0x1f')](_0x4dd3dc[_0x85df('0x32')]['offset']);}_0x3e4901[_0x85df('0x39')]=qs[_0x85df('0x3a')](_0x4dd3dc[_0x85df('0x32')][_0x85df('0x3a')]);_0x3e4901[_0x85df('0x3b')]=qs[_0x85df('0x34')](_[_0x85df('0x3c')](_0x4dd3dc['query'],_0x2c03b9[_0x85df('0x34')]),_0x1412ac);if(_0x4dd3dc[_0x85df('0x32')][_0x85df('0x3d')]){_0x3e4901[_0x85df('0x3b')]=_['merge'](_0x3e4901[_0x85df('0x3b')],{'$or':_[_0x85df('0x2b')](_0x1412ac,function(_0x151856){if(_0x151856[_0x85df('0x2f')]!==_0x85df('0x3e')){var _0x3bf7a3={};_0x3bf7a3[_0x151856[_0x85df('0x29')]]={'$like':'%'+_0x4dd3dc[_0x85df('0x32')][_0x85df('0x3d')]+'%'};return _0x3bf7a3;}})});}_0x3e4901=_[_0x85df('0x3f')]({},_0x3e4901,_0x4dd3dc['options']);var _0x1e4bd7={'where':_0x3e4901[_0x85df('0x3b')]};return db['SalesforceField'][_0x85df('0x1e')](_0x1e4bd7)['then'](function(_0x2bf4ff){_0x59166d[_0x85df('0x1e')]=_0x2bf4ff;if(_0x4dd3dc['query']['includeAll']){_0x3e4901[_0x85df('0x40')]=[{'all':!![]}];}return db[_0x85df('0x2c')]['findAll'](_0x3e4901);})['then'](function(_0xc64fc5){_0x59166d[_0x85df('0x41')]=_0xc64fc5;return _0x59166d;})[_0x85df('0x26')](respondWithFilteredResult(_0x203ab8,_0x3e4901))[_0x85df('0x42')](handleError(_0x203ab8,null));};exports[_0x85df('0x43')]=function(_0x66dcf4,_0x252abc){var _0x5d9527={'raw':!![],'where':{'id':_0x66dcf4['params']['id']}},_0x10ad43={};_0x10ad43[_0x85df('0x31')]=_['keys'](db['SalesforceField'][_0x85df('0x2d')]);_0x10ad43['query']=_['keys'](_0x66dcf4[_0x85df('0x32')]);_0x10ad43[_0x85df('0x34')]=_['intersection'](_0x10ad43[_0x85df('0x31')],_0x10ad43[_0x85df('0x32')]);_0x5d9527[_0x85df('0x36')]=_[_0x85df('0x35')](_0x10ad43['model'],qs['fields'](_0x66dcf4[_0x85df('0x32')][_0x85df('0x44')]));_0x5d9527[_0x85df('0x36')]=_0x5d9527[_0x85df('0x36')][_0x85df('0x37')]?_0x5d9527[_0x85df('0x36')]:_0x10ad43['model'];if(_0x66dcf4[_0x85df('0x32')][_0x85df('0x45')]){_0x5d9527[_0x85df('0x40')]=[{'all':!![]}];}_0x5d9527=_[_0x85df('0x3f')]({},_0x5d9527,_0x66dcf4[_0x85df('0x46')]);return db[_0x85df('0x2c')]['find'](_0x5d9527)[_0x85df('0x26')](handleEntityNotFound(_0x252abc,null))[_0x85df('0x26')](respondWithResult(_0x252abc,null))[_0x85df('0x42')](handleError(_0x252abc,null));};exports[_0x85df('0x47')]=function(_0xc6dfb9,_0x152a56){return db[_0x85df('0x2c')][_0x85df('0x47')](_0xc6dfb9[_0x85df('0x48')],{})[_0x85df('0x26')](respondWithResult(_0x152a56,0xc9))['catch'](handleError(_0x152a56,null));};exports['update']=function(_0x217976,_0x13c5d4){if(_0x217976[_0x85df('0x48')]['id']){delete _0x217976['body']['id'];}return db[_0x85df('0x2c')]['find']({'where':{'id':_0x217976[_0x85df('0x49')]['id']}})['then'](handleEntityNotFound(_0x13c5d4,null))[_0x85df('0x26')](saveUpdates(_0x217976[_0x85df('0x48')],null))[_0x85df('0x26')](respondWithResult(_0x13c5d4,null))[_0x85df('0x42')](handleError(_0x13c5d4,null));};exports[_0x85df('0x4a')]=function(_0x51e002,_0x9dda5c){return db[_0x85df('0x2c')][_0x85df('0x4b')]({'where':{'id':_0x51e002[_0x85df('0x49')]['id']}})['then'](handleEntityNotFound(_0x9dda5c,null))[_0x85df('0x26')](removeEntity(_0x9dda5c,null))[_0x85df('0x42')](handleError(_0x9dda5c,null));};
\ No newline at end of file
index 25c6756..d7f8d95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d68=['request-promise','rimraf','../../config/environment','./intSalesforceField.attributes','exports','define','SalesforceField','int_salesforce_fields','FieldId','lodash','../../config/logger','api','moment','bluebird'];(function(_0x532032,_0xe04852){var _0x55f9a0=function(_0x4c8ad8){while(--_0x4c8ad8){_0x532032['push'](_0x532032['shift']());}};_0x55f9a0(++_0xe04852);}(_0x5d68,0x6b));var _0x85d6=function(_0x5b6918,_0x2e525f){_0x5b6918=_0x5b6918-0x0;var _0x1fcf0f=_0x5d68[_0x5b6918];return _0x1fcf0f;};'use strict';var _=require(_0x85d6('0x0'));var util=require('util');var logger=require(_0x85d6('0x1'))(_0x85d6('0x2'));var moment=require(_0x85d6('0x3'));var BPromise=require(_0x85d6('0x4'));var rp=require(_0x85d6('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x85d6('0x6'));var config=require(_0x85d6('0x7'));var attributes=require(_0x85d6('0x8'));module[_0x85d6('0x9')]=function(_0x2086dd,_0x5860f2){return _0x2086dd[_0x85d6('0xa')](_0x85d6('0xb'),attributes,{'tableName':_0x85d6('0xc'),'paranoid':![],'indexes':[{'name':'salesforce_unique_index','fields':['idField',_0x85d6('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0bc0=['SalesforceField','int_salesforce_fields','salesforce_unique_index','idField','FieldId','lodash','../../config/logger','api','moment','../../config/environment','exports','define'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x0bc0,0x185));var _0x00bc=function(_0x29105c,_0x1dd29f){_0x29105c=_0x29105c-0x0;var _0x16be8d=_0x0bc0[_0x29105c];return _0x16be8d;};'use strict';var _=require(_0x00bc('0x0'));var util=require('util');var logger=require(_0x00bc('0x1'))(_0x00bc('0x2'));var moment=require(_0x00bc('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x00bc('0x4'));var attributes=require('./intSalesforceField.attributes');module[_0x00bc('0x5')]=function(_0x4c660f,_0x4f2cf0){return _0x4c660f[_0x00bc('0x6')](_0x00bc('0x7'),attributes,{'tableName':_0x00bc('0x8'),'paranoid':![],'indexes':[{'name':_0x00bc('0x9'),'fields':[_0x00bc('0xa'),_0x00bc('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index cf8e812..5687d14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68f9=['error','SalesforceField,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x68f9,0x66));var _0x968f=function(_0x1c376d,_0x4086b5){_0x1c376d=_0x1c376d-0x0;var _0x410951=_0x68f9[_0x1c376d];return _0x410951;};'use strict';var _=require(_0x968f('0x0'));var util=require(_0x968f('0x1'));var moment=require(_0x968f('0x2'));var BPromise=require(_0x968f('0x3'));var rs=require(_0x968f('0x4'));var fs=require('fs');var Redis=require(_0x968f('0x5'));var db=require(_0x968f('0x6'))['db'];var utils=require(_0x968f('0x7'));var logger=require(_0x968f('0x8'))(_0x968f('0x9'));var config=require(_0x968f('0xa'));var jayson=require(_0x968f('0xb'));var client=jayson[_0x968f('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x30ab44,_0x1e6413,_0x3847ba){return new BPromise(function(_0x2a2c9e,_0x59a942){return client[_0x968f('0xd')](_0x30ab44,_0x3847ba)[_0x968f('0xe')](function(_0x5ab1c2){logger['info']('SalesforceField,\x20%s,\x20%s',_0x1e6413,_0x968f('0xf'));logger['debug'](_0x968f('0x10'),_0x1e6413,_0x968f('0xf'),JSON[_0x968f('0x11')](_0x5ab1c2));if(_0x5ab1c2[_0x968f('0x12')]){if(_0x5ab1c2[_0x968f('0x12')]['code']===0x1f4){logger['error'](_0x968f('0x13'),_0x1e6413,_0x5ab1c2[_0x968f('0x12')][_0x968f('0x14')]);return _0x59a942(_0x5ab1c2[_0x968f('0x12')][_0x968f('0x14')]);}logger['error'](_0x968f('0x13'),_0x1e6413,_0x5ab1c2['error'][_0x968f('0x14')]);return _0x2a2c9e(_0x5ab1c2['error'][_0x968f('0x14')]);}else{logger[_0x968f('0x15')](_0x968f('0x13'),_0x1e6413,'request\x20sent');_0x2a2c9e(_0x5ab1c2[_0x968f('0x16')][_0x968f('0x14')]);}})[_0x968f('0x17')](function(_0x240145){logger[_0x968f('0x12')](_0x968f('0x13'),_0x1e6413,_0x240145);_0x59a942(_0x240145);});});}
\ No newline at end of file
+var _0x7b8c=['SalesforceField,\x20%s,\x20%s','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','info'];(function(_0x3f82f1,_0x4736ce){var _0x166acc=function(_0x5e4643){while(--_0x5e4643){_0x3f82f1['push'](_0x3f82f1['shift']());}};_0x166acc(++_0x4736ce);}(_0x7b8c,0x1ca));var _0xc7b8=function(_0x4a40df,_0x2bc615){_0x4a40df=_0x4a40df-0x0;var _0x6fa54d=_0x7b8c[_0x4a40df];return _0x6fa54d;};'use strict';var _=require('lodash');var util=require(_0xc7b8('0x0'));var moment=require(_0xc7b8('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc7b8('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xc7b8('0x3'))('rpc');var config=require(_0xc7b8('0x4'));var jayson=require('jayson/promise');var client=jayson[_0xc7b8('0x5')][_0xc7b8('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x33c565,_0x266392,_0x326ee0){return new BPromise(function(_0x3d0288,_0x4b529f){return client[_0xc7b8('0x7')](_0x33c565,_0x326ee0)[_0xc7b8('0x8')](function(_0x26a2a1){logger[_0xc7b8('0x9')](_0xc7b8('0xa'),_0x266392,_0xc7b8('0xb'));logger['debug'](_0xc7b8('0xc'),_0x266392,'request\x20sent',JSON[_0xc7b8('0xd')](_0x26a2a1));if(_0x26a2a1['error']){if(_0x26a2a1[_0xc7b8('0xe')][_0xc7b8('0xf')]===0x1f4){logger[_0xc7b8('0xe')](_0xc7b8('0xa'),_0x266392,_0x26a2a1[_0xc7b8('0xe')][_0xc7b8('0x10')]);return _0x4b529f(_0x26a2a1[_0xc7b8('0xe')][_0xc7b8('0x10')]);}logger[_0xc7b8('0xe')](_0xc7b8('0xa'),_0x266392,_0x26a2a1[_0xc7b8('0xe')][_0xc7b8('0x10')]);return _0x3d0288(_0x26a2a1[_0xc7b8('0xe')][_0xc7b8('0x10')]);}else{logger[_0xc7b8('0x9')](_0xc7b8('0xa'),_0x266392,_0xc7b8('0xb'));_0x3d0288(_0x26a2a1[_0xc7b8('0x11')][_0xc7b8('0x10')]);}})['catch'](function(_0x463b15){logger['error'](_0xc7b8('0xa'),_0x266392,_0x463b15);_0x4b529f(_0x463b15);});});}
\ No newline at end of file
index 29b98ae..fa50e27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x887e=['../../components/interaction/service','./intServicenowAccount.controller','index','get','show','/:id/configurations','/:id/fields','isAuthenticated','post','create','/:id','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x3ebd94,_0x322e5b){var _0x12a231=function(_0x1e287c){while(--_0x1e287c){_0x3ebd94['push'](_0x3ebd94['shift']());}};_0x12a231(++_0x322e5b);}(_0x887e,0x14d));var _0xe887=function(_0x263d33,_0x337818){_0x263d33=_0x263d33-0x0;var _0x3fa268=_0x887e[_0x263d33];return _0x3fa268;};'use strict';var multer=require(_0xe887('0x0'));var util=require(_0xe887('0x1'));var path=require(_0xe887('0x2'));var timeout=require(_0xe887('0x3'));var express=require(_0xe887('0x4'));var router=express[_0xe887('0x5')]();var fs_extra=require(_0xe887('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xe887('0x7'));var config=require('../../config/environment');var controller=require(_0xe887('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xe887('0x9')]);router[_0xe887('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xe887('0xb')]);router[_0xe887('0xa')](_0xe887('0xc'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0xe887('0xa')](_0xe887('0xd'),auth[_0xe887('0xe')](),controller['getFields']);router[_0xe887('0xf')]('/',auth[_0xe887('0xe')](),controller[_0xe887('0x10')]);router['post'](_0xe887('0xc'),auth[_0xe887('0xe')](),controller['addConfiguration']);router['put'](_0xe887('0x11'),auth[_0xe887('0xe')](),controller[_0xe887('0x12')]);router['delete'](_0xe887('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0xe887('0x13')]=router;
\ No newline at end of file
+var _0x765b=['put','/:id','update','delete','exports','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','show','getConfigurations','post','create','addConfiguration'];(function(_0x34a830,_0x49cf81){var _0x511238=function(_0x594e1a){while(--_0x594e1a){_0x34a830['push'](_0x34a830['shift']());}};_0x511238(++_0x49cf81);}(_0x765b,0x18c));var _0xb765=function(_0x4191af,_0x5783da){_0x4191af=_0x4191af-0x0;var _0x27bebf=_0x765b[_0x4191af];return _0x27bebf;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xb765('0x0'));var express=require('express');var router=express[_0xb765('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xb765('0x2'));var interaction=require(_0xb765('0x3'));var config=require(_0xb765('0x4'));var controller=require('./intServicenowAccount.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xb765('0x5')]('/:id',auth[_0xb765('0x6')](),controller[_0xb765('0x7')]);router[_0xb765('0x5')]('/:id/configurations',auth[_0xb765('0x6')](),controller[_0xb765('0x8')]);router[_0xb765('0x5')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0xb765('0x9')]('/',auth[_0xb765('0x6')](),controller[_0xb765('0xa')]);router[_0xb765('0x9')]('/:id/configurations',auth[_0xb765('0x6')](),controller[_0xb765('0xb')]);router[_0xb765('0xc')](_0xb765('0xd'),auth[_0xb765('0x6')](),controller[_0xb765('0xe')]);router[_0xb765('0xf')](_0xb765('0xd'),auth[_0xb765('0x6')](),controller['destroy']);module[_0xb765('0x10')]=router;
\ No newline at end of file
index 398616d..b1e19d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6447=['sequelize','STRING','remoteUri'];(function(_0x490f1a,_0x4a69ad){var _0x388e32=function(_0x18f37a){while(--_0x18f37a){_0x490f1a['push'](_0x490f1a['shift']());}};_0x388e32(++_0x4a69ad);}(_0x6447,0x1ef));var _0x7644=function(_0x4ce028,_0x526d4b){_0x4ce028=_0x4ce028-0x0;var _0x583d0c=_0x6447[_0x4ce028];return _0x583d0c;};'use strict';var Sequelize=require(_0x7644('0x0'));module['exports']={'name':{'type':Sequelize[_0x7644('0x1')]},'description':{'type':Sequelize[_0x7644('0x1')]},'username':{'type':Sequelize['STRING'],'unique':'username'},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x7644('0x2')},'serverUrl':{'type':Sequelize[_0x7644('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x9e1d=['STRING','username','remoteUri','sequelize'];(function(_0x5d8089,_0x432da6){var _0x45e5a5=function(_0x5b21a7){while(--_0x5b21a7){_0x5d8089['push'](_0x5d8089['shift']());}};_0x45e5a5(++_0x432da6);}(_0x9e1d,0x133));var _0xd9e1=function(_0x1c7579,_0x857b0c){_0x1c7579=_0x1c7579-0x0;var _0x4773aa=_0x9e1d[_0x1c7579];return _0x4773aa;};'use strict';var Sequelize=require(_0xd9e1('0x0'));module['exports']={'name':{'type':Sequelize[_0xd9e1('0x1')]},'description':{'type':Sequelize[_0xd9e1('0x1')]},'username':{'type':Sequelize[_0xd9e1('0x1')],'unique':_0xd9e1('0x2')},'password':{'type':Sequelize[_0xd9e1('0x1')]},'email':{'type':Sequelize[_0xd9e1('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xd9e1('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 9b0015a..59cc851 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1da=['parent_incident','sys_id','contact_type','reopened_by','problem_id','company','reassignment_count','activity_due','assigned_to','comments','approval','due_date','reopen_count','escalation','upon_approval','correlation_id','remoteUri','serverUrl','slice','substring','lastIndexOf','format','%s/api/now/table/','username','GET','incident?sysparm_display_value=all','log','incident\x20table\x20objects','assign','remove','forEach','internalType','TCL:\x20_object','includes','push','concat','ServiceNow\x20error:\x20','test','error','Wrong\x20credentials','statusCode','boolean','True','true','False','false','sys_choice?sysparm_query=name=incident^element=','result','inactive','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','end','json','offset','limit','undefined','count','status','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','map','ServicenowAccount','rawAttributes','type','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','where','filter','merge','VIRTUAL','options','findAll','catch','show','includeAll','include','find','create','body','params','getConfigurations','findOne','ServicenowConfiguration','sort','pick','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','Subjects','ServicenowField','getFields','hold_reason','knowledge','subcategory','close_code','notify','incident_state','severity','category','parent','made_sla','caused_by','upon_reject','sys_updated_on','child_incidents','approval_history','number','opened_by','user_input','sys_created_on','sys_domain','state','sys_created_by','calendar_stc','closed_at','delivery_plan','impact','active','work_notes_list','priority','sys_domain_path','rfc','business_duration','group_list','work_end','reopened_time','resolved_at','work_notes','short_description','delivery_task','work_start','business_stc','description','calendar_duration','sys_class_name','close_notes','closed_by','follow_up'];(function(_0x3891eb,_0x56ee58){var _0x27b364=function(_0x1eb143){while(--_0x1eb143){_0x3891eb['push'](_0x3891eb['shift']());}};_0x27b364(++_0x56ee58);}(_0xd1da,0x19f));var _0xad1d=function(_0x596284,_0x1cd02b){_0x596284=_0x596284-0x0;var _0x5313c6=_0xd1da[_0x596284];return _0x5313c6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xad1d('0x0'));var zipdir=require(_0xad1d('0x1'));var jsonpatch=require(_0xad1d('0x2'));var rp=require(_0xad1d('0x3'));var moment=require(_0xad1d('0x4'));var BPromise=require(_0xad1d('0x5'));var Mustache=require(_0xad1d('0x6'));var util=require('util');var path=require(_0xad1d('0x7'));var sox=require(_0xad1d('0x8'));var csv=require(_0xad1d('0x9'));var ejs=require(_0xad1d('0xa'));var fs=require('fs');var fs_extra=require(_0xad1d('0xb'));var _=require(_0xad1d('0xc'));var squel=require(_0xad1d('0xd'));var crypto=require(_0xad1d('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xad1d('0xf'));var toCsv=require(_0xad1d('0x9'));var querystring=require('querystring');var Papa=require(_0xad1d('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xad1d('0x11'));var as=require(_0xad1d('0x12'));var hardwareService=require(_0xad1d('0x13'));var logger=require('../../config/logger')(_0xad1d('0x14'));var utils=require(_0xad1d('0x15'));var config=require(_0xad1d('0x16'));var licenseUtil=require(_0xad1d('0x17'));var db=require(_0xad1d('0x18'))['db'];var integrations=require(_0xad1d('0x19'));function respondWithStatusCode(_0x45e9b5,_0x92c804){_0x92c804=_0x92c804||0xcc;return function(_0x3c88d0){if(_0x3c88d0){return _0x45e9b5['sendStatus'](_0x92c804);}return _0x45e9b5['status'](_0x92c804)[_0xad1d('0x1a')]();};}function respondWithResult(_0xa2c6fe,_0x594638){_0x594638=_0x594638||0xc8;return function(_0x28b2fa){if(_0x28b2fa){return _0xa2c6fe['status'](_0x594638)[_0xad1d('0x1b')](_0x28b2fa);}};}function respondWithFilteredResult(_0x29478f,_0xbcd54d){return function(_0xcb79c0){if(_0xcb79c0){var _0x606191=typeof _0xbcd54d[_0xad1d('0x1c')]==='undefined'&&typeof _0xbcd54d[_0xad1d('0x1d')]===_0xad1d('0x1e');var _0x413230=_0xcb79c0[_0xad1d('0x1f')];var _0xb3ad53=_0x606191?0x0:_0xbcd54d[_0xad1d('0x1c')];var _0x53e366=_0x606191?_0xcb79c0[_0xad1d('0x1f')]:_0xbcd54d[_0xad1d('0x1c')]+_0xbcd54d['limit'];var _0x4d611f;if(_0x53e366>=_0x413230){_0x53e366=_0x413230;_0x4d611f=0xc8;}else{_0x4d611f=0xce;}_0x29478f[_0xad1d('0x20')](_0x4d611f);return _0x29478f[_0xad1d('0x21')](_0xad1d('0x22'),_0xb3ad53+'-'+_0x53e366+'/'+_0x413230)[_0xad1d('0x1b')](_0xcb79c0);}return null;};}function patchUpdates(_0x8b59c){return function(_0x439ae8){try{jsonpatch[_0xad1d('0x23')](_0x439ae8,_0x8b59c,!![]);}catch(_0x194f06){return BPromise[_0xad1d('0x24')](_0x194f06);}return _0x439ae8['save']();};}function saveUpdates(_0x4e52bd,_0x35ac77){return function(_0x212001){if(_0x212001){return _0x212001[_0xad1d('0x25')](_0x4e52bd)[_0xad1d('0x26')](function(_0x1b7d97){return _0x1b7d97;});}return null;};}function removeEntity(_0x10dc5a,_0x35f8c9){return function(_0x490f03){if(_0x490f03){return _0x490f03[_0xad1d('0x27')]()[_0xad1d('0x26')](function(){_0x10dc5a[_0xad1d('0x20')](0xcc)[_0xad1d('0x1a')]();});}};}function handleEntityNotFound(_0x20d178,_0x43e510){return function(_0x3ba8ef){if(!_0x3ba8ef){_0x20d178['sendStatus'](0x194);}return _0x3ba8ef;};}function handleError(_0x3260dd,_0x51017e){_0x51017e=_0x51017e||0x1f4;return function(_0x7bfcb3){logger['error'](_0x7bfcb3[_0xad1d('0x28')]);if(_0x7bfcb3['name']){delete _0x7bfcb3[_0xad1d('0x29')];}_0x3260dd[_0xad1d('0x20')](_0x51017e)[_0xad1d('0x2a')](_0x7bfcb3);};}exports['index']=function(_0xf1de73,_0x2b436a){var _0x1d31b3={},_0x295c78={},_0x97def0={'count':0x0,'rows':[]};var _0x3ec1f1=_[_0xad1d('0x2b')](db[_0xad1d('0x2c')][_0xad1d('0x2d')],function(_0x21abc4){return{'name':_0x21abc4['fieldName'],'type':_0x21abc4[_0xad1d('0x2e')][_0xad1d('0x2f')]};});_0x295c78[_0xad1d('0x30')]=_[_0xad1d('0x2b')](_0x3ec1f1,_0xad1d('0x29'));_0x295c78['query']=_[_0xad1d('0x31')](_0xf1de73['query']);_0x295c78[_0xad1d('0x32')]=_[_0xad1d('0x33')](_0x295c78['model'],_0x295c78[_0xad1d('0x34')]);_0x1d31b3['attributes']=_[_0xad1d('0x33')](_0x295c78[_0xad1d('0x30')],qs[_0xad1d('0x35')](_0xf1de73[_0xad1d('0x34')]['fields']));_0x1d31b3['attributes']=_0x1d31b3[_0xad1d('0x36')][_0xad1d('0x37')]?_0x1d31b3[_0xad1d('0x36')]:_0x295c78[_0xad1d('0x30')];if(!_0xf1de73[_0xad1d('0x34')][_0xad1d('0x38')](_0xad1d('0x39'))){_0x1d31b3['limit']=qs['limit'](_0xf1de73[_0xad1d('0x34')]['limit']);_0x1d31b3[_0xad1d('0x1c')]=qs[_0xad1d('0x1c')](_0xf1de73['query'][_0xad1d('0x1c')]);}_0x1d31b3[_0xad1d('0x3a')]=qs['sort'](_0xf1de73[_0xad1d('0x34')]['sort']);_0x1d31b3[_0xad1d('0x3b')]=qs[_0xad1d('0x32')](_['pick'](_0xf1de73[_0xad1d('0x34')],_0x295c78[_0xad1d('0x32')]),_0x3ec1f1);if(_0xf1de73['query'][_0xad1d('0x3c')]){_0x1d31b3[_0xad1d('0x3b')]=_[_0xad1d('0x3d')](_0x1d31b3[_0xad1d('0x3b')],{'$or':_['map'](_0x3ec1f1,function(_0x39e7bf){if(_0x39e7bf[_0xad1d('0x2e')]!==_0xad1d('0x3e')){var _0x3a7c46={};_0x3a7c46[_0x39e7bf[_0xad1d('0x29')]]={'$like':'%'+_0xf1de73['query'][_0xad1d('0x3c')]+'%'};return _0x3a7c46;}})});}_0x1d31b3=_[_0xad1d('0x3d')]({},_0x1d31b3,_0xf1de73[_0xad1d('0x3f')]);var _0x1e7422={'where':_0x1d31b3[_0xad1d('0x3b')]};return db[_0xad1d('0x2c')][_0xad1d('0x1f')](_0x1e7422)[_0xad1d('0x26')](function(_0x5ec174){_0x97def0[_0xad1d('0x1f')]=_0x5ec174;if(_0xf1de73[_0xad1d('0x34')]['includeAll']){_0x1d31b3['include']=[{'all':!![]}];}return db[_0xad1d('0x2c')][_0xad1d('0x40')](_0x1d31b3);})['then'](function(_0x104b75){_0x97def0['rows']=_0x104b75;return _0x97def0;})[_0xad1d('0x26')](respondWithFilteredResult(_0x2b436a,_0x1d31b3))[_0xad1d('0x41')](handleError(_0x2b436a,null));};exports[_0xad1d('0x42')]=function(_0x2bc8ec,_0x1b1b37){var _0x560a4e={'raw':![],'where':{'id':_0x2bc8ec['params']['id']}},_0x44a053={};_0x44a053['model']=_[_0xad1d('0x31')](db[_0xad1d('0x2c')][_0xad1d('0x2d')]);_0x44a053[_0xad1d('0x34')]=_[_0xad1d('0x31')](_0x2bc8ec[_0xad1d('0x34')]);_0x44a053[_0xad1d('0x32')]=_[_0xad1d('0x33')](_0x44a053[_0xad1d('0x30')],_0x44a053[_0xad1d('0x34')]);_0x560a4e[_0xad1d('0x36')]=_[_0xad1d('0x33')](_0x44a053[_0xad1d('0x30')],qs[_0xad1d('0x35')](_0x2bc8ec[_0xad1d('0x34')][_0xad1d('0x35')]));_0x560a4e[_0xad1d('0x36')]=_0x560a4e[_0xad1d('0x36')][_0xad1d('0x37')]?_0x560a4e[_0xad1d('0x36')]:_0x44a053['model'];if(_0x2bc8ec['query'][_0xad1d('0x43')]){_0x560a4e[_0xad1d('0x44')]=[{'all':!![]}];}_0x560a4e=_['merge']({},_0x560a4e,_0x2bc8ec['options']);return db[_0xad1d('0x2c')][_0xad1d('0x45')](_0x560a4e)[_0xad1d('0x26')](handleEntityNotFound(_0x1b1b37,null))['then'](respondWithResult(_0x1b1b37,null))[_0xad1d('0x41')](handleError(_0x1b1b37,null));};exports[_0xad1d('0x46')]=function(_0x11c96e,_0x4becc2){return db[_0xad1d('0x2c')][_0xad1d('0x46')](_0x11c96e[_0xad1d('0x47')],{})[_0xad1d('0x26')](respondWithResult(_0x4becc2,0xc9))[_0xad1d('0x41')](handleError(_0x4becc2,null));};exports[_0xad1d('0x25')]=function(_0xe149,_0x26ec44){if(_0xe149[_0xad1d('0x47')]['id']){delete _0xe149[_0xad1d('0x47')]['id'];}return db[_0xad1d('0x2c')][_0xad1d('0x45')]({'where':{'id':_0xe149[_0xad1d('0x48')]['id']}})[_0xad1d('0x26')](handleEntityNotFound(_0x26ec44,null))[_0xad1d('0x26')](saveUpdates(_0xe149['body'],null))[_0xad1d('0x26')](respondWithResult(_0x26ec44,null))[_0xad1d('0x41')](handleError(_0x26ec44,null));};exports[_0xad1d('0x27')]=function(_0x2a186d,_0x157781){return db['ServicenowAccount'][_0xad1d('0x45')]({'where':{'id':_0x2a186d['params']['id']}})[_0xad1d('0x26')](handleEntityNotFound(_0x157781,null))['then'](removeEntity(_0x157781,null))[_0xad1d('0x41')](handleError(_0x157781,null));};exports[_0xad1d('0x49')]=function(_0x7efbf0,_0x4d971c,_0x41b83b){var _0x3f0498={};var _0x4e3a9e={};var _0x945d25;var _0xc71768;return db[_0xad1d('0x2c')][_0xad1d('0x4a')]({'where':{'id':_0x7efbf0[_0xad1d('0x48')]['id']}})[_0xad1d('0x26')](handleEntityNotFound(_0x4d971c,null))['then'](function(_0x188101){if(_0x188101){_0x945d25=_0x188101;_0x4e3a9e[_0xad1d('0x30')]=_[_0xad1d('0x31')](db[_0xad1d('0x4b')][_0xad1d('0x2d')]);_0x4e3a9e['query']=_[_0xad1d('0x31')](_0x7efbf0['query']);_0x4e3a9e[_0xad1d('0x32')]=_[_0xad1d('0x33')](_0x4e3a9e['model'],_0x4e3a9e[_0xad1d('0x34')]);_0x3f0498[_0xad1d('0x36')]=_[_0xad1d('0x33')](_0x4e3a9e['model'],qs[_0xad1d('0x35')](_0x7efbf0[_0xad1d('0x34')][_0xad1d('0x35')]));_0x3f0498['attributes']=_0x3f0498[_0xad1d('0x36')][_0xad1d('0x37')]?_0x3f0498[_0xad1d('0x36')]:_0x4e3a9e[_0xad1d('0x30')];_0x3f0498[_0xad1d('0x3a')]=qs['sort'](_0x7efbf0[_0xad1d('0x34')][_0xad1d('0x4c')]);_0x3f0498[_0xad1d('0x3b')]=qs[_0xad1d('0x32')](_[_0xad1d('0x4d')](_0x7efbf0[_0xad1d('0x34')],_0x4e3a9e[_0xad1d('0x32')]));if(_0x7efbf0['query'][_0xad1d('0x3c')]){_0x3f0498[_0xad1d('0x3b')]=_[_0xad1d('0x3d')](_0x3f0498['where'],{'$or':_[_0xad1d('0x2b')](_0x3f0498[_0xad1d('0x36')],function(_0x2768d4){var _0x4e49a6={};_0x4e49a6[_0x2768d4]={'$like':'%'+_0x7efbf0[_0xad1d('0x34')][_0xad1d('0x3c')]+'%'};return _0x4e49a6;})});}_0x3f0498=_['merge']({},_0x3f0498,_0x7efbf0['options']);return _0x945d25[_0xad1d('0x49')](_0x3f0498);}})[_0xad1d('0x26')](function(_0x4d9f45){if(_0x4d9f45){_0xc71768=_0x4d9f45['length'];if(!_0x7efbf0[_0xad1d('0x34')][_0xad1d('0x38')](_0xad1d('0x39'))){_0x3f0498[_0xad1d('0x1d')]=qs['limit'](_0x7efbf0[_0xad1d('0x34')][_0xad1d('0x1d')]);_0x3f0498[_0xad1d('0x1c')]=qs[_0xad1d('0x1c')](_0x7efbf0[_0xad1d('0x34')]['offset']);}return _0x945d25['getConfigurations'](_0x3f0498);}})[_0xad1d('0x26')](function(_0x483045){if(_0x483045){return _0x483045?{'count':_0xc71768,'rows':_0x483045}:null;}})[_0xad1d('0x26')](respondWithResult(_0x4d971c,null))[_0xad1d('0x41')](handleError(_0x4d971c,null));};exports[_0xad1d('0x4e')]=function(_0x4b06d2,_0x239145,_0x4c9bb4){if(_0x4b06d2[_0xad1d('0x47')]['id']){delete _0x4b06d2['body']['id'];}return db[_0xad1d('0x2c')][_0xad1d('0x4a')]({'where':{'id':_0x4b06d2[_0xad1d('0x48')]['id']}})[_0xad1d('0x26')](handleEntityNotFound(_0x239145,null))[_0xad1d('0x26')](function(_0x30828a){if(_0x30828a){_0x4b06d2[_0xad1d('0x47')][_0xad1d('0x4f')]=_0x30828a['id'];_0x4b06d2[_0xad1d('0x47')]['Subjects']=integrations[_0xad1d('0x50')](_0x4b06d2[_0xad1d('0x47')][_0xad1d('0x51')],_0x4b06d2[_0xad1d('0x47')][_0xad1d('0x2e')]);_0x4b06d2[_0xad1d('0x47')][_0xad1d('0x52')]=integrations[_0xad1d('0x53')](_0x4b06d2[_0xad1d('0x47')][_0xad1d('0x51')],_0x4b06d2[_0xad1d('0x47')][_0xad1d('0x2e')]);return db[_0xad1d('0x4b')][_0xad1d('0x46')](_0x4b06d2[_0xad1d('0x47')],{'include':[{'model':db['ServicenowField'],'as':_0xad1d('0x54')},{'model':db[_0xad1d('0x55')],'as':_0xad1d('0x52')}]});}return null;})['then'](respondWithResult(_0x239145,null))[_0xad1d('0x41')](handleError(_0x239145,null));};exports[_0xad1d('0x56')]=function(_0x466c1b,_0x36c06e,_0xf8cbd2){var _0x21b690=['made_sla',_0xad1d('0x57'),_0xad1d('0x58'),_0xad1d('0x59'),_0xad1d('0x5a'),_0xad1d('0x5b'),_0xad1d('0x5c'),_0xad1d('0x5d'),_0xad1d('0x5e')];var _0x5577bc=[_0xad1d('0x5f'),_0xad1d('0x60'),_0xad1d('0x61'),'watch_list',_0xad1d('0x62'),_0xad1d('0x63'),_0xad1d('0x64'),_0xad1d('0x57'),_0xad1d('0x65'),_0xad1d('0x66'),'resolved_by','sys_updated_by',_0xad1d('0x67'),_0xad1d('0x68'),_0xad1d('0x69'),_0xad1d('0x6a'),_0xad1d('0x6b'),_0xad1d('0x6c'),'knowledge',_0xad1d('0x3a'),_0xad1d('0x6d'),_0xad1d('0x6e'),'cmdb_ci',_0xad1d('0x6f'),_0xad1d('0x70'),_0xad1d('0x71'),_0xad1d('0x72'),'business_service',_0xad1d('0x73'),_0xad1d('0x74'),_0xad1d('0x75'),'time_worked','expected_start','opened_at',_0xad1d('0x76'),_0xad1d('0x77'),_0xad1d('0x78'),_0xad1d('0x79'),_0xad1d('0x7a'),'caller_id','approval_set','subcategory',_0xad1d('0x7b'),_0xad1d('0x7c'),_0xad1d('0x5a'),'correlation_display',_0xad1d('0x7d'),_0xad1d('0x7e'),'assignment_group',_0xad1d('0x7f'),'additional_assignee_list',_0xad1d('0x80'),_0xad1d('0x81'),_0xad1d('0x5b'),_0xad1d('0x82'),_0xad1d('0x83'),_0xad1d('0x84'),_0xad1d('0x85'),_0xad1d('0x86'),_0xad1d('0x87'),_0xad1d('0x88'),_0xad1d('0x89'),_0xad1d('0x5c'),'urgency',_0xad1d('0x8a'),_0xad1d('0x8b'),_0xad1d('0x8c'),_0xad1d('0x8d'),_0xad1d('0x8e'),_0xad1d('0x5d'),_0xad1d('0x8f'),'sla_due',_0xad1d('0x90'),'comments_and_work_notes',_0xad1d('0x91'),'sys_mod_count',_0xad1d('0x92'),'sys_tags',_0xad1d('0x93'),_0xad1d('0x94'),_0xad1d('0x95'),'location',_0xad1d('0x5e')];var _0x378abd='';var _0x4020f9='';var _0x35671b=[];var _0x4d0428='';var _0x27d69e='';var _0x5a441e=[];var _0x4711b6='';var _0x225d85='';var _0x3c1dd1={};var _0x407d90='';return db[_0xad1d('0x2c')][_0xad1d('0x4a')]({'where':{'id':_0x466c1b[_0xad1d('0x48')]['id']},'attributes':['id','username','password','email',_0xad1d('0x96'),_0xad1d('0x97')]})[_0xad1d('0x26')](handleEntityNotFound(_0x36c06e,null))['then'](function(_0x56e4fc){if(_0x56e4fc){_0x407d90=_0x56e4fc[_0xad1d('0x96')];var _0x343e9e=_0x407d90[_0xad1d('0x98')](-0x1);if(_0x343e9e==='/'){_0x407d90=_0x407d90[_0xad1d('0x99')](0x0,_0x407d90[_0xad1d('0x9a')](_0x343e9e));}_0x225d85=util[_0xad1d('0x9b')]('%s/api/now/doc/table/schema/',_0x407d90);_0x4711b6=util[_0xad1d('0x9b')](_0xad1d('0x9c'),_0x407d90);_0x3c1dd1={'user':_0x56e4fc[_0xad1d('0x9d')],'pass':_0x56e4fc['password']};var _0x2c886e={'method':_0xad1d('0x9e'),'uri':_0x225d85+_0xad1d('0x9f'),'auth':_0x3c1dd1,'json':!![]};return rp(_0x2c886e);}})[_0xad1d('0x26')](function(_0x477b2e){if(_0x477b2e['result']['length']>0x0){_0x378abd=_0x477b2e['result'];}console[_0xad1d('0xa0')](_0xad1d('0xa1'),_0x378abd);_0x5a441e=[];_0x4020f9=Object[_0xad1d('0xa2')]([],_0x378abd);_[_0xad1d('0xa3')](_0x4020f9,function(_0x538730){return!_0x21b690['includes'](_0x538730[_0xad1d('0x29')]);});_0x4020f9[_0xad1d('0xa4')](function(_0x10d843){var _0x73cbc3=createFieldObject(_0x4711b6,_0x3c1dd1,_0x10d843[_0xad1d('0xa5')],_0x10d843[_0xad1d('0x29')],_0x10d843['label'],![]);_0x5a441e['push'](_0x73cbc3);});return Promise['all'](_0x5a441e);})[_0xad1d('0x26')](function(_0x2816dc){_0x35671b=_0x2816dc;_0x4d0428=Object[_0xad1d('0xa2')]([],_0x378abd);console[_0xad1d('0xa0')](_0xad1d('0xa6'),_0x378abd);_[_0xad1d('0xa3')](_0x4d0428,function(_0x1ce654){return _0x5577bc[_0xad1d('0xa7')](_0x1ce654['name']);});console['log']('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x4d0428);_0x5a441e=[];_0x4d0428[_0xad1d('0xa4')](function(_0x538473){var _0x4f3a00=createFieldObject(_0x4711b6,_0x3c1dd1,_0x538473['internalType'],_0x538473[_0xad1d('0x29')],_0x538473['label'],!![]);_0x5a441e[_0xad1d('0xa8')](_0x4f3a00);});return Promise['all'](_0x5a441e);})[_0xad1d('0x26')](function(_0x270dba){_0x27d69e=_0x270dba;var _0xdeced8=_0x35671b[_0xad1d('0xa9')](_0x27d69e);return{'count':_0xdeced8[_0xad1d('0x37')],'rows':_0xdeced8};})[_0xad1d('0x26')](respondWithResult(_0x36c06e,null))[_0xad1d('0x41')](function(_0xb04380){console[_0xad1d('0xa0')](_0xad1d('0xaa')+_0xb04380);var _0xbbfb08=_0x466c1b[_0xad1d('0x34')][_0xad1d('0xab')]?0x1f4:_0xb04380['statusCode']||0x1f4;logger[_0xad1d('0xac')](_0xb04380[_0xad1d('0x28')]);delete _0xb04380[_0xad1d('0x29')];if(_0xbbfb08===0x191){_0xbbfb08=0x190;}_0x36c06e[_0xad1d('0x20')](_0xbbfb08)['send'](_0x466c1b[_0xad1d('0x34')][_0xad1d('0xab')]?{'message':_0xad1d('0xad'),'statusCode':_0xb04380[_0xad1d('0xae')]}:_0xb04380);});};function createFieldObject(_0xc018f2,_0x4edb39,_0x344e4c,_0xd2c5c1,_0x4a66e0,_0x2c665d){return new Promise(function(_0x21f6b3,_0x587ccc){var _0x3446b8={'id':_0xd2c5c1,'name':_0x4a66e0,'custom':_0x2c665d};if(_0x344e4c===_0xad1d('0xaf')){_0x3446b8[_0xad1d('0x3f')]=[{'name':_0xad1d('0xb0'),'value':_0xad1d('0xb1')},{'name':_0xad1d('0xb2'),'value':_0xad1d('0xb3')}];_0x21f6b3(_0x3446b8);}else{var _0x42865c={'method':_0xad1d('0x9e'),'uri':_0xc018f2+_0xad1d('0xb4')+_0xd2c5c1,'auth':_0x4edb39,'json':!![]};return rp(_0x42865c)[_0xad1d('0x26')](function(_0x3f5dee){var _0x14ca05=[];if(_0x3f5dee[_0xad1d('0xb5')][_0xad1d('0x37')]>0x0){_0x3f5dee['result'][_0xad1d('0xa4')](function(_0xeedac1){if(_0xeedac1[_0xad1d('0xb6')]===_0xad1d('0xb3')){var _0x2c994c={'name':_0xeedac1['label'],'value':_0xeedac1['value']};_0x14ca05[_0xad1d('0xa8')](_0x2c994c);}});}_0x3446b8[_0xad1d('0x3f')]=_0x14ca05;if(_0x3446b8[_0xad1d('0x3f')]['length']>0x0){_0x21f6b3(_0x3446b8);}else{if(_0x2c665d==![]){_0x21f6b3();}else{_0x21f6b3(_0x3446b8);}}});}});}
\ No newline at end of file
+var _0x2604=['user_input','sys_created_on','sys_domain','state','sys_created_by','calendar_stc','cmdb_ci','delivery_plan','work_notes_list','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','business_duration','group_list','work_end','reopened_time','resolved_at','approval_set','work_notes','short_description','delivery_task','work_start','assignment_group','additional_assignee_list','description','sys_class_name','close_notes','closed_by','parent_incident','sys_id','contact_type','reopened_by','urgency','problem_id','company','reassignment_count','activity_due','comments','sla_due','comments_and_work_notes','reopen_count','sys_tags','escalation','upon_approval','correlation_id','username','password','email','remoteUri','serverUrl','slice','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','GET','incident?sysparm_display_value=all','result','incident\x20table\x20objects','assign','remove','includes','forEach','internalType','label','push','all','TCL:\x20_object','log','concat','ServiceNow\x20error:\x20','test','statusCode','boolean','true','False','sys_choice?sysparm_query=name=incident^element=','inactive','false','value','eml-format','rimraf','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','then','error','stack','name','send','index','map','key','query','keys','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','filters','where','merge','VIRTUAL','filter','options','ServicenowAccount','includeAll','findAll','rows','show','params','rawAttributes','length','include','find','catch','create','body','getConfigurations','findOne','ServicenowConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','ServicenowField','getFields','made_sla','hold_reason','knowledge','close_code','notify','incident_state','severity','category','parent','caused_by','watch_list','upon_reject','sys_updated_on','approval_history','number','sys_updated_by','opened_by'];(function(_0x2ebb6d,_0x6f9bfe){var _0x2b1e9a=function(_0x270607){while(--_0x270607){_0x2ebb6d['push'](_0x2ebb6d['shift']());}};_0x2b1e9a(++_0x6f9bfe);}(_0x2604,0x10d));var _0x4260=function(_0x587d9a,_0x5dedc5){_0x587d9a=_0x587d9a-0x0;var _0x13802a=_0x2604[_0x587d9a];return _0x13802a;};'use strict';var emlformat=require(_0x4260('0x0'));var rimraf=require(_0x4260('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4260('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x4260('0x3'));var util=require(_0x4260('0x4'));var path=require(_0x4260('0x5'));var sox=require(_0x4260('0x6'));var csv=require(_0x4260('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4260('0x8'));var _=require(_0x4260('0x9'));var squel=require(_0x4260('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4260('0xb'));var toCsv=require('to-csv');var querystring=require(_0x4260('0xc'));var Papa=require(_0x4260('0xd'));var Redis=require(_0x4260('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x4260('0xf'));var as=require(_0x4260('0x10'));var hardwareService=require(_0x4260('0x11'));var logger=require(_0x4260('0x12'))(_0x4260('0x13'));var utils=require(_0x4260('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x4260('0x15'));var db=require(_0x4260('0x16'))['db'];var integrations=require(_0x4260('0x17'));function respondWithStatusCode(_0x558c39,_0x305873){_0x305873=_0x305873||0xcc;return function(_0x3380bd){if(_0x3380bd){return _0x558c39[_0x4260('0x18')](_0x305873);}return _0x558c39[_0x4260('0x19')](_0x305873)[_0x4260('0x1a')]();};}function respondWithResult(_0x5553cf,_0x6e6a45){_0x6e6a45=_0x6e6a45||0xc8;return function(_0x95785f){if(_0x95785f){return _0x5553cf[_0x4260('0x19')](_0x6e6a45)[_0x4260('0x1b')](_0x95785f);}};}function respondWithFilteredResult(_0x337682,_0x5af751){return function(_0x50365b){if(_0x50365b){var _0x5d9ca7=typeof _0x5af751[_0x4260('0x1c')]===_0x4260('0x1d')&&typeof _0x5af751[_0x4260('0x1e')]===_0x4260('0x1d');var _0x2f3563=_0x50365b[_0x4260('0x1f')];var _0x2f34df=_0x5d9ca7?0x0:_0x5af751[_0x4260('0x1c')];var _0x4f6c84=_0x5d9ca7?_0x50365b[_0x4260('0x1f')]:_0x5af751[_0x4260('0x1c')]+_0x5af751[_0x4260('0x1e')];var _0x4bb232;if(_0x4f6c84>=_0x2f3563){_0x4f6c84=_0x2f3563;_0x4bb232=0xc8;}else{_0x4bb232=0xce;}_0x337682['status'](_0x4bb232);return _0x337682['set'](_0x4260('0x20'),_0x2f34df+'-'+_0x4f6c84+'/'+_0x2f3563)[_0x4260('0x1b')](_0x50365b);}return null;};}function patchUpdates(_0x460cb8){return function(_0x2bad09){try{jsonpatch[_0x4260('0x21')](_0x2bad09,_0x460cb8,!![]);}catch(_0x5c1ff1){return BPromise['reject'](_0x5c1ff1);}return _0x2bad09[_0x4260('0x22')]();};}function saveUpdates(_0x25d207,_0x3f09d9){return function(_0x1b8808){if(_0x1b8808){return _0x1b8808[_0x4260('0x23')](_0x25d207)['then'](function(_0x141077){return _0x141077;});}return null;};}function removeEntity(_0x316cc6,_0x79116a){return function(_0x4663e5){if(_0x4663e5){return _0x4663e5[_0x4260('0x24')]()[_0x4260('0x25')](function(){_0x316cc6[_0x4260('0x19')](0xcc)[_0x4260('0x1a')]();});}};}function handleEntityNotFound(_0x1ae393,_0x3eb2ff){return function(_0x375a0f){if(!_0x375a0f){_0x1ae393[_0x4260('0x18')](0x194);}return _0x375a0f;};}function handleError(_0x386d42,_0x103fae){_0x103fae=_0x103fae||0x1f4;return function(_0x452bb0){logger[_0x4260('0x26')](_0x452bb0[_0x4260('0x27')]);if(_0x452bb0[_0x4260('0x28')]){delete _0x452bb0[_0x4260('0x28')];}_0x386d42[_0x4260('0x19')](_0x103fae)[_0x4260('0x29')](_0x452bb0);};}exports[_0x4260('0x2a')]=function(_0x452df8,_0x46cf12){var _0xe6cd57={},_0x3d7ce6={},_0x2d01a8={'count':0x0,'rows':[]};var _0x1e4f48=_[_0x4260('0x2b')](db['ServicenowAccount']['rawAttributes'],function(_0x1e60ca){return{'name':_0x1e60ca['fieldName'],'type':_0x1e60ca['type'][_0x4260('0x2c')]};});_0x3d7ce6['model']=_[_0x4260('0x2b')](_0x1e4f48,_0x4260('0x28'));_0x3d7ce6[_0x4260('0x2d')]=_[_0x4260('0x2e')](_0x452df8[_0x4260('0x2d')]);_0x3d7ce6['filters']=_[_0x4260('0x2f')](_0x3d7ce6[_0x4260('0x30')],_0x3d7ce6[_0x4260('0x2d')]);_0xe6cd57['attributes']=_[_0x4260('0x2f')](_0x3d7ce6[_0x4260('0x30')],qs[_0x4260('0x31')](_0x452df8[_0x4260('0x2d')][_0x4260('0x31')]));_0xe6cd57[_0x4260('0x32')]=_0xe6cd57['attributes']['length']?_0xe6cd57[_0x4260('0x32')]:_0x3d7ce6['model'];if(!_0x452df8[_0x4260('0x2d')][_0x4260('0x33')](_0x4260('0x34'))){_0xe6cd57['limit']=qs[_0x4260('0x1e')](_0x452df8[_0x4260('0x2d')][_0x4260('0x1e')]);_0xe6cd57[_0x4260('0x1c')]=qs[_0x4260('0x1c')](_0x452df8['query']['offset']);}_0xe6cd57[_0x4260('0x35')]=qs[_0x4260('0x36')](_0x452df8[_0x4260('0x2d')][_0x4260('0x36')]);_0xe6cd57['where']=qs['filters'](_[_0x4260('0x37')](_0x452df8[_0x4260('0x2d')],_0x3d7ce6[_0x4260('0x38')]),_0x1e4f48);if(_0x452df8[_0x4260('0x2d')]['filter']){_0xe6cd57[_0x4260('0x39')]=_[_0x4260('0x3a')](_0xe6cd57[_0x4260('0x39')],{'$or':_[_0x4260('0x2b')](_0x1e4f48,function(_0x15e906){if(_0x15e906['type']!==_0x4260('0x3b')){var _0x162eb5={};_0x162eb5[_0x15e906[_0x4260('0x28')]]={'$like':'%'+_0x452df8[_0x4260('0x2d')][_0x4260('0x3c')]+'%'};return _0x162eb5;}})});}_0xe6cd57=_['merge']({},_0xe6cd57,_0x452df8[_0x4260('0x3d')]);var _0xa3fb43={'where':_0xe6cd57['where']};return db[_0x4260('0x3e')]['count'](_0xa3fb43)[_0x4260('0x25')](function(_0x51f2ba){_0x2d01a8[_0x4260('0x1f')]=_0x51f2ba;if(_0x452df8[_0x4260('0x2d')][_0x4260('0x3f')]){_0xe6cd57['include']=[{'all':!![]}];}return db[_0x4260('0x3e')][_0x4260('0x40')](_0xe6cd57);})[_0x4260('0x25')](function(_0x25238f){_0x2d01a8[_0x4260('0x41')]=_0x25238f;return _0x2d01a8;})[_0x4260('0x25')](respondWithFilteredResult(_0x46cf12,_0xe6cd57))['catch'](handleError(_0x46cf12,null));};exports[_0x4260('0x42')]=function(_0x5a254b,_0x3861ba){var _0x1c54da={'raw':![],'where':{'id':_0x5a254b[_0x4260('0x43')]['id']}},_0x13bd56={};_0x13bd56[_0x4260('0x30')]=_[_0x4260('0x2e')](db[_0x4260('0x3e')][_0x4260('0x44')]);_0x13bd56['query']=_['keys'](_0x5a254b[_0x4260('0x2d')]);_0x13bd56[_0x4260('0x38')]=_[_0x4260('0x2f')](_0x13bd56['model'],_0x13bd56[_0x4260('0x2d')]);_0x1c54da['attributes']=_[_0x4260('0x2f')](_0x13bd56[_0x4260('0x30')],qs[_0x4260('0x31')](_0x5a254b[_0x4260('0x2d')][_0x4260('0x31')]));_0x1c54da[_0x4260('0x32')]=_0x1c54da['attributes'][_0x4260('0x45')]?_0x1c54da[_0x4260('0x32')]:_0x13bd56[_0x4260('0x30')];if(_0x5a254b[_0x4260('0x2d')][_0x4260('0x3f')]){_0x1c54da[_0x4260('0x46')]=[{'all':!![]}];}_0x1c54da=_[_0x4260('0x3a')]({},_0x1c54da,_0x5a254b[_0x4260('0x3d')]);return db[_0x4260('0x3e')][_0x4260('0x47')](_0x1c54da)[_0x4260('0x25')](handleEntityNotFound(_0x3861ba,null))[_0x4260('0x25')](respondWithResult(_0x3861ba,null))[_0x4260('0x48')](handleError(_0x3861ba,null));};exports[_0x4260('0x49')]=function(_0x541445,_0x33c0de){return db[_0x4260('0x3e')][_0x4260('0x49')](_0x541445[_0x4260('0x4a')],{})[_0x4260('0x25')](respondWithResult(_0x33c0de,0xc9))[_0x4260('0x48')](handleError(_0x33c0de,null));};exports[_0x4260('0x23')]=function(_0x405c03,_0x5c58a5){if(_0x405c03[_0x4260('0x4a')]['id']){delete _0x405c03[_0x4260('0x4a')]['id'];}return db['ServicenowAccount'][_0x4260('0x47')]({'where':{'id':_0x405c03[_0x4260('0x43')]['id']}})[_0x4260('0x25')](handleEntityNotFound(_0x5c58a5,null))[_0x4260('0x25')](saveUpdates(_0x405c03[_0x4260('0x4a')],null))[_0x4260('0x25')](respondWithResult(_0x5c58a5,null))[_0x4260('0x48')](handleError(_0x5c58a5,null));};exports[_0x4260('0x24')]=function(_0x93aa6b,_0x3d1ac5){return db['ServicenowAccount']['find']({'where':{'id':_0x93aa6b[_0x4260('0x43')]['id']}})[_0x4260('0x25')](handleEntityNotFound(_0x3d1ac5,null))[_0x4260('0x25')](removeEntity(_0x3d1ac5,null))[_0x4260('0x48')](handleError(_0x3d1ac5,null));};exports[_0x4260('0x4b')]=function(_0x18832f,_0x36bc0e,_0x4c5d49){var _0x2eda32={};var _0x4212ed={};var _0x4db45d;var _0x1a340e;return db['ServicenowAccount'][_0x4260('0x4c')]({'where':{'id':_0x18832f['params']['id']}})[_0x4260('0x25')](handleEntityNotFound(_0x36bc0e,null))[_0x4260('0x25')](function(_0x1abd0a){if(_0x1abd0a){_0x4db45d=_0x1abd0a;_0x4212ed['model']=_['keys'](db[_0x4260('0x4d')][_0x4260('0x44')]);_0x4212ed[_0x4260('0x2d')]=_[_0x4260('0x2e')](_0x18832f[_0x4260('0x2d')]);_0x4212ed[_0x4260('0x38')]=_['intersection'](_0x4212ed[_0x4260('0x30')],_0x4212ed[_0x4260('0x2d')]);_0x2eda32['attributes']=_['intersection'](_0x4212ed[_0x4260('0x30')],qs[_0x4260('0x31')](_0x18832f[_0x4260('0x2d')][_0x4260('0x31')]));_0x2eda32[_0x4260('0x32')]=_0x2eda32[_0x4260('0x32')]['length']?_0x2eda32[_0x4260('0x32')]:_0x4212ed[_0x4260('0x30')];_0x2eda32['order']=qs[_0x4260('0x36')](_0x18832f[_0x4260('0x2d')][_0x4260('0x36')]);_0x2eda32[_0x4260('0x39')]=qs[_0x4260('0x38')](_['pick'](_0x18832f[_0x4260('0x2d')],_0x4212ed[_0x4260('0x38')]));if(_0x18832f['query'][_0x4260('0x3c')]){_0x2eda32[_0x4260('0x39')]=_[_0x4260('0x3a')](_0x2eda32[_0x4260('0x39')],{'$or':_['map'](_0x2eda32[_0x4260('0x32')],function(_0x1425a0){var _0x56280b={};_0x56280b[_0x1425a0]={'$like':'%'+_0x18832f['query'][_0x4260('0x3c')]+'%'};return _0x56280b;})});}_0x2eda32=_[_0x4260('0x3a')]({},_0x2eda32,_0x18832f[_0x4260('0x3d')]);return _0x4db45d[_0x4260('0x4b')](_0x2eda32);}})[_0x4260('0x25')](function(_0x5192a7){if(_0x5192a7){_0x1a340e=_0x5192a7[_0x4260('0x45')];if(!_0x18832f[_0x4260('0x2d')][_0x4260('0x33')]('nolimit')){_0x2eda32[_0x4260('0x1e')]=qs[_0x4260('0x1e')](_0x18832f['query'][_0x4260('0x1e')]);_0x2eda32['offset']=qs['offset'](_0x18832f[_0x4260('0x2d')]['offset']);}return _0x4db45d[_0x4260('0x4b')](_0x2eda32);}})[_0x4260('0x25')](function(_0x323046){if(_0x323046){return _0x323046?{'count':_0x1a340e,'rows':_0x323046}:null;}})[_0x4260('0x25')](respondWithResult(_0x36bc0e,null))[_0x4260('0x48')](handleError(_0x36bc0e,null));};exports[_0x4260('0x4e')]=function(_0x24214b,_0x4892e5,_0x59d37e){if(_0x24214b[_0x4260('0x4a')]['id']){delete _0x24214b['body']['id'];}return db['ServicenowAccount']['findOne']({'where':{'id':_0x24214b[_0x4260('0x43')]['id']}})[_0x4260('0x25')](handleEntityNotFound(_0x4892e5,null))[_0x4260('0x25')](function(_0x1d605f){if(_0x1d605f){_0x24214b[_0x4260('0x4a')][_0x4260('0x4f')]=_0x1d605f['id'];_0x24214b[_0x4260('0x4a')][_0x4260('0x50')]=integrations[_0x4260('0x51')](_0x24214b[_0x4260('0x4a')][_0x4260('0x52')],_0x24214b[_0x4260('0x4a')]['type']);_0x24214b[_0x4260('0x4a')][_0x4260('0x53')]=integrations['getDescriptions'](_0x24214b['body'][_0x4260('0x52')],_0x24214b[_0x4260('0x4a')]['type']);return db[_0x4260('0x4d')][_0x4260('0x49')](_0x24214b['body'],{'include':[{'model':db[_0x4260('0x54')],'as':_0x4260('0x50')},{'model':db[_0x4260('0x54')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x4892e5,null))[_0x4260('0x48')](handleError(_0x4892e5,null));};exports[_0x4260('0x55')]=function(_0xf9e33,_0x141cc4,_0x4f71be){var _0x17a5c6=[_0x4260('0x56'),_0x4260('0x57'),_0x4260('0x58'),'subcategory',_0x4260('0x59'),_0x4260('0x5a'),_0x4260('0x5b'),_0x4260('0x5c'),_0x4260('0x5d')];var _0x2920bd=[_0x4260('0x5e'),_0x4260('0x56'),_0x4260('0x5f'),_0x4260('0x60'),_0x4260('0x61'),_0x4260('0x62'),'child_incidents',_0x4260('0x57'),_0x4260('0x63'),_0x4260('0x64'),'resolved_by',_0x4260('0x65'),_0x4260('0x66'),_0x4260('0x67'),_0x4260('0x68'),_0x4260('0x69'),_0x4260('0x6a'),_0x4260('0x6b'),_0x4260('0x58'),_0x4260('0x35'),_0x4260('0x6c'),'closed_at',_0x4260('0x6d'),_0x4260('0x6e'),'impact','active',_0x4260('0x6f'),_0x4260('0x70'),_0x4260('0x71'),_0x4260('0x72'),_0x4260('0x73'),_0x4260('0x74'),_0x4260('0x75'),'opened_at',_0x4260('0x76'),_0x4260('0x77'),_0x4260('0x78'),_0x4260('0x79'),_0x4260('0x7a'),'caller_id',_0x4260('0x7b'),'subcategory',_0x4260('0x7c'),_0x4260('0x7d'),_0x4260('0x59'),'correlation_display',_0x4260('0x7e'),_0x4260('0x7f'),_0x4260('0x80'),'business_stc',_0x4260('0x81'),_0x4260('0x82'),'calendar_duration','notify',_0x4260('0x83'),_0x4260('0x84'),_0x4260('0x85'),'follow_up',_0x4260('0x86'),_0x4260('0x87'),_0x4260('0x88'),_0x4260('0x89'),'incident_state',_0x4260('0x8a'),_0x4260('0x8b'),_0x4260('0x8c'),_0x4260('0x8d'),_0x4260('0x8e'),'assigned_to',_0x4260('0x5c'),_0x4260('0x8f'),_0x4260('0x90'),'approval',_0x4260('0x91'),'due_date','sys_mod_count',_0x4260('0x92'),_0x4260('0x93'),_0x4260('0x94'),_0x4260('0x95'),_0x4260('0x96'),'location',_0x4260('0x5d')];var _0x3935d2='';var _0x59b92='';var _0x2f6ca1=[];var _0x552c6b='';var _0x125b7a='';var _0x35dfb8=[];var _0x140ba7='';var _0x2f6a5d='';var _0x1abfdf={};var _0x471cba='';return db[_0x4260('0x3e')][_0x4260('0x4c')]({'where':{'id':_0xf9e33[_0x4260('0x43')]['id']},'attributes':['id',_0x4260('0x97'),_0x4260('0x98'),_0x4260('0x99'),_0x4260('0x9a'),_0x4260('0x9b')]})[_0x4260('0x25')](handleEntityNotFound(_0x141cc4,null))[_0x4260('0x25')](function(_0x3ceb48){if(_0x3ceb48){_0x471cba=_0x3ceb48[_0x4260('0x9a')];var _0xfca740=_0x471cba[_0x4260('0x9c')](-0x1);if(_0xfca740==='/'){_0x471cba=_0x471cba[_0x4260('0x9d')](0x0,_0x471cba[_0x4260('0x9e')](_0xfca740));}_0x2f6a5d=util[_0x4260('0x9f')](_0x4260('0xa0'),_0x471cba);_0x140ba7=util['format']('%s/api/now/table/',_0x471cba);_0x1abfdf={'user':_0x3ceb48[_0x4260('0x97')],'pass':_0x3ceb48[_0x4260('0x98')]};var _0x458780={'method':_0x4260('0xa1'),'uri':_0x2f6a5d+_0x4260('0xa2'),'auth':_0x1abfdf,'json':!![]};return rp(_0x458780);}})[_0x4260('0x25')](function(_0x5b9c83){if(_0x5b9c83['result']['length']>0x0){_0x3935d2=_0x5b9c83[_0x4260('0xa3')];}console['log'](_0x4260('0xa4'),_0x3935d2);_0x35dfb8=[];_0x59b92=Object[_0x4260('0xa5')]([],_0x3935d2);_[_0x4260('0xa6')](_0x59b92,function(_0x1981a0){return!_0x17a5c6[_0x4260('0xa7')](_0x1981a0[_0x4260('0x28')]);});_0x59b92[_0x4260('0xa8')](function(_0x45ef3f){var _0x376561=createFieldObject(_0x140ba7,_0x1abfdf,_0x45ef3f[_0x4260('0xa9')],_0x45ef3f[_0x4260('0x28')],_0x45ef3f[_0x4260('0xaa')],![]);_0x35dfb8[_0x4260('0xab')](_0x376561);});return Promise[_0x4260('0xac')](_0x35dfb8);})[_0x4260('0x25')](function(_0x58ac4a){_0x2f6ca1=_0x58ac4a;_0x552c6b=Object[_0x4260('0xa5')]([],_0x3935d2);console['log'](_0x4260('0xad'),_0x3935d2);_[_0x4260('0xa6')](_0x552c6b,function(_0x12dd0c){return _0x2920bd[_0x4260('0xa7')](_0x12dd0c[_0x4260('0x28')]);});console[_0x4260('0xae')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x552c6b);_0x35dfb8=[];_0x552c6b[_0x4260('0xa8')](function(_0x52b1a1){var _0x4e3d02=createFieldObject(_0x140ba7,_0x1abfdf,_0x52b1a1[_0x4260('0xa9')],_0x52b1a1[_0x4260('0x28')],_0x52b1a1[_0x4260('0xaa')],!![]);_0x35dfb8[_0x4260('0xab')](_0x4e3d02);});return Promise['all'](_0x35dfb8);})[_0x4260('0x25')](function(_0x576995){_0x125b7a=_0x576995;var _0x209fbe=_0x2f6ca1[_0x4260('0xaf')](_0x125b7a);return{'count':_0x209fbe[_0x4260('0x45')],'rows':_0x209fbe};})[_0x4260('0x25')](respondWithResult(_0x141cc4,null))[_0x4260('0x48')](function(_0x5d7960){console['log'](_0x4260('0xb0')+_0x5d7960);var _0x2b9b11=_0xf9e33[_0x4260('0x2d')][_0x4260('0xb1')]?0x1f4:_0x5d7960[_0x4260('0xb2')]||0x1f4;logger[_0x4260('0x26')](_0x5d7960[_0x4260('0x27')]);delete _0x5d7960[_0x4260('0x28')];if(_0x2b9b11===0x191){_0x2b9b11=0x190;}_0x141cc4[_0x4260('0x19')](_0x2b9b11)['send'](_0xf9e33['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x5d7960['statusCode']}:_0x5d7960);});};function createFieldObject(_0x55935a,_0x479b70,_0x292c27,_0x585039,_0x3d3dfd,_0x2ab520){return new Promise(function(_0x2075b9,_0x260944){var _0x373db7={'id':_0x585039,'name':_0x3d3dfd,'custom':_0x2ab520};if(_0x292c27===_0x4260('0xb3')){_0x373db7[_0x4260('0x3d')]=[{'name':'True','value':_0x4260('0xb4')},{'name':_0x4260('0xb5'),'value':'false'}];_0x2075b9(_0x373db7);}else{var _0x202194={'method':'GET','uri':_0x55935a+_0x4260('0xb6')+_0x585039,'auth':_0x479b70,'json':!![]};return rp(_0x202194)['then'](function(_0x38f636){var _0x40c477=[];if(_0x38f636['result']['length']>0x0){_0x38f636[_0x4260('0xa3')][_0x4260('0xa8')](function(_0xb8f977){if(_0xb8f977[_0x4260('0xb7')]===_0x4260('0xb8')){var _0x31a298={'name':_0xb8f977['label'],'value':_0xb8f977[_0x4260('0xb9')]};_0x40c477[_0x4260('0xab')](_0x31a298);}});}_0x373db7['options']=_0x40c477;if(_0x373db7['options']['length']>0x0){_0x2075b9(_0x373db7);}else{if(_0x2ab520==![]){_0x2075b9();}else{_0x2075b9(_0x373db7);}}});}});}
\ No newline at end of file
index 1b9cb7c..4ac5fc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcf0=['lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','int_servicenow_accounts'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0xfcf0,0x138));var _0x0fcf=function(_0x15bbf1,_0x40ef96){_0x15bbf1=_0x15bbf1-0x0;var _0x5c4b47=_0xfcf0[_0x15bbf1];return _0x5c4b47;};'use strict';var _=require(_0x0fcf('0x0'));var util=require(_0x0fcf('0x1'));var logger=require('../../config/logger')(_0x0fcf('0x2'));var moment=require(_0x0fcf('0x3'));var BPromise=require(_0x0fcf('0x4'));var rp=require(_0x0fcf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0fcf('0x6'));var config=require(_0x0fcf('0x7'));var attributes=require(_0x0fcf('0x8'));var integrations=require(_0x0fcf('0x9'));module[_0x0fcf('0xa')]=function(_0x1a7b03,_0x61bbb9){return _0x1a7b03[_0x0fcf('0xb')]('ServicenowAccount',attributes,{'tableName':_0x0fcf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xeda8=['path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','ServicenowAccount','int_servicenow_accounts','lodash','util','api','moment','bluebird','request-promise'];(function(_0x45a12e,_0x198eb9){var _0x22cacc=function(_0x3dbf6e){while(--_0x3dbf6e){_0x45a12e['push'](_0x45a12e['shift']());}};_0x22cacc(++_0x198eb9);}(_0xeda8,0x104));var _0x8eda=function(_0xfcb5c0,_0x7ae07d){_0xfcb5c0=_0xfcb5c0-0x0;var _0x559f38=_0xeda8[_0xfcb5c0];return _0x559f38;};'use strict';var _=require(_0x8eda('0x0'));var util=require(_0x8eda('0x1'));var logger=require('../../config/logger')(_0x8eda('0x2'));var moment=require(_0x8eda('0x3'));var BPromise=require(_0x8eda('0x4'));var rp=require(_0x8eda('0x5'));var fs=require('fs');var path=require(_0x8eda('0x6'));var rimraf=require(_0x8eda('0x7'));var config=require(_0x8eda('0x8'));var attributes=require(_0x8eda('0x9'));var integrations=require(_0x8eda('0xa'));module[_0x8eda('0xb')]=function(_0x349361,_0x32abe8){return _0x349361['define'](_0x8eda('0xc'),attributes,{'tableName':_0x8eda('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d5b9cb3..fd7d2af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6324=['model','ShowServicenowAccount','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetServicenowAccount','ServicenowAccount','options','raw','where','attributes','limit','include','map'];(function(_0x58c851,_0x1f3d96){var _0x534d8a=function(_0x10c1a0){while(--_0x10c1a0){_0x58c851['push'](_0x58c851['shift']());}};_0x534d8a(++_0x1f3d96);}(_0x6324,0xa2));var _0x4632=function(_0xcf2382,_0x1da16e){_0xcf2382=_0xcf2382-0x0;var _0x1ade36=_0x6324[_0xcf2382];return _0x1ade36;};'use strict';var _=require('lodash');var util=require(_0x4632('0x0'));var moment=require(_0x4632('0x1'));var BPromise=require(_0x4632('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4632('0x3'));var db=require(_0x4632('0x4'))['db'];var utils=require(_0x4632('0x5'));var logger=require(_0x4632('0x6'))('rpc');var config=require(_0x4632('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4632('0x8')][_0x4632('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x394be9,_0x317688,_0x52cdf1){return new BPromise(function(_0x4370b0,_0x2e1208){return client[_0x4632('0xa')](_0x394be9,_0x52cdf1)[_0x4632('0xb')](function(_0x12f294){logger[_0x4632('0xc')](_0x4632('0xd'),_0x317688,_0x4632('0xe'));logger[_0x4632('0xf')](_0x4632('0x10'),_0x317688,_0x4632('0xe'),JSON[_0x4632('0x11')](_0x12f294));if(_0x12f294[_0x4632('0x12')]){if(_0x12f294[_0x4632('0x12')][_0x4632('0x13')]===0x1f4){logger['error'](_0x4632('0xd'),_0x317688,_0x12f294[_0x4632('0x12')][_0x4632('0x14')]);return _0x2e1208(_0x12f294[_0x4632('0x12')][_0x4632('0x14')]);}logger[_0x4632('0x12')]('ServicenowAccount,\x20%s,\x20%s',_0x317688,_0x12f294[_0x4632('0x12')][_0x4632('0x14')]);return _0x4370b0(_0x12f294[_0x4632('0x12')][_0x4632('0x14')]);}else{logger[_0x4632('0xc')]('ServicenowAccount,\x20%s,\x20%s',_0x317688,_0x4632('0xe'));_0x4370b0(_0x12f294['result']['message']);}})['catch'](function(_0x249db6){logger[_0x4632('0x12')](_0x4632('0xd'),_0x317688,_0x249db6);_0x2e1208(_0x249db6);});});}exports[_0x4632('0x15')]=function(_0x3de07f){var _0x5b4562=this;return new Promise(function(_0x58063d,_0x283312){return db[_0x4632('0x16')]['findAll']({'raw':_0x3de07f[_0x4632('0x17')]?_0x3de07f[_0x4632('0x17')][_0x4632('0x18')]===undefined?!![]:![]:!![],'where':_0x3de07f[_0x4632('0x17')]?_0x3de07f[_0x4632('0x17')][_0x4632('0x19')]||null:null,'attributes':_0x3de07f['options']?_0x3de07f[_0x4632('0x17')][_0x4632('0x1a')]||null:null,'limit':_0x3de07f[_0x4632('0x17')]?_0x3de07f['options'][_0x4632('0x1b')]||null:null,'include':_0x3de07f[_0x4632('0x17')]?_0x3de07f['options'][_0x4632('0x1c')]?_[_0x4632('0x1d')](_0x3de07f['options'][_0x4632('0x1c')],function(_0x4fc2b4){return{'model':db[_0x4fc2b4[_0x4632('0x1e')]],'as':_0x4fc2b4['as'],'attributes':_0x4fc2b4['attributes'],'include':_0x4fc2b4[_0x4632('0x1c')]?_['map'](_0x4fc2b4['include'],function(_0x2f75a8){return{'model':db[_0x2f75a8[_0x4632('0x1e')]],'as':_0x2f75a8['as'],'attributes':_0x2f75a8['attributes'],'include':_0x2f75a8[_0x4632('0x1c')]?_['map'](_0x2f75a8[_0x4632('0x1c')],function(_0x5d5aaa){return{'model':db[_0x5d5aaa[_0x4632('0x1e')]],'as':_0x5d5aaa['as'],'attributes':_0x5d5aaa[_0x4632('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x232ac4){logger[_0x4632('0xc')](_0x4632('0x15'),_0x3de07f);logger[_0x4632('0xf')](_0x4632('0x15'),_0x3de07f,JSON[_0x4632('0x11')](_0x232ac4));_0x58063d(_0x232ac4);})['catch'](function(_0x275368){logger[_0x4632('0x12')](_0x4632('0x15'),_0x275368[_0x4632('0x14')],_0x3de07f);_0x283312(_0x5b4562[_0x4632('0x12')](0x1f4,_0x275368[_0x4632('0x14')]));});});};exports[_0x4632('0x1f')]=function(_0x357b9e){var _0x29c47e=this;return new Promise(function(_0x39a297,_0xe56d6b){return db[_0x4632('0x16')]['find']({'raw':_0x357b9e[_0x4632('0x17')]?_0x357b9e['options'][_0x4632('0x18')]===undefined?!![]:![]:!![],'where':_0x357b9e[_0x4632('0x17')]?_0x357b9e[_0x4632('0x17')][_0x4632('0x19')]||null:null,'attributes':_0x357b9e['options']?_0x357b9e[_0x4632('0x17')][_0x4632('0x1a')]||null:null,'include':_0x357b9e[_0x4632('0x17')]?_0x357b9e['options'][_0x4632('0x1c')]?_[_0x4632('0x1d')](_0x357b9e[_0x4632('0x17')][_0x4632('0x1c')],function(_0x1bcf86){return{'model':db[_0x1bcf86[_0x4632('0x1e')]],'as':_0x1bcf86['as'],'attributes':_0x1bcf86[_0x4632('0x1a')],'include':_0x1bcf86[_0x4632('0x1c')]?_[_0x4632('0x1d')](_0x1bcf86[_0x4632('0x1c')],function(_0x351b16){return{'model':db[_0x351b16['model']],'as':_0x351b16['as'],'attributes':_0x351b16[_0x4632('0x1a')],'include':_0x351b16[_0x4632('0x1c')]?_[_0x4632('0x1d')](_0x351b16[_0x4632('0x1c')],function(_0x7e0634){return{'model':db[_0x7e0634['model']],'as':_0x7e0634['as'],'attributes':_0x7e0634[_0x4632('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x4632('0xb')](function(_0x2f7481){logger[_0x4632('0xc')]('ShowServicenowAccount',_0x357b9e);logger[_0x4632('0xf')]('ShowServicenowAccount',_0x357b9e,JSON[_0x4632('0x11')](_0x2f7481));_0x39a297(_0x2f7481);})['catch'](function(_0x52ba91){logger[_0x4632('0x12')](_0x4632('0x1f'),_0x52ba91[_0x4632('0x14')],_0x357b9e);_0xe56d6b(_0x29c47e[_0x4632('0x12')](0x1f4,_0x52ba91[_0x4632('0x14')]));});});};
\ No newline at end of file
+var _0x8d44=['GetServicenowAccount','options','raw','attributes','include','map','model','debug','stringify','ShowServicenowAccount','ServicenowAccount','find','where','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','ServicenowAccount,\x20%s,\x20%s,\x20%s','error','code','ServicenowAccount,\x20%s,\x20%s','message','catch'];(function(_0x55a89d,_0x584ea7){var _0x1b0e5a=function(_0x2f9b88){while(--_0x2f9b88){_0x55a89d['push'](_0x55a89d['shift']());}};_0x1b0e5a(++_0x584ea7);}(_0x8d44,0x73));var _0x48d4=function(_0x32a5bc,_0x2f974f){_0x32a5bc=_0x32a5bc-0x0;var _0x39f8ce=_0x8d44[_0x32a5bc];return _0x39f8ce;};'use strict';var _=require(_0x48d4('0x0'));var util=require(_0x48d4('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x48d4('0x2'));var fs=require('fs');var Redis=require(_0x48d4('0x3'));var db=require(_0x48d4('0x4'))['db'];var utils=require(_0x48d4('0x5'));var logger=require('../../config/logger')(_0x48d4('0x6'));var config=require(_0x48d4('0x7'));var jayson=require(_0x48d4('0x8'));var client=jayson[_0x48d4('0x9')][_0x48d4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4b5a88,_0xb8737,_0x5254c5){return new BPromise(function(_0x5dd693,_0x3fcc9e){return client[_0x48d4('0xb')](_0x4b5a88,_0x5254c5)[_0x48d4('0xc')](function(_0xac9394){logger[_0x48d4('0xd')]('ServicenowAccount,\x20%s,\x20%s',_0xb8737,_0x48d4('0xe'));logger['debug'](_0x48d4('0xf'),_0xb8737,_0x48d4('0xe'),JSON['stringify'](_0xac9394));if(_0xac9394[_0x48d4('0x10')]){if(_0xac9394[_0x48d4('0x10')][_0x48d4('0x11')]===0x1f4){logger[_0x48d4('0x10')](_0x48d4('0x12'),_0xb8737,_0xac9394[_0x48d4('0x10')][_0x48d4('0x13')]);return _0x3fcc9e(_0xac9394['error'][_0x48d4('0x13')]);}logger[_0x48d4('0x10')](_0x48d4('0x12'),_0xb8737,_0xac9394[_0x48d4('0x10')][_0x48d4('0x13')]);return _0x5dd693(_0xac9394[_0x48d4('0x10')]['message']);}else{logger[_0x48d4('0xd')](_0x48d4('0x12'),_0xb8737,_0x48d4('0xe'));_0x5dd693(_0xac9394['result'][_0x48d4('0x13')]);}})[_0x48d4('0x14')](function(_0x54f403){logger[_0x48d4('0x10')](_0x48d4('0x12'),_0xb8737,_0x54f403);_0x3fcc9e(_0x54f403);});});}exports[_0x48d4('0x15')]=function(_0x57dc61){var _0x1f4f10=this;return new Promise(function(_0x4f3c4f,_0x3d300c){return db['ServicenowAccount']['findAll']({'raw':_0x57dc61[_0x48d4('0x16')]?_0x57dc61[_0x48d4('0x16')][_0x48d4('0x17')]===undefined?!![]:![]:!![],'where':_0x57dc61[_0x48d4('0x16')]?_0x57dc61['options']['where']||null:null,'attributes':_0x57dc61['options']?_0x57dc61[_0x48d4('0x16')][_0x48d4('0x18')]||null:null,'limit':_0x57dc61[_0x48d4('0x16')]?_0x57dc61['options']['limit']||null:null,'include':_0x57dc61[_0x48d4('0x16')]?_0x57dc61[_0x48d4('0x16')][_0x48d4('0x19')]?_[_0x48d4('0x1a')](_0x57dc61[_0x48d4('0x16')]['include'],function(_0x5cdcb2){return{'model':db[_0x5cdcb2[_0x48d4('0x1b')]],'as':_0x5cdcb2['as'],'attributes':_0x5cdcb2[_0x48d4('0x18')],'include':_0x5cdcb2[_0x48d4('0x19')]?_[_0x48d4('0x1a')](_0x5cdcb2['include'],function(_0x25db38){return{'model':db[_0x25db38['model']],'as':_0x25db38['as'],'attributes':_0x25db38['attributes'],'include':_0x25db38[_0x48d4('0x19')]?_[_0x48d4('0x1a')](_0x25db38['include'],function(_0x292d8c){return{'model':db[_0x292d8c['model']],'as':_0x292d8c['as'],'attributes':_0x292d8c[_0x48d4('0x18')]};}):[]};}):[]};}):[]:[]})[_0x48d4('0xc')](function(_0x35fed4){logger[_0x48d4('0xd')](_0x48d4('0x15'),_0x57dc61);logger[_0x48d4('0x1c')](_0x48d4('0x15'),_0x57dc61,JSON[_0x48d4('0x1d')](_0x35fed4));_0x4f3c4f(_0x35fed4);})[_0x48d4('0x14')](function(_0x268047){logger['error'](_0x48d4('0x15'),_0x268047[_0x48d4('0x13')],_0x57dc61);_0x3d300c(_0x1f4f10[_0x48d4('0x10')](0x1f4,_0x268047[_0x48d4('0x13')]));});});};exports[_0x48d4('0x1e')]=function(_0x13673e){var _0x5671a0=this;return new Promise(function(_0x21b2bb,_0x1e247c){return db[_0x48d4('0x1f')][_0x48d4('0x20')]({'raw':_0x13673e[_0x48d4('0x16')]?_0x13673e[_0x48d4('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x13673e[_0x48d4('0x16')]?_0x13673e[_0x48d4('0x16')][_0x48d4('0x21')]||null:null,'attributes':_0x13673e[_0x48d4('0x16')]?_0x13673e['options'][_0x48d4('0x18')]||null:null,'include':_0x13673e[_0x48d4('0x16')]?_0x13673e[_0x48d4('0x16')][_0x48d4('0x19')]?_[_0x48d4('0x1a')](_0x13673e[_0x48d4('0x16')]['include'],function(_0xf315c0){return{'model':db[_0xf315c0[_0x48d4('0x1b')]],'as':_0xf315c0['as'],'attributes':_0xf315c0['attributes'],'include':_0xf315c0['include']?_[_0x48d4('0x1a')](_0xf315c0['include'],function(_0x4f02a6){return{'model':db[_0x4f02a6[_0x48d4('0x1b')]],'as':_0x4f02a6['as'],'attributes':_0x4f02a6[_0x48d4('0x18')],'include':_0x4f02a6['include']?_[_0x48d4('0x1a')](_0x4f02a6[_0x48d4('0x19')],function(_0x5d8b04){return{'model':db[_0x5d8b04[_0x48d4('0x1b')]],'as':_0x5d8b04['as'],'attributes':_0x5d8b04['attributes']};}):[]};}):[]};}):[]:[]})[_0x48d4('0xc')](function(_0x51cfd9){logger[_0x48d4('0xd')]('ShowServicenowAccount',_0x13673e);logger['debug'](_0x48d4('0x1e'),_0x13673e,JSON[_0x48d4('0x1d')](_0x51cfd9));_0x21b2bb(_0x51cfd9);})[_0x48d4('0x14')](function(_0x5eb1bc){logger['error'](_0x48d4('0x1e'),_0x5eb1bc[_0x48d4('0x13')],_0x13673e);_0x1e247c(_0x5671a0['error'](0x1f4,_0x5eb1bc['message']));});});};
\ No newline at end of file
index b9371d5..5718693 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21f5=['get','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','put','/:id','update','delete','destroy','exports','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','isAuthenticated','index'];(function(_0x57592d,_0x402d7e){var _0x58cef5=function(_0x40c915){while(--_0x40c915){_0x57592d['push'](_0x57592d['shift']());}};_0x58cef5(++_0x402d7e);}(_0x21f5,0x15e));var _0x521f=function(_0x5bf08c,_0x5497b7){_0x5bf08c=_0x5bf08c-0x0;var _0x5576bc=_0x21f5[_0x5bf08c];return _0x5576bc;};'use strict';var multer=require(_0x521f('0x0'));var util=require('util');var path=require(_0x521f('0x1'));var timeout=require('connect-timeout');var express=require(_0x521f('0x2'));var router=express['Router']();var fs_extra=require(_0x521f('0x3'));var auth=require(_0x521f('0x4'));var interaction=require(_0x521f('0x5'));var config=require(_0x521f('0x6'));var controller=require(_0x521f('0x7'));router['get']('/',auth[_0x521f('0x8')](),controller[_0x521f('0x9')]);router[_0x521f('0xa')]('/:id',auth[_0x521f('0x8')](),controller[_0x521f('0xb')]);router['get'](_0x521f('0xc'),auth[_0x521f('0x8')](),controller[_0x521f('0xd')]);router[_0x521f('0xa')](_0x521f('0xe'),auth[_0x521f('0x8')](),controller[_0x521f('0xf')]);router[_0x521f('0xa')](_0x521f('0x10'),auth[_0x521f('0x8')](),controller['getDescriptions']);router[_0x521f('0x11')]('/',auth[_0x521f('0x8')](),controller['create']);router[_0x521f('0x12')](_0x521f('0x13'),auth['isAuthenticated'](),controller[_0x521f('0x14')]);router[_0x521f('0x15')](_0x521f('0x13'),auth[_0x521f('0x8')](),controller[_0x521f('0x16')]);module[_0x521f('0x17')]=router;
\ No newline at end of file
+var _0x72b1=['fs-extra','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','destroy','multer','util','path','connect-timeout','express','Router'];(function(_0x8a969d,_0x339d9f){var _0x1d8dc7=function(_0x283ec0){while(--_0x283ec0){_0x8a969d['push'](_0x8a969d['shift']());}};_0x1d8dc7(++_0x339d9f);}(_0x72b1,0x84));var _0x172b=function(_0x50bc59,_0xc824b5){_0x50bc59=_0x50bc59-0x0;var _0x394472=_0x72b1[_0x50bc59];return _0x394472;};'use strict';var multer=require(_0x172b('0x0'));var util=require(_0x172b('0x1'));var path=require(_0x172b('0x2'));var timeout=require(_0x172b('0x3'));var express=require(_0x172b('0x4'));var router=express[_0x172b('0x5')]();var fs_extra=require(_0x172b('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x172b('0x7'));var config=require(_0x172b('0x8'));var controller=require('./intServicenowConfiguration.controller');router[_0x172b('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x172b('0x9')](_0x172b('0xa'),auth[_0x172b('0xb')](),controller['show']);router[_0x172b('0x9')](_0x172b('0xc'),auth[_0x172b('0xb')](),controller[_0x172b('0xd')]);router[_0x172b('0x9')](_0x172b('0xe'),auth[_0x172b('0xb')](),controller[_0x172b('0xf')]);router['get'](_0x172b('0x10'),auth[_0x172b('0xb')](),controller[_0x172b('0x11')]);router[_0x172b('0x12')]('/',auth['isAuthenticated'](),controller[_0x172b('0x13')]);router[_0x172b('0x14')](_0x172b('0xa'),auth['isAuthenticated'](),controller[_0x172b('0x15')]);router['delete'](_0x172b('0xa'),auth[_0x172b('0xb')](),controller[_0x172b('0x16')]);module['exports']=router;
\ No newline at end of file
index a4621be..ad1cd4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4144=['sequelize','STRING'];(function(_0x259ee9,_0x120728){var _0x58e9ac=function(_0x8e23e3){while(--_0x8e23e3){_0x259ee9['push'](_0x259ee9['shift']());}};_0x58e9ac(++_0x120728);}(_0x4144,0xe2));var _0x4414=function(_0x403c8c,_0x5ad620){_0x403c8c=_0x403c8c-0x0;var _0x1a58c8=_0x4144[_0x403c8c];return _0x1a58c8;};'use strict';var Sequelize=require(_0x4414('0x0'));module['exports']={'name':{'type':Sequelize[_0x4414('0x1')]},'description':{'type':Sequelize[_0x4414('0x1')]}};
\ No newline at end of file
+var _0xa538=['STRING'];(function(_0x18c725,_0xf34fa9){var _0x5d0043=function(_0x10420e){while(--_0x10420e){_0x18c725['push'](_0x18c725['shift']());}};_0x5d0043(++_0xf34fa9);}(_0xa538,0x97));var _0x8a53=function(_0x35a2fc,_0x1ac4ed){_0x35a2fc=_0x35a2fc-0x0;var _0x102280=_0xa538[_0x35a2fc];return _0x102280;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x8a53('0x0')]},'description':{'type':Sequelize[_0x8a53('0x0')]}};
\ No newline at end of file
index 40aa09d..f028f4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc05a=['map','ServicenowConfiguration','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','find','getFields','findOne','ServicenowField','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','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','sendStatus','status','end','offset','limit','undefined','count','json','apply','reject','save','update','then','destroy','error','name','send'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0xc05a,0x1ca));var _0xac05=function(_0x5f4e48,_0x521cb6){_0x5f4e48=_0x5f4e48-0x0;var _0x4cb502=_0xc05a[_0x5f4e48];return _0x4cb502;};'use strict';var emlformat=require(_0xac05('0x0'));var rimraf=require(_0xac05('0x1'));var zipdir=require(_0xac05('0x2'));var jsonpatch=require(_0xac05('0x3'));var rp=require(_0xac05('0x4'));var moment=require('moment');var BPromise=require(_0xac05('0x5'));var Mustache=require(_0xac05('0x6'));var util=require(_0xac05('0x7'));var path=require(_0xac05('0x8'));var sox=require(_0xac05('0x9'));var csv=require('to-csv');var ejs=require(_0xac05('0xa'));var fs=require('fs');var fs_extra=require(_0xac05('0xb'));var _=require(_0xac05('0xc'));var squel=require(_0xac05('0xd'));var crypto=require(_0xac05('0xe'));var jsforce=require(_0xac05('0xf'));var deskjs=require(_0xac05('0x10'));var toCsv=require(_0xac05('0x11'));var querystring=require(_0xac05('0x12'));var Papa=require(_0xac05('0x13'));var Redis=require(_0xac05('0x14'));var authService=require(_0xac05('0x15'));var qs=require(_0xac05('0x16'));var as=require(_0xac05('0x17'));var hardwareService=require(_0xac05('0x18'));var logger=require(_0xac05('0x19'))(_0xac05('0x1a'));var utils=require(_0xac05('0x1b'));var config=require('../../config/environment');var licenseUtil=require(_0xac05('0x1c'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x200c95,_0x7baea){_0x7baea=_0x7baea||0xcc;return function(_0x560414){if(_0x560414){return _0x200c95[_0xac05('0x1d')](_0x7baea);}return _0x200c95[_0xac05('0x1e')](_0x7baea)[_0xac05('0x1f')]();};}function respondWithResult(_0xc682bb,_0x2b01c3){_0x2b01c3=_0x2b01c3||0xc8;return function(_0x4b9bbc){if(_0x4b9bbc){return _0xc682bb[_0xac05('0x1e')](_0x2b01c3)['json'](_0x4b9bbc);}};}function respondWithFilteredResult(_0xb10b2a,_0x5dcc8d){return function(_0x5860f1){if(_0x5860f1){var _0x37bf7c=typeof _0x5dcc8d[_0xac05('0x20')]==='undefined'&&typeof _0x5dcc8d[_0xac05('0x21')]===_0xac05('0x22');var _0x102121=_0x5860f1[_0xac05('0x23')];var _0x276d1b=_0x37bf7c?0x0:_0x5dcc8d[_0xac05('0x20')];var _0x15843b=_0x37bf7c?_0x5860f1['count']:_0x5dcc8d[_0xac05('0x20')]+_0x5dcc8d[_0xac05('0x21')];var _0x4b863f;if(_0x15843b>=_0x102121){_0x15843b=_0x102121;_0x4b863f=0xc8;}else{_0x4b863f=0xce;}_0xb10b2a['status'](_0x4b863f);return _0xb10b2a['set']('Content-Range',_0x276d1b+'-'+_0x15843b+'/'+_0x102121)[_0xac05('0x24')](_0x5860f1);}return null;};}function patchUpdates(_0x1dd763){return function(_0x597526){try{jsonpatch[_0xac05('0x25')](_0x597526,_0x1dd763,!![]);}catch(_0x5a81b9){return BPromise[_0xac05('0x26')](_0x5a81b9);}return _0x597526[_0xac05('0x27')]();};}function saveUpdates(_0x4c4402,_0x120a71){return function(_0x227cf9){if(_0x227cf9){return _0x227cf9[_0xac05('0x28')](_0x4c4402)[_0xac05('0x29')](function(_0x18225c){return _0x18225c;});}return null;};}function removeEntity(_0x4dfe50,_0x43bb04){return function(_0x107d52){if(_0x107d52){return _0x107d52[_0xac05('0x2a')]()['then'](function(){_0x4dfe50[_0xac05('0x1e')](0xcc)[_0xac05('0x1f')]();});}};}function handleEntityNotFound(_0x40a19c,_0x131565){return function(_0x20fb63){if(!_0x20fb63){_0x40a19c['sendStatus'](0x194);}return _0x20fb63;};}function handleError(_0x295eed,_0x4fac38){_0x4fac38=_0x4fac38||0x1f4;return function(_0x211029){logger[_0xac05('0x2b')](_0x211029['stack']);if(_0x211029[_0xac05('0x2c')]){delete _0x211029[_0xac05('0x2c')];}_0x295eed[_0xac05('0x1e')](_0x4fac38)[_0xac05('0x2d')](_0x211029);};}exports['index']=function(_0x940675,_0x468884){var _0x5b5947={},_0x2ac67b={},_0x5b3f42={'count':0x0,'rows':[]};var _0x3e5347=_[_0xac05('0x2e')](db[_0xac05('0x2f')]['rawAttributes'],function(_0x3bab21){return{'name':_0x3bab21['fieldName'],'type':_0x3bab21[_0xac05('0x30')][_0xac05('0x31')]};});_0x2ac67b['model']=_[_0xac05('0x2e')](_0x3e5347,'name');_0x2ac67b[_0xac05('0x32')]=_[_0xac05('0x33')](_0x940675[_0xac05('0x32')]);_0x2ac67b[_0xac05('0x34')]=_[_0xac05('0x35')](_0x2ac67b[_0xac05('0x36')],_0x2ac67b['query']);_0x5b5947['attributes']=_[_0xac05('0x35')](_0x2ac67b['model'],qs['fields'](_0x940675[_0xac05('0x32')][_0xac05('0x37')]));_0x5b5947[_0xac05('0x38')]=_0x5b5947['attributes'][_0xac05('0x39')]?_0x5b5947[_0xac05('0x38')]:_0x2ac67b['model'];if(!_0x940675[_0xac05('0x32')][_0xac05('0x3a')]('nolimit')){_0x5b5947[_0xac05('0x21')]=qs[_0xac05('0x21')](_0x940675['query'][_0xac05('0x21')]);_0x5b5947['offset']=qs[_0xac05('0x20')](_0x940675[_0xac05('0x32')][_0xac05('0x20')]);}_0x5b5947[_0xac05('0x3b')]=qs[_0xac05('0x3c')](_0x940675[_0xac05('0x32')]['sort']);_0x5b5947[_0xac05('0x3d')]=qs[_0xac05('0x34')](_[_0xac05('0x3e')](_0x940675[_0xac05('0x32')],_0x2ac67b[_0xac05('0x34')]),_0x3e5347);if(_0x940675[_0xac05('0x32')][_0xac05('0x3f')]){_0x5b5947['where']=_[_0xac05('0x40')](_0x5b5947[_0xac05('0x3d')],{'$or':_[_0xac05('0x2e')](_0x3e5347,function(_0x404658){if(_0x404658['type']!==_0xac05('0x41')){var _0xf500ea={};_0xf500ea[_0x404658[_0xac05('0x2c')]]={'$like':'%'+_0x940675[_0xac05('0x32')][_0xac05('0x3f')]+'%'};return _0xf500ea;}})});}_0x5b5947=_[_0xac05('0x40')]({},_0x5b5947,_0x940675[_0xac05('0x42')]);var _0x1b13c7={'where':_0x5b5947[_0xac05('0x3d')]};return db[_0xac05('0x2f')]['count'](_0x1b13c7)['then'](function(_0x5a5cbc){_0x5b3f42[_0xac05('0x23')]=_0x5a5cbc;if(_0x940675[_0xac05('0x32')][_0xac05('0x43')]){_0x5b5947[_0xac05('0x44')]=[{'all':!![]}];}return db[_0xac05('0x2f')][_0xac05('0x45')](_0x5b5947);})[_0xac05('0x29')](function(_0x5b84fb){_0x5b3f42[_0xac05('0x46')]=_0x5b84fb;return _0x5b3f42;})[_0xac05('0x29')](respondWithFilteredResult(_0x468884,_0x5b5947))[_0xac05('0x47')](handleError(_0x468884,null));};exports[_0xac05('0x48')]=function(_0x1b9b35,_0x86bbcf){var _0x3504f7={'raw':![],'where':{'id':_0x1b9b35[_0xac05('0x49')]['id']}},_0x4eef3f={};_0x4eef3f[_0xac05('0x36')]=_[_0xac05('0x33')](db['ServicenowConfiguration'][_0xac05('0x4a')]);_0x4eef3f[_0xac05('0x32')]=_['keys'](_0x1b9b35['query']);_0x4eef3f[_0xac05('0x34')]=_[_0xac05('0x35')](_0x4eef3f[_0xac05('0x36')],_0x4eef3f[_0xac05('0x32')]);_0x3504f7[_0xac05('0x38')]=_[_0xac05('0x35')](_0x4eef3f[_0xac05('0x36')],qs[_0xac05('0x37')](_0x1b9b35['query']['fields']));_0x3504f7['attributes']=_0x3504f7['attributes']['length']?_0x3504f7[_0xac05('0x38')]:_0x4eef3f[_0xac05('0x36')];if(_0x1b9b35['query'][_0xac05('0x43')]){_0x3504f7[_0xac05('0x44')]=[{'all':!![]}];}_0x3504f7=_[_0xac05('0x40')]({},_0x3504f7,_0x1b9b35[_0xac05('0x42')]);return db[_0xac05('0x2f')]['find'](_0x3504f7)['then'](handleEntityNotFound(_0x86bbcf,null))['then'](respondWithResult(_0x86bbcf,null))[_0xac05('0x47')](handleError(_0x86bbcf,null));};exports[_0xac05('0x4b')]=function(_0x3bdfa4,_0x4824a3){return db[_0xac05('0x2f')][_0xac05('0x4b')](_0x3bdfa4['body'],{})['then'](respondWithResult(_0x4824a3,0xc9))[_0xac05('0x47')](handleError(_0x4824a3,null));};exports[_0xac05('0x28')]=function(_0x6edf48,_0x4bc1b6){if(_0x6edf48[_0xac05('0x4c')]['id']){delete _0x6edf48[_0xac05('0x4c')]['id'];}return db[_0xac05('0x2f')][_0xac05('0x4d')]({'where':{'id':_0x6edf48[_0xac05('0x49')]['id']}})[_0xac05('0x29')](handleEntityNotFound(_0x4bc1b6,null))[_0xac05('0x29')](saveUpdates(_0x6edf48[_0xac05('0x4c')],null))[_0xac05('0x29')](respondWithResult(_0x4bc1b6,null))[_0xac05('0x47')](handleError(_0x4bc1b6,null));};exports['destroy']=function(_0x55edc4,_0x2de22b){return db[_0xac05('0x2f')][_0xac05('0x4d')]({'where':{'id':_0x55edc4[_0xac05('0x49')]['id']}})[_0xac05('0x29')](handleEntityNotFound(_0x2de22b,null))[_0xac05('0x29')](removeEntity(_0x2de22b,null))[_0xac05('0x47')](handleError(_0x2de22b,null));};exports[_0xac05('0x4e')]=function(_0x54c0ab,_0x39a17b,_0x305228){var _0x480b3d={};var _0x176b6b={};var _0x3d2b48;var _0x5e0704;return db[_0xac05('0x2f')][_0xac05('0x4f')]({'where':{'id':_0x54c0ab['params']['id']}})['then'](handleEntityNotFound(_0x39a17b,null))['then'](function(_0x3ca70d){if(_0x3ca70d){_0x3d2b48=_0x3ca70d;_0x176b6b[_0xac05('0x36')]=_[_0xac05('0x33')](db[_0xac05('0x50')][_0xac05('0x4a')]);_0x176b6b['query']=_[_0xac05('0x33')](_0x54c0ab['query']);_0x176b6b[_0xac05('0x34')]=_[_0xac05('0x35')](_0x176b6b[_0xac05('0x36')],_0x176b6b[_0xac05('0x32')]);_0x480b3d['attributes']=_[_0xac05('0x35')](_0x176b6b[_0xac05('0x36')],qs[_0xac05('0x37')](_0x54c0ab[_0xac05('0x32')][_0xac05('0x37')]));_0x480b3d[_0xac05('0x38')]=_0x480b3d[_0xac05('0x38')][_0xac05('0x39')]?_0x480b3d[_0xac05('0x38')]:_0x176b6b[_0xac05('0x36')];_0x480b3d['order']=qs[_0xac05('0x3c')](_0x54c0ab[_0xac05('0x32')][_0xac05('0x3c')]);_0x480b3d[_0xac05('0x3d')]=qs['filters'](_[_0xac05('0x3e')](_0x54c0ab[_0xac05('0x32')],_0x176b6b['filters']));if(_0x54c0ab[_0xac05('0x32')][_0xac05('0x3f')]){_0x480b3d[_0xac05('0x3d')]=_[_0xac05('0x40')](_0x480b3d[_0xac05('0x3d')],{'$or':_[_0xac05('0x2e')](_0x480b3d[_0xac05('0x38')],function(_0x48cbc4){var _0x449107={};_0x449107[_0x48cbc4]={'$like':'%'+_0x54c0ab['query'][_0xac05('0x3f')]+'%'};return _0x449107;})});}_0x480b3d=_[_0xac05('0x40')]({},_0x480b3d,_0x54c0ab[_0xac05('0x42')]);return _0x3d2b48[_0xac05('0x4e')](_0x480b3d);}})['then'](function(_0x39e99e){if(_0x39e99e){_0x5e0704=_0x39e99e[_0xac05('0x39')];if(!_0x54c0ab[_0xac05('0x32')][_0xac05('0x3a')](_0xac05('0x51'))){_0x480b3d[_0xac05('0x21')]=qs[_0xac05('0x21')](_0x54c0ab['query'][_0xac05('0x21')]);_0x480b3d[_0xac05('0x20')]=qs[_0xac05('0x20')](_0x54c0ab['query'][_0xac05('0x20')]);}return _0x3d2b48['getFields'](_0x480b3d);}})[_0xac05('0x29')](function(_0x1f942e){if(_0x1f942e){return _0x1f942e?{'count':_0x5e0704,'rows':_0x1f942e}:null;}})['then'](respondWithResult(_0x39a17b,null))[_0xac05('0x47')](handleError(_0x39a17b,null));};exports[_0xac05('0x52')]=function(_0x34814d,_0x3cd1b7,_0x34b591){var _0x444072={};var _0x5d3bfd={};var _0x5a7efc;var _0x4e2faf;return db[_0xac05('0x2f')][_0xac05('0x4f')]({'where':{'id':_0x34814d['params']['id']}})['then'](handleEntityNotFound(_0x3cd1b7,null))[_0xac05('0x29')](function(_0x250f4b){if(_0x250f4b){_0x5a7efc=_0x250f4b;_0x5d3bfd[_0xac05('0x36')]=_['keys'](db[_0xac05('0x50')][_0xac05('0x4a')]);_0x5d3bfd[_0xac05('0x32')]=_['keys'](_0x34814d[_0xac05('0x32')]);_0x5d3bfd[_0xac05('0x34')]=_[_0xac05('0x35')](_0x5d3bfd[_0xac05('0x36')],_0x5d3bfd[_0xac05('0x32')]);_0x444072[_0xac05('0x38')]=_[_0xac05('0x35')](_0x5d3bfd[_0xac05('0x36')],qs[_0xac05('0x37')](_0x34814d[_0xac05('0x32')]['fields']));_0x444072[_0xac05('0x38')]=_0x444072['attributes'][_0xac05('0x39')]?_0x444072['attributes']:_0x5d3bfd['model'];_0x444072[_0xac05('0x3b')]=qs[_0xac05('0x3c')](_0x34814d[_0xac05('0x32')][_0xac05('0x3c')]);_0x444072['where']=qs[_0xac05('0x34')](_[_0xac05('0x3e')](_0x34814d[_0xac05('0x32')],_0x5d3bfd[_0xac05('0x34')]));if(_0x34814d['query']['filter']){_0x444072['where']=_['merge'](_0x444072['where'],{'$or':_[_0xac05('0x2e')](_0x444072[_0xac05('0x38')],function(_0x26132b){var _0x211bda={};_0x211bda[_0x26132b]={'$like':'%'+_0x34814d['query']['filter']+'%'};return _0x211bda;})});}_0x444072=_[_0xac05('0x40')]({},_0x444072,_0x34814d[_0xac05('0x42')]);return _0x5a7efc[_0xac05('0x52')](_0x444072);}})[_0xac05('0x29')](function(_0x22d3c7){if(_0x22d3c7){_0x4e2faf=_0x22d3c7[_0xac05('0x39')];if(!_0x34814d[_0xac05('0x32')][_0xac05('0x3a')](_0xac05('0x51'))){_0x444072[_0xac05('0x21')]=qs[_0xac05('0x21')](_0x34814d[_0xac05('0x32')][_0xac05('0x21')]);_0x444072[_0xac05('0x20')]=qs[_0xac05('0x20')](_0x34814d[_0xac05('0x32')][_0xac05('0x20')]);}return _0x5a7efc[_0xac05('0x52')](_0x444072);}})['then'](function(_0x5e463f){if(_0x5e463f){return _0x5e463f?{'count':_0x4e2faf,'rows':_0x5e463f}:null;}})[_0xac05('0x29')](respondWithResult(_0x3cd1b7,null))[_0xac05('0x47')](handleError(_0x3cd1b7,null));};exports[_0xac05('0x53')]=function(_0x3f5450,_0x71ba04,_0x5cd876){var _0x44d5eb={};var _0x203012={};var _0x2c5827;var _0x4dcba8;return db[_0xac05('0x2f')][_0xac05('0x4f')]({'where':{'id':_0x3f5450['params']['id']}})[_0xac05('0x29')](handleEntityNotFound(_0x71ba04,null))[_0xac05('0x29')](function(_0x7d8a5b){if(_0x7d8a5b){_0x2c5827=_0x7d8a5b;_0x203012['model']=_[_0xac05('0x33')](db[_0xac05('0x50')]['rawAttributes']);_0x203012[_0xac05('0x32')]=_[_0xac05('0x33')](_0x3f5450[_0xac05('0x32')]);_0x203012[_0xac05('0x34')]=_['intersection'](_0x203012['model'],_0x203012[_0xac05('0x32')]);_0x44d5eb[_0xac05('0x38')]=_[_0xac05('0x35')](_0x203012[_0xac05('0x36')],qs[_0xac05('0x37')](_0x3f5450[_0xac05('0x32')][_0xac05('0x37')]));_0x44d5eb[_0xac05('0x38')]=_0x44d5eb[_0xac05('0x38')][_0xac05('0x39')]?_0x44d5eb[_0xac05('0x38')]:_0x203012[_0xac05('0x36')];_0x44d5eb['order']=qs[_0xac05('0x3c')](_0x3f5450['query'][_0xac05('0x3c')]);_0x44d5eb['where']=qs[_0xac05('0x34')](_[_0xac05('0x3e')](_0x3f5450[_0xac05('0x32')],_0x203012[_0xac05('0x34')]));if(_0x3f5450[_0xac05('0x32')]['filter']){_0x44d5eb['where']=_['merge'](_0x44d5eb[_0xac05('0x3d')],{'$or':_[_0xac05('0x2e')](_0x44d5eb[_0xac05('0x38')],function(_0x28e1ec){var _0x5bdb47={};_0x5bdb47[_0x28e1ec]={'$like':'%'+_0x3f5450[_0xac05('0x32')]['filter']+'%'};return _0x5bdb47;})});}_0x44d5eb=_[_0xac05('0x40')]({},_0x44d5eb,_0x3f5450['options']);return _0x2c5827[_0xac05('0x53')](_0x44d5eb);}})[_0xac05('0x29')](function(_0x3fc671){if(_0x3fc671){_0x4dcba8=_0x3fc671['length'];if(!_0x3f5450[_0xac05('0x32')]['hasOwnProperty'](_0xac05('0x51'))){_0x44d5eb[_0xac05('0x21')]=qs[_0xac05('0x21')](_0x3f5450[_0xac05('0x32')][_0xac05('0x21')]);_0x44d5eb['offset']=qs['offset'](_0x3f5450['query'][_0xac05('0x20')]);}return _0x2c5827['getDescriptions'](_0x44d5eb);}})[_0xac05('0x29')](function(_0x15f012){if(_0x15f012){return _0x15f012?{'count':_0x4dcba8,'rows':_0x15f012}:null;}})[_0xac05('0x29')](respondWithResult(_0x71ba04,null))[_0xac05('0x47')](handleError(_0x71ba04,null));};
\ No newline at end of file
+var _0x1f39=['hasOwnProperty','getSubjects','nolimit','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','reject','save','update','then','destroy','stack','name','ServicenowConfiguration','rawAttributes','key','model','map','query','keys','filters','intersection','fields','attributes','length','sort','where','pick','filter','type','VIRTUAL','merge','options','include','findAll','show','params','find','catch','create','body','getFields','findOne','ServicenowField','order'];(function(_0x3c9522,_0x8fbacc){var _0x1728c4=function(_0x563dfc){while(--_0x563dfc){_0x3c9522['push'](_0x3c9522['shift']());}};_0x1728c4(++_0x8fbacc);}(_0x1f39,0x180));var _0x91f3=function(_0x52a9f2,_0x390847){_0x52a9f2=_0x52a9f2-0x0;var _0x25dc35=_0x1f39[_0x52a9f2];return _0x25dc35;};'use strict';var emlformat=require(_0x91f3('0x0'));var rimraf=require(_0x91f3('0x1'));var zipdir=require(_0x91f3('0x2'));var jsonpatch=require(_0x91f3('0x3'));var rp=require(_0x91f3('0x4'));var moment=require(_0x91f3('0x5'));var BPromise=require(_0x91f3('0x6'));var Mustache=require(_0x91f3('0x7'));var util=require(_0x91f3('0x8'));var path=require(_0x91f3('0x9'));var sox=require(_0x91f3('0xa'));var csv=require('to-csv');var ejs=require(_0x91f3('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x91f3('0xc'));var squel=require(_0x91f3('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x91f3('0xe'));var toCsv=require(_0x91f3('0xf'));var querystring=require(_0x91f3('0x10'));var Papa=require(_0x91f3('0x11'));var Redis=require(_0x91f3('0x12'));var authService=require(_0x91f3('0x13'));var qs=require(_0x91f3('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x91f3('0x15'))('api');var utils=require(_0x91f3('0x16'));var config=require(_0x91f3('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x91f3('0x18'))['db'];function respondWithStatusCode(_0x69bd69,_0x3833fd){_0x3833fd=_0x3833fd||0xcc;return function(_0xe70f38){if(_0xe70f38){return _0x69bd69[_0x91f3('0x19')](_0x3833fd);}return _0x69bd69[_0x91f3('0x1a')](_0x3833fd)[_0x91f3('0x1b')]();};}function respondWithResult(_0x24454f,_0x40cf85){_0x40cf85=_0x40cf85||0xc8;return function(_0x2f3d4d){if(_0x2f3d4d){return _0x24454f['status'](_0x40cf85)[_0x91f3('0x1c')](_0x2f3d4d);}};}function respondWithFilteredResult(_0x42a155,_0x1769ba){return function(_0x2d7ba5){if(_0x2d7ba5){var _0x9dc2=typeof _0x1769ba[_0x91f3('0x1d')]==='undefined'&&typeof _0x1769ba['limit']===_0x91f3('0x1e');var _0x3dbf83=_0x2d7ba5['count'];var _0x14ef47=_0x9dc2?0x0:_0x1769ba[_0x91f3('0x1d')];var _0x3b0674=_0x9dc2?_0x2d7ba5['count']:_0x1769ba[_0x91f3('0x1d')]+_0x1769ba[_0x91f3('0x1f')];var _0x57c581;if(_0x3b0674>=_0x3dbf83){_0x3b0674=_0x3dbf83;_0x57c581=0xc8;}else{_0x57c581=0xce;}_0x42a155[_0x91f3('0x1a')](_0x57c581);return _0x42a155[_0x91f3('0x20')]('Content-Range',_0x14ef47+'-'+_0x3b0674+'/'+_0x3dbf83)['json'](_0x2d7ba5);}return null;};}function patchUpdates(_0x35cab4){return function(_0x1f6d7e){try{jsonpatch['apply'](_0x1f6d7e,_0x35cab4,!![]);}catch(_0x132938){return BPromise[_0x91f3('0x21')](_0x132938);}return _0x1f6d7e[_0x91f3('0x22')]();};}function saveUpdates(_0x45258c,_0x43f67){return function(_0x2157ef){if(_0x2157ef){return _0x2157ef[_0x91f3('0x23')](_0x45258c)[_0x91f3('0x24')](function(_0x4929df){return _0x4929df;});}return null;};}function removeEntity(_0x41b91b,_0x23263d){return function(_0x6309b1){if(_0x6309b1){return _0x6309b1[_0x91f3('0x25')]()[_0x91f3('0x24')](function(){_0x41b91b[_0x91f3('0x1a')](0xcc)[_0x91f3('0x1b')]();});}};}function handleEntityNotFound(_0x5539e8,_0x4a7115){return function(_0x575d07){if(!_0x575d07){_0x5539e8['sendStatus'](0x194);}return _0x575d07;};}function handleError(_0xc38b4,_0x84b852){_0x84b852=_0x84b852||0x1f4;return function(_0x494ba0){logger['error'](_0x494ba0[_0x91f3('0x26')]);if(_0x494ba0[_0x91f3('0x27')]){delete _0x494ba0[_0x91f3('0x27')];}_0xc38b4[_0x91f3('0x1a')](_0x84b852)['send'](_0x494ba0);};}exports['index']=function(_0x37e42f,_0x625a73){var _0x386110={},_0x5419c8={},_0x250e04={'count':0x0,'rows':[]};var _0x392c7d=_['map'](db[_0x91f3('0x28')][_0x91f3('0x29')],function(_0x169263){return{'name':_0x169263['fieldName'],'type':_0x169263['type'][_0x91f3('0x2a')]};});_0x5419c8[_0x91f3('0x2b')]=_[_0x91f3('0x2c')](_0x392c7d,_0x91f3('0x27'));_0x5419c8[_0x91f3('0x2d')]=_[_0x91f3('0x2e')](_0x37e42f[_0x91f3('0x2d')]);_0x5419c8[_0x91f3('0x2f')]=_[_0x91f3('0x30')](_0x5419c8['model'],_0x5419c8[_0x91f3('0x2d')]);_0x386110['attributes']=_[_0x91f3('0x30')](_0x5419c8['model'],qs[_0x91f3('0x31')](_0x37e42f['query'][_0x91f3('0x31')]));_0x386110[_0x91f3('0x32')]=_0x386110['attributes'][_0x91f3('0x33')]?_0x386110[_0x91f3('0x32')]:_0x5419c8[_0x91f3('0x2b')];if(!_0x37e42f['query']['hasOwnProperty']('nolimit')){_0x386110[_0x91f3('0x1f')]=qs[_0x91f3('0x1f')](_0x37e42f[_0x91f3('0x2d')][_0x91f3('0x1f')]);_0x386110[_0x91f3('0x1d')]=qs[_0x91f3('0x1d')](_0x37e42f['query'][_0x91f3('0x1d')]);}_0x386110['order']=qs[_0x91f3('0x34')](_0x37e42f[_0x91f3('0x2d')][_0x91f3('0x34')]);_0x386110[_0x91f3('0x35')]=qs['filters'](_[_0x91f3('0x36')](_0x37e42f[_0x91f3('0x2d')],_0x5419c8[_0x91f3('0x2f')]),_0x392c7d);if(_0x37e42f[_0x91f3('0x2d')][_0x91f3('0x37')]){_0x386110['where']=_['merge'](_0x386110[_0x91f3('0x35')],{'$or':_['map'](_0x392c7d,function(_0x26fb73){if(_0x26fb73[_0x91f3('0x38')]!==_0x91f3('0x39')){var _0x1382ca={};_0x1382ca[_0x26fb73[_0x91f3('0x27')]]={'$like':'%'+_0x37e42f[_0x91f3('0x2d')]['filter']+'%'};return _0x1382ca;}})});}_0x386110=_[_0x91f3('0x3a')]({},_0x386110,_0x37e42f[_0x91f3('0x3b')]);var _0x163b03={'where':_0x386110['where']};return db[_0x91f3('0x28')]['count'](_0x163b03)[_0x91f3('0x24')](function(_0x335e45){_0x250e04['count']=_0x335e45;if(_0x37e42f[_0x91f3('0x2d')]['includeAll']){_0x386110[_0x91f3('0x3c')]=[{'all':!![]}];}return db[_0x91f3('0x28')][_0x91f3('0x3d')](_0x386110);})[_0x91f3('0x24')](function(_0x4986c9){_0x250e04['rows']=_0x4986c9;return _0x250e04;})[_0x91f3('0x24')](respondWithFilteredResult(_0x625a73,_0x386110))['catch'](handleError(_0x625a73,null));};exports[_0x91f3('0x3e')]=function(_0x28ceda,_0x2b22f7){var _0x456c43={'raw':![],'where':{'id':_0x28ceda[_0x91f3('0x3f')]['id']}},_0x20b424={};_0x20b424[_0x91f3('0x2b')]=_[_0x91f3('0x2e')](db[_0x91f3('0x28')][_0x91f3('0x29')]);_0x20b424['query']=_[_0x91f3('0x2e')](_0x28ceda[_0x91f3('0x2d')]);_0x20b424[_0x91f3('0x2f')]=_[_0x91f3('0x30')](_0x20b424[_0x91f3('0x2b')],_0x20b424[_0x91f3('0x2d')]);_0x456c43['attributes']=_[_0x91f3('0x30')](_0x20b424[_0x91f3('0x2b')],qs['fields'](_0x28ceda[_0x91f3('0x2d')][_0x91f3('0x31')]));_0x456c43[_0x91f3('0x32')]=_0x456c43['attributes'][_0x91f3('0x33')]?_0x456c43[_0x91f3('0x32')]:_0x20b424[_0x91f3('0x2b')];if(_0x28ceda[_0x91f3('0x2d')]['includeAll']){_0x456c43[_0x91f3('0x3c')]=[{'all':!![]}];}_0x456c43=_['merge']({},_0x456c43,_0x28ceda[_0x91f3('0x3b')]);return db[_0x91f3('0x28')][_0x91f3('0x40')](_0x456c43)[_0x91f3('0x24')](handleEntityNotFound(_0x2b22f7,null))[_0x91f3('0x24')](respondWithResult(_0x2b22f7,null))[_0x91f3('0x41')](handleError(_0x2b22f7,null));};exports[_0x91f3('0x42')]=function(_0x534f9d,_0x180ccc){return db[_0x91f3('0x28')][_0x91f3('0x42')](_0x534f9d['body'],{})[_0x91f3('0x24')](respondWithResult(_0x180ccc,0xc9))[_0x91f3('0x41')](handleError(_0x180ccc,null));};exports[_0x91f3('0x23')]=function(_0x183996,_0xef5588){if(_0x183996[_0x91f3('0x43')]['id']){delete _0x183996[_0x91f3('0x43')]['id'];}return db[_0x91f3('0x28')][_0x91f3('0x40')]({'where':{'id':_0x183996[_0x91f3('0x3f')]['id']}})['then'](handleEntityNotFound(_0xef5588,null))[_0x91f3('0x24')](saveUpdates(_0x183996[_0x91f3('0x43')],null))[_0x91f3('0x24')](respondWithResult(_0xef5588,null))['catch'](handleError(_0xef5588,null));};exports['destroy']=function(_0x43e264,_0x13bd36){return db[_0x91f3('0x28')][_0x91f3('0x40')]({'where':{'id':_0x43e264[_0x91f3('0x3f')]['id']}})[_0x91f3('0x24')](handleEntityNotFound(_0x13bd36,null))['then'](removeEntity(_0x13bd36,null))['catch'](handleError(_0x13bd36,null));};exports[_0x91f3('0x44')]=function(_0x209d55,_0xd575cb,_0x3c0af7){var _0x5f56d9={};var _0x4add5a={};var _0x1aa640;var _0x19ba27;return db['ServicenowConfiguration'][_0x91f3('0x45')]({'where':{'id':_0x209d55[_0x91f3('0x3f')]['id']}})[_0x91f3('0x24')](handleEntityNotFound(_0xd575cb,null))[_0x91f3('0x24')](function(_0x167448){if(_0x167448){_0x1aa640=_0x167448;_0x4add5a[_0x91f3('0x2b')]=_[_0x91f3('0x2e')](db[_0x91f3('0x46')][_0x91f3('0x29')]);_0x4add5a[_0x91f3('0x2d')]=_[_0x91f3('0x2e')](_0x209d55[_0x91f3('0x2d')]);_0x4add5a['filters']=_['intersection'](_0x4add5a[_0x91f3('0x2b')],_0x4add5a[_0x91f3('0x2d')]);_0x5f56d9[_0x91f3('0x32')]=_[_0x91f3('0x30')](_0x4add5a[_0x91f3('0x2b')],qs[_0x91f3('0x31')](_0x209d55[_0x91f3('0x2d')][_0x91f3('0x31')]));_0x5f56d9[_0x91f3('0x32')]=_0x5f56d9[_0x91f3('0x32')][_0x91f3('0x33')]?_0x5f56d9[_0x91f3('0x32')]:_0x4add5a['model'];_0x5f56d9[_0x91f3('0x47')]=qs[_0x91f3('0x34')](_0x209d55['query'][_0x91f3('0x34')]);_0x5f56d9[_0x91f3('0x35')]=qs[_0x91f3('0x2f')](_[_0x91f3('0x36')](_0x209d55[_0x91f3('0x2d')],_0x4add5a[_0x91f3('0x2f')]));if(_0x209d55[_0x91f3('0x2d')][_0x91f3('0x37')]){_0x5f56d9['where']=_['merge'](_0x5f56d9[_0x91f3('0x35')],{'$or':_[_0x91f3('0x2c')](_0x5f56d9[_0x91f3('0x32')],function(_0x4617e1){var _0x19bb90={};_0x19bb90[_0x4617e1]={'$like':'%'+_0x209d55['query'][_0x91f3('0x37')]+'%'};return _0x19bb90;})});}_0x5f56d9=_[_0x91f3('0x3a')]({},_0x5f56d9,_0x209d55[_0x91f3('0x3b')]);return _0x1aa640['getFields'](_0x5f56d9);}})[_0x91f3('0x24')](function(_0x30b9bb){if(_0x30b9bb){_0x19ba27=_0x30b9bb[_0x91f3('0x33')];if(!_0x209d55[_0x91f3('0x2d')][_0x91f3('0x48')]('nolimit')){_0x5f56d9[_0x91f3('0x1f')]=qs[_0x91f3('0x1f')](_0x209d55[_0x91f3('0x2d')][_0x91f3('0x1f')]);_0x5f56d9['offset']=qs[_0x91f3('0x1d')](_0x209d55['query'][_0x91f3('0x1d')]);}return _0x1aa640[_0x91f3('0x44')](_0x5f56d9);}})[_0x91f3('0x24')](function(_0x47663a){if(_0x47663a){return _0x47663a?{'count':_0x19ba27,'rows':_0x47663a}:null;}})[_0x91f3('0x24')](respondWithResult(_0xd575cb,null))[_0x91f3('0x41')](handleError(_0xd575cb,null));};exports[_0x91f3('0x49')]=function(_0x812d93,_0x39b72e,_0x173e11){var _0x6aa6b2={};var _0x12ffbb={};var _0x10096c;var _0x483d1f;return db[_0x91f3('0x28')][_0x91f3('0x45')]({'where':{'id':_0x812d93[_0x91f3('0x3f')]['id']}})[_0x91f3('0x24')](handleEntityNotFound(_0x39b72e,null))[_0x91f3('0x24')](function(_0x3442ad){if(_0x3442ad){_0x10096c=_0x3442ad;_0x12ffbb['model']=_['keys'](db['ServicenowField'][_0x91f3('0x29')]);_0x12ffbb[_0x91f3('0x2d')]=_['keys'](_0x812d93[_0x91f3('0x2d')]);_0x12ffbb[_0x91f3('0x2f')]=_[_0x91f3('0x30')](_0x12ffbb[_0x91f3('0x2b')],_0x12ffbb['query']);_0x6aa6b2[_0x91f3('0x32')]=_[_0x91f3('0x30')](_0x12ffbb[_0x91f3('0x2b')],qs[_0x91f3('0x31')](_0x812d93[_0x91f3('0x2d')]['fields']));_0x6aa6b2[_0x91f3('0x32')]=_0x6aa6b2[_0x91f3('0x32')][_0x91f3('0x33')]?_0x6aa6b2[_0x91f3('0x32')]:_0x12ffbb[_0x91f3('0x2b')];_0x6aa6b2[_0x91f3('0x47')]=qs[_0x91f3('0x34')](_0x812d93[_0x91f3('0x2d')][_0x91f3('0x34')]);_0x6aa6b2[_0x91f3('0x35')]=qs[_0x91f3('0x2f')](_['pick'](_0x812d93['query'],_0x12ffbb[_0x91f3('0x2f')]));if(_0x812d93[_0x91f3('0x2d')][_0x91f3('0x37')]){_0x6aa6b2[_0x91f3('0x35')]=_[_0x91f3('0x3a')](_0x6aa6b2[_0x91f3('0x35')],{'$or':_[_0x91f3('0x2c')](_0x6aa6b2[_0x91f3('0x32')],function(_0x35689c){var _0x17fc52={};_0x17fc52[_0x35689c]={'$like':'%'+_0x812d93['query'][_0x91f3('0x37')]+'%'};return _0x17fc52;})});}_0x6aa6b2=_['merge']({},_0x6aa6b2,_0x812d93[_0x91f3('0x3b')]);return _0x10096c[_0x91f3('0x49')](_0x6aa6b2);}})[_0x91f3('0x24')](function(_0xc02727){if(_0xc02727){_0x483d1f=_0xc02727[_0x91f3('0x33')];if(!_0x812d93[_0x91f3('0x2d')][_0x91f3('0x48')](_0x91f3('0x4a'))){_0x6aa6b2[_0x91f3('0x1f')]=qs[_0x91f3('0x1f')](_0x812d93[_0x91f3('0x2d')][_0x91f3('0x1f')]);_0x6aa6b2[_0x91f3('0x1d')]=qs[_0x91f3('0x1d')](_0x812d93[_0x91f3('0x2d')][_0x91f3('0x1d')]);}return _0x10096c[_0x91f3('0x49')](_0x6aa6b2);}})[_0x91f3('0x24')](function(_0x283b04){if(_0x283b04){return _0x283b04?{'count':_0x483d1f,'rows':_0x283b04}:null;}})[_0x91f3('0x24')](respondWithResult(_0x39b72e,null))[_0x91f3('0x41')](handleError(_0x39b72e,null));};exports[_0x91f3('0x4b')]=function(_0x1440a1,_0x4165b7,_0x26cf1b){var _0x5ddd3a={};var _0x474618={};var _0x2d9606;var _0x27a68e;return db[_0x91f3('0x28')][_0x91f3('0x45')]({'where':{'id':_0x1440a1[_0x91f3('0x3f')]['id']}})[_0x91f3('0x24')](handleEntityNotFound(_0x4165b7,null))['then'](function(_0x1094d9){if(_0x1094d9){_0x2d9606=_0x1094d9;_0x474618[_0x91f3('0x2b')]=_['keys'](db['ServicenowField'][_0x91f3('0x29')]);_0x474618[_0x91f3('0x2d')]=_['keys'](_0x1440a1[_0x91f3('0x2d')]);_0x474618[_0x91f3('0x2f')]=_[_0x91f3('0x30')](_0x474618[_0x91f3('0x2b')],_0x474618[_0x91f3('0x2d')]);_0x5ddd3a[_0x91f3('0x32')]=_[_0x91f3('0x30')](_0x474618['model'],qs['fields'](_0x1440a1[_0x91f3('0x2d')][_0x91f3('0x31')]));_0x5ddd3a['attributes']=_0x5ddd3a[_0x91f3('0x32')][_0x91f3('0x33')]?_0x5ddd3a['attributes']:_0x474618['model'];_0x5ddd3a['order']=qs[_0x91f3('0x34')](_0x1440a1[_0x91f3('0x2d')][_0x91f3('0x34')]);_0x5ddd3a[_0x91f3('0x35')]=qs[_0x91f3('0x2f')](_[_0x91f3('0x36')](_0x1440a1[_0x91f3('0x2d')],_0x474618[_0x91f3('0x2f')]));if(_0x1440a1[_0x91f3('0x2d')][_0x91f3('0x37')]){_0x5ddd3a['where']=_[_0x91f3('0x3a')](_0x5ddd3a[_0x91f3('0x35')],{'$or':_['map'](_0x5ddd3a[_0x91f3('0x32')],function(_0x77a440){var _0x57f01f={};_0x57f01f[_0x77a440]={'$like':'%'+_0x1440a1[_0x91f3('0x2d')][_0x91f3('0x37')]+'%'};return _0x57f01f;})});}_0x5ddd3a=_[_0x91f3('0x3a')]({},_0x5ddd3a,_0x1440a1[_0x91f3('0x3b')]);return _0x2d9606[_0x91f3('0x4b')](_0x5ddd3a);}})[_0x91f3('0x24')](function(_0x1f5062){if(_0x1f5062){_0x27a68e=_0x1f5062[_0x91f3('0x33')];if(!_0x1440a1[_0x91f3('0x2d')][_0x91f3('0x48')](_0x91f3('0x4a'))){_0x5ddd3a['limit']=qs['limit'](_0x1440a1[_0x91f3('0x2d')][_0x91f3('0x1f')]);_0x5ddd3a[_0x91f3('0x1d')]=qs[_0x91f3('0x1d')](_0x1440a1[_0x91f3('0x2d')][_0x91f3('0x1d')]);}return _0x2d9606[_0x91f3('0x4b')](_0x5ddd3a);}})[_0x91f3('0x24')](function(_0x530ada){if(_0x530ada){return _0x530ada?{'count':_0x27a68e,'rows':_0x530ada}:null;}})[_0x91f3('0x24')](respondWithResult(_0x4165b7,null))[_0x91f3('0x41')](handleError(_0x4165b7,null));};
\ No newline at end of file
index 73763b7..dd3af9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x161a=['rimraf','exports','define','ServicenowConfiguration','int_servicenow_configurations','../../config/logger','api','bluebird','path'];(function(_0xa049ec,_0x29274b){var _0x2a4791=function(_0x3fc1aa){while(--_0x3fc1aa){_0xa049ec['push'](_0xa049ec['shift']());}};_0x2a4791(++_0x29274b);}(_0x161a,0x140));var _0xa161=function(_0x1c5142,_0x30ea72){_0x1c5142=_0x1c5142-0x0;var _0x1268cb=_0x161a[_0x1c5142];return _0x1268cb;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xa161('0x0'))(_0xa161('0x1'));var moment=require('moment');var BPromise=require(_0xa161('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa161('0x3'));var rimraf=require(_0xa161('0x4'));var config=require('../../config/environment');var attributes=require('./intServicenowConfiguration.attributes');module[_0xa161('0x5')]=function(_0x1705ab,_0x12d54c){return _0x1705ab[_0xa161('0x6')](_0xa161('0x7'),attributes,{'tableName':_0xa161('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0598=['ServicenowConfiguration','int_servicenow_configurations','lodash','util','api','request-promise','path','exports'];(function(_0x3e32a8,_0x255953){var _0x2997b0=function(_0x2d564a){while(--_0x2d564a){_0x3e32a8['push'](_0x3e32a8['shift']());}};_0x2997b0(++_0x255953);}(_0x0598,0x92));var _0x8059=function(_0x24bb5c,_0x137883){_0x24bb5c=_0x24bb5c-0x0;var _0x15c0e4=_0x0598[_0x24bb5c];return _0x15c0e4;};'use strict';var _=require(_0x8059('0x0'));var util=require(_0x8059('0x1'));var logger=require('../../config/logger')(_0x8059('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8059('0x3'));var fs=require('fs');var path=require(_0x8059('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intServicenowConfiguration.attributes');module[_0x8059('0x5')]=function(_0xa7d7c1,_0x512c0f){return _0xa7d7c1['define'](_0x8059('0x6'),attributes,{'tableName':_0x8059('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8c241fc..8a49e4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f41=['ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','info'];(function(_0x616290,_0x280b7f){var _0x453879=function(_0x27bda7){while(--_0x27bda7){_0x616290['push'](_0x616290['shift']());}};_0x453879(++_0x280b7f);}(_0x2f41,0x94));var _0x12f4=function(_0x2ac71a,_0x1d2a02){_0x2ac71a=_0x2ac71a-0x0;var _0x3ee904=_0x2f41[_0x2ac71a];return _0x3ee904;};'use strict';var _=require(_0x12f4('0x0'));var util=require(_0x12f4('0x1'));var moment=require('moment');var BPromise=require(_0x12f4('0x2'));var rs=require(_0x12f4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x12f4('0x4'))['db'];var utils=require(_0x12f4('0x5'));var logger=require(_0x12f4('0x6'))(_0x12f4('0x7'));var config=require('../../config/environment');var jayson=require(_0x12f4('0x8'));var client=jayson['client'][_0x12f4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x295b3f,_0x32ad05,_0x22ba47){return new BPromise(function(_0x4282a5,_0x15a4a0){return client[_0x12f4('0xa')](_0x295b3f,_0x22ba47)['then'](function(_0x2fb13e){logger[_0x12f4('0xb')](_0x12f4('0xc'),_0x32ad05,_0x12f4('0xd'));logger[_0x12f4('0xe')]('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x32ad05,'request\x20sent',JSON[_0x12f4('0xf')](_0x2fb13e));if(_0x2fb13e['error']){if(_0x2fb13e[_0x12f4('0x10')][_0x12f4('0x11')]===0x1f4){logger[_0x12f4('0x10')](_0x12f4('0xc'),_0x32ad05,_0x2fb13e[_0x12f4('0x10')]['message']);return _0x15a4a0(_0x2fb13e[_0x12f4('0x10')][_0x12f4('0x12')]);}logger[_0x12f4('0x10')](_0x12f4('0xc'),_0x32ad05,_0x2fb13e[_0x12f4('0x10')][_0x12f4('0x12')]);return _0x4282a5(_0x2fb13e[_0x12f4('0x10')][_0x12f4('0x12')]);}else{logger[_0x12f4('0xb')](_0x12f4('0xc'),_0x32ad05,_0x12f4('0xd'));_0x4282a5(_0x2fb13e[_0x12f4('0x13')][_0x12f4('0x12')]);}})['catch'](function(_0x5e1de7){logger[_0x12f4('0x10')](_0x12f4('0xc'),_0x32ad05,_0x5e1de7);_0x15a4a0(_0x5e1de7);});});}
\ No newline at end of file
+var _0x8876=['../../config/environment','jayson/promise','request','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x311f44,_0x1d7f5b){var _0x46f1e6=function(_0x27342a){while(--_0x27342a){_0x311f44['push'](_0x311f44['shift']());}};_0x46f1e6(++_0x1d7f5b);}(_0x8876,0xa0));var _0x6887=function(_0x44c583,_0xdc4d48){_0x44c583=_0x44c583-0x0;var _0x396a41=_0x8876[_0x44c583];return _0x396a41;};'use strict';var _=require('lodash');var util=require(_0x6887('0x0'));var moment=require(_0x6887('0x1'));var BPromise=require(_0x6887('0x2'));var rs=require(_0x6887('0x3'));var fs=require('fs');var Redis=require(_0x6887('0x4'));var db=require(_0x6887('0x5'))['db'];var utils=require(_0x6887('0x6'));var logger=require('../../config/logger')(_0x6887('0x7'));var config=require(_0x6887('0x8'));var jayson=require(_0x6887('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4ddd18,_0x15c7bb,_0xa01de1){return new BPromise(function(_0x456b72,_0x3a0e11){return client[_0x6887('0xa')](_0x4ddd18,_0xa01de1)['then'](function(_0x3eef49){logger[_0x6887('0xb')](_0x6887('0xc'),_0x15c7bb,_0x6887('0xd'));logger[_0x6887('0xe')](_0x6887('0xf'),_0x15c7bb,_0x6887('0xd'),JSON[_0x6887('0x10')](_0x3eef49));if(_0x3eef49[_0x6887('0x11')]){if(_0x3eef49[_0x6887('0x11')][_0x6887('0x12')]===0x1f4){logger['error'](_0x6887('0xc'),_0x15c7bb,_0x3eef49['error'][_0x6887('0x13')]);return _0x3a0e11(_0x3eef49[_0x6887('0x11')][_0x6887('0x13')]);}logger['error'](_0x6887('0xc'),_0x15c7bb,_0x3eef49['error']['message']);return _0x456b72(_0x3eef49[_0x6887('0x11')][_0x6887('0x13')]);}else{logger[_0x6887('0xb')](_0x6887('0xc'),_0x15c7bb,_0x6887('0xd'));_0x456b72(_0x3eef49['result'][_0x6887('0x13')]);}})[_0x6887('0x14')](function(_0x550f0d){logger[_0x6887('0x11')](_0x6887('0xc'),_0x15c7bb,_0x550f0d);_0x3a0e11(_0x550f0d);});});}
\ No newline at end of file
index e4e027e..4ad275b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowField.controller','index','/:id','isAuthenticated','post','create','put','update','destroy','exports','multer'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0x008c,0xcf));var _0xc008=function(_0x4109e7,_0x2c8158){_0x4109e7=_0x4109e7-0x0;var _0x28d807=_0x008c[_0x4109e7];return _0x28d807;};'use strict';var multer=require(_0xc008('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xc008('0x1'));var router=express[_0xc008('0x2')]();var fs_extra=require(_0xc008('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xc008('0x4'));var config=require(_0xc008('0x5'));var controller=require(_0xc008('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xc008('0x7')]);router['get'](_0xc008('0x8'),auth[_0xc008('0x9')](),controller['show']);router[_0xc008('0xa')]('/',auth['isAuthenticated'](),controller[_0xc008('0xb')]);router[_0xc008('0xc')]('/:id',auth[_0xc008('0x9')](),controller[_0xc008('0xd')]);router['delete']('/:id',auth[_0xc008('0x9')](),controller[_0xc008('0xe')]);module[_0xc008('0xf')]=router;
\ No newline at end of file
+var _0xc175=['exports','multer','util','path','express','fs-extra','../../components/interaction/service','isAuthenticated','get','create','put','update','delete','/:id'];(function(_0x330723,_0x8de382){var _0x60c546=function(_0xd6d3fe){while(--_0xd6d3fe){_0x330723['push'](_0x330723['shift']());}};_0x60c546(++_0x8de382);}(_0xc175,0x151));var _0x5c17=function(_0x5c229d,_0x1b189c){_0x5c229d=_0x5c229d-0x0;var _0x385003=_0xc175[_0x5c229d];return _0x385003;};'use strict';var multer=require(_0x5c17('0x0'));var util=require(_0x5c17('0x1'));var path=require(_0x5c17('0x2'));var timeout=require('connect-timeout');var express=require(_0x5c17('0x3'));var router=express['Router']();var fs_extra=require(_0x5c17('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5c17('0x5'));var config=require('../../config/environment');var controller=require('./intServicenowField.controller');router['get']('/',auth[_0x5c17('0x6')](),controller['index']);router[_0x5c17('0x7')]('/:id',auth[_0x5c17('0x6')](),controller['show']);router['post']('/',auth[_0x5c17('0x6')](),controller[_0x5c17('0x8')]);router[_0x5c17('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x5c17('0xa')]);router[_0x5c17('0xb')](_0x5c17('0xc'),auth[_0x5c17('0x6')](),controller['destroy']);module[_0x5c17('0xd')]=router;
\ No newline at end of file
index d5a3ce5..eb4c9ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda6f=['variable','customVariable','keyValue','picklist','STRING','ENUM','string'];(function(_0x458363,_0x1675db){var _0x4d0290=function(_0x22960f){while(--_0x22960f){_0x458363['push'](_0x458363['shift']());}};_0x4d0290(++_0x1675db);}(_0xda6f,0x17f));var _0xfda6=function(_0x1ae59b,_0x2f5484){_0x1ae59b=_0x1ae59b-0x0;var _0x39e924=_0xda6f[_0x1ae59b];return _0x39e924;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0xfda6('0x0')](_0xfda6('0x1'),_0xfda6('0x2'),_0xfda6('0x3'),_0xfda6('0x4'),_0xfda6('0x5')),'defaultValue':_0xfda6('0x1')},'content':{'type':Sequelize[_0xfda6('0x6')]},'key':{'type':Sequelize[_0xfda6('0x6')]},'keyType':{'type':Sequelize[_0xfda6('0x0')](_0xfda6('0x1'),_0xfda6('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0xfda6('0x6')]},'idField':{'type':Sequelize[_0xfda6('0x6')]},'nameField':{'type':Sequelize[_0xfda6('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xfda6('0x6')]}};
\ No newline at end of file
+var _0x05c9=['exports','ENUM','customVariable','keyValue','picklist','string','variable','STRING','BOOLEAN','sequelize'];(function(_0x5c03a0,_0x6d679f){var _0x31f05f=function(_0x1d8b4b){while(--_0x1d8b4b){_0x5c03a0['push'](_0x5c03a0['shift']());}};_0x31f05f(++_0x6d679f);}(_0x05c9,0xa9));var _0x905c=function(_0x27524b,_0x3b0c02){_0x27524b=_0x27524b-0x0;var _0x1b250c=_0x05c9[_0x27524b];return _0x1b250c;};'use strict';var Sequelize=require(_0x905c('0x0'));module[_0x905c('0x1')]={'type':{'type':Sequelize[_0x905c('0x2')]('string','variable',_0x905c('0x3'),_0x905c('0x4'),_0x905c('0x5')),'defaultValue':_0x905c('0x6')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x905c('0x2')](_0x905c('0x6'),_0x905c('0x7'),_0x905c('0x3'))},'keyContent':{'type':Sequelize[_0x905c('0x8')]},'idField':{'type':Sequelize[_0x905c('0x8')]},'nameField':{'type':Sequelize[_0x905c('0x8')]},'customField':{'type':Sequelize[_0x905c('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index a4c770b..09bdf00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc877=['length','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','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','status','end','json','offset','undefined','limit','count','save','then','destroy','sendStatus','error','name','send','index','ServicenowField','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','fields','attributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc877,0xeb));var _0x7c87=function(_0x11cad4,_0x312524){_0x11cad4=_0x11cad4-0x0;var _0x369110=_0xc877[_0x11cad4];return _0x369110;};'use strict';var emlformat=require(_0x7c87('0x0'));var rimraf=require(_0x7c87('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7c87('0x2'));var rp=require(_0x7c87('0x3'));var moment=require('moment');var BPromise=require(_0x7c87('0x4'));var Mustache=require(_0x7c87('0x5'));var util=require(_0x7c87('0x6'));var path=require(_0x7c87('0x7'));var sox=require('sox');var csv=require(_0x7c87('0x8'));var ejs=require(_0x7c87('0x9'));var fs=require('fs');var fs_extra=require(_0x7c87('0xa'));var _=require(_0x7c87('0xb'));var squel=require(_0x7c87('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7c87('0xd'));var toCsv=require(_0x7c87('0x8'));var querystring=require(_0x7c87('0xe'));var Papa=require(_0x7c87('0xf'));var Redis=require(_0x7c87('0x10'));var authService=require(_0x7c87('0x11'));var qs=require(_0x7c87('0x12'));var as=require(_0x7c87('0x13'));var hardwareService=require(_0x7c87('0x14'));var logger=require('../../config/logger')(_0x7c87('0x15'));var utils=require(_0x7c87('0x16'));var config=require(_0x7c87('0x17'));var licenseUtil=require(_0x7c87('0x18'));var db=require(_0x7c87('0x19'))['db'];function respondWithStatusCode(_0x322ec0,_0x42462d){_0x42462d=_0x42462d||0xcc;return function(_0x28e901){if(_0x28e901){return _0x322ec0['sendStatus'](_0x42462d);}return _0x322ec0[_0x7c87('0x1a')](_0x42462d)[_0x7c87('0x1b')]();};}function respondWithResult(_0x14cc0f,_0x1b0087){_0x1b0087=_0x1b0087||0xc8;return function(_0x383707){if(_0x383707){return _0x14cc0f['status'](_0x1b0087)[_0x7c87('0x1c')](_0x383707);}};}function respondWithFilteredResult(_0x1b72cd,_0x4ccb06){return function(_0x406ae6){if(_0x406ae6){var _0x3cd32f=typeof _0x4ccb06[_0x7c87('0x1d')]===_0x7c87('0x1e')&&typeof _0x4ccb06[_0x7c87('0x1f')]===_0x7c87('0x1e');var _0x8a60fa=_0x406ae6[_0x7c87('0x20')];var _0x5ca586=_0x3cd32f?0x0:_0x4ccb06[_0x7c87('0x1d')];var _0x2fd7cd=_0x3cd32f?_0x406ae6[_0x7c87('0x20')]:_0x4ccb06['offset']+_0x4ccb06[_0x7c87('0x1f')];var _0x2c5023;if(_0x2fd7cd>=_0x8a60fa){_0x2fd7cd=_0x8a60fa;_0x2c5023=0xc8;}else{_0x2c5023=0xce;}_0x1b72cd[_0x7c87('0x1a')](_0x2c5023);return _0x1b72cd['set']('Content-Range',_0x5ca586+'-'+_0x2fd7cd+'/'+_0x8a60fa)[_0x7c87('0x1c')](_0x406ae6);}return null;};}function patchUpdates(_0x3277d8){return function(_0x4f4a77){try{jsonpatch['apply'](_0x4f4a77,_0x3277d8,!![]);}catch(_0x3b404e){return BPromise['reject'](_0x3b404e);}return _0x4f4a77[_0x7c87('0x21')]();};}function saveUpdates(_0x2e5c44,_0x87c74a){return function(_0x41d1f9){if(_0x41d1f9){return _0x41d1f9['update'](_0x2e5c44)[_0x7c87('0x22')](function(_0x459a4c){return _0x459a4c;});}return null;};}function removeEntity(_0x3f70d2,_0x2caa2b){return function(_0xf82a79){if(_0xf82a79){return _0xf82a79[_0x7c87('0x23')]()[_0x7c87('0x22')](function(){_0x3f70d2['status'](0xcc)[_0x7c87('0x1b')]();});}};}function handleEntityNotFound(_0x2170f0,_0x15c9d3){return function(_0x148493){if(!_0x148493){_0x2170f0[_0x7c87('0x24')](0x194);}return _0x148493;};}function handleError(_0x42bf53,_0x2f854c){_0x2f854c=_0x2f854c||0x1f4;return function(_0x4762c2){logger[_0x7c87('0x25')](_0x4762c2['stack']);if(_0x4762c2['name']){delete _0x4762c2[_0x7c87('0x26')];}_0x42bf53[_0x7c87('0x1a')](_0x2f854c)[_0x7c87('0x27')](_0x4762c2);};}exports[_0x7c87('0x28')]=function(_0xa50bd9,_0x473a7b){var _0x58bd8f={},_0x1fa135={},_0x21abd3={'count':0x0,'rows':[]};var _0xd491b8=_['map'](db[_0x7c87('0x29')][_0x7c87('0x2a')],function(_0x1413b2){return{'name':_0x1413b2[_0x7c87('0x2b')],'type':_0x1413b2[_0x7c87('0x2c')][_0x7c87('0x2d')]};});_0x1fa135[_0x7c87('0x2e')]=_[_0x7c87('0x2f')](_0xd491b8,_0x7c87('0x26'));_0x1fa135[_0x7c87('0x30')]=_[_0x7c87('0x31')](_0xa50bd9[_0x7c87('0x30')]);_0x1fa135['filters']=_[_0x7c87('0x32')](_0x1fa135['model'],_0x1fa135[_0x7c87('0x30')]);_0x58bd8f['attributes']=_[_0x7c87('0x32')](_0x1fa135[_0x7c87('0x2e')],qs[_0x7c87('0x33')](_0xa50bd9[_0x7c87('0x30')]['fields']));_0x58bd8f[_0x7c87('0x34')]=_0x58bd8f[_0x7c87('0x34')][_0x7c87('0x35')]?_0x58bd8f[_0x7c87('0x34')]:_0x1fa135[_0x7c87('0x2e')];if(!_0xa50bd9[_0x7c87('0x30')]['hasOwnProperty'](_0x7c87('0x36'))){_0x58bd8f['limit']=qs[_0x7c87('0x1f')](_0xa50bd9['query'][_0x7c87('0x1f')]);_0x58bd8f[_0x7c87('0x1d')]=qs['offset'](_0xa50bd9[_0x7c87('0x30')][_0x7c87('0x1d')]);}_0x58bd8f[_0x7c87('0x37')]=qs[_0x7c87('0x38')](_0xa50bd9['query'][_0x7c87('0x38')]);_0x58bd8f[_0x7c87('0x39')]=qs[_0x7c87('0x3a')](_['pick'](_0xa50bd9[_0x7c87('0x30')],_0x1fa135[_0x7c87('0x3a')]),_0xd491b8);if(_0xa50bd9[_0x7c87('0x30')][_0x7c87('0x3b')]){_0x58bd8f['where']=_[_0x7c87('0x3c')](_0x58bd8f[_0x7c87('0x39')],{'$or':_[_0x7c87('0x2f')](_0xd491b8,function(_0x15dc1f){if(_0x15dc1f[_0x7c87('0x2c')]!==_0x7c87('0x3d')){var _0x11315={};_0x11315[_0x15dc1f[_0x7c87('0x26')]]={'$like':'%'+_0xa50bd9[_0x7c87('0x30')][_0x7c87('0x3b')]+'%'};return _0x11315;}})});}_0x58bd8f=_['merge']({},_0x58bd8f,_0xa50bd9[_0x7c87('0x3e')]);var _0x152d34={'where':_0x58bd8f[_0x7c87('0x39')]};return db[_0x7c87('0x29')][_0x7c87('0x20')](_0x152d34)['then'](function(_0x24edaf){_0x21abd3['count']=_0x24edaf;if(_0xa50bd9['query'][_0x7c87('0x3f')]){_0x58bd8f[_0x7c87('0x40')]=[{'all':!![]}];}return db[_0x7c87('0x29')]['findAll'](_0x58bd8f);})[_0x7c87('0x22')](function(_0x594c7b){_0x21abd3[_0x7c87('0x41')]=_0x594c7b;return _0x21abd3;})[_0x7c87('0x22')](respondWithFilteredResult(_0x473a7b,_0x58bd8f))[_0x7c87('0x42')](handleError(_0x473a7b,null));};exports[_0x7c87('0x43')]=function(_0x3b8600,_0x121a53){var _0x4f09d9={'raw':!![],'where':{'id':_0x3b8600[_0x7c87('0x44')]['id']}},_0x390998={};_0x390998['model']=_[_0x7c87('0x31')](db['ServicenowField']['rawAttributes']);_0x390998[_0x7c87('0x30')]=_['keys'](_0x3b8600[_0x7c87('0x30')]);_0x390998['filters']=_[_0x7c87('0x32')](_0x390998[_0x7c87('0x2e')],_0x390998['query']);_0x4f09d9[_0x7c87('0x34')]=_['intersection'](_0x390998[_0x7c87('0x2e')],qs['fields'](_0x3b8600[_0x7c87('0x30')][_0x7c87('0x33')]));_0x4f09d9[_0x7c87('0x34')]=_0x4f09d9['attributes'][_0x7c87('0x35')]?_0x4f09d9['attributes']:_0x390998['model'];if(_0x3b8600[_0x7c87('0x30')][_0x7c87('0x3f')]){_0x4f09d9[_0x7c87('0x40')]=[{'all':!![]}];}_0x4f09d9=_['merge']({},_0x4f09d9,_0x3b8600[_0x7c87('0x3e')]);return db[_0x7c87('0x29')][_0x7c87('0x45')](_0x4f09d9)['then'](handleEntityNotFound(_0x121a53,null))[_0x7c87('0x22')](respondWithResult(_0x121a53,null))[_0x7c87('0x42')](handleError(_0x121a53,null));};exports[_0x7c87('0x46')]=function(_0x1755f6,_0x472252){return db['ServicenowField']['create'](_0x1755f6[_0x7c87('0x47')],{})[_0x7c87('0x22')](respondWithResult(_0x472252,0xc9))[_0x7c87('0x42')](handleError(_0x472252,null));};exports['update']=function(_0x46a363,_0x280a2c){if(_0x46a363['body']['id']){delete _0x46a363[_0x7c87('0x47')]['id'];}return db[_0x7c87('0x29')][_0x7c87('0x45')]({'where':{'id':_0x46a363[_0x7c87('0x44')]['id']}})['then'](handleEntityNotFound(_0x280a2c,null))['then'](saveUpdates(_0x46a363[_0x7c87('0x47')],null))[_0x7c87('0x22')](respondWithResult(_0x280a2c,null))['catch'](handleError(_0x280a2c,null));};exports[_0x7c87('0x23')]=function(_0x32c11f,_0x3669a1){return db[_0x7c87('0x29')][_0x7c87('0x45')]({'where':{'id':_0x32c11f[_0x7c87('0x44')]['id']}})['then'](handleEntityNotFound(_0x3669a1,null))[_0x7c87('0x22')](removeEntity(_0x3669a1,null))[_0x7c87('0x42')](handleError(_0x3669a1,null));};
\ No newline at end of file
+var _0x437e=['moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','reject','save','update','then','destroy','stack','name','send','index','map','ServicenowField','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','order','sort','where','pick','filters','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x425dd0,_0x2070d8){var _0x5ecde7=function(_0x4ed7da){while(--_0x4ed7da){_0x425dd0['push'](_0x425dd0['shift']());}};_0x5ecde7(++_0x2070d8);}(_0x437e,0x177));var _0xe437=function(_0x59312d,_0x52bb25){_0x59312d=_0x59312d-0x0;var _0x13ca66=_0x437e[_0x59312d];return _0x13ca66;};'use strict';var emlformat=require(_0xe437('0x0'));var rimraf=require(_0xe437('0x1'));var zipdir=require(_0xe437('0x2'));var jsonpatch=require(_0xe437('0x3'));var rp=require(_0xe437('0x4'));var moment=require(_0xe437('0x5'));var BPromise=require(_0xe437('0x6'));var Mustache=require(_0xe437('0x7'));var util=require(_0xe437('0x8'));var path=require(_0xe437('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe437('0xa'));var fs=require('fs');var fs_extra=require(_0xe437('0xb'));var _=require(_0xe437('0xc'));var squel=require(_0xe437('0xd'));var crypto=require(_0xe437('0xe'));var jsforce=require(_0xe437('0xf'));var deskjs=require(_0xe437('0x10'));var toCsv=require(_0xe437('0x11'));var querystring=require(_0xe437('0x12'));var Papa=require('papaparse');var Redis=require(_0xe437('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xe437('0x14'));var as=require(_0xe437('0x15'));var hardwareService=require(_0xe437('0x16'));var logger=require(_0xe437('0x17'))(_0xe437('0x18'));var utils=require(_0xe437('0x19'));var config=require(_0xe437('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xe437('0x1b'))['db'];function respondWithStatusCode(_0x378502,_0x62e59f){_0x62e59f=_0x62e59f||0xcc;return function(_0x453457){if(_0x453457){return _0x378502[_0xe437('0x1c')](_0x62e59f);}return _0x378502[_0xe437('0x1d')](_0x62e59f)[_0xe437('0x1e')]();};}function respondWithResult(_0x3cae76,_0x52ea2e){_0x52ea2e=_0x52ea2e||0xc8;return function(_0x7fe602){if(_0x7fe602){return _0x3cae76['status'](_0x52ea2e)['json'](_0x7fe602);}};}function respondWithFilteredResult(_0x50bf7b,_0x265f85){return function(_0x10d3f8){if(_0x10d3f8){var _0x1d591f=typeof _0x265f85[_0xe437('0x1f')]===_0xe437('0x20')&&typeof _0x265f85[_0xe437('0x21')]===_0xe437('0x20');var _0x39d93d=_0x10d3f8[_0xe437('0x22')];var _0x2621bf=_0x1d591f?0x0:_0x265f85[_0xe437('0x1f')];var _0x2af385=_0x1d591f?_0x10d3f8[_0xe437('0x22')]:_0x265f85[_0xe437('0x1f')]+_0x265f85[_0xe437('0x21')];var _0x353f91;if(_0x2af385>=_0x39d93d){_0x2af385=_0x39d93d;_0x353f91=0xc8;}else{_0x353f91=0xce;}_0x50bf7b[_0xe437('0x1d')](_0x353f91);return _0x50bf7b['set'](_0xe437('0x23'),_0x2621bf+'-'+_0x2af385+'/'+_0x39d93d)[_0xe437('0x24')](_0x10d3f8);}return null;};}function patchUpdates(_0x4374f6){return function(_0x298339){try{jsonpatch['apply'](_0x298339,_0x4374f6,!![]);}catch(_0x4a5ac7){return BPromise[_0xe437('0x25')](_0x4a5ac7);}return _0x298339[_0xe437('0x26')]();};}function saveUpdates(_0x25257b,_0x3f4660){return function(_0x993d7c){if(_0x993d7c){return _0x993d7c[_0xe437('0x27')](_0x25257b)[_0xe437('0x28')](function(_0xd53bb1){return _0xd53bb1;});}return null;};}function removeEntity(_0x81291a,_0x2d39a1){return function(_0x295e5e){if(_0x295e5e){return _0x295e5e[_0xe437('0x29')]()[_0xe437('0x28')](function(){_0x81291a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x252768,_0x169654){return function(_0x1eac40){if(!_0x1eac40){_0x252768[_0xe437('0x1c')](0x194);}return _0x1eac40;};}function handleError(_0x4bb21c,_0x4224e8){_0x4224e8=_0x4224e8||0x1f4;return function(_0x22467e){logger['error'](_0x22467e[_0xe437('0x2a')]);if(_0x22467e[_0xe437('0x2b')]){delete _0x22467e['name'];}_0x4bb21c['status'](_0x4224e8)[_0xe437('0x2c')](_0x22467e);};}exports[_0xe437('0x2d')]=function(_0xc8e815,_0x3be656){var _0x276c5f={},_0x4a7419={},_0x17963b={'count':0x0,'rows':[]};var _0x1a23f1=_[_0xe437('0x2e')](db[_0xe437('0x2f')][_0xe437('0x30')],function(_0x55cde7){return{'name':_0x55cde7[_0xe437('0x31')],'type':_0x55cde7[_0xe437('0x32')][_0xe437('0x33')]};});_0x4a7419[_0xe437('0x34')]=_[_0xe437('0x2e')](_0x1a23f1,'name');_0x4a7419[_0xe437('0x35')]=_[_0xe437('0x36')](_0xc8e815['query']);_0x4a7419['filters']=_['intersection'](_0x4a7419['model'],_0x4a7419[_0xe437('0x35')]);_0x276c5f[_0xe437('0x37')]=_[_0xe437('0x38')](_0x4a7419[_0xe437('0x34')],qs[_0xe437('0x39')](_0xc8e815[_0xe437('0x35')][_0xe437('0x39')]));_0x276c5f['attributes']=_0x276c5f[_0xe437('0x37')][_0xe437('0x3a')]?_0x276c5f[_0xe437('0x37')]:_0x4a7419[_0xe437('0x34')];if(!_0xc8e815[_0xe437('0x35')]['hasOwnProperty']('nolimit')){_0x276c5f['limit']=qs[_0xe437('0x21')](_0xc8e815[_0xe437('0x35')]['limit']);_0x276c5f[_0xe437('0x1f')]=qs['offset'](_0xc8e815[_0xe437('0x35')][_0xe437('0x1f')]);}_0x276c5f[_0xe437('0x3b')]=qs[_0xe437('0x3c')](_0xc8e815[_0xe437('0x35')][_0xe437('0x3c')]);_0x276c5f[_0xe437('0x3d')]=qs['filters'](_[_0xe437('0x3e')](_0xc8e815[_0xe437('0x35')],_0x4a7419[_0xe437('0x3f')]),_0x1a23f1);if(_0xc8e815['query'][_0xe437('0x40')]){_0x276c5f['where']=_['merge'](_0x276c5f[_0xe437('0x3d')],{'$or':_[_0xe437('0x2e')](_0x1a23f1,function(_0xdb1133){if(_0xdb1133[_0xe437('0x32')]!==_0xe437('0x41')){var _0x279a79={};_0x279a79[_0xdb1133[_0xe437('0x2b')]]={'$like':'%'+_0xc8e815['query'][_0xe437('0x40')]+'%'};return _0x279a79;}})});}_0x276c5f=_['merge']({},_0x276c5f,_0xc8e815[_0xe437('0x42')]);var _0x401c22={'where':_0x276c5f[_0xe437('0x3d')]};return db['ServicenowField'][_0xe437('0x22')](_0x401c22)['then'](function(_0x3c5fc3){_0x17963b[_0xe437('0x22')]=_0x3c5fc3;if(_0xc8e815[_0xe437('0x35')][_0xe437('0x43')]){_0x276c5f[_0xe437('0x44')]=[{'all':!![]}];}return db[_0xe437('0x2f')][_0xe437('0x45')](_0x276c5f);})[_0xe437('0x28')](function(_0x209c4b){_0x17963b[_0xe437('0x46')]=_0x209c4b;return _0x17963b;})['then'](respondWithFilteredResult(_0x3be656,_0x276c5f))[_0xe437('0x47')](handleError(_0x3be656,null));};exports['show']=function(_0x28daa5,_0x2fc34c){var _0x5e4bd7={'raw':!![],'where':{'id':_0x28daa5[_0xe437('0x48')]['id']}},_0x39bdd2={};_0x39bdd2[_0xe437('0x34')]=_[_0xe437('0x36')](db[_0xe437('0x2f')][_0xe437('0x30')]);_0x39bdd2[_0xe437('0x35')]=_[_0xe437('0x36')](_0x28daa5[_0xe437('0x35')]);_0x39bdd2[_0xe437('0x3f')]=_[_0xe437('0x38')](_0x39bdd2[_0xe437('0x34')],_0x39bdd2[_0xe437('0x35')]);_0x5e4bd7[_0xe437('0x37')]=_[_0xe437('0x38')](_0x39bdd2[_0xe437('0x34')],qs['fields'](_0x28daa5[_0xe437('0x35')]['fields']));_0x5e4bd7[_0xe437('0x37')]=_0x5e4bd7['attributes'][_0xe437('0x3a')]?_0x5e4bd7[_0xe437('0x37')]:_0x39bdd2['model'];if(_0x28daa5['query'][_0xe437('0x43')]){_0x5e4bd7[_0xe437('0x44')]=[{'all':!![]}];}_0x5e4bd7=_['merge']({},_0x5e4bd7,_0x28daa5['options']);return db['ServicenowField'][_0xe437('0x49')](_0x5e4bd7)['then'](handleEntityNotFound(_0x2fc34c,null))[_0xe437('0x28')](respondWithResult(_0x2fc34c,null))['catch'](handleError(_0x2fc34c,null));};exports[_0xe437('0x4a')]=function(_0x45ab3a,_0x391f01){return db[_0xe437('0x2f')]['create'](_0x45ab3a['body'],{})[_0xe437('0x28')](respondWithResult(_0x391f01,0xc9))['catch'](handleError(_0x391f01,null));};exports['update']=function(_0x492ca3,_0xe985df){if(_0x492ca3[_0xe437('0x4b')]['id']){delete _0x492ca3[_0xe437('0x4b')]['id'];}return db[_0xe437('0x2f')][_0xe437('0x49')]({'where':{'id':_0x492ca3[_0xe437('0x48')]['id']}})[_0xe437('0x28')](handleEntityNotFound(_0xe985df,null))[_0xe437('0x28')](saveUpdates(_0x492ca3[_0xe437('0x4b')],null))[_0xe437('0x28')](respondWithResult(_0xe985df,null))['catch'](handleError(_0xe985df,null));};exports[_0xe437('0x29')]=function(_0x29fd81,_0x1b549a){return db[_0xe437('0x2f')]['find']({'where':{'id':_0x29fd81[_0xe437('0x48')]['id']}})['then'](handleEntityNotFound(_0x1b549a,null))[_0xe437('0x28')](removeEntity(_0x1b549a,null))[_0xe437('0x47')](handleError(_0x1b549a,null));};
\ No newline at end of file
index f3b3546..7d12f96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd72d=['define','ServicenowField','int_servicenow_fields','FieldId','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowField.attributes','exports'];(function(_0x1e4f2f,_0x35edfa){var _0xccea89=function(_0x164386){while(--_0x164386){_0x1e4f2f['push'](_0x1e4f2f['shift']());}};_0xccea89(++_0x35edfa);}(_0xd72d,0xc8));var _0xdd72=function(_0x3f68e2,_0x1a9388){_0x3f68e2=_0x3f68e2-0x0;var _0x5e9b53=_0xd72d[_0x3f68e2];return _0x5e9b53;};'use strict';var _=require(_0xdd72('0x0'));var util=require(_0xdd72('0x1'));var logger=require('../../config/logger')(_0xdd72('0x2'));var moment=require('moment');var BPromise=require(_0xdd72('0x3'));var rp=require(_0xdd72('0x4'));var fs=require('fs');var path=require(_0xdd72('0x5'));var rimraf=require(_0xdd72('0x6'));var config=require(_0xdd72('0x7'));var attributes=require(_0xdd72('0x8'));module[_0xdd72('0x9')]=function(_0x369d8b,_0xf397ba){return _0x369d8b[_0xdd72('0xa')](_0xdd72('0xb'),attributes,{'tableName':_0xdd72('0xc'),'paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':['idField',_0xdd72('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5c0d=['servicenow_unique_index','idField','FieldId','util','moment','bluebird','request-promise','path','../../config/environment','./intServicenowField.attributes','exports','define','ServicenowField','int_servicenow_fields'];(function(_0x4a7631,_0x2c85b9){var _0x1a5a6f=function(_0x1ee3fd){while(--_0x1ee3fd){_0x4a7631['push'](_0x4a7631['shift']());}};_0x1a5a6f(++_0x2c85b9);}(_0x5c0d,0x73));var _0xd5c0=function(_0x1aba25,_0x1faed1){_0x1aba25=_0x1aba25-0x0;var _0x47d997=_0x5c0d[_0x1aba25];return _0x47d997;};'use strict';var _=require('lodash');var util=require(_0xd5c0('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xd5c0('0x1'));var BPromise=require(_0xd5c0('0x2'));var rp=require(_0xd5c0('0x3'));var fs=require('fs');var path=require(_0xd5c0('0x4'));var rimraf=require('rimraf');var config=require(_0xd5c0('0x5'));var attributes=require(_0xd5c0('0x6'));module[_0xd5c0('0x7')]=function(_0x4083ac,_0x9c5cee){return _0x4083ac[_0xd5c0('0x8')](_0xd5c0('0x9'),attributes,{'tableName':_0xd5c0('0xa'),'paranoid':![],'indexes':[{'name':_0xd5c0('0xb'),'fields':[_0xd5c0('0xc'),_0xd5c0('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 79fa8ae..62a3573 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\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(_0x3a129d,_0x1ce44d){var _0x367438=function(_0x434a96){while(--_0x434a96){_0x3a129d['push'](_0x3a129d['shift']());}};_0x367438(++_0x1ce44d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0xa9e0[_0x298ed3];return _0x5aad28;};'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 _0xf4eb=['ServicenowField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x175342,_0x57e790){var _0x1477a8=function(_0x3f6b55){while(--_0x3f6b55){_0x175342['push'](_0x175342['shift']());}};_0x1477a8(++_0x57e790);}(_0xf4eb,0xec));var _0xbf4e=function(_0x4b6cea,_0xe320c8){_0x4b6cea=_0x4b6cea-0x0;var _0x2529f6=_0xf4eb[_0x4b6cea];return _0x2529f6;};'use strict';var _=require(_0xbf4e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbf4e('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbf4e('0x2'))(_0xbf4e('0x3'));var config=require(_0xbf4e('0x4'));var jayson=require(_0xbf4e('0x5'));var client=jayson[_0xbf4e('0x6')][_0xbf4e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x15b99f,_0x540736,_0x449d55){return new BPromise(function(_0x5013c2,_0x5e23d4){return client[_0xbf4e('0x8')](_0x15b99f,_0x449d55)[_0xbf4e('0x9')](function(_0xcc4097){logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));logger[_0xbf4e('0xd')]('ServicenowField,\x20%s,\x20%s,\x20%s',_0x540736,'request\x20sent',JSON[_0xbf4e('0xe')](_0xcc4097));if(_0xcc4097['error']){if(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x10')]===0x1f4){logger['error'](_0xbf4e('0xb'),_0x540736,_0xcc4097['error']['message']);return _0x5e23d4(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);}logger[_0xbf4e('0xf')](_0xbf4e('0xb'),_0x540736,_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);return _0x5013c2(_0xcc4097['error']['message']);}else{logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));_0x5013c2(_0xcc4097['result'][_0xbf4e('0x11')]);}})[_0xbf4e('0x12')](function(_0x912fc0){logger[_0xbf4e('0xf')]('ServicenowField,\x20%s,\x20%s',_0x540736,_0x912fc0);_0x5e23d4(_0x912fc0);});});}
\ No newline at end of file
index c64153a..cfffd38 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','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x5623fe,_0x573ef5){var _0x83a73a=function(_0x186176){while(--_0x186176){_0x5623fe['push'](_0x5623fe['shift']());}};_0x83a73a(++_0x573ef5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0xa9e0[_0x40ac5e];return _0x2839d6;};'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
+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(_0xce1b4d,_0x4ef164){var _0x4b1d01=function(_0x13c1bd){while(--_0x13c1bd){_0xce1b4d['push'](_0xce1b4d['shift']());}};_0x4b1d01(++_0x4ef164);}(_0xa9e0,0x123));var _0x0a9e=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xa9e0[_0x31e29a];return _0x32d892;};'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 1a0cd23..b817f1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x525300,_0x1416e7){var _0x1d7f16=function(_0xcb589e){while(--_0xcb589e){_0x525300['push'](_0x525300['shift']());}};_0x1d7f16(++_0x1416e7);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'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(_0x7c2ed4,_0x2a6c59){var _0xa7cbd=function(_0x51b37c){while(--_0x51b37c){_0x7c2ed4['push'](_0x7c2ed4['shift']());}};_0xa7cbd(++_0x2a6c59);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'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 5a879f3..99cc3b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a3d=['Subjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','created_by','description','date_start','duration_hours','duration_minutes','parent_name','direction','password','remoteUri','slice','substring','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify','username','Invalid\x20Login','get_module_fields','Calls','values','module_fields','remove','includes','endsWith','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','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','../../components/integrations/configuration','sendStatus','status','json','limit','undefined','count','offset','apply','reject','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','VIRTUAL','filter','merge','options','SugarcrmAccount','includeAll','include','rows','show','params','find','catch','create','body','getConfigurations','SugarcrmConfiguration','order','findOne','AccountId'];(function(_0x295a3d,_0x56d487){var _0x23a732=function(_0x15cfc2){while(--_0x15cfc2){_0x295a3d['push'](_0x295a3d['shift']());}};_0x23a732(++_0x56d487);}(_0x1a3d,0x185));var _0xd1a3=function(_0x2ed963,_0x46b0a6){_0x2ed963=_0x2ed963-0x0;var _0x5b433c=_0x1a3d[_0x2ed963];return _0x5b433c;};'use strict';var emlformat=require(_0xd1a3('0x0'));var rimraf=require(_0xd1a3('0x1'));var zipdir=require(_0xd1a3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd1a3('0x3'));var moment=require('moment');var BPromise=require(_0xd1a3('0x4'));var Mustache=require(_0xd1a3('0x5'));var util=require(_0xd1a3('0x6'));var path=require(_0xd1a3('0x7'));var sox=require(_0xd1a3('0x8'));var csv=require(_0xd1a3('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xd1a3('0xa'));var jsforce=require(_0xd1a3('0xb'));var deskjs=require(_0xd1a3('0xc'));var toCsv=require(_0xd1a3('0x9'));var querystring=require(_0xd1a3('0xd'));var Papa=require(_0xd1a3('0xe'));var Redis=require(_0xd1a3('0xf'));var authService=require(_0xd1a3('0x10'));var qs=require(_0xd1a3('0x11'));var as=require(_0xd1a3('0x12'));var hardwareService=require(_0xd1a3('0x13'));var logger=require(_0xd1a3('0x14'))(_0xd1a3('0x15'));var utils=require(_0xd1a3('0x16'));var config=require(_0xd1a3('0x17'));var licenseUtil=require(_0xd1a3('0x18'));var db=require(_0xd1a3('0x19'))['db'];var integrations=require(_0xd1a3('0x1a'));function respondWithStatusCode(_0x394966,_0x5c510e){_0x5c510e=_0x5c510e||0xcc;return function(_0x54a297){if(_0x54a297){return _0x394966[_0xd1a3('0x1b')](_0x5c510e);}return _0x394966['status'](_0x5c510e)['end']();};}function respondWithResult(_0x59e8a0,_0x18b324){_0x18b324=_0x18b324||0xc8;return function(_0xc9a47e){if(_0xc9a47e){return _0x59e8a0[_0xd1a3('0x1c')](_0x18b324)[_0xd1a3('0x1d')](_0xc9a47e);}};}function respondWithFilteredResult(_0x1a464a,_0x361444){return function(_0x381ea8){if(_0x381ea8){var _0x47b6f6=typeof _0x361444['offset']==='undefined'&&typeof _0x361444[_0xd1a3('0x1e')]===_0xd1a3('0x1f');var _0x42b640=_0x381ea8[_0xd1a3('0x20')];var _0x4572c4=_0x47b6f6?0x0:_0x361444[_0xd1a3('0x21')];var _0x24389b=_0x47b6f6?_0x381ea8['count']:_0x361444[_0xd1a3('0x21')]+_0x361444['limit'];var _0x49984b;if(_0x24389b>=_0x42b640){_0x24389b=_0x42b640;_0x49984b=0xc8;}else{_0x49984b=0xce;}_0x1a464a[_0xd1a3('0x1c')](_0x49984b);return _0x1a464a['set']('Content-Range',_0x4572c4+'-'+_0x24389b+'/'+_0x42b640)['json'](_0x381ea8);}return null;};}function patchUpdates(_0xb82524){return function(_0x1fbf12){try{jsonpatch[_0xd1a3('0x22')](_0x1fbf12,_0xb82524,!![]);}catch(_0x32bd52){return BPromise[_0xd1a3('0x23')](_0x32bd52);}return _0x1fbf12['save']();};}function saveUpdates(_0x198ee3,_0xaba178){return function(_0x1bc81f){if(_0x1bc81f){return _0x1bc81f['update'](_0x198ee3)['then'](function(_0x555bfd){return _0x555bfd;});}return null;};}function removeEntity(_0x36052a,_0x172524){return function(_0x2a0b53){if(_0x2a0b53){return _0x2a0b53[_0xd1a3('0x24')]()[_0xd1a3('0x25')](function(){_0x36052a[_0xd1a3('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4bf141,_0xe8bce1){return function(_0x33f4e4){if(!_0x33f4e4){_0x4bf141[_0xd1a3('0x1b')](0x194);}return _0x33f4e4;};}function handleError(_0x354ed9,_0x5ed21a){_0x5ed21a=_0x5ed21a||0x1f4;return function(_0x142e99){logger[_0xd1a3('0x26')](_0x142e99[_0xd1a3('0x27')]);if(_0x142e99['name']){delete _0x142e99[_0xd1a3('0x28')];}_0x354ed9[_0xd1a3('0x1c')](_0x5ed21a)[_0xd1a3('0x29')](_0x142e99);};}exports[_0xd1a3('0x2a')]=function(_0x1e8595,_0x5ea2b1){var _0x320bd0={},_0x32344c={},_0x2d0859={'count':0x0,'rows':[]};var _0xca8ca0=_[_0xd1a3('0x2b')](db['SugarcrmAccount'][_0xd1a3('0x2c')],function(_0x23bd52){return{'name':_0x23bd52[_0xd1a3('0x2d')],'type':_0x23bd52[_0xd1a3('0x2e')]['key']};});_0x32344c[_0xd1a3('0x2f')]=_[_0xd1a3('0x2b')](_0xca8ca0,'name');_0x32344c[_0xd1a3('0x30')]=_[_0xd1a3('0x31')](_0x1e8595['query']);_0x32344c[_0xd1a3('0x32')]=_[_0xd1a3('0x33')](_0x32344c['model'],_0x32344c['query']);_0x320bd0[_0xd1a3('0x34')]=_['intersection'](_0x32344c['model'],qs[_0xd1a3('0x35')](_0x1e8595[_0xd1a3('0x30')][_0xd1a3('0x35')]));_0x320bd0[_0xd1a3('0x34')]=_0x320bd0[_0xd1a3('0x34')][_0xd1a3('0x36')]?_0x320bd0[_0xd1a3('0x34')]:_0x32344c[_0xd1a3('0x2f')];if(!_0x1e8595[_0xd1a3('0x30')][_0xd1a3('0x37')](_0xd1a3('0x38'))){_0x320bd0[_0xd1a3('0x1e')]=qs[_0xd1a3('0x1e')](_0x1e8595[_0xd1a3('0x30')][_0xd1a3('0x1e')]);_0x320bd0[_0xd1a3('0x21')]=qs[_0xd1a3('0x21')](_0x1e8595[_0xd1a3('0x30')]['offset']);}_0x320bd0['order']=qs[_0xd1a3('0x39')](_0x1e8595[_0xd1a3('0x30')][_0xd1a3('0x39')]);_0x320bd0[_0xd1a3('0x3a')]=qs['filters'](_[_0xd1a3('0x3b')](_0x1e8595['query'],_0x32344c[_0xd1a3('0x32')]),_0xca8ca0);if(_0x1e8595['query']['filter']){_0x320bd0['where']=_['merge'](_0x320bd0[_0xd1a3('0x3a')],{'$or':_['map'](_0xca8ca0,function(_0xf506b7){if(_0xf506b7[_0xd1a3('0x2e')]!==_0xd1a3('0x3c')){var _0x341436={};_0x341436[_0xf506b7[_0xd1a3('0x28')]]={'$like':'%'+_0x1e8595['query'][_0xd1a3('0x3d')]+'%'};return _0x341436;}})});}_0x320bd0=_[_0xd1a3('0x3e')]({},_0x320bd0,_0x1e8595[_0xd1a3('0x3f')]);var _0xfcaa9c={'where':_0x320bd0[_0xd1a3('0x3a')]};return db[_0xd1a3('0x40')][_0xd1a3('0x20')](_0xfcaa9c)[_0xd1a3('0x25')](function(_0x2c4985){_0x2d0859['count']=_0x2c4985;if(_0x1e8595['query'][_0xd1a3('0x41')]){_0x320bd0[_0xd1a3('0x42')]=[{'all':!![]}];}return db[_0xd1a3('0x40')]['findAll'](_0x320bd0);})[_0xd1a3('0x25')](function(_0x3ae596){_0x2d0859[_0xd1a3('0x43')]=_0x3ae596;return _0x2d0859;})[_0xd1a3('0x25')](respondWithFilteredResult(_0x5ea2b1,_0x320bd0))['catch'](handleError(_0x5ea2b1,null));};exports[_0xd1a3('0x44')]=function(_0x4b7731,_0x4267fa){var _0x1f4805={'raw':![],'where':{'id':_0x4b7731[_0xd1a3('0x45')]['id']}},_0x11a442={};_0x11a442[_0xd1a3('0x2f')]=_[_0xd1a3('0x31')](db['SugarcrmAccount'][_0xd1a3('0x2c')]);_0x11a442[_0xd1a3('0x30')]=_[_0xd1a3('0x31')](_0x4b7731[_0xd1a3('0x30')]);_0x11a442[_0xd1a3('0x32')]=_[_0xd1a3('0x33')](_0x11a442[_0xd1a3('0x2f')],_0x11a442[_0xd1a3('0x30')]);_0x1f4805[_0xd1a3('0x34')]=_[_0xd1a3('0x33')](_0x11a442[_0xd1a3('0x2f')],qs[_0xd1a3('0x35')](_0x4b7731[_0xd1a3('0x30')]['fields']));_0x1f4805[_0xd1a3('0x34')]=_0x1f4805['attributes'][_0xd1a3('0x36')]?_0x1f4805[_0xd1a3('0x34')]:_0x11a442[_0xd1a3('0x2f')];if(_0x4b7731[_0xd1a3('0x30')][_0xd1a3('0x41')]){_0x1f4805['include']=[{'all':!![]}];}_0x1f4805=_[_0xd1a3('0x3e')]({},_0x1f4805,_0x4b7731[_0xd1a3('0x3f')]);return db[_0xd1a3('0x40')][_0xd1a3('0x46')](_0x1f4805)[_0xd1a3('0x25')](handleEntityNotFound(_0x4267fa,null))['then'](respondWithResult(_0x4267fa,null))[_0xd1a3('0x47')](handleError(_0x4267fa,null));};exports[_0xd1a3('0x48')]=function(_0x2ec546,_0x8d742b){return db['SugarcrmAccount'][_0xd1a3('0x48')](_0x2ec546['body'],{})[_0xd1a3('0x25')](respondWithResult(_0x8d742b,0xc9))[_0xd1a3('0x47')](handleError(_0x8d742b,null));};exports['update']=function(_0x119349,_0x33303e){if(_0x119349['body']['id']){delete _0x119349[_0xd1a3('0x49')]['id'];}return db['SugarcrmAccount']['find']({'where':{'id':_0x119349[_0xd1a3('0x45')]['id']}})[_0xd1a3('0x25')](handleEntityNotFound(_0x33303e,null))[_0xd1a3('0x25')](saveUpdates(_0x119349['body'],null))['then'](respondWithResult(_0x33303e,null))[_0xd1a3('0x47')](handleError(_0x33303e,null));};exports[_0xd1a3('0x24')]=function(_0x543592,_0x49a715){return db[_0xd1a3('0x40')][_0xd1a3('0x46')]({'where':{'id':_0x543592[_0xd1a3('0x45')]['id']}})[_0xd1a3('0x25')](handleEntityNotFound(_0x49a715,null))[_0xd1a3('0x25')](removeEntity(_0x49a715,null))[_0xd1a3('0x47')](handleError(_0x49a715,null));};exports[_0xd1a3('0x4a')]=function(_0xb5d5f1,_0x4fb889,_0x198eea){var _0xd9512={};var _0x5073b1={};var _0xe4a72a;var _0x3e5780;return db[_0xd1a3('0x40')]['findOne']({'where':{'id':_0xb5d5f1[_0xd1a3('0x45')]['id']}})[_0xd1a3('0x25')](handleEntityNotFound(_0x4fb889,null))[_0xd1a3('0x25')](function(_0x1f0d73){if(_0x1f0d73){_0xe4a72a=_0x1f0d73;_0x5073b1['model']=_['keys'](db[_0xd1a3('0x4b')][_0xd1a3('0x2c')]);_0x5073b1[_0xd1a3('0x30')]=_[_0xd1a3('0x31')](_0xb5d5f1[_0xd1a3('0x30')]);_0x5073b1[_0xd1a3('0x32')]=_[_0xd1a3('0x33')](_0x5073b1['model'],_0x5073b1[_0xd1a3('0x30')]);_0xd9512['attributes']=_[_0xd1a3('0x33')](_0x5073b1[_0xd1a3('0x2f')],qs[_0xd1a3('0x35')](_0xb5d5f1['query'][_0xd1a3('0x35')]));_0xd9512[_0xd1a3('0x34')]=_0xd9512[_0xd1a3('0x34')][_0xd1a3('0x36')]?_0xd9512[_0xd1a3('0x34')]:_0x5073b1[_0xd1a3('0x2f')];_0xd9512[_0xd1a3('0x4c')]=qs[_0xd1a3('0x39')](_0xb5d5f1[_0xd1a3('0x30')][_0xd1a3('0x39')]);_0xd9512['where']=qs[_0xd1a3('0x32')](_[_0xd1a3('0x3b')](_0xb5d5f1[_0xd1a3('0x30')],_0x5073b1[_0xd1a3('0x32')]));if(_0xb5d5f1[_0xd1a3('0x30')][_0xd1a3('0x3d')]){_0xd9512['where']=_[_0xd1a3('0x3e')](_0xd9512[_0xd1a3('0x3a')],{'$or':_[_0xd1a3('0x2b')](_0xd9512[_0xd1a3('0x34')],function(_0x586b43){var _0xeb05f6={};_0xeb05f6[_0x586b43]={'$like':'%'+_0xb5d5f1[_0xd1a3('0x30')][_0xd1a3('0x3d')]+'%'};return _0xeb05f6;})});}_0xd9512=_[_0xd1a3('0x3e')]({},_0xd9512,_0xb5d5f1['options']);return _0xe4a72a[_0xd1a3('0x4a')](_0xd9512);}})[_0xd1a3('0x25')](function(_0x295113){if(_0x295113){_0x3e5780=_0x295113[_0xd1a3('0x36')];if(!_0xb5d5f1[_0xd1a3('0x30')][_0xd1a3('0x37')]('nolimit')){_0xd9512[_0xd1a3('0x1e')]=qs[_0xd1a3('0x1e')](_0xb5d5f1[_0xd1a3('0x30')][_0xd1a3('0x1e')]);_0xd9512[_0xd1a3('0x21')]=qs[_0xd1a3('0x21')](_0xb5d5f1[_0xd1a3('0x30')][_0xd1a3('0x21')]);}return _0xe4a72a['getConfigurations'](_0xd9512);}})[_0xd1a3('0x25')](function(_0x2a5910){if(_0x2a5910){return _0x2a5910?{'count':_0x3e5780,'rows':_0x2a5910}:null;}})[_0xd1a3('0x25')](respondWithResult(_0x4fb889,null))[_0xd1a3('0x47')](handleError(_0x4fb889,null));};exports['addConfiguration']=function(_0x24c651,_0x5ac887,_0x1fdbf6){if(_0x24c651['body']['id']){delete _0x24c651[_0xd1a3('0x49')]['id'];}return db[_0xd1a3('0x40')][_0xd1a3('0x4d')]({'where':{'id':_0x24c651[_0xd1a3('0x45')]['id']}})['then'](handleEntityNotFound(_0x5ac887,null))[_0xd1a3('0x25')](function(_0x5283c0){if(_0x5283c0){_0x24c651[_0xd1a3('0x49')][_0xd1a3('0x4e')]=_0x5283c0['id'];_0x24c651[_0xd1a3('0x49')][_0xd1a3('0x4f')]=integrations['getSubjects'](_0x24c651[_0xd1a3('0x49')][_0xd1a3('0x50')],_0x24c651['body']['type']);_0x24c651['body'][_0xd1a3('0x51')]=integrations[_0xd1a3('0x52')](_0x24c651[_0xd1a3('0x49')][_0xd1a3('0x50')],_0x24c651[_0xd1a3('0x49')][_0xd1a3('0x2e')]);return db[_0xd1a3('0x4b')][_0xd1a3('0x48')](_0x24c651['body'],{'include':[{'model':db[_0xd1a3('0x53')],'as':_0xd1a3('0x4f')},{'model':db[_0xd1a3('0x53')],'as':_0xd1a3('0x51')}]});}return null;})['then'](respondWithResult(_0x5ac887,null))[_0xd1a3('0x47')](handleError(_0x5ac887,null));};exports[_0xd1a3('0x54')]=function(_0x573870,_0x3e213e,_0x5b2a5e){var _0x1a9270='';var _0xd9d82b=['id',_0xd1a3('0x28'),'assigned_user_id',_0xd1a3('0x55'),_0xd1a3('0x56'),_0xd1a3('0x57'),_0xd1a3('0x58'),_0xd1a3('0x59'),'parent_id','parent_type',_0xd1a3('0x5a'),_0xd1a3('0x5b')];return db['SugarcrmAccount']['findOne']({'where':{'id':_0x573870[_0xd1a3('0x45')]['id']},'attributes':['id','username',_0xd1a3('0x5c'),_0xd1a3('0x5d')]})[_0xd1a3('0x25')](handleEntityNotFound(_0x3e213e,null))[_0xd1a3('0x25')](function(_0x3cc0f6){if(_0x3cc0f6){_0x1a9270=_0x3cc0f6['remoteUri'];var _0x117e16=_0x1a9270[_0xd1a3('0x5e')](-0x1);if(_0x117e16==='/'){_0x1a9270=_0x1a9270[_0xd1a3('0x5f')](0x0,_0x1a9270['lastIndexOf'](_0x117e16));}return rp({'method':_0xd1a3('0x60'),'uri':util[_0xd1a3('0x61')](_0xd1a3('0x62'),_0x1a9270,_0xd1a3('0x63')),'json':!![],'form':{'method':_0xd1a3('0x64'),'input_type':_0xd1a3('0x65'),'response_type':_0xd1a3('0x65'),'rest_data':JSON[_0xd1a3('0x66')]({'user_auth':{'user_name':_0x3cc0f6[_0xd1a3('0x67')],'password':_0x3cc0f6[_0xd1a3('0x5c')],'encryption':'PLAIN'},'application':'xCALLY\x20Motion\x20Integration'})}});}})[_0xd1a3('0x25')](function(_0x3a4404){if(_0x3a4404&&_0x3a4404['name']!==_0xd1a3('0x68')&&_0x3a4404['name']!=='Password\x20Expired'){return rp({'method':_0xd1a3('0x60'),'uri':util[_0xd1a3('0x61')](_0xd1a3('0x62'),_0x1a9270,_0xd1a3('0x63')),'json':!![],'form':{'method':_0xd1a3('0x69'),'input_type':_0xd1a3('0x65'),'response_type':_0xd1a3('0x65'),'rest_data':JSON['stringify']({'session':_0x3a4404['id'],'module_name':_0xd1a3('0x6a')})}})[_0xd1a3('0x25')](function(_0x5c2a7d){if(_0x5c2a7d){var _0x5a5364=_[_0xd1a3('0x6b')](_0x5c2a7d[_0xd1a3('0x6c')]);_[_0xd1a3('0x6d')](_0x5a5364,function(_0x900073){return _0xd9d82b[_0xd1a3('0x6e')](_0x900073[_0xd1a3('0x28')]);});return{'count':_0x5a5364['length'],'rows':_[_0xd1a3('0x2b')](_0x5a5364,function(_0x30c55f){return{'id':_0x30c55f['name'],'name':_0x30c55f['label'],'custom':_[_0xd1a3('0x6f')](_0x30c55f[_0xd1a3('0x28')],'_c')?!![]:![],'options':_0x30c55f[_0xd1a3('0x3f')]?_[_0xd1a3('0x2b')](_[_0xd1a3('0x6b')](_0x30c55f[_0xd1a3('0x3f')]),function(_0x27243d){return{'name':_0x27243d[_0xd1a3('0x70')],'value':_0x27243d[_0xd1a3('0x28')]};}):[]};})};}})[_0xd1a3('0x25')](respondWithResult(_0x3e213e,null))['catch'](function(_0x366497){var _0x86fa1=_0x573870['query'][_0xd1a3('0x71')]?0x1f4:_0x366497[_0xd1a3('0x72')]||0x1f4;logger[_0xd1a3('0x26')](_0xd1a3('0x73'),_0xd1a3('0x54'),_0x86fa1,JSON[_0xd1a3('0x66')](_0x366497));delete _0x366497[_0xd1a3('0x28')];if(_0x86fa1===0x191){_0x86fa1=0x190;}_0x3e213e[_0xd1a3('0x1c')](_0x86fa1)[_0xd1a3('0x29')](_0x573870[_0xd1a3('0x30')][_0xd1a3('0x71')]?{'message':_0xd1a3('0x74'),'statusCode':_0x366497[_0xd1a3('0x72')]}:_0x366497);});}else{var _0x22073d=0x1f4;_0x3e213e[_0xd1a3('0x1c')](_0x22073d)[_0xd1a3('0x29')]({'message':_0xd1a3('0x74'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0x1cc1=['PLAIN','xCALLY\x20Motion\x20Integration','values','module_fields','includes','endsWith','value','test','getFields,\x20%s,\x20%s,\x20%s','getFields','send','Wrong\x20credentials','statusCode','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','end','json','offset','undefined','count','Content-Range','apply','reject','save','update','destroy','then','status','sendStatus','name','index','map','rawAttributes','fieldName','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','type','VIRTUAL','merge','options','SugarcrmAccount','include','rows','catch','show','params','includeAll','find','create','body','getConfigurations','findOne','addConfiguration','Subjects','channel','Descriptions','getDescriptions','SugarcrmField','created_by','description','date_start','duration_minutes','parent_name','direction','username','password','remoteUri','substring','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify'];(function(_0x1a4299,_0x252c9c){var _0x24d418=function(_0x3d60fd){while(--_0x3d60fd){_0x1a4299['push'](_0x1a4299['shift']());}};_0x24d418(++_0x252c9c);}(_0x1cc1,0xeb));var _0x11cc=function(_0x4ff49a,_0x272345){_0x4ff49a=_0x4ff49a-0x0;var _0x14723d=_0x1cc1[_0x4ff49a];return _0x14723d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x11cc('0x0'));var zipdir=require(_0x11cc('0x1'));var jsonpatch=require(_0x11cc('0x2'));var rp=require('request-promise');var moment=require(_0x11cc('0x3'));var BPromise=require(_0x11cc('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x11cc('0x5'));var sox=require(_0x11cc('0x6'));var csv=require(_0x11cc('0x7'));var ejs=require(_0x11cc('0x8'));var fs=require('fs');var fs_extra=require(_0x11cc('0x9'));var _=require(_0x11cc('0xa'));var squel=require(_0x11cc('0xb'));var crypto=require(_0x11cc('0xc'));var jsforce=require(_0x11cc('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x11cc('0x7'));var querystring=require(_0x11cc('0xe'));var Papa=require('papaparse');var Redis=require(_0x11cc('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x11cc('0x10'));var as=require(_0x11cc('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x11cc('0x12'))(_0x11cc('0x13'));var utils=require(_0x11cc('0x14'));var config=require(_0x11cc('0x15'));var licenseUtil=require(_0x11cc('0x16'));var db=require(_0x11cc('0x17'))['db'];var integrations=require(_0x11cc('0x18'));function respondWithStatusCode(_0x319a0a,_0x57da81){_0x57da81=_0x57da81||0xcc;return function(_0x2adb5b){if(_0x2adb5b){return _0x319a0a['sendStatus'](_0x57da81);}return _0x319a0a['status'](_0x57da81)[_0x11cc('0x19')]();};}function respondWithResult(_0x20ac0f,_0x337aa1){_0x337aa1=_0x337aa1||0xc8;return function(_0x4903fd){if(_0x4903fd){return _0x20ac0f['status'](_0x337aa1)[_0x11cc('0x1a')](_0x4903fd);}};}function respondWithFilteredResult(_0x3afe98,_0x3337b8){return function(_0x197320){if(_0x197320){var _0x36d9aa=typeof _0x3337b8[_0x11cc('0x1b')]===_0x11cc('0x1c')&&typeof _0x3337b8['limit']===_0x11cc('0x1c');var _0x338b69=_0x197320['count'];var _0x4b694c=_0x36d9aa?0x0:_0x3337b8['offset'];var _0x25d207=_0x36d9aa?_0x197320[_0x11cc('0x1d')]:_0x3337b8[_0x11cc('0x1b')]+_0x3337b8['limit'];var _0x3baf5f;if(_0x25d207>=_0x338b69){_0x25d207=_0x338b69;_0x3baf5f=0xc8;}else{_0x3baf5f=0xce;}_0x3afe98['status'](_0x3baf5f);return _0x3afe98['set'](_0x11cc('0x1e'),_0x4b694c+'-'+_0x25d207+'/'+_0x338b69)[_0x11cc('0x1a')](_0x197320);}return null;};}function patchUpdates(_0x4bd907){return function(_0x2ec53b){try{jsonpatch[_0x11cc('0x1f')](_0x2ec53b,_0x4bd907,!![]);}catch(_0x2aa580){return BPromise[_0x11cc('0x20')](_0x2aa580);}return _0x2ec53b[_0x11cc('0x21')]();};}function saveUpdates(_0x348179,_0x22ae93){return function(_0x3025f3){if(_0x3025f3){return _0x3025f3[_0x11cc('0x22')](_0x348179)['then'](function(_0xf887ea){return _0xf887ea;});}return null;};}function removeEntity(_0x1af4f1,_0x1c6972){return function(_0x311236){if(_0x311236){return _0x311236[_0x11cc('0x23')]()[_0x11cc('0x24')](function(){_0x1af4f1[_0x11cc('0x25')](0xcc)[_0x11cc('0x19')]();});}};}function handleEntityNotFound(_0x2207ff,_0x4f527a){return function(_0x52c02d){if(!_0x52c02d){_0x2207ff[_0x11cc('0x26')](0x194);}return _0x52c02d;};}function handleError(_0x185ee0,_0x7e54b3){_0x7e54b3=_0x7e54b3||0x1f4;return function(_0x2500bb){logger['error'](_0x2500bb['stack']);if(_0x2500bb[_0x11cc('0x27')]){delete _0x2500bb[_0x11cc('0x27')];}_0x185ee0[_0x11cc('0x25')](_0x7e54b3)['send'](_0x2500bb);};}exports[_0x11cc('0x28')]=function(_0x502be6,_0x3f8e75){var _0x2bc122={},_0x8456cd={},_0x35d16a={'count':0x0,'rows':[]};var _0x559c8a=_[_0x11cc('0x29')](db['SugarcrmAccount'][_0x11cc('0x2a')],function(_0x1489cf){return{'name':_0x1489cf[_0x11cc('0x2b')],'type':_0x1489cf['type']['key']};});_0x8456cd[_0x11cc('0x2c')]=_[_0x11cc('0x29')](_0x559c8a,_0x11cc('0x27'));_0x8456cd['query']=_[_0x11cc('0x2d')](_0x502be6[_0x11cc('0x2e')]);_0x8456cd[_0x11cc('0x2f')]=_[_0x11cc('0x30')](_0x8456cd['model'],_0x8456cd['query']);_0x2bc122[_0x11cc('0x31')]=_['intersection'](_0x8456cd[_0x11cc('0x2c')],qs[_0x11cc('0x32')](_0x502be6[_0x11cc('0x2e')][_0x11cc('0x32')]));_0x2bc122['attributes']=_0x2bc122[_0x11cc('0x31')][_0x11cc('0x33')]?_0x2bc122[_0x11cc('0x31')]:_0x8456cd[_0x11cc('0x2c')];if(!_0x502be6['query'][_0x11cc('0x34')](_0x11cc('0x35'))){_0x2bc122[_0x11cc('0x36')]=qs[_0x11cc('0x36')](_0x502be6['query'][_0x11cc('0x36')]);_0x2bc122[_0x11cc('0x1b')]=qs[_0x11cc('0x1b')](_0x502be6['query'][_0x11cc('0x1b')]);}_0x2bc122[_0x11cc('0x37')]=qs['sort'](_0x502be6['query'][_0x11cc('0x38')]);_0x2bc122[_0x11cc('0x39')]=qs['filters'](_['pick'](_0x502be6['query'],_0x8456cd[_0x11cc('0x2f')]),_0x559c8a);if(_0x502be6[_0x11cc('0x2e')][_0x11cc('0x3a')]){_0x2bc122['where']=_['merge'](_0x2bc122[_0x11cc('0x39')],{'$or':_[_0x11cc('0x29')](_0x559c8a,function(_0x40d3d4){if(_0x40d3d4[_0x11cc('0x3b')]!==_0x11cc('0x3c')){var _0x4b69ee={};_0x4b69ee[_0x40d3d4['name']]={'$like':'%'+_0x502be6[_0x11cc('0x2e')][_0x11cc('0x3a')]+'%'};return _0x4b69ee;}})});}_0x2bc122=_[_0x11cc('0x3d')]({},_0x2bc122,_0x502be6[_0x11cc('0x3e')]);var _0x4f6cfd={'where':_0x2bc122[_0x11cc('0x39')]};return db[_0x11cc('0x3f')][_0x11cc('0x1d')](_0x4f6cfd)[_0x11cc('0x24')](function(_0x3a2ff0){_0x35d16a['count']=_0x3a2ff0;if(_0x502be6[_0x11cc('0x2e')]['includeAll']){_0x2bc122[_0x11cc('0x40')]=[{'all':!![]}];}return db['SugarcrmAccount']['findAll'](_0x2bc122);})[_0x11cc('0x24')](function(_0x3e1114){_0x35d16a[_0x11cc('0x41')]=_0x3e1114;return _0x35d16a;})[_0x11cc('0x24')](respondWithFilteredResult(_0x3f8e75,_0x2bc122))[_0x11cc('0x42')](handleError(_0x3f8e75,null));};exports[_0x11cc('0x43')]=function(_0x1575d8,_0x1b533d){var _0x2193a7={'raw':![],'where':{'id':_0x1575d8[_0x11cc('0x44')]['id']}},_0x496121={};_0x496121[_0x11cc('0x2c')]=_['keys'](db[_0x11cc('0x3f')][_0x11cc('0x2a')]);_0x496121[_0x11cc('0x2e')]=_[_0x11cc('0x2d')](_0x1575d8[_0x11cc('0x2e')]);_0x496121[_0x11cc('0x2f')]=_[_0x11cc('0x30')](_0x496121[_0x11cc('0x2c')],_0x496121[_0x11cc('0x2e')]);_0x2193a7[_0x11cc('0x31')]=_[_0x11cc('0x30')](_0x496121[_0x11cc('0x2c')],qs[_0x11cc('0x32')](_0x1575d8[_0x11cc('0x2e')][_0x11cc('0x32')]));_0x2193a7['attributes']=_0x2193a7[_0x11cc('0x31')][_0x11cc('0x33')]?_0x2193a7[_0x11cc('0x31')]:_0x496121[_0x11cc('0x2c')];if(_0x1575d8[_0x11cc('0x2e')][_0x11cc('0x45')]){_0x2193a7[_0x11cc('0x40')]=[{'all':!![]}];}_0x2193a7=_[_0x11cc('0x3d')]({},_0x2193a7,_0x1575d8['options']);return db[_0x11cc('0x3f')][_0x11cc('0x46')](_0x2193a7)[_0x11cc('0x24')](handleEntityNotFound(_0x1b533d,null))[_0x11cc('0x24')](respondWithResult(_0x1b533d,null))[_0x11cc('0x42')](handleError(_0x1b533d,null));};exports[_0x11cc('0x47')]=function(_0x5e91da,_0x2ff0af){return db['SugarcrmAccount'][_0x11cc('0x47')](_0x5e91da[_0x11cc('0x48')],{})[_0x11cc('0x24')](respondWithResult(_0x2ff0af,0xc9))[_0x11cc('0x42')](handleError(_0x2ff0af,null));};exports['update']=function(_0x3d2eb8,_0x35f046){if(_0x3d2eb8['body']['id']){delete _0x3d2eb8['body']['id'];}return db[_0x11cc('0x3f')]['find']({'where':{'id':_0x3d2eb8[_0x11cc('0x44')]['id']}})[_0x11cc('0x24')](handleEntityNotFound(_0x35f046,null))[_0x11cc('0x24')](saveUpdates(_0x3d2eb8[_0x11cc('0x48')],null))[_0x11cc('0x24')](respondWithResult(_0x35f046,null))[_0x11cc('0x42')](handleError(_0x35f046,null));};exports[_0x11cc('0x23')]=function(_0x926afa,_0x3a1a4c){return db['SugarcrmAccount'][_0x11cc('0x46')]({'where':{'id':_0x926afa['params']['id']}})[_0x11cc('0x24')](handleEntityNotFound(_0x3a1a4c,null))[_0x11cc('0x24')](removeEntity(_0x3a1a4c,null))[_0x11cc('0x42')](handleError(_0x3a1a4c,null));};exports[_0x11cc('0x49')]=function(_0x2cbba9,_0x5d7ce0,_0x46e0af){var _0x3e296d={};var _0x46a7f7={};var _0x53ec10;var _0x43384e;return db[_0x11cc('0x3f')][_0x11cc('0x4a')]({'where':{'id':_0x2cbba9[_0x11cc('0x44')]['id']}})['then'](handleEntityNotFound(_0x5d7ce0,null))[_0x11cc('0x24')](function(_0x371746){if(_0x371746){_0x53ec10=_0x371746;_0x46a7f7['model']=_['keys'](db['SugarcrmConfiguration']['rawAttributes']);_0x46a7f7[_0x11cc('0x2e')]=_[_0x11cc('0x2d')](_0x2cbba9[_0x11cc('0x2e')]);_0x46a7f7['filters']=_[_0x11cc('0x30')](_0x46a7f7[_0x11cc('0x2c')],_0x46a7f7[_0x11cc('0x2e')]);_0x3e296d[_0x11cc('0x31')]=_[_0x11cc('0x30')](_0x46a7f7[_0x11cc('0x2c')],qs['fields'](_0x2cbba9['query']['fields']));_0x3e296d[_0x11cc('0x31')]=_0x3e296d[_0x11cc('0x31')]['length']?_0x3e296d[_0x11cc('0x31')]:_0x46a7f7[_0x11cc('0x2c')];_0x3e296d[_0x11cc('0x37')]=qs[_0x11cc('0x38')](_0x2cbba9['query'][_0x11cc('0x38')]);_0x3e296d[_0x11cc('0x39')]=qs[_0x11cc('0x2f')](_['pick'](_0x2cbba9[_0x11cc('0x2e')],_0x46a7f7[_0x11cc('0x2f')]));if(_0x2cbba9[_0x11cc('0x2e')][_0x11cc('0x3a')]){_0x3e296d[_0x11cc('0x39')]=_[_0x11cc('0x3d')](_0x3e296d[_0x11cc('0x39')],{'$or':_['map'](_0x3e296d[_0x11cc('0x31')],function(_0x35403e){var _0x297f14={};_0x297f14[_0x35403e]={'$like':'%'+_0x2cbba9[_0x11cc('0x2e')][_0x11cc('0x3a')]+'%'};return _0x297f14;})});}_0x3e296d=_[_0x11cc('0x3d')]({},_0x3e296d,_0x2cbba9[_0x11cc('0x3e')]);return _0x53ec10[_0x11cc('0x49')](_0x3e296d);}})[_0x11cc('0x24')](function(_0x4fb659){if(_0x4fb659){_0x43384e=_0x4fb659['length'];if(!_0x2cbba9[_0x11cc('0x2e')][_0x11cc('0x34')](_0x11cc('0x35'))){_0x3e296d[_0x11cc('0x36')]=qs['limit'](_0x2cbba9[_0x11cc('0x2e')]['limit']);_0x3e296d['offset']=qs[_0x11cc('0x1b')](_0x2cbba9[_0x11cc('0x2e')][_0x11cc('0x1b')]);}return _0x53ec10['getConfigurations'](_0x3e296d);}})[_0x11cc('0x24')](function(_0x275135){if(_0x275135){return _0x275135?{'count':_0x43384e,'rows':_0x275135}:null;}})[_0x11cc('0x24')](respondWithResult(_0x5d7ce0,null))[_0x11cc('0x42')](handleError(_0x5d7ce0,null));};exports[_0x11cc('0x4b')]=function(_0xd272f9,_0x55d65c,_0x325dc8){if(_0xd272f9[_0x11cc('0x48')]['id']){delete _0xd272f9['body']['id'];}return db[_0x11cc('0x3f')][_0x11cc('0x4a')]({'where':{'id':_0xd272f9[_0x11cc('0x44')]['id']}})[_0x11cc('0x24')](handleEntityNotFound(_0x55d65c,null))[_0x11cc('0x24')](function(_0x3b9446){if(_0x3b9446){_0xd272f9[_0x11cc('0x48')]['AccountId']=_0x3b9446['id'];_0xd272f9[_0x11cc('0x48')][_0x11cc('0x4c')]=integrations['getSubjects'](_0xd272f9['body'][_0x11cc('0x4d')],_0xd272f9[_0x11cc('0x48')][_0x11cc('0x3b')]);_0xd272f9['body'][_0x11cc('0x4e')]=integrations[_0x11cc('0x4f')](_0xd272f9[_0x11cc('0x48')]['channel'],_0xd272f9[_0x11cc('0x48')]['type']);return db['SugarcrmConfiguration'][_0x11cc('0x47')](_0xd272f9[_0x11cc('0x48')],{'include':[{'model':db['SugarcrmField'],'as':'Subjects'},{'model':db[_0x11cc('0x50')],'as':_0x11cc('0x4e')}]});}return null;})[_0x11cc('0x24')](respondWithResult(_0x55d65c,null))['catch'](handleError(_0x55d65c,null));};exports['getFields']=function(_0x297455,_0x19d74a,_0x1f2590){var _0x5b5e2f='';var _0x34a43d=['id',_0x11cc('0x27'),'assigned_user_id',_0x11cc('0x51'),_0x11cc('0x52'),_0x11cc('0x53'),'duration_hours',_0x11cc('0x54'),'parent_id','parent_type',_0x11cc('0x55'),_0x11cc('0x56')];return db[_0x11cc('0x3f')]['findOne']({'where':{'id':_0x297455['params']['id']},'attributes':['id',_0x11cc('0x57'),_0x11cc('0x58'),_0x11cc('0x59')]})['then'](handleEntityNotFound(_0x19d74a,null))[_0x11cc('0x24')](function(_0x1b7b0a){if(_0x1b7b0a){_0x5b5e2f=_0x1b7b0a[_0x11cc('0x59')];var _0x3f1cf0=_0x5b5e2f['slice'](-0x1);if(_0x3f1cf0==='/'){_0x5b5e2f=_0x5b5e2f[_0x11cc('0x5a')](0x0,_0x5b5e2f['lastIndexOf'](_0x3f1cf0));}return rp({'method':_0x11cc('0x5b'),'uri':util[_0x11cc('0x5c')](_0x11cc('0x5d'),_0x5b5e2f,_0x11cc('0x5e')),'json':!![],'form':{'method':_0x11cc('0x5f'),'input_type':'JSON','response_type':_0x11cc('0x60'),'rest_data':JSON[_0x11cc('0x61')]({'user_auth':{'user_name':_0x1b7b0a['username'],'password':_0x1b7b0a[_0x11cc('0x58')],'encryption':_0x11cc('0x62')},'application':_0x11cc('0x63')})}});}})['then'](function(_0x528102){if(_0x528102&&_0x528102[_0x11cc('0x27')]!=='Invalid\x20Login'&&_0x528102[_0x11cc('0x27')]!=='Password\x20Expired'){return rp({'method':'POST','uri':util[_0x11cc('0x5c')](_0x11cc('0x5d'),_0x5b5e2f,'/service/v4_1/rest.php'),'json':!![],'form':{'method':'get_module_fields','input_type':'JSON','response_type':_0x11cc('0x60'),'rest_data':JSON[_0x11cc('0x61')]({'session':_0x528102['id'],'module_name':'Calls'})}})[_0x11cc('0x24')](function(_0x3b702c){if(_0x3b702c){var _0x3d79f0=_[_0x11cc('0x64')](_0x3b702c[_0x11cc('0x65')]);_['remove'](_0x3d79f0,function(_0x8e15b8){return _0x34a43d[_0x11cc('0x66')](_0x8e15b8[_0x11cc('0x27')]);});return{'count':_0x3d79f0[_0x11cc('0x33')],'rows':_[_0x11cc('0x29')](_0x3d79f0,function(_0x3ea040){return{'id':_0x3ea040[_0x11cc('0x27')],'name':_0x3ea040['label'],'custom':_[_0x11cc('0x67')](_0x3ea040[_0x11cc('0x27')],'_c')?!![]:![],'options':_0x3ea040['options']?_[_0x11cc('0x29')](_['values'](_0x3ea040[_0x11cc('0x3e')]),function(_0xd4e295){return{'name':_0xd4e295[_0x11cc('0x68')],'value':_0xd4e295['name']};}):[]};})};}})[_0x11cc('0x24')](respondWithResult(_0x19d74a,null))[_0x11cc('0x42')](function(_0x272d54){var _0x282193=_0x297455[_0x11cc('0x2e')][_0x11cc('0x69')]?0x1f4:_0x272d54['statusCode']||0x1f4;logger['error'](_0x11cc('0x6a'),_0x11cc('0x6b'),_0x282193,JSON[_0x11cc('0x61')](_0x272d54));delete _0x272d54['name'];if(_0x282193===0x191){_0x282193=0x190;}_0x19d74a[_0x11cc('0x25')](_0x282193)[_0x11cc('0x6c')](_0x297455[_0x11cc('0x2e')][_0x11cc('0x69')]?{'message':_0x11cc('0x6d'),'statusCode':_0x272d54[_0x11cc('0x6e')]}:_0x272d54);});}else{var _0x3c78b8=0x1f4;_0x19d74a[_0x11cc('0x25')](_0x3c78b8)['send']({'message':_0x11cc('0x6d'),'statusCode':0x190});}});};
\ No newline at end of file
index df3a3b9..fc4d7cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x639a=['path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','exports','define','SugarcrmAccount','int_sugarcrm_accounts','lodash','util','moment','bluebird'];(function(_0x17928f,_0x4ad33f){var _0x500b63=function(_0x127644){while(--_0x127644){_0x17928f['push'](_0x17928f['shift']());}};_0x500b63(++_0x4ad33f);}(_0x639a,0x1e8));var _0xa639=function(_0x1bc3ca,_0x2f26c9){_0x1bc3ca=_0x1bc3ca-0x0;var _0x408295=_0x639a[_0x1bc3ca];return _0x408295;};'use strict';var _=require(_0xa639('0x0'));var util=require(_0xa639('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xa639('0x2'));var BPromise=require(_0xa639('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa639('0x4'));var rimraf=require(_0xa639('0x5'));var config=require(_0xa639('0x6'));var attributes=require(_0xa639('0x7'));var integrations=require('../../components/integrations/configuration');module[_0xa639('0x8')]=function(_0x4b8b5d,_0x276815){return _0x4b8b5d[_0xa639('0x9')](_0xa639('0xa'),attributes,{'tableName':_0xa639('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4f67=['util','path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','SugarcrmAccount','int_sugarcrm_accounts','lodash'];(function(_0x4b0e57,_0x4cc2f7){var _0x4cc601=function(_0x5f327a){while(--_0x5f327a){_0x4b0e57['push'](_0x4b0e57['shift']());}};_0x4cc601(++_0x4cc2f7);}(_0x4f67,0xba));var _0x74f6=function(_0x41886e,_0x2f9b3e){_0x41886e=_0x41886e-0x0;var _0x10e7f4=_0x4f67[_0x41886e];return _0x10e7f4;};'use strict';var _=require(_0x74f6('0x0'));var util=require(_0x74f6('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x74f6('0x2'));var rimraf=require(_0x74f6('0x3'));var config=require(_0x74f6('0x4'));var attributes=require(_0x74f6('0x5'));var integrations=require(_0x74f6('0x6'));module[_0x74f6('0x7')]=function(_0x5d0b7d,_0x5b4c8d){return _0x5d0b7d[_0x74f6('0x8')](_0x74f6('0x9'),attributes,{'tableName':_0x74f6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 842aeb1..21ffad7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6163=['stringify','ShowSugarcrmAccount','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','jayson/promise','client','then','info','SugarcrmAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','SugarcrmAccount,\x20%s,\x20%s','message','result','catch','SugarcrmAccount','findAll','options','raw','where','attributes','limit','model','map','include','GetSugarcrmAccount','debug'];(function(_0x40e655,_0x5d6bc5){var _0x212901=function(_0x19276b){while(--_0x19276b){_0x40e655['push'](_0x40e655['shift']());}};_0x212901(++_0x5d6bc5);}(_0x6163,0xe2));var _0x3616=function(_0x113ed6,_0x2350c7){_0x113ed6=_0x113ed6-0x0;var _0x583be8=_0x6163[_0x113ed6];return _0x583be8;};'use strict';var _=require('lodash');var util=require(_0x3616('0x0'));var moment=require(_0x3616('0x1'));var BPromise=require(_0x3616('0x2'));var rs=require(_0x3616('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3616('0x4'));var logger=require(_0x3616('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3616('0x6'));var client=jayson[_0x3616('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c4a33,_0x553776,_0x4ac2cf){return new BPromise(function(_0x1d2299,_0x5b689d){return client['request'](_0x1c4a33,_0x4ac2cf)[_0x3616('0x8')](function(_0x4d3547){logger[_0x3616('0x9')]('SugarcrmAccount,\x20%s,\x20%s',_0x553776,'request\x20sent');logger['debug'](_0x3616('0xa'),_0x553776,_0x3616('0xb'),JSON['stringify'](_0x4d3547));if(_0x4d3547[_0x3616('0xc')]){if(_0x4d3547[_0x3616('0xc')][_0x3616('0xd')]===0x1f4){logger[_0x3616('0xc')](_0x3616('0xe'),_0x553776,_0x4d3547['error'][_0x3616('0xf')]);return _0x5b689d(_0x4d3547['error'][_0x3616('0xf')]);}logger[_0x3616('0xc')](_0x3616('0xe'),_0x553776,_0x4d3547[_0x3616('0xc')][_0x3616('0xf')]);return _0x1d2299(_0x4d3547[_0x3616('0xc')][_0x3616('0xf')]);}else{logger[_0x3616('0x9')](_0x3616('0xe'),_0x553776,'request\x20sent');_0x1d2299(_0x4d3547[_0x3616('0x10')]['message']);}})[_0x3616('0x11')](function(_0x4b433c){logger[_0x3616('0xc')]('SugarcrmAccount,\x20%s,\x20%s',_0x553776,_0x4b433c);_0x5b689d(_0x4b433c);});});}exports['GetSugarcrmAccount']=function(_0x15b15b){var _0x52d623=this;return new Promise(function(_0xea1031,_0x4471ee){return db[_0x3616('0x12')][_0x3616('0x13')]({'raw':_0x15b15b[_0x3616('0x14')]?_0x15b15b['options'][_0x3616('0x15')]===undefined?!![]:![]:!![],'where':_0x15b15b['options']?_0x15b15b[_0x3616('0x14')][_0x3616('0x16')]||null:null,'attributes':_0x15b15b[_0x3616('0x14')]?_0x15b15b['options'][_0x3616('0x17')]||null:null,'limit':_0x15b15b[_0x3616('0x14')]?_0x15b15b[_0x3616('0x14')][_0x3616('0x18')]||null:null,'include':_0x15b15b[_0x3616('0x14')]?_0x15b15b[_0x3616('0x14')]['include']?_['map'](_0x15b15b[_0x3616('0x14')]['include'],function(_0x427a0c){return{'model':db[_0x427a0c[_0x3616('0x19')]],'as':_0x427a0c['as'],'attributes':_0x427a0c[_0x3616('0x17')],'include':_0x427a0c['include']?_[_0x3616('0x1a')](_0x427a0c[_0x3616('0x1b')],function(_0x75392b){return{'model':db[_0x75392b['model']],'as':_0x75392b['as'],'attributes':_0x75392b['attributes'],'include':_0x75392b[_0x3616('0x1b')]?_['map'](_0x75392b[_0x3616('0x1b')],function(_0x258b5f){return{'model':db[_0x258b5f[_0x3616('0x19')]],'as':_0x258b5f['as'],'attributes':_0x258b5f[_0x3616('0x17')]};}):[]};}):[]};}):[]:[]})[_0x3616('0x8')](function(_0x2db7bb){logger[_0x3616('0x9')](_0x3616('0x1c'),_0x15b15b);logger[_0x3616('0x1d')](_0x3616('0x1c'),_0x15b15b,JSON[_0x3616('0x1e')](_0x2db7bb));_0xea1031(_0x2db7bb);})['catch'](function(_0xba1c2e){logger[_0x3616('0xc')](_0x3616('0x1c'),_0xba1c2e[_0x3616('0xf')],_0x15b15b);_0x4471ee(_0x52d623[_0x3616('0xc')](0x1f4,_0xba1c2e[_0x3616('0xf')]));});});};exports['ShowSugarcrmAccount']=function(_0x3896c4){var _0x21520f=this;return new Promise(function(_0x316656,_0x5d4f59){return db['SugarcrmAccount']['find']({'raw':_0x3896c4[_0x3616('0x14')]?_0x3896c4[_0x3616('0x14')][_0x3616('0x15')]===undefined?!![]:![]:!![],'where':_0x3896c4[_0x3616('0x14')]?_0x3896c4[_0x3616('0x14')][_0x3616('0x16')]||null:null,'attributes':_0x3896c4[_0x3616('0x14')]?_0x3896c4[_0x3616('0x14')][_0x3616('0x17')]||null:null,'include':_0x3896c4[_0x3616('0x14')]?_0x3896c4[_0x3616('0x14')][_0x3616('0x1b')]?_[_0x3616('0x1a')](_0x3896c4[_0x3616('0x14')][_0x3616('0x1b')],function(_0x241de3){return{'model':db[_0x241de3[_0x3616('0x19')]],'as':_0x241de3['as'],'attributes':_0x241de3[_0x3616('0x17')],'include':_0x241de3[_0x3616('0x1b')]?_[_0x3616('0x1a')](_0x241de3[_0x3616('0x1b')],function(_0x1b0a3e){return{'model':db[_0x1b0a3e['model']],'as':_0x1b0a3e['as'],'attributes':_0x1b0a3e[_0x3616('0x17')],'include':_0x1b0a3e[_0x3616('0x1b')]?_[_0x3616('0x1a')](_0x1b0a3e[_0x3616('0x1b')],function(_0x49bae9){return{'model':db[_0x49bae9[_0x3616('0x19')]],'as':_0x49bae9['as'],'attributes':_0x49bae9[_0x3616('0x17')]};}):[]};}):[]};}):[]:[]})[_0x3616('0x8')](function(_0x5a8c98){logger[_0x3616('0x9')](_0x3616('0x1f'),_0x3896c4);logger['debug'](_0x3616('0x1f'),_0x3896c4,JSON[_0x3616('0x1e')](_0x5a8c98));_0x316656(_0x5a8c98);})[_0x3616('0x11')](function(_0x3d13ab){logger[_0x3616('0xc')](_0x3616('0x1f'),_0x3d13ab['message'],_0x3896c4);_0x5d4f59(_0x21520f['error'](0x1f4,_0x3d13ab[_0x3616('0xf')]));});});};
\ No newline at end of file
+var _0xf20e=['debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','model','attributes','include','map','then','ShowSugarcrmAccount','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent'];(function(_0x84293c,_0x392606){var _0x10d905=function(_0x5ef758){while(--_0x5ef758){_0x84293c['push'](_0x84293c['shift']());}};_0x10d905(++_0x392606);}(_0xf20e,0x1ab));var _0xef20=function(_0x39979b,_0x2111f9){_0x39979b=_0x39979b-0x0;var _0x560b41=_0xf20e[_0x39979b];return _0x560b41;};'use strict';var _=require(_0xef20('0x0'));var util=require(_0xef20('0x1'));var moment=require(_0xef20('0x2'));var BPromise=require(_0xef20('0x3'));var rs=require(_0xef20('0x4'));var fs=require('fs');var Redis=require(_0xef20('0x5'));var db=require(_0xef20('0x6'))['db'];var utils=require(_0xef20('0x7'));var logger=require(_0xef20('0x8'))(_0xef20('0x9'));var config=require(_0xef20('0xa'));var jayson=require(_0xef20('0xb'));var client=jayson[_0xef20('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1fb17d,_0xc0417c,_0x1ce87b){return new BPromise(function(_0x4899b8,_0x458056){return client[_0xef20('0xd')](_0x1fb17d,_0x1ce87b)['then'](function(_0x491205){logger[_0xef20('0xe')](_0xef20('0xf'),_0xc0417c,_0xef20('0x10'));logger[_0xef20('0x11')](_0xef20('0x12'),_0xc0417c,_0xef20('0x10'),JSON[_0xef20('0x13')](_0x491205));if(_0x491205[_0xef20('0x14')]){if(_0x491205['error'][_0xef20('0x15')]===0x1f4){logger[_0xef20('0x14')](_0xef20('0xf'),_0xc0417c,_0x491205['error'][_0xef20('0x16')]);return _0x458056(_0x491205['error'][_0xef20('0x16')]);}logger[_0xef20('0x14')](_0xef20('0xf'),_0xc0417c,_0x491205[_0xef20('0x14')][_0xef20('0x16')]);return _0x4899b8(_0x491205[_0xef20('0x14')][_0xef20('0x16')]);}else{logger[_0xef20('0xe')]('SugarcrmAccount,\x20%s,\x20%s',_0xc0417c,_0xef20('0x10'));_0x4899b8(_0x491205[_0xef20('0x17')][_0xef20('0x16')]);}})[_0xef20('0x18')](function(_0x196c01){logger[_0xef20('0x14')](_0xef20('0xf'),_0xc0417c,_0x196c01);_0x458056(_0x196c01);});});}exports[_0xef20('0x19')]=function(_0x4cf3d5){var _0x155431=this;return new Promise(function(_0x54ad9a,_0xf31682){return db[_0xef20('0x1a')][_0xef20('0x1b')]({'raw':_0x4cf3d5[_0xef20('0x1c')]?_0x4cf3d5[_0xef20('0x1c')][_0xef20('0x1d')]===undefined?!![]:![]:!![],'where':_0x4cf3d5[_0xef20('0x1c')]?_0x4cf3d5[_0xef20('0x1c')]['where']||null:null,'attributes':_0x4cf3d5[_0xef20('0x1c')]?_0x4cf3d5['options']['attributes']||null:null,'limit':_0x4cf3d5[_0xef20('0x1c')]?_0x4cf3d5[_0xef20('0x1c')]['limit']||null:null,'include':_0x4cf3d5['options']?_0x4cf3d5['options']['include']?_['map'](_0x4cf3d5[_0xef20('0x1c')]['include'],function(_0x596f8f){return{'model':db[_0x596f8f[_0xef20('0x1e')]],'as':_0x596f8f['as'],'attributes':_0x596f8f[_0xef20('0x1f')],'include':_0x596f8f[_0xef20('0x20')]?_[_0xef20('0x21')](_0x596f8f[_0xef20('0x20')],function(_0x578e64){return{'model':db[_0x578e64['model']],'as':_0x578e64['as'],'attributes':_0x578e64[_0xef20('0x1f')],'include':_0x578e64['include']?_['map'](_0x578e64[_0xef20('0x20')],function(_0x4cbe91){return{'model':db[_0x4cbe91[_0xef20('0x1e')]],'as':_0x4cbe91['as'],'attributes':_0x4cbe91[_0xef20('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xef20('0x22')](function(_0x394b59){logger['info'](_0xef20('0x19'),_0x4cf3d5);logger['debug']('GetSugarcrmAccount',_0x4cf3d5,JSON[_0xef20('0x13')](_0x394b59));_0x54ad9a(_0x394b59);})['catch'](function(_0x2545b1){logger[_0xef20('0x14')](_0xef20('0x19'),_0x2545b1[_0xef20('0x16')],_0x4cf3d5);_0xf31682(_0x155431['error'](0x1f4,_0x2545b1[_0xef20('0x16')]));});});};exports[_0xef20('0x23')]=function(_0x47cf8d){var _0xcfb144=this;return new Promise(function(_0x5246ea,_0x13a9fa){return db[_0xef20('0x1a')]['find']({'raw':_0x47cf8d['options']?_0x47cf8d[_0xef20('0x1c')][_0xef20('0x1d')]===undefined?!![]:![]:!![],'where':_0x47cf8d['options']?_0x47cf8d[_0xef20('0x1c')][_0xef20('0x24')]||null:null,'attributes':_0x47cf8d[_0xef20('0x1c')]?_0x47cf8d[_0xef20('0x1c')][_0xef20('0x1f')]||null:null,'include':_0x47cf8d[_0xef20('0x1c')]?_0x47cf8d[_0xef20('0x1c')][_0xef20('0x20')]?_[_0xef20('0x21')](_0x47cf8d[_0xef20('0x1c')][_0xef20('0x20')],function(_0x45b5cd){return{'model':db[_0x45b5cd['model']],'as':_0x45b5cd['as'],'attributes':_0x45b5cd[_0xef20('0x1f')],'include':_0x45b5cd['include']?_[_0xef20('0x21')](_0x45b5cd[_0xef20('0x20')],function(_0x5bc6e9){return{'model':db[_0x5bc6e9['model']],'as':_0x5bc6e9['as'],'attributes':_0x5bc6e9['attributes'],'include':_0x5bc6e9[_0xef20('0x20')]?_['map'](_0x5bc6e9[_0xef20('0x20')],function(_0x3b9aa5){return{'model':db[_0x3b9aa5[_0xef20('0x1e')]],'as':_0x3b9aa5['as'],'attributes':_0x3b9aa5[_0xef20('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xef20('0x22')](function(_0x386222){logger[_0xef20('0xe')]('ShowSugarcrmAccount',_0x47cf8d);logger[_0xef20('0x11')](_0xef20('0x23'),_0x47cf8d,JSON[_0xef20('0x13')](_0x386222));_0x5246ea(_0x386222);})[_0xef20('0x18')](function(_0x4d66be){logger[_0xef20('0x14')](_0xef20('0x23'),_0x4d66be[_0xef20('0x16')],_0x47cf8d);_0x13a9fa(_0xcfb144[_0xef20('0x14')](0x1f4,_0x4d66be[_0xef20('0x16')]));});});};
\ No newline at end of file
index ef69f70..8871efa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0254=['post','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','index','get','show','/:id/fields','isAuthenticated','getFields','/:id/subjects','getSubjects','getDescriptions'];(function(_0x2f9220,_0x3f4369){var _0x3cedfc=function(_0x3022b1){while(--_0x3022b1){_0x2f9220['push'](_0x2f9220['shift']());}};_0x3cedfc(++_0x3f4369);}(_0x0254,0xc4));var _0x4025=function(_0xe7f389,_0x2c4dc3){_0xe7f389=_0xe7f389-0x0;var _0x4ab5dd=_0x0254[_0xe7f389];return _0x4ab5dd;};'use strict';var multer=require(_0x4025('0x0'));var util=require(_0x4025('0x1'));var path=require(_0x4025('0x2'));var timeout=require(_0x4025('0x3'));var express=require(_0x4025('0x4'));var router=express[_0x4025('0x5')]();var fs_extra=require(_0x4025('0x6'));var auth=require(_0x4025('0x7'));var interaction=require(_0x4025('0x8'));var config=require(_0x4025('0x9'));var controller=require(_0x4025('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x4025('0xb')]);router[_0x4025('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x4025('0xd')]);router[_0x4025('0xc')](_0x4025('0xe'),auth[_0x4025('0xf')](),controller[_0x4025('0x10')]);router[_0x4025('0xc')](_0x4025('0x11'),auth[_0x4025('0xf')](),controller[_0x4025('0x12')]);router['get']('/:id/descriptions',auth[_0x4025('0xf')](),controller[_0x4025('0x13')]);router[_0x4025('0x14')]('/',auth[_0x4025('0xf')](),controller['create']);router[_0x4025('0x15')](_0x4025('0x16'),auth[_0x4025('0xf')](),controller[_0x4025('0x17')]);router[_0x4025('0x18')]('/:id',auth[_0x4025('0xf')](),controller[_0x4025('0x19')]);module[_0x4025('0x1a')]=router;
\ No newline at end of file
+var _0xb7b9=['put','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','/:id','getFields','/:id/subjects','getSubjects','getDescriptions','post','create'];(function(_0x171c88,_0xf82128){var _0x195b8a=function(_0x27b0ca){while(--_0x27b0ca){_0x171c88['push'](_0x171c88['shift']());}};_0x195b8a(++_0xf82128);}(_0xb7b9,0xd3));var _0x9b7b=function(_0x5f4382,_0x385387){_0x5f4382=_0x5f4382-0x0;var _0x10f512=_0xb7b9[_0x5f4382];return _0x10f512;};'use strict';var multer=require(_0x9b7b('0x0'));var util=require(_0x9b7b('0x1'));var path=require(_0x9b7b('0x2'));var timeout=require(_0x9b7b('0x3'));var express=require('express');var router=express[_0x9b7b('0x4')]();var fs_extra=require(_0x9b7b('0x5'));var auth=require(_0x9b7b('0x6'));var interaction=require(_0x9b7b('0x7'));var config=require(_0x9b7b('0x8'));var controller=require(_0x9b7b('0x9'));router[_0x9b7b('0xa')]('/',auth[_0x9b7b('0xb')](),controller[_0x9b7b('0xc')]);router[_0x9b7b('0xa')](_0x9b7b('0xd'),auth[_0x9b7b('0xb')](),controller['show']);router[_0x9b7b('0xa')]('/:id/fields',auth[_0x9b7b('0xb')](),controller[_0x9b7b('0xe')]);router[_0x9b7b('0xa')](_0x9b7b('0xf'),auth[_0x9b7b('0xb')](),controller[_0x9b7b('0x10')]);router[_0x9b7b('0xa')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0x9b7b('0x11')]);router[_0x9b7b('0x12')]('/',auth['isAuthenticated'](),controller[_0x9b7b('0x13')]);router[_0x9b7b('0x14')](_0x9b7b('0xd'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x9b7b('0xd'),auth[_0x9b7b('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 587bef2..07044ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02b3=['exports','sequelize'];(function(_0x1b41a0,_0x206a73){var _0x2d393d=function(_0x54116b){while(--_0x54116b){_0x1b41a0['push'](_0x1b41a0['shift']());}};_0x2d393d(++_0x206a73);}(_0x02b3,0x12d));var _0x302b=function(_0x531d15,_0x599af5){_0x531d15=_0x531d15-0x0;var _0x271a18=_0x02b3[_0x531d15];return _0x271a18;};'use strict';var Sequelize=require(_0x302b('0x0'));module[_0x302b('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x5383=['STRING','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5383,0x85));var _0x3538=function(_0x45d442,_0x25794d){_0x45d442=_0x45d442-0x0;var _0xd44bbc=_0x5383[_0x45d442];return _0xd44bbc;};'use strict';var Sequelize=require(_0x3538('0x0'));module[_0x3538('0x1')]={'name':{'type':Sequelize[_0x3538('0x2')]},'description':{'type':Sequelize[_0x3538('0x2')]}};
\ No newline at end of file
index a01fdad..2c456f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2629=['save','update','then','end','sendStatus','error','stack','send','index','map','SugarcrmConfiguration','rawAttributes','fieldName','type','model','name','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','options','count','includeAll','include','findAll','catch','show','params','find','create','body','getFields','findOne','nolimit','getSubjects','SugarcrmField','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','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','../../mysqldb','status','json','offset','undefined','limit','set','Content-Range','apply','reject'];(function(_0x1678c8,_0x1c32f4){var _0x387aa9=function(_0x2803bd){while(--_0x2803bd){_0x1678c8['push'](_0x1678c8['shift']());}};_0x387aa9(++_0x1c32f4);}(_0x2629,0x1ce));var _0x9262=function(_0x1e74ca,_0x59dc03){_0x1e74ca=_0x1e74ca-0x0;var _0x4f1f20=_0x2629[_0x1e74ca];return _0x4f1f20;};'use strict';var emlformat=require(_0x9262('0x0'));var rimraf=require(_0x9262('0x1'));var zipdir=require(_0x9262('0x2'));var jsonpatch=require(_0x9262('0x3'));var rp=require(_0x9262('0x4'));var moment=require(_0x9262('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9262('0x6'));var util=require(_0x9262('0x7'));var path=require(_0x9262('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9262('0x9'));var fs=require('fs');var fs_extra=require(_0x9262('0xa'));var _=require(_0x9262('0xb'));var squel=require(_0x9262('0xc'));var crypto=require(_0x9262('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x9262('0xe'));var toCsv=require(_0x9262('0xf'));var querystring=require('querystring');var Papa=require(_0x9262('0x10'));var Redis=require(_0x9262('0x11'));var authService=require(_0x9262('0x12'));var qs=require(_0x9262('0x13'));var as=require(_0x9262('0x14'));var hardwareService=require(_0x9262('0x15'));var logger=require(_0x9262('0x16'))(_0x9262('0x17'));var utils=require(_0x9262('0x18'));var config=require(_0x9262('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x9262('0x1a'))['db'];function respondWithStatusCode(_0x2725b2,_0x5ede91){_0x5ede91=_0x5ede91||0xcc;return function(_0x4ea397){if(_0x4ea397){return _0x2725b2['sendStatus'](_0x5ede91);}return _0x2725b2[_0x9262('0x1b')](_0x5ede91)['end']();};}function respondWithResult(_0x192c7a,_0x742021){_0x742021=_0x742021||0xc8;return function(_0x21cc12){if(_0x21cc12){return _0x192c7a[_0x9262('0x1b')](_0x742021)[_0x9262('0x1c')](_0x21cc12);}};}function respondWithFilteredResult(_0x6fea4c,_0x4cdd70){return function(_0x3bf89c){if(_0x3bf89c){var _0xb1b22b=typeof _0x4cdd70[_0x9262('0x1d')]===_0x9262('0x1e')&&typeof _0x4cdd70[_0x9262('0x1f')]===_0x9262('0x1e');var _0x581385=_0x3bf89c['count'];var _0x1d059a=_0xb1b22b?0x0:_0x4cdd70[_0x9262('0x1d')];var _0x527bd6=_0xb1b22b?_0x3bf89c['count']:_0x4cdd70[_0x9262('0x1d')]+_0x4cdd70[_0x9262('0x1f')];var _0x1b2921;if(_0x527bd6>=_0x581385){_0x527bd6=_0x581385;_0x1b2921=0xc8;}else{_0x1b2921=0xce;}_0x6fea4c['status'](_0x1b2921);return _0x6fea4c[_0x9262('0x20')](_0x9262('0x21'),_0x1d059a+'-'+_0x527bd6+'/'+_0x581385)[_0x9262('0x1c')](_0x3bf89c);}return null;};}function patchUpdates(_0x3c15f0){return function(_0x46de32){try{jsonpatch[_0x9262('0x22')](_0x46de32,_0x3c15f0,!![]);}catch(_0x9e4305){return BPromise[_0x9262('0x23')](_0x9e4305);}return _0x46de32[_0x9262('0x24')]();};}function saveUpdates(_0x28dfaa,_0xbe7167){return function(_0x20ad3b){if(_0x20ad3b){return _0x20ad3b[_0x9262('0x25')](_0x28dfaa)[_0x9262('0x26')](function(_0x4540f5){return _0x4540f5;});}return null;};}function removeEntity(_0x75141,_0x3247d4){return function(_0xb84426){if(_0xb84426){return _0xb84426['destroy']()[_0x9262('0x26')](function(){_0x75141[_0x9262('0x1b')](0xcc)[_0x9262('0x27')]();});}};}function handleEntityNotFound(_0x3cc40c,_0x57c461){return function(_0xcaee94){if(!_0xcaee94){_0x3cc40c[_0x9262('0x28')](0x194);}return _0xcaee94;};}function handleError(_0x4eb825,_0x46b973){_0x46b973=_0x46b973||0x1f4;return function(_0x1fb2db){logger[_0x9262('0x29')](_0x1fb2db[_0x9262('0x2a')]);if(_0x1fb2db['name']){delete _0x1fb2db['name'];}_0x4eb825[_0x9262('0x1b')](_0x46b973)[_0x9262('0x2b')](_0x1fb2db);};}exports[_0x9262('0x2c')]=function(_0x2387cd,_0x74eb40){var _0x7c43b4={},_0x338f53={},_0x548bbf={'count':0x0,'rows':[]};var _0x12848e=_[_0x9262('0x2d')](db[_0x9262('0x2e')][_0x9262('0x2f')],function(_0x1128df){return{'name':_0x1128df[_0x9262('0x30')],'type':_0x1128df[_0x9262('0x31')]['key']};});_0x338f53[_0x9262('0x32')]=_[_0x9262('0x2d')](_0x12848e,_0x9262('0x33'));_0x338f53['query']=_[_0x9262('0x34')](_0x2387cd[_0x9262('0x35')]);_0x338f53['filters']=_[_0x9262('0x36')](_0x338f53[_0x9262('0x32')],_0x338f53['query']);_0x7c43b4[_0x9262('0x37')]=_[_0x9262('0x36')](_0x338f53[_0x9262('0x32')],qs[_0x9262('0x38')](_0x2387cd[_0x9262('0x35')]['fields']));_0x7c43b4[_0x9262('0x37')]=_0x7c43b4[_0x9262('0x37')][_0x9262('0x39')]?_0x7c43b4[_0x9262('0x37')]:_0x338f53[_0x9262('0x32')];if(!_0x2387cd[_0x9262('0x35')][_0x9262('0x3a')]('nolimit')){_0x7c43b4[_0x9262('0x1f')]=qs['limit'](_0x2387cd[_0x9262('0x35')][_0x9262('0x1f')]);_0x7c43b4[_0x9262('0x1d')]=qs[_0x9262('0x1d')](_0x2387cd[_0x9262('0x35')][_0x9262('0x1d')]);}_0x7c43b4[_0x9262('0x3b')]=qs[_0x9262('0x3c')](_0x2387cd[_0x9262('0x35')][_0x9262('0x3c')]);_0x7c43b4[_0x9262('0x3d')]=qs[_0x9262('0x3e')](_[_0x9262('0x3f')](_0x2387cd['query'],_0x338f53[_0x9262('0x3e')]),_0x12848e);if(_0x2387cd[_0x9262('0x35')][_0x9262('0x40')]){_0x7c43b4['where']=_[_0x9262('0x41')](_0x7c43b4[_0x9262('0x3d')],{'$or':_['map'](_0x12848e,function(_0x1351c6){if(_0x1351c6[_0x9262('0x31')]!=='VIRTUAL'){var _0x69d31a={};_0x69d31a[_0x1351c6[_0x9262('0x33')]]={'$like':'%'+_0x2387cd[_0x9262('0x35')][_0x9262('0x40')]+'%'};return _0x69d31a;}})});}_0x7c43b4=_[_0x9262('0x41')]({},_0x7c43b4,_0x2387cd[_0x9262('0x42')]);var _0x3e3e7f={'where':_0x7c43b4[_0x9262('0x3d')]};return db[_0x9262('0x2e')][_0x9262('0x43')](_0x3e3e7f)[_0x9262('0x26')](function(_0x12b533){_0x548bbf[_0x9262('0x43')]=_0x12b533;if(_0x2387cd[_0x9262('0x35')][_0x9262('0x44')]){_0x7c43b4[_0x9262('0x45')]=[{'all':!![]}];}return db[_0x9262('0x2e')][_0x9262('0x46')](_0x7c43b4);})[_0x9262('0x26')](function(_0x43b714){_0x548bbf['rows']=_0x43b714;return _0x548bbf;})[_0x9262('0x26')](respondWithFilteredResult(_0x74eb40,_0x7c43b4))[_0x9262('0x47')](handleError(_0x74eb40,null));};exports[_0x9262('0x48')]=function(_0x2f162b,_0x10dcb4){var _0x4b9144={'raw':![],'where':{'id':_0x2f162b[_0x9262('0x49')]['id']}},_0x38a426={};_0x38a426[_0x9262('0x32')]=_[_0x9262('0x34')](db[_0x9262('0x2e')][_0x9262('0x2f')]);_0x38a426['query']=_['keys'](_0x2f162b['query']);_0x38a426[_0x9262('0x3e')]=_[_0x9262('0x36')](_0x38a426[_0x9262('0x32')],_0x38a426[_0x9262('0x35')]);_0x4b9144[_0x9262('0x37')]=_[_0x9262('0x36')](_0x38a426[_0x9262('0x32')],qs['fields'](_0x2f162b['query']['fields']));_0x4b9144['attributes']=_0x4b9144[_0x9262('0x37')]['length']?_0x4b9144['attributes']:_0x38a426['model'];if(_0x2f162b['query'][_0x9262('0x44')]){_0x4b9144[_0x9262('0x45')]=[{'all':!![]}];}_0x4b9144=_['merge']({},_0x4b9144,_0x2f162b['options']);return db[_0x9262('0x2e')][_0x9262('0x4a')](_0x4b9144)['then'](handleEntityNotFound(_0x10dcb4,null))[_0x9262('0x26')](respondWithResult(_0x10dcb4,null))['catch'](handleError(_0x10dcb4,null));};exports['create']=function(_0x33cdda,_0x4b14c3){return db[_0x9262('0x2e')][_0x9262('0x4b')](_0x33cdda['body'],{})['then'](respondWithResult(_0x4b14c3,0xc9))['catch'](handleError(_0x4b14c3,null));};exports[_0x9262('0x25')]=function(_0x5092f7,_0x44130f){if(_0x5092f7[_0x9262('0x4c')]['id']){delete _0x5092f7['body']['id'];}return db[_0x9262('0x2e')]['find']({'where':{'id':_0x5092f7[_0x9262('0x49')]['id']}})[_0x9262('0x26')](handleEntityNotFound(_0x44130f,null))[_0x9262('0x26')](saveUpdates(_0x5092f7[_0x9262('0x4c')],null))[_0x9262('0x26')](respondWithResult(_0x44130f,null))[_0x9262('0x47')](handleError(_0x44130f,null));};exports['destroy']=function(_0x5ce0ef,_0x1ed79b){return db[_0x9262('0x2e')][_0x9262('0x4a')]({'where':{'id':_0x5ce0ef['params']['id']}})[_0x9262('0x26')](handleEntityNotFound(_0x1ed79b,null))[_0x9262('0x26')](removeEntity(_0x1ed79b,null))['catch'](handleError(_0x1ed79b,null));};exports[_0x9262('0x4d')]=function(_0xc4870,_0x69883b,_0x1fe10c){var _0x181d6b={};var _0x12bd99={};var _0x1c0484;var _0x55475e;return db[_0x9262('0x2e')][_0x9262('0x4e')]({'where':{'id':_0xc4870[_0x9262('0x49')]['id']}})['then'](handleEntityNotFound(_0x69883b,null))[_0x9262('0x26')](function(_0x562e2e){if(_0x562e2e){_0x1c0484=_0x562e2e;_0x12bd99[_0x9262('0x32')]=_[_0x9262('0x34')](db['SugarcrmField']['rawAttributes']);_0x12bd99[_0x9262('0x35')]=_[_0x9262('0x34')](_0xc4870[_0x9262('0x35')]);_0x12bd99[_0x9262('0x3e')]=_[_0x9262('0x36')](_0x12bd99[_0x9262('0x32')],_0x12bd99[_0x9262('0x35')]);_0x181d6b['attributes']=_['intersection'](_0x12bd99[_0x9262('0x32')],qs[_0x9262('0x38')](_0xc4870[_0x9262('0x35')][_0x9262('0x38')]));_0x181d6b[_0x9262('0x37')]=_0x181d6b[_0x9262('0x37')]['length']?_0x181d6b['attributes']:_0x12bd99[_0x9262('0x32')];_0x181d6b['order']=qs[_0x9262('0x3c')](_0xc4870[_0x9262('0x35')][_0x9262('0x3c')]);_0x181d6b[_0x9262('0x3d')]=qs['filters'](_['pick'](_0xc4870['query'],_0x12bd99[_0x9262('0x3e')]));if(_0xc4870['query'][_0x9262('0x40')]){_0x181d6b[_0x9262('0x3d')]=_[_0x9262('0x41')](_0x181d6b['where'],{'$or':_['map'](_0x181d6b[_0x9262('0x37')],function(_0x357987){var _0x21a0b7={};_0x21a0b7[_0x357987]={'$like':'%'+_0xc4870[_0x9262('0x35')]['filter']+'%'};return _0x21a0b7;})});}_0x181d6b=_[_0x9262('0x41')]({},_0x181d6b,_0xc4870['options']);return _0x1c0484[_0x9262('0x4d')](_0x181d6b);}})[_0x9262('0x26')](function(_0x1b6135){if(_0x1b6135){_0x55475e=_0x1b6135[_0x9262('0x39')];if(!_0xc4870[_0x9262('0x35')][_0x9262('0x3a')](_0x9262('0x4f'))){_0x181d6b[_0x9262('0x1f')]=qs[_0x9262('0x1f')](_0xc4870[_0x9262('0x35')][_0x9262('0x1f')]);_0x181d6b[_0x9262('0x1d')]=qs['offset'](_0xc4870[_0x9262('0x35')][_0x9262('0x1d')]);}return _0x1c0484[_0x9262('0x4d')](_0x181d6b);}})[_0x9262('0x26')](function(_0x3798c6){if(_0x3798c6){return _0x3798c6?{'count':_0x55475e,'rows':_0x3798c6}:null;}})['then'](respondWithResult(_0x69883b,null))[_0x9262('0x47')](handleError(_0x69883b,null));};exports[_0x9262('0x50')]=function(_0x5e79dd,_0x91be0f,_0x2ac53b){var _0x32160e={};var _0x136ee5={};var _0x3d32d8;var _0x1b4b41;return db[_0x9262('0x2e')][_0x9262('0x4e')]({'where':{'id':_0x5e79dd[_0x9262('0x49')]['id']}})[_0x9262('0x26')](handleEntityNotFound(_0x91be0f,null))[_0x9262('0x26')](function(_0x330a49){if(_0x330a49){_0x3d32d8=_0x330a49;_0x136ee5[_0x9262('0x32')]=_[_0x9262('0x34')](db[_0x9262('0x51')]['rawAttributes']);_0x136ee5[_0x9262('0x35')]=_[_0x9262('0x34')](_0x5e79dd[_0x9262('0x35')]);_0x136ee5[_0x9262('0x3e')]=_[_0x9262('0x36')](_0x136ee5['model'],_0x136ee5[_0x9262('0x35')]);_0x32160e[_0x9262('0x37')]=_['intersection'](_0x136ee5['model'],qs[_0x9262('0x38')](_0x5e79dd['query'][_0x9262('0x38')]));_0x32160e[_0x9262('0x37')]=_0x32160e['attributes'][_0x9262('0x39')]?_0x32160e[_0x9262('0x37')]:_0x136ee5[_0x9262('0x32')];_0x32160e[_0x9262('0x3b')]=qs['sort'](_0x5e79dd[_0x9262('0x35')][_0x9262('0x3c')]);_0x32160e[_0x9262('0x3d')]=qs[_0x9262('0x3e')](_[_0x9262('0x3f')](_0x5e79dd[_0x9262('0x35')],_0x136ee5[_0x9262('0x3e')]));if(_0x5e79dd['query'][_0x9262('0x40')]){_0x32160e[_0x9262('0x3d')]=_[_0x9262('0x41')](_0x32160e[_0x9262('0x3d')],{'$or':_[_0x9262('0x2d')](_0x32160e[_0x9262('0x37')],function(_0x40a64e){var _0x516094={};_0x516094[_0x40a64e]={'$like':'%'+_0x5e79dd[_0x9262('0x35')][_0x9262('0x40')]+'%'};return _0x516094;})});}_0x32160e=_[_0x9262('0x41')]({},_0x32160e,_0x5e79dd[_0x9262('0x42')]);return _0x3d32d8[_0x9262('0x50')](_0x32160e);}})[_0x9262('0x26')](function(_0x1d8cf1){if(_0x1d8cf1){_0x1b4b41=_0x1d8cf1[_0x9262('0x39')];if(!_0x5e79dd[_0x9262('0x35')][_0x9262('0x3a')](_0x9262('0x4f'))){_0x32160e['limit']=qs[_0x9262('0x1f')](_0x5e79dd[_0x9262('0x35')][_0x9262('0x1f')]);_0x32160e[_0x9262('0x1d')]=qs[_0x9262('0x1d')](_0x5e79dd[_0x9262('0x35')][_0x9262('0x1d')]);}return _0x3d32d8[_0x9262('0x50')](_0x32160e);}})['then'](function(_0x3cca22){if(_0x3cca22){return _0x3cca22?{'count':_0x1b4b41,'rows':_0x3cca22}:null;}})[_0x9262('0x26')](respondWithResult(_0x91be0f,null))[_0x9262('0x47')](handleError(_0x91be0f,null));};exports['getDescriptions']=function(_0x1c635b,_0x6b1f6b,_0x28bbae){var _0x151861={};var _0x2d8e07={};var _0xb89abf;var _0xcedbea;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0x1c635b[_0x9262('0x49')]['id']}})[_0x9262('0x26')](handleEntityNotFound(_0x6b1f6b,null))[_0x9262('0x26')](function(_0x3f6bae){if(_0x3f6bae){_0xb89abf=_0x3f6bae;_0x2d8e07[_0x9262('0x32')]=_[_0x9262('0x34')](db[_0x9262('0x51')][_0x9262('0x2f')]);_0x2d8e07[_0x9262('0x35')]=_[_0x9262('0x34')](_0x1c635b['query']);_0x2d8e07[_0x9262('0x3e')]=_['intersection'](_0x2d8e07[_0x9262('0x32')],_0x2d8e07[_0x9262('0x35')]);_0x151861[_0x9262('0x37')]=_['intersection'](_0x2d8e07[_0x9262('0x32')],qs['fields'](_0x1c635b[_0x9262('0x35')]['fields']));_0x151861['attributes']=_0x151861[_0x9262('0x37')][_0x9262('0x39')]?_0x151861[_0x9262('0x37')]:_0x2d8e07[_0x9262('0x32')];_0x151861[_0x9262('0x3b')]=qs[_0x9262('0x3c')](_0x1c635b[_0x9262('0x35')][_0x9262('0x3c')]);_0x151861['where']=qs['filters'](_[_0x9262('0x3f')](_0x1c635b[_0x9262('0x35')],_0x2d8e07['filters']));if(_0x1c635b[_0x9262('0x35')][_0x9262('0x40')]){_0x151861[_0x9262('0x3d')]=_['merge'](_0x151861[_0x9262('0x3d')],{'$or':_[_0x9262('0x2d')](_0x151861[_0x9262('0x37')],function(_0x2b2167){var _0x5458df={};_0x5458df[_0x2b2167]={'$like':'%'+_0x1c635b['query'][_0x9262('0x40')]+'%'};return _0x5458df;})});}_0x151861=_[_0x9262('0x41')]({},_0x151861,_0x1c635b[_0x9262('0x42')]);return _0xb89abf[_0x9262('0x52')](_0x151861);}})[_0x9262('0x26')](function(_0x4e92de){if(_0x4e92de){_0xcedbea=_0x4e92de[_0x9262('0x39')];if(!_0x1c635b[_0x9262('0x35')][_0x9262('0x3a')](_0x9262('0x4f'))){_0x151861[_0x9262('0x1f')]=qs[_0x9262('0x1f')](_0x1c635b['query']['limit']);_0x151861['offset']=qs[_0x9262('0x1d')](_0x1c635b['query']['offset']);}return _0xb89abf[_0x9262('0x52')](_0x151861);}})[_0x9262('0x26')](function(_0x4d34e5){if(_0x4d34e5){return _0x4d34e5?{'count':_0xcedbea,'rows':_0x4d34e5}:null;}})[_0x9262('0x26')](respondWithResult(_0x6b1f6b,null))[_0x9262('0x47')](handleError(_0x6b1f6b,null));};
\ No newline at end of file
+var _0x6917=['path','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','send','index','map','SugarcrmConfiguration','fieldName','type','key','query','keys','filters','attributes','fields','model','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','params','rawAttributes','intersection','create','body','find','findOne','length','pick','getSubjects','SugarcrmField','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0x2997cf,_0x91af1a){var _0x42b23e=function(_0x3346bd){while(--_0x3346bd){_0x2997cf['push'](_0x2997cf['shift']());}};_0x42b23e(++_0x91af1a);}(_0x6917,0x9a));var _0x7691=function(_0x3e25c1,_0x1d15f9){_0x3e25c1=_0x3e25c1-0x0;var _0x52e7f2=_0x6917[_0x3e25c1];return _0x52e7f2;};'use strict';var emlformat=require(_0x7691('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7691('0x1'));var jsonpatch=require(_0x7691('0x2'));var rp=require(_0x7691('0x3'));var moment=require(_0x7691('0x4'));var BPromise=require(_0x7691('0x5'));var Mustache=require(_0x7691('0x6'));var util=require(_0x7691('0x7'));var path=require(_0x7691('0x8'));var sox=require('sox');var csv=require(_0x7691('0x9'));var ejs=require(_0x7691('0xa'));var fs=require('fs');var fs_extra=require(_0x7691('0xb'));var _=require(_0x7691('0xc'));var squel=require(_0x7691('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7691('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7691('0xf'));var Redis=require(_0x7691('0x10'));var authService=require(_0x7691('0x11'));var qs=require(_0x7691('0x12'));var as=require(_0x7691('0x13'));var hardwareService=require(_0x7691('0x14'));var logger=require('../../config/logger')(_0x7691('0x15'));var utils=require(_0x7691('0x16'));var config=require(_0x7691('0x17'));var licenseUtil=require(_0x7691('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b1bb6,_0x5d64d7){_0x5d64d7=_0x5d64d7||0xcc;return function(_0x54f7fa){if(_0x54f7fa){return _0x2b1bb6[_0x7691('0x19')](_0x5d64d7);}return _0x2b1bb6['status'](_0x5d64d7)['end']();};}function respondWithResult(_0x16782c,_0x55089c){_0x55089c=_0x55089c||0xc8;return function(_0x6fc02c){if(_0x6fc02c){return _0x16782c[_0x7691('0x1a')](_0x55089c)[_0x7691('0x1b')](_0x6fc02c);}};}function respondWithFilteredResult(_0x5721cd,_0x27e7d8){return function(_0x231a62){if(_0x231a62){var _0x4ba63d=typeof _0x27e7d8['offset']===_0x7691('0x1c')&&typeof _0x27e7d8['limit']==='undefined';var _0x467f82=_0x231a62[_0x7691('0x1d')];var _0x27e229=_0x4ba63d?0x0:_0x27e7d8[_0x7691('0x1e')];var _0x2be9b0=_0x4ba63d?_0x231a62[_0x7691('0x1d')]:_0x27e7d8[_0x7691('0x1e')]+_0x27e7d8[_0x7691('0x1f')];var _0x3d9b55;if(_0x2be9b0>=_0x467f82){_0x2be9b0=_0x467f82;_0x3d9b55=0xc8;}else{_0x3d9b55=0xce;}_0x5721cd[_0x7691('0x1a')](_0x3d9b55);return _0x5721cd[_0x7691('0x20')](_0x7691('0x21'),_0x27e229+'-'+_0x2be9b0+'/'+_0x467f82)[_0x7691('0x1b')](_0x231a62);}return null;};}function patchUpdates(_0x53a805){return function(_0x2fffc6){try{jsonpatch[_0x7691('0x22')](_0x2fffc6,_0x53a805,!![]);}catch(_0x298d21){return BPromise['reject'](_0x298d21);}return _0x2fffc6[_0x7691('0x23')]();};}function saveUpdates(_0xb41d6c,_0xf0d1c8){return function(_0x1fc5c2){if(_0x1fc5c2){return _0x1fc5c2[_0x7691('0x24')](_0xb41d6c)[_0x7691('0x25')](function(_0x16060c){return _0x16060c;});}return null;};}function removeEntity(_0xffbfad,_0x51fd40){return function(_0x1880b7){if(_0x1880b7){return _0x1880b7[_0x7691('0x26')]()[_0x7691('0x25')](function(){_0xffbfad['status'](0xcc)[_0x7691('0x27')]();});}};}function handleEntityNotFound(_0x525b85,_0x753125){return function(_0x27c4e9){if(!_0x27c4e9){_0x525b85['sendStatus'](0x194);}return _0x27c4e9;};}function handleError(_0x16031e,_0x5ce906){_0x5ce906=_0x5ce906||0x1f4;return function(_0x1e3617){logger[_0x7691('0x28')](_0x1e3617[_0x7691('0x29')]);if(_0x1e3617[_0x7691('0x2a')]){delete _0x1e3617[_0x7691('0x2a')];}_0x16031e[_0x7691('0x1a')](_0x5ce906)[_0x7691('0x2b')](_0x1e3617);};}exports[_0x7691('0x2c')]=function(_0x22a0fc,_0x4b1bb8){var _0x276ec4={},_0x44eadc={},_0x5e0e33={'count':0x0,'rows':[]};var _0x5df63a=_[_0x7691('0x2d')](db[_0x7691('0x2e')]['rawAttributes'],function(_0x52ea85){return{'name':_0x52ea85[_0x7691('0x2f')],'type':_0x52ea85[_0x7691('0x30')][_0x7691('0x31')]};});_0x44eadc['model']=_[_0x7691('0x2d')](_0x5df63a,_0x7691('0x2a'));_0x44eadc[_0x7691('0x32')]=_[_0x7691('0x33')](_0x22a0fc['query']);_0x44eadc[_0x7691('0x34')]=_['intersection'](_0x44eadc['model'],_0x44eadc['query']);_0x276ec4[_0x7691('0x35')]=_['intersection'](_0x44eadc['model'],qs[_0x7691('0x36')](_0x22a0fc[_0x7691('0x32')][_0x7691('0x36')]));_0x276ec4['attributes']=_0x276ec4['attributes']['length']?_0x276ec4[_0x7691('0x35')]:_0x44eadc[_0x7691('0x37')];if(!_0x22a0fc[_0x7691('0x32')][_0x7691('0x38')](_0x7691('0x39'))){_0x276ec4[_0x7691('0x1f')]=qs[_0x7691('0x1f')](_0x22a0fc[_0x7691('0x32')]['limit']);_0x276ec4[_0x7691('0x1e')]=qs[_0x7691('0x1e')](_0x22a0fc['query']['offset']);}_0x276ec4[_0x7691('0x3a')]=qs[_0x7691('0x3b')](_0x22a0fc['query'][_0x7691('0x3b')]);_0x276ec4[_0x7691('0x3c')]=qs['filters'](_['pick'](_0x22a0fc['query'],_0x44eadc[_0x7691('0x34')]),_0x5df63a);if(_0x22a0fc[_0x7691('0x32')][_0x7691('0x3d')]){_0x276ec4[_0x7691('0x3c')]=_[_0x7691('0x3e')](_0x276ec4[_0x7691('0x3c')],{'$or':_[_0x7691('0x2d')](_0x5df63a,function(_0x5d226e){if(_0x5d226e[_0x7691('0x30')]!=='VIRTUAL'){var _0x56cea3={};_0x56cea3[_0x5d226e[_0x7691('0x2a')]]={'$like':'%'+_0x22a0fc[_0x7691('0x32')]['filter']+'%'};return _0x56cea3;}})});}_0x276ec4=_[_0x7691('0x3e')]({},_0x276ec4,_0x22a0fc[_0x7691('0x3f')]);var _0x42795d={'where':_0x276ec4[_0x7691('0x3c')]};return db[_0x7691('0x2e')]['count'](_0x42795d)['then'](function(_0x3a097b){_0x5e0e33[_0x7691('0x1d')]=_0x3a097b;if(_0x22a0fc[_0x7691('0x32')][_0x7691('0x40')]){_0x276ec4[_0x7691('0x41')]=[{'all':!![]}];}return db[_0x7691('0x2e')][_0x7691('0x42')](_0x276ec4);})[_0x7691('0x25')](function(_0x660ea7){_0x5e0e33[_0x7691('0x43')]=_0x660ea7;return _0x5e0e33;})['then'](respondWithFilteredResult(_0x4b1bb8,_0x276ec4))[_0x7691('0x44')](handleError(_0x4b1bb8,null));};exports['show']=function(_0x2da9e0,_0x7ca443){var _0x22c1c9={'raw':![],'where':{'id':_0x2da9e0[_0x7691('0x45')]['id']}},_0x1bb21d={};_0x1bb21d['model']=_['keys'](db[_0x7691('0x2e')][_0x7691('0x46')]);_0x1bb21d['query']=_[_0x7691('0x33')](_0x2da9e0[_0x7691('0x32')]);_0x1bb21d[_0x7691('0x34')]=_['intersection'](_0x1bb21d['model'],_0x1bb21d['query']);_0x22c1c9[_0x7691('0x35')]=_[_0x7691('0x47')](_0x1bb21d[_0x7691('0x37')],qs[_0x7691('0x36')](_0x2da9e0['query'][_0x7691('0x36')]));_0x22c1c9[_0x7691('0x35')]=_0x22c1c9[_0x7691('0x35')]['length']?_0x22c1c9[_0x7691('0x35')]:_0x1bb21d[_0x7691('0x37')];if(_0x2da9e0['query'][_0x7691('0x40')]){_0x22c1c9[_0x7691('0x41')]=[{'all':!![]}];}_0x22c1c9=_[_0x7691('0x3e')]({},_0x22c1c9,_0x2da9e0['options']);return db['SugarcrmConfiguration']['find'](_0x22c1c9)[_0x7691('0x25')](handleEntityNotFound(_0x7ca443,null))['then'](respondWithResult(_0x7ca443,null))[_0x7691('0x44')](handleError(_0x7ca443,null));};exports[_0x7691('0x48')]=function(_0xe0fd4,_0x51f304){return db[_0x7691('0x2e')][_0x7691('0x48')](_0xe0fd4[_0x7691('0x49')],{})['then'](respondWithResult(_0x51f304,0xc9))['catch'](handleError(_0x51f304,null));};exports['update']=function(_0x2aeb18,_0x49ac86){if(_0x2aeb18[_0x7691('0x49')]['id']){delete _0x2aeb18[_0x7691('0x49')]['id'];}return db['SugarcrmConfiguration'][_0x7691('0x4a')]({'where':{'id':_0x2aeb18[_0x7691('0x45')]['id']}})[_0x7691('0x25')](handleEntityNotFound(_0x49ac86,null))[_0x7691('0x25')](saveUpdates(_0x2aeb18['body'],null))['then'](respondWithResult(_0x49ac86,null))[_0x7691('0x44')](handleError(_0x49ac86,null));};exports[_0x7691('0x26')]=function(_0x134020,_0x1061a3){return db[_0x7691('0x2e')][_0x7691('0x4a')]({'where':{'id':_0x134020[_0x7691('0x45')]['id']}})[_0x7691('0x25')](handleEntityNotFound(_0x1061a3,null))[_0x7691('0x25')](removeEntity(_0x1061a3,null))[_0x7691('0x44')](handleError(_0x1061a3,null));};exports['getFields']=function(_0x40f05a,_0x22348a,_0x27994e){var _0x3d73e2={};var _0x14e271={};var _0x5b629c;var _0x3c9ccd;return db[_0x7691('0x2e')][_0x7691('0x4b')]({'where':{'id':_0x40f05a[_0x7691('0x45')]['id']}})[_0x7691('0x25')](handleEntityNotFound(_0x22348a,null))[_0x7691('0x25')](function(_0x29fe7a){if(_0x29fe7a){_0x5b629c=_0x29fe7a;_0x14e271[_0x7691('0x37')]=_[_0x7691('0x33')](db['SugarcrmField'][_0x7691('0x46')]);_0x14e271[_0x7691('0x32')]=_['keys'](_0x40f05a['query']);_0x14e271[_0x7691('0x34')]=_[_0x7691('0x47')](_0x14e271[_0x7691('0x37')],_0x14e271[_0x7691('0x32')]);_0x3d73e2['attributes']=_[_0x7691('0x47')](_0x14e271[_0x7691('0x37')],qs[_0x7691('0x36')](_0x40f05a[_0x7691('0x32')]['fields']));_0x3d73e2['attributes']=_0x3d73e2['attributes'][_0x7691('0x4c')]?_0x3d73e2[_0x7691('0x35')]:_0x14e271['model'];_0x3d73e2[_0x7691('0x3a')]=qs[_0x7691('0x3b')](_0x40f05a['query'][_0x7691('0x3b')]);_0x3d73e2[_0x7691('0x3c')]=qs[_0x7691('0x34')](_[_0x7691('0x4d')](_0x40f05a[_0x7691('0x32')],_0x14e271[_0x7691('0x34')]));if(_0x40f05a[_0x7691('0x32')]['filter']){_0x3d73e2[_0x7691('0x3c')]=_['merge'](_0x3d73e2[_0x7691('0x3c')],{'$or':_['map'](_0x3d73e2['attributes'],function(_0x54eaa9){var _0x37d05a={};_0x37d05a[_0x54eaa9]={'$like':'%'+_0x40f05a[_0x7691('0x32')][_0x7691('0x3d')]+'%'};return _0x37d05a;})});}_0x3d73e2=_[_0x7691('0x3e')]({},_0x3d73e2,_0x40f05a[_0x7691('0x3f')]);return _0x5b629c['getFields'](_0x3d73e2);}})['then'](function(_0x2b5a3d){if(_0x2b5a3d){_0x3c9ccd=_0x2b5a3d[_0x7691('0x4c')];if(!_0x40f05a['query'][_0x7691('0x38')]('nolimit')){_0x3d73e2[_0x7691('0x1f')]=qs[_0x7691('0x1f')](_0x40f05a[_0x7691('0x32')][_0x7691('0x1f')]);_0x3d73e2[_0x7691('0x1e')]=qs[_0x7691('0x1e')](_0x40f05a[_0x7691('0x32')][_0x7691('0x1e')]);}return _0x5b629c['getFields'](_0x3d73e2);}})[_0x7691('0x25')](function(_0x2f46b9){if(_0x2f46b9){return _0x2f46b9?{'count':_0x3c9ccd,'rows':_0x2f46b9}:null;}})[_0x7691('0x25')](respondWithResult(_0x22348a,null))[_0x7691('0x44')](handleError(_0x22348a,null));};exports[_0x7691('0x4e')]=function(_0x480675,_0x223000,_0x4e394a){var _0x45e424={};var _0x3c12e8={};var _0x299614;var _0x35f3bf;return db['SugarcrmConfiguration'][_0x7691('0x4b')]({'where':{'id':_0x480675[_0x7691('0x45')]['id']}})[_0x7691('0x25')](handleEntityNotFound(_0x223000,null))['then'](function(_0x16752e){if(_0x16752e){_0x299614=_0x16752e;_0x3c12e8[_0x7691('0x37')]=_[_0x7691('0x33')](db[_0x7691('0x4f')]['rawAttributes']);_0x3c12e8[_0x7691('0x32')]=_[_0x7691('0x33')](_0x480675[_0x7691('0x32')]);_0x3c12e8['filters']=_[_0x7691('0x47')](_0x3c12e8[_0x7691('0x37')],_0x3c12e8[_0x7691('0x32')]);_0x45e424['attributes']=_[_0x7691('0x47')](_0x3c12e8[_0x7691('0x37')],qs['fields'](_0x480675[_0x7691('0x32')][_0x7691('0x36')]));_0x45e424[_0x7691('0x35')]=_0x45e424[_0x7691('0x35')][_0x7691('0x4c')]?_0x45e424['attributes']:_0x3c12e8[_0x7691('0x37')];_0x45e424[_0x7691('0x3a')]=qs[_0x7691('0x3b')](_0x480675[_0x7691('0x32')][_0x7691('0x3b')]);_0x45e424[_0x7691('0x3c')]=qs[_0x7691('0x34')](_[_0x7691('0x4d')](_0x480675['query'],_0x3c12e8[_0x7691('0x34')]));if(_0x480675[_0x7691('0x32')]['filter']){_0x45e424[_0x7691('0x3c')]=_[_0x7691('0x3e')](_0x45e424[_0x7691('0x3c')],{'$or':_[_0x7691('0x2d')](_0x45e424[_0x7691('0x35')],function(_0x26a23f){var _0x15b636={};_0x15b636[_0x26a23f]={'$like':'%'+_0x480675[_0x7691('0x32')][_0x7691('0x3d')]+'%'};return _0x15b636;})});}_0x45e424=_['merge']({},_0x45e424,_0x480675[_0x7691('0x3f')]);return _0x299614[_0x7691('0x4e')](_0x45e424);}})[_0x7691('0x25')](function(_0x17f957){if(_0x17f957){_0x35f3bf=_0x17f957[_0x7691('0x4c')];if(!_0x480675[_0x7691('0x32')][_0x7691('0x38')](_0x7691('0x39'))){_0x45e424[_0x7691('0x1f')]=qs[_0x7691('0x1f')](_0x480675[_0x7691('0x32')][_0x7691('0x1f')]);_0x45e424[_0x7691('0x1e')]=qs[_0x7691('0x1e')](_0x480675[_0x7691('0x32')]['offset']);}return _0x299614[_0x7691('0x4e')](_0x45e424);}})[_0x7691('0x25')](function(_0x59c0f4){if(_0x59c0f4){return _0x59c0f4?{'count':_0x35f3bf,'rows':_0x59c0f4}:null;}})[_0x7691('0x25')](respondWithResult(_0x223000,null))[_0x7691('0x44')](handleError(_0x223000,null));};exports[_0x7691('0x50')]=function(_0x2a5e56,_0x310d2f,_0x5b5f83){var _0x5d154c={};var _0x3fe1b2={};var _0x5626e4;var _0x3fa50a;return db[_0x7691('0x2e')][_0x7691('0x4b')]({'where':{'id':_0x2a5e56[_0x7691('0x45')]['id']}})['then'](handleEntityNotFound(_0x310d2f,null))['then'](function(_0x67e23e){if(_0x67e23e){_0x5626e4=_0x67e23e;_0x3fe1b2['model']=_[_0x7691('0x33')](db[_0x7691('0x4f')][_0x7691('0x46')]);_0x3fe1b2[_0x7691('0x32')]=_[_0x7691('0x33')](_0x2a5e56['query']);_0x3fe1b2['filters']=_['intersection'](_0x3fe1b2[_0x7691('0x37')],_0x3fe1b2[_0x7691('0x32')]);_0x5d154c[_0x7691('0x35')]=_[_0x7691('0x47')](_0x3fe1b2[_0x7691('0x37')],qs[_0x7691('0x36')](_0x2a5e56[_0x7691('0x32')][_0x7691('0x36')]));_0x5d154c[_0x7691('0x35')]=_0x5d154c[_0x7691('0x35')]['length']?_0x5d154c[_0x7691('0x35')]:_0x3fe1b2[_0x7691('0x37')];_0x5d154c[_0x7691('0x3a')]=qs[_0x7691('0x3b')](_0x2a5e56[_0x7691('0x32')][_0x7691('0x3b')]);_0x5d154c[_0x7691('0x3c')]=qs[_0x7691('0x34')](_[_0x7691('0x4d')](_0x2a5e56[_0x7691('0x32')],_0x3fe1b2[_0x7691('0x34')]));if(_0x2a5e56['query'][_0x7691('0x3d')]){_0x5d154c[_0x7691('0x3c')]=_[_0x7691('0x3e')](_0x5d154c[_0x7691('0x3c')],{'$or':_['map'](_0x5d154c[_0x7691('0x35')],function(_0xcdef62){var _0x58d386={};_0x58d386[_0xcdef62]={'$like':'%'+_0x2a5e56[_0x7691('0x32')][_0x7691('0x3d')]+'%'};return _0x58d386;})});}_0x5d154c=_[_0x7691('0x3e')]({},_0x5d154c,_0x2a5e56['options']);return _0x5626e4[_0x7691('0x50')](_0x5d154c);}})[_0x7691('0x25')](function(_0x4b6fb5){if(_0x4b6fb5){_0x3fa50a=_0x4b6fb5['length'];if(!_0x2a5e56[_0x7691('0x32')][_0x7691('0x38')](_0x7691('0x39'))){_0x5d154c['limit']=qs['limit'](_0x2a5e56[_0x7691('0x32')][_0x7691('0x1f')]);_0x5d154c[_0x7691('0x1e')]=qs[_0x7691('0x1e')](_0x2a5e56[_0x7691('0x32')][_0x7691('0x1e')]);}return _0x5626e4[_0x7691('0x50')](_0x5d154c);}})[_0x7691('0x25')](function(_0x349c12){if(_0x349c12){return _0x349c12?{'count':_0x3fa50a,'rows':_0x349c12}:null;}})[_0x7691('0x25')](respondWithResult(_0x310d2f,null))[_0x7691('0x44')](handleError(_0x310d2f,null));};
\ No newline at end of file
index 3e94301..56aa647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe19b=['moment','bluebird','request-promise','path','../../config/environment','./intSugarcrmConfiguration.attributes','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger'];(function(_0x2fb98e,_0x585295){var _0x465454=function(_0x201351){while(--_0x201351){_0x2fb98e['push'](_0x2fb98e['shift']());}};_0x465454(++_0x585295);}(_0xe19b,0x1a1));var _0xbe19=function(_0x229431,_0x3526ed){_0x229431=_0x229431-0x0;var _0x1e1f9e=_0xe19b[_0x229431];return _0x1e1f9e;};'use strict';var _=require(_0xbe19('0x0'));var util=require(_0xbe19('0x1'));var logger=require(_0xbe19('0x2'))('api');var moment=require(_0xbe19('0x3'));var BPromise=require(_0xbe19('0x4'));var rp=require(_0xbe19('0x5'));var fs=require('fs');var path=require(_0xbe19('0x6'));var rimraf=require('rimraf');var config=require(_0xbe19('0x7'));var attributes=require(_0xbe19('0x8'));module['exports']=function(_0x10a862,_0x510743){return _0x10a862[_0xbe19('0x9')](_0xbe19('0xa'),attributes,{'tableName':_0xbe19('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7177=['moment','request-promise','path','rimraf','../../config/environment','exports','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger','api'];(function(_0x5dc4be,_0x16093d){var _0x493875=function(_0x5bb503){while(--_0x5bb503){_0x5dc4be['push'](_0x5dc4be['shift']());}};_0x493875(++_0x16093d);}(_0x7177,0x1ac));var _0x7717=function(_0x202506,_0x5b9c15){_0x202506=_0x202506-0x0;var _0x4c3e29=_0x7177[_0x202506];return _0x4c3e29;};'use strict';var _=require(_0x7717('0x0'));var util=require(_0x7717('0x1'));var logger=require(_0x7717('0x2'))(_0x7717('0x3'));var moment=require(_0x7717('0x4'));var BPromise=require('bluebird');var rp=require(_0x7717('0x5'));var fs=require('fs');var path=require(_0x7717('0x6'));var rimraf=require(_0x7717('0x7'));var config=require(_0x7717('0x8'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0x7717('0x9')]=function(_0x31c49e,_0x9e280f){return _0x31c49e['define'](_0x7717('0xa'),attributes,{'tableName':_0x7717('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f77e4ad..b094b7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10e2=['SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x20c5bb,_0x356aa9){var _0x567423=function(_0x14fbc9){while(--_0x14fbc9){_0x20c5bb['push'](_0x20c5bb['shift']());}};_0x567423(++_0x356aa9);}(_0x10e2,0x194));var _0x210e=function(_0x31213d,_0x3aab87){_0x31213d=_0x31213d-0x0;var _0x115578=_0x10e2[_0x31213d];return _0x115578;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x210e('0x0'));var BPromise=require(_0x210e('0x1'));var rs=require(_0x210e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x210e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x210e('0x4'))(_0x210e('0x5'));var config=require(_0x210e('0x6'));var jayson=require(_0x210e('0x7'));var client=jayson[_0x210e('0x8')][_0x210e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x30d31e,_0xf2c10f,_0x450da1){return new BPromise(function(_0x58799a,_0x3fc85c){return client['request'](_0x30d31e,_0x450da1)[_0x210e('0xa')](function(_0x414508){logger['info'](_0x210e('0xb'),_0xf2c10f,_0x210e('0xc'));logger[_0x210e('0xd')](_0x210e('0xe'),_0xf2c10f,_0x210e('0xc'),JSON[_0x210e('0xf')](_0x414508));if(_0x414508[_0x210e('0x10')]){if(_0x414508['error'][_0x210e('0x11')]===0x1f4){logger['error'](_0x210e('0xb'),_0xf2c10f,_0x414508[_0x210e('0x10')][_0x210e('0x12')]);return _0x3fc85c(_0x414508[_0x210e('0x10')]['message']);}logger[_0x210e('0x10')](_0x210e('0xb'),_0xf2c10f,_0x414508[_0x210e('0x10')][_0x210e('0x12')]);return _0x58799a(_0x414508['error']['message']);}else{logger[_0x210e('0x13')](_0x210e('0xb'),_0xf2c10f,'request\x20sent');_0x58799a(_0x414508[_0x210e('0x14')][_0x210e('0x12')]);}})[_0x210e('0x15')](function(_0x40047d){logger[_0x210e('0x10')]('SugarcrmConfiguration,\x20%s,\x20%s',_0xf2c10f,_0x40047d);_0x3fc85c(_0x40047d);});});}
\ No newline at end of file
+var _0x1f99=['SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3c5191,_0x3fb9ee){var _0x209c85=function(_0x18c8dd){while(--_0x18c8dd){_0x3c5191['push'](_0x3c5191['shift']());}};_0x209c85(++_0x3fb9ee);}(_0x1f99,0x7a));var _0x91f9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1f99[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x91f9('0x0'));var util=require(_0x91f9('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x91f9('0x2'));var fs=require('fs');var Redis=require(_0x91f9('0x3'));var db=require(_0x91f9('0x4'))['db'];var utils=require(_0x91f9('0x5'));var logger=require('../../config/logger')(_0x91f9('0x6'));var config=require(_0x91f9('0x7'));var jayson=require(_0x91f9('0x8'));var client=jayson[_0x91f9('0x9')][_0x91f9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x315220,_0x543ea8,_0x19da83){return new BPromise(function(_0xf815a3,_0xcdffd2){return client[_0x91f9('0xb')](_0x315220,_0x19da83)['then'](function(_0x1b8477){logger[_0x91f9('0xc')](_0x91f9('0xd'),_0x543ea8,_0x91f9('0xe'));logger[_0x91f9('0xf')](_0x91f9('0x10'),_0x543ea8,'request\x20sent',JSON[_0x91f9('0x11')](_0x1b8477));if(_0x1b8477[_0x91f9('0x12')]){if(_0x1b8477[_0x91f9('0x12')][_0x91f9('0x13')]===0x1f4){logger[_0x91f9('0x12')](_0x91f9('0xd'),_0x543ea8,_0x1b8477[_0x91f9('0x12')][_0x91f9('0x14')]);return _0xcdffd2(_0x1b8477[_0x91f9('0x12')][_0x91f9('0x14')]);}logger['error'](_0x91f9('0xd'),_0x543ea8,_0x1b8477[_0x91f9('0x12')][_0x91f9('0x14')]);return _0xf815a3(_0x1b8477['error']['message']);}else{logger[_0x91f9('0xc')](_0x91f9('0xd'),_0x543ea8,_0x91f9('0xe'));_0xf815a3(_0x1b8477[_0x91f9('0x15')][_0x91f9('0x14')]);}})[_0x91f9('0x16')](function(_0x59a48f){logger[_0x91f9('0x12')](_0x91f9('0xd'),_0x543ea8,_0x59a48f);_0xcdffd2(_0x59a48f);});});}
\ No newline at end of file
index 79c016c..58ef048 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5488=['get','isAuthenticated','index','/:id','show','post','create','put','update','delete','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmField.controller'];(function(_0x550e70,_0x3d9c91){var _0x4ac7da=function(_0x2f1ecc){while(--_0x2f1ecc){_0x550e70['push'](_0x550e70['shift']());}};_0x4ac7da(++_0x3d9c91);}(_0x5488,0xdb));var _0x8548=function(_0xa388a2,_0x40bde6){_0xa388a2=_0xa388a2-0x0;var _0x7ce7f6=_0x5488[_0xa388a2];return _0x7ce7f6;};'use strict';var multer=require(_0x8548('0x0'));var util=require(_0x8548('0x1'));var path=require(_0x8548('0x2'));var timeout=require(_0x8548('0x3'));var express=require('express');var router=express[_0x8548('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8548('0x5'));var interaction=require(_0x8548('0x6'));var config=require(_0x8548('0x7'));var controller=require(_0x8548('0x8'));router[_0x8548('0x9')]('/',auth[_0x8548('0xa')](),controller[_0x8548('0xb')]);router[_0x8548('0x9')](_0x8548('0xc'),auth['isAuthenticated'](),controller[_0x8548('0xd')]);router[_0x8548('0xe')]('/',auth[_0x8548('0xa')](),controller[_0x8548('0xf')]);router[_0x8548('0x10')]('/:id',auth[_0x8548('0xa')](),controller[_0x8548('0x11')]);router[_0x8548('0x12')]('/:id',auth[_0x8548('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xc6eb=['../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x4b2251,_0x393f10){var _0x5d22fb=function(_0x10992c){while(--_0x10992c){_0x4b2251['push'](_0x4b2251['shift']());}};_0x5d22fb(++_0x393f10);}(_0xc6eb,0x1b3));var _0xbc6e=function(_0x5d6814,_0x1dfdc5){_0x5d6814=_0x5d6814-0x0;var _0x271a00=_0xc6eb[_0x5d6814];return _0x271a00;};'use strict';var multer=require(_0xbc6e('0x0'));var util=require(_0xbc6e('0x1'));var path=require(_0xbc6e('0x2'));var timeout=require(_0xbc6e('0x3'));var express=require(_0xbc6e('0x4'));var router=express[_0xbc6e('0x5')]();var fs_extra=require(_0xbc6e('0x6'));var auth=require(_0xbc6e('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xbc6e('0x8'));var controller=require('./intSugarcrmField.controller');router[_0xbc6e('0x9')]('/',auth[_0xbc6e('0xa')](),controller[_0xbc6e('0xb')]);router['get'](_0xbc6e('0xc'),auth[_0xbc6e('0xa')](),controller[_0xbc6e('0xd')]);router[_0xbc6e('0xe')]('/',auth[_0xbc6e('0xa')](),controller[_0xbc6e('0xf')]);router[_0xbc6e('0x10')](_0xbc6e('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xbc6e('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 216a461..9e06e3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cb3=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x46eae7,_0x51751d){var _0x539bfe=function(_0x2e1998){while(--_0x2e1998){_0x46eae7['push'](_0x46eae7['shift']());}};_0x539bfe(++_0x51751d);}(_0x5cb3,0xd8));var _0x35cb=function(_0x592ef7,_0x3bd989){_0x592ef7=_0x592ef7-0x0;var _0x5cfbfe=_0x5cb3[_0x592ef7];return _0x5cfbfe;};'use strict';var Sequelize=require(_0x35cb('0x0'));module[_0x35cb('0x1')]={'type':{'type':Sequelize[_0x35cb('0x2')](_0x35cb('0x3'),_0x35cb('0x4'),_0x35cb('0x5'),_0x35cb('0x6'),_0x35cb('0x7')),'defaultValue':_0x35cb('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x35cb('0x8')]},'keyType':{'type':Sequelize['ENUM'](_0x35cb('0x3'),_0x35cb('0x4'),_0x35cb('0x5'))},'keyContent':{'type':Sequelize[_0x35cb('0x8')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x35cb('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x35cb('0x8')]}};
\ No newline at end of file
+var _0x0afc=['ENUM','string','variable','keyValue','picklist','STRING','customVariable','BOOLEAN','sequelize'];(function(_0x5471ec,_0x1ce81a){var _0x121d4c=function(_0xefb655){while(--_0xefb655){_0x5471ec['push'](_0x5471ec['shift']());}};_0x121d4c(++_0x1ce81a);}(_0x0afc,0x170));var _0xc0af=function(_0x36b18f,_0x4ce3d8){_0x36b18f=_0x36b18f-0x0;var _0x38f01=_0x0afc[_0x36b18f];return _0x38f01;};'use strict';var Sequelize=require(_0xc0af('0x0'));module['exports']={'type':{'type':Sequelize[_0xc0af('0x1')](_0xc0af('0x2'),_0xc0af('0x3'),'customVariable',_0xc0af('0x4'),_0xc0af('0x5')),'defaultValue':_0xc0af('0x2')},'content':{'type':Sequelize[_0xc0af('0x6')]},'key':{'type':Sequelize[_0xc0af('0x6')]},'keyType':{'type':Sequelize[_0xc0af('0x1')](_0xc0af('0x2'),_0xc0af('0x3'),_0xc0af('0x7'))},'keyContent':{'type':Sequelize[_0xc0af('0x6')]},'idField':{'type':Sequelize[_0xc0af('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xc0af('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xc0af('0x6')]}};
\ No newline at end of file
index 83b0d68..ebf31c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x011d=['fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','limit','undefined','set','Content-Range','apply','save','update','then','sendStatus','error','stack','name','send','SugarcrmField','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','count','includeAll','include','findAll','rows','catch','show','params','rawAttributes','length','create','body','find','destroy','eml-format','rimraf'];(function(_0x28a263,_0x419b51){var _0x232b03=function(_0x79711a){while(--_0x79711a){_0x28a263['push'](_0x28a263['shift']());}};_0x232b03(++_0x419b51);}(_0x011d,0x90));var _0xd011=function(_0x5930aa,_0xf07ae){_0x5930aa=_0x5930aa-0x0;var _0x274e6c=_0x011d[_0x5930aa];return _0x274e6c;};'use strict';var emlformat=require(_0xd011('0x0'));var rimraf=require(_0xd011('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd011('0x2'));var rp=require(_0xd011('0x3'));var moment=require('moment');var BPromise=require(_0xd011('0x4'));var Mustache=require(_0xd011('0x5'));var util=require('util');var path=require('path');var sox=require(_0xd011('0x6'));var csv=require(_0xd011('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd011('0x8'));var _=require('lodash');var squel=require(_0xd011('0x9'));var crypto=require(_0xd011('0xa'));var jsforce=require(_0xd011('0xb'));var deskjs=require(_0xd011('0xc'));var toCsv=require(_0xd011('0x7'));var querystring=require('querystring');var Papa=require(_0xd011('0xd'));var Redis=require('ioredis');var authService=require(_0xd011('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xd011('0xf'));var hardwareService=require(_0xd011('0x10'));var logger=require('../../config/logger')(_0xd011('0x11'));var utils=require(_0xd011('0x12'));var config=require(_0xd011('0x13'));var licenseUtil=require(_0xd011('0x14'));var db=require(_0xd011('0x15'))['db'];function respondWithStatusCode(_0x4a8e7d,_0xade801){_0xade801=_0xade801||0xcc;return function(_0x946756){if(_0x946756){return _0x4a8e7d['sendStatus'](_0xade801);}return _0x4a8e7d[_0xd011('0x16')](_0xade801)['end']();};}function respondWithResult(_0x2e03a8,_0x557133){_0x557133=_0x557133||0xc8;return function(_0x32c185){if(_0x32c185){return _0x2e03a8['status'](_0x557133)[_0xd011('0x17')](_0x32c185);}};}function respondWithFilteredResult(_0x2c89dd,_0x586057){return function(_0x47d9ce){if(_0x47d9ce){var _0xa63656=typeof _0x586057[_0xd011('0x18')]==='undefined'&&typeof _0x586057[_0xd011('0x19')]===_0xd011('0x1a');var _0x4026da=_0x47d9ce['count'];var _0x4dfb86=_0xa63656?0x0:_0x586057[_0xd011('0x18')];var _0x29f82e=_0xa63656?_0x47d9ce['count']:_0x586057[_0xd011('0x18')]+_0x586057[_0xd011('0x19')];var _0x35b12d;if(_0x29f82e>=_0x4026da){_0x29f82e=_0x4026da;_0x35b12d=0xc8;}else{_0x35b12d=0xce;}_0x2c89dd[_0xd011('0x16')](_0x35b12d);return _0x2c89dd[_0xd011('0x1b')](_0xd011('0x1c'),_0x4dfb86+'-'+_0x29f82e+'/'+_0x4026da)['json'](_0x47d9ce);}return null;};}function patchUpdates(_0x860949){return function(_0x2b0bbd){try{jsonpatch[_0xd011('0x1d')](_0x2b0bbd,_0x860949,!![]);}catch(_0x3fe0f7){return BPromise['reject'](_0x3fe0f7);}return _0x2b0bbd[_0xd011('0x1e')]();};}function saveUpdates(_0x14d325,_0xd5e1d2){return function(_0x488319){if(_0x488319){return _0x488319[_0xd011('0x1f')](_0x14d325)[_0xd011('0x20')](function(_0x2f9eea){return _0x2f9eea;});}return null;};}function removeEntity(_0x4cbc1b,_0x3a25b6){return function(_0x455f98){if(_0x455f98){return _0x455f98['destroy']()[_0xd011('0x20')](function(){_0x4cbc1b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x36f2a7,_0x1e545f){return function(_0x50c4e5){if(!_0x50c4e5){_0x36f2a7[_0xd011('0x21')](0x194);}return _0x50c4e5;};}function handleError(_0x410eaf,_0x28963e){_0x28963e=_0x28963e||0x1f4;return function(_0x372ce0){logger[_0xd011('0x22')](_0x372ce0[_0xd011('0x23')]);if(_0x372ce0[_0xd011('0x24')]){delete _0x372ce0[_0xd011('0x24')];}_0x410eaf[_0xd011('0x16')](_0x28963e)[_0xd011('0x25')](_0x372ce0);};}exports['index']=function(_0x1a786e,_0x134a01){var _0xf32506={},_0x49ee8f={},_0x585ac6={'count':0x0,'rows':[]};var _0x10804d=_['map'](db[_0xd011('0x26')]['rawAttributes'],function(_0x3a474c){return{'name':_0x3a474c[_0xd011('0x27')],'type':_0x3a474c[_0xd011('0x28')][_0xd011('0x29')]};});_0x49ee8f[_0xd011('0x2a')]=_[_0xd011('0x2b')](_0x10804d,_0xd011('0x24'));_0x49ee8f[_0xd011('0x2c')]=_[_0xd011('0x2d')](_0x1a786e[_0xd011('0x2c')]);_0x49ee8f[_0xd011('0x2e')]=_[_0xd011('0x2f')](_0x49ee8f[_0xd011('0x2a')],_0x49ee8f['query']);_0xf32506[_0xd011('0x30')]=_[_0xd011('0x2f')](_0x49ee8f[_0xd011('0x2a')],qs[_0xd011('0x31')](_0x1a786e[_0xd011('0x2c')][_0xd011('0x31')]));_0xf32506[_0xd011('0x30')]=_0xf32506[_0xd011('0x30')]['length']?_0xf32506['attributes']:_0x49ee8f['model'];if(!_0x1a786e['query'][_0xd011('0x32')]('nolimit')){_0xf32506[_0xd011('0x19')]=qs[_0xd011('0x19')](_0x1a786e[_0xd011('0x2c')][_0xd011('0x19')]);_0xf32506[_0xd011('0x18')]=qs[_0xd011('0x18')](_0x1a786e[_0xd011('0x2c')]['offset']);}_0xf32506[_0xd011('0x33')]=qs[_0xd011('0x34')](_0x1a786e[_0xd011('0x2c')]['sort']);_0xf32506[_0xd011('0x35')]=qs['filters'](_[_0xd011('0x36')](_0x1a786e['query'],_0x49ee8f[_0xd011('0x2e')]),_0x10804d);if(_0x1a786e['query']['filter']){_0xf32506[_0xd011('0x35')]=_[_0xd011('0x37')](_0xf32506[_0xd011('0x35')],{'$or':_[_0xd011('0x2b')](_0x10804d,function(_0x39147f){if(_0x39147f[_0xd011('0x28')]!==_0xd011('0x38')){var _0x21cc7a={};_0x21cc7a[_0x39147f['name']]={'$like':'%'+_0x1a786e['query'][_0xd011('0x39')]+'%'};return _0x21cc7a;}})});}_0xf32506=_[_0xd011('0x37')]({},_0xf32506,_0x1a786e[_0xd011('0x3a')]);var _0x309aa3={'where':_0xf32506[_0xd011('0x35')]};return db[_0xd011('0x26')][_0xd011('0x3b')](_0x309aa3)['then'](function(_0x4e19c9){_0x585ac6[_0xd011('0x3b')]=_0x4e19c9;if(_0x1a786e[_0xd011('0x2c')][_0xd011('0x3c')]){_0xf32506[_0xd011('0x3d')]=[{'all':!![]}];}return db[_0xd011('0x26')][_0xd011('0x3e')](_0xf32506);})[_0xd011('0x20')](function(_0x4ac2c7){_0x585ac6[_0xd011('0x3f')]=_0x4ac2c7;return _0x585ac6;})[_0xd011('0x20')](respondWithFilteredResult(_0x134a01,_0xf32506))[_0xd011('0x40')](handleError(_0x134a01,null));};exports[_0xd011('0x41')]=function(_0x22b6f4,_0x3d1ae4){var _0xa6c768={'raw':!![],'where':{'id':_0x22b6f4[_0xd011('0x42')]['id']}},_0x4c966f={};_0x4c966f[_0xd011('0x2a')]=_[_0xd011('0x2d')](db['SugarcrmField'][_0xd011('0x43')]);_0x4c966f['query']=_[_0xd011('0x2d')](_0x22b6f4[_0xd011('0x2c')]);_0x4c966f['filters']=_['intersection'](_0x4c966f[_0xd011('0x2a')],_0x4c966f[_0xd011('0x2c')]);_0xa6c768[_0xd011('0x30')]=_[_0xd011('0x2f')](_0x4c966f['model'],qs['fields'](_0x22b6f4['query'][_0xd011('0x31')]));_0xa6c768[_0xd011('0x30')]=_0xa6c768[_0xd011('0x30')][_0xd011('0x44')]?_0xa6c768['attributes']:_0x4c966f[_0xd011('0x2a')];if(_0x22b6f4['query'][_0xd011('0x3c')]){_0xa6c768[_0xd011('0x3d')]=[{'all':!![]}];}_0xa6c768=_[_0xd011('0x37')]({},_0xa6c768,_0x22b6f4[_0xd011('0x3a')]);return db[_0xd011('0x26')]['find'](_0xa6c768)['then'](handleEntityNotFound(_0x3d1ae4,null))['then'](respondWithResult(_0x3d1ae4,null))['catch'](handleError(_0x3d1ae4,null));};exports[_0xd011('0x45')]=function(_0x13f77b,_0x192597){return db[_0xd011('0x26')][_0xd011('0x45')](_0x13f77b[_0xd011('0x46')],{})[_0xd011('0x20')](respondWithResult(_0x192597,0xc9))[_0xd011('0x40')](handleError(_0x192597,null));};exports[_0xd011('0x1f')]=function(_0x13af93,_0xc61f7e){if(_0x13af93[_0xd011('0x46')]['id']){delete _0x13af93['body']['id'];}return db['SugarcrmField'][_0xd011('0x47')]({'where':{'id':_0x13af93[_0xd011('0x42')]['id']}})[_0xd011('0x20')](handleEntityNotFound(_0xc61f7e,null))[_0xd011('0x20')](saveUpdates(_0x13af93['body'],null))['then'](respondWithResult(_0xc61f7e,null))[_0xd011('0x40')](handleError(_0xc61f7e,null));};exports[_0xd011('0x48')]=function(_0x4d0a56,_0x3c4ae0){return db[_0xd011('0x26')]['find']({'where':{'id':_0x4d0a56[_0xd011('0x42')]['id']}})[_0xd011('0x20')](handleEntityNotFound(_0x3c4ae0,null))[_0xd011('0x20')](removeEntity(_0x3c4ae0,null))[_0xd011('0x40')](handleError(_0x3c4ae0,null));};
\ No newline at end of file
+var _0xe083=['rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','reject','update','then','destroy','error','name','send','index','map','SugarcrmField','rawAttributes','fieldName','type','model','keys','filters','intersection','query','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','includeAll','include','rows','catch','show','fields','find','create','body','params','eml-format'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xe083,0x15d));var _0x3e08=function(_0x10b848,_0x302c50){_0x10b848=_0x10b848-0x0;var _0x961f5a=_0xe083[_0x10b848];return _0x961f5a;};'use strict';var emlformat=require(_0x3e08('0x0'));var rimraf=require(_0x3e08('0x1'));var zipdir=require(_0x3e08('0x2'));var jsonpatch=require(_0x3e08('0x3'));var rp=require(_0x3e08('0x4'));var moment=require(_0x3e08('0x5'));var BPromise=require(_0x3e08('0x6'));var Mustache=require('mustache');var util=require(_0x3e08('0x7'));var path=require('path');var sox=require(_0x3e08('0x8'));var csv=require(_0x3e08('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3e08('0xa'));var squel=require(_0x3e08('0xb'));var crypto=require(_0x3e08('0xc'));var jsforce=require(_0x3e08('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3e08('0xe'));var Papa=require(_0x3e08('0xf'));var Redis=require(_0x3e08('0x10'));var authService=require(_0x3e08('0x11'));var qs=require(_0x3e08('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3e08('0x13'));var logger=require(_0x3e08('0x14'))(_0x3e08('0x15'));var utils=require('../../config/utils');var config=require(_0x3e08('0x16'));var licenseUtil=require(_0x3e08('0x17'));var db=require(_0x3e08('0x18'))['db'];function respondWithStatusCode(_0x414cf0,_0x1a6425){_0x1a6425=_0x1a6425||0xcc;return function(_0x57d20d){if(_0x57d20d){return _0x414cf0[_0x3e08('0x19')](_0x1a6425);}return _0x414cf0[_0x3e08('0x1a')](_0x1a6425)[_0x3e08('0x1b')]();};}function respondWithResult(_0x11721c,_0x42a1ad){_0x42a1ad=_0x42a1ad||0xc8;return function(_0x446756){if(_0x446756){return _0x11721c[_0x3e08('0x1a')](_0x42a1ad)['json'](_0x446756);}};}function respondWithFilteredResult(_0x96193f,_0x49b9f7){return function(_0x4d198c){if(_0x4d198c){var _0x5d5f69=typeof _0x49b9f7[_0x3e08('0x1c')]===_0x3e08('0x1d')&&typeof _0x49b9f7[_0x3e08('0x1e')]===_0x3e08('0x1d');var _0x37186f=_0x4d198c[_0x3e08('0x1f')];var _0x4f0737=_0x5d5f69?0x0:_0x49b9f7[_0x3e08('0x1c')];var _0x4e8957=_0x5d5f69?_0x4d198c[_0x3e08('0x1f')]:_0x49b9f7[_0x3e08('0x1c')]+_0x49b9f7[_0x3e08('0x1e')];var _0x13f5a7;if(_0x4e8957>=_0x37186f){_0x4e8957=_0x37186f;_0x13f5a7=0xc8;}else{_0x13f5a7=0xce;}_0x96193f[_0x3e08('0x1a')](_0x13f5a7);return _0x96193f[_0x3e08('0x20')]('Content-Range',_0x4f0737+'-'+_0x4e8957+'/'+_0x37186f)['json'](_0x4d198c);}return null;};}function patchUpdates(_0x4b370f){return function(_0x31ecb0){try{jsonpatch['apply'](_0x31ecb0,_0x4b370f,!![]);}catch(_0xe275c4){return BPromise[_0x3e08('0x21')](_0xe275c4);}return _0x31ecb0['save']();};}function saveUpdates(_0x172fb4,_0x16cdc2){return function(_0x1e556b){if(_0x1e556b){return _0x1e556b[_0x3e08('0x22')](_0x172fb4)[_0x3e08('0x23')](function(_0x18ba6d){return _0x18ba6d;});}return null;};}function removeEntity(_0x3670ed,_0x464cb3){return function(_0x1f46ee){if(_0x1f46ee){return _0x1f46ee[_0x3e08('0x24')]()[_0x3e08('0x23')](function(){_0x3670ed[_0x3e08('0x1a')](0xcc)[_0x3e08('0x1b')]();});}};}function handleEntityNotFound(_0x5310d9,_0x45b59d){return function(_0x32f8b8){if(!_0x32f8b8){_0x5310d9['sendStatus'](0x194);}return _0x32f8b8;};}function handleError(_0x388588,_0x1769c7){_0x1769c7=_0x1769c7||0x1f4;return function(_0x31e7f7){logger[_0x3e08('0x25')](_0x31e7f7['stack']);if(_0x31e7f7['name']){delete _0x31e7f7[_0x3e08('0x26')];}_0x388588[_0x3e08('0x1a')](_0x1769c7)[_0x3e08('0x27')](_0x31e7f7);};}exports[_0x3e08('0x28')]=function(_0x789372,_0x431946){var _0x4cb778={},_0x365ffd={},_0xaf9d11={'count':0x0,'rows':[]};var _0x36bf52=_[_0x3e08('0x29')](db[_0x3e08('0x2a')][_0x3e08('0x2b')],function(_0x29db53){return{'name':_0x29db53[_0x3e08('0x2c')],'type':_0x29db53[_0x3e08('0x2d')]['key']};});_0x365ffd[_0x3e08('0x2e')]=_[_0x3e08('0x29')](_0x36bf52,_0x3e08('0x26'));_0x365ffd['query']=_[_0x3e08('0x2f')](_0x789372['query']);_0x365ffd[_0x3e08('0x30')]=_[_0x3e08('0x31')](_0x365ffd[_0x3e08('0x2e')],_0x365ffd['query']);_0x4cb778['attributes']=_['intersection'](_0x365ffd[_0x3e08('0x2e')],qs['fields'](_0x789372[_0x3e08('0x32')]['fields']));_0x4cb778[_0x3e08('0x33')]=_0x4cb778[_0x3e08('0x33')][_0x3e08('0x34')]?_0x4cb778[_0x3e08('0x33')]:_0x365ffd[_0x3e08('0x2e')];if(!_0x789372[_0x3e08('0x32')][_0x3e08('0x35')](_0x3e08('0x36'))){_0x4cb778[_0x3e08('0x1e')]=qs['limit'](_0x789372[_0x3e08('0x32')][_0x3e08('0x1e')]);_0x4cb778['offset']=qs['offset'](_0x789372[_0x3e08('0x32')][_0x3e08('0x1c')]);}_0x4cb778[_0x3e08('0x37')]=qs[_0x3e08('0x38')](_0x789372[_0x3e08('0x32')][_0x3e08('0x38')]);_0x4cb778[_0x3e08('0x39')]=qs[_0x3e08('0x30')](_['pick'](_0x789372['query'],_0x365ffd[_0x3e08('0x30')]),_0x36bf52);if(_0x789372[_0x3e08('0x32')][_0x3e08('0x3a')]){_0x4cb778[_0x3e08('0x39')]=_['merge'](_0x4cb778[_0x3e08('0x39')],{'$or':_['map'](_0x36bf52,function(_0x4c207f){if(_0x4c207f[_0x3e08('0x2d')]!=='VIRTUAL'){var _0x33cded={};_0x33cded[_0x4c207f[_0x3e08('0x26')]]={'$like':'%'+_0x789372['query'][_0x3e08('0x3a')]+'%'};return _0x33cded;}})});}_0x4cb778=_[_0x3e08('0x3b')]({},_0x4cb778,_0x789372['options']);var _0x5ccb4c={'where':_0x4cb778[_0x3e08('0x39')]};return db[_0x3e08('0x2a')][_0x3e08('0x1f')](_0x5ccb4c)[_0x3e08('0x23')](function(_0x49b3d0){_0xaf9d11[_0x3e08('0x1f')]=_0x49b3d0;if(_0x789372['query'][_0x3e08('0x3c')]){_0x4cb778[_0x3e08('0x3d')]=[{'all':!![]}];}return db[_0x3e08('0x2a')]['findAll'](_0x4cb778);})[_0x3e08('0x23')](function(_0x48abe8){_0xaf9d11[_0x3e08('0x3e')]=_0x48abe8;return _0xaf9d11;})['then'](respondWithFilteredResult(_0x431946,_0x4cb778))[_0x3e08('0x3f')](handleError(_0x431946,null));};exports[_0x3e08('0x40')]=function(_0x3e6de7,_0x2a4b79){var _0x6192a6={'raw':!![],'where':{'id':_0x3e6de7['params']['id']}},_0x1cdaa6={};_0x1cdaa6[_0x3e08('0x2e')]=_['keys'](db['SugarcrmField'][_0x3e08('0x2b')]);_0x1cdaa6['query']=_[_0x3e08('0x2f')](_0x3e6de7[_0x3e08('0x32')]);_0x1cdaa6[_0x3e08('0x30')]=_[_0x3e08('0x31')](_0x1cdaa6['model'],_0x1cdaa6[_0x3e08('0x32')]);_0x6192a6[_0x3e08('0x33')]=_['intersection'](_0x1cdaa6[_0x3e08('0x2e')],qs[_0x3e08('0x41')](_0x3e6de7[_0x3e08('0x32')][_0x3e08('0x41')]));_0x6192a6['attributes']=_0x6192a6[_0x3e08('0x33')]['length']?_0x6192a6['attributes']:_0x1cdaa6[_0x3e08('0x2e')];if(_0x3e6de7[_0x3e08('0x32')][_0x3e08('0x3c')]){_0x6192a6[_0x3e08('0x3d')]=[{'all':!![]}];}_0x6192a6=_['merge']({},_0x6192a6,_0x3e6de7['options']);return db[_0x3e08('0x2a')][_0x3e08('0x42')](_0x6192a6)[_0x3e08('0x23')](handleEntityNotFound(_0x2a4b79,null))[_0x3e08('0x23')](respondWithResult(_0x2a4b79,null))['catch'](handleError(_0x2a4b79,null));};exports[_0x3e08('0x43')]=function(_0x1df7c8,_0x75a208){return db[_0x3e08('0x2a')][_0x3e08('0x43')](_0x1df7c8[_0x3e08('0x44')],{})[_0x3e08('0x23')](respondWithResult(_0x75a208,0xc9))[_0x3e08('0x3f')](handleError(_0x75a208,null));};exports[_0x3e08('0x22')]=function(_0x42a084,_0x59d3a4){if(_0x42a084['body']['id']){delete _0x42a084[_0x3e08('0x44')]['id'];}return db[_0x3e08('0x2a')][_0x3e08('0x42')]({'where':{'id':_0x42a084['params']['id']}})[_0x3e08('0x23')](handleEntityNotFound(_0x59d3a4,null))[_0x3e08('0x23')](saveUpdates(_0x42a084[_0x3e08('0x44')],null))[_0x3e08('0x23')](respondWithResult(_0x59d3a4,null))['catch'](handleError(_0x59d3a4,null));};exports[_0x3e08('0x24')]=function(_0x1fd098,_0x31e6ac){return db[_0x3e08('0x2a')][_0x3e08('0x42')]({'where':{'id':_0x1fd098[_0x3e08('0x45')]['id']}})['then'](handleEntityNotFound(_0x31e6ac,null))['then'](removeEntity(_0x31e6ac,null))[_0x3e08('0x3f')](handleError(_0x31e6ac,null));};
\ No newline at end of file
index 5901198..f32cb31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c74=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','exports','SugarcrmField','FieldId','lodash'];(function(_0x13ad2f,_0x2f99cb){var _0x509efd=function(_0x5a1c0e){while(--_0x5a1c0e){_0x13ad2f['push'](_0x13ad2f['shift']());}};_0x509efd(++_0x2f99cb);}(_0x3c74,0x18b));var _0x43c7=function(_0x7e4599,_0x14aed2){_0x7e4599=_0x7e4599-0x0;var _0x1c0c22=_0x3c74[_0x7e4599];return _0x1c0c22;};'use strict';var _=require(_0x43c7('0x0'));var util=require(_0x43c7('0x1'));var logger=require(_0x43c7('0x2'))(_0x43c7('0x3'));var moment=require(_0x43c7('0x4'));var BPromise=require(_0x43c7('0x5'));var rp=require(_0x43c7('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x43c7('0x7'));var config=require('../../config/environment');var attributes=require('./intSugarcrmField.attributes');module[_0x43c7('0x8')]=function(_0x541ef3,_0x3914a0){return _0x541ef3['define'](_0x43c7('0x9'),attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':['idField',_0x43c7('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6ee3=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SugarcrmField','int_sugarcrm_fields','idField','FieldId','lodash'];(function(_0x1073ad,_0x44bf0b){var _0x528474=function(_0x3450f7){while(--_0x3450f7){_0x1073ad['push'](_0x1073ad['shift']());}};_0x528474(++_0x44bf0b);}(_0x6ee3,0xcf));var _0x36ee=function(_0x238c39,_0x304ec7){_0x238c39=_0x238c39-0x0;var _0xa7da11=_0x6ee3[_0x238c39];return _0xa7da11;};'use strict';var _=require(_0x36ee('0x0'));var util=require(_0x36ee('0x1'));var logger=require(_0x36ee('0x2'))(_0x36ee('0x3'));var moment=require(_0x36ee('0x4'));var BPromise=require(_0x36ee('0x5'));var rp=require(_0x36ee('0x6'));var fs=require('fs');var path=require(_0x36ee('0x7'));var rimraf=require(_0x36ee('0x8'));var config=require(_0x36ee('0x9'));var attributes=require('./intSugarcrmField.attributes');module[_0x36ee('0xa')]=function(_0x5710fc,_0x3354b3){return _0x5710fc[_0x36ee('0xb')](_0x36ee('0xc'),attributes,{'tableName':_0x36ee('0xd'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':[_0x36ee('0xe'),_0x36ee('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index a2559a0..305337a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5bb=['../../config/environment','jayson/promise','client','request','then','info','SugarcrmField,\x20%s,\x20%s','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x1f5045,_0x1e45fd){var _0x5ada19=function(_0x54b95a){while(--_0x54b95a){_0x1f5045['push'](_0x1f5045['shift']());}};_0x5ada19(++_0x1e45fd);}(_0xb5bb,0xa7));var _0xbb5b=function(_0x4815f5,_0x52a630){_0x4815f5=_0x4815f5-0x0;var _0x1cf44d=_0xb5bb[_0x4815f5];return _0x1cf44d;};'use strict';var _=require(_0xbb5b('0x0'));var util=require(_0xbb5b('0x1'));var moment=require(_0xbb5b('0x2'));var BPromise=require(_0xbb5b('0x3'));var rs=require(_0xbb5b('0x4'));var fs=require('fs');var Redis=require(_0xbb5b('0x5'));var db=require(_0xbb5b('0x6'))['db'];var utils=require(_0xbb5b('0x7'));var logger=require(_0xbb5b('0x8'))('rpc');var config=require(_0xbb5b('0x9'));var jayson=require(_0xbb5b('0xa'));var client=jayson[_0xbb5b('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x20df78,_0x47f08c,_0xe93a07){return new BPromise(function(_0x52b802,_0x3f6a5a){return client[_0xbb5b('0xc')](_0x20df78,_0xe93a07)[_0xbb5b('0xd')](function(_0x1d5894){logger[_0xbb5b('0xe')](_0xbb5b('0xf'),_0x47f08c,'request\x20sent');logger[_0xbb5b('0x10')](_0xbb5b('0x11'),_0x47f08c,'request\x20sent',JSON['stringify'](_0x1d5894));if(_0x1d5894['error']){if(_0x1d5894[_0xbb5b('0x12')][_0xbb5b('0x13')]===0x1f4){logger[_0xbb5b('0x12')](_0xbb5b('0xf'),_0x47f08c,_0x1d5894[_0xbb5b('0x12')][_0xbb5b('0x14')]);return _0x3f6a5a(_0x1d5894['error'][_0xbb5b('0x14')]);}logger[_0xbb5b('0x12')](_0xbb5b('0xf'),_0x47f08c,_0x1d5894[_0xbb5b('0x12')]['message']);return _0x52b802(_0x1d5894[_0xbb5b('0x12')][_0xbb5b('0x14')]);}else{logger[_0xbb5b('0xe')](_0xbb5b('0xf'),_0x47f08c,_0xbb5b('0x15'));_0x52b802(_0x1d5894['result'][_0xbb5b('0x14')]);}})['catch'](function(_0x2958a9){logger[_0xbb5b('0x12')](_0xbb5b('0xf'),_0x47f08c,_0x2958a9);_0x3f6a5a(_0x2958a9);});});}
\ No newline at end of file
+var _0x0b02=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x48065a,_0x16ac24){var _0x53e450=function(_0x1970d5){while(--_0x1970d5){_0x48065a['push'](_0x48065a['shift']());}};_0x53e450(++_0x16ac24);}(_0x0b02,0x114));var _0x20b0=function(_0x184992,_0x5a9468){_0x184992=_0x184992-0x0;var _0x57cc8d=_0x0b02[_0x184992];return _0x57cc8d;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x20b0('0x0'));var rs=require(_0x20b0('0x1'));var fs=require('fs');var Redis=require(_0x20b0('0x2'));var db=require(_0x20b0('0x3'))['db'];var utils=require(_0x20b0('0x4'));var logger=require(_0x20b0('0x5'))(_0x20b0('0x6'));var config=require(_0x20b0('0x7'));var jayson=require(_0x20b0('0x8'));var client=jayson[_0x20b0('0x9')][_0x20b0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2e3fbe,_0x343e53,_0x57aa41){return new BPromise(function(_0x929d5c,_0x2edc85){return client[_0x20b0('0xb')](_0x2e3fbe,_0x57aa41)[_0x20b0('0xc')](function(_0x26cdc5){logger[_0x20b0('0xd')](_0x20b0('0xe'),_0x343e53,_0x20b0('0xf'));logger[_0x20b0('0x10')](_0x20b0('0x11'),_0x343e53,_0x20b0('0xf'),JSON[_0x20b0('0x12')](_0x26cdc5));if(_0x26cdc5['error']){if(_0x26cdc5[_0x20b0('0x13')][_0x20b0('0x14')]===0x1f4){logger[_0x20b0('0x13')](_0x20b0('0xe'),_0x343e53,_0x26cdc5[_0x20b0('0x13')][_0x20b0('0x15')]);return _0x2edc85(_0x26cdc5[_0x20b0('0x13')]['message']);}logger[_0x20b0('0x13')](_0x20b0('0xe'),_0x343e53,_0x26cdc5[_0x20b0('0x13')][_0x20b0('0x15')]);return _0x929d5c(_0x26cdc5[_0x20b0('0x13')][_0x20b0('0x15')]);}else{logger[_0x20b0('0xd')]('SugarcrmField,\x20%s,\x20%s',_0x343e53,_0x20b0('0xf'));_0x929d5c(_0x26cdc5['result'][_0x20b0('0x15')]);}})[_0x20b0('0x16')](function(_0x449342){logger[_0x20b0('0x13')]('SugarcrmField,\x20%s,\x20%s',_0x343e53,_0x449342);_0x2edc85(_0x449342);});});}
\ No newline at end of file
index aa38588..14c50af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd976=['isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','put','update','delete','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get'];(function(_0xd31b2c,_0x2bccdd){var _0x5ec823=function(_0x7eb23d){while(--_0x7eb23d){_0xd31b2c['push'](_0xd31b2c['shift']());}};_0x5ec823(++_0x2bccdd);}(_0xd976,0x12f));var _0x6d97=function(_0x254d2f,_0x156576){_0x254d2f=_0x254d2f-0x0;var _0x413b2e=_0xd976[_0x254d2f];return _0x413b2e;};'use strict';var multer=require(_0x6d97('0x0'));var util=require(_0x6d97('0x1'));var path=require(_0x6d97('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6d97('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6d97('0x4'));var interaction=require(_0x6d97('0x5'));var config=require(_0x6d97('0x6'));var controller=require(_0x6d97('0x7'));router[_0x6d97('0x8')]('/',auth[_0x6d97('0x9')](),controller[_0x6d97('0xa')]);router[_0x6d97('0x8')](_0x6d97('0xb'),auth[_0x6d97('0x9')](),controller[_0x6d97('0xc')]);router['get'](_0x6d97('0xd'),auth['isAuthenticated'](),controller[_0x6d97('0xe')]);router['get'](_0x6d97('0xf'),auth[_0x6d97('0x9')](),controller[_0x6d97('0x10')]);router[_0x6d97('0x11')]('/',auth[_0x6d97('0x9')](),controller[_0x6d97('0x12')]);router[_0x6d97('0x11')](_0x6d97('0xd'),auth[_0x6d97('0x9')](),controller['addConfiguration']);router[_0x6d97('0x13')](_0x6d97('0xb'),auth[_0x6d97('0x9')](),controller[_0x6d97('0x14')]);router[_0x6d97('0x15')]('/:id',auth[_0x6d97('0x9')](),controller[_0x6d97('0x16')]);module[_0x6d97('0x17')]=router;
\ No newline at end of file
+var _0x2f0d=['../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','index','/:id','isAuthenticated','show','getConfigurations','/:id/fields','getFields','post','create','/:id/configurations','addConfiguration','put','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x273f77,_0xe5b0cb){var _0x71e147=function(_0x564056){while(--_0x564056){_0x273f77['push'](_0x273f77['shift']());}};_0x71e147(++_0xe5b0cb);}(_0x2f0d,0xa8));var _0xd2f0=function(_0x439504,_0x216829){_0x439504=_0x439504-0x0;var _0x1c12a6=_0x2f0d[_0x439504];return _0x1c12a6;};'use strict';var multer=require(_0xd2f0('0x0'));var util=require(_0xd2f0('0x1'));var path=require(_0xd2f0('0x2'));var timeout=require(_0xd2f0('0x3'));var express=require(_0xd2f0('0x4'));var router=express[_0xd2f0('0x5')]();var fs_extra=require(_0xd2f0('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xd2f0('0x7'));var config=require(_0xd2f0('0x8'));var controller=require(_0xd2f0('0x9'));router[_0xd2f0('0xa')]('/',auth['isAuthenticated'](),controller[_0xd2f0('0xb')]);router[_0xd2f0('0xa')](_0xd2f0('0xc'),auth[_0xd2f0('0xd')](),controller[_0xd2f0('0xe')]);router[_0xd2f0('0xa')]('/:id/configurations',auth[_0xd2f0('0xd')](),controller[_0xd2f0('0xf')]);router[_0xd2f0('0xa')](_0xd2f0('0x10'),auth[_0xd2f0('0xd')](),controller[_0xd2f0('0x11')]);router[_0xd2f0('0x12')]('/',auth[_0xd2f0('0xd')](),controller[_0xd2f0('0x13')]);router[_0xd2f0('0x12')](_0xd2f0('0x14'),auth[_0xd2f0('0xd')](),controller[_0xd2f0('0x15')]);router[_0xd2f0('0x16')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xd2f0('0x17')](_0xd2f0('0xc'),auth[_0xd2f0('0xd')](),controller['destroy']);module[_0xd2f0('0x18')]=router;
\ No newline at end of file
index b955cd7..4e37b51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf405=['STRING','HelpDesk','exports'];(function(_0x125eb9,_0x37ed5a){var _0x4f5fc9=function(_0x4bf41f){while(--_0x4bf41f){_0x125eb9['push'](_0x125eb9['shift']());}};_0x4f5fc9(++_0x37ed5a);}(_0xf405,0x98));var _0x5f40=function(_0x5f2849,_0x8aa99a){_0x5f2849=_0x5f2849-0x0;var _0x45f741=_0xf405[_0x5f2849];return _0x45f741;};'use strict';var Sequelize=require('sequelize');module[_0x5f40('0x0')]={'name':{'type':Sequelize[_0x5f40('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x5f40('0x1')]},'username':{'type':Sequelize[_0x5f40('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x5f40('0x1')],'allowNull':![],'defaultValue':_0x5f40('0x2')},'remoteUri':{'type':Sequelize[_0x5f40('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x5f40('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x5f40('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xb40d=['STRING','HelpDesk'];(function(_0x4cd00b,_0x483633){var _0x488623=function(_0xe10309){while(--_0xe10309){_0x4cd00b['push'](_0x4cd00b['shift']());}};_0x488623(++_0x483633);}(_0xb40d,0xf8));var _0xdb40=function(_0x2bc20f,_0x51d009){_0x2bc20f=_0x2bc20f-0x0;var _0x40367a=_0xb40d[_0x2bc20f];return _0x40367a;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xdb40('0x0')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xdb40('0x0')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xdb40('0x0')],'allowNull':![],'defaultValue':_0xdb40('0x1')},'remoteUri':{'type':Sequelize[_0xdb40('0x0')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xdb40('0x0')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index e256b33..20adb9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc24d=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','error','stack','name','send','map','VtigerAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','params','find','create','body','update','getConfigurations','VtigerConfiguration','length','order','pick','options','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','VtigerField','getFields','findOne','username','description','moduleName','remoteUri','accessKey','slice','substring','lastIndexOf','%s/webservice.php','success','POST','login','result','GET','sessionName','autogenerated','reference','owner','remove','includes','editable','false','startsWith','cf_','picklist','picklistValues','label','value','log','vTiger\x20error:\x20','test','statusCode','Wrong\x20credentials','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce'];(function(_0x3acfe5,_0x2f5f39){var _0x5295c3=function(_0x20079e){while(--_0x20079e){_0x3acfe5['push'](_0x3acfe5['shift']());}};_0x5295c3(++_0x2f5f39);}(_0xc24d,0xe1));var _0xdc24=function(_0x1c34e7,_0x33f9a8){_0x1c34e7=_0x1c34e7-0x0;var _0x378cb1=_0xc24d[_0x1c34e7];return _0x378cb1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdc24('0x0'));var zipdir=require(_0xdc24('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdc24('0x2'));var moment=require(_0xdc24('0x3'));var BPromise=require(_0xdc24('0x4'));var Mustache=require(_0xdc24('0x5'));var util=require(_0xdc24('0x6'));var path=require('path');var sox=require(_0xdc24('0x7'));var csv=require(_0xdc24('0x8'));var ejs=require(_0xdc24('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdc24('0xa'));var squel=require(_0xdc24('0xb'));var crypto=require('crypto');var jsforce=require(_0xdc24('0xc'));var deskjs=require(_0xdc24('0xd'));var toCsv=require(_0xdc24('0x8'));var querystring=require(_0xdc24('0xe'));var Papa=require(_0xdc24('0xf'));var Redis=require(_0xdc24('0x10'));var authService=require(_0xdc24('0x11'));var qs=require(_0xdc24('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xdc24('0x13'))('api');var utils=require(_0xdc24('0x14'));var config=require(_0xdc24('0x15'));var licenseUtil=require(_0xdc24('0x16'));var db=require('../../mysqldb')['db'];var integrations=require(_0xdc24('0x17'));function respondWithStatusCode(_0x531ba7,_0x116a52){_0x116a52=_0x116a52||0xcc;return function(_0x3213cc){if(_0x3213cc){return _0x531ba7[_0xdc24('0x18')](_0x116a52);}return _0x531ba7[_0xdc24('0x19')](_0x116a52)[_0xdc24('0x1a')]();};}function respondWithResult(_0x3570c0,_0x492311){_0x492311=_0x492311||0xc8;return function(_0x2148cb){if(_0x2148cb){return _0x3570c0[_0xdc24('0x19')](_0x492311)[_0xdc24('0x1b')](_0x2148cb);}};}function respondWithFilteredResult(_0x56b13f,_0x20ceb4){return function(_0x96e417){if(_0x96e417){var _0x326299=typeof _0x20ceb4[_0xdc24('0x1c')]===_0xdc24('0x1d')&&typeof _0x20ceb4[_0xdc24('0x1e')]===_0xdc24('0x1d');var _0x54e188=_0x96e417[_0xdc24('0x1f')];var _0x572f7e=_0x326299?0x0:_0x20ceb4['offset'];var _0x31b9ac=_0x326299?_0x96e417[_0xdc24('0x1f')]:_0x20ceb4['offset']+_0x20ceb4['limit'];var _0x2bd193;if(_0x31b9ac>=_0x54e188){_0x31b9ac=_0x54e188;_0x2bd193=0xc8;}else{_0x2bd193=0xce;}_0x56b13f[_0xdc24('0x19')](_0x2bd193);return _0x56b13f[_0xdc24('0x20')](_0xdc24('0x21'),_0x572f7e+'-'+_0x31b9ac+'/'+_0x54e188)['json'](_0x96e417);}return null;};}function patchUpdates(_0x531dda){return function(_0x556c5d){try{jsonpatch['apply'](_0x556c5d,_0x531dda,!![]);}catch(_0x2022a2){return BPromise[_0xdc24('0x22')](_0x2022a2);}return _0x556c5d[_0xdc24('0x23')]();};}function saveUpdates(_0x4c908f,_0x5ce06d){return function(_0x33121e){if(_0x33121e){return _0x33121e['update'](_0x4c908f)[_0xdc24('0x24')](function(_0x2ea044){return _0x2ea044;});}return null;};}function removeEntity(_0x4be55c,_0x47f354){return function(_0x26e755){if(_0x26e755){return _0x26e755[_0xdc24('0x25')]()[_0xdc24('0x24')](function(){_0x4be55c[_0xdc24('0x19')](0xcc)[_0xdc24('0x1a')]();});}};}function handleEntityNotFound(_0x125e36,_0x846fbf){return function(_0x302faa){if(!_0x302faa){_0x125e36[_0xdc24('0x18')](0x194);}return _0x302faa;};}function handleError(_0x5c040a,_0x524571){_0x524571=_0x524571||0x1f4;return function(_0x3e0b9b){logger[_0xdc24('0x26')](_0x3e0b9b[_0xdc24('0x27')]);if(_0x3e0b9b[_0xdc24('0x28')]){delete _0x3e0b9b[_0xdc24('0x28')];}_0x5c040a[_0xdc24('0x19')](_0x524571)[_0xdc24('0x29')](_0x3e0b9b);};}exports['index']=function(_0x23a422,_0x1d0c33){var _0x5930f0={},_0x475374={},_0x3e61c1={'count':0x0,'rows':[]};var _0x1b3481=_[_0xdc24('0x2a')](db[_0xdc24('0x2b')][_0xdc24('0x2c')],function(_0x165e72){return{'name':_0x165e72[_0xdc24('0x2d')],'type':_0x165e72[_0xdc24('0x2e')]['key']};});_0x475374[_0xdc24('0x2f')]=_['map'](_0x1b3481,_0xdc24('0x28'));_0x475374[_0xdc24('0x30')]=_[_0xdc24('0x31')](_0x23a422[_0xdc24('0x30')]);_0x475374[_0xdc24('0x32')]=_[_0xdc24('0x33')](_0x475374[_0xdc24('0x2f')],_0x475374[_0xdc24('0x30')]);_0x5930f0[_0xdc24('0x34')]=_[_0xdc24('0x33')](_0x475374[_0xdc24('0x2f')],qs[_0xdc24('0x35')](_0x23a422[_0xdc24('0x30')][_0xdc24('0x35')]));_0x5930f0[_0xdc24('0x34')]=_0x5930f0[_0xdc24('0x34')]['length']?_0x5930f0['attributes']:_0x475374['model'];if(!_0x23a422[_0xdc24('0x30')][_0xdc24('0x36')](_0xdc24('0x37'))){_0x5930f0[_0xdc24('0x1e')]=qs[_0xdc24('0x1e')](_0x23a422[_0xdc24('0x30')]['limit']);_0x5930f0[_0xdc24('0x1c')]=qs[_0xdc24('0x1c')](_0x23a422[_0xdc24('0x30')]['offset']);}_0x5930f0['order']=qs['sort'](_0x23a422[_0xdc24('0x30')][_0xdc24('0x38')]);_0x5930f0[_0xdc24('0x39')]=qs[_0xdc24('0x32')](_['pick'](_0x23a422['query'],_0x475374[_0xdc24('0x32')]),_0x1b3481);if(_0x23a422['query']['filter']){_0x5930f0[_0xdc24('0x39')]=_[_0xdc24('0x3a')](_0x5930f0[_0xdc24('0x39')],{'$or':_[_0xdc24('0x2a')](_0x1b3481,function(_0x208527){if(_0x208527['type']!==_0xdc24('0x3b')){var _0x4b2bfa={};_0x4b2bfa[_0x208527['name']]={'$like':'%'+_0x23a422[_0xdc24('0x30')][_0xdc24('0x3c')]+'%'};return _0x4b2bfa;}})});}_0x5930f0=_[_0xdc24('0x3a')]({},_0x5930f0,_0x23a422['options']);var _0xebf383={'where':_0x5930f0['where']};return db[_0xdc24('0x2b')]['count'](_0xebf383)['then'](function(_0x185a9c){_0x3e61c1[_0xdc24('0x1f')]=_0x185a9c;if(_0x23a422[_0xdc24('0x30')][_0xdc24('0x3d')]){_0x5930f0[_0xdc24('0x3e')]=[{'all':!![]}];}return db[_0xdc24('0x2b')][_0xdc24('0x3f')](_0x5930f0);})[_0xdc24('0x24')](function(_0x3755e2){_0x3e61c1[_0xdc24('0x40')]=_0x3755e2;return _0x3e61c1;})[_0xdc24('0x24')](respondWithFilteredResult(_0x1d0c33,_0x5930f0))[_0xdc24('0x41')](handleError(_0x1d0c33,null));};exports['show']=function(_0x2a393a,_0xac0d44){var _0x5cfc9f={'raw':![],'where':{'id':_0x2a393a[_0xdc24('0x42')]['id']}},_0x392d66={};_0x392d66[_0xdc24('0x2f')]=_[_0xdc24('0x31')](db[_0xdc24('0x2b')][_0xdc24('0x2c')]);_0x392d66[_0xdc24('0x30')]=_[_0xdc24('0x31')](_0x2a393a['query']);_0x392d66[_0xdc24('0x32')]=_[_0xdc24('0x33')](_0x392d66[_0xdc24('0x2f')],_0x392d66['query']);_0x5cfc9f[_0xdc24('0x34')]=_[_0xdc24('0x33')](_0x392d66[_0xdc24('0x2f')],qs[_0xdc24('0x35')](_0x2a393a['query'][_0xdc24('0x35')]));_0x5cfc9f[_0xdc24('0x34')]=_0x5cfc9f[_0xdc24('0x34')]['length']?_0x5cfc9f[_0xdc24('0x34')]:_0x392d66['model'];if(_0x2a393a[_0xdc24('0x30')][_0xdc24('0x3d')]){_0x5cfc9f['include']=[{'all':!![]}];}_0x5cfc9f=_['merge']({},_0x5cfc9f,_0x2a393a['options']);return db[_0xdc24('0x2b')][_0xdc24('0x43')](_0x5cfc9f)[_0xdc24('0x24')](handleEntityNotFound(_0xac0d44,null))['then'](respondWithResult(_0xac0d44,null))[_0xdc24('0x41')](handleError(_0xac0d44,null));};exports[_0xdc24('0x44')]=function(_0x29cbc3,_0x29503c){return db[_0xdc24('0x2b')][_0xdc24('0x44')](_0x29cbc3[_0xdc24('0x45')],{})[_0xdc24('0x24')](respondWithResult(_0x29503c,0xc9))[_0xdc24('0x41')](handleError(_0x29503c,null));};exports[_0xdc24('0x46')]=function(_0x27ea5d,_0x24c3fa){if(_0x27ea5d['body']['id']){delete _0x27ea5d[_0xdc24('0x45')]['id'];}return db[_0xdc24('0x2b')][_0xdc24('0x43')]({'where':{'id':_0x27ea5d[_0xdc24('0x42')]['id']}})[_0xdc24('0x24')](handleEntityNotFound(_0x24c3fa,null))['then'](saveUpdates(_0x27ea5d[_0xdc24('0x45')],null))[_0xdc24('0x24')](respondWithResult(_0x24c3fa,null))[_0xdc24('0x41')](handleError(_0x24c3fa,null));};exports[_0xdc24('0x25')]=function(_0x1d9a0d,_0xff4ed3){return db[_0xdc24('0x2b')][_0xdc24('0x43')]({'where':{'id':_0x1d9a0d['params']['id']}})[_0xdc24('0x24')](handleEntityNotFound(_0xff4ed3,null))['then'](removeEntity(_0xff4ed3,null))[_0xdc24('0x41')](handleError(_0xff4ed3,null));};exports[_0xdc24('0x47')]=function(_0x180a30,_0x3f285a,_0x211e94){var _0x3a34e0={};var _0x30c335={};var _0x469655;var _0x29fab8;return db[_0xdc24('0x2b')]['findOne']({'where':{'id':_0x180a30[_0xdc24('0x42')]['id']}})[_0xdc24('0x24')](handleEntityNotFound(_0x3f285a,null))[_0xdc24('0x24')](function(_0x3295f5){if(_0x3295f5){_0x469655=_0x3295f5;_0x30c335[_0xdc24('0x2f')]=_['keys'](db[_0xdc24('0x48')][_0xdc24('0x2c')]);_0x30c335[_0xdc24('0x30')]=_['keys'](_0x180a30[_0xdc24('0x30')]);_0x30c335['filters']=_[_0xdc24('0x33')](_0x30c335[_0xdc24('0x2f')],_0x30c335['query']);_0x3a34e0[_0xdc24('0x34')]=_[_0xdc24('0x33')](_0x30c335[_0xdc24('0x2f')],qs['fields'](_0x180a30[_0xdc24('0x30')][_0xdc24('0x35')]));_0x3a34e0['attributes']=_0x3a34e0[_0xdc24('0x34')][_0xdc24('0x49')]?_0x3a34e0['attributes']:_0x30c335[_0xdc24('0x2f')];_0x3a34e0[_0xdc24('0x4a')]=qs[_0xdc24('0x38')](_0x180a30[_0xdc24('0x30')][_0xdc24('0x38')]);_0x3a34e0[_0xdc24('0x39')]=qs[_0xdc24('0x32')](_[_0xdc24('0x4b')](_0x180a30[_0xdc24('0x30')],_0x30c335[_0xdc24('0x32')]));if(_0x180a30[_0xdc24('0x30')][_0xdc24('0x3c')]){_0x3a34e0[_0xdc24('0x39')]=_[_0xdc24('0x3a')](_0x3a34e0['where'],{'$or':_[_0xdc24('0x2a')](_0x3a34e0[_0xdc24('0x34')],function(_0x116b78){var _0x29f3bd={};_0x29f3bd[_0x116b78]={'$like':'%'+_0x180a30[_0xdc24('0x30')]['filter']+'%'};return _0x29f3bd;})});}_0x3a34e0=_[_0xdc24('0x3a')]({},_0x3a34e0,_0x180a30[_0xdc24('0x4c')]);return _0x469655[_0xdc24('0x47')](_0x3a34e0);}})[_0xdc24('0x24')](function(_0x53e417){if(_0x53e417){_0x29fab8=_0x53e417['length'];if(!_0x180a30[_0xdc24('0x30')][_0xdc24('0x36')](_0xdc24('0x37'))){_0x3a34e0['limit']=qs[_0xdc24('0x1e')](_0x180a30[_0xdc24('0x30')]['limit']);_0x3a34e0[_0xdc24('0x1c')]=qs[_0xdc24('0x1c')](_0x180a30[_0xdc24('0x30')][_0xdc24('0x1c')]);}return _0x469655['getConfigurations'](_0x3a34e0);}})[_0xdc24('0x24')](function(_0x1759cf){if(_0x1759cf){return _0x1759cf?{'count':_0x29fab8,'rows':_0x1759cf}:null;}})['then'](respondWithResult(_0x3f285a,null))[_0xdc24('0x41')](handleError(_0x3f285a,null));};exports['addConfiguration']=function(_0x105129,_0x9929bf,_0x56f85e){if(_0x105129[_0xdc24('0x45')]['id']){delete _0x105129[_0xdc24('0x45')]['id'];}return db['VtigerAccount']['findOne']({'where':{'id':_0x105129[_0xdc24('0x42')]['id']}})[_0xdc24('0x24')](handleEntityNotFound(_0x9929bf,null))[_0xdc24('0x24')](function(_0x7ef53a){if(_0x7ef53a){_0x105129[_0xdc24('0x45')][_0xdc24('0x4d')]=_0x7ef53a['id'];_0x105129[_0xdc24('0x45')][_0xdc24('0x4e')]=integrations[_0xdc24('0x4f')](_0x105129[_0xdc24('0x45')]['channel'],_0x105129[_0xdc24('0x45')][_0xdc24('0x2e')]);_0x105129['body'][_0xdc24('0x50')]=integrations[_0xdc24('0x51')](_0x105129[_0xdc24('0x45')][_0xdc24('0x52')],_0x105129[_0xdc24('0x45')][_0xdc24('0x2e')]);return db['VtigerConfiguration'][_0xdc24('0x44')](_0x105129[_0xdc24('0x45')],{'include':[{'model':db[_0xdc24('0x53')],'as':_0xdc24('0x4e')},{'model':db['VtigerField'],'as':_0xdc24('0x50')}]});}return null;})[_0xdc24('0x24')](respondWithResult(_0x9929bf,null))[_0xdc24('0x41')](handleError(_0x9929bf,null));};var md5=require('md5');exports[_0xdc24('0x54')]=function(_0x1bc542,_0x35555c,_0xc6d081){var _0x3478fa=null;var _0xd51877=null;var _0x409628=null;var _0x362d7c=null;var _0x15816b='';return db[_0xdc24('0x2b')][_0xdc24('0x55')]({'where':{'id':_0x1bc542[_0xdc24('0x42')]['id']},'attributes':['id',_0xdc24('0x28'),_0xdc24('0x56'),_0xdc24('0x57'),_0xdc24('0x58'),_0xdc24('0x59'),'serverUrl',_0xdc24('0x5a')]})[_0xdc24('0x24')](handleEntityNotFound(_0x35555c,null))['then'](function(_0x3a5b69){if(_0x3a5b69){_0x3478fa=_0x3a5b69[_0xdc24('0x56')];_0xd51877=_0x3a5b69['accessKey'];_0x409628=_0x3a5b69[_0xdc24('0x58')];_0x15816b=_0x3a5b69['remoteUri'];var _0x44cf95=_0x15816b[_0xdc24('0x5b')](-0x1);if(_0x44cf95==='/'){_0x15816b=_0x15816b[_0xdc24('0x5c')](0x0,_0x15816b[_0xdc24('0x5d')](_0x44cf95));}_0x362d7c=util['format'](_0xdc24('0x5e'),_0x15816b);var _0x560bc4={'method':'GET','uri':_0x362d7c,'qs':{'operation':'getchallenge','username':_0x3a5b69[_0xdc24('0x56')]},'json':!![]};return rp(_0x560bc4);}})[_0xdc24('0x24')](function(_0x599baf){if(_0x599baf[_0xdc24('0x5f')]){var _0x2b99ab={'method':_0xdc24('0x60'),'uri':_0x362d7c,'form':{'operation':_0xdc24('0x61'),'username':_0x3478fa,'accessKey':md5(_0x599baf[_0xdc24('0x62')]['token']+_0xd51877)},'json':!![]};return rp(_0x2b99ab);}})[_0xdc24('0x24')](function(_0x385ef1){if(_0x385ef1[_0xdc24('0x5f')]){var _0x5e87cc={'method':_0xdc24('0x63'),'uri':_0x362d7c,'qs':{'operation':'describe','username':_0x3478fa,'sessionName':_0x385ef1[_0xdc24('0x62')][_0xdc24('0x64')],'elementType':_0x409628},'json':!![]};return rp(_0x5e87cc);}})[_0xdc24('0x24')](function(_0x3ec9e1){if(_0x3ec9e1[_0xdc24('0x5f')]){var _0x29be7c=[_0xdc24('0x65'),_0xdc24('0x66'),_0xdc24('0x67')];_[_0xdc24('0x68')](_0x3ec9e1[_0xdc24('0x62')][_0xdc24('0x35')],function(_0x15e0ea){return _0x29be7c[_0xdc24('0x69')](_0x15e0ea['type'][_0xdc24('0x28')]);});_[_0xdc24('0x68')](_0x3ec9e1[_0xdc24('0x62')][_0xdc24('0x35')],function(_0xb34a5){return _0xb34a5[_0xdc24('0x6a')]===_0xdc24('0x6b');});return{'count':_0x3ec9e1['result']['fields'][_0xdc24('0x49')],'rows':_[_0xdc24('0x2a')](_0x3ec9e1[_0xdc24('0x62')][_0xdc24('0x35')],function(_0x61874){return{'id':_0x61874[_0xdc24('0x28')],'name':_0x61874['label'],'custom':_[_0xdc24('0x6c')](_0x61874[_0xdc24('0x28')],_0xdc24('0x6d'))?!![]:![],'options':_0x61874[_0xdc24('0x2e')]['name']===_0xdc24('0x6e')&&_0x61874[_0xdc24('0x2e')][_0xdc24('0x6f')][_0xdc24('0x49')]>0x0?_[_0xdc24('0x2a')](_0x61874[_0xdc24('0x2e')][_0xdc24('0x6f')],function(_0x27b9f2){return{'name':_0x27b9f2[_0xdc24('0x70')],'value':_0x27b9f2[_0xdc24('0x71')]};}):[]};})};}})[_0xdc24('0x24')](respondWithResult(_0x35555c,null))[_0xdc24('0x41')](function(_0x30f659){console[_0xdc24('0x72')](_0xdc24('0x73')+_0x30f659);var _0x232a4d=_0x1bc542[_0xdc24('0x30')][_0xdc24('0x74')]?0x1f4:_0x30f659[_0xdc24('0x75')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0xdc24('0x54'),_0x232a4d,JSON['stringify'](_0x30f659));delete _0x30f659[_0xdc24('0x28')];if(_0x232a4d===0x191){_0x232a4d=0x190;}_0x35555c[_0xdc24('0x19')](_0x232a4d)[_0xdc24('0x29')](_0x1bc542[_0xdc24('0x30')][_0xdc24('0x74')]?{'message':_0xdc24('0x76'),'statusCode':_0x30f659[_0xdc24('0x75')]}:_0x30f659);});};
\ No newline at end of file
+var _0xc0af=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','name','send','index','map','VtigerAccount','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','VIRTUAL','merge','options','findAll','catch','params','includeAll','create','body','find','findOne','VtigerConfiguration','pick','getConfigurations','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','VtigerField','md5','getFields','username','moduleName','remoteUri','serverUrl','accessKey','format','%s/webservice.php','GET','getchallenge','success','login','result','describe','autogenerated','owner','remove','label','startsWith','picklistValues','value','log','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','statusCode','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x117cbe,_0xb89401){var _0x47298f=function(_0x3e9d34){while(--_0x3e9d34){_0x117cbe['push'](_0x117cbe['shift']());}};_0x47298f(++_0xb89401);}(_0xc0af,0x1ab));var _0xfc0a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc0af[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xfc0a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfc0a('0x1'));var jsonpatch=require(_0xfc0a('0x2'));var rp=require('request-promise');var moment=require(_0xfc0a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xfc0a('0x4'));var util=require(_0xfc0a('0x5'));var path=require(_0xfc0a('0x6'));var sox=require(_0xfc0a('0x7'));var csv=require(_0xfc0a('0x8'));var ejs=require(_0xfc0a('0x9'));var fs=require('fs');var fs_extra=require(_0xfc0a('0xa'));var _=require('lodash');var squel=require(_0xfc0a('0xb'));var crypto=require(_0xfc0a('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xfc0a('0x8'));var querystring=require('querystring');var Papa=require(_0xfc0a('0xd'));var Redis=require(_0xfc0a('0xe'));var authService=require(_0xfc0a('0xf'));var qs=require(_0xfc0a('0x10'));var as=require(_0xfc0a('0x11'));var hardwareService=require(_0xfc0a('0x12'));var logger=require(_0xfc0a('0x13'))(_0xfc0a('0x14'));var utils=require(_0xfc0a('0x15'));var config=require(_0xfc0a('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xfc0a('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3b2c57,_0x516140){_0x516140=_0x516140||0xcc;return function(_0x3ceb82){if(_0x3ceb82){return _0x3b2c57['sendStatus'](_0x516140);}return _0x3b2c57['status'](_0x516140)[_0xfc0a('0x18')]();};}function respondWithResult(_0x427508,_0x2ba2df){_0x2ba2df=_0x2ba2df||0xc8;return function(_0x503910){if(_0x503910){return _0x427508[_0xfc0a('0x19')](_0x2ba2df)[_0xfc0a('0x1a')](_0x503910);}};}function respondWithFilteredResult(_0x3f293a,_0x3b3e42){return function(_0xa845ad){if(_0xa845ad){var _0x4724d9=typeof _0x3b3e42[_0xfc0a('0x1b')]==='undefined'&&typeof _0x3b3e42['limit']===_0xfc0a('0x1c');var _0x2b87a4=_0xa845ad[_0xfc0a('0x1d')];var _0x44d3f9=_0x4724d9?0x0:_0x3b3e42[_0xfc0a('0x1b')];var _0x1363af=_0x4724d9?_0xa845ad[_0xfc0a('0x1d')]:_0x3b3e42[_0xfc0a('0x1b')]+_0x3b3e42['limit'];var _0x2d5b16;if(_0x1363af>=_0x2b87a4){_0x1363af=_0x2b87a4;_0x2d5b16=0xc8;}else{_0x2d5b16=0xce;}_0x3f293a[_0xfc0a('0x19')](_0x2d5b16);return _0x3f293a['set'](_0xfc0a('0x1e'),_0x44d3f9+'-'+_0x1363af+'/'+_0x2b87a4)[_0xfc0a('0x1a')](_0xa845ad);}return null;};}function patchUpdates(_0x3b97d4){return function(_0x2ba2a1){try{jsonpatch[_0xfc0a('0x1f')](_0x2ba2a1,_0x3b97d4,!![]);}catch(_0x51de00){return BPromise[_0xfc0a('0x20')](_0x51de00);}return _0x2ba2a1[_0xfc0a('0x21')]();};}function saveUpdates(_0x13c6bc,_0x47bb6a){return function(_0x4a45c3){if(_0x4a45c3){return _0x4a45c3[_0xfc0a('0x22')](_0x13c6bc)[_0xfc0a('0x23')](function(_0x21b9e0){return _0x21b9e0;});}return null;};}function removeEntity(_0x281a0b,_0x4e452e){return function(_0x44c576){if(_0x44c576){return _0x44c576[_0xfc0a('0x24')]()['then'](function(){_0x281a0b[_0xfc0a('0x19')](0xcc)[_0xfc0a('0x18')]();});}};}function handleEntityNotFound(_0x1407f1,_0x1e4888){return function(_0x147972){if(!_0x147972){_0x1407f1[_0xfc0a('0x25')](0x194);}return _0x147972;};}function handleError(_0xb62505,_0x628eb8){_0x628eb8=_0x628eb8||0x1f4;return function(_0x45f697){logger[_0xfc0a('0x26')](_0x45f697['stack']);if(_0x45f697['name']){delete _0x45f697[_0xfc0a('0x27')];}_0xb62505['status'](_0x628eb8)[_0xfc0a('0x28')](_0x45f697);};}exports[_0xfc0a('0x29')]=function(_0x5c69da,_0x3d9715){var _0x2377a5={},_0x4de9d1={},_0x3178cf={'count':0x0,'rows':[]};var _0xc96210=_[_0xfc0a('0x2a')](db[_0xfc0a('0x2b')][_0xfc0a('0x2c')],function(_0x4bb770){return{'name':_0x4bb770['fieldName'],'type':_0x4bb770[_0xfc0a('0x2d')][_0xfc0a('0x2e')]};});_0x4de9d1[_0xfc0a('0x2f')]=_[_0xfc0a('0x2a')](_0xc96210,'name');_0x4de9d1[_0xfc0a('0x30')]=_[_0xfc0a('0x31')](_0x5c69da[_0xfc0a('0x30')]);_0x4de9d1[_0xfc0a('0x32')]=_[_0xfc0a('0x33')](_0x4de9d1[_0xfc0a('0x2f')],_0x4de9d1[_0xfc0a('0x30')]);_0x2377a5[_0xfc0a('0x34')]=_[_0xfc0a('0x33')](_0x4de9d1[_0xfc0a('0x2f')],qs['fields'](_0x5c69da[_0xfc0a('0x30')][_0xfc0a('0x35')]));_0x2377a5[_0xfc0a('0x34')]=_0x2377a5['attributes'][_0xfc0a('0x36')]?_0x2377a5[_0xfc0a('0x34')]:_0x4de9d1['model'];if(!_0x5c69da[_0xfc0a('0x30')][_0xfc0a('0x37')](_0xfc0a('0x38'))){_0x2377a5[_0xfc0a('0x39')]=qs['limit'](_0x5c69da[_0xfc0a('0x30')][_0xfc0a('0x39')]);_0x2377a5['offset']=qs[_0xfc0a('0x1b')](_0x5c69da[_0xfc0a('0x30')][_0xfc0a('0x1b')]);}_0x2377a5[_0xfc0a('0x3a')]=qs[_0xfc0a('0x3b')](_0x5c69da['query'][_0xfc0a('0x3b')]);_0x2377a5[_0xfc0a('0x3c')]=qs[_0xfc0a('0x32')](_['pick'](_0x5c69da[_0xfc0a('0x30')],_0x4de9d1[_0xfc0a('0x32')]),_0xc96210);if(_0x5c69da[_0xfc0a('0x30')][_0xfc0a('0x3d')]){_0x2377a5[_0xfc0a('0x3c')]=_['merge'](_0x2377a5[_0xfc0a('0x3c')],{'$or':_['map'](_0xc96210,function(_0x2c69e4){if(_0x2c69e4[_0xfc0a('0x2d')]!==_0xfc0a('0x3e')){var _0xf5a102={};_0xf5a102[_0x2c69e4[_0xfc0a('0x27')]]={'$like':'%'+_0x5c69da[_0xfc0a('0x30')]['filter']+'%'};return _0xf5a102;}})});}_0x2377a5=_[_0xfc0a('0x3f')]({},_0x2377a5,_0x5c69da[_0xfc0a('0x40')]);var _0x45c42e={'where':_0x2377a5[_0xfc0a('0x3c')]};return db[_0xfc0a('0x2b')]['count'](_0x45c42e)[_0xfc0a('0x23')](function(_0x517542){_0x3178cf[_0xfc0a('0x1d')]=_0x517542;if(_0x5c69da[_0xfc0a('0x30')]['includeAll']){_0x2377a5['include']=[{'all':!![]}];}return db[_0xfc0a('0x2b')][_0xfc0a('0x41')](_0x2377a5);})[_0xfc0a('0x23')](function(_0x2a310b){_0x3178cf['rows']=_0x2a310b;return _0x3178cf;})[_0xfc0a('0x23')](respondWithFilteredResult(_0x3d9715,_0x2377a5))[_0xfc0a('0x42')](handleError(_0x3d9715,null));};exports['show']=function(_0x1b65cc,_0x1b5c05){var _0x5ca04a={'raw':![],'where':{'id':_0x1b65cc[_0xfc0a('0x43')]['id']}},_0x5d164d={};_0x5d164d[_0xfc0a('0x2f')]=_[_0xfc0a('0x31')](db[_0xfc0a('0x2b')][_0xfc0a('0x2c')]);_0x5d164d[_0xfc0a('0x30')]=_['keys'](_0x1b65cc[_0xfc0a('0x30')]);_0x5d164d[_0xfc0a('0x32')]=_[_0xfc0a('0x33')](_0x5d164d[_0xfc0a('0x2f')],_0x5d164d[_0xfc0a('0x30')]);_0x5ca04a[_0xfc0a('0x34')]=_['intersection'](_0x5d164d[_0xfc0a('0x2f')],qs['fields'](_0x1b65cc['query']['fields']));_0x5ca04a['attributes']=_0x5ca04a['attributes']['length']?_0x5ca04a[_0xfc0a('0x34')]:_0x5d164d['model'];if(_0x1b65cc[_0xfc0a('0x30')][_0xfc0a('0x44')]){_0x5ca04a['include']=[{'all':!![]}];}_0x5ca04a=_[_0xfc0a('0x3f')]({},_0x5ca04a,_0x1b65cc[_0xfc0a('0x40')]);return db[_0xfc0a('0x2b')]['find'](_0x5ca04a)[_0xfc0a('0x23')](handleEntityNotFound(_0x1b5c05,null))[_0xfc0a('0x23')](respondWithResult(_0x1b5c05,null))[_0xfc0a('0x42')](handleError(_0x1b5c05,null));};exports[_0xfc0a('0x45')]=function(_0x51838c,_0x265ff5){return db[_0xfc0a('0x2b')][_0xfc0a('0x45')](_0x51838c[_0xfc0a('0x46')],{})[_0xfc0a('0x23')](respondWithResult(_0x265ff5,0xc9))[_0xfc0a('0x42')](handleError(_0x265ff5,null));};exports['update']=function(_0x387627,_0x41be96){if(_0x387627[_0xfc0a('0x46')]['id']){delete _0x387627[_0xfc0a('0x46')]['id'];}return db[_0xfc0a('0x2b')][_0xfc0a('0x47')]({'where':{'id':_0x387627[_0xfc0a('0x43')]['id']}})['then'](handleEntityNotFound(_0x41be96,null))['then'](saveUpdates(_0x387627['body'],null))[_0xfc0a('0x23')](respondWithResult(_0x41be96,null))[_0xfc0a('0x42')](handleError(_0x41be96,null));};exports[_0xfc0a('0x24')]=function(_0x217977,_0x2fc00f){return db[_0xfc0a('0x2b')][_0xfc0a('0x47')]({'where':{'id':_0x217977[_0xfc0a('0x43')]['id']}})[_0xfc0a('0x23')](handleEntityNotFound(_0x2fc00f,null))['then'](removeEntity(_0x2fc00f,null))[_0xfc0a('0x42')](handleError(_0x2fc00f,null));};exports['getConfigurations']=function(_0x4e975f,_0x370d04,_0x5c8e91){var _0x5bf24b={};var _0x46da66={};var _0x4e6ee0;var _0x1f6813;return db[_0xfc0a('0x2b')][_0xfc0a('0x48')]({'where':{'id':_0x4e975f[_0xfc0a('0x43')]['id']}})[_0xfc0a('0x23')](handleEntityNotFound(_0x370d04,null))[_0xfc0a('0x23')](function(_0x1fbe0b){if(_0x1fbe0b){_0x4e6ee0=_0x1fbe0b;_0x46da66['model']=_[_0xfc0a('0x31')](db[_0xfc0a('0x49')][_0xfc0a('0x2c')]);_0x46da66[_0xfc0a('0x30')]=_[_0xfc0a('0x31')](_0x4e975f['query']);_0x46da66['filters']=_[_0xfc0a('0x33')](_0x46da66[_0xfc0a('0x2f')],_0x46da66[_0xfc0a('0x30')]);_0x5bf24b['attributes']=_[_0xfc0a('0x33')](_0x46da66['model'],qs[_0xfc0a('0x35')](_0x4e975f[_0xfc0a('0x30')][_0xfc0a('0x35')]));_0x5bf24b[_0xfc0a('0x34')]=_0x5bf24b[_0xfc0a('0x34')]['length']?_0x5bf24b[_0xfc0a('0x34')]:_0x46da66[_0xfc0a('0x2f')];_0x5bf24b[_0xfc0a('0x3a')]=qs['sort'](_0x4e975f[_0xfc0a('0x30')][_0xfc0a('0x3b')]);_0x5bf24b[_0xfc0a('0x3c')]=qs['filters'](_[_0xfc0a('0x4a')](_0x4e975f['query'],_0x46da66[_0xfc0a('0x32')]));if(_0x4e975f[_0xfc0a('0x30')][_0xfc0a('0x3d')]){_0x5bf24b[_0xfc0a('0x3c')]=_[_0xfc0a('0x3f')](_0x5bf24b[_0xfc0a('0x3c')],{'$or':_[_0xfc0a('0x2a')](_0x5bf24b[_0xfc0a('0x34')],function(_0x2d30bd){var _0x1f5d70={};_0x1f5d70[_0x2d30bd]={'$like':'%'+_0x4e975f[_0xfc0a('0x30')][_0xfc0a('0x3d')]+'%'};return _0x1f5d70;})});}_0x5bf24b=_[_0xfc0a('0x3f')]({},_0x5bf24b,_0x4e975f['options']);return _0x4e6ee0[_0xfc0a('0x4b')](_0x5bf24b);}})[_0xfc0a('0x23')](function(_0x48b38a){if(_0x48b38a){_0x1f6813=_0x48b38a[_0xfc0a('0x36')];if(!_0x4e975f[_0xfc0a('0x30')]['hasOwnProperty'](_0xfc0a('0x38'))){_0x5bf24b[_0xfc0a('0x39')]=qs[_0xfc0a('0x39')](_0x4e975f[_0xfc0a('0x30')][_0xfc0a('0x39')]);_0x5bf24b[_0xfc0a('0x1b')]=qs[_0xfc0a('0x1b')](_0x4e975f[_0xfc0a('0x30')][_0xfc0a('0x1b')]);}return _0x4e6ee0[_0xfc0a('0x4b')](_0x5bf24b);}})[_0xfc0a('0x23')](function(_0x2a3386){if(_0x2a3386){return _0x2a3386?{'count':_0x1f6813,'rows':_0x2a3386}:null;}})[_0xfc0a('0x23')](respondWithResult(_0x370d04,null))['catch'](handleError(_0x370d04,null));};exports[_0xfc0a('0x4c')]=function(_0x3d4fd2,_0x5bc7ef,_0xf6e160){if(_0x3d4fd2[_0xfc0a('0x46')]['id']){delete _0x3d4fd2[_0xfc0a('0x46')]['id'];}return db[_0xfc0a('0x2b')][_0xfc0a('0x48')]({'where':{'id':_0x3d4fd2[_0xfc0a('0x43')]['id']}})['then'](handleEntityNotFound(_0x5bc7ef,null))[_0xfc0a('0x23')](function(_0x2dadf9){if(_0x2dadf9){_0x3d4fd2[_0xfc0a('0x46')][_0xfc0a('0x4d')]=_0x2dadf9['id'];_0x3d4fd2['body'][_0xfc0a('0x4e')]=integrations['getSubjects'](_0x3d4fd2[_0xfc0a('0x46')][_0xfc0a('0x4f')],_0x3d4fd2['body'][_0xfc0a('0x2d')]);_0x3d4fd2[_0xfc0a('0x46')][_0xfc0a('0x50')]=integrations[_0xfc0a('0x51')](_0x3d4fd2['body'][_0xfc0a('0x4f')],_0x3d4fd2[_0xfc0a('0x46')][_0xfc0a('0x2d')]);return db['VtigerConfiguration'][_0xfc0a('0x45')](_0x3d4fd2[_0xfc0a('0x46')],{'include':[{'model':db[_0xfc0a('0x52')],'as':'Subjects'},{'model':db['VtigerField'],'as':_0xfc0a('0x50')}]});}return null;})[_0xfc0a('0x23')](respondWithResult(_0x5bc7ef,null))[_0xfc0a('0x42')](handleError(_0x5bc7ef,null));};var md5=require(_0xfc0a('0x53'));exports[_0xfc0a('0x54')]=function(_0x4df4b2,_0x36891b,_0x1a3ff0){var _0x4cdcd9=null;var _0x151ef6=null;var _0x3a8e9e=null;var _0x44701a=null;var _0x4fa17f='';return db[_0xfc0a('0x2b')][_0xfc0a('0x48')]({'where':{'id':_0x4df4b2[_0xfc0a('0x43')]['id']},'attributes':['id',_0xfc0a('0x27'),_0xfc0a('0x55'),'description',_0xfc0a('0x56'),_0xfc0a('0x57'),_0xfc0a('0x58'),_0xfc0a('0x59')]})[_0xfc0a('0x23')](handleEntityNotFound(_0x36891b,null))[_0xfc0a('0x23')](function(_0x4d6427){if(_0x4d6427){_0x4cdcd9=_0x4d6427[_0xfc0a('0x55')];_0x151ef6=_0x4d6427[_0xfc0a('0x59')];_0x3a8e9e=_0x4d6427[_0xfc0a('0x56')];_0x4fa17f=_0x4d6427[_0xfc0a('0x57')];var _0x511ed6=_0x4fa17f['slice'](-0x1);if(_0x511ed6==='/'){_0x4fa17f=_0x4fa17f['substring'](0x0,_0x4fa17f['lastIndexOf'](_0x511ed6));}_0x44701a=util[_0xfc0a('0x5a')](_0xfc0a('0x5b'),_0x4fa17f);var _0x9d1968={'method':_0xfc0a('0x5c'),'uri':_0x44701a,'qs':{'operation':_0xfc0a('0x5d'),'username':_0x4d6427[_0xfc0a('0x55')]},'json':!![]};return rp(_0x9d1968);}})[_0xfc0a('0x23')](function(_0x1a2082){if(_0x1a2082[_0xfc0a('0x5e')]){var _0x5176d7={'method':'POST','uri':_0x44701a,'form':{'operation':_0xfc0a('0x5f'),'username':_0x4cdcd9,'accessKey':md5(_0x1a2082[_0xfc0a('0x60')]['token']+_0x151ef6)},'json':!![]};return rp(_0x5176d7);}})[_0xfc0a('0x23')](function(_0x2f5d35){if(_0x2f5d35['success']){var _0x1cd5aa={'method':_0xfc0a('0x5c'),'uri':_0x44701a,'qs':{'operation':_0xfc0a('0x61'),'username':_0x4cdcd9,'sessionName':_0x2f5d35[_0xfc0a('0x60')]['sessionName'],'elementType':_0x3a8e9e},'json':!![]};return rp(_0x1cd5aa);}})['then'](function(_0xa53800){if(_0xa53800[_0xfc0a('0x5e')]){var _0x1637a7=[_0xfc0a('0x62'),'reference',_0xfc0a('0x63')];_['remove'](_0xa53800['result'][_0xfc0a('0x35')],function(_0x429fb1){return _0x1637a7['includes'](_0x429fb1[_0xfc0a('0x2d')][_0xfc0a('0x27')]);});_[_0xfc0a('0x64')](_0xa53800[_0xfc0a('0x60')][_0xfc0a('0x35')],function(_0xe7430b){return _0xe7430b['editable']==='false';});return{'count':_0xa53800['result'][_0xfc0a('0x35')][_0xfc0a('0x36')],'rows':_['map'](_0xa53800[_0xfc0a('0x60')][_0xfc0a('0x35')],function(_0x40a98c){return{'id':_0x40a98c[_0xfc0a('0x27')],'name':_0x40a98c[_0xfc0a('0x65')],'custom':_[_0xfc0a('0x66')](_0x40a98c[_0xfc0a('0x27')],'cf_')?!![]:![],'options':_0x40a98c[_0xfc0a('0x2d')]['name']==='picklist'&&_0x40a98c[_0xfc0a('0x2d')][_0xfc0a('0x67')][_0xfc0a('0x36')]>0x0?_[_0xfc0a('0x2a')](_0x40a98c['type'][_0xfc0a('0x67')],function(_0x16c30c){return{'name':_0x16c30c[_0xfc0a('0x65')],'value':_0x16c30c[_0xfc0a('0x68')]};}):[]};})};}})['then'](respondWithResult(_0x36891b,null))[_0xfc0a('0x42')](function(_0x1f7a82){console[_0xfc0a('0x69')]('vTiger\x20error:\x20'+_0x1f7a82);var _0x41c092=_0x4df4b2[_0xfc0a('0x30')]['test']?0x1f4:_0x1f7a82['statusCode']||0x1f4;logger[_0xfc0a('0x26')](_0xfc0a('0x6a'),_0xfc0a('0x54'),_0x41c092,JSON[_0xfc0a('0x6b')](_0x1f7a82));delete _0x1f7a82['name'];if(_0x41c092===0x191){_0x41c092=0x190;}_0x36891b[_0xfc0a('0x19')](_0x41c092)['send'](_0x4df4b2[_0xfc0a('0x30')][_0xfc0a('0x6c')]?{'message':_0xfc0a('0x6d'),'statusCode':_0x1f7a82[_0xfc0a('0x6e')]}:_0x1f7a82);});};
\ No newline at end of file
index 6c75c4f..5cc9d85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9505=['./intVtigerAccount.attributes','../../components/integrations/configuration','exports','VtigerAccount','int_vtiger_accounts','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9505,0x1e5));var _0x5950=function(_0x516d3c,_0x3992c5){_0x516d3c=_0x516d3c-0x0;var _0x33c02e=_0x9505[_0x516d3c];return _0x33c02e;};'use strict';var _=require(_0x5950('0x0'));var util=require(_0x5950('0x1'));var logger=require('../../config/logger')(_0x5950('0x2'));var moment=require(_0x5950('0x3'));var BPromise=require(_0x5950('0x4'));var rp=require(_0x5950('0x5'));var fs=require('fs');var path=require(_0x5950('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5950('0x7'));var integrations=require(_0x5950('0x8'));module[_0x5950('0x9')]=function(_0x3a5973,_0x4aa518){return _0x3a5973['define'](_0x5950('0xa'),attributes,{'tableName':_0x5950('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x87a3=['VtigerAccount','int_vtiger_accounts','lodash','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','define'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x87a3,0x7a));var _0x387a=function(_0x5e36d1,_0x471178){_0x5e36d1=_0x5e36d1-0x0;var _0x950b9e=_0x87a3[_0x5e36d1];return _0x950b9e;};'use strict';var _=require(_0x387a('0x0'));var util=require('util');var logger=require(_0x387a('0x1'))(_0x387a('0x2'));var moment=require('moment');var BPromise=require(_0x387a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x387a('0x4'));var rimraf=require(_0x387a('0x5'));var config=require(_0x387a('0x6'));var attributes=require(_0x387a('0x7'));var integrations=require(_0x387a('0x8'));module['exports']=function(_0x5696da,_0x325891){return _0x5696da[_0x387a('0x9')](_0x387a('0xa'),attributes,{'tableName':_0x387a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 05b806d..710fe95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1775=['stringify','error','code','VtigerAccount,\x20%s,\x20%s','message','result','catch','GetVtigerAccount','VtigerAccount','options','raw','where','attributes','limit','map','include','model','ShowVtigerAccount','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x551ff1,_0x1f3582){var _0x5743c7=function(_0x594ae3){while(--_0x594ae3){_0x551ff1['push'](_0x551ff1['shift']());}};_0x5743c7(++_0x1f3582);}(_0x1775,0x1db));var _0x5177=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x1775[_0x17d9e3];return _0x14192d;};'use strict';var _=require('lodash');var util=require(_0x5177('0x0'));var moment=require(_0x5177('0x1'));var BPromise=require(_0x5177('0x2'));var rs=require(_0x5177('0x3'));var fs=require('fs');var Redis=require(_0x5177('0x4'));var db=require(_0x5177('0x5'))['db'];var utils=require(_0x5177('0x6'));var logger=require(_0x5177('0x7'))(_0x5177('0x8'));var config=require(_0x5177('0x9'));var jayson=require(_0x5177('0xa'));var client=jayson[_0x5177('0xb')][_0x5177('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2ac1c6,_0x300b43,_0x245c12){return new BPromise(function(_0x363611,_0x3ce288){return client[_0x5177('0xd')](_0x2ac1c6,_0x245c12)[_0x5177('0xe')](function(_0x2c23d8){logger[_0x5177('0xf')]('VtigerAccount,\x20%s,\x20%s',_0x300b43,'request\x20sent');logger[_0x5177('0x10')](_0x5177('0x11'),_0x300b43,_0x5177('0x12'),JSON[_0x5177('0x13')](_0x2c23d8));if(_0x2c23d8[_0x5177('0x14')]){if(_0x2c23d8['error'][_0x5177('0x15')]===0x1f4){logger[_0x5177('0x14')](_0x5177('0x16'),_0x300b43,_0x2c23d8[_0x5177('0x14')][_0x5177('0x17')]);return _0x3ce288(_0x2c23d8[_0x5177('0x14')][_0x5177('0x17')]);}logger[_0x5177('0x14')](_0x5177('0x16'),_0x300b43,_0x2c23d8[_0x5177('0x14')][_0x5177('0x17')]);return _0x363611(_0x2c23d8[_0x5177('0x14')][_0x5177('0x17')]);}else{logger[_0x5177('0xf')](_0x5177('0x16'),_0x300b43,_0x5177('0x12'));_0x363611(_0x2c23d8[_0x5177('0x18')][_0x5177('0x17')]);}})[_0x5177('0x19')](function(_0x50ce2c){logger[_0x5177('0x14')](_0x5177('0x16'),_0x300b43,_0x50ce2c);_0x3ce288(_0x50ce2c);});});}exports[_0x5177('0x1a')]=function(_0x1b4102){var _0x5f5bd4=this;return new Promise(function(_0x3e6944,_0x2ebf91){return db[_0x5177('0x1b')]['findAll']({'raw':_0x1b4102[_0x5177('0x1c')]?_0x1b4102['options'][_0x5177('0x1d')]===undefined?!![]:![]:!![],'where':_0x1b4102[_0x5177('0x1c')]?_0x1b4102[_0x5177('0x1c')][_0x5177('0x1e')]||null:null,'attributes':_0x1b4102[_0x5177('0x1c')]?_0x1b4102[_0x5177('0x1c')][_0x5177('0x1f')]||null:null,'limit':_0x1b4102[_0x5177('0x1c')]?_0x1b4102[_0x5177('0x1c')][_0x5177('0x20')]||null:null,'include':_0x1b4102[_0x5177('0x1c')]?_0x1b4102[_0x5177('0x1c')]['include']?_[_0x5177('0x21')](_0x1b4102['options'][_0x5177('0x22')],function(_0x2c68d8){return{'model':db[_0x2c68d8[_0x5177('0x23')]],'as':_0x2c68d8['as'],'attributes':_0x2c68d8[_0x5177('0x1f')],'include':_0x2c68d8['include']?_[_0x5177('0x21')](_0x2c68d8['include'],function(_0x564139){return{'model':db[_0x564139[_0x5177('0x23')]],'as':_0x564139['as'],'attributes':_0x564139[_0x5177('0x1f')],'include':_0x564139['include']?_[_0x5177('0x21')](_0x564139['include'],function(_0x231d35){return{'model':db[_0x231d35[_0x5177('0x23')]],'as':_0x231d35['as'],'attributes':_0x231d35['attributes']};}):[]};}):[]};}):[]:[]})[_0x5177('0xe')](function(_0x2554ec){logger[_0x5177('0xf')](_0x5177('0x1a'),_0x1b4102);logger[_0x5177('0x10')](_0x5177('0x1a'),_0x1b4102,JSON['stringify'](_0x2554ec));_0x3e6944(_0x2554ec);})['catch'](function(_0x45cf20){logger[_0x5177('0x14')](_0x5177('0x1a'),_0x45cf20[_0x5177('0x17')],_0x1b4102);_0x2ebf91(_0x5f5bd4[_0x5177('0x14')](0x1f4,_0x45cf20[_0x5177('0x17')]));});});};exports[_0x5177('0x24')]=function(_0x72dced){var _0x49f6f1=this;return new Promise(function(_0x42e1db,_0x2233a2){return db['VtigerAccount'][_0x5177('0x25')]({'raw':_0x72dced['options']?_0x72dced[_0x5177('0x1c')][_0x5177('0x1d')]===undefined?!![]:![]:!![],'where':_0x72dced[_0x5177('0x1c')]?_0x72dced['options']['where']||null:null,'attributes':_0x72dced[_0x5177('0x1c')]?_0x72dced[_0x5177('0x1c')][_0x5177('0x1f')]||null:null,'include':_0x72dced[_0x5177('0x1c')]?_0x72dced[_0x5177('0x1c')][_0x5177('0x22')]?_[_0x5177('0x21')](_0x72dced[_0x5177('0x1c')]['include'],function(_0x459ac6){return{'model':db[_0x459ac6[_0x5177('0x23')]],'as':_0x459ac6['as'],'attributes':_0x459ac6['attributes'],'include':_0x459ac6[_0x5177('0x22')]?_[_0x5177('0x21')](_0x459ac6[_0x5177('0x22')],function(_0x8727c6){return{'model':db[_0x8727c6[_0x5177('0x23')]],'as':_0x8727c6['as'],'attributes':_0x8727c6[_0x5177('0x1f')],'include':_0x8727c6['include']?_[_0x5177('0x21')](_0x8727c6[_0x5177('0x22')],function(_0x28b1d5){return{'model':db[_0x28b1d5[_0x5177('0x23')]],'as':_0x28b1d5['as'],'attributes':_0x28b1d5[_0x5177('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x5177('0xe')](function(_0x1bb1e3){logger['info'](_0x5177('0x24'),_0x72dced);logger[_0x5177('0x10')]('ShowVtigerAccount',_0x72dced,JSON['stringify'](_0x1bb1e3));_0x42e1db(_0x1bb1e3);})[_0x5177('0x19')](function(_0x188cec){logger[_0x5177('0x14')](_0x5177('0x24'),_0x188cec[_0x5177('0x17')],_0x72dced);_0x2233a2(_0x49f6f1[_0x5177('0x14')](0x1f4,_0x188cec[_0x5177('0x17')]));});});};
\ No newline at end of file
+var _0x4fc2=['rpc','../../config/environment','client','http','request','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','findAll','options','where','attributes','include','model','map','GetVtigerAccount','VtigerAccount','find','raw','ShowVtigerAccount','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x5d99dd,_0x4bb40b){var _0x148a26=function(_0x25df5f){while(--_0x25df5f){_0x5d99dd['push'](_0x5d99dd['shift']());}};_0x148a26(++_0x4bb40b);}(_0x4fc2,0x111));var _0x24fc=function(_0x10d07b,_0xa771c5){_0x10d07b=_0x10d07b-0x0;var _0x2c880e=_0x4fc2[_0x10d07b];return _0x2c880e;};'use strict';var _=require(_0x24fc('0x0'));var util=require(_0x24fc('0x1'));var moment=require(_0x24fc('0x2'));var BPromise=require(_0x24fc('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x24fc('0x4'));var db=require(_0x24fc('0x5'))['db'];var utils=require(_0x24fc('0x6'));var logger=require('../../config/logger')(_0x24fc('0x7'));var config=require(_0x24fc('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x24fc('0x9')][_0x24fc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4889f4,_0x115851,_0x22a0c8){return new BPromise(function(_0x220f9a,_0x123eff){return client[_0x24fc('0xb')](_0x4889f4,_0x22a0c8)[_0x24fc('0xc')](function(_0x5afdf1){logger[_0x24fc('0xd')](_0x24fc('0xe'),_0x115851,_0x24fc('0xf'));logger[_0x24fc('0x10')](_0x24fc('0x11'),_0x115851,_0x24fc('0xf'),JSON[_0x24fc('0x12')](_0x5afdf1));if(_0x5afdf1[_0x24fc('0x13')]){if(_0x5afdf1['error'][_0x24fc('0x14')]===0x1f4){logger[_0x24fc('0x13')]('VtigerAccount,\x20%s,\x20%s',_0x115851,_0x5afdf1[_0x24fc('0x13')][_0x24fc('0x15')]);return _0x123eff(_0x5afdf1[_0x24fc('0x13')][_0x24fc('0x15')]);}logger[_0x24fc('0x13')](_0x24fc('0xe'),_0x115851,_0x5afdf1['error'][_0x24fc('0x15')]);return _0x220f9a(_0x5afdf1[_0x24fc('0x13')][_0x24fc('0x15')]);}else{logger[_0x24fc('0xd')]('VtigerAccount,\x20%s,\x20%s',_0x115851,_0x24fc('0xf'));_0x220f9a(_0x5afdf1['result'][_0x24fc('0x15')]);}})[_0x24fc('0x16')](function(_0x218fb6){logger[_0x24fc('0x13')](_0x24fc('0xe'),_0x115851,_0x218fb6);_0x123eff(_0x218fb6);});});}exports['GetVtigerAccount']=function(_0x23873c){var _0x1cb3d0=this;return new Promise(function(_0x6cfa0a,_0x8ac114){return db['VtigerAccount'][_0x24fc('0x17')]({'raw':_0x23873c[_0x24fc('0x18')]?_0x23873c[_0x24fc('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x23873c[_0x24fc('0x18')]?_0x23873c[_0x24fc('0x18')][_0x24fc('0x19')]||null:null,'attributes':_0x23873c[_0x24fc('0x18')]?_0x23873c['options'][_0x24fc('0x1a')]||null:null,'limit':_0x23873c['options']?_0x23873c[_0x24fc('0x18')]['limit']||null:null,'include':_0x23873c[_0x24fc('0x18')]?_0x23873c[_0x24fc('0x18')][_0x24fc('0x1b')]?_['map'](_0x23873c[_0x24fc('0x18')]['include'],function(_0x35a9c7){return{'model':db[_0x35a9c7[_0x24fc('0x1c')]],'as':_0x35a9c7['as'],'attributes':_0x35a9c7[_0x24fc('0x1a')],'include':_0x35a9c7[_0x24fc('0x1b')]?_[_0x24fc('0x1d')](_0x35a9c7[_0x24fc('0x1b')],function(_0x3f0875){return{'model':db[_0x3f0875[_0x24fc('0x1c')]],'as':_0x3f0875['as'],'attributes':_0x3f0875[_0x24fc('0x1a')],'include':_0x3f0875[_0x24fc('0x1b')]?_['map'](_0x3f0875[_0x24fc('0x1b')],function(_0x16f27f){return{'model':db[_0x16f27f[_0x24fc('0x1c')]],'as':_0x16f27f['as'],'attributes':_0x16f27f['attributes']};}):[]};}):[]};}):[]:[]})[_0x24fc('0xc')](function(_0x3d1ec8){logger[_0x24fc('0xd')](_0x24fc('0x1e'),_0x23873c);logger[_0x24fc('0x10')](_0x24fc('0x1e'),_0x23873c,JSON['stringify'](_0x3d1ec8));_0x6cfa0a(_0x3d1ec8);})[_0x24fc('0x16')](function(_0x29a461){logger[_0x24fc('0x13')](_0x24fc('0x1e'),_0x29a461[_0x24fc('0x15')],_0x23873c);_0x8ac114(_0x1cb3d0['error'](0x1f4,_0x29a461['message']));});});};exports['ShowVtigerAccount']=function(_0x3df6f4){var _0x574ba3=this;return new Promise(function(_0x3f2464,_0x3e6389){return db[_0x24fc('0x1f')][_0x24fc('0x20')]({'raw':_0x3df6f4['options']?_0x3df6f4[_0x24fc('0x18')][_0x24fc('0x21')]===undefined?!![]:![]:!![],'where':_0x3df6f4['options']?_0x3df6f4[_0x24fc('0x18')][_0x24fc('0x19')]||null:null,'attributes':_0x3df6f4['options']?_0x3df6f4['options'][_0x24fc('0x1a')]||null:null,'include':_0x3df6f4['options']?_0x3df6f4[_0x24fc('0x18')][_0x24fc('0x1b')]?_['map'](_0x3df6f4[_0x24fc('0x18')][_0x24fc('0x1b')],function(_0x3b2862){return{'model':db[_0x3b2862[_0x24fc('0x1c')]],'as':_0x3b2862['as'],'attributes':_0x3b2862[_0x24fc('0x1a')],'include':_0x3b2862[_0x24fc('0x1b')]?_[_0x24fc('0x1d')](_0x3b2862[_0x24fc('0x1b')],function(_0x379a4a){return{'model':db[_0x379a4a['model']],'as':_0x379a4a['as'],'attributes':_0x379a4a[_0x24fc('0x1a')],'include':_0x379a4a[_0x24fc('0x1b')]?_[_0x24fc('0x1d')](_0x379a4a[_0x24fc('0x1b')],function(_0x242bd5){return{'model':db[_0x242bd5['model']],'as':_0x242bd5['as'],'attributes':_0x242bd5['attributes']};}):[]};}):[]};}):[]:[]})[_0x24fc('0xc')](function(_0x5d48fe){logger[_0x24fc('0xd')](_0x24fc('0x22'),_0x3df6f4);logger[_0x24fc('0x10')](_0x24fc('0x22'),_0x3df6f4,JSON['stringify'](_0x5d48fe));_0x3f2464(_0x5d48fe);})[_0x24fc('0x16')](function(_0x4f4ec8){logger[_0x24fc('0x13')](_0x24fc('0x22'),_0x4f4ec8[_0x24fc('0x15')],_0x3df6f4);_0x3e6389(_0x574ba3[_0x24fc('0x13')](0x1f4,_0x4f4ec8[_0x24fc('0x15')]));});});};
\ No newline at end of file
index ff26050..2257409 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c22=['getDescriptions','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','/:id','getFields','getSubjects','/:id/descriptions'];(function(_0x4e9bde,_0x1d5e21){var _0x170238=function(_0xe1a847){while(--_0xe1a847){_0x4e9bde['push'](_0x4e9bde['shift']());}};_0x170238(++_0x1d5e21);}(_0x1c22,0x1a5));var _0x21c2=function(_0x4d201c,_0x394e9d){_0x4d201c=_0x4d201c-0x0;var _0x5e3d28=_0x1c22[_0x4d201c];return _0x5e3d28;};'use strict';var multer=require(_0x21c2('0x0'));var util=require(_0x21c2('0x1'));var path=require(_0x21c2('0x2'));var timeout=require(_0x21c2('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x21c2('0x4'));var auth=require(_0x21c2('0x5'));var interaction=require(_0x21c2('0x6'));var config=require(_0x21c2('0x7'));var controller=require(_0x21c2('0x8'));router[_0x21c2('0x9')]('/',auth[_0x21c2('0xa')](),controller[_0x21c2('0xb')]);router['get'](_0x21c2('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x21c2('0x9')]('/:id/fields',auth['isAuthenticated'](),controller[_0x21c2('0xd')]);router[_0x21c2('0x9')]('/:id/subjects',auth['isAuthenticated'](),controller[_0x21c2('0xe')]);router[_0x21c2('0x9')](_0x21c2('0xf'),auth['isAuthenticated'](),controller[_0x21c2('0x10')]);router[_0x21c2('0x11')]('/',auth[_0x21c2('0xa')](),controller[_0x21c2('0x12')]);router[_0x21c2('0x13')](_0x21c2('0xc'),auth[_0x21c2('0xa')](),controller[_0x21c2('0x14')]);router[_0x21c2('0x15')]('/:id',auth[_0x21c2('0xa')](),controller[_0x21c2('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xc4c9=['../../components/interaction/service','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc4c9,0x14a));var _0x9c4c=function(_0x3e5eb2,_0x48bbbb){_0x3e5eb2=_0x3e5eb2-0x0;var _0x5ee004=_0xc4c9[_0x3e5eb2];return _0x5ee004;};'use strict';var multer=require(_0x9c4c('0x0'));var util=require(_0x9c4c('0x1'));var path=require(_0x9c4c('0x2'));var timeout=require(_0x9c4c('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x9c4c('0x4'));var auth=require(_0x9c4c('0x5'));var interaction=require(_0x9c4c('0x6'));var config=require('../../config/environment');var controller=require('./intVtigerConfiguration.controller');router[_0x9c4c('0x7')]('/',auth[_0x9c4c('0x8')](),controller[_0x9c4c('0x9')]);router['get'](_0x9c4c('0xa'),auth['isAuthenticated'](),controller[_0x9c4c('0xb')]);router['get'](_0x9c4c('0xc'),auth[_0x9c4c('0x8')](),controller[_0x9c4c('0xd')]);router[_0x9c4c('0x7')](_0x9c4c('0xe'),auth[_0x9c4c('0x8')](),controller[_0x9c4c('0xf')]);router[_0x9c4c('0x7')]('/:id/descriptions',auth[_0x9c4c('0x8')](),controller[_0x9c4c('0x10')]);router[_0x9c4c('0x11')]('/',auth[_0x9c4c('0x8')](),controller[_0x9c4c('0x12')]);router[_0x9c4c('0x13')](_0x9c4c('0xa'),auth[_0x9c4c('0x8')](),controller[_0x9c4c('0x14')]);router[_0x9c4c('0x15')](_0x9c4c('0xa'),auth[_0x9c4c('0x8')](),controller[_0x9c4c('0x16')]);module[_0x9c4c('0x17')]=router;
\ No newline at end of file
index 9af1173..59aecee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ed3=['exports','sequelize'];(function(_0x353ddb,_0x9ff083){var _0x3cbf2e=function(_0x5cf4ff){while(--_0x5cf4ff){_0x353ddb['push'](_0x353ddb['shift']());}};_0x3cbf2e(++_0x9ff083);}(_0x3ed3,0xe1));var _0x33ed=function(_0x2d3507,_0x199d09){_0x2d3507=_0x2d3507-0x0;var _0xb94ee4=_0x3ed3[_0x2d3507];return _0xb94ee4;};'use strict';var Sequelize=require(_0x33ed('0x0'));module[_0x33ed('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xcd02=['exports','STRING','sequelize'];(function(_0x2113d7,_0x530921){var _0xb0102e=function(_0x78742a){while(--_0x78742a){_0x2113d7['push'](_0x2113d7['shift']());}};_0xb0102e(++_0x530921);}(_0xcd02,0x18e));var _0x2cd0=function(_0x8c16e4,_0x2e0c29){_0x8c16e4=_0x8c16e4-0x0;var _0x44455b=_0xcd02[_0x8c16e4];return _0x44455b;};'use strict';var Sequelize=require(_0x2cd0('0x0'));module[_0x2cd0('0x1')]={'name':{'type':Sequelize[_0x2cd0('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f28d13a..a6ee940 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9271=['set','Content-Range','apply','reject','save','update','then','destroy','name','send','index','map','VtigerConfiguration','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','type','VIRTUAL','merge','includeAll','findAll','show','keys','include','catch','create','body','find','params','getFields','findOne','VtigerField','length','getSubjects','options','getDescriptions','zip-dir','request-promise','moment','mustache','util','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','end','status','limit','undefined','count','offset'];(function(_0x2c8139,_0xfe5754){var _0x553b48=function(_0x2f6715){while(--_0x2f6715){_0x2c8139['push'](_0x2c8139['shift']());}};_0x553b48(++_0xfe5754);}(_0x9271,0x15c));var _0x1927=function(_0x2798d2,_0x55ca2a){_0x2798d2=_0x2798d2-0x0;var _0x1aa353=_0x9271[_0x2798d2];return _0x1aa353;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1927('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1927('0x1'));var moment=require(_0x1927('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x1927('0x3'));var util=require(_0x1927('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0x1927('0x5'));var ejs=require(_0x1927('0x6'));var fs=require('fs');var fs_extra=require(_0x1927('0x7'));var _=require(_0x1927('0x8'));var squel=require('squel');var crypto=require(_0x1927('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x1927('0xa'));var toCsv=require(_0x1927('0x5'));var querystring=require(_0x1927('0xb'));var Papa=require(_0x1927('0xc'));var Redis=require(_0x1927('0xd'));var authService=require(_0x1927('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x1927('0xf'));var hardwareService=require(_0x1927('0x10'));var logger=require(_0x1927('0x11'))(_0x1927('0x12'));var utils=require(_0x1927('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3f0ba2,_0x41e3e8){_0x41e3e8=_0x41e3e8||0xcc;return function(_0x3b0bd7){if(_0x3b0bd7){return _0x3f0ba2[_0x1927('0x14')](_0x41e3e8);}return _0x3f0ba2['status'](_0x41e3e8)[_0x1927('0x15')]();};}function respondWithResult(_0x166ad5,_0x23983f){_0x23983f=_0x23983f||0xc8;return function(_0x35dd68){if(_0x35dd68){return _0x166ad5[_0x1927('0x16')](_0x23983f)['json'](_0x35dd68);}};}function respondWithFilteredResult(_0x3827ea,_0x8c6000){return function(_0x3f9b21){if(_0x3f9b21){var _0x4f4de6=typeof _0x8c6000['offset']==='undefined'&&typeof _0x8c6000[_0x1927('0x17')]===_0x1927('0x18');var _0x1a8986=_0x3f9b21[_0x1927('0x19')];var _0x1a4ae0=_0x4f4de6?0x0:_0x8c6000[_0x1927('0x1a')];var _0x2886ba=_0x4f4de6?_0x3f9b21[_0x1927('0x19')]:_0x8c6000[_0x1927('0x1a')]+_0x8c6000[_0x1927('0x17')];var _0x100a3c;if(_0x2886ba>=_0x1a8986){_0x2886ba=_0x1a8986;_0x100a3c=0xc8;}else{_0x100a3c=0xce;}_0x3827ea[_0x1927('0x16')](_0x100a3c);return _0x3827ea[_0x1927('0x1b')](_0x1927('0x1c'),_0x1a4ae0+'-'+_0x2886ba+'/'+_0x1a8986)['json'](_0x3f9b21);}return null;};}function patchUpdates(_0x3a599a){return function(_0x22487d){try{jsonpatch[_0x1927('0x1d')](_0x22487d,_0x3a599a,!![]);}catch(_0x59d65e){return BPromise[_0x1927('0x1e')](_0x59d65e);}return _0x22487d[_0x1927('0x1f')]();};}function saveUpdates(_0x3ae394,_0x16178b){return function(_0x438fdf){if(_0x438fdf){return _0x438fdf[_0x1927('0x20')](_0x3ae394)[_0x1927('0x21')](function(_0x2ad9ee){return _0x2ad9ee;});}return null;};}function removeEntity(_0xce2337,_0x914c70){return function(_0x4e5dcb){if(_0x4e5dcb){return _0x4e5dcb[_0x1927('0x22')]()[_0x1927('0x21')](function(){_0xce2337[_0x1927('0x16')](0xcc)[_0x1927('0x15')]();});}};}function handleEntityNotFound(_0xb84b2f,_0x399a18){return function(_0x576448){if(!_0x576448){_0xb84b2f[_0x1927('0x14')](0x194);}return _0x576448;};}function handleError(_0x2a1887,_0x51b786){_0x51b786=_0x51b786||0x1f4;return function(_0x21c7b5){logger['error'](_0x21c7b5['stack']);if(_0x21c7b5[_0x1927('0x23')]){delete _0x21c7b5[_0x1927('0x23')];}_0x2a1887[_0x1927('0x16')](_0x51b786)[_0x1927('0x24')](_0x21c7b5);};}exports[_0x1927('0x25')]=function(_0x38054e,_0x575733){var _0x1b21b6={},_0x3e4ad2={},_0x9086f4={'count':0x0,'rows':[]};var _0x52c77c=_[_0x1927('0x26')](db[_0x1927('0x27')][_0x1927('0x28')],function(_0xa9fd7d){return{'name':_0xa9fd7d[_0x1927('0x29')],'type':_0xa9fd7d['type'][_0x1927('0x2a')]};});_0x3e4ad2[_0x1927('0x2b')]=_[_0x1927('0x26')](_0x52c77c,_0x1927('0x23'));_0x3e4ad2[_0x1927('0x2c')]=_['keys'](_0x38054e[_0x1927('0x2c')]);_0x3e4ad2['filters']=_[_0x1927('0x2d')](_0x3e4ad2[_0x1927('0x2b')],_0x3e4ad2[_0x1927('0x2c')]);_0x1b21b6[_0x1927('0x2e')]=_[_0x1927('0x2d')](_0x3e4ad2[_0x1927('0x2b')],qs[_0x1927('0x2f')](_0x38054e[_0x1927('0x2c')][_0x1927('0x2f')]));_0x1b21b6[_0x1927('0x2e')]=_0x1b21b6[_0x1927('0x2e')]['length']?_0x1b21b6['attributes']:_0x3e4ad2[_0x1927('0x2b')];if(!_0x38054e['query'][_0x1927('0x30')](_0x1927('0x31'))){_0x1b21b6[_0x1927('0x17')]=qs[_0x1927('0x17')](_0x38054e['query']['limit']);_0x1b21b6[_0x1927('0x1a')]=qs['offset'](_0x38054e[_0x1927('0x2c')][_0x1927('0x1a')]);}_0x1b21b6[_0x1927('0x32')]=qs[_0x1927('0x33')](_0x38054e['query']['sort']);_0x1b21b6[_0x1927('0x34')]=qs[_0x1927('0x35')](_['pick'](_0x38054e[_0x1927('0x2c')],_0x3e4ad2[_0x1927('0x35')]),_0x52c77c);if(_0x38054e[_0x1927('0x2c')][_0x1927('0x36')]){_0x1b21b6['where']=_['merge'](_0x1b21b6[_0x1927('0x34')],{'$or':_[_0x1927('0x26')](_0x52c77c,function(_0x5118b4){if(_0x5118b4[_0x1927('0x37')]!==_0x1927('0x38')){var _0x242b30={};_0x242b30[_0x5118b4[_0x1927('0x23')]]={'$like':'%'+_0x38054e[_0x1927('0x2c')][_0x1927('0x36')]+'%'};return _0x242b30;}})});}_0x1b21b6=_[_0x1927('0x39')]({},_0x1b21b6,_0x38054e['options']);var _0x402239={'where':_0x1b21b6[_0x1927('0x34')]};return db[_0x1927('0x27')][_0x1927('0x19')](_0x402239)['then'](function(_0xa1bdea){_0x9086f4[_0x1927('0x19')]=_0xa1bdea;if(_0x38054e[_0x1927('0x2c')][_0x1927('0x3a')]){_0x1b21b6['include']=[{'all':!![]}];}return db['VtigerConfiguration'][_0x1927('0x3b')](_0x1b21b6);})[_0x1927('0x21')](function(_0xdb9f50){_0x9086f4['rows']=_0xdb9f50;return _0x9086f4;})[_0x1927('0x21')](respondWithFilteredResult(_0x575733,_0x1b21b6))['catch'](handleError(_0x575733,null));};exports[_0x1927('0x3c')]=function(_0x4ffcaa,_0x39abf2){var _0x308ea5={'raw':![],'where':{'id':_0x4ffcaa['params']['id']}},_0x1d4da8={};_0x1d4da8['model']=_['keys'](db[_0x1927('0x27')][_0x1927('0x28')]);_0x1d4da8[_0x1927('0x2c')]=_[_0x1927('0x3d')](_0x4ffcaa[_0x1927('0x2c')]);_0x1d4da8[_0x1927('0x35')]=_[_0x1927('0x2d')](_0x1d4da8[_0x1927('0x2b')],_0x1d4da8[_0x1927('0x2c')]);_0x308ea5[_0x1927('0x2e')]=_['intersection'](_0x1d4da8[_0x1927('0x2b')],qs[_0x1927('0x2f')](_0x4ffcaa['query'][_0x1927('0x2f')]));_0x308ea5['attributes']=_0x308ea5[_0x1927('0x2e')]['length']?_0x308ea5[_0x1927('0x2e')]:_0x1d4da8[_0x1927('0x2b')];if(_0x4ffcaa[_0x1927('0x2c')]['includeAll']){_0x308ea5[_0x1927('0x3e')]=[{'all':!![]}];}_0x308ea5=_[_0x1927('0x39')]({},_0x308ea5,_0x4ffcaa['options']);return db[_0x1927('0x27')]['find'](_0x308ea5)[_0x1927('0x21')](handleEntityNotFound(_0x39abf2,null))['then'](respondWithResult(_0x39abf2,null))[_0x1927('0x3f')](handleError(_0x39abf2,null));};exports[_0x1927('0x40')]=function(_0x36fda4,_0x580c2a){return db[_0x1927('0x27')][_0x1927('0x40')](_0x36fda4['body'],{})['then'](respondWithResult(_0x580c2a,0xc9))[_0x1927('0x3f')](handleError(_0x580c2a,null));};exports[_0x1927('0x20')]=function(_0x54c161,_0x3b8ce5){if(_0x54c161[_0x1927('0x41')]['id']){delete _0x54c161[_0x1927('0x41')]['id'];}return db[_0x1927('0x27')][_0x1927('0x42')]({'where':{'id':_0x54c161['params']['id']}})[_0x1927('0x21')](handleEntityNotFound(_0x3b8ce5,null))[_0x1927('0x21')](saveUpdates(_0x54c161[_0x1927('0x41')],null))['then'](respondWithResult(_0x3b8ce5,null))['catch'](handleError(_0x3b8ce5,null));};exports[_0x1927('0x22')]=function(_0x48283e,_0x28c0c3){return db[_0x1927('0x27')][_0x1927('0x42')]({'where':{'id':_0x48283e[_0x1927('0x43')]['id']}})[_0x1927('0x21')](handleEntityNotFound(_0x28c0c3,null))[_0x1927('0x21')](removeEntity(_0x28c0c3,null))[_0x1927('0x3f')](handleError(_0x28c0c3,null));};exports[_0x1927('0x44')]=function(_0x156166,_0x1a9b9b,_0x39e17b){var _0x1d12de={};var _0x3de382={};var _0x4337c7;var _0xb74840;return db[_0x1927('0x27')][_0x1927('0x45')]({'where':{'id':_0x156166[_0x1927('0x43')]['id']}})[_0x1927('0x21')](handleEntityNotFound(_0x1a9b9b,null))[_0x1927('0x21')](function(_0x141848){if(_0x141848){_0x4337c7=_0x141848;_0x3de382[_0x1927('0x2b')]=_['keys'](db[_0x1927('0x46')]['rawAttributes']);_0x3de382[_0x1927('0x2c')]=_[_0x1927('0x3d')](_0x156166[_0x1927('0x2c')]);_0x3de382[_0x1927('0x35')]=_[_0x1927('0x2d')](_0x3de382[_0x1927('0x2b')],_0x3de382[_0x1927('0x2c')]);_0x1d12de[_0x1927('0x2e')]=_['intersection'](_0x3de382['model'],qs[_0x1927('0x2f')](_0x156166['query'][_0x1927('0x2f')]));_0x1d12de[_0x1927('0x2e')]=_0x1d12de['attributes'][_0x1927('0x47')]?_0x1d12de[_0x1927('0x2e')]:_0x3de382[_0x1927('0x2b')];_0x1d12de['order']=qs[_0x1927('0x33')](_0x156166[_0x1927('0x2c')][_0x1927('0x33')]);_0x1d12de[_0x1927('0x34')]=qs['filters'](_['pick'](_0x156166['query'],_0x3de382[_0x1927('0x35')]));if(_0x156166[_0x1927('0x2c')]['filter']){_0x1d12de[_0x1927('0x34')]=_[_0x1927('0x39')](_0x1d12de[_0x1927('0x34')],{'$or':_[_0x1927('0x26')](_0x1d12de['attributes'],function(_0x14b8e1){var _0x364afc={};_0x364afc[_0x14b8e1]={'$like':'%'+_0x156166[_0x1927('0x2c')][_0x1927('0x36')]+'%'};return _0x364afc;})});}_0x1d12de=_[_0x1927('0x39')]({},_0x1d12de,_0x156166['options']);return _0x4337c7[_0x1927('0x44')](_0x1d12de);}})[_0x1927('0x21')](function(_0x46cff5){if(_0x46cff5){_0xb74840=_0x46cff5[_0x1927('0x47')];if(!_0x156166[_0x1927('0x2c')][_0x1927('0x30')](_0x1927('0x31'))){_0x1d12de[_0x1927('0x17')]=qs['limit'](_0x156166[_0x1927('0x2c')][_0x1927('0x17')]);_0x1d12de[_0x1927('0x1a')]=qs[_0x1927('0x1a')](_0x156166[_0x1927('0x2c')][_0x1927('0x1a')]);}return _0x4337c7[_0x1927('0x44')](_0x1d12de);}})['then'](function(_0x5f801f){if(_0x5f801f){return _0x5f801f?{'count':_0xb74840,'rows':_0x5f801f}:null;}})[_0x1927('0x21')](respondWithResult(_0x1a9b9b,null))[_0x1927('0x3f')](handleError(_0x1a9b9b,null));};exports[_0x1927('0x48')]=function(_0x1ff002,_0x557e2c,_0x2a0304){var _0x48dd90={};var _0x4e5b9f={};var _0x325a23;var _0x5ef648;return db[_0x1927('0x27')][_0x1927('0x45')]({'where':{'id':_0x1ff002[_0x1927('0x43')]['id']}})[_0x1927('0x21')](handleEntityNotFound(_0x557e2c,null))['then'](function(_0x2ee3ee){if(_0x2ee3ee){_0x325a23=_0x2ee3ee;_0x4e5b9f[_0x1927('0x2b')]=_['keys'](db[_0x1927('0x46')][_0x1927('0x28')]);_0x4e5b9f[_0x1927('0x2c')]=_['keys'](_0x1ff002['query']);_0x4e5b9f[_0x1927('0x35')]=_[_0x1927('0x2d')](_0x4e5b9f[_0x1927('0x2b')],_0x4e5b9f[_0x1927('0x2c')]);_0x48dd90[_0x1927('0x2e')]=_[_0x1927('0x2d')](_0x4e5b9f[_0x1927('0x2b')],qs[_0x1927('0x2f')](_0x1ff002['query'][_0x1927('0x2f')]));_0x48dd90[_0x1927('0x2e')]=_0x48dd90[_0x1927('0x2e')][_0x1927('0x47')]?_0x48dd90['attributes']:_0x4e5b9f[_0x1927('0x2b')];_0x48dd90['order']=qs['sort'](_0x1ff002[_0x1927('0x2c')][_0x1927('0x33')]);_0x48dd90[_0x1927('0x34')]=qs[_0x1927('0x35')](_['pick'](_0x1ff002[_0x1927('0x2c')],_0x4e5b9f[_0x1927('0x35')]));if(_0x1ff002[_0x1927('0x2c')][_0x1927('0x36')]){_0x48dd90[_0x1927('0x34')]=_[_0x1927('0x39')](_0x48dd90[_0x1927('0x34')],{'$or':_['map'](_0x48dd90[_0x1927('0x2e')],function(_0x403613){var _0x4abc1c={};_0x4abc1c[_0x403613]={'$like':'%'+_0x1ff002[_0x1927('0x2c')][_0x1927('0x36')]+'%'};return _0x4abc1c;})});}_0x48dd90=_[_0x1927('0x39')]({},_0x48dd90,_0x1ff002[_0x1927('0x49')]);return _0x325a23['getSubjects'](_0x48dd90);}})[_0x1927('0x21')](function(_0x3559ef){if(_0x3559ef){_0x5ef648=_0x3559ef['length'];if(!_0x1ff002[_0x1927('0x2c')]['hasOwnProperty']('nolimit')){_0x48dd90[_0x1927('0x17')]=qs[_0x1927('0x17')](_0x1ff002[_0x1927('0x2c')]['limit']);_0x48dd90[_0x1927('0x1a')]=qs[_0x1927('0x1a')](_0x1ff002[_0x1927('0x2c')][_0x1927('0x1a')]);}return _0x325a23[_0x1927('0x48')](_0x48dd90);}})[_0x1927('0x21')](function(_0x3285e6){if(_0x3285e6){return _0x3285e6?{'count':_0x5ef648,'rows':_0x3285e6}:null;}})[_0x1927('0x21')](respondWithResult(_0x557e2c,null))[_0x1927('0x3f')](handleError(_0x557e2c,null));};exports[_0x1927('0x4a')]=function(_0x151774,_0x199bff,_0x51ff9d){var _0x39cb4a={};var _0x274479={};var _0x5d8903;var _0x594b9a;return db['VtigerConfiguration'][_0x1927('0x45')]({'where':{'id':_0x151774[_0x1927('0x43')]['id']}})['then'](handleEntityNotFound(_0x199bff,null))[_0x1927('0x21')](function(_0x2e46d5){if(_0x2e46d5){_0x5d8903=_0x2e46d5;_0x274479[_0x1927('0x2b')]=_[_0x1927('0x3d')](db['VtigerField'][_0x1927('0x28')]);_0x274479[_0x1927('0x2c')]=_[_0x1927('0x3d')](_0x151774[_0x1927('0x2c')]);_0x274479['filters']=_[_0x1927('0x2d')](_0x274479[_0x1927('0x2b')],_0x274479['query']);_0x39cb4a['attributes']=_[_0x1927('0x2d')](_0x274479[_0x1927('0x2b')],qs[_0x1927('0x2f')](_0x151774[_0x1927('0x2c')][_0x1927('0x2f')]));_0x39cb4a[_0x1927('0x2e')]=_0x39cb4a[_0x1927('0x2e')][_0x1927('0x47')]?_0x39cb4a[_0x1927('0x2e')]:_0x274479['model'];_0x39cb4a[_0x1927('0x32')]=qs['sort'](_0x151774[_0x1927('0x2c')][_0x1927('0x33')]);_0x39cb4a['where']=qs[_0x1927('0x35')](_['pick'](_0x151774[_0x1927('0x2c')],_0x274479[_0x1927('0x35')]));if(_0x151774[_0x1927('0x2c')][_0x1927('0x36')]){_0x39cb4a['where']=_['merge'](_0x39cb4a['where'],{'$or':_[_0x1927('0x26')](_0x39cb4a[_0x1927('0x2e')],function(_0x2aced1){var _0x278f8c={};_0x278f8c[_0x2aced1]={'$like':'%'+_0x151774[_0x1927('0x2c')]['filter']+'%'};return _0x278f8c;})});}_0x39cb4a=_[_0x1927('0x39')]({},_0x39cb4a,_0x151774[_0x1927('0x49')]);return _0x5d8903['getDescriptions'](_0x39cb4a);}})[_0x1927('0x21')](function(_0x2ef29e){if(_0x2ef29e){_0x594b9a=_0x2ef29e[_0x1927('0x47')];if(!_0x151774[_0x1927('0x2c')][_0x1927('0x30')](_0x1927('0x31'))){_0x39cb4a['limit']=qs[_0x1927('0x17')](_0x151774[_0x1927('0x2c')]['limit']);_0x39cb4a[_0x1927('0x1a')]=qs[_0x1927('0x1a')](_0x151774['query'][_0x1927('0x1a')]);}return _0x5d8903[_0x1927('0x4a')](_0x39cb4a);}})[_0x1927('0x21')](function(_0x43dc37){if(_0x43dc37){return _0x43dc37?{'count':_0x594b9a,'rows':_0x43dc37}:null;}})['then'](respondWithResult(_0x199bff,null))[_0x1927('0x3f')](handleError(_0x199bff,null));};
\ No newline at end of file
+var _0x98e1=['undefined','offset','limit','status','set','apply','reject','save','update','then','destroy','end','sendStatus','name','index','map','VtigerConfiguration','rawAttributes','fieldName','type','model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','findAll','catch','show','params','keys','include','find','create','body','VtigerField','length','getSubjects','getDescriptions','findOne','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','json'];(function(_0x3a0dbc,_0x52e9c2){var _0x2b9ea3=function(_0x50f199){while(--_0x50f199){_0x3a0dbc['push'](_0x3a0dbc['shift']());}};_0x2b9ea3(++_0x52e9c2);}(_0x98e1,0x160));var _0x198e=function(_0x3a6c2f,_0x4bcfc0){_0x3a6c2f=_0x3a6c2f-0x0;var _0x3c0ce0=_0x98e1[_0x3a6c2f];return _0x3c0ce0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x198e('0x0'));var zipdir=require(_0x198e('0x1'));var jsonpatch=require(_0x198e('0x2'));var rp=require(_0x198e('0x3'));var moment=require('moment');var BPromise=require(_0x198e('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x198e('0x5'));var sox=require(_0x198e('0x6'));var csv=require(_0x198e('0x7'));var ejs=require(_0x198e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x198e('0x9'));var crypto=require('crypto');var jsforce=require(_0x198e('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x198e('0x7'));var querystring=require(_0x198e('0xb'));var Papa=require(_0x198e('0xc'));var Redis=require(_0x198e('0xd'));var authService=require(_0x198e('0xe'));var qs=require(_0x198e('0xf'));var as=require(_0x198e('0x10'));var hardwareService=require(_0x198e('0x11'));var logger=require(_0x198e('0x12'))('api');var utils=require(_0x198e('0x13'));var config=require(_0x198e('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x198e('0x15'))['db'];function respondWithStatusCode(_0x4f85a9,_0x358746){_0x358746=_0x358746||0xcc;return function(_0x4ceda9){if(_0x4ceda9){return _0x4f85a9['sendStatus'](_0x358746);}return _0x4f85a9['status'](_0x358746)['end']();};}function respondWithResult(_0x1ccac7,_0x2c9017){_0x2c9017=_0x2c9017||0xc8;return function(_0x10d24e){if(_0x10d24e){return _0x1ccac7['status'](_0x2c9017)[_0x198e('0x16')](_0x10d24e);}};}function respondWithFilteredResult(_0x1675a3,_0x3b4101){return function(_0x5035de){if(_0x5035de){var _0x53e4c1=typeof _0x3b4101['offset']==='undefined'&&typeof _0x3b4101['limit']===_0x198e('0x17');var _0x58de5f=_0x5035de['count'];var _0x440975=_0x53e4c1?0x0:_0x3b4101[_0x198e('0x18')];var _0x2485ea=_0x53e4c1?_0x5035de['count']:_0x3b4101[_0x198e('0x18')]+_0x3b4101[_0x198e('0x19')];var _0x2fdc34;if(_0x2485ea>=_0x58de5f){_0x2485ea=_0x58de5f;_0x2fdc34=0xc8;}else{_0x2fdc34=0xce;}_0x1675a3[_0x198e('0x1a')](_0x2fdc34);return _0x1675a3[_0x198e('0x1b')]('Content-Range',_0x440975+'-'+_0x2485ea+'/'+_0x58de5f)[_0x198e('0x16')](_0x5035de);}return null;};}function patchUpdates(_0x1b7c84){return function(_0x59814c){try{jsonpatch[_0x198e('0x1c')](_0x59814c,_0x1b7c84,!![]);}catch(_0x26b32c){return BPromise[_0x198e('0x1d')](_0x26b32c);}return _0x59814c[_0x198e('0x1e')]();};}function saveUpdates(_0xec5453,_0x41e27f){return function(_0x503986){if(_0x503986){return _0x503986[_0x198e('0x1f')](_0xec5453)[_0x198e('0x20')](function(_0x3aecd5){return _0x3aecd5;});}return null;};}function removeEntity(_0x43042f,_0x17d04d){return function(_0x2ab945){if(_0x2ab945){return _0x2ab945[_0x198e('0x21')]()['then'](function(){_0x43042f[_0x198e('0x1a')](0xcc)[_0x198e('0x22')]();});}};}function handleEntityNotFound(_0x1fceba,_0x2ed96f){return function(_0xbd105b){if(!_0xbd105b){_0x1fceba[_0x198e('0x23')](0x194);}return _0xbd105b;};}function handleError(_0x302771,_0x436992){_0x436992=_0x436992||0x1f4;return function(_0x66c071){logger['error'](_0x66c071['stack']);if(_0x66c071[_0x198e('0x24')]){delete _0x66c071[_0x198e('0x24')];}_0x302771['status'](_0x436992)['send'](_0x66c071);};}exports[_0x198e('0x25')]=function(_0x1962ea,_0x337c73){var _0x505dd8={},_0x5e657e={},_0x37ee38={'count':0x0,'rows':[]};var _0x17a5b5=_[_0x198e('0x26')](db[_0x198e('0x27')][_0x198e('0x28')],function(_0x25e452){return{'name':_0x25e452[_0x198e('0x29')],'type':_0x25e452[_0x198e('0x2a')]['key']};});_0x5e657e[_0x198e('0x2b')]=_[_0x198e('0x26')](_0x17a5b5,_0x198e('0x24'));_0x5e657e['query']=_['keys'](_0x1962ea[_0x198e('0x2c')]);_0x5e657e[_0x198e('0x2d')]=_['intersection'](_0x5e657e[_0x198e('0x2b')],_0x5e657e[_0x198e('0x2c')]);_0x505dd8[_0x198e('0x2e')]=_[_0x198e('0x2f')](_0x5e657e[_0x198e('0x2b')],qs['fields'](_0x1962ea['query'][_0x198e('0x30')]));_0x505dd8['attributes']=_0x505dd8['attributes']['length']?_0x505dd8[_0x198e('0x2e')]:_0x5e657e[_0x198e('0x2b')];if(!_0x1962ea['query'][_0x198e('0x31')](_0x198e('0x32'))){_0x505dd8[_0x198e('0x19')]=qs['limit'](_0x1962ea[_0x198e('0x2c')][_0x198e('0x19')]);_0x505dd8[_0x198e('0x18')]=qs[_0x198e('0x18')](_0x1962ea[_0x198e('0x2c')][_0x198e('0x18')]);}_0x505dd8[_0x198e('0x33')]=qs[_0x198e('0x34')](_0x1962ea['query'][_0x198e('0x34')]);_0x505dd8[_0x198e('0x35')]=qs[_0x198e('0x2d')](_[_0x198e('0x36')](_0x1962ea[_0x198e('0x2c')],_0x5e657e[_0x198e('0x2d')]),_0x17a5b5);if(_0x1962ea[_0x198e('0x2c')][_0x198e('0x37')]){_0x505dd8[_0x198e('0x35')]=_[_0x198e('0x38')](_0x505dd8['where'],{'$or':_[_0x198e('0x26')](_0x17a5b5,function(_0x30ed1f){if(_0x30ed1f[_0x198e('0x2a')]!==_0x198e('0x39')){var _0x3a6910={};_0x3a6910[_0x30ed1f[_0x198e('0x24')]]={'$like':'%'+_0x1962ea[_0x198e('0x2c')]['filter']+'%'};return _0x3a6910;}})});}_0x505dd8=_[_0x198e('0x38')]({},_0x505dd8,_0x1962ea[_0x198e('0x3a')]);var _0x4d927f={'where':_0x505dd8[_0x198e('0x35')]};return db[_0x198e('0x27')][_0x198e('0x3b')](_0x4d927f)[_0x198e('0x20')](function(_0x23d622){_0x37ee38['count']=_0x23d622;if(_0x1962ea[_0x198e('0x2c')][_0x198e('0x3c')]){_0x505dd8['include']=[{'all':!![]}];}return db[_0x198e('0x27')][_0x198e('0x3d')](_0x505dd8);})[_0x198e('0x20')](function(_0x4f5871){_0x37ee38['rows']=_0x4f5871;return _0x37ee38;})[_0x198e('0x20')](respondWithFilteredResult(_0x337c73,_0x505dd8))[_0x198e('0x3e')](handleError(_0x337c73,null));};exports[_0x198e('0x3f')]=function(_0x218be5,_0x5a863b){var _0x4d46d0={'raw':![],'where':{'id':_0x218be5[_0x198e('0x40')]['id']}},_0x3dcca6={};_0x3dcca6[_0x198e('0x2b')]=_['keys'](db['VtigerConfiguration']['rawAttributes']);_0x3dcca6[_0x198e('0x2c')]=_[_0x198e('0x41')](_0x218be5[_0x198e('0x2c')]);_0x3dcca6[_0x198e('0x2d')]=_[_0x198e('0x2f')](_0x3dcca6[_0x198e('0x2b')],_0x3dcca6[_0x198e('0x2c')]);_0x4d46d0[_0x198e('0x2e')]=_[_0x198e('0x2f')](_0x3dcca6[_0x198e('0x2b')],qs[_0x198e('0x30')](_0x218be5[_0x198e('0x2c')][_0x198e('0x30')]));_0x4d46d0[_0x198e('0x2e')]=_0x4d46d0[_0x198e('0x2e')]['length']?_0x4d46d0[_0x198e('0x2e')]:_0x3dcca6['model'];if(_0x218be5[_0x198e('0x2c')][_0x198e('0x3c')]){_0x4d46d0[_0x198e('0x42')]=[{'all':!![]}];}_0x4d46d0=_['merge']({},_0x4d46d0,_0x218be5[_0x198e('0x3a')]);return db['VtigerConfiguration'][_0x198e('0x43')](_0x4d46d0)[_0x198e('0x20')](handleEntityNotFound(_0x5a863b,null))[_0x198e('0x20')](respondWithResult(_0x5a863b,null))[_0x198e('0x3e')](handleError(_0x5a863b,null));};exports[_0x198e('0x44')]=function(_0x42be4b,_0x10d688){return db['VtigerConfiguration'][_0x198e('0x44')](_0x42be4b[_0x198e('0x45')],{})[_0x198e('0x20')](respondWithResult(_0x10d688,0xc9))[_0x198e('0x3e')](handleError(_0x10d688,null));};exports[_0x198e('0x1f')]=function(_0x3528c1,_0x3b85ea){if(_0x3528c1[_0x198e('0x45')]['id']){delete _0x3528c1[_0x198e('0x45')]['id'];}return db[_0x198e('0x27')][_0x198e('0x43')]({'where':{'id':_0x3528c1[_0x198e('0x40')]['id']}})['then'](handleEntityNotFound(_0x3b85ea,null))[_0x198e('0x20')](saveUpdates(_0x3528c1[_0x198e('0x45')],null))[_0x198e('0x20')](respondWithResult(_0x3b85ea,null))[_0x198e('0x3e')](handleError(_0x3b85ea,null));};exports[_0x198e('0x21')]=function(_0x462a62,_0x2b6e06){return db[_0x198e('0x27')]['find']({'where':{'id':_0x462a62[_0x198e('0x40')]['id']}})[_0x198e('0x20')](handleEntityNotFound(_0x2b6e06,null))['then'](removeEntity(_0x2b6e06,null))[_0x198e('0x3e')](handleError(_0x2b6e06,null));};exports['getFields']=function(_0x1a824a,_0x1f97aa,_0x2e2165){var _0x3af27f={};var _0x4c5954={};var _0x49bb9c;var _0x11d941;return db[_0x198e('0x27')]['findOne']({'where':{'id':_0x1a824a[_0x198e('0x40')]['id']}})['then'](handleEntityNotFound(_0x1f97aa,null))['then'](function(_0x37fbdb){if(_0x37fbdb){_0x49bb9c=_0x37fbdb;_0x4c5954[_0x198e('0x2b')]=_[_0x198e('0x41')](db[_0x198e('0x46')][_0x198e('0x28')]);_0x4c5954['query']=_['keys'](_0x1a824a[_0x198e('0x2c')]);_0x4c5954[_0x198e('0x2d')]=_[_0x198e('0x2f')](_0x4c5954[_0x198e('0x2b')],_0x4c5954[_0x198e('0x2c')]);_0x3af27f['attributes']=_[_0x198e('0x2f')](_0x4c5954[_0x198e('0x2b')],qs[_0x198e('0x30')](_0x1a824a['query'][_0x198e('0x30')]));_0x3af27f[_0x198e('0x2e')]=_0x3af27f[_0x198e('0x2e')][_0x198e('0x47')]?_0x3af27f['attributes']:_0x4c5954['model'];_0x3af27f['order']=qs[_0x198e('0x34')](_0x1a824a['query']['sort']);_0x3af27f[_0x198e('0x35')]=qs[_0x198e('0x2d')](_[_0x198e('0x36')](_0x1a824a['query'],_0x4c5954['filters']));if(_0x1a824a[_0x198e('0x2c')]['filter']){_0x3af27f[_0x198e('0x35')]=_[_0x198e('0x38')](_0x3af27f['where'],{'$or':_['map'](_0x3af27f['attributes'],function(_0x5ad266){var _0x2f6d75={};_0x2f6d75[_0x5ad266]={'$like':'%'+_0x1a824a[_0x198e('0x2c')][_0x198e('0x37')]+'%'};return _0x2f6d75;})});}_0x3af27f=_[_0x198e('0x38')]({},_0x3af27f,_0x1a824a[_0x198e('0x3a')]);return _0x49bb9c['getFields'](_0x3af27f);}})[_0x198e('0x20')](function(_0x2723b2){if(_0x2723b2){_0x11d941=_0x2723b2['length'];if(!_0x1a824a[_0x198e('0x2c')]['hasOwnProperty'](_0x198e('0x32'))){_0x3af27f[_0x198e('0x19')]=qs[_0x198e('0x19')](_0x1a824a[_0x198e('0x2c')][_0x198e('0x19')]);_0x3af27f[_0x198e('0x18')]=qs['offset'](_0x1a824a[_0x198e('0x2c')][_0x198e('0x18')]);}return _0x49bb9c['getFields'](_0x3af27f);}})[_0x198e('0x20')](function(_0x5609d8){if(_0x5609d8){return _0x5609d8?{'count':_0x11d941,'rows':_0x5609d8}:null;}})[_0x198e('0x20')](respondWithResult(_0x1f97aa,null))[_0x198e('0x3e')](handleError(_0x1f97aa,null));};exports['getSubjects']=function(_0x595e9e,_0x12c953,_0x356407){var _0xd4713d={};var _0x41d230={};var _0x4bd94c;var _0x2dcc47;return db[_0x198e('0x27')]['findOne']({'where':{'id':_0x595e9e[_0x198e('0x40')]['id']}})[_0x198e('0x20')](handleEntityNotFound(_0x12c953,null))[_0x198e('0x20')](function(_0x19c803){if(_0x19c803){_0x4bd94c=_0x19c803;_0x41d230[_0x198e('0x2b')]=_[_0x198e('0x41')](db[_0x198e('0x46')][_0x198e('0x28')]);_0x41d230[_0x198e('0x2c')]=_[_0x198e('0x41')](_0x595e9e['query']);_0x41d230['filters']=_[_0x198e('0x2f')](_0x41d230['model'],_0x41d230[_0x198e('0x2c')]);_0xd4713d[_0x198e('0x2e')]=_[_0x198e('0x2f')](_0x41d230['model'],qs[_0x198e('0x30')](_0x595e9e[_0x198e('0x2c')][_0x198e('0x30')]));_0xd4713d[_0x198e('0x2e')]=_0xd4713d['attributes'][_0x198e('0x47')]?_0xd4713d[_0x198e('0x2e')]:_0x41d230['model'];_0xd4713d['order']=qs[_0x198e('0x34')](_0x595e9e[_0x198e('0x2c')][_0x198e('0x34')]);_0xd4713d[_0x198e('0x35')]=qs[_0x198e('0x2d')](_[_0x198e('0x36')](_0x595e9e['query'],_0x41d230[_0x198e('0x2d')]));if(_0x595e9e['query']['filter']){_0xd4713d[_0x198e('0x35')]=_[_0x198e('0x38')](_0xd4713d[_0x198e('0x35')],{'$or':_[_0x198e('0x26')](_0xd4713d[_0x198e('0x2e')],function(_0x225348){var _0x28e331={};_0x28e331[_0x225348]={'$like':'%'+_0x595e9e[_0x198e('0x2c')][_0x198e('0x37')]+'%'};return _0x28e331;})});}_0xd4713d=_[_0x198e('0x38')]({},_0xd4713d,_0x595e9e[_0x198e('0x3a')]);return _0x4bd94c['getSubjects'](_0xd4713d);}})['then'](function(_0x287e93){if(_0x287e93){_0x2dcc47=_0x287e93[_0x198e('0x47')];if(!_0x595e9e[_0x198e('0x2c')][_0x198e('0x31')](_0x198e('0x32'))){_0xd4713d[_0x198e('0x19')]=qs[_0x198e('0x19')](_0x595e9e[_0x198e('0x2c')][_0x198e('0x19')]);_0xd4713d[_0x198e('0x18')]=qs[_0x198e('0x18')](_0x595e9e[_0x198e('0x2c')][_0x198e('0x18')]);}return _0x4bd94c[_0x198e('0x48')](_0xd4713d);}})[_0x198e('0x20')](function(_0x40ad71){if(_0x40ad71){return _0x40ad71?{'count':_0x2dcc47,'rows':_0x40ad71}:null;}})[_0x198e('0x20')](respondWithResult(_0x12c953,null))[_0x198e('0x3e')](handleError(_0x12c953,null));};exports[_0x198e('0x49')]=function(_0x413033,_0x27f2ca,_0x26a63d){var _0x4b8f4d={};var _0xb3f4c1={};var _0x75423f;var _0x28884a;return db[_0x198e('0x27')][_0x198e('0x4a')]({'where':{'id':_0x413033[_0x198e('0x40')]['id']}})['then'](handleEntityNotFound(_0x27f2ca,null))['then'](function(_0xeb6a74){if(_0xeb6a74){_0x75423f=_0xeb6a74;_0xb3f4c1[_0x198e('0x2b')]=_[_0x198e('0x41')](db[_0x198e('0x46')][_0x198e('0x28')]);_0xb3f4c1['query']=_[_0x198e('0x41')](_0x413033[_0x198e('0x2c')]);_0xb3f4c1[_0x198e('0x2d')]=_['intersection'](_0xb3f4c1[_0x198e('0x2b')],_0xb3f4c1[_0x198e('0x2c')]);_0x4b8f4d[_0x198e('0x2e')]=_[_0x198e('0x2f')](_0xb3f4c1[_0x198e('0x2b')],qs['fields'](_0x413033[_0x198e('0x2c')][_0x198e('0x30')]));_0x4b8f4d[_0x198e('0x2e')]=_0x4b8f4d[_0x198e('0x2e')][_0x198e('0x47')]?_0x4b8f4d[_0x198e('0x2e')]:_0xb3f4c1[_0x198e('0x2b')];_0x4b8f4d[_0x198e('0x33')]=qs['sort'](_0x413033[_0x198e('0x2c')][_0x198e('0x34')]);_0x4b8f4d[_0x198e('0x35')]=qs[_0x198e('0x2d')](_[_0x198e('0x36')](_0x413033[_0x198e('0x2c')],_0xb3f4c1[_0x198e('0x2d')]));if(_0x413033[_0x198e('0x2c')][_0x198e('0x37')]){_0x4b8f4d[_0x198e('0x35')]=_[_0x198e('0x38')](_0x4b8f4d[_0x198e('0x35')],{'$or':_[_0x198e('0x26')](_0x4b8f4d[_0x198e('0x2e')],function(_0x17a26){var _0x5e2757={};_0x5e2757[_0x17a26]={'$like':'%'+_0x413033['query']['filter']+'%'};return _0x5e2757;})});}_0x4b8f4d=_[_0x198e('0x38')]({},_0x4b8f4d,_0x413033[_0x198e('0x3a')]);return _0x75423f[_0x198e('0x49')](_0x4b8f4d);}})[_0x198e('0x20')](function(_0x1f6702){if(_0x1f6702){_0x28884a=_0x1f6702['length'];if(!_0x413033['query']['hasOwnProperty']('nolimit')){_0x4b8f4d[_0x198e('0x19')]=qs[_0x198e('0x19')](_0x413033[_0x198e('0x2c')]['limit']);_0x4b8f4d[_0x198e('0x18')]=qs[_0x198e('0x18')](_0x413033[_0x198e('0x2c')][_0x198e('0x18')]);}return _0x75423f['getDescriptions'](_0x4b8f4d);}})[_0x198e('0x20')](function(_0x35bb16){if(_0x35bb16){return _0x35bb16?{'count':_0x28884a,'rows':_0x35bb16}:null;}})[_0x198e('0x20')](respondWithResult(_0x27f2ca,null))[_0x198e('0x3e')](handleError(_0x27f2ca,null));};
\ No newline at end of file
index a04001c..2469b79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe959=['VtigerConfiguration','lodash','util','../../config/logger','api','request-promise','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','define'];(function(_0x50c25e,_0x44e291){var _0x45b481=function(_0xb47879){while(--_0xb47879){_0x50c25e['push'](_0x50c25e['shift']());}};_0x45b481(++_0x44e291);}(_0xe959,0x90));var _0x9e95=function(_0x564a3f,_0x257bab){_0x564a3f=_0x564a3f-0x0;var _0xfe3a13=_0xe959[_0x564a3f];return _0xfe3a13;};'use strict';var _=require(_0x9e95('0x0'));var util=require(_0x9e95('0x1'));var logger=require(_0x9e95('0x2'))(_0x9e95('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9e95('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9e95('0x5'));var config=require(_0x9e95('0x6'));var attributes=require(_0x9e95('0x7'));module[_0x9e95('0x8')]=function(_0x19483b,_0x251cbc){return _0x19483b[_0x9e95('0x9')](_0x9e95('0xa'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcfbc=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration','lodash'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xcfbc,0x1ed));var _0xccfb=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xcfbc[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xccfb('0x0'));var util=require(_0xccfb('0x1'));var logger=require(_0xccfb('0x2'))('api');var moment=require(_0xccfb('0x3'));var BPromise=require(_0xccfb('0x4'));var rp=require(_0xccfb('0x5'));var fs=require('fs');var path=require(_0xccfb('0x6'));var rimraf=require(_0xccfb('0x7'));var config=require(_0xccfb('0x8'));var attributes=require(_0xccfb('0x9'));module[_0xccfb('0xa')]=function(_0xd101c7,_0x20e548){return _0xd101c7[_0xccfb('0xb')](_0xccfb('0xc'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1d5761f..dbed8ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd52=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','stringify','error','code','message','VtigerConfiguration,\x20%s,\x20%s','result','catch','lodash','util','moment'];(function(_0x24df15,_0x22cb23){var _0x260f07=function(_0x47f810){while(--_0x47f810){_0x24df15['push'](_0x24df15['shift']());}};_0x260f07(++_0x22cb23);}(_0xcd52,0x1ad));var _0x2cd5=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xcd52[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0x2cd5('0x0'));var util=require(_0x2cd5('0x1'));var moment=require(_0x2cd5('0x2'));var BPromise=require(_0x2cd5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2cd5('0x4'));var db=require(_0x2cd5('0x5'))['db'];var utils=require(_0x2cd5('0x6'));var logger=require(_0x2cd5('0x7'))(_0x2cd5('0x8'));var config=require(_0x2cd5('0x9'));var jayson=require(_0x2cd5('0xa'));var client=jayson['client'][_0x2cd5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x386b1f,_0xeef27f,_0x2cac1c){return new BPromise(function(_0x5f4e2a,_0x24d006){return client[_0x2cd5('0xc')](_0x386b1f,_0x2cac1c)[_0x2cd5('0xd')](function(_0x2c8461){logger[_0x2cd5('0xe')]('VtigerConfiguration,\x20%s,\x20%s',_0xeef27f,_0x2cd5('0xf'));logger[_0x2cd5('0x10')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0xeef27f,_0x2cd5('0xf'),JSON[_0x2cd5('0x11')](_0x2c8461));if(_0x2c8461[_0x2cd5('0x12')]){if(_0x2c8461[_0x2cd5('0x12')][_0x2cd5('0x13')]===0x1f4){logger[_0x2cd5('0x12')]('VtigerConfiguration,\x20%s,\x20%s',_0xeef27f,_0x2c8461['error']['message']);return _0x24d006(_0x2c8461[_0x2cd5('0x12')][_0x2cd5('0x14')]);}logger[_0x2cd5('0x12')](_0x2cd5('0x15'),_0xeef27f,_0x2c8461[_0x2cd5('0x12')][_0x2cd5('0x14')]);return _0x5f4e2a(_0x2c8461[_0x2cd5('0x12')][_0x2cd5('0x14')]);}else{logger['info'](_0x2cd5('0x15'),_0xeef27f,'request\x20sent');_0x5f4e2a(_0x2c8461[_0x2cd5('0x16')][_0x2cd5('0x14')]);}})[_0x2cd5('0x17')](function(_0x297376){logger[_0x2cd5('0x12')](_0x2cd5('0x15'),_0xeef27f,_0x297376);_0x24d006(_0x297376);});});}
\ No newline at end of file
+var _0x6ab0=['ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','VtigerConfiguration,\x20%s,\x20%s','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x3f441c,_0x43bf79){var _0x165313=function(_0x303dbb){while(--_0x303dbb){_0x3f441c['push'](_0x3f441c['shift']());}};_0x165313(++_0x43bf79);}(_0x6ab0,0x1b0));var _0x06ab=function(_0x23870f,_0x553470){_0x23870f=_0x23870f-0x0;var _0x3b3416=_0x6ab0[_0x23870f];return _0x3b3416;};'use strict';var _=require(_0x06ab('0x0'));var util=require(_0x06ab('0x1'));var moment=require(_0x06ab('0x2'));var BPromise=require(_0x06ab('0x3'));var rs=require(_0x06ab('0x4'));var fs=require('fs');var Redis=require(_0x06ab('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x06ab('0x6'));var logger=require(_0x06ab('0x7'))(_0x06ab('0x8'));var config=require('../../config/environment');var jayson=require(_0x06ab('0x9'));var client=jayson[_0x06ab('0xa')][_0x06ab('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3a2798,_0x4d0e48,_0xb08468){return new BPromise(function(_0x126abb,_0x569177){return client[_0x06ab('0xc')](_0x3a2798,_0xb08468)['then'](function(_0x42d0ee){logger[_0x06ab('0xd')](_0x06ab('0xe'),_0x4d0e48,'request\x20sent');logger[_0x06ab('0xf')](_0x06ab('0x10'),_0x4d0e48,_0x06ab('0x11'),JSON['stringify'](_0x42d0ee));if(_0x42d0ee[_0x06ab('0x12')]){if(_0x42d0ee[_0x06ab('0x12')][_0x06ab('0x13')]===0x1f4){logger[_0x06ab('0x12')](_0x06ab('0xe'),_0x4d0e48,_0x42d0ee[_0x06ab('0x12')][_0x06ab('0x14')]);return _0x569177(_0x42d0ee['error'][_0x06ab('0x14')]);}logger[_0x06ab('0x12')](_0x06ab('0xe'),_0x4d0e48,_0x42d0ee[_0x06ab('0x12')]['message']);return _0x126abb(_0x42d0ee[_0x06ab('0x12')][_0x06ab('0x14')]);}else{logger[_0x06ab('0xd')](_0x06ab('0xe'),_0x4d0e48,_0x06ab('0x11'));_0x126abb(_0x42d0ee[_0x06ab('0x15')][_0x06ab('0x14')]);}})[_0x06ab('0x16')](function(_0x408a5e){logger[_0x06ab('0x12')]('VtigerConfiguration,\x20%s,\x20%s',_0x4d0e48,_0x408a5e);_0x569177(_0x408a5e);});});}
\ No newline at end of file
index 52d5e45..1ec8a3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07bb=['connect-timeout','express','../../components/interaction/service','../../config/environment','./intVtigerField.controller','isAuthenticated','index','get','/:id','show','post','put','update','destroy','multer','util','path'];(function(_0x17f949,_0x528b26){var _0x4929d9=function(_0x1d5213){while(--_0x1d5213){_0x17f949['push'](_0x17f949['shift']());}};_0x4929d9(++_0x528b26);}(_0x07bb,0x1a6));var _0xb07b=function(_0x549314,_0x4f7802){_0x549314=_0x549314-0x0;var _0x513fee=_0x07bb[_0x549314];return _0x513fee;};'use strict';var multer=require(_0xb07b('0x0'));var util=require(_0xb07b('0x1'));var path=require(_0xb07b('0x2'));var timeout=require(_0xb07b('0x3'));var express=require(_0xb07b('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb07b('0x5'));var config=require(_0xb07b('0x6'));var controller=require(_0xb07b('0x7'));router['get']('/',auth[_0xb07b('0x8')](),controller[_0xb07b('0x9')]);router[_0xb07b('0xa')](_0xb07b('0xb'),auth[_0xb07b('0x8')](),controller[_0xb07b('0xc')]);router[_0xb07b('0xd')]('/',auth[_0xb07b('0x8')](),controller['create']);router[_0xb07b('0xe')](_0xb07b('0xb'),auth['isAuthenticated'](),controller[_0xb07b('0xf')]);router['delete'](_0xb07b('0xb'),auth[_0xb07b('0x8')](),controller[_0xb07b('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xd9c6=['exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','/:id','show','post','isAuthenticated','update','delete'];(function(_0x2a0127,_0x345ec1){var _0x4fcff4=function(_0x45ef62){while(--_0x45ef62){_0x2a0127['push'](_0x2a0127['shift']());}};_0x4fcff4(++_0x345ec1);}(_0xd9c6,0x122));var _0x6d9c=function(_0xedc8f9,_0x5b789d){_0xedc8f9=_0xedc8f9-0x0;var _0x558dff=_0xd9c6[_0xedc8f9];return _0x558dff;};'use strict';var multer=require(_0x6d9c('0x0'));var util=require(_0x6d9c('0x1'));var path=require(_0x6d9c('0x2'));var timeout=require('connect-timeout');var express=require(_0x6d9c('0x3'));var router=express[_0x6d9c('0x4')]();var fs_extra=require(_0x6d9c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x6d9c('0x6'));var config=require(_0x6d9c('0x7'));var controller=require(_0x6d9c('0x8'));router[_0x6d9c('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6d9c('0x9')](_0x6d9c('0xa'),auth['isAuthenticated'](),controller[_0x6d9c('0xb')]);router[_0x6d9c('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x6d9c('0xa'),auth[_0x6d9c('0xd')](),controller[_0x6d9c('0xe')]);router[_0x6d9c('0xf')](_0x6d9c('0xa'),auth[_0x6d9c('0xd')](),controller['destroy']);module[_0x6d9c('0x10')]=router;
\ No newline at end of file
index b534895..42406a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x628b=['keyValue','STRING','exports','ENUM','string','variable','customVariable'];(function(_0x2742db,_0x58e00c){var _0x18659e=function(_0x5bd3ac){while(--_0x5bd3ac){_0x2742db['push'](_0x2742db['shift']());}};_0x18659e(++_0x58e00c);}(_0x628b,0xb8));var _0xb628=function(_0x56afc9,_0x3ac83b){_0x56afc9=_0x56afc9-0x0;var _0x174caa=_0x628b[_0x56afc9];return _0x174caa;};'use strict';var Sequelize=require('sequelize');module[_0xb628('0x0')]={'type':{'type':Sequelize[_0xb628('0x1')](_0xb628('0x2'),_0xb628('0x3'),_0xb628('0x4'),_0xb628('0x5'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0xb628('0x6')]},'key':{'type':Sequelize[_0xb628('0x6')]},'keyType':{'type':Sequelize[_0xb628('0x1')](_0xb628('0x2'),_0xb628('0x3'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xb628('0x6')]},'nameField':{'type':Sequelize[_0xb628('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb628('0x6')]}};
\ No newline at end of file
+var _0x5ba7=['string','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','ENUM'];(function(_0x48c5f6,_0x467809){var _0x5517a4=function(_0x48d762){while(--_0x48d762){_0x48c5f6['push'](_0x48c5f6['shift']());}};_0x5517a4(++_0x467809);}(_0x5ba7,0x106));var _0x75ba=function(_0xfaed85,_0x1502b1){_0xfaed85=_0xfaed85-0x0;var _0xf03331=_0x5ba7[_0xfaed85];return _0xf03331;};'use strict';var Sequelize=require(_0x75ba('0x0'));module['exports']={'type':{'type':Sequelize[_0x75ba('0x1')](_0x75ba('0x2'),'variable',_0x75ba('0x3'),_0x75ba('0x4'),_0x75ba('0x5')),'defaultValue':_0x75ba('0x2')},'content':{'type':Sequelize[_0x75ba('0x6')]},'key':{'type':Sequelize[_0x75ba('0x6')]},'keyType':{'type':Sequelize[_0x75ba('0x1')](_0x75ba('0x2'),'variable',_0x75ba('0x3'))},'keyContent':{'type':Sequelize[_0x75ba('0x6')]},'idField':{'type':Sequelize[_0x75ba('0x6')]},'nameField':{'type':Sequelize[_0x75ba('0x6')]},'customField':{'type':Sequelize[_0x75ba('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x75ba('0x6')]}};
\ No newline at end of file
index 7e5a51a..0cd58aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x354d=['show','params','keys','options','find','create','update','body','eml-format','rimraf','zip-dir','fast-json-patch','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','limit','undefined','count','set','Content-Range','reject','save','destroy','then','end','error','stack','name','send','map','rawAttributes','fieldName','type','key','query','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','VtigerField','includeAll','include','findAll','rows','catch'];(function(_0x58ebb1,_0x220277){var _0x2f0328=function(_0x21f397){while(--_0x21f397){_0x58ebb1['push'](_0x58ebb1['shift']());}};_0x2f0328(++_0x220277);}(_0x354d,0x1e8));var _0xd354=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x354d[_0x502c7d];return _0x30b7ed;};'use strict';var emlformat=require(_0xd354('0x0'));var rimraf=require(_0xd354('0x1'));var zipdir=require(_0xd354('0x2'));var jsonpatch=require(_0xd354('0x3'));var rp=require('request-promise');var moment=require(_0xd354('0x4'));var BPromise=require(_0xd354('0x5'));var Mustache=require(_0xd354('0x6'));var util=require(_0xd354('0x7'));var path=require(_0xd354('0x8'));var sox=require(_0xd354('0x9'));var csv=require(_0xd354('0xa'));var ejs=require(_0xd354('0xb'));var fs=require('fs');var fs_extra=require(_0xd354('0xc'));var _=require(_0xd354('0xd'));var squel=require(_0xd354('0xe'));var crypto=require(_0xd354('0xf'));var jsforce=require(_0xd354('0x10'));var deskjs=require(_0xd354('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd354('0x12'));var Redis=require('ioredis');var authService=require(_0xd354('0x13'));var qs=require(_0xd354('0x14'));var as=require(_0xd354('0x15'));var hardwareService=require(_0xd354('0x16'));var logger=require(_0xd354('0x17'))(_0xd354('0x18'));var utils=require(_0xd354('0x19'));var config=require(_0xd354('0x1a'));var licenseUtil=require(_0xd354('0x1b'));var db=require(_0xd354('0x1c'))['db'];function respondWithStatusCode(_0x3e75a3,_0x3df316){_0x3df316=_0x3df316||0xcc;return function(_0x241ea6){if(_0x241ea6){return _0x3e75a3['sendStatus'](_0x3df316);}return _0x3e75a3[_0xd354('0x1d')](_0x3df316)['end']();};}function respondWithResult(_0x500d61,_0x23f9ff){_0x23f9ff=_0x23f9ff||0xc8;return function(_0x3e5181){if(_0x3e5181){return _0x500d61[_0xd354('0x1d')](_0x23f9ff)[_0xd354('0x1e')](_0x3e5181);}};}function respondWithFilteredResult(_0x55b62f,_0x3a17bf){return function(_0x2fa06d){if(_0x2fa06d){var _0x5085e9=typeof _0x3a17bf[_0xd354('0x1f')]==='undefined'&&typeof _0x3a17bf[_0xd354('0x20')]===_0xd354('0x21');var _0x164570=_0x2fa06d[_0xd354('0x22')];var _0x35a9b9=_0x5085e9?0x0:_0x3a17bf[_0xd354('0x1f')];var _0x2786b1=_0x5085e9?_0x2fa06d[_0xd354('0x22')]:_0x3a17bf[_0xd354('0x1f')]+_0x3a17bf[_0xd354('0x20')];var _0x5e689c;if(_0x2786b1>=_0x164570){_0x2786b1=_0x164570;_0x5e689c=0xc8;}else{_0x5e689c=0xce;}_0x55b62f['status'](_0x5e689c);return _0x55b62f[_0xd354('0x23')](_0xd354('0x24'),_0x35a9b9+'-'+_0x2786b1+'/'+_0x164570)[_0xd354('0x1e')](_0x2fa06d);}return null;};}function patchUpdates(_0x4e03db){return function(_0x593253){try{jsonpatch['apply'](_0x593253,_0x4e03db,!![]);}catch(_0x2e1dc1){return BPromise[_0xd354('0x25')](_0x2e1dc1);}return _0x593253[_0xd354('0x26')]();};}function saveUpdates(_0x11efd4,_0x21197f){return function(_0xf6e7d1){if(_0xf6e7d1){return _0xf6e7d1['update'](_0x11efd4)['then'](function(_0x10ac2a){return _0x10ac2a;});}return null;};}function removeEntity(_0x3149e2,_0x4c71a4){return function(_0x5a2b47){if(_0x5a2b47){return _0x5a2b47[_0xd354('0x27')]()[_0xd354('0x28')](function(){_0x3149e2[_0xd354('0x1d')](0xcc)[_0xd354('0x29')]();});}};}function handleEntityNotFound(_0x586293,_0x376eba){return function(_0x575370){if(!_0x575370){_0x586293['sendStatus'](0x194);}return _0x575370;};}function handleError(_0x467caa,_0x20f066){_0x20f066=_0x20f066||0x1f4;return function(_0x565344){logger[_0xd354('0x2a')](_0x565344[_0xd354('0x2b')]);if(_0x565344[_0xd354('0x2c')]){delete _0x565344[_0xd354('0x2c')];}_0x467caa[_0xd354('0x1d')](_0x20f066)[_0xd354('0x2d')](_0x565344);};}exports['index']=function(_0x28d2f9,_0x48abbc){var _0x403756={},_0x58b604={},_0x23f329={'count':0x0,'rows':[]};var _0x3eb95d=_[_0xd354('0x2e')](db['VtigerField'][_0xd354('0x2f')],function(_0x26fee6){return{'name':_0x26fee6[_0xd354('0x30')],'type':_0x26fee6[_0xd354('0x31')][_0xd354('0x32')]};});_0x58b604['model']=_[_0xd354('0x2e')](_0x3eb95d,_0xd354('0x2c'));_0x58b604['query']=_['keys'](_0x28d2f9[_0xd354('0x33')]);_0x58b604['filters']=_[_0xd354('0x34')](_0x58b604[_0xd354('0x35')],_0x58b604[_0xd354('0x33')]);_0x403756[_0xd354('0x36')]=_['intersection'](_0x58b604['model'],qs[_0xd354('0x37')](_0x28d2f9[_0xd354('0x33')]['fields']));_0x403756[_0xd354('0x36')]=_0x403756[_0xd354('0x36')][_0xd354('0x38')]?_0x403756[_0xd354('0x36')]:_0x58b604['model'];if(!_0x28d2f9[_0xd354('0x33')][_0xd354('0x39')]('nolimit')){_0x403756['limit']=qs[_0xd354('0x20')](_0x28d2f9[_0xd354('0x33')][_0xd354('0x20')]);_0x403756[_0xd354('0x1f')]=qs['offset'](_0x28d2f9[_0xd354('0x33')]['offset']);}_0x403756[_0xd354('0x3a')]=qs['sort'](_0x28d2f9['query'][_0xd354('0x3b')]);_0x403756[_0xd354('0x3c')]=qs[_0xd354('0x3d')](_[_0xd354('0x3e')](_0x28d2f9[_0xd354('0x33')],_0x58b604[_0xd354('0x3d')]),_0x3eb95d);if(_0x28d2f9[_0xd354('0x33')][_0xd354('0x3f')]){_0x403756['where']=_[_0xd354('0x40')](_0x403756[_0xd354('0x3c')],{'$or':_[_0xd354('0x2e')](_0x3eb95d,function(_0x8aded3){if(_0x8aded3['type']!==_0xd354('0x41')){var _0x12b1ce={};_0x12b1ce[_0x8aded3[_0xd354('0x2c')]]={'$like':'%'+_0x28d2f9[_0xd354('0x33')][_0xd354('0x3f')]+'%'};return _0x12b1ce;}})});}_0x403756=_[_0xd354('0x40')]({},_0x403756,_0x28d2f9['options']);var _0x434380={'where':_0x403756[_0xd354('0x3c')]};return db[_0xd354('0x42')][_0xd354('0x22')](_0x434380)[_0xd354('0x28')](function(_0x29548a){_0x23f329[_0xd354('0x22')]=_0x29548a;if(_0x28d2f9[_0xd354('0x33')][_0xd354('0x43')]){_0x403756[_0xd354('0x44')]=[{'all':!![]}];}return db[_0xd354('0x42')][_0xd354('0x45')](_0x403756);})[_0xd354('0x28')](function(_0x4dbabe){_0x23f329[_0xd354('0x46')]=_0x4dbabe;return _0x23f329;})[_0xd354('0x28')](respondWithFilteredResult(_0x48abbc,_0x403756))[_0xd354('0x47')](handleError(_0x48abbc,null));};exports[_0xd354('0x48')]=function(_0x2cdd61,_0x17d139){var _0x1fadca={'raw':!![],'where':{'id':_0x2cdd61[_0xd354('0x49')]['id']}},_0x470cdb={};_0x470cdb['model']=_[_0xd354('0x4a')](db[_0xd354('0x42')][_0xd354('0x2f')]);_0x470cdb[_0xd354('0x33')]=_['keys'](_0x2cdd61[_0xd354('0x33')]);_0x470cdb['filters']=_['intersection'](_0x470cdb['model'],_0x470cdb[_0xd354('0x33')]);_0x1fadca[_0xd354('0x36')]=_['intersection'](_0x470cdb[_0xd354('0x35')],qs[_0xd354('0x37')](_0x2cdd61[_0xd354('0x33')]['fields']));_0x1fadca[_0xd354('0x36')]=_0x1fadca[_0xd354('0x36')][_0xd354('0x38')]?_0x1fadca[_0xd354('0x36')]:_0x470cdb[_0xd354('0x35')];if(_0x2cdd61[_0xd354('0x33')][_0xd354('0x43')]){_0x1fadca['include']=[{'all':!![]}];}_0x1fadca=_[_0xd354('0x40')]({},_0x1fadca,_0x2cdd61[_0xd354('0x4b')]);return db['VtigerField'][_0xd354('0x4c')](_0x1fadca)[_0xd354('0x28')](handleEntityNotFound(_0x17d139,null))[_0xd354('0x28')](respondWithResult(_0x17d139,null))['catch'](handleError(_0x17d139,null));};exports[_0xd354('0x4d')]=function(_0x320c86,_0x2499ce){return db['VtigerField'][_0xd354('0x4d')](_0x320c86['body'],{})[_0xd354('0x28')](respondWithResult(_0x2499ce,0xc9))[_0xd354('0x47')](handleError(_0x2499ce,null));};exports[_0xd354('0x4e')]=function(_0x2fd70c,_0xa9879d){if(_0x2fd70c[_0xd354('0x4f')]['id']){delete _0x2fd70c[_0xd354('0x4f')]['id'];}return db['VtigerField'][_0xd354('0x4c')]({'where':{'id':_0x2fd70c[_0xd354('0x49')]['id']}})['then'](handleEntityNotFound(_0xa9879d,null))[_0xd354('0x28')](saveUpdates(_0x2fd70c[_0xd354('0x4f')],null))[_0xd354('0x28')](respondWithResult(_0xa9879d,null))[_0xd354('0x47')](handleError(_0xa9879d,null));};exports[_0xd354('0x27')]=function(_0x5227e6,_0x507433){return db[_0xd354('0x42')][_0xd354('0x4c')]({'where':{'id':_0x5227e6[_0xd354('0x49')]['id']}})['then'](handleEntityNotFound(_0x507433,null))['then'](removeEntity(_0x507433,null))['catch'](handleError(_0x507433,null));};
\ No newline at end of file
+var _0x0331=['create','body','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','then','destroy','error','stack','name','send','index','VtigerField','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find'];(function(_0xd0eaf6,_0x3a921e){var _0x3dae2a=function(_0x239807){while(--_0x239807){_0xd0eaf6['push'](_0xd0eaf6['shift']());}};_0x3dae2a(++_0x3a921e);}(_0x0331,0x179));var _0x1033=function(_0x2b9cf5,_0x2a7804){_0x2b9cf5=_0x2b9cf5-0x0;var _0xd0cf15=_0x0331[_0x2b9cf5];return _0xd0cf15;};'use strict';var emlformat=require(_0x1033('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x1033('0x1'));var rp=require(_0x1033('0x2'));var moment=require(_0x1033('0x3'));var BPromise=require(_0x1033('0x4'));var Mustache=require(_0x1033('0x5'));var util=require(_0x1033('0x6'));var path=require(_0x1033('0x7'));var sox=require(_0x1033('0x8'));var csv=require(_0x1033('0x9'));var ejs=require(_0x1033('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x1033('0xb'));var crypto=require('crypto');var jsforce=require(_0x1033('0xc'));var deskjs=require(_0x1033('0xd'));var toCsv=require(_0x1033('0x9'));var querystring=require(_0x1033('0xe'));var Papa=require(_0x1033('0xf'));var Redis=require('ioredis');var authService=require(_0x1033('0x10'));var qs=require(_0x1033('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1033('0x12'));var logger=require(_0x1033('0x13'))(_0x1033('0x14'));var utils=require(_0x1033('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x1033('0x16'));var db=require(_0x1033('0x17'))['db'];function respondWithStatusCode(_0x4aa325,_0x2b74aa){_0x2b74aa=_0x2b74aa||0xcc;return function(_0x545007){if(_0x545007){return _0x4aa325[_0x1033('0x18')](_0x2b74aa);}return _0x4aa325[_0x1033('0x19')](_0x2b74aa)[_0x1033('0x1a')]();};}function respondWithResult(_0x5661cf,_0x4fa756){_0x4fa756=_0x4fa756||0xc8;return function(_0x1be2ed){if(_0x1be2ed){return _0x5661cf['status'](_0x4fa756)[_0x1033('0x1b')](_0x1be2ed);}};}function respondWithFilteredResult(_0x32aadf,_0x2961e7){return function(_0xf601d0){if(_0xf601d0){var _0x222e8b=typeof _0x2961e7['offset']===_0x1033('0x1c')&&typeof _0x2961e7[_0x1033('0x1d')]===_0x1033('0x1c');var _0x1da80a=_0xf601d0[_0x1033('0x1e')];var _0x5974e0=_0x222e8b?0x0:_0x2961e7[_0x1033('0x1f')];var _0x249cd3=_0x222e8b?_0xf601d0[_0x1033('0x1e')]:_0x2961e7[_0x1033('0x1f')]+_0x2961e7['limit'];var _0x4bd2ff;if(_0x249cd3>=_0x1da80a){_0x249cd3=_0x1da80a;_0x4bd2ff=0xc8;}else{_0x4bd2ff=0xce;}_0x32aadf[_0x1033('0x19')](_0x4bd2ff);return _0x32aadf[_0x1033('0x20')](_0x1033('0x21'),_0x5974e0+'-'+_0x249cd3+'/'+_0x1da80a)[_0x1033('0x1b')](_0xf601d0);}return null;};}function patchUpdates(_0x175406){return function(_0x2c33b9){try{jsonpatch[_0x1033('0x22')](_0x2c33b9,_0x175406,!![]);}catch(_0x56e965){return BPromise[_0x1033('0x23')](_0x56e965);}return _0x2c33b9['save']();};}function saveUpdates(_0x1eff3d,_0x34d329){return function(_0x1dcb4d){if(_0x1dcb4d){return _0x1dcb4d['update'](_0x1eff3d)[_0x1033('0x24')](function(_0x4be8df){return _0x4be8df;});}return null;};}function removeEntity(_0x33810d,_0x12449a){return function(_0x119b60){if(_0x119b60){return _0x119b60[_0x1033('0x25')]()[_0x1033('0x24')](function(){_0x33810d['status'](0xcc)[_0x1033('0x1a')]();});}};}function handleEntityNotFound(_0x20bf05,_0x280cc8){return function(_0x4e5750){if(!_0x4e5750){_0x20bf05[_0x1033('0x18')](0x194);}return _0x4e5750;};}function handleError(_0x5eeeef,_0x37d3ef){_0x37d3ef=_0x37d3ef||0x1f4;return function(_0x16b472){logger[_0x1033('0x26')](_0x16b472[_0x1033('0x27')]);if(_0x16b472[_0x1033('0x28')]){delete _0x16b472['name'];}_0x5eeeef['status'](_0x37d3ef)[_0x1033('0x29')](_0x16b472);};}exports[_0x1033('0x2a')]=function(_0xefb2f,_0x4d2241){var _0x49974c={},_0xb7af57={},_0x25d92c={'count':0x0,'rows':[]};var _0x21efac=_['map'](db[_0x1033('0x2b')][_0x1033('0x2c')],function(_0x489072){return{'name':_0x489072[_0x1033('0x2d')],'type':_0x489072[_0x1033('0x2e')][_0x1033('0x2f')]};});_0xb7af57[_0x1033('0x30')]=_[_0x1033('0x31')](_0x21efac,_0x1033('0x28'));_0xb7af57[_0x1033('0x32')]=_[_0x1033('0x33')](_0xefb2f['query']);_0xb7af57[_0x1033('0x34')]=_[_0x1033('0x35')](_0xb7af57[_0x1033('0x30')],_0xb7af57['query']);_0x49974c['attributes']=_[_0x1033('0x35')](_0xb7af57[_0x1033('0x30')],qs[_0x1033('0x36')](_0xefb2f[_0x1033('0x32')][_0x1033('0x36')]));_0x49974c[_0x1033('0x37')]=_0x49974c[_0x1033('0x37')]['length']?_0x49974c[_0x1033('0x37')]:_0xb7af57[_0x1033('0x30')];if(!_0xefb2f['query'][_0x1033('0x38')](_0x1033('0x39'))){_0x49974c[_0x1033('0x1d')]=qs[_0x1033('0x1d')](_0xefb2f[_0x1033('0x32')][_0x1033('0x1d')]);_0x49974c[_0x1033('0x1f')]=qs[_0x1033('0x1f')](_0xefb2f[_0x1033('0x32')]['offset']);}_0x49974c[_0x1033('0x3a')]=qs[_0x1033('0x3b')](_0xefb2f[_0x1033('0x32')][_0x1033('0x3b')]);_0x49974c[_0x1033('0x3c')]=qs[_0x1033('0x34')](_['pick'](_0xefb2f['query'],_0xb7af57[_0x1033('0x34')]),_0x21efac);if(_0xefb2f[_0x1033('0x32')][_0x1033('0x3d')]){_0x49974c['where']=_['merge'](_0x49974c[_0x1033('0x3c')],{'$or':_['map'](_0x21efac,function(_0x2bc27a){if(_0x2bc27a[_0x1033('0x2e')]!==_0x1033('0x3e')){var _0x2d4323={};_0x2d4323[_0x2bc27a[_0x1033('0x28')]]={'$like':'%'+_0xefb2f[_0x1033('0x32')][_0x1033('0x3d')]+'%'};return _0x2d4323;}})});}_0x49974c=_[_0x1033('0x3f')]({},_0x49974c,_0xefb2f[_0x1033('0x40')]);var _0x3666d4={'where':_0x49974c[_0x1033('0x3c')]};return db[_0x1033('0x2b')][_0x1033('0x1e')](_0x3666d4)['then'](function(_0x3f7cc1){_0x25d92c[_0x1033('0x1e')]=_0x3f7cc1;if(_0xefb2f['query'][_0x1033('0x41')]){_0x49974c[_0x1033('0x42')]=[{'all':!![]}];}return db[_0x1033('0x2b')][_0x1033('0x43')](_0x49974c);})[_0x1033('0x24')](function(_0x59ff04){_0x25d92c[_0x1033('0x44')]=_0x59ff04;return _0x25d92c;})['then'](respondWithFilteredResult(_0x4d2241,_0x49974c))[_0x1033('0x45')](handleError(_0x4d2241,null));};exports[_0x1033('0x46')]=function(_0x3dc808,_0x19a25b){var _0x2148c0={'raw':!![],'where':{'id':_0x3dc808[_0x1033('0x47')]['id']}},_0x2e3c8f={};_0x2e3c8f['model']=_[_0x1033('0x33')](db['VtigerField']['rawAttributes']);_0x2e3c8f[_0x1033('0x32')]=_['keys'](_0x3dc808['query']);_0x2e3c8f[_0x1033('0x34')]=_[_0x1033('0x35')](_0x2e3c8f['model'],_0x2e3c8f[_0x1033('0x32')]);_0x2148c0[_0x1033('0x37')]=_[_0x1033('0x35')](_0x2e3c8f[_0x1033('0x30')],qs[_0x1033('0x36')](_0x3dc808[_0x1033('0x32')]['fields']));_0x2148c0[_0x1033('0x37')]=_0x2148c0[_0x1033('0x37')]['length']?_0x2148c0[_0x1033('0x37')]:_0x2e3c8f[_0x1033('0x30')];if(_0x3dc808[_0x1033('0x32')][_0x1033('0x41')]){_0x2148c0[_0x1033('0x42')]=[{'all':!![]}];}_0x2148c0=_[_0x1033('0x3f')]({},_0x2148c0,_0x3dc808[_0x1033('0x40')]);return db[_0x1033('0x2b')][_0x1033('0x48')](_0x2148c0)[_0x1033('0x24')](handleEntityNotFound(_0x19a25b,null))[_0x1033('0x24')](respondWithResult(_0x19a25b,null))[_0x1033('0x45')](handleError(_0x19a25b,null));};exports[_0x1033('0x49')]=function(_0x3ecc43,_0x445aaf){return db[_0x1033('0x2b')]['create'](_0x3ecc43['body'],{})[_0x1033('0x24')](respondWithResult(_0x445aaf,0xc9))[_0x1033('0x45')](handleError(_0x445aaf,null));};exports['update']=function(_0x909903,_0x2aa390){if(_0x909903['body']['id']){delete _0x909903[_0x1033('0x4a')]['id'];}return db[_0x1033('0x2b')][_0x1033('0x48')]({'where':{'id':_0x909903['params']['id']}})['then'](handleEntityNotFound(_0x2aa390,null))[_0x1033('0x24')](saveUpdates(_0x909903[_0x1033('0x4a')],null))[_0x1033('0x24')](respondWithResult(_0x2aa390,null))[_0x1033('0x45')](handleError(_0x2aa390,null));};exports[_0x1033('0x25')]=function(_0x32f7ef,_0xeb35ac){return db['VtigerField'][_0x1033('0x48')]({'where':{'id':_0x32f7ef[_0x1033('0x47')]['id']}})[_0x1033('0x24')](handleEntityNotFound(_0xeb35ac,null))[_0x1033('0x24')](removeEntity(_0xeb35ac,null))[_0x1033('0x45')](handleError(_0xeb35ac,null));};
\ No newline at end of file
index 6626895..38ba981 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29d2=['../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./intVtigerField.attributes','exports','define','VtigerField','vtiger_unique_index','idField','FieldId','lodash','util'];(function(_0x1a6d5f,_0x1a1117){var _0x563590=function(_0x4bb99f){while(--_0x4bb99f){_0x1a6d5f['push'](_0x1a6d5f['shift']());}};_0x563590(++_0x1a1117);}(_0x29d2,0x1ed));var _0x229d=function(_0x1cfe94,_0x19caa2){_0x1cfe94=_0x1cfe94-0x0;var _0x103af0=_0x29d2[_0x1cfe94];return _0x103af0;};'use strict';var _=require(_0x229d('0x0'));var util=require(_0x229d('0x1'));var logger=require(_0x229d('0x2'))(_0x229d('0x3'));var moment=require(_0x229d('0x4'));var BPromise=require('bluebird');var rp=require(_0x229d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x229d('0x6'));var config=require(_0x229d('0x7'));var attributes=require(_0x229d('0x8'));module[_0x229d('0x9')]=function(_0x4ec632,_0x47c3c3){return _0x4ec632[_0x229d('0xa')](_0x229d('0xb'),attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':_0x229d('0xc'),'fields':[_0x229d('0xd'),_0x229d('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8a6=['exports','define','VtigerField','vtiger_unique_index','idField','lodash','util','../../config/logger','api','request-promise','path','rimraf','./intVtigerField.attributes'];(function(_0x3b1ece,_0x459223){var _0x49da52=function(_0x33032e){while(--_0x33032e){_0x3b1ece['push'](_0x3b1ece['shift']());}};_0x49da52(++_0x459223);}(_0xd8a6,0x1a5));var _0x6d8a=function(_0x9a195c,_0x330d33){_0x9a195c=_0x9a195c-0x0;var _0x373014=_0xd8a6[_0x9a195c];return _0x373014;};'use strict';var _=require(_0x6d8a('0x0'));var util=require(_0x6d8a('0x1'));var logger=require(_0x6d8a('0x2'))(_0x6d8a('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6d8a('0x4'));var fs=require('fs');var path=require(_0x6d8a('0x5'));var rimraf=require(_0x6d8a('0x6'));var config=require('../../config/environment');var attributes=require(_0x6d8a('0x7'));module[_0x6d8a('0x8')]=function(_0x145196,_0x2eb2d7){return _0x145196[_0x6d8a('0x9')](_0x6d8a('0xa'),attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':_0x6d8a('0xb'),'fields':[_0x6d8a('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1a8eed0..e6fdd76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc157=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','error','code','VtigerField,\x20%s,\x20%s','message','result','catch','lodash','util','randomstring'];(function(_0x2ba22d,_0x3795e1){var _0x406808=function(_0x3d9775){while(--_0x3d9775){_0x2ba22d['push'](_0x2ba22d['shift']());}};_0x406808(++_0x3795e1);}(_0xc157,0x1c9));var _0x7c15=function(_0x29d693,_0x2daadb){_0x29d693=_0x29d693-0x0;var _0x1210c6=_0xc157[_0x29d693];return _0x1210c6;};'use strict';var _=require(_0x7c15('0x0'));var util=require(_0x7c15('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x7c15('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7c15('0x3'))['db'];var utils=require(_0x7c15('0x4'));var logger=require(_0x7c15('0x5'))('rpc');var config=require(_0x7c15('0x6'));var jayson=require(_0x7c15('0x7'));var client=jayson[_0x7c15('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2c34a6,_0x336101,_0x3a870f){return new BPromise(function(_0x597978,_0x4a7d38){return client['request'](_0x2c34a6,_0x3a870f)[_0x7c15('0x9')](function(_0x149106){logger[_0x7c15('0xa')]('VtigerField,\x20%s,\x20%s',_0x336101,_0x7c15('0xb'));logger[_0x7c15('0xc')](_0x7c15('0xd'),_0x336101,'request\x20sent',JSON['stringify'](_0x149106));if(_0x149106[_0x7c15('0xe')]){if(_0x149106['error'][_0x7c15('0xf')]===0x1f4){logger[_0x7c15('0xe')](_0x7c15('0x10'),_0x336101,_0x149106[_0x7c15('0xe')][_0x7c15('0x11')]);return _0x4a7d38(_0x149106[_0x7c15('0xe')][_0x7c15('0x11')]);}logger[_0x7c15('0xe')](_0x7c15('0x10'),_0x336101,_0x149106[_0x7c15('0xe')]['message']);return _0x597978(_0x149106[_0x7c15('0xe')][_0x7c15('0x11')]);}else{logger[_0x7c15('0xa')](_0x7c15('0x10'),_0x336101,_0x7c15('0xb'));_0x597978(_0x149106[_0x7c15('0x12')]['message']);}})[_0x7c15('0x13')](function(_0x3edd31){logger['error'](_0x7c15('0x10'),_0x336101,_0x3edd31);_0x4a7d38(_0x3edd31);});});}
\ No newline at end of file
+var _0xd670=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','error','code','VtigerField,\x20%s,\x20%s','message','info','catch','lodash'];(function(_0x58df9b,_0x53673b){var _0x510111=function(_0x142e05){while(--_0x142e05){_0x58df9b['push'](_0x58df9b['shift']());}};_0x510111(++_0x53673b);}(_0xd670,0x175));var _0x0d67=function(_0x478c71,_0x256526){_0x478c71=_0x478c71-0x0;var _0x50c512=_0xd670[_0x478c71];return _0x50c512;};'use strict';var _=require(_0x0d67('0x0'));var util=require('util');var moment=require(_0x0d67('0x1'));var BPromise=require(_0x0d67('0x2'));var rs=require(_0x0d67('0x3'));var fs=require('fs');var Redis=require(_0x0d67('0x4'));var db=require(_0x0d67('0x5'))['db'];var utils=require(_0x0d67('0x6'));var logger=require(_0x0d67('0x7'))(_0x0d67('0x8'));var config=require(_0x0d67('0x9'));var jayson=require(_0x0d67('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5c4f80,_0x3d16bc,_0x3c0b5e){return new BPromise(function(_0x5e05b5,_0x1d32d8){return client[_0x0d67('0xb')](_0x5c4f80,_0x3c0b5e)[_0x0d67('0xc')](function(_0x5b9218){logger['info']('VtigerField,\x20%s,\x20%s',_0x3d16bc,_0x0d67('0xd'));logger[_0x0d67('0xe')](_0x0d67('0xf'),_0x3d16bc,_0x0d67('0xd'),JSON['stringify'](_0x5b9218));if(_0x5b9218[_0x0d67('0x10')]){if(_0x5b9218[_0x0d67('0x10')][_0x0d67('0x11')]===0x1f4){logger['error'](_0x0d67('0x12'),_0x3d16bc,_0x5b9218[_0x0d67('0x10')][_0x0d67('0x13')]);return _0x1d32d8(_0x5b9218[_0x0d67('0x10')][_0x0d67('0x13')]);}logger['error'](_0x0d67('0x12'),_0x3d16bc,_0x5b9218[_0x0d67('0x10')][_0x0d67('0x13')]);return _0x5e05b5(_0x5b9218[_0x0d67('0x10')][_0x0d67('0x13')]);}else{logger[_0x0d67('0x14')](_0x0d67('0x12'),_0x3d16bc,_0x0d67('0xd'));_0x5e05b5(_0x5b9218['result'][_0x0d67('0x13')]);}})[_0x0d67('0x15')](function(_0x12041d){logger[_0x0d67('0x10')](_0x0d67('0x12'),_0x3d16bc,_0x12041d);_0x1d32d8(_0x12041d);});});}
\ No newline at end of file
index 9aab46a..0bac289 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeff4=['show','getFields','post','create','/:id/configurations','addConfiguration','put','/:id','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','index'];(function(_0x3e6682,_0x119501){var _0x3eacaf=function(_0x203ab0){while(--_0x203ab0){_0x3e6682['push'](_0x3e6682['shift']());}};_0x3eacaf(++_0x119501);}(_0xeff4,0x1ef));var _0x4eff=function(_0x4a96ca,_0x13754e){_0x4a96ca=_0x4a96ca-0x0;var _0x2aed48=_0xeff4[_0x4a96ca];return _0x2aed48;};'use strict';var multer=require(_0x4eff('0x0'));var util=require(_0x4eff('0x1'));var path=require('path');var timeout=require(_0x4eff('0x2'));var express=require(_0x4eff('0x3'));var router=express[_0x4eff('0x4')]();var fs_extra=require(_0x4eff('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x4eff('0x6'));var controller=require(_0x4eff('0x7'));router[_0x4eff('0x8')]('/',auth[_0x4eff('0x9')](),controller[_0x4eff('0xa')]);router[_0x4eff('0x8')]('/:id',auth[_0x4eff('0x9')](),controller[_0x4eff('0xb')]);router[_0x4eff('0x8')]('/:id/configurations',auth[_0x4eff('0x9')](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0x4eff('0x9')](),controller[_0x4eff('0xc')]);router[_0x4eff('0xd')]('/',auth['isAuthenticated'](),controller[_0x4eff('0xe')]);router['post'](_0x4eff('0xf'),auth[_0x4eff('0x9')](),controller[_0x4eff('0x10')]);router[_0x4eff('0x11')](_0x4eff('0x12'),auth['isAuthenticated'](),controller['update']);router[_0x4eff('0x13')](_0x4eff('0x12'),auth['isAuthenticated'](),controller[_0x4eff('0x14')]);module[_0x4eff('0x15')]=router;
\ No newline at end of file
+var _0xf053=['/:id/configurations','put','update','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create'];(function(_0x4a9dc5,_0x30dacd){var _0x1736fc=function(_0x5a4c63){while(--_0x5a4c63){_0x4a9dc5['push'](_0x4a9dc5['shift']());}};_0x1736fc(++_0x30dacd);}(_0xf053,0x101));var _0x3f05=function(_0x2efabd,_0x2ba2a5){_0x2efabd=_0x2efabd-0x0;var _0x4fc922=_0xf053[_0x2efabd];return _0x4fc922;};'use strict';var multer=require('multer');var util=require(_0x3f05('0x0'));var path=require(_0x3f05('0x1'));var timeout=require(_0x3f05('0x2'));var express=require(_0x3f05('0x3'));var router=express[_0x3f05('0x4')]();var fs_extra=require(_0x3f05('0x5'));var auth=require(_0x3f05('0x6'));var interaction=require(_0x3f05('0x7'));var config=require(_0x3f05('0x8'));var controller=require('./intZendeskAccount.controller');router[_0x3f05('0x9')]('/',auth[_0x3f05('0xa')](),controller[_0x3f05('0xb')]);router[_0x3f05('0x9')](_0x3f05('0xc'),auth[_0x3f05('0xa')](),controller[_0x3f05('0xd')]);router['get']('/:id/configurations',auth['isAuthenticated'](),controller[_0x3f05('0xe')]);router[_0x3f05('0x9')](_0x3f05('0xf'),auth['isAuthenticated'](),controller[_0x3f05('0x10')]);router[_0x3f05('0x11')]('/',auth[_0x3f05('0xa')](),controller[_0x3f05('0x12')]);router['post'](_0x3f05('0x13'),auth[_0x3f05('0xa')](),controller['addConfiguration']);router[_0x3f05('0x14')](_0x3f05('0xc'),auth[_0x3f05('0xa')](),controller[_0x3f05('0x15')]);router['delete'](_0x3f05('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x3f05('0x16')]=router;
\ No newline at end of file
index 9d47f5e..38a8da6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeda7=['remoteUri','ENUM','password','token','integrationTab','newTab','sequelize','exports','STRING','username'];(function(_0xbc4560,_0x4020b8){var _0x298cfb=function(_0x254423){while(--_0x254423){_0xbc4560['push'](_0xbc4560['shift']());}};_0x298cfb(++_0x4020b8);}(_0xeda7,0x196));var _0x7eda=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xeda7[_0x36c5b0];return _0xf19333;};'use strict';var Sequelize=require(_0x7eda('0x0'));module[_0x7eda('0x1')]={'name':{'type':Sequelize[_0x7eda('0x2')]},'description':{'type':Sequelize[_0x7eda('0x2')]},'username':{'type':Sequelize[_0x7eda('0x2')],'unique':_0x7eda('0x3')},'password':{'type':Sequelize[_0x7eda('0x2')]},'token':{'type':Sequelize[_0x7eda('0x2')]},'remoteUri':{'type':Sequelize[_0x7eda('0x2')],'unique':_0x7eda('0x4')},'authType':{'type':Sequelize[_0x7eda('0x5')](_0x7eda('0x6'),_0x7eda('0x7')),'defaultValue':_0x7eda('0x6')},'serverUrl':{'type':Sequelize[_0x7eda('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x7eda('0x5')](_0x7eda('0x8'),_0x7eda('0x9')),'defaultValue':_0x7eda('0x8')}};
\ No newline at end of file
+var _0x11f3=['exports','STRING','password','ENUM','integrationTab','sequelize'];(function(_0x12d5f6,_0x1468b4){var _0x27a1ad=function(_0x293c51){while(--_0x293c51){_0x12d5f6['push'](_0x12d5f6['shift']());}};_0x27a1ad(++_0x1468b4);}(_0x11f3,0x149));var _0x311f=function(_0x57c380,_0x4cdaae){_0x57c380=_0x57c380-0x0;var _0x201cbf=_0x11f3[_0x57c380];return _0x201cbf;};'use strict';var Sequelize=require(_0x311f('0x0'));module[_0x311f('0x1')]={'name':{'type':Sequelize[_0x311f('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x311f('0x2')],'unique':'username'},'password':{'type':Sequelize[_0x311f('0x2')]},'token':{'type':Sequelize[_0x311f('0x2')]},'remoteUri':{'type':Sequelize[_0x311f('0x2')],'unique':'remoteUri'},'authType':{'type':Sequelize['ENUM'](_0x311f('0x3'),'token'),'defaultValue':_0x311f('0x3')},'serverUrl':{'type':Sequelize[_0x311f('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x311f('0x4')](_0x311f('0x5'),'newTab'),'defaultValue':_0x311f('0x5')}};
\ No newline at end of file
index 633440e..bbe0c29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16d2=['where','VIRTUAL','options','includeAll','findAll','rows','show','include','find','create','catch','body','params','ZendeskConfiguration','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','ZendeskField','getFields','password','authType','remoteUri','slice','substring','GET','%s/%s','ticket_fields','headers','format','%s:%s','toString','base64','Basic\x20%s','%s/token:%s','username','Sequelize','subject','description','assignee','remove','position','title','system_field_options','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','test','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','offset','undefined','limit','count','Content-Range','json','reject','save','update','then','destroy','error','stack','index','map','ZendeskAccount','rawAttributes','fieldName','type','model','name','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge'];(function(_0x3a8d5a,_0xe54840){var _0x308361=function(_0x2e7f86){while(--_0x2e7f86){_0x3a8d5a['push'](_0x3a8d5a['shift']());}};_0x308361(++_0xe54840);}(_0x16d2,0x123));var _0x216d=function(_0xd95114,_0x403ece){_0xd95114=_0xd95114-0x0;var _0x3275af=_0x16d2[_0xd95114];return _0x3275af;};'use strict';var emlformat=require(_0x216d('0x0'));var rimraf=require(_0x216d('0x1'));var zipdir=require(_0x216d('0x2'));var jsonpatch=require(_0x216d('0x3'));var rp=require(_0x216d('0x4'));var moment=require(_0x216d('0x5'));var BPromise=require(_0x216d('0x6'));var Mustache=require(_0x216d('0x7'));var util=require(_0x216d('0x8'));var path=require('path');var sox=require(_0x216d('0x9'));var csv=require(_0x216d('0xa'));var ejs=require(_0x216d('0xb'));var fs=require('fs');var fs_extra=require(_0x216d('0xc'));var _=require(_0x216d('0xd'));var squel=require(_0x216d('0xe'));var crypto=require(_0x216d('0xf'));var jsforce=require(_0x216d('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x216d('0xa'));var querystring=require(_0x216d('0x11'));var Papa=require(_0x216d('0x12'));var Redis=require(_0x216d('0x13'));var authService=require(_0x216d('0x14'));var qs=require(_0x216d('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x216d('0x16'));var logger=require('../../config/logger')(_0x216d('0x17'));var utils=require(_0x216d('0x18'));var config=require(_0x216d('0x19'));var licenseUtil=require(_0x216d('0x1a'));var db=require(_0x216d('0x1b'))['db'];var integrations=require(_0x216d('0x1c'));function respondWithStatusCode(_0x4c92d9,_0xb36a43){_0xb36a43=_0xb36a43||0xcc;return function(_0x4c07d0){if(_0x4c07d0){return _0x4c92d9[_0x216d('0x1d')](_0xb36a43);}return _0x4c92d9[_0x216d('0x1e')](_0xb36a43)['end']();};}function respondWithResult(_0x165c19,_0x322e4b){_0x322e4b=_0x322e4b||0xc8;return function(_0x54a816){if(_0x54a816){return _0x165c19[_0x216d('0x1e')](_0x322e4b)['json'](_0x54a816);}};}function respondWithFilteredResult(_0x448c0d,_0xf571a4){return function(_0x4631b0){if(_0x4631b0){var _0x23ff86=typeof _0xf571a4[_0x216d('0x1f')]===_0x216d('0x20')&&typeof _0xf571a4[_0x216d('0x21')]===_0x216d('0x20');var _0x19fdac=_0x4631b0['count'];var _0x3b60dd=_0x23ff86?0x0:_0xf571a4['offset'];var _0x4ddc51=_0x23ff86?_0x4631b0[_0x216d('0x22')]:_0xf571a4[_0x216d('0x1f')]+_0xf571a4['limit'];var _0x3f32e0;if(_0x4ddc51>=_0x19fdac){_0x4ddc51=_0x19fdac;_0x3f32e0=0xc8;}else{_0x3f32e0=0xce;}_0x448c0d[_0x216d('0x1e')](_0x3f32e0);return _0x448c0d['set'](_0x216d('0x23'),_0x3b60dd+'-'+_0x4ddc51+'/'+_0x19fdac)[_0x216d('0x24')](_0x4631b0);}return null;};}function patchUpdates(_0x430e81){return function(_0x3e9818){try{jsonpatch['apply'](_0x3e9818,_0x430e81,!![]);}catch(_0x20ee7c){return BPromise[_0x216d('0x25')](_0x20ee7c);}return _0x3e9818[_0x216d('0x26')]();};}function saveUpdates(_0x438981,_0x206782){return function(_0x57cfbd){if(_0x57cfbd){return _0x57cfbd[_0x216d('0x27')](_0x438981)[_0x216d('0x28')](function(_0x188494){return _0x188494;});}return null;};}function removeEntity(_0x2880c6,_0x6fa4b3){return function(_0x54d96f){if(_0x54d96f){return _0x54d96f[_0x216d('0x29')]()[_0x216d('0x28')](function(){_0x2880c6[_0x216d('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ec8a7,_0x56460f){return function(_0x4c792e){if(!_0x4c792e){_0x4ec8a7['sendStatus'](0x194);}return _0x4c792e;};}function handleError(_0x32f240,_0x470d8a){_0x470d8a=_0x470d8a||0x1f4;return function(_0x189413){logger[_0x216d('0x2a')](_0x189413[_0x216d('0x2b')]);if(_0x189413['name']){delete _0x189413['name'];}_0x32f240[_0x216d('0x1e')](_0x470d8a)['send'](_0x189413);};}exports[_0x216d('0x2c')]=function(_0x42abbe,_0x10f7c6){var _0x20bc16={},_0x307f2b={},_0x12bcab={'count':0x0,'rows':[]};var _0x28fcc2=_[_0x216d('0x2d')](db[_0x216d('0x2e')][_0x216d('0x2f')],function(_0x11be90){return{'name':_0x11be90[_0x216d('0x30')],'type':_0x11be90[_0x216d('0x31')]['key']};});_0x307f2b[_0x216d('0x32')]=_[_0x216d('0x2d')](_0x28fcc2,_0x216d('0x33'));_0x307f2b['query']=_[_0x216d('0x34')](_0x42abbe[_0x216d('0x35')]);_0x307f2b[_0x216d('0x36')]=_[_0x216d('0x37')](_0x307f2b['model'],_0x307f2b[_0x216d('0x35')]);_0x20bc16[_0x216d('0x38')]=_[_0x216d('0x37')](_0x307f2b[_0x216d('0x32')],qs[_0x216d('0x39')](_0x42abbe[_0x216d('0x35')][_0x216d('0x39')]));_0x20bc16[_0x216d('0x38')]=_0x20bc16[_0x216d('0x38')][_0x216d('0x3a')]?_0x20bc16[_0x216d('0x38')]:_0x307f2b['model'];if(!_0x42abbe[_0x216d('0x35')][_0x216d('0x3b')](_0x216d('0x3c'))){_0x20bc16['limit']=qs[_0x216d('0x21')](_0x42abbe[_0x216d('0x35')]['limit']);_0x20bc16[_0x216d('0x1f')]=qs['offset'](_0x42abbe['query'][_0x216d('0x1f')]);}_0x20bc16[_0x216d('0x3d')]=qs[_0x216d('0x3e')](_0x42abbe[_0x216d('0x35')]['sort']);_0x20bc16['where']=qs['filters'](_[_0x216d('0x3f')](_0x42abbe[_0x216d('0x35')],_0x307f2b['filters']),_0x28fcc2);if(_0x42abbe[_0x216d('0x35')][_0x216d('0x40')]){_0x20bc16['where']=_[_0x216d('0x41')](_0x20bc16[_0x216d('0x42')],{'$or':_[_0x216d('0x2d')](_0x28fcc2,function(_0x474fab){if(_0x474fab[_0x216d('0x31')]!==_0x216d('0x43')){var _0x35cb6e={};_0x35cb6e[_0x474fab[_0x216d('0x33')]]={'$like':'%'+_0x42abbe['query']['filter']+'%'};return _0x35cb6e;}})});}_0x20bc16=_[_0x216d('0x41')]({},_0x20bc16,_0x42abbe[_0x216d('0x44')]);var _0x504a34={'where':_0x20bc16[_0x216d('0x42')]};return db[_0x216d('0x2e')][_0x216d('0x22')](_0x504a34)['then'](function(_0x2c3e44){_0x12bcab[_0x216d('0x22')]=_0x2c3e44;if(_0x42abbe[_0x216d('0x35')][_0x216d('0x45')]){_0x20bc16['include']=[{'all':!![]}];}return db[_0x216d('0x2e')][_0x216d('0x46')](_0x20bc16);})['then'](function(_0x37bf4a){_0x12bcab[_0x216d('0x47')]=_0x37bf4a;return _0x12bcab;})['then'](respondWithFilteredResult(_0x10f7c6,_0x20bc16))['catch'](handleError(_0x10f7c6,null));};exports[_0x216d('0x48')]=function(_0x440bc9,_0x3c491e){var _0x498efe={'raw':![],'where':{'id':_0x440bc9['params']['id']}},_0x3e361a={};_0x3e361a['model']=_[_0x216d('0x34')](db[_0x216d('0x2e')][_0x216d('0x2f')]);_0x3e361a['query']=_[_0x216d('0x34')](_0x440bc9['query']);_0x3e361a[_0x216d('0x36')]=_[_0x216d('0x37')](_0x3e361a[_0x216d('0x32')],_0x3e361a['query']);_0x498efe[_0x216d('0x38')]=_[_0x216d('0x37')](_0x3e361a[_0x216d('0x32')],qs[_0x216d('0x39')](_0x440bc9['query']['fields']));_0x498efe['attributes']=_0x498efe[_0x216d('0x38')][_0x216d('0x3a')]?_0x498efe[_0x216d('0x38')]:_0x3e361a[_0x216d('0x32')];if(_0x440bc9[_0x216d('0x35')][_0x216d('0x45')]){_0x498efe[_0x216d('0x49')]=[{'all':!![]}];}_0x498efe=_[_0x216d('0x41')]({},_0x498efe,_0x440bc9['options']);return db[_0x216d('0x2e')][_0x216d('0x4a')](_0x498efe)[_0x216d('0x28')](handleEntityNotFound(_0x3c491e,null))[_0x216d('0x28')](respondWithResult(_0x3c491e,null))['catch'](handleError(_0x3c491e,null));};exports[_0x216d('0x4b')]=function(_0x542e1b,_0x1f2fa5){return db[_0x216d('0x2e')][_0x216d('0x4b')](_0x542e1b['body'],{})['then'](respondWithResult(_0x1f2fa5,0xc9))[_0x216d('0x4c')](handleError(_0x1f2fa5,null));};exports[_0x216d('0x27')]=function(_0x3932a3,_0x1340fe){if(_0x3932a3[_0x216d('0x4d')]['id']){delete _0x3932a3[_0x216d('0x4d')]['id'];}return db['ZendeskAccount']['find']({'where':{'id':_0x3932a3[_0x216d('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1340fe,null))[_0x216d('0x28')](saveUpdates(_0x3932a3[_0x216d('0x4d')],null))['then'](respondWithResult(_0x1340fe,null))['catch'](handleError(_0x1340fe,null));};exports['destroy']=function(_0x4bac14,_0x1ae9b7){return db[_0x216d('0x2e')][_0x216d('0x4a')]({'where':{'id':_0x4bac14[_0x216d('0x4e')]['id']}})[_0x216d('0x28')](handleEntityNotFound(_0x1ae9b7,null))[_0x216d('0x28')](removeEntity(_0x1ae9b7,null))[_0x216d('0x4c')](handleError(_0x1ae9b7,null));};exports['getConfigurations']=function(_0x3f70c9,_0x34cdb9,_0x119b12){var _0x54dd49={};var _0x1e1caf={};var _0x10fe2e;var _0x2c7c67;return db[_0x216d('0x2e')]['findOne']({'where':{'id':_0x3f70c9[_0x216d('0x4e')]['id']}})[_0x216d('0x28')](handleEntityNotFound(_0x34cdb9,null))[_0x216d('0x28')](function(_0x1a4761){if(_0x1a4761){_0x10fe2e=_0x1a4761;_0x1e1caf['model']=_[_0x216d('0x34')](db[_0x216d('0x4f')]['rawAttributes']);_0x1e1caf[_0x216d('0x35')]=_['keys'](_0x3f70c9[_0x216d('0x35')]);_0x1e1caf[_0x216d('0x36')]=_[_0x216d('0x37')](_0x1e1caf[_0x216d('0x32')],_0x1e1caf[_0x216d('0x35')]);_0x54dd49[_0x216d('0x38')]=_[_0x216d('0x37')](_0x1e1caf[_0x216d('0x32')],qs[_0x216d('0x39')](_0x3f70c9['query'][_0x216d('0x39')]));_0x54dd49[_0x216d('0x38')]=_0x54dd49['attributes'][_0x216d('0x3a')]?_0x54dd49[_0x216d('0x38')]:_0x1e1caf['model'];_0x54dd49['order']=qs[_0x216d('0x3e')](_0x3f70c9['query'][_0x216d('0x3e')]);_0x54dd49[_0x216d('0x42')]=qs[_0x216d('0x36')](_['pick'](_0x3f70c9[_0x216d('0x35')],_0x1e1caf['filters']));if(_0x3f70c9['query'][_0x216d('0x40')]){_0x54dd49[_0x216d('0x42')]=_['merge'](_0x54dd49[_0x216d('0x42')],{'$or':_[_0x216d('0x2d')](_0x54dd49[_0x216d('0x38')],function(_0x3f9097){var _0x2ae667={};_0x2ae667[_0x3f9097]={'$like':'%'+_0x3f70c9[_0x216d('0x35')]['filter']+'%'};return _0x2ae667;})});}_0x54dd49=_['merge']({},_0x54dd49,_0x3f70c9[_0x216d('0x44')]);return _0x10fe2e[_0x216d('0x50')](_0x54dd49);}})[_0x216d('0x28')](function(_0x1551b6){if(_0x1551b6){_0x2c7c67=_0x1551b6[_0x216d('0x3a')];if(!_0x3f70c9[_0x216d('0x35')][_0x216d('0x3b')](_0x216d('0x3c'))){_0x54dd49[_0x216d('0x21')]=qs[_0x216d('0x21')](_0x3f70c9[_0x216d('0x35')][_0x216d('0x21')]);_0x54dd49['offset']=qs['offset'](_0x3f70c9[_0x216d('0x35')][_0x216d('0x1f')]);}return _0x10fe2e['getConfigurations'](_0x54dd49);}})[_0x216d('0x28')](function(_0x5eb684){if(_0x5eb684){return _0x5eb684?{'count':_0x2c7c67,'rows':_0x5eb684}:null;}})['then'](respondWithResult(_0x34cdb9,null))[_0x216d('0x4c')](handleError(_0x34cdb9,null));};exports[_0x216d('0x51')]=function(_0x20806e,_0x17ce26,_0x1d404c){if(_0x20806e[_0x216d('0x4d')]['id']){delete _0x20806e[_0x216d('0x4d')]['id'];}return db[_0x216d('0x2e')][_0x216d('0x52')]({'where':{'id':_0x20806e[_0x216d('0x4e')]['id']}})[_0x216d('0x28')](handleEntityNotFound(_0x17ce26,null))[_0x216d('0x28')](function(_0x19c7cf){if(_0x19c7cf){_0x20806e[_0x216d('0x4d')][_0x216d('0x53')]=_0x19c7cf['id'];_0x20806e[_0x216d('0x4d')][_0x216d('0x54')]=integrations[_0x216d('0x55')](_0x20806e[_0x216d('0x4d')][_0x216d('0x56')],_0x20806e[_0x216d('0x4d')][_0x216d('0x31')]);_0x20806e['body'][_0x216d('0x57')]=integrations['getDescriptions'](_0x20806e[_0x216d('0x4d')]['channel'],_0x20806e[_0x216d('0x4d')][_0x216d('0x31')]);return db['ZendeskConfiguration'][_0x216d('0x4b')](_0x20806e[_0x216d('0x4d')],{'include':[{'model':db[_0x216d('0x58')],'as':_0x216d('0x54')},{'model':db[_0x216d('0x58')],'as':_0x216d('0x57')}]});}return null;})[_0x216d('0x28')](respondWithResult(_0x17ce26,null))[_0x216d('0x4c')](handleError(_0x17ce26,null));};exports[_0x216d('0x59')]=function(_0x5acc44,_0x120f8a,_0x299cc7){var _0x16cf09='';return db['ZendeskAccount']['findOne']({'where':{'id':_0x5acc44['params']['id']},'attributes':['id','username',_0x216d('0x5a'),'token',_0x216d('0x5b'),_0x216d('0x5c')]})[_0x216d('0x28')](handleEntityNotFound(_0x120f8a,null))[_0x216d('0x28')](function(_0x431014){if(_0x431014){_0x16cf09=_0x431014[_0x216d('0x5c')];var _0x3a2e7c=_0x16cf09[_0x216d('0x5d')](-0x1);if(_0x3a2e7c==='/'){_0x16cf09=_0x16cf09[_0x216d('0x5e')](0x0,_0x16cf09['lastIndexOf'](_0x3a2e7c));}var _0x4e4e1a={'method':_0x216d('0x5f'),'uri':util['format'](_0x216d('0x60'),_0x16cf09,_0x216d('0x61')),'json':!![]};switch(_0x431014[_0x216d('0x5b')]){case _0x216d('0x5a'):_0x4e4e1a[_0x216d('0x62')]={'Authorization':util[_0x216d('0x63')]('Basic\x20%s',new Buffer(util['format'](_0x216d('0x64'),_0x431014['username'],_0x431014[_0x216d('0x5a')]))[_0x216d('0x65')](_0x216d('0x66')))};break;case'token':_0x4e4e1a['headers']={'Authorization':util['format'](_0x216d('0x67'),new Buffer(util[_0x216d('0x63')](_0x216d('0x68'),_0x431014[_0x216d('0x69')],_0x431014['token']))[_0x216d('0x65')](_0x216d('0x66')))};break;default:throw new db[(_0x216d('0x6a'))]['ValidationError']('Unknown\x20authentication\x20type');}return rp(_0x4e4e1a);}})[_0x216d('0x28')](function(_0x87511b){if(_0x87511b){var _0x273d11=[_0x216d('0x6b'),_0x216d('0x6c'),'group',_0x216d('0x6d')];_[_0x216d('0x6e')](_0x87511b[_0x216d('0x61')],function(_0x325bd8){return _0x273d11['includes'](_0x325bd8[_0x216d('0x31')]);});return{'count':_0x87511b['ticket_fields'][_0x216d('0x3a')],'rows':_['map'](_0x87511b[_0x216d('0x61')],function(_0x3ae6df){return{'id':_0x3ae6df['id'],'name':_0x3ae6df[_0x216d('0x6f')]>0x7?_0x3ae6df[_0x216d('0x70')]:_0x3ae6df[_0x216d('0x31')],'custom':_0x3ae6df['position']>0x7?!![]:![],'options':_0x3ae6df[_0x216d('0x71')]?_0x3ae6df['system_field_options']:_0x3ae6df['custom_field_options']?_0x3ae6df['custom_field_options']:[]};})};}})['then'](respondWithResult(_0x120f8a,null))[_0x216d('0x4c')](function(_0x38e7d7){var _0xa1594b=_0x5acc44['query']['test']?0x1f4:_0x38e7d7[_0x216d('0x72')]||0x1f4;logger[_0x216d('0x2a')](_0x216d('0x73'),_0x216d('0x59'),_0xa1594b,JSON[_0x216d('0x74')](_0x38e7d7));delete _0x38e7d7['name'];if(_0xa1594b===0x191){_0xa1594b=0x190;}_0x120f8a['status'](_0xa1594b)[_0x216d('0x75')](_0x5acc44['query'][_0x216d('0x76')]?{'message':'Wrong\x20credentials','statusCode':_0x38e7d7[_0x216d('0x72')]}:_0x38e7d7);});};
\ No newline at end of file
+var _0x91a7=['includes','position','system_field_options','custom_field_options','test','getFields,\x20%s,\x20%s,\x20%s','statusCode','rimraf','zip-dir','fast-json-patch','moment','mustache','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','set','apply','reject','save','update','then','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','ZendeskAccount','count','include','rows','params','keys','includeAll','find','catch','create','body','destroy','getConfigurations','ZendeskConfiguration','hasOwnProperty','AccountId','Subjects','getSubjects','channel','ZendeskField','Descriptions','getFields','findOne','username','password','token','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','Basic\x20%s','headers','toString','base64','Sequelize','ValidationError','subject','description','group','assignee','remove','ticket_fields'];(function(_0x6f0cfb,_0x1609ac){var _0x2c9a76=function(_0x5be373){while(--_0x5be373){_0x6f0cfb['push'](_0x6f0cfb['shift']());}};_0x2c9a76(++_0x1609ac);}(_0x91a7,0xe7));var _0x791a=function(_0x383143,_0x6cdee5){_0x383143=_0x383143-0x0;var _0x5a04d5=_0x91a7[_0x383143];return _0x5a04d5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x791a('0x0'));var zipdir=require(_0x791a('0x1'));var jsonpatch=require(_0x791a('0x2'));var rp=require('request-promise');var moment=require(_0x791a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x791a('0x4'));var util=require('util');var path=require('path');var sox=require(_0x791a('0x5'));var csv=require(_0x791a('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x791a('0x7'));var _=require('lodash');var squel=require(_0x791a('0x8'));var crypto=require(_0x791a('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x791a('0xa'));var toCsv=require(_0x791a('0x6'));var querystring=require(_0x791a('0xb'));var Papa=require(_0x791a('0xc'));var Redis=require(_0x791a('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x791a('0xe'));var as=require(_0x791a('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x791a('0x10'))(_0x791a('0x11'));var utils=require(_0x791a('0x12'));var config=require(_0x791a('0x13'));var licenseUtil=require(_0x791a('0x14'));var db=require(_0x791a('0x15'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5daecd,_0xc92016){_0xc92016=_0xc92016||0xcc;return function(_0x2f2d8d){if(_0x2f2d8d){return _0x5daecd['sendStatus'](_0xc92016);}return _0x5daecd[_0x791a('0x16')](_0xc92016)[_0x791a('0x17')]();};}function respondWithResult(_0x5d5b11,_0x2887f0){_0x2887f0=_0x2887f0||0xc8;return function(_0x31b86d){if(_0x31b86d){return _0x5d5b11[_0x791a('0x16')](_0x2887f0)[_0x791a('0x18')](_0x31b86d);}};}function respondWithFilteredResult(_0x55e845,_0x2ce2e0){return function(_0x575d11){if(_0x575d11){var _0x43dea6=typeof _0x2ce2e0[_0x791a('0x19')]==='undefined'&&typeof _0x2ce2e0[_0x791a('0x1a')]==='undefined';var _0x35fe48=_0x575d11['count'];var _0x4a84ee=_0x43dea6?0x0:_0x2ce2e0['offset'];var _0x40f0d3=_0x43dea6?_0x575d11['count']:_0x2ce2e0['offset']+_0x2ce2e0[_0x791a('0x1a')];var _0x5a702e;if(_0x40f0d3>=_0x35fe48){_0x40f0d3=_0x35fe48;_0x5a702e=0xc8;}else{_0x5a702e=0xce;}_0x55e845[_0x791a('0x16')](_0x5a702e);return _0x55e845[_0x791a('0x1b')]('Content-Range',_0x4a84ee+'-'+_0x40f0d3+'/'+_0x35fe48)[_0x791a('0x18')](_0x575d11);}return null;};}function patchUpdates(_0xcb5e66){return function(_0x234514){try{jsonpatch[_0x791a('0x1c')](_0x234514,_0xcb5e66,!![]);}catch(_0x530e32){return BPromise[_0x791a('0x1d')](_0x530e32);}return _0x234514[_0x791a('0x1e')]();};}function saveUpdates(_0x25bae5,_0x9e17b5){return function(_0x3200dd){if(_0x3200dd){return _0x3200dd[_0x791a('0x1f')](_0x25bae5)[_0x791a('0x20')](function(_0x45a67d){return _0x45a67d;});}return null;};}function removeEntity(_0x323c6a,_0xe8e452){return function(_0x137992){if(_0x137992){return _0x137992['destroy']()[_0x791a('0x20')](function(){_0x323c6a[_0x791a('0x16')](0xcc)[_0x791a('0x17')]();});}};}function handleEntityNotFound(_0x2966b8,_0x4d748a){return function(_0x456480){if(!_0x456480){_0x2966b8[_0x791a('0x21')](0x194);}return _0x456480;};}function handleError(_0x51dcca,_0xdfa84f){_0xdfa84f=_0xdfa84f||0x1f4;return function(_0x1785f5){logger[_0x791a('0x22')](_0x1785f5['stack']);if(_0x1785f5[_0x791a('0x23')]){delete _0x1785f5[_0x791a('0x23')];}_0x51dcca[_0x791a('0x16')](_0xdfa84f)[_0x791a('0x24')](_0x1785f5);};}exports[_0x791a('0x25')]=function(_0x1a9c6b,_0x628816){var _0x889534={},_0x58bbc0={},_0xbc3436={'count':0x0,'rows':[]};var _0x9e9332=_[_0x791a('0x26')](db['ZendeskAccount'][_0x791a('0x27')],function(_0x5df656){return{'name':_0x5df656[_0x791a('0x28')],'type':_0x5df656[_0x791a('0x29')][_0x791a('0x2a')]};});_0x58bbc0[_0x791a('0x2b')]=_[_0x791a('0x26')](_0x9e9332,_0x791a('0x23'));_0x58bbc0[_0x791a('0x2c')]=_['keys'](_0x1a9c6b[_0x791a('0x2c')]);_0x58bbc0[_0x791a('0x2d')]=_[_0x791a('0x2e')](_0x58bbc0[_0x791a('0x2b')],_0x58bbc0[_0x791a('0x2c')]);_0x889534['attributes']=_[_0x791a('0x2e')](_0x58bbc0[_0x791a('0x2b')],qs[_0x791a('0x2f')](_0x1a9c6b[_0x791a('0x2c')][_0x791a('0x2f')]));_0x889534['attributes']=_0x889534[_0x791a('0x30')][_0x791a('0x31')]?_0x889534[_0x791a('0x30')]:_0x58bbc0[_0x791a('0x2b')];if(!_0x1a9c6b[_0x791a('0x2c')]['hasOwnProperty'](_0x791a('0x32'))){_0x889534['limit']=qs[_0x791a('0x1a')](_0x1a9c6b['query']['limit']);_0x889534[_0x791a('0x19')]=qs[_0x791a('0x19')](_0x1a9c6b[_0x791a('0x2c')][_0x791a('0x19')]);}_0x889534[_0x791a('0x33')]=qs[_0x791a('0x34')](_0x1a9c6b[_0x791a('0x2c')]['sort']);_0x889534[_0x791a('0x35')]=qs['filters'](_[_0x791a('0x36')](_0x1a9c6b['query'],_0x58bbc0[_0x791a('0x2d')]),_0x9e9332);if(_0x1a9c6b[_0x791a('0x2c')]['filter']){_0x889534[_0x791a('0x35')]=_[_0x791a('0x37')](_0x889534['where'],{'$or':_[_0x791a('0x26')](_0x9e9332,function(_0x165e2b){if(_0x165e2b[_0x791a('0x29')]!==_0x791a('0x38')){var _0x29d267={};_0x29d267[_0x165e2b[_0x791a('0x23')]]={'$like':'%'+_0x1a9c6b[_0x791a('0x2c')][_0x791a('0x39')]+'%'};return _0x29d267;}})});}_0x889534=_[_0x791a('0x37')]({},_0x889534,_0x1a9c6b[_0x791a('0x3a')]);var _0x587481={'where':_0x889534[_0x791a('0x35')]};return db[_0x791a('0x3b')][_0x791a('0x3c')](_0x587481)['then'](function(_0xf4e2fa){_0xbc3436['count']=_0xf4e2fa;if(_0x1a9c6b['query']['includeAll']){_0x889534[_0x791a('0x3d')]=[{'all':!![]}];}return db[_0x791a('0x3b')]['findAll'](_0x889534);})[_0x791a('0x20')](function(_0x2d1692){_0xbc3436[_0x791a('0x3e')]=_0x2d1692;return _0xbc3436;})[_0x791a('0x20')](respondWithFilteredResult(_0x628816,_0x889534))['catch'](handleError(_0x628816,null));};exports['show']=function(_0x57b9ba,_0x2f0395){var _0x216dd3={'raw':![],'where':{'id':_0x57b9ba[_0x791a('0x3f')]['id']}},_0x4e0191={};_0x4e0191[_0x791a('0x2b')]=_[_0x791a('0x40')](db[_0x791a('0x3b')]['rawAttributes']);_0x4e0191[_0x791a('0x2c')]=_['keys'](_0x57b9ba[_0x791a('0x2c')]);_0x4e0191[_0x791a('0x2d')]=_[_0x791a('0x2e')](_0x4e0191[_0x791a('0x2b')],_0x4e0191[_0x791a('0x2c')]);_0x216dd3['attributes']=_[_0x791a('0x2e')](_0x4e0191[_0x791a('0x2b')],qs[_0x791a('0x2f')](_0x57b9ba[_0x791a('0x2c')][_0x791a('0x2f')]));_0x216dd3['attributes']=_0x216dd3[_0x791a('0x30')][_0x791a('0x31')]?_0x216dd3['attributes']:_0x4e0191['model'];if(_0x57b9ba[_0x791a('0x2c')][_0x791a('0x41')]){_0x216dd3[_0x791a('0x3d')]=[{'all':!![]}];}_0x216dd3=_['merge']({},_0x216dd3,_0x57b9ba['options']);return db[_0x791a('0x3b')][_0x791a('0x42')](_0x216dd3)['then'](handleEntityNotFound(_0x2f0395,null))[_0x791a('0x20')](respondWithResult(_0x2f0395,null))[_0x791a('0x43')](handleError(_0x2f0395,null));};exports[_0x791a('0x44')]=function(_0x549980,_0x5a30a6){return db[_0x791a('0x3b')][_0x791a('0x44')](_0x549980[_0x791a('0x45')],{})[_0x791a('0x20')](respondWithResult(_0x5a30a6,0xc9))['catch'](handleError(_0x5a30a6,null));};exports[_0x791a('0x1f')]=function(_0x9f768a,_0x4e6d0d){if(_0x9f768a[_0x791a('0x45')]['id']){delete _0x9f768a['body']['id'];}return db[_0x791a('0x3b')][_0x791a('0x42')]({'where':{'id':_0x9f768a[_0x791a('0x3f')]['id']}})[_0x791a('0x20')](handleEntityNotFound(_0x4e6d0d,null))[_0x791a('0x20')](saveUpdates(_0x9f768a[_0x791a('0x45')],null))[_0x791a('0x20')](respondWithResult(_0x4e6d0d,null))['catch'](handleError(_0x4e6d0d,null));};exports[_0x791a('0x46')]=function(_0x1fd826,_0x4bffa6){return db[_0x791a('0x3b')][_0x791a('0x42')]({'where':{'id':_0x1fd826['params']['id']}})[_0x791a('0x20')](handleEntityNotFound(_0x4bffa6,null))[_0x791a('0x20')](removeEntity(_0x4bffa6,null))[_0x791a('0x43')](handleError(_0x4bffa6,null));};exports[_0x791a('0x47')]=function(_0xd5ec90,_0x4d82eb,_0x4ab42f){var _0x5a616f={};var _0x305033={};var _0x51b556;var _0x4c7555;return db[_0x791a('0x3b')]['findOne']({'where':{'id':_0xd5ec90[_0x791a('0x3f')]['id']}})[_0x791a('0x20')](handleEntityNotFound(_0x4d82eb,null))['then'](function(_0x5166b5){if(_0x5166b5){_0x51b556=_0x5166b5;_0x305033[_0x791a('0x2b')]=_['keys'](db[_0x791a('0x48')][_0x791a('0x27')]);_0x305033[_0x791a('0x2c')]=_['keys'](_0xd5ec90[_0x791a('0x2c')]);_0x305033[_0x791a('0x2d')]=_['intersection'](_0x305033[_0x791a('0x2b')],_0x305033[_0x791a('0x2c')]);_0x5a616f[_0x791a('0x30')]=_[_0x791a('0x2e')](_0x305033[_0x791a('0x2b')],qs[_0x791a('0x2f')](_0xd5ec90['query']['fields']));_0x5a616f[_0x791a('0x30')]=_0x5a616f['attributes'][_0x791a('0x31')]?_0x5a616f[_0x791a('0x30')]:_0x305033[_0x791a('0x2b')];_0x5a616f[_0x791a('0x33')]=qs[_0x791a('0x34')](_0xd5ec90[_0x791a('0x2c')][_0x791a('0x34')]);_0x5a616f['where']=qs[_0x791a('0x2d')](_[_0x791a('0x36')](_0xd5ec90[_0x791a('0x2c')],_0x305033[_0x791a('0x2d')]));if(_0xd5ec90[_0x791a('0x2c')][_0x791a('0x39')]){_0x5a616f[_0x791a('0x35')]=_['merge'](_0x5a616f[_0x791a('0x35')],{'$or':_['map'](_0x5a616f['attributes'],function(_0x1cc240){var _0x3c81e2={};_0x3c81e2[_0x1cc240]={'$like':'%'+_0xd5ec90[_0x791a('0x2c')][_0x791a('0x39')]+'%'};return _0x3c81e2;})});}_0x5a616f=_[_0x791a('0x37')]({},_0x5a616f,_0xd5ec90[_0x791a('0x3a')]);return _0x51b556[_0x791a('0x47')](_0x5a616f);}})[_0x791a('0x20')](function(_0x2bfb66){if(_0x2bfb66){_0x4c7555=_0x2bfb66[_0x791a('0x31')];if(!_0xd5ec90[_0x791a('0x2c')][_0x791a('0x49')](_0x791a('0x32'))){_0x5a616f[_0x791a('0x1a')]=qs[_0x791a('0x1a')](_0xd5ec90[_0x791a('0x2c')][_0x791a('0x1a')]);_0x5a616f[_0x791a('0x19')]=qs[_0x791a('0x19')](_0xd5ec90[_0x791a('0x2c')]['offset']);}return _0x51b556[_0x791a('0x47')](_0x5a616f);}})[_0x791a('0x20')](function(_0x380087){if(_0x380087){return _0x380087?{'count':_0x4c7555,'rows':_0x380087}:null;}})[_0x791a('0x20')](respondWithResult(_0x4d82eb,null))[_0x791a('0x43')](handleError(_0x4d82eb,null));};exports['addConfiguration']=function(_0x42ce59,_0x3d24bd,_0x277774){if(_0x42ce59[_0x791a('0x45')]['id']){delete _0x42ce59['body']['id'];}return db[_0x791a('0x3b')]['findOne']({'where':{'id':_0x42ce59['params']['id']}})['then'](handleEntityNotFound(_0x3d24bd,null))['then'](function(_0x22aaf2){if(_0x22aaf2){_0x42ce59[_0x791a('0x45')][_0x791a('0x4a')]=_0x22aaf2['id'];_0x42ce59[_0x791a('0x45')][_0x791a('0x4b')]=integrations[_0x791a('0x4c')](_0x42ce59[_0x791a('0x45')]['channel'],_0x42ce59['body'][_0x791a('0x29')]);_0x42ce59[_0x791a('0x45')]['Descriptions']=integrations['getDescriptions'](_0x42ce59[_0x791a('0x45')][_0x791a('0x4d')],_0x42ce59['body'][_0x791a('0x29')]);return db[_0x791a('0x48')][_0x791a('0x44')](_0x42ce59[_0x791a('0x45')],{'include':[{'model':db['ZendeskField'],'as':'Subjects'},{'model':db[_0x791a('0x4e')],'as':_0x791a('0x4f')}]});}return null;})['then'](respondWithResult(_0x3d24bd,null))[_0x791a('0x43')](handleError(_0x3d24bd,null));};exports[_0x791a('0x50')]=function(_0x10b51f,_0x3838c4,_0x565c83){var _0x24efc2='';return db[_0x791a('0x3b')][_0x791a('0x51')]({'where':{'id':_0x10b51f[_0x791a('0x3f')]['id']},'attributes':['id',_0x791a('0x52'),_0x791a('0x53'),_0x791a('0x54'),_0x791a('0x55'),'remoteUri']})['then'](handleEntityNotFound(_0x3838c4,null))['then'](function(_0xf8ac72){if(_0xf8ac72){_0x24efc2=_0xf8ac72[_0x791a('0x56')];var _0x1118a8=_0x24efc2[_0x791a('0x57')](-0x1);if(_0x1118a8==='/'){_0x24efc2=_0x24efc2[_0x791a('0x58')](0x0,_0x24efc2[_0x791a('0x59')](_0x1118a8));}var _0x348e54={'method':_0x791a('0x5a'),'uri':util[_0x791a('0x5b')](_0x791a('0x5c'),_0x24efc2,'ticket_fields'),'json':!![]};switch(_0xf8ac72[_0x791a('0x55')]){case _0x791a('0x53'):_0x348e54['headers']={'Authorization':util[_0x791a('0x5b')](_0x791a('0x5d'),new Buffer(util['format']('%s:%s',_0xf8ac72[_0x791a('0x52')],_0xf8ac72[_0x791a('0x53')]))['toString']('base64'))};break;case _0x791a('0x54'):_0x348e54[_0x791a('0x5e')]={'Authorization':util[_0x791a('0x5b')]('Basic\x20%s',new Buffer(util[_0x791a('0x5b')]('%s/token:%s',_0xf8ac72[_0x791a('0x52')],_0xf8ac72[_0x791a('0x54')]))[_0x791a('0x5f')](_0x791a('0x60')))};break;default:throw new db[(_0x791a('0x61'))][(_0x791a('0x62'))]('Unknown\x20authentication\x20type');}return rp(_0x348e54);}})[_0x791a('0x20')](function(_0x2e666e){if(_0x2e666e){var _0x41d1a5=[_0x791a('0x63'),_0x791a('0x64'),_0x791a('0x65'),_0x791a('0x66')];_[_0x791a('0x67')](_0x2e666e[_0x791a('0x68')],function(_0x203fc5){return _0x41d1a5[_0x791a('0x69')](_0x203fc5[_0x791a('0x29')]);});return{'count':_0x2e666e[_0x791a('0x68')][_0x791a('0x31')],'rows':_[_0x791a('0x26')](_0x2e666e[_0x791a('0x68')],function(_0x3272c0){return{'id':_0x3272c0['id'],'name':_0x3272c0[_0x791a('0x6a')]>0x7?_0x3272c0['title']:_0x3272c0[_0x791a('0x29')],'custom':_0x3272c0[_0x791a('0x6a')]>0x7?!![]:![],'options':_0x3272c0[_0x791a('0x6b')]?_0x3272c0[_0x791a('0x6b')]:_0x3272c0[_0x791a('0x6c')]?_0x3272c0['custom_field_options']:[]};})};}})[_0x791a('0x20')](respondWithResult(_0x3838c4,null))['catch'](function(_0x467d65){var _0x48b8dc=_0x10b51f[_0x791a('0x2c')][_0x791a('0x6d')]?0x1f4:_0x467d65['statusCode']||0x1f4;logger[_0x791a('0x22')](_0x791a('0x6e'),_0x791a('0x50'),_0x48b8dc,JSON['stringify'](_0x467d65));delete _0x467d65[_0x791a('0x23')];if(_0x48b8dc===0x191){_0x48b8dc=0x190;}_0x3838c4['status'](_0x48b8dc)[_0x791a('0x24')](_0x10b51f['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x467d65[_0x791a('0x6f')]}:_0x467d65);});};
\ No newline at end of file
index 37c6e70..5912d4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f62=['request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x3bd2f8,_0x444d19){var _0x2dc770=function(_0x245d65){while(--_0x245d65){_0x3bd2f8['push'](_0x3bd2f8['shift']());}};_0x2dc770(++_0x444d19);}(_0x3f62,0x180));var _0x23f6=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x3f62[_0x9df060];return _0x338dfe;};'use strict';var _=require(_0x23f6('0x0'));var util=require(_0x23f6('0x1'));var logger=require(_0x23f6('0x2'))(_0x23f6('0x3'));var moment=require(_0x23f6('0x4'));var BPromise=require(_0x23f6('0x5'));var rp=require(_0x23f6('0x6'));var fs=require('fs');var path=require(_0x23f6('0x7'));var rimraf=require(_0x23f6('0x8'));var config=require(_0x23f6('0x9'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0x23f6('0xa'));module[_0x23f6('0xb')]=function(_0x24080f,_0x18215a){return _0x24080f[_0x23f6('0xc')](_0x23f6('0xd'),attributes,{'tableName':_0x23f6('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x543f=['moment','bluebird','request-promise','path','rimraf','../../components/integrations/configuration','define','ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger','api'];(function(_0x10956e,_0x76475){var _0x7e6b93=function(_0x303d80){while(--_0x303d80){_0x10956e['push'](_0x10956e['shift']());}};_0x7e6b93(++_0x76475);}(_0x543f,0x18f));var _0xf543=function(_0x387f37,_0x486033){_0x387f37=_0x387f37-0x0;var _0x2d64a9=_0x543f[_0x387f37];return _0x2d64a9;};'use strict';var _=require(_0xf543('0x0'));var util=require(_0xf543('0x1'));var logger=require(_0xf543('0x2'))(_0xf543('0x3'));var moment=require(_0xf543('0x4'));var BPromise=require(_0xf543('0x5'));var rp=require(_0xf543('0x6'));var fs=require('fs');var path=require(_0xf543('0x7'));var rimraf=require(_0xf543('0x8'));var config=require('../../config/environment');var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0xf543('0x9'));module['exports']=function(_0x58b240,_0x550c54){return _0x58b240[_0xf543('0xa')](_0xf543('0xb'),attributes,{'tableName':_0xf543('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 51dc539..731b394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd1=['model','ShowZendeskAccount','find','lodash','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','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','findAll','options','raw','where','attributes','limit','include','map'];(function(_0xce44ee,_0x387d70){var _0xf97a49=function(_0x3ceab0){while(--_0x3ceab0){_0xce44ee['push'](_0xce44ee['shift']());}};_0xf97a49(++_0x387d70);}(_0x5fd1,0x18f));var _0x15fd=function(_0x4073c7,_0x56156e){_0x4073c7=_0x4073c7-0x0;var _0x4ec42d=_0x5fd1[_0x4073c7];return _0x4ec42d;};'use strict';var _=require(_0x15fd('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x15fd('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x15fd('0x2'))['db'];var utils=require(_0x15fd('0x3'));var logger=require(_0x15fd('0x4'))(_0x15fd('0x5'));var config=require(_0x15fd('0x6'));var jayson=require(_0x15fd('0x7'));var client=jayson[_0x15fd('0x8')][_0x15fd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3a0638,_0x5e436,_0x45c2b1){return new BPromise(function(_0x4b1988,_0x2777bd){return client[_0x15fd('0xa')](_0x3a0638,_0x45c2b1)[_0x15fd('0xb')](function(_0x587d82){logger[_0x15fd('0xc')](_0x15fd('0xd'),_0x5e436,_0x15fd('0xe'));logger[_0x15fd('0xf')](_0x15fd('0x10'),_0x5e436,_0x15fd('0xe'),JSON[_0x15fd('0x11')](_0x587d82));if(_0x587d82[_0x15fd('0x12')]){if(_0x587d82[_0x15fd('0x12')][_0x15fd('0x13')]===0x1f4){logger[_0x15fd('0x12')]('ZendeskAccount,\x20%s,\x20%s',_0x5e436,_0x587d82['error'][_0x15fd('0x14')]);return _0x2777bd(_0x587d82[_0x15fd('0x12')][_0x15fd('0x14')]);}logger[_0x15fd('0x12')](_0x15fd('0xd'),_0x5e436,_0x587d82[_0x15fd('0x12')][_0x15fd('0x14')]);return _0x4b1988(_0x587d82[_0x15fd('0x12')][_0x15fd('0x14')]);}else{logger[_0x15fd('0xc')](_0x15fd('0xd'),_0x5e436,_0x15fd('0xe'));_0x4b1988(_0x587d82[_0x15fd('0x15')]['message']);}})[_0x15fd('0x16')](function(_0x164182){logger[_0x15fd('0x12')](_0x15fd('0xd'),_0x5e436,_0x164182);_0x2777bd(_0x164182);});});}exports[_0x15fd('0x17')]=function(_0x4f4b1a){var _0x21aaae=this;return new Promise(function(_0x5517b9,_0x2f3b07){return db[_0x15fd('0x18')][_0x15fd('0x19')]({'raw':_0x4f4b1a['options']?_0x4f4b1a[_0x15fd('0x1a')][_0x15fd('0x1b')]===undefined?!![]:![]:!![],'where':_0x4f4b1a[_0x15fd('0x1a')]?_0x4f4b1a[_0x15fd('0x1a')][_0x15fd('0x1c')]||null:null,'attributes':_0x4f4b1a[_0x15fd('0x1a')]?_0x4f4b1a[_0x15fd('0x1a')][_0x15fd('0x1d')]||null:null,'limit':_0x4f4b1a[_0x15fd('0x1a')]?_0x4f4b1a[_0x15fd('0x1a')][_0x15fd('0x1e')]||null:null,'include':_0x4f4b1a['options']?_0x4f4b1a[_0x15fd('0x1a')][_0x15fd('0x1f')]?_['map'](_0x4f4b1a[_0x15fd('0x1a')][_0x15fd('0x1f')],function(_0x3feb0d){return{'model':db[_0x3feb0d['model']],'as':_0x3feb0d['as'],'attributes':_0x3feb0d[_0x15fd('0x1d')],'include':_0x3feb0d[_0x15fd('0x1f')]?_[_0x15fd('0x20')](_0x3feb0d[_0x15fd('0x1f')],function(_0x45d3fe){return{'model':db[_0x45d3fe[_0x15fd('0x21')]],'as':_0x45d3fe['as'],'attributes':_0x45d3fe['attributes'],'include':_0x45d3fe[_0x15fd('0x1f')]?_[_0x15fd('0x20')](_0x45d3fe[_0x15fd('0x1f')],function(_0x396fc8){return{'model':db[_0x396fc8[_0x15fd('0x21')]],'as':_0x396fc8['as'],'attributes':_0x396fc8[_0x15fd('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x15fd('0xb')](function(_0x200f66){logger[_0x15fd('0xc')](_0x15fd('0x17'),_0x4f4b1a);logger[_0x15fd('0xf')](_0x15fd('0x17'),_0x4f4b1a,JSON[_0x15fd('0x11')](_0x200f66));_0x5517b9(_0x200f66);})['catch'](function(_0x223d79){logger[_0x15fd('0x12')](_0x15fd('0x17'),_0x223d79[_0x15fd('0x14')],_0x4f4b1a);_0x2f3b07(_0x21aaae[_0x15fd('0x12')](0x1f4,_0x223d79[_0x15fd('0x14')]));});});};exports[_0x15fd('0x22')]=function(_0x124e86){var _0x257acc=this;return new Promise(function(_0x419969,_0x5503b9){return db[_0x15fd('0x18')][_0x15fd('0x23')]({'raw':_0x124e86[_0x15fd('0x1a')]?_0x124e86[_0x15fd('0x1a')][_0x15fd('0x1b')]===undefined?!![]:![]:!![],'where':_0x124e86[_0x15fd('0x1a')]?_0x124e86[_0x15fd('0x1a')]['where']||null:null,'attributes':_0x124e86[_0x15fd('0x1a')]?_0x124e86[_0x15fd('0x1a')][_0x15fd('0x1d')]||null:null,'include':_0x124e86[_0x15fd('0x1a')]?_0x124e86[_0x15fd('0x1a')]['include']?_[_0x15fd('0x20')](_0x124e86['options'][_0x15fd('0x1f')],function(_0x5090c7){return{'model':db[_0x5090c7[_0x15fd('0x21')]],'as':_0x5090c7['as'],'attributes':_0x5090c7['attributes'],'include':_0x5090c7[_0x15fd('0x1f')]?_[_0x15fd('0x20')](_0x5090c7['include'],function(_0xde86bb){return{'model':db[_0xde86bb[_0x15fd('0x21')]],'as':_0xde86bb['as'],'attributes':_0xde86bb['attributes'],'include':_0xde86bb[_0x15fd('0x1f')]?_[_0x15fd('0x20')](_0xde86bb[_0x15fd('0x1f')],function(_0x45e2f8){return{'model':db[_0x45e2f8[_0x15fd('0x21')]],'as':_0x45e2f8['as'],'attributes':_0x45e2f8['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2f89c4){logger[_0x15fd('0xc')](_0x15fd('0x22'),_0x124e86);logger[_0x15fd('0xf')](_0x15fd('0x22'),_0x124e86,JSON['stringify'](_0x2f89c4));_0x419969(_0x2f89c4);})[_0x15fd('0x16')](function(_0x30e74a){logger[_0x15fd('0x12')](_0x15fd('0x22'),_0x30e74a[_0x15fd('0x14')],_0x124e86);_0x5503b9(_0x257acc[_0x15fd('0x12')](0x1f4,_0x30e74a[_0x15fd('0x14')]));});});};
\ No newline at end of file
+var _0x529a=['ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetZendeskAccount','ZendeskAccount','findAll','options','where','attributes','limit','map','include','model','info','catch','ShowZendeskAccount','find','raw','lodash','moment','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','request','then'];(function(_0x442cce,_0x59c499){var _0x90bbba=function(_0x9b16df){while(--_0x9b16df){_0x442cce['push'](_0x442cce['shift']());}};_0x90bbba(++_0x59c499);}(_0x529a,0x77));var _0xa529=function(_0x599e60,_0x5b6519){_0x599e60=_0x599e60-0x0;var _0x468e19=_0x529a[_0x599e60];return _0x468e19;};'use strict';var _=require(_0xa529('0x0'));var util=require('util');var moment=require(_0xa529('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa529('0x2'));var db=require(_0xa529('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa529('0x4'));var config=require(_0xa529('0x5'));var jayson=require(_0xa529('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3a62c2,_0x220550,_0x2c5be2){return new BPromise(function(_0x2a2db7,_0x4b04a9){return client[_0xa529('0x7')](_0x3a62c2,_0x2c5be2)[_0xa529('0x8')](function(_0x119fd2){logger['info'](_0xa529('0x9'),_0x220550,_0xa529('0xa'));logger[_0xa529('0xb')](_0xa529('0xc'),_0x220550,_0xa529('0xa'),JSON[_0xa529('0xd')](_0x119fd2));if(_0x119fd2[_0xa529('0xe')]){if(_0x119fd2[_0xa529('0xe')][_0xa529('0xf')]===0x1f4){logger[_0xa529('0xe')]('ZendeskAccount,\x20%s,\x20%s',_0x220550,_0x119fd2[_0xa529('0xe')][_0xa529('0x10')]);return _0x4b04a9(_0x119fd2[_0xa529('0xe')][_0xa529('0x10')]);}logger['error'](_0xa529('0x9'),_0x220550,_0x119fd2['error']['message']);return _0x2a2db7(_0x119fd2[_0xa529('0xe')][_0xa529('0x10')]);}else{logger['info'](_0xa529('0x9'),_0x220550,_0xa529('0xa'));_0x2a2db7(_0x119fd2['result']['message']);}})['catch'](function(_0x2c1480){logger['error'](_0xa529('0x9'),_0x220550,_0x2c1480);_0x4b04a9(_0x2c1480);});});}exports[_0xa529('0x11')]=function(_0x463687){var _0xced673=this;return new Promise(function(_0x37c9c9,_0x5f25fc){return db[_0xa529('0x12')][_0xa529('0x13')]({'raw':_0x463687[_0xa529('0x14')]?_0x463687[_0xa529('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x463687[_0xa529('0x14')]?_0x463687[_0xa529('0x14')][_0xa529('0x15')]||null:null,'attributes':_0x463687['options']?_0x463687[_0xa529('0x14')][_0xa529('0x16')]||null:null,'limit':_0x463687[_0xa529('0x14')]?_0x463687[_0xa529('0x14')][_0xa529('0x17')]||null:null,'include':_0x463687['options']?_0x463687['options']['include']?_[_0xa529('0x18')](_0x463687[_0xa529('0x14')][_0xa529('0x19')],function(_0x39c0d3){return{'model':db[_0x39c0d3[_0xa529('0x1a')]],'as':_0x39c0d3['as'],'attributes':_0x39c0d3['attributes'],'include':_0x39c0d3[_0xa529('0x19')]?_[_0xa529('0x18')](_0x39c0d3[_0xa529('0x19')],function(_0x19cbe){return{'model':db[_0x19cbe[_0xa529('0x1a')]],'as':_0x19cbe['as'],'attributes':_0x19cbe[_0xa529('0x16')],'include':_0x19cbe[_0xa529('0x19')]?_['map'](_0x19cbe[_0xa529('0x19')],function(_0x2c6921){return{'model':db[_0x2c6921[_0xa529('0x1a')]],'as':_0x2c6921['as'],'attributes':_0x2c6921[_0xa529('0x16')]};}):[]};}):[]};}):[]:[]})[_0xa529('0x8')](function(_0x1be6e0){logger[_0xa529('0x1b')]('GetZendeskAccount',_0x463687);logger[_0xa529('0xb')]('GetZendeskAccount',_0x463687,JSON[_0xa529('0xd')](_0x1be6e0));_0x37c9c9(_0x1be6e0);})[_0xa529('0x1c')](function(_0x228c7e){logger[_0xa529('0xe')](_0xa529('0x11'),_0x228c7e[_0xa529('0x10')],_0x463687);_0x5f25fc(_0xced673[_0xa529('0xe')](0x1f4,_0x228c7e['message']));});});};exports[_0xa529('0x1d')]=function(_0x2bbcdd){var _0x14ce3f=this;return new Promise(function(_0x370076,_0x30d291){return db[_0xa529('0x12')][_0xa529('0x1e')]({'raw':_0x2bbcdd[_0xa529('0x14')]?_0x2bbcdd[_0xa529('0x14')][_0xa529('0x1f')]===undefined?!![]:![]:!![],'where':_0x2bbcdd[_0xa529('0x14')]?_0x2bbcdd[_0xa529('0x14')]['where']||null:null,'attributes':_0x2bbcdd[_0xa529('0x14')]?_0x2bbcdd['options'][_0xa529('0x16')]||null:null,'include':_0x2bbcdd[_0xa529('0x14')]?_0x2bbcdd[_0xa529('0x14')][_0xa529('0x19')]?_['map'](_0x2bbcdd[_0xa529('0x14')][_0xa529('0x19')],function(_0x59700a){return{'model':db[_0x59700a['model']],'as':_0x59700a['as'],'attributes':_0x59700a['attributes'],'include':_0x59700a[_0xa529('0x19')]?_[_0xa529('0x18')](_0x59700a[_0xa529('0x19')],function(_0x2cef98){return{'model':db[_0x2cef98[_0xa529('0x1a')]],'as':_0x2cef98['as'],'attributes':_0x2cef98['attributes'],'include':_0x2cef98[_0xa529('0x19')]?_[_0xa529('0x18')](_0x2cef98['include'],function(_0x46c276){return{'model':db[_0x46c276['model']],'as':_0x46c276['as'],'attributes':_0x46c276['attributes']};}):[]};}):[]};}):[]:[]})[_0xa529('0x8')](function(_0x185923){logger['info']('ShowZendeskAccount',_0x2bbcdd);logger[_0xa529('0xb')]('ShowZendeskAccount',_0x2bbcdd,JSON[_0xa529('0xd')](_0x185923));_0x370076(_0x185923);})['catch'](function(_0x49ac81){logger[_0xa529('0xe')](_0xa529('0x1d'),_0x49ac81[_0xa529('0x10')],_0x2bbcdd);_0x30d291(_0x14ce3f[_0xa529('0xe')](0x1f4,_0x49ac81[_0xa529('0x10')]));});});};
\ No newline at end of file
index 7f7d5f4..2a58f61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['delete','destroy','exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','index','get','/:id','show','/:id/fields','isAuthenticated','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','create','put','update'];(function(_0x45f951,_0x2750c8){var _0x24756c=function(_0x31c931){while(--_0x31c931){_0x45f951['push'](_0x45f951['shift']());}};_0x24756c(++_0x2750c8);}(_0xb7e7,0x121));var _0x7b7e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb7e7[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x7b7e('0x0'));var util=require('util');var path=require(_0x7b7e('0x1'));var timeout=require('connect-timeout');var express=require(_0x7b7e('0x2'));var router=express['Router']();var fs_extra=require(_0x7b7e('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var controller=require(_0x7b7e('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7b7e('0x7')]);router[_0x7b7e('0x8')](_0x7b7e('0x9'),auth['isAuthenticated'](),controller[_0x7b7e('0xa')]);router[_0x7b7e('0x8')](_0x7b7e('0xb'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0xd')]);router[_0x7b7e('0x8')](_0x7b7e('0xe'),auth['isAuthenticated'](),controller[_0x7b7e('0xf')]);router[_0x7b7e('0x8')](_0x7b7e('0x10'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x11')]);router[_0x7b7e('0x8')](_0x7b7e('0x12'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x13')]);router['post']('/',auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x14')]);router['post'](_0x7b7e('0x12'),auth['isAuthenticated'](),controller['setTags']);router[_0x7b7e('0x15')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x16')]);router[_0x7b7e('0x17')]('/:id',auth['isAuthenticated'](),controller[_0x7b7e('0x18')]);module[_0x7b7e('0x19')]=router;
\ No newline at end of file
+var _0xb688=['path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','update','exports','util'];(function(_0xea6018,_0x4cf082){var _0x57b54d=function(_0x49099a){while(--_0x49099a){_0xea6018['push'](_0xea6018['shift']());}};_0x57b54d(++_0x4cf082);}(_0xb688,0xcf));var _0x8b68=function(_0x328f06,_0x475748){_0x328f06=_0x328f06-0x0;var _0xce756b=_0xb688[_0x328f06];return _0xce756b;};'use strict';var multer=require('multer');var util=require(_0x8b68('0x0'));var path=require(_0x8b68('0x1'));var timeout=require(_0x8b68('0x2'));var express=require(_0x8b68('0x3'));var router=express[_0x8b68('0x4')]();var fs_extra=require(_0x8b68('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8b68('0x6'));var config=require(_0x8b68('0x7'));var controller=require(_0x8b68('0x8'));router[_0x8b68('0x9')]('/',auth['isAuthenticated'](),controller[_0x8b68('0xa')]);router['get'](_0x8b68('0xb'),auth[_0x8b68('0xc')](),controller[_0x8b68('0xd')]);router[_0x8b68('0x9')](_0x8b68('0xe'),auth[_0x8b68('0xc')](),controller[_0x8b68('0xf')]);router[_0x8b68('0x9')](_0x8b68('0x10'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x11')]);router[_0x8b68('0x9')](_0x8b68('0x12'),auth['isAuthenticated'](),controller[_0x8b68('0x13')]);router[_0x8b68('0x9')](_0x8b68('0x14'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x15')]);router[_0x8b68('0x16')]('/',auth[_0x8b68('0xc')](),controller[_0x8b68('0x17')]);router[_0x8b68('0x16')]('/:id/tags',auth[_0x8b68('0xc')](),controller['setTags']);router['put'](_0x8b68('0xb'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x18')]);router['delete']('/:id',auth[_0x8b68('0xc')](),controller['destroy']);module[_0x8b68('0x19')]=router;
\ No newline at end of file
index 557e386..b7cb396 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x720e=['sequelize','exports','STRING'];(function(_0x918313,_0x53b353){var _0x4c0f8c=function(_0x5e21ce){while(--_0x5e21ce){_0x918313['push'](_0x918313['shift']());}};_0x4c0f8c(++_0x53b353);}(_0x720e,0x183));var _0xe720=function(_0x148879,_0x5b4c11){_0x148879=_0x148879-0x0;var _0x4f7027=_0x720e[_0x148879];return _0x4f7027;};'use strict';var Sequelize=require(_0xe720('0x0'));module[_0xe720('0x1')]={'name':{'type':Sequelize[_0xe720('0x2')]},'description':{'type':Sequelize[_0xe720('0x2')]}};
\ No newline at end of file
+var _0x5771=['exports','STRING','sequelize'];(function(_0x15aa33,_0x51dc55){var _0x2bc27e=function(_0x421a28){while(--_0x421a28){_0x15aa33['push'](_0x15aa33['shift']());}};_0x2bc27e(++_0x51dc55);}(_0x5771,0x10d));var _0x1577=function(_0x1d0fd8,_0xea6779){_0x1d0fd8=_0x1d0fd8-0x0;var _0x346324=_0x5771[_0x1d0fd8];return _0x346324;};'use strict';var Sequelize=require(_0x1577('0x0'));module[_0x1577('0x1')]={'name':{'type':Sequelize[_0x1577('0x2')]},'description':{'type':Sequelize[_0x1577('0x2')]}};
\ No newline at end of file
index 23946d1..d35f5c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x464a=['jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','offset','limit','count','status','set','Content-Range','json','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','attributes','model','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','ZendeskConfiguration','includeAll','findAll','rows','catch','show','params','keys','fields','include','find','create','body','findOne','ZendeskField','pick','getFields','getSubjects','getDescriptions','Tag','getTags','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x464a,0x149));var _0xa464=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x464a[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xa464('0x0'));var rimraf=require(_0xa464('0x1'));var zipdir=require(_0xa464('0x2'));var jsonpatch=require(_0xa464('0x3'));var rp=require(_0xa464('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa464('0x5'));var util=require(_0xa464('0x6'));var path=require(_0xa464('0x7'));var sox=require(_0xa464('0x8'));var csv=require(_0xa464('0x9'));var ejs=require(_0xa464('0xa'));var fs=require('fs');var fs_extra=require(_0xa464('0xb'));var _=require(_0xa464('0xc'));var squel=require(_0xa464('0xd'));var crypto=require(_0xa464('0xe'));var jsforce=require(_0xa464('0xf'));var deskjs=require(_0xa464('0x10'));var toCsv=require(_0xa464('0x9'));var querystring=require('querystring');var Papa=require(_0xa464('0x11'));var Redis=require('ioredis');var authService=require(_0xa464('0x12'));var qs=require(_0xa464('0x13'));var as=require(_0xa464('0x14'));var hardwareService=require(_0xa464('0x15'));var logger=require(_0xa464('0x16'))('api');var utils=require(_0xa464('0x17'));var config=require(_0xa464('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xa464('0x19'))['db'];function respondWithStatusCode(_0xfb9f75,_0x262eea){_0x262eea=_0x262eea||0xcc;return function(_0xd05bb7){if(_0xd05bb7){return _0xfb9f75[_0xa464('0x1a')](_0x262eea);}return _0xfb9f75['status'](_0x262eea)[_0xa464('0x1b')]();};}function respondWithResult(_0x2d6fbb,_0x99f1c8){_0x99f1c8=_0x99f1c8||0xc8;return function(_0x59b5b6){if(_0x59b5b6){return _0x2d6fbb['status'](_0x99f1c8)['json'](_0x59b5b6);}};}function respondWithFilteredResult(_0x15e41f,_0x29eec2){return function(_0x5f4f1e){if(_0x5f4f1e){var _0x393f96=typeof _0x29eec2[_0xa464('0x1c')]==='undefined'&&typeof _0x29eec2[_0xa464('0x1d')]==='undefined';var _0x11e654=_0x5f4f1e[_0xa464('0x1e')];var _0x436c0d=_0x393f96?0x0:_0x29eec2[_0xa464('0x1c')];var _0x105689=_0x393f96?_0x5f4f1e[_0xa464('0x1e')]:_0x29eec2[_0xa464('0x1c')]+_0x29eec2['limit'];var _0x32d2f2;if(_0x105689>=_0x11e654){_0x105689=_0x11e654;_0x32d2f2=0xc8;}else{_0x32d2f2=0xce;}_0x15e41f[_0xa464('0x1f')](_0x32d2f2);return _0x15e41f[_0xa464('0x20')](_0xa464('0x21'),_0x436c0d+'-'+_0x105689+'/'+_0x11e654)[_0xa464('0x22')](_0x5f4f1e);}return null;};}function patchUpdates(_0x4a008e){return function(_0x1600b2){try{jsonpatch['apply'](_0x1600b2,_0x4a008e,!![]);}catch(_0x1d9342){return BPromise['reject'](_0x1d9342);}return _0x1600b2[_0xa464('0x23')]();};}function saveUpdates(_0x4bcdf1,_0x82c46){return function(_0x208626){if(_0x208626){return _0x208626[_0xa464('0x24')](_0x4bcdf1)[_0xa464('0x25')](function(_0x52b1bc){return _0x52b1bc;});}return null;};}function removeEntity(_0x39ae90,_0x462bb4){return function(_0x276b4e){if(_0x276b4e){return _0x276b4e[_0xa464('0x26')]()[_0xa464('0x25')](function(){_0x39ae90['status'](0xcc)[_0xa464('0x1b')]();});}};}function handleEntityNotFound(_0x24e0d0,_0x5ac158){return function(_0x455733){if(!_0x455733){_0x24e0d0[_0xa464('0x1a')](0x194);}return _0x455733;};}function handleError(_0x43227f,_0x37ffda){_0x37ffda=_0x37ffda||0x1f4;return function(_0x3ae1c7){logger[_0xa464('0x27')](_0x3ae1c7[_0xa464('0x28')]);if(_0x3ae1c7[_0xa464('0x29')]){delete _0x3ae1c7[_0xa464('0x29')];}_0x43227f['status'](_0x37ffda)[_0xa464('0x2a')](_0x3ae1c7);};}exports[_0xa464('0x2b')]=function(_0x5a4b66,_0x2962c4){var _0x4cf45a={},_0x2be528={},_0x19b561={'count':0x0,'rows':[]};var _0x1ddb6c=_[_0xa464('0x2c')](db['ZendeskConfiguration'][_0xa464('0x2d')],function(_0x1da682){return{'name':_0x1da682[_0xa464('0x2e')],'type':_0x1da682[_0xa464('0x2f')][_0xa464('0x30')]};});_0x2be528['model']=_[_0xa464('0x2c')](_0x1ddb6c,_0xa464('0x29'));_0x2be528[_0xa464('0x31')]=_['keys'](_0x5a4b66[_0xa464('0x31')]);_0x2be528[_0xa464('0x32')]=_[_0xa464('0x33')](_0x2be528['model'],_0x2be528[_0xa464('0x31')]);_0x4cf45a[_0xa464('0x34')]=_[_0xa464('0x33')](_0x2be528[_0xa464('0x35')],qs['fields'](_0x5a4b66[_0xa464('0x31')]['fields']));_0x4cf45a[_0xa464('0x34')]=_0x4cf45a[_0xa464('0x34')][_0xa464('0x36')]?_0x4cf45a['attributes']:_0x2be528[_0xa464('0x35')];if(!_0x5a4b66[_0xa464('0x31')]['hasOwnProperty'](_0xa464('0x37'))){_0x4cf45a[_0xa464('0x1d')]=qs[_0xa464('0x1d')](_0x5a4b66[_0xa464('0x31')][_0xa464('0x1d')]);_0x4cf45a[_0xa464('0x1c')]=qs[_0xa464('0x1c')](_0x5a4b66['query']['offset']);}_0x4cf45a[_0xa464('0x38')]=qs[_0xa464('0x39')](_0x5a4b66[_0xa464('0x31')][_0xa464('0x39')]);_0x4cf45a[_0xa464('0x3a')]=qs[_0xa464('0x32')](_['pick'](_0x5a4b66['query'],_0x2be528[_0xa464('0x32')]),_0x1ddb6c);if(_0x5a4b66[_0xa464('0x31')][_0xa464('0x3b')]){_0x4cf45a[_0xa464('0x3a')]=_[_0xa464('0x3c')](_0x4cf45a[_0xa464('0x3a')],{'$or':_['map'](_0x1ddb6c,function(_0x36946f){if(_0x36946f[_0xa464('0x2f')]!==_0xa464('0x3d')){var _0x5f98cc={};_0x5f98cc[_0x36946f[_0xa464('0x29')]]={'$like':'%'+_0x5a4b66['query'][_0xa464('0x3b')]+'%'};return _0x5f98cc;}})});}_0x4cf45a=_[_0xa464('0x3c')]({},_0x4cf45a,_0x5a4b66[_0xa464('0x3e')]);var _0x49f0d4={'where':_0x4cf45a[_0xa464('0x3a')]};return db[_0xa464('0x3f')][_0xa464('0x1e')](_0x49f0d4)[_0xa464('0x25')](function(_0x3bbf8f){_0x19b561[_0xa464('0x1e')]=_0x3bbf8f;if(_0x5a4b66[_0xa464('0x31')][_0xa464('0x40')]){_0x4cf45a['include']=[{'all':!![]}];}return db[_0xa464('0x3f')][_0xa464('0x41')](_0x4cf45a);})[_0xa464('0x25')](function(_0x3b92aa){_0x19b561[_0xa464('0x42')]=_0x3b92aa;return _0x19b561;})['then'](respondWithFilteredResult(_0x2962c4,_0x4cf45a))[_0xa464('0x43')](handleError(_0x2962c4,null));};exports[_0xa464('0x44')]=function(_0x38b512,_0x31c153){var _0x370d19={'raw':![],'where':{'id':_0x38b512[_0xa464('0x45')]['id']}},_0x3ebcce={};_0x3ebcce['model']=_[_0xa464('0x46')](db[_0xa464('0x3f')][_0xa464('0x2d')]);_0x3ebcce[_0xa464('0x31')]=_[_0xa464('0x46')](_0x38b512['query']);_0x3ebcce['filters']=_['intersection'](_0x3ebcce['model'],_0x3ebcce[_0xa464('0x31')]);_0x370d19[_0xa464('0x34')]=_[_0xa464('0x33')](_0x3ebcce[_0xa464('0x35')],qs[_0xa464('0x47')](_0x38b512[_0xa464('0x31')][_0xa464('0x47')]));_0x370d19[_0xa464('0x34')]=_0x370d19['attributes'][_0xa464('0x36')]?_0x370d19[_0xa464('0x34')]:_0x3ebcce['model'];if(_0x38b512[_0xa464('0x31')][_0xa464('0x40')]){_0x370d19[_0xa464('0x48')]=[{'all':!![]}];}_0x370d19=_['merge']({},_0x370d19,_0x38b512['options']);return db[_0xa464('0x3f')][_0xa464('0x49')](_0x370d19)['then'](handleEntityNotFound(_0x31c153,null))[_0xa464('0x25')](respondWithResult(_0x31c153,null))[_0xa464('0x43')](handleError(_0x31c153,null));};exports[_0xa464('0x4a')]=function(_0x15955c,_0x425cae){return db['ZendeskConfiguration'][_0xa464('0x4a')](_0x15955c['body'],{})[_0xa464('0x25')](respondWithResult(_0x425cae,0xc9))[_0xa464('0x43')](handleError(_0x425cae,null));};exports[_0xa464('0x24')]=function(_0x32f067,_0x3bf8e9){if(_0x32f067[_0xa464('0x4b')]['id']){delete _0x32f067[_0xa464('0x4b')]['id'];}return db[_0xa464('0x3f')][_0xa464('0x49')]({'where':{'id':_0x32f067[_0xa464('0x45')]['id']}})[_0xa464('0x25')](handleEntityNotFound(_0x3bf8e9,null))[_0xa464('0x25')](saveUpdates(_0x32f067[_0xa464('0x4b')],null))[_0xa464('0x25')](respondWithResult(_0x3bf8e9,null))[_0xa464('0x43')](handleError(_0x3bf8e9,null));};exports['destroy']=function(_0x265610,_0x48b1f0){return db[_0xa464('0x3f')][_0xa464('0x49')]({'where':{'id':_0x265610[_0xa464('0x45')]['id']}})['then'](handleEntityNotFound(_0x48b1f0,null))[_0xa464('0x25')](removeEntity(_0x48b1f0,null))[_0xa464('0x43')](handleError(_0x48b1f0,null));};exports['getFields']=function(_0x21470f,_0x287585,_0x1afbad){var _0x3e892a={};var _0x32b14f={};var _0x2329c7;var _0x3d7010;return db[_0xa464('0x3f')][_0xa464('0x4c')]({'where':{'id':_0x21470f[_0xa464('0x45')]['id']}})[_0xa464('0x25')](handleEntityNotFound(_0x287585,null))[_0xa464('0x25')](function(_0x2747b1){if(_0x2747b1){_0x2329c7=_0x2747b1;_0x32b14f['model']=_['keys'](db[_0xa464('0x4d')][_0xa464('0x2d')]);_0x32b14f['query']=_['keys'](_0x21470f[_0xa464('0x31')]);_0x32b14f[_0xa464('0x32')]=_['intersection'](_0x32b14f[_0xa464('0x35')],_0x32b14f[_0xa464('0x31')]);_0x3e892a['attributes']=_[_0xa464('0x33')](_0x32b14f[_0xa464('0x35')],qs[_0xa464('0x47')](_0x21470f[_0xa464('0x31')][_0xa464('0x47')]));_0x3e892a[_0xa464('0x34')]=_0x3e892a['attributes'][_0xa464('0x36')]?_0x3e892a[_0xa464('0x34')]:_0x32b14f['model'];_0x3e892a['order']=qs[_0xa464('0x39')](_0x21470f[_0xa464('0x31')]['sort']);_0x3e892a[_0xa464('0x3a')]=qs[_0xa464('0x32')](_[_0xa464('0x4e')](_0x21470f['query'],_0x32b14f['filters']));if(_0x21470f[_0xa464('0x31')][_0xa464('0x3b')]){_0x3e892a[_0xa464('0x3a')]=_['merge'](_0x3e892a[_0xa464('0x3a')],{'$or':_[_0xa464('0x2c')](_0x3e892a['attributes'],function(_0x53d3b){var _0x16d3c3={};_0x16d3c3[_0x53d3b]={'$like':'%'+_0x21470f[_0xa464('0x31')][_0xa464('0x3b')]+'%'};return _0x16d3c3;})});}_0x3e892a=_[_0xa464('0x3c')]({},_0x3e892a,_0x21470f[_0xa464('0x3e')]);return _0x2329c7[_0xa464('0x4f')](_0x3e892a);}})[_0xa464('0x25')](function(_0x56beae){if(_0x56beae){_0x3d7010=_0x56beae[_0xa464('0x36')];if(!_0x21470f['query']['hasOwnProperty'](_0xa464('0x37'))){_0x3e892a[_0xa464('0x1d')]=qs[_0xa464('0x1d')](_0x21470f[_0xa464('0x31')][_0xa464('0x1d')]);_0x3e892a[_0xa464('0x1c')]=qs[_0xa464('0x1c')](_0x21470f[_0xa464('0x31')]['offset']);}return _0x2329c7[_0xa464('0x4f')](_0x3e892a);}})[_0xa464('0x25')](function(_0x170f27){if(_0x170f27){return _0x170f27?{'count':_0x3d7010,'rows':_0x170f27}:null;}})['then'](respondWithResult(_0x287585,null))[_0xa464('0x43')](handleError(_0x287585,null));};exports[_0xa464('0x50')]=function(_0x5240d0,_0x2c8ed1,_0x4d661b){var _0x3a1d8e={};var _0x583424={};var _0x30d721;var _0x255aa3;return db['ZendeskConfiguration'][_0xa464('0x4c')]({'where':{'id':_0x5240d0[_0xa464('0x45')]['id']}})[_0xa464('0x25')](handleEntityNotFound(_0x2c8ed1,null))['then'](function(_0x27eb4a){if(_0x27eb4a){_0x30d721=_0x27eb4a;_0x583424[_0xa464('0x35')]=_[_0xa464('0x46')](db['ZendeskField']['rawAttributes']);_0x583424[_0xa464('0x31')]=_[_0xa464('0x46')](_0x5240d0[_0xa464('0x31')]);_0x583424[_0xa464('0x32')]=_[_0xa464('0x33')](_0x583424[_0xa464('0x35')],_0x583424[_0xa464('0x31')]);_0x3a1d8e[_0xa464('0x34')]=_[_0xa464('0x33')](_0x583424['model'],qs[_0xa464('0x47')](_0x5240d0[_0xa464('0x31')][_0xa464('0x47')]));_0x3a1d8e[_0xa464('0x34')]=_0x3a1d8e[_0xa464('0x34')][_0xa464('0x36')]?_0x3a1d8e[_0xa464('0x34')]:_0x583424[_0xa464('0x35')];_0x3a1d8e[_0xa464('0x38')]=qs[_0xa464('0x39')](_0x5240d0['query']['sort']);_0x3a1d8e[_0xa464('0x3a')]=qs['filters'](_[_0xa464('0x4e')](_0x5240d0[_0xa464('0x31')],_0x583424['filters']));if(_0x5240d0[_0xa464('0x31')][_0xa464('0x3b')]){_0x3a1d8e[_0xa464('0x3a')]=_[_0xa464('0x3c')](_0x3a1d8e[_0xa464('0x3a')],{'$or':_[_0xa464('0x2c')](_0x3a1d8e[_0xa464('0x34')],function(_0x49cb70){var _0x1d0fc6={};_0x1d0fc6[_0x49cb70]={'$like':'%'+_0x5240d0[_0xa464('0x31')][_0xa464('0x3b')]+'%'};return _0x1d0fc6;})});}_0x3a1d8e=_['merge']({},_0x3a1d8e,_0x5240d0[_0xa464('0x3e')]);return _0x30d721[_0xa464('0x50')](_0x3a1d8e);}})[_0xa464('0x25')](function(_0x4a1c4e){if(_0x4a1c4e){_0x255aa3=_0x4a1c4e[_0xa464('0x36')];if(!_0x5240d0[_0xa464('0x31')]['hasOwnProperty']('nolimit')){_0x3a1d8e[_0xa464('0x1d')]=qs['limit'](_0x5240d0[_0xa464('0x31')][_0xa464('0x1d')]);_0x3a1d8e[_0xa464('0x1c')]=qs['offset'](_0x5240d0[_0xa464('0x31')][_0xa464('0x1c')]);}return _0x30d721[_0xa464('0x50')](_0x3a1d8e);}})[_0xa464('0x25')](function(_0x5dd04e){if(_0x5dd04e){return _0x5dd04e?{'count':_0x255aa3,'rows':_0x5dd04e}:null;}})[_0xa464('0x25')](respondWithResult(_0x2c8ed1,null))[_0xa464('0x43')](handleError(_0x2c8ed1,null));};exports[_0xa464('0x51')]=function(_0x2499dc,_0x3ac7c6,_0x5c970e){var _0x346745={};var _0x406cf6={};var _0x395bee;var _0x596b95;return db[_0xa464('0x3f')][_0xa464('0x4c')]({'where':{'id':_0x2499dc[_0xa464('0x45')]['id']}})['then'](handleEntityNotFound(_0x3ac7c6,null))[_0xa464('0x25')](function(_0x38a4db){if(_0x38a4db){_0x395bee=_0x38a4db;_0x406cf6[_0xa464('0x35')]=_[_0xa464('0x46')](db[_0xa464('0x4d')][_0xa464('0x2d')]);_0x406cf6[_0xa464('0x31')]=_['keys'](_0x2499dc['query']);_0x406cf6[_0xa464('0x32')]=_[_0xa464('0x33')](_0x406cf6['model'],_0x406cf6['query']);_0x346745[_0xa464('0x34')]=_[_0xa464('0x33')](_0x406cf6[_0xa464('0x35')],qs[_0xa464('0x47')](_0x2499dc['query']['fields']));_0x346745[_0xa464('0x34')]=_0x346745[_0xa464('0x34')]['length']?_0x346745['attributes']:_0x406cf6[_0xa464('0x35')];_0x346745[_0xa464('0x38')]=qs[_0xa464('0x39')](_0x2499dc['query'][_0xa464('0x39')]);_0x346745[_0xa464('0x3a')]=qs[_0xa464('0x32')](_[_0xa464('0x4e')](_0x2499dc['query'],_0x406cf6[_0xa464('0x32')]));if(_0x2499dc['query'][_0xa464('0x3b')]){_0x346745[_0xa464('0x3a')]=_['merge'](_0x346745['where'],{'$or':_[_0xa464('0x2c')](_0x346745[_0xa464('0x34')],function(_0xea1821){var _0x29b148={};_0x29b148[_0xea1821]={'$like':'%'+_0x2499dc[_0xa464('0x31')][_0xa464('0x3b')]+'%'};return _0x29b148;})});}_0x346745=_[_0xa464('0x3c')]({},_0x346745,_0x2499dc[_0xa464('0x3e')]);return _0x395bee[_0xa464('0x51')](_0x346745);}})[_0xa464('0x25')](function(_0x72299f){if(_0x72299f){_0x596b95=_0x72299f['length'];if(!_0x2499dc[_0xa464('0x31')]['hasOwnProperty'](_0xa464('0x37'))){_0x346745[_0xa464('0x1d')]=qs[_0xa464('0x1d')](_0x2499dc[_0xa464('0x31')][_0xa464('0x1d')]);_0x346745[_0xa464('0x1c')]=qs['offset'](_0x2499dc[_0xa464('0x31')][_0xa464('0x1c')]);}return _0x395bee['getDescriptions'](_0x346745);}})[_0xa464('0x25')](function(_0xfb01c5){if(_0xfb01c5){return _0xfb01c5?{'count':_0x596b95,'rows':_0xfb01c5}:null;}})[_0xa464('0x25')](respondWithResult(_0x3ac7c6,null))[_0xa464('0x43')](handleError(_0x3ac7c6,null));};exports['getTags']=function(_0x4b1cfd,_0x6388ff,_0x2c58b9){var _0x273c98={};var _0x3d6a17={};var _0x26b142;var _0x48b4df;return db['ZendeskConfiguration'][_0xa464('0x4c')]({'where':{'id':_0x4b1cfd['params']['id']}})[_0xa464('0x25')](handleEntityNotFound(_0x6388ff,null))[_0xa464('0x25')](function(_0x45d7bb){if(_0x45d7bb){_0x26b142=_0x45d7bb;_0x3d6a17[_0xa464('0x35')]=_[_0xa464('0x46')](db[_0xa464('0x52')]['rawAttributes']);_0x3d6a17[_0xa464('0x31')]=_[_0xa464('0x46')](_0x4b1cfd[_0xa464('0x31')]);_0x3d6a17[_0xa464('0x32')]=_[_0xa464('0x33')](_0x3d6a17[_0xa464('0x35')],_0x3d6a17['query']);_0x273c98['attributes']=_[_0xa464('0x33')](_0x3d6a17[_0xa464('0x35')],qs[_0xa464('0x47')](_0x4b1cfd[_0xa464('0x31')][_0xa464('0x47')]));_0x273c98[_0xa464('0x34')]=_0x273c98[_0xa464('0x34')]['length']?_0x273c98[_0xa464('0x34')]:_0x3d6a17['model'];_0x273c98[_0xa464('0x38')]=qs[_0xa464('0x39')](_0x4b1cfd['query']['sort']);_0x273c98['where']=qs[_0xa464('0x32')](_[_0xa464('0x4e')](_0x4b1cfd[_0xa464('0x31')],_0x3d6a17[_0xa464('0x32')]));if(_0x4b1cfd[_0xa464('0x31')][_0xa464('0x3b')]){_0x273c98[_0xa464('0x3a')]=_['merge'](_0x273c98[_0xa464('0x3a')],{'$or':_['map'](_0x273c98[_0xa464('0x34')],function(_0x442933){var _0x19a560={};_0x19a560[_0x442933]={'$like':'%'+_0x4b1cfd['query'][_0xa464('0x3b')]+'%'};return _0x19a560;})});}_0x273c98=_['merge']({},_0x273c98,_0x4b1cfd[_0xa464('0x3e')]);return _0x26b142[_0xa464('0x53')](_0x273c98);}})[_0xa464('0x25')](function(_0x247d49){if(_0x247d49){_0x48b4df=_0x247d49[_0xa464('0x36')];if(!_0x4b1cfd[_0xa464('0x31')]['hasOwnProperty'](_0xa464('0x37'))){_0x273c98[_0xa464('0x1d')]=qs[_0xa464('0x1d')](_0x4b1cfd[_0xa464('0x31')][_0xa464('0x1d')]);_0x273c98[_0xa464('0x1c')]=qs[_0xa464('0x1c')](_0x4b1cfd[_0xa464('0x31')][_0xa464('0x1c')]);}return _0x26b142[_0xa464('0x53')](_0x273c98);}})[_0xa464('0x25')](function(_0x4476f1){if(_0x4476f1){return _0x4476f1?{'count':_0x48b4df,'rows':_0x4476f1}:null;}})[_0xa464('0x25')](respondWithResult(_0x6388ff,null))[_0xa464('0x43')](handleError(_0x6388ff,null));};exports[_0xa464('0x54')]=function(_0x599460,_0x4f8186,_0x567735){if(_0x599460[_0xa464('0x4b')]['id']){delete _0x599460[_0xa464('0x4b')]['id'];}return db['ZendeskConfiguration'][_0xa464('0x4c')]({'where':{'id':_0x599460['params']['id']}})[_0xa464('0x25')](handleEntityNotFound(_0x4f8186,null))[_0xa464('0x25')](function(_0x461e20){if(_0x461e20){return _0x461e20[_0xa464('0x54')](_0x599460[_0xa464('0x4b')][_0xa464('0x55')]||[]);}return null;})[_0xa464('0x25')](respondWithResult(_0x4f8186,null))[_0xa464('0x43')](handleError(_0x4f8186,null));};
\ No newline at end of file
+var _0x1023=['undefined','limit','count','json','apply','reject','then','error','stack','name','index','ZendeskConfiguration','rawAttributes','fieldName','type','map','keys','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','includeAll','rows','catch','show','params','filters','options','find','create','body','update','getFields','findOne','ZendeskField','sort','getSubjects','getDescriptions','getTags','setTags','ids','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','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','sendStatus','status','end','offset'];(function(_0x2583dd,_0x3d90ea){var _0xf2f2fa=function(_0x4a8ba7){while(--_0x4a8ba7){_0x2583dd['push'](_0x2583dd['shift']());}};_0xf2f2fa(++_0x3d90ea);}(_0x1023,0x11f));var _0x3102=function(_0x260f45,_0x404e99){_0x260f45=_0x260f45-0x0;var _0x56a249=_0x1023[_0x260f45];return _0x56a249;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3102('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3102('0x1'));var rp=require(_0x3102('0x2'));var moment=require(_0x3102('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3102('0x4'));var util=require(_0x3102('0x5'));var path=require(_0x3102('0x6'));var sox=require('sox');var csv=require(_0x3102('0x7'));var ejs=require(_0x3102('0x8'));var fs=require('fs');var fs_extra=require(_0x3102('0x9'));var _=require(_0x3102('0xa'));var squel=require(_0x3102('0xb'));var crypto=require('crypto');var jsforce=require(_0x3102('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x3102('0x7'));var querystring=require(_0x3102('0xd'));var Papa=require(_0x3102('0xe'));var Redis=require('ioredis');var authService=require(_0x3102('0xf'));var qs=require(_0x3102('0x10'));var as=require(_0x3102('0x11'));var hardwareService=require(_0x3102('0x12'));var logger=require(_0x3102('0x13'))(_0x3102('0x14'));var utils=require(_0x3102('0x15'));var config=require(_0x3102('0x16'));var licenseUtil=require(_0x3102('0x17'));var db=require(_0x3102('0x18'))['db'];function respondWithStatusCode(_0xe9d474,_0x2d33cf){_0x2d33cf=_0x2d33cf||0xcc;return function(_0x17d7c7){if(_0x17d7c7){return _0xe9d474[_0x3102('0x19')](_0x2d33cf);}return _0xe9d474[_0x3102('0x1a')](_0x2d33cf)[_0x3102('0x1b')]();};}function respondWithResult(_0x3f877a,_0xf7756){_0xf7756=_0xf7756||0xc8;return function(_0x3ec5a0){if(_0x3ec5a0){return _0x3f877a[_0x3102('0x1a')](_0xf7756)['json'](_0x3ec5a0);}};}function respondWithFilteredResult(_0x221415,_0x572cc1){return function(_0x2634a7){if(_0x2634a7){var _0x477e17=typeof _0x572cc1[_0x3102('0x1c')]===_0x3102('0x1d')&&typeof _0x572cc1[_0x3102('0x1e')]==='undefined';var _0x1cb136=_0x2634a7[_0x3102('0x1f')];var _0x135e37=_0x477e17?0x0:_0x572cc1[_0x3102('0x1c')];var _0xa48d88=_0x477e17?_0x2634a7['count']:_0x572cc1[_0x3102('0x1c')]+_0x572cc1[_0x3102('0x1e')];var _0x1d493e;if(_0xa48d88>=_0x1cb136){_0xa48d88=_0x1cb136;_0x1d493e=0xc8;}else{_0x1d493e=0xce;}_0x221415['status'](_0x1d493e);return _0x221415['set']('Content-Range',_0x135e37+'-'+_0xa48d88+'/'+_0x1cb136)[_0x3102('0x20')](_0x2634a7);}return null;};}function patchUpdates(_0x500a95){return function(_0x21291c){try{jsonpatch[_0x3102('0x21')](_0x21291c,_0x500a95,!![]);}catch(_0x546a83){return BPromise[_0x3102('0x22')](_0x546a83);}return _0x21291c['save']();};}function saveUpdates(_0x2507ba,_0x4cc4fc){return function(_0x46b1cf){if(_0x46b1cf){return _0x46b1cf['update'](_0x2507ba)[_0x3102('0x23')](function(_0x145513){return _0x145513;});}return null;};}function removeEntity(_0x4af3b6,_0x3d3499){return function(_0x2af14e){if(_0x2af14e){return _0x2af14e['destroy']()[_0x3102('0x23')](function(){_0x4af3b6['status'](0xcc)[_0x3102('0x1b')]();});}};}function handleEntityNotFound(_0x3dd1c0,_0x51052f){return function(_0x22a204){if(!_0x22a204){_0x3dd1c0['sendStatus'](0x194);}return _0x22a204;};}function handleError(_0x10a1cb,_0x597f4f){_0x597f4f=_0x597f4f||0x1f4;return function(_0x331fea){logger[_0x3102('0x24')](_0x331fea[_0x3102('0x25')]);if(_0x331fea[_0x3102('0x26')]){delete _0x331fea['name'];}_0x10a1cb[_0x3102('0x1a')](_0x597f4f)['send'](_0x331fea);};}exports[_0x3102('0x27')]=function(_0x37980d,_0x2bb6d5){var _0x23815e={},_0x3d5828={},_0x20351f={'count':0x0,'rows':[]};var _0xcf191f=_['map'](db[_0x3102('0x28')][_0x3102('0x29')],function(_0x41d305){return{'name':_0x41d305[_0x3102('0x2a')],'type':_0x41d305[_0x3102('0x2b')]['key']};});_0x3d5828['model']=_[_0x3102('0x2c')](_0xcf191f,'name');_0x3d5828['query']=_[_0x3102('0x2d')](_0x37980d['query']);_0x3d5828['filters']=_[_0x3102('0x2e')](_0x3d5828[_0x3102('0x2f')],_0x3d5828[_0x3102('0x30')]);_0x23815e[_0x3102('0x31')]=_[_0x3102('0x2e')](_0x3d5828[_0x3102('0x2f')],qs['fields'](_0x37980d[_0x3102('0x30')][_0x3102('0x32')]));_0x23815e[_0x3102('0x31')]=_0x23815e['attributes'][_0x3102('0x33')]?_0x23815e[_0x3102('0x31')]:_0x3d5828['model'];if(!_0x37980d[_0x3102('0x30')][_0x3102('0x34')](_0x3102('0x35'))){_0x23815e[_0x3102('0x1e')]=qs[_0x3102('0x1e')](_0x37980d[_0x3102('0x30')]['limit']);_0x23815e[_0x3102('0x1c')]=qs[_0x3102('0x1c')](_0x37980d[_0x3102('0x30')]['offset']);}_0x23815e[_0x3102('0x36')]=qs['sort'](_0x37980d[_0x3102('0x30')]['sort']);_0x23815e[_0x3102('0x37')]=qs['filters'](_[_0x3102('0x38')](_0x37980d[_0x3102('0x30')],_0x3d5828['filters']),_0xcf191f);if(_0x37980d[_0x3102('0x30')][_0x3102('0x39')]){_0x23815e[_0x3102('0x37')]=_['merge'](_0x23815e[_0x3102('0x37')],{'$or':_[_0x3102('0x2c')](_0xcf191f,function(_0x30b1a1){if(_0x30b1a1[_0x3102('0x2b')]!=='VIRTUAL'){var _0x5c6b14={};_0x5c6b14[_0x30b1a1[_0x3102('0x26')]]={'$like':'%'+_0x37980d[_0x3102('0x30')][_0x3102('0x39')]+'%'};return _0x5c6b14;}})});}_0x23815e=_[_0x3102('0x3a')]({},_0x23815e,_0x37980d['options']);var _0x35e2e8={'where':_0x23815e[_0x3102('0x37')]};return db['ZendeskConfiguration'][_0x3102('0x1f')](_0x35e2e8)[_0x3102('0x23')](function(_0x2d3789){_0x20351f[_0x3102('0x1f')]=_0x2d3789;if(_0x37980d[_0x3102('0x30')][_0x3102('0x3b')]){_0x23815e['include']=[{'all':!![]}];}return db['ZendeskConfiguration']['findAll'](_0x23815e);})['then'](function(_0x4b9f37){_0x20351f[_0x3102('0x3c')]=_0x4b9f37;return _0x20351f;})[_0x3102('0x23')](respondWithFilteredResult(_0x2bb6d5,_0x23815e))[_0x3102('0x3d')](handleError(_0x2bb6d5,null));};exports[_0x3102('0x3e')]=function(_0x4cb715,_0x1d301f){var _0x3af365={'raw':![],'where':{'id':_0x4cb715[_0x3102('0x3f')]['id']}},_0x318ddd={};_0x318ddd['model']=_['keys'](db['ZendeskConfiguration'][_0x3102('0x29')]);_0x318ddd['query']=_[_0x3102('0x2d')](_0x4cb715[_0x3102('0x30')]);_0x318ddd[_0x3102('0x40')]=_[_0x3102('0x2e')](_0x318ddd['model'],_0x318ddd['query']);_0x3af365[_0x3102('0x31')]=_[_0x3102('0x2e')](_0x318ddd[_0x3102('0x2f')],qs[_0x3102('0x32')](_0x4cb715[_0x3102('0x30')][_0x3102('0x32')]));_0x3af365[_0x3102('0x31')]=_0x3af365['attributes'][_0x3102('0x33')]?_0x3af365[_0x3102('0x31')]:_0x318ddd['model'];if(_0x4cb715[_0x3102('0x30')][_0x3102('0x3b')]){_0x3af365['include']=[{'all':!![]}];}_0x3af365=_['merge']({},_0x3af365,_0x4cb715[_0x3102('0x41')]);return db[_0x3102('0x28')][_0x3102('0x42')](_0x3af365)['then'](handleEntityNotFound(_0x1d301f,null))['then'](respondWithResult(_0x1d301f,null))['catch'](handleError(_0x1d301f,null));};exports[_0x3102('0x43')]=function(_0x573aee,_0x3a5959){return db[_0x3102('0x28')][_0x3102('0x43')](_0x573aee[_0x3102('0x44')],{})['then'](respondWithResult(_0x3a5959,0xc9))['catch'](handleError(_0x3a5959,null));};exports[_0x3102('0x45')]=function(_0x3e032d,_0x5b6cf5){if(_0x3e032d[_0x3102('0x44')]['id']){delete _0x3e032d[_0x3102('0x44')]['id'];}return db[_0x3102('0x28')]['find']({'where':{'id':_0x3e032d['params']['id']}})[_0x3102('0x23')](handleEntityNotFound(_0x5b6cf5,null))[_0x3102('0x23')](saveUpdates(_0x3e032d[_0x3102('0x44')],null))[_0x3102('0x23')](respondWithResult(_0x5b6cf5,null))[_0x3102('0x3d')](handleError(_0x5b6cf5,null));};exports['destroy']=function(_0x17731e,_0x316ae0){return db[_0x3102('0x28')][_0x3102('0x42')]({'where':{'id':_0x17731e[_0x3102('0x3f')]['id']}})[_0x3102('0x23')](handleEntityNotFound(_0x316ae0,null))[_0x3102('0x23')](removeEntity(_0x316ae0,null))['catch'](handleError(_0x316ae0,null));};exports[_0x3102('0x46')]=function(_0x2ab737,_0xcf4f2f,_0x7795){var _0x542af0={};var _0x371d96={};var _0x157f3c;var _0xa1283a;return db['ZendeskConfiguration'][_0x3102('0x47')]({'where':{'id':_0x2ab737[_0x3102('0x3f')]['id']}})[_0x3102('0x23')](handleEntityNotFound(_0xcf4f2f,null))[_0x3102('0x23')](function(_0x2d5657){if(_0x2d5657){_0x157f3c=_0x2d5657;_0x371d96[_0x3102('0x2f')]=_[_0x3102('0x2d')](db[_0x3102('0x48')][_0x3102('0x29')]);_0x371d96['query']=_[_0x3102('0x2d')](_0x2ab737['query']);_0x371d96[_0x3102('0x40')]=_[_0x3102('0x2e')](_0x371d96[_0x3102('0x2f')],_0x371d96[_0x3102('0x30')]);_0x542af0[_0x3102('0x31')]=_['intersection'](_0x371d96[_0x3102('0x2f')],qs[_0x3102('0x32')](_0x2ab737[_0x3102('0x30')][_0x3102('0x32')]));_0x542af0[_0x3102('0x31')]=_0x542af0['attributes'][_0x3102('0x33')]?_0x542af0[_0x3102('0x31')]:_0x371d96[_0x3102('0x2f')];_0x542af0[_0x3102('0x36')]=qs[_0x3102('0x49')](_0x2ab737[_0x3102('0x30')][_0x3102('0x49')]);_0x542af0[_0x3102('0x37')]=qs[_0x3102('0x40')](_[_0x3102('0x38')](_0x2ab737['query'],_0x371d96[_0x3102('0x40')]));if(_0x2ab737['query']['filter']){_0x542af0[_0x3102('0x37')]=_[_0x3102('0x3a')](_0x542af0[_0x3102('0x37')],{'$or':_[_0x3102('0x2c')](_0x542af0['attributes'],function(_0x1f62b9){var _0x1eec8d={};_0x1eec8d[_0x1f62b9]={'$like':'%'+_0x2ab737[_0x3102('0x30')][_0x3102('0x39')]+'%'};return _0x1eec8d;})});}_0x542af0=_[_0x3102('0x3a')]({},_0x542af0,_0x2ab737[_0x3102('0x41')]);return _0x157f3c['getFields'](_0x542af0);}})['then'](function(_0x39e50c){if(_0x39e50c){_0xa1283a=_0x39e50c[_0x3102('0x33')];if(!_0x2ab737[_0x3102('0x30')][_0x3102('0x34')](_0x3102('0x35'))){_0x542af0[_0x3102('0x1e')]=qs['limit'](_0x2ab737['query'][_0x3102('0x1e')]);_0x542af0[_0x3102('0x1c')]=qs[_0x3102('0x1c')](_0x2ab737[_0x3102('0x30')][_0x3102('0x1c')]);}return _0x157f3c[_0x3102('0x46')](_0x542af0);}})['then'](function(_0x5aa737){if(_0x5aa737){return _0x5aa737?{'count':_0xa1283a,'rows':_0x5aa737}:null;}})[_0x3102('0x23')](respondWithResult(_0xcf4f2f,null))['catch'](handleError(_0xcf4f2f,null));};exports[_0x3102('0x4a')]=function(_0x415f1d,_0x409a71,_0x5b7a64){var _0x1aa61a={};var _0x27d068={};var _0x4932c8;var _0x5c417a;return db['ZendeskConfiguration'][_0x3102('0x47')]({'where':{'id':_0x415f1d[_0x3102('0x3f')]['id']}})[_0x3102('0x23')](handleEntityNotFound(_0x409a71,null))['then'](function(_0x10d434){if(_0x10d434){_0x4932c8=_0x10d434;_0x27d068[_0x3102('0x2f')]=_[_0x3102('0x2d')](db[_0x3102('0x48')][_0x3102('0x29')]);_0x27d068[_0x3102('0x30')]=_['keys'](_0x415f1d[_0x3102('0x30')]);_0x27d068['filters']=_[_0x3102('0x2e')](_0x27d068[_0x3102('0x2f')],_0x27d068['query']);_0x1aa61a[_0x3102('0x31')]=_[_0x3102('0x2e')](_0x27d068[_0x3102('0x2f')],qs[_0x3102('0x32')](_0x415f1d[_0x3102('0x30')][_0x3102('0x32')]));_0x1aa61a[_0x3102('0x31')]=_0x1aa61a[_0x3102('0x31')][_0x3102('0x33')]?_0x1aa61a[_0x3102('0x31')]:_0x27d068[_0x3102('0x2f')];_0x1aa61a[_0x3102('0x36')]=qs[_0x3102('0x49')](_0x415f1d[_0x3102('0x30')][_0x3102('0x49')]);_0x1aa61a[_0x3102('0x37')]=qs[_0x3102('0x40')](_[_0x3102('0x38')](_0x415f1d[_0x3102('0x30')],_0x27d068[_0x3102('0x40')]));if(_0x415f1d[_0x3102('0x30')][_0x3102('0x39')]){_0x1aa61a[_0x3102('0x37')]=_[_0x3102('0x3a')](_0x1aa61a[_0x3102('0x37')],{'$or':_[_0x3102('0x2c')](_0x1aa61a['attributes'],function(_0x377965){var _0x11a95a={};_0x11a95a[_0x377965]={'$like':'%'+_0x415f1d[_0x3102('0x30')][_0x3102('0x39')]+'%'};return _0x11a95a;})});}_0x1aa61a=_[_0x3102('0x3a')]({},_0x1aa61a,_0x415f1d[_0x3102('0x41')]);return _0x4932c8['getSubjects'](_0x1aa61a);}})[_0x3102('0x23')](function(_0x51b7c0){if(_0x51b7c0){_0x5c417a=_0x51b7c0[_0x3102('0x33')];if(!_0x415f1d[_0x3102('0x30')][_0x3102('0x34')](_0x3102('0x35'))){_0x1aa61a['limit']=qs[_0x3102('0x1e')](_0x415f1d[_0x3102('0x30')][_0x3102('0x1e')]);_0x1aa61a[_0x3102('0x1c')]=qs[_0x3102('0x1c')](_0x415f1d['query'][_0x3102('0x1c')]);}return _0x4932c8[_0x3102('0x4a')](_0x1aa61a);}})[_0x3102('0x23')](function(_0x5853ee){if(_0x5853ee){return _0x5853ee?{'count':_0x5c417a,'rows':_0x5853ee}:null;}})[_0x3102('0x23')](respondWithResult(_0x409a71,null))[_0x3102('0x3d')](handleError(_0x409a71,null));};exports[_0x3102('0x4b')]=function(_0x1e3264,_0x229bee,_0x4df5ef){var _0x446de7={};var _0x2db474={};var _0x2e4214;var _0x335a3d;return db[_0x3102('0x28')][_0x3102('0x47')]({'where':{'id':_0x1e3264[_0x3102('0x3f')]['id']}})[_0x3102('0x23')](handleEntityNotFound(_0x229bee,null))['then'](function(_0x4ca03a){if(_0x4ca03a){_0x2e4214=_0x4ca03a;_0x2db474[_0x3102('0x2f')]=_[_0x3102('0x2d')](db['ZendeskField'][_0x3102('0x29')]);_0x2db474['query']=_[_0x3102('0x2d')](_0x1e3264[_0x3102('0x30')]);_0x2db474[_0x3102('0x40')]=_['intersection'](_0x2db474[_0x3102('0x2f')],_0x2db474['query']);_0x446de7[_0x3102('0x31')]=_[_0x3102('0x2e')](_0x2db474[_0x3102('0x2f')],qs[_0x3102('0x32')](_0x1e3264[_0x3102('0x30')][_0x3102('0x32')]));_0x446de7[_0x3102('0x31')]=_0x446de7[_0x3102('0x31')][_0x3102('0x33')]?_0x446de7[_0x3102('0x31')]:_0x2db474[_0x3102('0x2f')];_0x446de7['order']=qs['sort'](_0x1e3264[_0x3102('0x30')][_0x3102('0x49')]);_0x446de7[_0x3102('0x37')]=qs[_0x3102('0x40')](_[_0x3102('0x38')](_0x1e3264[_0x3102('0x30')],_0x2db474[_0x3102('0x40')]));if(_0x1e3264[_0x3102('0x30')][_0x3102('0x39')]){_0x446de7[_0x3102('0x37')]=_['merge'](_0x446de7[_0x3102('0x37')],{'$or':_[_0x3102('0x2c')](_0x446de7['attributes'],function(_0x4bd3f5){var _0x2c528c={};_0x2c528c[_0x4bd3f5]={'$like':'%'+_0x1e3264['query']['filter']+'%'};return _0x2c528c;})});}_0x446de7=_['merge']({},_0x446de7,_0x1e3264[_0x3102('0x41')]);return _0x2e4214['getDescriptions'](_0x446de7);}})['then'](function(_0x44e8dc){if(_0x44e8dc){_0x335a3d=_0x44e8dc['length'];if(!_0x1e3264[_0x3102('0x30')]['hasOwnProperty'](_0x3102('0x35'))){_0x446de7[_0x3102('0x1e')]=qs[_0x3102('0x1e')](_0x1e3264[_0x3102('0x30')]['limit']);_0x446de7['offset']=qs[_0x3102('0x1c')](_0x1e3264['query'][_0x3102('0x1c')]);}return _0x2e4214['getDescriptions'](_0x446de7);}})['then'](function(_0x1ac62c){if(_0x1ac62c){return _0x1ac62c?{'count':_0x335a3d,'rows':_0x1ac62c}:null;}})[_0x3102('0x23')](respondWithResult(_0x229bee,null))[_0x3102('0x3d')](handleError(_0x229bee,null));};exports['getTags']=function(_0x2270e9,_0xbea13f,_0x19459a){var _0x6cea17={};var _0x45a469={};var _0x254558;var _0xa6152a;return db[_0x3102('0x28')][_0x3102('0x47')]({'where':{'id':_0x2270e9[_0x3102('0x3f')]['id']}})[_0x3102('0x23')](handleEntityNotFound(_0xbea13f,null))[_0x3102('0x23')](function(_0x6570bd){if(_0x6570bd){_0x254558=_0x6570bd;_0x45a469['model']=_['keys'](db['Tag'][_0x3102('0x29')]);_0x45a469['query']=_['keys'](_0x2270e9[_0x3102('0x30')]);_0x45a469[_0x3102('0x40')]=_[_0x3102('0x2e')](_0x45a469[_0x3102('0x2f')],_0x45a469['query']);_0x6cea17[_0x3102('0x31')]=_[_0x3102('0x2e')](_0x45a469[_0x3102('0x2f')],qs['fields'](_0x2270e9[_0x3102('0x30')][_0x3102('0x32')]));_0x6cea17[_0x3102('0x31')]=_0x6cea17[_0x3102('0x31')][_0x3102('0x33')]?_0x6cea17['attributes']:_0x45a469['model'];_0x6cea17[_0x3102('0x36')]=qs[_0x3102('0x49')](_0x2270e9['query'][_0x3102('0x49')]);_0x6cea17[_0x3102('0x37')]=qs[_0x3102('0x40')](_[_0x3102('0x38')](_0x2270e9[_0x3102('0x30')],_0x45a469[_0x3102('0x40')]));if(_0x2270e9[_0x3102('0x30')][_0x3102('0x39')]){_0x6cea17[_0x3102('0x37')]=_[_0x3102('0x3a')](_0x6cea17[_0x3102('0x37')],{'$or':_[_0x3102('0x2c')](_0x6cea17[_0x3102('0x31')],function(_0x1993d6){var _0x1a4642={};_0x1a4642[_0x1993d6]={'$like':'%'+_0x2270e9[_0x3102('0x30')][_0x3102('0x39')]+'%'};return _0x1a4642;})});}_0x6cea17=_[_0x3102('0x3a')]({},_0x6cea17,_0x2270e9[_0x3102('0x41')]);return _0x254558[_0x3102('0x4c')](_0x6cea17);}})[_0x3102('0x23')](function(_0x2e67b6){if(_0x2e67b6){_0xa6152a=_0x2e67b6[_0x3102('0x33')];if(!_0x2270e9[_0x3102('0x30')]['hasOwnProperty'](_0x3102('0x35'))){_0x6cea17['limit']=qs['limit'](_0x2270e9[_0x3102('0x30')]['limit']);_0x6cea17[_0x3102('0x1c')]=qs[_0x3102('0x1c')](_0x2270e9['query'][_0x3102('0x1c')]);}return _0x254558['getTags'](_0x6cea17);}})['then'](function(_0x58b87f){if(_0x58b87f){return _0x58b87f?{'count':_0xa6152a,'rows':_0x58b87f}:null;}})[_0x3102('0x23')](respondWithResult(_0xbea13f,null))['catch'](handleError(_0xbea13f,null));};exports[_0x3102('0x4d')]=function(_0x151564,_0x3ef93d,_0x26b3f7){if(_0x151564['body']['id']){delete _0x151564[_0x3102('0x44')]['id'];}return db[_0x3102('0x28')]['findOne']({'where':{'id':_0x151564[_0x3102('0x3f')]['id']}})['then'](handleEntityNotFound(_0x3ef93d,null))[_0x3102('0x23')](function(_0xf15bcd){if(_0xf15bcd){return _0xf15bcd[_0x3102('0x4d')](_0x151564[_0x3102('0x44')][_0x3102('0x4e')]||[]);}return null;})[_0x3102('0x23')](respondWithResult(_0x3ef93d,null))[_0x3102('0x3d')](handleError(_0x3ef93d,null));};
\ No newline at end of file
index ba6db8a..6f11343 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['define','int_zendesk_configurations','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports'];(function(_0x1c7137,_0x4c7c26){var _0xeb4432=function(_0x26d850){while(--_0x26d850){_0x1c7137['push'](_0x1c7137['shift']());}};_0xeb4432(++_0x4c7c26);}(_0x757a,0xde));var _0xa757=function(_0x3ca5c5,_0x3abf57){_0x3ca5c5=_0x3ca5c5-0x0;var _0x428bfa=_0x757a[_0x3ca5c5];return _0x428bfa;};'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'));module[_0xa757('0x7')]=function(_0x5edca8,_0xae0e7c){return _0x5edca8[_0xa757('0x8')]('ZendeskConfiguration',attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xefda=['../../config/environment','./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash','api','moment','request-promise','path','rimraf'];(function(_0x3f91d0,_0x1321c3){var _0x579efa=function(_0x231aae){while(--_0x231aae){_0x3f91d0['push'](_0x3f91d0['shift']());}};_0x579efa(++_0x1321c3);}(_0xefda,0x96));var _0xaefd=function(_0x245ecd,_0xccd8c){_0x245ecd=_0x245ecd-0x0;var _0x12fa9f=_0xefda[_0x245ecd];return _0x12fa9f;};'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':[],'timestamps':!![]});};
\ No newline at end of file
index 5e716df..b5951c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa8f=['request\x20sent','debug','stringify','error','code','ZendeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/logger','../../config/environment','then'];(function(_0x4b397f,_0x57d165){var _0x2e7aed=function(_0x322cc6){while(--_0x322cc6){_0x4b397f['push'](_0x4b397f['shift']());}};_0x2e7aed(++_0x57d165);}(_0xaa8f,0xe6));var _0xfaa8=function(_0x31dde9,_0x12e816){_0x31dde9=_0x31dde9-0x0;var _0x1fbf2d=_0xaa8f[_0x31dde9];return _0x1fbf2d;};'use strict';var _=require(_0xfaa8('0x0'));var util=require(_0xfaa8('0x1'));var moment=require(_0xfaa8('0x2'));var BPromise=require(_0xfaa8('0x3'));var rs=require(_0xfaa8('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xfaa8('0x5'))('rpc');var config=require(_0xfaa8('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x281d84,_0x4900a4,_0x2d6071){return new BPromise(function(_0xc59036,_0x4d533e){return client['request'](_0x281d84,_0x2d6071)[_0xfaa8('0x7')](function(_0x11684b){logger['info']('ZendeskConfiguration,\x20%s,\x20%s',_0x4900a4,_0xfaa8('0x8'));logger[_0xfaa8('0x9')]('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0x4900a4,_0xfaa8('0x8'),JSON[_0xfaa8('0xa')](_0x11684b));if(_0x11684b[_0xfaa8('0xb')]){if(_0x11684b[_0xfaa8('0xb')][_0xfaa8('0xc')]===0x1f4){logger[_0xfaa8('0xb')](_0xfaa8('0xd'),_0x4900a4,_0x11684b[_0xfaa8('0xb')][_0xfaa8('0xe')]);return _0x4d533e(_0x11684b[_0xfaa8('0xb')][_0xfaa8('0xe')]);}logger['error'](_0xfaa8('0xd'),_0x4900a4,_0x11684b[_0xfaa8('0xb')][_0xfaa8('0xe')]);return _0xc59036(_0x11684b['error'][_0xfaa8('0xe')]);}else{logger['info'](_0xfaa8('0xd'),_0x4900a4,_0xfaa8('0x8'));_0xc59036(_0x11684b[_0xfaa8('0xf')][_0xfaa8('0xe')]);}})[_0xfaa8('0x10')](function(_0x56650b){logger['error'](_0xfaa8('0xd'),_0x4900a4,_0x56650b);_0x4d533e(_0x56650b);});});}
\ No newline at end of file
+var _0x627e=['moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','util'];(function(_0x3dda0f,_0x5b9902){var _0x1b0488=function(_0x267031){while(--_0x267031){_0x3dda0f['push'](_0x3dda0f['shift']());}};_0x1b0488(++_0x5b9902);}(_0x627e,0x9f));var _0xe627=function(_0x42c51e,_0x2028ab){_0x42c51e=_0x42c51e-0x0;var _0x20272e=_0x627e[_0x42c51e];return _0x20272e;};'use strict';var _=require('lodash');var util=require(_0xe627('0x0'));var moment=require(_0xe627('0x1'));var BPromise=require(_0xe627('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe627('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe627('0x4'));var logger=require(_0xe627('0x5'))(_0xe627('0x6'));var config=require(_0xe627('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe627('0x8')][_0xe627('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x45d163,_0x2ce4c,_0x4b7ba0){return new BPromise(function(_0x54e336,_0x12be61){return client[_0xe627('0xa')](_0x45d163,_0x4b7ba0)[_0xe627('0xb')](function(_0x5b0039){logger[_0xe627('0xc')](_0xe627('0xd'),_0x2ce4c,_0xe627('0xe'));logger['debug'](_0xe627('0xf'),_0x2ce4c,'request\x20sent',JSON[_0xe627('0x10')](_0x5b0039));if(_0x5b0039[_0xe627('0x11')]){if(_0x5b0039[_0xe627('0x11')]['code']===0x1f4){logger['error'](_0xe627('0xd'),_0x2ce4c,_0x5b0039[_0xe627('0x11')][_0xe627('0x12')]);return _0x12be61(_0x5b0039[_0xe627('0x11')][_0xe627('0x12')]);}logger[_0xe627('0x11')](_0xe627('0xd'),_0x2ce4c,_0x5b0039[_0xe627('0x11')][_0xe627('0x12')]);return _0x54e336(_0x5b0039[_0xe627('0x11')][_0xe627('0x12')]);}else{logger[_0xe627('0xc')](_0xe627('0xd'),_0x2ce4c,'request\x20sent');_0x54e336(_0x5b0039[_0xe627('0x13')][_0xe627('0x12')]);}})['catch'](function(_0x29245){logger[_0xe627('0x11')](_0xe627('0xd'),_0x2ce4c,_0x29245);_0x12be61(_0x29245);});});}
\ No newline at end of file
index ea8a632..b2afe2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20f8=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskField.controller','index','get','show','post','isAuthenticated','create','put','update','delete','destroy'];(function(_0x5a27e8,_0x492a2f){var _0x4e38f7=function(_0x2a4048){while(--_0x2a4048){_0x5a27e8['push'](_0x5a27e8['shift']());}};_0x4e38f7(++_0x492a2f);}(_0x20f8,0xd1));var _0x820f=function(_0xbba0b8,_0xce1856){_0xbba0b8=_0xbba0b8-0x0;var _0x457dd8=_0x20f8[_0xbba0b8];return _0x457dd8;};'use strict';var multer=require(_0x820f('0x0'));var util=require('util');var path=require(_0x820f('0x1'));var timeout=require(_0x820f('0x2'));var express=require(_0x820f('0x3'));var router=express[_0x820f('0x4')]();var fs_extra=require(_0x820f('0x5'));var auth=require(_0x820f('0x6'));var interaction=require(_0x820f('0x7'));var config=require('../../config/environment');var controller=require(_0x820f('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x820f('0x9')]);router[_0x820f('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x820f('0xb')]);router[_0x820f('0xc')]('/',auth[_0x820f('0xd')](),controller[_0x820f('0xe')]);router[_0x820f('0xf')]('/:id',auth[_0x820f('0xd')](),controller[_0x820f('0x10')]);router[_0x820f('0x11')]('/:id',auth[_0x820f('0xd')](),controller[_0x820f('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x94c6=['util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','/:id','post','create','put','update','delete','destroy','exports'];(function(_0x33cb1f,_0x2bbf48){var _0x3d7a0b=function(_0x59df69){while(--_0x59df69){_0x33cb1f['push'](_0x33cb1f['shift']());}};_0x3d7a0b(++_0x2bbf48);}(_0x94c6,0x144));var _0x694c=function(_0x3a9d05,_0x357323){_0x3a9d05=_0x3a9d05-0x0;var _0x42b9cc=_0x94c6[_0x3a9d05];return _0x42b9cc;};'use strict';var multer=require('multer');var util=require(_0x694c('0x0'));var path=require(_0x694c('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x694c('0x2')]();var fs_extra=require(_0x694c('0x3'));var auth=require(_0x694c('0x4'));var interaction=require(_0x694c('0x5'));var config=require(_0x694c('0x6'));var controller=require(_0x694c('0x7'));router[_0x694c('0x8')]('/',auth[_0x694c('0x9')](),controller['index']);router[_0x694c('0x8')](_0x694c('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x694c('0xb')]('/',auth[_0x694c('0x9')](),controller[_0x694c('0xc')]);router[_0x694c('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x694c('0xe')]);router[_0x694c('0xf')](_0x694c('0xa'),auth[_0x694c('0x9')](),controller[_0x694c('0x10')]);module[_0x694c('0x11')]=router;
\ No newline at end of file
index 449c0ed..63dc20a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56ae=['picklist','STRING','variable','BOOLEAN','exports','ENUM','string','customVariable','keyValue'];(function(_0xa8858,_0xfdf8de){var _0x5de30d=function(_0x39d1ec){while(--_0x39d1ec){_0xa8858['push'](_0xa8858['shift']());}};_0x5de30d(++_0xfdf8de);}(_0x56ae,0x1e1));var _0xe56a=function(_0x4a34ad,_0x72f57a){_0x4a34ad=_0x4a34ad-0x0;var _0x14054a=_0x56ae[_0x4a34ad];return _0x14054a;};'use strict';var Sequelize=require('sequelize');module[_0xe56a('0x0')]={'type':{'type':Sequelize[_0xe56a('0x1')](_0xe56a('0x2'),'variable',_0xe56a('0x3'),_0xe56a('0x4'),_0xe56a('0x5')),'defaultValue':_0xe56a('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xe56a('0x6')]},'keyType':{'type':Sequelize[_0xe56a('0x1')](_0xe56a('0x2'),_0xe56a('0x7'),'customVariable')},'keyContent':{'type':Sequelize[_0xe56a('0x6')]},'idField':{'type':Sequelize[_0xe56a('0x6')]},'nameField':{'type':Sequelize[_0xe56a('0x6')]},'customField':{'type':Sequelize[_0xe56a('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9107=['sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9107,0x183));var _0x7910=function(_0x2b0bd3,_0x167a8b){_0x2b0bd3=_0x2b0bd3-0x0;var _0x1a0fd2=_0x9107[_0x2b0bd3];return _0x1a0fd2;};'use strict';var Sequelize=require(_0x7910('0x0'));module[_0x7910('0x1')]={'type':{'type':Sequelize[_0x7910('0x2')](_0x7910('0x3'),_0x7910('0x4'),_0x7910('0x5'),_0x7910('0x6'),_0x7910('0x7')),'defaultValue':_0x7910('0x3')},'content':{'type':Sequelize[_0x7910('0x8')]},'key':{'type':Sequelize[_0x7910('0x8')]},'keyType':{'type':Sequelize[_0x7910('0x2')]('string',_0x7910('0x4'),_0x7910('0x5'))},'keyContent':{'type':Sequelize[_0x7910('0x8')]},'idField':{'type':Sequelize[_0x7910('0x8')]},'nameField':{'type':Sequelize[_0x7910('0x8')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7910('0x8')]}};
\ No newline at end of file
index a66d8ca..2364e68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7ac=['../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','map','ZendeskField','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','fields','include','create','body','find','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../config/license/hardware'];(function(_0x2bac0c,_0x4c1118){var _0x207ec0=function(_0x3c0d04){while(--_0x3c0d04){_0x2bac0c['push'](_0x2bac0c['shift']());}};_0x207ec0(++_0x4c1118);}(_0xc7ac,0xc2));var _0xcc7a=function(_0x1aa047,_0x84595b){_0x1aa047=_0x1aa047-0x0;var _0x3eaeca=_0xc7ac[_0x1aa047];return _0x3eaeca;};'use strict';var emlformat=require(_0xcc7a('0x0'));var rimraf=require(_0xcc7a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcc7a('0x2'));var rp=require(_0xcc7a('0x3'));var moment=require('moment');var BPromise=require(_0xcc7a('0x4'));var Mustache=require('mustache');var util=require(_0xcc7a('0x5'));var path=require(_0xcc7a('0x6'));var sox=require(_0xcc7a('0x7'));var csv=require('to-csv');var ejs=require(_0xcc7a('0x8'));var fs=require('fs');var fs_extra=require(_0xcc7a('0x9'));var _=require(_0xcc7a('0xa'));var squel=require(_0xcc7a('0xb'));var crypto=require(_0xcc7a('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xcc7a('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xcc7a('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcc7a('0xf'));var logger=require(_0xcc7a('0x10'))(_0xcc7a('0x11'));var utils=require('../../config/utils');var config=require(_0xcc7a('0x12'));var licenseUtil=require(_0xcc7a('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x426337,_0x1aef13){_0x1aef13=_0x1aef13||0xcc;return function(_0xe031b1){if(_0xe031b1){return _0x426337[_0xcc7a('0x14')](_0x1aef13);}return _0x426337[_0xcc7a('0x15')](_0x1aef13)[_0xcc7a('0x16')]();};}function respondWithResult(_0x499c7e,_0x41a4ee){_0x41a4ee=_0x41a4ee||0xc8;return function(_0x355586){if(_0x355586){return _0x499c7e[_0xcc7a('0x15')](_0x41a4ee)[_0xcc7a('0x17')](_0x355586);}};}function respondWithFilteredResult(_0x1125af,_0x2ecdc4){return function(_0x2a7e8c){if(_0x2a7e8c){var _0x5c3ec4=typeof _0x2ecdc4[_0xcc7a('0x18')]===_0xcc7a('0x19')&&typeof _0x2ecdc4[_0xcc7a('0x1a')]===_0xcc7a('0x19');var _0x2312e3=_0x2a7e8c[_0xcc7a('0x1b')];var _0x535806=_0x5c3ec4?0x0:_0x2ecdc4[_0xcc7a('0x18')];var _0x47f5e9=_0x5c3ec4?_0x2a7e8c[_0xcc7a('0x1b')]:_0x2ecdc4['offset']+_0x2ecdc4['limit'];var _0x369d5f;if(_0x47f5e9>=_0x2312e3){_0x47f5e9=_0x2312e3;_0x369d5f=0xc8;}else{_0x369d5f=0xce;}_0x1125af['status'](_0x369d5f);return _0x1125af[_0xcc7a('0x1c')](_0xcc7a('0x1d'),_0x535806+'-'+_0x47f5e9+'/'+_0x2312e3)[_0xcc7a('0x17')](_0x2a7e8c);}return null;};}function patchUpdates(_0x56a267){return function(_0x596456){try{jsonpatch['apply'](_0x596456,_0x56a267,!![]);}catch(_0xd4412b){return BPromise[_0xcc7a('0x1e')](_0xd4412b);}return _0x596456[_0xcc7a('0x1f')]();};}function saveUpdates(_0x53b45e,_0x592822){return function(_0x3a5e0d){if(_0x3a5e0d){return _0x3a5e0d[_0xcc7a('0x20')](_0x53b45e)[_0xcc7a('0x21')](function(_0x4f3354){return _0x4f3354;});}return null;};}function removeEntity(_0x47b355,_0x3d7c57){return function(_0x362079){if(_0x362079){return _0x362079[_0xcc7a('0x22')]()[_0xcc7a('0x21')](function(){_0x47b355[_0xcc7a('0x15')](0xcc)[_0xcc7a('0x16')]();});}};}function handleEntityNotFound(_0x4bb6da,_0x481496){return function(_0x2055a1){if(!_0x2055a1){_0x4bb6da[_0xcc7a('0x14')](0x194);}return _0x2055a1;};}function handleError(_0x146062,_0x2a3a92){_0x2a3a92=_0x2a3a92||0x1f4;return function(_0x1bd20c){logger[_0xcc7a('0x23')](_0x1bd20c[_0xcc7a('0x24')]);if(_0x1bd20c[_0xcc7a('0x25')]){delete _0x1bd20c[_0xcc7a('0x25')];}_0x146062[_0xcc7a('0x15')](_0x2a3a92)['send'](_0x1bd20c);};}exports['index']=function(_0x22870e,_0x5e1ff9){var _0x19421d={},_0x19519b={},_0x5b33f7={'count':0x0,'rows':[]};var _0x60a5dc=_[_0xcc7a('0x26')](db[_0xcc7a('0x27')][_0xcc7a('0x28')],function(_0x1b9dcd){return{'name':_0x1b9dcd[_0xcc7a('0x29')],'type':_0x1b9dcd[_0xcc7a('0x2a')]['key']};});_0x19519b[_0xcc7a('0x2b')]=_[_0xcc7a('0x26')](_0x60a5dc,_0xcc7a('0x25'));_0x19519b[_0xcc7a('0x2c')]=_[_0xcc7a('0x2d')](_0x22870e[_0xcc7a('0x2c')]);_0x19519b[_0xcc7a('0x2e')]=_[_0xcc7a('0x2f')](_0x19519b['model'],_0x19519b['query']);_0x19421d[_0xcc7a('0x30')]=_['intersection'](_0x19519b[_0xcc7a('0x2b')],qs['fields'](_0x22870e[_0xcc7a('0x2c')]['fields']));_0x19421d[_0xcc7a('0x30')]=_0x19421d['attributes'][_0xcc7a('0x31')]?_0x19421d[_0xcc7a('0x30')]:_0x19519b[_0xcc7a('0x2b')];if(!_0x22870e[_0xcc7a('0x2c')][_0xcc7a('0x32')](_0xcc7a('0x33'))){_0x19421d[_0xcc7a('0x1a')]=qs[_0xcc7a('0x1a')](_0x22870e['query']['limit']);_0x19421d[_0xcc7a('0x18')]=qs['offset'](_0x22870e[_0xcc7a('0x2c')][_0xcc7a('0x18')]);}_0x19421d[_0xcc7a('0x34')]=qs[_0xcc7a('0x35')](_0x22870e[_0xcc7a('0x2c')]['sort']);_0x19421d[_0xcc7a('0x36')]=qs[_0xcc7a('0x2e')](_[_0xcc7a('0x37')](_0x22870e['query'],_0x19519b[_0xcc7a('0x2e')]),_0x60a5dc);if(_0x22870e['query'][_0xcc7a('0x38')]){_0x19421d[_0xcc7a('0x36')]=_[_0xcc7a('0x39')](_0x19421d[_0xcc7a('0x36')],{'$or':_[_0xcc7a('0x26')](_0x60a5dc,function(_0x89eb24){if(_0x89eb24[_0xcc7a('0x2a')]!==_0xcc7a('0x3a')){var _0x16ad30={};_0x16ad30[_0x89eb24['name']]={'$like':'%'+_0x22870e[_0xcc7a('0x2c')][_0xcc7a('0x38')]+'%'};return _0x16ad30;}})});}_0x19421d=_[_0xcc7a('0x39')]({},_0x19421d,_0x22870e[_0xcc7a('0x3b')]);var _0x39542c={'where':_0x19421d['where']};return db[_0xcc7a('0x27')]['count'](_0x39542c)['then'](function(_0x4d724d){_0x5b33f7[_0xcc7a('0x1b')]=_0x4d724d;if(_0x22870e['query'][_0xcc7a('0x3c')]){_0x19421d['include']=[{'all':!![]}];}return db[_0xcc7a('0x27')][_0xcc7a('0x3d')](_0x19421d);})[_0xcc7a('0x21')](function(_0x1e4758){_0x5b33f7[_0xcc7a('0x3e')]=_0x1e4758;return _0x5b33f7;})[_0xcc7a('0x21')](respondWithFilteredResult(_0x5e1ff9,_0x19421d))[_0xcc7a('0x3f')](handleError(_0x5e1ff9,null));};exports['show']=function(_0x145214,_0x4aae29){var _0xec2f73={'raw':!![],'where':{'id':_0x145214[_0xcc7a('0x40')]['id']}},_0x3300f1={};_0x3300f1[_0xcc7a('0x2b')]=_[_0xcc7a('0x2d')](db[_0xcc7a('0x27')][_0xcc7a('0x28')]);_0x3300f1[_0xcc7a('0x2c')]=_[_0xcc7a('0x2d')](_0x145214[_0xcc7a('0x2c')]);_0x3300f1[_0xcc7a('0x2e')]=_[_0xcc7a('0x2f')](_0x3300f1['model'],_0x3300f1[_0xcc7a('0x2c')]);_0xec2f73[_0xcc7a('0x30')]=_[_0xcc7a('0x2f')](_0x3300f1[_0xcc7a('0x2b')],qs[_0xcc7a('0x41')](_0x145214[_0xcc7a('0x2c')]['fields']));_0xec2f73[_0xcc7a('0x30')]=_0xec2f73[_0xcc7a('0x30')][_0xcc7a('0x31')]?_0xec2f73[_0xcc7a('0x30')]:_0x3300f1[_0xcc7a('0x2b')];if(_0x145214['query']['includeAll']){_0xec2f73[_0xcc7a('0x42')]=[{'all':!![]}];}_0xec2f73=_[_0xcc7a('0x39')]({},_0xec2f73,_0x145214[_0xcc7a('0x3b')]);return db['ZendeskField']['find'](_0xec2f73)[_0xcc7a('0x21')](handleEntityNotFound(_0x4aae29,null))['then'](respondWithResult(_0x4aae29,null))['catch'](handleError(_0x4aae29,null));};exports[_0xcc7a('0x43')]=function(_0x2b6856,_0x4127fd){return db[_0xcc7a('0x27')][_0xcc7a('0x43')](_0x2b6856[_0xcc7a('0x44')],{})[_0xcc7a('0x21')](respondWithResult(_0x4127fd,0xc9))[_0xcc7a('0x3f')](handleError(_0x4127fd,null));};exports['update']=function(_0x861603,_0x421a93){if(_0x861603[_0xcc7a('0x44')]['id']){delete _0x861603[_0xcc7a('0x44')]['id'];}return db[_0xcc7a('0x27')][_0xcc7a('0x45')]({'where':{'id':_0x861603[_0xcc7a('0x40')]['id']}})[_0xcc7a('0x21')](handleEntityNotFound(_0x421a93,null))['then'](saveUpdates(_0x861603[_0xcc7a('0x44')],null))[_0xcc7a('0x21')](respondWithResult(_0x421a93,null))[_0xcc7a('0x3f')](handleError(_0x421a93,null));};exports[_0xcc7a('0x22')]=function(_0x2ac7db,_0x1e14c8){return db[_0xcc7a('0x27')][_0xcc7a('0x45')]({'where':{'id':_0x2ac7db['params']['id']}})[_0xcc7a('0x21')](handleEntityNotFound(_0x1e14c8,null))[_0xcc7a('0x21')](removeEntity(_0x1e14c8,null))[_0xcc7a('0x3f')](handleError(_0x1e14c8,null));};
\ No newline at end of file
+var _0xe1b6=['map','ZendeskField','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','order','sort','where','filters','filter','VIRTUAL','merge','options','findAll','rows','show','params','rawAttributes','includeAll','include','catch','create','body','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','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/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','reject','save','update','destroy','then','sendStatus','error','stack','name','send'];(function(_0x8ac591,_0x274d77){var _0x4a8d16=function(_0x4e4aa0){while(--_0x4e4aa0){_0x8ac591['push'](_0x8ac591['shift']());}};_0x4a8d16(++_0x274d77);}(_0xe1b6,0x14f));var _0x6e1b=function(_0x28dcd3,_0x33e8d0){_0x28dcd3=_0x28dcd3-0x0;var _0x44e5db=_0xe1b6[_0x28dcd3];return _0x44e5db;};'use strict';var emlformat=require(_0x6e1b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6e1b('0x1'));var jsonpatch=require(_0x6e1b('0x2'));var rp=require(_0x6e1b('0x3'));var moment=require(_0x6e1b('0x4'));var BPromise=require(_0x6e1b('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x6e1b('0x6'));var sox=require(_0x6e1b('0x7'));var csv=require(_0x6e1b('0x8'));var ejs=require(_0x6e1b('0x9'));var fs=require('fs');var fs_extra=require(_0x6e1b('0xa'));var _=require('lodash');var squel=require(_0x6e1b('0xb'));var crypto=require(_0x6e1b('0xc'));var jsforce=require(_0x6e1b('0xd'));var deskjs=require(_0x6e1b('0xe'));var toCsv=require(_0x6e1b('0x8'));var querystring=require(_0x6e1b('0xf'));var Papa=require(_0x6e1b('0x10'));var Redis=require(_0x6e1b('0x11'));var authService=require(_0x6e1b('0x12'));var qs=require(_0x6e1b('0x13'));var as=require(_0x6e1b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6e1b('0x15'))(_0x6e1b('0x16'));var utils=require(_0x6e1b('0x17'));var config=require(_0x6e1b('0x18'));var licenseUtil=require(_0x6e1b('0x19'));var db=require(_0x6e1b('0x1a'))['db'];function respondWithStatusCode(_0xa1518d,_0x15f8e0){_0x15f8e0=_0x15f8e0||0xcc;return function(_0x4ddbda){if(_0x4ddbda){return _0xa1518d['sendStatus'](_0x15f8e0);}return _0xa1518d[_0x6e1b('0x1b')](_0x15f8e0)[_0x6e1b('0x1c')]();};}function respondWithResult(_0xe25b28,_0x371a58){_0x371a58=_0x371a58||0xc8;return function(_0xb6aa60){if(_0xb6aa60){return _0xe25b28[_0x6e1b('0x1b')](_0x371a58)[_0x6e1b('0x1d')](_0xb6aa60);}};}function respondWithFilteredResult(_0x1dc1db,_0x2bce83){return function(_0x211782){if(_0x211782){var _0x4606aa=typeof _0x2bce83[_0x6e1b('0x1e')]===_0x6e1b('0x1f')&&typeof _0x2bce83[_0x6e1b('0x20')]===_0x6e1b('0x1f');var _0x980975=_0x211782[_0x6e1b('0x21')];var _0x59b1f2=_0x4606aa?0x0:_0x2bce83['offset'];var _0x17b592=_0x4606aa?_0x211782[_0x6e1b('0x21')]:_0x2bce83[_0x6e1b('0x1e')]+_0x2bce83[_0x6e1b('0x20')];var _0x235788;if(_0x17b592>=_0x980975){_0x17b592=_0x980975;_0x235788=0xc8;}else{_0x235788=0xce;}_0x1dc1db[_0x6e1b('0x1b')](_0x235788);return _0x1dc1db[_0x6e1b('0x22')]('Content-Range',_0x59b1f2+'-'+_0x17b592+'/'+_0x980975)[_0x6e1b('0x1d')](_0x211782);}return null;};}function patchUpdates(_0x242923){return function(_0x37656a){try{jsonpatch['apply'](_0x37656a,_0x242923,!![]);}catch(_0x3060ac){return BPromise[_0x6e1b('0x23')](_0x3060ac);}return _0x37656a[_0x6e1b('0x24')]();};}function saveUpdates(_0x3cc5be,_0x36074c){return function(_0x4095b7){if(_0x4095b7){return _0x4095b7[_0x6e1b('0x25')](_0x3cc5be)['then'](function(_0x2adf3b){return _0x2adf3b;});}return null;};}function removeEntity(_0x3c9f8f,_0x136783){return function(_0x1b72a7){if(_0x1b72a7){return _0x1b72a7[_0x6e1b('0x26')]()[_0x6e1b('0x27')](function(){_0x3c9f8f[_0x6e1b('0x1b')](0xcc)[_0x6e1b('0x1c')]();});}};}function handleEntityNotFound(_0x52086b,_0x2a143f){return function(_0x1dee87){if(!_0x1dee87){_0x52086b[_0x6e1b('0x28')](0x194);}return _0x1dee87;};}function handleError(_0x25d9bc,_0x40e2bb){_0x40e2bb=_0x40e2bb||0x1f4;return function(_0x9c2ff9){logger[_0x6e1b('0x29')](_0x9c2ff9[_0x6e1b('0x2a')]);if(_0x9c2ff9[_0x6e1b('0x2b')]){delete _0x9c2ff9[_0x6e1b('0x2b')];}_0x25d9bc[_0x6e1b('0x1b')](_0x40e2bb)[_0x6e1b('0x2c')](_0x9c2ff9);};}exports['index']=function(_0x895be5,_0x362b00){var _0x2ade3b={},_0x1449ec={},_0x3319ab={'count':0x0,'rows':[]};var _0x36172c=_[_0x6e1b('0x2d')](db[_0x6e1b('0x2e')]['rawAttributes'],function(_0x415397){return{'name':_0x415397[_0x6e1b('0x2f')],'type':_0x415397[_0x6e1b('0x30')][_0x6e1b('0x31')]};});_0x1449ec[_0x6e1b('0x32')]=_['map'](_0x36172c,_0x6e1b('0x2b'));_0x1449ec[_0x6e1b('0x33')]=_[_0x6e1b('0x34')](_0x895be5['query']);_0x1449ec['filters']=_[_0x6e1b('0x35')](_0x1449ec[_0x6e1b('0x32')],_0x1449ec[_0x6e1b('0x33')]);_0x2ade3b[_0x6e1b('0x36')]=_[_0x6e1b('0x35')](_0x1449ec[_0x6e1b('0x32')],qs['fields'](_0x895be5['query'][_0x6e1b('0x37')]));_0x2ade3b[_0x6e1b('0x36')]=_0x2ade3b['attributes'][_0x6e1b('0x38')]?_0x2ade3b[_0x6e1b('0x36')]:_0x1449ec[_0x6e1b('0x32')];if(!_0x895be5['query']['hasOwnProperty']('nolimit')){_0x2ade3b[_0x6e1b('0x20')]=qs[_0x6e1b('0x20')](_0x895be5[_0x6e1b('0x33')][_0x6e1b('0x20')]);_0x2ade3b[_0x6e1b('0x1e')]=qs[_0x6e1b('0x1e')](_0x895be5['query']['offset']);}_0x2ade3b[_0x6e1b('0x39')]=qs[_0x6e1b('0x3a')](_0x895be5[_0x6e1b('0x33')]['sort']);_0x2ade3b[_0x6e1b('0x3b')]=qs[_0x6e1b('0x3c')](_['pick'](_0x895be5['query'],_0x1449ec['filters']),_0x36172c);if(_0x895be5['query'][_0x6e1b('0x3d')]){_0x2ade3b[_0x6e1b('0x3b')]=_['merge'](_0x2ade3b['where'],{'$or':_[_0x6e1b('0x2d')](_0x36172c,function(_0x1bdfee){if(_0x1bdfee['type']!==_0x6e1b('0x3e')){var _0x4e1712={};_0x4e1712[_0x1bdfee[_0x6e1b('0x2b')]]={'$like':'%'+_0x895be5['query'][_0x6e1b('0x3d')]+'%'};return _0x4e1712;}})});}_0x2ade3b=_[_0x6e1b('0x3f')]({},_0x2ade3b,_0x895be5[_0x6e1b('0x40')]);var _0x165062={'where':_0x2ade3b[_0x6e1b('0x3b')]};return db['ZendeskField']['count'](_0x165062)[_0x6e1b('0x27')](function(_0x166311){_0x3319ab[_0x6e1b('0x21')]=_0x166311;if(_0x895be5[_0x6e1b('0x33')]['includeAll']){_0x2ade3b['include']=[{'all':!![]}];}return db['ZendeskField'][_0x6e1b('0x41')](_0x2ade3b);})[_0x6e1b('0x27')](function(_0x5186c6){_0x3319ab[_0x6e1b('0x42')]=_0x5186c6;return _0x3319ab;})['then'](respondWithFilteredResult(_0x362b00,_0x2ade3b))['catch'](handleError(_0x362b00,null));};exports[_0x6e1b('0x43')]=function(_0x27e393,_0x619d2d){var _0x59f5a8={'raw':!![],'where':{'id':_0x27e393[_0x6e1b('0x44')]['id']}},_0x5d38fe={};_0x5d38fe['model']=_['keys'](db['ZendeskField'][_0x6e1b('0x45')]);_0x5d38fe[_0x6e1b('0x33')]=_['keys'](_0x27e393[_0x6e1b('0x33')]);_0x5d38fe[_0x6e1b('0x3c')]=_[_0x6e1b('0x35')](_0x5d38fe[_0x6e1b('0x32')],_0x5d38fe[_0x6e1b('0x33')]);_0x59f5a8[_0x6e1b('0x36')]=_['intersection'](_0x5d38fe[_0x6e1b('0x32')],qs['fields'](_0x27e393['query'][_0x6e1b('0x37')]));_0x59f5a8[_0x6e1b('0x36')]=_0x59f5a8[_0x6e1b('0x36')][_0x6e1b('0x38')]?_0x59f5a8[_0x6e1b('0x36')]:_0x5d38fe['model'];if(_0x27e393[_0x6e1b('0x33')][_0x6e1b('0x46')]){_0x59f5a8[_0x6e1b('0x47')]=[{'all':!![]}];}_0x59f5a8=_['merge']({},_0x59f5a8,_0x27e393[_0x6e1b('0x40')]);return db[_0x6e1b('0x2e')]['find'](_0x59f5a8)['then'](handleEntityNotFound(_0x619d2d,null))[_0x6e1b('0x27')](respondWithResult(_0x619d2d,null))[_0x6e1b('0x48')](handleError(_0x619d2d,null));};exports[_0x6e1b('0x49')]=function(_0x20c2b7,_0x5689bd){return db[_0x6e1b('0x2e')][_0x6e1b('0x49')](_0x20c2b7[_0x6e1b('0x4a')],{})[_0x6e1b('0x27')](respondWithResult(_0x5689bd,0xc9))[_0x6e1b('0x48')](handleError(_0x5689bd,null));};exports['update']=function(_0x36e0d1,_0x1936eb){if(_0x36e0d1[_0x6e1b('0x4a')]['id']){delete _0x36e0d1[_0x6e1b('0x4a')]['id'];}return db[_0x6e1b('0x2e')][_0x6e1b('0x4b')]({'where':{'id':_0x36e0d1[_0x6e1b('0x44')]['id']}})[_0x6e1b('0x27')](handleEntityNotFound(_0x1936eb,null))[_0x6e1b('0x27')](saveUpdates(_0x36e0d1['body'],null))['then'](respondWithResult(_0x1936eb,null))['catch'](handleError(_0x1936eb,null));};exports[_0x6e1b('0x26')]=function(_0x5550d7,_0x48a943){return db[_0x6e1b('0x2e')]['find']({'where':{'id':_0x5550d7['params']['id']}})[_0x6e1b('0x27')](handleEntityNotFound(_0x48a943,null))['then'](removeEntity(_0x48a943,null))[_0x6e1b('0x48')](handleError(_0x48a943,null));};
\ No newline at end of file
index 955f7ac..e932bd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90f1=['int_zendesk_fields','zendesk_unique_index','lodash','util','../../config/logger','moment','bluebird','request-promise','../../config/environment','./intZendeskField.attributes','exports','ZendeskField'];(function(_0x29c3f3,_0x17cc26){var _0x420c9e=function(_0x5c660c){while(--_0x5c660c){_0x29c3f3['push'](_0x29c3f3['shift']());}};_0x420c9e(++_0x17cc26);}(_0x90f1,0x9e));var _0x190f=function(_0x115554,_0x533996){_0x115554=_0x115554-0x0;var _0x2b9378=_0x90f1[_0x115554];return _0x2b9378;};'use strict';var _=require(_0x190f('0x0'));var util=require(_0x190f('0x1'));var logger=require(_0x190f('0x2'))('api');var moment=require(_0x190f('0x3'));var BPromise=require(_0x190f('0x4'));var rp=require(_0x190f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x190f('0x6'));var attributes=require(_0x190f('0x7'));module[_0x190f('0x8')]=function(_0x244db4,_0x1df102){return _0x244db4['define'](_0x190f('0x9'),attributes,{'tableName':_0x190f('0xa'),'paranoid':![],'indexes':[{'name':_0x190f('0xb'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcc13=['path','rimraf','../../config/environment','./intZendeskField.attributes','define','ZendeskField','int_zendesk_fields','zendesk_unique_index','FieldId','api','bluebird','request-promise'];(function(_0x312bee,_0x2725a8){var _0x1808a1=function(_0x586fb3){while(--_0x586fb3){_0x312bee['push'](_0x312bee['shift']());}};_0x1808a1(++_0x2725a8);}(_0xcc13,0x81));var _0x3cc1=function(_0x2172d1,_0x28af11){_0x2172d1=_0x2172d1-0x0;var _0x1f3c34=_0xcc13[_0x2172d1];return _0x1f3c34;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x3cc1('0x0'));var moment=require('moment');var BPromise=require(_0x3cc1('0x1'));var rp=require(_0x3cc1('0x2'));var fs=require('fs');var path=require(_0x3cc1('0x3'));var rimraf=require(_0x3cc1('0x4'));var config=require(_0x3cc1('0x5'));var attributes=require(_0x3cc1('0x6'));module['exports']=function(_0x4897ef,_0x374548){return _0x4897ef[_0x3cc1('0x7')](_0x3cc1('0x8'),attributes,{'tableName':_0x3cc1('0x9'),'paranoid':![],'indexes':[{'name':_0x3cc1('0xa'),'fields':['idField',_0x3cc1('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 5789d71..79f869d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee0e=['../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','ZendeskField,\x20%s,\x20%s','message','result','catch','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x51d05b,_0x41a351){var _0x5e5c8d=function(_0x3b418f){while(--_0x3b418f){_0x51d05b['push'](_0x51d05b['shift']());}};_0x5e5c8d(++_0x41a351);}(_0xee0e,0x16f));var _0xeee0=function(_0x20845e,_0x211e78){_0x20845e=_0x20845e-0x0;var _0x28cf2b=_0xee0e[_0x20845e];return _0x28cf2b;};'use strict';var _=require(_0xeee0('0x0'));var util=require('util');var moment=require(_0xeee0('0x1'));var BPromise=require('bluebird');var rs=require(_0xeee0('0x2'));var fs=require('fs');var Redis=require(_0xeee0('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xeee0('0x4'));var logger=require(_0xeee0('0x5'))(_0xeee0('0x6'));var config=require(_0xeee0('0x7'));var jayson=require(_0xeee0('0x8'));var client=jayson[_0xeee0('0x9')][_0xeee0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x159cda,_0xea084b,_0x2a0ef1){return new BPromise(function(_0x4c7b53,_0x5b6220){return client[_0xeee0('0xb')](_0x159cda,_0x2a0ef1)['then'](function(_0x598839){logger['info']('ZendeskField,\x20%s,\x20%s',_0xea084b,_0xeee0('0xc'));logger[_0xeee0('0xd')](_0xeee0('0xe'),_0xea084b,_0xeee0('0xc'),JSON[_0xeee0('0xf')](_0x598839));if(_0x598839[_0xeee0('0x10')]){if(_0x598839[_0xeee0('0x10')][_0xeee0('0x11')]===0x1f4){logger['error'](_0xeee0('0x12'),_0xea084b,_0x598839['error'][_0xeee0('0x13')]);return _0x5b6220(_0x598839[_0xeee0('0x10')][_0xeee0('0x13')]);}logger['error'](_0xeee0('0x12'),_0xea084b,_0x598839[_0xeee0('0x10')][_0xeee0('0x13')]);return _0x4c7b53(_0x598839[_0xeee0('0x10')]['message']);}else{logger['info'](_0xeee0('0x12'),_0xea084b,_0xeee0('0xc'));_0x4c7b53(_0x598839[_0xeee0('0x14')][_0xeee0('0x13')]);}})[_0xeee0('0x15')](function(_0x34f6f3){logger[_0xeee0('0x10')](_0xeee0('0x12'),_0xea084b,_0x34f6f3);_0x5b6220(_0x34f6f3);});});}
\ No newline at end of file
+var _0x42ba=['ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1b01db,_0x12b02e){var _0x2c8b27=function(_0x203fa1){while(--_0x203fa1){_0x1b01db['push'](_0x1b01db['shift']());}};_0x2c8b27(++_0x12b02e);}(_0x42ba,0x14c));var _0xa42b=function(_0x47e145,_0x3988f7){_0x47e145=_0x47e145-0x0;var _0x28cd88=_0x42ba[_0x47e145];return _0x28cd88;};'use strict';var _=require(_0xa42b('0x0'));var util=require(_0xa42b('0x1'));var moment=require(_0xa42b('0x2'));var BPromise=require(_0xa42b('0x3'));var rs=require(_0xa42b('0x4'));var fs=require('fs');var Redis=require(_0xa42b('0x5'));var db=require(_0xa42b('0x6'))['db'];var utils=require(_0xa42b('0x7'));var logger=require('../../config/logger')(_0xa42b('0x8'));var config=require(_0xa42b('0x9'));var jayson=require(_0xa42b('0xa'));var client=jayson['client'][_0xa42b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x44974a,_0x417605,_0x18b0a6){return new BPromise(function(_0x1bdf5f,_0x1caa9b){return client[_0xa42b('0xc')](_0x44974a,_0x18b0a6)[_0xa42b('0xd')](function(_0x5509cd){logger[_0xa42b('0xe')](_0xa42b('0xf'),_0x417605,_0xa42b('0x10'));logger[_0xa42b('0x11')](_0xa42b('0x12'),_0x417605,_0xa42b('0x10'),JSON[_0xa42b('0x13')](_0x5509cd));if(_0x5509cd[_0xa42b('0x14')]){if(_0x5509cd[_0xa42b('0x14')][_0xa42b('0x15')]===0x1f4){logger[_0xa42b('0x14')](_0xa42b('0xf'),_0x417605,_0x5509cd[_0xa42b('0x14')][_0xa42b('0x16')]);return _0x1caa9b(_0x5509cd[_0xa42b('0x14')][_0xa42b('0x16')]);}logger[_0xa42b('0x14')](_0xa42b('0xf'),_0x417605,_0x5509cd[_0xa42b('0x14')]['message']);return _0x1bdf5f(_0x5509cd['error']['message']);}else{logger[_0xa42b('0xe')]('ZendeskField,\x20%s,\x20%s',_0x417605,_0xa42b('0x10'));_0x1bdf5f(_0x5509cd[_0xa42b('0x17')][_0xa42b('0x16')]);}})[_0xa42b('0x18')](function(_0x5475b6){logger[_0xa42b('0x14')](_0xa42b('0xf'),_0x417605,_0x5475b6);_0x1caa9b(_0x5475b6);});});}
\ No newline at end of file
index eaff631..19755c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92b7=['destroy','exports','multer','express','Router','../../components/auth/service','../../components/interaction/service','./intZohoAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','delete'];(function(_0x26d0c4,_0x12d98f){var _0x4b77a3=function(_0x2554dc){while(--_0x2554dc){_0x26d0c4['push'](_0x26d0c4['shift']());}};_0x4b77a3(++_0x12d98f);}(_0x92b7,0x1ce));var _0x792b=function(_0x4aea3a,_0x3839f9){_0x4aea3a=_0x4aea3a-0x0;var _0x5a349e=_0x92b7[_0x4aea3a];return _0x5a349e;};'use strict';var multer=require(_0x792b('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x792b('0x1'));var router=express[_0x792b('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x792b('0x3'));var interaction=require(_0x792b('0x4'));var config=require('../../config/environment');var controller=require(_0x792b('0x5'));router[_0x792b('0x6')]('/',auth[_0x792b('0x7')](),controller[_0x792b('0x8')]);router[_0x792b('0x6')](_0x792b('0x9'),auth['isAuthenticated'](),controller[_0x792b('0xa')]);router[_0x792b('0x6')](_0x792b('0xb'),auth[_0x792b('0x7')](),controller['getConfigurations']);router['get'](_0x792b('0xc'),auth['isAuthenticated'](),controller[_0x792b('0xd')]);router[_0x792b('0xe')]('/',auth[_0x792b('0x7')](),controller[_0x792b('0xf')]);router[_0x792b('0xe')](_0x792b('0xb'),auth['isAuthenticated'](),controller[_0x792b('0x10')]);router['put'](_0x792b('0x9'),auth[_0x792b('0x7')](),controller['update']);router[_0x792b('0x11')]('/:id',auth[_0x792b('0x7')](),controller[_0x792b('0x12')]);module[_0x792b('0x13')]=router;
\ No newline at end of file
+var _0x8d50=['fs-extra','../../components/auth/service','./intZohoAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','delete','destroy','multer','util','path','connect-timeout','Router'];(function(_0xc2dde6,_0x1cccc9){var _0x9fc29c=function(_0x54ba28){while(--_0x54ba28){_0xc2dde6['push'](_0xc2dde6['shift']());}};_0x9fc29c(++_0x1cccc9);}(_0x8d50,0xb3));var _0x08d5=function(_0x59d0fa,_0x564873){_0x59d0fa=_0x59d0fa-0x0;var _0x51b65a=_0x8d50[_0x59d0fa];return _0x51b65a;};'use strict';var multer=require(_0x08d5('0x0'));var util=require(_0x08d5('0x1'));var path=require(_0x08d5('0x2'));var timeout=require(_0x08d5('0x3'));var express=require('express');var router=express[_0x08d5('0x4')]();var fs_extra=require(_0x08d5('0x5'));var auth=require(_0x08d5('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x08d5('0x7'));router[_0x08d5('0x8')]('/',auth[_0x08d5('0x9')](),controller[_0x08d5('0xa')]);router[_0x08d5('0x8')](_0x08d5('0xb'),auth[_0x08d5('0x9')](),controller[_0x08d5('0xc')]);router['get'](_0x08d5('0xd'),auth[_0x08d5('0x9')](),controller[_0x08d5('0xe')]);router[_0x08d5('0x8')](_0x08d5('0xf'),auth[_0x08d5('0x9')](),controller[_0x08d5('0x10')]);router['post']('/',auth[_0x08d5('0x9')](),controller['create']);router[_0x08d5('0x11')](_0x08d5('0xd'),auth['isAuthenticated'](),controller[_0x08d5('0x12')]);router[_0x08d5('0x13')](_0x08d5('0xb'),auth[_0x08d5('0x9')](),controller[_0x08d5('0x14')]);router[_0x08d5('0x15')](_0x08d5('0xb'),auth[_0x08d5('0x9')](),controller[_0x08d5('0x16')]);module['exports']=router;
\ No newline at end of file
index f2b0e8a..31a5039 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['STRING','sequelize','exports'];(function(_0x203d1d,_0x2c8d62){var _0x2f1332=function(_0x5a222b){while(--_0x5a222b){_0x203d1d['push'](_0x203d1d['shift']());}};_0x2f1332(++_0x2c8d62);}(_0x00bb,0x1d8));var _0xb00b=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x00bb[_0x6c993a];return _0x27f547;};'use strict';var Sequelize=require(_0xb00b('0x0'));module[_0xb00b('0x1')]={'name':{'type':Sequelize[_0xb00b('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xb00b('0x2')]},'zone':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xb00b('0x2')]},'clientSecret':{'type':Sequelize[_0xb00b('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'code':{'type':Sequelize[_0xb00b('0x2')]},'refreshToken':{'type':Sequelize[_0xb00b('0x2')]}};
\ No newline at end of file
+var _0xb4e6=['sequelize','STRING'];(function(_0x448f08,_0xc1365f){var _0x5e5e13=function(_0x7fa134){while(--_0x7fa134){_0x448f08['push'](_0x448f08['shift']());}};_0x5e5e13(++_0xc1365f);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x4d8dc3,_0x585fd1){_0x4d8dc3=_0x4d8dc3-0x0;var _0x9b03d9=_0xb4e6[_0x4d8dc3];return _0x9b03d9;};'use strict';var Sequelize=require(_0x6b4e('0x0'));module['exports']={'name':{'type':Sequelize[_0x6b4e('0x1')]},'description':{'type':Sequelize[_0x6b4e('0x1')]},'host':{'type':Sequelize[_0x6b4e('0x1')]},'zone':{'type':Sequelize[_0x6b4e('0x1')]},'clientId':{'type':Sequelize[_0x6b4e('0x1')]},'clientSecret':{'type':Sequelize[_0x6b4e('0x1')]},'serverUrl':{'type':Sequelize[_0x6b4e('0x1')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x6b4e('0x1')]}};
\ No newline at end of file
index 5d34de8..0c9cff4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc06c=['zone','serverUrl','host','zoho.eu','slice','substring','lastIndexOf','refreshToken','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','Calls','Zoho-oauthtoken\x20','response','message','Owner','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','push','custom_field','data_type','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','error','name','send','index','map','ZohoAccount','rawAttributes','model','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','show','params','length','find','body','update','findOne','order','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoConfiguration','create','ZohoField','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc06c,0xa6));var _0xcc06=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xc06c[_0x6131cd];return _0x47e916;};'use strict';var emlformat=require(_0xcc06('0x0'));var rimraf=require(_0xcc06('0x1'));var zipdir=require(_0xcc06('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcc06('0x3'));var moment=require(_0xcc06('0x4'));var BPromise=require(_0xcc06('0x5'));var Mustache=require(_0xcc06('0x6'));var util=require(_0xcc06('0x7'));var path=require('path');var sox=require(_0xcc06('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcc06('0x9'));var _=require(_0xcc06('0xa'));var squel=require(_0xcc06('0xb'));var crypto=require('crypto');var jsforce=require(_0xcc06('0xc'));var deskjs=require(_0xcc06('0xd'));var toCsv=require(_0xcc06('0xe'));var querystring=require(_0xcc06('0xf'));var Papa=require(_0xcc06('0x10'));var Redis=require('ioredis');var authService=require(_0xcc06('0x11'));var qs=require(_0xcc06('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xcc06('0x13'))(_0xcc06('0x14'));var utils=require(_0xcc06('0x15'));var config=require(_0xcc06('0x16'));var licenseUtil=require(_0xcc06('0x17'));var db=require(_0xcc06('0x18'))['db'];var integrations=require(_0xcc06('0x19'));function respondWithStatusCode(_0x317883,_0x2c980c){_0x2c980c=_0x2c980c||0xcc;return function(_0x2d6cb5){if(_0x2d6cb5){return _0x317883[_0xcc06('0x1a')](_0x2c980c);}return _0x317883[_0xcc06('0x1b')](_0x2c980c)[_0xcc06('0x1c')]();};}function respondWithResult(_0x47fece,_0x3acbe3){_0x3acbe3=_0x3acbe3||0xc8;return function(_0x205b65){if(_0x205b65){return _0x47fece[_0xcc06('0x1b')](_0x3acbe3)[_0xcc06('0x1d')](_0x205b65);}};}function respondWithFilteredResult(_0x4d9161,_0x3cc9bb){return function(_0x4a9eaa){if(_0x4a9eaa){var _0x41eadc=typeof _0x3cc9bb[_0xcc06('0x1e')]===_0xcc06('0x1f')&&typeof _0x3cc9bb[_0xcc06('0x20')]==='undefined';var _0x36e48d=_0x4a9eaa['count'];var _0x2a0ffb=_0x41eadc?0x0:_0x3cc9bb['offset'];var _0x2567dd=_0x41eadc?_0x4a9eaa[_0xcc06('0x21')]:_0x3cc9bb['offset']+_0x3cc9bb[_0xcc06('0x20')];var _0x46fa61;if(_0x2567dd>=_0x36e48d){_0x2567dd=_0x36e48d;_0x46fa61=0xc8;}else{_0x46fa61=0xce;}_0x4d9161['status'](_0x46fa61);return _0x4d9161[_0xcc06('0x22')](_0xcc06('0x23'),_0x2a0ffb+'-'+_0x2567dd+'/'+_0x36e48d)[_0xcc06('0x1d')](_0x4a9eaa);}return null;};}function patchUpdates(_0x560a2a){return function(_0x2cbb93){try{jsonpatch['apply'](_0x2cbb93,_0x560a2a,!![]);}catch(_0x1dc1ff){return BPromise[_0xcc06('0x24')](_0x1dc1ff);}return _0x2cbb93[_0xcc06('0x25')]();};}function saveUpdates(_0x48f95c,_0x19d8dd){return function(_0x606849){if(_0x606849){return _0x606849['update'](_0x48f95c)[_0xcc06('0x26')](function(_0x2f329e){return _0x2f329e;});}return null;};}function removeEntity(_0x37db31,_0x588092){return function(_0x12cb23){if(_0x12cb23){return _0x12cb23[_0xcc06('0x27')]()[_0xcc06('0x26')](function(){_0x37db31['status'](0xcc)[_0xcc06('0x1c')]();});}};}function handleEntityNotFound(_0x298634,_0x4b3e85){return function(_0x261e14){if(!_0x261e14){_0x298634[_0xcc06('0x1a')](0x194);}return _0x261e14;};}function handleError(_0x19177a,_0x5cf939){_0x5cf939=_0x5cf939||0x1f4;return function(_0x4f74e9){logger[_0xcc06('0x28')](_0x4f74e9['stack']);if(_0x4f74e9[_0xcc06('0x29')]){delete _0x4f74e9[_0xcc06('0x29')];}_0x19177a[_0xcc06('0x1b')](_0x5cf939)[_0xcc06('0x2a')](_0x4f74e9);};}exports[_0xcc06('0x2b')]=function(_0x49fcf8,_0x603f40){var _0x54dc5f={},_0x4ff092={},_0x33fe80={'count':0x0,'rows':[]};var _0x4762c1=_[_0xcc06('0x2c')](db[_0xcc06('0x2d')][_0xcc06('0x2e')],function(_0x36a2c3){return{'name':_0x36a2c3['fieldName'],'type':_0x36a2c3['type']['key']};});_0x4ff092[_0xcc06('0x2f')]=_[_0xcc06('0x2c')](_0x4762c1,_0xcc06('0x29'));_0x4ff092[_0xcc06('0x30')]=_[_0xcc06('0x31')](_0x49fcf8[_0xcc06('0x30')]);_0x4ff092['filters']=_['intersection'](_0x4ff092[_0xcc06('0x2f')],_0x4ff092[_0xcc06('0x30')]);_0x54dc5f[_0xcc06('0x32')]=_[_0xcc06('0x33')](_0x4ff092['model'],qs[_0xcc06('0x34')](_0x49fcf8[_0xcc06('0x30')][_0xcc06('0x34')]));_0x54dc5f[_0xcc06('0x32')]=_0x54dc5f[_0xcc06('0x32')]['length']?_0x54dc5f['attributes']:_0x4ff092[_0xcc06('0x2f')];if(!_0x49fcf8[_0xcc06('0x30')][_0xcc06('0x35')](_0xcc06('0x36'))){_0x54dc5f[_0xcc06('0x20')]=qs[_0xcc06('0x20')](_0x49fcf8[_0xcc06('0x30')][_0xcc06('0x20')]);_0x54dc5f[_0xcc06('0x1e')]=qs['offset'](_0x49fcf8[_0xcc06('0x30')]['offset']);}_0x54dc5f['order']=qs[_0xcc06('0x37')](_0x49fcf8[_0xcc06('0x30')]['sort']);_0x54dc5f[_0xcc06('0x38')]=qs[_0xcc06('0x39')](_[_0xcc06('0x3a')](_0x49fcf8[_0xcc06('0x30')],_0x4ff092[_0xcc06('0x39')]),_0x4762c1);if(_0x49fcf8[_0xcc06('0x30')][_0xcc06('0x3b')]){_0x54dc5f[_0xcc06('0x38')]=_[_0xcc06('0x3c')](_0x54dc5f[_0xcc06('0x38')],{'$or':_[_0xcc06('0x2c')](_0x4762c1,function(_0x334b25){if(_0x334b25[_0xcc06('0x3d')]!=='VIRTUAL'){var _0x2f274a={};_0x2f274a[_0x334b25[_0xcc06('0x29')]]={'$like':'%'+_0x49fcf8['query'][_0xcc06('0x3b')]+'%'};return _0x2f274a;}})});}_0x54dc5f=_['merge']({},_0x54dc5f,_0x49fcf8[_0xcc06('0x3e')]);var _0x152a3f={'where':_0x54dc5f[_0xcc06('0x38')]};return db[_0xcc06('0x2d')]['count'](_0x152a3f)['then'](function(_0x57b617){_0x33fe80[_0xcc06('0x21')]=_0x57b617;if(_0x49fcf8[_0xcc06('0x30')][_0xcc06('0x3f')]){_0x54dc5f[_0xcc06('0x40')]=[{'all':!![]}];}return db[_0xcc06('0x2d')][_0xcc06('0x41')](_0x54dc5f);})[_0xcc06('0x26')](function(_0x563593){_0x33fe80[_0xcc06('0x42')]=_0x563593;return _0x33fe80;})['then'](respondWithFilteredResult(_0x603f40,_0x54dc5f))[_0xcc06('0x43')](handleError(_0x603f40,null));};exports[_0xcc06('0x44')]=function(_0x1b3b94,_0x29a64d){var _0x2db3ee={'raw':![],'where':{'id':_0x1b3b94[_0xcc06('0x45')]['id']}},_0x2f4173={};_0x2f4173['model']=_[_0xcc06('0x31')](db['ZohoAccount']['rawAttributes']);_0x2f4173[_0xcc06('0x30')]=_[_0xcc06('0x31')](_0x1b3b94['query']);_0x2f4173[_0xcc06('0x39')]=_[_0xcc06('0x33')](_0x2f4173[_0xcc06('0x2f')],_0x2f4173[_0xcc06('0x30')]);_0x2db3ee['attributes']=_[_0xcc06('0x33')](_0x2f4173['model'],qs[_0xcc06('0x34')](_0x1b3b94[_0xcc06('0x30')][_0xcc06('0x34')]));_0x2db3ee[_0xcc06('0x32')]=_0x2db3ee[_0xcc06('0x32')][_0xcc06('0x46')]?_0x2db3ee['attributes']:_0x2f4173[_0xcc06('0x2f')];if(_0x1b3b94[_0xcc06('0x30')][_0xcc06('0x3f')]){_0x2db3ee[_0xcc06('0x40')]=[{'all':!![]}];}_0x2db3ee=_[_0xcc06('0x3c')]({},_0x2db3ee,_0x1b3b94['options']);return db[_0xcc06('0x2d')][_0xcc06('0x47')](_0x2db3ee)[_0xcc06('0x26')](handleEntityNotFound(_0x29a64d,null))['then'](respondWithResult(_0x29a64d,null))['catch'](handleError(_0x29a64d,null));};exports['create']=function(_0x2c45e1,_0x19b540){return db['ZohoAccount']['create'](_0x2c45e1[_0xcc06('0x48')],{})[_0xcc06('0x26')](respondWithResult(_0x19b540,0xc9))[_0xcc06('0x43')](handleError(_0x19b540,null));};exports[_0xcc06('0x49')]=function(_0x5e9d07,_0x17bd22){if(_0x5e9d07[_0xcc06('0x48')]['id']){delete _0x5e9d07['body']['id'];}return db[_0xcc06('0x2d')]['find']({'where':{'id':_0x5e9d07[_0xcc06('0x45')]['id']}})[_0xcc06('0x26')](handleEntityNotFound(_0x17bd22,null))[_0xcc06('0x26')](saveUpdates(_0x5e9d07[_0xcc06('0x48')],null))[_0xcc06('0x26')](respondWithResult(_0x17bd22,null))[_0xcc06('0x43')](handleError(_0x17bd22,null));};exports[_0xcc06('0x27')]=function(_0xd109b9,_0xd04a10){return db[_0xcc06('0x2d')][_0xcc06('0x47')]({'where':{'id':_0xd109b9[_0xcc06('0x45')]['id']}})[_0xcc06('0x26')](handleEntityNotFound(_0xd04a10,null))['then'](removeEntity(_0xd04a10,null))[_0xcc06('0x43')](handleError(_0xd04a10,null));};exports['getConfigurations']=function(_0x2fbb22,_0x2080f8,_0x553cd6){var _0xe5ec0a={};var _0xb0e691={};var _0x462895;var _0x3e55d6;return db['ZohoAccount'][_0xcc06('0x4a')]({'where':{'id':_0x2fbb22[_0xcc06('0x45')]['id']}})[_0xcc06('0x26')](handleEntityNotFound(_0x2080f8,null))[_0xcc06('0x26')](function(_0x53fe33){if(_0x53fe33){_0x462895=_0x53fe33;_0xb0e691[_0xcc06('0x2f')]=_[_0xcc06('0x31')](db['ZohoConfiguration'][_0xcc06('0x2e')]);_0xb0e691[_0xcc06('0x30')]=_['keys'](_0x2fbb22['query']);_0xb0e691[_0xcc06('0x39')]=_['intersection'](_0xb0e691[_0xcc06('0x2f')],_0xb0e691[_0xcc06('0x30')]);_0xe5ec0a[_0xcc06('0x32')]=_[_0xcc06('0x33')](_0xb0e691[_0xcc06('0x2f')],qs[_0xcc06('0x34')](_0x2fbb22[_0xcc06('0x30')][_0xcc06('0x34')]));_0xe5ec0a[_0xcc06('0x32')]=_0xe5ec0a[_0xcc06('0x32')]['length']?_0xe5ec0a[_0xcc06('0x32')]:_0xb0e691[_0xcc06('0x2f')];_0xe5ec0a[_0xcc06('0x4b')]=qs[_0xcc06('0x37')](_0x2fbb22[_0xcc06('0x30')]['sort']);_0xe5ec0a[_0xcc06('0x38')]=qs[_0xcc06('0x39')](_['pick'](_0x2fbb22[_0xcc06('0x30')],_0xb0e691[_0xcc06('0x39')]));if(_0x2fbb22[_0xcc06('0x30')][_0xcc06('0x3b')]){_0xe5ec0a[_0xcc06('0x38')]=_[_0xcc06('0x3c')](_0xe5ec0a[_0xcc06('0x38')],{'$or':_[_0xcc06('0x2c')](_0xe5ec0a[_0xcc06('0x32')],function(_0x2e1b31){var _0xd85c23={};_0xd85c23[_0x2e1b31]={'$like':'%'+_0x2fbb22[_0xcc06('0x30')][_0xcc06('0x3b')]+'%'};return _0xd85c23;})});}_0xe5ec0a=_[_0xcc06('0x3c')]({},_0xe5ec0a,_0x2fbb22['options']);return _0x462895[_0xcc06('0x4c')](_0xe5ec0a);}})['then'](function(_0x436cac){if(_0x436cac){_0x3e55d6=_0x436cac['length'];if(!_0x2fbb22['query'][_0xcc06('0x35')](_0xcc06('0x36'))){_0xe5ec0a[_0xcc06('0x20')]=qs[_0xcc06('0x20')](_0x2fbb22[_0xcc06('0x30')][_0xcc06('0x20')]);_0xe5ec0a['offset']=qs['offset'](_0x2fbb22[_0xcc06('0x30')][_0xcc06('0x1e')]);}return _0x462895['getConfigurations'](_0xe5ec0a);}})['then'](function(_0x56889d){if(_0x56889d){return _0x56889d?{'count':_0x3e55d6,'rows':_0x56889d}:null;}})[_0xcc06('0x26')](respondWithResult(_0x2080f8,null))['catch'](handleError(_0x2080f8,null));};exports[_0xcc06('0x4d')]=function(_0x3623eb,_0x4036f4,_0x7269bc){if(_0x3623eb['body']['id']){delete _0x3623eb[_0xcc06('0x48')]['id'];}return db[_0xcc06('0x2d')][_0xcc06('0x4a')]({'where':{'id':_0x3623eb[_0xcc06('0x45')]['id']}})[_0xcc06('0x26')](handleEntityNotFound(_0x4036f4,null))[_0xcc06('0x26')](function(_0x3f3fde){if(_0x3f3fde){_0x3623eb[_0xcc06('0x48')][_0xcc06('0x4e')]=_0x3f3fde['id'];_0x3623eb['body'][_0xcc06('0x4f')]=integrations[_0xcc06('0x50')](_0x3623eb[_0xcc06('0x48')][_0xcc06('0x51')],_0x3623eb['body']['type']);_0x3623eb['body'][_0xcc06('0x52')]=integrations[_0xcc06('0x53')](_0x3623eb[_0xcc06('0x48')][_0xcc06('0x51')],_0x3623eb[_0xcc06('0x48')]['type']);return db[_0xcc06('0x54')][_0xcc06('0x55')](_0x3623eb['body'],{'include':[{'model':db[_0xcc06('0x56')],'as':_0xcc06('0x4f')},{'model':db[_0xcc06('0x56')],'as':_0xcc06('0x52')}]});}return null;})[_0xcc06('0x26')](respondWithResult(_0x4036f4,null))[_0xcc06('0x43')](handleError(_0x4036f4,null));};function getAccessToken(_0x57c9f3){return new Promise(function(_0x37401c,_0x322f21){var _0x1429df;switch(_0x57c9f3['zone']){case'US':_0x1429df=_0xcc06('0x57');break;case'AU':_0x1429df=_0xcc06('0x58');break;case'EU':_0x1429df='https://accounts.zoho.eu';break;case'IN':_0x1429df=_0xcc06('0x59');break;case'CN':_0x1429df=_0xcc06('0x5a');break;default:_0x1429df='https://accounts.zoho.eu';break;}var _0x5cbdff={'method':_0xcc06('0x5b'),'uri':_0x1429df+'/oauth/v2/token','qs':{'refresh_token':_0x57c9f3['refreshToken'],'client_id':_0x57c9f3[_0xcc06('0x5c')],'client_secret':_0x57c9f3[_0xcc06('0x5d')],'grant_type':_0xcc06('0x5e')},'json':!![]};return rp(_0x5cbdff)[_0xcc06('0x26')](function(_0x57a1c1){if(_0x57a1c1[_0xcc06('0x5f')]){_0x37401c(_0x57a1c1[_0xcc06('0x5f')]);}else{_0x322f21(_0xcc06('0x60'));}})[_0xcc06('0x43')](function(_0x2d779c){_0x322f21(_0x2d779c);});});}exports[_0xcc06('0x61')]=function(_0x4e36d0,_0x1352f4,_0x4793bf){var _0x8e3f00,_0x1de8d3,_0xc4c6e4,_0x4769ee,_0x2b7ba8;return db[_0xcc06('0x2d')][_0xcc06('0x4a')]({'where':{'id':_0x4e36d0[_0xcc06('0x45')]['id']},'attributes':['id','host',_0xcc06('0x62'),'clientId',_0xcc06('0x5d'),_0xcc06('0x63'),'code','refreshToken']})[_0xcc06('0x26')](handleEntityNotFound(_0x1352f4,null))[_0xcc06('0x26')](function(_0x276930){_0x2b7ba8=_0x276930;_0x8e3f00=_0x2b7ba8[_0xcc06('0x64')];_0x1de8d3=_0x8e3f00===_0xcc06('0x65')?'eu':'com';_0xc4c6e4=_0x2b7ba8[_0xcc06('0x63')];var _0x2bde30=_0xc4c6e4[_0xcc06('0x66')](-0x1);if(_0x2bde30==='/'||_0x2bde30==='\x5c'||_0x2bde30===':'){_0xc4c6e4=_0xc4c6e4[_0xcc06('0x67')](0x0,_0xc4c6e4[_0xcc06('0x68')](_0x2bde30));}if(!_0x2b7ba8[_0xcc06('0x69')]){throw new Error(_0xcc06('0x6a'));}return getAccessToken(_0x2b7ba8);})[_0xcc06('0x26')](function(_0x17586a){if(_0x17586a){return rp({'method':_0xcc06('0x6b'),'uri':util[_0xcc06('0x6c')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x1de8d3),'qs':{'module':_0xcc06('0x6d')},'headers':{'Authorization':_0xcc06('0x6e')+_0x17586a},'json':!![]});}})['then'](function(_0x1be2d9){if(_0x1be2d9){if(_0x1be2d9['response']&&_0x1be2d9[_0xcc06('0x6f')][_0xcc06('0x28')]){throw new Error(_0x1be2d9[_0xcc06('0x6f')]['error'][_0xcc06('0x70')]);}var _0x34b9a1=[];var _0x4bbd38=[];var _0x299e76=[_0xcc06('0x71'),'Subject',_0xcc06('0x72'),_0xcc06('0x73'),_0xcc06('0x74'),_0xcc06('0x75'),_0xcc06('0x76'),_0xcc06('0x77')];_0x4bbd38=_[_0xcc06('0x78')](_0x1be2d9[_0xcc06('0x34')],function(_0x2be982){return _0x299e76[_0xcc06('0x79')](_0x2be982[_0xcc06('0x7a')]);});for(var _0x318a55=0x0;_0x318a55<_0x4bbd38[_0xcc06('0x46')];_0x318a55++){if(_0x4bbd38[_0x318a55][_0xcc06('0x7b')]===![]){_0x34b9a1[_0xcc06('0x7c')]({'id':_0x4bbd38[_0x318a55]['id'],'name':_0x4bbd38[_0x318a55]['display_label'],'custom':_0x4bbd38[_0x318a55][_0xcc06('0x7d')],'options':_0x4bbd38[_0x318a55][_0xcc06('0x7e')]==='picklist'&&_0x4bbd38[_0x318a55]['pick_list_values']['length']>-0x1?_[_0xcc06('0x2c')](_0x4bbd38[_0x318a55][_0xcc06('0x7f')],function(_0x5a821e){return{'name':_0x5a821e,'value':_0x5a821e};}):[]});}}return{'count':_0x34b9a1['length'],'rows':_0x34b9a1};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x1352f4,null))[_0xcc06('0x43')](function(_0x5537a9){var _0x2d5e68=_0x4e36d0[_0xcc06('0x30')][_0xcc06('0x80')]?0x1f4:_0x5537a9[_0xcc06('0x81')]||0x1f4;logger[_0xcc06('0x28')](_0xcc06('0x82'),_0xcc06('0x61'),_0x2d5e68,JSON[_0xcc06('0x83')](_0x5537a9));delete _0x5537a9['name'];if(_0x2d5e68===0x191){_0x2d5e68=0x190;}_0x1352f4[_0xcc06('0x1b')](_0x2d5e68)[_0xcc06('0x2a')](_0x4e36d0[_0xcc06('0x30')][_0xcc06('0x80')]?{'message':'Wrong\x20credentials','statusCode':_0x5537a9[_0xcc06('0x81')]}:_0x5537a9);});};
\ No newline at end of file
+var _0x2aba=['host','serverUrl','code','zoho.eu','com','slice','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','error','message','Owner','Subject','WhoId','Call_Duration','Call_Start_Time','Call_Type','includes','api_name','system_mandatory','push','display_label','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','bluebird','path','sox','fs-extra','lodash','squel','jsforce','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','limit','undefined','count','set','apply','update','destroy','sendStatus','name','send','map','ZohoAccount','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','then','includeAll','rows','params','rawAttributes','include','options','find','create','body','catch','getConfigurations','findOne','ZohoConfiguration','order','addConfiguration','getSubjects','channel','Descriptions','getDescriptions','ZohoField','Subjects','zone','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','POST','refreshToken','clientId','clientSecret','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields'];(function(_0x2a67fe,_0x295c09){var _0x57e726=function(_0x280573){while(--_0x280573){_0x2a67fe['push'](_0x2a67fe['shift']());}};_0x57e726(++_0x295c09);}(_0x2aba,0x9c));var _0xa2ab=function(_0x2882d2,_0x2ba5d7){_0x2882d2=_0x2882d2-0x0;var _0x5f54c4=_0x2aba[_0x2882d2];return _0x5f54c4;};'use strict';var emlformat=require(_0xa2ab('0x0'));var rimraf=require(_0xa2ab('0x1'));var zipdir=require(_0xa2ab('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa2ab('0x3'));var moment=require('moment');var BPromise=require(_0xa2ab('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xa2ab('0x5'));var sox=require(_0xa2ab('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa2ab('0x7'));var _=require(_0xa2ab('0x8'));var squel=require(_0xa2ab('0x9'));var crypto=require('crypto');var jsforce=require(_0xa2ab('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xa2ab('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xa2ab('0xc'));var authService=require(_0xa2ab('0xd'));var qs=require(_0xa2ab('0xe'));var as=require(_0xa2ab('0xf'));var hardwareService=require(_0xa2ab('0x10'));var logger=require('../../config/logger')(_0xa2ab('0x11'));var utils=require(_0xa2ab('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xa2ab('0x13'));var db=require(_0xa2ab('0x14'))['db'];var integrations=require(_0xa2ab('0x15'));function respondWithStatusCode(_0x5b6120,_0x10ca3d){_0x10ca3d=_0x10ca3d||0xcc;return function(_0x15db87){if(_0x15db87){return _0x5b6120['sendStatus'](_0x10ca3d);}return _0x5b6120[_0xa2ab('0x16')](_0x10ca3d)[_0xa2ab('0x17')]();};}function respondWithResult(_0x27fff5,_0x4a3e9d){_0x4a3e9d=_0x4a3e9d||0xc8;return function(_0x4ccca3){if(_0x4ccca3){return _0x27fff5[_0xa2ab('0x16')](_0x4a3e9d)[_0xa2ab('0x18')](_0x4ccca3);}};}function respondWithFilteredResult(_0x38b406,_0x12eb22){return function(_0x5942b5){if(_0x5942b5){var _0x2946b3=typeof _0x12eb22[_0xa2ab('0x19')]==='undefined'&&typeof _0x12eb22[_0xa2ab('0x1a')]===_0xa2ab('0x1b');var _0x3a7748=_0x5942b5[_0xa2ab('0x1c')];var _0x8a0e9a=_0x2946b3?0x0:_0x12eb22[_0xa2ab('0x19')];var _0x42725a=_0x2946b3?_0x5942b5[_0xa2ab('0x1c')]:_0x12eb22[_0xa2ab('0x19')]+_0x12eb22[_0xa2ab('0x1a')];var _0x519d87;if(_0x42725a>=_0x3a7748){_0x42725a=_0x3a7748;_0x519d87=0xc8;}else{_0x519d87=0xce;}_0x38b406[_0xa2ab('0x16')](_0x519d87);return _0x38b406[_0xa2ab('0x1d')]('Content-Range',_0x8a0e9a+'-'+_0x42725a+'/'+_0x3a7748)[_0xa2ab('0x18')](_0x5942b5);}return null;};}function patchUpdates(_0x2f0171){return function(_0x480774){try{jsonpatch[_0xa2ab('0x1e')](_0x480774,_0x2f0171,!![]);}catch(_0x7bb5d7){return BPromise['reject'](_0x7bb5d7);}return _0x480774['save']();};}function saveUpdates(_0xfe13c0,_0x4fb35b){return function(_0x2c1282){if(_0x2c1282){return _0x2c1282[_0xa2ab('0x1f')](_0xfe13c0)['then'](function(_0x53393a){return _0x53393a;});}return null;};}function removeEntity(_0x100dcd,_0x6176c5){return function(_0x25f879){if(_0x25f879){return _0x25f879[_0xa2ab('0x20')]()['then'](function(){_0x100dcd[_0xa2ab('0x16')](0xcc)[_0xa2ab('0x17')]();});}};}function handleEntityNotFound(_0x4bcf4c,_0x5762a8){return function(_0x5a2c31){if(!_0x5a2c31){_0x4bcf4c[_0xa2ab('0x21')](0x194);}return _0x5a2c31;};}function handleError(_0x50d8c1,_0x3ff8ee){_0x3ff8ee=_0x3ff8ee||0x1f4;return function(_0x33fdbf){logger['error'](_0x33fdbf['stack']);if(_0x33fdbf[_0xa2ab('0x22')]){delete _0x33fdbf['name'];}_0x50d8c1['status'](_0x3ff8ee)[_0xa2ab('0x23')](_0x33fdbf);};}exports['index']=function(_0x1d77b5,_0x369f79){var _0x20f8bb={},_0x1504d1={},_0x2e20c4={'count':0x0,'rows':[]};var _0x147ce4=_[_0xa2ab('0x24')](db[_0xa2ab('0x25')]['rawAttributes'],function(_0x3114c4){return{'name':_0x3114c4[_0xa2ab('0x26')],'type':_0x3114c4[_0xa2ab('0x27')]['key']};});_0x1504d1[_0xa2ab('0x28')]=_[_0xa2ab('0x24')](_0x147ce4,_0xa2ab('0x22'));_0x1504d1[_0xa2ab('0x29')]=_[_0xa2ab('0x2a')](_0x1d77b5[_0xa2ab('0x29')]);_0x1504d1[_0xa2ab('0x2b')]=_[_0xa2ab('0x2c')](_0x1504d1['model'],_0x1504d1['query']);_0x20f8bb[_0xa2ab('0x2d')]=_[_0xa2ab('0x2c')](_0x1504d1[_0xa2ab('0x28')],qs[_0xa2ab('0x2e')](_0x1d77b5['query'][_0xa2ab('0x2e')]));_0x20f8bb[_0xa2ab('0x2d')]=_0x20f8bb['attributes'][_0xa2ab('0x2f')]?_0x20f8bb[_0xa2ab('0x2d')]:_0x1504d1['model'];if(!_0x1d77b5['query'][_0xa2ab('0x30')](_0xa2ab('0x31'))){_0x20f8bb[_0xa2ab('0x1a')]=qs[_0xa2ab('0x1a')](_0x1d77b5['query']['limit']);_0x20f8bb[_0xa2ab('0x19')]=qs[_0xa2ab('0x19')](_0x1d77b5[_0xa2ab('0x29')]['offset']);}_0x20f8bb['order']=qs[_0xa2ab('0x32')](_0x1d77b5[_0xa2ab('0x29')][_0xa2ab('0x32')]);_0x20f8bb[_0xa2ab('0x33')]=qs[_0xa2ab('0x2b')](_[_0xa2ab('0x34')](_0x1d77b5[_0xa2ab('0x29')],_0x1504d1['filters']),_0x147ce4);if(_0x1d77b5['query']['filter']){_0x20f8bb['where']=_[_0xa2ab('0x35')](_0x20f8bb[_0xa2ab('0x33')],{'$or':_[_0xa2ab('0x24')](_0x147ce4,function(_0x365ff7){if(_0x365ff7[_0xa2ab('0x27')]!=='VIRTUAL'){var _0x5264a4={};_0x5264a4[_0x365ff7[_0xa2ab('0x22')]]={'$like':'%'+_0x1d77b5[_0xa2ab('0x29')][_0xa2ab('0x36')]+'%'};return _0x5264a4;}})});}_0x20f8bb=_['merge']({},_0x20f8bb,_0x1d77b5['options']);var _0x4307ed={'where':_0x20f8bb[_0xa2ab('0x33')]};return db[_0xa2ab('0x25')]['count'](_0x4307ed)[_0xa2ab('0x37')](function(_0x30bf96){_0x2e20c4[_0xa2ab('0x1c')]=_0x30bf96;if(_0x1d77b5[_0xa2ab('0x29')][_0xa2ab('0x38')]){_0x20f8bb['include']=[{'all':!![]}];}return db['ZohoAccount']['findAll'](_0x20f8bb);})[_0xa2ab('0x37')](function(_0x21fc27){_0x2e20c4[_0xa2ab('0x39')]=_0x21fc27;return _0x2e20c4;})[_0xa2ab('0x37')](respondWithFilteredResult(_0x369f79,_0x20f8bb))['catch'](handleError(_0x369f79,null));};exports['show']=function(_0x364ed3,_0x121750){var _0x30cd40={'raw':![],'where':{'id':_0x364ed3[_0xa2ab('0x3a')]['id']}},_0x9f7e21={};_0x9f7e21[_0xa2ab('0x28')]=_[_0xa2ab('0x2a')](db[_0xa2ab('0x25')][_0xa2ab('0x3b')]);_0x9f7e21[_0xa2ab('0x29')]=_['keys'](_0x364ed3[_0xa2ab('0x29')]);_0x9f7e21[_0xa2ab('0x2b')]=_['intersection'](_0x9f7e21[_0xa2ab('0x28')],_0x9f7e21[_0xa2ab('0x29')]);_0x30cd40[_0xa2ab('0x2d')]=_[_0xa2ab('0x2c')](_0x9f7e21[_0xa2ab('0x28')],qs['fields'](_0x364ed3[_0xa2ab('0x29')]['fields']));_0x30cd40[_0xa2ab('0x2d')]=_0x30cd40[_0xa2ab('0x2d')][_0xa2ab('0x2f')]?_0x30cd40[_0xa2ab('0x2d')]:_0x9f7e21[_0xa2ab('0x28')];if(_0x364ed3[_0xa2ab('0x29')][_0xa2ab('0x38')]){_0x30cd40[_0xa2ab('0x3c')]=[{'all':!![]}];}_0x30cd40=_[_0xa2ab('0x35')]({},_0x30cd40,_0x364ed3[_0xa2ab('0x3d')]);return db[_0xa2ab('0x25')][_0xa2ab('0x3e')](_0x30cd40)[_0xa2ab('0x37')](handleEntityNotFound(_0x121750,null))[_0xa2ab('0x37')](respondWithResult(_0x121750,null))['catch'](handleError(_0x121750,null));};exports[_0xa2ab('0x3f')]=function(_0x360765,_0x450c0e){return db[_0xa2ab('0x25')][_0xa2ab('0x3f')](_0x360765[_0xa2ab('0x40')],{})[_0xa2ab('0x37')](respondWithResult(_0x450c0e,0xc9))[_0xa2ab('0x41')](handleError(_0x450c0e,null));};exports[_0xa2ab('0x1f')]=function(_0x4511a6,_0x58fd8e){if(_0x4511a6[_0xa2ab('0x40')]['id']){delete _0x4511a6['body']['id'];}return db['ZohoAccount'][_0xa2ab('0x3e')]({'where':{'id':_0x4511a6[_0xa2ab('0x3a')]['id']}})[_0xa2ab('0x37')](handleEntityNotFound(_0x58fd8e,null))['then'](saveUpdates(_0x4511a6[_0xa2ab('0x40')],null))['then'](respondWithResult(_0x58fd8e,null))['catch'](handleError(_0x58fd8e,null));};exports[_0xa2ab('0x20')]=function(_0x352682,_0x47410a){return db[_0xa2ab('0x25')]['find']({'where':{'id':_0x352682[_0xa2ab('0x3a')]['id']}})[_0xa2ab('0x37')](handleEntityNotFound(_0x47410a,null))[_0xa2ab('0x37')](removeEntity(_0x47410a,null))[_0xa2ab('0x41')](handleError(_0x47410a,null));};exports[_0xa2ab('0x42')]=function(_0x2c3300,_0x18a475,_0x463fc4){var _0x54d648={};var _0x59dd8c={};var _0x11cf52;var _0x404497;return db['ZohoAccount'][_0xa2ab('0x43')]({'where':{'id':_0x2c3300['params']['id']}})['then'](handleEntityNotFound(_0x18a475,null))[_0xa2ab('0x37')](function(_0x34acf4){if(_0x34acf4){_0x11cf52=_0x34acf4;_0x59dd8c[_0xa2ab('0x28')]=_[_0xa2ab('0x2a')](db[_0xa2ab('0x44')][_0xa2ab('0x3b')]);_0x59dd8c['query']=_[_0xa2ab('0x2a')](_0x2c3300[_0xa2ab('0x29')]);_0x59dd8c['filters']=_[_0xa2ab('0x2c')](_0x59dd8c[_0xa2ab('0x28')],_0x59dd8c[_0xa2ab('0x29')]);_0x54d648[_0xa2ab('0x2d')]=_[_0xa2ab('0x2c')](_0x59dd8c[_0xa2ab('0x28')],qs[_0xa2ab('0x2e')](_0x2c3300[_0xa2ab('0x29')]['fields']));_0x54d648[_0xa2ab('0x2d')]=_0x54d648['attributes'][_0xa2ab('0x2f')]?_0x54d648['attributes']:_0x59dd8c['model'];_0x54d648[_0xa2ab('0x45')]=qs[_0xa2ab('0x32')](_0x2c3300['query'][_0xa2ab('0x32')]);_0x54d648[_0xa2ab('0x33')]=qs[_0xa2ab('0x2b')](_[_0xa2ab('0x34')](_0x2c3300[_0xa2ab('0x29')],_0x59dd8c[_0xa2ab('0x2b')]));if(_0x2c3300[_0xa2ab('0x29')]['filter']){_0x54d648[_0xa2ab('0x33')]=_[_0xa2ab('0x35')](_0x54d648['where'],{'$or':_['map'](_0x54d648[_0xa2ab('0x2d')],function(_0x125762){var _0x649ccf={};_0x649ccf[_0x125762]={'$like':'%'+_0x2c3300[_0xa2ab('0x29')]['filter']+'%'};return _0x649ccf;})});}_0x54d648=_['merge']({},_0x54d648,_0x2c3300[_0xa2ab('0x3d')]);return _0x11cf52[_0xa2ab('0x42')](_0x54d648);}})[_0xa2ab('0x37')](function(_0x5d4be4){if(_0x5d4be4){_0x404497=_0x5d4be4['length'];if(!_0x2c3300[_0xa2ab('0x29')][_0xa2ab('0x30')](_0xa2ab('0x31'))){_0x54d648['limit']=qs[_0xa2ab('0x1a')](_0x2c3300['query'][_0xa2ab('0x1a')]);_0x54d648[_0xa2ab('0x19')]=qs[_0xa2ab('0x19')](_0x2c3300[_0xa2ab('0x29')][_0xa2ab('0x19')]);}return _0x11cf52[_0xa2ab('0x42')](_0x54d648);}})['then'](function(_0x47fd29){if(_0x47fd29){return _0x47fd29?{'count':_0x404497,'rows':_0x47fd29}:null;}})[_0xa2ab('0x37')](respondWithResult(_0x18a475,null))[_0xa2ab('0x41')](handleError(_0x18a475,null));};exports[_0xa2ab('0x46')]=function(_0x1090fa,_0x1c395e,_0x55afbd){if(_0x1090fa['body']['id']){delete _0x1090fa[_0xa2ab('0x40')]['id'];}return db['ZohoAccount'][_0xa2ab('0x43')]({'where':{'id':_0x1090fa[_0xa2ab('0x3a')]['id']}})['then'](handleEntityNotFound(_0x1c395e,null))['then'](function(_0x3bcc78){if(_0x3bcc78){_0x1090fa['body']['AccountId']=_0x3bcc78['id'];_0x1090fa[_0xa2ab('0x40')]['Subjects']=integrations[_0xa2ab('0x47')](_0x1090fa[_0xa2ab('0x40')][_0xa2ab('0x48')],_0x1090fa[_0xa2ab('0x40')]['type']);_0x1090fa[_0xa2ab('0x40')][_0xa2ab('0x49')]=integrations[_0xa2ab('0x4a')](_0x1090fa[_0xa2ab('0x40')][_0xa2ab('0x48')],_0x1090fa[_0xa2ab('0x40')][_0xa2ab('0x27')]);return db[_0xa2ab('0x44')][_0xa2ab('0x3f')](_0x1090fa[_0xa2ab('0x40')],{'include':[{'model':db[_0xa2ab('0x4b')],'as':_0xa2ab('0x4c')},{'model':db[_0xa2ab('0x4b')],'as':_0xa2ab('0x49')}]});}return null;})[_0xa2ab('0x37')](respondWithResult(_0x1c395e,null))[_0xa2ab('0x41')](handleError(_0x1c395e,null));};function getAccessToken(_0x2614db){return new Promise(function(_0x413bb0,_0x1994c6){var _0x5ea94d;switch(_0x2614db[_0xa2ab('0x4d')]){case'US':_0x5ea94d='https://accounts.zoho.com';break;case'AU':_0x5ea94d=_0xa2ab('0x4e');break;case'EU':_0x5ea94d=_0xa2ab('0x4f');break;case'IN':_0x5ea94d=_0xa2ab('0x50');break;case'CN':_0x5ea94d='https://accounts.zoho.com.cn';break;default:_0x5ea94d=_0xa2ab('0x4f');break;}var _0x4baef1={'method':_0xa2ab('0x51'),'uri':_0x5ea94d+'/oauth/v2/token','qs':{'refresh_token':_0x2614db[_0xa2ab('0x52')],'client_id':_0x2614db[_0xa2ab('0x53')],'client_secret':_0x2614db[_0xa2ab('0x54')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x4baef1)[_0xa2ab('0x37')](function(_0x253605){if(_0x253605[_0xa2ab('0x55')]){_0x413bb0(_0x253605[_0xa2ab('0x55')]);}else{_0x1994c6(_0xa2ab('0x56'));}})[_0xa2ab('0x41')](function(_0x4c27d0){_0x1994c6(_0x4c27d0);});});}exports[_0xa2ab('0x57')]=function(_0x4e3ae7,_0x3c5f20,_0xe61782){var _0x4b0af2,_0x524956,_0x8af94a,_0x1d864d,_0x397b1d;return db['ZohoAccount'][_0xa2ab('0x43')]({'where':{'id':_0x4e3ae7[_0xa2ab('0x3a')]['id']},'attributes':['id',_0xa2ab('0x58'),_0xa2ab('0x4d'),_0xa2ab('0x53'),_0xa2ab('0x54'),_0xa2ab('0x59'),_0xa2ab('0x5a'),_0xa2ab('0x52')]})[_0xa2ab('0x37')](handleEntityNotFound(_0x3c5f20,null))[_0xa2ab('0x37')](function(_0x599940){_0x397b1d=_0x599940;_0x4b0af2=_0x397b1d[_0xa2ab('0x58')];_0x524956=_0x4b0af2===_0xa2ab('0x5b')?'eu':_0xa2ab('0x5c');_0x8af94a=_0x397b1d['serverUrl'];var _0x4df52e=_0x8af94a[_0xa2ab('0x5d')](-0x1);if(_0x4df52e==='/'||_0x4df52e==='\x5c'||_0x4df52e===':'){_0x8af94a=_0x8af94a['substring'](0x0,_0x8af94a['lastIndexOf'](_0x4df52e));}if(!_0x397b1d[_0xa2ab('0x52')]){throw new Error(_0xa2ab('0x5e'));}return getAccessToken(_0x397b1d);})['then'](function(_0x1e2043){if(_0x1e2043){return rp({'method':_0xa2ab('0x5f'),'uri':util[_0xa2ab('0x60')](_0xa2ab('0x61'),_0x524956),'qs':{'module':_0xa2ab('0x62')},'headers':{'Authorization':_0xa2ab('0x63')+_0x1e2043},'json':!![]});}})['then'](function(_0x2c614d){if(_0x2c614d){if(_0x2c614d[_0xa2ab('0x64')]&&_0x2c614d[_0xa2ab('0x64')]['error']){throw new Error(_0x2c614d[_0xa2ab('0x64')][_0xa2ab('0x65')][_0xa2ab('0x66')]);}var _0x5980e2=[];var _0x9839c4=[];var _0x4fa8ef=[_0xa2ab('0x67'),_0xa2ab('0x68'),'Description',_0xa2ab('0x69'),_0xa2ab('0x6a'),'Call_Result',_0xa2ab('0x6b'),_0xa2ab('0x6c')];_0x9839c4=_['remove'](_0x2c614d['fields'],function(_0x13f806){return _0x4fa8ef[_0xa2ab('0x6d')](_0x13f806[_0xa2ab('0x6e')]);});for(var _0x26d66a=0x0;_0x26d66a<_0x9839c4[_0xa2ab('0x2f')];_0x26d66a++){if(_0x9839c4[_0x26d66a][_0xa2ab('0x6f')]===![]){_0x5980e2[_0xa2ab('0x70')]({'id':_0x9839c4[_0x26d66a]['id'],'name':_0x9839c4[_0x26d66a][_0xa2ab('0x71')],'custom':_0x9839c4[_0x26d66a]['custom_field'],'options':_0x9839c4[_0x26d66a][_0xa2ab('0x72')]===_0xa2ab('0x73')&&_0x9839c4[_0x26d66a][_0xa2ab('0x74')][_0xa2ab('0x2f')]>-0x1?_['map'](_0x9839c4[_0x26d66a][_0xa2ab('0x74')],function(_0x30b0ff){return{'name':_0x30b0ff,'value':_0x30b0ff};}):[]});}}return{'count':_0x5980e2['length'],'rows':_0x5980e2};}else{return{'count':0x0,'rows':[]};}})[_0xa2ab('0x37')](respondWithResult(_0x3c5f20,null))[_0xa2ab('0x41')](function(_0x5cd428){var _0x5552fe=_0x4e3ae7[_0xa2ab('0x29')][_0xa2ab('0x75')]?0x1f4:_0x5cd428[_0xa2ab('0x76')]||0x1f4;logger[_0xa2ab('0x65')](_0xa2ab('0x77'),'getFields',_0x5552fe,JSON[_0xa2ab('0x78')](_0x5cd428));delete _0x5cd428[_0xa2ab('0x22')];if(_0x5552fe===0x191){_0x5552fe=0x190;}_0x3c5f20[_0xa2ab('0x16')](_0x5552fe)[_0xa2ab('0x23')](_0x4e3ae7[_0xa2ab('0x29')][_0xa2ab('0x75')]?{'message':_0xa2ab('0x79'),'statusCode':_0x5cd428[_0xa2ab('0x76')]}:_0x5cd428);});};
\ No newline at end of file
index 055ccb9..8947b8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47ad=['format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','slice','lastIndexOf','https://accounts.zoho.com.au','authorization_code','util','api','moment','rimraf','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','changed','serverUrl','clientId','clientSecret','host','substring','zone','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','code','application/x-www-form-urlencoded','then','parse','refresh_token','refreshToken','info'];(function(_0x4c630b,_0x25f8ef){var _0x181259=function(_0x5d0e58){while(--_0x5d0e58){_0x4c630b['push'](_0x4c630b['shift']());}};_0x181259(++_0x25f8ef);}(_0x47ad,0x143));var _0xd47a=function(_0x241424,_0x25eb5d){_0x241424=_0x241424-0x0;var _0x3da798=_0x47ad[_0x241424];return _0x3da798;};'use strict';var _=require('lodash');var util=require(_0xd47a('0x0'));var logger=require('../../config/logger')(_0xd47a('0x1'));var moment=require(_0xd47a('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd47a('0x3'));var config=require('../../config/environment');var attributes=require(_0xd47a('0x4'));var integrations=require(_0xd47a('0x5'));module[_0xd47a('0x6')]=function(_0xf02eb2,_0x3d3ef8){return _0xf02eb2[_0xd47a('0x7')]('ZohoAccount',attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5a9eb7,_0x17cbac,_0x32098c){if(_0x5a9eb7[_0xd47a('0x8')]('zone')||_0x5a9eb7['changed'](_0xd47a('0x9'))||_0x5a9eb7[_0xd47a('0x8')](_0xd47a('0xa'))||_0x5a9eb7[_0xd47a('0x8')](_0xd47a('0xb'))||_0x5a9eb7[_0xd47a('0x8')]('code')||_0x5a9eb7[_0xd47a('0x8')](_0xd47a('0xc'))){var _0x20bc6d,_0x16fad3;_0x20bc6d=_0x5a9eb7[_0xd47a('0x9')];var _0x17b222=_0x20bc6d['slice'](-0x1);if(_0x17b222==='/'||_0x17b222==='\x5c'||_0x17b222===':'){_0x20bc6d=_0x20bc6d[_0xd47a('0xd')](0x0,_0x20bc6d['lastIndexOf'](_0x17b222));}switch(_0x5a9eb7[_0xd47a('0xe')]){case'US':_0x16fad3=_0xd47a('0xf');break;case'AU':_0x16fad3='https://accounts.zoho.com.au';break;case'IN':_0x16fad3=_0xd47a('0x10');break;case'CN':_0x16fad3=_0xd47a('0x11');break;default:_0x16fad3=_0xd47a('0x12');break;}var _0x3e7264={'method':_0xd47a('0x13'),'uri':_0x16fad3+_0xd47a('0x14'),'form':{'grant_type':'authorization_code','client_id':_0x5a9eb7['clientId'],'client_secret':_0x5a9eb7[_0xd47a('0xb')],'redirect_uri':_0x5a9eb7[_0xd47a('0x9')],'code':_0x5a9eb7[_0xd47a('0x15')]},'headers':{'Content-Type':_0xd47a('0x16')}};return rp(_0x3e7264)[_0xd47a('0x17')](function(_0x19ac07){var _0x5c009c=JSON[_0xd47a('0x18')](_0x19ac07);if(_0x5c009c[_0xd47a('0x19')]){_0x5a9eb7[_0xd47a('0x1a')]=_0x5c009c[_0xd47a('0x19')];logger[_0xd47a('0x1b')](util[_0xd47a('0x1c')](_0xd47a('0x1d'),_0x5a9eb7[_0xd47a('0x1e')],_0x5a9eb7['id']));}else{logger[_0xd47a('0x1f')](util[_0xd47a('0x1c')](_0xd47a('0x20'),_0x5a9eb7[_0xd47a('0x1e')],_0x5a9eb7['id']),util[_0xd47a('0x21')](_0x5c009c,{'showHidden':![],'depth':null}));}return _0x32098c(null,_0x17cbac);})[_0xd47a('0x22')](function(_0x1485bb){logger[_0xd47a('0x1f')](util[_0xd47a('0x1c')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x5a9eb7['name'],_0x5a9eb7['id']),util[_0xd47a('0x21')](parsedResult,{'showHidden':![],'depth':null}));return _0x32098c(_0x1485bb);});}else{return _0x32098c(null,_0x17cbac);}},'beforeUpdate':function(_0x2b7ff3,_0x1b3f2c,_0x1338b4){if(_0x2b7ff3[_0xd47a('0x8')](_0xd47a('0xe'))||_0x2b7ff3['changed'](_0xd47a('0x9'))||_0x2b7ff3['changed'](_0xd47a('0xa'))||_0x2b7ff3[_0xd47a('0x8')](_0xd47a('0xb'))||_0x2b7ff3[_0xd47a('0x8')]('code')||_0x2b7ff3['changed'](_0xd47a('0xc'))){var _0x4880c2,_0x35a618;_0x4880c2=_0x2b7ff3[_0xd47a('0x9')];var _0x3699a7=_0x4880c2[_0xd47a('0x23')](-0x1);if(_0x3699a7==='/'||_0x3699a7==='\x5c'||_0x3699a7===':'){_0x4880c2=_0x4880c2[_0xd47a('0xd')](0x0,_0x4880c2[_0xd47a('0x24')](_0x3699a7));}switch(_0x2b7ff3['zone']){case'US':_0x35a618=_0xd47a('0xf');break;case'AU':_0x35a618=_0xd47a('0x25');break;case'IN':_0x35a618=_0xd47a('0x10');break;case'CN':_0x35a618=_0xd47a('0x11');break;default:_0x35a618=_0xd47a('0x12');break;}var _0x473fd2={'method':_0xd47a('0x13'),'uri':_0x35a618+_0xd47a('0x14'),'form':{'grant_type':_0xd47a('0x26'),'client_id':_0x2b7ff3[_0xd47a('0xa')],'client_secret':_0x2b7ff3[_0xd47a('0xb')],'redirect_uri':_0x2b7ff3[_0xd47a('0x9')],'code':_0x2b7ff3[_0xd47a('0x15')]},'headers':{'Content-Type':_0xd47a('0x16')}};return rp(_0x473fd2)[_0xd47a('0x17')](function(_0x16a86a){var _0x42903d=JSON[_0xd47a('0x18')](_0x16a86a);if(_0x42903d['refresh_token']){_0x2b7ff3[_0xd47a('0x1a')]=_0x42903d[_0xd47a('0x19')];logger[_0xd47a('0x1b')](util['format'](_0xd47a('0x1d'),_0x2b7ff3[_0xd47a('0x1e')],_0x2b7ff3['id']));}else{logger[_0xd47a('0x1f')](util['format'](_0xd47a('0x20'),_0x2b7ff3[_0xd47a('0x1e')],_0x2b7ff3['id']),util[_0xd47a('0x21')](_0x42903d,{'showHidden':![],'depth':null}));}return _0x1338b4(null,_0x1b3f2c);})['catch'](function(_0x11ea25){logger[_0xd47a('0x1f')](util[_0xd47a('0x1c')](_0xd47a('0x20'),_0x2b7ff3['name'],_0x2b7ff3['id']),util[_0xd47a('0x21')](parsedResult,{'showHidden':![],'depth':null}));return _0x1338b4(_0x11ea25);});}else{return _0x1338b4(null,_0x1b3f2c);}}}});};
\ No newline at end of file
+var _0x86b8=['https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','authorization_code','code','application/x-www-form-urlencoded','then','refreshToken','refresh_token','info','name','error','format','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','substring','lastIndexOf','/oauth/v2/token','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','lodash','util','../../config/logger','moment','request-promise','path','rimraf','./intZohoAccount.attributes','define','ZohoAccount','int_zoho_accounts','zone','changed','serverUrl','clientId','clientSecret','host','slice','https://accounts.zoho.com','https://accounts.zoho.com.au'];(function(_0x2d8d64,_0xff69d9){var _0x1ff582=function(_0x73b784){while(--_0x73b784){_0x2d8d64['push'](_0x2d8d64['shift']());}};_0x1ff582(++_0xff69d9);}(_0x86b8,0x15d));var _0x886b=function(_0x2e103f,_0x1fbe12){_0x2e103f=_0x2e103f-0x0;var _0x6e9180=_0x86b8[_0x2e103f];return _0x6e9180;};'use strict';var _=require(_0x886b('0x0'));var util=require(_0x886b('0x1'));var logger=require(_0x886b('0x2'))('api');var moment=require(_0x886b('0x3'));var BPromise=require('bluebird');var rp=require(_0x886b('0x4'));var fs=require('fs');var path=require(_0x886b('0x5'));var rimraf=require(_0x886b('0x6'));var config=require('../../config/environment');var attributes=require(_0x886b('0x7'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x2c32bc,_0xd9d9ac){return _0x2c32bc[_0x886b('0x8')](_0x886b('0x9'),attributes,{'tableName':_0x886b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x238701,_0x7c2394,_0x39800a){if(_0x238701['changed'](_0x886b('0xb'))||_0x238701[_0x886b('0xc')](_0x886b('0xd'))||_0x238701[_0x886b('0xc')](_0x886b('0xe'))||_0x238701[_0x886b('0xc')](_0x886b('0xf'))||_0x238701[_0x886b('0xc')]('code')||_0x238701[_0x886b('0xc')](_0x886b('0x10'))){var _0x5acb88,_0x23a795;_0x5acb88=_0x238701[_0x886b('0xd')];var _0xd2ddfa=_0x5acb88[_0x886b('0x11')](-0x1);if(_0xd2ddfa==='/'||_0xd2ddfa==='\x5c'||_0xd2ddfa===':'){_0x5acb88=_0x5acb88['substring'](0x0,_0x5acb88['lastIndexOf'](_0xd2ddfa));}switch(_0x238701[_0x886b('0xb')]){case'US':_0x23a795=_0x886b('0x12');break;case'AU':_0x23a795=_0x886b('0x13');break;case'IN':_0x23a795=_0x886b('0x14');break;case'CN':_0x23a795=_0x886b('0x15');break;default:_0x23a795=_0x886b('0x16');break;}var _0x2f2895={'method':_0x886b('0x17'),'uri':_0x23a795+'/oauth/v2/token','form':{'grant_type':_0x886b('0x18'),'client_id':_0x238701[_0x886b('0xe')],'client_secret':_0x238701['clientSecret'],'redirect_uri':_0x238701[_0x886b('0xd')],'code':_0x238701[_0x886b('0x19')]},'headers':{'Content-Type':_0x886b('0x1a')}};return rp(_0x2f2895)[_0x886b('0x1b')](function(_0x282a98){var _0xe05a77=JSON['parse'](_0x282a98);if(_0xe05a77['refresh_token']){_0x238701[_0x886b('0x1c')]=_0xe05a77[_0x886b('0x1d')];logger[_0x886b('0x1e')](util['format']('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x238701[_0x886b('0x1f')],_0x238701['id']));}else{logger[_0x886b('0x20')](util[_0x886b('0x21')](_0x886b('0x22'),_0x238701[_0x886b('0x1f')],_0x238701['id']),util[_0x886b('0x23')](_0xe05a77,{'showHidden':![],'depth':null}));}return _0x39800a(null,_0x7c2394);})[_0x886b('0x24')](function(_0x596b11){logger[_0x886b('0x20')](util[_0x886b('0x21')](_0x886b('0x22'),_0x238701['name'],_0x238701['id']),util[_0x886b('0x23')](parsedResult,{'showHidden':![],'depth':null}));return _0x39800a(_0x596b11);});}else{return _0x39800a(null,_0x7c2394);}},'beforeUpdate':function(_0x2a5519,_0x2e6b3e,_0x157d01){if(_0x2a5519['changed'](_0x886b('0xb'))||_0x2a5519[_0x886b('0xc')](_0x886b('0xd'))||_0x2a5519[_0x886b('0xc')](_0x886b('0xe'))||_0x2a5519['changed'](_0x886b('0xf'))||_0x2a5519[_0x886b('0xc')](_0x886b('0x19'))||_0x2a5519[_0x886b('0xc')]('host')){var _0x5047eb,_0x3b85a4;_0x5047eb=_0x2a5519[_0x886b('0xd')];var _0x4b8f53=_0x5047eb[_0x886b('0x11')](-0x1);if(_0x4b8f53==='/'||_0x4b8f53==='\x5c'||_0x4b8f53===':'){_0x5047eb=_0x5047eb[_0x886b('0x25')](0x0,_0x5047eb[_0x886b('0x26')](_0x4b8f53));}switch(_0x2a5519[_0x886b('0xb')]){case'US':_0x3b85a4=_0x886b('0x12');break;case'AU':_0x3b85a4=_0x886b('0x13');break;case'IN':_0x3b85a4='https://accounts.zoho.in';break;case'CN':_0x3b85a4='https://accounts.zoho.com.cn';break;default:_0x3b85a4=_0x886b('0x16');break;}var _0x37856e={'method':_0x886b('0x17'),'uri':_0x3b85a4+_0x886b('0x27'),'form':{'grant_type':_0x886b('0x18'),'client_id':_0x2a5519[_0x886b('0xe')],'client_secret':_0x2a5519['clientSecret'],'redirect_uri':_0x2a5519['serverUrl'],'code':_0x2a5519['code']},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x37856e)[_0x886b('0x1b')](function(_0x486eca){var _0x243fb2=JSON['parse'](_0x486eca);if(_0x243fb2['refresh_token']){_0x2a5519[_0x886b('0x1c')]=_0x243fb2[_0x886b('0x1d')];logger['info'](util['format'](_0x886b('0x28'),_0x2a5519['name'],_0x2a5519['id']));}else{logger['error'](util[_0x886b('0x21')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2a5519[_0x886b('0x1f')],_0x2a5519['id']),util[_0x886b('0x23')](_0x243fb2,{'showHidden':![],'depth':null}));}return _0x157d01(null,_0x2e6b3e);})[_0x886b('0x24')](function(_0xa23343){logger['error'](util[_0x886b('0x21')](_0x886b('0x22'),_0x2a5519['name'],_0x2a5519['id']),util[_0x886b('0x23')](parsedResult,{'showHidden':![],'depth':null}));return _0x157d01(_0xa23343);});}else{return _0x157d01(null,_0x2e6b3e);}}}});};
\ No newline at end of file
index 8142f6d..8de2adf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8838=['attributes','map','include','model','stringify','catch','ShowZohoAccount','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','error','code','ZohoAccount,\x20%s,\x20%s','message','GetZohoAccount','findAll','options','raw'];(function(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0x8838,0x90));var _0x8883=function(_0x471a0b,_0x3d6dea){_0x471a0b=_0x471a0b-0x0;var _0x34e2ad=_0x8838[_0x471a0b];return _0x34e2ad;};'use strict';var _=require(_0x8883('0x0'));var util=require(_0x8883('0x1'));var moment=require(_0x8883('0x2'));var BPromise=require(_0x8883('0x3'));var rs=require(_0x8883('0x4'));var fs=require('fs');var Redis=require(_0x8883('0x5'));var db=require(_0x8883('0x6'))['db'];var utils=require(_0x8883('0x7'));var logger=require(_0x8883('0x8'))(_0x8883('0x9'));var config=require(_0x8883('0xa'));var jayson=require(_0x8883('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x363519,_0x5e1e40,_0x458214){return new BPromise(function(_0x45a59c,_0x22060b){return client[_0x8883('0xc')](_0x363519,_0x458214)[_0x8883('0xd')](function(_0x2f91ae){logger[_0x8883('0xe')]('ZohoAccount,\x20%s,\x20%s',_0x5e1e40,_0x8883('0xf'));logger[_0x8883('0x10')](_0x8883('0x11'),_0x5e1e40,_0x8883('0xf'),JSON['stringify'](_0x2f91ae));if(_0x2f91ae[_0x8883('0x12')]){if(_0x2f91ae['error'][_0x8883('0x13')]===0x1f4){logger[_0x8883('0x12')](_0x8883('0x14'),_0x5e1e40,_0x2f91ae[_0x8883('0x12')][_0x8883('0x15')]);return _0x22060b(_0x2f91ae[_0x8883('0x12')][_0x8883('0x15')]);}logger[_0x8883('0x12')](_0x8883('0x14'),_0x5e1e40,_0x2f91ae['error'][_0x8883('0x15')]);return _0x45a59c(_0x2f91ae[_0x8883('0x12')][_0x8883('0x15')]);}else{logger[_0x8883('0xe')]('ZohoAccount,\x20%s,\x20%s',_0x5e1e40,_0x8883('0xf'));_0x45a59c(_0x2f91ae['result'][_0x8883('0x15')]);}})['catch'](function(_0x14effb){logger['error'](_0x8883('0x14'),_0x5e1e40,_0x14effb);_0x22060b(_0x14effb);});});}exports[_0x8883('0x16')]=function(_0x127b5f){var _0x36e729=this;return new Promise(function(_0x1ec1b5,_0x5ef87c){return db['ZohoAccount'][_0x8883('0x17')]({'raw':_0x127b5f[_0x8883('0x18')]?_0x127b5f['options'][_0x8883('0x19')]===undefined?!![]:![]:!![],'where':_0x127b5f[_0x8883('0x18')]?_0x127b5f[_0x8883('0x18')]['where']||null:null,'attributes':_0x127b5f[_0x8883('0x18')]?_0x127b5f[_0x8883('0x18')][_0x8883('0x1a')]||null:null,'limit':_0x127b5f[_0x8883('0x18')]?_0x127b5f[_0x8883('0x18')]['limit']||null:null,'include':_0x127b5f[_0x8883('0x18')]?_0x127b5f[_0x8883('0x18')]['include']?_[_0x8883('0x1b')](_0x127b5f[_0x8883('0x18')][_0x8883('0x1c')],function(_0x51fdd9){return{'model':db[_0x51fdd9[_0x8883('0x1d')]],'as':_0x51fdd9['as'],'attributes':_0x51fdd9[_0x8883('0x1a')],'include':_0x51fdd9[_0x8883('0x1c')]?_[_0x8883('0x1b')](_0x51fdd9[_0x8883('0x1c')],function(_0x223412){return{'model':db[_0x223412[_0x8883('0x1d')]],'as':_0x223412['as'],'attributes':_0x223412['attributes'],'include':_0x223412[_0x8883('0x1c')]?_['map'](_0x223412[_0x8883('0x1c')],function(_0x5c3a68){return{'model':db[_0x5c3a68['model']],'as':_0x5c3a68['as'],'attributes':_0x5c3a68['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x77f21a){logger[_0x8883('0xe')](_0x8883('0x16'),_0x127b5f);logger['debug'](_0x8883('0x16'),_0x127b5f,JSON[_0x8883('0x1e')](_0x77f21a));_0x1ec1b5(_0x77f21a);})[_0x8883('0x1f')](function(_0x2e772e){logger['error'](_0x8883('0x16'),_0x2e772e['message'],_0x127b5f);_0x5ef87c(_0x36e729[_0x8883('0x12')](0x1f4,_0x2e772e[_0x8883('0x15')]));});});};exports[_0x8883('0x20')]=function(_0x1bb767){var _0x362ce2=this;return new Promise(function(_0x649d01,_0x13cbe5){return db['ZohoAccount']['find']({'raw':_0x1bb767['options']?_0x1bb767[_0x8883('0x18')][_0x8883('0x19')]===undefined?!![]:![]:!![],'where':_0x1bb767[_0x8883('0x18')]?_0x1bb767['options'][_0x8883('0x21')]||null:null,'attributes':_0x1bb767[_0x8883('0x18')]?_0x1bb767['options']['attributes']||null:null,'include':_0x1bb767[_0x8883('0x18')]?_0x1bb767['options']['include']?_[_0x8883('0x1b')](_0x1bb767[_0x8883('0x18')]['include'],function(_0x167767){return{'model':db[_0x167767[_0x8883('0x1d')]],'as':_0x167767['as'],'attributes':_0x167767[_0x8883('0x1a')],'include':_0x167767['include']?_[_0x8883('0x1b')](_0x167767[_0x8883('0x1c')],function(_0x204d2b){return{'model':db[_0x204d2b[_0x8883('0x1d')]],'as':_0x204d2b['as'],'attributes':_0x204d2b[_0x8883('0x1a')],'include':_0x204d2b[_0x8883('0x1c')]?_[_0x8883('0x1b')](_0x204d2b[_0x8883('0x1c')],function(_0x371b3a){return{'model':db[_0x371b3a[_0x8883('0x1d')]],'as':_0x371b3a['as'],'attributes':_0x371b3a[_0x8883('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x8883('0xd')](function(_0x3db039){logger[_0x8883('0xe')](_0x8883('0x20'),_0x1bb767);logger['debug'](_0x8883('0x20'),_0x1bb767,JSON['stringify'](_0x3db039));_0x649d01(_0x3db039);})[_0x8883('0x1f')](function(_0x5d29d2){logger[_0x8883('0x12')]('ShowZohoAccount',_0x5d29d2[_0x8883('0x15')],_0x1bb767);_0x13cbe5(_0x362ce2[_0x8883('0x12')](0x1f4,_0x5d29d2['message']));});});};
\ No newline at end of file
+var _0x19fb=['model','GetZohoAccount','find','raw','ShowZohoAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','ZohoAccount','options','where','attributes','limit','include','map'];(function(_0x2897d6,_0x337606){var _0x578e17=function(_0x391c85){while(--_0x391c85){_0x2897d6['push'](_0x2897d6['shift']());}};_0x578e17(++_0x337606);}(_0x19fb,0xdd));var _0xb19f=function(_0xb35707,_0x18aa42){_0xb35707=_0xb35707-0x0;var _0x33e66c=_0x19fb[_0xb35707];return _0x33e66c;};'use strict';var _=require(_0xb19f('0x0'));var util=require(_0xb19f('0x1'));var moment=require(_0xb19f('0x2'));var BPromise=require(_0xb19f('0x3'));var rs=require(_0xb19f('0x4'));var fs=require('fs');var Redis=require(_0xb19f('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb19f('0x6'))(_0xb19f('0x7'));var config=require(_0xb19f('0x8'));var jayson=require(_0xb19f('0x9'));var client=jayson[_0xb19f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2aab5c,_0x34597a,_0x3feb03){return new BPromise(function(_0x2c70a2,_0x8c9198){return client[_0xb19f('0xb')](_0x2aab5c,_0x3feb03)[_0xb19f('0xc')](function(_0x111431){logger['info'](_0xb19f('0xd'),_0x34597a,_0xb19f('0xe'));logger[_0xb19f('0xf')](_0xb19f('0x10'),_0x34597a,_0xb19f('0xe'),JSON[_0xb19f('0x11')](_0x111431));if(_0x111431[_0xb19f('0x12')]){if(_0x111431[_0xb19f('0x12')][_0xb19f('0x13')]===0x1f4){logger[_0xb19f('0x12')](_0xb19f('0xd'),_0x34597a,_0x111431[_0xb19f('0x12')][_0xb19f('0x14')]);return _0x8c9198(_0x111431[_0xb19f('0x12')][_0xb19f('0x14')]);}logger['error'](_0xb19f('0xd'),_0x34597a,_0x111431[_0xb19f('0x12')][_0xb19f('0x14')]);return _0x2c70a2(_0x111431['error'][_0xb19f('0x14')]);}else{logger[_0xb19f('0x15')](_0xb19f('0xd'),_0x34597a,'request\x20sent');_0x2c70a2(_0x111431[_0xb19f('0x16')][_0xb19f('0x14')]);}})[_0xb19f('0x17')](function(_0x5cdbf5){logger[_0xb19f('0x12')]('ZohoAccount,\x20%s,\x20%s',_0x34597a,_0x5cdbf5);_0x8c9198(_0x5cdbf5);});});}exports['GetZohoAccount']=function(_0x5b52d9){var _0x358180=this;return new Promise(function(_0x3b4367,_0x1dc030){return db[_0xb19f('0x18')]['findAll']({'raw':_0x5b52d9[_0xb19f('0x19')]?_0x5b52d9[_0xb19f('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x5b52d9[_0xb19f('0x19')]?_0x5b52d9['options'][_0xb19f('0x1a')]||null:null,'attributes':_0x5b52d9[_0xb19f('0x19')]?_0x5b52d9[_0xb19f('0x19')][_0xb19f('0x1b')]||null:null,'limit':_0x5b52d9[_0xb19f('0x19')]?_0x5b52d9[_0xb19f('0x19')][_0xb19f('0x1c')]||null:null,'include':_0x5b52d9['options']?_0x5b52d9[_0xb19f('0x19')][_0xb19f('0x1d')]?_[_0xb19f('0x1e')](_0x5b52d9[_0xb19f('0x19')]['include'],function(_0x25fbdc){return{'model':db[_0x25fbdc[_0xb19f('0x1f')]],'as':_0x25fbdc['as'],'attributes':_0x25fbdc[_0xb19f('0x1b')],'include':_0x25fbdc[_0xb19f('0x1d')]?_[_0xb19f('0x1e')](_0x25fbdc[_0xb19f('0x1d')],function(_0x28e0ad){return{'model':db[_0x28e0ad[_0xb19f('0x1f')]],'as':_0x28e0ad['as'],'attributes':_0x28e0ad[_0xb19f('0x1b')],'include':_0x28e0ad[_0xb19f('0x1d')]?_[_0xb19f('0x1e')](_0x28e0ad['include'],function(_0x3e1365){return{'model':db[_0x3e1365[_0xb19f('0x1f')]],'as':_0x3e1365['as'],'attributes':_0x3e1365['attributes']};}):[]};}):[]};}):[]:[]})[_0xb19f('0xc')](function(_0x43de02){logger['info']('GetZohoAccount',_0x5b52d9);logger[_0xb19f('0xf')](_0xb19f('0x20'),_0x5b52d9,JSON[_0xb19f('0x11')](_0x43de02));_0x3b4367(_0x43de02);})[_0xb19f('0x17')](function(_0x5e479a){logger['error']('GetZohoAccount',_0x5e479a[_0xb19f('0x14')],_0x5b52d9);_0x1dc030(_0x358180['error'](0x1f4,_0x5e479a['message']));});});};exports['ShowZohoAccount']=function(_0xeac9a3){var _0xac9814=this;return new Promise(function(_0x10d949,_0x1131f6){return db[_0xb19f('0x18')][_0xb19f('0x21')]({'raw':_0xeac9a3['options']?_0xeac9a3[_0xb19f('0x19')][_0xb19f('0x22')]===undefined?!![]:![]:!![],'where':_0xeac9a3['options']?_0xeac9a3[_0xb19f('0x19')][_0xb19f('0x1a')]||null:null,'attributes':_0xeac9a3[_0xb19f('0x19')]?_0xeac9a3[_0xb19f('0x19')][_0xb19f('0x1b')]||null:null,'include':_0xeac9a3[_0xb19f('0x19')]?_0xeac9a3['options'][_0xb19f('0x1d')]?_[_0xb19f('0x1e')](_0xeac9a3[_0xb19f('0x19')][_0xb19f('0x1d')],function(_0x3211e1){return{'model':db[_0x3211e1[_0xb19f('0x1f')]],'as':_0x3211e1['as'],'attributes':_0x3211e1['attributes'],'include':_0x3211e1[_0xb19f('0x1d')]?_[_0xb19f('0x1e')](_0x3211e1[_0xb19f('0x1d')],function(_0x1e02c5){return{'model':db[_0x1e02c5[_0xb19f('0x1f')]],'as':_0x1e02c5['as'],'attributes':_0x1e02c5[_0xb19f('0x1b')],'include':_0x1e02c5['include']?_[_0xb19f('0x1e')](_0x1e02c5[_0xb19f('0x1d')],function(_0x862bf1){return{'model':db[_0x862bf1[_0xb19f('0x1f')]],'as':_0x862bf1['as'],'attributes':_0x862bf1[_0xb19f('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xb19f('0xc')](function(_0x1a6bbe){logger['info'](_0xb19f('0x23'),_0xeac9a3);logger['debug'](_0xb19f('0x23'),_0xeac9a3,JSON[_0xb19f('0x11')](_0x1a6bbe));_0x10d949(_0x1a6bbe);})[_0xb19f('0x17')](function(_0x4b3ca0){logger[_0xb19f('0x12')]('ShowZohoAccount',_0x4b3ca0[_0xb19f('0x14')],_0xeac9a3);_0x1131f6(_0xac9814[_0xb19f('0x12')](0x1f4,_0x4b3ca0['message']));});});};
\ No newline at end of file
index 3f189d4..7c3ff00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26ac=['show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','./intZohoConfiguration.controller','get','isAuthenticated','/:id'];(function(_0x41dd25,_0x3ffeb5){var _0x3e3d9a=function(_0x358bd5){while(--_0x358bd5){_0x41dd25['push'](_0x41dd25['shift']());}};_0x3e3d9a(++_0x3ffeb5);}(_0x26ac,0xa1));var _0xc26a=function(_0x4c22cc,_0x27f3fd){_0x4c22cc=_0x4c22cc-0x0;var _0x49e127=_0x26ac[_0x4c22cc];return _0x49e127;};'use strict';var multer=require(_0xc26a('0x0'));var util=require(_0xc26a('0x1'));var path=require(_0xc26a('0x2'));var timeout=require('connect-timeout');var express=require(_0xc26a('0x3'));var router=express[_0xc26a('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc26a('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc26a('0x6'));router[_0xc26a('0x7')]('/',auth[_0xc26a('0x8')](),controller['index']);router[_0xc26a('0x7')](_0xc26a('0x9'),auth[_0xc26a('0x8')](),controller[_0xc26a('0xa')]);router[_0xc26a('0x7')](_0xc26a('0xb'),auth[_0xc26a('0x8')](),controller[_0xc26a('0xc')]);router[_0xc26a('0x7')](_0xc26a('0xd'),auth[_0xc26a('0x8')](),controller[_0xc26a('0xe')]);router[_0xc26a('0x7')](_0xc26a('0xf'),auth[_0xc26a('0x8')](),controller['getDescriptions']);router['post']('/',auth[_0xc26a('0x8')](),controller['create']);router['put'](_0xc26a('0x9'),auth['isAuthenticated'](),controller['update']);router[_0xc26a('0x10')](_0xc26a('0x9'),auth[_0xc26a('0x8')](),controller[_0xc26a('0x11')]);module[_0xc26a('0x12')]=router;
\ No newline at end of file
+var _0xadf5=['get','isAuthenticated','show','getFields','getSubjects','/:id/descriptions','getDescriptions','post','create','put','/:id','update','delete','multer','util','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1098d9,_0x52c9ce){var _0x1d80af=function(_0x498a31){while(--_0x498a31){_0x1098d9['push'](_0x1098d9['shift']());}};_0x1d80af(++_0x52c9ce);}(_0xadf5,0xf1));var _0x5adf=function(_0x295314,_0x17b250){_0x295314=_0x295314-0x0;var _0x584b0c=_0xadf5[_0x295314];return _0x584b0c;};'use strict';var multer=require(_0x5adf('0x0'));var util=require(_0x5adf('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x5adf('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x5adf('0x3'));var interaction=require(_0x5adf('0x4'));var config=require(_0x5adf('0x5'));var controller=require('./intZohoConfiguration.controller');router[_0x5adf('0x6')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth[_0x5adf('0x7')](),controller[_0x5adf('0x8')]);router[_0x5adf('0x6')]('/:id/fields',auth[_0x5adf('0x7')](),controller[_0x5adf('0x9')]);router[_0x5adf('0x6')]('/:id/subjects',auth[_0x5adf('0x7')](),controller[_0x5adf('0xa')]);router['get'](_0x5adf('0xb'),auth['isAuthenticated'](),controller[_0x5adf('0xc')]);router[_0x5adf('0xd')]('/',auth[_0x5adf('0x7')](),controller[_0x5adf('0xe')]);router[_0x5adf('0xf')](_0x5adf('0x10'),auth[_0x5adf('0x7')](),controller[_0x5adf('0x11')]);router[_0x5adf('0x12')](_0x5adf('0x10'),auth[_0x5adf('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index a86e092..1f88e93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dbf=['ENUM','lead','contact','nothing','contact_lead','STRING','sequelize'];(function(_0x32cb4b,_0x53e432){var _0x3b363f=function(_0x22059d){while(--_0x22059d){_0x32cb4b['push'](_0x32cb4b['shift']());}};_0x3b363f(++_0x53e432);}(_0x9dbf,0x99));var _0xf9db=function(_0x589e2f,_0x52cfd1){_0x589e2f=_0x589e2f-0x0;var _0x32a823=_0x9dbf[_0x589e2f];return _0x32a823;};'use strict';var Sequelize=require(_0xf9db('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0xf9db('0x1')](_0xf9db('0x2'),_0xf9db('0x3'),_0xf9db('0x4')),'defaultValue':_0xf9db('0x2')},'moduleSearch':{'type':Sequelize[_0xf9db('0x1')](_0xf9db('0x5'),_0xf9db('0x3'),'lead'),'defaultValue':_0xf9db('0x5')},'description':{'type':Sequelize[_0xf9db('0x6')]}};
\ No newline at end of file
+var _0x8f9e=['contact_lead','STRING','sequelize','exports','ENUM','lead','contact'];(function(_0x336595,_0x413e3d){var _0x600f95=function(_0x33a9f9){while(--_0x33a9f9){_0x336595['push'](_0x336595['shift']());}};_0x600f95(++_0x413e3d);}(_0x8f9e,0x160));var _0xe8f9=function(_0x412350,_0x2acbf6){_0x412350=_0x412350-0x0;var _0x4957ed=_0x8f9e[_0x412350];return _0x4957ed;};'use strict';var Sequelize=require(_0xe8f9('0x0'));module[_0xe8f9('0x1')]={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0xe8f9('0x2')](_0xe8f9('0x3'),'contact','nothing'),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0xe8f9('0x2')]('contact_lead',_0xe8f9('0x4'),_0xe8f9('0x3')),'defaultValue':_0xe8f9('0x5')},'description':{'type':Sequelize[_0xe8f9('0x6')]}};
\ No newline at end of file
index eb5d0ea..1e16bd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc1f=['getFields','findOne','ZohoField','nolimit','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','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','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','json','offset','undefined','limit','count','status','apply','reject','update','destroy','then','end','name','send','map','ZohoConfiguration','rawAttributes','type','key','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','keys','find','create','body'];(function(_0x296809,_0x1c9665){var _0x18c0d3=function(_0x249156){while(--_0x249156){_0x296809['push'](_0x296809['shift']());}};_0x18c0d3(++_0x1c9665);}(_0xbc1f,0xa4));var _0xfbc1=function(_0x49516b,_0x351165){_0x49516b=_0x49516b-0x0;var _0x9a8b28=_0xbc1f[_0x49516b];return _0x9a8b28;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfbc1('0x0'));var zipdir=require(_0xfbc1('0x1'));var jsonpatch=require(_0xfbc1('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xfbc1('0x3'));var util=require(_0xfbc1('0x4'));var path=require(_0xfbc1('0x5'));var sox=require('sox');var csv=require(_0xfbc1('0x6'));var ejs=require(_0xfbc1('0x7'));var fs=require('fs');var fs_extra=require(_0xfbc1('0x8'));var _=require(_0xfbc1('0x9'));var squel=require(_0xfbc1('0xa'));var crypto=require(_0xfbc1('0xb'));var jsforce=require(_0xfbc1('0xc'));var deskjs=require(_0xfbc1('0xd'));var toCsv=require(_0xfbc1('0x6'));var querystring=require(_0xfbc1('0xe'));var Papa=require(_0xfbc1('0xf'));var Redis=require(_0xfbc1('0x10'));var authService=require(_0xfbc1('0x11'));var qs=require(_0xfbc1('0x12'));var as=require(_0xfbc1('0x13'));var hardwareService=require(_0xfbc1('0x14'));var logger=require(_0xfbc1('0x15'))(_0xfbc1('0x16'));var utils=require(_0xfbc1('0x17'));var config=require(_0xfbc1('0x18'));var licenseUtil=require(_0xfbc1('0x19'));var db=require(_0xfbc1('0x1a'))['db'];function respondWithStatusCode(_0x4f2022,_0x4e80db){_0x4e80db=_0x4e80db||0xcc;return function(_0x41eb8f){if(_0x41eb8f){return _0x4f2022[_0xfbc1('0x1b')](_0x4e80db);}return _0x4f2022['status'](_0x4e80db)['end']();};}function respondWithResult(_0x4782ab,_0x12bf70){_0x12bf70=_0x12bf70||0xc8;return function(_0x9c3cc4){if(_0x9c3cc4){return _0x4782ab['status'](_0x12bf70)[_0xfbc1('0x1c')](_0x9c3cc4);}};}function respondWithFilteredResult(_0x451d75,_0x32547a){return function(_0x4aa6a4){if(_0x4aa6a4){var _0x1b7868=typeof _0x32547a[_0xfbc1('0x1d')]===_0xfbc1('0x1e')&&typeof _0x32547a[_0xfbc1('0x1f')]==='undefined';var _0x2fe118=_0x4aa6a4[_0xfbc1('0x20')];var _0x16c937=_0x1b7868?0x0:_0x32547a['offset'];var _0x3f9411=_0x1b7868?_0x4aa6a4[_0xfbc1('0x20')]:_0x32547a['offset']+_0x32547a[_0xfbc1('0x1f')];var _0x5c6e71;if(_0x3f9411>=_0x2fe118){_0x3f9411=_0x2fe118;_0x5c6e71=0xc8;}else{_0x5c6e71=0xce;}_0x451d75[_0xfbc1('0x21')](_0x5c6e71);return _0x451d75['set']('Content-Range',_0x16c937+'-'+_0x3f9411+'/'+_0x2fe118)['json'](_0x4aa6a4);}return null;};}function patchUpdates(_0x5812e3){return function(_0x46732e){try{jsonpatch[_0xfbc1('0x22')](_0x46732e,_0x5812e3,!![]);}catch(_0x18899e){return BPromise[_0xfbc1('0x23')](_0x18899e);}return _0x46732e['save']();};}function saveUpdates(_0x2ea272,_0x4a4133){return function(_0x2c0b25){if(_0x2c0b25){return _0x2c0b25[_0xfbc1('0x24')](_0x2ea272)['then'](function(_0xb679ae){return _0xb679ae;});}return null;};}function removeEntity(_0x4e531b,_0x370409){return function(_0x444e89){if(_0x444e89){return _0x444e89[_0xfbc1('0x25')]()[_0xfbc1('0x26')](function(){_0x4e531b[_0xfbc1('0x21')](0xcc)[_0xfbc1('0x27')]();});}};}function handleEntityNotFound(_0x7d65cb,_0x40963a){return function(_0x178440){if(!_0x178440){_0x7d65cb[_0xfbc1('0x1b')](0x194);}return _0x178440;};}function handleError(_0x68a14a,_0x4850c7){_0x4850c7=_0x4850c7||0x1f4;return function(_0x3ed0d1){logger['error'](_0x3ed0d1['stack']);if(_0x3ed0d1['name']){delete _0x3ed0d1[_0xfbc1('0x28')];}_0x68a14a['status'](_0x4850c7)[_0xfbc1('0x29')](_0x3ed0d1);};}exports['index']=function(_0x48e67b,_0x171d43){var _0x276ae0={},_0x4ce90f={},_0x2017e3={'count':0x0,'rows':[]};var _0xecf26a=_[_0xfbc1('0x2a')](db[_0xfbc1('0x2b')][_0xfbc1('0x2c')],function(_0x1e1af9){return{'name':_0x1e1af9['fieldName'],'type':_0x1e1af9[_0xfbc1('0x2d')][_0xfbc1('0x2e')]};});_0x4ce90f['model']=_[_0xfbc1('0x2a')](_0xecf26a,'name');_0x4ce90f[_0xfbc1('0x2f')]=_['keys'](_0x48e67b[_0xfbc1('0x2f')]);_0x4ce90f[_0xfbc1('0x30')]=_[_0xfbc1('0x31')](_0x4ce90f['model'],_0x4ce90f[_0xfbc1('0x2f')]);_0x276ae0[_0xfbc1('0x32')]=_[_0xfbc1('0x31')](_0x4ce90f[_0xfbc1('0x33')],qs[_0xfbc1('0x34')](_0x48e67b[_0xfbc1('0x2f')][_0xfbc1('0x34')]));_0x276ae0['attributes']=_0x276ae0[_0xfbc1('0x32')][_0xfbc1('0x35')]?_0x276ae0[_0xfbc1('0x32')]:_0x4ce90f[_0xfbc1('0x33')];if(!_0x48e67b[_0xfbc1('0x2f')][_0xfbc1('0x36')]('nolimit')){_0x276ae0[_0xfbc1('0x1f')]=qs[_0xfbc1('0x1f')](_0x48e67b[_0xfbc1('0x2f')]['limit']);_0x276ae0[_0xfbc1('0x1d')]=qs[_0xfbc1('0x1d')](_0x48e67b[_0xfbc1('0x2f')][_0xfbc1('0x1d')]);}_0x276ae0[_0xfbc1('0x37')]=qs['sort'](_0x48e67b['query'][_0xfbc1('0x38')]);_0x276ae0[_0xfbc1('0x39')]=qs[_0xfbc1('0x30')](_[_0xfbc1('0x3a')](_0x48e67b['query'],_0x4ce90f[_0xfbc1('0x30')]),_0xecf26a);if(_0x48e67b['query']['filter']){_0x276ae0[_0xfbc1('0x39')]=_[_0xfbc1('0x3b')](_0x276ae0['where'],{'$or':_[_0xfbc1('0x2a')](_0xecf26a,function(_0x58c64b){if(_0x58c64b[_0xfbc1('0x2d')]!==_0xfbc1('0x3c')){var _0x4f63fd={};_0x4f63fd[_0x58c64b['name']]={'$like':'%'+_0x48e67b[_0xfbc1('0x2f')][_0xfbc1('0x3d')]+'%'};return _0x4f63fd;}})});}_0x276ae0=_[_0xfbc1('0x3b')]({},_0x276ae0,_0x48e67b[_0xfbc1('0x3e')]);var _0x581f58={'where':_0x276ae0[_0xfbc1('0x39')]};return db[_0xfbc1('0x2b')][_0xfbc1('0x20')](_0x581f58)[_0xfbc1('0x26')](function(_0x18f699){_0x2017e3[_0xfbc1('0x20')]=_0x18f699;if(_0x48e67b['query'][_0xfbc1('0x3f')]){_0x276ae0[_0xfbc1('0x40')]=[{'all':!![]}];}return db[_0xfbc1('0x2b')][_0xfbc1('0x41')](_0x276ae0);})[_0xfbc1('0x26')](function(_0x520907){_0x2017e3['rows']=_0x520907;return _0x2017e3;})[_0xfbc1('0x26')](respondWithFilteredResult(_0x171d43,_0x276ae0))[_0xfbc1('0x42')](handleError(_0x171d43,null));};exports[_0xfbc1('0x43')]=function(_0x349561,_0x3bc4db){var _0x42c6d8={'raw':![],'where':{'id':_0x349561[_0xfbc1('0x44')]['id']}},_0x1026da={};_0x1026da[_0xfbc1('0x33')]=_[_0xfbc1('0x45')](db[_0xfbc1('0x2b')][_0xfbc1('0x2c')]);_0x1026da[_0xfbc1('0x2f')]=_[_0xfbc1('0x45')](_0x349561[_0xfbc1('0x2f')]);_0x1026da[_0xfbc1('0x30')]=_['intersection'](_0x1026da['model'],_0x1026da['query']);_0x42c6d8[_0xfbc1('0x32')]=_[_0xfbc1('0x31')](_0x1026da[_0xfbc1('0x33')],qs[_0xfbc1('0x34')](_0x349561[_0xfbc1('0x2f')][_0xfbc1('0x34')]));_0x42c6d8['attributes']=_0x42c6d8[_0xfbc1('0x32')][_0xfbc1('0x35')]?_0x42c6d8[_0xfbc1('0x32')]:_0x1026da[_0xfbc1('0x33')];if(_0x349561[_0xfbc1('0x2f')]['includeAll']){_0x42c6d8[_0xfbc1('0x40')]=[{'all':!![]}];}_0x42c6d8=_[_0xfbc1('0x3b')]({},_0x42c6d8,_0x349561[_0xfbc1('0x3e')]);return db[_0xfbc1('0x2b')][_0xfbc1('0x46')](_0x42c6d8)['then'](handleEntityNotFound(_0x3bc4db,null))[_0xfbc1('0x26')](respondWithResult(_0x3bc4db,null))[_0xfbc1('0x42')](handleError(_0x3bc4db,null));};exports[_0xfbc1('0x47')]=function(_0x16920c,_0xd5c1c4){return db[_0xfbc1('0x2b')][_0xfbc1('0x47')](_0x16920c[_0xfbc1('0x48')],{})[_0xfbc1('0x26')](respondWithResult(_0xd5c1c4,0xc9))['catch'](handleError(_0xd5c1c4,null));};exports[_0xfbc1('0x24')]=function(_0x3a3496,_0x5d20a9){if(_0x3a3496[_0xfbc1('0x48')]['id']){delete _0x3a3496[_0xfbc1('0x48')]['id'];}return db[_0xfbc1('0x2b')][_0xfbc1('0x46')]({'where':{'id':_0x3a3496[_0xfbc1('0x44')]['id']}})[_0xfbc1('0x26')](handleEntityNotFound(_0x5d20a9,null))[_0xfbc1('0x26')](saveUpdates(_0x3a3496[_0xfbc1('0x48')],null))[_0xfbc1('0x26')](respondWithResult(_0x5d20a9,null))[_0xfbc1('0x42')](handleError(_0x5d20a9,null));};exports[_0xfbc1('0x25')]=function(_0x2351cd,_0x3e9e73){return db[_0xfbc1('0x2b')][_0xfbc1('0x46')]({'where':{'id':_0x2351cd[_0xfbc1('0x44')]['id']}})[_0xfbc1('0x26')](handleEntityNotFound(_0x3e9e73,null))[_0xfbc1('0x26')](removeEntity(_0x3e9e73,null))[_0xfbc1('0x42')](handleError(_0x3e9e73,null));};exports[_0xfbc1('0x49')]=function(_0x2a322d,_0x410262,_0x4d5b37){var _0x3de459={};var _0x1d9c08={};var _0x58a577;var _0x86ab67;return db['ZohoConfiguration'][_0xfbc1('0x4a')]({'where':{'id':_0x2a322d[_0xfbc1('0x44')]['id']}})[_0xfbc1('0x26')](handleEntityNotFound(_0x410262,null))[_0xfbc1('0x26')](function(_0x2d43a0){if(_0x2d43a0){_0x58a577=_0x2d43a0;_0x1d9c08[_0xfbc1('0x33')]=_[_0xfbc1('0x45')](db[_0xfbc1('0x4b')][_0xfbc1('0x2c')]);_0x1d9c08[_0xfbc1('0x2f')]=_[_0xfbc1('0x45')](_0x2a322d[_0xfbc1('0x2f')]);_0x1d9c08[_0xfbc1('0x30')]=_[_0xfbc1('0x31')](_0x1d9c08['model'],_0x1d9c08[_0xfbc1('0x2f')]);_0x3de459[_0xfbc1('0x32')]=_[_0xfbc1('0x31')](_0x1d9c08['model'],qs['fields'](_0x2a322d[_0xfbc1('0x2f')][_0xfbc1('0x34')]));_0x3de459[_0xfbc1('0x32')]=_0x3de459[_0xfbc1('0x32')][_0xfbc1('0x35')]?_0x3de459['attributes']:_0x1d9c08[_0xfbc1('0x33')];_0x3de459[_0xfbc1('0x37')]=qs[_0xfbc1('0x38')](_0x2a322d['query']['sort']);_0x3de459[_0xfbc1('0x39')]=qs[_0xfbc1('0x30')](_[_0xfbc1('0x3a')](_0x2a322d[_0xfbc1('0x2f')],_0x1d9c08['filters']));if(_0x2a322d[_0xfbc1('0x2f')][_0xfbc1('0x3d')]){_0x3de459['where']=_[_0xfbc1('0x3b')](_0x3de459['where'],{'$or':_[_0xfbc1('0x2a')](_0x3de459[_0xfbc1('0x32')],function(_0x3f2ab6){var _0x4a1950={};_0x4a1950[_0x3f2ab6]={'$like':'%'+_0x2a322d[_0xfbc1('0x2f')][_0xfbc1('0x3d')]+'%'};return _0x4a1950;})});}_0x3de459=_['merge']({},_0x3de459,_0x2a322d['options']);return _0x58a577[_0xfbc1('0x49')](_0x3de459);}})[_0xfbc1('0x26')](function(_0x386c77){if(_0x386c77){_0x86ab67=_0x386c77['length'];if(!_0x2a322d[_0xfbc1('0x2f')][_0xfbc1('0x36')](_0xfbc1('0x4c'))){_0x3de459['limit']=qs[_0xfbc1('0x1f')](_0x2a322d[_0xfbc1('0x2f')]['limit']);_0x3de459['offset']=qs[_0xfbc1('0x1d')](_0x2a322d[_0xfbc1('0x2f')]['offset']);}return _0x58a577[_0xfbc1('0x49')](_0x3de459);}})['then'](function(_0x27e4fc){if(_0x27e4fc){return _0x27e4fc?{'count':_0x86ab67,'rows':_0x27e4fc}:null;}})[_0xfbc1('0x26')](respondWithResult(_0x410262,null))[_0xfbc1('0x42')](handleError(_0x410262,null));};exports['getSubjects']=function(_0x17f303,_0x251b34,_0x52adb9){var _0x4dc6aa={};var _0xde4f3e={};var _0x1a001d;var _0x22f733;return db[_0xfbc1('0x2b')]['findOne']({'where':{'id':_0x17f303[_0xfbc1('0x44')]['id']}})[_0xfbc1('0x26')](handleEntityNotFound(_0x251b34,null))[_0xfbc1('0x26')](function(_0x5eaf79){if(_0x5eaf79){_0x1a001d=_0x5eaf79;_0xde4f3e['model']=_[_0xfbc1('0x45')](db[_0xfbc1('0x4b')][_0xfbc1('0x2c')]);_0xde4f3e['query']=_[_0xfbc1('0x45')](_0x17f303['query']);_0xde4f3e[_0xfbc1('0x30')]=_[_0xfbc1('0x31')](_0xde4f3e[_0xfbc1('0x33')],_0xde4f3e[_0xfbc1('0x2f')]);_0x4dc6aa[_0xfbc1('0x32')]=_['intersection'](_0xde4f3e[_0xfbc1('0x33')],qs['fields'](_0x17f303['query'][_0xfbc1('0x34')]));_0x4dc6aa[_0xfbc1('0x32')]=_0x4dc6aa['attributes']['length']?_0x4dc6aa[_0xfbc1('0x32')]:_0xde4f3e[_0xfbc1('0x33')];_0x4dc6aa[_0xfbc1('0x37')]=qs[_0xfbc1('0x38')](_0x17f303[_0xfbc1('0x2f')][_0xfbc1('0x38')]);_0x4dc6aa[_0xfbc1('0x39')]=qs['filters'](_[_0xfbc1('0x3a')](_0x17f303[_0xfbc1('0x2f')],_0xde4f3e[_0xfbc1('0x30')]));if(_0x17f303['query'][_0xfbc1('0x3d')]){_0x4dc6aa[_0xfbc1('0x39')]=_[_0xfbc1('0x3b')](_0x4dc6aa[_0xfbc1('0x39')],{'$or':_['map'](_0x4dc6aa[_0xfbc1('0x32')],function(_0x4899e1){var _0x4dcac4={};_0x4dcac4[_0x4899e1]={'$like':'%'+_0x17f303[_0xfbc1('0x2f')]['filter']+'%'};return _0x4dcac4;})});}_0x4dc6aa=_['merge']({},_0x4dc6aa,_0x17f303[_0xfbc1('0x3e')]);return _0x1a001d[_0xfbc1('0x4d')](_0x4dc6aa);}})[_0xfbc1('0x26')](function(_0x5314d6){if(_0x5314d6){_0x22f733=_0x5314d6['length'];if(!_0x17f303[_0xfbc1('0x2f')][_0xfbc1('0x36')](_0xfbc1('0x4c'))){_0x4dc6aa['limit']=qs[_0xfbc1('0x1f')](_0x17f303[_0xfbc1('0x2f')]['limit']);_0x4dc6aa[_0xfbc1('0x1d')]=qs['offset'](_0x17f303[_0xfbc1('0x2f')][_0xfbc1('0x1d')]);}return _0x1a001d[_0xfbc1('0x4d')](_0x4dc6aa);}})['then'](function(_0x1e91e1){if(_0x1e91e1){return _0x1e91e1?{'count':_0x22f733,'rows':_0x1e91e1}:null;}})[_0xfbc1('0x26')](respondWithResult(_0x251b34,null))[_0xfbc1('0x42')](handleError(_0x251b34,null));};exports[_0xfbc1('0x4e')]=function(_0x389a4c,_0x31af96,_0x2d8827){var _0x3628e3={};var _0x101579={};var _0x2ff56f;var _0x4fa443;return db[_0xfbc1('0x2b')]['findOne']({'where':{'id':_0x389a4c[_0xfbc1('0x44')]['id']}})['then'](handleEntityNotFound(_0x31af96,null))[_0xfbc1('0x26')](function(_0x334083){if(_0x334083){_0x2ff56f=_0x334083;_0x101579[_0xfbc1('0x33')]=_[_0xfbc1('0x45')](db[_0xfbc1('0x4b')][_0xfbc1('0x2c')]);_0x101579[_0xfbc1('0x2f')]=_[_0xfbc1('0x45')](_0x389a4c[_0xfbc1('0x2f')]);_0x101579[_0xfbc1('0x30')]=_[_0xfbc1('0x31')](_0x101579['model'],_0x101579[_0xfbc1('0x2f')]);_0x3628e3['attributes']=_[_0xfbc1('0x31')](_0x101579[_0xfbc1('0x33')],qs[_0xfbc1('0x34')](_0x389a4c[_0xfbc1('0x2f')][_0xfbc1('0x34')]));_0x3628e3[_0xfbc1('0x32')]=_0x3628e3[_0xfbc1('0x32')][_0xfbc1('0x35')]?_0x3628e3['attributes']:_0x101579[_0xfbc1('0x33')];_0x3628e3[_0xfbc1('0x37')]=qs[_0xfbc1('0x38')](_0x389a4c[_0xfbc1('0x2f')][_0xfbc1('0x38')]);_0x3628e3[_0xfbc1('0x39')]=qs['filters'](_[_0xfbc1('0x3a')](_0x389a4c['query'],_0x101579[_0xfbc1('0x30')]));if(_0x389a4c[_0xfbc1('0x2f')][_0xfbc1('0x3d')]){_0x3628e3[_0xfbc1('0x39')]=_['merge'](_0x3628e3[_0xfbc1('0x39')],{'$or':_[_0xfbc1('0x2a')](_0x3628e3[_0xfbc1('0x32')],function(_0x2b50c7){var _0x1199ac={};_0x1199ac[_0x2b50c7]={'$like':'%'+_0x389a4c[_0xfbc1('0x2f')][_0xfbc1('0x3d')]+'%'};return _0x1199ac;})});}_0x3628e3=_[_0xfbc1('0x3b')]({},_0x3628e3,_0x389a4c[_0xfbc1('0x3e')]);return _0x2ff56f[_0xfbc1('0x4e')](_0x3628e3);}})['then'](function(_0x459921){if(_0x459921){_0x4fa443=_0x459921[_0xfbc1('0x35')];if(!_0x389a4c[_0xfbc1('0x2f')][_0xfbc1('0x36')](_0xfbc1('0x4c'))){_0x3628e3[_0xfbc1('0x1f')]=qs[_0xfbc1('0x1f')](_0x389a4c[_0xfbc1('0x2f')]['limit']);_0x3628e3[_0xfbc1('0x1d')]=qs['offset'](_0x389a4c['query'][_0xfbc1('0x1d')]);}return _0x2ff56f[_0xfbc1('0x4e')](_0x3628e3);}})[_0xfbc1('0x26')](function(_0xca641e){if(_0xca641e){return _0xca641e?{'count':_0x4fa443,'rows':_0xca641e}:null;}})[_0xfbc1('0x26')](respondWithResult(_0x31af96,null))[_0xfbc1('0x42')](handleError(_0x31af96,null));};
\ No newline at end of file
+var _0x9c73=['../../config/license/util','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','sendStatus','name','send','index','map','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','merge','options','includeAll','rows','catch','show','params','ZohoConfiguration','include','find','body','update','findOne','ZohoField','rawAttributes','order','getFields','getSubjects','getDescriptions','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x56916d,_0x37b935){var _0x2b7f1f=function(_0x206eb1){while(--_0x206eb1){_0x56916d['push'](_0x56916d['shift']());}};_0x2b7f1f(++_0x37b935);}(_0x9c73,0x83));var _0x39c7=function(_0x5ecf3f,_0x30d8e9){_0x5ecf3f=_0x5ecf3f-0x0;var _0x2f4ef9=_0x9c73[_0x5ecf3f];return _0x2f4ef9;};'use strict';var emlformat=require(_0x39c7('0x0'));var rimraf=require(_0x39c7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x39c7('0x2'));var moment=require(_0x39c7('0x3'));var BPromise=require(_0x39c7('0x4'));var Mustache=require(_0x39c7('0x5'));var util=require(_0x39c7('0x6'));var path=require(_0x39c7('0x7'));var sox=require('sox');var csv=require(_0x39c7('0x8'));var ejs=require(_0x39c7('0x9'));var fs=require('fs');var fs_extra=require(_0x39c7('0xa'));var _=require('lodash');var squel=require(_0x39c7('0xb'));var crypto=require(_0x39c7('0xc'));var jsforce=require(_0x39c7('0xd'));var deskjs=require(_0x39c7('0xe'));var toCsv=require(_0x39c7('0x8'));var querystring=require('querystring');var Papa=require(_0x39c7('0xf'));var Redis=require(_0x39c7('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x39c7('0x11'));var as=require(_0x39c7('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x39c7('0x13'))(_0x39c7('0x14'));var utils=require(_0x39c7('0x15'));var config=require(_0x39c7('0x16'));var licenseUtil=require(_0x39c7('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3fa442,_0x415f03){_0x415f03=_0x415f03||0xcc;return function(_0x190002){if(_0x190002){return _0x3fa442['sendStatus'](_0x415f03);}return _0x3fa442['status'](_0x415f03)[_0x39c7('0x18')]();};}function respondWithResult(_0x2a0bfe,_0x13c244){_0x13c244=_0x13c244||0xc8;return function(_0x2a1b93){if(_0x2a1b93){return _0x2a0bfe[_0x39c7('0x19')](_0x13c244)[_0x39c7('0x1a')](_0x2a1b93);}};}function respondWithFilteredResult(_0x9a4815,_0x58b108){return function(_0x2e84fb){if(_0x2e84fb){var _0x2b9ddf=typeof _0x58b108['offset']===_0x39c7('0x1b')&&typeof _0x58b108['limit']===_0x39c7('0x1b');var _0x128ed1=_0x2e84fb[_0x39c7('0x1c')];var _0xb35764=_0x2b9ddf?0x0:_0x58b108[_0x39c7('0x1d')];var _0x56aafb=_0x2b9ddf?_0x2e84fb[_0x39c7('0x1c')]:_0x58b108[_0x39c7('0x1d')]+_0x58b108[_0x39c7('0x1e')];var _0x536e43;if(_0x56aafb>=_0x128ed1){_0x56aafb=_0x128ed1;_0x536e43=0xc8;}else{_0x536e43=0xce;}_0x9a4815[_0x39c7('0x19')](_0x536e43);return _0x9a4815[_0x39c7('0x1f')](_0x39c7('0x20'),_0xb35764+'-'+_0x56aafb+'/'+_0x128ed1)[_0x39c7('0x1a')](_0x2e84fb);}return null;};}function patchUpdates(_0x4fc1bf){return function(_0x55760e){try{jsonpatch[_0x39c7('0x21')](_0x55760e,_0x4fc1bf,!![]);}catch(_0x201513){return BPromise[_0x39c7('0x22')](_0x201513);}return _0x55760e[_0x39c7('0x23')]();};}function saveUpdates(_0x3a4287,_0x4cde93){return function(_0x52c481){if(_0x52c481){return _0x52c481['update'](_0x3a4287)[_0x39c7('0x24')](function(_0x5df1b7){return _0x5df1b7;});}return null;};}function removeEntity(_0x400c5c,_0x2bfb41){return function(_0x52f6a1){if(_0x52f6a1){return _0x52f6a1[_0x39c7('0x25')]()[_0x39c7('0x24')](function(){_0x400c5c[_0x39c7('0x19')](0xcc)[_0x39c7('0x18')]();});}};}function handleEntityNotFound(_0x53af4f,_0x5c8a78){return function(_0x479d88){if(!_0x479d88){_0x53af4f[_0x39c7('0x26')](0x194);}return _0x479d88;};}function handleError(_0x3b1811,_0x5cbb57){_0x5cbb57=_0x5cbb57||0x1f4;return function(_0x475c0a){logger['error'](_0x475c0a['stack']);if(_0x475c0a[_0x39c7('0x27')]){delete _0x475c0a['name'];}_0x3b1811[_0x39c7('0x19')](_0x5cbb57)[_0x39c7('0x28')](_0x475c0a);};}exports[_0x39c7('0x29')]=function(_0x265912,_0x15add3){var _0x1f00e2={},_0x417c0e={},_0x2e6381={'count':0x0,'rows':[]};var _0x4381e4=_[_0x39c7('0x2a')](db['ZohoConfiguration']['rawAttributes'],function(_0x5ea215){return{'name':_0x5ea215['fieldName'],'type':_0x5ea215['type']['key']};});_0x417c0e[_0x39c7('0x2b')]=_['map'](_0x4381e4,_0x39c7('0x27'));_0x417c0e[_0x39c7('0x2c')]=_[_0x39c7('0x2d')](_0x265912[_0x39c7('0x2c')]);_0x417c0e[_0x39c7('0x2e')]=_[_0x39c7('0x2f')](_0x417c0e['model'],_0x417c0e[_0x39c7('0x2c')]);_0x1f00e2[_0x39c7('0x30')]=_[_0x39c7('0x2f')](_0x417c0e[_0x39c7('0x2b')],qs[_0x39c7('0x31')](_0x265912[_0x39c7('0x2c')][_0x39c7('0x31')]));_0x1f00e2['attributes']=_0x1f00e2[_0x39c7('0x30')][_0x39c7('0x32')]?_0x1f00e2['attributes']:_0x417c0e[_0x39c7('0x2b')];if(!_0x265912[_0x39c7('0x2c')][_0x39c7('0x33')](_0x39c7('0x34'))){_0x1f00e2['limit']=qs[_0x39c7('0x1e')](_0x265912[_0x39c7('0x2c')]['limit']);_0x1f00e2['offset']=qs[_0x39c7('0x1d')](_0x265912[_0x39c7('0x2c')][_0x39c7('0x1d')]);}_0x1f00e2['order']=qs[_0x39c7('0x35')](_0x265912[_0x39c7('0x2c')]['sort']);_0x1f00e2[_0x39c7('0x36')]=qs[_0x39c7('0x2e')](_[_0x39c7('0x37')](_0x265912['query'],_0x417c0e[_0x39c7('0x2e')]),_0x4381e4);if(_0x265912[_0x39c7('0x2c')][_0x39c7('0x38')]){_0x1f00e2[_0x39c7('0x36')]=_['merge'](_0x1f00e2[_0x39c7('0x36')],{'$or':_[_0x39c7('0x2a')](_0x4381e4,function(_0x5783e9){if(_0x5783e9[_0x39c7('0x39')]!=='VIRTUAL'){var _0x1c6b58={};_0x1c6b58[_0x5783e9[_0x39c7('0x27')]]={'$like':'%'+_0x265912['query'][_0x39c7('0x38')]+'%'};return _0x1c6b58;}})});}_0x1f00e2=_[_0x39c7('0x3a')]({},_0x1f00e2,_0x265912[_0x39c7('0x3b')]);var _0x1751af={'where':_0x1f00e2[_0x39c7('0x36')]};return db['ZohoConfiguration'][_0x39c7('0x1c')](_0x1751af)[_0x39c7('0x24')](function(_0x550093){_0x2e6381[_0x39c7('0x1c')]=_0x550093;if(_0x265912[_0x39c7('0x2c')][_0x39c7('0x3c')]){_0x1f00e2['include']=[{'all':!![]}];}return db['ZohoConfiguration']['findAll'](_0x1f00e2);})[_0x39c7('0x24')](function(_0x39ab30){_0x2e6381[_0x39c7('0x3d')]=_0x39ab30;return _0x2e6381;})[_0x39c7('0x24')](respondWithFilteredResult(_0x15add3,_0x1f00e2))[_0x39c7('0x3e')](handleError(_0x15add3,null));};exports[_0x39c7('0x3f')]=function(_0x51da53,_0x2afcbb){var _0xce6c4f={'raw':![],'where':{'id':_0x51da53[_0x39c7('0x40')]['id']}},_0xa26b00={};_0xa26b00[_0x39c7('0x2b')]=_['keys'](db[_0x39c7('0x41')]['rawAttributes']);_0xa26b00[_0x39c7('0x2c')]=_[_0x39c7('0x2d')](_0x51da53[_0x39c7('0x2c')]);_0xa26b00[_0x39c7('0x2e')]=_['intersection'](_0xa26b00['model'],_0xa26b00['query']);_0xce6c4f[_0x39c7('0x30')]=_[_0x39c7('0x2f')](_0xa26b00[_0x39c7('0x2b')],qs[_0x39c7('0x31')](_0x51da53['query'][_0x39c7('0x31')]));_0xce6c4f['attributes']=_0xce6c4f[_0x39c7('0x30')]['length']?_0xce6c4f[_0x39c7('0x30')]:_0xa26b00[_0x39c7('0x2b')];if(_0x51da53['query']['includeAll']){_0xce6c4f[_0x39c7('0x42')]=[{'all':!![]}];}_0xce6c4f=_[_0x39c7('0x3a')]({},_0xce6c4f,_0x51da53[_0x39c7('0x3b')]);return db[_0x39c7('0x41')][_0x39c7('0x43')](_0xce6c4f)['then'](handleEntityNotFound(_0x2afcbb,null))[_0x39c7('0x24')](respondWithResult(_0x2afcbb,null))[_0x39c7('0x3e')](handleError(_0x2afcbb,null));};exports['create']=function(_0x582d6a,_0x4f4ed1){return db[_0x39c7('0x41')]['create'](_0x582d6a[_0x39c7('0x44')],{})[_0x39c7('0x24')](respondWithResult(_0x4f4ed1,0xc9))[_0x39c7('0x3e')](handleError(_0x4f4ed1,null));};exports[_0x39c7('0x45')]=function(_0x2baed6,_0xa2e0b3){if(_0x2baed6[_0x39c7('0x44')]['id']){delete _0x2baed6[_0x39c7('0x44')]['id'];}return db['ZohoConfiguration'][_0x39c7('0x43')]({'where':{'id':_0x2baed6['params']['id']}})[_0x39c7('0x24')](handleEntityNotFound(_0xa2e0b3,null))[_0x39c7('0x24')](saveUpdates(_0x2baed6[_0x39c7('0x44')],null))[_0x39c7('0x24')](respondWithResult(_0xa2e0b3,null))[_0x39c7('0x3e')](handleError(_0xa2e0b3,null));};exports[_0x39c7('0x25')]=function(_0x4d18e2,_0xf558c6){return db[_0x39c7('0x41')][_0x39c7('0x43')]({'where':{'id':_0x4d18e2[_0x39c7('0x40')]['id']}})[_0x39c7('0x24')](handleEntityNotFound(_0xf558c6,null))[_0x39c7('0x24')](removeEntity(_0xf558c6,null))[_0x39c7('0x3e')](handleError(_0xf558c6,null));};exports['getFields']=function(_0x11a9e5,_0x60c17,_0x322646){var _0x407e56={};var _0x524e01={};var _0x145687;var _0x1cc667;return db['ZohoConfiguration'][_0x39c7('0x46')]({'where':{'id':_0x11a9e5['params']['id']}})['then'](handleEntityNotFound(_0x60c17,null))[_0x39c7('0x24')](function(_0x4ebb58){if(_0x4ebb58){_0x145687=_0x4ebb58;_0x524e01[_0x39c7('0x2b')]=_[_0x39c7('0x2d')](db[_0x39c7('0x47')][_0x39c7('0x48')]);_0x524e01[_0x39c7('0x2c')]=_[_0x39c7('0x2d')](_0x11a9e5[_0x39c7('0x2c')]);_0x524e01[_0x39c7('0x2e')]=_[_0x39c7('0x2f')](_0x524e01[_0x39c7('0x2b')],_0x524e01[_0x39c7('0x2c')]);_0x407e56[_0x39c7('0x30')]=_[_0x39c7('0x2f')](_0x524e01[_0x39c7('0x2b')],qs[_0x39c7('0x31')](_0x11a9e5[_0x39c7('0x2c')][_0x39c7('0x31')]));_0x407e56[_0x39c7('0x30')]=_0x407e56[_0x39c7('0x30')][_0x39c7('0x32')]?_0x407e56[_0x39c7('0x30')]:_0x524e01[_0x39c7('0x2b')];_0x407e56[_0x39c7('0x49')]=qs[_0x39c7('0x35')](_0x11a9e5[_0x39c7('0x2c')]['sort']);_0x407e56['where']=qs['filters'](_[_0x39c7('0x37')](_0x11a9e5[_0x39c7('0x2c')],_0x524e01[_0x39c7('0x2e')]));if(_0x11a9e5[_0x39c7('0x2c')][_0x39c7('0x38')]){_0x407e56[_0x39c7('0x36')]=_[_0x39c7('0x3a')](_0x407e56[_0x39c7('0x36')],{'$or':_[_0x39c7('0x2a')](_0x407e56[_0x39c7('0x30')],function(_0x1db597){var _0x282482={};_0x282482[_0x1db597]={'$like':'%'+_0x11a9e5[_0x39c7('0x2c')][_0x39c7('0x38')]+'%'};return _0x282482;})});}_0x407e56=_['merge']({},_0x407e56,_0x11a9e5[_0x39c7('0x3b')]);return _0x145687['getFields'](_0x407e56);}})[_0x39c7('0x24')](function(_0x30950c){if(_0x30950c){_0x1cc667=_0x30950c[_0x39c7('0x32')];if(!_0x11a9e5['query'][_0x39c7('0x33')]('nolimit')){_0x407e56[_0x39c7('0x1e')]=qs[_0x39c7('0x1e')](_0x11a9e5['query'][_0x39c7('0x1e')]);_0x407e56[_0x39c7('0x1d')]=qs['offset'](_0x11a9e5[_0x39c7('0x2c')][_0x39c7('0x1d')]);}return _0x145687[_0x39c7('0x4a')](_0x407e56);}})[_0x39c7('0x24')](function(_0x477329){if(_0x477329){return _0x477329?{'count':_0x1cc667,'rows':_0x477329}:null;}})[_0x39c7('0x24')](respondWithResult(_0x60c17,null))[_0x39c7('0x3e')](handleError(_0x60c17,null));};exports[_0x39c7('0x4b')]=function(_0x3c9839,_0x50eaf3,_0xa02c53){var _0x2aef74={};var _0x1b76c5={};var _0x1b0da2;var _0xdc72cc;return db['ZohoConfiguration'][_0x39c7('0x46')]({'where':{'id':_0x3c9839[_0x39c7('0x40')]['id']}})['then'](handleEntityNotFound(_0x50eaf3,null))[_0x39c7('0x24')](function(_0x2d296d){if(_0x2d296d){_0x1b0da2=_0x2d296d;_0x1b76c5['model']=_['keys'](db['ZohoField'][_0x39c7('0x48')]);_0x1b76c5[_0x39c7('0x2c')]=_[_0x39c7('0x2d')](_0x3c9839[_0x39c7('0x2c')]);_0x1b76c5['filters']=_['intersection'](_0x1b76c5[_0x39c7('0x2b')],_0x1b76c5[_0x39c7('0x2c')]);_0x2aef74[_0x39c7('0x30')]=_[_0x39c7('0x2f')](_0x1b76c5['model'],qs[_0x39c7('0x31')](_0x3c9839[_0x39c7('0x2c')][_0x39c7('0x31')]));_0x2aef74[_0x39c7('0x30')]=_0x2aef74[_0x39c7('0x30')][_0x39c7('0x32')]?_0x2aef74[_0x39c7('0x30')]:_0x1b76c5[_0x39c7('0x2b')];_0x2aef74[_0x39c7('0x49')]=qs['sort'](_0x3c9839[_0x39c7('0x2c')][_0x39c7('0x35')]);_0x2aef74[_0x39c7('0x36')]=qs[_0x39c7('0x2e')](_[_0x39c7('0x37')](_0x3c9839[_0x39c7('0x2c')],_0x1b76c5[_0x39c7('0x2e')]));if(_0x3c9839[_0x39c7('0x2c')][_0x39c7('0x38')]){_0x2aef74[_0x39c7('0x36')]=_[_0x39c7('0x3a')](_0x2aef74[_0x39c7('0x36')],{'$or':_[_0x39c7('0x2a')](_0x2aef74[_0x39c7('0x30')],function(_0x2879be){var _0x433b4f={};_0x433b4f[_0x2879be]={'$like':'%'+_0x3c9839[_0x39c7('0x2c')]['filter']+'%'};return _0x433b4f;})});}_0x2aef74=_['merge']({},_0x2aef74,_0x3c9839[_0x39c7('0x3b')]);return _0x1b0da2[_0x39c7('0x4b')](_0x2aef74);}})[_0x39c7('0x24')](function(_0x3a93e9){if(_0x3a93e9){_0xdc72cc=_0x3a93e9[_0x39c7('0x32')];if(!_0x3c9839[_0x39c7('0x2c')][_0x39c7('0x33')](_0x39c7('0x34'))){_0x2aef74['limit']=qs['limit'](_0x3c9839[_0x39c7('0x2c')][_0x39c7('0x1e')]);_0x2aef74[_0x39c7('0x1d')]=qs[_0x39c7('0x1d')](_0x3c9839[_0x39c7('0x2c')][_0x39c7('0x1d')]);}return _0x1b0da2['getSubjects'](_0x2aef74);}})[_0x39c7('0x24')](function(_0x1e5d13){if(_0x1e5d13){return _0x1e5d13?{'count':_0xdc72cc,'rows':_0x1e5d13}:null;}})[_0x39c7('0x24')](respondWithResult(_0x50eaf3,null))['catch'](handleError(_0x50eaf3,null));};exports[_0x39c7('0x4c')]=function(_0x4aa408,_0x196008,_0x2e4a01){var _0x56e0cd={};var _0x172afe={};var _0x2962af;var _0x4701e1;return db[_0x39c7('0x41')][_0x39c7('0x46')]({'where':{'id':_0x4aa408[_0x39c7('0x40')]['id']}})[_0x39c7('0x24')](handleEntityNotFound(_0x196008,null))[_0x39c7('0x24')](function(_0x1f0a2c){if(_0x1f0a2c){_0x2962af=_0x1f0a2c;_0x172afe[_0x39c7('0x2b')]=_['keys'](db['ZohoField'][_0x39c7('0x48')]);_0x172afe['query']=_[_0x39c7('0x2d')](_0x4aa408[_0x39c7('0x2c')]);_0x172afe[_0x39c7('0x2e')]=_['intersection'](_0x172afe[_0x39c7('0x2b')],_0x172afe[_0x39c7('0x2c')]);_0x56e0cd[_0x39c7('0x30')]=_[_0x39c7('0x2f')](_0x172afe[_0x39c7('0x2b')],qs[_0x39c7('0x31')](_0x4aa408[_0x39c7('0x2c')][_0x39c7('0x31')]));_0x56e0cd[_0x39c7('0x30')]=_0x56e0cd[_0x39c7('0x30')]['length']?_0x56e0cd['attributes']:_0x172afe[_0x39c7('0x2b')];_0x56e0cd[_0x39c7('0x49')]=qs[_0x39c7('0x35')](_0x4aa408['query']['sort']);_0x56e0cd[_0x39c7('0x36')]=qs[_0x39c7('0x2e')](_['pick'](_0x4aa408[_0x39c7('0x2c')],_0x172afe[_0x39c7('0x2e')]));if(_0x4aa408[_0x39c7('0x2c')]['filter']){_0x56e0cd['where']=_['merge'](_0x56e0cd[_0x39c7('0x36')],{'$or':_[_0x39c7('0x2a')](_0x56e0cd[_0x39c7('0x30')],function(_0x26dc48){var _0x410273={};_0x410273[_0x26dc48]={'$like':'%'+_0x4aa408[_0x39c7('0x2c')][_0x39c7('0x38')]+'%'};return _0x410273;})});}_0x56e0cd=_[_0x39c7('0x3a')]({},_0x56e0cd,_0x4aa408['options']);return _0x2962af['getDescriptions'](_0x56e0cd);}})['then'](function(_0x316c7c){if(_0x316c7c){_0x4701e1=_0x316c7c[_0x39c7('0x32')];if(!_0x4aa408[_0x39c7('0x2c')]['hasOwnProperty']('nolimit')){_0x56e0cd[_0x39c7('0x1e')]=qs[_0x39c7('0x1e')](_0x4aa408[_0x39c7('0x2c')][_0x39c7('0x1e')]);_0x56e0cd[_0x39c7('0x1d')]=qs[_0x39c7('0x1d')](_0x4aa408['query'][_0x39c7('0x1d')]);}return _0x2962af['getDescriptions'](_0x56e0cd);}})[_0x39c7('0x24')](function(_0x5ee669){if(_0x5ee669){return _0x5ee669?{'count':_0x4701e1,'rows':_0x5ee669}:null;}})[_0x39c7('0x24')](respondWithResult(_0x196008,null))[_0x39c7('0x3e')](handleError(_0x196008,null));};
\ No newline at end of file
index ae31515..728e410 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56b3=['bluebird','request-promise','path','rimraf','./intZohoConfiguration.attributes','define','ZohoConfiguration','int_zoho_configurations','lodash','util','../../config/logger','api'];(function(_0x5c2cd5,_0x1c2fbb){var _0x5180e9=function(_0x12ceed){while(--_0x12ceed){_0x5c2cd5['push'](_0x5c2cd5['shift']());}};_0x5180e9(++_0x1c2fbb);}(_0x56b3,0x98));var _0x356b=function(_0x4e0359,_0x205155){_0x4e0359=_0x4e0359-0x0;var _0x450f0a=_0x56b3[_0x4e0359];return _0x450f0a;};'use strict';var _=require(_0x356b('0x0'));var util=require(_0x356b('0x1'));var logger=require(_0x356b('0x2'))(_0x356b('0x3'));var moment=require('moment');var BPromise=require(_0x356b('0x4'));var rp=require(_0x356b('0x5'));var fs=require('fs');var path=require(_0x356b('0x6'));var rimraf=require(_0x356b('0x7'));var config=require('../../config/environment');var attributes=require(_0x356b('0x8'));module['exports']=function(_0x6bc963,_0x7a60d8){return _0x6bc963[_0x356b('0x9')](_0x356b('0xa'),attributes,{'tableName':_0x356b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf39a=['lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','define','ZohoConfiguration'];(function(_0x2a930e,_0x32eca8){var _0x3b3138=function(_0x313abc){while(--_0x313abc){_0x2a930e['push'](_0x2a930e['shift']());}};_0x3b3138(++_0x32eca8);}(_0xf39a,0x90));var _0xaf39=function(_0x4b12c9,_0x5a8f8b){_0x4b12c9=_0x4b12c9-0x0;var _0x17017d=_0xf39a[_0x4b12c9];return _0x17017d;};'use strict';var _=require(_0xaf39('0x0'));var util=require(_0xaf39('0x1'));var logger=require(_0xaf39('0x2'))(_0xaf39('0x3'));var moment=require(_0xaf39('0x4'));var BPromise=require('bluebird');var rp=require(_0xaf39('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaf39('0x6'));var config=require(_0xaf39('0x7'));var attributes=require(_0xaf39('0x8'));module[_0xaf39('0x9')]=function(_0x10a902,_0x537bbc){return _0x10a902[_0xaf39('0xa')](_0xaf39('0xb'),attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3f88c18..67735cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4862=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis'];(function(_0x29593f,_0x3c0747){var _0x395708=function(_0x4e339d){while(--_0x4e339d){_0x29593f['push'](_0x29593f['shift']());}};_0x395708(++_0x3c0747);}(_0x4862,0xb3));var _0x2486=function(_0x38fb0d,_0x52b5db){_0x38fb0d=_0x38fb0d-0x0;var _0x30a5d6=_0x4862[_0x38fb0d];return _0x30a5d6;};'use strict';var _=require(_0x2486('0x0'));var util=require(_0x2486('0x1'));var moment=require('moment');var BPromise=require(_0x2486('0x2'));var rs=require(_0x2486('0x3'));var fs=require('fs');var Redis=require(_0x2486('0x4'));var db=require(_0x2486('0x5'))['db'];var utils=require(_0x2486('0x6'));var logger=require(_0x2486('0x7'))(_0x2486('0x8'));var config=require(_0x2486('0x9'));var jayson=require(_0x2486('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x568385,_0x5a7940,_0x421e7b){return new BPromise(function(_0x401525,_0x118f7f){return client[_0x2486('0xb')](_0x568385,_0x421e7b)[_0x2486('0xc')](function(_0x286a32){logger[_0x2486('0xd')](_0x2486('0xe'),_0x5a7940,_0x2486('0xf'));logger['debug'](_0x2486('0x10'),_0x5a7940,_0x2486('0xf'),JSON[_0x2486('0x11')](_0x286a32));if(_0x286a32['error']){if(_0x286a32[_0x2486('0x12')][_0x2486('0x13')]===0x1f4){logger['error'](_0x2486('0xe'),_0x5a7940,_0x286a32[_0x2486('0x12')]['message']);return _0x118f7f(_0x286a32[_0x2486('0x12')]['message']);}logger[_0x2486('0x12')](_0x2486('0xe'),_0x5a7940,_0x286a32[_0x2486('0x12')][_0x2486('0x14')]);return _0x401525(_0x286a32[_0x2486('0x12')][_0x2486('0x14')]);}else{logger[_0x2486('0xd')](_0x2486('0xe'),_0x5a7940,_0x2486('0xf'));_0x401525(_0x286a32[_0x2486('0x15')]['message']);}})[_0x2486('0x16')](function(_0x36a7f0){logger[_0x2486('0x12')]('ZohoConfiguration,\x20%s,\x20%s',_0x5a7940,_0x36a7f0);_0x118f7f(_0x36a7f0);});});}
\ No newline at end of file
+var _0xe21d=['rpc','../../config/environment','http','request','then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','ZohoConfiguration,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x25173f,_0xc4ff69){var _0x5f4e6c=function(_0x56bdbc){while(--_0x56bdbc){_0x25173f['push'](_0x25173f['shift']());}};_0x5f4e6c(++_0xc4ff69);}(_0xe21d,0x15d));var _0xde21=function(_0x2f7625,_0x284e2d){_0x2f7625=_0x2f7625-0x0;var _0x8497f5=_0xe21d[_0x2f7625];return _0x8497f5;};'use strict';var _=require(_0xde21('0x0'));var util=require(_0xde21('0x1'));var moment=require('moment');var BPromise=require(_0xde21('0x2'));var rs=require(_0xde21('0x3'));var fs=require('fs');var Redis=require(_0xde21('0x4'));var db=require(_0xde21('0x5'))['db'];var utils=require(_0xde21('0x6'));var logger=require(_0xde21('0x7'))(_0xde21('0x8'));var config=require(_0xde21('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xde21('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x58a794,_0x2120d0,_0x53f11e){return new BPromise(function(_0x55b9d1,_0xc438dc){return client[_0xde21('0xb')](_0x58a794,_0x53f11e)[_0xde21('0xc')](function(_0x44233d){logger[_0xde21('0xd')](_0xde21('0xe'),_0x2120d0,_0xde21('0xf'));logger['debug'](_0xde21('0x10'),_0x2120d0,_0xde21('0xf'),JSON['stringify'](_0x44233d));if(_0x44233d['error']){if(_0x44233d[_0xde21('0x11')]['code']===0x1f4){logger[_0xde21('0x11')](_0xde21('0xe'),_0x2120d0,_0x44233d[_0xde21('0x11')][_0xde21('0x12')]);return _0xc438dc(_0x44233d[_0xde21('0x11')][_0xde21('0x12')]);}logger[_0xde21('0x11')]('ZohoConfiguration,\x20%s,\x20%s',_0x2120d0,_0x44233d[_0xde21('0x11')][_0xde21('0x12')]);return _0x55b9d1(_0x44233d[_0xde21('0x11')][_0xde21('0x12')]);}else{logger[_0xde21('0xd')]('ZohoConfiguration,\x20%s,\x20%s',_0x2120d0,'request\x20sent');_0x55b9d1(_0x44233d[_0xde21('0x13')]['message']);}})[_0xde21('0x14')](function(_0xf3ac80){logger[_0xde21('0x11')](_0xde21('0xe'),_0x2120d0,_0xf3ac80);_0xc438dc(_0xf3ac80);});});}
\ No newline at end of file
index 8c5b7be..6c1b242 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83eb=['show','post','create','put','update','exports','multer','util','path','connect-timeout','express','Router','./intZohoField.controller','get','isAuthenticated','index','/:id'];(function(_0x710cf0,_0x2dee3c){var _0x2fb53f=function(_0x47968c){while(--_0x47968c){_0x710cf0['push'](_0x710cf0['shift']());}};_0x2fb53f(++_0x2dee3c);}(_0x83eb,0x138));var _0xb83e=function(_0x38cf98,_0x402a89){_0x38cf98=_0x38cf98-0x0;var _0xfb2676=_0x83eb[_0x38cf98];return _0xfb2676;};'use strict';var multer=require(_0xb83e('0x0'));var util=require(_0xb83e('0x1'));var path=require(_0xb83e('0x2'));var timeout=require(_0xb83e('0x3'));var express=require(_0xb83e('0x4'));var router=express[_0xb83e('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xb83e('0x6'));router[_0xb83e('0x7')]('/',auth[_0xb83e('0x8')](),controller[_0xb83e('0x9')]);router[_0xb83e('0x7')](_0xb83e('0xa'),auth[_0xb83e('0x8')](),controller[_0xb83e('0xb')]);router[_0xb83e('0xc')]('/',auth[_0xb83e('0x8')](),controller[_0xb83e('0xd')]);router[_0xb83e('0xe')]('/:id',auth[_0xb83e('0x8')](),controller[_0xb83e('0xf')]);router['delete'](_0xb83e('0xa'),auth[_0xb83e('0x8')](),controller['destroy']);module[_0xb83e('0x10')]=router;
\ No newline at end of file
+var _0x6c2d=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','index','/:id','show','post','isAuthenticated','create','put','update','delete','destroy','connect-timeout'];(function(_0x5ee6f3,_0x4cf046){var _0xa0a711=function(_0x52553f){while(--_0x52553f){_0x5ee6f3['push'](_0x5ee6f3['shift']());}};_0xa0a711(++_0x4cf046);}(_0x6c2d,0xb3));var _0xd6c2=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0x6c2d[_0x220dbb];return _0x2b77de;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xd6c2('0x0'));var express=require(_0xd6c2('0x1'));var router=express['Router']();var fs_extra=require(_0xd6c2('0x2'));var auth=require(_0xd6c2('0x3'));var interaction=require(_0xd6c2('0x4'));var config=require(_0xd6c2('0x5'));var controller=require(_0xd6c2('0x6'));router[_0xd6c2('0x7')]('/',auth['isAuthenticated'](),controller[_0xd6c2('0x8')]);router[_0xd6c2('0x7')](_0xd6c2('0x9'),auth['isAuthenticated'](),controller[_0xd6c2('0xa')]);router[_0xd6c2('0xb')]('/',auth[_0xd6c2('0xc')](),controller[_0xd6c2('0xd')]);router[_0xd6c2('0xe')](_0xd6c2('0x9'),auth[_0xd6c2('0xc')](),controller[_0xd6c2('0xf')]);router[_0xd6c2('0x10')](_0xd6c2('0x9'),auth['isAuthenticated'](),controller[_0xd6c2('0x11')]);module['exports']=router;
\ No newline at end of file
index 0605f7c..af9f06f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecf4=['picklist','STRING','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0x180356,_0x4b355d){var _0x3ac99a=function(_0xbc8bbe){while(--_0xbc8bbe){_0x180356['push'](_0x180356['shift']());}};_0x3ac99a(++_0x4b355d);}(_0xecf4,0x19a));var _0x4ecf=function(_0x260b48,_0x117977){_0x260b48=_0x260b48-0x0;var _0x3f730b=_0xecf4[_0x260b48];return _0x3f730b;};'use strict';var Sequelize=require(_0x4ecf('0x0'));module[_0x4ecf('0x1')]={'type':{'type':Sequelize[_0x4ecf('0x2')](_0x4ecf('0x3'),_0x4ecf('0x4'),_0x4ecf('0x5'),'keyValue',_0x4ecf('0x6')),'defaultValue':_0x4ecf('0x3')},'content':{'type':Sequelize[_0x4ecf('0x7')]},'key':{'type':Sequelize[_0x4ecf('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x4ecf('0x3'),_0x4ecf('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0x4ecf('0x7')]},'idField':{'type':Sequelize[_0x4ecf('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4ecf('0x7')]}};
\ No newline at end of file
+var _0x0778=['keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0x211fef,_0x4ab716){var _0x5447bf=function(_0x306ea3){while(--_0x306ea3){_0x211fef['push'](_0x211fef['shift']());}};_0x5447bf(++_0x4ab716);}(_0x0778,0x1da));var _0x8077=function(_0x3156ec,_0x18ffd2){_0x3156ec=_0x3156ec-0x0;var _0x4b43da=_0x0778[_0x3156ec];return _0x4b43da;};'use strict';var Sequelize=require(_0x8077('0x0'));module[_0x8077('0x1')]={'type':{'type':Sequelize[_0x8077('0x2')](_0x8077('0x3'),_0x8077('0x4'),_0x8077('0x5'),_0x8077('0x6'),_0x8077('0x7')),'defaultValue':_0x8077('0x3')},'content':{'type':Sequelize[_0x8077('0x8')]},'key':{'type':Sequelize[_0x8077('0x8')]},'keyType':{'type':Sequelize[_0x8077('0x2')]('string',_0x8077('0x4'),_0x8077('0x5'))},'keyContent':{'type':Sequelize[_0x8077('0x8')]},'idField':{'type':Sequelize[_0x8077('0x8')]},'nameField':{'type':Sequelize[_0x8077('0x8')]},'customField':{'type':Sequelize[_0x8077('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8077('0x8')]}};
\ No newline at end of file
index 137c2d8..3ca4a77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56cc=['util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','count','limit','Content-Range','apply','update','then','destroy','error','stack','name','map','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ZohoField','includeAll','catch','show','intersection','length','include','create','body','find','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x51a4f8,_0x18d3d7){var _0x183d02=function(_0x28d818){while(--_0x28d818){_0x51a4f8['push'](_0x51a4f8['shift']());}};_0x183d02(++_0x18d3d7);}(_0x56cc,0x161));var _0xc56c=function(_0x5759c6,_0x16b309){_0x5759c6=_0x5759c6-0x0;var _0x1836f1=_0x56cc[_0x5759c6];return _0x1836f1;};'use strict';var emlformat=require(_0xc56c('0x0'));var rimraf=require(_0xc56c('0x1'));var zipdir=require(_0xc56c('0x2'));var jsonpatch=require(_0xc56c('0x3'));var rp=require('request-promise');var moment=require(_0xc56c('0x4'));var BPromise=require(_0xc56c('0x5'));var Mustache=require(_0xc56c('0x6'));var util=require(_0xc56c('0x7'));var path=require(_0xc56c('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc56c('0x9'));var fs=require('fs');var fs_extra=require(_0xc56c('0xa'));var _=require(_0xc56c('0xb'));var squel=require(_0xc56c('0xc'));var crypto=require(_0xc56c('0xd'));var jsforce=require(_0xc56c('0xe'));var deskjs=require(_0xc56c('0xf'));var toCsv=require(_0xc56c('0x10'));var querystring=require('querystring');var Papa=require(_0xc56c('0x11'));var Redis=require(_0xc56c('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xc56c('0x13'));var as=require(_0xc56c('0x14'));var hardwareService=require(_0xc56c('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xc56c('0x16'));var config=require(_0xc56c('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xc56c('0x18'))['db'];function respondWithStatusCode(_0x244cd0,_0x2b7bbd){_0x2b7bbd=_0x2b7bbd||0xcc;return function(_0x108717){if(_0x108717){return _0x244cd0[_0xc56c('0x19')](_0x2b7bbd);}return _0x244cd0[_0xc56c('0x1a')](_0x2b7bbd)[_0xc56c('0x1b')]();};}function respondWithResult(_0x3529e5,_0x183ec1){_0x183ec1=_0x183ec1||0xc8;return function(_0x422c49){if(_0x422c49){return _0x3529e5[_0xc56c('0x1a')](_0x183ec1)[_0xc56c('0x1c')](_0x422c49);}};}function respondWithFilteredResult(_0x47de85,_0x1f7ca6){return function(_0x61b04b){if(_0x61b04b){var _0x20694f=typeof _0x1f7ca6[_0xc56c('0x1d')]==='undefined'&&typeof _0x1f7ca6['limit']==='undefined';var _0x329b50=_0x61b04b[_0xc56c('0x1e')];var _0x464e67=_0x20694f?0x0:_0x1f7ca6['offset'];var _0x506fd3=_0x20694f?_0x61b04b[_0xc56c('0x1e')]:_0x1f7ca6[_0xc56c('0x1d')]+_0x1f7ca6[_0xc56c('0x1f')];var _0x32e997;if(_0x506fd3>=_0x329b50){_0x506fd3=_0x329b50;_0x32e997=0xc8;}else{_0x32e997=0xce;}_0x47de85[_0xc56c('0x1a')](_0x32e997);return _0x47de85['set'](_0xc56c('0x20'),_0x464e67+'-'+_0x506fd3+'/'+_0x329b50)[_0xc56c('0x1c')](_0x61b04b);}return null;};}function patchUpdates(_0x580c3a){return function(_0x26b0ff){try{jsonpatch[_0xc56c('0x21')](_0x26b0ff,_0x580c3a,!![]);}catch(_0x58e334){return BPromise['reject'](_0x58e334);}return _0x26b0ff['save']();};}function saveUpdates(_0x72db90,_0x2b218f){return function(_0x1ec7f0){if(_0x1ec7f0){return _0x1ec7f0[_0xc56c('0x22')](_0x72db90)[_0xc56c('0x23')](function(_0x191b63){return _0x191b63;});}return null;};}function removeEntity(_0x4573c7,_0x335f7f){return function(_0x5f1dd3){if(_0x5f1dd3){return _0x5f1dd3[_0xc56c('0x24')]()['then'](function(){_0x4573c7['status'](0xcc)[_0xc56c('0x1b')]();});}};}function handleEntityNotFound(_0x1a3e45,_0x4839cd){return function(_0x18e403){if(!_0x18e403){_0x1a3e45[_0xc56c('0x19')](0x194);}return _0x18e403;};}function handleError(_0x43ad08,_0x18cbd6){_0x18cbd6=_0x18cbd6||0x1f4;return function(_0x50fcec){logger[_0xc56c('0x25')](_0x50fcec[_0xc56c('0x26')]);if(_0x50fcec[_0xc56c('0x27')]){delete _0x50fcec[_0xc56c('0x27')];}_0x43ad08[_0xc56c('0x1a')](_0x18cbd6)['send'](_0x50fcec);};}exports['index']=function(_0x2b47f8,_0x495100){var _0x2c6da5={},_0x24787f={},_0x24d442={'count':0x0,'rows':[]};var _0x3e63b2=_[_0xc56c('0x28')](db['ZohoField'][_0xc56c('0x29')],function(_0x386890){return{'name':_0x386890[_0xc56c('0x2a')],'type':_0x386890[_0xc56c('0x2b')][_0xc56c('0x2c')]};});_0x24787f[_0xc56c('0x2d')]=_[_0xc56c('0x28')](_0x3e63b2,_0xc56c('0x27'));_0x24787f['query']=_[_0xc56c('0x2e')](_0x2b47f8[_0xc56c('0x2f')]);_0x24787f[_0xc56c('0x30')]=_['intersection'](_0x24787f[_0xc56c('0x2d')],_0x24787f[_0xc56c('0x2f')]);_0x2c6da5[_0xc56c('0x31')]=_['intersection'](_0x24787f[_0xc56c('0x2d')],qs['fields'](_0x2b47f8[_0xc56c('0x2f')][_0xc56c('0x32')]));_0x2c6da5['attributes']=_0x2c6da5[_0xc56c('0x31')]['length']?_0x2c6da5[_0xc56c('0x31')]:_0x24787f[_0xc56c('0x2d')];if(!_0x2b47f8['query'][_0xc56c('0x33')](_0xc56c('0x34'))){_0x2c6da5[_0xc56c('0x1f')]=qs[_0xc56c('0x1f')](_0x2b47f8[_0xc56c('0x2f')][_0xc56c('0x1f')]);_0x2c6da5[_0xc56c('0x1d')]=qs[_0xc56c('0x1d')](_0x2b47f8['query'][_0xc56c('0x1d')]);}_0x2c6da5[_0xc56c('0x35')]=qs[_0xc56c('0x36')](_0x2b47f8['query'][_0xc56c('0x36')]);_0x2c6da5[_0xc56c('0x37')]=qs[_0xc56c('0x30')](_[_0xc56c('0x38')](_0x2b47f8[_0xc56c('0x2f')],_0x24787f[_0xc56c('0x30')]),_0x3e63b2);if(_0x2b47f8[_0xc56c('0x2f')][_0xc56c('0x39')]){_0x2c6da5['where']=_[_0xc56c('0x3a')](_0x2c6da5['where'],{'$or':_['map'](_0x3e63b2,function(_0x31f5b6){if(_0x31f5b6['type']!==_0xc56c('0x3b')){var _0x530bd2={};_0x530bd2[_0x31f5b6[_0xc56c('0x27')]]={'$like':'%'+_0x2b47f8[_0xc56c('0x2f')]['filter']+'%'};return _0x530bd2;}})});}_0x2c6da5=_[_0xc56c('0x3a')]({},_0x2c6da5,_0x2b47f8[_0xc56c('0x3c')]);var _0x4466e5={'where':_0x2c6da5['where']};return db[_0xc56c('0x3d')][_0xc56c('0x1e')](_0x4466e5)[_0xc56c('0x23')](function(_0x2b1611){_0x24d442[_0xc56c('0x1e')]=_0x2b1611;if(_0x2b47f8['query'][_0xc56c('0x3e')]){_0x2c6da5['include']=[{'all':!![]}];}return db['ZohoField']['findAll'](_0x2c6da5);})['then'](function(_0x22be40){_0x24d442['rows']=_0x22be40;return _0x24d442;})[_0xc56c('0x23')](respondWithFilteredResult(_0x495100,_0x2c6da5))[_0xc56c('0x3f')](handleError(_0x495100,null));};exports[_0xc56c('0x40')]=function(_0x3c8fcb,_0x52c851){var _0x205392={'raw':!![],'where':{'id':_0x3c8fcb['params']['id']}},_0xb9d611={};_0xb9d611[_0xc56c('0x2d')]=_['keys'](db[_0xc56c('0x3d')]['rawAttributes']);_0xb9d611[_0xc56c('0x2f')]=_[_0xc56c('0x2e')](_0x3c8fcb[_0xc56c('0x2f')]);_0xb9d611[_0xc56c('0x30')]=_[_0xc56c('0x41')](_0xb9d611['model'],_0xb9d611[_0xc56c('0x2f')]);_0x205392['attributes']=_['intersection'](_0xb9d611[_0xc56c('0x2d')],qs['fields'](_0x3c8fcb[_0xc56c('0x2f')][_0xc56c('0x32')]));_0x205392[_0xc56c('0x31')]=_0x205392[_0xc56c('0x31')][_0xc56c('0x42')]?_0x205392['attributes']:_0xb9d611['model'];if(_0x3c8fcb[_0xc56c('0x2f')]['includeAll']){_0x205392[_0xc56c('0x43')]=[{'all':!![]}];}_0x205392=_[_0xc56c('0x3a')]({},_0x205392,_0x3c8fcb[_0xc56c('0x3c')]);return db[_0xc56c('0x3d')]['find'](_0x205392)[_0xc56c('0x23')](handleEntityNotFound(_0x52c851,null))['then'](respondWithResult(_0x52c851,null))['catch'](handleError(_0x52c851,null));};exports['create']=function(_0x5162cd,_0x2cf5aa){return db[_0xc56c('0x3d')][_0xc56c('0x44')](_0x5162cd[_0xc56c('0x45')],{})[_0xc56c('0x23')](respondWithResult(_0x2cf5aa,0xc9))['catch'](handleError(_0x2cf5aa,null));};exports[_0xc56c('0x22')]=function(_0x38b0f1,_0x40cac2){if(_0x38b0f1[_0xc56c('0x45')]['id']){delete _0x38b0f1[_0xc56c('0x45')]['id'];}return db['ZohoField'][_0xc56c('0x46')]({'where':{'id':_0x38b0f1[_0xc56c('0x47')]['id']}})[_0xc56c('0x23')](handleEntityNotFound(_0x40cac2,null))[_0xc56c('0x23')](saveUpdates(_0x38b0f1[_0xc56c('0x45')],null))[_0xc56c('0x23')](respondWithResult(_0x40cac2,null))[_0xc56c('0x3f')](handleError(_0x40cac2,null));};exports[_0xc56c('0x24')]=function(_0x41652c,_0x49f31e){return db[_0xc56c('0x3d')][_0xc56c('0x46')]({'where':{'id':_0x41652c[_0xc56c('0x47')]['id']}})[_0xc56c('0x23')](handleEntityNotFound(_0x49f31e,null))['then'](removeEntity(_0x49f31e,null))[_0xc56c('0x3f')](handleError(_0x49f31e,null));};
\ No newline at end of file
+var _0x4d7c=['fields','length','sort','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','show','params','find','catch','create','body','update','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','save','then','error','name','map','ZohoField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes'];(function(_0x5ad16d,_0x420971){var _0x2fd008=function(_0x5208d7){while(--_0x5208d7){_0x5ad16d['push'](_0x5ad16d['shift']());}};_0x2fd008(++_0x420971);}(_0x4d7c,0x1ef));var _0xc4d7=function(_0x107c61,_0x59a34e){_0x107c61=_0x107c61-0x0;var _0x566551=_0x4d7c[_0x107c61];return _0x566551;};'use strict';var emlformat=require(_0xc4d7('0x0'));var rimraf=require(_0xc4d7('0x1'));var zipdir=require(_0xc4d7('0x2'));var jsonpatch=require(_0xc4d7('0x3'));var rp=require(_0xc4d7('0x4'));var moment=require(_0xc4d7('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc4d7('0x6'));var path=require(_0xc4d7('0x7'));var sox=require(_0xc4d7('0x8'));var csv=require(_0xc4d7('0x9'));var ejs=require(_0xc4d7('0xa'));var fs=require('fs');var fs_extra=require(_0xc4d7('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc4d7('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xc4d7('0xd'));var toCsv=require(_0xc4d7('0x9'));var querystring=require(_0xc4d7('0xe'));var Papa=require(_0xc4d7('0xf'));var Redis=require(_0xc4d7('0x10'));var authService=require(_0xc4d7('0x11'));var qs=require(_0xc4d7('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc4d7('0x13'));var logger=require('../../config/logger')(_0xc4d7('0x14'));var utils=require(_0xc4d7('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xc4d7('0x16'));var db=require(_0xc4d7('0x17'))['db'];function respondWithStatusCode(_0x4f50ea,_0x4f4467){_0x4f4467=_0x4f4467||0xcc;return function(_0x309ad7){if(_0x309ad7){return _0x4f50ea[_0xc4d7('0x18')](_0x4f4467);}return _0x4f50ea[_0xc4d7('0x19')](_0x4f4467)[_0xc4d7('0x1a')]();};}function respondWithResult(_0x559a49,_0x2f9010){_0x2f9010=_0x2f9010||0xc8;return function(_0x574523){if(_0x574523){return _0x559a49[_0xc4d7('0x19')](_0x2f9010)[_0xc4d7('0x1b')](_0x574523);}};}function respondWithFilteredResult(_0x52b5aa,_0x4b023a){return function(_0x3f235d){if(_0x3f235d){var _0x12a0d1=typeof _0x4b023a['offset']==='undefined'&&typeof _0x4b023a[_0xc4d7('0x1c')]===_0xc4d7('0x1d');var _0x1cfbaa=_0x3f235d[_0xc4d7('0x1e')];var _0x3f4a34=_0x12a0d1?0x0:_0x4b023a['offset'];var _0x2317e1=_0x12a0d1?_0x3f235d[_0xc4d7('0x1e')]:_0x4b023a[_0xc4d7('0x1f')]+_0x4b023a[_0xc4d7('0x1c')];var _0xbca3cb;if(_0x2317e1>=_0x1cfbaa){_0x2317e1=_0x1cfbaa;_0xbca3cb=0xc8;}else{_0xbca3cb=0xce;}_0x52b5aa[_0xc4d7('0x19')](_0xbca3cb);return _0x52b5aa['set'](_0xc4d7('0x20'),_0x3f4a34+'-'+_0x2317e1+'/'+_0x1cfbaa)['json'](_0x3f235d);}return null;};}function patchUpdates(_0x5cb8f2){return function(_0xa94a75){try{jsonpatch['apply'](_0xa94a75,_0x5cb8f2,!![]);}catch(_0x16bc32){return BPromise['reject'](_0x16bc32);}return _0xa94a75[_0xc4d7('0x21')]();};}function saveUpdates(_0x5d3dd1,_0x401532){return function(_0xeb8f36){if(_0xeb8f36){return _0xeb8f36['update'](_0x5d3dd1)[_0xc4d7('0x22')](function(_0x5b744b){return _0x5b744b;});}return null;};}function removeEntity(_0x5dec26,_0x5370b7){return function(_0x3c93fe){if(_0x3c93fe){return _0x3c93fe['destroy']()[_0xc4d7('0x22')](function(){_0x5dec26[_0xc4d7('0x19')](0xcc)[_0xc4d7('0x1a')]();});}};}function handleEntityNotFound(_0x2893af,_0x17894d){return function(_0x250c59){if(!_0x250c59){_0x2893af['sendStatus'](0x194);}return _0x250c59;};}function handleError(_0x306e49,_0x374ec1){_0x374ec1=_0x374ec1||0x1f4;return function(_0x306c72){logger[_0xc4d7('0x23')](_0x306c72['stack']);if(_0x306c72[_0xc4d7('0x24')]){delete _0x306c72['name'];}_0x306e49[_0xc4d7('0x19')](_0x374ec1)['send'](_0x306c72);};}exports['index']=function(_0x13579f,_0x46818a){var _0x2d9778={},_0x4bda8e={},_0xa45fd8={'count':0x0,'rows':[]};var _0x299799=_[_0xc4d7('0x25')](db[_0xc4d7('0x26')][_0xc4d7('0x27')],function(_0x2197a1){return{'name':_0x2197a1[_0xc4d7('0x28')],'type':_0x2197a1[_0xc4d7('0x29')][_0xc4d7('0x2a')]};});_0x4bda8e[_0xc4d7('0x2b')]=_[_0xc4d7('0x25')](_0x299799,_0xc4d7('0x24'));_0x4bda8e[_0xc4d7('0x2c')]=_[_0xc4d7('0x2d')](_0x13579f[_0xc4d7('0x2c')]);_0x4bda8e[_0xc4d7('0x2e')]=_[_0xc4d7('0x2f')](_0x4bda8e[_0xc4d7('0x2b')],_0x4bda8e[_0xc4d7('0x2c')]);_0x2d9778[_0xc4d7('0x30')]=_[_0xc4d7('0x2f')](_0x4bda8e[_0xc4d7('0x2b')],qs[_0xc4d7('0x31')](_0x13579f[_0xc4d7('0x2c')][_0xc4d7('0x31')]));_0x2d9778[_0xc4d7('0x30')]=_0x2d9778[_0xc4d7('0x30')][_0xc4d7('0x32')]?_0x2d9778[_0xc4d7('0x30')]:_0x4bda8e['model'];if(!_0x13579f[_0xc4d7('0x2c')]['hasOwnProperty']('nolimit')){_0x2d9778[_0xc4d7('0x1c')]=qs[_0xc4d7('0x1c')](_0x13579f[_0xc4d7('0x2c')][_0xc4d7('0x1c')]);_0x2d9778['offset']=qs[_0xc4d7('0x1f')](_0x13579f[_0xc4d7('0x2c')][_0xc4d7('0x1f')]);}_0x2d9778['order']=qs[_0xc4d7('0x33')](_0x13579f['query'][_0xc4d7('0x33')]);_0x2d9778['where']=qs[_0xc4d7('0x2e')](_['pick'](_0x13579f[_0xc4d7('0x2c')],_0x4bda8e[_0xc4d7('0x2e')]),_0x299799);if(_0x13579f[_0xc4d7('0x2c')][_0xc4d7('0x34')]){_0x2d9778[_0xc4d7('0x35')]=_[_0xc4d7('0x36')](_0x2d9778['where'],{'$or':_[_0xc4d7('0x25')](_0x299799,function(_0x12ad6b){if(_0x12ad6b[_0xc4d7('0x29')]!==_0xc4d7('0x37')){var _0x561614={};_0x561614[_0x12ad6b[_0xc4d7('0x24')]]={'$like':'%'+_0x13579f[_0xc4d7('0x2c')]['filter']+'%'};return _0x561614;}})});}_0x2d9778=_['merge']({},_0x2d9778,_0x13579f[_0xc4d7('0x38')]);var _0x552ce7={'where':_0x2d9778[_0xc4d7('0x35')]};return db[_0xc4d7('0x26')][_0xc4d7('0x1e')](_0x552ce7)['then'](function(_0x23a04a){_0xa45fd8[_0xc4d7('0x1e')]=_0x23a04a;if(_0x13579f['query'][_0xc4d7('0x39')]){_0x2d9778[_0xc4d7('0x3a')]=[{'all':!![]}];}return db['ZohoField'][_0xc4d7('0x3b')](_0x2d9778);})[_0xc4d7('0x22')](function(_0x35c5f0){_0xa45fd8['rows']=_0x35c5f0;return _0xa45fd8;})[_0xc4d7('0x22')](respondWithFilteredResult(_0x46818a,_0x2d9778))['catch'](handleError(_0x46818a,null));};exports[_0xc4d7('0x3c')]=function(_0xad530a,_0x50746a){var _0x1d6cf7={'raw':!![],'where':{'id':_0xad530a[_0xc4d7('0x3d')]['id']}},_0x3f6212={};_0x3f6212[_0xc4d7('0x2b')]=_['keys'](db[_0xc4d7('0x26')]['rawAttributes']);_0x3f6212[_0xc4d7('0x2c')]=_[_0xc4d7('0x2d')](_0xad530a[_0xc4d7('0x2c')]);_0x3f6212[_0xc4d7('0x2e')]=_[_0xc4d7('0x2f')](_0x3f6212[_0xc4d7('0x2b')],_0x3f6212['query']);_0x1d6cf7[_0xc4d7('0x30')]=_[_0xc4d7('0x2f')](_0x3f6212['model'],qs[_0xc4d7('0x31')](_0xad530a[_0xc4d7('0x2c')][_0xc4d7('0x31')]));_0x1d6cf7[_0xc4d7('0x30')]=_0x1d6cf7[_0xc4d7('0x30')][_0xc4d7('0x32')]?_0x1d6cf7['attributes']:_0x3f6212[_0xc4d7('0x2b')];if(_0xad530a['query'][_0xc4d7('0x39')]){_0x1d6cf7[_0xc4d7('0x3a')]=[{'all':!![]}];}_0x1d6cf7=_[_0xc4d7('0x36')]({},_0x1d6cf7,_0xad530a[_0xc4d7('0x38')]);return db['ZohoField'][_0xc4d7('0x3e')](_0x1d6cf7)['then'](handleEntityNotFound(_0x50746a,null))[_0xc4d7('0x22')](respondWithResult(_0x50746a,null))[_0xc4d7('0x3f')](handleError(_0x50746a,null));};exports[_0xc4d7('0x40')]=function(_0x21e44f,_0x1c92b6){return db[_0xc4d7('0x26')][_0xc4d7('0x40')](_0x21e44f[_0xc4d7('0x41')],{})[_0xc4d7('0x22')](respondWithResult(_0x1c92b6,0xc9))[_0xc4d7('0x3f')](handleError(_0x1c92b6,null));};exports[_0xc4d7('0x42')]=function(_0x152a74,_0x4713a5){if(_0x152a74[_0xc4d7('0x41')]['id']){delete _0x152a74[_0xc4d7('0x41')]['id'];}return db['ZohoField']['find']({'where':{'id':_0x152a74['params']['id']}})['then'](handleEntityNotFound(_0x4713a5,null))[_0xc4d7('0x22')](saveUpdates(_0x152a74[_0xc4d7('0x41')],null))[_0xc4d7('0x22')](respondWithResult(_0x4713a5,null))['catch'](handleError(_0x4713a5,null));};exports[_0xc4d7('0x43')]=function(_0x8b3685,_0x33e780){return db[_0xc4d7('0x26')][_0xc4d7('0x3e')]({'where':{'id':_0x8b3685[_0xc4d7('0x3d')]['id']}})[_0xc4d7('0x22')](handleEntityNotFound(_0x33e780,null))[_0xc4d7('0x22')](removeEntity(_0x33e780,null))[_0xc4d7('0x3f')](handleError(_0x33e780,null));};
\ No newline at end of file
index e130cb0..c169511 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['rimraf','../../config/environment','./intZohoField.attributes','exports','define','ZohoField','zoho_unique_index','idField','lodash','util','../../config/logger','api','request-promise','path'];(function(_0x2aedf5,_0x444926){var _0x32bd9d=function(_0x1a6a39){while(--_0x1a6a39){_0x2aedf5['push'](_0x2aedf5['shift']());}};_0x32bd9d(++_0x444926);}(_0x687b,0x14a));var _0xb687=function(_0x5da398,_0x13a526){_0x5da398=_0x5da398-0x0;var _0x4db43a=_0x687b[_0x5da398];return _0x4db43a;};'use strict';var _=require(_0xb687('0x0'));var util=require(_0xb687('0x1'));var logger=require(_0xb687('0x2'))(_0xb687('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb687('0x4'));var fs=require('fs');var path=require(_0xb687('0x5'));var rimraf=require(_0xb687('0x6'));var config=require(_0xb687('0x7'));var attributes=require(_0xb687('0x8'));module[_0xb687('0x9')]=function(_0x16ccf3,_0xf43a1f){return _0x16ccf3[_0xb687('0xa')](_0xb687('0xb'),attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[{'name':_0xb687('0xc'),'fields':[_0xb687('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x781d=['rimraf','../../config/environment','./intZohoField.attributes','exports','ZohoField','int_zoho_fields','zoho_unique_index','idField','lodash','util','moment','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x781d,0x14a));var _0xd781=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x781d[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0xd781('0x0'));var util=require(_0xd781('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xd781('0x2'));var BPromise=require(_0xd781('0x3'));var rp=require(_0xd781('0x4'));var fs=require('fs');var path=require(_0xd781('0x5'));var rimraf=require(_0xd781('0x6'));var config=require(_0xd781('0x7'));var attributes=require(_0xd781('0x8'));module[_0xd781('0x9')]=function(_0x830b,_0x2f98ee){return _0x830b['define'](_0xd781('0xa'),attributes,{'tableName':_0xd781('0xb'),'paranoid':![],'indexes':[{'name':_0xd781('0xc'),'fields':[_0xd781('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index b7c13ef..b49dbfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa379=['debug','stringify','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','ZohoField,\x20%s,\x20%s','request\x20sent'];(function(_0x196a6f,_0x475886){var _0x3be594=function(_0x57617e){while(--_0x57617e){_0x196a6f['push'](_0x196a6f['shift']());}};_0x3be594(++_0x475886);}(_0xa379,0x141));var _0x9a37=function(_0x52eec7,_0x2f294b){_0x52eec7=_0x52eec7-0x0;var _0x5f1443=_0xa379[_0x52eec7];return _0x5f1443;};'use strict';var _=require(_0x9a37('0x0'));var util=require(_0x9a37('0x1'));var moment=require(_0x9a37('0x2'));var BPromise=require('bluebird');var rs=require(_0x9a37('0x3'));var fs=require('fs');var Redis=require(_0x9a37('0x4'));var db=require(_0x9a37('0x5'))['db'];var utils=require(_0x9a37('0x6'));var logger=require(_0x9a37('0x7'))('rpc');var config=require(_0x9a37('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9a37('0x9')][_0x9a37('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b8e8a,_0x113b57,_0x2495b5){return new BPromise(function(_0x16dbc3,_0x2f1625){return client[_0x9a37('0xb')](_0x1b8e8a,_0x2495b5)['then'](function(_0x5d6b37){logger[_0x9a37('0xc')](_0x9a37('0xd'),_0x113b57,_0x9a37('0xe'));logger[_0x9a37('0xf')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x113b57,'request\x20sent',JSON[_0x9a37('0x10')](_0x5d6b37));if(_0x5d6b37[_0x9a37('0x11')]){if(_0x5d6b37[_0x9a37('0x11')][_0x9a37('0x12')]===0x1f4){logger[_0x9a37('0x11')]('ZohoField,\x20%s,\x20%s',_0x113b57,_0x5d6b37[_0x9a37('0x11')]['message']);return _0x2f1625(_0x5d6b37[_0x9a37('0x11')]['message']);}logger[_0x9a37('0x11')](_0x9a37('0xd'),_0x113b57,_0x5d6b37[_0x9a37('0x11')][_0x9a37('0x13')]);return _0x16dbc3(_0x5d6b37[_0x9a37('0x11')][_0x9a37('0x13')]);}else{logger[_0x9a37('0xc')](_0x9a37('0xd'),_0x113b57,_0x9a37('0xe'));_0x16dbc3(_0x5d6b37[_0x9a37('0x14')]['message']);}})['catch'](function(_0x3d10d8){logger['error']('ZohoField,\x20%s,\x20%s',_0x113b57,_0x3d10d8);_0x2f1625(_0x3d10d8);});});}
\ No newline at end of file
+var _0x1558=['request','then','info','ZohoField,\x20%s,\x20%s','debug','ZohoField,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x5a55ad,_0x97d3){var _0x123672=function(_0x1eccc2){while(--_0x1eccc2){_0x5a55ad['push'](_0x5a55ad['shift']());}};_0x123672(++_0x97d3);}(_0x1558,0x13f));var _0x8155=function(_0x2a55f8,_0x540ac4){_0x2a55f8=_0x2a55f8-0x0;var _0x245efd=_0x1558[_0x2a55f8];return _0x245efd;};'use strict';var _=require(_0x8155('0x0'));var util=require(_0x8155('0x1'));var moment=require(_0x8155('0x2'));var BPromise=require('bluebird');var rs=require(_0x8155('0x3'));var fs=require('fs');var Redis=require(_0x8155('0x4'));var db=require(_0x8155('0x5'))['db'];var utils=require(_0x8155('0x6'));var logger=require(_0x8155('0x7'))(_0x8155('0x8'));var config=require(_0x8155('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x8155('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2766d1,_0x2a131c,_0x3c36b8){return new BPromise(function(_0x2af661,_0x49a3a2){return client[_0x8155('0xb')](_0x2766d1,_0x3c36b8)[_0x8155('0xc')](function(_0x4a6caf){logger[_0x8155('0xd')](_0x8155('0xe'),_0x2a131c,'request\x20sent');logger[_0x8155('0xf')](_0x8155('0x10'),_0x2a131c,_0x8155('0x11'),JSON['stringify'](_0x4a6caf));if(_0x4a6caf[_0x8155('0x12')]){if(_0x4a6caf[_0x8155('0x12')][_0x8155('0x13')]===0x1f4){logger[_0x8155('0x12')]('ZohoField,\x20%s,\x20%s',_0x2a131c,_0x4a6caf['error'][_0x8155('0x14')]);return _0x49a3a2(_0x4a6caf['error'][_0x8155('0x14')]);}logger[_0x8155('0x12')](_0x8155('0xe'),_0x2a131c,_0x4a6caf[_0x8155('0x12')][_0x8155('0x14')]);return _0x2af661(_0x4a6caf[_0x8155('0x12')]['message']);}else{logger[_0x8155('0xd')](_0x8155('0xe'),_0x2a131c,_0x8155('0x11'));_0x2af661(_0x4a6caf['result'][_0x8155('0x14')]);}})[_0x8155('0x15')](function(_0x146084){logger[_0x8155('0x12')](_0x8155('0xe'),_0x2a131c,_0x146084);_0x49a3a2(_0x146084);});});}
\ No newline at end of file
index a8189c4..80b0e52 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(_0x21551a,_0x197297){var _0x338c7b=function(_0x4fa71a){while(--_0x4fa71a){_0x21551a['push'](_0x21551a['shift']());}};_0x338c7b(++_0x197297);}(_0xedd9,0xfc));var _0x9edd=function(_0x1d13c8,_0x1554e6){_0x1d13c8=_0x1d13c8-0x0;var _0x3a3b03=_0xedd9[_0x1d13c8];return _0x3a3b03;};'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 _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x1bd6ab,_0x588ae1){var _0x2567dc=function(_0x4c2585){while(--_0x4c2585){_0x1bd6ab['push'](_0x1bd6ab['shift']());}};_0x2567dc(++_0x588ae1);}(_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 6b4fcb1..5f9078c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf443=['state','sequelize','STRING','unique_name_and_version','app.js','INTEGER','BOOLEAN'];(function(_0x4e1d03,_0x786f3a){var _0x362d4b=function(_0x1924d2){while(--_0x1924d2){_0x4e1d03['push'](_0x4e1d03['shift']());}};_0x362d4b(++_0x786f3a);}(_0xf443,0x1c8));var _0x3f44=function(_0x45fa14,_0x581da9){_0x45fa14=_0x45fa14-0x0;var _0x26daa7=_0xf443[_0x45fa14];return _0x26daa7;};'use strict';var Sequelize=require(_0x3f44('0x0'));module['exports']={'name':{'type':Sequelize[_0x3f44('0x1')],'allowNull':![],'unique':_0x3f44('0x2')},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x3f44('0x2')},'main':{'type':Sequelize[_0x3f44('0x1')],'defaultValue':_0x3f44('0x3')},'filename':{'type':Sequelize[_0x3f44('0x1')]},'path':{'type':Sequelize[_0x3f44('0x1')]},'type':{'type':Sequelize[_0x3f44('0x1')]},'size':{'type':Sequelize[_0x3f44('0x4')]},'active':{'type':Sequelize[_0x3f44('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0x3f44('0x1')]},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0x3f44('0x1')],'unique':_0x3f44('0x6')},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize[_0x3f44('0x1')]},'remoteUri':{'type':Sequelize[_0x3f44('0x1')]},'link':{'type':Sequelize[_0x3f44('0x1')],'defaultValue':'#'}};
\ No newline at end of file
+var _0xf9ff=['sequelize','STRING','unique_name_and_version','BOOLEAN','state'];(function(_0x249fed,_0x12e915){var _0x3bbf75=function(_0x40f660){while(--_0x40f660){_0x249fed['push'](_0x249fed['shift']());}};_0x3bbf75(++_0x12e915);}(_0xf9ff,0x15e));var _0xff9f=function(_0x11ca63,_0xea9f9c){_0x11ca63=_0x11ca63-0x0;var _0x41f1f6=_0xf9ff[_0x11ca63];return _0x41f1f6;};'use strict';var Sequelize=require(_0xff9f('0x0'));module['exports']={'name':{'type':Sequelize[_0xff9f('0x1')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xff9f('0x2')},'main':{'type':Sequelize[_0xff9f('0x1')],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0xff9f('0x1')]},'path':{'type':Sequelize[_0xff9f('0x1')]},'type':{'type':Sequelize[_0xff9f('0x1')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0xff9f('0x3')],'defaultValue':![]},'author':{'type':Sequelize[_0xff9f('0x1')]},'logo':{'type':Sequelize[_0xff9f('0x1')]},'state':{'type':Sequelize[_0xff9f('0x1')],'unique':_0xff9f('0x4')},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize[_0xff9f('0x1')]},'remoteUri':{'type':Sequelize[_0xff9f('0x1')]},'link':{'type':Sequelize[_0xff9f('0x1')],'defaultValue':'#'}};
\ No newline at end of file
index d7755f4..d1e21ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcf0=['intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','filter','includeAll','include','catch','params','merge','options','create','body','find','eml-format','rimraf','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/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','update','then','destroy','error','stack','name','send','index','Integration','rawAttributes','fieldName','type','key','model','map','keys','query','filters'];(function(_0x1b2296,_0x12e22c){var _0x211edb=function(_0x4218d3){while(--_0x4218d3){_0x1b2296['push'](_0x1b2296['shift']());}};_0x211edb(++_0x12e22c);}(_0xfcf0,0x138));var _0x0fcf=function(_0x1780f8,_0x11ba93){_0x1780f8=_0x1780f8-0x0;var _0x33a410=_0xfcf0[_0x1780f8];return _0x33a410;};'use strict';var emlformat=require(_0x0fcf('0x0'));var rimraf=require(_0x0fcf('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0fcf('0x2'));var rp=require(_0x0fcf('0x3'));var moment=require(_0x0fcf('0x4'));var BPromise=require(_0x0fcf('0x5'));var Mustache=require('mustache');var util=require(_0x0fcf('0x6'));var path=require(_0x0fcf('0x7'));var sox=require(_0x0fcf('0x8'));var csv=require(_0x0fcf('0x9'));var ejs=require(_0x0fcf('0xa'));var fs=require('fs');var fs_extra=require(_0x0fcf('0xb'));var _=require(_0x0fcf('0xc'));var squel=require(_0x0fcf('0xd'));var crypto=require('crypto');var jsforce=require(_0x0fcf('0xe'));var deskjs=require(_0x0fcf('0xf'));var toCsv=require(_0x0fcf('0x9'));var querystring=require('querystring');var Papa=require(_0x0fcf('0x10'));var Redis=require(_0x0fcf('0x11'));var authService=require(_0x0fcf('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x0fcf('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0fcf('0x14'))(_0x0fcf('0x15'));var utils=require(_0x0fcf('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0fcf('0x17'))['db'];function respondWithStatusCode(_0x3c999e,_0x4b4904){_0x4b4904=_0x4b4904||0xcc;return function(_0x20153d){if(_0x20153d){return _0x3c999e[_0x0fcf('0x18')](_0x4b4904);}return _0x3c999e[_0x0fcf('0x19')](_0x4b4904)[_0x0fcf('0x1a')]();};}function respondWithResult(_0x25fadc,_0x48bba6){_0x48bba6=_0x48bba6||0xc8;return function(_0xa32692){if(_0xa32692){return _0x25fadc[_0x0fcf('0x19')](_0x48bba6)[_0x0fcf('0x1b')](_0xa32692);}};}function respondWithFilteredResult(_0x5e867f,_0x3c09c4){return function(_0x610106){if(_0x610106){var _0x445207=typeof _0x3c09c4[_0x0fcf('0x1c')]==='undefined'&&typeof _0x3c09c4[_0x0fcf('0x1d')]===_0x0fcf('0x1e');var _0x1a8477=_0x610106[_0x0fcf('0x1f')];var _0x19cfbd=_0x445207?0x0:_0x3c09c4['offset'];var _0x18ea32=_0x445207?_0x610106[_0x0fcf('0x1f')]:_0x3c09c4['offset']+_0x3c09c4[_0x0fcf('0x1d')];var _0x1b9a90;if(_0x18ea32>=_0x1a8477){_0x18ea32=_0x1a8477;_0x1b9a90=0xc8;}else{_0x1b9a90=0xce;}_0x5e867f['status'](_0x1b9a90);return _0x5e867f[_0x0fcf('0x20')]('Content-Range',_0x19cfbd+'-'+_0x18ea32+'/'+_0x1a8477)[_0x0fcf('0x1b')](_0x610106);}return null;};}function patchUpdates(_0x13454e){return function(_0x5c8279){try{jsonpatch[_0x0fcf('0x21')](_0x5c8279,_0x13454e,!![]);}catch(_0x3f28d0){return BPromise[_0x0fcf('0x22')](_0x3f28d0);}return _0x5c8279['save']();};}function saveUpdates(_0x2f03ce,_0x1dafc8){return function(_0x196d30){if(_0x196d30){return _0x196d30[_0x0fcf('0x23')](_0x2f03ce)[_0x0fcf('0x24')](function(_0x30e1b0){return _0x30e1b0;});}return null;};}function removeEntity(_0x5841a9,_0x2eef74){return function(_0x253641){if(_0x253641){return _0x253641[_0x0fcf('0x25')]()[_0x0fcf('0x24')](function(){_0x5841a9[_0x0fcf('0x19')](0xcc)[_0x0fcf('0x1a')]();});}};}function handleEntityNotFound(_0x2ce990,_0x18f269){return function(_0x117510){if(!_0x117510){_0x2ce990['sendStatus'](0x194);}return _0x117510;};}function handleError(_0x18965e,_0xc107a){_0xc107a=_0xc107a||0x1f4;return function(_0x41b7a2){logger[_0x0fcf('0x26')](_0x41b7a2[_0x0fcf('0x27')]);if(_0x41b7a2[_0x0fcf('0x28')]){delete _0x41b7a2[_0x0fcf('0x28')];}_0x18965e['status'](_0xc107a)[_0x0fcf('0x29')](_0x41b7a2);};}exports[_0x0fcf('0x2a')]=function(_0x200517,_0x35180d){var _0x49fd0e={},_0x5d9bcd={},_0x4af80d={'count':0x0,'rows':[]};var _0x428194=_['map'](db[_0x0fcf('0x2b')][_0x0fcf('0x2c')],function(_0x56a416){return{'name':_0x56a416[_0x0fcf('0x2d')],'type':_0x56a416[_0x0fcf('0x2e')][_0x0fcf('0x2f')]};});_0x5d9bcd[_0x0fcf('0x30')]=_[_0x0fcf('0x31')](_0x428194,_0x0fcf('0x28'));_0x5d9bcd['query']=_[_0x0fcf('0x32')](_0x200517[_0x0fcf('0x33')]);_0x5d9bcd[_0x0fcf('0x34')]=_[_0x0fcf('0x35')](_0x5d9bcd[_0x0fcf('0x30')],_0x5d9bcd[_0x0fcf('0x33')]);_0x49fd0e['attributes']=_[_0x0fcf('0x35')](_0x5d9bcd[_0x0fcf('0x30')],qs[_0x0fcf('0x36')](_0x200517[_0x0fcf('0x33')][_0x0fcf('0x36')]));_0x49fd0e[_0x0fcf('0x37')]=_0x49fd0e[_0x0fcf('0x37')][_0x0fcf('0x38')]?_0x49fd0e[_0x0fcf('0x37')]:_0x5d9bcd[_0x0fcf('0x30')];if(!_0x200517[_0x0fcf('0x33')][_0x0fcf('0x39')](_0x0fcf('0x3a'))){_0x49fd0e[_0x0fcf('0x1d')]=qs['limit'](_0x200517['query'][_0x0fcf('0x1d')]);_0x49fd0e['offset']=qs['offset'](_0x200517[_0x0fcf('0x33')][_0x0fcf('0x1c')]);}_0x49fd0e[_0x0fcf('0x3b')]=qs['sort'](_0x200517['query'][_0x0fcf('0x3c')]);_0x49fd0e[_0x0fcf('0x3d')]=qs[_0x0fcf('0x34')](_['pick'](_0x200517[_0x0fcf('0x33')],_0x5d9bcd[_0x0fcf('0x34')]),_0x428194);if(_0x200517[_0x0fcf('0x33')]['filter']){_0x49fd0e['where']=_['merge'](_0x49fd0e[_0x0fcf('0x3d')],{'$or':_[_0x0fcf('0x31')](_0x428194,function(_0xdfdd1){if(_0xdfdd1[_0x0fcf('0x2e')]!==_0x0fcf('0x3e')){var _0x4be8eb={};_0x4be8eb[_0xdfdd1[_0x0fcf('0x28')]]={'$like':'%'+_0x200517[_0x0fcf('0x33')][_0x0fcf('0x3f')]+'%'};return _0x4be8eb;}})});}_0x49fd0e=_['merge']({},_0x49fd0e,_0x200517['options']);var _0x13e4b2={'where':_0x49fd0e[_0x0fcf('0x3d')]};return db[_0x0fcf('0x2b')][_0x0fcf('0x1f')](_0x13e4b2)[_0x0fcf('0x24')](function(_0x4c6669){_0x4af80d[_0x0fcf('0x1f')]=_0x4c6669;if(_0x200517[_0x0fcf('0x33')][_0x0fcf('0x40')]){_0x49fd0e[_0x0fcf('0x41')]=[{'all':!![]}];}return db['Integration']['findAll'](_0x49fd0e);})[_0x0fcf('0x24')](function(_0x2444a6){_0x4af80d['rows']=_0x2444a6;return _0x4af80d;})[_0x0fcf('0x24')](respondWithFilteredResult(_0x35180d,_0x49fd0e))[_0x0fcf('0x42')](handleError(_0x35180d,null));};exports['show']=function(_0x237fa6,_0xfc2f2b){var _0x44eb03={'raw':![],'where':{'id':_0x237fa6[_0x0fcf('0x43')]['id']}},_0x1f322b={};_0x1f322b['model']=_[_0x0fcf('0x32')](db[_0x0fcf('0x2b')]['rawAttributes']);_0x1f322b['query']=_[_0x0fcf('0x32')](_0x237fa6['query']);_0x1f322b['filters']=_[_0x0fcf('0x35')](_0x1f322b[_0x0fcf('0x30')],_0x1f322b[_0x0fcf('0x33')]);_0x44eb03[_0x0fcf('0x37')]=_[_0x0fcf('0x35')](_0x1f322b[_0x0fcf('0x30')],qs[_0x0fcf('0x36')](_0x237fa6[_0x0fcf('0x33')][_0x0fcf('0x36')]));_0x44eb03[_0x0fcf('0x37')]=_0x44eb03['attributes'][_0x0fcf('0x38')]?_0x44eb03[_0x0fcf('0x37')]:_0x1f322b[_0x0fcf('0x30')];if(_0x237fa6['query']['includeAll']){_0x44eb03[_0x0fcf('0x41')]=[{'all':!![]}];}_0x44eb03=_[_0x0fcf('0x44')]({},_0x44eb03,_0x237fa6[_0x0fcf('0x45')]);return db[_0x0fcf('0x2b')]['find'](_0x44eb03)['then'](handleEntityNotFound(_0xfc2f2b,null))[_0x0fcf('0x24')](respondWithResult(_0xfc2f2b,null))[_0x0fcf('0x42')](handleError(_0xfc2f2b,null));};exports[_0x0fcf('0x46')]=function(_0x1fb83d,_0x345188){return db[_0x0fcf('0x2b')][_0x0fcf('0x46')](_0x1fb83d[_0x0fcf('0x47')],{})['then'](respondWithResult(_0x345188,0xc9))['catch'](handleError(_0x345188,null));};exports[_0x0fcf('0x23')]=function(_0x243699,_0x28d2f4){if(_0x243699[_0x0fcf('0x47')]['id']){delete _0x243699[_0x0fcf('0x47')]['id'];}return db[_0x0fcf('0x2b')]['find']({'where':{'id':_0x243699[_0x0fcf('0x43')]['id']}})[_0x0fcf('0x24')](handleEntityNotFound(_0x28d2f4,null))['then'](saveUpdates(_0x243699[_0x0fcf('0x47')],null))[_0x0fcf('0x24')](respondWithResult(_0x28d2f4,null))[_0x0fcf('0x42')](handleError(_0x28d2f4,null));};exports[_0x0fcf('0x25')]=function(_0x5435c0,_0xc514bf){return db[_0x0fcf('0x2b')][_0x0fcf('0x48')]({'where':{'id':_0x5435c0[_0x0fcf('0x43')]['id']}})[_0x0fcf('0x24')](handleEntityNotFound(_0xc514bf,null))[_0x0fcf('0x24')](removeEntity(_0xc514bf,null))[_0x0fcf('0x42')](handleError(_0xc514bf,null));};
\ No newline at end of file
+var _0x4975=['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','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','name','fieldName','type','keys','query','filters','model','intersection','fields','attributes','length','hasOwnProperty','sort','pick','filter','where','map','VIRTUAL','options','Integration','count','includeAll','include','findAll','catch','show','params','rawAttributes','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0x35ac20,_0x4f1179){var _0x3f8a29=function(_0x57ebca){while(--_0x57ebca){_0x35ac20['push'](_0x35ac20['shift']());}};_0x3f8a29(++_0x4f1179);}(_0x4975,0x86));var _0x5497=function(_0x4fe4da,_0x101547){_0x4fe4da=_0x4fe4da-0x0;var _0x32c10a=_0x4975[_0x4fe4da];return _0x32c10a;};'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'];function respondWithStatusCode(_0x1b23df,_0x1bb794){_0x1bb794=_0x1bb794||0xcc;return function(_0x984990){if(_0x984990){return _0x1b23df[_0x5497('0x18')](_0x1bb794);}return _0x1b23df[_0x5497('0x19')](_0x1bb794)[_0x5497('0x1a')]();};}function respondWithResult(_0xaca97d,_0x363a5b){_0x363a5b=_0x363a5b||0xc8;return function(_0x1a4c74){if(_0x1a4c74){return _0xaca97d['status'](_0x363a5b)[_0x5497('0x1b')](_0x1a4c74);}};}function respondWithFilteredResult(_0x4fb8e9,_0x4237a9){return function(_0x2bfd8a){if(_0x2bfd8a){var _0x19e5f3=typeof _0x4237a9[_0x5497('0x1c')]===_0x5497('0x1d')&&typeof _0x4237a9[_0x5497('0x1e')]===_0x5497('0x1d');var _0x575f6b=_0x2bfd8a['count'];var _0x3f4d20=_0x19e5f3?0x0:_0x4237a9[_0x5497('0x1c')];var _0x3a47fd=_0x19e5f3?_0x2bfd8a['count']:_0x4237a9[_0x5497('0x1c')]+_0x4237a9[_0x5497('0x1e')];var _0x18e8a8;if(_0x3a47fd>=_0x575f6b){_0x3a47fd=_0x575f6b;_0x18e8a8=0xc8;}else{_0x18e8a8=0xce;}_0x4fb8e9[_0x5497('0x19')](_0x18e8a8);return _0x4fb8e9[_0x5497('0x1f')](_0x5497('0x20'),_0x3f4d20+'-'+_0x3a47fd+'/'+_0x575f6b)[_0x5497('0x1b')](_0x2bfd8a);}return null;};}function patchUpdates(_0x10226f){return function(_0x2e3960){try{jsonpatch[_0x5497('0x21')](_0x2e3960,_0x10226f,!![]);}catch(_0x186065){return BPromise['reject'](_0x186065);}return _0x2e3960[_0x5497('0x22')]();};}function saveUpdates(_0x4d1b27,_0x19200a){return function(_0xd0868d){if(_0xd0868d){return _0xd0868d[_0x5497('0x23')](_0x4d1b27)[_0x5497('0x24')](function(_0x35ecd9){return _0x35ecd9;});}return null;};}function removeEntity(_0x3b2fbc,_0x5018fa){return function(_0x54043a){if(_0x54043a){return _0x54043a[_0x5497('0x25')]()[_0x5497('0x24')](function(){_0x3b2fbc[_0x5497('0x19')](0xcc)[_0x5497('0x1a')]();});}};}function handleEntityNotFound(_0x5223b5,_0x13b7a4){return function(_0x57268c){if(!_0x57268c){_0x5223b5[_0x5497('0x18')](0x194);}return _0x57268c;};}function handleError(_0x16a2b4,_0x429d36){_0x429d36=_0x429d36||0x1f4;return function(_0x34a1a5){logger[_0x5497('0x26')](_0x34a1a5[_0x5497('0x27')]);if(_0x34a1a5['name']){delete _0x34a1a5[_0x5497('0x28')];}_0x16a2b4['status'](_0x429d36)['send'](_0x34a1a5);};}exports['index']=function(_0x39a2b7,_0x48d146){var _0x5e9356={},_0xc3465={},_0xb14593={'count':0x0,'rows':[]};var _0x1cf908=_['map'](db['Integration']['rawAttributes'],function(_0x371874){return{'name':_0x371874[_0x5497('0x29')],'type':_0x371874[_0x5497('0x2a')]['key']};});_0xc3465['model']=_['map'](_0x1cf908,_0x5497('0x28'));_0xc3465['query']=_[_0x5497('0x2b')](_0x39a2b7[_0x5497('0x2c')]);_0xc3465[_0x5497('0x2d')]=_['intersection'](_0xc3465[_0x5497('0x2e')],_0xc3465[_0x5497('0x2c')]);_0x5e9356['attributes']=_[_0x5497('0x2f')](_0xc3465[_0x5497('0x2e')],qs[_0x5497('0x30')](_0x39a2b7['query'][_0x5497('0x30')]));_0x5e9356[_0x5497('0x31')]=_0x5e9356[_0x5497('0x31')][_0x5497('0x32')]?_0x5e9356[_0x5497('0x31')]:_0xc3465['model'];if(!_0x39a2b7[_0x5497('0x2c')][_0x5497('0x33')]('nolimit')){_0x5e9356[_0x5497('0x1e')]=qs[_0x5497('0x1e')](_0x39a2b7[_0x5497('0x2c')][_0x5497('0x1e')]);_0x5e9356[_0x5497('0x1c')]=qs[_0x5497('0x1c')](_0x39a2b7['query'][_0x5497('0x1c')]);}_0x5e9356['order']=qs[_0x5497('0x34')](_0x39a2b7[_0x5497('0x2c')][_0x5497('0x34')]);_0x5e9356['where']=qs['filters'](_[_0x5497('0x35')](_0x39a2b7[_0x5497('0x2c')],_0xc3465[_0x5497('0x2d')]),_0x1cf908);if(_0x39a2b7[_0x5497('0x2c')][_0x5497('0x36')]){_0x5e9356[_0x5497('0x37')]=_['merge'](_0x5e9356[_0x5497('0x37')],{'$or':_[_0x5497('0x38')](_0x1cf908,function(_0x3de8fe){if(_0x3de8fe[_0x5497('0x2a')]!==_0x5497('0x39')){var _0x468902={};_0x468902[_0x3de8fe[_0x5497('0x28')]]={'$like':'%'+_0x39a2b7[_0x5497('0x2c')][_0x5497('0x36')]+'%'};return _0x468902;}})});}_0x5e9356=_['merge']({},_0x5e9356,_0x39a2b7[_0x5497('0x3a')]);var _0x32fa2b={'where':_0x5e9356[_0x5497('0x37')]};return db[_0x5497('0x3b')][_0x5497('0x3c')](_0x32fa2b)[_0x5497('0x24')](function(_0x4299be){_0xb14593['count']=_0x4299be;if(_0x39a2b7[_0x5497('0x2c')][_0x5497('0x3d')]){_0x5e9356[_0x5497('0x3e')]=[{'all':!![]}];}return db[_0x5497('0x3b')][_0x5497('0x3f')](_0x5e9356);})[_0x5497('0x24')](function(_0x114471){_0xb14593['rows']=_0x114471;return _0xb14593;})[_0x5497('0x24')](respondWithFilteredResult(_0x48d146,_0x5e9356))[_0x5497('0x40')](handleError(_0x48d146,null));};exports[_0x5497('0x41')]=function(_0x1e6389,_0x20e947){var _0xd90608={'raw':![],'where':{'id':_0x1e6389[_0x5497('0x42')]['id']}},_0xc1a999={};_0xc1a999[_0x5497('0x2e')]=_[_0x5497('0x2b')](db['Integration'][_0x5497('0x43')]);_0xc1a999['query']=_[_0x5497('0x2b')](_0x1e6389[_0x5497('0x2c')]);_0xc1a999[_0x5497('0x2d')]=_[_0x5497('0x2f')](_0xc1a999[_0x5497('0x2e')],_0xc1a999['query']);_0xd90608[_0x5497('0x31')]=_[_0x5497('0x2f')](_0xc1a999['model'],qs[_0x5497('0x30')](_0x1e6389['query'][_0x5497('0x30')]));_0xd90608['attributes']=_0xd90608[_0x5497('0x31')][_0x5497('0x32')]?_0xd90608[_0x5497('0x31')]:_0xc1a999[_0x5497('0x2e')];if(_0x1e6389[_0x5497('0x2c')]['includeAll']){_0xd90608['include']=[{'all':!![]}];}_0xd90608=_['merge']({},_0xd90608,_0x1e6389['options']);return db[_0x5497('0x3b')][_0x5497('0x44')](_0xd90608)[_0x5497('0x24')](handleEntityNotFound(_0x20e947,null))[_0x5497('0x24')](respondWithResult(_0x20e947,null))[_0x5497('0x40')](handleError(_0x20e947,null));};exports[_0x5497('0x45')]=function(_0xc78abe,_0x466287){return db[_0x5497('0x3b')]['create'](_0xc78abe[_0x5497('0x46')],{})[_0x5497('0x24')](respondWithResult(_0x466287,0xc9))[_0x5497('0x40')](handleError(_0x466287,null));};exports['update']=function(_0x3e4da2,_0x530475){if(_0x3e4da2[_0x5497('0x46')]['id']){delete _0x3e4da2[_0x5497('0x46')]['id'];}return db[_0x5497('0x3b')]['find']({'where':{'id':_0x3e4da2[_0x5497('0x42')]['id']}})[_0x5497('0x24')](handleEntityNotFound(_0x530475,null))['then'](saveUpdates(_0x3e4da2[_0x5497('0x46')],null))['then'](respondWithResult(_0x530475,null))[_0x5497('0x40')](handleError(_0x530475,null));};exports['destroy']=function(_0x416f76,_0x400860){return db[_0x5497('0x3b')][_0x5497('0x44')]({'where':{'id':_0x416f76[_0x5497('0x42')]['id']}})[_0x5497('0x24')](handleEntityNotFound(_0x400860,null))[_0x5497('0x24')](removeEntity(_0x400860,null))[_0x5497('0x40')](handleError(_0x400860,null));};
\ No newline at end of file
index 79891f6..8542312 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ff=['api','moment','bluebird','request-promise','./integration.attributes','exports','Integration','integrations','util','../../config/logger'];(function(_0x26f76b,_0x2ef6f7){var _0x123bf5=function(_0x24d2bb){while(--_0x24d2bb){_0x26f76b['push'](_0x26f76b['shift']());}};_0x123bf5(++_0x2ef6f7);}(_0x24ff,0xb2));var _0xf24f=function(_0x4241ca,_0x1e6199){_0x4241ca=_0x4241ca-0x0;var _0x37a6b4=_0x24ff[_0x4241ca];return _0x37a6b4;};'use strict';var _=require('lodash');var util=require(_0xf24f('0x0'));var logger=require(_0xf24f('0x1'))(_0xf24f('0x2'));var moment=require(_0xf24f('0x3'));var BPromise=require(_0xf24f('0x4'));var rp=require(_0xf24f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf24f('0x6'));module[_0xf24f('0x7')]=function(_0x556528,_0x5b54a4){return _0x556528['define'](_0xf24f('0x8'),attributes,{'tableName':_0xf24f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x91f6=['lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./integration.attributes','define','Integration'];(function(_0x4bd06e,_0x593701){var _0x85ebb=function(_0x26a7f2){while(--_0x26a7f2){_0x4bd06e['push'](_0x4bd06e['shift']());}};_0x85ebb(++_0x593701);}(_0x91f6,0x160));var _0x691f=function(_0x265909,_0x37e0ff){_0x265909=_0x265909-0x0;var _0x11ef75=_0x91f6[_0x265909];return _0x11ef75;};'use strict';var _=require(_0x691f('0x0'));var util=require(_0x691f('0x1'));var logger=require(_0x691f('0x2'))('api');var moment=require(_0x691f('0x3'));var BPromise=require(_0x691f('0x4'));var rp=require(_0x691f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x691f('0x6'));var config=require(_0x691f('0x7'));var attributes=require(_0x691f('0x8'));module['exports']=function(_0x44d78a,_0x4b17c1){return _0x44d78a[_0x691f('0x9')](_0x691f('0xa'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4304e50..4158184 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2d=['bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','then','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','util','moment'];(function(_0x50e410,_0x36bb68){var _0x3eb22c=function(_0x3f5a8c){while(--_0x3f5a8c){_0x50e410['push'](_0x50e410['shift']());}};_0x3eb22c(++_0x36bb68);}(_0xda2d,0x102));var _0xdda2=function(_0x349764,_0x524ddd){_0x349764=_0x349764-0x0;var _0x525f1a=_0xda2d[_0x349764];return _0x525f1a;};'use strict';var _=require('lodash');var util=require(_0xdda2('0x0'));var moment=require(_0xdda2('0x1'));var BPromise=require(_0xdda2('0x2'));var rs=require(_0xdda2('0x3'));var fs=require('fs');var Redis=require(_0xdda2('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xdda2('0x5'));var config=require(_0xdda2('0x6'));var jayson=require(_0xdda2('0x7'));var client=jayson[_0xdda2('0x8')][_0xdda2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xf38e58,_0x2f55dc,_0x436676){return new BPromise(function(_0x2e2523,_0x341c7b){return client['request'](_0xf38e58,_0x436676)[_0xdda2('0xa')](function(_0x22c6e5){logger['info'](_0xdda2('0xb'),_0x2f55dc,_0xdda2('0xc'));logger[_0xdda2('0xd')](_0xdda2('0xe'),_0x2f55dc,_0xdda2('0xc'),JSON[_0xdda2('0xf')](_0x22c6e5));if(_0x22c6e5[_0xdda2('0x10')]){if(_0x22c6e5[_0xdda2('0x10')]['code']===0x1f4){logger['error']('Integration,\x20%s,\x20%s',_0x2f55dc,_0x22c6e5[_0xdda2('0x10')][_0xdda2('0x11')]);return _0x341c7b(_0x22c6e5[_0xdda2('0x10')][_0xdda2('0x11')]);}logger[_0xdda2('0x10')](_0xdda2('0xb'),_0x2f55dc,_0x22c6e5[_0xdda2('0x10')]['message']);return _0x2e2523(_0x22c6e5[_0xdda2('0x10')]['message']);}else{logger[_0xdda2('0x12')](_0xdda2('0xb'),_0x2f55dc,_0xdda2('0xc'));_0x2e2523(_0x22c6e5[_0xdda2('0x13')][_0xdda2('0x11')]);}})['catch'](function(_0x55d674){logger[_0xdda2('0x10')]('Integration,\x20%s,\x20%s',_0x2f55dc,_0x55d674);_0x341c7b(_0x55d674);});});}
\ No newline at end of file
+var _0x66fa=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then','info','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Integration,\x20%s,\x20%s','message','catch','lodash'];(function(_0xbbeb5c,_0x5062cd){var _0x4eea15=function(_0xa7c682){while(--_0xa7c682){_0xbbeb5c['push'](_0xbbeb5c['shift']());}};_0x4eea15(++_0x5062cd);}(_0x66fa,0x117));var _0xa66f=function(_0x939efa,_0x20fe7d){_0x939efa=_0x939efa-0x0;var _0x2b3a6f=_0x66fa[_0x939efa];return _0x2b3a6f;};'use strict';var _=require(_0xa66f('0x0'));var util=require(_0xa66f('0x1'));var moment=require('moment');var BPromise=require(_0xa66f('0x2'));var rs=require(_0xa66f('0x3'));var fs=require('fs');var Redis=require(_0xa66f('0x4'));var db=require(_0xa66f('0x5'))['db'];var utils=require(_0xa66f('0x6'));var logger=require(_0xa66f('0x7'))(_0xa66f('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa66f('0x9')][_0xa66f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2f0b78,_0x1d02fc,_0x38b58b){return new BPromise(function(_0x5096bf,_0x39c1ef){return client['request'](_0x2f0b78,_0x38b58b)[_0xa66f('0xb')](function(_0x597c7c){logger[_0xa66f('0xc')]('Integration,\x20%s,\x20%s',_0x1d02fc,'request\x20sent');logger['debug'](_0xa66f('0xd'),_0x1d02fc,_0xa66f('0xe'),JSON['stringify'](_0x597c7c));if(_0x597c7c[_0xa66f('0xf')]){if(_0x597c7c['error'][_0xa66f('0x10')]===0x1f4){logger['error'](_0xa66f('0x11'),_0x1d02fc,_0x597c7c[_0xa66f('0xf')][_0xa66f('0x12')]);return _0x39c1ef(_0x597c7c['error']['message']);}logger[_0xa66f('0xf')]('Integration,\x20%s,\x20%s',_0x1d02fc,_0x597c7c['error']['message']);return _0x5096bf(_0x597c7c[_0xa66f('0xf')][_0xa66f('0x12')]);}else{logger[_0xa66f('0xc')](_0xa66f('0x11'),_0x1d02fc,_0xa66f('0xe'));_0x5096bf(_0x597c7c['result']['message']);}})[_0xa66f('0x13')](function(_0x32d338){logger[_0xa66f('0xf')](_0xa66f('0x11'),_0x1d02fc,_0x32d338);_0x39c1ef(_0x32d338);});});}
\ No newline at end of file
index 17e1621..0a1f464 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['create','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','index','get','isAuthenticated','describe','/:id','post'];(function(_0x2eeb24,_0x535005){var _0x320191=function(_0xc3cae){while(--_0xc3cae){_0x2eeb24['push'](_0x2eeb24['shift']());}};_0x320191(++_0x535005);}(_0x1261,0x144));var _0x1126=function(_0x446208,_0xb483fb){_0x446208=_0x446208-0x0;var _0xe49563=_0x1261[_0x446208];return _0xe49563;};'use strict';var multer=require('multer');var util=require(_0x1126('0x0'));var path=require(_0x1126('0x1'));var timeout=require(_0x1126('0x2'));var express=require(_0x1126('0x3'));var router=express[_0x1126('0x4')]();var fs_extra=require(_0x1126('0x5'));var auth=require(_0x1126('0x6'));var interaction=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var controller=require(_0x1126('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x1126('0xa')]);router[_0x1126('0xb')]('/describe',auth[_0x1126('0xc')](),controller[_0x1126('0xd')]);router[_0x1126('0xb')](_0x1126('0xe'),auth[_0x1126('0xc')](),controller['show']);router[_0x1126('0xf')]('/',auth[_0x1126('0xc')](),controller[_0x1126('0x10')]);router['put'](_0x1126('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x1126('0x11')]('/:id',auth[_0x1126('0xc')](),controller[_0x1126('0x12')]);module[_0x1126('0x13')]=router;
\ No newline at end of file
+var _0x1261=['create','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','index','get','isAuthenticated','describe','/:id','post'];(function(_0x29420f,_0x1ef6dc){var _0x12131f=function(_0x1ed9cf){while(--_0x1ed9cf){_0x29420f['push'](_0x29420f['shift']());}};_0x12131f(++_0x1ef6dc);}(_0x1261,0x144));var _0x1126=function(_0x498d4f,_0x6e928e){_0x498d4f=_0x498d4f-0x0;var _0x1c81a8=_0x1261[_0x498d4f];return _0x1c81a8;};'use strict';var multer=require('multer');var util=require(_0x1126('0x0'));var path=require(_0x1126('0x1'));var timeout=require(_0x1126('0x2'));var express=require(_0x1126('0x3'));var router=express[_0x1126('0x4')]();var fs_extra=require(_0x1126('0x5'));var auth=require(_0x1126('0x6'));var interaction=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var controller=require(_0x1126('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x1126('0xa')]);router[_0x1126('0xb')]('/describe',auth[_0x1126('0xc')](),controller[_0x1126('0xd')]);router[_0x1126('0xb')](_0x1126('0xe'),auth[_0x1126('0xc')](),controller['show']);router[_0x1126('0xf')]('/',auth[_0x1126('0xc')](),controller[_0x1126('0x10')]);router['put'](_0x1126('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x1126('0x11')]('/:id',auth[_0x1126('0xc')](),controller[_0x1126('0x12')]);module[_0x1126('0x13')]=router;
\ No newline at end of file
index fd027fb..34550ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x098d=['RECEIVED','FAILED','exports','STRING','DATE','INTEGER','BOOLEAN','TEXT','SENT','SENDING'];(function(_0x36bdcc,_0x126d1b){var _0x4c04af=function(_0x156c20){while(--_0x156c20){_0x36bdcc['push'](_0x36bdcc['shift']());}};_0x4c04af(++_0x126d1b);}(_0x098d,0x138));var _0xd098=function(_0x22dac7,_0x45d32a){_0x22dac7=_0x22dac7-0x0;var _0x3e6cfa=_0x098d[_0x22dac7];return _0x3e6cfa;};'use strict';var Sequelize=require('sequelize');module[_0xd098('0x0')]={'integration':{'type':Sequelize[_0xd098('0x1')]},'eventChannel':{'type':Sequelize[_0xd098('0x1')]},'exitStatus':{'type':Sequelize[_0xd098('0x1')]},'ticketId':{'type':Sequelize[_0xd098('0x1')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0xd098('0x1')]},'uniqueid':{'type':Sequelize[_0xd098('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xd098('0x1')]},'queue':{'type':Sequelize[_0xd098('0x1')]},'interface':{'type':Sequelize[_0xd098('0x1')]},'membername':{'type':Sequelize[_0xd098('0x1')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0xd098('0x2')]},'holdtime':{'type':Sequelize[_0xd098('0x3')]},'agentcomplete':{'type':Sequelize[_0xd098('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xd098('0x2')]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0xd098('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xd098('0x3')]},'reason':{'type':Sequelize[_0xd098('0x1')]},'agentringnoanswer':{'type':Sequelize[_0xd098('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xd098('0x2')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0xd098('0x1')]},'channel':{'type':Sequelize[_0xd098('0x1')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xd098('0x1')]},'connectedlinename':{'type':Sequelize[_0xd098('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xd098('0x1')]},'exten':{'type':Sequelize[_0xd098('0x1')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xd098('0x1')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xd098('0x1')]},'destcalleridnum':{'type':Sequelize[_0xd098('0x1')]},'destcalleridname':{'type':Sequelize[_0xd098('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xd098('0x1')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0xd098('0x1')]},'destaccountcode':{'type':Sequelize[_0xd098('0x1')]},'destcontext':{'type':Sequelize[_0xd098('0x1')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0xd098('0x1')]},'inReplyTo':{'type':Sequelize[_0xd098('0x1')]},'subject':{'type':Sequelize[_0xd098('0x1')]},'from':{'type':Sequelize[_0xd098('0x1')]},'to':{'type':Sequelize[_0xd098('0x1')]},'cc':{'type':Sequelize[_0xd098('0x1')]},'attachment':{'type':Sequelize[_0xd098('0x5')]},'html':{'type':Sequelize[_0xd098('0x5')]},'text':{'type':Sequelize[_0xd098('0x5')]},'status':{'type':Sequelize['ENUM'](_0xd098('0x6'),_0xd098('0x7'),_0xd098('0x8'),_0xd098('0x9'))},'url':{'type':Sequelize[_0xd098('0x1')]},'app':{'type':Sequelize[_0xd098('0x1')]},'appdata':{'type':Sequelize[_0xd098('0x1')]},'projectId':{'type':Sequelize[_0xd098('0x3')]}};
\ No newline at end of file
+var _0xcdb0=['BOOLEAN','TEXT','ENUM','SENT','RECEIVED','FAILED','sequelize','exports','STRING','DATE','INTEGER'];(function(_0x390ddf,_0x4609fb){var _0x2fff49=function(_0x2d2588){while(--_0x2d2588){_0x390ddf['push'](_0x390ddf['shift']());}};_0x2fff49(++_0x4609fb);}(_0xcdb0,0x74));var _0x0cdb=function(_0x78824e,_0x58151e){_0x78824e=_0x78824e-0x0;var _0x2d662b=_0xcdb0[_0x78824e];return _0x2d662b;};'use strict';var Sequelize=require(_0x0cdb('0x0'));module[_0x0cdb('0x1')]={'integration':{'type':Sequelize[_0x0cdb('0x2')]},'eventChannel':{'type':Sequelize[_0x0cdb('0x2')]},'exitStatus':{'type':Sequelize[_0x0cdb('0x2')]},'ticketId':{'type':Sequelize[_0x0cdb('0x2')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0x0cdb('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x0cdb('0x2')]},'calleridname':{'type':Sequelize[_0x0cdb('0x2')]},'queue':{'type':Sequelize[_0x0cdb('0x2')]},'interface':{'type':Sequelize[_0x0cdb('0x2')]},'membername':{'type':Sequelize[_0x0cdb('0x2')]},'agentcalledAt':{'type':Sequelize[_0x0cdb('0x3')]},'agentconnectAt':{'type':Sequelize[_0x0cdb('0x3')]},'holdtime':{'type':Sequelize[_0x0cdb('0x4')]},'agentcomplete':{'type':Sequelize[_0x0cdb('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x0cdb('0x3')]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0x0cdb('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x0cdb('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x0cdb('0x3')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x0cdb('0x3')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x0cdb('0x2')]},'channelstate':{'type':Sequelize[_0x0cdb('0x4')]},'channelstatedesc':{'type':Sequelize[_0x0cdb('0x2')]},'connectedlinenum':{'type':Sequelize[_0x0cdb('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0cdb('0x2')]},'accountcode':{'type':Sequelize[_0x0cdb('0x2')]},'context':{'type':Sequelize[_0x0cdb('0x2')]},'exten':{'type':Sequelize[_0x0cdb('0x2')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x0cdb('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0x0cdb('0x2')]},'destcalleridnum':{'type':Sequelize[_0x0cdb('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x0cdb('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x0cdb('0x2')]},'destexten':{'type':Sequelize[_0x0cdb('0x2')]},'destpriority':{'type':Sequelize[_0x0cdb('0x2')]},'destuniqueid':{'type':Sequelize[_0x0cdb('0x2')]},'messageId':{'type':Sequelize[_0x0cdb('0x2')]},'inReplyTo':{'type':Sequelize[_0x0cdb('0x2')]},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize[_0x0cdb('0x2')]},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0x0cdb('0x6')]},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0x0cdb('0x6')]},'status':{'type':Sequelize[_0x0cdb('0x7')](_0x0cdb('0x8'),'SENDING',_0x0cdb('0x9'),_0x0cdb('0xa'))},'url':{'type':Sequelize[_0x0cdb('0x2')]},'app':{'type':Sequelize[_0x0cdb('0x2')]},'appdata':{'type':Sequelize[_0x0cdb('0x2')]},'projectId':{'type':Sequelize[_0x0cdb('0x4')]}};
\ No newline at end of file
index 06930b3..00d0749 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff49=['destroy','describe','eml-format','rimraf','zip-dir','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../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','count','limit','reject','save','update','then','end','error','stack','name','send','index','map','IntegrationReport','fieldName','type','key','model','keys','query','filters','intersection','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','fields','find','create','body'];(function(_0x5e1d36,_0x129307){var _0xe94ea0=function(_0x4f968a){while(--_0x4f968a){_0x5e1d36['push'](_0x5e1d36['shift']());}};_0xe94ea0(++_0x129307);}(_0xff49,0x1c4));var _0x9ff4=function(_0x3b5ad9,_0x223867){_0x3b5ad9=_0x3b5ad9-0x0;var _0x611ae9=_0xff49[_0x3b5ad9];return _0x611ae9;};'use strict';var emlformat=require(_0x9ff4('0x0'));var rimraf=require(_0x9ff4('0x1'));var zipdir=require(_0x9ff4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9ff4('0x3'));var Mustache=require('mustache');var util=require(_0x9ff4('0x4'));var path=require('path');var sox=require(_0x9ff4('0x5'));var csv=require(_0x9ff4('0x6'));var ejs=require(_0x9ff4('0x7'));var fs=require('fs');var fs_extra=require(_0x9ff4('0x8'));var _=require(_0x9ff4('0x9'));var squel=require(_0x9ff4('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9ff4('0xb'));var toCsv=require(_0x9ff4('0x6'));var querystring=require(_0x9ff4('0xc'));var Papa=require(_0x9ff4('0xd'));var Redis=require('ioredis');var authService=require(_0x9ff4('0xe'));var qs=require(_0x9ff4('0xf'));var as=require(_0x9ff4('0x10'));var hardwareService=require(_0x9ff4('0x11'));var logger=require('../../config/logger')(_0x9ff4('0x12'));var utils=require(_0x9ff4('0x13'));var config=require(_0x9ff4('0x14'));var licenseUtil=require(_0x9ff4('0x15'));var db=require(_0x9ff4('0x16'))['db'];function respondWithStatusCode(_0x2b0248,_0x471839){_0x471839=_0x471839||0xcc;return function(_0x384f58){if(_0x384f58){return _0x2b0248[_0x9ff4('0x17')](_0x471839);}return _0x2b0248['status'](_0x471839)['end']();};}function respondWithResult(_0x35e567,_0x4606ae){_0x4606ae=_0x4606ae||0xc8;return function(_0x311bae){if(_0x311bae){return _0x35e567[_0x9ff4('0x18')](_0x4606ae)[_0x9ff4('0x19')](_0x311bae);}};}function respondWithFilteredResult(_0x375200,_0x40c85a){return function(_0x4c53aa){if(_0x4c53aa){var _0x1b7789=typeof _0x40c85a[_0x9ff4('0x1a')]===_0x9ff4('0x1b')&&typeof _0x40c85a['limit']===_0x9ff4('0x1b');var _0x44c160=_0x4c53aa[_0x9ff4('0x1c')];var _0x51531b=_0x1b7789?0x0:_0x40c85a[_0x9ff4('0x1a')];var _0x32fb90=_0x1b7789?_0x4c53aa['count']:_0x40c85a['offset']+_0x40c85a[_0x9ff4('0x1d')];var _0x80a8b9;if(_0x32fb90>=_0x44c160){_0x32fb90=_0x44c160;_0x80a8b9=0xc8;}else{_0x80a8b9=0xce;}_0x375200[_0x9ff4('0x18')](_0x80a8b9);return _0x375200['set']('Content-Range',_0x51531b+'-'+_0x32fb90+'/'+_0x44c160)['json'](_0x4c53aa);}return null;};}function patchUpdates(_0x1cfc1f){return function(_0x11836a){try{jsonpatch['apply'](_0x11836a,_0x1cfc1f,!![]);}catch(_0x9da382){return BPromise[_0x9ff4('0x1e')](_0x9da382);}return _0x11836a[_0x9ff4('0x1f')]();};}function saveUpdates(_0x230815,_0x458ae8){return function(_0x1abf64){if(_0x1abf64){return _0x1abf64[_0x9ff4('0x20')](_0x230815)[_0x9ff4('0x21')](function(_0x280274){return _0x280274;});}return null;};}function removeEntity(_0x32a7db,_0x2389c8){return function(_0x44cc4b){if(_0x44cc4b){return _0x44cc4b['destroy']()[_0x9ff4('0x21')](function(){_0x32a7db['status'](0xcc)[_0x9ff4('0x22')]();});}};}function handleEntityNotFound(_0x16fa1c,_0x44d175){return function(_0x2fa3f5){if(!_0x2fa3f5){_0x16fa1c[_0x9ff4('0x17')](0x194);}return _0x2fa3f5;};}function handleError(_0x5baf75,_0x487950){_0x487950=_0x487950||0x1f4;return function(_0x3f0811){logger[_0x9ff4('0x23')](_0x3f0811[_0x9ff4('0x24')]);if(_0x3f0811[_0x9ff4('0x25')]){delete _0x3f0811[_0x9ff4('0x25')];}_0x5baf75[_0x9ff4('0x18')](_0x487950)[_0x9ff4('0x26')](_0x3f0811);};}exports[_0x9ff4('0x27')]=function(_0x432b42,_0x2d77b5){var _0x4e367b={},_0x1d7cba={},_0x110c66={'count':0x0,'rows':[]};var _0x19596e=_[_0x9ff4('0x28')](db[_0x9ff4('0x29')]['rawAttributes'],function(_0x13c333){return{'name':_0x13c333[_0x9ff4('0x2a')],'type':_0x13c333[_0x9ff4('0x2b')][_0x9ff4('0x2c')]};});_0x1d7cba[_0x9ff4('0x2d')]=_[_0x9ff4('0x28')](_0x19596e,_0x9ff4('0x25'));_0x1d7cba['query']=_[_0x9ff4('0x2e')](_0x432b42[_0x9ff4('0x2f')]);_0x1d7cba[_0x9ff4('0x30')]=_[_0x9ff4('0x31')](_0x1d7cba[_0x9ff4('0x2d')],_0x1d7cba['query']);_0x4e367b['attributes']=_['intersection'](_0x1d7cba['model'],qs['fields'](_0x432b42[_0x9ff4('0x2f')]['fields']));_0x4e367b['attributes']=_0x4e367b[_0x9ff4('0x32')][_0x9ff4('0x33')]?_0x4e367b[_0x9ff4('0x32')]:_0x1d7cba[_0x9ff4('0x2d')];if(!_0x432b42[_0x9ff4('0x2f')]['hasOwnProperty'](_0x9ff4('0x34'))){_0x4e367b[_0x9ff4('0x1d')]=qs[_0x9ff4('0x1d')](_0x432b42[_0x9ff4('0x2f')][_0x9ff4('0x1d')]);_0x4e367b['offset']=qs[_0x9ff4('0x1a')](_0x432b42[_0x9ff4('0x2f')][_0x9ff4('0x1a')]);}_0x4e367b[_0x9ff4('0x35')]=qs['sort'](_0x432b42['query'][_0x9ff4('0x36')]);_0x4e367b[_0x9ff4('0x37')]=qs['filters'](_[_0x9ff4('0x38')](_0x432b42['query'],_0x1d7cba[_0x9ff4('0x30')]),_0x19596e);if(_0x432b42['query'][_0x9ff4('0x39')]){_0x4e367b[_0x9ff4('0x37')]=_['merge'](_0x4e367b[_0x9ff4('0x37')],{'$or':_['map'](_0x19596e,function(_0x1a0d7b){if(_0x1a0d7b[_0x9ff4('0x2b')]!==_0x9ff4('0x3a')){var _0x7d87c8={};_0x7d87c8[_0x1a0d7b['name']]={'$like':'%'+_0x432b42[_0x9ff4('0x2f')][_0x9ff4('0x39')]+'%'};return _0x7d87c8;}})});}_0x4e367b=_[_0x9ff4('0x3b')]({},_0x4e367b,_0x432b42[_0x9ff4('0x3c')]);var _0x332ae9={'where':_0x4e367b[_0x9ff4('0x37')]};return db[_0x9ff4('0x29')][_0x9ff4('0x1c')](_0x332ae9)['then'](function(_0x371b9a){_0x110c66[_0x9ff4('0x1c')]=_0x371b9a;if(_0x432b42[_0x9ff4('0x2f')][_0x9ff4('0x3d')]){_0x4e367b[_0x9ff4('0x3e')]=[{'all':!![]}];}return db['IntegrationReport'][_0x9ff4('0x3f')](_0x4e367b);})['then'](function(_0x1a26f4){_0x110c66[_0x9ff4('0x40')]=_0x1a26f4;return _0x110c66;})[_0x9ff4('0x21')](respondWithFilteredResult(_0x2d77b5,_0x4e367b))[_0x9ff4('0x41')](handleError(_0x2d77b5,null));};exports[_0x9ff4('0x42')]=function(_0x41e1ad,_0x416fd8){var _0x3108f1={'raw':![],'where':{'id':_0x41e1ad[_0x9ff4('0x43')]['id']}},_0x33807a={};_0x33807a[_0x9ff4('0x2d')]=_['keys'](db['IntegrationReport'][_0x9ff4('0x44')]);_0x33807a[_0x9ff4('0x2f')]=_[_0x9ff4('0x2e')](_0x41e1ad['query']);_0x33807a[_0x9ff4('0x30')]=_[_0x9ff4('0x31')](_0x33807a[_0x9ff4('0x2d')],_0x33807a['query']);_0x3108f1[_0x9ff4('0x32')]=_[_0x9ff4('0x31')](_0x33807a['model'],qs['fields'](_0x41e1ad[_0x9ff4('0x2f')][_0x9ff4('0x45')]));_0x3108f1[_0x9ff4('0x32')]=_0x3108f1[_0x9ff4('0x32')][_0x9ff4('0x33')]?_0x3108f1[_0x9ff4('0x32')]:_0x33807a[_0x9ff4('0x2d')];if(_0x41e1ad[_0x9ff4('0x2f')][_0x9ff4('0x3d')]){_0x3108f1[_0x9ff4('0x3e')]=[{'all':!![]}];}_0x3108f1=_['merge']({},_0x3108f1,_0x41e1ad[_0x9ff4('0x3c')]);return db[_0x9ff4('0x29')][_0x9ff4('0x46')](_0x3108f1)[_0x9ff4('0x21')](handleEntityNotFound(_0x416fd8,null))[_0x9ff4('0x21')](respondWithResult(_0x416fd8,null))['catch'](handleError(_0x416fd8,null));};exports[_0x9ff4('0x47')]=function(_0x397274,_0x32c295){return db[_0x9ff4('0x29')]['create'](_0x397274[_0x9ff4('0x48')],{})[_0x9ff4('0x21')](respondWithResult(_0x32c295,0xc9))[_0x9ff4('0x41')](handleError(_0x32c295,null));};exports['update']=function(_0x448937,_0x527e93){if(_0x448937[_0x9ff4('0x48')]['id']){delete _0x448937['body']['id'];}return db[_0x9ff4('0x29')]['find']({'where':{'id':_0x448937[_0x9ff4('0x43')]['id']}})[_0x9ff4('0x21')](handleEntityNotFound(_0x527e93,null))[_0x9ff4('0x21')](saveUpdates(_0x448937['body'],null))[_0x9ff4('0x21')](respondWithResult(_0x527e93,null))['catch'](handleError(_0x527e93,null));};exports[_0x9ff4('0x49')]=function(_0x51bf15,_0x1aa63d){return db['IntegrationReport']['find']({'where':{'id':_0x51bf15[_0x9ff4('0x43')]['id']}})[_0x9ff4('0x21')](handleEntityNotFound(_0x1aa63d,null))[_0x9ff4('0x21')](removeEntity(_0x1aa63d,null))[_0x9ff4('0x41')](handleError(_0x1aa63d,null));};exports['describe']=function(_0x29f822,_0x13ca18){return db['IntegrationReport'][_0x9ff4('0x4a')]()['then'](respondWithResult(_0x13ca18,null))[_0x9ff4('0x41')](handleError(_0x13ca18,null));};
\ No newline at end of file
+var _0x531b=['mustache','util','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','IntegrationReport','includeAll','findAll','catch','show','include','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x531b,0x93));var _0xb531=function(_0x358049,_0x56e00a){_0x358049=_0x358049-0x0;var _0x2426d1=_0x531b[_0x358049];return _0x2426d1;};'use strict';var emlformat=require(_0xb531('0x0'));var rimraf=require(_0xb531('0x1'));var zipdir=require(_0xb531('0x2'));var jsonpatch=require(_0xb531('0x3'));var rp=require(_0xb531('0x4'));var moment=require(_0xb531('0x5'));var BPromise=require(_0xb531('0x6'));var Mustache=require(_0xb531('0x7'));var util=require(_0xb531('0x8'));var path=require('path');var sox=require(_0xb531('0x9'));var csv=require(_0xb531('0xa'));var ejs=require(_0xb531('0xb'));var fs=require('fs');var fs_extra=require(_0xb531('0xc'));var _=require(_0xb531('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb531('0xe'));var deskjs=require(_0xb531('0xf'));var toCsv=require(_0xb531('0xa'));var querystring=require(_0xb531('0x10'));var Papa=require(_0xb531('0x11'));var Redis=require(_0xb531('0x12'));var authService=require(_0xb531('0x13'));var qs=require(_0xb531('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb531('0x15'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xb531('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xb531('0x17'))['db'];function respondWithStatusCode(_0x49bc41,_0x263d12){_0x263d12=_0x263d12||0xcc;return function(_0x156198){if(_0x156198){return _0x49bc41[_0xb531('0x18')](_0x263d12);}return _0x49bc41[_0xb531('0x19')](_0x263d12)[_0xb531('0x1a')]();};}function respondWithResult(_0x16b87b,_0x1137bd){_0x1137bd=_0x1137bd||0xc8;return function(_0x31a303){if(_0x31a303){return _0x16b87b[_0xb531('0x19')](_0x1137bd)['json'](_0x31a303);}};}function respondWithFilteredResult(_0x46d634,_0x4d169f){return function(_0x2f56fa){if(_0x2f56fa){var _0x17e248=typeof _0x4d169f[_0xb531('0x1b')]===_0xb531('0x1c')&&typeof _0x4d169f[_0xb531('0x1d')]==='undefined';var _0x469292=_0x2f56fa[_0xb531('0x1e')];var _0x408a1b=_0x17e248?0x0:_0x4d169f[_0xb531('0x1b')];var _0x4c9e94=_0x17e248?_0x2f56fa[_0xb531('0x1e')]:_0x4d169f[_0xb531('0x1b')]+_0x4d169f[_0xb531('0x1d')];var _0x1ee9ab;if(_0x4c9e94>=_0x469292){_0x4c9e94=_0x469292;_0x1ee9ab=0xc8;}else{_0x1ee9ab=0xce;}_0x46d634[_0xb531('0x19')](_0x1ee9ab);return _0x46d634[_0xb531('0x1f')](_0xb531('0x20'),_0x408a1b+'-'+_0x4c9e94+'/'+_0x469292)[_0xb531('0x21')](_0x2f56fa);}return null;};}function patchUpdates(_0x5bb3b6){return function(_0x164ca1){try{jsonpatch[_0xb531('0x22')](_0x164ca1,_0x5bb3b6,!![]);}catch(_0x35f3dd){return BPromise[_0xb531('0x23')](_0x35f3dd);}return _0x164ca1[_0xb531('0x24')]();};}function saveUpdates(_0x1214dd,_0x361ff7){return function(_0x40f300){if(_0x40f300){return _0x40f300[_0xb531('0x25')](_0x1214dd)[_0xb531('0x26')](function(_0x377976){return _0x377976;});}return null;};}function removeEntity(_0x166a0b,_0x55f57a){return function(_0x56f30d){if(_0x56f30d){return _0x56f30d['destroy']()['then'](function(){_0x166a0b[_0xb531('0x19')](0xcc)[_0xb531('0x1a')]();});}};}function handleEntityNotFound(_0x2439bc,_0x5ccab4){return function(_0x22b1a9){if(!_0x22b1a9){_0x2439bc['sendStatus'](0x194);}return _0x22b1a9;};}function handleError(_0x1e2ef2,_0x97f2b4){_0x97f2b4=_0x97f2b4||0x1f4;return function(_0x279c2f){logger[_0xb531('0x27')](_0x279c2f[_0xb531('0x28')]);if(_0x279c2f[_0xb531('0x29')]){delete _0x279c2f['name'];}_0x1e2ef2['status'](_0x97f2b4)[_0xb531('0x2a')](_0x279c2f);};}exports['index']=function(_0x38d8bc,_0x128d36){var _0x37078d={},_0x16eb49={},_0x5e8eff={'count':0x0,'rows':[]};var _0x302209=_[_0xb531('0x2b')](db['IntegrationReport'][_0xb531('0x2c')],function(_0x5b1430){return{'name':_0x5b1430[_0xb531('0x2d')],'type':_0x5b1430[_0xb531('0x2e')]['key']};});_0x16eb49[_0xb531('0x2f')]=_[_0xb531('0x2b')](_0x302209,'name');_0x16eb49[_0xb531('0x30')]=_[_0xb531('0x31')](_0x38d8bc['query']);_0x16eb49[_0xb531('0x32')]=_[_0xb531('0x33')](_0x16eb49['model'],_0x16eb49[_0xb531('0x30')]);_0x37078d[_0xb531('0x34')]=_[_0xb531('0x33')](_0x16eb49[_0xb531('0x2f')],qs[_0xb531('0x35')](_0x38d8bc[_0xb531('0x30')][_0xb531('0x35')]));_0x37078d[_0xb531('0x34')]=_0x37078d[_0xb531('0x34')][_0xb531('0x36')]?_0x37078d['attributes']:_0x16eb49[_0xb531('0x2f')];if(!_0x38d8bc[_0xb531('0x30')][_0xb531('0x37')](_0xb531('0x38'))){_0x37078d['limit']=qs[_0xb531('0x1d')](_0x38d8bc[_0xb531('0x30')][_0xb531('0x1d')]);_0x37078d[_0xb531('0x1b')]=qs[_0xb531('0x1b')](_0x38d8bc[_0xb531('0x30')]['offset']);}_0x37078d[_0xb531('0x39')]=qs[_0xb531('0x3a')](_0x38d8bc[_0xb531('0x30')][_0xb531('0x3a')]);_0x37078d['where']=qs[_0xb531('0x32')](_[_0xb531('0x3b')](_0x38d8bc[_0xb531('0x30')],_0x16eb49[_0xb531('0x32')]),_0x302209);if(_0x38d8bc[_0xb531('0x30')][_0xb531('0x3c')]){_0x37078d[_0xb531('0x3d')]=_['merge'](_0x37078d[_0xb531('0x3d')],{'$or':_[_0xb531('0x2b')](_0x302209,function(_0x38b1e2){if(_0x38b1e2[_0xb531('0x2e')]!==_0xb531('0x3e')){var _0x176528={};_0x176528[_0x38b1e2['name']]={'$like':'%'+_0x38d8bc[_0xb531('0x30')][_0xb531('0x3c')]+'%'};return _0x176528;}})});}_0x37078d=_[_0xb531('0x3f')]({},_0x37078d,_0x38d8bc[_0xb531('0x40')]);var _0x4f2b26={'where':_0x37078d[_0xb531('0x3d')]};return db[_0xb531('0x41')]['count'](_0x4f2b26)[_0xb531('0x26')](function(_0x4b6dc1){_0x5e8eff['count']=_0x4b6dc1;if(_0x38d8bc[_0xb531('0x30')][_0xb531('0x42')]){_0x37078d['include']=[{'all':!![]}];}return db[_0xb531('0x41')][_0xb531('0x43')](_0x37078d);})[_0xb531('0x26')](function(_0x136832){_0x5e8eff['rows']=_0x136832;return _0x5e8eff;})[_0xb531('0x26')](respondWithFilteredResult(_0x128d36,_0x37078d))[_0xb531('0x44')](handleError(_0x128d36,null));};exports[_0xb531('0x45')]=function(_0x2c6e4b,_0x46a47a){var _0x1ec4db={'raw':![],'where':{'id':_0x2c6e4b['params']['id']}},_0x553c25={};_0x553c25[_0xb531('0x2f')]=_[_0xb531('0x31')](db['IntegrationReport']['rawAttributes']);_0x553c25[_0xb531('0x30')]=_[_0xb531('0x31')](_0x2c6e4b[_0xb531('0x30')]);_0x553c25[_0xb531('0x32')]=_['intersection'](_0x553c25[_0xb531('0x2f')],_0x553c25[_0xb531('0x30')]);_0x1ec4db[_0xb531('0x34')]=_['intersection'](_0x553c25[_0xb531('0x2f')],qs['fields'](_0x2c6e4b['query'][_0xb531('0x35')]));_0x1ec4db[_0xb531('0x34')]=_0x1ec4db[_0xb531('0x34')][_0xb531('0x36')]?_0x1ec4db[_0xb531('0x34')]:_0x553c25[_0xb531('0x2f')];if(_0x2c6e4b[_0xb531('0x30')]['includeAll']){_0x1ec4db[_0xb531('0x46')]=[{'all':!![]}];}_0x1ec4db=_[_0xb531('0x3f')]({},_0x1ec4db,_0x2c6e4b[_0xb531('0x40')]);return db[_0xb531('0x41')][_0xb531('0x47')](_0x1ec4db)[_0xb531('0x26')](handleEntityNotFound(_0x46a47a,null))[_0xb531('0x26')](respondWithResult(_0x46a47a,null))[_0xb531('0x44')](handleError(_0x46a47a,null));};exports['create']=function(_0x48011c,_0xa83577){return db[_0xb531('0x41')][_0xb531('0x48')](_0x48011c[_0xb531('0x49')],{})[_0xb531('0x26')](respondWithResult(_0xa83577,0xc9))[_0xb531('0x44')](handleError(_0xa83577,null));};exports[_0xb531('0x25')]=function(_0x576895,_0x2f9259){if(_0x576895[_0xb531('0x49')]['id']){delete _0x576895[_0xb531('0x49')]['id'];}return db['IntegrationReport']['find']({'where':{'id':_0x576895[_0xb531('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2f9259,null))[_0xb531('0x26')](saveUpdates(_0x576895[_0xb531('0x49')],null))['then'](respondWithResult(_0x2f9259,null))[_0xb531('0x44')](handleError(_0x2f9259,null));};exports[_0xb531('0x4b')]=function(_0x5a6169,_0x131f52){return db[_0xb531('0x41')][_0xb531('0x47')]({'where':{'id':_0x5a6169[_0xb531('0x4a')]['id']}})['then'](handleEntityNotFound(_0x131f52,null))['then'](removeEntity(_0x131f52,null))[_0xb531('0x44')](handleError(_0x131f52,null));};exports[_0xb531('0x4c')]=function(_0x56419a,_0x171853){return db['IntegrationReport'][_0xb531('0x4c')]()['then'](respondWithResult(_0x171853,null))[_0xb531('0x44')](handleError(_0x171853,null));};
\ No newline at end of file
index 89ef340..254468e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0c8=['./integrationReport.attributes','define','IntegrationReport','report_integration','lodash','util','../../config/logger','path','rimraf'];(function(_0x1f8d43,_0x18130f){var _0x3d08d4=function(_0x4daeb7){while(--_0x4daeb7){_0x1f8d43['push'](_0x1f8d43['shift']());}};_0x3d08d4(++_0x18130f);}(_0xf0c8,0x1ea));var _0x8f0c=function(_0x1b9c2a,_0x50582e){_0x1b9c2a=_0x1b9c2a-0x0;var _0x21ab47=_0xf0c8[_0x1b9c2a];return _0x21ab47;};'use strict';var _=require(_0x8f0c('0x0'));var util=require(_0x8f0c('0x1'));var logger=require(_0x8f0c('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8f0c('0x3'));var rimraf=require(_0x8f0c('0x4'));var config=require('../../config/environment');var attributes=require(_0x8f0c('0x5'));module['exports']=function(_0x3074a1,_0x57ff85){return _0x3074a1[_0x8f0c('0x6')](_0x8f0c('0x7'),attributes,{'tableName':_0x8f0c('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1378=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','IntegrationReport','lodash'];(function(_0x24237f,_0x4cf32c){var _0x48298e=function(_0x3f7511){while(--_0x3f7511){_0x24237f['push'](_0x24237f['shift']());}};_0x48298e(++_0x4cf32c);}(_0x1378,0x15f));var _0x8137=function(_0x146603,_0x71623e){_0x146603=_0x146603-0x0;var _0x5ad789=_0x1378[_0x146603];return _0x5ad789;};'use strict';var _=require(_0x8137('0x0'));var util=require(_0x8137('0x1'));var logger=require(_0x8137('0x2'))(_0x8137('0x3'));var moment=require(_0x8137('0x4'));var BPromise=require(_0x8137('0x5'));var rp=require(_0x8137('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8137('0x7'));var config=require(_0x8137('0x8'));var attributes=require('./integrationReport.attributes');module[_0x8137('0x9')]=function(_0x3ec6f3,_0x14b714){return _0x3ec6f3['define'](_0x8137('0xa'),attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 09a35f0..81a142c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x1df954,_0x30b098){var _0x16efbc=function(_0x1bf82d){while(--_0x1bf82d){_0x1df954['push'](_0x1df954['shift']());}};_0x16efbc(++_0x30b098);}(_0x326f,0xd1));var _0xf326=function(_0x2dfd7c,_0x4f3bbb){_0x2dfd7c=_0x2dfd7c-0x0;var _0x1f05da=_0x326f[_0x2dfd7c];return _0x1f05da;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('IntegrationReport,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}
\ 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(_0x363ef8,_0x4ecb1a){var _0x148822=function(_0x232634){while(--_0x232634){_0x363ef8['push'](_0x363ef8['shift']());}};_0x148822(++_0x4ecb1a);}(_0x4975,0x86));var _0x5497=function(_0x39aa17,_0x2e502c){_0x39aa17=_0x39aa17-0x0;var _0x24f398=_0x4975[_0x39aa17];return _0x24f398;};'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 523f2c0..fa61ae7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bba=['addIntervals','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller','get','isAuthenticated','index','/:id','show','/:id/sub_intervals','getIntervals','post','create','addInterval','/:id/sub_intervals/create_many'];(function(_0x4163d0,_0x9be6f2){var _0x372fbc=function(_0x3bcf29){while(--_0x3bcf29){_0x4163d0['push'](_0x4163d0['shift']());}};_0x372fbc(++_0x9be6f2);}(_0x5bba,0x9b));var _0xa5bb=function(_0x1c6609,_0x4a3a28){_0x1c6609=_0x1c6609-0x0;var _0x4ba032=_0x5bba[_0x1c6609];return _0x4ba032;};'use strict';var multer=require('multer');var util=require(_0xa5bb('0x0'));var path=require(_0xa5bb('0x1'));var timeout=require(_0xa5bb('0x2'));var express=require(_0xa5bb('0x3'));var router=express['Router']();var fs_extra=require(_0xa5bb('0x4'));var auth=require(_0xa5bb('0x5'));var interaction=require(_0xa5bb('0x6'));var config=require(_0xa5bb('0x7'));var controller=require(_0xa5bb('0x8'));router[_0xa5bb('0x9')]('/',auth[_0xa5bb('0xa')](),controller[_0xa5bb('0xb')]);router[_0xa5bb('0x9')](_0xa5bb('0xc'),auth[_0xa5bb('0xa')](),controller[_0xa5bb('0xd')]);router['get'](_0xa5bb('0xe'),auth[_0xa5bb('0xa')](),controller[_0xa5bb('0xf')]);router[_0xa5bb('0x10')]('/',auth[_0xa5bb('0xa')](),controller[_0xa5bb('0x11')]);router[_0xa5bb('0x10')]('/:id/sub_intervals',auth[_0xa5bb('0xa')](),controller[_0xa5bb('0x12')]);router[_0xa5bb('0x10')](_0xa5bb('0x13'),auth[_0xa5bb('0xa')](),controller[_0xa5bb('0x14')]);router['put'](_0xa5bb('0xc'),auth[_0xa5bb('0xa')](),controller[_0xa5bb('0x15')]);router[_0xa5bb('0x16')](_0xa5bb('0xc'),auth[_0xa5bb('0xa')](),controller[_0xa5bb('0x17')]);module[_0xa5bb('0x18')]=router;
\ No newline at end of file
+var _0x6cfa=['delete','multer','connect-timeout','Router','fs-extra','./interval.controller','get','isAuthenticated','index','/:id','post','create','addInterval','/:id/sub_intervals/create_many','put','update'];(function(_0x171fa7,_0x587eca){var _0xc894e1=function(_0x43d7c7){while(--_0x43d7c7){_0x171fa7['push'](_0x171fa7['shift']());}};_0xc894e1(++_0x587eca);}(_0x6cfa,0xa1));var _0xa6cf=function(_0x50720c,_0x13f3e0){_0x50720c=_0x50720c-0x0;var _0x3674cd=_0x6cfa[_0x50720c];return _0x3674cd;};'use strict';var multer=require(_0xa6cf('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa6cf('0x1'));var express=require('express');var router=express[_0xa6cf('0x2')]();var fs_extra=require(_0xa6cf('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa6cf('0x4'));router[_0xa6cf('0x5')]('/',auth[_0xa6cf('0x6')](),controller[_0xa6cf('0x7')]);router[_0xa6cf('0x5')](_0xa6cf('0x8'),auth[_0xa6cf('0x6')](),controller['show']);router[_0xa6cf('0x5')]('/:id/sub_intervals',auth[_0xa6cf('0x6')](),controller['getIntervals']);router[_0xa6cf('0x9')]('/',auth[_0xa6cf('0x6')](),controller[_0xa6cf('0xa')]);router[_0xa6cf('0x9')]('/:id/sub_intervals',auth[_0xa6cf('0x6')](),controller[_0xa6cf('0xb')]);router[_0xa6cf('0x9')](_0xa6cf('0xc'),auth[_0xa6cf('0x6')](),controller['addIntervals']);router[_0xa6cf('0xd')](_0xa6cf('0x8'),auth[_0xa6cf('0x6')](),controller[_0xa6cf('0xe')]);router[_0xa6cf('0xf')](_0xa6cf('0x8'),auth[_0xa6cf('0x6')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 4932b0e..4ec17fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb74c=['exports','STRING','sequelize'];(function(_0x51ed1b,_0x4fda60){var _0x5b4cbd=function(_0x1d4993){while(--_0x1d4993){_0x51ed1b['push'](_0x51ed1b['shift']());}};_0x5b4cbd(++_0x4fda60);}(_0xb74c,0x1b2));var _0xcb74=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xb74c[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require(_0xcb74('0x0'));module[_0xcb74('0x1')]={'name':{'type':Sequelize[_0xcb74('0x2')]},'description':{'type':Sequelize[_0xcb74('0x2')]},'interval':{'type':Sequelize[_0xcb74('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x4ef7=['sequelize','exports','STRING'];(function(_0x3bddde,_0x1713a2){var _0x4965b1=function(_0x133a93){while(--_0x133a93){_0x3bddde['push'](_0x3bddde['shift']());}};_0x4965b1(++_0x1713a2);}(_0x4ef7,0xde));var _0x74ef=function(_0x25ad85,_0x5756f3){_0x25ad85=_0x25ad85-0x0;var _0x535962=_0x4ef7[_0x25ad85];return _0x535962;};'use strict';var Sequelize=require(_0x74ef('0x0'));module[_0x74ef('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x74ef('0x2')]},'interval':{'type':Sequelize[_0x74ef('0x2')],'allowNull':!![]}};
\ No newline at end of file
index c4c58f1..31497e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0309=['type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','get','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','IntervalId','order','getIntervals','addIntervals','findOne','sequelize','transaction','rimraf','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','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','../../components/extensions/rewrite','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','Intervals','UserProfileResource','sendStatus','error','stack','name','index','map','Interval','fieldName'];(function(_0x43de82,_0x11c692){var _0x364c32=function(_0x4361ef){while(--_0x4361ef){_0x43de82['push'](_0x43de82['shift']());}};_0x364c32(++_0x11c692);}(_0x0309,0x13b));var _0x9030=function(_0x4d134b,_0xf28167){_0x4d134b=_0x4d134b-0x0;var _0xe1409f=_0x0309[_0x4d134b];return _0xe1409f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9030('0x0'));var zipdir=require(_0x9030('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9030('0x2'));var BPromise=require(_0x9030('0x3'));var Mustache=require(_0x9030('0x4'));var util=require(_0x9030('0x5'));var path=require(_0x9030('0x6'));var sox=require('sox');var csv=require(_0x9030('0x7'));var ejs=require(_0x9030('0x8'));var fs=require('fs');var fs_extra=require(_0x9030('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9030('0xa'));var jsforce=require(_0x9030('0xb'));var deskjs=require(_0x9030('0xc'));var toCsv=require(_0x9030('0x7'));var querystring=require(_0x9030('0xd'));var Papa=require(_0x9030('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9030('0xf'));var as=require(_0x9030('0x10'));var hardwareService=require(_0x9030('0x11'));var logger=require(_0x9030('0x12'))(_0x9030('0x13'));var utils=require(_0x9030('0x14'));var config=require(_0x9030('0x15'));var licenseUtil=require(_0x9030('0x16'));var db=require('../../mysqldb')['db'];var extensions=require(_0x9030('0x17'));function respondWithStatusCode(_0x12ece6,_0x3010d3){_0x3010d3=_0x3010d3||0xcc;return function(_0x5541d4){if(_0x5541d4){return _0x12ece6['sendStatus'](_0x3010d3);}return _0x12ece6[_0x9030('0x18')](_0x3010d3)[_0x9030('0x19')]();};}function respondWithResult(_0x16e227,_0x4bb2d3){_0x4bb2d3=_0x4bb2d3||0xc8;return function(_0x3726a9){if(_0x3726a9){return _0x16e227[_0x9030('0x18')](_0x4bb2d3)[_0x9030('0x1a')](_0x3726a9);}};}function respondWithFilteredResult(_0x3b871c,_0x52bc40){return function(_0x25a884){if(_0x25a884){var _0x29bfcb=typeof _0x52bc40[_0x9030('0x1b')]===_0x9030('0x1c')&&typeof _0x52bc40[_0x9030('0x1d')]===_0x9030('0x1c');var _0xe6da8e=_0x25a884[_0x9030('0x1e')];var _0x3fb671=_0x29bfcb?0x0:_0x52bc40['offset'];var _0x2f4c2b=_0x29bfcb?_0x25a884[_0x9030('0x1e')]:_0x52bc40[_0x9030('0x1b')]+_0x52bc40['limit'];var _0x3c716d;if(_0x2f4c2b>=_0xe6da8e){_0x2f4c2b=_0xe6da8e;_0x3c716d=0xc8;}else{_0x3c716d=0xce;}_0x3b871c[_0x9030('0x18')](_0x3c716d);return _0x3b871c[_0x9030('0x1f')](_0x9030('0x20'),_0x3fb671+'-'+_0x2f4c2b+'/'+_0xe6da8e)[_0x9030('0x1a')](_0x25a884);}return null;};}function patchUpdates(_0x3431a8){return function(_0x215db0){try{jsonpatch[_0x9030('0x21')](_0x215db0,_0x3431a8,!![]);}catch(_0x51325e){return BPromise[_0x9030('0x22')](_0x51325e);}return _0x215db0[_0x9030('0x23')]();};}function saveUpdates(_0xdab9d6,_0x5cf654){return function(_0x51704f){if(_0x51704f){return _0x51704f[_0x9030('0x24')](_0xdab9d6)[_0x9030('0x25')](function(_0x2dfd77){return _0x2dfd77;});}return null;};}function removeEntity(_0x130096,_0xe51661){return function(_0x4e38b3){if(_0x4e38b3){return _0x4e38b3[_0x9030('0x26')]()['then'](function(){var _0x11ddce=_0x4e38b3['get']({'plain':!![]});var _0x1cd407=_0x9030('0x27');return db[_0x9030('0x28')][_0x9030('0x26')]({'where':{'type':_0x1cd407,'resourceId':_0x11ddce['id']}})['then'](function(){return _0x4e38b3;});})[_0x9030('0x25')](function(){_0x130096[_0x9030('0x18')](0xcc)[_0x9030('0x19')]();});}};}function handleEntityNotFound(_0x2776aa,_0x489d20){return function(_0x407a32){if(!_0x407a32){_0x2776aa[_0x9030('0x29')](0x194);}return _0x407a32;};}function handleError(_0x347077,_0x2ed5dc){_0x2ed5dc=_0x2ed5dc||0x1f4;return function(_0x227983){logger[_0x9030('0x2a')](_0x227983[_0x9030('0x2b')]);if(_0x227983[_0x9030('0x2c')]){delete _0x227983['name'];}_0x347077[_0x9030('0x18')](_0x2ed5dc)['send'](_0x227983);};}exports[_0x9030('0x2d')]=function(_0x371f2d,_0x5a7694){var _0x310fa0={},_0x362cf5={},_0x262ef5={'count':0x0,'rows':[]};var _0x101d19=_[_0x9030('0x2e')](db[_0x9030('0x2f')]['rawAttributes'],function(_0x1cc7db){return{'name':_0x1cc7db[_0x9030('0x30')],'type':_0x1cc7db[_0x9030('0x31')][_0x9030('0x32')]};});_0x362cf5[_0x9030('0x33')]=_['map'](_0x101d19,_0x9030('0x2c'));_0x362cf5[_0x9030('0x34')]=_[_0x9030('0x35')](_0x371f2d['query']);_0x362cf5['filters']=_['intersection'](_0x362cf5[_0x9030('0x33')],_0x362cf5[_0x9030('0x34')]);_0x310fa0[_0x9030('0x36')]=_[_0x9030('0x37')](_0x362cf5[_0x9030('0x33')],qs['fields'](_0x371f2d[_0x9030('0x34')][_0x9030('0x38')]));_0x310fa0[_0x9030('0x36')]=_0x310fa0[_0x9030('0x36')][_0x9030('0x39')]?_0x310fa0[_0x9030('0x36')]:_0x362cf5[_0x9030('0x33')];if(!_0x371f2d['query'][_0x9030('0x3a')](_0x9030('0x3b'))){_0x310fa0[_0x9030('0x1d')]=qs[_0x9030('0x1d')](_0x371f2d['query'][_0x9030('0x1d')]);_0x310fa0['offset']=qs[_0x9030('0x1b')](_0x371f2d[_0x9030('0x34')]['offset']);}_0x310fa0['order']=qs[_0x9030('0x3c')](_0x371f2d[_0x9030('0x34')][_0x9030('0x3c')]);_0x310fa0[_0x9030('0x3d')]=qs[_0x9030('0x3e')](_[_0x9030('0x3f')](_0x371f2d['query'],_0x362cf5[_0x9030('0x3e')]),_0x101d19);if(_0x371f2d['query'][_0x9030('0x40')]){_0x310fa0[_0x9030('0x3d')]=_['merge'](_0x310fa0[_0x9030('0x3d')],{'$or':_['map'](_0x101d19,function(_0x340d25){if(_0x340d25[_0x9030('0x31')]!==_0x9030('0x41')){var _0x369d91={};_0x369d91[_0x340d25[_0x9030('0x2c')]]={'$like':'%'+_0x371f2d[_0x9030('0x34')][_0x9030('0x40')]+'%'};return _0x369d91;}})});}_0x310fa0=_[_0x9030('0x42')]({},_0x310fa0,_0x371f2d[_0x9030('0x43')]);var _0x5a2466={'where':_0x310fa0[_0x9030('0x3d')]};return db['Interval'][_0x9030('0x1e')](_0x5a2466)['then'](function(_0x1b89e6){_0x262ef5[_0x9030('0x1e')]=_0x1b89e6;if(_0x371f2d[_0x9030('0x34')][_0x9030('0x44')]){_0x310fa0[_0x9030('0x45')]=[{'all':!![]}];}return db[_0x9030('0x2f')][_0x9030('0x46')](_0x310fa0);})[_0x9030('0x25')](function(_0x51aecb){_0x262ef5[_0x9030('0x47')]=_0x51aecb;return _0x262ef5;})[_0x9030('0x25')](respondWithFilteredResult(_0x5a7694,_0x310fa0))[_0x9030('0x48')](handleError(_0x5a7694,null));};exports['show']=function(_0x557e27,_0x2cfc9c){var _0x26ae0e={'raw':!![],'where':{'id':_0x557e27[_0x9030('0x49')]['id']}},_0x24df97={};_0x24df97['model']=_[_0x9030('0x35')](db[_0x9030('0x2f')][_0x9030('0x4a')]);_0x24df97[_0x9030('0x34')]=_[_0x9030('0x35')](_0x557e27['query']);_0x24df97[_0x9030('0x3e')]=_['intersection'](_0x24df97[_0x9030('0x33')],_0x24df97[_0x9030('0x34')]);_0x26ae0e[_0x9030('0x36')]=_[_0x9030('0x37')](_0x24df97['model'],qs['fields'](_0x557e27['query']['fields']));_0x26ae0e[_0x9030('0x36')]=_0x26ae0e[_0x9030('0x36')][_0x9030('0x39')]?_0x26ae0e['attributes']:_0x24df97['model'];if(_0x557e27['query'][_0x9030('0x44')]){_0x26ae0e[_0x9030('0x45')]=[{'all':!![]}];}_0x26ae0e=_[_0x9030('0x42')]({},_0x26ae0e,_0x557e27[_0x9030('0x43')]);return db['Interval'][_0x9030('0x4b')](_0x26ae0e)[_0x9030('0x25')](handleEntityNotFound(_0x2cfc9c,null))['then'](respondWithResult(_0x2cfc9c,null))['catch'](handleError(_0x2cfc9c,null));};exports[_0x9030('0x4c')]=function(_0xb2d68d,_0x53d75c){return db[_0x9030('0x2f')][_0x9030('0x4c')](_0xb2d68d[_0x9030('0x4d')],{})['then'](function(_0x508e88){var _0xe92b7=_0xb2d68d['user'][_0x9030('0x4e')]({'plain':!![]});if(!_0xe92b7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xe92b7['role']===_0x9030('0x4f')){var _0x4b90fc=_0x508e88[_0x9030('0x4e')]({'plain':!![]});var _0x2798b8=_0x9030('0x27');return db[_0x9030('0x50')]['find']({'where':{'name':_0x2798b8,'userProfileId':_0xe92b7[_0x9030('0x51')]},'raw':!![]})['then'](function(_0x3da1ef){if(_0x3da1ef&&_0x3da1ef[_0x9030('0x52')]===0x0){return db[_0x9030('0x28')][_0x9030('0x4c')]({'name':_0x4b90fc['name'],'resourceId':_0x4b90fc['id'],'type':_0x3da1ef[_0x9030('0x2c')],'sectionId':_0x3da1ef['id']},{})[_0x9030('0x25')](function(){return _0x508e88;});}else{return _0x508e88;}})[_0x9030('0x48')](function(_0x402b80){logger[_0x9030('0x2a')](_0x9030('0x53'),_0x402b80);throw _0x402b80;});}return _0x508e88;})[_0x9030('0x25')](respondWithResult(_0x53d75c,0xc9))['catch'](handleError(_0x53d75c,null));};exports[_0x9030('0x24')]=function(_0x38f2be,_0x4802d6){if(_0x38f2be[_0x9030('0x4d')]['id']){delete _0x38f2be[_0x9030('0x4d')]['id'];}return db[_0x9030('0x2f')]['find']({'where':{'id':_0x38f2be[_0x9030('0x49')]['id']}})['then'](handleEntityNotFound(_0x4802d6,null))[_0x9030('0x25')](saveUpdates(_0x38f2be[_0x9030('0x4d')],null))[_0x9030('0x25')](respondWithResult(_0x4802d6,null))[_0x9030('0x48')](handleError(_0x4802d6,null));};exports[_0x9030('0x26')]=function(_0x2611e6,_0x50e703){return db[_0x9030('0x2f')]['find']({'where':{'id':_0x2611e6[_0x9030('0x49')]['id']}})[_0x9030('0x25')](handleEntityNotFound(_0x50e703,null))[_0x9030('0x25')](removeEntity(_0x50e703,null))[_0x9030('0x48')](handleError(_0x50e703,null));};exports['addInterval']=function(_0x5a3447,_0x52e7a6,_0x203609){if(_0x5a3447[_0x9030('0x4d')]['id']){delete _0x5a3447[_0x9030('0x4d')]['id'];}return db[_0x9030('0x2f')][_0x9030('0x4b')]({'where':{'id':_0x5a3447[_0x9030('0x49')]['id']}})[_0x9030('0x25')](handleEntityNotFound(_0x52e7a6,null))[_0x9030('0x25')](function(_0x6af937){if(_0x6af937){_0x5a3447[_0x9030('0x4d')][_0x9030('0x54')]=_0x6af937['id'];return db[_0x9030('0x2f')][_0x9030('0x4c')](_0x5a3447[_0x9030('0x4d')]);}})[_0x9030('0x25')](respondWithResult(_0x52e7a6,null))[_0x9030('0x48')](handleError(_0x52e7a6,null));};exports['getIntervals']=function(_0x4e4589,_0x261be7,_0x37354a){var _0x2d24cf={};var _0x1c4032={};var _0x26c170;var _0x234f0e;return db['Interval']['findOne']({'where':{'id':_0x4e4589[_0x9030('0x49')]['id']}})['then'](handleEntityNotFound(_0x261be7,null))[_0x9030('0x25')](function(_0x3a80f6){if(_0x3a80f6){_0x26c170=_0x3a80f6;_0x1c4032[_0x9030('0x33')]=_[_0x9030('0x35')](db['Interval'][_0x9030('0x4a')]);_0x1c4032[_0x9030('0x34')]=_[_0x9030('0x35')](_0x4e4589[_0x9030('0x34')]);_0x1c4032[_0x9030('0x3e')]=_[_0x9030('0x37')](_0x1c4032[_0x9030('0x33')],_0x1c4032['query']);_0x2d24cf['attributes']=_[_0x9030('0x37')](_0x1c4032[_0x9030('0x33')],qs[_0x9030('0x38')](_0x4e4589['query']['fields']));_0x2d24cf[_0x9030('0x36')]=_0x2d24cf[_0x9030('0x36')][_0x9030('0x39')]?_0x2d24cf[_0x9030('0x36')]:_0x1c4032[_0x9030('0x33')];_0x2d24cf[_0x9030('0x55')]=qs[_0x9030('0x3c')](_0x4e4589[_0x9030('0x34')][_0x9030('0x3c')]);_0x2d24cf[_0x9030('0x3d')]=qs[_0x9030('0x3e')](_['pick'](_0x4e4589[_0x9030('0x34')],_0x1c4032[_0x9030('0x3e')]));if(_0x4e4589[_0x9030('0x34')][_0x9030('0x40')]){_0x2d24cf[_0x9030('0x3d')]=_[_0x9030('0x42')](_0x2d24cf['where'],{'$or':_[_0x9030('0x2e')](_0x2d24cf[_0x9030('0x36')],function(_0x37b436){var _0xfdcfdf={};_0xfdcfdf[_0x37b436]={'$like':'%'+_0x4e4589[_0x9030('0x34')][_0x9030('0x40')]+'%'};return _0xfdcfdf;})});}_0x2d24cf=_[_0x9030('0x42')]({},_0x2d24cf,_0x4e4589[_0x9030('0x43')]);return _0x26c170[_0x9030('0x56')](_0x2d24cf);}})[_0x9030('0x25')](function(_0x193e79){if(_0x193e79){_0x234f0e=_0x193e79[_0x9030('0x39')];if(!_0x4e4589[_0x9030('0x34')][_0x9030('0x3a')](_0x9030('0x3b'))){_0x2d24cf[_0x9030('0x1d')]=qs['limit'](_0x4e4589['query'][_0x9030('0x1d')]);_0x2d24cf['offset']=qs[_0x9030('0x1b')](_0x4e4589[_0x9030('0x34')][_0x9030('0x1b')]);}return _0x26c170['getIntervals'](_0x2d24cf);}})[_0x9030('0x25')](function(_0xd1950a){if(_0xd1950a){return _0xd1950a?{'count':_0x234f0e,'rows':_0xd1950a}:null;}})[_0x9030('0x25')](respondWithResult(_0x261be7,null))[_0x9030('0x48')](handleError(_0x261be7,null));};exports[_0x9030('0x57')]=function(_0x1c23c8,_0x1e9b16,_0x35b78f){return db[_0x9030('0x2f')][_0x9030('0x58')]({'where':{'id':_0x1c23c8[_0x9030('0x49')]['id']}})[_0x9030('0x25')](handleEntityNotFound(_0x1e9b16,null))[_0x9030('0x25')](function(_0x11b92c){if(_0x11b92c){return db[_0x9030('0x59')][_0x9030('0x5a')](function(_0x19cea5){return db[_0x9030('0x2f')][_0x9030('0x26')]({'where':{'IntervalId':_0x1c23c8[_0x9030('0x49')]['id']},'transaction':_0x19cea5})[_0x9030('0x25')](function(_0x46c9b5){var _0x9b61db=_[_0x9030('0x2e')](_0x1c23c8[_0x9030('0x4d')],function(_0x50c097){delete _0x50c097['id'];_0x50c097[_0x9030('0x54')]=_0x1c23c8[_0x9030('0x49')]['id'];return _0x50c097;});return db['Interval']['bulkCreate'](_0x9b61db,{'transaction':_0x19cea5});});})[_0x9030('0x25')](function(){return db[_0x9030('0x2f')][_0x9030('0x46')]({'where':{'IntervalId':_0x1c23c8[_0x9030('0x49')]['id']}});});}})[_0x9030('0x25')](respondWithResult(_0x1e9b16,null))[_0x9030('0x48')](handleError(_0x1e9b16,null));};
\ No newline at end of file
+var _0xee91=['Content-Range','apply','reject','update','then','destroy','get','Intervals','UserProfileResource','error','name','send','map','Interval','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','filter','type','VIRTUAL','merge','options','include','findAll','show','includeAll','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','create','catch','body','params','addInterval','findOne','filters','sort','pick','getIntervals','addIntervals','sequelize','transaction','IntervalId','bulkCreate','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','to-csv','ejs','lodash','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','../../mysqldb','../../components/extensions/rewrite','sendStatus','end','status','json','offset','undefined','limit','count','set'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0xee91,0x1a6));var _0x1ee9=function(_0x12d39b,_0x153dca){_0x12d39b=_0x12d39b-0x0;var _0x2da792=_0xee91[_0x12d39b];return _0x2da792;};'use strict';var emlformat=require(_0x1ee9('0x0'));var rimraf=require(_0x1ee9('0x1'));var zipdir=require(_0x1ee9('0x2'));var jsonpatch=require(_0x1ee9('0x3'));var rp=require('request-promise');var moment=require(_0x1ee9('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1ee9('0x5'));var util=require('util');var path=require(_0x1ee9('0x6'));var sox=require('sox');var csv=require(_0x1ee9('0x7'));var ejs=require(_0x1ee9('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1ee9('0x9'));var squel=require('squel');var crypto=require(_0x1ee9('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x1ee9('0xb'));var toCsv=require(_0x1ee9('0x7'));var querystring=require('querystring');var Papa=require(_0x1ee9('0xc'));var Redis=require(_0x1ee9('0xd'));var authService=require(_0x1ee9('0xe'));var qs=require(_0x1ee9('0xf'));var as=require(_0x1ee9('0x10'));var hardwareService=require(_0x1ee9('0x11'));var logger=require(_0x1ee9('0x12'))(_0x1ee9('0x13'));var utils=require('../../config/utils');var config=require(_0x1ee9('0x14'));var licenseUtil=require(_0x1ee9('0x15'));var db=require(_0x1ee9('0x16'))['db'];var extensions=require(_0x1ee9('0x17'));function respondWithStatusCode(_0x548841,_0x4c1134){_0x4c1134=_0x4c1134||0xcc;return function(_0x17dd8f){if(_0x17dd8f){return _0x548841[_0x1ee9('0x18')](_0x4c1134);}return _0x548841['status'](_0x4c1134)[_0x1ee9('0x19')]();};}function respondWithResult(_0x5b5d39,_0x38845c){_0x38845c=_0x38845c||0xc8;return function(_0x152763){if(_0x152763){return _0x5b5d39[_0x1ee9('0x1a')](_0x38845c)[_0x1ee9('0x1b')](_0x152763);}};}function respondWithFilteredResult(_0x39115b,_0x360d07){return function(_0x33f590){if(_0x33f590){var _0x575368=typeof _0x360d07[_0x1ee9('0x1c')]===_0x1ee9('0x1d')&&typeof _0x360d07[_0x1ee9('0x1e')]===_0x1ee9('0x1d');var _0x12ed3b=_0x33f590[_0x1ee9('0x1f')];var _0x1a4b0c=_0x575368?0x0:_0x360d07[_0x1ee9('0x1c')];var _0x2009c0=_0x575368?_0x33f590[_0x1ee9('0x1f')]:_0x360d07['offset']+_0x360d07[_0x1ee9('0x1e')];var _0x447ca4;if(_0x2009c0>=_0x12ed3b){_0x2009c0=_0x12ed3b;_0x447ca4=0xc8;}else{_0x447ca4=0xce;}_0x39115b[_0x1ee9('0x1a')](_0x447ca4);return _0x39115b[_0x1ee9('0x20')](_0x1ee9('0x21'),_0x1a4b0c+'-'+_0x2009c0+'/'+_0x12ed3b)[_0x1ee9('0x1b')](_0x33f590);}return null;};}function patchUpdates(_0xa46cb9){return function(_0x386655){try{jsonpatch[_0x1ee9('0x22')](_0x386655,_0xa46cb9,!![]);}catch(_0x49c4a7){return BPromise[_0x1ee9('0x23')](_0x49c4a7);}return _0x386655['save']();};}function saveUpdates(_0xa229a6,_0x49c445){return function(_0x46ace3){if(_0x46ace3){return _0x46ace3[_0x1ee9('0x24')](_0xa229a6)[_0x1ee9('0x25')](function(_0x14e001){return _0x14e001;});}return null;};}function removeEntity(_0x3f267e,_0x528e4a){return function(_0x2be63e){if(_0x2be63e){return _0x2be63e[_0x1ee9('0x26')]()[_0x1ee9('0x25')](function(){var _0x37068a=_0x2be63e[_0x1ee9('0x27')]({'plain':!![]});var _0x4fec76=_0x1ee9('0x28');return db[_0x1ee9('0x29')][_0x1ee9('0x26')]({'where':{'type':_0x4fec76,'resourceId':_0x37068a['id']}})['then'](function(){return _0x2be63e;});})[_0x1ee9('0x25')](function(){_0x3f267e[_0x1ee9('0x1a')](0xcc)[_0x1ee9('0x19')]();});}};}function handleEntityNotFound(_0x3edeb7,_0x3d29ee){return function(_0x2b581c){if(!_0x2b581c){_0x3edeb7[_0x1ee9('0x18')](0x194);}return _0x2b581c;};}function handleError(_0x4435b1,_0x4ff15a){_0x4ff15a=_0x4ff15a||0x1f4;return function(_0x202559){logger[_0x1ee9('0x2a')](_0x202559['stack']);if(_0x202559['name']){delete _0x202559[_0x1ee9('0x2b')];}_0x4435b1[_0x1ee9('0x1a')](_0x4ff15a)[_0x1ee9('0x2c')](_0x202559);};}exports['index']=function(_0x29d893,_0x54ed79){var _0xab7f10={},_0x5ede62={},_0x34f48d={'count':0x0,'rows':[]};var _0x8b4c98=_[_0x1ee9('0x2d')](db[_0x1ee9('0x2e')][_0x1ee9('0x2f')],function(_0x4a9a73){return{'name':_0x4a9a73[_0x1ee9('0x30')],'type':_0x4a9a73['type'][_0x1ee9('0x31')]};});_0x5ede62[_0x1ee9('0x32')]=_[_0x1ee9('0x2d')](_0x8b4c98,_0x1ee9('0x2b'));_0x5ede62[_0x1ee9('0x33')]=_[_0x1ee9('0x34')](_0x29d893['query']);_0x5ede62['filters']=_[_0x1ee9('0x35')](_0x5ede62[_0x1ee9('0x32')],_0x5ede62[_0x1ee9('0x33')]);_0xab7f10['attributes']=_['intersection'](_0x5ede62['model'],qs[_0x1ee9('0x36')](_0x29d893['query'][_0x1ee9('0x36')]));_0xab7f10['attributes']=_0xab7f10[_0x1ee9('0x37')][_0x1ee9('0x38')]?_0xab7f10[_0x1ee9('0x37')]:_0x5ede62[_0x1ee9('0x32')];if(!_0x29d893[_0x1ee9('0x33')][_0x1ee9('0x39')](_0x1ee9('0x3a'))){_0xab7f10['limit']=qs[_0x1ee9('0x1e')](_0x29d893[_0x1ee9('0x33')][_0x1ee9('0x1e')]);_0xab7f10[_0x1ee9('0x1c')]=qs[_0x1ee9('0x1c')](_0x29d893[_0x1ee9('0x33')][_0x1ee9('0x1c')]);}_0xab7f10[_0x1ee9('0x3b')]=qs['sort'](_0x29d893[_0x1ee9('0x33')]['sort']);_0xab7f10[_0x1ee9('0x3c')]=qs['filters'](_['pick'](_0x29d893[_0x1ee9('0x33')],_0x5ede62['filters']),_0x8b4c98);if(_0x29d893['query'][_0x1ee9('0x3d')]){_0xab7f10[_0x1ee9('0x3c')]=_['merge'](_0xab7f10['where'],{'$or':_[_0x1ee9('0x2d')](_0x8b4c98,function(_0x23b03a){if(_0x23b03a[_0x1ee9('0x3e')]!==_0x1ee9('0x3f')){var _0x250a42={};_0x250a42[_0x23b03a[_0x1ee9('0x2b')]]={'$like':'%'+_0x29d893[_0x1ee9('0x33')][_0x1ee9('0x3d')]+'%'};return _0x250a42;}})});}_0xab7f10=_[_0x1ee9('0x40')]({},_0xab7f10,_0x29d893[_0x1ee9('0x41')]);var _0x217953={'where':_0xab7f10['where']};return db[_0x1ee9('0x2e')][_0x1ee9('0x1f')](_0x217953)['then'](function(_0x4a9ab8){_0x34f48d[_0x1ee9('0x1f')]=_0x4a9ab8;if(_0x29d893[_0x1ee9('0x33')]['includeAll']){_0xab7f10[_0x1ee9('0x42')]=[{'all':!![]}];}return db[_0x1ee9('0x2e')][_0x1ee9('0x43')](_0xab7f10);})[_0x1ee9('0x25')](function(_0x45edcc){_0x34f48d['rows']=_0x45edcc;return _0x34f48d;})['then'](respondWithFilteredResult(_0x54ed79,_0xab7f10))['catch'](handleError(_0x54ed79,null));};exports[_0x1ee9('0x44')]=function(_0x51deac,_0x2348dc){var _0x36eced={'raw':!![],'where':{'id':_0x51deac['params']['id']}},_0x3c9f81={};_0x3c9f81[_0x1ee9('0x32')]=_['keys'](db['Interval']['rawAttributes']);_0x3c9f81[_0x1ee9('0x33')]=_[_0x1ee9('0x34')](_0x51deac[_0x1ee9('0x33')]);_0x3c9f81['filters']=_[_0x1ee9('0x35')](_0x3c9f81[_0x1ee9('0x32')],_0x3c9f81[_0x1ee9('0x33')]);_0x36eced['attributes']=_[_0x1ee9('0x35')](_0x3c9f81[_0x1ee9('0x32')],qs[_0x1ee9('0x36')](_0x51deac['query'][_0x1ee9('0x36')]));_0x36eced['attributes']=_0x36eced['attributes'][_0x1ee9('0x38')]?_0x36eced[_0x1ee9('0x37')]:_0x3c9f81[_0x1ee9('0x32')];if(_0x51deac[_0x1ee9('0x33')][_0x1ee9('0x45')]){_0x36eced['include']=[{'all':!![]}];}_0x36eced=_[_0x1ee9('0x40')]({},_0x36eced,_0x51deac[_0x1ee9('0x41')]);return db['Interval']['find'](_0x36eced)[_0x1ee9('0x25')](handleEntityNotFound(_0x2348dc,null))[_0x1ee9('0x25')](respondWithResult(_0x2348dc,null))['catch'](handleError(_0x2348dc,null));};exports['create']=function(_0x27ce89,_0x266a53){return db[_0x1ee9('0x2e')]['create'](_0x27ce89['body'],{})[_0x1ee9('0x25')](function(_0x20a086){var _0x24d7b8=_0x27ce89[_0x1ee9('0x46')][_0x1ee9('0x27')]({'plain':!![]});if(!_0x24d7b8)throw new Error(_0x1ee9('0x47'));if(_0x24d7b8['role']===_0x1ee9('0x46')){var _0x21347a=_0x20a086[_0x1ee9('0x27')]({'plain':!![]});var _0x344e01=_0x1ee9('0x28');return db[_0x1ee9('0x48')][_0x1ee9('0x49')]({'where':{'name':_0x344e01,'userProfileId':_0x24d7b8[_0x1ee9('0x4a')]},'raw':!![]})['then'](function(_0x351403){if(_0x351403&&_0x351403[_0x1ee9('0x4b')]===0x0){return db['UserProfileResource'][_0x1ee9('0x4c')]({'name':_0x21347a[_0x1ee9('0x2b')],'resourceId':_0x21347a['id'],'type':_0x351403['name'],'sectionId':_0x351403['id']},{})['then'](function(){return _0x20a086;});}else{return _0x20a086;}})[_0x1ee9('0x4d')](function(_0x55e395){logger[_0x1ee9('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x55e395);throw _0x55e395;});}return _0x20a086;})['then'](respondWithResult(_0x266a53,0xc9))['catch'](handleError(_0x266a53,null));};exports[_0x1ee9('0x24')]=function(_0x1de08f,_0x180e13){if(_0x1de08f[_0x1ee9('0x4e')]['id']){delete _0x1de08f['body']['id'];}return db['Interval'][_0x1ee9('0x49')]({'where':{'id':_0x1de08f[_0x1ee9('0x4f')]['id']}})[_0x1ee9('0x25')](handleEntityNotFound(_0x180e13,null))[_0x1ee9('0x25')](saveUpdates(_0x1de08f[_0x1ee9('0x4e')],null))[_0x1ee9('0x25')](respondWithResult(_0x180e13,null))[_0x1ee9('0x4d')](handleError(_0x180e13,null));};exports[_0x1ee9('0x26')]=function(_0x53716a,_0x4fb58c){return db[_0x1ee9('0x2e')][_0x1ee9('0x49')]({'where':{'id':_0x53716a[_0x1ee9('0x4f')]['id']}})[_0x1ee9('0x25')](handleEntityNotFound(_0x4fb58c,null))[_0x1ee9('0x25')](removeEntity(_0x4fb58c,null))['catch'](handleError(_0x4fb58c,null));};exports[_0x1ee9('0x50')]=function(_0x4a06df,_0x52bc08,_0x455b9f){if(_0x4a06df[_0x1ee9('0x4e')]['id']){delete _0x4a06df[_0x1ee9('0x4e')]['id'];}return db['Interval'][_0x1ee9('0x49')]({'where':{'id':_0x4a06df[_0x1ee9('0x4f')]['id']}})[_0x1ee9('0x25')](handleEntityNotFound(_0x52bc08,null))[_0x1ee9('0x25')](function(_0x19c04f){if(_0x19c04f){_0x4a06df[_0x1ee9('0x4e')]['IntervalId']=_0x19c04f['id'];return db[_0x1ee9('0x2e')]['create'](_0x4a06df[_0x1ee9('0x4e')]);}})[_0x1ee9('0x25')](respondWithResult(_0x52bc08,null))['catch'](handleError(_0x52bc08,null));};exports['getIntervals']=function(_0x4573ef,_0x421a45,_0x12b7a7){var _0x4023ae={};var _0x321598={};var _0x196d50;var _0x466e9a;return db[_0x1ee9('0x2e')][_0x1ee9('0x51')]({'where':{'id':_0x4573ef[_0x1ee9('0x4f')]['id']}})['then'](handleEntityNotFound(_0x421a45,null))[_0x1ee9('0x25')](function(_0x140f98){if(_0x140f98){_0x196d50=_0x140f98;_0x321598['model']=_[_0x1ee9('0x34')](db[_0x1ee9('0x2e')][_0x1ee9('0x2f')]);_0x321598['query']=_[_0x1ee9('0x34')](_0x4573ef[_0x1ee9('0x33')]);_0x321598[_0x1ee9('0x52')]=_[_0x1ee9('0x35')](_0x321598[_0x1ee9('0x32')],_0x321598[_0x1ee9('0x33')]);_0x4023ae[_0x1ee9('0x37')]=_[_0x1ee9('0x35')](_0x321598['model'],qs[_0x1ee9('0x36')](_0x4573ef[_0x1ee9('0x33')][_0x1ee9('0x36')]));_0x4023ae[_0x1ee9('0x37')]=_0x4023ae[_0x1ee9('0x37')][_0x1ee9('0x38')]?_0x4023ae[_0x1ee9('0x37')]:_0x321598[_0x1ee9('0x32')];_0x4023ae[_0x1ee9('0x3b')]=qs[_0x1ee9('0x53')](_0x4573ef[_0x1ee9('0x33')][_0x1ee9('0x53')]);_0x4023ae[_0x1ee9('0x3c')]=qs[_0x1ee9('0x52')](_[_0x1ee9('0x54')](_0x4573ef[_0x1ee9('0x33')],_0x321598[_0x1ee9('0x52')]));if(_0x4573ef[_0x1ee9('0x33')]['filter']){_0x4023ae[_0x1ee9('0x3c')]=_[_0x1ee9('0x40')](_0x4023ae[_0x1ee9('0x3c')],{'$or':_[_0x1ee9('0x2d')](_0x4023ae[_0x1ee9('0x37')],function(_0x53806f){var _0x3daecc={};_0x3daecc[_0x53806f]={'$like':'%'+_0x4573ef[_0x1ee9('0x33')]['filter']+'%'};return _0x3daecc;})});}_0x4023ae=_[_0x1ee9('0x40')]({},_0x4023ae,_0x4573ef[_0x1ee9('0x41')]);return _0x196d50[_0x1ee9('0x55')](_0x4023ae);}})[_0x1ee9('0x25')](function(_0x32048f){if(_0x32048f){_0x466e9a=_0x32048f[_0x1ee9('0x38')];if(!_0x4573ef[_0x1ee9('0x33')][_0x1ee9('0x39')](_0x1ee9('0x3a'))){_0x4023ae['limit']=qs['limit'](_0x4573ef['query'][_0x1ee9('0x1e')]);_0x4023ae['offset']=qs[_0x1ee9('0x1c')](_0x4573ef[_0x1ee9('0x33')][_0x1ee9('0x1c')]);}return _0x196d50[_0x1ee9('0x55')](_0x4023ae);}})[_0x1ee9('0x25')](function(_0x981569){if(_0x981569){return _0x981569?{'count':_0x466e9a,'rows':_0x981569}:null;}})[_0x1ee9('0x25')](respondWithResult(_0x421a45,null))[_0x1ee9('0x4d')](handleError(_0x421a45,null));};exports[_0x1ee9('0x56')]=function(_0x1f1113,_0x425fc7,_0x2e63da){return db['Interval']['findOne']({'where':{'id':_0x1f1113[_0x1ee9('0x4f')]['id']}})[_0x1ee9('0x25')](handleEntityNotFound(_0x425fc7,null))[_0x1ee9('0x25')](function(_0x51f5af){if(_0x51f5af){return db[_0x1ee9('0x57')][_0x1ee9('0x58')](function(_0x146621){return db[_0x1ee9('0x2e')][_0x1ee9('0x26')]({'where':{'IntervalId':_0x1f1113['params']['id']},'transaction':_0x146621})[_0x1ee9('0x25')](function(_0x3470da){var _0x2c2788=_[_0x1ee9('0x2d')](_0x1f1113[_0x1ee9('0x4e')],function(_0x186575){delete _0x186575['id'];_0x186575[_0x1ee9('0x59')]=_0x1f1113[_0x1ee9('0x4f')]['id'];return _0x186575;});return db[_0x1ee9('0x2e')][_0x1ee9('0x5a')](_0x2c2788,{'transaction':_0x146621});});})[_0x1ee9('0x25')](function(){return db['Interval'][_0x1ee9('0x43')]({'where':{'IntervalId':_0x1f1113['params']['id']}});});}})[_0x1ee9('0x25')](respondWithResult(_0x425fc7,null))['catch'](handleError(_0x425fc7,null));};
\ No newline at end of file
index 0e5c0a4..c366920 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf86=['exports','define','Interval','tools_intervals','rewrite','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./interval.attributes','../../components/extensions/rewrite'];(function(_0x1561e9,_0x355395){var _0x3c4e39=function(_0x23a071){while(--_0x23a071){_0x1561e9['push'](_0x1561e9['shift']());}};_0x3c4e39(++_0x355395);}(_0xcf86,0x165));var _0x6cf8=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xcf86[_0x4154a6];return _0x3b2786;};'use strict';var _=require(_0x6cf8('0x0'));var util=require(_0x6cf8('0x1'));var logger=require(_0x6cf8('0x2'))(_0x6cf8('0x3'));var moment=require(_0x6cf8('0x4'));var BPromise=require('bluebird');var rp=require(_0x6cf8('0x5'));var fs=require('fs');var path=require(_0x6cf8('0x6'));var rimraf=require(_0x6cf8('0x7'));var config=require(_0x6cf8('0x8'));var attributes=require(_0x6cf8('0x9'));var extensions=require(_0x6cf8('0xa'));module[_0x6cf8('0xb')]=function(_0x989abd,_0x33c512){return _0x989abd[_0x6cf8('0xc')](_0x6cf8('0xd'),attributes,{'tableName':_0x6cf8('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x56ff80,_0x32382b){extensions[_0x6cf8('0xf')](_0x989abd,_0x56ff80);},'afterBulkCreate':function(_0x1cd98e,_0x56fce5,_0x44126c){_0x44126c();extensions[_0x6cf8('0xf')](_0x989abd,_0x1cd98e[0x0]);},'afterUpdate':function(_0xdd2a1d,_0x32dde7){extensions[_0x6cf8('0xf')](_0x989abd,_0xdd2a1d);},'afterDestroy':function(_0x475d9e,_0x2b4145){extensions[_0x6cf8('0xf')](_0x989abd,_0x475d9e);}}});};
\ No newline at end of file
+var _0xd739=['./interval.attributes','define','Interval','tools_intervals','rewrite','lodash','util','bluebird','path','rimraf','../../config/environment'];(function(_0x671369,_0x433da5){var _0x33f2b4=function(_0x2e9db2){while(--_0x2e9db2){_0x671369['push'](_0x671369['shift']());}};_0x33f2b4(++_0x433da5);}(_0xd739,0x17b));var _0x9d73=function(_0xbd2eed,_0x3a2929){_0xbd2eed=_0xbd2eed-0x0;var _0x335242=_0xd739[_0xbd2eed];return _0x335242;};'use strict';var _=require(_0x9d73('0x0'));var util=require(_0x9d73('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x9d73('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9d73('0x3'));var rimraf=require(_0x9d73('0x4'));var config=require(_0x9d73('0x5'));var attributes=require(_0x9d73('0x6'));var extensions=require('../../components/extensions/rewrite');module['exports']=function(_0x3a6dca,_0x4763e0){return _0x3a6dca[_0x9d73('0x7')](_0x9d73('0x8'),attributes,{'tableName':_0x9d73('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x236ac5,_0x14eb0b){extensions['rewrite'](_0x3a6dca,_0x236ac5);},'afterBulkCreate':function(_0x491d1d,_0x5b7e65,_0x37a4d6){_0x37a4d6();extensions['rewrite'](_0x3a6dca,_0x491d1d[0x0]);},'afterUpdate':function(_0x27cd2b,_0x3913ac){extensions[_0x9d73('0xa')](_0x3a6dca,_0x27cd2b);},'afterDestroy':function(_0x51686b,_0x35c3ce){extensions[_0x9d73('0xa')](_0x3a6dca,_0x51686b);}}});};
\ No newline at end of file
index c183373..0c459d5 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(_0x13cab0,_0x14d825){var _0x38804f=function(_0x1bffaf){while(--_0x1bffaf){_0x13cab0['push'](_0x13cab0['shift']());}};_0x38804f(++_0x14d825);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'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(_0x34c553,_0x3e7dfc){var _0x1357d2=function(_0x3b509f){while(--_0x3b509f){_0x34c553['push'](_0x34c553['shift']());}};_0x1357d2(++_0x3e7dfc);}(_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 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 9b36fbe..629fc05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['exports','express','../../components/auth/service','post','isAuthenticated','send'];(function(_0x1a7846,_0x59723e){var _0x48049=function(_0x203ff6){while(--_0x203ff6){_0x1a7846['push'](_0x1a7846['shift']());}};_0x48049(++_0x59723e);}(_0x0b0e,0x187));var _0xe0b0=function(_0x10d8c7,_0xa80d12){_0x10d8c7=_0x10d8c7-0x0;var _0x4105b9=_0x0b0e[_0x10d8c7];return _0x4105b9;};'use strict';var express=require(_0xe0b0('0x0'));var router=express['Router']();var auth=require(_0xe0b0('0x1'));var controller=require('./jira.controller');router[_0xe0b0('0x2')]('/',auth[_0xe0b0('0x3')](),controller[_0xe0b0('0x4')]);module[_0xe0b0('0x5')]=router;
\ No newline at end of file
+var _0x2ef3=['./jira.controller','post','isAuthenticated','exports','express','Router','../../components/auth/service'];(function(_0x49de32,_0x571cc3){var _0x4b592c=function(_0x2ad700){while(--_0x2ad700){_0x49de32['push'](_0x49de32['shift']());}};_0x4b592c(++_0x571cc3);}(_0x2ef3,0xba));var _0x32ef=function(_0x2241fb,_0x166516){_0x2241fb=_0x2241fb-0x0;var _0x241ce9=_0x2ef3[_0x2241fb];return _0x241ce9;};'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
index 5a5e975..3fd6257 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0fb=['customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','Basic\x20','toString','base64','request','setEncoding','data','end','statusCode','json','parse','error','status','api.jira','write','body','headers','connection','remoteAddress','socket','https','../../config/logger','api','3eAmWpBVP0','key','MOTGUI','summary','\x20from\x20','description','stringify','issuetype','Bug','customfield_11500','email','oldToken','fields','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason'];(function(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0xf0fb,0x1ac));var _0xbf0f=function(_0x1d7466,_0x161771){_0x1d7466=_0x1d7466-0x0;var _0x3ebbb6=_0xf0fb[_0x1d7466];return _0x3ebbb6;};'use strict';var BPromise=require('bluebird');var https=require(_0xbf0f('0x0'));var logger=require(_0xbf0f('0x1'))(_0xbf0f('0x2'));var USERNAME='support';var PASSWORD=_0xbf0f('0x3');function openIssue(_0x22a467,_0x28f32a){var _0x4840b5={'fields':{'project':{'key':_0x22a467[_0xbf0f('0x4')]||_0xbf0f('0x5')},'summary':(_0x22a467[_0xbf0f('0x6')]||'Report')+_0xbf0f('0x7')+_0x22a467['ip'],'description':_0x22a467[_0xbf0f('0x8')]||JSON[_0xbf0f('0x9')](_0x22a467),'issuetype':{'name':_0x22a467[_0xbf0f('0xa')]||_0xbf0f('0xb')}}};_0x4840b5['fields'][_0xbf0f('0xc')]=_0x22a467[_0xbf0f('0xd')];_0x4840b5['fields']['customfield_11501']=_0x22a467[_0xbf0f('0xe')];_0x4840b5[_0xbf0f('0xf')][_0xbf0f('0x10')]=_0x22a467[_0xbf0f('0x11')];_0x4840b5[_0xbf0f('0xf')][_0xbf0f('0x12')]=_0x22a467[_0xbf0f('0x13')];_0x4840b5['fields'][_0xbf0f('0x14')]=_0x22a467[_0xbf0f('0x15')];_0x4840b5['fields'][_0xbf0f('0x16')]=_0x22a467['ip'];var _0x256fa3={'host':_0xbf0f('0x17'),'port':0x1bb,'path':_0xbf0f('0x18'),'method':_0xbf0f('0x19'),'timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':_0xbf0f('0x1a')+new Buffer(USERNAME+':'+PASSWORD)[_0xbf0f('0x1b')](_0xbf0f('0x1c'))}};var _0x5e451b=JSON[_0xbf0f('0x9')](_0x4840b5);var _0x3a5e22=https[_0xbf0f('0x1d')](_0x256fa3,function(_0x11a59d){_0x11a59d[_0xbf0f('0x1e')]('utf8');var _0x5ef7e5='';_0x11a59d['on'](_0xbf0f('0x1f'),function(_0x58a02d){_0x5ef7e5+=_0x58a02d;});_0x11a59d['on'](_0xbf0f('0x20'),function(){if(_0x28f32a){return _0x28f32a['status'](_0x11a59d[_0xbf0f('0x21')])[_0xbf0f('0x22')](JSON[_0xbf0f('0x23')](_0x5ef7e5));}});});_0x3a5e22['on'](_0xbf0f('0x24'),function(_0x131f79){if(_0x28f32a){return _0x28f32a[_0xbf0f('0x25')](0x1f4)[_0xbf0f('0x22')]({'errors':[{'message':'Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','type':_0xbf0f('0x26')}]});}});_0x3a5e22[_0xbf0f('0x27')](_0x5e451b);_0x3a5e22[_0xbf0f('0x20')]();}exports['openIssue']=openIssue;exports['send']=function(_0x34bbca,_0x58ddc4){_0x34bbca[_0xbf0f('0x28')]['ip']=_0x34bbca[_0xbf0f('0x29')]['x-forwarded-for']||_0x34bbca[_0xbf0f('0x2a')][_0xbf0f('0x2b')]||_0x34bbca[_0xbf0f('0x2c')]['remoteAddress']||_0x34bbca[_0xbf0f('0x2a')][_0xbf0f('0x2c')]['remoteAddress'];return openIssue(_0x34bbca[_0xbf0f('0x28')],_0x58ddc4);};
\ No newline at end of file
+var _0xb769=['api','key','MOTGUI','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','fields','customfield_11500','email','oldToken','customfield_11502','newToken','customfield_11503','reason','customfield_10102','POST','application/json','Basic\x20','toString','base64','request','setEncoding','utf8','data','json','parse','error','status','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','end','openIssue','send','headers','x-forwarded-for','connection','remoteAddress','body','https','../../config/logger'];(function(_0x2a4a08,_0x482c4e){var _0x1e90f5=function(_0x301070){while(--_0x301070){_0x2a4a08['push'](_0x2a4a08['shift']());}};_0x1e90f5(++_0x482c4e);}(_0xb769,0x1ed));var _0x9b76=function(_0x4a1dc4,_0x418a88){_0x4a1dc4=_0x4a1dc4-0x0;var _0x32845c=_0xb769[_0x4a1dc4];return _0x32845c;};'use strict';var BPromise=require('bluebird');var https=require(_0x9b76('0x0'));var logger=require(_0x9b76('0x1'))(_0x9b76('0x2'));var USERNAME='support';var PASSWORD='3eAmWpBVP0';function openIssue(_0x349cb6,_0x162b1d){var _0x22a2bd={'fields':{'project':{'key':_0x349cb6[_0x9b76('0x3')]||_0x9b76('0x4')},'summary':(_0x349cb6[_0x9b76('0x5')]||_0x9b76('0x6'))+_0x9b76('0x7')+_0x349cb6['ip'],'description':_0x349cb6[_0x9b76('0x8')]||JSON[_0x9b76('0x9')](_0x349cb6),'issuetype':{'name':_0x349cb6[_0x9b76('0xa')]||_0x9b76('0xb')}}};_0x22a2bd[_0x9b76('0xc')][_0x9b76('0xd')]=_0x349cb6[_0x9b76('0xe')];_0x22a2bd[_0x9b76('0xc')]['customfield_11501']=_0x349cb6[_0x9b76('0xf')];_0x22a2bd[_0x9b76('0xc')][_0x9b76('0x10')]=_0x349cb6[_0x9b76('0x11')];_0x22a2bd[_0x9b76('0xc')][_0x9b76('0x12')]=_0x349cb6['name'];_0x22a2bd['fields']['customfield_11504']=_0x349cb6[_0x9b76('0x13')];_0x22a2bd[_0x9b76('0xc')][_0x9b76('0x14')]=_0x349cb6['ip'];var _0x4342f5={'host':'track.xcallymotion.com','port':0x1bb,'path':'/rest/api/2/issue','method':_0x9b76('0x15'),'timeout':0x4e20,'headers':{'Content-Type':_0x9b76('0x16'),'Authorization':_0x9b76('0x17')+new Buffer(USERNAME+':'+PASSWORD)[_0x9b76('0x18')](_0x9b76('0x19'))}};var _0x4c4f7d=JSON[_0x9b76('0x9')](_0x22a2bd);var _0x2064e3=https[_0x9b76('0x1a')](_0x4342f5,function(_0x5783d7){_0x5783d7[_0x9b76('0x1b')](_0x9b76('0x1c'));var _0x505065='';_0x5783d7['on'](_0x9b76('0x1d'),function(_0x2227d0){_0x505065+=_0x2227d0;});_0x5783d7['on']('end',function(){if(_0x162b1d){return _0x162b1d['status'](_0x5783d7['statusCode'])[_0x9b76('0x1e')](JSON[_0x9b76('0x1f')](_0x505065));}});});_0x2064e3['on'](_0x9b76('0x20'),function(_0x4ff19a){if(_0x162b1d){return _0x162b1d[_0x9b76('0x21')](0x1f4)[_0x9b76('0x1e')]({'errors':[{'message':_0x9b76('0x22'),'type':_0x9b76('0x23')}]});}});_0x2064e3[_0x9b76('0x24')](_0x4c4f7d);_0x2064e3[_0x9b76('0x25')]();}exports[_0x9b76('0x26')]=openIssue;exports[_0x9b76('0x27')]=function(_0x5868d7,_0x2df29b){_0x5868d7['body']['ip']=_0x5868d7[_0x9b76('0x28')][_0x9b76('0x29')]||_0x5868d7[_0x9b76('0x2a')][_0x9b76('0x2b')]||_0x5868d7['socket'][_0x9b76('0x2b')]||_0x5868d7[_0x9b76('0x2a')]['socket'][_0x9b76('0x2b')];return openIssue(_0x5868d7[_0x9b76('0x2c')],_0x2df29b);};
\ No newline at end of file
index ee065d8..62c8c01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4e6=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','get','isAuthenticated','describe','show','post','create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x5e53fc,_0x2d4a44){var _0x4451f1=function(_0x2ea631){while(--_0x2ea631){_0x5e53fc['push'](_0x5e53fc['shift']());}};_0x4451f1(++_0x2d4a44);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x4bfade,_0xb26c0e){_0x4bfade=_0x4bfade-0x0;var _0x272465=_0xb4e6[_0x4bfade];return _0x272465;};'use strict';var multer=require(_0x6b4e('0x0'));var util=require('util');var path=require(_0x6b4e('0x1'));var timeout=require(_0x6b4e('0x2'));var express=require(_0x6b4e('0x3'));var router=express[_0x6b4e('0x4')]();var fs_extra=require(_0x6b4e('0x5'));var auth=require(_0x6b4e('0x6'));var interaction=require(_0x6b4e('0x7'));var config=require('../../config/environment');var controller=require(_0x6b4e('0x8'));router[_0x6b4e('0x9')]('/',auth[_0x6b4e('0xa')](),controller['index']);router[_0x6b4e('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x6b4e('0xb')]);router['get']('/:id',auth[_0x6b4e('0xa')](),controller[_0x6b4e('0xc')]);router[_0x6b4e('0xd')]('/',auth[_0x6b4e('0xa')](),controller[_0x6b4e('0xe')]);router[_0x6b4e('0xf')](_0x6b4e('0x10'),auth['isAuthenticated'](),controller[_0x6b4e('0x11')]);router[_0x6b4e('0x12')]('/:id',auth[_0x6b4e('0xa')](),controller[_0x6b4e('0x13')]);module[_0x6b4e('0x14')]=router;
\ No newline at end of file
+var _0x41bb=['show','post','create','put','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','get','isAuthenticated','describe','/:id'];(function(_0x2a8e37,_0x5cdb8a){var _0x1701f0=function(_0x3a37bf){while(--_0x3a37bf){_0x2a8e37['push'](_0x2a8e37['shift']());}};_0x1701f0(++_0x5cdb8a);}(_0x41bb,0xc5));var _0xb41b=function(_0x491f74,_0x10b98c){_0x491f74=_0x491f74-0x0;var _0x1f372a=_0x41bb[_0x491f74];return _0x1f372a;};'use strict';var multer=require(_0xb41b('0x0'));var util=require(_0xb41b('0x1'));var path=require('path');var timeout=require(_0xb41b('0x2'));var express=require('express');var router=express[_0xb41b('0x3')]();var fs_extra=require(_0xb41b('0x4'));var auth=require(_0xb41b('0x5'));var interaction=require(_0xb41b('0x6'));var config=require('../../config/environment');var controller=require(_0xb41b('0x7'));router[_0xb41b('0x8')]('/',auth[_0xb41b('0x9')](),controller['index']);router['get']('/describe',auth[_0xb41b('0x9')](),controller[_0xb41b('0xa')]);router['get'](_0xb41b('0xb'),auth[_0xb41b('0x9')](),controller[_0xb41b('0xc')]);router[_0xb41b('0xd')]('/',auth[_0xb41b('0x9')](),controller[_0xb41b('0xe')]);router[_0xb41b('0xf')]('/:id',auth[_0xb41b('0x9')](),controller['update']);router[_0xb41b('0x10')](_0xb41b('0xb'),auth[_0xb41b('0x9')](),controller[_0xb41b('0x11')]);module[_0xb41b('0x12')]=router;
\ No newline at end of file
index a0dbfbd..56b2c49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x578e88,_0x67df6b){_0x578e88=_0x578e88-0x0;var _0x21e1c7=_0x7a54[_0x578e88];return _0x21e1c7;};'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(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x7a54,0x106));var _0x47a5=function(_0x3ac945,_0x3e6231){_0x3ac945=_0x3ac945-0x0;var _0x450a94=_0x7a54[_0x3ac945];return _0x450a94;};'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 a196a86..e99fe49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f5a=['limit','status','set','apply','reject','save','update','then','stack','name','send','index','map','JscriptyAnswerReport','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','catch','params','include','create','body','destroy','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count'];(function(_0x5782a3,_0x2d54f3){var _0x5dcae1=function(_0x27e769){while(--_0x27e769){_0x5782a3['push'](_0x5782a3['shift']());}};_0x5dcae1(++_0x2d54f3);}(_0x9f5a,0xbd));var _0xa9f5=function(_0x307c6a,_0x38baf5){_0x307c6a=_0x307c6a-0x0;var _0x165bb9=_0x9f5a[_0x307c6a];return _0x165bb9;};'use strict';var emlformat=require(_0xa9f5('0x0'));var rimraf=require(_0xa9f5('0x1'));var zipdir=require(_0xa9f5('0x2'));var jsonpatch=require(_0xa9f5('0x3'));var rp=require('request-promise');var moment=require(_0xa9f5('0x4'));var BPromise=require(_0xa9f5('0x5'));var Mustache=require(_0xa9f5('0x6'));var util=require('util');var path=require(_0xa9f5('0x7'));var sox=require('sox');var csv=require(_0xa9f5('0x8'));var ejs=require(_0xa9f5('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa9f5('0xa'));var squel=require(_0xa9f5('0xb'));var crypto=require(_0xa9f5('0xc'));var jsforce=require(_0xa9f5('0xd'));var deskjs=require(_0xa9f5('0xe'));var toCsv=require(_0xa9f5('0x8'));var querystring=require(_0xa9f5('0xf'));var Papa=require('papaparse');var Redis=require(_0xa9f5('0x10'));var authService=require(_0xa9f5('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa9f5('0x12'));var hardwareService=require(_0xa9f5('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xa9f5('0x14'));var config=require(_0xa9f5('0x15'));var licenseUtil=require(_0xa9f5('0x16'));var db=require(_0xa9f5('0x17'))['db'];function respondWithStatusCode(_0x4c26a8,_0x788dec){_0x788dec=_0x788dec||0xcc;return function(_0x24ce85){if(_0x24ce85){return _0x4c26a8[_0xa9f5('0x18')](_0x788dec);}return _0x4c26a8['status'](_0x788dec)[_0xa9f5('0x19')]();};}function respondWithResult(_0x899513,_0x5a5653){_0x5a5653=_0x5a5653||0xc8;return function(_0x58609c){if(_0x58609c){return _0x899513['status'](_0x5a5653)[_0xa9f5('0x1a')](_0x58609c);}};}function respondWithFilteredResult(_0x48bfdc,_0x5f2b6a){return function(_0x870466){if(_0x870466){var _0x131ed6=typeof _0x5f2b6a[_0xa9f5('0x1b')]===_0xa9f5('0x1c')&&typeof _0x5f2b6a['limit']===_0xa9f5('0x1c');var _0x401ae7=_0x870466[_0xa9f5('0x1d')];var _0x45af85=_0x131ed6?0x0:_0x5f2b6a[_0xa9f5('0x1b')];var _0x1ee027=_0x131ed6?_0x870466[_0xa9f5('0x1d')]:_0x5f2b6a[_0xa9f5('0x1b')]+_0x5f2b6a[_0xa9f5('0x1e')];var _0x38bd22;if(_0x1ee027>=_0x401ae7){_0x1ee027=_0x401ae7;_0x38bd22=0xc8;}else{_0x38bd22=0xce;}_0x48bfdc[_0xa9f5('0x1f')](_0x38bd22);return _0x48bfdc[_0xa9f5('0x20')]('Content-Range',_0x45af85+'-'+_0x1ee027+'/'+_0x401ae7)[_0xa9f5('0x1a')](_0x870466);}return null;};}function patchUpdates(_0x131f21){return function(_0x28779c){try{jsonpatch[_0xa9f5('0x21')](_0x28779c,_0x131f21,!![]);}catch(_0x322430){return BPromise[_0xa9f5('0x22')](_0x322430);}return _0x28779c[_0xa9f5('0x23')]();};}function saveUpdates(_0x48b473,_0x1bf2c7){return function(_0x2ea752){if(_0x2ea752){return _0x2ea752[_0xa9f5('0x24')](_0x48b473)[_0xa9f5('0x25')](function(_0xf15d71){return _0xf15d71;});}return null;};}function removeEntity(_0x2626ca,_0x1a204e){return function(_0x41e9aa){if(_0x41e9aa){return _0x41e9aa['destroy']()[_0xa9f5('0x25')](function(){_0x2626ca[_0xa9f5('0x1f')](0xcc)[_0xa9f5('0x19')]();});}};}function handleEntityNotFound(_0x24c8eb,_0x2c2e9f){return function(_0x31b517){if(!_0x31b517){_0x24c8eb['sendStatus'](0x194);}return _0x31b517;};}function handleError(_0x3911c8,_0x49e850){_0x49e850=_0x49e850||0x1f4;return function(_0x53caa4){logger['error'](_0x53caa4[_0xa9f5('0x26')]);if(_0x53caa4[_0xa9f5('0x27')]){delete _0x53caa4[_0xa9f5('0x27')];}_0x3911c8[_0xa9f5('0x1f')](_0x49e850)[_0xa9f5('0x28')](_0x53caa4);};}exports[_0xa9f5('0x29')]=function(_0x51741f,_0x2fbe8c){var _0x43ba93={},_0x41f2f4={},_0x5faf64={'count':0x0,'rows':[]};var _0x23dee2=_[_0xa9f5('0x2a')](db[_0xa9f5('0x2b')][_0xa9f5('0x2c')],function(_0x5a422b){return{'name':_0x5a422b['fieldName'],'type':_0x5a422b['type'][_0xa9f5('0x2d')]};});_0x41f2f4[_0xa9f5('0x2e')]=_[_0xa9f5('0x2a')](_0x23dee2,_0xa9f5('0x27'));_0x41f2f4[_0xa9f5('0x2f')]=_[_0xa9f5('0x30')](_0x51741f[_0xa9f5('0x2f')]);_0x41f2f4[_0xa9f5('0x31')]=_[_0xa9f5('0x32')](_0x41f2f4[_0xa9f5('0x2e')],_0x41f2f4[_0xa9f5('0x2f')]);_0x43ba93[_0xa9f5('0x33')]=_[_0xa9f5('0x32')](_0x41f2f4['model'],qs[_0xa9f5('0x34')](_0x51741f[_0xa9f5('0x2f')][_0xa9f5('0x34')]));_0x43ba93[_0xa9f5('0x33')]=_0x43ba93[_0xa9f5('0x33')][_0xa9f5('0x35')]?_0x43ba93[_0xa9f5('0x33')]:_0x41f2f4[_0xa9f5('0x2e')];if(!_0x51741f['query'][_0xa9f5('0x36')]('nolimit')){_0x43ba93[_0xa9f5('0x1e')]=qs[_0xa9f5('0x1e')](_0x51741f['query'][_0xa9f5('0x1e')]);_0x43ba93[_0xa9f5('0x1b')]=qs[_0xa9f5('0x1b')](_0x51741f[_0xa9f5('0x2f')]['offset']);}_0x43ba93[_0xa9f5('0x37')]=qs[_0xa9f5('0x38')](_0x51741f['query'][_0xa9f5('0x38')]);_0x43ba93[_0xa9f5('0x39')]=qs[_0xa9f5('0x31')](_[_0xa9f5('0x3a')](_0x51741f[_0xa9f5('0x2f')],_0x41f2f4[_0xa9f5('0x31')]),_0x23dee2);if(_0x51741f[_0xa9f5('0x2f')][_0xa9f5('0x3b')]){_0x43ba93[_0xa9f5('0x39')]=_['merge'](_0x43ba93['where'],{'$or':_[_0xa9f5('0x2a')](_0x23dee2,function(_0x2930eb){if(_0x2930eb['type']!==_0xa9f5('0x3c')){var _0x256212={};_0x256212[_0x2930eb[_0xa9f5('0x27')]]={'$like':'%'+_0x51741f[_0xa9f5('0x2f')]['filter']+'%'};return _0x256212;}})});}_0x43ba93=_[_0xa9f5('0x3d')]({},_0x43ba93,_0x51741f[_0xa9f5('0x3e')]);var _0x5a4715={'where':_0x43ba93[_0xa9f5('0x39')]};return db[_0xa9f5('0x2b')]['count'](_0x5a4715)[_0xa9f5('0x25')](function(_0x40b5fb){_0x5faf64['count']=_0x40b5fb;if(_0x51741f[_0xa9f5('0x2f')][_0xa9f5('0x3f')]){_0x43ba93['include']=[{'all':!![]}];}return db[_0xa9f5('0x2b')][_0xa9f5('0x40')](_0x43ba93);})['then'](function(_0x465f95){_0x5faf64['rows']=_0x465f95;return _0x5faf64;})[_0xa9f5('0x25')](respondWithFilteredResult(_0x2fbe8c,_0x43ba93))[_0xa9f5('0x41')](handleError(_0x2fbe8c,null));};exports['show']=function(_0xde7ab7,_0x488380){var _0x5de828={'raw':!![],'where':{'id':_0xde7ab7[_0xa9f5('0x42')]['id']}},_0x2732b2={};_0x2732b2[_0xa9f5('0x2e')]=_[_0xa9f5('0x30')](db[_0xa9f5('0x2b')][_0xa9f5('0x2c')]);_0x2732b2[_0xa9f5('0x2f')]=_[_0xa9f5('0x30')](_0xde7ab7[_0xa9f5('0x2f')]);_0x2732b2['filters']=_[_0xa9f5('0x32')](_0x2732b2[_0xa9f5('0x2e')],_0x2732b2[_0xa9f5('0x2f')]);_0x5de828[_0xa9f5('0x33')]=_[_0xa9f5('0x32')](_0x2732b2[_0xa9f5('0x2e')],qs[_0xa9f5('0x34')](_0xde7ab7[_0xa9f5('0x2f')][_0xa9f5('0x34')]));_0x5de828[_0xa9f5('0x33')]=_0x5de828[_0xa9f5('0x33')][_0xa9f5('0x35')]?_0x5de828[_0xa9f5('0x33')]:_0x2732b2[_0xa9f5('0x2e')];if(_0xde7ab7[_0xa9f5('0x2f')][_0xa9f5('0x3f')]){_0x5de828[_0xa9f5('0x43')]=[{'all':!![]}];}_0x5de828=_[_0xa9f5('0x3d')]({},_0x5de828,_0xde7ab7[_0xa9f5('0x3e')]);return db['JscriptyAnswerReport']['find'](_0x5de828)[_0xa9f5('0x25')](handleEntityNotFound(_0x488380,null))[_0xa9f5('0x25')](respondWithResult(_0x488380,null))['catch'](handleError(_0x488380,null));};exports[_0xa9f5('0x44')]=function(_0x30ae0f,_0x44ee96){return db['JscriptyAnswerReport'][_0xa9f5('0x44')](_0x30ae0f['body'],{})[_0xa9f5('0x25')](respondWithResult(_0x44ee96,0xc9))[_0xa9f5('0x41')](handleError(_0x44ee96,null));};exports[_0xa9f5('0x24')]=function(_0x836a8d,_0x102ed8){if(_0x836a8d[_0xa9f5('0x45')]['id']){delete _0x836a8d['body']['id'];}return db[_0xa9f5('0x2b')]['find']({'where':{'id':_0x836a8d['params']['id']}})[_0xa9f5('0x25')](handleEntityNotFound(_0x102ed8,null))['then'](saveUpdates(_0x836a8d[_0xa9f5('0x45')],null))['then'](respondWithResult(_0x102ed8,null))[_0xa9f5('0x41')](handleError(_0x102ed8,null));};exports[_0xa9f5('0x46')]=function(_0xafeecc,_0x4c3587){return db[_0xa9f5('0x2b')][_0xa9f5('0x47')]({'where':{'id':_0xafeecc[_0xa9f5('0x42')]['id']}})['then'](handleEntityNotFound(_0x4c3587,null))[_0xa9f5('0x25')](removeEntity(_0x4c3587,null))['catch'](handleError(_0x4c3587,null));};exports['describe']=function(_0x455918,_0x1f6bd3){return db[_0xa9f5('0x2b')][_0xa9f5('0x48')]()['then'](respondWithResult(_0x1f6bd3,null))[_0xa9f5('0x41')](handleError(_0x1f6bd3,null));};
\ No newline at end of file
+var _0x126e=['../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','JscriptyAnswerReport','rawAttributes','type','model','map','keys','query','filters','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','include','show','params','intersection','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x1563ac,_0xb60ec3){var _0x13df69=function(_0x4d2636){while(--_0x4d2636){_0x1563ac['push'](_0x1563ac['shift']());}};_0x13df69(++_0xb60ec3);}(_0x126e,0x108));var _0xe126=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x126e[_0x565c49];return _0x20ca34;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe126('0x0'));var zipdir=require(_0xe126('0x1'));var jsonpatch=require(_0xe126('0x2'));var rp=require(_0xe126('0x3'));var moment=require(_0xe126('0x4'));var BPromise=require(_0xe126('0x5'));var Mustache=require('mustache');var util=require(_0xe126('0x6'));var path=require(_0xe126('0x7'));var sox=require(_0xe126('0x8'));var csv=require(_0xe126('0x9'));var ejs=require(_0xe126('0xa'));var fs=require('fs');var fs_extra=require(_0xe126('0xb'));var _=require(_0xe126('0xc'));var squel=require('squel');var crypto=require(_0xe126('0xd'));var jsforce=require(_0xe126('0xe'));var deskjs=require(_0xe126('0xf'));var toCsv=require(_0xe126('0x9'));var querystring=require(_0xe126('0x10'));var Papa=require('papaparse');var Redis=require(_0xe126('0x11'));var authService=require(_0xe126('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xe126('0x13'));var hardwareService=require(_0xe126('0x14'));var logger=require('../../config/logger')(_0xe126('0x15'));var utils=require('../../config/utils');var config=require(_0xe126('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe126('0x17'))['db'];function respondWithStatusCode(_0x34ae06,_0x23ff02){_0x23ff02=_0x23ff02||0xcc;return function(_0x38b8c3){if(_0x38b8c3){return _0x34ae06[_0xe126('0x18')](_0x23ff02);}return _0x34ae06[_0xe126('0x19')](_0x23ff02)[_0xe126('0x1a')]();};}function respondWithResult(_0x55f10a,_0xd55baf){_0xd55baf=_0xd55baf||0xc8;return function(_0x1c02c9){if(_0x1c02c9){return _0x55f10a['status'](_0xd55baf)[_0xe126('0x1b')](_0x1c02c9);}};}function respondWithFilteredResult(_0x28d7dd,_0x10bc24){return function(_0x38b0c0){if(_0x38b0c0){var _0x5e52d1=typeof _0x10bc24[_0xe126('0x1c')]===_0xe126('0x1d')&&typeof _0x10bc24[_0xe126('0x1e')]==='undefined';var _0x2b0baa=_0x38b0c0['count'];var _0x46c98a=_0x5e52d1?0x0:_0x10bc24[_0xe126('0x1c')];var _0x19b0a3=_0x5e52d1?_0x38b0c0[_0xe126('0x1f')]:_0x10bc24[_0xe126('0x1c')]+_0x10bc24[_0xe126('0x1e')];var _0x20874b;if(_0x19b0a3>=_0x2b0baa){_0x19b0a3=_0x2b0baa;_0x20874b=0xc8;}else{_0x20874b=0xce;}_0x28d7dd[_0xe126('0x19')](_0x20874b);return _0x28d7dd['set'](_0xe126('0x20'),_0x46c98a+'-'+_0x19b0a3+'/'+_0x2b0baa)[_0xe126('0x1b')](_0x38b0c0);}return null;};}function patchUpdates(_0x35ab64){return function(_0x2e5617){try{jsonpatch[_0xe126('0x21')](_0x2e5617,_0x35ab64,!![]);}catch(_0x24076e){return BPromise[_0xe126('0x22')](_0x24076e);}return _0x2e5617[_0xe126('0x23')]();};}function saveUpdates(_0x5257bc,_0x4a1a97){return function(_0xdb6544){if(_0xdb6544){return _0xdb6544[_0xe126('0x24')](_0x5257bc)[_0xe126('0x25')](function(_0x5f1ce1){return _0x5f1ce1;});}return null;};}function removeEntity(_0x5381e1,_0x47f179){return function(_0x4807d3){if(_0x4807d3){return _0x4807d3[_0xe126('0x26')]()['then'](function(){_0x5381e1[_0xe126('0x19')](0xcc)[_0xe126('0x1a')]();});}};}function handleEntityNotFound(_0x4157ed,_0x1674c9){return function(_0x532409){if(!_0x532409){_0x4157ed['sendStatus'](0x194);}return _0x532409;};}function handleError(_0x26482f,_0x4facea){_0x4facea=_0x4facea||0x1f4;return function(_0x3f5de5){logger[_0xe126('0x27')](_0x3f5de5[_0xe126('0x28')]);if(_0x3f5de5['name']){delete _0x3f5de5[_0xe126('0x29')];}_0x26482f[_0xe126('0x19')](_0x4facea)['send'](_0x3f5de5);};}exports[_0xe126('0x2a')]=function(_0x259059,_0x5a8b2a){var _0x9d9e28={},_0x1fb354={},_0x29dec4={'count':0x0,'rows':[]};var _0x181ccc=_['map'](db[_0xe126('0x2b')][_0xe126('0x2c')],function(_0x5e7bab){return{'name':_0x5e7bab['fieldName'],'type':_0x5e7bab[_0xe126('0x2d')]['key']};});_0x1fb354[_0xe126('0x2e')]=_[_0xe126('0x2f')](_0x181ccc,_0xe126('0x29'));_0x1fb354['query']=_[_0xe126('0x30')](_0x259059[_0xe126('0x31')]);_0x1fb354[_0xe126('0x32')]=_['intersection'](_0x1fb354[_0xe126('0x2e')],_0x1fb354[_0xe126('0x31')]);_0x9d9e28['attributes']=_['intersection'](_0x1fb354[_0xe126('0x2e')],qs[_0xe126('0x33')](_0x259059[_0xe126('0x31')][_0xe126('0x33')]));_0x9d9e28[_0xe126('0x34')]=_0x9d9e28[_0xe126('0x34')][_0xe126('0x35')]?_0x9d9e28[_0xe126('0x34')]:_0x1fb354['model'];if(!_0x259059[_0xe126('0x31')][_0xe126('0x36')](_0xe126('0x37'))){_0x9d9e28[_0xe126('0x1e')]=qs[_0xe126('0x1e')](_0x259059[_0xe126('0x31')]['limit']);_0x9d9e28[_0xe126('0x1c')]=qs[_0xe126('0x1c')](_0x259059[_0xe126('0x31')][_0xe126('0x1c')]);}_0x9d9e28[_0xe126('0x38')]=qs['sort'](_0x259059[_0xe126('0x31')][_0xe126('0x39')]);_0x9d9e28[_0xe126('0x3a')]=qs[_0xe126('0x32')](_['pick'](_0x259059[_0xe126('0x31')],_0x1fb354[_0xe126('0x32')]),_0x181ccc);if(_0x259059[_0xe126('0x31')][_0xe126('0x3b')]){_0x9d9e28[_0xe126('0x3a')]=_[_0xe126('0x3c')](_0x9d9e28['where'],{'$or':_[_0xe126('0x2f')](_0x181ccc,function(_0x1a8edf){if(_0x1a8edf[_0xe126('0x2d')]!=='VIRTUAL'){var _0x5073bc={};_0x5073bc[_0x1a8edf[_0xe126('0x29')]]={'$like':'%'+_0x259059[_0xe126('0x31')][_0xe126('0x3b')]+'%'};return _0x5073bc;}})});}_0x9d9e28=_[_0xe126('0x3c')]({},_0x9d9e28,_0x259059[_0xe126('0x3d')]);var _0x1c128d={'where':_0x9d9e28['where']};return db[_0xe126('0x2b')][_0xe126('0x1f')](_0x1c128d)['then'](function(_0x4eb3d7){_0x29dec4[_0xe126('0x1f')]=_0x4eb3d7;if(_0x259059[_0xe126('0x31')]['includeAll']){_0x9d9e28[_0xe126('0x3e')]=[{'all':!![]}];}return db[_0xe126('0x2b')]['findAll'](_0x9d9e28);})[_0xe126('0x25')](function(_0x366754){_0x29dec4['rows']=_0x366754;return _0x29dec4;})[_0xe126('0x25')](respondWithFilteredResult(_0x5a8b2a,_0x9d9e28))['catch'](handleError(_0x5a8b2a,null));};exports[_0xe126('0x3f')]=function(_0x23d1d8,_0x5d5111){var _0x3613de={'raw':!![],'where':{'id':_0x23d1d8[_0xe126('0x40')]['id']}},_0x149b84={};_0x149b84['model']=_[_0xe126('0x30')](db['JscriptyAnswerReport'][_0xe126('0x2c')]);_0x149b84[_0xe126('0x31')]=_[_0xe126('0x30')](_0x23d1d8[_0xe126('0x31')]);_0x149b84[_0xe126('0x32')]=_[_0xe126('0x41')](_0x149b84[_0xe126('0x2e')],_0x149b84[_0xe126('0x31')]);_0x3613de[_0xe126('0x34')]=_[_0xe126('0x41')](_0x149b84[_0xe126('0x2e')],qs['fields'](_0x23d1d8['query'][_0xe126('0x33')]));_0x3613de[_0xe126('0x34')]=_0x3613de['attributes'][_0xe126('0x35')]?_0x3613de[_0xe126('0x34')]:_0x149b84[_0xe126('0x2e')];if(_0x23d1d8[_0xe126('0x31')]['includeAll']){_0x3613de[_0xe126('0x3e')]=[{'all':!![]}];}_0x3613de=_[_0xe126('0x3c')]({},_0x3613de,_0x23d1d8[_0xe126('0x3d')]);return db[_0xe126('0x2b')][_0xe126('0x42')](_0x3613de)[_0xe126('0x25')](handleEntityNotFound(_0x5d5111,null))[_0xe126('0x25')](respondWithResult(_0x5d5111,null))[_0xe126('0x43')](handleError(_0x5d5111,null));};exports[_0xe126('0x44')]=function(_0xccc25d,_0x23007d){return db[_0xe126('0x2b')][_0xe126('0x44')](_0xccc25d['body'],{})['then'](respondWithResult(_0x23007d,0xc9))['catch'](handleError(_0x23007d,null));};exports['update']=function(_0xe642ae,_0x8d5abd){if(_0xe642ae[_0xe126('0x45')]['id']){delete _0xe642ae[_0xe126('0x45')]['id'];}return db[_0xe126('0x2b')][_0xe126('0x42')]({'where':{'id':_0xe642ae[_0xe126('0x40')]['id']}})['then'](handleEntityNotFound(_0x8d5abd,null))['then'](saveUpdates(_0xe642ae[_0xe126('0x45')],null))[_0xe126('0x25')](respondWithResult(_0x8d5abd,null))['catch'](handleError(_0x8d5abd,null));};exports[_0xe126('0x26')]=function(_0x209002,_0x518e43){return db[_0xe126('0x2b')][_0xe126('0x42')]({'where':{'id':_0x209002['params']['id']}})['then'](handleEntityNotFound(_0x518e43,null))[_0xe126('0x25')](removeEntity(_0x518e43,null))[_0xe126('0x43')](handleError(_0x518e43,null));};exports[_0xe126('0x46')]=function(_0x48fbed,_0x31e193){return db['JscriptyAnswerReport'][_0xe126('0x46')]()[_0xe126('0x25')](respondWithResult(_0x31e193,null))['catch'](handleError(_0x31e193,null));};
\ No newline at end of file
index 53c19f4..f7d3ed2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9523=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','report_jscripty_answers','lodash','util'];(function(_0x4264ee,_0x520320){var _0x46d043=function(_0x4636e8){while(--_0x4636e8){_0x4264ee['push'](_0x4264ee['shift']());}};_0x46d043(++_0x520320);}(_0x9523,0x82));var _0x3952=function(_0x338ef4,_0x256598){_0x338ef4=_0x338ef4-0x0;var _0x21fe31=_0x9523[_0x338ef4];return _0x21fe31;};'use strict';var _=require(_0x3952('0x0'));var util=require(_0x3952('0x1'));var logger=require(_0x3952('0x2'))(_0x3952('0x3'));var moment=require(_0x3952('0x4'));var BPromise=require(_0x3952('0x5'));var rp=require(_0x3952('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3952('0x7'));var config=require(_0x3952('0x8'));var attributes=require('./jscriptyAnswerReport.attributes');module[_0x3952('0x9')]=function(_0x2acdf4,_0x447a1c){return _0x2acdf4[_0x3952('0xa')]('JscriptyAnswerReport',attributes,{'tableName':_0x3952('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9fcc=['report_jscripty_answers','lodash','../../config/logger','api','bluebird','request-promise','rimraf','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport'];(function(_0x2244e5,_0x2c20bb){var _0x99c38c=function(_0x3f6a39){while(--_0x3f6a39){_0x2244e5['push'](_0x2244e5['shift']());}};_0x99c38c(++_0x2c20bb);}(_0x9fcc,0x18d));var _0xc9fc=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x9fcc[_0x465a0c];return _0x1e202e;};'use strict';var _=require(_0xc9fc('0x0'));var util=require('util');var logger=require(_0xc9fc('0x1'))(_0xc9fc('0x2'));var moment=require('moment');var BPromise=require(_0xc9fc('0x3'));var rp=require(_0xc9fc('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc9fc('0x5'));var config=require('../../config/environment');var attributes=require(_0xc9fc('0x6'));module[_0xc9fc('0x7')]=function(_0x343f6e,_0xcf0164){return _0x343f6e[_0xc9fc('0x8')](_0xc9fc('0x9'),attributes,{'tableName':_0xc9fc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3af7d11..f6af02b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76b9=['request\x20sent','debug','error','message','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','request','info','JscriptyAnswerReport,\x20%s,\x20%s'];(function(_0x35b1d3,_0x225363){var _0x2a95a2=function(_0xe7d29a){while(--_0xe7d29a){_0x35b1d3['push'](_0x35b1d3['shift']());}};_0x2a95a2(++_0x225363);}(_0x76b9,0x125));var _0x976b=function(_0x525507,_0x43f23a){_0x525507=_0x525507-0x0;var _0x222197=_0x76b9[_0x525507];return _0x222197;};'use strict';var _=require(_0x976b('0x0'));var util=require(_0x976b('0x1'));var moment=require(_0x976b('0x2'));var BPromise=require('bluebird');var rs=require(_0x976b('0x3'));var fs=require('fs');var Redis=require(_0x976b('0x4'));var db=require(_0x976b('0x5'))['db'];var utils=require(_0x976b('0x6'));var logger=require(_0x976b('0x7'))(_0x976b('0x8'));var config=require(_0x976b('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5cce81,_0x5c2e03,_0x357e58){return new BPromise(function(_0x2f9148,_0x1fa15a){return client[_0x976b('0xa')](_0x5cce81,_0x357e58)['then'](function(_0x42300a){logger[_0x976b('0xb')](_0x976b('0xc'),_0x5c2e03,_0x976b('0xd'));logger[_0x976b('0xe')]('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x5c2e03,_0x976b('0xd'),JSON['stringify'](_0x42300a));if(_0x42300a[_0x976b('0xf')]){if(_0x42300a[_0x976b('0xf')]['code']===0x1f4){logger[_0x976b('0xf')](_0x976b('0xc'),_0x5c2e03,_0x42300a['error'][_0x976b('0x10')]);return _0x1fa15a(_0x42300a[_0x976b('0xf')][_0x976b('0x10')]);}logger['error']('JscriptyAnswerReport,\x20%s,\x20%s',_0x5c2e03,_0x42300a[_0x976b('0xf')][_0x976b('0x10')]);return _0x2f9148(_0x42300a[_0x976b('0xf')][_0x976b('0x10')]);}else{logger[_0x976b('0xb')](_0x976b('0xc'),_0x5c2e03,_0x976b('0xd'));_0x2f9148(_0x42300a['result'][_0x976b('0x10')]);}})['catch'](function(_0x323e89){logger[_0x976b('0xf')](_0x976b('0xc'),_0x5c2e03,_0x323e89);_0x1fa15a(_0x323e89);});});}
\ No newline at end of file
+var _0xd346=['jayson/promise','client','http','request','then','info','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','error','code','JscriptyAnswerReport,\x20%s,\x20%s','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3358ba,_0x24c5fc){var _0x296e73=function(_0x843ff3){while(--_0x843ff3){_0x3358ba['push'](_0x3358ba['shift']());}};_0x296e73(++_0x24c5fc);}(_0xd346,0x87));var _0x6d34=function(_0xd3ef3d,_0x7a3c5a){_0xd3ef3d=_0xd3ef3d-0x0;var _0xbec86c=_0xd346[_0xd3ef3d];return _0xbec86c;};'use strict';var _=require(_0x6d34('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x6d34('0x1'));var rs=require(_0x6d34('0x2'));var fs=require('fs');var Redis=require(_0x6d34('0x3'));var db=require(_0x6d34('0x4'))['db'];var utils=require(_0x6d34('0x5'));var logger=require(_0x6d34('0x6'))(_0x6d34('0x7'));var config=require(_0x6d34('0x8'));var jayson=require(_0x6d34('0x9'));var client=jayson[_0x6d34('0xa')][_0x6d34('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x148387,_0x142a65,_0x2f1e61){return new BPromise(function(_0x2a4dfc,_0x26e51b){return client[_0x6d34('0xc')](_0x148387,_0x2f1e61)[_0x6d34('0xd')](function(_0x5b7f47){logger[_0x6d34('0xe')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x142a65,_0x6d34('0xf'));logger[_0x6d34('0x10')](_0x6d34('0x11'),_0x142a65,'request\x20sent',JSON['stringify'](_0x5b7f47));if(_0x5b7f47['error']){if(_0x5b7f47[_0x6d34('0x12')][_0x6d34('0x13')]===0x1f4){logger[_0x6d34('0x12')](_0x6d34('0x14'),_0x142a65,_0x5b7f47['error']['message']);return _0x26e51b(_0x5b7f47[_0x6d34('0x12')][_0x6d34('0x15')]);}logger[_0x6d34('0x12')](_0x6d34('0x14'),_0x142a65,_0x5b7f47[_0x6d34('0x12')][_0x6d34('0x15')]);return _0x2a4dfc(_0x5b7f47[_0x6d34('0x12')]['message']);}else{logger[_0x6d34('0xe')](_0x6d34('0x14'),_0x142a65,_0x6d34('0xf'));_0x2a4dfc(_0x5b7f47[_0x6d34('0x16')][_0x6d34('0x15')]);}})[_0x6d34('0x17')](function(_0x30af95){logger[_0x6d34('0x12')](_0x6d34('0x14'),_0x142a65,_0x30af95);_0x26e51b(_0x30af95);});});}
\ No newline at end of file
index cf09737..2b90d77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x879d=['getAnswers','30s','create','post','/:id/clone','clone','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','get','/:id','show','/:id/sessions','isAuthenticated','/:id/answers'];(function(_0x294b6,_0x2907ae){var _0x38bb97=function(_0x5aaa76){while(--_0x5aaa76){_0x294b6['push'](_0x294b6['shift']());}};_0x38bb97(++_0x2907ae);}(_0x879d,0x71));var _0xd879=function(_0x1702b9,_0x5684b1){_0x1702b9=_0x1702b9-0x0;var _0xc408d8=_0x879d[_0x1702b9];return _0xc408d8;};'use strict';var multer=require(_0xd879('0x0'));var util=require(_0xd879('0x1'));var path=require(_0xd879('0x2'));var timeout=require(_0xd879('0x3'));var express=require(_0xd879('0x4'));var router=express[_0xd879('0x5')]();var fs_extra=require(_0xd879('0x6'));var auth=require(_0xd879('0x7'));var interaction=require(_0xd879('0x8'));var config=require(_0xd879('0x9'));var controller=require(_0xd879('0xa'));router[_0xd879('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0xd879('0xb')](_0xd879('0xc'),auth['isAuthenticated'](),controller[_0xd879('0xd')]);router[_0xd879('0xb')](_0xd879('0xe'),auth[_0xd879('0xf')](),controller['getSessions']);router['get'](_0xd879('0x10'),auth[_0xd879('0xf')](),controller[_0xd879('0x11')]);router[_0xd879('0xb')]('/:id/summary',auth[_0xd879('0xf')](),timeout(_0xd879('0x12')),controller['getSummary']);router['post']('/',auth[_0xd879('0xf')](),controller[_0xd879('0x13')]);router[_0xd879('0x14')](_0xd879('0x15'),auth[_0xd879('0xf')](),controller[_0xd879('0x16')]);router[_0xd879('0x17')](_0xd879('0xc'),auth[_0xd879('0xf')](),controller[_0xd879('0x18')]);router['delete'](_0xd879('0xc'),auth[_0xd879('0xf')](),controller['destroy']);module[_0xd879('0x19')]=router;
\ No newline at end of file
+var _0xe8fa=['/:id/answers','getAnswers','30s','getSummary','post','/:id/clone','delete','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./jscriptyProject.controller','isAuthenticated','get','/:id','show','/:id/sessions','getSessions'];(function(_0x280b74,_0x166a2c){var _0x5663c1=function(_0x33251f){while(--_0x33251f){_0x280b74['push'](_0x280b74['shift']());}};_0x5663c1(++_0x166a2c);}(_0xe8fa,0x168));var _0xae8f=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0xe8fa[_0x36884e];return _0x1cc367;};'use strict';var multer=require(_0xae8f('0x0'));var util=require('util');var path=require(_0xae8f('0x1'));var timeout=require(_0xae8f('0x2'));var express=require(_0xae8f('0x3'));var router=express[_0xae8f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xae8f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xae8f('0x6'));var controller=require(_0xae8f('0x7'));router['get']('/',auth[_0xae8f('0x8')](),controller['index']);router[_0xae8f('0x9')](_0xae8f('0xa'),auth['isAuthenticated'](),controller[_0xae8f('0xb')]);router[_0xae8f('0x9')](_0xae8f('0xc'),auth[_0xae8f('0x8')](),controller[_0xae8f('0xd')]);router['get'](_0xae8f('0xe'),auth[_0xae8f('0x8')](),controller[_0xae8f('0xf')]);router['get']('/:id/summary',auth[_0xae8f('0x8')](),timeout(_0xae8f('0x10')),controller[_0xae8f('0x11')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xae8f('0x12')](_0xae8f('0x13'),auth[_0xae8f('0x8')](),controller['clone']);router['put'](_0xae8f('0xa'),auth[_0xae8f('0x8')](),controller['update']);router[_0xae8f('0x14')](_0xae8f('0xa'),auth[_0xae8f('0x8')](),controller['destroy']);module[_0xae8f('0x15')]=router;
\ No newline at end of file
index 40394f3..6bd4be3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3ee=['{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','BOOLEAN','sequelize','lodash','util','STRING','name','TEXT','long','setDataValue','formData','stringify','isString','format'];(function(_0x1b4785,_0x466dc2){var _0x356b87=function(_0x35360d){while(--_0x35360d){_0x1b4785['push'](_0x1b4785['shift']());}};_0x356b87(++_0x466dc2);}(_0xa3ee,0x1c5));var _0xea3e=function(_0x1eba45,_0x407d7c){_0x1eba45=_0x1eba45-0x0;var _0x2b809c=_0xa3ee[_0x1eba45];return _0x2b809c;};'use strict';var Sequelize=require(_0xea3e('0x0'));var _=require(_0xea3e('0x1'));var util=require(_0xea3e('0x2'));module['exports']={'name':{'type':Sequelize[_0xea3e('0x3')],'unique':_0xea3e('0x4')},'description':{'type':Sequelize[_0xea3e('0x3')]},'formData':{'type':Sequelize[_0xea3e('0x5')](_0xea3e('0x6')),'set':function(_0x3238a1){if(_['isObjectLike'](_0x3238a1)){this[_0xea3e('0x7')](_0xea3e('0x8'),JSON[_0xea3e('0x9')](_0x3238a1));}else if(_[_0xea3e('0xa')](_0x3238a1)){this[_0xea3e('0x7')](_0xea3e('0x8'),_0x3238a1);}else{this[_0xea3e('0x7')]('formData',util[_0xea3e('0xb')](_0xea3e('0xc'),this[_0xea3e('0xd')]('name')||'',this[_0xea3e('0xd')]('description')||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xea3e('0xe')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7d77=['stringify','isString','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','name','description','BOOLEAN','sequelize','lodash','util','STRING','TEXT','long','isObjectLike','setDataValue','formData'];(function(_0x3b5bca,_0x326805){var _0x39833=function(_0x16f56f){while(--_0x16f56f){_0x3b5bca['push'](_0x3b5bca['shift']());}};_0x39833(++_0x326805);}(_0x7d77,0xf6));var _0x77d7=function(_0x215e65,_0x183f97){_0x215e65=_0x215e65-0x0;var _0xa85842=_0x7d77[_0x215e65];return _0xa85842;};'use strict';var Sequelize=require(_0x77d7('0x0'));var _=require(_0x77d7('0x1'));var util=require(_0x77d7('0x2'));module['exports']={'name':{'type':Sequelize[_0x77d7('0x3')],'unique':'name'},'description':{'type':Sequelize[_0x77d7('0x3')]},'formData':{'type':Sequelize[_0x77d7('0x4')](_0x77d7('0x5')),'set':function(_0x2f9b03){if(_[_0x77d7('0x6')](_0x2f9b03)){this[_0x77d7('0x7')](_0x77d7('0x8'),JSON[_0x77d7('0x9')](_0x2f9b03));}else if(_[_0x77d7('0xa')](_0x2f9b03)){this[_0x77d7('0x7')](_0x77d7('0x8'),_0x2f9b03);}else{this[_0x77d7('0x7')](_0x77d7('0x8'),util[_0x77d7('0xb')](_0x77d7('0xc'),this[_0x77d7('0xd')](_0x77d7('0xe'))||'',this[_0x77d7('0xd')](_0x77d7('0xf'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x77d7('0x10')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x77d7('0x10')],'defaultValue':![]}};
\ No newline at end of file
index f5e9d8e..6488fce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc933=['SessionId','answer','isEmpty','writeFileSync','Content-disposition','attachment;\x20filename=','Content-type','text/csv','/tmp/Jscripty_Project_%d_Summary_%s.csv','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','Content-Range','json','apply','reject','save','update','then','get','Projects','UserProfileResource','destroy','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','type','VIRTUAL','filter','JscriptyProject','count','includeAll','include','findAll','rows','catch','show','params','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','merge','omit','createdAt','updatedAt','body','userProfileId','getSessions','JscriptySessionReport','nolimit','ProjectId','getAnswers','JscriptyAnswerReport','number','fromCharCode','toString','indexOf','replace','getSummary','starttime','parse','startTime','-createdAt','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0xa11bda,_0x3ad31c){var _0x2f5c7c=function(_0x8c255e){while(--_0x8c255e){_0xa11bda['push'](_0xa11bda['shift']());}};_0x2f5c7c(++_0x3ad31c);}(_0xc933,0xf9));var _0x3c93=function(_0xe70e6c,_0x5ddbb5){_0xe70e6c=_0xe70e6c-0x0;var _0x1a0132=_0xc933[_0xe70e6c];return _0x1a0132;};'use strict';var emlformat=require(_0x3c93('0x0'));var rimraf=require(_0x3c93('0x1'));var zipdir=require(_0x3c93('0x2'));var jsonpatch=require(_0x3c93('0x3'));var rp=require(_0x3c93('0x4'));var moment=require('moment');var BPromise=require(_0x3c93('0x5'));var Mustache=require(_0x3c93('0x6'));var util=require(_0x3c93('0x7'));var path=require(_0x3c93('0x8'));var sox=require(_0x3c93('0x9'));var csv=require('to-csv');var ejs=require(_0x3c93('0xa'));var fs=require('fs');var fs_extra=require(_0x3c93('0xb'));var _=require('lodash');var squel=require(_0x3c93('0xc'));var crypto=require('crypto');var jsforce=require(_0x3c93('0xd'));var deskjs=require(_0x3c93('0xe'));var toCsv=require(_0x3c93('0xf'));var querystring=require(_0x3c93('0x10'));var Papa=require(_0x3c93('0x11'));var Redis=require(_0x3c93('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3c93('0x13'));var logger=require(_0x3c93('0x14'))(_0x3c93('0x15'));var utils=require(_0x3c93('0x16'));var config=require(_0x3c93('0x17'));var licenseUtil=require(_0x3c93('0x18'));var db=require(_0x3c93('0x19'))['db'];function respondWithStatusCode(_0x2d529c,_0xcb8253){_0xcb8253=_0xcb8253||0xcc;return function(_0x2c0bce){if(_0x2c0bce){return _0x2d529c[_0x3c93('0x1a')](_0xcb8253);}return _0x2d529c[_0x3c93('0x1b')](_0xcb8253)[_0x3c93('0x1c')]();};}function respondWithResult(_0x1fc09c,_0x7b16ca){_0x7b16ca=_0x7b16ca||0xc8;return function(_0x11bd21){if(_0x11bd21){return _0x1fc09c[_0x3c93('0x1b')](_0x7b16ca)['json'](_0x11bd21);}};}function respondWithFilteredResult(_0x4c3b67,_0x12b14e){return function(_0x3a7ae7){if(_0x3a7ae7){var _0x95fc39=typeof _0x12b14e[_0x3c93('0x1d')]===_0x3c93('0x1e')&&typeof _0x12b14e[_0x3c93('0x1f')]===_0x3c93('0x1e');var _0x5059fa=_0x3a7ae7['count'];var _0xe14ac8=_0x95fc39?0x0:_0x12b14e[_0x3c93('0x1d')];var _0x540010=_0x95fc39?_0x3a7ae7['count']:_0x12b14e['offset']+_0x12b14e[_0x3c93('0x1f')];var _0x599def;if(_0x540010>=_0x5059fa){_0x540010=_0x5059fa;_0x599def=0xc8;}else{_0x599def=0xce;}_0x4c3b67['status'](_0x599def);return _0x4c3b67['set'](_0x3c93('0x20'),_0xe14ac8+'-'+_0x540010+'/'+_0x5059fa)[_0x3c93('0x21')](_0x3a7ae7);}return null;};}function patchUpdates(_0xa4bcfb){return function(_0x10e948){try{jsonpatch[_0x3c93('0x22')](_0x10e948,_0xa4bcfb,!![]);}catch(_0x269d3a){return BPromise[_0x3c93('0x23')](_0x269d3a);}return _0x10e948[_0x3c93('0x24')]();};}function saveUpdates(_0x3207ac,_0x3d88c2){return function(_0x499b8a){if(_0x499b8a){return _0x499b8a[_0x3c93('0x25')](_0x3207ac)[_0x3c93('0x26')](function(_0xcbc8b){return _0xcbc8b;});}return null;};}function removeEntity(_0xb35e89,_0x3b3fbb){return function(_0x329cd3){if(_0x329cd3){return _0x329cd3['destroy']()[_0x3c93('0x26')](function(){var _0x3932f2=_0x329cd3[_0x3c93('0x27')]({'plain':!![]});var _0x3689e3=_0x3c93('0x28');return db[_0x3c93('0x29')][_0x3c93('0x2a')]({'where':{'type':_0x3689e3,'resourceId':_0x3932f2['id']}})[_0x3c93('0x26')](function(){return _0x329cd3;});})[_0x3c93('0x26')](function(){_0xb35e89['status'](0xcc)[_0x3c93('0x1c')]();});}};}function handleEntityNotFound(_0x3d50b3,_0x3f49a5){return function(_0x51de7b){if(!_0x51de7b){_0x3d50b3[_0x3c93('0x1a')](0x194);}return _0x51de7b;};}function handleError(_0x2446b4,_0x3251b5){_0x3251b5=_0x3251b5||0x1f4;return function(_0x367022){logger['error'](_0x367022['stack']);if(_0x367022['name']){delete _0x367022[_0x3c93('0x2b')];}_0x2446b4[_0x3c93('0x1b')](_0x3251b5)[_0x3c93('0x2c')](_0x367022);};}exports[_0x3c93('0x2d')]=function(_0x5e5601,_0x186b30){var _0x5ad995={},_0x57cee4={},_0x224208={'count':0x0,'rows':[]};var _0x2dfb63=_[_0x3c93('0x2e')](db['JscriptyProject'][_0x3c93('0x2f')],function(_0x4586e2){return{'name':_0x4586e2[_0x3c93('0x30')],'type':_0x4586e2['type'][_0x3c93('0x31')]};});_0x57cee4[_0x3c93('0x32')]=_[_0x3c93('0x2e')](_0x2dfb63,_0x3c93('0x2b'));_0x57cee4[_0x3c93('0x33')]=_[_0x3c93('0x34')](_0x5e5601['query']);_0x57cee4[_0x3c93('0x35')]=_[_0x3c93('0x36')](_0x57cee4['model'],_0x57cee4[_0x3c93('0x33')]);_0x5ad995[_0x3c93('0x37')]=_[_0x3c93('0x36')](_0x57cee4['model'],qs[_0x3c93('0x38')](_0x5e5601['query'][_0x3c93('0x38')]));_0x5ad995['attributes']=_0x5ad995[_0x3c93('0x37')][_0x3c93('0x39')]?_0x5ad995[_0x3c93('0x37')]:_0x57cee4[_0x3c93('0x32')];if(!_0x5e5601[_0x3c93('0x33')][_0x3c93('0x3a')]('nolimit')){_0x5ad995[_0x3c93('0x1f')]=qs[_0x3c93('0x1f')](_0x5e5601[_0x3c93('0x33')][_0x3c93('0x1f')]);_0x5ad995[_0x3c93('0x1d')]=qs[_0x3c93('0x1d')](_0x5e5601[_0x3c93('0x33')]['offset']);}_0x5ad995[_0x3c93('0x3b')]=qs['sort'](_0x5e5601[_0x3c93('0x33')][_0x3c93('0x3c')]);_0x5ad995[_0x3c93('0x3d')]=qs['filters'](_[_0x3c93('0x3e')](_0x5e5601[_0x3c93('0x33')],_0x57cee4[_0x3c93('0x35')]),_0x2dfb63);if(_0x5e5601['query']['filter']){_0x5ad995[_0x3c93('0x3d')]=_['merge'](_0x5ad995[_0x3c93('0x3d')],{'$or':_[_0x3c93('0x2e')](_0x2dfb63,function(_0x13f363){if(_0x13f363[_0x3c93('0x3f')]!==_0x3c93('0x40')){var _0x235b5c={};_0x235b5c[_0x13f363[_0x3c93('0x2b')]]={'$like':'%'+_0x5e5601[_0x3c93('0x33')][_0x3c93('0x41')]+'%'};return _0x235b5c;}})});}_0x5ad995=_['merge']({},_0x5ad995,_0x5e5601['options']);var _0xd9301c={'where':_0x5ad995['where']};return db[_0x3c93('0x42')][_0x3c93('0x43')](_0xd9301c)[_0x3c93('0x26')](function(_0x587d21){_0x224208[_0x3c93('0x43')]=_0x587d21;if(_0x5e5601[_0x3c93('0x33')][_0x3c93('0x44')]){_0x5ad995[_0x3c93('0x45')]=[{'all':!![]}];}return db[_0x3c93('0x42')][_0x3c93('0x46')](_0x5ad995);})['then'](function(_0x5c101a){_0x224208[_0x3c93('0x47')]=_0x5c101a;return _0x224208;})[_0x3c93('0x26')](respondWithFilteredResult(_0x186b30,_0x5ad995))[_0x3c93('0x48')](handleError(_0x186b30,null));};exports[_0x3c93('0x49')]=function(_0x101b48,_0x419567){var _0x398faa={'raw':![],'where':{'id':_0x101b48[_0x3c93('0x4a')]['id']}},_0x2258ed={};_0x2258ed[_0x3c93('0x32')]=_[_0x3c93('0x34')](db[_0x3c93('0x42')][_0x3c93('0x2f')]);_0x2258ed[_0x3c93('0x33')]=_[_0x3c93('0x34')](_0x101b48[_0x3c93('0x33')]);_0x2258ed[_0x3c93('0x35')]=_[_0x3c93('0x36')](_0x2258ed[_0x3c93('0x32')],_0x2258ed[_0x3c93('0x33')]);_0x398faa['attributes']=_['intersection'](_0x2258ed[_0x3c93('0x32')],qs[_0x3c93('0x38')](_0x101b48['query'][_0x3c93('0x38')]));_0x398faa[_0x3c93('0x37')]=_0x398faa[_0x3c93('0x37')]['length']?_0x398faa[_0x3c93('0x37')]:_0x2258ed[_0x3c93('0x32')];if(_0x101b48[_0x3c93('0x33')]['includeAll']){_0x398faa[_0x3c93('0x45')]=[{'all':!![]}];}_0x398faa=_['merge']({},_0x398faa,_0x101b48[_0x3c93('0x4b')]);return db['JscriptyProject'][_0x3c93('0x4c')](_0x398faa)[_0x3c93('0x26')](handleEntityNotFound(_0x419567,null))['then'](respondWithResult(_0x419567,null))[_0x3c93('0x48')](handleError(_0x419567,null));};exports[_0x3c93('0x4d')]=function(_0x3ed520,_0x1f4b53){return db[_0x3c93('0x42')][_0x3c93('0x4d')](_0x3ed520['body'],{})[_0x3c93('0x26')](function(_0x20f6f1){var _0x427f2d=_0x3ed520[_0x3c93('0x4e')][_0x3c93('0x27')]({'plain':!![]});if(!_0x427f2d)throw new Error(_0x3c93('0x4f'));if(_0x427f2d[_0x3c93('0x50')]===_0x3c93('0x4e')){var _0x3ddeb9=_0x20f6f1[_0x3c93('0x27')]({'plain':!![]});var _0xb7c882=_0x3c93('0x28');return db[_0x3c93('0x51')][_0x3c93('0x4c')]({'where':{'name':_0xb7c882,'userProfileId':_0x427f2d['userProfileId']},'raw':!![]})['then'](function(_0x38330b){if(_0x38330b&&_0x38330b[_0x3c93('0x52')]===0x0){return db[_0x3c93('0x29')]['create']({'name':_0x3ddeb9[_0x3c93('0x2b')],'resourceId':_0x3ddeb9['id'],'type':_0x38330b[_0x3c93('0x2b')],'sectionId':_0x38330b['id']},{})[_0x3c93('0x26')](function(){return _0x20f6f1;});}else{return _0x20f6f1;}})[_0x3c93('0x48')](function(_0x2c6548){logger[_0x3c93('0x53')](_0x3c93('0x54'),_0x2c6548);throw _0x2c6548;});}return _0x20f6f1;})['then'](respondWithResult(_0x1f4b53,0xc9))['catch'](handleError(_0x1f4b53,null));};exports['clone']=function(_0x105745,_0xd3177e){var _0x21588b={'where':{'id':_0x105745[_0x3c93('0x4a')]['id']}},_0x839baa={};_0x839baa[_0x3c93('0x32')]=_[_0x3c93('0x34')](db[_0x3c93('0x42')][_0x3c93('0x2f')]);_0x21588b['attributes']=_['intersection'](_0x839baa[_0x3c93('0x32')],qs[_0x3c93('0x38')](_0x105745[_0x3c93('0x33')]['fields']));_0x21588b[_0x3c93('0x37')]=_0x21588b[_0x3c93('0x37')][_0x3c93('0x39')]?_0x21588b['attributes']:_0x839baa[_0x3c93('0x32')];if(_0x105745[_0x3c93('0x33')]['includeAll']){_0x21588b['include']=[{'all':!![]}];}_0x21588b=_[_0x3c93('0x55')]({},_0x21588b,_0x105745['options']);return db['JscriptyProject']['find'](_0x21588b)[_0x3c93('0x26')](handleEntityNotFound(_0xd3177e,null))['then'](function(_0x2f2925){if(_0x2f2925){var _0x139e9a=_0x2f2925['get']({'plain':!![]});_0x139e9a=qs[_0x3c93('0x56')](_0x139e9a,['id',_0x3c93('0x57'),_0x3c93('0x58')]);_0x105745[_0x3c93('0x59')]=_['omit'](_0x105745['body'],['id',_0x3c93('0x57'),_0x3c93('0x58')]);return db[_0x3c93('0x42')][_0x3c93('0x4d')](_[_0x3c93('0x55')](_0x139e9a,_0x105745[_0x3c93('0x59')]),{'include':_0x105745[_0x3c93('0x33')][_0x3c93('0x44')]?[{'all':!![]}]:undefined})[_0x3c93('0x26')](function(_0x28a536){var _0x3fec29=_0x105745['user'][_0x3c93('0x27')]({'plain':!![]});if(!_0x3fec29)throw new Error(_0x3c93('0x4f'));if(_0x3fec29[_0x3c93('0x50')]==='user'){var _0x411774=_0x28a536['get']({'plain':!![]});var _0x3e0ccc='Projects';return db[_0x3c93('0x51')][_0x3c93('0x4c')]({'where':{'name':_0x3e0ccc,'userProfileId':_0x3fec29[_0x3c93('0x5a')]},'raw':!![]})[_0x3c93('0x26')](function(_0x2a61a6){if(_0x2a61a6&&_0x2a61a6[_0x3c93('0x52')]===0x0){return db[_0x3c93('0x29')][_0x3c93('0x4d')]({'name':_0x411774[_0x3c93('0x2b')],'resourceId':_0x411774['id'],'type':_0x2a61a6[_0x3c93('0x2b')],'sectionId':_0x2a61a6['id']},{})['then'](function(){return _0x28a536;});}else{return _0x28a536;}})[_0x3c93('0x48')](function(_0x4dfcca){logger[_0x3c93('0x53')](_0x3c93('0x54'),_0x4dfcca);throw _0x4dfcca;});}return _0x28a536;});}})[_0x3c93('0x26')](respondWithResult(_0xd3177e,0xc9))['catch'](handleError(_0xd3177e,null));};exports[_0x3c93('0x25')]=function(_0x52f8ed,_0x3431da){if(_0x52f8ed[_0x3c93('0x59')]['id']){delete _0x52f8ed[_0x3c93('0x59')]['id'];}return db[_0x3c93('0x42')][_0x3c93('0x4c')]({'where':{'id':_0x52f8ed[_0x3c93('0x4a')]['id']}})[_0x3c93('0x26')](handleEntityNotFound(_0x3431da,null))[_0x3c93('0x26')](saveUpdates(_0x52f8ed[_0x3c93('0x59')],null))[_0x3c93('0x26')](respondWithResult(_0x3431da,null))[_0x3c93('0x48')](handleError(_0x3431da,null));};exports['destroy']=function(_0x420b09,_0xcf9259){return db['JscriptyProject'][_0x3c93('0x4c')]({'where':{'id':_0x420b09[_0x3c93('0x4a')]['id']}})['then'](handleEntityNotFound(_0xcf9259,null))[_0x3c93('0x26')](removeEntity(_0xcf9259,null))[_0x3c93('0x48')](handleError(_0xcf9259,null));};exports[_0x3c93('0x5b')]=function(_0x4a28a8,_0x1e3c80,_0x13f207){var _0x5b1fe9={'raw':!![],'where':{}};var _0x254475={};var _0x1284df={'count':0x0,'rows':[]};return db[_0x3c93('0x42')]['findOne']({'where':{'id':_0x4a28a8[_0x3c93('0x4a')]['id']}})[_0x3c93('0x26')](handleEntityNotFound(_0x1e3c80,null))[_0x3c93('0x26')](function(_0x2b098e){if(_0x2b098e){_0x254475[_0x3c93('0x32')]=_['keys'](db[_0x3c93('0x5c')][_0x3c93('0x2f')]);_0x254475[_0x3c93('0x33')]=_['keys'](_0x4a28a8['query']);_0x254475[_0x3c93('0x35')]=_['intersection'](_0x254475[_0x3c93('0x32')],_0x254475[_0x3c93('0x33')]);_0x5b1fe9[_0x3c93('0x37')]=_[_0x3c93('0x36')](_0x254475['model'],qs[_0x3c93('0x38')](_0x4a28a8[_0x3c93('0x33')][_0x3c93('0x38')]));_0x5b1fe9[_0x3c93('0x37')]=_0x5b1fe9[_0x3c93('0x37')][_0x3c93('0x39')]?_0x5b1fe9[_0x3c93('0x37')]:_0x254475['model'];if(!_0x4a28a8[_0x3c93('0x33')][_0x3c93('0x3a')](_0x3c93('0x5d'))){_0x5b1fe9[_0x3c93('0x1f')]=qs[_0x3c93('0x1f')](_0x4a28a8[_0x3c93('0x33')][_0x3c93('0x1f')]);_0x5b1fe9['offset']=qs['offset'](_0x4a28a8['query']['offset']);}_0x5b1fe9[_0x3c93('0x3b')]=qs[_0x3c93('0x3c')](_0x4a28a8[_0x3c93('0x33')][_0x3c93('0x3c')]);_0x5b1fe9[_0x3c93('0x3d')]=qs['filters'](_[_0x3c93('0x3e')](_0x4a28a8[_0x3c93('0x33')],_0x254475['filters']));_0x5b1fe9[_0x3c93('0x3d')][_0x3c93('0x5e')]=_0x2b098e['id'];if(_0x4a28a8[_0x3c93('0x33')][_0x3c93('0x41')]){_0x5b1fe9[_0x3c93('0x3d')]=_[_0x3c93('0x55')](_0x5b1fe9['where'],{'$or':_[_0x3c93('0x2e')](_0x5b1fe9['attributes'],function(_0x4caad4){var _0xf83954={};_0xf83954[_0x4caad4]={'$like':'%'+_0x4a28a8['query'][_0x3c93('0x41')]+'%'};return _0xf83954;})});}_0x5b1fe9=_[_0x3c93('0x55')]({},_0x5b1fe9,_0x4a28a8[_0x3c93('0x4b')]);return db[_0x3c93('0x5c')][_0x3c93('0x43')]({'where':_0x5b1fe9[_0x3c93('0x3d')]})[_0x3c93('0x26')](function(_0x264053){_0x1284df[_0x3c93('0x43')]=_0x264053;if(_0x4a28a8['query'][_0x3c93('0x44')]){_0x5b1fe9['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x3c93('0x46')](_0x5b1fe9);})[_0x3c93('0x26')](function(_0xb329af){_0x1284df[_0x3c93('0x47')]=_0xb329af;return _0x1284df;});}})[_0x3c93('0x26')](respondWithFilteredResult(_0x1e3c80,_0x5b1fe9))['catch'](handleError(_0x1e3c80,null));};exports[_0x3c93('0x5f')]=function(_0x1f04ac,_0x41f4cc,_0x3cd3e9){var _0x345690={'raw':!![],'where':{}};var _0x128487={};var _0x5936ed={'count':0x0,'rows':[]};return db[_0x3c93('0x42')]['findOne']({'where':{'id':_0x1f04ac[_0x3c93('0x4a')]['id']}})['then'](handleEntityNotFound(_0x41f4cc,null))[_0x3c93('0x26')](function(_0xa99cc3){if(_0xa99cc3){_0x128487[_0x3c93('0x32')]=_[_0x3c93('0x34')](db[_0x3c93('0x60')][_0x3c93('0x2f')]);_0x128487['query']=_['keys'](_0x1f04ac[_0x3c93('0x33')]);_0x128487[_0x3c93('0x35')]=_[_0x3c93('0x36')](_0x128487['model'],_0x128487['query']);_0x345690['attributes']=_[_0x3c93('0x36')](_0x128487[_0x3c93('0x32')],qs[_0x3c93('0x38')](_0x1f04ac[_0x3c93('0x33')][_0x3c93('0x38')]));_0x345690[_0x3c93('0x37')]=_0x345690[_0x3c93('0x37')]['length']?_0x345690[_0x3c93('0x37')]:_0x128487[_0x3c93('0x32')];if(!_0x1f04ac[_0x3c93('0x33')][_0x3c93('0x3a')](_0x3c93('0x5d'))){_0x345690['limit']=qs[_0x3c93('0x1f')](_0x1f04ac['query'][_0x3c93('0x1f')]);_0x345690[_0x3c93('0x1d')]=qs[_0x3c93('0x1d')](_0x1f04ac['query'][_0x3c93('0x1d')]);}_0x345690[_0x3c93('0x3b')]=qs[_0x3c93('0x3c')](_0x1f04ac['query'][_0x3c93('0x3c')]);_0x345690['where']=qs[_0x3c93('0x35')](_[_0x3c93('0x3e')](_0x1f04ac[_0x3c93('0x33')],_0x128487['filters']));_0x345690['where'][_0x3c93('0x5e')]=_0xa99cc3['id'];if(_0x1f04ac[_0x3c93('0x33')][_0x3c93('0x41')]){_0x345690['where']=_[_0x3c93('0x55')](_0x345690[_0x3c93('0x3d')],{'$or':_[_0x3c93('0x2e')](_0x345690[_0x3c93('0x37')],function(_0x2bc901){var _0x114490={};_0x114490[_0x2bc901]={'$like':'%'+_0x1f04ac[_0x3c93('0x33')][_0x3c93('0x41')]+'%'};return _0x114490;})});}_0x345690=_[_0x3c93('0x55')]({},_0x345690,_0x1f04ac[_0x3c93('0x4b')]);return db[_0x3c93('0x60')][_0x3c93('0x43')]({'where':_0x345690['where']})[_0x3c93('0x26')](function(_0x44f98f){_0x5936ed[_0x3c93('0x43')]=_0x44f98f;if(_0x1f04ac['query'][_0x3c93('0x44')]){_0x345690[_0x3c93('0x45')]=[{'all':!![]}];}return db[_0x3c93('0x60')][_0x3c93('0x46')](_0x345690);})[_0x3c93('0x26')](function(_0x3a612e){_0x5936ed[_0x3c93('0x47')]=_0x3a612e;return _0x5936ed;});}})[_0x3c93('0x26')](respondWithFilteredResult(_0x41f4cc,_0x345690))['catch'](handleError(_0x41f4cc,null));};function char(_0x2e396a){return _0x3c93('0x61')===typeof _0x2e396a?String[_0x3c93('0x62')][_0x3c93('0x22')](null,arguments):_0x2e396a;}function needsEncapsulation(_0x36ae97){return!!_0x36ae97&&(_0x36ae97[_0x3c93('0x63')]()['indexOf'](char(0xd))>=0x0||_0x36ae97[_0x3c93('0x63')]()[_0x3c93('0x64')](char(0xa))>=0x0||_0x36ae97[_0x3c93('0x63')]()[_0x3c93('0x64')](char(0x2c))>=0x0||_0x36ae97[_0x3c93('0x63')]()['indexOf'](char(0x22))>=0x0);}function encapsulate(_0xc76beb){var _0x153617=char(0x22),_0x2e4998='\x5c'+char(0x22),_0x285067=_0xc76beb[_0x3c93('0x63')]()[_0x3c93('0x65')](new RegExp(_0x153617,'g'),_0x2e4998);return _0x153617+_0x285067+_0x153617;}exports[_0x3c93('0x66')]=function(_0xf1543f,_0x241cc3,_0x2ca693){var _0x1d6115,_0x379ebd;var _0x15b106={'where':{'ProjectId':_0xf1543f[_0x3c93('0x4a')]['id']}};if(_0xf1543f[_0x3c93('0x33')]['startTime']){_0x15b106[_0x3c93('0x3d')][_0x3c93('0x67')]=JSON[_0x3c93('0x68')](_0xf1543f['query'][_0x3c93('0x69')]);}return db[_0x3c93('0x5c')][_0x3c93('0x46')](_0x15b106)[_0x3c93('0x26')](handleEntityNotFound(_0x241cc3,null))[_0x3c93('0x26')](function(_0x4bcfa5){if(_0x4bcfa5){_0x1d6115=_0x4bcfa5;return db['JscriptyQuestionReport'][_0x3c93('0x46')]({'where':{'SessionId':{'$in':_[_0x3c93('0x2e')](_0x1d6115,'id')},'ProjectId':_0xf1543f[_0x3c93('0x4a')]['id']},'order':_0x3c93('0x6a')});}})['then'](handleEntityNotFound(_0x241cc3,null))[_0x3c93('0x26')](function(_0x21b9a0){if(_0x21b9a0){_0x379ebd=_0x21b9a0;var _0x5e8b6c={};for(var _0x3f9094=0x0,_0x9e99f6=_0x379ebd['length'];_0x3f9094<_0x9e99f6;_0x3f9094++){if(!_0x5e8b6c[_0x3c93('0x3a')](_0x379ebd[_0x3f9094][_0x3c93('0x6b')])){_0x5e8b6c[_0x379ebd[_0x3f9094][_0x3c93('0x6b')]]=needsEncapsulation(_0x379ebd[_0x3f9094][_0x3c93('0x6c')])?encapsulate(_0x379ebd[_0x3f9094][_0x3c93('0x6c')]):_0x379ebd[_0x3f9094]['question'];}}var _0xbd2014=[],_0x343a55={};for(var _0x15c59b=0x0,_0x236039=_0x1d6115[_0x3c93('0x39')];_0x15c59b<_0x236039;_0x15c59b++){_0x343a55={'ProjectId':_0xf1543f[_0x3c93('0x4a')]['id'],'SessionId':_0x1d6115[_0x15c59b]['id'],'StartTime':moment(_0x1d6115[_0x15c59b]['starttime'])[_0x3c93('0x6d')](_0x3c93('0x6e'))};for(var _0x2c048c=0x0,_0x110bfa=_0x379ebd['length'];_0x2c048c<_0x110bfa;_0x2c048c++){if(_0x379ebd[_0x2c048c][_0x3c93('0x6f')]==_0x1d6115[_0x15c59b]['id']&&_0x5e8b6c[_0x3c93('0x3a')](_0x379ebd[_0x2c048c]['questionId'])){_0x343a55[_0x5e8b6c[_0x379ebd[_0x2c048c]['questionId']]]=_0x379ebd[_0x2c048c][_0x3c93('0x70')];}}for(var _0x13ac4b in _0x5e8b6c){if(!_0x343a55['hasOwnProperty'](_0x5e8b6c[_0x13ac4b])){_0x343a55[_0x5e8b6c[_0x13ac4b]]=null;}}_0xbd2014['push'](_0x343a55);}return _0xbd2014;}})['then'](function(_0x501a13){if(!_[_0x3c93('0x71')](_0x501a13)){var _0x4599f7=toCsv(_0x501a13);var _0x5e4e84=Date['now']();fs[_0x3c93('0x72')](util[_0x3c93('0x6d')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0xf1543f[_0x3c93('0x4a')]['id'],_0x5e4e84),_0x4599f7);_0x241cc3['setHeader'](_0x3c93('0x73'),_0x3c93('0x74')+util[_0x3c93('0x6d')]('Jscripty_Project_%d_Summary_%s.csv',_0xf1543f[_0x3c93('0x4a')]['id'],_0x5e4e84));_0x241cc3['setHeader'](_0x3c93('0x75'),_0x3c93('0x76'));return _0x241cc3['download'](util['format'](_0x3c93('0x77'),_0xf1543f[_0x3c93('0x4a')]['id'],_0x5e4e84));}else{return _0x241cc3[_0x3c93('0x1a')](0xcc);}})[_0x3c93('0x48')](handleError(_0x241cc3,null));};
\ No newline at end of file
+var _0x9e38=['Content-Range','apply','reject','save','update','then','destroy','get','Projects','UserProfileResource','error','stack','name','send','index','map','JscriptyProject','rawAttributes','type','key','query','keys','filters','intersection','fields','length','model','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','attributes','find','create','user','UserProfileSection','userProfileId','autoAssociation','params','createdAt','updatedAt','body','omit','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getSessions','findOne','JscriptySessionReport','JscriptyAnswerReport','number','fromCharCode','indexOf','toString','replace','getSummary','starttime','parse','startTime','-createdAt','question','YYYY-MM-DD\x20HH:mm:ss','SessionId','questionId','answer','push','isEmpty','now','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','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/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count'];(function(_0x5069f7,_0x4b5f46){var _0x519491=function(_0x467415){while(--_0x467415){_0x5069f7['push'](_0x5069f7['shift']());}};_0x519491(++_0x4b5f46);}(_0x9e38,0x155));var _0x89e3=function(_0x29cf89,_0x10ce1f){_0x29cf89=_0x29cf89-0x0;var _0x34ac61=_0x9e38[_0x29cf89];return _0x34ac61;};'use strict';var emlformat=require(_0x89e3('0x0'));var rimraf=require(_0x89e3('0x1'));var zipdir=require(_0x89e3('0x2'));var jsonpatch=require(_0x89e3('0x3'));var rp=require(_0x89e3('0x4'));var moment=require(_0x89e3('0x5'));var BPromise=require(_0x89e3('0x6'));var Mustache=require(_0x89e3('0x7'));var util=require(_0x89e3('0x8'));var path=require(_0x89e3('0x9'));var sox=require(_0x89e3('0xa'));var csv=require(_0x89e3('0xb'));var ejs=require(_0x89e3('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x89e3('0xd'));var squel=require(_0x89e3('0xe'));var crypto=require(_0x89e3('0xf'));var jsforce=require(_0x89e3('0x10'));var deskjs=require(_0x89e3('0x11'));var toCsv=require(_0x89e3('0xb'));var querystring=require(_0x89e3('0x12'));var Papa=require(_0x89e3('0x13'));var Redis=require(_0x89e3('0x14'));var authService=require(_0x89e3('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x89e3('0x16'));var hardwareService=require(_0x89e3('0x17'));var logger=require(_0x89e3('0x18'))(_0x89e3('0x19'));var utils=require('../../config/utils');var config=require(_0x89e3('0x1a'));var licenseUtil=require(_0x89e3('0x1b'));var db=require(_0x89e3('0x1c'))['db'];function respondWithStatusCode(_0x4b1b74,_0x1d84c5){_0x1d84c5=_0x1d84c5||0xcc;return function(_0x5317d9){if(_0x5317d9){return _0x4b1b74[_0x89e3('0x1d')](_0x1d84c5);}return _0x4b1b74[_0x89e3('0x1e')](_0x1d84c5)[_0x89e3('0x1f')]();};}function respondWithResult(_0x3a5ed4,_0x476d4e){_0x476d4e=_0x476d4e||0xc8;return function(_0x463b09){if(_0x463b09){return _0x3a5ed4[_0x89e3('0x1e')](_0x476d4e)[_0x89e3('0x20')](_0x463b09);}};}function respondWithFilteredResult(_0x2dea23,_0x722a17){return function(_0x3439bc){if(_0x3439bc){var _0x16742e=typeof _0x722a17[_0x89e3('0x21')]===_0x89e3('0x22')&&typeof _0x722a17[_0x89e3('0x23')]==='undefined';var _0x38688a=_0x3439bc['count'];var _0x5b41d9=_0x16742e?0x0:_0x722a17[_0x89e3('0x21')];var _0x5e3766=_0x16742e?_0x3439bc[_0x89e3('0x24')]:_0x722a17[_0x89e3('0x21')]+_0x722a17[_0x89e3('0x23')];var _0x1b475e;if(_0x5e3766>=_0x38688a){_0x5e3766=_0x38688a;_0x1b475e=0xc8;}else{_0x1b475e=0xce;}_0x2dea23[_0x89e3('0x1e')](_0x1b475e);return _0x2dea23['set'](_0x89e3('0x25'),_0x5b41d9+'-'+_0x5e3766+'/'+_0x38688a)[_0x89e3('0x20')](_0x3439bc);}return null;};}function patchUpdates(_0x5f51a5){return function(_0x2d9300){try{jsonpatch[_0x89e3('0x26')](_0x2d9300,_0x5f51a5,!![]);}catch(_0x5c07e2){return BPromise[_0x89e3('0x27')](_0x5c07e2);}return _0x2d9300[_0x89e3('0x28')]();};}function saveUpdates(_0x4c3f06,_0x207499){return function(_0x395864){if(_0x395864){return _0x395864[_0x89e3('0x29')](_0x4c3f06)[_0x89e3('0x2a')](function(_0x21045e){return _0x21045e;});}return null;};}function removeEntity(_0x531afe,_0x36772c){return function(_0x14a536){if(_0x14a536){return _0x14a536[_0x89e3('0x2b')]()[_0x89e3('0x2a')](function(){var _0x1c555d=_0x14a536[_0x89e3('0x2c')]({'plain':!![]});var _0x39e6d6=_0x89e3('0x2d');return db[_0x89e3('0x2e')][_0x89e3('0x2b')]({'where':{'type':_0x39e6d6,'resourceId':_0x1c555d['id']}})['then'](function(){return _0x14a536;});})[_0x89e3('0x2a')](function(){_0x531afe[_0x89e3('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x45404d,_0x229fcb){return function(_0x33789c){if(!_0x33789c){_0x45404d[_0x89e3('0x1d')](0x194);}return _0x33789c;};}function handleError(_0x164568,_0x384c49){_0x384c49=_0x384c49||0x1f4;return function(_0x1583c2){logger[_0x89e3('0x2f')](_0x1583c2[_0x89e3('0x30')]);if(_0x1583c2['name']){delete _0x1583c2[_0x89e3('0x31')];}_0x164568[_0x89e3('0x1e')](_0x384c49)[_0x89e3('0x32')](_0x1583c2);};}exports[_0x89e3('0x33')]=function(_0x27212,_0x121926){var _0xd341e1={},_0x556c6f={},_0x2cb5b9={'count':0x0,'rows':[]};var _0x2debfd=_[_0x89e3('0x34')](db[_0x89e3('0x35')][_0x89e3('0x36')],function(_0x406ee4){return{'name':_0x406ee4['fieldName'],'type':_0x406ee4[_0x89e3('0x37')][_0x89e3('0x38')]};});_0x556c6f['model']=_[_0x89e3('0x34')](_0x2debfd,_0x89e3('0x31'));_0x556c6f[_0x89e3('0x39')]=_[_0x89e3('0x3a')](_0x27212['query']);_0x556c6f[_0x89e3('0x3b')]=_[_0x89e3('0x3c')](_0x556c6f['model'],_0x556c6f['query']);_0xd341e1['attributes']=_['intersection'](_0x556c6f['model'],qs[_0x89e3('0x3d')](_0x27212['query'][_0x89e3('0x3d')]));_0xd341e1['attributes']=_0xd341e1['attributes'][_0x89e3('0x3e')]?_0xd341e1['attributes']:_0x556c6f[_0x89e3('0x3f')];if(!_0x27212[_0x89e3('0x39')][_0x89e3('0x40')](_0x89e3('0x41'))){_0xd341e1[_0x89e3('0x23')]=qs[_0x89e3('0x23')](_0x27212['query']['limit']);_0xd341e1[_0x89e3('0x21')]=qs[_0x89e3('0x21')](_0x27212['query'][_0x89e3('0x21')]);}_0xd341e1[_0x89e3('0x42')]=qs[_0x89e3('0x43')](_0x27212[_0x89e3('0x39')][_0x89e3('0x43')]);_0xd341e1[_0x89e3('0x44')]=qs[_0x89e3('0x3b')](_[_0x89e3('0x45')](_0x27212[_0x89e3('0x39')],_0x556c6f[_0x89e3('0x3b')]),_0x2debfd);if(_0x27212[_0x89e3('0x39')][_0x89e3('0x46')]){_0xd341e1['where']=_[_0x89e3('0x47')](_0xd341e1[_0x89e3('0x44')],{'$or':_['map'](_0x2debfd,function(_0x40c24e){if(_0x40c24e[_0x89e3('0x37')]!==_0x89e3('0x48')){var _0x16ca0b={};_0x16ca0b[_0x40c24e[_0x89e3('0x31')]]={'$like':'%'+_0x27212[_0x89e3('0x39')]['filter']+'%'};return _0x16ca0b;}})});}_0xd341e1=_[_0x89e3('0x47')]({},_0xd341e1,_0x27212[_0x89e3('0x49')]);var _0x1627e8={'where':_0xd341e1[_0x89e3('0x44')]};return db[_0x89e3('0x35')][_0x89e3('0x24')](_0x1627e8)[_0x89e3('0x2a')](function(_0x279c90){_0x2cb5b9[_0x89e3('0x24')]=_0x279c90;if(_0x27212['query'][_0x89e3('0x4a')]){_0xd341e1[_0x89e3('0x4b')]=[{'all':!![]}];}return db[_0x89e3('0x35')][_0x89e3('0x4c')](_0xd341e1);})[_0x89e3('0x2a')](function(_0x3ff8c7){_0x2cb5b9[_0x89e3('0x4d')]=_0x3ff8c7;return _0x2cb5b9;})['then'](respondWithFilteredResult(_0x121926,_0xd341e1))[_0x89e3('0x4e')](handleError(_0x121926,null));};exports[_0x89e3('0x4f')]=function(_0x189655,_0x3c10db){var _0x5b5f8e={'raw':![],'where':{'id':_0x189655['params']['id']}},_0x3f7758={};_0x3f7758[_0x89e3('0x3f')]=_['keys'](db[_0x89e3('0x35')][_0x89e3('0x36')]);_0x3f7758[_0x89e3('0x39')]=_['keys'](_0x189655['query']);_0x3f7758[_0x89e3('0x3b')]=_[_0x89e3('0x3c')](_0x3f7758['model'],_0x3f7758[_0x89e3('0x39')]);_0x5b5f8e[_0x89e3('0x50')]=_[_0x89e3('0x3c')](_0x3f7758['model'],qs[_0x89e3('0x3d')](_0x189655[_0x89e3('0x39')]['fields']));_0x5b5f8e[_0x89e3('0x50')]=_0x5b5f8e[_0x89e3('0x50')]['length']?_0x5b5f8e[_0x89e3('0x50')]:_0x3f7758['model'];if(_0x189655['query']['includeAll']){_0x5b5f8e['include']=[{'all':!![]}];}_0x5b5f8e=_[_0x89e3('0x47')]({},_0x5b5f8e,_0x189655[_0x89e3('0x49')]);return db[_0x89e3('0x35')][_0x89e3('0x51')](_0x5b5f8e)[_0x89e3('0x2a')](handleEntityNotFound(_0x3c10db,null))[_0x89e3('0x2a')](respondWithResult(_0x3c10db,null))['catch'](handleError(_0x3c10db,null));};exports[_0x89e3('0x52')]=function(_0x4ed525,_0x29dca3){return db[_0x89e3('0x35')][_0x89e3('0x52')](_0x4ed525['body'],{})[_0x89e3('0x2a')](function(_0x16f887){var _0x3736a5=_0x4ed525[_0x89e3('0x53')][_0x89e3('0x2c')]({'plain':!![]});if(!_0x3736a5)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3736a5['role']===_0x89e3('0x53')){var _0x38cd02=_0x16f887[_0x89e3('0x2c')]({'plain':!![]});var _0x4ea920=_0x89e3('0x2d');return db[_0x89e3('0x54')][_0x89e3('0x51')]({'where':{'name':_0x4ea920,'userProfileId':_0x3736a5[_0x89e3('0x55')]},'raw':!![]})[_0x89e3('0x2a')](function(_0x4824dc){if(_0x4824dc&&_0x4824dc[_0x89e3('0x56')]===0x0){return db[_0x89e3('0x2e')][_0x89e3('0x52')]({'name':_0x38cd02[_0x89e3('0x31')],'resourceId':_0x38cd02['id'],'type':_0x4824dc['name'],'sectionId':_0x4824dc['id']},{})['then'](function(){return _0x16f887;});}else{return _0x16f887;}})[_0x89e3('0x4e')](function(_0x5a618b){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5a618b);throw _0x5a618b;});}return _0x16f887;})[_0x89e3('0x2a')](respondWithResult(_0x29dca3,0xc9))[_0x89e3('0x4e')](handleError(_0x29dca3,null));};exports['clone']=function(_0xb49924,_0x163e74){var _0xc23d3f={'where':{'id':_0xb49924[_0x89e3('0x57')]['id']}},_0x53a2ac={};_0x53a2ac['model']=_['keys'](db['JscriptyProject'][_0x89e3('0x36')]);_0xc23d3f['attributes']=_['intersection'](_0x53a2ac[_0x89e3('0x3f')],qs[_0x89e3('0x3d')](_0xb49924[_0x89e3('0x39')][_0x89e3('0x3d')]));_0xc23d3f[_0x89e3('0x50')]=_0xc23d3f[_0x89e3('0x50')][_0x89e3('0x3e')]?_0xc23d3f[_0x89e3('0x50')]:_0x53a2ac['model'];if(_0xb49924[_0x89e3('0x39')][_0x89e3('0x4a')]){_0xc23d3f[_0x89e3('0x4b')]=[{'all':!![]}];}_0xc23d3f=_[_0x89e3('0x47')]({},_0xc23d3f,_0xb49924['options']);return db[_0x89e3('0x35')][_0x89e3('0x51')](_0xc23d3f)[_0x89e3('0x2a')](handleEntityNotFound(_0x163e74,null))['then'](function(_0x3a791f){if(_0x3a791f){var _0x451018=_0x3a791f[_0x89e3('0x2c')]({'plain':!![]});_0x451018=qs['omit'](_0x451018,['id',_0x89e3('0x58'),_0x89e3('0x59')]);_0xb49924[_0x89e3('0x5a')]=_[_0x89e3('0x5b')](_0xb49924[_0x89e3('0x5a')],['id',_0x89e3('0x58'),_0x89e3('0x59')]);return db[_0x89e3('0x35')]['create'](_['merge'](_0x451018,_0xb49924[_0x89e3('0x5a')]),{'include':_0xb49924[_0x89e3('0x39')][_0x89e3('0x4a')]?[{'all':!![]}]:undefined})['then'](function(_0x135f9d){var _0x1b315f=_0xb49924[_0x89e3('0x53')]['get']({'plain':!![]});if(!_0x1b315f)throw new Error(_0x89e3('0x5c'));if(_0x1b315f[_0x89e3('0x5d')]===_0x89e3('0x53')){var _0x38b456=_0x135f9d['get']({'plain':!![]});var _0x53a05b=_0x89e3('0x2d');return db[_0x89e3('0x54')]['find']({'where':{'name':_0x53a05b,'userProfileId':_0x1b315f[_0x89e3('0x55')]},'raw':!![]})[_0x89e3('0x2a')](function(_0x2b3ab8){if(_0x2b3ab8&&_0x2b3ab8[_0x89e3('0x56')]===0x0){return db['UserProfileResource'][_0x89e3('0x52')]({'name':_0x38b456[_0x89e3('0x31')],'resourceId':_0x38b456['id'],'type':_0x2b3ab8['name'],'sectionId':_0x2b3ab8['id']},{})['then'](function(){return _0x135f9d;});}else{return _0x135f9d;}})['catch'](function(_0x4d41f8){logger[_0x89e3('0x2f')](_0x89e3('0x5e'),_0x4d41f8);throw _0x4d41f8;});}return _0x135f9d;});}})[_0x89e3('0x2a')](respondWithResult(_0x163e74,0xc9))[_0x89e3('0x4e')](handleError(_0x163e74,null));};exports['update']=function(_0x4432a4,_0x206333){if(_0x4432a4[_0x89e3('0x5a')]['id']){delete _0x4432a4[_0x89e3('0x5a')]['id'];}return db['JscriptyProject'][_0x89e3('0x51')]({'where':{'id':_0x4432a4[_0x89e3('0x57')]['id']}})['then'](handleEntityNotFound(_0x206333,null))[_0x89e3('0x2a')](saveUpdates(_0x4432a4['body'],null))[_0x89e3('0x2a')](respondWithResult(_0x206333,null))[_0x89e3('0x4e')](handleError(_0x206333,null));};exports['destroy']=function(_0xb3a87,_0x7b0775){return db[_0x89e3('0x35')][_0x89e3('0x51')]({'where':{'id':_0xb3a87[_0x89e3('0x57')]['id']}})['then'](handleEntityNotFound(_0x7b0775,null))['then'](removeEntity(_0x7b0775,null))[_0x89e3('0x4e')](handleError(_0x7b0775,null));};exports[_0x89e3('0x5f')]=function(_0x338ca7,_0x58fdb0,_0x523454){var _0x23ce0b={'raw':!![],'where':{}};var _0x13a742={};var _0x17b216={'count':0x0,'rows':[]};return db[_0x89e3('0x35')][_0x89e3('0x60')]({'where':{'id':_0x338ca7[_0x89e3('0x57')]['id']}})[_0x89e3('0x2a')](handleEntityNotFound(_0x58fdb0,null))[_0x89e3('0x2a')](function(_0x179da3){if(_0x179da3){_0x13a742[_0x89e3('0x3f')]=_[_0x89e3('0x3a')](db[_0x89e3('0x61')][_0x89e3('0x36')]);_0x13a742['query']=_[_0x89e3('0x3a')](_0x338ca7[_0x89e3('0x39')]);_0x13a742[_0x89e3('0x3b')]=_[_0x89e3('0x3c')](_0x13a742['model'],_0x13a742[_0x89e3('0x39')]);_0x23ce0b[_0x89e3('0x50')]=_[_0x89e3('0x3c')](_0x13a742[_0x89e3('0x3f')],qs[_0x89e3('0x3d')](_0x338ca7['query'][_0x89e3('0x3d')]));_0x23ce0b['attributes']=_0x23ce0b[_0x89e3('0x50')][_0x89e3('0x3e')]?_0x23ce0b['attributes']:_0x13a742[_0x89e3('0x3f')];if(!_0x338ca7[_0x89e3('0x39')][_0x89e3('0x40')](_0x89e3('0x41'))){_0x23ce0b[_0x89e3('0x23')]=qs[_0x89e3('0x23')](_0x338ca7[_0x89e3('0x39')][_0x89e3('0x23')]);_0x23ce0b['offset']=qs[_0x89e3('0x21')](_0x338ca7['query'][_0x89e3('0x21')]);}_0x23ce0b[_0x89e3('0x42')]=qs[_0x89e3('0x43')](_0x338ca7[_0x89e3('0x39')]['sort']);_0x23ce0b[_0x89e3('0x44')]=qs[_0x89e3('0x3b')](_[_0x89e3('0x45')](_0x338ca7[_0x89e3('0x39')],_0x13a742[_0x89e3('0x3b')]));_0x23ce0b[_0x89e3('0x44')]['ProjectId']=_0x179da3['id'];if(_0x338ca7['query'][_0x89e3('0x46')]){_0x23ce0b['where']=_['merge'](_0x23ce0b[_0x89e3('0x44')],{'$or':_[_0x89e3('0x34')](_0x23ce0b['attributes'],function(_0x5dc4df){var _0x480047={};_0x480047[_0x5dc4df]={'$like':'%'+_0x338ca7[_0x89e3('0x39')]['filter']+'%'};return _0x480047;})});}_0x23ce0b=_[_0x89e3('0x47')]({},_0x23ce0b,_0x338ca7[_0x89e3('0x49')]);return db[_0x89e3('0x61')]['count']({'where':_0x23ce0b[_0x89e3('0x44')]})[_0x89e3('0x2a')](function(_0x2c1c26){_0x17b216[_0x89e3('0x24')]=_0x2c1c26;if(_0x338ca7[_0x89e3('0x39')]['includeAll']){_0x23ce0b[_0x89e3('0x4b')]=[{'all':!![]}];}return db[_0x89e3('0x61')][_0x89e3('0x4c')](_0x23ce0b);})['then'](function(_0x45a35b){_0x17b216[_0x89e3('0x4d')]=_0x45a35b;return _0x17b216;});}})[_0x89e3('0x2a')](respondWithFilteredResult(_0x58fdb0,_0x23ce0b))[_0x89e3('0x4e')](handleError(_0x58fdb0,null));};exports['getAnswers']=function(_0x14c7c8,_0x3df83e,_0x2466da){var _0x270de1={'raw':!![],'where':{}};var _0x560e1c={};var _0x4ced46={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x89e3('0x60')]({'where':{'id':_0x14c7c8[_0x89e3('0x57')]['id']}})[_0x89e3('0x2a')](handleEntityNotFound(_0x3df83e,null))[_0x89e3('0x2a')](function(_0x240ef4){if(_0x240ef4){_0x560e1c[_0x89e3('0x3f')]=_[_0x89e3('0x3a')](db[_0x89e3('0x62')]['rawAttributes']);_0x560e1c['query']=_[_0x89e3('0x3a')](_0x14c7c8[_0x89e3('0x39')]);_0x560e1c[_0x89e3('0x3b')]=_['intersection'](_0x560e1c[_0x89e3('0x3f')],_0x560e1c[_0x89e3('0x39')]);_0x270de1[_0x89e3('0x50')]=_['intersection'](_0x560e1c[_0x89e3('0x3f')],qs['fields'](_0x14c7c8['query'][_0x89e3('0x3d')]));_0x270de1[_0x89e3('0x50')]=_0x270de1[_0x89e3('0x50')][_0x89e3('0x3e')]?_0x270de1['attributes']:_0x560e1c[_0x89e3('0x3f')];if(!_0x14c7c8[_0x89e3('0x39')][_0x89e3('0x40')]('nolimit')){_0x270de1[_0x89e3('0x23')]=qs[_0x89e3('0x23')](_0x14c7c8['query']['limit']);_0x270de1['offset']=qs[_0x89e3('0x21')](_0x14c7c8[_0x89e3('0x39')]['offset']);}_0x270de1[_0x89e3('0x42')]=qs[_0x89e3('0x43')](_0x14c7c8[_0x89e3('0x39')][_0x89e3('0x43')]);_0x270de1[_0x89e3('0x44')]=qs[_0x89e3('0x3b')](_[_0x89e3('0x45')](_0x14c7c8['query'],_0x560e1c[_0x89e3('0x3b')]));_0x270de1['where']['ProjectId']=_0x240ef4['id'];if(_0x14c7c8[_0x89e3('0x39')][_0x89e3('0x46')]){_0x270de1[_0x89e3('0x44')]=_[_0x89e3('0x47')](_0x270de1[_0x89e3('0x44')],{'$or':_[_0x89e3('0x34')](_0x270de1[_0x89e3('0x50')],function(_0x418cb1){var _0xaff1d4={};_0xaff1d4[_0x418cb1]={'$like':'%'+_0x14c7c8['query'][_0x89e3('0x46')]+'%'};return _0xaff1d4;})});}_0x270de1=_[_0x89e3('0x47')]({},_0x270de1,_0x14c7c8[_0x89e3('0x49')]);return db['JscriptyAnswerReport']['count']({'where':_0x270de1[_0x89e3('0x44')]})[_0x89e3('0x2a')](function(_0xe5273d){_0x4ced46[_0x89e3('0x24')]=_0xe5273d;if(_0x14c7c8[_0x89e3('0x39')][_0x89e3('0x4a')]){_0x270de1[_0x89e3('0x4b')]=[{'all':!![]}];}return db[_0x89e3('0x62')][_0x89e3('0x4c')](_0x270de1);})[_0x89e3('0x2a')](function(_0x1fce3d){_0x4ced46[_0x89e3('0x4d')]=_0x1fce3d;return _0x4ced46;});}})['then'](respondWithFilteredResult(_0x3df83e,_0x270de1))['catch'](handleError(_0x3df83e,null));};function char(_0x5168d2){return _0x89e3('0x63')===typeof _0x5168d2?String[_0x89e3('0x64')]['apply'](null,arguments):_0x5168d2;}function needsEncapsulation(_0xbfbb95){return!!_0xbfbb95&&(_0xbfbb95['toString']()[_0x89e3('0x65')](char(0xd))>=0x0||_0xbfbb95[_0x89e3('0x66')]()[_0x89e3('0x65')](char(0xa))>=0x0||_0xbfbb95[_0x89e3('0x66')]()[_0x89e3('0x65')](char(0x2c))>=0x0||_0xbfbb95[_0x89e3('0x66')]()[_0x89e3('0x65')](char(0x22))>=0x0);}function encapsulate(_0x2778ac){var _0x2daaae=char(0x22),_0x21fafe='\x5c'+char(0x22),_0xa4b4f6=_0x2778ac[_0x89e3('0x66')]()[_0x89e3('0x67')](new RegExp(_0x2daaae,'g'),_0x21fafe);return _0x2daaae+_0xa4b4f6+_0x2daaae;}exports[_0x89e3('0x68')]=function(_0x1900e8,_0x2f77a8,_0x2d09e0){var _0xad0938,_0x174e1d;var _0x25d21c={'where':{'ProjectId':_0x1900e8[_0x89e3('0x57')]['id']}};if(_0x1900e8[_0x89e3('0x39')]['startTime']){_0x25d21c[_0x89e3('0x44')][_0x89e3('0x69')]=JSON[_0x89e3('0x6a')](_0x1900e8[_0x89e3('0x39')][_0x89e3('0x6b')]);}return db[_0x89e3('0x61')][_0x89e3('0x4c')](_0x25d21c)[_0x89e3('0x2a')](handleEntityNotFound(_0x2f77a8,null))['then'](function(_0x373182){if(_0x373182){_0xad0938=_0x373182;return db['JscriptyQuestionReport'][_0x89e3('0x4c')]({'where':{'SessionId':{'$in':_[_0x89e3('0x34')](_0xad0938,'id')},'ProjectId':_0x1900e8['params']['id']},'order':_0x89e3('0x6c')});}})[_0x89e3('0x2a')](handleEntityNotFound(_0x2f77a8,null))['then'](function(_0x534107){if(_0x534107){_0x174e1d=_0x534107;var _0x5c4df2={};for(var _0x2cfef1=0x0,_0x445704=_0x174e1d[_0x89e3('0x3e')];_0x2cfef1<_0x445704;_0x2cfef1++){if(!_0x5c4df2[_0x89e3('0x40')](_0x174e1d[_0x2cfef1]['questionId'])){_0x5c4df2[_0x174e1d[_0x2cfef1]['questionId']]=needsEncapsulation(_0x174e1d[_0x2cfef1][_0x89e3('0x6d')])?encapsulate(_0x174e1d[_0x2cfef1][_0x89e3('0x6d')]):_0x174e1d[_0x2cfef1][_0x89e3('0x6d')];}}var _0x185e43=[],_0x3fd47d={};for(var _0x1bfbe7=0x0,_0x1fdf0f=_0xad0938[_0x89e3('0x3e')];_0x1bfbe7<_0x1fdf0f;_0x1bfbe7++){_0x3fd47d={'ProjectId':_0x1900e8[_0x89e3('0x57')]['id'],'SessionId':_0xad0938[_0x1bfbe7]['id'],'StartTime':moment(_0xad0938[_0x1bfbe7][_0x89e3('0x69')])['format'](_0x89e3('0x6e'))};for(var _0x39be98=0x0,_0x36d652=_0x174e1d[_0x89e3('0x3e')];_0x39be98<_0x36d652;_0x39be98++){if(_0x174e1d[_0x39be98][_0x89e3('0x6f')]==_0xad0938[_0x1bfbe7]['id']&&_0x5c4df2[_0x89e3('0x40')](_0x174e1d[_0x39be98][_0x89e3('0x70')])){_0x3fd47d[_0x5c4df2[_0x174e1d[_0x39be98][_0x89e3('0x70')]]]=_0x174e1d[_0x39be98][_0x89e3('0x71')];}}for(var _0x236739 in _0x5c4df2){if(!_0x3fd47d[_0x89e3('0x40')](_0x5c4df2[_0x236739])){_0x3fd47d[_0x5c4df2[_0x236739]]=null;}}_0x185e43[_0x89e3('0x72')](_0x3fd47d);}return _0x185e43;}})[_0x89e3('0x2a')](function(_0x524f4e){if(!_[_0x89e3('0x73')](_0x524f4e)){var _0x288a92=toCsv(_0x524f4e);var _0x291ee0=Date[_0x89e3('0x74')]();fs['writeFileSync'](util[_0x89e3('0x75')](_0x89e3('0x76'),_0x1900e8[_0x89e3('0x57')]['id'],_0x291ee0),_0x288a92);_0x2f77a8[_0x89e3('0x77')](_0x89e3('0x78'),_0x89e3('0x79')+util[_0x89e3('0x75')](_0x89e3('0x7a'),_0x1900e8[_0x89e3('0x57')]['id'],_0x291ee0));_0x2f77a8['setHeader'](_0x89e3('0x7b'),_0x89e3('0x7c'));return _0x2f77a8[_0x89e3('0x7d')](util[_0x89e3('0x75')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x1900e8['params']['id'],_0x291ee0));}else{return _0x2f77a8[_0x89e3('0x1d')](0xcc);}})['catch'](handleError(_0x2f77a8,null));};
\ No newline at end of file
index 4b15818..605d7ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4a1=['jscripty_projects','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./jscriptyProject.attributes','exports','define','JscriptyProject'];(function(_0x7f08d2,_0x1f2339){var _0x490d32=function(_0x497a49){while(--_0x497a49){_0x7f08d2['push'](_0x7f08d2['shift']());}};_0x490d32(++_0x1f2339);}(_0xc4a1,0x1ef));var _0x1c4a=function(_0x868a4a,_0x5dcd66){_0x868a4a=_0x868a4a-0x0;var _0x2f2984=_0xc4a1[_0x868a4a];return _0x2f2984;};'use strict';var _=require(_0x1c4a('0x0'));var util=require('util');var logger=require(_0x1c4a('0x1'))(_0x1c4a('0x2'));var moment=require(_0x1c4a('0x3'));var BPromise=require('bluebird');var rp=require(_0x1c4a('0x4'));var fs=require('fs');var path=require(_0x1c4a('0x5'));var rimraf=require(_0x1c4a('0x6'));var config=require(_0x1c4a('0x7'));var attributes=require(_0x1c4a('0x8'));module[_0x1c4a('0x9')]=function(_0x2685b1,_0x4732b2){return _0x2685b1[_0x1c4a('0xa')](_0x1c4a('0xb'),attributes,{'tableName':_0x1c4a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x503a=['../../config/environment','define','jscripty_projects','lodash','util','api','bluebird','request-promise','path','rimraf'];(function(_0x178f27,_0x26e5b0){var _0x1bef17=function(_0x32cf4d){while(--_0x32cf4d){_0x178f27['push'](_0x178f27['shift']());}};_0x1bef17(++_0x26e5b0);}(_0x503a,0x19d));var _0xa503=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x503a[_0x465a0c];return _0x1e202e;};'use strict';var _=require(_0xa503('0x0'));var util=require(_0xa503('0x1'));var logger=require('../../config/logger')(_0xa503('0x2'));var moment=require('moment');var BPromise=require(_0xa503('0x3'));var rp=require(_0xa503('0x4'));var fs=require('fs');var path=require(_0xa503('0x5'));var rimraf=require(_0xa503('0x6'));var config=require(_0xa503('0x7'));var attributes=require('./jscriptyProject.attributes');module['exports']=function(_0x47f11d,_0x1eb8d1){return _0x47f11d[_0xa503('0x8')]('JscriptyProject',attributes,{'tableName':_0xa503('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6281219..193b4e3 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(_0x124da8,_0x2f4adf){var _0x470b89=function(_0x42c3e1){while(--_0x42c3e1){_0x124da8['push'](_0x124da8['shift']());}};_0x470b89(++_0x2f4adf);}(_0xaa88,0x137));var _0x8aa8=function(_0x1ed116,_0x23bc80){_0x1ed116=_0x1ed116-0x0;var _0x574066=_0xaa88[_0x1ed116];return _0x574066;};'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 _0x0713=['JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\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(_0x1394b2,_0x2869f6){var _0x15463a=function(_0x54e977){while(--_0x54e977){_0x1394b2['push'](_0x1394b2['shift']());}};_0x15463a(++_0x2869f6);}(_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')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('JscriptyProject,\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')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
index 2a58cb1..6a7f625 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47aa=['index','/describe','isAuthenticated','describe','show','post','create','put','/:id','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x47aa,0x96));var _0xa47a=function(_0x5a920b,_0x148669){_0x5a920b=_0x5a920b-0x0;var _0x2d0e13=_0x47aa[_0x5a920b];return _0x2d0e13;};'use strict';var multer=require(_0xa47a('0x0'));var util=require('util');var path=require(_0xa47a('0x1'));var timeout=require(_0xa47a('0x2'));var express=require(_0xa47a('0x3'));var router=express[_0xa47a('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xa47a('0x5'));var interaction=require(_0xa47a('0x6'));var config=require(_0xa47a('0x7'));var controller=require(_0xa47a('0x8'));router[_0xa47a('0x9')]('/',auth['isAuthenticated'](),controller[_0xa47a('0xa')]);router['get'](_0xa47a('0xb'),auth[_0xa47a('0xc')](),controller[_0xa47a('0xd')]);router[_0xa47a('0x9')]('/:id',auth[_0xa47a('0xc')](),controller[_0xa47a('0xe')]);router[_0xa47a('0xf')]('/',auth['isAuthenticated'](),controller[_0xa47a('0x10')]);router[_0xa47a('0x11')](_0xa47a('0x12'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xa47a('0x12'),auth['isAuthenticated'](),controller['destroy']);module[_0xa47a('0x13')]=router;
\ No newline at end of file
+var _0x4cfe=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','put','/:id','update','delete','destroy','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4cfe,0x1b5));var _0xe4cf=function(_0x3b7d60,_0x1561ef){_0x3b7d60=_0x3b7d60-0x0;var _0x17f7c9=_0x4cfe[_0x3b7d60];return _0x17f7c9;};'use strict';var multer=require(_0xe4cf('0x0'));var util=require(_0xe4cf('0x1'));var path=require(_0xe4cf('0x2'));var timeout=require(_0xe4cf('0x3'));var express=require(_0xe4cf('0x4'));var router=express['Router']();var fs_extra=require(_0xe4cf('0x5'));var auth=require(_0xe4cf('0x6'));var interaction=require(_0xe4cf('0x7'));var config=require(_0xe4cf('0x8'));var controller=require('./jscriptyQuestionReport.controller');router[_0xe4cf('0x9')]('/',auth[_0xe4cf('0xa')](),controller[_0xe4cf('0xb')]);router[_0xe4cf('0x9')]('/describe',auth[_0xe4cf('0xa')](),controller['describe']);router[_0xe4cf('0x9')]('/:id',auth[_0xe4cf('0xa')](),controller[_0xe4cf('0xc')]);router['post']('/',auth[_0xe4cf('0xa')](),controller['create']);router[_0xe4cf('0xd')](_0xe4cf('0xe'),auth[_0xe4cf('0xa')](),controller[_0xe4cf('0xf')]);router[_0xe4cf('0x10')](_0xe4cf('0xe'),auth[_0xe4cf('0xa')](),controller[_0xe4cf('0x11')]);module[_0xe4cf('0x12')]=router;
\ No newline at end of file
index 9a5ac68..6e52234 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0x7a54,0x106));var _0x47a5=function(_0x519676,_0xe73af6){_0x519676=_0x519676-0x0;var _0x1e4b14=_0x7a54[_0x519676];return _0x1e4b14;};'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(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x7a54,0x106));var _0x47a5=function(_0x31d4fa,_0x5a1bbe){_0x31d4fa=_0x31d4fa-0x0;var _0x16b06a=_0x7a54[_0x31d4fa];return _0x16b06a;};'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 6c09021..a090173 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4287=['offset','undefined','limit','count','set','Content-Range','apply','reject','save','stack','name','send','index','map','JscriptyQuestionReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','rows','then','catch','show','params','create','update','body','find','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0x57b341,_0x20e4e2){var _0x5f161e=function(_0x29ed58){while(--_0x29ed58){_0x57b341['push'](_0x57b341['shift']());}};_0x5f161e(++_0x20e4e2);}(_0x4287,0x160));var _0x7428=function(_0x4cff35,_0x2d2550){_0x4cff35=_0x4cff35-0x0;var _0x355ada=_0x4287[_0x4cff35];return _0x355ada;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7428('0x0'));var zipdir=require(_0x7428('0x1'));var jsonpatch=require(_0x7428('0x2'));var rp=require(_0x7428('0x3'));var moment=require('moment');var BPromise=require(_0x7428('0x4'));var Mustache=require(_0x7428('0x5'));var util=require(_0x7428('0x6'));var path=require(_0x7428('0x7'));var sox=require(_0x7428('0x8'));var csv=require(_0x7428('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7428('0xa'));var squel=require(_0x7428('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7428('0xc'));var toCsv=require(_0x7428('0x9'));var querystring=require(_0x7428('0xd'));var Papa=require(_0x7428('0xe'));var Redis=require('ioredis');var authService=require(_0x7428('0xf'));var qs=require(_0x7428('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7428('0x11'));var logger=require(_0x7428('0x12'))(_0x7428('0x13'));var utils=require(_0x7428('0x14'));var config=require(_0x7428('0x15'));var licenseUtil=require(_0x7428('0x16'));var db=require(_0x7428('0x17'))['db'];function respondWithStatusCode(_0x126e8d,_0x3f613a){_0x3f613a=_0x3f613a||0xcc;return function(_0x50f033){if(_0x50f033){return _0x126e8d[_0x7428('0x18')](_0x3f613a);}return _0x126e8d[_0x7428('0x19')](_0x3f613a)[_0x7428('0x1a')]();};}function respondWithResult(_0x7ec418,_0x574c9f){_0x574c9f=_0x574c9f||0xc8;return function(_0x509c10){if(_0x509c10){return _0x7ec418[_0x7428('0x19')](_0x574c9f)[_0x7428('0x1b')](_0x509c10);}};}function respondWithFilteredResult(_0x32c2bb,_0x249047){return function(_0x44f598){if(_0x44f598){var _0x561236=typeof _0x249047[_0x7428('0x1c')]===_0x7428('0x1d')&&typeof _0x249047[_0x7428('0x1e')]===_0x7428('0x1d');var _0x294517=_0x44f598['count'];var _0x3ef3b5=_0x561236?0x0:_0x249047['offset'];var _0x3756c8=_0x561236?_0x44f598[_0x7428('0x1f')]:_0x249047[_0x7428('0x1c')]+_0x249047['limit'];var _0x195838;if(_0x3756c8>=_0x294517){_0x3756c8=_0x294517;_0x195838=0xc8;}else{_0x195838=0xce;}_0x32c2bb[_0x7428('0x19')](_0x195838);return _0x32c2bb[_0x7428('0x20')](_0x7428('0x21'),_0x3ef3b5+'-'+_0x3756c8+'/'+_0x294517)[_0x7428('0x1b')](_0x44f598);}return null;};}function patchUpdates(_0x2bccf3){return function(_0x27a27b){try{jsonpatch[_0x7428('0x22')](_0x27a27b,_0x2bccf3,!![]);}catch(_0x57b4e3){return BPromise[_0x7428('0x23')](_0x57b4e3);}return _0x27a27b[_0x7428('0x24')]();};}function saveUpdates(_0x5c172f,_0x5c38af){return function(_0x1e4eca){if(_0x1e4eca){return _0x1e4eca['update'](_0x5c172f)['then'](function(_0x25e4ee){return _0x25e4ee;});}return null;};}function removeEntity(_0x237543,_0x4c9566){return function(_0x31dda7){if(_0x31dda7){return _0x31dda7['destroy']()['then'](function(){_0x237543[_0x7428('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x585780,_0x13775e){return function(_0x55b1e0){if(!_0x55b1e0){_0x585780[_0x7428('0x18')](0x194);}return _0x55b1e0;};}function handleError(_0x5a7eaa,_0x1c5743){_0x1c5743=_0x1c5743||0x1f4;return function(_0x416e38){logger['error'](_0x416e38[_0x7428('0x25')]);if(_0x416e38[_0x7428('0x26')]){delete _0x416e38[_0x7428('0x26')];}_0x5a7eaa[_0x7428('0x19')](_0x1c5743)[_0x7428('0x27')](_0x416e38);};}exports[_0x7428('0x28')]=function(_0x7acdd1,_0x161cb3){var _0x544cc4={},_0x2b9e54={},_0x5b21fe={'count':0x0,'rows':[]};var _0x4e9725=_[_0x7428('0x29')](db[_0x7428('0x2a')][_0x7428('0x2b')],function(_0x487eab){return{'name':_0x487eab[_0x7428('0x2c')],'type':_0x487eab[_0x7428('0x2d')][_0x7428('0x2e')]};});_0x2b9e54[_0x7428('0x2f')]=_[_0x7428('0x29')](_0x4e9725,'name');_0x2b9e54[_0x7428('0x30')]=_[_0x7428('0x31')](_0x7acdd1['query']);_0x2b9e54[_0x7428('0x32')]=_['intersection'](_0x2b9e54[_0x7428('0x2f')],_0x2b9e54['query']);_0x544cc4[_0x7428('0x33')]=_[_0x7428('0x34')](_0x2b9e54[_0x7428('0x2f')],qs[_0x7428('0x35')](_0x7acdd1[_0x7428('0x30')][_0x7428('0x35')]));_0x544cc4['attributes']=_0x544cc4[_0x7428('0x33')][_0x7428('0x36')]?_0x544cc4[_0x7428('0x33')]:_0x2b9e54[_0x7428('0x2f')];if(!_0x7acdd1[_0x7428('0x30')][_0x7428('0x37')](_0x7428('0x38'))){_0x544cc4[_0x7428('0x1e')]=qs['limit'](_0x7acdd1[_0x7428('0x30')][_0x7428('0x1e')]);_0x544cc4[_0x7428('0x1c')]=qs['offset'](_0x7acdd1['query'][_0x7428('0x1c')]);}_0x544cc4['order']=qs[_0x7428('0x39')](_0x7acdd1[_0x7428('0x30')][_0x7428('0x39')]);_0x544cc4[_0x7428('0x3a')]=qs['filters'](_[_0x7428('0x3b')](_0x7acdd1[_0x7428('0x30')],_0x2b9e54['filters']),_0x4e9725);if(_0x7acdd1[_0x7428('0x30')][_0x7428('0x3c')]){_0x544cc4[_0x7428('0x3a')]=_['merge'](_0x544cc4[_0x7428('0x3a')],{'$or':_[_0x7428('0x29')](_0x4e9725,function(_0x405467){if(_0x405467[_0x7428('0x2d')]!==_0x7428('0x3d')){var _0x5f3b15={};_0x5f3b15[_0x405467['name']]={'$like':'%'+_0x7acdd1[_0x7428('0x30')][_0x7428('0x3c')]+'%'};return _0x5f3b15;}})});}_0x544cc4=_[_0x7428('0x3e')]({},_0x544cc4,_0x7acdd1['options']);var _0x36bd49={'where':_0x544cc4[_0x7428('0x3a')]};return db[_0x7428('0x2a')][_0x7428('0x1f')](_0x36bd49)['then'](function(_0x37f470){_0x5b21fe[_0x7428('0x1f')]=_0x37f470;if(_0x7acdd1['query'][_0x7428('0x3f')]){_0x544cc4[_0x7428('0x40')]=[{'all':!![]}];}return db['JscriptyQuestionReport']['findAll'](_0x544cc4);})['then'](function(_0x43f41a){_0x5b21fe[_0x7428('0x41')]=_0x43f41a;return _0x5b21fe;})[_0x7428('0x42')](respondWithFilteredResult(_0x161cb3,_0x544cc4))[_0x7428('0x43')](handleError(_0x161cb3,null));};exports[_0x7428('0x44')]=function(_0x44da75,_0x437bc7){var _0x4ddf2e={'raw':!![],'where':{'id':_0x44da75[_0x7428('0x45')]['id']}},_0x3f5b4e={};_0x3f5b4e[_0x7428('0x2f')]=_[_0x7428('0x31')](db[_0x7428('0x2a')][_0x7428('0x2b')]);_0x3f5b4e[_0x7428('0x30')]=_[_0x7428('0x31')](_0x44da75[_0x7428('0x30')]);_0x3f5b4e[_0x7428('0x32')]=_[_0x7428('0x34')](_0x3f5b4e[_0x7428('0x2f')],_0x3f5b4e[_0x7428('0x30')]);_0x4ddf2e[_0x7428('0x33')]=_[_0x7428('0x34')](_0x3f5b4e[_0x7428('0x2f')],qs[_0x7428('0x35')](_0x44da75[_0x7428('0x30')][_0x7428('0x35')]));_0x4ddf2e[_0x7428('0x33')]=_0x4ddf2e[_0x7428('0x33')][_0x7428('0x36')]?_0x4ddf2e[_0x7428('0x33')]:_0x3f5b4e[_0x7428('0x2f')];if(_0x44da75[_0x7428('0x30')][_0x7428('0x3f')]){_0x4ddf2e['include']=[{'all':!![]}];}_0x4ddf2e=_['merge']({},_0x4ddf2e,_0x44da75['options']);return db[_0x7428('0x2a')]['find'](_0x4ddf2e)['then'](handleEntityNotFound(_0x437bc7,null))['then'](respondWithResult(_0x437bc7,null))[_0x7428('0x43')](handleError(_0x437bc7,null));};exports['create']=function(_0x260996,_0x309538){return db[_0x7428('0x2a')][_0x7428('0x46')](_0x260996['body'],{})[_0x7428('0x42')](respondWithResult(_0x309538,0xc9))['catch'](handleError(_0x309538,null));};exports[_0x7428('0x47')]=function(_0x395dd2,_0x309a76){if(_0x395dd2[_0x7428('0x48')]['id']){delete _0x395dd2[_0x7428('0x48')]['id'];}return db['JscriptyQuestionReport'][_0x7428('0x49')]({'where':{'id':_0x395dd2[_0x7428('0x45')]['id']}})[_0x7428('0x42')](handleEntityNotFound(_0x309a76,null))[_0x7428('0x42')](saveUpdates(_0x395dd2[_0x7428('0x48')],null))[_0x7428('0x42')](respondWithResult(_0x309a76,null))[_0x7428('0x43')](handleError(_0x309a76,null));};exports[_0x7428('0x4a')]=function(_0x286669,_0x2668cb){return db[_0x7428('0x2a')][_0x7428('0x49')]({'where':{'id':_0x286669[_0x7428('0x45')]['id']}})[_0x7428('0x42')](handleEntityNotFound(_0x2668cb,null))[_0x7428('0x42')](removeEntity(_0x2668cb,null))['catch'](handleError(_0x2668cb,null));};exports[_0x7428('0x4b')]=function(_0x2c5e01,_0x341e5a){return db[_0x7428('0x2a')]['describe']()[_0x7428('0x42')](respondWithResult(_0x341e5a,null))[_0x7428('0x43')](handleError(_0x341e5a,null));};
\ No newline at end of file
+var _0x1c5b=['json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','name','send','map','JscriptyQuestionReport','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','rawAttributes','includeAll','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','ejs','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x476c6c,_0x434db8){var _0xbb94db=function(_0x4be12){while(--_0x4be12){_0x476c6c['push'](_0x476c6c['shift']());}};_0xbb94db(++_0x434db8);}(_0x1c5b,0x161));var _0xb1c5=function(_0x4dd88f,_0x39c94a){_0x4dd88f=_0x4dd88f-0x0;var _0x6974f6=_0x1c5b[_0x4dd88f];return _0x6974f6;};'use strict';var emlformat=require(_0xb1c5('0x0'));var rimraf=require(_0xb1c5('0x1'));var zipdir=require(_0xb1c5('0x2'));var jsonpatch=require(_0xb1c5('0x3'));var rp=require(_0xb1c5('0x4'));var moment=require(_0xb1c5('0x5'));var BPromise=require(_0xb1c5('0x6'));var Mustache=require(_0xb1c5('0x7'));var util=require('util');var path=require(_0xb1c5('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xb1c5('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb1c5('0xa'));var crypto=require(_0xb1c5('0xb'));var jsforce=require(_0xb1c5('0xc'));var deskjs=require(_0xb1c5('0xd'));var toCsv=require(_0xb1c5('0xe'));var querystring=require('querystring');var Papa=require(_0xb1c5('0xf'));var Redis=require('ioredis');var authService=require(_0xb1c5('0x10'));var qs=require(_0xb1c5('0x11'));var as=require(_0xb1c5('0x12'));var hardwareService=require(_0xb1c5('0x13'));var logger=require('../../config/logger')(_0xb1c5('0x14'));var utils=require(_0xb1c5('0x15'));var config=require(_0xb1c5('0x16'));var licenseUtil=require(_0xb1c5('0x17'));var db=require(_0xb1c5('0x18'))['db'];function respondWithStatusCode(_0x2df6ea,_0x7efbfb){_0x7efbfb=_0x7efbfb||0xcc;return function(_0x28f9a3){if(_0x28f9a3){return _0x2df6ea[_0xb1c5('0x19')](_0x7efbfb);}return _0x2df6ea[_0xb1c5('0x1a')](_0x7efbfb)['end']();};}function respondWithResult(_0x318dfa,_0x1a6bcc){_0x1a6bcc=_0x1a6bcc||0xc8;return function(_0x651b12){if(_0x651b12){return _0x318dfa[_0xb1c5('0x1a')](_0x1a6bcc)[_0xb1c5('0x1b')](_0x651b12);}};}function respondWithFilteredResult(_0x2028aa,_0x19f093){return function(_0x31f0ad){if(_0x31f0ad){var _0x48e3ad=typeof _0x19f093[_0xb1c5('0x1c')]===_0xb1c5('0x1d')&&typeof _0x19f093[_0xb1c5('0x1e')]==='undefined';var _0x251e34=_0x31f0ad['count'];var _0x298f7f=_0x48e3ad?0x0:_0x19f093[_0xb1c5('0x1c')];var _0x311de6=_0x48e3ad?_0x31f0ad[_0xb1c5('0x1f')]:_0x19f093[_0xb1c5('0x1c')]+_0x19f093[_0xb1c5('0x1e')];var _0x35a706;if(_0x311de6>=_0x251e34){_0x311de6=_0x251e34;_0x35a706=0xc8;}else{_0x35a706=0xce;}_0x2028aa[_0xb1c5('0x1a')](_0x35a706);return _0x2028aa[_0xb1c5('0x20')](_0xb1c5('0x21'),_0x298f7f+'-'+_0x311de6+'/'+_0x251e34)['json'](_0x31f0ad);}return null;};}function patchUpdates(_0xc1cdfe){return function(_0x380616){try{jsonpatch[_0xb1c5('0x22')](_0x380616,_0xc1cdfe,!![]);}catch(_0x3b8bf0){return BPromise[_0xb1c5('0x23')](_0x3b8bf0);}return _0x380616[_0xb1c5('0x24')]();};}function saveUpdates(_0x270649,_0x2ba4c4){return function(_0x1b4bb1){if(_0x1b4bb1){return _0x1b4bb1[_0xb1c5('0x25')](_0x270649)[_0xb1c5('0x26')](function(_0x4389b1){return _0x4389b1;});}return null;};}function removeEntity(_0x5dcfc1,_0x59d979){return function(_0x5655fa){if(_0x5655fa){return _0x5655fa['destroy']()[_0xb1c5('0x26')](function(){_0x5dcfc1[_0xb1c5('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2704d3,_0x381c69){return function(_0x1fd01e){if(!_0x1fd01e){_0x2704d3[_0xb1c5('0x19')](0x194);}return _0x1fd01e;};}function handleError(_0xe266c,_0x4afd61){_0x4afd61=_0x4afd61||0x1f4;return function(_0x36b853){logger[_0xb1c5('0x27')](_0x36b853['stack']);if(_0x36b853[_0xb1c5('0x28')]){delete _0x36b853[_0xb1c5('0x28')];}_0xe266c[_0xb1c5('0x1a')](_0x4afd61)[_0xb1c5('0x29')](_0x36b853);};}exports['index']=function(_0x20e964,_0x126ba9){var _0x5d4c1f={},_0xab8631={},_0xbc48c8={'count':0x0,'rows':[]};var _0x409ccb=_[_0xb1c5('0x2a')](db[_0xb1c5('0x2b')]['rawAttributes'],function(_0x3453bb){return{'name':_0x3453bb['fieldName'],'type':_0x3453bb['type'][_0xb1c5('0x2c')]};});_0xab8631[_0xb1c5('0x2d')]=_[_0xb1c5('0x2a')](_0x409ccb,_0xb1c5('0x28'));_0xab8631['query']=_[_0xb1c5('0x2e')](_0x20e964[_0xb1c5('0x2f')]);_0xab8631['filters']=_[_0xb1c5('0x30')](_0xab8631[_0xb1c5('0x2d')],_0xab8631[_0xb1c5('0x2f')]);_0x5d4c1f[_0xb1c5('0x31')]=_[_0xb1c5('0x30')](_0xab8631[_0xb1c5('0x2d')],qs[_0xb1c5('0x32')](_0x20e964['query'][_0xb1c5('0x32')]));_0x5d4c1f[_0xb1c5('0x31')]=_0x5d4c1f[_0xb1c5('0x31')][_0xb1c5('0x33')]?_0x5d4c1f[_0xb1c5('0x31')]:_0xab8631[_0xb1c5('0x2d')];if(!_0x20e964[_0xb1c5('0x2f')][_0xb1c5('0x34')](_0xb1c5('0x35'))){_0x5d4c1f[_0xb1c5('0x1e')]=qs[_0xb1c5('0x1e')](_0x20e964[_0xb1c5('0x2f')][_0xb1c5('0x1e')]);_0x5d4c1f[_0xb1c5('0x1c')]=qs[_0xb1c5('0x1c')](_0x20e964[_0xb1c5('0x2f')][_0xb1c5('0x1c')]);}_0x5d4c1f[_0xb1c5('0x36')]=qs[_0xb1c5('0x37')](_0x20e964[_0xb1c5('0x2f')][_0xb1c5('0x37')]);_0x5d4c1f[_0xb1c5('0x38')]=qs['filters'](_[_0xb1c5('0x39')](_0x20e964[_0xb1c5('0x2f')],_0xab8631[_0xb1c5('0x3a')]),_0x409ccb);if(_0x20e964[_0xb1c5('0x2f')]['filter']){_0x5d4c1f['where']=_[_0xb1c5('0x3b')](_0x5d4c1f['where'],{'$or':_[_0xb1c5('0x2a')](_0x409ccb,function(_0x22143a){if(_0x22143a[_0xb1c5('0x3c')]!==_0xb1c5('0x3d')){var _0x383c71={};_0x383c71[_0x22143a[_0xb1c5('0x28')]]={'$like':'%'+_0x20e964['query']['filter']+'%'};return _0x383c71;}})});}_0x5d4c1f=_[_0xb1c5('0x3b')]({},_0x5d4c1f,_0x20e964[_0xb1c5('0x3e')]);var _0x20ea04={'where':_0x5d4c1f[_0xb1c5('0x38')]};return db[_0xb1c5('0x2b')][_0xb1c5('0x1f')](_0x20ea04)[_0xb1c5('0x26')](function(_0x1c4f7b){_0xbc48c8[_0xb1c5('0x1f')]=_0x1c4f7b;if(_0x20e964[_0xb1c5('0x2f')]['includeAll']){_0x5d4c1f[_0xb1c5('0x3f')]=[{'all':!![]}];}return db[_0xb1c5('0x2b')][_0xb1c5('0x40')](_0x5d4c1f);})['then'](function(_0x1b01b7){_0xbc48c8[_0xb1c5('0x41')]=_0x1b01b7;return _0xbc48c8;})[_0xb1c5('0x26')](respondWithFilteredResult(_0x126ba9,_0x5d4c1f))[_0xb1c5('0x42')](handleError(_0x126ba9,null));};exports[_0xb1c5('0x43')]=function(_0x4ee4c0,_0x18e818){var _0x1b66a2={'raw':!![],'where':{'id':_0x4ee4c0['params']['id']}},_0x437152={};_0x437152[_0xb1c5('0x2d')]=_['keys'](db[_0xb1c5('0x2b')][_0xb1c5('0x44')]);_0x437152[_0xb1c5('0x2f')]=_['keys'](_0x4ee4c0[_0xb1c5('0x2f')]);_0x437152[_0xb1c5('0x3a')]=_[_0xb1c5('0x30')](_0x437152[_0xb1c5('0x2d')],_0x437152[_0xb1c5('0x2f')]);_0x1b66a2['attributes']=_[_0xb1c5('0x30')](_0x437152[_0xb1c5('0x2d')],qs[_0xb1c5('0x32')](_0x4ee4c0[_0xb1c5('0x2f')]['fields']));_0x1b66a2[_0xb1c5('0x31')]=_0x1b66a2[_0xb1c5('0x31')][_0xb1c5('0x33')]?_0x1b66a2['attributes']:_0x437152['model'];if(_0x4ee4c0['query'][_0xb1c5('0x45')]){_0x1b66a2[_0xb1c5('0x3f')]=[{'all':!![]}];}_0x1b66a2=_['merge']({},_0x1b66a2,_0x4ee4c0[_0xb1c5('0x3e')]);return db[_0xb1c5('0x2b')][_0xb1c5('0x46')](_0x1b66a2)[_0xb1c5('0x26')](handleEntityNotFound(_0x18e818,null))[_0xb1c5('0x26')](respondWithResult(_0x18e818,null))['catch'](handleError(_0x18e818,null));};exports[_0xb1c5('0x47')]=function(_0x35a1b6,_0x258ffc){return db[_0xb1c5('0x2b')][_0xb1c5('0x47')](_0x35a1b6[_0xb1c5('0x48')],{})[_0xb1c5('0x26')](respondWithResult(_0x258ffc,0xc9))[_0xb1c5('0x42')](handleError(_0x258ffc,null));};exports[_0xb1c5('0x25')]=function(_0x2885dd,_0x45a5ea){if(_0x2885dd[_0xb1c5('0x48')]['id']){delete _0x2885dd[_0xb1c5('0x48')]['id'];}return db[_0xb1c5('0x2b')][_0xb1c5('0x46')]({'where':{'id':_0x2885dd[_0xb1c5('0x49')]['id']}})[_0xb1c5('0x26')](handleEntityNotFound(_0x45a5ea,null))[_0xb1c5('0x26')](saveUpdates(_0x2885dd[_0xb1c5('0x48')],null))[_0xb1c5('0x26')](respondWithResult(_0x45a5ea,null))[_0xb1c5('0x42')](handleError(_0x45a5ea,null));};exports[_0xb1c5('0x4a')]=function(_0x191850,_0x24c54e){return db[_0xb1c5('0x2b')][_0xb1c5('0x46')]({'where':{'id':_0x191850[_0xb1c5('0x49')]['id']}})[_0xb1c5('0x26')](handleEntityNotFound(_0x24c54e,null))[_0xb1c5('0x26')](removeEntity(_0x24c54e,null))[_0xb1c5('0x42')](handleError(_0x24c54e,null));};exports[_0xb1c5('0x4b')]=function(_0x3ad4a5,_0x1f3442){return db[_0xb1c5('0x2b')][_0xb1c5('0x4b')]()[_0xb1c5('0x26')](respondWithResult(_0x1f3442,null))[_0xb1c5('0x42')](handleError(_0x1f3442,null));};
\ No newline at end of file
index 2e9b4d8..fb4e6c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf0e=['moment','bluebird','request-promise','../../config/environment','./jscriptyQuestionReport.attributes','exports','JscriptyQuestionReport','report_jscripty_questions','util','../../config/logger','api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcf0e,0xb8));var _0xecf0=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xcf0e[_0x502c7d];return _0x30b7ed;};'use strict';var _=require('lodash');var util=require(_0xecf0('0x0'));var logger=require(_0xecf0('0x1'))(_0xecf0('0x2'));var moment=require(_0xecf0('0x3'));var BPromise=require(_0xecf0('0x4'));var rp=require(_0xecf0('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xecf0('0x6'));var attributes=require(_0xecf0('0x7'));module[_0xecf0('0x8')]=function(_0x352565,_0x361314){return _0x352565['define'](_0xecf0('0x9'),attributes,{'tableName':_0xecf0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xec49=['path','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','report_jscripty_questions','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x230949,_0x790da6){var _0x54a3dd=function(_0x510d0d){while(--_0x510d0d){_0x230949['push'](_0x230949['shift']());}};_0x54a3dd(++_0x790da6);}(_0xec49,0x13f));var _0x9ec4=function(_0x38dae8,_0x536285){_0x38dae8=_0x38dae8-0x0;var _0x5d812e=_0xec49[_0x38dae8];return _0x5d812e;};'use strict';var _=require(_0x9ec4('0x0'));var util=require(_0x9ec4('0x1'));var logger=require(_0x9ec4('0x2'))(_0x9ec4('0x3'));var moment=require(_0x9ec4('0x4'));var BPromise=require(_0x9ec4('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9ec4('0x6'));var rimraf=require(_0x9ec4('0x7'));var config=require(_0x9ec4('0x8'));var attributes=require(_0x9ec4('0x9'));module[_0x9ec4('0xa')]=function(_0x5ee71a,_0xbce52a){return _0x5ee71a[_0x9ec4('0xb')]('JscriptyQuestionReport',attributes,{'tableName':_0x9ec4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d7c935c..eca272f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0463=['code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','request','then','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x2c890b,_0x28351e){var _0x349056=function(_0x539473){while(--_0x539473){_0x2c890b['push'](_0x2c890b['shift']());}};_0x349056(++_0x28351e);}(_0x0463,0xa5));var _0x3046=function(_0x339632,_0xa3bb9e){_0x339632=_0x339632-0x0;var _0x321bdc=_0x0463[_0x339632];return _0x321bdc;};'use strict';var _=require(_0x3046('0x0'));var util=require(_0x3046('0x1'));var moment=require('moment');var BPromise=require(_0x3046('0x2'));var rs=require(_0x3046('0x3'));var fs=require('fs');var Redis=require(_0x3046('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3046('0x5'));var logger=require('../../config/logger')(_0x3046('0x6'));var config=require(_0x3046('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x63b49c,_0x3da2b7,_0x36abed){return new BPromise(function(_0x3d2d12,_0x44493f){return client[_0x3046('0x8')](_0x63b49c,_0x36abed)[_0x3046('0x9')](function(_0x21674c){logger['info'](_0x3046('0xa'),_0x3da2b7,_0x3046('0xb'));logger[_0x3046('0xc')](_0x3046('0xd'),_0x3da2b7,_0x3046('0xb'),JSON['stringify'](_0x21674c));if(_0x21674c[_0x3046('0xe')]){if(_0x21674c[_0x3046('0xe')][_0x3046('0xf')]===0x1f4){logger[_0x3046('0xe')](_0x3046('0xa'),_0x3da2b7,_0x21674c[_0x3046('0xe')][_0x3046('0x10')]);return _0x44493f(_0x21674c[_0x3046('0xe')][_0x3046('0x10')]);}logger['error'](_0x3046('0xa'),_0x3da2b7,_0x21674c[_0x3046('0xe')]['message']);return _0x3d2d12(_0x21674c[_0x3046('0xe')][_0x3046('0x10')]);}else{logger[_0x3046('0x11')](_0x3046('0xa'),_0x3da2b7,_0x3046('0xb'));_0x3d2d12(_0x21674c[_0x3046('0x12')]['message']);}})[_0x3046('0x13')](function(_0x9c8bdf){logger[_0x3046('0xe')](_0x3046('0xa'),_0x3da2b7,_0x9c8bdf);_0x44493f(_0x9c8bdf);});});}
\ No newline at end of file
+var _0xbb5e=['message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x42f82a,_0x19d6a5){var _0x514542=function(_0x4ce858){while(--_0x4ce858){_0x42f82a['push'](_0x42f82a['shift']());}};_0x514542(++_0x19d6a5);}(_0xbb5e,0x18f));var _0xebb5=function(_0xccc0d1,_0x2bbf6f){_0xccc0d1=_0xccc0d1-0x0;var _0x20d311=_0xbb5e[_0xccc0d1];return _0x20d311;};'use strict';var _=require('lodash');var util=require(_0xebb5('0x0'));var moment=require(_0xebb5('0x1'));var BPromise=require(_0xebb5('0x2'));var rs=require(_0xebb5('0x3'));var fs=require('fs');var Redis=require(_0xebb5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xebb5('0x5'));var logger=require('../../config/logger')(_0xebb5('0x6'));var config=require(_0xebb5('0x7'));var jayson=require(_0xebb5('0x8'));var client=jayson[_0xebb5('0x9')][_0xebb5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x57bba3,_0x5729b5,_0x5083cd){return new BPromise(function(_0x4f5e48,_0x1082bf){return client[_0xebb5('0xb')](_0x57bba3,_0x5083cd)[_0xebb5('0xc')](function(_0x3810c5){logger[_0xebb5('0xd')](_0xebb5('0xe'),_0x5729b5,_0xebb5('0xf'));logger['debug'](_0xebb5('0x10'),_0x5729b5,'request\x20sent',JSON['stringify'](_0x3810c5));if(_0x3810c5[_0xebb5('0x11')]){if(_0x3810c5[_0xebb5('0x11')][_0xebb5('0x12')]===0x1f4){logger[_0xebb5('0x11')](_0xebb5('0xe'),_0x5729b5,_0x3810c5['error'][_0xebb5('0x13')]);return _0x1082bf(_0x3810c5[_0xebb5('0x11')][_0xebb5('0x13')]);}logger['error'](_0xebb5('0xe'),_0x5729b5,_0x3810c5[_0xebb5('0x11')]['message']);return _0x4f5e48(_0x3810c5[_0xebb5('0x11')]['message']);}else{logger[_0xebb5('0xd')](_0xebb5('0xe'),_0x5729b5,'request\x20sent');_0x4f5e48(_0x3810c5[_0xebb5('0x14')][_0xebb5('0x13')]);}})[_0xebb5('0x15')](function(_0x37593a){logger[_0xebb5('0x11')](_0xebb5('0xe'),_0x5729b5,_0x37593a);_0x1082bf(_0x37593a);});});}
\ No newline at end of file
index c3d42cd..cd9e127 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf312=['show','/:id/questions','post','create','put','update','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptySessionReport.controller','get','isAuthenticated','index','describe','/:id'];(function(_0xe95ce6,_0x38163e){var _0x4b54bd=function(_0x5d1457){while(--_0x5d1457){_0xe95ce6['push'](_0xe95ce6['shift']());}};_0x4b54bd(++_0x38163e);}(_0xf312,0xb8));var _0x2f31=function(_0x2225d3,_0xf4ee2){_0x2225d3=_0x2225d3-0x0;var _0x5b09c8=_0xf312[_0x2225d3];return _0x5b09c8;};'use strict';var multer=require(_0x2f31('0x0'));var util=require(_0x2f31('0x1'));var path=require(_0x2f31('0x2'));var timeout=require('connect-timeout');var express=require(_0x2f31('0x3'));var router=express[_0x2f31('0x4')]();var fs_extra=require(_0x2f31('0x5'));var auth=require(_0x2f31('0x6'));var interaction=require(_0x2f31('0x7'));var config=require('../../config/environment');var controller=require(_0x2f31('0x8'));router[_0x2f31('0x9')]('/',auth[_0x2f31('0xa')](),controller[_0x2f31('0xb')]);router[_0x2f31('0x9')]('/describe',auth[_0x2f31('0xa')](),controller[_0x2f31('0xc')]);router[_0x2f31('0x9')](_0x2f31('0xd'),auth[_0x2f31('0xa')](),controller[_0x2f31('0xe')]);router[_0x2f31('0x9')](_0x2f31('0xf'),auth[_0x2f31('0xa')](),controller['getQuestions']);router[_0x2f31('0x10')]('/',auth[_0x2f31('0xa')](),controller[_0x2f31('0x11')]);router[_0x2f31('0x12')](_0x2f31('0xd'),auth[_0x2f31('0xa')](),controller[_0x2f31('0x13')]);router['delete']('/:id',auth[_0x2f31('0xa')](),controller[_0x2f31('0x14')]);module[_0x2f31('0x15')]=router;
\ No newline at end of file
+var _0xb695=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptySessionReport.controller','get','isAuthenticated','describe','/:id','show','/:id/questions','getQuestions','put','update','delete','multer','util'];(function(_0x31d06e,_0xc5dc49){var _0x39ee79=function(_0x1a432c){while(--_0x1a432c){_0x31d06e['push'](_0x31d06e['shift']());}};_0x39ee79(++_0xc5dc49);}(_0xb695,0x1ca));var _0x5b69=function(_0x41fbdd,_0xd4842f){_0x41fbdd=_0x41fbdd-0x0;var _0x570b43=_0xb695[_0x41fbdd];return _0x570b43;};'use strict';var multer=require(_0x5b69('0x0'));var util=require(_0x5b69('0x1'));var path=require(_0x5b69('0x2'));var timeout=require(_0x5b69('0x3'));var express=require(_0x5b69('0x4'));var router=express[_0x5b69('0x5')]();var fs_extra=require(_0x5b69('0x6'));var auth=require(_0x5b69('0x7'));var interaction=require(_0x5b69('0x8'));var config=require('../../config/environment');var controller=require(_0x5b69('0x9'));router[_0x5b69('0xa')]('/',auth[_0x5b69('0xb')](),controller['index']);router[_0x5b69('0xa')]('/describe',auth[_0x5b69('0xb')](),controller[_0x5b69('0xc')]);router['get'](_0x5b69('0xd'),auth[_0x5b69('0xb')](),controller[_0x5b69('0xe')]);router[_0x5b69('0xa')](_0x5b69('0xf'),auth['isAuthenticated'](),controller[_0x5b69('0x10')]);router['post']('/',auth[_0x5b69('0xb')](),controller['create']);router[_0x5b69('0x11')](_0x5b69('0xd'),auth[_0x5b69('0xb')](),controller[_0x5b69('0x12')]);router[_0x5b69('0x13')](_0x5b69('0xd'),auth[_0x5b69('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index b7e9098..a151fc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb711=['STRING','BOOLEAN','DATE','setDataValue','starttime','endtime','format'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xb711,0x80));var _0x1b71=function(_0xfb93be,_0x595155){_0xfb93be=_0xfb93be-0x0;var _0x2e5b1c=_0xb711[_0xfb93be];return _0x2e5b1c;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module['exports']={'starttime':{'type':Sequelize[_0x1b71('0x0')],'set':function(_0x1c975e){this[_0x1b71('0x1')](_0x1b71('0x2'),_0x1c975e);this[_0x1b71('0x1')](_0x1b71('0x3'),moment()[_0x1b71('0x4')]('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0x1b71('0x5')]},'projectname':{'type':Sequelize[_0x1b71('0x5')]},'queue':{'type':Sequelize[_0x1b71('0x5')]},'uniqueid':{'type':Sequelize[_0x1b71('0x5')]},'calleridname':{'type':Sequelize[_0x1b71('0x5')]},'calleridnum':{'type':Sequelize[_0x1b71('0x5')]},'completed':{'type':Sequelize[_0x1b71('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x55e6=['YYYY-MM-DD\x20HH:mm:ss','STRING','moment','sequelize','exports','DATE','setDataValue','starttime','endtime','format'];(function(_0x22eda1,_0x327ee8){var _0xb874f6=function(_0x2574e3){while(--_0x2574e3){_0x22eda1['push'](_0x22eda1['shift']());}};_0xb874f6(++_0x327ee8);}(_0x55e6,0xca));var _0x655e=function(_0x493878,_0x18210c){_0x493878=_0x493878-0x0;var _0x54b033=_0x55e6[_0x493878];return _0x54b033;};'use strict';var moment=require(_0x655e('0x0'));var Sequelize=require(_0x655e('0x1'));module[_0x655e('0x2')]={'starttime':{'type':Sequelize[_0x655e('0x3')],'set':function(_0x2b97f9){this[_0x655e('0x4')](_0x655e('0x5'),_0x2b97f9);this[_0x655e('0x4')](_0x655e('0x6'),moment()[_0x655e('0x7')](_0x655e('0x8')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0x655e('0x9')]},'projectname':{'type':Sequelize[_0x655e('0x9')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x655e('0x9')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 54af552..eb69a63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba53=['map','VIRTUAL','options','includeAll','include','JscriptySessionReport','rows','show','params','rawAttributes','keys','find','catch','create','body','describe','getQuestions','findOne','JscriptyQuestionReport','SessionId','findAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','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','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','stack','name','send','fieldName','model','query','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x4abe26,_0x50b548){var _0x110d4e=function(_0x5e4b25){while(--_0x5e4b25){_0x4abe26['push'](_0x4abe26['shift']());}};_0x110d4e(++_0x50b548);}(_0xba53,0x161));var _0x3ba5=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xba53[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0x3ba5('0x0'));var rimraf=require(_0x3ba5('0x1'));var zipdir=require(_0x3ba5('0x2'));var jsonpatch=require(_0x3ba5('0x3'));var rp=require(_0x3ba5('0x4'));var moment=require(_0x3ba5('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x3ba5('0x6'));var util=require(_0x3ba5('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x3ba5('0x8'));var ejs=require(_0x3ba5('0x9'));var fs=require('fs');var fs_extra=require(_0x3ba5('0xa'));var _=require(_0x3ba5('0xb'));var squel=require(_0x3ba5('0xc'));var crypto=require(_0x3ba5('0xd'));var jsforce=require(_0x3ba5('0xe'));var deskjs=require(_0x3ba5('0xf'));var toCsv=require('to-csv');var querystring=require(_0x3ba5('0x10'));var Papa=require(_0x3ba5('0x11'));var Redis=require(_0x3ba5('0x12'));var authService=require(_0x3ba5('0x13'));var qs=require(_0x3ba5('0x14'));var as=require(_0x3ba5('0x15'));var hardwareService=require(_0x3ba5('0x16'));var logger=require(_0x3ba5('0x17'))(_0x3ba5('0x18'));var utils=require(_0x3ba5('0x19'));var config=require(_0x3ba5('0x1a'));var licenseUtil=require(_0x3ba5('0x1b'));var db=require(_0x3ba5('0x1c'))['db'];function respondWithStatusCode(_0x10ec86,_0x2d4206){_0x2d4206=_0x2d4206||0xcc;return function(_0x47f02c){if(_0x47f02c){return _0x10ec86[_0x3ba5('0x1d')](_0x2d4206);}return _0x10ec86[_0x3ba5('0x1e')](_0x2d4206)[_0x3ba5('0x1f')]();};}function respondWithResult(_0x5bb9b1,_0x195a08){_0x195a08=_0x195a08||0xc8;return function(_0x5851c5){if(_0x5851c5){return _0x5bb9b1[_0x3ba5('0x1e')](_0x195a08)[_0x3ba5('0x20')](_0x5851c5);}};}function respondWithFilteredResult(_0xc26871,_0x4c6d1d){return function(_0x322328){if(_0x322328){var _0x220267=typeof _0x4c6d1d[_0x3ba5('0x21')]===_0x3ba5('0x22')&&typeof _0x4c6d1d['limit']===_0x3ba5('0x22');var _0x5cc487=_0x322328[_0x3ba5('0x23')];var _0x57fb98=_0x220267?0x0:_0x4c6d1d['offset'];var _0x5d4e20=_0x220267?_0x322328[_0x3ba5('0x23')]:_0x4c6d1d[_0x3ba5('0x21')]+_0x4c6d1d[_0x3ba5('0x24')];var _0xa333c0;if(_0x5d4e20>=_0x5cc487){_0x5d4e20=_0x5cc487;_0xa333c0=0xc8;}else{_0xa333c0=0xce;}_0xc26871[_0x3ba5('0x1e')](_0xa333c0);return _0xc26871['set'](_0x3ba5('0x25'),_0x57fb98+'-'+_0x5d4e20+'/'+_0x5cc487)[_0x3ba5('0x20')](_0x322328);}return null;};}function patchUpdates(_0x9c3f7a){return function(_0x12fd21){try{jsonpatch[_0x3ba5('0x26')](_0x12fd21,_0x9c3f7a,!![]);}catch(_0x1243a8){return BPromise[_0x3ba5('0x27')](_0x1243a8);}return _0x12fd21[_0x3ba5('0x28')]();};}function saveUpdates(_0x24e930,_0x412b91){return function(_0x55dfd4){if(_0x55dfd4){return _0x55dfd4[_0x3ba5('0x29')](_0x24e930)[_0x3ba5('0x2a')](function(_0x11abc7){return _0x11abc7;});}return null;};}function removeEntity(_0x3342fe,_0x556b27){return function(_0x9881cd){if(_0x9881cd){return _0x9881cd['destroy']()['then'](function(){_0x3342fe[_0x3ba5('0x1e')](0xcc)[_0x3ba5('0x1f')]();});}};}function handleEntityNotFound(_0x515c36,_0x325b1a){return function(_0x334604){if(!_0x334604){_0x515c36[_0x3ba5('0x1d')](0x194);}return _0x334604;};}function handleError(_0x238cd4,_0x59c584){_0x59c584=_0x59c584||0x1f4;return function(_0x240900){logger['error'](_0x240900[_0x3ba5('0x2b')]);if(_0x240900['name']){delete _0x240900[_0x3ba5('0x2c')];}_0x238cd4[_0x3ba5('0x1e')](_0x59c584)[_0x3ba5('0x2d')](_0x240900);};}exports['index']=function(_0x4e1ea2,_0x49a994){var _0x5bee4d={},_0x3543f3={},_0x1e6cc1={'count':0x0,'rows':[]};var _0x3333a9=_['map'](db['JscriptySessionReport']['rawAttributes'],function(_0x1cc641){return{'name':_0x1cc641[_0x3ba5('0x2e')],'type':_0x1cc641['type']['key']};});_0x3543f3[_0x3ba5('0x2f')]=_['map'](_0x3333a9,_0x3ba5('0x2c'));_0x3543f3[_0x3ba5('0x30')]=_['keys'](_0x4e1ea2['query']);_0x3543f3[_0x3ba5('0x31')]=_['intersection'](_0x3543f3[_0x3ba5('0x2f')],_0x3543f3['query']);_0x5bee4d['attributes']=_[_0x3ba5('0x32')](_0x3543f3[_0x3ba5('0x2f')],qs[_0x3ba5('0x33')](_0x4e1ea2[_0x3ba5('0x30')][_0x3ba5('0x33')]));_0x5bee4d['attributes']=_0x5bee4d['attributes'][_0x3ba5('0x34')]?_0x5bee4d[_0x3ba5('0x35')]:_0x3543f3['model'];if(!_0x4e1ea2[_0x3ba5('0x30')][_0x3ba5('0x36')](_0x3ba5('0x37'))){_0x5bee4d[_0x3ba5('0x24')]=qs[_0x3ba5('0x24')](_0x4e1ea2['query']['limit']);_0x5bee4d[_0x3ba5('0x21')]=qs[_0x3ba5('0x21')](_0x4e1ea2[_0x3ba5('0x30')][_0x3ba5('0x21')]);}_0x5bee4d[_0x3ba5('0x38')]=qs[_0x3ba5('0x39')](_0x4e1ea2['query'][_0x3ba5('0x39')]);_0x5bee4d[_0x3ba5('0x3a')]=qs[_0x3ba5('0x31')](_[_0x3ba5('0x3b')](_0x4e1ea2[_0x3ba5('0x30')],_0x3543f3[_0x3ba5('0x31')]),_0x3333a9);if(_0x4e1ea2['query'][_0x3ba5('0x3c')]){_0x5bee4d[_0x3ba5('0x3a')]=_[_0x3ba5('0x3d')](_0x5bee4d[_0x3ba5('0x3a')],{'$or':_[_0x3ba5('0x3e')](_0x3333a9,function(_0x4076fc){if(_0x4076fc['type']!==_0x3ba5('0x3f')){var _0x441200={};_0x441200[_0x4076fc[_0x3ba5('0x2c')]]={'$like':'%'+_0x4e1ea2[_0x3ba5('0x30')]['filter']+'%'};return _0x441200;}})});}_0x5bee4d=_[_0x3ba5('0x3d')]({},_0x5bee4d,_0x4e1ea2[_0x3ba5('0x40')]);var _0x2ca346={'where':_0x5bee4d[_0x3ba5('0x3a')]};return db['JscriptySessionReport']['count'](_0x2ca346)[_0x3ba5('0x2a')](function(_0xf48357){_0x1e6cc1['count']=_0xf48357;if(_0x4e1ea2[_0x3ba5('0x30')][_0x3ba5('0x41')]){_0x5bee4d[_0x3ba5('0x42')]=[{'all':!![]}];}return db[_0x3ba5('0x43')]['findAll'](_0x5bee4d);})[_0x3ba5('0x2a')](function(_0x21c6cf){_0x1e6cc1[_0x3ba5('0x44')]=_0x21c6cf;return _0x1e6cc1;})[_0x3ba5('0x2a')](respondWithFilteredResult(_0x49a994,_0x5bee4d))['catch'](handleError(_0x49a994,null));};exports[_0x3ba5('0x45')]=function(_0x192798,_0x562c9f){var _0x38119c={'raw':!![],'where':{'id':_0x192798[_0x3ba5('0x46')]['id']}},_0x1c0ea4={};_0x1c0ea4['model']=_['keys'](db[_0x3ba5('0x43')][_0x3ba5('0x47')]);_0x1c0ea4[_0x3ba5('0x30')]=_[_0x3ba5('0x48')](_0x192798[_0x3ba5('0x30')]);_0x1c0ea4[_0x3ba5('0x31')]=_[_0x3ba5('0x32')](_0x1c0ea4[_0x3ba5('0x2f')],_0x1c0ea4[_0x3ba5('0x30')]);_0x38119c[_0x3ba5('0x35')]=_['intersection'](_0x1c0ea4['model'],qs['fields'](_0x192798['query'][_0x3ba5('0x33')]));_0x38119c[_0x3ba5('0x35')]=_0x38119c[_0x3ba5('0x35')][_0x3ba5('0x34')]?_0x38119c[_0x3ba5('0x35')]:_0x1c0ea4[_0x3ba5('0x2f')];if(_0x192798['query']['includeAll']){_0x38119c[_0x3ba5('0x42')]=[{'all':!![]}];}_0x38119c=_[_0x3ba5('0x3d')]({},_0x38119c,_0x192798[_0x3ba5('0x40')]);return db['JscriptySessionReport'][_0x3ba5('0x49')](_0x38119c)['then'](handleEntityNotFound(_0x562c9f,null))['then'](respondWithResult(_0x562c9f,null))[_0x3ba5('0x4a')](handleError(_0x562c9f,null));};exports[_0x3ba5('0x4b')]=function(_0x55b6cb,_0xfb8111){return db[_0x3ba5('0x43')][_0x3ba5('0x4b')](_0x55b6cb[_0x3ba5('0x4c')],{})[_0x3ba5('0x2a')](respondWithResult(_0xfb8111,0xc9))[_0x3ba5('0x4a')](handleError(_0xfb8111,null));};exports[_0x3ba5('0x29')]=function(_0x4221fa,_0x329a70){if(_0x4221fa['body']['id']){delete _0x4221fa['body']['id'];}return db[_0x3ba5('0x43')][_0x3ba5('0x49')]({'where':{'id':_0x4221fa[_0x3ba5('0x46')]['id']}})[_0x3ba5('0x2a')](handleEntityNotFound(_0x329a70,null))[_0x3ba5('0x2a')](saveUpdates(_0x4221fa[_0x3ba5('0x4c')],null))[_0x3ba5('0x2a')](respondWithResult(_0x329a70,null))[_0x3ba5('0x4a')](handleError(_0x329a70,null));};exports['destroy']=function(_0x1ea354,_0x5b6eca){return db[_0x3ba5('0x43')]['find']({'where':{'id':_0x1ea354[_0x3ba5('0x46')]['id']}})['then'](handleEntityNotFound(_0x5b6eca,null))[_0x3ba5('0x2a')](removeEntity(_0x5b6eca,null))[_0x3ba5('0x4a')](handleError(_0x5b6eca,null));};exports['describe']=function(_0x5b4b62,_0x4743b8){return db['JscriptySessionReport'][_0x3ba5('0x4d')]()[_0x3ba5('0x2a')](respondWithResult(_0x4743b8,null))[_0x3ba5('0x4a')](handleError(_0x4743b8,null));};exports[_0x3ba5('0x4e')]=function(_0x591cbf,_0x4bb3bb,_0x542dcd){var _0x16eb4d={'raw':!![],'where':{}};var _0x2bfaad={};var _0x3cf16c={'count':0x0,'rows':[]};return db[_0x3ba5('0x43')][_0x3ba5('0x4f')]({'where':{'id':_0x591cbf['params']['id']}})[_0x3ba5('0x2a')](handleEntityNotFound(_0x4bb3bb,null))['then'](function(_0x10f22b){if(_0x10f22b){_0x2bfaad[_0x3ba5('0x2f')]=_[_0x3ba5('0x48')](db[_0x3ba5('0x50')][_0x3ba5('0x47')]);_0x2bfaad[_0x3ba5('0x30')]=_[_0x3ba5('0x48')](_0x591cbf[_0x3ba5('0x30')]);_0x2bfaad[_0x3ba5('0x31')]=_[_0x3ba5('0x32')](_0x2bfaad[_0x3ba5('0x2f')],_0x2bfaad[_0x3ba5('0x30')]);_0x16eb4d['attributes']=_[_0x3ba5('0x32')](_0x2bfaad[_0x3ba5('0x2f')],qs['fields'](_0x591cbf[_0x3ba5('0x30')][_0x3ba5('0x33')]));_0x16eb4d['attributes']=_0x16eb4d[_0x3ba5('0x35')]['length']?_0x16eb4d[_0x3ba5('0x35')]:_0x2bfaad['model'];if(!_0x591cbf['query']['hasOwnProperty'](_0x3ba5('0x37'))){_0x16eb4d[_0x3ba5('0x24')]=qs[_0x3ba5('0x24')](_0x591cbf['query'][_0x3ba5('0x24')]);_0x16eb4d[_0x3ba5('0x21')]=qs[_0x3ba5('0x21')](_0x591cbf[_0x3ba5('0x30')]['offset']);}_0x16eb4d['order']=qs[_0x3ba5('0x39')](_0x591cbf[_0x3ba5('0x30')][_0x3ba5('0x39')]);_0x16eb4d[_0x3ba5('0x3a')]=qs['filters'](_[_0x3ba5('0x3b')](_0x591cbf[_0x3ba5('0x30')],_0x2bfaad[_0x3ba5('0x31')]));_0x16eb4d['where'][_0x3ba5('0x51')]=_0x10f22b['id'];if(_0x591cbf['query']['filter']){_0x16eb4d['where']=_[_0x3ba5('0x3d')](_0x16eb4d[_0x3ba5('0x3a')],{'$or':_[_0x3ba5('0x3e')](_0x16eb4d[_0x3ba5('0x35')],function(_0x35fb97){var _0x498ec6={};_0x498ec6[_0x35fb97]={'$like':'%'+_0x591cbf['query'][_0x3ba5('0x3c')]+'%'};return _0x498ec6;})});}_0x16eb4d=_[_0x3ba5('0x3d')]({},_0x16eb4d,_0x591cbf['options']);return db[_0x3ba5('0x50')][_0x3ba5('0x23')]({'where':_0x16eb4d[_0x3ba5('0x3a')]})['then'](function(_0x22204b){_0x3cf16c[_0x3ba5('0x23')]=_0x22204b;if(_0x591cbf[_0x3ba5('0x30')][_0x3ba5('0x41')]){_0x16eb4d[_0x3ba5('0x42')]=[{'all':!![]}];}return db[_0x3ba5('0x50')][_0x3ba5('0x52')](_0x16eb4d);})[_0x3ba5('0x2a')](function(_0x1b0e71){_0x3cf16c[_0x3ba5('0x44')]=_0x1b0e71;return _0x3cf16c;});}})[_0x3ba5('0x2a')](respondWithFilteredResult(_0x4bb3bb,_0x16eb4d))[_0x3ba5('0x4a')](handleError(_0x4bb3bb,null));};
\ No newline at end of file
+var _0x83ec=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','undefined','limit','count','offset','set','apply','reject','save','destroy','end','sendStatus','error','name','send','index','map','JscriptySessionReport','rawAttributes','key','model','keys','filters','query','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','then','includeAll','include','findAll','catch','show','params','create','body','find','describe','JscriptyQuestionReport','rows','eml-format','zip-dir','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger'];(function(_0x5155cc,_0x40c182){var _0x2f4475=function(_0x2448eb){while(--_0x2448eb){_0x5155cc['push'](_0x5155cc['shift']());}};_0x2f4475(++_0x40c182);}(_0x83ec,0x85));var _0xc83e=function(_0x2f67e5,_0x3ab82e){_0x2f67e5=_0x2f67e5-0x0;var _0x5d6405=_0x83ec[_0x2f67e5];return _0x5d6405;};'use strict';var emlformat=require(_0xc83e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc83e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc83e('0x2'));var BPromise=require(_0xc83e('0x3'));var Mustache=require(_0xc83e('0x4'));var util=require('util');var path=require('path');var sox=require(_0xc83e('0x5'));var csv=require(_0xc83e('0x6'));var ejs=require(_0xc83e('0x7'));var fs=require('fs');var fs_extra=require(_0xc83e('0x8'));var _=require(_0xc83e('0x9'));var squel=require(_0xc83e('0xa'));var crypto=require(_0xc83e('0xb'));var jsforce=require(_0xc83e('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc83e('0xd'));var Papa=require('papaparse');var Redis=require(_0xc83e('0xe'));var authService=require(_0xc83e('0xf'));var qs=require(_0xc83e('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc83e('0x11'));var logger=require(_0xc83e('0x12'))(_0xc83e('0x13'));var utils=require(_0xc83e('0x14'));var config=require(_0xc83e('0x15'));var licenseUtil=require(_0xc83e('0x16'));var db=require(_0xc83e('0x17'))['db'];function respondWithStatusCode(_0x479c4c,_0x37ca0b){_0x37ca0b=_0x37ca0b||0xcc;return function(_0x492cf5){if(_0x492cf5){return _0x479c4c['sendStatus'](_0x37ca0b);}return _0x479c4c[_0xc83e('0x18')](_0x37ca0b)['end']();};}function respondWithResult(_0x1d0d4c,_0x44ecbd){_0x44ecbd=_0x44ecbd||0xc8;return function(_0x169abd){if(_0x169abd){return _0x1d0d4c[_0xc83e('0x18')](_0x44ecbd)[_0xc83e('0x19')](_0x169abd);}};}function respondWithFilteredResult(_0xc29756,_0x30dd24){return function(_0x436a9c){if(_0x436a9c){var _0x3c43e6=typeof _0x30dd24['offset']===_0xc83e('0x1a')&&typeof _0x30dd24[_0xc83e('0x1b')]===_0xc83e('0x1a');var _0x3f8248=_0x436a9c[_0xc83e('0x1c')];var _0x283beb=_0x3c43e6?0x0:_0x30dd24[_0xc83e('0x1d')];var _0x1bea38=_0x3c43e6?_0x436a9c[_0xc83e('0x1c')]:_0x30dd24[_0xc83e('0x1d')]+_0x30dd24[_0xc83e('0x1b')];var _0x4164fe;if(_0x1bea38>=_0x3f8248){_0x1bea38=_0x3f8248;_0x4164fe=0xc8;}else{_0x4164fe=0xce;}_0xc29756[_0xc83e('0x18')](_0x4164fe);return _0xc29756[_0xc83e('0x1e')]('Content-Range',_0x283beb+'-'+_0x1bea38+'/'+_0x3f8248)[_0xc83e('0x19')](_0x436a9c);}return null;};}function patchUpdates(_0x6d8623){return function(_0x14894b){try{jsonpatch[_0xc83e('0x1f')](_0x14894b,_0x6d8623,!![]);}catch(_0x52e0e8){return BPromise[_0xc83e('0x20')](_0x52e0e8);}return _0x14894b[_0xc83e('0x21')]();};}function saveUpdates(_0x3e5e27,_0x2e8370){return function(_0x2c1ea8){if(_0x2c1ea8){return _0x2c1ea8['update'](_0x3e5e27)['then'](function(_0x2a00a6){return _0x2a00a6;});}return null;};}function removeEntity(_0x5d928a,_0x2054ad){return function(_0x449924){if(_0x449924){return _0x449924[_0xc83e('0x22')]()['then'](function(){_0x5d928a[_0xc83e('0x18')](0xcc)[_0xc83e('0x23')]();});}};}function handleEntityNotFound(_0x53bec1,_0x4211ef){return function(_0x4805c1){if(!_0x4805c1){_0x53bec1[_0xc83e('0x24')](0x194);}return _0x4805c1;};}function handleError(_0x17ee9b,_0x2181f){_0x2181f=_0x2181f||0x1f4;return function(_0x425c80){logger[_0xc83e('0x25')](_0x425c80['stack']);if(_0x425c80['name']){delete _0x425c80[_0xc83e('0x26')];}_0x17ee9b[_0xc83e('0x18')](_0x2181f)[_0xc83e('0x27')](_0x425c80);};}exports[_0xc83e('0x28')]=function(_0x168eb6,_0x27eb3e){var _0x678a58={},_0x27bbd7={},_0x560272={'count':0x0,'rows':[]};var _0x989a0=_[_0xc83e('0x29')](db[_0xc83e('0x2a')][_0xc83e('0x2b')],function(_0x1832ee){return{'name':_0x1832ee['fieldName'],'type':_0x1832ee['type'][_0xc83e('0x2c')]};});_0x27bbd7[_0xc83e('0x2d')]=_[_0xc83e('0x29')](_0x989a0,_0xc83e('0x26'));_0x27bbd7['query']=_[_0xc83e('0x2e')](_0x168eb6['query']);_0x27bbd7[_0xc83e('0x2f')]=_['intersection'](_0x27bbd7[_0xc83e('0x2d')],_0x27bbd7[_0xc83e('0x30')]);_0x678a58[_0xc83e('0x31')]=_[_0xc83e('0x32')](_0x27bbd7[_0xc83e('0x2d')],qs[_0xc83e('0x33')](_0x168eb6[_0xc83e('0x30')][_0xc83e('0x33')]));_0x678a58[_0xc83e('0x31')]=_0x678a58[_0xc83e('0x31')]['length']?_0x678a58[_0xc83e('0x31')]:_0x27bbd7[_0xc83e('0x2d')];if(!_0x168eb6[_0xc83e('0x30')][_0xc83e('0x34')](_0xc83e('0x35'))){_0x678a58[_0xc83e('0x1b')]=qs[_0xc83e('0x1b')](_0x168eb6[_0xc83e('0x30')][_0xc83e('0x1b')]);_0x678a58[_0xc83e('0x1d')]=qs[_0xc83e('0x1d')](_0x168eb6[_0xc83e('0x30')][_0xc83e('0x1d')]);}_0x678a58[_0xc83e('0x36')]=qs[_0xc83e('0x37')](_0x168eb6[_0xc83e('0x30')][_0xc83e('0x37')]);_0x678a58[_0xc83e('0x38')]=qs['filters'](_[_0xc83e('0x39')](_0x168eb6[_0xc83e('0x30')],_0x27bbd7['filters']),_0x989a0);if(_0x168eb6['query'][_0xc83e('0x3a')]){_0x678a58[_0xc83e('0x38')]=_[_0xc83e('0x3b')](_0x678a58[_0xc83e('0x38')],{'$or':_[_0xc83e('0x29')](_0x989a0,function(_0x5767d8){if(_0x5767d8[_0xc83e('0x3c')]!==_0xc83e('0x3d')){var _0x493d8c={};_0x493d8c[_0x5767d8[_0xc83e('0x26')]]={'$like':'%'+_0x168eb6['query'][_0xc83e('0x3a')]+'%'};return _0x493d8c;}})});}_0x678a58=_[_0xc83e('0x3b')]({},_0x678a58,_0x168eb6[_0xc83e('0x3e')]);var _0x3c80af={'where':_0x678a58['where']};return db['JscriptySessionReport'][_0xc83e('0x1c')](_0x3c80af)[_0xc83e('0x3f')](function(_0x3d1a75){_0x560272[_0xc83e('0x1c')]=_0x3d1a75;if(_0x168eb6[_0xc83e('0x30')][_0xc83e('0x40')]){_0x678a58[_0xc83e('0x41')]=[{'all':!![]}];}return db[_0xc83e('0x2a')][_0xc83e('0x42')](_0x678a58);})[_0xc83e('0x3f')](function(_0xaa14da){_0x560272['rows']=_0xaa14da;return _0x560272;})[_0xc83e('0x3f')](respondWithFilteredResult(_0x27eb3e,_0x678a58))[_0xc83e('0x43')](handleError(_0x27eb3e,null));};exports[_0xc83e('0x44')]=function(_0x3063c6,_0x65fa2e){var _0x2d1f8a={'raw':!![],'where':{'id':_0x3063c6[_0xc83e('0x45')]['id']}},_0x119328={};_0x119328[_0xc83e('0x2d')]=_['keys'](db[_0xc83e('0x2a')][_0xc83e('0x2b')]);_0x119328[_0xc83e('0x30')]=_['keys'](_0x3063c6[_0xc83e('0x30')]);_0x119328[_0xc83e('0x2f')]=_[_0xc83e('0x32')](_0x119328[_0xc83e('0x2d')],_0x119328[_0xc83e('0x30')]);_0x2d1f8a[_0xc83e('0x31')]=_[_0xc83e('0x32')](_0x119328[_0xc83e('0x2d')],qs[_0xc83e('0x33')](_0x3063c6['query'][_0xc83e('0x33')]));_0x2d1f8a[_0xc83e('0x31')]=_0x2d1f8a[_0xc83e('0x31')]['length']?_0x2d1f8a[_0xc83e('0x31')]:_0x119328[_0xc83e('0x2d')];if(_0x3063c6[_0xc83e('0x30')][_0xc83e('0x40')]){_0x2d1f8a['include']=[{'all':!![]}];}_0x2d1f8a=_[_0xc83e('0x3b')]({},_0x2d1f8a,_0x3063c6[_0xc83e('0x3e')]);return db[_0xc83e('0x2a')]['find'](_0x2d1f8a)[_0xc83e('0x3f')](handleEntityNotFound(_0x65fa2e,null))[_0xc83e('0x3f')](respondWithResult(_0x65fa2e,null))[_0xc83e('0x43')](handleError(_0x65fa2e,null));};exports[_0xc83e('0x46')]=function(_0x1e16a5,_0x5e0cb4){return db['JscriptySessionReport']['create'](_0x1e16a5[_0xc83e('0x47')],{})[_0xc83e('0x3f')](respondWithResult(_0x5e0cb4,0xc9))['catch'](handleError(_0x5e0cb4,null));};exports['update']=function(_0x3a5a5a,_0x338701){if(_0x3a5a5a[_0xc83e('0x47')]['id']){delete _0x3a5a5a['body']['id'];}return db[_0xc83e('0x2a')][_0xc83e('0x48')]({'where':{'id':_0x3a5a5a[_0xc83e('0x45')]['id']}})[_0xc83e('0x3f')](handleEntityNotFound(_0x338701,null))['then'](saveUpdates(_0x3a5a5a['body'],null))[_0xc83e('0x3f')](respondWithResult(_0x338701,null))[_0xc83e('0x43')](handleError(_0x338701,null));};exports[_0xc83e('0x22')]=function(_0x13b9c4,_0x1f073b){return db[_0xc83e('0x2a')][_0xc83e('0x48')]({'where':{'id':_0x13b9c4[_0xc83e('0x45')]['id']}})['then'](handleEntityNotFound(_0x1f073b,null))[_0xc83e('0x3f')](removeEntity(_0x1f073b,null))['catch'](handleError(_0x1f073b,null));};exports[_0xc83e('0x49')]=function(_0x2545fe,_0x4b5258){return db[_0xc83e('0x2a')]['describe']()['then'](respondWithResult(_0x4b5258,null))[_0xc83e('0x43')](handleError(_0x4b5258,null));};exports['getQuestions']=function(_0x323a1f,_0x1efe44,_0x27dd8d){var _0x1cb424={'raw':!![],'where':{}};var _0x239228={};var _0x558be4={'count':0x0,'rows':[]};return db['JscriptySessionReport']['findOne']({'where':{'id':_0x323a1f['params']['id']}})[_0xc83e('0x3f')](handleEntityNotFound(_0x1efe44,null))[_0xc83e('0x3f')](function(_0x12d53d){if(_0x12d53d){_0x239228[_0xc83e('0x2d')]=_['keys'](db[_0xc83e('0x4a')][_0xc83e('0x2b')]);_0x239228[_0xc83e('0x30')]=_['keys'](_0x323a1f[_0xc83e('0x30')]);_0x239228[_0xc83e('0x2f')]=_[_0xc83e('0x32')](_0x239228['model'],_0x239228[_0xc83e('0x30')]);_0x1cb424[_0xc83e('0x31')]=_[_0xc83e('0x32')](_0x239228['model'],qs[_0xc83e('0x33')](_0x323a1f[_0xc83e('0x30')]['fields']));_0x1cb424[_0xc83e('0x31')]=_0x1cb424[_0xc83e('0x31')]['length']?_0x1cb424['attributes']:_0x239228['model'];if(!_0x323a1f[_0xc83e('0x30')][_0xc83e('0x34')](_0xc83e('0x35'))){_0x1cb424[_0xc83e('0x1b')]=qs[_0xc83e('0x1b')](_0x323a1f['query'][_0xc83e('0x1b')]);_0x1cb424[_0xc83e('0x1d')]=qs[_0xc83e('0x1d')](_0x323a1f[_0xc83e('0x30')][_0xc83e('0x1d')]);}_0x1cb424[_0xc83e('0x36')]=qs[_0xc83e('0x37')](_0x323a1f[_0xc83e('0x30')][_0xc83e('0x37')]);_0x1cb424['where']=qs[_0xc83e('0x2f')](_['pick'](_0x323a1f[_0xc83e('0x30')],_0x239228[_0xc83e('0x2f')]));_0x1cb424[_0xc83e('0x38')]['SessionId']=_0x12d53d['id'];if(_0x323a1f[_0xc83e('0x30')][_0xc83e('0x3a')]){_0x1cb424[_0xc83e('0x38')]=_['merge'](_0x1cb424[_0xc83e('0x38')],{'$or':_['map'](_0x1cb424[_0xc83e('0x31')],function(_0x2ff62a){var _0x387f9d={};_0x387f9d[_0x2ff62a]={'$like':'%'+_0x323a1f['query'][_0xc83e('0x3a')]+'%'};return _0x387f9d;})});}_0x1cb424=_[_0xc83e('0x3b')]({},_0x1cb424,_0x323a1f[_0xc83e('0x3e')]);return db['JscriptyQuestionReport'][_0xc83e('0x1c')]({'where':_0x1cb424[_0xc83e('0x38')]})[_0xc83e('0x3f')](function(_0x278adc){_0x558be4['count']=_0x278adc;if(_0x323a1f['query']['includeAll']){_0x1cb424[_0xc83e('0x41')]=[{'all':!![]}];}return db[_0xc83e('0x4a')]['findAll'](_0x1cb424);})[_0xc83e('0x3f')](function(_0x2dce6f){_0x558be4[_0xc83e('0x4b')]=_0x2dce6f;return _0x558be4;});}})[_0xc83e('0x3f')](respondWithFilteredResult(_0x1efe44,_0x1cb424))[_0xc83e('0x43')](handleError(_0x1efe44,null));};
\ No newline at end of file
index b566bef..20c4d3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbff5=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','exports','define','JscriptySessionReport','report_jscripty_sessions'];(function(_0x35199c,_0x50b6f9){var _0x4a9a89=function(_0x50e871){while(--_0x50e871){_0x35199c['push'](_0x35199c['shift']());}};_0x4a9a89(++_0x50b6f9);}(_0xbff5,0x1bc));var _0x5bff=function(_0x22123c,_0x341766){_0x22123c=_0x22123c-0x0;var _0x5d5338=_0xbff5[_0x22123c];return _0x5d5338;};'use strict';var _=require(_0x5bff('0x0'));var util=require(_0x5bff('0x1'));var logger=require(_0x5bff('0x2'))(_0x5bff('0x3'));var moment=require(_0x5bff('0x4'));var BPromise=require(_0x5bff('0x5'));var rp=require(_0x5bff('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5bff('0x7'));var config=require('../../config/environment');var attributes=require('./jscriptySessionReport.attributes');module[_0x5bff('0x8')]=function(_0x1d8650,_0x151add){return _0x1d8650[_0x5bff('0x9')](_0x5bff('0xa'),attributes,{'tableName':_0x5bff('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaa3f=['rimraf','exports','define','JscriptySessionReport','report_jscripty_sessions','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x157615,_0x27624f){var _0xc7aa48=function(_0x435f86){while(--_0x435f86){_0x157615['push'](_0x157615['shift']());}};_0xc7aa48(++_0x27624f);}(_0xaa3f,0xbb));var _0xfaa3=function(_0x4741d0,_0x1989af){_0x4741d0=_0x4741d0-0x0;var _0x586d79=_0xaa3f[_0x4741d0];return _0x586d79;};'use strict';var _=require(_0xfaa3('0x0'));var util=require(_0xfaa3('0x1'));var logger=require(_0xfaa3('0x2'))(_0xfaa3('0x3'));var moment=require(_0xfaa3('0x4'));var BPromise=require(_0xfaa3('0x5'));var rp=require(_0xfaa3('0x6'));var fs=require('fs');var path=require(_0xfaa3('0x7'));var rimraf=require(_0xfaa3('0x8'));var config=require('../../config/environment');var attributes=require('./jscriptySessionReport.attributes');module[_0xfaa3('0x9')]=function(_0x4bac92,_0x3d09aa){return _0x4bac92[_0xfaa3('0xa')](_0xfaa3('0xb'),attributes,{'tableName':_0xfaa3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8738522..9ff75f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4745=['debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent'];(function(_0xbf9007,_0x4796b8){var _0x4e067b=function(_0x1417ac){while(--_0x1417ac){_0xbf9007['push'](_0xbf9007['shift']());}};_0x4e067b(++_0x4796b8);}(_0x4745,0x1e7));var _0x5474=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0x4745[_0x12d033];return _0x3b4e80;};'use strict';var _=require(_0x5474('0x0'));var util=require(_0x5474('0x1'));var moment=require(_0x5474('0x2'));var BPromise=require(_0x5474('0x3'));var rs=require(_0x5474('0x4'));var fs=require('fs');var Redis=require(_0x5474('0x5'));var db=require(_0x5474('0x6'))['db'];var utils=require(_0x5474('0x7'));var logger=require(_0x5474('0x8'))(_0x5474('0x9'));var config=require(_0x5474('0xa'));var jayson=require(_0x5474('0xb'));var client=jayson['client'][_0x5474('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x431f81,_0x57add7,_0x13929f){return new BPromise(function(_0x5d778b,_0x902ba8){return client[_0x5474('0xd')](_0x431f81,_0x13929f)['then'](function(_0xf876f8){logger[_0x5474('0xe')](_0x5474('0xf'),_0x57add7,_0x5474('0x10'));logger[_0x5474('0x11')](_0x5474('0x12'),_0x57add7,_0x5474('0x10'),JSON[_0x5474('0x13')](_0xf876f8));if(_0xf876f8['error']){if(_0xf876f8[_0x5474('0x14')][_0x5474('0x15')]===0x1f4){logger[_0x5474('0x14')](_0x5474('0xf'),_0x57add7,_0xf876f8[_0x5474('0x14')][_0x5474('0x16')]);return _0x902ba8(_0xf876f8[_0x5474('0x14')][_0x5474('0x16')]);}logger[_0x5474('0x14')]('JscriptySessionReport,\x20%s,\x20%s',_0x57add7,_0xf876f8[_0x5474('0x14')][_0x5474('0x16')]);return _0x5d778b(_0xf876f8[_0x5474('0x14')][_0x5474('0x16')]);}else{logger['info']('JscriptySessionReport,\x20%s,\x20%s',_0x57add7,'request\x20sent');_0x5d778b(_0xf876f8['result'][_0x5474('0x16')]);}})[_0x5474('0x17')](function(_0x2da774){logger['error'](_0x5474('0xf'),_0x57add7,_0x2da774);_0x902ba8(_0x2da774);});});}
\ No newline at end of file
+var _0x8952=['JscriptySessionReport,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','stringify','error'];(function(_0x260fb9,_0x2bc9da){var _0x5326af=function(_0x3f00ae){while(--_0x3f00ae){_0x260fb9['push'](_0x260fb9['shift']());}};_0x5326af(++_0x2bc9da);}(_0x8952,0x17e));var _0x2895=function(_0x8c23c2,_0x8eca56){_0x8c23c2=_0x8c23c2-0x0;var _0x114935=_0x8952[_0x8c23c2];return _0x114935;};'use strict';var _=require('lodash');var util=require(_0x2895('0x0'));var moment=require(_0x2895('0x1'));var BPromise=require(_0x2895('0x2'));var rs=require(_0x2895('0x3'));var fs=require('fs');var Redis=require(_0x2895('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2895('0x5'));var logger=require(_0x2895('0x6'))(_0x2895('0x7'));var config=require('../../config/environment');var jayson=require(_0x2895('0x8'));var client=jayson[_0x2895('0x9')][_0x2895('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4ea619,_0x526c32,_0x238b4a){return new BPromise(function(_0x335002,_0x159f86){return client[_0x2895('0xb')](_0x4ea619,_0x238b4a)[_0x2895('0xc')](function(_0x4952fa){logger[_0x2895('0xd')]('JscriptySessionReport,\x20%s,\x20%s',_0x526c32,_0x2895('0xe'));logger['debug']('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x526c32,'request\x20sent',JSON[_0x2895('0xf')](_0x4952fa));if(_0x4952fa[_0x2895('0x10')]){if(_0x4952fa[_0x2895('0x10')]['code']===0x1f4){logger[_0x2895('0x10')](_0x2895('0x11'),_0x526c32,_0x4952fa['error'][_0x2895('0x12')]);return _0x159f86(_0x4952fa[_0x2895('0x10')]['message']);}logger['error'](_0x2895('0x11'),_0x526c32,_0x4952fa[_0x2895('0x10')]['message']);return _0x335002(_0x4952fa[_0x2895('0x10')][_0x2895('0x12')]);}else{logger[_0x2895('0xd')](_0x2895('0x11'),_0x526c32,_0x2895('0xe'));_0x335002(_0x4952fa[_0x2895('0x13')][_0x2895('0x12')]);}})[_0x2895('0x14')](function(_0x3e96d7){logger[_0x2895('0x10')](_0x2895('0x11'),_0x526c32,_0x3e96d7);_0x159f86(_0x3e96d7);});});}
\ No newline at end of file
index 13d9a62..dcf9cfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ff4=['Router','fs-extra','../../components/interaction/service','../../config/environment','./license.controller','get','index','put','/:id','isAuthenticated','connect-timeout','express'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x9ff4,0x196));var _0x49ff=function(_0xd6a63e,_0x2660e0){_0xd6a63e=_0xd6a63e-0x0;var _0x59f602=_0x9ff4[_0xd6a63e];return _0x59f602;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x49ff('0x0'));var express=require(_0x49ff('0x1'));var router=express[_0x49ff('0x2')]();var fs_extra=require(_0x49ff('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x49ff('0x4'));var config=require(_0x49ff('0x5'));var controller=require(_0x49ff('0x6'));router[_0x49ff('0x7')]('/',controller[_0x49ff('0x8')]);router[_0x49ff('0x9')](_0x49ff('0xa'),auth[_0x49ff('0xb')](),controller['update']);module['exports']=router;
\ No newline at end of file
+var _0x0dba=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller','get','isAuthenticated','update','exports','multer','util','path','connect-timeout','express'];(function(_0x39914e,_0x1ec745){var _0x56350b=function(_0x4b390d){while(--_0x4b390d){_0x39914e['push'](_0x39914e['shift']());}};_0x56350b(++_0x1ec745);}(_0x0dba,0x136));var _0xa0db=function(_0x50c09a,_0x3d4137){_0x50c09a=_0x50c09a-0x0;var _0x52d6fe=_0x0dba[_0x50c09a];return _0x52d6fe;};'use strict';var multer=require(_0xa0db('0x0'));var util=require(_0xa0db('0x1'));var path=require(_0xa0db('0x2'));var timeout=require(_0xa0db('0x3'));var express=require(_0xa0db('0x4'));var router=express[_0xa0db('0x5')]();var fs_extra=require(_0xa0db('0x6'));var auth=require(_0xa0db('0x7'));var interaction=require(_0xa0db('0x8'));var config=require(_0xa0db('0x9'));var controller=require(_0xa0db('0xa'));router[_0xa0db('0xb')]('/',controller['index']);router['put']('/:id',auth[_0xa0db('0xc')](),controller[_0xa0db('0xd')]);module[_0xa0db('0xe')]=router;
\ No newline at end of file
index 7e062b2..d24a349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe610=['TEXT','STRING','INTEGER','sequelize','exports'];(function(_0x330141,_0x1dd290){var _0x1b68a2=function(_0x4e7f3c){while(--_0x4e7f3c){_0x330141['push'](_0x330141['shift']());}};_0x1b68a2(++_0x1dd290);}(_0xe610,0x111));var _0x0e61=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xe610[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require(_0x0e61('0x0'));module[_0x0e61('0x1')]={'license':{'type':Sequelize[_0x0e61('0x2')]},'data1':{'type':Sequelize[_0x0e61('0x3')]},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize[_0x0e61('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xda63=['INTEGER','sequelize','TEXT','STRING'];(function(_0x167ebc,_0x495452){var _0xe8d677=function(_0x2a7454){while(--_0x2a7454){_0x167ebc['push'](_0x167ebc['shift']());}};_0xe8d677(++_0x495452);}(_0xda63,0x18d));var _0x3da6=function(_0x134299,_0x42bd37){_0x134299=_0x134299-0x0;var _0xfc4c8c=_0xda63[_0x134299];return _0xfc4c8c;};'use strict';var Sequelize=require(_0x3da6('0x0'));module['exports']={'license':{'type':Sequelize[_0x3da6('0x1')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0x3da6('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0x3da6('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 00e7432..da598c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','error','stack','send','index','model','License','query','intersection','fields','attributes','merge','options','getLicense','catch','body','find','params','get','key','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','ioredis'];(function(_0x1f1d2e,_0x114aa5){var _0x6c9215=function(_0x3761ee){while(--_0x3761ee){_0x1f1d2e['push'](_0x1f1d2e['shift']());}};_0x6c9215(++_0x114aa5);}(_0x1261,0x144));var _0x1126=function(_0x34bbd5,_0x3c810a){_0x34bbd5=_0x34bbd5-0x0;var _0x46244f=_0x1261[_0x34bbd5];return _0x46244f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1126('0x0'));var zipdir=require(_0x1126('0x1'));var jsonpatch=require(_0x1126('0x2'));var rp=require(_0x1126('0x3'));var moment=require(_0x1126('0x4'));var BPromise=require(_0x1126('0x5'));var Mustache=require(_0x1126('0x6'));var util=require(_0x1126('0x7'));var path=require(_0x1126('0x8'));var sox=require(_0x1126('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1126('0xa'));var _=require(_0x1126('0xb'));var squel=require('squel');var crypto=require(_0x1126('0xc'));var jsforce=require(_0x1126('0xd'));var deskjs=require(_0x1126('0xe'));var toCsv=require(_0x1126('0xf'));var querystring=require(_0x1126('0x10'));var Papa=require('papaparse');var Redis=require(_0x1126('0x11'));var authService=require(_0x1126('0x12'));var qs=require(_0x1126('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1126('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x1126('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x1126('0x16'));var db=require(_0x1126('0x17'))['db'];function respondWithStatusCode(_0xd26a32,_0x273896){_0x273896=_0x273896||0xcc;return function(_0xca0355){if(_0xca0355){return _0xd26a32[_0x1126('0x18')](_0x273896);}return _0xd26a32[_0x1126('0x19')](_0x273896)[_0x1126('0x1a')]();};}function respondWithResult(_0x43850b,_0x53a8f0){_0x53a8f0=_0x53a8f0||0xc8;return function(_0x5de9a7){if(_0x5de9a7){return _0x43850b[_0x1126('0x19')](_0x53a8f0)[_0x1126('0x1b')](_0x5de9a7);}};}function respondWithFilteredResult(_0x279455,_0x4be0c6){return function(_0x45149c){if(_0x45149c){var _0x4794a7=typeof _0x4be0c6[_0x1126('0x1c')]===_0x1126('0x1d')&&typeof _0x4be0c6[_0x1126('0x1e')]==='undefined';var _0x245cd7=_0x45149c[_0x1126('0x1f')];var _0x4a7b49=_0x4794a7?0x0:_0x4be0c6['offset'];var _0x22ae0b=_0x4794a7?_0x45149c[_0x1126('0x1f')]:_0x4be0c6['offset']+_0x4be0c6['limit'];var _0x4564c0;if(_0x22ae0b>=_0x245cd7){_0x22ae0b=_0x245cd7;_0x4564c0=0xc8;}else{_0x4564c0=0xce;}_0x279455['status'](_0x4564c0);return _0x279455[_0x1126('0x20')](_0x1126('0x21'),_0x4a7b49+'-'+_0x22ae0b+'/'+_0x245cd7)[_0x1126('0x1b')](_0x45149c);}return null;};}function patchUpdates(_0x54400a){return function(_0x2a08ba){try{jsonpatch['apply'](_0x2a08ba,_0x54400a,!![]);}catch(_0x56efeb){return BPromise[_0x1126('0x22')](_0x56efeb);}return _0x2a08ba[_0x1126('0x23')]();};}function saveUpdates(_0x25b24b,_0x36d254){return function(_0x526ca1){if(_0x526ca1){return _0x526ca1[_0x1126('0x24')](_0x25b24b)[_0x1126('0x25')](function(_0x48a08d){return _0x48a08d;});}return null;};}function removeEntity(_0x2175fa,_0x59cd8e){return function(_0x529dd9){if(_0x529dd9){return _0x529dd9['destroy']()[_0x1126('0x25')](function(){_0x2175fa[_0x1126('0x19')](0xcc)[_0x1126('0x1a')]();});}};}function handleEntityNotFound(_0x34bcf1,_0x566c09){return function(_0x1b07a7){if(!_0x1b07a7){_0x34bcf1[_0x1126('0x18')](0x194);}return _0x1b07a7;};}function handleError(_0x38119d,_0x589725){_0x589725=_0x589725||0x1f4;return function(_0x35eec3){logger[_0x1126('0x26')](_0x35eec3[_0x1126('0x27')]);if(_0x35eec3['name']){delete _0x35eec3['name'];}_0x38119d[_0x1126('0x19')](_0x589725)[_0x1126('0x28')](_0x35eec3);};}var utilLicense=require('../../config/license/util');exports[_0x1126('0x29')]=function(_0x23d2bc,_0x4a334a){var _0x3fa694={'raw':!![],'where':{'id':0x1}},_0x4bf807={};_0x4bf807[_0x1126('0x2a')]=_['keys'](db[_0x1126('0x2b')]['rawAttributes']);_0x4bf807[_0x1126('0x2c')]=_['keys'](_0x23d2bc['query']);_0x4bf807['filters']=_[_0x1126('0x2d')](_0x4bf807[_0x1126('0x2a')],_0x4bf807[_0x1126('0x2c')]);_0x3fa694['attributes']=_[_0x1126('0x2d')](_0x4bf807[_0x1126('0x2a')],qs['fields'](_0x23d2bc[_0x1126('0x2c')][_0x1126('0x2e')]));_0x3fa694[_0x1126('0x2f')]=_0x3fa694[_0x1126('0x2f')]['length']?_0x3fa694['attributes']:_0x4bf807[_0x1126('0x2a')];_0x3fa694=_[_0x1126('0x30')]({},_0x3fa694,_0x23d2bc[_0x1126('0x31')]);return utilLicense[_0x1126('0x32')](_0x3fa694)['then'](respondWithResult(_0x4a334a,null))[_0x1126('0x33')](handleError(_0x4a334a,null));};exports[_0x1126('0x24')]=function(_0x313ebe,_0x22436c){if(_0x313ebe[_0x1126('0x34')]['id']){delete _0x313ebe['body']['id'];}return db[_0x1126('0x2b')][_0x1126('0x35')]({'where':{'id':_0x313ebe[_0x1126('0x36')]['id']}})[_0x1126('0x25')](handleEntityNotFound(_0x22436c,null))['then'](function(_0x4ca51c){var _0x22827a=_0x4ca51c[_0x1126('0x37')]({'plain':!![]});return utilLicense['checkLicense'](_0x22827a,_0x313ebe[_0x1126('0x34')][_0x1126('0x38')]);})[_0x1126('0x25')](function(_0x5c08b9){if(!_0x5c08b9['demo']){return saveUpdates(_0x313ebe[_0x1126('0x34')],null);}return _0x5c08b9;})[_0x1126('0x25')](respondWithResult(_0x22436c,null))[_0x1126('0x33')](handleError(_0x22436c,null));};
\ No newline at end of file
+var _0xadb5=['query','filters','intersection','attributes','merge','getLicense','body','find','params','key','catch','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','model','keys','License'];(function(_0x2bbb07,_0x428370){var _0x21874d=function(_0x57ea0d){while(--_0x57ea0d){_0x2bbb07['push'](_0x2bbb07['shift']());}};_0x21874d(++_0x428370);}(_0xadb5,0xad));var _0x5adb=function(_0x225a89,_0x26e049){_0x225a89=_0x225a89-0x0;var _0x40e8d2=_0xadb5[_0x225a89];return _0x40e8d2;};'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);};}var utilLicense=require(_0x5adb('0x17'));exports['index']=function(_0x49992e,_0x5d457e){var _0x39bddd={'raw':!![],'where':{'id':0x1}},_0x1eac55={};_0x1eac55[_0x5adb('0x28')]=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes']);_0x1eac55[_0x5adb('0x2b')]=_[_0x5adb('0x29')](_0x49992e[_0x5adb('0x2b')]);_0x1eac55[_0x5adb('0x2c')]=_[_0x5adb('0x2d')](_0x1eac55[_0x5adb('0x28')],_0x1eac55[_0x5adb('0x2b')]);_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x2d')](_0x1eac55[_0x5adb('0x28')],qs['fields'](_0x49992e[_0x5adb('0x2b')]['fields']));_0x39bddd[_0x5adb('0x2e')]=_0x39bddd[_0x5adb('0x2e')]['length']?_0x39bddd[_0x5adb('0x2e')]:_0x1eac55[_0x5adb('0x28')];_0x39bddd=_[_0x5adb('0x2f')]({},_0x39bddd,_0x49992e['options']);return utilLicense[_0x5adb('0x30')](_0x39bddd)[_0x5adb('0x22')](respondWithResult(_0x5d457e,null))['catch'](handleError(_0x5d457e,null));};exports['update']=function(_0x1ed9ea,_0x49dd03){if(_0x1ed9ea[_0x5adb('0x31')]['id']){delete _0x1ed9ea[_0x5adb('0x31')]['id'];}return db[_0x5adb('0x2a')][_0x5adb('0x32')]({'where':{'id':_0x1ed9ea[_0x5adb('0x33')]['id']}})['then'](handleEntityNotFound(_0x49dd03,null))[_0x5adb('0x22')](function(_0x215b88){var _0x1c3a5c=_0x215b88['get']({'plain':!![]});return utilLicense['checkLicense'](_0x1c3a5c,_0x1ed9ea[_0x5adb('0x31')][_0x5adb('0x34')]);})['then'](function(_0x2355bc){if(!_0x2355bc['demo']){return saveUpdates(_0x1ed9ea[_0x5adb('0x31')],null);}return _0x2355bc;})['then'](respondWithResult(_0x49dd03,null))[_0x5adb('0x35')](handleError(_0x49dd03,null));};
\ No newline at end of file
index 852f2be..19f3b73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bd6=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','define','License','license','util'];(function(_0x55abd9,_0x1148af){var _0x3e5669=function(_0x6f2105){while(--_0x6f2105){_0x55abd9['push'](_0x55abd9['shift']());}};_0x3e5669(++_0x1148af);}(_0x8bd6,0x83));var _0x68bd=function(_0x51ce0f,_0x6bdcd9){_0x51ce0f=_0x51ce0f-0x0;var _0x47c4b7=_0x8bd6[_0x51ce0f];return _0x47c4b7;};'use strict';var _=require('lodash');var util=require(_0x68bd('0x0'));var logger=require(_0x68bd('0x1'))(_0x68bd('0x2'));var moment=require(_0x68bd('0x3'));var BPromise=require('bluebird');var rp=require(_0x68bd('0x4'));var fs=require('fs');var path=require(_0x68bd('0x5'));var rimraf=require(_0x68bd('0x6'));var config=require(_0x68bd('0x7'));var attributes=require('./license.attributes');module['exports']=function(_0x398df9,_0x242598){return _0x398df9[_0x68bd('0x8')](_0x68bd('0x9'),attributes,{'tableName':_0x68bd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf1d6=['moment','bluebird','request-promise','path','rimraf','./license.attributes','exports','define','License','util','../../config/logger','api'];(function(_0x50a79f,_0x31646c){var _0x15f22d=function(_0x33c521){while(--_0x33c521){_0x50a79f['push'](_0x50a79f['shift']());}};_0x15f22d(++_0x31646c);}(_0xf1d6,0x99));var _0x6f1d=function(_0x290c78,_0x406c3d){_0x290c78=_0x290c78-0x0;var _0x5d5bf5=_0xf1d6[_0x290c78];return _0x5d5bf5;};'use strict';var _=require('lodash');var util=require(_0x6f1d('0x0'));var logger=require(_0x6f1d('0x1'))(_0x6f1d('0x2'));var moment=require(_0x6f1d('0x3'));var BPromise=require(_0x6f1d('0x4'));var rp=require(_0x6f1d('0x5'));var fs=require('fs');var path=require(_0x6f1d('0x6'));var rimraf=require(_0x6f1d('0x7'));var config=require('../../config/environment');var attributes=require(_0x6f1d('0x8'));module[_0x6f1d('0x9')]=function(_0x3da5b9,_0x2feec7){return _0x3da5b9[_0x6f1d('0xa')](_0x6f1d('0xb'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1698c82..8bf672f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbadb=['../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x13f566,_0x245021){var _0x2da5c5=function(_0x42754b){while(--_0x42754b){_0x13f566['push'](_0x13f566['shift']());}};_0x2da5c5(++_0x245021);}(_0xbadb,0x1c6));var _0xbbad=function(_0x2879dd,_0x2426e7){_0x2879dd=_0x2879dd-0x0;var _0x3b48a8=_0xbadb[_0x2879dd];return _0x3b48a8;};'use strict';var _=require('lodash');var util=require(_0xbbad('0x0'));var moment=require(_0xbbad('0x1'));var BPromise=require(_0xbbad('0x2'));var rs=require(_0xbbad('0x3'));var fs=require('fs');var Redis=require(_0xbbad('0x4'));var db=require(_0xbbad('0x5'))['db'];var utils=require(_0xbbad('0x6'));var logger=require('../../config/logger')(_0xbbad('0x7'));var config=require(_0xbbad('0x8'));var jayson=require(_0xbbad('0x9'));var client=jayson[_0xbbad('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4c5e01,_0x934743,_0x2e1059){return new BPromise(function(_0x19dd12,_0x370158){return client[_0xbbad('0xb')](_0x4c5e01,_0x2e1059)[_0xbbad('0xc')](function(_0x19d187){logger[_0xbbad('0xd')](_0xbbad('0xe'),_0x934743,_0xbbad('0xf'));logger[_0xbbad('0x10')](_0xbbad('0x11'),_0x934743,_0xbbad('0xf'),JSON[_0xbbad('0x12')](_0x19d187));if(_0x19d187[_0xbbad('0x13')]){if(_0x19d187['error'][_0xbbad('0x14')]===0x1f4){logger['error']('License,\x20%s,\x20%s',_0x934743,_0x19d187[_0xbbad('0x13')][_0xbbad('0x15')]);return _0x370158(_0x19d187['error']['message']);}logger[_0xbbad('0x13')](_0xbbad('0xe'),_0x934743,_0x19d187['error'][_0xbbad('0x15')]);return _0x19dd12(_0x19d187['error'][_0xbbad('0x15')]);}else{logger[_0xbbad('0xd')](_0xbbad('0xe'),_0x934743,_0xbbad('0xf'));_0x19dd12(_0x19d187['result']['message']);}})[_0xbbad('0x16')](function(_0x5c4990){logger['error']('License,\x20%s,\x20%s',_0x934743,_0x5c4990);_0x370158(_0x5c4990);});});}
\ No newline at end of file
+var _0x661b=['util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','License,\x20%s,\x20%s','debug','License,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch'];(function(_0xdb5a92,_0x4fb4ce){var _0x4cdb37=function(_0x2cab1a){while(--_0x2cab1a){_0xdb5a92['push'](_0xdb5a92['shift']());}};_0x4cdb37(++_0x4fb4ce);}(_0x661b,0xdc));var _0xb661=function(_0x1a8a87,_0x3df21a){_0x1a8a87=_0x1a8a87-0x0;var _0x168975=_0x661b[_0x1a8a87];return _0x168975;};'use strict';var _=require('lodash');var util=require(_0xb661('0x0'));var moment=require(_0xb661('0x1'));var BPromise=require(_0xb661('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb661('0x3'));var db=require(_0xb661('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xb661('0x5'))(_0xb661('0x6'));var config=require(_0xb661('0x7'));var jayson=require(_0xb661('0x8'));var client=jayson['client'][_0xb661('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1da9f3,_0x14cc3e,_0x1344a0){return new BPromise(function(_0x3b9837,_0x5dbe22){return client[_0xb661('0xa')](_0x1da9f3,_0x1344a0)['then'](function(_0x2bb173){logger['info'](_0xb661('0xb'),_0x14cc3e,'request\x20sent');logger[_0xb661('0xc')](_0xb661('0xd'),_0x14cc3e,_0xb661('0xe'),JSON[_0xb661('0xf')](_0x2bb173));if(_0x2bb173[_0xb661('0x10')]){if(_0x2bb173['error']['code']===0x1f4){logger[_0xb661('0x10')]('License,\x20%s,\x20%s',_0x14cc3e,_0x2bb173[_0xb661('0x10')][_0xb661('0x11')]);return _0x5dbe22(_0x2bb173[_0xb661('0x10')][_0xb661('0x11')]);}logger[_0xb661('0x10')](_0xb661('0xb'),_0x14cc3e,_0x2bb173[_0xb661('0x10')]['message']);return _0x3b9837(_0x2bb173[_0xb661('0x10')][_0xb661('0x11')]);}else{logger['info'](_0xb661('0xb'),_0x14cc3e,_0xb661('0xe'));_0x3b9837(_0x2bb173[_0xb661('0x12')][_0xb661('0x11')]);}})[_0xb661('0x13')](function(_0x579c93){logger[_0xb661('0x10')](_0xb661('0xb'),_0x14cc3e,_0x579c93);_0x5dbe22(_0x579c93);});});}
\ No newline at end of file
index 948c604..486953d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54e5=['/:id/interactions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','/:id/users','getAgents','post','addDisposition','addAnswer','create','addImap','addSmtp','addApplications','/:id/send','send','addAgents','put','update','removeDispositions','delete','removeAnswers','removeImap','removeSmtp','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getSmtp'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0x54e5,0x1dd));var _0x554e=function(_0x418f0b,_0xe47fcf){_0x418f0b=_0x418f0b-0x0;var _0x4c0491=_0x54e5[_0x418f0b];return _0x4c0491;};'use strict';var multer=require('multer');var util=require(_0x554e('0x0'));var path=require(_0x554e('0x1'));var timeout=require(_0x554e('0x2'));var express=require('express');var router=express[_0x554e('0x3')]();var fs_extra=require(_0x554e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x554e('0x5'));var config=require(_0x554e('0x6'));var controller=require(_0x554e('0x7'));router[_0x554e('0x8')]('/',auth[_0x554e('0x9')](),controller[_0x554e('0xa')]);router[_0x554e('0x8')](_0x554e('0xb'),auth[_0x554e('0x9')](),controller[_0x554e('0xc')]);router[_0x554e('0x8')](_0x554e('0xd'),auth[_0x554e('0x9')](),controller[_0x554e('0xe')]);router[_0x554e('0x8')](_0x554e('0xf'),auth[_0x554e('0x9')](),controller[_0x554e('0x10')]);router['get'](_0x554e('0x11'),auth[_0x554e('0x9')](),controller[_0x554e('0x12')]);router['get'](_0x554e('0x13'),auth['isAuthenticated'](),controller[_0x554e('0x14')]);router['get'](_0x554e('0x15'),auth[_0x554e('0x9')](),controller[_0x554e('0x16')]);router[_0x554e('0x8')](_0x554e('0x17'),auth['isAuthenticated'](),controller['getInteractions']);router['get'](_0x554e('0x18'),auth['isAuthenticated'](),controller[_0x554e('0x19')]);router['get'](_0x554e('0x1a'),auth[_0x554e('0x9')](),controller[_0x554e('0x1b')]);router[_0x554e('0x8')](_0x554e('0x1c'),auth['isAuthenticated'](),controller[_0x554e('0x1d')]);router['get'](_0x554e('0x1e'),auth[_0x554e('0x9')](),controller[_0x554e('0x1f')]);router[_0x554e('0x20')](_0x554e('0xf'),auth['isAuthenticated'](),controller[_0x554e('0x21')]);router['post'](_0x554e('0x11'),auth[_0x554e('0x9')](),controller[_0x554e('0x22')]);router['post']('/',auth[_0x554e('0x9')](),controller[_0x554e('0x23')]);router['post'](_0x554e('0x13'),auth['isAuthenticated'](),controller[_0x554e('0x24')]);router[_0x554e('0x20')](_0x554e('0x15'),auth[_0x554e('0x9')](),controller[_0x554e('0x25')]);router[_0x554e('0x20')](_0x554e('0x17'),auth[_0x554e('0x9')](),controller['addInteraction']);router[_0x554e('0x20')](_0x554e('0x18'),auth[_0x554e('0x9')](),controller[_0x554e('0x26')]);router[_0x554e('0x20')](_0x554e('0x27'),auth[_0x554e('0x9')](),controller[_0x554e('0x28')]);router['post'](_0x554e('0x1e'),auth[_0x554e('0x9')](),controller[_0x554e('0x29')]);router[_0x554e('0x2a')](_0x554e('0xd'),auth[_0x554e('0x9')](),controller[_0x554e('0x2b')]);router['delete'](_0x554e('0xf'),auth['isAuthenticated'](),controller[_0x554e('0x2c')]);router[_0x554e('0x2d')]('/:id/canned_answers',auth[_0x554e('0x9')](),controller[_0x554e('0x2e')]);router[_0x554e('0x2d')]('/:id/in_servers',auth[_0x554e('0x9')](),controller[_0x554e('0x2f')]);router[_0x554e('0x2d')](_0x554e('0x15'),auth['isAuthenticated'](),controller[_0x554e('0x30')]);router[_0x554e('0x2d')](_0x554e('0xd'),auth['isAuthenticated'](),controller['destroy']);router['delete'](_0x554e('0x1e'),auth[_0x554e('0x9')](),controller['removeAgents']);module[_0x554e('0x31')]=router;
\ No newline at end of file
+var _0xabe2=['show','/:id/dispositions','getDispositions','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','/:id/users','post','addDisposition','/:id/canned_answers','create','addImap','addSmtp','addInteraction','addApplications','/:id/send','send','addAgents','/:id','update','delete','removeDispositions','removeAnswers','removeImap','destroy','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get'];(function(_0x5f50b5,_0xa8db83){var _0x54c383=function(_0x381334){while(--_0x381334){_0x5f50b5['push'](_0x5f50b5['shift']());}};_0x54c383(++_0xa8db83);}(_0xabe2,0xac));var _0x2abe=function(_0x1fbc5a,_0x191f1b){_0x1fbc5a=_0x1fbc5a-0x0;var _0x289f17=_0xabe2[_0x1fbc5a];return _0x289f17;};'use strict';var multer=require(_0x2abe('0x0'));var util=require(_0x2abe('0x1'));var path=require('path');var timeout=require(_0x2abe('0x2'));var express=require(_0x2abe('0x3'));var router=express[_0x2abe('0x4')]();var fs_extra=require(_0x2abe('0x5'));var auth=require(_0x2abe('0x6'));var interaction=require(_0x2abe('0x7'));var config=require(_0x2abe('0x8'));var controller=require('./mailAccount.controller');router['get']('/',auth[_0x2abe('0x9')](),controller[_0x2abe('0xa')]);router[_0x2abe('0xb')]('/describe',auth[_0x2abe('0x9')](),controller['describe']);router[_0x2abe('0xb')]('/:id',auth[_0x2abe('0x9')](),controller[_0x2abe('0xc')]);router[_0x2abe('0xb')](_0x2abe('0xd'),auth[_0x2abe('0x9')](),controller[_0x2abe('0xe')]);router['get']('/:id/canned_answers',auth[_0x2abe('0x9')](),controller[_0x2abe('0xf')]);router['get'](_0x2abe('0x10'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x11')]);router['get'](_0x2abe('0x12'),auth['isAuthenticated'](),controller[_0x2abe('0x13')]);router[_0x2abe('0xb')](_0x2abe('0x14'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x15')]);router[_0x2abe('0xb')](_0x2abe('0x16'),auth['isAuthenticated'](),controller[_0x2abe('0x17')]);router[_0x2abe('0xb')](_0x2abe('0x18'),auth[_0x2abe('0x9')](),controller['getMessages']);router['get']('/:id/verify',auth[_0x2abe('0x9')](),controller['verifySmtp']);router[_0x2abe('0xb')](_0x2abe('0x19'),auth[_0x2abe('0x9')](),controller['getAgents']);router[_0x2abe('0x1a')](_0x2abe('0xd'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x1b')]);router[_0x2abe('0x1a')](_0x2abe('0x1c'),auth[_0x2abe('0x9')](),controller['addAnswer']);router[_0x2abe('0x1a')]('/',auth[_0x2abe('0x9')](),controller[_0x2abe('0x1d')]);router['post'](_0x2abe('0x10'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x1e')]);router[_0x2abe('0x1a')]('/:id/out_servers',auth[_0x2abe('0x9')](),controller[_0x2abe('0x1f')]);router[_0x2abe('0x1a')](_0x2abe('0x14'),auth['isAuthenticated'](),controller[_0x2abe('0x20')]);router['post'](_0x2abe('0x16'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x21')]);router[_0x2abe('0x1a')](_0x2abe('0x22'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x23')]);router[_0x2abe('0x1a')]('/:id/users',auth[_0x2abe('0x9')](),controller[_0x2abe('0x24')]);router['put'](_0x2abe('0x25'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x26')]);router[_0x2abe('0x27')](_0x2abe('0xd'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x28')]);router[_0x2abe('0x27')](_0x2abe('0x1c'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x29')]);router[_0x2abe('0x27')](_0x2abe('0x10'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x2a')]);router[_0x2abe('0x27')](_0x2abe('0x12'),auth[_0x2abe('0x9')](),controller['removeSmtp']);router[_0x2abe('0x27')](_0x2abe('0x25'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x2b')]);router[_0x2abe('0x27')](_0x2abe('0x19'),auth['isAuthenticated'](),controller[_0x2abe('0x2c')]);module[_0x2abe('0x2d')]=router;
\ No newline at end of file
index 5dfcf79..11999c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x919e=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','sequelize','exports','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}}'];(function(_0x55e859,_0x33114d){var _0x28a530=function(_0x28866e){while(--_0x28866e){_0x55e859['push'](_0x55e859['shift']());}};_0x28a530(++_0x33114d);}(_0x919e,0x1d7));var _0xe919=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x919e[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xe919('0x0'));module[_0xe919('0x1')]={'description':{'type':Sequelize[_0xe919('0x2')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0xe919('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize[_0xe919('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0xe919('0x4')]},'markAsUnread':{'type':Sequelize[_0xe919('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xe919('0x2')],'allowNull':![],'defaultValue':_0xe919('0x5')},'fontSize':{'type':Sequelize[_0xe919('0x6')](0x2)[_0xe919('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xe919('0x8');}},'notificationSound':{'type':Sequelize[_0xe919('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xe919('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xe919('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xe919('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xe919('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0xe919('0x9')},'mandatoryDisposition':{'type':Sequelize[_0xe919('0x3')],'defaultValue':![],'comment':_0xe919('0xa'),'set':function(_0x53ab97){if(!_0x53ab97)this[_0xe919('0xb')]('mandatoryDispositionPauseId',null);this['setDataValue']('mandatoryDisposition',_0x53ab97);}}};
\ No newline at end of file
+var _0xde64=['TEXT','Arial,Helvetica,sans-serif','INTEGER','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','exports','STRING','BOOLEAN'];(function(_0x484aac,_0x48c080){var _0x189874=function(_0x214db0){while(--_0x214db0){_0x484aac['push'](_0x484aac['shift']());}};_0x189874(++_0x48c080);}(_0xde64,0x17c));var _0x4de6=function(_0x4887ea,_0x3b974d){_0x4887ea=_0x4887ea-0x0;var _0x51260a=_0xde64[_0x4887ea];return _0x51260a;};'use strict';var Sequelize=require(_0x4de6('0x0'));module[_0x4de6('0x1')]={'description':{'type':Sequelize[_0x4de6('0x2')]},'name':{'type':Sequelize[_0x4de6('0x2')],'allowNull':![]},'service':{'type':Sequelize[_0x4de6('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x4de6('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize[_0x4de6('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0x4de6('0x4')]},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x4de6('0x5')},'fontSize':{'type':Sequelize[_0x4de6('0x6')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x4de6('0x7');}},'notificationSound':{'type':Sequelize[_0x4de6('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x4de6('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x4de6('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x4de6('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4de6('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x4de6('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4de6('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0x4de6('0x8')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x4de6('0x9'),'set':function(_0x170183){if(!_0x170183)this[_0x4de6('0xa')](_0x4de6('0xb'),null);this[_0x4de6('0xa')]('mandatoryDisposition',_0x170183);}}};
\ No newline at end of file
index 1fff14a..8abbc00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9cd=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','localhost','./mailAccount.socket','register','jayson/promise','client','http','request','then','info','MailAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','save','get','MailAccounts','UserProfileResource','destroy','stack','name','send','index','MailServerIn','Imap','MailServerOut','Smtp','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','MailAccount','includeAll','include','findAll','rows','catch','options','find','update','body','params','describe','addDisposition','Disposition','create','getDispositions','pick','MailAccountId','removeDispositions','ids','CannedAnswer','findOne','key','email','isNil','active','description','user','password','authentication','host','port','service','cservice','cuser','pass','cpassword','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','User','Owner','fullname','internal','Tag','Tags','color','tag','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','getMessages','MailMessage','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','CmList','List','CmContact','updatedAt','DESC','from','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','auth','secure','SendMail','List\x20not\x20found','ListId','messageId','subject','attach','out','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','userMailAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','juice','ioredis'];(function(_0x1f0d91,_0x24b032){var _0xafee7a=function(_0x2d1295){while(--_0x2d1295){_0x1f0d91['push'](_0x1f0d91['shift']());}};_0xafee7a(++_0x24b032);}(_0xa9cd,0x187));var _0xda9c=function(_0xcd5ace,_0x131119){_0xcd5ace=_0xcd5ace-0x0;var _0x3c0017=_0xa9cd[_0xcd5ace];return _0x3c0017;};'use strict';var emlformat=require(_0xda9c('0x0'));var rimraf=require(_0xda9c('0x1'));var zipdir=require(_0xda9c('0x2'));var jsonpatch=require(_0xda9c('0x3'));var rp=require(_0xda9c('0x4'));var moment=require(_0xda9c('0x5'));var BPromise=require(_0xda9c('0x6'));var Mustache=require(_0xda9c('0x7'));var util=require('util');var path=require(_0xda9c('0x8'));var sox=require(_0xda9c('0x9'));var csv=require(_0xda9c('0xa'));var ejs=require(_0xda9c('0xb'));var fs=require('fs');var fs_extra=require(_0xda9c('0xc'));var _=require(_0xda9c('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xda9c('0xe'));var toCsv=require(_0xda9c('0xa'));var querystring=require(_0xda9c('0xf'));var Papa=require(_0xda9c('0x10'));var htmlToText=require('html-to-text');var juice=require(_0xda9c('0x11'));var Redis=require(_0xda9c('0x12'));var authService=require(_0xda9c('0x13'));var qs=require(_0xda9c('0x14'));var as=require(_0xda9c('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xda9c('0x16'))(_0xda9c('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xda9c('0x18'));var db=require(_0xda9c('0x19'))['db'];config[_0xda9c('0x1a')]=_[_0xda9c('0x1b')](config['redis'],{'host':_0xda9c('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xda9c('0x1d'))[_0xda9c('0x1e')](socket);var jayson=require(_0xda9c('0x1f'));var client=jayson[_0xda9c('0x20')][_0xda9c('0x21')]({'port':0x232b});function respondWithRpcPromise(_0x524254,_0x3b2eb3,_0x2a2b11,_0x15c257){return new BPromise(function(_0x1db4f7,_0x27ba88){var _0x120be1=_0x15c257||client;return _0x120be1[_0xda9c('0x22')](_0x524254,_0x2a2b11)[_0xda9c('0x23')](function(_0x502ac0){logger[_0xda9c('0x24')](_0xda9c('0x25'),_0x3b2eb3,'request\x20sent');logger[_0xda9c('0x26')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x3b2eb3,_0xda9c('0x27'),JSON[_0xda9c('0x28')](_0x502ac0));if(_0x502ac0[_0xda9c('0x29')]){if(_0x502ac0[_0xda9c('0x29')][_0xda9c('0x2a')]===0x1f4){logger['error'](_0xda9c('0x25'),_0x3b2eb3,_0x502ac0['error'][_0xda9c('0x2b')]);return _0x27ba88(_0x502ac0[_0xda9c('0x29')][_0xda9c('0x2b')]);}logger[_0xda9c('0x29')](_0xda9c('0x25'),_0x3b2eb3,_0x502ac0[_0xda9c('0x29')]['message']);return _0x1db4f7(_0x502ac0[_0xda9c('0x29')]['message']);}else{logger[_0xda9c('0x24')](_0xda9c('0x25'),_0x3b2eb3,_0xda9c('0x27'));_0x1db4f7(_0x502ac0[_0xda9c('0x2c')]['message']);}})['catch'](function(_0x3be0c8){logger[_0xda9c('0x29')](_0xda9c('0x25'),_0x3b2eb3,_0x3be0c8);_0x27ba88(_0x3be0c8);});});}function respondWithStatusCode(_0x30c4b5,_0x5f36b9){_0x5f36b9=_0x5f36b9||0xcc;return function(_0x3b04f9){if(_0x3b04f9){return _0x30c4b5[_0xda9c('0x2d')](_0x5f36b9);}return _0x30c4b5[_0xda9c('0x2e')](_0x5f36b9)[_0xda9c('0x2f')]();};}function respondWithResult(_0x26e6a9,_0x1b0860){_0x1b0860=_0x1b0860||0xc8;return function(_0x480f40){if(_0x480f40){return _0x26e6a9[_0xda9c('0x2e')](_0x1b0860)['json'](_0x480f40);}};}function respondWithFilteredResult(_0x3c5d37,_0x5b1c32){return function(_0x149018){if(_0x149018){var _0x230952=typeof _0x5b1c32[_0xda9c('0x30')]===_0xda9c('0x31')&&typeof _0x5b1c32['limit']===_0xda9c('0x31');var _0x27abae=_0x149018[_0xda9c('0x32')];var _0x4bbe34=_0x230952?0x0:_0x5b1c32['offset'];var _0x59afa8=_0x230952?_0x149018[_0xda9c('0x32')]:_0x5b1c32[_0xda9c('0x30')]+_0x5b1c32[_0xda9c('0x33')];var _0x272ae2;if(_0x59afa8>=_0x27abae){_0x59afa8=_0x27abae;_0x272ae2=0xc8;}else{_0x272ae2=0xce;}_0x3c5d37[_0xda9c('0x2e')](_0x272ae2);return _0x3c5d37[_0xda9c('0x34')](_0xda9c('0x35'),_0x4bbe34+'-'+_0x59afa8+'/'+_0x27abae)[_0xda9c('0x36')](_0x149018);}return null;};}function patchUpdates(_0x24fee1){return function(_0x27847c){try{jsonpatch[_0xda9c('0x37')](_0x27847c,_0x24fee1,!![]);}catch(_0x3120c4){return BPromise['reject'](_0x3120c4);}return _0x27847c[_0xda9c('0x38')]();};}function saveUpdates(_0x53df6f,_0x28e52b){return function(_0x4a8126){if(_0x4a8126){return _0x4a8126['update'](_0x53df6f)[_0xda9c('0x23')](function(_0x5d36de){return _0x5d36de;});}return null;};}function removeEntity(_0x7283cd,_0x231227){return function(_0x11c6bc){if(_0x11c6bc){return _0x11c6bc['destroy']()[_0xda9c('0x23')](function(){var _0x2f01ce=_0x11c6bc[_0xda9c('0x39')]({'plain':!![]});var _0x660caf=_0xda9c('0x3a');return db[_0xda9c('0x3b')][_0xda9c('0x3c')]({'where':{'type':_0x660caf,'resourceId':_0x2f01ce['id']}})[_0xda9c('0x23')](function(){return _0x11c6bc;});})[_0xda9c('0x23')](function(){_0x7283cd[_0xda9c('0x2e')](0xcc)[_0xda9c('0x2f')]();});}};}function handleEntityNotFound(_0x37c84c,_0x4d7f25){return function(_0x5041e2){if(!_0x5041e2){_0x37c84c['sendStatus'](0x194);}return _0x5041e2;};}function handleError(_0x14dfef,_0x3628e3){_0x3628e3=_0x3628e3||0x1f4;return function(_0x5f060d){logger[_0xda9c('0x29')](_0x5f060d[_0xda9c('0x3d')]);if(_0x5f060d[_0xda9c('0x3e')]){delete _0x5f060d[_0xda9c('0x3e')];}_0x14dfef[_0xda9c('0x2e')](_0x3628e3)[_0xda9c('0x3f')](_0x5f060d);};}exports[_0xda9c('0x40')]=function(_0x90268,_0x2c4e0d){var _0x433de9={'include':[{'model':db[_0xda9c('0x41')],'as':_0xda9c('0x42')},{'model':db[_0xda9c('0x43')],'as':_0xda9c('0x44')},{'model':db[_0xda9c('0x45')],'as':_0xda9c('0x46')}]},_0x3817c1={},_0x25d98f={'count':0x0,'rows':[]};var _0x513ad4=_[_0xda9c('0x47')](db['MailAccount'][_0xda9c('0x48')],function(_0x3b847e){return{'name':_0x3b847e[_0xda9c('0x49')],'type':_0x3b847e['type']['key']};});_0x3817c1['model']=_['map'](_0x513ad4,_0xda9c('0x3e'));_0x3817c1[_0xda9c('0x4a')]=_[_0xda9c('0x4b')](_0x90268[_0xda9c('0x4a')]);_0x3817c1[_0xda9c('0x4c')]=_[_0xda9c('0x4d')](_0x3817c1['model'],_0x3817c1[_0xda9c('0x4a')]);_0x433de9[_0xda9c('0x4e')]=_['intersection'](_0x3817c1[_0xda9c('0x4f')],qs[_0xda9c('0x50')](_0x90268[_0xda9c('0x4a')][_0xda9c('0x50')]));_0x433de9['attributes']=_0x433de9[_0xda9c('0x4e')][_0xda9c('0x51')]?_0x433de9[_0xda9c('0x4e')]:_0x3817c1[_0xda9c('0x4f')];if(!_0x90268[_0xda9c('0x4a')][_0xda9c('0x52')](_0xda9c('0x53'))){_0x433de9[_0xda9c('0x33')]=qs[_0xda9c('0x33')](_0x90268['query'][_0xda9c('0x33')]);_0x433de9[_0xda9c('0x30')]=qs[_0xda9c('0x30')](_0x90268[_0xda9c('0x4a')]['offset']);}_0x433de9[_0xda9c('0x54')]=qs[_0xda9c('0x55')](_0x90268[_0xda9c('0x4a')][_0xda9c('0x55')]);_0x433de9[_0xda9c('0x56')]=qs['filters'](_['pick'](_0x90268['query'],_0x3817c1[_0xda9c('0x4c')]),_0x513ad4);if(_0x90268[_0xda9c('0x4a')][_0xda9c('0x57')]){_0x433de9[_0xda9c('0x56')]=_[_0xda9c('0x58')](_0x433de9[_0xda9c('0x56')],{'$or':_[_0xda9c('0x47')](_0x513ad4,function(_0x3a8e1b){if(_0x3a8e1b[_0xda9c('0x59')]!==_0xda9c('0x5a')){var _0x2103d5={};_0x2103d5[_0x3a8e1b[_0xda9c('0x3e')]]={'$like':'%'+_0x90268[_0xda9c('0x4a')]['filter']+'%'};return _0x2103d5;}})});}_0x433de9=_['merge']({},_0x433de9,_0x90268['options']);var _0x1a43b7={'where':_0x433de9['where']};return db[_0xda9c('0x5b')][_0xda9c('0x32')](_0x1a43b7)[_0xda9c('0x23')](function(_0x3ba598){_0x25d98f[_0xda9c('0x32')]=_0x3ba598;if(_0x90268[_0xda9c('0x4a')][_0xda9c('0x5c')]){_0x433de9[_0xda9c('0x5d')]=[{'all':!![]}];}return db[_0xda9c('0x5b')][_0xda9c('0x5e')](_0x433de9);})[_0xda9c('0x23')](function(_0xec66a0){_0x25d98f[_0xda9c('0x5f')]=_0xec66a0;return _0x25d98f;})[_0xda9c('0x23')](respondWithFilteredResult(_0x2c4e0d,_0x433de9))[_0xda9c('0x60')](handleError(_0x2c4e0d,null));};exports['show']=function(_0x31952c,_0x44aaab){var _0x4ec816={'raw':![],'where':{'id':_0x31952c['params']['id']},'include':[{'model':db[_0xda9c('0x41')],'as':_0xda9c('0x42')},{'model':db[_0xda9c('0x43')],'as':_0xda9c('0x44')},{'model':db['Pause'],'as':_0xda9c('0x46')}]},_0x475d3f={};_0x475d3f[_0xda9c('0x4f')]=_[_0xda9c('0x4b')](db[_0xda9c('0x5b')][_0xda9c('0x48')]);_0x475d3f['query']=_[_0xda9c('0x4b')](_0x31952c[_0xda9c('0x4a')]);_0x475d3f[_0xda9c('0x4c')]=_[_0xda9c('0x4d')](_0x475d3f['model'],_0x475d3f[_0xda9c('0x4a')]);_0x4ec816[_0xda9c('0x4e')]=_[_0xda9c('0x4d')](_0x475d3f[_0xda9c('0x4f')],qs[_0xda9c('0x50')](_0x31952c[_0xda9c('0x4a')]['fields']));_0x4ec816['attributes']=_0x4ec816[_0xda9c('0x4e')][_0xda9c('0x51')]?_0x4ec816[_0xda9c('0x4e')]:_0x475d3f[_0xda9c('0x4f')];if(_0x31952c['query'][_0xda9c('0x5c')]){_0x4ec816[_0xda9c('0x5d')]=[{'all':!![]}];}_0x4ec816=_[_0xda9c('0x58')]({},_0x4ec816,_0x31952c[_0xda9c('0x61')]);return db['MailAccount'][_0xda9c('0x62')](_0x4ec816)['then'](handleEntityNotFound(_0x44aaab,null))[_0xda9c('0x23')](respondWithResult(_0x44aaab,null))[_0xda9c('0x60')](handleError(_0x44aaab,null));};exports[_0xda9c('0x63')]=function(_0x5c9616,_0x16c299){if(_0x5c9616[_0xda9c('0x64')]['id']){delete _0x5c9616[_0xda9c('0x64')]['id'];}return db[_0xda9c('0x5b')]['find']({'where':{'id':_0x5c9616[_0xda9c('0x65')]['id']},'include':[{'model':db['MailServerIn'],'as':_0xda9c('0x42')},{'model':db['MailServerOut'],'as':_0xda9c('0x44')},{'model':db[_0xda9c('0x45')],'as':_0xda9c('0x46')}]})[_0xda9c('0x23')](handleEntityNotFound(_0x16c299,null))[_0xda9c('0x23')](saveUpdates(_0x5c9616['body'],null))[_0xda9c('0x23')](function(_0xb2651e){if(_0xb2651e&&_0x5c9616['body']['Imap']){return db[_0xda9c('0x41')][_0xda9c('0x63')](_0x5c9616[_0xda9c('0x64')]['Imap'],{'where':{'MailAccountId':_0xb2651e['id']}})['then'](function(){return _0xb2651e;});}return _0xb2651e;})[_0xda9c('0x23')](function(_0x35fa10){if(_0x35fa10&&_0x5c9616[_0xda9c('0x64')][_0xda9c('0x44')]){return db['MailServerOut']['update'](_0x5c9616[_0xda9c('0x64')][_0xda9c('0x44')],{'where':{'MailAccountId':_0x35fa10['id']}})[_0xda9c('0x23')](function(){return _0x35fa10;});}return _0x35fa10;})[_0xda9c('0x23')](respondWithResult(_0x16c299,null))[_0xda9c('0x60')](handleError(_0x16c299,null));};exports[_0xda9c('0x66')]=function(_0x433af8,_0x3f3310){return db[_0xda9c('0x5b')]['describe']()[_0xda9c('0x23')](respondWithResult(_0x3f3310,null))[_0xda9c('0x60')](handleError(_0x3f3310,null));};exports[_0xda9c('0x67')]=function(_0x5f7bd8,_0x30853e,_0xb11155){if(_0x5f7bd8[_0xda9c('0x64')]['id']){delete _0x5f7bd8['body']['id'];}return db[_0xda9c('0x5b')][_0xda9c('0x62')]({'where':{'id':_0x5f7bd8['params']['id']}})[_0xda9c('0x23')](handleEntityNotFound(_0x30853e,null))[_0xda9c('0x23')](function(_0x40e4bb){if(_0x40e4bb){_0x5f7bd8[_0xda9c('0x64')]['MailAccountId']=_0x40e4bb['id'];return db[_0xda9c('0x68')][_0xda9c('0x69')](_0x5f7bd8['body']);}})['then'](respondWithResult(_0x30853e,null))[_0xda9c('0x60')](handleError(_0x30853e,null));};exports[_0xda9c('0x6a')]=function(_0x5bf9b6,_0x208df0,_0x41eca4){var _0xe82a58={'raw':![],'where':{}};var _0x5b1232={};var _0xfbbe82={'count':0x0,'rows':[]};return db[_0xda9c('0x5b')]['findOne']({'where':{'id':_0x5bf9b6['params']['id']}})['then'](handleEntityNotFound(_0x208df0,null))[_0xda9c('0x23')](function(_0x3a1cbb){if(_0x3a1cbb){_0x5b1232['model']=_[_0xda9c('0x4b')](db[_0xda9c('0x68')]['rawAttributes']);_0x5b1232[_0xda9c('0x4a')]=_[_0xda9c('0x4b')](_0x5bf9b6[_0xda9c('0x4a')]);_0x5b1232[_0xda9c('0x4c')]=_[_0xda9c('0x4d')](_0x5b1232[_0xda9c('0x4f')],_0x5b1232[_0xda9c('0x4a')]);_0xe82a58['attributes']=_[_0xda9c('0x4d')](_0x5b1232['model'],qs[_0xda9c('0x50')](_0x5bf9b6[_0xda9c('0x4a')][_0xda9c('0x50')]));_0xe82a58['attributes']=_0xe82a58[_0xda9c('0x4e')][_0xda9c('0x51')]?_0xe82a58['attributes']:_0x5b1232['model'];if(!_0x5bf9b6[_0xda9c('0x4a')][_0xda9c('0x52')](_0xda9c('0x53'))){_0xe82a58[_0xda9c('0x33')]=qs[_0xda9c('0x33')](_0x5bf9b6['query'][_0xda9c('0x33')]);_0xe82a58[_0xda9c('0x30')]=qs[_0xda9c('0x30')](_0x5bf9b6[_0xda9c('0x4a')]['offset']);}_0xe82a58[_0xda9c('0x54')]=qs['sort'](_0x5bf9b6[_0xda9c('0x4a')][_0xda9c('0x55')]);_0xe82a58[_0xda9c('0x56')]=qs['filters'](_[_0xda9c('0x6b')](_0x5bf9b6[_0xda9c('0x4a')],_0x5b1232['filters']));_0xe82a58[_0xda9c('0x56')][_0xda9c('0x6c')]=_0x3a1cbb['id'];if(_0x5bf9b6[_0xda9c('0x4a')][_0xda9c('0x57')]){_0xe82a58[_0xda9c('0x56')]=_[_0xda9c('0x58')](_0xe82a58['where'],{'$or':_[_0xda9c('0x47')](_0xe82a58[_0xda9c('0x4e')],function(_0x399887){var _0x5305a8={};_0x5305a8[_0x399887]={'$like':'%'+_0x5bf9b6[_0xda9c('0x4a')][_0xda9c('0x57')]+'%'};return _0x5305a8;})});}_0xe82a58=_['merge']({},_0xe82a58,_0x5bf9b6[_0xda9c('0x61')]);return db[_0xda9c('0x68')][_0xda9c('0x32')]({'where':_0xe82a58[_0xda9c('0x56')]})['then'](function(_0x39854a){_0xfbbe82[_0xda9c('0x32')]=_0x39854a;if(_0x5bf9b6[_0xda9c('0x4a')]['includeAll']){_0xe82a58[_0xda9c('0x5d')]=[{'all':!![]}];}return db[_0xda9c('0x68')]['findAll'](_0xe82a58);})[_0xda9c('0x23')](function(_0x3db603){_0xfbbe82[_0xda9c('0x5f')]=_0x3db603;return _0xfbbe82;});}})[_0xda9c('0x23')](respondWithFilteredResult(_0x208df0,_0xe82a58))[_0xda9c('0x60')](handleError(_0x208df0,null));};exports[_0xda9c('0x6d')]=function(_0x2c67e7,_0x2ef39e,_0x582bda){return db[_0xda9c('0x5b')][_0xda9c('0x62')]({'where':{'id':_0x2c67e7[_0xda9c('0x65')]['id']}})['then'](handleEntityNotFound(_0x2ef39e,null))['then'](function(_0x5000a5){if(_0x5000a5){return _0x5000a5[_0xda9c('0x6d')](_0x2c67e7[_0xda9c('0x4a')][_0xda9c('0x6e')]);}})[_0xda9c('0x23')](respondWithStatusCode(_0x2ef39e,null))['catch'](handleError(_0x2ef39e,null));};exports['addAnswer']=function(_0x271743,_0x50478d,_0x2dd6b9){if(_0x271743[_0xda9c('0x64')]['id']){delete _0x271743[_0xda9c('0x64')]['id'];}return db[_0xda9c('0x5b')]['find']({'where':{'id':_0x271743[_0xda9c('0x65')]['id']}})[_0xda9c('0x23')](handleEntityNotFound(_0x50478d,null))[_0xda9c('0x23')](function(_0x521181){if(_0x521181){_0x271743[_0xda9c('0x64')][_0xda9c('0x6c')]=_0x521181['id'];return db[_0xda9c('0x6f')][_0xda9c('0x69')](_0x271743['body']);}})[_0xda9c('0x23')](respondWithResult(_0x50478d,null))[_0xda9c('0x60')](handleError(_0x50478d,null));};exports['getAnswers']=function(_0xdf10ba,_0x398aff,_0x2d0696){var _0x5e4b14={'raw':![],'where':{}};var _0x54379c={};var _0x8a36c0={'count':0x0,'rows':[]};return db[_0xda9c('0x5b')][_0xda9c('0x70')]({'where':{'id':_0xdf10ba[_0xda9c('0x65')]['id']}})[_0xda9c('0x23')](handleEntityNotFound(_0x398aff,null))['then'](function(_0x36a198){if(_0x36a198){_0x54379c['model']=_['keys'](db[_0xda9c('0x6f')][_0xda9c('0x48')]);_0x54379c[_0xda9c('0x4a')]=_[_0xda9c('0x4b')](_0xdf10ba[_0xda9c('0x4a')]);_0x54379c[_0xda9c('0x4c')]=_[_0xda9c('0x4d')](_0x54379c['model'],_0x54379c[_0xda9c('0x4a')]);_0x5e4b14[_0xda9c('0x4e')]=_[_0xda9c('0x4d')](_0x54379c[_0xda9c('0x4f')],qs[_0xda9c('0x50')](_0xdf10ba[_0xda9c('0x4a')][_0xda9c('0x50')]));_0x5e4b14[_0xda9c('0x4e')]=_0x5e4b14['attributes']['length']?_0x5e4b14[_0xda9c('0x4e')]:_0x54379c['model'];if(!_0xdf10ba[_0xda9c('0x4a')][_0xda9c('0x52')](_0xda9c('0x53'))){_0x5e4b14[_0xda9c('0x33')]=qs['limit'](_0xdf10ba[_0xda9c('0x4a')][_0xda9c('0x33')]);_0x5e4b14['offset']=qs[_0xda9c('0x30')](_0xdf10ba['query']['offset']);}_0x5e4b14['order']=qs[_0xda9c('0x55')](_0xdf10ba['query'][_0xda9c('0x55')]);_0x5e4b14['where']=qs[_0xda9c('0x4c')](_[_0xda9c('0x6b')](_0xdf10ba[_0xda9c('0x4a')],_0x54379c['filters']));_0x5e4b14[_0xda9c('0x56')][_0xda9c('0x6c')]=_0x36a198['id'];if(_0xdf10ba[_0xda9c('0x4a')][_0xda9c('0x57')]){_0x5e4b14[_0xda9c('0x56')]=_[_0xda9c('0x58')](_0x5e4b14[_0xda9c('0x56')],{'$or':_[_0xda9c('0x47')](_0x5e4b14[_0xda9c('0x4e')],function(_0x23a408){var _0x96edc2={};_0x96edc2[_0x23a408]={'$like':'%'+_0xdf10ba[_0xda9c('0x4a')][_0xda9c('0x57')]+'%'};return _0x96edc2;})});}_0x5e4b14=_[_0xda9c('0x58')]({},_0x5e4b14,_0xdf10ba[_0xda9c('0x61')]);return db[_0xda9c('0x6f')]['count']({'where':_0x5e4b14['where']})[_0xda9c('0x23')](function(_0x4f4d96){_0x8a36c0['count']=_0x4f4d96;if(_0xdf10ba['query']['includeAll']){_0x5e4b14[_0xda9c('0x5d')]=[{'all':!![]}];}return db[_0xda9c('0x6f')][_0xda9c('0x5e')](_0x5e4b14);})[_0xda9c('0x23')](function(_0x10dbfe){_0x8a36c0[_0xda9c('0x5f')]=_0x10dbfe;return _0x8a36c0;});}})[_0xda9c('0x23')](respondWithFilteredResult(_0x398aff,_0x5e4b14))['catch'](handleError(_0x398aff,null));};exports['removeAnswers']=function(_0x24288f,_0x47be85,_0x40164d){return db[_0xda9c('0x5b')][_0xda9c('0x62')]({'where':{'id':_0x24288f[_0xda9c('0x65')]['id']}})['then'](handleEntityNotFound(_0x47be85,null))[_0xda9c('0x23')](function(_0x230749){if(_0x230749){return _0x230749['removeAnswers'](_0x24288f[_0xda9c('0x4a')][_0xda9c('0x6e')]);}})[_0xda9c('0x23')](respondWithStatusCode(_0x47be85,null))[_0xda9c('0x60')](handleError(_0x47be85,null));};exports[_0xda9c('0x69')]=function(_0x3a8942,_0x46a6fa){var _0x294c64={'name':_0x3a8942['body'][_0xda9c('0x3e')],'key':_0x3a8942['body'][_0xda9c('0x71')],'email':_0x3a8942[_0xda9c('0x64')][_0xda9c('0x72')],'ListId':_0x3a8942[_0xda9c('0x64')]['ListId'],'active':!_[_0xda9c('0x73')](_0x3a8942[_0xda9c('0x64')][_0xda9c('0x74')])?_0x3a8942['body']['active']:!![],'description':_0x3a8942[_0xda9c('0x64')][_0xda9c('0x75')]||null,'Imap':{},'Smtp':{}};if(_[_0xda9c('0x73')](_0x3a8942[_0xda9c('0x64')]['cservice'])){if(_0x3a8942[_0xda9c('0x64')]['cauthentication']){_0x294c64['Imap']['user']=_0x294c64[_0xda9c('0x44')][_0xda9c('0x76')]=_0x3a8942['body']['cuser'];_0x294c64['Imap'][_0xda9c('0x77')]=_0x294c64['Smtp']['pass']=_0x3a8942[_0xda9c('0x64')]['cpassword'];}else{_0x294c64[_0xda9c('0x42')][_0xda9c('0x78')]=_0x294c64[_0xda9c('0x44')][_0xda9c('0x78')]=![];}_0x294c64['Imap'][_0xda9c('0x79')]=_0x3a8942[_0xda9c('0x64')][_0xda9c('0x42')][_0xda9c('0x79')];_0x294c64['Imap']['port']=_0x3a8942[_0xda9c('0x64')][_0xda9c('0x42')][_0xda9c('0x7a')];_0x294c64[_0xda9c('0x44')][_0xda9c('0x79')]=_0x3a8942[_0xda9c('0x64')][_0xda9c('0x44')]['host'];_0x294c64[_0xda9c('0x44')][_0xda9c('0x7a')]=_0x3a8942[_0xda9c('0x64')][_0xda9c('0x44')][_0xda9c('0x7a')];}else{_0x294c64['Imap'][_0xda9c('0x7b')]=_0x294c64['Smtp'][_0xda9c('0x7b')]=_0x3a8942[_0xda9c('0x64')][_0xda9c('0x7c')];_0x294c64['Imap'][_0xda9c('0x76')]=_0x294c64[_0xda9c('0x44')][_0xda9c('0x76')]=_0x3a8942[_0xda9c('0x64')][_0xda9c('0x7d')];_0x294c64[_0xda9c('0x42')][_0xda9c('0x77')]=_0x294c64[_0xda9c('0x44')][_0xda9c('0x7e')]=_0x3a8942[_0xda9c('0x64')][_0xda9c('0x7f')];}return db['MailAccount'][_0xda9c('0x69')](_0x294c64,{'include':[{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0xda9c('0x41')],'as':_0xda9c('0x42')}]})['then'](function(_0x31494e){var _0x29585f=_0x3a8942[_0xda9c('0x76')][_0xda9c('0x39')]({'plain':!![]});if(!_0x29585f)throw new Error(_0xda9c('0x80'));if(_0x29585f[_0xda9c('0x81')]===_0xda9c('0x76')){var _0x212381=_0x31494e[_0xda9c('0x39')]({'plain':!![]});return db[_0xda9c('0x82')][_0xda9c('0x62')]({'where':{'name':_0xda9c('0x3a'),'userProfileId':_0x29585f['userProfileId']},'raw':!![]})[_0xda9c('0x23')](function(_0x49314b){if(_0x49314b&&_0x49314b[_0xda9c('0x83')]===0x0){return db[_0xda9c('0x3b')]['create']({'name':_0x212381['name'],'resourceId':_0x212381['id'],'type':_0x49314b['name'],'sectionId':_0x49314b['id']},{})[_0xda9c('0x23')](function(){return _0x31494e;});}else{return _0x31494e;}})[_0xda9c('0x60')](function(_0x3aa9be){logger[_0xda9c('0x29')](_0xda9c('0x84'),_0x3aa9be);throw _0x3aa9be;});}return _0x31494e;})[_0xda9c('0x23')](respondWithResult(_0x46a6fa,0xc9))[_0xda9c('0x60')](handleError(_0x46a6fa,null));};exports[_0xda9c('0x85')]=function(_0x431dc8,_0x1f80c8,_0x42bdb9){return db[_0xda9c('0x5b')]['findOne']({'where':{'id':_0x431dc8[_0xda9c('0x65')]['id']}})[_0xda9c('0x23')](handleEntityNotFound(_0x1f80c8,null))['then'](function(_0x5a45a3){if(_0x5a45a3){return _0x5a45a3[_0xda9c('0x85')]();}return null;})['then'](respondWithResult(_0x1f80c8,null))[_0xda9c('0x60')](handleError(_0x1f80c8,null));};exports[_0xda9c('0x86')]=function(_0x3f77d8,_0x4e9a76,_0x14e253){if(_0x3f77d8[_0xda9c('0x64')]['id']){delete _0x3f77d8[_0xda9c('0x64')]['id'];}return db[_0xda9c('0x5b')][_0xda9c('0x62')]({'where':{'id':_0x3f77d8[_0xda9c('0x65')]['id']}})[_0xda9c('0x23')](handleEntityNotFound(_0x4e9a76,null))['then'](function(_0xe3cb7c){if(_0xe3cb7c){_0x3f77d8[_0xda9c('0x64')][_0xda9c('0x6c')]=_0xe3cb7c['id'];return db[_0xda9c('0x41')]['create'](_0x3f77d8[_0xda9c('0x64')]);}})[_0xda9c('0x23')](respondWithResult(_0x4e9a76,null))['catch'](handleError(_0x4e9a76,null));};exports[_0xda9c('0x87')]=function(_0x4934ca,_0x4a751d,_0x13f4c1){return db['MailAccount']['findOne']({'where':{'id':_0x4934ca[_0xda9c('0x65')]['id']}})['then'](handleEntityNotFound(_0x4a751d,null))[_0xda9c('0x23')](function(_0x3e0cf1){if(_0x3e0cf1){return _0x3e0cf1[_0xda9c('0x88')](null);}return null;})['then'](respondWithStatusCode(_0x4a751d,null))['catch'](handleError(_0x4a751d,null));};exports[_0xda9c('0x89')]=function(_0x4a1a04,_0x427540,_0x1d90b2){return db[_0xda9c('0x5b')][_0xda9c('0x70')]({'where':{'id':_0x4a1a04['params']['id']}})[_0xda9c('0x23')](handleEntityNotFound(_0x427540,null))[_0xda9c('0x23')](function(_0x94f7d8){if(_0x94f7d8){return _0x94f7d8[_0xda9c('0x89')]();}return null;})[_0xda9c('0x23')](respondWithResult(_0x427540,null))['catch'](handleError(_0x427540,null));};exports['addSmtp']=function(_0x2b28b2,_0x3fe04b,_0x2fa26d){if(_0x2b28b2[_0xda9c('0x64')]['id']){delete _0x2b28b2['body']['id'];}return db[_0xda9c('0x5b')][_0xda9c('0x62')]({'where':{'id':_0x2b28b2['params']['id']}})[_0xda9c('0x23')](handleEntityNotFound(_0x3fe04b,null))['then'](function(_0x38de2c){if(_0x38de2c){_0x2b28b2[_0xda9c('0x64')][_0xda9c('0x6c')]=_0x38de2c['id'];return db[_0xda9c('0x43')]['create'](_0x2b28b2[_0xda9c('0x64')]);}})[_0xda9c('0x23')](respondWithResult(_0x3fe04b,null))['catch'](handleError(_0x3fe04b,null));};exports[_0xda9c('0x8a')]=function(_0x27f9b4,_0x178d5b,_0xd73f5e){return db[_0xda9c('0x5b')]['findOne']({'where':{'id':_0x27f9b4[_0xda9c('0x65')]['id']}})[_0xda9c('0x23')](handleEntityNotFound(_0x178d5b,null))[_0xda9c('0x23')](function(_0x28bc1f){if(_0x28bc1f){return _0x28bc1f[_0xda9c('0x8b')](null);}return null;})[_0xda9c('0x23')](respondWithStatusCode(_0x178d5b,null))[_0xda9c('0x60')](handleError(_0x178d5b,null));};exports[_0xda9c('0x8c')]=function(_0x1d0ca7,_0x5be4e5,_0x550121){return db[_0xda9c('0x8d')][_0xda9c('0x62')]({'where':{'id':_0x1d0ca7['params']['id']}})['then'](handleEntityNotFound(_0x5be4e5,null))[_0xda9c('0x23')](function(_0x300c25){if(_0x300c25){return _0x300c25[_0xda9c('0x8c')](_0x1d0ca7[_0xda9c('0x64')][_0xda9c('0x6e')],_[_0xda9c('0x8e')](_0x1d0ca7['body'],[_0xda9c('0x6e'),'id'])||{});}})[_0xda9c('0x23')](respondWithResult(_0x5be4e5,null))[_0xda9c('0x60')](handleError(_0x5be4e5,null));};exports[_0xda9c('0x8f')]=function(_0x166603,_0x55f644,_0x57680e){var _0x400d3f={'raw':![],'where':{}};var _0xf3b21f={};var _0x4dba43={'count':0x0,'rows':[]};return db['MailAccount'][_0xda9c('0x70')]({'where':{'id':_0x166603[_0xda9c('0x65')]['id']}})['then'](handleEntityNotFound(_0x55f644,null))[_0xda9c('0x23')](function(_0x151638){if(_0x151638){_0xf3b21f[_0xda9c('0x4f')]=_[_0xda9c('0x4b')](db[_0xda9c('0x8d')][_0xda9c('0x48')]);_0xf3b21f['query']=_[_0xda9c('0x4b')](_0x166603['query']);_0xf3b21f[_0xda9c('0x4c')]=_['intersection'](_0xf3b21f[_0xda9c('0x4f')],_0xf3b21f[_0xda9c('0x4a')]);_0x400d3f[_0xda9c('0x4e')]=_[_0xda9c('0x4d')](_0xf3b21f['model'],qs[_0xda9c('0x50')](_0x166603[_0xda9c('0x4a')][_0xda9c('0x50')]));_0x400d3f[_0xda9c('0x4e')]=_0x400d3f[_0xda9c('0x4e')]['length']?_0x400d3f[_0xda9c('0x4e')]:_0xf3b21f[_0xda9c('0x4f')];if(!_0x166603[_0xda9c('0x4a')][_0xda9c('0x52')]('nolimit')){_0x400d3f[_0xda9c('0x33')]=qs[_0xda9c('0x33')](_0x166603[_0xda9c('0x4a')][_0xda9c('0x33')]);_0x400d3f[_0xda9c('0x30')]=qs[_0xda9c('0x30')](_0x166603['query'][_0xda9c('0x30')]);}_0x400d3f[_0xda9c('0x54')]=qs[_0xda9c('0x55')](_0x166603['query'][_0xda9c('0x55')]);_0x400d3f['where']=qs[_0xda9c('0x4c')](_['pick'](_0x166603[_0xda9c('0x4a')],_0xf3b21f[_0xda9c('0x4c')]));_0x400d3f[_0xda9c('0x56')][_0xda9c('0x6c')]=_0x151638['id'];if(_0x166603[_0xda9c('0x4a')][_0xda9c('0x57')]){_0x400d3f[_0xda9c('0x56')]=_[_0xda9c('0x58')](_0x400d3f[_0xda9c('0x56')],{'$or':_[_0xda9c('0x47')](_0x400d3f['attributes'],function(_0x5d1680){var _0x55bf8a={};_0x55bf8a[_0x5d1680]={'$like':'%'+_0x166603['query'][_0xda9c('0x57')]+'%'};return _0x55bf8a;})});}_0x400d3f=_[_0xda9c('0x58')]({},_0x400d3f,_0x166603[_0xda9c('0x61')]);return db[_0xda9c('0x8d')][_0xda9c('0x32')]({'where':_0x400d3f[_0xda9c('0x56')]})[_0xda9c('0x23')](function(_0x324bea){_0x4dba43['count']=_0x324bea;if(_0x166603['query'][_0xda9c('0x5c')]){_0x400d3f[_0xda9c('0x5d')]=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db[_0xda9c('0x90')],'as':_0xda9c('0x91'),'attributes':[_0xda9c('0x3e'),_0xda9c('0x92'),_0xda9c('0x93')],'required':![]},{'model':db[_0xda9c('0x94')],'as':_0xda9c('0x95'),'attributes':['id',_0xda9c('0x3e'),_0xda9c('0x96')],'where':_0x166603['query'][_0xda9c('0x97')]?{'id':_0x166603[_0xda9c('0x4a')]['tag']}:undefined,'required':_0x166603[_0xda9c('0x4a')][_0xda9c('0x97')]?!![]:![]}];}return db[_0xda9c('0x8d')][_0xda9c('0x5e')](_0x400d3f);})[_0xda9c('0x23')](function(_0x362ece){_0x4dba43[_0xda9c('0x5f')]=_0x362ece;return _0x4dba43;});}})[_0xda9c('0x23')](respondWithFilteredResult(_0x55f644,_0x400d3f))[_0xda9c('0x60')](handleError(_0x55f644,null));};exports[_0xda9c('0x98')]=function addApplications(_0x240b87,_0x457703){var _0x5e59e3=_0x240b87[_0xda9c('0x65')]['id'];var _0x5e76a6=_0x240b87[_0xda9c('0x64')];var _0x139e7=0xc8;var _0x18dacb=null;return db[_0xda9c('0x99')][_0xda9c('0x9a')]({'isolationLevel':db[_0xda9c('0x99')][_0xda9c('0x9b')][_0xda9c('0x9c')][_0xda9c('0x9d')]},function(_0x1500ff){return db[_0xda9c('0x5b')]['findOne']({'where':{'id':_0x5e59e3},'transaction':_0x1500ff})['then'](function(_0x5225b1){if(_0x5225b1){return db['MailApplication'][_0xda9c('0x3c')]({'where':{'MailAccountId':_0x5e59e3},'transaction':_0x1500ff})[_0xda9c('0x23')](function(){var _0x2d1bac=_[_0xda9c('0x47')](_0x5e76a6,function(_0x896be1){_0x896be1[_0xda9c('0x6c')]=_0x5e59e3;return _0x896be1;});return db[_0xda9c('0x9e')][_0xda9c('0x9f')](_0x2d1bac,{'transaction':_0x1500ff});});}else{_0x139e7=0x194;_0x18dacb=[];}});})[_0xda9c('0x23')](function(){if(_0x139e7!==0x194){return db['MailApplication'][_0xda9c('0xa0')]({'where':{'MailAccountId':_0x5e59e3},'order':_0xda9c('0xa1')})[_0xda9c('0x23')](function(_0x3b5c95){_0x18dacb=_0x3b5c95;});}})[_0xda9c('0x60')](function(_0x3c970e){_0x139e7=0x1f4;logger['error'](_0x3c970e['stack']);if(_0x3c970e[_0xda9c('0x3e')]){delete _0x3c970e[_0xda9c('0x3e')];}_0x18dacb=_0x3c970e;})[_0xda9c('0xa2')](function(){if(_0x18dacb===null){_0x457703[_0xda9c('0x2d')](_0x139e7);}else{if(_0x139e7===0x1f4){_0x457703[_0xda9c('0x2e')](_0x139e7)[_0xda9c('0x3f')](_0x18dacb);}else{_0x457703['status'](_0x139e7)[_0xda9c('0x36')](_0x18dacb);}}});};exports['getApplications']=function(_0x52de87,_0x468bfd,_0x16d90f){var _0xb93160={};var _0x167641={};var _0x518b71;var _0x276e4c;return db[_0xda9c('0x5b')]['findOne']({'where':{'id':_0x52de87[_0xda9c('0x65')]['id']}})[_0xda9c('0x23')](handleEntityNotFound(_0x468bfd,null))[_0xda9c('0x23')](function(_0x4095b8){if(_0x4095b8){_0x518b71=_0x4095b8;_0x167641['model']=_[_0xda9c('0x4b')](db[_0xda9c('0x9e')][_0xda9c('0x48')]);_0x167641[_0xda9c('0x4a')]=_[_0xda9c('0x4b')](_0x52de87[_0xda9c('0x4a')]);_0x167641[_0xda9c('0x4c')]=_[_0xda9c('0x4d')](_0x167641['model'],_0x167641['query']);_0xb93160[_0xda9c('0x4e')]=_[_0xda9c('0x4d')](_0x167641[_0xda9c('0x4f')],qs[_0xda9c('0x50')](_0x52de87['query'][_0xda9c('0x50')]));_0xb93160[_0xda9c('0x4e')]=_0xb93160[_0xda9c('0x4e')]['length']?_0xb93160[_0xda9c('0x4e')]:_0x167641['model'];_0xb93160['order']=qs[_0xda9c('0x55')](_0x52de87['query']['sort']);_0xb93160['where']=qs[_0xda9c('0x4c')](_[_0xda9c('0x6b')](_0x52de87[_0xda9c('0x4a')],_0x167641[_0xda9c('0x4c')]));if(_0x52de87['query'][_0xda9c('0x57')]){_0xb93160[_0xda9c('0x56')]=_[_0xda9c('0x58')](_0xb93160['where'],{'$or':_[_0xda9c('0x47')](_0xb93160[_0xda9c('0x4e')],function(_0x4493be){var _0x41a356={};_0x41a356[_0x4493be]={'$like':'%'+_0x52de87['query']['filter']+'%'};return _0x41a356;})});}_0xb93160=_[_0xda9c('0x58')]({},_0xb93160,_0x52de87[_0xda9c('0x61')]);return _0x518b71['getApplications'](_0xb93160);}})[_0xda9c('0x23')](function(_0x428274){if(_0x428274){_0x276e4c=_0x428274[_0xda9c('0x51')];if(!_0x52de87['query'][_0xda9c('0x52')](_0xda9c('0x53'))){_0xb93160['limit']=qs[_0xda9c('0x33')](_0x52de87['query']['limit']);_0xb93160[_0xda9c('0x30')]=qs[_0xda9c('0x30')](_0x52de87[_0xda9c('0x4a')][_0xda9c('0x30')]);}return _0x518b71[_0xda9c('0xa3')](_0xb93160);}})['then'](function(_0x37ad1b){if(_0x37ad1b){return _0x37ad1b?{'count':_0x276e4c,'rows':_0x37ad1b}:null;}})[_0xda9c('0x23')](respondWithResult(_0x468bfd,null))[_0xda9c('0x60')](handleError(_0x468bfd,null));};exports[_0xda9c('0xa4')]=function(_0x17b88a,_0x4d02e6,_0x431201){var _0x2d98e2={'raw':!![],'where':{}};var _0x10ee04={};var _0x47c09f={'count':0x0,'rows':[]};return db[_0xda9c('0x5b')][_0xda9c('0x70')]({'where':{'id':_0x17b88a[_0xda9c('0x65')]['id']}})[_0xda9c('0x23')](handleEntityNotFound(_0x4d02e6,null))[_0xda9c('0x23')](function(_0xb15456){if(_0xb15456){_0x10ee04[_0xda9c('0x4f')]=_[_0xda9c('0x4b')](db[_0xda9c('0xa5')][_0xda9c('0x48')]);_0x10ee04[_0xda9c('0x4a')]=_['keys'](_0x17b88a[_0xda9c('0x4a')]);_0x10ee04['filters']=_[_0xda9c('0x4d')](_0x10ee04[_0xda9c('0x4f')],_0x10ee04[_0xda9c('0x4a')]);_0x2d98e2[_0xda9c('0x4e')]=_[_0xda9c('0x4d')](_0x10ee04['model'],qs['fields'](_0x17b88a['query'][_0xda9c('0x50')]));_0x2d98e2[_0xda9c('0x4e')]=_0x2d98e2['attributes'][_0xda9c('0x51')]?_0x2d98e2['attributes']:_0x10ee04[_0xda9c('0x4f')];if(!_0x17b88a[_0xda9c('0x4a')][_0xda9c('0x52')](_0xda9c('0x53'))){_0x2d98e2[_0xda9c('0x33')]=qs[_0xda9c('0x33')](_0x17b88a[_0xda9c('0x4a')][_0xda9c('0x33')]);_0x2d98e2[_0xda9c('0x30')]=qs['offset'](_0x17b88a['query'][_0xda9c('0x30')]);}_0x2d98e2[_0xda9c('0x54')]=qs[_0xda9c('0x55')](_0x17b88a['query'][_0xda9c('0x55')]);_0x2d98e2[_0xda9c('0x56')]=qs[_0xda9c('0x4c')](_[_0xda9c('0x6b')](_0x17b88a[_0xda9c('0x4a')],_0x10ee04['filters']));_0x2d98e2[_0xda9c('0x56')][_0xda9c('0x6c')]=_0xb15456['id'];if(_0x17b88a[_0xda9c('0x4a')]['filter']){_0x2d98e2[_0xda9c('0x56')]=_[_0xda9c('0x58')](_0x2d98e2[_0xda9c('0x56')],{'$or':_['map'](_0x2d98e2[_0xda9c('0x4e')],function(_0x2907f9){var _0x43b6fe={};_0x43b6fe[_0x2907f9]={'$like':'%'+_0x17b88a[_0xda9c('0x4a')][_0xda9c('0x57')]+'%'};return _0x43b6fe;})});}if(_0x17b88a[_0xda9c('0x4a')]['$gte']){var _0x2ec32b=_0x17b88a[_0xda9c('0x4a')]['$gte'][_0xda9c('0xa6')](',');var _0x39f641={};_0x39f641[_0x2ec32b[0x0]]={'$gte':moment(_0x2ec32b[0x1])[_0xda9c('0xa7')](_0xda9c('0xa8'))};_0x2d98e2[_0xda9c('0x56')]=_[_0xda9c('0x58')](_0x2d98e2[_0xda9c('0x56')],_0x39f641);}_0x2d98e2=_[_0xda9c('0x58')]({},_0x2d98e2,_0x17b88a[_0xda9c('0x61')]);return db[_0xda9c('0xa5')][_0xda9c('0x32')]({'where':_0x2d98e2[_0xda9c('0x56')]})[_0xda9c('0x23')](function(_0x32a439){_0x47c09f[_0xda9c('0x32')]=_0x32a439;if(_0x17b88a[_0xda9c('0x4a')][_0xda9c('0x5c')]){_0x2d98e2[_0xda9c('0x5d')]=[{'all':!![]}];}return db[_0xda9c('0xa5')][_0xda9c('0x5e')](_0x2d98e2);})[_0xda9c('0x23')](function(_0x105bd7){if(_0x17b88a[_0xda9c('0x4a')][_0xda9c('0xa9')]===_0xda9c('0xaa')){for(var _0x43d9c0=0x0;_0x43d9c0<_0x105bd7[_0xda9c('0x51')];_0x43d9c0++){_0x105bd7[_0x43d9c0][_0xda9c('0x64')]=juice(_0x105bd7[_0x43d9c0][_0xda9c('0x64')]);}}_0x47c09f[_0xda9c('0x5f')]=_0x105bd7;return _0x47c09f;});}})[_0xda9c('0x23')](respondWithFilteredResult(_0x4d02e6,_0x2d98e2))[_0xda9c('0x60')](handleError(_0x4d02e6,null));};exports['send']=function(_0x32418c,_0x5da3ca,_0x368fb5){var _0x236bf4,_0x44ebb4={},_0x546db2;if(_0x32418c[_0xda9c('0x64')]['to']){_0x546db2=_0x32418c[_0xda9c('0x64')]['to'][_0xda9c('0xa6')](',')[0x0];}return db[_0xda9c('0x5b')][_0xda9c('0x62')]({'where':{'id':_0x32418c[_0xda9c('0x65')]['id']},'include':[{'model':db[_0xda9c('0xab')],'as':_0xda9c('0xac'),'include':[{'model':db[_0xda9c('0xad')],'as':'Contacts','where':{'email':_0x546db2},'limit':0x1,'order':[[_0xda9c('0xae'),_0xda9c('0xaf')]]}]},{'model':db[_0xda9c('0x43')],'as':_0xda9c('0x44'),'raw':!![]}]})[_0xda9c('0x23')](handleEntityNotFound(_0x5da3ca,null))[_0xda9c('0x23')](function(_0x51ed3a){if(_0x51ed3a){_0x236bf4=_0x51ed3a;if(_0x51ed3a[_0xda9c('0x44')]){if(_[_0xda9c('0x73')](_0x32418c[_0xda9c('0x64')][_0xda9c('0xb0')])){_0x32418c[_0xda9c('0x64')][_0xda9c('0xb0')]=util[_0xda9c('0xa7')](_0xda9c('0xb1'),_0x51ed3a[_0xda9c('0x3e')],_0x51ed3a[_0xda9c('0x72')]||_0x51ed3a[_0xda9c('0x44')][_0xda9c('0x76')]);}if(_0x32418c[_0xda9c('0x64')]['attachments']&&_0x32418c['body'][_0xda9c('0xb2')][_0xda9c('0x51')]){for(var _0x381957=0x0;_0x381957<_0x32418c[_0xda9c('0x64')][_0xda9c('0xb2')]['length'];_0x381957+=0x1){_0x32418c[_0xda9c('0x64')][_0xda9c('0xb2')][_0x381957]={'filename':_0x32418c[_0xda9c('0x64')][_0xda9c('0xb2')][_0x381957]['name'],'path':path[_0xda9c('0xb3')](config[_0xda9c('0xb4')],_0xda9c('0xb5'),_0x32418c['body'][_0xda9c('0xb2')][_0x381957][_0xda9c('0xb6')])};}}var _0x5137c0={'tls':{'rejectUnauthorized':![]}};if(_[_0xda9c('0x73')](_0x51ed3a['Smtp']['service'])){if(_0x51ed3a[_0xda9c('0x44')][_0xda9c('0x78')]){_0x5137c0[_0xda9c('0xb7')]={'user':_0x51ed3a['Smtp'][_0xda9c('0x76')],'pass':_0x51ed3a[_0xda9c('0x44')][_0xda9c('0x7e')]};}_0x5137c0[_0xda9c('0x79')]=_0x51ed3a[_0xda9c('0x44')][_0xda9c('0x79')];_0x5137c0[_0xda9c('0x7a')]=_0x51ed3a[_0xda9c('0x44')]['port'];_0x5137c0[_0xda9c('0xb8')]=_0x51ed3a[_0xda9c('0x44')][_0xda9c('0xb8')];}else{_0x5137c0[_0xda9c('0x7b')]=_0x51ed3a[_0xda9c('0x44')][_0xda9c('0x7b')];_0x5137c0[_0xda9c('0xb7')]={'user':_0x51ed3a[_0xda9c('0x44')][_0xda9c('0x76')],'pass':_0x51ed3a['Smtp'][_0xda9c('0x7e')]};}return respondWithRpcPromise(_0xda9c('0xb9'),'sendMail',{'account':_0x5137c0,'message':_0x32418c['body']});}else{throw new Error(_0xda9c('0xba'));}}})[_0xda9c('0x23')](function(_0xfc7265){if(_0xfc7265){_0x44ebb4=_0xfc7265;if(_0x236bf4[_0xda9c('0xac')]){if(_0x236bf4['List']['Contacts'][_0xda9c('0x51')]){return _0x236bf4[_0xda9c('0xac')]['Contacts'][0x0];}else{return db[_0xda9c('0xad')]['create'](_[_0xda9c('0x1b')](_0x32418c['body'],{'firstName':_0x32418c[_0xda9c('0x64')]['to'],'email':_0x32418c[_0xda9c('0x64')]['to'],'phone':_0x32418c[_0xda9c('0x64')]['to'],'ListId':_0x236bf4[_0xda9c('0xbb')]}));}}else{throw new Error(_0xda9c('0xba'));}}})[_0xda9c('0x23')](function(_0x35dca1){if(_0x35dca1){var _0x345b16={'UserId':_0x32418c[_0xda9c('0x76')]['id'],'ContactId':_0x35dca1['id'],'MailAccountId':_0x236bf4['id'],'inReplyTo':_0x44ebb4[_0xda9c('0xbc')],'to':_0x32418c[_0xda9c('0x64')][_0xda9c('0xb0')],'cc':_0x32418c[_0xda9c('0x64')]['cc'],'subject':_0x32418c[_0xda9c('0x64')][_0xda9c('0xbd')],'attach':_0x32418c['body'][_0xda9c('0xbe')],'firstMsgDirection':_0xda9c('0xbf'),'lastMsgAt':moment()[_0xda9c('0xa7')](_0xda9c('0xa8')),'lastMsgDirection':_0xda9c('0xbf'),'Messages':[_[_0xda9c('0x58')](_0x32418c['body'],{'messageId':_0x44ebb4[_0xda9c('0xbc')],'sentAt':moment()['format'](_0xda9c('0xa8')),'read':!![],'MailAccountId':_0x236bf4['id'],'UserId':_0x32418c['user']['id'],'ContactId':_0x35dca1['id']})]};if(_0x32418c['body'][_0xda9c('0xc0')]){_0x345b16=_[_0xda9c('0x58')](_0x345b16,_0x32418c['body'][_0xda9c('0xc0')]);}return db[_0xda9c('0x8d')][_0xda9c('0x69')](_0x345b16,{'include':[{'model':db[_0xda9c('0xa5')],'as':_0xda9c('0xc1')}]});}})['then'](respondWithResult(_0x5da3ca,null))[_0xda9c('0x60')](handleError(_0x5da3ca,null));};exports[_0xda9c('0xc2')]=function(_0x494364,_0x9a7fe1,_0x967435){return db['MailAccount'][_0xda9c('0x62')]({'where':{'id':_0x494364['params']['id']},'include':[{'model':db['MailServerOut'],'as':'Smtp','raw':!![]}]})[_0xda9c('0x23')](handleEntityNotFound(_0x9a7fe1,null))['then'](function(_0x3137f0){if(_0x3137f0&&_0x3137f0[_0xda9c('0x44')]){var _0x39916e={'id':_0x3137f0['id'],'tls':{'rejectUnauthorized':![]}};if(_0x3137f0[_0xda9c('0x44')][_0xda9c('0x7b')]){_0x39916e['service']=_0x3137f0[_0xda9c('0x44')][_0xda9c('0x7b')];}else{_0x39916e[_0xda9c('0x79')]=_0x3137f0[_0xda9c('0x44')][_0xda9c('0x79')];_0x39916e[_0xda9c('0x7a')]=_0x3137f0[_0xda9c('0x44')][_0xda9c('0x7a')];_0x39916e['secure']=_0x3137f0[_0xda9c('0x44')]['secure'];}if(_0x3137f0[_0xda9c('0x44')][_0xda9c('0x78')]){_0x39916e[_0xda9c('0xb7')]={'user':_0x3137f0[_0xda9c('0x44')][_0xda9c('0x76')],'pass':_0x3137f0['Smtp'][_0xda9c('0x7e')]};}return respondWithRpcPromise(_0xda9c('0xc3'),_0xda9c('0xc2'),{'account':_0x39916e});}})[_0xda9c('0x23')](respondWithResult(_0x9a7fe1,null))[_0xda9c('0x60')](handleError(_0x9a7fe1,null));};exports[_0xda9c('0x3c')]=function(_0x19def5,_0x21d69c){return db[_0xda9c('0x5b')][_0xda9c('0x62')]({'where':{'id':_0x19def5['params']['id']}})[_0xda9c('0x23')](handleEntityNotFound(_0x21d69c,null))[_0xda9c('0x23')](function(_0x5cbd17){if(_0x5cbd17&&_0x5cbd17[_0xda9c('0x7b')]){throw new db[(_0xda9c('0xc4'))]['ValidationError'](_0xda9c('0xc5'));}return _0x5cbd17;})[_0xda9c('0x23')](removeEntity(_0x21d69c,null))[_0xda9c('0x60')](handleError(_0x21d69c,null));};exports['addAgents']=function(_0x1dc476,_0x8d2c4a,_0x559186){return db['MailAccount'][_0xda9c('0x62')]({'where':{'id':_0x1dc476['params']['id']}})['then'](handleEntityNotFound(_0x8d2c4a,null))['then'](function(_0x27adba){if(_0x27adba){return _0x27adba[_0xda9c('0xc6')](_0x1dc476['body'][_0xda9c('0x6e')],_[_0xda9c('0x8e')](_0x1dc476[_0xda9c('0x64')],[_0xda9c('0x6e'),'id'])||{})[_0xda9c('0xc7')](function(_0x6be154){for(var _0x23feb8=0x0;_0x23feb8<_0x1dc476[_0xda9c('0x64')]['ids'][_0xda9c('0x51')];_0x23feb8+=0x1){socket[_0xda9c('0xc8')](_0xda9c('0xc9'),{'UserId':Number(_0x1dc476['body'][_0xda9c('0x6e')][_0x23feb8]),'MailAccountId':Number(_0x1dc476[_0xda9c('0x65')]['id'])});}return _0x6be154;});}})['then'](respondWithResult(_0x8d2c4a,null))[_0xda9c('0x60')](handleError(_0x8d2c4a,null));};exports[_0xda9c('0xca')]=function(_0x2ff3e5,_0x4a82b7,_0x356e5e){return db[_0xda9c('0x5b')]['find']({'where':{'id':_0x2ff3e5[_0xda9c('0x65')]['id']}})[_0xda9c('0x23')](handleEntityNotFound(_0x4a82b7,null))['then'](function(_0x1d1c44){if(_0x1d1c44){return _0x1d1c44['removeAgents'](_0x2ff3e5[_0xda9c('0x4a')]['ids'])[_0xda9c('0x23')](function(){if(_['isArray'](_0x2ff3e5['query']['ids'])){for(var _0x363528=0x0;_0x363528<_0x2ff3e5['query'][_0xda9c('0x6e')][_0xda9c('0x51')];_0x363528+=0x1){socket[_0xda9c('0xc8')](_0xda9c('0xcb'),{'UserId':Number(_0x2ff3e5['query'][_0xda9c('0x6e')][_0x363528]),'MailAccountId':Number(_0x2ff3e5['params']['id'])});}}else{socket['emit'](_0xda9c('0xcb'),{'UserId':Number(_0x2ff3e5[_0xda9c('0x4a')][_0xda9c('0x6e')]),'MailAccountId':Number(_0x2ff3e5[_0xda9c('0x65')]['id'])});}});}})[_0xda9c('0x23')](respondWithStatusCode(_0x4a82b7,null))[_0xda9c('0x60')](handleError(_0x4a82b7,null));};exports[_0xda9c('0xcc')]=function(_0x57373d,_0x56bd6b,_0x53d620){var _0x1637c6={};var _0x5cf3ff={};var _0x241d69;var _0x3b2698;return db[_0xda9c('0x5b')][_0xda9c('0x70')]({'where':{'id':_0x57373d[_0xda9c('0x65')]['id']}})[_0xda9c('0x23')](handleEntityNotFound(_0x56bd6b,null))['then'](function(_0x456a42){if(_0x456a42){_0x241d69=_0x456a42;_0x5cf3ff[_0xda9c('0x4f')]=_[_0xda9c('0x4b')](db[_0xda9c('0x90')][_0xda9c('0x48')]);_0x5cf3ff[_0xda9c('0x4a')]=_[_0xda9c('0x4b')](_0x57373d[_0xda9c('0x4a')]);_0x5cf3ff[_0xda9c('0x4c')]=_[_0xda9c('0x4d')](_0x5cf3ff[_0xda9c('0x4f')],_0x5cf3ff[_0xda9c('0x4a')]);_0x1637c6['attributes']=_[_0xda9c('0x4d')](_0x5cf3ff[_0xda9c('0x4f')],qs['fields'](_0x57373d[_0xda9c('0x4a')][_0xda9c('0x50')]));_0x1637c6[_0xda9c('0x4e')]=_0x1637c6[_0xda9c('0x4e')][_0xda9c('0x51')]?_0x1637c6[_0xda9c('0x4e')]:_0x5cf3ff[_0xda9c('0x4f')];_0x1637c6[_0xda9c('0x54')]=qs['sort'](_0x57373d[_0xda9c('0x4a')][_0xda9c('0x55')]);_0x1637c6[_0xda9c('0x56')]=qs['filters'](_['pick'](_0x57373d['query'],_0x5cf3ff[_0xda9c('0x4c')]));if(_0x57373d[_0xda9c('0x4a')]['filter']){_0x1637c6[_0xda9c('0x56')]=_[_0xda9c('0x58')](_0x1637c6['where'],{'$or':_[_0xda9c('0x47')](_0x1637c6[_0xda9c('0x4e')],function(_0x474fc9){var _0x1edb04={};_0x1edb04[_0x474fc9]={'$like':'%'+_0x57373d['query'][_0xda9c('0x57')]+'%'};return _0x1edb04;})});}_0x1637c6=_[_0xda9c('0x58')]({},_0x1637c6,_0x57373d[_0xda9c('0x61')]);return _0x241d69[_0xda9c('0xcc')](_0x1637c6);}})['then'](function(_0x2eee63){if(_0x2eee63){_0x3b2698=_0x2eee63['length'];if(!_0x57373d[_0xda9c('0x4a')]['hasOwnProperty']('nolimit')){_0x1637c6[_0xda9c('0x33')]=qs[_0xda9c('0x33')](_0x57373d[_0xda9c('0x4a')][_0xda9c('0x33')]);_0x1637c6['offset']=qs[_0xda9c('0x30')](_0x57373d[_0xda9c('0x4a')][_0xda9c('0x30')]);}return _0x241d69['getAgents'](_0x1637c6);}})['then'](function(_0x2d0e90){if(_0x2d0e90){return _0x2d0e90?{'count':_0x3b2698,'rows':_0x2d0e90}:null;}})['then'](respondWithResult(_0x56bd6b,null))[_0xda9c('0x60')](handleError(_0x56bd6b,null));};
\ No newline at end of file
+var _0x6ab9=['mandatoryDispositionPause','body','describe','find','Disposition','create','getDispositions','findOne','hasOwnProperty','order','MailAccountId','findAll','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','email','ListId','isNil','active','description','cservice','cauthentication','cuser','password','cpassword','authentication','host','port','user','pass','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','getImap','addImap','removeImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','nolimit','CmContact','Contact','Owner','fullname','internal','Tags','color','tag','sequelize','transaction','MailApplication','bulkCreate','findAndCountAll','getApplications','getMessages','MailMessage','split','format','inlineCss','CmList','List','Contacts','updatedAt','DESC','from','%s\x20<%s>','attachments','join','server/files/attachments','basename','auth','secure','service','SendMail','sendMail','List\x20not\x20found','messageId','subject','attach','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','VerifySmtp','verifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','userMailAccount:remove','User','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','html-to-text','juice','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','./mailAccount.socket','http','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','get','MailAccounts','UserProfileResource','stack','name','send','index','MailServerIn','Imap','Pause','map','MailAccount','rawAttributes','fieldName','key','keys','query','filters','intersection','model','fields','attributes','length','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','show','params','MailServerOut','Smtp'];(function(_0x1b6c6d,_0x2983b0){var _0x290d9d=function(_0x5b9779){while(--_0x5b9779){_0x1b6c6d['push'](_0x1b6c6d['shift']());}};_0x290d9d(++_0x2983b0);}(_0x6ab9,0x135));var _0x96ab=function(_0x1b4b23,_0x5dd6d6){_0x1b4b23=_0x1b4b23-0x0;var _0x2a325b=_0x6ab9[_0x1b4b23];return _0x2a325b;};'use strict';var emlformat=require(_0x96ab('0x0'));var rimraf=require(_0x96ab('0x1'));var zipdir=require(_0x96ab('0x2'));var jsonpatch=require(_0x96ab('0x3'));var rp=require(_0x96ab('0x4'));var moment=require(_0x96ab('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x96ab('0x6'));var path=require(_0x96ab('0x7'));var sox=require(_0x96ab('0x8'));var csv=require(_0x96ab('0x9'));var ejs=require(_0x96ab('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x96ab('0xb'));var squel=require(_0x96ab('0xc'));var crypto=require(_0x96ab('0xd'));var jsforce=require(_0x96ab('0xe'));var deskjs=require(_0x96ab('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x96ab('0x10'));var htmlToText=require(_0x96ab('0x11'));var juice=require(_0x96ab('0x12'));var Redis=require(_0x96ab('0x13'));var authService=require(_0x96ab('0x14'));var qs=require(_0x96ab('0x15'));var as=require(_0x96ab('0x16'));var hardwareService=require(_0x96ab('0x17'));var logger=require(_0x96ab('0x18'))(_0x96ab('0x19'));var utils=require(_0x96ab('0x1a'));var config=require(_0x96ab('0x1b'));var licenseUtil=require(_0x96ab('0x1c'));var db=require(_0x96ab('0x1d'))['db'];config['redis']=_[_0x96ab('0x1e')](config['redis'],{'host':_0x96ab('0x1f'),'port':0x18eb});var socket=require(_0x96ab('0x20'))(new Redis(config['redis']));require(_0x96ab('0x21'))['register'](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x96ab('0x22')]({'port':0x232b});function respondWithRpcPromise(_0x15c3e9,_0x1669e,_0xab0195,_0x47d9af){return new BPromise(function(_0x67aaa1,_0xbcda1a){var _0x2eca5f=_0x47d9af||client;return _0x2eca5f[_0x96ab('0x23')](_0x15c3e9,_0xab0195)[_0x96ab('0x24')](function(_0x36a933){logger[_0x96ab('0x25')](_0x96ab('0x26'),_0x1669e,_0x96ab('0x27'));logger[_0x96ab('0x28')](_0x96ab('0x29'),_0x1669e,_0x96ab('0x27'),JSON[_0x96ab('0x2a')](_0x36a933));if(_0x36a933[_0x96ab('0x2b')]){if(_0x36a933[_0x96ab('0x2b')]['code']===0x1f4){logger[_0x96ab('0x2b')](_0x96ab('0x26'),_0x1669e,_0x36a933['error'][_0x96ab('0x2c')]);return _0xbcda1a(_0x36a933[_0x96ab('0x2b')]['message']);}logger['error']('MailAccount,\x20%s,\x20%s',_0x1669e,_0x36a933[_0x96ab('0x2b')]['message']);return _0x67aaa1(_0x36a933['error']['message']);}else{logger[_0x96ab('0x25')]('MailAccount,\x20%s,\x20%s',_0x1669e,'request\x20sent');_0x67aaa1(_0x36a933[_0x96ab('0x2d')]['message']);}})[_0x96ab('0x2e')](function(_0x10c6cb){logger[_0x96ab('0x2b')]('MailAccount,\x20%s,\x20%s',_0x1669e,_0x10c6cb);_0xbcda1a(_0x10c6cb);});});}function respondWithStatusCode(_0x38d4de,_0xe10b7c){_0xe10b7c=_0xe10b7c||0xcc;return function(_0x3544d5){if(_0x3544d5){return _0x38d4de[_0x96ab('0x2f')](_0xe10b7c);}return _0x38d4de[_0x96ab('0x30')](_0xe10b7c)[_0x96ab('0x31')]();};}function respondWithResult(_0x55be82,_0x987b91){_0x987b91=_0x987b91||0xc8;return function(_0x3c957d){if(_0x3c957d){return _0x55be82['status'](_0x987b91)[_0x96ab('0x32')](_0x3c957d);}};}function respondWithFilteredResult(_0x206c86,_0x5dfcb9){return function(_0xeb5a0){if(_0xeb5a0){var _0xb08234=typeof _0x5dfcb9[_0x96ab('0x33')]==='undefined'&&typeof _0x5dfcb9['limit']===_0x96ab('0x34');var _0x4ac482=_0xeb5a0[_0x96ab('0x35')];var _0x3f2e24=_0xb08234?0x0:_0x5dfcb9[_0x96ab('0x33')];var _0x128e24=_0xb08234?_0xeb5a0['count']:_0x5dfcb9[_0x96ab('0x33')]+_0x5dfcb9[_0x96ab('0x36')];var _0x23974b;if(_0x128e24>=_0x4ac482){_0x128e24=_0x4ac482;_0x23974b=0xc8;}else{_0x23974b=0xce;}_0x206c86[_0x96ab('0x30')](_0x23974b);return _0x206c86[_0x96ab('0x37')](_0x96ab('0x38'),_0x3f2e24+'-'+_0x128e24+'/'+_0x4ac482)['json'](_0xeb5a0);}return null;};}function patchUpdates(_0x49cd53){return function(_0x215c6b){try{jsonpatch[_0x96ab('0x39')](_0x215c6b,_0x49cd53,!![]);}catch(_0x194495){return BPromise[_0x96ab('0x3a')](_0x194495);}return _0x215c6b[_0x96ab('0x3b')]();};}function saveUpdates(_0x53b7f6,_0x439638){return function(_0x5c4283){if(_0x5c4283){return _0x5c4283[_0x96ab('0x3c')](_0x53b7f6)[_0x96ab('0x24')](function(_0xf1e992){return _0xf1e992;});}return null;};}function removeEntity(_0x8fba3d,_0x57f354){return function(_0x28e27e){if(_0x28e27e){return _0x28e27e[_0x96ab('0x3d')]()[_0x96ab('0x24')](function(){var _0x449dea=_0x28e27e[_0x96ab('0x3e')]({'plain':!![]});var _0xd7fae=_0x96ab('0x3f');return db[_0x96ab('0x40')][_0x96ab('0x3d')]({'where':{'type':_0xd7fae,'resourceId':_0x449dea['id']}})[_0x96ab('0x24')](function(){return _0x28e27e;});})[_0x96ab('0x24')](function(){_0x8fba3d[_0x96ab('0x30')](0xcc)[_0x96ab('0x31')]();});}};}function handleEntityNotFound(_0x570933,_0x3b54bd){return function(_0x2758fd){if(!_0x2758fd){_0x570933[_0x96ab('0x2f')](0x194);}return _0x2758fd;};}function handleError(_0x1b74a4,_0x538690){_0x538690=_0x538690||0x1f4;return function(_0x4caa7b){logger[_0x96ab('0x2b')](_0x4caa7b[_0x96ab('0x41')]);if(_0x4caa7b[_0x96ab('0x42')]){delete _0x4caa7b[_0x96ab('0x42')];}_0x1b74a4[_0x96ab('0x30')](_0x538690)[_0x96ab('0x43')](_0x4caa7b);};}exports[_0x96ab('0x44')]=function(_0x50b24c,_0x3ee688){var _0x64ff28={'include':[{'model':db[_0x96ab('0x45')],'as':_0x96ab('0x46')},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0x96ab('0x47')],'as':'mandatoryDispositionPause'}]},_0x5763f1={},_0x921f33={'count':0x0,'rows':[]};var _0x4e2775=_[_0x96ab('0x48')](db[_0x96ab('0x49')][_0x96ab('0x4a')],function(_0x30c8b7){return{'name':_0x30c8b7[_0x96ab('0x4b')],'type':_0x30c8b7['type'][_0x96ab('0x4c')]};});_0x5763f1['model']=_['map'](_0x4e2775,_0x96ab('0x42'));_0x5763f1['query']=_[_0x96ab('0x4d')](_0x50b24c[_0x96ab('0x4e')]);_0x5763f1[_0x96ab('0x4f')]=_[_0x96ab('0x50')](_0x5763f1[_0x96ab('0x51')],_0x5763f1[_0x96ab('0x4e')]);_0x64ff28['attributes']=_[_0x96ab('0x50')](_0x5763f1['model'],qs[_0x96ab('0x52')](_0x50b24c[_0x96ab('0x4e')]['fields']));_0x64ff28['attributes']=_0x64ff28[_0x96ab('0x53')][_0x96ab('0x54')]?_0x64ff28['attributes']:_0x5763f1['model'];if(!_0x50b24c[_0x96ab('0x4e')]['hasOwnProperty']('nolimit')){_0x64ff28[_0x96ab('0x36')]=qs[_0x96ab('0x36')](_0x50b24c[_0x96ab('0x4e')][_0x96ab('0x36')]);_0x64ff28[_0x96ab('0x33')]=qs[_0x96ab('0x33')](_0x50b24c[_0x96ab('0x4e')][_0x96ab('0x33')]);}_0x64ff28['order']=qs[_0x96ab('0x55')](_0x50b24c[_0x96ab('0x4e')][_0x96ab('0x55')]);_0x64ff28['where']=qs[_0x96ab('0x4f')](_[_0x96ab('0x56')](_0x50b24c[_0x96ab('0x4e')],_0x5763f1[_0x96ab('0x4f')]),_0x4e2775);if(_0x50b24c[_0x96ab('0x4e')][_0x96ab('0x57')]){_0x64ff28[_0x96ab('0x58')]=_[_0x96ab('0x59')](_0x64ff28[_0x96ab('0x58')],{'$or':_['map'](_0x4e2775,function(_0x403165){if(_0x403165[_0x96ab('0x5a')]!==_0x96ab('0x5b')){var _0x3423f3={};_0x3423f3[_0x403165['name']]={'$like':'%'+_0x50b24c[_0x96ab('0x4e')]['filter']+'%'};return _0x3423f3;}})});}_0x64ff28=_['merge']({},_0x64ff28,_0x50b24c[_0x96ab('0x5c')]);var _0x453be6={'where':_0x64ff28['where']};return db['MailAccount'][_0x96ab('0x35')](_0x453be6)[_0x96ab('0x24')](function(_0x2c6b0a){_0x921f33['count']=_0x2c6b0a;if(_0x50b24c[_0x96ab('0x4e')][_0x96ab('0x5d')]){_0x64ff28[_0x96ab('0x5e')]=[{'all':!![]}];}return db[_0x96ab('0x49')]['findAll'](_0x64ff28);})[_0x96ab('0x24')](function(_0x47e38c){_0x921f33['rows']=_0x47e38c;return _0x921f33;})['then'](respondWithFilteredResult(_0x3ee688,_0x64ff28))[_0x96ab('0x2e')](handleError(_0x3ee688,null));};exports[_0x96ab('0x5f')]=function(_0x2c6212,_0x5126d1){var _0x3c0892={'raw':![],'where':{'id':_0x2c6212[_0x96ab('0x60')]['id']},'include':[{'model':db[_0x96ab('0x45')],'as':'Imap'},{'model':db[_0x96ab('0x61')],'as':_0x96ab('0x62')},{'model':db[_0x96ab('0x47')],'as':_0x96ab('0x63')}]},_0x1be2d7={};_0x1be2d7[_0x96ab('0x51')]=_[_0x96ab('0x4d')](db['MailAccount']['rawAttributes']);_0x1be2d7['query']=_['keys'](_0x2c6212[_0x96ab('0x4e')]);_0x1be2d7[_0x96ab('0x4f')]=_[_0x96ab('0x50')](_0x1be2d7['model'],_0x1be2d7['query']);_0x3c0892[_0x96ab('0x53')]=_['intersection'](_0x1be2d7[_0x96ab('0x51')],qs[_0x96ab('0x52')](_0x2c6212[_0x96ab('0x4e')][_0x96ab('0x52')]));_0x3c0892[_0x96ab('0x53')]=_0x3c0892[_0x96ab('0x53')]['length']?_0x3c0892[_0x96ab('0x53')]:_0x1be2d7[_0x96ab('0x51')];if(_0x2c6212[_0x96ab('0x4e')][_0x96ab('0x5d')]){_0x3c0892[_0x96ab('0x5e')]=[{'all':!![]}];}_0x3c0892=_[_0x96ab('0x59')]({},_0x3c0892,_0x2c6212['options']);return db['MailAccount']['find'](_0x3c0892)[_0x96ab('0x24')](handleEntityNotFound(_0x5126d1,null))[_0x96ab('0x24')](respondWithResult(_0x5126d1,null))['catch'](handleError(_0x5126d1,null));};exports[_0x96ab('0x3c')]=function(_0x4118aa,_0xc599af){if(_0x4118aa[_0x96ab('0x64')]['id']){delete _0x4118aa[_0x96ab('0x64')]['id'];}return db['MailAccount']['find']({'where':{'id':_0x4118aa['params']['id']},'include':[{'model':db[_0x96ab('0x45')],'as':'Imap'},{'model':db[_0x96ab('0x61')],'as':_0x96ab('0x62')},{'model':db[_0x96ab('0x47')],'as':_0x96ab('0x63')}]})['then'](handleEntityNotFound(_0xc599af,null))[_0x96ab('0x24')](saveUpdates(_0x4118aa['body'],null))['then'](function(_0x288990){if(_0x288990&&_0x4118aa[_0x96ab('0x64')][_0x96ab('0x46')]){return db['MailServerIn'][_0x96ab('0x3c')](_0x4118aa['body'][_0x96ab('0x46')],{'where':{'MailAccountId':_0x288990['id']}})['then'](function(){return _0x288990;});}return _0x288990;})[_0x96ab('0x24')](function(_0x5b2ea8){if(_0x5b2ea8&&_0x4118aa['body'][_0x96ab('0x62')]){return db[_0x96ab('0x61')]['update'](_0x4118aa['body'][_0x96ab('0x62')],{'where':{'MailAccountId':_0x5b2ea8['id']}})[_0x96ab('0x24')](function(){return _0x5b2ea8;});}return _0x5b2ea8;})[_0x96ab('0x24')](respondWithResult(_0xc599af,null))['catch'](handleError(_0xc599af,null));};exports['describe']=function(_0x2fca87,_0x5d9178){return db[_0x96ab('0x49')][_0x96ab('0x65')]()['then'](respondWithResult(_0x5d9178,null))[_0x96ab('0x2e')](handleError(_0x5d9178,null));};exports['addDisposition']=function(_0x2f462c,_0x33814c,_0x30d6c6){if(_0x2f462c[_0x96ab('0x64')]['id']){delete _0x2f462c[_0x96ab('0x64')]['id'];}return db['MailAccount'][_0x96ab('0x66')]({'where':{'id':_0x2f462c[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x33814c,null))[_0x96ab('0x24')](function(_0x30fc16){if(_0x30fc16){_0x2f462c['body']['MailAccountId']=_0x30fc16['id'];return db[_0x96ab('0x67')][_0x96ab('0x68')](_0x2f462c['body']);}})[_0x96ab('0x24')](respondWithResult(_0x33814c,null))['catch'](handleError(_0x33814c,null));};exports[_0x96ab('0x69')]=function(_0x910430,_0x509fb7,_0x2d8b80){var _0x148076={'raw':![],'where':{}};var _0x107ed4={};var _0x2840d5={'count':0x0,'rows':[]};return db[_0x96ab('0x49')][_0x96ab('0x6a')]({'where':{'id':_0x910430[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x509fb7,null))[_0x96ab('0x24')](function(_0x2ef977){if(_0x2ef977){_0x107ed4[_0x96ab('0x51')]=_[_0x96ab('0x4d')](db[_0x96ab('0x67')][_0x96ab('0x4a')]);_0x107ed4[_0x96ab('0x4e')]=_[_0x96ab('0x4d')](_0x910430[_0x96ab('0x4e')]);_0x107ed4[_0x96ab('0x4f')]=_[_0x96ab('0x50')](_0x107ed4[_0x96ab('0x51')],_0x107ed4['query']);_0x148076[_0x96ab('0x53')]=_[_0x96ab('0x50')](_0x107ed4[_0x96ab('0x51')],qs[_0x96ab('0x52')](_0x910430['query'][_0x96ab('0x52')]));_0x148076[_0x96ab('0x53')]=_0x148076[_0x96ab('0x53')][_0x96ab('0x54')]?_0x148076[_0x96ab('0x53')]:_0x107ed4[_0x96ab('0x51')];if(!_0x910430[_0x96ab('0x4e')][_0x96ab('0x6b')]('nolimit')){_0x148076[_0x96ab('0x36')]=qs['limit'](_0x910430['query'][_0x96ab('0x36')]);_0x148076[_0x96ab('0x33')]=qs[_0x96ab('0x33')](_0x910430[_0x96ab('0x4e')][_0x96ab('0x33')]);}_0x148076[_0x96ab('0x6c')]=qs[_0x96ab('0x55')](_0x910430[_0x96ab('0x4e')][_0x96ab('0x55')]);_0x148076[_0x96ab('0x58')]=qs[_0x96ab('0x4f')](_[_0x96ab('0x56')](_0x910430[_0x96ab('0x4e')],_0x107ed4[_0x96ab('0x4f')]));_0x148076[_0x96ab('0x58')][_0x96ab('0x6d')]=_0x2ef977['id'];if(_0x910430[_0x96ab('0x4e')][_0x96ab('0x57')]){_0x148076['where']=_[_0x96ab('0x59')](_0x148076[_0x96ab('0x58')],{'$or':_['map'](_0x148076[_0x96ab('0x53')],function(_0x565064){var _0x5c31db={};_0x5c31db[_0x565064]={'$like':'%'+_0x910430[_0x96ab('0x4e')]['filter']+'%'};return _0x5c31db;})});}_0x148076=_[_0x96ab('0x59')]({},_0x148076,_0x910430[_0x96ab('0x5c')]);return db[_0x96ab('0x67')][_0x96ab('0x35')]({'where':_0x148076[_0x96ab('0x58')]})[_0x96ab('0x24')](function(_0x153781){_0x2840d5[_0x96ab('0x35')]=_0x153781;if(_0x910430[_0x96ab('0x4e')][_0x96ab('0x5d')]){_0x148076['include']=[{'all':!![]}];}return db['Disposition'][_0x96ab('0x6e')](_0x148076);})[_0x96ab('0x24')](function(_0x9d55c){_0x2840d5[_0x96ab('0x6f')]=_0x9d55c;return _0x2840d5;});}})[_0x96ab('0x24')](respondWithFilteredResult(_0x509fb7,_0x148076))[_0x96ab('0x2e')](handleError(_0x509fb7,null));};exports[_0x96ab('0x70')]=function(_0x48d036,_0x2ef0b4,_0x1e02e5){return db[_0x96ab('0x49')][_0x96ab('0x66')]({'where':{'id':_0x48d036[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x2ef0b4,null))[_0x96ab('0x24')](function(_0x45124c){if(_0x45124c){return _0x45124c['removeDispositions'](_0x48d036[_0x96ab('0x4e')][_0x96ab('0x71')]);}})['then'](respondWithStatusCode(_0x2ef0b4,null))[_0x96ab('0x2e')](handleError(_0x2ef0b4,null));};exports[_0x96ab('0x72')]=function(_0x5818ce,_0x3cf3ee,_0x42c9b0){if(_0x5818ce[_0x96ab('0x64')]['id']){delete _0x5818ce[_0x96ab('0x64')]['id'];}return db['MailAccount']['find']({'where':{'id':_0x5818ce['params']['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x3cf3ee,null))[_0x96ab('0x24')](function(_0x1cdd2f){if(_0x1cdd2f){_0x5818ce[_0x96ab('0x64')]['MailAccountId']=_0x1cdd2f['id'];return db[_0x96ab('0x73')][_0x96ab('0x68')](_0x5818ce['body']);}})['then'](respondWithResult(_0x3cf3ee,null))[_0x96ab('0x2e')](handleError(_0x3cf3ee,null));};exports[_0x96ab('0x74')]=function(_0x2fbce7,_0x3ee80c,_0x20ee76){var _0x504e46={'raw':![],'where':{}};var _0x72c365={};var _0x38e37f={'count':0x0,'rows':[]};return db[_0x96ab('0x49')][_0x96ab('0x6a')]({'where':{'id':_0x2fbce7[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x3ee80c,null))[_0x96ab('0x24')](function(_0x467661){if(_0x467661){_0x72c365[_0x96ab('0x51')]=_[_0x96ab('0x4d')](db[_0x96ab('0x73')][_0x96ab('0x4a')]);_0x72c365[_0x96ab('0x4e')]=_[_0x96ab('0x4d')](_0x2fbce7[_0x96ab('0x4e')]);_0x72c365[_0x96ab('0x4f')]=_[_0x96ab('0x50')](_0x72c365[_0x96ab('0x51')],_0x72c365[_0x96ab('0x4e')]);_0x504e46[_0x96ab('0x53')]=_[_0x96ab('0x50')](_0x72c365[_0x96ab('0x51')],qs[_0x96ab('0x52')](_0x2fbce7['query'][_0x96ab('0x52')]));_0x504e46[_0x96ab('0x53')]=_0x504e46[_0x96ab('0x53')][_0x96ab('0x54')]?_0x504e46[_0x96ab('0x53')]:_0x72c365[_0x96ab('0x51')];if(!_0x2fbce7[_0x96ab('0x4e')][_0x96ab('0x6b')]('nolimit')){_0x504e46[_0x96ab('0x36')]=qs[_0x96ab('0x36')](_0x2fbce7[_0x96ab('0x4e')][_0x96ab('0x36')]);_0x504e46[_0x96ab('0x33')]=qs[_0x96ab('0x33')](_0x2fbce7['query'][_0x96ab('0x33')]);}_0x504e46[_0x96ab('0x6c')]=qs[_0x96ab('0x55')](_0x2fbce7[_0x96ab('0x4e')][_0x96ab('0x55')]);_0x504e46[_0x96ab('0x58')]=qs['filters'](_[_0x96ab('0x56')](_0x2fbce7['query'],_0x72c365[_0x96ab('0x4f')]));_0x504e46[_0x96ab('0x58')][_0x96ab('0x6d')]=_0x467661['id'];if(_0x2fbce7[_0x96ab('0x4e')][_0x96ab('0x57')]){_0x504e46['where']=_[_0x96ab('0x59')](_0x504e46[_0x96ab('0x58')],{'$or':_[_0x96ab('0x48')](_0x504e46['attributes'],function(_0x4841c8){var _0x1a0fde={};_0x1a0fde[_0x4841c8]={'$like':'%'+_0x2fbce7[_0x96ab('0x4e')][_0x96ab('0x57')]+'%'};return _0x1a0fde;})});}_0x504e46=_[_0x96ab('0x59')]({},_0x504e46,_0x2fbce7[_0x96ab('0x5c')]);return db[_0x96ab('0x73')][_0x96ab('0x35')]({'where':_0x504e46[_0x96ab('0x58')]})['then'](function(_0x581dc7){_0x38e37f[_0x96ab('0x35')]=_0x581dc7;if(_0x2fbce7[_0x96ab('0x4e')][_0x96ab('0x5d')]){_0x504e46['include']=[{'all':!![]}];}return db[_0x96ab('0x73')][_0x96ab('0x6e')](_0x504e46);})['then'](function(_0x7d54){_0x38e37f['rows']=_0x7d54;return _0x38e37f;});}})['then'](respondWithFilteredResult(_0x3ee80c,_0x504e46))[_0x96ab('0x2e')](handleError(_0x3ee80c,null));};exports[_0x96ab('0x75')]=function(_0x20c889,_0x205335,_0x15d37c){return db[_0x96ab('0x49')][_0x96ab('0x66')]({'where':{'id':_0x20c889[_0x96ab('0x60')]['id']}})['then'](handleEntityNotFound(_0x205335,null))[_0x96ab('0x24')](function(_0x279426){if(_0x279426){return _0x279426[_0x96ab('0x75')](_0x20c889[_0x96ab('0x4e')][_0x96ab('0x71')]);}})[_0x96ab('0x24')](respondWithStatusCode(_0x205335,null))[_0x96ab('0x2e')](handleError(_0x205335,null));};exports[_0x96ab('0x68')]=function(_0x13b1f9,_0x2f710b){var _0x2fc166={'name':_0x13b1f9['body']['name'],'key':_0x13b1f9['body'][_0x96ab('0x4c')],'email':_0x13b1f9['body'][_0x96ab('0x76')],'ListId':_0x13b1f9['body'][_0x96ab('0x77')],'active':!_[_0x96ab('0x78')](_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x79')])?_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x79')]:!![],'description':_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x7a')]||null,'Imap':{},'Smtp':{}};if(_[_0x96ab('0x78')](_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x7b')])){if(_0x13b1f9['body'][_0x96ab('0x7c')]){_0x2fc166[_0x96ab('0x46')]['user']=_0x2fc166[_0x96ab('0x62')]['user']=_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x7d')];_0x2fc166[_0x96ab('0x46')][_0x96ab('0x7e')]=_0x2fc166[_0x96ab('0x62')]['pass']=_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x7f')];}else{_0x2fc166[_0x96ab('0x46')][_0x96ab('0x80')]=_0x2fc166[_0x96ab('0x62')]['authentication']=![];}_0x2fc166[_0x96ab('0x46')][_0x96ab('0x81')]=_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x46')][_0x96ab('0x81')];_0x2fc166[_0x96ab('0x46')][_0x96ab('0x82')]=_0x13b1f9[_0x96ab('0x64')]['Imap']['port'];_0x2fc166[_0x96ab('0x62')]['host']=_0x13b1f9[_0x96ab('0x64')]['Smtp'][_0x96ab('0x81')];_0x2fc166[_0x96ab('0x62')][_0x96ab('0x82')]=_0x13b1f9[_0x96ab('0x64')]['Smtp']['port'];}else{_0x2fc166['Imap']['service']=_0x2fc166[_0x96ab('0x62')]['service']=_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x7b')];_0x2fc166[_0x96ab('0x46')][_0x96ab('0x83')]=_0x2fc166['Smtp'][_0x96ab('0x83')]=_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x7d')];_0x2fc166[_0x96ab('0x46')]['password']=_0x2fc166[_0x96ab('0x62')][_0x96ab('0x84')]=_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x7f')];}return db[_0x96ab('0x49')][_0x96ab('0x68')](_0x2fc166,{'include':[{'model':db[_0x96ab('0x61')],'as':_0x96ab('0x62')},{'model':db[_0x96ab('0x45')],'as':'Imap'}]})[_0x96ab('0x24')](function(_0x240bf7){var _0x92d87d=_0x13b1f9['user'][_0x96ab('0x3e')]({'plain':!![]});if(!_0x92d87d)throw new Error(_0x96ab('0x85'));if(_0x92d87d['role']===_0x96ab('0x83')){var _0x5e6ea6=_0x240bf7[_0x96ab('0x3e')]({'plain':!![]});return db[_0x96ab('0x86')][_0x96ab('0x66')]({'where':{'name':'MailAccounts','userProfileId':_0x92d87d['userProfileId']},'raw':!![]})['then'](function(_0x75f260){if(_0x75f260&&_0x75f260[_0x96ab('0x87')]===0x0){return db[_0x96ab('0x40')]['create']({'name':_0x5e6ea6[_0x96ab('0x42')],'resourceId':_0x5e6ea6['id'],'type':_0x75f260[_0x96ab('0x42')],'sectionId':_0x75f260['id']},{})[_0x96ab('0x24')](function(){return _0x240bf7;});}else{return _0x240bf7;}})[_0x96ab('0x2e')](function(_0x4b525c){logger[_0x96ab('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4b525c);throw _0x4b525c;});}return _0x240bf7;})[_0x96ab('0x24')](respondWithResult(_0x2f710b,0xc9))['catch'](handleError(_0x2f710b,null));};exports[_0x96ab('0x88')]=function(_0xfac7d0,_0x1c77f3,_0x5cdcd9){return db[_0x96ab('0x49')][_0x96ab('0x6a')]({'where':{'id':_0xfac7d0['params']['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x1c77f3,null))[_0x96ab('0x24')](function(_0x280066){if(_0x280066){return _0x280066[_0x96ab('0x88')]();}return null;})[_0x96ab('0x24')](respondWithResult(_0x1c77f3,null))[_0x96ab('0x2e')](handleError(_0x1c77f3,null));};exports[_0x96ab('0x89')]=function(_0x4f511e,_0xe7cf2d,_0x3a4920){if(_0x4f511e['body']['id']){delete _0x4f511e[_0x96ab('0x64')]['id'];}return db[_0x96ab('0x49')]['find']({'where':{'id':_0x4f511e[_0x96ab('0x60')]['id']}})['then'](handleEntityNotFound(_0xe7cf2d,null))[_0x96ab('0x24')](function(_0xc7f225){if(_0xc7f225){_0x4f511e[_0x96ab('0x64')]['MailAccountId']=_0xc7f225['id'];return db[_0x96ab('0x45')][_0x96ab('0x68')](_0x4f511e[_0x96ab('0x64')]);}})[_0x96ab('0x24')](respondWithResult(_0xe7cf2d,null))[_0x96ab('0x2e')](handleError(_0xe7cf2d,null));};exports[_0x96ab('0x8a')]=function(_0x244874,_0x48d378,_0x3a2845){return db[_0x96ab('0x49')][_0x96ab('0x6a')]({'where':{'id':_0x244874[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x48d378,null))[_0x96ab('0x24')](function(_0x597616){if(_0x597616){return _0x597616['setImap'](null);}return null;})[_0x96ab('0x24')](respondWithStatusCode(_0x48d378,null))[_0x96ab('0x2e')](handleError(_0x48d378,null));};exports[_0x96ab('0x8b')]=function(_0x7d0f3c,_0x2cee1f,_0x568a4d){return db[_0x96ab('0x49')][_0x96ab('0x6a')]({'where':{'id':_0x7d0f3c[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x2cee1f,null))['then'](function(_0x391218){if(_0x391218){return _0x391218[_0x96ab('0x8b')]();}return null;})[_0x96ab('0x24')](respondWithResult(_0x2cee1f,null))[_0x96ab('0x2e')](handleError(_0x2cee1f,null));};exports[_0x96ab('0x8c')]=function(_0xd8c64c,_0x4931f6,_0x523369){if(_0xd8c64c[_0x96ab('0x64')]['id']){delete _0xd8c64c['body']['id'];}return db[_0x96ab('0x49')][_0x96ab('0x66')]({'where':{'id':_0xd8c64c[_0x96ab('0x60')]['id']}})['then'](handleEntityNotFound(_0x4931f6,null))['then'](function(_0x36947e){if(_0x36947e){_0xd8c64c[_0x96ab('0x64')][_0x96ab('0x6d')]=_0x36947e['id'];return db[_0x96ab('0x61')][_0x96ab('0x68')](_0xd8c64c['body']);}})[_0x96ab('0x24')](respondWithResult(_0x4931f6,null))[_0x96ab('0x2e')](handleError(_0x4931f6,null));};exports[_0x96ab('0x8d')]=function(_0x5cf3d4,_0x3dcd24,_0xbb76f7){return db[_0x96ab('0x49')]['findOne']({'where':{'id':_0x5cf3d4['params']['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x3dcd24,null))['then'](function(_0x136e96){if(_0x136e96){return _0x136e96[_0x96ab('0x8e')](null);}return null;})[_0x96ab('0x24')](respondWithStatusCode(_0x3dcd24,null))['catch'](handleError(_0x3dcd24,null));};exports[_0x96ab('0x8f')]=function(_0x18ab0,_0x4bd0c0,_0x332c6a){return db[_0x96ab('0x90')][_0x96ab('0x66')]({'where':{'id':_0x18ab0[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x4bd0c0,null))['then'](function(_0x795d06){if(_0x795d06){return _0x795d06['addInteraction'](_0x18ab0['body'][_0x96ab('0x71')],_[_0x96ab('0x91')](_0x18ab0[_0x96ab('0x64')],['ids','id'])||{});}})[_0x96ab('0x24')](respondWithResult(_0x4bd0c0,null))[_0x96ab('0x2e')](handleError(_0x4bd0c0,null));};exports[_0x96ab('0x92')]=function(_0x28285c,_0x4c00d5,_0x18fa88){var _0x3d78fa={'raw':![],'where':{}};var _0x31d8c1={};var _0x50ff47={'count':0x0,'rows':[]};return db['MailAccount'][_0x96ab('0x6a')]({'where':{'id':_0x28285c[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x4c00d5,null))[_0x96ab('0x24')](function(_0x5e3bbc){if(_0x5e3bbc){_0x31d8c1['model']=_['keys'](db[_0x96ab('0x90')][_0x96ab('0x4a')]);_0x31d8c1['query']=_[_0x96ab('0x4d')](_0x28285c[_0x96ab('0x4e')]);_0x31d8c1[_0x96ab('0x4f')]=_[_0x96ab('0x50')](_0x31d8c1['model'],_0x31d8c1['query']);_0x3d78fa[_0x96ab('0x53')]=_[_0x96ab('0x50')](_0x31d8c1[_0x96ab('0x51')],qs[_0x96ab('0x52')](_0x28285c['query']['fields']));_0x3d78fa['attributes']=_0x3d78fa[_0x96ab('0x53')][_0x96ab('0x54')]?_0x3d78fa['attributes']:_0x31d8c1[_0x96ab('0x51')];if(!_0x28285c[_0x96ab('0x4e')][_0x96ab('0x6b')](_0x96ab('0x93'))){_0x3d78fa[_0x96ab('0x36')]=qs['limit'](_0x28285c['query'][_0x96ab('0x36')]);_0x3d78fa[_0x96ab('0x33')]=qs[_0x96ab('0x33')](_0x28285c[_0x96ab('0x4e')][_0x96ab('0x33')]);}_0x3d78fa[_0x96ab('0x6c')]=qs[_0x96ab('0x55')](_0x28285c[_0x96ab('0x4e')][_0x96ab('0x55')]);_0x3d78fa[_0x96ab('0x58')]=qs['filters'](_[_0x96ab('0x56')](_0x28285c['query'],_0x31d8c1['filters']));_0x3d78fa[_0x96ab('0x58')][_0x96ab('0x6d')]=_0x5e3bbc['id'];if(_0x28285c[_0x96ab('0x4e')][_0x96ab('0x57')]){_0x3d78fa['where']=_[_0x96ab('0x59')](_0x3d78fa[_0x96ab('0x58')],{'$or':_['map'](_0x3d78fa[_0x96ab('0x53')],function(_0x460704){var _0x1f91fe={};_0x1f91fe[_0x460704]={'$like':'%'+_0x28285c['query'][_0x96ab('0x57')]+'%'};return _0x1f91fe;})});}_0x3d78fa=_[_0x96ab('0x59')]({},_0x3d78fa,_0x28285c[_0x96ab('0x5c')]);return db[_0x96ab('0x90')]['count']({'where':_0x3d78fa[_0x96ab('0x58')]})[_0x96ab('0x24')](function(_0x41f812){_0x50ff47[_0x96ab('0x35')]=_0x41f812;if(_0x28285c[_0x96ab('0x4e')][_0x96ab('0x5d')]){_0x3d78fa[_0x96ab('0x5e')]=[{'model':db[_0x96ab('0x94')],'as':_0x96ab('0x95'),'required':![]},{'model':db['User'],'as':_0x96ab('0x96'),'attributes':[_0x96ab('0x42'),_0x96ab('0x97'),_0x96ab('0x98')],'required':![]},{'model':db['Tag'],'as':_0x96ab('0x99'),'attributes':['id',_0x96ab('0x42'),_0x96ab('0x9a')],'where':_0x28285c[_0x96ab('0x4e')][_0x96ab('0x9b')]?{'id':_0x28285c[_0x96ab('0x4e')]['tag']}:undefined,'required':_0x28285c[_0x96ab('0x4e')][_0x96ab('0x9b')]?!![]:![]}];}return db[_0x96ab('0x90')][_0x96ab('0x6e')](_0x3d78fa);})['then'](function(_0x1df837){_0x50ff47[_0x96ab('0x6f')]=_0x1df837;return _0x50ff47;});}})['then'](respondWithFilteredResult(_0x4c00d5,_0x3d78fa))[_0x96ab('0x2e')](handleError(_0x4c00d5,null));};exports['addApplications']=function(_0x2f3573,_0x390533,_0x2e7823){return db[_0x96ab('0x49')]['findOne']({'where':{'id':_0x2f3573['params']['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x390533,null))['then'](function(_0x106b91){if(_0x106b91){return db[_0x96ab('0x9c')][_0x96ab('0x9d')](function(_0x4c40c1){return db[_0x96ab('0x9e')][_0x96ab('0x3d')]({'where':{'MailAccountId':_0x2f3573[_0x96ab('0x60')]['id']},'transaction':_0x4c40c1})[_0x96ab('0x24')](function(_0x228f2b){var _0x53c43b=_[_0x96ab('0x48')](_0x2f3573['body'],function(_0x274596){_0x274596['MailAccountId']=_0x2f3573['params']['id'];return _0x274596;});return db[_0x96ab('0x9e')][_0x96ab('0x9f')](_0x53c43b,{'transaction':_0x4c40c1});});})[_0x96ab('0x24')](function(){return db[_0x96ab('0x9e')][_0x96ab('0xa0')]({'where':{'MailAccountId':_0x2f3573[_0x96ab('0x60')]['id']},'order':'priority'});});}})[_0x96ab('0x24')](respondWithResult(_0x390533,null))['catch'](handleError(_0x390533,null));};exports[_0x96ab('0xa1')]=function(_0x3e8e7b,_0x21ecf4,_0x326ea6){var _0x24b8b4={};var _0x29101f={};var _0x5488f0;var _0x9c506b;return db[_0x96ab('0x49')][_0x96ab('0x6a')]({'where':{'id':_0x3e8e7b['params']['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x21ecf4,null))[_0x96ab('0x24')](function(_0x53a004){if(_0x53a004){_0x5488f0=_0x53a004;_0x29101f[_0x96ab('0x51')]=_['keys'](db[_0x96ab('0x9e')][_0x96ab('0x4a')]);_0x29101f['query']=_[_0x96ab('0x4d')](_0x3e8e7b['query']);_0x29101f[_0x96ab('0x4f')]=_[_0x96ab('0x50')](_0x29101f[_0x96ab('0x51')],_0x29101f[_0x96ab('0x4e')]);_0x24b8b4[_0x96ab('0x53')]=_['intersection'](_0x29101f[_0x96ab('0x51')],qs['fields'](_0x3e8e7b[_0x96ab('0x4e')][_0x96ab('0x52')]));_0x24b8b4['attributes']=_0x24b8b4['attributes'][_0x96ab('0x54')]?_0x24b8b4[_0x96ab('0x53')]:_0x29101f[_0x96ab('0x51')];_0x24b8b4[_0x96ab('0x6c')]=qs[_0x96ab('0x55')](_0x3e8e7b[_0x96ab('0x4e')][_0x96ab('0x55')]);_0x24b8b4[_0x96ab('0x58')]=qs[_0x96ab('0x4f')](_[_0x96ab('0x56')](_0x3e8e7b[_0x96ab('0x4e')],_0x29101f[_0x96ab('0x4f')]));if(_0x3e8e7b[_0x96ab('0x4e')][_0x96ab('0x57')]){_0x24b8b4['where']=_[_0x96ab('0x59')](_0x24b8b4['where'],{'$or':_[_0x96ab('0x48')](_0x24b8b4[_0x96ab('0x53')],function(_0x4cfc43){var _0xfa479c={};_0xfa479c[_0x4cfc43]={'$like':'%'+_0x3e8e7b[_0x96ab('0x4e')]['filter']+'%'};return _0xfa479c;})});}_0x24b8b4=_['merge']({},_0x24b8b4,_0x3e8e7b['options']);return _0x5488f0[_0x96ab('0xa1')](_0x24b8b4);}})[_0x96ab('0x24')](function(_0x1500d6){if(_0x1500d6){_0x9c506b=_0x1500d6['length'];if(!_0x3e8e7b[_0x96ab('0x4e')][_0x96ab('0x6b')]('nolimit')){_0x24b8b4['limit']=qs[_0x96ab('0x36')](_0x3e8e7b[_0x96ab('0x4e')]['limit']);_0x24b8b4['offset']=qs[_0x96ab('0x33')](_0x3e8e7b[_0x96ab('0x4e')][_0x96ab('0x33')]);}return _0x5488f0[_0x96ab('0xa1')](_0x24b8b4);}})[_0x96ab('0x24')](function(_0x5d6980){if(_0x5d6980){return _0x5d6980?{'count':_0x9c506b,'rows':_0x5d6980}:null;}})[_0x96ab('0x24')](respondWithResult(_0x21ecf4,null))[_0x96ab('0x2e')](handleError(_0x21ecf4,null));};exports[_0x96ab('0xa2')]=function(_0x39f50b,_0x315d5a,_0x4d0a6d){var _0x516df6={'raw':!![],'where':{}};var _0xc93617={};var _0x20f6d0={'count':0x0,'rows':[]};return db[_0x96ab('0x49')]['findOne']({'where':{'id':_0x39f50b[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x315d5a,null))['then'](function(_0x236481){if(_0x236481){_0xc93617[_0x96ab('0x51')]=_[_0x96ab('0x4d')](db[_0x96ab('0xa3')][_0x96ab('0x4a')]);_0xc93617['query']=_[_0x96ab('0x4d')](_0x39f50b[_0x96ab('0x4e')]);_0xc93617['filters']=_[_0x96ab('0x50')](_0xc93617[_0x96ab('0x51')],_0xc93617[_0x96ab('0x4e')]);_0x516df6[_0x96ab('0x53')]=_[_0x96ab('0x50')](_0xc93617[_0x96ab('0x51')],qs[_0x96ab('0x52')](_0x39f50b[_0x96ab('0x4e')][_0x96ab('0x52')]));_0x516df6['attributes']=_0x516df6[_0x96ab('0x53')]['length']?_0x516df6[_0x96ab('0x53')]:_0xc93617[_0x96ab('0x51')];if(!_0x39f50b['query']['hasOwnProperty'](_0x96ab('0x93'))){_0x516df6[_0x96ab('0x36')]=qs[_0x96ab('0x36')](_0x39f50b[_0x96ab('0x4e')]['limit']);_0x516df6['offset']=qs[_0x96ab('0x33')](_0x39f50b[_0x96ab('0x4e')][_0x96ab('0x33')]);}_0x516df6['order']=qs[_0x96ab('0x55')](_0x39f50b[_0x96ab('0x4e')][_0x96ab('0x55')]);_0x516df6[_0x96ab('0x58')]=qs[_0x96ab('0x4f')](_[_0x96ab('0x56')](_0x39f50b[_0x96ab('0x4e')],_0xc93617[_0x96ab('0x4f')]));_0x516df6['where'][_0x96ab('0x6d')]=_0x236481['id'];if(_0x39f50b['query'][_0x96ab('0x57')]){_0x516df6[_0x96ab('0x58')]=_['merge'](_0x516df6[_0x96ab('0x58')],{'$or':_[_0x96ab('0x48')](_0x516df6[_0x96ab('0x53')],function(_0x26c473){var _0x125eb9={};_0x125eb9[_0x26c473]={'$like':'%'+_0x39f50b[_0x96ab('0x4e')][_0x96ab('0x57')]+'%'};return _0x125eb9;})});}if(_0x39f50b[_0x96ab('0x4e')]['$gte']){var _0x121627=_0x39f50b[_0x96ab('0x4e')]['$gte'][_0x96ab('0xa4')](',');var _0x1db691={};_0x1db691[_0x121627[0x0]]={'$gte':moment(_0x121627[0x1])[_0x96ab('0xa5')]('YYYY-MM-DD\x20HH:mm:ss')};_0x516df6[_0x96ab('0x58')]=_[_0x96ab('0x59')](_0x516df6[_0x96ab('0x58')],_0x1db691);}_0x516df6=_[_0x96ab('0x59')]({},_0x516df6,_0x39f50b[_0x96ab('0x5c')]);return db[_0x96ab('0xa3')][_0x96ab('0x35')]({'where':_0x516df6[_0x96ab('0x58')]})[_0x96ab('0x24')](function(_0xbe472){_0x20f6d0[_0x96ab('0x35')]=_0xbe472;if(_0x39f50b[_0x96ab('0x4e')][_0x96ab('0x5d')]){_0x516df6[_0x96ab('0x5e')]=[{'all':!![]}];}return db[_0x96ab('0xa3')][_0x96ab('0x6e')](_0x516df6);})[_0x96ab('0x24')](function(_0x2e4869){if(_0x39f50b[_0x96ab('0x4e')][_0x96ab('0xa6')]==='true'){for(var _0x58a5fe=0x0;_0x58a5fe<_0x2e4869[_0x96ab('0x54')];_0x58a5fe++){_0x2e4869[_0x58a5fe]['body']=juice(_0x2e4869[_0x58a5fe][_0x96ab('0x64')]);}}_0x20f6d0[_0x96ab('0x6f')]=_0x2e4869;return _0x20f6d0;});}})['then'](respondWithFilteredResult(_0x315d5a,_0x516df6))[_0x96ab('0x2e')](handleError(_0x315d5a,null));};exports[_0x96ab('0x43')]=function(_0x2aab26,_0xea5e90,_0x50c9df){var _0x3bbcdc,_0x5dcd1c={},_0x5698b8;if(_0x2aab26['body']['to']){_0x5698b8=_0x2aab26[_0x96ab('0x64')]['to'][_0x96ab('0xa4')](',')[0x0];}return db['MailAccount'][_0x96ab('0x66')]({'where':{'id':_0x2aab26[_0x96ab('0x60')]['id']},'include':[{'model':db[_0x96ab('0xa7')],'as':_0x96ab('0xa8'),'include':[{'model':db['CmContact'],'as':_0x96ab('0xa9'),'where':{'email':_0x5698b8},'limit':0x1,'order':[[_0x96ab('0xaa'),_0x96ab('0xab')]]}]},{'model':db[_0x96ab('0x61')],'as':_0x96ab('0x62'),'raw':!![]}]})[_0x96ab('0x24')](handleEntityNotFound(_0xea5e90,null))[_0x96ab('0x24')](function(_0x33d270){if(_0x33d270){_0x3bbcdc=_0x33d270;if(_0x33d270['Smtp']){if(_[_0x96ab('0x78')](_0x2aab26[_0x96ab('0x64')][_0x96ab('0xac')])){_0x2aab26['body'][_0x96ab('0xac')]=util[_0x96ab('0xa5')](_0x96ab('0xad'),_0x33d270['name'],_0x33d270[_0x96ab('0x76')]||_0x33d270[_0x96ab('0x62')][_0x96ab('0x83')]);}if(_0x2aab26[_0x96ab('0x64')][_0x96ab('0xae')]&&_0x2aab26['body'][_0x96ab('0xae')][_0x96ab('0x54')]){for(var _0x41caee=0x0;_0x41caee<_0x2aab26[_0x96ab('0x64')][_0x96ab('0xae')][_0x96ab('0x54')];_0x41caee+=0x1){_0x2aab26[_0x96ab('0x64')][_0x96ab('0xae')][_0x41caee]={'filename':_0x2aab26['body']['attachments'][_0x41caee][_0x96ab('0x42')],'path':path[_0x96ab('0xaf')](config['root'],_0x96ab('0xb0'),_0x2aab26[_0x96ab('0x64')][_0x96ab('0xae')][_0x41caee][_0x96ab('0xb1')])};}}var _0x301740={'tls':{'rejectUnauthorized':![]}};if(_[_0x96ab('0x78')](_0x33d270[_0x96ab('0x62')]['service'])){if(_0x33d270['Smtp'][_0x96ab('0x80')]){_0x301740[_0x96ab('0xb2')]={'user':_0x33d270['Smtp'][_0x96ab('0x83')],'pass':_0x33d270['Smtp'][_0x96ab('0x84')]};}_0x301740[_0x96ab('0x81')]=_0x33d270[_0x96ab('0x62')]['host'];_0x301740['port']=_0x33d270[_0x96ab('0x62')][_0x96ab('0x82')];_0x301740[_0x96ab('0xb3')]=_0x33d270[_0x96ab('0x62')][_0x96ab('0xb3')];}else{_0x301740['service']=_0x33d270['Smtp'][_0x96ab('0xb4')];_0x301740[_0x96ab('0xb2')]={'user':_0x33d270[_0x96ab('0x62')][_0x96ab('0x83')],'pass':_0x33d270['Smtp']['pass']};}return respondWithRpcPromise(_0x96ab('0xb5'),_0x96ab('0xb6'),{'account':_0x301740,'message':_0x2aab26[_0x96ab('0x64')]});}else{throw new Error(_0x96ab('0xb7'));}}})[_0x96ab('0x24')](function(_0x2e1d21){if(_0x2e1d21){_0x5dcd1c=_0x2e1d21;if(_0x3bbcdc['List']){if(_0x3bbcdc[_0x96ab('0xa8')][_0x96ab('0xa9')][_0x96ab('0x54')]){return _0x3bbcdc[_0x96ab('0xa8')][_0x96ab('0xa9')][0x0];}else{return db['CmContact'][_0x96ab('0x68')](_[_0x96ab('0x1e')](_0x2aab26[_0x96ab('0x64')],{'firstName':_0x2aab26['body']['to'],'email':_0x2aab26[_0x96ab('0x64')]['to'],'phone':_0x2aab26[_0x96ab('0x64')]['to'],'ListId':_0x3bbcdc[_0x96ab('0x77')]}));}}else{throw new Error('List\x20not\x20found');}}})[_0x96ab('0x24')](function(_0x57f1cf){if(_0x57f1cf){var _0x4a00ff={'UserId':_0x2aab26[_0x96ab('0x83')]['id'],'ContactId':_0x57f1cf['id'],'MailAccountId':_0x3bbcdc['id'],'inReplyTo':_0x5dcd1c[_0x96ab('0xb8')],'to':_0x2aab26[_0x96ab('0x64')]['from'],'cc':_0x2aab26[_0x96ab('0x64')]['cc'],'subject':_0x2aab26[_0x96ab('0x64')][_0x96ab('0xb9')],'attach':_0x2aab26['body'][_0x96ab('0xba')],'firstMsgDirection':_0x96ab('0xbb'),'lastMsgAt':moment()[_0x96ab('0xa5')](_0x96ab('0xbc')),'lastMsgDirection':_0x96ab('0xbb'),'Messages':[_[_0x96ab('0x59')](_0x2aab26[_0x96ab('0x64')],{'messageId':_0x5dcd1c['messageId'],'sentAt':moment()['format'](_0x96ab('0xbc')),'read':!![],'MailAccountId':_0x3bbcdc['id'],'UserId':_0x2aab26['user']['id'],'ContactId':_0x57f1cf['id']})]};if(_0x2aab26['body'][_0x96ab('0xbd')]){_0x4a00ff=_[_0x96ab('0x59')](_0x4a00ff,_0x2aab26['body'][_0x96ab('0xbd')]);}return db[_0x96ab('0x90')]['create'](_0x4a00ff,{'include':[{'model':db[_0x96ab('0xa3')],'as':_0x96ab('0xbe')}]});}})[_0x96ab('0x24')](respondWithResult(_0xea5e90,null))[_0x96ab('0x2e')](handleError(_0xea5e90,null));};exports['verifySmtp']=function(_0x8e208b,_0x54b9ff,_0x3c35b7){return db['MailAccount'][_0x96ab('0x66')]({'where':{'id':_0x8e208b[_0x96ab('0x60')]['id']},'include':[{'model':db[_0x96ab('0x61')],'as':_0x96ab('0x62'),'raw':!![]}]})[_0x96ab('0x24')](handleEntityNotFound(_0x54b9ff,null))[_0x96ab('0x24')](function(_0xd747f8){if(_0xd747f8&&_0xd747f8[_0x96ab('0x62')]){var _0x1eaba5={'id':_0xd747f8['id'],'tls':{'rejectUnauthorized':![]}};if(_0xd747f8[_0x96ab('0x62')]['service']){_0x1eaba5['service']=_0xd747f8[_0x96ab('0x62')]['service'];}else{_0x1eaba5['host']=_0xd747f8[_0x96ab('0x62')][_0x96ab('0x81')];_0x1eaba5[_0x96ab('0x82')]=_0xd747f8['Smtp'][_0x96ab('0x82')];_0x1eaba5[_0x96ab('0xb3')]=_0xd747f8[_0x96ab('0x62')][_0x96ab('0xb3')];}if(_0xd747f8[_0x96ab('0x62')][_0x96ab('0x80')]){_0x1eaba5[_0x96ab('0xb2')]={'user':_0xd747f8[_0x96ab('0x62')][_0x96ab('0x83')],'pass':_0xd747f8['Smtp'][_0x96ab('0x84')]};}return respondWithRpcPromise(_0x96ab('0xbf'),_0x96ab('0xc0'),{'account':_0x1eaba5});}})['then'](respondWithResult(_0x54b9ff,null))[_0x96ab('0x2e')](handleError(_0x54b9ff,null));};exports[_0x96ab('0x3d')]=function(_0xc34886,_0x38af0d){return db[_0x96ab('0x49')][_0x96ab('0x66')]({'where':{'id':_0xc34886[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x38af0d,null))['then'](function(_0x35a27b){if(_0x35a27b&&_0x35a27b[_0x96ab('0xb4')]){throw new db[(_0x96ab('0xc1'))][(_0x96ab('0xc2'))](_0x96ab('0xc3'));}return _0x35a27b;})[_0x96ab('0x24')](removeEntity(_0x38af0d,null))[_0x96ab('0x2e')](handleError(_0x38af0d,null));};exports['addAgents']=function(_0x335edf,_0x380e53,_0x350867){return db[_0x96ab('0x49')][_0x96ab('0x66')]({'where':{'id':_0x335edf[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x380e53,null))[_0x96ab('0x24')](function(_0x210a0d){if(_0x210a0d){return _0x210a0d[_0x96ab('0xc4')](_0x335edf[_0x96ab('0x64')]['ids'],_['omit'](_0x335edf['body'],[_0x96ab('0x71'),'id'])||{})[_0x96ab('0xc5')](function(_0x432296){for(var _0x1b04ab=0x0;_0x1b04ab<_0x335edf[_0x96ab('0x64')]['ids']['length'];_0x1b04ab+=0x1){socket[_0x96ab('0xc6')](_0x96ab('0xc7'),{'UserId':Number(_0x335edf[_0x96ab('0x64')]['ids'][_0x1b04ab]),'MailAccountId':Number(_0x335edf[_0x96ab('0x60')]['id'])});}return _0x432296;});}})['then'](respondWithResult(_0x380e53,null))[_0x96ab('0x2e')](handleError(_0x380e53,null));};exports[_0x96ab('0xc8')]=function(_0xe23fc3,_0x59974e,_0x1cc29d){return db[_0x96ab('0x49')][_0x96ab('0x66')]({'where':{'id':_0xe23fc3['params']['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x59974e,null))[_0x96ab('0x24')](function(_0x2009ef){if(_0x2009ef){return _0x2009ef['removeAgents'](_0xe23fc3[_0x96ab('0x4e')][_0x96ab('0x71')])[_0x96ab('0x24')](function(){if(_['isArray'](_0xe23fc3['query'][_0x96ab('0x71')])){for(var _0x4c6444=0x0;_0x4c6444<_0xe23fc3['query'][_0x96ab('0x71')][_0x96ab('0x54')];_0x4c6444+=0x1){socket[_0x96ab('0xc6')](_0x96ab('0xc9'),{'UserId':Number(_0xe23fc3[_0x96ab('0x4e')][_0x96ab('0x71')][_0x4c6444]),'MailAccountId':Number(_0xe23fc3[_0x96ab('0x60')]['id'])});}}else{socket[_0x96ab('0xc6')](_0x96ab('0xc9'),{'UserId':Number(_0xe23fc3[_0x96ab('0x4e')][_0x96ab('0x71')]),'MailAccountId':Number(_0xe23fc3[_0x96ab('0x60')]['id'])});}});}})[_0x96ab('0x24')](respondWithStatusCode(_0x59974e,null))['catch'](handleError(_0x59974e,null));};exports['getAgents']=function(_0x44ca39,_0x577faa,_0x47cd5d){var _0x3320a5={};var _0x10b59f={};var _0x282d1f;var _0x2add2f;return db[_0x96ab('0x49')][_0x96ab('0x6a')]({'where':{'id':_0x44ca39['params']['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x577faa,null))[_0x96ab('0x24')](function(_0x262228){if(_0x262228){_0x282d1f=_0x262228;_0x10b59f[_0x96ab('0x51')]=_['keys'](db[_0x96ab('0xca')][_0x96ab('0x4a')]);_0x10b59f['query']=_[_0x96ab('0x4d')](_0x44ca39[_0x96ab('0x4e')]);_0x10b59f[_0x96ab('0x4f')]=_[_0x96ab('0x50')](_0x10b59f[_0x96ab('0x51')],_0x10b59f['query']);_0x3320a5['attributes']=_['intersection'](_0x10b59f[_0x96ab('0x51')],qs[_0x96ab('0x52')](_0x44ca39['query'][_0x96ab('0x52')]));_0x3320a5[_0x96ab('0x53')]=_0x3320a5['attributes'][_0x96ab('0x54')]?_0x3320a5[_0x96ab('0x53')]:_0x10b59f[_0x96ab('0x51')];_0x3320a5[_0x96ab('0x6c')]=qs[_0x96ab('0x55')](_0x44ca39[_0x96ab('0x4e')][_0x96ab('0x55')]);_0x3320a5[_0x96ab('0x58')]=qs[_0x96ab('0x4f')](_[_0x96ab('0x56')](_0x44ca39['query'],_0x10b59f[_0x96ab('0x4f')]));if(_0x44ca39[_0x96ab('0x4e')][_0x96ab('0x57')]){_0x3320a5['where']=_['merge'](_0x3320a5['where'],{'$or':_[_0x96ab('0x48')](_0x3320a5[_0x96ab('0x53')],function(_0x985332){var _0x1d7ba7={};_0x1d7ba7[_0x985332]={'$like':'%'+_0x44ca39[_0x96ab('0x4e')]['filter']+'%'};return _0x1d7ba7;})});}_0x3320a5=_[_0x96ab('0x59')]({},_0x3320a5,_0x44ca39['options']);return _0x282d1f[_0x96ab('0xcb')](_0x3320a5);}})[_0x96ab('0x24')](function(_0x3486d6){if(_0x3486d6){_0x2add2f=_0x3486d6[_0x96ab('0x54')];if(!_0x44ca39[_0x96ab('0x4e')][_0x96ab('0x6b')](_0x96ab('0x93'))){_0x3320a5['limit']=qs[_0x96ab('0x36')](_0x44ca39[_0x96ab('0x4e')][_0x96ab('0x36')]);_0x3320a5[_0x96ab('0x33')]=qs[_0x96ab('0x33')](_0x44ca39[_0x96ab('0x4e')][_0x96ab('0x33')]);}return _0x282d1f[_0x96ab('0xcb')](_0x3320a5);}})[_0x96ab('0x24')](function(_0x4ff8aa){if(_0x4ff8aa){return _0x4ff8aa?{'count':_0x2add2f,'rows':_0x4ff8aa}:null;}})[_0x96ab('0x24')](respondWithResult(_0x577faa,null))[_0x96ab('0x2e')](handleError(_0x577faa,null));};
\ No newline at end of file
index c14aed8..7891737 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17bb=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x3bad79,_0x3f547e){var _0x5bac97=function(_0x257dba){while(--_0x257dba){_0x3bad79['push'](_0x3bad79['shift']());}};_0x5bac97(++_0x3f547e);}(_0x17bb,0x80));var _0xb17b=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x17bb[_0x40a045];return _0x1a687c;};'use strict';var EventEmitter=require(_0xb17b('0x0'));var MailAccount=require(_0xb17b('0x1'))['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xb17b('0x2')](0x0);var events={'afterCreate':_0xb17b('0x3'),'afterUpdate':_0xb17b('0x4'),'afterDestroy':_0xb17b('0x5')};function emitEvent(_0x551f4f){return function(_0x5b4b1e,_0x2e9191,_0x1220a3){MailAccountEvents[_0xb17b('0x6')](_0x551f4f+':'+_0x5b4b1e['id'],_0x5b4b1e);MailAccountEvents[_0xb17b('0x6')](_0x551f4f,_0x5b4b1e);_0x1220a3(null);};}for(var e in events){if(events[_0xb17b('0x7')](e)){var event=events[e];MailAccount[_0xb17b('0x8')](e,emitEvent(event));}}module[_0xb17b('0x9')]=MailAccountEvents;
\ No newline at end of file
+var _0x9de8=['remove','emit','exports','events','MailAccount','setMaxListeners','update'];(function(_0x562c92,_0x3e518d){var _0x2cf254=function(_0x10e224){while(--_0x10e224){_0x562c92['push'](_0x562c92['shift']());}};_0x2cf254(++_0x3e518d);}(_0x9de8,0x88));var _0x89de=function(_0x49d429,_0xfed4ff){_0x49d429=_0x49d429-0x0;var _0x8d0597=_0x9de8[_0x49d429];return _0x8d0597;};'use strict';var EventEmitter=require(_0x89de('0x0'));var MailAccount=require('../../mysqldb')['db'][_0x89de('0x1')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x89de('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x89de('0x3'),'afterDestroy':_0x89de('0x4')};function emitEvent(_0x6d22bc){return function(_0xb5a4ca,_0x5275c7,_0x56aa33){MailAccountEvents[_0x89de('0x5')](_0x6d22bc+':'+_0xb5a4ca['id'],_0xb5a4ca);MailAccountEvents['emit'](_0x6d22bc,_0xb5a4ca);_0x56aa33(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailAccount['hook'](e,emitEvent(event));}}module[_0x89de('0x6')]=MailAccountEvents;
\ No newline at end of file
index 7831643..fd37cc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb710=['../../config/environment','./mailAccount.attributes','exports','MailAccount','mail_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb710,0x1e6));var _0x0b71=function(_0x560684,_0x4fe7fd){_0x560684=_0x560684-0x0;var _0x51ec93=_0xb710[_0x560684];return _0x51ec93;};'use strict';var _=require(_0x0b71('0x0'));var util=require(_0x0b71('0x1'));var logger=require(_0x0b71('0x2'))(_0x0b71('0x3'));var moment=require(_0x0b71('0x4'));var BPromise=require(_0x0b71('0x5'));var rp=require(_0x0b71('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0b71('0x7'));var config=require(_0x0b71('0x8'));var attributes=require(_0x0b71('0x9'));module[_0x0b71('0xa')]=function(_0x1b0b0d,_0x4726e0){return _0x1b0b0d['define'](_0x0b71('0xb'),attributes,{'tableName':_0x0b71('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xca91=['../../config/environment','./mailAccount.attributes','MailAccount','mail_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3ff5e6,_0x419099){var _0xfbc4fd=function(_0x6fb7){while(--_0x6fb7){_0x3ff5e6['push'](_0x3ff5e6['shift']());}};_0xfbc4fd(++_0x419099);}(_0xca91,0x154));var _0x1ca9=function(_0x390733,_0x1e3d32){_0x390733=_0x390733-0x0;var _0x33beb9=_0xca91[_0x390733];return _0x33beb9;};'use strict';var _=require(_0x1ca9('0x0'));var util=require(_0x1ca9('0x1'));var logger=require(_0x1ca9('0x2'))(_0x1ca9('0x3'));var moment=require(_0x1ca9('0x4'));var BPromise=require(_0x1ca9('0x5'));var rp=require(_0x1ca9('0x6'));var fs=require('fs');var path=require(_0x1ca9('0x7'));var rimraf=require('rimraf');var config=require(_0x1ca9('0x8'));var attributes=require(_0x1ca9('0x9'));module['exports']=function(_0xc637d2,_0x586707){return _0xc637d2['define'](_0x1ca9('0xa'),attributes,{'tableName':_0x1ca9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 60278c7..2abf186 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f4c=['*,*,*,*','Start','startRouting','util','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','redis','defaults','socket.io-emitter','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','MailAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','MailAccount','findAll','options','raw','where','attributes','include','map','model','GetMailAccount','debug','stringify','ShowMailAccount','NotifyMailAccount','body','mail','difference','CmContact','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','account','CmList','Contacts','MailApplication','Applications','MailServerOut','Smtp','List','get','applications','list','asc','autoclose','push','close','length','create','List\x20not\x20found','messageId','generate','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','Messages','inReplyTo','Contact\x20not\x20found','spread','update','interaction','MailMessage','contact','subject','attachments','originTo','originCc','bcc','ChatWebsiteId','originChannel','ChatOfflineMessageId','Attachment','Attachments','UserId','User','find','unshift','name','waitForTheAssignedAgent'];(function(_0x1dc7c3,_0xbc8c12){var _0x31a9b3=function(_0x46d6df){while(--_0x46d6df){_0x1dc7c3['push'](_0x1dc7c3['shift']());}};_0x31a9b3(++_0xbc8c12);}(_0x1f4c,0xcf));var _0xc1f4=function(_0x1665f2,_0x168cb2){_0x1665f2=_0x1665f2-0x0;var _0x38489f=_0x1f4c[_0x1665f2];return _0x38489f;};'use strict';var _=require('lodash');var util=require(_0xc1f4('0x0'));var moment=require('moment');var BPromise=require(_0xc1f4('0x1'));var rs=require(_0xc1f4('0x2'));var fs=require('fs');var Redis=require(_0xc1f4('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc1f4('0x4'));var logger=require('../../config/logger')(_0xc1f4('0x5'));var config=require('../../config/environment');var jayson=require(_0xc1f4('0x6'));var client=jayson[_0xc1f4('0x7')]['http']({'port':0x232c});config[_0xc1f4('0x8')]=_[_0xc1f4('0x9')](config[_0xc1f4('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0xc1f4('0xa'))(new Redis(config['redis']));require('./mailAccount.socket')['register'](socket);function respondWithRpcPromise(_0xf6269a,_0x145d07,_0x4ff6a9){return new BPromise(function(_0x59303f,_0x32cb1d){return client[_0xc1f4('0xb')](_0xf6269a,_0x4ff6a9)[_0xc1f4('0xc')](function(_0x3cdf8a){logger[_0xc1f4('0xd')](_0xc1f4('0xe'),_0x145d07,_0xc1f4('0xf'));logger['debug'](_0xc1f4('0x10'),_0x145d07,'request\x20sent',JSON['stringify'](_0x3cdf8a));if(_0x3cdf8a['error']){if(_0x3cdf8a[_0xc1f4('0x11')][_0xc1f4('0x12')]===0x1f4){logger['error'](_0xc1f4('0xe'),_0x145d07,_0x3cdf8a[_0xc1f4('0x11')][_0xc1f4('0x13')]);return _0x32cb1d(_0x3cdf8a[_0xc1f4('0x11')]['message']);}logger[_0xc1f4('0x11')]('MailAccount,\x20%s,\x20%s',_0x145d07,_0x3cdf8a[_0xc1f4('0x11')]['message']);return _0x59303f(_0x3cdf8a['error']['message']);}else{logger[_0xc1f4('0xd')]('MailAccount,\x20%s,\x20%s',_0x145d07,_0xc1f4('0xf'));_0x59303f(_0x3cdf8a[_0xc1f4('0x14')][_0xc1f4('0x13')]);}})[_0xc1f4('0x15')](function(_0x144fe8){logger[_0xc1f4('0x11')]('MailAccount,\x20%s,\x20%s',_0x145d07,_0x144fe8);_0x32cb1d(_0x144fe8);});});}exports['GetMailAccount']=function(_0x13e921){var _0x3439c8=this;return new Promise(function(_0x4eeaa7,_0x28f107){return db[_0xc1f4('0x16')][_0xc1f4('0x17')]({'raw':_0x13e921[_0xc1f4('0x18')]?_0x13e921[_0xc1f4('0x18')][_0xc1f4('0x19')]===undefined?!![]:![]:!![],'where':_0x13e921[_0xc1f4('0x18')]?_0x13e921['options'][_0xc1f4('0x1a')]||null:null,'attributes':_0x13e921[_0xc1f4('0x18')]?_0x13e921[_0xc1f4('0x18')][_0xc1f4('0x1b')]||null:null,'limit':_0x13e921['options']?_0x13e921[_0xc1f4('0x18')]['limit']||null:null,'include':_0x13e921[_0xc1f4('0x18')]?_0x13e921['options'][_0xc1f4('0x1c')]?_[_0xc1f4('0x1d')](_0x13e921[_0xc1f4('0x18')][_0xc1f4('0x1c')],function(_0x38c26d){return{'model':db[_0x38c26d[_0xc1f4('0x1e')]],'as':_0x38c26d['as'],'attributes':_0x38c26d[_0xc1f4('0x1b')],'include':_0x38c26d['include']?_[_0xc1f4('0x1d')](_0x38c26d[_0xc1f4('0x1c')],function(_0x22694d){return{'model':db[_0x22694d[_0xc1f4('0x1e')]],'as':_0x22694d['as'],'attributes':_0x22694d[_0xc1f4('0x1b')],'include':_0x22694d[_0xc1f4('0x1c')]?_['map'](_0x22694d['include'],function(_0xd54b80){return{'model':db[_0xd54b80['model']],'as':_0xd54b80['as'],'attributes':_0xd54b80[_0xc1f4('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xc1f4('0xc')](function(_0x1b3974){logger[_0xc1f4('0xd')](_0xc1f4('0x1f'),_0x13e921);logger[_0xc1f4('0x20')](_0xc1f4('0x1f'),_0x13e921,JSON[_0xc1f4('0x21')](_0x1b3974));_0x4eeaa7(_0x1b3974);})[_0xc1f4('0x15')](function(_0x4b2870){logger['error'](_0xc1f4('0x1f'),_0x4b2870[_0xc1f4('0x13')],_0x13e921);_0x28f107(_0x3439c8[_0xc1f4('0x11')](0x1f4,_0x4b2870['message']));});});};exports[_0xc1f4('0x22')]=function(_0x47b334){var _0x44455b=this;return new Promise(function(_0x51c47d,_0x59e13d){return db[_0xc1f4('0x16')]['find']({'raw':_0x47b334['options']?_0x47b334[_0xc1f4('0x18')][_0xc1f4('0x19')]===undefined?!![]:![]:!![],'where':_0x47b334[_0xc1f4('0x18')]?_0x47b334[_0xc1f4('0x18')][_0xc1f4('0x1a')]||null:null,'attributes':_0x47b334[_0xc1f4('0x18')]?_0x47b334[_0xc1f4('0x18')]['attributes']||null:null,'include':_0x47b334[_0xc1f4('0x18')]?_0x47b334[_0xc1f4('0x18')][_0xc1f4('0x1c')]?_[_0xc1f4('0x1d')](_0x47b334[_0xc1f4('0x18')][_0xc1f4('0x1c')],function(_0x54e60e){return{'model':db[_0x54e60e['model']],'as':_0x54e60e['as'],'attributes':_0x54e60e[_0xc1f4('0x1b')],'include':_0x54e60e[_0xc1f4('0x1c')]?_[_0xc1f4('0x1d')](_0x54e60e[_0xc1f4('0x1c')],function(_0x321c04){return{'model':db[_0x321c04[_0xc1f4('0x1e')]],'as':_0x321c04['as'],'attributes':_0x321c04[_0xc1f4('0x1b')],'include':_0x321c04[_0xc1f4('0x1c')]?_[_0xc1f4('0x1d')](_0x321c04['include'],function(_0x1b1ccb){return{'model':db[_0x1b1ccb['model']],'as':_0x1b1ccb['as'],'attributes':_0x1b1ccb['attributes']};}):[]};}):[]};}):[]:[]})[_0xc1f4('0xc')](function(_0x49debc){logger[_0xc1f4('0xd')]('ShowMailAccount',_0x47b334);logger[_0xc1f4('0x20')](_0xc1f4('0x22'),_0x47b334,JSON[_0xc1f4('0x21')](_0x49debc));_0x51c47d(_0x49debc);})[_0xc1f4('0x15')](function(_0x174459){logger[_0xc1f4('0x11')]('ShowMailAccount',_0x174459['message'],_0x47b334);_0x59e13d(_0x44455b['error'](0x1f4,_0x174459['message']));});});};exports[_0xc1f4('0x23')]=function(_0x581b8d){var _0x37227f=this;return new Promise(function(_0x3cee8e,_0x188d06){var _0x9158c9={'body':_0x581b8d[_0xc1f4('0x24')],'channel':_0xc1f4('0x25')};var _0x55965e=_[_0xc1f4('0x26')](_['keys'](db[_0xc1f4('0x27')]['rawAttributes']),[_0xc1f4('0x28'),_0xc1f4('0x29'),_0xc1f4('0x2a'),_0xc1f4('0x2b')]);var _0x9af853=![];if(_0x581b8d['body']['id']){delete _0x581b8d[_0xc1f4('0x24')]['id'];}if(_[_0xc1f4('0x2c')](_0x581b8d[_0xc1f4('0x24')][_0xc1f4('0x2d')])){return _0x188d06(_0x37227f[_0xc1f4('0x11')](0x1f4,_0xc1f4('0x2e')));}if(_[_0xc1f4('0x2c')](_0x581b8d[_0xc1f4('0x24')][_0xc1f4('0x24')])||_0x581b8d[_0xc1f4('0x24')][_0xc1f4('0x24')]===''){return _0x188d06(_0x37227f[_0xc1f4('0x11')](0x1f4,_0xc1f4('0x2f')));}if(_[_0xc1f4('0x2c')](_0x581b8d[_0xc1f4('0x24')][_0xc1f4('0x30')])){return _0x188d06(_0x37227f[_0xc1f4('0x11')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x55965e));}if(!_[_0xc1f4('0x31')](_0x55965e,_0x581b8d[_0xc1f4('0x24')][_0xc1f4('0x30')])){return _0x188d06(_0x37227f[_0xc1f4('0x11')](0x1f4,_0xc1f4('0x32')+_0x55965e));}var _0xacf2a7={};_0xacf2a7[_0x581b8d['body']['mapKey']]=_0x581b8d[_0xc1f4('0x24')][_0xc1f4('0x2d')];return db[_0xc1f4('0x16')]['find']({'where':{'id':_0x581b8d[_0xc1f4('0x33')]['id']},'include':[{'model':db[_0xc1f4('0x34')],'as':'List','include':[{'model':db[_0xc1f4('0x27')],'as':_0xc1f4('0x35'),'where':_0xacf2a7,'limit':0x1,'order':[[_0xc1f4('0x29'),'DESC']]}]},{'model':db[_0xc1f4('0x36')],'as':_0xc1f4('0x37')},{'model':db[_0xc1f4('0x38')],'as':_0xc1f4('0x39')}]})['then'](function(_0x3afa9c){if(_0x3afa9c&&_0x3afa9c[_0xc1f4('0x3a')]){var _0x5e52f2=_0x3afa9c[_0xc1f4('0x3b')]({'plain':!![]});_0x9158c9[_0xc1f4('0x33')]=_['omit'](_0x5e52f2,['Applications',_0xc1f4('0x3a')]);_0x9158c9[_0xc1f4('0x3c')]=_0x5e52f2[_0xc1f4('0x37')];_0x9158c9[_0xc1f4('0x3d')]=_0x5e52f2['List'];_0x9158c9[_0xc1f4('0x3c')]=_['orderBy'](_0x9158c9[_0xc1f4('0x3c')],['priority'],[_0xc1f4('0x3e')]);if(_0x9158c9[_0xc1f4('0x33')]&&_0x9158c9[_0xc1f4('0x33')][_0xc1f4('0x3f')]){_0x9158c9[_0xc1f4('0x3c')][_0xc1f4('0x40')]({'id':0x0,'priority':_0x9158c9[_0xc1f4('0x3c')]['length']+0x1,'app':_0xc1f4('0x41'),'appdata':_0xc1f4('0x3f'),'interval':'*,*,*,*'});}if(_0x9158c9['account'][_0xc1f4('0x37')]){delete _0x9158c9[_0xc1f4('0x33')][_0xc1f4('0x37')];}if(_0x9158c9[_0xc1f4('0x33')][_0xc1f4('0x3a')]){delete _0x9158c9['account']['List'];}if(_0x5e52f2['List']['Contacts'][_0xc1f4('0x42')]){return _0x5e52f2[_0xc1f4('0x3a')][_0xc1f4('0x35')][0x0];}var _0x3665d1=_[_0xc1f4('0x9')](_0x581b8d[_0xc1f4('0x24')],{'firstName':_0x581b8d[_0xc1f4('0x24')]['from'],'ListId':_0x5e52f2[_0xc1f4('0x2b')]});_0x3665d1[_0x581b8d['body'][_0xc1f4('0x30')]]=_0x581b8d[_0xc1f4('0x24')][_0xc1f4('0x2d')];return db[_0xc1f4('0x27')][_0xc1f4('0x43')](_0x3665d1);}else{throw new Error(_0xc1f4('0x44'));}})[_0xc1f4('0xc')](function(_0x24b8e9){_0x9158c9['contact']=_0x24b8e9;if(_0x24b8e9){if(!_0x581b8d['body'][_0xc1f4('0x13')]['messageId']){_0x581b8d['body']['message'][_0xc1f4('0x45')]=rs[_0xc1f4('0x46')]()+'\x20'+_0x581b8d['body']['message'][_0xc1f4('0x2d')];}var _0x264d12={'ContactId':_0x24b8e9['id'],'MailAccountId':_0x581b8d[_0xc1f4('0x33')]['id'],'inReplyTo':_0x581b8d['body']['message'][_0xc1f4('0x45')],'to':_0x581b8d[_0xc1f4('0x24')][_0xc1f4('0x13')][_0xc1f4('0x2d')],'cc':_0x581b8d['body'][_0xc1f4('0x13')]['cc'],'subject':_0x581b8d[_0xc1f4('0x24')]['message']['subject'],'attach':_0x581b8d['body'][_0xc1f4('0x13')][_0xc1f4('0x47')],'lastMsgAt':moment()[_0xc1f4('0x48')](_0xc1f4('0x49')),'lastMsgDirection':'in'};return db[_0xc1f4('0x4a')]['find']({'where':{'closed':![],'MailAccountId':_0x581b8d[_0xc1f4('0x33')]['id']},'include':[{'model':db['MailMessage'],'as':_0xc1f4('0x4b'),'attributes':[_0xc1f4('0x45')],'where':{'messageId':_0x581b8d[_0xc1f4('0x24')][_0xc1f4('0x13')][_0xc1f4('0x4c')]}}]})[_0xc1f4('0xc')](function(_0x4537b3){if(_0x4537b3){return[_0x4537b3,![]];}return db['MailInteraction'][_0xc1f4('0x43')](_0x264d12)[_0xc1f4('0xc')](function(_0x5d175b){return[_0x5d175b,!![]];});});}else{throw new Error(_0xc1f4('0x4d'));}})[_0xc1f4('0x4e')](function(_0x5f2a3b,_0x23c18a){if(_0x5f2a3b){_0x9af853=_0x23c18a;if(!_0x23c18a){return _0x5f2a3b[_0xc1f4('0x4f')]({'inReplyTo':_0x581b8d[_0xc1f4('0x24')][_0xc1f4('0x13')]['messageId'],'to':_0x581b8d[_0xc1f4('0x24')][_0xc1f4('0x13')][_0xc1f4('0x2d')],'cc':_0x581b8d[_0xc1f4('0x24')][_0xc1f4('0x13')]['cc'],'subject':_0x581b8d['body'][_0xc1f4('0x13')]['subject'],'attach':_0x5f2a3b[_0xc1f4('0x47')]?_0x5f2a3b[_0xc1f4('0x47')]:_0x581b8d[_0xc1f4('0x24')]['message'][_0xc1f4('0x47')],'substatus':null,'substatusAt':moment()[_0xc1f4('0x48')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0xc1f4('0x48')](_0xc1f4('0x49')),'lastMsgDirection':'in'});}else{return _0x5f2a3b;}}})[_0xc1f4('0xc')](function(_0x17507b){_0x9158c9[_0xc1f4('0x50')]=_0x17507b[_0xc1f4('0x3b')]({'plain':!![]});_0x9158c9['interaction']['created']=_0x9af853;return db[_0xc1f4('0x51')][_0xc1f4('0x43')]({'body':_0x581b8d[_0xc1f4('0x24')][_0xc1f4('0x24')],'MailAccountId':_0x581b8d[_0xc1f4('0x33')]['id'],'MailInteractionId':_0x17507b['id'],'direction':'in','ContactId':_0x9158c9[_0xc1f4('0x52')]['id'],'messageId':_0x581b8d[_0xc1f4('0x24')]['message'][_0xc1f4('0x45')],'from':_0x581b8d[_0xc1f4('0x24')][_0xc1f4('0x13')][_0xc1f4('0x2d')],'to':_0x581b8d[_0xc1f4('0x24')]['message']['to'],'cc':_0x581b8d[_0xc1f4('0x24')]['message']['cc'],'subject':_0x581b8d[_0xc1f4('0x24')]['message'][_0xc1f4('0x53')],'attach':_0x581b8d['body'][_0xc1f4('0x13')]['attach'],'Attachments':_0x581b8d['body'][_0xc1f4('0x13')][_0xc1f4('0x54')],'originTo':_0x581b8d[_0xc1f4('0x24')][_0xc1f4('0x13')][_0xc1f4('0x55')],'originCc':_0x581b8d[_0xc1f4('0x24')][_0xc1f4('0x13')][_0xc1f4('0x56')],'bcc':_0x581b8d['body'][_0xc1f4('0x13')][_0xc1f4('0x57')],'ChatWebsiteId':_0x581b8d['body'][_0xc1f4('0x13')][_0xc1f4('0x58')]||null,'originChannel':_0x581b8d['body'][_0xc1f4('0x13')][_0xc1f4('0x59')]||'Email','ChatOfflineMessageId':_0x581b8d['body'][_0xc1f4('0x13')][_0xc1f4('0x5a')]||null},{'include':[{'model':db[_0xc1f4('0x5b')],'as':_0xc1f4('0x5c')}]});})[_0xc1f4('0xc')](function(_0x50e87f){_0x9158c9[_0xc1f4('0x13')]=_0x50e87f;if(_0x9158c9[_0xc1f4('0x50')][_0xc1f4('0x5d')]){return db[_0xc1f4('0x5e')][_0xc1f4('0x5f')]({'attributes':['id','name'],'where':{'id':_0x9158c9[_0xc1f4('0x50')]['UserId']}})[_0xc1f4('0xc')](function(_0x5b9b51){if(_0x5b9b51){_0x9158c9[_0xc1f4('0x3c')][_0xc1f4('0x60')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x5b9b51[_0xc1f4('0x61')]+','+(_0x9158c9['account'][_0xc1f4('0x62')]||0xa),'interval':_0xc1f4('0x63')});}return respondWithRpcPromise(_0xc1f4('0x64'),_0xc1f4('0x65'),_0x9158c9);});}return respondWithRpcPromise('Start',_0xc1f4('0x65'),_0x9158c9);})[_0xc1f4('0xc')](function(_0x29051d){_0x3cee8e(_0x29051d);})[_0xc1f4('0x15')](function(_0x525b9b){_0x188d06(_0x37227f['error'](0x1f4,_0x525b9b['message']));});});};
\ No newline at end of file
+var _0x8911=['lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','http','defaults','socket.io-emitter','./mailAccount.socket','register','request','then','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetMailAccount','MailAccount','findAll','options','where','attributes','limit','map','include','model','ShowMailAccount','find','raw','catch','NotifyMailAccount','body','mail','difference','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','Contacts','DESC','MailServerOut','Smtp','get','Applications','applications','list','List','orderBy','priority','asc','push','length','autoclose','*,*,*,*','List\x20not\x20found','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','create','Contact\x20not\x20found','spread','update','attach','interaction','created','contact','originTo','originCc','bcc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting'];(function(_0x37a79c,_0x2b19f0){var _0x561d89=function(_0x19bee3){while(--_0x19bee3){_0x37a79c['push'](_0x37a79c['shift']());}};_0x561d89(++_0x2b19f0);}(_0x8911,0x141));var _0x1891=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8911[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x1891('0x0'));var util=require(_0x1891('0x1'));var moment=require(_0x1891('0x2'));var BPromise=require(_0x1891('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1891('0x4'))['db'];var utils=require(_0x1891('0x5'));var logger=require('../../config/logger')(_0x1891('0x6'));var config=require(_0x1891('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1891('0x8')]({'port':0x232c});config['redis']=_[_0x1891('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x1891('0xa'))(new Redis(config['redis']));require(_0x1891('0xb'))[_0x1891('0xc')](socket);function respondWithRpcPromise(_0x4b6c40,_0x1a9a35,_0x178951){return new BPromise(function(_0x489334,_0x27319a){return client[_0x1891('0xd')](_0x4b6c40,_0x178951)[_0x1891('0xe')](function(_0x26195a){logger[_0x1891('0xf')](_0x1891('0x10'),_0x1a9a35,'request\x20sent');logger[_0x1891('0x11')](_0x1891('0x12'),_0x1a9a35,'request\x20sent',JSON[_0x1891('0x13')](_0x26195a));if(_0x26195a['error']){if(_0x26195a[_0x1891('0x14')][_0x1891('0x15')]===0x1f4){logger['error'](_0x1891('0x10'),_0x1a9a35,_0x26195a[_0x1891('0x14')][_0x1891('0x16')]);return _0x27319a(_0x26195a[_0x1891('0x14')]['message']);}logger[_0x1891('0x14')](_0x1891('0x10'),_0x1a9a35,_0x26195a[_0x1891('0x14')][_0x1891('0x16')]);return _0x489334(_0x26195a['error']['message']);}else{logger['info'](_0x1891('0x10'),_0x1a9a35,'request\x20sent');_0x489334(_0x26195a['result'][_0x1891('0x16')]);}})['catch'](function(_0x2577e4){logger[_0x1891('0x14')](_0x1891('0x10'),_0x1a9a35,_0x2577e4);_0x27319a(_0x2577e4);});});}exports[_0x1891('0x17')]=function(_0x3d4f7f){var _0x48a8bf=this;return new Promise(function(_0x53105e,_0x59c6fa){return db[_0x1891('0x18')][_0x1891('0x19')]({'raw':_0x3d4f7f[_0x1891('0x1a')]?_0x3d4f7f[_0x1891('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x3d4f7f[_0x1891('0x1a')]?_0x3d4f7f[_0x1891('0x1a')][_0x1891('0x1b')]||null:null,'attributes':_0x3d4f7f[_0x1891('0x1a')]?_0x3d4f7f['options'][_0x1891('0x1c')]||null:null,'limit':_0x3d4f7f[_0x1891('0x1a')]?_0x3d4f7f[_0x1891('0x1a')][_0x1891('0x1d')]||null:null,'include':_0x3d4f7f['options']?_0x3d4f7f[_0x1891('0x1a')]['include']?_[_0x1891('0x1e')](_0x3d4f7f[_0x1891('0x1a')][_0x1891('0x1f')],function(_0x5492e4){return{'model':db[_0x5492e4['model']],'as':_0x5492e4['as'],'attributes':_0x5492e4[_0x1891('0x1c')],'include':_0x5492e4[_0x1891('0x1f')]?_['map'](_0x5492e4[_0x1891('0x1f')],function(_0x3fc401){return{'model':db[_0x3fc401['model']],'as':_0x3fc401['as'],'attributes':_0x3fc401[_0x1891('0x1c')],'include':_0x3fc401[_0x1891('0x1f')]?_[_0x1891('0x1e')](_0x3fc401[_0x1891('0x1f')],function(_0x2c6aa8){return{'model':db[_0x2c6aa8[_0x1891('0x20')]],'as':_0x2c6aa8['as'],'attributes':_0x2c6aa8[_0x1891('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x22d1a8){logger['info'](_0x1891('0x17'),_0x3d4f7f);logger['debug'](_0x1891('0x17'),_0x3d4f7f,JSON[_0x1891('0x13')](_0x22d1a8));_0x53105e(_0x22d1a8);})['catch'](function(_0x3c1e1b){logger[_0x1891('0x14')](_0x1891('0x17'),_0x3c1e1b[_0x1891('0x16')],_0x3d4f7f);_0x59c6fa(_0x48a8bf['error'](0x1f4,_0x3c1e1b['message']));});});};exports[_0x1891('0x21')]=function(_0x969557){var _0x48c0b3=this;return new Promise(function(_0x49b1f3,_0x4aabd3){return db[_0x1891('0x18')][_0x1891('0x22')]({'raw':_0x969557[_0x1891('0x1a')]?_0x969557['options'][_0x1891('0x23')]===undefined?!![]:![]:!![],'where':_0x969557[_0x1891('0x1a')]?_0x969557['options'][_0x1891('0x1b')]||null:null,'attributes':_0x969557[_0x1891('0x1a')]?_0x969557['options'][_0x1891('0x1c')]||null:null,'include':_0x969557['options']?_0x969557[_0x1891('0x1a')]['include']?_['map'](_0x969557['options']['include'],function(_0x3cb1a9){return{'model':db[_0x3cb1a9['model']],'as':_0x3cb1a9['as'],'attributes':_0x3cb1a9[_0x1891('0x1c')],'include':_0x3cb1a9[_0x1891('0x1f')]?_['map'](_0x3cb1a9['include'],function(_0x3c48e4){return{'model':db[_0x3c48e4[_0x1891('0x20')]],'as':_0x3c48e4['as'],'attributes':_0x3c48e4['attributes'],'include':_0x3c48e4[_0x1891('0x1f')]?_[_0x1891('0x1e')](_0x3c48e4[_0x1891('0x1f')],function(_0x395e3b){return{'model':db[_0x395e3b[_0x1891('0x20')]],'as':_0x395e3b['as'],'attributes':_0x395e3b[_0x1891('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x1891('0xe')](function(_0x28e0df){logger[_0x1891('0xf')](_0x1891('0x21'),_0x969557);logger[_0x1891('0x11')](_0x1891('0x21'),_0x969557,JSON[_0x1891('0x13')](_0x28e0df));_0x49b1f3(_0x28e0df);})[_0x1891('0x24')](function(_0x18ef9c){logger[_0x1891('0x14')]('ShowMailAccount',_0x18ef9c[_0x1891('0x16')],_0x969557);_0x4aabd3(_0x48c0b3[_0x1891('0x14')](0x1f4,_0x18ef9c[_0x1891('0x16')]));});});};exports[_0x1891('0x25')]=function(_0x39dfbd){var _0x39938b=this;return new Promise(function(_0x43b94d,_0x458e5e){var _0x48c58d={'body':_0x39dfbd[_0x1891('0x26')],'channel':_0x1891('0x27')};var _0x4b8b88=_[_0x1891('0x28')](_['keys'](db[_0x1891('0x29')][_0x1891('0x2a')]),[_0x1891('0x2b'),_0x1891('0x2c'),_0x1891('0x2d'),_0x1891('0x2e')]);var _0x31e173=![];if(_0x39dfbd[_0x1891('0x26')]['id']){delete _0x39dfbd[_0x1891('0x26')]['id'];}if(_['isNil'](_0x39dfbd['body'][_0x1891('0x2f')])){return _0x458e5e(_0x39938b[_0x1891('0x14')](0x1f4,_0x1891('0x30')));}if(_[_0x1891('0x31')](_0x39dfbd['body']['body'])||_0x39dfbd[_0x1891('0x26')][_0x1891('0x26')]===''){return _0x458e5e(_0x39938b[_0x1891('0x14')](0x1f4,_0x1891('0x32')));}if(_[_0x1891('0x31')](_0x39dfbd[_0x1891('0x26')][_0x1891('0x33')])){return _0x458e5e(_0x39938b[_0x1891('0x14')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4b8b88));}if(!_[_0x1891('0x34')](_0x4b8b88,_0x39dfbd['body'][_0x1891('0x33')])){return _0x458e5e(_0x39938b['error'](0x1f4,_0x1891('0x35')+_0x4b8b88));}var _0x30e796={};_0x30e796[_0x39dfbd['body'][_0x1891('0x33')]]=_0x39dfbd['body']['from'];return db['MailAccount'][_0x1891('0x22')]({'where':{'id':_0x39dfbd[_0x1891('0x36')]['id']},'include':[{'model':db[_0x1891('0x37')],'as':'List','include':[{'model':db[_0x1891('0x29')],'as':_0x1891('0x38'),'where':_0x30e796,'limit':0x1,'order':[['updatedAt',_0x1891('0x39')]]}]},{'model':db['MailApplication'],'as':'Applications'},{'model':db[_0x1891('0x3a')],'as':_0x1891('0x3b')}]})[_0x1891('0xe')](function(_0x4427b2){if(_0x4427b2&&_0x4427b2['List']){var _0x2c92fe=_0x4427b2[_0x1891('0x3c')]({'plain':!![]});_0x48c58d[_0x1891('0x36')]=_['omit'](_0x2c92fe,[_0x1891('0x3d'),'List']);_0x48c58d[_0x1891('0x3e')]=_0x2c92fe[_0x1891('0x3d')];_0x48c58d[_0x1891('0x3f')]=_0x2c92fe[_0x1891('0x40')];_0x48c58d[_0x1891('0x3e')]=_[_0x1891('0x41')](_0x48c58d[_0x1891('0x3e')],[_0x1891('0x42')],[_0x1891('0x43')]);if(_0x48c58d[_0x1891('0x36')]&&_0x48c58d[_0x1891('0x36')]['autoclose']){_0x48c58d[_0x1891('0x3e')][_0x1891('0x44')]({'id':0x0,'priority':_0x48c58d[_0x1891('0x3e')][_0x1891('0x45')]+0x1,'app':'close','appdata':_0x1891('0x46'),'interval':_0x1891('0x47')});}if(_0x48c58d[_0x1891('0x36')][_0x1891('0x3d')]){delete _0x48c58d['account'][_0x1891('0x3d')];}if(_0x48c58d[_0x1891('0x36')][_0x1891('0x40')]){delete _0x48c58d[_0x1891('0x36')]['List'];}if(_0x2c92fe['List'][_0x1891('0x38')]['length']){return _0x2c92fe[_0x1891('0x40')][_0x1891('0x38')][0x0];}var _0x5ab515=_[_0x1891('0x9')](_0x39dfbd[_0x1891('0x26')],{'firstName':_0x39dfbd[_0x1891('0x26')]['from'],'ListId':_0x2c92fe['ListId']});_0x5ab515[_0x39dfbd['body'][_0x1891('0x33')]]=_0x39dfbd[_0x1891('0x26')][_0x1891('0x2f')];return db[_0x1891('0x29')]['create'](_0x5ab515);}else{throw new Error(_0x1891('0x48'));}})[_0x1891('0xe')](function(_0x44b2f3){_0x48c58d['contact']=_0x44b2f3;if(_0x44b2f3){if(!_0x39dfbd[_0x1891('0x26')]['message']['messageId']){_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x49')]=rs[_0x1891('0x4a')]()+'\x20'+_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x2f')];}var _0x4dacb8={'ContactId':_0x44b2f3['id'],'MailAccountId':_0x39dfbd['account']['id'],'inReplyTo':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x49')],'to':_0x39dfbd[_0x1891('0x26')]['message'][_0x1891('0x2f')],'cc':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['cc'],'subject':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x4b')],'attach':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['attach'],'lastMsgAt':moment()[_0x1891('0x4c')](_0x1891('0x4d')),'lastMsgDirection':'in'};return db[_0x1891('0x4e')][_0x1891('0x22')]({'where':{'closed':![],'MailAccountId':_0x39dfbd[_0x1891('0x36')]['id']},'include':[{'model':db[_0x1891('0x4f')],'as':_0x1891('0x50'),'attributes':[_0x1891('0x49')],'where':{'messageId':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x51')]}}]})[_0x1891('0xe')](function(_0x4bd724){if(_0x4bd724){return[_0x4bd724,![]];}return db[_0x1891('0x4e')][_0x1891('0x52')](_0x4dacb8)[_0x1891('0xe')](function(_0x5ef911){return[_0x5ef911,!![]];});});}else{throw new Error(_0x1891('0x53'));}})[_0x1891('0x54')](function(_0x5540bf,_0x48cf59){if(_0x5540bf){_0x31e173=_0x48cf59;if(!_0x48cf59){return _0x5540bf[_0x1891('0x55')]({'inReplyTo':_0x39dfbd[_0x1891('0x26')]['message'][_0x1891('0x49')],'to':_0x39dfbd['body'][_0x1891('0x16')][_0x1891('0x2f')],'cc':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['cc'],'subject':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['subject'],'attach':_0x5540bf['attach']?_0x5540bf[_0x1891('0x56')]:_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['attach'],'substatus':null,'substatusAt':moment()[_0x1891('0x4c')](_0x1891('0x4d')),'lastMsgAt':moment()[_0x1891('0x4c')](_0x1891('0x4d')),'lastMsgDirection':'in'});}else{return _0x5540bf;}}})[_0x1891('0xe')](function(_0x5204e4){_0x48c58d[_0x1891('0x57')]=_0x5204e4['get']({'plain':!![]});_0x48c58d[_0x1891('0x57')][_0x1891('0x58')]=_0x31e173;return db[_0x1891('0x4f')][_0x1891('0x52')]({'body':_0x39dfbd[_0x1891('0x26')][_0x1891('0x26')],'MailAccountId':_0x39dfbd['account']['id'],'MailInteractionId':_0x5204e4['id'],'direction':'in','ContactId':_0x48c58d[_0x1891('0x59')]['id'],'messageId':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x49')],'from':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['from'],'to':_0x39dfbd[_0x1891('0x26')]['message']['to'],'cc':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['cc'],'subject':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['subject'],'attach':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x56')],'Attachments':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['attachments'],'originTo':_0x39dfbd[_0x1891('0x26')]['message'][_0x1891('0x5a')],'originCc':_0x39dfbd[_0x1891('0x26')]['message'][_0x1891('0x5b')],'bcc':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x5c')],'ChatWebsiteId':_0x39dfbd[_0x1891('0x26')]['message'][_0x1891('0x5d')]||null,'originChannel':_0x39dfbd['body'][_0x1891('0x16')][_0x1891('0x5e')]||_0x1891('0x5f'),'ChatOfflineMessageId':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x60')]||null},{'include':[{'model':db[_0x1891('0x61')],'as':_0x1891('0x62')}]});})[_0x1891('0xe')](function(_0x4ca8cf){_0x48c58d['message']=_0x4ca8cf;if(_0x48c58d[_0x1891('0x57')][_0x1891('0x63')]){return db[_0x1891('0x64')][_0x1891('0x22')]({'attributes':['id',_0x1891('0x65')],'where':{'id':_0x48c58d[_0x1891('0x57')][_0x1891('0x63')]}})[_0x1891('0xe')](function(_0x2c693a){if(_0x2c693a){_0x48c58d['applications'][_0x1891('0x66')]({'id':0x0,'priority':0x0,'app':_0x1891('0x67'),'appdata':_0x2c693a['name']+','+(_0x48c58d[_0x1891('0x36')][_0x1891('0x68')]||0xa),'interval':_0x1891('0x47')});}return respondWithRpcPromise('Start','startRouting',_0x48c58d);});}return respondWithRpcPromise(_0x1891('0x69'),_0x1891('0x6a'),_0x48c58d);})[_0x1891('0xe')](function(_0x1e28fd){_0x43b94d(_0x1e28fd);})[_0x1891('0x24')](function(_0x5d09d6){_0x458e5e(_0x39938b[_0x1891('0x14')](0x1f4,_0x5d09d6[_0x1891('0x16')]));});});};
\ No newline at end of file
index e9b9ca5..aa25138 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65d1=['./mailAccount.events','save','remove','update','removeListener','register','length','mailAccount:'];(function(_0x92c9cd,_0x53c801){var _0x5e4a99=function(_0x4dda66){while(--_0x4dda66){_0x92c9cd['push'](_0x92c9cd['shift']());}};_0x5e4a99(++_0x53c801);}(_0x65d1,0xd0));var _0x165d=function(_0x5a18fc,_0xb1a4aa){_0x5a18fc=_0x5a18fc-0x0;var _0x57b441=_0x65d1[_0x5a18fc];return _0x57b441;};'use strict';var MailAccountEvents=require(_0x165d('0x0'));var events=[_0x165d('0x1'),_0x165d('0x2'),_0x165d('0x3')];function createListener(_0x255adf,_0x32f992){return function(_0x2aa36d){_0x32f992['emit'](_0x255adf,_0x2aa36d);};}function removeListener(_0x234e55,_0x280549){return function(){MailAccountEvents[_0x165d('0x4')](_0x234e55,_0x280549);};}exports[_0x165d('0x5')]=function(_0x379a35){for(var _0x390aeb=0x0,_0x189173=events[_0x165d('0x6')];_0x390aeb<_0x189173;_0x390aeb++){var _0x949cfb=events[_0x390aeb];var _0xdb7973=createListener(_0x165d('0x7')+_0x949cfb,_0x379a35);MailAccountEvents['on'](_0x949cfb,_0xdb7973);}};
\ No newline at end of file
+var _0xd12a=['save','update','removeListener','register','length','mailAccount:'];(function(_0x48da84,_0x1fa45d){var _0x5a3ed1=function(_0x4ee0be){while(--_0x4ee0be){_0x48da84['push'](_0x48da84['shift']());}};_0x5a3ed1(++_0x1fa45d);}(_0xd12a,0x1f2));var _0xad12=function(_0x450c21,_0x1f3eef){_0x450c21=_0x450c21-0x0;var _0x56d7e0=_0xd12a[_0x450c21];return _0x56d7e0;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=[_0xad12('0x0'),'remove',_0xad12('0x1')];function createListener(_0x4f98a3,_0x4dccd8){return function(_0x2c9a30){_0x4dccd8['emit'](_0x4f98a3,_0x2c9a30);};}function removeListener(_0x4ef429,_0x1df5b4){return function(){MailAccountEvents[_0xad12('0x2')](_0x4ef429,_0x1df5b4);};}exports[_0xad12('0x3')]=function(_0x5b3733){for(var _0x35484=0x0,_0x2af5ac=events[_0xad12('0x4')];_0x35484<_0x2af5ac;_0x35484++){var _0x314777=events[_0x35484];var _0x5f4080=createListener(_0xad12('0x5')+_0x314777,_0x5b3733);MailAccountEvents['on'](_0x314777,_0x5f4080);}};
\ No newline at end of file
index bf68757..c8969f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a29=['/:id','show','isAuthenticated','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get'];(function(_0x5fa520,_0xaf0e7d){var _0x1bf6c4=function(_0x2a7440){while(--_0x2a7440){_0x5fa520['push'](_0x5fa520['shift']());}};_0x1bf6c4(++_0xaf0e7d);}(_0x0a29,0x106));var _0x90a2=function(_0xe9320a,_0xc6d6c7){_0xe9320a=_0xe9320a-0x0;var _0x2eb0ac=_0x0a29[_0xe9320a];return _0x2eb0ac;};'use strict';var multer=require(_0x90a2('0x0'));var util=require(_0x90a2('0x1'));var path=require('path');var timeout=require(_0x90a2('0x2'));var express=require('express');var router=express[_0x90a2('0x3')]();var fs_extra=require(_0x90a2('0x4'));var auth=require(_0x90a2('0x5'));var interaction=require(_0x90a2('0x6'));var config=require(_0x90a2('0x7'));var controller=require(_0x90a2('0x8'));router[_0x90a2('0x9')](_0x90a2('0xa'),auth['isAuthenticated'](),controller[_0x90a2('0xb')]);router['put'](_0x90a2('0xa'),auth[_0x90a2('0xc')](),controller['update']);router[_0x90a2('0xd')](_0x90a2('0xa'),auth['isAuthenticated'](),controller[_0x90a2('0xe')]);module[_0x90a2('0xf')]=router;
\ No newline at end of file
+var _0x053f=['./mailApplication.controller','get','/:id','isAuthenticated','show','put','delete','destroy','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x479df1,_0xc64f48){var _0x257561=function(_0x58f782){while(--_0x58f782){_0x479df1['push'](_0x479df1['shift']());}};_0x257561(++_0xc64f48);}(_0x053f,0x1e9));var _0xf053=function(_0x5f554c,_0x71669a){_0x5f554c=_0x5f554c-0x0;var _0x4a5e82=_0x053f[_0x5f554c];return _0x4a5e82;};'use strict';var multer=require('multer');var util=require(_0xf053('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf053('0x1'));var router=express[_0xf053('0x2')]();var fs_extra=require(_0xf053('0x3'));var auth=require(_0xf053('0x4'));var interaction=require(_0xf053('0x5'));var config=require(_0xf053('0x6'));var controller=require(_0xf053('0x7'));router[_0xf053('0x8')](_0xf053('0x9'),auth[_0xf053('0xa')](),controller[_0xf053('0xb')]);router[_0xf053('0xc')](_0xf053('0x9'),auth['isAuthenticated'](),controller['update']);router[_0xf053('0xd')](_0xf053('0x9'),auth[_0xf053('0xa')](),controller[_0xf053('0xe')]);module[_0xf053('0xf')]=router;
\ No newline at end of file
index 4eb639b..93006b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87b9=['noop','TEXT','*,*,*,*','sequelize','INTEGER','STRING'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x87b9,0x1b3));var _0x987b=function(_0xc30b26,_0x48ec16){_0xc30b26=_0xc30b26-0x0;var _0x398009=_0x87b9[_0xc30b26];return _0x398009;};'use strict';var Sequelize=require(_0x987b('0x0'));module['exports']={'priority':{'type':Sequelize[_0x987b('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x987b('0x2')],'allowNull':![],'defaultValue':_0x987b('0x3')},'appdata':{'type':Sequelize[_0x987b('0x4')]()},'description':{'type':Sequelize[_0x987b('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x987b('0x5')}};
\ No newline at end of file
+var _0x9ff8=['TEXT','*,*,*,*','sequelize','INTEGER','STRING','noop'];(function(_0x17f8c5,_0x44efbc){var _0x117da7=function(_0xedf342){while(--_0xedf342){_0x17f8c5['push'](_0x17f8c5['shift']());}};_0x117da7(++_0x44efbc);}(_0x9ff8,0x74));var _0x89ff=function(_0x2addd5,_0x86c5c5){_0x2addd5=_0x2addd5-0x0;var _0x4adf1b=_0x9ff8[_0x2addd5];return _0x4adf1b;};'use strict';var Sequelize=require(_0x89ff('0x0'));module['exports']={'priority':{'type':Sequelize[_0x89ff('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x89ff('0x2')],'allowNull':![],'defaultValue':_0x89ff('0x3')},'appdata':{'type':Sequelize[_0x89ff('0x4')]()},'description':{'type':Sequelize[_0x89ff('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x89ff('0x5')}};
\ No newline at end of file
index bed73c5..593062b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x5703c9,_0x3e2405){var _0x4f60a4=function(_0x36593c){while(--_0x36593c){_0x5703c9['push'](_0x5703c9['shift']());}};_0x4f60a4(++_0x3e2405);}(_0xda3f,0xec));var _0xfda3=function(_0x403cb5,_0x4ed172){_0x403cb5=_0x403cb5-0x0;var _0x22d4e6=_0xda3f[_0x403cb5];return _0x22d4e6;};'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
+var _0x0713=['catch','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','stack','name','send','show','params','MailApplication','rawAttributes','query','keys','filters','intersection','model','fields','attributes','length','includeAll','include','merge','options','find','body'];(function(_0x33695a,_0x5a0917){var _0x365c89=function(_0x5ab62a){while(--_0x5ab62a){_0x33695a['push'](_0x33695a['shift']());}};_0x365c89(++_0x5a0917);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3071('0x0'));var jsonpatch=require(_0x3071('0x1'));var rp=require(_0x3071('0x2'));var moment=require(_0x3071('0x3'));var BPromise=require(_0x3071('0x4'));var Mustache=require('mustache');var util=require(_0x3071('0x5'));var path=require(_0x3071('0x6'));var sox=require(_0x3071('0x7'));var csv=require(_0x3071('0x8'));var ejs=require(_0x3071('0x9'));var fs=require('fs');var fs_extra=require(_0x3071('0xa'));var _=require(_0x3071('0xb'));var squel=require(_0x3071('0xc'));var crypto=require(_0x3071('0xd'));var jsforce=require(_0x3071('0xe'));var deskjs=require(_0x3071('0xf'));var toCsv=require(_0x3071('0x8'));var querystring=require(_0x3071('0x10'));var Papa=require('papaparse');var Redis=require(_0x3071('0x11'));var authService=require(_0x3071('0x12'));var qs=require(_0x3071('0x13'));var as=require(_0x3071('0x14'));var hardwareService=require(_0x3071('0x15'));var logger=require('../../config/logger')(_0x3071('0x16'));var utils=require(_0x3071('0x17'));var config=require(_0x3071('0x18'));var licenseUtil=require(_0x3071('0x19'));var db=require(_0x3071('0x1a'))['db'];function respondWithStatusCode(_0x4a8cc7,_0x5330a8){_0x5330a8=_0x5330a8||0xcc;return function(_0x1826ca){if(_0x1826ca){return _0x4a8cc7['sendStatus'](_0x5330a8);}return _0x4a8cc7[_0x3071('0x1b')](_0x5330a8)[_0x3071('0x1c')]();};}function respondWithResult(_0x5d4883,_0x104e73){_0x104e73=_0x104e73||0xc8;return function(_0x4e1219){if(_0x4e1219){return _0x5d4883[_0x3071('0x1b')](_0x104e73)[_0x3071('0x1d')](_0x4e1219);}};}function respondWithFilteredResult(_0x1271d0,_0x1f14e1){return function(_0x1caa5d){if(_0x1caa5d){var _0x2a6a4b=typeof _0x1f14e1[_0x3071('0x1e')]===_0x3071('0x1f')&&typeof _0x1f14e1[_0x3071('0x20')]===_0x3071('0x1f');var _0x5f3c22=_0x1caa5d[_0x3071('0x21')];var _0x17dbda=_0x2a6a4b?0x0:_0x1f14e1[_0x3071('0x1e')];var _0x108a83=_0x2a6a4b?_0x1caa5d[_0x3071('0x21')]:_0x1f14e1[_0x3071('0x1e')]+_0x1f14e1[_0x3071('0x20')];var _0x26f113;if(_0x108a83>=_0x5f3c22){_0x108a83=_0x5f3c22;_0x26f113=0xc8;}else{_0x26f113=0xce;}_0x1271d0['status'](_0x26f113);return _0x1271d0[_0x3071('0x22')](_0x3071('0x23'),_0x17dbda+'-'+_0x108a83+'/'+_0x5f3c22)[_0x3071('0x1d')](_0x1caa5d);}return null;};}function patchUpdates(_0x56c267){return function(_0xb8f4e3){try{jsonpatch['apply'](_0xb8f4e3,_0x56c267,!![]);}catch(_0x833074){return BPromise[_0x3071('0x24')](_0x833074);}return _0xb8f4e3[_0x3071('0x25')]();};}function saveUpdates(_0x457b57,_0x33090c){return function(_0x34c50e){if(_0x34c50e){return _0x34c50e[_0x3071('0x26')](_0x457b57)[_0x3071('0x27')](function(_0x542646){return _0x542646;});}return null;};}function removeEntity(_0x481a51,_0x2ce48a){return function(_0xb05b1d){if(_0xb05b1d){return _0xb05b1d[_0x3071('0x28')]()[_0x3071('0x27')](function(){_0x481a51[_0x3071('0x1b')](0xcc)[_0x3071('0x1c')]();});}};}function handleEntityNotFound(_0x7a4cb4,_0x1fe727){return function(_0x1de5fb){if(!_0x1de5fb){_0x7a4cb4['sendStatus'](0x194);}return _0x1de5fb;};}function handleError(_0x2e5f93,_0x3f1e6e){_0x3f1e6e=_0x3f1e6e||0x1f4;return function(_0x177138){logger['error'](_0x177138[_0x3071('0x29')]);if(_0x177138[_0x3071('0x2a')]){delete _0x177138[_0x3071('0x2a')];}_0x2e5f93[_0x3071('0x1b')](_0x3f1e6e)[_0x3071('0x2b')](_0x177138);};}exports[_0x3071('0x2c')]=function(_0x177b5f,_0x3921a1){var _0x32f1b4={'raw':!![],'where':{'id':_0x177b5f[_0x3071('0x2d')]['id']}},_0x292205={};_0x292205['model']=_['keys'](db[_0x3071('0x2e')][_0x3071('0x2f')]);_0x292205[_0x3071('0x30')]=_[_0x3071('0x31')](_0x177b5f[_0x3071('0x30')]);_0x292205[_0x3071('0x32')]=_[_0x3071('0x33')](_0x292205[_0x3071('0x34')],_0x292205['query']);_0x32f1b4['attributes']=_['intersection'](_0x292205[_0x3071('0x34')],qs[_0x3071('0x35')](_0x177b5f['query'][_0x3071('0x35')]));_0x32f1b4[_0x3071('0x36')]=_0x32f1b4[_0x3071('0x36')][_0x3071('0x37')]?_0x32f1b4['attributes']:_0x292205[_0x3071('0x34')];if(_0x177b5f[_0x3071('0x30')][_0x3071('0x38')]){_0x32f1b4[_0x3071('0x39')]=[{'all':!![]}];}_0x32f1b4=_[_0x3071('0x3a')]({},_0x32f1b4,_0x177b5f[_0x3071('0x3b')]);return db[_0x3071('0x2e')][_0x3071('0x3c')](_0x32f1b4)['then'](handleEntityNotFound(_0x3921a1,null))[_0x3071('0x27')](respondWithResult(_0x3921a1,null))['catch'](handleError(_0x3921a1,null));};exports['update']=function(_0x1a1a64,_0xa3a7ae){if(_0x1a1a64['body']['id']){delete _0x1a1a64[_0x3071('0x3d')]['id'];}return db[_0x3071('0x2e')][_0x3071('0x3c')]({'where':{'id':_0x1a1a64[_0x3071('0x2d')]['id']}})[_0x3071('0x27')](handleEntityNotFound(_0xa3a7ae,null))[_0x3071('0x27')](saveUpdates(_0x1a1a64['body'],null))[_0x3071('0x27')](respondWithResult(_0xa3a7ae,null))[_0x3071('0x3e')](handleError(_0xa3a7ae,null));};exports['destroy']=function(_0x44ad05,_0x5b1392){return db[_0x3071('0x2e')][_0x3071('0x3c')]({'where':{'id':_0x44ad05['params']['id']}})['then'](handleEntityNotFound(_0x5b1392,null))[_0x3071('0x27')](removeEntity(_0x5b1392,null))[_0x3071('0x3e')](handleError(_0x5b1392,null));};
\ No newline at end of file
index ac94ec6..7d0edc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b3f=['./mailApplication.attributes','define','utf8mb4','util','api','moment','request-promise','path','../../config/environment'];(function(_0x5e6ac8,_0x406fd5){var _0x1f0cb3=function(_0x56bcda){while(--_0x56bcda){_0x5e6ac8['push'](_0x5e6ac8['shift']());}};_0x1f0cb3(++_0x406fd5);}(_0x2b3f,0x16b));var _0xf2b3=function(_0x18a596,_0x328cda){_0x18a596=_0x18a596-0x0;var _0x4aae62=_0x2b3f[_0x18a596];return _0x4aae62;};'use strict';var _=require('lodash');var util=require(_0xf2b3('0x0'));var logger=require('../../config/logger')(_0xf2b3('0x1'));var moment=require(_0xf2b3('0x2'));var BPromise=require('bluebird');var rp=require(_0xf2b3('0x3'));var fs=require('fs');var path=require(_0xf2b3('0x4'));var rimraf=require('rimraf');var config=require(_0xf2b3('0x5'));var attributes=require(_0xf2b3('0x6'));module['exports']=function(_0x47f1a5,_0x2940e8){return _0x47f1a5[_0xf2b3('0x7')]('MailApplication',attributes,{'tableName':'mail_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf2b3('0x8'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xffdd=['api','moment','bluebird','request-promise','path','../../config/environment','./mailApplication.attributes','exports','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xffdd,0x165));var _0xdffd=function(_0x2ca070,_0x5e86f7){_0x2ca070=_0x2ca070-0x0;var _0x2ae74d=_0xffdd[_0x2ca070];return _0x2ae74d;};'use strict';var _=require(_0xdffd('0x0'));var util=require(_0xdffd('0x1'));var logger=require(_0xdffd('0x2'))(_0xdffd('0x3'));var moment=require(_0xdffd('0x4'));var BPromise=require(_0xdffd('0x5'));var rp=require(_0xdffd('0x6'));var fs=require('fs');var path=require(_0xdffd('0x7'));var rimraf=require('rimraf');var config=require(_0xdffd('0x8'));var attributes=require(_0xdffd('0x9'));module[_0xdffd('0xa')]=function(_0x486e51,_0x1303b7){return _0x486e51['define'](_0xdffd('0xb'),attributes,{'tableName':_0xdffd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xdffd('0xd'),'collate':_0xdffd('0xe')});};
\ No newline at end of file
index c349afb..47ad97d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f7e=['client','request','then','info','MailApplication,\x20%s,\x20%s','debug','MailApplication,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','body','options','raw','where','attributes','UpdateMailApplication','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x5f7203,_0x5404b6){var _0x2b1374=function(_0x5a6359){while(--_0x5a6359){_0x5f7203['push'](_0x5f7203['shift']());}};_0x2b1374(++_0x5404b6);}(_0x7f7e,0x146));var _0xe7f7=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x7f7e[_0x199572];return _0x13cfa3;};'use strict';var _=require(_0xe7f7('0x0'));var util=require(_0xe7f7('0x1'));var moment=require(_0xe7f7('0x2'));var BPromise=require('bluebird');var rs=require(_0xe7f7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe7f7('0x4'))['db'];var utils=require(_0xe7f7('0x5'));var logger=require(_0xe7f7('0x6'))(_0xe7f7('0x7'));var config=require(_0xe7f7('0x8'));var jayson=require(_0xe7f7('0x9'));var client=jayson[_0xe7f7('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5792de,_0x2b6aa4,_0xd19cfe){return new BPromise(function(_0x1a4992,_0x35d274){return client[_0xe7f7('0xb')](_0x5792de,_0xd19cfe)[_0xe7f7('0xc')](function(_0x2ae83a){logger[_0xe7f7('0xd')](_0xe7f7('0xe'),_0x2b6aa4,'request\x20sent');logger[_0xe7f7('0xf')](_0xe7f7('0x10'),_0x2b6aa4,_0xe7f7('0x11'),JSON['stringify'](_0x2ae83a));if(_0x2ae83a[_0xe7f7('0x12')]){if(_0x2ae83a[_0xe7f7('0x12')]['code']===0x1f4){logger[_0xe7f7('0x12')]('MailApplication,\x20%s,\x20%s',_0x2b6aa4,_0x2ae83a['error']['message']);return _0x35d274(_0x2ae83a[_0xe7f7('0x12')]['message']);}logger['error'](_0xe7f7('0xe'),_0x2b6aa4,_0x2ae83a[_0xe7f7('0x12')][_0xe7f7('0x13')]);return _0x1a4992(_0x2ae83a[_0xe7f7('0x12')][_0xe7f7('0x13')]);}else{logger['info'](_0xe7f7('0xe'),_0x2b6aa4,'request\x20sent');_0x1a4992(_0x2ae83a[_0xe7f7('0x14')][_0xe7f7('0x13')]);}})[_0xe7f7('0x15')](function(_0x272f32){logger['error']('MailApplication,\x20%s,\x20%s',_0x2b6aa4,_0x272f32);_0x35d274(_0x272f32);});});}exports['UpdateMailApplication']=function(_0x528907){var _0x751fa0=this;return new Promise(function(_0x26ef70,_0x203aea){return db['MailApplication']['update'](_0x528907[_0xe7f7('0x16')],{'raw':_0x528907[_0xe7f7('0x17')]?_0x528907[_0xe7f7('0x17')][_0xe7f7('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x528907[_0xe7f7('0x17')]?_0x528907['options'][_0xe7f7('0x19')]||null:null,'attributes':_0x528907[_0xe7f7('0x17')]?_0x528907[_0xe7f7('0x17')][_0xe7f7('0x1a')]||null:null,'limit':_0x528907['options']?_0x528907['options']['limit']||null:null})[_0xe7f7('0xc')](function(_0x89bb62){logger[_0xe7f7('0xd')](_0xe7f7('0x1b'),_0x528907);logger[_0xe7f7('0xf')](_0xe7f7('0x1b'),_0x528907,JSON['stringify'](_0x89bb62));_0x26ef70(_0x89bb62);})[_0xe7f7('0x15')](function(_0x1d8218){logger[_0xe7f7('0x12')](_0xe7f7('0x1b'),_0x1d8218[_0xe7f7('0x13')],_0x528907);_0x203aea(_0x751fa0[_0xe7f7('0x12')](0x1f4,_0x1d8218['message']));});});};
\ No newline at end of file
+var _0x562f=['where','limit','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','MailApplication,\x20%s,\x20%s','MailApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateMailApplication','MailApplication','update','body','options','raw'];(function(_0x4433a9,_0x4fc58c){var _0x478f70=function(_0x29ead6){while(--_0x29ead6){_0x4433a9['push'](_0x4433a9['shift']());}};_0x478f70(++_0x4fc58c);}(_0x562f,0x10b));var _0xf562=function(_0x19a2eb,_0x2df439){_0x19a2eb=_0x19a2eb-0x0;var _0x3c8514=_0x562f[_0x19a2eb];return _0x3c8514;};'use strict';var _=require(_0xf562('0x0'));var util=require(_0xf562('0x1'));var moment=require(_0xf562('0x2'));var BPromise=require(_0xf562('0x3'));var rs=require(_0xf562('0x4'));var fs=require('fs');var Redis=require(_0xf562('0x5'));var db=require(_0xf562('0x6'))['db'];var utils=require(_0xf562('0x7'));var logger=require('../../config/logger')(_0xf562('0x8'));var config=require(_0xf562('0x9'));var jayson=require(_0xf562('0xa'));var client=jayson[_0xf562('0xb')][_0xf562('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xd62436,_0x27e822,_0x273e48){return new BPromise(function(_0x1ddf2a,_0x58c0e3){return client['request'](_0xd62436,_0x273e48)[_0xf562('0xd')](function(_0x4faf30){logger[_0xf562('0xe')](_0xf562('0xf'),_0x27e822,'request\x20sent');logger['debug'](_0xf562('0x10'),_0x27e822,_0xf562('0x11'),JSON[_0xf562('0x12')](_0x4faf30));if(_0x4faf30[_0xf562('0x13')]){if(_0x4faf30[_0xf562('0x13')][_0xf562('0x14')]===0x1f4){logger['error'](_0xf562('0xf'),_0x27e822,_0x4faf30[_0xf562('0x13')][_0xf562('0x15')]);return _0x58c0e3(_0x4faf30[_0xf562('0x13')]['message']);}logger[_0xf562('0x13')]('MailApplication,\x20%s,\x20%s',_0x27e822,_0x4faf30['error'][_0xf562('0x15')]);return _0x1ddf2a(_0x4faf30['error'][_0xf562('0x15')]);}else{logger[_0xf562('0xe')](_0xf562('0xf'),_0x27e822,'request\x20sent');_0x1ddf2a(_0x4faf30[_0xf562('0x16')][_0xf562('0x15')]);}})[_0xf562('0x17')](function(_0x2d5dd4){logger['error'](_0xf562('0xf'),_0x27e822,_0x2d5dd4);_0x58c0e3(_0x2d5dd4);});});}exports[_0xf562('0x18')]=function(_0x354587){var _0x1a17f7=this;return new Promise(function(_0x5e8420,_0x2ea7e9){return db[_0xf562('0x19')][_0xf562('0x1a')](_0x354587[_0xf562('0x1b')],{'raw':_0x354587[_0xf562('0x1c')]?_0x354587['options'][_0xf562('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x354587[_0xf562('0x1c')]?_0x354587[_0xf562('0x1c')][_0xf562('0x1e')]||null:null,'attributes':_0x354587[_0xf562('0x1c')]?_0x354587['options']['attributes']||null:null,'limit':_0x354587[_0xf562('0x1c')]?_0x354587[_0xf562('0x1c')][_0xf562('0x1f')]||null:null})[_0xf562('0xd')](function(_0x35aec1){logger[_0xf562('0xe')](_0xf562('0x18'),_0x354587);logger[_0xf562('0x20')](_0xf562('0x18'),_0x354587,JSON[_0xf562('0x12')](_0x35aec1));_0x5e8420(_0x35aec1);})[_0xf562('0x17')](function(_0x1c1208){logger[_0xf562('0x13')](_0xf562('0x18'),_0x1c1208[_0xf562('0x15')],_0x354587);_0x2ea7e9(_0x1a17f7[_0xf562('0x13')](0x1f4,_0x1c1208['message']));});});};
\ No newline at end of file
index 4122fbe..9724bf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5143=['download','post','create','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','put','mailinteraction:update','update','delete','mailinteraction:destroy','destroy','removeTags','exports','Router','../../components/interaction/service','./mailInteraction.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download'];(function(_0x2329f8,_0x23b3d5){var _0x44786c=function(_0x1a8ccc){while(--_0x1a8ccc){_0x2329f8['push'](_0x2329f8['shift']());}};_0x44786c(++_0x23b3d5);}(_0x5143,0xa7));var _0x3514=function(_0xd6cd,_0x5ea986){_0xd6cd=_0xd6cd-0x0;var _0x395449=_0x5143[_0xd6cd];return _0x395449;};'use strict';var express=require('express');var router=express[_0x3514('0x0')]();var auth=require('../../components/auth/service');var interaction=require(_0x3514('0x1'));var controller=require(_0x3514('0x2'));router[_0x3514('0x3')]('/',auth['isAuthenticated'](),controller[_0x3514('0x4')]);router['get'](_0x3514('0x5'),auth[_0x3514('0x6')](),controller[_0x3514('0x7')]);router[_0x3514('0x3')](_0x3514('0x8'),auth['isAuthenticated'](),controller[_0x3514('0x9')]);router[_0x3514('0x3')](_0x3514('0xa'),auth[_0x3514('0x6')](),controller[_0x3514('0xb')]);router[_0x3514('0x3')](_0x3514('0xc'),auth[_0x3514('0x6')](),controller[_0x3514('0xd')]);router[_0x3514('0xe')]('/',auth[_0x3514('0x6')](),controller[_0x3514('0xf')]);router['post']('/:id/messages',auth[_0x3514('0x6')](),controller[_0x3514('0x10')]);router[_0x3514('0xe')](_0x3514('0x11'),auth[_0x3514('0x6')](),interaction[_0x3514('0x12')](_0x3514('0x13'),_0x3514('0x14')),controller[_0x3514('0x15')]);router[_0x3514('0x16')](_0x3514('0x8'),auth[_0x3514('0x6')](),interaction[_0x3514('0x12')](_0x3514('0x13'),_0x3514('0x17')),controller[_0x3514('0x18')]);router[_0x3514('0x19')]('/:id',auth[_0x3514('0x6')](),interaction[_0x3514('0x12')](_0x3514('0x13'),_0x3514('0x1a')),controller[_0x3514('0x1b')]);router['delete'](_0x3514('0x11'),auth['isAuthenticated'](),controller[_0x3514('0x1c')]);module[_0x3514('0x1d')]=router;
\ No newline at end of file
+var _0xcc98=['../../components/interaction/service','get','isAuthenticated','index','/describe','/:id/messages','getMessages','download','create','post','addMessage','tracked','mailinteraction:addtags','addTags','/:id','mail','update','destroy','delete','removeTags','exports','Router','../../components/auth/service'];(function(_0xe32406,_0x45e983){var _0x187a0b=function(_0x455593){while(--_0x455593){_0xe32406['push'](_0xe32406['shift']());}};_0x187a0b(++_0x45e983);}(_0xcc98,0x1e1));var _0x8cc9=function(_0x1bbfd8,_0x4c8511){_0x1bbfd8=_0x1bbfd8-0x0;var _0x4bf75a=_0xcc98[_0x1bbfd8];return _0x4bf75a;};'use strict';var express=require('express');var router=express[_0x8cc9('0x0')]();var auth=require(_0x8cc9('0x1'));var interaction=require(_0x8cc9('0x2'));var controller=require('./mailInteraction.controller');router[_0x8cc9('0x3')]('/',auth[_0x8cc9('0x4')](),controller[_0x8cc9('0x5')]);router[_0x8cc9('0x3')](_0x8cc9('0x6'),auth['isAuthenticated'](),controller['describe']);router[_0x8cc9('0x3')]('/:id',auth[_0x8cc9('0x4')](),controller['show']);router[_0x8cc9('0x3')](_0x8cc9('0x7'),auth[_0x8cc9('0x4')](),controller[_0x8cc9('0x8')]);router[_0x8cc9('0x3')]('/:id/download',auth[_0x8cc9('0x4')](),controller[_0x8cc9('0x9')]);router['post']('/',auth['isAuthenticated'](),controller[_0x8cc9('0xa')]);router[_0x8cc9('0xb')]('/:id/messages',auth['isAuthenticated'](),controller[_0x8cc9('0xc')]);router[_0x8cc9('0xb')]('/:id/tags',auth[_0x8cc9('0x4')](),interaction[_0x8cc9('0xd')]('mail',_0x8cc9('0xe')),controller[_0x8cc9('0xf')]);router['put'](_0x8cc9('0x10'),auth[_0x8cc9('0x4')](),interaction[_0x8cc9('0xd')](_0x8cc9('0x11'),'mailinteraction:update'),controller[_0x8cc9('0x12')]);router['delete']('/:id',auth[_0x8cc9('0x4')](),interaction[_0x8cc9('0xd')]('mail','mailinteraction:destroy'),controller[_0x8cc9('0x13')]);router[_0x8cc9('0x14')]('/:id/tags',auth[_0x8cc9('0x4')](),controller[_0x8cc9('0x15')]);module[_0x8cc9('0x16')]=router;
\ No newline at end of file
index 881f941..ddfb60c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4573=['ENUM','out','sequelize','DATE','STRING','TEXT','long','BOOLEAN'];(function(_0x11a220,_0x4e470a){var _0x20d8fe=function(_0xbedfd){while(--_0xbedfd){_0x11a220['push'](_0x11a220['shift']());}};_0x20d8fe(++_0x4e470a);}(_0x4573,0x12a));var _0x3457=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4573[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x3457('0x0'));var iconv=require('iconv');module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x3457('0x1')]},'disposition':{'type':Sequelize[_0x3457('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x3457('0x2')]},'note':{'type':Sequelize[_0x3457('0x2')]},'inReplyTo':{'type':Sequelize[_0x3457('0x2')](0x1fe)},'to':{'type':Sequelize[_0x3457('0x2')]},'cc':{'type':Sequelize[_0x3457('0x3')](_0x3457('0x4'))},'subject':{'type':Sequelize[_0x3457('0x3')]()},'attach':{'type':Sequelize[_0x3457('0x5')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x3457('0x1')]},'substatus':{'type':Sequelize[_0x3457('0x2')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x3457('0x6')]('in',_0x3457('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x3457('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x3457('0x5')],'defaultValue':![]}};
\ No newline at end of file
+var _0xb9e1=['long','ENUM','out','sequelize','iconv','exports','BOOLEAN','DATE','STRING','TEXT'];(function(_0x14474a,_0x5be492){var _0x1f8b71=function(_0x4a7acd){while(--_0x4a7acd){_0x14474a['push'](_0x14474a['shift']());}};_0x1f8b71(++_0x5be492);}(_0xb9e1,0xad));var _0x1b9e=function(_0x205c11,_0x941d3d){_0x205c11=_0x205c11-0x0;var _0x550e7b=_0xb9e1[_0x205c11];return _0x550e7b;};'use strict';var Sequelize=require(_0x1b9e('0x0'));var iconv=require(_0x1b9e('0x1'));module[_0x1b9e('0x2')]={'closed':{'type':Sequelize[_0x1b9e('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1b9e('0x4')]},'disposition':{'type':Sequelize[_0x1b9e('0x5')]},'secondDisposition':{'type':Sequelize[_0x1b9e('0x5')]},'thirdDisposition':{'type':Sequelize[_0x1b9e('0x5')]},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x1b9e('0x5')](0x1fe)},'to':{'type':Sequelize[_0x1b9e('0x5')]},'cc':{'type':Sequelize[_0x1b9e('0x6')](_0x1b9e('0x7'))},'subject':{'type':Sequelize[_0x1b9e('0x6')]()},'attach':{'type':Sequelize[_0x1b9e('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x1b9e('0x4')]},'substatus':{'type':Sequelize[_0x1b9e('0x5')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x1b9e('0x8')]('in',_0x1b9e('0x9')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x1b9e('0x8')]('in',_0x1b9e('0x9')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x1b9e('0x3')],'defaultValue':![]}};
\ No newline at end of file
index b582650..d651fd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f6c=['zip-dir','moment','bluebird','path','squel','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','html-entities','redis','localhost','socket.io-emitter','./mailInteraction.socket','register','sendStatus','end','json','offset','limit','undefined','count','status','set','Content-Range','update','destroy','error','stack','name','Users','map','TagIds','Tags','split','forEach','push','MailMessage','findOne','plainBody','-id','then','trimStart','catch','MailInteraction','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','select','field','color','from','u.id','u.fullname','ui.MailInteractionId','user_has_mail_interactions','left_join','users','mail_interactions','cm_contacts','o.id\x20=\x20i.UserId','a.id\x20=\x20i.MailAccountId','me.MailInteractionId\x20=\x20i.id','mail_interaction_has_tags','it.MailInteractionId\x20=\x20i.id','tools_tags','expr','parseSearch','search','sqlOperator','conditions','unreadMessages','having','Contact','operator','$substring','value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','Tag','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','UserId','type','text','some','compact','isEmpty','where','i.MailAccountId\x20IN\x20?','concat','parse','$gte','$lte','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','getMailAccounts','i.MailAccountId\x20IS\x20NULL','agent','MailAccountId','sequelize','toString','merge','a.key','a.mandatoryDisposition','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.attach','i.lastMsgDirection','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.to','i.ContactId','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','c.mobile','c.fax','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','Setting','enableEmailPreview','all','rows','show','includeAll','include','options','create','body','params','describe','addMessage','ids','omit','getMessages','pick','findAll','inlineCss','addTags','setTags','spread','emit','mailInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','format','transcript-%d-%s.zip','attachments','Attachment','Messages','bcc','subject','createdAt','get','each','decode','headers','Bcc','Attachments','existsSync','readFileSync','build','unlinkSync'];(function(_0x3679c2,_0x258bb5){var _0x30ca5c=function(_0x1119c6){while(--_0x1119c6){_0x3679c2['push'](_0x3679c2['shift']());}};_0x30ca5c(++_0x258bb5);}(_0x0f6c,0x1c2));var _0xc0f6=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x0f6c[_0x2f5ac5];return _0x37c9a8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc0f6('0x0'));var moment=require(_0xc0f6('0x1'));var BPromise=require(_0xc0f6('0x2'));var util=require('util');var path=require(_0xc0f6('0x3'));var fs=require('fs');var _=require('lodash');var squel=require(_0xc0f6('0x4'));var juice=require(_0xc0f6('0x5'));var Redis=require(_0xc0f6('0x6'));var qs=require(_0xc0f6('0x7'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0xc0f6('0x8'))(_0xc0f6('0x9'));var config=require(_0xc0f6('0xa'));var db=require(_0xc0f6('0xb'))['db'];var htmlEntities=require(_0xc0f6('0xc'));config[_0xc0f6('0xd')]=_['defaults'](config[_0xc0f6('0xd')],{'host':_0xc0f6('0xe'),'port':0x18eb});var socket=require(_0xc0f6('0xf'))(new Redis(config[_0xc0f6('0xd')]));require(_0xc0f6('0x10'))[_0xc0f6('0x11')](socket);function respondWithStatusCode(_0x4b4c6f,_0x66753d){_0x66753d=_0x66753d||0xcc;return function(_0x113d51){if(_0x113d51){return _0x4b4c6f[_0xc0f6('0x12')](_0x66753d);}return _0x4b4c6f['status'](_0x66753d)[_0xc0f6('0x13')]();};}function respondWithResult(_0x5a700b,_0x4a0131){_0x4a0131=_0x4a0131||0xc8;return function(_0xacf0ae){if(_0xacf0ae){return _0x5a700b['status'](_0x4a0131)[_0xc0f6('0x14')](_0xacf0ae);}};}function respondWithFilteredResult(_0x30f9ba,_0x443c54){return function(_0x2c83c7){if(_0x2c83c7){var _0x5686ef=typeof _0x443c54[_0xc0f6('0x15')]==='undefined'&&typeof _0x443c54[_0xc0f6('0x16')]===_0xc0f6('0x17');var _0xfd1028=_0x2c83c7[_0xc0f6('0x18')];var _0x115d13=_0x5686ef?0x0:_0x443c54['offset'];var _0x8c2b00=_0x5686ef?_0x2c83c7[_0xc0f6('0x18')]:_0x443c54[_0xc0f6('0x15')]+_0x443c54[_0xc0f6('0x16')];var _0x1689a6;if(_0x8c2b00>=_0xfd1028){_0x8c2b00=_0xfd1028;_0x1689a6=0xc8;}else{_0x1689a6=0xce;}_0x30f9ba[_0xc0f6('0x19')](_0x1689a6);return _0x30f9ba[_0xc0f6('0x1a')](_0xc0f6('0x1b'),_0x115d13+'-'+_0x8c2b00+'/'+_0xfd1028)['json'](_0x2c83c7);}return null;};}function saveUpdates(_0x38b6c2){return function(_0x29a0aa){if(_0x29a0aa){return _0x29a0aa[_0xc0f6('0x1c')](_0x38b6c2)['then'](function(_0x5f75e7){return _0x5f75e7;});}return null;};}function removeEntity(_0x25c037){return function(_0x5a67ae){if(_0x5a67ae){return _0x5a67ae[_0xc0f6('0x1d')]()['then'](function(){_0x25c037['status'](0xcc)[_0xc0f6('0x13')]();});}};}function handleEntityNotFound(_0x393da7){return function(_0x36fd02){if(!_0x36fd02){_0x393da7[_0xc0f6('0x12')](0x194);}return _0x36fd02;};}function handleError(_0x7dd5bf,_0x199377){_0x199377=_0x199377||0x1f4;return function(_0x4399ed){logger[_0xc0f6('0x1e')](_0x4399ed[_0xc0f6('0x1f')]);if(_0x4399ed[_0xc0f6('0x20')]){delete _0x4399ed['name'];}_0x7dd5bf[_0xc0f6('0x19')](_0x199377)['send'](_0x4399ed);};}function getInteractionUsers(_0x4d2713,_0x511195){return new BPromise(function(_0x4f083d,_0x5c5764){try{if(_0x511195[_0x4d2713['id']]){_0x4d2713[_0xc0f6('0x21')]=_[_0xc0f6('0x22')](_0x511195[_0x4d2713['id']],function(_0x5934d6){return{'id':_0x5934d6['id'],'fullname':_0x5934d6['fullname']};});}}catch(_0x5c1a13){_0x5c5764(_0x5c1a13);}_0x4f083d(_0x4d2713);});}function getInteractionTags(_0x4fb545,_0x264175){return new BPromise(function(_0xe7c374,_0x1bfb05){try{if(_0x4fb545[_0xc0f6('0x23')]){_0x4fb545[_0xc0f6('0x24')]=[];_0x4fb545[_0xc0f6('0x23')][_0xc0f6('0x25')](',')[_0xc0f6('0x26')](function(_0x25ad61){_0x4fb545[_0xc0f6('0x24')][_0xc0f6('0x27')](_0x264175[_0x25ad61]);});}delete _0x4fb545[_0xc0f6('0x23')];}catch(_0x495689){_0x1bfb05(_0x495689);}_0xe7c374(_0x4fb545);});}function getLastMessageText(_0x2a0e63){return new BPromise(function(_0x4e3eea,_0x3e66a1){return db[_0xc0f6('0x28')][_0xc0f6('0x29')]({'where':{'$and':[{'MailInteractionId':_0x2a0e63['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':'out'},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0xc0f6('0x2a')],'order':_0xc0f6('0x2b'),'raw':!![]})[_0xc0f6('0x2c')](function(_0x2fb8e8){if(_0x2fb8e8&&_0x2fb8e8[_0xc0f6('0x2a')]){_0x2a0e63['lastMsgText']=_[_0xc0f6('0x2d')](_0x2fb8e8['plainBody']);}_0x4e3eea(_0x2a0e63);})[_0xc0f6('0x2e')](function(_0x25dea5){_0x3e66a1(_0x25dea5);});});}function updateMailInteraction(_0x584ce9,_0x1ac34,_0x4517bc,_0x21ef08){return new BPromise(function(_0x3af583,_0xaebb0e){return getInteractionUsers(_0x584ce9,_0x4517bc)[_0xc0f6('0x2c')](function(_0x5cb937){return getInteractionTags(_0x5cb937,_0x1ac34);})[_0xc0f6('0x2c')](function(_0xb0665f){if(_0x21ef08){_0x3af583(getLastMessageText(_0xb0665f));}else{_0x3af583(_0xb0665f);}})['catch'](function(_0x3e157b){_0xaebb0e(_0x3e157b);});});}exports['index']=function(_0xfab234,_0x565819){var _0x4361c8={},_0x213c8d={},_0x15754e={'count':0x0,'rows':[]};var _0x35810c=_[_0xc0f6('0x22')](db[_0xc0f6('0x2f')][_0xc0f6('0x30')],function(_0x5ea5b2){return{'name':_0x5ea5b2[_0xc0f6('0x31')],'type':_0x5ea5b2['type'][_0xc0f6('0x32')]};});_0x213c8d[_0xc0f6('0x33')]=_[_0xc0f6('0x22')](_0x35810c,_0xc0f6('0x20'));_0x213c8d[_0xc0f6('0x34')]=_[_0xc0f6('0x35')](_0xfab234[_0xc0f6('0x34')]);_0x213c8d['filters']=_[_0xc0f6('0x36')](_0x213c8d['model'],_0x213c8d[_0xc0f6('0x34')]);_0x4361c8[_0xc0f6('0x37')]=_['intersection'](_0x213c8d[_0xc0f6('0x33')],qs[_0xc0f6('0x38')](_0xfab234['query'][_0xc0f6('0x38')]));_0x4361c8[_0xc0f6('0x37')]=_0x4361c8[_0xc0f6('0x37')][_0xc0f6('0x39')]?_0x4361c8[_0xc0f6('0x37')]:_0x213c8d[_0xc0f6('0x33')];if(!_0xfab234['query'][_0xc0f6('0x3a')](_0xc0f6('0x3b'))){_0x4361c8['limit']=qs[_0xc0f6('0x16')](_0xfab234[_0xc0f6('0x34')]['limit']);_0x4361c8[_0xc0f6('0x15')]=qs['offset'](_0xfab234[_0xc0f6('0x34')][_0xc0f6('0x15')]);}_0x4361c8[_0xc0f6('0x3c')]=qs[_0xc0f6('0x3d')](_0xfab234[_0xc0f6('0x34')][_0xc0f6('0x3d')]);_0x4361c8['where']=qs[_0xc0f6('0x3e')](_['pick'](_0xfab234[_0xc0f6('0x34')],_0x213c8d[_0xc0f6('0x3e')]),_0x35810c);var _0x33ac92=[];var _0x3050f5=squel[_0xc0f6('0x3f')]()[_0xc0f6('0x40')]('id')[_0xc0f6('0x40')](_0xc0f6('0x20'))[_0xc0f6('0x40')](_0xc0f6('0x41'))[_0xc0f6('0x42')]('tools_tags');var _0x5436cc=squel[_0xc0f6('0x3f')]()[_0xc0f6('0x40')](_0xc0f6('0x43'))[_0xc0f6('0x40')](_0xc0f6('0x44'))[_0xc0f6('0x40')](_0xc0f6('0x45'))[_0xc0f6('0x42')](_0xc0f6('0x46'),'ui')[_0xc0f6('0x47')](_0xc0f6('0x48'),'u','u.id\x20=\x20ui.UserId');var _0x37b241=squel[_0xc0f6('0x3f')]()[_0xc0f6('0x42')](_0xc0f6('0x49'),'i')['left_join'](_0xc0f6('0x4a'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xc0f6('0x47')](_0xc0f6('0x48'),'o',_0xc0f6('0x4b'))['left_join']('mail_accounts','a',_0xc0f6('0x4c'))[_0xc0f6('0x47')]('mail_messages','me',_0xc0f6('0x4d'))[_0xc0f6('0x47')](_0xc0f6('0x4e'),'it',_0xc0f6('0x4f'))[_0xc0f6('0x47')](_0xc0f6('0x50'),'t','t.id\x20=\x20it.TagId');var _0x3596a1=squel['expr']();var _0x46e747=[];var _0x55e1d4=squel[_0xc0f6('0x51')]();var _0x18b0cb;if(_0xfab234[_0xc0f6('0x34')]['search']){_0x18b0cb=as[_0xc0f6('0x52')](_0xfab234[_0xc0f6('0x34')][_0xc0f6('0x53')]);var _0x37f476=_0x18b0cb[_0xc0f6('0x54')];for(var _0x445ec7=0x0;_0x445ec7<_0x18b0cb['conditions'][_0xc0f6('0x39')];_0x445ec7++){var _0x5bb5f7=_0x18b0cb[_0xc0f6('0x55')][_0x445ec7];var _0x1240ee='i';var _0x4c6cf5=_['find'](_0x35810c,[_0xc0f6('0x20'),_0x5bb5f7[_0xc0f6('0x40')]]);if(!_0x4c6cf5){switch(_0x5bb5f7[_0xc0f6('0x40')]){case _0xc0f6('0x56'):if(_0x5bb5f7['value']==0x1){_0x37b241[_0xc0f6('0x57')]('`'+_0x5bb5f7['field']+'`\x20=\x200');}else{_0x37b241[_0xc0f6('0x57')]('`'+_0x5bb5f7[_0xc0f6('0x40')]+'`\x20>\x200');}break;case _0xc0f6('0x58'):if(_0x5bb5f7[_0xc0f6('0x59')]===_0xc0f6('0x5a')){if(_0x5bb5f7[_0xc0f6('0x5b')][_0xc0f6('0x25')]('\x20')[_0xc0f6('0x39')]>0x1){_0x3596a1[_0x37f476](_0xc0f6('0x5c'),qs['getFullTextValue'](_0x5bb5f7[_0xc0f6('0x5b')]),null);}else{var _0x5ea03d='%'+_0x5bb5f7[_0xc0f6('0x5b')]+'%';_0x3596a1[_0x37f476](_0xc0f6('0x5d'),_0x5ea03d,_0x5ea03d,_0x5ea03d);}}else{_0x4c6cf5=_['find'](_0x35810c,['name',_0xc0f6('0x5e')]);_0x5bb5f7[_0xc0f6('0x40')]=_0xc0f6('0x5e');_0x1b94e2=as[_0xc0f6('0x5f')](_0x1240ee,_0x4c6cf5['type'],_0x5bb5f7);_0x3596a1[_0x37f476](_0x1b94e2['text'],_0x1b94e2[_0xc0f6('0x5b')][_0xc0f6('0x60')],_0x1b94e2[_0xc0f6('0x5b')][_0xc0f6('0x13')]);}break;case _0xc0f6('0x61'):var _0xd8a89=_0x5bb5f7[_0xc0f6('0x5b')][_0xc0f6('0x25')](',')['map'](function(_0x48b1a0){return Number(_0x48b1a0);});_0xd8a89['forEach'](function(_0x43768e){_0x55e1d4['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x43768e+',%');});_0x46e747=_['union'](_0x46e747,_0xd8a89);break;case _0xc0f6('0x62'):if(_0x5bb5f7[_0xc0f6('0x59')]==='$substring'){_0x3596a1[_0x37f476](_0xc0f6('0x63'),'%'+_0x5bb5f7[_0xc0f6('0x5b')]+'%',null);}else{_0x4c6cf5=_[_0xc0f6('0x64')](_0x35810c,[_0xc0f6('0x20'),'UserId']);_0x5bb5f7['field']=_0xc0f6('0x65');_0x1b94e2=as[_0xc0f6('0x5f')](_0x1240ee,_0x4c6cf5[_0xc0f6('0x66')],_0x5bb5f7);_0x3596a1[_0x37f476](_0x1b94e2[_0xc0f6('0x67')],_0x1b94e2[_0xc0f6('0x5b')][_0xc0f6('0x60')],_0x1b94e2[_0xc0f6('0x5b')][_0xc0f6('0x13')]);}break;case _0xc0f6('0x2a'):_0x1b94e2=as['buildExpression']('me',null,_0x5bb5f7);_0x3596a1[_0x37f476](_0x1b94e2['text'],_0x1b94e2[_0xc0f6('0x5b')][_0xc0f6('0x60')],_0x1b94e2[_0xc0f6('0x5b')][_0xc0f6('0x13')]);break;}}else{var _0x1b94e2=as[_0xc0f6('0x5f')](_0x1240ee,_0x4c6cf5[_0xc0f6('0x66')],_0x5bb5f7);_0x3596a1[_0x37f476](_0x1b94e2[_0xc0f6('0x67')],_0x1b94e2[_0xc0f6('0x5b')][_0xc0f6('0x60')],_0x1b94e2['value'][_0xc0f6('0x13')]);}}}else{var _0x24acec=_(_0xfab234[_0xc0f6('0x34')])['keys']()[_0xc0f6('0x22')](function(_0x31a31f){return _[_0xc0f6('0x68')](_0x35810c,[_0xc0f6('0x20'),_0x31a31f])?_0x31a31f:undefined;})[_0xc0f6('0x69')]()[_0xc0f6('0x5b')]();if(!_[_0xc0f6('0x6a')](_0x24acec)){_0x24acec[_0xc0f6('0x26')](function(_0x57f1bd){if(_0x57f1bd==='MailAccountId'){_0x37b241[_0xc0f6('0x6b')](_0xc0f6('0x6c'),[][_0xc0f6('0x6d')](_0xfab234[_0xc0f6('0x34')][_0x57f1bd]));}else if(_0x57f1bd==='createdAt'){var _0x357762=JSON[_0xc0f6('0x6e')](_0xfab234['query'][_0x57f1bd])[_0xc0f6('0x6f')];var _0x57baca=JSON['parse'](_0xfab234[_0xc0f6('0x34')][_0x57f1bd])[_0xc0f6('0x70')];_0x37b241[_0xc0f6('0x6b')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x357762,_0x57baca);}else{if(_0xfab234[_0xc0f6('0x34')][_0x57f1bd]==='null'){_0x37b241['where']('i.'+_0x57f1bd+'\x20IS\x20NULL');}else{_0x37b241['where']('i.'+_0x57f1bd+_0xc0f6('0x71'),_0xfab234[_0xc0f6('0x34')][_0x57f1bd]);}}});}if(_0xfab234[_0xc0f6('0x34')][_0xc0f6('0x72')]){if(_0xfab234['query'][_0xc0f6('0x72')]==0x1){_0x37b241[_0xc0f6('0x57')](_0xc0f6('0x73'));}else{_0x37b241[_0xc0f6('0x57')](_0xc0f6('0x74'));}}if(_0xfab234[_0xc0f6('0x34')][_0xc0f6('0x75')]){_0x46e747=_[_0xc0f6('0x76')](_0xfab234['query'][_0xc0f6('0x75')])?_0xfab234[_0xc0f6('0x34')][_0xc0f6('0x75')]:new Array(_0xfab234[_0xc0f6('0x34')][_0xc0f6('0x75')]);_0x46e747[_0xc0f6('0x26')](function(_0x4f1226){_0x55e1d4['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4f1226+',%');});}if(_0xfab234['query'][_0xc0f6('0x77')]){var _0x14c25d=_0xfab234['query'][_0xc0f6('0x77')]['replace']('\x5c','\x5c\x5c')[_0xc0f6('0x78')](/'/g,'\x27\x27');if(qs[_0xc0f6('0x79')](_0x14c25d)){_0x3596a1['or'](_0xc0f6('0x7a'),_0x14c25d+'%');}else if(qs[_0xc0f6('0x7b')](_0x14c25d)){_0x3596a1['or'](_0xc0f6('0x7c'),_0x14c25d+'%');}else{_0x3596a1['or'](_0xc0f6('0x7d'),qs[_0xc0f6('0x7e')](_0x14c25d))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x14c25d));}}}_0x37b241[_0xc0f6('0x6b')](_0x3596a1);_0x37b241[_0xc0f6('0x7f')](_0xc0f6('0x80'));var _0x3b2181={'type':db[_0xc0f6('0x81')][_0xc0f6('0x82')][_0xc0f6('0x83')],'raw':!![]};var _0x404c68=_0x37b241[_0xc0f6('0x84')]();_0x404c68['field']('i.id');_0x404c68['field'](_0xc0f6('0x85'),_0xc0f6('0x56'));if(_0x4361c8[_0xc0f6('0x3c')]){_0x4361c8['order'][_0xc0f6('0x26')](function(_0xf972c8){var _0x41d114=_0xf972c8[0x0]===_0xc0f6('0x86')?_0xf972c8[0x0]:'i.'+_0xf972c8[0x0];_0x37b241[_0xc0f6('0x3c')](_0x41d114,_0xf972c8[0x1]===_0xc0f6('0x87')?![]:!![]);});}if(!_[_0xc0f6('0x6a')](_0x46e747)){_0x37b241[_0xc0f6('0x57')](_0x55e1d4);_0x404c68['where'](_0xc0f6('0x88'),_0x46e747);}BPromise[_0xc0f6('0x89')]()[_0xc0f6('0x2c')](function(){if(!_0x18b0cb){if(_0xfab234['query']['MailAccountId'])return;_0x404c68[_0xc0f6('0x6b')](_0xc0f6('0x8a'));_0x37b241['where'](_0xc0f6('0x8a'));return;}if(_0xfab234[_0xc0f6('0x8b')][_0xc0f6('0x8c')]!=='agent')return;return _0xfab234[_0xc0f6('0x8b')][_0xc0f6('0x8d')]({'attributes':['id'],'raw':!![]})['then'](function(_0x430fb1){if(_[_0xc0f6('0x6a')](_0x430fb1)){_0x404c68[_0xc0f6('0x6b')](_0xc0f6('0x8e'));_0x37b241[_0xc0f6('0x6b')](_0xc0f6('0x8e'));}else{_0x404c68[_0xc0f6('0x6b')](_0xc0f6('0x6c'),_[_0xc0f6('0x22')](_0x430fb1,'id'));_0x37b241['where'](_0xc0f6('0x6c'),_[_0xc0f6('0x22')](_0x430fb1,'id'));}});})[_0xc0f6('0x2c')](function(){if(_0xfab234['user']['role']===_0xc0f6('0x8f')&&!_0x18b0cb&&!_0xfab234[_0xc0f6('0x34')][_0xc0f6('0x90')])return[];return db[_0xc0f6('0x91')]['query'](_0x404c68['toString'](),_0x3b2181);})[_0xc0f6('0x2c')](function(_0x5e5e19){_0x15754e['count']=_0x5e5e19[_0xc0f6('0x39')];if(_0x15754e[_0xc0f6('0x18')]===0x0)return[];return db['sequelize']['query'](_0x3050f5[_0xc0f6('0x92')](),_0x3b2181)['then'](function(_0x5f39b0){_0x33ac92=_['keyBy'](_0x5f39b0,'id');_0x3b2181=_[_0xc0f6('0x93')](_0x3b2181,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xfab234[_0xc0f6('0x34')][_0xc0f6('0x38')]){_0x4361c8['attributes']['forEach'](function(_0x18c566){_0x37b241[_0xc0f6('0x40')]('i.'+_0x18c566);});}else{_0x37b241[_0xc0f6('0x40')](_0xc0f6('0x85'),_0xc0f6('0x56'));_0x37b241[_0xc0f6('0x40')](_0xc0f6('0x94'),'Account.key');_0x37b241[_0xc0f6('0x40')](_0xc0f6('0x95'),'Account.mandatoryDisposition');_0x37b241['field']('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',_0xc0f6('0x86'));_0x37b241[_0xc0f6('0x40')](_0xc0f6('0x80'));_0x37b241[_0xc0f6('0x40')](_0xc0f6('0x96'));_0x37b241[_0xc0f6('0x40')](_0xc0f6('0x97'));_0x37b241[_0xc0f6('0x40')](_0xc0f6('0x98'));_0x37b241[_0xc0f6('0x40')](_0xc0f6('0x99'));_0x37b241[_0xc0f6('0x40')](_0xc0f6('0x9a'));_0x37b241[_0xc0f6('0x40')]('i.lastMsgAt');_0x37b241[_0xc0f6('0x40')](_0xc0f6('0x9b'));_0x37b241[_0xc0f6('0x40')](_0xc0f6('0x9c'));_0x37b241['field'](_0xc0f6('0x9d'));_0x37b241[_0xc0f6('0x40')](_0xc0f6('0x9e'));_0x37b241[_0xc0f6('0x40')](_0xc0f6('0x9f'));_0x37b241[_0xc0f6('0x40')]('i.substatus');_0x37b241[_0xc0f6('0x40')](_0xc0f6('0xa0'));_0x37b241['field'](_0xc0f6('0xa1'));_0x37b241[_0xc0f6('0x40')]('i.MailAccountId');_0x37b241[_0xc0f6('0x40')]('i.UserId');_0x37b241[_0xc0f6('0x40')](_0xc0f6('0xa2'),_0xc0f6('0xa3'));_0x37b241['field'](_0xc0f6('0xa4'),_0xc0f6('0xa5'));_0x37b241[_0xc0f6('0x40')](_0xc0f6('0xa6'),_0xc0f6('0xa7'));_0x37b241[_0xc0f6('0x40')](_0xc0f6('0xa8'),'Contact.phone');_0x37b241[_0xc0f6('0x40')](_0xc0f6('0xa9'),'Contact.mobile');_0x37b241[_0xc0f6('0x40')](_0xc0f6('0xaa'),'Contact.fax');_0x37b241[_0xc0f6('0x40')]('o.fullname','Owner.fullname');_0x37b241[_0xc0f6('0x40')]('o.internal','Owner.internal');_0x37b241[_0xc0f6('0x40')](_0xc0f6('0xab'),_0xc0f6('0x23'));}if(_0x4361c8['limit'])_0x37b241[_0xc0f6('0x16')](_0x4361c8[_0xc0f6('0x16')]);if(_0x4361c8['offset'])_0x37b241[_0xc0f6('0x15')](_0x4361c8[_0xc0f6('0x15')]);return db[_0xc0f6('0x91')]['query'](_0x37b241[_0xc0f6('0x92')](),_0x3b2181);})['then'](function(_0x545a49){if(_0x545a49[_0xc0f6('0x39')]>0x0)_0x5436cc[_0xc0f6('0x6b')](_0xc0f6('0xac'),_[_0xc0f6('0x22')](_0x545a49,'id'));return db[_0xc0f6('0x91')][_0xc0f6('0x34')](_0x5436cc[_0xc0f6('0x92')](),_0x3b2181)[_0xc0f6('0x2c')](function(_0x375f09){var _0xbd576e=_[_0xc0f6('0xad')](_0x375f09,_0xc0f6('0xae'));var _0x339cb8=[];return db[_0xc0f6('0xaf')]['findOne']({'attributes':[_0xc0f6('0xb0')],'raw':!![]})[_0xc0f6('0x2c')](function(_0x7f7b74){var _0x2288c3=_0x7f7b74[_0xc0f6('0xb0')];_0x545a49[_0xc0f6('0x26')](function(_0x32f48e){_0x339cb8['push'](updateMailInteraction(_0x32f48e,_0x33ac92,_0xbd576e,_0x2288c3));});return BPromise[_0xc0f6('0xb1')](_0x339cb8);});});});})[_0xc0f6('0x2c')](function(_0x396629){_0x15754e[_0xc0f6('0xb2')]=_0x396629;return _0x15754e;})['then'](respondWithFilteredResult(_0x565819,_0x4361c8))[_0xc0f6('0x2e')](handleError(_0x565819,null));};exports[_0xc0f6('0xb3')]=function(_0x154ccf,_0x822147){var _0x40ba87={'raw':![],'where':{'id':_0x154ccf['params']['id']}},_0x519ac6={};_0x519ac6[_0xc0f6('0x33')]=_[_0xc0f6('0x35')](db[_0xc0f6('0x2f')][_0xc0f6('0x30')]);_0x519ac6['query']=_[_0xc0f6('0x35')](_0x154ccf[_0xc0f6('0x34')]);_0x519ac6[_0xc0f6('0x3e')]=_[_0xc0f6('0x36')](_0x519ac6[_0xc0f6('0x33')],_0x519ac6['query']);_0x40ba87['attributes']=_[_0xc0f6('0x36')](_0x519ac6[_0xc0f6('0x33')],qs[_0xc0f6('0x38')](_0x154ccf[_0xc0f6('0x34')]['fields']));_0x40ba87[_0xc0f6('0x37')]=_0x40ba87[_0xc0f6('0x37')][_0xc0f6('0x39')]?_0x40ba87['attributes']:_0x519ac6[_0xc0f6('0x33')];if(_0x154ccf[_0xc0f6('0x34')][_0xc0f6('0xb4')]){_0x40ba87[_0xc0f6('0xb5')]=[{'all':!![]}];}_0x40ba87=_['merge']({},_0x40ba87,_0x154ccf[_0xc0f6('0xb6')]);return db[_0xc0f6('0x2f')][_0xc0f6('0x64')](_0x40ba87)[_0xc0f6('0x2c')](handleEntityNotFound(_0x822147,null))[_0xc0f6('0x2c')](respondWithResult(_0x822147,null))[_0xc0f6('0x2e')](handleError(_0x822147,null));};exports[_0xc0f6('0xb7')]=function(_0x328fc8,_0x4ccf2a){return db[_0xc0f6('0x2f')][_0xc0f6('0xb7')](_0x328fc8[_0xc0f6('0xb8')],{})[_0xc0f6('0x2c')](respondWithResult(_0x4ccf2a,0xc9))[_0xc0f6('0x2e')](handleError(_0x4ccf2a,null));};exports[_0xc0f6('0x1c')]=function(_0xc99fbe,_0x511bf4){if(_0xc99fbe['body']['id']){delete _0xc99fbe['body']['id'];}return db[_0xc0f6('0x2f')]['find']({'where':{'id':_0xc99fbe[_0xc0f6('0xb9')]['id']}})[_0xc0f6('0x2c')](handleEntityNotFound(_0x511bf4,null))['then'](saveUpdates(_0xc99fbe[_0xc0f6('0xb8')],null))[_0xc0f6('0x2c')](respondWithResult(_0x511bf4,null))[_0xc0f6('0x2e')](handleError(_0x511bf4,null));};exports['destroy']=function(_0x4a1041,_0x2947f1){return db[_0xc0f6('0x2f')][_0xc0f6('0x64')]({'where':{'id':_0x4a1041[_0xc0f6('0xb9')]['id']}})[_0xc0f6('0x2c')](handleEntityNotFound(_0x2947f1,null))[_0xc0f6('0x2c')](removeEntity(_0x2947f1,null))[_0xc0f6('0x2e')](handleError(_0x2947f1,null));};exports[_0xc0f6('0xba')]=function(_0x3d6c11,_0x3fd251){return db[_0xc0f6('0x2f')][_0xc0f6('0xba')]()['then'](respondWithResult(_0x3fd251,null))[_0xc0f6('0x2e')](handleError(_0x3fd251,null));};exports[_0xc0f6('0xbb')]=function(_0x160517,_0x38c8fd){return db[_0xc0f6('0x28')][_0xc0f6('0x64')]({'where':{'id':_0x160517[_0xc0f6('0xb9')]['id']}})[_0xc0f6('0x2c')](handleEntityNotFound(_0x38c8fd,null))[_0xc0f6('0x2c')](function(_0x2e69d3){if(_0x2e69d3){return _0x2e69d3[_0xc0f6('0xbb')](_0x160517[_0xc0f6('0xb8')][_0xc0f6('0xbc')],_[_0xc0f6('0xbd')](_0x160517[_0xc0f6('0xb8')],[_0xc0f6('0xbc'),'id'])||{});}})[_0xc0f6('0x2c')](respondWithResult(_0x38c8fd,null))[_0xc0f6('0x2e')](handleError(_0x38c8fd,null));};exports[_0xc0f6('0xbe')]=function(_0x503fd9,_0x4d0947){var _0x340b2b={'raw':![],'where':{}};var _0x55de23={};var _0x31b628={'count':0x0,'rows':[]};return db[_0xc0f6('0x2f')][_0xc0f6('0x29')]({'where':{'id':_0x503fd9['params']['id']}})[_0xc0f6('0x2c')](handleEntityNotFound(_0x4d0947,null))['then'](function(_0x192263){if(_0x192263){_0x55de23[_0xc0f6('0x33')]=_[_0xc0f6('0x35')](db[_0xc0f6('0x28')][_0xc0f6('0x30')]);_0x55de23[_0xc0f6('0x34')]=_[_0xc0f6('0x35')](_0x503fd9[_0xc0f6('0x34')]);_0x55de23[_0xc0f6('0x3e')]=_[_0xc0f6('0x36')](_0x55de23[_0xc0f6('0x33')],_0x55de23['query']);_0x340b2b[_0xc0f6('0x37')]=_['intersection'](_0x55de23[_0xc0f6('0x33')],qs[_0xc0f6('0x38')](_0x503fd9['query'][_0xc0f6('0x38')]));_0x340b2b[_0xc0f6('0x37')]=_0x340b2b[_0xc0f6('0x37')]['length']?_0x340b2b['attributes']:_0x55de23['model'];if(!_0x503fd9['query']['hasOwnProperty']('nolimit')){_0x340b2b[_0xc0f6('0x16')]=qs[_0xc0f6('0x16')](_0x503fd9[_0xc0f6('0x34')][_0xc0f6('0x16')]);_0x340b2b[_0xc0f6('0x15')]=qs[_0xc0f6('0x15')](_0x503fd9['query']['offset']);}_0x340b2b[_0xc0f6('0x3c')]=qs[_0xc0f6('0x3d')](_0x503fd9[_0xc0f6('0x34')][_0xc0f6('0x3d')]);_0x340b2b[_0xc0f6('0x6b')]=qs[_0xc0f6('0x3e')](_[_0xc0f6('0xbf')](_0x503fd9['query'],_0x55de23[_0xc0f6('0x3e')]));_0x340b2b[_0xc0f6('0x6b')][_0xc0f6('0xae')]=_0x192263['id'];if(_0x503fd9['query'][_0xc0f6('0x77')]){_0x340b2b[_0xc0f6('0x6b')]=_[_0xc0f6('0x93')](_0x340b2b[_0xc0f6('0x6b')],{'$or':_['map'](_0x340b2b[_0xc0f6('0x37')],function(_0x226bde){var _0xd8c48={};_0xd8c48[_0x226bde]={'$like':'%'+_0x503fd9[_0xc0f6('0x34')][_0xc0f6('0x77')]+'%'};return _0xd8c48;})});}if(_0x503fd9['query'][_0xc0f6('0x6f')]){var _0x28a2d9=_0x503fd9['query'][_0xc0f6('0x6f')][_0xc0f6('0x25')](',');var _0x56be8e={};_0x56be8e[_0x28a2d9[0x0]]={'$gte':moment(_0x28a2d9[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x340b2b[_0xc0f6('0x6b')]=_['merge'](_0x340b2b[_0xc0f6('0x6b')],_0x56be8e);}_0x340b2b=_[_0xc0f6('0x93')]({},_0x340b2b,_0x503fd9[_0xc0f6('0xb6')]);return db[_0xc0f6('0x28')][_0xc0f6('0x18')]({'where':_0x340b2b[_0xc0f6('0x6b')]})[_0xc0f6('0x2c')](function(_0x3870bb){_0x31b628[_0xc0f6('0x18')]=_0x3870bb;if(_0x503fd9[_0xc0f6('0x34')][_0xc0f6('0xb4')]){_0x340b2b[_0xc0f6('0xb5')]=[{'all':!![]}];}return db[_0xc0f6('0x28')][_0xc0f6('0xc0')](_0x340b2b);})['then'](function(_0x42ffcb){if(_0x503fd9['query'][_0xc0f6('0xc1')]==='true'){for(var _0x2f7b34=0x0;_0x2f7b34<_0x42ffcb[_0xc0f6('0x39')];_0x2f7b34++){_0x42ffcb[_0x2f7b34]['body']=juice(_0x42ffcb[_0x2f7b34][_0xc0f6('0xb8')]);}}_0x31b628[_0xc0f6('0xb2')]=_0x42ffcb;return _0x31b628;});}})['then'](respondWithFilteredResult(_0x4d0947,_0x340b2b))[_0xc0f6('0x2e')](handleError(_0x4d0947,null));};exports[_0xc0f6('0xc2')]=function(_0x2ade42,_0x4a9c96){return db[_0xc0f6('0x2f')][_0xc0f6('0x64')]({'where':{'id':_0x2ade42['params']['id']}})[_0xc0f6('0x2c')](handleEntityNotFound(_0x4a9c96,null))['then'](function(_0x44f4fc){if(_0x44f4fc){return _0x44f4fc[_0xc0f6('0xc3')](_0x2ade42[_0xc0f6('0xb8')][_0xc0f6('0xbc')],_[_0xc0f6('0xbd')](_0x2ade42[_0xc0f6('0xb8')],[_0xc0f6('0xbc'),'id'])||{})[_0xc0f6('0xc4')](function(){return db[_0xc0f6('0x61')][_0xc0f6('0xc0')]({'attributes':['id',_0xc0f6('0x20'),_0xc0f6('0x41')],'where':{'id':_0x2ade42[_0xc0f6('0xb8')][_0xc0f6('0xbc')]}});})[_0xc0f6('0x2c')](function(_0x5025b6){socket[_0xc0f6('0xc5')](_0xc0f6('0xc6'),{'id':Number(_0x2ade42[_0xc0f6('0xb9')]['id']),'tags':_0x5025b6||[]});return{'id':Number(_0x2ade42['params']['id']),'tags':_0x5025b6||[]};});}})['then'](respondWithResult(_0x4a9c96,null))[_0xc0f6('0x2e')](handleError(_0x4a9c96,null));};exports[_0xc0f6('0xc7')]=function(_0x5b5551,_0x415bca){return db[_0xc0f6('0x2f')][_0xc0f6('0x64')]({'where':{'id':_0x5b5551[_0xc0f6('0xb9')]['id']}})[_0xc0f6('0x2c')](handleEntityNotFound(_0x415bca,null))[_0xc0f6('0x2c')](function(_0x587313){if(_0x587313){return _0x587313[_0xc0f6('0xc7')](_0x5b5551[_0xc0f6('0x34')][_0xc0f6('0xbc')]);}})[_0xc0f6('0x2c')](respondWithStatusCode(_0x415bca,null))['catch'](handleError(_0x415bca,null));};exports[_0xc0f6('0xc8')]=function(_0x2c2de8,_0x1016a5){var _0xdc0474=moment()[_0xc0f6('0xc9')]()[_0xc0f6('0x92')]();var _0x3da4dd=path[_0xc0f6('0xca')](config[_0xc0f6('0xcb')],_0xc0f6('0xcc'),_0xc0f6('0xcd'),_0xc0f6('0xce'));var _0x1147df=path[_0xc0f6('0xca')](config[_0xc0f6('0xcb')],'server',_0xc0f6('0xcd'),'attachments');var _0x353c6c=path[_0xc0f6('0xca')](_0x3da4dd,_0xdc0474);var _0x326a66=util[_0xc0f6('0xcf')](_0xc0f6('0xd0'),_0x2c2de8[_0xc0f6('0xb9')]['id'],_0xdc0474);var _0x798e75=path[_0xc0f6('0xca')](_0x3da4dd,_0x326a66);var _0x304532=[];if(_0x2c2de8[_0xc0f6('0x34')][_0xc0f6('0xd1')]){_0x304532[_0xc0f6('0x27')]({'model':db[_0xc0f6('0xd2')],'as':'Attachments','raw':!![]});}var _0x567d65=[{'model':db['MailMessage'],'as':_0xc0f6('0xd3'),'attributes':['id',_0xc0f6('0xb8'),_0xc0f6('0x42'),'to','cc',_0xc0f6('0xd4'),_0xc0f6('0xd5'),_0xc0f6('0xd6')],'where':{'secret':![]},'order':qs[_0xc0f6('0x3d')]('id'),'include':_0x304532}];return db[_0xc0f6('0x2f')][_0xc0f6('0x64')]({'where':{'id':_0x2c2de8[_0xc0f6('0xb9')]['id']},'include':_0x567d65})['then'](handleEntityNotFound(_0x1016a5,null))[_0xc0f6('0x2c')](function(_0x1d24da){if(_0x1d24da&&_0x1d24da[_0xc0f6('0xd3')]){var _0x3c6348=_0x1d24da[_0xc0f6('0xd7')]({'plain':!![]});fs['mkdirSync'](_0x353c6c);return BPromise[_0xc0f6('0xd8')](_0x3c6348[_0xc0f6('0xd3')],function(_0x4a027e,_0x584a43){var _0x42ef37={'from':_0x4a027e['from'],'to':_0x4a027e['to'],'subject':_0x4a027e[_0xc0f6('0xd5')],'html':htmlEntities[_0xc0f6('0xd9')](_0x4a027e['body']),'headers':{'Date':moment(_0x4a027e['createdAt'])[_0xc0f6('0xcf')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x4a027e['cc']){_0x42ef37[_0xc0f6('0xda')]['Cc']=_0x4a027e['cc'];}if(_0x4a027e[_0xc0f6('0xd4')]){_0x42ef37[_0xc0f6('0xda')][_0xc0f6('0xdb')]=_0x4a027e[_0xc0f6('0xd4')];}return new BPromise(function(_0x267fac,_0x41f203){if(_0x4a027e[_0xc0f6('0xdc')]){for(var _0x12c3dd=0x0;_0x12c3dd<_0x4a027e['Attachments'][_0xc0f6('0x39')];_0x12c3dd++){var _0x2d72e8=_0x4a027e['Attachments'][_0x12c3dd];var _0x4cfd82=path['join'](_0x1147df,_0x2d72e8['basename']);if(fs[_0xc0f6('0xdd')](_0x4cfd82)){_0x42ef37['attachments'][_0xc0f6('0x27')]({'name':_0x2d72e8[_0xc0f6('0x20')],'contentType':_0x2d72e8[_0xc0f6('0x66')],'data':fs[_0xc0f6('0xde')](_0x4cfd82)});}}}emlformat[_0xc0f6('0xdf')](_0x42ef37,function(_0x448c0e,_0x27b749){if(_0x448c0e)return _0x41f203(_0x448c0e);fs['writeFileSync'](path[_0xc0f6('0xca')](_0x353c6c,util[_0xc0f6('0xcf')]('message%d.eml',_0x584a43)),_0x27b749);return _0x267fac(_0x27b749);});});})[_0xc0f6('0x2c')](function(){return new BPromise(function(_0x32523b,_0x1dc2c4){zipdir(_0x353c6c,{'saveTo':_0x798e75},function(_0x57fdd0,_0x23b19c){if(_0x57fdd0)return _0x1dc2c4(_0x57fdd0);return _0x32523b(_0x23b19c);});})['then'](function(){return new BPromise(function(_0xa10527,_0x191658){rimraf(_0x353c6c,function(_0x1fd008){if(_0x1fd008)_0x191658(_0x1fd008);return _0xa10527();});});})[_0xc0f6('0x2c')](function(){return _0x1016a5['download'](_0x798e75,_0x326a66,function(_0x4db839){if(!_0x4db839)fs[_0xc0f6('0xe0')](_0x798e75);});});});}else{return _0x1016a5['sendStatus'](0xc8);}})[_0xc0f6('0x2e')](handleError(_0x1016a5,null));};
\ No newline at end of file
+var _0x4134=['parseSearch','conditions','find','value','`\x20=\x200','having','Contact','$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?','ContactId','buildExpression','type','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','some','compact','isEmpty','MailAccountId','where','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','replace','isNumeric','i.id\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','resolve','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','getMailAccounts','i.MailAccountId\x20IS\x20NULL','agent','sequelize','toString','keyBy','merge','MailInteraction','a.key','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.createdAt','i.updatedAt','i.closed','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.secondDisposition','i.substatus','i.to','i.ContactId','i.UserId','c.firstName','Contact.firstName','c.lastName','c.email','Contact.email','c.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','Setting','enableEmailPreview','all','rows','catch','show','params','rawAttributes','includeAll','include','options','create','body','describe','addMessage','ids','omit','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','addTags','setTags','spread','Tag','color','emit','removeTags','download','unix','join','root','files','server','transcript-%d-%s.zip','attachments','Attachment','Attachments','Messages','bcc','subject','get','mkdirSync','each','format','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','existsSync','build','writeFileSync','message%d.eml','unlinkSync','rimraf','zip-dir','lodash','juice','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./mailInteraction.socket','register','sendStatus','end','status','json','offset','undefined','count','set','Content-Range','update','then','destroy','stack','Users','fullname','TagIds','Tags','split','forEach','push','MailMessage','findOne','out','-id','plainBody','map','fieldName','model','name','query','keys','intersection','fields','attributes','length','nolimit','limit','order','sort','filters','pick','select','field','tools_tags','u.fullname','ui.MailInteractionId','from','user_has_mail_interactions','users','u.id\x20=\x20ui.UserId','mail_interactions','left_join','cm_contacts','mail_accounts','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','mail_interaction_has_tags','it.MailInteractionId\x20=\x20i.id','expr','search','log','req.query.search'];(function(_0x4d1ce6,_0x110926){var _0x271cab=function(_0x5cf50d){while(--_0x5cf50d){_0x4d1ce6['push'](_0x4d1ce6['shift']());}};_0x271cab(++_0x110926);}(_0x4134,0x17c));var _0x4413=function(_0x483c92,_0x297cab){_0x483c92=_0x483c92-0x0;var _0x2af16c=_0x4134[_0x483c92];return _0x2af16c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4413('0x0'));var zipdir=require(_0x4413('0x1'));var moment=require('moment');var BPromise=require('bluebird');var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0x4413('0x2'));var squel=require('squel');var juice=require(_0x4413('0x3'));var Redis=require(_0x4413('0x4'));var qs=require('../../components/parsers/qs');var as=require(_0x4413('0x5'));var logger=require(_0x4413('0x6'))(_0x4413('0x7'));var config=require(_0x4413('0x8'));var db=require(_0x4413('0x9'))['db'];config[_0x4413('0xa')]=_[_0x4413('0xb')](config[_0x4413('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x4413('0xc'))(new Redis(config[_0x4413('0xa')]));require(_0x4413('0xd'))[_0x4413('0xe')](socket);function respondWithStatusCode(_0x5e4652,_0x3ba73b){_0x3ba73b=_0x3ba73b||0xcc;return function(_0xb95a8b){if(_0xb95a8b){return _0x5e4652[_0x4413('0xf')](_0x3ba73b);}return _0x5e4652['status'](_0x3ba73b)[_0x4413('0x10')]();};}function respondWithResult(_0x2662ea,_0x54296e){_0x54296e=_0x54296e||0xc8;return function(_0x37b550){if(_0x37b550){return _0x2662ea[_0x4413('0x11')](_0x54296e)[_0x4413('0x12')](_0x37b550);}};}function respondWithFilteredResult(_0x232586,_0x4427be){return function(_0x52c4af){if(_0x52c4af){var _0x56421e=typeof _0x4427be[_0x4413('0x13')]===_0x4413('0x14')&&typeof _0x4427be['limit']===_0x4413('0x14');var _0x3a7506=_0x52c4af[_0x4413('0x15')];var _0x3eec73=_0x56421e?0x0:_0x4427be[_0x4413('0x13')];var _0x55ae82=_0x56421e?_0x52c4af[_0x4413('0x15')]:_0x4427be[_0x4413('0x13')]+_0x4427be['limit'];var _0x23d0c1;if(_0x55ae82>=_0x3a7506){_0x55ae82=_0x3a7506;_0x23d0c1=0xc8;}else{_0x23d0c1=0xce;}_0x232586[_0x4413('0x11')](_0x23d0c1);return _0x232586[_0x4413('0x16')](_0x4413('0x17'),_0x3eec73+'-'+_0x55ae82+'/'+_0x3a7506)[_0x4413('0x12')](_0x52c4af);}return null;};}function saveUpdates(_0x39249e){return function(_0x40a3be){if(_0x40a3be){return _0x40a3be[_0x4413('0x18')](_0x39249e)[_0x4413('0x19')](function(_0x499d43){return _0x499d43;});}return null;};}function removeEntity(_0x4d96c9){return function(_0x48583a){if(_0x48583a){return _0x48583a[_0x4413('0x1a')]()[_0x4413('0x19')](function(){_0x4d96c9[_0x4413('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4532bb){return function(_0x52b786){if(!_0x52b786){_0x4532bb[_0x4413('0xf')](0x194);}return _0x52b786;};}function handleError(_0x167aca,_0x39c4b8){_0x39c4b8=_0x39c4b8||0x1f4;return function(_0xd8d380){logger['error'](_0xd8d380[_0x4413('0x1b')]);if(_0xd8d380['name']){delete _0xd8d380['name'];}_0x167aca[_0x4413('0x11')](_0x39c4b8)['send'](_0xd8d380);};}function getInteractionUsers(_0x3f4858,_0x3b427e){return new BPromise(function(_0x1dd6f3,_0x3b0c06){try{if(_0x3b427e[_0x3f4858['id']]){_0x3f4858[_0x4413('0x1c')]=_['map'](_0x3b427e[_0x3f4858['id']],function(_0x2d0951){return{'id':_0x2d0951['id'],'fullname':_0x2d0951[_0x4413('0x1d')]};});}}catch(_0x595f13){_0x3b0c06(_0x595f13);}_0x1dd6f3(_0x3f4858);});}function getInteractionTags(_0x21dd3f,_0x4e0c1e){return new BPromise(function(_0x16141b,_0x13e5c6){try{if(_0x21dd3f[_0x4413('0x1e')]){_0x21dd3f[_0x4413('0x1f')]=[];_0x21dd3f[_0x4413('0x1e')][_0x4413('0x20')](',')[_0x4413('0x21')](function(_0x11e319){_0x21dd3f[_0x4413('0x1f')][_0x4413('0x22')](_0x4e0c1e[_0x11e319]);});}delete _0x21dd3f['TagIds'];}catch(_0xf6f30a){_0x13e5c6(_0xf6f30a);}_0x16141b(_0x21dd3f);});}function getLastMessageText(_0x11fa6f){return new BPromise(function(_0x55d652,_0x271c75){return db[_0x4413('0x23')][_0x4413('0x24')]({'where':{'$and':[{'MailInteractionId':_0x11fa6f['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x4413('0x25')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0x4413('0x26'),'raw':!![]})[_0x4413('0x19')](function(_0x378343){if(_0x378343&&_0x378343[_0x4413('0x27')]){_0x11fa6f['lastMsgText']=_['trimStart'](_0x378343['plainBody']);}_0x55d652(_0x11fa6f);})['catch'](function(_0x406119){_0x271c75(_0x406119);});});}function updateMailInteraction(_0x3cc2b3,_0x2528d7,_0x17a81c,_0x4532df){return new BPromise(function(_0x322814,_0x51a447){return getInteractionUsers(_0x3cc2b3,_0x17a81c)[_0x4413('0x19')](function(_0x3ecec9){return getInteractionTags(_0x3ecec9,_0x2528d7);})[_0x4413('0x19')](function(_0x202ef3){if(_0x4532df){_0x322814(getLastMessageText(_0x202ef3));}else{_0x322814(_0x202ef3);}})['catch'](function(_0x589ec2){_0x51a447(_0x589ec2);});});}exports['index']=function(_0x40328c,_0x59c2ba){var _0x2fe3e5={},_0x1e9695={},_0x463dfa={'count':0x0,'rows':[]};var _0x5012c6=_[_0x4413('0x28')](db['MailInteraction']['rawAttributes'],function(_0x883e8b){return{'name':_0x883e8b[_0x4413('0x29')],'type':_0x883e8b['type']['key']};});_0x1e9695[_0x4413('0x2a')]=_[_0x4413('0x28')](_0x5012c6,_0x4413('0x2b'));_0x1e9695[_0x4413('0x2c')]=_[_0x4413('0x2d')](_0x40328c['query']);_0x1e9695['filters']=_[_0x4413('0x2e')](_0x1e9695[_0x4413('0x2a')],_0x1e9695['query']);_0x2fe3e5['attributes']=_[_0x4413('0x2e')](_0x1e9695[_0x4413('0x2a')],qs[_0x4413('0x2f')](_0x40328c[_0x4413('0x2c')]['fields']));_0x2fe3e5[_0x4413('0x30')]=_0x2fe3e5['attributes'][_0x4413('0x31')]?_0x2fe3e5['attributes']:_0x1e9695[_0x4413('0x2a')];if(!_0x40328c[_0x4413('0x2c')]['hasOwnProperty'](_0x4413('0x32'))){_0x2fe3e5[_0x4413('0x33')]=qs['limit'](_0x40328c[_0x4413('0x2c')]['limit']);_0x2fe3e5[_0x4413('0x13')]=qs['offset'](_0x40328c[_0x4413('0x2c')][_0x4413('0x13')]);}_0x2fe3e5[_0x4413('0x34')]=qs[_0x4413('0x35')](_0x40328c[_0x4413('0x2c')][_0x4413('0x35')]);_0x2fe3e5['where']=qs[_0x4413('0x36')](_[_0x4413('0x37')](_0x40328c[_0x4413('0x2c')],_0x1e9695[_0x4413('0x36')]),_0x5012c6);var _0x389be7=[];var _0x37686e=squel[_0x4413('0x38')]()[_0x4413('0x39')]('id')['field']('name')['field']('color')['from'](_0x4413('0x3a'));var _0x2d9e23=squel['select']()[_0x4413('0x39')]('u.id')[_0x4413('0x39')](_0x4413('0x3b'))[_0x4413('0x39')](_0x4413('0x3c'))[_0x4413('0x3d')](_0x4413('0x3e'),'ui')['left_join'](_0x4413('0x3f'),'u',_0x4413('0x40'));var _0x6a6fb2=squel['select']()['from'](_0x4413('0x41'),'i')[_0x4413('0x42')](_0x4413('0x43'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x4413('0x42')](_0x4413('0x3f'),'o','o.id\x20=\x20i.UserId')['left_join'](_0x4413('0x44'),'a',_0x4413('0x45'))[_0x4413('0x42')](_0x4413('0x46'),'me',_0x4413('0x47'))['left_join'](_0x4413('0x48'),'it',_0x4413('0x49'))[_0x4413('0x42')]('tools_tags','t','t.id\x20=\x20it.TagId');var _0x33ec73=squel[_0x4413('0x4a')]();var _0x36ea37=[];var _0x5aca25=squel[_0x4413('0x4a')]();var _0x286a8b;if(_0x40328c[_0x4413('0x2c')][_0x4413('0x4b')]){console[_0x4413('0x4c')](_0x4413('0x4d'),_0x40328c[_0x4413('0x2c')][_0x4413('0x4b')]);_0x286a8b=as[_0x4413('0x4e')](_0x40328c[_0x4413('0x2c')][_0x4413('0x4b')]);var _0x8958f8=_0x286a8b['sqlOperator'];for(var _0x2b14fb=0x0;_0x2b14fb<_0x286a8b[_0x4413('0x4f')][_0x4413('0x31')];_0x2b14fb++){var _0x91132=_0x286a8b[_0x4413('0x4f')][_0x2b14fb];var _0x27f639='i';var _0x1717bb=_[_0x4413('0x50')](_0x5012c6,['name',_0x91132[_0x4413('0x39')]]);if(!_0x1717bb){switch(_0x91132[_0x4413('0x39')]){case'unreadMessages':if(_0x91132[_0x4413('0x51')]==0x1){_0x6a6fb2['having']('`'+_0x91132['field']+_0x4413('0x52'));}else{_0x6a6fb2[_0x4413('0x53')]('`'+_0x91132['field']+'`\x20>\x200');}break;case _0x4413('0x54'):if(_0x91132['operator']===_0x4413('0x55')){if(_0x91132[_0x4413('0x51')]['split']('\x20')['length']>0x1){_0x33ec73[_0x8958f8](_0x4413('0x56'),qs[_0x4413('0x57')](_0x91132[_0x4413('0x51')]),null);}else{var _0x7e1225='%'+_0x91132[_0x4413('0x51')]+'%';_0x33ec73[_0x8958f8](_0x4413('0x58'),_0x7e1225,_0x7e1225,_0x7e1225);}}else{_0x1717bb=_[_0x4413('0x50')](_0x5012c6,['name',_0x4413('0x59')]);_0x91132[_0x4413('0x39')]=_0x4413('0x59');_0x5b84d3=as[_0x4413('0x5a')](_0x27f639,_0x1717bb[_0x4413('0x5b')],_0x91132);_0x33ec73[_0x8958f8](_0x5b84d3[_0x4413('0x5c')],_0x5b84d3[_0x4413('0x51')][_0x4413('0x5d')],_0x5b84d3['value'][_0x4413('0x10')]);}break;case'Tag':var _0x4874ad=_0x91132[_0x4413('0x51')][_0x4413('0x20')](',')[_0x4413('0x28')](function(_0x54679b){return Number(_0x54679b);});_0x4874ad[_0x4413('0x21')](function(_0x122872){_0x5aca25['or'](_0x4413('0x5e'),'%,'+_0x122872+',%');});_0x36ea37=_[_0x4413('0x5f')](_0x36ea37,_0x4874ad);break;case'User':if(_0x91132['operator']===_0x4413('0x55')){_0x33ec73[_0x8958f8](_0x4413('0x60'),'%'+_0x91132[_0x4413('0x51')]+'%',null);}else{_0x1717bb=_[_0x4413('0x50')](_0x5012c6,[_0x4413('0x2b'),'UserId']);_0x91132[_0x4413('0x39')]='UserId';_0x5b84d3=as[_0x4413('0x5a')](_0x27f639,_0x1717bb['type'],_0x91132);_0x33ec73[_0x8958f8](_0x5b84d3[_0x4413('0x5c')],_0x5b84d3[_0x4413('0x51')][_0x4413('0x5d')],_0x5b84d3[_0x4413('0x51')]['end']);}break;case _0x4413('0x27'):_0x5b84d3=as[_0x4413('0x5a')]('me',null,_0x91132);_0x33ec73[_0x8958f8](_0x5b84d3[_0x4413('0x5c')],_0x5b84d3[_0x4413('0x51')][_0x4413('0x5d')],_0x5b84d3[_0x4413('0x51')][_0x4413('0x10')]);break;}}else{var _0x5b84d3=as['buildExpression'](_0x27f639,_0x1717bb[_0x4413('0x5b')],_0x91132);_0x33ec73[_0x8958f8](_0x5b84d3[_0x4413('0x5c')],_0x5b84d3['value'][_0x4413('0x5d')],_0x5b84d3[_0x4413('0x51')][_0x4413('0x10')]);}}}else{var _0x138977=_(_0x40328c['query'])[_0x4413('0x2d')]()[_0x4413('0x28')](function(_0x56fbc0){return _[_0x4413('0x61')](_0x5012c6,[_0x4413('0x2b'),_0x56fbc0])?_0x56fbc0:undefined;})[_0x4413('0x62')]()[_0x4413('0x51')]();if(!_[_0x4413('0x63')](_0x138977)){_0x138977[_0x4413('0x21')](function(_0x4f31d9){if(_0x4f31d9===_0x4413('0x64')){_0x6a6fb2[_0x4413('0x65')](_0x4413('0x66'),[][_0x4413('0x67')](_0x40328c[_0x4413('0x2c')][_0x4f31d9]));}else if(_0x4f31d9===_0x4413('0x68')){var _0x14e45c=JSON[_0x4413('0x69')](_0x40328c[_0x4413('0x2c')][_0x4f31d9])[_0x4413('0x6a')];var _0x39e84e=JSON[_0x4413('0x69')](_0x40328c[_0x4413('0x2c')][_0x4f31d9])['$lte'];_0x6a6fb2[_0x4413('0x65')](_0x4413('0x6b'),_0x14e45c,_0x39e84e);}else{if(_0x40328c[_0x4413('0x2c')][_0x4f31d9]===_0x4413('0x6c')){_0x6a6fb2[_0x4413('0x65')]('i.'+_0x4f31d9+_0x4413('0x6d'));}else{_0x6a6fb2[_0x4413('0x65')]('i.'+_0x4f31d9+_0x4413('0x6e'),_0x40328c[_0x4413('0x2c')][_0x4f31d9]);}}});}if(_0x40328c[_0x4413('0x2c')][_0x4413('0x6f')]){if(_0x40328c[_0x4413('0x2c')]['read']==0x1){_0x6a6fb2[_0x4413('0x53')](_0x4413('0x70'));}else{_0x6a6fb2['having'](_0x4413('0x71'));}}if(_0x40328c[_0x4413('0x2c')][_0x4413('0x72')]){_0x36ea37=_[_0x4413('0x73')](_0x40328c[_0x4413('0x2c')][_0x4413('0x72')])?_0x40328c[_0x4413('0x2c')][_0x4413('0x72')]:new Array(_0x40328c[_0x4413('0x2c')][_0x4413('0x72')]);_0x36ea37[_0x4413('0x21')](function(_0x3a4bb5){_0x5aca25['or'](_0x4413('0x5e'),'%,'+_0x3a4bb5+',%');});}if(_0x40328c[_0x4413('0x2c')]['filter']){var _0x9aee66=_0x40328c[_0x4413('0x2c')]['filter'][_0x4413('0x74')]('\x5c','\x5c\x5c')[_0x4413('0x74')](/'/g,'\x27\x27');if(qs[_0x4413('0x75')](_0x9aee66)){_0x33ec73['or'](_0x4413('0x76'),_0x9aee66+'%');}else if(qs[_0x4413('0x77')](_0x9aee66)){_0x33ec73['or'](_0x4413('0x78'),_0x9aee66+'%');}else{_0x33ec73['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x4413('0x57')](_0x9aee66))['or'](_0x4413('0x79'),qs['getFullTextValue'](_0x9aee66));}}}_0x6a6fb2[_0x4413('0x65')](_0x33ec73);_0x6a6fb2[_0x4413('0x7a')](_0x4413('0x7b'));var _0x12d9f0={'type':db['Sequelize'][_0x4413('0x7c')][_0x4413('0x7d')],'raw':!![]};var _0x4f1ba0=_0x6a6fb2[_0x4413('0x7e')]();_0x4f1ba0['field']('i.id');_0x4f1ba0[_0x4413('0x39')](_0x4413('0x7f'),_0x4413('0x80'));if(_0x2fe3e5[_0x4413('0x34')]){_0x2fe3e5[_0x4413('0x34')][_0x4413('0x21')](function(_0x57b485){var _0x5883a7=_0x57b485[0x0]===_0x4413('0x81')?_0x57b485[0x0]:'i.'+_0x57b485[0x0];_0x6a6fb2[_0x4413('0x34')](_0x5883a7,_0x57b485[0x1]===_0x4413('0x82')?![]:!![]);});}if(!_[_0x4413('0x63')](_0x36ea37)){_0x6a6fb2[_0x4413('0x53')](_0x5aca25);_0x4f1ba0[_0x4413('0x65')]('t.id\x20IN\x20?',_0x36ea37);}BPromise[_0x4413('0x83')]()['then'](function(){if(!_0x286a8b){if(_0x40328c[_0x4413('0x2c')][_0x4413('0x64')])return;_0x4f1ba0['where'](_0x4413('0x84'));_0x6a6fb2['where']('i.MailAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x40328c[_0x4413('0x85')][_0x4413('0x86')]!=='agent')return;return _0x40328c[_0x4413('0x85')][_0x4413('0x87')]({'attributes':['id'],'raw':!![]})[_0x4413('0x19')](function(_0x5aebfc){if(_[_0x4413('0x63')](_0x5aebfc)){_0x4f1ba0[_0x4413('0x65')](_0x4413('0x88'));_0x6a6fb2[_0x4413('0x65')]('i.MailAccountId\x20IS\x20NULL');}else{_0x4f1ba0['where'](_0x4413('0x66'),_[_0x4413('0x28')](_0x5aebfc,'id'));_0x6a6fb2[_0x4413('0x65')](_0x4413('0x66'),_[_0x4413('0x28')](_0x5aebfc,'id'));}});})[_0x4413('0x19')](function(){if(_0x40328c[_0x4413('0x85')]['role']===_0x4413('0x89')&&!_0x286a8b&&!_0x40328c['query'][_0x4413('0x64')])return[];return db[_0x4413('0x8a')]['query'](_0x4f1ba0['toString'](),_0x12d9f0);})[_0x4413('0x19')](function(_0xbd61e){_0x463dfa['count']=_0xbd61e[_0x4413('0x31')];if(_0x463dfa[_0x4413('0x15')]===0x0)return[];return db[_0x4413('0x8a')][_0x4413('0x2c')](_0x37686e[_0x4413('0x8b')](),_0x12d9f0)['then'](function(_0x22c6e9){_0x389be7=_[_0x4413('0x8c')](_0x22c6e9,'id');_0x12d9f0=_[_0x4413('0x8d')](_0x12d9f0,{'model':db[_0x4413('0x8e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x40328c[_0x4413('0x2c')][_0x4413('0x2f')]){_0x2fe3e5[_0x4413('0x30')]['forEach'](function(_0xcc885){_0x6a6fb2[_0x4413('0x39')]('i.'+_0xcc885);});}else{_0x6a6fb2[_0x4413('0x39')](_0x4413('0x7f'),_0x4413('0x80'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x8f'),_0x4413('0x90'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x91'),'Account.mandatoryDisposition');_0x6a6fb2[_0x4413('0x39')](_0x4413('0x92'),_0x4413('0x81'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x7b'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x93'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x94'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x95'));_0x6a6fb2[_0x4413('0x39')]('i.closedAt');_0x6a6fb2[_0x4413('0x39')](_0x4413('0x96'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x97'));_0x6a6fb2['field'](_0x4413('0x98'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x99'));_0x6a6fb2['field']('i.disposition');_0x6a6fb2['field'](_0x4413('0x9a'));_0x6a6fb2[_0x4413('0x39')]('i.thirdDisposition');_0x6a6fb2[_0x4413('0x39')](_0x4413('0x9b'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x9c'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x9d'));_0x6a6fb2[_0x4413('0x39')]('i.MailAccountId');_0x6a6fb2[_0x4413('0x39')](_0x4413('0x9e'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x9f'),_0x4413('0xa0'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0xa1'),'Contact.lastName');_0x6a6fb2[_0x4413('0x39')](_0x4413('0xa2'),_0x4413('0xa3'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0xa4'),'Contact.phone');_0x6a6fb2[_0x4413('0x39')]('c.mobile',_0x4413('0xa5'));_0x6a6fb2['field'](_0x4413('0xa6'),_0x4413('0xa7'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0xa8'),_0x4413('0xa9'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0xaa'),_0x4413('0xab'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0xac'),_0x4413('0x1e'));}if(_0x2fe3e5[_0x4413('0x33')])_0x6a6fb2[_0x4413('0x33')](_0x2fe3e5['limit']);if(_0x2fe3e5[_0x4413('0x13')])_0x6a6fb2[_0x4413('0x13')](_0x2fe3e5['offset']);return db[_0x4413('0x8a')]['query'](_0x6a6fb2['toString'](),_0x12d9f0);})['then'](function(_0x20ce3a){if(_0x20ce3a[_0x4413('0x31')]>0x0)_0x2d9e23['where'](_0x4413('0xad'),_[_0x4413('0x28')](_0x20ce3a,'id'));return db['sequelize'][_0x4413('0x2c')](_0x2d9e23[_0x4413('0x8b')](),_0x12d9f0)[_0x4413('0x19')](function(_0xe14045){var _0x1184dc=_[_0x4413('0xae')](_0xe14045,_0x4413('0xaf'));var _0x14559c=[];return db[_0x4413('0xb0')][_0x4413('0x24')]({'attributes':[_0x4413('0xb1')],'raw':!![]})[_0x4413('0x19')](function(_0xf80c4){var _0x5aa53e=_0xf80c4[_0x4413('0xb1')];_0x20ce3a[_0x4413('0x21')](function(_0x386183){_0x14559c[_0x4413('0x22')](updateMailInteraction(_0x386183,_0x389be7,_0x1184dc,_0x5aa53e));});return BPromise[_0x4413('0xb2')](_0x14559c);});});});})[_0x4413('0x19')](function(_0x1c6ce6){_0x463dfa[_0x4413('0xb3')]=_0x1c6ce6;return _0x463dfa;})[_0x4413('0x19')](respondWithFilteredResult(_0x59c2ba,_0x2fe3e5))[_0x4413('0xb4')](handleError(_0x59c2ba,null));};exports[_0x4413('0xb5')]=function(_0xfbaac9,_0x51661f){var _0x21baf6={'raw':![],'where':{'id':_0xfbaac9[_0x4413('0xb6')]['id']}},_0x2a5f69={};_0x2a5f69[_0x4413('0x2a')]=_[_0x4413('0x2d')](db[_0x4413('0x8e')][_0x4413('0xb7')]);_0x2a5f69[_0x4413('0x2c')]=_[_0x4413('0x2d')](_0xfbaac9[_0x4413('0x2c')]);_0x2a5f69[_0x4413('0x36')]=_['intersection'](_0x2a5f69[_0x4413('0x2a')],_0x2a5f69[_0x4413('0x2c')]);_0x21baf6[_0x4413('0x30')]=_[_0x4413('0x2e')](_0x2a5f69[_0x4413('0x2a')],qs['fields'](_0xfbaac9['query'][_0x4413('0x2f')]));_0x21baf6[_0x4413('0x30')]=_0x21baf6[_0x4413('0x30')][_0x4413('0x31')]?_0x21baf6[_0x4413('0x30')]:_0x2a5f69[_0x4413('0x2a')];if(_0xfbaac9[_0x4413('0x2c')][_0x4413('0xb8')]){_0x21baf6[_0x4413('0xb9')]=[{'all':!![]}];}_0x21baf6=_[_0x4413('0x8d')]({},_0x21baf6,_0xfbaac9[_0x4413('0xba')]);return db[_0x4413('0x8e')]['find'](_0x21baf6)[_0x4413('0x19')](handleEntityNotFound(_0x51661f,null))[_0x4413('0x19')](respondWithResult(_0x51661f,null))['catch'](handleError(_0x51661f,null));};exports[_0x4413('0xbb')]=function(_0x23e774,_0x153bf3){return db[_0x4413('0x8e')][_0x4413('0xbb')](_0x23e774[_0x4413('0xbc')],{})['then'](respondWithResult(_0x153bf3,0xc9))[_0x4413('0xb4')](handleError(_0x153bf3,null));};exports[_0x4413('0x18')]=function(_0x4802be,_0x3b1bb3){if(_0x4802be[_0x4413('0xbc')]['id']){delete _0x4802be[_0x4413('0xbc')]['id'];}return db['MailInteraction'][_0x4413('0x50')]({'where':{'id':_0x4802be[_0x4413('0xb6')]['id']}})[_0x4413('0x19')](handleEntityNotFound(_0x3b1bb3,null))['then'](saveUpdates(_0x4802be[_0x4413('0xbc')],null))['then'](respondWithResult(_0x3b1bb3,null))[_0x4413('0xb4')](handleError(_0x3b1bb3,null));};exports['destroy']=function(_0x12e62e,_0x7b469a){return db['MailInteraction'][_0x4413('0x50')]({'where':{'id':_0x12e62e[_0x4413('0xb6')]['id']}})[_0x4413('0x19')](handleEntityNotFound(_0x7b469a,null))[_0x4413('0x19')](removeEntity(_0x7b469a,null))[_0x4413('0xb4')](handleError(_0x7b469a,null));};exports[_0x4413('0xbd')]=function(_0x1241c7,_0x3c78c7){return db['MailInteraction'][_0x4413('0xbd')]()[_0x4413('0x19')](respondWithResult(_0x3c78c7,null))[_0x4413('0xb4')](handleError(_0x3c78c7,null));};exports['addMessage']=function(_0x473a5c,_0x4c6f22){return db['MailMessage'][_0x4413('0x50')]({'where':{'id':_0x473a5c[_0x4413('0xb6')]['id']}})[_0x4413('0x19')](handleEntityNotFound(_0x4c6f22,null))[_0x4413('0x19')](function(_0x2c9d10){if(_0x2c9d10){return _0x2c9d10[_0x4413('0xbe')](_0x473a5c[_0x4413('0xbc')][_0x4413('0xbf')],_[_0x4413('0xc0')](_0x473a5c['body'],['ids','id'])||{});}})[_0x4413('0x19')](respondWithResult(_0x4c6f22,null))['catch'](handleError(_0x4c6f22,null));};exports['getMessages']=function(_0x4b1b76,_0x262b18){var _0x35eac3={'raw':![],'where':{}};var _0x331b98={};var _0x29067d={'count':0x0,'rows':[]};return db[_0x4413('0x8e')][_0x4413('0x24')]({'where':{'id':_0x4b1b76['params']['id']}})[_0x4413('0x19')](handleEntityNotFound(_0x262b18,null))[_0x4413('0x19')](function(_0x14ff24){if(_0x14ff24){_0x331b98[_0x4413('0x2a')]=_[_0x4413('0x2d')](db[_0x4413('0x23')][_0x4413('0xb7')]);_0x331b98[_0x4413('0x2c')]=_[_0x4413('0x2d')](_0x4b1b76[_0x4413('0x2c')]);_0x331b98[_0x4413('0x36')]=_[_0x4413('0x2e')](_0x331b98['model'],_0x331b98[_0x4413('0x2c')]);_0x35eac3[_0x4413('0x30')]=_['intersection'](_0x331b98[_0x4413('0x2a')],qs[_0x4413('0x2f')](_0x4b1b76[_0x4413('0x2c')][_0x4413('0x2f')]));_0x35eac3[_0x4413('0x30')]=_0x35eac3[_0x4413('0x30')][_0x4413('0x31')]?_0x35eac3['attributes']:_0x331b98[_0x4413('0x2a')];if(!_0x4b1b76['query']['hasOwnProperty'](_0x4413('0x32'))){_0x35eac3['limit']=qs['limit'](_0x4b1b76[_0x4413('0x2c')][_0x4413('0x33')]);_0x35eac3['offset']=qs[_0x4413('0x13')](_0x4b1b76[_0x4413('0x2c')][_0x4413('0x13')]);}_0x35eac3[_0x4413('0x34')]=qs[_0x4413('0x35')](_0x4b1b76['query'][_0x4413('0x35')]);_0x35eac3[_0x4413('0x65')]=qs[_0x4413('0x36')](_[_0x4413('0x37')](_0x4b1b76['query'],_0x331b98[_0x4413('0x36')]));_0x35eac3['where'][_0x4413('0xaf')]=_0x14ff24['id'];if(_0x4b1b76[_0x4413('0x2c')]['filter']){_0x35eac3[_0x4413('0x65')]=_['merge'](_0x35eac3[_0x4413('0x65')],{'$or':_[_0x4413('0x28')](_0x35eac3['attributes'],function(_0x45f7dc){var _0x34e9b9={};_0x34e9b9[_0x45f7dc]={'$like':'%'+_0x4b1b76[_0x4413('0x2c')]['filter']+'%'};return _0x34e9b9;})});}if(_0x4b1b76[_0x4413('0x2c')][_0x4413('0x6a')]){var _0x3f9c3a=_0x4b1b76[_0x4413('0x2c')][_0x4413('0x6a')][_0x4413('0x20')](',');var _0xa7e7bd={};_0xa7e7bd[_0x3f9c3a[0x0]]={'$gte':moment(_0x3f9c3a[0x1])['format'](_0x4413('0xc1'))};_0x35eac3[_0x4413('0x65')]=_[_0x4413('0x8d')](_0x35eac3[_0x4413('0x65')],_0xa7e7bd);}_0x35eac3=_['merge']({},_0x35eac3,_0x4b1b76[_0x4413('0xba')]);return db[_0x4413('0x23')][_0x4413('0x15')]({'where':_0x35eac3[_0x4413('0x65')]})[_0x4413('0x19')](function(_0x1ca3b9){_0x29067d['count']=_0x1ca3b9;if(_0x4b1b76['query'][_0x4413('0xb8')]){_0x35eac3[_0x4413('0xb9')]=[{'all':!![]}];}return db['MailMessage'][_0x4413('0xc2')](_0x35eac3);})['then'](function(_0xee003d){if(_0x4b1b76['query'][_0x4413('0xc3')]===_0x4413('0xc4')){for(var _0x340531=0x0;_0x340531<_0xee003d[_0x4413('0x31')];_0x340531++){_0xee003d[_0x340531]['body']=juice(_0xee003d[_0x340531]['body']);}}_0x29067d[_0x4413('0xb3')]=_0xee003d;return _0x29067d;});}})[_0x4413('0x19')](respondWithFilteredResult(_0x262b18,_0x35eac3))[_0x4413('0xb4')](handleError(_0x262b18,null));};exports[_0x4413('0xc5')]=function(_0x58ff72,_0x4f07ad){return db['MailInteraction'][_0x4413('0x50')]({'where':{'id':_0x58ff72['params']['id']}})[_0x4413('0x19')](handleEntityNotFound(_0x4f07ad,null))[_0x4413('0x19')](function(_0x45788b){if(_0x45788b){return _0x45788b[_0x4413('0xc6')](_0x58ff72[_0x4413('0xbc')][_0x4413('0xbf')],_['omit'](_0x58ff72[_0x4413('0xbc')],[_0x4413('0xbf'),'id'])||{})[_0x4413('0xc7')](function(){return db[_0x4413('0xc8')][_0x4413('0xc2')]({'attributes':['id',_0x4413('0x2b'),_0x4413('0xc9')],'where':{'id':_0x58ff72[_0x4413('0xbc')]['ids']}});})[_0x4413('0x19')](function(_0x5adb22){socket[_0x4413('0xca')]('mailInteractionTags:save',{'id':Number(_0x58ff72[_0x4413('0xb6')]['id']),'tags':_0x5adb22||[]});return{'id':Number(_0x58ff72[_0x4413('0xb6')]['id']),'tags':_0x5adb22||[]};});}})[_0x4413('0x19')](respondWithResult(_0x4f07ad,null))[_0x4413('0xb4')](handleError(_0x4f07ad,null));};exports[_0x4413('0xcb')]=function(_0x22f0c2,_0x1a38b2){return db['MailInteraction'][_0x4413('0x50')]({'where':{'id':_0x22f0c2[_0x4413('0xb6')]['id']}})[_0x4413('0x19')](handleEntityNotFound(_0x1a38b2,null))['then'](function(_0x8513d7){if(_0x8513d7){return _0x8513d7['removeTags'](_0x22f0c2['query']['ids']);}})[_0x4413('0x19')](respondWithStatusCode(_0x1a38b2,null))[_0x4413('0xb4')](handleError(_0x1a38b2,null));};exports[_0x4413('0xcc')]=function(_0x2c8031,_0x2b2ea5){var _0x1f6858=moment()[_0x4413('0xcd')]()[_0x4413('0x8b')]();var _0x67c89c=path[_0x4413('0xce')](config[_0x4413('0xcf')],'server',_0x4413('0xd0'),'tmp');var _0x39dc9d=path[_0x4413('0xce')](config[_0x4413('0xcf')],_0x4413('0xd1'),_0x4413('0xd0'),'attachments');var _0x5ec446=path[_0x4413('0xce')](_0x67c89c,_0x1f6858);var _0x58fdef=util['format'](_0x4413('0xd2'),_0x2c8031[_0x4413('0xb6')]['id'],_0x1f6858);var _0xc471e8=path[_0x4413('0xce')](_0x67c89c,_0x58fdef);var _0x34ff57=[];if(_0x2c8031[_0x4413('0x2c')][_0x4413('0xd3')]){_0x34ff57['push']({'model':db[_0x4413('0xd4')],'as':_0x4413('0xd5'),'raw':!![]});}var _0x30c86f=[{'model':db['MailMessage'],'as':_0x4413('0xd6'),'attributes':['id',_0x4413('0xbc'),_0x4413('0x3d'),'to','cc',_0x4413('0xd7'),_0x4413('0xd8'),'createdAt'],'where':{'secret':![]},'order':qs[_0x4413('0x35')]('id'),'include':_0x34ff57}];return db[_0x4413('0x8e')][_0x4413('0x50')]({'where':{'id':_0x2c8031[_0x4413('0xb6')]['id']},'include':_0x30c86f})[_0x4413('0x19')](handleEntityNotFound(_0x2b2ea5,null))[_0x4413('0x19')](function(_0x3ba8ff){if(_0x3ba8ff&&_0x3ba8ff[_0x4413('0xd6')]){var _0x5d9cfa=_0x3ba8ff[_0x4413('0xd9')]({'plain':!![]});fs[_0x4413('0xda')](_0x5ec446);return BPromise[_0x4413('0xdb')](_0x5d9cfa[_0x4413('0xd6')],function(_0x300e9b,_0x4e2140){var _0x52d923={'from':_0x300e9b[_0x4413('0x3d')],'to':_0x300e9b['to'],'subject':_0x300e9b[_0x4413('0xd8')],'html':_0x300e9b[_0x4413('0xbc')],'headers':{'Date':moment(_0x300e9b[_0x4413('0x68')])[_0x4413('0xdc')](_0x4413('0xdd'))},'attachments':[]};if(_0x300e9b['cc']){_0x52d923[_0x4413('0xde')]['Cc']=_0x300e9b['cc'];}if(_0x300e9b[_0x4413('0xd7')]){_0x52d923['headers'][_0x4413('0xdf')]=_0x300e9b[_0x4413('0xd7')];}return new BPromise(function(_0x5a8585,_0x317d74){if(_0x300e9b['Attachments']){for(var _0x3570a0=0x0;_0x3570a0<_0x300e9b[_0x4413('0xd5')][_0x4413('0x31')];_0x3570a0++){var _0x5ac0db=_0x300e9b[_0x4413('0xd5')][_0x3570a0];var _0x845bff=path['join'](_0x39dc9d,_0x5ac0db['basename']);if(fs[_0x4413('0xe0')](_0x845bff)){_0x52d923[_0x4413('0xd3')][_0x4413('0x22')]({'name':_0x5ac0db['name'],'contentType':_0x5ac0db['type'],'data':fs['readFileSync'](_0x845bff)});}}}emlformat[_0x4413('0xe1')](_0x52d923,function(_0x5a5bdf,_0x249ab1){if(_0x5a5bdf)return _0x317d74(_0x5a5bdf);fs[_0x4413('0xe2')](path['join'](_0x5ec446,util[_0x4413('0xdc')](_0x4413('0xe3'),_0x4e2140)),_0x249ab1);return _0x5a8585(_0x249ab1);});});})['then'](function(){return new BPromise(function(_0x2ae590,_0x20cb62){zipdir(_0x5ec446,{'saveTo':_0xc471e8},function(_0x3b20c3,_0x26a3bf){if(_0x3b20c3)return _0x20cb62(_0x3b20c3);return _0x2ae590(_0x26a3bf);});})['then'](function(){return new BPromise(function(_0x57e88a,_0x5e461d){rimraf(_0x5ec446,function(_0x12135c){if(_0x12135c)_0x5e461d(_0x12135c);return _0x57e88a();});});})['then'](function(){return _0x2b2ea5[_0x4413('0xcc')](_0xc471e8,_0x58fdef,function(_0x53e57f){if(!_0x53e57f)fs[_0x4413('0xe4')](_0xc471e8);});});});}else{return _0x2b2ea5[_0x4413('0xf')](0xc8);}})['catch'](handleError(_0x2b2ea5,null));};
\ No newline at end of file
index 315cbd5..d26f2c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc3c=['remove','then','setDataValue','Users','map','unreadMessages','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','MailInteraction','MailMessage','save','update'];(function(_0xefdc1c,_0x10f40b){var _0x48581c=function(_0x5cad7f){while(--_0x5cad7f){_0xefdc1c['push'](_0xefdc1c['shift']());}};_0x48581c(++_0x10f40b);}(_0xdc3c,0x1e7));var _0xcdc3=function(_0x34d1ec,_0x3bdb31){_0x34d1ec=_0x34d1ec-0x0;var _0x4084f5=_0xdc3c[_0x34d1ec];return _0x4084f5;};'use strict';var EventEmitter=require(_0xcdc3('0x0'));var MailInteraction=require(_0xcdc3('0x1'))['db'][_0xcdc3('0x2')];var MailMessage=require(_0xcdc3('0x1'))['db'][_0xcdc3('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xcdc3('0x4'),'afterUpdate':_0xcdc3('0x5'),'afterDestroy':_0xcdc3('0x6')};function emitEvent(_0x133007){return function(_0x1c559e,_0x550abe,_0x18c9dd){_0x1c559e['getUsers']({'attributes':['id'],'raw':!![]})[_0xcdc3('0x7')](function(_0x14406c){_0x1c559e[_0xcdc3('0x8')](_0xcdc3('0x9'),_0x14406c[_0xcdc3('0xa')](function(_0x188d17){return{'id':_0x188d17['id']};}));return MailMessage['findAll']({'where':{'MailInteractionId':_0x1c559e['id'],'direction':'in','read':![]},'raw':!![]});})[_0xcdc3('0x7')](function(_0x3596f7){_0x1c559e[_0xcdc3('0x8')](_0xcdc3('0xb'),_0x3596f7['length']);MailInteractionEvents['emit'](_0x133007+':'+_0x1c559e['id'],_0x1c559e);MailInteractionEvents[_0xcdc3('0xc')](_0x133007,_0x1c559e);_0x18c9dd(null);})[_0xcdc3('0xd')](_0x18c9dd(null));};}for(var e in events){if(events[_0xcdc3('0xe')](e)){var event=events[e];MailInteraction[_0xcdc3('0xf')](e,emitEvent(event));}}module[_0xcdc3('0x10')]=MailInteractionEvents;
\ No newline at end of file
+var _0x24b7=['Users','map','findAll','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','MailMessage','save','update','remove','setDataValue'];(function(_0x3c82e2,_0x2bff81){var _0x1317b8=function(_0x23694b){while(--_0x23694b){_0x3c82e2['push'](_0x3c82e2['shift']());}};_0x1317b8(++_0x2bff81);}(_0x24b7,0xa2));var _0x724b=function(_0x5a7f85,_0x1b8327){_0x5a7f85=_0x5a7f85-0x0;var _0x1581a4=_0x24b7[_0x5a7f85];return _0x1581a4;};'use strict';var EventEmitter=require('events');var MailInteraction=require(_0x724b('0x0'))['db']['MailInteraction'];var MailMessage=require(_0x724b('0x0'))['db'][_0x724b('0x1')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x724b('0x2'),'afterUpdate':_0x724b('0x3'),'afterDestroy':_0x724b('0x4')};function emitEvent(_0x120756){return function(_0x5c89ce,_0xc8cc70,_0x470f9d){_0x5c89ce['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x334173){_0x5c89ce[_0x724b('0x5')](_0x724b('0x6'),_0x334173[_0x724b('0x7')](function(_0x588116){return{'id':_0x588116['id']};}));return MailMessage[_0x724b('0x8')]({'where':{'MailInteractionId':_0x5c89ce['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x2d18f3){_0x5c89ce[_0x724b('0x5')]('unreadMessages',_0x2d18f3['length']);MailInteractionEvents[_0x724b('0x9')](_0x120756+':'+_0x5c89ce['id'],_0x5c89ce);MailInteractionEvents[_0x724b('0x9')](_0x120756,_0x5c89ce);_0x470f9d(null);})[_0x724b('0xa')](_0x470f9d(null));};}for(var e in events){if(events[_0x724b('0xb')](e)){var event=events[e];MailInteraction[_0x724b('0xc')](e,emitEvent(event));}}module[_0x724b('0xd')]=MailInteractionEvents;
\ No newline at end of file
index 09b60fd..17fbe9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64cc=['FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','changed','closed','closedAt','models','get','MailMessage','update','then','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./mailInteraction.attributes','exports','define','MailInteraction','mail_interactions','fti_mail_interactions','subject'];(function(_0x130b94,_0x38e272){var _0x12e4cb=function(_0x1e4b9f){while(--_0x1e4b9f){_0x130b94['push'](_0x130b94['shift']());}};_0x12e4cb(++_0x38e272);}(_0x64cc,0x14e));var _0xc64c=function(_0x5d87f3,_0x12d764){_0x5d87f3=_0x5d87f3-0x0;var _0x3ff174=_0x64cc[_0x5d87f3];return _0x3ff174;};'use strict';var _=require('lodash');var util=require(_0xc64c('0x0'));var logger=require(_0xc64c('0x1'))(_0xc64c('0x2'));var moment=require(_0xc64c('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xc64c('0x4'));var rimraf=require(_0xc64c('0x5'));var config=require(_0xc64c('0x6'));var attributes=require(_0xc64c('0x7'));module[_0xc64c('0x8')]=function(_0x10e057,_0x58d39f){return _0x10e057[_0xc64c('0x9')](_0xc64c('0xa'),attributes,{'tableName':_0xc64c('0xb'),'paranoid':![],'indexes':[{'name':_0xc64c('0xc'),'fields':[_0xc64c('0xd'),'to'],'type':_0xc64c('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0xb3439e,_0x3d14c5,_0x525178){if(_0xb3439e[_0xc64c('0xf')]){_0xb3439e[_0xc64c('0x10')]=moment()[_0xc64c('0x11')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0xb3439e['closed']){_0xb3439e['closedAt']=moment()['format'](_0xc64c('0x12'));}_0x525178(null,_0x3d14c5);},'beforeUpdate':function(_0x2ab94e,_0x1ff024,_0x32708d){if(_0x2ab94e[_0xc64c('0x13')]('substatus')){_0x2ab94e[_0xc64c('0x10')]=_0x2ab94e[_0xc64c('0xf')]?moment()[_0xc64c('0x11')](_0xc64c('0x12')):null;}if(_0x2ab94e[_0xc64c('0x13')](_0xc64c('0x14'))){_0x2ab94e[_0xc64c('0x15')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x2ab94e[_0xc64c('0xf')]=null;_0x2ab94e[_0xc64c('0x10')]=null;}_0x32708d(null,_0x2ab94e);},'afterUpdate':function(_0x5045f2,_0x36b380,_0x1b9081){var _0x2f96b9=_0x10e057[_0xc64c('0x16')];var _0x7f53b8=_0x5045f2[_0xc64c('0x17')]({'plain':!![]});if(_0x7f53b8[_0xc64c('0x14')]){return _0x2f96b9[_0xc64c('0x18')][_0xc64c('0x19')]({'read':!![]},{'where':{'MailInteractionId':_0x7f53b8['id']}})[_0xc64c('0x1a')](function(){_0x1b9081();})['catch'](function(_0x3f7d24){_0x1b9081(_0x3f7d24);});}else{_0x1b9081();}}},'charset':_0xc64c('0x1b'),'collate':_0xc64c('0x1c')});};
\ No newline at end of file
+var _0xad72=['substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','changed','models','MailMessage','update','then','catch','utf8mb4','lodash','../../config/logger','api','moment','bluebird','request-promise','define','MailInteraction','fti_mail_interactions','substatus'];(function(_0x5efb06,_0x2d200d){var _0x1bb222=function(_0x26ff04){while(--_0x26ff04){_0x5efb06['push'](_0x5efb06['shift']());}};_0x1bb222(++_0x2d200d);}(_0xad72,0xa6));var _0x2ad7=function(_0x59c979,_0x3ed6db){_0x59c979=_0x59c979-0x0;var _0x327c25=_0xad72[_0x59c979];return _0x327c25;};'use strict';var _=require(_0x2ad7('0x0'));var util=require('util');var logger=require(_0x2ad7('0x1'))(_0x2ad7('0x2'));var moment=require(_0x2ad7('0x3'));var BPromise=require(_0x2ad7('0x4'));var rp=require(_0x2ad7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./mailInteraction.attributes');module['exports']=function(_0x12f658,_0x1790de){return _0x12f658[_0x2ad7('0x6')](_0x2ad7('0x7'),attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':_0x2ad7('0x8'),'fields':['subject','to'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5b4e62,_0x5d20eb,_0x3b59c0){if(_0x5b4e62[_0x2ad7('0x9')]){_0x5b4e62[_0x2ad7('0xa')]=moment()[_0x2ad7('0xb')](_0x2ad7('0xc'));}if(_0x5b4e62[_0x2ad7('0xd')]){_0x5b4e62[_0x2ad7('0xe')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x3b59c0(null,_0x5d20eb);},'beforeUpdate':function(_0x28ab54,_0x459726,_0x529146){if(_0x28ab54[_0x2ad7('0xf')](_0x2ad7('0x9'))){_0x28ab54['substatusAt']=_0x28ab54['substatus']?moment()['format'](_0x2ad7('0xc')):null;}if(_0x28ab54['changed'](_0x2ad7('0xd'))){_0x28ab54['closedAt']=moment()[_0x2ad7('0xb')](_0x2ad7('0xc'));_0x28ab54[_0x2ad7('0x9')]=null;_0x28ab54['substatusAt']=null;}_0x529146(null,_0x28ab54);},'afterUpdate':function(_0xd28ed9,_0x4ecc36,_0x1fea61){var _0x486119=_0x12f658[_0x2ad7('0x10')];var _0x1cbefb=_0xd28ed9['get']({'plain':!![]});if(_0x1cbefb[_0x2ad7('0xd')]){return _0x486119[_0x2ad7('0x11')][_0x2ad7('0x12')]({'read':!![]},{'where':{'MailInteractionId':_0x1cbefb['id']}})[_0x2ad7('0x13')](function(){_0x1fea61();})[_0x2ad7('0x14')](function(_0x3568d9){_0x1fea61(_0x3568d9);});}else{_0x1fea61();}}},'charset':_0x2ad7('0x15'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 9a58fbf..d15351f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x975f=['raw','where','attributes','limit','UpdateMailInteraction','debug','catch','AddTagsToMailInteraction','find','addTags','ids','omit','spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','register','request','then','MailInteraction,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','MailInteraction','update','body','options'];(function(_0x53f402,_0x326920){var _0x45a76d=function(_0x51f590){while(--_0x51f590){_0x53f402['push'](_0x53f402['shift']());}};_0x45a76d(++_0x326920);}(_0x975f,0x191));var _0xf975=function(_0x146a97,_0x2d8483){_0x146a97=_0x146a97-0x0;var _0x259d5c=_0x975f[_0x146a97];return _0x259d5c;};'use strict';var _=require(_0xf975('0x0'));var util=require('util');var moment=require(_0xf975('0x1'));var BPromise=require(_0xf975('0x2'));var rs=require(_0xf975('0x3'));var fs=require('fs');var Redis=require(_0xf975('0x4'));var db=require(_0xf975('0x5'))['db'];var utils=require(_0xf975('0x6'));var logger=require('../../config/logger')(_0xf975('0x7'));var config=require(_0xf975('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xf975('0x9')][_0xf975('0xa')]({'port':0x232a});config[_0xf975('0xb')]=_[_0xf975('0xc')](config[_0xf975('0xb')],{'host':_0xf975('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf975('0xb')]));require('./mailInteraction.socket')[_0xf975('0xe')](socket);function respondWithRpcPromise(_0x4b1029,_0x32e936,_0x30e02d){return new BPromise(function(_0x56a124,_0x472fc7){return client[_0xf975('0xf')](_0x4b1029,_0x30e02d)[_0xf975('0x10')](function(_0x5444b2){logger['info'](_0xf975('0x11'),_0x32e936,_0xf975('0x12'));logger['debug']('MailInteraction,\x20%s,\x20%s,\x20%s',_0x32e936,_0xf975('0x12'),JSON[_0xf975('0x13')](_0x5444b2));if(_0x5444b2[_0xf975('0x14')]){if(_0x5444b2[_0xf975('0x14')][_0xf975('0x15')]===0x1f4){logger[_0xf975('0x14')](_0xf975('0x11'),_0x32e936,_0x5444b2[_0xf975('0x14')]['message']);return _0x472fc7(_0x5444b2[_0xf975('0x14')][_0xf975('0x16')]);}logger[_0xf975('0x14')](_0xf975('0x11'),_0x32e936,_0x5444b2[_0xf975('0x14')][_0xf975('0x16')]);return _0x56a124(_0x5444b2[_0xf975('0x14')][_0xf975('0x16')]);}else{logger[_0xf975('0x17')](_0xf975('0x11'),_0x32e936,_0xf975('0x12'));_0x56a124(_0x5444b2[_0xf975('0x18')][_0xf975('0x16')]);}})['catch'](function(_0x211f52){logger[_0xf975('0x14')](_0xf975('0x11'),_0x32e936,_0x211f52);_0x472fc7(_0x211f52);});});}exports['UpdateMailInteraction']=function(_0xa4ae6f){var _0x5447a3=this;return new Promise(function(_0x51b9d3,_0x242742){return db[_0xf975('0x19')][_0xf975('0x1a')](_0xa4ae6f[_0xf975('0x1b')],{'raw':_0xa4ae6f[_0xf975('0x1c')]?_0xa4ae6f[_0xf975('0x1c')][_0xf975('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xa4ae6f[_0xf975('0x1c')]?_0xa4ae6f[_0xf975('0x1c')][_0xf975('0x1e')]||null:null,'attributes':_0xa4ae6f[_0xf975('0x1c')]?_0xa4ae6f[_0xf975('0x1c')][_0xf975('0x1f')]||null:null,'limit':_0xa4ae6f[_0xf975('0x1c')]?_0xa4ae6f[_0xf975('0x1c')][_0xf975('0x20')]||null:null})['then'](function(_0x2a79de){logger[_0xf975('0x17')](_0xf975('0x21'),_0xa4ae6f);logger[_0xf975('0x22')](_0xf975('0x21'),_0xa4ae6f,JSON[_0xf975('0x13')](_0x2a79de));_0x51b9d3(_0x2a79de);})[_0xf975('0x23')](function(_0x13bb6d){logger[_0xf975('0x14')](_0xf975('0x21'),_0x13bb6d['message'],_0xa4ae6f);_0x242742(_0x5447a3['error'](0x1f4,_0x13bb6d['message']));});});};exports[_0xf975('0x24')]=function(_0x433f4a){return new Promise(function(_0x33d2e2,_0x3ddd47){return db[_0xf975('0x19')][_0xf975('0x25')]({'where':_0x433f4a[_0xf975('0x1c')]?_0x433f4a[_0xf975('0x1c')][_0xf975('0x1e')]||null:null})[_0xf975('0x10')](function(_0x3e2867){if(_0x3e2867){return _0x3e2867[_0xf975('0x26')](_0x433f4a[_0xf975('0x1b')][_0xf975('0x27')],_[_0xf975('0x28')](_0x433f4a[_0xf975('0x1b')],[_0xf975('0x27'),'id'])||{});}})[_0xf975('0x29')](function(_0x16fae2){logger[_0xf975('0x17')]('AddTags',_0x433f4a);logger[_0xf975('0x22')]('AddTags',_0x433f4a,JSON[_0xf975('0x13')](_0x16fae2));_0x33d2e2(_0x16fae2);})[_0xf975('0x23')](function(_0xf0dad2){logger[_0xf975('0x14')](_0xf975('0x2a'),_0xf0dad2['message'],_0x433f4a);_0x3ddd47(_this[_0xf975('0x14')](0x1f4,_0xf0dad2[_0xf975('0x16')]));});});};
\ No newline at end of file
+var _0x222a=['stringify','error','code','message','result','catch','update','options','attributes','limit','UpdateMailInteraction','AddTagsToMailInteraction','MailInteraction','find','addTags','body','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./mailInteraction.socket','then','info','MailInteraction,\x20%s,\x20%s','MailInteraction,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x222a,0xb3));var _0xa222=function(_0x392e6f,_0x1723de){_0x392e6f=_0x392e6f-0x0;var _0x1a2cb4=_0x222a[_0x392e6f];return _0x1a2cb4;};'use strict';var _=require(_0xa222('0x0'));var util=require(_0xa222('0x1'));var moment=require(_0xa222('0x2'));var BPromise=require(_0xa222('0x3'));var rs=require(_0xa222('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa222('0x5'))['db'];var utils=require(_0xa222('0x6'));var logger=require(_0xa222('0x7'))('rpc');var config=require(_0xa222('0x8'));var jayson=require(_0xa222('0x9'));var client=jayson[_0xa222('0xa')][_0xa222('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0xa222('0xc')],{'host':_0xa222('0xd'),'port':0x18eb});var socket=require(_0xa222('0xe'))(new Redis(config[_0xa222('0xc')]));require(_0xa222('0xf'))['register'](socket);function respondWithRpcPromise(_0x34f46b,_0x53df0e,_0x32cf17){return new BPromise(function(_0xf1a872,_0x5edba6){return client['request'](_0x34f46b,_0x32cf17)[_0xa222('0x10')](function(_0x303fe4){logger[_0xa222('0x11')](_0xa222('0x12'),_0x53df0e,'request\x20sent');logger['debug'](_0xa222('0x13'),_0x53df0e,_0xa222('0x14'),JSON[_0xa222('0x15')](_0x303fe4));if(_0x303fe4[_0xa222('0x16')]){if(_0x303fe4['error'][_0xa222('0x17')]===0x1f4){logger[_0xa222('0x16')](_0xa222('0x12'),_0x53df0e,_0x303fe4[_0xa222('0x16')][_0xa222('0x18')]);return _0x5edba6(_0x303fe4[_0xa222('0x16')][_0xa222('0x18')]);}logger['error'](_0xa222('0x12'),_0x53df0e,_0x303fe4[_0xa222('0x16')][_0xa222('0x18')]);return _0xf1a872(_0x303fe4[_0xa222('0x16')]['message']);}else{logger[_0xa222('0x11')]('MailInteraction,\x20%s,\x20%s',_0x53df0e,_0xa222('0x14'));_0xf1a872(_0x303fe4[_0xa222('0x19')]['message']);}})[_0xa222('0x1a')](function(_0x5e0617){logger[_0xa222('0x16')](_0xa222('0x12'),_0x53df0e,_0x5e0617);_0x5edba6(_0x5e0617);});});}exports['UpdateMailInteraction']=function(_0x5e7bbc){var _0x195766=this;return new Promise(function(_0x149d3b,_0xe98df9){return db['MailInteraction'][_0xa222('0x1b')](_0x5e7bbc['body'],{'raw':_0x5e7bbc[_0xa222('0x1c')]?_0x5e7bbc[_0xa222('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5e7bbc[_0xa222('0x1c')]?_0x5e7bbc['options']['where']||null:null,'attributes':_0x5e7bbc['options']?_0x5e7bbc['options'][_0xa222('0x1d')]||null:null,'limit':_0x5e7bbc[_0xa222('0x1c')]?_0x5e7bbc[_0xa222('0x1c')][_0xa222('0x1e')]||null:null})['then'](function(_0x2b6d7b){logger[_0xa222('0x11')](_0xa222('0x1f'),_0x5e7bbc);logger['debug'](_0xa222('0x1f'),_0x5e7bbc,JSON[_0xa222('0x15')](_0x2b6d7b));_0x149d3b(_0x2b6d7b);})['catch'](function(_0x4985aa){logger[_0xa222('0x16')](_0xa222('0x1f'),_0x4985aa[_0xa222('0x18')],_0x5e7bbc);_0xe98df9(_0x195766[_0xa222('0x16')](0x1f4,_0x4985aa[_0xa222('0x18')]));});});};exports[_0xa222('0x20')]=function(_0x41d8a9){return new Promise(function(_0x4711ca,_0x454593){return db[_0xa222('0x21')][_0xa222('0x22')]({'where':_0x41d8a9[_0xa222('0x1c')]?_0x41d8a9['options']['where']||null:null})['then'](function(_0x48a098){if(_0x48a098){return _0x48a098[_0xa222('0x23')](_0x41d8a9[_0xa222('0x24')][_0xa222('0x25')],_[_0xa222('0x26')](_0x41d8a9[_0xa222('0x24')],['ids','id'])||{});}})['spread'](function(_0x3092ba){logger[_0xa222('0x11')]('AddTags',_0x41d8a9);logger['debug']('AddTags',_0x41d8a9,JSON['stringify'](_0x3092ba));_0x4711ca(_0x3092ba);})[_0xa222('0x1a')](function(_0x12519d){logger[_0xa222('0x16')](_0xa222('0x27'),_0x12519d[_0xa222('0x18')],_0x41d8a9);_0x454593(_this[_0xa222('0x16')](0x1f4,_0x12519d[_0xa222('0x18')]));});});};
\ No newline at end of file
index 6fcb0ae..71f3c49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25ba=['update','emit','removeListener','mailInteraction:','./mailInteraction.events','save','remove'];(function(_0x440023,_0x45a0f9){var _0x597720=function(_0x5ccdff){while(--_0x5ccdff){_0x440023['push'](_0x440023['shift']());}};_0x597720(++_0x45a0f9);}(_0x25ba,0x115));var _0xa25b=function(_0xdf87b,_0x146dae){_0xdf87b=_0xdf87b-0x0;var _0x45fcf2=_0x25ba[_0xdf87b];return _0x45fcf2;};'use strict';var MailInteractionEvents=require(_0xa25b('0x0'));var events=[_0xa25b('0x1'),_0xa25b('0x2'),_0xa25b('0x3')];function createListener(_0x222d7b,_0x4c86be){return function(_0x1fbdc1){_0x4c86be[_0xa25b('0x4')](_0x222d7b,_0x1fbdc1);};}function removeListener(_0x57602e,_0x4313b6){return function(){MailInteractionEvents[_0xa25b('0x5')](_0x57602e,_0x4313b6);};}exports['register']=function(_0xb3cc5){for(var _0x2e3981=0x0,_0x372252=events['length'];_0x2e3981<_0x372252;_0x2e3981++){var _0x45be34=events[_0x2e3981];var _0x401ae8=createListener(_0xa25b('0x6')+_0x45be34,_0xb3cc5);MailInteractionEvents['on'](_0x45be34,_0x401ae8);}};
\ No newline at end of file
+var _0xcd30=['save','update','emit','removeListener','register','length','mailInteraction:','./mailInteraction.events'];(function(_0x5d7747,_0x55c074){var _0x291142=function(_0x221f7d){while(--_0x221f7d){_0x5d7747['push'](_0x5d7747['shift']());}};_0x291142(++_0x55c074);}(_0xcd30,0x1df));var _0x0cd3=function(_0x43d604,_0x38a6d3){_0x43d604=_0x43d604-0x0;var _0x2f0f74=_0xcd30[_0x43d604];return _0x2f0f74;};'use strict';var MailInteractionEvents=require(_0x0cd3('0x0'));var events=[_0x0cd3('0x1'),'remove',_0x0cd3('0x2')];function createListener(_0x43f407,_0x146eec){return function(_0x1cb7b3){_0x146eec[_0x0cd3('0x3')](_0x43f407,_0x1cb7b3);};}function removeListener(_0x499757,_0x3cbbf8){return function(){MailInteractionEvents[_0x0cd3('0x4')](_0x499757,_0x3cbbf8);};}exports[_0x0cd3('0x5')]=function(_0x2d4266){for(var _0x3c6bf7=0x0,_0x2994d8=events[_0x0cd3('0x6')];_0x3c6bf7<_0x2994d8;_0x3c6bf7++){var _0x36db12=events[_0x3c6bf7];var _0x40bbc6=createListener(_0x0cd3('0x7')+_0x36db12,_0x2d4266);MailInteractionEvents['on'](_0x36db12,_0x40bbc6);}};
\ No newline at end of file
index 8403276..92da667 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d31=['post','tracked','mail','mailmessage:create','create','/:id','update','put','/:id/accept','accept','/:id/reject','reject','exports','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','index','/describe','isAuthenticated','show','/:id/download'];(function(_0x3526d6,_0x3a7cdd){var _0x2577fa=function(_0xf66844){while(--_0xf66844){_0x3526d6['push'](_0x3526d6['shift']());}};_0x2577fa(++_0x3a7cdd);}(_0x5d31,0xf7));var _0x15d3=function(_0x749614,_0x9c4b56){_0x749614=_0x749614-0x0;var _0x4cacdf=_0x5d31[_0x749614];return _0x4cacdf;};'use strict';var multer=require('multer');var util=require(_0x15d3('0x0'));var path=require(_0x15d3('0x1'));var timeout=require(_0x15d3('0x2'));var express=require('express');var router=express[_0x15d3('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x15d3('0x4'));var config=require(_0x15d3('0x5'));var controller=require(_0x15d3('0x6'));router[_0x15d3('0x7')]('/',auth['isAuthenticated'](),controller[_0x15d3('0x8')]);router[_0x15d3('0x7')](_0x15d3('0x9'),auth[_0x15d3('0xa')](),controller['describe']);router[_0x15d3('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x15d3('0xb')]);router['get'](_0x15d3('0xc'),auth['isAuthenticated'](),controller['download']);router[_0x15d3('0xd')]('/',auth[_0x15d3('0xa')](),interaction[_0x15d3('0xe')](_0x15d3('0xf'),_0x15d3('0x10')),controller[_0x15d3('0x11')]);router['put'](_0x15d3('0x12'),auth[_0x15d3('0xa')](),controller[_0x15d3('0x13')]);router[_0x15d3('0x14')](_0x15d3('0x15'),auth[_0x15d3('0xa')](),controller[_0x15d3('0x16')]);router[_0x15d3('0x14')](_0x15d3('0x17'),auth[_0x15d3('0xa')](),controller[_0x15d3('0x18')]);router['delete'](_0x15d3('0x12'),auth[_0x15d3('0xa')](),controller['destroy']);module[_0x15d3('0x19')]=router;
\ No newline at end of file
+var _0x41c8=['download','post','tracked','mail','mailmessage:create','update','put','/:id/accept','accept','/:id/reject','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','index','/describe','/:id','show'];(function(_0x26d0be,_0x16acf1){var _0x4987ab=function(_0x13e563){while(--_0x13e563){_0x26d0be['push'](_0x26d0be['shift']());}};_0x4987ab(++_0x16acf1);}(_0x41c8,0x98));var _0x841c=function(_0x40d935,_0x5b9806){_0x40d935=_0x40d935-0x0;var _0x1dc457=_0x41c8[_0x40d935];return _0x1dc457;};'use strict';var multer=require(_0x841c('0x0'));var util=require(_0x841c('0x1'));var path=require('path');var timeout=require(_0x841c('0x2'));var express=require(_0x841c('0x3'));var router=express[_0x841c('0x4')]();var fs_extra=require(_0x841c('0x5'));var auth=require(_0x841c('0x6'));var interaction=require(_0x841c('0x7'));var config=require(_0x841c('0x8'));var controller=require(_0x841c('0x9'));router[_0x841c('0xa')]('/',auth[_0x841c('0xb')](),controller[_0x841c('0xc')]);router[_0x841c('0xa')](_0x841c('0xd'),auth[_0x841c('0xb')](),controller['describe']);router[_0x841c('0xa')](_0x841c('0xe'),auth[_0x841c('0xb')](),controller[_0x841c('0xf')]);router[_0x841c('0xa')]('/:id/download',auth['isAuthenticated'](),controller[_0x841c('0x10')]);router[_0x841c('0x11')]('/',auth['isAuthenticated'](),interaction[_0x841c('0x12')](_0x841c('0x13'),_0x841c('0x14')),controller['create']);router['put']('/:id',auth[_0x841c('0xb')](),controller[_0x841c('0x15')]);router[_0x841c('0x16')](_0x841c('0x17'),auth['isAuthenticated'](),controller[_0x841c('0x18')]);router[_0x841c('0x16')](_0x841c('0x19'),auth[_0x841c('0xb')](),controller['reject']);router[_0x841c('0x1a')](_0x841c('0xe'),auth[_0x841c('0xb')](),controller[_0x841c('0x1b')]);module['exports']=router;
\ No newline at end of file
index 48e3f43..48e30c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2f5=['INTEGER','ENUM','Email','Chat','sequelize','lodash','exports','TEXT','out','STRING','long','DATE'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0xd2f5,0x1f0));var _0x5d2f=function(_0x1937c6,_0x25a2ab){_0x1937c6=_0x1937c6-0x0;var _0x4ec1c8=_0xd2f5[_0x1937c6];return _0x4ec1c8;};'use strict';var Sequelize=require(_0x5d2f('0x0'));var _=require(_0x5d2f('0x1'));module[_0x5d2f('0x2')]={'body':{'type':Sequelize['TEXT']('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0x5d2f('0x3')]('medium')},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x5d2f('0x4')),'defaultValue':_0x5d2f('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x5d2f('0x5')](0x1fe)},'from':{'type':Sequelize[_0x5d2f('0x5')]},'to':{'type':Sequelize['TEXT'](_0x5d2f('0x6'))},'cc':{'type':Sequelize[_0x5d2f('0x3')]('long')},'bcc':{'type':Sequelize['TEXT'](_0x5d2f('0x6'))},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize[_0x5d2f('0x7')]},'attach':{'type':Sequelize[_0x5d2f('0x8')],'defaultValue':0x0},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'readAt':{'type':Sequelize[_0x5d2f('0x7')]},'originTo':{'type':Sequelize['TEXT'](_0x5d2f('0x6'))},'originCc':{'type':Sequelize[_0x5d2f('0x3')](_0x5d2f('0x6'))},'originChannel':{'type':Sequelize[_0x5d2f('0x9')](_0x5d2f('0xa'),_0x5d2f('0xb')),'defaultValue':_0x5d2f('0xa'),'allowNull':![]}};
\ No newline at end of file
+var _0x9f38=['ENUM','Email','Chat','exports','TEXT','long','medium','out','STRING','DATE','INTEGER','BOOLEAN'];(function(_0x368bba,_0x1f625b){var _0x409f8f=function(_0x463373){while(--_0x463373){_0x368bba['push'](_0x368bba['shift']());}};_0x409f8f(++_0x1f625b);}(_0x9f38,0x153));var _0x89f3=function(_0x19a855,_0x3d09be){_0x19a855=_0x19a855-0x0;var _0x26456e=_0x9f38[_0x19a855];return _0x26456e;};'use strict';var Sequelize=require('sequelize');var _=require('lodash');module[_0x89f3('0x0')]={'body':{'type':Sequelize[_0x89f3('0x1')](_0x89f3('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x89f3('0x3'))},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x89f3('0x4')),'defaultValue':_0x89f3('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x89f3('0x5')](0x1fe)},'from':{'type':Sequelize[_0x89f3('0x5')]},'to':{'type':Sequelize[_0x89f3('0x1')](_0x89f3('0x2'))},'cc':{'type':Sequelize[_0x89f3('0x1')]('long')},'bcc':{'type':Sequelize[_0x89f3('0x1')]('long')},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize[_0x89f3('0x6')]},'attach':{'type':Sequelize[_0x89f3('0x7')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x89f3('0x8')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x89f3('0x6')]},'originTo':{'type':Sequelize[_0x89f3('0x1')]('long')},'originCc':{'type':Sequelize[_0x89f3('0x1')](_0x89f3('0x2'))},'originChannel':{'type':Sequelize[_0x89f3('0x9')](_0x89f3('0xa'),_0x89f3('0xb')),'defaultValue':_0x89f3('0xa'),'allowNull':![]}};
\ No newline at end of file
index bb8c758..aa04c89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c2c=['path','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../mysqldb','redis','defaults','localhost','socket.io-emitter','html-entities','./mailMessage.socket','jayson/promise','client','http','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','status','undefined','limit','count','offset','set','Content-Range','json','update','destroy','end','stack','send','map','MailMessage','rawAttributes','fieldName','name','keys','query','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','fields','find','describe','body','direction','out','secret','split','MailAccount','findOne','MailAccountId','CmList','List','CmContact','updatedAt','DESC','MailServerOut','Smtp','isNil','service','host','port','secure','authentication','auth','user','pass','attachments','join','root','basename','Contacts','create','ListId','List\x20not\x20found','sendMail','messageId','YYYY-MM-DD\x20HH:mm:ss','read','readAt','format','UserId','agent','get','MailInteractionId','read1stAt','interaction','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','User','fullname','email','interface','channel','motionChannel','event','accept','EventManager','reject','MailInteraction','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','SELECT','fromString','rejectmessage','download','toString','server','files','tmp','from','createdAt','Attachment','subject','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','bcc','Bcc','Attachments','existsSync','push','unlinkSync','moment','bluebird','util'];(function(_0x270c96,_0x3928c3){var _0x1e5043=function(_0x2293b6){while(--_0x2293b6){_0x270c96['push'](_0x270c96['shift']());}};_0x1e5043(++_0x3928c3);}(_0x7c2c,0x143));var _0xc7c2=function(_0x51b0df,_0x5a36c6){_0x51b0df=_0x51b0df-0x0;var _0x2463e5=_0x7c2c[_0x51b0df];return _0x2463e5;};'use strict';var emlformat=require('eml-format');var moment=require(_0xc7c2('0x0'));var BPromise=require(_0xc7c2('0x1'));var util=require(_0xc7c2('0x2'));var path=require(_0xc7c2('0x3'));var fs=require('fs');var _=require(_0xc7c2('0x4'));var Redis=require(_0xc7c2('0x5'));var htmlToText=require('html-to-text');var qs=require(_0xc7c2('0x6'));var logger=require(_0xc7c2('0x7'))(_0xc7c2('0x8'));var interaction_log=require('../../config/logger')(_0xc7c2('0x9'));var config=require('../../config/environment');var db=require(_0xc7c2('0xa'))['db'];config[_0xc7c2('0xb')]=_[_0xc7c2('0xc')](config[_0xc7c2('0xb')],{'host':_0xc7c2('0xd'),'port':0x18eb});var socket=require(_0xc7c2('0xe'))(new Redis(config[_0xc7c2('0xb')]));var htmlEntities=require(_0xc7c2('0xf'));require(_0xc7c2('0x10'))['register'](socket);var jayson=require(_0xc7c2('0x11'));var client=jayson[_0xc7c2('0x12')][_0xc7c2('0x13')]({'port':0x232c});var client9003=jayson[_0xc7c2('0x12')][_0xc7c2('0x13')]({'port':0x232b});var client9002=jayson['client'][_0xc7c2('0x13')]({'port':0x232a});function respondWithRpcPromise(_0x10cabd,_0x1b7ff9,_0x47f819,_0x4b327d){return new BPromise(function(_0xaec588,_0x161b1b){var _0x552a1d=_0x4b327d||client;return _0x552a1d[_0xc7c2('0x14')](_0x10cabd,_0x47f819)[_0xc7c2('0x15')](function(_0x114d8d){logger[_0xc7c2('0x16')](_0xc7c2('0x17'),_0x1b7ff9,_0xc7c2('0x18'));logger[_0xc7c2('0x19')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x1b7ff9,_0xc7c2('0x18'),JSON[_0xc7c2('0x1a')](_0x114d8d));if(_0x114d8d[_0xc7c2('0x1b')]){if(_0x114d8d[_0xc7c2('0x1b')]['code']===0x1f4){logger[_0xc7c2('0x1b')](_0xc7c2('0x17'),_0x1b7ff9,_0x114d8d[_0xc7c2('0x1b')]['message']);return _0x161b1b(_0x114d8d[_0xc7c2('0x1b')][_0xc7c2('0x1c')]);}logger['error'](_0xc7c2('0x17'),_0x1b7ff9,_0x114d8d[_0xc7c2('0x1b')][_0xc7c2('0x1c')]);return _0xaec588(_0x114d8d[_0xc7c2('0x1b')][_0xc7c2('0x1c')]);}else{logger[_0xc7c2('0x16')](_0xc7c2('0x17'),_0x1b7ff9,'request\x20sent');_0xaec588(_0x114d8d[_0xc7c2('0x1d')]['message']);}})[_0xc7c2('0x1e')](function(_0x10f3ad){logger[_0xc7c2('0x1b')]('MailMessage,\x20%s,\x20%s',_0x1b7ff9,_0x10f3ad);_0x161b1b(_0x10f3ad);});});}function respondWithResult(_0x598d6f,_0x34f90f){_0x34f90f=_0x34f90f||0xc8;return function(_0x639558){if(_0x639558){return _0x598d6f[_0xc7c2('0x1f')](_0x34f90f)['json'](_0x639558);}};}function respondWithFilteredResult(_0x488c9b,_0x5db311){return function(_0x25b628){if(_0x25b628){var _0x51039e=typeof _0x5db311['offset']===_0xc7c2('0x20')&&typeof _0x5db311[_0xc7c2('0x21')]===_0xc7c2('0x20');var _0x10e3f4=_0x25b628[_0xc7c2('0x22')];var _0x9ea02d=_0x51039e?0x0:_0x5db311[_0xc7c2('0x23')];var _0x5d3f64=_0x51039e?_0x25b628[_0xc7c2('0x22')]:_0x5db311['offset']+_0x5db311[_0xc7c2('0x21')];var _0x502a67;if(_0x5d3f64>=_0x10e3f4){_0x5d3f64=_0x10e3f4;_0x502a67=0xc8;}else{_0x502a67=0xce;}_0x488c9b[_0xc7c2('0x1f')](_0x502a67);return _0x488c9b[_0xc7c2('0x24')](_0xc7c2('0x25'),_0x9ea02d+'-'+_0x5d3f64+'/'+_0x10e3f4)[_0xc7c2('0x26')](_0x25b628);}return null;};}function saveUpdates(_0x25db23){return function(_0x32df6f){if(_0x32df6f){return _0x32df6f[_0xc7c2('0x27')](_0x25db23)['then'](function(_0x4f40e9){return _0x4f40e9;});}return null;};}function removeEntity(_0xe3f97f){return function(_0x3708d1){if(_0x3708d1){return _0x3708d1[_0xc7c2('0x28')]()[_0xc7c2('0x15')](function(){_0xe3f97f[_0xc7c2('0x1f')](0xcc)[_0xc7c2('0x29')]();});}};}function handleEntityNotFound(_0x1733e2){return function(_0x54abd6){if(!_0x54abd6){_0x1733e2['sendStatus'](0x194);}return _0x54abd6;};}function handleError(_0x50f185,_0x3af6c2){_0x3af6c2=_0x3af6c2||0x1f4;return function(_0x2cd6c7){logger[_0xc7c2('0x1b')](_0x2cd6c7[_0xc7c2('0x2a')]);if(_0x2cd6c7['name']){delete _0x2cd6c7['name'];}_0x50f185['status'](_0x3af6c2)[_0xc7c2('0x2b')](_0x2cd6c7);};}exports['index']=function(_0x22f271,_0x83c025){var _0x558194={},_0x414f18={},_0x1bd82a={'count':0x0,'rows':[]};var _0x18dcae=_[_0xc7c2('0x2c')](db[_0xc7c2('0x2d')][_0xc7c2('0x2e')],function(_0x1ffa79){return{'name':_0x1ffa79[_0xc7c2('0x2f')],'type':_0x1ffa79['type']['key']};});_0x414f18['model']=_[_0xc7c2('0x2c')](_0x18dcae,_0xc7c2('0x30'));_0x414f18['query']=_[_0xc7c2('0x31')](_0x22f271[_0xc7c2('0x32')]);_0x414f18[_0xc7c2('0x33')]=_[_0xc7c2('0x34')](_0x414f18[_0xc7c2('0x35')],_0x414f18[_0xc7c2('0x32')]);_0x558194[_0xc7c2('0x36')]=_['intersection'](_0x414f18['model'],qs['fields'](_0x22f271[_0xc7c2('0x32')]['fields']));_0x558194[_0xc7c2('0x36')]=_0x558194[_0xc7c2('0x36')][_0xc7c2('0x37')]?_0x558194[_0xc7c2('0x36')]:_0x414f18[_0xc7c2('0x35')];if(!_0x22f271[_0xc7c2('0x32')][_0xc7c2('0x38')](_0xc7c2('0x39'))){_0x558194[_0xc7c2('0x21')]=qs[_0xc7c2('0x21')](_0x22f271['query'][_0xc7c2('0x21')]);_0x558194[_0xc7c2('0x23')]=qs[_0xc7c2('0x23')](_0x22f271[_0xc7c2('0x32')][_0xc7c2('0x23')]);}_0x558194[_0xc7c2('0x3a')]=qs[_0xc7c2('0x3b')](_0x22f271['query'][_0xc7c2('0x3b')]);_0x558194[_0xc7c2('0x3c')]=qs['filters'](_['pick'](_0x22f271[_0xc7c2('0x32')],_0x414f18[_0xc7c2('0x33')]),_0x18dcae);if(_0x22f271[_0xc7c2('0x32')][_0xc7c2('0x3d')]){_0x558194['where']=_['merge'](_0x558194[_0xc7c2('0x3c')],{'$or':_[_0xc7c2('0x2c')](_0x18dcae,function(_0x2c3fdf){if(_0x2c3fdf[_0xc7c2('0x3e')]!==_0xc7c2('0x3f')){var _0x3ddcf2={};_0x3ddcf2[_0x2c3fdf[_0xc7c2('0x30')]]={'$like':'%'+_0x22f271[_0xc7c2('0x32')][_0xc7c2('0x3d')]+'%'};return _0x3ddcf2;}})});}_0x558194=_[_0xc7c2('0x40')]({},_0x558194,_0x22f271[_0xc7c2('0x41')]);var _0xd0a8f7={'where':_0x558194[_0xc7c2('0x3c')]};return db['MailMessage']['count'](_0xd0a8f7)[_0xc7c2('0x15')](function(_0x16319d){_0x1bd82a[_0xc7c2('0x22')]=_0x16319d;if(_0x22f271['query'][_0xc7c2('0x42')]){_0x558194[_0xc7c2('0x43')]=[{'all':!![]}];}return db[_0xc7c2('0x2d')][_0xc7c2('0x44')](_0x558194);})[_0xc7c2('0x15')](function(_0x3df1f5){_0x1bd82a[_0xc7c2('0x45')]=_0x3df1f5;return _0x1bd82a;})[_0xc7c2('0x15')](respondWithFilteredResult(_0x83c025,_0x558194))[_0xc7c2('0x1e')](handleError(_0x83c025,null));};exports[_0xc7c2('0x46')]=function(_0xa72f7a,_0x4de690){var _0x490370={'raw':!![],'where':{'id':_0xa72f7a[_0xc7c2('0x47')]['id']}},_0x524f35={};_0x524f35['model']=_[_0xc7c2('0x31')](db[_0xc7c2('0x2d')]['rawAttributes']);_0x524f35['query']=_[_0xc7c2('0x31')](_0xa72f7a[_0xc7c2('0x32')]);_0x524f35[_0xc7c2('0x33')]=_[_0xc7c2('0x34')](_0x524f35[_0xc7c2('0x35')],_0x524f35['query']);_0x490370['attributes']=_[_0xc7c2('0x34')](_0x524f35['model'],qs[_0xc7c2('0x48')](_0xa72f7a['query'][_0xc7c2('0x48')]));_0x490370[_0xc7c2('0x36')]=_0x490370[_0xc7c2('0x36')][_0xc7c2('0x37')]?_0x490370['attributes']:_0x524f35[_0xc7c2('0x35')];if(_0xa72f7a['query'][_0xc7c2('0x42')]){_0x490370[_0xc7c2('0x43')]=[{'all':!![]}];}_0x490370=_[_0xc7c2('0x40')]({},_0x490370,_0xa72f7a[_0xc7c2('0x41')]);return db[_0xc7c2('0x2d')]['find'](_0x490370)[_0xc7c2('0x15')](handleEntityNotFound(_0x4de690,null))['then'](respondWithResult(_0x4de690,null))['catch'](handleError(_0x4de690,null));};exports['update']=function(_0x3e9c4a,_0x49f754){if(_0x3e9c4a['body']['id']){delete _0x3e9c4a['body']['id'];}return db[_0xc7c2('0x2d')][_0xc7c2('0x49')]({'where':{'id':_0x3e9c4a['params']['id']}})['then'](handleEntityNotFound(_0x49f754,null))[_0xc7c2('0x15')](saveUpdates(_0x3e9c4a['body'],null))[_0xc7c2('0x15')](respondWithResult(_0x49f754,null))[_0xc7c2('0x1e')](handleError(_0x49f754,null));};exports[_0xc7c2('0x28')]=function(_0x1e9b54,_0x188e47){return db[_0xc7c2('0x2d')][_0xc7c2('0x49')]({'where':{'id':_0x1e9b54[_0xc7c2('0x47')]['id']}})[_0xc7c2('0x15')](handleEntityNotFound(_0x188e47,null))[_0xc7c2('0x15')](removeEntity(_0x188e47,null))[_0xc7c2('0x1e')](handleError(_0x188e47,null));};exports[_0xc7c2('0x4a')]=function(_0x80f7f2,_0x3172dc){return db['MailMessage'][_0xc7c2('0x4a')]()[_0xc7c2('0x15')](respondWithResult(_0x3172dc,null))['catch'](handleError(_0x3172dc,null));};exports['create']=function(_0x59bea0,_0x5bbf94){return db[_0xc7c2('0x2d')]['create'](_0x59bea0[_0xc7c2('0x4b')])['then'](function(_0x585bad){if(_0x585bad){if(_0x585bad[_0xc7c2('0x4c')]===_0xc7c2('0x4d')&&!_0x585bad[_0xc7c2('0x4e')]){var _0x4793b9,_0x2eb939,_0x5c0757;if(_0x59bea0['body']['to']){_0x2eb939=_0x59bea0[_0xc7c2('0x4b')]['to'][_0xc7c2('0x4f')](',')[0x0];}return db[_0xc7c2('0x50')][_0xc7c2('0x51')]({'where':{'id':_0x585bad[_0xc7c2('0x52')]},'include':[{'model':db[_0xc7c2('0x53')],'as':_0xc7c2('0x54'),'include':[{'model':db[_0xc7c2('0x55')],'as':'Contacts','where':{'email':_0x2eb939},'limit':0x1,'order':[[_0xc7c2('0x56'),_0xc7c2('0x57')]]}]},{'model':db[_0xc7c2('0x58')],'as':_0xc7c2('0x59'),'raw':!![]}]})[_0xc7c2('0x15')](function(_0x177168){_0x4793b9=_0x177168;if(_0x4793b9&&_0x4793b9[_0xc7c2('0x59')]){var _0x5b5be8={'tls':{'rejectUnauthorized':![]}};if(_[_0xc7c2('0x5a')](_0x4793b9['Smtp'][_0xc7c2('0x5b')])){_0x5b5be8[_0xc7c2('0x5c')]=_0x4793b9['Smtp'][_0xc7c2('0x5c')];_0x5b5be8[_0xc7c2('0x5d')]=_0x4793b9['Smtp']['port'];_0x5b5be8[_0xc7c2('0x5e')]=_0x4793b9[_0xc7c2('0x59')]['secure'];if(_0x4793b9[_0xc7c2('0x59')][_0xc7c2('0x5f')]){_0x5b5be8[_0xc7c2('0x60')]={'user':_0x4793b9[_0xc7c2('0x59')][_0xc7c2('0x61')],'pass':_0x4793b9[_0xc7c2('0x59')]['pass']};}}else{_0x5b5be8[_0xc7c2('0x5b')]=_0x4793b9[_0xc7c2('0x59')][_0xc7c2('0x5b')];_0x5b5be8[_0xc7c2('0x60')]={'user':_0x4793b9[_0xc7c2('0x59')][_0xc7c2('0x61')],'pass':_0x4793b9[_0xc7c2('0x59')][_0xc7c2('0x62')]};_0x5b5be8[_0xc7c2('0x5e')]=_0x4793b9[_0xc7c2('0x59')][_0xc7c2('0x5e')];}if(_0x59bea0[_0xc7c2('0x4b')][_0xc7c2('0x63')]&&_0x59bea0[_0xc7c2('0x4b')][_0xc7c2('0x63')]['length']){for(var _0x2e7fce=0x0;_0x2e7fce<_0x59bea0['body'][_0xc7c2('0x63')][_0xc7c2('0x37')];_0x2e7fce+=0x1){_0x59bea0[_0xc7c2('0x4b')][_0xc7c2('0x63')][_0x2e7fce]={'filename':_0x59bea0[_0xc7c2('0x4b')][_0xc7c2('0x63')][_0x2e7fce][_0xc7c2('0x30')],'path':path[_0xc7c2('0x64')](config[_0xc7c2('0x65')],'server/files/attachments',_0x59bea0[_0xc7c2('0x4b')][_0xc7c2('0x63')][_0x2e7fce][_0xc7c2('0x66')])};}}_0x5c0757={'account':_0x5b5be8,'message':_0x59bea0[_0xc7c2('0x4b')]};return;}})[_0xc7c2('0x15')](function(){if(_0x4793b9[_0xc7c2('0x54')]){if(_0x4793b9[_0xc7c2('0x54')][_0xc7c2('0x67')]['length']){return _0x4793b9[_0xc7c2('0x54')][_0xc7c2('0x67')][0x0];}else{return db[_0xc7c2('0x55')][_0xc7c2('0x68')](_[_0xc7c2('0xc')](_0x59bea0[_0xc7c2('0x4b')],{'firstName':_0x59bea0[_0xc7c2('0x4b')]['to'],'email':_0x59bea0['body']['to'],'phone':_0x59bea0[_0xc7c2('0x4b')]['to'],'ListId':_0x4793b9[_0xc7c2('0x69')]}));}}else{throw new Error(_0xc7c2('0x6a'));}})[_0xc7c2('0x15')](function(){if(_0x5c0757){return respondWithRpcPromise('SendMail',_0xc7c2('0x6b'),_0x5c0757,client9003)[_0xc7c2('0x15')](function(_0x34684b){return _0x585bad[_0xc7c2('0x27')]({'read':!![],'messageId':_0x34684b[_0xc7c2('0x6c')],'sentAt':moment()['format'](_0xc7c2('0x6d'))});})['catch'](function(_0x1ca90f){logger[_0xc7c2('0x1b')]('%s',JSON['stringify'](_0x1ca90f));return _0x585bad;});}return _0x585bad;});}return _0x585bad;}})[_0xc7c2('0x15')](respondWithResult(_0x5bbf94,0xc9))[_0xc7c2('0x1e')](handleError(_0x5bbf94,null));};exports['accept']=function(_0x1b0202,_0x3bb0d1){var _0xdba63a={'agent':{},'channel':'mail'};if(_0x1b0202[_0xc7c2('0x4b')]['id']){delete _0x1b0202[_0xc7c2('0x4b')]['id'];}_0x1b0202[_0xc7c2('0x4b')][_0xc7c2('0x6e')]=!![];_0x1b0202[_0xc7c2('0x4b')][_0xc7c2('0x6f')]=moment()[_0xc7c2('0x70')](_0xc7c2('0x6d'));_0x1b0202[_0xc7c2('0x4b')][_0xc7c2('0x71')]=_0x1b0202[_0xc7c2('0x4b')][_0xc7c2('0x71')]||_0x1b0202[_0xc7c2('0x61')]['id'];_0xdba63a[_0xc7c2('0x72')]['id']=_0x1b0202['body'][_0xc7c2('0x71')];return db[_0xc7c2('0x2d')][_0xc7c2('0x49')]({'where':{'id':_0x1b0202['params']['id'],'UserId':null}})[_0xc7c2('0x15')](handleEntityNotFound(_0x3bb0d1,null))[_0xc7c2('0x15')](saveUpdates(_0x1b0202[_0xc7c2('0x4b')],null))[_0xc7c2('0x15')](function(_0x4ebfa4){if(_0x4ebfa4){_0xdba63a[_0xc7c2('0x1c')]=_0x4ebfa4[_0xc7c2('0x73')]({'plain':!![]});return db['MailInteraction'][_0xc7c2('0x49')]({'where':{'id':_0x4ebfa4[_0xc7c2('0x74')]}});}return null;})[_0xc7c2('0x15')](handleEntityNotFound(_0x3bb0d1,null))[_0xc7c2('0x15')](function(_0x1ecdba){if(_0x1ecdba){return _0x1ecdba['update']({'UserId':_0x1b0202[_0xc7c2('0x4b')][_0xc7c2('0x71')],'read1stAt':_[_0xc7c2('0x5a')](_0x1ecdba[_0xc7c2('0x75')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xc7c2('0x15')](function(_0x4520b3){if(_0x4520b3){_0xdba63a['interaction']=_0x4520b3[_0xc7c2('0x73')]({'plain':!![]});interaction_log[_0xc7c2('0x16')]('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1b0202[_0xc7c2('0x61')]['id'],_0x1b0202[_0xc7c2('0x61')][_0xc7c2('0x30')],_0x1b0202['user']['role'],_0xdba63a[_0xc7c2('0x76')]['id'],_0x1b0202[_0xc7c2('0x4b')]?JSON[_0xc7c2('0x1a')](_0x1b0202[_0xc7c2('0x4b')]):_0xc7c2('0x77'));return respondWithRpcPromise(_0xc7c2('0x78'),_0xc7c2('0x79'),_0xdba63a);}return null;})['then'](function(_0x3f704d){var _0x1ef34c=_0xc7c2('0x7a')+_0x3f704d['message'][_0xc7c2('0x7b')];return db[_0xc7c2('0x7c')][_0xc7c2('0x32')](_0x1ef34c,{'type':db[_0xc7c2('0x7d')][_0xc7c2('0x7e')]['SELECT'],'raw':!![]})[_0xc7c2('0x15')](function(_0x2f534a){return _0x2f534a;});})[_0xc7c2('0x15')](function(_0x516617){if(_0x516617){_0xdba63a[_0xc7c2('0x1c')][_0xc7c2('0x7f')]=_0x516617[0x0];if(!_0x1b0202[_0xc7c2('0x4b')][_0xc7c2('0x71')])return;return db[_0xc7c2('0x80')][_0xc7c2('0x49')]({'where':{'id':_0x1b0202[_0xc7c2('0x4b')][_0xc7c2('0x71')],'role':'agent'},'attributes':['id','name',_0xc7c2('0x81'),_0xc7c2('0x82'),'internal'],'raw':!![]});}return null;})['then'](function(_0x1bdb3f){if(!_0x1bdb3f)return null;_0xdba63a['message'][_0xc7c2('0x72')]=_0x1bdb3f;return _0xdba63a;})['then'](function(_0x5a4ac8){if(_0x5a4ac8){if(_0x1b0202[_0xc7c2('0x4b')]['manual']){_0xdba63a['message'][_0xc7c2('0x83')]=util['format']('SIP/%s',_0x1b0202[_0xc7c2('0x61')][_0xc7c2('0x30')]);_0xdba63a[_0xc7c2('0x1c')][_0xc7c2('0x84')]=_0xdba63a[_0xc7c2('0x84')];_0xdba63a[_0xc7c2('0x1c')][_0xc7c2('0x85')]=_0xdba63a[_0xc7c2('0x84')];_0xdba63a[_0xc7c2('0x1c')][_0xc7c2('0x86')]=_0xc7c2('0x87');_0xdba63a[_0xc7c2('0x1c')][_0xc7c2('0x4b')]=htmlToText['fromString'](_0xdba63a[_0xc7c2('0x1c')][_0xc7c2('0x4b')]);return respondWithRpcPromise(_0xc7c2('0x88'),_0xc7c2('0x88'),{'event':'acceptmessage','message':_0xdba63a[_0xc7c2('0x1c')]},client9002)[_0xc7c2('0x15')](function(){return _0xdba63a;});}return _0xdba63a;}return null;})[_0xc7c2('0x15')](respondWithResult(_0x3bb0d1,null))[_0xc7c2('0x1e')](handleError(_0x3bb0d1,null));};exports[_0xc7c2('0x89')]=function(_0x411345,_0x472c3b){var _0x5d4fa8={'agent':{},'channel':'mail'};if(_0x411345[_0xc7c2('0x4b')]['id']){delete _0x411345[_0xc7c2('0x4b')]['id'];}_0x411345[_0xc7c2('0x4b')][_0xc7c2('0x71')]=_0x411345['body']['UserId']||_0x411345[_0xc7c2('0x61')]['id'];_0x5d4fa8[_0xc7c2('0x72')]['id']=_0x411345['body'][_0xc7c2('0x71')];return db[_0xc7c2('0x2d')][_0xc7c2('0x49')]({'where':{'id':_0x411345[_0xc7c2('0x47')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x472c3b,null))[_0xc7c2('0x15')](function(_0x272b41){if(_0x272b41){_0x5d4fa8[_0xc7c2('0x1c')]=_0x272b41[_0xc7c2('0x73')]({'plain':!![]});return db[_0xc7c2('0x8a')][_0xc7c2('0x49')]({'where':{'id':_0x272b41[_0xc7c2('0x74')]}});}return null;})[_0xc7c2('0x15')](handleEntityNotFound(_0x472c3b,null))[_0xc7c2('0x15')](function(_0xa8fa8a){if(_0xa8fa8a){_0x5d4fa8['interaction']=_0xa8fa8a[_0xc7c2('0x73')]({'plain':!![]});interaction_log[_0xc7c2('0x16')](_0xc7c2('0x8b'),_0x411345[_0xc7c2('0x61')]['id'],_0x411345[_0xc7c2('0x61')][_0xc7c2('0x30')],_0x411345[_0xc7c2('0x61')][_0xc7c2('0x8c')],_0x5d4fa8[_0xc7c2('0x76')]['id'],_0x411345[_0xc7c2('0x4b')]?JSON[_0xc7c2('0x1a')](_0x411345[_0xc7c2('0x4b')]):_0xc7c2('0x77'));return respondWithRpcPromise(_0xc7c2('0x8d'),_0xc7c2('0x8e'),_0x5d4fa8);}return null;})[_0xc7c2('0x15')](function(_0x3c358a){var _0x51b12c=_0xc7c2('0x7a')+_0x3c358a[_0xc7c2('0x1c')]['ContactId'];return db[_0xc7c2('0x7c')]['query'](_0x51b12c,{'type':db[_0xc7c2('0x7d')]['QueryTypes'][_0xc7c2('0x8f')],'raw':!![]})[_0xc7c2('0x15')](function(_0x2edefb){return _0x2edefb;});})['then'](function(_0x3ccf9d){if(_0x3ccf9d){_0x5d4fa8[_0xc7c2('0x1c')][_0xc7c2('0x7f')]=_0x3ccf9d[0x0];if(!_0x411345['body'][_0xc7c2('0x71')])return;return db[_0xc7c2('0x80')][_0xc7c2('0x49')]({'where':{'id':_0x411345[_0xc7c2('0x4b')][_0xc7c2('0x71')],'role':_0xc7c2('0x72')},'attributes':['id',_0xc7c2('0x30'),_0xc7c2('0x81'),_0xc7c2('0x82'),'internal'],'raw':!![]});}return null;})[_0xc7c2('0x15')](function(_0x526a80){if(!_0x526a80)return null;_0x5d4fa8[_0xc7c2('0x1c')][_0xc7c2('0x72')]=_0x526a80;return _0x5d4fa8;})[_0xc7c2('0x15')](function(_0x21506b){if(_0x21506b){_0x21506b[_0xc7c2('0x1c')][_0xc7c2('0x83')]=util[_0xc7c2('0x70')]('SIP/%s',_0x411345[_0xc7c2('0x61')]['name']);_0x21506b[_0xc7c2('0x1c')][_0xc7c2('0x84')]=_0x5d4fa8[_0xc7c2('0x84')];_0x21506b['message'][_0xc7c2('0x85')]=_0x5d4fa8[_0xc7c2('0x84')];_0x21506b[_0xc7c2('0x1c')][_0xc7c2('0x86')]=_0xc7c2('0x89');_0x21506b['message'][_0xc7c2('0x4b')]=htmlToText[_0xc7c2('0x90')](_0x5d4fa8[_0xc7c2('0x1c')][_0xc7c2('0x4b')]);respondWithRpcPromise(_0xc7c2('0x88'),_0xc7c2('0x88'),{'event':_0xc7c2('0x91'),'message':_0x21506b['message']},client9002);return _0x5d4fa8;}return null;})[_0xc7c2('0x15')](respondWithResult(_0x472c3b,null))['catch'](handleError(_0x472c3b,null));};exports[_0xc7c2('0x92')]=function(_0x37925a,_0x215687){var _0x41a758=moment()['unix']()[_0xc7c2('0x93')]();var _0x14aa54=path[_0xc7c2('0x64')](config[_0xc7c2('0x65')],_0xc7c2('0x94'),_0xc7c2('0x95'),_0xc7c2('0x96'));var _0xc13965=path['join'](config[_0xc7c2('0x65')],_0xc7c2('0x94'),_0xc7c2('0x95'),_0xc7c2('0x63'));var _0x1f0d17=util[_0xc7c2('0x70')]('message-%s.eml',_0x41a758);return db[_0xc7c2('0x2d')][_0xc7c2('0x49')]({'where':{'id':_0x37925a[_0xc7c2('0x47')]['id']},'attributes':['id',_0xc7c2('0x4b'),_0xc7c2('0x97'),'to','cc','bcc','subject',_0xc7c2('0x98')],'include':_0x37925a[_0xc7c2('0x32')][_0xc7c2('0x63')]?[{'model':db[_0xc7c2('0x99')],'as':'Attachments'}]:undefined})[_0xc7c2('0x15')](handleEntityNotFound(_0x215687,null))[_0xc7c2('0x15')](function(_0x5846e1){if(_0x5846e1){var _0x5f4517=_0x5846e1;var _0x3243e2={'from':_0x5f4517[_0xc7c2('0x97')],'to':_0x5f4517['to'],'subject':_0x5f4517[_0xc7c2('0x9a')],'html':htmlEntities[_0xc7c2('0x9b')](_0x5f4517['body']),'headers':{'Date':moment(_0x5f4517['createdAt'])[_0xc7c2('0x70')](_0xc7c2('0x9c'))},'attachments':[]};if(_0x5846e1['cc']){_0x3243e2['headers']['Cc']=_0x5846e1['cc'];}if(_0x5846e1[_0xc7c2('0x9d')]){_0x3243e2['headers'][_0xc7c2('0x9e')]=_0x5846e1[_0xc7c2('0x9d')];}return new BPromise(function(_0x592c96,_0x3feb5a){if(_0x5846e1[_0xc7c2('0x9f')]){for(var _0x1a5de7=0x0;_0x1a5de7<_0x5846e1['Attachments'][_0xc7c2('0x37')];_0x1a5de7++){var _0x405326=_0x5846e1[_0xc7c2('0x9f')][_0x1a5de7];var _0x27f326=path[_0xc7c2('0x64')](_0xc13965,_0x405326[_0xc7c2('0x66')]);if(fs[_0xc7c2('0xa0')](_0x27f326)){_0x3243e2['attachments'][_0xc7c2('0xa1')]({'name':_0x405326[_0xc7c2('0x30')],'contentType':_0x405326[_0xc7c2('0x3e')],'data':fs['readFileSync'](_0x27f326)});}}}emlformat['build'](_0x3243e2,function(_0x16bbd2,_0x34d126){if(_0x16bbd2)return _0x3feb5a(_0x16bbd2);fs['writeFileSync'](path[_0xc7c2('0x64')](_0x14aa54,_0x1f0d17),_0x34d126);return _0x592c96(_0x34d126);});});}})[_0xc7c2('0x15')](function(_0x450c96){if(_0x450c96){return _0x215687['download'](path[_0xc7c2('0x64')](_0x14aa54,_0x1f0d17),_0x1f0d17,function(_0x7674c4){if(!_0x7674c4)fs[_0xc7c2('0xa2')](path[_0xc7c2('0x64')](_0x14aa54,_0x1f0d17));});}})[_0xc7c2('0x1e')](handleError(_0x215687,null));};
\ No newline at end of file
+var _0x34e8=['message','info','catch','status','json','offset','undefined','limit','count','set','Content-Range','destroy','end','sendStatus','name','send','index','map','MailMessage','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','findAll','rows','show','params','length','include','find','body','create','direction','out','secret','MailAccount','findOne','CmList','List','CmContact','Contacts','DESC','MailServerOut','Smtp','isNil','service','host','port','secure','authentication','auth','user','pass','attachments','join','root','server/files/attachments','basename','ListId','sendMail','update','messageId','YYYY-MM-DD\x20HH:mm:ss','accept','readAt','UserId','agent','get','MailInteraction','MailInteractionId','format','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','internal','SIP/%s','channel','fromString','EventManager','acceptmessage','reject','mail','RejectMessage','rejectMessage','email','interface','event','rejectmessage','download','unix','toString','files','tmp','server','message-%s.eml','from','bcc','subject','createdAt','Attachment','Attachments','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','existsSync','push','build','writeFileSync','unlinkSync','eml-format','moment','bluebird','util','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','jayson/promise','client','http','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0xcfeff4,_0x3f2e19){var _0xb2fadc=function(_0x4cd013){while(--_0x4cd013){_0xcfeff4['push'](_0xcfeff4['shift']());}};_0xb2fadc(++_0x3f2e19);}(_0x34e8,0x12c));var _0x834e=function(_0x14d249,_0x352923){_0x14d249=_0x14d249-0x0;var _0xebe8ed=_0x34e8[_0x14d249];return _0xebe8ed;};'use strict';var emlformat=require(_0x834e('0x0'));var moment=require(_0x834e('0x1'));var BPromise=require(_0x834e('0x2'));var util=require(_0x834e('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x834e('0x4'));var Redis=require(_0x834e('0x5'));var htmlToText=require(_0x834e('0x6'));var qs=require(_0x834e('0x7'));var logger=require(_0x834e('0x8'))(_0x834e('0x9'));var interaction_log=require(_0x834e('0x8'))('mail-interactions');var config=require(_0x834e('0xa'));var db=require('../../mysqldb')['db'];config[_0x834e('0xb')]=_[_0x834e('0xc')](config[_0x834e('0xb')],{'host':_0x834e('0xd'),'port':0x18eb});var socket=require(_0x834e('0xe'))(new Redis(config[_0x834e('0xb')]));require(_0x834e('0xf'))[_0x834e('0x10')](socket);var jayson=require(_0x834e('0x11'));var client=jayson[_0x834e('0x12')][_0x834e('0x13')]({'port':0x232c});var client9003=jayson[_0x834e('0x12')][_0x834e('0x13')]({'port':0x232b});var client9002=jayson[_0x834e('0x12')][_0x834e('0x13')]({'port':0x232a});function respondWithRpcPromise(_0x1e00de,_0x2fd95c,_0x538bb3,_0x5e5b6d){return new BPromise(function(_0x6cd9b9,_0x58a27e){var _0x23848e=_0x5e5b6d||client;return _0x23848e[_0x834e('0x14')](_0x1e00de,_0x538bb3)[_0x834e('0x15')](function(_0x21cc0a){logger['info'](_0x834e('0x16'),_0x2fd95c,_0x834e('0x17'));logger['debug'](_0x834e('0x18'),_0x2fd95c,'request\x20sent',JSON[_0x834e('0x19')](_0x21cc0a));if(_0x21cc0a[_0x834e('0x1a')]){if(_0x21cc0a['error'][_0x834e('0x1b')]===0x1f4){logger[_0x834e('0x1a')](_0x834e('0x16'),_0x2fd95c,_0x21cc0a['error'][_0x834e('0x1c')]);return _0x58a27e(_0x21cc0a[_0x834e('0x1a')][_0x834e('0x1c')]);}logger[_0x834e('0x1a')](_0x834e('0x16'),_0x2fd95c,_0x21cc0a[_0x834e('0x1a')][_0x834e('0x1c')]);return _0x6cd9b9(_0x21cc0a['error'][_0x834e('0x1c')]);}else{logger[_0x834e('0x1d')](_0x834e('0x16'),_0x2fd95c,_0x834e('0x17'));_0x6cd9b9(_0x21cc0a['result'][_0x834e('0x1c')]);}})[_0x834e('0x1e')](function(_0x5a05c0){logger[_0x834e('0x1a')](_0x834e('0x16'),_0x2fd95c,_0x5a05c0);_0x58a27e(_0x5a05c0);});});}function respondWithResult(_0x8d406e,_0x5c55ca){_0x5c55ca=_0x5c55ca||0xc8;return function(_0x4e3f48){if(_0x4e3f48){return _0x8d406e[_0x834e('0x1f')](_0x5c55ca)[_0x834e('0x20')](_0x4e3f48);}};}function respondWithFilteredResult(_0x589dde,_0x25ee1d){return function(_0x1dc1e0){if(_0x1dc1e0){var _0x58f4fd=typeof _0x25ee1d[_0x834e('0x21')]===_0x834e('0x22')&&typeof _0x25ee1d[_0x834e('0x23')]==='undefined';var _0x24fcf7=_0x1dc1e0[_0x834e('0x24')];var _0x5e1cc5=_0x58f4fd?0x0:_0x25ee1d['offset'];var _0x1e713a=_0x58f4fd?_0x1dc1e0['count']:_0x25ee1d[_0x834e('0x21')]+_0x25ee1d[_0x834e('0x23')];var _0x3db026;if(_0x1e713a>=_0x24fcf7){_0x1e713a=_0x24fcf7;_0x3db026=0xc8;}else{_0x3db026=0xce;}_0x589dde[_0x834e('0x1f')](_0x3db026);return _0x589dde[_0x834e('0x25')](_0x834e('0x26'),_0x5e1cc5+'-'+_0x1e713a+'/'+_0x24fcf7)['json'](_0x1dc1e0);}return null;};}function saveUpdates(_0x510780){return function(_0x4dc64a){if(_0x4dc64a){return _0x4dc64a['update'](_0x510780)[_0x834e('0x15')](function(_0x567cea){return _0x567cea;});}return null;};}function removeEntity(_0x106d6a){return function(_0x5dacc1){if(_0x5dacc1){return _0x5dacc1[_0x834e('0x27')]()[_0x834e('0x15')](function(){_0x106d6a[_0x834e('0x1f')](0xcc)[_0x834e('0x28')]();});}};}function handleEntityNotFound(_0x4551f5){return function(_0x390119){if(!_0x390119){_0x4551f5[_0x834e('0x29')](0x194);}return _0x390119;};}function handleError(_0xfaf716,_0x278db3){_0x278db3=_0x278db3||0x1f4;return function(_0x493289){logger[_0x834e('0x1a')](_0x493289['stack']);if(_0x493289[_0x834e('0x2a')]){delete _0x493289[_0x834e('0x2a')];}_0xfaf716[_0x834e('0x1f')](_0x278db3)[_0x834e('0x2b')](_0x493289);};}exports[_0x834e('0x2c')]=function(_0x4689c2,_0x4696a1){var _0x38cd29={},_0x358c31={},_0x12b2bc={'count':0x0,'rows':[]};var _0x5bd232=_[_0x834e('0x2d')](db[_0x834e('0x2e')][_0x834e('0x2f')],function(_0xaf01f4){return{'name':_0xaf01f4['fieldName'],'type':_0xaf01f4[_0x834e('0x30')][_0x834e('0x31')]};});_0x358c31['model']=_['map'](_0x5bd232,'name');_0x358c31[_0x834e('0x32')]=_[_0x834e('0x33')](_0x4689c2[_0x834e('0x32')]);_0x358c31[_0x834e('0x34')]=_[_0x834e('0x35')](_0x358c31[_0x834e('0x36')],_0x358c31['query']);_0x38cd29[_0x834e('0x37')]=_['intersection'](_0x358c31[_0x834e('0x36')],qs[_0x834e('0x38')](_0x4689c2['query'][_0x834e('0x38')]));_0x38cd29[_0x834e('0x37')]=_0x38cd29['attributes']['length']?_0x38cd29[_0x834e('0x37')]:_0x358c31[_0x834e('0x36')];if(!_0x4689c2[_0x834e('0x32')][_0x834e('0x39')](_0x834e('0x3a'))){_0x38cd29['limit']=qs[_0x834e('0x23')](_0x4689c2['query']['limit']);_0x38cd29[_0x834e('0x21')]=qs['offset'](_0x4689c2[_0x834e('0x32')][_0x834e('0x21')]);}_0x38cd29[_0x834e('0x3b')]=qs[_0x834e('0x3c')](_0x4689c2[_0x834e('0x32')]['sort']);_0x38cd29[_0x834e('0x3d')]=qs[_0x834e('0x34')](_[_0x834e('0x3e')](_0x4689c2['query'],_0x358c31[_0x834e('0x34')]),_0x5bd232);if(_0x4689c2[_0x834e('0x32')]['filter']){_0x38cd29[_0x834e('0x3d')]=_['merge'](_0x38cd29[_0x834e('0x3d')],{'$or':_[_0x834e('0x2d')](_0x5bd232,function(_0x4a18bb){if(_0x4a18bb['type']!==_0x834e('0x3f')){var _0x16969b={};_0x16969b[_0x4a18bb[_0x834e('0x2a')]]={'$like':'%'+_0x4689c2[_0x834e('0x32')][_0x834e('0x40')]+'%'};return _0x16969b;}})});}_0x38cd29=_[_0x834e('0x41')]({},_0x38cd29,_0x4689c2[_0x834e('0x42')]);var _0x4a3381={'where':_0x38cd29[_0x834e('0x3d')]};return db['MailMessage'][_0x834e('0x24')](_0x4a3381)['then'](function(_0x1df5b0){_0x12b2bc['count']=_0x1df5b0;if(_0x4689c2[_0x834e('0x32')][_0x834e('0x43')]){_0x38cd29['include']=[{'all':!![]}];}return db[_0x834e('0x2e')][_0x834e('0x44')](_0x38cd29);})[_0x834e('0x15')](function(_0xd55cc3){_0x12b2bc[_0x834e('0x45')]=_0xd55cc3;return _0x12b2bc;})[_0x834e('0x15')](respondWithFilteredResult(_0x4696a1,_0x38cd29))[_0x834e('0x1e')](handleError(_0x4696a1,null));};exports[_0x834e('0x46')]=function(_0x5dc63b,_0x279ea1){var _0x5f3943={'raw':!![],'where':{'id':_0x5dc63b[_0x834e('0x47')]['id']}},_0x3124be={};_0x3124be['model']=_[_0x834e('0x33')](db[_0x834e('0x2e')][_0x834e('0x2f')]);_0x3124be[_0x834e('0x32')]=_[_0x834e('0x33')](_0x5dc63b[_0x834e('0x32')]);_0x3124be['filters']=_['intersection'](_0x3124be[_0x834e('0x36')],_0x3124be[_0x834e('0x32')]);_0x5f3943[_0x834e('0x37')]=_[_0x834e('0x35')](_0x3124be[_0x834e('0x36')],qs[_0x834e('0x38')](_0x5dc63b[_0x834e('0x32')][_0x834e('0x38')]));_0x5f3943[_0x834e('0x37')]=_0x5f3943[_0x834e('0x37')][_0x834e('0x48')]?_0x5f3943[_0x834e('0x37')]:_0x3124be[_0x834e('0x36')];if(_0x5dc63b[_0x834e('0x32')][_0x834e('0x43')]){_0x5f3943[_0x834e('0x49')]=[{'all':!![]}];}_0x5f3943=_[_0x834e('0x41')]({},_0x5f3943,_0x5dc63b[_0x834e('0x42')]);return db[_0x834e('0x2e')][_0x834e('0x4a')](_0x5f3943)['then'](handleEntityNotFound(_0x279ea1,null))[_0x834e('0x15')](respondWithResult(_0x279ea1,null))[_0x834e('0x1e')](handleError(_0x279ea1,null));};exports['update']=function(_0x3c00a3,_0x3b0988){if(_0x3c00a3['body']['id']){delete _0x3c00a3[_0x834e('0x4b')]['id'];}return db[_0x834e('0x2e')][_0x834e('0x4a')]({'where':{'id':_0x3c00a3[_0x834e('0x47')]['id']}})[_0x834e('0x15')](handleEntityNotFound(_0x3b0988,null))[_0x834e('0x15')](saveUpdates(_0x3c00a3[_0x834e('0x4b')],null))['then'](respondWithResult(_0x3b0988,null))[_0x834e('0x1e')](handleError(_0x3b0988,null));};exports[_0x834e('0x27')]=function(_0x3e0550,_0x363675){return db[_0x834e('0x2e')][_0x834e('0x4a')]({'where':{'id':_0x3e0550[_0x834e('0x47')]['id']}})[_0x834e('0x15')](handleEntityNotFound(_0x363675,null))['then'](removeEntity(_0x363675,null))[_0x834e('0x1e')](handleError(_0x363675,null));};exports['describe']=function(_0x2f4bde,_0x53a9ee){return db[_0x834e('0x2e')]['describe']()['then'](respondWithResult(_0x53a9ee,null))[_0x834e('0x1e')](handleError(_0x53a9ee,null));};exports[_0x834e('0x4c')]=function(_0x5291ae,_0x5be43d){return db[_0x834e('0x2e')][_0x834e('0x4c')](_0x5291ae[_0x834e('0x4b')])[_0x834e('0x15')](function(_0x21c417){if(_0x21c417){if(_0x21c417[_0x834e('0x4d')]===_0x834e('0x4e')&&!_0x21c417[_0x834e('0x4f')]){var _0x528e66,_0x142334,_0x3c70bf;if(_0x5291ae['body']['to']){_0x142334=_0x5291ae[_0x834e('0x4b')]['to']['split'](',')[0x0];}return db[_0x834e('0x50')][_0x834e('0x51')]({'where':{'id':_0x21c417['MailAccountId']},'include':[{'model':db[_0x834e('0x52')],'as':_0x834e('0x53'),'include':[{'model':db[_0x834e('0x54')],'as':_0x834e('0x55'),'where':{'email':_0x142334},'limit':0x1,'order':[['updatedAt',_0x834e('0x56')]]}]},{'model':db[_0x834e('0x57')],'as':_0x834e('0x58'),'raw':!![]}]})['then'](function(_0x246b8e){_0x528e66=_0x246b8e;if(_0x528e66&&_0x528e66[_0x834e('0x58')]){var _0x3a7683={'tls':{'rejectUnauthorized':![]}};if(_[_0x834e('0x59')](_0x528e66[_0x834e('0x58')][_0x834e('0x5a')])){_0x3a7683[_0x834e('0x5b')]=_0x528e66[_0x834e('0x58')][_0x834e('0x5b')];_0x3a7683[_0x834e('0x5c')]=_0x528e66[_0x834e('0x58')][_0x834e('0x5c')];_0x3a7683[_0x834e('0x5d')]=_0x528e66[_0x834e('0x58')][_0x834e('0x5d')];if(_0x528e66[_0x834e('0x58')][_0x834e('0x5e')]){_0x3a7683[_0x834e('0x5f')]={'user':_0x528e66[_0x834e('0x58')][_0x834e('0x60')],'pass':_0x528e66[_0x834e('0x58')][_0x834e('0x61')]};}}else{_0x3a7683['service']=_0x528e66[_0x834e('0x58')][_0x834e('0x5a')];_0x3a7683[_0x834e('0x5f')]={'user':_0x528e66[_0x834e('0x58')]['user'],'pass':_0x528e66[_0x834e('0x58')]['pass']};_0x3a7683['secure']=_0x528e66[_0x834e('0x58')][_0x834e('0x5d')];}if(_0x5291ae[_0x834e('0x4b')][_0x834e('0x62')]&&_0x5291ae[_0x834e('0x4b')][_0x834e('0x62')][_0x834e('0x48')]){for(var _0xe5c8f6=0x0;_0xe5c8f6<_0x5291ae['body'][_0x834e('0x62')]['length'];_0xe5c8f6+=0x1){_0x5291ae[_0x834e('0x4b')][_0x834e('0x62')][_0xe5c8f6]={'filename':_0x5291ae['body']['attachments'][_0xe5c8f6][_0x834e('0x2a')],'path':path[_0x834e('0x63')](config[_0x834e('0x64')],_0x834e('0x65'),_0x5291ae[_0x834e('0x4b')]['attachments'][_0xe5c8f6][_0x834e('0x66')])};}}_0x3c70bf={'account':_0x3a7683,'message':_0x5291ae[_0x834e('0x4b')]};return;}})[_0x834e('0x15')](function(){if(_0x528e66[_0x834e('0x53')]){if(_0x528e66[_0x834e('0x53')][_0x834e('0x55')][_0x834e('0x48')]){return _0x528e66[_0x834e('0x53')][_0x834e('0x55')][0x0];}else{return db[_0x834e('0x54')]['create'](_[_0x834e('0xc')](_0x5291ae[_0x834e('0x4b')],{'firstName':_0x5291ae[_0x834e('0x4b')]['to'],'email':_0x5291ae[_0x834e('0x4b')]['to'],'phone':_0x5291ae['body']['to'],'ListId':_0x528e66[_0x834e('0x67')]}));}}else{throw new Error('List\x20not\x20found');}})['then'](function(){if(_0x3c70bf){return respondWithRpcPromise('SendMail',_0x834e('0x68'),_0x3c70bf,client9003)[_0x834e('0x15')](function(_0x514aac){return _0x21c417[_0x834e('0x69')]({'read':!![],'messageId':_0x514aac[_0x834e('0x6a')],'sentAt':moment()['format'](_0x834e('0x6b'))});})[_0x834e('0x1e')](function(_0x4b88e7){logger['error']('%s',JSON[_0x834e('0x19')](_0x4b88e7));return _0x21c417;});}return _0x21c417;});}return _0x21c417;}})[_0x834e('0x15')](respondWithResult(_0x5be43d,0xc9))[_0x834e('0x1e')](handleError(_0x5be43d,null));};exports[_0x834e('0x6c')]=function(_0x1d8e7,_0x493239){var _0x264a6f={'agent':{},'channel':'mail'};if(_0x1d8e7[_0x834e('0x4b')]['id']){delete _0x1d8e7[_0x834e('0x4b')]['id'];}_0x1d8e7[_0x834e('0x4b')]['read']=!![];_0x1d8e7[_0x834e('0x4b')][_0x834e('0x6d')]=moment()['format'](_0x834e('0x6b'));_0x1d8e7[_0x834e('0x4b')][_0x834e('0x6e')]=_0x1d8e7['body'][_0x834e('0x6e')]||_0x1d8e7[_0x834e('0x60')]['id'];_0x264a6f[_0x834e('0x6f')]['id']=_0x1d8e7[_0x834e('0x4b')][_0x834e('0x6e')];return db[_0x834e('0x2e')][_0x834e('0x4a')]({'where':{'id':_0x1d8e7[_0x834e('0x47')]['id'],'UserId':null}})[_0x834e('0x15')](handleEntityNotFound(_0x493239,null))[_0x834e('0x15')](saveUpdates(_0x1d8e7['body'],null))['then'](function(_0x4e466e){if(_0x4e466e){_0x264a6f[_0x834e('0x1c')]=_0x4e466e[_0x834e('0x70')]({'plain':!![]});return db[_0x834e('0x71')][_0x834e('0x4a')]({'where':{'id':_0x4e466e[_0x834e('0x72')]}});}return null;})['then'](handleEntityNotFound(_0x493239,null))['then'](function(_0x4520fc){if(_0x4520fc){return _0x4520fc[_0x834e('0x69')]({'UserId':_0x1d8e7[_0x834e('0x4b')][_0x834e('0x6e')],'read1stAt':_[_0x834e('0x59')](_0x4520fc['read1stAt'])?moment()[_0x834e('0x73')](_0x834e('0x6b')):undefined});}return null;})[_0x834e('0x15')](function(_0x4e1735){if(_0x4e1735){_0x264a6f[_0x834e('0x74')]=_0x4e1735[_0x834e('0x70')]({'plain':!![]});interaction_log[_0x834e('0x1d')](_0x834e('0x75'),_0x1d8e7[_0x834e('0x60')]['id'],_0x1d8e7['user']['name'],_0x1d8e7[_0x834e('0x60')][_0x834e('0x76')],_0x264a6f['interaction']['id'],_0x1d8e7[_0x834e('0x4b')]?JSON['stringify'](_0x1d8e7[_0x834e('0x4b')]):_0x834e('0x77'));return respondWithRpcPromise(_0x834e('0x78'),'acceptMessage',_0x264a6f);}return null;})[_0x834e('0x15')](function(_0x49e721){var _0x5b2621='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x49e721[_0x834e('0x1c')][_0x834e('0x79')];return db[_0x834e('0x7a')][_0x834e('0x32')](_0x5b2621,{'type':db[_0x834e('0x7b')][_0x834e('0x7c')][_0x834e('0x7d')],'raw':!![]})[_0x834e('0x15')](function(_0x17e61a){return _0x17e61a;});})['then'](function(_0x2f775a){if(_0x2f775a){_0x264a6f['message'][_0x834e('0x7e')]=_0x2f775a[0x0];if(!_0x1d8e7[_0x834e('0x4b')][_0x834e('0x6e')])return;return db[_0x834e('0x7f')][_0x834e('0x4a')]({'where':{'id':_0x1d8e7[_0x834e('0x4b')]['UserId'],'role':'agent'},'attributes':['id',_0x834e('0x2a'),_0x834e('0x80'),'email',_0x834e('0x81')],'raw':!![]});}return null;})[_0x834e('0x15')](function(_0x1bc5d1){if(!_0x1bc5d1)return null;_0x264a6f[_0x834e('0x1c')][_0x834e('0x6f')]=_0x1bc5d1;return _0x264a6f;})['then'](function(_0x29839d){if(_0x29839d){if(_0x1d8e7[_0x834e('0x4b')]['manual']){_0x264a6f['message']['interface']=util[_0x834e('0x73')](_0x834e('0x82'),_0x1d8e7['user'][_0x834e('0x2a')]);_0x264a6f[_0x834e('0x1c')]['channel']=_0x264a6f[_0x834e('0x83')];_0x264a6f['message']['event']=_0x834e('0x6c');_0x264a6f[_0x834e('0x1c')][_0x834e('0x4b')]=htmlToText[_0x834e('0x84')](_0x264a6f['message'][_0x834e('0x4b')]);return respondWithRpcPromise(_0x834e('0x85'),_0x834e('0x85'),{'event':_0x834e('0x86'),'message':_0x264a6f[_0x834e('0x1c')]},client9002)[_0x834e('0x15')](function(){return _0x264a6f;});}return _0x264a6f;}return null;})[_0x834e('0x15')](respondWithResult(_0x493239,null))[_0x834e('0x1e')](handleError(_0x493239,null));};exports[_0x834e('0x87')]=function(_0x2821fe,_0x2fa64c){var _0x261e3d={'agent':{},'channel':_0x834e('0x88')};if(_0x2821fe[_0x834e('0x4b')]['id']){delete _0x2821fe[_0x834e('0x4b')]['id'];}_0x2821fe[_0x834e('0x4b')][_0x834e('0x6e')]=_0x2821fe[_0x834e('0x4b')][_0x834e('0x6e')]||_0x2821fe[_0x834e('0x60')]['id'];_0x261e3d[_0x834e('0x6f')]['id']=_0x2821fe[_0x834e('0x4b')]['UserId'];return db[_0x834e('0x2e')][_0x834e('0x4a')]({'where':{'id':_0x2821fe[_0x834e('0x47')]['id'],'UserId':null}})[_0x834e('0x15')](handleEntityNotFound(_0x2fa64c,null))[_0x834e('0x15')](function(_0x3bcdcd){if(_0x3bcdcd){_0x261e3d[_0x834e('0x1c')]=_0x3bcdcd[_0x834e('0x70')]({'plain':!![]});return db[_0x834e('0x71')]['find']({'where':{'id':_0x3bcdcd['MailInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x2fa64c,null))[_0x834e('0x15')](function(_0x493e1f){if(_0x493e1f){_0x261e3d[_0x834e('0x74')]=_0x493e1f[_0x834e('0x70')]({'plain':!![]});interaction_log[_0x834e('0x1d')]('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2821fe[_0x834e('0x60')]['id'],_0x2821fe[_0x834e('0x60')][_0x834e('0x2a')],_0x2821fe[_0x834e('0x60')][_0x834e('0x76')],_0x261e3d[_0x834e('0x74')]['id'],_0x2821fe['body']?JSON[_0x834e('0x19')](_0x2821fe[_0x834e('0x4b')]):_0x834e('0x77'));return respondWithRpcPromise(_0x834e('0x89'),_0x834e('0x8a'),_0x261e3d);}return null;})['then'](function(_0x4ebeba){var _0x508b3e='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4ebeba[_0x834e('0x1c')][_0x834e('0x79')];return db['sequelize'][_0x834e('0x32')](_0x508b3e,{'type':db[_0x834e('0x7b')]['QueryTypes'][_0x834e('0x7d')],'raw':!![]})[_0x834e('0x15')](function(_0xbf7693){return _0xbf7693;});})[_0x834e('0x15')](function(_0x1d1075){if(_0x1d1075){_0x261e3d[_0x834e('0x1c')]['contact']=_0x1d1075[0x0];if(!_0x2821fe['body'][_0x834e('0x6e')])return;return db[_0x834e('0x7f')][_0x834e('0x4a')]({'where':{'id':_0x2821fe['body'][_0x834e('0x6e')],'role':_0x834e('0x6f')},'attributes':['id','name',_0x834e('0x80'),_0x834e('0x8b'),_0x834e('0x81')],'raw':!![]});}return null;})[_0x834e('0x15')](function(_0x4cb802){if(!_0x4cb802)return null;_0x261e3d[_0x834e('0x1c')]['agent']=_0x4cb802;return _0x261e3d;})['then'](function(_0xc64958){if(_0xc64958){_0xc64958[_0x834e('0x1c')][_0x834e('0x8c')]=util[_0x834e('0x73')](_0x834e('0x82'),_0x2821fe[_0x834e('0x60')]['name']);_0xc64958['message'][_0x834e('0x83')]=_0x261e3d[_0x834e('0x83')];_0xc64958[_0x834e('0x1c')][_0x834e('0x8d')]=_0x834e('0x87');_0xc64958[_0x834e('0x1c')][_0x834e('0x4b')]=htmlToText['fromString'](_0x261e3d[_0x834e('0x1c')][_0x834e('0x4b')]);respondWithRpcPromise('EventManager',_0x834e('0x85'),{'event':_0x834e('0x8e'),'message':_0xc64958[_0x834e('0x1c')]},client9002);return _0x261e3d;}return null;})[_0x834e('0x15')](respondWithResult(_0x2fa64c,null))[_0x834e('0x1e')](handleError(_0x2fa64c,null));};exports[_0x834e('0x8f')]=function(_0x231f0b,_0x3b44f3){var _0x14e794=moment()[_0x834e('0x90')]()[_0x834e('0x91')]();var _0x152372=path[_0x834e('0x63')](config[_0x834e('0x64')],'server',_0x834e('0x92'),_0x834e('0x93'));var _0x522eab=path[_0x834e('0x63')](config['root'],_0x834e('0x94'),'files',_0x834e('0x62'));var _0x560d10=util[_0x834e('0x73')](_0x834e('0x95'),_0x14e794);return db[_0x834e('0x2e')][_0x834e('0x4a')]({'where':{'id':_0x231f0b['params']['id']},'attributes':['id',_0x834e('0x4b'),_0x834e('0x96'),'to','cc',_0x834e('0x97'),_0x834e('0x98'),_0x834e('0x99')],'include':_0x231f0b[_0x834e('0x32')][_0x834e('0x62')]?[{'model':db[_0x834e('0x9a')],'as':_0x834e('0x9b')}]:undefined})[_0x834e('0x15')](handleEntityNotFound(_0x3b44f3,null))[_0x834e('0x15')](function(_0x1cb4d0){if(_0x1cb4d0){var _0x3a6546=_0x1cb4d0;var _0x246f01={'from':_0x3a6546[_0x834e('0x96')],'to':_0x3a6546['to'],'subject':_0x3a6546[_0x834e('0x98')],'html':_0x3a6546[_0x834e('0x4b')],'headers':{'Date':moment(_0x3a6546['createdAt'])['format'](_0x834e('0x9c'))},'attachments':[]};if(_0x1cb4d0['cc']){_0x246f01[_0x834e('0x9d')]['Cc']=_0x1cb4d0['cc'];}if(_0x1cb4d0[_0x834e('0x97')]){_0x246f01[_0x834e('0x9d')][_0x834e('0x9e')]=_0x1cb4d0[_0x834e('0x97')];}return new BPromise(function(_0x22f90d,_0x40fd40){if(_0x1cb4d0[_0x834e('0x9b')]){for(var _0x58cd3b=0x0;_0x58cd3b<_0x1cb4d0[_0x834e('0x9b')][_0x834e('0x48')];_0x58cd3b++){var _0x513d9e=_0x1cb4d0[_0x834e('0x9b')][_0x58cd3b];var _0x54c129=path[_0x834e('0x63')](_0x522eab,_0x513d9e[_0x834e('0x66')]);if(fs[_0x834e('0x9f')](_0x54c129)){_0x246f01['attachments'][_0x834e('0xa0')]({'name':_0x513d9e[_0x834e('0x2a')],'contentType':_0x513d9e['type'],'data':fs['readFileSync'](_0x54c129)});}}}emlformat[_0x834e('0xa1')](_0x246f01,function(_0x3b7b1a,_0x4e0f4d){if(_0x3b7b1a)return _0x40fd40(_0x3b7b1a);fs[_0x834e('0xa2')](path[_0x834e('0x63')](_0x152372,_0x560d10),_0x4e0f4d);return _0x22f90d(_0x4e0f4d);});});}})[_0x834e('0x15')](function(_0x135219){if(_0x135219){return _0x3b44f3[_0x834e('0x8f')](path['join'](_0x152372,_0x560d10),_0x560d10,function(_0x4e7545){if(!_0x4e7545)fs[_0x834e('0xa3')](path['join'](_0x152372,_0x560d10));});}})['catch'](handleError(_0x3b44f3,null));};
\ No newline at end of file
index f36136f..c26c559 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x468c=['emit','hasOwnProperty','exports','../../mysqldb','MailMessage','save','update'];(function(_0x58a12c,_0x10d0a8){var _0x442ef5=function(_0x5bec99){while(--_0x5bec99){_0x58a12c['push'](_0x58a12c['shift']());}};_0x442ef5(++_0x10d0a8);}(_0x468c,0x11b));var _0xc468=function(_0x53bf6d,_0x4fb349){_0x53bf6d=_0x53bf6d-0x0;var _0x341fc2=_0x468c[_0x53bf6d];return _0x341fc2;};'use strict';var EventEmitter=require('events');var MailMessage=require(_0xc468('0x0'))['db'][_0xc468('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc468('0x2'),'afterUpdate':_0xc468('0x3'),'afterDestroy':'remove'};function emitEvent(_0x705ae1){return function(_0x3c28ad,_0xec28d,_0x508ed0){MailMessageEvents[_0xc468('0x4')](_0x705ae1+':'+_0x3c28ad['id'],_0x3c28ad);MailMessageEvents['emit'](_0x705ae1,_0x3c28ad);_0x508ed0(null);};}for(var e in events){if(events[_0xc468('0x5')](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module[_0xc468('0x6')]=MailMessageEvents;
\ No newline at end of file
+var _0x4dcb=['events','../../mysqldb','MailMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x4dcb,0xbb));var _0xb4dc=function(_0x14c6e5,_0x26ebb4){_0x14c6e5=_0x14c6e5-0x0;var _0x389975=_0x4dcb[_0x14c6e5];return _0x389975;};'use strict';var EventEmitter=require(_0xb4dc('0x0'));var MailMessage=require(_0xb4dc('0x1'))['db'][_0xb4dc('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xb4dc('0x3')](0x0);var events={'afterCreate':_0xb4dc('0x4'),'afterUpdate':_0xb4dc('0x5'),'afterDestroy':_0xb4dc('0x6')};function emitEvent(_0x3574e0){return function(_0x127d21,_0x25a54a,_0x24b86a){MailMessageEvents[_0xb4dc('0x7')](_0x3574e0+':'+_0x127d21['id'],_0x127d21);MailMessageEvents[_0xb4dc('0x7')](_0x3574e0,_0x127d21);_0x24b86a(null);};}for(var e in events){if(events[_0xb4dc('0x8')](e)){var event=events[e];MailMessage[_0xb4dc('0x9')](e,emitEvent(event));}}module[_0xb4dc('0xa')]=MailMessageEvents;
\ No newline at end of file
index 97dce05..4ab75b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc81d=['util','api','bluebird','html-to-text','path','rimraf','../../config/environment','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId','plainBody','subject','FULLTEXT','body','models','get','direction','toLowerCase','out','isNil','MailInteraction','findOne','MailInteractionId','then','createdAt','error','utf8mb4_unicode_ci','lodash'];(function(_0x49228e,_0x24eb7c){var _0x256b2b=function(_0x47728e){while(--_0x47728e){_0x49228e['push'](_0x49228e['shift']());}};_0x256b2b(++_0x24eb7c);}(_0xc81d,0xb9));var _0xdc81=function(_0xa3f947,_0x2226b3){_0xa3f947=_0xa3f947-0x0;var _0x220f12=_0xc81d[_0xa3f947];return _0x220f12;};'use strict';var _=require(_0xdc81('0x0'));var util=require(_0xdc81('0x1'));var logger=require('../../config/logger')(_0xdc81('0x2'));var moment=require('moment');var BPromise=require(_0xdc81('0x3'));var rp=require('request-promise');var htmlToText=require(_0xdc81('0x4'));var fs=require('fs');var path=require(_0xdc81('0x5'));var rimraf=require(_0xdc81('0x6'));var config=require(_0xdc81('0x7'));var attributes=require(_0xdc81('0x8'));module[_0xdc81('0x9')]=function(_0x29e742,_0x4c4c24){return _0x29e742[_0xdc81('0xa')](_0xdc81('0xb'),attributes,{'tableName':_0xdc81('0xc'),'paranoid':![],'indexes':[{'name':_0xdc81('0xd'),'fields':['messageId']},{'name':'fti_mail_messages','fields':[_0xdc81('0xe'),_0xdc81('0xf')],'type':_0xdc81('0x10')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x8dbc6,_0x5a2db1,_0x29ed60){if(_0x8dbc6[_0xdc81('0x11')]){_0x8dbc6[_0xdc81('0xe')]=htmlToText['fromString'](_0x8dbc6['body'],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x29ed60(null,_0x5a2db1);},'afterCreate':function(_0x1ee72e,_0x1dba64,_0x545a39){var _0x593ade=_0x29e742[_0xdc81('0x12')];var _0xb01b86=_0x1ee72e[_0xdc81('0x13')]({'plain':!![]});if(_0xb01b86[_0xdc81('0x14')][_0xdc81('0x15')]()==='in'||_0xb01b86['direction']['toLowerCase']()===_0xdc81('0x16')&&!_0xb01b86['secret']&&!_[_0xdc81('0x17')](_0xb01b86['UserId'])){_0x593ade[_0xdc81('0x18')][_0xdc81('0x19')]({'where':{'id':_0xb01b86[_0xdc81('0x1a')]}})[_0xdc81('0x1b')](function(_0x3c236c){if(_0x3c236c){_0x3c236c['update']({'lastMsgAt':_0xb01b86[_0xdc81('0x1c')],'lastMsgDirection':_0xb01b86['direction']['toLowerCase']()});}})['catch'](function(_0x1dd0e4){console[_0xdc81('0x1d')](_0x1dd0e4);});}_0x545a39();}},'charset':'utf8mb4','collate':_0xdc81('0x1e')});};
\ No newline at end of file
+var _0x7e26=['util','../../config/logger','api','moment','bluebird','path','../../config/environment','./mailMessage.attributes','exports','define','messageId','fti_mail_messages','subject','FULLTEXT','body','plainBody','fromString','get','toLowerCase','direction','out','secret','UserId','findOne','MailInteractionId','then','createdAt','catch','utf8mb4','lodash'];(function(_0x449e37,_0xc0a199){var _0x1fbe57=function(_0x2e9a1d){while(--_0x2e9a1d){_0x449e37['push'](_0x449e37['shift']());}};_0x1fbe57(++_0xc0a199);}(_0x7e26,0x185));var _0x67e2=function(_0x37288c,_0x39ebcd){_0x37288c=_0x37288c-0x0;var _0x2d9955=_0x7e26[_0x37288c];return _0x2d9955;};'use strict';var _=require(_0x67e2('0x0'));var util=require(_0x67e2('0x1'));var logger=require(_0x67e2('0x2'))(_0x67e2('0x3'));var moment=require(_0x67e2('0x4'));var BPromise=require(_0x67e2('0x5'));var rp=require('request-promise');var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0x67e2('0x6'));var rimraf=require('rimraf');var config=require(_0x67e2('0x7'));var attributes=require(_0x67e2('0x8'));module[_0x67e2('0x9')]=function(_0x505cd3,_0x414813){return _0x505cd3[_0x67e2('0xa')]('MailMessage',attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':'messageId','fields':[_0x67e2('0xb')]},{'name':_0x67e2('0xc'),'fields':['plainBody',_0x67e2('0xd')],'type':_0x67e2('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3a6161,_0x1fa7be,_0x4d9a6e){if(_0x3a6161[_0x67e2('0xf')]){_0x3a6161[_0x67e2('0x10')]=htmlToText[_0x67e2('0x11')](_0x3a6161[_0x67e2('0xf')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x4d9a6e(null,_0x1fa7be);},'afterCreate':function(_0x4c8708,_0x4c744b,_0x18ff66){var _0x30991b=_0x505cd3['models'];var _0x4c937f=_0x4c8708[_0x67e2('0x12')]({'plain':!![]});if(_0x4c937f['direction'][_0x67e2('0x13')]()==='in'||_0x4c937f[_0x67e2('0x14')][_0x67e2('0x13')]()===_0x67e2('0x15')&&!_0x4c937f[_0x67e2('0x16')]&&!_['isNil'](_0x4c937f[_0x67e2('0x17')])){_0x30991b['MailInteraction'][_0x67e2('0x18')]({'where':{'id':_0x4c937f[_0x67e2('0x19')]}})[_0x67e2('0x1a')](function(_0x43da46){if(_0x43da46){_0x43da46['update']({'lastMsgAt':_0x4c937f[_0x67e2('0x1b')],'lastMsgDirection':_0x4c937f[_0x67e2('0x14')][_0x67e2('0x13')]()});}})[_0x67e2('0x1c')](function(_0x285ad6){console['error'](_0x285ad6);});}_0x18ff66();}},'charset':_0x67e2('0x1d'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 65d6394..6c7b895 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb78e=['http','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateMailMessage','MailMessage','create','body','options','raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x828951,_0x2bc3f0){var _0x3a746b=function(_0x51374f){while(--_0x51374f){_0x828951['push'](_0x828951['shift']());}};_0x3a746b(++_0x2bc3f0);}(_0xb78e,0x1c9));var _0xeb78=function(_0x1b87a7,_0x4c6dba){_0x1b87a7=_0x1b87a7-0x0;var _0x4003ba=_0xb78e[_0x1b87a7];return _0x4003ba;};'use strict';var _=require(_0xeb78('0x0'));var util=require(_0xeb78('0x1'));var moment=require('moment');var BPromise=require(_0xeb78('0x2'));var rs=require(_0xeb78('0x3'));var fs=require('fs');var Redis=require(_0xeb78('0x4'));var db=require(_0xeb78('0x5'))['db'];var utils=require(_0xeb78('0x6'));var logger=require(_0xeb78('0x7'))(_0xeb78('0x8'));var config=require(_0xeb78('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xeb78('0xa')][_0xeb78('0xb')]({'port':0x232a});config[_0xeb78('0xc')]=_[_0xeb78('0xd')](config[_0xeb78('0xc')],{'host':_0xeb78('0xe'),'port':0x18eb});var socket=require(_0xeb78('0xf'))(new Redis(config['redis']));require(_0xeb78('0x10'))[_0xeb78('0x11')](socket);function respondWithRpcPromise(_0xa1ca82,_0x46fbad,_0x125e97){return new BPromise(function(_0x402680,_0x15137b){return client[_0xeb78('0x12')](_0xa1ca82,_0x125e97)[_0xeb78('0x13')](function(_0x59d8d8){logger[_0xeb78('0x14')](_0xeb78('0x15'),_0x46fbad,_0xeb78('0x16'));logger[_0xeb78('0x17')](_0xeb78('0x18'),_0x46fbad,_0xeb78('0x16'),JSON[_0xeb78('0x19')](_0x59d8d8));if(_0x59d8d8[_0xeb78('0x1a')]){if(_0x59d8d8[_0xeb78('0x1a')][_0xeb78('0x1b')]===0x1f4){logger['error'](_0xeb78('0x15'),_0x46fbad,_0x59d8d8[_0xeb78('0x1a')]['message']);return _0x15137b(_0x59d8d8['error']['message']);}logger[_0xeb78('0x1a')]('MailMessage,\x20%s,\x20%s',_0x46fbad,_0x59d8d8[_0xeb78('0x1a')][_0xeb78('0x1c')]);return _0x402680(_0x59d8d8['error'][_0xeb78('0x1c')]);}else{logger['info'](_0xeb78('0x15'),_0x46fbad,_0xeb78('0x16'));_0x402680(_0x59d8d8['result'][_0xeb78('0x1c')]);}})[_0xeb78('0x1d')](function(_0x1cb338){logger['error'](_0xeb78('0x15'),_0x46fbad,_0x1cb338);_0x15137b(_0x1cb338);});});}exports[_0xeb78('0x1e')]=function(_0x4ab933){var _0x48b106=this;return new Promise(function(_0x455e30,_0x106c5d){return db[_0xeb78('0x1f')][_0xeb78('0x20')](_0x4ab933[_0xeb78('0x21')],{'raw':_0x4ab933[_0xeb78('0x22')]?_0x4ab933[_0xeb78('0x22')][_0xeb78('0x23')]===undefined?!![]:![]:!![]})[_0xeb78('0x13')](function(_0x52b8c1){logger['info']('CreateMailMessage',_0x4ab933);logger['debug'](_0xeb78('0x1e'),_0x4ab933,JSON['stringify'](_0x52b8c1));_0x455e30(_0x52b8c1);})[_0xeb78('0x1d')](function(_0x1fbf2f){logger['error'](_0xeb78('0x1e'),_0x1fbf2f['message'],_0x4ab933);_0x106c5d(_0x48b106[_0xeb78('0x1a')](0x1f4,_0x1fbf2f[_0xeb78('0x1c')]));});});};
\ No newline at end of file
+var _0x8f59=['redis','localhost','socket.io-emitter','register','info','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','MailMessage,\x20%s,\x20%s','result','catch','create','body','options','raw','then','CreateMailMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x397d16,_0x204327){var _0x3eef4d=function(_0x40e24f){while(--_0x40e24f){_0x397d16['push'](_0x397d16['shift']());}};_0x3eef4d(++_0x204327);}(_0x8f59,0x11d));var _0x98f5=function(_0x47e93d,_0x26bbdd){_0x47e93d=_0x47e93d-0x0;var _0xe86c46=_0x8f59[_0x47e93d];return _0xe86c46;};'use strict';var _=require(_0x98f5('0x0'));var util=require(_0x98f5('0x1'));var moment=require(_0x98f5('0x2'));var BPromise=require(_0x98f5('0x3'));var rs=require(_0x98f5('0x4'));var fs=require('fs');var Redis=require(_0x98f5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x98f5('0x6'));var logger=require(_0x98f5('0x7'))(_0x98f5('0x8'));var config=require(_0x98f5('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x98f5('0xa')][_0x98f5('0xb')]({'port':0x232a});config[_0x98f5('0xc')]=_['defaults'](config['redis'],{'host':_0x98f5('0xd'),'port':0x18eb});var socket=require(_0x98f5('0xe'))(new Redis(config[_0x98f5('0xc')]));require('./mailMessage.socket')[_0x98f5('0xf')](socket);function respondWithRpcPromise(_0x31b669,_0x227cf3,_0x39e85d){return new BPromise(function(_0x4c4abc,_0x26a0fc){return client['request'](_0x31b669,_0x39e85d)['then'](function(_0x3cf4b2){logger[_0x98f5('0x10')]('MailMessage,\x20%s,\x20%s',_0x227cf3,_0x98f5('0x11'));logger[_0x98f5('0x12')](_0x98f5('0x13'),_0x227cf3,_0x98f5('0x11'),JSON[_0x98f5('0x14')](_0x3cf4b2));if(_0x3cf4b2[_0x98f5('0x15')]){if(_0x3cf4b2['error'][_0x98f5('0x16')]===0x1f4){logger[_0x98f5('0x15')]('MailMessage,\x20%s,\x20%s',_0x227cf3,_0x3cf4b2[_0x98f5('0x15')][_0x98f5('0x17')]);return _0x26a0fc(_0x3cf4b2[_0x98f5('0x15')]['message']);}logger[_0x98f5('0x15')](_0x98f5('0x18'),_0x227cf3,_0x3cf4b2[_0x98f5('0x15')]['message']);return _0x4c4abc(_0x3cf4b2[_0x98f5('0x15')][_0x98f5('0x17')]);}else{logger['info'](_0x98f5('0x18'),_0x227cf3,'request\x20sent');_0x4c4abc(_0x3cf4b2[_0x98f5('0x19')][_0x98f5('0x17')]);}})[_0x98f5('0x1a')](function(_0x11b6d4){logger[_0x98f5('0x15')](_0x98f5('0x18'),_0x227cf3,_0x11b6d4);_0x26a0fc(_0x11b6d4);});});}exports['CreateMailMessage']=function(_0xf88f34){var _0x5500a2=this;return new Promise(function(_0xd1209d,_0x191f23){return db['MailMessage'][_0x98f5('0x1b')](_0xf88f34[_0x98f5('0x1c')],{'raw':_0xf88f34[_0x98f5('0x1d')]?_0xf88f34[_0x98f5('0x1d')][_0x98f5('0x1e')]===undefined?!![]:![]:!![]})[_0x98f5('0x1f')](function(_0x38b46d){logger['info'](_0x98f5('0x20'),_0xf88f34);logger['debug'](_0x98f5('0x20'),_0xf88f34,JSON['stringify'](_0x38b46d));_0xd1209d(_0x38b46d);})[_0x98f5('0x1a')](function(_0x40c69b){logger[_0x98f5('0x15')](_0x98f5('0x20'),_0x40c69b[_0x98f5('0x17')],_0xf88f34);_0x191f23(_0x5500a2[_0x98f5('0x15')](0x1f4,_0x40c69b[_0x98f5('0x17')]));});});};
\ No newline at end of file
index 4fb1fba..d037f1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15b7=['removeListener','length','remove'];(function(_0x40adf8,_0x138428){var _0xcc4dd6=function(_0x5ab214){while(--_0x5ab214){_0x40adf8['push'](_0x40adf8['shift']());}};_0xcc4dd6(++_0x138428);}(_0x15b7,0x13a));var _0x715b=function(_0x334ec5,_0x4f4451){_0x334ec5=_0x334ec5-0x0;var _0x42daf2=_0x15b7[_0x334ec5];return _0x42daf2;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=['save',_0x715b('0x0'),'update'];function createListener(_0x37d082,_0x40b6e7){return function(_0x1184ae){_0x40b6e7['emit'](_0x37d082,_0x1184ae);};}function removeListener(_0x1d61ab,_0x1b0133){return function(){MailMessageEvents[_0x715b('0x1')](_0x1d61ab,_0x1b0133);};}exports['register']=function(_0x4fefd8){for(var _0xe44159=0x0,_0x1d29e8=events[_0x715b('0x2')];_0xe44159<_0x1d29e8;_0xe44159++){var _0x6e2d6b=events[_0xe44159];var _0x59fc8d=createListener('mailMessage:'+_0x6e2d6b,_0x4fefd8);MailMessageEvents['on'](_0x6e2d6b,_0x59fc8d);}};
\ No newline at end of file
+var _0x4cbc=['save','update','emit','register','mailMessage:'];(function(_0x3fe38a,_0x112e1d){var _0x4cbd58=function(_0x3c1ac8){while(--_0x3c1ac8){_0x3fe38a['push'](_0x3fe38a['shift']());}};_0x4cbd58(++_0x112e1d);}(_0x4cbc,0x127));var _0xc4cb=function(_0x5542bf,_0x3760ac){_0x5542bf=_0x5542bf-0x0;var _0x5270b8=_0x4cbc[_0x5542bf];return _0x5270b8;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0xc4cb('0x0'),'remove',_0xc4cb('0x1')];function createListener(_0x248c4f,_0x19e177){return function(_0x567d54){_0x19e177[_0xc4cb('0x2')](_0x248c4f,_0x567d54);};}function removeListener(_0x2179f7,_0x3c33b1){return function(){MailMessageEvents['removeListener'](_0x2179f7,_0x3c33b1);};}exports[_0xc4cb('0x3')]=function(_0x5cf49e){for(var _0x25abb7=0x0,_0x4217f1=events['length'];_0x25abb7<_0x4217f1;_0x25abb7++){var _0x537db1=events[_0x25abb7];var _0x102c14=createListener(_0xc4cb('0x4')+_0x537db1,_0x5cf49e);MailMessageEvents['on'](_0x537db1,_0x102c14);}};
\ No newline at end of file
index 197fde5..fad097c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf285=['fs-extra','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','/describe','describe','/:id','/:id/members','getMembers','getTeams','getAgents','post','create','/:id/teams','addTeams','/:id/users','put','removeTeams','delete','removeAgents','util','path','express','Router'];(function(_0x49af03,_0x1b55c3){var _0x3559de=function(_0x3adaef){while(--_0x3adaef){_0x49af03['push'](_0x49af03['shift']());}};_0x3559de(++_0x1b55c3);}(_0xf285,0xe6));var _0x5f28=function(_0x33a846,_0x1178bf){_0x33a846=_0x33a846-0x0;var _0x46d8ef=_0xf285[_0x33a846];return _0x46d8ef;};'use strict';var multer=require('multer');var util=require(_0x5f28('0x0'));var path=require(_0x5f28('0x1'));var timeout=require('connect-timeout');var express=require(_0x5f28('0x2'));var router=express[_0x5f28('0x3')]();var fs_extra=require(_0x5f28('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5f28('0x5'));var config=require(_0x5f28('0x6'));var controller=require(_0x5f28('0x7'));router[_0x5f28('0x8')]('/',auth[_0x5f28('0x9')](),controller['index']);router[_0x5f28('0x8')](_0x5f28('0xa'),auth['isAuthenticated'](),controller[_0x5f28('0xb')]);router[_0x5f28('0x8')](_0x5f28('0xc'),auth[_0x5f28('0x9')](),controller['show']);router['get'](_0x5f28('0xd'),auth[_0x5f28('0x9')](),controller[_0x5f28('0xe')]);router[_0x5f28('0x8')]('/:id/teams',auth['isAuthenticated'](),controller[_0x5f28('0xf')]);router[_0x5f28('0x8')]('/:id/users',auth['isAuthenticated'](),controller[_0x5f28('0x10')]);router[_0x5f28('0x11')]('/',auth['isAuthenticated'](),controller[_0x5f28('0x12')]);router[_0x5f28('0x11')](_0x5f28('0x13'),auth[_0x5f28('0x9')](),controller[_0x5f28('0x14')]);router[_0x5f28('0x11')](_0x5f28('0x15'),auth[_0x5f28('0x9')](),controller['addAgents']);router[_0x5f28('0x16')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x5f28('0x9')](),controller['destroy']);router['delete']('/:id/teams',auth[_0x5f28('0x9')](),controller[_0x5f28('0x17')]);router[_0x5f28('0x18')](_0x5f28('0x15'),auth['isAuthenticated'](),controller[_0x5f28('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0xbc33=['post','create','addAgents','put','/:id','update','delete','destroy','removeTeams','removeAgents','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','/describe','isAuthenticated','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents'];(function(_0xe106e,_0x15a706){var _0x4f62a4=function(_0x4c6f12){while(--_0x4c6f12){_0xe106e['push'](_0xe106e['shift']());}};_0x4f62a4(++_0x15a706);}(_0xbc33,0xb2));var _0x3bc3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbc33[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3bc3('0x0'));var timeout=require(_0x3bc3('0x1'));var express=require(_0x3bc3('0x2'));var router=express[_0x3bc3('0x3')]();var fs_extra=require(_0x3bc3('0x4'));var auth=require(_0x3bc3('0x5'));var interaction=require(_0x3bc3('0x6'));var config=require(_0x3bc3('0x7'));var controller=require(_0x3bc3('0x8'));router[_0x3bc3('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x3bc3('0x9')](_0x3bc3('0xa'),auth[_0x3bc3('0xb')](),controller['describe']);router[_0x3bc3('0x9')]('/:id',auth[_0x3bc3('0xb')](),controller[_0x3bc3('0xc')]);router[_0x3bc3('0x9')](_0x3bc3('0xd'),auth[_0x3bc3('0xb')](),controller[_0x3bc3('0xe')]);router[_0x3bc3('0x9')](_0x3bc3('0xf'),auth['isAuthenticated'](),controller['getTeams']);router[_0x3bc3('0x9')](_0x3bc3('0x10'),auth[_0x3bc3('0xb')](),controller[_0x3bc3('0x11')]);router[_0x3bc3('0x12')]('/',auth[_0x3bc3('0xb')](),controller[_0x3bc3('0x13')]);router[_0x3bc3('0x12')](_0x3bc3('0xf'),auth[_0x3bc3('0xb')](),controller['addTeams']);router[_0x3bc3('0x12')](_0x3bc3('0x10'),auth['isAuthenticated'](),controller[_0x3bc3('0x14')]);router[_0x3bc3('0x15')](_0x3bc3('0x16'),auth[_0x3bc3('0xb')](),controller[_0x3bc3('0x17')]);router[_0x3bc3('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x3bc3('0x19')]);router[_0x3bc3('0x18')](_0x3bc3('0xf'),auth[_0x3bc3('0xb')](),controller[_0x3bc3('0x1a')]);router['delete'](_0x3bc3('0x10'),auth['isAuthenticated'](),controller[_0x3bc3('0x1b')]);module['exports']=router;
\ No newline at end of file
index b02b256..d0961f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd64c=['roundrobin','sequelize','exports','STRING','rrmemory','beepall'];(function(_0x8295f6,_0x403d59){var _0x425203=function(_0x41a6bd){while(--_0x41a6bd){_0x8295f6['push'](_0x8295f6['shift']());}};_0x425203(++_0x403d59);}(_0xd64c,0x18d));var _0xcd64=function(_0x41e6da,_0x3df2fc){_0x41e6da=_0x41e6da-0x0;var _0x22f319=_0xd64c[_0x41e6da];return _0x22f319;};'use strict';var Sequelize=require(_0xcd64('0x0'));module[_0xcd64('0x1')]={'name':{'type':Sequelize[_0xcd64('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xcd64('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xcd64('0x3'),_0xcd64('0x4'),_0xcd64('0x5'))}};
\ No newline at end of file
+var _0x29c3=['sequelize','exports','name','STRING','INTEGER','ENUM','rrmemory','roundrobin'];(function(_0xe4cddc,_0x11d252){var _0x466358=function(_0x27ca7c){while(--_0x27ca7c){_0xe4cddc['push'](_0xe4cddc['shift']());}};_0x466358(++_0x11d252);}(_0x29c3,0x1f0));var _0x329c=function(_0x5d47ca,_0x5838f3){_0x5d47ca=_0x5d47ca-0x0;var _0x206021=_0x29c3[_0x5d47ca];return _0x206021;};'use strict';var Sequelize=require(_0x329c('0x0'));module[_0x329c('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x329c('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x329c('0x3')]},'timeout':{'type':Sequelize[_0x329c('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x329c('0x5')](_0x329c('0x6'),'beepall',_0x329c('0x7'))}};
\ No newline at end of file
index 7fa6385..1c950e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1d1=['api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','sendStatus','end','status','json','limit','undefined','count','offset','Content-Range','apply','reject','save','then','destroy','MailQueues','UserProfileResource','name','send','index','map','MailQueue','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','keys','include','find','create','get','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','UserMailQueue','MailQueueId','User','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','Agents','voicePause','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','field','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','value','isEmpty','removeAgents','userMailQueue:remove','addAgents','spread','isArray','findOne','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x52e19e,_0x48eb74){var _0x1b60bd=function(_0x236e07){while(--_0x236e07){_0x52e19e['push'](_0x52e19e['shift']());}};_0x1b60bd(++_0x48eb74);}(_0xc1d1,0x1a5));var _0x1c1d=function(_0x650ecb,_0x13cb10){_0x650ecb=_0x650ecb-0x0;var _0xe1663=_0xc1d1[_0x650ecb];return _0xe1663;};'use strict';var emlformat=require(_0x1c1d('0x0'));var rimraf=require(_0x1c1d('0x1'));var zipdir=require(_0x1c1d('0x2'));var jsonpatch=require(_0x1c1d('0x3'));var rp=require(_0x1c1d('0x4'));var moment=require(_0x1c1d('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1c1d('0x6'));var path=require(_0x1c1d('0x7'));var sox=require(_0x1c1d('0x8'));var csv=require(_0x1c1d('0x9'));var ejs=require(_0x1c1d('0xa'));var fs=require('fs');var fs_extra=require(_0x1c1d('0xb'));var _=require(_0x1c1d('0xc'));var squel=require(_0x1c1d('0xd'));var crypto=require(_0x1c1d('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x1c1d('0xf'));var toCsv=require('to-csv');var querystring=require(_0x1c1d('0x10'));var Papa=require(_0x1c1d('0x11'));var Redis=require('ioredis');var authService=require(_0x1c1d('0x12'));var qs=require(_0x1c1d('0x13'));var as=require(_0x1c1d('0x14'));var hardwareService=require(_0x1c1d('0x15'));var logger=require(_0x1c1d('0x16'))(_0x1c1d('0x17'));var utils=require(_0x1c1d('0x18'));var config=require(_0x1c1d('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x1c1d('0x1a'))['db'];config[_0x1c1d('0x1b')]=_[_0x1c1d('0x1c')](config['redis'],{'host':_0x1c1d('0x1d'),'port':0x18eb});var socket=require(_0x1c1d('0x1e'))(new Redis(config['redis']));require(_0x1c1d('0x1f'))[_0x1c1d('0x20')](socket);function respondWithStatusCode(_0x5b6bf7,_0x3d4c4b){_0x3d4c4b=_0x3d4c4b||0xcc;return function(_0x5f224c){if(_0x5f224c){return _0x5b6bf7[_0x1c1d('0x21')](_0x3d4c4b);}return _0x5b6bf7['status'](_0x3d4c4b)[_0x1c1d('0x22')]();};}function respondWithResult(_0x55445d,_0x4e7329){_0x4e7329=_0x4e7329||0xc8;return function(_0x3757e0){if(_0x3757e0){return _0x55445d[_0x1c1d('0x23')](_0x4e7329)[_0x1c1d('0x24')](_0x3757e0);}};}function respondWithFilteredResult(_0x5c44c1,_0x1d721a){return function(_0xcf4462){if(_0xcf4462){var _0x544d61=typeof _0x1d721a['offset']==='undefined'&&typeof _0x1d721a[_0x1c1d('0x25')]===_0x1c1d('0x26');var _0x45b27a=_0xcf4462[_0x1c1d('0x27')];var _0x4ebca6=_0x544d61?0x0:_0x1d721a[_0x1c1d('0x28')];var _0x249e51=_0x544d61?_0xcf4462[_0x1c1d('0x27')]:_0x1d721a[_0x1c1d('0x28')]+_0x1d721a['limit'];var _0x54e349;if(_0x249e51>=_0x45b27a){_0x249e51=_0x45b27a;_0x54e349=0xc8;}else{_0x54e349=0xce;}_0x5c44c1['status'](_0x54e349);return _0x5c44c1['set'](_0x1c1d('0x29'),_0x4ebca6+'-'+_0x249e51+'/'+_0x45b27a)['json'](_0xcf4462);}return null;};}function patchUpdates(_0x8c61e1){return function(_0x8bf745){try{jsonpatch[_0x1c1d('0x2a')](_0x8bf745,_0x8c61e1,!![]);}catch(_0x505afa){return BPromise[_0x1c1d('0x2b')](_0x505afa);}return _0x8bf745[_0x1c1d('0x2c')]();};}function saveUpdates(_0x36b5b0,_0x1b198c){return function(_0x372cbd){if(_0x372cbd){return _0x372cbd['update'](_0x36b5b0)[_0x1c1d('0x2d')](function(_0x35d7b8){return _0x35d7b8;});}return null;};}function removeEntity(_0x1ffa10,_0x252232){return function(_0x5f45e8){if(_0x5f45e8){return _0x5f45e8[_0x1c1d('0x2e')]()[_0x1c1d('0x2d')](function(){var _0x5320af=_0x5f45e8['get']({'plain':!![]});var _0xd2ba7=_0x1c1d('0x2f');return db[_0x1c1d('0x30')][_0x1c1d('0x2e')]({'where':{'type':_0xd2ba7,'resourceId':_0x5320af['id']}})[_0x1c1d('0x2d')](function(){return _0x5f45e8;});})[_0x1c1d('0x2d')](function(){_0x1ffa10[_0x1c1d('0x23')](0xcc)[_0x1c1d('0x22')]();});}};}function handleEntityNotFound(_0x5b68dc,_0x4e64b4){return function(_0x5a4cd0){if(!_0x5a4cd0){_0x5b68dc[_0x1c1d('0x21')](0x194);}return _0x5a4cd0;};}function handleError(_0x9aa7db,_0x25763e){_0x25763e=_0x25763e||0x1f4;return function(_0x11b686){logger['error'](_0x11b686['stack']);if(_0x11b686[_0x1c1d('0x31')]){delete _0x11b686[_0x1c1d('0x31')];}_0x9aa7db[_0x1c1d('0x23')](_0x25763e)[_0x1c1d('0x32')](_0x11b686);};}exports[_0x1c1d('0x33')]=function(_0x587dfc,_0x1758f4){var _0x259bc0={},_0x29c6ed={},_0x881217={'count':0x0,'rows':[]};var _0x5d69bb=_[_0x1c1d('0x34')](db[_0x1c1d('0x35')][_0x1c1d('0x36')],function(_0x64d88e){return{'name':_0x64d88e[_0x1c1d('0x37')],'type':_0x64d88e[_0x1c1d('0x38')][_0x1c1d('0x39')]};});_0x29c6ed['model']=_[_0x1c1d('0x34')](_0x5d69bb,'name');_0x29c6ed[_0x1c1d('0x3a')]=_['keys'](_0x587dfc[_0x1c1d('0x3a')]);_0x29c6ed[_0x1c1d('0x3b')]=_[_0x1c1d('0x3c')](_0x29c6ed[_0x1c1d('0x3d')],_0x29c6ed['query']);_0x259bc0[_0x1c1d('0x3e')]=_['intersection'](_0x29c6ed[_0x1c1d('0x3d')],qs[_0x1c1d('0x3f')](_0x587dfc[_0x1c1d('0x3a')][_0x1c1d('0x3f')]));_0x259bc0['attributes']=_0x259bc0[_0x1c1d('0x3e')][_0x1c1d('0x40')]?_0x259bc0[_0x1c1d('0x3e')]:_0x29c6ed['model'];if(!_0x587dfc[_0x1c1d('0x3a')][_0x1c1d('0x41')](_0x1c1d('0x42'))){_0x259bc0[_0x1c1d('0x25')]=qs['limit'](_0x587dfc[_0x1c1d('0x3a')]['limit']);_0x259bc0[_0x1c1d('0x28')]=qs[_0x1c1d('0x28')](_0x587dfc[_0x1c1d('0x3a')]['offset']);}_0x259bc0[_0x1c1d('0x43')]=qs[_0x1c1d('0x44')](_0x587dfc['query'][_0x1c1d('0x44')]);_0x259bc0[_0x1c1d('0x45')]=qs[_0x1c1d('0x3b')](_[_0x1c1d('0x46')](_0x587dfc[_0x1c1d('0x3a')],_0x29c6ed[_0x1c1d('0x3b')]),_0x5d69bb);if(_0x587dfc[_0x1c1d('0x3a')][_0x1c1d('0x47')]){_0x259bc0[_0x1c1d('0x45')]=_[_0x1c1d('0x48')](_0x259bc0['where'],{'$or':_['map'](_0x5d69bb,function(_0x270515){if(_0x270515[_0x1c1d('0x38')]!==_0x1c1d('0x49')){var _0x393c34={};_0x393c34[_0x270515['name']]={'$like':'%'+_0x587dfc['query'][_0x1c1d('0x47')]+'%'};return _0x393c34;}})});}_0x259bc0=_['merge']({},_0x259bc0,_0x587dfc[_0x1c1d('0x4a')]);var _0x2b1504={'where':_0x259bc0[_0x1c1d('0x45')]};return db[_0x1c1d('0x35')][_0x1c1d('0x27')](_0x2b1504)[_0x1c1d('0x2d')](function(_0x22740f){_0x881217[_0x1c1d('0x27')]=_0x22740f;if(_0x587dfc[_0x1c1d('0x3a')][_0x1c1d('0x4b')]){_0x259bc0['include']=[{'all':!![]}];}return db['MailQueue'][_0x1c1d('0x4c')](_0x259bc0);})[_0x1c1d('0x2d')](function(_0x4c2f40){_0x881217[_0x1c1d('0x4d')]=_0x4c2f40;return _0x881217;})[_0x1c1d('0x2d')](respondWithFilteredResult(_0x1758f4,_0x259bc0))[_0x1c1d('0x4e')](handleError(_0x1758f4,null));};exports['show']=function(_0x54c5b9,_0xbb3860){var _0x472ca7={'raw':!![],'where':{'id':_0x54c5b9[_0x1c1d('0x4f')]['id']}},_0x49b3cc={};_0x49b3cc[_0x1c1d('0x3d')]=_[_0x1c1d('0x50')](db[_0x1c1d('0x35')][_0x1c1d('0x36')]);_0x49b3cc[_0x1c1d('0x3a')]=_[_0x1c1d('0x50')](_0x54c5b9[_0x1c1d('0x3a')]);_0x49b3cc['filters']=_[_0x1c1d('0x3c')](_0x49b3cc['model'],_0x49b3cc[_0x1c1d('0x3a')]);_0x472ca7[_0x1c1d('0x3e')]=_['intersection'](_0x49b3cc['model'],qs[_0x1c1d('0x3f')](_0x54c5b9[_0x1c1d('0x3a')][_0x1c1d('0x3f')]));_0x472ca7[_0x1c1d('0x3e')]=_0x472ca7[_0x1c1d('0x3e')][_0x1c1d('0x40')]?_0x472ca7[_0x1c1d('0x3e')]:_0x49b3cc[_0x1c1d('0x3d')];if(_0x54c5b9[_0x1c1d('0x3a')][_0x1c1d('0x4b')]){_0x472ca7[_0x1c1d('0x51')]=[{'all':!![]}];}_0x472ca7=_[_0x1c1d('0x48')]({},_0x472ca7,_0x54c5b9[_0x1c1d('0x4a')]);return db[_0x1c1d('0x35')][_0x1c1d('0x52')](_0x472ca7)['then'](handleEntityNotFound(_0xbb3860,null))[_0x1c1d('0x2d')](respondWithResult(_0xbb3860,null))[_0x1c1d('0x4e')](handleError(_0xbb3860,null));};exports[_0x1c1d('0x53')]=function(_0x1dff0b,_0x1acc08){return db[_0x1c1d('0x35')][_0x1c1d('0x53')](_0x1dff0b['body'],{})['then'](function(_0x15329c){var _0x1d9e93=_0x1dff0b['user'][_0x1c1d('0x54')]({'plain':!![]});if(!_0x1d9e93)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1d9e93[_0x1c1d('0x55')]==='user'){var _0xaf7c86=_0x15329c[_0x1c1d('0x54')]({'plain':!![]});var _0x284c10=_0x1c1d('0x2f');return db[_0x1c1d('0x56')]['find']({'where':{'name':_0x284c10,'userProfileId':_0x1d9e93[_0x1c1d('0x57')]},'raw':!![]})[_0x1c1d('0x2d')](function(_0x3981e7){if(_0x3981e7&&_0x3981e7[_0x1c1d('0x58')]===0x0){return db[_0x1c1d('0x30')]['create']({'name':_0xaf7c86[_0x1c1d('0x31')],'resourceId':_0xaf7c86['id'],'type':_0x3981e7['name'],'sectionId':_0x3981e7['id']},{})['then'](function(){return _0x15329c;});}else{return _0x15329c;}})[_0x1c1d('0x4e')](function(_0x314e95){logger[_0x1c1d('0x59')](_0x1c1d('0x5a'),_0x314e95);throw _0x314e95;});}return _0x15329c;})[_0x1c1d('0x2d')](respondWithResult(_0x1acc08,0xc9))[_0x1c1d('0x4e')](handleError(_0x1acc08,null));};exports[_0x1c1d('0x5b')]=function(_0xfa28f2,_0x51715b){if(_0xfa28f2[_0x1c1d('0x5c')]['id']){delete _0xfa28f2[_0x1c1d('0x5c')]['id'];}return db['MailQueue'][_0x1c1d('0x52')]({'where':{'id':_0xfa28f2[_0x1c1d('0x4f')]['id']}})[_0x1c1d('0x2d')](handleEntityNotFound(_0x51715b,null))['then'](saveUpdates(_0xfa28f2['body'],null))[_0x1c1d('0x2d')](respondWithResult(_0x51715b,null))[_0x1c1d('0x4e')](handleError(_0x51715b,null));};exports[_0x1c1d('0x2e')]=function(_0x422928,_0x4fcc36){return db[_0x1c1d('0x35')][_0x1c1d('0x52')]({'where':{'id':_0x422928[_0x1c1d('0x4f')]['id']}})[_0x1c1d('0x2d')](handleEntityNotFound(_0x4fcc36,null))['then'](removeEntity(_0x4fcc36,null))[_0x1c1d('0x4e')](handleError(_0x4fcc36,null));};exports[_0x1c1d('0x5d')]=function(_0x1b9492,_0x4c1979){return db[_0x1c1d('0x35')][_0x1c1d('0x5d')]()[_0x1c1d('0x2d')](respondWithResult(_0x4c1979,null))[_0x1c1d('0x4e')](handleError(_0x4c1979,null));};exports['getMembers']=function(_0x106a16,_0x15cc35,_0x3bb9df){var _0x1c6e0b={'raw':!![],'where':{}},_0x3bd19e={},_0x4f4bc1;return db['MailQueue']['findOne']({'where':{'id':_0x106a16[_0x1c1d('0x4f')]['id']}})[_0x1c1d('0x2d')](handleEntityNotFound(_0x15cc35,null))['then'](function(_0x915639){if(_0x915639){_0x4f4bc1=_0x915639[_0x1c1d('0x54')]({'plain':!![]});_0x3bd19e[_0x1c1d('0x3d')]=_[_0x1c1d('0x50')](db[_0x1c1d('0x5e')][_0x1c1d('0x36')]);_0x3bd19e[_0x1c1d('0x3a')]=_[_0x1c1d('0x50')](_0x106a16['query']);_0x3bd19e['filters']=_['intersection'](_0x3bd19e[_0x1c1d('0x3d')],_0x3bd19e[_0x1c1d('0x3a')]);_0x1c6e0b['attributes']=_['intersection'](_0x3bd19e['model'],qs[_0x1c1d('0x3f')](_0x106a16[_0x1c1d('0x3a')][_0x1c1d('0x3f')]));_0x1c6e0b['attributes']=_0x1c6e0b[_0x1c1d('0x3e')][_0x1c1d('0x40')]?_0x1c6e0b[_0x1c1d('0x3e')]:_0x3bd19e[_0x1c1d('0x3d')];if(!_0x106a16[_0x1c1d('0x3a')][_0x1c1d('0x41')](_0x1c1d('0x42'))){_0x1c6e0b[_0x1c1d('0x25')]=qs[_0x1c1d('0x25')](_0x106a16[_0x1c1d('0x3a')]['limit']);_0x1c6e0b[_0x1c1d('0x28')]=qs['offset'](_0x106a16[_0x1c1d('0x3a')]['offset']);}_0x1c6e0b[_0x1c1d('0x43')]=qs['sort'](_0x106a16[_0x1c1d('0x3a')][_0x1c1d('0x44')]);_0x1c6e0b['where']=qs[_0x1c1d('0x3b')](_[_0x1c1d('0x46')](_0x106a16[_0x1c1d('0x3a')],_0x3bd19e[_0x1c1d('0x3b')]));_0x1c6e0b['where'][_0x1c1d('0x5f')]=_0x915639['id'];if(_0x106a16['query'][_0x1c1d('0x47')]){_0x1c6e0b[_0x1c1d('0x45')]=_['merge'](_0x1c6e0b[_0x1c1d('0x45')],{'$or':_[_0x1c1d('0x34')](_0x1c6e0b[_0x1c1d('0x3e')],function(_0x34a9e1){var _0x50369e={};_0x50369e[_0x34a9e1]={'$like':'%'+_0x106a16[_0x1c1d('0x3a')][_0x1c1d('0x47')]+'%'};return _0x50369e;})});}_0x1c6e0b=_[_0x1c1d('0x48')]({},_0x1c6e0b,_0x106a16['options']);return db[_0x1c1d('0x5e')]['findAll'](_0x1c6e0b);}})[_0x1c1d('0x2d')](function(_0x258c69){if(_0x258c69){return db[_0x1c1d('0x60')]['findAndCountAll']({'where':{'id':_['map'](_0x258c69,_0x1c1d('0x61')),'role':_0x1c1d('0x62')},'attributes':['id',_0x1c1d('0x31'),_0x1c1d('0x63'),_0x1c1d('0x64'),_0x1c1d('0x65')]});}})[_0x1c1d('0x2d')](function(_0x540fef){if(_0x540fef){return{'count':_0x540fef[_0x1c1d('0x27')],'rows':_[_0x1c1d('0x34')](_0x540fef['rows'],function(_0x551f28){return{'membername':_0x551f28[_0x1c1d('0x31')],'UserId':_0x551f28['id'],'queue_name':_0x4f4bc1[_0x1c1d('0x31')],'MailQueueId':_0x4f4bc1['id'],'interface':util[_0x1c1d('0x66')](_0x1c1d('0x67'),_0x1c1d('0x68'),_0x551f28[_0x1c1d('0x31')]),'penalty':0x0,'paused':_0x551f28[_0x1c1d('0x63')],'createdAt':_0x551f28['createdAt'],'updatedAt':_0x551f28[_0x1c1d('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x15cc35,_0x1c6e0b))[_0x1c1d('0x4e')](handleError(_0x15cc35,null));};exports[_0x1c1d('0x69')]=function(_0x383db8,_0x499b30,_0x5ab8b0){var _0x3faa5f={};var _0x546056={};var _0x26ed09;var _0x32334c;return db[_0x1c1d('0x35')]['findOne']({'where':{'id':_0x383db8[_0x1c1d('0x4f')]['id']}})[_0x1c1d('0x2d')](handleEntityNotFound(_0x499b30,null))[_0x1c1d('0x2d')](function(_0x2f97f8){if(_0x2f97f8){_0x26ed09=_0x2f97f8;_0x546056[_0x1c1d('0x3d')]=_[_0x1c1d('0x50')](db[_0x1c1d('0x6a')][_0x1c1d('0x36')]);_0x546056[_0x1c1d('0x3a')]=_[_0x1c1d('0x50')](_0x383db8[_0x1c1d('0x3a')]);_0x546056[_0x1c1d('0x3b')]=_[_0x1c1d('0x3c')](_0x546056[_0x1c1d('0x3d')],_0x546056['query']);_0x3faa5f[_0x1c1d('0x3e')]=_[_0x1c1d('0x3c')](_0x546056[_0x1c1d('0x3d')],qs[_0x1c1d('0x3f')](_0x383db8[_0x1c1d('0x3a')][_0x1c1d('0x3f')]));_0x3faa5f[_0x1c1d('0x3e')]=_0x3faa5f['attributes'][_0x1c1d('0x40')]?_0x3faa5f[_0x1c1d('0x3e')]:_0x546056['model'];_0x3faa5f[_0x1c1d('0x43')]=qs[_0x1c1d('0x44')](_0x383db8['query'][_0x1c1d('0x44')]);_0x3faa5f['where']=qs[_0x1c1d('0x3b')](_[_0x1c1d('0x46')](_0x383db8['query'],_0x546056[_0x1c1d('0x3b')]));if(_0x383db8[_0x1c1d('0x3a')][_0x1c1d('0x47')]){_0x3faa5f[_0x1c1d('0x45')]=_['merge'](_0x3faa5f['where'],{'$or':_[_0x1c1d('0x34')](_0x3faa5f[_0x1c1d('0x3e')],function(_0x3a6779){var _0x366496={};_0x366496[_0x3a6779]={'$like':'%'+_0x383db8[_0x1c1d('0x3a')][_0x1c1d('0x47')]+'%'};return _0x366496;})});}_0x3faa5f=_[_0x1c1d('0x48')]({},_0x3faa5f,_0x383db8[_0x1c1d('0x4a')]);return _0x26ed09['getTeams'](_0x3faa5f);}})[_0x1c1d('0x2d')](function(_0x242c6c){if(_0x242c6c){_0x32334c=_0x242c6c[_0x1c1d('0x40')];if(!_0x383db8['query']['hasOwnProperty'](_0x1c1d('0x42'))){_0x3faa5f[_0x1c1d('0x25')]=qs[_0x1c1d('0x25')](_0x383db8['query'][_0x1c1d('0x25')]);_0x3faa5f[_0x1c1d('0x28')]=qs[_0x1c1d('0x28')](_0x383db8[_0x1c1d('0x3a')][_0x1c1d('0x28')]);}return _0x26ed09[_0x1c1d('0x69')](_0x3faa5f);}})[_0x1c1d('0x2d')](function(_0x59e655){if(_0x59e655){return _0x59e655?{'count':_0x32334c,'rows':_0x59e655}:null;}})[_0x1c1d('0x2d')](respondWithResult(_0x499b30,null))[_0x1c1d('0x4e')](handleError(_0x499b30,null));};exports[_0x1c1d('0x6b')]=function(_0x5b015e,_0x54bf40,_0x228751){var _0x1a9988=_0x5b015e[_0x1c1d('0x5c')][_0x1c1d('0x6c')];return db[_0x1c1d('0x6a')]['findAll']({'where':{'id':_0x1a9988},'attributes':['id'],'include':[{'model':db[_0x1c1d('0x60')],'as':_0x1c1d('0x6d'),'attributes':['id',_0x1c1d('0x31'),'online',_0x1c1d('0x6e'),'interface'],'raw':!![]}]})[_0x1c1d('0x2d')](function(_0xeded33){if(_0xeded33){var _0x5f0573=_[_0x1c1d('0x6f')](_0xeded33,function(_0x3c43af){var _0x492d54=_0x3c43af[_0x1c1d('0x54')]({'plain':!![]});return _0x492d54[_0x1c1d('0x6d')];});return db['MailQueue'][_0x1c1d('0x52')]({'where':{'id':_0x5b015e[_0x1c1d('0x4f')]['id']}})[_0x1c1d('0x2d')](function(_0x3c67bf){return db[_0x1c1d('0x70')][_0x1c1d('0x71')](function(_0x6a0306){return _0x3c67bf[_0x1c1d('0x6b')](_0x1a9988,{'transaction':_0x6a0306})[_0x1c1d('0x2d')](function(){return BPromise[_0x1c1d('0x72')](_0x5f0573,function(_0xebeb6b){return db[_0x1c1d('0x5e')][_0x1c1d('0x73')]({'where':{'UserId':_0xebeb6b['id'],'MailQueueId':_0x5b015e[_0x1c1d('0x4f')]['id']},'transaction':_0x6a0306});});})[_0x1c1d('0x2d')](function(){_0x5f0573[_0x1c1d('0x74')](function(_0x3f19a0){socket[_0x1c1d('0x75')](_0x1c1d('0x76'),{'UserId':_0x3f19a0['id'],'MailQueueId':_0x3c67bf['id']});});});});});}})[_0x1c1d('0x2d')](respondWithStatusCode(_0x54bf40,null))['catch'](handleError(_0x54bf40,null));};exports[_0x1c1d('0x77')]=function(_0x2544c6,_0x1276f5,_0x24581a){return db[_0x1c1d('0x6a')][_0x1c1d('0x4c')]({'where':{'id':_0x2544c6[_0x1c1d('0x3a')][_0x1c1d('0x6c')]},'attributes':['id'],'include':[{'model':db[_0x1c1d('0x60')],'as':_0x1c1d('0x6d'),'attributes':['id'],'raw':!![]}]})[_0x1c1d('0x2d')](handleEntityNotFound(_0x1276f5,null))[_0x1c1d('0x2d')](function(_0x5b6732){var _0xb85191=_[_0x1c1d('0x34')](_0x5b6732,'id');var _0x55ef0b=[];var _0x276dff=[];var _0x31c1c1=squel['select']();_0x31c1c1[_0x1c1d('0x78')](_0x1c1d('0x79'))[_0x1c1d('0x7a')](_0x1c1d('0x7b'),'tq')[_0x1c1d('0x7c')](_0x1c1d('0x7d'),'ut',_0x1c1d('0x7e'))[_0x1c1d('0x45')](_0x1c1d('0x7f'),_0x2544c6[_0x1c1d('0x4f')]['id']);for(var _0x4ea475=0x0;_0x4ea475<_0x5b6732[_0x1c1d('0x40')];_0x4ea475+=0x1){let _0x579259=_0x5b6732[_0x4ea475];for(var _0x1a91ce=0x0;_0x1a91ce<_0x579259[_0x1c1d('0x6d')][_0x1c1d('0x40')];_0x1a91ce+=0x1){let _0x51032a=_0x579259[_0x1c1d('0x6d')][_0x1a91ce];var _0x1b7815=_0x31c1c1[_0x1c1d('0x80')]();_0x1b7815[_0x1c1d('0x45')](_0x1c1d('0x81'),_0x51032a['id']);_0x276dff[_0x1c1d('0x82')](db[_0x1c1d('0x70')][_0x1c1d('0x3a')](_0x1b7815[_0x1c1d('0x83')](),{'type':db[_0x1c1d('0x70')][_0x1c1d('0x84')][_0x1c1d('0x85')]})[_0x1c1d('0x2d')](function(_0x150d2c){if(_0x150d2c[_0x1c1d('0x40')]===0x1){return _0x51032a['id'];}else{var _0x203e0c=_[_0x1c1d('0x86')](_[_0x1c1d('0x34')](_0x150d2c,_0x1c1d('0x87')),function(_0xca199b){return _['includes'](_0xb85191,_0xca199b);});if(_0x203e0c){return _0x51032a['id'];}}}));}}return BPromise[_0x1c1d('0x88')](_0x276dff)[_0x1c1d('0x2d')](function(_0x2e4e73){_0x55ef0b=_(_0x55ef0b)[_0x1c1d('0x89')](_0x2e4e73)[_0x1c1d('0x8a')]()[_0x1c1d('0x8b')]();return db['MailQueue'][_0x1c1d('0x52')]({'where':{'id':_0x2544c6[_0x1c1d('0x4f')]['id']}})[_0x1c1d('0x2d')](function(_0x28b005){return db[_0x1c1d('0x70')][_0x1c1d('0x71')](function(_0x1ed92b){return _0x28b005[_0x1c1d('0x77')](_0x2544c6[_0x1c1d('0x3a')][_0x1c1d('0x6c')],{'transaction':_0x1ed92b})[_0x1c1d('0x2d')](function(){if(!_[_0x1c1d('0x8c')](_0x55ef0b)){return _0x28b005[_0x1c1d('0x8d')](_0x55ef0b,{'transaction':_0x1ed92b});}})[_0x1c1d('0x2d')](function(){_0x55ef0b[_0x1c1d('0x74')](function(_0xd90d6a){socket[_0x1c1d('0x75')](_0x1c1d('0x8e'),{'UserId':_0xd90d6a,'MailQueueId':_0x28b005['id']});});});});});});})['then'](respondWithStatusCode(_0x1276f5,null))[_0x1c1d('0x4e')](handleError(_0x1276f5,null));};exports[_0x1c1d('0x8f')]=function(_0x437293,_0x485214,_0x297de4){return db[_0x1c1d('0x35')]['find']({'where':{'id':_0x437293[_0x1c1d('0x4f')]['id']}})['then'](handleEntityNotFound(_0x485214,null))[_0x1c1d('0x2d')](function(_0x439a51){if(_0x439a51){return _0x439a51[_0x1c1d('0x8f')](_0x437293[_0x1c1d('0x5c')]['ids'],_['omit'](_0x437293[_0x1c1d('0x5c')],[_0x1c1d('0x6c'),'id'])||{})[_0x1c1d('0x90')](function(_0x18b080){for(var _0x242e1b=0x0;_0x242e1b<_0x437293[_0x1c1d('0x5c')]['ids'][_0x1c1d('0x40')];_0x242e1b+=0x1){socket['emit'](_0x1c1d('0x76'),{'UserId':Number(_0x437293[_0x1c1d('0x5c')]['ids'][_0x242e1b]),'MailQueueId':Number(_0x437293['params']['id'])});}return _0x18b080;});}})[_0x1c1d('0x2d')](respondWithResult(_0x485214,null))[_0x1c1d('0x4e')](handleError(_0x485214,null));};exports['removeAgents']=function(_0x3f3b60,_0x247c5f,_0x4f3ac6){return db['MailQueue'][_0x1c1d('0x52')]({'where':{'id':_0x3f3b60[_0x1c1d('0x4f')]['id']}})[_0x1c1d('0x2d')](handleEntityNotFound(_0x247c5f,null))[_0x1c1d('0x2d')](function(_0x256cdc){if(_0x256cdc){return _0x256cdc[_0x1c1d('0x8d')](_0x3f3b60[_0x1c1d('0x3a')]['ids'])[_0x1c1d('0x2d')](function(){if(_[_0x1c1d('0x91')](_0x3f3b60[_0x1c1d('0x3a')][_0x1c1d('0x6c')])){for(var _0x25328b=0x0;_0x25328b<_0x3f3b60[_0x1c1d('0x3a')][_0x1c1d('0x6c')][_0x1c1d('0x40')];_0x25328b+=0x1){socket[_0x1c1d('0x75')](_0x1c1d('0x8e'),{'UserId':Number(_0x3f3b60['query'][_0x1c1d('0x6c')][_0x25328b]),'MailQueueId':Number(_0x3f3b60['params']['id'])});}}else{socket[_0x1c1d('0x75')](_0x1c1d('0x8e'),{'UserId':Number(_0x3f3b60[_0x1c1d('0x3a')][_0x1c1d('0x6c')]),'MailQueueId':Number(_0x3f3b60[_0x1c1d('0x4f')]['id'])});}});}})[_0x1c1d('0x2d')](respondWithStatusCode(_0x247c5f,null))['catch'](handleError(_0x247c5f,null));};exports['getAgents']=function(_0x3e9325,_0x439bcd,_0x532aa8){var _0x14ad4c={};var _0x141141={};var _0x36ff86;var _0x3cb8b4;return db[_0x1c1d('0x35')][_0x1c1d('0x92')]({'where':{'id':_0x3e9325[_0x1c1d('0x4f')]['id']}})[_0x1c1d('0x2d')](handleEntityNotFound(_0x439bcd,null))[_0x1c1d('0x2d')](function(_0x1afa41){if(_0x1afa41){_0x36ff86=_0x1afa41;_0x141141['model']=_[_0x1c1d('0x50')](db[_0x1c1d('0x60')][_0x1c1d('0x36')]);_0x141141[_0x1c1d('0x3a')]=_[_0x1c1d('0x50')](_0x3e9325['query']);_0x141141[_0x1c1d('0x3b')]=_[_0x1c1d('0x3c')](_0x141141[_0x1c1d('0x3d')],_0x141141[_0x1c1d('0x3a')]);_0x14ad4c['attributes']=_[_0x1c1d('0x3c')](_0x141141[_0x1c1d('0x3d')],qs[_0x1c1d('0x3f')](_0x3e9325[_0x1c1d('0x3a')][_0x1c1d('0x3f')]));_0x14ad4c[_0x1c1d('0x3e')]=_0x14ad4c['attributes'][_0x1c1d('0x40')]?_0x14ad4c[_0x1c1d('0x3e')]:_0x141141[_0x1c1d('0x3d')];_0x14ad4c['order']=qs[_0x1c1d('0x44')](_0x3e9325['query']['sort']);_0x14ad4c[_0x1c1d('0x45')]=qs[_0x1c1d('0x3b')](_[_0x1c1d('0x46')](_0x3e9325[_0x1c1d('0x3a')],_0x141141[_0x1c1d('0x3b')]));if(_0x3e9325['query'][_0x1c1d('0x47')]){_0x14ad4c[_0x1c1d('0x45')]=_[_0x1c1d('0x48')](_0x14ad4c[_0x1c1d('0x45')],{'$or':_[_0x1c1d('0x34')](_0x14ad4c[_0x1c1d('0x3e')],function(_0x226d22){var _0x2405b6={};_0x2405b6[_0x226d22]={'$like':'%'+_0x3e9325[_0x1c1d('0x3a')][_0x1c1d('0x47')]+'%'};return _0x2405b6;})});}_0x14ad4c=_['merge']({},_0x14ad4c,_0x3e9325['options']);return _0x36ff86[_0x1c1d('0x93')](_0x14ad4c);}})[_0x1c1d('0x2d')](function(_0x3673fd){if(_0x3673fd){_0x3cb8b4=_0x3673fd[_0x1c1d('0x40')];if(!_0x3e9325[_0x1c1d('0x3a')]['hasOwnProperty']('nolimit')){_0x14ad4c[_0x1c1d('0x25')]=qs['limit'](_0x3e9325['query']['limit']);_0x14ad4c[_0x1c1d('0x28')]=qs[_0x1c1d('0x28')](_0x3e9325[_0x1c1d('0x3a')][_0x1c1d('0x28')]);}return _0x36ff86[_0x1c1d('0x93')](_0x14ad4c);}})[_0x1c1d('0x2d')](function(_0x481378){if(_0x481378){return _0x481378?{'count':_0x3cb8b4,'rows':_0x481378}:null;}})[_0x1c1d('0x2d')](respondWithResult(_0x439bcd,null))['catch'](handleError(_0x439bcd,null));};
\ No newline at end of file
+var _0x7235=['redis','defaults','socket.io-emitter','./mailQueue.socket','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','get','UserProfileResource','then','error','stack','name','send','map','MailQueue','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MailQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserMailQueue','User','UserId','agent','mailPause','createdAt','format','SIP','updatedAt','getTeams','Team','order','addTeams','ids','Agents','online','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','removeTeams','select','field','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','includes','union','compact','value','isEmpty','removeAgents','emit','userMailQueue:remove','addAgents','spread','userMailQueue:save','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','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/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x47abf4,_0x3c50c0){var _0x42bb06=function(_0xfb9cce){while(--_0xfb9cce){_0x47abf4['push'](_0x47abf4['shift']());}};_0x42bb06(++_0x3c50c0);}(_0x7235,0x77));var _0x5723=function(_0x34491b,_0x1ec3a8){_0x34491b=_0x34491b-0x0;var _0x417e10=_0x7235[_0x34491b];return _0x417e10;};'use strict';var emlformat=require(_0x5723('0x0'));var rimraf=require(_0x5723('0x1'));var zipdir=require(_0x5723('0x2'));var jsonpatch=require(_0x5723('0x3'));var rp=require('request-promise');var moment=require(_0x5723('0x4'));var BPromise=require(_0x5723('0x5'));var Mustache=require(_0x5723('0x6'));var util=require(_0x5723('0x7'));var path=require(_0x5723('0x8'));var sox=require(_0x5723('0x9'));var csv=require(_0x5723('0xa'));var ejs=require(_0x5723('0xb'));var fs=require('fs');var fs_extra=require(_0x5723('0xc'));var _=require(_0x5723('0xd'));var squel=require(_0x5723('0xe'));var crypto=require(_0x5723('0xf'));var jsforce=require(_0x5723('0x10'));var deskjs=require(_0x5723('0x11'));var toCsv=require(_0x5723('0xa'));var querystring=require(_0x5723('0x12'));var Papa=require(_0x5723('0x13'));var Redis=require('ioredis');var authService=require(_0x5723('0x14'));var qs=require(_0x5723('0x15'));var as=require(_0x5723('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5723('0x17'))(_0x5723('0x18'));var utils=require(_0x5723('0x19'));var config=require(_0x5723('0x1a'));var licenseUtil=require(_0x5723('0x1b'));var db=require(_0x5723('0x1c'))['db'];config[_0x5723('0x1d')]=_[_0x5723('0x1e')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5723('0x1f'))(new Redis(config[_0x5723('0x1d')]));require(_0x5723('0x20'))['register'](socket);function respondWithStatusCode(_0x441186,_0x4f96b9){_0x4f96b9=_0x4f96b9||0xcc;return function(_0x144cc9){if(_0x144cc9){return _0x441186[_0x5723('0x21')](_0x4f96b9);}return _0x441186['status'](_0x4f96b9)['end']();};}function respondWithResult(_0x360318,_0x447add){_0x447add=_0x447add||0xc8;return function(_0x49db63){if(_0x49db63){return _0x360318[_0x5723('0x22')](_0x447add)['json'](_0x49db63);}};}function respondWithFilteredResult(_0x5a6cfd,_0x2793c2){return function(_0x454ce1){if(_0x454ce1){var _0x3c8025=typeof _0x2793c2[_0x5723('0x23')]===_0x5723('0x24')&&typeof _0x2793c2[_0x5723('0x25')]==='undefined';var _0x37b78e=_0x454ce1[_0x5723('0x26')];var _0x496490=_0x3c8025?0x0:_0x2793c2['offset'];var _0x224a78=_0x3c8025?_0x454ce1[_0x5723('0x26')]:_0x2793c2['offset']+_0x2793c2[_0x5723('0x25')];var _0x4f2174;if(_0x224a78>=_0x37b78e){_0x224a78=_0x37b78e;_0x4f2174=0xc8;}else{_0x4f2174=0xce;}_0x5a6cfd[_0x5723('0x22')](_0x4f2174);return _0x5a6cfd[_0x5723('0x27')](_0x5723('0x28'),_0x496490+'-'+_0x224a78+'/'+_0x37b78e)[_0x5723('0x29')](_0x454ce1);}return null;};}function patchUpdates(_0x1c83af){return function(_0x4ed47f){try{jsonpatch[_0x5723('0x2a')](_0x4ed47f,_0x1c83af,!![]);}catch(_0x3fd758){return BPromise[_0x5723('0x2b')](_0x3fd758);}return _0x4ed47f[_0x5723('0x2c')]();};}function saveUpdates(_0x149530,_0x40ae14){return function(_0x4a5505){if(_0x4a5505){return _0x4a5505[_0x5723('0x2d')](_0x149530)['then'](function(_0x5351f9){return _0x5351f9;});}return null;};}function removeEntity(_0x2fcacd,_0x32d490){return function(_0x2d25e9){if(_0x2d25e9){return _0x2d25e9[_0x5723('0x2e')]()['then'](function(){var _0x580653=_0x2d25e9[_0x5723('0x2f')]({'plain':!![]});var _0x15e048='MailQueues';return db[_0x5723('0x30')][_0x5723('0x2e')]({'where':{'type':_0x15e048,'resourceId':_0x580653['id']}})[_0x5723('0x31')](function(){return _0x2d25e9;});})[_0x5723('0x31')](function(){_0x2fcacd[_0x5723('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3bfb6d,_0xa4945a){return function(_0x332000){if(!_0x332000){_0x3bfb6d[_0x5723('0x21')](0x194);}return _0x332000;};}function handleError(_0x125a46,_0x25479d){_0x25479d=_0x25479d||0x1f4;return function(_0x345c02){logger[_0x5723('0x32')](_0x345c02[_0x5723('0x33')]);if(_0x345c02[_0x5723('0x34')]){delete _0x345c02[_0x5723('0x34')];}_0x125a46[_0x5723('0x22')](_0x25479d)[_0x5723('0x35')](_0x345c02);};}exports['index']=function(_0x76b37b,_0x5249b4){var _0x520107={},_0x242f03={},_0xac66d1={'count':0x0,'rows':[]};var _0x47af31=_[_0x5723('0x36')](db[_0x5723('0x37')][_0x5723('0x38')],function(_0x2e1961){return{'name':_0x2e1961[_0x5723('0x39')],'type':_0x2e1961['type'][_0x5723('0x3a')]};});_0x242f03[_0x5723('0x3b')]=_[_0x5723('0x36')](_0x47af31,'name');_0x242f03[_0x5723('0x3c')]=_[_0x5723('0x3d')](_0x76b37b['query']);_0x242f03[_0x5723('0x3e')]=_[_0x5723('0x3f')](_0x242f03[_0x5723('0x3b')],_0x242f03[_0x5723('0x3c')]);_0x520107[_0x5723('0x40')]=_[_0x5723('0x3f')](_0x242f03[_0x5723('0x3b')],qs[_0x5723('0x41')](_0x76b37b['query'][_0x5723('0x41')]));_0x520107['attributes']=_0x520107[_0x5723('0x40')][_0x5723('0x42')]?_0x520107[_0x5723('0x40')]:_0x242f03[_0x5723('0x3b')];if(!_0x76b37b[_0x5723('0x3c')][_0x5723('0x43')](_0x5723('0x44'))){_0x520107[_0x5723('0x25')]=qs[_0x5723('0x25')](_0x76b37b['query']['limit']);_0x520107['offset']=qs['offset'](_0x76b37b[_0x5723('0x3c')][_0x5723('0x23')]);}_0x520107['order']=qs[_0x5723('0x45')](_0x76b37b[_0x5723('0x3c')][_0x5723('0x45')]);_0x520107['where']=qs['filters'](_[_0x5723('0x46')](_0x76b37b[_0x5723('0x3c')],_0x242f03[_0x5723('0x3e')]),_0x47af31);if(_0x76b37b[_0x5723('0x3c')][_0x5723('0x47')]){_0x520107[_0x5723('0x48')]=_[_0x5723('0x49')](_0x520107[_0x5723('0x48')],{'$or':_[_0x5723('0x36')](_0x47af31,function(_0x3e8b3e){if(_0x3e8b3e[_0x5723('0x4a')]!==_0x5723('0x4b')){var _0x2315ee={};_0x2315ee[_0x3e8b3e[_0x5723('0x34')]]={'$like':'%'+_0x76b37b[_0x5723('0x3c')][_0x5723('0x47')]+'%'};return _0x2315ee;}})});}_0x520107=_[_0x5723('0x49')]({},_0x520107,_0x76b37b[_0x5723('0x4c')]);var _0x40a66d={'where':_0x520107['where']};return db[_0x5723('0x37')]['count'](_0x40a66d)[_0x5723('0x31')](function(_0x13b74e){_0xac66d1['count']=_0x13b74e;if(_0x76b37b[_0x5723('0x3c')][_0x5723('0x4d')]){_0x520107[_0x5723('0x4e')]=[{'all':!![]}];}return db[_0x5723('0x37')][_0x5723('0x4f')](_0x520107);})[_0x5723('0x31')](function(_0x8c6bc6){_0xac66d1[_0x5723('0x50')]=_0x8c6bc6;return _0xac66d1;})[_0x5723('0x31')](respondWithFilteredResult(_0x5249b4,_0x520107))[_0x5723('0x51')](handleError(_0x5249b4,null));};exports[_0x5723('0x52')]=function(_0x1cf99e,_0x5a986c){var _0x389c50={'raw':!![],'where':{'id':_0x1cf99e[_0x5723('0x53')]['id']}},_0x2cb9ec={};_0x2cb9ec[_0x5723('0x3b')]=_[_0x5723('0x3d')](db[_0x5723('0x37')][_0x5723('0x38')]);_0x2cb9ec[_0x5723('0x3c')]=_[_0x5723('0x3d')](_0x1cf99e['query']);_0x2cb9ec['filters']=_[_0x5723('0x3f')](_0x2cb9ec['model'],_0x2cb9ec[_0x5723('0x3c')]);_0x389c50[_0x5723('0x40')]=_[_0x5723('0x3f')](_0x2cb9ec['model'],qs[_0x5723('0x41')](_0x1cf99e['query'][_0x5723('0x41')]));_0x389c50[_0x5723('0x40')]=_0x389c50[_0x5723('0x40')]['length']?_0x389c50[_0x5723('0x40')]:_0x2cb9ec[_0x5723('0x3b')];if(_0x1cf99e[_0x5723('0x3c')]['includeAll']){_0x389c50[_0x5723('0x4e')]=[{'all':!![]}];}_0x389c50=_[_0x5723('0x49')]({},_0x389c50,_0x1cf99e[_0x5723('0x4c')]);return db[_0x5723('0x37')][_0x5723('0x54')](_0x389c50)[_0x5723('0x31')](handleEntityNotFound(_0x5a986c,null))[_0x5723('0x31')](respondWithResult(_0x5a986c,null))[_0x5723('0x51')](handleError(_0x5a986c,null));};exports[_0x5723('0x55')]=function(_0x1602ce,_0x1b5313){return db['MailQueue'][_0x5723('0x55')](_0x1602ce[_0x5723('0x56')],{})['then'](function(_0x2bb490){var _0x19ccca=_0x1602ce[_0x5723('0x57')][_0x5723('0x2f')]({'plain':!![]});if(!_0x19ccca)throw new Error(_0x5723('0x58'));if(_0x19ccca[_0x5723('0x59')]===_0x5723('0x57')){var _0x286d46=_0x2bb490[_0x5723('0x2f')]({'plain':!![]});var _0x472fc1=_0x5723('0x5a');return db[_0x5723('0x5b')]['find']({'where':{'name':_0x472fc1,'userProfileId':_0x19ccca[_0x5723('0x5c')]},'raw':!![]})[_0x5723('0x31')](function(_0x373275){if(_0x373275&&_0x373275[_0x5723('0x5d')]===0x0){return db[_0x5723('0x30')][_0x5723('0x55')]({'name':_0x286d46[_0x5723('0x34')],'resourceId':_0x286d46['id'],'type':_0x373275[_0x5723('0x34')],'sectionId':_0x373275['id']},{})[_0x5723('0x31')](function(){return _0x2bb490;});}else{return _0x2bb490;}})[_0x5723('0x51')](function(_0x10e1d4){logger[_0x5723('0x32')](_0x5723('0x5e'),_0x10e1d4);throw _0x10e1d4;});}return _0x2bb490;})['then'](respondWithResult(_0x1b5313,0xc9))[_0x5723('0x51')](handleError(_0x1b5313,null));};exports[_0x5723('0x2d')]=function(_0x3a94dc,_0x3b8fb5){if(_0x3a94dc[_0x5723('0x56')]['id']){delete _0x3a94dc[_0x5723('0x56')]['id'];}return db[_0x5723('0x37')][_0x5723('0x54')]({'where':{'id':_0x3a94dc['params']['id']}})[_0x5723('0x31')](handleEntityNotFound(_0x3b8fb5,null))[_0x5723('0x31')](saveUpdates(_0x3a94dc[_0x5723('0x56')],null))[_0x5723('0x31')](respondWithResult(_0x3b8fb5,null))[_0x5723('0x51')](handleError(_0x3b8fb5,null));};exports[_0x5723('0x2e')]=function(_0x1e1ff5,_0x36e83e){return db[_0x5723('0x37')][_0x5723('0x54')]({'where':{'id':_0x1e1ff5[_0x5723('0x53')]['id']}})['then'](handleEntityNotFound(_0x36e83e,null))[_0x5723('0x31')](removeEntity(_0x36e83e,null))['catch'](handleError(_0x36e83e,null));};exports['describe']=function(_0x4e3758,_0x5797a0){return db[_0x5723('0x37')][_0x5723('0x5f')]()[_0x5723('0x31')](respondWithResult(_0x5797a0,null))['catch'](handleError(_0x5797a0,null));};exports[_0x5723('0x60')]=function(_0x5c1e9a,_0x367d11,_0x257a2f){var _0x2ffbbc={'raw':!![],'where':{}},_0x5cb6c3={},_0x34e71f;return db[_0x5723('0x37')][_0x5723('0x61')]({'where':{'id':_0x5c1e9a[_0x5723('0x53')]['id']}})[_0x5723('0x31')](handleEntityNotFound(_0x367d11,null))[_0x5723('0x31')](function(_0x2dac33){if(_0x2dac33){_0x34e71f=_0x2dac33[_0x5723('0x2f')]({'plain':!![]});_0x5cb6c3[_0x5723('0x3b')]=_[_0x5723('0x3d')](db['UserMailQueue'][_0x5723('0x38')]);_0x5cb6c3['query']=_[_0x5723('0x3d')](_0x5c1e9a[_0x5723('0x3c')]);_0x5cb6c3['filters']=_[_0x5723('0x3f')](_0x5cb6c3[_0x5723('0x3b')],_0x5cb6c3['query']);_0x2ffbbc['attributes']=_[_0x5723('0x3f')](_0x5cb6c3['model'],qs[_0x5723('0x41')](_0x5c1e9a[_0x5723('0x3c')][_0x5723('0x41')]));_0x2ffbbc[_0x5723('0x40')]=_0x2ffbbc[_0x5723('0x40')][_0x5723('0x42')]?_0x2ffbbc[_0x5723('0x40')]:_0x5cb6c3[_0x5723('0x3b')];if(!_0x5c1e9a['query']['hasOwnProperty'](_0x5723('0x44'))){_0x2ffbbc[_0x5723('0x25')]=qs['limit'](_0x5c1e9a['query'][_0x5723('0x25')]);_0x2ffbbc[_0x5723('0x23')]=qs[_0x5723('0x23')](_0x5c1e9a[_0x5723('0x3c')]['offset']);}_0x2ffbbc['order']=qs[_0x5723('0x45')](_0x5c1e9a[_0x5723('0x3c')][_0x5723('0x45')]);_0x2ffbbc['where']=qs['filters'](_[_0x5723('0x46')](_0x5c1e9a['query'],_0x5cb6c3[_0x5723('0x3e')]));_0x2ffbbc[_0x5723('0x48')]['MailQueueId']=_0x2dac33['id'];if(_0x5c1e9a['query'][_0x5723('0x47')]){_0x2ffbbc['where']=_['merge'](_0x2ffbbc[_0x5723('0x48')],{'$or':_[_0x5723('0x36')](_0x2ffbbc[_0x5723('0x40')],function(_0x2336e3){var _0x47e1cd={};_0x47e1cd[_0x2336e3]={'$like':'%'+_0x5c1e9a['query'][_0x5723('0x47')]+'%'};return _0x47e1cd;})});}_0x2ffbbc=_[_0x5723('0x49')]({},_0x2ffbbc,_0x5c1e9a['options']);return db[_0x5723('0x62')]['findAll'](_0x2ffbbc);}})[_0x5723('0x31')](function(_0x24f158){if(_0x24f158){return db[_0x5723('0x63')]['findAndCountAll']({'where':{'id':_[_0x5723('0x36')](_0x24f158,_0x5723('0x64')),'role':_0x5723('0x65')},'attributes':['id',_0x5723('0x34'),_0x5723('0x66'),'updatedAt',_0x5723('0x67')]});}})['then'](function(_0x5b2e94){if(_0x5b2e94){return{'count':_0x5b2e94[_0x5723('0x26')],'rows':_[_0x5723('0x36')](_0x5b2e94[_0x5723('0x50')],function(_0x3290e1){return{'membername':_0x3290e1[_0x5723('0x34')],'UserId':_0x3290e1['id'],'queue_name':_0x34e71f['name'],'MailQueueId':_0x34e71f['id'],'interface':util[_0x5723('0x68')]('%s/%s',_0x5723('0x69'),_0x3290e1['name']),'penalty':0x0,'paused':_0x3290e1[_0x5723('0x66')],'createdAt':_0x3290e1['createdAt'],'updatedAt':_0x3290e1[_0x5723('0x6a')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x5723('0x31')](respondWithFilteredResult(_0x367d11,_0x2ffbbc))[_0x5723('0x51')](handleError(_0x367d11,null));};exports[_0x5723('0x6b')]=function(_0x12814b,_0x52dd39,_0x2adc61){var _0x48f290={};var _0x2884cf={};var _0x45929d;var _0xe8b486;return db['MailQueue'][_0x5723('0x61')]({'where':{'id':_0x12814b['params']['id']}})['then'](handleEntityNotFound(_0x52dd39,null))[_0x5723('0x31')](function(_0x1e5ec5){if(_0x1e5ec5){_0x45929d=_0x1e5ec5;_0x2884cf['model']=_[_0x5723('0x3d')](db[_0x5723('0x6c')][_0x5723('0x38')]);_0x2884cf[_0x5723('0x3c')]=_[_0x5723('0x3d')](_0x12814b['query']);_0x2884cf[_0x5723('0x3e')]=_['intersection'](_0x2884cf[_0x5723('0x3b')],_0x2884cf['query']);_0x48f290[_0x5723('0x40')]=_[_0x5723('0x3f')](_0x2884cf[_0x5723('0x3b')],qs[_0x5723('0x41')](_0x12814b['query']['fields']));_0x48f290[_0x5723('0x40')]=_0x48f290[_0x5723('0x40')][_0x5723('0x42')]?_0x48f290[_0x5723('0x40')]:_0x2884cf['model'];_0x48f290[_0x5723('0x6d')]=qs[_0x5723('0x45')](_0x12814b[_0x5723('0x3c')]['sort']);_0x48f290[_0x5723('0x48')]=qs[_0x5723('0x3e')](_[_0x5723('0x46')](_0x12814b[_0x5723('0x3c')],_0x2884cf['filters']));if(_0x12814b[_0x5723('0x3c')]['filter']){_0x48f290[_0x5723('0x48')]=_[_0x5723('0x49')](_0x48f290[_0x5723('0x48')],{'$or':_[_0x5723('0x36')](_0x48f290[_0x5723('0x40')],function(_0x1b050a){var _0x31e775={};_0x31e775[_0x1b050a]={'$like':'%'+_0x12814b[_0x5723('0x3c')][_0x5723('0x47')]+'%'};return _0x31e775;})});}_0x48f290=_[_0x5723('0x49')]({},_0x48f290,_0x12814b[_0x5723('0x4c')]);return _0x45929d['getTeams'](_0x48f290);}})[_0x5723('0x31')](function(_0x44594e){if(_0x44594e){_0xe8b486=_0x44594e[_0x5723('0x42')];if(!_0x12814b[_0x5723('0x3c')][_0x5723('0x43')](_0x5723('0x44'))){_0x48f290['limit']=qs[_0x5723('0x25')](_0x12814b[_0x5723('0x3c')][_0x5723('0x25')]);_0x48f290[_0x5723('0x23')]=qs[_0x5723('0x23')](_0x12814b[_0x5723('0x3c')]['offset']);}return _0x45929d[_0x5723('0x6b')](_0x48f290);}})[_0x5723('0x31')](function(_0x4c8df5){if(_0x4c8df5){return _0x4c8df5?{'count':_0xe8b486,'rows':_0x4c8df5}:null;}})[_0x5723('0x31')](respondWithResult(_0x52dd39,null))[_0x5723('0x51')](handleError(_0x52dd39,null));};exports[_0x5723('0x6e')]=function(_0x66f53b,_0x14b730,_0x12e89f){var _0x34683f=_0x66f53b[_0x5723('0x56')][_0x5723('0x6f')];return db[_0x5723('0x6c')][_0x5723('0x4f')]({'where':{'id':_0x34683f},'attributes':['id'],'include':[{'model':db[_0x5723('0x63')],'as':_0x5723('0x70'),'attributes':['id',_0x5723('0x34'),_0x5723('0x71'),'voicePause',_0x5723('0x72')],'raw':!![]}]})[_0x5723('0x31')](function(_0x2003e2){if(_0x2003e2){var _0x105a65=_[_0x5723('0x73')](_0x2003e2,function(_0x324047){var _0x1e26ce=_0x324047['get']({'plain':!![]});return _0x1e26ce['Agents'];});return db['MailQueue'][_0x5723('0x54')]({'where':{'id':_0x66f53b[_0x5723('0x53')]['id']}})[_0x5723('0x31')](function(_0x62aa97){return db[_0x5723('0x74')][_0x5723('0x75')](function(_0x6b9131){return _0x62aa97[_0x5723('0x6e')](_0x34683f,{'transaction':_0x6b9131})['then'](function(){return BPromise[_0x5723('0x76')](_0x105a65,function(_0x5fe4b0){return db['UserMailQueue'][_0x5723('0x77')]({'where':{'UserId':_0x5fe4b0['id'],'MailQueueId':_0x66f53b[_0x5723('0x53')]['id']},'transaction':_0x6b9131});});})[_0x5723('0x31')](function(){_0x105a65[_0x5723('0x78')](function(_0x2845fe){socket['emit']('userMailQueue:save',{'UserId':_0x2845fe['id'],'MailQueueId':_0x62aa97['id']});});});});});}})[_0x5723('0x31')](respondWithStatusCode(_0x14b730,null))['catch'](handleError(_0x14b730,null));};exports[_0x5723('0x79')]=function(_0x526ac0,_0x2b1f17,_0x541a07){return db[_0x5723('0x6c')]['findAll']({'where':{'id':_0x526ac0[_0x5723('0x3c')]['ids']},'attributes':['id'],'include':[{'model':db[_0x5723('0x63')],'as':_0x5723('0x70'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x2b1f17,null))[_0x5723('0x31')](function(_0x543a13){var _0x3a6e0d=_[_0x5723('0x36')](_0x543a13,'id');var _0x8b20b0=[];var _0x2f3209=[];var _0x417f14=squel[_0x5723('0x7a')]();_0x417f14[_0x5723('0x7b')](_0x5723('0x7c'))['from']('team_has_mail_queues','tq')[_0x5723('0x7d')](_0x5723('0x7e'),'ut',_0x5723('0x7f'))[_0x5723('0x48')](_0x5723('0x80'),_0x526ac0[_0x5723('0x53')]['id']);for(var _0x3a7b97=0x0;_0x3a7b97<_0x543a13[_0x5723('0x42')];_0x3a7b97+=0x1){let _0x3ecce1=_0x543a13[_0x3a7b97];for(var _0x251c75=0x0;_0x251c75<_0x3ecce1['Agents']['length'];_0x251c75+=0x1){let _0x537a25=_0x3ecce1[_0x5723('0x70')][_0x251c75];var _0x2e2385=_0x417f14['clone']();_0x2e2385['where'](_0x5723('0x81'),_0x537a25['id']);_0x2f3209[_0x5723('0x82')](db[_0x5723('0x74')][_0x5723('0x3c')](_0x2e2385[_0x5723('0x83')](),{'type':db['sequelize'][_0x5723('0x84')][_0x5723('0x85')]})[_0x5723('0x31')](function(_0x558f5b){if(_0x558f5b['length']===0x1){return _0x537a25['id'];}else{var _0x310009=_[_0x5723('0x86')](_['map'](_0x558f5b,'TeamId'),function(_0x38ba94){return _[_0x5723('0x87')](_0x3a6e0d,_0x38ba94);});if(_0x310009){return _0x537a25['id'];}}}));}}return BPromise['all'](_0x2f3209)['then'](function(_0x3939ee){_0x8b20b0=_(_0x8b20b0)[_0x5723('0x88')](_0x3939ee)[_0x5723('0x89')]()[_0x5723('0x8a')]();return db[_0x5723('0x37')]['find']({'where':{'id':_0x526ac0[_0x5723('0x53')]['id']}})[_0x5723('0x31')](function(_0x22eaf0){return db[_0x5723('0x74')][_0x5723('0x75')](function(_0x58f921){return _0x22eaf0[_0x5723('0x79')](_0x526ac0[_0x5723('0x3c')][_0x5723('0x6f')],{'transaction':_0x58f921})[_0x5723('0x31')](function(){if(!_[_0x5723('0x8b')](_0x8b20b0)){return _0x22eaf0[_0x5723('0x8c')](_0x8b20b0,{'transaction':_0x58f921});}})['then'](function(){_0x8b20b0['forEach'](function(_0x3d5fc7){socket[_0x5723('0x8d')](_0x5723('0x8e'),{'UserId':_0x3d5fc7,'MailQueueId':_0x22eaf0['id']});});});});});});})['then'](respondWithStatusCode(_0x2b1f17,null))['catch'](handleError(_0x2b1f17,null));};exports[_0x5723('0x8f')]=function(_0x6ceab3,_0x46535c,_0x2d1ee1){return db[_0x5723('0x37')][_0x5723('0x54')]({'where':{'id':_0x6ceab3[_0x5723('0x53')]['id']}})['then'](handleEntityNotFound(_0x46535c,null))['then'](function(_0x4be9be){if(_0x4be9be){return _0x4be9be[_0x5723('0x8f')](_0x6ceab3[_0x5723('0x56')][_0x5723('0x6f')],_['omit'](_0x6ceab3[_0x5723('0x56')],[_0x5723('0x6f'),'id'])||{})[_0x5723('0x90')](function(_0x2e49e7){for(var _0x5efe31=0x0;_0x5efe31<_0x6ceab3[_0x5723('0x56')]['ids']['length'];_0x5efe31+=0x1){socket[_0x5723('0x8d')](_0x5723('0x91'),{'UserId':Number(_0x6ceab3[_0x5723('0x56')][_0x5723('0x6f')][_0x5efe31]),'MailQueueId':Number(_0x6ceab3['params']['id'])});}return _0x2e49e7;});}})[_0x5723('0x31')](respondWithResult(_0x46535c,null))[_0x5723('0x51')](handleError(_0x46535c,null));};exports['removeAgents']=function(_0x31b237,_0x29a8a0,_0x43e374){return db[_0x5723('0x37')][_0x5723('0x54')]({'where':{'id':_0x31b237[_0x5723('0x53')]['id']}})[_0x5723('0x31')](handleEntityNotFound(_0x29a8a0,null))[_0x5723('0x31')](function(_0x56894f){if(_0x56894f){return _0x56894f['removeAgents'](_0x31b237[_0x5723('0x3c')][_0x5723('0x6f')])[_0x5723('0x31')](function(){if(_[_0x5723('0x92')](_0x31b237[_0x5723('0x3c')][_0x5723('0x6f')])){for(var _0x458bf0=0x0;_0x458bf0<_0x31b237['query'][_0x5723('0x6f')]['length'];_0x458bf0+=0x1){socket[_0x5723('0x8d')]('userMailQueue:remove',{'UserId':Number(_0x31b237['query'][_0x5723('0x6f')][_0x458bf0]),'MailQueueId':Number(_0x31b237['params']['id'])});}}else{socket[_0x5723('0x8d')]('userMailQueue:remove',{'UserId':Number(_0x31b237[_0x5723('0x3c')]['ids']),'MailQueueId':Number(_0x31b237[_0x5723('0x53')]['id'])});}});}})['then'](respondWithStatusCode(_0x29a8a0,null))[_0x5723('0x51')](handleError(_0x29a8a0,null));};exports[_0x5723('0x93')]=function(_0x567034,_0x1c776f,_0x1ecf36){var _0x26370a={};var _0x5e8935={};var _0x14168e;var _0x389273;return db[_0x5723('0x37')][_0x5723('0x61')]({'where':{'id':_0x567034[_0x5723('0x53')]['id']}})[_0x5723('0x31')](handleEntityNotFound(_0x1c776f,null))[_0x5723('0x31')](function(_0x344bc7){if(_0x344bc7){_0x14168e=_0x344bc7;_0x5e8935['model']=_[_0x5723('0x3d')](db[_0x5723('0x63')][_0x5723('0x38')]);_0x5e8935[_0x5723('0x3c')]=_['keys'](_0x567034[_0x5723('0x3c')]);_0x5e8935[_0x5723('0x3e')]=_[_0x5723('0x3f')](_0x5e8935[_0x5723('0x3b')],_0x5e8935['query']);_0x26370a['attributes']=_['intersection'](_0x5e8935[_0x5723('0x3b')],qs[_0x5723('0x41')](_0x567034[_0x5723('0x3c')][_0x5723('0x41')]));_0x26370a[_0x5723('0x40')]=_0x26370a[_0x5723('0x40')][_0x5723('0x42')]?_0x26370a[_0x5723('0x40')]:_0x5e8935[_0x5723('0x3b')];_0x26370a[_0x5723('0x6d')]=qs[_0x5723('0x45')](_0x567034['query'][_0x5723('0x45')]);_0x26370a[_0x5723('0x48')]=qs[_0x5723('0x3e')](_['pick'](_0x567034[_0x5723('0x3c')],_0x5e8935[_0x5723('0x3e')]));if(_0x567034[_0x5723('0x3c')][_0x5723('0x47')]){_0x26370a[_0x5723('0x48')]=_[_0x5723('0x49')](_0x26370a[_0x5723('0x48')],{'$or':_['map'](_0x26370a[_0x5723('0x40')],function(_0x8b0f64){var _0xfd405c={};_0xfd405c[_0x8b0f64]={'$like':'%'+_0x567034[_0x5723('0x3c')][_0x5723('0x47')]+'%'};return _0xfd405c;})});}_0x26370a=_[_0x5723('0x49')]({},_0x26370a,_0x567034[_0x5723('0x4c')]);return _0x14168e[_0x5723('0x93')](_0x26370a);}})['then'](function(_0x549307){if(_0x549307){_0x389273=_0x549307[_0x5723('0x42')];if(!_0x567034[_0x5723('0x3c')]['hasOwnProperty'](_0x5723('0x44'))){_0x26370a[_0x5723('0x25')]=qs['limit'](_0x567034['query'][_0x5723('0x25')]);_0x26370a[_0x5723('0x23')]=qs[_0x5723('0x23')](_0x567034[_0x5723('0x3c')][_0x5723('0x23')]);}return _0x14168e[_0x5723('0x93')](_0x26370a);}})[_0x5723('0x31')](function(_0x4101de){if(_0x4101de){return _0x4101de?{'count':_0x389273,'rows':_0x4101de}:null;}})[_0x5723('0x31')](respondWithResult(_0x1c776f,null))['catch'](handleError(_0x1c776f,null));};
\ No newline at end of file
index af14c2a..9bbd1f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8538=['hasOwnProperty','hook','exports','events','../../mysqldb','MailQueue','setMaxListeners','save','update','remove','emit'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0x8538,0x1dc));var _0x8853=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8538[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x8853('0x0'));var MailQueue=require(_0x8853('0x1'))['db'][_0x8853('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x8853('0x3')](0x0);var events={'afterCreate':_0x8853('0x4'),'afterUpdate':_0x8853('0x5'),'afterDestroy':_0x8853('0x6')};function emitEvent(_0x558580){return function(_0x53cbfe,_0xd5b9db,_0x366257){MailQueueEvents['emit'](_0x558580+':'+_0x53cbfe['id'],_0x53cbfe);MailQueueEvents[_0x8853('0x7')](_0x558580,_0x53cbfe);_0x366257(null);};}for(var e in events){if(events[_0x8853('0x8')](e)){var event=events[e];MailQueue[_0x8853('0x9')](e,emitEvent(event));}}module[_0x8853('0xa')]=MailQueueEvents;
\ No newline at end of file
+var _0x0ab9=['exports','events','../../mysqldb','MailQueue','save','update','emit','hook'];(function(_0x433a86,_0x175b5c){var _0x23000c=function(_0x4b1fa0){while(--_0x4b1fa0){_0x433a86['push'](_0x433a86['shift']());}};_0x23000c(++_0x175b5c);}(_0x0ab9,0x1e9));var _0x90ab=function(_0x58f5a4,_0x277483){_0x58f5a4=_0x58f5a4-0x0;var _0x5134a2=_0x0ab9[_0x58f5a4];return _0x5134a2;};'use strict';var EventEmitter=require(_0x90ab('0x0'));var MailQueue=require(_0x90ab('0x1'))['db'][_0x90ab('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x90ab('0x3'),'afterUpdate':_0x90ab('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3eede6){return function(_0x2534f6,_0x1c9af9,_0x3d109d){MailQueueEvents[_0x90ab('0x5')](_0x3eede6+':'+_0x2534f6['id'],_0x2534f6);MailQueueEvents[_0x90ab('0x5')](_0x3eede6,_0x2534f6);_0x3d109d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue[_0x90ab('0x6')](e,emitEvent(event));}}module[_0x90ab('0x7')]=MailQueueEvents;
\ No newline at end of file
index 912d8b8..52ddf72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cf1=['exports','define','MailQueue','mail_queues','lodash','util','api','bluebird','path','rimraf','../../config/environment','./mailQueue.attributes'];(function(_0x36bfde,_0x53e50e){var _0x50a62b=function(_0x44492c){while(--_0x44492c){_0x36bfde['push'](_0x36bfde['shift']());}};_0x50a62b(++_0x53e50e);}(_0x6cf1,0x1a8));var _0x16cf=function(_0x126c16,_0x442e3b){_0x126c16=_0x126c16-0x0;var _0x5a022a=_0x6cf1[_0x126c16];return _0x5a022a;};'use strict';var _=require(_0x16cf('0x0'));var util=require(_0x16cf('0x1'));var logger=require('../../config/logger')(_0x16cf('0x2'));var moment=require('moment');var BPromise=require(_0x16cf('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x16cf('0x4'));var rimraf=require(_0x16cf('0x5'));var config=require(_0x16cf('0x6'));var attributes=require(_0x16cf('0x7'));module[_0x16cf('0x8')]=function(_0x4afd1f,_0x4da9a3){return _0x4afd1f[_0x16cf('0x9')](_0x16cf('0xa'),attributes,{'tableName':_0x16cf('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1135=['lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./mailQueue.attributes','exports','define','MailQueue'];(function(_0xe66cf2,_0x32ba5f){var _0x2d84e7=function(_0x58a7d8){while(--_0x58a7d8){_0xe66cf2['push'](_0xe66cf2['shift']());}};_0x2d84e7(++_0x32ba5f);}(_0x1135,0x150));var _0x5113=function(_0x4eced5,_0x58b8b6){_0x4eced5=_0x4eced5-0x0;var _0x18bfb9=_0x1135[_0x4eced5];return _0x18bfb9;};'use strict';var _=require(_0x5113('0x0'));var util=require(_0x5113('0x1'));var logger=require(_0x5113('0x2'))(_0x5113('0x3'));var moment=require('moment');var BPromise=require(_0x5113('0x4'));var rp=require(_0x5113('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5113('0x6'));var config=require(_0x5113('0x7'));var attributes=require(_0x5113('0x8'));module[_0x5113('0x9')]=function(_0x11a389,_0x592461){return _0x11a389[_0x5113('0xa')](_0x5113('0xb'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d7a9b4f..08bb804 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa62c=['rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','GetMailQueue','MailQueue','raw','options','where','attributes','include','map','model','ShowMailQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x41c88c,_0x381f8d){var _0x2c97ea=function(_0x35fd44){while(--_0x35fd44){_0x41c88c['push'](_0x41c88c['shift']());}};_0x2c97ea(++_0x381f8d);}(_0xa62c,0x70));var _0xca62=function(_0x2525f1,_0x47034f){_0x2525f1=_0x2525f1-0x0;var _0x13c1b5=_0xa62c[_0x2525f1];return _0x13c1b5;};'use strict';var _=require(_0xca62('0x0'));var util=require(_0xca62('0x1'));var moment=require(_0xca62('0x2'));var BPromise=require(_0xca62('0x3'));var rs=require(_0xca62('0x4'));var fs=require('fs');var Redis=require(_0xca62('0x5'));var db=require(_0xca62('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xca62('0x7'))(_0xca62('0x8'));var config=require(_0xca62('0x9'));var jayson=require(_0xca62('0xa'));var client=jayson[_0xca62('0xb')][_0xca62('0xc')]({'port':0x232a});config[_0xca62('0xd')]=_[_0xca62('0xe')](config['redis'],{'host':_0xca62('0xf'),'port':0x18eb});var socket=require(_0xca62('0x10'))(new Redis(config[_0xca62('0xd')]));require('./mailQueue.socket')[_0xca62('0x11')](socket);function respondWithRpcPromise(_0x3dd26b,_0x254a7b,_0x5bcb2d){return new BPromise(function(_0x2da5ad,_0x3baba5){return client[_0xca62('0x12')](_0x3dd26b,_0x5bcb2d)[_0xca62('0x13')](function(_0x10d507){logger[_0xca62('0x14')](_0xca62('0x15'),_0x254a7b,_0xca62('0x16'));logger[_0xca62('0x17')]('MailQueue,\x20%s,\x20%s,\x20%s',_0x254a7b,_0xca62('0x16'),JSON[_0xca62('0x18')](_0x10d507));if(_0x10d507[_0xca62('0x19')]){if(_0x10d507['error']['code']===0x1f4){logger['error'](_0xca62('0x15'),_0x254a7b,_0x10d507['error'][_0xca62('0x1a')]);return _0x3baba5(_0x10d507[_0xca62('0x19')]['message']);}logger['error'](_0xca62('0x15'),_0x254a7b,_0x10d507[_0xca62('0x19')][_0xca62('0x1a')]);return _0x2da5ad(_0x10d507['error'][_0xca62('0x1a')]);}else{logger[_0xca62('0x14')](_0xca62('0x15'),_0x254a7b,'request\x20sent');_0x2da5ad(_0x10d507[_0xca62('0x1b')][_0xca62('0x1a')]);}})[_0xca62('0x1c')](function(_0x11cfa1){logger[_0xca62('0x19')](_0xca62('0x15'),_0x254a7b,_0x11cfa1);_0x3baba5(_0x11cfa1);});});}exports[_0xca62('0x1d')]=function(_0x27c97b){var _0x3e4465=this;return new Promise(function(_0x94f92,_0x133132){return db[_0xca62('0x1e')]['findAll']({'raw':_0x27c97b['options']?_0x27c97b['options'][_0xca62('0x1f')]===undefined?!![]:![]:!![],'where':_0x27c97b[_0xca62('0x20')]?_0x27c97b[_0xca62('0x20')][_0xca62('0x21')]||null:null,'attributes':_0x27c97b[_0xca62('0x20')]?_0x27c97b[_0xca62('0x20')][_0xca62('0x22')]||null:null,'limit':_0x27c97b[_0xca62('0x20')]?_0x27c97b['options']['limit']||null:null,'include':_0x27c97b[_0xca62('0x20')]?_0x27c97b['options'][_0xca62('0x23')]?_[_0xca62('0x24')](_0x27c97b[_0xca62('0x20')][_0xca62('0x23')],function(_0x20e970){return{'model':db[_0x20e970[_0xca62('0x25')]],'as':_0x20e970['as'],'attributes':_0x20e970['attributes'],'include':_0x20e970['include']?_[_0xca62('0x24')](_0x20e970[_0xca62('0x23')],function(_0x53f5fb){return{'model':db[_0x53f5fb['model']],'as':_0x53f5fb['as'],'attributes':_0x53f5fb[_0xca62('0x22')],'include':_0x53f5fb['include']?_[_0xca62('0x24')](_0x53f5fb[_0xca62('0x23')],function(_0x1ed588){return{'model':db[_0x1ed588[_0xca62('0x25')]],'as':_0x1ed588['as'],'attributes':_0x1ed588[_0xca62('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4958d7){logger[_0xca62('0x14')](_0xca62('0x1d'),_0x27c97b);logger['debug'](_0xca62('0x1d'),_0x27c97b,JSON[_0xca62('0x18')](_0x4958d7));_0x94f92(_0x4958d7);})[_0xca62('0x1c')](function(_0xf58a90){logger[_0xca62('0x19')](_0xca62('0x1d'),_0xf58a90[_0xca62('0x1a')],_0x27c97b);_0x133132(_0x3e4465[_0xca62('0x19')](0x1f4,_0xf58a90[_0xca62('0x1a')]));});});};exports[_0xca62('0x26')]=function(_0x2de1e7){var _0x1fa7cd=this;return new Promise(function(_0x290736,_0x2cb805){return db[_0xca62('0x1e')][_0xca62('0x27')]({'raw':_0x2de1e7[_0xca62('0x20')]?_0x2de1e7[_0xca62('0x20')][_0xca62('0x1f')]===undefined?!![]:![]:!![],'where':_0x2de1e7[_0xca62('0x20')]?_0x2de1e7['options']['where']||null:null,'attributes':_0x2de1e7[_0xca62('0x20')]?_0x2de1e7[_0xca62('0x20')]['attributes']||null:null,'include':_0x2de1e7['options']?_0x2de1e7[_0xca62('0x20')][_0xca62('0x23')]?_[_0xca62('0x24')](_0x2de1e7[_0xca62('0x20')]['include'],function(_0x1d22ed){return{'model':db[_0x1d22ed[_0xca62('0x25')]],'as':_0x1d22ed['as'],'attributes':_0x1d22ed['attributes'],'include':_0x1d22ed['include']?_['map'](_0x1d22ed[_0xca62('0x23')],function(_0x5d2332){return{'model':db[_0x5d2332[_0xca62('0x25')]],'as':_0x5d2332['as'],'attributes':_0x5d2332[_0xca62('0x22')],'include':_0x5d2332[_0xca62('0x23')]?_[_0xca62('0x24')](_0x5d2332[_0xca62('0x23')],function(_0x14d0e3){return{'model':db[_0x14d0e3[_0xca62('0x25')]],'as':_0x14d0e3['as'],'attributes':_0x14d0e3['attributes']};}):[]};}):[]};}):[]:[]})[_0xca62('0x13')](function(_0x1c1d53){logger[_0xca62('0x14')](_0xca62('0x26'),_0x2de1e7);logger[_0xca62('0x17')](_0xca62('0x26'),_0x2de1e7,JSON[_0xca62('0x18')](_0x1c1d53));_0x290736(_0x1c1d53);})[_0xca62('0x1c')](function(_0x5629de){logger[_0xca62('0x19')](_0xca62('0x26'),_0x5629de['message'],_0x2de1e7);_0x2cb805(_0x1fa7cd['error'](0x1f4,_0x5629de[_0xca62('0x1a')]));});});};
\ No newline at end of file
+var _0x828f=['include','map','attributes','model','debug','ShowMailQueue','find','then','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./mailQueue.socket','register','info','MailQueue,\x20%s,\x20%s','request\x20sent','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetMailQueue','MailQueue','findAll','options','raw','where'];(function(_0x46284c,_0x4ddd51){var _0x3d25e7=function(_0x2597a1){while(--_0x2597a1){_0x46284c['push'](_0x46284c['shift']());}};_0x3d25e7(++_0x4ddd51);}(_0x828f,0xc1));var _0xf828=function(_0x1a0daa,_0x2a4634){_0x1a0daa=_0x1a0daa-0x0;var _0x1dbe15=_0x828f[_0x1a0daa];return _0x1dbe15;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xf828('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf828('0x1'));var db=require(_0xf828('0x2'))['db'];var utils=require(_0xf828('0x3'));var logger=require(_0xf828('0x4'))(_0xf828('0x5'));var config=require(_0xf828('0x6'));var jayson=require(_0xf828('0x7'));var client=jayson[_0xf828('0x8')]['http']({'port':0x232a});config[_0xf828('0x9')]=_[_0xf828('0xa')](config[_0xf828('0x9')],{'host':_0xf828('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf828('0xc'))[_0xf828('0xd')](socket);function respondWithRpcPromise(_0x368f1c,_0x1ef5b9,_0x4dd44d){return new BPromise(function(_0x2580ea,_0x130860){return client['request'](_0x368f1c,_0x4dd44d)['then'](function(_0x2328f2){logger[_0xf828('0xe')](_0xf828('0xf'),_0x1ef5b9,_0xf828('0x10'));logger['debug'](_0xf828('0x11'),_0x1ef5b9,'request\x20sent',JSON[_0xf828('0x12')](_0x2328f2));if(_0x2328f2['error']){if(_0x2328f2[_0xf828('0x13')][_0xf828('0x14')]===0x1f4){logger[_0xf828('0x13')](_0xf828('0xf'),_0x1ef5b9,_0x2328f2[_0xf828('0x13')][_0xf828('0x15')]);return _0x130860(_0x2328f2[_0xf828('0x13')][_0xf828('0x15')]);}logger[_0xf828('0x13')](_0xf828('0xf'),_0x1ef5b9,_0x2328f2[_0xf828('0x13')]['message']);return _0x2580ea(_0x2328f2[_0xf828('0x13')][_0xf828('0x15')]);}else{logger[_0xf828('0xe')]('MailQueue,\x20%s,\x20%s',_0x1ef5b9,_0xf828('0x10'));_0x2580ea(_0x2328f2['result'][_0xf828('0x15')]);}})[_0xf828('0x16')](function(_0x3f016e){logger[_0xf828('0x13')](_0xf828('0xf'),_0x1ef5b9,_0x3f016e);_0x130860(_0x3f016e);});});}exports[_0xf828('0x17')]=function(_0x20e4de){var _0x2a3046=this;return new Promise(function(_0xb66157,_0x10eb5b){return db[_0xf828('0x18')][_0xf828('0x19')]({'raw':_0x20e4de[_0xf828('0x1a')]?_0x20e4de[_0xf828('0x1a')][_0xf828('0x1b')]===undefined?!![]:![]:!![],'where':_0x20e4de[_0xf828('0x1a')]?_0x20e4de[_0xf828('0x1a')][_0xf828('0x1c')]||null:null,'attributes':_0x20e4de[_0xf828('0x1a')]?_0x20e4de[_0xf828('0x1a')]['attributes']||null:null,'limit':_0x20e4de[_0xf828('0x1a')]?_0x20e4de[_0xf828('0x1a')]['limit']||null:null,'include':_0x20e4de[_0xf828('0x1a')]?_0x20e4de[_0xf828('0x1a')][_0xf828('0x1d')]?_[_0xf828('0x1e')](_0x20e4de[_0xf828('0x1a')][_0xf828('0x1d')],function(_0x161f5a){return{'model':db[_0x161f5a['model']],'as':_0x161f5a['as'],'attributes':_0x161f5a[_0xf828('0x1f')],'include':_0x161f5a['include']?_[_0xf828('0x1e')](_0x161f5a[_0xf828('0x1d')],function(_0x4d49d4){return{'model':db[_0x4d49d4[_0xf828('0x20')]],'as':_0x4d49d4['as'],'attributes':_0x4d49d4[_0xf828('0x1f')],'include':_0x4d49d4['include']?_[_0xf828('0x1e')](_0x4d49d4['include'],function(_0x259758){return{'model':db[_0x259758[_0xf828('0x20')]],'as':_0x259758['as'],'attributes':_0x259758[_0xf828('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x48d9f1){logger[_0xf828('0xe')]('GetMailQueue',_0x20e4de);logger[_0xf828('0x21')](_0xf828('0x17'),_0x20e4de,JSON[_0xf828('0x12')](_0x48d9f1));_0xb66157(_0x48d9f1);})['catch'](function(_0x52089b){logger[_0xf828('0x13')](_0xf828('0x17'),_0x52089b['message'],_0x20e4de);_0x10eb5b(_0x2a3046[_0xf828('0x13')](0x1f4,_0x52089b[_0xf828('0x15')]));});});};exports[_0xf828('0x22')]=function(_0x5680e7){var _0x4959c6=this;return new Promise(function(_0x594b13,_0x5772ba){return db[_0xf828('0x18')][_0xf828('0x23')]({'raw':_0x5680e7['options']?_0x5680e7[_0xf828('0x1a')][_0xf828('0x1b')]===undefined?!![]:![]:!![],'where':_0x5680e7['options']?_0x5680e7[_0xf828('0x1a')][_0xf828('0x1c')]||null:null,'attributes':_0x5680e7['options']?_0x5680e7[_0xf828('0x1a')]['attributes']||null:null,'include':_0x5680e7[_0xf828('0x1a')]?_0x5680e7[_0xf828('0x1a')][_0xf828('0x1d')]?_[_0xf828('0x1e')](_0x5680e7[_0xf828('0x1a')][_0xf828('0x1d')],function(_0x18447e){return{'model':db[_0x18447e[_0xf828('0x20')]],'as':_0x18447e['as'],'attributes':_0x18447e['attributes'],'include':_0x18447e['include']?_[_0xf828('0x1e')](_0x18447e[_0xf828('0x1d')],function(_0x2bdd8c){return{'model':db[_0x2bdd8c[_0xf828('0x20')]],'as':_0x2bdd8c['as'],'attributes':_0x2bdd8c[_0xf828('0x1f')],'include':_0x2bdd8c[_0xf828('0x1d')]?_[_0xf828('0x1e')](_0x2bdd8c[_0xf828('0x1d')],function(_0x57d2c1){return{'model':db[_0x57d2c1[_0xf828('0x20')]],'as':_0x57d2c1['as'],'attributes':_0x57d2c1[_0xf828('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xf828('0x24')](function(_0x5564c5){logger[_0xf828('0xe')](_0xf828('0x22'),_0x5680e7);logger[_0xf828('0x21')](_0xf828('0x22'),_0x5680e7,JSON[_0xf828('0x12')](_0x5564c5));_0x594b13(_0x5564c5);})['catch'](function(_0x2d3aa7){logger[_0xf828('0x13')]('ShowMailQueue',_0x2d3aa7[_0xf828('0x15')],_0x5680e7);_0x5772ba(_0x4959c6[_0xf828('0x13')](0x1f4,_0x2d3aa7[_0xf828('0x15')]));});});};
\ No newline at end of file
index 976196d..5a0b5f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdeb7=['remove','update','removeListener','register','length'];(function(_0x247e52,_0xa1c169){var _0x46456b=function(_0x458f73){while(--_0x458f73){_0x247e52['push'](_0x247e52['shift']());}};_0x46456b(++_0xa1c169);}(_0xdeb7,0x82));var _0x7deb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdeb7[_0x3dd15e];return _0x231fd0;};'use strict';var MailQueueEvents=require('./mailQueue.events');var events=['save',_0x7deb('0x0'),_0x7deb('0x1')];function createListener(_0x1c4802,_0x4f1f20){return function(_0x2b2505){_0x4f1f20['emit'](_0x1c4802,_0x2b2505);};}function removeListener(_0x286855,_0x417c3c){return function(){MailQueueEvents[_0x7deb('0x2')](_0x286855,_0x417c3c);};}exports[_0x7deb('0x3')]=function(_0x15bb09){for(var _0x5ec230=0x0,_0x24a053=events[_0x7deb('0x4')];_0x5ec230<_0x24a053;_0x5ec230++){var _0x569f16=events[_0x5ec230];var _0xba3484=createListener('mailQueue:'+_0x569f16,_0x15bb09);MailQueueEvents['on'](_0x569f16,_0xba3484);}};
\ No newline at end of file
+var _0x276e=['remove','emit','removeListener','length','mailQueue:','./mailQueue.events','save'];(function(_0x458f49,_0x1a1af1){var _0x36e8c9=function(_0x1273cb){while(--_0x1273cb){_0x458f49['push'](_0x458f49['shift']());}};_0x36e8c9(++_0x1a1af1);}(_0x276e,0xec));var _0xe276=function(_0x3c97e3,_0x321677){_0x3c97e3=_0x3c97e3-0x0;var _0x9bb0ed=_0x276e[_0x3c97e3];return _0x9bb0ed;};'use strict';var MailQueueEvents=require(_0xe276('0x0'));var events=[_0xe276('0x1'),_0xe276('0x2'),'update'];function createListener(_0x4c7280,_0x222cf5){return function(_0x50c31b){_0x222cf5[_0xe276('0x3')](_0x4c7280,_0x50c31b);};}function removeListener(_0xc38c0f,_0x57ab21){return function(){MailQueueEvents[_0xe276('0x4')](_0xc38c0f,_0x57ab21);};}exports['register']=function(_0x572bea){for(var _0x216565=0x0,_0x40aa2a=events[_0xe276('0x5')];_0x216565<_0x40aa2a;_0x216565++){var _0x243fd6=events[_0x216565];var _0x5de3b8=createListener(_0xe276('0x6')+_0x243fd6,_0x572bea);MailQueueEvents['on'](_0x243fd6,_0x5de3b8);}};
\ No newline at end of file
index e7e7abc..7505a58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8aad=['update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailQueueReport.controller','get','isAuthenticated','index','/:id','show','post','create','put'];(function(_0x59feef,_0x537da5){var _0x22d23c=function(_0x5490fd){while(--_0x5490fd){_0x59feef['push'](_0x59feef['shift']());}};_0x22d23c(++_0x537da5);}(_0x8aad,0xea));var _0xd8aa=function(_0x4a8551,_0x1b80b0){_0x4a8551=_0x4a8551-0x0;var _0x38f693=_0x8aad[_0x4a8551];return _0x38f693;};'use strict';var multer=require(_0xd8aa('0x0'));var util=require(_0xd8aa('0x1'));var path=require(_0xd8aa('0x2'));var timeout=require(_0xd8aa('0x3'));var express=require(_0xd8aa('0x4'));var router=express[_0xd8aa('0x5')]();var fs_extra=require(_0xd8aa('0x6'));var auth=require(_0xd8aa('0x7'));var interaction=require(_0xd8aa('0x8'));var config=require('../../config/environment');var controller=require(_0xd8aa('0x9'));router[_0xd8aa('0xa')]('/',auth[_0xd8aa('0xb')](),controller[_0xd8aa('0xc')]);router[_0xd8aa('0xa')]('/describe',auth[_0xd8aa('0xb')](),controller['describe']);router[_0xd8aa('0xa')](_0xd8aa('0xd'),auth[_0xd8aa('0xb')](),controller[_0xd8aa('0xe')]);router[_0xd8aa('0xf')]('/',auth['isAuthenticated'](),controller[_0xd8aa('0x10')]);router[_0xd8aa('0x11')](_0xd8aa('0xd'),auth[_0xd8aa('0xb')](),controller[_0xd8aa('0x12')]);router[_0xd8aa('0x13')]('/:id',auth[_0xd8aa('0xb')](),controller[_0xd8aa('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xbc1f=['../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','create','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra'];(function(_0x301b48,_0x29ae1c){var _0x1bd0d3=function(_0x16e1a9){while(--_0x16e1a9){_0x301b48['push'](_0x301b48['shift']());}};_0x1bd0d3(++_0x29ae1c);}(_0xbc1f,0x9b));var _0xfbc1=function(_0x3f6395,_0x43f6f6){_0x3f6395=_0x3f6395-0x0;var _0x41fb2f=_0xbc1f[_0x3f6395];return _0x41fb2f;};'use strict';var multer=require(_0xfbc1('0x0'));var util=require(_0xfbc1('0x1'));var path=require(_0xfbc1('0x2'));var timeout=require('connect-timeout');var express=require(_0xfbc1('0x3'));var router=express[_0xfbc1('0x4')]();var fs_extra=require(_0xfbc1('0x5'));var auth=require(_0xfbc1('0x6'));var interaction=require(_0xfbc1('0x7'));var config=require(_0xfbc1('0x8'));var controller=require(_0xfbc1('0x9'));router['get']('/',auth[_0xfbc1('0xa')](),controller[_0xfbc1('0xb')]);router[_0xfbc1('0xc')](_0xfbc1('0xd'),auth[_0xfbc1('0xa')](),controller[_0xfbc1('0xe')]);router[_0xfbc1('0xc')](_0xfbc1('0xf'),auth['isAuthenticated'](),controller[_0xfbc1('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xfbc1('0x11')]);router[_0xfbc1('0x12')](_0xfbc1('0xf'),auth[_0xfbc1('0xa')](),controller[_0xfbc1('0x13')]);router[_0xfbc1('0x14')](_0xfbc1('0xf'),auth[_0xfbc1('0xa')](),controller[_0xfbc1('0x15')]);module[_0xfbc1('0x16')]=router;
\ No newline at end of file
index d4579d6..8982952 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7c6=['moment','sequelize','exports','STRING','DATE'];(function(_0x1348e5,_0x3ee15d){var _0x47933b=function(_0x2a9e73){while(--_0x2a9e73){_0x1348e5['push'](_0x1348e5['shift']());}};_0x47933b(++_0x3ee15d);}(_0xc7c6,0x14a));var _0x6c7c=function(_0x3bf771,_0x279ded){_0x3bf771=_0x3bf771-0x0;var _0x5d9012=_0xc7c6[_0x3bf771];return _0x5d9012;};'use strict';var moment=require(_0x6c7c('0x0'));var Sequelize=require(_0x6c7c('0x1'));module[_0x6c7c('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x6c7c('0x3')]},'joinAt':{'type':Sequelize[_0x6c7c('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x6c7c('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4b22=['STRING','DATE','moment','sequelize'];(function(_0x61b3ab,_0x1fc298){var _0x57097f=function(_0x25970b){while(--_0x25970b){_0x61b3ab['push'](_0x61b3ab['shift']());}};_0x57097f(++_0x1fc298);}(_0x4b22,0x166));var _0x24b2=function(_0x4355c9,_0xadbc7c){_0x4355c9=_0x4355c9-0x0;var _0x4b1de1=_0x4b22[_0x4355c9];return _0x4b1de1;};'use strict';var moment=require(_0x24b2('0x0'));var Sequelize=require(_0x24b2('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x24b2('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x24b2('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x24b2('0x3')]},'reason':{'type':Sequelize[_0x24b2('0x2')]}};
\ No newline at end of file
index 4515ffb..94b721d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e2e=['name','send','map','MailQueueReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','filter','options','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','create','body','update','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','then','destroy','stack'];(function(_0x25b924,_0x28e5f2){var _0x951ad4=function(_0x4164fb){while(--_0x4164fb){_0x25b924['push'](_0x25b924['shift']());}};_0x951ad4(++_0x28e5f2);}(_0x4e2e,0x1f2));var _0xe4e2=function(_0x118044,_0x3fec99){_0x118044=_0x118044-0x0;var _0x11fa8b=_0x4e2e[_0x118044];return _0x11fa8b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe4e2('0x0'));var zipdir=require(_0xe4e2('0x1'));var jsonpatch=require(_0xe4e2('0x2'));var rp=require(_0xe4e2('0x3'));var moment=require(_0xe4e2('0x4'));var BPromise=require(_0xe4e2('0x5'));var Mustache=require('mustache');var util=require(_0xe4e2('0x6'));var path=require(_0xe4e2('0x7'));var sox=require(_0xe4e2('0x8'));var csv=require(_0xe4e2('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe4e2('0xa'));var _=require(_0xe4e2('0xb'));var squel=require(_0xe4e2('0xc'));var crypto=require(_0xe4e2('0xd'));var jsforce=require(_0xe4e2('0xe'));var deskjs=require(_0xe4e2('0xf'));var toCsv=require(_0xe4e2('0x9'));var querystring=require(_0xe4e2('0x10'));var Papa=require('papaparse');var Redis=require(_0xe4e2('0x11'));var authService=require(_0xe4e2('0x12'));var qs=require(_0xe4e2('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe4e2('0x14'));var logger=require(_0xe4e2('0x15'))(_0xe4e2('0x16'));var utils=require(_0xe4e2('0x17'));var config=require(_0xe4e2('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xe4e2('0x19'))['db'];function respondWithStatusCode(_0x20d34e,_0x19c6ef){_0x19c6ef=_0x19c6ef||0xcc;return function(_0x13657c){if(_0x13657c){return _0x20d34e['sendStatus'](_0x19c6ef);}return _0x20d34e[_0xe4e2('0x1a')](_0x19c6ef)[_0xe4e2('0x1b')]();};}function respondWithResult(_0xb45217,_0x4e0bc2){_0x4e0bc2=_0x4e0bc2||0xc8;return function(_0x202486){if(_0x202486){return _0xb45217['status'](_0x4e0bc2)['json'](_0x202486);}};}function respondWithFilteredResult(_0x117a2a,_0x2d2018){return function(_0x1f9b2d){if(_0x1f9b2d){var _0x28ee12=typeof _0x2d2018[_0xe4e2('0x1c')]==='undefined'&&typeof _0x2d2018[_0xe4e2('0x1d')]===_0xe4e2('0x1e');var _0x340935=_0x1f9b2d['count'];var _0x196f16=_0x28ee12?0x0:_0x2d2018['offset'];var _0x1d5e9d=_0x28ee12?_0x1f9b2d[_0xe4e2('0x1f')]:_0x2d2018[_0xe4e2('0x1c')]+_0x2d2018[_0xe4e2('0x1d')];var _0x3dfbdf;if(_0x1d5e9d>=_0x340935){_0x1d5e9d=_0x340935;_0x3dfbdf=0xc8;}else{_0x3dfbdf=0xce;}_0x117a2a[_0xe4e2('0x1a')](_0x3dfbdf);return _0x117a2a[_0xe4e2('0x20')](_0xe4e2('0x21'),_0x196f16+'-'+_0x1d5e9d+'/'+_0x340935)[_0xe4e2('0x22')](_0x1f9b2d);}return null;};}function patchUpdates(_0x362741){return function(_0x5a84c5){try{jsonpatch[_0xe4e2('0x23')](_0x5a84c5,_0x362741,!![]);}catch(_0x2e7ecd){return BPromise[_0xe4e2('0x24')](_0x2e7ecd);}return _0x5a84c5[_0xe4e2('0x25')]();};}function saveUpdates(_0xbdf1ad,_0x23b466){return function(_0x16f14b){if(_0x16f14b){return _0x16f14b['update'](_0xbdf1ad)[_0xe4e2('0x26')](function(_0x2ab435){return _0x2ab435;});}return null;};}function removeEntity(_0x2088b9,_0x5373c0){return function(_0x353030){if(_0x353030){return _0x353030[_0xe4e2('0x27')]()['then'](function(){_0x2088b9[_0xe4e2('0x1a')](0xcc)[_0xe4e2('0x1b')]();});}};}function handleEntityNotFound(_0x29143c,_0x3f5265){return function(_0x249b7e){if(!_0x249b7e){_0x29143c['sendStatus'](0x194);}return _0x249b7e;};}function handleError(_0x166610,_0x357903){_0x357903=_0x357903||0x1f4;return function(_0x1f6d1f){logger['error'](_0x1f6d1f[_0xe4e2('0x28')]);if(_0x1f6d1f[_0xe4e2('0x29')]){delete _0x1f6d1f[_0xe4e2('0x29')];}_0x166610['status'](_0x357903)[_0xe4e2('0x2a')](_0x1f6d1f);};}exports['index']=function(_0x477b5c,_0x1e21c0){var _0x52c849={},_0x46926a={},_0x18e2e5={'count':0x0,'rows':[]};var _0x135116=_[_0xe4e2('0x2b')](db[_0xe4e2('0x2c')]['rawAttributes'],function(_0x5f30dc){return{'name':_0x5f30dc[_0xe4e2('0x2d')],'type':_0x5f30dc[_0xe4e2('0x2e')][_0xe4e2('0x2f')]};});_0x46926a[_0xe4e2('0x30')]=_[_0xe4e2('0x2b')](_0x135116,_0xe4e2('0x29'));_0x46926a[_0xe4e2('0x31')]=_[_0xe4e2('0x32')](_0x477b5c[_0xe4e2('0x31')]);_0x46926a[_0xe4e2('0x33')]=_[_0xe4e2('0x34')](_0x46926a[_0xe4e2('0x30')],_0x46926a['query']);_0x52c849[_0xe4e2('0x35')]=_[_0xe4e2('0x34')](_0x46926a[_0xe4e2('0x30')],qs[_0xe4e2('0x36')](_0x477b5c[_0xe4e2('0x31')][_0xe4e2('0x36')]));_0x52c849['attributes']=_0x52c849[_0xe4e2('0x35')][_0xe4e2('0x37')]?_0x52c849[_0xe4e2('0x35')]:_0x46926a[_0xe4e2('0x30')];if(!_0x477b5c[_0xe4e2('0x31')][_0xe4e2('0x38')](_0xe4e2('0x39'))){_0x52c849[_0xe4e2('0x1d')]=qs[_0xe4e2('0x1d')](_0x477b5c[_0xe4e2('0x31')][_0xe4e2('0x1d')]);_0x52c849['offset']=qs[_0xe4e2('0x1c')](_0x477b5c['query'][_0xe4e2('0x1c')]);}_0x52c849[_0xe4e2('0x3a')]=qs['sort'](_0x477b5c[_0xe4e2('0x31')][_0xe4e2('0x3b')]);_0x52c849[_0xe4e2('0x3c')]=qs[_0xe4e2('0x33')](_['pick'](_0x477b5c[_0xe4e2('0x31')],_0x46926a['filters']),_0x135116);if(_0x477b5c[_0xe4e2('0x31')]['filter']){_0x52c849[_0xe4e2('0x3c')]=_[_0xe4e2('0x3d')](_0x52c849[_0xe4e2('0x3c')],{'$or':_['map'](_0x135116,function(_0x2f5576){if(_0x2f5576[_0xe4e2('0x2e')]!=='VIRTUAL'){var _0x2b0f61={};_0x2b0f61[_0x2f5576[_0xe4e2('0x29')]]={'$like':'%'+_0x477b5c[_0xe4e2('0x31')][_0xe4e2('0x3e')]+'%'};return _0x2b0f61;}})});}_0x52c849=_[_0xe4e2('0x3d')]({},_0x52c849,_0x477b5c[_0xe4e2('0x3f')]);var _0x18fa94={'where':_0x52c849[_0xe4e2('0x3c')]};return db[_0xe4e2('0x2c')]['count'](_0x18fa94)['then'](function(_0xf4f15f){_0x18e2e5[_0xe4e2('0x1f')]=_0xf4f15f;if(_0x477b5c[_0xe4e2('0x31')][_0xe4e2('0x40')]){_0x52c849['include']=[{'all':!![]}];}return db['MailQueueReport'][_0xe4e2('0x41')](_0x52c849);})[_0xe4e2('0x26')](function(_0x3080d5){_0x18e2e5[_0xe4e2('0x42')]=_0x3080d5;return _0x18e2e5;})['then'](respondWithFilteredResult(_0x1e21c0,_0x52c849))[_0xe4e2('0x43')](handleError(_0x1e21c0,null));};exports[_0xe4e2('0x44')]=function(_0x385572,_0x577d4c){var _0x1b54f6={'raw':!![],'where':{'id':_0x385572[_0xe4e2('0x45')]['id']}},_0x4789cf={};_0x4789cf[_0xe4e2('0x30')]=_['keys'](db['MailQueueReport'][_0xe4e2('0x46')]);_0x4789cf[_0xe4e2('0x31')]=_[_0xe4e2('0x32')](_0x385572['query']);_0x4789cf[_0xe4e2('0x33')]=_[_0xe4e2('0x34')](_0x4789cf['model'],_0x4789cf[_0xe4e2('0x31')]);_0x1b54f6[_0xe4e2('0x35')]=_[_0xe4e2('0x34')](_0x4789cf[_0xe4e2('0x30')],qs[_0xe4e2('0x36')](_0x385572[_0xe4e2('0x31')][_0xe4e2('0x36')]));_0x1b54f6[_0xe4e2('0x35')]=_0x1b54f6['attributes'][_0xe4e2('0x37')]?_0x1b54f6[_0xe4e2('0x35')]:_0x4789cf['model'];if(_0x385572['query'][_0xe4e2('0x40')]){_0x1b54f6[_0xe4e2('0x47')]=[{'all':!![]}];}_0x1b54f6=_[_0xe4e2('0x3d')]({},_0x1b54f6,_0x385572['options']);return db[_0xe4e2('0x2c')][_0xe4e2('0x48')](_0x1b54f6)[_0xe4e2('0x26')](handleEntityNotFound(_0x577d4c,null))[_0xe4e2('0x26')](respondWithResult(_0x577d4c,null))['catch'](handleError(_0x577d4c,null));};exports[_0xe4e2('0x49')]=function(_0x918c17,_0x32a7c6){return db[_0xe4e2('0x2c')]['create'](_0x918c17[_0xe4e2('0x4a')],{})[_0xe4e2('0x26')](respondWithResult(_0x32a7c6,0xc9))['catch'](handleError(_0x32a7c6,null));};exports[_0xe4e2('0x4b')]=function(_0xedcd86,_0x21e5d7){if(_0xedcd86['body']['id']){delete _0xedcd86[_0xe4e2('0x4a')]['id'];}return db[_0xe4e2('0x2c')][_0xe4e2('0x48')]({'where':{'id':_0xedcd86['params']['id']}})['then'](handleEntityNotFound(_0x21e5d7,null))[_0xe4e2('0x26')](saveUpdates(_0xedcd86['body'],null))[_0xe4e2('0x26')](respondWithResult(_0x21e5d7,null))['catch'](handleError(_0x21e5d7,null));};exports[_0xe4e2('0x27')]=function(_0x2125df,_0x2a2e76){return db['MailQueueReport'][_0xe4e2('0x48')]({'where':{'id':_0x2125df['params']['id']}})[_0xe4e2('0x26')](handleEntityNotFound(_0x2a2e76,null))[_0xe4e2('0x26')](removeEntity(_0x2a2e76,null))['catch'](handleError(_0x2a2e76,null));};exports[_0xe4e2('0x4c')]=function(_0x582674,_0x169251){return db[_0xe4e2('0x2c')]['describe']()[_0xe4e2('0x26')](respondWithResult(_0x169251,null))[_0xe4e2('0x43')](handleError(_0x169251,null));};
\ No newline at end of file
+var _0x2272=['squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','MailQueueReport','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','VIRTUAL','filter','includeAll','include','findAll','show','params','merge','options','create','body','find','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash'];(function(_0x1de912,_0x332d99){var _0x10d7c2=function(_0xb4eedf){while(--_0xb4eedf){_0x1de912['push'](_0x1de912['shift']());}};_0x10d7c2(++_0x332d99);}(_0x2272,0xd8));var _0x2227=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x2272[_0x17d9e3];return _0x14192d;};'use strict';var emlformat=require(_0x2227('0x0'));var rimraf=require(_0x2227('0x1'));var zipdir=require(_0x2227('0x2'));var jsonpatch=require(_0x2227('0x3'));var rp=require(_0x2227('0x4'));var moment=require('moment');var BPromise=require(_0x2227('0x5'));var Mustache=require(_0x2227('0x6'));var util=require(_0x2227('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x2227('0x8'));var ejs=require(_0x2227('0x9'));var fs=require('fs');var fs_extra=require(_0x2227('0xa'));var _=require(_0x2227('0xb'));var squel=require(_0x2227('0xc'));var crypto=require(_0x2227('0xd'));var jsforce=require(_0x2227('0xe'));var deskjs=require(_0x2227('0xf'));var toCsv=require(_0x2227('0x8'));var querystring=require(_0x2227('0x10'));var Papa=require('papaparse');var Redis=require(_0x2227('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x2227('0x12'));var as=require(_0x2227('0x13'));var hardwareService=require(_0x2227('0x14'));var logger=require(_0x2227('0x15'))(_0x2227('0x16'));var utils=require('../../config/utils');var config=require(_0x2227('0x17'));var licenseUtil=require(_0x2227('0x18'));var db=require(_0x2227('0x19'))['db'];function respondWithStatusCode(_0x2e19fb,_0x125c3b){_0x125c3b=_0x125c3b||0xcc;return function(_0x18a2c0){if(_0x18a2c0){return _0x2e19fb['sendStatus'](_0x125c3b);}return _0x2e19fb['status'](_0x125c3b)['end']();};}function respondWithResult(_0x136f6b,_0x571dd1){_0x571dd1=_0x571dd1||0xc8;return function(_0x42f60b){if(_0x42f60b){return _0x136f6b[_0x2227('0x1a')](_0x571dd1)['json'](_0x42f60b);}};}function respondWithFilteredResult(_0x3da09c,_0x4fa23d){return function(_0x1df1ef){if(_0x1df1ef){var _0x43e174=typeof _0x4fa23d[_0x2227('0x1b')]===_0x2227('0x1c')&&typeof _0x4fa23d['limit']===_0x2227('0x1c');var _0x1cf016=_0x1df1ef[_0x2227('0x1d')];var _0x531f75=_0x43e174?0x0:_0x4fa23d[_0x2227('0x1b')];var _0x620012=_0x43e174?_0x1df1ef[_0x2227('0x1d')]:_0x4fa23d[_0x2227('0x1b')]+_0x4fa23d[_0x2227('0x1e')];var _0x28e642;if(_0x620012>=_0x1cf016){_0x620012=_0x1cf016;_0x28e642=0xc8;}else{_0x28e642=0xce;}_0x3da09c[_0x2227('0x1a')](_0x28e642);return _0x3da09c['set'](_0x2227('0x1f'),_0x531f75+'-'+_0x620012+'/'+_0x1cf016)['json'](_0x1df1ef);}return null;};}function patchUpdates(_0x2b26b7){return function(_0x3aed68){try{jsonpatch[_0x2227('0x20')](_0x3aed68,_0x2b26b7,!![]);}catch(_0x1f28ef){return BPromise[_0x2227('0x21')](_0x1f28ef);}return _0x3aed68[_0x2227('0x22')]();};}function saveUpdates(_0x19ab59,_0x10d9ca){return function(_0x3299fd){if(_0x3299fd){return _0x3299fd[_0x2227('0x23')](_0x19ab59)[_0x2227('0x24')](function(_0x5a454f){return _0x5a454f;});}return null;};}function removeEntity(_0x45def5,_0x42d500){return function(_0x5b3a09){if(_0x5b3a09){return _0x5b3a09[_0x2227('0x25')]()[_0x2227('0x24')](function(){_0x45def5['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x17c7a4,_0xa4d18b){return function(_0x35333f){if(!_0x35333f){_0x17c7a4[_0x2227('0x26')](0x194);}return _0x35333f;};}function handleError(_0x5be889,_0x191a3e){_0x191a3e=_0x191a3e||0x1f4;return function(_0x301304){logger[_0x2227('0x27')](_0x301304[_0x2227('0x28')]);if(_0x301304['name']){delete _0x301304[_0x2227('0x29')];}_0x5be889[_0x2227('0x1a')](_0x191a3e)[_0x2227('0x2a')](_0x301304);};}exports[_0x2227('0x2b')]=function(_0x1627d3,_0x4789eb){var _0x55015e={},_0x5d1d56={},_0x2dc38d={'count':0x0,'rows':[]};var _0x497f91=_[_0x2227('0x2c')](db[_0x2227('0x2d')]['rawAttributes'],function(_0x5916d4){return{'name':_0x5916d4[_0x2227('0x2e')],'type':_0x5916d4[_0x2227('0x2f')][_0x2227('0x30')]};});_0x5d1d56['model']=_[_0x2227('0x2c')](_0x497f91,'name');_0x5d1d56[_0x2227('0x31')]=_[_0x2227('0x32')](_0x1627d3[_0x2227('0x31')]);_0x5d1d56[_0x2227('0x33')]=_[_0x2227('0x34')](_0x5d1d56[_0x2227('0x35')],_0x5d1d56[_0x2227('0x31')]);_0x55015e[_0x2227('0x36')]=_[_0x2227('0x34')](_0x5d1d56[_0x2227('0x35')],qs[_0x2227('0x37')](_0x1627d3['query'][_0x2227('0x37')]));_0x55015e[_0x2227('0x36')]=_0x55015e[_0x2227('0x36')][_0x2227('0x38')]?_0x55015e['attributes']:_0x5d1d56[_0x2227('0x35')];if(!_0x1627d3[_0x2227('0x31')][_0x2227('0x39')](_0x2227('0x3a'))){_0x55015e['limit']=qs[_0x2227('0x1e')](_0x1627d3[_0x2227('0x31')][_0x2227('0x1e')]);_0x55015e['offset']=qs['offset'](_0x1627d3[_0x2227('0x31')][_0x2227('0x1b')]);}_0x55015e['order']=qs[_0x2227('0x3b')](_0x1627d3[_0x2227('0x31')]['sort']);_0x55015e[_0x2227('0x3c')]=qs['filters'](_[_0x2227('0x3d')](_0x1627d3[_0x2227('0x31')],_0x5d1d56[_0x2227('0x33')]),_0x497f91);if(_0x1627d3[_0x2227('0x31')]['filter']){_0x55015e[_0x2227('0x3c')]=_['merge'](_0x55015e[_0x2227('0x3c')],{'$or':_[_0x2227('0x2c')](_0x497f91,function(_0x5ef625){if(_0x5ef625['type']!==_0x2227('0x3e')){var _0x2b96b1={};_0x2b96b1[_0x5ef625[_0x2227('0x29')]]={'$like':'%'+_0x1627d3[_0x2227('0x31')][_0x2227('0x3f')]+'%'};return _0x2b96b1;}})});}_0x55015e=_['merge']({},_0x55015e,_0x1627d3['options']);var _0x2b1a8c={'where':_0x55015e['where']};return db[_0x2227('0x2d')][_0x2227('0x1d')](_0x2b1a8c)[_0x2227('0x24')](function(_0x3ae79a){_0x2dc38d[_0x2227('0x1d')]=_0x3ae79a;if(_0x1627d3[_0x2227('0x31')][_0x2227('0x40')]){_0x55015e[_0x2227('0x41')]=[{'all':!![]}];}return db['MailQueueReport'][_0x2227('0x42')](_0x55015e);})['then'](function(_0x3c67c6){_0x2dc38d['rows']=_0x3c67c6;return _0x2dc38d;})[_0x2227('0x24')](respondWithFilteredResult(_0x4789eb,_0x55015e))['catch'](handleError(_0x4789eb,null));};exports[_0x2227('0x43')]=function(_0x49239e,_0xf45d6b){var _0x307099={'raw':!![],'where':{'id':_0x49239e[_0x2227('0x44')]['id']}},_0x46eb0f={};_0x46eb0f[_0x2227('0x35')]=_[_0x2227('0x32')](db['MailQueueReport']['rawAttributes']);_0x46eb0f[_0x2227('0x31')]=_['keys'](_0x49239e[_0x2227('0x31')]);_0x46eb0f['filters']=_[_0x2227('0x34')](_0x46eb0f[_0x2227('0x35')],_0x46eb0f[_0x2227('0x31')]);_0x307099[_0x2227('0x36')]=_[_0x2227('0x34')](_0x46eb0f[_0x2227('0x35')],qs['fields'](_0x49239e[_0x2227('0x31')][_0x2227('0x37')]));_0x307099[_0x2227('0x36')]=_0x307099[_0x2227('0x36')][_0x2227('0x38')]?_0x307099[_0x2227('0x36')]:_0x46eb0f[_0x2227('0x35')];if(_0x49239e[_0x2227('0x31')]['includeAll']){_0x307099[_0x2227('0x41')]=[{'all':!![]}];}_0x307099=_[_0x2227('0x45')]({},_0x307099,_0x49239e[_0x2227('0x46')]);return db[_0x2227('0x2d')]['find'](_0x307099)[_0x2227('0x24')](handleEntityNotFound(_0xf45d6b,null))[_0x2227('0x24')](respondWithResult(_0xf45d6b,null))['catch'](handleError(_0xf45d6b,null));};exports[_0x2227('0x47')]=function(_0x475a1b,_0x1e4d8f){return db[_0x2227('0x2d')][_0x2227('0x47')](_0x475a1b[_0x2227('0x48')],{})[_0x2227('0x24')](respondWithResult(_0x1e4d8f,0xc9))['catch'](handleError(_0x1e4d8f,null));};exports[_0x2227('0x23')]=function(_0x3155dd,_0x482bf9){if(_0x3155dd[_0x2227('0x48')]['id']){delete _0x3155dd['body']['id'];}return db[_0x2227('0x2d')][_0x2227('0x49')]({'where':{'id':_0x3155dd[_0x2227('0x44')]['id']}})[_0x2227('0x24')](handleEntityNotFound(_0x482bf9,null))['then'](saveUpdates(_0x3155dd['body'],null))['then'](respondWithResult(_0x482bf9,null))[_0x2227('0x4a')](handleError(_0x482bf9,null));};exports[_0x2227('0x25')]=function(_0x5b0e5b,_0x3ab28b){return db[_0x2227('0x2d')][_0x2227('0x49')]({'where':{'id':_0x5b0e5b[_0x2227('0x44')]['id']}})['then'](handleEntityNotFound(_0x3ab28b,null))['then'](removeEntity(_0x3ab28b,null))[_0x2227('0x4a')](handleError(_0x3ab28b,null));};exports[_0x2227('0x4b')]=function(_0x225299,_0xc13872){return db['MailQueueReport'][_0x2227('0x4b')]()[_0x2227('0x24')](respondWithResult(_0xc13872,null))[_0x2227('0x4a')](handleError(_0xc13872,null));};
\ No newline at end of file
index 8effa65..f7aa608 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdb4=['path','rimraf','../../config/environment','./mailQueueReport.attributes','exports','MailQueueReport','report_mail_queue','uniqueid','../../config/logger','moment','bluebird','request-promise'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0xfdb4,0xf8));var _0x4fdb=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0xfdb4[_0x1969a7];return _0x3d665f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4fdb('0x0'))('api');var moment=require(_0x4fdb('0x1'));var BPromise=require(_0x4fdb('0x2'));var rp=require(_0x4fdb('0x3'));var fs=require('fs');var path=require(_0x4fdb('0x4'));var rimraf=require(_0x4fdb('0x5'));var config=require(_0x4fdb('0x6'));var attributes=require(_0x4fdb('0x7'));module[_0x4fdb('0x8')]=function(_0x27b7ea,_0x2436b4){return _0x27b7ea['define'](_0x4fdb('0x9'),attributes,{'tableName':_0x4fdb('0xa'),'paranoid':![],'indexes':[{'name':_0x4fdb('0xb'),'fields':[_0x4fdb('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x889e=['api','bluebird','request-promise','path','rimraf','../../config/environment','exports','MailQueueReport','report_mail_queue','lodash','util'];(function(_0x5453c5,_0x344b1d){var _0x4135e4=function(_0x174cd7){while(--_0x174cd7){_0x5453c5['push'](_0x5453c5['shift']());}};_0x4135e4(++_0x344b1d);}(_0x889e,0x77));var _0xe889=function(_0x433be8,_0x2e0800){_0x433be8=_0x433be8-0x0;var _0x1f2525=_0x889e[_0x433be8];return _0x1f2525;};'use strict';var _=require(_0xe889('0x0'));var util=require(_0xe889('0x1'));var logger=require('../../config/logger')(_0xe889('0x2'));var moment=require('moment');var BPromise=require(_0xe889('0x3'));var rp=require(_0xe889('0x4'));var fs=require('fs');var path=require(_0xe889('0x5'));var rimraf=require(_0xe889('0x6'));var config=require(_0xe889('0x7'));var attributes=require('./mailQueueReport.attributes');module[_0xe889('0x8')]=function(_0x2f7b58,_0x51a440){return _0x2f7b58['define'](_0xe889('0x9'),attributes,{'tableName':_0xe889('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 0aed46e..fd1f45a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['MailQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateMailQueueReport','create','options','raw','debug','MailQueueReport','body','attributes','limit','UpdateMailQueueReport','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x162d0b,_0x46b135){var _0x45114a=function(_0x17bb8d){while(--_0x17bb8d){_0x162d0b['push'](_0x162d0b['shift']());}};_0x45114a(++_0x46b135);}(_0xadb5,0xad));var _0x5adb=function(_0x12d3fb,_0x58519a){_0x12d3fb=_0x12d3fb-0x0;var _0x2c1c33=_0xadb5[_0x12d3fb];return _0x2c1c33;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('MailQueueReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}exports[_0x5adb('0x15')]=function(_0x529b65){var _0x3fff62=this;return new Promise(function(_0x5de028,_0x1d9e86){return db['MailQueueReport'][_0x5adb('0x16')](_0x529b65['body'],{'raw':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x18')]===undefined?!![]:![]:!![]})[_0x5adb('0xb')](function(_0x1fd4a7){logger[_0x5adb('0xc')]('CreateMailQueueReport',_0x529b65);logger[_0x5adb('0x19')]('CreateMailQueueReport',_0x529b65,JSON['stringify'](_0x1fd4a7));_0x5de028(_0x1fd4a7);})[_0x5adb('0x14')](function(_0x379b33){logger[_0x5adb('0x10')](_0x5adb('0x15'),_0x379b33[_0x5adb('0x12')],_0x529b65);_0x1d9e86(_0x3fff62[_0x5adb('0x10')](0x1f4,_0x379b33[_0x5adb('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x4b1957){var _0x373cc3=this;return new Promise(function(_0x3220cd,_0x3839fb){return db[_0x5adb('0x1a')]['update'](_0x4b1957[_0x5adb('0x1b')],{'raw':_0x4b1957[_0x5adb('0x17')]?_0x4b1957['options'][_0x5adb('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')]['where']||null:null,'attributes':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1c')]||null:null,'limit':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1d')]||null:null})['then'](function(_0x49992e){logger['info'](_0x5adb('0x1e'),_0x4b1957);logger[_0x5adb('0x19')](_0x5adb('0x1e'),_0x4b1957,JSON[_0x5adb('0xf')](_0x49992e));_0x3220cd(_0x49992e);})[_0x5adb('0x14')](function(_0x4de310){logger[_0x5adb('0x10')](_0x5adb('0x1e'),_0x4de310[_0x5adb('0x12')],_0x4b1957);_0x3839fb(_0x373cc3[_0x5adb('0x10')](0x1f4,_0x4de310[_0x5adb('0x12')]));});});};
\ No newline at end of file
+var _0xc4aa=['create','body','options','raw','update','where','attributes','limit','UpdateMailQueueReport','stringify','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','CreateMailQueueReport','MailQueueReport'];(function(_0x5216e9,_0x52fce6){var _0x17c5d7=function(_0x528da0){while(--_0x528da0){_0x5216e9['push'](_0x5216e9['shift']());}};_0x17c5d7(++_0x52fce6);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0xc4aa[_0x273c39];return _0x46d6b5;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}exports[_0xac4a('0x15')]=function(_0x28e304){var _0x44ec59=this;return new Promise(function(_0x546c5d,_0x5ac21e){return db[_0xac4a('0x16')][_0xac4a('0x17')](_0x28e304[_0xac4a('0x18')],{'raw':_0x28e304['options']?_0x28e304[_0xac4a('0x19')][_0xac4a('0x1a')]===undefined?!![]:![]:!![]})[_0xac4a('0xc')](function(_0x3a3cdb){logger[_0xac4a('0x13')](_0xac4a('0x15'),_0x28e304);logger[_0xac4a('0xf')](_0xac4a('0x15'),_0x28e304,JSON['stringify'](_0x3a3cdb));_0x546c5d(_0x3a3cdb);})[_0xac4a('0x14')](function(_0x3204ad){logger['error'](_0xac4a('0x15'),_0x3204ad[_0xac4a('0x12')],_0x28e304);_0x5ac21e(_0x44ec59[_0xac4a('0x10')](0x1f4,_0x3204ad[_0xac4a('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x1b7998){var _0x2503d8=this;return new Promise(function(_0x15435c,_0x412494){return db[_0xac4a('0x16')][_0xac4a('0x1b')](_0x1b7998[_0xac4a('0x18')],{'raw':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1c')]||null:null,'attributes':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1d')]||null:null,'limit':_0x1b7998['options']?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1e')]||null:null})[_0xac4a('0xc')](function(_0x2772fe){logger[_0xac4a('0x13')]('UpdateMailQueueReport',_0x1b7998);logger['debug'](_0xac4a('0x1f'),_0x1b7998,JSON[_0xac4a('0x20')](_0x2772fe));_0x15435c(_0x2772fe);})[_0xac4a('0x14')](function(_0x546b65){logger['error'](_0xac4a('0x1f'),_0x546b65[_0xac4a('0x12')],_0x1b7998);_0x412494(_0x2503d8[_0xac4a('0x10')](0x1f4,_0x546b65[_0xac4a('0x12')]));});});};
\ No newline at end of file
index bbbb386..6d1e260 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(_0x491cbe,_0x45c8ba){var _0x59449d=function(_0x21b463){while(--_0x21b463){_0x491cbe['push'](_0x491cbe['shift']());}};_0x59449d(++_0x45c8ba);}(_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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x3f1e52,_0x176277){var _0x268502=function(_0x3762d8){while(--_0x3762d8){_0x3f1e52['push'](_0x3f1e52['shift']());}};_0x268502(++_0x176277);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3e21f4,_0x43d310){_0x3e21f4=_0x3e21f4-0x0;var _0x40fc49=_0xcb91[_0x3e21f4];return _0x40fc49;};'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 35d79be..ee00c3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e81=['sequelize','exports','STRING','INTEGER','BOOLEAN','INBOX'];(function(_0x221b8c,_0x2c7afc){var _0x3fab9f=function(_0x28bab0){while(--_0x28bab0){_0x221b8c['push'](_0x221b8c['shift']());}};_0x3fab9f(++_0x2c7afc);}(_0x4e81,0x1bc));var _0x14e8=function(_0x2a8c21,_0x163576){_0x2a8c21=_0x2a8c21-0x0;var _0x5f3061=_0x4e81[_0x2a8c21];return _0x5f3061;};'use strict';var Sequelize=require(_0x14e8('0x0'));module[_0x14e8('0x1')]={'description':{'type':Sequelize[_0x14e8('0x2')]},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x14e8('0x2')]},'port':{'type':Sequelize[_0x14e8('0x3')]},'tls':{'type':Sequelize[_0x14e8('0x4')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x14e8('0x2')],'defaultValue':_0x14e8('0x5')},'connTimeout':{'type':Sequelize[_0x14e8('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x073e=['sequelize','exports','STRING','INTEGER','BOOLEAN'];(function(_0x13722d,_0x275f21){var _0x3362c4=function(_0x2dcd48){while(--_0x2dcd48){_0x13722d['push'](_0x13722d['shift']());}};_0x3362c4(++_0x275f21);}(_0x073e,0x181));var _0xe073=function(_0xbf4ddf,_0x66b3cb){_0xbf4ddf=_0xbf4ddf-0x0;var _0x3cb273=_0x073e[_0xbf4ddf];return _0x3cb273;};'use strict';var Sequelize=require(_0xe073('0x0'));module[_0xe073('0x1')]={'description':{'type':Sequelize[_0xe073('0x2')]},'host':{'type':Sequelize[_0xe073('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xe073('0x3')]},'tls':{'type':Sequelize[_0xe073('0x4')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xe073('0x2')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0xe073('0x2')]}};
\ No newline at end of file
index f86b35e..eb89558 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa054=['define','MailServerIn','mail_servers_in','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./mailServerIn.attributes','exports'];(function(_0xc72fdd,_0x3ee49a){var _0x643dea=function(_0x4034da){while(--_0x4034da){_0xc72fdd['push'](_0xc72fdd['shift']());}};_0x643dea(++_0x3ee49a);}(_0xa054,0x121));var _0x4a05=function(_0x28407a,_0x2a7269){_0x28407a=_0x28407a-0x0;var _0x8bd6ef=_0xa054[_0x28407a];return _0x8bd6ef;};'use strict';var _=require(_0x4a05('0x0'));var util=require(_0x4a05('0x1'));var logger=require(_0x4a05('0x2'))(_0x4a05('0x3'));var moment=require('moment');var BPromise=require(_0x4a05('0x4'));var rp=require(_0x4a05('0x5'));var fs=require('fs');var path=require(_0x4a05('0x6'));var rimraf=require(_0x4a05('0x7'));var config=require('../../config/environment');var attributes=require(_0x4a05('0x8'));module[_0x4a05('0x9')]=function(_0x472682,_0x324a2f){return _0x472682[_0x4a05('0xa')](_0x4a05('0xb'),attributes,{'tableName':_0x4a05('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7800=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','lodash','util','../../config/logger','api'];(function(_0x45f951,_0x2750c8){var _0x24756c=function(_0x31c931){while(--_0x31c931){_0x45f951['push'](_0x45f951['shift']());}};_0x24756c(++_0x2750c8);}(_0x7800,0xb2));var _0x0780=function(_0x1b1517,_0x5d2916){_0x1b1517=_0x1b1517-0x0;var _0x40f7c9=_0x7800[_0x1b1517];return _0x40f7c9;};'use strict';var _=require(_0x0780('0x0'));var util=require(_0x0780('0x1'));var logger=require(_0x0780('0x2'))(_0x0780('0x3'));var moment=require(_0x0780('0x4'));var BPromise=require(_0x0780('0x5'));var rp=require(_0x0780('0x6'));var fs=require('fs');var path=require(_0x0780('0x7'));var rimraf=require(_0x0780('0x8'));var config=require(_0x0780('0x9'));var attributes=require(_0x0780('0xa'));module[_0x0780('0xb')]=function(_0x1b16b0,_0x375e81){return _0x1b16b0[_0x0780('0xc')]('MailServerIn',attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 744a59a..2cf4f43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56e5=['map','model','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','error','message','catch','GetMailServerIn','MailServerIn','findAll','options','raw','where','attributes','include'];(function(_0x32938c,_0x1863c5){var _0x554e91=function(_0x4844f9){while(--_0x4844f9){_0x32938c['push'](_0x32938c['shift']());}};_0x554e91(++_0x1863c5);}(_0x56e5,0x18f));var _0x556e=function(_0x1e06d8,_0x11916d){_0x1e06d8=_0x1e06d8-0x0;var _0x224eb1=_0x56e5[_0x1e06d8];return _0x224eb1;};'use strict';var _=require(_0x556e('0x0'));var util=require(_0x556e('0x1'));var moment=require(_0x556e('0x2'));var BPromise=require(_0x556e('0x3'));var rs=require(_0x556e('0x4'));var fs=require('fs');var Redis=require(_0x556e('0x5'));var db=require(_0x556e('0x6'))['db'];var utils=require(_0x556e('0x7'));var logger=require(_0x556e('0x8'))('rpc');var config=require(_0x556e('0x9'));var jayson=require(_0x556e('0xa'));var client=jayson[_0x556e('0xb')][_0x556e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5a387b,_0x59bb72,_0x2b93bb){return new BPromise(function(_0x236500,_0x2691fd){return client['request'](_0x5a387b,_0x2b93bb)[_0x556e('0xd')](function(_0x121721){logger[_0x556e('0xe')](_0x556e('0xf'),_0x59bb72,_0x556e('0x10'));logger[_0x556e('0x11')](_0x556e('0x12'),_0x59bb72,_0x556e('0x10'),JSON['stringify'](_0x121721));if(_0x121721[_0x556e('0x13')]){if(_0x121721[_0x556e('0x13')]['code']===0x1f4){logger[_0x556e('0x13')](_0x556e('0xf'),_0x59bb72,_0x121721[_0x556e('0x13')][_0x556e('0x14')]);return _0x2691fd(_0x121721[_0x556e('0x13')][_0x556e('0x14')]);}logger[_0x556e('0x13')]('MailServerIn,\x20%s,\x20%s',_0x59bb72,_0x121721[_0x556e('0x13')][_0x556e('0x14')]);return _0x236500(_0x121721[_0x556e('0x13')][_0x556e('0x14')]);}else{logger[_0x556e('0xe')](_0x556e('0xf'),_0x59bb72,_0x556e('0x10'));_0x236500(_0x121721['result'][_0x556e('0x14')]);}})[_0x556e('0x15')](function(_0x366b9b){logger[_0x556e('0x13')](_0x556e('0xf'),_0x59bb72,_0x366b9b);_0x2691fd(_0x366b9b);});});}exports[_0x556e('0x16')]=function(_0x317739){var _0x452c81=this;return new Promise(function(_0x3a40ad,_0x28753e){return db[_0x556e('0x17')][_0x556e('0x18')]({'raw':_0x317739[_0x556e('0x19')]?_0x317739[_0x556e('0x19')][_0x556e('0x1a')]===undefined?!![]:![]:!![],'where':_0x317739[_0x556e('0x19')]?_0x317739[_0x556e('0x19')][_0x556e('0x1b')]||null:null,'attributes':_0x317739[_0x556e('0x19')]?_0x317739[_0x556e('0x19')][_0x556e('0x1c')]||null:null,'limit':_0x317739[_0x556e('0x19')]?_0x317739[_0x556e('0x19')]['limit']||null:null,'include':_0x317739[_0x556e('0x19')]?_0x317739[_0x556e('0x19')][_0x556e('0x1d')]?_[_0x556e('0x1e')](_0x317739['options'][_0x556e('0x1d')],function(_0xf72918){return{'model':db[_0xf72918['model']],'as':_0xf72918['as'],'attributes':_0xf72918[_0x556e('0x1c')],'include':_0xf72918[_0x556e('0x1d')]?_[_0x556e('0x1e')](_0xf72918['include'],function(_0x2ebc64){return{'model':db[_0x2ebc64[_0x556e('0x1f')]],'as':_0x2ebc64['as'],'attributes':_0x2ebc64[_0x556e('0x1c')],'include':_0x2ebc64[_0x556e('0x1d')]?_[_0x556e('0x1e')](_0x2ebc64[_0x556e('0x1d')],function(_0x161c8b){return{'model':db[_0x161c8b[_0x556e('0x1f')]],'as':_0x161c8b['as'],'attributes':_0x161c8b[_0x556e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x556e('0xd')](function(_0x4e4b81){logger[_0x556e('0xe')](_0x556e('0x16'),_0x317739);logger[_0x556e('0x11')](_0x556e('0x16'),_0x317739,JSON[_0x556e('0x20')](_0x4e4b81));_0x3a40ad(_0x4e4b81);})[_0x556e('0x15')](function(_0x4e8e53){logger[_0x556e('0x13')](_0x556e('0x16'),_0x4e8e53[_0x556e('0x14')],_0x317739);_0x28753e(_0x452c81[_0x556e('0x13')](0x1f4,_0x4e8e53['message']));});});};
\ No newline at end of file
+var _0x94dc=['attributes','limit','include','map','model','GetMailServerIn','stringify','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','findAll','options','raw','where'];(function(_0x8a969d,_0x339d9f){var _0x1d8dc7=function(_0x283ec0){while(--_0x283ec0){_0x8a969d['push'](_0x8a969d['shift']());}};_0x1d8dc7(++_0x339d9f);}(_0x94dc,0xb1));var _0xc94d=function(_0x1c41af,_0x36baf7){_0x1c41af=_0x1c41af-0x0;var _0x2f40a8=_0x94dc[_0x1c41af];return _0x2f40a8;};'use strict';var _=require(_0xc94d('0x0'));var util=require('util');var moment=require(_0xc94d('0x1'));var BPromise=require('bluebird');var rs=require(_0xc94d('0x2'));var fs=require('fs');var Redis=require(_0xc94d('0x3'));var db=require(_0xc94d('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xc94d('0x5'))(_0xc94d('0x6'));var config=require(_0xc94d('0x7'));var jayson=require(_0xc94d('0x8'));var client=jayson[_0xc94d('0x9')][_0xc94d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xb7275c,_0x5776ab,_0x2f9757){return new BPromise(function(_0xbe5904,_0x15265c){return client[_0xc94d('0xb')](_0xb7275c,_0x2f9757)[_0xc94d('0xc')](function(_0x579245){logger[_0xc94d('0xd')](_0xc94d('0xe'),_0x5776ab,_0xc94d('0xf'));logger[_0xc94d('0x10')](_0xc94d('0x11'),_0x5776ab,_0xc94d('0xf'),JSON['stringify'](_0x579245));if(_0x579245[_0xc94d('0x12')]){if(_0x579245[_0xc94d('0x12')][_0xc94d('0x13')]===0x1f4){logger[_0xc94d('0x12')]('MailServerIn,\x20%s,\x20%s',_0x5776ab,_0x579245['error']['message']);return _0x15265c(_0x579245[_0xc94d('0x12')][_0xc94d('0x14')]);}logger[_0xc94d('0x12')](_0xc94d('0xe'),_0x5776ab,_0x579245[_0xc94d('0x12')][_0xc94d('0x14')]);return _0xbe5904(_0x579245[_0xc94d('0x12')][_0xc94d('0x14')]);}else{logger[_0xc94d('0xd')](_0xc94d('0xe'),_0x5776ab,_0xc94d('0xf'));_0xbe5904(_0x579245[_0xc94d('0x15')][_0xc94d('0x14')]);}})[_0xc94d('0x16')](function(_0x19508d){logger['error']('MailServerIn,\x20%s,\x20%s',_0x5776ab,_0x19508d);_0x15265c(_0x19508d);});});}exports['GetMailServerIn']=function(_0x48b879){var _0x345259=this;return new Promise(function(_0x4784a2,_0x4f7287){return db['MailServerIn'][_0xc94d('0x17')]({'raw':_0x48b879[_0xc94d('0x18')]?_0x48b879['options'][_0xc94d('0x19')]===undefined?!![]:![]:!![],'where':_0x48b879[_0xc94d('0x18')]?_0x48b879[_0xc94d('0x18')][_0xc94d('0x1a')]||null:null,'attributes':_0x48b879[_0xc94d('0x18')]?_0x48b879[_0xc94d('0x18')][_0xc94d('0x1b')]||null:null,'limit':_0x48b879[_0xc94d('0x18')]?_0x48b879[_0xc94d('0x18')][_0xc94d('0x1c')]||null:null,'include':_0x48b879['options']?_0x48b879[_0xc94d('0x18')][_0xc94d('0x1d')]?_[_0xc94d('0x1e')](_0x48b879[_0xc94d('0x18')][_0xc94d('0x1d')],function(_0x557bfb){return{'model':db[_0x557bfb['model']],'as':_0x557bfb['as'],'attributes':_0x557bfb['attributes'],'include':_0x557bfb[_0xc94d('0x1d')]?_[_0xc94d('0x1e')](_0x557bfb[_0xc94d('0x1d')],function(_0x1de964){return{'model':db[_0x1de964['model']],'as':_0x1de964['as'],'attributes':_0x1de964['attributes'],'include':_0x1de964[_0xc94d('0x1d')]?_['map'](_0x1de964[_0xc94d('0x1d')],function(_0x362ff4){return{'model':db[_0x362ff4[_0xc94d('0x1f')]],'as':_0x362ff4['as'],'attributes':_0x362ff4['attributes']};}):[]};}):[]};}):[]:[]})[_0xc94d('0xc')](function(_0x196b59){logger[_0xc94d('0xd')](_0xc94d('0x20'),_0x48b879);logger[_0xc94d('0x10')]('GetMailServerIn',_0x48b879,JSON[_0xc94d('0x21')](_0x196b59));_0x4784a2(_0x196b59);})[_0xc94d('0x16')](function(_0x3a2342){logger[_0xc94d('0x12')](_0xc94d('0x20'),_0x3a2342['message'],_0x48b879);_0x4f7287(_0x345259[_0xc94d('0x12')](0x1f4,_0x3a2342[_0xc94d('0x14')]));});});};
\ No newline at end of file
index 13758eb..2525c03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x7a54,0x106));var _0x47a5=function(_0x16142e,_0x15f396){_0x16142e=_0x16142e-0x0;var _0x46f150=_0x7a54[_0x16142e];return _0x46f150;};'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
+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(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'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
index cd01820..bcc91f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9b1=['BOOLEAN','STRING','INTEGER'];(function(_0x14658b,_0x1490b9){var _0x58b38d=function(_0x5c8e9a){while(--_0x5c8e9a){_0x14658b['push'](_0x14658b['shift']());}};_0x58b38d(++_0x1490b9);}(_0xc9b1,0xb8));var _0x1c9b=function(_0x11b05a,_0x2bcc4a){_0x11b05a=_0x11b05a-0x0;var _0x1315a5=_0xc9b1[_0x11b05a];return _0x1315a5;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize[_0x1c9b('0x0')]},'host':{'type':Sequelize[_0x1c9b('0x0')]},'user':{'type':Sequelize[_0x1c9b('0x0')]},'pass':{'type':Sequelize[_0x1c9b('0x0')]},'port':{'type':Sequelize[_0x1c9b('0x1')]},'secure':{'type':Sequelize[_0x1c9b('0x2')],'defaultValue':![]},'service':{'type':Sequelize[_0x1c9b('0x0')]},'authentication':{'type':Sequelize[_0x1c9b('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x52c2=['exports','STRING','INTEGER','BOOLEAN','sequelize'];(function(_0x50aa2e,_0xfbd6f0){var _0x5e07f0=function(_0x3ed540){while(--_0x3ed540){_0x50aa2e['push'](_0x50aa2e['shift']());}};_0x5e07f0(++_0xfbd6f0);}(_0x52c2,0x1b2));var _0x252c=function(_0x266a85,_0x28d7c0){_0x266a85=_0x266a85-0x0;var _0x16e9e6=_0x52c2[_0x266a85];return _0x16e9e6;};'use strict';var Sequelize=require(_0x252c('0x0'));module[_0x252c('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x252c('0x2')]},'user':{'type':Sequelize[_0x252c('0x2')]},'pass':{'type':Sequelize[_0x252c('0x2')]},'port':{'type':Sequelize[_0x252c('0x3')]},'secure':{'type':Sequelize[_0x252c('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0x252c('0x2')]},'authentication':{'type':Sequelize[_0x252c('0x4')],'defaultValue':!![]}};
\ No newline at end of file
index e36e814..d1b304e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e1d=['filters','intersection','attributes','fields','length','nolimit','offset','order','sort','where','pick','merge','VIRTUAL','filter','options','MailServerOut','includeAll','include','findAll','catch','show','params','rawAttributes','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','sox','to-csv','fs-extra','lodash','squel','papaparse','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','limit','undefined','count','set','Content-Range','apply','reject','update','then','error','stack','name','send','index','fieldName','type','key','model','map','query','keys'];(function(_0x2bfc60,_0xa254ab){var _0x44ea2c=function(_0x57ca7a){while(--_0x57ca7a){_0x2bfc60['push'](_0x2bfc60['shift']());}};_0x44ea2c(++_0xa254ab);}(_0x2e1d,0xb1));var _0xd2e1=function(_0x385c76,_0xb97335){_0x385c76=_0x385c76-0x0;var _0x5c8367=_0x2e1d[_0x385c76];return _0x5c8367;};'use strict';var emlformat=require(_0xd2e1('0x0'));var rimraf=require(_0xd2e1('0x1'));var zipdir=require(_0xd2e1('0x2'));var jsonpatch=require(_0xd2e1('0x3'));var rp=require(_0xd2e1('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xd2e1('0x5'));var util=require(_0xd2e1('0x6'));var path=require('path');var sox=require(_0xd2e1('0x7'));var csv=require(_0xd2e1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd2e1('0x9'));var _=require(_0xd2e1('0xa'));var squel=require(_0xd2e1('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd2e1('0xc'));var Redis=require(_0xd2e1('0xd'));var authService=require(_0xd2e1('0xe'));var qs=require(_0xd2e1('0xf'));var as=require(_0xd2e1('0x10'));var hardwareService=require(_0xd2e1('0x11'));var logger=require(_0xd2e1('0x12'))(_0xd2e1('0x13'));var utils=require(_0xd2e1('0x14'));var config=require(_0xd2e1('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xd2e1('0x16'))['db'];function respondWithStatusCode(_0x2fbdb4,_0x2f21bd){_0x2f21bd=_0x2f21bd||0xcc;return function(_0x1804cf){if(_0x1804cf){return _0x2fbdb4[_0xd2e1('0x17')](_0x2f21bd);}return _0x2fbdb4[_0xd2e1('0x18')](_0x2f21bd)[_0xd2e1('0x19')]();};}function respondWithResult(_0x42b5eb,_0x166b64){_0x166b64=_0x166b64||0xc8;return function(_0x1a1957){if(_0x1a1957){return _0x42b5eb[_0xd2e1('0x18')](_0x166b64)[_0xd2e1('0x1a')](_0x1a1957);}};}function respondWithFilteredResult(_0x360fc0,_0x5616f8){return function(_0x37472f){if(_0x37472f){var _0x5bd8fb=typeof _0x5616f8['offset']==='undefined'&&typeof _0x5616f8[_0xd2e1('0x1b')]===_0xd2e1('0x1c');var _0x27d903=_0x37472f[_0xd2e1('0x1d')];var _0x4648a1=_0x5bd8fb?0x0:_0x5616f8['offset'];var _0x533182=_0x5bd8fb?_0x37472f['count']:_0x5616f8['offset']+_0x5616f8['limit'];var _0x3b4d8f;if(_0x533182>=_0x27d903){_0x533182=_0x27d903;_0x3b4d8f=0xc8;}else{_0x3b4d8f=0xce;}_0x360fc0['status'](_0x3b4d8f);return _0x360fc0[_0xd2e1('0x1e')](_0xd2e1('0x1f'),_0x4648a1+'-'+_0x533182+'/'+_0x27d903)[_0xd2e1('0x1a')](_0x37472f);}return null;};}function patchUpdates(_0x56bb5c){return function(_0x54b82a){try{jsonpatch[_0xd2e1('0x20')](_0x54b82a,_0x56bb5c,!![]);}catch(_0x5634de){return BPromise[_0xd2e1('0x21')](_0x5634de);}return _0x54b82a['save']();};}function saveUpdates(_0x44361c,_0x4aec83){return function(_0x72bf79){if(_0x72bf79){return _0x72bf79[_0xd2e1('0x22')](_0x44361c)['then'](function(_0x44b41c){return _0x44b41c;});}return null;};}function removeEntity(_0x24c10f,_0x12c86f){return function(_0x1b1583){if(_0x1b1583){return _0x1b1583['destroy']()[_0xd2e1('0x23')](function(){_0x24c10f[_0xd2e1('0x18')](0xcc)[_0xd2e1('0x19')]();});}};}function handleEntityNotFound(_0x54d9f3,_0x3fa724){return function(_0xae51f0){if(!_0xae51f0){_0x54d9f3['sendStatus'](0x194);}return _0xae51f0;};}function handleError(_0x100743,_0x2f16fa){_0x2f16fa=_0x2f16fa||0x1f4;return function(_0x480489){logger[_0xd2e1('0x24')](_0x480489[_0xd2e1('0x25')]);if(_0x480489['name']){delete _0x480489[_0xd2e1('0x26')];}_0x100743[_0xd2e1('0x18')](_0x2f16fa)[_0xd2e1('0x27')](_0x480489);};}exports[_0xd2e1('0x28')]=function(_0x58d964,_0x3cc6a2){var _0x3355c3={},_0x2a3a66={},_0x2f7873={'count':0x0,'rows':[]};var _0xfd2bd=_['map'](db['MailServerOut']['rawAttributes'],function(_0x55d8fc){return{'name':_0x55d8fc[_0xd2e1('0x29')],'type':_0x55d8fc[_0xd2e1('0x2a')][_0xd2e1('0x2b')]};});_0x2a3a66[_0xd2e1('0x2c')]=_[_0xd2e1('0x2d')](_0xfd2bd,_0xd2e1('0x26'));_0x2a3a66[_0xd2e1('0x2e')]=_[_0xd2e1('0x2f')](_0x58d964[_0xd2e1('0x2e')]);_0x2a3a66[_0xd2e1('0x30')]=_[_0xd2e1('0x31')](_0x2a3a66[_0xd2e1('0x2c')],_0x2a3a66['query']);_0x3355c3[_0xd2e1('0x32')]=_[_0xd2e1('0x31')](_0x2a3a66[_0xd2e1('0x2c')],qs[_0xd2e1('0x33')](_0x58d964[_0xd2e1('0x2e')][_0xd2e1('0x33')]));_0x3355c3[_0xd2e1('0x32')]=_0x3355c3['attributes'][_0xd2e1('0x34')]?_0x3355c3[_0xd2e1('0x32')]:_0x2a3a66['model'];if(!_0x58d964[_0xd2e1('0x2e')]['hasOwnProperty'](_0xd2e1('0x35'))){_0x3355c3[_0xd2e1('0x1b')]=qs['limit'](_0x58d964['query']['limit']);_0x3355c3[_0xd2e1('0x36')]=qs[_0xd2e1('0x36')](_0x58d964['query'][_0xd2e1('0x36')]);}_0x3355c3[_0xd2e1('0x37')]=qs['sort'](_0x58d964[_0xd2e1('0x2e')][_0xd2e1('0x38')]);_0x3355c3[_0xd2e1('0x39')]=qs['filters'](_[_0xd2e1('0x3a')](_0x58d964[_0xd2e1('0x2e')],_0x2a3a66[_0xd2e1('0x30')]),_0xfd2bd);if(_0x58d964['query']['filter']){_0x3355c3[_0xd2e1('0x39')]=_[_0xd2e1('0x3b')](_0x3355c3[_0xd2e1('0x39')],{'$or':_[_0xd2e1('0x2d')](_0xfd2bd,function(_0x5b039e){if(_0x5b039e[_0xd2e1('0x2a')]!==_0xd2e1('0x3c')){var _0x46150b={};_0x46150b[_0x5b039e[_0xd2e1('0x26')]]={'$like':'%'+_0x58d964['query'][_0xd2e1('0x3d')]+'%'};return _0x46150b;}})});}_0x3355c3=_[_0xd2e1('0x3b')]({},_0x3355c3,_0x58d964[_0xd2e1('0x3e')]);var _0x44c396={'where':_0x3355c3[_0xd2e1('0x39')]};return db[_0xd2e1('0x3f')][_0xd2e1('0x1d')](_0x44c396)[_0xd2e1('0x23')](function(_0x50396c){_0x2f7873['count']=_0x50396c;if(_0x58d964[_0xd2e1('0x2e')][_0xd2e1('0x40')]){_0x3355c3[_0xd2e1('0x41')]=[{'all':!![]}];}return db['MailServerOut'][_0xd2e1('0x42')](_0x3355c3);})[_0xd2e1('0x23')](function(_0x452b58){_0x2f7873['rows']=_0x452b58;return _0x2f7873;})['then'](respondWithFilteredResult(_0x3cc6a2,_0x3355c3))[_0xd2e1('0x43')](handleError(_0x3cc6a2,null));};exports[_0xd2e1('0x44')]=function(_0x1a7fef,_0x3f3e8f){var _0x293814={'raw':!![],'where':{'id':_0x1a7fef[_0xd2e1('0x45')]['id']}},_0x384360={};_0x384360[_0xd2e1('0x2c')]=_['keys'](db[_0xd2e1('0x3f')][_0xd2e1('0x46')]);_0x384360[_0xd2e1('0x2e')]=_[_0xd2e1('0x2f')](_0x1a7fef[_0xd2e1('0x2e')]);_0x384360[_0xd2e1('0x30')]=_[_0xd2e1('0x31')](_0x384360[_0xd2e1('0x2c')],_0x384360[_0xd2e1('0x2e')]);_0x293814[_0xd2e1('0x32')]=_[_0xd2e1('0x31')](_0x384360[_0xd2e1('0x2c')],qs[_0xd2e1('0x33')](_0x1a7fef[_0xd2e1('0x2e')][_0xd2e1('0x33')]));_0x293814[_0xd2e1('0x32')]=_0x293814[_0xd2e1('0x32')][_0xd2e1('0x34')]?_0x293814[_0xd2e1('0x32')]:_0x384360['model'];if(_0x1a7fef['query'][_0xd2e1('0x40')]){_0x293814[_0xd2e1('0x41')]=[{'all':!![]}];}_0x293814=_[_0xd2e1('0x3b')]({},_0x293814,_0x1a7fef[_0xd2e1('0x3e')]);return db[_0xd2e1('0x3f')][_0xd2e1('0x47')](_0x293814)[_0xd2e1('0x23')](handleEntityNotFound(_0x3f3e8f,null))[_0xd2e1('0x23')](respondWithResult(_0x3f3e8f,null))['catch'](handleError(_0x3f3e8f,null));};exports[_0xd2e1('0x48')]=function(_0x51a12e,_0x1cc3b4){return db[_0xd2e1('0x3f')]['create'](_0x51a12e[_0xd2e1('0x49')],{})[_0xd2e1('0x23')](respondWithResult(_0x1cc3b4,0xc9))[_0xd2e1('0x43')](handleError(_0x1cc3b4,null));};exports[_0xd2e1('0x22')]=function(_0x760f1a,_0x30721c){if(_0x760f1a[_0xd2e1('0x49')]['id']){delete _0x760f1a['body']['id'];}return db[_0xd2e1('0x3f')][_0xd2e1('0x47')]({'where':{'id':_0x760f1a[_0xd2e1('0x45')]['id']}})[_0xd2e1('0x23')](handleEntityNotFound(_0x30721c,null))[_0xd2e1('0x23')](saveUpdates(_0x760f1a[_0xd2e1('0x49')],null))[_0xd2e1('0x23')](respondWithResult(_0x30721c,null))[_0xd2e1('0x43')](handleError(_0x30721c,null));};exports[_0xd2e1('0x4a')]=function(_0x32145e,_0x47a195){return db[_0xd2e1('0x3f')][_0xd2e1('0x47')]({'where':{'id':_0x32145e[_0xd2e1('0x45')]['id']}})['then'](handleEntityNotFound(_0x47a195,null))[_0xd2e1('0x23')](removeEntity(_0x47a195,null))['catch'](handleError(_0x47a195,null));};
\ No newline at end of file
+var _0x9312=['lodash','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','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','MailServerOut','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','params','rawAttributes','find','catch','create','body','rimraf','zip-dir','fast-json-patch','moment','bluebird','to-csv'];(function(_0x315aea,_0x318a80){var _0x4a4bdb=function(_0x7c049c){while(--_0x7c049c){_0x315aea['push'](_0x315aea['shift']());}};_0x4a4bdb(++_0x318a80);}(_0x9312,0x90));var _0x2931=function(_0x21353c,_0x2ea587){_0x21353c=_0x21353c-0x0;var _0xa99120=_0x9312[_0x21353c];return _0xa99120;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2931('0x0'));var zipdir=require(_0x2931('0x1'));var jsonpatch=require(_0x2931('0x2'));var rp=require('request-promise');var moment=require(_0x2931('0x3'));var BPromise=require(_0x2931('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x2931('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2931('0x6'));var squel=require(_0x2931('0x7'));var crypto=require(_0x2931('0x8'));var jsforce=require(_0x2931('0x9'));var deskjs=require(_0x2931('0xa'));var toCsv=require(_0x2931('0x5'));var querystring=require('querystring');var Papa=require(_0x2931('0xb'));var Redis=require(_0x2931('0xc'));var authService=require(_0x2931('0xd'));var qs=require(_0x2931('0xe'));var as=require(_0x2931('0xf'));var hardwareService=require(_0x2931('0x10'));var logger=require(_0x2931('0x11'))(_0x2931('0x12'));var utils=require('../../config/utils');var config=require(_0x2931('0x13'));var licenseUtil=require(_0x2931('0x14'));var db=require(_0x2931('0x15'))['db'];function respondWithStatusCode(_0x39ae85,_0x47215e){_0x47215e=_0x47215e||0xcc;return function(_0x344967){if(_0x344967){return _0x39ae85[_0x2931('0x16')](_0x47215e);}return _0x39ae85[_0x2931('0x17')](_0x47215e)[_0x2931('0x18')]();};}function respondWithResult(_0x3d94c4,_0x2a0788){_0x2a0788=_0x2a0788||0xc8;return function(_0x13fb50){if(_0x13fb50){return _0x3d94c4[_0x2931('0x17')](_0x2a0788)['json'](_0x13fb50);}};}function respondWithFilteredResult(_0x392030,_0xe7657){return function(_0x1d5807){if(_0x1d5807){var _0x21bdd7=typeof _0xe7657['offset']===_0x2931('0x19')&&typeof _0xe7657['limit']==='undefined';var _0x3a73a3=_0x1d5807[_0x2931('0x1a')];var _0x38bcb9=_0x21bdd7?0x0:_0xe7657[_0x2931('0x1b')];var _0x4dbe09=_0x21bdd7?_0x1d5807[_0x2931('0x1a')]:_0xe7657[_0x2931('0x1b')]+_0xe7657[_0x2931('0x1c')];var _0x18d6e7;if(_0x4dbe09>=_0x3a73a3){_0x4dbe09=_0x3a73a3;_0x18d6e7=0xc8;}else{_0x18d6e7=0xce;}_0x392030[_0x2931('0x17')](_0x18d6e7);return _0x392030[_0x2931('0x1d')](_0x2931('0x1e'),_0x38bcb9+'-'+_0x4dbe09+'/'+_0x3a73a3)[_0x2931('0x1f')](_0x1d5807);}return null;};}function patchUpdates(_0x2cfdad){return function(_0xfcea49){try{jsonpatch[_0x2931('0x20')](_0xfcea49,_0x2cfdad,!![]);}catch(_0x41f9c2){return BPromise[_0x2931('0x21')](_0x41f9c2);}return _0xfcea49[_0x2931('0x22')]();};}function saveUpdates(_0x3bc20f,_0x428b9e){return function(_0x2c9105){if(_0x2c9105){return _0x2c9105[_0x2931('0x23')](_0x3bc20f)[_0x2931('0x24')](function(_0x570e0f){return _0x570e0f;});}return null;};}function removeEntity(_0x257b24,_0xda14c9){return function(_0x1ee0c3){if(_0x1ee0c3){return _0x1ee0c3[_0x2931('0x25')]()['then'](function(){_0x257b24[_0x2931('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x232aa9,_0x32105c){return function(_0x3b2da6){if(!_0x3b2da6){_0x232aa9[_0x2931('0x16')](0x194);}return _0x3b2da6;};}function handleError(_0x513f64,_0x227f4d){_0x227f4d=_0x227f4d||0x1f4;return function(_0x321730){logger[_0x2931('0x26')](_0x321730[_0x2931('0x27')]);if(_0x321730['name']){delete _0x321730[_0x2931('0x28')];}_0x513f64['status'](_0x227f4d)[_0x2931('0x29')](_0x321730);};}exports[_0x2931('0x2a')]=function(_0x3b57cc,_0x50fc36){var _0x147dc9={},_0x297fc1={},_0x6f48b1={'count':0x0,'rows':[]};var _0x2ac68e=_[_0x2931('0x2b')](db[_0x2931('0x2c')]['rawAttributes'],function(_0x55ba94){return{'name':_0x55ba94[_0x2931('0x2d')],'type':_0x55ba94[_0x2931('0x2e')][_0x2931('0x2f')]};});_0x297fc1[_0x2931('0x30')]=_[_0x2931('0x2b')](_0x2ac68e,_0x2931('0x28'));_0x297fc1[_0x2931('0x31')]=_[_0x2931('0x32')](_0x3b57cc[_0x2931('0x31')]);_0x297fc1[_0x2931('0x33')]=_[_0x2931('0x34')](_0x297fc1[_0x2931('0x30')],_0x297fc1['query']);_0x147dc9[_0x2931('0x35')]=_['intersection'](_0x297fc1['model'],qs[_0x2931('0x36')](_0x3b57cc[_0x2931('0x31')][_0x2931('0x36')]));_0x147dc9[_0x2931('0x35')]=_0x147dc9[_0x2931('0x35')][_0x2931('0x37')]?_0x147dc9[_0x2931('0x35')]:_0x297fc1[_0x2931('0x30')];if(!_0x3b57cc[_0x2931('0x31')][_0x2931('0x38')](_0x2931('0x39'))){_0x147dc9[_0x2931('0x1c')]=qs[_0x2931('0x1c')](_0x3b57cc[_0x2931('0x31')]['limit']);_0x147dc9[_0x2931('0x1b')]=qs[_0x2931('0x1b')](_0x3b57cc['query'][_0x2931('0x1b')]);}_0x147dc9[_0x2931('0x3a')]=qs[_0x2931('0x3b')](_0x3b57cc[_0x2931('0x31')][_0x2931('0x3b')]);_0x147dc9[_0x2931('0x3c')]=qs[_0x2931('0x33')](_[_0x2931('0x3d')](_0x3b57cc[_0x2931('0x31')],_0x297fc1[_0x2931('0x33')]),_0x2ac68e);if(_0x3b57cc[_0x2931('0x31')][_0x2931('0x3e')]){_0x147dc9[_0x2931('0x3c')]=_['merge'](_0x147dc9[_0x2931('0x3c')],{'$or':_[_0x2931('0x2b')](_0x2ac68e,function(_0x249346){if(_0x249346[_0x2931('0x2e')]!==_0x2931('0x3f')){var _0x48903d={};_0x48903d[_0x249346[_0x2931('0x28')]]={'$like':'%'+_0x3b57cc[_0x2931('0x31')][_0x2931('0x3e')]+'%'};return _0x48903d;}})});}_0x147dc9=_[_0x2931('0x40')]({},_0x147dc9,_0x3b57cc['options']);var _0x498a52={'where':_0x147dc9['where']};return db[_0x2931('0x2c')][_0x2931('0x1a')](_0x498a52)[_0x2931('0x24')](function(_0x40d3f2){_0x6f48b1['count']=_0x40d3f2;if(_0x3b57cc['query'][_0x2931('0x41')]){_0x147dc9[_0x2931('0x42')]=[{'all':!![]}];}return db[_0x2931('0x2c')][_0x2931('0x43')](_0x147dc9);})[_0x2931('0x24')](function(_0xa0eaa8){_0x6f48b1[_0x2931('0x44')]=_0xa0eaa8;return _0x6f48b1;})[_0x2931('0x24')](respondWithFilteredResult(_0x50fc36,_0x147dc9))['catch'](handleError(_0x50fc36,null));};exports['show']=function(_0xf4fb49,_0x4457ec){var _0x5addd9={'raw':!![],'where':{'id':_0xf4fb49[_0x2931('0x45')]['id']}},_0x588a52={};_0x588a52['model']=_[_0x2931('0x32')](db['MailServerOut'][_0x2931('0x46')]);_0x588a52[_0x2931('0x31')]=_[_0x2931('0x32')](_0xf4fb49['query']);_0x588a52[_0x2931('0x33')]=_[_0x2931('0x34')](_0x588a52['model'],_0x588a52['query']);_0x5addd9[_0x2931('0x35')]=_[_0x2931('0x34')](_0x588a52['model'],qs[_0x2931('0x36')](_0xf4fb49[_0x2931('0x31')]['fields']));_0x5addd9['attributes']=_0x5addd9['attributes'][_0x2931('0x37')]?_0x5addd9[_0x2931('0x35')]:_0x588a52[_0x2931('0x30')];if(_0xf4fb49[_0x2931('0x31')][_0x2931('0x41')]){_0x5addd9[_0x2931('0x42')]=[{'all':!![]}];}_0x5addd9=_[_0x2931('0x40')]({},_0x5addd9,_0xf4fb49['options']);return db[_0x2931('0x2c')][_0x2931('0x47')](_0x5addd9)['then'](handleEntityNotFound(_0x4457ec,null))[_0x2931('0x24')](respondWithResult(_0x4457ec,null))[_0x2931('0x48')](handleError(_0x4457ec,null));};exports['create']=function(_0x135d47,_0x36b46e){return db[_0x2931('0x2c')][_0x2931('0x49')](_0x135d47[_0x2931('0x4a')],{})[_0x2931('0x24')](respondWithResult(_0x36b46e,0xc9))['catch'](handleError(_0x36b46e,null));};exports[_0x2931('0x23')]=function(_0x53fe42,_0x3e6475){if(_0x53fe42[_0x2931('0x4a')]['id']){delete _0x53fe42[_0x2931('0x4a')]['id'];}return db[_0x2931('0x2c')][_0x2931('0x47')]({'where':{'id':_0x53fe42[_0x2931('0x45')]['id']}})[_0x2931('0x24')](handleEntityNotFound(_0x3e6475,null))[_0x2931('0x24')](saveUpdates(_0x53fe42[_0x2931('0x4a')],null))[_0x2931('0x24')](respondWithResult(_0x3e6475,null))[_0x2931('0x48')](handleError(_0x3e6475,null));};exports['destroy']=function(_0x594496,_0x8375f0){return db['MailServerOut']['find']({'where':{'id':_0x594496[_0x2931('0x45')]['id']}})[_0x2931('0x24')](handleEntityNotFound(_0x8375f0,null))['then'](removeEntity(_0x8375f0,null))[_0x2931('0x48')](handleError(_0x8375f0,null));};
\ No newline at end of file
index 1a16a12..57ad5a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe656=['bluebird','request-promise','path','rimraf','../../config/environment','./mailServerOut.attributes','exports','define','MailServerOut','mail_servers_out','lodash','../../config/logger','api'];(function(_0x300672,_0x20e308){var _0x310b4d=function(_0x1e091e){while(--_0x1e091e){_0x300672['push'](_0x300672['shift']());}};_0x310b4d(++_0x20e308);}(_0xe656,0x135));var _0x6e65=function(_0x4b9ee6,_0x1473b9){_0x4b9ee6=_0x4b9ee6-0x0;var _0x34c84a=_0xe656[_0x4b9ee6];return _0x34c84a;};'use strict';var _=require(_0x6e65('0x0'));var util=require('util');var logger=require(_0x6e65('0x1'))(_0x6e65('0x2'));var moment=require('moment');var BPromise=require(_0x6e65('0x3'));var rp=require(_0x6e65('0x4'));var fs=require('fs');var path=require(_0x6e65('0x5'));var rimraf=require(_0x6e65('0x6'));var config=require(_0x6e65('0x7'));var attributes=require(_0x6e65('0x8'));module[_0x6e65('0x9')]=function(_0x39d0c9,_0x3b28b3){return _0x39d0c9[_0x6e65('0xa')](_0x6e65('0xb'),attributes,{'tableName':_0x6e65('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x628e=['lodash','util','../../config/logger','api','moment','bluebird','rimraf','./mailServerOut.attributes','exports','define','MailServerOut','mail_servers_out'];(function(_0x4c445a,_0x4ee80f){var _0x2f611c=function(_0x4f3699){while(--_0x4f3699){_0x4c445a['push'](_0x4c445a['shift']());}};_0x2f611c(++_0x4ee80f);}(_0x628e,0x168));var _0xe628=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x628e[_0xfae23b];return _0x200640;};'use strict';var _=require(_0xe628('0x0'));var util=require(_0xe628('0x1'));var logger=require(_0xe628('0x2'))(_0xe628('0x3'));var moment=require(_0xe628('0x4'));var BPromise=require(_0xe628('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe628('0x6'));var config=require('../../config/environment');var attributes=require(_0xe628('0x7'));module[_0xe628('0x8')]=function(_0x220d17,_0x23ad35){return _0x220d17[_0xe628('0x9')](_0xe628('0xa'),attributes,{'tableName':_0xe628('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b52fb88..a9ed9fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','MailServerOut,\x20%s,\x20%s','MailServerOut,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x1aac1d,_0x1dca6c){var _0x140f0d=function(_0x3e4db4){while(--_0x3e4db4){_0x1aac1d['push'](_0x1aac1d['shift']());}};_0x140f0d(++_0x1dca6c);}(_0x2ef3,0xba));var _0x32ef=function(_0x41eb44,_0x49c836){_0x41eb44=_0x41eb44-0x0;var _0xdf9be5=_0x2ef3[_0x41eb44];return _0xdf9be5;};'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')]('MailServerOut,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('MailServerOut,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
+var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','MailServerOut,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x542a9b,_0x351513){var _0x4d5032=function(_0x538ed2){while(--_0x538ed2){_0x542a9b['push'](_0x542a9b['shift']());}};_0x4d5032(++_0x351513);}(_0xadb5,0xad));var _0x5adb=function(_0xca2e4f,_0x36270a){_0xca2e4f=_0xca2e4f-0x0;var _0x1e00c5=_0xadb5[_0xca2e4f];return _0x1e00c5;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('MailServerOut,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
index 0896ff7..9b3ed8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcedc=['isAuthenticated','describe','/:id','show','post','create','put','update','exports','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe'];(function(_0x4f8171,_0x5cf208){var _0xc94deb=function(_0x4aa3d0){while(--_0x4aa3d0){_0x4f8171['push'](_0x4f8171['shift']());}};_0xc94deb(++_0x5cf208);}(_0xcedc,0xa1));var _0xcced=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xcedc[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require(_0xcced('0x0'));var path=require(_0xcced('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xcced('0x2')]();var fs_extra=require(_0xcced('0x3'));var auth=require(_0xcced('0x4'));var interaction=require(_0xcced('0x5'));var config=require(_0xcced('0x6'));var controller=require('./mailSubstatus.controller');router[_0xcced('0x7')]('/',auth['isAuthenticated'](),controller[_0xcced('0x8')]);router['get'](_0xcced('0x9'),auth[_0xcced('0xa')](),controller[_0xcced('0xb')]);router[_0xcced('0x7')](_0xcced('0xc'),auth['isAuthenticated'](),controller[_0xcced('0xd')]);router[_0xcced('0xe')]('/',auth[_0xcced('0xa')](),controller[_0xcced('0xf')]);router[_0xcced('0x10')]('/:id',auth[_0xcced('0xa')](),controller[_0xcced('0x11')]);router['delete'](_0xcced('0xc'),auth[_0xcced('0xa')](),controller['destroy']);module[_0xcced('0x12')]=router;
\ No newline at end of file
+var _0x65fc=['path','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','/:id','post','update','delete','destroy','exports','multer','util'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x65fc,0x98));var _0xc65f=function(_0x161514,_0xf203c1){_0x161514=_0x161514-0x0;var _0x230fc0=_0x65fc[_0x161514];return _0x230fc0;};'use strict';var multer=require(_0xc65f('0x0'));var util=require(_0xc65f('0x1'));var path=require(_0xc65f('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc65f('0x3')]();var fs_extra=require(_0xc65f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc65f('0x5'));var config=require('../../config/environment');var controller=require('./mailSubstatus.controller');router[_0xc65f('0x6')]('/',auth[_0xc65f('0x7')](),controller['index']);router['get']('/describe',auth[_0xc65f('0x7')](),controller['describe']);router[_0xc65f('0x6')](_0xc65f('0x8'),auth['isAuthenticated'](),controller['show']);router[_0xc65f('0x9')]('/',auth[_0xc65f('0x7')](),controller['create']);router['put']('/:id',auth[_0xc65f('0x7')](),controller[_0xc65f('0xa')]);router[_0xc65f('0xb')]('/:id',auth[_0xc65f('0x7')](),controller[_0xc65f('0xc')]);module[_0xc65f('0xd')]=router;
\ No newline at end of file
index f1d2ff7..e336953 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1623=['sequelize','name','STRING'];(function(_0x1b3ea7,_0x15202f){var _0x4789fb=function(_0x4b3911){while(--_0x4b3911){_0x1b3ea7['push'](_0x1b3ea7['shift']());}};_0x4789fb(++_0x15202f);}(_0x1623,0xab));var _0x3162=function(_0x4968d3,_0x54f678){_0x4968d3=_0x4968d3-0x0;var _0xbe38a=_0x1623[_0x4968d3];return _0xbe38a;};'use strict';var Sequelize=require(_0x3162('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x3162('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x3162('0x2')]}};
\ No newline at end of file
+var _0xcd59=['exports','STRING','name','sequelize'];(function(_0xf6e75d,_0xc70967){var _0x27514d=function(_0xc2c6dd){while(--_0xc2c6dd){_0xf6e75d['push'](_0xf6e75d['shift']());}};_0x27514d(++_0xc70967);}(_0xcd59,0x14b));var _0x9cd5=function(_0x2a74a6,_0x10592f){_0x2a74a6=_0x2a74a6-0x0;var _0xc2e34a=_0xcd59[_0x2a74a6];return _0xc2e34a;};'use strict';var Sequelize=require(_0x9cd5('0x0'));module[_0x9cd5('0x1')]={'name':{'type':Sequelize[_0x9cd5('0x2')],'unique':_0x9cd5('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x9cd5('0x2')]}};
\ No newline at end of file
index 1defc73..4d87f91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3202=['map','keys','query','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filters','filter','merge','options','includeAll','include','MailSubstatus','findAll','catch','show','params','find','create','body','describe','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','error','name','send','index','rawAttributes','fieldName','type','key','model'];(function(_0x4e20d6,_0x328f3d){var _0x128d2e=function(_0x1febb7){while(--_0x1febb7){_0x4e20d6['push'](_0x4e20d6['shift']());}};_0x128d2e(++_0x328f3d);}(_0x3202,0x67));var _0x2320=function(_0x163b76,_0x579912){_0x163b76=_0x163b76-0x0;var _0x262091=_0x3202[_0x163b76];return _0x262091;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2320('0x0'));var zipdir=require(_0x2320('0x1'));var jsonpatch=require(_0x2320('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2320('0x3'));var Mustache=require(_0x2320('0x4'));var util=require(_0x2320('0x5'));var path=require(_0x2320('0x6'));var sox=require(_0x2320('0x7'));var csv=require(_0x2320('0x8'));var ejs=require(_0x2320('0x9'));var fs=require('fs');var fs_extra=require(_0x2320('0xa'));var _=require(_0x2320('0xb'));var squel=require(_0x2320('0xc'));var crypto=require(_0x2320('0xd'));var jsforce=require(_0x2320('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x2320('0x8'));var querystring=require('querystring');var Papa=require(_0x2320('0xf'));var Redis=require(_0x2320('0x10'));var authService=require(_0x2320('0x11'));var qs=require(_0x2320('0x12'));var as=require(_0x2320('0x13'));var hardwareService=require(_0x2320('0x14'));var logger=require(_0x2320('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x2320('0x16'));var licenseUtil=require(_0x2320('0x17'));var db=require(_0x2320('0x18'))['db'];function respondWithStatusCode(_0x8de054,_0x4081fa){_0x4081fa=_0x4081fa||0xcc;return function(_0x2b0569){if(_0x2b0569){return _0x8de054[_0x2320('0x19')](_0x4081fa);}return _0x8de054[_0x2320('0x1a')](_0x4081fa)[_0x2320('0x1b')]();};}function respondWithResult(_0x4ae3e7,_0x9c5f4f){_0x9c5f4f=_0x9c5f4f||0xc8;return function(_0x445a7d){if(_0x445a7d){return _0x4ae3e7[_0x2320('0x1a')](_0x9c5f4f)[_0x2320('0x1c')](_0x445a7d);}};}function respondWithFilteredResult(_0x78f0d3,_0x3fbe79){return function(_0x4b50a9){if(_0x4b50a9){var _0x5cfc38=typeof _0x3fbe79['offset']===_0x2320('0x1d')&&typeof _0x3fbe79[_0x2320('0x1e')]===_0x2320('0x1d');var _0x280eb1=_0x4b50a9[_0x2320('0x1f')];var _0x39d5ec=_0x5cfc38?0x0:_0x3fbe79[_0x2320('0x20')];var _0x4791a8=_0x5cfc38?_0x4b50a9[_0x2320('0x1f')]:_0x3fbe79[_0x2320('0x20')]+_0x3fbe79[_0x2320('0x1e')];var _0x43e163;if(_0x4791a8>=_0x280eb1){_0x4791a8=_0x280eb1;_0x43e163=0xc8;}else{_0x43e163=0xce;}_0x78f0d3['status'](_0x43e163);return _0x78f0d3[_0x2320('0x21')](_0x2320('0x22'),_0x39d5ec+'-'+_0x4791a8+'/'+_0x280eb1)[_0x2320('0x1c')](_0x4b50a9);}return null;};}function patchUpdates(_0x326c8e){return function(_0x4a5287){try{jsonpatch[_0x2320('0x23')](_0x4a5287,_0x326c8e,!![]);}catch(_0x3943ef){return BPromise[_0x2320('0x24')](_0x3943ef);}return _0x4a5287['save']();};}function saveUpdates(_0x17b2d3,_0x2e69d4){return function(_0x5565e9){if(_0x5565e9){return _0x5565e9[_0x2320('0x25')](_0x17b2d3)[_0x2320('0x26')](function(_0x4949f9){return _0x4949f9;});}return null;};}function removeEntity(_0x44bc88,_0x4b005d){return function(_0x1e88bf){if(_0x1e88bf){return _0x1e88bf[_0x2320('0x27')]()[_0x2320('0x26')](function(){_0x44bc88['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e290c,_0x2ce0b2){return function(_0x468f5f){if(!_0x468f5f){_0x3e290c[_0x2320('0x19')](0x194);}return _0x468f5f;};}function handleError(_0x7618f9,_0x196194){_0x196194=_0x196194||0x1f4;return function(_0x4a996b){logger[_0x2320('0x28')](_0x4a996b['stack']);if(_0x4a996b[_0x2320('0x29')]){delete _0x4a996b[_0x2320('0x29')];}_0x7618f9[_0x2320('0x1a')](_0x196194)[_0x2320('0x2a')](_0x4a996b);};}exports[_0x2320('0x2b')]=function(_0x57eee1,_0x143d33){var _0x4e9bfb={},_0x22c9af={},_0x341a79={'count':0x0,'rows':[]};var _0x1fc787=_['map'](db['MailSubstatus'][_0x2320('0x2c')],function(_0x2e4a42){return{'name':_0x2e4a42[_0x2320('0x2d')],'type':_0x2e4a42[_0x2320('0x2e')][_0x2320('0x2f')]};});_0x22c9af[_0x2320('0x30')]=_[_0x2320('0x31')](_0x1fc787,_0x2320('0x29'));_0x22c9af['query']=_[_0x2320('0x32')](_0x57eee1[_0x2320('0x33')]);_0x22c9af['filters']=_[_0x2320('0x34')](_0x22c9af[_0x2320('0x30')],_0x22c9af['query']);_0x4e9bfb['attributes']=_['intersection'](_0x22c9af[_0x2320('0x30')],qs[_0x2320('0x35')](_0x57eee1['query'][_0x2320('0x35')]));_0x4e9bfb[_0x2320('0x36')]=_0x4e9bfb['attributes'][_0x2320('0x37')]?_0x4e9bfb['attributes']:_0x22c9af[_0x2320('0x30')];if(!_0x57eee1['query']['hasOwnProperty'](_0x2320('0x38'))){_0x4e9bfb[_0x2320('0x1e')]=qs['limit'](_0x57eee1[_0x2320('0x33')][_0x2320('0x1e')]);_0x4e9bfb[_0x2320('0x20')]=qs[_0x2320('0x20')](_0x57eee1[_0x2320('0x33')]['offset']);}_0x4e9bfb[_0x2320('0x39')]=qs[_0x2320('0x3a')](_0x57eee1['query'][_0x2320('0x3a')]);_0x4e9bfb[_0x2320('0x3b')]=qs['filters'](_[_0x2320('0x3c')](_0x57eee1[_0x2320('0x33')],_0x22c9af[_0x2320('0x3d')]),_0x1fc787);if(_0x57eee1['query'][_0x2320('0x3e')]){_0x4e9bfb[_0x2320('0x3b')]=_[_0x2320('0x3f')](_0x4e9bfb[_0x2320('0x3b')],{'$or':_[_0x2320('0x31')](_0x1fc787,function(_0x336678){if(_0x336678[_0x2320('0x2e')]!=='VIRTUAL'){var _0x1dcb47={};_0x1dcb47[_0x336678[_0x2320('0x29')]]={'$like':'%'+_0x57eee1['query'][_0x2320('0x3e')]+'%'};return _0x1dcb47;}})});}_0x4e9bfb=_[_0x2320('0x3f')]({},_0x4e9bfb,_0x57eee1[_0x2320('0x40')]);var _0x4f23a7={'where':_0x4e9bfb[_0x2320('0x3b')]};return db['MailSubstatus'][_0x2320('0x1f')](_0x4f23a7)[_0x2320('0x26')](function(_0x4ca4fb){_0x341a79[_0x2320('0x1f')]=_0x4ca4fb;if(_0x57eee1['query'][_0x2320('0x41')]){_0x4e9bfb[_0x2320('0x42')]=[{'all':!![]}];}return db[_0x2320('0x43')][_0x2320('0x44')](_0x4e9bfb);})[_0x2320('0x26')](function(_0x74e542){_0x341a79['rows']=_0x74e542;return _0x341a79;})[_0x2320('0x26')](respondWithFilteredResult(_0x143d33,_0x4e9bfb))[_0x2320('0x45')](handleError(_0x143d33,null));};exports[_0x2320('0x46')]=function(_0x15b979,_0x2f7e5e){var _0x421666={'raw':!![],'where':{'id':_0x15b979[_0x2320('0x47')]['id']}},_0x43ea30={};_0x43ea30[_0x2320('0x30')]=_[_0x2320('0x32')](db[_0x2320('0x43')]['rawAttributes']);_0x43ea30[_0x2320('0x33')]=_[_0x2320('0x32')](_0x15b979['query']);_0x43ea30['filters']=_[_0x2320('0x34')](_0x43ea30[_0x2320('0x30')],_0x43ea30[_0x2320('0x33')]);_0x421666[_0x2320('0x36')]=_[_0x2320('0x34')](_0x43ea30['model'],qs['fields'](_0x15b979[_0x2320('0x33')][_0x2320('0x35')]));_0x421666[_0x2320('0x36')]=_0x421666[_0x2320('0x36')][_0x2320('0x37')]?_0x421666['attributes']:_0x43ea30['model'];if(_0x15b979[_0x2320('0x33')][_0x2320('0x41')]){_0x421666[_0x2320('0x42')]=[{'all':!![]}];}_0x421666=_[_0x2320('0x3f')]({},_0x421666,_0x15b979['options']);return db[_0x2320('0x43')][_0x2320('0x48')](_0x421666)[_0x2320('0x26')](handleEntityNotFound(_0x2f7e5e,null))[_0x2320('0x26')](respondWithResult(_0x2f7e5e,null))['catch'](handleError(_0x2f7e5e,null));};exports['create']=function(_0x17076d,_0x3078b5){return db[_0x2320('0x43')][_0x2320('0x49')](_0x17076d[_0x2320('0x4a')],{})['then'](respondWithResult(_0x3078b5,0xc9))[_0x2320('0x45')](handleError(_0x3078b5,null));};exports[_0x2320('0x25')]=function(_0x2fa2a8,_0x44456a){if(_0x2fa2a8['body']['id']){delete _0x2fa2a8['body']['id'];}return db[_0x2320('0x43')][_0x2320('0x48')]({'where':{'id':_0x2fa2a8['params']['id']}})['then'](handleEntityNotFound(_0x44456a,null))[_0x2320('0x26')](saveUpdates(_0x2fa2a8[_0x2320('0x4a')],null))[_0x2320('0x26')](respondWithResult(_0x44456a,null))[_0x2320('0x45')](handleError(_0x44456a,null));};exports[_0x2320('0x27')]=function(_0x43e93a,_0x1b0215){return db[_0x2320('0x43')][_0x2320('0x48')]({'where':{'id':_0x43e93a[_0x2320('0x47')]['id']}})[_0x2320('0x26')](handleEntityNotFound(_0x1b0215,null))[_0x2320('0x26')](removeEntity(_0x1b0215,null))[_0x2320('0x45')](handleError(_0x1b0215,null));};exports[_0x2320('0x4b')]=function(_0x1d08c0,_0x48510a){return db[_0x2320('0x43')][_0x2320('0x4b')]()['then'](respondWithResult(_0x48510a,null))[_0x2320('0x45')](handleError(_0x48510a,null));};
\ No newline at end of file
+var _0xccec=['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','status','end','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','MailSubstatus','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x340380,_0x4bd2a8){var _0x49ce1c=function(_0x4cb9e2){while(--_0x4cb9e2){_0x340380['push'](_0x340380['shift']());}};_0x49ce1c(++_0x4bd2a8);}(_0xccec,0x17b));var _0xccce=function(_0x382e11,_0x24daf4){_0x382e11=_0x382e11-0x0;var _0xcd301c=_0xccec[_0x382e11];return _0xcd301c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xccce('0x0'));var zipdir=require(_0xccce('0x1'));var jsonpatch=require(_0xccce('0x2'));var rp=require('request-promise');var moment=require(_0xccce('0x3'));var BPromise=require(_0xccce('0x4'));var Mustache=require(_0xccce('0x5'));var util=require('util');var path=require(_0xccce('0x6'));var sox=require(_0xccce('0x7'));var csv=require(_0xccce('0x8'));var ejs=require(_0xccce('0x9'));var fs=require('fs');var fs_extra=require(_0xccce('0xa'));var _=require(_0xccce('0xb'));var squel=require(_0xccce('0xc'));var crypto=require(_0xccce('0xd'));var jsforce=require(_0xccce('0xe'));var deskjs=require(_0xccce('0xf'));var toCsv=require(_0xccce('0x8'));var querystring=require(_0xccce('0x10'));var Papa=require(_0xccce('0x11'));var Redis=require(_0xccce('0x12'));var authService=require(_0xccce('0x13'));var qs=require(_0xccce('0x14'));var as=require(_0xccce('0x15'));var hardwareService=require(_0xccce('0x16'));var logger=require(_0xccce('0x17'))('api');var utils=require('../../config/utils');var config=require(_0xccce('0x18'));var licenseUtil=require(_0xccce('0x19'));var db=require(_0xccce('0x1a'))['db'];function respondWithStatusCode(_0x1ee11e,_0x14af7b){_0x14af7b=_0x14af7b||0xcc;return function(_0x118cdd){if(_0x118cdd){return _0x1ee11e['sendStatus'](_0x14af7b);}return _0x1ee11e[_0xccce('0x1b')](_0x14af7b)[_0xccce('0x1c')]();};}function respondWithResult(_0x5c48c9,_0x518799){_0x518799=_0x518799||0xc8;return function(_0xd9edf7){if(_0xd9edf7){return _0x5c48c9[_0xccce('0x1b')](_0x518799)['json'](_0xd9edf7);}};}function respondWithFilteredResult(_0x405f8a,_0x13d1a9){return function(_0x2d47c1){if(_0x2d47c1){var _0x5a0cd9=typeof _0x13d1a9[_0xccce('0x1d')]===_0xccce('0x1e')&&typeof _0x13d1a9[_0xccce('0x1f')]===_0xccce('0x1e');var _0x160089=_0x2d47c1['count'];var _0x212b88=_0x5a0cd9?0x0:_0x13d1a9[_0xccce('0x1d')];var _0x36face=_0x5a0cd9?_0x2d47c1[_0xccce('0x20')]:_0x13d1a9[_0xccce('0x1d')]+_0x13d1a9[_0xccce('0x1f')];var _0x2ce270;if(_0x36face>=_0x160089){_0x36face=_0x160089;_0x2ce270=0xc8;}else{_0x2ce270=0xce;}_0x405f8a[_0xccce('0x1b')](_0x2ce270);return _0x405f8a['set'](_0xccce('0x21'),_0x212b88+'-'+_0x36face+'/'+_0x160089)['json'](_0x2d47c1);}return null;};}function patchUpdates(_0x4ecaa2){return function(_0x2b2501){try{jsonpatch[_0xccce('0x22')](_0x2b2501,_0x4ecaa2,!![]);}catch(_0x43e6fb){return BPromise[_0xccce('0x23')](_0x43e6fb);}return _0x2b2501[_0xccce('0x24')]();};}function saveUpdates(_0x596733,_0x51f3a6){return function(_0x2c2e48){if(_0x2c2e48){return _0x2c2e48[_0xccce('0x25')](_0x596733)[_0xccce('0x26')](function(_0x3d499c){return _0x3d499c;});}return null;};}function removeEntity(_0x275416,_0x38a219){return function(_0x33c50d){if(_0x33c50d){return _0x33c50d[_0xccce('0x27')]()[_0xccce('0x26')](function(){_0x275416[_0xccce('0x1b')](0xcc)[_0xccce('0x1c')]();});}};}function handleEntityNotFound(_0x54b2a0,_0x49f3fa){return function(_0xe2bc23){if(!_0xe2bc23){_0x54b2a0[_0xccce('0x28')](0x194);}return _0xe2bc23;};}function handleError(_0x574c3e,_0x148dbe){_0x148dbe=_0x148dbe||0x1f4;return function(_0x3c2c67){logger[_0xccce('0x29')](_0x3c2c67[_0xccce('0x2a')]);if(_0x3c2c67[_0xccce('0x2b')]){delete _0x3c2c67[_0xccce('0x2b')];}_0x574c3e[_0xccce('0x1b')](_0x148dbe)['send'](_0x3c2c67);};}exports[_0xccce('0x2c')]=function(_0x5946e9,_0x2cdd37){var _0x189f59={},_0x1b1f75={},_0x10d07={'count':0x0,'rows':[]};var _0x1765cd=_[_0xccce('0x2d')](db[_0xccce('0x2e')][_0xccce('0x2f')],function(_0x5a257a){return{'name':_0x5a257a['fieldName'],'type':_0x5a257a[_0xccce('0x30')][_0xccce('0x31')]};});_0x1b1f75[_0xccce('0x32')]=_[_0xccce('0x2d')](_0x1765cd,_0xccce('0x2b'));_0x1b1f75[_0xccce('0x33')]=_[_0xccce('0x34')](_0x5946e9[_0xccce('0x33')]);_0x1b1f75[_0xccce('0x35')]=_['intersection'](_0x1b1f75[_0xccce('0x32')],_0x1b1f75[_0xccce('0x33')]);_0x189f59[_0xccce('0x36')]=_[_0xccce('0x37')](_0x1b1f75[_0xccce('0x32')],qs[_0xccce('0x38')](_0x5946e9[_0xccce('0x33')]['fields']));_0x189f59[_0xccce('0x36')]=_0x189f59[_0xccce('0x36')][_0xccce('0x39')]?_0x189f59[_0xccce('0x36')]:_0x1b1f75['model'];if(!_0x5946e9[_0xccce('0x33')]['hasOwnProperty'](_0xccce('0x3a'))){_0x189f59['limit']=qs[_0xccce('0x1f')](_0x5946e9['query'][_0xccce('0x1f')]);_0x189f59[_0xccce('0x1d')]=qs[_0xccce('0x1d')](_0x5946e9[_0xccce('0x33')][_0xccce('0x1d')]);}_0x189f59[_0xccce('0x3b')]=qs[_0xccce('0x3c')](_0x5946e9['query']['sort']);_0x189f59['where']=qs[_0xccce('0x35')](_[_0xccce('0x3d')](_0x5946e9['query'],_0x1b1f75['filters']),_0x1765cd);if(_0x5946e9[_0xccce('0x33')][_0xccce('0x3e')]){_0x189f59[_0xccce('0x3f')]=_[_0xccce('0x40')](_0x189f59[_0xccce('0x3f')],{'$or':_[_0xccce('0x2d')](_0x1765cd,function(_0x210c32){if(_0x210c32[_0xccce('0x30')]!==_0xccce('0x41')){var _0x1e1b11={};_0x1e1b11[_0x210c32[_0xccce('0x2b')]]={'$like':'%'+_0x5946e9[_0xccce('0x33')][_0xccce('0x3e')]+'%'};return _0x1e1b11;}})});}_0x189f59=_[_0xccce('0x40')]({},_0x189f59,_0x5946e9[_0xccce('0x42')]);var _0xe4b966={'where':_0x189f59[_0xccce('0x3f')]};return db[_0xccce('0x2e')][_0xccce('0x20')](_0xe4b966)[_0xccce('0x26')](function(_0x456ba3){_0x10d07[_0xccce('0x20')]=_0x456ba3;if(_0x5946e9[_0xccce('0x33')][_0xccce('0x43')]){_0x189f59[_0xccce('0x44')]=[{'all':!![]}];}return db[_0xccce('0x2e')][_0xccce('0x45')](_0x189f59);})[_0xccce('0x26')](function(_0x2c0fcc){_0x10d07[_0xccce('0x46')]=_0x2c0fcc;return _0x10d07;})['then'](respondWithFilteredResult(_0x2cdd37,_0x189f59))['catch'](handleError(_0x2cdd37,null));};exports['show']=function(_0x408adc,_0x2024b1){var _0x5ccbd5={'raw':!![],'where':{'id':_0x408adc[_0xccce('0x47')]['id']}},_0x559d67={};_0x559d67[_0xccce('0x32')]=_[_0xccce('0x34')](db[_0xccce('0x2e')]['rawAttributes']);_0x559d67[_0xccce('0x33')]=_[_0xccce('0x34')](_0x408adc[_0xccce('0x33')]);_0x559d67['filters']=_['intersection'](_0x559d67[_0xccce('0x32')],_0x559d67[_0xccce('0x33')]);_0x5ccbd5['attributes']=_[_0xccce('0x37')](_0x559d67[_0xccce('0x32')],qs['fields'](_0x408adc[_0xccce('0x33')][_0xccce('0x38')]));_0x5ccbd5['attributes']=_0x5ccbd5['attributes'][_0xccce('0x39')]?_0x5ccbd5[_0xccce('0x36')]:_0x559d67[_0xccce('0x32')];if(_0x408adc[_0xccce('0x33')]['includeAll']){_0x5ccbd5[_0xccce('0x44')]=[{'all':!![]}];}_0x5ccbd5=_[_0xccce('0x40')]({},_0x5ccbd5,_0x408adc['options']);return db[_0xccce('0x2e')][_0xccce('0x48')](_0x5ccbd5)[_0xccce('0x26')](handleEntityNotFound(_0x2024b1,null))['then'](respondWithResult(_0x2024b1,null))[_0xccce('0x49')](handleError(_0x2024b1,null));};exports['create']=function(_0x1fc49e,_0x1594e7){return db['MailSubstatus'][_0xccce('0x4a')](_0x1fc49e[_0xccce('0x4b')],{})[_0xccce('0x26')](respondWithResult(_0x1594e7,0xc9))[_0xccce('0x49')](handleError(_0x1594e7,null));};exports[_0xccce('0x25')]=function(_0x399afb,_0x404861){if(_0x399afb['body']['id']){delete _0x399afb[_0xccce('0x4b')]['id'];}return db[_0xccce('0x2e')]['find']({'where':{'id':_0x399afb[_0xccce('0x47')]['id']}})[_0xccce('0x26')](handleEntityNotFound(_0x404861,null))[_0xccce('0x26')](saveUpdates(_0x399afb[_0xccce('0x4b')],null))[_0xccce('0x26')](respondWithResult(_0x404861,null))[_0xccce('0x49')](handleError(_0x404861,null));};exports['destroy']=function(_0x2c6d25,_0xbed37d){return db[_0xccce('0x2e')][_0xccce('0x48')]({'where':{'id':_0x2c6d25[_0xccce('0x47')]['id']}})[_0xccce('0x26')](handleEntityNotFound(_0xbed37d,null))[_0xccce('0x26')](removeEntity(_0xbed37d,null))[_0xccce('0x49')](handleError(_0xbed37d,null));};exports[_0xccce('0x4c')]=function(_0x6e10cb,_0x2a78d1){return db[_0xccce('0x2e')][_0xccce('0x4c')]()[_0xccce('0x26')](respondWithResult(_0x2a78d1,null))['catch'](handleError(_0x2a78d1,null));};
\ No newline at end of file
diff --git a/server/api/mailSubstatus/mailSubstatus.events.js b/server/api/mailSubstatus/mailSubstatus.events.js
deleted file mode 100644 (file)
index 020af55..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0xe622=['exports','../../mysqldb','MailSubstatus','setMaxListeners','update','emit'];(function(_0x5a7734,_0x2ef565){var _0x6e5828=function(_0x24cefd){while(--_0x24cefd){_0x5a7734['push'](_0x5a7734['shift']());}};_0x6e5828(++_0x2ef565);}(_0xe622,0xd3));var _0x2e62=function(_0xa829e1,_0x4ff69e){_0xa829e1=_0xa829e1-0x0;var _0x464519=_0xe622[_0xa829e1];return _0x464519;};'use strict';var EventEmitter=require('events');var MailSubstatus=require(_0x2e62('0x0'))['db'][_0x2e62('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x2e62('0x2')](0x0);var events={'afterUpdate':_0x2e62('0x3')};function emitEvent(_0x511676){return function(_0x2dfb10,_0x30a566,_0x39ac8a){MailSubstatusEvents[_0x2e62('0x4')](_0x511676+':'+_0x2dfb10['id'],_0x2dfb10);MailSubstatusEvents[_0x2e62('0x4')](_0x511676,_0x2dfb10);_0x39ac8a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailSubstatus['hook'](e,emitEvent(event));}}module[_0x2e62('0x5')]=MailSubstatusEvents;
\ No newline at end of file
index 34ba7b0..fa4126d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d7d=['then','exports','models','MailSubstatus','update','mailSubstatus','name'];(function(_0x22cf34,_0xcc8306){var _0x1b15b9=function(_0x4e2947){while(--_0x4e2947){_0x22cf34['push'](_0x22cf34['shift']());}};_0x1b15b9(++_0xcc8306);}(_0x0d7d,0x12e));var _0xd0d7=function(_0x1635fe,_0x5f1d9f){_0x1635fe=_0x1635fe-0x0;var _0x3c512a=_0x0d7d[_0x1635fe];return _0x3c512a;};'use strict';var attributes=require('./mailSubstatus.attributes');module[_0xd0d7('0x0')]=function(_0x33683b){var _0x593964=_0x33683b[_0xd0d7('0x1')];return _0x33683b['define'](_0xd0d7('0x2'),attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x1b3a51,_0x2798a7,_0x3d6b76){return _0x593964['Condition'][_0xd0d7('0x3')]({'value':_0x1b3a51['name']},{'where':{'field':_0xd0d7('0x4'),'value':_0x1b3a51['_previousDataValues'][_0xd0d7('0x5')]}})[_0xd0d7('0x6')](function(){_0x3d6b76();})['catch'](function(_0x49f7c4){_0x3d6b76(_0x49f7c4);});}}});};
\ No newline at end of file
+var _0x56ca=['./mailSubstatus.attributes','exports','define','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x26bef5,_0x2f791e){var _0x190544=function(_0x5ac8b8){while(--_0x5ac8b8){_0x26bef5['push'](_0x26bef5['shift']());}};_0x190544(++_0x2f791e);}(_0x56ca,0x1ef));var _0xa56c=function(_0x27625a,_0x10c778){_0x27625a=_0x27625a-0x0;var _0x481f91=_0x56ca[_0x27625a];return _0x481f91;};'use strict';var _=require(_0xa56c('0x0'));var util=require(_0xa56c('0x1'));var logger=require(_0xa56c('0x2'))(_0xa56c('0x3'));var moment=require(_0xa56c('0x4'));var BPromise=require(_0xa56c('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa56c('0x6'));var rimraf=require(_0xa56c('0x7'));var config=require(_0xa56c('0x8'));var attributes=require(_0xa56c('0x9'));module[_0xa56c('0xa')]=function(_0xddfc38,_0x2e2017){return _0xddfc38[_0xa56c('0xb')]('MailSubstatus',attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0df2281..19458af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x196e=['MailSubstatus,\x20%s,\x20%s','debug','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x527a23,_0xa3430d){var _0x4d0e71=function(_0x5281d1){while(--_0x5281d1){_0x527a23['push'](_0x527a23['shift']());}};_0x4d0e71(++_0xa3430d);}(_0x196e,0xcc));var _0xe196=function(_0x2e6dbf,_0x57dd06){_0x2e6dbf=_0x2e6dbf-0x0;var _0x2680e5=_0x196e[_0x2e6dbf];return _0x2680e5;};'use strict';var _=require(_0xe196('0x0'));var util=require(_0xe196('0x1'));var moment=require(_0xe196('0x2'));var BPromise=require(_0xe196('0x3'));var rs=require(_0xe196('0x4'));var fs=require('fs');var Redis=require(_0xe196('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xe196('0x6'));var logger=require(_0xe196('0x7'))(_0xe196('0x8'));var config=require(_0xe196('0x9'));var jayson=require(_0xe196('0xa'));var client=jayson[_0xe196('0xb')][_0xe196('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x93de0e,_0x51efc5,_0x26f7a8){return new BPromise(function(_0x2cf365,_0x280c50){return client[_0xe196('0xd')](_0x93de0e,_0x26f7a8)[_0xe196('0xe')](function(_0x40d8d9){logger[_0xe196('0xf')](_0xe196('0x10'),_0x51efc5,'request\x20sent');logger[_0xe196('0x11')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x51efc5,'request\x20sent',JSON['stringify'](_0x40d8d9));if(_0x40d8d9['error']){if(_0x40d8d9[_0xe196('0x12')][_0xe196('0x13')]===0x1f4){logger[_0xe196('0x12')](_0xe196('0x10'),_0x51efc5,_0x40d8d9[_0xe196('0x12')][_0xe196('0x14')]);return _0x280c50(_0x40d8d9[_0xe196('0x12')][_0xe196('0x14')]);}logger[_0xe196('0x12')](_0xe196('0x10'),_0x51efc5,_0x40d8d9[_0xe196('0x12')]['message']);return _0x2cf365(_0x40d8d9['error']['message']);}else{logger[_0xe196('0xf')](_0xe196('0x10'),_0x51efc5,'request\x20sent');_0x2cf365(_0x40d8d9['result'][_0xe196('0x14')]);}})[_0xe196('0x15')](function(_0x595235){logger[_0xe196('0x12')]('MailSubstatus,\x20%s,\x20%s',_0x51efc5,_0x595235);_0x280c50(_0x595235);});});}
\ No newline at end of file
+var _0xfc64=['debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','MailSubstatus,\x20%s,\x20%s','request\x20sent'];(function(_0x32d457,_0x1a39c9){var _0x338386=function(_0x199d7a){while(--_0x199d7a){_0x32d457['push'](_0x32d457['shift']());}};_0x338386(++_0x1a39c9);}(_0xfc64,0x1a4));var _0x4fc6=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0xfc64[_0x1035c1];return _0x308d67;};'use strict';var _=require(_0x4fc6('0x0'));var util=require(_0x4fc6('0x1'));var moment=require(_0x4fc6('0x2'));var BPromise=require(_0x4fc6('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4fc6('0x4'));var db=require(_0x4fc6('0x5'))['db'];var utils=require(_0x4fc6('0x6'));var logger=require(_0x4fc6('0x7'))('rpc');var config=require(_0x4fc6('0x8'));var jayson=require(_0x4fc6('0x9'));var client=jayson[_0x4fc6('0xa')][_0x4fc6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5ec217,_0x5adf90,_0x13960e){return new BPromise(function(_0x2aa819,_0x3da744){return client[_0x4fc6('0xc')](_0x5ec217,_0x13960e)[_0x4fc6('0xd')](function(_0x211848){logger[_0x4fc6('0xe')](_0x4fc6('0xf'),_0x5adf90,_0x4fc6('0x10'));logger[_0x4fc6('0x11')](_0x4fc6('0x12'),_0x5adf90,'request\x20sent',JSON[_0x4fc6('0x13')](_0x211848));if(_0x211848[_0x4fc6('0x14')]){if(_0x211848[_0x4fc6('0x14')]['code']===0x1f4){logger[_0x4fc6('0x14')](_0x4fc6('0xf'),_0x5adf90,_0x211848[_0x4fc6('0x14')][_0x4fc6('0x15')]);return _0x3da744(_0x211848[_0x4fc6('0x14')][_0x4fc6('0x15')]);}logger[_0x4fc6('0x14')](_0x4fc6('0xf'),_0x5adf90,_0x211848['error'][_0x4fc6('0x15')]);return _0x2aa819(_0x211848[_0x4fc6('0x14')][_0x4fc6('0x15')]);}else{logger[_0x4fc6('0xe')]('MailSubstatus,\x20%s,\x20%s',_0x5adf90,'request\x20sent');_0x2aa819(_0x211848['result'][_0x4fc6('0x15')]);}})[_0x4fc6('0x16')](function(_0x2da60b){logger[_0x4fc6('0x14')](_0x4fc6('0xf'),_0x5adf90,_0x2da60b);_0x3da744(_0x2da60b);});});}
\ No newline at end of file
index 673ed41..b8389ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96e3=['index','/describe','show','post','create','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','isAuthenticated'];(function(_0x37548c,_0x2ea2d8){var _0x2961f5=function(_0x2d3d57){while(--_0x2d3d57){_0x37548c['push'](_0x37548c['shift']());}};_0x2961f5(++_0x2ea2d8);}(_0x96e3,0x191));var _0x396e=function(_0x25d288,_0x21038f){_0x25d288=_0x25d288-0x0;var _0x5b664d=_0x96e3[_0x25d288];return _0x5b664d;};'use strict';var multer=require(_0x396e('0x0'));var util=require(_0x396e('0x1'));var path=require(_0x396e('0x2'));var timeout=require(_0x396e('0x3'));var express=require(_0x396e('0x4'));var router=express[_0x396e('0x5')]();var fs_extra=require(_0x396e('0x6'));var auth=require(_0x396e('0x7'));var interaction=require(_0x396e('0x8'));var config=require(_0x396e('0x9'));var controller=require(_0x396e('0xa'));router[_0x396e('0xb')]('/',auth[_0x396e('0xc')](),controller[_0x396e('0xd')]);router[_0x396e('0xb')](_0x396e('0xe'),auth['isAuthenticated'](),controller['describe']);router['get']('/:id',auth[_0x396e('0xc')](),controller[_0x396e('0xf')]);router[_0x396e('0x10')]('/',auth['isAuthenticated'](),controller[_0x396e('0x11')]);router['put'](_0x396e('0x12'),auth['isAuthenticated'](),controller[_0x396e('0x13')]);router[_0x396e('0x14')](_0x396e('0x12'),auth[_0x396e('0xc')](),controller[_0x396e('0x15')]);module[_0x396e('0x16')]=router;
\ No newline at end of file
+var _0x3015=['post','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','isAuthenticated','describe','/:id','show'];(function(_0x3c61c4,_0x5156bc){var _0x57f8c6=function(_0x234141){while(--_0x234141){_0x3c61c4['push'](_0x3c61c4['shift']());}};_0x57f8c6(++_0x5156bc);}(_0x3015,0xfa));var _0x5301=function(_0x572d89,_0x3f637a){_0x572d89=_0x572d89-0x0;var _0x1a08a2=_0x3015[_0x572d89];return _0x1a08a2;};'use strict';var multer=require(_0x5301('0x0'));var util=require(_0x5301('0x1'));var path=require(_0x5301('0x2'));var timeout=require(_0x5301('0x3'));var express=require(_0x5301('0x4'));var router=express[_0x5301('0x5')]();var fs_extra=require(_0x5301('0x6'));var auth=require(_0x5301('0x7'));var interaction=require(_0x5301('0x8'));var config=require(_0x5301('0x9'));var controller=require(_0x5301('0xa'));router[_0x5301('0xb')]('/',auth[_0x5301('0xc')](),controller['index']);router[_0x5301('0xb')]('/describe',auth[_0x5301('0xc')](),controller[_0x5301('0xd')]);router[_0x5301('0xb')](_0x5301('0xe'),auth[_0x5301('0xc')](),controller[_0x5301('0xf')]);router[_0x5301('0x10')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0x5301('0xc')](),controller[_0x5301('0x11')]);router['delete'](_0x5301('0xe'),auth['isAuthenticated'](),controller[_0x5301('0x12')]);module['exports']=router;
\ No newline at end of file
index 89d9430..82a3634 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x2b9311,_0x369285){var _0x4a22c3=function(_0x2a95c6){while(--_0x2a95c6){_0x2b9311['push'](_0x2b9311['shift']());}};_0x4a22c3(++_0x369285);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x1c510a,_0x1413a9){_0x1c510a=_0x1c510a-0x0;var _0x23cedd=_0xf3cd[_0x1c510a];return _0x23cedd;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0x34e8=['queue','DATE','NOW','moment','sequelize','exports','STRING','account','agent'];(function(_0x1ec9d1,_0x35ecaf){var _0x4b6bc2=function(_0x2695c6){while(--_0x2695c6){_0x1ec9d1['push'](_0x1ec9d1['shift']());}};_0x4b6bc2(++_0x35ecaf);}(_0x34e8,0x12c));var _0x834e=function(_0x4ad08d,_0x3b831c){_0x4ad08d=_0x4ad08d-0x0;var _0x193fc1=_0x34e8[_0x4ad08d];return _0x193fc1;};'use strict';var moment=require(_0x834e('0x0'));var Sequelize=require(_0x834e('0x1'));module[_0x834e('0x2')]={'uniqueid':{'type':Sequelize[_0x834e('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6')),'allowNull':![],'defaultValue':_0x834e('0x6')},'transferredAt':{'type':Sequelize[_0x834e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x834e('0x8')]}};
\ No newline at end of file
index ab75642..bc8ba29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7bd=['update','then','destroy','end','error','stack','name','send','map','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','MailTransferReport','include','rows','catch','show','rawAttributes','length','includeAll','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save'];(function(_0xe7f818,_0x16be60){var _0x535913=function(_0x55b739){while(--_0x55b739){_0xe7f818['push'](_0xe7f818['shift']());}};_0x535913(++_0x16be60);}(_0xb7bd,0x1a6));var _0xdb7b=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xb7bd[_0x2641f9];return _0x585741;};'use strict';var emlformat=require(_0xdb7b('0x0'));var rimraf=require(_0xdb7b('0x1'));var zipdir=require(_0xdb7b('0x2'));var jsonpatch=require(_0xdb7b('0x3'));var rp=require(_0xdb7b('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xdb7b('0x5'));var util=require(_0xdb7b('0x6'));var path=require(_0xdb7b('0x7'));var sox=require(_0xdb7b('0x8'));var csv=require(_0xdb7b('0x9'));var ejs=require(_0xdb7b('0xa'));var fs=require('fs');var fs_extra=require(_0xdb7b('0xb'));var _=require(_0xdb7b('0xc'));var squel=require(_0xdb7b('0xd'));var crypto=require('crypto');var jsforce=require(_0xdb7b('0xe'));var deskjs=require(_0xdb7b('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xdb7b('0x10'));var Redis=require(_0xdb7b('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xdb7b('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdb7b('0x13'));var logger=require('../../config/logger')(_0xdb7b('0x14'));var utils=require('../../config/utils');var config=require(_0xdb7b('0x15'));var licenseUtil=require(_0xdb7b('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x226dba,_0x569768){_0x569768=_0x569768||0xcc;return function(_0x37ff5a){if(_0x37ff5a){return _0x226dba[_0xdb7b('0x17')](_0x569768);}return _0x226dba['status'](_0x569768)['end']();};}function respondWithResult(_0x3c2f61,_0x34da93){_0x34da93=_0x34da93||0xc8;return function(_0x3b2397){if(_0x3b2397){return _0x3c2f61[_0xdb7b('0x18')](_0x34da93)[_0xdb7b('0x19')](_0x3b2397);}};}function respondWithFilteredResult(_0x59549e,_0x242ffd){return function(_0x33ce81){if(_0x33ce81){var _0x5bf3c9=typeof _0x242ffd[_0xdb7b('0x1a')]===_0xdb7b('0x1b')&&typeof _0x242ffd[_0xdb7b('0x1c')]===_0xdb7b('0x1b');var _0x31991e=_0x33ce81[_0xdb7b('0x1d')];var _0x2af0eb=_0x5bf3c9?0x0:_0x242ffd[_0xdb7b('0x1a')];var _0xea86b7=_0x5bf3c9?_0x33ce81[_0xdb7b('0x1d')]:_0x242ffd[_0xdb7b('0x1a')]+_0x242ffd[_0xdb7b('0x1c')];var _0x2749da;if(_0xea86b7>=_0x31991e){_0xea86b7=_0x31991e;_0x2749da=0xc8;}else{_0x2749da=0xce;}_0x59549e[_0xdb7b('0x18')](_0x2749da);return _0x59549e[_0xdb7b('0x1e')](_0xdb7b('0x1f'),_0x2af0eb+'-'+_0xea86b7+'/'+_0x31991e)[_0xdb7b('0x19')](_0x33ce81);}return null;};}function patchUpdates(_0x419f9a){return function(_0x2e6a05){try{jsonpatch[_0xdb7b('0x20')](_0x2e6a05,_0x419f9a,!![]);}catch(_0x3fd50f){return BPromise['reject'](_0x3fd50f);}return _0x2e6a05[_0xdb7b('0x21')]();};}function saveUpdates(_0x39686b,_0x167b4e){return function(_0x45eae5){if(_0x45eae5){return _0x45eae5[_0xdb7b('0x22')](_0x39686b)[_0xdb7b('0x23')](function(_0x47c5c5){return _0x47c5c5;});}return null;};}function removeEntity(_0x2ec359,_0x3ac1ad){return function(_0x2225a8){if(_0x2225a8){return _0x2225a8[_0xdb7b('0x24')]()[_0xdb7b('0x23')](function(){_0x2ec359['status'](0xcc)[_0xdb7b('0x25')]();});}};}function handleEntityNotFound(_0x40fe1b,_0x1d3814){return function(_0x2caf1b){if(!_0x2caf1b){_0x40fe1b[_0xdb7b('0x17')](0x194);}return _0x2caf1b;};}function handleError(_0x4b722c,_0xfc645b){_0xfc645b=_0xfc645b||0x1f4;return function(_0x296c3c){logger[_0xdb7b('0x26')](_0x296c3c[_0xdb7b('0x27')]);if(_0x296c3c[_0xdb7b('0x28')]){delete _0x296c3c[_0xdb7b('0x28')];}_0x4b722c[_0xdb7b('0x18')](_0xfc645b)[_0xdb7b('0x29')](_0x296c3c);};}exports['index']=function(_0x324444,_0x2f3803){var _0x37e643={},_0x33078c={},_0x5c74d8={'count':0x0,'rows':[]};var _0x5d2ad5=_[_0xdb7b('0x2a')](db['MailTransferReport']['rawAttributes'],function(_0x16391c){return{'name':_0x16391c[_0xdb7b('0x2b')],'type':_0x16391c[_0xdb7b('0x2c')][_0xdb7b('0x2d')]};});_0x33078c[_0xdb7b('0x2e')]=_[_0xdb7b('0x2a')](_0x5d2ad5,_0xdb7b('0x28'));_0x33078c[_0xdb7b('0x2f')]=_[_0xdb7b('0x30')](_0x324444['query']);_0x33078c[_0xdb7b('0x31')]=_['intersection'](_0x33078c['model'],_0x33078c[_0xdb7b('0x2f')]);_0x37e643[_0xdb7b('0x32')]=_[_0xdb7b('0x33')](_0x33078c['model'],qs['fields'](_0x324444['query'][_0xdb7b('0x34')]));_0x37e643['attributes']=_0x37e643['attributes']['length']?_0x37e643[_0xdb7b('0x32')]:_0x33078c['model'];if(!_0x324444['query'][_0xdb7b('0x35')](_0xdb7b('0x36'))){_0x37e643[_0xdb7b('0x1c')]=qs['limit'](_0x324444[_0xdb7b('0x2f')][_0xdb7b('0x1c')]);_0x37e643[_0xdb7b('0x1a')]=qs[_0xdb7b('0x1a')](_0x324444[_0xdb7b('0x2f')][_0xdb7b('0x1a')]);}_0x37e643[_0xdb7b('0x37')]=qs[_0xdb7b('0x38')](_0x324444[_0xdb7b('0x2f')]['sort']);_0x37e643[_0xdb7b('0x39')]=qs[_0xdb7b('0x31')](_[_0xdb7b('0x3a')](_0x324444[_0xdb7b('0x2f')],_0x33078c[_0xdb7b('0x31')]),_0x5d2ad5);if(_0x324444['query'][_0xdb7b('0x3b')]){_0x37e643[_0xdb7b('0x39')]=_['merge'](_0x37e643[_0xdb7b('0x39')],{'$or':_[_0xdb7b('0x2a')](_0x5d2ad5,function(_0x474496){if(_0x474496[_0xdb7b('0x2c')]!==_0xdb7b('0x3c')){var _0xe10fff={};_0xe10fff[_0x474496[_0xdb7b('0x28')]]={'$like':'%'+_0x324444[_0xdb7b('0x2f')][_0xdb7b('0x3b')]+'%'};return _0xe10fff;}})});}_0x37e643=_[_0xdb7b('0x3d')]({},_0x37e643,_0x324444[_0xdb7b('0x3e')]);var _0xd54b4b={'where':_0x37e643[_0xdb7b('0x39')]};return db[_0xdb7b('0x3f')][_0xdb7b('0x1d')](_0xd54b4b)[_0xdb7b('0x23')](function(_0x57f110){_0x5c74d8[_0xdb7b('0x1d')]=_0x57f110;if(_0x324444[_0xdb7b('0x2f')]['includeAll']){_0x37e643[_0xdb7b('0x40')]=[{'all':!![]}];}return db[_0xdb7b('0x3f')]['findAll'](_0x37e643);})['then'](function(_0x2572f7){_0x5c74d8[_0xdb7b('0x41')]=_0x2572f7;return _0x5c74d8;})[_0xdb7b('0x23')](respondWithFilteredResult(_0x2f3803,_0x37e643))[_0xdb7b('0x42')](handleError(_0x2f3803,null));};exports[_0xdb7b('0x43')]=function(_0x59da39,_0x3c101e){var _0x1d8c7a={'raw':!![],'where':{'id':_0x59da39['params']['id']}},_0x5e3abd={};_0x5e3abd[_0xdb7b('0x2e')]=_['keys'](db[_0xdb7b('0x3f')][_0xdb7b('0x44')]);_0x5e3abd[_0xdb7b('0x2f')]=_[_0xdb7b('0x30')](_0x59da39[_0xdb7b('0x2f')]);_0x5e3abd['filters']=_[_0xdb7b('0x33')](_0x5e3abd['model'],_0x5e3abd[_0xdb7b('0x2f')]);_0x1d8c7a['attributes']=_[_0xdb7b('0x33')](_0x5e3abd['model'],qs[_0xdb7b('0x34')](_0x59da39['query'][_0xdb7b('0x34')]));_0x1d8c7a['attributes']=_0x1d8c7a['attributes'][_0xdb7b('0x45')]?_0x1d8c7a[_0xdb7b('0x32')]:_0x5e3abd[_0xdb7b('0x2e')];if(_0x59da39['query'][_0xdb7b('0x46')]){_0x1d8c7a['include']=[{'all':!![]}];}_0x1d8c7a=_[_0xdb7b('0x3d')]({},_0x1d8c7a,_0x59da39[_0xdb7b('0x3e')]);return db[_0xdb7b('0x3f')][_0xdb7b('0x47')](_0x1d8c7a)[_0xdb7b('0x23')](handleEntityNotFound(_0x3c101e,null))[_0xdb7b('0x23')](respondWithResult(_0x3c101e,null))[_0xdb7b('0x42')](handleError(_0x3c101e,null));};exports[_0xdb7b('0x48')]=function(_0x57ccab,_0x1b002d){return db['MailTransferReport'][_0xdb7b('0x48')](_0x57ccab['body'],{})[_0xdb7b('0x23')](respondWithResult(_0x1b002d,0xc9))[_0xdb7b('0x42')](handleError(_0x1b002d,null));};exports[_0xdb7b('0x22')]=function(_0x1b7472,_0x5ccd31){if(_0x1b7472[_0xdb7b('0x49')]['id']){delete _0x1b7472[_0xdb7b('0x49')]['id'];}return db['MailTransferReport'][_0xdb7b('0x47')]({'where':{'id':_0x1b7472[_0xdb7b('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5ccd31,null))['then'](saveUpdates(_0x1b7472[_0xdb7b('0x49')],null))[_0xdb7b('0x23')](respondWithResult(_0x5ccd31,null))[_0xdb7b('0x42')](handleError(_0x5ccd31,null));};exports[_0xdb7b('0x24')]=function(_0x4639ed,_0x319176){return db[_0xdb7b('0x3f')][_0xdb7b('0x47')]({'where':{'id':_0x4639ed[_0xdb7b('0x4a')]['id']}})[_0xdb7b('0x23')](handleEntityNotFound(_0x319176,null))[_0xdb7b('0x23')](removeEntity(_0x319176,null))[_0xdb7b('0x42')](handleError(_0x319176,null));};exports['describe']=function(_0x1f0b02,_0x5123a3){return db[_0xdb7b('0x3f')][_0xdb7b('0x4b')]()[_0xdb7b('0x23')](respondWithResult(_0x5123a3,null))[_0xdb7b('0x42')](handleError(_0x5123a3,null));};
\ No newline at end of file
+var _0x16cb=['intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','type','VIRTUAL','filter','merge','options','MailTransferReport','include','findAll','rows','catch','show','includeAll','find','create','body','params','describe','rimraf','request-promise','moment','bluebird','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','error','name','send','index','map','fieldName','model','query','keys','attributes'];(function(_0x3bbbf3,_0x5f1261){var _0x257e1f=function(_0x3b5596){while(--_0x3b5596){_0x3bbbf3['push'](_0x3bbbf3['shift']());}};_0x257e1f(++_0x5f1261);}(_0x16cb,0x1ca));var _0xb16c=function(_0x3db47d,_0x2dd66e){_0x3db47d=_0x3db47d-0x0;var _0x34a00f=_0x16cb[_0x3db47d];return _0x34a00f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb16c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb16c('0x1'));var moment=require(_0xb16c('0x2'));var BPromise=require(_0xb16c('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb16c('0x4'));var sox=require(_0xb16c('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb16c('0x6'));var _=require(_0xb16c('0x7'));var squel=require('squel');var crypto=require(_0xb16c('0x8'));var jsforce=require(_0xb16c('0x9'));var deskjs=require(_0xb16c('0xa'));var toCsv=require(_0xb16c('0xb'));var querystring=require(_0xb16c('0xc'));var Papa=require(_0xb16c('0xd'));var Redis=require(_0xb16c('0xe'));var authService=require(_0xb16c('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb16c('0x10'));var logger=require(_0xb16c('0x11'))(_0xb16c('0x12'));var utils=require(_0xb16c('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xb16c('0x14'));var db=require(_0xb16c('0x15'))['db'];function respondWithStatusCode(_0x4e8e82,_0x3a0a65){_0x3a0a65=_0x3a0a65||0xcc;return function(_0x484236){if(_0x484236){return _0x4e8e82[_0xb16c('0x16')](_0x3a0a65);}return _0x4e8e82[_0xb16c('0x17')](_0x3a0a65)[_0xb16c('0x18')]();};}function respondWithResult(_0x5746bc,_0x2fa663){_0x2fa663=_0x2fa663||0xc8;return function(_0x13deb5){if(_0x13deb5){return _0x5746bc['status'](_0x2fa663)[_0xb16c('0x19')](_0x13deb5);}};}function respondWithFilteredResult(_0x35fc77,_0x57ce78){return function(_0x208760){if(_0x208760){var _0x5cf57c=typeof _0x57ce78[_0xb16c('0x1a')]===_0xb16c('0x1b')&&typeof _0x57ce78[_0xb16c('0x1c')]===_0xb16c('0x1b');var _0x3cb364=_0x208760[_0xb16c('0x1d')];var _0x147cf0=_0x5cf57c?0x0:_0x57ce78[_0xb16c('0x1a')];var _0x493cd9=_0x5cf57c?_0x208760[_0xb16c('0x1d')]:_0x57ce78['offset']+_0x57ce78[_0xb16c('0x1c')];var _0x3f5b92;if(_0x493cd9>=_0x3cb364){_0x493cd9=_0x3cb364;_0x3f5b92=0xc8;}else{_0x3f5b92=0xce;}_0x35fc77[_0xb16c('0x17')](_0x3f5b92);return _0x35fc77[_0xb16c('0x1e')](_0xb16c('0x1f'),_0x147cf0+'-'+_0x493cd9+'/'+_0x3cb364)['json'](_0x208760);}return null;};}function patchUpdates(_0x2679a3){return function(_0xd64225){try{jsonpatch['apply'](_0xd64225,_0x2679a3,!![]);}catch(_0x30e37e){return BPromise['reject'](_0x30e37e);}return _0xd64225[_0xb16c('0x20')]();};}function saveUpdates(_0x27df3e,_0x9664fb){return function(_0x4a28cd){if(_0x4a28cd){return _0x4a28cd[_0xb16c('0x21')](_0x27df3e)[_0xb16c('0x22')](function(_0x39b007){return _0x39b007;});}return null;};}function removeEntity(_0xf51640,_0x32c9f5){return function(_0x1ee571){if(_0x1ee571){return _0x1ee571[_0xb16c('0x23')]()[_0xb16c('0x22')](function(){_0xf51640[_0xb16c('0x17')](0xcc)[_0xb16c('0x18')]();});}};}function handleEntityNotFound(_0x5f1797,_0x3b6282){return function(_0x5e6b14){if(!_0x5e6b14){_0x5f1797[_0xb16c('0x16')](0x194);}return _0x5e6b14;};}function handleError(_0x3766fe,_0x29fc5b){_0x29fc5b=_0x29fc5b||0x1f4;return function(_0x355f1f){logger[_0xb16c('0x24')](_0x355f1f['stack']);if(_0x355f1f[_0xb16c('0x25')]){delete _0x355f1f['name'];}_0x3766fe[_0xb16c('0x17')](_0x29fc5b)[_0xb16c('0x26')](_0x355f1f);};}exports[_0xb16c('0x27')]=function(_0x5dee87,_0x5bc1c0){var _0x2667fc={},_0x403bcf={},_0x3d032f={'count':0x0,'rows':[]};var _0x4f130f=_[_0xb16c('0x28')](db['MailTransferReport']['rawAttributes'],function(_0x3d854d){return{'name':_0x3d854d[_0xb16c('0x29')],'type':_0x3d854d['type']['key']};});_0x403bcf[_0xb16c('0x2a')]=_[_0xb16c('0x28')](_0x4f130f,_0xb16c('0x25'));_0x403bcf[_0xb16c('0x2b')]=_[_0xb16c('0x2c')](_0x5dee87[_0xb16c('0x2b')]);_0x403bcf['filters']=_['intersection'](_0x403bcf['model'],_0x403bcf[_0xb16c('0x2b')]);_0x2667fc[_0xb16c('0x2d')]=_[_0xb16c('0x2e')](_0x403bcf[_0xb16c('0x2a')],qs[_0xb16c('0x2f')](_0x5dee87[_0xb16c('0x2b')][_0xb16c('0x2f')]));_0x2667fc['attributes']=_0x2667fc[_0xb16c('0x2d')][_0xb16c('0x30')]?_0x2667fc[_0xb16c('0x2d')]:_0x403bcf[_0xb16c('0x2a')];if(!_0x5dee87[_0xb16c('0x2b')][_0xb16c('0x31')](_0xb16c('0x32'))){_0x2667fc[_0xb16c('0x1c')]=qs[_0xb16c('0x1c')](_0x5dee87[_0xb16c('0x2b')][_0xb16c('0x1c')]);_0x2667fc['offset']=qs[_0xb16c('0x1a')](_0x5dee87[_0xb16c('0x2b')][_0xb16c('0x1a')]);}_0x2667fc['order']=qs[_0xb16c('0x33')](_0x5dee87[_0xb16c('0x2b')]['sort']);_0x2667fc[_0xb16c('0x34')]=qs[_0xb16c('0x35')](_[_0xb16c('0x36')](_0x5dee87['query'],_0x403bcf[_0xb16c('0x35')]),_0x4f130f);if(_0x5dee87['query']['filter']){_0x2667fc['where']=_['merge'](_0x2667fc[_0xb16c('0x34')],{'$or':_[_0xb16c('0x28')](_0x4f130f,function(_0x5cdce3){if(_0x5cdce3[_0xb16c('0x37')]!==_0xb16c('0x38')){var _0x4b6dea={};_0x4b6dea[_0x5cdce3[_0xb16c('0x25')]]={'$like':'%'+_0x5dee87[_0xb16c('0x2b')][_0xb16c('0x39')]+'%'};return _0x4b6dea;}})});}_0x2667fc=_[_0xb16c('0x3a')]({},_0x2667fc,_0x5dee87[_0xb16c('0x3b')]);var _0x127109={'where':_0x2667fc['where']};return db[_0xb16c('0x3c')][_0xb16c('0x1d')](_0x127109)[_0xb16c('0x22')](function(_0x55e8e4){_0x3d032f[_0xb16c('0x1d')]=_0x55e8e4;if(_0x5dee87[_0xb16c('0x2b')]['includeAll']){_0x2667fc[_0xb16c('0x3d')]=[{'all':!![]}];}return db[_0xb16c('0x3c')][_0xb16c('0x3e')](_0x2667fc);})[_0xb16c('0x22')](function(_0x579a09){_0x3d032f[_0xb16c('0x3f')]=_0x579a09;return _0x3d032f;})[_0xb16c('0x22')](respondWithFilteredResult(_0x5bc1c0,_0x2667fc))[_0xb16c('0x40')](handleError(_0x5bc1c0,null));};exports[_0xb16c('0x41')]=function(_0x3cb1e2,_0x5b142b){var _0x279ea7={'raw':!![],'where':{'id':_0x3cb1e2['params']['id']}},_0x253656={};_0x253656[_0xb16c('0x2a')]=_['keys'](db[_0xb16c('0x3c')]['rawAttributes']);_0x253656['query']=_[_0xb16c('0x2c')](_0x3cb1e2[_0xb16c('0x2b')]);_0x253656['filters']=_['intersection'](_0x253656[_0xb16c('0x2a')],_0x253656[_0xb16c('0x2b')]);_0x279ea7['attributes']=_[_0xb16c('0x2e')](_0x253656['model'],qs[_0xb16c('0x2f')](_0x3cb1e2[_0xb16c('0x2b')][_0xb16c('0x2f')]));_0x279ea7[_0xb16c('0x2d')]=_0x279ea7[_0xb16c('0x2d')][_0xb16c('0x30')]?_0x279ea7[_0xb16c('0x2d')]:_0x253656[_0xb16c('0x2a')];if(_0x3cb1e2['query'][_0xb16c('0x42')]){_0x279ea7[_0xb16c('0x3d')]=[{'all':!![]}];}_0x279ea7=_[_0xb16c('0x3a')]({},_0x279ea7,_0x3cb1e2['options']);return db[_0xb16c('0x3c')][_0xb16c('0x43')](_0x279ea7)[_0xb16c('0x22')](handleEntityNotFound(_0x5b142b,null))[_0xb16c('0x22')](respondWithResult(_0x5b142b,null))[_0xb16c('0x40')](handleError(_0x5b142b,null));};exports[_0xb16c('0x44')]=function(_0xc117ed,_0x50569a){return db[_0xb16c('0x3c')][_0xb16c('0x44')](_0xc117ed[_0xb16c('0x45')],{})['then'](respondWithResult(_0x50569a,0xc9))[_0xb16c('0x40')](handleError(_0x50569a,null));};exports[_0xb16c('0x21')]=function(_0x46f81c,_0x5b6dec){if(_0x46f81c[_0xb16c('0x45')]['id']){delete _0x46f81c[_0xb16c('0x45')]['id'];}return db[_0xb16c('0x3c')][_0xb16c('0x43')]({'where':{'id':_0x46f81c[_0xb16c('0x46')]['id']}})['then'](handleEntityNotFound(_0x5b6dec,null))[_0xb16c('0x22')](saveUpdates(_0x46f81c[_0xb16c('0x45')],null))['then'](respondWithResult(_0x5b6dec,null))[_0xb16c('0x40')](handleError(_0x5b6dec,null));};exports[_0xb16c('0x23')]=function(_0x51a0ca,_0x2300fc){return db[_0xb16c('0x3c')][_0xb16c('0x43')]({'where':{'id':_0x51a0ca[_0xb16c('0x46')]['id']}})['then'](handleEntityNotFound(_0x2300fc,null))[_0xb16c('0x22')](removeEntity(_0x2300fc,null))['catch'](handleError(_0x2300fc,null));};exports['describe']=function(_0x6d6919,_0x12b4de){return db['MailTransferReport'][_0xb16c('0x47')]()[_0xb16c('0x22')](respondWithResult(_0x12b4de,null))[_0xb16c('0x40')](handleError(_0x12b4de,null));};
\ No newline at end of file
index aea84b7..9ad91fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1280=['./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x28416d,_0xb5b0c1){var _0x447745=function(_0x251bc4){while(--_0x251bc4){_0x28416d['push'](_0x28416d['shift']());}};_0x447745(++_0xb5b0c1);}(_0x1280,0xba));var _0x0128=function(_0x4cbb8e,_0x1047c8){_0x4cbb8e=_0x4cbb8e-0x0;var _0x17846f=_0x1280[_0x4cbb8e];return _0x17846f;};'use strict';var _=require(_0x0128('0x0'));var util=require(_0x0128('0x1'));var logger=require(_0x0128('0x2'))(_0x0128('0x3'));var moment=require(_0x0128('0x4'));var BPromise=require(_0x0128('0x5'));var rp=require(_0x0128('0x6'));var fs=require('fs');var path=require(_0x0128('0x7'));var rimraf=require(_0x0128('0x8'));var config=require('../../config/environment');var attributes=require(_0x0128('0x9'));module[_0x0128('0xa')]=function(_0x59959a,_0x589536){return _0x59959a[_0x0128('0xb')](_0x0128('0xc'),attributes,{'tableName':_0x0128('0xd'),'paranoid':![],'indexes':[{'name':_0x0128('0xe'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x252f=['./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer','uniqueid','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x40302f,_0x1c909c){var _0x27a251=function(_0x21808b){while(--_0x21808b){_0x40302f['push'](_0x40302f['shift']());}};_0x27a251(++_0x1c909c);}(_0x252f,0x1e2));var _0xf252=function(_0x1e7f4d,_0x20acaa){_0x1e7f4d=_0x1e7f4d-0x0;var _0x5f0fd9=_0x252f[_0x1e7f4d];return _0x5f0fd9;};'use strict';var _=require(_0xf252('0x0'));var util=require('util');var logger=require(_0xf252('0x1'))(_0xf252('0x2'));var moment=require(_0xf252('0x3'));var BPromise=require(_0xf252('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf252('0x5'));var rimraf=require(_0xf252('0x6'));var config=require(_0xf252('0x7'));var attributes=require(_0xf252('0x8'));module[_0xf252('0x9')]=function(_0x2bb2e8,_0x351b14){return _0x2bb2e8[_0xf252('0xa')](_0xf252('0xb'),attributes,{'tableName':_0xf252('0xc'),'paranoid':![],'indexes':[{'name':_0xf252('0xd'),'fields':[_0xf252('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index a1ad8e9..3f0dc20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb679=['MailTransferReport,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x179e11,_0xf65436){var _0x549f04=function(_0x610545){while(--_0x610545){_0x179e11['push'](_0x179e11['shift']());}};_0x549f04(++_0xf65436);}(_0xb679,0x95));var _0x9b67=function(_0x3895b5,_0xd7883c){_0x3895b5=_0x3895b5-0x0;var _0x405a6b=_0xb679[_0x3895b5];return _0x405a6b;};'use strict';var _=require(_0x9b67('0x0'));var util=require(_0x9b67('0x1'));var moment=require(_0x9b67('0x2'));var BPromise=require('bluebird');var rs=require(_0x9b67('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9b67('0x4'))['db'];var utils=require(_0x9b67('0x5'));var logger=require(_0x9b67('0x6'))(_0x9b67('0x7'));var config=require(_0x9b67('0x8'));var jayson=require(_0x9b67('0x9'));var client=jayson[_0x9b67('0xa')][_0x9b67('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1c591d,_0x189052,_0x2001d3){return new BPromise(function(_0x2e0669,_0x188ed9){return client[_0x9b67('0xc')](_0x1c591d,_0x2001d3)['then'](function(_0x56c8d4){logger[_0x9b67('0xd')]('MailTransferReport,\x20%s,\x20%s',_0x189052,'request\x20sent');logger[_0x9b67('0xe')](_0x9b67('0xf'),_0x189052,'request\x20sent',JSON[_0x9b67('0x10')](_0x56c8d4));if(_0x56c8d4[_0x9b67('0x11')]){if(_0x56c8d4['error'][_0x9b67('0x12')]===0x1f4){logger[_0x9b67('0x11')](_0x9b67('0x13'),_0x189052,_0x56c8d4[_0x9b67('0x11')][_0x9b67('0x14')]);return _0x188ed9(_0x56c8d4[_0x9b67('0x11')][_0x9b67('0x14')]);}logger['error'](_0x9b67('0x13'),_0x189052,_0x56c8d4[_0x9b67('0x11')][_0x9b67('0x14')]);return _0x2e0669(_0x56c8d4['error'][_0x9b67('0x14')]);}else{logger[_0x9b67('0xd')]('MailTransferReport,\x20%s,\x20%s',_0x189052,_0x9b67('0x15'));_0x2e0669(_0x56c8d4[_0x9b67('0x16')][_0x9b67('0x14')]);}})[_0x9b67('0x17')](function(_0x355245){logger['error'](_0x9b67('0x13'),_0x189052,_0x355245);_0x188ed9(_0x355245);});});}
\ No newline at end of file
+var _0x016e=['../../config/logger','rpc','jayson/promise','http','request','info','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','MailTransferReport,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','moment','bluebird'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x016e,0x1e3));var _0xe016=function(_0x45d2ec,_0x5736a5){_0x45d2ec=_0x45d2ec-0x0;var _0x454a8f=_0x016e[_0x45d2ec];return _0x454a8f;};'use strict';var _=require(_0xe016('0x0'));var util=require('util');var moment=require(_0xe016('0x1'));var BPromise=require(_0xe016('0x2'));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(_0xe016('0x3'))(_0xe016('0x4'));var config=require('../../config/environment');var jayson=require(_0xe016('0x5'));var client=jayson['client'][_0xe016('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x320276,_0x8e7596,_0x28dace){return new BPromise(function(_0xcc825d,_0x1f7d9c){return client[_0xe016('0x7')](_0x320276,_0x28dace)['then'](function(_0x374c49){logger[_0xe016('0x8')]('MailTransferReport,\x20%s,\x20%s',_0x8e7596,'request\x20sent');logger['debug'](_0xe016('0x9'),_0x8e7596,'request\x20sent',JSON[_0xe016('0xa')](_0x374c49));if(_0x374c49['error']){if(_0x374c49[_0xe016('0xb')][_0xe016('0xc')]===0x1f4){logger[_0xe016('0xb')](_0xe016('0xd'),_0x8e7596,_0x374c49['error'][_0xe016('0xe')]);return _0x1f7d9c(_0x374c49['error'][_0xe016('0xe')]);}logger['error'](_0xe016('0xd'),_0x8e7596,_0x374c49['error'][_0xe016('0xe')]);return _0xcc825d(_0x374c49[_0xe016('0xb')][_0xe016('0xe')]);}else{logger['info'](_0xe016('0xd'),_0x8e7596,_0xe016('0xf'));_0xcc825d(_0x374c49[_0xe016('0x10')]['message']);}})[_0xe016('0x11')](function(_0x41cae0){logger[_0xe016('0xb')](_0xe016('0xd'),_0x8e7596,_0x41cae0);_0x1f7d9c(_0x41cae0);});});}
\ No newline at end of file
index de32faa..2b226d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d0e=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','isAuthenticated','index','get','/describe','describe','/:id','post','create','put','update'];(function(_0x3342c4,_0x7bfcd8){var _0x22fd6a=function(_0x3f8f46){while(--_0x3f8f46){_0x3342c4['push'](_0x3342c4['shift']());}};_0x22fd6a(++_0x7bfcd8);}(_0x1d0e,0xdb));var _0xe1d0=function(_0x3b67c7,_0x1e0a50){_0x3b67c7=_0x3b67c7-0x0;var _0x4e5d70=_0x1d0e[_0x3b67c7];return _0x4e5d70;};'use strict';var multer=require(_0xe1d0('0x0'));var util=require(_0xe1d0('0x1'));var path=require(_0xe1d0('0x2'));var timeout=require(_0xe1d0('0x3'));var express=require(_0xe1d0('0x4'));var router=express[_0xe1d0('0x5')]();var fs_extra=require(_0xe1d0('0x6'));var auth=require(_0xe1d0('0x7'));var interaction=require(_0xe1d0('0x8'));var config=require(_0xe1d0('0x9'));var controller=require(_0xe1d0('0xa'));router['get']('/',auth[_0xe1d0('0xb')](),controller[_0xe1d0('0xc')]);router[_0xe1d0('0xd')](_0xe1d0('0xe'),auth[_0xe1d0('0xb')](),controller[_0xe1d0('0xf')]);router[_0xe1d0('0xd')](_0xe1d0('0x10'),auth[_0xe1d0('0xb')](),controller['show']);router[_0xe1d0('0x11')]('/',auth[_0xe1d0('0xb')](),controller[_0xe1d0('0x12')]);router[_0xe1d0('0x13')](_0xe1d0('0x10'),auth[_0xe1d0('0xb')](),controller[_0xe1d0('0x14')]);router[_0xe1d0('0x15')]('/:id',auth[_0xe1d0('0xb')](),controller[_0xe1d0('0x16')]);module[_0xe1d0('0x17')]=router;
\ No newline at end of file
+var _0x08b7=['Router','../../components/auth/service','./memberReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','destroy','multer','util','path','express'];(function(_0x4444ab,_0x3fc6ad){var _0x4d86e9=function(_0x33905c){while(--_0x33905c){_0x4444ab['push'](_0x4444ab['shift']());}};_0x4d86e9(++_0x3fc6ad);}(_0x08b7,0x9c));var _0x708b=function(_0x3191b4,_0x357c67){_0x3191b4=_0x3191b4-0x0;var _0x2aaf8a=_0x08b7[_0x3191b4];return _0x2aaf8a;};'use strict';var multer=require(_0x708b('0x0'));var util=require(_0x708b('0x1'));var path=require(_0x708b('0x2'));var timeout=require('connect-timeout');var express=require(_0x708b('0x3'));var router=express[_0x708b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x708b('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x708b('0x6'));router[_0x708b('0x7')]('/',auth[_0x708b('0x8')](),controller['index']);router[_0x708b('0x7')](_0x708b('0x9'),auth[_0x708b('0x8')](),controller[_0x708b('0xa')]);router[_0x708b('0x7')](_0x708b('0xb'),auth['isAuthenticated'](),controller[_0x708b('0xc')]);router[_0x708b('0xd')]('/',auth[_0x708b('0x8')](),controller[_0x708b('0xe')]);router['put'](_0x708b('0xb'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x708b('0xb'),auth['isAuthenticated'](),controller[_0x708b('0xf')]);module['exports']=router;
\ No newline at end of file
index cce61a7..3f9954e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b7c=['DEFAULT\x20PAUSE','INTEGER','DATE','getDataValue','enterAt','diff','setDataValue','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports','STRING'];(function(_0x536442,_0xdc7fc3){var _0x2d61dd=function(_0x5b45ce){while(--_0x5b45ce){_0x536442['push'](_0x536442['shift']());}};_0x2d61dd(++_0xdc7fc3);}(_0x8b7c,0x119));var _0xc8b7=function(_0x352108,_0xb5cdc3){_0x352108=_0x352108-0x0;var _0x2c901c=_0x8b7c[_0x352108];return _0x2c901c;};'use strict';var Sequelize=require(_0xc8b7('0x0'));var moment=require(_0xc8b7('0x1'));module[_0xc8b7('0x2')]={'channel':{'type':Sequelize[_0xc8b7('0x3')]},'membername':{'type':Sequelize[_0xc8b7('0x3')]},'interface':{'type':Sequelize[_0xc8b7('0x3')]},'type':{'type':Sequelize[_0xc8b7('0x3')],'defaultValue':_0xc8b7('0x4'),'comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize[_0xc8b7('0x5')]},'enterAt':{'type':Sequelize[_0xc8b7('0x6')]},'exitAt':{'type':Sequelize[_0xc8b7('0x6')],'set':function(_0x4a8b93){var _0x256c78=moment(_0x4a8b93);var _0x90cb38=moment(this[_0xc8b7('0x7')](_0xc8b7('0x8')));var _0x9e4763=_0x256c78[_0xc8b7('0x9')](_0x90cb38,'seconds');this[_0xc8b7('0xa')]('exitAt',_0x4a8b93);this[_0xc8b7('0xa')](_0xc8b7('0xb'),_0x9e4763||null);}},'data1':{'type':Sequelize[_0xc8b7('0x3')],'comment':_0xc8b7('0xc')},'data2':{'type':Sequelize[_0xc8b7('0x3')],'comment':'talk:[start]'},'data3':{'type':Sequelize['STRING'],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0xc8b7('0x3')],'comment':_0xc8b7('0xd')},'data5':{'type':Sequelize[_0xc8b7('0x3')],'comment':_0xc8b7('0xe')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x720c=['sequelize','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','enterAt','diff','seconds','setDataValue','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[dial\x20string]','talk:[queue]'];(function(_0x3a7fc2,_0x2a5b3b){var _0x295a6a=function(_0x24792f){while(--_0x24792f){_0x3a7fc2['push'](_0x3a7fc2['shift']());}};_0x295a6a(++_0x2a5b3b);}(_0x720c,0x154));var _0xc720=function(_0x336c8e,_0x564361){_0x336c8e=_0x336c8e-0x0;var _0x4d33ee=_0x720c[_0x336c8e];return _0x4d33ee;};'use strict';var Sequelize=require(_0xc720('0x0'));var moment=require('moment');module[_0xc720('0x1')]={'channel':{'type':Sequelize[_0xc720('0x2')]},'membername':{'type':Sequelize[_0xc720('0x2')]},'interface':{'type':Sequelize[_0xc720('0x2')]},'type':{'type':Sequelize['STRING'],'defaultValue':_0xc720('0x3'),'comment':_0xc720('0x4')},'duration':{'type':Sequelize[_0xc720('0x5')]},'enterAt':{'type':Sequelize[_0xc720('0x6')]},'exitAt':{'type':Sequelize[_0xc720('0x6')],'set':function(_0x6f8d9f){var _0x7d6830=moment(_0x6f8d9f);var _0x5bc8b0=moment(this[_0xc720('0x7')](_0xc720('0x8')));var _0x10a2c8=_0x7d6830[_0xc720('0x9')](_0x5bc8b0,_0xc720('0xa'));this['setDataValue']('exitAt',_0x6f8d9f);this[_0xc720('0xb')]('duration',_0x10a2c8||null);}},'data1':{'type':Sequelize[_0xc720('0x2')],'comment':_0xc720('0xc')},'data2':{'type':Sequelize['STRING'],'comment':_0xc720('0xd')},'data3':{'type':Sequelize[_0xc720('0x2')],'comment':_0xc720('0xe')},'data4':{'type':Sequelize[_0xc720('0x2')],'comment':_0xc720('0xf')},'data5':{'type':Sequelize['STRING'],'comment':_0xc720('0x10')},'role':{'type':Sequelize[_0xc720('0x2')]},'internal':{'type':Sequelize[_0xc720('0x5')]},'uniqueid':{'type':Sequelize[_0xc720('0x2')]}};
\ No newline at end of file
index 257d054..c4cb97c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['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','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','MemberReport','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x29632e,_0x40f63f){var _0xda5a7e=function(_0x1ee270){while(--_0x1ee270){_0x29632e['push'](_0x29632e['shift']());}};_0xda5a7e(++_0x40f63f);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'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['MemberReport']['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['MemberReport'][_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['MemberReport'][_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('0x40')][_0x7995('0x47')]({'where':{'id':_0x4ffc8a['params']['id']}})['then'](handleEntityNotFound(_0x19da63,null))['then'](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x4c')]=function(_0x4cf5db,_0x1cd85){return db[_0x7995('0x40')][_0x7995('0x4c')]()[_0x7995('0x26')](respondWithResult(_0x1cd85,null))[_0x7995('0x49')](handleError(_0x1cd85,null));};
\ No newline at end of file
+var _0x008c=['destroy','sendStatus','send','index','MemberReport','rawAttributes','key','model','map','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','show','catch','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','save','update','then'];(function(_0x135a1c,_0x28b5f6){var _0x295c98=function(_0x2747fc){while(--_0x2747fc){_0x135a1c['push'](_0x135a1c['shift']());}};_0x295c98(++_0x28b5f6);}(_0x008c,0x188));var _0xc008=function(_0x41c842,_0x3865f6){_0x41c842=_0x41c842-0x0;var _0x15ee6b=_0x008c[_0x41c842];return _0x15ee6b;};'use strict';var emlformat=require(_0xc008('0x0'));var rimraf=require(_0xc008('0x1'));var zipdir=require(_0xc008('0x2'));var jsonpatch=require(_0xc008('0x3'));var rp=require(_0xc008('0x4'));var moment=require('moment');var BPromise=require(_0xc008('0x5'));var Mustache=require(_0xc008('0x6'));var util=require(_0xc008('0x7'));var path=require(_0xc008('0x8'));var sox=require(_0xc008('0x9'));var csv=require(_0xc008('0xa'));var ejs=require(_0xc008('0xb'));var fs=require('fs');var fs_extra=require(_0xc008('0xc'));var _=require(_0xc008('0xd'));var squel=require('squel');var crypto=require(_0xc008('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc008('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc008('0x10'));var Redis=require(_0xc008('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc008('0x12'));var logger=require(_0xc008('0x13'))('api');var utils=require(_0xc008('0x14'));var config=require(_0xc008('0x15'));var licenseUtil=require(_0xc008('0x16'));var db=require(_0xc008('0x17'))['db'];function respondWithStatusCode(_0x9ffa93,_0x1819c6){_0x1819c6=_0x1819c6||0xcc;return function(_0x69726e){if(_0x69726e){return _0x9ffa93['sendStatus'](_0x1819c6);}return _0x9ffa93['status'](_0x1819c6)[_0xc008('0x18')]();};}function respondWithResult(_0x50c1ab,_0x25e13f){_0x25e13f=_0x25e13f||0xc8;return function(_0x4584e1){if(_0x4584e1){return _0x50c1ab[_0xc008('0x19')](_0x25e13f)[_0xc008('0x1a')](_0x4584e1);}};}function respondWithFilteredResult(_0x3f0ecf,_0x5ee00b){return function(_0x5e894e){if(_0x5e894e){var _0x4bd0f4=typeof _0x5ee00b[_0xc008('0x1b')]===_0xc008('0x1c')&&typeof _0x5ee00b[_0xc008('0x1d')]===_0xc008('0x1c');var _0x4fe771=_0x5e894e['count'];var _0x540e45=_0x4bd0f4?0x0:_0x5ee00b['offset'];var _0x46042b=_0x4bd0f4?_0x5e894e[_0xc008('0x1e')]:_0x5ee00b['offset']+_0x5ee00b[_0xc008('0x1d')];var _0x5906e6;if(_0x46042b>=_0x4fe771){_0x46042b=_0x4fe771;_0x5906e6=0xc8;}else{_0x5906e6=0xce;}_0x3f0ecf['status'](_0x5906e6);return _0x3f0ecf['set']('Content-Range',_0x540e45+'-'+_0x46042b+'/'+_0x4fe771)[_0xc008('0x1a')](_0x5e894e);}return null;};}function patchUpdates(_0x4b9726){return function(_0x5560b1){try{jsonpatch['apply'](_0x5560b1,_0x4b9726,!![]);}catch(_0x4a582d){return BPromise['reject'](_0x4a582d);}return _0x5560b1[_0xc008('0x1f')]();};}function saveUpdates(_0x4777a6,_0x251db2){return function(_0x415af3){if(_0x415af3){return _0x415af3[_0xc008('0x20')](_0x4777a6)[_0xc008('0x21')](function(_0x4f43e2){return _0x4f43e2;});}return null;};}function removeEntity(_0x459fd9,_0x5c85f2){return function(_0x58a6ea){if(_0x58a6ea){return _0x58a6ea[_0xc008('0x22')]()[_0xc008('0x21')](function(){_0x459fd9[_0xc008('0x19')](0xcc)[_0xc008('0x18')]();});}};}function handleEntityNotFound(_0x5410f5,_0x48582b){return function(_0x5de1e9){if(!_0x5de1e9){_0x5410f5[_0xc008('0x23')](0x194);}return _0x5de1e9;};}function handleError(_0x15dade,_0x92c582){_0x92c582=_0x92c582||0x1f4;return function(_0x2e31c2){logger['error'](_0x2e31c2['stack']);if(_0x2e31c2['name']){delete _0x2e31c2['name'];}_0x15dade['status'](_0x92c582)[_0xc008('0x24')](_0x2e31c2);};}exports[_0xc008('0x25')]=function(_0x25eae4,_0x529961){var _0x24c14c={},_0x32390d={},_0x209591={'count':0x0,'rows':[]};var _0x2a7d4f=_['map'](db[_0xc008('0x26')][_0xc008('0x27')],function(_0x53ed35){return{'name':_0x53ed35['fieldName'],'type':_0x53ed35['type'][_0xc008('0x28')]};});_0x32390d[_0xc008('0x29')]=_[_0xc008('0x2a')](_0x2a7d4f,_0xc008('0x2b'));_0x32390d[_0xc008('0x2c')]=_[_0xc008('0x2d')](_0x25eae4[_0xc008('0x2c')]);_0x32390d[_0xc008('0x2e')]=_[_0xc008('0x2f')](_0x32390d[_0xc008('0x29')],_0x32390d[_0xc008('0x2c')]);_0x24c14c[_0xc008('0x30')]=_['intersection'](_0x32390d[_0xc008('0x29')],qs[_0xc008('0x31')](_0x25eae4['query'][_0xc008('0x31')]));_0x24c14c[_0xc008('0x30')]=_0x24c14c[_0xc008('0x30')][_0xc008('0x32')]?_0x24c14c[_0xc008('0x30')]:_0x32390d[_0xc008('0x29')];if(!_0x25eae4[_0xc008('0x2c')][_0xc008('0x33')](_0xc008('0x34'))){_0x24c14c['limit']=qs[_0xc008('0x1d')](_0x25eae4[_0xc008('0x2c')][_0xc008('0x1d')]);_0x24c14c[_0xc008('0x1b')]=qs[_0xc008('0x1b')](_0x25eae4[_0xc008('0x2c')][_0xc008('0x1b')]);}_0x24c14c['order']=qs[_0xc008('0x35')](_0x25eae4[_0xc008('0x2c')]['sort']);_0x24c14c[_0xc008('0x36')]=qs[_0xc008('0x2e')](_['pick'](_0x25eae4[_0xc008('0x2c')],_0x32390d[_0xc008('0x2e')]),_0x2a7d4f);if(_0x25eae4[_0xc008('0x2c')]['filter']){_0x24c14c['where']=_['merge'](_0x24c14c[_0xc008('0x36')],{'$or':_['map'](_0x2a7d4f,function(_0x3dd0ac){if(_0x3dd0ac[_0xc008('0x37')]!==_0xc008('0x38')){var _0x440459={};_0x440459[_0x3dd0ac[_0xc008('0x2b')]]={'$like':'%'+_0x25eae4[_0xc008('0x2c')][_0xc008('0x39')]+'%'};return _0x440459;}})});}_0x24c14c=_[_0xc008('0x3a')]({},_0x24c14c,_0x25eae4[_0xc008('0x3b')]);var _0x387dfd={'where':_0x24c14c[_0xc008('0x36')]};return db[_0xc008('0x26')][_0xc008('0x1e')](_0x387dfd)[_0xc008('0x21')](function(_0x4cace5){_0x209591[_0xc008('0x1e')]=_0x4cace5;if(_0x25eae4[_0xc008('0x2c')][_0xc008('0x3c')]){_0x24c14c[_0xc008('0x3d')]=[{'all':!![]}];}return db['MemberReport'][_0xc008('0x3e')](_0x24c14c);})[_0xc008('0x21')](function(_0xc8cb91){_0x209591[_0xc008('0x3f')]=_0xc8cb91;return _0x209591;})[_0xc008('0x21')](respondWithFilteredResult(_0x529961,_0x24c14c))['catch'](handleError(_0x529961,null));};exports[_0xc008('0x40')]=function(_0x3323f4,_0x3794b0){var _0x3e9a99={'raw':!![],'where':{'id':_0x3323f4['params']['id']}},_0x7279e8={};_0x7279e8[_0xc008('0x29')]=_[_0xc008('0x2d')](db[_0xc008('0x26')][_0xc008('0x27')]);_0x7279e8['query']=_[_0xc008('0x2d')](_0x3323f4[_0xc008('0x2c')]);_0x7279e8[_0xc008('0x2e')]=_['intersection'](_0x7279e8[_0xc008('0x29')],_0x7279e8['query']);_0x3e9a99[_0xc008('0x30')]=_['intersection'](_0x7279e8[_0xc008('0x29')],qs[_0xc008('0x31')](_0x3323f4['query'][_0xc008('0x31')]));_0x3e9a99[_0xc008('0x30')]=_0x3e9a99[_0xc008('0x30')]['length']?_0x3e9a99[_0xc008('0x30')]:_0x7279e8[_0xc008('0x29')];if(_0x3323f4[_0xc008('0x2c')][_0xc008('0x3c')]){_0x3e9a99[_0xc008('0x3d')]=[{'all':!![]}];}_0x3e9a99=_[_0xc008('0x3a')]({},_0x3e9a99,_0x3323f4['options']);return db['MemberReport']['find'](_0x3e9a99)[_0xc008('0x21')](handleEntityNotFound(_0x3794b0,null))[_0xc008('0x21')](respondWithResult(_0x3794b0,null))[_0xc008('0x41')](handleError(_0x3794b0,null));};exports[_0xc008('0x42')]=function(_0x25289f,_0x24f6a4){return db[_0xc008('0x26')][_0xc008('0x42')](_0x25289f['body'],{})['then'](respondWithResult(_0x24f6a4,0xc9))['catch'](handleError(_0x24f6a4,null));};exports[_0xc008('0x20')]=function(_0x2651cf,_0x158eae){if(_0x2651cf['body']['id']){delete _0x2651cf[_0xc008('0x43')]['id'];}return db[_0xc008('0x26')][_0xc008('0x44')]({'where':{'id':_0x2651cf[_0xc008('0x45')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x158eae,null))[_0xc008('0x21')](saveUpdates(_0x2651cf[_0xc008('0x43')],null))[_0xc008('0x21')](respondWithResult(_0x158eae,null))[_0xc008('0x41')](handleError(_0x158eae,null));};exports[_0xc008('0x22')]=function(_0x52c444,_0x4c63d4){return db[_0xc008('0x26')]['find']({'where':{'id':_0x52c444[_0xc008('0x45')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x4c63d4,null))[_0xc008('0x21')](removeEntity(_0x4c63d4,null))['catch'](handleError(_0x4c63d4,null));};exports[_0xc008('0x46')]=function(_0x32b435,_0xee64){return db[_0xc008('0x26')][_0xc008('0x46')]()['then'](respondWithResult(_0xee64,null))[_0xc008('0x41')](handleError(_0xee64,null));};
\ No newline at end of file
index aeaa752..4775deb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfae=['bluebird','request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports','MemberReport','membername','interface','lodash','../../config/logger','api','moment'];(function(_0x407a3e,_0x15acb0){var _0x129fe3=function(_0x124c2f){while(--_0x124c2f){_0x407a3e['push'](_0x407a3e['shift']());}};_0x129fe3(++_0x15acb0);}(_0xcfae,0x1ca));var _0xecfa=function(_0x133277,_0xb1d6b2){_0x133277=_0x133277-0x0;var _0x5b4a22=_0xcfae[_0x133277];return _0x5b4a22;};'use strict';var _=require(_0xecfa('0x0'));var util=require('util');var logger=require(_0xecfa('0x1'))(_0xecfa('0x2'));var moment=require(_0xecfa('0x3'));var BPromise=require(_0xecfa('0x4'));var rp=require(_0xecfa('0x5'));var fs=require('fs');var path=require(_0xecfa('0x6'));var rimraf=require(_0xecfa('0x7'));var config=require(_0xecfa('0x8'));var attributes=require(_0xecfa('0x9'));module[_0xecfa('0xa')]=function(_0x2af3ff,_0x3ffffc){return _0x2af3ff['define'](_0xecfa('0xb'),attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':'membername_interface','fields':[_0xecfa('0xc'),_0xecfa('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcc80=['bluebird','request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports','define','MemberReport','report_member','membername_interface','membername','interface','lodash','../../config/logger','api','moment'];(function(_0x58e5d8,_0x33f17f){var _0x4d53fd=function(_0x321e53){while(--_0x321e53){_0x58e5d8['push'](_0x58e5d8['shift']());}};_0x4d53fd(++_0x33f17f);}(_0xcc80,0xb7));var _0x0cc8=function(_0x31e8e8,_0x4e725c){_0x31e8e8=_0x31e8e8-0x0;var _0x52a543=_0xcc80[_0x31e8e8];return _0x52a543;};'use strict';var _=require(_0x0cc8('0x0'));var util=require('util');var logger=require(_0x0cc8('0x1'))(_0x0cc8('0x2'));var moment=require(_0x0cc8('0x3'));var BPromise=require(_0x0cc8('0x4'));var rp=require(_0x0cc8('0x5'));var fs=require('fs');var path=require(_0x0cc8('0x6'));var rimraf=require(_0x0cc8('0x7'));var config=require(_0x0cc8('0x8'));var attributes=require(_0x0cc8('0x9'));module[_0x0cc8('0xa')]=function(_0x29067d,_0x20fb1e){return _0x29067d[_0x0cc8('0xb')](_0x0cc8('0xc'),attributes,{'tableName':_0x0cc8('0xd'),'paranoid':![],'indexes':[{'name':_0x0cc8('0xe'),'fields':[_0x0cc8('0xf'),_0x0cc8('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
index 49314f9..eac39ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b64=['attributes','catch','CreateMemberReport','MemberReport','body','UpdateMemberReport','update','lodash','util','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','MemberReport,\x20%s,\x20%s','message','result','GetMemberReport','findAll','options','raw','where','limit','include','map','model'];(function(_0x1ee120,_0x4f4484){var _0x2d20ab=function(_0x4e3693){while(--_0x4e3693){_0x1ee120['push'](_0x1ee120['shift']());}};_0x2d20ab(++_0x4f4484);}(_0x1b64,0x76));var _0x41b6=function(_0x506bd1,_0x30fff6){_0x506bd1=_0x506bd1-0x0;var _0x530c0e=_0x1b64[_0x506bd1];return _0x530c0e;};'use strict';var _=require(_0x41b6('0x0'));var util=require(_0x41b6('0x1'));var moment=require('moment');var BPromise=require(_0x41b6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x41b6('0x3'));var logger=require(_0x41b6('0x4'))(_0x41b6('0x5'));var config=require(_0x41b6('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x41b6('0x7')][_0x41b6('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5775c8,_0x56bd45,_0x4bb579){return new BPromise(function(_0x7763c3,_0x3cc6f8){return client[_0x41b6('0x9')](_0x5775c8,_0x4bb579)[_0x41b6('0xa')](function(_0x477e12){logger[_0x41b6('0xb')]('MemberReport,\x20%s,\x20%s',_0x56bd45,_0x41b6('0xc'));logger[_0x41b6('0xd')](_0x41b6('0xe'),_0x56bd45,_0x41b6('0xc'),JSON[_0x41b6('0xf')](_0x477e12));if(_0x477e12[_0x41b6('0x10')]){if(_0x477e12[_0x41b6('0x10')][_0x41b6('0x11')]===0x1f4){logger[_0x41b6('0x10')](_0x41b6('0x12'),_0x56bd45,_0x477e12[_0x41b6('0x10')][_0x41b6('0x13')]);return _0x3cc6f8(_0x477e12['error'][_0x41b6('0x13')]);}logger[_0x41b6('0x10')](_0x41b6('0x12'),_0x56bd45,_0x477e12[_0x41b6('0x10')]['message']);return _0x7763c3(_0x477e12[_0x41b6('0x10')][_0x41b6('0x13')]);}else{logger[_0x41b6('0xb')](_0x41b6('0x12'),_0x56bd45,_0x41b6('0xc'));_0x7763c3(_0x477e12[_0x41b6('0x14')][_0x41b6('0x13')]);}})['catch'](function(_0x13ce57){logger[_0x41b6('0x10')](_0x41b6('0x12'),_0x56bd45,_0x13ce57);_0x3cc6f8(_0x13ce57);});});}exports[_0x41b6('0x15')]=function(_0x14a786){var _0x47feb9=this;return new Promise(function(_0x5637f6,_0x482baa){return db['MemberReport'][_0x41b6('0x16')]({'raw':_0x14a786['options']?_0x14a786[_0x41b6('0x17')][_0x41b6('0x18')]===undefined?!![]:![]:!![],'where':_0x14a786[_0x41b6('0x17')]?_0x14a786[_0x41b6('0x17')][_0x41b6('0x19')]||null:null,'attributes':_0x14a786[_0x41b6('0x17')]?_0x14a786['options']['attributes']||null:null,'limit':_0x14a786[_0x41b6('0x17')]?_0x14a786['options'][_0x41b6('0x1a')]||null:null,'include':_0x14a786[_0x41b6('0x17')]?_0x14a786[_0x41b6('0x17')][_0x41b6('0x1b')]?_[_0x41b6('0x1c')](_0x14a786[_0x41b6('0x17')][_0x41b6('0x1b')],function(_0x11cc02){return{'model':db[_0x11cc02[_0x41b6('0x1d')]],'as':_0x11cc02['as'],'attributes':_0x11cc02[_0x41b6('0x1e')],'include':_0x11cc02[_0x41b6('0x1b')]?_['map'](_0x11cc02[_0x41b6('0x1b')],function(_0x2c1290){return{'model':db[_0x2c1290['model']],'as':_0x2c1290['as'],'attributes':_0x2c1290[_0x41b6('0x1e')],'include':_0x2c1290[_0x41b6('0x1b')]?_['map'](_0x2c1290[_0x41b6('0x1b')],function(_0x454b5f){return{'model':db[_0x454b5f[_0x41b6('0x1d')]],'as':_0x454b5f['as'],'attributes':_0x454b5f['attributes']};}):[]};}):[]};}):[]:[]})[_0x41b6('0xa')](function(_0x5e431d){logger['info']('GetMemberReport',_0x14a786);logger[_0x41b6('0xd')](_0x41b6('0x15'),_0x14a786,JSON['stringify'](_0x5e431d));_0x5637f6(_0x5e431d);})[_0x41b6('0x1f')](function(_0x45f9e2){logger[_0x41b6('0x10')](_0x41b6('0x15'),_0x45f9e2[_0x41b6('0x13')],_0x14a786);_0x482baa(_0x47feb9['error'](0x1f4,_0x45f9e2['message']));});});};exports[_0x41b6('0x20')]=function(_0x37bd7a){var _0x14e54b=this;return new Promise(function(_0x56b365,_0x626c53){return db[_0x41b6('0x21')]['create'](_0x37bd7a[_0x41b6('0x22')],{'raw':_0x37bd7a[_0x41b6('0x17')]?_0x37bd7a[_0x41b6('0x17')][_0x41b6('0x18')]===undefined?!![]:![]:!![]})[_0x41b6('0xa')](function(_0x2ac3a7){logger[_0x41b6('0xb')]('CreateMemberReport',_0x37bd7a);logger[_0x41b6('0xd')]('CreateMemberReport',_0x37bd7a,JSON['stringify'](_0x2ac3a7));_0x56b365(_0x2ac3a7);})[_0x41b6('0x1f')](function(_0x4cf4d5){logger[_0x41b6('0x10')](_0x41b6('0x20'),_0x4cf4d5[_0x41b6('0x13')],_0x37bd7a);_0x626c53(_0x14e54b[_0x41b6('0x10')](0x1f4,_0x4cf4d5[_0x41b6('0x13')]));});});};exports[_0x41b6('0x23')]=function(_0x420e40){var _0x2e335a=this;return new Promise(function(_0x486709,_0x457e50){return db[_0x41b6('0x21')][_0x41b6('0x24')](_0x420e40[_0x41b6('0x22')],{'raw':_0x420e40[_0x41b6('0x17')]?_0x420e40[_0x41b6('0x17')][_0x41b6('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x420e40['options']?_0x420e40[_0x41b6('0x17')]['where']||null:null,'attributes':_0x420e40['options']?_0x420e40[_0x41b6('0x17')][_0x41b6('0x1e')]||null:null,'limit':_0x420e40[_0x41b6('0x17')]?_0x420e40[_0x41b6('0x17')][_0x41b6('0x1a')]||null:null})[_0x41b6('0xa')](function(_0x5b7e9d){logger[_0x41b6('0xb')](_0x41b6('0x23'),_0x420e40);logger[_0x41b6('0xd')](_0x41b6('0x23'),_0x420e40,JSON[_0x41b6('0xf')](_0x5b7e9d));_0x486709(_0x5b7e9d);})[_0x41b6('0x1f')](function(_0x434281){logger['error'](_0x41b6('0x23'),_0x434281[_0x41b6('0x13')],_0x420e40);_0x457e50(_0x2e335a[_0x41b6('0x10')](0x1f4,_0x434281[_0x41b6('0x13')]));});});};
\ No newline at end of file
+var _0x0272=['request\x20sent','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMemberReport','findAll','options','raw','where','attributes','limit','include','model','map','then','CreateMemberReport','MemberReport','create','UpdateMemberReport','update','body','debug','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','info','MemberReport,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0272,0x15a));var _0x2027=function(_0x284188,_0x3443f0){_0x284188=_0x284188-0x0;var _0x462e6d=_0x0272[_0x284188];return _0x462e6d;};'use strict';var _=require(_0x2027('0x0'));var util=require(_0x2027('0x1'));var moment=require('moment');var BPromise=require(_0x2027('0x2'));var rs=require(_0x2027('0x3'));var fs=require('fs');var Redis=require(_0x2027('0x4'));var db=require(_0x2027('0x5'))['db'];var utils=require(_0x2027('0x6'));var logger=require(_0x2027('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2027('0x8'));var client=jayson[_0x2027('0x9')][_0x2027('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x54a8f1,_0x5cd8f3,_0x56c261){return new BPromise(function(_0x2ac3bd,_0x4eb86c){return client[_0x2027('0xb')](_0x54a8f1,_0x56c261)['then'](function(_0x2f549d){logger[_0x2027('0xc')](_0x2027('0xd'),_0x5cd8f3,_0x2027('0xe'));logger['debug'](_0x2027('0xf'),_0x5cd8f3,_0x2027('0xe'),JSON[_0x2027('0x10')](_0x2f549d));if(_0x2f549d[_0x2027('0x11')]){if(_0x2f549d[_0x2027('0x11')][_0x2027('0x12')]===0x1f4){logger['error'](_0x2027('0xd'),_0x5cd8f3,_0x2f549d[_0x2027('0x11')]['message']);return _0x4eb86c(_0x2f549d[_0x2027('0x11')][_0x2027('0x13')]);}logger[_0x2027('0x11')](_0x2027('0xd'),_0x5cd8f3,_0x2f549d['error'][_0x2027('0x13')]);return _0x2ac3bd(_0x2f549d['error'][_0x2027('0x13')]);}else{logger[_0x2027('0xc')](_0x2027('0xd'),_0x5cd8f3,_0x2027('0xe'));_0x2ac3bd(_0x2f549d[_0x2027('0x14')][_0x2027('0x13')]);}})[_0x2027('0x15')](function(_0x4e8bc8){logger[_0x2027('0x11')](_0x2027('0xd'),_0x5cd8f3,_0x4e8bc8);_0x4eb86c(_0x4e8bc8);});});}exports[_0x2027('0x16')]=function(_0x532a2c){var _0x3bd053=this;return new Promise(function(_0x5d47bf,_0x28092f){return db['MemberReport'][_0x2027('0x17')]({'raw':_0x532a2c[_0x2027('0x18')]?_0x532a2c[_0x2027('0x18')][_0x2027('0x19')]===undefined?!![]:![]:!![],'where':_0x532a2c['options']?_0x532a2c[_0x2027('0x18')][_0x2027('0x1a')]||null:null,'attributes':_0x532a2c[_0x2027('0x18')]?_0x532a2c['options'][_0x2027('0x1b')]||null:null,'limit':_0x532a2c[_0x2027('0x18')]?_0x532a2c[_0x2027('0x18')][_0x2027('0x1c')]||null:null,'include':_0x532a2c['options']?_0x532a2c[_0x2027('0x18')]['include']?_['map'](_0x532a2c[_0x2027('0x18')][_0x2027('0x1d')],function(_0x462ff){return{'model':db[_0x462ff['model']],'as':_0x462ff['as'],'attributes':_0x462ff['attributes'],'include':_0x462ff[_0x2027('0x1d')]?_['map'](_0x462ff[_0x2027('0x1d')],function(_0x250775){return{'model':db[_0x250775[_0x2027('0x1e')]],'as':_0x250775['as'],'attributes':_0x250775[_0x2027('0x1b')],'include':_0x250775[_0x2027('0x1d')]?_[_0x2027('0x1f')](_0x250775[_0x2027('0x1d')],function(_0x49f9f8){return{'model':db[_0x49f9f8[_0x2027('0x1e')]],'as':_0x49f9f8['as'],'attributes':_0x49f9f8[_0x2027('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x2027('0x20')](function(_0x47b184){logger['info'](_0x2027('0x16'),_0x532a2c);logger['debug'](_0x2027('0x16'),_0x532a2c,JSON['stringify'](_0x47b184));_0x5d47bf(_0x47b184);})['catch'](function(_0x36f98d){logger[_0x2027('0x11')](_0x2027('0x16'),_0x36f98d[_0x2027('0x13')],_0x532a2c);_0x28092f(_0x3bd053[_0x2027('0x11')](0x1f4,_0x36f98d[_0x2027('0x13')]));});});};exports[_0x2027('0x21')]=function(_0x3b1bbd){var _0x510fc0=this;return new Promise(function(_0x2fe2a6,_0x3ae017){return db[_0x2027('0x22')][_0x2027('0x23')](_0x3b1bbd['body'],{'raw':_0x3b1bbd['options']?_0x3b1bbd[_0x2027('0x18')][_0x2027('0x19')]===undefined?!![]:![]:!![]})[_0x2027('0x20')](function(_0x320e52){logger[_0x2027('0xc')]('CreateMemberReport',_0x3b1bbd);logger['debug'](_0x2027('0x21'),_0x3b1bbd,JSON['stringify'](_0x320e52));_0x2fe2a6(_0x320e52);})[_0x2027('0x15')](function(_0x35b562){logger[_0x2027('0x11')](_0x2027('0x21'),_0x35b562[_0x2027('0x13')],_0x3b1bbd);_0x3ae017(_0x510fc0['error'](0x1f4,_0x35b562[_0x2027('0x13')]));});});};exports[_0x2027('0x24')]=function(_0xfa5977){var _0x4a6fb7=this;return new Promise(function(_0x2fcf0e,_0x4c9ed0){return db['MemberReport'][_0x2027('0x25')](_0xfa5977[_0x2027('0x26')],{'raw':_0xfa5977[_0x2027('0x18')]?_0xfa5977[_0x2027('0x18')][_0x2027('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xfa5977['options']?_0xfa5977['options'][_0x2027('0x1a')]||null:null,'attributes':_0xfa5977[_0x2027('0x18')]?_0xfa5977[_0x2027('0x18')][_0x2027('0x1b')]||null:null,'limit':_0xfa5977['options']?_0xfa5977['options'][_0x2027('0x1c')]||null:null})[_0x2027('0x20')](function(_0x4eaaaa){logger[_0x2027('0xc')](_0x2027('0x24'),_0xfa5977);logger[_0x2027('0x27')](_0x2027('0x24'),_0xfa5977,JSON[_0x2027('0x10')](_0x4eaaaa));_0x2fcf0e(_0x4eaaaa);})[_0x2027('0x15')](function(_0x1239b6){logger[_0x2027('0x11')](_0x2027('0x24'),_0x1239b6[_0x2027('0x13')],_0xfa5977);_0x4c9ed0(_0x4a6fb7['error'](0x1f4,_0x1239b6[_0x2027('0x13')]));});});};
\ No newline at end of file
index 818af29..8e43b82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3de9=['path','express','Router','../../components/auth/service','../../config/environment','./migration.controller','index','exports','multer'];(function(_0x1ff7f9,_0x7f4e5d){var _0x42f261=function(_0xa4451a){while(--_0xa4451a){_0x1ff7f9['push'](_0x1ff7f9['shift']());}};_0x42f261(++_0x7f4e5d);}(_0x3de9,0x143));var _0x93de=function(_0x22c508,_0x1a0baf){_0x22c508=_0x22c508-0x0;var _0x3c7530=_0x3de9[_0x22c508];return _0x3c7530;};'use strict';var multer=require(_0x93de('0x0'));var util=require('util');var path=require(_0x93de('0x1'));var timeout=require('connect-timeout');var express=require(_0x93de('0x2'));var router=express[_0x93de('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x93de('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x93de('0x5'));var controller=require(_0x93de('0x6'));router['get']('/',controller[_0x93de('0x7')]);module[_0x93de('0x8')]=router;
\ No newline at end of file
+var _0x31f0=['path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./migration.controller','multer'];(function(_0x3a891f,_0x10e7ef){var _0x4ec879=function(_0x241515){while(--_0x241515){_0x3a891f['push'](_0x3a891f['shift']());}};_0x4ec879(++_0x10e7ef);}(_0x31f0,0xb7));var _0x031f=function(_0x3bcb8b,_0x2b3c76){_0x3bcb8b=_0x3bcb8b-0x0;var _0x1ed518=_0x31f0[_0x3bcb8b];return _0x1ed518;};'use strict';var multer=require(_0x031f('0x0'));var util=require('util');var path=require(_0x031f('0x1'));var timeout=require('connect-timeout');var express=require(_0x031f('0x2'));var router=express[_0x031f('0x3')]();var fs_extra=require(_0x031f('0x4'));var auth=require(_0x031f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x031f('0x6'));var controller=require(_0x031f('0x7'));router['get']('/',controller['index']);module['exports']=router;
\ No newline at end of file
index 4f38e36..54279ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb61e=['STRING','sequelize','exports'];(function(_0x2bd1ec,_0x3fe65f){var _0x2f7577=function(_0x5234fb){while(--_0x5234fb){_0x2bd1ec['push'](_0x2bd1ec['shift']());}};_0x2f7577(++_0x3fe65f);}(_0xb61e,0x16c));var _0xeb61=function(_0x3d8ca8,_0x1a9764){_0x3d8ca8=_0x3d8ca8-0x0;var _0x517e45=_0xb61e[_0x3d8ca8];return _0x517e45;};'use strict';var Sequelize=require(_0xeb61('0x0'));module[_0xeb61('0x1')]={'version':{'type':Sequelize[_0xeb61('0x2')],'unique':'version'}};
\ No newline at end of file
+var _0x1bba=['STRING','version','sequelize','exports'];(function(_0x4eba87,_0x5c2f21){var _0x33f33e=function(_0x4fed89){while(--_0x4fed89){_0x4eba87['push'](_0x4eba87['shift']());}};_0x33f33e(++_0x5c2f21);}(_0x1bba,0x186));var _0xa1bb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1bba[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xa1bb('0x0'));module[_0xa1bb('0x1')]={'version':{'type':Sequelize[_0xa1bb('0x2')],'unique':_0xa1bb('0x3')}};
\ No newline at end of file
index a79c953..81bc128 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9156=['intersection','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','options','Migration','findAll','rows','catch','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','Content-Range','reject','save','update','then','destroy','error','stack','name','send','rawAttributes','fieldName','type','key','model','map','query','keys','filters'];(function(_0x27c24e,_0x5db1c7){var _0x39004a=function(_0x44286d){while(--_0x44286d){_0x27c24e['push'](_0x27c24e['shift']());}};_0x39004a(++_0x5db1c7);}(_0x9156,0x155));var _0x6915=function(_0x335bab,_0x298912){_0x335bab=_0x335bab-0x0;var _0x3d5412=_0x9156[_0x335bab];return _0x3d5412;};'use strict';var emlformat=require(_0x6915('0x0'));var rimraf=require(_0x6915('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6915('0x2'));var moment=require('moment');var BPromise=require(_0x6915('0x3'));var Mustache=require(_0x6915('0x4'));var util=require(_0x6915('0x5'));var path=require(_0x6915('0x6'));var sox=require(_0x6915('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6915('0x8'));var _=require(_0x6915('0x9'));var squel=require(_0x6915('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6915('0xb'));var toCsv=require(_0x6915('0xc'));var querystring=require(_0x6915('0xd'));var Papa=require(_0x6915('0xe'));var Redis=require(_0x6915('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x6915('0x10'));var as=require(_0x6915('0x11'));var hardwareService=require(_0x6915('0x12'));var logger=require(_0x6915('0x13'))(_0x6915('0x14'));var utils=require('../../config/utils');var config=require(_0x6915('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6915('0x16'))['db'];function respondWithStatusCode(_0x500109,_0x2393dd){_0x2393dd=_0x2393dd||0xcc;return function(_0x248b56){if(_0x248b56){return _0x500109[_0x6915('0x17')](_0x2393dd);}return _0x500109['status'](_0x2393dd)[_0x6915('0x18')]();};}function respondWithResult(_0x35325e,_0x2aabbe){_0x2aabbe=_0x2aabbe||0xc8;return function(_0x27e1e3){if(_0x27e1e3){return _0x35325e[_0x6915('0x19')](_0x2aabbe)[_0x6915('0x1a')](_0x27e1e3);}};}function respondWithFilteredResult(_0x208e13,_0x191fc9){return function(_0x37f954){if(_0x37f954){var _0x4910d2=typeof _0x191fc9[_0x6915('0x1b')]===_0x6915('0x1c')&&typeof _0x191fc9['limit']===_0x6915('0x1c');var _0x38facf=_0x37f954[_0x6915('0x1d')];var _0x173128=_0x4910d2?0x0:_0x191fc9['offset'];var _0x40f4fb=_0x4910d2?_0x37f954[_0x6915('0x1d')]:_0x191fc9[_0x6915('0x1b')]+_0x191fc9['limit'];var _0x338a01;if(_0x40f4fb>=_0x38facf){_0x40f4fb=_0x38facf;_0x338a01=0xc8;}else{_0x338a01=0xce;}_0x208e13[_0x6915('0x19')](_0x338a01);return _0x208e13['set'](_0x6915('0x1e'),_0x173128+'-'+_0x40f4fb+'/'+_0x38facf)['json'](_0x37f954);}return null;};}function patchUpdates(_0x2c9d0c){return function(_0x23596b){try{jsonpatch['apply'](_0x23596b,_0x2c9d0c,!![]);}catch(_0x59cc42){return BPromise[_0x6915('0x1f')](_0x59cc42);}return _0x23596b[_0x6915('0x20')]();};}function saveUpdates(_0x19a706,_0x89908){return function(_0x16fa22){if(_0x16fa22){return _0x16fa22[_0x6915('0x21')](_0x19a706)[_0x6915('0x22')](function(_0x3c7459){return _0x3c7459;});}return null;};}function removeEntity(_0x49496b,_0x24bc84){return function(_0x1748eb){if(_0x1748eb){return _0x1748eb[_0x6915('0x23')]()['then'](function(){_0x49496b['status'](0xcc)[_0x6915('0x18')]();});}};}function handleEntityNotFound(_0xcf9fce,_0x4a8b84){return function(_0x420280){if(!_0x420280){_0xcf9fce[_0x6915('0x17')](0x194);}return _0x420280;};}function handleError(_0x29712b,_0x4fc7c6){_0x4fc7c6=_0x4fc7c6||0x1f4;return function(_0x5cb9e2){logger[_0x6915('0x24')](_0x5cb9e2[_0x6915('0x25')]);if(_0x5cb9e2[_0x6915('0x26')]){delete _0x5cb9e2['name'];}_0x29712b['status'](_0x4fc7c6)[_0x6915('0x27')](_0x5cb9e2);};}exports['index']=function(_0x151144,_0x59f385){var _0x3cda2c={},_0x50c0b0={},_0x26ab8d={'count':0x0,'rows':[]};var _0x2a67ff=_['map'](db['Migration'][_0x6915('0x28')],function(_0x4d9590){return{'name':_0x4d9590[_0x6915('0x29')],'type':_0x4d9590[_0x6915('0x2a')][_0x6915('0x2b')]};});_0x50c0b0[_0x6915('0x2c')]=_[_0x6915('0x2d')](_0x2a67ff,'name');_0x50c0b0[_0x6915('0x2e')]=_[_0x6915('0x2f')](_0x151144[_0x6915('0x2e')]);_0x50c0b0[_0x6915('0x30')]=_[_0x6915('0x31')](_0x50c0b0['model'],_0x50c0b0['query']);_0x3cda2c['attributes']=_[_0x6915('0x31')](_0x50c0b0['model'],qs[_0x6915('0x32')](_0x151144[_0x6915('0x2e')]['fields']));_0x3cda2c['attributes']=_0x3cda2c[_0x6915('0x33')]['length']?_0x3cda2c[_0x6915('0x33')]:_0x50c0b0['model'];if(!_0x151144[_0x6915('0x2e')][_0x6915('0x34')](_0x6915('0x35'))){_0x3cda2c[_0x6915('0x36')]=qs[_0x6915('0x36')](_0x151144[_0x6915('0x2e')]['limit']);_0x3cda2c['offset']=qs[_0x6915('0x1b')](_0x151144[_0x6915('0x2e')][_0x6915('0x1b')]);}_0x3cda2c[_0x6915('0x37')]=qs[_0x6915('0x38')](_0x151144[_0x6915('0x2e')][_0x6915('0x38')]);_0x3cda2c[_0x6915('0x39')]=qs[_0x6915('0x30')](_['pick'](_0x151144['query'],_0x50c0b0[_0x6915('0x30')]),_0x2a67ff);if(_0x151144[_0x6915('0x2e')]['filter']){_0x3cda2c[_0x6915('0x39')]=_['merge'](_0x3cda2c[_0x6915('0x39')],{'$or':_['map'](_0x2a67ff,function(_0x2c4944){if(_0x2c4944[_0x6915('0x2a')]!=='VIRTUAL'){var _0x37221b={};_0x37221b[_0x2c4944['name']]={'$like':'%'+_0x151144[_0x6915('0x2e')][_0x6915('0x3a')]+'%'};return _0x37221b;}})});}_0x3cda2c=_[_0x6915('0x3b')]({},_0x3cda2c,_0x151144[_0x6915('0x3c')]);var _0x1e0b5c={'where':_0x3cda2c[_0x6915('0x39')]};return db[_0x6915('0x3d')][_0x6915('0x1d')](_0x1e0b5c)['then'](function(_0x28b39e){_0x26ab8d[_0x6915('0x1d')]=_0x28b39e;if(_0x151144[_0x6915('0x2e')]['includeAll']){_0x3cda2c['include']=[{'all':!![]}];}return db['Migration'][_0x6915('0x3e')](_0x3cda2c);})[_0x6915('0x22')](function(_0x3f0537){_0x26ab8d[_0x6915('0x3f')]=_0x3f0537;return _0x26ab8d;})[_0x6915('0x22')](respondWithFilteredResult(_0x59f385,_0x3cda2c))[_0x6915('0x40')](handleError(_0x59f385,null));};
\ No newline at end of file
+var _0x24dc=['reject','save','then','stack','name','send','index','Migration','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','limit','count','set','apply'];(function(_0x75f869,_0x3690d6){var _0x10af8b=function(_0x22d3ff){while(--_0x22d3ff){_0x75f869['push'](_0x75f869['shift']());}};_0x10af8b(++_0x3690d6);}(_0x24dc,0x65));var _0xc24d=function(_0x573482,_0x583eaf){_0x573482=_0x573482-0x0;var _0xd4824c=_0x24dc[_0x573482];return _0xd4824c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc24d('0x0'));var jsonpatch=require(_0xc24d('0x1'));var rp=require(_0xc24d('0x2'));var moment=require(_0xc24d('0x3'));var BPromise=require(_0xc24d('0x4'));var Mustache=require(_0xc24d('0x5'));var util=require(_0xc24d('0x6'));var path=require(_0xc24d('0x7'));var sox=require(_0xc24d('0x8'));var csv=require(_0xc24d('0x9'));var ejs=require(_0xc24d('0xa'));var fs=require('fs');var fs_extra=require(_0xc24d('0xb'));var _=require(_0xc24d('0xc'));var squel=require('squel');var crypto=require(_0xc24d('0xd'));var jsforce=require(_0xc24d('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc24d('0x9'));var querystring=require('querystring');var Papa=require(_0xc24d('0xf'));var Redis=require(_0xc24d('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xc24d('0x11'));var as=require(_0xc24d('0x12'));var hardwareService=require(_0xc24d('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xc24d('0x14'));var config=require(_0xc24d('0x15'));var licenseUtil=require(_0xc24d('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x10447a,_0x1d1ee0){_0x1d1ee0=_0x1d1ee0||0xcc;return function(_0x8f9b29){if(_0x8f9b29){return _0x10447a[_0xc24d('0x17')](_0x1d1ee0);}return _0x10447a[_0xc24d('0x18')](_0x1d1ee0)[_0xc24d('0x19')]();};}function respondWithResult(_0x2675f1,_0x3d6a19){_0x3d6a19=_0x3d6a19||0xc8;return function(_0x1a03b0){if(_0x1a03b0){return _0x2675f1[_0xc24d('0x18')](_0x3d6a19)['json'](_0x1a03b0);}};}function respondWithFilteredResult(_0x6d7594,_0x45608a){return function(_0x11dba2){if(_0x11dba2){var _0x4cd394=typeof _0x45608a[_0xc24d('0x1a')]==='undefined'&&typeof _0x45608a[_0xc24d('0x1b')]==='undefined';var _0x579b4e=_0x11dba2[_0xc24d('0x1c')];var _0x3c7255=_0x4cd394?0x0:_0x45608a['offset'];var _0x4c5fc2=_0x4cd394?_0x11dba2[_0xc24d('0x1c')]:_0x45608a[_0xc24d('0x1a')]+_0x45608a[_0xc24d('0x1b')];var _0x3025e0;if(_0x4c5fc2>=_0x579b4e){_0x4c5fc2=_0x579b4e;_0x3025e0=0xc8;}else{_0x3025e0=0xce;}_0x6d7594[_0xc24d('0x18')](_0x3025e0);return _0x6d7594[_0xc24d('0x1d')]('Content-Range',_0x3c7255+'-'+_0x4c5fc2+'/'+_0x579b4e)['json'](_0x11dba2);}return null;};}function patchUpdates(_0x25ae13){return function(_0x5c2c83){try{jsonpatch[_0xc24d('0x1e')](_0x5c2c83,_0x25ae13,!![]);}catch(_0xfa63f){return BPromise[_0xc24d('0x1f')](_0xfa63f);}return _0x5c2c83[_0xc24d('0x20')]();};}function saveUpdates(_0x150de6,_0x2ae2d0){return function(_0x38c47f){if(_0x38c47f){return _0x38c47f['update'](_0x150de6)[_0xc24d('0x21')](function(_0x35db6a){return _0x35db6a;});}return null;};}function removeEntity(_0x3cfdca,_0x43d6c9){return function(_0x4569d7){if(_0x4569d7){return _0x4569d7['destroy']()[_0xc24d('0x21')](function(){_0x3cfdca[_0xc24d('0x18')](0xcc)[_0xc24d('0x19')]();});}};}function handleEntityNotFound(_0x3d74e7,_0x2103af){return function(_0x573b8e){if(!_0x573b8e){_0x3d74e7[_0xc24d('0x17')](0x194);}return _0x573b8e;};}function handleError(_0x44906c,_0x317195){_0x317195=_0x317195||0x1f4;return function(_0x33ae98){logger['error'](_0x33ae98[_0xc24d('0x22')]);if(_0x33ae98[_0xc24d('0x23')]){delete _0x33ae98[_0xc24d('0x23')];}_0x44906c[_0xc24d('0x18')](_0x317195)[_0xc24d('0x24')](_0x33ae98);};}exports[_0xc24d('0x25')]=function(_0x48d87f,_0x262d2c){var _0xdba521={},_0x5a044f={},_0x3d27e5={'count':0x0,'rows':[]};var _0x3238f0=_['map'](db[_0xc24d('0x26')][_0xc24d('0x27')],function(_0x334417){return{'name':_0x334417[_0xc24d('0x28')],'type':_0x334417[_0xc24d('0x29')][_0xc24d('0x2a')]};});_0x5a044f[_0xc24d('0x2b')]=_[_0xc24d('0x2c')](_0x3238f0,'name');_0x5a044f['query']=_[_0xc24d('0x2d')](_0x48d87f[_0xc24d('0x2e')]);_0x5a044f[_0xc24d('0x2f')]=_[_0xc24d('0x30')](_0x5a044f[_0xc24d('0x2b')],_0x5a044f[_0xc24d('0x2e')]);_0xdba521[_0xc24d('0x31')]=_[_0xc24d('0x30')](_0x5a044f['model'],qs[_0xc24d('0x32')](_0x48d87f['query'][_0xc24d('0x32')]));_0xdba521[_0xc24d('0x31')]=_0xdba521[_0xc24d('0x31')][_0xc24d('0x33')]?_0xdba521[_0xc24d('0x31')]:_0x5a044f[_0xc24d('0x2b')];if(!_0x48d87f['query'][_0xc24d('0x34')](_0xc24d('0x35'))){_0xdba521[_0xc24d('0x1b')]=qs['limit'](_0x48d87f[_0xc24d('0x2e')][_0xc24d('0x1b')]);_0xdba521['offset']=qs['offset'](_0x48d87f[_0xc24d('0x2e')]['offset']);}_0xdba521[_0xc24d('0x36')]=qs[_0xc24d('0x37')](_0x48d87f[_0xc24d('0x2e')][_0xc24d('0x37')]);_0xdba521[_0xc24d('0x38')]=qs['filters'](_[_0xc24d('0x39')](_0x48d87f[_0xc24d('0x2e')],_0x5a044f['filters']),_0x3238f0);if(_0x48d87f[_0xc24d('0x2e')][_0xc24d('0x3a')]){_0xdba521[_0xc24d('0x38')]=_[_0xc24d('0x3b')](_0xdba521['where'],{'$or':_[_0xc24d('0x2c')](_0x3238f0,function(_0xf23ce0){if(_0xf23ce0['type']!==_0xc24d('0x3c')){var _0x57359c={};_0x57359c[_0xf23ce0[_0xc24d('0x23')]]={'$like':'%'+_0x48d87f[_0xc24d('0x2e')][_0xc24d('0x3a')]+'%'};return _0x57359c;}})});}_0xdba521=_[_0xc24d('0x3b')]({},_0xdba521,_0x48d87f[_0xc24d('0x3d')]);var _0x4da6c9={'where':_0xdba521[_0xc24d('0x38')]};return db[_0xc24d('0x26')][_0xc24d('0x1c')](_0x4da6c9)[_0xc24d('0x21')](function(_0x5ca279){_0x3d27e5[_0xc24d('0x1c')]=_0x5ca279;if(_0x48d87f[_0xc24d('0x2e')][_0xc24d('0x3e')]){_0xdba521[_0xc24d('0x3f')]=[{'all':!![]}];}return db[_0xc24d('0x26')]['findAll'](_0xdba521);})['then'](function(_0x3462f7){_0x3d27e5[_0xc24d('0x40')]=_0x3462f7;return _0x3d27e5;})[_0xc24d('0x21')](respondWithFilteredResult(_0x262d2c,_0xdba521))[_0xc24d('0x41')](handleError(_0x262d2c,null));};
\ No newline at end of file
index acc8022..42798b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39bd=['../../config/logger','moment','request-promise','path','rimraf','./migration.attributes','exports','Migration','util'];(function(_0x4192ad,_0x488f5c){var _0x415dc3=function(_0x288ed5){while(--_0x288ed5){_0x4192ad['push'](_0x4192ad['shift']());}};_0x415dc3(++_0x488f5c);}(_0x39bd,0x104));var _0xd39b=function(_0x3e3061,_0x30feb6){_0x3e3061=_0x3e3061-0x0;var _0x5c2956=_0x39bd[_0x3e3061];return _0x5c2956;};'use strict';var _=require('lodash');var util=require(_0xd39b('0x0'));var logger=require(_0xd39b('0x1'))('api');var moment=require(_0xd39b('0x2'));var BPromise=require('bluebird');var rp=require(_0xd39b('0x3'));var fs=require('fs');var path=require(_0xd39b('0x4'));var rimraf=require(_0xd39b('0x5'));var config=require('../../config/environment');var attributes=require(_0xd39b('0x6'));module[_0xd39b('0x7')]=function(_0xb0af3c,_0xd0655b){return _0xb0af3c['define'](_0xd39b('0x8'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0341=['../../config/environment','./migration.attributes','exports','define','migrations','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x355f43,_0x2fff21){var _0x15794d=function(_0x4c3db2){while(--_0x4c3db2){_0x355f43['push'](_0x355f43['shift']());}};_0x15794d(++_0x2fff21);}(_0x0341,0xad));var _0x1034=function(_0x5d73ea,_0x590a08){_0x5d73ea=_0x5d73ea-0x0;var _0x344493=_0x0341[_0x5d73ea];return _0x344493;};'use strict';var _=require(_0x1034('0x0'));var util=require(_0x1034('0x1'));var logger=require(_0x1034('0x2'))(_0x1034('0x3'));var moment=require('moment');var BPromise=require(_0x1034('0x4'));var rp=require(_0x1034('0x5'));var fs=require('fs');var path=require(_0x1034('0x6'));var rimraf=require('rimraf');var config=require(_0x1034('0x7'));var attributes=require(_0x1034('0x8'));module[_0x1034('0x9')]=function(_0x1f9eac,_0x20e16f){return _0x1f9eac[_0x1034('0xa')]('Migration',attributes,{'tableName':_0x1034('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 44b43ea..9a3838a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x342e=['result','catch','lodash','util','moment','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','then','info','Migration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0x5e913c,_0x5dc614){var _0x5b83c3=function(_0x5e8470){while(--_0x5e8470){_0x5e913c['push'](_0x5e913c['shift']());}};_0x5b83c3(++_0x5dc614);}(_0x342e,0xde));var _0xe342=function(_0x397cfb,_0xb8f317){_0x397cfb=_0x397cfb-0x0;var _0x15fed9=_0x342e[_0x397cfb];return _0x15fed9;};'use strict';var _=require(_0xe342('0x0'));var util=require(_0xe342('0x1'));var moment=require(_0xe342('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe342('0x3'));var db=require(_0xe342('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xe342('0x5'));var config=require(_0xe342('0x6'));var jayson=require(_0xe342('0x7'));var client=jayson[_0xe342('0x8')][_0xe342('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5e643a,_0x57895b,_0x3457ac){return new BPromise(function(_0x36bb18,_0x54868d){return client['request'](_0x5e643a,_0x3457ac)[_0xe342('0xa')](function(_0x2b2e82){logger[_0xe342('0xb')](_0xe342('0xc'),_0x57895b,_0xe342('0xd'));logger[_0xe342('0xe')]('Migration,\x20%s,\x20%s,\x20%s',_0x57895b,_0xe342('0xd'),JSON[_0xe342('0xf')](_0x2b2e82));if(_0x2b2e82[_0xe342('0x10')]){if(_0x2b2e82[_0xe342('0x10')]['code']===0x1f4){logger[_0xe342('0x10')]('Migration,\x20%s,\x20%s',_0x57895b,_0x2b2e82[_0xe342('0x10')][_0xe342('0x11')]);return _0x54868d(_0x2b2e82[_0xe342('0x10')][_0xe342('0x11')]);}logger['error'](_0xe342('0xc'),_0x57895b,_0x2b2e82[_0xe342('0x10')]['message']);return _0x36bb18(_0x2b2e82[_0xe342('0x10')][_0xe342('0x11')]);}else{logger[_0xe342('0xb')](_0xe342('0xc'),_0x57895b,_0xe342('0xd'));_0x36bb18(_0x2b2e82[_0xe342('0x12')][_0xe342('0x11')]);}})[_0xe342('0x13')](function(_0x190a90){logger[_0xe342('0x10')](_0xe342('0xc'),_0x57895b,_0x190a90);_0x54868d(_0x190a90);});});}
\ No newline at end of file
+var _0xad13=['catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Migration,\x20%s,\x20%s','debug','Migration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result'];(function(_0x2f0c33,_0xa12eb){var _0x34e66c=function(_0x2bb9ee){while(--_0x2bb9ee){_0x2f0c33['push'](_0x2f0c33['shift']());}};_0x34e66c(++_0xa12eb);}(_0xad13,0x79));var _0x3ad1=function(_0x1dd9b7,_0x2cf490){_0x1dd9b7=_0x1dd9b7-0x0;var _0xc23314=_0xad13[_0x1dd9b7];return _0xc23314;};'use strict';var _=require(_0x3ad1('0x0'));var util=require('util');var moment=require(_0x3ad1('0x1'));var BPromise=require(_0x3ad1('0x2'));var rs=require(_0x3ad1('0x3'));var fs=require('fs');var Redis=require(_0x3ad1('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3ad1('0x5'));var logger=require(_0x3ad1('0x6'))(_0x3ad1('0x7'));var config=require(_0x3ad1('0x8'));var jayson=require(_0x3ad1('0x9'));var client=jayson[_0x3ad1('0xa')][_0x3ad1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x23ed63,_0x44fd50,_0x313ad9){return new BPromise(function(_0x4d27b0,_0x2429f4){return client[_0x3ad1('0xc')](_0x23ed63,_0x313ad9)[_0x3ad1('0xd')](function(_0x4e93df){logger[_0x3ad1('0xe')](_0x3ad1('0xf'),_0x44fd50,'request\x20sent');logger[_0x3ad1('0x10')](_0x3ad1('0x11'),_0x44fd50,_0x3ad1('0x12'),JSON[_0x3ad1('0x13')](_0x4e93df));if(_0x4e93df[_0x3ad1('0x14')]){if(_0x4e93df[_0x3ad1('0x14')]['code']===0x1f4){logger['error'](_0x3ad1('0xf'),_0x44fd50,_0x4e93df[_0x3ad1('0x14')][_0x3ad1('0x15')]);return _0x2429f4(_0x4e93df[_0x3ad1('0x14')]['message']);}logger[_0x3ad1('0x14')]('Migration,\x20%s,\x20%s',_0x44fd50,_0x4e93df[_0x3ad1('0x14')][_0x3ad1('0x15')]);return _0x4d27b0(_0x4e93df[_0x3ad1('0x14')][_0x3ad1('0x15')]);}else{logger[_0x3ad1('0xe')](_0x3ad1('0xf'),_0x44fd50,_0x3ad1('0x12'));_0x4d27b0(_0x4e93df[_0x3ad1('0x16')][_0x3ad1('0x15')]);}})[_0x3ad1('0x17')](function(_0x1d924e){logger[_0x3ad1('0x14')]('Migration,\x20%s,\x20%s',_0x44fd50,_0x1d924e);_0x2429f4(_0x1d924e);});});}
\ No newline at end of file
index 3017c21..a58cd7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ccb=['/:id','show','post','create','put','update','delete','destroy','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./network.controller','get','isAuthenticated'];(function(_0x4bbfe8,_0x174c63){var _0x4cbe88=function(_0x71357){while(--_0x71357){_0x4bbfe8['push'](_0x4bbfe8['shift']());}};_0x4cbe88(++_0x174c63);}(_0x1ccb,0x105));var _0xb1cc=function(_0x3939cd,_0x138c14){_0x3939cd=_0x3939cd-0x0;var _0x5edd96=_0x1ccb[_0x3939cd];return _0x5edd96;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb1cc('0x0'));var timeout=require(_0xb1cc('0x1'));var express=require(_0xb1cc('0x2'));var router=express['Router']();var fs_extra=require(_0xb1cc('0x3'));var auth=require(_0xb1cc('0x4'));var interaction=require(_0xb1cc('0x5'));var config=require('../../config/environment');var controller=require(_0xb1cc('0x6'));router[_0xb1cc('0x7')]('/',auth[_0xb1cc('0x8')](),controller['index']);router['get'](_0xb1cc('0x9'),auth[_0xb1cc('0x8')](),controller[_0xb1cc('0xa')]);router[_0xb1cc('0xb')]('/',auth[_0xb1cc('0x8')](),controller[_0xb1cc('0xc')]);router[_0xb1cc('0xd')]('/:id',auth[_0xb1cc('0x8')](),controller[_0xb1cc('0xe')]);router[_0xb1cc('0xf')]('/:id',auth[_0xb1cc('0x8')](),controller[_0xb1cc('0x10')]);module[_0xb1cc('0x11')]=router;
\ No newline at end of file
+var _0x2b47=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout'];(function(_0x55f699,_0x3373d8){var _0x1c02c5=function(_0x53679c){while(--_0x53679c){_0x55f699['push'](_0x55f699['shift']());}};_0x1c02c5(++_0x3373d8);}(_0x2b47,0x177));var _0x72b4=function(_0x4a645b,_0xec3e70){_0x4a645b=_0x4a645b-0x0;var _0x29ae21=_0x2b47[_0x4a645b];return _0x29ae21;};'use strict';var multer=require(_0x72b4('0x0'));var util=require('util');var path=require(_0x72b4('0x1'));var timeout=require(_0x72b4('0x2'));var express=require(_0x72b4('0x3'));var router=express['Router']();var fs_extra=require(_0x72b4('0x4'));var auth=require(_0x72b4('0x5'));var interaction=require(_0x72b4('0x6'));var config=require(_0x72b4('0x7'));var controller=require(_0x72b4('0x8'));router[_0x72b4('0x9')]('/',auth['isAuthenticated'](),controller[_0x72b4('0xa')]);router['get'](_0x72b4('0xb'),auth[_0x72b4('0xc')](),controller[_0x72b4('0xd')]);router[_0x72b4('0xe')]('/',auth[_0x72b4('0xc')](),controller[_0x72b4('0xf')]);router[_0x72b4('0x10')](_0x72b4('0xb'),auth[_0x72b4('0xc')](),controller[_0x72b4('0x11')]);router[_0x72b4('0x12')]('/:id',auth[_0x72b4('0xc')](),controller[_0x72b4('0x13')]);module[_0x72b4('0x14')]=router;
\ No newline at end of file
index 0f1452c..befe08c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b9b=['STRING','sequelize','localnet','externip','stun'];(function(_0x327a54,_0x4b7661){var _0x3a174f=function(_0x576203){while(--_0x576203){_0x327a54['push'](_0x327a54['shift']());}};_0x3a174f(++_0x4b7661);}(_0x9b9b,0x1b4));var _0xb9b9=function(_0x57da0a,_0x284aed){_0x57da0a=_0x57da0a-0x0;var _0x3145d5=_0x9b9b[_0x57da0a];return _0x3145d5;};'use strict';var Sequelize=require(_0xb9b9('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0xb9b9('0x1'),_0xb9b9('0x2'),_0xb9b9('0x3'),'turn')},'value':{'type':Sequelize[_0xb9b9('0x4')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf385=['localnet','externip','stun','turn','STRING','exports','ENUM'];(function(_0x299784,_0xb0918f){var _0x5ab008=function(_0x49c1f5){while(--_0x49c1f5){_0x299784['push'](_0x299784['shift']());}};_0x5ab008(++_0xb0918f);}(_0xf385,0xc9));var _0x5f38=function(_0x53be66,_0x9ec3be){_0x53be66=_0x53be66-0x0;var _0x9e5520=_0xf385[_0x53be66];return _0x9e5520;};'use strict';var Sequelize=require('sequelize');module[_0x5f38('0x0')]={'type':{'type':Sequelize[_0x5f38('0x1')](_0x5f38('0x2'),_0x5f38('0x3'),_0x5f38('0x4'),_0x5f38('0x5'))},'value':{'type':Sequelize[_0x5f38('0x6')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x5f38('0x6')]}};
\ No newline at end of file
index 68cc59a..8251d05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dd3=['query','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','create','body','toUpperCase','readFileSync','server/files/templates/stun_multiple.ejs','utf8','render','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','join','root','server/files/templates/turn_multiple.ejs','writeFileSync','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','sequelize','transaction','find','STUN','/etc/asterisk/turn_xcally.conf','eml-format','rimraf','zip-dir','moment','util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','end','json','offset','undefined','limit','count','status','set','Content-Range','reject','save','update','destroy','sendStatus','stack','name','send','index','map','Network','rawAttributes','key','keys'];(function(_0xc3e9ad,_0x1a4d7c){var _0x3d1f50=function(_0x3e7b4a){while(--_0x3e7b4a){_0xc3e9ad['push'](_0xc3e9ad['shift']());}};_0x3d1f50(++_0x1a4d7c);}(_0x8dd3,0x1e5));var _0x38dd=function(_0x42ada7,_0xdbb545){_0x42ada7=_0x42ada7-0x0;var _0x1b30d9=_0x8dd3[_0x42ada7];return _0x1b30d9;};'use strict';var emlformat=require(_0x38dd('0x0'));var rimraf=require(_0x38dd('0x1'));var zipdir=require(_0x38dd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x38dd('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x38dd('0x4'));var path=require(_0x38dd('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x38dd('0x6'));var fs=require('fs');var fs_extra=require(_0x38dd('0x7'));var _=require('lodash');var squel=require(_0x38dd('0x8'));var crypto=require(_0x38dd('0x9'));var jsforce=require(_0x38dd('0xa'));var deskjs=require(_0x38dd('0xb'));var toCsv=require(_0x38dd('0xc'));var querystring=require('querystring');var Papa=require(_0x38dd('0xd'));var Redis=require(_0x38dd('0xe'));var authService=require(_0x38dd('0xf'));var qs=require(_0x38dd('0x10'));var as=require(_0x38dd('0x11'));var hardwareService=require(_0x38dd('0x12'));var logger=require(_0x38dd('0x13'))(_0x38dd('0x14'));var utils=require('../../config/utils');var config=require(_0x38dd('0x15'));var licenseUtil=require(_0x38dd('0x16'));var db=require(_0x38dd('0x17'))['db'];var jayson=require(_0x38dd('0x18'));var client=jayson['client'][_0x38dd('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x14b9cc,_0x389444,_0x4c0b2b,_0xd0392f){return new BPromise(function(_0x5c4423,_0x3bfde9){var _0x1f4eab=_0xd0392f||client;return _0x1f4eab['request'](_0x14b9cc,_0x4c0b2b)[_0x38dd('0x1a')](function(_0x574263){logger[_0x38dd('0x1b')](_0x38dd('0x1c'),_0x389444,_0x38dd('0x1d'));logger[_0x38dd('0x1e')](_0x38dd('0x1f'),_0x389444,_0x38dd('0x1d'),JSON[_0x38dd('0x20')](_0x574263));if(_0x574263[_0x38dd('0x21')]){if(_0x574263['error'][_0x38dd('0x22')]===0x1f4){logger[_0x38dd('0x21')]('Network,\x20%s,\x20%s',_0x389444,_0x574263[_0x38dd('0x21')]['message']);return _0x3bfde9(_0x574263[_0x38dd('0x21')][_0x38dd('0x23')]);}logger[_0x38dd('0x21')](_0x38dd('0x1c'),_0x389444,_0x574263[_0x38dd('0x21')][_0x38dd('0x23')]);return _0x5c4423(_0x574263['error'][_0x38dd('0x23')]);}else{logger[_0x38dd('0x1b')]('Network,\x20%s,\x20%s',_0x389444,'request\x20sent');_0x5c4423(_0x574263[_0x38dd('0x24')][_0x38dd('0x23')]);}})['catch'](function(_0x46b57e){logger[_0x38dd('0x21')](_0x38dd('0x1c'),_0x389444,_0x46b57e);_0x3bfde9(_0x46b57e);});});}function respondWithStatusCode(_0x2f5b2c,_0x192659){_0x192659=_0x192659||0xcc;return function(_0x53c4f2){if(_0x53c4f2){return _0x2f5b2c['sendStatus'](_0x192659);}return _0x2f5b2c['status'](_0x192659)[_0x38dd('0x25')]();};}function respondWithResult(_0x45cd88,_0x17d877){_0x17d877=_0x17d877||0xc8;return function(_0x4c5061){if(_0x4c5061){return _0x45cd88['status'](_0x17d877)[_0x38dd('0x26')](_0x4c5061);}};}function respondWithFilteredResult(_0x17b54b,_0x224a13){return function(_0x5442e1){if(_0x5442e1){var _0x18ffb5=typeof _0x224a13[_0x38dd('0x27')]===_0x38dd('0x28')&&typeof _0x224a13[_0x38dd('0x29')]===_0x38dd('0x28');var _0x1f78f6=_0x5442e1['count'];var _0x249e3d=_0x18ffb5?0x0:_0x224a13[_0x38dd('0x27')];var _0x51886c=_0x18ffb5?_0x5442e1[_0x38dd('0x2a')]:_0x224a13[_0x38dd('0x27')]+_0x224a13['limit'];var _0xef5f02;if(_0x51886c>=_0x1f78f6){_0x51886c=_0x1f78f6;_0xef5f02=0xc8;}else{_0xef5f02=0xce;}_0x17b54b[_0x38dd('0x2b')](_0xef5f02);return _0x17b54b[_0x38dd('0x2c')](_0x38dd('0x2d'),_0x249e3d+'-'+_0x51886c+'/'+_0x1f78f6)[_0x38dd('0x26')](_0x5442e1);}return null;};}function patchUpdates(_0x506f37){return function(_0x465466){try{jsonpatch['apply'](_0x465466,_0x506f37,!![]);}catch(_0x38b697){return BPromise[_0x38dd('0x2e')](_0x38b697);}return _0x465466[_0x38dd('0x2f')]();};}function saveUpdates(_0x5dc9ab,_0x1fbc07){return function(_0x3656a1){if(_0x3656a1){return _0x3656a1[_0x38dd('0x30')](_0x5dc9ab)[_0x38dd('0x1a')](function(_0x3d3a68){return _0x3d3a68;});}return null;};}function removeEntity(_0x37b804,_0x1efcf0){return function(_0x4ed420){if(_0x4ed420){return _0x4ed420[_0x38dd('0x31')]()[_0x38dd('0x1a')](function(){_0x37b804[_0x38dd('0x2b')](0xcc)[_0x38dd('0x25')]();});}};}function handleEntityNotFound(_0x21c825,_0x240553){return function(_0x576423){if(!_0x576423){_0x21c825[_0x38dd('0x32')](0x194);}return _0x576423;};}function handleError(_0x1f7c30,_0x3f8d26){_0x3f8d26=_0x3f8d26||0x1f4;return function(_0x159d6a){logger['error'](_0x159d6a[_0x38dd('0x33')]);if(_0x159d6a[_0x38dd('0x34')]){delete _0x159d6a[_0x38dd('0x34')];}_0x1f7c30[_0x38dd('0x2b')](_0x3f8d26)[_0x38dd('0x35')](_0x159d6a);};}exports[_0x38dd('0x36')]=function(_0x5ef789,_0x3ea864){var _0x2d2643={},_0x3bd82b={},_0x2874b6={'count':0x0,'rows':[]};var _0x57f28a=_[_0x38dd('0x37')](db[_0x38dd('0x38')][_0x38dd('0x39')],function(_0x2ef65e){return{'name':_0x2ef65e['fieldName'],'type':_0x2ef65e['type'][_0x38dd('0x3a')]};});_0x3bd82b['model']=_[_0x38dd('0x37')](_0x57f28a,_0x38dd('0x34'));_0x3bd82b['query']=_[_0x38dd('0x3b')](_0x5ef789[_0x38dd('0x3c')]);_0x3bd82b['filters']=_[_0x38dd('0x3d')](_0x3bd82b[_0x38dd('0x3e')],_0x3bd82b[_0x38dd('0x3c')]);_0x2d2643['attributes']=_['intersection'](_0x3bd82b[_0x38dd('0x3e')],qs[_0x38dd('0x3f')](_0x5ef789[_0x38dd('0x3c')][_0x38dd('0x3f')]));_0x2d2643[_0x38dd('0x40')]=_0x2d2643[_0x38dd('0x40')][_0x38dd('0x41')]?_0x2d2643[_0x38dd('0x40')]:_0x3bd82b[_0x38dd('0x3e')];if(!_0x5ef789[_0x38dd('0x3c')][_0x38dd('0x42')](_0x38dd('0x43'))){_0x2d2643['limit']=qs[_0x38dd('0x29')](_0x5ef789[_0x38dd('0x3c')][_0x38dd('0x29')]);_0x2d2643[_0x38dd('0x27')]=qs[_0x38dd('0x27')](_0x5ef789[_0x38dd('0x3c')][_0x38dd('0x27')]);}_0x2d2643['order']=qs[_0x38dd('0x44')](_0x5ef789[_0x38dd('0x3c')]['sort']);_0x2d2643[_0x38dd('0x45')]=qs[_0x38dd('0x46')](_[_0x38dd('0x47')](_0x5ef789[_0x38dd('0x3c')],_0x3bd82b['filters']),_0x57f28a);if(_0x5ef789[_0x38dd('0x3c')]['filter']){_0x2d2643['where']=_[_0x38dd('0x48')](_0x2d2643[_0x38dd('0x45')],{'$or':_[_0x38dd('0x37')](_0x57f28a,function(_0x1e2974){if(_0x1e2974[_0x38dd('0x49')]!==_0x38dd('0x4a')){var _0x33571e={};_0x33571e[_0x1e2974[_0x38dd('0x34')]]={'$like':'%'+_0x5ef789[_0x38dd('0x3c')][_0x38dd('0x4b')]+'%'};return _0x33571e;}})});}_0x2d2643=_[_0x38dd('0x48')]({},_0x2d2643,_0x5ef789[_0x38dd('0x4c')]);var _0x23eb9b={'where':_0x2d2643[_0x38dd('0x45')]};return db['Network'][_0x38dd('0x2a')](_0x23eb9b)['then'](function(_0xe44ded){_0x2874b6[_0x38dd('0x2a')]=_0xe44ded;if(_0x5ef789['query'][_0x38dd('0x4d')]){_0x2d2643[_0x38dd('0x4e')]=[{'all':!![]}];}return db[_0x38dd('0x38')][_0x38dd('0x4f')](_0x2d2643);})[_0x38dd('0x1a')](function(_0x29a5c4){_0x2874b6[_0x38dd('0x50')]=_0x29a5c4;return _0x2874b6;})[_0x38dd('0x1a')](respondWithFilteredResult(_0x3ea864,_0x2d2643))[_0x38dd('0x51')](handleError(_0x3ea864,null));};exports[_0x38dd('0x52')]=function(_0x13a670,_0x50a5b8){var _0x2d9d04={'raw':!![],'where':{'id':_0x13a670[_0x38dd('0x53')]['id']}},_0x438145={};_0x438145[_0x38dd('0x3e')]=_['keys'](db[_0x38dd('0x38')][_0x38dd('0x39')]);_0x438145[_0x38dd('0x3c')]=_[_0x38dd('0x3b')](_0x13a670[_0x38dd('0x3c')]);_0x438145[_0x38dd('0x46')]=_[_0x38dd('0x3d')](_0x438145['model'],_0x438145[_0x38dd('0x3c')]);_0x2d9d04[_0x38dd('0x40')]=_[_0x38dd('0x3d')](_0x438145['model'],qs['fields'](_0x13a670['query'][_0x38dd('0x3f')]));_0x2d9d04[_0x38dd('0x40')]=_0x2d9d04['attributes'][_0x38dd('0x41')]?_0x2d9d04[_0x38dd('0x40')]:_0x438145['model'];if(_0x13a670[_0x38dd('0x3c')][_0x38dd('0x4d')]){_0x2d9d04[_0x38dd('0x4e')]=[{'all':!![]}];}_0x2d9d04=_[_0x38dd('0x48')]({},_0x2d9d04,_0x13a670[_0x38dd('0x4c')]);return db[_0x38dd('0x38')]['find'](_0x2d9d04)[_0x38dd('0x1a')](handleEntityNotFound(_0x50a5b8,null))[_0x38dd('0x1a')](respondWithResult(_0x50a5b8,null))['catch'](handleError(_0x50a5b8,null));};exports[_0x38dd('0x54')]=function(_0x5169fe,_0x28c03f,_0x672446){var _0x3df6c6;return db['sequelize']['transaction'](function(_0x507179){return db[_0x38dd('0x38')][_0x38dd('0x54')](_0x5169fe['body'],{'raw':!![]})[_0x38dd('0x1a')](function(_0x24e827){_0x3df6c6=_0x24e827;return db[_0x38dd('0x38')][_0x38dd('0x4f')]({'where':{'type':_0x5169fe[_0x38dd('0x55')][_0x38dd('0x49')]},'raw':!![]});})[_0x38dd('0x1a')](function(_0x180612){if(_0x3df6c6[_0x38dd('0x49')][_0x38dd('0x56')]()=='STUN'){var _0x9ec97b=fs[_0x38dd('0x57')](path['join'](config['root'],_0x38dd('0x58')),_0x38dd('0x59'));var _0x26d7f4=ejs[_0x38dd('0x5a')](_0x9ec97b,{'networks':_0x180612||[]});fs['writeFileSync'](_0x38dd('0x5b'),_0x26d7f4);return respondWithRpcPromise(_0x38dd('0x5c'),_0x38dd('0x54'),{'module':_0x38dd('0x5d')});}else if(_0x3df6c6['type'][_0x38dd('0x56')]()==_0x38dd('0x5e')){var _0x44abae=fs[_0x38dd('0x57')](path[_0x38dd('0x5f')](config[_0x38dd('0x60')],_0x38dd('0x61')),_0x38dd('0x59'));var _0xa1d68=ejs[_0x38dd('0x5a')](_0x44abae,{'networks':_0x180612||[]});fs[_0x38dd('0x62')]('/etc/asterisk/turn_xcally.conf',_0xa1d68);return respondWithRpcPromise(_0x38dd('0x5c'),'create',{'module':_0x38dd('0x5d')});}else{var _0x5cd1bb=fs[_0x38dd('0x57')](path[_0x38dd('0x5f')](config['root'],_0x38dd('0x63')),_0x38dd('0x59'));var _0x3ad275=ejs[_0x38dd('0x5a')](_0x5cd1bb,{'networks':_0x180612||[]});fs[_0x38dd('0x62')](util[_0x38dd('0x64')](_0x38dd('0x65'),_0x5169fe['body'][_0x38dd('0x49')][_0x38dd('0x66')]()),_0x3ad275);return respondWithRpcPromise(_0x38dd('0x5c'),'create',{'module':_0x38dd('0x67')});}return null;})[_0x38dd('0x1a')](function(){return _0x3df6c6;});})[_0x38dd('0x1a')](respondWithResult(_0x28c03f,0xc9))['catch'](handleError(_0x28c03f,null));};exports[_0x38dd('0x30')]=function(_0x3784eb,_0x4ae48e,_0x45ac0c){var _0x257de0;return db[_0x38dd('0x68')][_0x38dd('0x69')](function(_0x1c54ea){return db[_0x38dd('0x38')][_0x38dd('0x6a')]({'where':{'id':_0x3784eb[_0x38dd('0x53')]['id']}})['then'](handleEntityNotFound(_0x4ae48e,null))['then'](saveUpdates(_0x3784eb[_0x38dd('0x55')],null))[_0x38dd('0x1a')](function(_0x363795){if(_0x363795){_0x257de0=_0x363795;return db[_0x38dd('0x38')][_0x38dd('0x4f')]({'where':{'type':_0x257de0[_0x38dd('0x49')]},'raw':!![]});}return null;})['then'](function(_0x411ffe){if(_0x257de0['type'][_0x38dd('0x56')]()==_0x38dd('0x6b')){var _0x313e9d=fs['readFileSync'](path[_0x38dd('0x5f')](config['root'],_0x38dd('0x58')),_0x38dd('0x59'));var _0x27ab15=ejs[_0x38dd('0x5a')](_0x313e9d,{'networks':_0x411ffe||[]});fs[_0x38dd('0x62')](_0x38dd('0x5b'),_0x27ab15);return respondWithRpcPromise(_0x38dd('0x5c'),_0x38dd('0x30'),{'module':_0x38dd('0x5d')});}else if(_0x257de0[_0x38dd('0x49')][_0x38dd('0x56')]()==_0x38dd('0x5e')){var _0x4a55a6=fs['readFileSync'](path[_0x38dd('0x5f')](config['root'],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x505019=ejs['render'](_0x4a55a6,{'networks':_0x411ffe||[]});fs[_0x38dd('0x62')]('/etc/asterisk/turn_xcally.conf',_0x505019);return respondWithRpcPromise(_0x38dd('0x5c'),'update',{'module':_0x38dd('0x5d')});}else{var _0x5c7db3=fs[_0x38dd('0x57')](path[_0x38dd('0x5f')](config[_0x38dd('0x60')],_0x38dd('0x63')),_0x38dd('0x59'));var _0x28b5ec=ejs['render'](_0x5c7db3,{'networks':_0x411ffe||[]});fs['writeFileSync'](util[_0x38dd('0x64')](_0x38dd('0x65'),_0x3784eb['body'][_0x38dd('0x49')][_0x38dd('0x66')]()),_0x28b5ec);return respondWithRpcPromise(_0x38dd('0x5c'),_0x38dd('0x30'),{'module':_0x38dd('0x67')});}return null;})[_0x38dd('0x1a')](function(_0x2a2729){if(_0x2a2729){return _0x257de0;}return null;});})[_0x38dd('0x1a')](respondWithResult(_0x4ae48e,null))[_0x38dd('0x51')](handleError(_0x4ae48e,null));};exports['destroy']=function(_0x2e9205,_0x1855d4,_0x3576bf){var _0x37cbdf;return db[_0x38dd('0x38')][_0x38dd('0x6a')]({'where':{'id':_0x2e9205['params']['id']}})[_0x38dd('0x1a')](function(_0x1a75e8){_0x37cbdf=_0x1a75e8;return _0x1a75e8;})[_0x38dd('0x1a')](handleEntityNotFound(_0x1855d4,null))[_0x38dd('0x1a')](removeEntity(_0x1855d4,null))[_0x38dd('0x1a')](function(){if(_0x37cbdf){return db[_0x38dd('0x38')][_0x38dd('0x4f')]({'where':{'type':_0x37cbdf[_0x38dd('0x49')]},'raw':!![]});}})[_0x38dd('0x1a')](function(_0x3d4669){if(_0x37cbdf[_0x38dd('0x49')]['toUpperCase']()==_0x38dd('0x6b')){var _0x85d151=fs[_0x38dd('0x57')](path['join'](config['root'],_0x38dd('0x58')),_0x38dd('0x59'));var _0xee2226=ejs[_0x38dd('0x5a')](_0x85d151,{'networks':_0x3d4669||[]});fs['writeFileSync'](_0x38dd('0x5b'),_0xee2226);return respondWithRpcPromise(_0x38dd('0x5c'),_0x38dd('0x31'),{'module':_0x38dd('0x5d')});}else if(_0x37cbdf[_0x38dd('0x49')][_0x38dd('0x56')]()==_0x38dd('0x5e')){var _0x1ab27a=fs[_0x38dd('0x57')](path[_0x38dd('0x5f')](config['root'],_0x38dd('0x61')),_0x38dd('0x59'));var _0x461e09=ejs[_0x38dd('0x5a')](_0x1ab27a,{'networks':_0x3d4669||[]});fs[_0x38dd('0x62')](_0x38dd('0x6c'),_0x461e09);return respondWithRpcPromise(_0x38dd('0x5c'),_0x38dd('0x31'),{'module':_0x38dd('0x5d')});}else{var _0x56fb76=fs[_0x38dd('0x57')](path[_0x38dd('0x5f')](config[_0x38dd('0x60')],'server/files/templates/network.ejs'),_0x38dd('0x59'));var _0x44731c=ejs[_0x38dd('0x5a')](_0x56fb76,{'networks':_0x3d4669||[]});fs[_0x38dd('0x62')](util['format'](_0x38dd('0x65'),_0x2e9205[_0x38dd('0x55')][_0x38dd('0x49')]['toLowerCase']()),_0x44731c);return respondWithRpcPromise(_0x38dd('0x5c'),'destroy',{'module':_0x38dd('0x67')});}return null;})[_0x38dd('0x51')](handleError(_0x1855d4,null));};
\ No newline at end of file
+var _0x7378=['../../mysqldb','jayson/promise','client','http','request','then','info','Network,\x20%s,\x20%s','request\x20sent','Network,\x20%s,\x20%s,\x20%s','error','code','message','result','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','save','stack','name','send','index','rawAttributes','fieldName','type','key','model','keys','filters','intersection','attributes','query','fields','hasOwnProperty','nolimit','sort','pick','where','VIRTUAL','filter','Network','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','sequelize','transaction','create','body','root','utf8','render','writeFileSync','Reload','res_stun_monitor.so','toUpperCase','join','/etc/asterisk/turn_xcally.conf','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','update','/etc/asterisk/stun_xcally.conf','TURN','readFileSync','server/files/templates/turn_multiple.ejs','server/files/templates/network.ejs','destroy','STUN','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x7378,0xbd));var _0x8737=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7378[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8737('0x0'));var zipdir=require(_0x8737('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8737('0x2'));var BPromise=require(_0x8737('0x3'));var Mustache=require('mustache');var util=require(_0x8737('0x4'));var path=require(_0x8737('0x5'));var sox=require(_0x8737('0x6'));var csv=require(_0x8737('0x7'));var ejs=require(_0x8737('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8737('0x9'));var squel=require(_0x8737('0xa'));var crypto=require('crypto');var jsforce=require(_0x8737('0xb'));var deskjs=require(_0x8737('0xc'));var toCsv=require(_0x8737('0x7'));var querystring=require('querystring');var Papa=require(_0x8737('0xd'));var Redis=require(_0x8737('0xe'));var authService=require(_0x8737('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x8737('0x10'));var hardwareService=require(_0x8737('0x11'));var logger=require(_0x8737('0x12'))(_0x8737('0x13'));var utils=require('../../config/utils');var config=require(_0x8737('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x8737('0x15'))['db'];var jayson=require(_0x8737('0x16'));var client=jayson[_0x8737('0x17')][_0x8737('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x475369,_0x4ad31e,_0x4840c7,_0x354f3f){return new BPromise(function(_0x53c3fb,_0x162b10){var _0x47f49e=_0x354f3f||client;return _0x47f49e[_0x8737('0x19')](_0x475369,_0x4840c7)[_0x8737('0x1a')](function(_0x388cb5){logger[_0x8737('0x1b')](_0x8737('0x1c'),_0x4ad31e,_0x8737('0x1d'));logger['debug'](_0x8737('0x1e'),_0x4ad31e,'request\x20sent',JSON['stringify'](_0x388cb5));if(_0x388cb5[_0x8737('0x1f')]){if(_0x388cb5['error'][_0x8737('0x20')]===0x1f4){logger[_0x8737('0x1f')](_0x8737('0x1c'),_0x4ad31e,_0x388cb5[_0x8737('0x1f')]['message']);return _0x162b10(_0x388cb5[_0x8737('0x1f')][_0x8737('0x21')]);}logger[_0x8737('0x1f')](_0x8737('0x1c'),_0x4ad31e,_0x388cb5[_0x8737('0x1f')][_0x8737('0x21')]);return _0x53c3fb(_0x388cb5['error'][_0x8737('0x21')]);}else{logger[_0x8737('0x1b')]('Network,\x20%s,\x20%s',_0x4ad31e,_0x8737('0x1d'));_0x53c3fb(_0x388cb5[_0x8737('0x22')]['message']);}})['catch'](function(_0x4ebfe5){logger[_0x8737('0x1f')]('Network,\x20%s,\x20%s',_0x4ad31e,_0x4ebfe5);_0x162b10(_0x4ebfe5);});});}function respondWithStatusCode(_0xea3d60,_0x54cebf){_0x54cebf=_0x54cebf||0xcc;return function(_0x508a3c){if(_0x508a3c){return _0xea3d60[_0x8737('0x23')](_0x54cebf);}return _0xea3d60[_0x8737('0x24')](_0x54cebf)[_0x8737('0x25')]();};}function respondWithResult(_0x30f165,_0x42315c){_0x42315c=_0x42315c||0xc8;return function(_0x42276c){if(_0x42276c){return _0x30f165[_0x8737('0x24')](_0x42315c)['json'](_0x42276c);}};}function respondWithFilteredResult(_0x3a895a,_0x4a30c0){return function(_0x123470){if(_0x123470){var _0x13b105=typeof _0x4a30c0[_0x8737('0x26')]==='undefined'&&typeof _0x4a30c0[_0x8737('0x27')]===_0x8737('0x28');var _0x31ea6b=_0x123470[_0x8737('0x29')];var _0x5e8a68=_0x13b105?0x0:_0x4a30c0['offset'];var _0x1eeba5=_0x13b105?_0x123470[_0x8737('0x29')]:_0x4a30c0[_0x8737('0x26')]+_0x4a30c0['limit'];var _0x19d1d0;if(_0x1eeba5>=_0x31ea6b){_0x1eeba5=_0x31ea6b;_0x19d1d0=0xc8;}else{_0x19d1d0=0xce;}_0x3a895a[_0x8737('0x24')](_0x19d1d0);return _0x3a895a[_0x8737('0x2a')](_0x8737('0x2b'),_0x5e8a68+'-'+_0x1eeba5+'/'+_0x31ea6b)[_0x8737('0x2c')](_0x123470);}return null;};}function patchUpdates(_0x174b8f){return function(_0x44d7c6){try{jsonpatch['apply'](_0x44d7c6,_0x174b8f,!![]);}catch(_0xc90116){return BPromise['reject'](_0xc90116);}return _0x44d7c6[_0x8737('0x2d')]();};}function saveUpdates(_0x7bde36,_0x562b2b){return function(_0x338352){if(_0x338352){return _0x338352['update'](_0x7bde36)['then'](function(_0x2ae129){return _0x2ae129;});}return null;};}function removeEntity(_0x581928,_0x193380){return function(_0x4cd616){if(_0x4cd616){return _0x4cd616['destroy']()['then'](function(){_0x581928[_0x8737('0x24')](0xcc)[_0x8737('0x25')]();});}};}function handleEntityNotFound(_0x5e184c,_0xa71ba2){return function(_0x338840){if(!_0x338840){_0x5e184c['sendStatus'](0x194);}return _0x338840;};}function handleError(_0x46920c,_0x225c62){_0x225c62=_0x225c62||0x1f4;return function(_0x201f35){logger[_0x8737('0x1f')](_0x201f35[_0x8737('0x2e')]);if(_0x201f35[_0x8737('0x2f')]){delete _0x201f35['name'];}_0x46920c[_0x8737('0x24')](_0x225c62)[_0x8737('0x30')](_0x201f35);};}exports[_0x8737('0x31')]=function(_0x588885,_0x40ab1c){var _0x50c4c8={},_0x2158f8={},_0x4e391c={'count':0x0,'rows':[]};var _0x14a10e=_['map'](db['Network'][_0x8737('0x32')],function(_0x350a40){return{'name':_0x350a40[_0x8737('0x33')],'type':_0x350a40[_0x8737('0x34')][_0x8737('0x35')]};});_0x2158f8[_0x8737('0x36')]=_['map'](_0x14a10e,_0x8737('0x2f'));_0x2158f8['query']=_[_0x8737('0x37')](_0x588885['query']);_0x2158f8[_0x8737('0x38')]=_[_0x8737('0x39')](_0x2158f8[_0x8737('0x36')],_0x2158f8['query']);_0x50c4c8[_0x8737('0x3a')]=_[_0x8737('0x39')](_0x2158f8['model'],qs['fields'](_0x588885[_0x8737('0x3b')][_0x8737('0x3c')]));_0x50c4c8['attributes']=_0x50c4c8['attributes']['length']?_0x50c4c8[_0x8737('0x3a')]:_0x2158f8[_0x8737('0x36')];if(!_0x588885['query'][_0x8737('0x3d')](_0x8737('0x3e'))){_0x50c4c8[_0x8737('0x27')]=qs[_0x8737('0x27')](_0x588885[_0x8737('0x3b')][_0x8737('0x27')]);_0x50c4c8[_0x8737('0x26')]=qs['offset'](_0x588885[_0x8737('0x3b')][_0x8737('0x26')]);}_0x50c4c8['order']=qs[_0x8737('0x3f')](_0x588885[_0x8737('0x3b')][_0x8737('0x3f')]);_0x50c4c8['where']=qs['filters'](_[_0x8737('0x40')](_0x588885['query'],_0x2158f8[_0x8737('0x38')]),_0x14a10e);if(_0x588885[_0x8737('0x3b')]['filter']){_0x50c4c8[_0x8737('0x41')]=_['merge'](_0x50c4c8[_0x8737('0x41')],{'$or':_['map'](_0x14a10e,function(_0x19400a){if(_0x19400a[_0x8737('0x34')]!==_0x8737('0x42')){var _0x26e73c={};_0x26e73c[_0x19400a['name']]={'$like':'%'+_0x588885[_0x8737('0x3b')][_0x8737('0x43')]+'%'};return _0x26e73c;}})});}_0x50c4c8=_['merge']({},_0x50c4c8,_0x588885['options']);var _0x10de6a={'where':_0x50c4c8[_0x8737('0x41')]};return db[_0x8737('0x44')]['count'](_0x10de6a)[_0x8737('0x1a')](function(_0x567bdb){_0x4e391c[_0x8737('0x29')]=_0x567bdb;if(_0x588885[_0x8737('0x3b')][_0x8737('0x45')]){_0x50c4c8[_0x8737('0x46')]=[{'all':!![]}];}return db[_0x8737('0x44')][_0x8737('0x47')](_0x50c4c8);})['then'](function(_0x4bfeaa){_0x4e391c[_0x8737('0x48')]=_0x4bfeaa;return _0x4e391c;})[_0x8737('0x1a')](respondWithFilteredResult(_0x40ab1c,_0x50c4c8))['catch'](handleError(_0x40ab1c,null));};exports[_0x8737('0x49')]=function(_0xaa9e5a,_0x36eb41){var _0x14d425={'raw':!![],'where':{'id':_0xaa9e5a[_0x8737('0x4a')]['id']}},_0x2b6248={};_0x2b6248['model']=_[_0x8737('0x37')](db['Network'][_0x8737('0x32')]);_0x2b6248[_0x8737('0x3b')]=_['keys'](_0xaa9e5a[_0x8737('0x3b')]);_0x2b6248['filters']=_[_0x8737('0x39')](_0x2b6248[_0x8737('0x36')],_0x2b6248[_0x8737('0x3b')]);_0x14d425['attributes']=_['intersection'](_0x2b6248['model'],qs[_0x8737('0x3c')](_0xaa9e5a[_0x8737('0x3b')]['fields']));_0x14d425[_0x8737('0x3a')]=_0x14d425[_0x8737('0x3a')][_0x8737('0x4b')]?_0x14d425[_0x8737('0x3a')]:_0x2b6248[_0x8737('0x36')];if(_0xaa9e5a[_0x8737('0x3b')]['includeAll']){_0x14d425[_0x8737('0x46')]=[{'all':!![]}];}_0x14d425=_[_0x8737('0x4c')]({},_0x14d425,_0xaa9e5a[_0x8737('0x4d')]);return db[_0x8737('0x44')][_0x8737('0x4e')](_0x14d425)[_0x8737('0x1a')](handleEntityNotFound(_0x36eb41,null))[_0x8737('0x1a')](respondWithResult(_0x36eb41,null))[_0x8737('0x4f')](handleError(_0x36eb41,null));};exports['create']=function(_0x355957,_0x1c2420,_0x4360e5){var _0x5cbbdb;return db[_0x8737('0x50')][_0x8737('0x51')](function(_0x448daf){return db[_0x8737('0x44')][_0x8737('0x52')](_0x355957[_0x8737('0x53')],{'raw':!![]})['then'](function(_0xbae619){_0x5cbbdb=_0xbae619;return db[_0x8737('0x44')][_0x8737('0x47')]({'where':{'type':_0x355957[_0x8737('0x53')]['type']},'raw':!![]});})[_0x8737('0x1a')](function(_0x5d4b4d){if(_0x5cbbdb[_0x8737('0x34')]['toUpperCase']()=='STUN'){var _0x1533ed=fs['readFileSync'](path['join'](config[_0x8737('0x54')],'server/files/templates/stun_multiple.ejs'),_0x8737('0x55'));var _0x546699=ejs[_0x8737('0x56')](_0x1533ed,{'networks':_0x5d4b4d||[]});fs[_0x8737('0x57')]('/etc/asterisk/stun_xcally.conf',_0x546699);return respondWithRpcPromise(_0x8737('0x58'),'create',{'module':_0x8737('0x59')});}else if(_0x5cbbdb['type'][_0x8737('0x5a')]()=='TURN'){var _0x28586f=fs['readFileSync'](path[_0x8737('0x5b')](config[_0x8737('0x54')],'server/files/templates/turn_multiple.ejs'),_0x8737('0x55'));var _0x50ac16=ejs['render'](_0x28586f,{'networks':_0x5d4b4d||[]});fs[_0x8737('0x57')](_0x8737('0x5c'),_0x50ac16);return respondWithRpcPromise(_0x8737('0x58'),'create',{'module':_0x8737('0x59')});}else{var _0x296cae=fs['readFileSync'](path['join'](config[_0x8737('0x54')],'server/files/templates/network.ejs'),'utf8');var _0x424fd2=ejs[_0x8737('0x56')](_0x296cae,{'networks':_0x5d4b4d||[]});fs[_0x8737('0x57')](util[_0x8737('0x5d')](_0x8737('0x5e'),_0x355957[_0x8737('0x53')][_0x8737('0x34')][_0x8737('0x5f')]()),_0x424fd2);return respondWithRpcPromise(_0x8737('0x58'),'create',{'module':_0x8737('0x60')});}return null;})['then'](function(){return _0x5cbbdb;});})['then'](respondWithResult(_0x1c2420,0xc9))[_0x8737('0x4f')](handleError(_0x1c2420,null));};exports[_0x8737('0x61')]=function(_0x2663a5,_0x3768ec,_0x423ba1){var _0x176b07;return db[_0x8737('0x50')][_0x8737('0x51')](function(_0x1abdf5){return db['Network'][_0x8737('0x4e')]({'where':{'id':_0x2663a5['params']['id']}})[_0x8737('0x1a')](handleEntityNotFound(_0x3768ec,null))['then'](saveUpdates(_0x2663a5[_0x8737('0x53')],null))[_0x8737('0x1a')](function(_0x546987){if(_0x546987){_0x176b07=_0x546987;return db['Network'][_0x8737('0x47')]({'where':{'type':_0x176b07['type']},'raw':!![]});}return null;})[_0x8737('0x1a')](function(_0x9c9e62){if(_0x176b07[_0x8737('0x34')][_0x8737('0x5a')]()=='STUN'){var _0x3bb4f4=fs['readFileSync'](path['join'](config[_0x8737('0x54')],'server/files/templates/stun_multiple.ejs'),'utf8');var _0xbc315=ejs['render'](_0x3bb4f4,{'networks':_0x9c9e62||[]});fs['writeFileSync'](_0x8737('0x62'),_0xbc315);return respondWithRpcPromise(_0x8737('0x58'),_0x8737('0x61'),{'module':_0x8737('0x59')});}else if(_0x176b07[_0x8737('0x34')][_0x8737('0x5a')]()==_0x8737('0x63')){var _0x556c37=fs[_0x8737('0x64')](path[_0x8737('0x5b')](config[_0x8737('0x54')],_0x8737('0x65')),_0x8737('0x55'));var _0xf27e1b=ejs[_0x8737('0x56')](_0x556c37,{'networks':_0x9c9e62||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0xf27e1b);return respondWithRpcPromise('Reload',_0x8737('0x61'),{'module':_0x8737('0x59')});}else{var _0x55a0d5=fs[_0x8737('0x64')](path[_0x8737('0x5b')](config[_0x8737('0x54')],_0x8737('0x66')),'utf8');var _0xf2eef4=ejs[_0x8737('0x56')](_0x55a0d5,{'networks':_0x9c9e62||[]});fs['writeFileSync'](util['format'](_0x8737('0x5e'),_0x2663a5[_0x8737('0x53')]['type']['toLowerCase']()),_0xf2eef4);return respondWithRpcPromise(_0x8737('0x58'),_0x8737('0x61'),{'module':_0x8737('0x60')});}return null;})[_0x8737('0x1a')](function(_0x4cbd4a){if(_0x4cbd4a){return _0x176b07;}return null;});})['then'](respondWithResult(_0x3768ec,null))[_0x8737('0x4f')](handleError(_0x3768ec,null));};exports[_0x8737('0x67')]=function(_0x4b61bc,_0x27f18c,_0x37622e){var _0x334ea4;return db[_0x8737('0x44')][_0x8737('0x4e')]({'where':{'id':_0x4b61bc[_0x8737('0x4a')]['id']}})[_0x8737('0x1a')](function(_0x536bc8){_0x334ea4=_0x536bc8;return _0x536bc8;})[_0x8737('0x1a')](handleEntityNotFound(_0x27f18c,null))[_0x8737('0x1a')](removeEntity(_0x27f18c,null))[_0x8737('0x1a')](function(){if(_0x334ea4){return db['Network']['findAll']({'where':{'type':_0x334ea4[_0x8737('0x34')]},'raw':!![]});}})[_0x8737('0x1a')](function(_0x1cdb8f){if(_0x334ea4[_0x8737('0x34')][_0x8737('0x5a')]()==_0x8737('0x68')){var _0xe5b9bd=fs['readFileSync'](path['join'](config[_0x8737('0x54')],'server/files/templates/stun_multiple.ejs'),_0x8737('0x55'));var _0x1131e6=ejs[_0x8737('0x56')](_0xe5b9bd,{'networks':_0x1cdb8f||[]});fs[_0x8737('0x57')](_0x8737('0x62'),_0x1131e6);return respondWithRpcPromise(_0x8737('0x58'),_0x8737('0x67'),{'module':_0x8737('0x59')});}else if(_0x334ea4[_0x8737('0x34')][_0x8737('0x5a')]()=='TURN'){var _0x3f74d0=fs[_0x8737('0x64')](path['join'](config[_0x8737('0x54')],'server/files/templates/turn_multiple.ejs'),_0x8737('0x55'));var _0x828f36=ejs[_0x8737('0x56')](_0x3f74d0,{'networks':_0x1cdb8f||[]});fs['writeFileSync'](_0x8737('0x5c'),_0x828f36);return respondWithRpcPromise(_0x8737('0x58'),_0x8737('0x67'),{'module':_0x8737('0x59')});}else{var _0x67d639=fs[_0x8737('0x64')](path[_0x8737('0x5b')](config['root'],_0x8737('0x66')),_0x8737('0x55'));var _0x111e48=ejs[_0x8737('0x56')](_0x67d639,{'networks':_0x1cdb8f||[]});fs[_0x8737('0x57')](util[_0x8737('0x5d')]('/etc/asterisk/sip_xcally_%s.conf',_0x4b61bc[_0x8737('0x53')]['type'][_0x8737('0x5f')]()),_0x111e48);return respondWithRpcPromise(_0x8737('0x58'),_0x8737('0x67'),{'module':_0x8737('0x60')});}return null;})['catch'](handleError(_0x27f18c,null));};
\ No newline at end of file
index 0a58d8c..50b22ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fdb=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./network.attributes','Network','network'];(function(_0x33beec,_0x4d7bc6){var _0x3ac237=function(_0x544c0e){while(--_0x544c0e){_0x33beec['push'](_0x33beec['shift']());}};_0x3ac237(++_0x4d7bc6);}(_0x4fdb,0x9c));var _0xb4fd=function(_0x119a5e,_0x1ccc3c){_0x119a5e=_0x119a5e-0x0;var _0x4ab14c=_0x4fdb[_0x119a5e];return _0x4ab14c;};'use strict';var _=require(_0xb4fd('0x0'));var util=require(_0xb4fd('0x1'));var logger=require(_0xb4fd('0x2'))(_0xb4fd('0x3'));var moment=require(_0xb4fd('0x4'));var BPromise=require(_0xb4fd('0x5'));var rp=require(_0xb4fd('0x6'));var fs=require('fs');var path=require(_0xb4fd('0x7'));var rimraf=require(_0xb4fd('0x8'));var config=require('../../config/environment');var attributes=require(_0xb4fd('0x9'));module['exports']=function(_0x14052b,_0x5d8b39){return _0x14052b['define'](_0xb4fd('0xa'),attributes,{'tableName':_0xb4fd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xee4f=['bluebird','path','../../config/environment','Network','network','lodash','api','moment'];(function(_0x358c86,_0x38a8a2){var _0x52edc5=function(_0x560096){while(--_0x560096){_0x358c86['push'](_0x358c86['shift']());}};_0x52edc5(++_0x38a8a2);}(_0xee4f,0xad));var _0xfee4=function(_0x40cb9d,_0x1fb2ca){_0x40cb9d=_0x40cb9d-0x0;var _0x7c2743=_0xee4f[_0x40cb9d];return _0x7c2743;};'use strict';var _=require(_0xfee4('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xfee4('0x1'));var moment=require(_0xfee4('0x2'));var BPromise=require(_0xfee4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfee4('0x4'));var rimraf=require('rimraf');var config=require(_0xfee4('0x5'));var attributes=require('./network.attributes');module['exports']=function(_0x1c39b1,_0x498647){return _0x1c39b1['define'](_0xfee4('0x6'),attributes,{'tableName':_0xfee4('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4dc46ae..4252840 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7a54,0x106));var _0x47a5=function(_0x58361e,_0x32283a){_0x58361e=_0x58361e-0x0;var _0x32342c=_0x7a54[_0x58361e];return _0x32342c;};'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
+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(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x7a54,0x106));var _0x47a5=function(_0x4ec4c1,_0x585af5){_0x4ec4c1=_0x4ec4c1-0x0;var _0x4c04b7=_0x7a54[_0x4ec4c1];return _0x4c04b7;};'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 6a853f6..627ee9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9869=['util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getApplications','getInteractions','create','addDisposition','addAnswer','post','/:id/notify','notify','/:id/applications','addApplications','/:id/users','addAgents','/:id/send','put','update','delete','destroy','removeDispositions','removeAgents','exports','multer'];(function(_0x3fba9f,_0x3b7b9b){var _0x192cf1=function(_0x557290){while(--_0x557290){_0x3fba9f['push'](_0x3fba9f['shift']());}};_0x192cf1(++_0x3b7b9b);}(_0x9869,0xd7));var _0x9986=function(_0x5be9e3,_0x39735a){_0x5be9e3=_0x5be9e3-0x0;var _0x4df97e=_0x9869[_0x5be9e3];return _0x4df97e;};'use strict';var multer=require(_0x9986('0x0'));var util=require(_0x9986('0x1'));var path=require(_0x9986('0x2'));var timeout=require('connect-timeout');var express=require(_0x9986('0x3'));var router=express[_0x9986('0x4')]();var fs_extra=require(_0x9986('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9986('0x6'));var config=require(_0x9986('0x7'));var controller=require('./openchannelAccount.controller');router[_0x9986('0x8')]('/',auth[_0x9986('0x9')](),controller['index']);router['get'](_0x9986('0xa'),auth['isAuthenticated'](),controller[_0x9986('0xb')]);router['get'](_0x9986('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x9986('0x8')](_0x9986('0xd'),auth[_0x9986('0x9')](),controller[_0x9986('0xe')]);router[_0x9986('0x8')](_0x9986('0xf'),auth[_0x9986('0x9')](),controller['getAnswers']);router[_0x9986('0x8')]('/:id/applications',auth[_0x9986('0x9')](),controller[_0x9986('0x10')]);router['get']('/:id/interactions',auth[_0x9986('0x9')](),controller[_0x9986('0x11')]);router['get']('/:id/users',auth['isAuthenticated'](),controller['getAgents']);router['post']('/',auth['isAuthenticated'](),controller[_0x9986('0x12')]);router['post'](_0x9986('0xd'),auth[_0x9986('0x9')](),controller[_0x9986('0x13')]);router['post'](_0x9986('0xf'),auth[_0x9986('0x9')](),controller[_0x9986('0x14')]);router[_0x9986('0x15')](_0x9986('0x16'),controller[_0x9986('0x17')]);router[_0x9986('0x15')](_0x9986('0x18'),auth[_0x9986('0x9')](),controller[_0x9986('0x19')]);router[_0x9986('0x15')](_0x9986('0x1a'),auth['isAuthenticated'](),controller[_0x9986('0x1b')]);router[_0x9986('0x15')](_0x9986('0x1c'),auth[_0x9986('0x9')](),controller['send']);router[_0x9986('0x1d')](_0x9986('0xc'),auth['isAuthenticated'](),controller[_0x9986('0x1e')]);router[_0x9986('0x1f')]('/:id',auth[_0x9986('0x9')](),controller[_0x9986('0x20')]);router[_0x9986('0x1f')](_0x9986('0xd'),auth[_0x9986('0x9')](),controller[_0x9986('0x21')]);router[_0x9986('0x1f')](_0x9986('0xf'),auth[_0x9986('0x9')](),controller['removeAnswers']);router[_0x9986('0x1f')](_0x9986('0x1a'),auth['isAuthenticated'](),controller[_0x9986('0x22')]);module[_0x9986('0x23')]=router;
\ No newline at end of file
+var _0x6ea2=['/:id/applications','addApplications','addAgents','send','put','/:id','update','destroy','delete','removeAnswers','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','index','/describe','isAuthenticated','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getApplications','/:id/interactions','getInteractions','/:id/users','create','post','addDisposition','addAnswer','notify'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x6ea2,0x161));var _0x26ea=function(_0x3bcbb2,_0x5f4449){_0x3bcbb2=_0x3bcbb2-0x0;var _0x31744e=_0x6ea2[_0x3bcbb2];return _0x31744e;};'use strict';var multer=require(_0x26ea('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x26ea('0x1'));var express=require(_0x26ea('0x2'));var router=express['Router']();var fs_extra=require(_0x26ea('0x3'));var auth=require(_0x26ea('0x4'));var interaction=require(_0x26ea('0x5'));var config=require(_0x26ea('0x6'));var controller=require(_0x26ea('0x7'));router[_0x26ea('0x8')]('/',auth['isAuthenticated'](),controller[_0x26ea('0x9')]);router['get'](_0x26ea('0xa'),auth[_0x26ea('0xb')](),controller[_0x26ea('0xc')]);router['get']('/:id',auth[_0x26ea('0xb')](),controller[_0x26ea('0xd')]);router[_0x26ea('0x8')](_0x26ea('0xe'),auth['isAuthenticated'](),controller[_0x26ea('0xf')]);router[_0x26ea('0x8')](_0x26ea('0x10'),auth['isAuthenticated'](),controller[_0x26ea('0x11')]);router[_0x26ea('0x8')]('/:id/applications',auth[_0x26ea('0xb')](),controller[_0x26ea('0x12')]);router[_0x26ea('0x8')](_0x26ea('0x13'),auth['isAuthenticated'](),controller[_0x26ea('0x14')]);router[_0x26ea('0x8')](_0x26ea('0x15'),auth[_0x26ea('0xb')](),controller['getAgents']);router['post']('/',auth[_0x26ea('0xb')](),controller[_0x26ea('0x16')]);router[_0x26ea('0x17')](_0x26ea('0xe'),auth[_0x26ea('0xb')](),controller[_0x26ea('0x18')]);router[_0x26ea('0x17')](_0x26ea('0x10'),auth[_0x26ea('0xb')](),controller[_0x26ea('0x19')]);router[_0x26ea('0x17')]('/:id/notify',controller[_0x26ea('0x1a')]);router[_0x26ea('0x17')](_0x26ea('0x1b'),auth['isAuthenticated'](),controller[_0x26ea('0x1c')]);router[_0x26ea('0x17')](_0x26ea('0x15'),auth['isAuthenticated'](),controller[_0x26ea('0x1d')]);router[_0x26ea('0x17')]('/:id/send',auth[_0x26ea('0xb')](),controller[_0x26ea('0x1e')]);router[_0x26ea('0x1f')](_0x26ea('0x20'),auth[_0x26ea('0xb')](),controller[_0x26ea('0x21')]);router['delete'](_0x26ea('0x20'),auth[_0x26ea('0xb')](),controller[_0x26ea('0x22')]);router[_0x26ea('0x23')]('/:id/dispositions',auth[_0x26ea('0xb')](),controller['removeDispositions']);router['delete'](_0x26ea('0x10'),auth[_0x26ea('0xb')](),controller[_0x26ea('0x24')]);router[_0x26ea('0x23')](_0x26ea('0x15'),auth[_0x26ea('0xb')](),controller['removeAgents']);module[_0x26ea('0x25')]=router;
\ No newline at end of file
index e76fb65..3eecbed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6da1=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','generate','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x6da1,0xa0));var _0x16da=function(_0x330414,_0x4f3207){_0x330414=_0x330414-0x0;var _0x99dbff=_0x6da1[_0x330414];return _0x99dbff;};'use strict';var Sequelize=require(_0x16da('0x0'));var rs=require(_0x16da('0x1'));module[_0x16da('0x2')]={'name':{'type':Sequelize[_0x16da('0x3')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x16da('0x3')]},'token':{'type':Sequelize[_0x16da('0x3')],'defaultValue':function(){return rs[_0x16da('0x4')]();}},'replyUri':{'type':Sequelize[_0x16da('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x16da('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x16da('0x5');}},'notificationSound':{'type':Sequelize[_0x16da('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x16da('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x16da('0x3')]},'queueTransfer':{'type':Sequelize[_0x16da('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x16da('0x7')],'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['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x16da('0x6')],'defaultValue':![],'comment':_0x16da('0x8'),'set':function(_0x1e2592){if(!_0x1e2592)this[_0x16da('0x9')](_0x16da('0xa'),null);this[_0x16da('0x9')](_0x16da('0xb'),_0x1e2592);}}};
\ No newline at end of file
+var _0xdef6=['TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','randomstring','exports','STRING','name'];(function(_0x57b432,_0x1589a0){var _0x2edf2a=function(_0x20edfc){while(--_0x20edfc){_0x57b432['push'](_0x57b432['shift']());}};_0x2edf2a(++_0x1589a0);}(_0xdef6,0xeb));var _0x6def=function(_0x57d53b,_0x4b0c2f){_0x57d53b=_0x57d53b-0x0;var _0x13a2df=_0xdef6[_0x57d53b];return _0x13a2df;};'use strict';var Sequelize=require(_0x6def('0x0'));var rs=require(_0x6def('0x1'));module[_0x6def('0x2')]={'name':{'type':Sequelize[_0x6def('0x3')],'unique':_0x6def('0x4'),'allowNull':![]},'description':{'type':Sequelize[_0x6def('0x3')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0x6def('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x6def('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x6def('0x5')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x6def('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x6def('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x6def('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x6def('0x3')]},'queueTransfer':{'type':Sequelize[_0x6def('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x6def('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x6def('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x6def('0x7')],'allowNull':!![],'defaultValue':null,'comment':_0x6def('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x6def('0x6')],'defaultValue':![],'comment':_0x6def('0x9'),'set':function(_0x592e19){if(!_0x592e19)this[_0x6def('0xa')]('mandatoryDispositionPauseId',null);this[_0x6def('0xa')](_0x6def('0xb'),_0x592e19);}}};
\ No newline at end of file
index 66a20ca..826ed3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x361d=['UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','sequelize','transaction','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','tag','findAll','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','getAgents','CmList','Messages','dataValues','rimraf','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','./openchannelAccount.socket','client','http','request','then','OpenchannelAccount,\x20%s,\x20%s','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','destroy','OpenchannelAccounts','UserProfileResource','name','send','Pause','OpenchannelAccount','rawAttributes','fieldName','key','model','map','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','show','params','mandatoryDispositionPause','keys','length','catch','create','body','user','role','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','notify','openchannel','ValidationError','no\x20available\x20attributes','difference','updatedAt','CompanyId','ListId','isNil','from','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','CmContact','Contacts','DESC','OpenchannelApplication','Applications','applications','list','priority','asc','account','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','contact','messageId','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId'];(function(_0x15ea09,_0x2f30ab){var _0x3e9c78=function(_0x15f8ba){while(--_0x15f8ba){_0x15ea09['push'](_0x15ea09['shift']());}};_0x3e9c78(++_0x2f30ab);}(_0x361d,0x196));var _0xd361=function(_0x2d9ce8,_0x59a170){_0x2d9ce8=_0x2d9ce8-0x0;var _0x1c9fbd=_0x361d[_0x2d9ce8];return _0x1c9fbd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd361('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd361('0x1'));var rp=require(_0xd361('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xd361('0x3'));var util=require(_0xd361('0x4'));var path=require(_0xd361('0x5'));var sox=require('sox');var csv=require(_0xd361('0x6'));var ejs=require(_0xd361('0x7'));var fs=require('fs');var fs_extra=require(_0xd361('0x8'));var _=require(_0xd361('0x9'));var squel=require(_0xd361('0xa'));var crypto=require('crypto');var jsforce=require(_0xd361('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd361('0xc'));var Papa=require(_0xd361('0xd'));var Redis=require(_0xd361('0xe'));var authService=require(_0xd361('0xf'));var qs=require(_0xd361('0x10'));var as=require(_0xd361('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd361('0x12'))('api');var utils=require('../../config/utils');var config=require(_0xd361('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xd361('0x14'))['db'];config[_0xd361('0x15')]=_[_0xd361('0x16')](config[_0xd361('0x15')],{'host':_0xd361('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd361('0x15')]));require(_0xd361('0x18'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xd361('0x19')][_0xd361('0x1a')]({'port':0x232c});var client9002=jayson[_0xd361('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x367999,_0x11e8d6,_0x58081a,_0x41ccf9){return new BPromise(function(_0x4c9cc9,_0xbf9619){var _0x51c5fa=_0x41ccf9||client;return _0x51c5fa[_0xd361('0x1b')](_0x367999,_0x58081a)[_0xd361('0x1c')](function(_0x1d968f){logger['info'](_0xd361('0x1d'),_0x11e8d6,'request\x20sent');logger[_0xd361('0x1e')](_0xd361('0x1f'),_0x11e8d6,_0xd361('0x20'),JSON['stringify'](_0x1d968f));if(_0x1d968f['error']){if(_0x1d968f[_0xd361('0x21')][_0xd361('0x22')]===0x1f4){logger[_0xd361('0x21')](_0xd361('0x1d'),_0x11e8d6,_0x1d968f[_0xd361('0x21')][_0xd361('0x23')]);return _0xbf9619(_0x1d968f[_0xd361('0x21')][_0xd361('0x23')]);}logger[_0xd361('0x21')](_0xd361('0x1d'),_0x11e8d6,_0x1d968f['error'][_0xd361('0x23')]);return _0x4c9cc9(_0x1d968f[_0xd361('0x21')][_0xd361('0x23')]);}else{logger[_0xd361('0x24')](_0xd361('0x1d'),_0x11e8d6,_0xd361('0x20'));_0x4c9cc9(_0x1d968f[_0xd361('0x25')][_0xd361('0x23')]);}})['catch'](function(_0xa07d64){logger[_0xd361('0x21')](_0xd361('0x1d'),_0x11e8d6,_0xa07d64);_0xbf9619(_0xa07d64);});});}function respondWithStatusCode(_0x5dee9c,_0x11b5da){_0x11b5da=_0x11b5da||0xcc;return function(_0x3ef928){if(_0x3ef928){return _0x5dee9c[_0xd361('0x26')](_0x11b5da);}return _0x5dee9c[_0xd361('0x27')](_0x11b5da)[_0xd361('0x28')]();};}function respondWithResult(_0xefda2f,_0x449d8a){_0x449d8a=_0x449d8a||0xc8;return function(_0x1ff0e2){if(_0x1ff0e2){return _0xefda2f[_0xd361('0x27')](_0x449d8a)[_0xd361('0x29')](_0x1ff0e2);}};}function respondWithFilteredResult(_0x39b0dd,_0xf787d){return function(_0x2fe8db){if(_0x2fe8db){var _0x47013f=typeof _0xf787d[_0xd361('0x2a')]==='undefined'&&typeof _0xf787d[_0xd361('0x2b')]==='undefined';var _0x1cf2b4=_0x2fe8db[_0xd361('0x2c')];var _0x43d5d7=_0x47013f?0x0:_0xf787d[_0xd361('0x2a')];var _0x4fe084=_0x47013f?_0x2fe8db[_0xd361('0x2c')]:_0xf787d[_0xd361('0x2a')]+_0xf787d[_0xd361('0x2b')];var _0x3c2197;if(_0x4fe084>=_0x1cf2b4){_0x4fe084=_0x1cf2b4;_0x3c2197=0xc8;}else{_0x3c2197=0xce;}_0x39b0dd[_0xd361('0x27')](_0x3c2197);return _0x39b0dd[_0xd361('0x2d')](_0xd361('0x2e'),_0x43d5d7+'-'+_0x4fe084+'/'+_0x1cf2b4)[_0xd361('0x29')](_0x2fe8db);}return null;};}function patchUpdates(_0x1babcb){return function(_0x15c526){try{jsonpatch[_0xd361('0x2f')](_0x15c526,_0x1babcb,!![]);}catch(_0x59358e){return BPromise[_0xd361('0x30')](_0x59358e);}return _0x15c526['save']();};}function saveUpdates(_0x170695,_0x58e218){return function(_0x427ed4){if(_0x427ed4){return _0x427ed4['update'](_0x170695)[_0xd361('0x1c')](function(_0x316bc5){return _0x316bc5;});}return null;};}function removeEntity(_0x206da9,_0x56f117){return function(_0x461213){if(_0x461213){return _0x461213[_0xd361('0x31')]()[_0xd361('0x1c')](function(){var _0x236f5e=_0x461213['get']({'plain':!![]});var _0x47935d=_0xd361('0x32');return db[_0xd361('0x33')][_0xd361('0x31')]({'where':{'type':_0x47935d,'resourceId':_0x236f5e['id']}})[_0xd361('0x1c')](function(){return _0x461213;});})['then'](function(){_0x206da9[_0xd361('0x27')](0xcc)[_0xd361('0x28')]();});}};}function handleEntityNotFound(_0x556231,_0x897877){return function(_0x31b600){if(!_0x31b600){_0x556231[_0xd361('0x26')](0x194);}return _0x31b600;};}function handleError(_0x11d045,_0x32cafa){_0x32cafa=_0x32cafa||0x1f4;return function(_0x2ba6b8){logger[_0xd361('0x21')](_0x2ba6b8['stack']);if(_0x2ba6b8[_0xd361('0x34')]){delete _0x2ba6b8[_0xd361('0x34')];}_0x11d045['status'](_0x32cafa)[_0xd361('0x35')](_0x2ba6b8);};}exports['index']=function(_0x28cbf3,_0x27fbf5){var _0x23dd94={'include':[{'model':db[_0xd361('0x36')],'as':'mandatoryDispositionPause'}]},_0x2f85c2={},_0x11dd93={'count':0x0,'rows':[]};var _0x3fb6c5=_['map'](db[_0xd361('0x37')][_0xd361('0x38')],function(_0x24132f){return{'name':_0x24132f[_0xd361('0x39')],'type':_0x24132f['type'][_0xd361('0x3a')]};});_0x2f85c2[_0xd361('0x3b')]=_[_0xd361('0x3c')](_0x3fb6c5,_0xd361('0x34'));_0x2f85c2[_0xd361('0x3d')]=_['keys'](_0x28cbf3[_0xd361('0x3d')]);_0x2f85c2[_0xd361('0x3e')]=_[_0xd361('0x3f')](_0x2f85c2[_0xd361('0x3b')],_0x2f85c2['query']);_0x23dd94['attributes']=_[_0xd361('0x3f')](_0x2f85c2[_0xd361('0x3b')],qs[_0xd361('0x40')](_0x28cbf3[_0xd361('0x3d')]['fields']));_0x23dd94[_0xd361('0x41')]=_0x23dd94[_0xd361('0x41')]['length']?_0x23dd94[_0xd361('0x41')]:_0x2f85c2[_0xd361('0x3b')];if(!_0x28cbf3[_0xd361('0x3d')][_0xd361('0x42')](_0xd361('0x43'))){_0x23dd94['limit']=qs['limit'](_0x28cbf3[_0xd361('0x3d')]['limit']);_0x23dd94['offset']=qs['offset'](_0x28cbf3[_0xd361('0x3d')]['offset']);}_0x23dd94[_0xd361('0x44')]=qs[_0xd361('0x45')](_0x28cbf3[_0xd361('0x3d')][_0xd361('0x45')]);_0x23dd94[_0xd361('0x46')]=qs[_0xd361('0x3e')](_[_0xd361('0x47')](_0x28cbf3[_0xd361('0x3d')],_0x2f85c2['filters']),_0x3fb6c5);if(_0x28cbf3['query'][_0xd361('0x48')]){_0x23dd94[_0xd361('0x46')]=_[_0xd361('0x49')](_0x23dd94[_0xd361('0x46')],{'$or':_['map'](_0x3fb6c5,function(_0x25096c){if(_0x25096c[_0xd361('0x4a')]!==_0xd361('0x4b')){var _0x3d5e33={};_0x3d5e33[_0x25096c[_0xd361('0x34')]]={'$like':'%'+_0x28cbf3[_0xd361('0x3d')][_0xd361('0x48')]+'%'};return _0x3d5e33;}})});}_0x23dd94=_[_0xd361('0x49')]({},_0x23dd94,_0x28cbf3[_0xd361('0x4c')]);var _0x4fd084={'where':_0x23dd94[_0xd361('0x46')]};return db[_0xd361('0x37')][_0xd361('0x2c')](_0x4fd084)[_0xd361('0x1c')](function(_0x91242f){_0x11dd93[_0xd361('0x2c')]=_0x91242f;if(_0x28cbf3[_0xd361('0x3d')][_0xd361('0x4d')]){_0x23dd94[_0xd361('0x4e')]=[{'all':!![]}];}return db[_0xd361('0x37')]['findAll'](_0x23dd94);})[_0xd361('0x1c')](function(_0x3d911b){_0x11dd93[_0xd361('0x4f')]=_0x3d911b;return _0x11dd93;})[_0xd361('0x1c')](respondWithFilteredResult(_0x27fbf5,_0x23dd94))['catch'](handleError(_0x27fbf5,null));};exports[_0xd361('0x50')]=function(_0x5bcd85,_0x4fd6ba){var _0x425c3a={'raw':![],'where':{'id':_0x5bcd85[_0xd361('0x51')]['id']},'include':[{'model':db[_0xd361('0x36')],'as':_0xd361('0x52')}]},_0x5b68dd={};_0x5b68dd[_0xd361('0x3b')]=_[_0xd361('0x53')](db[_0xd361('0x37')][_0xd361('0x38')]);_0x5b68dd[_0xd361('0x3d')]=_[_0xd361('0x53')](_0x5bcd85[_0xd361('0x3d')]);_0x5b68dd[_0xd361('0x3e')]=_[_0xd361('0x3f')](_0x5b68dd[_0xd361('0x3b')],_0x5b68dd['query']);_0x425c3a[_0xd361('0x41')]=_[_0xd361('0x3f')](_0x5b68dd[_0xd361('0x3b')],qs['fields'](_0x5bcd85['query'][_0xd361('0x40')]));_0x425c3a[_0xd361('0x41')]=_0x425c3a[_0xd361('0x41')][_0xd361('0x54')]?_0x425c3a[_0xd361('0x41')]:_0x5b68dd[_0xd361('0x3b')];if(_0x5bcd85['query'][_0xd361('0x4d')]){_0x425c3a[_0xd361('0x4e')]=[{'all':!![]}];}_0x425c3a=_[_0xd361('0x49')]({},_0x425c3a,_0x5bcd85[_0xd361('0x4c')]);return db[_0xd361('0x37')]['find'](_0x425c3a)[_0xd361('0x1c')](handleEntityNotFound(_0x4fd6ba,null))['then'](respondWithResult(_0x4fd6ba,null))[_0xd361('0x55')](handleError(_0x4fd6ba,null));};exports['create']=function(_0x11bfe0,_0x41769b){return db[_0xd361('0x37')][_0xd361('0x56')](_0x11bfe0[_0xd361('0x57')],{})[_0xd361('0x1c')](function(_0x5e4f90){var _0x205cf0=_0x11bfe0[_0xd361('0x58')]['get']({'plain':!![]});if(!_0x205cf0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x205cf0[_0xd361('0x59')]==='user'){var _0x3e03e6=_0x5e4f90[_0xd361('0x5a')]({'plain':!![]});var _0x13be5f='OpenchannelAccounts';return db[_0xd361('0x5b')]['find']({'where':{'name':_0x13be5f,'userProfileId':_0x205cf0[_0xd361('0x5c')]},'raw':!![]})[_0xd361('0x1c')](function(_0x5c3525){if(_0x5c3525&&_0x5c3525[_0xd361('0x5d')]===0x0){return db[_0xd361('0x33')]['create']({'name':_0x3e03e6['name'],'resourceId':_0x3e03e6['id'],'type':_0x5c3525[_0xd361('0x34')],'sectionId':_0x5c3525['id']},{})['then'](function(){return _0x5e4f90;});}else{return _0x5e4f90;}})[_0xd361('0x55')](function(_0x8571a6){logger[_0xd361('0x21')](_0xd361('0x5e'),_0x8571a6);throw _0x8571a6;});}return _0x5e4f90;})['then'](respondWithResult(_0x41769b,0xc9))[_0xd361('0x55')](handleError(_0x41769b,null));};exports[_0xd361('0x5f')]=function(_0x53b06a,_0x1d1cb9){if(_0x53b06a[_0xd361('0x57')]['id']){delete _0x53b06a[_0xd361('0x57')]['id'];}return db['OpenchannelAccount'][_0xd361('0x60')]({'where':{'id':_0x53b06a['params']['id']},'include':[{'model':db['Pause'],'as':_0xd361('0x52')}]})[_0xd361('0x1c')](handleEntityNotFound(_0x1d1cb9,null))['then'](saveUpdates(_0x53b06a[_0xd361('0x57')],null))[_0xd361('0x1c')](respondWithResult(_0x1d1cb9,null))['catch'](handleError(_0x1d1cb9,null));};exports[_0xd361('0x31')]=function(_0x1e294b,_0x5240e4){return db[_0xd361('0x37')]['find']({'where':{'id':_0x1e294b['params']['id']}})[_0xd361('0x1c')](handleEntityNotFound(_0x5240e4,null))[_0xd361('0x1c')](removeEntity(_0x5240e4,null))[_0xd361('0x55')](handleError(_0x5240e4,null));};exports[_0xd361('0x61')]=function(_0x174597,_0x43b211){return db[_0xd361('0x37')][_0xd361('0x61')]()[_0xd361('0x1c')](respondWithResult(_0x43b211,null))['catch'](handleError(_0x43b211,null));};exports[_0xd361('0x62')]=function(_0x52e6db,_0x49aab0,_0x78738d){if(_0x52e6db[_0xd361('0x57')]['id']){delete _0x52e6db[_0xd361('0x57')]['id'];}return db['OpenchannelAccount'][_0xd361('0x60')]({'where':{'id':_0x52e6db[_0xd361('0x51')]['id']}})[_0xd361('0x1c')](handleEntityNotFound(_0x49aab0,null))[_0xd361('0x1c')](function(_0x5dfd2d){if(_0x5dfd2d){_0x52e6db[_0xd361('0x57')][_0xd361('0x63')]=_0x5dfd2d['id'];return db[_0xd361('0x64')]['create'](_0x52e6db[_0xd361('0x57')]);}})[_0xd361('0x1c')](respondWithResult(_0x49aab0,null))[_0xd361('0x55')](handleError(_0x49aab0,null));};exports[_0xd361('0x65')]=function(_0x57f7f0,_0x318227,_0x13e600){var _0x1aa5cb={'raw':![],'where':{}};var _0x230090={};var _0x27d077={'count':0x0,'rows':[]};return db[_0xd361('0x37')][_0xd361('0x66')]({'where':{'id':_0x57f7f0['params']['id']}})['then'](handleEntityNotFound(_0x318227,null))[_0xd361('0x1c')](function(_0x6043a3){if(_0x6043a3){_0x230090[_0xd361('0x3b')]=_['keys'](db[_0xd361('0x64')][_0xd361('0x38')]);_0x230090[_0xd361('0x3d')]=_[_0xd361('0x53')](_0x57f7f0[_0xd361('0x3d')]);_0x230090[_0xd361('0x3e')]=_[_0xd361('0x3f')](_0x230090[_0xd361('0x3b')],_0x230090[_0xd361('0x3d')]);_0x1aa5cb[_0xd361('0x41')]=_['intersection'](_0x230090['model'],qs[_0xd361('0x40')](_0x57f7f0[_0xd361('0x3d')][_0xd361('0x40')]));_0x1aa5cb[_0xd361('0x41')]=_0x1aa5cb[_0xd361('0x41')]['length']?_0x1aa5cb['attributes']:_0x230090[_0xd361('0x3b')];if(!_0x57f7f0[_0xd361('0x3d')][_0xd361('0x42')](_0xd361('0x43'))){_0x1aa5cb[_0xd361('0x2b')]=qs[_0xd361('0x2b')](_0x57f7f0[_0xd361('0x3d')][_0xd361('0x2b')]);_0x1aa5cb[_0xd361('0x2a')]=qs[_0xd361('0x2a')](_0x57f7f0[_0xd361('0x3d')][_0xd361('0x2a')]);}_0x1aa5cb['order']=qs[_0xd361('0x45')](_0x57f7f0[_0xd361('0x3d')][_0xd361('0x45')]);_0x1aa5cb[_0xd361('0x46')]=qs['filters'](_[_0xd361('0x47')](_0x57f7f0['query'],_0x230090[_0xd361('0x3e')]));_0x1aa5cb[_0xd361('0x46')][_0xd361('0x63')]=_0x6043a3['id'];if(_0x57f7f0[_0xd361('0x3d')][_0xd361('0x48')]){_0x1aa5cb[_0xd361('0x46')]=_[_0xd361('0x49')](_0x1aa5cb[_0xd361('0x46')],{'$or':_[_0xd361('0x3c')](_0x1aa5cb['attributes'],function(_0x59c128){var _0x2b76ce={};_0x2b76ce[_0x59c128]={'$like':'%'+_0x57f7f0[_0xd361('0x3d')][_0xd361('0x48')]+'%'};return _0x2b76ce;})});}_0x1aa5cb=_['merge']({},_0x1aa5cb,_0x57f7f0[_0xd361('0x4c')]);return db[_0xd361('0x64')][_0xd361('0x2c')]({'where':_0x1aa5cb['where']})[_0xd361('0x1c')](function(_0xa75a10){_0x27d077[_0xd361('0x2c')]=_0xa75a10;if(_0x57f7f0[_0xd361('0x3d')][_0xd361('0x4d')]){_0x1aa5cb['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x1aa5cb);})[_0xd361('0x1c')](function(_0x461685){_0x27d077['rows']=_0x461685;return _0x27d077;});}})[_0xd361('0x1c')](respondWithFilteredResult(_0x318227,_0x1aa5cb))['catch'](handleError(_0x318227,null));};exports[_0xd361('0x67')]=function(_0x4a487d,_0x2f33a2,_0xf79795){return db['OpenchannelAccount']['find']({'where':{'id':_0x4a487d[_0xd361('0x51')]['id']}})[_0xd361('0x1c')](handleEntityNotFound(_0x2f33a2,null))[_0xd361('0x1c')](function(_0x245194){if(_0x245194){return _0x245194[_0xd361('0x67')](_0x4a487d['query'][_0xd361('0x68')]);}})['then'](respondWithStatusCode(_0x2f33a2,null))[_0xd361('0x55')](handleError(_0x2f33a2,null));};exports[_0xd361('0x69')]=function(_0x42c967,_0x1468ed,_0x58831d){if(_0x42c967['body']['id']){delete _0x42c967['body']['id'];}return db[_0xd361('0x37')]['find']({'where':{'id':_0x42c967[_0xd361('0x51')]['id']}})['then'](handleEntityNotFound(_0x1468ed,null))[_0xd361('0x1c')](function(_0xc4c3d6){if(_0xc4c3d6){_0x42c967[_0xd361('0x57')][_0xd361('0x63')]=_0xc4c3d6['id'];return db['CannedAnswer']['create'](_0x42c967[_0xd361('0x57')]);}})['then'](respondWithResult(_0x1468ed,null))[_0xd361('0x55')](handleError(_0x1468ed,null));};exports[_0xd361('0x6a')]=function(_0x38fbdf,_0x4a1ae8,_0x2e05ee){var _0x4e832a={'raw':![],'where':{}};var _0x3e7efb={};var _0x19f21a={'count':0x0,'rows':[]};return db[_0xd361('0x37')]['findOne']({'where':{'id':_0x38fbdf[_0xd361('0x51')]['id']}})[_0xd361('0x1c')](handleEntityNotFound(_0x4a1ae8,null))[_0xd361('0x1c')](function(_0x2fa155){if(_0x2fa155){_0x3e7efb[_0xd361('0x3b')]=_[_0xd361('0x53')](db['CannedAnswer']['rawAttributes']);_0x3e7efb[_0xd361('0x3d')]=_['keys'](_0x38fbdf[_0xd361('0x3d')]);_0x3e7efb[_0xd361('0x3e')]=_['intersection'](_0x3e7efb[_0xd361('0x3b')],_0x3e7efb[_0xd361('0x3d')]);_0x4e832a['attributes']=_['intersection'](_0x3e7efb[_0xd361('0x3b')],qs[_0xd361('0x40')](_0x38fbdf['query'][_0xd361('0x40')]));_0x4e832a[_0xd361('0x41')]=_0x4e832a[_0xd361('0x41')][_0xd361('0x54')]?_0x4e832a[_0xd361('0x41')]:_0x3e7efb[_0xd361('0x3b')];if(!_0x38fbdf['query'][_0xd361('0x42')](_0xd361('0x43'))){_0x4e832a[_0xd361('0x2b')]=qs[_0xd361('0x2b')](_0x38fbdf['query'][_0xd361('0x2b')]);_0x4e832a['offset']=qs[_0xd361('0x2a')](_0x38fbdf[_0xd361('0x3d')]['offset']);}_0x4e832a[_0xd361('0x44')]=qs['sort'](_0x38fbdf['query'][_0xd361('0x45')]);_0x4e832a[_0xd361('0x46')]=qs[_0xd361('0x3e')](_[_0xd361('0x47')](_0x38fbdf[_0xd361('0x3d')],_0x3e7efb[_0xd361('0x3e')]));_0x4e832a[_0xd361('0x46')]['OpenchannelAccountId']=_0x2fa155['id'];if(_0x38fbdf[_0xd361('0x3d')][_0xd361('0x48')]){_0x4e832a[_0xd361('0x46')]=_['merge'](_0x4e832a[_0xd361('0x46')],{'$or':_['map'](_0x4e832a[_0xd361('0x41')],function(_0x28027c){var _0x3c224f={};_0x3c224f[_0x28027c]={'$like':'%'+_0x38fbdf[_0xd361('0x3d')][_0xd361('0x48')]+'%'};return _0x3c224f;})});}_0x4e832a=_['merge']({},_0x4e832a,_0x38fbdf[_0xd361('0x4c')]);return db[_0xd361('0x6b')][_0xd361('0x2c')]({'where':_0x4e832a['where']})['then'](function(_0xcda21a){_0x19f21a[_0xd361('0x2c')]=_0xcda21a;if(_0x38fbdf['query'][_0xd361('0x4d')]){_0x4e832a[_0xd361('0x4e')]=[{'all':!![]}];}return db[_0xd361('0x6b')]['findAll'](_0x4e832a);})[_0xd361('0x1c')](function(_0x2a0fe6){_0x19f21a[_0xd361('0x4f')]=_0x2a0fe6;return _0x19f21a;});}})['then'](respondWithFilteredResult(_0x4a1ae8,_0x4e832a))[_0xd361('0x55')](handleError(_0x4a1ae8,null));};exports[_0xd361('0x6c')]=function(_0x371905,_0x2749fd,_0x261efc){return db['OpenchannelAccount'][_0xd361('0x60')]({'where':{'id':_0x371905[_0xd361('0x51')]['id']}})[_0xd361('0x1c')](handleEntityNotFound(_0x2749fd,null))[_0xd361('0x1c')](function(_0x927f9c){if(_0x927f9c){return _0x927f9c['removeAnswers'](_0x371905['query'][_0xd361('0x68')]);}})['then'](respondWithStatusCode(_0x2749fd,null))['catch'](handleError(_0x2749fd,null));};exports[_0xd361('0x6d')]=function(_0xbe024d,_0x4569bb,_0x5a049f){var _0x5d4701={'body':_0xbe024d[_0xd361('0x57')],'channel':_0xd361('0x6e')};var _0x591dd5=[];var _0x57e0bc=[];var _0x2c4004={};var _0x3a9170=![];return db['CmContact'][_0xd361('0x61')]()[_0xd361('0x1c')](function(_0x536c22){if(!_0x536c22){throw new db['Sequelize'][(_0xd361('0x6f'))](_0xd361('0x70'));}_0x591dd5=_[_0xd361('0x71')](_[_0xd361('0x53')](_0x536c22),['createdAt',_0xd361('0x72')]);_0x57e0bc=_[_0xd361('0x71')](_[_0xd361('0x53')](_0x536c22),['createdAt','updatedAt',_0xd361('0x73'),_0xd361('0x74')]);if(_0xbe024d[_0xd361('0x57')]['id']){delete _0xbe024d['body']['id'];}if(_[_0xd361('0x75')](_0xbe024d[_0xd361('0x57')][_0xd361('0x76')])){throw new db[(_0xd361('0x77'))]['ValidationError'](_0xd361('0x78'));}if(_[_0xd361('0x75')](_0xbe024d[_0xd361('0x57')]['body'])||_0xbe024d[_0xd361('0x57')][_0xd361('0x57')]===''){throw new db['Sequelize'][(_0xd361('0x6f'))](_0xd361('0x79'));}if(_[_0xd361('0x75')](_0xbe024d[_0xd361('0x57')]['mapKey'])){throw new db[(_0xd361('0x77'))][(_0xd361('0x6f'))](_0xd361('0x7a')+_0x57e0bc);}if(!_[_0xd361('0x7b')](_0x57e0bc,_0xbe024d[_0xd361('0x57')][_0xd361('0x7c')])){throw new db[(_0xd361('0x77'))][(_0xd361('0x6f'))](_0xd361('0x7d')+_0x57e0bc);}_0x2c4004[_0xbe024d[_0xd361('0x57')]['mapKey']]=_0xbe024d['body'][_0xd361('0x76')];})[_0xd361('0x1c')](function(){return db[_0xd361('0x37')]['find']({'where':{'id':_0xbe024d[_0xd361('0x51')]['id']},'include':[{'model':db['CmList'],'as':_0xd361('0x7e'),'include':[{'model':db[_0xd361('0x7f')],'as':_0xd361('0x80'),'where':_0x2c4004,'limit':0x1,'order':[[_0xd361('0x72'),_0xd361('0x81')]]}]},{'model':db[_0xd361('0x82')],'as':_0xd361('0x83')}]});})[_0xd361('0x1c')](handleEntityNotFound(_0x4569bb,null))['then'](function(_0x903a53){if(_0x903a53&&_0x903a53['List']){_0x5d4701['account']=_0x903a53;_0x5d4701[_0xd361('0x84')]=_0x903a53[_0xd361('0x83')];_0x5d4701[_0xd361('0x85')]=_0x903a53['List'];_0x5d4701[_0xd361('0x84')]=_['orderBy'](_0x5d4701[_0xd361('0x84')],[_0xd361('0x86')],[_0xd361('0x87')]);if(_0x5d4701[_0xd361('0x88')][_0xd361('0x83')]){delete _0x5d4701[_0xd361('0x88')][_0xd361('0x83')];}if(_0x5d4701[_0xd361('0x88')][_0xd361('0x7e')]&&_0x5d4701['account'][_0xd361('0x7e')][_0xd361('0x80')][_0xd361('0x54')]){return _0x5d4701[_0xd361('0x88')][_0xd361('0x7e')][_0xd361('0x80')][0x0];}var _0x2a217f=_[_0xd361('0x16')](_0xbe024d[_0xd361('0x57')],{'firstName':_0xbe024d[_0xd361('0x57')]['from'],'ListId':_0x903a53[_0xd361('0x74')]});_0x2a217f[_0xbe024d['body']['mapKey']]=_0xbe024d[_0xd361('0x57')][_0xd361('0x76')];return db['CmContact'][_0xd361('0x56')](_0x2a217f,{'fields':_0x591dd5,'raw':!![]});}})['then'](handleEntityNotFound(_0x4569bb,null))[_0xd361('0x1c')](function(_0x3b51fd){_0x5d4701['contact']=_0x3b51fd;if(_0x3b51fd){var _0x2d11d1={'ContactId':_0x3b51fd['id'],'OpenchannelAccountId':_0xbe024d['params']['id'],'from':(_0x3b51fd[_0xd361('0x89')]||'')+'\x20'+(_0x3b51fd[_0xd361('0x8a')]||'')};var _0x580f30={'OpenchannelAccountId':_0xbe024d[_0xd361('0x51')]['id'],'closed':![]};if(_0xbe024d[_0xd361('0x57')][_0xd361('0x8b')]){_0x580f30['threadId']=_0xbe024d[_0xd361('0x57')][_0xd361('0x8b')];return db[_0xd361('0x8c')]['find']({'where':_0x580f30})[_0xd361('0x1c')](function(_0x76ea44){if(_0x76ea44){return[_0x76ea44,![]];}_0x2d11d1[_0xd361('0x8b')]=_0xbe024d['body'][_0xd361('0x8b')];_0x2d11d1[_0xd361('0x8d')]=_0xbe024d[_0xd361('0x57')]['externalUrl'];return db[_0xd361('0x8c')][_0xd361('0x56')](_0x2d11d1)[_0xd361('0x1c')](function(_0x15dd41){return[_0x15dd41,!![]];});});}else{_0x580f30[_0xd361('0x8b')]=null;}_0x580f30[_0xd361('0x8e')]=_0x3b51fd['id'];return db[_0xd361('0x8c')][_0xd361('0x60')]({'where':_0x580f30})['then'](function(_0x1046a7){if(_0x1046a7){return[_0x1046a7,![]];}return db['OpenchannelInteraction'][_0xd361('0x56')](_0x2d11d1)[_0xd361('0x1c')](function(_0xb3dbff){return[_0xb3dbff,!![]];});});}})[_0xd361('0x8f')](function(_0x54d897,_0xfe0da9){if(_0x54d897){_0x3a9170=_0xfe0da9;if(!_0xfe0da9){var _0x200dc3={'from':(_0x5d4701['contact'][_0xd361('0x89')]||'')+'\x20'+(_0x5d4701[_0xd361('0x90')][_0xd361('0x8a')]||'')};if(_0xbe024d['body'][_0xd361('0x8b')]&&_0xbe024d[_0xd361('0x57')][_0xd361('0x91')]&&_0xbe024d[_0xd361('0x57')][_0xd361('0x8b')]!=_0xbe024d[_0xd361('0x57')]['messageId']){_0x200dc3[_0xd361('0x8b')]=_0xbe024d[_0xd361('0x57')][_0xd361('0x91')];}return _0x54d897['update'](_0x200dc3);}else{return _0x54d897;}}})['then'](function(_0x17cace){_0x5d4701[_0xd361('0x92')]=_0x17cace[_0xd361('0x5a')]({'plain':!![]});_0x5d4701[_0xd361('0x92')][_0xd361('0x93')]=_0x3a9170;if(_0x5d4701[_0xd361('0x92')][_0xd361('0x93')]){if(_0x5d4701[_0xd361('0x88')][_0xd361('0x94')]){_0x5d4701[_0xd361('0x84')][_0xd361('0x95')]({'id':0x0,'priority':_0x5d4701[_0xd361('0x84')][_0xd361('0x54')]+0x1,'app':_0xd361('0x96'),'appdata':_0xd361('0x97'),'interval':_0xd361('0x98')});}}return db[_0xd361('0x99')][_0xd361('0x56')]({'body':_0xbe024d['body'][_0xd361('0x57')],'OpenchannelAccountId':_0xbe024d[_0xd361('0x51')]['id'],'OpenchannelInteractionId':_0x17cace['id'],'direction':'in','ContactId':_0x5d4701[_0xd361('0x90')]['id'],'AttachmentId':_0xbe024d[_0xd361('0x57')][_0xd361('0x9a')]});})[_0xd361('0x1c')](function(_0x76e14c){_0x5d4701[_0xd361('0x23')]=_0x76e14c;if(_0x5d4701[_0xd361('0x92')][_0xd361('0x9b')]){return db[_0xd361('0x9c')]['find']({'attributes':['id',_0xd361('0x34')],'where':{'id':_0x5d4701[_0xd361('0x92')][_0xd361('0x9b')]}})[_0xd361('0x1c')](function(_0x53d549){if(_0x53d549){_0x5d4701[_0xd361('0x84')][_0xd361('0x9d')]({'id':0x0,'priority':0x0,'app':_0xd361('0x9e'),'appdata':_0x53d549[_0xd361('0x34')]+','+(_0x5d4701[_0xd361('0x88')][_0xd361('0x9f')]||0xa),'interval':'*,*,*,*'});_0x5d4701[_0xd361('0xa0')]=![];}return respondWithRpcPromise(_0xd361('0xa1'),'startRouting',_0x5d4701);});}return respondWithRpcPromise('Start',_0xd361('0xa2'),_0x5d4701);})[_0xd361('0x1c')](function(_0x1e9e79){respondWithRpcPromise('EventManager',_0xd361('0xa3'),{'event':_0xd361('0x6d'),'message':_0x1e9e79},client9002);return _0x1e9e79;})[_0xd361('0x1c')](respondWithResult(_0x4569bb,null))['catch'](handleError(_0x4569bb,null));};exports['addApplications']=function(_0x27c4f5,_0x19bfba,_0x463678){return db[_0xd361('0x37')][_0xd361('0x66')]({'where':{'id':_0x27c4f5['params']['id']}})[_0xd361('0x1c')](handleEntityNotFound(_0x19bfba,null))[_0xd361('0x1c')](function(_0x185f3b){if(_0x185f3b){return db[_0xd361('0xa4')][_0xd361('0xa5')](function(_0x4abee0){return db[_0xd361('0x82')][_0xd361('0x31')]({'where':{'OpenchannelAccountId':_0x27c4f5[_0xd361('0x51')]['id']},'transaction':_0x4abee0})[_0xd361('0x1c')](function(_0x569e59){var _0xf9c0c4=_[_0xd361('0x3c')](_0x27c4f5[_0xd361('0x57')],function(_0x35998f){_0x35998f['OpenchannelAccountId']=_0x27c4f5[_0xd361('0x51')]['id'];return _0x35998f;});return db['OpenchannelApplication']['bulkCreate'](_0xf9c0c4,{'transaction':_0x4abee0});});})[_0xd361('0x1c')](function(){return db[_0xd361('0x82')][_0xd361('0xa6')]({'where':{'OpenchannelAccountId':_0x27c4f5[_0xd361('0x51')]['id']},'order':_0xd361('0x86')});});}})['then'](respondWithResult(_0x19bfba,null))[_0xd361('0x55')](handleError(_0x19bfba,null));};exports['getApplications']=function(_0x2c9344,_0x1b1ddc,_0x395eb1){var _0x11ce83={};var _0x16155b={};var _0x4d73b2;var _0x28f31d;return db['OpenchannelAccount'][_0xd361('0x66')]({'where':{'id':_0x2c9344[_0xd361('0x51')]['id']}})['then'](handleEntityNotFound(_0x1b1ddc,null))['then'](function(_0x6bd306){if(_0x6bd306){_0x4d73b2=_0x6bd306;_0x16155b[_0xd361('0x3b')]=_['keys'](db[_0xd361('0x82')][_0xd361('0x38')]);_0x16155b[_0xd361('0x3d')]=_[_0xd361('0x53')](_0x2c9344[_0xd361('0x3d')]);_0x16155b[_0xd361('0x3e')]=_['intersection'](_0x16155b[_0xd361('0x3b')],_0x16155b['query']);_0x11ce83[_0xd361('0x41')]=_[_0xd361('0x3f')](_0x16155b[_0xd361('0x3b')],qs[_0xd361('0x40')](_0x2c9344['query']['fields']));_0x11ce83[_0xd361('0x41')]=_0x11ce83[_0xd361('0x41')]['length']?_0x11ce83[_0xd361('0x41')]:_0x16155b['model'];_0x11ce83[_0xd361('0x44')]=qs['sort'](_0x2c9344['query'][_0xd361('0x45')]);_0x11ce83['where']=qs[_0xd361('0x3e')](_[_0xd361('0x47')](_0x2c9344[_0xd361('0x3d')],_0x16155b[_0xd361('0x3e')]));if(_0x2c9344[_0xd361('0x3d')][_0xd361('0x48')]){_0x11ce83[_0xd361('0x46')]=_[_0xd361('0x49')](_0x11ce83[_0xd361('0x46')],{'$or':_['map'](_0x11ce83[_0xd361('0x41')],function(_0x4a8e1f){var _0x59b7cd={};_0x59b7cd[_0x4a8e1f]={'$like':'%'+_0x2c9344[_0xd361('0x3d')][_0xd361('0x48')]+'%'};return _0x59b7cd;})});}_0x11ce83=_[_0xd361('0x49')]({},_0x11ce83,_0x2c9344['options']);return _0x4d73b2['getApplications'](_0x11ce83);}})[_0xd361('0x1c')](function(_0x5644ed){if(_0x5644ed){_0x28f31d=_0x5644ed[_0xd361('0x54')];if(!_0x2c9344[_0xd361('0x3d')]['hasOwnProperty'](_0xd361('0x43'))){_0x11ce83[_0xd361('0x2b')]=qs[_0xd361('0x2b')](_0x2c9344[_0xd361('0x3d')][_0xd361('0x2b')]);_0x11ce83[_0xd361('0x2a')]=qs[_0xd361('0x2a')](_0x2c9344[_0xd361('0x3d')][_0xd361('0x2a')]);}return _0x4d73b2[_0xd361('0xa7')](_0x11ce83);}})[_0xd361('0x1c')](function(_0x254c9f){if(_0x254c9f){return _0x254c9f?{'count':_0x28f31d,'rows':_0x254c9f}:null;}})[_0xd361('0x1c')](respondWithResult(_0x1b1ddc,null))[_0xd361('0x55')](handleError(_0x1b1ddc,null));};exports[_0xd361('0xa8')]=function(_0x5e7a93,_0xb44845,_0x1634d6){var _0x2db093={'raw':![],'where':{}};var _0x582c2a={};var _0xb058a0={'count':0x0,'rows':[]};return db[_0xd361('0x37')]['findOne']({'where':{'id':_0x5e7a93['params']['id']}})[_0xd361('0x1c')](handleEntityNotFound(_0xb44845,null))[_0xd361('0x1c')](function(_0xd162b6){if(_0xd162b6){_0x582c2a[_0xd361('0x3b')]=_[_0xd361('0x53')](db[_0xd361('0x8c')][_0xd361('0x38')]);_0x582c2a[_0xd361('0x3d')]=_[_0xd361('0x53')](_0x5e7a93[_0xd361('0x3d')]);_0x582c2a[_0xd361('0x3e')]=_[_0xd361('0x3f')](_0x582c2a[_0xd361('0x3b')],_0x582c2a[_0xd361('0x3d')]);_0x2db093[_0xd361('0x41')]=_['intersection'](_0x582c2a[_0xd361('0x3b')],qs['fields'](_0x5e7a93[_0xd361('0x3d')][_0xd361('0x40')]));_0x2db093['attributes']=_0x2db093[_0xd361('0x41')][_0xd361('0x54')]?_0x2db093[_0xd361('0x41')]:_0x582c2a[_0xd361('0x3b')];if(!_0x5e7a93['query']['hasOwnProperty'](_0xd361('0x43'))){_0x2db093[_0xd361('0x2b')]=qs[_0xd361('0x2b')](_0x5e7a93[_0xd361('0x3d')][_0xd361('0x2b')]);_0x2db093[_0xd361('0x2a')]=qs[_0xd361('0x2a')](_0x5e7a93[_0xd361('0x3d')][_0xd361('0x2a')]);}_0x2db093[_0xd361('0x44')]=qs[_0xd361('0x45')](_0x5e7a93[_0xd361('0x3d')][_0xd361('0x45')]);_0x2db093[_0xd361('0x46')]=qs['filters'](_[_0xd361('0x47')](_0x5e7a93['query'],_0x582c2a[_0xd361('0x3e')]));_0x2db093[_0xd361('0x46')][_0xd361('0x63')]=_0xd162b6['id'];if(_0x5e7a93[_0xd361('0x3d')][_0xd361('0x48')]){_0x2db093[_0xd361('0x46')]=_[_0xd361('0x49')](_0x2db093['where'],{'$or':_[_0xd361('0x3c')](_0x2db093[_0xd361('0x41')],function(_0x3c9359){var _0x5904f9={};_0x5904f9[_0x3c9359]={'$like':'%'+_0x5e7a93[_0xd361('0x3d')][_0xd361('0x48')]+'%'};return _0x5904f9;})});}_0x2db093=_[_0xd361('0x49')]({},_0x2db093,_0x5e7a93['options']);return db[_0xd361('0x8c')][_0xd361('0x2c')]({'where':_0x2db093['where']})[_0xd361('0x1c')](function(_0x40d70f){_0xb058a0[_0xd361('0x2c')]=_0x40d70f;if(_0x5e7a93['query'][_0xd361('0x4d')]){_0x2db093[_0xd361('0x4e')]=[{'model':db[_0xd361('0x7f')],'as':_0xd361('0xa9'),'required':![]},{'model':db[_0xd361('0x9c')],'as':_0xd361('0xaa'),'attributes':[_0xd361('0x34'),_0xd361('0xab'),_0xd361('0xac')],'required':![]},{'model':db[_0xd361('0xad')],'as':_0xd361('0xae'),'attributes':['id',_0xd361('0x34'),'color'],'where':_0x5e7a93[_0xd361('0x3d')][_0xd361('0xaf')]?{'id':_0x5e7a93[_0xd361('0x3d')]['tag']}:undefined,'required':_0x5e7a93[_0xd361('0x3d')]['tag']?!![]:![]}];}return db['OpenchannelInteraction'][_0xd361('0xb0')](_0x2db093);})[_0xd361('0x1c')](function(_0x2201af){_0xb058a0[_0xd361('0x4f')]=_0x2201af;return _0xb058a0;});}})['then'](respondWithFilteredResult(_0xb44845,_0x2db093))[_0xd361('0x55')](handleError(_0xb44845,null));};exports['addAgents']=function(_0x479209,_0x3b1a4e,_0x3145b4){return db['OpenchannelAccount'][_0xd361('0x60')]({'where':{'id':_0x479209[_0xd361('0x51')]['id']}})['then'](handleEntityNotFound(_0x3b1a4e,null))[_0xd361('0x1c')](function(_0x75d6d7){if(_0x75d6d7){return _0x75d6d7[_0xd361('0xb1')](_0x479209[_0xd361('0x57')]['ids'],_[_0xd361('0xb2')](_0x479209['body'],[_0xd361('0x68'),'id'])||{})['spread'](function(_0x10bfda){for(var _0x586c35=0x0;_0x586c35<_0x479209[_0xd361('0x57')][_0xd361('0x68')][_0xd361('0x54')];_0x586c35+=0x1){socket[_0xd361('0xb3')](_0xd361('0xb4'),{'UserId':Number(_0x479209[_0xd361('0x57')][_0xd361('0x68')][_0x586c35]),'OpenchannelAccountId':Number(_0x479209[_0xd361('0x51')]['id'])});}return _0x10bfda;});}})[_0xd361('0x1c')](respondWithResult(_0x3b1a4e,null))['catch'](handleError(_0x3b1a4e,null));};exports[_0xd361('0xb5')]=function(_0x3592a5,_0x5eb3e1,_0x1a711a){return db[_0xd361('0x37')]['find']({'where':{'id':_0x3592a5[_0xd361('0x51')]['id']}})[_0xd361('0x1c')](handleEntityNotFound(_0x5eb3e1,null))[_0xd361('0x1c')](function(_0x89b2c8){if(_0x89b2c8){return _0x89b2c8[_0xd361('0xb5')](_0x3592a5[_0xd361('0x3d')][_0xd361('0x68')])[_0xd361('0x1c')](function(){if(_[_0xd361('0xb6')](_0x3592a5[_0xd361('0x3d')][_0xd361('0x68')])){for(var _0x1aab2e=0x0;_0x1aab2e<_0x3592a5[_0xd361('0x3d')][_0xd361('0x68')][_0xd361('0x54')];_0x1aab2e+=0x1){socket[_0xd361('0xb3')]('userOpenchannelAccount:remove',{'UserId':Number(_0x3592a5[_0xd361('0x3d')][_0xd361('0x68')][_0x1aab2e]),'OpenchannelAccountId':Number(_0x3592a5[_0xd361('0x51')]['id'])});}}else{socket[_0xd361('0xb3')]('userOpenchannelAccount:remove',{'UserId':Number(_0x3592a5[_0xd361('0x3d')][_0xd361('0x68')]),'OpenchannelAccountId':Number(_0x3592a5[_0xd361('0x51')]['id'])});}});}})[_0xd361('0x1c')](respondWithStatusCode(_0x5eb3e1,null))['catch'](handleError(_0x5eb3e1,null));};exports[_0xd361('0xb7')]=function(_0x306af4,_0x5ec6f5,_0x325d0a){var _0x4af9e1={};var _0x395d95={};var _0x545078;var _0x4bee65;return db['OpenchannelAccount'][_0xd361('0x66')]({'where':{'id':_0x306af4[_0xd361('0x51')]['id']}})[_0xd361('0x1c')](handleEntityNotFound(_0x5ec6f5,null))['then'](function(_0x564fc9){if(_0x564fc9){_0x545078=_0x564fc9;_0x395d95[_0xd361('0x3b')]=_[_0xd361('0x53')](db[_0xd361('0x9c')][_0xd361('0x38')]);_0x395d95[_0xd361('0x3d')]=_['keys'](_0x306af4['query']);_0x395d95['filters']=_[_0xd361('0x3f')](_0x395d95[_0xd361('0x3b')],_0x395d95[_0xd361('0x3d')]);_0x4af9e1[_0xd361('0x41')]=_['intersection'](_0x395d95['model'],qs[_0xd361('0x40')](_0x306af4[_0xd361('0x3d')][_0xd361('0x40')]));_0x4af9e1[_0xd361('0x41')]=_0x4af9e1[_0xd361('0x41')][_0xd361('0x54')]?_0x4af9e1['attributes']:_0x395d95[_0xd361('0x3b')];_0x4af9e1['order']=qs['sort'](_0x306af4['query'][_0xd361('0x45')]);_0x4af9e1['where']=qs[_0xd361('0x3e')](_[_0xd361('0x47')](_0x306af4[_0xd361('0x3d')],_0x395d95[_0xd361('0x3e')]));if(_0x306af4[_0xd361('0x3d')][_0xd361('0x48')]){_0x4af9e1['where']=_[_0xd361('0x49')](_0x4af9e1[_0xd361('0x46')],{'$or':_[_0xd361('0x3c')](_0x4af9e1[_0xd361('0x41')],function(_0x54b3f0){var _0x407948={};_0x407948[_0x54b3f0]={'$like':'%'+_0x306af4['query'][_0xd361('0x48')]+'%'};return _0x407948;})});}_0x4af9e1=_['merge']({},_0x4af9e1,_0x306af4[_0xd361('0x4c')]);return _0x545078[_0xd361('0xb7')](_0x4af9e1);}})[_0xd361('0x1c')](function(_0x738ec4){if(_0x738ec4){_0x4bee65=_0x738ec4[_0xd361('0x54')];if(!_0x306af4[_0xd361('0x3d')]['hasOwnProperty'](_0xd361('0x43'))){_0x4af9e1[_0xd361('0x2b')]=qs[_0xd361('0x2b')](_0x306af4[_0xd361('0x3d')][_0xd361('0x2b')]);_0x4af9e1[_0xd361('0x2a')]=qs[_0xd361('0x2a')](_0x306af4[_0xd361('0x3d')]['offset']);}return _0x545078[_0xd361('0xb7')](_0x4af9e1);}})[_0xd361('0x1c')](function(_0x1a5bde){if(_0x1a5bde){return _0x1a5bde?{'count':_0x4bee65,'rows':_0x1a5bde}:null;}})['then'](respondWithResult(_0x5ec6f5,null))[_0xd361('0x55')](handleError(_0x5ec6f5,null));};exports[_0xd361('0x35')]=function(_0x2e931b,_0x235e28,_0x2e7284){var _0x4a39c2,_0x8fedf0,_0x5c726d;if(_['isNil'](_0x2e931b[_0xd361('0x57')][_0xd361('0x57')])||_0x2e931b['body'][_0xd361('0x57')]===''){throw new db['Sequelize'][(_0xd361('0x6f'))](_0xd361('0x79'));}if(_['isNil'](_0x2e931b[_0xd361('0x57')]['to'])){}_0x4a39c2=_0x2e931b[_0xd361('0x57')]['to'];return db[_0xd361('0x37')]['findOne']({'where':{'id':_0x2e931b[_0xd361('0x51')]['id']}})['then'](handleEntityNotFound(_0x235e28,null))[_0xd361('0x1c')](function(_0x2af391){if(_0x2af391){return db[_0xd361('0x37')][_0xd361('0x60')]({'where':{'id':_0x2af391['id']},'include':[{'model':db[_0xd361('0xb8')],'as':_0xd361('0x7e'),'include':[{'model':db[_0xd361('0x7f')],'as':_0xd361('0x80'),'where':{[_0x2af391[_0xd361('0x7c')]]:_0x4a39c2},'limit':0x1,'order':[[_0xd361('0x72'),_0xd361('0x81')]]}]}]})[_0xd361('0x1c')](handleEntityNotFound(_0x235e28,null))[_0xd361('0x1c')](function(_0x1049f1){if(_0x1049f1&&_0x1049f1['List']){_0x8fedf0=_0x1049f1[_0xd361('0x5a')]({'plain':!![]});if(_0x8fedf0['List']&&_0x8fedf0[_0xd361('0x7e')][_0xd361('0x80')][_0xd361('0x54')]){return _0x8fedf0[_0xd361('0x7e')][_0xd361('0x80')][0x0];}return db[_0xd361('0x7f')][_0xd361('0x56')](_[_0xd361('0x16')](_0x2e931b[_0xd361('0x57')],{'firstName':_0x4a39c2,[_0x1049f1[_0xd361('0x7c')]]:_0x4a39c2,'phone':_0x4a39c2,'ListId':_0x8fedf0[_0xd361('0x74')]}));}})['then'](handleEntityNotFound(_0x235e28,null))[_0xd361('0x1c')](function(_0x5b07bf){if(_0x5b07bf){_0x5c726d=_0x5b07bf;return db['OpenchannelInteraction'][_0xd361('0x60')]({'where':{'ContactId':_0x5c726d['id'],'closed':![],'OpenchannelAccountId':_0x8fedf0['id']}})[_0xd361('0x1c')](function(_0x3c55bf){if(_0x3c55bf){return[_0x3c55bf,![]];}return db[_0xd361('0x8c')][_0xd361('0x56')]({'UserId':_0x2e931b[_0xd361('0x58')]['id'],'ContactId':_0x5c726d['id'],'OpenchannelAccountId':_0x8fedf0['id'],'lastMsgDirection':'out','Messages':[_['merge'](_0x2e931b[_0xd361('0x57')],{'read':![],'body':_0x2e931b[_0xd361('0x57')][_0xd361('0x57')],'OpenchannelAccountId':_0x8fedf0['id'],'UserId':_0x2e931b['user']['id'],'ContactId':_0x5c726d['id']})]},{'include':[{'model':db[_0xd361('0x99')],'as':_0xd361('0xb9')}]})[_0xd361('0x1c')](function(_0x365d97){return[_0x365d97,!![]];});});}})['spread'](function(_0x22f108,_0x3d0085){if(_0x3d0085){return _0x22f108;}return db[_0xd361('0x99')][_0xd361('0x56')](_['merge'](_0x2e931b[_0xd361('0x57')],{'read':![],'body':_0x2e931b[_0xd361('0x57')][_0xd361('0x57')],'OpenchannelAccountId':_0x8fedf0['id'],'OpenchannelInteractionId':_0x22f108['id'],'UserId':_0x2e931b['user']['id'],'ContactId':_0x5c726d['id']}))[_0xd361('0x1c')](function(_0x1a5197){_0x22f108[_0xd361('0xba')][_0xd361('0xb9')]=[];_0x22f108[_0xd361('0xba')][_0xd361('0xb9')][_0xd361('0x95')](_0x1a5197['dataValues']);return _0x22f108;});});}})[_0xd361('0x1c')](respondWithResult(_0x235e28,null))['catch'](handleError(_0x235e28,null));};
\ No newline at end of file
+var _0x089c=['OpenchannelAccount','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','includeAll','include','findAll','rows','show','params','length','merge','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','openchannel','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','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','CmContact','Contacts','Applications','List','account','applications','list','orderBy','priority','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','contact','messageId','interaction','created','autoclose','push','unmanaged','OpenchannelMessage','AttachmentId','User','unshift','*,*,*,*','forcedOwnership','Start','startRouting','sequelize','transaction','OpenchannelApplication','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','Tag','Tags','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','DESC','out','Messages','spread','dataValues','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./openchannelAccount.socket','register','jayson/promise','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','message','catch','sendStatus','end','status','limit','offset','count','set','apply','save','update','destroy','OpenchannelAccounts','stack','name','send','index','Pause','mandatoryDispositionPause','map'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0x089c,0x7d));var _0xc089=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x089c[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc089('0x0'));var rp=require(_0xc089('0x1'));var moment=require(_0xc089('0x2'));var BPromise=require(_0xc089('0x3'));var Mustache=require(_0xc089('0x4'));var util=require('util');var path=require(_0xc089('0x5'));var sox=require(_0xc089('0x6'));var csv=require(_0xc089('0x7'));var ejs=require(_0xc089('0x8'));var fs=require('fs');var fs_extra=require(_0xc089('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc089('0xa'));var deskjs=require(_0xc089('0xb'));var toCsv=require(_0xc089('0x7'));var querystring=require(_0xc089('0xc'));var Papa=require(_0xc089('0xd'));var Redis=require(_0xc089('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xc089('0xf'));var as=require(_0xc089('0x10'));var hardwareService=require(_0xc089('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0xc089('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xc089('0x13'));var db=require(_0xc089('0x14'))['db'];config[_0xc089('0x15')]=_[_0xc089('0x16')](config[_0xc089('0x15')],{'host':_0xc089('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc089('0x15')]));require(_0xc089('0x18'))[_0xc089('0x19')](socket);var jayson=require(_0xc089('0x1a'));var client=jayson[_0xc089('0x1b')][_0xc089('0x1c')]({'port':0x232c});var client9002=jayson[_0xc089('0x1b')][_0xc089('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x39f497,_0x4ecafa,_0x1c5bc6,_0x543144){return new BPromise(function(_0x34506f,_0x32e5f7){var _0x201c37=_0x543144||client;return _0x201c37[_0xc089('0x1d')](_0x39f497,_0x1c5bc6)[_0xc089('0x1e')](function(_0x3c3375){logger[_0xc089('0x1f')](_0xc089('0x20'),_0x4ecafa,_0xc089('0x21'));logger[_0xc089('0x22')](_0xc089('0x23'),_0x4ecafa,_0xc089('0x21'),JSON['stringify'](_0x3c3375));if(_0x3c3375[_0xc089('0x24')]){if(_0x3c3375[_0xc089('0x24')]['code']===0x1f4){logger[_0xc089('0x24')]('OpenchannelAccount,\x20%s,\x20%s',_0x4ecafa,_0x3c3375[_0xc089('0x24')][_0xc089('0x25')]);return _0x32e5f7(_0x3c3375[_0xc089('0x24')][_0xc089('0x25')]);}logger[_0xc089('0x24')](_0xc089('0x20'),_0x4ecafa,_0x3c3375['error'][_0xc089('0x25')]);return _0x34506f(_0x3c3375[_0xc089('0x24')]['message']);}else{logger[_0xc089('0x1f')](_0xc089('0x20'),_0x4ecafa,'request\x20sent');_0x34506f(_0x3c3375['result'][_0xc089('0x25')]);}})[_0xc089('0x26')](function(_0x3a22b6){logger['error'](_0xc089('0x20'),_0x4ecafa,_0x3a22b6);_0x32e5f7(_0x3a22b6);});});}function respondWithStatusCode(_0x3840f8,_0x4ff0e3){_0x4ff0e3=_0x4ff0e3||0xcc;return function(_0x51cd1a){if(_0x51cd1a){return _0x3840f8[_0xc089('0x27')](_0x4ff0e3);}return _0x3840f8['status'](_0x4ff0e3)[_0xc089('0x28')]();};}function respondWithResult(_0x3798cb,_0xdfd2cb){_0xdfd2cb=_0xdfd2cb||0xc8;return function(_0x56fb4b){if(_0x56fb4b){return _0x3798cb[_0xc089('0x29')](_0xdfd2cb)['json'](_0x56fb4b);}};}function respondWithFilteredResult(_0x47daad,_0xd81a1e){return function(_0x9f3d1b){if(_0x9f3d1b){var _0x25f871=typeof _0xd81a1e['offset']==='undefined'&&typeof _0xd81a1e[_0xc089('0x2a')]==='undefined';var _0x3d0f9e=_0x9f3d1b['count'];var _0x142464=_0x25f871?0x0:_0xd81a1e[_0xc089('0x2b')];var _0x3c109d=_0x25f871?_0x9f3d1b[_0xc089('0x2c')]:_0xd81a1e['offset']+_0xd81a1e[_0xc089('0x2a')];var _0x152a59;if(_0x3c109d>=_0x3d0f9e){_0x3c109d=_0x3d0f9e;_0x152a59=0xc8;}else{_0x152a59=0xce;}_0x47daad[_0xc089('0x29')](_0x152a59);return _0x47daad[_0xc089('0x2d')]('Content-Range',_0x142464+'-'+_0x3c109d+'/'+_0x3d0f9e)['json'](_0x9f3d1b);}return null;};}function patchUpdates(_0x4934b6){return function(_0x1903f8){try{jsonpatch[_0xc089('0x2e')](_0x1903f8,_0x4934b6,!![]);}catch(_0x56eb91){return BPromise['reject'](_0x56eb91);}return _0x1903f8[_0xc089('0x2f')]();};}function saveUpdates(_0x4bf6e4,_0x42f4f3){return function(_0x48420e){if(_0x48420e){return _0x48420e[_0xc089('0x30')](_0x4bf6e4)[_0xc089('0x1e')](function(_0x77bfe){return _0x77bfe;});}return null;};}function removeEntity(_0x33fc64,_0xe770d8){return function(_0x546ebf){if(_0x546ebf){return _0x546ebf[_0xc089('0x31')]()[_0xc089('0x1e')](function(){var _0x23ff5d=_0x546ebf['get']({'plain':!![]});var _0x47dc4d=_0xc089('0x32');return db['UserProfileResource'][_0xc089('0x31')]({'where':{'type':_0x47dc4d,'resourceId':_0x23ff5d['id']}})[_0xc089('0x1e')](function(){return _0x546ebf;});})['then'](function(){_0x33fc64[_0xc089('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x37ea73,_0x2e843b){return function(_0x313375){if(!_0x313375){_0x37ea73[_0xc089('0x27')](0x194);}return _0x313375;};}function handleError(_0x57a397,_0x185ffb){_0x185ffb=_0x185ffb||0x1f4;return function(_0x3d777f){logger[_0xc089('0x24')](_0x3d777f[_0xc089('0x33')]);if(_0x3d777f[_0xc089('0x34')]){delete _0x3d777f['name'];}_0x57a397['status'](_0x185ffb)[_0xc089('0x35')](_0x3d777f);};}exports[_0xc089('0x36')]=function(_0x23328c,_0x487c62){var _0xa1a4d={'include':[{'model':db[_0xc089('0x37')],'as':_0xc089('0x38')}]},_0x47fc53={},_0x368f3e={'count':0x0,'rows':[]};var _0x48522f=_[_0xc089('0x39')](db[_0xc089('0x3a')][_0xc089('0x3b')],function(_0x5e0792){return{'name':_0x5e0792[_0xc089('0x3c')],'type':_0x5e0792[_0xc089('0x3d')][_0xc089('0x3e')]};});_0x47fc53['model']=_['map'](_0x48522f,_0xc089('0x34'));_0x47fc53[_0xc089('0x3f')]=_[_0xc089('0x40')](_0x23328c[_0xc089('0x3f')]);_0x47fc53['filters']=_[_0xc089('0x41')](_0x47fc53[_0xc089('0x42')],_0x47fc53[_0xc089('0x3f')]);_0xa1a4d[_0xc089('0x43')]=_[_0xc089('0x41')](_0x47fc53[_0xc089('0x42')],qs['fields'](_0x23328c[_0xc089('0x3f')][_0xc089('0x44')]));_0xa1a4d['attributes']=_0xa1a4d[_0xc089('0x43')]['length']?_0xa1a4d[_0xc089('0x43')]:_0x47fc53[_0xc089('0x42')];if(!_0x23328c['query'][_0xc089('0x45')](_0xc089('0x46'))){_0xa1a4d[_0xc089('0x2a')]=qs[_0xc089('0x2a')](_0x23328c[_0xc089('0x3f')][_0xc089('0x2a')]);_0xa1a4d['offset']=qs[_0xc089('0x2b')](_0x23328c[_0xc089('0x3f')][_0xc089('0x2b')]);}_0xa1a4d[_0xc089('0x47')]=qs[_0xc089('0x48')](_0x23328c[_0xc089('0x3f')][_0xc089('0x48')]);_0xa1a4d[_0xc089('0x49')]=qs['filters'](_[_0xc089('0x4a')](_0x23328c[_0xc089('0x3f')],_0x47fc53[_0xc089('0x4b')]),_0x48522f);if(_0x23328c[_0xc089('0x3f')][_0xc089('0x4c')]){_0xa1a4d[_0xc089('0x49')]=_['merge'](_0xa1a4d['where'],{'$or':_[_0xc089('0x39')](_0x48522f,function(_0x2b0747){if(_0x2b0747[_0xc089('0x3d')]!=='VIRTUAL'){var _0x415828={};_0x415828[_0x2b0747[_0xc089('0x34')]]={'$like':'%'+_0x23328c['query'][_0xc089('0x4c')]+'%'};return _0x415828;}})});}_0xa1a4d=_['merge']({},_0xa1a4d,_0x23328c['options']);var _0x3e0ac9={'where':_0xa1a4d[_0xc089('0x49')]};return db[_0xc089('0x3a')][_0xc089('0x2c')](_0x3e0ac9)['then'](function(_0x491687){_0x368f3e[_0xc089('0x2c')]=_0x491687;if(_0x23328c[_0xc089('0x3f')][_0xc089('0x4d')]){_0xa1a4d[_0xc089('0x4e')]=[{'all':!![]}];}return db[_0xc089('0x3a')][_0xc089('0x4f')](_0xa1a4d);})[_0xc089('0x1e')](function(_0x4194e0){_0x368f3e[_0xc089('0x50')]=_0x4194e0;return _0x368f3e;})[_0xc089('0x1e')](respondWithFilteredResult(_0x487c62,_0xa1a4d))[_0xc089('0x26')](handleError(_0x487c62,null));};exports[_0xc089('0x51')]=function(_0x264cf5,_0x1c288d){var _0x14b3ac={'raw':![],'where':{'id':_0x264cf5[_0xc089('0x52')]['id']},'include':[{'model':db[_0xc089('0x37')],'as':_0xc089('0x38')}]},_0x141ab8={};_0x141ab8[_0xc089('0x42')]=_['keys'](db['OpenchannelAccount']['rawAttributes']);_0x141ab8[_0xc089('0x3f')]=_[_0xc089('0x40')](_0x264cf5[_0xc089('0x3f')]);_0x141ab8['filters']=_[_0xc089('0x41')](_0x141ab8[_0xc089('0x42')],_0x141ab8['query']);_0x14b3ac[_0xc089('0x43')]=_[_0xc089('0x41')](_0x141ab8[_0xc089('0x42')],qs[_0xc089('0x44')](_0x264cf5[_0xc089('0x3f')][_0xc089('0x44')]));_0x14b3ac[_0xc089('0x43')]=_0x14b3ac[_0xc089('0x43')][_0xc089('0x53')]?_0x14b3ac[_0xc089('0x43')]:_0x141ab8[_0xc089('0x42')];if(_0x264cf5[_0xc089('0x3f')]['includeAll']){_0x14b3ac[_0xc089('0x4e')]=[{'all':!![]}];}_0x14b3ac=_[_0xc089('0x54')]({},_0x14b3ac,_0x264cf5[_0xc089('0x55')]);return db[_0xc089('0x3a')]['find'](_0x14b3ac)[_0xc089('0x1e')](handleEntityNotFound(_0x1c288d,null))['then'](respondWithResult(_0x1c288d,null))[_0xc089('0x26')](handleError(_0x1c288d,null));};exports[_0xc089('0x56')]=function(_0x2426bd,_0x166407){return db[_0xc089('0x3a')][_0xc089('0x56')](_0x2426bd[_0xc089('0x57')],{})[_0xc089('0x1e')](function(_0xa7c484){var _0x5aefc3=_0x2426bd[_0xc089('0x58')]['get']({'plain':!![]});if(!_0x5aefc3)throw new Error(_0xc089('0x59'));if(_0x5aefc3[_0xc089('0x5a')]==='user'){var _0x380022=_0xa7c484[_0xc089('0x5b')]({'plain':!![]});var _0x179f99=_0xc089('0x32');return db[_0xc089('0x5c')][_0xc089('0x5d')]({'where':{'name':_0x179f99,'userProfileId':_0x5aefc3[_0xc089('0x5e')]},'raw':!![]})[_0xc089('0x1e')](function(_0x2f443f){if(_0x2f443f&&_0x2f443f[_0xc089('0x5f')]===0x0){return db[_0xc089('0x60')][_0xc089('0x56')]({'name':_0x380022[_0xc089('0x34')],'resourceId':_0x380022['id'],'type':_0x2f443f[_0xc089('0x34')],'sectionId':_0x2f443f['id']},{})['then'](function(){return _0xa7c484;});}else{return _0xa7c484;}})[_0xc089('0x26')](function(_0x36e30c){logger[_0xc089('0x24')](_0xc089('0x61'),_0x36e30c);throw _0x36e30c;});}return _0xa7c484;})[_0xc089('0x1e')](respondWithResult(_0x166407,0xc9))[_0xc089('0x26')](handleError(_0x166407,null));};exports[_0xc089('0x30')]=function(_0x21b941,_0x6b106f){if(_0x21b941[_0xc089('0x57')]['id']){delete _0x21b941[_0xc089('0x57')]['id'];}return db[_0xc089('0x3a')]['find']({'where':{'id':_0x21b941[_0xc089('0x52')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0xc089('0x1e')](handleEntityNotFound(_0x6b106f,null))[_0xc089('0x1e')](saveUpdates(_0x21b941[_0xc089('0x57')],null))[_0xc089('0x1e')](respondWithResult(_0x6b106f,null))['catch'](handleError(_0x6b106f,null));};exports[_0xc089('0x31')]=function(_0x279645,_0x33ab1c){return db[_0xc089('0x3a')]['find']({'where':{'id':_0x279645[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x33ab1c,null))[_0xc089('0x1e')](removeEntity(_0x33ab1c,null))[_0xc089('0x26')](handleError(_0x33ab1c,null));};exports[_0xc089('0x62')]=function(_0x3119e2,_0x157e58){return db[_0xc089('0x3a')][_0xc089('0x62')]()[_0xc089('0x1e')](respondWithResult(_0x157e58,null))[_0xc089('0x26')](handleError(_0x157e58,null));};exports[_0xc089('0x63')]=function(_0x2a973d,_0x327314,_0x2b4d72){if(_0x2a973d[_0xc089('0x57')]['id']){delete _0x2a973d[_0xc089('0x57')]['id'];}return db[_0xc089('0x3a')][_0xc089('0x5d')]({'where':{'id':_0x2a973d['params']['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x327314,null))['then'](function(_0x30f991){if(_0x30f991){_0x2a973d[_0xc089('0x57')][_0xc089('0x64')]=_0x30f991['id'];return db[_0xc089('0x65')][_0xc089('0x56')](_0x2a973d[_0xc089('0x57')]);}})['then'](respondWithResult(_0x327314,null))[_0xc089('0x26')](handleError(_0x327314,null));};exports[_0xc089('0x66')]=function(_0x5ac7aa,_0x4e27d2,_0x5f46e2){var _0x49ea4a={'raw':![],'where':{}};var _0x772c07={};var _0x26b732={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0xc089('0x67')]({'where':{'id':_0x5ac7aa[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x4e27d2,null))[_0xc089('0x1e')](function(_0x52fc0d){if(_0x52fc0d){_0x772c07['model']=_[_0xc089('0x40')](db[_0xc089('0x65')][_0xc089('0x3b')]);_0x772c07[_0xc089('0x3f')]=_['keys'](_0x5ac7aa['query']);_0x772c07[_0xc089('0x4b')]=_[_0xc089('0x41')](_0x772c07['model'],_0x772c07[_0xc089('0x3f')]);_0x49ea4a[_0xc089('0x43')]=_[_0xc089('0x41')](_0x772c07['model'],qs['fields'](_0x5ac7aa[_0xc089('0x3f')][_0xc089('0x44')]));_0x49ea4a[_0xc089('0x43')]=_0x49ea4a[_0xc089('0x43')]['length']?_0x49ea4a[_0xc089('0x43')]:_0x772c07[_0xc089('0x42')];if(!_0x5ac7aa[_0xc089('0x3f')]['hasOwnProperty']('nolimit')){_0x49ea4a['limit']=qs['limit'](_0x5ac7aa[_0xc089('0x3f')][_0xc089('0x2a')]);_0x49ea4a[_0xc089('0x2b')]=qs[_0xc089('0x2b')](_0x5ac7aa['query'][_0xc089('0x2b')]);}_0x49ea4a[_0xc089('0x47')]=qs[_0xc089('0x48')](_0x5ac7aa['query'][_0xc089('0x48')]);_0x49ea4a[_0xc089('0x49')]=qs[_0xc089('0x4b')](_[_0xc089('0x4a')](_0x5ac7aa[_0xc089('0x3f')],_0x772c07[_0xc089('0x4b')]));_0x49ea4a[_0xc089('0x49')][_0xc089('0x64')]=_0x52fc0d['id'];if(_0x5ac7aa[_0xc089('0x3f')][_0xc089('0x4c')]){_0x49ea4a[_0xc089('0x49')]=_[_0xc089('0x54')](_0x49ea4a[_0xc089('0x49')],{'$or':_[_0xc089('0x39')](_0x49ea4a[_0xc089('0x43')],function(_0x316208){var _0x35fa35={};_0x35fa35[_0x316208]={'$like':'%'+_0x5ac7aa[_0xc089('0x3f')][_0xc089('0x4c')]+'%'};return _0x35fa35;})});}_0x49ea4a=_[_0xc089('0x54')]({},_0x49ea4a,_0x5ac7aa['options']);return db[_0xc089('0x65')][_0xc089('0x2c')]({'where':_0x49ea4a['where']})[_0xc089('0x1e')](function(_0x46e826){_0x26b732[_0xc089('0x2c')]=_0x46e826;if(_0x5ac7aa['query'][_0xc089('0x4d')]){_0x49ea4a[_0xc089('0x4e')]=[{'all':!![]}];}return db[_0xc089('0x65')][_0xc089('0x4f')](_0x49ea4a);})['then'](function(_0x1005ee){_0x26b732[_0xc089('0x50')]=_0x1005ee;return _0x26b732;});}})[_0xc089('0x1e')](respondWithFilteredResult(_0x4e27d2,_0x49ea4a))['catch'](handleError(_0x4e27d2,null));};exports[_0xc089('0x68')]=function(_0x24f05e,_0xa073f,_0x4ed1a0){return db[_0xc089('0x3a')]['find']({'where':{'id':_0x24f05e[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0xa073f,null))['then'](function(_0x3debc0){if(_0x3debc0){return _0x3debc0[_0xc089('0x68')](_0x24f05e[_0xc089('0x3f')][_0xc089('0x69')]);}})[_0xc089('0x1e')](respondWithStatusCode(_0xa073f,null))[_0xc089('0x26')](handleError(_0xa073f,null));};exports[_0xc089('0x6a')]=function(_0x65ddce,_0x53b487,_0x5db838){if(_0x65ddce[_0xc089('0x57')]['id']){delete _0x65ddce[_0xc089('0x57')]['id'];}return db[_0xc089('0x3a')][_0xc089('0x5d')]({'where':{'id':_0x65ddce[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x53b487,null))['then'](function(_0x1c8944){if(_0x1c8944){_0x65ddce[_0xc089('0x57')][_0xc089('0x64')]=_0x1c8944['id'];return db[_0xc089('0x6b')]['create'](_0x65ddce['body']);}})['then'](respondWithResult(_0x53b487,null))[_0xc089('0x26')](handleError(_0x53b487,null));};exports[_0xc089('0x6c')]=function(_0x11181d,_0xbe2b4c,_0x454eee){var _0x2740e5={'raw':![],'where':{}};var _0x23d5a0={};var _0x4600a4={'count':0x0,'rows':[]};return db[_0xc089('0x3a')][_0xc089('0x67')]({'where':{'id':_0x11181d[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0xbe2b4c,null))[_0xc089('0x1e')](function(_0x565fae){if(_0x565fae){_0x23d5a0['model']=_['keys'](db[_0xc089('0x6b')][_0xc089('0x3b')]);_0x23d5a0[_0xc089('0x3f')]=_[_0xc089('0x40')](_0x11181d[_0xc089('0x3f')]);_0x23d5a0[_0xc089('0x4b')]=_[_0xc089('0x41')](_0x23d5a0[_0xc089('0x42')],_0x23d5a0[_0xc089('0x3f')]);_0x2740e5[_0xc089('0x43')]=_[_0xc089('0x41')](_0x23d5a0[_0xc089('0x42')],qs[_0xc089('0x44')](_0x11181d[_0xc089('0x3f')][_0xc089('0x44')]));_0x2740e5[_0xc089('0x43')]=_0x2740e5[_0xc089('0x43')]['length']?_0x2740e5[_0xc089('0x43')]:_0x23d5a0[_0xc089('0x42')];if(!_0x11181d['query']['hasOwnProperty']('nolimit')){_0x2740e5[_0xc089('0x2a')]=qs[_0xc089('0x2a')](_0x11181d['query']['limit']);_0x2740e5[_0xc089('0x2b')]=qs[_0xc089('0x2b')](_0x11181d['query'][_0xc089('0x2b')]);}_0x2740e5[_0xc089('0x47')]=qs[_0xc089('0x48')](_0x11181d[_0xc089('0x3f')]['sort']);_0x2740e5[_0xc089('0x49')]=qs[_0xc089('0x4b')](_[_0xc089('0x4a')](_0x11181d[_0xc089('0x3f')],_0x23d5a0[_0xc089('0x4b')]));_0x2740e5['where'][_0xc089('0x64')]=_0x565fae['id'];if(_0x11181d[_0xc089('0x3f')][_0xc089('0x4c')]){_0x2740e5[_0xc089('0x49')]=_['merge'](_0x2740e5['where'],{'$or':_['map'](_0x2740e5[_0xc089('0x43')],function(_0x21fb98){var _0x415e4b={};_0x415e4b[_0x21fb98]={'$like':'%'+_0x11181d[_0xc089('0x3f')][_0xc089('0x4c')]+'%'};return _0x415e4b;})});}_0x2740e5=_['merge']({},_0x2740e5,_0x11181d[_0xc089('0x55')]);return db['CannedAnswer'][_0xc089('0x2c')]({'where':_0x2740e5[_0xc089('0x49')]})['then'](function(_0x224641){_0x4600a4[_0xc089('0x2c')]=_0x224641;if(_0x11181d['query']['includeAll']){_0x2740e5['include']=[{'all':!![]}];}return db[_0xc089('0x6b')][_0xc089('0x4f')](_0x2740e5);})[_0xc089('0x1e')](function(_0x33a905){_0x4600a4[_0xc089('0x50')]=_0x33a905;return _0x4600a4;});}})[_0xc089('0x1e')](respondWithFilteredResult(_0xbe2b4c,_0x2740e5))[_0xc089('0x26')](handleError(_0xbe2b4c,null));};exports[_0xc089('0x6d')]=function(_0x5f05f8,_0x5d82d4,_0x1c7a05){return db[_0xc089('0x3a')][_0xc089('0x5d')]({'where':{'id':_0x5f05f8[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x5d82d4,null))[_0xc089('0x1e')](function(_0x1ac4a3){if(_0x1ac4a3){return _0x1ac4a3[_0xc089('0x6d')](_0x5f05f8[_0xc089('0x3f')][_0xc089('0x69')]);}})['then'](respondWithStatusCode(_0x5d82d4,null))[_0xc089('0x26')](handleError(_0x5d82d4,null));};exports['notify']=function(_0x37ee13,_0x8b7d8d,_0x21badf){var _0x58e4c3={'body':_0x37ee13[_0xc089('0x57')],'channel':_0xc089('0x6e')};var _0xf5add9=[];var _0x39a3bd=[];var _0x55089e={};var _0x30feba=![];return db['CmContact'][_0xc089('0x62')]()[_0xc089('0x1e')](function(_0x3bd84c){if(!_0x3bd84c){throw new db['Sequelize'][(_0xc089('0x6f'))](_0xc089('0x70'));}_0xf5add9=_[_0xc089('0x71')](_['keys'](_0x3bd84c),[_0xc089('0x72'),'updatedAt']);_0x39a3bd=_[_0xc089('0x71')](_[_0xc089('0x40')](_0x3bd84c),['createdAt',_0xc089('0x73'),_0xc089('0x74'),_0xc089('0x75')]);if(_0x37ee13['body']['id']){delete _0x37ee13['body']['id'];}if(_[_0xc089('0x76')](_0x37ee13['body'][_0xc089('0x77')])){throw new db[(_0xc089('0x78'))][(_0xc089('0x6f'))](_0xc089('0x79'));}if(_['isNil'](_0x37ee13[_0xc089('0x57')]['body'])||_0x37ee13[_0xc089('0x57')][_0xc089('0x57')]===''){throw new db[(_0xc089('0x78'))]['ValidationError'](_0xc089('0x7a'));}if(_[_0xc089('0x76')](_0x37ee13[_0xc089('0x57')][_0xc089('0x7b')])){throw new db[(_0xc089('0x78'))][(_0xc089('0x6f'))](_0xc089('0x7c')+_0x39a3bd);}if(!_[_0xc089('0x7d')](_0x39a3bd,_0x37ee13[_0xc089('0x57')][_0xc089('0x7b')])){throw new db['Sequelize'][(_0xc089('0x6f'))](_0xc089('0x7e')+_0x39a3bd);}_0x55089e[_0x37ee13['body']['mapKey']]=_0x37ee13[_0xc089('0x57')][_0xc089('0x77')];})['then'](function(){return db[_0xc089('0x3a')][_0xc089('0x5d')]({'where':{'id':_0x37ee13[_0xc089('0x52')]['id']},'include':[{'model':db[_0xc089('0x7f')],'as':'List','include':[{'model':db[_0xc089('0x80')],'as':_0xc089('0x81'),'where':_0x55089e,'limit':0x1,'order':[[_0xc089('0x73'),'DESC']]}]},{'model':db['OpenchannelApplication'],'as':_0xc089('0x82')}]});})[_0xc089('0x1e')](handleEntityNotFound(_0x8b7d8d,null))[_0xc089('0x1e')](function(_0xd45cd4){if(_0xd45cd4&&_0xd45cd4[_0xc089('0x83')]){_0x58e4c3[_0xc089('0x84')]=_0xd45cd4;_0x58e4c3[_0xc089('0x85')]=_0xd45cd4[_0xc089('0x82')];_0x58e4c3[_0xc089('0x86')]=_0xd45cd4['List'];_0x58e4c3[_0xc089('0x85')]=_[_0xc089('0x87')](_0x58e4c3['applications'],[_0xc089('0x88')],['asc']);if(_0x58e4c3[_0xc089('0x84')][_0xc089('0x82')]){delete _0x58e4c3[_0xc089('0x84')][_0xc089('0x82')];}if(_0x58e4c3['account'][_0xc089('0x83')]&&_0x58e4c3['account'][_0xc089('0x83')]['Contacts'][_0xc089('0x53')]){return _0x58e4c3[_0xc089('0x84')][_0xc089('0x83')][_0xc089('0x81')][0x0];}var _0x3d5620=_[_0xc089('0x16')](_0x37ee13[_0xc089('0x57')],{'firstName':_0x37ee13['body'][_0xc089('0x77')],'ListId':_0xd45cd4[_0xc089('0x75')]});_0x3d5620[_0x37ee13[_0xc089('0x57')]['mapKey']]=_0x37ee13[_0xc089('0x57')][_0xc089('0x77')];return db['CmContact'][_0xc089('0x56')](_0x3d5620,{'fields':_0xf5add9,'raw':!![]});}})[_0xc089('0x1e')](handleEntityNotFound(_0x8b7d8d,null))['then'](function(_0x7ca2b8){_0x58e4c3['contact']=_0x7ca2b8;if(_0x7ca2b8){var _0x4189fa={'ContactId':_0x7ca2b8['id'],'OpenchannelAccountId':_0x37ee13[_0xc089('0x52')]['id'],'from':(_0x7ca2b8['firstName']||'')+'\x20'+(_0x7ca2b8[_0xc089('0x89')]||'')};var _0x1a791b={'OpenchannelAccountId':_0x37ee13[_0xc089('0x52')]['id'],'closed':![]};if(_0x37ee13['body'][_0xc089('0x8a')]){_0x1a791b[_0xc089('0x8a')]=_0x37ee13[_0xc089('0x57')]['threadId'];return db[_0xc089('0x8b')][_0xc089('0x5d')]({'where':_0x1a791b})['then'](function(_0xd4b27e){if(_0xd4b27e){return[_0xd4b27e,![]];}_0x4189fa['threadId']=_0x37ee13['body'][_0xc089('0x8a')];_0x4189fa[_0xc089('0x8c')]=_0x37ee13[_0xc089('0x57')][_0xc089('0x8c')];return db[_0xc089('0x8b')][_0xc089('0x56')](_0x4189fa)[_0xc089('0x1e')](function(_0x2ef807){return[_0x2ef807,!![]];});});}else{_0x1a791b[_0xc089('0x8a')]=null;}_0x1a791b[_0xc089('0x8d')]=_0x7ca2b8['id'];return db[_0xc089('0x8b')][_0xc089('0x5d')]({'where':_0x1a791b})[_0xc089('0x1e')](function(_0x12310c){if(_0x12310c){return[_0x12310c,![]];}return db['OpenchannelInteraction'][_0xc089('0x56')](_0x4189fa)[_0xc089('0x1e')](function(_0x56ceb6){return[_0x56ceb6,!![]];});});}})['spread'](function(_0x242f66,_0x285a21){if(_0x242f66){_0x30feba=_0x285a21;if(!_0x285a21){var _0xb61363={'from':(_0x58e4c3[_0xc089('0x8e')]['firstName']||'')+'\x20'+(_0x58e4c3[_0xc089('0x8e')]['lastName']||'')};if(_0x37ee13['body'][_0xc089('0x8a')]&&_0x37ee13[_0xc089('0x57')]['messageId']&&_0x37ee13[_0xc089('0x57')]['threadId']!=_0x37ee13[_0xc089('0x57')][_0xc089('0x8f')]){_0xb61363[_0xc089('0x8a')]=_0x37ee13[_0xc089('0x57')][_0xc089('0x8f')];}return _0x242f66[_0xc089('0x30')](_0xb61363);}else{return _0x242f66;}}})[_0xc089('0x1e')](function(_0x31b0ee){_0x58e4c3[_0xc089('0x90')]=_0x31b0ee['get']({'plain':!![]});_0x58e4c3[_0xc089('0x90')][_0xc089('0x91')]=_0x30feba;if(_0x58e4c3[_0xc089('0x90')]['created']){if(_0x58e4c3[_0xc089('0x84')][_0xc089('0x92')]){_0x58e4c3[_0xc089('0x85')][_0xc089('0x93')]({'id':0x0,'priority':_0x58e4c3[_0xc089('0x85')]['length']+0x1,'app':'close','appdata':_0xc089('0x94'),'interval':'*,*,*,*'});}}return db[_0xc089('0x95')][_0xc089('0x56')]({'body':_0x37ee13['body'][_0xc089('0x57')],'OpenchannelAccountId':_0x37ee13[_0xc089('0x52')]['id'],'OpenchannelInteractionId':_0x31b0ee['id'],'direction':'in','ContactId':_0x58e4c3[_0xc089('0x8e')]['id'],'AttachmentId':_0x37ee13['body'][_0xc089('0x96')]});})[_0xc089('0x1e')](function(_0x4f9de0){_0x58e4c3['message']=_0x4f9de0;if(_0x58e4c3[_0xc089('0x90')]['UserId']){return db[_0xc089('0x97')]['find']({'attributes':['id',_0xc089('0x34')],'where':{'id':_0x58e4c3['interaction']['UserId']}})[_0xc089('0x1e')](function(_0x1c7d96){if(_0x1c7d96){_0x58e4c3[_0xc089('0x85')][_0xc089('0x98')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x1c7d96[_0xc089('0x34')]+','+(_0x58e4c3[_0xc089('0x84')]['waitForTheAssignedAgent']||0xa),'interval':_0xc089('0x99')});_0x58e4c3[_0xc089('0x9a')]=![];}return respondWithRpcPromise(_0xc089('0x9b'),_0xc089('0x9c'),_0x58e4c3);});}return respondWithRpcPromise('Start',_0xc089('0x9c'),_0x58e4c3);})[_0xc089('0x1e')](function(_0x155e27){respondWithRpcPromise('EventManager','EventManager',{'event':'notify','message':_0x155e27},client9002);return _0x155e27;})[_0xc089('0x1e')](respondWithResult(_0x8b7d8d,null))['catch'](handleError(_0x8b7d8d,null));};exports['addApplications']=function(_0x574f55,_0x89bde5,_0x3f9edf){return db['OpenchannelAccount'][_0xc089('0x67')]({'where':{'id':_0x574f55['params']['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x89bde5,null))['then'](function(_0x4a4bb3){if(_0x4a4bb3){return db[_0xc089('0x9d')][_0xc089('0x9e')](function(_0x45ca2f){return db[_0xc089('0x9f')][_0xc089('0x31')]({'where':{'OpenchannelAccountId':_0x574f55[_0xc089('0x52')]['id']},'transaction':_0x45ca2f})[_0xc089('0x1e')](function(_0x107955){var _0x506e8d=_['map'](_0x574f55[_0xc089('0x57')],function(_0x3b20a9){_0x3b20a9['OpenchannelAccountId']=_0x574f55[_0xc089('0x52')]['id'];return _0x3b20a9;});return db['OpenchannelApplication']['bulkCreate'](_0x506e8d,{'transaction':_0x45ca2f});});})[_0xc089('0x1e')](function(){return db[_0xc089('0x9f')][_0xc089('0xa0')]({'where':{'OpenchannelAccountId':_0x574f55[_0xc089('0x52')]['id']},'order':_0xc089('0x88')});});}})['then'](respondWithResult(_0x89bde5,null))[_0xc089('0x26')](handleError(_0x89bde5,null));};exports[_0xc089('0xa1')]=function(_0x3fb772,_0x3b907e,_0x2f3a33){var _0x4730dd={};var _0x1b6fd0={};var _0x51a056;var _0x2c407c;return db['OpenchannelAccount'][_0xc089('0x67')]({'where':{'id':_0x3fb772[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x3b907e,null))[_0xc089('0x1e')](function(_0x28eab1){if(_0x28eab1){_0x51a056=_0x28eab1;_0x1b6fd0[_0xc089('0x42')]=_[_0xc089('0x40')](db[_0xc089('0x9f')][_0xc089('0x3b')]);_0x1b6fd0[_0xc089('0x3f')]=_['keys'](_0x3fb772[_0xc089('0x3f')]);_0x1b6fd0[_0xc089('0x4b')]=_['intersection'](_0x1b6fd0[_0xc089('0x42')],_0x1b6fd0[_0xc089('0x3f')]);_0x4730dd[_0xc089('0x43')]=_['intersection'](_0x1b6fd0['model'],qs[_0xc089('0x44')](_0x3fb772[_0xc089('0x3f')][_0xc089('0x44')]));_0x4730dd['attributes']=_0x4730dd[_0xc089('0x43')][_0xc089('0x53')]?_0x4730dd[_0xc089('0x43')]:_0x1b6fd0[_0xc089('0x42')];_0x4730dd[_0xc089('0x47')]=qs[_0xc089('0x48')](_0x3fb772['query'][_0xc089('0x48')]);_0x4730dd[_0xc089('0x49')]=qs[_0xc089('0x4b')](_[_0xc089('0x4a')](_0x3fb772['query'],_0x1b6fd0[_0xc089('0x4b')]));if(_0x3fb772[_0xc089('0x3f')][_0xc089('0x4c')]){_0x4730dd[_0xc089('0x49')]=_['merge'](_0x4730dd[_0xc089('0x49')],{'$or':_[_0xc089('0x39')](_0x4730dd['attributes'],function(_0x132ada){var _0x4a143b={};_0x4a143b[_0x132ada]={'$like':'%'+_0x3fb772[_0xc089('0x3f')]['filter']+'%'};return _0x4a143b;})});}_0x4730dd=_[_0xc089('0x54')]({},_0x4730dd,_0x3fb772[_0xc089('0x55')]);return _0x51a056[_0xc089('0xa1')](_0x4730dd);}})['then'](function(_0x124bf1){if(_0x124bf1){_0x2c407c=_0x124bf1[_0xc089('0x53')];if(!_0x3fb772[_0xc089('0x3f')]['hasOwnProperty'](_0xc089('0x46'))){_0x4730dd[_0xc089('0x2a')]=qs[_0xc089('0x2a')](_0x3fb772[_0xc089('0x3f')][_0xc089('0x2a')]);_0x4730dd[_0xc089('0x2b')]=qs[_0xc089('0x2b')](_0x3fb772[_0xc089('0x3f')][_0xc089('0x2b')]);}return _0x51a056[_0xc089('0xa1')](_0x4730dd);}})['then'](function(_0x529f46){if(_0x529f46){return _0x529f46?{'count':_0x2c407c,'rows':_0x529f46}:null;}})[_0xc089('0x1e')](respondWithResult(_0x3b907e,null))['catch'](handleError(_0x3b907e,null));};exports[_0xc089('0xa2')]=function(_0x4eb2f3,_0x2ceb1f,_0x42c1f5){var _0x13bb88={'raw':![],'where':{}};var _0x472870={};var _0x184806={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0xc089('0x67')]({'where':{'id':_0x4eb2f3[_0xc089('0x52')]['id']}})['then'](handleEntityNotFound(_0x2ceb1f,null))[_0xc089('0x1e')](function(_0x27fd9e){if(_0x27fd9e){_0x472870[_0xc089('0x42')]=_['keys'](db[_0xc089('0x8b')]['rawAttributes']);_0x472870[_0xc089('0x3f')]=_[_0xc089('0x40')](_0x4eb2f3[_0xc089('0x3f')]);_0x472870[_0xc089('0x4b')]=_[_0xc089('0x41')](_0x472870['model'],_0x472870[_0xc089('0x3f')]);_0x13bb88[_0xc089('0x43')]=_[_0xc089('0x41')](_0x472870[_0xc089('0x42')],qs['fields'](_0x4eb2f3[_0xc089('0x3f')]['fields']));_0x13bb88['attributes']=_0x13bb88[_0xc089('0x43')][_0xc089('0x53')]?_0x13bb88[_0xc089('0x43')]:_0x472870[_0xc089('0x42')];if(!_0x4eb2f3[_0xc089('0x3f')]['hasOwnProperty'](_0xc089('0x46'))){_0x13bb88[_0xc089('0x2a')]=qs[_0xc089('0x2a')](_0x4eb2f3['query']['limit']);_0x13bb88['offset']=qs[_0xc089('0x2b')](_0x4eb2f3[_0xc089('0x3f')][_0xc089('0x2b')]);}_0x13bb88[_0xc089('0x47')]=qs[_0xc089('0x48')](_0x4eb2f3[_0xc089('0x3f')][_0xc089('0x48')]);_0x13bb88['where']=qs['filters'](_[_0xc089('0x4a')](_0x4eb2f3['query'],_0x472870[_0xc089('0x4b')]));_0x13bb88[_0xc089('0x49')][_0xc089('0x64')]=_0x27fd9e['id'];if(_0x4eb2f3['query'][_0xc089('0x4c')]){_0x13bb88['where']=_[_0xc089('0x54')](_0x13bb88[_0xc089('0x49')],{'$or':_[_0xc089('0x39')](_0x13bb88[_0xc089('0x43')],function(_0x1a823b){var _0x1d5ba5={};_0x1d5ba5[_0x1a823b]={'$like':'%'+_0x4eb2f3[_0xc089('0x3f')][_0xc089('0x4c')]+'%'};return _0x1d5ba5;})});}_0x13bb88=_[_0xc089('0x54')]({},_0x13bb88,_0x4eb2f3[_0xc089('0x55')]);return db[_0xc089('0x8b')]['count']({'where':_0x13bb88[_0xc089('0x49')]})[_0xc089('0x1e')](function(_0x9a8f08){_0x184806[_0xc089('0x2c')]=_0x9a8f08;if(_0x4eb2f3[_0xc089('0x3f')][_0xc089('0x4d')]){_0x13bb88['include']=[{'model':db[_0xc089('0x80')],'as':_0xc089('0xa3'),'required':![]},{'model':db[_0xc089('0x97')],'as':_0xc089('0xa4'),'attributes':[_0xc089('0x34'),_0xc089('0xa5'),'internal'],'required':![]},{'model':db[_0xc089('0xa6')],'as':_0xc089('0xa7'),'attributes':['id',_0xc089('0x34'),_0xc089('0xa8')],'where':_0x4eb2f3['query']['tag']?{'id':_0x4eb2f3['query'][_0xc089('0xa9')]}:undefined,'required':_0x4eb2f3[_0xc089('0x3f')][_0xc089('0xa9')]?!![]:![]}];}return db[_0xc089('0x8b')][_0xc089('0x4f')](_0x13bb88);})['then'](function(_0x350bc6){_0x184806[_0xc089('0x50')]=_0x350bc6;return _0x184806;});}})[_0xc089('0x1e')](respondWithFilteredResult(_0x2ceb1f,_0x13bb88))[_0xc089('0x26')](handleError(_0x2ceb1f,null));};exports[_0xc089('0xaa')]=function(_0xe58c70,_0xafdbc6,_0x3d23a){return db[_0xc089('0x3a')]['find']({'where':{'id':_0xe58c70[_0xc089('0x52')]['id']}})['then'](handleEntityNotFound(_0xafdbc6,null))[_0xc089('0x1e')](function(_0x3a397c){if(_0x3a397c){return _0x3a397c[_0xc089('0xaa')](_0xe58c70[_0xc089('0x57')]['ids'],_[_0xc089('0xab')](_0xe58c70[_0xc089('0x57')],['ids','id'])||{})['spread'](function(_0x2dd26f){for(var _0x42fa23=0x0;_0x42fa23<_0xe58c70['body'][_0xc089('0x69')][_0xc089('0x53')];_0x42fa23+=0x1){socket[_0xc089('0xac')](_0xc089('0xad'),{'UserId':Number(_0xe58c70['body'][_0xc089('0x69')][_0x42fa23]),'OpenchannelAccountId':Number(_0xe58c70[_0xc089('0x52')]['id'])});}return _0x2dd26f;});}})[_0xc089('0x1e')](respondWithResult(_0xafdbc6,null))[_0xc089('0x26')](handleError(_0xafdbc6,null));};exports[_0xc089('0xae')]=function(_0x799b48,_0x2037a1,_0x70e653){return db[_0xc089('0x3a')][_0xc089('0x5d')]({'where':{'id':_0x799b48[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x2037a1,null))[_0xc089('0x1e')](function(_0x1d9b2c){if(_0x1d9b2c){return _0x1d9b2c['removeAgents'](_0x799b48[_0xc089('0x3f')][_0xc089('0x69')])['then'](function(){if(_[_0xc089('0xaf')](_0x799b48[_0xc089('0x3f')][_0xc089('0x69')])){for(var _0x1a7116=0x0;_0x1a7116<_0x799b48[_0xc089('0x3f')][_0xc089('0x69')][_0xc089('0x53')];_0x1a7116+=0x1){socket[_0xc089('0xac')](_0xc089('0xb0'),{'UserId':Number(_0x799b48[_0xc089('0x3f')]['ids'][_0x1a7116]),'OpenchannelAccountId':Number(_0x799b48[_0xc089('0x52')]['id'])});}}else{socket['emit'](_0xc089('0xb0'),{'UserId':Number(_0x799b48[_0xc089('0x3f')]['ids']),'OpenchannelAccountId':Number(_0x799b48[_0xc089('0x52')]['id'])});}});}})[_0xc089('0x1e')](respondWithStatusCode(_0x2037a1,null))[_0xc089('0x26')](handleError(_0x2037a1,null));};exports[_0xc089('0xb1')]=function(_0x54a8aa,_0x1e9c09,_0x841ec6){var _0x4a1b54={};var _0x94e857={};var _0x1578d9;var _0x4bf603;return db[_0xc089('0x3a')][_0xc089('0x67')]({'where':{'id':_0x54a8aa['params']['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x1e9c09,null))['then'](function(_0x18ca87){if(_0x18ca87){_0x1578d9=_0x18ca87;_0x94e857[_0xc089('0x42')]=_[_0xc089('0x40')](db[_0xc089('0x97')]['rawAttributes']);_0x94e857[_0xc089('0x3f')]=_[_0xc089('0x40')](_0x54a8aa['query']);_0x94e857[_0xc089('0x4b')]=_[_0xc089('0x41')](_0x94e857[_0xc089('0x42')],_0x94e857['query']);_0x4a1b54[_0xc089('0x43')]=_[_0xc089('0x41')](_0x94e857[_0xc089('0x42')],qs[_0xc089('0x44')](_0x54a8aa[_0xc089('0x3f')]['fields']));_0x4a1b54[_0xc089('0x43')]=_0x4a1b54[_0xc089('0x43')][_0xc089('0x53')]?_0x4a1b54[_0xc089('0x43')]:_0x94e857['model'];_0x4a1b54[_0xc089('0x47')]=qs['sort'](_0x54a8aa[_0xc089('0x3f')]['sort']);_0x4a1b54[_0xc089('0x49')]=qs['filters'](_['pick'](_0x54a8aa['query'],_0x94e857[_0xc089('0x4b')]));if(_0x54a8aa[_0xc089('0x3f')]['filter']){_0x4a1b54[_0xc089('0x49')]=_[_0xc089('0x54')](_0x4a1b54[_0xc089('0x49')],{'$or':_[_0xc089('0x39')](_0x4a1b54['attributes'],function(_0x50f7c8){var _0x5a1d60={};_0x5a1d60[_0x50f7c8]={'$like':'%'+_0x54a8aa[_0xc089('0x3f')][_0xc089('0x4c')]+'%'};return _0x5a1d60;})});}_0x4a1b54=_[_0xc089('0x54')]({},_0x4a1b54,_0x54a8aa['options']);return _0x1578d9[_0xc089('0xb1')](_0x4a1b54);}})[_0xc089('0x1e')](function(_0x32a14c){if(_0x32a14c){_0x4bf603=_0x32a14c[_0xc089('0x53')];if(!_0x54a8aa[_0xc089('0x3f')]['hasOwnProperty'](_0xc089('0x46'))){_0x4a1b54['limit']=qs[_0xc089('0x2a')](_0x54a8aa[_0xc089('0x3f')][_0xc089('0x2a')]);_0x4a1b54[_0xc089('0x2b')]=qs['offset'](_0x54a8aa[_0xc089('0x3f')][_0xc089('0x2b')]);}return _0x1578d9[_0xc089('0xb1')](_0x4a1b54);}})[_0xc089('0x1e')](function(_0x2b8f34){if(_0x2b8f34){return _0x2b8f34?{'count':_0x4bf603,'rows':_0x2b8f34}:null;}})[_0xc089('0x1e')](respondWithResult(_0x1e9c09,null))[_0xc089('0x26')](handleError(_0x1e9c09,null));};exports[_0xc089('0x35')]=function(_0x47b8fa,_0x529b11,_0x5ec7b9){var _0x46f82f,_0x1b11db,_0x5a22bb;if(_[_0xc089('0x76')](_0x47b8fa[_0xc089('0x57')][_0xc089('0x57')])||_0x47b8fa[_0xc089('0x57')][_0xc089('0x57')]===''){throw new db[(_0xc089('0x78'))][(_0xc089('0x6f'))](_0xc089('0x7a'));}if(_[_0xc089('0x76')](_0x47b8fa[_0xc089('0x57')]['to'])){}_0x46f82f=_0x47b8fa[_0xc089('0x57')]['to'];return db[_0xc089('0x3a')]['findOne']({'where':{'id':_0x47b8fa[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x529b11,null))[_0xc089('0x1e')](function(_0x3b01a2){if(_0x3b01a2){return db[_0xc089('0x3a')][_0xc089('0x5d')]({'where':{'id':_0x3b01a2['id']},'include':[{'model':db['CmList'],'as':_0xc089('0x83'),'include':[{'model':db[_0xc089('0x80')],'as':_0xc089('0x81'),'where':{[_0x3b01a2[_0xc089('0x7b')]]:_0x46f82f},'limit':0x1,'order':[[_0xc089('0x73'),_0xc089('0xb2')]]}]}]})[_0xc089('0x1e')](handleEntityNotFound(_0x529b11,null))['then'](function(_0x37e391){if(_0x37e391&&_0x37e391['List']){_0x1b11db=_0x37e391[_0xc089('0x5b')]({'plain':!![]});if(_0x1b11db[_0xc089('0x83')]&&_0x1b11db[_0xc089('0x83')]['Contacts'][_0xc089('0x53')]){return _0x1b11db['List'][_0xc089('0x81')][0x0];}return db['CmContact'][_0xc089('0x56')](_[_0xc089('0x16')](_0x47b8fa[_0xc089('0x57')],{'firstName':_0x46f82f,[_0x37e391[_0xc089('0x7b')]]:_0x46f82f,'phone':_0x46f82f,'ListId':_0x1b11db[_0xc089('0x75')]}));}})['then'](handleEntityNotFound(_0x529b11,null))[_0xc089('0x1e')](function(_0x5225ce){if(_0x5225ce){_0x5a22bb=_0x5225ce;return db[_0xc089('0x8b')]['find']({'where':{'ContactId':_0x5a22bb['id'],'closed':![],'OpenchannelAccountId':_0x1b11db['id']}})[_0xc089('0x1e')](function(_0x22bbac){if(_0x22bbac){return[_0x22bbac,![]];}return db[_0xc089('0x8b')]['create']({'UserId':_0x47b8fa[_0xc089('0x58')]['id'],'ContactId':_0x5a22bb['id'],'OpenchannelAccountId':_0x1b11db['id'],'lastMsgDirection':_0xc089('0xb3'),'Messages':[_[_0xc089('0x54')](_0x47b8fa[_0xc089('0x57')],{'read':![],'body':_0x47b8fa[_0xc089('0x57')][_0xc089('0x57')],'OpenchannelAccountId':_0x1b11db['id'],'UserId':_0x47b8fa['user']['id'],'ContactId':_0x5a22bb['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0xc089('0xb4')}]})[_0xc089('0x1e')](function(_0x3c0ecf){return[_0x3c0ecf,!![]];});});}})[_0xc089('0xb5')](function(_0x4db7b8,_0x58fd0d){if(_0x58fd0d){return _0x4db7b8;}return db[_0xc089('0x95')][_0xc089('0x56')](_['merge'](_0x47b8fa['body'],{'read':![],'body':_0x47b8fa[_0xc089('0x57')][_0xc089('0x57')],'OpenchannelAccountId':_0x1b11db['id'],'OpenchannelInteractionId':_0x4db7b8['id'],'UserId':_0x47b8fa[_0xc089('0x58')]['id'],'ContactId':_0x5a22bb['id']}))[_0xc089('0x1e')](function(_0x20ae13){_0x4db7b8['dataValues'][_0xc089('0xb4')]=[];_0x4db7b8[_0xc089('0xb6')][_0xc089('0xb4')][_0xc089('0x93')](_0x20ae13[_0xc089('0xb6')]);return _0x4db7b8;});});}})[_0xc089('0x1e')](respondWithResult(_0x529b11,null))[_0xc089('0x26')](handleError(_0x529b11,null));};
\ No newline at end of file
index 003b7c0..3c33fec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1be1=['OpenchannelAccount','setMaxListeners','update','remove','emit','hook'];(function(_0x31a64a,_0x5fa5b9){var _0x5ccdd3=function(_0x5b01e3){while(--_0x5b01e3){_0x31a64a['push'](_0x31a64a['shift']());}};_0x5ccdd3(++_0x5fa5b9);}(_0x1be1,0x192));var _0x11be=function(_0x4de3dc,_0x305197){_0x4de3dc=_0x4de3dc-0x0;var _0x4f5462=_0x1be1[_0x4de3dc];return _0x4f5462;};'use strict';var EventEmitter=require('events');var OpenchannelAccount=require('../../mysqldb')['db'][_0x11be('0x0')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x11be('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x11be('0x2'),'afterDestroy':_0x11be('0x3')};function emitEvent(_0x200b2a){return function(_0x318d41,_0x504d3a,_0x3ce56d){OpenchannelAccountEvents[_0x11be('0x4')](_0x200b2a+':'+_0x318d41['id'],_0x318d41);OpenchannelAccountEvents[_0x11be('0x4')](_0x200b2a,_0x318d41);_0x3ce56d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount[_0x11be('0x5')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x96cc=['remove','emit','hook','exports','events','OpenchannelAccount','save','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x96cc,0x16c));var _0xc96c=function(_0x1a31e8,_0x5387bc){_0x1a31e8=_0x1a31e8-0x0;var _0x3adc72=_0x96cc[_0x1a31e8];return _0x3adc72;};'use strict';var EventEmitter=require(_0xc96c('0x0'));var OpenchannelAccount=require('../../mysqldb')['db'][_0xc96c('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc96c('0x2'),'afterUpdate':_0xc96c('0x3'),'afterDestroy':_0xc96c('0x4')};function emitEvent(_0x421701){return function(_0x71140d,_0x29b6f1,_0x377e6c){OpenchannelAccountEvents[_0xc96c('0x5')](_0x421701+':'+_0x71140d['id'],_0x71140d);OpenchannelAccountEvents[_0xc96c('0x5')](_0x421701,_0x71140d);_0x377e6c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount[_0xc96c('0x6')](e,emitEvent(event));}}module[_0xc96c('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
index 4af6cd3..6f05bf1 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(_0x39e069,_0x439b9d){var _0x4568f5=function(_0x3c120d){while(--_0x3c120d){_0x39e069['push'](_0x39e069['shift']());}};_0x4568f5(++_0x439b9d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'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(_0x3092dc,_0x2608a4){var _0x1997f9=function(_0x1dcb6e){while(--_0x1dcb6e){_0x3092dc['push'](_0x3092dc['shift']());}};_0x1997f9(++_0x2608a4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'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 96e40b7..452dad9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9e8=['../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','OpenchannelAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x56b274,_0x4215e0){var _0xe7da65=function(_0x4a62f6){while(--_0x4a62f6){_0x56b274['push'](_0x56b274['shift']());}};_0xe7da65(++_0x4215e0);}(_0xe9e8,0x6b));var _0x8e9e=function(_0xf66721,_0x3940ce){_0xf66721=_0xf66721-0x0;var _0xfffa7b=_0xe9e8[_0xf66721];return _0xfffa7b;};'use strict';var _=require(_0x8e9e('0x0'));var util=require(_0x8e9e('0x1'));var moment=require(_0x8e9e('0x2'));var BPromise=require(_0x8e9e('0x3'));var rs=require(_0x8e9e('0x4'));var fs=require('fs');var Redis=require(_0x8e9e('0x5'));var db=require(_0x8e9e('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x8e9e('0x7'))(_0x8e9e('0x8'));var config=require(_0x8e9e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x8e9e('0xa')][_0x8e9e('0xb')]({'port':0x232a});config[_0x8e9e('0xc')]=_[_0x8e9e('0xd')](config['redis'],{'host':_0x8e9e('0xe'),'port':0x18eb});var socket=require(_0x8e9e('0xf'))(new Redis(config[_0x8e9e('0xc')]));require('./openchannelAccount.socket')[_0x8e9e('0x10')](socket);function respondWithRpcPromise(_0x29edcb,_0x449f72,_0x57ffc0){return new BPromise(function(_0xbcfd72,_0x303402){return client[_0x8e9e('0x11')](_0x29edcb,_0x57ffc0)[_0x8e9e('0x12')](function(_0x35f014){logger[_0x8e9e('0x13')](_0x8e9e('0x14'),_0x449f72,'request\x20sent');logger[_0x8e9e('0x15')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x449f72,_0x8e9e('0x16'),JSON[_0x8e9e('0x17')](_0x35f014));if(_0x35f014[_0x8e9e('0x18')]){if(_0x35f014[_0x8e9e('0x18')][_0x8e9e('0x19')]===0x1f4){logger[_0x8e9e('0x18')](_0x8e9e('0x14'),_0x449f72,_0x35f014['error']['message']);return _0x303402(_0x35f014[_0x8e9e('0x18')][_0x8e9e('0x1a')]);}logger['error'](_0x8e9e('0x14'),_0x449f72,_0x35f014[_0x8e9e('0x18')][_0x8e9e('0x1a')]);return _0xbcfd72(_0x35f014[_0x8e9e('0x18')][_0x8e9e('0x1a')]);}else{logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x449f72,_0x8e9e('0x16'));_0xbcfd72(_0x35f014[_0x8e9e('0x1b')][_0x8e9e('0x1a')]);}})[_0x8e9e('0x1c')](function(_0xa079b5){logger[_0x8e9e('0x18')](_0x8e9e('0x14'),_0x449f72,_0xa079b5);_0x303402(_0xa079b5);});});}
\ No newline at end of file
+var _0xd523=['info','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelAccount.socket','register','request','then','OpenchannelAccount,\x20%s,\x20%s','OpenchannelAccount,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message'];(function(_0x5e650a,_0x25f7b0){var _0x424183=function(_0x51453a){while(--_0x51453a){_0x5e650a['push'](_0x5e650a['shift']());}};_0x424183(++_0x25f7b0);}(_0xd523,0x153));var _0x3d52=function(_0x20df32,_0x4a0d06){_0x20df32=_0x20df32-0x0;var _0x159c26=_0xd523[_0x20df32];return _0x159c26;};'use strict';var _=require(_0x3d52('0x0'));var util=require(_0x3d52('0x1'));var moment=require(_0x3d52('0x2'));var BPromise=require(_0x3d52('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3d52('0x4'));var db=require(_0x3d52('0x5'))['db'];var utils=require(_0x3d52('0x6'));var logger=require('../../config/logger')(_0x3d52('0x7'));var config=require(_0x3d52('0x8'));var jayson=require(_0x3d52('0x9'));var client=jayson[_0x3d52('0xa')]['http']({'port':0x232a});config['redis']=_[_0x3d52('0xb')](config[_0x3d52('0xc')],{'host':_0x3d52('0xd'),'port':0x18eb});var socket=require(_0x3d52('0xe'))(new Redis(config[_0x3d52('0xc')]));require(_0x3d52('0xf'))[_0x3d52('0x10')](socket);function respondWithRpcPromise(_0x2d966e,_0x30ee09,_0x4a5a9a){return new BPromise(function(_0x46c2e6,_0x873de6){return client[_0x3d52('0x11')](_0x2d966e,_0x4a5a9a)[_0x3d52('0x12')](function(_0x2675d2){logger['info'](_0x3d52('0x13'),_0x30ee09,'request\x20sent');logger['debug'](_0x3d52('0x14'),_0x30ee09,_0x3d52('0x15'),JSON['stringify'](_0x2675d2));if(_0x2675d2['error']){if(_0x2675d2['error'][_0x3d52('0x16')]===0x1f4){logger[_0x3d52('0x17')](_0x3d52('0x13'),_0x30ee09,_0x2675d2[_0x3d52('0x17')][_0x3d52('0x18')]);return _0x873de6(_0x2675d2[_0x3d52('0x17')][_0x3d52('0x18')]);}logger[_0x3d52('0x17')](_0x3d52('0x13'),_0x30ee09,_0x2675d2[_0x3d52('0x17')][_0x3d52('0x18')]);return _0x46c2e6(_0x2675d2[_0x3d52('0x17')][_0x3d52('0x18')]);}else{logger[_0x3d52('0x19')](_0x3d52('0x13'),_0x30ee09,'request\x20sent');_0x46c2e6(_0x2675d2[_0x3d52('0x1a')][_0x3d52('0x18')]);}})[_0x3d52('0x1b')](function(_0x54a514){logger[_0x3d52('0x17')](_0x3d52('0x13'),_0x30ee09,_0x54a514);_0x873de6(_0x54a514);});});}
\ No newline at end of file
index 04a3758..7e5edd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb76=['remove','update','emit','register','length','openchannelAccount:','./openchannelAccount.events','save'];(function(_0x1030dd,_0x433d1a){var _0x39756d=function(_0x7851e8){while(--_0x7851e8){_0x1030dd['push'](_0x1030dd['shift']());}};_0x39756d(++_0x433d1a);}(_0xdb76,0x1be));var _0x6db7=function(_0x1f6a23,_0x1da1be){_0x1f6a23=_0x1f6a23-0x0;var _0x347ac0=_0xdb76[_0x1f6a23];return _0x347ac0;};'use strict';var OpenchannelAccountEvents=require(_0x6db7('0x0'));var events=[_0x6db7('0x1'),_0x6db7('0x2'),_0x6db7('0x3')];function createListener(_0x27d5fd,_0x4fee62){return function(_0x448591){_0x4fee62[_0x6db7('0x4')](_0x27d5fd,_0x448591);};}function removeListener(_0x3e17d8,_0x40f6ce){return function(){OpenchannelAccountEvents['removeListener'](_0x3e17d8,_0x40f6ce);};}exports[_0x6db7('0x5')]=function(_0x7bba2d){for(var _0x8a8fe2=0x0,_0x417e71=events[_0x6db7('0x6')];_0x8a8fe2<_0x417e71;_0x8a8fe2++){var _0x58f6e4=events[_0x8a8fe2];var _0x1c7f92=createListener(_0x6db7('0x7')+_0x58f6e4,_0x7bba2d);OpenchannelAccountEvents['on'](_0x58f6e4,_0x1c7f92);}};
\ No newline at end of file
+var _0x54ef=['remove','emit','removeListener','length','./openchannelAccount.events','save'];(function(_0x58651d,_0x4349a6){var _0x1bbea3=function(_0x9bacc4){while(--_0x9bacc4){_0x58651d['push'](_0x58651d['shift']());}};_0x1bbea3(++_0x4349a6);}(_0x54ef,0x112));var _0xf54e=function(_0x400f57,_0x53371e){_0x400f57=_0x400f57-0x0;var _0x58ca18=_0x54ef[_0x400f57];return _0x58ca18;};'use strict';var OpenchannelAccountEvents=require(_0xf54e('0x0'));var events=[_0xf54e('0x1'),_0xf54e('0x2'),'update'];function createListener(_0xd936f7,_0x18b7d6){return function(_0x18b1cf){_0x18b7d6[_0xf54e('0x3')](_0xd936f7,_0x18b1cf);};}function removeListener(_0x8b6bb6,_0x431e36){return function(){OpenchannelAccountEvents[_0xf54e('0x4')](_0x8b6bb6,_0x431e36);};}exports['register']=function(_0x55e611){for(var _0x18e84e=0x0,_0x99cf9=events[_0xf54e('0x5')];_0x18e84e<_0x99cf9;_0x18e84e++){var _0x561870=events[_0x18e84e];var _0x27e69b=createListener('openchannelAccount:'+_0x561870,_0x55e611);OpenchannelAccountEvents['on'](_0x561870,_0x27e69b);}};
\ No newline at end of file
index 2ca5f5d..d83f865 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bf6=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelApplication.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','destroy','exports'];(function(_0x533e4e,_0x4eba54){var _0x1f14bb=function(_0x33a485){while(--_0x33a485){_0x533e4e['push'](_0x533e4e['shift']());}};_0x1f14bb(++_0x4eba54);}(_0x0bf6,0x18f));var _0x60bf=function(_0x58340f,_0x54303e){_0x58340f=_0x58340f-0x0;var _0x2e919f=_0x0bf6[_0x58340f];return _0x2e919f;};'use strict';var multer=require(_0x60bf('0x0'));var util=require(_0x60bf('0x1'));var path=require(_0x60bf('0x2'));var timeout=require(_0x60bf('0x3'));var express=require(_0x60bf('0x4'));var router=express[_0x60bf('0x5')]();var fs_extra=require(_0x60bf('0x6'));var auth=require(_0x60bf('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x60bf('0x8'));var controller=require(_0x60bf('0x9'));router[_0x60bf('0xa')]('/',auth['isAuthenticated'](),controller[_0x60bf('0xb')]);router['get'](_0x60bf('0xc'),auth[_0x60bf('0xd')](),controller[_0x60bf('0xe')]);router[_0x60bf('0xf')]('/',auth[_0x60bf('0xd')](),controller[_0x60bf('0x10')]);router[_0x60bf('0x11')](_0x60bf('0xc'),auth['isAuthenticated'](),controller[_0x60bf('0x12')]);router['delete'](_0x60bf('0xc'),auth[_0x60bf('0xd')](),controller[_0x60bf('0x13')]);module[_0x60bf('0x14')]=router;
\ No newline at end of file
+var _0xd165=['isAuthenticated','create','put','update','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','/:id','show'];(function(_0x35461f,_0x299002){var _0x59a5ed=function(_0x38ed01){while(--_0x38ed01){_0x35461f['push'](_0x35461f['shift']());}};_0x59a5ed(++_0x299002);}(_0xd165,0x9f));var _0x5d16=function(_0x596ae5,_0x4321c7){_0x596ae5=_0x596ae5-0x0;var _0x5cc651=_0xd165[_0x596ae5];return _0x5cc651;};'use strict';var multer=require(_0x5d16('0x0'));var util=require(_0x5d16('0x1'));var path=require('path');var timeout=require(_0x5d16('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5d16('0x3'));var auth=require(_0x5d16('0x4'));var interaction=require(_0x5d16('0x5'));var config=require(_0x5d16('0x6'));var controller=require(_0x5d16('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x5d16('0x8')](_0x5d16('0x9'),auth['isAuthenticated'](),controller[_0x5d16('0xa')]);router['post']('/',auth[_0x5d16('0xb')](),controller[_0x5d16('0xc')]);router[_0x5d16('0xd')](_0x5d16('0x9'),auth['isAuthenticated'](),controller[_0x5d16('0xe')]);router['delete'](_0x5d16('0x9'),auth[_0x5d16('0xb')](),controller[_0x5d16('0xf')]);module[_0x5d16('0x10')]=router;
\ No newline at end of file
index 8035efd..502e664 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfeba=['TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xfeba,0x17c));var _0xafeb=function(_0x24aa87,_0x30ae7f){_0x24aa87=_0x24aa87-0x0;var _0x10c1e9=_0xfeba[_0x24aa87];return _0x10c1e9;};'use strict';var Sequelize=require(_0xafeb('0x0'));module[_0xafeb('0x1')]={'priority':{'type':Sequelize[_0xafeb('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xafeb('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xafeb('0x4')]()},'description':{'type':Sequelize[_0xafeb('0x3')]},'interval':{'type':Sequelize[_0xafeb('0x3')],'defaultValue':_0xafeb('0x5')}};
\ No newline at end of file
+var _0xecd8=['sequelize','INTEGER','STRING','noop','TEXT'];(function(_0x34b2c3,_0x961f3a){var _0x2ddb1e=function(_0x2cefad){while(--_0x2cefad){_0x34b2c3['push'](_0x34b2c3['shift']());}};_0x2ddb1e(++_0x961f3a);}(_0xecd8,0x6e));var _0x8ecd=function(_0x40af3d,_0x2c86a5){_0x40af3d=_0x40af3d-0x0;var _0x592293=_0xecd8[_0x40af3d];return _0x592293;};'use strict';var Sequelize=require(_0x8ecd('0x0'));module['exports']={'priority':{'type':Sequelize[_0x8ecd('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x8ecd('0x2')],'allowNull':![],'defaultValue':_0x8ecd('0x3')},'appdata':{'type':Sequelize[_0x8ecd('0x4')]()},'description':{'type':Sequelize[_0x8ecd('0x2')]},'interval':{'type':Sequelize[_0x8ecd('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index dc8df5d..dfdd973 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd560=['offset','undefined','count','limit','status','Content-Range','reject','save','update','then','destroy','stack','name','index','OpenchannelApplication','rawAttributes','map','query','filters','model','attributes','intersection','fields','hasOwnProperty','order','where','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','catch','show','params','keys','length','include','find','create','body','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','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','end','json'];(function(_0x297eea,_0x5060be){var _0x1c42d2=function(_0x3afff4){while(--_0x3afff4){_0x297eea['push'](_0x297eea['shift']());}};_0x1c42d2(++_0x5060be);}(_0xd560,0x1e1));var _0x0d56=function(_0x8b54e7,_0x564a41){_0x8b54e7=_0x8b54e7-0x0;var _0x13d7e7=_0xd560[_0x8b54e7];return _0x13d7e7;};'use strict';var emlformat=require(_0x0d56('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x0d56('0x1'));var rp=require(_0x0d56('0x2'));var moment=require('moment');var BPromise=require(_0x0d56('0x3'));var Mustache=require(_0x0d56('0x4'));var util=require(_0x0d56('0x5'));var path=require(_0x0d56('0x6'));var sox=require(_0x0d56('0x7'));var csv=require(_0x0d56('0x8'));var ejs=require(_0x0d56('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0d56('0xa'));var squel=require(_0x0d56('0xb'));var crypto=require('crypto');var jsforce=require(_0x0d56('0xc'));var deskjs=require(_0x0d56('0xd'));var toCsv=require(_0x0d56('0x8'));var querystring=require(_0x0d56('0xe'));var Papa=require(_0x0d56('0xf'));var Redis=require(_0x0d56('0x10'));var authService=require(_0x0d56('0x11'));var qs=require(_0x0d56('0x12'));var as=require(_0x0d56('0x13'));var hardwareService=require(_0x0d56('0x14'));var logger=require(_0x0d56('0x15'))(_0x0d56('0x16'));var utils=require(_0x0d56('0x17'));var config=require(_0x0d56('0x18'));var licenseUtil=require(_0x0d56('0x19'));var db=require(_0x0d56('0x1a'))['db'];function respondWithStatusCode(_0x3fb228,_0x4056ce){_0x4056ce=_0x4056ce||0xcc;return function(_0x3e1edd){if(_0x3e1edd){return _0x3fb228[_0x0d56('0x1b')](_0x4056ce);}return _0x3fb228['status'](_0x4056ce)[_0x0d56('0x1c')]();};}function respondWithResult(_0x58c124,_0x4f9461){_0x4f9461=_0x4f9461||0xc8;return function(_0x5cbb9d){if(_0x5cbb9d){return _0x58c124['status'](_0x4f9461)[_0x0d56('0x1d')](_0x5cbb9d);}};}function respondWithFilteredResult(_0xd4c433,_0x3346c2){return function(_0x436cb1){if(_0x436cb1){var _0x137977=typeof _0x3346c2[_0x0d56('0x1e')]===_0x0d56('0x1f')&&typeof _0x3346c2['limit']===_0x0d56('0x1f');var _0x4a8ae3=_0x436cb1[_0x0d56('0x20')];var _0x57ace3=_0x137977?0x0:_0x3346c2[_0x0d56('0x1e')];var _0xe54826=_0x137977?_0x436cb1['count']:_0x3346c2[_0x0d56('0x1e')]+_0x3346c2[_0x0d56('0x21')];var _0x5dbe76;if(_0xe54826>=_0x4a8ae3){_0xe54826=_0x4a8ae3;_0x5dbe76=0xc8;}else{_0x5dbe76=0xce;}_0xd4c433[_0x0d56('0x22')](_0x5dbe76);return _0xd4c433['set'](_0x0d56('0x23'),_0x57ace3+'-'+_0xe54826+'/'+_0x4a8ae3)[_0x0d56('0x1d')](_0x436cb1);}return null;};}function patchUpdates(_0x590712){return function(_0x5a60e2){try{jsonpatch['apply'](_0x5a60e2,_0x590712,!![]);}catch(_0x1b15a2){return BPromise[_0x0d56('0x24')](_0x1b15a2);}return _0x5a60e2[_0x0d56('0x25')]();};}function saveUpdates(_0x59cd09,_0x57f271){return function(_0x369873){if(_0x369873){return _0x369873[_0x0d56('0x26')](_0x59cd09)[_0x0d56('0x27')](function(_0x27d6c0){return _0x27d6c0;});}return null;};}function removeEntity(_0x24e30d,_0x4641b8){return function(_0xf2b15a){if(_0xf2b15a){return _0xf2b15a[_0x0d56('0x28')]()[_0x0d56('0x27')](function(){_0x24e30d[_0x0d56('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x42ee7c,_0x182368){return function(_0x55150e){if(!_0x55150e){_0x42ee7c[_0x0d56('0x1b')](0x194);}return _0x55150e;};}function handleError(_0x2a98b6,_0x51202f){_0x51202f=_0x51202f||0x1f4;return function(_0x4e383d){logger['error'](_0x4e383d[_0x0d56('0x29')]);if(_0x4e383d[_0x0d56('0x2a')]){delete _0x4e383d[_0x0d56('0x2a')];}_0x2a98b6['status'](_0x51202f)['send'](_0x4e383d);};}exports[_0x0d56('0x2b')]=function(_0x4c3ba9,_0x729453){var _0x492b60={},_0x51dfca={},_0x38cc8e={'count':0x0,'rows':[]};var _0x551fc1=_['map'](db[_0x0d56('0x2c')][_0x0d56('0x2d')],function(_0x38fc8a){return{'name':_0x38fc8a['fieldName'],'type':_0x38fc8a['type']['key']};});_0x51dfca['model']=_[_0x0d56('0x2e')](_0x551fc1,'name');_0x51dfca['query']=_['keys'](_0x4c3ba9[_0x0d56('0x2f')]);_0x51dfca[_0x0d56('0x30')]=_['intersection'](_0x51dfca[_0x0d56('0x31')],_0x51dfca['query']);_0x492b60[_0x0d56('0x32')]=_[_0x0d56('0x33')](_0x51dfca[_0x0d56('0x31')],qs[_0x0d56('0x34')](_0x4c3ba9['query'][_0x0d56('0x34')]));_0x492b60[_0x0d56('0x32')]=_0x492b60['attributes']['length']?_0x492b60[_0x0d56('0x32')]:_0x51dfca[_0x0d56('0x31')];if(!_0x4c3ba9[_0x0d56('0x2f')][_0x0d56('0x35')]('nolimit')){_0x492b60['limit']=qs[_0x0d56('0x21')](_0x4c3ba9[_0x0d56('0x2f')][_0x0d56('0x21')]);_0x492b60['offset']=qs[_0x0d56('0x1e')](_0x4c3ba9[_0x0d56('0x2f')]['offset']);}_0x492b60[_0x0d56('0x36')]=qs['sort'](_0x4c3ba9['query']['sort']);_0x492b60[_0x0d56('0x37')]=qs[_0x0d56('0x30')](_[_0x0d56('0x38')](_0x4c3ba9[_0x0d56('0x2f')],_0x51dfca[_0x0d56('0x30')]),_0x551fc1);if(_0x4c3ba9[_0x0d56('0x2f')][_0x0d56('0x39')]){_0x492b60[_0x0d56('0x37')]=_[_0x0d56('0x3a')](_0x492b60[_0x0d56('0x37')],{'$or':_[_0x0d56('0x2e')](_0x551fc1,function(_0x2b7573){if(_0x2b7573[_0x0d56('0x3b')]!==_0x0d56('0x3c')){var _0x123041={};_0x123041[_0x2b7573[_0x0d56('0x2a')]]={'$like':'%'+_0x4c3ba9[_0x0d56('0x2f')]['filter']+'%'};return _0x123041;}})});}_0x492b60=_[_0x0d56('0x3a')]({},_0x492b60,_0x4c3ba9[_0x0d56('0x3d')]);var _0x3ca89b={'where':_0x492b60['where']};return db[_0x0d56('0x2c')][_0x0d56('0x20')](_0x3ca89b)['then'](function(_0x38325f){_0x38cc8e['count']=_0x38325f;if(_0x4c3ba9[_0x0d56('0x2f')][_0x0d56('0x3e')]){_0x492b60['include']=[{'all':!![]}];}return db['OpenchannelApplication'][_0x0d56('0x3f')](_0x492b60);})[_0x0d56('0x27')](function(_0x5f50f3){_0x38cc8e['rows']=_0x5f50f3;return _0x38cc8e;})['then'](respondWithFilteredResult(_0x729453,_0x492b60))[_0x0d56('0x40')](handleError(_0x729453,null));};exports[_0x0d56('0x41')]=function(_0xfc3d05,_0x3af327){var _0x2a85a5={'raw':!![],'where':{'id':_0xfc3d05[_0x0d56('0x42')]['id']}},_0x277a9d={};_0x277a9d[_0x0d56('0x31')]=_['keys'](db[_0x0d56('0x2c')]['rawAttributes']);_0x277a9d[_0x0d56('0x2f')]=_[_0x0d56('0x43')](_0xfc3d05[_0x0d56('0x2f')]);_0x277a9d['filters']=_[_0x0d56('0x33')](_0x277a9d['model'],_0x277a9d['query']);_0x2a85a5[_0x0d56('0x32')]=_['intersection'](_0x277a9d['model'],qs[_0x0d56('0x34')](_0xfc3d05[_0x0d56('0x2f')]['fields']));_0x2a85a5['attributes']=_0x2a85a5[_0x0d56('0x32')][_0x0d56('0x44')]?_0x2a85a5['attributes']:_0x277a9d[_0x0d56('0x31')];if(_0xfc3d05[_0x0d56('0x2f')][_0x0d56('0x3e')]){_0x2a85a5[_0x0d56('0x45')]=[{'all':!![]}];}_0x2a85a5=_[_0x0d56('0x3a')]({},_0x2a85a5,_0xfc3d05[_0x0d56('0x3d')]);return db['OpenchannelApplication'][_0x0d56('0x46')](_0x2a85a5)[_0x0d56('0x27')](handleEntityNotFound(_0x3af327,null))['then'](respondWithResult(_0x3af327,null))[_0x0d56('0x40')](handleError(_0x3af327,null));};exports[_0x0d56('0x47')]=function(_0x716ca7,_0x510810){return db[_0x0d56('0x2c')]['create'](_0x716ca7[_0x0d56('0x48')],{})[_0x0d56('0x27')](respondWithResult(_0x510810,0xc9))[_0x0d56('0x40')](handleError(_0x510810,null));};exports[_0x0d56('0x26')]=function(_0x348920,_0x522fc4){if(_0x348920[_0x0d56('0x48')]['id']){delete _0x348920[_0x0d56('0x48')]['id'];}return db[_0x0d56('0x2c')][_0x0d56('0x46')]({'where':{'id':_0x348920[_0x0d56('0x42')]['id']}})[_0x0d56('0x27')](handleEntityNotFound(_0x522fc4,null))[_0x0d56('0x27')](saveUpdates(_0x348920[_0x0d56('0x48')],null))[_0x0d56('0x27')](respondWithResult(_0x522fc4,null))[_0x0d56('0x40')](handleError(_0x522fc4,null));};exports[_0x0d56('0x28')]=function(_0x1e44a3,_0x22adf5){return db['OpenchannelApplication'][_0x0d56('0x46')]({'where':{'id':_0x1e44a3[_0x0d56('0x42')]['id']}})[_0x0d56('0x27')](handleEntityNotFound(_0x22adf5,null))[_0x0d56('0x27')](removeEntity(_0x22adf5,null))[_0x0d56('0x40')](handleError(_0x22adf5,null));};
\ No newline at end of file
+var _0xd4f0=['options','includeAll','include','findAll','catch','show','params','find','create','body','destroy','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','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','sendStatus','end','status','json','undefined','limit','count','offset','Content-Range','reject','update','then','stack','name','map','OpenchannelApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL'];(function(_0x339f14,_0x26ad96){var _0xdb9bd3=function(_0xa21d20){while(--_0xa21d20){_0x339f14['push'](_0x339f14['shift']());}};_0xdb9bd3(++_0x26ad96);}(_0xd4f0,0x178));var _0x0d4f=function(_0x2fbd0e,_0x3460a9){_0x2fbd0e=_0x2fbd0e-0x0;var _0x481c9f=_0xd4f0[_0x2fbd0e];return _0x481c9f;};'use strict';var emlformat=require(_0x0d4f('0x0'));var rimraf=require(_0x0d4f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0d4f('0x2'));var moment=require(_0x0d4f('0x3'));var BPromise=require(_0x0d4f('0x4'));var Mustache=require(_0x0d4f('0x5'));var util=require(_0x0d4f('0x6'));var path=require(_0x0d4f('0x7'));var sox=require(_0x0d4f('0x8'));var csv=require(_0x0d4f('0x9'));var ejs=require(_0x0d4f('0xa'));var fs=require('fs');var fs_extra=require(_0x0d4f('0xb'));var _=require(_0x0d4f('0xc'));var squel=require('squel');var crypto=require(_0x0d4f('0xd'));var jsforce=require(_0x0d4f('0xe'));var deskjs=require(_0x0d4f('0xf'));var toCsv=require(_0x0d4f('0x9'));var querystring=require(_0x0d4f('0x10'));var Papa=require(_0x0d4f('0x11'));var Redis=require(_0x0d4f('0x12'));var authService=require(_0x0d4f('0x13'));var qs=require(_0x0d4f('0x14'));var as=require(_0x0d4f('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0d4f('0x16'))('api');var utils=require(_0x0d4f('0x17'));var config=require(_0x0d4f('0x18'));var licenseUtil=require(_0x0d4f('0x19'));var db=require(_0x0d4f('0x1a'))['db'];function respondWithStatusCode(_0x165e3e,_0x489f75){_0x489f75=_0x489f75||0xcc;return function(_0x32672d){if(_0x32672d){return _0x165e3e[_0x0d4f('0x1b')](_0x489f75);}return _0x165e3e['status'](_0x489f75)[_0x0d4f('0x1c')]();};}function respondWithResult(_0x49635e,_0x12071c){_0x12071c=_0x12071c||0xc8;return function(_0x2a984e){if(_0x2a984e){return _0x49635e[_0x0d4f('0x1d')](_0x12071c)[_0x0d4f('0x1e')](_0x2a984e);}};}function respondWithFilteredResult(_0x454eb9,_0x564f80){return function(_0x12378d){if(_0x12378d){var _0x41d5f4=typeof _0x564f80['offset']===_0x0d4f('0x1f')&&typeof _0x564f80[_0x0d4f('0x20')]===_0x0d4f('0x1f');var _0x3f73d1=_0x12378d[_0x0d4f('0x21')];var _0x102dbc=_0x41d5f4?0x0:_0x564f80[_0x0d4f('0x22')];var _0x22b0b7=_0x41d5f4?_0x12378d['count']:_0x564f80['offset']+_0x564f80[_0x0d4f('0x20')];var _0x35ad57;if(_0x22b0b7>=_0x3f73d1){_0x22b0b7=_0x3f73d1;_0x35ad57=0xc8;}else{_0x35ad57=0xce;}_0x454eb9[_0x0d4f('0x1d')](_0x35ad57);return _0x454eb9['set'](_0x0d4f('0x23'),_0x102dbc+'-'+_0x22b0b7+'/'+_0x3f73d1)[_0x0d4f('0x1e')](_0x12378d);}return null;};}function patchUpdates(_0x4b2563){return function(_0x2230f0){try{jsonpatch['apply'](_0x2230f0,_0x4b2563,!![]);}catch(_0x2700ec){return BPromise[_0x0d4f('0x24')](_0x2700ec);}return _0x2230f0['save']();};}function saveUpdates(_0x5482a4,_0x4268ce){return function(_0x458159){if(_0x458159){return _0x458159[_0x0d4f('0x25')](_0x5482a4)['then'](function(_0x24ac5d){return _0x24ac5d;});}return null;};}function removeEntity(_0x39588b,_0x33de36){return function(_0x397bce){if(_0x397bce){return _0x397bce['destroy']()[_0x0d4f('0x26')](function(){_0x39588b[_0x0d4f('0x1d')](0xcc)[_0x0d4f('0x1c')]();});}};}function handleEntityNotFound(_0x68af0c,_0x418571){return function(_0x18ff68){if(!_0x18ff68){_0x68af0c[_0x0d4f('0x1b')](0x194);}return _0x18ff68;};}function handleError(_0x2c8cd7,_0xb5dc59){_0xb5dc59=_0xb5dc59||0x1f4;return function(_0x2ed870){logger['error'](_0x2ed870[_0x0d4f('0x27')]);if(_0x2ed870[_0x0d4f('0x28')]){delete _0x2ed870[_0x0d4f('0x28')];}_0x2c8cd7[_0x0d4f('0x1d')](_0xb5dc59)['send'](_0x2ed870);};}exports['index']=function(_0x327bec,_0x51989e){var _0x239841={},_0x131399={},_0x55c145={'count':0x0,'rows':[]};var _0xd8436a=_[_0x0d4f('0x29')](db[_0x0d4f('0x2a')][_0x0d4f('0x2b')],function(_0x1d0842){return{'name':_0x1d0842[_0x0d4f('0x2c')],'type':_0x1d0842[_0x0d4f('0x2d')][_0x0d4f('0x2e')]};});_0x131399[_0x0d4f('0x2f')]=_['map'](_0xd8436a,_0x0d4f('0x28'));_0x131399[_0x0d4f('0x30')]=_[_0x0d4f('0x31')](_0x327bec[_0x0d4f('0x30')]);_0x131399[_0x0d4f('0x32')]=_[_0x0d4f('0x33')](_0x131399[_0x0d4f('0x2f')],_0x131399[_0x0d4f('0x30')]);_0x239841[_0x0d4f('0x34')]=_[_0x0d4f('0x33')](_0x131399['model'],qs[_0x0d4f('0x35')](_0x327bec[_0x0d4f('0x30')][_0x0d4f('0x35')]));_0x239841[_0x0d4f('0x34')]=_0x239841[_0x0d4f('0x34')][_0x0d4f('0x36')]?_0x239841[_0x0d4f('0x34')]:_0x131399[_0x0d4f('0x2f')];if(!_0x327bec[_0x0d4f('0x30')][_0x0d4f('0x37')](_0x0d4f('0x38'))){_0x239841[_0x0d4f('0x20')]=qs[_0x0d4f('0x20')](_0x327bec[_0x0d4f('0x30')][_0x0d4f('0x20')]);_0x239841[_0x0d4f('0x22')]=qs['offset'](_0x327bec['query'][_0x0d4f('0x22')]);}_0x239841[_0x0d4f('0x39')]=qs[_0x0d4f('0x3a')](_0x327bec['query'][_0x0d4f('0x3a')]);_0x239841['where']=qs[_0x0d4f('0x32')](_['pick'](_0x327bec[_0x0d4f('0x30')],_0x131399['filters']),_0xd8436a);if(_0x327bec[_0x0d4f('0x30')]['filter']){_0x239841[_0x0d4f('0x3b')]=_[_0x0d4f('0x3c')](_0x239841['where'],{'$or':_['map'](_0xd8436a,function(_0x49b279){if(_0x49b279[_0x0d4f('0x2d')]!==_0x0d4f('0x3d')){var _0x38aa27={};_0x38aa27[_0x49b279['name']]={'$like':'%'+_0x327bec[_0x0d4f('0x30')]['filter']+'%'};return _0x38aa27;}})});}_0x239841=_[_0x0d4f('0x3c')]({},_0x239841,_0x327bec[_0x0d4f('0x3e')]);var _0x1922ca={'where':_0x239841[_0x0d4f('0x3b')]};return db[_0x0d4f('0x2a')][_0x0d4f('0x21')](_0x1922ca)[_0x0d4f('0x26')](function(_0x218a63){_0x55c145['count']=_0x218a63;if(_0x327bec[_0x0d4f('0x30')][_0x0d4f('0x3f')]){_0x239841[_0x0d4f('0x40')]=[{'all':!![]}];}return db[_0x0d4f('0x2a')][_0x0d4f('0x41')](_0x239841);})['then'](function(_0x2feac7){_0x55c145['rows']=_0x2feac7;return _0x55c145;})[_0x0d4f('0x26')](respondWithFilteredResult(_0x51989e,_0x239841))[_0x0d4f('0x42')](handleError(_0x51989e,null));};exports[_0x0d4f('0x43')]=function(_0x587321,_0x58cb5a){var _0x2cecbc={'raw':!![],'where':{'id':_0x587321[_0x0d4f('0x44')]['id']}},_0x13cabe={};_0x13cabe['model']=_[_0x0d4f('0x31')](db[_0x0d4f('0x2a')][_0x0d4f('0x2b')]);_0x13cabe['query']=_[_0x0d4f('0x31')](_0x587321[_0x0d4f('0x30')]);_0x13cabe['filters']=_['intersection'](_0x13cabe[_0x0d4f('0x2f')],_0x13cabe[_0x0d4f('0x30')]);_0x2cecbc[_0x0d4f('0x34')]=_[_0x0d4f('0x33')](_0x13cabe[_0x0d4f('0x2f')],qs[_0x0d4f('0x35')](_0x587321['query'][_0x0d4f('0x35')]));_0x2cecbc[_0x0d4f('0x34')]=_0x2cecbc[_0x0d4f('0x34')][_0x0d4f('0x36')]?_0x2cecbc[_0x0d4f('0x34')]:_0x13cabe['model'];if(_0x587321[_0x0d4f('0x30')]['includeAll']){_0x2cecbc[_0x0d4f('0x40')]=[{'all':!![]}];}_0x2cecbc=_[_0x0d4f('0x3c')]({},_0x2cecbc,_0x587321['options']);return db['OpenchannelApplication'][_0x0d4f('0x45')](_0x2cecbc)[_0x0d4f('0x26')](handleEntityNotFound(_0x58cb5a,null))[_0x0d4f('0x26')](respondWithResult(_0x58cb5a,null))[_0x0d4f('0x42')](handleError(_0x58cb5a,null));};exports[_0x0d4f('0x46')]=function(_0x3365fd,_0x3d08fb){return db['OpenchannelApplication'][_0x0d4f('0x46')](_0x3365fd[_0x0d4f('0x47')],{})[_0x0d4f('0x26')](respondWithResult(_0x3d08fb,0xc9))[_0x0d4f('0x42')](handleError(_0x3d08fb,null));};exports[_0x0d4f('0x25')]=function(_0x3dbff8,_0x51c8ad){if(_0x3dbff8[_0x0d4f('0x47')]['id']){delete _0x3dbff8[_0x0d4f('0x47')]['id'];}return db[_0x0d4f('0x2a')][_0x0d4f('0x45')]({'where':{'id':_0x3dbff8[_0x0d4f('0x44')]['id']}})[_0x0d4f('0x26')](handleEntityNotFound(_0x51c8ad,null))['then'](saveUpdates(_0x3dbff8['body'],null))[_0x0d4f('0x26')](respondWithResult(_0x51c8ad,null))[_0x0d4f('0x42')](handleError(_0x51c8ad,null));};exports[_0x0d4f('0x48')]=function(_0x11b8fd,_0x1d7487){return db[_0x0d4f('0x2a')]['find']({'where':{'id':_0x11b8fd['params']['id']}})[_0x0d4f('0x26')](handleEntityNotFound(_0x1d7487,null))['then'](removeEntity(_0x1d7487,null))[_0x0d4f('0x42')](handleError(_0x1d7487,null));};
\ No newline at end of file
index cde727a..659a115 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02e9=['request-promise','path','rimraf','../../config/environment','./openchannelApplication.attributes','OpenchannelApplication','openchannel_applications','utf8mb4_unicode_ci','../../config/logger'];(function(_0x5915d4,_0x5da3e2){var _0x52f9df=function(_0x327b4e){while(--_0x327b4e){_0x5915d4['push'](_0x5915d4['shift']());}};_0x52f9df(++_0x5da3e2);}(_0x02e9,0x13a));var _0x902e=function(_0x2ec6a5,_0x5c6d63){_0x2ec6a5=_0x2ec6a5-0x0;var _0x2d5396=_0x02e9[_0x2ec6a5];return _0x2d5396;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x902e('0x0'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x902e('0x1'));var fs=require('fs');var path=require(_0x902e('0x2'));var rimraf=require(_0x902e('0x3'));var config=require(_0x902e('0x4'));var attributes=require(_0x902e('0x5'));module['exports']=function(_0x12f8d3,_0x185c38){return _0x12f8d3['define'](_0x902e('0x6'),attributes,{'tableName':_0x902e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x902e('0x8')});};
\ No newline at end of file
+var _0xed1f=['util','../../config/logger','moment','path','rimraf','../../config/environment','./openchannelApplication.attributes','exports','define','OpenchannelApplication','openchannel_applications','utf8mb4','lodash'];(function(_0x38bd6e,_0x9d3bd8){var _0x3378ef=function(_0x2a28fd){while(--_0x2a28fd){_0x38bd6e['push'](_0x38bd6e['shift']());}};_0x3378ef(++_0x9d3bd8);}(_0xed1f,0x185));var _0xfed1=function(_0x26462c,_0xd20a35){_0x26462c=_0x26462c-0x0;var _0x509a42=_0xed1f[_0x26462c];return _0x509a42;};'use strict';var _=require(_0xfed1('0x0'));var util=require(_0xfed1('0x1'));var logger=require(_0xfed1('0x2'))('api');var moment=require(_0xfed1('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xfed1('0x4'));var rimraf=require(_0xfed1('0x5'));var config=require(_0xfed1('0x6'));var attributes=require(_0xfed1('0x7'));module[_0xfed1('0x8')]=function(_0x4e81ed,_0x1c83f2){return _0x4e81ed[_0xfed1('0x9')](_0xfed1('0xa'),attributes,{'tableName':_0xfed1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xfed1('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index c34a34c..1d21320 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fcb=['../../config/logger','rpc','http','then','info','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','OpenchannelApplication,\x20%s,\x20%s','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','body','options','raw','where','attributes','limit','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x35231e,_0x26c7cd){var _0x2c2d00=function(_0x7d017c){while(--_0x7d017c){_0x35231e['push'](_0x35231e['shift']());}};_0x2c2d00(++_0x26c7cd);}(_0x0fcb,0x18f));var _0xb0fc=function(_0x1b80f3,_0x2ed6f0){_0x1b80f3=_0x1b80f3-0x0;var _0x134010=_0x0fcb[_0x1b80f3];return _0x134010;};'use strict';var _=require(_0xb0fc('0x0'));var util=require('util');var moment=require(_0xb0fc('0x1'));var BPromise=require(_0xb0fc('0x2'));var rs=require(_0xb0fc('0x3'));var fs=require('fs');var Redis=require(_0xb0fc('0x4'));var db=require(_0xb0fc('0x5'))['db'];var utils=require(_0xb0fc('0x6'));var logger=require(_0xb0fc('0x7'))(_0xb0fc('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xb0fc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x23111b,_0x1c7fec,_0x3d994d){return new BPromise(function(_0x3b6c06,_0x3ff126){return client['request'](_0x23111b,_0x3d994d)[_0xb0fc('0xa')](function(_0x2cb7cc){logger[_0xb0fc('0xb')]('OpenchannelApplication,\x20%s,\x20%s',_0x1c7fec,_0xb0fc('0xc'));logger[_0xb0fc('0xd')](_0xb0fc('0xe'),_0x1c7fec,'request\x20sent',JSON[_0xb0fc('0xf')](_0x2cb7cc));if(_0x2cb7cc[_0xb0fc('0x10')]){if(_0x2cb7cc['error']['code']===0x1f4){logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0x1c7fec,_0x2cb7cc[_0xb0fc('0x10')]['message']);return _0x3ff126(_0x2cb7cc[_0xb0fc('0x10')][_0xb0fc('0x11')]);}logger[_0xb0fc('0x10')](_0xb0fc('0x12'),_0x1c7fec,_0x2cb7cc['error'][_0xb0fc('0x11')]);return _0x3b6c06(_0x2cb7cc[_0xb0fc('0x10')][_0xb0fc('0x11')]);}else{logger['info']('OpenchannelApplication,\x20%s,\x20%s',_0x1c7fec,'request\x20sent');_0x3b6c06(_0x2cb7cc['result'][_0xb0fc('0x11')]);}})[_0xb0fc('0x13')](function(_0x6159c1){logger[_0xb0fc('0x10')](_0xb0fc('0x12'),_0x1c7fec,_0x6159c1);_0x3ff126(_0x6159c1);});});}exports[_0xb0fc('0x14')]=function(_0x39d560){var _0x315c7f=this;return new Promise(function(_0x3ae9de,_0x15f729){return db[_0xb0fc('0x15')][_0xb0fc('0x16')](_0x39d560[_0xb0fc('0x17')],{'raw':_0x39d560[_0xb0fc('0x18')]?_0x39d560[_0xb0fc('0x18')][_0xb0fc('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x39d560[_0xb0fc('0x18')]?_0x39d560[_0xb0fc('0x18')][_0xb0fc('0x1a')]||null:null,'attributes':_0x39d560[_0xb0fc('0x18')]?_0x39d560[_0xb0fc('0x18')][_0xb0fc('0x1b')]||null:null,'limit':_0x39d560[_0xb0fc('0x18')]?_0x39d560[_0xb0fc('0x18')][_0xb0fc('0x1c')]||null:null})[_0xb0fc('0xa')](function(_0x40215d){logger[_0xb0fc('0xb')](_0xb0fc('0x14'),_0x39d560);logger[_0xb0fc('0xd')](_0xb0fc('0x14'),_0x39d560,JSON['stringify'](_0x40215d));_0x3ae9de(_0x40215d);})[_0xb0fc('0x13')](function(_0x14a033){logger[_0xb0fc('0x10')]('UpdateOpenchannelApplication',_0x14a033[_0xb0fc('0x11')],_0x39d560);_0x15f729(_0x315c7f[_0xb0fc('0x10')](0x1f4,_0x14a033[_0xb0fc('0x11')]));});});};
\ No newline at end of file
+var _0x5cb4=['../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelApplication,\x20%s,\x20%s','message','result','OpenchannelApplication','update','body','options','raw','where','attributes','limit','UpdateOpenchannelApplication','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x13d15e,_0x2bc13e){var _0x5e2cad=function(_0x55f14f){while(--_0x55f14f){_0x13d15e['push'](_0x13d15e['shift']());}};_0x5e2cad(++_0x2bc13e);}(_0x5cb4,0x19a));var _0x45cb=function(_0x1a27df,_0x11891c){_0x1a27df=_0x1a27df-0x0;var _0x194543=_0x5cb4[_0x1a27df];return _0x194543;};'use strict';var _=require(_0x45cb('0x0'));var util=require(_0x45cb('0x1'));var moment=require(_0x45cb('0x2'));var BPromise=require('bluebird');var rs=require(_0x45cb('0x3'));var fs=require('fs');var Redis=require(_0x45cb('0x4'));var db=require(_0x45cb('0x5'))['db'];var utils=require(_0x45cb('0x6'));var logger=require('../../config/logger')(_0x45cb('0x7'));var config=require(_0x45cb('0x8'));var jayson=require(_0x45cb('0x9'));var client=jayson[_0x45cb('0xa')][_0x45cb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4ab7ce,_0x527efd,_0x292bce){return new BPromise(function(_0x6b3a1,_0x53060c){return client['request'](_0x4ab7ce,_0x292bce)[_0x45cb('0xc')](function(_0x399809){logger[_0x45cb('0xd')]('OpenchannelApplication,\x20%s,\x20%s',_0x527efd,_0x45cb('0xe'));logger[_0x45cb('0xf')](_0x45cb('0x10'),_0x527efd,_0x45cb('0xe'),JSON[_0x45cb('0x11')](_0x399809));if(_0x399809['error']){if(_0x399809[_0x45cb('0x12')]['code']===0x1f4){logger['error'](_0x45cb('0x13'),_0x527efd,_0x399809[_0x45cb('0x12')][_0x45cb('0x14')]);return _0x53060c(_0x399809[_0x45cb('0x12')][_0x45cb('0x14')]);}logger[_0x45cb('0x12')](_0x45cb('0x13'),_0x527efd,_0x399809['error']['message']);return _0x6b3a1(_0x399809[_0x45cb('0x12')][_0x45cb('0x14')]);}else{logger[_0x45cb('0xd')](_0x45cb('0x13'),_0x527efd,_0x45cb('0xe'));_0x6b3a1(_0x399809[_0x45cb('0x15')]['message']);}})['catch'](function(_0x22e752){logger[_0x45cb('0x12')](_0x45cb('0x13'),_0x527efd,_0x22e752);_0x53060c(_0x22e752);});});}exports['UpdateOpenchannelApplication']=function(_0x3527a9){var _0xa8842e=this;return new Promise(function(_0x399433,_0x287ca1){return db[_0x45cb('0x16')][_0x45cb('0x17')](_0x3527a9[_0x45cb('0x18')],{'raw':_0x3527a9[_0x45cb('0x19')]?_0x3527a9[_0x45cb('0x19')][_0x45cb('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3527a9[_0x45cb('0x19')]?_0x3527a9[_0x45cb('0x19')][_0x45cb('0x1b')]||null:null,'attributes':_0x3527a9['options']?_0x3527a9['options'][_0x45cb('0x1c')]||null:null,'limit':_0x3527a9[_0x45cb('0x19')]?_0x3527a9['options'][_0x45cb('0x1d')]||null:null})[_0x45cb('0xc')](function(_0x43b872){logger[_0x45cb('0xd')](_0x45cb('0x1e'),_0x3527a9);logger['debug']('UpdateOpenchannelApplication',_0x3527a9,JSON[_0x45cb('0x11')](_0x43b872));_0x399433(_0x43b872);})[_0x45cb('0x1f')](function(_0x239fa5){logger[_0x45cb('0x12')](_0x45cb('0x1e'),_0x239fa5[_0x45cb('0x14')],_0x3527a9);_0x287ca1(_0xa8842e[_0x45cb('0x12')](0x1f4,_0x239fa5['message']));});});};
\ No newline at end of file
index 3aee75c..642751f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ffd=['update','delete','openchannelinteraction:destroy','destroy','removeTags','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','create','post','addMessage','/:id/tags','tracked','openchannel','openchannelinteraction:update'];(function(_0x11f7b0,_0x193982){var _0x3988c7=function(_0x37cb47){while(--_0x37cb47){_0x11f7b0['push'](_0x11f7b0['shift']());}};_0x3988c7(++_0x193982);}(_0x8ffd,0x132));var _0xd8ff=function(_0x38af48,_0x400460){_0x38af48=_0x38af48-0x0;var _0x445384=_0x8ffd[_0x38af48];return _0x445384;};'use strict';var multer=require(_0xd8ff('0x0'));var util=require('util');var path=require(_0xd8ff('0x1'));var timeout=require('connect-timeout');var express=require(_0xd8ff('0x2'));var router=express[_0xd8ff('0x3')]();var fs_extra=require(_0xd8ff('0x4'));var auth=require(_0xd8ff('0x5'));var interaction=require(_0xd8ff('0x6'));var config=require(_0xd8ff('0x7'));var controller=require('./openchannelInteraction.controller');router[_0xd8ff('0x8')]('/',auth[_0xd8ff('0x9')](),controller['index']);router[_0xd8ff('0x8')](_0xd8ff('0xa'),auth[_0xd8ff('0x9')](),controller[_0xd8ff('0xb')]);router[_0xd8ff('0x8')](_0xd8ff('0xc'),auth[_0xd8ff('0x9')](),controller[_0xd8ff('0xd')]);router[_0xd8ff('0x8')](_0xd8ff('0xe'),auth['isAuthenticated'](),controller[_0xd8ff('0xf')]);router[_0xd8ff('0x8')](_0xd8ff('0x10'),auth[_0xd8ff('0x9')](),controller['download']);router['post']('/',auth[_0xd8ff('0x9')](),controller[_0xd8ff('0x11')]);router[_0xd8ff('0x12')](_0xd8ff('0xe'),auth['isAuthenticated'](),controller[_0xd8ff('0x13')]);router[_0xd8ff('0x12')](_0xd8ff('0x14'),auth[_0xd8ff('0x9')](),interaction[_0xd8ff('0x15')](_0xd8ff('0x16'),'openchannelinteraction:addtags'),controller['addTags']);router['put']('/:id',auth['isAuthenticated'](),interaction[_0xd8ff('0x15')](_0xd8ff('0x16'),_0xd8ff('0x17')),controller[_0xd8ff('0x18')]);router[_0xd8ff('0x19')](_0xd8ff('0xc'),auth[_0xd8ff('0x9')](),interaction[_0xd8ff('0x15')](_0xd8ff('0x16'),_0xd8ff('0x1a')),controller[_0xd8ff('0x1b')]);router[_0xd8ff('0x19')]('/:id/tags',auth[_0xd8ff('0x9')](),controller[_0xd8ff('0x1c')]);module[_0xd8ff('0x1d')]=router;
\ No newline at end of file
+var _0x7697=['fs-extra','../../components/auth/service','get','/describe','describe','isAuthenticated','show','/:id/messages','post','create','addMessage','/:id/tags','openchannel','openchannelinteraction:addtags','put','/:id','openchannelinteraction:update','delete','tracked','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x40ce18,_0x1def7e){var _0x79985e=function(_0x42dddc){while(--_0x42dddc){_0x40ce18['push'](_0x40ce18['shift']());}};_0x79985e(++_0x1def7e);}(_0x7697,0x182));var _0x7769=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0x7697[_0x40220a];return _0x3903cc;};'use strict';var multer=require(_0x7769('0x0'));var util=require(_0x7769('0x1'));var path=require(_0x7769('0x2'));var timeout=require(_0x7769('0x3'));var express=require(_0x7769('0x4'));var router=express[_0x7769('0x5')]();var fs_extra=require(_0x7769('0x6'));var auth=require(_0x7769('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./openchannelInteraction.controller');router[_0x7769('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7769('0x8')](_0x7769('0x9'),auth['isAuthenticated'](),controller[_0x7769('0xa')]);router[_0x7769('0x8')]('/:id',auth[_0x7769('0xb')](),controller[_0x7769('0xc')]);router['get'](_0x7769('0xd'),auth[_0x7769('0xb')](),controller['getMessages']);router[_0x7769('0x8')]('/:id/download',auth['isAuthenticated'](),controller['download']);router[_0x7769('0xe')]('/',auth['isAuthenticated'](),controller[_0x7769('0xf')]);router[_0x7769('0xe')](_0x7769('0xd'),auth[_0x7769('0xb')](),controller[_0x7769('0x10')]);router['post'](_0x7769('0x11'),auth[_0x7769('0xb')](),interaction['tracked'](_0x7769('0x12'),_0x7769('0x13')),controller['addTags']);router[_0x7769('0x14')](_0x7769('0x15'),auth[_0x7769('0xb')](),interaction['tracked'](_0x7769('0x12'),_0x7769('0x16')),controller['update']);router[_0x7769('0x17')](_0x7769('0x15'),auth[_0x7769('0xb')](),interaction[_0x7769('0x18')](_0x7769('0x12'),'openchannelinteraction:destroy'),controller[_0x7769('0x19')]);router[_0x7769('0x17')](_0x7769('0x11'),auth['isAuthenticated'](),controller[_0x7769('0x1a')]);module[_0x7769('0x1b')]=router;
\ No newline at end of file
index 465aaa6..5582618 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a93=['exports','DATE','STRING','ENUM','out','BOOLEAN'];(function(_0x40b330,_0x42458b){var _0x27ae9a=function(_0xfeece7){while(--_0xfeece7){_0x40b330['push'](_0x40b330['shift']());}};_0x27ae9a(++_0x42458b);}(_0x5a93,0xf6));var _0x35a9=function(_0x444a94,_0x1ac1a7){_0x444a94=_0x444a94-0x0;var _0x46bb8b=_0x5a93[_0x444a94];return _0x46bb8b;};'use strict';var Sequelize=require('sequelize');module[_0x35a9('0x0')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x35a9('0x1')]},'disposition':{'type':Sequelize[_0x35a9('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x35a9('0x2')]},'read1stAt':{'type':Sequelize[_0x35a9('0x1')]},'threadId':{'type':Sequelize[_0x35a9('0x2')]},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0x35a9('0x1')]},'lastMsgDirection':{'type':Sequelize[_0x35a9('0x3')]('in',_0x35a9('0x4')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x35a9('0x2')]},'autoreplyExecuted':{'type':Sequelize[_0x35a9('0x5')],'defaultValue':![]}};
\ No newline at end of file
+var _0xb2ff=['STRING','ENUM','BOOLEAN','sequelize','exports','DATE'];(function(_0x50e40b,_0x338d17){var _0x2608b7=function(_0x4ded5e){while(--_0x4ded5e){_0x50e40b['push'](_0x50e40b['shift']());}};_0x2608b7(++_0x338d17);}(_0xb2ff,0x123));var _0xfb2f=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xb2ff[_0x3bf83f];return _0x22c4a9;};'use strict';var Sequelize=require(_0xfb2f('0x0'));module[_0xfb2f('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xfb2f('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xfb2f('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0xfb2f('0x3')]},'externalUrl':{'type':Sequelize[_0xfb2f('0x3')]},'lastMsgAt':{'type':Sequelize[_0xfb2f('0x2')]},'lastMsgDirection':{'type':Sequelize[_0xfb2f('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize[_0xfb2f('0x5')],'defaultValue':![]}};
\ No newline at end of file
index d0010cb..7f72804 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9543=['a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','length','find','unreadMessages','having','`\x20=\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','value','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','UserId','some','compact','isEmpty','i.OpenchannelAccountId\x20IN\x20?','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.id\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','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','OpenchannelAccountId','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','sequelize','toString','keyBy','a.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.*','c.firstName','Contact.firstName','Contact.lastName','Contact.email','c.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','show','params','includeAll','include','merge','options','create','body','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','setTags','spread','color','openchannelInteractionTags:save','removeTags','download','unix','join','root','server','tmp','files','attachments','transcript-%d-%s.zip','CmContact','lastName','Attachment','direction','OpenchannelAccount','Account','Owner','get','mkdirSync','Openchannel','N.A.','closed','closedAt','disposition','Public','Messages','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','firstName','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','update','then','destroy','name','send','Users','map','fullname','TagIds','Tags','split','push','catch','OpenchannelInteraction','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','select','field','from','tools_tags','u.id','u.fullname','ui.OpenchannelInteractionId','user_has_openchannel_interactions','left_join','u.id\x20=\x20ui.UserId','openchannel_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','openchannel_accounts'];(function(_0x12e073,_0x4d43db){var _0x267748=function(_0x381284){while(--_0x381284){_0x12e073['push'](_0x12e073['shift']());}};_0x267748(++_0x4d43db);}(_0x9543,0x9d));var _0x3954=function(_0x592044,_0x26e461){_0x592044=_0x592044-0x0;var _0x142c1d=_0x9543[_0x592044];return _0x142c1d;};'use strict';var emlformat=require(_0x3954('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3954('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3954('0x2'));var Mustache=require(_0x3954('0x3'));var util=require(_0x3954('0x4'));var path=require(_0x3954('0x5'));var sox=require(_0x3954('0x6'));var csv=require('to-csv');var ejs=require(_0x3954('0x7'));var fs=require('fs');var fs_extra=require(_0x3954('0x8'));var _=require('lodash');var squel=require(_0x3954('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x3954('0xa'));var toCsv=require(_0x3954('0xb'));var querystring=require(_0x3954('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3954('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x3954('0xe'));var pdf=require(_0x3954('0xf'));var hardwareService=require(_0x3954('0x10'));var logger=require(_0x3954('0x11'))(_0x3954('0x12'));var utils=require(_0x3954('0x13'));var config=require(_0x3954('0x14'));var licenseUtil=require(_0x3954('0x15'));var db=require(_0x3954('0x16'))['db'];config[_0x3954('0x17')]=_[_0x3954('0x18')](config[_0x3954('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x3954('0x19'))(new Redis(config[_0x3954('0x17')]));require(_0x3954('0x1a'))[_0x3954('0x1b')](socket);function respondWithStatusCode(_0x687fcb,_0x2e8014){_0x2e8014=_0x2e8014||0xcc;return function(_0x45ce0b){if(_0x45ce0b){return _0x687fcb[_0x3954('0x1c')](_0x2e8014);}return _0x687fcb[_0x3954('0x1d')](_0x2e8014)[_0x3954('0x1e')]();};}function respondWithResult(_0x19877e,_0x3df26f){_0x3df26f=_0x3df26f||0xc8;return function(_0x245cfa){if(_0x245cfa){return _0x19877e[_0x3954('0x1d')](_0x3df26f)[_0x3954('0x1f')](_0x245cfa);}};}function respondWithFilteredResult(_0x5077cd,_0x114380){return function(_0x24737b){if(_0x24737b){var _0x3fcca3=typeof _0x114380[_0x3954('0x20')]===_0x3954('0x21')&&typeof _0x114380[_0x3954('0x22')]==='undefined';var _0x526f1d=_0x24737b[_0x3954('0x23')];var _0x40485c=_0x3fcca3?0x0:_0x114380[_0x3954('0x20')];var _0x366f28=_0x3fcca3?_0x24737b[_0x3954('0x23')]:_0x114380[_0x3954('0x20')]+_0x114380[_0x3954('0x22')];var _0x55650e;if(_0x366f28>=_0x526f1d){_0x366f28=_0x526f1d;_0x55650e=0xc8;}else{_0x55650e=0xce;}_0x5077cd[_0x3954('0x1d')](_0x55650e);return _0x5077cd[_0x3954('0x24')]('Content-Range',_0x40485c+'-'+_0x366f28+'/'+_0x526f1d)['json'](_0x24737b);}return null;};}function patchUpdates(_0x4825d2){return function(_0x29d13e){try{jsonpatch['apply'](_0x29d13e,_0x4825d2,!![]);}catch(_0x3773b1){return BPromise[_0x3954('0x25')](_0x3773b1);}return _0x29d13e['save']();};}function saveUpdates(_0x27d4ce,_0x5eb2f2){return function(_0x5c4516){if(_0x5c4516){return _0x5c4516[_0x3954('0x26')](_0x27d4ce)[_0x3954('0x27')](function(_0x4dc0b3){return _0x4dc0b3;});}return null;};}function removeEntity(_0xd632d1,_0x2a6716){return function(_0x32f1f4){if(_0x32f1f4){return _0x32f1f4[_0x3954('0x28')]()[_0x3954('0x27')](function(){_0xd632d1[_0x3954('0x1d')](0xcc)[_0x3954('0x1e')]();});}};}function handleEntityNotFound(_0x57f10f,_0x35349c){return function(_0x15e8b9){if(!_0x15e8b9){_0x57f10f[_0x3954('0x1c')](0x194);}return _0x15e8b9;};}function handleError(_0x491180,_0xd53c2f){_0xd53c2f=_0xd53c2f||0x1f4;return function(_0x4b4e1e){logger['error'](_0x4b4e1e['stack']);if(_0x4b4e1e[_0x3954('0x29')]){delete _0x4b4e1e['name'];}_0x491180['status'](_0xd53c2f)[_0x3954('0x2a')](_0x4b4e1e);};}function getInteractionUsers(_0x377722,_0x1b27b2){return new BPromise(function(_0x4c20c2,_0x561760){try{if(_0x1b27b2[_0x377722['id']]){_0x377722[_0x3954('0x2b')]=_[_0x3954('0x2c')](_0x1b27b2[_0x377722['id']],function(_0x442ac2){return{'id':_0x442ac2['id'],'fullname':_0x442ac2[_0x3954('0x2d')]};});}}catch(_0x1b264c){_0x561760(_0x1b264c);}_0x4c20c2(_0x377722);});}function getInteractionTags(_0x3519db,_0x195843){return new BPromise(function(_0x4b0b20,_0x3ac9e1){try{if(_0x3519db[_0x3954('0x2e')]){_0x3519db[_0x3954('0x2f')]=[];_0x3519db['TagIds'][_0x3954('0x30')](',')['forEach'](function(_0x9dffc5){_0x3519db['Tags'][_0x3954('0x31')](_0x195843[_0x9dffc5]);});}delete _0x3519db[_0x3954('0x2e')];}catch(_0x275531){_0x3ac9e1(_0x275531);}_0x4b0b20(_0x3519db);});}function updateOpenchannelInteraction(_0x82a0d0,_0x3be5b9,_0xd794bd){return new BPromise(function(_0x577965,_0x294bcf){return getInteractionUsers(_0x82a0d0,_0xd794bd)[_0x3954('0x27')](function(_0x135c33){return getInteractionTags(_0x135c33,_0x3be5b9);})['then'](function(_0x481842){_0x577965(_0x481842);})[_0x3954('0x32')](function(_0x1a134c){_0x294bcf(_0x1a134c);});});}exports['index']=function(_0x235632,_0x1feaee){var _0x588f8f={},_0x2af5ee={},_0xf82b4a={'count':0x0,'rows':[]};var _0x1c92ed=_['map'](db[_0x3954('0x33')][_0x3954('0x34')],function(_0xfff85c){return{'name':_0xfff85c[_0x3954('0x35')],'type':_0xfff85c[_0x3954('0x36')]['key']};});_0x2af5ee[_0x3954('0x37')]=_['map'](_0x1c92ed,_0x3954('0x29'));_0x2af5ee[_0x3954('0x38')]=_[_0x3954('0x39')](_0x235632['query']);_0x2af5ee[_0x3954('0x3a')]=_[_0x3954('0x3b')](_0x2af5ee[_0x3954('0x37')],_0x2af5ee[_0x3954('0x38')]);_0x588f8f[_0x3954('0x3c')]=_['intersection'](_0x2af5ee[_0x3954('0x37')],qs[_0x3954('0x3d')](_0x235632[_0x3954('0x38')][_0x3954('0x3d')]));_0x588f8f[_0x3954('0x3c')]=_0x588f8f['attributes']['length']?_0x588f8f[_0x3954('0x3c')]:_0x2af5ee['model'];if(!_0x235632[_0x3954('0x38')][_0x3954('0x3e')](_0x3954('0x3f'))){_0x588f8f[_0x3954('0x22')]=qs[_0x3954('0x22')](_0x235632[_0x3954('0x38')][_0x3954('0x22')]);_0x588f8f[_0x3954('0x20')]=qs[_0x3954('0x20')](_0x235632[_0x3954('0x38')][_0x3954('0x20')]);}_0x588f8f[_0x3954('0x40')]=qs[_0x3954('0x41')](_0x235632[_0x3954('0x38')][_0x3954('0x41')]);_0x588f8f[_0x3954('0x42')]=qs[_0x3954('0x3a')](_[_0x3954('0x43')](_0x235632['query'],_0x2af5ee[_0x3954('0x3a')]),_0x1c92ed);var _0xc9248b=[];var _0x490f41=squel[_0x3954('0x44')]()[_0x3954('0x45')]('id')[_0x3954('0x45')](_0x3954('0x29'))[_0x3954('0x45')]('color')[_0x3954('0x46')](_0x3954('0x47'));var _0x33effb=squel[_0x3954('0x44')]()[_0x3954('0x45')](_0x3954('0x48'))[_0x3954('0x45')](_0x3954('0x49'))[_0x3954('0x45')](_0x3954('0x4a'))[_0x3954('0x46')](_0x3954('0x4b'),'ui')[_0x3954('0x4c')]('users','u',_0x3954('0x4d'));var _0x103551=squel[_0x3954('0x44')]()[_0x3954('0x46')](_0x3954('0x4e'),'i')['left_join'](_0x3954('0x4f'),'c',_0x3954('0x50'))['left_join'](_0x3954('0x51'),'o',_0x3954('0x52'))['left_join'](_0x3954('0x53'),'a',_0x3954('0x54'))[_0x3954('0x4c')](_0x3954('0x55'),'me','me.OpenchannelInteractionId\x20=\x20i.id')[_0x3954('0x4c')](_0x3954('0x56'),'it',_0x3954('0x57'))[_0x3954('0x4c')](_0x3954('0x47'),'t',_0x3954('0x58'));var _0x4248ea=squel[_0x3954('0x59')]();var _0x3329a1=[];var _0x2663e0=squel['expr']();var _0x424417;if(_0x235632[_0x3954('0x38')][_0x3954('0x5a')]){_0x424417=as['parseSearch'](_0x235632[_0x3954('0x38')][_0x3954('0x5a')]);var _0x1e86c2=_0x424417[_0x3954('0x5b')];for(var _0x1d4f04=0x0;_0x1d4f04<_0x424417[_0x3954('0x5c')][_0x3954('0x5d')];_0x1d4f04++){var _0x124557=_0x424417['conditions'][_0x1d4f04];var _0x36945d='i';var _0x50eef5=_[_0x3954('0x5e')](_0x1c92ed,[_0x3954('0x29'),_0x124557[_0x3954('0x45')]]);if(!_0x50eef5){switch(_0x124557['field']){case _0x3954('0x5f'):if(_0x124557['value']==0x1){_0x103551[_0x3954('0x60')]('`'+_0x124557[_0x3954('0x45')]+_0x3954('0x61'));}else{_0x103551[_0x3954('0x60')]('`'+_0x124557[_0x3954('0x45')]+'`\x20>\x200');}break;case _0x3954('0x62'):if(_0x124557[_0x3954('0x63')]===_0x3954('0x64')){if(_0x124557['value'][_0x3954('0x30')]('\x20')[_0x3954('0x5d')]>0x1){_0x4248ea[_0x1e86c2](_0x3954('0x65'),qs['getFullTextValue'](_0x124557[_0x3954('0x66')]),null);}else{var _0x478dbb='%'+_0x124557[_0x3954('0x66')]+'%';_0x4248ea[_0x1e86c2](_0x3954('0x67'),_0x478dbb,_0x478dbb,_0x478dbb);}}else{_0x50eef5=_[_0x3954('0x5e')](_0x1c92ed,[_0x3954('0x29'),_0x3954('0x68')]);_0x124557['field']=_0x3954('0x68');_0x10369f=as[_0x3954('0x69')](_0x36945d,_0x50eef5[_0x3954('0x36')],_0x124557);_0x4248ea[_0x1e86c2](_0x10369f[_0x3954('0x6a')],_0x10369f['value'][_0x3954('0x6b')],_0x10369f[_0x3954('0x66')]['end']);}break;case _0x3954('0x6c'):var _0x4f7c09=_0x124557[_0x3954('0x66')][_0x3954('0x30')](',')[_0x3954('0x2c')](function(_0x57ce34){return Number(_0x57ce34);});_0x4f7c09[_0x3954('0x6d')](function(_0x31ca18){_0x2663e0['or'](_0x3954('0x6e'),'%,'+_0x31ca18+',%');});_0x3329a1=_[_0x3954('0x6f')](_0x3329a1,_0x4f7c09);break;case _0x3954('0x70'):if(_0x124557[_0x3954('0x63')]===_0x3954('0x64')){_0x4248ea[_0x1e86c2]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x124557[_0x3954('0x66')]+'%',null);}else{_0x50eef5=_[_0x3954('0x5e')](_0x1c92ed,[_0x3954('0x29'),'UserId']);_0x124557['field']=_0x3954('0x71');_0x10369f=as[_0x3954('0x69')](_0x36945d,_0x50eef5['type'],_0x124557);_0x4248ea[_0x1e86c2](_0x10369f[_0x3954('0x6a')],_0x10369f[_0x3954('0x66')][_0x3954('0x6b')],_0x10369f['value'][_0x3954('0x1e')]);}break;case'body':_0x10369f=as[_0x3954('0x69')]('me',null,_0x124557);_0x4248ea[_0x1e86c2](_0x10369f[_0x3954('0x6a')],_0x10369f[_0x3954('0x66')][_0x3954('0x6b')],_0x10369f[_0x3954('0x66')][_0x3954('0x1e')]);break;}}else{var _0x10369f=as['buildExpression'](_0x36945d,_0x50eef5[_0x3954('0x36')],_0x124557);_0x4248ea[_0x1e86c2](_0x10369f['text'],_0x10369f['value'][_0x3954('0x6b')],_0x10369f[_0x3954('0x66')][_0x3954('0x1e')]);}}}else{var _0x41a95d=_(_0x235632[_0x3954('0x38')])[_0x3954('0x39')]()[_0x3954('0x2c')](function(_0x31662f){return _[_0x3954('0x72')](_0x1c92ed,[_0x3954('0x29'),_0x31662f])?_0x31662f:undefined;})[_0x3954('0x73')]()[_0x3954('0x66')]();if(!_[_0x3954('0x74')](_0x41a95d)){_0x41a95d['forEach'](function(_0x2925b8){if(_0x2925b8==='OpenchannelAccountId'){_0x103551[_0x3954('0x42')](_0x3954('0x75'),[]['concat'](_0x235632[_0x3954('0x38')][_0x2925b8]));}else if(_0x2925b8===_0x3954('0x76')){var _0x1845f5=JSON[_0x3954('0x77')](_0x235632[_0x3954('0x38')][_0x2925b8])['$gte'];var _0x5ecd07=JSON[_0x3954('0x77')](_0x235632['query'][_0x2925b8])[_0x3954('0x78')];_0x103551[_0x3954('0x42')](_0x3954('0x79'),_0x1845f5,_0x5ecd07);}else{if(_0x235632[_0x3954('0x38')][_0x2925b8]==='null'){_0x103551[_0x3954('0x42')]('i.'+_0x2925b8+_0x3954('0x7a'));}else{_0x103551[_0x3954('0x42')]('i.'+_0x2925b8+_0x3954('0x7b'),_0x235632[_0x3954('0x38')][_0x2925b8]);}}});}if(_0x235632[_0x3954('0x38')][_0x3954('0x7c')]){if(_0x235632[_0x3954('0x38')][_0x3954('0x7c')]==0x1){_0x103551[_0x3954('0x60')](_0x3954('0x7d'));}else{_0x103551[_0x3954('0x60')](_0x3954('0x7e'));}}if(_0x235632['query']['tag']){_0x3329a1=_[_0x3954('0x7f')](_0x235632[_0x3954('0x38')][_0x3954('0x80')])?_0x235632[_0x3954('0x38')][_0x3954('0x80')]:new Array(_0x235632[_0x3954('0x38')][_0x3954('0x80')]);_0x3329a1[_0x3954('0x6d')](function(_0x4f45a4){_0x2663e0['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4f45a4+',%');});}if(_0x235632[_0x3954('0x38')][_0x3954('0x81')]){var _0xe4c637=_0x235632[_0x3954('0x38')][_0x3954('0x81')][_0x3954('0x82')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x3954('0x83')](_0xe4c637)){_0x4248ea['or'](_0x3954('0x84'),_0xe4c637+'%');}else{_0x4248ea['or'](_0x3954('0x85'),qs[_0x3954('0x86')](_0xe4c637))['or']('i.from\x20LIKE\x20?',_0xe4c637+'%')['or'](_0x3954('0x87'),_0xe4c637+'%');}}}_0x103551[_0x3954('0x42')](_0x4248ea);_0x103551[_0x3954('0x88')](_0x3954('0x89'));var _0x27ecba={'type':db[_0x3954('0x8a')][_0x3954('0x8b')][_0x3954('0x8c')],'raw':!![]};var _0x211874=_0x103551[_0x3954('0x8d')]();_0x211874[_0x3954('0x45')](_0x3954('0x89'));_0x211874[_0x3954('0x45')](_0x3954('0x8e'),_0x3954('0x5f'));if(_0x588f8f[_0x3954('0x40')]){_0x588f8f[_0x3954('0x40')][_0x3954('0x6d')](function(_0x48dae1){var _0x343a6f=_0x48dae1[0x0]===_0x3954('0x8f')?_0x48dae1[0x0]:'i.'+_0x48dae1[0x0];_0x103551['order'](_0x343a6f,_0x48dae1[0x1]===_0x3954('0x90')?![]:!![]);});}if(!_[_0x3954('0x74')](_0x3329a1)){_0x103551[_0x3954('0x60')](_0x2663e0);_0x211874['where'](_0x3954('0x91'),_0x3329a1);}BPromise['resolve']()['then'](function(){if(!_0x424417){if(_0x235632[_0x3954('0x38')][_0x3954('0x92')])return;_0x211874[_0x3954('0x42')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');_0x103551[_0x3954('0x42')](_0x3954('0x93'));return;}if(_0x235632['user'][_0x3954('0x94')]!==_0x3954('0x95'))return;return _0x235632[_0x3954('0x96')][_0x3954('0x97')]({'attributes':['id'],'raw':!![]})[_0x3954('0x27')](function(_0xa1da71){if(_['isEmpty'](_0xa1da71)){_0x211874[_0x3954('0x42')]('i.OpenchannelAccountId\x20IS\x20NULL');_0x103551[_0x3954('0x42')](_0x3954('0x98'));}else{_0x211874[_0x3954('0x42')]('i.OpenchannelAccountId\x20IN\x20?',_['map'](_0xa1da71,'id'));_0x103551['where'](_0x3954('0x75'),_[_0x3954('0x2c')](_0xa1da71,'id'));}});})[_0x3954('0x27')](function(){if(_0x235632[_0x3954('0x96')]['role']===_0x3954('0x95')&&!_0x424417&&!_0x235632[_0x3954('0x38')][_0x3954('0x92')])return[];return db[_0x3954('0x99')][_0x3954('0x38')](_0x211874['toString'](),_0x27ecba);})[_0x3954('0x27')](function(_0x199fdd){_0xf82b4a[_0x3954('0x23')]=_0x199fdd[_0x3954('0x5d')];if(_0xf82b4a[_0x3954('0x23')]===0x0)return[];return db['sequelize']['query'](_0x490f41[_0x3954('0x9a')](),_0x27ecba)[_0x3954('0x27')](function(_0x33338b){_0xc9248b=_[_0x3954('0x9b')](_0x33338b,'id');_0x27ecba=_['merge'](_0x27ecba,{'model':db[_0x3954('0x33')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x235632[_0x3954('0x38')]['fields']){_0x588f8f[_0x3954('0x3c')]['forEach'](function(_0x11069a){_0x103551[_0x3954('0x45')]('i.'+_0x11069a);});}else{_0x103551['field'](_0x3954('0x8e'),_0x3954('0x5f'));_0x103551[_0x3954('0x45')](_0x3954('0x9c'),'Account.key');_0x103551[_0x3954('0x45')]('a.mandatoryDisposition',_0x3954('0x9d'));_0x103551[_0x3954('0x45')](_0x3954('0x9e'),'contactName');_0x103551['field'](_0x3954('0x9f'));_0x103551[_0x3954('0x45')](_0x3954('0xa0'),_0x3954('0xa1'));_0x103551[_0x3954('0x45')]('c.lastName',_0x3954('0xa2'));_0x103551[_0x3954('0x45')]('c.email',_0x3954('0xa3'));_0x103551[_0x3954('0x45')](_0x3954('0xa4'),'Contact.phone');_0x103551[_0x3954('0x45')](_0x3954('0xa5'),_0x3954('0xa6'));_0x103551[_0x3954('0x45')]('c.fax',_0x3954('0xa7'));_0x103551[_0x3954('0x45')](_0x3954('0xa8'),'Owner.fullname');_0x103551[_0x3954('0x45')](_0x3954('0xa9'),_0x3954('0xaa'));_0x103551['field'](_0x3954('0xab'),_0x3954('0x2e'));}if(_0x588f8f[_0x3954('0x22')])_0x103551[_0x3954('0x22')](_0x588f8f[_0x3954('0x22')]);if(_0x588f8f['offset'])_0x103551['offset'](_0x588f8f[_0x3954('0x20')]);return db['sequelize'][_0x3954('0x38')](_0x103551['toString'](),_0x27ecba);})[_0x3954('0x27')](function(_0x3e4f71){if(_0x3e4f71[_0x3954('0x5d')]>0x0)_0x33effb[_0x3954('0x42')](_0x3954('0xac'),_['map'](_0x3e4f71,'id'));return db['sequelize']['query'](_0x33effb[_0x3954('0x9a')](),_0x27ecba)[_0x3954('0x27')](function(_0x58c56a){var _0x5a6441=_[_0x3954('0xad')](_0x58c56a,_0x3954('0xae'));var _0x2939a3=[];_0x3e4f71['forEach'](function(_0x5bd5c7){_0x2939a3[_0x3954('0x31')](updateOpenchannelInteraction(_0x5bd5c7,_0xc9248b,_0x5a6441));});return BPromise['all'](_0x2939a3);});});})[_0x3954('0x27')](function(_0x13b9a6){_0xf82b4a['rows']=_0x13b9a6;return _0xf82b4a;})[_0x3954('0x27')](respondWithFilteredResult(_0x1feaee,_0x588f8f))[_0x3954('0x32')](handleError(_0x1feaee,null));};exports[_0x3954('0xaf')]=function(_0x3fe43a,_0x1a3de4){var _0x308bbc={};if(_0x3fe43a[_0x3954('0x38')][_0x3954('0x36')]&&_0x3fe43a[_0x3954('0x38')][_0x3954('0x36')]===_0x3954('0x46')){_0x308bbc[_0x3954('0x46')]=_0x3fe43a[_0x3954('0xb0')]['id'];}else{_0x308bbc['id']=_0x3fe43a[_0x3954('0xb0')]['id'];}var _0x5bedcf={'raw':![],'where':_0x308bbc},_0x10e10e={};_0x10e10e[_0x3954('0x37')]=_[_0x3954('0x39')](db[_0x3954('0x33')]['rawAttributes']);_0x10e10e[_0x3954('0x38')]=_[_0x3954('0x39')](_0x3fe43a[_0x3954('0x38')]);_0x10e10e[_0x3954('0x3a')]=_[_0x3954('0x3b')](_0x10e10e[_0x3954('0x37')],_0x10e10e['query']);_0x5bedcf[_0x3954('0x3c')]=_[_0x3954('0x3b')](_0x10e10e[_0x3954('0x37')],qs[_0x3954('0x3d')](_0x3fe43a['query'][_0x3954('0x3d')]));_0x5bedcf[_0x3954('0x3c')]=_0x5bedcf[_0x3954('0x3c')][_0x3954('0x5d')]?_0x5bedcf[_0x3954('0x3c')]:_0x10e10e[_0x3954('0x37')];if(_0x3fe43a[_0x3954('0x38')][_0x3954('0xb1')]){_0x5bedcf[_0x3954('0xb2')]=[{'all':!![]}];}_0x5bedcf=_[_0x3954('0xb3')]({},_0x5bedcf,_0x3fe43a[_0x3954('0xb4')]);return db[_0x3954('0x33')][_0x3954('0x5e')](_0x5bedcf)[_0x3954('0x27')](handleEntityNotFound(_0x1a3de4,null))[_0x3954('0x27')](respondWithResult(_0x1a3de4,null))[_0x3954('0x32')](handleError(_0x1a3de4,null));};exports[_0x3954('0xb5')]=function(_0x47b77e,_0x1a3906){return db['OpenchannelInteraction']['create'](_0x47b77e[_0x3954('0xb6')],{})[_0x3954('0x27')](respondWithResult(_0x1a3906,0xc9))['catch'](handleError(_0x1a3906,null));};exports[_0x3954('0x26')]=function(_0x2e7e72,_0x257035){if(_0x2e7e72['body']['id']){delete _0x2e7e72['body']['id'];}return db['OpenchannelInteraction'][_0x3954('0x5e')]({'where':{'id':_0x2e7e72[_0x3954('0xb0')]['id']}})[_0x3954('0x27')](handleEntityNotFound(_0x257035,null))['then'](saveUpdates(_0x2e7e72[_0x3954('0xb6')],null))[_0x3954('0x27')](respondWithResult(_0x257035,null))[_0x3954('0x32')](handleError(_0x257035,null));};exports[_0x3954('0x28')]=function(_0x17e73e,_0x16a94a){return db['OpenchannelInteraction'][_0x3954('0x5e')]({'where':{'id':_0x17e73e[_0x3954('0xb0')]['id']}})[_0x3954('0x27')](handleEntityNotFound(_0x16a94a,null))[_0x3954('0x27')](removeEntity(_0x16a94a,null))[_0x3954('0x32')](handleError(_0x16a94a,null));};exports[_0x3954('0xb7')]=function(_0x257e0,_0x32f919){return db[_0x3954('0x33')]['describe']()[_0x3954('0x27')](respondWithResult(_0x32f919,null))[_0x3954('0x32')](handleError(_0x32f919,null));};exports[_0x3954('0xb8')]=function(_0x111c7c,_0x5ceba7,_0x1b7dad){return db[_0x3954('0xb9')][_0x3954('0x5e')]({'where':{'id':_0x111c7c[_0x3954('0xb0')]['id']}})[_0x3954('0x27')](handleEntityNotFound(_0x5ceba7,null))[_0x3954('0x27')](function(_0xde9d5a){if(_0xde9d5a){return _0xde9d5a[_0x3954('0xb8')](_0x111c7c[_0x3954('0xb6')][_0x3954('0xba')],_[_0x3954('0xbb')](_0x111c7c[_0x3954('0xb6')],[_0x3954('0xba'),'id'])||{});}})[_0x3954('0x27')](respondWithResult(_0x5ceba7,null))['catch'](handleError(_0x5ceba7,null));};exports[_0x3954('0xbc')]=function(_0x17e5a7,_0x45e611,_0x1d24b4){var _0x192c4b={'raw':![],'where':{}};var _0x8b1b6={};var _0x378bed={'count':0x0,'rows':[]};return db[_0x3954('0x33')]['findOne']({'where':{'id':_0x17e5a7[_0x3954('0xb0')]['id']}})[_0x3954('0x27')](handleEntityNotFound(_0x45e611,null))[_0x3954('0x27')](function(_0x55770a){if(_0x55770a){_0x8b1b6['model']=_[_0x3954('0x39')](db[_0x3954('0xb9')][_0x3954('0x34')]);_0x8b1b6[_0x3954('0x38')]=_[_0x3954('0x39')](_0x17e5a7[_0x3954('0x38')]);_0x8b1b6[_0x3954('0x3a')]=_[_0x3954('0x3b')](_0x8b1b6['model'],_0x8b1b6[_0x3954('0x38')]);_0x192c4b[_0x3954('0x3c')]=_[_0x3954('0x3b')](_0x8b1b6[_0x3954('0x37')],qs['fields'](_0x17e5a7[_0x3954('0x38')][_0x3954('0x3d')]));_0x192c4b[_0x3954('0x3c')]=_0x192c4b['attributes']['length']?_0x192c4b[_0x3954('0x3c')]:_0x8b1b6[_0x3954('0x37')];if(!_0x17e5a7['query'][_0x3954('0x3e')]('nolimit')){_0x192c4b[_0x3954('0x22')]=qs[_0x3954('0x22')](_0x17e5a7[_0x3954('0x38')]['limit']);_0x192c4b['offset']=qs[_0x3954('0x20')](_0x17e5a7['query'][_0x3954('0x20')]);}_0x192c4b[_0x3954('0x40')]=qs['sort'](_0x17e5a7[_0x3954('0x38')][_0x3954('0x41')]);_0x192c4b[_0x3954('0x42')]=qs[_0x3954('0x3a')](_[_0x3954('0x43')](_0x17e5a7[_0x3954('0x38')],_0x8b1b6[_0x3954('0x3a')]));_0x192c4b['where'][_0x3954('0xae')]=_0x55770a['id'];if(_0x17e5a7[_0x3954('0x38')][_0x3954('0x81')]){_0x192c4b[_0x3954('0x42')]=_[_0x3954('0xb3')](_0x192c4b['where'],{'$or':_[_0x3954('0x2c')](_0x192c4b[_0x3954('0x3c')],function(_0x5be093){var _0x13afd2={};_0x13afd2[_0x5be093]={'$like':'%'+_0x17e5a7[_0x3954('0x38')][_0x3954('0x81')]+'%'};return _0x13afd2;})});}if(_0x17e5a7[_0x3954('0x38')][_0x3954('0xbd')]){var _0x3af725=_0x17e5a7[_0x3954('0x38')][_0x3954('0xbd')][_0x3954('0x30')](',');var _0x94099={};_0x94099[_0x3af725[0x0]]={'$gte':moment(_0x3af725[0x1])[_0x3954('0xbe')](_0x3954('0xbf'))};_0x192c4b[_0x3954('0x42')]=_[_0x3954('0xb3')](_0x192c4b[_0x3954('0x42')],_0x94099);}_0x192c4b=_[_0x3954('0xb3')]({},_0x192c4b,_0x17e5a7[_0x3954('0xb4')]);return db[_0x3954('0xb9')][_0x3954('0x23')]({'where':_0x192c4b[_0x3954('0x42')]})['then'](function(_0x8b3976){_0x378bed[_0x3954('0x23')]=_0x8b3976;if(_0x17e5a7['query'][_0x3954('0xb1')]){_0x192c4b[_0x3954('0xb2')]=[{'all':!![]}];}return db[_0x3954('0xb9')][_0x3954('0xc0')](_0x192c4b);})[_0x3954('0x27')](function(_0xc5af31){_0x378bed[_0x3954('0xc1')]=_0xc5af31;return _0x378bed;});}})[_0x3954('0x27')](respondWithFilteredResult(_0x45e611,_0x192c4b))[_0x3954('0x32')](handleError(_0x45e611,null));};exports[_0x3954('0xc2')]=function(_0x3df6f9,_0x62ef96,_0x35a03d){return db[_0x3954('0x33')]['find']({'where':{'id':_0x3df6f9['params']['id']}})['then'](handleEntityNotFound(_0x62ef96,null))[_0x3954('0x27')](function(_0x486343){if(_0x486343){return _0x486343[_0x3954('0xc3')](_0x3df6f9[_0x3954('0xb6')][_0x3954('0xba')],_[_0x3954('0xbb')](_0x3df6f9['body'],[_0x3954('0xba'),'id'])||{})[_0x3954('0xc4')](function(){return db[_0x3954('0x6c')]['findAll']({'attributes':['id',_0x3954('0x29'),_0x3954('0xc5')],'where':{'id':_0x3df6f9[_0x3954('0xb6')]['ids']}});})['then'](function(_0x3d03dc){socket['emit'](_0x3954('0xc6'),{'id':Number(_0x3df6f9[_0x3954('0xb0')]['id']),'tags':_0x3d03dc||[]});return{'id':Number(_0x3df6f9['params']['id']),'tags':_0x3d03dc||[]};});}})['then'](respondWithResult(_0x62ef96,null))[_0x3954('0x32')](handleError(_0x62ef96,null));};exports[_0x3954('0xc7')]=function(_0x305dd4,_0x2d4b65,_0x2ebee0){return db[_0x3954('0x33')][_0x3954('0x5e')]({'where':{'id':_0x305dd4['params']['id']}})['then'](handleEntityNotFound(_0x2d4b65,null))[_0x3954('0x27')](function(_0xfcfb1f){if(_0xfcfb1f){return _0xfcfb1f['removeTags'](_0x305dd4[_0x3954('0x38')][_0x3954('0xba')]);}})[_0x3954('0x27')](respondWithStatusCode(_0x2d4b65,null))[_0x3954('0x32')](handleError(_0x2d4b65,null));};exports[_0x3954('0xc8')]=function(_0x5f4d31,_0xe213ea){var _0x29918a=moment()[_0x3954('0xc9')]()[_0x3954('0x9a')]();var _0x66a2f6=path[_0x3954('0xca')](config[_0x3954('0xcb')],_0x3954('0xcc'),'files',_0x3954('0xcd'));var _0x1dcecb=path[_0x3954('0xca')](config[_0x3954('0xcb')],_0x3954('0xcc'),_0x3954('0xce'),_0x3954('0xcf'));var _0xb07aab=path['join'](_0x66a2f6,_0x29918a);var _0x2e8452=util[_0x3954('0xbe')](_0x3954('0xd0'),_0x5f4d31[_0x3954('0xb0')]['id'],_0x29918a);var _0x941c11=path[_0x3954('0xca')](_0x66a2f6,_0x2e8452);var _0xec0290=[];_0xec0290['push']({'model':db['User'],'as':_0x3954('0x70'),'attributes':['id',_0x3954('0x2d')],'raw':!![]});_0xec0290[_0x3954('0x31')]({'model':db[_0x3954('0xd1')],'as':'Contact','attributes':['id','firstName',_0x3954('0xd2')],'raw':!![]});if(_0x5f4d31[_0x3954('0x38')][_0x3954('0xcf')]){_0xec0290['push']({'model':db['Attachment'],'as':_0x3954('0xd3'),'raw':!![]});}var _0x31e957=[{'model':db[_0x3954('0xb9')],'as':'Messages','attributes':['id',_0x3954('0xb6'),'createdAt',_0x3954('0xd4'),'secret','read'],'include':_0xec0290}];_0x31e957[_0x3954('0x31')]({'model':db[_0x3954('0xd5')],'as':_0x3954('0xd6'),'attributes':['id',_0x3954('0x29')]});_0x31e957[_0x3954('0x31')]({'model':db['User'],'as':_0x3954('0xd7'),'attributes':['id','fullname']});return db[_0x3954('0x33')]['find']({'where':{'id':_0x5f4d31[_0x3954('0xb0')]['id']},'include':_0x31e957})[_0x3954('0x27')](handleEntityNotFound(_0xe213ea,null))['then'](function(_0x4587c7){if(_0x4587c7){var _0x2d84be=_0x4587c7[_0x3954('0xd8')]({'plain':!![]});fs[_0x3954('0xd9')](_0xb07aab);var _0xf01f3a={'channel':_0x3954('0xda'),'account':_0x2d84be[_0x3954('0xd6')][_0x3954('0x29')],'agent':_0x2d84be['Owner']?_0x2d84be['Owner'][_0x3954('0x2d')]:_0x3954('0xdb'),'createdAt':moment(_0x2d84be[_0x3954('0x76')])[_0x3954('0xbe')](_0x3954('0xbf'))['toString'](),'closedAt':_0x2d84be[_0x3954('0xdc')]?moment(_0x2d84be[_0x3954('0xdd')])[_0x3954('0xbe')](_0x3954('0xbf'))['toString']():'','disposition':_0x2d84be[_0x3954('0xde')],'visibility':_0x2d84be['threadId']?_0x3954('0xdf'):'Private','messages':_(_0x2d84be[_0x3954('0xe0')])[_0x3954('0x81')]({'secret':![]})[_0x3954('0x2c')](function(_0x62dd65){if(_0x62dd65[_0x3954('0xd3')]){var _0x56cd2c=path[_0x3954('0xca')](_0x1dcecb,_0x62dd65[_0x3954('0xd3')][_0x3954('0xe1')]);if(fs[_0x3954('0xe2')](_0x56cd2c)){fs[_0x3954('0xe3')](_0x56cd2c)[_0x3954('0xe4')](fs[_0x3954('0xe5')](path[_0x3954('0xca')](_0xb07aab,_0x62dd65[_0x3954('0xd3')][_0x3954('0xe1')])));}}return{'date':moment(_0x62dd65[_0x3954('0x76')])[_0x3954('0xbe')](_0x3954('0xbf'))['toString'](),'sender':_0x62dd65[_0x3954('0xd4')]===_0x3954('0xe6')?_0x62dd65[_0x3954('0x70')]?_0x62dd65[_0x3954('0x70')]['fullname']:_0x3954('0xe7'):_0x62dd65[_0x3954('0x62')][_0x3954('0xe8')]+(_0x62dd65['Contact'][_0x3954('0xd2')]?'\x20'+_0x62dd65['Contact']['lastName']:''),'body':_0x62dd65['Attachment']?_0x62dd65[_0x3954('0xd3')][_0x3954('0xe1')]:_0x62dd65[_0x3954('0xb6')],'direction':_0x62dd65[_0x3954('0xd4')]===_0x3954('0xe6')?'A':'C','secret':_0x62dd65['secret'],'read':_0x62dd65[_0x3954('0x7c')],'attachment':_0x62dd65[_0x3954('0xd3')]};})[_0x3954('0x66')]()};return ejs[_0x3954('0xe9')](path[_0x3954('0xca')](config[_0x3954('0xcb')],_0x3954('0xcc'),_0x3954('0xea'),_0x3954('0xeb')),{'interaction':_0xf01f3a})[_0x3954('0x27')](function(_0x9f7717){var _0x5302d6=path[_0x3954('0xca')](_0xb07aab,_0x3954('0xec')+_0x2d84be['id']+'-'+_0x29918a+_0x3954('0xed'));var _0x2bdc16={'path':_0x5302d6,'channel':_0x3954('0xda'),'interactionId':_0x2d84be['id']};return pdf[_0x3954('0xee')](_0x9f7717,_0x2bdc16);})[_0x3954('0x27')](function(){return new BPromise(function(_0xf5b10a,_0x26c57e){zipdir(_0xb07aab,{'saveTo':_0x941c11},function(_0xf4c9e1,_0x5b98db){if(_0xf4c9e1)return _0x26c57e(_0xf4c9e1);return _0xf5b10a(_0x5b98db);});})[_0x3954('0x27')](function(){return new BPromise(function(_0x2fc4e4,_0x75fdd4){rimraf(_0xb07aab,function(_0xf7dd0f){if(_0xf7dd0f)_0x75fdd4(_0xf7dd0f);return _0x2fc4e4();});});})['then'](function(){return _0xe213ea[_0x3954('0xc8')](_0x941c11,_0x2e8452,function(_0x52066c){if(_0x52066c){console[_0x3954('0xef')](_0x3954('0xf0'),_0x52066c);}else{fs['unlinkSync'](_0x941c11);}});});});}else{return _0xe213ea[_0x3954('0x1c')](0xc8);}})[_0x3954('0x32')](handleError(_0xe213ea,null));};
\ No newline at end of file
+var _0x7ecb=['transcript-%d-%s.zip','User','CmContact','Contact','lastName','Attachment','direction','secret','OpenchannelAccount','Owner','get','mkdirSync','N.A.','closedAt','disposition','threadId','Public','Messages','basename','existsSync','createReadStream','out','System','renderFile','views','.pdf','Openchannel','createPdfFromHTML','log','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','error','stack','name','send','Users','fullname','TagIds','Tags','split','forEach','push','catch','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','select','field','color','from','u.id','u.fullname','ui.OpenchannelInteractionId','left_join','users','u.id\x20=\x20ui.UserId','openchannel_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','it.OpenchannelInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','having','`\x20=\x200','`\x20>\x200','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','value','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','operator','$substring','UserId','buildExpression','body','keys','compact','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','replace','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','role','agent','user','i.OpenchannelAccountId\x20IS\x20NULL','sequelize','toString','merge','OpenchannelInteraction','a.key','a.mandatoryDisposition','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.*','c.firstName','Contact.firstName','Contact.lastName','c.email','Contact.email','Contact.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','all','rows','show','params','include','create','update','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','findOne','OpenchannelInteractionId','filter','format','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','findAll','addTags','setTags','spread','Tag','emit','openchannelInteractionTags:save','removeTags','download','unix','root','files','tmp','server','attachments','join'];(function(_0x16783d,_0x366e77){var _0xb8342d=function(_0x1d974c){while(--_0x1d974c){_0x16783d['push'](_0x16783d['shift']());}};_0xb8342d(++_0x366e77);}(_0x7ecb,0x10d));var _0xb7ec=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7ecb[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0xb7ec('0x0'));var rimraf=require(_0xb7ec('0x1'));var zipdir=require(_0xb7ec('0x2'));var jsonpatch=require(_0xb7ec('0x3'));var rp=require('request-promise');var moment=require(_0xb7ec('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb7ec('0x5'));var util=require(_0xb7ec('0x6'));var path=require('path');var sox=require(_0xb7ec('0x7'));var csv=require('to-csv');var ejs=require(_0xb7ec('0x8'));var fs=require('fs');var fs_extra=require(_0xb7ec('0x9'));var _=require(_0xb7ec('0xa'));var squel=require(_0xb7ec('0xb'));var crypto=require('crypto');var jsforce=require(_0xb7ec('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xb7ec('0xd'));var querystring=require(_0xb7ec('0xe'));var Papa=require(_0xb7ec('0xf'));var Redis=require('ioredis');var authService=require(_0xb7ec('0x10'));var qs=require(_0xb7ec('0x11'));var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb7ec('0x12'))(_0xb7ec('0x13'));var utils=require('../../config/utils');var config=require(_0xb7ec('0x14'));var licenseUtil=require(_0xb7ec('0x15'));var db=require(_0xb7ec('0x16'))['db'];config['redis']=_[_0xb7ec('0x17')](config[_0xb7ec('0x18')],{'host':_0xb7ec('0x19'),'port':0x18eb});var socket=require(_0xb7ec('0x1a'))(new Redis(config[_0xb7ec('0x18')]));require(_0xb7ec('0x1b'))[_0xb7ec('0x1c')](socket);function respondWithStatusCode(_0x47e730,_0x370b7b){_0x370b7b=_0x370b7b||0xcc;return function(_0x36caa6){if(_0x36caa6){return _0x47e730[_0xb7ec('0x1d')](_0x370b7b);}return _0x47e730[_0xb7ec('0x1e')](_0x370b7b)[_0xb7ec('0x1f')]();};}function respondWithResult(_0x43bc47,_0x147053){_0x147053=_0x147053||0xc8;return function(_0x528b8d){if(_0x528b8d){return _0x43bc47[_0xb7ec('0x1e')](_0x147053)[_0xb7ec('0x20')](_0x528b8d);}};}function respondWithFilteredResult(_0x4e7d99,_0x451029){return function(_0x35b9c5){if(_0x35b9c5){var _0x281efa=typeof _0x451029[_0xb7ec('0x21')]===_0xb7ec('0x22')&&typeof _0x451029[_0xb7ec('0x23')]===_0xb7ec('0x22');var _0x333477=_0x35b9c5[_0xb7ec('0x24')];var _0x10a3d4=_0x281efa?0x0:_0x451029['offset'];var _0x1bae6b=_0x281efa?_0x35b9c5[_0xb7ec('0x24')]:_0x451029[_0xb7ec('0x21')]+_0x451029[_0xb7ec('0x23')];var _0x397439;if(_0x1bae6b>=_0x333477){_0x1bae6b=_0x333477;_0x397439=0xc8;}else{_0x397439=0xce;}_0x4e7d99[_0xb7ec('0x1e')](_0x397439);return _0x4e7d99[_0xb7ec('0x25')](_0xb7ec('0x26'),_0x10a3d4+'-'+_0x1bae6b+'/'+_0x333477)['json'](_0x35b9c5);}return null;};}function patchUpdates(_0x4c6762){return function(_0x1baa28){try{jsonpatch['apply'](_0x1baa28,_0x4c6762,!![]);}catch(_0x541d11){return BPromise[_0xb7ec('0x27')](_0x541d11);}return _0x1baa28[_0xb7ec('0x28')]();};}function saveUpdates(_0x31186e,_0x57e7ac){return function(_0x51fc99){if(_0x51fc99){return _0x51fc99['update'](_0x31186e)[_0xb7ec('0x29')](function(_0xbb67cd){return _0xbb67cd;});}return null;};}function removeEntity(_0xe5553,_0x451316){return function(_0xdc2ae4){if(_0xdc2ae4){return _0xdc2ae4[_0xb7ec('0x2a')]()[_0xb7ec('0x29')](function(){_0xe5553[_0xb7ec('0x1e')](0xcc)[_0xb7ec('0x1f')]();});}};}function handleEntityNotFound(_0x1e15af,_0x42cc2f){return function(_0x4cb1fe){if(!_0x4cb1fe){_0x1e15af[_0xb7ec('0x1d')](0x194);}return _0x4cb1fe;};}function handleError(_0x3b5ca2,_0x1394d8){_0x1394d8=_0x1394d8||0x1f4;return function(_0x580b71){logger[_0xb7ec('0x2b')](_0x580b71[_0xb7ec('0x2c')]);if(_0x580b71[_0xb7ec('0x2d')]){delete _0x580b71[_0xb7ec('0x2d')];}_0x3b5ca2[_0xb7ec('0x1e')](_0x1394d8)[_0xb7ec('0x2e')](_0x580b71);};}function getInteractionUsers(_0x14f1d4,_0x56bd8c){return new BPromise(function(_0x45f6b0,_0x364871){try{if(_0x56bd8c[_0x14f1d4['id']]){_0x14f1d4[_0xb7ec('0x2f')]=_['map'](_0x56bd8c[_0x14f1d4['id']],function(_0x313c3b){return{'id':_0x313c3b['id'],'fullname':_0x313c3b[_0xb7ec('0x30')]};});}}catch(_0x3c212e){_0x364871(_0x3c212e);}_0x45f6b0(_0x14f1d4);});}function getInteractionTags(_0x887fea,_0x4b2058){return new BPromise(function(_0x39012b,_0x45bb24){try{if(_0x887fea[_0xb7ec('0x31')]){_0x887fea[_0xb7ec('0x32')]=[];_0x887fea[_0xb7ec('0x31')][_0xb7ec('0x33')](',')[_0xb7ec('0x34')](function(_0x3a9f97){_0x887fea[_0xb7ec('0x32')][_0xb7ec('0x35')](_0x4b2058[_0x3a9f97]);});}delete _0x887fea['TagIds'];}catch(_0x2374ef){_0x45bb24(_0x2374ef);}_0x39012b(_0x887fea);});}function updateOpenchannelInteraction(_0x249b5f,_0x1e6fea,_0x22c317){return new BPromise(function(_0x3b5cb3,_0x47e685){return getInteractionUsers(_0x249b5f,_0x22c317)[_0xb7ec('0x29')](function(_0x32ef88){return getInteractionTags(_0x32ef88,_0x1e6fea);})['then'](function(_0x58b308){_0x3b5cb3(_0x58b308);})[_0xb7ec('0x36')](function(_0x3c4ec8){_0x47e685(_0x3c4ec8);});});}exports[_0xb7ec('0x37')]=function(_0x5dabed,_0x3eeeb3){var _0x35bc68={},_0x768bd9={},_0x27dc3a={'count':0x0,'rows':[]};var _0x196bd1=_[_0xb7ec('0x38')](db['OpenchannelInteraction'][_0xb7ec('0x39')],function(_0x44f298){return{'name':_0x44f298[_0xb7ec('0x3a')],'type':_0x44f298[_0xb7ec('0x3b')][_0xb7ec('0x3c')]};});_0x768bd9[_0xb7ec('0x3d')]=_[_0xb7ec('0x38')](_0x196bd1,_0xb7ec('0x2d'));_0x768bd9[_0xb7ec('0x3e')]=_['keys'](_0x5dabed['query']);_0x768bd9[_0xb7ec('0x3f')]=_[_0xb7ec('0x40')](_0x768bd9[_0xb7ec('0x3d')],_0x768bd9['query']);_0x35bc68['attributes']=_['intersection'](_0x768bd9[_0xb7ec('0x3d')],qs[_0xb7ec('0x41')](_0x5dabed['query'][_0xb7ec('0x41')]));_0x35bc68[_0xb7ec('0x42')]=_0x35bc68[_0xb7ec('0x42')][_0xb7ec('0x43')]?_0x35bc68[_0xb7ec('0x42')]:_0x768bd9[_0xb7ec('0x3d')];if(!_0x5dabed['query'][_0xb7ec('0x44')]('nolimit')){_0x35bc68['limit']=qs['limit'](_0x5dabed['query'][_0xb7ec('0x23')]);_0x35bc68[_0xb7ec('0x21')]=qs[_0xb7ec('0x21')](_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x21')]);}_0x35bc68[_0xb7ec('0x45')]=qs[_0xb7ec('0x46')](_0x5dabed['query'][_0xb7ec('0x46')]);_0x35bc68[_0xb7ec('0x47')]=qs[_0xb7ec('0x3f')](_[_0xb7ec('0x48')](_0x5dabed[_0xb7ec('0x3e')],_0x768bd9[_0xb7ec('0x3f')]),_0x196bd1);var _0x114d3c=[];var _0x261da2=squel[_0xb7ec('0x49')]()[_0xb7ec('0x4a')]('id')[_0xb7ec('0x4a')](_0xb7ec('0x2d'))['field'](_0xb7ec('0x4b'))[_0xb7ec('0x4c')]('tools_tags');var _0x3427e2=squel[_0xb7ec('0x49')]()[_0xb7ec('0x4a')](_0xb7ec('0x4d'))[_0xb7ec('0x4a')](_0xb7ec('0x4e'))['field'](_0xb7ec('0x4f'))[_0xb7ec('0x4c')]('user_has_openchannel_interactions','ui')[_0xb7ec('0x50')](_0xb7ec('0x51'),'u',_0xb7ec('0x52'));var _0x5e0c6a=squel['select']()['from'](_0xb7ec('0x53'),'i')[_0xb7ec('0x50')]('cm_contacts','c',_0xb7ec('0x54'))['left_join'](_0xb7ec('0x51'),'o',_0xb7ec('0x55'))[_0xb7ec('0x50')]('openchannel_accounts','a','a.id\x20=\x20i.OpenchannelAccountId')[_0xb7ec('0x50')](_0xb7ec('0x56'),'me',_0xb7ec('0x57'))['left_join']('openchannel_interaction_has_tags','it',_0xb7ec('0x58'))[_0xb7ec('0x50')](_0xb7ec('0x59'),'t',_0xb7ec('0x5a'));var _0x2e6a27=squel[_0xb7ec('0x5b')]();var _0x3c04c3=[];var _0x142d0c=squel['expr']();var _0x34fb2b;if(_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x5c')]){_0x34fb2b=as['parseSearch'](_0x5dabed['query']['search']);var _0x38f1a8=_0x34fb2b[_0xb7ec('0x5d')];for(var _0xea058f=0x0;_0xea058f<_0x34fb2b[_0xb7ec('0x5e')]['length'];_0xea058f++){var _0x3db7b4=_0x34fb2b[_0xb7ec('0x5e')][_0xea058f];var _0x1db52f='i';var _0x10d81c=_[_0xb7ec('0x5f')](_0x196bd1,[_0xb7ec('0x2d'),_0x3db7b4[_0xb7ec('0x4a')]]);if(!_0x10d81c){switch(_0x3db7b4['field']){case _0xb7ec('0x60'):if(_0x3db7b4['value']==0x1){_0x5e0c6a[_0xb7ec('0x61')]('`'+_0x3db7b4['field']+_0xb7ec('0x62'));}else{_0x5e0c6a[_0xb7ec('0x61')]('`'+_0x3db7b4[_0xb7ec('0x4a')]+_0xb7ec('0x63'));}break;case'Contact':if(_0x3db7b4['operator']==='$substring'){if(_0x3db7b4['value'][_0xb7ec('0x33')]('\x20')[_0xb7ec('0x43')]>0x1){_0x2e6a27[_0x38f1a8](_0xb7ec('0x64'),qs['getFullTextValue'](_0x3db7b4['value']),null);}else{var _0x34861c='%'+_0x3db7b4[_0xb7ec('0x65')]+'%';_0x2e6a27[_0x38f1a8](_0xb7ec('0x66'),_0x34861c,_0x34861c,_0x34861c);}}else{_0x10d81c=_[_0xb7ec('0x5f')](_0x196bd1,[_0xb7ec('0x2d'),_0xb7ec('0x67')]);_0x3db7b4[_0xb7ec('0x4a')]='ContactId';_0x513393=as['buildExpression'](_0x1db52f,_0x10d81c[_0xb7ec('0x3b')],_0x3db7b4);_0x2e6a27[_0x38f1a8](_0x513393[_0xb7ec('0x68')],_0x513393['value'][_0xb7ec('0x69')],_0x513393[_0xb7ec('0x65')]['end']);}break;case'Tag':var _0x3ffc03=_0x3db7b4['value'][_0xb7ec('0x33')](',')[_0xb7ec('0x38')](function(_0x7cbf32){return Number(_0x7cbf32);});_0x3ffc03[_0xb7ec('0x34')](function(_0x257bb2){_0x142d0c['or'](_0xb7ec('0x6a'),'%,'+_0x257bb2+',%');});_0x3c04c3=_['union'](_0x3c04c3,_0x3ffc03);break;case'User':if(_0x3db7b4[_0xb7ec('0x6b')]===_0xb7ec('0x6c')){_0x2e6a27[_0x38f1a8]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x3db7b4['value']+'%',null);}else{_0x10d81c=_['find'](_0x196bd1,[_0xb7ec('0x2d'),_0xb7ec('0x6d')]);_0x3db7b4['field']='UserId';_0x513393=as[_0xb7ec('0x6e')](_0x1db52f,_0x10d81c[_0xb7ec('0x3b')],_0x3db7b4);_0x2e6a27[_0x38f1a8](_0x513393['text'],_0x513393[_0xb7ec('0x65')][_0xb7ec('0x69')],_0x513393[_0xb7ec('0x65')][_0xb7ec('0x1f')]);}break;case _0xb7ec('0x6f'):_0x513393=as['buildExpression']('me',null,_0x3db7b4);_0x2e6a27[_0x38f1a8](_0x513393[_0xb7ec('0x68')],_0x513393[_0xb7ec('0x65')][_0xb7ec('0x69')],_0x513393[_0xb7ec('0x65')][_0xb7ec('0x1f')]);break;}}else{var _0x513393=as[_0xb7ec('0x6e')](_0x1db52f,_0x10d81c['type'],_0x3db7b4);_0x2e6a27[_0x38f1a8](_0x513393['text'],_0x513393[_0xb7ec('0x65')][_0xb7ec('0x69')],_0x513393[_0xb7ec('0x65')]['end']);}}}else{var _0x2bd1e8=_(_0x5dabed[_0xb7ec('0x3e')])[_0xb7ec('0x70')]()[_0xb7ec('0x38')](function(_0x563917){return _['some'](_0x196bd1,['name',_0x563917])?_0x563917:undefined;})[_0xb7ec('0x71')]()[_0xb7ec('0x65')]();if(!_[_0xb7ec('0x72')](_0x2bd1e8)){_0x2bd1e8[_0xb7ec('0x34')](function(_0x144a40){if(_0x144a40===_0xb7ec('0x73')){_0x5e0c6a['where'](_0xb7ec('0x74'),[][_0xb7ec('0x75')](_0x5dabed[_0xb7ec('0x3e')][_0x144a40]));}else if(_0x144a40===_0xb7ec('0x76')){var _0x346a10=JSON[_0xb7ec('0x77')](_0x5dabed['query'][_0x144a40])[_0xb7ec('0x78')];var _0x18cf7d=JSON['parse'](_0x5dabed[_0xb7ec('0x3e')][_0x144a40])['$lte'];_0x5e0c6a[_0xb7ec('0x47')](_0xb7ec('0x79'),_0x346a10,_0x18cf7d);}else{if(_0x5dabed['query'][_0x144a40]===_0xb7ec('0x7a')){_0x5e0c6a[_0xb7ec('0x47')]('i.'+_0x144a40+'\x20IS\x20NULL');}else{_0x5e0c6a[_0xb7ec('0x47')]('i.'+_0x144a40+_0xb7ec('0x7b'),_0x5dabed[_0xb7ec('0x3e')][_0x144a40]);}}});}if(_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x7c')]){if(_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x7c')]==0x1){_0x5e0c6a[_0xb7ec('0x61')](_0xb7ec('0x7d'));}else{_0x5e0c6a[_0xb7ec('0x61')](_0xb7ec('0x7e'));}}if(_0x5dabed['query'][_0xb7ec('0x7f')]){_0x3c04c3=_[_0xb7ec('0x80')](_0x5dabed[_0xb7ec('0x3e')]['tag'])?_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x7f')]:new Array(_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x7f')]);_0x3c04c3['forEach'](function(_0x304915){_0x142d0c['or'](_0xb7ec('0x6a'),'%,'+_0x304915+',%');});}if(_0x5dabed[_0xb7ec('0x3e')]['filter']){var _0x1865d7=_0x5dabed[_0xb7ec('0x3e')]['filter'][_0xb7ec('0x81')]('\x5c','\x5c\x5c')[_0xb7ec('0x81')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x1865d7)){_0x2e6a27['or'](_0xb7ec('0x82'),_0x1865d7+'%');}else{_0x2e6a27['or'](_0xb7ec('0x83'),qs[_0xb7ec('0x84')](_0x1865d7))['or'](_0xb7ec('0x85'),_0x1865d7+'%')['or'](_0xb7ec('0x86'),_0x1865d7+'%');}}}_0x5e0c6a[_0xb7ec('0x47')](_0x2e6a27);_0x5e0c6a[_0xb7ec('0x87')](_0xb7ec('0x88'));var _0x2fbda0={'type':db[_0xb7ec('0x89')][_0xb7ec('0x8a')][_0xb7ec('0x8b')],'raw':!![]};var _0xcbd338=_0x5e0c6a['clone']();_0xcbd338[_0xb7ec('0x4a')](_0xb7ec('0x88'));_0xcbd338['field'](_0xb7ec('0x8c'),'unreadMessages');if(_0x35bc68[_0xb7ec('0x45')]){_0x35bc68[_0xb7ec('0x45')]['forEach'](function(_0x3de644){var _0x14de2b=_0x3de644[0x0]===_0xb7ec('0x8d')?_0x3de644[0x0]:'i.'+_0x3de644[0x0];_0x5e0c6a[_0xb7ec('0x45')](_0x14de2b,_0x3de644[0x1]===_0xb7ec('0x8e')?![]:!![]);});}if(!_[_0xb7ec('0x72')](_0x3c04c3)){_0x5e0c6a[_0xb7ec('0x61')](_0x142d0c);_0xcbd338[_0xb7ec('0x47')](_0xb7ec('0x8f'),_0x3c04c3);}BPromise[_0xb7ec('0x90')]()[_0xb7ec('0x29')](function(){if(!_0x34fb2b){if(_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x73')])return;_0xcbd338[_0xb7ec('0x47')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');_0x5e0c6a['where'](_0xb7ec('0x91'));return;}if(_0x5dabed['user'][_0xb7ec('0x92')]!==_0xb7ec('0x93'))return;return _0x5dabed[_0xb7ec('0x94')]['getOpenchannelAccounts']({'attributes':['id'],'raw':!![]})[_0xb7ec('0x29')](function(_0x36a3fe){if(_[_0xb7ec('0x72')](_0x36a3fe)){_0xcbd338[_0xb7ec('0x47')](_0xb7ec('0x95'));_0x5e0c6a[_0xb7ec('0x47')](_0xb7ec('0x95'));}else{_0xcbd338['where'](_0xb7ec('0x74'),_['map'](_0x36a3fe,'id'));_0x5e0c6a[_0xb7ec('0x47')](_0xb7ec('0x74'),_[_0xb7ec('0x38')](_0x36a3fe,'id'));}});})['then'](function(){if(_0x5dabed[_0xb7ec('0x94')][_0xb7ec('0x92')]===_0xb7ec('0x93')&&!_0x34fb2b&&!_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x73')])return[];return db[_0xb7ec('0x96')][_0xb7ec('0x3e')](_0xcbd338[_0xb7ec('0x97')](),_0x2fbda0);})[_0xb7ec('0x29')](function(_0x4755f6){_0x27dc3a[_0xb7ec('0x24')]=_0x4755f6[_0xb7ec('0x43')];if(_0x27dc3a[_0xb7ec('0x24')]===0x0)return[];return db[_0xb7ec('0x96')][_0xb7ec('0x3e')](_0x261da2['toString'](),_0x2fbda0)[_0xb7ec('0x29')](function(_0x2b2025){_0x114d3c=_['keyBy'](_0x2b2025,'id');_0x2fbda0=_[_0xb7ec('0x98')](_0x2fbda0,{'model':db[_0xb7ec('0x99')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x41')]){_0x35bc68[_0xb7ec('0x42')][_0xb7ec('0x34')](function(_0x4ba036){_0x5e0c6a[_0xb7ec('0x4a')]('i.'+_0x4ba036);});}else{_0x5e0c6a[_0xb7ec('0x4a')](_0xb7ec('0x8c'),_0xb7ec('0x60'));_0x5e0c6a[_0xb7ec('0x4a')](_0xb7ec('0x9a'),'Account.key');_0x5e0c6a['field'](_0xb7ec('0x9b'),_0xb7ec('0x9c'));_0x5e0c6a[_0xb7ec('0x4a')](_0xb7ec('0x9d'),_0xb7ec('0x8d'));_0x5e0c6a['field'](_0xb7ec('0x9e'));_0x5e0c6a['field'](_0xb7ec('0x9f'),_0xb7ec('0xa0'));_0x5e0c6a['field']('c.lastName',_0xb7ec('0xa1'));_0x5e0c6a[_0xb7ec('0x4a')](_0xb7ec('0xa2'),_0xb7ec('0xa3'));_0x5e0c6a[_0xb7ec('0x4a')]('c.phone',_0xb7ec('0xa4'));_0x5e0c6a[_0xb7ec('0x4a')]('c.mobile',_0xb7ec('0xa5'));_0x5e0c6a['field'](_0xb7ec('0xa6'),_0xb7ec('0xa7'));_0x5e0c6a[_0xb7ec('0x4a')](_0xb7ec('0xa8'),'Owner.fullname');_0x5e0c6a[_0xb7ec('0x4a')](_0xb7ec('0xa9'),'Owner.internal');_0x5e0c6a['field'](_0xb7ec('0xaa'),_0xb7ec('0x31'));}if(_0x35bc68[_0xb7ec('0x23')])_0x5e0c6a[_0xb7ec('0x23')](_0x35bc68[_0xb7ec('0x23')]);if(_0x35bc68[_0xb7ec('0x21')])_0x5e0c6a[_0xb7ec('0x21')](_0x35bc68[_0xb7ec('0x21')]);return db[_0xb7ec('0x96')][_0xb7ec('0x3e')](_0x5e0c6a[_0xb7ec('0x97')](),_0x2fbda0);})['then'](function(_0x32243e){if(_0x32243e['length']>0x0)_0x3427e2[_0xb7ec('0x47')](_0xb7ec('0xab'),_[_0xb7ec('0x38')](_0x32243e,'id'));return db[_0xb7ec('0x96')]['query'](_0x3427e2[_0xb7ec('0x97')](),_0x2fbda0)[_0xb7ec('0x29')](function(_0x2a2a6c){var _0x3f5f6a=_[_0xb7ec('0xac')](_0x2a2a6c,'OpenchannelInteractionId');var _0x1cde3a=[];_0x32243e['forEach'](function(_0x3e133d){_0x1cde3a['push'](updateOpenchannelInteraction(_0x3e133d,_0x114d3c,_0x3f5f6a));});return BPromise[_0xb7ec('0xad')](_0x1cde3a);});});})['then'](function(_0x2446a5){_0x27dc3a[_0xb7ec('0xae')]=_0x2446a5;return _0x27dc3a;})[_0xb7ec('0x29')](respondWithFilteredResult(_0x3eeeb3,_0x35bc68))['catch'](handleError(_0x3eeeb3,null));};exports[_0xb7ec('0xaf')]=function(_0x43c1dd,_0x416f85){var _0x478456={};if(_0x43c1dd[_0xb7ec('0x3e')][_0xb7ec('0x3b')]&&_0x43c1dd['query'][_0xb7ec('0x3b')]==='from'){_0x478456[_0xb7ec('0x4c')]=_0x43c1dd[_0xb7ec('0xb0')]['id'];}else{_0x478456['id']=_0x43c1dd['params']['id'];}var _0x3657cf={'raw':![],'where':_0x478456},_0x12b14b={};_0x12b14b[_0xb7ec('0x3d')]=_['keys'](db[_0xb7ec('0x99')][_0xb7ec('0x39')]);_0x12b14b[_0xb7ec('0x3e')]=_['keys'](_0x43c1dd['query']);_0x12b14b[_0xb7ec('0x3f')]=_[_0xb7ec('0x40')](_0x12b14b['model'],_0x12b14b[_0xb7ec('0x3e')]);_0x3657cf[_0xb7ec('0x42')]=_[_0xb7ec('0x40')](_0x12b14b['model'],qs[_0xb7ec('0x41')](_0x43c1dd[_0xb7ec('0x3e')][_0xb7ec('0x41')]));_0x3657cf[_0xb7ec('0x42')]=_0x3657cf['attributes'][_0xb7ec('0x43')]?_0x3657cf[_0xb7ec('0x42')]:_0x12b14b[_0xb7ec('0x3d')];if(_0x43c1dd['query']['includeAll']){_0x3657cf[_0xb7ec('0xb1')]=[{'all':!![]}];}_0x3657cf=_[_0xb7ec('0x98')]({},_0x3657cf,_0x43c1dd['options']);return db['OpenchannelInteraction'][_0xb7ec('0x5f')](_0x3657cf)[_0xb7ec('0x29')](handleEntityNotFound(_0x416f85,null))[_0xb7ec('0x29')](respondWithResult(_0x416f85,null))[_0xb7ec('0x36')](handleError(_0x416f85,null));};exports[_0xb7ec('0xb2')]=function(_0x3faff1,_0x55bde0){return db[_0xb7ec('0x99')][_0xb7ec('0xb2')](_0x3faff1[_0xb7ec('0x6f')],{})[_0xb7ec('0x29')](respondWithResult(_0x55bde0,0xc9))[_0xb7ec('0x36')](handleError(_0x55bde0,null));};exports[_0xb7ec('0xb3')]=function(_0x3a82be,_0x134408){if(_0x3a82be[_0xb7ec('0x6f')]['id']){delete _0x3a82be[_0xb7ec('0x6f')]['id'];}return db[_0xb7ec('0x99')][_0xb7ec('0x5f')]({'where':{'id':_0x3a82be['params']['id']}})[_0xb7ec('0x29')](handleEntityNotFound(_0x134408,null))[_0xb7ec('0x29')](saveUpdates(_0x3a82be['body'],null))[_0xb7ec('0x29')](respondWithResult(_0x134408,null))[_0xb7ec('0x36')](handleError(_0x134408,null));};exports[_0xb7ec('0x2a')]=function(_0x1e6d4a,_0x57be5c){return db[_0xb7ec('0x99')][_0xb7ec('0x5f')]({'where':{'id':_0x1e6d4a[_0xb7ec('0xb0')]['id']}})[_0xb7ec('0x29')](handleEntityNotFound(_0x57be5c,null))['then'](removeEntity(_0x57be5c,null))[_0xb7ec('0x36')](handleError(_0x57be5c,null));};exports[_0xb7ec('0xb4')]=function(_0x559e92,_0x86b1f2){return db[_0xb7ec('0x99')][_0xb7ec('0xb4')]()[_0xb7ec('0x29')](respondWithResult(_0x86b1f2,null))[_0xb7ec('0x36')](handleError(_0x86b1f2,null));};exports[_0xb7ec('0xb5')]=function(_0x3d8206,_0x124306,_0x223100){return db[_0xb7ec('0xb6')][_0xb7ec('0x5f')]({'where':{'id':_0x3d8206['params']['id']}})['then'](handleEntityNotFound(_0x124306,null))[_0xb7ec('0x29')](function(_0x3b4aef){if(_0x3b4aef){return _0x3b4aef[_0xb7ec('0xb5')](_0x3d8206[_0xb7ec('0x6f')][_0xb7ec('0xb7')],_[_0xb7ec('0xb8')](_0x3d8206[_0xb7ec('0x6f')],[_0xb7ec('0xb7'),'id'])||{});}})[_0xb7ec('0x29')](respondWithResult(_0x124306,null))[_0xb7ec('0x36')](handleError(_0x124306,null));};exports[_0xb7ec('0xb9')]=function(_0x2a1329,_0x318346,_0x18e450){var _0x38e664={'raw':![],'where':{}};var _0x162e52={};var _0x1a3b96={'count':0x0,'rows':[]};return db[_0xb7ec('0x99')][_0xb7ec('0xba')]({'where':{'id':_0x2a1329[_0xb7ec('0xb0')]['id']}})[_0xb7ec('0x29')](handleEntityNotFound(_0x318346,null))[_0xb7ec('0x29')](function(_0x37f2d6){if(_0x37f2d6){_0x162e52['model']=_[_0xb7ec('0x70')](db[_0xb7ec('0xb6')][_0xb7ec('0x39')]);_0x162e52['query']=_[_0xb7ec('0x70')](_0x2a1329[_0xb7ec('0x3e')]);_0x162e52[_0xb7ec('0x3f')]=_[_0xb7ec('0x40')](_0x162e52[_0xb7ec('0x3d')],_0x162e52['query']);_0x38e664['attributes']=_[_0xb7ec('0x40')](_0x162e52[_0xb7ec('0x3d')],qs['fields'](_0x2a1329['query']['fields']));_0x38e664[_0xb7ec('0x42')]=_0x38e664[_0xb7ec('0x42')]['length']?_0x38e664['attributes']:_0x162e52['model'];if(!_0x2a1329[_0xb7ec('0x3e')][_0xb7ec('0x44')]('nolimit')){_0x38e664['limit']=qs['limit'](_0x2a1329[_0xb7ec('0x3e')][_0xb7ec('0x23')]);_0x38e664['offset']=qs[_0xb7ec('0x21')](_0x2a1329['query']['offset']);}_0x38e664['order']=qs[_0xb7ec('0x46')](_0x2a1329[_0xb7ec('0x3e')]['sort']);_0x38e664[_0xb7ec('0x47')]=qs[_0xb7ec('0x3f')](_['pick'](_0x2a1329[_0xb7ec('0x3e')],_0x162e52['filters']));_0x38e664[_0xb7ec('0x47')][_0xb7ec('0xbb')]=_0x37f2d6['id'];if(_0x2a1329[_0xb7ec('0x3e')][_0xb7ec('0xbc')]){_0x38e664[_0xb7ec('0x47')]=_[_0xb7ec('0x98')](_0x38e664[_0xb7ec('0x47')],{'$or':_[_0xb7ec('0x38')](_0x38e664[_0xb7ec('0x42')],function(_0x402d82){var _0x5e862e={};_0x5e862e[_0x402d82]={'$like':'%'+_0x2a1329[_0xb7ec('0x3e')][_0xb7ec('0xbc')]+'%'};return _0x5e862e;})});}if(_0x2a1329[_0xb7ec('0x3e')][_0xb7ec('0x78')]){var _0x1cc899=_0x2a1329['query'][_0xb7ec('0x78')][_0xb7ec('0x33')](',');var _0x1d052e={};_0x1d052e[_0x1cc899[0x0]]={'$gte':moment(_0x1cc899[0x1])[_0xb7ec('0xbd')](_0xb7ec('0xbe'))};_0x38e664[_0xb7ec('0x47')]=_['merge'](_0x38e664[_0xb7ec('0x47')],_0x1d052e);}_0x38e664=_['merge']({},_0x38e664,_0x2a1329[_0xb7ec('0xbf')]);return db['OpenchannelMessage'][_0xb7ec('0x24')]({'where':_0x38e664[_0xb7ec('0x47')]})[_0xb7ec('0x29')](function(_0x57f922){_0x1a3b96['count']=_0x57f922;if(_0x2a1329['query'][_0xb7ec('0xc0')]){_0x38e664['include']=[{'all':!![]}];}return db['OpenchannelMessage'][_0xb7ec('0xc1')](_0x38e664);})[_0xb7ec('0x29')](function(_0x58ba98){_0x1a3b96[_0xb7ec('0xae')]=_0x58ba98;return _0x1a3b96;});}})[_0xb7ec('0x29')](respondWithFilteredResult(_0x318346,_0x38e664))['catch'](handleError(_0x318346,null));};exports[_0xb7ec('0xc2')]=function(_0x2c1e5e,_0x24256e,_0x5cecea){return db[_0xb7ec('0x99')][_0xb7ec('0x5f')]({'where':{'id':_0x2c1e5e[_0xb7ec('0xb0')]['id']}})[_0xb7ec('0x29')](handleEntityNotFound(_0x24256e,null))['then'](function(_0x408d3c){if(_0x408d3c){return _0x408d3c[_0xb7ec('0xc3')](_0x2c1e5e['body'][_0xb7ec('0xb7')],_['omit'](_0x2c1e5e[_0xb7ec('0x6f')],[_0xb7ec('0xb7'),'id'])||{})[_0xb7ec('0xc4')](function(){return db[_0xb7ec('0xc5')][_0xb7ec('0xc1')]({'attributes':['id','name',_0xb7ec('0x4b')],'where':{'id':_0x2c1e5e[_0xb7ec('0x6f')][_0xb7ec('0xb7')]}});})[_0xb7ec('0x29')](function(_0x29a042){socket[_0xb7ec('0xc6')](_0xb7ec('0xc7'),{'id':Number(_0x2c1e5e[_0xb7ec('0xb0')]['id']),'tags':_0x29a042||[]});return{'id':Number(_0x2c1e5e[_0xb7ec('0xb0')]['id']),'tags':_0x29a042||[]};});}})[_0xb7ec('0x29')](respondWithResult(_0x24256e,null))[_0xb7ec('0x36')](handleError(_0x24256e,null));};exports[_0xb7ec('0xc8')]=function(_0x1e4fe4,_0x178732,_0x5d465c){return db[_0xb7ec('0x99')]['find']({'where':{'id':_0x1e4fe4[_0xb7ec('0xb0')]['id']}})['then'](handleEntityNotFound(_0x178732,null))[_0xb7ec('0x29')](function(_0x197917){if(_0x197917){return _0x197917['removeTags'](_0x1e4fe4[_0xb7ec('0x3e')][_0xb7ec('0xb7')]);}})[_0xb7ec('0x29')](respondWithStatusCode(_0x178732,null))[_0xb7ec('0x36')](handleError(_0x178732,null));};exports[_0xb7ec('0xc9')]=function(_0x280a16,_0xa7370c){var _0x35b76c=moment()[_0xb7ec('0xca')]()[_0xb7ec('0x97')]();var _0x1cd188=path['join'](config[_0xb7ec('0xcb')],'server',_0xb7ec('0xcc'),_0xb7ec('0xcd'));var _0x16df20=path['join'](config['root'],_0xb7ec('0xce'),_0xb7ec('0xcc'),_0xb7ec('0xcf'));var _0x87f794=path[_0xb7ec('0xd0')](_0x1cd188,_0x35b76c);var _0x3d14ce=util['format'](_0xb7ec('0xd1'),_0x280a16[_0xb7ec('0xb0')]['id'],_0x35b76c);var _0x17fbf5=path[_0xb7ec('0xd0')](_0x1cd188,_0x3d14ce);var _0x3d93ef=[];_0x3d93ef['push']({'model':db[_0xb7ec('0xd2')],'as':_0xb7ec('0xd2'),'attributes':['id',_0xb7ec('0x30')],'raw':!![]});_0x3d93ef['push']({'model':db[_0xb7ec('0xd3')],'as':_0xb7ec('0xd4'),'attributes':['id','firstName',_0xb7ec('0xd5')],'raw':!![]});if(_0x280a16[_0xb7ec('0x3e')]['attachments']){_0x3d93ef[_0xb7ec('0x35')]({'model':db[_0xb7ec('0xd6')],'as':_0xb7ec('0xd6'),'raw':!![]});}var _0x33bcf9=[{'model':db[_0xb7ec('0xb6')],'as':'Messages','attributes':['id',_0xb7ec('0x6f'),_0xb7ec('0x76'),_0xb7ec('0xd7'),_0xb7ec('0xd8'),_0xb7ec('0x7c')],'include':_0x3d93ef}];_0x33bcf9[_0xb7ec('0x35')]({'model':db[_0xb7ec('0xd9')],'as':'Account','attributes':['id',_0xb7ec('0x2d')]});_0x33bcf9[_0xb7ec('0x35')]({'model':db[_0xb7ec('0xd2')],'as':_0xb7ec('0xda'),'attributes':['id',_0xb7ec('0x30')]});return db[_0xb7ec('0x99')][_0xb7ec('0x5f')]({'where':{'id':_0x280a16['params']['id']},'include':_0x33bcf9})['then'](handleEntityNotFound(_0xa7370c,null))[_0xb7ec('0x29')](function(_0x34315a){if(_0x34315a){var _0x1a3c16=_0x34315a[_0xb7ec('0xdb')]({'plain':!![]});fs[_0xb7ec('0xdc')](_0x87f794);var _0x52c33d={'channel':'Openchannel','account':_0x1a3c16['Account'][_0xb7ec('0x2d')],'agent':_0x1a3c16[_0xb7ec('0xda')]?_0x1a3c16[_0xb7ec('0xda')]['fullname']:_0xb7ec('0xdd'),'createdAt':moment(_0x1a3c16[_0xb7ec('0x76')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xb7ec('0x97')](),'closedAt':_0x1a3c16['closed']?moment(_0x1a3c16[_0xb7ec('0xde')])[_0xb7ec('0xbd')](_0xb7ec('0xbe'))[_0xb7ec('0x97')]():'','disposition':_0x1a3c16[_0xb7ec('0xdf')],'visibility':_0x1a3c16[_0xb7ec('0xe0')]?_0xb7ec('0xe1'):'Private','messages':_(_0x1a3c16[_0xb7ec('0xe2')])[_0xb7ec('0xbc')]({'secret':![]})['map'](function(_0x437ae1){if(_0x437ae1[_0xb7ec('0xd6')]){var _0x74132=path[_0xb7ec('0xd0')](_0x16df20,_0x437ae1['Attachment'][_0xb7ec('0xe3')]);if(fs[_0xb7ec('0xe4')](_0x74132)){fs[_0xb7ec('0xe5')](_0x74132)['pipe'](fs['createWriteStream'](path[_0xb7ec('0xd0')](_0x87f794,_0x437ae1[_0xb7ec('0xd6')][_0xb7ec('0xe3')])));}}return{'date':moment(_0x437ae1[_0xb7ec('0x76')])[_0xb7ec('0xbd')](_0xb7ec('0xbe'))['toString'](),'sender':_0x437ae1[_0xb7ec('0xd7')]===_0xb7ec('0xe6')?_0x437ae1[_0xb7ec('0xd2')]?_0x437ae1[_0xb7ec('0xd2')][_0xb7ec('0x30')]:_0xb7ec('0xe7'):_0x437ae1[_0xb7ec('0xd4')]['firstName']+(_0x437ae1[_0xb7ec('0xd4')][_0xb7ec('0xd5')]?'\x20'+_0x437ae1[_0xb7ec('0xd4')][_0xb7ec('0xd5')]:''),'body':_0x437ae1[_0xb7ec('0xd6')]?_0x437ae1['Attachment'][_0xb7ec('0xe3')]:_0x437ae1[_0xb7ec('0x6f')],'direction':_0x437ae1[_0xb7ec('0xd7')]===_0xb7ec('0xe6')?'A':'C','secret':_0x437ae1[_0xb7ec('0xd8')],'read':_0x437ae1[_0xb7ec('0x7c')],'attachment':_0x437ae1[_0xb7ec('0xd6')]};})[_0xb7ec('0x65')]()};return ejs[_0xb7ec('0xe8')](path[_0xb7ec('0xd0')](config[_0xb7ec('0xcb')],_0xb7ec('0xce'),_0xb7ec('0xe9'),'downloadInteraction.ejs'),{'interaction':_0x52c33d})[_0xb7ec('0x29')](function(_0x1aecc8){var _0xea345=path[_0xb7ec('0xd0')](_0x87f794,'transcript-'+_0x1a3c16['id']+'-'+_0x35b76c+_0xb7ec('0xea'));var _0xf464ca={'path':_0xea345,'channel':_0xb7ec('0xeb'),'interactionId':_0x1a3c16['id']};return pdf[_0xb7ec('0xec')](_0x1aecc8,_0xf464ca);})['then'](function(){return new BPromise(function(_0x9570b3,_0x59378d){zipdir(_0x87f794,{'saveTo':_0x17fbf5},function(_0x54839b,_0x2b01fb){if(_0x54839b)return _0x59378d(_0x54839b);return _0x9570b3(_0x2b01fb);});})['then'](function(){return new BPromise(function(_0x4f9386,_0x5824a1){rimraf(_0x87f794,function(_0x5221cf){if(_0x5221cf)_0x5824a1(_0x5221cf);return _0x4f9386();});});})[_0xb7ec('0x29')](function(){return _0xa7370c[_0xb7ec('0xc9')](_0x17fbf5,_0x3d14ce,function(_0x290c55){if(_0x290c55){console[_0xb7ec('0xed')]('err',_0x290c55);}else{fs[_0xb7ec('0xee')](_0x17fbf5);}});});});}else{return _0xa7370c['sendStatus'](0xc8);}})[_0xb7ec('0x36')](handleError(_0xa7370c,null));};
\ No newline at end of file
index 1be5c4e..5a3fca8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3139=['setMaxListeners','save','remove','then','setDataValue','map','findAll','unreadMessages','length','emit','catch','hook','../../mysqldb','OpenchannelInteraction','OpenchannelMessage'];(function(_0x3365c3,_0x18dc4e){var _0x13cdd6=function(_0x4328a0){while(--_0x4328a0){_0x3365c3['push'](_0x3365c3['shift']());}};_0x13cdd6(++_0x18dc4e);}(_0x3139,0x75));var _0x9313=function(_0x1a7ed4,_0x58cee5){_0x1a7ed4=_0x1a7ed4-0x0;var _0x39e542=_0x3139[_0x1a7ed4];return _0x39e542;};'use strict';var EventEmitter=require('events');var OpenchannelInteraction=require(_0x9313('0x0'))['db'][_0x9313('0x1')];var OpenchannelMessage=require(_0x9313('0x0'))['db'][_0x9313('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x9313('0x3')](0x0);var events={'afterCreate':_0x9313('0x4'),'afterUpdate':'update','afterDestroy':_0x9313('0x5')};function emitEvent(_0x391dc2){return function(_0x537b93,_0x411d23,_0xf9ace1){_0x537b93['getUsers']({'attributes':['id'],'raw':!![]})[_0x9313('0x6')](function(_0x4c1606){_0x537b93[_0x9313('0x7')]('Users',_0x4c1606[_0x9313('0x8')](function(_0x1fea32){return{'id':_0x1fea32['id']};}));return OpenchannelMessage[_0x9313('0x9')]({'where':{'OpenchannelInteractionId':_0x537b93['id'],'direction':'in','read':![]},'raw':!![]});})[_0x9313('0x6')](function(_0x449848){_0x537b93[_0x9313('0x7')](_0x9313('0xa'),_0x449848[_0x9313('0xb')]);OpenchannelInteractionEvents[_0x9313('0xc')](_0x391dc2+':'+_0x537b93['id'],_0x537b93);OpenchannelInteractionEvents['emit'](_0x391dc2,_0x537b93);_0xf9ace1(null);})[_0x9313('0xd')](_0xf9ace1(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction[_0x9313('0xe')](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x6553=['exports','events','OpenchannelInteraction','OpenchannelMessage','setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook'];(function(_0x442f02,_0x47d845){var _0xab6ef1=function(_0x4cad5c){while(--_0x4cad5c){_0x442f02['push'](_0x442f02['shift']());}};_0xab6ef1(++_0x47d845);}(_0x6553,0x131));var _0x3655=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x6553[_0x5b644e];return _0x49c6bf;};'use strict';var EventEmitter=require(_0x3655('0x0'));var OpenchannelInteraction=require('../../mysqldb')['db'][_0x3655('0x1')];var OpenchannelMessage=require('../../mysqldb')['db'][_0x3655('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x3655('0x3')](0x0);var events={'afterCreate':_0x3655('0x4'),'afterUpdate':_0x3655('0x5'),'afterDestroy':_0x3655('0x6')};function emitEvent(_0x249ac4){return function(_0x2289c7,_0x25326e,_0x17e94b){_0x2289c7[_0x3655('0x7')]({'attributes':['id'],'raw':!![]})[_0x3655('0x8')](function(_0x50dc60){_0x2289c7[_0x3655('0x9')](_0x3655('0xa'),_0x50dc60['map'](function(_0xc27b0d){return{'id':_0xc27b0d['id']};}));return OpenchannelMessage[_0x3655('0xb')]({'where':{'OpenchannelInteractionId':_0x2289c7['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x5deb5c){_0x2289c7[_0x3655('0x9')](_0x3655('0xc'),_0x5deb5c[_0x3655('0xd')]);OpenchannelInteractionEvents[_0x3655('0xe')](_0x249ac4+':'+_0x2289c7['id'],_0x2289c7);OpenchannelInteractionEvents[_0x3655('0xe')](_0x249ac4,_0x2289c7);_0x17e94b(null);})[_0x3655('0xf')](_0x17e94b(null));};}for(var e in events){if(events[_0x3655('0x10')](e)){var event=events[e];OpenchannelInteraction[_0x3655('0x11')](e,emitEvent(event));}}module[_0x3655('0x12')]=OpenchannelInteractionEvents;
\ No newline at end of file
index d435433..53ebabc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd464=['closedAt','format','lodash','util','api','bluebird','request-promise','rimraf','../../config/environment','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','changed'];(function(_0x5a8aa3,_0x2294d5){var _0x5d0458=function(_0x62d096){while(--_0x62d096){_0x5a8aa3['push'](_0x5a8aa3['shift']());}};_0x5d0458(++_0x2294d5);}(_0xd464,0x162));var _0x4d46=function(_0x589bdc,_0x3e213a){_0x589bdc=_0x589bdc-0x0;var _0x5ae84e=_0xd464[_0x589bdc];return _0x5ae84e;};'use strict';var _=require(_0x4d46('0x0'));var util=require(_0x4d46('0x1'));var logger=require('../../config/logger')(_0x4d46('0x2'));var moment=require('moment');var BPromise=require(_0x4d46('0x3'));var rp=require(_0x4d46('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4d46('0x5'));var config=require(_0x4d46('0x6'));var attributes=require(_0x4d46('0x7'));module[_0x4d46('0x8')]=function(_0x1ee839,_0x2ea898){return _0x1ee839[_0x4d46('0x9')](_0x4d46('0xa'),attributes,{'tableName':_0x4d46('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4d46('0xc'),'collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x948597,_0x5886ac,_0x279109){if(_0x948597[_0x4d46('0xd')]('closed')){_0x948597[_0x4d46('0xe')]=moment()[_0x4d46('0xf')]('YYYY-MM-DD\x20HH:mm:ss');}_0x279109(null,_0x948597);}}});};
\ No newline at end of file
+var _0xe970=['util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelInteraction.attributes','exports','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash'];(function(_0x5c859c,_0x7093ff){var _0x252efc=function(_0x20eea5){while(--_0x20eea5){_0x5c859c['push'](_0x5c859c['shift']());}};_0x252efc(++_0x7093ff);}(_0xe970,0x18b));var _0x0e97=function(_0x19ef82,_0x3faad1){_0x19ef82=_0x19ef82-0x0;var _0x3a35c2=_0xe970[_0x19ef82];return _0x3a35c2;};'use strict';var _=require(_0x0e97('0x0'));var util=require(_0x0e97('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0e97('0x2'));var BPromise=require(_0x0e97('0x3'));var rp=require(_0x0e97('0x4'));var fs=require('fs');var path=require(_0x0e97('0x5'));var rimraf=require(_0x0e97('0x6'));var config=require(_0x0e97('0x7'));var attributes=require(_0x0e97('0x8'));module[_0x0e97('0x9')]=function(_0x1dc68b,_0x7c1677){return _0x1dc68b['define'](_0x0e97('0xa'),attributes,{'tableName':_0x0e97('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0e97('0xc'),'collate':_0x0e97('0xd'),'hooks':{'beforeUpdate':function(_0x413827,_0x3fa811,_0x5e5896){if(_0x413827['changed'](_0x0e97('0xe'))){_0x413827[_0x0e97('0xf')]=moment()[_0x0e97('0x10')](_0x0e97('0x11'));}_0x5e5896(null,_0x413827);}}});};
\ No newline at end of file
index 911f47a..d5969ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b5a=['options','raw','where','attributes','debug','AddTagsToOpenchannelInteraction','OpenchannelInteraction','find','addTags','ids','spread','AddTags','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateOpenchannelInteraction','update','body'];(function(_0x3641ed,_0x7fd25d){var _0xefc91=function(_0xe73966){while(--_0xe73966){_0x3641ed['push'](_0x3641ed['shift']());}};_0xefc91(++_0x7fd25d);}(_0x8b5a,0x102));var _0xa8b5=function(_0x4c1f6a,_0x45dd0d){_0x4c1f6a=_0x4c1f6a-0x0;var _0x11a8f8=_0x8b5a[_0x4c1f6a];return _0x11a8f8;};'use strict';var _=require('lodash');var util=require(_0xa8b5('0x0'));var moment=require(_0xa8b5('0x1'));var BPromise=require(_0xa8b5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa8b5('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xa8b5('0x4'));var logger=require(_0xa8b5('0x5'))('rpc');var config=require(_0xa8b5('0x6'));var jayson=require(_0xa8b5('0x7'));var client=jayson[_0xa8b5('0x8')][_0xa8b5('0x9')]({'port':0x232a});config[_0xa8b5('0xa')]=_['defaults'](config[_0xa8b5('0xa')],{'host':_0xa8b5('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa8b5('0xa')]));require(_0xa8b5('0xc'))[_0xa8b5('0xd')](socket);function respondWithRpcPromise(_0x7a35da,_0x1cc7e4,_0x38afff){return new BPromise(function(_0x2459ed,_0x1033d0){return client[_0xa8b5('0xe')](_0x7a35da,_0x38afff)[_0xa8b5('0xf')](function(_0x54f655){logger[_0xa8b5('0x10')](_0xa8b5('0x11'),_0x1cc7e4,_0xa8b5('0x12'));logger['debug'](_0xa8b5('0x13'),_0x1cc7e4,_0xa8b5('0x12'),JSON[_0xa8b5('0x14')](_0x54f655));if(_0x54f655['error']){if(_0x54f655[_0xa8b5('0x15')][_0xa8b5('0x16')]===0x1f4){logger['error'](_0xa8b5('0x11'),_0x1cc7e4,_0x54f655['error']['message']);return _0x1033d0(_0x54f655[_0xa8b5('0x15')]['message']);}logger[_0xa8b5('0x15')](_0xa8b5('0x11'),_0x1cc7e4,_0x54f655['error'][_0xa8b5('0x17')]);return _0x2459ed(_0x54f655['error'][_0xa8b5('0x17')]);}else{logger[_0xa8b5('0x10')](_0xa8b5('0x11'),_0x1cc7e4,'request\x20sent');_0x2459ed(_0x54f655[_0xa8b5('0x18')]['message']);}})[_0xa8b5('0x19')](function(_0x1a9b33){logger[_0xa8b5('0x15')](_0xa8b5('0x11'),_0x1cc7e4,_0x1a9b33);_0x1033d0(_0x1a9b33);});});}exports[_0xa8b5('0x1a')]=function(_0x2c6196){var _0x2fffbd=this;return new Promise(function(_0x2d96e8,_0x2c2b4b){return db['OpenchannelInteraction'][_0xa8b5('0x1b')](_0x2c6196[_0xa8b5('0x1c')],{'raw':_0x2c6196['options']?_0x2c6196[_0xa8b5('0x1d')][_0xa8b5('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2c6196[_0xa8b5('0x1d')]?_0x2c6196['options'][_0xa8b5('0x1f')]||null:null,'attributes':_0x2c6196[_0xa8b5('0x1d')]?_0x2c6196[_0xa8b5('0x1d')][_0xa8b5('0x20')]||null:null,'limit':_0x2c6196[_0xa8b5('0x1d')]?_0x2c6196['options']['limit']||null:null})[_0xa8b5('0xf')](function(_0x4b7ae0){logger[_0xa8b5('0x10')](_0xa8b5('0x1a'),_0x2c6196);logger[_0xa8b5('0x21')](_0xa8b5('0x1a'),_0x2c6196,JSON[_0xa8b5('0x14')](_0x4b7ae0));_0x2d96e8(_0x4b7ae0);})[_0xa8b5('0x19')](function(_0x2389ad){logger[_0xa8b5('0x15')](_0xa8b5('0x1a'),_0x2389ad[_0xa8b5('0x17')],_0x2c6196);_0x2c2b4b(_0x2fffbd['error'](0x1f4,_0x2389ad['message']));});});};exports[_0xa8b5('0x22')]=function(_0xa199c4){return new Promise(function(_0xe9b08a,_0x5e83d5){return db[_0xa8b5('0x23')][_0xa8b5('0x24')]({'where':_0xa199c4[_0xa8b5('0x1d')]?_0xa199c4['options'][_0xa8b5('0x1f')]||null:null})[_0xa8b5('0xf')](function(_0x148fb5){if(_0x148fb5){return _0x148fb5[_0xa8b5('0x25')](_0xa199c4['body'][_0xa8b5('0x26')],_['omit'](_0xa199c4['body'],[_0xa8b5('0x26'),'id'])||{});}})[_0xa8b5('0x27')](function(_0x42d8ff){logger[_0xa8b5('0x10')]('AddTags',_0xa199c4);logger[_0xa8b5('0x21')](_0xa8b5('0x28'),_0xa199c4,JSON[_0xa8b5('0x14')](_0x42d8ff));_0xe9b08a(_0x42d8ff);})[_0xa8b5('0x19')](function(_0x4062c6){logger[_0xa8b5('0x15')](_0xa8b5('0x28'),_0x4062c6['message'],_0xa199c4);_0x5e83d5(_this[_0xa8b5('0x15')](0x1f4,_0x4062c6[_0xa8b5('0x17')]));});});};
\ No newline at end of file
+var _0xf171=['AddTagsToOpenchannelInteraction','find','ids','omit','spread','AddTags','util','moment','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','http','defaults','redis','localhost','./openchannelInteraction.socket','register','request','then','info','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelInteraction,\x20%s,\x20%s','message','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','debug'];(function(_0x38eb77,_0x16a2d1){var _0xfdadc9=function(_0x303ace){while(--_0x303ace){_0x38eb77['push'](_0x38eb77['shift']());}};_0xfdadc9(++_0x16a2d1);}(_0xf171,0xc9));var _0x1f17=function(_0xe480f0,_0x4c0dc1){_0xe480f0=_0xe480f0-0x0;var _0x57b198=_0xf171[_0xe480f0];return _0x57b198;};'use strict';var _=require('lodash');var util=require(_0x1f17('0x0'));var moment=require(_0x1f17('0x1'));var BPromise=require('bluebird');var rs=require(_0x1f17('0x2'));var fs=require('fs');var Redis=require(_0x1f17('0x3'));var db=require(_0x1f17('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x1f17('0x5'));var jayson=require(_0x1f17('0x6'));var client=jayson['client'][_0x1f17('0x7')]({'port':0x232a});config['redis']=_[_0x1f17('0x8')](config[_0x1f17('0x9')],{'host':_0x1f17('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1f17('0xb'))[_0x1f17('0xc')](socket);function respondWithRpcPromise(_0x326c2b,_0x5b67f6,_0x4c2a75){return new BPromise(function(_0x373c74,_0x61e95){return client[_0x1f17('0xd')](_0x326c2b,_0x4c2a75)[_0x1f17('0xe')](function(_0x311f7e){logger[_0x1f17('0xf')]('OpenchannelInteraction,\x20%s,\x20%s',_0x5b67f6,_0x1f17('0x10'));logger['debug'](_0x1f17('0x11'),_0x5b67f6,_0x1f17('0x10'),JSON[_0x1f17('0x12')](_0x311f7e));if(_0x311f7e['error']){if(_0x311f7e[_0x1f17('0x13')]['code']===0x1f4){logger[_0x1f17('0x13')](_0x1f17('0x14'),_0x5b67f6,_0x311f7e[_0x1f17('0x13')][_0x1f17('0x15')]);return _0x61e95(_0x311f7e['error'][_0x1f17('0x15')]);}logger[_0x1f17('0x13')](_0x1f17('0x14'),_0x5b67f6,_0x311f7e[_0x1f17('0x13')][_0x1f17('0x15')]);return _0x373c74(_0x311f7e[_0x1f17('0x13')][_0x1f17('0x15')]);}else{logger[_0x1f17('0xf')](_0x1f17('0x14'),_0x5b67f6,_0x1f17('0x10'));_0x373c74(_0x311f7e[_0x1f17('0x16')][_0x1f17('0x15')]);}})[_0x1f17('0x17')](function(_0x5b6369){logger[_0x1f17('0x13')](_0x1f17('0x14'),_0x5b67f6,_0x5b6369);_0x61e95(_0x5b6369);});});}exports[_0x1f17('0x18')]=function(_0x322723){var _0x567176=this;return new Promise(function(_0x1fea56,_0x38fca2){return db[_0x1f17('0x19')][_0x1f17('0x1a')](_0x322723[_0x1f17('0x1b')],{'raw':_0x322723[_0x1f17('0x1c')]?_0x322723[_0x1f17('0x1c')][_0x1f17('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x322723['options']?_0x322723[_0x1f17('0x1c')][_0x1f17('0x1e')]||null:null,'attributes':_0x322723[_0x1f17('0x1c')]?_0x322723[_0x1f17('0x1c')][_0x1f17('0x1f')]||null:null,'limit':_0x322723[_0x1f17('0x1c')]?_0x322723[_0x1f17('0x1c')]['limit']||null:null})[_0x1f17('0xe')](function(_0x66082f){logger[_0x1f17('0xf')](_0x1f17('0x18'),_0x322723);logger[_0x1f17('0x20')]('UpdateOpenchannelInteraction',_0x322723,JSON['stringify'](_0x66082f));_0x1fea56(_0x66082f);})[_0x1f17('0x17')](function(_0x42f9a0){logger[_0x1f17('0x13')]('UpdateOpenchannelInteraction',_0x42f9a0[_0x1f17('0x15')],_0x322723);_0x38fca2(_0x567176[_0x1f17('0x13')](0x1f4,_0x42f9a0[_0x1f17('0x15')]));});});};exports[_0x1f17('0x21')]=function(_0x152c6b){return new Promise(function(_0x2c62a0,_0x327e84){return db[_0x1f17('0x19')][_0x1f17('0x22')]({'where':_0x152c6b['options']?_0x152c6b['options'][_0x1f17('0x1e')]||null:null})[_0x1f17('0xe')](function(_0x3f1462){if(_0x3f1462){return _0x3f1462['addTags'](_0x152c6b[_0x1f17('0x1b')][_0x1f17('0x23')],_[_0x1f17('0x24')](_0x152c6b['body'],['ids','id'])||{});}})[_0x1f17('0x25')](function(_0x3fa845){logger[_0x1f17('0xf')](_0x1f17('0x26'),_0x152c6b);logger['debug'](_0x1f17('0x26'),_0x152c6b,JSON['stringify'](_0x3fa845));_0x2c62a0(_0x3fa845);})[_0x1f17('0x17')](function(_0x306c32){logger[_0x1f17('0x13')](_0x1f17('0x26'),_0x306c32[_0x1f17('0x15')],_0x152c6b);_0x327e84(_this['error'](0x1f4,_0x306c32['message']));});});};
\ No newline at end of file
index 77e0f6f..70fae9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe089=['save','emit','removeListener','register','./openchannelInteraction.events'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe089,0x68));var _0x9e08=function(_0x486f9b,_0x7e89e){_0x486f9b=_0x486f9b-0x0;var _0x362dbb=_0xe089[_0x486f9b];return _0x362dbb;};'use strict';var OpenchannelInteractionEvents=require(_0x9e08('0x0'));var events=[_0x9e08('0x1'),'remove','update'];function createListener(_0x1f03ef,_0x5ab26b){return function(_0x58573c){_0x5ab26b[_0x9e08('0x2')](_0x1f03ef,_0x58573c);};}function removeListener(_0xf12aa6,_0x10f67d){return function(){OpenchannelInteractionEvents[_0x9e08('0x3')](_0xf12aa6,_0x10f67d);};}exports[_0x9e08('0x4')]=function(_0x181daa){for(var _0xbf6b09=0x0,_0x5e79ed=events['length'];_0xbf6b09<_0x5e79ed;_0xbf6b09++){var _0x3f9e94=events[_0xbf6b09];var _0x3a6743=createListener('openchannelInteraction:'+_0x3f9e94,_0x181daa);OpenchannelInteractionEvents['on'](_0x3f9e94,_0x3a6743);}};
\ No newline at end of file
+var _0xb21d=['openchannelInteraction:','./openchannelInteraction.events','remove','update'];(function(_0x483017,_0x73092c){var _0x3cc794=function(_0x28cb06){while(--_0x28cb06){_0x483017['push'](_0x483017['shift']());}};_0x3cc794(++_0x73092c);}(_0xb21d,0xa1));var _0xdb21=function(_0x188ad4,_0x17bcf4){_0x188ad4=_0x188ad4-0x0;var _0x150183=_0xb21d[_0x188ad4];return _0x150183;};'use strict';var OpenchannelInteractionEvents=require(_0xdb21('0x0'));var events=['save',_0xdb21('0x1'),_0xdb21('0x2')];function createListener(_0xfaf125,_0x5d42ba){return function(_0x358954){_0x5d42ba['emit'](_0xfaf125,_0x358954);};}function removeListener(_0x439d23,_0x46ba66){return function(){OpenchannelInteractionEvents['removeListener'](_0x439d23,_0x46ba66);};}exports['register']=function(_0x49ed40){for(var _0x46e963=0x0,_0x2f66ed=events['length'];_0x46e963<_0x2f66ed;_0x46e963++){var _0x3be537=events[_0x46e963];var _0x20f6d8=createListener(_0xdb21('0x3')+_0x3be537,_0x49ed40);OpenchannelInteractionEvents['on'](_0x3be537,_0x20f6d8);}};
\ No newline at end of file
index 3c9b173..6a55ead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['index','/describe','show','post','isAuthenticated','tracked','openchannel','openchannelmessage:create','update','put','/:id/accept','accept','reject','delete','/:id','destroy','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get'];(function(_0x11c21d,_0xc40dcf){var _0x23f935=function(_0x1b8efe){while(--_0x1b8efe){_0x11c21d['push'](_0x11c21d['shift']());}};_0x23f935(++_0xc40dcf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'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')](),interaction[_0x0a9e('0xe')](_0x0a9e('0xf'),_0x0a9e('0x10')),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0x11')]);router[_0x0a9e('0x12')](_0x0a9e('0x13'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);router[_0x0a9e('0x12')]('/:id/reject',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x15')]);router[_0x0a9e('0x16')](_0x0a9e('0x17'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x0713=['get','isAuthenticated','index','/describe','describe','/:id','post','tracked','openchannel','openchannelmessage:create','put','update','accept','/:id/reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelMessage.controller'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_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'));var controller=require(_0x3071('0x7'));router[_0x3071('0x8')]('/',auth[_0x3071('0x9')](),controller[_0x3071('0xa')]);router[_0x3071('0x8')](_0x3071('0xb'),auth[_0x3071('0x9')](),controller[_0x3071('0xc')]);router[_0x3071('0x8')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller['show']);router[_0x3071('0xe')]('/',auth[_0x3071('0x9')](),interaction[_0x3071('0xf')](_0x3071('0x10'),_0x3071('0x11')),controller['create']);router[_0x3071('0x12')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller[_0x3071('0x13')]);router[_0x3071('0x12')]('/:id/accept',auth['isAuthenticated'](),controller[_0x3071('0x14')]);router['put'](_0x3071('0x15'),auth[_0x3071('0x9')](),controller['reject']);router[_0x3071('0x16')]('/:id',auth[_0x3071('0x9')](),controller[_0x3071('0x17')]);module[_0x3071('0x18')]=router;
\ No newline at end of file
index ebf44ef..f1c47fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e81=['out','DATE','STRING','sequelize','exports','TEXT','ENUM'];(function(_0x541ea6,_0x51cab6){var _0x3c3e84=function(_0xc06bed){while(--_0xc06bed){_0x541ea6['push'](_0x541ea6['shift']());}};_0x3c3e84(++_0x51cab6);}(_0x4e81,0x1bc));var _0x14e8=function(_0x54e6f5,_0x4f4e99){_0x54e6f5=_0x54e6f5-0x0;var _0x5e8794=_0x4e81[_0x54e6f5];return _0x5e8794;};'use strict';var Sequelize=require(_0x14e8('0x0'));module[_0x14e8('0x1')]={'body':{'type':Sequelize[_0x14e8('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x14e8('0x3')]('in',_0x14e8('0x4')),'defaultValue':_0x14e8('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0x14e8('0x5')]},'providerName':{'type':Sequelize[_0x14e8('0x6')]},'providerResponse':{'type':Sequelize[_0x14e8('0x2')]}};
\ No newline at end of file
+var _0xd4f4=['ENUM','out','DATE','STRING','sequelize','exports','TEXT','medium','BOOLEAN'];(function(_0x4e1bd3,_0xda464d){var _0x234e83=function(_0x144f4d){while(--_0x144f4d){_0x4e1bd3['push'](_0x4e1bd3['shift']());}};_0x234e83(++_0xda464d);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x2d40ef,_0x2e8cc4){_0x2d40ef=_0x2d40ef-0x0;var _0x2757d4=_0xd4f4[_0x2d40ef];return _0x2757d4;};'use strict';var Sequelize=require(_0x4d4f('0x0'));module[_0x4d4f('0x1')]={'body':{'type':Sequelize[_0x4d4f('0x2')](_0x4d4f('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x4d4f('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0x4d4f('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x4d4f('0x5')]('in',_0x4d4f('0x6')),'defaultValue':_0x4d4f('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0x4d4f('0x7')]},'providerName':{'type':Sequelize[_0x4d4f('0x8')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 4b913a5..17ae522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f84=['sort','where','filter','merge','VIRTUAL','options','include','OpenchannelMessage','rows','show','includeAll','find','create','body','params','describe','openchannel','read','format','UserId','user','agent','OpenchannelInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','openchannel-interactions','get','OpenchannelInteraction','null','RejectMessage','email','event','rejectmessage','eml-format','zip-dir','fast-json-patch','request-promise','mustache','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','../../config/logger','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','jayson/promise','http','client','request','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','destroy','end','stack','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','order'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2f84,0x13d));var _0x42f8=function(_0x4885be,_0x52e07f){_0x4885be=_0x4885be-0x0;var _0x57524b=_0x2f84[_0x4885be];return _0x57524b;};'use strict';var emlformat=require(_0x42f8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x42f8('0x1'));var jsonpatch=require(_0x42f8('0x2'));var rp=require(_0x42f8('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x42f8('0x4'));var util=require(_0x42f8('0x5'));var path=require(_0x42f8('0x6'));var sox=require('sox');var csv=require(_0x42f8('0x7'));var ejs=require(_0x42f8('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x42f8('0x9'));var crypto=require(_0x42f8('0xa'));var jsforce=require(_0x42f8('0xb'));var deskjs=require(_0x42f8('0xc'));var toCsv=require(_0x42f8('0x7'));var querystring=require(_0x42f8('0xd'));var Papa=require(_0x42f8('0xe'));var Redis=require(_0x42f8('0xf'));var authService=require(_0x42f8('0x10'));var qs=require(_0x42f8('0x11'));var as=require(_0x42f8('0x12'));var hardwareService=require(_0x42f8('0x13'));var logger=require(_0x42f8('0x14'))('api');var utils=require(_0x42f8('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x42f8('0x16'))['db'];config[_0x42f8('0x17')]=_[_0x42f8('0x18')](config['redis'],{'host':_0x42f8('0x19'),'port':0x18eb});var socket=require(_0x42f8('0x1a'))(new Redis(config[_0x42f8('0x17')]));require('./openchannelMessage.socket')['register'](socket);var jayson=require(_0x42f8('0x1b'));var client=jayson['client'][_0x42f8('0x1c')]({'port':0x232c});var client9002=jayson[_0x42f8('0x1d')]['http']({'port':0x232a});function respondWithRpcPromise(_0x39b1f6,_0x2f4867,_0x11749f,_0x17a1e3){return new BPromise(function(_0x57292d,_0x10b75a){var _0x197d3c=_0x17a1e3||client;return _0x197d3c[_0x42f8('0x1e')](_0x39b1f6,_0x11749f)[_0x42f8('0x1f')](function(_0x329274){logger[_0x42f8('0x20')](_0x42f8('0x21'),_0x2f4867,_0x42f8('0x22'));logger[_0x42f8('0x23')](_0x42f8('0x24'),_0x2f4867,_0x42f8('0x22'),JSON[_0x42f8('0x25')](_0x329274));if(_0x329274[_0x42f8('0x26')]){if(_0x329274['error'][_0x42f8('0x27')]===0x1f4){logger[_0x42f8('0x26')](_0x42f8('0x21'),_0x2f4867,_0x329274[_0x42f8('0x26')][_0x42f8('0x28')]);return _0x10b75a(_0x329274[_0x42f8('0x26')]['message']);}logger[_0x42f8('0x26')](_0x42f8('0x21'),_0x2f4867,_0x329274[_0x42f8('0x26')][_0x42f8('0x28')]);return _0x57292d(_0x329274[_0x42f8('0x26')][_0x42f8('0x28')]);}else{logger[_0x42f8('0x20')](_0x42f8('0x21'),_0x2f4867,_0x42f8('0x22'));_0x57292d(_0x329274[_0x42f8('0x29')]['message']);}})[_0x42f8('0x2a')](function(_0x450f47){logger[_0x42f8('0x26')](_0x42f8('0x21'),_0x2f4867,_0x450f47);_0x10b75a(_0x450f47);});});}function respondWithStatusCode(_0x321fad,_0x1f19f9){_0x1f19f9=_0x1f19f9||0xcc;return function(_0xde5ec){if(_0xde5ec){return _0x321fad[_0x42f8('0x2b')](_0x1f19f9);}return _0x321fad['status'](_0x1f19f9)['end']();};}function respondWithResult(_0x21a718,_0x531fb4){_0x531fb4=_0x531fb4||0xc8;return function(_0x4f443b){if(_0x4f443b){return _0x21a718['status'](_0x531fb4)[_0x42f8('0x2c')](_0x4f443b);}};}function respondWithFilteredResult(_0x3c3e37,_0x380d41){return function(_0xa1e4c6){if(_0xa1e4c6){var _0x509141=typeof _0x380d41[_0x42f8('0x2d')]===_0x42f8('0x2e')&&typeof _0x380d41[_0x42f8('0x2f')]==='undefined';var _0x79bc1=_0xa1e4c6[_0x42f8('0x30')];var _0x4f3209=_0x509141?0x0:_0x380d41[_0x42f8('0x2d')];var _0x1ca7a7=_0x509141?_0xa1e4c6[_0x42f8('0x30')]:_0x380d41[_0x42f8('0x2d')]+_0x380d41['limit'];var _0x14d6ce;if(_0x1ca7a7>=_0x79bc1){_0x1ca7a7=_0x79bc1;_0x14d6ce=0xc8;}else{_0x14d6ce=0xce;}_0x3c3e37[_0x42f8('0x31')](_0x14d6ce);return _0x3c3e37[_0x42f8('0x32')](_0x42f8('0x33'),_0x4f3209+'-'+_0x1ca7a7+'/'+_0x79bc1)[_0x42f8('0x2c')](_0xa1e4c6);}return null;};}function patchUpdates(_0x555ab3){return function(_0x3a27af){try{jsonpatch[_0x42f8('0x34')](_0x3a27af,_0x555ab3,!![]);}catch(_0x915de4){return BPromise[_0x42f8('0x35')](_0x915de4);}return _0x3a27af[_0x42f8('0x36')]();};}function saveUpdates(_0x3352cc,_0x2ad36a){return function(_0x2923b7){if(_0x2923b7){return _0x2923b7[_0x42f8('0x37')](_0x3352cc)[_0x42f8('0x1f')](function(_0x1c7480){return _0x1c7480;});}return null;};}function removeEntity(_0x2f5b79,_0x60193f){return function(_0x13def3){if(_0x13def3){return _0x13def3[_0x42f8('0x38')]()[_0x42f8('0x1f')](function(){_0x2f5b79['status'](0xcc)[_0x42f8('0x39')]();});}};}function handleEntityNotFound(_0x318b8d,_0x17371a){return function(_0x4f2232){if(!_0x4f2232){_0x318b8d[_0x42f8('0x2b')](0x194);}return _0x4f2232;};}function handleError(_0x143f09,_0x5f0022){_0x5f0022=_0x5f0022||0x1f4;return function(_0x15a929){logger[_0x42f8('0x26')](_0x15a929[_0x42f8('0x3a')]);if(_0x15a929[_0x42f8('0x3b')]){delete _0x15a929['name'];}_0x143f09[_0x42f8('0x31')](_0x5f0022)[_0x42f8('0x3c')](_0x15a929);};}exports[_0x42f8('0x3d')]=function(_0x48b225,_0x19cd31){var _0x1233d4={},_0x5b9763={},_0x33227e={'count':0x0,'rows':[]};var _0x3fcf82=_[_0x42f8('0x3e')](db['OpenchannelMessage'][_0x42f8('0x3f')],function(_0x212496){return{'name':_0x212496[_0x42f8('0x40')],'type':_0x212496['type'][_0x42f8('0x41')]};});_0x5b9763[_0x42f8('0x42')]=_[_0x42f8('0x3e')](_0x3fcf82,'name');_0x5b9763['query']=_[_0x42f8('0x43')](_0x48b225[_0x42f8('0x44')]);_0x5b9763[_0x42f8('0x45')]=_[_0x42f8('0x46')](_0x5b9763[_0x42f8('0x42')],_0x5b9763[_0x42f8('0x44')]);_0x1233d4['attributes']=_[_0x42f8('0x46')](_0x5b9763['model'],qs[_0x42f8('0x47')](_0x48b225[_0x42f8('0x44')][_0x42f8('0x47')]));_0x1233d4['attributes']=_0x1233d4[_0x42f8('0x48')][_0x42f8('0x49')]?_0x1233d4[_0x42f8('0x48')]:_0x5b9763[_0x42f8('0x42')];if(!_0x48b225[_0x42f8('0x44')][_0x42f8('0x4a')]('nolimit')){_0x1233d4['limit']=qs[_0x42f8('0x2f')](_0x48b225['query'][_0x42f8('0x2f')]);_0x1233d4[_0x42f8('0x2d')]=qs[_0x42f8('0x2d')](_0x48b225[_0x42f8('0x44')]['offset']);}_0x1233d4[_0x42f8('0x4b')]=qs[_0x42f8('0x4c')](_0x48b225[_0x42f8('0x44')][_0x42f8('0x4c')]);_0x1233d4[_0x42f8('0x4d')]=qs['filters'](_['pick'](_0x48b225[_0x42f8('0x44')],_0x5b9763[_0x42f8('0x45')]),_0x3fcf82);if(_0x48b225[_0x42f8('0x44')][_0x42f8('0x4e')]){_0x1233d4['where']=_[_0x42f8('0x4f')](_0x1233d4[_0x42f8('0x4d')],{'$or':_['map'](_0x3fcf82,function(_0x105073){if(_0x105073['type']!==_0x42f8('0x50')){var _0xcd31b6={};_0xcd31b6[_0x105073['name']]={'$like':'%'+_0x48b225[_0x42f8('0x44')][_0x42f8('0x4e')]+'%'};return _0xcd31b6;}})});}_0x1233d4=_[_0x42f8('0x4f')]({},_0x1233d4,_0x48b225[_0x42f8('0x51')]);var _0x20a74e={'where':_0x1233d4[_0x42f8('0x4d')]};return db['OpenchannelMessage'][_0x42f8('0x30')](_0x20a74e)['then'](function(_0x51993f){_0x33227e[_0x42f8('0x30')]=_0x51993f;if(_0x48b225[_0x42f8('0x44')]['includeAll']){_0x1233d4[_0x42f8('0x52')]=[{'all':!![]}];}return db[_0x42f8('0x53')]['findAll'](_0x1233d4);})['then'](function(_0x260801){_0x33227e[_0x42f8('0x54')]=_0x260801;return _0x33227e;})['then'](respondWithFilteredResult(_0x19cd31,_0x1233d4))[_0x42f8('0x2a')](handleError(_0x19cd31,null));};exports[_0x42f8('0x55')]=function(_0x214132,_0x18a239){var _0x10ce85={'raw':!![],'where':{'id':_0x214132['params']['id']}},_0xaf5655={};_0xaf5655[_0x42f8('0x42')]=_[_0x42f8('0x43')](db[_0x42f8('0x53')]['rawAttributes']);_0xaf5655['query']=_[_0x42f8('0x43')](_0x214132[_0x42f8('0x44')]);_0xaf5655[_0x42f8('0x45')]=_['intersection'](_0xaf5655[_0x42f8('0x42')],_0xaf5655[_0x42f8('0x44')]);_0x10ce85['attributes']=_[_0x42f8('0x46')](_0xaf5655[_0x42f8('0x42')],qs[_0x42f8('0x47')](_0x214132[_0x42f8('0x44')][_0x42f8('0x47')]));_0x10ce85[_0x42f8('0x48')]=_0x10ce85[_0x42f8('0x48')][_0x42f8('0x49')]?_0x10ce85[_0x42f8('0x48')]:_0xaf5655['model'];if(_0x214132[_0x42f8('0x44')][_0x42f8('0x56')]){_0x10ce85[_0x42f8('0x52')]=[{'all':!![]}];}_0x10ce85=_[_0x42f8('0x4f')]({},_0x10ce85,_0x214132[_0x42f8('0x51')]);return db[_0x42f8('0x53')][_0x42f8('0x57')](_0x10ce85)[_0x42f8('0x1f')](handleEntityNotFound(_0x18a239,null))[_0x42f8('0x1f')](respondWithResult(_0x18a239,null))['catch'](handleError(_0x18a239,null));};exports[_0x42f8('0x58')]=function(_0x5d385c,_0x2c7663){return db['OpenchannelMessage'][_0x42f8('0x58')](_0x5d385c[_0x42f8('0x59')],{})[_0x42f8('0x1f')](respondWithResult(_0x2c7663,0xc9))[_0x42f8('0x2a')](handleError(_0x2c7663,null));};exports['update']=function(_0x24fcbf,_0x462b9d){if(_0x24fcbf['body']['id']){delete _0x24fcbf['body']['id'];}return db[_0x42f8('0x53')][_0x42f8('0x57')]({'where':{'id':_0x24fcbf[_0x42f8('0x5a')]['id']}})[_0x42f8('0x1f')](handleEntityNotFound(_0x462b9d,null))[_0x42f8('0x1f')](saveUpdates(_0x24fcbf['body'],null))[_0x42f8('0x1f')](respondWithResult(_0x462b9d,null))['catch'](handleError(_0x462b9d,null));};exports['destroy']=function(_0x279dd2,_0x140659){return db[_0x42f8('0x53')]['find']({'where':{'id':_0x279dd2['params']['id']}})[_0x42f8('0x1f')](handleEntityNotFound(_0x140659,null))[_0x42f8('0x1f')](removeEntity(_0x140659,null))['catch'](handleError(_0x140659,null));};exports[_0x42f8('0x5b')]=function(_0x38f18f,_0x53e833){return db['OpenchannelMessage'][_0x42f8('0x5b')]()[_0x42f8('0x1f')](respondWithResult(_0x53e833,null))[_0x42f8('0x2a')](handleError(_0x53e833,null));};var interaction_log=require('../../config/logger')('openchannel-interactions');exports['accept']=function(_0xf92324,_0x2dd8e6,_0x26d4da){var _0x1247c8={'agent':{},'channel':_0x42f8('0x5c')};if(_0xf92324[_0x42f8('0x59')]['id']){delete _0xf92324[_0x42f8('0x59')]['id'];}_0xf92324[_0x42f8('0x59')][_0x42f8('0x5d')]=!![];_0xf92324['body']['readAt']=moment()[_0x42f8('0x5e')]('YYYY-MM-DD\x20HH:mm:ss');_0xf92324[_0x42f8('0x59')][_0x42f8('0x5f')]=_0xf92324[_0x42f8('0x59')][_0x42f8('0x5f')]||_0xf92324[_0x42f8('0x60')]['id'];_0x1247c8[_0x42f8('0x61')]['id']=_0xf92324[_0x42f8('0x59')]['UserId'];return db['OpenchannelMessage'][_0x42f8('0x57')]({'where':{'id':_0xf92324[_0x42f8('0x5a')]['id'],'UserId':null}})[_0x42f8('0x1f')](handleEntityNotFound(_0x2dd8e6,null))[_0x42f8('0x1f')](saveUpdates(_0xf92324['body'],null))['then'](function(_0x97466a){if(_0x97466a){_0x1247c8[_0x42f8('0x28')]=_0x97466a['get']({'plain':!![]});return db['OpenchannelInteraction'][_0x42f8('0x57')]({'where':{'id':_0x97466a[_0x42f8('0x62')]}});}return null;})[_0x42f8('0x1f')](handleEntityNotFound(_0x2dd8e6,null))[_0x42f8('0x1f')](function(_0x39ec9f){if(_0x39ec9f){return _0x39ec9f['update']({'UserId':_0xf92324[_0x42f8('0x59')]['UserId'],'read1stAt':_[_0x42f8('0x63')](_0x39ec9f[_0x42f8('0x64')])?moment()[_0x42f8('0x5e')](_0x42f8('0x65')):undefined});}return null;})['then'](function(_0x47a397){if(_0x47a397){_0x1247c8['interaction']=_0x47a397['get']({'plain':!![]});interaction_log[_0x42f8('0x20')](_0x42f8('0x66'),_0xf92324[_0x42f8('0x60')]['id'],_0xf92324[_0x42f8('0x60')]['name'],_0xf92324[_0x42f8('0x60')][_0x42f8('0x67')],_0x1247c8[_0x42f8('0x68')]['id'],_0xf92324[_0x42f8('0x59')]?JSON[_0x42f8('0x25')](_0xf92324[_0x42f8('0x59')]):'null');return respondWithRpcPromise(_0x42f8('0x69'),_0x42f8('0x6a'),_0x1247c8);}return null;})[_0x42f8('0x1f')](function(_0x2faceb){var _0x307498=_0x42f8('0x6b')+_0x2faceb['message'][_0x42f8('0x6c')];return db[_0x42f8('0x6d')]['query'](_0x307498,{'type':db[_0x42f8('0x6e')][_0x42f8('0x6f')][_0x42f8('0x70')],'raw':!![]})[_0x42f8('0x1f')](function(_0x3b3511){return _0x3b3511;});})[_0x42f8('0x1f')](function(_0x32b5ae){if(_0x32b5ae){_0x1247c8['message'][_0x42f8('0x71')]=_0x32b5ae[0x0];if(!_0xf92324[_0x42f8('0x59')][_0x42f8('0x5f')])return;return db['User'][_0x42f8('0x57')]({'where':{'id':_0xf92324[_0x42f8('0x59')]['UserId'],'role':'agent'},'attributes':['id',_0x42f8('0x3b'),_0x42f8('0x72'),'email',_0x42f8('0x73')],'raw':!![]});}return null;})[_0x42f8('0x1f')](function(_0x2c24c6){if(!_0x2c24c6)return null;_0x1247c8[_0x42f8('0x28')][_0x42f8('0x61')]=_0x2c24c6;return _0x1247c8;})[_0x42f8('0x1f')](function(_0x51baec){if(_0x51baec){if(_0xf92324[_0x42f8('0x59')][_0x42f8('0x74')]){_0x1247c8[_0x42f8('0x28')][_0x42f8('0x75')]=util[_0x42f8('0x5e')](_0x42f8('0x76'),_0xf92324[_0x42f8('0x60')]['name']);_0x1247c8[_0x42f8('0x28')][_0x42f8('0x77')]=_0x1247c8[_0x42f8('0x77')];_0x1247c8['message'][_0x42f8('0x78')]=_0x1247c8[_0x42f8('0x77')];_0x1247c8[_0x42f8('0x28')]['event']='accept';return respondWithRpcPromise('EventManager',_0x42f8('0x79'),{'event':_0x42f8('0x7a'),'message':_0x1247c8[_0x42f8('0x28')]},client9002)[_0x42f8('0x1f')](function(){return _0x1247c8;});}return _0x1247c8;}return null;})[_0x42f8('0x1f')](respondWithResult(_0x2dd8e6,null))[_0x42f8('0x2a')](handleError(_0x2dd8e6,null));};var interaction_log=require(_0x42f8('0x14'))(_0x42f8('0x7b'));exports[_0x42f8('0x35')]=function(_0x289424,_0x3953aa,_0x218eaf){var _0x484a4c={'agent':{},'channel':_0x42f8('0x5c')};if(_0x289424[_0x42f8('0x59')]['id']){delete _0x289424[_0x42f8('0x59')]['id'];}_0x289424[_0x42f8('0x59')][_0x42f8('0x5f')]=_0x289424['body'][_0x42f8('0x5f')]||_0x289424[_0x42f8('0x60')]['id'];_0x484a4c['agent']['id']=_0x289424[_0x42f8('0x59')][_0x42f8('0x5f')];return db[_0x42f8('0x53')][_0x42f8('0x57')]({'where':{'id':_0x289424[_0x42f8('0x5a')]['id'],'UserId':null}})[_0x42f8('0x1f')](handleEntityNotFound(_0x3953aa,null))['then'](function(_0x1d62bc){if(_0x1d62bc){_0x484a4c[_0x42f8('0x28')]=_0x1d62bc[_0x42f8('0x7c')]({'plain':!![]});return db[_0x42f8('0x7d')][_0x42f8('0x57')]({'where':{'id':_0x1d62bc[_0x42f8('0x62')]}});}return null;})[_0x42f8('0x1f')](handleEntityNotFound(_0x3953aa,null))[_0x42f8('0x1f')](function(_0xeebe17){if(_0xeebe17){_0x484a4c[_0x42f8('0x68')]=_0xeebe17['get']({'plain':!![]});interaction_log[_0x42f8('0x20')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x289424[_0x42f8('0x60')]['id'],_0x289424[_0x42f8('0x60')]['name'],_0x289424['user']['role'],_0x484a4c[_0x42f8('0x68')]['id'],_0x289424['body']?JSON[_0x42f8('0x25')](_0x289424[_0x42f8('0x59')]):_0x42f8('0x7e'));return respondWithRpcPromise(_0x42f8('0x7f'),'rejectMessage',_0x484a4c);}return null;})[_0x42f8('0x1f')](function(_0x88fdc4){var _0x1ae57a=_0x42f8('0x6b')+_0x88fdc4[_0x42f8('0x28')][_0x42f8('0x6c')];return db['sequelize'][_0x42f8('0x44')](_0x1ae57a,{'type':db[_0x42f8('0x6e')]['QueryTypes'][_0x42f8('0x70')],'raw':!![]})[_0x42f8('0x1f')](function(_0x66bbf7){return _0x66bbf7;});})[_0x42f8('0x1f')](function(_0x35e761){if(_0x35e761){_0x484a4c['message']['contact']=_0x35e761[0x0];if(!_0x289424[_0x42f8('0x59')][_0x42f8('0x5f')])return;return db['User'][_0x42f8('0x57')]({'where':{'id':_0x289424['body']['UserId'],'role':_0x42f8('0x61')},'attributes':['id',_0x42f8('0x3b'),_0x42f8('0x72'),_0x42f8('0x80'),'internal'],'raw':!![]});}return null;})[_0x42f8('0x1f')](function(_0x321537){if(!_0x321537)return null;_0x484a4c['message']['agent']=_0x321537;return _0x484a4c;})['then'](function(_0x316827){if(_0x316827){_0x316827[_0x42f8('0x28')][_0x42f8('0x75')]=util[_0x42f8('0x5e')](_0x42f8('0x76'),_0x289424[_0x42f8('0x60')][_0x42f8('0x3b')]);_0x316827[_0x42f8('0x28')][_0x42f8('0x77')]=_0x484a4c[_0x42f8('0x77')];_0x316827[_0x42f8('0x28')][_0x42f8('0x78')]=_0x484a4c[_0x42f8('0x77')];_0x316827[_0x42f8('0x28')][_0x42f8('0x81')]=_0x42f8('0x35');respondWithRpcPromise(_0x42f8('0x79'),_0x42f8('0x79'),{'event':_0x42f8('0x82'),'message':_0x316827['message']},client9002);return _0x484a4c;}return null;})[_0x42f8('0x1f')](respondWithResult(_0x3953aa,null))['catch'](handleError(_0x3953aa,null));};
\ No newline at end of file
+var _0xcea1=['destroy','openchannel-interactions','openchannel','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','find','OpenchannelInteractionId','read1stAt','interaction','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','contact','User','agent','internal','manual','interface','SIP/%s','channel','event','accept','EventManager','acceptmessage','RejectMessage','rejectMessage','Sequelize','fullname','email','rejectmessage','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','sendStatus','stack','name','index','map','OpenchannelMessage','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','merge','rows','show','params','includeAll','include','options','create','body'];(function(_0x107821,_0x3d808b){var _0x18cd2a=function(_0x2b994c){while(--_0x2b994c){_0x107821['push'](_0x107821['shift']());}};_0x18cd2a(++_0x3d808b);}(_0xcea1,0x1b1));var _0x1cea=function(_0x2c0cd0,_0x4d669e){_0x2c0cd0=_0x2c0cd0-0x0;var _0x30f63c=_0xcea1[_0x2c0cd0];return _0x30f63c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1cea('0x0'));var zipdir=require(_0x1cea('0x1'));var jsonpatch=require(_0x1cea('0x2'));var rp=require(_0x1cea('0x3'));var moment=require(_0x1cea('0x4'));var BPromise=require(_0x1cea('0x5'));var Mustache=require(_0x1cea('0x6'));var util=require(_0x1cea('0x7'));var path=require(_0x1cea('0x8'));var sox=require(_0x1cea('0x9'));var csv=require(_0x1cea('0xa'));var ejs=require(_0x1cea('0xb'));var fs=require('fs');var fs_extra=require(_0x1cea('0xc'));var _=require(_0x1cea('0xd'));var squel=require(_0x1cea('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x1cea('0xf'));var toCsv=require(_0x1cea('0xa'));var querystring=require(_0x1cea('0x10'));var Papa=require(_0x1cea('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1cea('0x12'));var as=require(_0x1cea('0x13'));var hardwareService=require(_0x1cea('0x14'));var logger=require(_0x1cea('0x15'))(_0x1cea('0x16'));var utils=require('../../config/utils');var config=require(_0x1cea('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x1cea('0x18'))['db'];config['redis']=_[_0x1cea('0x19')](config[_0x1cea('0x1a')],{'host':_0x1cea('0x1b'),'port':0x18eb});var socket=require(_0x1cea('0x1c'))(new Redis(config[_0x1cea('0x1a')]));require('./openchannelMessage.socket')[_0x1cea('0x1d')](socket);var jayson=require(_0x1cea('0x1e'));var client=jayson[_0x1cea('0x1f')]['http']({'port':0x232c});var client9002=jayson[_0x1cea('0x1f')][_0x1cea('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x4c8312,_0x2afd5d,_0x517de3,_0x8c7d14){return new BPromise(function(_0x31f46d,_0xb342e0){var _0x570105=_0x8c7d14||client;return _0x570105[_0x1cea('0x21')](_0x4c8312,_0x517de3)[_0x1cea('0x22')](function(_0x35132d){logger['info'](_0x1cea('0x23'),_0x2afd5d,_0x1cea('0x24'));logger[_0x1cea('0x25')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x2afd5d,_0x1cea('0x24'),JSON[_0x1cea('0x26')](_0x35132d));if(_0x35132d[_0x1cea('0x27')]){if(_0x35132d[_0x1cea('0x27')][_0x1cea('0x28')]===0x1f4){logger['error'](_0x1cea('0x23'),_0x2afd5d,_0x35132d[_0x1cea('0x27')][_0x1cea('0x29')]);return _0xb342e0(_0x35132d[_0x1cea('0x27')][_0x1cea('0x29')]);}logger['error'](_0x1cea('0x23'),_0x2afd5d,_0x35132d['error'][_0x1cea('0x29')]);return _0x31f46d(_0x35132d['error'][_0x1cea('0x29')]);}else{logger[_0x1cea('0x2a')](_0x1cea('0x23'),_0x2afd5d,_0x1cea('0x24'));_0x31f46d(_0x35132d[_0x1cea('0x2b')][_0x1cea('0x29')]);}})[_0x1cea('0x2c')](function(_0x21f84b){logger[_0x1cea('0x27')]('OpenchannelMessage,\x20%s,\x20%s',_0x2afd5d,_0x21f84b);_0xb342e0(_0x21f84b);});});}function respondWithStatusCode(_0xd41192,_0x17d716){_0x17d716=_0x17d716||0xcc;return function(_0xb10f02){if(_0xb10f02){return _0xd41192['sendStatus'](_0x17d716);}return _0xd41192[_0x1cea('0x2d')](_0x17d716)[_0x1cea('0x2e')]();};}function respondWithResult(_0x2cfe0c,_0x32bb73){_0x32bb73=_0x32bb73||0xc8;return function(_0x4be62c){if(_0x4be62c){return _0x2cfe0c[_0x1cea('0x2d')](_0x32bb73)['json'](_0x4be62c);}};}function respondWithFilteredResult(_0x300843,_0x590132){return function(_0x2ec096){if(_0x2ec096){var _0x236bf1=typeof _0x590132[_0x1cea('0x2f')]==='undefined'&&typeof _0x590132[_0x1cea('0x30')]===_0x1cea('0x31');var _0x18c061=_0x2ec096['count'];var _0x795752=_0x236bf1?0x0:_0x590132[_0x1cea('0x2f')];var _0x2ffb3e=_0x236bf1?_0x2ec096[_0x1cea('0x32')]:_0x590132[_0x1cea('0x2f')]+_0x590132['limit'];var _0x393305;if(_0x2ffb3e>=_0x18c061){_0x2ffb3e=_0x18c061;_0x393305=0xc8;}else{_0x393305=0xce;}_0x300843[_0x1cea('0x2d')](_0x393305);return _0x300843[_0x1cea('0x33')](_0x1cea('0x34'),_0x795752+'-'+_0x2ffb3e+'/'+_0x18c061)[_0x1cea('0x35')](_0x2ec096);}return null;};}function patchUpdates(_0x35c25c){return function(_0x33965b){try{jsonpatch[_0x1cea('0x36')](_0x33965b,_0x35c25c,!![]);}catch(_0x1ea7b1){return BPromise[_0x1cea('0x37')](_0x1ea7b1);}return _0x33965b[_0x1cea('0x38')]();};}function saveUpdates(_0x44a2a9,_0x5eefe2){return function(_0x5a63ab){if(_0x5a63ab){return _0x5a63ab[_0x1cea('0x39')](_0x44a2a9)['then'](function(_0x255e42){return _0x255e42;});}return null;};}function removeEntity(_0x534275,_0x152647){return function(_0x4a4be6){if(_0x4a4be6){return _0x4a4be6['destroy']()[_0x1cea('0x22')](function(){_0x534275[_0x1cea('0x2d')](0xcc)[_0x1cea('0x2e')]();});}};}function handleEntityNotFound(_0x26cce0,_0xdb7deb){return function(_0x2e9c03){if(!_0x2e9c03){_0x26cce0[_0x1cea('0x3a')](0x194);}return _0x2e9c03;};}function handleError(_0x2fcd8f,_0x174b3c){_0x174b3c=_0x174b3c||0x1f4;return function(_0x10dd10){logger['error'](_0x10dd10[_0x1cea('0x3b')]);if(_0x10dd10[_0x1cea('0x3c')]){delete _0x10dd10['name'];}_0x2fcd8f['status'](_0x174b3c)['send'](_0x10dd10);};}exports[_0x1cea('0x3d')]=function(_0x54f597,_0x821728){var _0x2de7a8={},_0x57ac78={},_0xd94e95={'count':0x0,'rows':[]};var _0x4d506e=_[_0x1cea('0x3e')](db[_0x1cea('0x3f')][_0x1cea('0x40')],function(_0xe00047){return{'name':_0xe00047['fieldName'],'type':_0xe00047[_0x1cea('0x41')][_0x1cea('0x42')]};});_0x57ac78[_0x1cea('0x43')]=_[_0x1cea('0x3e')](_0x4d506e,_0x1cea('0x3c'));_0x57ac78[_0x1cea('0x44')]=_[_0x1cea('0x45')](_0x54f597[_0x1cea('0x44')]);_0x57ac78[_0x1cea('0x46')]=_[_0x1cea('0x47')](_0x57ac78[_0x1cea('0x43')],_0x57ac78[_0x1cea('0x44')]);_0x2de7a8[_0x1cea('0x48')]=_[_0x1cea('0x47')](_0x57ac78['model'],qs[_0x1cea('0x49')](_0x54f597[_0x1cea('0x44')][_0x1cea('0x49')]));_0x2de7a8[_0x1cea('0x48')]=_0x2de7a8[_0x1cea('0x48')][_0x1cea('0x4a')]?_0x2de7a8['attributes']:_0x57ac78[_0x1cea('0x43')];if(!_0x54f597[_0x1cea('0x44')][_0x1cea('0x4b')](_0x1cea('0x4c'))){_0x2de7a8[_0x1cea('0x30')]=qs[_0x1cea('0x30')](_0x54f597[_0x1cea('0x44')][_0x1cea('0x30')]);_0x2de7a8[_0x1cea('0x2f')]=qs[_0x1cea('0x2f')](_0x54f597['query']['offset']);}_0x2de7a8[_0x1cea('0x4d')]=qs[_0x1cea('0x4e')](_0x54f597['query'][_0x1cea('0x4e')]);_0x2de7a8[_0x1cea('0x4f')]=qs['filters'](_[_0x1cea('0x50')](_0x54f597[_0x1cea('0x44')],_0x57ac78[_0x1cea('0x46')]),_0x4d506e);if(_0x54f597['query']['filter']){_0x2de7a8[_0x1cea('0x4f')]=_['merge'](_0x2de7a8[_0x1cea('0x4f')],{'$or':_[_0x1cea('0x3e')](_0x4d506e,function(_0x521e73){if(_0x521e73[_0x1cea('0x41')]!==_0x1cea('0x51')){var _0x1de3f4={};_0x1de3f4[_0x521e73[_0x1cea('0x3c')]]={'$like':'%'+_0x54f597[_0x1cea('0x44')]['filter']+'%'};return _0x1de3f4;}})});}_0x2de7a8=_[_0x1cea('0x52')]({},_0x2de7a8,_0x54f597['options']);var _0x27fa27={'where':_0x2de7a8[_0x1cea('0x4f')]};return db['OpenchannelMessage'][_0x1cea('0x32')](_0x27fa27)[_0x1cea('0x22')](function(_0x159e5d){_0xd94e95['count']=_0x159e5d;if(_0x54f597[_0x1cea('0x44')]['includeAll']){_0x2de7a8['include']=[{'all':!![]}];}return db[_0x1cea('0x3f')]['findAll'](_0x2de7a8);})[_0x1cea('0x22')](function(_0x227d08){_0xd94e95[_0x1cea('0x53')]=_0x227d08;return _0xd94e95;})[_0x1cea('0x22')](respondWithFilteredResult(_0x821728,_0x2de7a8))[_0x1cea('0x2c')](handleError(_0x821728,null));};exports[_0x1cea('0x54')]=function(_0x572147,_0x535ab1){var _0x277c11={'raw':!![],'where':{'id':_0x572147[_0x1cea('0x55')]['id']}},_0x40ce9d={};_0x40ce9d[_0x1cea('0x43')]=_[_0x1cea('0x45')](db['OpenchannelMessage']['rawAttributes']);_0x40ce9d[_0x1cea('0x44')]=_[_0x1cea('0x45')](_0x572147['query']);_0x40ce9d['filters']=_[_0x1cea('0x47')](_0x40ce9d['model'],_0x40ce9d['query']);_0x277c11['attributes']=_[_0x1cea('0x47')](_0x40ce9d[_0x1cea('0x43')],qs[_0x1cea('0x49')](_0x572147[_0x1cea('0x44')][_0x1cea('0x49')]));_0x277c11[_0x1cea('0x48')]=_0x277c11['attributes'][_0x1cea('0x4a')]?_0x277c11[_0x1cea('0x48')]:_0x40ce9d[_0x1cea('0x43')];if(_0x572147[_0x1cea('0x44')][_0x1cea('0x56')]){_0x277c11[_0x1cea('0x57')]=[{'all':!![]}];}_0x277c11=_['merge']({},_0x277c11,_0x572147[_0x1cea('0x58')]);return db[_0x1cea('0x3f')]['find'](_0x277c11)[_0x1cea('0x22')](handleEntityNotFound(_0x535ab1,null))[_0x1cea('0x22')](respondWithResult(_0x535ab1,null))[_0x1cea('0x2c')](handleError(_0x535ab1,null));};exports[_0x1cea('0x59')]=function(_0x4ed6bc,_0x58614e){return db[_0x1cea('0x3f')][_0x1cea('0x59')](_0x4ed6bc[_0x1cea('0x5a')],{})['then'](respondWithResult(_0x58614e,0xc9))['catch'](handleError(_0x58614e,null));};exports['update']=function(_0x408690,_0x1196d3){if(_0x408690[_0x1cea('0x5a')]['id']){delete _0x408690['body']['id'];}return db['OpenchannelMessage']['find']({'where':{'id':_0x408690[_0x1cea('0x55')]['id']}})['then'](handleEntityNotFound(_0x1196d3,null))['then'](saveUpdates(_0x408690['body'],null))[_0x1cea('0x22')](respondWithResult(_0x1196d3,null))['catch'](handleError(_0x1196d3,null));};exports[_0x1cea('0x5b')]=function(_0x38075d,_0x12daa6){return db[_0x1cea('0x3f')]['find']({'where':{'id':_0x38075d[_0x1cea('0x55')]['id']}})['then'](handleEntityNotFound(_0x12daa6,null))[_0x1cea('0x22')](removeEntity(_0x12daa6,null))[_0x1cea('0x2c')](handleError(_0x12daa6,null));};exports['describe']=function(_0xc02b55,_0x552f01){return db[_0x1cea('0x3f')]['describe']()['then'](respondWithResult(_0x552f01,null))[_0x1cea('0x2c')](handleError(_0x552f01,null));};var interaction_log=require(_0x1cea('0x15'))(_0x1cea('0x5c'));exports['accept']=function(_0x3e2d31,_0x2493bf,_0x5a8006){var _0x572ce3={'agent':{},'channel':_0x1cea('0x5d')};if(_0x3e2d31[_0x1cea('0x5a')]['id']){delete _0x3e2d31[_0x1cea('0x5a')]['id'];}_0x3e2d31[_0x1cea('0x5a')][_0x1cea('0x5e')]=!![];_0x3e2d31[_0x1cea('0x5a')][_0x1cea('0x5f')]=moment()[_0x1cea('0x60')](_0x1cea('0x61'));_0x3e2d31[_0x1cea('0x5a')][_0x1cea('0x62')]=_0x3e2d31['body'][_0x1cea('0x62')]||_0x3e2d31[_0x1cea('0x63')]['id'];_0x572ce3['agent']['id']=_0x3e2d31[_0x1cea('0x5a')][_0x1cea('0x62')];return db[_0x1cea('0x3f')]['find']({'where':{'id':_0x3e2d31[_0x1cea('0x55')]['id'],'UserId':null}})[_0x1cea('0x22')](handleEntityNotFound(_0x2493bf,null))[_0x1cea('0x22')](saveUpdates(_0x3e2d31[_0x1cea('0x5a')],null))[_0x1cea('0x22')](function(_0x45087c){if(_0x45087c){_0x572ce3[_0x1cea('0x29')]=_0x45087c[_0x1cea('0x64')]({'plain':!![]});return db['OpenchannelInteraction'][_0x1cea('0x65')]({'where':{'id':_0x45087c[_0x1cea('0x66')]}});}return null;})[_0x1cea('0x22')](handleEntityNotFound(_0x2493bf,null))[_0x1cea('0x22')](function(_0x2ffee8){if(_0x2ffee8){return _0x2ffee8['update']({'UserId':_0x3e2d31[_0x1cea('0x5a')][_0x1cea('0x62')],'read1stAt':_['isNil'](_0x2ffee8[_0x1cea('0x67')])?moment()[_0x1cea('0x60')](_0x1cea('0x61')):undefined});}return null;})[_0x1cea('0x22')](function(_0x4d88d5){if(_0x4d88d5){_0x572ce3[_0x1cea('0x68')]=_0x4d88d5[_0x1cea('0x64')]({'plain':!![]});interaction_log['info']('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3e2d31[_0x1cea('0x63')]['id'],_0x3e2d31[_0x1cea('0x63')][_0x1cea('0x3c')],_0x3e2d31[_0x1cea('0x63')][_0x1cea('0x69')],_0x572ce3[_0x1cea('0x68')]['id'],_0x3e2d31[_0x1cea('0x5a')]?JSON[_0x1cea('0x26')](_0x3e2d31['body']):'null');return respondWithRpcPromise(_0x1cea('0x6a'),_0x1cea('0x6b'),_0x572ce3);}return null;})[_0x1cea('0x22')](function(_0x1dbc61){var _0x19fc9a=_0x1cea('0x6c')+_0x1dbc61[_0x1cea('0x29')][_0x1cea('0x6d')];return db[_0x1cea('0x6e')][_0x1cea('0x44')](_0x19fc9a,{'type':db['Sequelize'][_0x1cea('0x6f')][_0x1cea('0x70')],'raw':!![]})[_0x1cea('0x22')](function(_0x2e4a72){return _0x2e4a72;});})[_0x1cea('0x22')](function(_0x513821){if(_0x513821){_0x572ce3[_0x1cea('0x29')][_0x1cea('0x71')]=_0x513821[0x0];if(!_0x3e2d31[_0x1cea('0x5a')][_0x1cea('0x62')])return;return db[_0x1cea('0x72')][_0x1cea('0x65')]({'where':{'id':_0x3e2d31[_0x1cea('0x5a')][_0x1cea('0x62')],'role':_0x1cea('0x73')},'attributes':['id',_0x1cea('0x3c'),'fullname','email',_0x1cea('0x74')],'raw':!![]});}return null;})['then'](function(_0x4a4dcf){if(!_0x4a4dcf)return null;_0x572ce3[_0x1cea('0x29')]['agent']=_0x4a4dcf;return _0x572ce3;})[_0x1cea('0x22')](function(_0x467d25){if(_0x467d25){if(_0x3e2d31[_0x1cea('0x5a')][_0x1cea('0x75')]){_0x572ce3[_0x1cea('0x29')][_0x1cea('0x76')]=util[_0x1cea('0x60')](_0x1cea('0x77'),_0x3e2d31[_0x1cea('0x63')][_0x1cea('0x3c')]);_0x572ce3[_0x1cea('0x29')]['channel']=_0x572ce3[_0x1cea('0x78')];_0x572ce3['message'][_0x1cea('0x79')]=_0x1cea('0x7a');return respondWithRpcPromise('EventManager',_0x1cea('0x7b'),{'event':_0x1cea('0x7c'),'message':_0x572ce3[_0x1cea('0x29')]},client9002)[_0x1cea('0x22')](function(){return _0x572ce3;});}return _0x572ce3;}return null;})[_0x1cea('0x22')](respondWithResult(_0x2493bf,null))[_0x1cea('0x2c')](handleError(_0x2493bf,null));};var interaction_log=require('../../config/logger')('openchannel-interactions');exports['reject']=function(_0x9f9154,_0x1adc9b,_0x512933){var _0x3eb49f={'agent':{},'channel':_0x1cea('0x5d')};if(_0x9f9154['body']['id']){delete _0x9f9154[_0x1cea('0x5a')]['id'];}_0x9f9154[_0x1cea('0x5a')][_0x1cea('0x62')]=_0x9f9154[_0x1cea('0x5a')][_0x1cea('0x62')]||_0x9f9154['user']['id'];_0x3eb49f[_0x1cea('0x73')]['id']=_0x9f9154[_0x1cea('0x5a')]['UserId'];return db[_0x1cea('0x3f')][_0x1cea('0x65')]({'where':{'id':_0x9f9154['params']['id'],'UserId':null}})[_0x1cea('0x22')](handleEntityNotFound(_0x1adc9b,null))[_0x1cea('0x22')](function(_0x42d232){if(_0x42d232){_0x3eb49f[_0x1cea('0x29')]=_0x42d232[_0x1cea('0x64')]({'plain':!![]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x42d232[_0x1cea('0x66')]}});}return null;})[_0x1cea('0x22')](handleEntityNotFound(_0x1adc9b,null))[_0x1cea('0x22')](function(_0x400b2d){if(_0x400b2d){_0x3eb49f[_0x1cea('0x68')]=_0x400b2d[_0x1cea('0x64')]({'plain':!![]});interaction_log[_0x1cea('0x2a')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x9f9154['user']['id'],_0x9f9154[_0x1cea('0x63')]['name'],_0x9f9154[_0x1cea('0x63')][_0x1cea('0x69')],_0x3eb49f['interaction']['id'],_0x9f9154[_0x1cea('0x5a')]?JSON[_0x1cea('0x26')](_0x9f9154[_0x1cea('0x5a')]):'null');return respondWithRpcPromise(_0x1cea('0x7d'),_0x1cea('0x7e'),_0x3eb49f);}return null;})['then'](function(_0x55a6b7){var _0x307694='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x55a6b7[_0x1cea('0x29')][_0x1cea('0x6d')];return db['sequelize']['query'](_0x307694,{'type':db[_0x1cea('0x7f')]['QueryTypes']['SELECT'],'raw':!![]})[_0x1cea('0x22')](function(_0x588a25){return _0x588a25;});})['then'](function(_0x121c71){if(_0x121c71){_0x3eb49f[_0x1cea('0x29')][_0x1cea('0x71')]=_0x121c71[0x0];if(!_0x9f9154[_0x1cea('0x5a')]['UserId'])return;return db[_0x1cea('0x72')][_0x1cea('0x65')]({'where':{'id':_0x9f9154[_0x1cea('0x5a')][_0x1cea('0x62')],'role':'agent'},'attributes':['id',_0x1cea('0x3c'),_0x1cea('0x80'),_0x1cea('0x81'),_0x1cea('0x74')],'raw':!![]});}return null;})['then'](function(_0x4783b6){if(!_0x4783b6)return null;_0x3eb49f[_0x1cea('0x29')][_0x1cea('0x73')]=_0x4783b6;return _0x3eb49f;})['then'](function(_0x1d222b){if(_0x1d222b){_0x1d222b['message'][_0x1cea('0x76')]=util[_0x1cea('0x60')]('SIP/%s',_0x9f9154[_0x1cea('0x63')]['name']);_0x1d222b[_0x1cea('0x29')]['channel']=_0x3eb49f[_0x1cea('0x78')];_0x1d222b[_0x1cea('0x29')]['event']=_0x1cea('0x37');respondWithRpcPromise('EventManager',_0x1cea('0x7b'),{'event':_0x1cea('0x82'),'message':_0x1d222b['message']},client9002);return _0x3eb49f;}return null;})[_0x1cea('0x22')](respondWithResult(_0x1adc9b,null))[_0x1cea('0x2c')](handleError(_0x1adc9b,null));};
\ No newline at end of file
index a7ea559..38622de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c59=['../../mysqldb','OpenchannelMessage','setMaxListeners','update','remove','emit','hasOwnProperty','events'];(function(_0x33e200,_0x4d13ab){var _0xc868bb=function(_0x2fd322){while(--_0x2fd322){_0x33e200['push'](_0x33e200['shift']());}};_0xc868bb(++_0x4d13ab);}(_0x0c59,0x127));var _0x90c5=function(_0x35da42,_0x5c2610){_0x35da42=_0x35da42-0x0;var _0x370035=_0x0c59[_0x35da42];return _0x370035;};'use strict';var EventEmitter=require(_0x90c5('0x0'));var OpenchannelMessage=require(_0x90c5('0x1'))['db'][_0x90c5('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x90c5('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x90c5('0x4'),'afterDestroy':_0x90c5('0x5')};function emitEvent(_0x337cde){return function(_0x320285,_0x58aca5,_0x38d16a){OpenchannelMessageEvents[_0x90c5('0x6')](_0x337cde+':'+_0x320285['id'],_0x320285);OpenchannelMessageEvents[_0x90c5('0x6')](_0x337cde,_0x320285);_0x38d16a(null);};}for(var e in events){if(events[_0x90c5('0x7')](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module['exports']=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x2fe1=['save','update','emit','hasOwnProperty','hook','exports','../../mysqldb','OpenchannelMessage','setMaxListeners'];(function(_0x8bbe95,_0x407d05){var _0x587734=function(_0xb47af){while(--_0xb47af){_0x8bbe95['push'](_0x8bbe95['shift']());}};_0x587734(++_0x407d05);}(_0x2fe1,0x8d));var _0x12fe=function(_0x32f234,_0x2aa66e){_0x32f234=_0x32f234-0x0;var _0x5b944e=_0x2fe1[_0x32f234];return _0x5b944e;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require(_0x12fe('0x0'))['db'][_0x12fe('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x12fe('0x2')](0x0);var events={'afterCreate':_0x12fe('0x3'),'afterUpdate':_0x12fe('0x4'),'afterDestroy':'remove'};function emitEvent(_0x1547fb){return function(_0x4000c0,_0x208b2b,_0x1f342a){OpenchannelMessageEvents[_0x12fe('0x5')](_0x1547fb+':'+_0x4000c0['id'],_0x4000c0);OpenchannelMessageEvents[_0x12fe('0x5')](_0x1547fb,_0x4000c0);_0x1f342a(null);};}for(var e in events){if(events[_0x12fe('0x6')](e)){var event=events[e];OpenchannelMessage[_0x12fe('0x7')](e,emitEvent(event));}}module[_0x12fe('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
index 2936325..47bd52b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe605=['bluebird','request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','openchannel_messages','models','direction','toLowerCase','out','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','CmContact','describe','OpenchannelAccount','find','Interactions','Contact','keys','get','replyUri','info','afterCreate','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','omit','POST','method','OpenchannelMessage,\x20%s,\x20%s','Message\x20%d\x20forwarded\x20to\x20%s','threadId','error','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment'];(function(_0x1f8795,_0x274f45){var _0x4e467f=function(_0x99b018){while(--_0x99b018){_0x1f8795['push'](_0x1f8795['shift']());}};_0x4e467f(++_0x274f45);}(_0xe605,0x92));var _0x5e60=function(_0x112076,_0x3e80f8){_0x112076=_0x112076-0x0;var _0x2fa122=_0xe605[_0x112076];return _0x2fa122;};'use strict';var _=require(_0x5e60('0x0'));var util=require(_0x5e60('0x1'));var logger=require('../../config/logger')(_0x5e60('0x2'));var moment=require(_0x5e60('0x3'));var BPromise=require(_0x5e60('0x4'));var rp=require(_0x5e60('0x5'));var fs=require('fs');var path=require(_0x5e60('0x6'));var rimraf=require(_0x5e60('0x7'));var config=require(_0x5e60('0x8'));var attributes=require(_0x5e60('0x9'));module[_0x5e60('0xa')]=function(_0xc41535,_0x1d4a08){return _0xc41535[_0x5e60('0xb')]('OpenchannelMessage',attributes,{'tableName':_0x5e60('0xc'),'paranoid':![],'indexes':[{'name':'fti_openchannel_messages','fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x43f7eb,_0xe93f9c,_0x150a51){var _0x2c5425=_0xc41535[_0x5e60('0xd')];var _0x2cbe4e=_0x43f7eb['get']({'plain':!![]});if(_0x2cbe4e[_0x5e60('0xe')]['toLowerCase']()==='in'||_0x2cbe4e[_0x5e60('0xe')][_0x5e60('0xf')]()===_0x5e60('0x10')&&!_0x2cbe4e['secret']&&!_[_0x5e60('0x11')](_0x2cbe4e[_0x5e60('0x12')])){_0x2c5425[_0x5e60('0x13')][_0x5e60('0x14')]({'where':{'id':_0x2cbe4e[_0x5e60('0x15')]}})[_0x5e60('0x16')](function(_0x4fd10e){if(_0x4fd10e){_0x4fd10e[_0x5e60('0x17')]({'lastMsgAt':_0x2cbe4e[_0x5e60('0x18')],'lastMsgDirection':_0x2cbe4e[_0x5e60('0xe')][_0x5e60('0xf')]()});}})['catch'](function(_0x20af5f){console['error'](_0x20af5f);});}if(_0x2cbe4e[_0x5e60('0xe')]===_0x5e60('0x10')&&!_0x2cbe4e['secret']){var _0x39be57;_0x2c5425[_0x5e60('0x19')][_0x5e60('0x1a')]()[_0x5e60('0x16')](function(_0x5c485d){return _0x2c5425[_0x5e60('0x1b')][_0x5e60('0x1c')]({'where':{'id':_0x2cbe4e['OpenchannelAccountId']},'include':[{'model':_0x2c5425[_0x5e60('0x13')],'as':_0x5e60('0x1d'),'where':{'id':_0x2cbe4e[_0x5e60('0x15')]},'limit':0x1,'include':[{'model':_0x2c5425[_0x5e60('0x19')],'as':_0x5e60('0x1e'),'attributes':_[_0x5e60('0x1f')](_0x5c485d)}]}]});})[_0x5e60('0x16')](function(_0x524c93){_0x39be57=_0x524c93[_0x5e60('0x20')]({'plain':!![]});if(_0x39be57&&_0x39be57[_0x5e60('0x21')]){logger[_0x5e60('0x22')]('OpenchannelMessage,\x20%s,\x20%s',_0x5e60('0x23'),util['format'](_0x5e60('0x24'),_0x2cbe4e['id'],_0x39be57[_0x5e60('0x21')]));if(_0x39be57[_0x5e60('0x1d')]&&_0x39be57[_0x5e60('0x1d')][_0x5e60('0x25')]){_0x2cbe4e[_0x5e60('0x26')]=_[_0x5e60('0x27')](_0x39be57['Interactions'][0x0],_0x5e60('0x1e'));_0x2cbe4e[_0x5e60('0x1e')]=_0x39be57[_0x5e60('0x1d')][0x0]['Contact'];}var _0xe93f9c={'method':_0x5e60('0x28'),'uri':encodeURI(_0x39be57[_0x5e60('0x21')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0xe93f9c[_0x5e60('0x29')]){case'GET':_0xe93f9c['qs']=_0x2cbe4e;break;case _0x5e60('0x28'):_0xe93f9c['body']=_0x2cbe4e;break;}return rp(_0xe93f9c)[_0x5e60('0x16')](function(_0x221322){logger['info'](_0x5e60('0x2a'),_0x5e60('0x23'),util['format'](_0x5e60('0x2b'),_0x2cbe4e['id'],_0x39be57[_0x5e60('0x21')]));if(_0x221322['body']['threadId']&&_0x221322['body'][_0x5e60('0x2c')]!=_0x2cbe4e[_0x5e60('0x26')][_0x5e60('0x2c')]){return _0x2c5425[_0x5e60('0x13')][_0x5e60('0x17')]({'threadId':_0x221322['body'][_0x5e60('0x2c')]},{'logging':!![],'where':{'id':_0x2cbe4e[_0x5e60('0x26')]['id']}});}else{return;}})['then'](function(){return _0x43f7eb[_0x5e60('0x17')]({'read':!![]});})['catch'](function(_0x50f024){logger[_0x5e60('0x2d')](_0x5e60('0x2a'),_0x5e60('0x23'),util[_0x5e60('0x2e')](_0x50f024,{'showHidden':![],'depth':null}));_0x150a51();});}else{_0x150a51();}})[_0x5e60('0x2f')](function(){_0x150a51();});}else{_0x150a51();}}},'charset':_0x5e60('0x30'),'collate':_0x5e60('0x31')});};
\ No newline at end of file
+var _0x3423=['update','createdAt','catch','CmContact','describe','OpenchannelAccount','find','OpenchannelAccountId','OpenchannelInteraction','Interactions','Contact','keys','get','info','OpenchannelMessage,\x20%s,\x20%s','format','replyUri','length','Interaction','omit','POST','GET','afterCreate','threadId','error','inspect','finally','utf8mb4','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','toLowerCase','direction','out','isNil','UserId','findOne','OpenchannelInteractionId','then'];(function(_0x22ece2,_0x3ef319){var _0x4b0568=function(_0x53dbb1){while(--_0x53dbb1){_0x22ece2['push'](_0x22ece2['shift']());}};_0x4b0568(++_0x3ef319);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3342('0x0'))(_0x3342('0x1'));var moment=require(_0x3342('0x2'));var BPromise=require(_0x3342('0x3'));var rp=require(_0x3342('0x4'));var fs=require('fs');var path=require(_0x3342('0x5'));var rimraf=require(_0x3342('0x6'));var config=require(_0x3342('0x7'));var attributes=require(_0x3342('0x8'));module[_0x3342('0x9')]=function(_0x467453,_0x2ccbe0){return _0x467453[_0x3342('0xa')](_0x3342('0xb'),attributes,{'tableName':_0x3342('0xc'),'paranoid':![],'indexes':[{'name':_0x3342('0xd'),'fields':[_0x3342('0xe')],'type':_0x3342('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x9cc419,_0x4ae4f3,_0x582c37){var _0x2d0cb0=_0x467453['models'];var _0x5a1fba=_0x9cc419['get']({'plain':!![]});if(_0x5a1fba['direction'][_0x3342('0x10')]()==='in'||_0x5a1fba[_0x3342('0x11')]['toLowerCase']()===_0x3342('0x12')&&!_0x5a1fba['secret']&&!_[_0x3342('0x13')](_0x5a1fba[_0x3342('0x14')])){_0x2d0cb0['OpenchannelInteraction'][_0x3342('0x15')]({'where':{'id':_0x5a1fba[_0x3342('0x16')]}})[_0x3342('0x17')](function(_0xe4689e){if(_0xe4689e){_0xe4689e[_0x3342('0x18')]({'lastMsgAt':_0x5a1fba[_0x3342('0x19')],'lastMsgDirection':_0x5a1fba[_0x3342('0x11')]['toLowerCase']()});}})[_0x3342('0x1a')](function(_0x19bd71){console['error'](_0x19bd71);});}if(_0x5a1fba[_0x3342('0x11')]===_0x3342('0x12')&&!_0x5a1fba['secret']){var _0x554f9c;_0x2d0cb0[_0x3342('0x1b')][_0x3342('0x1c')]()[_0x3342('0x17')](function(_0x2075cb){return _0x2d0cb0[_0x3342('0x1d')][_0x3342('0x1e')]({'where':{'id':_0x5a1fba[_0x3342('0x1f')]},'include':[{'model':_0x2d0cb0[_0x3342('0x20')],'as':_0x3342('0x21'),'where':{'id':_0x5a1fba['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0x2d0cb0[_0x3342('0x1b')],'as':_0x3342('0x22'),'attributes':_[_0x3342('0x23')](_0x2075cb)}]}]});})['then'](function(_0x3cb86f){_0x554f9c=_0x3cb86f[_0x3342('0x24')]({'plain':!![]});if(_0x554f9c&&_0x554f9c['replyUri']){logger[_0x3342('0x25')](_0x3342('0x26'),'afterCreate',util[_0x3342('0x27')]('Forwarding\x20message\x20%d\x20to\x20%s',_0x5a1fba['id'],_0x554f9c[_0x3342('0x28')]));if(_0x554f9c[_0x3342('0x21')]&&_0x554f9c[_0x3342('0x21')][_0x3342('0x29')]){_0x5a1fba[_0x3342('0x2a')]=_[_0x3342('0x2b')](_0x554f9c[_0x3342('0x21')][0x0],_0x3342('0x22'));_0x5a1fba['Contact']=_0x554f9c[_0x3342('0x21')][0x0]['Contact'];}var _0x4ae4f3={'method':_0x3342('0x2c'),'uri':encodeURI(_0x554f9c['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x4ae4f3['method']){case _0x3342('0x2d'):_0x4ae4f3['qs']=_0x5a1fba;break;case'POST':_0x4ae4f3[_0x3342('0xe')]=_0x5a1fba;break;}return rp(_0x4ae4f3)['then'](function(_0x524286){logger['info'](_0x3342('0x26'),_0x3342('0x2e'),util[_0x3342('0x27')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x5a1fba['id'],_0x554f9c[_0x3342('0x28')]));if(_0x524286[_0x3342('0xe')][_0x3342('0x2f')]&&_0x524286[_0x3342('0xe')]['threadId']!=_0x5a1fba[_0x3342('0x2a')][_0x3342('0x2f')]){return _0x2d0cb0[_0x3342('0x20')][_0x3342('0x18')]({'threadId':_0x524286[_0x3342('0xe')][_0x3342('0x2f')]},{'logging':!![],'where':{'id':_0x5a1fba[_0x3342('0x2a')]['id']}});}else{return;}})['then'](function(){return _0x9cc419[_0x3342('0x18')]({'read':!![]});})['catch'](function(_0x9c9def){logger[_0x3342('0x30')]('OpenchannelMessage,\x20%s,\x20%s',_0x3342('0x2e'),util[_0x3342('0x31')](_0x9c9def,{'showHidden':![],'depth':null}));_0x582c37();});}else{_0x582c37();}})[_0x3342('0x32')](function(){_0x582c37();});}else{_0x582c37();}}},'charset':_0x3342('0x33'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index d6020e3..b60a8fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['message','result','OpenchannelMessage','create','body','options','CreateOpenchannelMessage','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','then','info','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x175608,_0x5c670f){var _0x491858=function(_0x2e7ba2){while(--_0x2e7ba2){_0x175608['push'](_0x175608['shift']());}};_0x491858(++_0x5c670f);}(_0x0b0e,0x187));var _0xe0b0=function(_0x25a0b9,_0x86e28f){_0x25a0b9=_0x25a0b9-0x0;var _0x30b9ab=_0x0b0e[_0x25a0b9];return _0x30b9ab;};'use strict';var _=require(_0xe0b0('0x0'));var util=require('util');var moment=require(_0xe0b0('0x1'));var BPromise=require('bluebird');var rs=require(_0xe0b0('0x2'));var fs=require('fs');var Redis=require(_0xe0b0('0x3'));var db=require(_0xe0b0('0x4'))['db'];var utils=require(_0xe0b0('0x5'));var logger=require(_0xe0b0('0x6'))(_0xe0b0('0x7'));var config=require(_0xe0b0('0x8'));var jayson=require(_0xe0b0('0x9'));var client=jayson[_0xe0b0('0xa')][_0xe0b0('0xb')]({'port':0x232a});config[_0xe0b0('0xc')]=_['defaults'](config['redis'],{'host':_0xe0b0('0xd'),'port':0x18eb});var socket=require(_0xe0b0('0xe'))(new Redis(config[_0xe0b0('0xc')]));require(_0xe0b0('0xf'))['register'](socket);function respondWithRpcPromise(_0x338e7c,_0x1dd3b8,_0x553d4f){return new BPromise(function(_0x1fef28,_0x2f32b6){return client['request'](_0x338e7c,_0x553d4f)[_0xe0b0('0x10')](function(_0x2cdad2){logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0xe0b0('0x12'));logger[_0xe0b0('0x13')](_0xe0b0('0x14'),_0x1dd3b8,_0xe0b0('0x12'),JSON[_0xe0b0('0x15')](_0x2cdad2));if(_0x2cdad2['error']){if(_0x2cdad2[_0xe0b0('0x16')][_0xe0b0('0x17')]===0x1f4){logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2[_0xe0b0('0x16')]['message']);return _0x2f32b6(_0x2cdad2[_0xe0b0('0x16')]['message']);}logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2['error'][_0xe0b0('0x19')]);return _0x1fef28(_0x2cdad2['error'][_0xe0b0('0x19')]);}else{logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,'request\x20sent');_0x1fef28(_0x2cdad2[_0xe0b0('0x1a')]['message']);}})['catch'](function(_0x4bce65){logger[_0xe0b0('0x16')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0x4bce65);_0x2f32b6(_0x4bce65);});});}exports['CreateOpenchannelMessage']=function(_0x10cde1){var _0x59dff5=this;return new Promise(function(_0x472286,_0x5dba2f){return db[_0xe0b0('0x1b')][_0xe0b0('0x1c')](_0x10cde1[_0xe0b0('0x1d')],{'raw':_0x10cde1[_0xe0b0('0x1e')]?_0x10cde1[_0xe0b0('0x1e')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2fa820){logger['info'](_0xe0b0('0x1f'),_0x10cde1);logger[_0xe0b0('0x13')]('CreateOpenchannelMessage',_0x10cde1,JSON[_0xe0b0('0x15')](_0x2fa820));_0x472286(_0x2fa820);})['catch'](function(_0x2208d0){logger['error'](_0xe0b0('0x1f'),_0x2208d0['message'],_0x10cde1);_0x5dba2f(_0x59dff5[_0xe0b0('0x16')](0x1f4,_0x2208d0['message']));});});};
\ No newline at end of file
+var _0xdb28=['then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateOpenchannelMessage','OpenchannelMessage','create','body','options','raw','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','request'];(function(_0x12742e,_0x43f6fa){var _0x173452=function(_0x500743){while(--_0x500743){_0x12742e['push'](_0x12742e['shift']());}};_0x173452(++_0x43f6fa);}(_0xdb28,0x106));var _0x8db2=function(_0x5de332,_0x4c05c9){_0x5de332=_0x5de332-0x0;var _0x27f288=_0xdb28[_0x5de332];return _0x27f288;};'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});config['redis']=_[_0x8db2('0xb')](config[_0x8db2('0xc')],{'host':_0x8db2('0xd'),'port':0x18eb});var socket=require(_0x8db2('0xe'))(new Redis(config[_0x8db2('0xc')]));require(_0x8db2('0xf'))[_0x8db2('0x10')](socket);function respondWithRpcPromise(_0x4ba340,_0x30dc90,_0x476216){return new BPromise(function(_0x1f62af,_0x57015f){return client[_0x8db2('0x11')](_0x4ba340,_0x476216)[_0x8db2('0x12')](function(_0x576475){logger[_0x8db2('0x13')](_0x8db2('0x14'),_0x30dc90,_0x8db2('0x15'));logger[_0x8db2('0x16')](_0x8db2('0x17'),_0x30dc90,'request\x20sent',JSON['stringify'](_0x576475));if(_0x576475[_0x8db2('0x18')]){if(_0x576475[_0x8db2('0x18')][_0x8db2('0x19')]===0x1f4){logger[_0x8db2('0x18')](_0x8db2('0x14'),_0x30dc90,_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);return _0x57015f(_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);}logger[_0x8db2('0x18')]('OpenchannelMessage,\x20%s,\x20%s',_0x30dc90,_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);return _0x1f62af(_0x576475['error'][_0x8db2('0x1a')]);}else{logger[_0x8db2('0x13')](_0x8db2('0x14'),_0x30dc90,_0x8db2('0x15'));_0x1f62af(_0x576475[_0x8db2('0x1b')][_0x8db2('0x1a')]);}})['catch'](function(_0x5df464){logger[_0x8db2('0x18')](_0x8db2('0x14'),_0x30dc90,_0x5df464);_0x57015f(_0x5df464);});});}exports[_0x8db2('0x1c')]=function(_0x1b64e4){var _0x58562e=this;return new Promise(function(_0x431d60,_0x36a9ff){return db[_0x8db2('0x1d')][_0x8db2('0x1e')](_0x1b64e4[_0x8db2('0x1f')],{'raw':_0x1b64e4['options']?_0x1b64e4[_0x8db2('0x20')][_0x8db2('0x21')]===undefined?!![]:![]:!![]})[_0x8db2('0x12')](function(_0x125be2){logger[_0x8db2('0x13')](_0x8db2('0x1c'),_0x1b64e4);logger[_0x8db2('0x16')]('CreateOpenchannelMessage',_0x1b64e4,JSON[_0x8db2('0x22')](_0x125be2));_0x431d60(_0x125be2);})['catch'](function(_0x5725f0){logger['error']('CreateOpenchannelMessage',_0x5725f0[_0x8db2('0x1a')],_0x1b64e4);_0x36a9ff(_0x58562e[_0x8db2('0x18')](0x1f4,_0x5725f0[_0x8db2('0x1a')]));});});};
\ No newline at end of file
index be7cb09..623026b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x961e=['removeListener','register','length','openchannelMessage:','remove','update'];(function(_0x3e88de,_0x4f4997){var _0x466cd6=function(_0x17510b){while(--_0x17510b){_0x3e88de['push'](_0x3e88de['shift']());}};_0x466cd6(++_0x4f4997);}(_0x961e,0x1a8));var _0xe961=function(_0xc1e251,_0x5833f6){_0xc1e251=_0xc1e251-0x0;var _0x241b3f=_0x961e[_0xc1e251];return _0x241b3f;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=['save',_0xe961('0x0'),_0xe961('0x1')];function createListener(_0x5b42bf,_0x322fa2){return function(_0x5a1ca2){_0x322fa2['emit'](_0x5b42bf,_0x5a1ca2);};}function removeListener(_0x13040,_0x14f25f){return function(){OpenchannelMessageEvents[_0xe961('0x2')](_0x13040,_0x14f25f);};}exports[_0xe961('0x3')]=function(_0x1dddb9){for(var _0x53b6f5=0x0,_0x32c931=events[_0xe961('0x4')];_0x53b6f5<_0x32c931;_0x53b6f5++){var _0x4eb379=events[_0x53b6f5];var _0x30abc2=createListener(_0xe961('0x5')+_0x4eb379,_0x1dddb9);OpenchannelMessageEvents['on'](_0x4eb379,_0x30abc2);}};
\ No newline at end of file
+var _0x8110=['emit','removeListener','register','length','openchannelMessage:','save'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x8110,0x185));var _0x0811=function(_0x1fd24e,_0x4f1323){_0x1fd24e=_0x1fd24e-0x0;var _0x598aaf=_0x8110[_0x1fd24e];return _0x598aaf;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=[_0x0811('0x0'),'remove','update'];function createListener(_0x50711c,_0x4167c8){return function(_0x4b623f){_0x4167c8[_0x0811('0x1')](_0x50711c,_0x4b623f);};}function removeListener(_0x266310,_0x424170){return function(){OpenchannelMessageEvents[_0x0811('0x2')](_0x266310,_0x424170);};}exports[_0x0811('0x3')]=function(_0x4ed4e1){for(var _0x263e0f=0x0,_0x53b418=events[_0x0811('0x4')];_0x263e0f<_0x53b418;_0x263e0f++){var _0x375ae0=events[_0x263e0f];var _0x934f6c=createListener(_0x0811('0x5')+_0x375ae0,_0x4ed4e1);OpenchannelMessageEvents['on'](_0x375ae0,_0x934f6c);}};
\ No newline at end of file
index 69b4486..4d7c420 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2862=['../../components/auth/service','../../components/interaction/service','./openchannelQueue.controller','isAuthenticated','index','/describe','get','/:id','show','/:id/members','getTeams','/:id/users','getAgents','create','post','addAgents','put','update','delete','/:id/teams','removeTeams','exports','multer','util','express','fs-extra'];(function(_0x1d004c,_0x268530){var _0x1da842=function(_0x1c2016){while(--_0x1c2016){_0x1d004c['push'](_0x1d004c['shift']());}};_0x1da842(++_0x268530);}(_0x2862,0x168));var _0x2286=function(_0x4e3790,_0x215ee4){_0x4e3790=_0x4e3790-0x0;var _0x4f5e70=_0x2862[_0x4e3790];return _0x4f5e70;};'use strict';var multer=require(_0x2286('0x0'));var util=require(_0x2286('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x2286('0x2'));var router=express['Router']();var fs_extra=require(_0x2286('0x3'));var auth=require(_0x2286('0x4'));var interaction=require(_0x2286('0x5'));var config=require('../../config/environment');var controller=require(_0x2286('0x6'));router['get']('/',auth[_0x2286('0x7')](),controller[_0x2286('0x8')]);router['get'](_0x2286('0x9'),auth[_0x2286('0x7')](),controller['describe']);router[_0x2286('0xa')](_0x2286('0xb'),auth['isAuthenticated'](),controller[_0x2286('0xc')]);router[_0x2286('0xa')](_0x2286('0xd'),auth[_0x2286('0x7')](),controller['getMembers']);router[_0x2286('0xa')]('/:id/teams',auth[_0x2286('0x7')](),controller[_0x2286('0xe')]);router['get'](_0x2286('0xf'),auth[_0x2286('0x7')](),controller[_0x2286('0x10')]);router['post']('/',auth[_0x2286('0x7')](),controller[_0x2286('0x11')]);router[_0x2286('0x12')]('/:id/teams',auth[_0x2286('0x7')](),controller['addTeams']);router[_0x2286('0x12')](_0x2286('0xf'),auth[_0x2286('0x7')](),controller[_0x2286('0x13')]);router[_0x2286('0x14')](_0x2286('0xb'),auth[_0x2286('0x7')](),controller[_0x2286('0x15')]);router[_0x2286('0x16')](_0x2286('0xb'),auth[_0x2286('0x7')](),controller['destroy']);router[_0x2286('0x16')](_0x2286('0x17'),auth[_0x2286('0x7')](),controller[_0x2286('0x18')]);router[_0x2286('0x16')](_0x2286('0xf'),auth[_0x2286('0x7')](),controller['removeAgents']);module[_0x2286('0x19')]=router;
\ No newline at end of file
+var _0xf81a=['removeTeams','removeAgents','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/describe','/:id','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','create','post','addTeams','addAgents','put','update','delete','destroy'];(function(_0x2f45ea,_0x15c656){var _0x485a84=function(_0x4a1fe3){while(--_0x4a1fe3){_0x2f45ea['push'](_0x2f45ea['shift']());}};_0x485a84(++_0x15c656);}(_0xf81a,0xf3));var _0xaf81=function(_0x2a791c,_0x138255){_0x2a791c=_0x2a791c-0x0;var _0x516297=_0xf81a[_0x2a791c];return _0x516297;};'use strict';var multer=require(_0xaf81('0x0'));var util=require(_0xaf81('0x1'));var path=require(_0xaf81('0x2'));var timeout=require('connect-timeout');var express=require(_0xaf81('0x3'));var router=express[_0xaf81('0x4')]();var fs_extra=require(_0xaf81('0x5'));var auth=require(_0xaf81('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xaf81('0x7'));var controller=require(_0xaf81('0x8'));router[_0xaf81('0x9')]('/',auth[_0xaf81('0xa')](),controller[_0xaf81('0xb')]);router[_0xaf81('0x9')](_0xaf81('0xc'),auth[_0xaf81('0xa')](),controller['describe']);router[_0xaf81('0x9')](_0xaf81('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xaf81('0x9')](_0xaf81('0xe'),auth[_0xaf81('0xa')](),controller['getMembers']);router[_0xaf81('0x9')](_0xaf81('0xf'),auth[_0xaf81('0xa')](),controller[_0xaf81('0x10')]);router[_0xaf81('0x9')](_0xaf81('0x11'),auth[_0xaf81('0xa')](),controller[_0xaf81('0x12')]);router['post']('/',auth[_0xaf81('0xa')](),controller[_0xaf81('0x13')]);router[_0xaf81('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0xaf81('0x15')]);router[_0xaf81('0x14')](_0xaf81('0x11'),auth[_0xaf81('0xa')](),controller[_0xaf81('0x16')]);router[_0xaf81('0x17')](_0xaf81('0xd'),auth['isAuthenticated'](),controller[_0xaf81('0x18')]);router[_0xaf81('0x19')](_0xaf81('0xd'),auth[_0xaf81('0xa')](),controller[_0xaf81('0x1a')]);router[_0xaf81('0x19')](_0xaf81('0xf'),auth[_0xaf81('0xa')](),controller[_0xaf81('0x1b')]);router[_0xaf81('0x19')](_0xaf81('0x11'),auth[_0xaf81('0xa')](),controller[_0xaf81('0x1c')]);module[_0xaf81('0x1d')]=router;
\ No newline at end of file
index 4ee3534..0810d96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7f4=['sequelize','exports','STRING','name','INTEGER','ENUM','rrmemory'];(function(_0x12a2a6,_0x374ff1){var _0x1754ae=function(_0x49d787){while(--_0x49d787){_0x12a2a6['push'](_0x12a2a6['shift']());}};_0x1754ae(++_0x374ff1);}(_0xa7f4,0x15e));var _0x4a7f=function(_0x5190b8,_0x297844){_0x5190b8=_0x5190b8-0x0;var _0x5c90e7=_0xa7f4[_0x5190b8];return _0x5c90e7;};'use strict';var Sequelize=require(_0x4a7f('0x0'));module[_0x4a7f('0x1')]={'name':{'type':Sequelize[_0x4a7f('0x2')],'unique':_0x4a7f('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x4a7f('0x2')]},'timeout':{'type':Sequelize[_0x4a7f('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x4a7f('0x5')](_0x4a7f('0x6'),'beepall','roundrobin')}};
\ No newline at end of file
+var _0x8cfc=['STRING','name','beepall','roundrobin','sequelize','exports'];(function(_0x51380e,_0x55b897){var _0x2ed390=function(_0x217cfe){while(--_0x217cfe){_0x51380e['push'](_0x51380e['shift']());}};_0x2ed390(++_0x55b897);}(_0x8cfc,0x106));var _0xc8cf=function(_0x59500c,_0x23afdd){_0x59500c=_0x59500c-0x0;var _0x3aec6c=_0x8cfc[_0x59500c];return _0x3aec6c;};'use strict';var Sequelize=require(_0xc8cf('0x0'));module[_0xc8cf('0x1')]={'name':{'type':Sequelize[_0xc8cf('0x2')],'unique':_0xc8cf('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xc8cf('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0xc8cf('0x4'),_0xc8cf('0x5'))}};
\ No newline at end of file
index d88015c..cb8b192 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x140b=['query','filters','intersection','fields','attributes','hasOwnProperty','sort','pick','where','filter','options','includeAll','include','rows','catch','show','params','length','merge','OpenchannelQueue','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','UserOpenchannelQueue','findAll','User','findAndCountAll','UserId','openchannelPause','updatedAt','format','%s/%s','SIP','getTeams','Team','nolimit','addTeams','ids','Agents','online','voicePause','flatMap','transaction','each','emit','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','push','toString','sequelize','SELECT','every','TeamId','all','union','compact','value','isEmpty','forEach','addAgents','omit','spread','removeAgents','userOpenchannelQueue:remove','getAgents','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','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./openchannelQueue.socket','register','end','json','offset','undefined','limit','count','status','set','reject','save','update','destroy','then','get','OpenchannelQueues','UserProfileResource','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys'];(function(_0xbbfe59,_0x46067f){var _0x28a2a4=function(_0xfe230){while(--_0xfe230){_0xbbfe59['push'](_0xbbfe59['shift']());}};_0x28a2a4(++_0x46067f);}(_0x140b,0x174));var _0xb140=function(_0xd3c0a5,_0x28ad32){_0xd3c0a5=_0xd3c0a5-0x0;var _0x2e73dd=_0x140b[_0xd3c0a5];return _0x2e73dd;};'use strict';var emlformat=require(_0xb140('0x0'));var rimraf=require(_0xb140('0x1'));var zipdir=require(_0xb140('0x2'));var jsonpatch=require(_0xb140('0x3'));var rp=require(_0xb140('0x4'));var moment=require(_0xb140('0x5'));var BPromise=require(_0xb140('0x6'));var Mustache=require('mustache');var util=require(_0xb140('0x7'));var path=require(_0xb140('0x8'));var sox=require(_0xb140('0x9'));var csv=require(_0xb140('0xa'));var ejs=require(_0xb140('0xb'));var fs=require('fs');var fs_extra=require(_0xb140('0xc'));var _=require(_0xb140('0xd'));var squel=require(_0xb140('0xe'));var crypto=require('crypto');var jsforce=require(_0xb140('0xf'));var deskjs=require(_0xb140('0x10'));var toCsv=require('to-csv');var querystring=require(_0xb140('0x11'));var Papa=require(_0xb140('0x12'));var Redis=require(_0xb140('0x13'));var authService=require(_0xb140('0x14'));var qs=require(_0xb140('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb140('0x16'))(_0xb140('0x17'));var utils=require(_0xb140('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xb140('0x19'));var db=require(_0xb140('0x1a'))['db'];config['redis']=_['defaults'](config[_0xb140('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0xb140('0x1c'))(new Redis(config['redis']));require(_0xb140('0x1d'))[_0xb140('0x1e')](socket);function respondWithStatusCode(_0x210eb6,_0x544e35){_0x544e35=_0x544e35||0xcc;return function(_0x223c8e){if(_0x223c8e){return _0x210eb6['sendStatus'](_0x544e35);}return _0x210eb6['status'](_0x544e35)[_0xb140('0x1f')]();};}function respondWithResult(_0x396024,_0x5160af){_0x5160af=_0x5160af||0xc8;return function(_0x3742a5){if(_0x3742a5){return _0x396024['status'](_0x5160af)[_0xb140('0x20')](_0x3742a5);}};}function respondWithFilteredResult(_0x4a9f12,_0x4292f4){return function(_0x3076d0){if(_0x3076d0){var _0x45a614=typeof _0x4292f4[_0xb140('0x21')]===_0xb140('0x22')&&typeof _0x4292f4[_0xb140('0x23')]===_0xb140('0x22');var _0x2bc23c=_0x3076d0[_0xb140('0x24')];var _0xee459b=_0x45a614?0x0:_0x4292f4['offset'];var _0xb816ec=_0x45a614?_0x3076d0[_0xb140('0x24')]:_0x4292f4[_0xb140('0x21')]+_0x4292f4[_0xb140('0x23')];var _0x78c89e;if(_0xb816ec>=_0x2bc23c){_0xb816ec=_0x2bc23c;_0x78c89e=0xc8;}else{_0x78c89e=0xce;}_0x4a9f12[_0xb140('0x25')](_0x78c89e);return _0x4a9f12[_0xb140('0x26')]('Content-Range',_0xee459b+'-'+_0xb816ec+'/'+_0x2bc23c)[_0xb140('0x20')](_0x3076d0);}return null;};}function patchUpdates(_0x2f64e1){return function(_0x301230){try{jsonpatch['apply'](_0x301230,_0x2f64e1,!![]);}catch(_0x4104cd){return BPromise[_0xb140('0x27')](_0x4104cd);}return _0x301230[_0xb140('0x28')]();};}function saveUpdates(_0x295119,_0x284602){return function(_0x1ea177){if(_0x1ea177){return _0x1ea177[_0xb140('0x29')](_0x295119)['then'](function(_0x5f1f42){return _0x5f1f42;});}return null;};}function removeEntity(_0x5d94b8,_0x47c559){return function(_0x1640da){if(_0x1640da){return _0x1640da[_0xb140('0x2a')]()[_0xb140('0x2b')](function(){var _0x230992=_0x1640da[_0xb140('0x2c')]({'plain':!![]});var _0x3abd02=_0xb140('0x2d');return db[_0xb140('0x2e')][_0xb140('0x2a')]({'where':{'type':_0x3abd02,'resourceId':_0x230992['id']}})[_0xb140('0x2b')](function(){return _0x1640da;});})[_0xb140('0x2b')](function(){_0x5d94b8[_0xb140('0x25')](0xcc)[_0xb140('0x1f')]();});}};}function handleEntityNotFound(_0x630c83,_0x36fa5b){return function(_0x318995){if(!_0x318995){_0x630c83[_0xb140('0x2f')](0x194);}return _0x318995;};}function handleError(_0x431735,_0x1f7aac){_0x1f7aac=_0x1f7aac||0x1f4;return function(_0x371e29){logger[_0xb140('0x30')](_0x371e29[_0xb140('0x31')]);if(_0x371e29[_0xb140('0x32')]){delete _0x371e29[_0xb140('0x32')];}_0x431735[_0xb140('0x25')](_0x1f7aac)[_0xb140('0x33')](_0x371e29);};}exports[_0xb140('0x34')]=function(_0x111224,_0x660c07){var _0x3d733a={},_0x2bf7e5={},_0x206131={'count':0x0,'rows':[]};var _0x159db9=_[_0xb140('0x35')](db['OpenchannelQueue'][_0xb140('0x36')],function(_0x28e74a){return{'name':_0x28e74a[_0xb140('0x37')],'type':_0x28e74a[_0xb140('0x38')][_0xb140('0x39')]};});_0x2bf7e5[_0xb140('0x3a')]=_[_0xb140('0x35')](_0x159db9,_0xb140('0x32'));_0x2bf7e5['query']=_[_0xb140('0x3b')](_0x111224[_0xb140('0x3c')]);_0x2bf7e5[_0xb140('0x3d')]=_[_0xb140('0x3e')](_0x2bf7e5[_0xb140('0x3a')],_0x2bf7e5['query']);_0x3d733a['attributes']=_[_0xb140('0x3e')](_0x2bf7e5[_0xb140('0x3a')],qs['fields'](_0x111224['query'][_0xb140('0x3f')]));_0x3d733a[_0xb140('0x40')]=_0x3d733a[_0xb140('0x40')]['length']?_0x3d733a[_0xb140('0x40')]:_0x2bf7e5[_0xb140('0x3a')];if(!_0x111224['query'][_0xb140('0x41')]('nolimit')){_0x3d733a[_0xb140('0x23')]=qs['limit'](_0x111224[_0xb140('0x3c')][_0xb140('0x23')]);_0x3d733a[_0xb140('0x21')]=qs[_0xb140('0x21')](_0x111224[_0xb140('0x3c')][_0xb140('0x21')]);}_0x3d733a['order']=qs[_0xb140('0x42')](_0x111224[_0xb140('0x3c')][_0xb140('0x42')]);_0x3d733a['where']=qs[_0xb140('0x3d')](_[_0xb140('0x43')](_0x111224[_0xb140('0x3c')],_0x2bf7e5[_0xb140('0x3d')]),_0x159db9);if(_0x111224['query']['filter']){_0x3d733a[_0xb140('0x44')]=_['merge'](_0x3d733a['where'],{'$or':_['map'](_0x159db9,function(_0x2a6da9){if(_0x2a6da9['type']!=='VIRTUAL'){var _0x35c38c={};_0x35c38c[_0x2a6da9[_0xb140('0x32')]]={'$like':'%'+_0x111224[_0xb140('0x3c')][_0xb140('0x45')]+'%'};return _0x35c38c;}})});}_0x3d733a=_['merge']({},_0x3d733a,_0x111224[_0xb140('0x46')]);var _0x789bf={'where':_0x3d733a[_0xb140('0x44')]};return db['OpenchannelQueue']['count'](_0x789bf)[_0xb140('0x2b')](function(_0x1f6f95){_0x206131[_0xb140('0x24')]=_0x1f6f95;if(_0x111224[_0xb140('0x3c')][_0xb140('0x47')]){_0x3d733a[_0xb140('0x48')]=[{'all':!![]}];}return db['OpenchannelQueue']['findAll'](_0x3d733a);})[_0xb140('0x2b')](function(_0x1789f2){_0x206131[_0xb140('0x49')]=_0x1789f2;return _0x206131;})['then'](respondWithFilteredResult(_0x660c07,_0x3d733a))[_0xb140('0x4a')](handleError(_0x660c07,null));};exports[_0xb140('0x4b')]=function(_0x54baae,_0x4b2386){var _0x1527f6={'raw':!![],'where':{'id':_0x54baae[_0xb140('0x4c')]['id']}},_0x22f1cb={};_0x22f1cb[_0xb140('0x3a')]=_[_0xb140('0x3b')](db['OpenchannelQueue'][_0xb140('0x36')]);_0x22f1cb[_0xb140('0x3c')]=_[_0xb140('0x3b')](_0x54baae[_0xb140('0x3c')]);_0x22f1cb['filters']=_[_0xb140('0x3e')](_0x22f1cb[_0xb140('0x3a')],_0x22f1cb[_0xb140('0x3c')]);_0x1527f6[_0xb140('0x40')]=_[_0xb140('0x3e')](_0x22f1cb[_0xb140('0x3a')],qs[_0xb140('0x3f')](_0x54baae[_0xb140('0x3c')][_0xb140('0x3f')]));_0x1527f6[_0xb140('0x40')]=_0x1527f6['attributes'][_0xb140('0x4d')]?_0x1527f6[_0xb140('0x40')]:_0x22f1cb['model'];if(_0x54baae[_0xb140('0x3c')][_0xb140('0x47')]){_0x1527f6['include']=[{'all':!![]}];}_0x1527f6=_[_0xb140('0x4e')]({},_0x1527f6,_0x54baae[_0xb140('0x46')]);return db[_0xb140('0x4f')]['find'](_0x1527f6)['then'](handleEntityNotFound(_0x4b2386,null))[_0xb140('0x2b')](respondWithResult(_0x4b2386,null))[_0xb140('0x4a')](handleError(_0x4b2386,null));};exports[_0xb140('0x50')]=function(_0x6ef04c,_0x1f8d06){return db[_0xb140('0x4f')]['create'](_0x6ef04c['body'],{})[_0xb140('0x2b')](function(_0xcb51ae){var _0x22a682=_0x6ef04c[_0xb140('0x51')]['get']({'plain':!![]});if(!_0x22a682)throw new Error(_0xb140('0x52'));if(_0x22a682[_0xb140('0x53')]===_0xb140('0x51')){var _0x4ba402=_0xcb51ae[_0xb140('0x2c')]({'plain':!![]});var _0x30f778=_0xb140('0x2d');return db[_0xb140('0x54')][_0xb140('0x55')]({'where':{'name':_0x30f778,'userProfileId':_0x22a682[_0xb140('0x56')]},'raw':!![]})['then'](function(_0x41b917){if(_0x41b917&&_0x41b917[_0xb140('0x57')]===0x0){return db[_0xb140('0x2e')][_0xb140('0x50')]({'name':_0x4ba402[_0xb140('0x32')],'resourceId':_0x4ba402['id'],'type':_0x41b917[_0xb140('0x32')],'sectionId':_0x41b917['id']},{})[_0xb140('0x2b')](function(){return _0xcb51ae;});}else{return _0xcb51ae;}})[_0xb140('0x4a')](function(_0x2853ba){logger[_0xb140('0x30')](_0xb140('0x58'),_0x2853ba);throw _0x2853ba;});}return _0xcb51ae;})[_0xb140('0x2b')](respondWithResult(_0x1f8d06,0xc9))[_0xb140('0x4a')](handleError(_0x1f8d06,null));};exports['update']=function(_0x190729,_0x4b34d6){if(_0x190729['body']['id']){delete _0x190729['body']['id'];}return db['OpenchannelQueue']['find']({'where':{'id':_0x190729[_0xb140('0x4c')]['id']}})[_0xb140('0x2b')](handleEntityNotFound(_0x4b34d6,null))[_0xb140('0x2b')](saveUpdates(_0x190729[_0xb140('0x59')],null))[_0xb140('0x2b')](respondWithResult(_0x4b34d6,null))[_0xb140('0x4a')](handleError(_0x4b34d6,null));};exports[_0xb140('0x2a')]=function(_0x2a1dcf,_0xeda3f2){return db[_0xb140('0x4f')][_0xb140('0x55')]({'where':{'id':_0x2a1dcf[_0xb140('0x4c')]['id']}})[_0xb140('0x2b')](handleEntityNotFound(_0xeda3f2,null))['then'](removeEntity(_0xeda3f2,null))[_0xb140('0x4a')](handleError(_0xeda3f2,null));};exports[_0xb140('0x5a')]=function(_0x224af4,_0x139138){return db[_0xb140('0x4f')][_0xb140('0x5a')]()[_0xb140('0x2b')](respondWithResult(_0x139138,null))['catch'](handleError(_0x139138,null));};exports[_0xb140('0x5b')]=function(_0x137701,_0x5f2f42,_0x5a3e52){var _0x594936={'raw':!![],'where':{}},_0x53e94f={},_0x131160;return db[_0xb140('0x4f')][_0xb140('0x5c')]({'where':{'id':_0x137701[_0xb140('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5f2f42,null))['then'](function(_0x4ecfe5){if(_0x4ecfe5){_0x131160=_0x4ecfe5[_0xb140('0x2c')]({'plain':!![]});_0x53e94f['model']=_['keys'](db[_0xb140('0x5d')][_0xb140('0x36')]);_0x53e94f[_0xb140('0x3c')]=_['keys'](_0x137701[_0xb140('0x3c')]);_0x53e94f[_0xb140('0x3d')]=_['intersection'](_0x53e94f[_0xb140('0x3a')],_0x53e94f[_0xb140('0x3c')]);_0x594936['attributes']=_[_0xb140('0x3e')](_0x53e94f[_0xb140('0x3a')],qs[_0xb140('0x3f')](_0x137701[_0xb140('0x3c')]['fields']));_0x594936['attributes']=_0x594936[_0xb140('0x40')][_0xb140('0x4d')]?_0x594936[_0xb140('0x40')]:_0x53e94f['model'];if(!_0x137701[_0xb140('0x3c')][_0xb140('0x41')]('nolimit')){_0x594936[_0xb140('0x23')]=qs['limit'](_0x137701[_0xb140('0x3c')]['limit']);_0x594936[_0xb140('0x21')]=qs[_0xb140('0x21')](_0x137701[_0xb140('0x3c')]['offset']);}_0x594936['order']=qs[_0xb140('0x42')](_0x137701[_0xb140('0x3c')]['sort']);_0x594936[_0xb140('0x44')]=qs['filters'](_[_0xb140('0x43')](_0x137701[_0xb140('0x3c')],_0x53e94f[_0xb140('0x3d')]));_0x594936[_0xb140('0x44')]['OpenchannelQueueId']=_0x4ecfe5['id'];if(_0x137701[_0xb140('0x3c')][_0xb140('0x45')]){_0x594936[_0xb140('0x44')]=_[_0xb140('0x4e')](_0x594936[_0xb140('0x44')],{'$or':_['map'](_0x594936[_0xb140('0x40')],function(_0x34eeb3){var _0x3f2f90={};_0x3f2f90[_0x34eeb3]={'$like':'%'+_0x137701['query'][_0xb140('0x45')]+'%'};return _0x3f2f90;})});}_0x594936=_[_0xb140('0x4e')]({},_0x594936,_0x137701[_0xb140('0x46')]);return db[_0xb140('0x5d')][_0xb140('0x5e')](_0x594936);}})['then'](function(_0x3a5b5d){if(_0x3a5b5d){return db[_0xb140('0x5f')][_0xb140('0x60')]({'where':{'id':_[_0xb140('0x35')](_0x3a5b5d,_0xb140('0x61')),'role':'agent'},'attributes':['id',_0xb140('0x32'),_0xb140('0x62'),_0xb140('0x63'),'createdAt']});}})[_0xb140('0x2b')](function(_0x3d110b){if(_0x3d110b){return{'count':_0x3d110b[_0xb140('0x24')],'rows':_[_0xb140('0x35')](_0x3d110b[_0xb140('0x49')],function(_0x478ca0){return{'membername':_0x478ca0[_0xb140('0x32')],'UserId':_0x478ca0['id'],'queue_name':_0x131160[_0xb140('0x32')],'OpenchannelQueueId':_0x131160['id'],'interface':util[_0xb140('0x64')](_0xb140('0x65'),_0xb140('0x66'),_0x478ca0[_0xb140('0x32')]),'penalty':0x0,'paused':_0x478ca0['openchannelPause'],'createdAt':_0x478ca0['createdAt'],'updatedAt':_0x478ca0['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xb140('0x2b')](respondWithFilteredResult(_0x5f2f42,_0x594936))['catch'](handleError(_0x5f2f42,null));};exports[_0xb140('0x67')]=function(_0x36d367,_0x3948a5,_0x28a784){var _0x40ab0c={};var _0x45d920={};var _0x222547;var _0x4a95ce;return db[_0xb140('0x4f')][_0xb140('0x5c')]({'where':{'id':_0x36d367['params']['id']}})[_0xb140('0x2b')](handleEntityNotFound(_0x3948a5,null))[_0xb140('0x2b')](function(_0x5dc5f1){if(_0x5dc5f1){_0x222547=_0x5dc5f1;_0x45d920[_0xb140('0x3a')]=_[_0xb140('0x3b')](db[_0xb140('0x68')]['rawAttributes']);_0x45d920[_0xb140('0x3c')]=_['keys'](_0x36d367[_0xb140('0x3c')]);_0x45d920[_0xb140('0x3d')]=_[_0xb140('0x3e')](_0x45d920['model'],_0x45d920['query']);_0x40ab0c['attributes']=_['intersection'](_0x45d920['model'],qs[_0xb140('0x3f')](_0x36d367['query'][_0xb140('0x3f')]));_0x40ab0c[_0xb140('0x40')]=_0x40ab0c['attributes'][_0xb140('0x4d')]?_0x40ab0c[_0xb140('0x40')]:_0x45d920[_0xb140('0x3a')];_0x40ab0c['order']=qs[_0xb140('0x42')](_0x36d367[_0xb140('0x3c')][_0xb140('0x42')]);_0x40ab0c['where']=qs[_0xb140('0x3d')](_[_0xb140('0x43')](_0x36d367[_0xb140('0x3c')],_0x45d920['filters']));if(_0x36d367[_0xb140('0x3c')][_0xb140('0x45')]){_0x40ab0c[_0xb140('0x44')]=_[_0xb140('0x4e')](_0x40ab0c[_0xb140('0x44')],{'$or':_['map'](_0x40ab0c[_0xb140('0x40')],function(_0x160a11){var _0x33c8ba={};_0x33c8ba[_0x160a11]={'$like':'%'+_0x36d367[_0xb140('0x3c')][_0xb140('0x45')]+'%'};return _0x33c8ba;})});}_0x40ab0c=_['merge']({},_0x40ab0c,_0x36d367[_0xb140('0x46')]);return _0x222547['getTeams'](_0x40ab0c);}})['then'](function(_0x36fe54){if(_0x36fe54){_0x4a95ce=_0x36fe54[_0xb140('0x4d')];if(!_0x36d367[_0xb140('0x3c')][_0xb140('0x41')](_0xb140('0x69'))){_0x40ab0c['limit']=qs['limit'](_0x36d367[_0xb140('0x3c')][_0xb140('0x23')]);_0x40ab0c['offset']=qs[_0xb140('0x21')](_0x36d367[_0xb140('0x3c')]['offset']);}return _0x222547[_0xb140('0x67')](_0x40ab0c);}})[_0xb140('0x2b')](function(_0x2802a0){if(_0x2802a0){return _0x2802a0?{'count':_0x4a95ce,'rows':_0x2802a0}:null;}})[_0xb140('0x2b')](respondWithResult(_0x3948a5,null))[_0xb140('0x4a')](handleError(_0x3948a5,null));};exports[_0xb140('0x6a')]=function(_0x4375b7,_0x24ccc1,_0x52d4c3){var _0x27a3d9=_0x4375b7[_0xb140('0x59')][_0xb140('0x6b')];return db['Team']['findAll']({'where':{'id':_0x27a3d9},'attributes':['id'],'include':[{'model':db['User'],'as':_0xb140('0x6c'),'attributes':['id',_0xb140('0x32'),_0xb140('0x6d'),_0xb140('0x6e'),'interface'],'raw':!![]}]})[_0xb140('0x2b')](function(_0x4b6d8b){if(_0x4b6d8b){var _0x42ea34=_[_0xb140('0x6f')](_0x4b6d8b,function(_0x467111){var _0x2e9af1=_0x467111['get']({'plain':!![]});return _0x2e9af1[_0xb140('0x6c')];});return db[_0xb140('0x4f')][_0xb140('0x55')]({'where':{'id':_0x4375b7[_0xb140('0x4c')]['id']}})[_0xb140('0x2b')](function(_0x78438){return db['sequelize'][_0xb140('0x70')](function(_0x2f6602){return _0x78438[_0xb140('0x6a')](_0x27a3d9,{'transaction':_0x2f6602})[_0xb140('0x2b')](function(){return BPromise[_0xb140('0x71')](_0x42ea34,function(_0x28ef4b){return db[_0xb140('0x5d')]['findOrCreate']({'where':{'UserId':_0x28ef4b['id'],'OpenchannelQueueId':_0x4375b7[_0xb140('0x4c')]['id']},'transaction':_0x2f6602});});})[_0xb140('0x2b')](function(){_0x42ea34['forEach'](function(_0x5187c0){socket[_0xb140('0x72')](_0xb140('0x73'),{'UserId':_0x5187c0['id'],'OpenchannelQueueId':_0x78438['id']});});});});});}})[_0xb140('0x2b')](respondWithStatusCode(_0x24ccc1,null))[_0xb140('0x4a')](handleError(_0x24ccc1,null));};exports[_0xb140('0x74')]=function(_0x4a67ab,_0x56f34d,_0x5cf80e){return db['Team'][_0xb140('0x5e')]({'where':{'id':_0x4a67ab[_0xb140('0x3c')][_0xb140('0x6b')]},'attributes':['id'],'include':[{'model':db[_0xb140('0x5f')],'as':_0xb140('0x6c'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x56f34d,null))['then'](function(_0x24a74c){var _0x287624=_[_0xb140('0x35')](_0x24a74c,'id');var _0x37e44d=[];var _0x4fefc0=[];var _0x53e610=squel[_0xb140('0x75')]();_0x53e610[_0xb140('0x76')](_0xb140('0x77'))[_0xb140('0x78')](_0xb140('0x79'),'tq')[_0xb140('0x7a')](_0xb140('0x7b'),'ut',_0xb140('0x7c'))[_0xb140('0x44')](_0xb140('0x7d'),_0x4a67ab[_0xb140('0x4c')]['id']);for(var _0x5e2301=0x0;_0x5e2301<_0x24a74c['length'];_0x5e2301+=0x1){let _0x1f6b3f=_0x24a74c[_0x5e2301];for(var _0x369a95=0x0;_0x369a95<_0x1f6b3f['Agents']['length'];_0x369a95+=0x1){let _0x2953c0=_0x1f6b3f[_0xb140('0x6c')][_0x369a95];var _0x3a13bf=_0x53e610['clone']();_0x3a13bf[_0xb140('0x44')]('ut.UserId\x20=\x20?',_0x2953c0['id']);_0x4fefc0[_0xb140('0x7e')](db['sequelize']['query'](_0x3a13bf[_0xb140('0x7f')](),{'type':db[_0xb140('0x80')]['QueryTypes'][_0xb140('0x81')]})[_0xb140('0x2b')](function(_0xfa41f0){if(_0xfa41f0[_0xb140('0x4d')]===0x1){return _0x2953c0['id'];}else{var _0x2ee0c5=_[_0xb140('0x82')](_[_0xb140('0x35')](_0xfa41f0,_0xb140('0x83')),function(_0x391cd0){return _['includes'](_0x287624,_0x391cd0);});if(_0x2ee0c5){return _0x2953c0['id'];}}}));}}return BPromise[_0xb140('0x84')](_0x4fefc0)[_0xb140('0x2b')](function(_0x2f582b){_0x37e44d=_(_0x37e44d)[_0xb140('0x85')](_0x2f582b)[_0xb140('0x86')]()[_0xb140('0x87')]();return db['OpenchannelQueue'][_0xb140('0x55')]({'where':{'id':_0x4a67ab['params']['id']}})[_0xb140('0x2b')](function(_0x23e540){return db[_0xb140('0x80')][_0xb140('0x70')](function(_0x10b1b9){return _0x23e540['removeTeams'](_0x4a67ab['query'][_0xb140('0x6b')],{'transaction':_0x10b1b9})[_0xb140('0x2b')](function(){if(!_[_0xb140('0x88')](_0x37e44d)){return _0x23e540['removeAgents'](_0x37e44d,{'transaction':_0x10b1b9});}})[_0xb140('0x2b')](function(){_0x37e44d[_0xb140('0x89')](function(_0x374d11){socket['emit']('userOpenchannelQueue:remove',{'UserId':_0x374d11,'OpenchannelQueueId':_0x23e540['id']});});});});});});})[_0xb140('0x2b')](respondWithStatusCode(_0x56f34d,null))[_0xb140('0x4a')](handleError(_0x56f34d,null));};exports[_0xb140('0x8a')]=function(_0x198151,_0x36ca82,_0x51dea4){return db[_0xb140('0x4f')][_0xb140('0x55')]({'where':{'id':_0x198151[_0xb140('0x4c')]['id']}})['then'](handleEntityNotFound(_0x36ca82,null))[_0xb140('0x2b')](function(_0x32abf5){if(_0x32abf5){return _0x32abf5[_0xb140('0x8a')](_0x198151['body'][_0xb140('0x6b')],_[_0xb140('0x8b')](_0x198151[_0xb140('0x59')],['ids','id'])||{})[_0xb140('0x8c')](function(_0xe79d27){for(var _0x22ee4c=0x0;_0x22ee4c<_0x198151['body'][_0xb140('0x6b')]['length'];_0x22ee4c+=0x1){socket[_0xb140('0x72')](_0xb140('0x73'),{'UserId':Number(_0x198151[_0xb140('0x59')][_0xb140('0x6b')][_0x22ee4c]),'OpenchannelQueueId':Number(_0x198151[_0xb140('0x4c')]['id'])});}return _0xe79d27;});}})[_0xb140('0x2b')](respondWithResult(_0x36ca82,null))[_0xb140('0x4a')](handleError(_0x36ca82,null));};exports[_0xb140('0x8d')]=function(_0x1aa376,_0x24f869,_0x5d8400){return db['OpenchannelQueue'][_0xb140('0x55')]({'where':{'id':_0x1aa376[_0xb140('0x4c')]['id']}})[_0xb140('0x2b')](handleEntityNotFound(_0x24f869,null))[_0xb140('0x2b')](function(_0xcf186e){if(_0xcf186e){return _0xcf186e['removeAgents'](_0x1aa376[_0xb140('0x3c')][_0xb140('0x6b')])['then'](function(){if(_['isArray'](_0x1aa376[_0xb140('0x3c')]['ids'])){for(var _0x28d65c=0x0;_0x28d65c<_0x1aa376[_0xb140('0x3c')]['ids'][_0xb140('0x4d')];_0x28d65c+=0x1){socket[_0xb140('0x72')](_0xb140('0x8e'),{'UserId':Number(_0x1aa376[_0xb140('0x3c')][_0xb140('0x6b')][_0x28d65c]),'OpenchannelQueueId':Number(_0x1aa376[_0xb140('0x4c')]['id'])});}}else{socket[_0xb140('0x72')]('userOpenchannelQueue:remove',{'UserId':Number(_0x1aa376['query'][_0xb140('0x6b')]),'OpenchannelQueueId':Number(_0x1aa376[_0xb140('0x4c')]['id'])});}});}})[_0xb140('0x2b')](respondWithStatusCode(_0x24f869,null))['catch'](handleError(_0x24f869,null));};exports['getAgents']=function(_0x485bc5,_0x3e5ed4,_0xa818f5){var _0x1a3db0={};var _0x2e15a9={};var _0x183a00;var _0xaef602;return db[_0xb140('0x4f')]['findOne']({'where':{'id':_0x485bc5[_0xb140('0x4c')]['id']}})[_0xb140('0x2b')](handleEntityNotFound(_0x3e5ed4,null))[_0xb140('0x2b')](function(_0x131cae){if(_0x131cae){_0x183a00=_0x131cae;_0x2e15a9[_0xb140('0x3a')]=_['keys'](db[_0xb140('0x5f')][_0xb140('0x36')]);_0x2e15a9[_0xb140('0x3c')]=_[_0xb140('0x3b')](_0x485bc5[_0xb140('0x3c')]);_0x2e15a9[_0xb140('0x3d')]=_[_0xb140('0x3e')](_0x2e15a9['model'],_0x2e15a9[_0xb140('0x3c')]);_0x1a3db0[_0xb140('0x40')]=_[_0xb140('0x3e')](_0x2e15a9['model'],qs[_0xb140('0x3f')](_0x485bc5[_0xb140('0x3c')][_0xb140('0x3f')]));_0x1a3db0[_0xb140('0x40')]=_0x1a3db0[_0xb140('0x40')][_0xb140('0x4d')]?_0x1a3db0['attributes']:_0x2e15a9[_0xb140('0x3a')];_0x1a3db0['order']=qs[_0xb140('0x42')](_0x485bc5[_0xb140('0x3c')][_0xb140('0x42')]);_0x1a3db0[_0xb140('0x44')]=qs['filters'](_[_0xb140('0x43')](_0x485bc5[_0xb140('0x3c')],_0x2e15a9[_0xb140('0x3d')]));if(_0x485bc5['query']['filter']){_0x1a3db0[_0xb140('0x44')]=_[_0xb140('0x4e')](_0x1a3db0['where'],{'$or':_[_0xb140('0x35')](_0x1a3db0[_0xb140('0x40')],function(_0x52a47a){var _0x253ba4={};_0x253ba4[_0x52a47a]={'$like':'%'+_0x485bc5[_0xb140('0x3c')][_0xb140('0x45')]+'%'};return _0x253ba4;})});}_0x1a3db0=_[_0xb140('0x4e')]({},_0x1a3db0,_0x485bc5[_0xb140('0x46')]);return _0x183a00[_0xb140('0x8f')](_0x1a3db0);}})[_0xb140('0x2b')](function(_0x3a6f21){if(_0x3a6f21){_0xaef602=_0x3a6f21[_0xb140('0x4d')];if(!_0x485bc5['query'][_0xb140('0x41')]('nolimit')){_0x1a3db0[_0xb140('0x23')]=qs[_0xb140('0x23')](_0x485bc5[_0xb140('0x3c')]['limit']);_0x1a3db0['offset']=qs[_0xb140('0x21')](_0x485bc5[_0xb140('0x3c')]['offset']);}return _0x183a00[_0xb140('0x8f')](_0x1a3db0);}})[_0xb140('0x2b')](function(_0xb581ca){if(_0xb581ca){return _0xb581ca?{'count':_0xaef602,'rows':_0xb581ca}:null;}})[_0xb140('0x2b')](respondWithResult(_0x3e5ed4,null))[_0xb140('0x4a')](handleError(_0x3e5ed4,null));};
\ No newline at end of file
+var _0xbf89=['offset','undefined','limit','count','Content-Range','json','apply','save','then','destroy','get','OpenchannelQueues','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','OpenchannelQueue','includeAll','include','findAll','rows','show','params','keys','find','catch','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','order','pick','OpenchannelQueueId','UserOpenchannelQueue','findAndCountAll','UserId','agent','openchannelPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','User','Agents','interface','flatMap','sequelize','transaction','each','forEach','emit','userOpenchannelQueue:save','removeTeams','select','from','team_has_openchannel_queues','join','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','TeamId','includes','all','compact','isEmpty','removeAgents','addAgents','omit','isArray','userOpenchannelQueue:remove','getAgents','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','path','sox','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','end'];(function(_0x4cd62b,_0x3a53ba){var _0x57b32e=function(_0xc0c554){while(--_0xc0c554){_0x4cd62b['push'](_0x4cd62b['shift']());}};_0x57b32e(++_0x3a53ba);}(_0xbf89,0x182));var _0x9bf8=function(_0x1fdce6,_0x4412d9){_0x1fdce6=_0x1fdce6-0x0;var _0x36b546=_0xbf89[_0x1fdce6];return _0x36b546;};'use strict';var emlformat=require(_0x9bf8('0x0'));var rimraf=require(_0x9bf8('0x1'));var zipdir=require(_0x9bf8('0x2'));var jsonpatch=require(_0x9bf8('0x3'));var rp=require(_0x9bf8('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x9bf8('0x5'));var sox=require(_0x9bf8('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9bf8('0x7'));var _=require(_0x9bf8('0x8'));var squel=require(_0x9bf8('0x9'));var crypto=require('crypto');var jsforce=require(_0x9bf8('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x9bf8('0xb'));var querystring=require(_0x9bf8('0xc'));var Papa=require(_0x9bf8('0xd'));var Redis=require(_0x9bf8('0xe'));var authService=require(_0x9bf8('0xf'));var qs=require(_0x9bf8('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9bf8('0x11'));var logger=require(_0x9bf8('0x12'))('api');var utils=require(_0x9bf8('0x13'));var config=require(_0x9bf8('0x14'));var licenseUtil=require(_0x9bf8('0x15'));var db=require(_0x9bf8('0x16'))['db'];config['redis']=_['defaults'](config[_0x9bf8('0x17')],{'host':_0x9bf8('0x18'),'port':0x18eb});var socket=require(_0x9bf8('0x19'))(new Redis(config['redis']));require(_0x9bf8('0x1a'))[_0x9bf8('0x1b')](socket);function respondWithStatusCode(_0x24bfb6,_0x4466e7){_0x4466e7=_0x4466e7||0xcc;return function(_0x56799c){if(_0x56799c){return _0x24bfb6[_0x9bf8('0x1c')](_0x4466e7);}return _0x24bfb6[_0x9bf8('0x1d')](_0x4466e7)[_0x9bf8('0x1e')]();};}function respondWithResult(_0x47fd55,_0x3b7ab4){_0x3b7ab4=_0x3b7ab4||0xc8;return function(_0xe1fb63){if(_0xe1fb63){return _0x47fd55[_0x9bf8('0x1d')](_0x3b7ab4)['json'](_0xe1fb63);}};}function respondWithFilteredResult(_0x1e76ee,_0x4fcc9b){return function(_0x1fe2db){if(_0x1fe2db){var _0x5ef117=typeof _0x4fcc9b[_0x9bf8('0x1f')]===_0x9bf8('0x20')&&typeof _0x4fcc9b[_0x9bf8('0x21')]===_0x9bf8('0x20');var _0x11f28c=_0x1fe2db[_0x9bf8('0x22')];var _0x2eac28=_0x5ef117?0x0:_0x4fcc9b[_0x9bf8('0x1f')];var _0x4249a6=_0x5ef117?_0x1fe2db[_0x9bf8('0x22')]:_0x4fcc9b[_0x9bf8('0x1f')]+_0x4fcc9b['limit'];var _0x122528;if(_0x4249a6>=_0x11f28c){_0x4249a6=_0x11f28c;_0x122528=0xc8;}else{_0x122528=0xce;}_0x1e76ee[_0x9bf8('0x1d')](_0x122528);return _0x1e76ee['set'](_0x9bf8('0x23'),_0x2eac28+'-'+_0x4249a6+'/'+_0x11f28c)[_0x9bf8('0x24')](_0x1fe2db);}return null;};}function patchUpdates(_0x388da1){return function(_0x3697af){try{jsonpatch[_0x9bf8('0x25')](_0x3697af,_0x388da1,!![]);}catch(_0x5b8846){return BPromise['reject'](_0x5b8846);}return _0x3697af[_0x9bf8('0x26')]();};}function saveUpdates(_0x324bbb,_0xdcbe4b){return function(_0x337133){if(_0x337133){return _0x337133['update'](_0x324bbb)[_0x9bf8('0x27')](function(_0x262907){return _0x262907;});}return null;};}function removeEntity(_0x3f9ed4,_0x4bd905){return function(_0x2677e5){if(_0x2677e5){return _0x2677e5[_0x9bf8('0x28')]()[_0x9bf8('0x27')](function(){var _0x19785e=_0x2677e5[_0x9bf8('0x29')]({'plain':!![]});var _0x15a46b=_0x9bf8('0x2a');return db['UserProfileResource'][_0x9bf8('0x28')]({'where':{'type':_0x15a46b,'resourceId':_0x19785e['id']}})[_0x9bf8('0x27')](function(){return _0x2677e5;});})[_0x9bf8('0x27')](function(){_0x3f9ed4[_0x9bf8('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2272d6,_0x47b206){return function(_0x4756c9){if(!_0x4756c9){_0x2272d6[_0x9bf8('0x1c')](0x194);}return _0x4756c9;};}function handleError(_0x4c1fd2,_0xe53417){_0xe53417=_0xe53417||0x1f4;return function(_0x5300b0){logger[_0x9bf8('0x2b')](_0x5300b0[_0x9bf8('0x2c')]);if(_0x5300b0[_0x9bf8('0x2d')]){delete _0x5300b0[_0x9bf8('0x2d')];}_0x4c1fd2[_0x9bf8('0x1d')](_0xe53417)[_0x9bf8('0x2e')](_0x5300b0);};}exports[_0x9bf8('0x2f')]=function(_0x4356fe,_0x2434e0){var _0xdc913e={},_0x5e1d5f={},_0x5a9e60={'count':0x0,'rows':[]};var _0x5760da=_[_0x9bf8('0x30')](db['OpenchannelQueue'][_0x9bf8('0x31')],function(_0x2d25e0){return{'name':_0x2d25e0[_0x9bf8('0x32')],'type':_0x2d25e0[_0x9bf8('0x33')][_0x9bf8('0x34')]};});_0x5e1d5f[_0x9bf8('0x35')]=_['map'](_0x5760da,_0x9bf8('0x2d'));_0x5e1d5f[_0x9bf8('0x36')]=_['keys'](_0x4356fe[_0x9bf8('0x36')]);_0x5e1d5f[_0x9bf8('0x37')]=_[_0x9bf8('0x38')](_0x5e1d5f[_0x9bf8('0x35')],_0x5e1d5f[_0x9bf8('0x36')]);_0xdc913e[_0x9bf8('0x39')]=_[_0x9bf8('0x38')](_0x5e1d5f['model'],qs[_0x9bf8('0x3a')](_0x4356fe['query']['fields']));_0xdc913e['attributes']=_0xdc913e[_0x9bf8('0x39')][_0x9bf8('0x3b')]?_0xdc913e[_0x9bf8('0x39')]:_0x5e1d5f['model'];if(!_0x4356fe[_0x9bf8('0x36')][_0x9bf8('0x3c')](_0x9bf8('0x3d'))){_0xdc913e['limit']=qs[_0x9bf8('0x21')](_0x4356fe[_0x9bf8('0x36')][_0x9bf8('0x21')]);_0xdc913e[_0x9bf8('0x1f')]=qs[_0x9bf8('0x1f')](_0x4356fe['query'][_0x9bf8('0x1f')]);}_0xdc913e['order']=qs[_0x9bf8('0x3e')](_0x4356fe['query'][_0x9bf8('0x3e')]);_0xdc913e[_0x9bf8('0x3f')]=qs[_0x9bf8('0x37')](_['pick'](_0x4356fe['query'],_0x5e1d5f[_0x9bf8('0x37')]),_0x5760da);if(_0x4356fe[_0x9bf8('0x36')][_0x9bf8('0x40')]){_0xdc913e[_0x9bf8('0x3f')]=_[_0x9bf8('0x41')](_0xdc913e['where'],{'$or':_[_0x9bf8('0x30')](_0x5760da,function(_0xf09d95){if(_0xf09d95['type']!==_0x9bf8('0x42')){var _0xeb75d2={};_0xeb75d2[_0xf09d95[_0x9bf8('0x2d')]]={'$like':'%'+_0x4356fe[_0x9bf8('0x36')][_0x9bf8('0x40')]+'%'};return _0xeb75d2;}})});}_0xdc913e=_[_0x9bf8('0x41')]({},_0xdc913e,_0x4356fe[_0x9bf8('0x43')]);var _0x4b8f79={'where':_0xdc913e['where']};return db[_0x9bf8('0x44')][_0x9bf8('0x22')](_0x4b8f79)['then'](function(_0x4a4393){_0x5a9e60['count']=_0x4a4393;if(_0x4356fe[_0x9bf8('0x36')][_0x9bf8('0x45')]){_0xdc913e[_0x9bf8('0x46')]=[{'all':!![]}];}return db[_0x9bf8('0x44')][_0x9bf8('0x47')](_0xdc913e);})[_0x9bf8('0x27')](function(_0x344ab0){_0x5a9e60[_0x9bf8('0x48')]=_0x344ab0;return _0x5a9e60;})[_0x9bf8('0x27')](respondWithFilteredResult(_0x2434e0,_0xdc913e))['catch'](handleError(_0x2434e0,null));};exports[_0x9bf8('0x49')]=function(_0x10df31,_0x323260){var _0x1dc332={'raw':!![],'where':{'id':_0x10df31[_0x9bf8('0x4a')]['id']}},_0x1153b1={};_0x1153b1['model']=_[_0x9bf8('0x4b')](db[_0x9bf8('0x44')][_0x9bf8('0x31')]);_0x1153b1['query']=_[_0x9bf8('0x4b')](_0x10df31['query']);_0x1153b1['filters']=_[_0x9bf8('0x38')](_0x1153b1['model'],_0x1153b1[_0x9bf8('0x36')]);_0x1dc332['attributes']=_[_0x9bf8('0x38')](_0x1153b1['model'],qs[_0x9bf8('0x3a')](_0x10df31[_0x9bf8('0x36')][_0x9bf8('0x3a')]));_0x1dc332[_0x9bf8('0x39')]=_0x1dc332[_0x9bf8('0x39')]['length']?_0x1dc332['attributes']:_0x1153b1[_0x9bf8('0x35')];if(_0x10df31[_0x9bf8('0x36')][_0x9bf8('0x45')]){_0x1dc332['include']=[{'all':!![]}];}_0x1dc332=_[_0x9bf8('0x41')]({},_0x1dc332,_0x10df31[_0x9bf8('0x43')]);return db[_0x9bf8('0x44')][_0x9bf8('0x4c')](_0x1dc332)[_0x9bf8('0x27')](handleEntityNotFound(_0x323260,null))['then'](respondWithResult(_0x323260,null))[_0x9bf8('0x4d')](handleError(_0x323260,null));};exports['create']=function(_0x59ffe9,_0xa48c44){return db[_0x9bf8('0x44')][_0x9bf8('0x4e')](_0x59ffe9[_0x9bf8('0x4f')],{})[_0x9bf8('0x27')](function(_0x2b0ac3){var _0x10d765=_0x59ffe9[_0x9bf8('0x50')][_0x9bf8('0x29')]({'plain':!![]});if(!_0x10d765)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x10d765[_0x9bf8('0x51')]===_0x9bf8('0x50')){var _0x477095=_0x2b0ac3[_0x9bf8('0x29')]({'plain':!![]});var _0x3acaf9=_0x9bf8('0x2a');return db[_0x9bf8('0x52')][_0x9bf8('0x4c')]({'where':{'name':_0x3acaf9,'userProfileId':_0x10d765[_0x9bf8('0x53')]},'raw':!![]})[_0x9bf8('0x27')](function(_0x494157){if(_0x494157&&_0x494157[_0x9bf8('0x54')]===0x0){return db['UserProfileResource'][_0x9bf8('0x4e')]({'name':_0x477095[_0x9bf8('0x2d')],'resourceId':_0x477095['id'],'type':_0x494157[_0x9bf8('0x2d')],'sectionId':_0x494157['id']},{})['then'](function(){return _0x2b0ac3;});}else{return _0x2b0ac3;}})['catch'](function(_0x122593){logger[_0x9bf8('0x2b')](_0x9bf8('0x55'),_0x122593);throw _0x122593;});}return _0x2b0ac3;})['then'](respondWithResult(_0xa48c44,0xc9))[_0x9bf8('0x4d')](handleError(_0xa48c44,null));};exports['update']=function(_0x5b2f96,_0x28136b){if(_0x5b2f96['body']['id']){delete _0x5b2f96[_0x9bf8('0x4f')]['id'];}return db[_0x9bf8('0x44')][_0x9bf8('0x4c')]({'where':{'id':_0x5b2f96[_0x9bf8('0x4a')]['id']}})['then'](handleEntityNotFound(_0x28136b,null))[_0x9bf8('0x27')](saveUpdates(_0x5b2f96[_0x9bf8('0x4f')],null))[_0x9bf8('0x27')](respondWithResult(_0x28136b,null))[_0x9bf8('0x4d')](handleError(_0x28136b,null));};exports[_0x9bf8('0x28')]=function(_0xc5853c,_0x250d11){return db[_0x9bf8('0x44')][_0x9bf8('0x4c')]({'where':{'id':_0xc5853c['params']['id']}})[_0x9bf8('0x27')](handleEntityNotFound(_0x250d11,null))['then'](removeEntity(_0x250d11,null))[_0x9bf8('0x4d')](handleError(_0x250d11,null));};exports[_0x9bf8('0x56')]=function(_0x34fd05,_0x279072){return db[_0x9bf8('0x44')][_0x9bf8('0x56')]()['then'](respondWithResult(_0x279072,null))[_0x9bf8('0x4d')](handleError(_0x279072,null));};exports[_0x9bf8('0x57')]=function(_0x4059c0,_0x173eeb,_0x1489da){var _0x5459c3={'raw':!![],'where':{}},_0x1e63c7={},_0x3fd0f6;return db['OpenchannelQueue']['findOne']({'where':{'id':_0x4059c0[_0x9bf8('0x4a')]['id']}})[_0x9bf8('0x27')](handleEntityNotFound(_0x173eeb,null))['then'](function(_0x433316){if(_0x433316){_0x3fd0f6=_0x433316[_0x9bf8('0x29')]({'plain':!![]});_0x1e63c7[_0x9bf8('0x35')]=_['keys'](db['UserOpenchannelQueue'][_0x9bf8('0x31')]);_0x1e63c7['query']=_[_0x9bf8('0x4b')](_0x4059c0[_0x9bf8('0x36')]);_0x1e63c7[_0x9bf8('0x37')]=_[_0x9bf8('0x38')](_0x1e63c7['model'],_0x1e63c7[_0x9bf8('0x36')]);_0x5459c3[_0x9bf8('0x39')]=_[_0x9bf8('0x38')](_0x1e63c7[_0x9bf8('0x35')],qs['fields'](_0x4059c0[_0x9bf8('0x36')][_0x9bf8('0x3a')]));_0x5459c3['attributes']=_0x5459c3[_0x9bf8('0x39')][_0x9bf8('0x3b')]?_0x5459c3[_0x9bf8('0x39')]:_0x1e63c7[_0x9bf8('0x35')];if(!_0x4059c0[_0x9bf8('0x36')][_0x9bf8('0x3c')](_0x9bf8('0x3d'))){_0x5459c3[_0x9bf8('0x21')]=qs['limit'](_0x4059c0[_0x9bf8('0x36')][_0x9bf8('0x21')]);_0x5459c3[_0x9bf8('0x1f')]=qs[_0x9bf8('0x1f')](_0x4059c0[_0x9bf8('0x36')]['offset']);}_0x5459c3[_0x9bf8('0x58')]=qs[_0x9bf8('0x3e')](_0x4059c0[_0x9bf8('0x36')]['sort']);_0x5459c3[_0x9bf8('0x3f')]=qs[_0x9bf8('0x37')](_[_0x9bf8('0x59')](_0x4059c0[_0x9bf8('0x36')],_0x1e63c7[_0x9bf8('0x37')]));_0x5459c3[_0x9bf8('0x3f')][_0x9bf8('0x5a')]=_0x433316['id'];if(_0x4059c0['query'][_0x9bf8('0x40')]){_0x5459c3[_0x9bf8('0x3f')]=_[_0x9bf8('0x41')](_0x5459c3[_0x9bf8('0x3f')],{'$or':_[_0x9bf8('0x30')](_0x5459c3[_0x9bf8('0x39')],function(_0x4b2031){var _0x317679={};_0x317679[_0x4b2031]={'$like':'%'+_0x4059c0[_0x9bf8('0x36')][_0x9bf8('0x40')]+'%'};return _0x317679;})});}_0x5459c3=_['merge']({},_0x5459c3,_0x4059c0['options']);return db[_0x9bf8('0x5b')][_0x9bf8('0x47')](_0x5459c3);}})['then'](function(_0xdd04f0){if(_0xdd04f0){return db['User'][_0x9bf8('0x5c')]({'where':{'id':_[_0x9bf8('0x30')](_0xdd04f0,_0x9bf8('0x5d')),'role':_0x9bf8('0x5e')},'attributes':['id',_0x9bf8('0x2d'),_0x9bf8('0x5f'),_0x9bf8('0x60'),_0x9bf8('0x61')]});}})[_0x9bf8('0x27')](function(_0x4dfc09){if(_0x4dfc09){return{'count':_0x4dfc09['count'],'rows':_[_0x9bf8('0x30')](_0x4dfc09[_0x9bf8('0x48')],function(_0x2f729b){return{'membername':_0x2f729b['name'],'UserId':_0x2f729b['id'],'queue_name':_0x3fd0f6['name'],'OpenchannelQueueId':_0x3fd0f6['id'],'interface':util[_0x9bf8('0x62')](_0x9bf8('0x63'),_0x9bf8('0x64'),_0x2f729b[_0x9bf8('0x2d')]),'penalty':0x0,'paused':_0x2f729b['openchannelPause'],'createdAt':_0x2f729b[_0x9bf8('0x61')],'updatedAt':_0x2f729b[_0x9bf8('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x173eeb,_0x5459c3))[_0x9bf8('0x4d')](handleError(_0x173eeb,null));};exports[_0x9bf8('0x65')]=function(_0x1d48a3,_0x1182c5,_0x223014){var _0x104555={};var _0x30f1d9={};var _0x4d985b;var _0x506363;return db['OpenchannelQueue']['findOne']({'where':{'id':_0x1d48a3['params']['id']}})[_0x9bf8('0x27')](handleEntityNotFound(_0x1182c5,null))[_0x9bf8('0x27')](function(_0x5e9f8b){if(_0x5e9f8b){_0x4d985b=_0x5e9f8b;_0x30f1d9[_0x9bf8('0x35')]=_[_0x9bf8('0x4b')](db[_0x9bf8('0x66')][_0x9bf8('0x31')]);_0x30f1d9['query']=_[_0x9bf8('0x4b')](_0x1d48a3[_0x9bf8('0x36')]);_0x30f1d9['filters']=_[_0x9bf8('0x38')](_0x30f1d9['model'],_0x30f1d9[_0x9bf8('0x36')]);_0x104555[_0x9bf8('0x39')]=_[_0x9bf8('0x38')](_0x30f1d9[_0x9bf8('0x35')],qs[_0x9bf8('0x3a')](_0x1d48a3[_0x9bf8('0x36')]['fields']));_0x104555[_0x9bf8('0x39')]=_0x104555[_0x9bf8('0x39')][_0x9bf8('0x3b')]?_0x104555[_0x9bf8('0x39')]:_0x30f1d9['model'];_0x104555[_0x9bf8('0x58')]=qs['sort'](_0x1d48a3[_0x9bf8('0x36')][_0x9bf8('0x3e')]);_0x104555['where']=qs[_0x9bf8('0x37')](_['pick'](_0x1d48a3[_0x9bf8('0x36')],_0x30f1d9[_0x9bf8('0x37')]));if(_0x1d48a3[_0x9bf8('0x36')][_0x9bf8('0x40')]){_0x104555[_0x9bf8('0x3f')]=_['merge'](_0x104555['where'],{'$or':_['map'](_0x104555[_0x9bf8('0x39')],function(_0x195f7f){var _0x1c6093={};_0x1c6093[_0x195f7f]={'$like':'%'+_0x1d48a3[_0x9bf8('0x36')][_0x9bf8('0x40')]+'%'};return _0x1c6093;})});}_0x104555=_[_0x9bf8('0x41')]({},_0x104555,_0x1d48a3['options']);return _0x4d985b['getTeams'](_0x104555);}})[_0x9bf8('0x27')](function(_0x5a6dcb){if(_0x5a6dcb){_0x506363=_0x5a6dcb[_0x9bf8('0x3b')];if(!_0x1d48a3[_0x9bf8('0x36')][_0x9bf8('0x3c')](_0x9bf8('0x3d'))){_0x104555[_0x9bf8('0x21')]=qs[_0x9bf8('0x21')](_0x1d48a3[_0x9bf8('0x36')][_0x9bf8('0x21')]);_0x104555[_0x9bf8('0x1f')]=qs[_0x9bf8('0x1f')](_0x1d48a3[_0x9bf8('0x36')][_0x9bf8('0x1f')]);}return _0x4d985b['getTeams'](_0x104555);}})['then'](function(_0x50a811){if(_0x50a811){return _0x50a811?{'count':_0x506363,'rows':_0x50a811}:null;}})['then'](respondWithResult(_0x1182c5,null))[_0x9bf8('0x4d')](handleError(_0x1182c5,null));};exports[_0x9bf8('0x67')]=function(_0x18d507,_0x5d4780,_0x565e75){var _0x50990c=_0x18d507[_0x9bf8('0x4f')][_0x9bf8('0x68')];return db[_0x9bf8('0x66')]['findAll']({'where':{'id':_0x50990c},'attributes':['id'],'include':[{'model':db[_0x9bf8('0x69')],'as':_0x9bf8('0x6a'),'attributes':['id','name','online','voicePause',_0x9bf8('0x6b')],'raw':!![]}]})['then'](function(_0x3abdbe){if(_0x3abdbe){var _0x277bff=_[_0x9bf8('0x6c')](_0x3abdbe,function(_0x1a5d01){var _0x2d0715=_0x1a5d01['get']({'plain':!![]});return _0x2d0715[_0x9bf8('0x6a')];});return db[_0x9bf8('0x44')][_0x9bf8('0x4c')]({'where':{'id':_0x18d507[_0x9bf8('0x4a')]['id']}})[_0x9bf8('0x27')](function(_0x1f2554){return db[_0x9bf8('0x6d')][_0x9bf8('0x6e')](function(_0x415c8d){return _0x1f2554[_0x9bf8('0x67')](_0x50990c,{'transaction':_0x415c8d})[_0x9bf8('0x27')](function(){return BPromise[_0x9bf8('0x6f')](_0x277bff,function(_0x11b617){return db[_0x9bf8('0x5b')]['findOrCreate']({'where':{'UserId':_0x11b617['id'],'OpenchannelQueueId':_0x18d507[_0x9bf8('0x4a')]['id']},'transaction':_0x415c8d});});})[_0x9bf8('0x27')](function(){_0x277bff[_0x9bf8('0x70')](function(_0x1ecf85){socket[_0x9bf8('0x71')](_0x9bf8('0x72'),{'UserId':_0x1ecf85['id'],'OpenchannelQueueId':_0x1f2554['id']});});});});});}})[_0x9bf8('0x27')](respondWithStatusCode(_0x5d4780,null))[_0x9bf8('0x4d')](handleError(_0x5d4780,null));};exports[_0x9bf8('0x73')]=function(_0x4b8d15,_0x5d77ba,_0xb38b78){return db[_0x9bf8('0x66')]['findAll']({'where':{'id':_0x4b8d15['query'][_0x9bf8('0x68')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x9bf8('0x6a'),'attributes':['id'],'raw':!![]}]})[_0x9bf8('0x27')](handleEntityNotFound(_0x5d77ba,null))[_0x9bf8('0x27')](function(_0x1a25f9){var _0x116572=_[_0x9bf8('0x30')](_0x1a25f9,'id');var _0x268603=[];var _0x243fab=[];var _0x2870e1=squel[_0x9bf8('0x74')]();_0x2870e1['field']('tq.TeamId')[_0x9bf8('0x75')](_0x9bf8('0x76'),'tq')[_0x9bf8('0x77')]('user_has_teams','ut',_0x9bf8('0x78'))['where'](_0x9bf8('0x79'),_0x4b8d15['params']['id']);for(var _0x1f559c=0x0;_0x1f559c<_0x1a25f9[_0x9bf8('0x3b')];_0x1f559c+=0x1){let _0x5927ef=_0x1a25f9[_0x1f559c];for(var _0x26a05b=0x0;_0x26a05b<_0x5927ef[_0x9bf8('0x6a')][_0x9bf8('0x3b')];_0x26a05b+=0x1){let _0x2655b8=_0x5927ef[_0x9bf8('0x6a')][_0x26a05b];var _0x48f510=_0x2870e1[_0x9bf8('0x7a')]();_0x48f510[_0x9bf8('0x3f')](_0x9bf8('0x7b'),_0x2655b8['id']);_0x243fab['push'](db[_0x9bf8('0x6d')][_0x9bf8('0x36')](_0x48f510[_0x9bf8('0x7c')](),{'type':db[_0x9bf8('0x6d')][_0x9bf8('0x7d')][_0x9bf8('0x7e')]})[_0x9bf8('0x27')](function(_0x5bc804){if(_0x5bc804[_0x9bf8('0x3b')]===0x1){return _0x2655b8['id'];}else{var _0xde84fa=_['every'](_['map'](_0x5bc804,_0x9bf8('0x7f')),function(_0x388ea8){return _[_0x9bf8('0x80')](_0x116572,_0x388ea8);});if(_0xde84fa){return _0x2655b8['id'];}}}));}}return BPromise[_0x9bf8('0x81')](_0x243fab)['then'](function(_0x4bb79e){_0x268603=_(_0x268603)['union'](_0x4bb79e)[_0x9bf8('0x82')]()['value']();return db[_0x9bf8('0x44')]['find']({'where':{'id':_0x4b8d15[_0x9bf8('0x4a')]['id']}})[_0x9bf8('0x27')](function(_0x1fcaee){return db[_0x9bf8('0x6d')][_0x9bf8('0x6e')](function(_0x487526){return _0x1fcaee['removeTeams'](_0x4b8d15[_0x9bf8('0x36')]['ids'],{'transaction':_0x487526})['then'](function(){if(!_[_0x9bf8('0x83')](_0x268603)){return _0x1fcaee[_0x9bf8('0x84')](_0x268603,{'transaction':_0x487526});}})[_0x9bf8('0x27')](function(){_0x268603[_0x9bf8('0x70')](function(_0x570121){socket[_0x9bf8('0x71')]('userOpenchannelQueue:remove',{'UserId':_0x570121,'OpenchannelQueueId':_0x1fcaee['id']});});});});});});})[_0x9bf8('0x27')](respondWithStatusCode(_0x5d77ba,null))[_0x9bf8('0x4d')](handleError(_0x5d77ba,null));};exports[_0x9bf8('0x85')]=function(_0x20f403,_0x4aa76c,_0x1743c2){return db[_0x9bf8('0x44')][_0x9bf8('0x4c')]({'where':{'id':_0x20f403[_0x9bf8('0x4a')]['id']}})[_0x9bf8('0x27')](handleEntityNotFound(_0x4aa76c,null))[_0x9bf8('0x27')](function(_0x486eb9){if(_0x486eb9){return _0x486eb9[_0x9bf8('0x85')](_0x20f403[_0x9bf8('0x4f')][_0x9bf8('0x68')],_[_0x9bf8('0x86')](_0x20f403['body'],[_0x9bf8('0x68'),'id'])||{})['spread'](function(_0x28f6d9){for(var _0x4ffbee=0x0;_0x4ffbee<_0x20f403[_0x9bf8('0x4f')][_0x9bf8('0x68')][_0x9bf8('0x3b')];_0x4ffbee+=0x1){socket['emit']('userOpenchannelQueue:save',{'UserId':Number(_0x20f403['body'][_0x9bf8('0x68')][_0x4ffbee]),'OpenchannelQueueId':Number(_0x20f403[_0x9bf8('0x4a')]['id'])});}return _0x28f6d9;});}})['then'](respondWithResult(_0x4aa76c,null))[_0x9bf8('0x4d')](handleError(_0x4aa76c,null));};exports[_0x9bf8('0x84')]=function(_0x391ade,_0x18488c,_0x5235e4){return db['OpenchannelQueue'][_0x9bf8('0x4c')]({'where':{'id':_0x391ade[_0x9bf8('0x4a')]['id']}})['then'](handleEntityNotFound(_0x18488c,null))[_0x9bf8('0x27')](function(_0x3f3cfb){if(_0x3f3cfb){return _0x3f3cfb[_0x9bf8('0x84')](_0x391ade[_0x9bf8('0x36')][_0x9bf8('0x68')])[_0x9bf8('0x27')](function(){if(_[_0x9bf8('0x87')](_0x391ade[_0x9bf8('0x36')][_0x9bf8('0x68')])){for(var _0x1e4747=0x0;_0x1e4747<_0x391ade[_0x9bf8('0x36')][_0x9bf8('0x68')][_0x9bf8('0x3b')];_0x1e4747+=0x1){socket[_0x9bf8('0x71')](_0x9bf8('0x88'),{'UserId':Number(_0x391ade[_0x9bf8('0x36')][_0x9bf8('0x68')][_0x1e4747]),'OpenchannelQueueId':Number(_0x391ade[_0x9bf8('0x4a')]['id'])});}}else{socket[_0x9bf8('0x71')](_0x9bf8('0x88'),{'UserId':Number(_0x391ade[_0x9bf8('0x36')]['ids']),'OpenchannelQueueId':Number(_0x391ade[_0x9bf8('0x4a')]['id'])});}});}})['then'](respondWithStatusCode(_0x18488c,null))['catch'](handleError(_0x18488c,null));};exports[_0x9bf8('0x89')]=function(_0x2219b2,_0x4e5668,_0x4c60a4){var _0x23376e={};var _0x262151={};var _0x57ada7;var _0x51ea94;return db[_0x9bf8('0x44')][_0x9bf8('0x8a')]({'where':{'id':_0x2219b2[_0x9bf8('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4e5668,null))[_0x9bf8('0x27')](function(_0x3cf02a){if(_0x3cf02a){_0x57ada7=_0x3cf02a;_0x262151[_0x9bf8('0x35')]=_['keys'](db[_0x9bf8('0x69')]['rawAttributes']);_0x262151['query']=_[_0x9bf8('0x4b')](_0x2219b2[_0x9bf8('0x36')]);_0x262151['filters']=_[_0x9bf8('0x38')](_0x262151['model'],_0x262151['query']);_0x23376e['attributes']=_[_0x9bf8('0x38')](_0x262151[_0x9bf8('0x35')],qs['fields'](_0x2219b2[_0x9bf8('0x36')][_0x9bf8('0x3a')]));_0x23376e[_0x9bf8('0x39')]=_0x23376e['attributes']['length']?_0x23376e[_0x9bf8('0x39')]:_0x262151[_0x9bf8('0x35')];_0x23376e[_0x9bf8('0x58')]=qs[_0x9bf8('0x3e')](_0x2219b2[_0x9bf8('0x36')][_0x9bf8('0x3e')]);_0x23376e[_0x9bf8('0x3f')]=qs[_0x9bf8('0x37')](_[_0x9bf8('0x59')](_0x2219b2[_0x9bf8('0x36')],_0x262151[_0x9bf8('0x37')]));if(_0x2219b2[_0x9bf8('0x36')]['filter']){_0x23376e[_0x9bf8('0x3f')]=_[_0x9bf8('0x41')](_0x23376e['where'],{'$or':_['map'](_0x23376e[_0x9bf8('0x39')],function(_0x1c0edf){var _0x2c4a56={};_0x2c4a56[_0x1c0edf]={'$like':'%'+_0x2219b2[_0x9bf8('0x36')][_0x9bf8('0x40')]+'%'};return _0x2c4a56;})});}_0x23376e=_['merge']({},_0x23376e,_0x2219b2[_0x9bf8('0x43')]);return _0x57ada7[_0x9bf8('0x89')](_0x23376e);}})[_0x9bf8('0x27')](function(_0x3571ba){if(_0x3571ba){_0x51ea94=_0x3571ba[_0x9bf8('0x3b')];if(!_0x2219b2['query'][_0x9bf8('0x3c')](_0x9bf8('0x3d'))){_0x23376e[_0x9bf8('0x21')]=qs[_0x9bf8('0x21')](_0x2219b2[_0x9bf8('0x36')][_0x9bf8('0x21')]);_0x23376e['offset']=qs[_0x9bf8('0x1f')](_0x2219b2['query']['offset']);}return _0x57ada7['getAgents'](_0x23376e);}})[_0x9bf8('0x27')](function(_0x40f028){if(_0x40f028){return _0x40f028?{'count':_0x51ea94,'rows':_0x40f028}:null;}})[_0x9bf8('0x27')](respondWithResult(_0x4e5668,null))['catch'](handleError(_0x4e5668,null));};
\ No newline at end of file
index d4d4a22..73a0ee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc36=['setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x289bcc,_0x190a5e){var _0x1d4a34=function(_0x3cb219){while(--_0x3cb219){_0x289bcc['push'](_0x289bcc['shift']());}};_0x1d4a34(++_0x190a5e);}(_0xfc36,0x1a5));var _0x6fc3=function(_0x2e24c8,_0x29a8db){_0x2e24c8=_0x2e24c8-0x0;var _0x21ee2d=_0xfc36[_0x2e24c8];return _0x21ee2d;};'use strict';var EventEmitter=require(_0x6fc3('0x0'));var OpenchannelQueue=require(_0x6fc3('0x1'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x6fc3('0x2')](0x0);var events={'afterCreate':_0x6fc3('0x3'),'afterUpdate':_0x6fc3('0x4'),'afterDestroy':'remove'};function emitEvent(_0x1a745f){return function(_0x5c230c,_0x1db337,_0x3984f7){OpenchannelQueueEvents[_0x6fc3('0x5')](_0x1a745f+':'+_0x5c230c['id'],_0x5c230c);OpenchannelQueueEvents[_0x6fc3('0x5')](_0x1a745f,_0x5c230c);_0x3984f7(null);};}for(var e in events){if(events[_0x6fc3('0x6')](e)){var event=events[e];OpenchannelQueue[_0x6fc3('0x7')](e,emitEvent(event));}}module[_0x6fc3('0x8')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x527d=['emit','hook','exports','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x3285a3,_0x2538e7){var _0x34e414=function(_0x5ae61a){while(--_0x5ae61a){_0x3285a3['push'](_0x3285a3['shift']());}};_0x34e414(++_0x2538e7);}(_0x527d,0x19b));var _0xd527=function(_0x587dd0,_0x273922){_0x587dd0=_0x587dd0-0x0;var _0x56f153=_0x527d[_0x587dd0];return _0x56f153;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0xd527('0x0'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xd527('0x1')](0x0);var events={'afterCreate':_0xd527('0x2'),'afterUpdate':_0xd527('0x3'),'afterDestroy':_0xd527('0x4')};function emitEvent(_0x1e7647){return function(_0x55e0be,_0x475948,_0x4d7eea){OpenchannelQueueEvents[_0xd527('0x5')](_0x1e7647+':'+_0x55e0be['id'],_0x55e0be);OpenchannelQueueEvents[_0xd527('0x5')](_0x1e7647,_0x55e0be);_0x4d7eea(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue[_0xd527('0x6')](e,emitEvent(event));}}module[_0xd527('0x7')]=OpenchannelQueueEvents;
\ No newline at end of file
index 94e1941..c0209f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44d9=['moment','bluebird','path','rimraf','../../config/environment','./openchannelQueue.attributes','define','OpenchannelQueue','openchannel_queues','lodash','util','../../config/logger','api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x44d9,0x1d0));var _0x944d=function(_0x360572,_0x3c6eda){_0x360572=_0x360572-0x0;var _0x46059b=_0x44d9[_0x360572];return _0x46059b;};'use strict';var _=require(_0x944d('0x0'));var util=require(_0x944d('0x1'));var logger=require(_0x944d('0x2'))(_0x944d('0x3'));var moment=require(_0x944d('0x4'));var BPromise=require(_0x944d('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x944d('0x6'));var rimraf=require(_0x944d('0x7'));var config=require(_0x944d('0x8'));var attributes=require(_0x944d('0x9'));module['exports']=function(_0x3e8a37,_0x51daf8){return _0x3e8a37[_0x944d('0xa')](_0x944d('0xb'),attributes,{'tableName':_0x944d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6304=['OpenchannelQueue','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./openchannelQueue.attributes','exports'];(function(_0x28c44f,_0xec54c){var _0x8bde08=function(_0x7ca3be){while(--_0x7ca3be){_0x28c44f['push'](_0x28c44f['shift']());}};_0x8bde08(++_0xec54c);}(_0x6304,0xa1));var _0x4630=function(_0x14cc75,_0x6bcc74){_0x14cc75=_0x14cc75-0x0;var _0x128349=_0x6304[_0x14cc75];return _0x128349;};'use strict';var _=require('lodash');var util=require(_0x4630('0x0'));var logger=require(_0x4630('0x1'))(_0x4630('0x2'));var moment=require('moment');var BPromise=require(_0x4630('0x3'));var rp=require(_0x4630('0x4'));var fs=require('fs');var path=require(_0x4630('0x5'));var rimraf=require(_0x4630('0x6'));var config=require('../../config/environment');var attributes=require(_0x4630('0x7'));module[_0x4630('0x8')]=function(_0x544a7e,_0x1339d6){return _0x544a7e['define'](_0x4630('0x9'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c41fee3..d618c81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a89=['OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelQueue,\x20%s,\x20%s','message','info','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','attributes','limit','map','include','model','ShowOpenchannelQueue','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','then','request\x20sent','debug'];(function(_0x431182,_0x1383cb){var _0x36eb64=function(_0x5b2271){while(--_0x5b2271){_0x431182['push'](_0x431182['shift']());}};_0x36eb64(++_0x1383cb);}(_0x3a89,0x154));var _0x93a8=function(_0x35d1b4,_0x717559){_0x35d1b4=_0x35d1b4-0x0;var _0x273c5b=_0x3a89[_0x35d1b4];return _0x273c5b;};'use strict';var _=require('lodash');var util=require(_0x93a8('0x0'));var moment=require(_0x93a8('0x1'));var BPromise=require(_0x93a8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x93a8('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x93a8('0x4'));var logger=require(_0x93a8('0x5'))(_0x93a8('0x6'));var config=require(_0x93a8('0x7'));var jayson=require(_0x93a8('0x8'));var client=jayson[_0x93a8('0x9')][_0x93a8('0xa')]({'port':0x232a});config[_0x93a8('0xb')]=_[_0x93a8('0xc')](config['redis'],{'host':_0x93a8('0xd'),'port':0x18eb});var socket=require(_0x93a8('0xe'))(new Redis(config['redis']));require(_0x93a8('0xf'))[_0x93a8('0x10')](socket);function respondWithRpcPromise(_0xbfacf1,_0x5bd7cf,_0x39468b){return new BPromise(function(_0x465346,_0x198008){return client['request'](_0xbfacf1,_0x39468b)[_0x93a8('0x11')](function(_0x1e7bdf){logger['info']('OpenchannelQueue,\x20%s,\x20%s',_0x5bd7cf,_0x93a8('0x12'));logger[_0x93a8('0x13')](_0x93a8('0x14'),_0x5bd7cf,'request\x20sent',JSON[_0x93a8('0x15')](_0x1e7bdf));if(_0x1e7bdf['error']){if(_0x1e7bdf[_0x93a8('0x16')]['code']===0x1f4){logger[_0x93a8('0x16')](_0x93a8('0x17'),_0x5bd7cf,_0x1e7bdf[_0x93a8('0x16')][_0x93a8('0x18')]);return _0x198008(_0x1e7bdf['error'][_0x93a8('0x18')]);}logger[_0x93a8('0x16')]('OpenchannelQueue,\x20%s,\x20%s',_0x5bd7cf,_0x1e7bdf[_0x93a8('0x16')][_0x93a8('0x18')]);return _0x465346(_0x1e7bdf[_0x93a8('0x16')]['message']);}else{logger[_0x93a8('0x19')](_0x93a8('0x17'),_0x5bd7cf,_0x93a8('0x12'));_0x465346(_0x1e7bdf[_0x93a8('0x1a')]['message']);}})[_0x93a8('0x1b')](function(_0x3a5b74){logger[_0x93a8('0x16')](_0x93a8('0x17'),_0x5bd7cf,_0x3a5b74);_0x198008(_0x3a5b74);});});}exports[_0x93a8('0x1c')]=function(_0x37540e){var _0x4b4b20=this;return new Promise(function(_0x2db26f,_0x42b265){return db[_0x93a8('0x1d')][_0x93a8('0x1e')]({'raw':_0x37540e[_0x93a8('0x1f')]?_0x37540e[_0x93a8('0x1f')][_0x93a8('0x20')]===undefined?!![]:![]:!![],'where':_0x37540e[_0x93a8('0x1f')]?_0x37540e[_0x93a8('0x1f')][_0x93a8('0x21')]||null:null,'attributes':_0x37540e['options']?_0x37540e[_0x93a8('0x1f')][_0x93a8('0x22')]||null:null,'limit':_0x37540e['options']?_0x37540e[_0x93a8('0x1f')][_0x93a8('0x23')]||null:null,'include':_0x37540e[_0x93a8('0x1f')]?_0x37540e['options']['include']?_[_0x93a8('0x24')](_0x37540e['options'][_0x93a8('0x25')],function(_0x5084b3){return{'model':db[_0x5084b3[_0x93a8('0x26')]],'as':_0x5084b3['as'],'attributes':_0x5084b3[_0x93a8('0x22')],'include':_0x5084b3[_0x93a8('0x25')]?_[_0x93a8('0x24')](_0x5084b3['include'],function(_0x10eac7){return{'model':db[_0x10eac7[_0x93a8('0x26')]],'as':_0x10eac7['as'],'attributes':_0x10eac7['attributes'],'include':_0x10eac7[_0x93a8('0x25')]?_['map'](_0x10eac7[_0x93a8('0x25')],function(_0x15acbf){return{'model':db[_0x15acbf[_0x93a8('0x26')]],'as':_0x15acbf['as'],'attributes':_0x15acbf[_0x93a8('0x22')]};}):[]};}):[]};}):[]:[]})[_0x93a8('0x11')](function(_0x550e06){logger[_0x93a8('0x19')](_0x93a8('0x1c'),_0x37540e);logger[_0x93a8('0x13')]('GetOpenchannelQueue',_0x37540e,JSON[_0x93a8('0x15')](_0x550e06));_0x2db26f(_0x550e06);})['catch'](function(_0x42f4ec){logger['error'](_0x93a8('0x1c'),_0x42f4ec['message'],_0x37540e);_0x42b265(_0x4b4b20[_0x93a8('0x16')](0x1f4,_0x42f4ec[_0x93a8('0x18')]));});});};exports[_0x93a8('0x27')]=function(_0x336e57){var _0x1c1000=this;return new Promise(function(_0x979c3a,_0x105ef5){return db[_0x93a8('0x1d')]['find']({'raw':_0x336e57[_0x93a8('0x1f')]?_0x336e57[_0x93a8('0x1f')][_0x93a8('0x20')]===undefined?!![]:![]:!![],'where':_0x336e57['options']?_0x336e57['options'][_0x93a8('0x21')]||null:null,'attributes':_0x336e57['options']?_0x336e57[_0x93a8('0x1f')][_0x93a8('0x22')]||null:null,'include':_0x336e57[_0x93a8('0x1f')]?_0x336e57[_0x93a8('0x1f')][_0x93a8('0x25')]?_[_0x93a8('0x24')](_0x336e57[_0x93a8('0x1f')][_0x93a8('0x25')],function(_0x490246){return{'model':db[_0x490246['model']],'as':_0x490246['as'],'attributes':_0x490246[_0x93a8('0x22')],'include':_0x490246[_0x93a8('0x25')]?_[_0x93a8('0x24')](_0x490246['include'],function(_0x5e7027){return{'model':db[_0x5e7027[_0x93a8('0x26')]],'as':_0x5e7027['as'],'attributes':_0x5e7027['attributes'],'include':_0x5e7027['include']?_[_0x93a8('0x24')](_0x5e7027[_0x93a8('0x25')],function(_0x379530){return{'model':db[_0x379530[_0x93a8('0x26')]],'as':_0x379530['as'],'attributes':_0x379530[_0x93a8('0x22')]};}):[]};}):[]};}):[]:[]})[_0x93a8('0x11')](function(_0x4f89bf){logger[_0x93a8('0x19')](_0x93a8('0x27'),_0x336e57);logger[_0x93a8('0x13')]('ShowOpenchannelQueue',_0x336e57,JSON[_0x93a8('0x15')](_0x4f89bf));_0x979c3a(_0x4f89bf);})['catch'](function(_0x7e5c60){logger[_0x93a8('0x16')](_0x93a8('0x27'),_0x7e5c60['message'],_0x336e57);_0x105ef5(_0x1c1000[_0x93a8('0x16')](0x1f4,_0x7e5c60[_0x93a8('0x18')]));});});};
\ No newline at end of file
+var _0x1464=['OpenchannelQueue','findAll','raw','options','attributes','limit','include','model','map','GetOpenchannelQueue','stringify','ShowOpenchannelQueue','find','where','debug','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./openchannelQueue.socket','register','request','then','info','request\x20sent','error','OpenchannelQueue,\x20%s,\x20%s','message','result','catch'];(function(_0x44e00a,_0x248bbc){var _0x2bdfba=function(_0x5e66c4){while(--_0x5e66c4){_0x44e00a['push'](_0x44e00a['shift']());}};_0x2bdfba(++_0x248bbc);}(_0x1464,0x127));var _0x4146=function(_0x236cc0,_0xc76be8){_0x236cc0=_0x236cc0-0x0;var _0x509cc7=_0x1464[_0x236cc0];return _0x509cc7;};'use strict';var _=require(_0x4146('0x0'));var util=require(_0x4146('0x1'));var moment=require(_0x4146('0x2'));var BPromise=require(_0x4146('0x3'));var rs=require(_0x4146('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4146('0x5'));var logger=require(_0x4146('0x6'))(_0x4146('0x7'));var config=require(_0x4146('0x8'));var jayson=require(_0x4146('0x9'));var client=jayson['client'][_0x4146('0xa')]({'port':0x232a});config[_0x4146('0xb')]=_[_0x4146('0xc')](config[_0x4146('0xb')],{'host':_0x4146('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4146('0xb')]));require(_0x4146('0xe'))[_0x4146('0xf')](socket);function respondWithRpcPromise(_0x511a03,_0x46b219,_0x3aefb8){return new BPromise(function(_0x2821fc,_0x251892){return client[_0x4146('0x10')](_0x511a03,_0x3aefb8)[_0x4146('0x11')](function(_0x244c99){logger[_0x4146('0x12')]('OpenchannelQueue,\x20%s,\x20%s',_0x46b219,_0x4146('0x13'));logger['debug']('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x46b219,_0x4146('0x13'),JSON['stringify'](_0x244c99));if(_0x244c99[_0x4146('0x14')]){if(_0x244c99[_0x4146('0x14')]['code']===0x1f4){logger[_0x4146('0x14')](_0x4146('0x15'),_0x46b219,_0x244c99[_0x4146('0x14')]['message']);return _0x251892(_0x244c99[_0x4146('0x14')][_0x4146('0x16')]);}logger[_0x4146('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x46b219,_0x244c99[_0x4146('0x14')][_0x4146('0x16')]);return _0x2821fc(_0x244c99[_0x4146('0x14')][_0x4146('0x16')]);}else{logger[_0x4146('0x12')](_0x4146('0x15'),_0x46b219,_0x4146('0x13'));_0x2821fc(_0x244c99[_0x4146('0x17')][_0x4146('0x16')]);}})[_0x4146('0x18')](function(_0x1a8f49){logger[_0x4146('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x46b219,_0x1a8f49);_0x251892(_0x1a8f49);});});}exports['GetOpenchannelQueue']=function(_0xd8752b){var _0x5cc7df=this;return new Promise(function(_0x569853,_0x3ed880){return db[_0x4146('0x19')][_0x4146('0x1a')]({'raw':_0xd8752b['options']?_0xd8752b['options'][_0x4146('0x1b')]===undefined?!![]:![]:!![],'where':_0xd8752b[_0x4146('0x1c')]?_0xd8752b[_0x4146('0x1c')]['where']||null:null,'attributes':_0xd8752b[_0x4146('0x1c')]?_0xd8752b[_0x4146('0x1c')][_0x4146('0x1d')]||null:null,'limit':_0xd8752b[_0x4146('0x1c')]?_0xd8752b[_0x4146('0x1c')][_0x4146('0x1e')]||null:null,'include':_0xd8752b['options']?_0xd8752b[_0x4146('0x1c')]['include']?_['map'](_0xd8752b['options'][_0x4146('0x1f')],function(_0x5b3129){return{'model':db[_0x5b3129[_0x4146('0x20')]],'as':_0x5b3129['as'],'attributes':_0x5b3129[_0x4146('0x1d')],'include':_0x5b3129[_0x4146('0x1f')]?_[_0x4146('0x21')](_0x5b3129['include'],function(_0x3d8138){return{'model':db[_0x3d8138['model']],'as':_0x3d8138['as'],'attributes':_0x3d8138[_0x4146('0x1d')],'include':_0x3d8138[_0x4146('0x1f')]?_['map'](_0x3d8138['include'],function(_0x165427){return{'model':db[_0x165427['model']],'as':_0x165427['as'],'attributes':_0x165427[_0x4146('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x4146('0x11')](function(_0xe72f3c){logger[_0x4146('0x12')]('GetOpenchannelQueue',_0xd8752b);logger['debug'](_0x4146('0x22'),_0xd8752b,JSON[_0x4146('0x23')](_0xe72f3c));_0x569853(_0xe72f3c);})[_0x4146('0x18')](function(_0x53608d){logger[_0x4146('0x14')](_0x4146('0x22'),_0x53608d[_0x4146('0x16')],_0xd8752b);_0x3ed880(_0x5cc7df[_0x4146('0x14')](0x1f4,_0x53608d[_0x4146('0x16')]));});});};exports[_0x4146('0x24')]=function(_0x1aff88){var _0x73ffb5=this;return new Promise(function(_0x1d41b2,_0x5df558){return db['OpenchannelQueue'][_0x4146('0x25')]({'raw':_0x1aff88[_0x4146('0x1c')]?_0x1aff88['options']['raw']===undefined?!![]:![]:!![],'where':_0x1aff88[_0x4146('0x1c')]?_0x1aff88[_0x4146('0x1c')][_0x4146('0x26')]||null:null,'attributes':_0x1aff88[_0x4146('0x1c')]?_0x1aff88['options'][_0x4146('0x1d')]||null:null,'include':_0x1aff88[_0x4146('0x1c')]?_0x1aff88[_0x4146('0x1c')][_0x4146('0x1f')]?_[_0x4146('0x21')](_0x1aff88[_0x4146('0x1c')][_0x4146('0x1f')],function(_0x58f162){return{'model':db[_0x58f162['model']],'as':_0x58f162['as'],'attributes':_0x58f162['attributes'],'include':_0x58f162[_0x4146('0x1f')]?_[_0x4146('0x21')](_0x58f162[_0x4146('0x1f')],function(_0x2036e4){return{'model':db[_0x2036e4[_0x4146('0x20')]],'as':_0x2036e4['as'],'attributes':_0x2036e4[_0x4146('0x1d')],'include':_0x2036e4[_0x4146('0x1f')]?_['map'](_0x2036e4[_0x4146('0x1f')],function(_0x5618c1){return{'model':db[_0x5618c1[_0x4146('0x20')]],'as':_0x5618c1['as'],'attributes':_0x5618c1['attributes']};}):[]};}):[]};}):[]:[]})[_0x4146('0x11')](function(_0x2d8809){logger[_0x4146('0x12')]('ShowOpenchannelQueue',_0x1aff88);logger[_0x4146('0x27')](_0x4146('0x24'),_0x1aff88,JSON[_0x4146('0x23')](_0x2d8809));_0x1d41b2(_0x2d8809);})[_0x4146('0x18')](function(_0x546499){logger[_0x4146('0x14')]('ShowOpenchannelQueue',_0x546499[_0x4146('0x16')],_0x1aff88);_0x5df558(_0x73ffb5[_0x4146('0x14')](0x1f4,_0x546499[_0x4146('0x16')]));});});};
\ No newline at end of file
index 25a9f40..8c92205 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58b7=['save','remove','emit','removeListener','register','openchannelQueue:','./openchannelQueue.events'];(function(_0x43dc95,_0x17c8a4){var _0x46ff2a=function(_0x4e5f61){while(--_0x4e5f61){_0x43dc95['push'](_0x43dc95['shift']());}};_0x46ff2a(++_0x17c8a4);}(_0x58b7,0x18e));var _0x758b=function(_0x39737b,_0x520f16){_0x39737b=_0x39737b-0x0;var _0x2c3f55=_0x58b7[_0x39737b];return _0x2c3f55;};'use strict';var OpenchannelQueueEvents=require(_0x758b('0x0'));var events=[_0x758b('0x1'),_0x758b('0x2'),'update'];function createListener(_0xd13524,_0x7ad755){return function(_0x5c8621){_0x7ad755[_0x758b('0x3')](_0xd13524,_0x5c8621);};}function removeListener(_0xb1b45,_0x1e42d7){return function(){OpenchannelQueueEvents[_0x758b('0x4')](_0xb1b45,_0x1e42d7);};}exports[_0x758b('0x5')]=function(_0x20f0e6){for(var _0x512ff9=0x0,_0x58d99f=events['length'];_0x512ff9<_0x58d99f;_0x512ff9++){var _0x3c41ba=events[_0x512ff9];var _0x2b6383=createListener(_0x758b('0x6')+_0x3c41ba,_0x20f0e6);OpenchannelQueueEvents['on'](_0x3c41ba,_0x2b6383);}};
\ No newline at end of file
+var _0x5d03=['update','emit','removeListener','register','./openchannelQueue.events','save','remove'];(function(_0x11ed68,_0x304460){var _0x5e3a3f=function(_0x3269b2){while(--_0x3269b2){_0x11ed68['push'](_0x11ed68['shift']());}};_0x5e3a3f(++_0x304460);}(_0x5d03,0x1a1));var _0x35d0=function(_0x18c34f,_0x102373){_0x18c34f=_0x18c34f-0x0;var _0x37e6fe=_0x5d03[_0x18c34f];return _0x37e6fe;};'use strict';var OpenchannelQueueEvents=require(_0x35d0('0x0'));var events=[_0x35d0('0x1'),_0x35d0('0x2'),_0x35d0('0x3')];function createListener(_0x524218,_0x147425){return function(_0x482663){_0x147425[_0x35d0('0x4')](_0x524218,_0x482663);};}function removeListener(_0x57914a,_0xd381ff){return function(){OpenchannelQueueEvents[_0x35d0('0x5')](_0x57914a,_0xd381ff);};}exports[_0x35d0('0x6')]=function(_0x1684cb){for(var _0x1d1db1=0x0,_0x2a695c=events['length'];_0x1d1db1<_0x2a695c;_0x1d1db1++){var _0x2e6c44=events[_0x1d1db1];var _0x33b4d8=createListener('openchannelQueue:'+_0x2e6c44,_0x1684cb);OpenchannelQueueEvents['on'](_0x2e6c44,_0x33b4d8);}};
\ No newline at end of file
index 67a3ba5..5504c31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16cc=['isAuthenticated','index','/describe','describe','/:id','show','post','create','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','./openchannelQueueReport.controller','get'];(function(_0x416a0a,_0x24f91f){var _0x574c9f=function(_0x44b83e){while(--_0x44b83e){_0x416a0a['push'](_0x416a0a['shift']());}};_0x574c9f(++_0x24f91f);}(_0x16cc,0x14c));var _0xc16c=function(_0x7fb317,_0x2db6d6){_0x7fb317=_0x7fb317-0x0;var _0xb494a2=_0x16cc[_0x7fb317];return _0xb494a2;};'use strict';var multer=require('multer');var util=require(_0xc16c('0x0'));var path=require(_0xc16c('0x1'));var timeout=require(_0xc16c('0x2'));var express=require(_0xc16c('0x3'));var router=express['Router']();var fs_extra=require(_0xc16c('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc16c('0x5'));var config=require('../../config/environment');var controller=require(_0xc16c('0x6'));router[_0xc16c('0x7')]('/',auth[_0xc16c('0x8')](),controller[_0xc16c('0x9')]);router[_0xc16c('0x7')](_0xc16c('0xa'),auth['isAuthenticated'](),controller[_0xc16c('0xb')]);router[_0xc16c('0x7')](_0xc16c('0xc'),auth[_0xc16c('0x8')](),controller[_0xc16c('0xd')]);router[_0xc16c('0xe')]('/',auth[_0xc16c('0x8')](),controller[_0xc16c('0xf')]);router['put'](_0xc16c('0xc'),auth['isAuthenticated'](),controller[_0xc16c('0x10')]);router[_0xc16c('0x11')](_0xc16c('0xc'),auth[_0xc16c('0x8')](),controller[_0xc16c('0x12')]);module[_0xc16c('0x13')]=router;
\ No newline at end of file
+var _0x41b8=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','describe','show','create','put','delete','destroy','multer'];(function(_0x51e6cd,_0xf26d1d){var _0x17a851=function(_0x35c059){while(--_0x35c059){_0x51e6cd['push'](_0x51e6cd['shift']());}};_0x17a851(++_0xf26d1d);}(_0x41b8,0xa1));var _0x841b=function(_0x16c2b1,_0x36a70c){_0x16c2b1=_0x16c2b1-0x0;var _0x199ac4=_0x41b8[_0x16c2b1];return _0x199ac4;};'use strict';var multer=require(_0x841b('0x0'));var util=require('util');var path=require(_0x841b('0x1'));var timeout=require(_0x841b('0x2'));var express=require(_0x841b('0x3'));var router=express[_0x841b('0x4')]();var fs_extra=require(_0x841b('0x5'));var auth=require(_0x841b('0x6'));var interaction=require(_0x841b('0x7'));var config=require(_0x841b('0x8'));var controller=require('./openchannelQueueReport.controller');router['get']('/',auth[_0x841b('0x9')](),controller['index']);router[_0x841b('0xa')](_0x841b('0xb'),auth[_0x841b('0x9')](),controller[_0x841b('0xc')]);router[_0x841b('0xa')]('/:id',auth[_0x841b('0x9')](),controller[_0x841b('0xd')]);router['post']('/',auth[_0x841b('0x9')](),controller[_0x841b('0xe')]);router[_0x841b('0xf')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x841b('0x10')]('/:id',auth[_0x841b('0x9')](),controller[_0x841b('0x11')]);module['exports']=router;
\ No newline at end of file
index e073316..421155e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x383d=['STRING','DATE','exports'];(function(_0x1d3791,_0x51c613){var _0x40fbf5=function(_0xe5d147){while(--_0xe5d147){_0x1d3791['push'](_0x1d3791['shift']());}};_0x40fbf5(++_0x51c613);}(_0x383d,0x86));var _0xd383=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x383d[_0x14add3];return _0x4a174f;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0xd383('0x0')]={'uniqueid':{'type':Sequelize[_0xd383('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0xd383('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xd383('0x2')]},'acceptAt':{'type':Sequelize[_0xd383('0x2')]},'exitAt':{'type':Sequelize[_0xd383('0x2')]},'reason':{'type':Sequelize[_0xd383('0x1')]}};
\ No newline at end of file
+var _0x0c42=['DATE','moment','sequelize','exports','STRING'];(function(_0xee63ea,_0x2e8134){var _0x572565=function(_0x4a34fd){while(--_0x4a34fd){_0xee63ea['push'](_0xee63ea['shift']());}};_0x572565(++_0x2e8134);}(_0x0c42,0x191));var _0x20c4=function(_0x18caf8,_0x4509b5){_0x18caf8=_0x18caf8-0x0;var _0xd2e820=_0x0c42[_0x18caf8];return _0xd2e820;};'use strict';var moment=require(_0x20c4('0x0'));var Sequelize=require(_0x20c4('0x1'));module[_0x20c4('0x2')]={'uniqueid':{'type':Sequelize[_0x20c4('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x20c4('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x20c4('0x4')]},'exitAt':{'type':Sequelize[_0x20c4('0x4')]},'reason':{'type':Sequelize[_0x20c4('0x3')]}};
\ No newline at end of file
index 97e82b5..68eb54f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c16=['intersection','attributes','fields','hasOwnProperty','order','where','pick','filter','merge','VIRTUAL','rows','show','params','length','includeAll','include','options','find','catch','create','body','describe','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../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','send','map','OpenchannelQueueReport','rawAttributes','fieldName','type','key','model','keys','query','filters'];(function(_0x4dc7b9,_0x319d5a){var _0x3ab114=function(_0x51a9df){while(--_0x51a9df){_0x4dc7b9['push'](_0x4dc7b9['shift']());}};_0x3ab114(++_0x319d5a);}(_0x4c16,0x18d));var _0x64c1=function(_0x27906a,_0x3d58c8){_0x27906a=_0x27906a-0x0;var _0x3c956b=_0x4c16[_0x27906a];return _0x3c956b;};'use strict';var emlformat=require(_0x64c1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x64c1('0x1'));var jsonpatch=require(_0x64c1('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x64c1('0x3'));var Mustache=require(_0x64c1('0x4'));var util=require(_0x64c1('0x5'));var path=require('path');var sox=require(_0x64c1('0x6'));var csv=require(_0x64c1('0x7'));var ejs=require(_0x64c1('0x8'));var fs=require('fs');var fs_extra=require(_0x64c1('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x64c1('0xa'));var jsforce=require(_0x64c1('0xb'));var deskjs=require(_0x64c1('0xc'));var toCsv=require('to-csv');var querystring=require(_0x64c1('0xd'));var Papa=require(_0x64c1('0xe'));var Redis=require('ioredis');var authService=require(_0x64c1('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x64c1('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x64c1('0x11'))(_0x64c1('0x12'));var utils=require(_0x64c1('0x13'));var config=require(_0x64c1('0x14'));var licenseUtil=require(_0x64c1('0x15'));var db=require(_0x64c1('0x16'))['db'];function respondWithStatusCode(_0x1116e9,_0x3882f0){_0x3882f0=_0x3882f0||0xcc;return function(_0x10955d){if(_0x10955d){return _0x1116e9[_0x64c1('0x17')](_0x3882f0);}return _0x1116e9['status'](_0x3882f0)[_0x64c1('0x18')]();};}function respondWithResult(_0x2c1450,_0x33e73a){_0x33e73a=_0x33e73a||0xc8;return function(_0x77a8ca){if(_0x77a8ca){return _0x2c1450[_0x64c1('0x19')](_0x33e73a)[_0x64c1('0x1a')](_0x77a8ca);}};}function respondWithFilteredResult(_0x53a6a2,_0x137501){return function(_0x337b0c){if(_0x337b0c){var _0x325076=typeof _0x137501[_0x64c1('0x1b')]===_0x64c1('0x1c')&&typeof _0x137501[_0x64c1('0x1d')]===_0x64c1('0x1c');var _0x38ca0d=_0x337b0c[_0x64c1('0x1e')];var _0x768e20=_0x325076?0x0:_0x137501[_0x64c1('0x1b')];var _0x3f0206=_0x325076?_0x337b0c[_0x64c1('0x1e')]:_0x137501[_0x64c1('0x1b')]+_0x137501[_0x64c1('0x1d')];var _0x3fa0cb;if(_0x3f0206>=_0x38ca0d){_0x3f0206=_0x38ca0d;_0x3fa0cb=0xc8;}else{_0x3fa0cb=0xce;}_0x53a6a2[_0x64c1('0x19')](_0x3fa0cb);return _0x53a6a2[_0x64c1('0x1f')](_0x64c1('0x20'),_0x768e20+'-'+_0x3f0206+'/'+_0x38ca0d)[_0x64c1('0x1a')](_0x337b0c);}return null;};}function patchUpdates(_0x479090){return function(_0x345066){try{jsonpatch[_0x64c1('0x21')](_0x345066,_0x479090,!![]);}catch(_0x85603d){return BPromise[_0x64c1('0x22')](_0x85603d);}return _0x345066[_0x64c1('0x23')]();};}function saveUpdates(_0x2b3a89,_0x422233){return function(_0x56cb3c){if(_0x56cb3c){return _0x56cb3c[_0x64c1('0x24')](_0x2b3a89)[_0x64c1('0x25')](function(_0x134635){return _0x134635;});}return null;};}function removeEntity(_0x416435,_0x432ff2){return function(_0x52df19){if(_0x52df19){return _0x52df19[_0x64c1('0x26')]()[_0x64c1('0x25')](function(){_0x416435[_0x64c1('0x19')](0xcc)[_0x64c1('0x18')]();});}};}function handleEntityNotFound(_0x4bacd0,_0x9dcd4a){return function(_0xa27a22){if(!_0xa27a22){_0x4bacd0[_0x64c1('0x17')](0x194);}return _0xa27a22;};}function handleError(_0x20caec,_0x39e2cd){_0x39e2cd=_0x39e2cd||0x1f4;return function(_0x3b6d9a){logger[_0x64c1('0x27')](_0x3b6d9a[_0x64c1('0x28')]);if(_0x3b6d9a[_0x64c1('0x29')]){delete _0x3b6d9a['name'];}_0x20caec[_0x64c1('0x19')](_0x39e2cd)[_0x64c1('0x2a')](_0x3b6d9a);};}exports['index']=function(_0xe90882,_0x4a3237){var _0x1bbc0c={},_0xf3d31a={},_0x554509={'count':0x0,'rows':[]};var _0x2ed009=_[_0x64c1('0x2b')](db[_0x64c1('0x2c')][_0x64c1('0x2d')],function(_0x4a9f95){return{'name':_0x4a9f95[_0x64c1('0x2e')],'type':_0x4a9f95[_0x64c1('0x2f')][_0x64c1('0x30')]};});_0xf3d31a[_0x64c1('0x31')]=_[_0x64c1('0x2b')](_0x2ed009,_0x64c1('0x29'));_0xf3d31a['query']=_[_0x64c1('0x32')](_0xe90882[_0x64c1('0x33')]);_0xf3d31a[_0x64c1('0x34')]=_[_0x64c1('0x35')](_0xf3d31a[_0x64c1('0x31')],_0xf3d31a[_0x64c1('0x33')]);_0x1bbc0c[_0x64c1('0x36')]=_[_0x64c1('0x35')](_0xf3d31a[_0x64c1('0x31')],qs['fields'](_0xe90882[_0x64c1('0x33')][_0x64c1('0x37')]));_0x1bbc0c[_0x64c1('0x36')]=_0x1bbc0c[_0x64c1('0x36')]['length']?_0x1bbc0c[_0x64c1('0x36')]:_0xf3d31a[_0x64c1('0x31')];if(!_0xe90882['query'][_0x64c1('0x38')]('nolimit')){_0x1bbc0c['limit']=qs[_0x64c1('0x1d')](_0xe90882['query'][_0x64c1('0x1d')]);_0x1bbc0c[_0x64c1('0x1b')]=qs[_0x64c1('0x1b')](_0xe90882['query'][_0x64c1('0x1b')]);}_0x1bbc0c[_0x64c1('0x39')]=qs['sort'](_0xe90882[_0x64c1('0x33')]['sort']);_0x1bbc0c[_0x64c1('0x3a')]=qs[_0x64c1('0x34')](_[_0x64c1('0x3b')](_0xe90882[_0x64c1('0x33')],_0xf3d31a[_0x64c1('0x34')]),_0x2ed009);if(_0xe90882[_0x64c1('0x33')][_0x64c1('0x3c')]){_0x1bbc0c[_0x64c1('0x3a')]=_[_0x64c1('0x3d')](_0x1bbc0c[_0x64c1('0x3a')],{'$or':_[_0x64c1('0x2b')](_0x2ed009,function(_0x2a218a){if(_0x2a218a[_0x64c1('0x2f')]!==_0x64c1('0x3e')){var _0x4631d5={};_0x4631d5[_0x2a218a[_0x64c1('0x29')]]={'$like':'%'+_0xe90882[_0x64c1('0x33')][_0x64c1('0x3c')]+'%'};return _0x4631d5;}})});}_0x1bbc0c=_[_0x64c1('0x3d')]({},_0x1bbc0c,_0xe90882['options']);var _0x32f7b2={'where':_0x1bbc0c['where']};return db[_0x64c1('0x2c')][_0x64c1('0x1e')](_0x32f7b2)[_0x64c1('0x25')](function(_0x3ef64b){_0x554509[_0x64c1('0x1e')]=_0x3ef64b;if(_0xe90882[_0x64c1('0x33')]['includeAll']){_0x1bbc0c['include']=[{'all':!![]}];}return db['OpenchannelQueueReport']['findAll'](_0x1bbc0c);})['then'](function(_0x46e6e8){_0x554509[_0x64c1('0x3f')]=_0x46e6e8;return _0x554509;})[_0x64c1('0x25')](respondWithFilteredResult(_0x4a3237,_0x1bbc0c))['catch'](handleError(_0x4a3237,null));};exports[_0x64c1('0x40')]=function(_0x9fd8af,_0xeaa74){var _0x2e14a5={'raw':!![],'where':{'id':_0x9fd8af[_0x64c1('0x41')]['id']}},_0x1d831f={};_0x1d831f[_0x64c1('0x31')]=_[_0x64c1('0x32')](db[_0x64c1('0x2c')][_0x64c1('0x2d')]);_0x1d831f['query']=_[_0x64c1('0x32')](_0x9fd8af[_0x64c1('0x33')]);_0x1d831f[_0x64c1('0x34')]=_[_0x64c1('0x35')](_0x1d831f[_0x64c1('0x31')],_0x1d831f[_0x64c1('0x33')]);_0x2e14a5[_0x64c1('0x36')]=_[_0x64c1('0x35')](_0x1d831f['model'],qs[_0x64c1('0x37')](_0x9fd8af['query'][_0x64c1('0x37')]));_0x2e14a5[_0x64c1('0x36')]=_0x2e14a5[_0x64c1('0x36')][_0x64c1('0x42')]?_0x2e14a5[_0x64c1('0x36')]:_0x1d831f[_0x64c1('0x31')];if(_0x9fd8af[_0x64c1('0x33')][_0x64c1('0x43')]){_0x2e14a5[_0x64c1('0x44')]=[{'all':!![]}];}_0x2e14a5=_[_0x64c1('0x3d')]({},_0x2e14a5,_0x9fd8af[_0x64c1('0x45')]);return db['OpenchannelQueueReport'][_0x64c1('0x46')](_0x2e14a5)[_0x64c1('0x25')](handleEntityNotFound(_0xeaa74,null))[_0x64c1('0x25')](respondWithResult(_0xeaa74,null))[_0x64c1('0x47')](handleError(_0xeaa74,null));};exports[_0x64c1('0x48')]=function(_0x43cdcf,_0x18ea16){return db['OpenchannelQueueReport'][_0x64c1('0x48')](_0x43cdcf[_0x64c1('0x49')],{})['then'](respondWithResult(_0x18ea16,0xc9))['catch'](handleError(_0x18ea16,null));};exports['update']=function(_0x4d2f90,_0x325856){if(_0x4d2f90[_0x64c1('0x49')]['id']){delete _0x4d2f90[_0x64c1('0x49')]['id'];}return db[_0x64c1('0x2c')]['find']({'where':{'id':_0x4d2f90[_0x64c1('0x41')]['id']}})['then'](handleEntityNotFound(_0x325856,null))[_0x64c1('0x25')](saveUpdates(_0x4d2f90[_0x64c1('0x49')],null))[_0x64c1('0x25')](respondWithResult(_0x325856,null))[_0x64c1('0x47')](handleError(_0x325856,null));};exports[_0x64c1('0x26')]=function(_0x49df4e,_0x4e83dc){return db[_0x64c1('0x2c')][_0x64c1('0x46')]({'where':{'id':_0x49df4e['params']['id']}})['then'](handleEntityNotFound(_0x4e83dc,null))[_0x64c1('0x25')](removeEntity(_0x4e83dc,null))[_0x64c1('0x47')](handleError(_0x4e83dc,null));};exports[_0x64c1('0x4a')]=function(_0x4ccb34,_0x4b1282){return db[_0x64c1('0x2c')][_0x64c1('0x4a')]()['then'](respondWithResult(_0x4b1282,null))[_0x64c1('0x47')](handleError(_0x4b1282,null));};
\ No newline at end of file
+var _0xaa5f=['index','map','OpenchannelQueueReport','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','destroy','describe','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','error','name','send'];(function(_0x55fa1b,_0x470dd2){var _0x934524=function(_0x5e976c){while(--_0x5e976c){_0x55fa1b['push'](_0x55fa1b['shift']());}};_0x934524(++_0x470dd2);}(_0xaa5f,0x18d));var _0xfaa5=function(_0x22ae85,_0xd307ef){_0x22ae85=_0x22ae85-0x0;var _0x30cfa3=_0xaa5f[_0x22ae85];return _0x30cfa3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfaa5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfaa5('0x1'));var rp=require(_0xfaa5('0x2'));var moment=require(_0xfaa5('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xfaa5('0x4'));var util=require(_0xfaa5('0x5'));var path=require(_0xfaa5('0x6'));var sox=require(_0xfaa5('0x7'));var csv=require(_0xfaa5('0x8'));var ejs=require(_0xfaa5('0x9'));var fs=require('fs');var fs_extra=require(_0xfaa5('0xa'));var _=require('lodash');var squel=require(_0xfaa5('0xb'));var crypto=require(_0xfaa5('0xc'));var jsforce=require(_0xfaa5('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xfaa5('0x8'));var querystring=require(_0xfaa5('0xe'));var Papa=require(_0xfaa5('0xf'));var Redis=require('ioredis');var authService=require(_0xfaa5('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xfaa5('0x11'));var hardwareService=require(_0xfaa5('0x12'));var logger=require(_0xfaa5('0x13'))(_0xfaa5('0x14'));var utils=require(_0xfaa5('0x15'));var config=require(_0xfaa5('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xfaa5('0x17'))['db'];function respondWithStatusCode(_0x5ccf0f,_0x273117){_0x273117=_0x273117||0xcc;return function(_0x37a04f){if(_0x37a04f){return _0x5ccf0f[_0xfaa5('0x18')](_0x273117);}return _0x5ccf0f[_0xfaa5('0x19')](_0x273117)[_0xfaa5('0x1a')]();};}function respondWithResult(_0x30e058,_0x55a077){_0x55a077=_0x55a077||0xc8;return function(_0x3c336){if(_0x3c336){return _0x30e058[_0xfaa5('0x19')](_0x55a077)['json'](_0x3c336);}};}function respondWithFilteredResult(_0x21111f,_0x159078){return function(_0x5b0062){if(_0x5b0062){var _0x131390=typeof _0x159078[_0xfaa5('0x1b')]===_0xfaa5('0x1c')&&typeof _0x159078[_0xfaa5('0x1d')]===_0xfaa5('0x1c');var _0x542db4=_0x5b0062[_0xfaa5('0x1e')];var _0x21377d=_0x131390?0x0:_0x159078[_0xfaa5('0x1b')];var _0x39751a=_0x131390?_0x5b0062[_0xfaa5('0x1e')]:_0x159078[_0xfaa5('0x1b')]+_0x159078[_0xfaa5('0x1d')];var _0x5bb8d3;if(_0x39751a>=_0x542db4){_0x39751a=_0x542db4;_0x5bb8d3=0xc8;}else{_0x5bb8d3=0xce;}_0x21111f[_0xfaa5('0x19')](_0x5bb8d3);return _0x21111f[_0xfaa5('0x1f')](_0xfaa5('0x20'),_0x21377d+'-'+_0x39751a+'/'+_0x542db4)[_0xfaa5('0x21')](_0x5b0062);}return null;};}function patchUpdates(_0x51ef4b){return function(_0x5b3faf){try{jsonpatch['apply'](_0x5b3faf,_0x51ef4b,!![]);}catch(_0x19d68f){return BPromise[_0xfaa5('0x22')](_0x19d68f);}return _0x5b3faf[_0xfaa5('0x23')]();};}function saveUpdates(_0x188f4a,_0x51a423){return function(_0x477dbe){if(_0x477dbe){return _0x477dbe[_0xfaa5('0x24')](_0x188f4a)['then'](function(_0x232a89){return _0x232a89;});}return null;};}function removeEntity(_0x1635d3,_0xa7ceff){return function(_0x14c161){if(_0x14c161){return _0x14c161['destroy']()[_0xfaa5('0x25')](function(){_0x1635d3['status'](0xcc)[_0xfaa5('0x1a')]();});}};}function handleEntityNotFound(_0x162cdf,_0x25ed2a){return function(_0x34b025){if(!_0x34b025){_0x162cdf[_0xfaa5('0x18')](0x194);}return _0x34b025;};}function handleError(_0x5601ee,_0x3e1dc5){_0x3e1dc5=_0x3e1dc5||0x1f4;return function(_0x220179){logger[_0xfaa5('0x26')](_0x220179['stack']);if(_0x220179[_0xfaa5('0x27')]){delete _0x220179[_0xfaa5('0x27')];}_0x5601ee['status'](_0x3e1dc5)[_0xfaa5('0x28')](_0x220179);};}exports[_0xfaa5('0x29')]=function(_0x890124,_0x68d4f1){var _0x162788={},_0x42f822={},_0x5773af={'count':0x0,'rows':[]};var _0x4c8738=_[_0xfaa5('0x2a')](db[_0xfaa5('0x2b')]['rawAttributes'],function(_0x5aece3){return{'name':_0x5aece3['fieldName'],'type':_0x5aece3[_0xfaa5('0x2c')]['key']};});_0x42f822[_0xfaa5('0x2d')]=_[_0xfaa5('0x2a')](_0x4c8738,_0xfaa5('0x27'));_0x42f822['query']=_[_0xfaa5('0x2e')](_0x890124[_0xfaa5('0x2f')]);_0x42f822[_0xfaa5('0x30')]=_[_0xfaa5('0x31')](_0x42f822['model'],_0x42f822['query']);_0x162788[_0xfaa5('0x32')]=_[_0xfaa5('0x31')](_0x42f822[_0xfaa5('0x2d')],qs['fields'](_0x890124[_0xfaa5('0x2f')][_0xfaa5('0x33')]));_0x162788[_0xfaa5('0x32')]=_0x162788[_0xfaa5('0x32')][_0xfaa5('0x34')]?_0x162788['attributes']:_0x42f822[_0xfaa5('0x2d')];if(!_0x890124['query'][_0xfaa5('0x35')](_0xfaa5('0x36'))){_0x162788[_0xfaa5('0x1d')]=qs[_0xfaa5('0x1d')](_0x890124[_0xfaa5('0x2f')]['limit']);_0x162788[_0xfaa5('0x1b')]=qs[_0xfaa5('0x1b')](_0x890124[_0xfaa5('0x2f')][_0xfaa5('0x1b')]);}_0x162788[_0xfaa5('0x37')]=qs['sort'](_0x890124[_0xfaa5('0x2f')][_0xfaa5('0x38')]);_0x162788[_0xfaa5('0x39')]=qs[_0xfaa5('0x30')](_['pick'](_0x890124[_0xfaa5('0x2f')],_0x42f822[_0xfaa5('0x30')]),_0x4c8738);if(_0x890124['query'][_0xfaa5('0x3a')]){_0x162788[_0xfaa5('0x39')]=_['merge'](_0x162788[_0xfaa5('0x39')],{'$or':_[_0xfaa5('0x2a')](_0x4c8738,function(_0x4fe6f0){if(_0x4fe6f0[_0xfaa5('0x2c')]!=='VIRTUAL'){var _0x2b4836={};_0x2b4836[_0x4fe6f0['name']]={'$like':'%'+_0x890124[_0xfaa5('0x2f')]['filter']+'%'};return _0x2b4836;}})});}_0x162788=_[_0xfaa5('0x3b')]({},_0x162788,_0x890124[_0xfaa5('0x3c')]);var _0x32368a={'where':_0x162788['where']};return db['OpenchannelQueueReport']['count'](_0x32368a)['then'](function(_0x19028d){_0x5773af[_0xfaa5('0x1e')]=_0x19028d;if(_0x890124[_0xfaa5('0x2f')][_0xfaa5('0x3d')]){_0x162788[_0xfaa5('0x3e')]=[{'all':!![]}];}return db[_0xfaa5('0x2b')][_0xfaa5('0x3f')](_0x162788);})[_0xfaa5('0x25')](function(_0x19876f){_0x5773af[_0xfaa5('0x40')]=_0x19876f;return _0x5773af;})[_0xfaa5('0x25')](respondWithFilteredResult(_0x68d4f1,_0x162788))[_0xfaa5('0x41')](handleError(_0x68d4f1,null));};exports['show']=function(_0x413477,_0xd25815){var _0x53153b={'raw':!![],'where':{'id':_0x413477[_0xfaa5('0x42')]['id']}},_0x1f4a22={};_0x1f4a22[_0xfaa5('0x2d')]=_['keys'](db[_0xfaa5('0x2b')][_0xfaa5('0x43')]);_0x1f4a22[_0xfaa5('0x2f')]=_[_0xfaa5('0x2e')](_0x413477[_0xfaa5('0x2f')]);_0x1f4a22[_0xfaa5('0x30')]=_['intersection'](_0x1f4a22['model'],_0x1f4a22[_0xfaa5('0x2f')]);_0x53153b[_0xfaa5('0x32')]=_[_0xfaa5('0x31')](_0x1f4a22[_0xfaa5('0x2d')],qs[_0xfaa5('0x33')](_0x413477[_0xfaa5('0x2f')][_0xfaa5('0x33')]));_0x53153b[_0xfaa5('0x32')]=_0x53153b[_0xfaa5('0x32')][_0xfaa5('0x34')]?_0x53153b['attributes']:_0x1f4a22[_0xfaa5('0x2d')];if(_0x413477[_0xfaa5('0x2f')][_0xfaa5('0x3d')]){_0x53153b[_0xfaa5('0x3e')]=[{'all':!![]}];}_0x53153b=_[_0xfaa5('0x3b')]({},_0x53153b,_0x413477[_0xfaa5('0x3c')]);return db['OpenchannelQueueReport'][_0xfaa5('0x44')](_0x53153b)['then'](handleEntityNotFound(_0xd25815,null))[_0xfaa5('0x25')](respondWithResult(_0xd25815,null))[_0xfaa5('0x41')](handleError(_0xd25815,null));};exports[_0xfaa5('0x45')]=function(_0x1947fb,_0x29e9c9){return db['OpenchannelQueueReport'][_0xfaa5('0x45')](_0x1947fb[_0xfaa5('0x46')],{})[_0xfaa5('0x25')](respondWithResult(_0x29e9c9,0xc9))[_0xfaa5('0x41')](handleError(_0x29e9c9,null));};exports[_0xfaa5('0x24')]=function(_0x33c94d,_0x3716d0){if(_0x33c94d[_0xfaa5('0x46')]['id']){delete _0x33c94d[_0xfaa5('0x46')]['id'];}return db[_0xfaa5('0x2b')]['find']({'where':{'id':_0x33c94d['params']['id']}})['then'](handleEntityNotFound(_0x3716d0,null))[_0xfaa5('0x25')](saveUpdates(_0x33c94d[_0xfaa5('0x46')],null))[_0xfaa5('0x25')](respondWithResult(_0x3716d0,null))[_0xfaa5('0x41')](handleError(_0x3716d0,null));};exports[_0xfaa5('0x47')]=function(_0xd3588,_0x5806ae){return db[_0xfaa5('0x2b')][_0xfaa5('0x44')]({'where':{'id':_0xd3588[_0xfaa5('0x42')]['id']}})[_0xfaa5('0x25')](handleEntityNotFound(_0x5806ae,null))[_0xfaa5('0x25')](removeEntity(_0x5806ae,null))[_0xfaa5('0x41')](handleError(_0x5806ae,null));};exports['describe']=function(_0x529424,_0x4670e1){return db['OpenchannelQueueReport'][_0xfaa5('0x48')]()[_0xfaa5('0x25')](respondWithResult(_0x4670e1,null))['catch'](handleError(_0x4670e1,null));};
\ No newline at end of file
index a5955e4..3d23b3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','uniqueid','lodash','util'];(function(_0x295314,_0x17b250){var _0x584b0c=function(_0x51cc84){while(--_0x51cc84){_0x295314['push'](_0x295314['shift']());}};_0x584b0c(++_0x17b250);}(_0x814b,0x1a2));var _0xb814=function(_0x1709e7,_0x2ced21){_0x1709e7=_0x1709e7-0x0;var _0x402819=_0x814b[_0x1709e7];return _0x402819;};'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
+var _0x5fc3=['util','api','moment','bluebird','request-promise','path','../../config/environment','./openchannelQueueReport.attributes','exports','define','report_openchannel_queue','uniqueid','lodash'];(function(_0x5940cd,_0x2fcacc){var _0x54b550=function(_0x1f0359){while(--_0x1f0359){_0x5940cd['push'](_0x5940cd['shift']());}};_0x54b550(++_0x2fcacc);}(_0x5fc3,0xa8));var _0x35fc=function(_0x5c14f6,_0x2979d8){_0x5c14f6=_0x5c14f6-0x0;var _0x4949b3=_0x5fc3[_0x5c14f6];return _0x4949b3;};'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
index 7cbd3bb..16d3d4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa64=['attributes','limit','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','raw','then','UpdateOpenchannelQueueReport','update','where'];(function(_0x383654,_0x22600d){var _0x13600d=function(_0x3618d4){while(--_0x3618d4){_0x383654['push'](_0x383654['shift']());}};_0x13600d(++_0x22600d);}(_0xaa64,0xf7));var _0x4aa6=function(_0x11eb07,_0x4e029c){_0x11eb07=_0x11eb07-0x0;var _0x88d824=_0xaa64[_0x11eb07];return _0x88d824;};'use strict';var _=require(_0x4aa6('0x0'));var util=require(_0x4aa6('0x1'));var moment=require('moment');var BPromise=require(_0x4aa6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4aa6('0x3'));var db=require(_0x4aa6('0x4'))['db'];var utils=require(_0x4aa6('0x5'));var logger=require('../../config/logger')(_0x4aa6('0x6'));var config=require(_0x4aa6('0x7'));var jayson=require(_0x4aa6('0x8'));var client=jayson[_0x4aa6('0x9')][_0x4aa6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x7dd83d,_0x39c4b5,_0x49e174){return new BPromise(function(_0x529c89,_0xee21ba){return client[_0x4aa6('0xb')](_0x7dd83d,_0x49e174)['then'](function(_0x26619c){logger['info'](_0x4aa6('0xc'),_0x39c4b5,_0x4aa6('0xd'));logger[_0x4aa6('0xe')](_0x4aa6('0xf'),_0x39c4b5,'request\x20sent',JSON[_0x4aa6('0x10')](_0x26619c));if(_0x26619c[_0x4aa6('0x11')]){if(_0x26619c[_0x4aa6('0x11')][_0x4aa6('0x12')]===0x1f4){logger[_0x4aa6('0x11')](_0x4aa6('0xc'),_0x39c4b5,_0x26619c[_0x4aa6('0x11')][_0x4aa6('0x13')]);return _0xee21ba(_0x26619c[_0x4aa6('0x11')][_0x4aa6('0x13')]);}logger['error'](_0x4aa6('0xc'),_0x39c4b5,_0x26619c['error']['message']);return _0x529c89(_0x26619c[_0x4aa6('0x11')][_0x4aa6('0x13')]);}else{logger[_0x4aa6('0x14')](_0x4aa6('0xc'),_0x39c4b5,_0x4aa6('0xd'));_0x529c89(_0x26619c[_0x4aa6('0x15')][_0x4aa6('0x13')]);}})[_0x4aa6('0x16')](function(_0x530ed0){logger[_0x4aa6('0x11')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x39c4b5,_0x530ed0);_0xee21ba(_0x530ed0);});});}exports[_0x4aa6('0x17')]=function(_0x5c6d3c){var _0x54a6d8=this;return new Promise(function(_0x266707,_0x15f5e6){return db[_0x4aa6('0x18')][_0x4aa6('0x19')](_0x5c6d3c[_0x4aa6('0x1a')],{'raw':_0x5c6d3c[_0x4aa6('0x1b')]?_0x5c6d3c[_0x4aa6('0x1b')][_0x4aa6('0x1c')]===undefined?!![]:![]:!![]})[_0x4aa6('0x1d')](function(_0x4c9159){logger[_0x4aa6('0x14')](_0x4aa6('0x17'),_0x5c6d3c);logger[_0x4aa6('0xe')](_0x4aa6('0x17'),_0x5c6d3c,JSON[_0x4aa6('0x10')](_0x4c9159));_0x266707(_0x4c9159);})[_0x4aa6('0x16')](function(_0x594665){logger[_0x4aa6('0x11')](_0x4aa6('0x17'),_0x594665[_0x4aa6('0x13')],_0x5c6d3c);_0x15f5e6(_0x54a6d8[_0x4aa6('0x11')](0x1f4,_0x594665[_0x4aa6('0x13')]));});});};exports[_0x4aa6('0x1e')]=function(_0x568a5c){var _0x2f4943=this;return new Promise(function(_0x91373f,_0x47b285){return db['OpenchannelQueueReport'][_0x4aa6('0x1f')](_0x568a5c[_0x4aa6('0x1a')],{'raw':_0x568a5c[_0x4aa6('0x1b')]?_0x568a5c[_0x4aa6('0x1b')][_0x4aa6('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x568a5c['options']?_0x568a5c[_0x4aa6('0x1b')][_0x4aa6('0x20')]||null:null,'attributes':_0x568a5c[_0x4aa6('0x1b')]?_0x568a5c[_0x4aa6('0x1b')][_0x4aa6('0x21')]||null:null,'limit':_0x568a5c[_0x4aa6('0x1b')]?_0x568a5c['options'][_0x4aa6('0x22')]||null:null})[_0x4aa6('0x1d')](function(_0x5bc756){logger[_0x4aa6('0x14')](_0x4aa6('0x1e'),_0x568a5c);logger[_0x4aa6('0xe')](_0x4aa6('0x1e'),_0x568a5c,JSON['stringify'](_0x5bc756));_0x91373f(_0x5bc756);})[_0x4aa6('0x16')](function(_0x625df8){logger[_0x4aa6('0x11')]('UpdateOpenchannelQueueReport',_0x625df8[_0x4aa6('0x13')],_0x568a5c);_0x47b285(_0x2f4943[_0x4aa6('0x11')](0x1f4,_0x625df8[_0x4aa6('0x13')]));});});};
\ No newline at end of file
+var _0x5b12=['OpenchannelQueueReport,\x20%s,\x20%s','message','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','options','raw','UpdateOpenchannelQueueReport','update','body','where','attributes','limit','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','client','request','then','info','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3bc0b1,_0x1f1bf8){var _0x11975b=function(_0x3b6bfc){while(--_0x3b6bfc){_0x3bc0b1['push'](_0x3bc0b1['shift']());}};_0x11975b(++_0x1f1bf8);}(_0x5b12,0xa3));var _0x25b1=function(_0x11eb2a,_0x2dce76){_0x11eb2a=_0x11eb2a-0x0;var _0x560ffa=_0x5b12[_0x11eb2a];return _0x560ffa;};'use strict';var _=require(_0x25b1('0x0'));var util=require(_0x25b1('0x1'));var moment=require(_0x25b1('0x2'));var BPromise=require('bluebird');var rs=require(_0x25b1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x25b1('0x4'))['db'];var utils=require(_0x25b1('0x5'));var logger=require('../../config/logger')(_0x25b1('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x25b1('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5bb95b,_0x1f715d,_0x28c980){return new BPromise(function(_0x451c66,_0x2a46e0){return client[_0x25b1('0x8')](_0x5bb95b,_0x28c980)[_0x25b1('0x9')](function(_0x3346ed){logger[_0x25b1('0xa')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x1f715d,_0x25b1('0xb'));logger[_0x25b1('0xc')](_0x25b1('0xd'),_0x1f715d,_0x25b1('0xb'),JSON[_0x25b1('0xe')](_0x3346ed));if(_0x3346ed[_0x25b1('0xf')]){if(_0x3346ed[_0x25b1('0xf')][_0x25b1('0x10')]===0x1f4){logger[_0x25b1('0xf')](_0x25b1('0x11'),_0x1f715d,_0x3346ed[_0x25b1('0xf')][_0x25b1('0x12')]);return _0x2a46e0(_0x3346ed[_0x25b1('0xf')][_0x25b1('0x12')]);}logger[_0x25b1('0xf')](_0x25b1('0x11'),_0x1f715d,_0x3346ed['error'][_0x25b1('0x12')]);return _0x451c66(_0x3346ed[_0x25b1('0xf')]['message']);}else{logger[_0x25b1('0xa')](_0x25b1('0x11'),_0x1f715d,_0x25b1('0xb'));_0x451c66(_0x3346ed['result']['message']);}})[_0x25b1('0x13')](function(_0x573ec2){logger[_0x25b1('0xf')](_0x25b1('0x11'),_0x1f715d,_0x573ec2);_0x2a46e0(_0x573ec2);});});}exports[_0x25b1('0x14')]=function(_0x27ccc9){var _0x1f78c2=this;return new Promise(function(_0x2a7d14,_0x17024a){return db[_0x25b1('0x15')]['create'](_0x27ccc9['body'],{'raw':_0x27ccc9[_0x25b1('0x16')]?_0x27ccc9['options'][_0x25b1('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x3bfd7d){logger['info'](_0x25b1('0x14'),_0x27ccc9);logger['debug'](_0x25b1('0x14'),_0x27ccc9,JSON['stringify'](_0x3bfd7d));_0x2a7d14(_0x3bfd7d);})['catch'](function(_0x565cfd){logger[_0x25b1('0xf')](_0x25b1('0x14'),_0x565cfd['message'],_0x27ccc9);_0x17024a(_0x1f78c2[_0x25b1('0xf')](0x1f4,_0x565cfd[_0x25b1('0x12')]));});});};exports[_0x25b1('0x18')]=function(_0x246acd){var _0x1aabbb=this;return new Promise(function(_0x5e6b6b,_0x3fa043){return db[_0x25b1('0x15')][_0x25b1('0x19')](_0x246acd[_0x25b1('0x1a')],{'raw':_0x246acd[_0x25b1('0x16')]?_0x246acd[_0x25b1('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x246acd[_0x25b1('0x16')]?_0x246acd[_0x25b1('0x16')][_0x25b1('0x1b')]||null:null,'attributes':_0x246acd['options']?_0x246acd[_0x25b1('0x16')][_0x25b1('0x1c')]||null:null,'limit':_0x246acd[_0x25b1('0x16')]?_0x246acd['options'][_0x25b1('0x1d')]||null:null})['then'](function(_0x19ecd1){logger[_0x25b1('0xa')](_0x25b1('0x18'),_0x246acd);logger[_0x25b1('0xc')](_0x25b1('0x18'),_0x246acd,JSON[_0x25b1('0xe')](_0x19ecd1));_0x5e6b6b(_0x19ecd1);})[_0x25b1('0x13')](function(_0x4cd825){logger[_0x25b1('0xf')](_0x25b1('0x18'),_0x4cd825[_0x25b1('0x12')],_0x246acd);_0x3fa043(_0x1aabbb[_0x25b1('0xf')](0x1f4,_0x4cd825[_0x25b1('0x12')]));});});};
\ No newline at end of file
index 45f961b..1929686 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e0a=['index','/describe','isAuthenticated','show','post','/:id','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x8e0a,0x171));var _0xa8e0=function(_0x482f80,_0x1f5d6e){_0x482f80=_0x482f80-0x0;var _0x25cdd8=_0x8e0a[_0x482f80];return _0x25cdd8;};'use strict';var multer=require(_0xa8e0('0x0'));var util=require('util');var path=require(_0xa8e0('0x1'));var timeout=require(_0xa8e0('0x2'));var express=require(_0xa8e0('0x3'));var router=express[_0xa8e0('0x4')]();var fs_extra=require(_0xa8e0('0x5'));var auth=require(_0xa8e0('0x6'));var interaction=require(_0xa8e0('0x7'));var config=require(_0xa8e0('0x8'));var controller=require(_0xa8e0('0x9'));router[_0xa8e0('0xa')]('/',auth['isAuthenticated'](),controller[_0xa8e0('0xb')]);router[_0xa8e0('0xa')](_0xa8e0('0xc'),auth[_0xa8e0('0xd')](),controller['describe']);router[_0xa8e0('0xa')]('/:id',auth[_0xa8e0('0xd')](),controller[_0xa8e0('0xe')]);router[_0xa8e0('0xf')]('/',auth[_0xa8e0('0xd')](),controller['create']);router['put'](_0xa8e0('0x10'),auth[_0xa8e0('0xd')](),controller[_0xa8e0('0x11')]);router[_0xa8e0('0x12')](_0xa8e0('0x10'),auth[_0xa8e0('0xd')](),controller['destroy']);module[_0xa8e0('0x13')]=router;
\ No newline at end of file
+var _0xfc6a=['isAuthenticated','get','describe','show','create','put','/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelTransferReport.controller'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xfc6a,0xee));var _0xafc6=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0xfc6a[_0x565c49];return _0x20ca34;};'use strict';var multer=require('multer');var util=require(_0xafc6('0x0'));var path=require(_0xafc6('0x1'));var timeout=require(_0xafc6('0x2'));var express=require(_0xafc6('0x3'));var router=express[_0xafc6('0x4')]();var fs_extra=require(_0xafc6('0x5'));var auth=require(_0xafc6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xafc6('0x7'));var controller=require(_0xafc6('0x8'));router['get']('/',auth[_0xafc6('0x9')](),controller['index']);router[_0xafc6('0xa')]('/describe',auth[_0xafc6('0x9')](),controller[_0xafc6('0xb')]);router[_0xafc6('0xa')]('/:id',auth[_0xafc6('0x9')](),controller[_0xafc6('0xc')]);router['post']('/',auth[_0xafc6('0x9')](),controller[_0xafc6('0xd')]);router[_0xafc6('0xe')](_0xafc6('0xf'),auth['isAuthenticated'](),controller[_0xafc6('0x10')]);router[_0xafc6('0x11')](_0xafc6('0xf'),auth[_0xafc6('0x9')](),controller['destroy']);module[_0xafc6('0x12')]=router;
\ No newline at end of file
index 9d1a439..7d992ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['agent','queue','DATE','NOW','moment','sequelize','exports','ENUM','account'];(function(_0xfc53fc,_0x4204d6){var _0x423828=function(_0x44e877){while(--_0x44e877){_0xfc53fc['push'](_0xfc53fc['shift']());}};_0x423828(++_0x4204d6);}(_0x54ef,0x112));var _0xf54e=function(_0x2f197d,_0x4f4df4){_0x2f197d=_0x2f197d-0x0;var _0x3cb872=_0x54ef[_0x2f197d];return _0x3cb872;};'use strict';var moment=require(_0xf54e('0x0'));var Sequelize=require(_0xf54e('0x1'));module[_0xf54e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xf54e('0x3')](_0xf54e('0x4'),_0xf54e('0x5'),_0xf54e('0x6')),'allowNull':![],'defaultValue':_0xf54e('0x6')},'transferredAt':{'type':Sequelize[_0xf54e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xf54e('0x8')]}};
\ No newline at end of file
+var _0x34e8=['queue','DATE','NOW','moment','sequelize','exports','STRING','account','agent'];(function(_0xf1af27,_0x598bb1){var _0x46b274=function(_0x1dba43){while(--_0x1dba43){_0xf1af27['push'](_0xf1af27['shift']());}};_0x46b274(++_0x598bb1);}(_0x34e8,0x12c));var _0x834e=function(_0x1e83be,_0x6d6191){_0x1e83be=_0x1e83be-0x0;var _0x167481=_0x34e8[_0x1e83be];return _0x167481;};'use strict';var moment=require(_0x834e('0x0'));var Sequelize=require(_0x834e('0x1'));module[_0x834e('0x2')]={'uniqueid':{'type':Sequelize[_0x834e('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6')),'allowNull':![],'defaultValue':_0x834e('0x6')},'transferredAt':{'type':Sequelize[_0x834e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x834e('0x8')]}};
\ No newline at end of file
index 5638bfc..81d5847 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde2d=['Content-Range','reject','save','then','stack','name','index','OpenchannelTransferReport','rawAttributes','fieldName','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','include','findAll','rows','catch','params','keys','includeAll','body','update','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','lodash','squel','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','undefined','limit','offset','set'];(function(_0x1bd8ba,_0x5dedea){var _0x1f9d75=function(_0x1ee484){while(--_0x1ee484){_0x1bd8ba['push'](_0x1bd8ba['shift']());}};_0x1f9d75(++_0x5dedea);}(_0xde2d,0xbd));var _0xdde2=function(_0x34b245,_0xfe65b4){_0x34b245=_0x34b245-0x0;var _0x3a8984=_0xde2d[_0x34b245];return _0x3a8984;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdde2('0x0'));var zipdir=require(_0xdde2('0x1'));var jsonpatch=require(_0xdde2('0x2'));var rp=require(_0xdde2('0x3'));var moment=require('moment');var BPromise=require(_0xdde2('0x4'));var Mustache=require('mustache');var util=require(_0xdde2('0x5'));var path=require('path');var sox=require(_0xdde2('0x6'));var csv=require(_0xdde2('0x7'));var ejs=require(_0xdde2('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdde2('0x9'));var squel=require(_0xdde2('0xa'));var crypto=require(_0xdde2('0xb'));var jsforce=require(_0xdde2('0xc'));var deskjs=require(_0xdde2('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xdde2('0xe'));var Redis=require(_0xdde2('0xf'));var authService=require(_0xdde2('0x10'));var qs=require(_0xdde2('0x11'));var as=require(_0xdde2('0x12'));var hardwareService=require(_0xdde2('0x13'));var logger=require(_0xdde2('0x14'))(_0xdde2('0x15'));var utils=require(_0xdde2('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xdde2('0x17'));var db=require(_0xdde2('0x18'))['db'];function respondWithStatusCode(_0x393aa7,_0xc2e239){_0xc2e239=_0xc2e239||0xcc;return function(_0x1b23cd){if(_0x1b23cd){return _0x393aa7[_0xdde2('0x19')](_0xc2e239);}return _0x393aa7[_0xdde2('0x1a')](_0xc2e239)[_0xdde2('0x1b')]();};}function respondWithResult(_0x2b22fb,_0x1cca88){_0x1cca88=_0x1cca88||0xc8;return function(_0x20e756){if(_0x20e756){return _0x2b22fb[_0xdde2('0x1a')](_0x1cca88)[_0xdde2('0x1c')](_0x20e756);}};}function respondWithFilteredResult(_0x88cce,_0x2e8afe){return function(_0x29d94d){if(_0x29d94d){var _0x35603d=typeof _0x2e8afe['offset']===_0xdde2('0x1d')&&typeof _0x2e8afe[_0xdde2('0x1e')]===_0xdde2('0x1d');var _0x13243e=_0x29d94d['count'];var _0x58e532=_0x35603d?0x0:_0x2e8afe[_0xdde2('0x1f')];var _0x122116=_0x35603d?_0x29d94d['count']:_0x2e8afe[_0xdde2('0x1f')]+_0x2e8afe[_0xdde2('0x1e')];var _0x1b2d98;if(_0x122116>=_0x13243e){_0x122116=_0x13243e;_0x1b2d98=0xc8;}else{_0x1b2d98=0xce;}_0x88cce[_0xdde2('0x1a')](_0x1b2d98);return _0x88cce[_0xdde2('0x20')](_0xdde2('0x21'),_0x58e532+'-'+_0x122116+'/'+_0x13243e)['json'](_0x29d94d);}return null;};}function patchUpdates(_0x44649d){return function(_0x421b80){try{jsonpatch['apply'](_0x421b80,_0x44649d,!![]);}catch(_0x4dd09d){return BPromise[_0xdde2('0x22')](_0x4dd09d);}return _0x421b80[_0xdde2('0x23')]();};}function saveUpdates(_0x3c6d23,_0x4dcd76){return function(_0x1889a6){if(_0x1889a6){return _0x1889a6['update'](_0x3c6d23)[_0xdde2('0x24')](function(_0x178a68){return _0x178a68;});}return null;};}function removeEntity(_0x23fdcd,_0x3461c9){return function(_0x464c08){if(_0x464c08){return _0x464c08['destroy']()[_0xdde2('0x24')](function(){_0x23fdcd['status'](0xcc)[_0xdde2('0x1b')]();});}};}function handleEntityNotFound(_0x4a8bea,_0x5f34f2){return function(_0x593412){if(!_0x593412){_0x4a8bea[_0xdde2('0x19')](0x194);}return _0x593412;};}function handleError(_0x467f86,_0x321f0b){_0x321f0b=_0x321f0b||0x1f4;return function(_0x5e99bb){logger['error'](_0x5e99bb[_0xdde2('0x25')]);if(_0x5e99bb[_0xdde2('0x26')]){delete _0x5e99bb['name'];}_0x467f86[_0xdde2('0x1a')](_0x321f0b)['send'](_0x5e99bb);};}exports[_0xdde2('0x27')]=function(_0x12218e,_0xaa5141){var _0x434806={},_0x1ca4fd={},_0x565916={'count':0x0,'rows':[]};var _0x408606=_['map'](db[_0xdde2('0x28')][_0xdde2('0x29')],function(_0x10207f){return{'name':_0x10207f[_0xdde2('0x2a')],'type':_0x10207f['type'][_0xdde2('0x2b')]};});_0x1ca4fd[_0xdde2('0x2c')]=_[_0xdde2('0x2d')](_0x408606,_0xdde2('0x26'));_0x1ca4fd['query']=_['keys'](_0x12218e[_0xdde2('0x2e')]);_0x1ca4fd[_0xdde2('0x2f')]=_['intersection'](_0x1ca4fd[_0xdde2('0x2c')],_0x1ca4fd[_0xdde2('0x2e')]);_0x434806['attributes']=_[_0xdde2('0x30')](_0x1ca4fd[_0xdde2('0x2c')],qs[_0xdde2('0x31')](_0x12218e[_0xdde2('0x2e')][_0xdde2('0x31')]));_0x434806[_0xdde2('0x32')]=_0x434806['attributes'][_0xdde2('0x33')]?_0x434806[_0xdde2('0x32')]:_0x1ca4fd[_0xdde2('0x2c')];if(!_0x12218e[_0xdde2('0x2e')][_0xdde2('0x34')](_0xdde2('0x35'))){_0x434806[_0xdde2('0x1e')]=qs[_0xdde2('0x1e')](_0x12218e[_0xdde2('0x2e')][_0xdde2('0x1e')]);_0x434806[_0xdde2('0x1f')]=qs[_0xdde2('0x1f')](_0x12218e['query'][_0xdde2('0x1f')]);}_0x434806[_0xdde2('0x36')]=qs[_0xdde2('0x37')](_0x12218e[_0xdde2('0x2e')][_0xdde2('0x37')]);_0x434806[_0xdde2('0x38')]=qs[_0xdde2('0x2f')](_[_0xdde2('0x39')](_0x12218e[_0xdde2('0x2e')],_0x1ca4fd['filters']),_0x408606);if(_0x12218e[_0xdde2('0x2e')][_0xdde2('0x3a')]){_0x434806[_0xdde2('0x38')]=_[_0xdde2('0x3b')](_0x434806[_0xdde2('0x38')],{'$or':_[_0xdde2('0x2d')](_0x408606,function(_0xdcdefa){if(_0xdcdefa['type']!==_0xdde2('0x3c')){var _0x253bcb={};_0x253bcb[_0xdcdefa[_0xdde2('0x26')]]={'$like':'%'+_0x12218e['query'][_0xdde2('0x3a')]+'%'};return _0x253bcb;}})});}_0x434806=_[_0xdde2('0x3b')]({},_0x434806,_0x12218e[_0xdde2('0x3d')]);var _0x11f8d2={'where':_0x434806['where']};return db[_0xdde2('0x28')][_0xdde2('0x3e')](_0x11f8d2)[_0xdde2('0x24')](function(_0x37f2fa){_0x565916['count']=_0x37f2fa;if(_0x12218e[_0xdde2('0x2e')]['includeAll']){_0x434806[_0xdde2('0x3f')]=[{'all':!![]}];}return db[_0xdde2('0x28')][_0xdde2('0x40')](_0x434806);})[_0xdde2('0x24')](function(_0x628171){_0x565916[_0xdde2('0x41')]=_0x628171;return _0x565916;})[_0xdde2('0x24')](respondWithFilteredResult(_0xaa5141,_0x434806))[_0xdde2('0x42')](handleError(_0xaa5141,null));};exports['show']=function(_0x2a4f3c,_0x37a0d9){var _0x362e37={'raw':!![],'where':{'id':_0x2a4f3c[_0xdde2('0x43')]['id']}},_0x57a07c={};_0x57a07c['model']=_[_0xdde2('0x44')](db['OpenchannelTransferReport']['rawAttributes']);_0x57a07c[_0xdde2('0x2e')]=_[_0xdde2('0x44')](_0x2a4f3c['query']);_0x57a07c[_0xdde2('0x2f')]=_[_0xdde2('0x30')](_0x57a07c[_0xdde2('0x2c')],_0x57a07c[_0xdde2('0x2e')]);_0x362e37[_0xdde2('0x32')]=_['intersection'](_0x57a07c['model'],qs[_0xdde2('0x31')](_0x2a4f3c[_0xdde2('0x2e')][_0xdde2('0x31')]));_0x362e37[_0xdde2('0x32')]=_0x362e37[_0xdde2('0x32')][_0xdde2('0x33')]?_0x362e37[_0xdde2('0x32')]:_0x57a07c[_0xdde2('0x2c')];if(_0x2a4f3c[_0xdde2('0x2e')][_0xdde2('0x45')]){_0x362e37[_0xdde2('0x3f')]=[{'all':!![]}];}_0x362e37=_[_0xdde2('0x3b')]({},_0x362e37,_0x2a4f3c[_0xdde2('0x3d')]);return db[_0xdde2('0x28')]['find'](_0x362e37)[_0xdde2('0x24')](handleEntityNotFound(_0x37a0d9,null))['then'](respondWithResult(_0x37a0d9,null))[_0xdde2('0x42')](handleError(_0x37a0d9,null));};exports['create']=function(_0x366f54,_0x167f33){return db['OpenchannelTransferReport']['create'](_0x366f54[_0xdde2('0x46')],{})[_0xdde2('0x24')](respondWithResult(_0x167f33,0xc9))[_0xdde2('0x42')](handleError(_0x167f33,null));};exports[_0xdde2('0x47')]=function(_0x279cbf,_0x1c0f8f){if(_0x279cbf[_0xdde2('0x46')]['id']){delete _0x279cbf[_0xdde2('0x46')]['id'];}return db[_0xdde2('0x28')]['find']({'where':{'id':_0x279cbf[_0xdde2('0x43')]['id']}})['then'](handleEntityNotFound(_0x1c0f8f,null))['then'](saveUpdates(_0x279cbf[_0xdde2('0x46')],null))['then'](respondWithResult(_0x1c0f8f,null))[_0xdde2('0x42')](handleError(_0x1c0f8f,null));};exports['destroy']=function(_0x3cbbb3,_0x1bf117){return db[_0xdde2('0x28')][_0xdde2('0x48')]({'where':{'id':_0x3cbbb3[_0xdde2('0x43')]['id']}})['then'](handleEntityNotFound(_0x1bf117,null))['then'](removeEntity(_0x1bf117,null))[_0xdde2('0x42')](handleError(_0x1bf117,null));};exports[_0xdde2('0x49')]=function(_0x580584,_0x132d8f){return db[_0xdde2('0x28')][_0xdde2('0x49')]()[_0xdde2('0x24')](respondWithResult(_0x132d8f,null))['catch'](handleError(_0x132d8f,null));};
\ No newline at end of file
+var _0x1e5f=['sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','options','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','update','then','destroy','sendStatus','error','stack','name','index','map','OpenchannelTransferReport','rawAttributes','type','key','keys','filters','intersection','query','attributes','fields','length','model','hasOwnProperty','order'];(function(_0x49bdc4,_0x1e2507){var _0x1f7437=function(_0x25a9f9){while(--_0x25a9f9){_0x49bdc4['push'](_0x49bdc4['shift']());}};_0x1f7437(++_0x1e2507);}(_0x1e5f,0xae));var _0xf1e5=function(_0x71cd05,_0x36ac11){_0x71cd05=_0x71cd05-0x0;var _0x59c9e7=_0x1e5f[_0x71cd05];return _0x59c9e7;};'use strict';var emlformat=require(_0xf1e5('0x0'));var rimraf=require(_0xf1e5('0x1'));var zipdir=require(_0xf1e5('0x2'));var jsonpatch=require(_0xf1e5('0x3'));var rp=require(_0xf1e5('0x4'));var moment=require(_0xf1e5('0x5'));var BPromise=require(_0xf1e5('0x6'));var Mustache=require(_0xf1e5('0x7'));var util=require(_0xf1e5('0x8'));var path=require('path');var sox=require(_0xf1e5('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf1e5('0xa'));var _=require(_0xf1e5('0xb'));var squel=require(_0xf1e5('0xc'));var crypto=require(_0xf1e5('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf1e5('0xe'));var toCsv=require(_0xf1e5('0xf'));var querystring=require(_0xf1e5('0x10'));var Papa=require(_0xf1e5('0x11'));var Redis=require(_0xf1e5('0x12'));var authService=require(_0xf1e5('0x13'));var qs=require(_0xf1e5('0x14'));var as=require(_0xf1e5('0x15'));var hardwareService=require(_0xf1e5('0x16'));var logger=require(_0xf1e5('0x17'))('api');var utils=require('../../config/utils');var config=require(_0xf1e5('0x18'));var licenseUtil=require(_0xf1e5('0x19'));var db=require(_0xf1e5('0x1a'))['db'];function respondWithStatusCode(_0xba064,_0x337de7){_0x337de7=_0x337de7||0xcc;return function(_0x22b92a){if(_0x22b92a){return _0xba064['sendStatus'](_0x337de7);}return _0xba064[_0xf1e5('0x1b')](_0x337de7)[_0xf1e5('0x1c')]();};}function respondWithResult(_0x26c793,_0x36cae2){_0x36cae2=_0x36cae2||0xc8;return function(_0xbc4a94){if(_0xbc4a94){return _0x26c793['status'](_0x36cae2)[_0xf1e5('0x1d')](_0xbc4a94);}};}function respondWithFilteredResult(_0x28823,_0x48b461){return function(_0x403868){if(_0x403868){var _0x21df31=typeof _0x48b461[_0xf1e5('0x1e')]===_0xf1e5('0x1f')&&typeof _0x48b461['limit']===_0xf1e5('0x1f');var _0xe3bbf3=_0x403868[_0xf1e5('0x20')];var _0x4788b3=_0x21df31?0x0:_0x48b461[_0xf1e5('0x1e')];var _0x21c54a=_0x21df31?_0x403868[_0xf1e5('0x20')]:_0x48b461[_0xf1e5('0x1e')]+_0x48b461[_0xf1e5('0x21')];var _0x32bb91;if(_0x21c54a>=_0xe3bbf3){_0x21c54a=_0xe3bbf3;_0x32bb91=0xc8;}else{_0x32bb91=0xce;}_0x28823[_0xf1e5('0x1b')](_0x32bb91);return _0x28823[_0xf1e5('0x22')](_0xf1e5('0x23'),_0x4788b3+'-'+_0x21c54a+'/'+_0xe3bbf3)[_0xf1e5('0x1d')](_0x403868);}return null;};}function patchUpdates(_0x153adc){return function(_0x58d777){try{jsonpatch[_0xf1e5('0x24')](_0x58d777,_0x153adc,!![]);}catch(_0x2383eb){return BPromise['reject'](_0x2383eb);}return _0x58d777['save']();};}function saveUpdates(_0x202020,_0x1a56f2){return function(_0xc0da65){if(_0xc0da65){return _0xc0da65[_0xf1e5('0x25')](_0x202020)[_0xf1e5('0x26')](function(_0xbbb446){return _0xbbb446;});}return null;};}function removeEntity(_0x3c4bba,_0x1d5d0d){return function(_0x15c332){if(_0x15c332){return _0x15c332[_0xf1e5('0x27')]()[_0xf1e5('0x26')](function(){_0x3c4bba[_0xf1e5('0x1b')](0xcc)[_0xf1e5('0x1c')]();});}};}function handleEntityNotFound(_0xfc9fa,_0x47542b){return function(_0x553a1c){if(!_0x553a1c){_0xfc9fa[_0xf1e5('0x28')](0x194);}return _0x553a1c;};}function handleError(_0x249038,_0x668eb2){_0x668eb2=_0x668eb2||0x1f4;return function(_0x88158e){logger[_0xf1e5('0x29')](_0x88158e[_0xf1e5('0x2a')]);if(_0x88158e['name']){delete _0x88158e[_0xf1e5('0x2b')];}_0x249038[_0xf1e5('0x1b')](_0x668eb2)['send'](_0x88158e);};}exports[_0xf1e5('0x2c')]=function(_0x6bf3f7,_0x4cc1ff){var _0x36ea06={},_0x173254={},_0x3d911e={'count':0x0,'rows':[]};var _0x4f5e1c=_[_0xf1e5('0x2d')](db[_0xf1e5('0x2e')][_0xf1e5('0x2f')],function(_0x14e955){return{'name':_0x14e955['fieldName'],'type':_0x14e955[_0xf1e5('0x30')][_0xf1e5('0x31')]};});_0x173254['model']=_['map'](_0x4f5e1c,_0xf1e5('0x2b'));_0x173254['query']=_[_0xf1e5('0x32')](_0x6bf3f7['query']);_0x173254[_0xf1e5('0x33')]=_[_0xf1e5('0x34')](_0x173254['model'],_0x173254[_0xf1e5('0x35')]);_0x36ea06[_0xf1e5('0x36')]=_[_0xf1e5('0x34')](_0x173254['model'],qs[_0xf1e5('0x37')](_0x6bf3f7[_0xf1e5('0x35')]['fields']));_0x36ea06['attributes']=_0x36ea06['attributes'][_0xf1e5('0x38')]?_0x36ea06[_0xf1e5('0x36')]:_0x173254[_0xf1e5('0x39')];if(!_0x6bf3f7[_0xf1e5('0x35')][_0xf1e5('0x3a')]('nolimit')){_0x36ea06[_0xf1e5('0x21')]=qs['limit'](_0x6bf3f7[_0xf1e5('0x35')][_0xf1e5('0x21')]);_0x36ea06['offset']=qs['offset'](_0x6bf3f7[_0xf1e5('0x35')]['offset']);}_0x36ea06[_0xf1e5('0x3b')]=qs[_0xf1e5('0x3c')](_0x6bf3f7[_0xf1e5('0x35')]['sort']);_0x36ea06['where']=qs['filters'](_[_0xf1e5('0x3d')](_0x6bf3f7[_0xf1e5('0x35')],_0x173254[_0xf1e5('0x33')]),_0x4f5e1c);if(_0x6bf3f7[_0xf1e5('0x35')][_0xf1e5('0x3e')]){_0x36ea06[_0xf1e5('0x3f')]=_[_0xf1e5('0x40')](_0x36ea06[_0xf1e5('0x3f')],{'$or':_[_0xf1e5('0x2d')](_0x4f5e1c,function(_0x50cc6f){if(_0x50cc6f['type']!==_0xf1e5('0x41')){var _0x1cf030={};_0x1cf030[_0x50cc6f[_0xf1e5('0x2b')]]={'$like':'%'+_0x6bf3f7[_0xf1e5('0x35')][_0xf1e5('0x3e')]+'%'};return _0x1cf030;}})});}_0x36ea06=_['merge']({},_0x36ea06,_0x6bf3f7['options']);var _0x2dcd91={'where':_0x36ea06[_0xf1e5('0x3f')]};return db[_0xf1e5('0x2e')][_0xf1e5('0x20')](_0x2dcd91)[_0xf1e5('0x26')](function(_0x49ebf8){_0x3d911e[_0xf1e5('0x20')]=_0x49ebf8;if(_0x6bf3f7['query'][_0xf1e5('0x42')]){_0x36ea06[_0xf1e5('0x43')]=[{'all':!![]}];}return db[_0xf1e5('0x2e')][_0xf1e5('0x44')](_0x36ea06);})[_0xf1e5('0x26')](function(_0x663e22){_0x3d911e[_0xf1e5('0x45')]=_0x663e22;return _0x3d911e;})[_0xf1e5('0x26')](respondWithFilteredResult(_0x4cc1ff,_0x36ea06))['catch'](handleError(_0x4cc1ff,null));};exports[_0xf1e5('0x46')]=function(_0x4fea8a,_0x336150){var _0x4c3a28={'raw':!![],'where':{'id':_0x4fea8a[_0xf1e5('0x47')]['id']}},_0x321da8={};_0x321da8[_0xf1e5('0x39')]=_[_0xf1e5('0x32')](db[_0xf1e5('0x2e')][_0xf1e5('0x2f')]);_0x321da8['query']=_['keys'](_0x4fea8a[_0xf1e5('0x35')]);_0x321da8[_0xf1e5('0x33')]=_[_0xf1e5('0x34')](_0x321da8[_0xf1e5('0x39')],_0x321da8['query']);_0x4c3a28[_0xf1e5('0x36')]=_[_0xf1e5('0x34')](_0x321da8[_0xf1e5('0x39')],qs[_0xf1e5('0x37')](_0x4fea8a[_0xf1e5('0x35')][_0xf1e5('0x37')]));_0x4c3a28[_0xf1e5('0x36')]=_0x4c3a28[_0xf1e5('0x36')][_0xf1e5('0x38')]?_0x4c3a28[_0xf1e5('0x36')]:_0x321da8[_0xf1e5('0x39')];if(_0x4fea8a[_0xf1e5('0x35')][_0xf1e5('0x42')]){_0x4c3a28[_0xf1e5('0x43')]=[{'all':!![]}];}_0x4c3a28=_[_0xf1e5('0x40')]({},_0x4c3a28,_0x4fea8a[_0xf1e5('0x48')]);return db[_0xf1e5('0x2e')][_0xf1e5('0x49')](_0x4c3a28)[_0xf1e5('0x26')](handleEntityNotFound(_0x336150,null))[_0xf1e5('0x26')](respondWithResult(_0x336150,null))[_0xf1e5('0x4a')](handleError(_0x336150,null));};exports['create']=function(_0x2124c8,_0x1e82d0){return db[_0xf1e5('0x2e')][_0xf1e5('0x4b')](_0x2124c8[_0xf1e5('0x4c')],{})['then'](respondWithResult(_0x1e82d0,0xc9))[_0xf1e5('0x4a')](handleError(_0x1e82d0,null));};exports[_0xf1e5('0x25')]=function(_0x2151bd,_0x28b855){if(_0x2151bd[_0xf1e5('0x4c')]['id']){delete _0x2151bd[_0xf1e5('0x4c')]['id'];}return db['OpenchannelTransferReport'][_0xf1e5('0x49')]({'where':{'id':_0x2151bd[_0xf1e5('0x47')]['id']}})[_0xf1e5('0x26')](handleEntityNotFound(_0x28b855,null))[_0xf1e5('0x26')](saveUpdates(_0x2151bd[_0xf1e5('0x4c')],null))[_0xf1e5('0x26')](respondWithResult(_0x28b855,null))['catch'](handleError(_0x28b855,null));};exports[_0xf1e5('0x27')]=function(_0x1c25cf,_0x2b151e){return db['OpenchannelTransferReport'][_0xf1e5('0x49')]({'where':{'id':_0x1c25cf[_0xf1e5('0x47')]['id']}})[_0xf1e5('0x26')](handleEntityNotFound(_0x2b151e,null))[_0xf1e5('0x26')](removeEntity(_0x2b151e,null))[_0xf1e5('0x4a')](handleError(_0x2b151e,null));};exports[_0xf1e5('0x4d')]=function(_0xd27270,_0x55b033){return db[_0xf1e5('0x2e')][_0xf1e5('0x4d')]()['then'](respondWithResult(_0x55b033,null))['catch'](handleError(_0x55b033,null));};
\ No newline at end of file
index 4cb0630..9a84cc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8d3=['OpenchannelTransferReport','report_openchannel_transfer','uniqueid','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','exports','define'];(function(_0x51be5a,_0x4493d2){var _0x7e5382=function(_0x115452){while(--_0x115452){_0x51be5a['push'](_0x51be5a['shift']());}};_0x7e5382(++_0x4493d2);}(_0xd8d3,0xb9));var _0x3d8d=function(_0x35609b,_0x43e28a){_0x35609b=_0x35609b-0x0;var _0x12bbb3=_0xd8d3[_0x35609b];return _0x12bbb3;};'use strict';var _=require(_0x3d8d('0x0'));var util=require(_0x3d8d('0x1'));var logger=require(_0x3d8d('0x2'))(_0x3d8d('0x3'));var moment=require('moment');var BPromise=require(_0x3d8d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3d8d('0x5'));var rimraf=require(_0x3d8d('0x6'));var config=require(_0x3d8d('0x7'));var attributes=require(_0x3d8d('0x8'));module[_0x3d8d('0x9')]=function(_0xbee1bd,_0x4996e5){return _0xbee1bd[_0x3d8d('0xa')](_0x3d8d('0xb'),attributes,{'tableName':_0x3d8d('0xc'),'paranoid':![],'indexes':[{'name':_0x3d8d('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xda14=['define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xda14,0x66));var _0x4da1=function(_0x1d50f2,_0x3c3ec6){_0x1d50f2=_0x1d50f2-0x0;var _0x3769b8=_0xda14[_0x1d50f2];return _0x3769b8;};'use strict';var _=require(_0x4da1('0x0'));var util=require(_0x4da1('0x1'));var logger=require(_0x4da1('0x2'))(_0x4da1('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4da1('0x4'));var fs=require('fs');var path=require(_0x4da1('0x5'));var rimraf=require(_0x4da1('0x6'));var config=require(_0x4da1('0x7'));var attributes=require(_0x4da1('0x8'));module[_0x4da1('0x9')]=function(_0x3d5bf5,_0x442263){return _0x3d5bf5[_0x4da1('0xa')](_0x4da1('0xb'),attributes,{'tableName':_0x4da1('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x4da1('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 8fad73c..2558fa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37a7=['../../mysqldb','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelTransferReport,\x20%s,\x20%s','message','result','catch','lodash','util','ioredis'];(function(_0x295b61,_0x808c6c){var _0x1f9558=function(_0x48a496){while(--_0x48a496){_0x295b61['push'](_0x295b61['shift']());}};_0x1f9558(++_0x808c6c);}(_0x37a7,0x6f));var _0x737a=function(_0x2c5cd6,_0x3e28a5){_0x2c5cd6=_0x2c5cd6-0x0;var _0x1a01f1=_0x37a7[_0x2c5cd6];return _0x1a01f1;};'use strict';var _=require(_0x737a('0x0'));var util=require(_0x737a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x737a('0x2'));var db=require(_0x737a('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x737a('0x4'));var jayson=require(_0x737a('0x5'));var client=jayson[_0x737a('0x6')][_0x737a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2f6800,_0x5cc52c,_0x244850){return new BPromise(function(_0x249898,_0x17c76d){return client[_0x737a('0x8')](_0x2f6800,_0x244850)['then'](function(_0x303f55){logger[_0x737a('0x9')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x5cc52c,_0x737a('0xa'));logger[_0x737a('0xb')](_0x737a('0xc'),_0x5cc52c,_0x737a('0xa'),JSON[_0x737a('0xd')](_0x303f55));if(_0x303f55[_0x737a('0xe')]){if(_0x303f55[_0x737a('0xe')]['code']===0x1f4){logger[_0x737a('0xe')](_0x737a('0xf'),_0x5cc52c,_0x303f55[_0x737a('0xe')][_0x737a('0x10')]);return _0x17c76d(_0x303f55[_0x737a('0xe')][_0x737a('0x10')]);}logger[_0x737a('0xe')](_0x737a('0xf'),_0x5cc52c,_0x303f55['error'][_0x737a('0x10')]);return _0x249898(_0x303f55[_0x737a('0xe')]['message']);}else{logger['info'](_0x737a('0xf'),_0x5cc52c,_0x737a('0xa'));_0x249898(_0x303f55[_0x737a('0x11')][_0x737a('0x10')]);}})[_0x737a('0x12')](function(_0x195749){logger['error'](_0x737a('0xf'),_0x5cc52c,_0x195749);_0x17c76d(_0x195749);});});}
\ No newline at end of file
+var _0x46ed=['OpenchannelTransferReport,\x20%s,\x20%s','debug','OpenchannelTransferReport,\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(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0x46ed,0x168));var _0xd46e=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x46ed[_0x599f41];return _0x2e4d58;};'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')]('OpenchannelTransferReport,\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
index f6dfb84..0c6de72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78c7=['path','connect-timeout','express','Router','fs-extra','../../config/environment','./pause.controller','get','index','/:id','isAuthenticated','show','create','put','delete','destroy','exports','util'];(function(_0xb94ff7,_0x46f8dc){var _0x5951de=function(_0x394fcf){while(--_0x394fcf){_0xb94ff7['push'](_0xb94ff7['shift']());}};_0x5951de(++_0x46f8dc);}(_0x78c7,0x1c1));var _0x778c=function(_0x576170,_0x1712ae){_0x576170=_0x576170-0x0;var _0x397c70=_0x78c7[_0x576170];return _0x397c70;};'use strict';var multer=require('multer');var util=require(_0x778c('0x0'));var path=require(_0x778c('0x1'));var timeout=require(_0x778c('0x2'));var express=require(_0x778c('0x3'));var router=express[_0x778c('0x4')]();var fs_extra=require(_0x778c('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x778c('0x6'));var controller=require(_0x778c('0x7'));router[_0x778c('0x8')]('/',auth['isAuthenticated'](),controller[_0x778c('0x9')]);router[_0x778c('0x8')](_0x778c('0xa'),auth[_0x778c('0xb')](),controller[_0x778c('0xc')]);router['post']('/',auth[_0x778c('0xb')](),controller[_0x778c('0xd')]);router[_0x778c('0xe')](_0x778c('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x778c('0xf')](_0x778c('0xa'),auth[_0x778c('0xb')](),controller[_0x778c('0x10')]);module[_0x778c('0x11')]=router;
\ No newline at end of file
+var _0xa130=['Router','fs-extra','get','isAuthenticated','index','show','create','put','/:id','update','destroy','multer','util','path','connect-timeout','express'];(function(_0x4c2a45,_0x12a8ae){var _0x5e6412=function(_0x37224b){while(--_0x37224b){_0x4c2a45['push'](_0x4c2a45['shift']());}};_0x5e6412(++_0x12a8ae);}(_0xa130,0x1cb));var _0x0a13=function(_0x34391f,_0x1bb9f2){_0x34391f=_0x34391f-0x0;var _0x48fff7=_0xa130[_0x34391f];return _0x48fff7;};'use strict';var multer=require(_0x0a13('0x0'));var util=require(_0x0a13('0x1'));var path=require(_0x0a13('0x2'));var timeout=require(_0x0a13('0x3'));var express=require(_0x0a13('0x4'));var router=express[_0x0a13('0x5')]();var fs_extra=require(_0x0a13('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./pause.controller');router[_0x0a13('0x7')]('/',auth[_0x0a13('0x8')](),controller[_0x0a13('0x9')]);router['get']('/:id',auth[_0x0a13('0x8')](),controller[_0x0a13('0xa')]);router['post']('/',auth['isAuthenticated'](),controller[_0x0a13('0xb')]);router[_0x0a13('0xc')](_0x0a13('0xd'),auth[_0x0a13('0x8')](),controller[_0x0a13('0xe')]);router['delete'](_0x0a13('0xd'),auth[_0x0a13('0x8')](),controller[_0x0a13('0xf')]);module['exports']=router;
\ No newline at end of file
index f5b4e33..65ab9fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7099=['sequelize','exports','STRING','name'];(function(_0x3c40bc,_0x4513d7){var _0x40e857=function(_0x2ab0ea){while(--_0x2ab0ea){_0x3c40bc['push'](_0x3c40bc['shift']());}};_0x40e857(++_0x4513d7);}(_0x7099,0xec));var _0x9709=function(_0x5c732b,_0x39aaf3){_0x5c732b=_0x5c732b-0x0;var _0xeedcfe=_0x7099[_0x5c732b];return _0xeedcfe;};'use strict';var Sequelize=require(_0x9709('0x0'));module[_0x9709('0x1')]={'name':{'type':Sequelize[_0x9709('0x2')],'unique':_0x9709('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x9709('0x2')]}};
\ No newline at end of file
+var _0xe261=['exports','STRING','name','sequelize'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0xe261,0x9f));var _0x1e26=function(_0x72f9c1,_0x1be647){_0x72f9c1=_0x72f9c1-0x0;var _0x3d0701=_0xe261[_0x72f9c1];return _0x3d0701;};'use strict';var Sequelize=require(_0x1e26('0x0'));module[_0x1e26('0x1')]={'name':{'type':Sequelize[_0x1e26('0x2')],'unique':_0x1e26('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x1e26('0x2')]}};
\ No newline at end of file
index 993f02f..0a23e06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec0c=['find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','get','Pauses','UserProfileResource','error','stack','name','send','index','map','Pause','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','rows','catch','show','include','options'];(function(_0xe18f5,_0x3e9953){var _0x2e9ae1=function(_0x12442c){while(--_0x12442c){_0xe18f5['push'](_0xe18f5['shift']());}};_0x2e9ae1(++_0x3e9953);}(_0xec0c,0x149));var _0xcec0=function(_0x49445f,_0x1f07c9){_0x49445f=_0x49445f-0x0;var _0x15c5e2=_0xec0c[_0x49445f];return _0x15c5e2;};'use strict';var emlformat=require(_0xcec0('0x0'));var rimraf=require(_0xcec0('0x1'));var zipdir=require(_0xcec0('0x2'));var jsonpatch=require(_0xcec0('0x3'));var rp=require(_0xcec0('0x4'));var moment=require('moment');var BPromise=require(_0xcec0('0x5'));var Mustache=require('mustache');var util=require(_0xcec0('0x6'));var path=require(_0xcec0('0x7'));var sox=require(_0xcec0('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcec0('0x9'));var _=require(_0xcec0('0xa'));var squel=require('squel');var crypto=require(_0xcec0('0xb'));var jsforce=require(_0xcec0('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xcec0('0xd'));var Papa=require(_0xcec0('0xe'));var Redis=require(_0xcec0('0xf'));var authService=require(_0xcec0('0x10'));var qs=require(_0xcec0('0x11'));var as=require(_0xcec0('0x12'));var hardwareService=require(_0xcec0('0x13'));var logger=require(_0xcec0('0x14'))(_0xcec0('0x15'));var utils=require('../../config/utils');var config=require(_0xcec0('0x16'));var licenseUtil=require(_0xcec0('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xe31c17,_0xac8cf9){_0xac8cf9=_0xac8cf9||0xcc;return function(_0x496ca3){if(_0x496ca3){return _0xe31c17[_0xcec0('0x18')](_0xac8cf9);}return _0xe31c17['status'](_0xac8cf9)[_0xcec0('0x19')]();};}function respondWithResult(_0x1acb93,_0x3b2aab){_0x3b2aab=_0x3b2aab||0xc8;return function(_0x399f3b){if(_0x399f3b){return _0x1acb93[_0xcec0('0x1a')](_0x3b2aab)[_0xcec0('0x1b')](_0x399f3b);}};}function respondWithFilteredResult(_0x59d9e5,_0x4f3ded){return function(_0x1ea966){if(_0x1ea966){var _0x264c94=typeof _0x4f3ded['offset']===_0xcec0('0x1c')&&typeof _0x4f3ded[_0xcec0('0x1d')]===_0xcec0('0x1c');var _0x5a28c6=_0x1ea966[_0xcec0('0x1e')];var _0x3c229c=_0x264c94?0x0:_0x4f3ded[_0xcec0('0x1f')];var _0x4af679=_0x264c94?_0x1ea966[_0xcec0('0x1e')]:_0x4f3ded[_0xcec0('0x1f')]+_0x4f3ded['limit'];var _0x1e1a94;if(_0x4af679>=_0x5a28c6){_0x4af679=_0x5a28c6;_0x1e1a94=0xc8;}else{_0x1e1a94=0xce;}_0x59d9e5[_0xcec0('0x1a')](_0x1e1a94);return _0x59d9e5[_0xcec0('0x20')](_0xcec0('0x21'),_0x3c229c+'-'+_0x4af679+'/'+_0x5a28c6)['json'](_0x1ea966);}return null;};}function patchUpdates(_0x26fba5){return function(_0x589589){try{jsonpatch[_0xcec0('0x22')](_0x589589,_0x26fba5,!![]);}catch(_0x421351){return BPromise['reject'](_0x421351);}return _0x589589['save']();};}function saveUpdates(_0x2a511f,_0x40dfa4){return function(_0x4c0ec2){if(_0x4c0ec2){return _0x4c0ec2[_0xcec0('0x23')](_0x2a511f)['then'](function(_0x47d81d){return _0x47d81d;});}return null;};}function removeEntity(_0x57bb2e,_0x42528a){return function(_0x3f4931){if(_0x3f4931){return _0x3f4931['destroy']()[_0xcec0('0x24')](function(){var _0xfb2f64=_0x3f4931[_0xcec0('0x25')]({'plain':!![]});var _0x517a3c=_0xcec0('0x26');return db[_0xcec0('0x27')]['destroy']({'where':{'type':_0x517a3c,'resourceId':_0xfb2f64['id']}})['then'](function(){return _0x3f4931;});})[_0xcec0('0x24')](function(){_0x57bb2e[_0xcec0('0x1a')](0xcc)[_0xcec0('0x19')]();});}};}function handleEntityNotFound(_0x2a6050,_0x30616b){return function(_0xa163eb){if(!_0xa163eb){_0x2a6050[_0xcec0('0x18')](0x194);}return _0xa163eb;};}function handleError(_0x9c7c96,_0x36bbc0){_0x36bbc0=_0x36bbc0||0x1f4;return function(_0x5648cb){logger[_0xcec0('0x28')](_0x5648cb[_0xcec0('0x29')]);if(_0x5648cb[_0xcec0('0x2a')]){delete _0x5648cb['name'];}_0x9c7c96['status'](_0x36bbc0)[_0xcec0('0x2b')](_0x5648cb);};}exports[_0xcec0('0x2c')]=function(_0x474f92,_0x5707f9){var _0x17b306={},_0x423dd9={},_0x56a95c={'count':0x0,'rows':[]};var _0x1242ea=_[_0xcec0('0x2d')](db[_0xcec0('0x2e')][_0xcec0('0x2f')],function(_0x33b28b){return{'name':_0x33b28b['fieldName'],'type':_0x33b28b[_0xcec0('0x30')][_0xcec0('0x31')]};});_0x423dd9[_0xcec0('0x32')]=_[_0xcec0('0x2d')](_0x1242ea,_0xcec0('0x2a'));_0x423dd9[_0xcec0('0x33')]=_[_0xcec0('0x34')](_0x474f92['query']);_0x423dd9[_0xcec0('0x35')]=_[_0xcec0('0x36')](_0x423dd9['model'],_0x423dd9[_0xcec0('0x33')]);_0x17b306['attributes']=_[_0xcec0('0x36')](_0x423dd9[_0xcec0('0x32')],qs['fields'](_0x474f92[_0xcec0('0x33')][_0xcec0('0x37')]));_0x17b306[_0xcec0('0x38')]=_0x17b306[_0xcec0('0x38')][_0xcec0('0x39')]?_0x17b306['attributes']:_0x423dd9['model'];if(!_0x474f92[_0xcec0('0x33')]['hasOwnProperty'](_0xcec0('0x3a'))){_0x17b306[_0xcec0('0x1d')]=qs[_0xcec0('0x1d')](_0x474f92[_0xcec0('0x33')][_0xcec0('0x1d')]);_0x17b306[_0xcec0('0x1f')]=qs[_0xcec0('0x1f')](_0x474f92[_0xcec0('0x33')][_0xcec0('0x1f')]);}_0x17b306[_0xcec0('0x3b')]=qs[_0xcec0('0x3c')](_0x474f92['query'][_0xcec0('0x3c')]);_0x17b306[_0xcec0('0x3d')]=qs[_0xcec0('0x35')](_['pick'](_0x474f92[_0xcec0('0x33')],_0x423dd9[_0xcec0('0x35')]),_0x1242ea);if(_0x474f92[_0xcec0('0x33')][_0xcec0('0x3e')]){_0x17b306[_0xcec0('0x3d')]=_[_0xcec0('0x3f')](_0x17b306[_0xcec0('0x3d')],{'$or':_[_0xcec0('0x2d')](_0x1242ea,function(_0x544584){if(_0x544584[_0xcec0('0x30')]!==_0xcec0('0x40')){var _0x57e7ee={};_0x57e7ee[_0x544584[_0xcec0('0x2a')]]={'$like':'%'+_0x474f92['query']['filter']+'%'};return _0x57e7ee;}})});}_0x17b306=_['merge']({},_0x17b306,_0x474f92['options']);var _0x229ea9={'where':_0x17b306[_0xcec0('0x3d')]};return db[_0xcec0('0x2e')][_0xcec0('0x1e')](_0x229ea9)[_0xcec0('0x24')](function(_0x5d30d8){_0x56a95c['count']=_0x5d30d8;if(_0x474f92[_0xcec0('0x33')][_0xcec0('0x41')]){_0x17b306['include']=[{'all':!![]}];}return db[_0xcec0('0x2e')]['findAll'](_0x17b306);})[_0xcec0('0x24')](function(_0x5780d2){_0x56a95c[_0xcec0('0x42')]=_0x5780d2;return _0x56a95c;})[_0xcec0('0x24')](respondWithFilteredResult(_0x5707f9,_0x17b306))[_0xcec0('0x43')](handleError(_0x5707f9,null));};exports[_0xcec0('0x44')]=function(_0x2f3578,_0x62837f){var _0x594b6f={'raw':!![],'where':{'id':_0x2f3578['params']['id']}},_0x165aa1={};_0x165aa1[_0xcec0('0x32')]=_['keys'](db['Pause'][_0xcec0('0x2f')]);_0x165aa1['query']=_[_0xcec0('0x34')](_0x2f3578[_0xcec0('0x33')]);_0x165aa1[_0xcec0('0x35')]=_[_0xcec0('0x36')](_0x165aa1[_0xcec0('0x32')],_0x165aa1[_0xcec0('0x33')]);_0x594b6f[_0xcec0('0x38')]=_['intersection'](_0x165aa1['model'],qs[_0xcec0('0x37')](_0x2f3578[_0xcec0('0x33')][_0xcec0('0x37')]));_0x594b6f['attributes']=_0x594b6f[_0xcec0('0x38')][_0xcec0('0x39')]?_0x594b6f[_0xcec0('0x38')]:_0x165aa1[_0xcec0('0x32')];if(_0x2f3578[_0xcec0('0x33')][_0xcec0('0x41')]){_0x594b6f[_0xcec0('0x45')]=[{'all':!![]}];}_0x594b6f=_[_0xcec0('0x3f')]({},_0x594b6f,_0x2f3578[_0xcec0('0x46')]);return db[_0xcec0('0x2e')][_0xcec0('0x47')](_0x594b6f)[_0xcec0('0x24')](handleEntityNotFound(_0x62837f,null))[_0xcec0('0x24')](respondWithResult(_0x62837f,null))[_0xcec0('0x43')](handleError(_0x62837f,null));};exports[_0xcec0('0x48')]=function(_0x47174d,_0x413d21){return db[_0xcec0('0x2e')][_0xcec0('0x48')](_0x47174d[_0xcec0('0x49')],{})[_0xcec0('0x24')](function(_0x633e0a){var _0x522f55=_0x47174d[_0xcec0('0x4a')][_0xcec0('0x25')]({'plain':!![]});if(!_0x522f55)throw new Error(_0xcec0('0x4b'));if(_0x522f55['role']===_0xcec0('0x4a')){var _0x13ebb0=_0x633e0a['get']({'plain':!![]});var _0x132552=_0xcec0('0x26');return db[_0xcec0('0x4c')][_0xcec0('0x47')]({'where':{'name':_0x132552,'userProfileId':_0x522f55['userProfileId']},'raw':!![]})[_0xcec0('0x24')](function(_0x5c9c1e){if(_0x5c9c1e&&_0x5c9c1e[_0xcec0('0x4d')]===0x0){return db[_0xcec0('0x27')][_0xcec0('0x48')]({'name':_0x13ebb0['name'],'resourceId':_0x13ebb0['id'],'type':_0x5c9c1e['name'],'sectionId':_0x5c9c1e['id']},{})[_0xcec0('0x24')](function(){return _0x633e0a;});}else{return _0x633e0a;}})['catch'](function(_0x1872dc){logger[_0xcec0('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1872dc);throw _0x1872dc;});}return _0x633e0a;})['then'](respondWithResult(_0x413d21,0xc9))['catch'](handleError(_0x413d21,null));};exports[_0xcec0('0x23')]=function(_0x520b8b,_0x4ea3e8){if(_0x520b8b[_0xcec0('0x49')]['id']){delete _0x520b8b[_0xcec0('0x49')]['id'];}return db[_0xcec0('0x2e')][_0xcec0('0x47')]({'where':{'id':_0x520b8b[_0xcec0('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4ea3e8,null))[_0xcec0('0x24')](saveUpdates(_0x520b8b[_0xcec0('0x49')],null))[_0xcec0('0x24')](respondWithResult(_0x4ea3e8,null))[_0xcec0('0x43')](handleError(_0x4ea3e8,null));};exports[_0xcec0('0x4f')]=function(_0x3ab010,_0x5df2ee){return db['Pause'][_0xcec0('0x47')]({'where':{'id':_0x3ab010[_0xcec0('0x4e')]['id']}})[_0xcec0('0x24')](handleEntityNotFound(_0x5df2ee,null))[_0xcec0('0x24')](removeEntity(_0x5df2ee,null))['catch'](handleError(_0x5df2ee,null));};
\ No newline at end of file
+var _0xec9f=['get','Pauses','UserProfileResource','error','stack','name','map','Pause','rawAttributes','type','model','query','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy'];(function(_0x47cc56,_0x425420){var _0xdbe67f=function(_0x2a77a3){while(--_0x2a77a3){_0x47cc56['push'](_0x47cc56['shift']());}};_0xdbe67f(++_0x425420);}(_0xec9f,0xcd));var _0xfec9=function(_0x2719e3,_0x562a76){_0x2719e3=_0x2719e3-0x0;var _0x138189=_0xec9f[_0x2719e3];return _0x138189;};'use strict';var emlformat=require(_0xfec9('0x0'));var rimraf=require(_0xfec9('0x1'));var zipdir=require(_0xfec9('0x2'));var jsonpatch=require(_0xfec9('0x3'));var rp=require(_0xfec9('0x4'));var moment=require(_0xfec9('0x5'));var BPromise=require(_0xfec9('0x6'));var Mustache=require(_0xfec9('0x7'));var util=require('util');var path=require(_0xfec9('0x8'));var sox=require(_0xfec9('0x9'));var csv=require(_0xfec9('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfec9('0xb'));var _=require(_0xfec9('0xc'));var squel=require(_0xfec9('0xd'));var crypto=require('crypto');var jsforce=require(_0xfec9('0xe'));var deskjs=require(_0xfec9('0xf'));var toCsv=require(_0xfec9('0xa'));var querystring=require(_0xfec9('0x10'));var Papa=require(_0xfec9('0x11'));var Redis=require('ioredis');var authService=require(_0xfec9('0x12'));var qs=require(_0xfec9('0x13'));var as=require(_0xfec9('0x14'));var hardwareService=require(_0xfec9('0x15'));var logger=require('../../config/logger')(_0xfec9('0x16'));var utils=require('../../config/utils');var config=require(_0xfec9('0x17'));var licenseUtil=require(_0xfec9('0x18'));var db=require(_0xfec9('0x19'))['db'];function respondWithStatusCode(_0x2cef33,_0x30757a){_0x30757a=_0x30757a||0xcc;return function(_0x41ea53){if(_0x41ea53){return _0x2cef33[_0xfec9('0x1a')](_0x30757a);}return _0x2cef33[_0xfec9('0x1b')](_0x30757a)[_0xfec9('0x1c')]();};}function respondWithResult(_0x27d691,_0x254261){_0x254261=_0x254261||0xc8;return function(_0x3bba11){if(_0x3bba11){return _0x27d691[_0xfec9('0x1b')](_0x254261)[_0xfec9('0x1d')](_0x3bba11);}};}function respondWithFilteredResult(_0x59c002,_0x4e798a){return function(_0x15c0b2){if(_0x15c0b2){var _0x2ff6a6=typeof _0x4e798a[_0xfec9('0x1e')]===_0xfec9('0x1f')&&typeof _0x4e798a['limit']===_0xfec9('0x1f');var _0x1c1a1a=_0x15c0b2[_0xfec9('0x20')];var _0x46e001=_0x2ff6a6?0x0:_0x4e798a[_0xfec9('0x1e')];var _0x138923=_0x2ff6a6?_0x15c0b2[_0xfec9('0x20')]:_0x4e798a[_0xfec9('0x1e')]+_0x4e798a[_0xfec9('0x21')];var _0x53b5ca;if(_0x138923>=_0x1c1a1a){_0x138923=_0x1c1a1a;_0x53b5ca=0xc8;}else{_0x53b5ca=0xce;}_0x59c002['status'](_0x53b5ca);return _0x59c002[_0xfec9('0x22')](_0xfec9('0x23'),_0x46e001+'-'+_0x138923+'/'+_0x1c1a1a)[_0xfec9('0x1d')](_0x15c0b2);}return null;};}function patchUpdates(_0x475e62){return function(_0x178bc3){try{jsonpatch[_0xfec9('0x24')](_0x178bc3,_0x475e62,!![]);}catch(_0x70d88e){return BPromise[_0xfec9('0x25')](_0x70d88e);}return _0x178bc3['save']();};}function saveUpdates(_0x34dd0e,_0x4eb3b4){return function(_0x2e0331){if(_0x2e0331){return _0x2e0331[_0xfec9('0x26')](_0x34dd0e)[_0xfec9('0x27')](function(_0x10188a){return _0x10188a;});}return null;};}function removeEntity(_0x27cc55,_0x18a6a1){return function(_0x6efd72){if(_0x6efd72){return _0x6efd72[_0xfec9('0x28')]()['then'](function(){var _0x337e22=_0x6efd72[_0xfec9('0x29')]({'plain':!![]});var _0x4d96d7=_0xfec9('0x2a');return db[_0xfec9('0x2b')][_0xfec9('0x28')]({'where':{'type':_0x4d96d7,'resourceId':_0x337e22['id']}})[_0xfec9('0x27')](function(){return _0x6efd72;});})[_0xfec9('0x27')](function(){_0x27cc55[_0xfec9('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x479a61,_0x192670){return function(_0x4acb06){if(!_0x4acb06){_0x479a61[_0xfec9('0x1a')](0x194);}return _0x4acb06;};}function handleError(_0x5b2d7b,_0x57f94a){_0x57f94a=_0x57f94a||0x1f4;return function(_0x455e7f){logger[_0xfec9('0x2c')](_0x455e7f[_0xfec9('0x2d')]);if(_0x455e7f['name']){delete _0x455e7f[_0xfec9('0x2e')];}_0x5b2d7b['status'](_0x57f94a)['send'](_0x455e7f);};}exports['index']=function(_0x3b47d5,_0x40f346){var _0x37f03f={},_0x42e52d={},_0x3d082a={'count':0x0,'rows':[]};var _0x564d75=_[_0xfec9('0x2f')](db[_0xfec9('0x30')][_0xfec9('0x31')],function(_0x19284a){return{'name':_0x19284a['fieldName'],'type':_0x19284a[_0xfec9('0x32')]['key']};});_0x42e52d[_0xfec9('0x33')]=_[_0xfec9('0x2f')](_0x564d75,_0xfec9('0x2e'));_0x42e52d[_0xfec9('0x34')]=_['keys'](_0x3b47d5['query']);_0x42e52d[_0xfec9('0x35')]=_[_0xfec9('0x36')](_0x42e52d[_0xfec9('0x33')],_0x42e52d[_0xfec9('0x34')]);_0x37f03f[_0xfec9('0x37')]=_[_0xfec9('0x36')](_0x42e52d[_0xfec9('0x33')],qs[_0xfec9('0x38')](_0x3b47d5[_0xfec9('0x34')]['fields']));_0x37f03f[_0xfec9('0x37')]=_0x37f03f[_0xfec9('0x37')][_0xfec9('0x39')]?_0x37f03f[_0xfec9('0x37')]:_0x42e52d[_0xfec9('0x33')];if(!_0x3b47d5[_0xfec9('0x34')]['hasOwnProperty'](_0xfec9('0x3a'))){_0x37f03f[_0xfec9('0x21')]=qs['limit'](_0x3b47d5[_0xfec9('0x34')][_0xfec9('0x21')]);_0x37f03f[_0xfec9('0x1e')]=qs[_0xfec9('0x1e')](_0x3b47d5['query'][_0xfec9('0x1e')]);}_0x37f03f['order']=qs['sort'](_0x3b47d5[_0xfec9('0x34')][_0xfec9('0x3b')]);_0x37f03f[_0xfec9('0x3c')]=qs[_0xfec9('0x35')](_[_0xfec9('0x3d')](_0x3b47d5['query'],_0x42e52d[_0xfec9('0x35')]),_0x564d75);if(_0x3b47d5['query'][_0xfec9('0x3e')]){_0x37f03f['where']=_[_0xfec9('0x3f')](_0x37f03f[_0xfec9('0x3c')],{'$or':_[_0xfec9('0x2f')](_0x564d75,function(_0x4ac35d){if(_0x4ac35d[_0xfec9('0x32')]!==_0xfec9('0x40')){var _0x50f842={};_0x50f842[_0x4ac35d[_0xfec9('0x2e')]]={'$like':'%'+_0x3b47d5[_0xfec9('0x34')]['filter']+'%'};return _0x50f842;}})});}_0x37f03f=_[_0xfec9('0x3f')]({},_0x37f03f,_0x3b47d5[_0xfec9('0x41')]);var _0x369589={'where':_0x37f03f['where']};return db[_0xfec9('0x30')]['count'](_0x369589)['then'](function(_0x13e443){_0x3d082a['count']=_0x13e443;if(_0x3b47d5[_0xfec9('0x34')][_0xfec9('0x42')]){_0x37f03f[_0xfec9('0x43')]=[{'all':!![]}];}return db[_0xfec9('0x30')][_0xfec9('0x44')](_0x37f03f);})[_0xfec9('0x27')](function(_0x4ea0ea){_0x3d082a['rows']=_0x4ea0ea;return _0x3d082a;})[_0xfec9('0x27')](respondWithFilteredResult(_0x40f346,_0x37f03f))[_0xfec9('0x45')](handleError(_0x40f346,null));};exports[_0xfec9('0x46')]=function(_0x59e413,_0xa9b757){var _0x22e952={'raw':!![],'where':{'id':_0x59e413[_0xfec9('0x47')]['id']}},_0x5798e3={};_0x5798e3[_0xfec9('0x33')]=_[_0xfec9('0x48')](db[_0xfec9('0x30')][_0xfec9('0x31')]);_0x5798e3[_0xfec9('0x34')]=_['keys'](_0x59e413[_0xfec9('0x34')]);_0x5798e3['filters']=_[_0xfec9('0x36')](_0x5798e3[_0xfec9('0x33')],_0x5798e3[_0xfec9('0x34')]);_0x22e952['attributes']=_[_0xfec9('0x36')](_0x5798e3[_0xfec9('0x33')],qs[_0xfec9('0x38')](_0x59e413[_0xfec9('0x34')][_0xfec9('0x38')]));_0x22e952[_0xfec9('0x37')]=_0x22e952['attributes']['length']?_0x22e952[_0xfec9('0x37')]:_0x5798e3[_0xfec9('0x33')];if(_0x59e413['query']['includeAll']){_0x22e952[_0xfec9('0x43')]=[{'all':!![]}];}_0x22e952=_[_0xfec9('0x3f')]({},_0x22e952,_0x59e413[_0xfec9('0x41')]);return db[_0xfec9('0x30')][_0xfec9('0x49')](_0x22e952)['then'](handleEntityNotFound(_0xa9b757,null))[_0xfec9('0x27')](respondWithResult(_0xa9b757,null))[_0xfec9('0x45')](handleError(_0xa9b757,null));};exports[_0xfec9('0x4a')]=function(_0x1a3a83,_0x5c5ffc){return db[_0xfec9('0x30')][_0xfec9('0x4a')](_0x1a3a83['body'],{})['then'](function(_0x11284a){var _0x1eb402=_0x1a3a83['user'][_0xfec9('0x29')]({'plain':!![]});if(!_0x1eb402)throw new Error(_0xfec9('0x4b'));if(_0x1eb402['role']===_0xfec9('0x4c')){var _0x388120=_0x11284a[_0xfec9('0x29')]({'plain':!![]});var _0x5ba319='Pauses';return db[_0xfec9('0x4d')]['find']({'where':{'name':_0x5ba319,'userProfileId':_0x1eb402[_0xfec9('0x4e')]},'raw':!![]})[_0xfec9('0x27')](function(_0x2470ac){if(_0x2470ac&&_0x2470ac[_0xfec9('0x4f')]===0x0){return db['UserProfileResource'][_0xfec9('0x4a')]({'name':_0x388120['name'],'resourceId':_0x388120['id'],'type':_0x2470ac[_0xfec9('0x2e')],'sectionId':_0x2470ac['id']},{})[_0xfec9('0x27')](function(){return _0x11284a;});}else{return _0x11284a;}})[_0xfec9('0x45')](function(_0x32210d){logger['error'](_0xfec9('0x50'),_0x32210d);throw _0x32210d;});}return _0x11284a;})['then'](respondWithResult(_0x5c5ffc,0xc9))[_0xfec9('0x45')](handleError(_0x5c5ffc,null));};exports[_0xfec9('0x26')]=function(_0x5a6278,_0x18c225){if(_0x5a6278[_0xfec9('0x51')]['id']){delete _0x5a6278['body']['id'];}return db['Pause'][_0xfec9('0x49')]({'where':{'id':_0x5a6278[_0xfec9('0x47')]['id']}})[_0xfec9('0x27')](handleEntityNotFound(_0x18c225,null))[_0xfec9('0x27')](saveUpdates(_0x5a6278[_0xfec9('0x51')],null))['then'](respondWithResult(_0x18c225,null))[_0xfec9('0x45')](handleError(_0x18c225,null));};exports[_0xfec9('0x28')]=function(_0x1e3125,_0x1f0844){return db[_0xfec9('0x30')][_0xfec9('0x49')]({'where':{'id':_0x1e3125[_0xfec9('0x47')]['id']}})[_0xfec9('0x27')](handleEntityNotFound(_0x1f0844,null))[_0xfec9('0x27')](removeEntity(_0x1f0844,null))[_0xfec9('0x45')](handleError(_0x1f0844,null));};
\ No newline at end of file
index 5530be6..b13416e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Pause','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./pause.attributes'];(function(_0x2aea9e,_0x1f587f){var _0x430b92=function(_0x416c37){while(--_0x416c37){_0x2aea9e['push'](_0x2aea9e['shift']());}};_0x430b92(++_0x1f587f);}(_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':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7217=['../../config/environment','./pause.attributes','exports','define','Pause','tools_pauses','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2a67fe,_0x295c09){var _0x57e726=function(_0x280573){while(--_0x280573){_0x2a67fe['push'](_0x2a67fe['shift']());}};_0x57e726(++_0x295c09);}(_0x7217,0x19e));var _0x7721=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0x7217[_0x3b5250];return _0xc844a1;};'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
index 8e8061c..8c595b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x49babb,_0x7d7b4a){var _0x4d1e22=function(_0x2850f4){while(--_0x2850f4){_0x49babb['push'](_0x49babb['shift']());}};_0x4d1e22(++_0x7d7b4a);}(_0x7a54,0x106));var _0x47a5=function(_0x363339,_0x25304d){_0x363339=_0x363339-0x0;var _0x532696=_0x7a54[_0x363339];return _0x532696;};'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')]('Pause,\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['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ 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(_0x4911cc,_0x4be0e9){var _0xe9af82=function(_0xb4b276){while(--_0xb4b276){_0x4911cc['push'](_0x4911cc['shift']());}};_0xe9af82(++_0x4be0e9);}(_0xb10b,0x12a));var _0xbb10=function(_0x1ea015,_0x5e416a){_0x1ea015=_0x1ea015-0x0;var _0x5ed37f=_0xb10b[_0x1ea015];return _0x5ed37f;};'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 aa1de1a..bd25fcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x303a=['show','/:id/download','download','join','server/files/plugins','originalname','replace','format','%s-%s%s','basename','extname','now','post','single','file','upload','webhookPost','/:id','update','delete','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/webhook'];(function(_0x528e64,_0x5f2d9f){var _0x22dd1e=function(_0x5cf6ad){while(--_0x5cf6ad){_0x528e64['push'](_0x528e64['shift']());}};_0x22dd1e(++_0x5f2d9f);}(_0x303a,0x1a0));var _0xa303=function(_0x32959e,_0x95c759){_0x32959e=_0x32959e-0x0;var _0x379025=_0x303a[_0x32959e];return _0x379025;};'use strict';var multer=require(_0xa303('0x0'));var util=require('util');var path=require(_0xa303('0x1'));var timeout=require(_0xa303('0x2'));var express=require(_0xa303('0x3'));var router=express[_0xa303('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xa303('0x5'));var interaction=require(_0xa303('0x6'));var config=require(_0xa303('0x7'));var controller=require(_0xa303('0x8'));router[_0xa303('0x9')]('/',auth[_0xa303('0xa')](),controller[_0xa303('0xb')]);router[_0xa303('0x9')](_0xa303('0xc'),controller['webhookGet']);router['get']('/:id',auth[_0xa303('0xa')](),controller[_0xa303('0xd')]);router['get'](_0xa303('0xe'),auth['isAuthenticated'](),controller[_0xa303('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x29cd60,_0x17dfcd,_0x382cfd){_0x382cfd(null,path[_0xa303('0x10')](config['root'],_0xa303('0x11')));},'filename':function(_0x4c0169,_0xf5df1e,_0x43a054){_0xf5df1e[_0xa303('0x12')]=_0xf5df1e['originalname'][_0xa303('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x43a054(null,util[_0xa303('0x14')](_0xa303('0x15'),path[_0xa303('0x16')](_0xf5df1e[_0xa303('0x12')],path[_0xa303('0x17')](_0xf5df1e[_0xa303('0x12')])),Date[_0xa303('0x18')](),path['extname'](_0xf5df1e[_0xa303('0x12')])));}})});router[_0xa303('0x19')]('/',upload[_0xa303('0x1a')](_0xa303('0x1b')),controller[_0xa303('0x1c')]);router[_0xa303('0x19')]('/webhook',controller[_0xa303('0x1d')]);router['put'](_0xa303('0x1e'),auth['isAuthenticated'](),controller[_0xa303('0x1f')]);router['delete'](_0xa303('0x1e'),auth[_0xa303('0xa')](),controller[_0xa303('0x20')]);module['exports']=router;
\ No newline at end of file
+var _0x3e74=['originalname','format','%s-%s%s','basename','now','extname','file','upload','post','put','update','delete','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/webhook','webhookGet','/:id','download','diskStorage','join','root'];(function(_0x2a1ba2,_0x5654af){var _0x4c9bc8=function(_0x5dbe38){while(--_0x5dbe38){_0x2a1ba2['push'](_0x2a1ba2['shift']());}};_0x4c9bc8(++_0x5654af);}(_0x3e74,0x175));var _0x43e7=function(_0x188ddd,_0x172a5d){_0x188ddd=_0x188ddd-0x0;var _0x1bb4f9=_0x3e74[_0x188ddd];return _0x1bb4f9;};'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'),controller[_0x43e7('0xb')]);router[_0x43e7('0x7')](_0x43e7('0xc'),auth[_0x43e7('0x8')](),controller['show']);router[_0x43e7('0x7')]('/:id/download',auth['isAuthenticated'](),controller[_0x43e7('0xd')]);var upload=multer({'storage':multer[_0x43e7('0xe')]({'destination':function(_0x5c34f4,_0x2803d9,_0x513707){_0x513707(null,path[_0x43e7('0xf')](config[_0x43e7('0x10')],'server/files/plugins'));},'filename':function(_0x3eb206,_0xc960ea,_0x2718d3){_0xc960ea[_0x43e7('0x11')]=_0xc960ea['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2718d3(null,util[_0x43e7('0x12')](_0x43e7('0x13'),path[_0x43e7('0x14')](_0xc960ea['originalname'],path['extname'](_0xc960ea[_0x43e7('0x11')])),Date[_0x43e7('0x15')](),path[_0x43e7('0x16')](_0xc960ea[_0x43e7('0x11')])));}})});router['post']('/',upload['single'](_0x43e7('0x17')),controller[_0x43e7('0x18')]);router[_0x43e7('0x19')]('/webhook',controller['webhookPost']);router[_0x43e7('0x1a')](_0x43e7('0xc'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x1b')]);router[_0x43e7('0x1c')](_0x43e7('0xc'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x1c')]);module[_0x43e7('0x1d')]=router;
\ No newline at end of file
index 5021584..2859404 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16fc=['BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','ENUM','adminOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','html','script','TEXT','STRING','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'];(function(_0x4b6a6f,_0x3cefe1){var _0xd0c0fe=function(_0x5e83fe){while(--_0x5e83fe){_0x4b6a6f['push'](_0x4b6a6f['shift']());}};_0xd0c0fe(++_0x3cefe1);}(_0x16fc,0x1ab));var _0xc16f=function(_0x2e4ebb,_0x6bd82f){_0x2e4ebb=_0x2e4ebb-0x0;var _0x1506f3=_0x16fc[_0x2e4ebb];return _0x1506f3;};'use strict';var Sequelize=require(_0xc16f('0x0'));module[_0xc16f('0x1')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0xc16f('0x2'),_0xc16f('0x3'))},'description':{'type':Sequelize[_0xc16f('0x4')]},'version':{'type':Sequelize[_0xc16f('0x4')]},'path':{'type':Sequelize[_0xc16f('0x5')],'comment':_0xc16f('0x6')},'active':{'type':Sequelize[_0xc16f('0x7')],'defaultValue':0x0,'comment':_0xc16f('0x8')},'sidebar':{'type':Sequelize[_0xc16f('0x9')](_0xc16f('0xa'),'agentOnly',_0xc16f('0xb'),_0xc16f('0xc')),'defaultValue':'always','comment':_0xc16f('0xd')},'icon':{'type':Sequelize[_0xc16f('0x5')]},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize[_0xc16f('0x5')]},'scriptName':{'type':Sequelize[_0xc16f('0x5')]},'scriptPath':{'type':Sequelize[_0xc16f('0x5')]}};
\ No newline at end of file
+var _0x121e=['never','exports','ENUM','html','script','TEXT','STRING','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always'];(function(_0x259d17,_0x220710){var _0x407535=function(_0x49bc38){while(--_0x49bc38){_0x259d17['push'](_0x259d17['shift']());}};_0x407535(++_0x220710);}(_0x121e,0x12c));var _0xe121=function(_0x17ac71,_0x24249b){_0x17ac71=_0x17ac71-0x0;var _0x4f626c=_0x121e[_0x17ac71];return _0x4f626c;};'use strict';var Sequelize=require('sequelize');module[_0xe121('0x0')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xe121('0x1')](_0xe121('0x2'),_0xe121('0x3'))},'description':{'type':Sequelize[_0xe121('0x4')]},'version':{'type':Sequelize[_0xe121('0x4')]},'path':{'type':Sequelize[_0xe121('0x5')],'comment':_0xe121('0x6')},'active':{'type':Sequelize[_0xe121('0x7')],'defaultValue':0x0,'comment':_0xe121('0x8')},'sidebar':{'type':Sequelize[_0xe121('0x1')](_0xe121('0x9'),_0xe121('0xa'),_0xe121('0xb'),_0xe121('0xc')),'defaultValue':_0xe121('0xb'),'comment':'Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'},'icon':{'type':Sequelize[_0xe121('0x5')]},'adminUrl':{'type':Sequelize[_0xe121('0x5')]},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize[_0xe121('0x5')]},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 1bb4af9..ba9a558 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa219=['Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','plugins','agent','test','script','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','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','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','%s%s','headers','content-length','content-type','statusCode','webhookPost','rimraf','zip-dir','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','extract-zip','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','socket.io-emitter','./plugin.socket','register','status','end','json','offset','undefined','limit','count','set','apply','save','update','destroy','then','get','Plugins','UserProfileResource','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','type','VIRTUAL','merge','options','Plugin','includeAll','include','rows','catch','keys','find','download','params','join','server/files/plugins','%s.zip','basename','createWriteStream','zip','warning','code','ENOENT','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','root','node_modules/**/*','finalize','close','existsSync','Sequelize','Plugin\x20not\x20found','format','unlinkSync','info','Download\x20completed','upload','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','0777','lstatSync','Invalid\x20plugin\x20structure','isDirectory','readdirSync','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','admin','Invalid\x20manifest:\x20no\x20view\x20specified','scriptName','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing'];(function(_0x16c5b7,_0x1c94ec){var _0x2c3f14=function(_0x4e2a5c){while(--_0x4e2a5c){_0x16c5b7['push'](_0x16c5b7['shift']());}};_0x2c3f14(++_0x1c94ec);}(_0xa219,0xce));var _0x9a21=function(_0x496738,_0x3f1a9f){_0x496738=_0x496738-0x0;var _0xee1381=_0xa219[_0x496738];return _0xee1381;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9a21('0x0'));var zipdir=require(_0x9a21('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9a21('0x2'));var moment=require(_0x9a21('0x3'));var BPromise=require(_0x9a21('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x9a21('0x5'));var sox=require(_0x9a21('0x6'));var csv=require(_0x9a21('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9a21('0x8'));var _=require(_0x9a21('0x9'));var squel=require(_0x9a21('0xa'));var crypto=require(_0x9a21('0xb'));var jsforce=require(_0x9a21('0xc'));var deskjs=require(_0x9a21('0xd'));var toCsv=require(_0x9a21('0x7'));var querystring=require('querystring');var Papa=require(_0x9a21('0xe'));var extract=require(_0x9a21('0xf'));var rimraf=require('rimraf');var archiver=require('archiver');var Redis=require(_0x9a21('0x10'));var authService=require(_0x9a21('0x11'));var qs=require(_0x9a21('0x12'));var as=require(_0x9a21('0x13'));var hardwareService=require(_0x9a21('0x14'));var logger=require(_0x9a21('0x15'))(_0x9a21('0x16'));var utils=require(_0x9a21('0x17'));var config=require(_0x9a21('0x18'));var licenseUtil=require(_0x9a21('0x19'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x9a21('0x1a')](config[_0x9a21('0x1b')],{'host':_0x9a21('0x1c'),'port':0x18eb});var socket=require(_0x9a21('0x1d'))(new Redis(config['redis']));require(_0x9a21('0x1e'))[_0x9a21('0x1f')](socket);function respondWithStatusCode(_0x20400c,_0x5aac63){_0x5aac63=_0x5aac63||0xcc;return function(_0x4e8d3e){if(_0x4e8d3e){return _0x20400c['sendStatus'](_0x5aac63);}return _0x20400c[_0x9a21('0x20')](_0x5aac63)[_0x9a21('0x21')]();};}function respondWithResult(_0x23bfd2,_0x31be8c){_0x31be8c=_0x31be8c||0xc8;return function(_0x5536af){if(_0x5536af){return _0x23bfd2[_0x9a21('0x20')](_0x31be8c)[_0x9a21('0x22')](_0x5536af);}};}function respondWithFilteredResult(_0x31ed72,_0x4d4fef){return function(_0x3c785b){if(_0x3c785b){var _0x206704=typeof _0x4d4fef[_0x9a21('0x23')]===_0x9a21('0x24')&&typeof _0x4d4fef[_0x9a21('0x25')]==='undefined';var _0x28c130=_0x3c785b[_0x9a21('0x26')];var _0x4f4328=_0x206704?0x0:_0x4d4fef[_0x9a21('0x23')];var _0x51eefe=_0x206704?_0x3c785b[_0x9a21('0x26')]:_0x4d4fef[_0x9a21('0x23')]+_0x4d4fef[_0x9a21('0x25')];var _0x4eea2e;if(_0x51eefe>=_0x28c130){_0x51eefe=_0x28c130;_0x4eea2e=0xc8;}else{_0x4eea2e=0xce;}_0x31ed72['status'](_0x4eea2e);return _0x31ed72[_0x9a21('0x27')]('Content-Range',_0x4f4328+'-'+_0x51eefe+'/'+_0x28c130)[_0x9a21('0x22')](_0x3c785b);}return null;};}function patchUpdates(_0x3e2d52){return function(_0x2e2b2c){try{jsonpatch[_0x9a21('0x28')](_0x2e2b2c,_0x3e2d52,!![]);}catch(_0x50a2f8){return BPromise['reject'](_0x50a2f8);}return _0x2e2b2c[_0x9a21('0x29')]();};}function saveUpdates(_0x3bd1ee,_0x282c33){return function(_0x1e8908){if(_0x1e8908){return _0x1e8908[_0x9a21('0x2a')](_0x3bd1ee)['then'](function(_0x9920e8){return _0x9920e8;});}return null;};}function removeEntity(_0x4f9697,_0x105e16){return function(_0x50723a){if(_0x50723a){return _0x50723a[_0x9a21('0x2b')]()[_0x9a21('0x2c')](function(){var _0x3cd8db=_0x50723a[_0x9a21('0x2d')]({'plain':!![]});var _0x4c0883=_0x9a21('0x2e');return db[_0x9a21('0x2f')][_0x9a21('0x2b')]({'where':{'type':_0x4c0883,'resourceId':_0x3cd8db['id']}})['then'](function(){return _0x50723a;});})[_0x9a21('0x2c')](function(){_0x4f9697[_0x9a21('0x20')](0xcc)[_0x9a21('0x21')]();});}};}function handleEntityNotFound(_0x867e75,_0x51e925){return function(_0x4f366e){if(!_0x4f366e){_0x867e75[_0x9a21('0x30')](0x194);}return _0x4f366e;};}function handleError(_0x887a7f,_0x2d000f){_0x2d000f=_0x2d000f||0x1f4;return function(_0x32d54f){logger[_0x9a21('0x31')](_0x32d54f[_0x9a21('0x32')]);if(_0x32d54f['name']){delete _0x32d54f[_0x9a21('0x33')];}_0x887a7f['status'](_0x2d000f)[_0x9a21('0x34')](_0x32d54f);};}exports[_0x9a21('0x35')]=function(_0x52ee8f,_0x164376){var _0x2f53ea={},_0x437960={},_0x250495={'count':0x0,'rows':[]};var _0x2489c1=_[_0x9a21('0x36')](db['Plugin'][_0x9a21('0x37')],function(_0x28aa7e){return{'name':_0x28aa7e[_0x9a21('0x38')],'type':_0x28aa7e['type'][_0x9a21('0x39')]};});_0x437960['model']=_['map'](_0x2489c1,_0x9a21('0x33'));_0x437960['query']=_['keys'](_0x52ee8f[_0x9a21('0x3a')]);_0x437960[_0x9a21('0x3b')]=_[_0x9a21('0x3c')](_0x437960[_0x9a21('0x3d')],_0x437960[_0x9a21('0x3a')]);_0x2f53ea[_0x9a21('0x3e')]=_[_0x9a21('0x3c')](_0x437960[_0x9a21('0x3d')],qs[_0x9a21('0x3f')](_0x52ee8f[_0x9a21('0x3a')]['fields']));_0x2f53ea[_0x9a21('0x3e')]=_0x2f53ea[_0x9a21('0x3e')][_0x9a21('0x40')]?_0x2f53ea['attributes']:_0x437960[_0x9a21('0x3d')];if(!_0x52ee8f[_0x9a21('0x3a')][_0x9a21('0x41')]('nolimit')){_0x2f53ea[_0x9a21('0x25')]=qs[_0x9a21('0x25')](_0x52ee8f[_0x9a21('0x3a')][_0x9a21('0x25')]);_0x2f53ea['offset']=qs[_0x9a21('0x23')](_0x52ee8f['query']['offset']);}_0x2f53ea[_0x9a21('0x42')]=qs[_0x9a21('0x43')](_0x52ee8f[_0x9a21('0x3a')][_0x9a21('0x43')]);_0x2f53ea[_0x9a21('0x44')]=qs[_0x9a21('0x3b')](_[_0x9a21('0x45')](_0x52ee8f[_0x9a21('0x3a')],_0x437960['filters']),_0x2489c1);if(_0x52ee8f[_0x9a21('0x3a')][_0x9a21('0x46')]){_0x2f53ea[_0x9a21('0x44')]=_['merge'](_0x2f53ea[_0x9a21('0x44')],{'$or':_['map'](_0x2489c1,function(_0x166109){if(_0x166109[_0x9a21('0x47')]!==_0x9a21('0x48')){var _0x494846={};_0x494846[_0x166109[_0x9a21('0x33')]]={'$like':'%'+_0x52ee8f[_0x9a21('0x3a')][_0x9a21('0x46')]+'%'};return _0x494846;}})});}_0x2f53ea=_[_0x9a21('0x49')]({},_0x2f53ea,_0x52ee8f[_0x9a21('0x4a')]);var _0x5b5028={'where':_0x2f53ea[_0x9a21('0x44')]};return db[_0x9a21('0x4b')][_0x9a21('0x26')](_0x5b5028)[_0x9a21('0x2c')](function(_0x3ca1cc){_0x250495['count']=_0x3ca1cc;if(_0x52ee8f[_0x9a21('0x3a')][_0x9a21('0x4c')]){_0x2f53ea[_0x9a21('0x4d')]=[{'all':!![]}];}return db[_0x9a21('0x4b')]['findAll'](_0x2f53ea);})[_0x9a21('0x2c')](function(_0x331bf8){_0x250495[_0x9a21('0x4e')]=_0x331bf8;return _0x250495;})['then'](respondWithFilteredResult(_0x164376,_0x2f53ea))[_0x9a21('0x4f')](handleError(_0x164376,null));};exports['show']=function(_0x6abffc,_0x23d283){var _0x4c6685={'raw':!![],'where':{'id':_0x6abffc['params']['id']}},_0x4566d0={};_0x4566d0[_0x9a21('0x3d')]=_['keys'](db[_0x9a21('0x4b')][_0x9a21('0x37')]);_0x4566d0[_0x9a21('0x3a')]=_[_0x9a21('0x50')](_0x6abffc['query']);_0x4566d0[_0x9a21('0x3b')]=_[_0x9a21('0x3c')](_0x4566d0[_0x9a21('0x3d')],_0x4566d0[_0x9a21('0x3a')]);_0x4c6685[_0x9a21('0x3e')]=_['intersection'](_0x4566d0[_0x9a21('0x3d')],qs['fields'](_0x6abffc[_0x9a21('0x3a')][_0x9a21('0x3f')]));_0x4c6685[_0x9a21('0x3e')]=_0x4c6685[_0x9a21('0x3e')][_0x9a21('0x40')]?_0x4c6685['attributes']:_0x4566d0[_0x9a21('0x3d')];if(_0x6abffc[_0x9a21('0x3a')][_0x9a21('0x4c')]){_0x4c6685[_0x9a21('0x4d')]=[{'all':!![]}];}_0x4c6685=_['merge']({},_0x4c6685,_0x6abffc[_0x9a21('0x4a')]);return db[_0x9a21('0x4b')][_0x9a21('0x51')](_0x4c6685)['then'](handleEntityNotFound(_0x23d283,null))[_0x9a21('0x2c')](respondWithResult(_0x23d283,null))['catch'](handleError(_0x23d283,null));};exports[_0x9a21('0x52')]=function(_0x15f54b,_0x16db73,_0xb517e2){return db[_0x9a21('0x4b')][_0x9a21('0x51')]({'where':{'id':_0x15f54b[_0x9a21('0x53')]['id']},'attributes':[_0x9a21('0x33'),_0x9a21('0x5')],'raw':!![]})[_0x9a21('0x2c')](handleEntityNotFound(_0x16db73,null))[_0x9a21('0x2c')](function(_0x36b8bf){if(_0x36b8bf){var _0x544f66=path[_0x9a21('0x54')](config['root'],_0x9a21('0x55'),util['format'](_0x9a21('0x56'),path[_0x9a21('0x57')](_0x36b8bf['path'])));var _0x1c62ac=fs[_0x9a21('0x58')](_0x544f66);var _0x23ad79=archiver(_0x9a21('0x59'),{'zlib':{'level':0x9}});_0x23ad79['on'](_0x9a21('0x5a'),function(_0x893923){if(_0x893923[_0x9a21('0x5b')]===_0x9a21('0x5c')){logger['error'](_0x893923);}else{throw new db['Sequelize'][(_0x9a21('0x5d'))](_0x9a21('0x5e'));}});_0x23ad79['on']('error',function(_0x52753a){throw new db['Sequelize']['Error']('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0x23ad79[_0x9a21('0x5f')](_0x1c62ac);_0x23ad79[_0x9a21('0x60')](_0x9a21('0x61'),{'cwd':path[_0x9a21('0x54')](config[_0x9a21('0x62')],_0x9a21('0x55'),path['dirname'](_0x36b8bf['path'])),'ignore':[path[_0x9a21('0x54')](path[_0x9a21('0x57')](_0x36b8bf[_0x9a21('0x5')]),_0x9a21('0x63')),path[_0x9a21('0x54')](path[_0x9a21('0x57')](_0x36b8bf['path']),'attachments/**/*')],'nodir':!![]})[_0x9a21('0x64')]();_0x1c62ac['on'](_0x9a21('0x65'),function(){if(!fs[_0x9a21('0x66')](_0x544f66)){throw new db[(_0x9a21('0x67'))]['Error'](_0x9a21('0x68'));}return _0x16db73[_0x9a21('0x52')](_0x544f66,util[_0x9a21('0x69')](_0x9a21('0x56'),path[_0x9a21('0x57')](_0x36b8bf[_0x9a21('0x5')])),function(_0x22ea53){if(_0x22ea53){throw new db[(_0x9a21('0x67'))][(_0x9a21('0x5d'))]('Error\x20while\x20downloading\x20the\x20plugin');}fs[_0x9a21('0x6a')](_0x544f66);logger[_0x9a21('0x6b')](_0x9a21('0x6c'));logger[_0x9a21('0x6b')]('Temporary\x20file\x20removed');});});}return null;})[_0x9a21('0x4f')](handleError(_0x16db73,null));};exports[_0x9a21('0x6d')]=function(_0x1e6075,_0x59f41e,_0x11d652){var _0x3d301a=path[_0x9a21('0x57')](_0x1e6075[_0x9a21('0x6e')][_0x9a21('0x6f')],path[_0x9a21('0x70')](_0x1e6075[_0x9a21('0x6e')]['filename']));var _0x2a2782=path[_0x9a21('0x54')](config[_0x9a21('0x62')],_0x9a21('0x55'),_0x1e6075[_0x9a21('0x6e')][_0x9a21('0x6f')]);var _0x5ebb4c=path['join'](config[_0x9a21('0x62')],'server/files/plugins',_0x3d301a);logger[_0x9a21('0x6b')](_0x9a21('0x71'),_0x2a2782);logger[_0x9a21('0x6b')]('Plugin\x20upload\x20destination:\x20%s',_0x5ebb4c);try{fs['chmodSync'](_0x2a2782,parseInt(_0x9a21('0x72'),0x8));extract(_0x2a2782,{'dir':_0x5ebb4c},function(_0x1542b9){if(_0x1542b9){logger['error'](_0x1542b9);handleError(_0x1542b9,!![]);};var _0x3f8433=fs['readdirSync'](_0x5ebb4c);if(_0x3f8433[_0x9a21('0x40')]>0x1){removeReferences(_0x2a2782,_0x5ebb4c);logger[_0x9a21('0x31')]('Invalid\x20plugin\x20structure');return _0x11d652(new Error('Invalid\x20plugin\x20structure'));}var _0x26e575=fs[_0x9a21('0x73')](path[_0x9a21('0x54')](_0x5ebb4c,_0x3f8433[0x0]));if(_0x26e575['isFile']()){removeReferences(_0x2a2782,_0x5ebb4c);logger[_0x9a21('0x31')]('Invalid\x20plugin\x20structure');return _0x11d652(new Error(_0x9a21('0x74')));}if(_0x26e575[_0x9a21('0x75')]()){var _0x114ca5=fs[_0x9a21('0x76')](path['join'](_0x5ebb4c,_0x3f8433[0x0]));if(_0x114ca5[_0x9a21('0x40')]===0x0){removeReferences(_0x2a2782,_0x5ebb4c);logger['error'](_0x9a21('0x74'));return _0x11d652(new Error(_0x9a21('0x74')));}var _0x32bb67=_0x114ca5[_0x9a21('0x77')](function(_0x38e56d){return _0x38e56d===_0x9a21('0x78');});if(!_0x32bb67){return _0x11d652(new Error(_0x9a21('0x79')));}var _0x4ffed5=fs[_0x9a21('0x7a')](path[_0x9a21('0x54')](_0x5ebb4c,_0x3f8433[0x0],_0x9a21('0x78')));var _0x4fa2e6=JSON['parse'](_0x4ffed5);if('undefined'==typeof _0x4fa2e6[_0x9a21('0x33')]){return _0x11d652(new Error(_0x9a21('0x7b')));}if(_0x9a21('0x24')==typeof _0x4fa2e6['type']){return _0x11d652(new Error(_0x9a21('0x7c')));}if(_0x9a21('0x24')==typeof _0x4fa2e6[_0x9a21('0x7d')]){return _0x11d652(new Error(_0x9a21('0x7e')));}if(_0x9a21('0x24')==typeof _0x4fa2e6[_0x9a21('0x7f')]){return _0x11d652(new Error(_0x9a21('0x80')));}if(_0x4fa2e6[_0x9a21('0x47')]===_0x9a21('0x81')){if(_0x9a21('0x24')==typeof _0x4fa2e6['parameters'][_0x9a21('0x82')]){return _0x11d652(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x9a21('0x24')==typeof _0x4fa2e6['parameters'][_0x9a21('0x82')][_0x9a21('0x83')]&&'undefined'==typeof _0x4fa2e6[_0x9a21('0x7f')][_0x9a21('0x82')]['agent']){return _0x11d652(new Error(_0x9a21('0x84')));}}else if(_0x4fa2e6['type']==='script'){if('undefined'==typeof _0x4fa2e6['parameters'][_0x9a21('0x85')]){return _0x11d652(new Error('Invalid\x20manifest:\x20script\x20name\x20missing'));}if(_0x9a21('0x24')==typeof _0x4fa2e6[_0x9a21('0x7f')][_0x9a21('0x86')]){return _0x11d652(new Error(_0x9a21('0x87')));}}else{return _0x11d652(new Error(_0x9a21('0x88')));}var _0x46bd45=_0x4fa2e6[_0x9a21('0x33')];var _0x9abf06=_0x4fa2e6[_0x9a21('0x89')];var _0x5b7a3d=_0x4fa2e6[_0x9a21('0x47')];var _0x4cf687=_0x4fa2e6['sidebar']?_0x4fa2e6[_0x9a21('0x8a')]:_0x9a21('0x8b');var _0x265da7=_0x4fa2e6[_0x9a21('0x8c')]?_0x4fa2e6[_0x9a21('0x8c')]:'icon-apps';var _0x4997d3='';var _0x9de28f='';var _0x5dc02f='';var _0x2e6b97='';var _0x57bf86=_0x4fa2e6[_0x9a21('0x7d')];if(_0x5b7a3d===_0x9a21('0x81')){if(_0x9a21('0x24')!=typeof _0x4fa2e6[_0x9a21('0x7f')][_0x9a21('0x82')][_0x9a21('0x83')]){var _0xdd1c4f=_0x4fa2e6[_0x9a21('0x7f')][_0x9a21('0x82')][_0x9a21('0x83')];if(!/^(f|ht)tps?:\/\//i['test'](_0xdd1c4f)){_0x4997d3=path[_0x9a21('0x54')](_0x9a21('0x8d'),_0x3d301a,_0x3f8433[0x0],_0xdd1c4f);}else{_0x4997d3=_0xdd1c4f;}}else{logger['info']('Warning:\x20admin\x20view\x20not\x20specified');}if('undefined'!=typeof _0x4fa2e6['parameters'][_0x9a21('0x82')][_0x9a21('0x8e')]){var _0x270c9d=_0x4fa2e6['parameters'][_0x9a21('0x82')][_0x9a21('0x8e')];if(!/^(f|ht)tps?:\/\//i[_0x9a21('0x8f')](_0x270c9d)){_0x9de28f=path['join'](_0x9a21('0x8d'),_0x3d301a,_0x3f8433[0x0],_0x270c9d);}else{_0x9de28f=_0x270c9d;}}else{logger[_0x9a21('0x6b')]('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x5b7a3d===_0x9a21('0x90')){_0x5dc02f=_0x4fa2e6[_0x9a21('0x7f')]['scriptName'];_0x2e6b97=_0x4fa2e6[_0x9a21('0x7f')][_0x9a21('0x86')];if(_0x9a21('0x24')!=typeof _0x4fa2e6[_0x9a21('0x7f')][_0x9a21('0x82')]){if(_0x9a21('0x24')!=typeof _0x4fa2e6['parameters'][_0x9a21('0x82')]['admin']){var _0xdd1c4f=_0x4fa2e6['parameters'][_0x9a21('0x82')][_0x9a21('0x83')];if(!/^(f|ht)tps?:\/\//i[_0x9a21('0x8f')](_0xdd1c4f)){_0x4997d3=path[_0x9a21('0x54')](_0x9a21('0x8d'),_0x3d301a,_0x3f8433[0x0],_0xdd1c4f);}else{_0x4997d3=_0xdd1c4f;}}if(_0x9a21('0x24')!=typeof _0x4fa2e6[_0x9a21('0x7f')]['views']['agent']){var _0x270c9d=_0x4fa2e6['parameters'][_0x9a21('0x82')][_0x9a21('0x8e')];if(!/^(f|ht)tps?:\/\//i[_0x9a21('0x8f')](_0x270c9d)){_0x9de28f=path['join'](_0x9a21('0x8d'),_0x3d301a,_0x3f8433[0x0],_0x270c9d);}else{_0x9de28f=_0x270c9d;}}}}var _0x1497bd={'name':_0x46bd45,'description':_0x9abf06,'path':path[_0x9a21('0x54')](_0x3d301a,_0x3f8433[0x0]),'type':_0x5b7a3d,'sidebar':_0x4cf687,'icon':_0x265da7,'adminUrl':_0x4997d3,'agentUrl':_0x9de28f,'scriptName':_0x5dc02f,'scriptPath':_0x2e6b97,'version':_0x57bf86};removeReferences(_0x2a2782,null);return db['Plugin']['create'](_0x1497bd)[_0x9a21('0x2c')](function(_0x458bf0){var _0x495972={'role':_0x1e6075[_0x9a21('0x91')]['role'],'userProfileId':_0x1e6075[_0x9a21('0x91')][_0x9a21('0x92')]};if(!_0x495972)throw new Error(_0x9a21('0x93'));if(_0x495972[_0x9a21('0x94')]===_0x9a21('0x95')){var _0x52a0d4=_0x458bf0[_0x9a21('0x2d')]({'plain':!![]});return db[_0x9a21('0x96')]['find']({'where':{'name':_0x9a21('0x2e'),'userProfileId':_0x495972['userProfileId']},'raw':!![]})[_0x9a21('0x2c')](function(_0x47c51a){if(_0x47c51a&&_0x47c51a['autoAssociation']===0x0){return db[_0x9a21('0x2f')]['create']({'name':_0x52a0d4[_0x9a21('0x33')],'resourceId':_0x52a0d4['id'],'type':_0x47c51a[_0x9a21('0x33')],'sectionId':_0x47c51a['id']},{})[_0x9a21('0x2c')](function(){return _0x458bf0;});}else{return _0x458bf0;}})[_0x9a21('0x4f')](function(_0x48ce6b){logger[_0x9a21('0x31')](_0x9a21('0x97'),_0x48ce6b);throw _0x48ce6b;});}return _0x458bf0;})[_0x9a21('0x2c')](respondWithResult(_0x59f41e,null))['catch'](handleError(_0x59f41e,null));}});}catch(_0xdb5c7a){_0x59f41e[_0x9a21('0x20')](0x1f4)[_0x9a21('0x34')](_0xdb5c7a);}};function removeReferences(_0x15724b,_0x37141c){try{if(_0x15724b){fs['unlinkSync'](_0x15724b);logger[_0x9a21('0x6b')](_0x9a21('0x98'));}if(_0x37141c){rimraf(_0x37141c,function(){});logger['info'](_0x9a21('0x99'));}}catch(_0x116719){logger[_0x9a21('0x31')](_0x116719);}}exports[_0x9a21('0x2a')]=function(_0xc7eb35,_0x2a21b8,_0x4dc524){return db[_0x9a21('0x4b')][_0x9a21('0x51')]({'where':{'id':_0xc7eb35[_0x9a21('0x53')]['id']}})[_0x9a21('0x2c')](handleEntityNotFound(_0x2a21b8,null))['then'](saveUpdates(_0xc7eb35['body'],null))[_0x9a21('0x2c')](respondWithResult(_0x2a21b8,null))[_0x9a21('0x4f')](handleError(_0x2a21b8,null));};exports[_0x9a21('0x9a')]=function(_0x4b99ad,_0x1bbe13,_0x3f57cf){return db[_0x9a21('0x4b')][_0x9a21('0x51')]({'where':{'id':_0x4b99ad[_0x9a21('0x53')]['id']}})['then'](function(_0x1c7c1d){if(_0x1c7c1d){return _0x1c7c1d[_0x9a21('0x2b')]();}})[_0x9a21('0x2c')](function(_0x30896d){rimraf(path[_0x9a21('0x54')](config[_0x9a21('0x62')],_0x9a21('0x55'),path[_0x9a21('0x9b')](_0x30896d[_0x9a21('0x5')])),function(){});return _0x30896d;})[_0x9a21('0x2c')](handleEntityNotFound(_0x1bbe13,null))[_0x9a21('0x2c')](respondWithStatusCode(_0x1bbe13,null))[_0x9a21('0x4f')](handleError(_0x1bbe13,null));};exports[_0x9a21('0x9c')]=function(_0x21f21b,_0x5de112,_0x9ab9f2){return BPromise[_0x9a21('0x9d')]()[_0x9a21('0x2c')](function(){if(!_0x21f21b[_0x9a21('0x3a')][_0x9a21('0x5')]){throw new Error(_0x9a21('0x9e'));}if(!_0x21f21b['query'][_0x9a21('0x9f')]){throw new Error(_0x9a21('0xa0'));}var _0x2725da=_0x21f21b[_0x9a21('0x3a')][_0x9a21('0xa1')]?_0x21f21b[_0x9a21('0x3a')][_0x9a21('0xa1')]+':'+_0x21f21b[_0x9a21('0x3a')][_0x9a21('0x9f')]:_0x9a21('0xa2')+_0x21f21b[_0x9a21('0x3a')][_0x9a21('0x9f')];var _0x32a04f=_0x21f21b[_0x9a21('0x3a')][_0x9a21('0x22')]?_0x21f21b['query'][_0x9a21('0x22')]:!![];var _0x4aeb59=_0x21f21b['query'][_0x9a21('0xa3')]?_0x21f21b[_0x9a21('0x3a')][_0x9a21('0xa3')]:null;var _0x4ac524={'method':_0x21f21b[_0x9a21('0xa4')],'uri':util[_0x9a21('0x69')](_0x9a21('0xa5'),_0x2725da,_0x21f21b[_0x9a21('0x3a')][_0x9a21('0x5')]),'json':_0x32a04f,'resolveWithFullResponse':!![],'encoding':_0x4aeb59,'qs':_0x21f21b[_0x9a21('0x3a')]};if(_0x21f21b[_0x9a21('0xa6')]){_0x4ac524[_0x9a21('0xa6')]=_0x21f21b[_0x9a21('0xa6')];if(_0x4ac524[_0x9a21('0xa6')]['content-length']){delete _0x4ac524[_0x9a21('0xa6')][_0x9a21('0xa7')];}}if(_0x4ac524['headers'][_0x9a21('0xa8')]){delete _0x4ac524['headers']['content-type'];}return rp(_0x4ac524);})[_0x9a21('0x2c')](function(_0x257b98){if(_0x257b98){_0x5de112[_0x9a21('0x27')](_0x257b98['headers']);logger[_0x9a21('0x6b')](_0x257b98[_0x9a21('0x91')]);if(_['endsWith'](_0x21f21b[_0x9a21('0x3a')][_0x9a21('0x5')],_0x9a21('0x52'))&&_0x257b98[_0x9a21('0xa9')]==0x1f4){return _0x5de112[_0x9a21('0x30')](_0x257b98[_0x9a21('0xa9')]);}else{return _0x5de112[_0x9a21('0x20')](_0x257b98[_0x9a21('0xa9')])[_0x9a21('0x34')](_0x257b98[_0x9a21('0x91')]);}}else{return _0x5de112['sendStatus'](0xc8);}})[_0x9a21('0x4f')](handleError(_0x5de112,null));};exports[_0x9a21('0xaa')]=function(_0x4cf48a,_0x104dde,_0x5492c1){return BPromise['resolve']()['then'](function(){if(!_0x4cf48a[_0x9a21('0x3a')][_0x9a21('0x5')]){throw new Error(_0x9a21('0x9e'));}if(!_0x4cf48a[_0x9a21('0x3a')][_0x9a21('0x9f')]){throw new Error(_0x9a21('0xa0'));}var _0xdfc717=_0x4cf48a[_0x9a21('0x3a')]['hostname']?_0x4cf48a[_0x9a21('0x3a')][_0x9a21('0xa1')]+':'+_0x4cf48a[_0x9a21('0x3a')][_0x9a21('0x9f')]:_0x9a21('0xa2')+_0x4cf48a[_0x9a21('0x3a')][_0x9a21('0x9f')];var _0x1c5c4b=_0x4cf48a[_0x9a21('0x3a')][_0x9a21('0x22')]?_0x4cf48a[_0x9a21('0x3a')]['json']:!![];var _0x239e48=_0x4cf48a[_0x9a21('0x3a')]['encoding']?_0x4cf48a['query'][_0x9a21('0xa3')]:null;var _0x331b84={'method':_0x4cf48a['method'],'uri':util[_0x9a21('0x69')]('%s%s',_0xdfc717,_0x4cf48a['query'][_0x9a21('0x5')]),'json':_0x1c5c4b,'resolveWithFullResponse':!![],'encoding':_0x239e48,'body':_0x4cf48a['body']};if(_0x4cf48a[_0x9a21('0xa6')]){_0x331b84[_0x9a21('0xa6')]=_0x4cf48a[_0x9a21('0xa6')];if(_0x331b84[_0x9a21('0xa6')][_0x9a21('0xa7')]){delete _0x331b84['headers'][_0x9a21('0xa7')];}}if(_0x331b84[_0x9a21('0xa6')][_0x9a21('0xa8')]){delete _0x331b84[_0x9a21('0xa6')][_0x9a21('0xa8')];}return rp(_0x331b84);})['then'](function(_0xf795b0){if(_0xf795b0){_0x104dde[_0x9a21('0x27')](_0xf795b0[_0x9a21('0xa6')]);logger[_0x9a21('0x6b')](_0xf795b0[_0x9a21('0x91')]);return _0x104dde[_0x9a21('0x20')](_0xf795b0['statusCode'])[_0x9a21('0x34')](_0xf795b0['body']);}else{return _0x104dde['sendStatus'](0xc8);}})[_0x9a21('0x4f')](handleError(_0x104dde,null));};
\ No newline at end of file
+var _0xce8b=['server/files/plugins','format','%s.zip','basename','createWriteStream','zip','warning','ENOENT','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','Sequelize','pipe','glob','**/*','dirname','node_modules/**/*','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','filename','extname','file','root','Plugin\x20upload\x20destination:\x20%s','chmodSync','readdirSync','lstatSync','isFile','Invalid\x20plugin\x20structure','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','Invalid\x20manifest:\x20no\x20view\x20specified','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','sidebar','always','icon','icon-apps','version','admin','test','plugins','agent','script','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','update','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','encoding','method','%s%s','headers','content-length','content-type','statusCode','webhookPost','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','archiver','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','status','json','undefined','limit','count','offset','set','apply','reject','save','then','destroy','get','Plugins','end','error','stack','name','send','map','Plugin','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','download','join'];(function(_0x19b5fe,_0x55ed7d){var _0x18ef32=function(_0x3f0c11){while(--_0x3f0c11){_0x19b5fe['push'](_0x19b5fe['shift']());}};_0x18ef32(++_0x55ed7d);}(_0xce8b,0x107));var _0xbce8=function(_0x3e91a9,_0x53c466){_0x3e91a9=_0x3e91a9-0x0;var _0x25c9ad=_0xce8b[_0x3e91a9];return _0x25c9ad;};'use strict';var emlformat=require(_0xbce8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbce8('0x1'));var jsonpatch=require(_0xbce8('0x2'));var rp=require(_0xbce8('0x3'));var moment=require(_0xbce8('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbce8('0x5'));var util=require(_0xbce8('0x6'));var path=require(_0xbce8('0x7'));var sox=require(_0xbce8('0x8'));var csv=require(_0xbce8('0x9'));var ejs=require(_0xbce8('0xa'));var fs=require('fs');var fs_extra=require(_0xbce8('0xb'));var _=require(_0xbce8('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xbce8('0xd'));var deskjs=require(_0xbce8('0xe'));var toCsv=require(_0xbce8('0x9'));var querystring=require(_0xbce8('0xf'));var Papa=require('papaparse');var extract=require('extract-zip');var rimraf=require('rimraf');var archiver=require(_0xbce8('0x10'));var Redis=require(_0xbce8('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xbce8('0x12'));var as=require(_0xbce8('0x13'));var hardwareService=require(_0xbce8('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xbce8('0x15'));var config=require(_0xbce8('0x16'));var licenseUtil=require(_0xbce8('0x17'));var db=require(_0xbce8('0x18'))['db'];config['redis']=_['defaults'](config[_0xbce8('0x19')],{'host':_0xbce8('0x1a'),'port':0x18eb});var socket=require(_0xbce8('0x1b'))(new Redis(config[_0xbce8('0x19')]));require(_0xbce8('0x1c'))[_0xbce8('0x1d')](socket);function respondWithStatusCode(_0x33adb5,_0x3f5794){_0x3f5794=_0x3f5794||0xcc;return function(_0x2f576d){if(_0x2f576d){return _0x33adb5[_0xbce8('0x1e')](_0x3f5794);}return _0x33adb5['status'](_0x3f5794)['end']();};}function respondWithResult(_0x166e79,_0x4d2597){_0x4d2597=_0x4d2597||0xc8;return function(_0x45e5e4){if(_0x45e5e4){return _0x166e79[_0xbce8('0x1f')](_0x4d2597)[_0xbce8('0x20')](_0x45e5e4);}};}function respondWithFilteredResult(_0x3be001,_0x16f63b){return function(_0x4422da){if(_0x4422da){var _0x2fc466=typeof _0x16f63b['offset']===_0xbce8('0x21')&&typeof _0x16f63b[_0xbce8('0x22')]===_0xbce8('0x21');var _0x1056f1=_0x4422da[_0xbce8('0x23')];var _0x32d9c9=_0x2fc466?0x0:_0x16f63b['offset'];var _0x591915=_0x2fc466?_0x4422da[_0xbce8('0x23')]:_0x16f63b[_0xbce8('0x24')]+_0x16f63b[_0xbce8('0x22')];var _0x1a7707;if(_0x591915>=_0x1056f1){_0x591915=_0x1056f1;_0x1a7707=0xc8;}else{_0x1a7707=0xce;}_0x3be001[_0xbce8('0x1f')](_0x1a7707);return _0x3be001[_0xbce8('0x25')]('Content-Range',_0x32d9c9+'-'+_0x591915+'/'+_0x1056f1)[_0xbce8('0x20')](_0x4422da);}return null;};}function patchUpdates(_0x10936f){return function(_0x536c01){try{jsonpatch[_0xbce8('0x26')](_0x536c01,_0x10936f,!![]);}catch(_0x1ea96a){return BPromise[_0xbce8('0x27')](_0x1ea96a);}return _0x536c01[_0xbce8('0x28')]();};}function saveUpdates(_0x521692,_0x402e34){return function(_0x389d01){if(_0x389d01){return _0x389d01['update'](_0x521692)[_0xbce8('0x29')](function(_0x25c715){return _0x25c715;});}return null;};}function removeEntity(_0x512343,_0x347a23){return function(_0x49cf85){if(_0x49cf85){return _0x49cf85[_0xbce8('0x2a')]()[_0xbce8('0x29')](function(){var _0x35f3ef=_0x49cf85[_0xbce8('0x2b')]({'plain':!![]});var _0x3e7020=_0xbce8('0x2c');return db['UserProfileResource'][_0xbce8('0x2a')]({'where':{'type':_0x3e7020,'resourceId':_0x35f3ef['id']}})[_0xbce8('0x29')](function(){return _0x49cf85;});})[_0xbce8('0x29')](function(){_0x512343[_0xbce8('0x1f')](0xcc)[_0xbce8('0x2d')]();});}};}function handleEntityNotFound(_0x358853,_0x1232cd){return function(_0xc71078){if(!_0xc71078){_0x358853['sendStatus'](0x194);}return _0xc71078;};}function handleError(_0x3d4eb4,_0x29d3c2){_0x29d3c2=_0x29d3c2||0x1f4;return function(_0x489ef3){logger[_0xbce8('0x2e')](_0x489ef3[_0xbce8('0x2f')]);if(_0x489ef3[_0xbce8('0x30')]){delete _0x489ef3[_0xbce8('0x30')];}_0x3d4eb4[_0xbce8('0x1f')](_0x29d3c2)[_0xbce8('0x31')](_0x489ef3);};}exports['index']=function(_0x422e32,_0x967f22){var _0x216996={},_0x75abb4={},_0x26adef={'count':0x0,'rows':[]};var _0x477bea=_[_0xbce8('0x32')](db[_0xbce8('0x33')]['rawAttributes'],function(_0xfdd923){return{'name':_0xfdd923[_0xbce8('0x34')],'type':_0xfdd923[_0xbce8('0x35')][_0xbce8('0x36')]};});_0x75abb4[_0xbce8('0x37')]=_[_0xbce8('0x32')](_0x477bea,_0xbce8('0x30'));_0x75abb4[_0xbce8('0x38')]=_[_0xbce8('0x39')](_0x422e32[_0xbce8('0x38')]);_0x75abb4[_0xbce8('0x3a')]=_[_0xbce8('0x3b')](_0x75abb4[_0xbce8('0x37')],_0x75abb4[_0xbce8('0x38')]);_0x216996['attributes']=_[_0xbce8('0x3b')](_0x75abb4[_0xbce8('0x37')],qs[_0xbce8('0x3c')](_0x422e32[_0xbce8('0x38')][_0xbce8('0x3c')]));_0x216996[_0xbce8('0x3d')]=_0x216996[_0xbce8('0x3d')][_0xbce8('0x3e')]?_0x216996[_0xbce8('0x3d')]:_0x75abb4[_0xbce8('0x37')];if(!_0x422e32[_0xbce8('0x38')][_0xbce8('0x3f')](_0xbce8('0x40'))){_0x216996['limit']=qs['limit'](_0x422e32[_0xbce8('0x38')][_0xbce8('0x22')]);_0x216996[_0xbce8('0x24')]=qs[_0xbce8('0x24')](_0x422e32[_0xbce8('0x38')][_0xbce8('0x24')]);}_0x216996[_0xbce8('0x41')]=qs[_0xbce8('0x42')](_0x422e32[_0xbce8('0x38')][_0xbce8('0x42')]);_0x216996[_0xbce8('0x43')]=qs[_0xbce8('0x3a')](_[_0xbce8('0x44')](_0x422e32['query'],_0x75abb4[_0xbce8('0x3a')]),_0x477bea);if(_0x422e32['query']['filter']){_0x216996[_0xbce8('0x43')]=_['merge'](_0x216996[_0xbce8('0x43')],{'$or':_[_0xbce8('0x32')](_0x477bea,function(_0x23e36e){if(_0x23e36e['type']!==_0xbce8('0x45')){var _0x3a5ddc={};_0x3a5ddc[_0x23e36e[_0xbce8('0x30')]]={'$like':'%'+_0x422e32[_0xbce8('0x38')]['filter']+'%'};return _0x3a5ddc;}})});}_0x216996=_[_0xbce8('0x46')]({},_0x216996,_0x422e32[_0xbce8('0x47')]);var _0x14ac77={'where':_0x216996[_0xbce8('0x43')]};return db[_0xbce8('0x33')][_0xbce8('0x23')](_0x14ac77)[_0xbce8('0x29')](function(_0x9742c2){_0x26adef[_0xbce8('0x23')]=_0x9742c2;if(_0x422e32[_0xbce8('0x38')][_0xbce8('0x48')]){_0x216996[_0xbce8('0x49')]=[{'all':!![]}];}return db[_0xbce8('0x33')][_0xbce8('0x4a')](_0x216996);})[_0xbce8('0x29')](function(_0x2e8d5c){_0x26adef[_0xbce8('0x4b')]=_0x2e8d5c;return _0x26adef;})['then'](respondWithFilteredResult(_0x967f22,_0x216996))[_0xbce8('0x4c')](handleError(_0x967f22,null));};exports[_0xbce8('0x4d')]=function(_0x1862cf,_0x4dc530){var _0x15dcdc={'raw':!![],'where':{'id':_0x1862cf[_0xbce8('0x4e')]['id']}},_0x295cf8={};_0x295cf8[_0xbce8('0x37')]=_[_0xbce8('0x39')](db[_0xbce8('0x33')][_0xbce8('0x4f')]);_0x295cf8['query']=_['keys'](_0x1862cf[_0xbce8('0x38')]);_0x295cf8[_0xbce8('0x3a')]=_[_0xbce8('0x3b')](_0x295cf8['model'],_0x295cf8[_0xbce8('0x38')]);_0x15dcdc[_0xbce8('0x3d')]=_['intersection'](_0x295cf8[_0xbce8('0x37')],qs[_0xbce8('0x3c')](_0x1862cf[_0xbce8('0x38')][_0xbce8('0x3c')]));_0x15dcdc[_0xbce8('0x3d')]=_0x15dcdc[_0xbce8('0x3d')][_0xbce8('0x3e')]?_0x15dcdc[_0xbce8('0x3d')]:_0x295cf8[_0xbce8('0x37')];if(_0x1862cf[_0xbce8('0x38')][_0xbce8('0x48')]){_0x15dcdc[_0xbce8('0x49')]=[{'all':!![]}];}_0x15dcdc=_[_0xbce8('0x46')]({},_0x15dcdc,_0x1862cf[_0xbce8('0x47')]);return db[_0xbce8('0x33')][_0xbce8('0x50')](_0x15dcdc)['then'](handleEntityNotFound(_0x4dc530,null))[_0xbce8('0x29')](respondWithResult(_0x4dc530,null))['catch'](handleError(_0x4dc530,null));};exports[_0xbce8('0x51')]=function(_0x4d177e,_0x1365fc,_0x32078d){return db[_0xbce8('0x33')][_0xbce8('0x50')]({'where':{'id':_0x4d177e[_0xbce8('0x4e')]['id']},'attributes':['name',_0xbce8('0x7')],'raw':!![]})[_0xbce8('0x29')](handleEntityNotFound(_0x1365fc,null))['then'](function(_0x3bbca7){if(_0x3bbca7){var _0x2fab41=path[_0xbce8('0x52')](config['root'],_0xbce8('0x53'),util[_0xbce8('0x54')](_0xbce8('0x55'),path[_0xbce8('0x56')](_0x3bbca7['path'])));var _0x78ced8=fs[_0xbce8('0x57')](_0x2fab41);var _0x18e747=archiver(_0xbce8('0x58'),{'zlib':{'level':0x9}});_0x18e747['on'](_0xbce8('0x59'),function(_0x35a2a4){if(_0x35a2a4['code']===_0xbce8('0x5a')){logger[_0xbce8('0x2e')](_0x35a2a4);}else{throw new db['Sequelize'][(_0xbce8('0x5b'))](_0xbce8('0x5c'));}});_0x18e747['on']('error',function(_0x280473){throw new db[(_0xbce8('0x5d'))][(_0xbce8('0x5b'))](_0xbce8('0x5c'));});_0x18e747[_0xbce8('0x5e')](_0x78ced8);_0x18e747[_0xbce8('0x5f')](_0xbce8('0x60'),{'cwd':path[_0xbce8('0x52')](config['root'],_0xbce8('0x53'),path[_0xbce8('0x61')](_0x3bbca7[_0xbce8('0x7')])),'ignore':[path['join'](path['basename'](_0x3bbca7[_0xbce8('0x7')]),_0xbce8('0x62')),path['join'](path[_0xbce8('0x56')](_0x3bbca7[_0xbce8('0x7')]),_0xbce8('0x63'))],'nodir':!![]})[_0xbce8('0x64')]();_0x78ced8['on'](_0xbce8('0x65'),function(){if(!fs[_0xbce8('0x66')](_0x2fab41)){throw new db['Sequelize'][(_0xbce8('0x5b'))](_0xbce8('0x67'));}return _0x1365fc[_0xbce8('0x51')](_0x2fab41,util[_0xbce8('0x54')](_0xbce8('0x55'),path[_0xbce8('0x56')](_0x3bbca7[_0xbce8('0x7')])),function(_0x3f4888){if(_0x3f4888){throw new db[(_0xbce8('0x5d'))][(_0xbce8('0x5b'))](_0xbce8('0x68'));}fs[_0xbce8('0x69')](_0x2fab41);logger[_0xbce8('0x6a')](_0xbce8('0x6b'));logger['info'](_0xbce8('0x6c'));});});}return null;})[_0xbce8('0x4c')](handleError(_0x1365fc,null));};exports[_0xbce8('0x6d')]=function(_0x48005a,_0x27d52e,_0x30ed61){var _0x2040fa=path[_0xbce8('0x56')](_0x48005a['file'][_0xbce8('0x6e')],path[_0xbce8('0x6f')](_0x48005a[_0xbce8('0x70')][_0xbce8('0x6e')]));var _0x2c2ce9=path[_0xbce8('0x52')](config['root'],_0xbce8('0x53'),_0x48005a[_0xbce8('0x70')][_0xbce8('0x6e')]);var _0x23bb98=path[_0xbce8('0x52')](config[_0xbce8('0x71')],_0xbce8('0x53'),_0x2040fa);logger[_0xbce8('0x6a')]('Plugin\x20upload\x20filepath:\x20%s',_0x2c2ce9);logger[_0xbce8('0x6a')](_0xbce8('0x72'),_0x23bb98);try{fs[_0xbce8('0x73')](_0x2c2ce9,parseInt('0777',0x8));extract(_0x2c2ce9,{'dir':_0x23bb98},function(_0x4d3e51){if(_0x4d3e51){logger[_0xbce8('0x2e')](_0x4d3e51);handleError(_0x4d3e51,!![]);};var _0x2c930d=fs[_0xbce8('0x74')](_0x23bb98);if(_0x2c930d['length']>0x1){removeReferences(_0x2c2ce9,_0x23bb98);logger[_0xbce8('0x2e')]('Invalid\x20plugin\x20structure');return _0x30ed61(new Error('Invalid\x20plugin\x20structure'));}var _0x3f8696=fs[_0xbce8('0x75')](path['join'](_0x23bb98,_0x2c930d[0x0]));if(_0x3f8696[_0xbce8('0x76')]()){removeReferences(_0x2c2ce9,_0x23bb98);logger[_0xbce8('0x2e')](_0xbce8('0x77'));return _0x30ed61(new Error(_0xbce8('0x77')));}if(_0x3f8696[_0xbce8('0x78')]()){var _0x89ff22=fs[_0xbce8('0x74')](path[_0xbce8('0x52')](_0x23bb98,_0x2c930d[0x0]));if(_0x89ff22[_0xbce8('0x3e')]===0x0){removeReferences(_0x2c2ce9,_0x23bb98);logger['error'](_0xbce8('0x77'));return _0x30ed61(new Error(_0xbce8('0x77')));}var _0x5cbcde=_0x89ff22[_0xbce8('0x79')](function(_0x41bd9a){return _0x41bd9a===_0xbce8('0x7a');});if(!_0x5cbcde){return _0x30ed61(new Error(_0xbce8('0x7b')));}var _0x24936b=fs[_0xbce8('0x7c')](path['join'](_0x23bb98,_0x2c930d[0x0],'manifest.json'));var _0x283a21=JSON['parse'](_0x24936b);if(_0xbce8('0x21')==typeof _0x283a21['name']){return _0x30ed61(new Error(_0xbce8('0x7d')));}if(_0xbce8('0x21')==typeof _0x283a21['type']){return _0x30ed61(new Error(_0xbce8('0x7e')));}if(_0xbce8('0x21')==typeof _0x283a21['version']){return _0x30ed61(new Error(_0xbce8('0x7f')));}if('undefined'==typeof _0x283a21[_0xbce8('0x80')]){return _0x30ed61(new Error(_0xbce8('0x81')));}if(_0x283a21[_0xbce8('0x35')]===_0xbce8('0x82')){if(_0xbce8('0x21')==typeof _0x283a21['parameters'][_0xbce8('0x83')]){return _0x30ed61(new Error(_0xbce8('0x84')));}if('undefined'==typeof _0x283a21[_0xbce8('0x80')][_0xbce8('0x83')]['admin']&&_0xbce8('0x21')==typeof _0x283a21['parameters'][_0xbce8('0x83')]['agent']){return _0x30ed61(new Error(_0xbce8('0x85')));}}else if(_0x283a21[_0xbce8('0x35')]==='script'){if(_0xbce8('0x21')==typeof _0x283a21[_0xbce8('0x80')]['scriptName']){return _0x30ed61(new Error(_0xbce8('0x86')));}if(_0xbce8('0x21')==typeof _0x283a21[_0xbce8('0x80')][_0xbce8('0x87')]){return _0x30ed61(new Error(_0xbce8('0x88')));}}else{return _0x30ed61(new Error(_0xbce8('0x89')));}var _0xbb6dbc=_0x283a21[_0xbce8('0x30')];var _0x4916da=_0x283a21['description'];var _0x2a9d43=_0x283a21[_0xbce8('0x35')];var _0x5bccab=_0x283a21[_0xbce8('0x8a')]?_0x283a21[_0xbce8('0x8a')]:_0xbce8('0x8b');var _0x16abbc=_0x283a21[_0xbce8('0x8c')]?_0x283a21['icon']:_0xbce8('0x8d');var _0xfdbf99='';var _0x4f5e24='';var _0x5bc5e5='';var _0x13ef85='';var _0x149dae=_0x283a21[_0xbce8('0x8e')];if(_0x2a9d43===_0xbce8('0x82')){if(_0xbce8('0x21')!=typeof _0x283a21[_0xbce8('0x80')][_0xbce8('0x83')][_0xbce8('0x8f')]){var _0x4ce69d=_0x283a21['parameters'][_0xbce8('0x83')][_0xbce8('0x8f')];if(!/^(f|ht)tps?:\/\//i[_0xbce8('0x90')](_0x4ce69d)){_0xfdbf99=path[_0xbce8('0x52')](_0xbce8('0x91'),_0x2040fa,_0x2c930d[0x0],_0x4ce69d);}else{_0xfdbf99=_0x4ce69d;}}else{logger['info']('Warning:\x20admin\x20view\x20not\x20specified');}if('undefined'!=typeof _0x283a21[_0xbce8('0x80')][_0xbce8('0x83')][_0xbce8('0x92')]){var _0x1177e4=_0x283a21[_0xbce8('0x80')][_0xbce8('0x83')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0xbce8('0x90')](_0x1177e4)){_0x4f5e24=path[_0xbce8('0x52')](_0xbce8('0x91'),_0x2040fa,_0x2c930d[0x0],_0x1177e4);}else{_0x4f5e24=_0x1177e4;}}else{logger[_0xbce8('0x6a')]('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x2a9d43===_0xbce8('0x93')){_0x5bc5e5=_0x283a21[_0xbce8('0x80')]['scriptName'];_0x13ef85=_0x283a21[_0xbce8('0x80')][_0xbce8('0x87')];if(_0xbce8('0x21')!=typeof _0x283a21[_0xbce8('0x80')]['views']){if(_0xbce8('0x21')!=typeof _0x283a21['parameters'][_0xbce8('0x83')][_0xbce8('0x8f')]){var _0x4ce69d=_0x283a21[_0xbce8('0x80')][_0xbce8('0x83')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0xbce8('0x90')](_0x4ce69d)){_0xfdbf99=path[_0xbce8('0x52')](_0xbce8('0x91'),_0x2040fa,_0x2c930d[0x0],_0x4ce69d);}else{_0xfdbf99=_0x4ce69d;}}if(_0xbce8('0x21')!=typeof _0x283a21[_0xbce8('0x80')][_0xbce8('0x83')][_0xbce8('0x92')]){var _0x1177e4=_0x283a21[_0xbce8('0x80')][_0xbce8('0x83')][_0xbce8('0x92')];if(!/^(f|ht)tps?:\/\//i[_0xbce8('0x90')](_0x1177e4)){_0x4f5e24=path['join'](_0xbce8('0x91'),_0x2040fa,_0x2c930d[0x0],_0x1177e4);}else{_0x4f5e24=_0x1177e4;}}}}var _0x2892f0={'name':_0xbb6dbc,'description':_0x4916da,'path':path[_0xbce8('0x52')](_0x2040fa,_0x2c930d[0x0]),'type':_0x2a9d43,'sidebar':_0x5bccab,'icon':_0x16abbc,'adminUrl':_0xfdbf99,'agentUrl':_0x4f5e24,'scriptName':_0x5bc5e5,'scriptPath':_0x13ef85,'version':_0x149dae};removeReferences(_0x2c2ce9,null);return db[_0xbce8('0x33')][_0xbce8('0x94')](_0x2892f0)[_0xbce8('0x29')](function(_0x5cc7c0){var _0x31ac69={'role':_0x48005a[_0xbce8('0x95')][_0xbce8('0x96')],'userProfileId':_0x48005a[_0xbce8('0x95')][_0xbce8('0x97')]};if(!_0x31ac69)throw new Error(_0xbce8('0x98'));if(_0x31ac69[_0xbce8('0x96')]==='user'){var _0x228b3b=_0x5cc7c0['get']({'plain':!![]});return db['UserProfileSection'][_0xbce8('0x50')]({'where':{'name':_0xbce8('0x2c'),'userProfileId':_0x31ac69[_0xbce8('0x97')]},'raw':!![]})['then'](function(_0x371864){if(_0x371864&&_0x371864[_0xbce8('0x99')]===0x0){return db[_0xbce8('0x9a')][_0xbce8('0x94')]({'name':_0x228b3b['name'],'resourceId':_0x228b3b['id'],'type':_0x371864[_0xbce8('0x30')],'sectionId':_0x371864['id']},{})[_0xbce8('0x29')](function(){return _0x5cc7c0;});}else{return _0x5cc7c0;}})[_0xbce8('0x4c')](function(_0x2bbf89){logger[_0xbce8('0x2e')](_0xbce8('0x9b'),_0x2bbf89);throw _0x2bbf89;});}return _0x5cc7c0;})['then'](respondWithResult(_0x27d52e,null))[_0xbce8('0x4c')](handleError(_0x27d52e,null));}});}catch(_0x469ad2){_0x27d52e[_0xbce8('0x1f')](0x1f4)[_0xbce8('0x31')](_0x469ad2);}};function removeReferences(_0x5e3d05,_0x4d3116){try{if(_0x5e3d05){fs[_0xbce8('0x69')](_0x5e3d05);logger[_0xbce8('0x6a')](_0xbce8('0x9c'));}if(_0x4d3116){rimraf(_0x4d3116,function(){});logger[_0xbce8('0x6a')]('Extracted\x20folder\x20removed');}}catch(_0x35846f){logger[_0xbce8('0x2e')](_0x35846f);}}exports[_0xbce8('0x9d')]=function(_0x30a8cc,_0x35f818,_0x34d3f7){return db['Plugin'][_0xbce8('0x50')]({'where':{'id':_0x30a8cc[_0xbce8('0x4e')]['id']}})[_0xbce8('0x29')](handleEntityNotFound(_0x35f818,null))[_0xbce8('0x29')](saveUpdates(_0x30a8cc[_0xbce8('0x95')],null))[_0xbce8('0x29')](respondWithResult(_0x35f818,null))['catch'](handleError(_0x35f818,null));};exports[_0xbce8('0x9e')]=function(_0x36f352,_0x16a449,_0x4b7061){return db[_0xbce8('0x33')]['find']({'where':{'id':_0x36f352[_0xbce8('0x4e')]['id']}})['then'](function(_0x319bca){if(_0x319bca){return _0x319bca[_0xbce8('0x2a')]();}})[_0xbce8('0x29')](function(_0xf7b48b){rimraf(path[_0xbce8('0x52')](config[_0xbce8('0x71')],'server/files/plugins',path[_0xbce8('0x61')](_0xf7b48b['path'])),function(){});return _0xf7b48b;})[_0xbce8('0x29')](handleEntityNotFound(_0x16a449,null))[_0xbce8('0x29')](respondWithStatusCode(_0x16a449,null))[_0xbce8('0x4c')](handleError(_0x16a449,null));};exports[_0xbce8('0x9f')]=function(_0x3fdff1,_0x47fccc,_0x435543){return BPromise[_0xbce8('0xa0')]()[_0xbce8('0x29')](function(){if(!_0x3fdff1['query'][_0xbce8('0x7')]){throw new Error(_0xbce8('0xa1'));}if(!_0x3fdff1[_0xbce8('0x38')][_0xbce8('0xa2')]){throw new Error(_0xbce8('0xa3'));}var _0x1b2861=_0x3fdff1[_0xbce8('0x38')][_0xbce8('0xa4')]?_0x3fdff1[_0xbce8('0x38')][_0xbce8('0xa4')]+':'+_0x3fdff1[_0xbce8('0x38')][_0xbce8('0xa2')]:'http://localhost:'+_0x3fdff1['query'][_0xbce8('0xa2')];var _0x13b6fc=_0x3fdff1[_0xbce8('0x38')][_0xbce8('0x20')]?_0x3fdff1['query']['json']:!![];var _0x5bea9c=_0x3fdff1['query'][_0xbce8('0xa5')]?_0x3fdff1[_0xbce8('0x38')][_0xbce8('0xa5')]:null;var _0x5e0561={'method':_0x3fdff1[_0xbce8('0xa6')],'uri':util[_0xbce8('0x54')](_0xbce8('0xa7'),_0x1b2861,_0x3fdff1['query']['path']),'json':_0x13b6fc,'resolveWithFullResponse':!![],'encoding':_0x5bea9c,'qs':_0x3fdff1[_0xbce8('0x38')]};if(_0x3fdff1['headers']){_0x5e0561[_0xbce8('0xa8')]=_0x3fdff1[_0xbce8('0xa8')];if(_0x5e0561[_0xbce8('0xa8')][_0xbce8('0xa9')]){delete _0x5e0561[_0xbce8('0xa8')][_0xbce8('0xa9')];}}if(_0x5e0561['headers'][_0xbce8('0xaa')]){delete _0x5e0561[_0xbce8('0xa8')]['content-type'];}return rp(_0x5e0561);})['then'](function(_0x51a096){if(_0x51a096){_0x47fccc[_0xbce8('0x25')](_0x51a096['headers']);logger[_0xbce8('0x6a')](_0x51a096[_0xbce8('0x95')]);if(_['endsWith'](_0x3fdff1['query'][_0xbce8('0x7')],'download')&&_0x51a096[_0xbce8('0xab')]==0x1f4){return _0x47fccc[_0xbce8('0x1e')](_0x51a096[_0xbce8('0xab')]);}else{return _0x47fccc[_0xbce8('0x1f')](_0x51a096[_0xbce8('0xab')])[_0xbce8('0x31')](_0x51a096[_0xbce8('0x95')]);}}else{return _0x47fccc[_0xbce8('0x1e')](0xc8);}})[_0xbce8('0x4c')](handleError(_0x47fccc,null));};exports[_0xbce8('0xac')]=function(_0x5d0622,_0x5ef7d4,_0x131d42){return BPromise[_0xbce8('0xa0')]()[_0xbce8('0x29')](function(){if(!_0x5d0622[_0xbce8('0x38')][_0xbce8('0x7')]){throw new Error(_0xbce8('0xa1'));}if(!_0x5d0622[_0xbce8('0x38')][_0xbce8('0xa2')]){throw new Error(_0xbce8('0xa3'));}var _0xbc01e=_0x5d0622[_0xbce8('0x38')][_0xbce8('0xa4')]?_0x5d0622[_0xbce8('0x38')]['hostname']+':'+_0x5d0622[_0xbce8('0x38')][_0xbce8('0xa2')]:'http://localhost:'+_0x5d0622[_0xbce8('0x38')]['port'];var _0x1d4e2c=_0x5d0622[_0xbce8('0x38')][_0xbce8('0x20')]?_0x5d0622[_0xbce8('0x38')][_0xbce8('0x20')]:!![];var _0x595f85=_0x5d0622[_0xbce8('0x38')][_0xbce8('0xa5')]?_0x5d0622[_0xbce8('0x38')]['encoding']:null;var _0x6cbf22={'method':_0x5d0622[_0xbce8('0xa6')],'uri':util['format'](_0xbce8('0xa7'),_0xbc01e,_0x5d0622['query'][_0xbce8('0x7')]),'json':_0x1d4e2c,'resolveWithFullResponse':!![],'encoding':_0x595f85,'body':_0x5d0622[_0xbce8('0x95')]};if(_0x5d0622['headers']){_0x6cbf22[_0xbce8('0xa8')]=_0x5d0622['headers'];if(_0x6cbf22[_0xbce8('0xa8')][_0xbce8('0xa9')]){delete _0x6cbf22[_0xbce8('0xa8')][_0xbce8('0xa9')];}}if(_0x6cbf22[_0xbce8('0xa8')]['content-type']){delete _0x6cbf22[_0xbce8('0xa8')][_0xbce8('0xaa')];}return rp(_0x6cbf22);})[_0xbce8('0x29')](function(_0x430738){if(_0x430738){_0x5ef7d4[_0xbce8('0x25')](_0x430738[_0xbce8('0xa8')]);logger[_0xbce8('0x6a')](_0x430738[_0xbce8('0x95')]);return _0x5ef7d4['status'](_0x430738[_0xbce8('0xab')])[_0xbce8('0x31')](_0x430738[_0xbce8('0x95')]);}else{return _0x5ef7d4[_0xbce8('0x1e')](0xc8);}})['catch'](handleError(_0x5ef7d4,null));};
\ No newline at end of file
index 8c9abb9..e0b22fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96e0=['update','remove','emit','hasOwnProperty','hook','exports','events','Plugin'];(function(_0x5a9141,_0x2ccd7f){var _0x1a18a8=function(_0x3c3815){while(--_0x3c3815){_0x5a9141['push'](_0x5a9141['shift']());}};_0x1a18a8(++_0x2ccd7f);}(_0x96e0,0x7e));var _0x096e=function(_0x575dfb,_0x1f3753){_0x575dfb=_0x575dfb-0x0;var _0x540cf9=_0x96e0[_0x575dfb];return _0x540cf9;};'use strict';var EventEmitter=require(_0x096e('0x0'));var Plugin=require('../../mysqldb')['db'][_0x096e('0x1')];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x096e('0x2'),'afterDestroy':_0x096e('0x3')};function emitEvent(_0x44027f){return function(_0xaf295b,_0x58d22d,_0x54a9b6){PluginEvents['emit'](_0x44027f+':'+_0xaf295b['id'],_0xaf295b);PluginEvents[_0x096e('0x4')](_0x44027f,_0xaf295b);_0x54a9b6(null);};}for(var e in events){if(events[_0x096e('0x5')](e)){var event=events[e];Plugin[_0x096e('0x6')](e,emitEvent(event));}}module[_0x096e('0x7')]=PluginEvents;
\ No newline at end of file
+var _0x744c=['Plugin','setMaxListeners','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x583c51,_0x36e279){var _0x3b9148=function(_0x4d5a67){while(--_0x4d5a67){_0x583c51['push'](_0x583c51['shift']());}};_0x3b9148(++_0x36e279);}(_0x744c,0xa0));var _0xc744=function(_0xbf171b,_0x21c916){_0xbf171b=_0xbf171b-0x0;var _0x21ab7e=_0x744c[_0xbf171b];return _0x21ab7e;};'use strict';var EventEmitter=require(_0xc744('0x0'));var Plugin=require(_0xc744('0x1'))['db'][_0xc744('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0xc744('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xc744('0x4'),'afterDestroy':_0xc744('0x5')};function emitEvent(_0xe29616){return function(_0xde4228,_0x4f1c94,_0x5dc024){PluginEvents[_0xc744('0x6')](_0xe29616+':'+_0xde4228['id'],_0xde4228);PluginEvents[_0xc744('0x6')](_0xe29616,_0xde4228);_0x5dc024(null);};}for(var e in events){if(events[_0xc744('0x7')](e)){var event=events[e];Plugin[_0xc744('0x8')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
index 39663bf..460b1ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9740=['define','Plugin','plugins','util','../../config/logger','api','bluebird','request-promise','path','./plugin.attributes','exports'];(function(_0x4bb39f,_0x1f31e8){var _0xf2875d=function(_0xe477e4){while(--_0xe477e4){_0x4bb39f['push'](_0x4bb39f['shift']());}};_0xf2875d(++_0x1f31e8);}(_0x9740,0x10b));var _0x0974=function(_0x4542b7,_0x45b947){_0x4542b7=_0x4542b7-0x0;var _0x226db6=_0x9740[_0x4542b7];return _0x226db6;};'use strict';var _=require('lodash');var util=require(_0x0974('0x0'));var logger=require(_0x0974('0x1'))(_0x0974('0x2'));var moment=require('moment');var BPromise=require(_0x0974('0x3'));var rp=require(_0x0974('0x4'));var fs=require('fs');var path=require(_0x0974('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x0974('0x6'));module[_0x0974('0x7')]=function(_0x31075c,_0xb710b9){return _0x31075c[_0x0974('0x8')](_0x0974('0x9'),attributes,{'tableName':_0x0974('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x84ab=['request-promise','path','../../config/environment','./plugin.attributes','exports','Plugin','lodash','util','../../config/logger','api','moment'];(function(_0x10403c,_0x391bc7){var _0x15423b=function(_0x5bd404){while(--_0x5bd404){_0x10403c['push'](_0x10403c['shift']());}};_0x15423b(++_0x391bc7);}(_0x84ab,0x12f));var _0xb84a=function(_0x33bc64,_0x4d1e92){_0x33bc64=_0x33bc64-0x0;var _0x3fdd34=_0x84ab[_0x33bc64];return _0x3fdd34;};'use strict';var _=require(_0xb84a('0x0'));var util=require(_0xb84a('0x1'));var logger=require(_0xb84a('0x2'))(_0xb84a('0x3'));var moment=require(_0xb84a('0x4'));var BPromise=require('bluebird');var rp=require(_0xb84a('0x5'));var fs=require('fs');var path=require(_0xb84a('0x6'));var rimraf=require('rimraf');var config=require(_0xb84a('0x7'));var attributes=require(_0xb84a('0x8'));module[_0xb84a('0x9')]=function(_0x5b9def,_0x521a64){return _0x5b9def['define'](_0xb84a('0xa'),attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index de5d8fc..17a0dd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbfc=['error','code','Plugin,\x20%s,\x20%s','message','result','create','body','options','raw','CreatePlugin','stringify','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','register','request','then','info','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s'];(function(_0x17a7c5,_0x1e576a){var _0x2970f5=function(_0x2181df){while(--_0x2181df){_0x17a7c5['push'](_0x17a7c5['shift']());}};_0x2970f5(++_0x1e576a);}(_0xdbfc,0x198));var _0xcdbf=function(_0x3dae84,_0x2481cb){_0x3dae84=_0x3dae84-0x0;var _0xf4ca3a=_0xdbfc[_0x3dae84];return _0xf4ca3a;};'use strict';var _=require(_0xcdbf('0x0'));var util=require(_0xcdbf('0x1'));var moment=require('moment');var BPromise=require(_0xcdbf('0x2'));var rs=require(_0xcdbf('0x3'));var fs=require('fs');var Redis=require(_0xcdbf('0x4'));var db=require(_0xcdbf('0x5'))['db'];var utils=require(_0xcdbf('0x6'));var logger=require('../../config/logger')(_0xcdbf('0x7'));var config=require(_0xcdbf('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xcdbf('0x9')][_0xcdbf('0xa')]({'port':0x232a});config[_0xcdbf('0xb')]=_['defaults'](config[_0xcdbf('0xb')],{'host':_0xcdbf('0xc'),'port':0x18eb});var socket=require(_0xcdbf('0xd'))(new Redis(config[_0xcdbf('0xb')]));require('./plugin.socket')[_0xcdbf('0xe')](socket);function respondWithRpcPromise(_0x37ccc8,_0x20f2a8,_0x1e804b){return new BPromise(function(_0x42ab9b,_0x32f7c5){return client[_0xcdbf('0xf')](_0x37ccc8,_0x1e804b)[_0xcdbf('0x10')](function(_0xb6429c){logger[_0xcdbf('0x11')]('Plugin,\x20%s,\x20%s',_0x20f2a8,_0xcdbf('0x12'));logger[_0xcdbf('0x13')](_0xcdbf('0x14'),_0x20f2a8,_0xcdbf('0x12'),JSON['stringify'](_0xb6429c));if(_0xb6429c[_0xcdbf('0x15')]){if(_0xb6429c['error'][_0xcdbf('0x16')]===0x1f4){logger[_0xcdbf('0x15')](_0xcdbf('0x17'),_0x20f2a8,_0xb6429c[_0xcdbf('0x15')][_0xcdbf('0x18')]);return _0x32f7c5(_0xb6429c[_0xcdbf('0x15')][_0xcdbf('0x18')]);}logger[_0xcdbf('0x15')](_0xcdbf('0x17'),_0x20f2a8,_0xb6429c[_0xcdbf('0x15')]['message']);return _0x42ab9b(_0xb6429c[_0xcdbf('0x15')][_0xcdbf('0x18')]);}else{logger[_0xcdbf('0x11')](_0xcdbf('0x17'),_0x20f2a8,'request\x20sent');_0x42ab9b(_0xb6429c[_0xcdbf('0x19')]['message']);}})['catch'](function(_0x35cb33){logger[_0xcdbf('0x15')](_0xcdbf('0x17'),_0x20f2a8,_0x35cb33);_0x32f7c5(_0x35cb33);});});}exports['CreatePlugin']=function(_0x37a8bb){var _0x15d4f5=this;return new Promise(function(_0x540457,_0x2c47fa){return db['Plugin'][_0xcdbf('0x1a')](_0x37a8bb[_0xcdbf('0x1b')],{'raw':_0x37a8bb[_0xcdbf('0x1c')]?_0x37a8bb['options'][_0xcdbf('0x1d')]===undefined?!![]:![]:!![]})[_0xcdbf('0x10')](function(_0x232813){logger['info'](_0xcdbf('0x1e'),_0x37a8bb);logger[_0xcdbf('0x13')](_0xcdbf('0x1e'),_0x37a8bb,JSON[_0xcdbf('0x1f')](_0x232813));_0x540457(_0x232813);})[_0xcdbf('0x20')](function(_0x475367){logger['error'](_0xcdbf('0x1e'),_0x475367[_0xcdbf('0x18')],_0x37a8bb);_0x2c47fa(_0x15d4f5['error'](0x1f4,_0x475367[_0xcdbf('0x18')]));});});};
\ No newline at end of file
+var _0x7f39=['socket.io-emitter','./plugin.socket','register','request','info','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','message','Plugin,\x20%s,\x20%s','result','catch','CreatePlugin','Plugin','create','body','options','raw','then','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','redis','defaults','localhost'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7f39,0xfc));var _0x97f3=function(_0x559499,_0x2ecc11){_0x559499=_0x559499-0x0;var _0x476cb7=_0x7f39[_0x559499];return _0x476cb7;};'use strict';var _=require(_0x97f3('0x0'));var util=require('util');var moment=require(_0x97f3('0x1'));var BPromise=require('bluebird');var rs=require(_0x97f3('0x2'));var fs=require('fs');var Redis=require(_0x97f3('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x97f3('0x4'));var logger=require(_0x97f3('0x5'))('rpc');var config=require(_0x97f3('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x97f3('0x7')][_0x97f3('0x8')]({'port':0x232a});config[_0x97f3('0x9')]=_[_0x97f3('0xa')](config['redis'],{'host':_0x97f3('0xb'),'port':0x18eb});var socket=require(_0x97f3('0xc'))(new Redis(config['redis']));require(_0x97f3('0xd'))[_0x97f3('0xe')](socket);function respondWithRpcPromise(_0x3f9efb,_0x29c358,_0x3baaa0){return new BPromise(function(_0x3aa073,_0x174aba){return client[_0x97f3('0xf')](_0x3f9efb,_0x3baaa0)['then'](function(_0x171f3e){logger[_0x97f3('0x10')]('Plugin,\x20%s,\x20%s',_0x29c358,_0x97f3('0x11'));logger[_0x97f3('0x12')](_0x97f3('0x13'),_0x29c358,_0x97f3('0x11'),JSON[_0x97f3('0x14')](_0x171f3e));if(_0x171f3e[_0x97f3('0x15')]){if(_0x171f3e[_0x97f3('0x15')]['code']===0x1f4){logger[_0x97f3('0x15')]('Plugin,\x20%s,\x20%s',_0x29c358,_0x171f3e[_0x97f3('0x15')][_0x97f3('0x16')]);return _0x174aba(_0x171f3e[_0x97f3('0x15')]['message']);}logger[_0x97f3('0x15')](_0x97f3('0x17'),_0x29c358,_0x171f3e['error'][_0x97f3('0x16')]);return _0x3aa073(_0x171f3e['error']['message']);}else{logger['info'](_0x97f3('0x17'),_0x29c358,'request\x20sent');_0x3aa073(_0x171f3e[_0x97f3('0x18')][_0x97f3('0x16')]);}})[_0x97f3('0x19')](function(_0x1ce0e9){logger['error']('Plugin,\x20%s,\x20%s',_0x29c358,_0x1ce0e9);_0x174aba(_0x1ce0e9);});});}exports[_0x97f3('0x1a')]=function(_0x5457b8){var _0xd76ee=this;return new Promise(function(_0x4d35cf,_0x24955b){return db[_0x97f3('0x1b')][_0x97f3('0x1c')](_0x5457b8[_0x97f3('0x1d')],{'raw':_0x5457b8[_0x97f3('0x1e')]?_0x5457b8[_0x97f3('0x1e')][_0x97f3('0x1f')]===undefined?!![]:![]:!![]})[_0x97f3('0x20')](function(_0x392d99){logger[_0x97f3('0x10')](_0x97f3('0x1a'),_0x5457b8);logger[_0x97f3('0x12')](_0x97f3('0x1a'),_0x5457b8,JSON[_0x97f3('0x14')](_0x392d99));_0x4d35cf(_0x392d99);})[_0x97f3('0x19')](function(_0x2b463d){logger[_0x97f3('0x15')](_0x97f3('0x1a'),_0x2b463d[_0x97f3('0x16')],_0x5457b8);_0x24955b(_0xd76ee[_0x97f3('0x15')](0x1f4,_0x2b463d[_0x97f3('0x16')]));});});};
\ No newline at end of file
index adca9d1..d18132c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd13=['removeListener','register','length','plugin:','./plugin.events','save','remove'];(function(_0x2b409a,_0x548e1f){var _0x40ec96=function(_0x351fc2){while(--_0x351fc2){_0x2b409a['push'](_0x2b409a['shift']());}};_0x40ec96(++_0x548e1f);}(_0xbd13,0x170));var _0x3bd1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbd13[_0x3dd15e];return _0x231fd0;};'use strict';var PluginEvents=require(_0x3bd1('0x0'));var events=[_0x3bd1('0x1'),_0x3bd1('0x2'),'update'];function createListener(_0x227df7,_0x5c84bb){return function(_0x4bbd81){_0x5c84bb['emit'](_0x227df7,_0x4bbd81);};}function removeListener(_0x1dd6bb,_0x11604f){return function(){PluginEvents[_0x3bd1('0x3')](_0x1dd6bb,_0x11604f);};}exports[_0x3bd1('0x4')]=function(_0x7c2921){for(var _0x5e6167=0x0,_0x324023=events[_0x3bd1('0x5')];_0x5e6167<_0x324023;_0x5e6167++){var _0x4ae21a=events[_0x5e6167];var _0x2d5efd=createListener(_0x3bd1('0x6')+_0x4ae21a,_0x7c2921);PluginEvents['on'](_0x4ae21a,_0x2d5efd);}};
\ No newline at end of file
+var _0x9bb0=['save','remove','update','removeListener','register','length','plugin:'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x9bb0,0x77));var _0x09bb=function(_0x57d209,_0x37dc1a){_0x57d209=_0x57d209-0x0;var _0x182ced=_0x9bb0[_0x57d209];return _0x182ced;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0x09bb('0x0'),_0x09bb('0x1'),_0x09bb('0x2')];function createListener(_0x5ce3c1,_0x24c722){return function(_0x58df8f){_0x24c722['emit'](_0x5ce3c1,_0x58df8f);};}function removeListener(_0x19a3f4,_0x198faa){return function(){PluginEvents[_0x09bb('0x3')](_0x19a3f4,_0x198faa);};}exports[_0x09bb('0x4')]=function(_0x54b629){for(var _0x5ed084=0x0,_0x1bc983=events[_0x09bb('0x5')];_0x5ed084<_0x1bc983;_0x5ed084++){var _0x424c17=events[_0x5ed084];var _0x28a9b5=createListener(_0x09bb('0x6')+_0x424c17,_0x54b629);PluginEvents['on'](_0x424c17,_0x28a9b5);}};
\ No newline at end of file
index 965a719..8bd3c9a 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(_0x5dfb2b,_0x18a94a){var _0x4fdc8c=function(_0xc00431){while(--_0xc00431){_0x5dfb2b['push'](_0x5dfb2b['shift']());}};_0x4fdc8c(++_0x18a94a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'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(_0x1b34e4,_0x33b0e7){var _0x4608c8=function(_0x59b23c){while(--_0x59b23c){_0x1b34e4['push'](_0x1b34e4['shift']());}};_0x4608c8(++_0x33b0e7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa9e0[_0x4c7fb5];return _0x2e10ac;};'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 6ad2cfc..a8cbda5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ff3=['Unknown\x20id','../../config/pm2','api','child_process','exec','bluebird','sendStatus','json','error','name','status','send','npm\x20install','info','index','list','then','reject','express','motion2','length','catch','show','describe','params','create','body','join','../../files/plugins','chdir','dirname','start','Missing\x20name\x20and/or\x20path','update','restart','hasOwnProperty','Unknown\x20status','delete'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0x5ff3,0x17d));var _0x35ff=function(_0x1337ff,_0x108e3c){_0x1337ff=_0x1337ff-0x0;var _0x5d1d64=_0x5ff3[_0x1337ff];return _0x5d1d64;};'use strict';var _=require('lodash');var pm2=require(_0x35ff('0x0'));var logger=require('../../config/logger')(_0x35ff('0x1'));var path=require('path');var exec=require(_0x35ff('0x2'))[_0x35ff('0x3')];var BPromise=require(_0x35ff('0x4'));function handleEntityNotFound(_0xd0846d,_0x551514){return function(_0x2fcb74){if(!_0x2fcb74){_0xd0846d[_0x35ff('0x5')](0x194);;}return _0x2fcb74;};}function respondWithResult(_0x2e9873,_0x11e738){_0x11e738=_0x11e738||0xc8;return function(_0x30c3ff){if(_0x30c3ff){return _0x2e9873['status'](_0x11e738)[_0x35ff('0x6')](_0x30c3ff);}return null;};}function handleError(_0x4c9fab,_0x2e7470){_0x2e7470=_0x2e7470||0x1f4;return function(_0xfcec34){logger[_0x35ff('0x7')](_0xfcec34['stack']);if(_0xfcec34[_0x35ff('0x8')]){delete _0xfcec34['name'];}_0x4c9fab[_0x35ff('0x9')](_0x2e7470)[_0x35ff('0xa')](_0xfcec34);};}function execChildProcess(){return new BPromise(function(_0x57ad20,_0x5c3131){exec(_0x35ff('0xb'),function(_0x574c81,_0x592295,_0x567080){logger[_0x35ff('0xc')](_0x592295);logger[_0x35ff('0xc')](_0x567080);if(_0x574c81){logger[_0x35ff('0x7')](_0x574c81);return _0x5c3131(_0x574c81);}return _0x57ad20(_0x592295);});});}exports[_0x35ff('0xd')]=function(_0x559e33,_0x33154f){return pm2[_0x35ff('0xe')]()[_0x35ff('0xf')](function(_0x4d1d41){if(_0x4d1d41){var _0xff8ac=_[_0x35ff('0x10')](_0x4d1d41,function(_0x254975){return _0x254975[_0x35ff('0x8')]===_0x35ff('0x11')||_0x254975[_0x35ff('0x8')]===_0x35ff('0x12');});return{'rows':_0xff8ac,'count':_0xff8ac[_0x35ff('0x13')]};}return null;})[_0x35ff('0xf')](respondWithResult(_0x33154f,null))[_0x35ff('0x14')](handleError(_0x33154f,null));};exports[_0x35ff('0x15')]=function(_0x3430e2,_0x37ea06){return pm2[_0x35ff('0x16')](_0x3430e2[_0x35ff('0x17')]['id'])['then'](respondWithResult(_0x37ea06,null))[_0x35ff('0xf')](handleEntityNotFound(_0x37ea06,null))[_0x35ff('0x14')](handleError(_0x37ea06,null));};exports[_0x35ff('0x18')]=function(_0x1c0d8c,_0x567bcb){if(_0x1c0d8c['body'][_0x35ff('0x8')]&&_0x1c0d8c[_0x35ff('0x19')]['script']){var _0x238f65=path[_0x35ff('0x1a')](__dirname,_0x35ff('0x1b'),_0x1c0d8c[_0x35ff('0x19')]['script']);var _0x3d60b4=process['cwd']();process[_0x35ff('0x1c')](path[_0x35ff('0x1d')](_0x238f65));return execChildProcess()[_0x35ff('0xf')](function(_0x16a5a0){process[_0x35ff('0x1c')](_0x3d60b4);return pm2[_0x35ff('0x1e')]({'name':_0x1c0d8c[_0x35ff('0x19')]['name'],'script':_0x238f65});})[_0x35ff('0xf')](function(_0x2ffcb){pm2['dump']();return _0x2ffcb[0x0];})[_0x35ff('0xf')](respondWithResult(_0x567bcb,0xc9))['catch'](handleError(_0x567bcb,null));}else{return _0x567bcb['status'](0x1f4)[_0x35ff('0xa')]({'message':_0x35ff('0x1f')});}};exports[_0x35ff('0x20')]=function(_0x11a5eb,_0x302d5a){if(_0x11a5eb['body']['id']){delete _0x11a5eb[_0x35ff('0x19')]['id'];}var _0x412873={'online':_0x35ff('0x21'),'stopped':'stop'};if(_0x412873[_0x35ff('0x22')](_0x11a5eb[_0x35ff('0x19')][_0x35ff('0x9')])){return pm2[_0x412873[_0x11a5eb[_0x35ff('0x19')][_0x35ff('0x9')]]](_0x11a5eb[_0x35ff('0x17')]['id'])[_0x35ff('0xf')](respondWithResult(_0x302d5a,0xc8))[_0x35ff('0x14')](handleError(_0x302d5a,null));}else{return _0x302d5a[_0x35ff('0x9')](0x1f4)['send']({'message':_0x35ff('0x23')});}};exports['destroy']=function(_0x1cb370,_0x257501){if(_0x1cb370[_0x35ff('0x19')]['id']){delete _0x1cb370[_0x35ff('0x19')]['id'];}if(_0x1cb370['params']['id']){return pm2[_0x35ff('0x24')](_0x1cb370['params']['id'])[_0x35ff('0xf')](function(_0xf88865){pm2['dump']();return _0xf88865[0x0];})['then'](respondWithResult(_0x257501,null))[_0x35ff('0x14')](handleError(_0x257501,null));}else{return _0x257501[_0x35ff('0x9')](0x1f4)['send']({'message':_0x35ff('0x25')});}};
\ No newline at end of file
+var _0x41bb=['restart','stop','hasOwnProperty','Unknown\x20status','delete','dump','Unknown\x20id','lodash','../../config/pm2','api','child_process','exec','bluebird','sendStatus','json','error','stack','name','status','send','info','index','list','then','express','motion2','catch','show','describe','params','create','body','join','../../files/plugins','script','dirname','start','update'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x41bb,0xc5));var _0xb41b=function(_0x536320,_0x56301f){_0x536320=_0x536320-0x0;var _0x5dcd95=_0x41bb[_0x536320];return _0x5dcd95;};'use strict';var _=require(_0xb41b('0x0'));var pm2=require(_0xb41b('0x1'));var logger=require('../../config/logger')(_0xb41b('0x2'));var path=require('path');var exec=require(_0xb41b('0x3'))[_0xb41b('0x4')];var BPromise=require(_0xb41b('0x5'));function handleEntityNotFound(_0x448c8e,_0x4ee21b){return function(_0x12cea3){if(!_0x12cea3){_0x448c8e[_0xb41b('0x6')](0x194);;}return _0x12cea3;};}function respondWithResult(_0x2dbaa3,_0x50bc62){_0x50bc62=_0x50bc62||0xc8;return function(_0x5455ce){if(_0x5455ce){return _0x2dbaa3['status'](_0x50bc62)[_0xb41b('0x7')](_0x5455ce);}return null;};}function handleError(_0x29c30d,_0x53722a){_0x53722a=_0x53722a||0x1f4;return function(_0x13d44e){logger[_0xb41b('0x8')](_0x13d44e[_0xb41b('0x9')]);if(_0x13d44e[_0xb41b('0xa')]){delete _0x13d44e[_0xb41b('0xa')];}_0x29c30d[_0xb41b('0xb')](_0x53722a)[_0xb41b('0xc')](_0x13d44e);};}function execChildProcess(){return new BPromise(function(_0x4baa03,_0x1a9e2c){exec('npm\x20install',function(_0x2e906c,_0xb02d60,_0x1e1c82){logger[_0xb41b('0xd')](_0xb02d60);logger[_0xb41b('0xd')](_0x1e1c82);if(_0x2e906c){logger['error'](_0x2e906c);return _0x1a9e2c(_0x2e906c);}return _0x4baa03(_0xb02d60);});});}exports[_0xb41b('0xe')]=function(_0x2d947a,_0x33d1b5){return pm2[_0xb41b('0xf')]()[_0xb41b('0x10')](function(_0x4e8603){if(_0x4e8603){var _0x4e7f11=_['reject'](_0x4e8603,function(_0x1a09ec){return _0x1a09ec[_0xb41b('0xa')]===_0xb41b('0x11')||_0x1a09ec[_0xb41b('0xa')]===_0xb41b('0x12');});return{'rows':_0x4e7f11,'count':_0x4e7f11['length']};}return null;})[_0xb41b('0x10')](respondWithResult(_0x33d1b5,null))[_0xb41b('0x13')](handleError(_0x33d1b5,null));};exports[_0xb41b('0x14')]=function(_0xcf0728,_0x43f4ea){return pm2[_0xb41b('0x15')](_0xcf0728[_0xb41b('0x16')]['id'])['then'](respondWithResult(_0x43f4ea,null))['then'](handleEntityNotFound(_0x43f4ea,null))['catch'](handleError(_0x43f4ea,null));};exports[_0xb41b('0x17')]=function(_0x503e86,_0x307633){if(_0x503e86[_0xb41b('0x18')][_0xb41b('0xa')]&&_0x503e86['body']['script']){var _0x1a1386=path[_0xb41b('0x19')](__dirname,_0xb41b('0x1a'),_0x503e86[_0xb41b('0x18')][_0xb41b('0x1b')]);var _0x42dccb=process['cwd']();process['chdir'](path[_0xb41b('0x1c')](_0x1a1386));return execChildProcess()[_0xb41b('0x10')](function(_0x871b35){process['chdir'](_0x42dccb);return pm2[_0xb41b('0x1d')]({'name':_0x503e86[_0xb41b('0x18')]['name'],'script':_0x1a1386});})[_0xb41b('0x10')](function(_0x34f908){pm2['dump']();return _0x34f908[0x0];})[_0xb41b('0x10')](respondWithResult(_0x307633,0xc9))['catch'](handleError(_0x307633,null));}else{return _0x307633[_0xb41b('0xb')](0x1f4)[_0xb41b('0xc')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0xb41b('0x1e')]=function(_0x4265b8,_0x583099){if(_0x4265b8['body']['id']){delete _0x4265b8[_0xb41b('0x18')]['id'];}var _0x46aecf={'online':_0xb41b('0x1f'),'stopped':_0xb41b('0x20')};if(_0x46aecf[_0xb41b('0x21')](_0x4265b8[_0xb41b('0x18')][_0xb41b('0xb')])){return pm2[_0x46aecf[_0x4265b8['body'][_0xb41b('0xb')]]](_0x4265b8[_0xb41b('0x16')]['id'])['then'](respondWithResult(_0x583099,0xc8))[_0xb41b('0x13')](handleError(_0x583099,null));}else{return _0x583099['status'](0x1f4)[_0xb41b('0xc')]({'message':_0xb41b('0x22')});}};exports['destroy']=function(_0x23a6ed,_0x4a95e7){if(_0x23a6ed[_0xb41b('0x18')]['id']){delete _0x23a6ed[_0xb41b('0x18')]['id'];}if(_0x23a6ed['params']['id']){return pm2[_0xb41b('0x23')](_0x23a6ed[_0xb41b('0x16')]['id'])[_0xb41b('0x10')](function(_0x4503cf){pm2[_0xb41b('0x24')]();return _0x4503cf[0x0];})[_0xb41b('0x10')](respondWithResult(_0x4a95e7,null))[_0xb41b('0x13')](handleError(_0x4a95e7,null));}else{return _0x4a95e7[_0xb41b('0xb')](0x1f4)[_0xb41b('0xc')]({'message':_0xb41b('0x25')});}};
\ No newline at end of file
index 69a12eb..4429d32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3445=['../../components/auth/service','./realtime.controller','get','/queues','isAuthenticated','express','Router'];(function(_0x42c64b,_0x5c8d2e){var _0x32e8d7=function(_0x4797a2){while(--_0x4797a2){_0x42c64b['push'](_0x42c64b['shift']());}};_0x32e8d7(++_0x5c8d2e);}(_0x3445,0x1b7));var _0x5344=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3445[_0x3dd15e];return _0x231fd0;};'use strict';var express=require(_0x5344('0x0'));var router=express[_0x5344('0x1')]();var auth=require(_0x5344('0x2'));var controller=require(_0x5344('0x3'));router[_0x5344('0x4')](_0x5344('0x5'),auth[_0x5344('0x6')](),controller['getQueues']);module['exports']=router;
\ No newline at end of file
+var _0x4ca4=['express','Router','../../components/auth/service','./realtime.controller','get','/queues','isAuthenticated','getQueues'];(function(_0x249d7c,_0x17163a){var _0x20f24b=function(_0x5db7c4){while(--_0x5db7c4){_0x249d7c['push'](_0x249d7c['shift']());}};_0x20f24b(++_0x17163a);}(_0x4ca4,0x100));var _0x44ca=function(_0x39dc92,_0x5599f0){_0x39dc92=_0x39dc92-0x0;var _0x3f750f=_0x4ca4[_0x39dc92];return _0x3f750f;};'use strict';var express=require(_0x44ca('0x0'));var router=express[_0x44ca('0x1')]();var auth=require(_0x44ca('0x2'));var controller=require(_0x44ca('0x3'));router[_0x44ca('0x4')](_0x44ca('0x5'),auth[_0x44ca('0x6')](),controller[_0x44ca('0x7')]);module['exports']=router;
\ No newline at end of file
index 4a33030..cb7aa40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc6b=['sms','openchannel','fax','whatsapp','resolve','channel','includes','query','Invalid\x20channel','toLowerCase','fieldName','type','key','getOptions','user','role','userProfileId','findAndCountAll','rows','all','lodash','jayson/promise','../../components/parsers/qs','../../config/logger','../../mysqldb','client','http','offset','limit','undefined','count','status','Content-Range','error','stack','name','send','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','startCase','Queues','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','VoiceQueuesChannels','waiting','talking','paused','voice','push','originated','message','dialActive','dialMethod','startPredictive','startProgressive','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgTalktime','map','get','agents','loggedInDb','available','busy','outbound','pTalking','find','pick','queue','length','toString','getMembers','UserId','accountcode','voiceStatus','User','Queue','Pause','findAll','QueueId','online','mail','chat'];(function(_0x25662e,_0x4cec68){var _0x59b7bc=function(_0xafb159){while(--_0xafb159){_0x25662e['push'](_0x25662e['shift']());}};_0x59b7bc(++_0x4cec68);}(_0xbc6b,0x6f));var _0xbbc6=function(_0x4a6cf8,_0x5534ef){_0x4a6cf8=_0x4a6cf8-0x0;var _0x22205e=_0xbc6b[_0x4a6cf8];return _0x22205e;};'use strict';var util=require('util');var _=require(_0xbbc6('0x0'));var jayson=require(_0xbbc6('0x1'));var qs=require(_0xbbc6('0x2'));var logger=require(_0xbbc6('0x3'))('api');var db=require(_0xbbc6('0x4'))['db'];var amiClient=jayson[_0xbbc6('0x5')][_0xbbc6('0x6')]({'port':0x232a});var routingClient=jayson[_0xbbc6('0x5')][_0xbbc6('0x6')]({'port':0x232c});function respondWithFilteredResult(_0x38dd5a,_0x416030){return function(_0x4128f0){if(_0x4128f0){var _0x426c85=typeof _0x416030[_0xbbc6('0x7')]==='undefined'&&typeof _0x416030[_0xbbc6('0x8')]===_0xbbc6('0x9');var _0x1a493f=_0x4128f0[_0xbbc6('0xa')];var _0x2636bf=_0x426c85?0x0:_0x416030[_0xbbc6('0x7')];var _0x12da42=_0x426c85?_0x4128f0['count']:_0x416030[_0xbbc6('0x7')]+_0x416030[_0xbbc6('0x8')];var _0x359b1a;if(_0x12da42>=_0x1a493f){_0x12da42=_0x1a493f;_0x359b1a=0xc8;}else{_0x359b1a=0xce;}_0x38dd5a[_0xbbc6('0xb')](_0x359b1a);return _0x38dd5a['set'](_0xbbc6('0xc'),_0x2636bf+'-'+_0x12da42+'/'+_0x1a493f)['json'](_0x4128f0);}return null;};}function handleError(_0x7d1ec8,_0x14d567){_0x14d567=_0x14d567||0x1f4;return function(_0x4d0c22){logger[_0xbbc6('0xd')](_0x4d0c22[_0xbbc6('0xe')]);if(_0x4d0c22[_0xbbc6('0xf')]){delete _0x4d0c22[_0xbbc6('0xf')];}_0x7d1ec8[_0xbbc6('0xb')](_0x14d567)[_0xbbc6('0x10')](_0x4d0c22);};}function getRealtimeAgents(){return new Promise(function(_0x36f7aa,_0x327484){return amiClient['request']('Agents',{})[_0xbbc6('0x11')](function(_0x4c7d6b){if(_0x4c7d6b[_0xbbc6('0xd')])throw new Error(_0xbbc6('0x12'));var _0x28e4b9=_0x4c7d6b[_0xbbc6('0x13')];return routingClient[_0xbbc6('0x14')](_0xbbc6('0x15'),{})[_0xbbc6('0x11')](function(_0x23296d){if(_0x23296d['error'])throw new Error(_0xbbc6('0x16'));var _0x587e17=_0x23296d[_0xbbc6('0x13')];return _0x36f7aa(_[_0xbbc6('0x17')]({},_0x28e4b9,_0x587e17));});})[_0xbbc6('0x18')](function(_0x4660f7){_0x327484(_0x4660f7);});});}function getRealtimeQueues(_0x54b257,_0x37cdef){return new Promise(function(_0x3d08a4,_0x3ae8d1){var _0x70e1d5=_0x37cdef==='voice'?amiClient:routingClient;return _0x70e1d5[_0xbbc6('0x14')](_[_0xbbc6('0x19')](_0x37cdef)+_0xbbc6('0x1a'),_0x54b257)[_0xbbc6('0x11')](function(_0x200628){if(_0x200628[_0xbbc6('0xd')])throw new Error(util['format'](_0xbbc6('0x1b'),_0x37cdef));return _0x3d08a4(_0x200628[_0xbbc6('0x13')]);})[_0xbbc6('0x18')](function(_0x5c369c){_0x3ae8d1(_0x5c369c);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x121a61,_0x24f30e){return amiClient[_0xbbc6('0x14')](_0xbbc6('0x1c'),{})['then'](function(_0x275228){if(_0x275228['error'])throw new Error('Unable\x20to\x20retrieve\x20voice\x20queues\x20channels');return _0x121a61(_0x275228[_0xbbc6('0x13')]);})['catch'](function(_0x2cec54){_0x24f30e(_0x2cec54);});});}function initializeQueues(_0x1542fa,_0x16364c,_0x17bb24,_0x1eaad5){var _0x7e55b0=['loggedIn','available',_0xbbc6('0x1d'),_0xbbc6('0x1e'),_0xbbc6('0x1f')];if(_0x17bb24===_0xbbc6('0x20')&&_0x1eaad5==='outbound'){_0x7e55b0[_0xbbc6('0x21')]('pTalking',_0xbbc6('0x22'),_0xbbc6('0x23'),_0xbbc6('0x24'),_0xbbc6('0x25'),'Trunk',_0xbbc6('0x26'),_0xbbc6('0x27'),'erlangCalls','erlangCallToSecond','erlangAbandonmentRate',_0xbbc6('0x28'),_0xbbc6('0x29'),'dialPredictiveIntervalMaxThreshold',_0xbbc6('0x2a'),'predictiveIntervalAvailable',_0xbbc6('0x2b'),'predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout',_0xbbc6('0x2c'),'predictiveIntervalAvgHoldtime',_0xbbc6('0x2d'));}return _0x1542fa[_0xbbc6('0x2e')](function(_0x21b943){var _0x382bd8=_0x21b943[_0xbbc6('0x2f')]({'plain':!![]});_0x382bd8[_0xbbc6('0x30')]=[];_0x382bd8[_0xbbc6('0x1f')]=0x0;_0x382bd8[_0xbbc6('0x31')]=0x0;_0x382bd8['loggedIn']=0x0;_0x382bd8[_0xbbc6('0x32')]=0x0;_0x382bd8[_0xbbc6('0x1d')]=0x0;if(_0x17bb24===_0xbbc6('0x20')){_0x382bd8[_0xbbc6('0x1e')]=0x0;_0x382bd8[_0xbbc6('0x33')]=0x0;if(_0x1eaad5===_0xbbc6('0x34')){_0x382bd8[_0xbbc6('0x35')]=0x0;_0x382bd8[_0xbbc6('0x22')]=0x0;}}var _0x150363=_[_0xbbc6('0x36')](_0x16364c,['id',_0x382bd8['id']]);if(_0x150363)_['merge'](_0x382bd8,_[_0xbbc6('0x37')](_0x150363,_0x7e55b0));return _0x382bd8;});}function updateAgentVoiceStatus(_0x3d1312,_0x6fe5a6,_0x37972c){var _0x4fc894=_['filter'](_0x37972c,[_0xbbc6('0x38'),_0x6fe5a6[_0xbbc6('0xf')]]);if(_0x4fc894[_0xbbc6('0x39')]===0x0)return _0x3d1312[_0xbbc6('0x33')]=!![];if(_['some'](_0x4fc894,['connectedlinenum',_0x3d1312['internal'][_0xbbc6('0x3a')]()]))return _0x3d1312[_0xbbc6('0x1e')]=!![];if(!_0x3d1312['talking'])return _0x3d1312['busy']=!![];}function getVoiceQueueAgents(_0x1c7e37,_0x3138b3,_0xbdc5d6,_0x219e31){var _0x637a13=_[_0xbbc6('0x36')](_0x3138b3,['id',_0x1c7e37['id']]);if(!_0x637a13)return _0x1c7e37;return _0x637a13[_0xbbc6('0x3b')]({'raw':!![]})[_0xbbc6('0x11')](function(_0x1bdc1e){for(var _0x1b0a49=0x0;_0x1b0a49<_0x1bdc1e[_0xbbc6('0x39')];_0x1b0a49++){var _0x181b83=_['find'](_0xbdc5d6,['id',_0x1bdc1e[_0x1b0a49][_0xbbc6('0x3c')]]);if(!_0x181b83){_0x181b83={'id':_0x1bdc1e[_0x1b0a49][_0xbbc6('0x3c')],'name':_0x1bdc1e[_0x1b0a49][_0xbbc6('0x3c')],'accountcode':'','online':![]};}var _0x6b4922={'id':_0x181b83['id'],'name':_0x181b83[_0xbbc6('0xf')],'internal':_0x181b83[_0xbbc6('0x3d')],'online':Boolean(_0x181b83['online']),'paused':Boolean(_0x1bdc1e[_0x1b0a49][_0xbbc6('0x1f')])};if(_0x181b83[_0xbbc6('0x3e')]==='talking')updateAgentVoiceStatus(_0x6b4922,_0x1c7e37,_0x219e31);if(_0x6b4922['online'])_0x1c7e37[_0xbbc6('0x31')]++;if(_0x6b4922[_0xbbc6('0x33')])_0x1c7e37[_0xbbc6('0x33')]++;if(_0x6b4922[_0xbbc6('0x1f')]&&!_0x6b4922[_0xbbc6('0x33')]&&!_0x6b4922[_0xbbc6('0x1e')])_0x1c7e37[_0xbbc6('0x1f')]++;_0x1c7e37['agents']['push'](_0x6b4922);}return _0x1c7e37;});}function getQueueAgents(_0x3a479c,_0x1bdabc,_0x38aac5){var _0x7c83f3=_0xbbc6('0x3f')+_[_0xbbc6('0x19')](_0x38aac5)+_0xbbc6('0x40');var _0x9404e4=_0x38aac5+_0xbbc6('0x41');return db[_0x7c83f3][_0xbbc6('0x42')]({'where':{[_[_0xbbc6('0x19')](_0x38aac5)+_0xbbc6('0x43')]:_0x3a479c['id']},'raw':!![]})[_0xbbc6('0x11')](function(_0x1e8ecc){for(var _0x42a11a=0x0;_0x42a11a<_0x1e8ecc['length'];_0x42a11a++){var _0x15fdba=_[_0xbbc6('0x36')](_0x1bdabc,['id',_0x1e8ecc[_0x42a11a][_0xbbc6('0x3c')]]);if(!_0x15fdba){_0x15fdba={'id':_0x1e8ecc[_0x42a11a][_0xbbc6('0x3c')],'name':_0x1e8ecc[_0x42a11a]['UserId'],'online':![],['pauseField']:![]};}var _0x4358d4={'id':_0x15fdba['id'],'name':_0x15fdba[_0xbbc6('0xf')],'online':Boolean(_0x15fdba[_0xbbc6('0x44')]),'paused':Boolean(_0x15fdba[_0x9404e4])};if(_0x4358d4[_0xbbc6('0x44')])_0x3a479c[_0xbbc6('0x31')]++;_0x3a479c[_0xbbc6('0x30')][_0xbbc6('0x21')](_0x4358d4);}return _0x3a479c;});}exports['getQueues']=function(_0x13987b,_0x2ce3b6){var _0x5b4c3a=[_0xbbc6('0x45'),_0xbbc6('0x46'),_0xbbc6('0x47'),_0xbbc6('0x48'),_0xbbc6('0x49'),_0xbbc6('0x4a'),_0xbbc6('0x20')];var _0x3f40cf={'count':0x0,'rows':[]},_0x5b5821={},_0x2bc861,_0x3131b2,_0x444f12,_0x297d92,_0x5e9385;Promise[_0xbbc6('0x4b')]()[_0xbbc6('0x11')](function(){if(_0x13987b['query'][_0xbbc6('0x4c')]){if(!_[_0xbbc6('0x4d')](_0x5b4c3a,_0x13987b[_0xbbc6('0x4e')]['channel']['toLowerCase']()))throw new Error(_0xbbc6('0x4f'));_0x2bc861=_0x13987b[_0xbbc6('0x4e')][_0xbbc6('0x4c')][_0xbbc6('0x50')]();}var _0x41349a=_[_0xbbc6('0x19')](_0x2bc861)+_0xbbc6('0x40');var _0x37d749=_[_0xbbc6('0x2e')](db[_0x41349a]['rawAttributes'],function(_0x129420){return{'name':_0x129420[_0xbbc6('0x51')],'type':_0x129420[_0xbbc6('0x52')][_0xbbc6('0x53')]};});_0x5b5821=qs[_0xbbc6('0x54')](_0x37d749,_0x13987b);if(_0x13987b[_0xbbc6('0x55')][_0xbbc6('0x56')]==='user'){var _0xfaf19a={'params':{'id':_0x13987b[_0xbbc6('0x55')][_0xbbc6('0x57')]},'query':{'section':_0x2bc861===_0xbbc6('0x20')&&_0x13987b[_0xbbc6('0x4e')][_0xbbc6('0x52')]===_0xbbc6('0x34')?'QueueCampaigns':_[_0xbbc6('0x19')](_0x2bc861)+_0xbbc6('0x1a'),'type':_0x13987b[_0xbbc6('0x4e')][_0xbbc6('0x52')],'nolimit':!![],'sort':_0xbbc6('0xf'),'filter':_0x13987b[_0xbbc6('0x4e')]['filter']}};return db['UserProfile']['getResources'](_0xfaf19a);}return db[_0x41349a][_0xbbc6('0x58')](_0x5b5821);})[_0xbbc6('0x11')](function(_0x465e20){_0x3f40cf[_0xbbc6('0xa')]=_0x465e20['count'];_0x3131b2=_0x465e20[_0xbbc6('0x59')];return getRealtimeQueues(_0x13987b,_0x2bc861);})[_0xbbc6('0x11')](function(_0x525e60){_0x297d92=_0x525e60[_0xbbc6('0x59')];return getRealtimeAgents();})[_0xbbc6('0x11')](function(_0x3f295e){_0x444f12=_0x3f295e[_0xbbc6('0x59')];if(_0x2bc861!=_0xbbc6('0x20'))return;return getRealtimeVoiceQueueChannels();})[_0xbbc6('0x11')](function(_0x12ee20){_0x5e9385=_0x12ee20?_0x12ee20[_0xbbc6('0x59')]:[];return initializeQueues(_0x3131b2,_0x297d92,_0x2bc861,_0x13987b[_0xbbc6('0x4e')][_0xbbc6('0x52')]);})[_0xbbc6('0x11')](function(_0x4c732c){var _0x3be50c=_0x4c732c['map'](function(_0x3b09bb){if(_0x2bc861===_0xbbc6('0x20'))return getVoiceQueueAgents(_0x3b09bb,_0x3131b2,_0x444f12,_0x5e9385);else return getQueueAgents(_0x3b09bb,_0x444f12,_0x2bc861);});return Promise[_0xbbc6('0x5a')](_0x3be50c);})['then'](function(_0x24b4a0){_0x3f40cf['rows']=_0x24b4a0;return _0x3f40cf;})[_0xbbc6('0x11')](respondWithFilteredResult(_0x2ce3b6,_0x5b5821))[_0xbbc6('0x18')](handleError(_0x2ce3b6,null));};
\ No newline at end of file
+var _0x11e5=['fieldName','type','key','getOptions','user','role','outbound','QueueCampaigns','Queues','filter','getResources','findAndCountAll','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','loggedIn','waiting','talking','paused','push','originated','message','dialActive','dialMethod','startProgressive','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','get','loggedInDb','available','pTalking','merge','pick','getAgents','online','getMembers','length','agents','Queue','QueueId','User','findAll','UserId','agent','all','rows','catch','util','jayson/promise','../../components/parsers/qs','api','../../mysqldb','client','limit','undefined','count','offset','set','error','stack','name','status','send','mail','chat','sms','openchannel','whatsapp','voice','then','includes','channel','toLowerCase','Invalid\x20channel','query','startCase','map','rawAttributes'];(function(_0x3f2d47,_0x48af3d){var _0x5a575d=function(_0x32f193){while(--_0x32f193){_0x3f2d47['push'](_0x3f2d47['shift']());}};_0x5a575d(++_0x48af3d);}(_0x11e5,0x8b));var _0x511e=function(_0x1ec06d,_0xe71dfb){_0x1ec06d=_0x1ec06d-0x0;var _0x2a434f=_0x11e5[_0x1ec06d];return _0x2a434f;};'use strict';var util=require(_0x511e('0x0'));var _=require('lodash');var jayson=require(_0x511e('0x1'));var qs=require(_0x511e('0x2'));var logger=require('../../config/logger')(_0x511e('0x3'));var db=require(_0x511e('0x4'))['db'];var client=jayson[_0x511e('0x5')]['http']({'port':0x232a});var routingClient=jayson[_0x511e('0x5')]['http']({'port':0x232c});function respondWithFilteredResult(_0x5923a7,_0x342539){return function(_0x323f8c){if(_0x323f8c){var _0x466dec=typeof _0x342539['offset']==='undefined'&&typeof _0x342539[_0x511e('0x6')]===_0x511e('0x7');var _0x25deeb=_0x323f8c[_0x511e('0x8')];var _0x4449c4=_0x466dec?0x0:_0x342539[_0x511e('0x9')];var _0x1596b3=_0x466dec?_0x323f8c[_0x511e('0x8')]:_0x342539[_0x511e('0x9')]+_0x342539[_0x511e('0x6')];var _0x464085;if(_0x1596b3>=_0x25deeb){_0x1596b3=_0x25deeb;_0x464085=0xc8;}else{_0x464085=0xce;}_0x5923a7['status'](_0x464085);return _0x5923a7[_0x511e('0xa')]('Content-Range',_0x4449c4+'-'+_0x1596b3+'/'+_0x25deeb)['json'](_0x323f8c);}return null;};}function handleError(_0x3deecc,_0x327880){_0x327880=_0x327880||0x1f4;return function(_0x42679e){logger[_0x511e('0xb')](_0x42679e[_0x511e('0xc')]);if(_0x42679e[_0x511e('0xd')]){delete _0x42679e['name'];}_0x3deecc[_0x511e('0xe')](_0x327880)[_0x511e('0xf')](_0x42679e);};}exports['getQueues']=function(_0x14b34e,_0x43a329){var _0x4f50b9=[_0x511e('0x10'),_0x511e('0x11'),_0x511e('0x12'),_0x511e('0x13'),'fax',_0x511e('0x14'),_0x511e('0x15')];var _0x2e66b6={'count':0x0,'rows':[]},_0x577616={},_0x26af67;Promise['resolve']()[_0x511e('0x16')](function(){if(_0x14b34e['query']['channel']){if(!_[_0x511e('0x17')](_0x4f50b9,_0x14b34e['query'][_0x511e('0x18')][_0x511e('0x19')]()))throw new Error(_0x511e('0x1a'));_0x26af67=_0x14b34e[_0x511e('0x1b')][_0x511e('0x18')][_0x511e('0x19')]();}var _0x3723ff=_[_0x511e('0x1c')](_0x26af67)+'Queue';var _0x1e2b41=_[_0x511e('0x1d')](db[_0x3723ff][_0x511e('0x1e')],function(_0x1a273b){return{'name':_0x1a273b[_0x511e('0x1f')],'type':_0x1a273b[_0x511e('0x20')][_0x511e('0x21')]};});_0x577616=qs[_0x511e('0x22')](_0x1e2b41,_0x14b34e);if(_0x14b34e[_0x511e('0x23')][_0x511e('0x24')]==='user'){var _0x4ad22b={'params':{'id':_0x14b34e[_0x511e('0x23')]['userProfileId']},'query':{'section':_0x26af67===_0x511e('0x15')&&_0x14b34e['query'][_0x511e('0x20')]===_0x511e('0x25')?_0x511e('0x26'):_[_0x511e('0x1c')](_0x26af67)+_0x511e('0x27'),'type':_0x14b34e[_0x511e('0x1b')][_0x511e('0x20')],'nolimit':!![],'sort':_0x511e('0xd'),'filter':_0x14b34e[_0x511e('0x1b')][_0x511e('0x28')]}};return db['UserProfile'][_0x511e('0x29')](_0x4ad22b);}return db[_0x3723ff][_0x511e('0x2a')](_0x577616);})[_0x511e('0x16')](function(_0x1aaac1){_0x2e66b6[_0x511e('0x8')]=_0x1aaac1['count'];var _0x431b75=_0x26af67==='voice'?client:routingClient;return _0x431b75['request'](_[_0x511e('0x1c')](_0x26af67)+_0x511e('0x27'),_0x14b34e)[_0x511e('0x16')](function(_0x2fb396){if(_0x2fb396[_0x511e('0xb')])throw new Error(util['format'](_0x511e('0x2b'),_0x26af67));var _0x2e6529=_0x2fb396[_0x511e('0x2c')];var _0x32be08=[_0x511e('0x2d'),'available',_0x511e('0x2e'),_0x511e('0x2f'),_0x511e('0x30')];if(_0x26af67===_0x511e('0x15')&&_0x14b34e[_0x511e('0x1b')][_0x511e('0x20')]===_0x511e('0x25')){_0x32be08[_0x511e('0x31')]('pTalking',_0x511e('0x32'),_0x511e('0x33'),_0x511e('0x34'),_0x511e('0x35'),'Trunk','startPredictive',_0x511e('0x36'),'erlangCalls','erlangCallToSecond',_0x511e('0x37'),_0x511e('0x38'),_0x511e('0x39'),_0x511e('0x3a'),_0x511e('0x3b'),'predictiveIntervalAvailable',_0x511e('0x3c'),_0x511e('0x3d'),_0x511e('0x3e'),'predictiveIntervalDroppedCallsCallersExit',_0x511e('0x3f'),_0x511e('0x40'));}var _0x345ad3=_0x1aaac1['rows'][_0x511e('0x1d')](function(_0x2fd83d){var _0x4f124f=_0x2fd83d[_0x511e('0x41')]({'plain':!![]});_0x4f124f[_0x511e('0x30')]=0x0;_0x4f124f[_0x511e('0x42')]=0x0;_0x4f124f[_0x511e('0x2d')]=0x0;_0x4f124f[_0x511e('0x43')]=0x0;_0x4f124f[_0x511e('0x30')]=0x0;_0x4f124f[_0x511e('0x2e')]=0x0;if(_0x26af67===_0x511e('0x15')){_0x4f124f[_0x511e('0x2f')]=0x0;if(_0x14b34e[_0x511e('0x1b')][_0x511e('0x20')]==='outbound'){_0x4f124f[_0x511e('0x44')]=0x0;_0x4f124f['originated']=0x0;}}_0x4f124f['agents']=[];var _0xd31415=_['find'](_0x2e6529['rows'],['id',_0x4f124f['id']]);if(_0xd31415)_[_0x511e('0x45')](_0x4f124f,_[_0x511e('0x46')](_0xd31415,_0x32be08));if(_0x26af67===_0x511e('0x15')){return _0x2fd83d[_0x511e('0x47')]({'attributes':['id',_0x511e('0xd'),_0x511e('0x48')],'joinTableAttributes':[],'raw':!![]})[_0x511e('0x16')](function(_0x27a78a){return _0x2fd83d[_0x511e('0x49')]({'raw':!![]})[_0x511e('0x16')](function(_0x26b1be){for(var _0x17f95c=0x0;_0x17f95c<_0x27a78a[_0x511e('0x4a')];_0x17f95c++){var _0x443908=_['find'](_0x26b1be,['UserId',_0x27a78a[_0x17f95c]['id']]);var _0x19ffde={'id':_0x27a78a[_0x17f95c]['id'],'name':_0x27a78a[_0x17f95c][_0x511e('0xd')],'online':Boolean(_0x27a78a[_0x17f95c][_0x511e('0x48')]),'paused':_0x443908?Boolean(_0x443908[_0x511e('0x30')]):![]};if(_0x19ffde[_0x511e('0x48')])_0x4f124f['loggedInDb']++;if(_0x19ffde[_0x511e('0x30')])_0x4f124f[_0x511e('0x30')]++;_0x4f124f[_0x511e('0x4b')]['push'](_0x19ffde);}return _0x4f124f;});});}else{var _0x5cdc4d='User'+_[_0x511e('0x1c')](_0x26af67)+_0x511e('0x4c');var _0x28ee1f=_0x26af67+'Pause';return db[_0x5cdc4d]['findAll']({'where':{[_['startCase'](_0x26af67)+_0x511e('0x4d')]:_0x2fd83d['id']},'raw':!![]})[_0x511e('0x16')](function(_0x4120be){return db[_0x511e('0x4e')][_0x511e('0x4f')]({'attributes':['id',_0x511e('0xd'),_0x511e('0x48'),_0x28ee1f],'where':{'id':_[_0x511e('0x1d')](_0x4120be,_0x511e('0x50')),'role':_0x511e('0x51')},'raw':!![]});})[_0x511e('0x16')](function(_0x354f06){for(var _0x19a6c8=0x0;_0x19a6c8<_0x354f06[_0x511e('0x4a')];_0x19a6c8++){var _0x625454={'id':_0x354f06[_0x19a6c8]['id'],'name':_0x354f06[_0x19a6c8][_0x511e('0xd')],'online':Boolean(_0x354f06[_0x19a6c8][_0x511e('0x48')]),'paused':Boolean(_0x354f06[_0x19a6c8][_0x28ee1f])};if(_0x625454[_0x511e('0x48')])_0x4f124f[_0x511e('0x42')]++;if(_0x625454[_0x511e('0x30')])_0x4f124f[_0x511e('0x30')]++;_0x4f124f[_0x511e('0x4b')][_0x511e('0x31')](_0x625454);}return _0x4f124f;});}});return Promise[_0x511e('0x52')](_0x345ad3);});})[_0x511e('0x16')](function(_0x4096c0){_0x2e66b6[_0x511e('0x53')]=_0x4096c0;return _0x2e66b6;})[_0x511e('0x16')](respondWithFilteredResult(_0x43a329,_0x577616))[_0x511e('0x54')](handleError(_0x43a329,null));};
\ No newline at end of file
index 2c649e5..9606087 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(_0x29b2d0,_0x73bf4b){var _0x4af937=function(_0x1b19c9){while(--_0x1b19c9){_0x29b2d0['push'](_0x29b2d0['shift']());}};_0x4af937(++_0x73bf4b);}(_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(_0x52ab17,_0xf51f71){var _0x4f420f=function(_0x269965){while(--_0x269965){_0x52ab17['push'](_0x52ab17['shift']());}};_0x4f420f(++_0xf51f71);}(_0x9c44,0x178));var _0x49c4=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x9c44[_0x5d2803];return _0xdcad2c;};'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 6ac14b3..23b9204 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c1f=['INTEGER','STRING','DATE','sequelize'];(function(_0x32b2f1,_0x1d5c1a){var _0x4c1fec=function(_0x4f429f){while(--_0x4f429f){_0x32b2f1['push'](_0x32b2f1['shift']());}};_0x4c1fec(++_0x1d5c1a);}(_0x5c1f,0x1b3));var _0xf5c1=function(_0x2defb5,_0x1cda14){_0x2defb5=_0x2defb5-0x0;var _0x229c53=_0x5c1f[_0x2defb5];return _0x229c53;};'use strict';var Sequelize=require(_0xf5c1('0x0'));module['exports']={'state':{'type':Sequelize[_0xf5c1('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xf5c1('0x2')]},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize[_0xf5c1('0x2')]},'starttime':{'type':Sequelize[_0xf5c1('0x3')]},'responsetime':{'type':Sequelize[_0xf5c1('0x3')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xf5c1('0x2')]}};
\ No newline at end of file
+var _0xd8fb=['INTEGER','STRING','DATE','sequelize','exports'];(function(_0x89d086,_0x10a9a5){var _0x5a992c=function(_0x2b4fbd){while(--_0x2b4fbd){_0x89d086['push'](_0x89d086['shift']());}};_0x5a992c(++_0x10a9a5);}(_0xd8fb,0x99));var _0xbd8f=function(_0x148753,_0x20f48b){_0x148753=_0x148753-0x0;var _0x20e899=_0xd8fb[_0x148753];return _0x20e899;};'use strict';var Sequelize=require(_0xbd8f('0x0'));module[_0xbd8f('0x1')]={'state':{'type':Sequelize[_0xbd8f('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xbd8f('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xbd8f('0x4')]},'ringtime':{'type':Sequelize[_0xbd8f('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xbd8f('0x3')]},'membername':{'type':Sequelize[_0xbd8f('0x3')]}};
\ No newline at end of file
index 8cdf8a8..ec6fc64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8433=['lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./reportAgentPreview.attributes','exports','define','ReportAgentPreview'];(function(_0x4f7578,_0x183c9a){var _0x51615c=function(_0x2e7b2a){while(--_0x2e7b2a){_0x4f7578['push'](_0x4f7578['shift']());}};_0x51615c(++_0x183c9a);}(_0x8433,0xe4));var _0x3843=function(_0x837dad,_0x1d9098){_0x837dad=_0x837dad-0x0;var _0x1d62d3=_0x8433[_0x837dad];return _0x1d62d3;};'use strict';var _=require(_0x3843('0x0'));var util=require(_0x3843('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x3843('0x2'));var BPromise=require(_0x3843('0x3'));var rp=require(_0x3843('0x4'));var fs=require('fs');var path=require(_0x3843('0x5'));var rimraf=require(_0x3843('0x6'));var config=require(_0x3843('0x7'));var attributes=require(_0x3843('0x8'));module[_0x3843('0x9')]=function(_0x2e4578,_0x5f2022){return _0x2e4578[_0x3843('0xa')](_0x3843('0xb'),attributes,{'tableName':'report_agent_preview','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1faa=['exports','define','report_agent_preview','util','api','moment','request-promise','path','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1faa,0xa5));var _0xa1fa=function(_0x5759e8,_0x6ff466){_0x5759e8=_0x5759e8-0x0;var _0x26ea95=_0x1faa[_0x5759e8];return _0x26ea95;};'use strict';var _=require('lodash');var util=require(_0xa1fa('0x0'));var logger=require('../../config/logger')(_0xa1fa('0x1'));var moment=require(_0xa1fa('0x2'));var BPromise=require('bluebird');var rp=require(_0xa1fa('0x3'));var fs=require('fs');var path=require(_0xa1fa('0x4'));var rimraf=require('rimraf');var config=require(_0xa1fa('0x5'));var attributes=require('./reportAgentPreview.attributes');module[_0xa1fa('0x6')]=function(_0x5895e9,_0x3a0276){return _0x5895e9[_0xa1fa('0x7')]('ReportAgentPreview',attributes,{'tableName':_0xa1fa('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 392527a..a945936 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57c9=['../../config/environment','jayson/promise','client','http','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','ReportAgentPreview','create','body','options','raw','then','CreateReportAgentPreview','lodash','moment','randomstring','ioredis','rpc'];(function(_0x4ee9cd,_0xd375b0){var _0x328a5b=function(_0x3ad1f4){while(--_0x3ad1f4){_0x4ee9cd['push'](_0x4ee9cd['shift']());}};_0x328a5b(++_0xd375b0);}(_0x57c9,0xee));var _0x957c=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x57c9[_0x618414];return _0x21c19a;};'use strict';var _=require(_0x957c('0x0'));var util=require('util');var moment=require(_0x957c('0x1'));var BPromise=require('bluebird');var rs=require(_0x957c('0x2'));var fs=require('fs');var Redis=require(_0x957c('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x957c('0x4'));var config=require(_0x957c('0x5'));var jayson=require(_0x957c('0x6'));var client=jayson[_0x957c('0x7')][_0x957c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x10a352,_0x26d7e2,_0x1103f3){return new BPromise(function(_0x1f2987,_0x169bf4){return client['request'](_0x10a352,_0x1103f3)['then'](function(_0x337788){logger[_0x957c('0x9')](_0x957c('0xa'),_0x26d7e2,_0x957c('0xb'));logger[_0x957c('0xc')](_0x957c('0xd'),_0x26d7e2,_0x957c('0xb'),JSON[_0x957c('0xe')](_0x337788));if(_0x337788['error']){if(_0x337788['error'][_0x957c('0xf')]===0x1f4){logger[_0x957c('0x10')]('ReportAgentPreview,\x20%s,\x20%s',_0x26d7e2,_0x337788[_0x957c('0x10')]['message']);return _0x169bf4(_0x337788[_0x957c('0x10')][_0x957c('0x11')]);}logger[_0x957c('0x10')](_0x957c('0xa'),_0x26d7e2,_0x337788['error'][_0x957c('0x11')]);return _0x1f2987(_0x337788[_0x957c('0x10')]['message']);}else{logger[_0x957c('0x9')]('ReportAgentPreview,\x20%s,\x20%s',_0x26d7e2,'request\x20sent');_0x1f2987(_0x337788[_0x957c('0x12')]['message']);}})[_0x957c('0x13')](function(_0x7468d){logger[_0x957c('0x10')](_0x957c('0xa'),_0x26d7e2,_0x7468d);_0x169bf4(_0x7468d);});});}exports['CreateReportAgentPreview']=function(_0x1f89db){var _0x530090=this;return new Promise(function(_0x493c55,_0x9750c3){return db[_0x957c('0x14')][_0x957c('0x15')](_0x1f89db[_0x957c('0x16')],{'raw':_0x1f89db[_0x957c('0x17')]?_0x1f89db[_0x957c('0x17')][_0x957c('0x18')]===undefined?!![]:![]:!![]})[_0x957c('0x19')](function(_0x33dcf5){logger['info'](_0x957c('0x1a'),_0x1f89db);logger[_0x957c('0xc')]('CreateReportAgentPreview',_0x1f89db,JSON['stringify'](_0x33dcf5));_0x493c55(_0x33dcf5);})[_0x957c('0x13')](function(_0x337923){logger['error'](_0x957c('0x1a'),_0x337923['message'],_0x1f89db);_0x9750c3(_0x530090[_0x957c('0x10')](0x1f4,_0x337923['message']));});});};
\ No newline at end of file
+var _0x0d2c=['info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','error','message','CreateReportAgentPreview','create','body','options','raw','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0d2c,0xaf));var _0xc0d2=function(_0x315a02,_0x4f4f){_0x315a02=_0x315a02-0x0;var _0x158e79=_0x0d2c[_0x315a02];return _0x158e79;};'use strict';var _=require(_0xc0d2('0x0'));var util=require(_0xc0d2('0x1'));var moment=require(_0xc0d2('0x2'));var BPromise=require(_0xc0d2('0x3'));var rs=require(_0xc0d2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc0d2('0x5'))['db'];var utils=require(_0xc0d2('0x6'));var logger=require(_0xc0d2('0x7'))(_0xc0d2('0x8'));var config=require(_0xc0d2('0x9'));var jayson=require(_0xc0d2('0xa'));var client=jayson[_0xc0d2('0xb')][_0xc0d2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x15e315,_0x314cfe,_0x5618d1){return new BPromise(function(_0x102385,_0x113bb4){return client['request'](_0x15e315,_0x5618d1)[_0xc0d2('0xd')](function(_0x4f03cd){logger[_0xc0d2('0xe')](_0xc0d2('0xf'),_0x314cfe,_0xc0d2('0x10'));logger[_0xc0d2('0x11')](_0xc0d2('0x12'),_0x314cfe,_0xc0d2('0x10'),JSON['stringify'](_0x4f03cd));if(_0x4f03cd[_0xc0d2('0x13')]){if(_0x4f03cd[_0xc0d2('0x13')]['code']===0x1f4){logger[_0xc0d2('0x13')]('ReportAgentPreview,\x20%s,\x20%s',_0x314cfe,_0x4f03cd[_0xc0d2('0x13')]['message']);return _0x113bb4(_0x4f03cd[_0xc0d2('0x13')][_0xc0d2('0x14')]);}logger[_0xc0d2('0x13')]('ReportAgentPreview,\x20%s,\x20%s',_0x314cfe,_0x4f03cd[_0xc0d2('0x13')][_0xc0d2('0x14')]);return _0x102385(_0x4f03cd[_0xc0d2('0x13')][_0xc0d2('0x14')]);}else{logger['info'](_0xc0d2('0xf'),_0x314cfe,'request\x20sent');_0x102385(_0x4f03cd['result']['message']);}})['catch'](function(_0x1a56f2){logger['error'](_0xc0d2('0xf'),_0x314cfe,_0x1a56f2);_0x113bb4(_0x1a56f2);});});}exports[_0xc0d2('0x15')]=function(_0x3bf74b){var _0x3bdf30=this;return new Promise(function(_0x323d8b,_0x283595){return db['ReportAgentPreview'][_0xc0d2('0x16')](_0x3bf74b[_0xc0d2('0x17')],{'raw':_0x3bf74b[_0xc0d2('0x18')]?_0x3bf74b[_0xc0d2('0x18')][_0xc0d2('0x19')]===undefined?!![]:![]:!![]})[_0xc0d2('0xd')](function(_0x53cf5d){logger[_0xc0d2('0xe')](_0xc0d2('0x15'),_0x3bf74b);logger[_0xc0d2('0x11')](_0xc0d2('0x15'),_0x3bf74b,JSON[_0xc0d2('0x1a')](_0x53cf5d));_0x323d8b(_0x53cf5d);})['catch'](function(_0x1ac7a9){logger[_0xc0d2('0x13')]('CreateReportAgentPreview',_0x1ac7a9['message'],_0x3bf74b);_0x283595(_0x3bdf30['error'](0x1f4,_0x1ac7a9[_0xc0d2('0x14')]));});});};
\ No newline at end of file
index 8314dab..8b6dddb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe696=['post','/mail/queues/:id/notify','queueNotify','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','showChatQueues','/fax/queues/:id/notify','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','util','path','express','Router','./rpc.controller','/voice/channels','isAuthenticated','voiceChannels','get','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','/openchannel/queues','openchannelQueues','/sms/queues','/whatsapp/queues','whatsappQueues','/fax/queues','/voice/queues/preview/:id','voiceQueuesPreview','voiceQueuesChannels','/voice/queues/channels/:uniqueid','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','outbound','/outbound/channels','/agents','agents','agentCapacity','telephones','/trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions'];(function(_0xda1969,_0x104502){var _0x50b7ba=function(_0xba978d){while(--_0xba978d){_0xda1969['push'](_0xda1969['shift']());}};_0x50b7ba(++_0x104502);}(_0xe696,0x1b1));var _0x6e69=function(_0x158bcf,_0x7b48c7){_0x158bcf=_0x158bcf-0x0;var _0x9684c1=_0xe696[_0x158bcf];return _0x9684c1;};'use strict';var multer=require(_0x6e69('0x0'));var util=require(_0x6e69('0x1'));var path=require(_0x6e69('0x2'));var express=require(_0x6e69('0x3'));var router=express[_0x6e69('0x4')]();var auth=require('../../components/auth/service');var controller=require(_0x6e69('0x5'));router['get'](_0x6e69('0x6'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x8')]);router['get']('/voice/channels/:uniqueid/mixmonitor',auth[_0x6e69('0x7')](),controller['voiceChannelMixMonitor']);router[_0x6e69('0x9')](_0x6e69('0xa'),auth[_0x6e69('0x7')](),controller[_0x6e69('0xb')]);router[_0x6e69('0x9')](_0x6e69('0xc'),auth['isAuthenticated'](),controller[_0x6e69('0xd')]);router[_0x6e69('0x9')](_0x6e69('0xe'),auth['isAuthenticated'](),controller[_0x6e69('0xf')]);router[_0x6e69('0x9')](_0x6e69('0x10'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x11')]);router[_0x6e69('0x9')](_0x6e69('0x12'),auth['isAuthenticated'](),controller['mailAccounts']);router['get'](_0x6e69('0x13'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x14')]);router[_0x6e69('0x9')](_0x6e69('0x15'),auth[_0x6e69('0x7')](),controller['smsQueues']);router[_0x6e69('0x9')](_0x6e69('0x16'),auth['isAuthenticated'](),controller[_0x6e69('0x17')]);router['get'](_0x6e69('0x18'),auth[_0x6e69('0x7')](),controller['faxQueues']);router[_0x6e69('0x9')](_0x6e69('0x19'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x1a')]);router[_0x6e69('0x9')]('/voice/queues/channels',auth[_0x6e69('0x7')](),controller[_0x6e69('0x1b')]);router[_0x6e69('0x9')](_0x6e69('0x1c'),auth['isAuthenticated'](),controller['voiceQueuesChannel']);router[_0x6e69('0x9')](_0x6e69('0x1d'),auth['isAuthenticated'](),controller['voiceQueuesChannelHangup']);router[_0x6e69('0x9')]('/voice/queues/channels/:uniqueid/redirect/:exten',auth['isAuthenticated'](),controller[_0x6e69('0x1e')]);router[_0x6e69('0x9')](_0x6e69('0x1f'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x20')]);router[_0x6e69('0x21')](_0x6e69('0x1f'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x22')]);router['get'](_0x6e69('0x23'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x24')]);router[_0x6e69('0x9')](_0x6e69('0x25'),auth['isAuthenticated'](),controller['outboundChannels']);router[_0x6e69('0x9')](_0x6e69('0x26'),auth['isAuthenticated'](),controller[_0x6e69('0x27')]);router[_0x6e69('0x21')]('/agents/:id/capacity',auth[_0x6e69('0x7')](),controller[_0x6e69('0x28')]);router['get']('/telephones',auth['isAuthenticated'](),controller[_0x6e69('0x29')]);router[_0x6e69('0x9')](_0x6e69('0x2a'),auth[_0x6e69('0x7')](),controller['trunks']);router[_0x6e69('0x9')](_0x6e69('0x2b'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x2c')]);router[_0x6e69('0x9')](_0x6e69('0x2d'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x2e')]);router['get'](_0x6e69('0x2f'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x30')]);router['get'](_0x6e69('0x31'),auth[_0x6e69('0x7')](),controller['mailQueuesWaitingInteractions']);router[_0x6e69('0x9')](_0x6e69('0x32'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x33')]);router[_0x6e69('0x9')](_0x6e69('0x34'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x35')]);router[_0x6e69('0x9')](_0x6e69('0x36'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x37')]);router[_0x6e69('0x9')](_0x6e69('0x38'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x39')]);router[_0x6e69('0x9')]('/fax/queues/waitinginteractions',auth[_0x6e69('0x7')](),controller[_0x6e69('0x3a')]);router[_0x6e69('0x3b')](_0x6e69('0x3c'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x3d')]('mail'));router[_0x6e69('0x9')](_0x6e69('0x3e'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x3f')]);router[_0x6e69('0x3b')](_0x6e69('0x40'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x3d')](_0x6e69('0x41')));router['get']('/chat/queues/:id',auth[_0x6e69('0x7')](),controller[_0x6e69('0x42')]);router[_0x6e69('0x3b')](_0x6e69('0x43'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x3d')]('fax'));router['get'](_0x6e69('0x44'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x45')]);router[_0x6e69('0x3b')](_0x6e69('0x46'),auth['isAuthenticated'](),controller[_0x6e69('0x3d')](_0x6e69('0x47')));router[_0x6e69('0x9')](_0x6e69('0x48'),auth[_0x6e69('0x7')](),controller['showOpenchannelQueues']);router['post']('/sms/queues/:id/notify',auth[_0x6e69('0x7')](),controller[_0x6e69('0x3d')](_0x6e69('0x49')));router[_0x6e69('0x3b')](_0x6e69('0x4a'),auth['isAuthenticated'](),controller[_0x6e69('0x3d')](_0x6e69('0x4b')));router[_0x6e69('0x9')](_0x6e69('0x4c'),auth[_0x6e69('0x7')](),controller['showSmsQueues']);router[_0x6e69('0x9')](_0x6e69('0x4d'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x4e')]);router[_0x6e69('0x3b')](_0x6e69('0x4f'),auth[_0x6e69('0x7')](),controller[_0x6e69('0x50')]);module[_0x6e69('0x51')]=router;
\ No newline at end of file
+var _0xbfce=['updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','/agents/:id/capacity','agentCapacity','/telephones','telephones','/trunks','trunks','campaigns','/fax/accounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','showChatQueues','/fax/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','whatsapp','/sms/queues/:id','showSmsQueues','/agents/:id/notify','agentNotify','exports','multer','path','Router','../../components/auth/service','./rpc.controller','isAuthenticated','voiceChannels','get','/voice/channels/:uniqueid/mixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/chat/queues','/mail/queues','mailQueues','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','put'];(function(_0x1d8791,_0x22d1db){var _0x399770=function(_0x18a779){while(--_0x18a779){_0x1d8791['push'](_0x1d8791['shift']());}};_0x399770(++_0x22d1db);}(_0xbfce,0xcb));var _0xebfc=function(_0x134387,_0x3bff4b){_0x134387=_0x134387-0x0;var _0x34b800=_0xbfce[_0x134387];return _0x34b800;};'use strict';var multer=require(_0xebfc('0x0'));var util=require('util');var path=require(_0xebfc('0x1'));var express=require('express');var router=express[_0xebfc('0x2')]();var auth=require(_0xebfc('0x3'));var controller=require(_0xebfc('0x4'));router['get']('/voice/channels',auth[_0xebfc('0x5')](),controller[_0xebfc('0x6')]);router[_0xebfc('0x7')](_0xebfc('0x8'),auth[_0xebfc('0x5')](),controller['voiceChannelMixMonitor']);router[_0xebfc('0x7')]('/voice/channels/:uniqueid/stopmixmonitor',auth['isAuthenticated'](),controller[_0xebfc('0x9')]);router[_0xebfc('0x7')](_0xebfc('0xa'),auth['isAuthenticated'](),controller[_0xebfc('0xb')]);router[_0xebfc('0x7')](_0xebfc('0xc'),auth[_0xebfc('0x5')](),controller['chatQueues']);router[_0xebfc('0x7')](_0xebfc('0xd'),auth[_0xebfc('0x5')](),controller[_0xebfc('0xe')]);router[_0xebfc('0x7')]('/mail/accounts',auth['isAuthenticated'](),controller[_0xebfc('0xf')]);router[_0xebfc('0x7')](_0xebfc('0x10'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x11')]);router[_0xebfc('0x7')](_0xebfc('0x12'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x13')]);router['get'](_0xebfc('0x14'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x15')]);router[_0xebfc('0x7')](_0xebfc('0x16'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x17')]);router[_0xebfc('0x7')]('/voice/queues/preview/:id',auth[_0xebfc('0x5')](),controller[_0xebfc('0x18')]);router[_0xebfc('0x7')](_0xebfc('0x19'),auth['isAuthenticated'](),controller[_0xebfc('0x1a')]);router[_0xebfc('0x7')](_0xebfc('0x1b'),auth[_0xebfc('0x5')](),controller['voiceQueuesChannel']);router[_0xebfc('0x7')](_0xebfc('0x1c'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x1d')]);router[_0xebfc('0x7')](_0xebfc('0x1e'),auth['isAuthenticated'](),controller[_0xebfc('0x1f')]);router[_0xebfc('0x7')](_0xebfc('0x20'),auth[_0xebfc('0x5')](),controller['showVoiceQueues']);router[_0xebfc('0x21')](_0xebfc('0x20'),auth['isAuthenticated'](),controller[_0xebfc('0x22')]);router[_0xebfc('0x7')](_0xebfc('0x23'),auth['isAuthenticated'](),controller[_0xebfc('0x24')]);router[_0xebfc('0x7')](_0xebfc('0x25'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x26')]);router[_0xebfc('0x7')](_0xebfc('0x27'),auth[_0xebfc('0x5')](),controller['agents']);router['put'](_0xebfc('0x28'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x29')]);router['get'](_0xebfc('0x2a'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x2b')]);router['get'](_0xebfc('0x2c'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x2d')]);router[_0xebfc('0x7')]('/campaigns',auth[_0xebfc('0x5')](),controller[_0xebfc('0x2e')]);router[_0xebfc('0x7')](_0xebfc('0x2f'),auth['isAuthenticated'](),controller['faxAccounts']);router[_0xebfc('0x7')](_0xebfc('0x30'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x31')]);router[_0xebfc('0x7')](_0xebfc('0x32'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x33')]);router['get'](_0xebfc('0x34'),auth[_0xebfc('0x5')](),controller['openchannelQueuesWaitingInteractions']);router[_0xebfc('0x7')](_0xebfc('0x35'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x36')]);router['get'](_0xebfc('0x37'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x38')]);router[_0xebfc('0x7')]('/whatsapp/queues/waitinginteractions',auth[_0xebfc('0x5')](),controller['whatsappQueuesWaitingInteractions']);router[_0xebfc('0x7')](_0xebfc('0x39'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x3a')]);router[_0xebfc('0x3b')](_0xebfc('0x3c'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x3d')](_0xebfc('0x3e')));router['get'](_0xebfc('0x3f'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x40')]);router[_0xebfc('0x3b')](_0xebfc('0x41'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x3d')]('chat'));router['get']('/chat/queues/:id',auth[_0xebfc('0x5')](),controller[_0xebfc('0x42')]);router['post'](_0xebfc('0x43'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x3d')]('fax'));router[_0xebfc('0x7')]('/fax/queues/:id',auth['isAuthenticated'](),controller['showFaxQueues']);router['post']('/openchannel/queues/:id/notify',auth[_0xebfc('0x5')](),controller[_0xebfc('0x3d')](_0xebfc('0x44')));router[_0xebfc('0x7')](_0xebfc('0x45'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x46')]);router[_0xebfc('0x3b')](_0xebfc('0x47'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x3d')](_0xebfc('0x48')));router[_0xebfc('0x3b')]('/whatsapp/queues/:id/notify',auth[_0xebfc('0x5')](),controller[_0xebfc('0x3d')](_0xebfc('0x49')));router[_0xebfc('0x7')](_0xebfc('0x4a'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x4b')]);router[_0xebfc('0x7')]('/whatsapp/queues/:id',auth[_0xebfc('0x5')](),controller['showWhatsappQueues']);router[_0xebfc('0x3b')](_0xebfc('0x4c'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x4d')]);module[_0xebfc('0x4e')]=router;
\ No newline at end of file
index fe48724..e867b32 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(_0x200af4,_0x8416e8){var _0x3831b6=function(_0xf139c0){while(--_0xf139c0){_0x200af4['push'](_0x200af4['shift']());}};_0x3831b6(++_0x8416e8);}(_0xbd51,0x1a8));var _0x1bd5=function(_0x59a0ca,_0x17e04a){_0x59a0ca=_0x59a0ca-0x0;var _0x537d62=_0xbd51[_0x59a0ca];return _0x537d62;};'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 _0x8d0e=['merge','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','OutboundChannels','agents','Agents','body','interaction','user','hasOwnProperty','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','MemberReport','findOrCreate','interface','SIP/%s','AgentCapacity','capacity','telephones','Telephones','trunks','Trunks','campaigns','showChatQueues','ChatQueues','mailQueues','showMailQueues','openchannelQueues','OpenchannelQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','value','indexOf','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Account','findOne','messageId','Interaction','update','MessageId','InteractionId','From','QueueId','TransferReport','create','Start','queue','queueTransferTimeout','*,*,*,*','agentNotify','channel','Channel\x20field\x20is\x20mandatory','Website','agent','\x20Message\x20not\x20found','bluebird','moment','lodash','util','../../mysqldb','../../config/logger','api','jayson/promise','client','http','request','error','message','result','catch','json','stack','name','send','isNil','rows','voiceChannels','query','then','VoiceChannelMixMonitor'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x2c4ca8,_0x5f156c){_0x2c4ca8=_0x2c4ca8-0x0;var _0x4974d5=_0x8d0e[_0x2c4ca8];return _0x4974d5;};'use strict';var BPromise=require(_0xe8d0('0x0'));var moment=require(_0xe8d0('0x1'));var _=require(_0xe8d0('0x2'));var util=require(_0xe8d0('0x3'));var db=require(_0xe8d0('0x4'))['db'];var logger=require(_0xe8d0('0x5'))(_0xe8d0('0x6'));var jayson=require(_0xe8d0('0x7'));var amiClient=jayson[_0xe8d0('0x8')]['http']({'port':0x232a});var mailClient=jayson[_0xe8d0('0x8')]['http']({'port':0x232b});var routingClient=jayson['client'][_0xe8d0('0x9')]({'port':0x232c});function respondWithRpcPromise(_0x92483d,_0x469d37,_0xcc03d0){return new BPromise(function(_0x2b6dce,_0x13aa63){var _0x1b353a=_0xcc03d0?_0xcc03d0:amiClient;return _0x1b353a[_0xe8d0('0xa')](_0x92483d,_0x469d37)['then'](function(_0x10e56c){if(_0x10e56c[_0xe8d0('0xb')]){if(_0x10e56c[_0xe8d0('0xb')]['code']===0x1f4){return _0x13aa63(_0x10e56c['error'][_0xe8d0('0xc')]);}return _0x2b6dce(_0x10e56c[_0xe8d0('0xb')][_0xe8d0('0xc')]);}else{_0x2b6dce(_0x10e56c[_0xe8d0('0xd')]);}})[_0xe8d0('0xe')](function(_0x41de69){_0x13aa63(_0x41de69);});});}function respondWithResult(_0x5934b2,_0x38fac0){_0x38fac0=_0x38fac0||0xc8;return function(_0x15b9e5){if(_0x15b9e5){return _0x5934b2['status'](_0x38fac0)[_0xe8d0('0xf')](_0x15b9e5);}return _0x5934b2['sendStatus'](0x194);};}function handleError(_0x59b4b7,_0x90a1ea){_0x90a1ea=_0x90a1ea||0x1f4;return function(_0x2aa906){logger[_0xe8d0('0xb')](_0x2aa906[_0xe8d0('0x10')]);if(_0x2aa906[_0xe8d0('0x11')]){delete _0x2aa906[_0xe8d0('0x11')];}_0x59b4b7['status'](_0x90a1ea)[_0xe8d0('0x12')](_0x2aa906);};}function findById(_0x49554d){return function(_0x6d932b){if(!_[_0xe8d0('0x13')](_0x49554d)&&!_[_0xe8d0('0x13')](_0x6d932b)&&!_['isNil'](_0x6d932b['rows'])){return _['find'](_0x6d932b[_0xe8d0('0x14')],function(_0x384854){return _0x384854['id']==_0x49554d;});}return null;};}exports[_0xe8d0('0x15')]=function(_0x44bbe4,_0x83177b){return respondWithRpcPromise('VoiceChannels',_0x44bbe4[_0xe8d0('0x16')])[_0xe8d0('0x17')](respondWithResult(_0x83177b,null))['catch'](handleError(_0x83177b,null));};exports['voiceChannelMixMonitor']=function(_0x554402,_0x384a60){return respondWithRpcPromise(_0xe8d0('0x18'),_[_0xe8d0('0x19')](_0x554402[_0xe8d0('0x16')],_0x554402[_0xe8d0('0x1a')]))[_0xe8d0('0x17')](respondWithResult(_0x384a60,null))[_0xe8d0('0xe')](handleError(_0x384a60,null));};exports[_0xe8d0('0x1b')]=function(_0x32e39a,_0x5ab4e7){return respondWithRpcPromise(_0xe8d0('0x1c'),_[_0xe8d0('0x19')](_0x32e39a['query'],_0x32e39a[_0xe8d0('0x1a')]))[_0xe8d0('0x17')](respondWithResult(_0x5ab4e7,null))[_0xe8d0('0xe')](handleError(_0x5ab4e7,null));};exports[_0xe8d0('0x1d')]=function(_0x146783,_0x149dfd){return respondWithRpcPromise(_0xe8d0('0x1e'),_0x146783[_0xe8d0('0x16')])[_0xe8d0('0x17')](respondWithResult(_0x149dfd,null))[_0xe8d0('0xe')](handleError(_0x149dfd,null));};exports[_0xe8d0('0x1f')]=function(_0x539548,_0x24982c){return respondWithRpcPromise(_0xe8d0('0x1e'),_0x539548[_0xe8d0('0x16')])['then'](findById(_0x539548[_0xe8d0('0x1a')]['id']))[_0xe8d0('0x17')](respondWithResult(_0x24982c,null))['catch'](handleError(_0x24982c,null));};exports[_0xe8d0('0x20')]=function(_0x3ffcb7,_0x11fcf2){return respondWithRpcPromise(_0xe8d0('0x21'),_[_0xe8d0('0x19')](_0x3ffcb7['body'],_0x3ffcb7[_0xe8d0('0x1a')]))['then'](respondWithResult(_0x11fcf2,null))['catch'](handleError(_0x11fcf2,null));};exports['voiceQueuesPreview']=function(_0x547a2b,_0x13cd4c){return respondWithRpcPromise(_0xe8d0('0x22'),_['merge'](_0x547a2b['query'],_0x547a2b[_0xe8d0('0x1a')]))['then'](respondWithResult(_0x13cd4c,null))[_0xe8d0('0xe')](handleError(_0x13cd4c,null));};exports[_0xe8d0('0x23')]=function(_0x327004,_0x1b2b0a){return respondWithRpcPromise(_0xe8d0('0x24'),_0x327004['query'])[_0xe8d0('0x17')](respondWithResult(_0x1b2b0a,null))[_0xe8d0('0xe')](handleError(_0x1b2b0a,null));};exports[_0xe8d0('0x25')]=function(_0x145ddb,_0x587819){return respondWithRpcPromise(_0xe8d0('0x26'),_[_0xe8d0('0x19')](_0x145ddb['query'],_0x145ddb[_0xe8d0('0x1a')]))['then'](respondWithResult(_0x587819,null))[_0xe8d0('0xe')](handleError(_0x587819,null));};exports['voiceQueuesChannelHangup']=function(_0x197e01,_0x531835){return respondWithRpcPromise(_0xe8d0('0x27'),_[_0xe8d0('0x19')](_0x197e01[_0xe8d0('0x16')],_0x197e01[_0xe8d0('0x1a')]))['then'](respondWithResult(_0x531835,null))[_0xe8d0('0xe')](handleError(_0x531835,null));};exports[_0xe8d0('0x28')]=function(_0x20eec5,_0x516243){return respondWithRpcPromise(_0xe8d0('0x29'),_[_0xe8d0('0x19')](_0x20eec5[_0xe8d0('0x16')],_0x20eec5[_0xe8d0('0x1a')]))[_0xe8d0('0x17')](respondWithResult(_0x516243,null))['catch'](handleError(_0x516243,null));};exports[_0xe8d0('0x2a')]=function(_0x1828c5,_0x10970d){return respondWithRpcPromise(_0xe8d0('0x2b'),_0x1828c5[_0xe8d0('0x16')])[_0xe8d0('0x17')](respondWithResult(_0x10970d,null))[_0xe8d0('0xe')](handleError(_0x10970d,null));};exports[_0xe8d0('0x2c')]=function(_0x4edb3d,_0x5dff14){return respondWithRpcPromise(_0xe8d0('0x2d'),_0x4edb3d[_0xe8d0('0x16')])[_0xe8d0('0x17')](respondWithResult(_0x5dff14,null))[_0xe8d0('0xe')](handleError(_0x5dff14,null));};exports[_0xe8d0('0x2e')]=function(_0x585d27,_0x2e4362){var _0x4bd7a2;return respondWithRpcPromise(_0xe8d0('0x2f'),_0x585d27[_0xe8d0('0x16')])[_0xe8d0('0x17')](function(_0x48fa07){_0x4bd7a2=_0x48fa07;return respondWithRpcPromise(_0xe8d0('0x2f'),_0x585d27[_0xe8d0('0x16')],routingClient);})[_0xe8d0('0x17')](function(_0x230a90){return _[_0xe8d0('0x19')]({},_0x230a90,_0x4bd7a2);})['then'](respondWithResult(_0x2e4362,null))['catch'](handleError(_0x2e4362,null));};exports['agentCapacity']=function(_0x4cf0da,_0x14ffb6){if(_0x4cf0da['body']&&_0x4cf0da[_0xe8d0('0x30')][_0xe8d0('0x31')]&&_0x4cf0da[_0xe8d0('0x32')]&&_0x4cf0da[_0xe8d0('0x32')][_0xe8d0('0x11')]){for(var _0x1156da in _0x4cf0da[_0xe8d0('0x30')][_0xe8d0('0x31')]){if(_0x4cf0da['body'][_0xe8d0('0x31')][_0xe8d0('0x33')](_0x1156da)){db['MemberReport']['findAll']({'where':{'channel':_0x1156da,'membername':_0x4cf0da[_0xe8d0('0x32')][_0xe8d0('0x11')],'type':_0xe8d0('0x34'),'exitAt':null,'uniqueid':_0x4cf0da['body'][_0xe8d0('0x31')][_0x1156da]&&_0x4cf0da[_0xe8d0('0x30')]['interaction'][_0x1156da][_0xe8d0('0x35')]?{'$notIn':_0x4cf0da[_0xe8d0('0x30')]['interaction'][_0x1156da]}:{'$ne':null}}})[_0xe8d0('0x17')](function(_0x23e250){var _0x1b7866=moment()[_0xe8d0('0x36')](_0xe8d0('0x37'));for(var _0x2a6760=0x0,_0x11339d=_0x23e250[_0xe8d0('0x35')];_0x2a6760<_0x11339d;_0x2a6760+=0x1){_0x23e250[_0x2a6760]['updateAttributes']({'exitAt':_0x1b7866});}});for(var _0x31a370=0x0;_0x31a370<_0x4cf0da[_0xe8d0('0x30')][_0xe8d0('0x31')][_0x1156da][_0xe8d0('0x35')];_0x31a370+=0x1){db[_0xe8d0('0x38')][_0xe8d0('0x39')]({'where':{'channel':_0x1156da,'membername':_0x4cf0da[_0xe8d0('0x32')][_0xe8d0('0x11')],'type':_0xe8d0('0x34'),'uniqueid':_0x4cf0da[_0xe8d0('0x30')][_0xe8d0('0x31')][_0x1156da][_0x31a370],'exitAt':null},'defaults':{'channel':_0x1156da,'membername':_0x4cf0da[_0xe8d0('0x32')]['name'],'interface':_[_0xe8d0('0x13')](_0x4cf0da[_0xe8d0('0x32')][_0xe8d0('0x3a')])?util[_0xe8d0('0x36')](_0xe8d0('0x3b'),_0x4cf0da[_0xe8d0('0x32')][_0xe8d0('0x11')]):_0x4cf0da['user'][_0xe8d0('0x3a')],'type':_0xe8d0('0x34'),'enterAt':moment()[_0xe8d0('0x36')](_0xe8d0('0x37')),'role':'agent','internal':_0x4cf0da[_0xe8d0('0x32')]['internal'],'uniqueid':_0x4cf0da[_0xe8d0('0x30')][_0xe8d0('0x31')][_0x1156da][_0x31a370]}});}}}}return respondWithRpcPromise(_0xe8d0('0x3c'),{'id':_0x4cf0da[_0xe8d0('0x1a')]['id'],'capacity':_0x4cf0da[_0xe8d0('0x30')][_0xe8d0('0x3d')]},routingClient)[_0xe8d0('0x17')](respondWithResult(_0x14ffb6,null))['catch'](handleError(_0x14ffb6,null));};exports[_0xe8d0('0x3e')]=function(_0x55f93d,_0x581a34){return respondWithRpcPromise(_0xe8d0('0x3f'),_0x55f93d['query'])[_0xe8d0('0x17')](respondWithResult(_0x581a34,null))['catch'](handleError(_0x581a34,null));};exports[_0xe8d0('0x40')]=function(_0x28494c,_0x13713c){return respondWithRpcPromise(_0xe8d0('0x41'),_0x28494c['query'])[_0xe8d0('0x17')](respondWithResult(_0x13713c,null))[_0xe8d0('0xe')](handleError(_0x13713c,null));};exports[_0xe8d0('0x42')]=function(_0x2e3f1d,_0x18cc14){return respondWithRpcPromise('Campaigns',_0x2e3f1d[_0xe8d0('0x16')])[_0xe8d0('0x17')](respondWithResult(_0x18cc14,null))[_0xe8d0('0xe')](handleError(_0x18cc14,null));};exports['chatQueues']=function(_0x2f4d43,_0x571c4e){return respondWithRpcPromise('ChatQueues',_0x2f4d43[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x571c4e,null))['catch'](handleError(_0x571c4e,null));};exports[_0xe8d0('0x43')]=function(_0x3a8074,_0x47893d){return respondWithRpcPromise(_0xe8d0('0x44'),_0x3a8074[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](findById(_0x3a8074[_0xe8d0('0x1a')]['id']))['then'](respondWithResult(_0x47893d,null))[_0xe8d0('0xe')](handleError(_0x47893d,null));};exports[_0xe8d0('0x45')]=function(_0x25e5ab,_0x76316a){return respondWithRpcPromise('MailQueues',_0x25e5ab[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x76316a,null))[_0xe8d0('0xe')](handleError(_0x76316a,null));};exports[_0xe8d0('0x46')]=function(_0x1a74d0,_0x29667c){return respondWithRpcPromise('MailQueues',_0x1a74d0['query'],routingClient)[_0xe8d0('0x17')](findById(_0x1a74d0['params']['id']))[_0xe8d0('0x17')](respondWithResult(_0x29667c,null))[_0xe8d0('0xe')](handleError(_0x29667c,null));};exports['mailAccounts']=function(_0x5ac1ae,_0x995163){return respondWithRpcPromise('MailAccounts',_0x5ac1ae[_0xe8d0('0x16')],mailClient)['then'](respondWithResult(_0x995163,null))[_0xe8d0('0xe')](handleError(_0x995163,null));};exports[_0xe8d0('0x47')]=function(_0x13b9f0,_0x4e2abc){return respondWithRpcPromise(_0xe8d0('0x48'),_0x13b9f0[_0xe8d0('0x16')],routingClient)['then'](respondWithResult(_0x4e2abc,null))[_0xe8d0('0xe')](handleError(_0x4e2abc,null));};exports['showOpenchannelQueues']=function(_0x3d0908,_0x4ff583){return respondWithRpcPromise(_0xe8d0('0x48'),_0x3d0908[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](findById(_0x3d0908[_0xe8d0('0x1a')]['id']))[_0xe8d0('0x17')](respondWithResult(_0x4ff583,null))['catch'](handleError(_0x4ff583,null));};exports['smsQueues']=function(_0xd7d433,_0x55a2df){return respondWithRpcPromise(_0xe8d0('0x49'),_0xd7d433[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x55a2df,null))[_0xe8d0('0xe')](handleError(_0x55a2df,null));};exports[_0xe8d0('0x4a')]=function(_0x1e806b,_0x177485){return respondWithRpcPromise(_0xe8d0('0x49'),_0x1e806b[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](findById(_0x1e806b[_0xe8d0('0x1a')]['id']))[_0xe8d0('0x17')](respondWithResult(_0x177485,null))[_0xe8d0('0xe')](handleError(_0x177485,null));};exports[_0xe8d0('0x4b')]=function(_0x22992f,_0x4a68d5){return respondWithRpcPromise(_0xe8d0('0x4c'),_0x22992f[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x4a68d5,null))[_0xe8d0('0xe')](handleError(_0x4a68d5,null));};exports[_0xe8d0('0x4d')]=function(_0x4848d4,_0x2eeb92){return respondWithRpcPromise(_0xe8d0('0x4c'),_0x4848d4[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](findById(_0x4848d4[_0xe8d0('0x1a')]['id']))[_0xe8d0('0x17')](respondWithResult(_0x2eeb92,null))[_0xe8d0('0xe')](handleError(_0x2eeb92,null));};exports[_0xe8d0('0x4e')]=function(_0x40cb5c,_0x24be86){return respondWithRpcPromise(_0xe8d0('0x4f'),_0x40cb5c[_0xe8d0('0x16')],routingClient)['then'](respondWithResult(_0x24be86,null))['catch'](handleError(_0x24be86,null));};exports[_0xe8d0('0x50')]=function(_0x54c04f,_0x169047){return respondWithRpcPromise(_0xe8d0('0x4f'),_0x54c04f['query'],routingClient)[_0xe8d0('0x17')](findById(_0x54c04f[_0xe8d0('0x1a')]['id']))[_0xe8d0('0x17')](respondWithResult(_0x169047,null))[_0xe8d0('0xe')](handleError(_0x169047,null));};exports[_0xe8d0('0x51')]=function(_0x1b5df8,_0x473e0b){return respondWithRpcPromise(_0xe8d0('0x52'),_0x1b5df8[_0xe8d0('0x16')])[_0xe8d0('0x17')](respondWithResult(_0x473e0b,null))[_0xe8d0('0xe')](handleError(_0x473e0b,null));};exports[_0xe8d0('0x53')]=function(_0xa0c61a,_0x2147d5){return respondWithRpcPromise(_0xe8d0('0x54'),_0xa0c61a[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x2147d5,null))[_0xe8d0('0xe')](handleError(_0x2147d5,null));};exports[_0xe8d0('0x55')]=function(_0x500fb0,_0x30ed66){return respondWithRpcPromise(_0xe8d0('0x56'),_0x500fb0[_0xe8d0('0x16')],routingClient)['then'](respondWithResult(_0x30ed66,null))[_0xe8d0('0xe')](handleError(_0x30ed66,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x31e6df,_0x1c1794){return respondWithRpcPromise(_0xe8d0('0x57'),_0x31e6df['query'],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x1c1794,null))[_0xe8d0('0xe')](handleError(_0x1c1794,null));};exports[_0xe8d0('0x58')]=function(_0x207680,_0x939184){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x207680[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](function(_0x23ba49){if(_0x207680[_0xe8d0('0x16')][_0xe8d0('0x59')]!==undefined){var _0x385a73=_(_0x23ba49[_0xe8d0('0x14')])[_0xe8d0('0x5a')]([_0x207680['query'][_0xe8d0('0x59')],_0x207680[_0xe8d0('0x1a')]['id']])[_0xe8d0('0x5b')](_0xe8d0('0x5c'))['uniq']()[_0xe8d0('0x5d')]();return _0x23ba49[_0xe8d0('0x14')][_0xe8d0('0x5a')](function(_0x575730){return _0x385a73[_0xe8d0('0x5e')](_0x575730['queue_id'])>-0x1;});}else{return _0x23ba49[_0xe8d0('0x14')]['filter'](function(_0x25bc77){return _0x25bc77[_0xe8d0('0x5c')]===parseInt(_0x207680[_0xe8d0('0x1a')]['id']);});}})[_0xe8d0('0x17')](respondWithResult(_0x939184,null))[_0xe8d0('0xe')](handleError(_0x939184,null));};exports[_0xe8d0('0x5f')]=function(_0x17fbdc,_0x3f5c69){return respondWithRpcPromise(_0xe8d0('0x60'),_0x17fbdc[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x3f5c69,null))[_0xe8d0('0xe')](handleError(_0x3f5c69,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x20e4ff,_0x1fa61e){return respondWithRpcPromise(_0xe8d0('0x61'),_0x20e4ff[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x1fa61e,null))[_0xe8d0('0xe')](handleError(_0x1fa61e,null));};exports[_0xe8d0('0x62')]=function(_0x605b5f,_0x2f9702){return respondWithRpcPromise(_0xe8d0('0x63'),_0x605b5f['query'],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x2f9702,null))[_0xe8d0('0xe')](handleError(_0x2f9702,null));};exports[_0xe8d0('0x64')]=function(_0xebc89e){return function(_0x255e4b,_0x550fe6){var _0x4c4ff0,_0xca752a;var _0x5c8c7d=_[_0xe8d0('0x65')](_0xebc89e);var _0x16098b=_0xebc89e===_0xe8d0('0x66')?'Website':_0xe8d0('0x67');return db[_0x5c8c7d+'Queue'][_0xe8d0('0x68')]({'raw':!![],'where':{'id':_0x255e4b[_0xe8d0('0x1a')]['id']}})[_0xe8d0('0x17')](function(_0x1a04a6){if(_[_0xe8d0('0x13')](_0x1a04a6)){throw new Error(_0x5c8c7d+'\x20Queue\x20not\x20found');}_0x4c4ff0=_0x1a04a6;return db[_0x5c8c7d+'Message'][_0xe8d0('0x68')]({'where':{'id':_0x255e4b[_0xe8d0('0x30')][_0xe8d0('0x69')]},'include':[{'model':db[_0x5c8c7d+_0xe8d0('0x6a')],'as':_0xe8d0('0x6a')},{'model':db[_0x5c8c7d+_0x16098b],'as':_0xe8d0('0x67')}]});})[_0xe8d0('0x17')](function(_0x1ff1cc){if(_[_0xe8d0('0x13')](_0x1ff1cc)){throw new Error(_0x5c8c7d+'\x20Message\x20not\x20found');}_0xca752a=_0x1ff1cc;return _0x1ff1cc[_0xe8d0('0x6b')]({'read':0x0,'readAt':null,'UserId':null});})[_0xe8d0('0x17')](function(){var _0x142db4={'uniqueid':_0xebc89e+'.'+_0xca752a['id']+'.'+_0xca752a[_0xe8d0('0x6a')]['id'],'FromUserId':_0x255e4b['user']['id'],'type':'queue'};_0x142db4[_0x5c8c7d+_0xe8d0('0x6c')]=_0xca752a['id'];_0x142db4[_0x5c8c7d+_0xe8d0('0x6d')]=_0xca752a[_0xe8d0('0x6a')]['id'];_0x142db4[_0xe8d0('0x6e')+_0x5c8c7d+_0x16098b+'Id']=_0xca752a[_0xe8d0('0x67')]['id'];_0x142db4['To'+_0x5c8c7d+_0xe8d0('0x6f')]=_0x4c4ff0['id'];return db[_0x5c8c7d+_0xe8d0('0x70')][_0xe8d0('0x71')](_0x142db4);})[_0xe8d0('0x17')](function(){return respondWithRpcPromise(_0xe8d0('0x72'),{'channel':_0xebc89e,'interaction':_0xca752a['Interaction'],'message':_0xca752a,'account':_0xca752a[_0xe8d0('0x67')],'applications':[{'id':0x0,'priority':0x1,'app':_0xe8d0('0x73'),'appdata':_0x4c4ff0[_0xe8d0('0x11')]+','+(_0xca752a[_0xe8d0('0x67')][_0xe8d0('0x74')]||0x12c),'interval':_0xe8d0('0x75')}]},routingClient);})[_0xe8d0('0x17')](respondWithResult(_0x550fe6,null))[_0xe8d0('0xe')](handleError(_0x550fe6,null));};};exports[_0xe8d0('0x76')]=function(_0x47bdc2,_0x52aece){var _0x2e11fc,_0x38e83f;if(_['isNil'](_0x47bdc2[_0xe8d0('0x30')][_0xe8d0('0x77')])){throw new Error(_0xe8d0('0x78'));}var _0x499efb=_0x47bdc2[_0xe8d0('0x30')][_0xe8d0('0x77')];var _0x233a5a=_[_0xe8d0('0x65')](_0x499efb);var _0x55588a=_0x499efb==='chat'?_0xe8d0('0x79'):_0xe8d0('0x67');return db['User']['findOne']({'raw':!![],'where':{'id':_0x47bdc2[_0xe8d0('0x1a')]['id'],'role':_0xe8d0('0x7a')}})[_0xe8d0('0x17')](function(_0x5eaf13){if(_[_0xe8d0('0x13')](_0x5eaf13)){throw new Error('Agent\x20not\x20found');}_0x2e11fc=_0x5eaf13;return db[_0x233a5a+'Message'][_0xe8d0('0x68')]({'where':{'id':_0x47bdc2[_0xe8d0('0x30')][_0xe8d0('0x69')]},'include':[{'model':db[_0x233a5a+_0xe8d0('0x6a')],'as':_0xe8d0('0x6a')},{'model':db[_0x233a5a+_0x55588a],'as':'Account'}]});})[_0xe8d0('0x17')](function(_0x455614){if(_['isNil'](_0x455614)){throw new Error(_0x233a5a+_0xe8d0('0x7b'));}_0x38e83f=_0x455614;return _0x455614[_0xe8d0('0x6b')]({'read':0x0,'readAt':null,'UserId':null});})[_0xe8d0('0x17')](function(){var _0x3e18af={'uniqueid':_0x499efb+'.'+_0x38e83f['id']+'.'+_0x38e83f['Interaction']['id'],'FromUserId':_0x47bdc2[_0xe8d0('0x32')]['id'],'type':_0xe8d0('0x73'),'ToUserId':_0x2e11fc['id']};_0x3e18af[_0x233a5a+_0xe8d0('0x6c')]=_0x38e83f['id'];_0x3e18af[_0x233a5a+_0xe8d0('0x6d')]=_0x38e83f[_0xe8d0('0x6a')]['id'];_0x3e18af[_0xe8d0('0x6e')+_0x233a5a+_0x55588a+'Id']=_0x38e83f[_0xe8d0('0x67')]['id'];return db[_0x233a5a+_0xe8d0('0x70')]['create'](_0x3e18af);})[_0xe8d0('0x17')](function(){return respondWithRpcPromise(_0xe8d0('0x72'),{'channel':_0x499efb,'interaction':_0x38e83f['Interaction'],'message':_0x38e83f,'account':_0x38e83f['Account'],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x2e11fc['name']+','+(_0x38e83f[_0xe8d0('0x67')]['agentTransferTimeout']||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0xe8d0('0x17')](respondWithResult(_0x52aece,null))['catch'](handleError(_0x52aece,null));};
\ No newline at end of file
index 7912f53..7fd7945 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0a9=['isAuthenticated','index','/:id','/:id/run','run','post','create','put','delete','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd0a9,0x1b9));var _0x9d0a=function(_0x23b655,_0x4feb2b){_0x23b655=_0x23b655-0x0;var _0x364b32=_0xd0a9[_0x23b655];return _0x364b32;};'use strict';var multer=require('multer');var util=require(_0x9d0a('0x0'));var path=require(_0x9d0a('0x1'));var timeout=require(_0x9d0a('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x9d0a('0x3'));var auth=require(_0x9d0a('0x4'));var interaction=require(_0x9d0a('0x5'));var config=require(_0x9d0a('0x6'));var controller=require(_0x9d0a('0x7'));router[_0x9d0a('0x8')]('/',auth[_0x9d0a('0x9')](),controller[_0x9d0a('0xa')]);router[_0x9d0a('0x8')](_0x9d0a('0xb'),auth[_0x9d0a('0x9')](),controller['show']);router[_0x9d0a('0x8')](_0x9d0a('0xc'),auth[_0x9d0a('0x9')](),controller[_0x9d0a('0xd')]);router[_0x9d0a('0xe')]('/',auth[_0x9d0a('0x9')](),controller[_0x9d0a('0xf')]);router[_0x9d0a('0x10')](_0x9d0a('0xb'),auth[_0x9d0a('0x9')](),controller['update']);router[_0x9d0a('0x11')](_0x9d0a('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xc339=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','run','post','put','update','delete','destroy','exports','multer','util','path'];(function(_0x3dfeb9,_0x1cc6e4){var _0x412314=function(_0x321253){while(--_0x321253){_0x3dfeb9['push'](_0x3dfeb9['shift']());}};_0x412314(++_0x1cc6e4);}(_0xc339,0xa5));var _0x9c33=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc339[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x9c33('0x0'));var util=require(_0x9c33('0x1'));var path=require(_0x9c33('0x2'));var timeout=require('connect-timeout');var express=require(_0x9c33('0x3'));var router=express[_0x9c33('0x4')]();var fs_extra=require(_0x9c33('0x5'));var auth=require(_0x9c33('0x6'));var interaction=require(_0x9c33('0x7'));var config=require(_0x9c33('0x8'));var controller=require('./schedule.controller');router['get']('/',auth[_0x9c33('0x9')](),controller[_0x9c33('0xa')]);router[_0x9c33('0xb')](_0x9c33('0xc'),auth[_0x9c33('0x9')](),controller[_0x9c33('0xd')]);router[_0x9c33('0xb')]('/:id/run',auth[_0x9c33('0x9')](),controller[_0x9c33('0xe')]);router[_0x9c33('0xf')]('/',auth[_0x9c33('0x9')](),controller['create']);router[_0x9c33('0x10')](_0x9c33('0xc'),auth[_0x9c33('0x9')](),controller[_0x9c33('0x11')]);router[_0x9c33('0x12')](_0x9c33('0xc'),auth[_0x9c33('0x9')](),controller[_0x9c33('0x13')]);module[_0x9c33('0x14')]=router;
\ No newline at end of file
index dc77e46..f301e4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fde=['years','quarters','months','weeks','days','hours','minutes','pdf','xlsx','csv','custom','default','TEXT','BOOLEAN','STRING','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM'];(function(_0x2ecf06,_0x3a258b){var _0x1f563d=function(_0x43b0a3){while(--_0x43b0a3){_0x2ecf06['push'](_0x2ecf06['shift']());}};_0x1f563d(++_0x3a258b);}(_0x2fde,0x163));var _0xe2fd=function(_0x4b912d,_0x49ab5f){_0x4b912d=_0x4b912d-0x0;var _0x4dd8bd=_0x2fde[_0x4b912d];return _0x4dd8bd;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xe2fd('0x0')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xe2fd('0x1')],'allowNull':![],'defaultValue':_0xe2fd('0x2')},'startAt':{'type':Sequelize['DATE'],'allowNull':![]},'endAt':{'type':Sequelize[_0xe2fd('0x3')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xe2fd('0x4')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xe2fd('0x5')](_0xe2fd('0x6'),_0xe2fd('0x7'),_0xe2fd('0x8'),_0xe2fd('0x9'),_0xe2fd('0xa'),_0xe2fd('0xb'),_0xe2fd('0xc')),'allowNull':![],'defaultValue':_0xe2fd('0xa')},'output':{'type':Sequelize[_0xe2fd('0x5')]('csv',_0xe2fd('0xd'),_0xe2fd('0xe')),'allowNull':![],'defaultValue':_0xe2fd('0xf')},'type':{'type':Sequelize[_0xe2fd('0x5')](_0xe2fd('0x10'),_0xe2fd('0x11')),'allowNull':![],'defaultValue':_0xe2fd('0x10')},'sendMail':{'type':Sequelize[_0xe2fd('0x0')],'defaultValue':![]},'email':{'type':Sequelize[_0xe2fd('0x1')]},'cc':{'type':Sequelize[_0xe2fd('0x12')]},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize[_0xe2fd('0x0')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x7601=['INTEGER','ENUM','years','quarters','months','weeks','days','hours','minutes','xlsx','csv','custom','TEXT','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE'];(function(_0xa93747,_0xc8a4dd){var _0x43962d=function(_0x344104){while(--_0x344104){_0xa93747['push'](_0xa93747['shift']());}};_0x43962d(++_0xc8a4dd);}(_0x7601,0x151));var _0x1760=function(_0x31a938,_0x4daec6){_0x31a938=_0x31a938-0x0;var _0x1bf341=_0x7601[_0x31a938];return _0x1bf341;};'use strict';var Sequelize=require('sequelize');module[_0x1760('0x0')]={'name':{'type':Sequelize[_0x1760('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x1760('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x1760('0x1')],'allowNull':![],'defaultValue':_0x1760('0x3')},'startAt':{'type':Sequelize[_0x1760('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0x1760('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x1760('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x1760('0x6')](_0x1760('0x7'),_0x1760('0x8'),_0x1760('0x9'),_0x1760('0xa'),_0x1760('0xb'),_0x1760('0xc'),_0x1760('0xd')),'allowNull':![],'defaultValue':_0x1760('0xb')},'output':{'type':Sequelize[_0x1760('0x6')]('csv','pdf',_0x1760('0xe')),'allowNull':![],'defaultValue':_0x1760('0xf')},'type':{'type':Sequelize[_0x1760('0x6')](_0x1760('0x10'),'default'),'allowNull':![],'defaultValue':_0x1760('0x10')},'sendMail':{'type':Sequelize[_0x1760('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x1760('0x1')]},'cc':{'type':Sequelize[_0x1760('0x11')]},'bcc':{'type':Sequelize[_0x1760('0x11')]},'sendIfEmpty':{'type':Sequelize[_0x1760('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index a7cdf24..6966f40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ca0=['api','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','save','then','destroy','get','Scheduler','UserProfileResource','sendStatus','error','stack','name','map','Schedule','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','run','../../config/schedule','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x3ca0,0x1d6));var _0x03ca=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3ca0[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x03ca('0x0'));var rimraf=require(_0x03ca('0x1'));var zipdir=require(_0x03ca('0x2'));var jsonpatch=require(_0x03ca('0x3'));var rp=require(_0x03ca('0x4'));var moment=require('moment');var BPromise=require(_0x03ca('0x5'));var Mustache=require(_0x03ca('0x6'));var util=require(_0x03ca('0x7'));var path=require('path');var sox=require(_0x03ca('0x8'));var csv=require(_0x03ca('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x03ca('0xa'));var _=require(_0x03ca('0xb'));var squel=require(_0x03ca('0xc'));var crypto=require(_0x03ca('0xd'));var jsforce=require(_0x03ca('0xe'));var deskjs=require(_0x03ca('0xf'));var toCsv=require(_0x03ca('0x9'));var querystring=require('querystring');var Papa=require(_0x03ca('0x10'));var Redis=require(_0x03ca('0x11'));var authService=require(_0x03ca('0x12'));var qs=require(_0x03ca('0x13'));var as=require(_0x03ca('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x03ca('0x15'))(_0x03ca('0x16'));var utils=require('../../config/utils');var config=require(_0x03ca('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x03ca('0x18'))['db'];function respondWithStatusCode(_0x2ea8e9,_0x403935){_0x403935=_0x403935||0xcc;return function(_0x54b717){if(_0x54b717){return _0x2ea8e9['sendStatus'](_0x403935);}return _0x2ea8e9[_0x03ca('0x19')](_0x403935)[_0x03ca('0x1a')]();};}function respondWithResult(_0x2d2a94,_0x580c4b){_0x580c4b=_0x580c4b||0xc8;return function(_0x52e027){if(_0x52e027){return _0x2d2a94[_0x03ca('0x19')](_0x580c4b)[_0x03ca('0x1b')](_0x52e027);}};}function respondWithFilteredResult(_0x5bfd26,_0x4b3b43){return function(_0x4e8e43){if(_0x4e8e43){var _0x344158=typeof _0x4b3b43[_0x03ca('0x1c')]===_0x03ca('0x1d')&&typeof _0x4b3b43[_0x03ca('0x1e')]===_0x03ca('0x1d');var _0x590480=_0x4e8e43[_0x03ca('0x1f')];var _0x35edda=_0x344158?0x0:_0x4b3b43[_0x03ca('0x1c')];var _0x369857=_0x344158?_0x4e8e43[_0x03ca('0x1f')]:_0x4b3b43['offset']+_0x4b3b43[_0x03ca('0x1e')];var _0x2494a7;if(_0x369857>=_0x590480){_0x369857=_0x590480;_0x2494a7=0xc8;}else{_0x2494a7=0xce;}_0x5bfd26[_0x03ca('0x19')](_0x2494a7);return _0x5bfd26[_0x03ca('0x20')]('Content-Range',_0x35edda+'-'+_0x369857+'/'+_0x590480)[_0x03ca('0x1b')](_0x4e8e43);}return null;};}function patchUpdates(_0x873dde){return function(_0x319c99){try{jsonpatch[_0x03ca('0x21')](_0x319c99,_0x873dde,!![]);}catch(_0x7e6bcf){return BPromise['reject'](_0x7e6bcf);}return _0x319c99[_0x03ca('0x22')]();};}function saveUpdates(_0x55e01f,_0x4de954){return function(_0x2ee7ad){if(_0x2ee7ad){return _0x2ee7ad['update'](_0x55e01f)[_0x03ca('0x23')](function(_0x23fa80){return _0x23fa80;});}return null;};}function removeEntity(_0x21391c,_0x1ac212){return function(_0x1cc94e){if(_0x1cc94e){return _0x1cc94e[_0x03ca('0x24')]()['then'](function(){var _0x4663f3=_0x1cc94e[_0x03ca('0x25')]({'plain':!![]});var _0x2f9e73=_0x03ca('0x26');return db[_0x03ca('0x27')][_0x03ca('0x24')]({'where':{'type':_0x2f9e73,'resourceId':_0x4663f3['id']}})[_0x03ca('0x23')](function(){return _0x1cc94e;});})[_0x03ca('0x23')](function(){_0x21391c['status'](0xcc)[_0x03ca('0x1a')]();});}};}function handleEntityNotFound(_0x4b219e,_0x4dce95){return function(_0x4fc8ab){if(!_0x4fc8ab){_0x4b219e[_0x03ca('0x28')](0x194);}return _0x4fc8ab;};}function handleError(_0x50a3b2,_0x4cdff2){_0x4cdff2=_0x4cdff2||0x1f4;return function(_0x2e8103){logger[_0x03ca('0x29')](_0x2e8103[_0x03ca('0x2a')]);if(_0x2e8103[_0x03ca('0x2b')]){delete _0x2e8103[_0x03ca('0x2b')];}_0x50a3b2['status'](_0x4cdff2)['send'](_0x2e8103);};}exports['index']=function(_0x76befd,_0x2e0414){var _0x1d2877={},_0x55012c={},_0x1f7bd1={'count':0x0,'rows':[]};var _0x117357=_[_0x03ca('0x2c')](db[_0x03ca('0x2d')][_0x03ca('0x2e')],function(_0x36bb48){return{'name':_0x36bb48[_0x03ca('0x2f')],'type':_0x36bb48[_0x03ca('0x30')][_0x03ca('0x31')]};});_0x55012c[_0x03ca('0x32')]=_[_0x03ca('0x2c')](_0x117357,'name');_0x55012c[_0x03ca('0x33')]=_[_0x03ca('0x34')](_0x76befd[_0x03ca('0x33')]);_0x55012c[_0x03ca('0x35')]=_[_0x03ca('0x36')](_0x55012c[_0x03ca('0x32')],_0x55012c[_0x03ca('0x33')]);_0x1d2877['attributes']=_['intersection'](_0x55012c[_0x03ca('0x32')],qs[_0x03ca('0x37')](_0x76befd[_0x03ca('0x33')]['fields']));_0x1d2877[_0x03ca('0x38')]=_0x1d2877['attributes'][_0x03ca('0x39')]?_0x1d2877['attributes']:_0x55012c[_0x03ca('0x32')];if(!_0x76befd[_0x03ca('0x33')][_0x03ca('0x3a')]('nolimit')){_0x1d2877['limit']=qs[_0x03ca('0x1e')](_0x76befd[_0x03ca('0x33')]['limit']);_0x1d2877[_0x03ca('0x1c')]=qs['offset'](_0x76befd[_0x03ca('0x33')][_0x03ca('0x1c')]);}_0x1d2877[_0x03ca('0x3b')]=qs[_0x03ca('0x3c')](_0x76befd['query'][_0x03ca('0x3c')]);_0x1d2877[_0x03ca('0x3d')]=qs['filters'](_[_0x03ca('0x3e')](_0x76befd[_0x03ca('0x33')],_0x55012c[_0x03ca('0x35')]),_0x117357);if(_0x76befd[_0x03ca('0x33')][_0x03ca('0x3f')]){_0x1d2877[_0x03ca('0x3d')]=_[_0x03ca('0x40')](_0x1d2877[_0x03ca('0x3d')],{'$or':_[_0x03ca('0x2c')](_0x117357,function(_0x28cb37){if(_0x28cb37[_0x03ca('0x30')]!==_0x03ca('0x41')){var _0x187967={};_0x187967[_0x28cb37['name']]={'$like':'%'+_0x76befd[_0x03ca('0x33')]['filter']+'%'};return _0x187967;}})});}_0x1d2877=_['merge']({},_0x1d2877,_0x76befd['options']);var _0xa7895={'where':_0x1d2877['where']};return db[_0x03ca('0x2d')]['count'](_0xa7895)['then'](function(_0x54548f){_0x1f7bd1['count']=_0x54548f;if(_0x76befd['query'][_0x03ca('0x42')]){_0x1d2877[_0x03ca('0x43')]=[{'all':!![]}];}return db['Schedule'][_0x03ca('0x44')](_0x1d2877);})[_0x03ca('0x23')](function(_0xbe78ab){_0x1f7bd1[_0x03ca('0x45')]=_0xbe78ab;return _0x1f7bd1;})[_0x03ca('0x23')](respondWithFilteredResult(_0x2e0414,_0x1d2877))[_0x03ca('0x46')](handleError(_0x2e0414,null));};exports['show']=function(_0x3d6c97,_0x5da0a1){var _0x4aaafb={'raw':![],'where':{'id':_0x3d6c97['params']['id']}},_0x9c555c={};_0x9c555c[_0x03ca('0x32')]=_[_0x03ca('0x34')](db[_0x03ca('0x2d')][_0x03ca('0x2e')]);_0x9c555c[_0x03ca('0x33')]=_['keys'](_0x3d6c97[_0x03ca('0x33')]);_0x9c555c['filters']=_[_0x03ca('0x36')](_0x9c555c[_0x03ca('0x32')],_0x9c555c[_0x03ca('0x33')]);_0x4aaafb['attributes']=_[_0x03ca('0x36')](_0x9c555c[_0x03ca('0x32')],qs[_0x03ca('0x37')](_0x3d6c97[_0x03ca('0x33')][_0x03ca('0x37')]));_0x4aaafb['attributes']=_0x4aaafb['attributes'][_0x03ca('0x39')]?_0x4aaafb[_0x03ca('0x38')]:_0x9c555c['model'];if(_0x3d6c97['query'][_0x03ca('0x42')]){_0x4aaafb['include']=[{'all':!![]}];}_0x4aaafb=_[_0x03ca('0x40')]({},_0x4aaafb,_0x3d6c97['options']);return db['Schedule'][_0x03ca('0x47')](_0x4aaafb)[_0x03ca('0x23')](handleEntityNotFound(_0x5da0a1,null))[_0x03ca('0x23')](respondWithResult(_0x5da0a1,null))[_0x03ca('0x46')](handleError(_0x5da0a1,null));};exports[_0x03ca('0x48')]=function(_0x437926,_0xda2b0b){return db['Schedule'][_0x03ca('0x48')](_0x437926[_0x03ca('0x49')],{})[_0x03ca('0x23')](function(_0xcbde3c){var _0x58bb29=_0x437926['user'][_0x03ca('0x25')]({'plain':!![]});if(!_0x58bb29)throw new Error(_0x03ca('0x4a'));if(_0x58bb29[_0x03ca('0x4b')]===_0x03ca('0x4c')){var _0x1f3d2a=_0xcbde3c[_0x03ca('0x25')]({'plain':!![]});var _0x113553='Scheduler';return db['UserProfileSection'][_0x03ca('0x47')]({'where':{'name':_0x113553,'userProfileId':_0x58bb29['userProfileId']},'raw':!![]})[_0x03ca('0x23')](function(_0x2a1f99){if(_0x2a1f99&&_0x2a1f99['autoAssociation']===0x0){return db['UserProfileResource'][_0x03ca('0x48')]({'name':_0x1f3d2a[_0x03ca('0x2b')],'resourceId':_0x1f3d2a['id'],'type':_0x2a1f99[_0x03ca('0x2b')],'sectionId':_0x2a1f99['id']},{})['then'](function(){return _0xcbde3c;});}else{return _0xcbde3c;}})[_0x03ca('0x46')](function(_0xb25dd2){logger[_0x03ca('0x29')](_0x03ca('0x4d'),_0xb25dd2);throw _0xb25dd2;});}return _0xcbde3c;})['then'](respondWithResult(_0xda2b0b,0xc9))[_0x03ca('0x46')](handleError(_0xda2b0b,null));};exports[_0x03ca('0x4e')]=function(_0x459240,_0xe82251){if(_0x459240[_0x03ca('0x49')]['id']){delete _0x459240[_0x03ca('0x49')]['id'];}return db[_0x03ca('0x2d')]['find']({'where':{'id':_0x459240[_0x03ca('0x4f')]['id']}})[_0x03ca('0x23')](handleEntityNotFound(_0xe82251,null))['then'](saveUpdates(_0x459240[_0x03ca('0x49')],null))[_0x03ca('0x23')](respondWithResult(_0xe82251,null))[_0x03ca('0x46')](handleError(_0xe82251,null));};exports[_0x03ca('0x24')]=function(_0x5d405b,_0x4dd1cb){return db[_0x03ca('0x2d')][_0x03ca('0x47')]({'where':{'id':_0x5d405b[_0x03ca('0x4f')]['id']}})[_0x03ca('0x23')](handleEntityNotFound(_0x4dd1cb,null))[_0x03ca('0x23')](removeEntity(_0x4dd1cb,null))['catch'](handleError(_0x4dd1cb,null));};exports[_0x03ca('0x50')]=function(_0x23c6c2,_0x2403c7,_0x467a6){var _0x1d8165=require(_0x03ca('0x51'));return db[_0x03ca('0x2d')][_0x03ca('0x47')]({'where':{'id':_0x23c6c2['params']['id']},'raw':!![]})[_0x03ca('0x23')](handleEntityNotFound(_0x2403c7,null))[_0x03ca('0x23')](function(){_0x1d8165[_0x03ca('0x50')](_0x23c6c2[_0x03ca('0x4f')]['id']);})[_0x03ca('0x23')](respondWithStatusCode(_0x2403c7,null))['catch'](handleError(_0x2403c7,null));};
\ No newline at end of file
+var _0x4fd8=['rawAttributes','type','key','model','map','query','keys','intersection','fields','attributes','length','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','rows','catch','params','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','run','../../config/schedule','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Scheduler','UserProfileResource','end','error','name','send','index','Schedule'];(function(_0x48c1c8,_0x2612a5){var _0x4cd023=function(_0x4dbc03){while(--_0x4dbc03){_0x48c1c8['push'](_0x48c1c8['shift']());}};_0x4cd023(++_0x2612a5);}(_0x4fd8,0x11c));var _0x84fd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4fd8[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x84fd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x84fd('0x1'));var jsonpatch=require(_0x84fd('0x2'));var rp=require(_0x84fd('0x3'));var moment=require(_0x84fd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x84fd('0x5'));var util=require(_0x84fd('0x6'));var path=require('path');var sox=require(_0x84fd('0x7'));var csv=require(_0x84fd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x84fd('0x9'));var _=require('lodash');var squel=require(_0x84fd('0xa'));var crypto=require(_0x84fd('0xb'));var jsforce=require(_0x84fd('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x84fd('0xd'));var Papa=require(_0x84fd('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x84fd('0xf'));var as=require(_0x84fd('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x84fd('0x11'))('api');var utils=require(_0x84fd('0x12'));var config=require(_0x84fd('0x13'));var licenseUtil=require(_0x84fd('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x477a0a,_0x5e2547){_0x5e2547=_0x5e2547||0xcc;return function(_0xe4d49e){if(_0xe4d49e){return _0x477a0a['sendStatus'](_0x5e2547);}return _0x477a0a[_0x84fd('0x15')](_0x5e2547)['end']();};}function respondWithResult(_0x31c7af,_0x2fd921){_0x2fd921=_0x2fd921||0xc8;return function(_0x41d5b0){if(_0x41d5b0){return _0x31c7af['status'](_0x2fd921)[_0x84fd('0x16')](_0x41d5b0);}};}function respondWithFilteredResult(_0x581fa2,_0x2e45f5){return function(_0x59253d){if(_0x59253d){var _0x2e5642=typeof _0x2e45f5[_0x84fd('0x17')]==='undefined'&&typeof _0x2e45f5[_0x84fd('0x18')]===_0x84fd('0x19');var _0x56384c=_0x59253d[_0x84fd('0x1a')];var _0x36aec0=_0x2e5642?0x0:_0x2e45f5[_0x84fd('0x17')];var _0x1923c0=_0x2e5642?_0x59253d[_0x84fd('0x1a')]:_0x2e45f5[_0x84fd('0x17')]+_0x2e45f5[_0x84fd('0x18')];var _0x35c61c;if(_0x1923c0>=_0x56384c){_0x1923c0=_0x56384c;_0x35c61c=0xc8;}else{_0x35c61c=0xce;}_0x581fa2[_0x84fd('0x15')](_0x35c61c);return _0x581fa2[_0x84fd('0x1b')](_0x84fd('0x1c'),_0x36aec0+'-'+_0x1923c0+'/'+_0x56384c)['json'](_0x59253d);}return null;};}function patchUpdates(_0x4dae77){return function(_0x3ec738){try{jsonpatch[_0x84fd('0x1d')](_0x3ec738,_0x4dae77,!![]);}catch(_0x3730dd){return BPromise[_0x84fd('0x1e')](_0x3730dd);}return _0x3ec738[_0x84fd('0x1f')]();};}function saveUpdates(_0x52a016,_0x4def06){return function(_0x108865){if(_0x108865){return _0x108865[_0x84fd('0x20')](_0x52a016)[_0x84fd('0x21')](function(_0x1cfec9){return _0x1cfec9;});}return null;};}function removeEntity(_0x144a8f,_0x3e4a58){return function(_0x56b70e){if(_0x56b70e){return _0x56b70e[_0x84fd('0x22')]()[_0x84fd('0x21')](function(){var _0x5a18a8=_0x56b70e[_0x84fd('0x23')]({'plain':!![]});var _0x489da3=_0x84fd('0x24');return db[_0x84fd('0x25')]['destroy']({'where':{'type':_0x489da3,'resourceId':_0x5a18a8['id']}})[_0x84fd('0x21')](function(){return _0x56b70e;});})[_0x84fd('0x21')](function(){_0x144a8f['status'](0xcc)[_0x84fd('0x26')]();});}};}function handleEntityNotFound(_0x2a52d4,_0x4bff3a){return function(_0x1d78f9){if(!_0x1d78f9){_0x2a52d4['sendStatus'](0x194);}return _0x1d78f9;};}function handleError(_0x217220,_0x57e182){_0x57e182=_0x57e182||0x1f4;return function(_0x31d592){logger[_0x84fd('0x27')](_0x31d592['stack']);if(_0x31d592['name']){delete _0x31d592[_0x84fd('0x28')];}_0x217220[_0x84fd('0x15')](_0x57e182)[_0x84fd('0x29')](_0x31d592);};}exports[_0x84fd('0x2a')]=function(_0x4e814d,_0x326a9e){var _0x188c50={},_0x476cea={},_0x554b11={'count':0x0,'rows':[]};var _0x565dd4=_['map'](db[_0x84fd('0x2b')][_0x84fd('0x2c')],function(_0x3241eb){return{'name':_0x3241eb['fieldName'],'type':_0x3241eb[_0x84fd('0x2d')][_0x84fd('0x2e')]};});_0x476cea[_0x84fd('0x2f')]=_[_0x84fd('0x30')](_0x565dd4,_0x84fd('0x28'));_0x476cea[_0x84fd('0x31')]=_[_0x84fd('0x32')](_0x4e814d[_0x84fd('0x31')]);_0x476cea['filters']=_[_0x84fd('0x33')](_0x476cea['model'],_0x476cea[_0x84fd('0x31')]);_0x188c50['attributes']=_[_0x84fd('0x33')](_0x476cea['model'],qs[_0x84fd('0x34')](_0x4e814d['query'][_0x84fd('0x34')]));_0x188c50[_0x84fd('0x35')]=_0x188c50[_0x84fd('0x35')][_0x84fd('0x36')]?_0x188c50[_0x84fd('0x35')]:_0x476cea[_0x84fd('0x2f')];if(!_0x4e814d[_0x84fd('0x31')]['hasOwnProperty'](_0x84fd('0x37'))){_0x188c50['limit']=qs[_0x84fd('0x18')](_0x4e814d[_0x84fd('0x31')][_0x84fd('0x18')]);_0x188c50[_0x84fd('0x17')]=qs[_0x84fd('0x17')](_0x4e814d['query'][_0x84fd('0x17')]);}_0x188c50[_0x84fd('0x38')]=qs['sort'](_0x4e814d[_0x84fd('0x31')][_0x84fd('0x39')]);_0x188c50['where']=qs[_0x84fd('0x3a')](_[_0x84fd('0x3b')](_0x4e814d[_0x84fd('0x31')],_0x476cea[_0x84fd('0x3a')]),_0x565dd4);if(_0x4e814d[_0x84fd('0x31')]['filter']){_0x188c50[_0x84fd('0x3c')]=_[_0x84fd('0x3d')](_0x188c50[_0x84fd('0x3c')],{'$or':_['map'](_0x565dd4,function(_0x2b0d7a){if(_0x2b0d7a[_0x84fd('0x2d')]!==_0x84fd('0x3e')){var _0x4fa4f5={};_0x4fa4f5[_0x2b0d7a[_0x84fd('0x28')]]={'$like':'%'+_0x4e814d[_0x84fd('0x31')][_0x84fd('0x3f')]+'%'};return _0x4fa4f5;}})});}_0x188c50=_[_0x84fd('0x3d')]({},_0x188c50,_0x4e814d[_0x84fd('0x40')]);var _0x4b810b={'where':_0x188c50[_0x84fd('0x3c')]};return db[_0x84fd('0x2b')][_0x84fd('0x1a')](_0x4b810b)[_0x84fd('0x21')](function(_0x394903){_0x554b11[_0x84fd('0x1a')]=_0x394903;if(_0x4e814d[_0x84fd('0x31')][_0x84fd('0x41')]){_0x188c50['include']=[{'all':!![]}];}return db[_0x84fd('0x2b')]['findAll'](_0x188c50);})[_0x84fd('0x21')](function(_0x27048e){_0x554b11[_0x84fd('0x42')]=_0x27048e;return _0x554b11;})['then'](respondWithFilteredResult(_0x326a9e,_0x188c50))[_0x84fd('0x43')](handleError(_0x326a9e,null));};exports['show']=function(_0xc3136a,_0x3f708f){var _0x1856b6={'raw':![],'where':{'id':_0xc3136a[_0x84fd('0x44')]['id']}},_0x10bb4c={};_0x10bb4c[_0x84fd('0x2f')]=_[_0x84fd('0x32')](db['Schedule'][_0x84fd('0x2c')]);_0x10bb4c['query']=_['keys'](_0xc3136a[_0x84fd('0x31')]);_0x10bb4c[_0x84fd('0x3a')]=_[_0x84fd('0x33')](_0x10bb4c[_0x84fd('0x2f')],_0x10bb4c['query']);_0x1856b6['attributes']=_[_0x84fd('0x33')](_0x10bb4c[_0x84fd('0x2f')],qs[_0x84fd('0x34')](_0xc3136a[_0x84fd('0x31')][_0x84fd('0x34')]));_0x1856b6[_0x84fd('0x35')]=_0x1856b6[_0x84fd('0x35')][_0x84fd('0x36')]?_0x1856b6[_0x84fd('0x35')]:_0x10bb4c['model'];if(_0xc3136a[_0x84fd('0x31')][_0x84fd('0x41')]){_0x1856b6[_0x84fd('0x45')]=[{'all':!![]}];}_0x1856b6=_[_0x84fd('0x3d')]({},_0x1856b6,_0xc3136a[_0x84fd('0x40')]);return db[_0x84fd('0x2b')][_0x84fd('0x46')](_0x1856b6)[_0x84fd('0x21')](handleEntityNotFound(_0x3f708f,null))[_0x84fd('0x21')](respondWithResult(_0x3f708f,null))['catch'](handleError(_0x3f708f,null));};exports[_0x84fd('0x47')]=function(_0x5dfaaa,_0x6134d5){return db[_0x84fd('0x2b')][_0x84fd('0x47')](_0x5dfaaa['body'],{})[_0x84fd('0x21')](function(_0x23d1a4){var _0x55aa6f=_0x5dfaaa[_0x84fd('0x48')]['get']({'plain':!![]});if(!_0x55aa6f)throw new Error(_0x84fd('0x49'));if(_0x55aa6f[_0x84fd('0x4a')]===_0x84fd('0x48')){var _0x453fff=_0x23d1a4['get']({'plain':!![]});var _0x1e2db9=_0x84fd('0x24');return db[_0x84fd('0x4b')][_0x84fd('0x46')]({'where':{'name':_0x1e2db9,'userProfileId':_0x55aa6f[_0x84fd('0x4c')]},'raw':!![]})[_0x84fd('0x21')](function(_0x1bac4c){if(_0x1bac4c&&_0x1bac4c[_0x84fd('0x4d')]===0x0){return db[_0x84fd('0x25')]['create']({'name':_0x453fff[_0x84fd('0x28')],'resourceId':_0x453fff['id'],'type':_0x1bac4c[_0x84fd('0x28')],'sectionId':_0x1bac4c['id']},{})['then'](function(){return _0x23d1a4;});}else{return _0x23d1a4;}})[_0x84fd('0x43')](function(_0x2fddf6){logger[_0x84fd('0x27')](_0x84fd('0x4e'),_0x2fddf6);throw _0x2fddf6;});}return _0x23d1a4;})[_0x84fd('0x21')](respondWithResult(_0x6134d5,0xc9))['catch'](handleError(_0x6134d5,null));};exports[_0x84fd('0x20')]=function(_0x49ff6c,_0x20054d){if(_0x49ff6c['body']['id']){delete _0x49ff6c[_0x84fd('0x4f')]['id'];}return db[_0x84fd('0x2b')][_0x84fd('0x46')]({'where':{'id':_0x49ff6c[_0x84fd('0x44')]['id']}})[_0x84fd('0x21')](handleEntityNotFound(_0x20054d,null))['then'](saveUpdates(_0x49ff6c[_0x84fd('0x4f')],null))[_0x84fd('0x21')](respondWithResult(_0x20054d,null))[_0x84fd('0x43')](handleError(_0x20054d,null));};exports[_0x84fd('0x22')]=function(_0x89c006,_0x36a8d6){return db[_0x84fd('0x2b')][_0x84fd('0x46')]({'where':{'id':_0x89c006[_0x84fd('0x44')]['id']}})[_0x84fd('0x21')](handleEntityNotFound(_0x36a8d6,null))[_0x84fd('0x21')](removeEntity(_0x36a8d6,null))[_0x84fd('0x43')](handleError(_0x36a8d6,null));};exports[_0x84fd('0x50')]=function(_0xa149d3,_0x2d2383,_0x1bf07c){var _0x522238=require(_0x84fd('0x51'));return db[_0x84fd('0x2b')]['find']({'where':{'id':_0xa149d3[_0x84fd('0x44')]['id']},'raw':!![]})[_0x84fd('0x21')](handleEntityNotFound(_0x2d2383,null))['then'](function(){_0x522238[_0x84fd('0x50')](_0xa149d3[_0x84fd('0x44')]['id']);})[_0x84fd('0x21')](respondWithStatusCode(_0x2d2383,null))['catch'](handleError(_0x2d2383,null));};
\ No newline at end of file
index e0b1159..9d98b0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4172=['./schedule.attributes','exports','define','Schedule','tools_schedules','util','bluebird','request-promise','path','rimraf'];(function(_0x2a8946,_0x7c3dab){var _0x368dbd=function(_0x1df4c4){while(--_0x1df4c4){_0x2a8946['push'](_0x2a8946['shift']());}};_0x368dbd(++_0x7c3dab);}(_0x4172,0x159));var _0x2417=function(_0x2c47bb,_0x172ef6){_0x2c47bb=_0x2c47bb-0x0;var _0x4bffb7=_0x4172[_0x2c47bb];return _0x4bffb7;};'use strict';var _=require('lodash');var util=require(_0x2417('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x2417('0x1'));var rp=require(_0x2417('0x2'));var fs=require('fs');var path=require(_0x2417('0x3'));var rimraf=require(_0x2417('0x4'));var config=require('../../config/environment');var attributes=require(_0x2417('0x5'));module[_0x2417('0x6')]=function(_0x160d0e,_0x28cafa){return _0x160d0e[_0x2417('0x7')](_0x2417('0x8'),attributes,{'tableName':_0x2417('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc551=['./schedule.attributes','Schedule','tools_schedules','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x53f402,_0x326920){var _0x45a76d=function(_0x51f590){while(--_0x51f590){_0x53f402['push'](_0x53f402['shift']());}};_0x45a76d(++_0x326920);}(_0xc551,0x1b3));var _0x1c55=function(_0x53bb02,_0x224ef9){_0x53bb02=_0x53bb02-0x0;var _0x56e423=_0xc551[_0x53bb02];return _0x56e423;};'use strict';var _=require(_0x1c55('0x0'));var util=require('util');var logger=require(_0x1c55('0x1'))(_0x1c55('0x2'));var moment=require(_0x1c55('0x3'));var BPromise=require(_0x1c55('0x4'));var rp=require(_0x1c55('0x5'));var fs=require('fs');var path=require(_0x1c55('0x6'));var rimraf=require(_0x1c55('0x7'));var config=require(_0x1c55('0x8'));var attributes=require(_0x1c55('0x9'));module['exports']=function(_0x379ad4,_0x2f9ae3){return _0x379ad4['define'](_0x1c55('0xa'),attributes,{'tableName':_0x1c55('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 71c79d5..3262660 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe70b=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xe70b,0x166));var _0xbe70=function(_0xf72153,_0x47c714){_0xf72153=_0xf72153-0x0;var _0x35f5b7=_0xe70b[_0xf72153];return _0x35f5b7;};'use strict';var _=require(_0xbe70('0x0'));var util=require('util');var moment=require(_0xbe70('0x1'));var BPromise=require(_0xbe70('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbe70('0x3'));var db=require(_0xbe70('0x4'))['db'];var utils=require(_0xbe70('0x5'));var logger=require(_0xbe70('0x6'))(_0xbe70('0x7'));var config=require(_0xbe70('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xbe70('0x9')][_0xbe70('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x483833,_0xee182e,_0x31c580){return new BPromise(function(_0x5a0def,_0x5c3b80){return client[_0xbe70('0xb')](_0x483833,_0x31c580)[_0xbe70('0xc')](function(_0xe3cf23){logger[_0xbe70('0xd')](_0xbe70('0xe'),_0xee182e,_0xbe70('0xf'));logger[_0xbe70('0x10')](_0xbe70('0x11'),_0xee182e,_0xbe70('0xf'),JSON[_0xbe70('0x12')](_0xe3cf23));if(_0xe3cf23[_0xbe70('0x13')]){if(_0xe3cf23['error'][_0xbe70('0x14')]===0x1f4){logger[_0xbe70('0x13')](_0xbe70('0xe'),_0xee182e,_0xe3cf23[_0xbe70('0x13')][_0xbe70('0x15')]);return _0x5c3b80(_0xe3cf23['error'][_0xbe70('0x15')]);}logger[_0xbe70('0x13')](_0xbe70('0xe'),_0xee182e,_0xe3cf23[_0xbe70('0x13')][_0xbe70('0x15')]);return _0x5a0def(_0xe3cf23[_0xbe70('0x13')][_0xbe70('0x15')]);}else{logger[_0xbe70('0xd')](_0xbe70('0xe'),_0xee182e,_0xbe70('0xf'));_0x5a0def(_0xe3cf23[_0xbe70('0x16')][_0xbe70('0x15')]);}})[_0xbe70('0x17')](function(_0xb989cc){logger[_0xbe70('0x13')]('Schedule,\x20%s,\x20%s',_0xee182e,_0xb989cc);_0x5c3b80(_0xb989cc);});});}
\ No newline at end of file
+var _0x69d4=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','Schedule,\x20%s,\x20%s','message','catch','lodash','util','bluebird','randomstring','ioredis'];(function(_0xca1a30,_0x34b576){var _0x29a358=function(_0x2009dc){while(--_0x2009dc){_0xca1a30['push'](_0xca1a30['shift']());}};_0x29a358(++_0x34b576);}(_0x69d4,0x17b));var _0x469d=function(_0x5e8eae,_0x4f81e0){_0x5e8eae=_0x5e8eae-0x0;var _0xdd09cd=_0x69d4[_0x5e8eae];return _0xdd09cd;};'use strict';var _=require(_0x469d('0x0'));var util=require(_0x469d('0x1'));var moment=require('moment');var BPromise=require(_0x469d('0x2'));var rs=require(_0x469d('0x3'));var fs=require('fs');var Redis=require(_0x469d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x469d('0x5'));var logger=require(_0x469d('0x6'))(_0x469d('0x7'));var config=require(_0x469d('0x8'));var jayson=require(_0x469d('0x9'));var client=jayson[_0x469d('0xa')][_0x469d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xc4d2b2,_0x40dbae,_0x2b397a){return new BPromise(function(_0x6c321d,_0x5ed666){return client[_0x469d('0xc')](_0xc4d2b2,_0x2b397a)[_0x469d('0xd')](function(_0x2621aa){logger[_0x469d('0xe')]('Schedule,\x20%s,\x20%s',_0x40dbae,_0x469d('0xf'));logger[_0x469d('0x10')](_0x469d('0x11'),_0x40dbae,_0x469d('0xf'),JSON[_0x469d('0x12')](_0x2621aa));if(_0x2621aa[_0x469d('0x13')]){if(_0x2621aa[_0x469d('0x13')][_0x469d('0x14')]===0x1f4){logger[_0x469d('0x13')](_0x469d('0x15'),_0x40dbae,_0x2621aa[_0x469d('0x13')][_0x469d('0x16')]);return _0x5ed666(_0x2621aa[_0x469d('0x13')]['message']);}logger[_0x469d('0x13')]('Schedule,\x20%s,\x20%s',_0x40dbae,_0x2621aa[_0x469d('0x13')][_0x469d('0x16')]);return _0x6c321d(_0x2621aa['error'][_0x469d('0x16')]);}else{logger[_0x469d('0xe')](_0x469d('0x15'),_0x40dbae,'request\x20sent');_0x6c321d(_0x2621aa['result'][_0x469d('0x16')]);}})[_0x469d('0x17')](function(_0x5d80c5){logger[_0x469d('0x13')](_0x469d('0x15'),_0x40dbae,_0x5d80c5);_0x5ed666(_0x5d80c5);});});}
\ No newline at end of file
index 212dea6..36a8018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cd8=['post','put','update','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/describe','describe','show','/:id/download'];(function(_0x210467,_0x4970f7){var _0x32e77b=function(_0x11358c){while(--_0x11358c){_0x210467['push'](_0x210467['shift']());}};_0x32e77b(++_0x4970f7);}(_0x8cd8,0x15a));var _0x88cd=function(_0x352c9e,_0x1c45db){_0x352c9e=_0x352c9e-0x0;var _0x280ab5=_0x8cd8[_0x352c9e];return _0x280ab5;};'use strict';var multer=require(_0x88cd('0x0'));var util=require(_0x88cd('0x1'));var path=require(_0x88cd('0x2'));var timeout=require(_0x88cd('0x3'));var express=require(_0x88cd('0x4'));var router=express['Router']();var fs_extra=require(_0x88cd('0x5'));var auth=require(_0x88cd('0x6'));var interaction=require(_0x88cd('0x7'));var config=require('../../config/environment');var controller=require('./screenRecording.controller');router['get']('/',auth[_0x88cd('0x8')](),controller[_0x88cd('0x9')]);router[_0x88cd('0xa')](_0x88cd('0xb'),auth[_0x88cd('0x8')](),controller[_0x88cd('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x88cd('0xd')]);router['get'](_0x88cd('0xe'),auth['isAuthenticated'](),controller['download']);router[_0x88cd('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x88cd('0x10')]('/:id',auth[_0x88cd('0x8')](),controller[_0x88cd('0x11')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x88cd('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xdb7e=['get','isAuthenticated','/describe','describe','download','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./screenRecording.controller'];(function(_0x25bcc3,_0xaf7fd3){var _0x18a543=function(_0x3e0bc6){while(--_0x3e0bc6){_0x25bcc3['push'](_0x25bcc3['shift']());}};_0x18a543(++_0xaf7fd3);}(_0xdb7e,0x10a));var _0xedb7=function(_0x3b2f61,_0x18856b){_0x3b2f61=_0x3b2f61-0x0;var _0xec40dc=_0xdb7e[_0x3b2f61];return _0xec40dc;};'use strict';var multer=require(_0xedb7('0x0'));var util=require(_0xedb7('0x1'));var path=require(_0xedb7('0x2'));var timeout=require(_0xedb7('0x3'));var express=require(_0xedb7('0x4'));var router=express[_0xedb7('0x5')]();var fs_extra=require(_0xedb7('0x6'));var auth=require(_0xedb7('0x7'));var interaction=require(_0xedb7('0x8'));var config=require('../../config/environment');var controller=require(_0xedb7('0x9'));router[_0xedb7('0xa')]('/',auth[_0xedb7('0xb')](),controller['index']);router[_0xedb7('0xa')](_0xedb7('0xc'),auth['isAuthenticated'](),controller[_0xedb7('0xd')]);router[_0xedb7('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xedb7('0xa')]('/:id/download',auth[_0xedb7('0xb')](),controller[_0xedb7('0xe')]);router[_0xedb7('0xf')]('/',auth['isAuthenticated'](),controller[_0xedb7('0x10')]);router[_0xedb7('0x11')](_0xedb7('0x12'),auth[_0xedb7('0xb')](),controller[_0xedb7('0x13')]);router[_0xedb7('0x14')](_0xedb7('0x12'),auth[_0xedb7('0xb')](),controller[_0xedb7('0x15')]);module[_0xedb7('0x16')]=router;
\ No newline at end of file
index f2c32a7..9f44bdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88c7=['MM-DD-YYYY\x20HH:mm','createdAt','updatedAt','sequelize','../../config/environment','exports','value','extname','STRING','setDataValue','INTEGER','startedAt','subtract','duration','DATE','getDataValue','format','toString'];(function(_0x5062d2,_0x4a2447){var _0x5c4203=function(_0x2d69f5){while(--_0x2d69f5){_0x5062d2['push'](_0x5062d2['shift']());}};_0x5c4203(++_0x4a2447);}(_0x88c7,0x6f));var _0x788c=function(_0x310cd4,_0x477490){_0x310cd4=_0x310cd4-0x0;var _0x51b679=_0x88c7[_0x310cd4];return _0x51b679;};'use strict';var Sequelize=require(_0x788c('0x0'));var moment=require('moment');var path=require('path');var config=require(_0x788c('0x1'));module[_0x788c('0x2')]={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue'](_0x788c('0x3'))?path[_0x788c('0x4')](this['getDataValue'](_0x788c('0x3'))):undefined;}},'interactionid':{'type':Sequelize[_0x788c('0x5')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0x788c('0x5')],'set':function(_0x2ed470){var _0x54808d=_0x2ed470['replace'](/\\/g,'/');this[_0x788c('0x6')](_0x788c('0x3'),_0x54808d);}},'rating':{'type':Sequelize[_0x788c('0x7')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x788c('0x7')],'set':function(_0x43f746){this['setDataValue'](_0x788c('0x8'),moment()[_0x788c('0x9')](_0x43f746,'ms'));this[_0x788c('0x6')]('closedAt',moment());this[_0x788c('0x6')](_0x788c('0xa'),_0x43f746);}},'startedAt':{'type':Sequelize[_0x788c('0xb')],'get':function(){return moment(this[_0x788c('0xc')](_0x788c('0x8')))[_0x788c('0xd')]('MM-DD-YYYY\x20HH:mm')[_0x788c('0xe')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x788c('0xc')]('closedAt'))[_0x788c('0xd')](_0x788c('0xf'))[_0x788c('0xe')]();}},'createdAt':{'type':Sequelize[_0x788c('0xb')],'get':function(){return moment(this[_0x788c('0xc')](_0x788c('0x10')))[_0x788c('0xd')](_0x788c('0xf'))[_0x788c('0xe')]();}},'updatedAt':{'type':Sequelize[_0x788c('0xb')],'get':function(){return moment(this[_0x788c('0xc')](_0x788c('0x11')))[_0x788c('0xd')]('MM-DD-YYYY\x20HH:mm')[_0x788c('0xe')]();}}};
\ No newline at end of file
+var _0x13b6=['setDataValue','INTEGER','startedAt','subtract','DATE','format','MM-DD-YYYY\x20HH:mm','toString','closedAt','createdAt','updatedAt','sequelize','path','../../config/environment','exports','VIRTUAL','value','extname','getDataValue','STRING'];(function(_0x673722,_0x275d7e){var _0x21249c=function(_0x25b4e7){while(--_0x25b4e7){_0x673722['push'](_0x673722['shift']());}};_0x21249c(++_0x275d7e);}(_0x13b6,0x97));var _0x613b=function(_0x10d342,_0x7361c4){_0x10d342=_0x10d342-0x0;var _0x4e4be9=_0x13b6[_0x10d342];return _0x4e4be9;};'use strict';var Sequelize=require(_0x613b('0x0'));var moment=require('moment');var path=require(_0x613b('0x1'));var config=require(_0x613b('0x2'));module[_0x613b('0x3')]={'format':{'type':Sequelize[_0x613b('0x4')],'get':function(){return this['getDataValue'](_0x613b('0x5'))?path[_0x613b('0x6')](this[_0x613b('0x7')]('value')):undefined;}},'interactionid':{'type':Sequelize[_0x613b('0x8')]},'channel':{'type':Sequelize[_0x613b('0x8')]},'value':{'type':Sequelize[_0x613b('0x8')],'set':function(_0x593a18){var _0x31a96f=_0x593a18['replace'](/\\/g,'/');this[_0x613b('0x9')]('value',_0x31a96f);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x613b('0xa')],'set':function(_0x37dbc7){this[_0x613b('0x9')](_0x613b('0xb'),moment()[_0x613b('0xc')](_0x37dbc7,'ms'));this['setDataValue']('closedAt',moment());this[_0x613b('0x9')]('duration',_0x37dbc7);}},'startedAt':{'type':Sequelize[_0x613b('0xd')],'get':function(){return moment(this['getDataValue']('startedAt'))[_0x613b('0xe')](_0x613b('0xf'))[_0x613b('0x10')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x613b('0x7')](_0x613b('0x11')))[_0x613b('0xe')](_0x613b('0xf'))[_0x613b('0x10')]();}},'createdAt':{'type':Sequelize[_0x613b('0xd')],'get':function(){return moment(this[_0x613b('0x7')](_0x613b('0x12')))[_0x613b('0xe')](_0x613b('0xf'))['toString']();}},'updatedAt':{'type':Sequelize[_0x613b('0xd')],'get':function(){return moment(this[_0x613b('0x7')](_0x613b('0x13')))['format']('MM-DD-YYYY\x20HH:mm')[_0x613b('0x10')]();}}};
\ No newline at end of file
index b5c8d13..d5d3015 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c4e=['findAll','rows','catch','params','keys','find','create','body','duration','createdAt','closedAt','describe','download','../../components/encryptor','uniqueid','value','join','root','server/files/screen_recordings','%s.cypher','existsSync','secrets','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','send','Not\x20found','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','destroy','eml-format','zip-dir','fast-json-patch','request-promise','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','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','sendStatus','name','index','map','ScreenRecording','rawAttributes','type','key','model','differenceBy','format','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include'];(function(_0x5fa520,_0xaf0e7d){var _0x1bf6c4=function(_0x2a7440){while(--_0x2a7440){_0x5fa520['push'](_0x5fa520['shift']());}};_0x1bf6c4(++_0xaf0e7d);}(_0x4c4e,0x152));var _0xe4c4=function(_0x44e099,_0x4a3d73){_0x44e099=_0x44e099-0x0;var _0x54e137=_0x4c4e[_0x44e099];return _0x54e137;};'use strict';var emlformat=require(_0xe4c4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe4c4('0x1'));var jsonpatch=require(_0xe4c4('0x2'));var rp=require(_0xe4c4('0x3'));var moment=require('moment');var BPromise=require(_0xe4c4('0x4'));var Mustache=require(_0xe4c4('0x5'));var util=require(_0xe4c4('0x6'));var path=require('path');var sox=require(_0xe4c4('0x7'));var csv=require('to-csv');var ejs=require(_0xe4c4('0x8'));var fs=require('fs');var fs_extra=require(_0xe4c4('0x9'));var _=require(_0xe4c4('0xa'));var squel=require(_0xe4c4('0xb'));var crypto=require(_0xe4c4('0xc'));var jsforce=require(_0xe4c4('0xd'));var deskjs=require(_0xe4c4('0xe'));var toCsv=require(_0xe4c4('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe4c4('0x10'));var authService=require(_0xe4c4('0x11'));var qs=require(_0xe4c4('0x12'));var as=require(_0xe4c4('0x13'));var hardwareService=require(_0xe4c4('0x14'));var logger=require(_0xe4c4('0x15'))('api');var utils=require(_0xe4c4('0x16'));var config=require(_0xe4c4('0x17'));var licenseUtil=require(_0xe4c4('0x18'));var db=require(_0xe4c4('0x19'))['db'];function respondWithStatusCode(_0x50bfab,_0x262083){_0x262083=_0x262083||0xcc;return function(_0x115802){if(_0x115802){return _0x50bfab['sendStatus'](_0x262083);}return _0x50bfab[_0xe4c4('0x1a')](_0x262083)[_0xe4c4('0x1b')]();};}function respondWithResult(_0x5aa89b,_0x42ce9e){_0x42ce9e=_0x42ce9e||0xc8;return function(_0x29766a){if(_0x29766a){return _0x5aa89b['status'](_0x42ce9e)[_0xe4c4('0x1c')](_0x29766a);}};}function respondWithFilteredResult(_0x465c9b,_0x26ea05){return function(_0x40a36e){if(_0x40a36e){var _0x19e59b=typeof _0x26ea05[_0xe4c4('0x1d')]===_0xe4c4('0x1e')&&typeof _0x26ea05[_0xe4c4('0x1f')]===_0xe4c4('0x1e');var _0x36b10c=_0x40a36e[_0xe4c4('0x20')];var _0x42242c=_0x19e59b?0x0:_0x26ea05[_0xe4c4('0x1d')];var _0x43a9ce=_0x19e59b?_0x40a36e[_0xe4c4('0x20')]:_0x26ea05['offset']+_0x26ea05[_0xe4c4('0x1f')];var _0x24f946;if(_0x43a9ce>=_0x36b10c){_0x43a9ce=_0x36b10c;_0x24f946=0xc8;}else{_0x24f946=0xce;}_0x465c9b[_0xe4c4('0x1a')](_0x24f946);return _0x465c9b[_0xe4c4('0x21')]('Content-Range',_0x42242c+'-'+_0x43a9ce+'/'+_0x36b10c)[_0xe4c4('0x1c')](_0x40a36e);}return null;};}function patchUpdates(_0x1cad5d){return function(_0x1727eb){try{jsonpatch[_0xe4c4('0x22')](_0x1727eb,_0x1cad5d,!![]);}catch(_0x2c5aea){return BPromise[_0xe4c4('0x23')](_0x2c5aea);}return _0x1727eb[_0xe4c4('0x24')]();};}function saveUpdates(_0x393c96,_0x21bbb1){return function(_0x1a7690){if(_0x1a7690){return _0x1a7690[_0xe4c4('0x25')](_0x393c96)[_0xe4c4('0x26')](function(_0x138ead){return _0x138ead;});}return null;};}function removeEntity(_0x1db719,_0x15873e){return function(_0x59498e){if(_0x59498e){return _0x59498e['destroy']()[_0xe4c4('0x26')](function(){_0x1db719['status'](0xcc)[_0xe4c4('0x1b')]();});}};}function handleEntityNotFound(_0x5374fd,_0x3adfcb){return function(_0x5efc4c){if(!_0x5efc4c){_0x5374fd[_0xe4c4('0x27')](0x194);}return _0x5efc4c;};}function handleError(_0x583393,_0xba53ef){_0xba53ef=_0xba53ef||0x1f4;return function(_0x4a0199){logger['error'](_0x4a0199['stack']);if(_0x4a0199['name']){delete _0x4a0199[_0xe4c4('0x28')];}_0x583393['status'](_0xba53ef)['send'](_0x4a0199);};}exports[_0xe4c4('0x29')]=function(_0x11deab,_0x4bb911){var _0x57ba43={},_0x7428ad={},_0x33de43={'count':0x0,'rows':[]};var _0x4aa6c1=_[_0xe4c4('0x2a')](db[_0xe4c4('0x2b')][_0xe4c4('0x2c')],function(_0x48060e){return{'name':_0x48060e['fieldName'],'type':_0x48060e[_0xe4c4('0x2d')][_0xe4c4('0x2e')]};});_0x7428ad[_0xe4c4('0x2f')]=_[_0xe4c4('0x30')](_['map'](_0x4aa6c1,'name'),[_0xe4c4('0x31')]);_0x7428ad[_0xe4c4('0x32')]=_['keys'](_0x11deab[_0xe4c4('0x32')]);_0x7428ad[_0xe4c4('0x33')]=_[_0xe4c4('0x34')](_0x7428ad['model'],_0x7428ad[_0xe4c4('0x32')]);_0x57ba43['attributes']=_[_0xe4c4('0x34')](_0x7428ad[_0xe4c4('0x2f')],qs[_0xe4c4('0x35')](_0x11deab[_0xe4c4('0x32')][_0xe4c4('0x35')]));_0x57ba43[_0xe4c4('0x36')]=_0x57ba43[_0xe4c4('0x36')][_0xe4c4('0x37')]?_0x57ba43[_0xe4c4('0x36')]:_0x7428ad[_0xe4c4('0x2f')];if(!_0x11deab[_0xe4c4('0x32')][_0xe4c4('0x38')]('nolimit')){_0x57ba43[_0xe4c4('0x1f')]=qs[_0xe4c4('0x1f')](_0x11deab[_0xe4c4('0x32')]['limit']);_0x57ba43[_0xe4c4('0x1d')]=qs[_0xe4c4('0x1d')](_0x11deab[_0xe4c4('0x32')]['offset']);}_0x57ba43[_0xe4c4('0x39')]=qs[_0xe4c4('0x3a')](_0x11deab[_0xe4c4('0x32')][_0xe4c4('0x3a')]);_0x57ba43[_0xe4c4('0x3b')]=qs[_0xe4c4('0x33')](_[_0xe4c4('0x3c')](_0x11deab[_0xe4c4('0x32')],_0x7428ad[_0xe4c4('0x33')]),_0x4aa6c1);if(_0x11deab[_0xe4c4('0x32')]['filter']){_0x57ba43[_0xe4c4('0x3b')]=_[_0xe4c4('0x3d')](_0x57ba43[_0xe4c4('0x3b')],{'$or':_[_0xe4c4('0x2a')](_0x4aa6c1,function(_0x4c5551){if(_0x4c5551[_0xe4c4('0x2d')]!==_0xe4c4('0x3e')){var _0x4e6bd9={};_0x4e6bd9[_0x4c5551[_0xe4c4('0x28')]]={'$like':'%'+_0x11deab[_0xe4c4('0x32')]['filter']+'%'};return _0x4e6bd9;}})});}_0x57ba43=_[_0xe4c4('0x3d')]({},_0x57ba43,_0x11deab[_0xe4c4('0x3f')]);var _0x127bcd={'where':_0x57ba43[_0xe4c4('0x3b')]};return db[_0xe4c4('0x2b')][_0xe4c4('0x20')](_0x127bcd)[_0xe4c4('0x26')](function(_0x43201e){_0x33de43[_0xe4c4('0x20')]=_0x43201e;if(_0x11deab[_0xe4c4('0x32')][_0xe4c4('0x40')]){_0x57ba43[_0xe4c4('0x41')]=[{'all':!![]}];}return db['ScreenRecording'][_0xe4c4('0x42')](_0x57ba43);})[_0xe4c4('0x26')](function(_0x2b306d){_0x33de43[_0xe4c4('0x43')]=_0x2b306d;return _0x33de43;})[_0xe4c4('0x26')](respondWithFilteredResult(_0x4bb911,_0x57ba43))[_0xe4c4('0x44')](handleError(_0x4bb911,null));};exports['show']=function(_0x312a49,_0x526bef){var _0xca07dc={'raw':![],'where':{'id':_0x312a49[_0xe4c4('0x45')]['id']}},_0x3c067a={};_0x3c067a[_0xe4c4('0x2f')]=_[_0xe4c4('0x46')](db['ScreenRecording']['rawAttributes']);_0x3c067a[_0xe4c4('0x32')]=_[_0xe4c4('0x46')](_0x312a49[_0xe4c4('0x32')]);_0x3c067a['filters']=_[_0xe4c4('0x34')](_0x3c067a[_0xe4c4('0x2f')],_0x3c067a[_0xe4c4('0x32')]);_0xca07dc[_0xe4c4('0x36')]=_['intersection'](_0x3c067a[_0xe4c4('0x2f')],qs[_0xe4c4('0x35')](_0x312a49[_0xe4c4('0x32')][_0xe4c4('0x35')]));_0xca07dc[_0xe4c4('0x36')]=_0xca07dc[_0xe4c4('0x36')][_0xe4c4('0x37')]?_0xca07dc[_0xe4c4('0x36')]:_0x3c067a[_0xe4c4('0x2f')];if(_0x312a49['query'][_0xe4c4('0x40')]){_0xca07dc['include']=[{'all':!![]}];}_0xca07dc=_[_0xe4c4('0x3d')]({},_0xca07dc,_0x312a49[_0xe4c4('0x3f')]);return db[_0xe4c4('0x2b')][_0xe4c4('0x47')](_0xca07dc)[_0xe4c4('0x26')](handleEntityNotFound(_0x526bef,null))[_0xe4c4('0x26')](respondWithResult(_0x526bef,null))[_0xe4c4('0x44')](handleError(_0x526bef,null));};exports[_0xe4c4('0x48')]=function(_0x36f8ad,_0x18fb82){return db[_0xe4c4('0x2b')][_0xe4c4('0x48')](_0x36f8ad[_0xe4c4('0x49')],{})[_0xe4c4('0x26')](respondWithResult(_0x18fb82,0xc9))['catch'](handleError(_0x18fb82,null));};exports['update']=function(_0xe0e351,_0x198961){if(_0xe0e351['body']['id']){delete _0xe0e351[_0xe4c4('0x49')]['id'];}delete _0xe0e351[_0xe4c4('0x49')][_0xe4c4('0x4a')];delete _0xe0e351[_0xe4c4('0x49')][_0xe4c4('0x4b')];delete _0xe0e351['body'][_0xe4c4('0x4c')];delete _0xe0e351[_0xe4c4('0x49')]['value'];return db[_0xe4c4('0x2b')][_0xe4c4('0x47')]({'where':{'id':_0xe0e351['params']['id']}})[_0xe4c4('0x26')](handleEntityNotFound(_0x198961,null))['then'](saveUpdates(_0xe0e351[_0xe4c4('0x49')],null))[_0xe4c4('0x26')](respondWithResult(_0x198961,null))[_0xe4c4('0x44')](handleError(_0x198961,null));};exports[_0xe4c4('0x4d')]=function(_0x12eaed,_0x525534){return db[_0xe4c4('0x2b')][_0xe4c4('0x4d')]()[_0xe4c4('0x26')](respondWithResult(_0x525534,null))[_0xe4c4('0x44')](handleError(_0x525534,null));};exports[_0xe4c4('0x4e')]=function(_0x32a50e,_0x3ddcbe,_0x3aa205){var _0x1a96ba=require(_0xe4c4('0x4f'));var _0x1fe354=![];var _0x1940e3={};if(_0x32a50e[_0xe4c4('0x32')][_0xe4c4('0x2d')]&&_0x32a50e[_0xe4c4('0x32')][_0xe4c4('0x2d')]==='uniqueid'){_0x1940e3[_0xe4c4('0x50')]=_0x32a50e[_0xe4c4('0x45')]['id'];}else{_0x1940e3['id']=_0x32a50e[_0xe4c4('0x45')]['id'];}return db['ScreenRecording'][_0xe4c4('0x47')]({'where':_0x1940e3,'attributes':['id',_0xe4c4('0x51')],'raw':!![]})[_0xe4c4('0x26')](handleEntityNotFound(_0x3ddcbe,null))['then'](function(_0x45f959){if(_0x45f959){var _0x485c50=path[_0xe4c4('0x52')](config[_0xe4c4('0x53')],_0xe4c4('0x54'),_0x45f959['value']);var _0x479361=util[_0xe4c4('0x31')](_0xe4c4('0x55'),_0x485c50);if(fs[_0xe4c4('0x56')](_0x479361)){_0x1fe354=!![];return _0x1a96ba['decryptFile'](_0x479361,_0x485c50,config[_0xe4c4('0x57')]['recording'])['then'](function(){return _0x45f959;});}return _0x45f959;}})['then'](function(_0x4e08ec){if(_0x4e08ec){var _0x1ca931=path[_0xe4c4('0x52')](config[_0xe4c4('0x53')],_0xe4c4('0x54'),_0x4e08ec[_0xe4c4('0x51')]);if(!fs[_0xe4c4('0x56')](_0x1ca931)){throw new db['Sequelize'][(_0xe4c4('0x58'))](_0xe4c4('0x59'));}if(_0x4e08ec[_0xe4c4('0x5a')]){return _0x3ddcbe[_0xe4c4('0x4e')](_0x1ca931,_0x4e08ec[_0xe4c4('0x5a')]+path[_0xe4c4('0x5b')](_0x1ca931),function(){if(_0x1fe354){fs['unlink'](_0x1ca931);}});}else{return _0x3ddcbe['download'](_0x1ca931,function(_0x27599b){if(_0x1fe354){fs[_0xe4c4('0x5c')](_0x1ca931);}});}}})[_0xe4c4('0x44')](function(_0x3c8e44){if(_0x3c8e44[_0xe4c4('0x5d')]===_0xe4c4('0x59')){_0x3ddcbe[_0xe4c4('0x1a')](0x194)[_0xe4c4('0x5e')](_0xe4c4('0x5f'));}else{return handleError(_0x3ddcbe,null);}});};exports['destroy']=function(_0x59f033,_0x5a4138){return db['ScreenRecording'][_0xe4c4('0x47')]({'where':{'id':_0x59f033[_0xe4c4('0x45')]['id']}})[_0xe4c4('0x26')](function(_0x58f2dd){if(_[_0xe4c4('0x60')](_0x58f2dd)){throw new ReferenceError('Entity\x20not\x20found');}return _0x58f2dd;})[_0xe4c4('0x26')](function(_0x56ead3){var _0x5d6c0a=path[_0xe4c4('0x52')](config[_0xe4c4('0x53')],_0xe4c4('0x54'),_0x56ead3['value']);logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x5d6c0a);if(!_[_0xe4c4('0x60')](_0x56ead3[_0xe4c4('0x51')])&&fs['existsSync'](_0x5d6c0a)){logger[_0xe4c4('0x61')](_0xe4c4('0x62')+_0x5d6c0a+_0xe4c4('0x63'));fs['unlinkSync'](_0x5d6c0a);}_0x5d6c0a=_0x5d6c0a+'.cypher';if(!_[_0xe4c4('0x60')](_0x56ead3[_0xe4c4('0x51')])&&fs[_0xe4c4('0x56')](_0x5d6c0a)){logger[_0xe4c4('0x61')](_0xe4c4('0x62')+_0x5d6c0a+_0xe4c4('0x63'));fs['unlinkSync'](_0x5d6c0a);}return _0x56ead3;})[_0xe4c4('0x26')](function(_0x1bddd5){if(!_0x1bddd5)throw new InternalError();return _0x1bddd5[_0xe4c4('0x64')]();})['then'](function(){_0x5a4138[_0xe4c4('0x1a')](0xcc)[_0xe4c4('0x1b')]();})[_0xe4c4('0x44')](handleError(_0x5a4138,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(_0xe94404,_0x13e6e7){var _0x1c0955=function(_0x5d58ff){while(--_0x5d58ff){_0xe94404['push'](_0xe94404['shift']());}};_0x1c0955(++_0x13e6e7);}(_0x038b,0x114));var _0xb038=function(_0xe3f4a8,_0x56a67){_0xe3f4a8=_0xe3f4a8-0x0;var _0x2d28f1=_0x038b[_0xe3f4a8];return _0x2d28f1;};'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 ca5c5bf..c031dd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8865=['moment','bluebird','request-promise','path','rimraf','./screenRecording.attributes','exports','define','ScreenRecording','screen_recordings','interactionid','lodash','util','api'];(function(_0x467899,_0x38addb){var _0x559f32=function(_0x95ad83){while(--_0x95ad83){_0x467899['push'](_0x467899['shift']());}};_0x559f32(++_0x38addb);}(_0x8865,0x177));var _0x5886=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x8865[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x5886('0x0'));var util=require(_0x5886('0x1'));var logger=require('../../config/logger')(_0x5886('0x2'));var moment=require(_0x5886('0x3'));var BPromise=require(_0x5886('0x4'));var rp=require(_0x5886('0x5'));var fs=require('fs');var path=require(_0x5886('0x6'));var rimraf=require(_0x5886('0x7'));var config=require('../../config/environment');var attributes=require(_0x5886('0x8'));module[_0x5886('0x9')]=function(_0x3d7166,_0x4637f5){return _0x3d7166[_0x5886('0xa')](_0x5886('0xb'),attributes,{'tableName':_0x5886('0xc'),'paranoid':![],'indexes':[{'name':_0x5886('0xd'),'fields':[_0x5886('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x55fd=['../../config/logger','api','moment','path','rimraf','./screenRecording.attributes','screen_recordings','util'];(function(_0x4a32e3,_0x2bf09b){var _0x1f7317=function(_0x252d23){while(--_0x252d23){_0x4a32e3['push'](_0x4a32e3['shift']());}};_0x1f7317(++_0x2bf09b);}(_0x55fd,0x1af));var _0xd55f=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0x55fd[_0xbb091];return _0x467a04;};'use strict';var _=require('lodash');var util=require(_0xd55f('0x0'));var logger=require(_0xd55f('0x1'))(_0xd55f('0x2'));var moment=require(_0xd55f('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd55f('0x4'));var rimraf=require(_0xd55f('0x5'));var config=require('../../config/environment');var attributes=require(_0xd55f('0x6'));module['exports']=function(_0x223a59,_0x42bbf8){return _0x223a59['define']('ScreenRecording',attributes,{'tableName':_0xd55f('0x7'),'paranoid':![],'indexes':[{'name':'interactionid','fields':['interactionid']}],'timestamps':!![]});};
\ No newline at end of file
index 0e00d9f..d0e9d58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf50=['info','ScreenRecording,\x20%s,\x20%s','ScreenRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x12458d,_0x180b1f){var _0x62618b=function(_0x189119){while(--_0x189119){_0x12458d['push'](_0x12458d['shift']());}};_0x62618b(++_0x180b1f);}(_0xdf50,0x128));var _0x0df5=function(_0x14d233,_0x4289f7){_0x14d233=_0x14d233-0x0;var _0x2d4c76=_0xdf50[_0x14d233];return _0x2d4c76;};'use strict';var _=require(_0x0df5('0x0'));var util=require(_0x0df5('0x1'));var moment=require(_0x0df5('0x2'));var BPromise=require(_0x0df5('0x3'));var rs=require(_0x0df5('0x4'));var fs=require('fs');var Redis=require(_0x0df5('0x5'));var db=require(_0x0df5('0x6'))['db'];var utils=require(_0x0df5('0x7'));var logger=require(_0x0df5('0x8'))(_0x0df5('0x9'));var config=require(_0x0df5('0xa'));var jayson=require(_0x0df5('0xb'));var client=jayson[_0x0df5('0xc')][_0x0df5('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x13672e,_0xeec4c6,_0x78ff3b){return new BPromise(function(_0x3126c1,_0x3bd95a){return client[_0x0df5('0xe')](_0x13672e,_0x78ff3b)[_0x0df5('0xf')](function(_0x18d74e){logger[_0x0df5('0x10')](_0x0df5('0x11'),_0xeec4c6,'request\x20sent');logger['debug'](_0x0df5('0x12'),_0xeec4c6,_0x0df5('0x13'),JSON[_0x0df5('0x14')](_0x18d74e));if(_0x18d74e[_0x0df5('0x15')]){if(_0x18d74e['error'][_0x0df5('0x16')]===0x1f4){logger[_0x0df5('0x15')](_0x0df5('0x11'),_0xeec4c6,_0x18d74e[_0x0df5('0x15')][_0x0df5('0x17')]);return _0x3bd95a(_0x18d74e[_0x0df5('0x15')][_0x0df5('0x17')]);}logger[_0x0df5('0x15')](_0x0df5('0x11'),_0xeec4c6,_0x18d74e['error'][_0x0df5('0x17')]);return _0x3126c1(_0x18d74e['error'][_0x0df5('0x17')]);}else{logger[_0x0df5('0x10')](_0x0df5('0x11'),_0xeec4c6,_0x0df5('0x13'));_0x3126c1(_0x18d74e[_0x0df5('0x18')][_0x0df5('0x17')]);}})[_0x0df5('0x19')](function(_0x268280){logger[_0x0df5('0x15')](_0x0df5('0x11'),_0xeec4c6,_0x268280);_0x3bd95a(_0x268280);});});}
\ No newline at end of file
+var _0x7a11=['randomstring','../../mysqldb','../../config/utils','../../config/logger','../../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','catch','lodash','util','moment','bluebird'];(function(_0x45351d,_0x1c32e3){var _0x4425c3=function(_0x24c4fa){while(--_0x24c4fa){_0x45351d['push'](_0x45351d['shift']());}};_0x4425c3(++_0x1c32e3);}(_0x7a11,0x6a));var _0x17a1=function(_0x421a59,_0x48e6bd){_0x421a59=_0x421a59-0x0;var _0x3d0634=_0x7a11[_0x421a59];return _0x3d0634;};'use strict';var _=require(_0x17a1('0x0'));var util=require(_0x17a1('0x1'));var moment=require(_0x17a1('0x2'));var BPromise=require(_0x17a1('0x3'));var rs=require(_0x17a1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x17a1('0x5'))['db'];var utils=require(_0x17a1('0x6'));var logger=require(_0x17a1('0x7'))('rpc');var config=require(_0x17a1('0x8'));var jayson=require(_0x17a1('0x9'));var client=jayson[_0x17a1('0xa')][_0x17a1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x51ae2d,_0x442826,_0x288c93){return new BPromise(function(_0x427959,_0x287d33){return client[_0x17a1('0xc')](_0x51ae2d,_0x288c93)[_0x17a1('0xd')](function(_0x58d6ad){logger['info'](_0x17a1('0xe'),_0x442826,_0x17a1('0xf'));logger[_0x17a1('0x10')](_0x17a1('0x11'),_0x442826,_0x17a1('0xf'),JSON[_0x17a1('0x12')](_0x58d6ad));if(_0x58d6ad['error']){if(_0x58d6ad[_0x17a1('0x13')]['code']===0x1f4){logger[_0x17a1('0x13')](_0x17a1('0xe'),_0x442826,_0x58d6ad['error'][_0x17a1('0x14')]);return _0x287d33(_0x58d6ad['error'][_0x17a1('0x14')]);}logger['error'](_0x17a1('0xe'),_0x442826,_0x58d6ad[_0x17a1('0x13')][_0x17a1('0x14')]);return _0x427959(_0x58d6ad[_0x17a1('0x13')][_0x17a1('0x14')]);}else{logger['info'](_0x17a1('0xe'),_0x442826,_0x17a1('0xf'));_0x427959(_0x58d6ad['result'][_0x17a1('0x14')]);}})[_0x17a1('0x15')](function(_0x1e7e53){logger[_0x17a1('0x13')](_0x17a1('0xe'),_0x442826,_0x1e7e53);_0x287d33(_0x1e7e53);});});}
\ No newline at end of file
index 542b02b..dca2aba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd22=['multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','isAuthenticated','index','/now','getDate','get','/:id','show','/:id/logo','gdpr','/:id/preferred','getPreferred','getFavicon','diskStorage','join','root','server/files/images/logos/','format','logo','extname','originalname','post','single','addLogo','%s%s','logologin','/:id/logo_login','file','addLogoLogin','preferred','addPreferred','favicon','/:id/favicon','exports'];(function(_0x5d8de7,_0x3b8db4){var _0x481b11=function(_0x3d9674){while(--_0x3d9674){_0x5d8de7['push'](_0x5d8de7['shift']());}};_0x481b11(++_0x3b8db4);}(_0xfd22,0x1ce));var _0x2fd2=function(_0x48e210,_0x477649){_0x48e210=_0x48e210-0x0;var _0x19ded6=_0xfd22[_0x48e210];return _0x19ded6;};'use strict';var multer=require(_0x2fd2('0x0'));var util=require(_0x2fd2('0x1'));var path=require('path');var timeout=require(_0x2fd2('0x2'));var express=require(_0x2fd2('0x3'));var router=express[_0x2fd2('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2fd2('0x5'));var interaction=require(_0x2fd2('0x6'));var config=require(_0x2fd2('0x7'));var controller=require(_0x2fd2('0x8'));router['get']('/',auth[_0x2fd2('0x9')](),controller[_0x2fd2('0xa')]);router['get'](_0x2fd2('0xb'),controller[_0x2fd2('0xc')]);router[_0x2fd2('0xd')](_0x2fd2('0xe'),controller[_0x2fd2('0xf')]);router[_0x2fd2('0xd')](_0x2fd2('0x10'),controller['getLogo']);router[_0x2fd2('0xd')]('/:id/logo_login',controller['getLogoLogin']);router[_0x2fd2('0xd')]('/:id/gdpr',controller[_0x2fd2('0x11')]);router['get'](_0x2fd2('0x12'),controller[_0x2fd2('0x13')]);router[_0x2fd2('0xd')]('/:id/favicon',controller[_0x2fd2('0x14')]);var upload=multer({'storage':multer[_0x2fd2('0x15')]({'destination':function(_0x26c493,_0x13cae3,_0x2bcd5d){_0x2bcd5d(null,path[_0x2fd2('0x16')](config[_0x2fd2('0x17')],_0x2fd2('0x18')));},'filename':function(_0x13c51c,_0x35f618,_0x3c6635){_0x3c6635(null,util[_0x2fd2('0x19')]('%s%s',_0x2fd2('0x1a'),path[_0x2fd2('0x1b')](_0x35f618[_0x2fd2('0x1c')])));}})});router[_0x2fd2('0x1d')]('/:id/logo',upload[_0x2fd2('0x1e')]('file'),controller[_0x2fd2('0x1f')]);var upload=multer({'storage':multer[_0x2fd2('0x15')]({'destination':function(_0x4da4b9,_0xb644e6,_0x543eae){_0x543eae(null,path[_0x2fd2('0x16')](config[_0x2fd2('0x17')],_0x2fd2('0x18')));},'filename':function(_0x30e982,_0x5af647,_0x14cbb6){_0x14cbb6(null,util[_0x2fd2('0x19')](_0x2fd2('0x20'),_0x2fd2('0x21'),path['extname'](_0x5af647[_0x2fd2('0x1c')])));}})});router[_0x2fd2('0x1d')](_0x2fd2('0x22'),upload[_0x2fd2('0x1e')](_0x2fd2('0x23')),controller[_0x2fd2('0x24')]);var upload=multer({'storage':multer[_0x2fd2('0x15')]({'destination':function(_0x5b5e95,_0x5cb10b,_0x9230fc){_0x9230fc(null,path['join'](config[_0x2fd2('0x17')],'server/files/images/logos/'));},'filename':function(_0x324271,_0x5e1f40,_0x3d6625){_0x3d6625(null,util[_0x2fd2('0x19')](_0x2fd2('0x20'),_0x2fd2('0x25'),path[_0x2fd2('0x1b')](_0x5e1f40[_0x2fd2('0x1c')])));}})});router[_0x2fd2('0x1d')](_0x2fd2('0x12'),upload['single'](_0x2fd2('0x23')),controller[_0x2fd2('0x26')]);var upload=multer({'storage':multer[_0x2fd2('0x15')]({'destination':function(_0x3ce0b6,_0x2cac91,_0x5da2e3){_0x5da2e3(null,path[_0x2fd2('0x16')](config[_0x2fd2('0x17')],'server/files/images/logos/'));},'filename':function(_0x4cd9e1,_0x1b172e,_0x23b44f){_0x23b44f(null,util[_0x2fd2('0x19')](_0x2fd2('0x20'),_0x2fd2('0x27'),path[_0x2fd2('0x1b')](_0x1b172e[_0x2fd2('0x1c')])));}})});router[_0x2fd2('0x1d')](_0x2fd2('0x28'),upload[_0x2fd2('0x1e')](_0x2fd2('0x23')),controller['addFavicon']);router['put']('/:id',auth[_0x2fd2('0x9')](),controller['update']);module[_0x2fd2('0x29')]=router;
\ No newline at end of file
+var _0xe978=['/:id/logo','single','file','addLogo','format','logologin','originalname','addLogoLogin','post','addPreferred','update','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','/now','getDate','get','/:id','show','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','%s%s','extname'];(function(_0x464183,_0x1b5274){var _0x325318=function(_0x418ccd){while(--_0x418ccd){_0x464183['push'](_0x464183['shift']());}};_0x325318(++_0x1b5274);}(_0xe978,0x108));var _0x8e97=function(_0x352349,_0x3c710c){_0x352349=_0x352349-0x0;var _0x2930ba=_0xe978[_0x352349];return _0x2930ba;};'use strict';var multer=require(_0x8e97('0x0'));var util=require(_0x8e97('0x1'));var path=require(_0x8e97('0x2'));var timeout=require('connect-timeout');var express=require(_0x8e97('0x3'));var router=express[_0x8e97('0x4')]();var fs_extra=require(_0x8e97('0x5'));var auth=require(_0x8e97('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8e97('0x7'));var controller=require('./setting.controller');router['get']('/',auth[_0x8e97('0x8')](),controller[_0x8e97('0x9')]);router['get'](_0x8e97('0xa'),controller[_0x8e97('0xb')]);router[_0x8e97('0xc')](_0x8e97('0xd'),controller[_0x8e97('0xe')]);router[_0x8e97('0xc')]('/:id/logo',controller[_0x8e97('0xf')]);router[_0x8e97('0xc')](_0x8e97('0x10'),controller[_0x8e97('0x11')]);router['get'](_0x8e97('0x12'),controller[_0x8e97('0x13')]);router['get'](_0x8e97('0x14'),controller[_0x8e97('0x15')]);router[_0x8e97('0xc')](_0x8e97('0x16'),controller[_0x8e97('0x17')]);var upload=multer({'storage':multer[_0x8e97('0x18')]({'destination':function(_0x3c6e38,_0x1944e9,_0x148fc9){_0x148fc9(null,path[_0x8e97('0x19')](config[_0x8e97('0x1a')],_0x8e97('0x1b')));},'filename':function(_0x97daed,_0x3ffdd5,_0x10596d){_0x10596d(null,util['format'](_0x8e97('0x1c'),'logo',path[_0x8e97('0x1d')](_0x3ffdd5['originalname'])));}})});router['post'](_0x8e97('0x1e'),upload[_0x8e97('0x1f')](_0x8e97('0x20')),controller[_0x8e97('0x21')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x213037,_0x3f8dc7,_0xe50607){_0xe50607(null,path['join'](config[_0x8e97('0x1a')],_0x8e97('0x1b')));},'filename':function(_0x5645ec,_0x5183ef,_0xe80753){_0xe80753(null,util[_0x8e97('0x22')]('%s%s',_0x8e97('0x23'),path[_0x8e97('0x1d')](_0x5183ef[_0x8e97('0x24')])));}})});router['post'](_0x8e97('0x10'),upload['single'](_0x8e97('0x20')),controller[_0x8e97('0x25')]);var upload=multer({'storage':multer[_0x8e97('0x18')]({'destination':function(_0x4bbf6f,_0x37962d,_0x2f2120){_0x2f2120(null,path[_0x8e97('0x19')](config[_0x8e97('0x1a')],'server/files/images/logos/'));},'filename':function(_0x4391b3,_0x47649d,_0x2142b5){_0x2142b5(null,util[_0x8e97('0x22')](_0x8e97('0x1c'),'preferred',path[_0x8e97('0x1d')](_0x47649d[_0x8e97('0x24')])));}})});router[_0x8e97('0x26')](_0x8e97('0x14'),upload[_0x8e97('0x1f')](_0x8e97('0x20')),controller[_0x8e97('0x27')]);var upload=multer({'storage':multer[_0x8e97('0x18')]({'destination':function(_0x4835a8,_0x51ff05,_0x2844e2){_0x2844e2(null,path['join'](config[_0x8e97('0x1a')],_0x8e97('0x1b')));},'filename':function(_0x307512,_0x17ef10,_0x1a41c6){_0x1a41c6(null,util[_0x8e97('0x22')](_0x8e97('0x1c'),'favicon',path['extname'](_0x17ef10['originalname'])));}})});router[_0x8e97('0x26')]('/:id/favicon',upload['single']('file'),controller['addFavicon']);router['put'](_0x8e97('0xd'),auth[_0x8e97('0x8')](),controller[_0x8e97('0x28')]);module[_0x8e97('0x29')]=router;
\ No newline at end of file
index 6b54ba1..8666e49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['exports','INTEGER','min_internal','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','alternate','UNSIGNED'];(function(_0xeb1985,_0x32b90f){var _0x1f453c=function(_0x38040c){while(--_0x38040c){_0xeb1985['push'](_0xeb1985['shift']());}};_0x1f453c(++_0x32b90f);}(_0x1261,0x144));var _0x1126=function(_0x52bfa5,_0x42cf21){_0x52bfa5=_0x52bfa5-0x0;var _0x26f80b=_0x1261[_0x52bfa5];return _0x26f80b;};'use strict';var Sequelize=require('sequelize');module[_0x1126('0x0')]={'min_internal':{'type':Sequelize[_0x1126('0x1')](0xb),'unique':_0x1126('0x2'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x1126('0x1')](0xb),'unique':_0x1126('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x1126('0x1')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x1126('0x4')],'defaultValue':_0x1126('0x5')},'logo':{'type':Sequelize[_0x1126('0x4')]},'defaultLogo':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize['STRING']},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x1126('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x1126('0x4')]},'turnaddr':{'type':Sequelize[_0x1126('0x4')]},'turnusername':{'type':Sequelize[_0x1126('0x4')]},'turnpassword':{'type':Sequelize[_0x1126('0x4')]},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x1126('0x1')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x1126('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x1126('0x4')],'defaultValue':_0x1126('0x7')},'chatTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x1126('0x4')]},'defaultPreferred':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize['STRING']},'allowedLoginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x1126('0x4')]},'defaultFavicon':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize['INTEGER'],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x1126('0x1')]},'transcribeRegion':{'type':Sequelize[_0x1126('0x4')]},'sentiment':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x1126('0x1')]},'sentimentRegion':{'type':Sequelize[_0x1126('0x4')]},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize['STRING']},'googleSsoEnabled':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x1126('0x1')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x1126('0x1')](0x2)[_0x1126('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x1126('0x1')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7a54=['UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','alternate'];(function(_0x4ade94,_0x32bb1c){var _0x4b9faa=function(_0x24117e){while(--_0x24117e){_0x4ade94['push'](_0x4ade94['shift']());}};_0x4b9faa(++_0x32bb1c);}(_0x7a54,0x106));var _0x47a5=function(_0x7c37e9,_0x3f1b83){_0x7c37e9=_0x7c37e9-0x0;var _0x40cf20=_0x7a54[_0x7c37e9];return _0x40cf20;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'min_internal':{'type':Sequelize[_0x47a5('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x47a5('0x2')](0xb),'unique':_0x47a5('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x47a5('0x4')],'defaultValue':_0x47a5('0x5')},'logo':{'type':Sequelize[_0x47a5('0x4')]},'defaultLogo':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x47a5('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x47a5('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x47a5('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x47a5('0x4')],'defaultValue':_0x47a5('0x7')},'chatTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x47a5('0x4')]},'defaultPreferred':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x47a5('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x47a5('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x47a5('0x2')]},'transcribeRegion':{'type':Sequelize[_0x47a5('0x4')]},'sentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x47a5('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize[_0x47a5('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize['INTEGER'](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 50d2aed..c26dd7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaab2=['end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','stack','name','send','map','fieldName','type','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','filter','options','includeAll','include','Setting','rows','catch','rawAttributes','find','body','params','addLogo','file','filename','loginLogo','getLogo','server/files/images/logos','getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','logo','existsSync','join','toLower','root','default_logo.svg','default','custom','Sequelize','upperFirst','\x20not\x20found','download','getLogoLogin','default_loginLogo.svg','ValidationError','gdpr','securePassword','addPreferred','getPreferred','default_preferred.png','addFavicon','getDate','now','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','client','http','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','error','code','message','result','sendStatus','status'];(function(_0x4a68a6,_0x4c8c2b){var _0x4c7d21=function(_0x25a90f){while(--_0x25a90f){_0x4a68a6['push'](_0x4a68a6['shift']());}};_0x4c7d21(++_0x4c8c2b);}(_0xaab2,0xca));var _0x2aab=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xaab2[_0xc6be3a];return _0x56a310;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2aab('0x0'));var zipdir=require(_0x2aab('0x1'));var jsonpatch=require(_0x2aab('0x2'));var rp=require('request-promise');var moment=require(_0x2aab('0x3'));var BPromise=require(_0x2aab('0x4'));var Mustache=require(_0x2aab('0x5'));var util=require(_0x2aab('0x6'));var path=require(_0x2aab('0x7'));var sox=require('sox');var csv=require(_0x2aab('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2aab('0x9'));var _=require(_0x2aab('0xa'));var squel=require(_0x2aab('0xb'));var crypto=require(_0x2aab('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x2aab('0xd'));var toCsv=require(_0x2aab('0x8'));var querystring=require(_0x2aab('0xe'));var Papa=require(_0x2aab('0xf'));var Redis=require(_0x2aab('0x10'));var authService=require(_0x2aab('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2aab('0x12'));var logger=require(_0x2aab('0x13'))('api');var utils=require(_0x2aab('0x14'));var config=require(_0x2aab('0x15'));var licenseUtil=require(_0x2aab('0x16'));var db=require('../../mysqldb')['db'];var jayson=require(_0x2aab('0x17'));var client=jayson[_0x2aab('0x18')][_0x2aab('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x355795,_0xc03782,_0xb281ca,_0x536a85){return new BPromise(function(_0x490240,_0x3039f1){var _0x4c062d=_0x536a85||client;return _0x4c062d['request'](_0x355795,_0xb281ca)[_0x2aab('0x1a')](function(_0xcabe88){logger[_0x2aab('0x1b')](_0x2aab('0x1c'),_0xc03782,_0x2aab('0x1d'));logger[_0x2aab('0x1e')](_0x2aab('0x1f'),_0xc03782,_0x2aab('0x1d'),JSON['stringify'](_0xcabe88));if(_0xcabe88[_0x2aab('0x20')]){if(_0xcabe88[_0x2aab('0x20')][_0x2aab('0x21')]===0x1f4){logger[_0x2aab('0x20')](_0x2aab('0x1c'),_0xc03782,_0xcabe88[_0x2aab('0x20')][_0x2aab('0x22')]);return _0x3039f1(_0xcabe88[_0x2aab('0x20')][_0x2aab('0x22')]);}logger[_0x2aab('0x20')](_0x2aab('0x1c'),_0xc03782,_0xcabe88[_0x2aab('0x20')][_0x2aab('0x22')]);return _0x490240(_0xcabe88[_0x2aab('0x20')][_0x2aab('0x22')]);}else{logger[_0x2aab('0x1b')](_0x2aab('0x1c'),_0xc03782,_0x2aab('0x1d'));_0x490240(_0xcabe88[_0x2aab('0x23')][_0x2aab('0x22')]);}})['catch'](function(_0x1b7ee2){logger[_0x2aab('0x20')](_0x2aab('0x1c'),_0xc03782,_0x1b7ee2);_0x3039f1(_0x1b7ee2);});});}function respondWithStatusCode(_0x4d20ab,_0x163a50){_0x163a50=_0x163a50||0xcc;return function(_0x11bef2){if(_0x11bef2){return _0x4d20ab[_0x2aab('0x24')](_0x163a50);}return _0x4d20ab[_0x2aab('0x25')](_0x163a50)[_0x2aab('0x26')]();};}function respondWithResult(_0x4fed65,_0x429481){_0x429481=_0x429481||0xc8;return function(_0xde364){if(_0xde364){return _0x4fed65[_0x2aab('0x25')](_0x429481)[_0x2aab('0x27')](_0xde364);}};}function respondWithFilteredResult(_0x52993a,_0x18ec3f){return function(_0x117bbb){if(_0x117bbb){var _0x571c6c=typeof _0x18ec3f[_0x2aab('0x28')]===_0x2aab('0x29')&&typeof _0x18ec3f[_0x2aab('0x2a')]===_0x2aab('0x29');var _0x52d702=_0x117bbb['count'];var _0x1942bd=_0x571c6c?0x0:_0x18ec3f[_0x2aab('0x28')];var _0x3e7746=_0x571c6c?_0x117bbb[_0x2aab('0x2b')]:_0x18ec3f[_0x2aab('0x28')]+_0x18ec3f[_0x2aab('0x2a')];var _0xd34da7;if(_0x3e7746>=_0x52d702){_0x3e7746=_0x52d702;_0xd34da7=0xc8;}else{_0xd34da7=0xce;}_0x52993a[_0x2aab('0x25')](_0xd34da7);return _0x52993a[_0x2aab('0x2c')](_0x2aab('0x2d'),_0x1942bd+'-'+_0x3e7746+'/'+_0x52d702)[_0x2aab('0x27')](_0x117bbb);}return null;};}function patchUpdates(_0x5b53a6){return function(_0x150676){try{jsonpatch[_0x2aab('0x2e')](_0x150676,_0x5b53a6,!![]);}catch(_0x3c9c6e){return BPromise[_0x2aab('0x2f')](_0x3c9c6e);}return _0x150676['save']();};}function saveUpdates(_0x325bca,_0x341936){return function(_0x32acab){if(_0x32acab){return _0x32acab[_0x2aab('0x30')](_0x325bca)[_0x2aab('0x1a')](function(_0x560a9c){return _0x560a9c;});}return null;};}function removeEntity(_0x3fba26,_0x4bc43a){return function(_0x392dcd){if(_0x392dcd){return _0x392dcd[_0x2aab('0x31')]()[_0x2aab('0x1a')](function(){_0x3fba26[_0x2aab('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2bf848,_0x48d63a){return function(_0x1cea5a){if(!_0x1cea5a){_0x2bf848[_0x2aab('0x24')](0x194);}return _0x1cea5a;};}function handleError(_0x2c6a95,_0x1a9273){_0x1a9273=_0x1a9273||0x1f4;return function(_0x37d262){logger[_0x2aab('0x20')](_0x37d262[_0x2aab('0x32')]);if(_0x37d262[_0x2aab('0x33')]){delete _0x37d262[_0x2aab('0x33')];}_0x2c6a95[_0x2aab('0x25')](_0x1a9273)[_0x2aab('0x34')](_0x37d262);};}exports['index']=function(_0x2642d5,_0x2081b6){var _0x5aa55e={},_0x4ee39f={},_0x2d5f1e={'count':0x0,'rows':[]};var _0x1aa2f3=_[_0x2aab('0x35')](db['Setting']['rawAttributes'],function(_0x4b0753){return{'name':_0x4b0753[_0x2aab('0x36')],'type':_0x4b0753[_0x2aab('0x37')]['key']};});_0x4ee39f['model']=_['map'](_0x1aa2f3,_0x2aab('0x33'));_0x4ee39f[_0x2aab('0x38')]=_[_0x2aab('0x39')](_0x2642d5[_0x2aab('0x38')]);_0x4ee39f[_0x2aab('0x3a')]=_[_0x2aab('0x3b')](_0x4ee39f['model'],_0x4ee39f['query']);_0x5aa55e[_0x2aab('0x3c')]=_['intersection'](_0x4ee39f[_0x2aab('0x3d')],qs[_0x2aab('0x3e')](_0x2642d5[_0x2aab('0x38')]['fields']));_0x5aa55e[_0x2aab('0x3c')]=_0x5aa55e['attributes'][_0x2aab('0x3f')]?_0x5aa55e[_0x2aab('0x3c')]:_0x4ee39f['model'];if(!_0x2642d5['query'][_0x2aab('0x40')](_0x2aab('0x41'))){_0x5aa55e[_0x2aab('0x2a')]=qs['limit'](_0x2642d5[_0x2aab('0x38')][_0x2aab('0x2a')]);_0x5aa55e[_0x2aab('0x28')]=qs[_0x2aab('0x28')](_0x2642d5[_0x2aab('0x38')][_0x2aab('0x28')]);}_0x5aa55e['order']=qs[_0x2aab('0x42')](_0x2642d5['query']['sort']);_0x5aa55e[_0x2aab('0x43')]=qs[_0x2aab('0x3a')](_['pick'](_0x2642d5[_0x2aab('0x38')],_0x4ee39f[_0x2aab('0x3a')]),_0x1aa2f3);if(_0x2642d5[_0x2aab('0x38')]['filter']){_0x5aa55e[_0x2aab('0x43')]=_[_0x2aab('0x44')](_0x5aa55e[_0x2aab('0x43')],{'$or':_[_0x2aab('0x35')](_0x1aa2f3,function(_0x4e00fb){if(_0x4e00fb[_0x2aab('0x37')]!==_0x2aab('0x45')){var _0xc436ba={};_0xc436ba[_0x4e00fb[_0x2aab('0x33')]]={'$like':'%'+_0x2642d5[_0x2aab('0x38')][_0x2aab('0x46')]+'%'};return _0xc436ba;}})});}_0x5aa55e=_[_0x2aab('0x44')]({},_0x5aa55e,_0x2642d5[_0x2aab('0x47')]);var _0x32a36b={'where':_0x5aa55e[_0x2aab('0x43')]};return db['Setting'][_0x2aab('0x2b')](_0x32a36b)[_0x2aab('0x1a')](function(_0x11b376){_0x2d5f1e['count']=_0x11b376;if(_0x2642d5[_0x2aab('0x38')][_0x2aab('0x48')]){_0x5aa55e[_0x2aab('0x49')]=[{'all':!![]}];}return db[_0x2aab('0x4a')]['findAll'](_0x5aa55e);})[_0x2aab('0x1a')](function(_0x36fde2){_0x2d5f1e[_0x2aab('0x4b')]=_0x36fde2;return _0x2d5f1e;})[_0x2aab('0x1a')](respondWithFilteredResult(_0x2081b6,_0x5aa55e))[_0x2aab('0x4c')](handleError(_0x2081b6,null));};exports['show']=function(_0x51209b,_0x4582f8){var _0x2fe0b5={'raw':![],'where':{'id':_0x51209b['params']['id']}},_0xaed168={};_0xaed168[_0x2aab('0x3d')]=_[_0x2aab('0x39')](db['Setting'][_0x2aab('0x4d')]);_0xaed168['query']=_['keys'](_0x51209b['query']);_0xaed168[_0x2aab('0x3a')]=_[_0x2aab('0x3b')](_0xaed168[_0x2aab('0x3d')],_0xaed168[_0x2aab('0x38')]);_0x2fe0b5[_0x2aab('0x3c')]=_[_0x2aab('0x3b')](_0xaed168[_0x2aab('0x3d')],qs['fields'](_0x51209b[_0x2aab('0x38')][_0x2aab('0x3e')]));_0x2fe0b5[_0x2aab('0x3c')]=_0x2fe0b5[_0x2aab('0x3c')][_0x2aab('0x3f')]?_0x2fe0b5[_0x2aab('0x3c')]:_0xaed168[_0x2aab('0x3d')];if(_0x51209b[_0x2aab('0x38')][_0x2aab('0x48')]){_0x2fe0b5[_0x2aab('0x49')]=[{'all':!![]}];}_0x2fe0b5=_['merge']({},_0x2fe0b5,_0x51209b[_0x2aab('0x47')]);return db['Setting'][_0x2aab('0x4e')](_0x2fe0b5)['then'](handleEntityNotFound(_0x4582f8,null))['then'](respondWithResult(_0x4582f8,null))[_0x2aab('0x4c')](handleError(_0x4582f8,null));};exports['update']=function(_0x48b72a,_0x2c035d){if(_0x48b72a[_0x2aab('0x4f')]['id']){delete _0x48b72a[_0x2aab('0x4f')]['id'];}return db[_0x2aab('0x4a')]['find']({'where':{'id':_0x48b72a[_0x2aab('0x50')]['id']}})[_0x2aab('0x1a')](handleEntityNotFound(_0x2c035d,null))[_0x2aab('0x1a')](saveUpdates(_0x48b72a['body'],null))['then'](respondWithResult(_0x2c035d,null))['catch'](handleError(_0x2c035d,null));};exports[_0x2aab('0x51')]=function(_0x564680,_0x5086a5,_0x4a2d95){if(_0x564680[_0x2aab('0x52')]&&_0x564680[_0x2aab('0x52')][_0x2aab('0x53')]){_0x564680[_0x2aab('0x4f')]['logo']=_0x564680[_0x2aab('0x52')][_0x2aab('0x53')];}return db['Setting']['find']({'where':{'id':_0x564680[_0x2aab('0x50')]['id']}})['then'](handleEntityNotFound(_0x5086a5,null))[_0x2aab('0x1a')](saveUpdates(_0x564680[_0x2aab('0x4f')],null))[_0x2aab('0x1a')](respondWithResult(_0x5086a5,null))['catch'](handleError(_0x5086a5,null));};exports['addLogoLogin']=function(_0x5984ab,_0x4c5a55,_0x1c648a){if(_0x5984ab['file']&&_0x5984ab[_0x2aab('0x52')][_0x2aab('0x53')]){_0x5984ab[_0x2aab('0x4f')][_0x2aab('0x54')]=_0x5984ab[_0x2aab('0x52')][_0x2aab('0x53')];}return db[_0x2aab('0x4a')][_0x2aab('0x4e')]({'where':{'id':_0x5984ab[_0x2aab('0x50')]['id']}})[_0x2aab('0x1a')](handleEntityNotFound(_0x4c5a55,null))[_0x2aab('0x1a')](saveUpdates(_0x5984ab[_0x2aab('0x4f')],null))[_0x2aab('0x1a')](respondWithResult(_0x4c5a55,null))['catch'](handleError(_0x4c5a55,null));};var utilLicense=require(_0x2aab('0x16'));exports[_0x2aab('0x55')]=function(_0x29b9c8,_0x3981da,_0xb6ec61){var _0x55c5f9=_0x2aab('0x56');var _0x543956={'custom':![]};return utilLicense[_0x2aab('0x57')]()[_0x2aab('0x1a')](function(_0x148e6d){if(_0x148e6d){_0x543956=_0x148e6d;}return db[_0x2aab('0x4a')][_0x2aab('0x4e')]({'where':{'id':_0x29b9c8[_0x2aab('0x50')]['id']},'attributes':['logo',_0x2aab('0x54'),_0x2aab('0x58'),_0x2aab('0x59'),_0x2aab('0x5a'),_0x2aab('0x5b'),_0x2aab('0x5c'),_0x2aab('0x5d')],'raw':!![]});})['then'](handleEntityNotFound(_0x3981da,null))[_0x2aab('0x1a')](function(_0x58c035){if(_0x58c035){var _0x209329=_0x58c035[_0x2aab('0x5e')]&&fs[_0x2aab('0x5f')](path[_0x2aab('0x60')](config['root'],_0x55c5f9,_[_0x2aab('0x61')](_0x58c035['logo'])))?path[_0x2aab('0x60')](config[_0x2aab('0x62')],_0x55c5f9,_[_0x2aab('0x61')](_0x58c035[_0x2aab('0x5e')])):path[_0x2aab('0x60')](config[_0x2aab('0x62')],_0x55c5f9,_[_0x2aab('0x61')](_0x2aab('0x63')));var _0x25a273=_0x2aab('0x64')+_['upperFirst'](_0x2aab('0x5e'));if(_0x58c035[_0x25a273]||!_0x543956[_0x2aab('0x65')]){_0x209329=path[_0x2aab('0x60')](config['root'],_0x55c5f9,_[_0x2aab('0x61')](_0x2aab('0x63')));}if(!fs[_0x2aab('0x5f')](_0x209329)){throw new db[(_0x2aab('0x66'))]['ValidationError'](_[_0x2aab('0x67')](_0x2aab('0x5e'))+_0x2aab('0x68'));}return _0x3981da[_0x2aab('0x69')](_0x209329);}})['catch'](handleError(_0x3981da,null));};var utilLicense=require(_0x2aab('0x16'));exports[_0x2aab('0x6a')]=function(_0x5481a3,_0x1f762a,_0x16cc54){var _0x596d54='server/files/images/logos';var _0x25a811={'custom':![]};return utilLicense[_0x2aab('0x57')]()['then'](function(_0x4d6327){if(_0x4d6327){_0x25a811=_0x4d6327;}return db['Setting']['find']({'where':{'id':_0x5481a3[_0x2aab('0x50')]['id']},'attributes':[_0x2aab('0x5e'),'loginLogo',_0x2aab('0x58'),_0x2aab('0x59'),_0x2aab('0x5a'),_0x2aab('0x5b'),_0x2aab('0x5c'),_0x2aab('0x5d')],'raw':!![]});})['then'](handleEntityNotFound(_0x1f762a,null))['then'](function(_0x2978bf){if(_0x2978bf){var _0x160e50=_0x2978bf[_0x2aab('0x54')]&&fs[_0x2aab('0x5f')](path[_0x2aab('0x60')](config['root'],_0x596d54,_[_0x2aab('0x61')](_0x2978bf['loginLogo'])))?path[_0x2aab('0x60')](config[_0x2aab('0x62')],_0x596d54,_[_0x2aab('0x61')](_0x2978bf['loginLogo'])):path[_0x2aab('0x60')](config[_0x2aab('0x62')],_0x596d54,_[_0x2aab('0x61')](_0x2aab('0x6b')));var _0x176b8c=_0x2aab('0x64')+_[_0x2aab('0x67')]('loginLogo');if(_0x2978bf[_0x176b8c]||!_0x25a811['custom']){_0x160e50=path[_0x2aab('0x60')](config['root'],_0x596d54,_[_0x2aab('0x61')](_0x2aab('0x6b')));}if(!fs[_0x2aab('0x5f')](_0x160e50)){throw new db['Sequelize'][(_0x2aab('0x6c'))](_[_0x2aab('0x67')](_0x2aab('0x54'))+_0x2aab('0x68'));}return _0x1f762a[_0x2aab('0x69')](_0x160e50);}})['catch'](handleError(_0x1f762a,null));};exports[_0x2aab('0x6d')]=function(_0x49e092,_0x5aab0e){return db[_0x2aab('0x4a')]['find']({'where':{'id':_0x49e092[_0x2aab('0x50')]['id']},'attributes':[_0x2aab('0x6e')]})[_0x2aab('0x1a')](respondWithResult(_0x5aab0e,null))[_0x2aab('0x4c')](handleError(_0x5aab0e,null));};exports[_0x2aab('0x6f')]=function(_0x428123,_0x3d37ea,_0x4f9145){if(_0x428123['file']&&_0x428123['file'][_0x2aab('0x53')]){_0x428123['body'][_0x2aab('0x58')]=_0x428123['file'][_0x2aab('0x53')];}return db[_0x2aab('0x4a')]['find']({'where':{'id':_0x428123[_0x2aab('0x50')]['id']}})[_0x2aab('0x1a')](handleEntityNotFound(_0x3d37ea,null))['then'](saveUpdates(_0x428123[_0x2aab('0x4f')],null))[_0x2aab('0x1a')](respondWithResult(_0x3d37ea,null))['catch'](handleError(_0x3d37ea,null));};var utilLicense=require(_0x2aab('0x16'));exports[_0x2aab('0x70')]=function(_0x50f5d0,_0xf2df1e,_0x4e0f4b){var _0x4d2528='server/files/images/logos';var _0x8a19b8={'custom':![]};return utilLicense[_0x2aab('0x57')]()['then'](function(_0x454279){if(_0x454279){_0x8a19b8=_0x454279;}return db[_0x2aab('0x4a')][_0x2aab('0x4e')]({'where':{'id':_0x50f5d0[_0x2aab('0x50')]['id']},'attributes':['logo',_0x2aab('0x54'),_0x2aab('0x58'),_0x2aab('0x59'),_0x2aab('0x5a'),_0x2aab('0x5b'),_0x2aab('0x5c'),_0x2aab('0x5d')],'raw':!![]});})['then'](handleEntityNotFound(_0xf2df1e,null))[_0x2aab('0x1a')](function(_0x416f5e){if(_0x416f5e){var _0x1a87bf=_0x416f5e[_0x2aab('0x58')]&&fs[_0x2aab('0x5f')](path[_0x2aab('0x60')](config[_0x2aab('0x62')],_0x4d2528,_['toLower'](_0x416f5e[_0x2aab('0x58')])))?path[_0x2aab('0x60')](config[_0x2aab('0x62')],_0x4d2528,_[_0x2aab('0x61')](_0x416f5e['preferred'])):path['join'](config[_0x2aab('0x62')],_0x4d2528,_[_0x2aab('0x61')]('default_preferred.png'));var _0x5c375c=_0x2aab('0x64')+_['upperFirst']('preferred');if(_0x416f5e[_0x5c375c]||!_0x8a19b8[_0x2aab('0x65')]||!_0x8a19b8[_0x2aab('0x58')]){_0x1a87bf=path[_0x2aab('0x60')](config['root'],_0x4d2528,_['toLower'](_0x2aab('0x71')));}if(!fs['existsSync'](_0x1a87bf)){throw new db[(_0x2aab('0x66'))][(_0x2aab('0x6c'))](_['upperFirst']('preferred')+'\x20not\x20found');}return _0xf2df1e[_0x2aab('0x69')](_0x1a87bf);}})[_0x2aab('0x4c')](handleError(_0xf2df1e,null));};exports[_0x2aab('0x72')]=function(_0x43251e,_0x33a29b,_0xf41c38){if(_0x43251e[_0x2aab('0x52')]&&_0x43251e[_0x2aab('0x52')]['filename']){_0x43251e[_0x2aab('0x4f')][_0x2aab('0x59')]=_0x43251e[_0x2aab('0x52')]['filename'];}return db[_0x2aab('0x4a')][_0x2aab('0x4e')]({'where':{'id':_0x43251e[_0x2aab('0x50')]['id']}})[_0x2aab('0x1a')](handleEntityNotFound(_0x33a29b,null))[_0x2aab('0x1a')](saveUpdates(_0x43251e['body'],null))[_0x2aab('0x1a')](respondWithResult(_0x33a29b,null))[_0x2aab('0x4c')](handleError(_0x33a29b,null));};var utilLicense=require(_0x2aab('0x16'));exports['getFavicon']=function(_0x1ffcf8,_0x27a6c4,_0x1bf5c0){var _0x7549af=_0x2aab('0x56');var _0x265331={'custom':![]};return utilLicense[_0x2aab('0x57')]()[_0x2aab('0x1a')](function(_0x1f55e4){if(_0x1f55e4){_0x265331=_0x1f55e4;}return db[_0x2aab('0x4a')][_0x2aab('0x4e')]({'where':{'id':_0x1ffcf8[_0x2aab('0x50')]['id']},'attributes':[_0x2aab('0x5e'),'loginLogo','preferred',_0x2aab('0x59'),'defaultLogo',_0x2aab('0x5b'),'defaultPreferred',_0x2aab('0x5d')],'raw':!![]});})[_0x2aab('0x1a')](handleEntityNotFound(_0x27a6c4,null))['then'](function(_0x2a6f39){if(_0x2a6f39){var _0xd075d9=_0x2a6f39[_0x2aab('0x59')]&&fs[_0x2aab('0x5f')](path['join'](config[_0x2aab('0x62')],_0x7549af,_[_0x2aab('0x61')](_0x2a6f39[_0x2aab('0x59')])))?path[_0x2aab('0x60')](config['root'],_0x7549af,_[_0x2aab('0x61')](_0x2a6f39[_0x2aab('0x59')])):path['join'](config['root'],_0x7549af,_['toLower']('default_favicon.ico'));var _0x5f4f06=_0x2aab('0x64')+_[_0x2aab('0x67')]('favicon');if(_0x2a6f39[_0x5f4f06]||!_0x265331[_0x2aab('0x65')]){_0xd075d9=path[_0x2aab('0x60')](config[_0x2aab('0x62')],_0x7549af,_[_0x2aab('0x61')]('default_favicon.ico'));}if(!fs[_0x2aab('0x5f')](_0xd075d9)){throw new db[(_0x2aab('0x66'))][(_0x2aab('0x6c'))](_[_0x2aab('0x67')](_0x2aab('0x59'))+_0x2aab('0x68'));}return _0x27a6c4[_0x2aab('0x69')](_0xd075d9);}})['catch'](handleError(_0x27a6c4,null));};exports[_0x2aab('0x73')]=function(_0x2ee9f8,_0x354b52){var _0x435e74={'offset':moment()['utcOffset']()};_0x435e74[_0x2aab('0x74')]=moment()[_0x2aab('0x75')](_0x435e74[_0x2aab('0x28')])[_0x2aab('0x76')](_0x2aab('0x77'));return _0x354b52[_0x2aab('0x25')](0xc8)[_0x2aab('0x34')](_0x435e74);};
\ No newline at end of file
+var _0x15cb=['YYYY-MM-DD\x20HH:mm:ss:SSS','rimraf','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','http','request','then','info','request\x20sent','debug','stringify','error','code','Setting,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','stack','name','send','index','map','Setting','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','show','params','options','find','body','addLogo','file','filename','logo','loginLogo','server/files/images/logos','getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','defaultFavicon','existsSync','join','root','toLower','default','custom','default_logo.svg','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','default_loginLogo.svg','upperFirst','gdpr','securePassword','addPreferred','getPreferred','defaultPreferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','now','format'];(function(_0x21d145,_0x4eeddb){var _0x613ec4=function(_0x14c714){while(--_0x14c714){_0x21d145['push'](_0x21d145['shift']());}};_0x613ec4(++_0x4eeddb);}(_0x15cb,0x16f));var _0xb15c=function(_0x5dfd8a,_0x430bc3){_0x5dfd8a=_0x5dfd8a-0x0;var _0x37c9ea=_0x15cb[_0x5dfd8a];return _0x37c9ea;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb15c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb15c('0x1'));var rp=require('request-promise');var moment=require(_0xb15c('0x2'));var BPromise=require(_0xb15c('0x3'));var Mustache=require(_0xb15c('0x4'));var util=require(_0xb15c('0x5'));var path=require('path');var sox=require(_0xb15c('0x6'));var csv=require(_0xb15c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb15c('0x8'));var squel=require(_0xb15c('0x9'));var crypto=require(_0xb15c('0xa'));var jsforce=require(_0xb15c('0xb'));var deskjs=require(_0xb15c('0xc'));var toCsv=require(_0xb15c('0x7'));var querystring=require(_0xb15c('0xd'));var Papa=require(_0xb15c('0xe'));var Redis=require('ioredis');var authService=require(_0xb15c('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb15c('0x10'))(_0xb15c('0x11'));var utils=require(_0xb15c('0x12'));var config=require(_0xb15c('0x13'));var licenseUtil=require(_0xb15c('0x14'));var db=require(_0xb15c('0x15'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0xb15c('0x16')]({'port':0x232a});function respondWithRpcPromise(_0x52816e,_0xf8031d,_0x182f14,_0x3a384f){return new BPromise(function(_0x435c0a,_0x465c44){var _0x429c89=_0x3a384f||client;return _0x429c89[_0xb15c('0x17')](_0x52816e,_0x182f14)[_0xb15c('0x18')](function(_0x29f591){logger[_0xb15c('0x19')]('Setting,\x20%s,\x20%s',_0xf8031d,_0xb15c('0x1a'));logger[_0xb15c('0x1b')]('Setting,\x20%s,\x20%s,\x20%s',_0xf8031d,_0xb15c('0x1a'),JSON[_0xb15c('0x1c')](_0x29f591));if(_0x29f591[_0xb15c('0x1d')]){if(_0x29f591[_0xb15c('0x1d')][_0xb15c('0x1e')]===0x1f4){logger[_0xb15c('0x1d')](_0xb15c('0x1f'),_0xf8031d,_0x29f591['error'][_0xb15c('0x20')]);return _0x465c44(_0x29f591[_0xb15c('0x1d')][_0xb15c('0x20')]);}logger['error'](_0xb15c('0x1f'),_0xf8031d,_0x29f591['error'][_0xb15c('0x20')]);return _0x435c0a(_0x29f591[_0xb15c('0x1d')][_0xb15c('0x20')]);}else{logger[_0xb15c('0x19')](_0xb15c('0x1f'),_0xf8031d,_0xb15c('0x1a'));_0x435c0a(_0x29f591[_0xb15c('0x21')][_0xb15c('0x20')]);}})[_0xb15c('0x22')](function(_0x29e7b3){logger[_0xb15c('0x1d')](_0xb15c('0x1f'),_0xf8031d,_0x29e7b3);_0x465c44(_0x29e7b3);});});}function respondWithStatusCode(_0xc47a07,_0x90951f){_0x90951f=_0x90951f||0xcc;return function(_0x352065){if(_0x352065){return _0xc47a07[_0xb15c('0x23')](_0x90951f);}return _0xc47a07[_0xb15c('0x24')](_0x90951f)[_0xb15c('0x25')]();};}function respondWithResult(_0xd38e82,_0x2740a2){_0x2740a2=_0x2740a2||0xc8;return function(_0x204219){if(_0x204219){return _0xd38e82[_0xb15c('0x24')](_0x2740a2)[_0xb15c('0x26')](_0x204219);}};}function respondWithFilteredResult(_0x4d0490,_0x345452){return function(_0x5c0cd9){if(_0x5c0cd9){var _0x28c732=typeof _0x345452[_0xb15c('0x27')]===_0xb15c('0x28')&&typeof _0x345452[_0xb15c('0x29')]===_0xb15c('0x28');var _0x3fdc1d=_0x5c0cd9[_0xb15c('0x2a')];var _0xf59691=_0x28c732?0x0:_0x345452['offset'];var _0x469c50=_0x28c732?_0x5c0cd9[_0xb15c('0x2a')]:_0x345452['offset']+_0x345452['limit'];var _0x5b1f53;if(_0x469c50>=_0x3fdc1d){_0x469c50=_0x3fdc1d;_0x5b1f53=0xc8;}else{_0x5b1f53=0xce;}_0x4d0490[_0xb15c('0x24')](_0x5b1f53);return _0x4d0490[_0xb15c('0x2b')](_0xb15c('0x2c'),_0xf59691+'-'+_0x469c50+'/'+_0x3fdc1d)[_0xb15c('0x26')](_0x5c0cd9);}return null;};}function patchUpdates(_0x2110f2){return function(_0x54c1ed){try{jsonpatch[_0xb15c('0x2d')](_0x54c1ed,_0x2110f2,!![]);}catch(_0xc4c1e4){return BPromise[_0xb15c('0x2e')](_0xc4c1e4);}return _0x54c1ed['save']();};}function saveUpdates(_0x18028f,_0x85b7a5){return function(_0x46e47a){if(_0x46e47a){return _0x46e47a[_0xb15c('0x2f')](_0x18028f)[_0xb15c('0x18')](function(_0x453f5a){return _0x453f5a;});}return null;};}function removeEntity(_0x350181,_0x2feb1c){return function(_0x2012d1){if(_0x2012d1){return _0x2012d1[_0xb15c('0x30')]()[_0xb15c('0x18')](function(){_0x350181[_0xb15c('0x24')](0xcc)[_0xb15c('0x25')]();});}};}function handleEntityNotFound(_0x399abd,_0x4cbd9f){return function(_0x460423){if(!_0x460423){_0x399abd[_0xb15c('0x23')](0x194);}return _0x460423;};}function handleError(_0x59c364,_0x3459a3){_0x3459a3=_0x3459a3||0x1f4;return function(_0x2695b5){logger['error'](_0x2695b5[_0xb15c('0x31')]);if(_0x2695b5[_0xb15c('0x32')]){delete _0x2695b5[_0xb15c('0x32')];}_0x59c364[_0xb15c('0x24')](_0x3459a3)[_0xb15c('0x33')](_0x2695b5);};}exports[_0xb15c('0x34')]=function(_0x4382f3,_0x42930d){var _0x5890cc={},_0x574ebb={},_0x3df19c={'count':0x0,'rows':[]};var _0x1272ec=_[_0xb15c('0x35')](db[_0xb15c('0x36')][_0xb15c('0x37')],function(_0xa207c4){return{'name':_0xa207c4[_0xb15c('0x38')],'type':_0xa207c4[_0xb15c('0x39')]['key']};});_0x574ebb[_0xb15c('0x3a')]=_[_0xb15c('0x35')](_0x1272ec,'name');_0x574ebb[_0xb15c('0x3b')]=_[_0xb15c('0x3c')](_0x4382f3['query']);_0x574ebb[_0xb15c('0x3d')]=_[_0xb15c('0x3e')](_0x574ebb['model'],_0x574ebb[_0xb15c('0x3b')]);_0x5890cc['attributes']=_['intersection'](_0x574ebb[_0xb15c('0x3a')],qs[_0xb15c('0x3f')](_0x4382f3[_0xb15c('0x3b')][_0xb15c('0x3f')]));_0x5890cc['attributes']=_0x5890cc[_0xb15c('0x40')][_0xb15c('0x41')]?_0x5890cc[_0xb15c('0x40')]:_0x574ebb['model'];if(!_0x4382f3['query'][_0xb15c('0x42')](_0xb15c('0x43'))){_0x5890cc[_0xb15c('0x29')]=qs[_0xb15c('0x29')](_0x4382f3[_0xb15c('0x3b')]['limit']);_0x5890cc[_0xb15c('0x27')]=qs['offset'](_0x4382f3[_0xb15c('0x3b')][_0xb15c('0x27')]);}_0x5890cc[_0xb15c('0x44')]=qs[_0xb15c('0x45')](_0x4382f3[_0xb15c('0x3b')][_0xb15c('0x45')]);_0x5890cc[_0xb15c('0x46')]=qs['filters'](_[_0xb15c('0x47')](_0x4382f3[_0xb15c('0x3b')],_0x574ebb['filters']),_0x1272ec);if(_0x4382f3['query'][_0xb15c('0x48')]){_0x5890cc[_0xb15c('0x46')]=_[_0xb15c('0x49')](_0x5890cc[_0xb15c('0x46')],{'$or':_[_0xb15c('0x35')](_0x1272ec,function(_0x17da6e){if(_0x17da6e[_0xb15c('0x39')]!=='VIRTUAL'){var _0x20ea64={};_0x20ea64[_0x17da6e['name']]={'$like':'%'+_0x4382f3[_0xb15c('0x3b')][_0xb15c('0x48')]+'%'};return _0x20ea64;}})});}_0x5890cc=_['merge']({},_0x5890cc,_0x4382f3['options']);var _0x2116be={'where':_0x5890cc[_0xb15c('0x46')]};return db[_0xb15c('0x36')][_0xb15c('0x2a')](_0x2116be)[_0xb15c('0x18')](function(_0x7d6858){_0x3df19c[_0xb15c('0x2a')]=_0x7d6858;if(_0x4382f3['query'][_0xb15c('0x4a')]){_0x5890cc[_0xb15c('0x4b')]=[{'all':!![]}];}return db['Setting'][_0xb15c('0x4c')](_0x5890cc);})['then'](function(_0x407c22){_0x3df19c[_0xb15c('0x4d')]=_0x407c22;return _0x3df19c;})[_0xb15c('0x18')](respondWithFilteredResult(_0x42930d,_0x5890cc))[_0xb15c('0x22')](handleError(_0x42930d,null));};exports[_0xb15c('0x4e')]=function(_0x4271a5,_0x1d216d){var _0x238c6d={'raw':![],'where':{'id':_0x4271a5[_0xb15c('0x4f')]['id']}},_0x429862={};_0x429862[_0xb15c('0x3a')]=_[_0xb15c('0x3c')](db[_0xb15c('0x36')][_0xb15c('0x37')]);_0x429862['query']=_[_0xb15c('0x3c')](_0x4271a5[_0xb15c('0x3b')]);_0x429862['filters']=_[_0xb15c('0x3e')](_0x429862[_0xb15c('0x3a')],_0x429862[_0xb15c('0x3b')]);_0x238c6d[_0xb15c('0x40')]=_[_0xb15c('0x3e')](_0x429862[_0xb15c('0x3a')],qs[_0xb15c('0x3f')](_0x4271a5[_0xb15c('0x3b')][_0xb15c('0x3f')]));_0x238c6d[_0xb15c('0x40')]=_0x238c6d[_0xb15c('0x40')][_0xb15c('0x41')]?_0x238c6d['attributes']:_0x429862[_0xb15c('0x3a')];if(_0x4271a5[_0xb15c('0x3b')][_0xb15c('0x4a')]){_0x238c6d[_0xb15c('0x4b')]=[{'all':!![]}];}_0x238c6d=_[_0xb15c('0x49')]({},_0x238c6d,_0x4271a5[_0xb15c('0x50')]);return db['Setting'][_0xb15c('0x51')](_0x238c6d)[_0xb15c('0x18')](handleEntityNotFound(_0x1d216d,null))[_0xb15c('0x18')](respondWithResult(_0x1d216d,null))['catch'](handleError(_0x1d216d,null));};exports[_0xb15c('0x2f')]=function(_0xd2678f,_0x250a16){if(_0xd2678f[_0xb15c('0x52')]['id']){delete _0xd2678f['body']['id'];}return db['Setting'][_0xb15c('0x51')]({'where':{'id':_0xd2678f[_0xb15c('0x4f')]['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x250a16,null))[_0xb15c('0x18')](saveUpdates(_0xd2678f[_0xb15c('0x52')],null))[_0xb15c('0x18')](respondWithResult(_0x250a16,null))['catch'](handleError(_0x250a16,null));};exports[_0xb15c('0x53')]=function(_0xd0e83f,_0x34df62,_0x176063){if(_0xd0e83f['file']&&_0xd0e83f[_0xb15c('0x54')][_0xb15c('0x55')]){_0xd0e83f[_0xb15c('0x52')][_0xb15c('0x56')]=_0xd0e83f[_0xb15c('0x54')][_0xb15c('0x55')];}return db[_0xb15c('0x36')]['find']({'where':{'id':_0xd0e83f[_0xb15c('0x4f')]['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x34df62,null))[_0xb15c('0x18')](saveUpdates(_0xd0e83f[_0xb15c('0x52')],null))[_0xb15c('0x18')](respondWithResult(_0x34df62,null))['catch'](handleError(_0x34df62,null));};exports['addLogoLogin']=function(_0x3a25c5,_0x4b1db7,_0x5a1564){if(_0x3a25c5[_0xb15c('0x54')]&&_0x3a25c5[_0xb15c('0x54')][_0xb15c('0x55')]){_0x3a25c5[_0xb15c('0x52')][_0xb15c('0x57')]=_0x3a25c5[_0xb15c('0x54')][_0xb15c('0x55')];}return db[_0xb15c('0x36')]['find']({'where':{'id':_0x3a25c5[_0xb15c('0x4f')]['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x4b1db7,null))[_0xb15c('0x18')](saveUpdates(_0x3a25c5[_0xb15c('0x52')],null))[_0xb15c('0x18')](respondWithResult(_0x4b1db7,null))[_0xb15c('0x22')](handleError(_0x4b1db7,null));};var utilLicense=require(_0xb15c('0x14'));exports['getLogo']=function(_0xa49f8a,_0xad25ed,_0x33cee9){var _0x397458=_0xb15c('0x58');var _0x9ef15d={'custom':![]};return utilLicense[_0xb15c('0x59')]()[_0xb15c('0x18')](function(_0x6fda9c){if(_0x6fda9c){_0x9ef15d=_0x6fda9c;}return db[_0xb15c('0x36')][_0xb15c('0x51')]({'where':{'id':_0xa49f8a[_0xb15c('0x4f')]['id']},'attributes':[_0xb15c('0x56'),_0xb15c('0x57'),_0xb15c('0x5a'),_0xb15c('0x5b'),_0xb15c('0x5c'),_0xb15c('0x5d'),'defaultPreferred',_0xb15c('0x5e')],'raw':!![]});})[_0xb15c('0x18')](handleEntityNotFound(_0xad25ed,null))[_0xb15c('0x18')](function(_0x48d07c){if(_0x48d07c){var _0x2f6e8c=_0x48d07c[_0xb15c('0x56')]&&fs[_0xb15c('0x5f')](path[_0xb15c('0x60')](config[_0xb15c('0x61')],_0x397458,_['toLower'](_0x48d07c['logo'])))?path[_0xb15c('0x60')](config[_0xb15c('0x61')],_0x397458,_[_0xb15c('0x62')](_0x48d07c[_0xb15c('0x56')])):path['join'](config[_0xb15c('0x61')],_0x397458,_[_0xb15c('0x62')]('default_logo.svg'));var _0x27a8ef=_0xb15c('0x63')+_['upperFirst'](_0xb15c('0x56'));if(_0x48d07c[_0x27a8ef]||!_0x9ef15d[_0xb15c('0x64')]){_0x2f6e8c=path[_0xb15c('0x60')](config[_0xb15c('0x61')],_0x397458,_['toLower'](_0xb15c('0x65')));}if(!fs[_0xb15c('0x5f')](_0x2f6e8c)){throw new db[(_0xb15c('0x66'))][(_0xb15c('0x67'))](_['upperFirst']('logo')+_0xb15c('0x68'));}return _0xad25ed[_0xb15c('0x69')](_0x2f6e8c);}})['catch'](handleError(_0xad25ed,null));};var utilLicense=require(_0xb15c('0x14'));exports[_0xb15c('0x6a')]=function(_0x3e89c1,_0x4d4337,_0x59a210){var _0x42f092='server/files/images/logos';var _0x182ea2={'custom':![]};return utilLicense['getLicense']()[_0xb15c('0x18')](function(_0x42e6f2){if(_0x42e6f2){_0x182ea2=_0x42e6f2;}return db[_0xb15c('0x36')][_0xb15c('0x51')]({'where':{'id':_0x3e89c1[_0xb15c('0x4f')]['id']},'attributes':[_0xb15c('0x56'),'loginLogo',_0xb15c('0x5a'),_0xb15c('0x5b'),_0xb15c('0x5c'),_0xb15c('0x5d'),'defaultPreferred',_0xb15c('0x5e')],'raw':!![]});})[_0xb15c('0x18')](handleEntityNotFound(_0x4d4337,null))[_0xb15c('0x18')](function(_0x124dc2){if(_0x124dc2){var _0x571753=_0x124dc2[_0xb15c('0x57')]&&fs[_0xb15c('0x5f')](path[_0xb15c('0x60')](config['root'],_0x42f092,_[_0xb15c('0x62')](_0x124dc2[_0xb15c('0x57')])))?path[_0xb15c('0x60')](config[_0xb15c('0x61')],_0x42f092,_[_0xb15c('0x62')](_0x124dc2['loginLogo'])):path['join'](config[_0xb15c('0x61')],_0x42f092,_[_0xb15c('0x62')](_0xb15c('0x6b')));var _0x500db0=_0xb15c('0x63')+_[_0xb15c('0x6c')](_0xb15c('0x57'));if(_0x124dc2[_0x500db0]||!_0x182ea2['custom']){_0x571753=path[_0xb15c('0x60')](config['root'],_0x42f092,_['toLower'](_0xb15c('0x6b')));}if(!fs['existsSync'](_0x571753)){throw new db[(_0xb15c('0x66'))][(_0xb15c('0x67'))](_['upperFirst'](_0xb15c('0x57'))+'\x20not\x20found');}return _0x4d4337[_0xb15c('0x69')](_0x571753);}})[_0xb15c('0x22')](handleError(_0x4d4337,null));};exports[_0xb15c('0x6d')]=function(_0x57af46,_0x258946){return db[_0xb15c('0x36')]['find']({'where':{'id':_0x57af46['params']['id']},'attributes':[_0xb15c('0x6e')]})['then'](respondWithResult(_0x258946,null))['catch'](handleError(_0x258946,null));};exports[_0xb15c('0x6f')]=function(_0x4a3d13,_0x4c2c18,_0xc8a64b){if(_0x4a3d13[_0xb15c('0x54')]&&_0x4a3d13[_0xb15c('0x54')][_0xb15c('0x55')]){_0x4a3d13['body'][_0xb15c('0x5a')]=_0x4a3d13[_0xb15c('0x54')]['filename'];}return db['Setting'][_0xb15c('0x51')]({'where':{'id':_0x4a3d13[_0xb15c('0x4f')]['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x4c2c18,null))[_0xb15c('0x18')](saveUpdates(_0x4a3d13[_0xb15c('0x52')],null))['then'](respondWithResult(_0x4c2c18,null))[_0xb15c('0x22')](handleError(_0x4c2c18,null));};var utilLicense=require(_0xb15c('0x14'));exports[_0xb15c('0x70')]=function(_0x1c17ad,_0x45e9fd,_0x428509){var _0x2bbb2c=_0xb15c('0x58');var _0x4dd6ed={'custom':![]};return utilLicense[_0xb15c('0x59')]()['then'](function(_0x552fb9){if(_0x552fb9){_0x4dd6ed=_0x552fb9;}return db['Setting'][_0xb15c('0x51')]({'where':{'id':_0x1c17ad[_0xb15c('0x4f')]['id']},'attributes':['logo',_0xb15c('0x57'),_0xb15c('0x5a'),'favicon','defaultLogo',_0xb15c('0x5d'),_0xb15c('0x71'),_0xb15c('0x5e')],'raw':!![]});})[_0xb15c('0x18')](handleEntityNotFound(_0x45e9fd,null))[_0xb15c('0x18')](function(_0x24e826){if(_0x24e826){var _0x45d8cc=_0x24e826['preferred']&&fs['existsSync'](path['join'](config[_0xb15c('0x61')],_0x2bbb2c,_[_0xb15c('0x62')](_0x24e826[_0xb15c('0x5a')])))?path['join'](config[_0xb15c('0x61')],_0x2bbb2c,_[_0xb15c('0x62')](_0x24e826[_0xb15c('0x5a')])):path[_0xb15c('0x60')](config[_0xb15c('0x61')],_0x2bbb2c,_[_0xb15c('0x62')]('default_preferred.png'));var _0x15f5ff=_0xb15c('0x63')+_[_0xb15c('0x6c')](_0xb15c('0x5a'));if(_0x24e826[_0x15f5ff]||!_0x4dd6ed[_0xb15c('0x64')]||!_0x4dd6ed[_0xb15c('0x5a')]){_0x45d8cc=path[_0xb15c('0x60')](config[_0xb15c('0x61')],_0x2bbb2c,_[_0xb15c('0x62')](_0xb15c('0x72')));}if(!fs[_0xb15c('0x5f')](_0x45d8cc)){throw new db[(_0xb15c('0x66'))]['ValidationError'](_['upperFirst'](_0xb15c('0x5a'))+_0xb15c('0x68'));}return _0x45e9fd[_0xb15c('0x69')](_0x45d8cc);}})[_0xb15c('0x22')](handleError(_0x45e9fd,null));};exports[_0xb15c('0x73')]=function(_0x5a52c4,_0x202e98,_0x11f233){if(_0x5a52c4['file']&&_0x5a52c4[_0xb15c('0x54')][_0xb15c('0x55')]){_0x5a52c4[_0xb15c('0x52')][_0xb15c('0x5b')]=_0x5a52c4[_0xb15c('0x54')][_0xb15c('0x55')];}return db[_0xb15c('0x36')]['find']({'where':{'id':_0x5a52c4['params']['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x202e98,null))[_0xb15c('0x18')](saveUpdates(_0x5a52c4[_0xb15c('0x52')],null))[_0xb15c('0x18')](respondWithResult(_0x202e98,null))[_0xb15c('0x22')](handleError(_0x202e98,null));};var utilLicense=require(_0xb15c('0x14'));exports[_0xb15c('0x74')]=function(_0x3e9d5b,_0x25a9f4,_0x20679d){var _0x5c62d6='server/files/images/logos';var _0x35186d={'custom':![]};return utilLicense[_0xb15c('0x59')]()[_0xb15c('0x18')](function(_0x1e094a){if(_0x1e094a){_0x35186d=_0x1e094a;}return db['Setting'][_0xb15c('0x51')]({'where':{'id':_0x3e9d5b['params']['id']},'attributes':['logo',_0xb15c('0x57'),_0xb15c('0x5a'),_0xb15c('0x5b'),_0xb15c('0x5c'),_0xb15c('0x5d'),_0xb15c('0x71'),_0xb15c('0x5e')],'raw':!![]});})[_0xb15c('0x18')](handleEntityNotFound(_0x25a9f4,null))[_0xb15c('0x18')](function(_0x57a8d9){if(_0x57a8d9){var _0x40e0b8=_0x57a8d9[_0xb15c('0x5b')]&&fs[_0xb15c('0x5f')](path[_0xb15c('0x60')](config[_0xb15c('0x61')],_0x5c62d6,_[_0xb15c('0x62')](_0x57a8d9[_0xb15c('0x5b')])))?path[_0xb15c('0x60')](config['root'],_0x5c62d6,_[_0xb15c('0x62')](_0x57a8d9[_0xb15c('0x5b')])):path['join'](config[_0xb15c('0x61')],_0x5c62d6,_[_0xb15c('0x62')](_0xb15c('0x75')));var _0x5ca78e='default'+_[_0xb15c('0x6c')](_0xb15c('0x5b'));if(_0x57a8d9[_0x5ca78e]||!_0x35186d['custom']){_0x40e0b8=path[_0xb15c('0x60')](config[_0xb15c('0x61')],_0x5c62d6,_[_0xb15c('0x62')](_0xb15c('0x75')));}if(!fs['existsSync'](_0x40e0b8)){throw new db[(_0xb15c('0x66'))][(_0xb15c('0x67'))](_[_0xb15c('0x6c')](_0xb15c('0x5b'))+_0xb15c('0x68'));}return _0x25a9f4[_0xb15c('0x69')](_0x40e0b8);}})[_0xb15c('0x22')](handleError(_0x25a9f4,null));};exports[_0xb15c('0x76')]=function(_0x374e64,_0x18ef26){var _0x48d6a5={'offset':moment()['utcOffset']()};_0x48d6a5[_0xb15c('0x77')]=moment()['utcOffset'](_0x48d6a5[_0xb15c('0x27')])[_0xb15c('0x78')](_0xb15c('0x79'));return _0x18ef26[_0xb15c('0x24')](0xc8)['send'](_0x48d6a5);};
\ No newline at end of file
index 9f69432..8ae5e04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['exports','Setting','settings','lodash','../../config/logger','api','moment','path','../../config/environment','./setting.attributes'];(function(_0x18b191,_0x4e0684){var _0x43e146=function(_0x4b464e){while(--_0x4b464e){_0x18b191['push'](_0x18b191['shift']());}};_0x43e146(++_0x4e0684);}(_0x3e74,0x175));var _0x43e7=function(_0x5103ac,_0x2bbf11){_0x5103ac=_0x5103ac-0x0;var _0x1b8f98=_0x3e74[_0x5103ac];return _0x1b8f98;};'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
+var _0x9957=['exports','define','Setting','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./setting.attributes'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x9957,0x93));var _0x7995=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9957[_0x618414];return _0x21c19a;};'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':'settings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 75c77af..da8a149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x883c=['info','Setting,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','ShowSetting','Setting','find','options','raw','where','attributes','map','include','model','debug','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','http','request'];(function(_0x9b76df,_0x3783da){var _0x5c615b=function(_0x3663dc){while(--_0x3663dc){_0x9b76df['push'](_0x9b76df['shift']());}};_0x5c615b(++_0x3783da);}(_0x883c,0xed));var _0xc883=function(_0x550446,_0x312aaa){_0x550446=_0x550446-0x0;var _0x22dc30=_0x883c[_0x550446];return _0x22dc30;};'use strict';var _=require(_0xc883('0x0'));var util=require(_0xc883('0x1'));var moment=require(_0xc883('0x2'));var BPromise=require('bluebird');var rs=require(_0xc883('0x3'));var fs=require('fs');var Redis=require(_0xc883('0x4'));var db=require(_0xc883('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc883('0x6'));var config=require(_0xc883('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc883('0x8')][_0xc883('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x333f63,_0x1c8900,_0x5945d9){return new BPromise(function(_0x294d0f,_0x48df82){return client[_0xc883('0xa')](_0x333f63,_0x5945d9)['then'](function(_0x4ddbe6){logger[_0xc883('0xb')](_0xc883('0xc'),_0x1c8900,_0xc883('0xd'));logger['debug']('Setting,\x20%s,\x20%s,\x20%s',_0x1c8900,_0xc883('0xd'),JSON[_0xc883('0xe')](_0x4ddbe6));if(_0x4ddbe6['error']){if(_0x4ddbe6[_0xc883('0xf')][_0xc883('0x10')]===0x1f4){logger[_0xc883('0xf')](_0xc883('0xc'),_0x1c8900,_0x4ddbe6['error'][_0xc883('0x11')]);return _0x48df82(_0x4ddbe6[_0xc883('0xf')]['message']);}logger['error'](_0xc883('0xc'),_0x1c8900,_0x4ddbe6[_0xc883('0xf')][_0xc883('0x11')]);return _0x294d0f(_0x4ddbe6[_0xc883('0xf')][_0xc883('0x11')]);}else{logger[_0xc883('0xb')](_0xc883('0xc'),_0x1c8900,_0xc883('0xd'));_0x294d0f(_0x4ddbe6[_0xc883('0x12')][_0xc883('0x11')]);}})['catch'](function(_0x471efe){logger[_0xc883('0xf')](_0xc883('0xc'),_0x1c8900,_0x471efe);_0x48df82(_0x471efe);});});}exports[_0xc883('0x13')]=function(_0x253d35){var _0x2d71ef=this;return new Promise(function(_0x509648,_0x23df25){return db[_0xc883('0x14')][_0xc883('0x15')]({'raw':_0x253d35[_0xc883('0x16')]?_0x253d35[_0xc883('0x16')][_0xc883('0x17')]===undefined?!![]:![]:!![],'where':_0x253d35[_0xc883('0x16')]?_0x253d35[_0xc883('0x16')][_0xc883('0x18')]||null:null,'attributes':_0x253d35[_0xc883('0x16')]?_0x253d35[_0xc883('0x16')][_0xc883('0x19')]||null:null,'include':_0x253d35[_0xc883('0x16')]?_0x253d35['options']['include']?_[_0xc883('0x1a')](_0x253d35[_0xc883('0x16')][_0xc883('0x1b')],function(_0x53b037){return{'model':db[_0x53b037[_0xc883('0x1c')]],'as':_0x53b037['as'],'attributes':_0x53b037[_0xc883('0x19')],'include':_0x53b037[_0xc883('0x1b')]?_['map'](_0x53b037[_0xc883('0x1b')],function(_0x3a19b5){return{'model':db[_0x3a19b5[_0xc883('0x1c')]],'as':_0x3a19b5['as'],'attributes':_0x3a19b5[_0xc883('0x19')],'include':_0x3a19b5[_0xc883('0x1b')]?_[_0xc883('0x1a')](_0x3a19b5['include'],function(_0xf9ccb2){return{'model':db[_0xf9ccb2['model']],'as':_0xf9ccb2['as'],'attributes':_0xf9ccb2[_0xc883('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x211d23){logger[_0xc883('0xb')](_0xc883('0x13'),_0x253d35);logger[_0xc883('0x1d')]('ShowSetting',_0x253d35,JSON[_0xc883('0xe')](_0x211d23));_0x509648(_0x211d23);})[_0xc883('0x1e')](function(_0x3b78b6){logger['error'](_0xc883('0x13'),_0x3b78b6[_0xc883('0x11')],_0x253d35);_0x23df25(_0x2d71ef[_0xc883('0xf')](0x1f4,_0x3b78b6['message']));});});};
\ No newline at end of file
+var _0xabb2=['code','message','result','ShowSetting','Setting','find','options','raw','where','attributes','map','include','model','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','error'];(function(_0x58e75f,_0x4f0a65){var _0x256f39=function(_0x449d59){while(--_0x449d59){_0x58e75f['push'](_0x58e75f['shift']());}};_0x256f39(++_0x4f0a65);}(_0xabb2,0x6e));var _0x2abb=function(_0x3e69ae,_0x366e8d){_0x3e69ae=_0x3e69ae-0x0;var _0x3d7f42=_0xabb2[_0x3e69ae];return _0x3d7f42;};'use strict';var _=require(_0x2abb('0x0'));var util=require(_0x2abb('0x1'));var moment=require(_0x2abb('0x2'));var BPromise=require(_0x2abb('0x3'));var rs=require(_0x2abb('0x4'));var fs=require('fs');var Redis=require(_0x2abb('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2abb('0x6'));var logger=require(_0x2abb('0x7'))(_0x2abb('0x8'));var config=require(_0x2abb('0x9'));var jayson=require(_0x2abb('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4f32d5,_0x341812,_0x42474e){return new BPromise(function(_0x424e91,_0x1b7964){return client['request'](_0x4f32d5,_0x42474e)[_0x2abb('0xb')](function(_0x4c7e35){logger[_0x2abb('0xc')](_0x2abb('0xd'),_0x341812,_0x2abb('0xe'));logger[_0x2abb('0xf')](_0x2abb('0x10'),_0x341812,_0x2abb('0xe'),JSON['stringify'](_0x4c7e35));if(_0x4c7e35['error']){if(_0x4c7e35[_0x2abb('0x11')][_0x2abb('0x12')]===0x1f4){logger[_0x2abb('0x11')](_0x2abb('0xd'),_0x341812,_0x4c7e35['error']['message']);return _0x1b7964(_0x4c7e35['error'][_0x2abb('0x13')]);}logger[_0x2abb('0x11')]('Setting,\x20%s,\x20%s',_0x341812,_0x4c7e35[_0x2abb('0x11')][_0x2abb('0x13')]);return _0x424e91(_0x4c7e35[_0x2abb('0x11')][_0x2abb('0x13')]);}else{logger[_0x2abb('0xc')](_0x2abb('0xd'),_0x341812,_0x2abb('0xe'));_0x424e91(_0x4c7e35[_0x2abb('0x14')][_0x2abb('0x13')]);}})['catch'](function(_0x54ded4){logger[_0x2abb('0x11')](_0x2abb('0xd'),_0x341812,_0x54ded4);_0x1b7964(_0x54ded4);});});}exports[_0x2abb('0x15')]=function(_0x5c3094){var _0x4fa39a=this;return new Promise(function(_0x637ce1,_0x218d50){return db[_0x2abb('0x16')][_0x2abb('0x17')]({'raw':_0x5c3094[_0x2abb('0x18')]?_0x5c3094[_0x2abb('0x18')][_0x2abb('0x19')]===undefined?!![]:![]:!![],'where':_0x5c3094[_0x2abb('0x18')]?_0x5c3094['options'][_0x2abb('0x1a')]||null:null,'attributes':_0x5c3094[_0x2abb('0x18')]?_0x5c3094[_0x2abb('0x18')][_0x2abb('0x1b')]||null:null,'include':_0x5c3094[_0x2abb('0x18')]?_0x5c3094[_0x2abb('0x18')]['include']?_[_0x2abb('0x1c')](_0x5c3094[_0x2abb('0x18')][_0x2abb('0x1d')],function(_0x503989){return{'model':db[_0x503989[_0x2abb('0x1e')]],'as':_0x503989['as'],'attributes':_0x503989[_0x2abb('0x1b')],'include':_0x503989[_0x2abb('0x1d')]?_[_0x2abb('0x1c')](_0x503989[_0x2abb('0x1d')],function(_0x287d4b){return{'model':db[_0x287d4b['model']],'as':_0x287d4b['as'],'attributes':_0x287d4b[_0x2abb('0x1b')],'include':_0x287d4b[_0x2abb('0x1d')]?_['map'](_0x287d4b[_0x2abb('0x1d')],function(_0x4f2280){return{'model':db[_0x4f2280[_0x2abb('0x1e')]],'as':_0x4f2280['as'],'attributes':_0x4f2280[_0x2abb('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x2abb('0xb')](function(_0x2628ef){logger[_0x2abb('0xc')](_0x2abb('0x15'),_0x5c3094);logger['debug'](_0x2abb('0x15'),_0x5c3094,JSON['stringify'](_0x2628ef));_0x637ce1(_0x2628ef);})[_0x2abb('0x1f')](function(_0x55dce4){logger[_0x2abb('0x11')](_0x2abb('0x15'),_0x55dce4[_0x2abb('0x13')],_0x5c3094);_0x218d50(_0x4fa39a['error'](0x1f4,_0x55dce4[_0x2abb('0x13')]));});});};
\ No newline at end of file
index f111c9f..a5777c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['send','status','update','delete','removeDispositions','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./smsAccount.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/applications','getApplications','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/send'];(function(_0x2524ef,_0x2709ef){var _0x39eba2=function(_0x28d3cc){while(--_0x28d3cc){_0x2524ef['push'](_0x2524ef['shift']());}};_0x39eba2(++_0x2709ef);}(_0x53ec,0x192));var _0xc53e=function(_0x43a939,_0x20c11a){_0x43a939=_0x43a939-0x0;var _0x8b5d30=_0x53ec[_0x43a939];return _0x8b5d30;};'use strict';var multer=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var path=require(_0xc53e('0x2'));var timeout=require(_0xc53e('0x3'));var express=require(_0xc53e('0x4'));var router=express[_0xc53e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc53e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc53e('0x7'));var controller=require(_0xc53e('0x8'));router['get']('/',auth[_0xc53e('0x9')](),controller['index']);router[_0xc53e('0xa')](_0xc53e('0xb'),auth['isAuthenticated'](),controller[_0xc53e('0xc')]);router[_0xc53e('0xa')](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0xe')]);router[_0xc53e('0xa')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x10')]);router['get']('/:id/canned_answers',auth[_0xc53e('0x9')](),controller['getAnswers']);router['get'](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x12')]);router[_0xc53e('0xa')]('/:id/interactions',auth['isAuthenticated'](),controller[_0xc53e('0x13')]);router[_0xc53e('0xa')](_0xc53e('0x14'),controller[_0xc53e('0x15')]);router[_0xc53e('0xa')](_0xc53e('0x16'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x17')]);router[_0xc53e('0x18')]('/',auth[_0xc53e('0x9')](),controller['create']);router[_0xc53e('0x18')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x19')]);router[_0xc53e('0x18')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1b')]);router[_0xc53e('0x18')]('/:id/notify',controller['notify']);router[_0xc53e('0x18')](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1c')]);router[_0xc53e('0x18')](_0xc53e('0x1d'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1e')]);router[_0xc53e('0x18')](_0xc53e('0x14'),controller[_0xc53e('0x1f')]);router[_0xc53e('0x18')](_0xc53e('0x16'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x20')]);router[_0xc53e('0x21')](_0xc53e('0xd'),auth['isAuthenticated'](),controller['destroy']);router[_0xc53e('0x21')]('/:id/dispositions',auth[_0xc53e('0x9')](),controller[_0xc53e('0x22')]);router[_0xc53e('0x21')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller['removeAnswers']);router[_0xc53e('0x21')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0xc53e('0x23')]=router;
\ No newline at end of file
+var _0x7fbe=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','post','create','/:id/notify','notify','put','delete','removeAnswers','path','connect-timeout','express'];(function(_0x485889,_0x3d8a94){var _0x15a66f=function(_0x23b577){while(--_0x23b577){_0x485889['push'](_0x485889['shift']());}};_0x15a66f(++_0x3d8a94);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x27d11f,_0x2c59a8){_0x27d11f=_0x27d11f-0x0;var _0x36c1a5=_0x7fbe[_0x27d11f];return _0x36c1a5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe7fb('0x0'));var timeout=require(_0xe7fb('0x1'));var express=require(_0xe7fb('0x2'));var router=express[_0xe7fb('0x3')]();var fs_extra=require(_0xe7fb('0x4'));var auth=require(_0xe7fb('0x5'));var interaction=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var controller=require(_0xe7fb('0x8'));router[_0xe7fb('0x9')]('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0xb')]);router[_0xe7fb('0x9')](_0xe7fb('0xc'),auth['isAuthenticated'](),controller[_0xe7fb('0xd')]);router[_0xe7fb('0x9')](_0xe7fb('0xe'),auth[_0xe7fb('0xa')](),controller['show']);router['get'](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x10')]);router[_0xe7fb('0x9')](_0xe7fb('0x11'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x12')]);router[_0xe7fb('0x9')](_0xe7fb('0x13'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x14')]);router[_0xe7fb('0x9')](_0xe7fb('0x15'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x16')]);router['get'](_0xe7fb('0x17'),controller[_0xe7fb('0x18')]);router['get'](_0xe7fb('0x19'),auth[_0xe7fb('0xa')](),controller['getAgents']);router[_0xe7fb('0x1a')]('/',auth['isAuthenticated'](),controller[_0xe7fb('0x1b')]);router[_0xe7fb('0x1a')](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller['addDisposition']);router[_0xe7fb('0x1a')]('/:id/canned_answers',auth[_0xe7fb('0xa')](),controller['addAnswer']);router[_0xe7fb('0x1a')](_0xe7fb('0x1c'),controller[_0xe7fb('0x1d')]);router[_0xe7fb('0x1a')]('/:id/applications',auth[_0xe7fb('0xa')](),controller['addApplications']);router[_0xe7fb('0x1a')]('/:id/send',auth[_0xe7fb('0xa')](),controller['send']);router[_0xe7fb('0x1a')](_0xe7fb('0x17'),controller['status']);router[_0xe7fb('0x1a')](_0xe7fb('0x19'),auth[_0xe7fb('0xa')](),controller['addAgents']);router[_0xe7fb('0x1e')](_0xe7fb('0xe'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xe7fb('0xe'),auth['isAuthenticated'](),controller['destroy']);router[_0xe7fb('0x1f')](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller['removeDispositions']);router[_0xe7fb('0x1f')](_0xe7fb('0x11'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x20')]);router[_0xe7fb('0x1f')](_0xe7fb('0x19'),auth[_0xe7fb('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 145ae33..b15780c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91f2=['randomstring','exports','name','STRING','generate','twilio','plivo','clickatell','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','setDataValue','mandatoryDispositionPauseId','sequelize'];(function(_0x3122b6,_0xcd42ae){var _0x1e88f5=function(_0x21aff0){while(--_0x21aff0){_0x3122b6['push'](_0x3122b6['shift']());}};_0x1e88f5(++_0xcd42ae);}(_0x91f2,0xef));var _0x291f=function(_0x6a46ab,_0xc46238){_0x6a46ab=_0x6a46ab-0x0;var _0x11301b=_0x91f2[_0x6a46ab];return _0x11301b;};'use strict';var Sequelize=require(_0x291f('0x0'));var rs=require(_0x291f('0x1'));module[_0x291f('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0x291f('0x3'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x291f('0x4')],'allowNull':![]},'token':{'type':Sequelize[_0x291f('0x4')],'defaultValue':function(){return rs[_0x291f('0x5')]();}},'phone':{'type':Sequelize[_0x291f('0x4')]},'type':{'type':Sequelize['ENUM'](_0x291f('0x6'),'skebby','connectel','clicksend',_0x291f('0x7'),_0x291f('0x8'),'bandwidth','csc',_0x291f('0x9'),_0x291f('0xa'))},'accountSid':{'type':Sequelize[_0x291f('0x4')]},'authId':{'type':Sequelize[_0x291f('0x4')]},'authToken':{'type':Sequelize[_0x291f('0x4')]},'smsMethod':{'type':Sequelize[_0x291f('0xb')]('SI','TI','GP')},'username':{'type':Sequelize[_0x291f('0x4')]},'password':{'type':Sequelize[_0x291f('0x4')]},'apiKey':{'type':Sequelize[_0x291f('0x4')]},'applicationId':{'type':Sequelize[_0x291f('0x4')]},'accountId':{'type':Sequelize[_0x291f('0x4')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x291f('0x4')]},'notificationTemplate':{'type':Sequelize[_0x291f('0xc')],'defaultValue':function(){return _0x291f('0xd');}},'notificationSound':{'type':Sequelize[_0x291f('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x291f('0xe')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x291f('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x291f('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x291f('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x291f('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x291f('0x4')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x291f('0xf')],'comment':_0x291f('0x10')},'mandatoryDisposition':{'type':Sequelize[_0x291f('0xe')],'defaultValue':![],'comment':_0x291f('0x11'),'set':function(_0x5b8948){if(!_0x5b8948)this[_0x291f('0x12')](_0x291f('0x13'),null);this[_0x291f('0x12')]('mandatoryDisposition',_0x5b8948);}}};
\ No newline at end of file
+var _0x9e2c=['randomstring','exports','STRING','name','generate','ENUM','twilio','connectel','plivo','clickatell','csc','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize'];(function(_0x725b8e,_0xc22b48){var _0x43ac45=function(_0x46bb4a){while(--_0x46bb4a){_0x725b8e['push'](_0x725b8e['shift']());}};_0x43ac45(++_0xc22b48);}(_0x9e2c,0xd7));var _0xc9e2=function(_0x525954,_0x5e38c6){_0x525954=_0x525954-0x0;var _0xe7289e=_0x9e2c[_0x525954];return _0xe7289e;};'use strict';var Sequelize=require(_0xc9e2('0x0'));var rs=require(_0xc9e2('0x1'));module[_0xc9e2('0x2')]={'name':{'type':Sequelize[_0xc9e2('0x3')],'unique':_0xc9e2('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0xc9e2('0x3')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0xc9e2('0x3')],'defaultValue':function(){return rs[_0xc9e2('0x5')]();}},'phone':{'type':Sequelize[_0xc9e2('0x3')]},'type':{'type':Sequelize[_0xc9e2('0x6')](_0xc9e2('0x7'),'skebby',_0xc9e2('0x8'),'clicksend',_0xc9e2('0x9'),_0xc9e2('0xa'),'bandwidth',_0xc9e2('0xb'),'infobip','intelepeer')},'accountSid':{'type':Sequelize[_0xc9e2('0x3')]},'authId':{'type':Sequelize[_0xc9e2('0x3')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0xc9e2('0x6')]('SI','TI','GP')},'username':{'type':Sequelize[_0xc9e2('0x3')]},'password':{'type':Sequelize[_0xc9e2('0x3')]},'apiKey':{'type':Sequelize[_0xc9e2('0x3')]},'applicationId':{'type':Sequelize[_0xc9e2('0x3')]},'accountId':{'type':Sequelize[_0xc9e2('0x3')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0xc9e2('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xc9e2('0xc');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xc9e2('0xd')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xc9e2('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xc9e2('0xd')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xc9e2('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xc9e2('0xd')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xc9e2('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xc9e2('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc9e2('0xe')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x492d0f){if(!_0x492d0f)this[_0xc9e2('0xf')](_0xc9e2('0x10'),null);this[_0xc9e2('0xf')](_0xc9e2('0x11'),_0x492d0f);}}};
\ No newline at end of file
index f376478..592dfef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xceb1=['pick','SmsAccountId','include','removeDispositions','ids','getAnswers','CannedAnswer','removeAnswers','notify','sms','SmsApplication','applications','orderBy','Applications','priority','asc','account','CmContact','difference','createdAt','updatedAt','ListId','mobile','from','From','Body','messageId','MessageSid','sender','text','connectel','clicksend','message_id','plivo','Text','MessageUUID','infobip','results','csc','originatingAddress','segmentedMessage','clickatell','bandwidth','intelepeer','refid','isNil','ValidationError','from\x20is\x20mandatory','Sequelize','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','Contacts','DESC','omit','contact','SmsInteraction','spread','interaction','created','push','unmanaged','*,*,*,*','SmsMessage','ContactId','AttachmentId','UserId','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','twilio','Content-Type','send','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','bulkCreate','getApplications','User','fullname','internal','Tag','Tags','tag','CmList','List','defaults','Messages','dataValues','received\x20delivery\x20report\x20from','inspect','skebby','skebby_dispatch_id','requestid','status_code','DELIVERED','groupName','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','statusGet','message-id','state','addAgents','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','emit','getAgents','eml-format','zip-dir','moment','bluebird','mustache','util','path','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','../../config/utils','../../config/environment','../../config/license/util','redis','socket.io-emitter','./smsAccount.socket','register','client','http','request','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','SmsAccount,\x20%s,\x20%s','info','result','catch','sendStatus','end','offset','limit','undefined','count','status','set','Content-Range','json','save','update','then','destroy','SmsAccounts','UserProfileResource','stack','name','index','Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','sort','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','describe','addDisposition','getDispositions','findOne','Disposition','hasOwnProperty','order'];(function(_0x49f44d,_0x27eca2){var _0x1a20e2=function(_0x1630c3){while(--_0x1630c3){_0x49f44d['push'](_0x49f44d['shift']());}};_0x1a20e2(++_0x27eca2);}(_0xceb1,0x155));var _0x1ceb=function(_0x358a95,_0x5127f8){_0x358a95=_0x358a95-0x0;var _0x399a49=_0xceb1[_0x358a95];return _0x399a49;};'use strict';var emlformat=require(_0x1ceb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1ceb('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1ceb('0x2'));var BPromise=require(_0x1ceb('0x3'));var Mustache=require(_0x1ceb('0x4'));var util=require(_0x1ceb('0x5'));var path=require(_0x1ceb('0x6'));var sox=require('sox');var csv=require(_0x1ceb('0x7'));var ejs=require(_0x1ceb('0x8'));var fs=require('fs');var fs_extra=require(_0x1ceb('0x9'));var _=require(_0x1ceb('0xa'));var squel=require(_0x1ceb('0xb'));var crypto=require(_0x1ceb('0xc'));var jsforce=require(_0x1ceb('0xd'));var deskjs=require(_0x1ceb('0xe'));var toCsv=require('to-csv');var querystring=require(_0x1ceb('0xf'));var Papa=require(_0x1ceb('0x10'));var Redis=require(_0x1ceb('0x11'));var authService=require(_0x1ceb('0x12'));var qs=require(_0x1ceb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1ceb('0x14'));var logger=require(_0x1ceb('0x15'))('api');var utils=require(_0x1ceb('0x16'));var config=require(_0x1ceb('0x17'));var licenseUtil=require(_0x1ceb('0x18'));var db=require('../../mysqldb')['db'];config[_0x1ceb('0x19')]=_['defaults'](config[_0x1ceb('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x1ceb('0x1a'))(new Redis(config[_0x1ceb('0x19')]));require(_0x1ceb('0x1b'))[_0x1ceb('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0x1ceb('0x1d')][_0x1ceb('0x1e')]({'port':0x232c});function respondWithRpcPromise(_0x132107,_0x388050,_0x1124fd,_0x105907){return new BPromise(function(_0x566723,_0xcb3bd0){var _0x4121f0=_0x105907||client;return _0x4121f0[_0x1ceb('0x1f')](_0x132107,_0x1124fd)['then'](function(_0xe727dc){logger['info']('SmsAccount,\x20%s,\x20%s',_0x388050,_0x1ceb('0x20'));logger[_0x1ceb('0x21')](_0x1ceb('0x22'),_0x388050,'request\x20sent',JSON[_0x1ceb('0x23')](_0xe727dc));if(_0xe727dc['error']){if(_0xe727dc['error'][_0x1ceb('0x24')]===0x1f4){logger['error']('SmsAccount,\x20%s,\x20%s',_0x388050,_0xe727dc[_0x1ceb('0x25')][_0x1ceb('0x26')]);return _0xcb3bd0(_0xe727dc['error']['message']);}logger[_0x1ceb('0x25')](_0x1ceb('0x27'),_0x388050,_0xe727dc[_0x1ceb('0x25')][_0x1ceb('0x26')]);return _0x566723(_0xe727dc['error'][_0x1ceb('0x26')]);}else{logger[_0x1ceb('0x28')](_0x1ceb('0x27'),_0x388050,'request\x20sent');_0x566723(_0xe727dc[_0x1ceb('0x29')][_0x1ceb('0x26')]);}})[_0x1ceb('0x2a')](function(_0x2da6d5){logger[_0x1ceb('0x25')](_0x1ceb('0x27'),_0x388050,_0x2da6d5);_0xcb3bd0(_0x2da6d5);});});}function respondWithStatusCode(_0x5d4327,_0x5bdaa2){_0x5bdaa2=_0x5bdaa2||0xcc;return function(_0x191e9c){if(_0x191e9c){return _0x5d4327[_0x1ceb('0x2b')](_0x5bdaa2);}return _0x5d4327['status'](_0x5bdaa2)[_0x1ceb('0x2c')]();};}function respondWithResult(_0x29849e,_0x3b5ed3){_0x3b5ed3=_0x3b5ed3||0xc8;return function(_0x660e86){if(_0x660e86){return _0x29849e['status'](_0x3b5ed3)['json'](_0x660e86);}};}function respondWithFilteredResult(_0x3a2ab7,_0x6bacf){return function(_0x58c62e){if(_0x58c62e){var _0x3cf283=typeof _0x6bacf[_0x1ceb('0x2d')]==='undefined'&&typeof _0x6bacf[_0x1ceb('0x2e')]===_0x1ceb('0x2f');var _0x5c85f4=_0x58c62e[_0x1ceb('0x30')];var _0x1088a6=_0x3cf283?0x0:_0x6bacf[_0x1ceb('0x2d')];var _0x37d814=_0x3cf283?_0x58c62e['count']:_0x6bacf[_0x1ceb('0x2d')]+_0x6bacf[_0x1ceb('0x2e')];var _0x21a072;if(_0x37d814>=_0x5c85f4){_0x37d814=_0x5c85f4;_0x21a072=0xc8;}else{_0x21a072=0xce;}_0x3a2ab7[_0x1ceb('0x31')](_0x21a072);return _0x3a2ab7[_0x1ceb('0x32')](_0x1ceb('0x33'),_0x1088a6+'-'+_0x37d814+'/'+_0x5c85f4)[_0x1ceb('0x34')](_0x58c62e);}return null;};}function patchUpdates(_0x5db92a){return function(_0x227f22){try{jsonpatch['apply'](_0x227f22,_0x5db92a,!![]);}catch(_0x4597ec){return BPromise['reject'](_0x4597ec);}return _0x227f22[_0x1ceb('0x35')]();};}function saveUpdates(_0x354a10,_0x56cfe7){return function(_0x100b39){if(_0x100b39){return _0x100b39[_0x1ceb('0x36')](_0x354a10)[_0x1ceb('0x37')](function(_0x3f59eb){return _0x3f59eb;});}return null;};}function removeEntity(_0x438105,_0x2f4630){return function(_0x110ec7){if(_0x110ec7){return _0x110ec7[_0x1ceb('0x38')]()['then'](function(){var _0x5518b5=_0x110ec7['get']({'plain':!![]});var _0x1ee5d0=_0x1ceb('0x39');return db[_0x1ceb('0x3a')][_0x1ceb('0x38')]({'where':{'type':_0x1ee5d0,'resourceId':_0x5518b5['id']}})['then'](function(){return _0x110ec7;});})['then'](function(){_0x438105[_0x1ceb('0x31')](0xcc)[_0x1ceb('0x2c')]();});}};}function handleEntityNotFound(_0x2136be,_0x223862){return function(_0x567abe){if(!_0x567abe){_0x2136be[_0x1ceb('0x2b')](0x194);}return _0x567abe;};}function handleError(_0x277d52,_0x7432a){_0x7432a=_0x7432a||0x1f4;return function(_0xfd3b4){logger[_0x1ceb('0x25')](_0xfd3b4[_0x1ceb('0x3b')]);if(_0xfd3b4[_0x1ceb('0x3c')]){delete _0xfd3b4[_0x1ceb('0x3c')];}_0x277d52[_0x1ceb('0x31')](_0x7432a)['send'](_0xfd3b4);};}exports[_0x1ceb('0x3d')]=function(_0x28ee03,_0x5755da){var _0x13a914={'include':[{'model':db[_0x1ceb('0x3e')],'as':_0x1ceb('0x3f')}]},_0x1c6af8={},_0xcc231a={'count':0x0,'rows':[]};var _0x4cd01e=_[_0x1ceb('0x40')](db[_0x1ceb('0x41')][_0x1ceb('0x42')],function(_0x4b7e1a){return{'name':_0x4b7e1a[_0x1ceb('0x43')],'type':_0x4b7e1a[_0x1ceb('0x44')][_0x1ceb('0x45')]};});_0x1c6af8[_0x1ceb('0x46')]=_['map'](_0x4cd01e,'name');_0x1c6af8['query']=_[_0x1ceb('0x47')](_0x28ee03[_0x1ceb('0x48')]);_0x1c6af8[_0x1ceb('0x49')]=_[_0x1ceb('0x4a')](_0x1c6af8[_0x1ceb('0x46')],_0x1c6af8[_0x1ceb('0x48')]);_0x13a914[_0x1ceb('0x4b')]=_[_0x1ceb('0x4a')](_0x1c6af8['model'],qs[_0x1ceb('0x4c')](_0x28ee03[_0x1ceb('0x48')]['fields']));_0x13a914[_0x1ceb('0x4b')]=_0x13a914[_0x1ceb('0x4b')][_0x1ceb('0x4d')]?_0x13a914[_0x1ceb('0x4b')]:_0x1c6af8['model'];if(!_0x28ee03['query']['hasOwnProperty'](_0x1ceb('0x4e'))){_0x13a914[_0x1ceb('0x2e')]=qs[_0x1ceb('0x2e')](_0x28ee03['query']['limit']);_0x13a914['offset']=qs[_0x1ceb('0x2d')](_0x28ee03[_0x1ceb('0x48')][_0x1ceb('0x2d')]);}_0x13a914['order']=qs[_0x1ceb('0x4f')](_0x28ee03[_0x1ceb('0x48')][_0x1ceb('0x4f')]);_0x13a914['where']=qs[_0x1ceb('0x49')](_['pick'](_0x28ee03[_0x1ceb('0x48')],_0x1c6af8[_0x1ceb('0x49')]),_0x4cd01e);if(_0x28ee03['query'][_0x1ceb('0x50')]){_0x13a914[_0x1ceb('0x51')]=_[_0x1ceb('0x52')](_0x13a914[_0x1ceb('0x51')],{'$or':_[_0x1ceb('0x40')](_0x4cd01e,function(_0x567ec4){if(_0x567ec4[_0x1ceb('0x44')]!==_0x1ceb('0x53')){var _0x166bc4={};_0x166bc4[_0x567ec4[_0x1ceb('0x3c')]]={'$like':'%'+_0x28ee03[_0x1ceb('0x48')]['filter']+'%'};return _0x166bc4;}})});}_0x13a914=_[_0x1ceb('0x52')]({},_0x13a914,_0x28ee03[_0x1ceb('0x54')]);var _0x4c0391={'where':_0x13a914['where']};return db[_0x1ceb('0x41')]['count'](_0x4c0391)[_0x1ceb('0x37')](function(_0xbd282d){_0xcc231a['count']=_0xbd282d;if(_0x28ee03[_0x1ceb('0x48')][_0x1ceb('0x55')]){_0x13a914['include']=[{'all':!![]}];}return db[_0x1ceb('0x41')][_0x1ceb('0x56')](_0x13a914);})[_0x1ceb('0x37')](function(_0x309b7a){_0xcc231a[_0x1ceb('0x57')]=_0x309b7a;return _0xcc231a;})[_0x1ceb('0x37')](respondWithFilteredResult(_0x5755da,_0x13a914))[_0x1ceb('0x2a')](handleError(_0x5755da,null));};exports[_0x1ceb('0x58')]=function(_0x532dbe,_0xbf2cea){var _0x43a1af={'raw':![],'where':{'id':_0x532dbe[_0x1ceb('0x59')]['id']},'include':[{'model':db['Pause'],'as':_0x1ceb('0x3f')}]},_0x1e90e0={};_0x1e90e0[_0x1ceb('0x46')]=_[_0x1ceb('0x47')](db[_0x1ceb('0x41')][_0x1ceb('0x42')]);_0x1e90e0[_0x1ceb('0x48')]=_['keys'](_0x532dbe[_0x1ceb('0x48')]);_0x1e90e0['filters']=_[_0x1ceb('0x4a')](_0x1e90e0[_0x1ceb('0x46')],_0x1e90e0[_0x1ceb('0x48')]);_0x43a1af[_0x1ceb('0x4b')]=_[_0x1ceb('0x4a')](_0x1e90e0[_0x1ceb('0x46')],qs[_0x1ceb('0x4c')](_0x532dbe[_0x1ceb('0x48')][_0x1ceb('0x4c')]));_0x43a1af[_0x1ceb('0x4b')]=_0x43a1af[_0x1ceb('0x4b')][_0x1ceb('0x4d')]?_0x43a1af[_0x1ceb('0x4b')]:_0x1e90e0[_0x1ceb('0x46')];if(_0x532dbe[_0x1ceb('0x48')][_0x1ceb('0x55')]){_0x43a1af['include']=[{'all':!![]}];}_0x43a1af=_[_0x1ceb('0x52')]({},_0x43a1af,_0x532dbe[_0x1ceb('0x54')]);return db[_0x1ceb('0x41')][_0x1ceb('0x5a')](_0x43a1af)[_0x1ceb('0x37')](handleEntityNotFound(_0xbf2cea,null))[_0x1ceb('0x37')](respondWithResult(_0xbf2cea,null))[_0x1ceb('0x2a')](handleError(_0xbf2cea,null));};exports['create']=function(_0x74b686,_0x599d14){return db['SmsAccount'][_0x1ceb('0x5b')](_0x74b686[_0x1ceb('0x5c')],{})[_0x1ceb('0x37')](function(_0x4693af){var _0x748d9e=_0x74b686['user'][_0x1ceb('0x5d')]({'plain':!![]});if(!_0x748d9e)throw new Error(_0x1ceb('0x5e'));if(_0x748d9e['role']===_0x1ceb('0x5f')){var _0x44dfda=_0x4693af[_0x1ceb('0x5d')]({'plain':!![]});var _0xd1f1ba=_0x1ceb('0x39');return db[_0x1ceb('0x60')][_0x1ceb('0x5a')]({'where':{'name':_0xd1f1ba,'userProfileId':_0x748d9e['userProfileId']},'raw':!![]})[_0x1ceb('0x37')](function(_0x22bd88){if(_0x22bd88&&_0x22bd88[_0x1ceb('0x61')]===0x0){return db[_0x1ceb('0x3a')]['create']({'name':_0x44dfda[_0x1ceb('0x3c')],'resourceId':_0x44dfda['id'],'type':_0x22bd88[_0x1ceb('0x3c')],'sectionId':_0x22bd88['id']},{})[_0x1ceb('0x37')](function(){return _0x4693af;});}else{return _0x4693af;}})[_0x1ceb('0x2a')](function(_0x4de039){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4de039);throw _0x4de039;});}return _0x4693af;})[_0x1ceb('0x37')](respondWithResult(_0x599d14,0xc9))[_0x1ceb('0x2a')](handleError(_0x599d14,null));};exports[_0x1ceb('0x36')]=function(_0x341c8d,_0x5c912e){if(_0x341c8d[_0x1ceb('0x5c')]['id']){delete _0x341c8d[_0x1ceb('0x5c')]['id'];}return db[_0x1ceb('0x41')]['find']({'where':{'id':_0x341c8d[_0x1ceb('0x59')]['id']},'include':[{'model':db[_0x1ceb('0x3e')],'as':_0x1ceb('0x3f')}]})['then'](handleEntityNotFound(_0x5c912e,null))[_0x1ceb('0x37')](saveUpdates(_0x341c8d[_0x1ceb('0x5c')],null))['then'](respondWithResult(_0x5c912e,null))[_0x1ceb('0x2a')](handleError(_0x5c912e,null));};exports[_0x1ceb('0x38')]=function(_0x5bfb4c,_0x1f4ff3){return db[_0x1ceb('0x41')][_0x1ceb('0x5a')]({'where':{'id':_0x5bfb4c[_0x1ceb('0x59')]['id']}})['then'](handleEntityNotFound(_0x1f4ff3,null))['then'](removeEntity(_0x1f4ff3,null))[_0x1ceb('0x2a')](handleError(_0x1f4ff3,null));};exports[_0x1ceb('0x62')]=function(_0x42a7cf,_0xe32b1d){return db['SmsAccount'][_0x1ceb('0x62')]()[_0x1ceb('0x37')](respondWithResult(_0xe32b1d,null))[_0x1ceb('0x2a')](handleError(_0xe32b1d,null));};exports[_0x1ceb('0x63')]=function(_0x2abca8,_0x1531ce,_0xb41f13){if(_0x2abca8['body']['id']){delete _0x2abca8[_0x1ceb('0x5c')]['id'];}return db[_0x1ceb('0x41')][_0x1ceb('0x5a')]({'where':{'id':_0x2abca8[_0x1ceb('0x59')]['id']}})[_0x1ceb('0x37')](handleEntityNotFound(_0x1531ce,null))[_0x1ceb('0x37')](function(_0x3cb5d0){if(_0x3cb5d0){_0x2abca8['body']['SmsAccountId']=_0x3cb5d0['id'];return db['Disposition'][_0x1ceb('0x5b')](_0x2abca8[_0x1ceb('0x5c')]);}})[_0x1ceb('0x37')](respondWithResult(_0x1531ce,null))[_0x1ceb('0x2a')](handleError(_0x1531ce,null));};exports[_0x1ceb('0x64')]=function(_0x53c043,_0x2657df,_0xea7e0a){var _0x3095e4={'raw':![],'where':{}};var _0xce83a6={};var _0x1b1793={'count':0x0,'rows':[]};return db[_0x1ceb('0x41')][_0x1ceb('0x65')]({'where':{'id':_0x53c043[_0x1ceb('0x59')]['id']}})[_0x1ceb('0x37')](handleEntityNotFound(_0x2657df,null))[_0x1ceb('0x37')](function(_0x408c6d){if(_0x408c6d){_0xce83a6['model']=_[_0x1ceb('0x47')](db[_0x1ceb('0x66')][_0x1ceb('0x42')]);_0xce83a6[_0x1ceb('0x48')]=_[_0x1ceb('0x47')](_0x53c043['query']);_0xce83a6[_0x1ceb('0x49')]=_[_0x1ceb('0x4a')](_0xce83a6[_0x1ceb('0x46')],_0xce83a6[_0x1ceb('0x48')]);_0x3095e4[_0x1ceb('0x4b')]=_[_0x1ceb('0x4a')](_0xce83a6[_0x1ceb('0x46')],qs[_0x1ceb('0x4c')](_0x53c043[_0x1ceb('0x48')]['fields']));_0x3095e4[_0x1ceb('0x4b')]=_0x3095e4[_0x1ceb('0x4b')][_0x1ceb('0x4d')]?_0x3095e4['attributes']:_0xce83a6['model'];if(!_0x53c043['query'][_0x1ceb('0x67')]('nolimit')){_0x3095e4[_0x1ceb('0x2e')]=qs[_0x1ceb('0x2e')](_0x53c043[_0x1ceb('0x48')][_0x1ceb('0x2e')]);_0x3095e4[_0x1ceb('0x2d')]=qs[_0x1ceb('0x2d')](_0x53c043[_0x1ceb('0x48')][_0x1ceb('0x2d')]);}_0x3095e4[_0x1ceb('0x68')]=qs['sort'](_0x53c043[_0x1ceb('0x48')][_0x1ceb('0x4f')]);_0x3095e4[_0x1ceb('0x51')]=qs[_0x1ceb('0x49')](_[_0x1ceb('0x69')](_0x53c043[_0x1ceb('0x48')],_0xce83a6['filters']));_0x3095e4['where'][_0x1ceb('0x6a')]=_0x408c6d['id'];if(_0x53c043[_0x1ceb('0x48')][_0x1ceb('0x50')]){_0x3095e4[_0x1ceb('0x51')]=_[_0x1ceb('0x52')](_0x3095e4[_0x1ceb('0x51')],{'$or':_[_0x1ceb('0x40')](_0x3095e4['attributes'],function(_0x1080c0){var _0x264203={};_0x264203[_0x1080c0]={'$like':'%'+_0x53c043[_0x1ceb('0x48')][_0x1ceb('0x50')]+'%'};return _0x264203;})});}_0x3095e4=_['merge']({},_0x3095e4,_0x53c043[_0x1ceb('0x54')]);return db[_0x1ceb('0x66')]['count']({'where':_0x3095e4[_0x1ceb('0x51')]})['then'](function(_0x565d46){_0x1b1793['count']=_0x565d46;if(_0x53c043[_0x1ceb('0x48')]['includeAll']){_0x3095e4[_0x1ceb('0x6b')]=[{'all':!![]}];}return db['Disposition'][_0x1ceb('0x56')](_0x3095e4);})[_0x1ceb('0x37')](function(_0x49d074){_0x1b1793['rows']=_0x49d074;return _0x1b1793;});}})[_0x1ceb('0x37')](respondWithFilteredResult(_0x2657df,_0x3095e4))['catch'](handleError(_0x2657df,null));};exports[_0x1ceb('0x6c')]=function(_0x53c0ab,_0x3e4fab,_0x1f3372){return db[_0x1ceb('0x41')]['find']({'where':{'id':_0x53c0ab['params']['id']}})[_0x1ceb('0x37')](handleEntityNotFound(_0x3e4fab,null))[_0x1ceb('0x37')](function(_0x438e21){if(_0x438e21){return _0x438e21['removeDispositions'](_0x53c0ab[_0x1ceb('0x48')][_0x1ceb('0x6d')]);}})['then'](respondWithStatusCode(_0x3e4fab,null))['catch'](handleError(_0x3e4fab,null));};exports['addAnswer']=function(_0x2dc775,_0x5117a3,_0x4205d9){if(_0x2dc775[_0x1ceb('0x5c')]['id']){delete _0x2dc775[_0x1ceb('0x5c')]['id'];}return db['SmsAccount'][_0x1ceb('0x5a')]({'where':{'id':_0x2dc775[_0x1ceb('0x59')]['id']}})[_0x1ceb('0x37')](handleEntityNotFound(_0x5117a3,null))[_0x1ceb('0x37')](function(_0x10ae6d){if(_0x10ae6d){_0x2dc775[_0x1ceb('0x5c')][_0x1ceb('0x6a')]=_0x10ae6d['id'];return db['CannedAnswer'][_0x1ceb('0x5b')](_0x2dc775[_0x1ceb('0x5c')]);}})['then'](respondWithResult(_0x5117a3,null))[_0x1ceb('0x2a')](handleError(_0x5117a3,null));};exports[_0x1ceb('0x6e')]=function(_0x35d089,_0x116329,_0x322170){var _0x16f997={'raw':![],'where':{}};var _0x5391cf={};var _0x58d6d1={'count':0x0,'rows':[]};return db[_0x1ceb('0x41')]['findOne']({'where':{'id':_0x35d089[_0x1ceb('0x59')]['id']}})[_0x1ceb('0x37')](handleEntityNotFound(_0x116329,null))[_0x1ceb('0x37')](function(_0x35a404){if(_0x35a404){_0x5391cf['model']=_[_0x1ceb('0x47')](db[_0x1ceb('0x6f')][_0x1ceb('0x42')]);_0x5391cf['query']=_[_0x1ceb('0x47')](_0x35d089[_0x1ceb('0x48')]);_0x5391cf[_0x1ceb('0x49')]=_[_0x1ceb('0x4a')](_0x5391cf[_0x1ceb('0x46')],_0x5391cf[_0x1ceb('0x48')]);_0x16f997[_0x1ceb('0x4b')]=_[_0x1ceb('0x4a')](_0x5391cf[_0x1ceb('0x46')],qs['fields'](_0x35d089[_0x1ceb('0x48')]['fields']));_0x16f997[_0x1ceb('0x4b')]=_0x16f997[_0x1ceb('0x4b')]['length']?_0x16f997[_0x1ceb('0x4b')]:_0x5391cf[_0x1ceb('0x46')];if(!_0x35d089['query'][_0x1ceb('0x67')]('nolimit')){_0x16f997[_0x1ceb('0x2e')]=qs[_0x1ceb('0x2e')](_0x35d089[_0x1ceb('0x48')][_0x1ceb('0x2e')]);_0x16f997[_0x1ceb('0x2d')]=qs[_0x1ceb('0x2d')](_0x35d089['query'][_0x1ceb('0x2d')]);}_0x16f997[_0x1ceb('0x68')]=qs[_0x1ceb('0x4f')](_0x35d089[_0x1ceb('0x48')][_0x1ceb('0x4f')]);_0x16f997[_0x1ceb('0x51')]=qs[_0x1ceb('0x49')](_[_0x1ceb('0x69')](_0x35d089[_0x1ceb('0x48')],_0x5391cf[_0x1ceb('0x49')]));_0x16f997[_0x1ceb('0x51')][_0x1ceb('0x6a')]=_0x35a404['id'];if(_0x35d089['query'][_0x1ceb('0x50')]){_0x16f997[_0x1ceb('0x51')]=_[_0x1ceb('0x52')](_0x16f997['where'],{'$or':_[_0x1ceb('0x40')](_0x16f997[_0x1ceb('0x4b')],function(_0x5915e0){var _0xdd1dab={};_0xdd1dab[_0x5915e0]={'$like':'%'+_0x35d089[_0x1ceb('0x48')]['filter']+'%'};return _0xdd1dab;})});}_0x16f997=_[_0x1ceb('0x52')]({},_0x16f997,_0x35d089[_0x1ceb('0x54')]);return db[_0x1ceb('0x6f')][_0x1ceb('0x30')]({'where':_0x16f997[_0x1ceb('0x51')]})[_0x1ceb('0x37')](function(_0x582189){_0x58d6d1[_0x1ceb('0x30')]=_0x582189;if(_0x35d089[_0x1ceb('0x48')][_0x1ceb('0x55')]){_0x16f997[_0x1ceb('0x6b')]=[{'all':!![]}];}return db['CannedAnswer'][_0x1ceb('0x56')](_0x16f997);})[_0x1ceb('0x37')](function(_0x24b747){_0x58d6d1[_0x1ceb('0x57')]=_0x24b747;return _0x58d6d1;});}})['then'](respondWithFilteredResult(_0x116329,_0x16f997))[_0x1ceb('0x2a')](handleError(_0x116329,null));};exports['removeAnswers']=function(_0x383157,_0xcd3ea6,_0x3da2f8){return db['SmsAccount']['find']({'where':{'id':_0x383157[_0x1ceb('0x59')]['id']}})[_0x1ceb('0x37')](handleEntityNotFound(_0xcd3ea6,null))[_0x1ceb('0x37')](function(_0x335fe5){if(_0x335fe5){return _0x335fe5[_0x1ceb('0x70')](_0x383157['query'][_0x1ceb('0x6d')]);}})[_0x1ceb('0x37')](respondWithStatusCode(_0xcd3ea6,null))[_0x1ceb('0x2a')](handleError(_0xcd3ea6,null));};exports[_0x1ceb('0x71')]=function(_0x13014b,_0x16a338,_0x5246e5){var _0x3bda32={'channel':_0x1ceb('0x72')};var _0x37cdbf=[];var _0x1e68f2=[];var _0x3369f1={};return db[_0x1ceb('0x41')]['find']({'where':{'id':_0x13014b[_0x1ceb('0x59')]['id']},'include':[{'model':db[_0x1ceb('0x73')],'as':'Applications'}]})[_0x1ceb('0x37')](handleEntityNotFound(_0x16a338,null))[_0x1ceb('0x37')](function(_0x458a7b){_0x3bda32['account']=_0x458a7b;_0x3bda32[_0x1ceb('0x74')]=_[_0x1ceb('0x75')](_0x458a7b[_0x1ceb('0x76')],[_0x1ceb('0x77')],[_0x1ceb('0x78')]);if(_0x3bda32['account']['Applications']){delete _0x3bda32[_0x1ceb('0x79')][_0x1ceb('0x76')];}return db[_0x1ceb('0x7a')][_0x1ceb('0x62')]();})[_0x1ceb('0x37')](function(_0x2f7da3){if(!_0x2f7da3){throw new db['Sequelize']['ValidationError']('no\x20available\x20attributes');}_0x37cdbf=_[_0x1ceb('0x7b')](_['keys'](_0x2f7da3),[_0x1ceb('0x7c'),_0x1ceb('0x7d')]);_0x1e68f2=_['difference'](_[_0x1ceb('0x47')](_0x2f7da3),[_0x1ceb('0x7c'),_0x1ceb('0x7d'),'CompanyId',_0x1ceb('0x7e')]);_0x3bda32[_0x1ceb('0x5c')]={'mapKey':_0x1ceb('0x7f')};if(_0x3bda32[_0x1ceb('0x79')]['type']){switch(_0x3bda32[_0x1ceb('0x79')][_0x1ceb('0x44')]){case'twilio':_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x80')]=_0x13014b[_0x1ceb('0x5c')][_0x1ceb('0x81')];_0x3bda32[_0x1ceb('0x5c')]['body']=_0x13014b[_0x1ceb('0x5c')][_0x1ceb('0x82')];_0x3bda32['body'][_0x1ceb('0x83')]=_0x13014b[_0x1ceb('0x5c')][_0x1ceb('0x84')];break;case'skebby':_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x80')]='+'+_0x13014b[_0x1ceb('0x5c')][_0x1ceb('0x85')];_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x5c')]=_0x13014b['body'][_0x1ceb('0x86')];break;case _0x1ceb('0x87'):_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x80')]=_0x13014b['body']['from'];_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x5c')]=_0x13014b[_0x1ceb('0x5c')]['message'];break;case _0x1ceb('0x88'):_0x3bda32[_0x1ceb('0x5c')]['from']=_0x13014b[_0x1ceb('0x5c')][_0x1ceb('0x80')];_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x5c')]=_0x13014b[_0x1ceb('0x5c')][_0x1ceb('0x5c')];_0x3bda32['body'][_0x1ceb('0x83')]=_0x13014b[_0x1ceb('0x5c')][_0x1ceb('0x89')];break;case _0x1ceb('0x8a'):_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x80')]=_0x13014b[_0x1ceb('0x5c')]['From'];_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x5c')]=_0x13014b[_0x1ceb('0x5c')][_0x1ceb('0x8b')];_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x83')]=_0x13014b[_0x1ceb('0x5c')][_0x1ceb('0x8c')];break;case _0x1ceb('0x8d'):_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x80')]='+'+_0x13014b[_0x1ceb('0x5c')]['results'][0x0][_0x1ceb('0x80')];_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x5c')]=_0x13014b[_0x1ceb('0x5c')]['results'][0x0][_0x1ceb('0x86')];_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x83')]=_0x13014b[_0x1ceb('0x5c')][_0x1ceb('0x8e')][0x0][_0x1ceb('0x83')];break;case _0x1ceb('0x8f'):_0x3bda32[_0x1ceb('0x5c')]['from']=_0x13014b[_0x1ceb('0x5c')][_0x1ceb('0x90')];_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x5c')]=_0x13014b[_0x1ceb('0x5c')][_0x1ceb('0x91')][_0x1ceb('0x26')];break;case _0x1ceb('0x92'):_0x3bda32[_0x1ceb('0x5c')]['from']=_0x13014b[_0x1ceb('0x5c')]['fromNumber'];_0x3bda32['body'][_0x1ceb('0x5c')]=_0x13014b[_0x1ceb('0x5c')][_0x1ceb('0x86')];_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x83')]=_0x13014b[_0x1ceb('0x5c')]['replyMessageId'];break;case _0x1ceb('0x93'):_0x3bda32['body'][_0x1ceb('0x83')]=_0x13014b[_0x1ceb('0x5c')][0x0][_0x1ceb('0x26')]['id'];_0x3bda32['body'][_0x1ceb('0x80')]=_0x13014b['body'][0x0][_0x1ceb('0x26')][_0x1ceb('0x80')];_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x5c')]=_0x13014b[_0x1ceb('0x5c')][0x0][_0x1ceb('0x26')][_0x1ceb('0x86')];break;case _0x1ceb('0x94'):_0x3bda32['body'][_0x1ceb('0x80')]=_0x13014b[_0x1ceb('0x5c')][_0x1ceb('0x80')];_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x5c')]=_0x13014b[_0x1ceb('0x5c')][_0x1ceb('0x26')];_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x83')]=_0x13014b['body'][_0x1ceb('0x95')];break;}}if(_0x3bda32['body']['id']){delete _0x3bda32[_0x1ceb('0x5c')]['id'];}if(_[_0x1ceb('0x96')](_0x3bda32['body'][_0x1ceb('0x80')])){throw new db['Sequelize'][(_0x1ceb('0x97'))](_0x1ceb('0x98'));}if(_[_0x1ceb('0x96')](_0x3bda32['body'][_0x1ceb('0x5c')])||_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x5c')]===''){throw new db[(_0x1ceb('0x99'))]['ValidationError'](_0x1ceb('0x9a'));}if(_['isNil'](_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x9b')])){throw new db[(_0x1ceb('0x99'))][(_0x1ceb('0x97'))](_0x1ceb('0x9c')+_0x1e68f2);}if(!_[_0x1ceb('0x9d')](_0x1e68f2,_0x3bda32['body']['mapKey'])){throw new db['Sequelize']['ValidationError'](_0x1ceb('0x9e')+_0x1e68f2);}_0x3369f1[_0x3bda32[_0x1ceb('0x5c')]['mapKey']]=_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x80')];return db['CmList'][_0x1ceb('0x5a')]({'where':{'id':_0x3bda32[_0x1ceb('0x79')][_0x1ceb('0x7e')]},'include':[{'model':db[_0x1ceb('0x7a')],'as':_0x1ceb('0x9f'),'where':_0x3369f1,'limit':0x1,'order':[[_0x1ceb('0x7d'),_0x1ceb('0xa0')]]}]});})[_0x1ceb('0x37')](handleEntityNotFound(_0x16a338,null))[_0x1ceb('0x37')](function(_0x115111){if(_0x115111){_0x3bda32['list']=_[_0x1ceb('0xa1')](_0x115111,[_0x1ceb('0x9f')]);if(_0x115111[_0x1ceb('0x9f')]['length']){return _0x115111['Contacts'][0x0];}var _0x532a8b=_['defaults'](_0x3bda32['body'],{'firstName':_0x3bda32['body'][_0x1ceb('0x80')],'ListId':_0x115111['id']});_0x532a8b[_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x9b')]]=_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x80')];return db['CmContact'][_0x1ceb('0x5b')](_0x532a8b,{'fields':_0x37cdbf,'raw':!![]});}})[_0x1ceb('0x37')](handleEntityNotFound(_0x16a338,null))['then'](function(_0x2ad3b0){if(_0x2ad3b0){_0x3bda32[_0x1ceb('0xa2')]=_0x2ad3b0;var _0x47f70c={'ContactId':_0x2ad3b0['id'],'phone':_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x80')],'SmsAccountId':_0x13014b[_0x1ceb('0x59')]['id']};var _0x3463f5={'ContactId':_0x2ad3b0['id'],'SmsAccountId':_0x13014b['params']['id'],'closed':![]};return db[_0x1ceb('0xa3')][_0x1ceb('0x5a')]({'where':_0x3463f5})[_0x1ceb('0x37')](function(_0x11ef52){if(_0x11ef52){return[_0x11ef52,![]];}return db[_0x1ceb('0xa3')][_0x1ceb('0x5b')](_0x47f70c)['then'](function(_0x56b652){return[_0x56b652,!![]];});});}})[_0x1ceb('0xa4')](function(_0x7b4b82,_0x3cbfda){_0x3bda32['interaction']=_0x7b4b82[_0x1ceb('0x5d')]({'plain':!![]});_0x3bda32[_0x1ceb('0xa5')][_0x1ceb('0xa6')]=![];if(_0x3cbfda){if(_0x3bda32[_0x1ceb('0x79')]['autoclose']){_0x3bda32[_0x1ceb('0x74')][_0x1ceb('0xa7')]({'id':0x0,'priority':_0x3bda32['applications'][_0x1ceb('0x4d')]+0x1,'app':'close','appdata':_0x1ceb('0xa8'),'interval':_0x1ceb('0xa9')});}_0x3bda32[_0x1ceb('0xa5')]['created']=!![];}return db[_0x1ceb('0xaa')][_0x1ceb('0x5b')]({'phone':_0x3bda32[_0x1ceb('0x5c')]['from'],'messageId':_0x3bda32['body'][_0x1ceb('0x83')],'body':_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0x5c')],'SmsAccountId':_0x13014b[_0x1ceb('0x59')]['id'],'SmsInteractionId':_0x7b4b82['id'],'direction':'in','ContactId':_0x7b4b82[_0x1ceb('0xab')],'AttachmentId':_0x3bda32[_0x1ceb('0x5c')][_0x1ceb('0xac')]});})['then'](function(_0x2bd017){_0x3bda32[_0x1ceb('0x26')]=_0x2bd017;if(_0x3bda32[_0x1ceb('0xa5')]['UserId']){return db['User']['find']({'attributes':['id',_0x1ceb('0x3c')],'where':{'id':_0x3bda32[_0x1ceb('0xa5')][_0x1ceb('0xad')]}})['then'](function(_0x52eeb9){if(_0x52eeb9){_0x3bda32[_0x1ceb('0x74')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x52eeb9[_0x1ceb('0x3c')]+','+(_0x3bda32[_0x1ceb('0x79')][_0x1ceb('0xae')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x1ceb('0xaf'),'startRouting',_0x3bda32);});}return respondWithRpcPromise(_0x1ceb('0xaf'),_0x1ceb('0xb0'),_0x3bda32);})['then'](function(_0x52ba7d){if(_0x52ba7d){var _0x1ad19d=0xc8;var _0x40414f=_0x1ceb('0xb1');logger[_0x1ceb('0x28')](_0x1ceb('0x22'),_0x40414f,_0x1ad19d,_0x1ceb('0xb2'));logger[_0x1ceb('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x40414f,_0x1ad19d,_0x1ceb('0xb2'),JSON[_0x1ceb('0x23')](_0x52ba7d));if(_0x3bda32[_0x1ceb('0x79')][_0x1ceb('0x44')]===_0x1ceb('0xb3')){return _0x16a338[_0x1ceb('0x31')](_0x1ad19d)['set'](_0x1ceb('0xb4'),'text/xml')[_0x1ceb('0xb5')](_0x1ceb('0xb6'));}else{return _0x16a338['status'](_0x1ad19d)[_0x1ceb('0x34')](_0x52ba7d);}}})[_0x1ceb('0x2a')](handleError(_0x16a338,null));};exports[_0x1ceb('0xb7')]=function(_0x484eaf,_0x2efdb6,_0x32b0c7){return db[_0x1ceb('0x41')]['findOne']({'where':{'id':_0x484eaf[_0x1ceb('0x59')]['id']}})[_0x1ceb('0x37')](handleEntityNotFound(_0x2efdb6,null))[_0x1ceb('0x37')](function(_0x3d16d2){if(_0x3d16d2){return db[_0x1ceb('0xb8')][_0x1ceb('0xb9')](function(_0x2e5adc){return db['SmsApplication']['destroy']({'where':{'SmsAccountId':_0x484eaf[_0x1ceb('0x59')]['id']},'transaction':_0x2e5adc})[_0x1ceb('0x37')](function(_0x4dea03){var _0x368758=_[_0x1ceb('0x40')](_0x484eaf[_0x1ceb('0x5c')],function(_0xc504c2){_0xc504c2[_0x1ceb('0x6a')]=_0x484eaf['params']['id'];return _0xc504c2;});return db['SmsApplication'][_0x1ceb('0xba')](_0x368758,{'transaction':_0x2e5adc});});})[_0x1ceb('0x37')](function(){return db['SmsApplication']['findAndCountAll']({'where':{'SmsAccountId':_0x484eaf[_0x1ceb('0x59')]['id']},'order':_0x1ceb('0x77')});});}})[_0x1ceb('0x37')](respondWithResult(_0x2efdb6,null))[_0x1ceb('0x2a')](handleError(_0x2efdb6,null));};exports[_0x1ceb('0xbb')]=function(_0x14267f,_0x57ecef,_0x2a92e8){var _0x28c59f={};var _0x58054a={};var _0x1875a2;var _0x41703a;return db['SmsAccount'][_0x1ceb('0x65')]({'where':{'id':_0x14267f[_0x1ceb('0x59')]['id']}})['then'](handleEntityNotFound(_0x57ecef,null))['then'](function(_0x952f8){if(_0x952f8){_0x1875a2=_0x952f8;_0x58054a[_0x1ceb('0x46')]=_['keys'](db[_0x1ceb('0x73')]['rawAttributes']);_0x58054a[_0x1ceb('0x48')]=_['keys'](_0x14267f[_0x1ceb('0x48')]);_0x58054a[_0x1ceb('0x49')]=_[_0x1ceb('0x4a')](_0x58054a[_0x1ceb('0x46')],_0x58054a[_0x1ceb('0x48')]);_0x28c59f['attributes']=_[_0x1ceb('0x4a')](_0x58054a['model'],qs[_0x1ceb('0x4c')](_0x14267f[_0x1ceb('0x48')][_0x1ceb('0x4c')]));_0x28c59f[_0x1ceb('0x4b')]=_0x28c59f[_0x1ceb('0x4b')][_0x1ceb('0x4d')]?_0x28c59f[_0x1ceb('0x4b')]:_0x58054a[_0x1ceb('0x46')];_0x28c59f['order']=qs[_0x1ceb('0x4f')](_0x14267f[_0x1ceb('0x48')]['sort']);_0x28c59f[_0x1ceb('0x51')]=qs[_0x1ceb('0x49')](_[_0x1ceb('0x69')](_0x14267f[_0x1ceb('0x48')],_0x58054a[_0x1ceb('0x49')]));if(_0x14267f[_0x1ceb('0x48')][_0x1ceb('0x50')]){_0x28c59f[_0x1ceb('0x51')]=_['merge'](_0x28c59f[_0x1ceb('0x51')],{'$or':_[_0x1ceb('0x40')](_0x28c59f['attributes'],function(_0x31445d){var _0x3be2a0={};_0x3be2a0[_0x31445d]={'$like':'%'+_0x14267f[_0x1ceb('0x48')][_0x1ceb('0x50')]+'%'};return _0x3be2a0;})});}_0x28c59f=_[_0x1ceb('0x52')]({},_0x28c59f,_0x14267f[_0x1ceb('0x54')]);return _0x1875a2['getApplications'](_0x28c59f);}})[_0x1ceb('0x37')](function(_0x5cf4ca){if(_0x5cf4ca){_0x41703a=_0x5cf4ca[_0x1ceb('0x4d')];if(!_0x14267f[_0x1ceb('0x48')][_0x1ceb('0x67')](_0x1ceb('0x4e'))){_0x28c59f[_0x1ceb('0x2e')]=qs['limit'](_0x14267f[_0x1ceb('0x48')]['limit']);_0x28c59f[_0x1ceb('0x2d')]=qs['offset'](_0x14267f[_0x1ceb('0x48')][_0x1ceb('0x2d')]);}return _0x1875a2[_0x1ceb('0xbb')](_0x28c59f);}})[_0x1ceb('0x37')](function(_0x3e87bd){if(_0x3e87bd){return _0x3e87bd?{'count':_0x41703a,'rows':_0x3e87bd}:null;}})[_0x1ceb('0x37')](respondWithResult(_0x57ecef,null))['catch'](handleError(_0x57ecef,null));};exports['getInteractions']=function(_0x479fad,_0x2153bc,_0x4eb792){var _0x58233e={'raw':![],'where':{}};var _0x333614={};var _0x32cad2={'count':0x0,'rows':[]};return db[_0x1ceb('0x41')][_0x1ceb('0x65')]({'where':{'id':_0x479fad[_0x1ceb('0x59')]['id']}})['then'](handleEntityNotFound(_0x2153bc,null))['then'](function(_0x5b9829){if(_0x5b9829){_0x333614[_0x1ceb('0x46')]=_['keys'](db['SmsInteraction'][_0x1ceb('0x42')]);_0x333614[_0x1ceb('0x48')]=_[_0x1ceb('0x47')](_0x479fad['query']);_0x333614['filters']=_[_0x1ceb('0x4a')](_0x333614[_0x1ceb('0x46')],_0x333614[_0x1ceb('0x48')]);_0x58233e['attributes']=_['intersection'](_0x333614[_0x1ceb('0x46')],qs['fields'](_0x479fad[_0x1ceb('0x48')]['fields']));_0x58233e['attributes']=_0x58233e[_0x1ceb('0x4b')][_0x1ceb('0x4d')]?_0x58233e['attributes']:_0x333614[_0x1ceb('0x46')];if(!_0x479fad['query'][_0x1ceb('0x67')](_0x1ceb('0x4e'))){_0x58233e[_0x1ceb('0x2e')]=qs['limit'](_0x479fad[_0x1ceb('0x48')][_0x1ceb('0x2e')]);_0x58233e[_0x1ceb('0x2d')]=qs[_0x1ceb('0x2d')](_0x479fad[_0x1ceb('0x48')]['offset']);}_0x58233e['order']=qs[_0x1ceb('0x4f')](_0x479fad['query'][_0x1ceb('0x4f')]);_0x58233e[_0x1ceb('0x51')]=qs[_0x1ceb('0x49')](_[_0x1ceb('0x69')](_0x479fad['query'],_0x333614[_0x1ceb('0x49')]));_0x58233e[_0x1ceb('0x51')][_0x1ceb('0x6a')]=_0x5b9829['id'];if(_0x479fad['query'][_0x1ceb('0x50')]){_0x58233e[_0x1ceb('0x51')]=_[_0x1ceb('0x52')](_0x58233e['where'],{'$or':_[_0x1ceb('0x40')](_0x58233e['attributes'],function(_0x555300){var _0x22a99c={};_0x22a99c[_0x555300]={'$like':'%'+_0x479fad['query'][_0x1ceb('0x50')]+'%'};return _0x22a99c;})});}_0x58233e=_[_0x1ceb('0x52')]({},_0x58233e,_0x479fad[_0x1ceb('0x54')]);return db[_0x1ceb('0xa3')][_0x1ceb('0x30')]({'where':_0x58233e[_0x1ceb('0x51')]})[_0x1ceb('0x37')](function(_0xefad58){_0x32cad2[_0x1ceb('0x30')]=_0xefad58;if(_0x479fad[_0x1ceb('0x48')][_0x1ceb('0x55')]){_0x58233e[_0x1ceb('0x6b')]=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db[_0x1ceb('0xbc')],'as':'Owner','attributes':[_0x1ceb('0x3c'),_0x1ceb('0xbd'),_0x1ceb('0xbe')],'required':![]},{'model':db[_0x1ceb('0xbf')],'as':_0x1ceb('0xc0'),'attributes':['id','name','color'],'where':_0x479fad[_0x1ceb('0x48')][_0x1ceb('0xc1')]?{'id':_0x479fad[_0x1ceb('0x48')][_0x1ceb('0xc1')]}:undefined,'required':_0x479fad['query'][_0x1ceb('0xc1')]?!![]:![]}];}return db[_0x1ceb('0xa3')][_0x1ceb('0x56')](_0x58233e);})[_0x1ceb('0x37')](function(_0x592595){_0x32cad2[_0x1ceb('0x57')]=_0x592595;return _0x32cad2;});}})[_0x1ceb('0x37')](respondWithFilteredResult(_0x2153bc,_0x58233e))[_0x1ceb('0x2a')](handleError(_0x2153bc,null));};exports[_0x1ceb('0xb5')]=function(_0x116194,_0x2db3f6,_0x43e79e){var _0xc2d494,_0x51abfb,_0x1d0c1a;if(_[_0x1ceb('0x96')](_0x116194['body'][_0x1ceb('0x5c')])||_0x116194[_0x1ceb('0x5c')][_0x1ceb('0x5c')]===''){throw new db[(_0x1ceb('0x99'))][(_0x1ceb('0x97'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x1ceb('0x96')](_0x116194[_0x1ceb('0x5c')]['to'])){throw new db['Sequelize'][(_0x1ceb('0x97'))]('to\x20is\x20mandatory');}_0xc2d494=_0x116194[_0x1ceb('0x5c')]['to'];return db[_0x1ceb('0x41')][_0x1ceb('0x5a')]({'where':{'id':_0x116194['params']['id']},'include':[{'model':db[_0x1ceb('0xc2')],'as':'List','include':[{'model':db[_0x1ceb('0x7a')],'as':'Contacts','where':{'mobile':_0xc2d494},'limit':0x1,'order':[['updatedAt',_0x1ceb('0xa0')]]}]}]})[_0x1ceb('0x37')](handleEntityNotFound(_0x2db3f6,null))[_0x1ceb('0x37')](function(_0x231f45){if(_0x231f45&&_0x231f45['List']){_0x51abfb=_0x231f45['get']({'plain':!![]});if(_0x51abfb[_0x1ceb('0xc3')]&&_0x51abfb[_0x1ceb('0xc3')][_0x1ceb('0x9f')][_0x1ceb('0x4d')]){return _0x51abfb[_0x1ceb('0xc3')][_0x1ceb('0x9f')][0x0];}return db[_0x1ceb('0x7a')][_0x1ceb('0x5b')](_[_0x1ceb('0xc4')](_0x116194[_0x1ceb('0x5c')],{'firstName':_0xc2d494,'mobile':_0xc2d494,'phone':_0xc2d494,'ListId':_0x51abfb[_0x1ceb('0x7e')]}));}})[_0x1ceb('0x37')](handleEntityNotFound(_0x2db3f6,null))[_0x1ceb('0x37')](function(_0x302775){if(_0x302775){_0x1d0c1a=_0x302775;return db[_0x1ceb('0xa3')][_0x1ceb('0x5a')]({'where':{'ContactId':_0x1d0c1a['id'],'closed':![],'SmsAccountId':_0x51abfb['id']}})[_0x1ceb('0x37')](function(_0x5b4faa){if(_0x5b4faa){return[_0x5b4faa,![]];}return db[_0x1ceb('0xa3')][_0x1ceb('0x5b')]({'UserId':_0x116194[_0x1ceb('0x5f')]['id'],'ContactId':_0x1d0c1a['id'],'SmsAccountId':_0x51abfb['id'],'phone':_0xc2d494,'firstMsgDirection':'out','Messages':[_[_0x1ceb('0x52')](_0x116194[_0x1ceb('0x5c')],{'read':![],'body':_0x116194['body'][_0x1ceb('0x5c')],'phone':_0xc2d494,'SmsAccountId':_0x51abfb['id'],'UserId':_0x116194[_0x1ceb('0x5f')]['id'],'ContactId':_0x1d0c1a['id']})]},{'include':[{'model':db[_0x1ceb('0xaa')],'as':_0x1ceb('0xc5')}]})['then'](function(_0x2e2474){return[_0x2e2474,!![]];});});}})['spread'](function(_0xf663a0,_0x50ccdf){if(_0x50ccdf){return _0xf663a0;}return db[_0x1ceb('0xaa')][_0x1ceb('0x5b')](_[_0x1ceb('0x52')](_0x116194[_0x1ceb('0x5c')],{'read':![],'body':_0x116194[_0x1ceb('0x5c')][_0x1ceb('0x5c')],'phone':_0xc2d494,'SmsAccountId':_0x51abfb['id'],'SmsInteractionId':_0xf663a0['id'],'UserId':_0x116194[_0x1ceb('0x5f')]['id'],'ContactId':_0x1d0c1a['id']}))[_0x1ceb('0x37')](function(_0x18e26f){_0xf663a0[_0x1ceb('0xc6')][_0x1ceb('0xc5')]=[];_0xf663a0[_0x1ceb('0xc6')][_0x1ceb('0xc5')][_0x1ceb('0xa7')](_0x18e26f[_0x1ceb('0xc6')]);return _0xf663a0;});})[_0x1ceb('0x37')](respondWithResult(_0x2db3f6,null))[_0x1ceb('0x2a')](handleError(_0x2db3f6,null));};exports[_0x1ceb('0x31')]=function(_0x4bfcd0,_0x1d0b24,_0x29c050){if(_0x4bfcd0[_0x1ceb('0x5c')]['id']){delete _0x4bfcd0[_0x1ceb('0x5c')]['id'];}var _0x3a7780,_0x5b9298,_0x4a97f8;return db['SmsAccount'][_0x1ceb('0x5a')]({'where':{'id':_0x4bfcd0[_0x1ceb('0x59')]['id']}})[_0x1ceb('0x37')](handleEntityNotFound(_0x1d0b24,null))[_0x1ceb('0x37')](function(_0x49fe0e){if(_0x49fe0e){_0x4a97f8=_0x49fe0e;logger[_0x1ceb('0x21')](_0x1ceb('0x22'),_0x1ceb('0x31'),_0x1ceb('0xc7'),_0x49fe0e[_0x1ceb('0x44')],util[_0x1ceb('0xc8')](_0x4bfcd0['body'],{'showHidden':![],'depth':null}));switch(_0x49fe0e[_0x1ceb('0x44')]){case _0x1ceb('0xc9'):if(_0x4bfcd0[_0x1ceb('0x5c')][_0x1ceb('0xca')]&&_0x4bfcd0[_0x1ceb('0x5c')]['status']){_0x5b9298=_0x4bfcd0[_0x1ceb('0x5c')][_0x1ceb('0x31')];return db[_0x1ceb('0xaa')][_0x1ceb('0x5a')]({'where':{'messageId':_0x4bfcd0[_0x1ceb('0x5c')][_0x1ceb('0xca')]}});}break;case _0x1ceb('0x87'):if(_0x4bfcd0['body'][_0x1ceb('0xcb')]&&_0x4bfcd0[_0x1ceb('0x5c')]['statusInt']){_0x5b9298=_0x4bfcd0[_0x1ceb('0x5c')]['statusInt'];return db['SmsMessage'][_0x1ceb('0x5a')]({'where':{'messageId':_0x4bfcd0[_0x1ceb('0x5c')]['requestid']}});}break;case _0x1ceb('0x88'):if(_0x4bfcd0[_0x1ceb('0x5c')]['message_id']&&_0x4bfcd0[_0x1ceb('0x5c')][_0x1ceb('0xcc')]){_0x5b9298=_0x4bfcd0[_0x1ceb('0x5c')]['status_code'];return db[_0x1ceb('0xaa')][_0x1ceb('0x5a')]({'where':{'messageId':_0x4bfcd0['body'][_0x1ceb('0x89')]}});}break;case _0x1ceb('0x8d'):var _0x1d8650=_0x4bfcd0[_0x1ceb('0x5c')]['results'][0x0];if(_0x1d8650[_0x1ceb('0x83')]&&_0x1d8650[_0x1ceb('0x31')]['groupName']===_0x1ceb('0xcd')){_0x5b9298=_0x1d8650['status'][_0x1ceb('0xce')];return db['SmsMessage'][_0x1ceb('0x5a')]({'where':{'messageId':_0x1d8650[_0x1ceb('0x83')]}});}break;case _0x1ceb('0x92'):if(_0x4bfcd0['body'][_0x1ceb('0x83')]&&_0x4bfcd0[_0x1ceb('0x5c')][_0x1ceb('0x31')]){_0x5b9298=_0x4bfcd0['body'][_0x1ceb('0x31')];return db[_0x1ceb('0xaa')]['find']({'where':{'messageId':_0x4bfcd0[_0x1ceb('0x5c')][_0x1ceb('0x83')]}});}break;case'bandwidth':if(_0x4bfcd0['body'][0x0][_0x1ceb('0x26')]['id']){_0x5b9298=_0x4bfcd0[_0x1ceb('0x5c')][0x0][_0x1ceb('0x44')];return db[_0x1ceb('0xaa')][_0x1ceb('0x5a')]({'where':{'messageId':_0x4bfcd0['body'][0x0]['message']['id']}});}break;case _0x1ceb('0x94'):if(_0x4bfcd0[_0x1ceb('0x5c')]['redif']&&_0x4bfcd0['body'][_0x1ceb('0x31')]){_0x5b9298=_0x4bfcd0[_0x1ceb('0x5c')][_0x1ceb('0x31')];return db[_0x1ceb('0xaa')][_0x1ceb('0x5a')]({'where':{'messageId':_0x4bfcd0[_0x1ceb('0x5c')]['redif']}});}break;}}})['then'](handleEntityNotFound(_0x1d0b24,null))['then'](function(_0x4db68a){if(_0x4db68a){_0x3a7780=_0x4db68a;switch(_0x4a97f8['type']){case'skebby':if(_0x5b9298===_0x1ceb('0xcd')){return _0x3a7780[_0x1ceb('0x36')]({'read':!![]});}else{logger['error'](_0x1ceb('0x22'),'status','skebby',util['inspect'](_0x4bfcd0[_0x1ceb('0x5c')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x5b9298==='1'){return _0x3a7780['update']({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x1ceb('0x31'),_0x1ceb('0xc9'),util[_0x1ceb('0xc8')](_0x4bfcd0[_0x1ceb('0x5c')],{'showHidden':![],'depth':null}));}break;case _0x1ceb('0x88'):if(!_0x4bfcd0[_0x1ceb('0x5c')][_0x1ceb('0xcf')]&&_0x5b9298>=0xc8&&_0x5b9298<=0xce){return _0x3a7780['update']({'read':!![]});}else{logger[_0x1ceb('0x25')](_0x1ceb('0x22'),_0x1ceb('0x31'),'clicksend',util[_0x1ceb('0xc8')](_0x4bfcd0[_0x1ceb('0x5c')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x4f1b34=_0x4bfcd0['body'][_0x1ceb('0x8e')][0x0];if(_0x4f1b34['status'][_0x1ceb('0xce')]===_0x1ceb('0xcd')){return _0x3a7780[_0x1ceb('0x36')]({'read':!![]});}else{logger[_0x1ceb('0x25')](_0x1ceb('0x22'),_0x1ceb('0x31'),_0x1ceb('0x8d'),util[_0x1ceb('0xc8')](_0x4bfcd0[_0x1ceb('0x5c')],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x5b9298==_0x1ceb('0xd0')||_0x5b9298==_0x1ceb('0xd1')){return _0x3a7780['update']({'read':!![]});}else{logger[_0x1ceb('0x25')](_0x1ceb('0x22'),_0x1ceb('0x31'),_0x1ceb('0x92'),util[_0x1ceb('0xc8')](_0x4bfcd0[_0x1ceb('0x5c')],{'showHidden':![],'depth':null}));}break;case _0x1ceb('0x93'):if(_0x5b9298==_0x1ceb('0xd2')){return _0x3a7780[_0x1ceb('0x36')]({'read':!![]});}else{logger[_0x1ceb('0x25')](_0x1ceb('0x22'),_0x1ceb('0x31'),_0x1ceb('0x93'),util[_0x1ceb('0xc8')](_0x4bfcd0[_0x1ceb('0x5c')],{'showHidden':![],'depth':null}));}break;case _0x1ceb('0x94'):if(_0x5b9298===_0x1ceb('0xd3')||_0x5b9298===_0x1ceb('0xd4')){return _0x3a7780[_0x1ceb('0x36')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x1ceb('0x94'),util[_0x1ceb('0xc8')](_0x4bfcd0[_0x1ceb('0x5c')],{'showHidden':![],'depth':null}));}break;}return _0x3a7780;}})[_0x1ceb('0x37')](respondWithResult(_0x1d0b24,null))[_0x1ceb('0x2a')](handleError(_0x1d0b24,null));};exports[_0x1ceb('0xd5')]=function(_0x1c2e5c,_0x2a19ff,_0x34bcdd){var _0xf546f6,_0x578e48,_0x4890fa;return db[_0x1ceb('0x41')][_0x1ceb('0x5a')]({'where':{'id':_0x1c2e5c[_0x1ceb('0x59')]['id']}})[_0x1ceb('0x37')](handleEntityNotFound(_0x2a19ff,null))[_0x1ceb('0x37')](function(_0x131178){if(_0x131178){_0x4890fa=_0x131178;logger['debug'](_0x1ceb('0x22'),_0x1ceb('0x31'),_0x1ceb('0xc7'),_0x131178[_0x1ceb('0x44')],util[_0x1ceb('0xc8')](_0x1c2e5c[_0x1ceb('0x48')],{'showHidden':![],'depth':null}));switch(_0x131178[_0x1ceb('0x44')]){case _0x1ceb('0x8f'):if(_0x1c2e5c[_0x1ceb('0x48')][_0x1ceb('0xd6')]&&_0x1c2e5c['query']['state']){_0x578e48=_0x1c2e5c['query'][_0x1ceb('0xd7')];return db[_0x1ceb('0xaa')][_0x1ceb('0x5a')]({'where':{'messageId':_0x1c2e5c[_0x1ceb('0x48')]['message-id']}});}break;}}})[_0x1ceb('0x37')](handleEntityNotFound(_0x2a19ff,null))['then'](function(_0xd85cfd){if(_0xd85cfd){_0xf546f6=_0xd85cfd;switch(_0x4890fa[_0x1ceb('0x44')]){case _0x1ceb('0x8f'):if(_0x578e48==='2'||_0x578e48==='6'){return _0xf546f6[_0x1ceb('0x36')]({'read':!![]});}else{logger[_0x1ceb('0x25')](_0x1ceb('0x22'),_0x1ceb('0x31'),'csc',util['inspect'](_0x1c2e5c[_0x1ceb('0x48')],{'showHidden':![],'depth':null}));};break;}return _0xf546f6;}})[_0x1ceb('0x37')](respondWithResult(_0x2a19ff,null))[_0x1ceb('0x2a')](handleError(_0x2a19ff,null));};exports[_0x1ceb('0xd8')]=function(_0x484a4b,_0x1be617,_0x1d78e1){return db[_0x1ceb('0x41')][_0x1ceb('0x5a')]({'where':{'id':_0x484a4b[_0x1ceb('0x59')]['id']}})[_0x1ceb('0x37')](handleEntityNotFound(_0x1be617,null))[_0x1ceb('0x37')](function(_0x1f52ea){if(_0x1f52ea){return _0x1f52ea[_0x1ceb('0xd8')](_0x484a4b[_0x1ceb('0x5c')][_0x1ceb('0x6d')],_[_0x1ceb('0xa1')](_0x484a4b[_0x1ceb('0x5c')],[_0x1ceb('0x6d'),'id'])||{})[_0x1ceb('0xa4')](function(_0x2e9707){for(var _0x12a25c=0x0;_0x12a25c<_0x484a4b[_0x1ceb('0x5c')][_0x1ceb('0x6d')][_0x1ceb('0x4d')];_0x12a25c+=0x1){socket['emit'](_0x1ceb('0xd9'),{'UserId':Number(_0x484a4b[_0x1ceb('0x5c')][_0x1ceb('0x6d')][_0x12a25c]),'SmsAccountId':Number(_0x484a4b[_0x1ceb('0x59')]['id'])});}return _0x2e9707;});}})[_0x1ceb('0x37')](respondWithResult(_0x1be617,null))[_0x1ceb('0x2a')](handleError(_0x1be617,null));};exports['removeAgents']=function(_0x5b3e81,_0x2bc026,_0x15ee74){return db[_0x1ceb('0x41')][_0x1ceb('0x5a')]({'where':{'id':_0x5b3e81[_0x1ceb('0x59')]['id']}})['then'](handleEntityNotFound(_0x2bc026,null))[_0x1ceb('0x37')](function(_0x11d386){if(_0x11d386){return _0x11d386[_0x1ceb('0xda')](_0x5b3e81[_0x1ceb('0x48')][_0x1ceb('0x6d')])[_0x1ceb('0x37')](function(){if(_[_0x1ceb('0xdb')](_0x5b3e81['query']['ids'])){for(var _0x4e5719=0x0;_0x4e5719<_0x5b3e81[_0x1ceb('0x48')]['ids'][_0x1ceb('0x4d')];_0x4e5719+=0x1){socket['emit'](_0x1ceb('0xdc'),{'UserId':Number(_0x5b3e81[_0x1ceb('0x48')][_0x1ceb('0x6d')][_0x4e5719]),'SmsAccountId':Number(_0x5b3e81[_0x1ceb('0x59')]['id'])});}}else{socket[_0x1ceb('0xdd')](_0x1ceb('0xdc'),{'UserId':Number(_0x5b3e81['query']['ids']),'SmsAccountId':Number(_0x5b3e81['params']['id'])});}});}})[_0x1ceb('0x37')](respondWithStatusCode(_0x2bc026,null))['catch'](handleError(_0x2bc026,null));};exports['getAgents']=function(_0x1a94ee,_0x2da774,_0x444c63){var _0x13aae3={};var _0x306321={};var _0x149bbd;var _0xbe161b;return db[_0x1ceb('0x41')][_0x1ceb('0x65')]({'where':{'id':_0x1a94ee['params']['id']}})[_0x1ceb('0x37')](handleEntityNotFound(_0x2da774,null))['then'](function(_0x2390c2){if(_0x2390c2){_0x149bbd=_0x2390c2;_0x306321[_0x1ceb('0x46')]=_[_0x1ceb('0x47')](db['User']['rawAttributes']);_0x306321[_0x1ceb('0x48')]=_[_0x1ceb('0x47')](_0x1a94ee[_0x1ceb('0x48')]);_0x306321['filters']=_[_0x1ceb('0x4a')](_0x306321[_0x1ceb('0x46')],_0x306321[_0x1ceb('0x48')]);_0x13aae3[_0x1ceb('0x4b')]=_['intersection'](_0x306321[_0x1ceb('0x46')],qs[_0x1ceb('0x4c')](_0x1a94ee['query'][_0x1ceb('0x4c')]));_0x13aae3[_0x1ceb('0x4b')]=_0x13aae3[_0x1ceb('0x4b')][_0x1ceb('0x4d')]?_0x13aae3[_0x1ceb('0x4b')]:_0x306321['model'];_0x13aae3['order']=qs['sort'](_0x1a94ee[_0x1ceb('0x48')]['sort']);_0x13aae3[_0x1ceb('0x51')]=qs[_0x1ceb('0x49')](_[_0x1ceb('0x69')](_0x1a94ee[_0x1ceb('0x48')],_0x306321[_0x1ceb('0x49')]));if(_0x1a94ee[_0x1ceb('0x48')]['filter']){_0x13aae3[_0x1ceb('0x51')]=_[_0x1ceb('0x52')](_0x13aae3[_0x1ceb('0x51')],{'$or':_[_0x1ceb('0x40')](_0x13aae3[_0x1ceb('0x4b')],function(_0x277dc3){var _0x545757={};_0x545757[_0x277dc3]={'$like':'%'+_0x1a94ee[_0x1ceb('0x48')][_0x1ceb('0x50')]+'%'};return _0x545757;})});}_0x13aae3=_[_0x1ceb('0x52')]({},_0x13aae3,_0x1a94ee['options']);return _0x149bbd[_0x1ceb('0xde')](_0x13aae3);}})['then'](function(_0x55e383){if(_0x55e383){_0xbe161b=_0x55e383[_0x1ceb('0x4d')];if(!_0x1a94ee[_0x1ceb('0x48')][_0x1ceb('0x67')](_0x1ceb('0x4e'))){_0x13aae3[_0x1ceb('0x2e')]=qs[_0x1ceb('0x2e')](_0x1a94ee[_0x1ceb('0x48')][_0x1ceb('0x2e')]);_0x13aae3['offset']=qs[_0x1ceb('0x2d')](_0x1a94ee[_0x1ceb('0x48')][_0x1ceb('0x2d')]);}return _0x149bbd[_0x1ceb('0xde')](_0x13aae3);}})[_0x1ceb('0x37')](function(_0x299786){if(_0x299786){return _0x299786?{'count':_0xbe161b,'rows':_0x299786}:null;}})[_0x1ceb('0x37')](respondWithResult(_0x2da774,null))[_0x1ceb('0x2a')](handleError(_0x2da774,null));};
\ No newline at end of file
+var _0xd0a1=['fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','include','rows','catch','show','params','merge','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','options','includeAll','findAll','removeDispositions','ids','CannedAnswer','removeAnswers','notify','Applications','applications','orderBy','account','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','Body','messageId','MessageSid','skebby','text','connectel','message_id','plivo','MessageUUID','infobip','results','csc','fromNumber','replyMessageId','intelepeer','refid','isNil','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','Contacts','DESC','omit','contact','SmsInteraction','spread','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','SmsMessage','ContactId','UserId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','entity\x20found','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','transaction','SmsApplication','bulkCreate','findAndCountAll','priority','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','tag','List','out','Messages','dataValues','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','statusInt','requestid','status_code','groupName','DELIVERED','clickatell','bandwidth','redif','clicksend','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','destroy','get','SmsAccounts','UserProfileResource','name','send','index','Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection'];(function(_0x123284,_0xafe473){var _0x101138=function(_0x3f99c4){while(--_0x3f99c4){_0x123284['push'](_0x123284['shift']());}};_0x101138(++_0xafe473);}(_0xd0a1,0x97));var _0x1d0a=function(_0x55a101,_0x3df81b){_0x55a101=_0x55a101-0x0;var _0x43466b=_0xd0a1[_0x55a101];return _0x43466b;};'use strict';var emlformat=require(_0x1d0a('0x0'));var rimraf=require(_0x1d0a('0x1'));var zipdir=require(_0x1d0a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1d0a('0x3'));var BPromise=require(_0x1d0a('0x4'));var Mustache=require(_0x1d0a('0x5'));var util=require(_0x1d0a('0x6'));var path=require(_0x1d0a('0x7'));var sox=require(_0x1d0a('0x8'));var csv=require('to-csv');var ejs=require(_0x1d0a('0x9'));var fs=require('fs');var fs_extra=require(_0x1d0a('0xa'));var _=require(_0x1d0a('0xb'));var squel=require(_0x1d0a('0xc'));var crypto=require('crypto');var jsforce=require(_0x1d0a('0xd'));var deskjs=require(_0x1d0a('0xe'));var toCsv=require(_0x1d0a('0xf'));var querystring=require(_0x1d0a('0x10'));var Papa=require('papaparse');var Redis=require(_0x1d0a('0x11'));var authService=require(_0x1d0a('0x12'));var qs=require(_0x1d0a('0x13'));var as=require(_0x1d0a('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1d0a('0x15'));var utils=require(_0x1d0a('0x16'));var config=require(_0x1d0a('0x17'));var licenseUtil=require(_0x1d0a('0x18'));var db=require(_0x1d0a('0x19'))['db'];config[_0x1d0a('0x1a')]=_[_0x1d0a('0x1b')](config['redis'],{'host':_0x1d0a('0x1c'),'port':0x18eb});var socket=require(_0x1d0a('0x1d'))(new Redis(config[_0x1d0a('0x1a')]));require(_0x1d0a('0x1e'))[_0x1d0a('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0x1d0a('0x20')][_0x1d0a('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x5afb33,_0x3459a7,_0x389454,_0x1ac67a){return new BPromise(function(_0x5c23c4,_0x54feab){var _0x583819=_0x1ac67a||client;return _0x583819[_0x1d0a('0x22')](_0x5afb33,_0x389454)[_0x1d0a('0x23')](function(_0x54a862){logger[_0x1d0a('0x24')](_0x1d0a('0x25'),_0x3459a7,_0x1d0a('0x26'));logger[_0x1d0a('0x27')](_0x1d0a('0x28'),_0x3459a7,'request\x20sent',JSON[_0x1d0a('0x29')](_0x54a862));if(_0x54a862[_0x1d0a('0x2a')]){if(_0x54a862[_0x1d0a('0x2a')]['code']===0x1f4){logger[_0x1d0a('0x2a')](_0x1d0a('0x25'),_0x3459a7,_0x54a862[_0x1d0a('0x2a')][_0x1d0a('0x2b')]);return _0x54feab(_0x54a862[_0x1d0a('0x2a')][_0x1d0a('0x2b')]);}logger[_0x1d0a('0x2a')](_0x1d0a('0x25'),_0x3459a7,_0x54a862['error'][_0x1d0a('0x2b')]);return _0x5c23c4(_0x54a862['error']['message']);}else{logger['info'](_0x1d0a('0x25'),_0x3459a7,_0x1d0a('0x26'));_0x5c23c4(_0x54a862[_0x1d0a('0x2c')][_0x1d0a('0x2b')]);}})['catch'](function(_0x1b1069){logger[_0x1d0a('0x2a')]('SmsAccount,\x20%s,\x20%s',_0x3459a7,_0x1b1069);_0x54feab(_0x1b1069);});});}function respondWithStatusCode(_0x596664,_0xcc6abb){_0xcc6abb=_0xcc6abb||0xcc;return function(_0x1f2959){if(_0x1f2959){return _0x596664[_0x1d0a('0x2d')](_0xcc6abb);}return _0x596664[_0x1d0a('0x2e')](_0xcc6abb)[_0x1d0a('0x2f')]();};}function respondWithResult(_0x1be5bd,_0xd1b0da){_0xd1b0da=_0xd1b0da||0xc8;return function(_0x1184f7){if(_0x1184f7){return _0x1be5bd[_0x1d0a('0x2e')](_0xd1b0da)[_0x1d0a('0x30')](_0x1184f7);}};}function respondWithFilteredResult(_0x146f73,_0x41db3b){return function(_0x5bd749){if(_0x5bd749){var _0x4f2466=typeof _0x41db3b[_0x1d0a('0x31')]==='undefined'&&typeof _0x41db3b[_0x1d0a('0x32')]===_0x1d0a('0x33');var _0x2255ac=_0x5bd749[_0x1d0a('0x34')];var _0x479363=_0x4f2466?0x0:_0x41db3b[_0x1d0a('0x31')];var _0x225723=_0x4f2466?_0x5bd749[_0x1d0a('0x34')]:_0x41db3b[_0x1d0a('0x31')]+_0x41db3b[_0x1d0a('0x32')];var _0x2c49dc;if(_0x225723>=_0x2255ac){_0x225723=_0x2255ac;_0x2c49dc=0xc8;}else{_0x2c49dc=0xce;}_0x146f73[_0x1d0a('0x2e')](_0x2c49dc);return _0x146f73[_0x1d0a('0x35')]('Content-Range',_0x479363+'-'+_0x225723+'/'+_0x2255ac)['json'](_0x5bd749);}return null;};}function patchUpdates(_0x33fa20){return function(_0x4f4ed3){try{jsonpatch[_0x1d0a('0x36')](_0x4f4ed3,_0x33fa20,!![]);}catch(_0x2b9ffd){return BPromise[_0x1d0a('0x37')](_0x2b9ffd);}return _0x4f4ed3[_0x1d0a('0x38')]();};}function saveUpdates(_0x207d5b,_0x482048){return function(_0x34e3c0){if(_0x34e3c0){return _0x34e3c0['update'](_0x207d5b)[_0x1d0a('0x23')](function(_0x25595a){return _0x25595a;});}return null;};}function removeEntity(_0x24f76c,_0x82c79f){return function(_0x5cf5c6){if(_0x5cf5c6){return _0x5cf5c6[_0x1d0a('0x39')]()[_0x1d0a('0x23')](function(){var _0x3b36a1=_0x5cf5c6[_0x1d0a('0x3a')]({'plain':!![]});var _0x19166d=_0x1d0a('0x3b');return db[_0x1d0a('0x3c')][_0x1d0a('0x39')]({'where':{'type':_0x19166d,'resourceId':_0x3b36a1['id']}})[_0x1d0a('0x23')](function(){return _0x5cf5c6;});})['then'](function(){_0x24f76c[_0x1d0a('0x2e')](0xcc)[_0x1d0a('0x2f')]();});}};}function handleEntityNotFound(_0x3a63d9,_0x5f5662){return function(_0x3ed12f){if(!_0x3ed12f){_0x3a63d9[_0x1d0a('0x2d')](0x194);}return _0x3ed12f;};}function handleError(_0x49272d,_0x232979){_0x232979=_0x232979||0x1f4;return function(_0x3e1b37){logger['error'](_0x3e1b37['stack']);if(_0x3e1b37['name']){delete _0x3e1b37[_0x1d0a('0x3d')];}_0x49272d[_0x1d0a('0x2e')](_0x232979)[_0x1d0a('0x3e')](_0x3e1b37);};}exports[_0x1d0a('0x3f')]=function(_0x373443,_0x4bc278){var _0x462e49={'include':[{'model':db[_0x1d0a('0x40')],'as':_0x1d0a('0x41')}]},_0x18975e={},_0xabdc1f={'count':0x0,'rows':[]};var _0x2ba076=_[_0x1d0a('0x42')](db[_0x1d0a('0x43')][_0x1d0a('0x44')],function(_0x434334){return{'name':_0x434334[_0x1d0a('0x45')],'type':_0x434334[_0x1d0a('0x46')][_0x1d0a('0x47')]};});_0x18975e[_0x1d0a('0x48')]=_[_0x1d0a('0x42')](_0x2ba076,_0x1d0a('0x3d'));_0x18975e['query']=_[_0x1d0a('0x49')](_0x373443[_0x1d0a('0x4a')]);_0x18975e[_0x1d0a('0x4b')]=_[_0x1d0a('0x4c')](_0x18975e[_0x1d0a('0x48')],_0x18975e[_0x1d0a('0x4a')]);_0x462e49['attributes']=_[_0x1d0a('0x4c')](_0x18975e[_0x1d0a('0x48')],qs[_0x1d0a('0x4d')](_0x373443[_0x1d0a('0x4a')][_0x1d0a('0x4d')]));_0x462e49[_0x1d0a('0x4e')]=_0x462e49[_0x1d0a('0x4e')][_0x1d0a('0x4f')]?_0x462e49['attributes']:_0x18975e[_0x1d0a('0x48')];if(!_0x373443[_0x1d0a('0x4a')][_0x1d0a('0x50')](_0x1d0a('0x51'))){_0x462e49[_0x1d0a('0x32')]=qs[_0x1d0a('0x32')](_0x373443['query'][_0x1d0a('0x32')]);_0x462e49['offset']=qs[_0x1d0a('0x31')](_0x373443[_0x1d0a('0x4a')][_0x1d0a('0x31')]);}_0x462e49[_0x1d0a('0x52')]=qs[_0x1d0a('0x53')](_0x373443[_0x1d0a('0x4a')][_0x1d0a('0x53')]);_0x462e49[_0x1d0a('0x54')]=qs[_0x1d0a('0x4b')](_[_0x1d0a('0x55')](_0x373443[_0x1d0a('0x4a')],_0x18975e[_0x1d0a('0x4b')]),_0x2ba076);if(_0x373443[_0x1d0a('0x4a')][_0x1d0a('0x56')]){_0x462e49[_0x1d0a('0x54')]=_['merge'](_0x462e49[_0x1d0a('0x54')],{'$or':_[_0x1d0a('0x42')](_0x2ba076,function(_0x33a2c8){if(_0x33a2c8['type']!==_0x1d0a('0x57')){var _0x347efe={};_0x347efe[_0x33a2c8['name']]={'$like':'%'+_0x373443['query']['filter']+'%'};return _0x347efe;}})});}_0x462e49=_['merge']({},_0x462e49,_0x373443['options']);var _0xc83cbd={'where':_0x462e49[_0x1d0a('0x54')]};return db['SmsAccount']['count'](_0xc83cbd)['then'](function(_0x4743e1){_0xabdc1f[_0x1d0a('0x34')]=_0x4743e1;if(_0x373443[_0x1d0a('0x4a')]['includeAll']){_0x462e49[_0x1d0a('0x58')]=[{'all':!![]}];}return db[_0x1d0a('0x43')]['findAll'](_0x462e49);})[_0x1d0a('0x23')](function(_0x11ed97){_0xabdc1f[_0x1d0a('0x59')]=_0x11ed97;return _0xabdc1f;})[_0x1d0a('0x23')](respondWithFilteredResult(_0x4bc278,_0x462e49))[_0x1d0a('0x5a')](handleError(_0x4bc278,null));};exports[_0x1d0a('0x5b')]=function(_0x580909,_0x73b26a){var _0x39372c={'raw':![],'where':{'id':_0x580909[_0x1d0a('0x5c')]['id']},'include':[{'model':db[_0x1d0a('0x40')],'as':_0x1d0a('0x41')}]},_0x3bda10={};_0x3bda10[_0x1d0a('0x48')]=_[_0x1d0a('0x49')](db['SmsAccount']['rawAttributes']);_0x3bda10[_0x1d0a('0x4a')]=_[_0x1d0a('0x49')](_0x580909[_0x1d0a('0x4a')]);_0x3bda10[_0x1d0a('0x4b')]=_[_0x1d0a('0x4c')](_0x3bda10[_0x1d0a('0x48')],_0x3bda10[_0x1d0a('0x4a')]);_0x39372c[_0x1d0a('0x4e')]=_[_0x1d0a('0x4c')](_0x3bda10[_0x1d0a('0x48')],qs[_0x1d0a('0x4d')](_0x580909[_0x1d0a('0x4a')][_0x1d0a('0x4d')]));_0x39372c[_0x1d0a('0x4e')]=_0x39372c['attributes'][_0x1d0a('0x4f')]?_0x39372c[_0x1d0a('0x4e')]:_0x3bda10['model'];if(_0x580909[_0x1d0a('0x4a')]['includeAll']){_0x39372c[_0x1d0a('0x58')]=[{'all':!![]}];}_0x39372c=_[_0x1d0a('0x5d')]({},_0x39372c,_0x580909['options']);return db['SmsAccount']['find'](_0x39372c)[_0x1d0a('0x23')](handleEntityNotFound(_0x73b26a,null))[_0x1d0a('0x23')](respondWithResult(_0x73b26a,null))[_0x1d0a('0x5a')](handleError(_0x73b26a,null));};exports['create']=function(_0x34791d,_0x5c6e91){return db['SmsAccount'][_0x1d0a('0x5e')](_0x34791d[_0x1d0a('0x5f')],{})[_0x1d0a('0x23')](function(_0x354ac9){var _0x18ffe3=_0x34791d[_0x1d0a('0x60')][_0x1d0a('0x3a')]({'plain':!![]});if(!_0x18ffe3)throw new Error(_0x1d0a('0x61'));if(_0x18ffe3['role']===_0x1d0a('0x60')){var _0x877a97=_0x354ac9['get']({'plain':!![]});var _0x3df28b=_0x1d0a('0x3b');return db['UserProfileSection'][_0x1d0a('0x62')]({'where':{'name':_0x3df28b,'userProfileId':_0x18ffe3[_0x1d0a('0x63')]},'raw':!![]})[_0x1d0a('0x23')](function(_0x3c51b8){if(_0x3c51b8&&_0x3c51b8[_0x1d0a('0x64')]===0x0){return db[_0x1d0a('0x3c')][_0x1d0a('0x5e')]({'name':_0x877a97[_0x1d0a('0x3d')],'resourceId':_0x877a97['id'],'type':_0x3c51b8[_0x1d0a('0x3d')],'sectionId':_0x3c51b8['id']},{})[_0x1d0a('0x23')](function(){return _0x354ac9;});}else{return _0x354ac9;}})[_0x1d0a('0x5a')](function(_0x5621f0){logger[_0x1d0a('0x2a')](_0x1d0a('0x65'),_0x5621f0);throw _0x5621f0;});}return _0x354ac9;})[_0x1d0a('0x23')](respondWithResult(_0x5c6e91,0xc9))[_0x1d0a('0x5a')](handleError(_0x5c6e91,null));};exports[_0x1d0a('0x66')]=function(_0x5887f0,_0x56edbf){if(_0x5887f0[_0x1d0a('0x5f')]['id']){delete _0x5887f0[_0x1d0a('0x5f')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x5887f0[_0x1d0a('0x5c')]['id']},'include':[{'model':db[_0x1d0a('0x40')],'as':_0x1d0a('0x41')}]})[_0x1d0a('0x23')](handleEntityNotFound(_0x56edbf,null))[_0x1d0a('0x23')](saveUpdates(_0x5887f0[_0x1d0a('0x5f')],null))[_0x1d0a('0x23')](respondWithResult(_0x56edbf,null))[_0x1d0a('0x5a')](handleError(_0x56edbf,null));};exports[_0x1d0a('0x39')]=function(_0x520a03,_0x3f9e70){return db['SmsAccount'][_0x1d0a('0x62')]({'where':{'id':_0x520a03['params']['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x3f9e70,null))[_0x1d0a('0x23')](removeEntity(_0x3f9e70,null))[_0x1d0a('0x5a')](handleError(_0x3f9e70,null));};exports[_0x1d0a('0x67')]=function(_0x373dcc,_0x161a7b){return db[_0x1d0a('0x43')]['describe']()[_0x1d0a('0x23')](respondWithResult(_0x161a7b,null))[_0x1d0a('0x5a')](handleError(_0x161a7b,null));};exports[_0x1d0a('0x68')]=function(_0xee54bb,_0x457380,_0x1762bb){if(_0xee54bb[_0x1d0a('0x5f')]['id']){delete _0xee54bb[_0x1d0a('0x5f')]['id'];}return db['SmsAccount'][_0x1d0a('0x62')]({'where':{'id':_0xee54bb[_0x1d0a('0x5c')]['id']}})['then'](handleEntityNotFound(_0x457380,null))['then'](function(_0x350b21){if(_0x350b21){_0xee54bb[_0x1d0a('0x5f')][_0x1d0a('0x69')]=_0x350b21['id'];return db[_0x1d0a('0x6a')][_0x1d0a('0x5e')](_0xee54bb[_0x1d0a('0x5f')]);}})[_0x1d0a('0x23')](respondWithResult(_0x457380,null))[_0x1d0a('0x5a')](handleError(_0x457380,null));};exports[_0x1d0a('0x6b')]=function(_0x3773ce,_0x31d323,_0x4f89c3){var _0x5856ab={'raw':![],'where':{}};var _0x439f6e={};var _0x2c096a={'count':0x0,'rows':[]};return db[_0x1d0a('0x43')][_0x1d0a('0x6c')]({'where':{'id':_0x3773ce['params']['id']}})['then'](handleEntityNotFound(_0x31d323,null))[_0x1d0a('0x23')](function(_0x18d8c2){if(_0x18d8c2){_0x439f6e[_0x1d0a('0x48')]=_[_0x1d0a('0x49')](db['Disposition'][_0x1d0a('0x44')]);_0x439f6e[_0x1d0a('0x4a')]=_[_0x1d0a('0x49')](_0x3773ce[_0x1d0a('0x4a')]);_0x439f6e[_0x1d0a('0x4b')]=_[_0x1d0a('0x4c')](_0x439f6e[_0x1d0a('0x48')],_0x439f6e[_0x1d0a('0x4a')]);_0x5856ab[_0x1d0a('0x4e')]=_[_0x1d0a('0x4c')](_0x439f6e['model'],qs[_0x1d0a('0x4d')](_0x3773ce[_0x1d0a('0x4a')][_0x1d0a('0x4d')]));_0x5856ab[_0x1d0a('0x4e')]=_0x5856ab[_0x1d0a('0x4e')][_0x1d0a('0x4f')]?_0x5856ab['attributes']:_0x439f6e[_0x1d0a('0x48')];if(!_0x3773ce[_0x1d0a('0x4a')][_0x1d0a('0x50')](_0x1d0a('0x51'))){_0x5856ab[_0x1d0a('0x32')]=qs[_0x1d0a('0x32')](_0x3773ce[_0x1d0a('0x4a')][_0x1d0a('0x32')]);_0x5856ab[_0x1d0a('0x31')]=qs[_0x1d0a('0x31')](_0x3773ce[_0x1d0a('0x4a')]['offset']);}_0x5856ab['order']=qs['sort'](_0x3773ce[_0x1d0a('0x4a')]['sort']);_0x5856ab[_0x1d0a('0x54')]=qs[_0x1d0a('0x4b')](_[_0x1d0a('0x55')](_0x3773ce[_0x1d0a('0x4a')],_0x439f6e[_0x1d0a('0x4b')]));_0x5856ab[_0x1d0a('0x54')]['SmsAccountId']=_0x18d8c2['id'];if(_0x3773ce['query'][_0x1d0a('0x56')]){_0x5856ab[_0x1d0a('0x54')]=_['merge'](_0x5856ab[_0x1d0a('0x54')],{'$or':_['map'](_0x5856ab[_0x1d0a('0x4e')],function(_0x4c41cd){var _0x201980={};_0x201980[_0x4c41cd]={'$like':'%'+_0x3773ce['query']['filter']+'%'};return _0x201980;})});}_0x5856ab=_['merge']({},_0x5856ab,_0x3773ce[_0x1d0a('0x6d')]);return db[_0x1d0a('0x6a')]['count']({'where':_0x5856ab['where']})[_0x1d0a('0x23')](function(_0x2815c8){_0x2c096a[_0x1d0a('0x34')]=_0x2815c8;if(_0x3773ce[_0x1d0a('0x4a')][_0x1d0a('0x6e')]){_0x5856ab[_0x1d0a('0x58')]=[{'all':!![]}];}return db['Disposition'][_0x1d0a('0x6f')](_0x5856ab);})['then'](function(_0x5e20f4){_0x2c096a[_0x1d0a('0x59')]=_0x5e20f4;return _0x2c096a;});}})['then'](respondWithFilteredResult(_0x31d323,_0x5856ab))['catch'](handleError(_0x31d323,null));};exports['removeDispositions']=function(_0x3a0b1d,_0x42735c,_0x55a7ea){return db[_0x1d0a('0x43')][_0x1d0a('0x62')]({'where':{'id':_0x3a0b1d['params']['id']}})['then'](handleEntityNotFound(_0x42735c,null))[_0x1d0a('0x23')](function(_0x38ff50){if(_0x38ff50){return _0x38ff50[_0x1d0a('0x70')](_0x3a0b1d[_0x1d0a('0x4a')][_0x1d0a('0x71')]);}})[_0x1d0a('0x23')](respondWithStatusCode(_0x42735c,null))[_0x1d0a('0x5a')](handleError(_0x42735c,null));};exports['addAnswer']=function(_0x3808b8,_0x161eaf,_0xf05a34){if(_0x3808b8[_0x1d0a('0x5f')]['id']){delete _0x3808b8[_0x1d0a('0x5f')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x3808b8[_0x1d0a('0x5c')]['id']}})['then'](handleEntityNotFound(_0x161eaf,null))[_0x1d0a('0x23')](function(_0x21246f){if(_0x21246f){_0x3808b8[_0x1d0a('0x5f')][_0x1d0a('0x69')]=_0x21246f['id'];return db['CannedAnswer'][_0x1d0a('0x5e')](_0x3808b8['body']);}})[_0x1d0a('0x23')](respondWithResult(_0x161eaf,null))[_0x1d0a('0x5a')](handleError(_0x161eaf,null));};exports['getAnswers']=function(_0x472ce7,_0x257e0c,_0x3715b0){var _0x1891e7={'raw':![],'where':{}};var _0x5b6089={};var _0x196a46={'count':0x0,'rows':[]};return db[_0x1d0a('0x43')][_0x1d0a('0x6c')]({'where':{'id':_0x472ce7['params']['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x257e0c,null))['then'](function(_0x80bf8a){if(_0x80bf8a){_0x5b6089['model']=_[_0x1d0a('0x49')](db[_0x1d0a('0x72')][_0x1d0a('0x44')]);_0x5b6089[_0x1d0a('0x4a')]=_[_0x1d0a('0x49')](_0x472ce7[_0x1d0a('0x4a')]);_0x5b6089['filters']=_['intersection'](_0x5b6089[_0x1d0a('0x48')],_0x5b6089[_0x1d0a('0x4a')]);_0x1891e7[_0x1d0a('0x4e')]=_[_0x1d0a('0x4c')](_0x5b6089['model'],qs['fields'](_0x472ce7['query'][_0x1d0a('0x4d')]));_0x1891e7['attributes']=_0x1891e7['attributes'][_0x1d0a('0x4f')]?_0x1891e7[_0x1d0a('0x4e')]:_0x5b6089[_0x1d0a('0x48')];if(!_0x472ce7['query'][_0x1d0a('0x50')](_0x1d0a('0x51'))){_0x1891e7[_0x1d0a('0x32')]=qs[_0x1d0a('0x32')](_0x472ce7[_0x1d0a('0x4a')][_0x1d0a('0x32')]);_0x1891e7[_0x1d0a('0x31')]=qs[_0x1d0a('0x31')](_0x472ce7[_0x1d0a('0x4a')][_0x1d0a('0x31')]);}_0x1891e7[_0x1d0a('0x52')]=qs[_0x1d0a('0x53')](_0x472ce7['query'][_0x1d0a('0x53')]);_0x1891e7[_0x1d0a('0x54')]=qs['filters'](_[_0x1d0a('0x55')](_0x472ce7['query'],_0x5b6089[_0x1d0a('0x4b')]));_0x1891e7[_0x1d0a('0x54')][_0x1d0a('0x69')]=_0x80bf8a['id'];if(_0x472ce7[_0x1d0a('0x4a')][_0x1d0a('0x56')]){_0x1891e7['where']=_[_0x1d0a('0x5d')](_0x1891e7['where'],{'$or':_[_0x1d0a('0x42')](_0x1891e7[_0x1d0a('0x4e')],function(_0x5abd20){var _0xf35e7f={};_0xf35e7f[_0x5abd20]={'$like':'%'+_0x472ce7[_0x1d0a('0x4a')][_0x1d0a('0x56')]+'%'};return _0xf35e7f;})});}_0x1891e7=_['merge']({},_0x1891e7,_0x472ce7[_0x1d0a('0x6d')]);return db[_0x1d0a('0x72')][_0x1d0a('0x34')]({'where':_0x1891e7[_0x1d0a('0x54')]})[_0x1d0a('0x23')](function(_0x2ece76){_0x196a46[_0x1d0a('0x34')]=_0x2ece76;if(_0x472ce7[_0x1d0a('0x4a')][_0x1d0a('0x6e')]){_0x1891e7[_0x1d0a('0x58')]=[{'all':!![]}];}return db[_0x1d0a('0x72')][_0x1d0a('0x6f')](_0x1891e7);})['then'](function(_0x4be858){_0x196a46[_0x1d0a('0x59')]=_0x4be858;return _0x196a46;});}})[_0x1d0a('0x23')](respondWithFilteredResult(_0x257e0c,_0x1891e7))[_0x1d0a('0x5a')](handleError(_0x257e0c,null));};exports[_0x1d0a('0x73')]=function(_0x28eb96,_0x3a2970,_0x2e95c8){return db[_0x1d0a('0x43')][_0x1d0a('0x62')]({'where':{'id':_0x28eb96['params']['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x3a2970,null))[_0x1d0a('0x23')](function(_0x4a20f9){if(_0x4a20f9){return _0x4a20f9[_0x1d0a('0x73')](_0x28eb96[_0x1d0a('0x4a')][_0x1d0a('0x71')]);}})[_0x1d0a('0x23')](respondWithStatusCode(_0x3a2970,null))[_0x1d0a('0x5a')](handleError(_0x3a2970,null));};exports[_0x1d0a('0x74')]=function(_0x12f1c2,_0x273e42,_0x1d1ff1){var _0x56f77c={'channel':'sms'};var _0x27c656=[];var _0x432dfd=[];var _0x4d65c3={};return db[_0x1d0a('0x43')][_0x1d0a('0x62')]({'where':{'id':_0x12f1c2[_0x1d0a('0x5c')]['id']},'include':[{'model':db['SmsApplication'],'as':_0x1d0a('0x75')}]})[_0x1d0a('0x23')](handleEntityNotFound(_0x273e42,null))[_0x1d0a('0x23')](function(_0x15ff53){_0x56f77c['account']=_0x15ff53;_0x56f77c[_0x1d0a('0x76')]=_[_0x1d0a('0x77')](_0x15ff53[_0x1d0a('0x75')],['priority'],['asc']);if(_0x56f77c[_0x1d0a('0x78')]['Applications']){delete _0x56f77c['account'][_0x1d0a('0x75')];}return db[_0x1d0a('0x79')][_0x1d0a('0x67')]();})['then'](function(_0x2fdf95){if(!_0x2fdf95){throw new db[(_0x1d0a('0x7a'))]['ValidationError'](_0x1d0a('0x7b'));}_0x27c656=_[_0x1d0a('0x7c')](_[_0x1d0a('0x49')](_0x2fdf95),['createdAt','updatedAt']);_0x432dfd=_[_0x1d0a('0x7c')](_[_0x1d0a('0x49')](_0x2fdf95),[_0x1d0a('0x7d'),_0x1d0a('0x7e'),_0x1d0a('0x7f'),_0x1d0a('0x80')]);_0x56f77c[_0x1d0a('0x5f')]={'mapKey':_0x1d0a('0x81')};if(_0x56f77c[_0x1d0a('0x78')]['type']){switch(_0x56f77c[_0x1d0a('0x78')][_0x1d0a('0x46')]){case _0x1d0a('0x82'):_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x83')]=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x84')];_0x56f77c[_0x1d0a('0x5f')]['body']=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x85')];_0x56f77c['body'][_0x1d0a('0x86')]=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x87')];break;case _0x1d0a('0x88'):_0x56f77c[_0x1d0a('0x5f')]['from']='+'+_0x12f1c2[_0x1d0a('0x5f')]['sender'];_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x5f')]=_0x12f1c2['body'][_0x1d0a('0x89')];break;case _0x1d0a('0x8a'):_0x56f77c[_0x1d0a('0x5f')]['from']=_0x12f1c2[_0x1d0a('0x5f')]['from'];_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x5f')]=_0x12f1c2[_0x1d0a('0x5f')]['message'];break;case'clicksend':_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x83')]=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x83')];_0x56f77c['body'][_0x1d0a('0x5f')]=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x5f')];_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x86')]=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x8b')];break;case _0x1d0a('0x8c'):_0x56f77c['body']['from']=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x84')];_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x5f')]=_0x12f1c2[_0x1d0a('0x5f')]['Text'];_0x56f77c[_0x1d0a('0x5f')]['messageId']=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x8d')];break;case _0x1d0a('0x8e'):_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x83')]='+'+_0x12f1c2['body'][_0x1d0a('0x8f')][0x0][_0x1d0a('0x83')];_0x56f77c[_0x1d0a('0x5f')]['body']=_0x12f1c2['body'][_0x1d0a('0x8f')][0x0][_0x1d0a('0x89')];_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x86')]=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x8f')][0x0][_0x1d0a('0x86')];break;case _0x1d0a('0x90'):_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x83')]=_0x12f1c2[_0x1d0a('0x5f')]['originatingAddress'];_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x5f')]=_0x12f1c2[_0x1d0a('0x5f')]['segmentedMessage'][_0x1d0a('0x2b')];break;case'clickatell':_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x83')]=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x91')];_0x56f77c[_0x1d0a('0x5f')]['body']=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x89')];_0x56f77c['body'][_0x1d0a('0x86')]=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x92')];break;case'bandwidth':_0x56f77c[_0x1d0a('0x5f')]['messageId']=_0x12f1c2[_0x1d0a('0x5f')][0x0]['message']['id'];_0x56f77c['body'][_0x1d0a('0x83')]=_0x12f1c2[_0x1d0a('0x5f')][0x0]['message']['from'];_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x5f')]=_0x12f1c2[_0x1d0a('0x5f')][0x0][_0x1d0a('0x2b')][_0x1d0a('0x89')];break;case _0x1d0a('0x93'):_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x83')]=_0x12f1c2['body']['from'];_0x56f77c[_0x1d0a('0x5f')]['body']=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x2b')];_0x56f77c['body']['messageId']=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x94')];break;}}if(_0x56f77c[_0x1d0a('0x5f')]['id']){delete _0x56f77c['body']['id'];}if(_[_0x1d0a('0x95')](_0x56f77c['body'][_0x1d0a('0x83')])){throw new db[(_0x1d0a('0x7a'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x1d0a('0x95')](_0x56f77c['body'][_0x1d0a('0x5f')])||_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x5f')]===''){throw new db[(_0x1d0a('0x7a'))][(_0x1d0a('0x96'))](_0x1d0a('0x97'));}if(_[_0x1d0a('0x95')](_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x98')])){throw new db['Sequelize']['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x432dfd);}if(!_[_0x1d0a('0x99')](_0x432dfd,_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x98')])){throw new db[(_0x1d0a('0x7a'))][(_0x1d0a('0x96'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x432dfd);}_0x4d65c3[_0x56f77c[_0x1d0a('0x5f')]['mapKey']]=_0x56f77c['body'][_0x1d0a('0x83')];return db['CmList'][_0x1d0a('0x62')]({'where':{'id':_0x56f77c[_0x1d0a('0x78')][_0x1d0a('0x80')]},'include':[{'model':db['CmContact'],'as':_0x1d0a('0x9a'),'where':_0x4d65c3,'limit':0x1,'order':[[_0x1d0a('0x7e'),_0x1d0a('0x9b')]]}]});})[_0x1d0a('0x23')](handleEntityNotFound(_0x273e42,null))[_0x1d0a('0x23')](function(_0x53edc6){if(_0x53edc6){_0x56f77c['list']=_[_0x1d0a('0x9c')](_0x53edc6,[_0x1d0a('0x9a')]);if(_0x53edc6[_0x1d0a('0x9a')][_0x1d0a('0x4f')]){return _0x53edc6['Contacts'][0x0];}var _0x5e3046=_[_0x1d0a('0x1b')](_0x56f77c[_0x1d0a('0x5f')],{'firstName':_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x83')],'ListId':_0x53edc6['id']});_0x5e3046[_0x56f77c[_0x1d0a('0x5f')]['mapKey']]=_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x83')];return db[_0x1d0a('0x79')][_0x1d0a('0x5e')](_0x5e3046,{'fields':_0x27c656,'raw':!![]});}})[_0x1d0a('0x23')](handleEntityNotFound(_0x273e42,null))[_0x1d0a('0x23')](function(_0x3c10e6){if(_0x3c10e6){_0x56f77c[_0x1d0a('0x9d')]=_0x3c10e6;var _0x34578f={'ContactId':_0x3c10e6['id'],'phone':_0x56f77c[_0x1d0a('0x5f')]['from'],'SmsAccountId':_0x12f1c2[_0x1d0a('0x5c')]['id']};var _0x296e9e={'ContactId':_0x3c10e6['id'],'SmsAccountId':_0x12f1c2['params']['id'],'closed':![]};return db[_0x1d0a('0x9e')][_0x1d0a('0x62')]({'where':_0x296e9e})[_0x1d0a('0x23')](function(_0x2c1e37){if(_0x2c1e37){return[_0x2c1e37,![]];}return db['SmsInteraction'][_0x1d0a('0x5e')](_0x34578f)[_0x1d0a('0x23')](function(_0x1bfb0b){return[_0x1bfb0b,!![]];});});}})[_0x1d0a('0x9f')](function(_0x39b4ba,_0x5bd6d2){_0x56f77c[_0x1d0a('0xa0')]=_0x39b4ba['get']({'plain':!![]});_0x56f77c[_0x1d0a('0xa0')][_0x1d0a('0xa1')]=![];if(_0x5bd6d2){if(_0x56f77c[_0x1d0a('0x78')][_0x1d0a('0xa2')]){_0x56f77c[_0x1d0a('0x76')][_0x1d0a('0xa3')]({'id':0x0,'priority':_0x56f77c['applications'][_0x1d0a('0x4f')]+0x1,'app':_0x1d0a('0xa4'),'appdata':_0x1d0a('0xa5'),'interval':_0x1d0a('0xa6')});}_0x56f77c[_0x1d0a('0xa0')][_0x1d0a('0xa1')]=!![];}return db[_0x1d0a('0xa7')][_0x1d0a('0x5e')]({'phone':_0x56f77c['body'][_0x1d0a('0x83')],'messageId':_0x56f77c['body'][_0x1d0a('0x86')],'body':_0x56f77c['body'][_0x1d0a('0x5f')],'SmsAccountId':_0x12f1c2[_0x1d0a('0x5c')]['id'],'SmsInteractionId':_0x39b4ba['id'],'direction':'in','ContactId':_0x39b4ba[_0x1d0a('0xa8')],'AttachmentId':_0x56f77c['body']['AttachmentId']});})[_0x1d0a('0x23')](function(_0x5e169c){_0x56f77c['message']=_0x5e169c;if(_0x56f77c[_0x1d0a('0xa0')][_0x1d0a('0xa9')]){return db[_0x1d0a('0xaa')][_0x1d0a('0x62')]({'attributes':['id','name'],'where':{'id':_0x56f77c[_0x1d0a('0xa0')][_0x1d0a('0xa9')]}})['then'](function(_0x502f69){if(_0x502f69){_0x56f77c[_0x1d0a('0x76')][_0x1d0a('0xab')]({'id':0x0,'priority':0x0,'app':_0x1d0a('0xac'),'appdata':_0x502f69[_0x1d0a('0x3d')]+','+(_0x56f77c['account'][_0x1d0a('0xad')]||0xa),'interval':_0x1d0a('0xa6')});}return respondWithRpcPromise(_0x1d0a('0xae'),_0x1d0a('0xaf'),_0x56f77c);});}return respondWithRpcPromise(_0x1d0a('0xae'),_0x1d0a('0xaf'),_0x56f77c);})[_0x1d0a('0x23')](function(_0x474e55){if(_0x474e55){var _0x37e72f=0xc8;var _0x1c04a9=_0x1d0a('0xb0');logger['info'](_0x1d0a('0x28'),_0x1c04a9,_0x37e72f,'entity\x20found');logger[_0x1d0a('0x27')](_0x1d0a('0xb1'),_0x1c04a9,_0x37e72f,_0x1d0a('0xb2'),JSON[_0x1d0a('0x29')](_0x474e55));if(_0x56f77c[_0x1d0a('0x78')]['type']===_0x1d0a('0x82')){return _0x273e42['status'](_0x37e72f)['set'](_0x1d0a('0xb3'),_0x1d0a('0xb4'))[_0x1d0a('0x3e')](_0x1d0a('0xb5'));}else{return _0x273e42[_0x1d0a('0x2e')](_0x37e72f)[_0x1d0a('0x30')](_0x474e55);}}})[_0x1d0a('0x5a')](handleError(_0x273e42,null));};exports[_0x1d0a('0xb6')]=function(_0x17f365,_0x1c14a2,_0x2b6c2f){return db[_0x1d0a('0x43')][_0x1d0a('0x6c')]({'where':{'id':_0x17f365['params']['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x1c14a2,null))['then'](function(_0x4c3d89){if(_0x4c3d89){return db['sequelize'][_0x1d0a('0xb7')](function(_0x3fe160){return db[_0x1d0a('0xb8')][_0x1d0a('0x39')]({'where':{'SmsAccountId':_0x17f365[_0x1d0a('0x5c')]['id']},'transaction':_0x3fe160})[_0x1d0a('0x23')](function(_0x9ad662){var _0x4e8d3b=_['map'](_0x17f365[_0x1d0a('0x5f')],function(_0x14d44e){_0x14d44e[_0x1d0a('0x69')]=_0x17f365[_0x1d0a('0x5c')]['id'];return _0x14d44e;});return db['SmsApplication'][_0x1d0a('0xb9')](_0x4e8d3b,{'transaction':_0x3fe160});});})[_0x1d0a('0x23')](function(){return db[_0x1d0a('0xb8')][_0x1d0a('0xba')]({'where':{'SmsAccountId':_0x17f365[_0x1d0a('0x5c')]['id']},'order':_0x1d0a('0xbb')});});}})[_0x1d0a('0x23')](respondWithResult(_0x1c14a2,null))[_0x1d0a('0x5a')](handleError(_0x1c14a2,null));};exports[_0x1d0a('0xbc')]=function(_0x1de524,_0x36feaf,_0x166861){var _0x4f82e3={};var _0x394e91={};var _0x3e1132;var _0x5bc500;return db['SmsAccount']['findOne']({'where':{'id':_0x1de524[_0x1d0a('0x5c')]['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x36feaf,null))[_0x1d0a('0x23')](function(_0x4f79f0){if(_0x4f79f0){_0x3e1132=_0x4f79f0;_0x394e91[_0x1d0a('0x48')]=_[_0x1d0a('0x49')](db['SmsApplication']['rawAttributes']);_0x394e91[_0x1d0a('0x4a')]=_['keys'](_0x1de524['query']);_0x394e91[_0x1d0a('0x4b')]=_[_0x1d0a('0x4c')](_0x394e91['model'],_0x394e91[_0x1d0a('0x4a')]);_0x4f82e3[_0x1d0a('0x4e')]=_['intersection'](_0x394e91[_0x1d0a('0x48')],qs[_0x1d0a('0x4d')](_0x1de524[_0x1d0a('0x4a')]['fields']));_0x4f82e3[_0x1d0a('0x4e')]=_0x4f82e3[_0x1d0a('0x4e')]['length']?_0x4f82e3[_0x1d0a('0x4e')]:_0x394e91[_0x1d0a('0x48')];_0x4f82e3[_0x1d0a('0x52')]=qs['sort'](_0x1de524[_0x1d0a('0x4a')][_0x1d0a('0x53')]);_0x4f82e3[_0x1d0a('0x54')]=qs[_0x1d0a('0x4b')](_[_0x1d0a('0x55')](_0x1de524[_0x1d0a('0x4a')],_0x394e91[_0x1d0a('0x4b')]));if(_0x1de524['query'][_0x1d0a('0x56')]){_0x4f82e3[_0x1d0a('0x54')]=_[_0x1d0a('0x5d')](_0x4f82e3[_0x1d0a('0x54')],{'$or':_[_0x1d0a('0x42')](_0x4f82e3[_0x1d0a('0x4e')],function(_0x452102){var _0x363e27={};_0x363e27[_0x452102]={'$like':'%'+_0x1de524[_0x1d0a('0x4a')][_0x1d0a('0x56')]+'%'};return _0x363e27;})});}_0x4f82e3=_[_0x1d0a('0x5d')]({},_0x4f82e3,_0x1de524['options']);return _0x3e1132[_0x1d0a('0xbc')](_0x4f82e3);}})[_0x1d0a('0x23')](function(_0x3cafb7){if(_0x3cafb7){_0x5bc500=_0x3cafb7['length'];if(!_0x1de524[_0x1d0a('0x4a')][_0x1d0a('0x50')]('nolimit')){_0x4f82e3[_0x1d0a('0x32')]=qs['limit'](_0x1de524['query']['limit']);_0x4f82e3[_0x1d0a('0x31')]=qs[_0x1d0a('0x31')](_0x1de524[_0x1d0a('0x4a')][_0x1d0a('0x31')]);}return _0x3e1132[_0x1d0a('0xbc')](_0x4f82e3);}})[_0x1d0a('0x23')](function(_0x5d42a5){if(_0x5d42a5){return _0x5d42a5?{'count':_0x5bc500,'rows':_0x5d42a5}:null;}})[_0x1d0a('0x23')](respondWithResult(_0x36feaf,null))['catch'](handleError(_0x36feaf,null));};exports[_0x1d0a('0xbd')]=function(_0x13cb97,_0x25845c,_0x1e2982){var _0x4ad69c={'raw':![],'where':{}};var _0x41b17a={};var _0x5eef00={'count':0x0,'rows':[]};return db[_0x1d0a('0x43')]['findOne']({'where':{'id':_0x13cb97[_0x1d0a('0x5c')]['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x25845c,null))[_0x1d0a('0x23')](function(_0x3b315e){if(_0x3b315e){_0x41b17a['model']=_[_0x1d0a('0x49')](db[_0x1d0a('0x9e')]['rawAttributes']);_0x41b17a[_0x1d0a('0x4a')]=_[_0x1d0a('0x49')](_0x13cb97[_0x1d0a('0x4a')]);_0x41b17a[_0x1d0a('0x4b')]=_[_0x1d0a('0x4c')](_0x41b17a[_0x1d0a('0x48')],_0x41b17a['query']);_0x4ad69c[_0x1d0a('0x4e')]=_[_0x1d0a('0x4c')](_0x41b17a[_0x1d0a('0x48')],qs[_0x1d0a('0x4d')](_0x13cb97[_0x1d0a('0x4a')][_0x1d0a('0x4d')]));_0x4ad69c[_0x1d0a('0x4e')]=_0x4ad69c['attributes'][_0x1d0a('0x4f')]?_0x4ad69c[_0x1d0a('0x4e')]:_0x41b17a[_0x1d0a('0x48')];if(!_0x13cb97[_0x1d0a('0x4a')][_0x1d0a('0x50')]('nolimit')){_0x4ad69c[_0x1d0a('0x32')]=qs[_0x1d0a('0x32')](_0x13cb97[_0x1d0a('0x4a')][_0x1d0a('0x32')]);_0x4ad69c[_0x1d0a('0x31')]=qs[_0x1d0a('0x31')](_0x13cb97[_0x1d0a('0x4a')][_0x1d0a('0x31')]);}_0x4ad69c['order']=qs[_0x1d0a('0x53')](_0x13cb97[_0x1d0a('0x4a')][_0x1d0a('0x53')]);_0x4ad69c[_0x1d0a('0x54')]=qs[_0x1d0a('0x4b')](_['pick'](_0x13cb97[_0x1d0a('0x4a')],_0x41b17a[_0x1d0a('0x4b')]));_0x4ad69c[_0x1d0a('0x54')]['SmsAccountId']=_0x3b315e['id'];if(_0x13cb97['query'][_0x1d0a('0x56')]){_0x4ad69c[_0x1d0a('0x54')]=_[_0x1d0a('0x5d')](_0x4ad69c[_0x1d0a('0x54')],{'$or':_[_0x1d0a('0x42')](_0x4ad69c[_0x1d0a('0x4e')],function(_0x12a25e){var _0x1bc6a2={};_0x1bc6a2[_0x12a25e]={'$like':'%'+_0x13cb97[_0x1d0a('0x4a')][_0x1d0a('0x56')]+'%'};return _0x1bc6a2;})});}_0x4ad69c=_['merge']({},_0x4ad69c,_0x13cb97[_0x1d0a('0x6d')]);return db[_0x1d0a('0x9e')]['count']({'where':_0x4ad69c[_0x1d0a('0x54')]})[_0x1d0a('0x23')](function(_0x49df58){_0x5eef00[_0x1d0a('0x34')]=_0x49df58;if(_0x13cb97['query']['includeAll']){_0x4ad69c[_0x1d0a('0x58')]=[{'model':db[_0x1d0a('0x79')],'as':_0x1d0a('0xbe'),'required':![]},{'model':db[_0x1d0a('0xaa')],'as':_0x1d0a('0xbf'),'attributes':['name',_0x1d0a('0xc0'),_0x1d0a('0xc1')],'required':![]},{'model':db[_0x1d0a('0xc2')],'as':_0x1d0a('0xc3'),'attributes':['id',_0x1d0a('0x3d'),_0x1d0a('0xc4')],'where':_0x13cb97[_0x1d0a('0x4a')]['tag']?{'id':_0x13cb97[_0x1d0a('0x4a')][_0x1d0a('0xc5')]}:undefined,'required':_0x13cb97[_0x1d0a('0x4a')][_0x1d0a('0xc5')]?!![]:![]}];}return db['SmsInteraction'][_0x1d0a('0x6f')](_0x4ad69c);})['then'](function(_0x1e9366){_0x5eef00['rows']=_0x1e9366;return _0x5eef00;});}})['then'](respondWithFilteredResult(_0x25845c,_0x4ad69c))['catch'](handleError(_0x25845c,null));};exports[_0x1d0a('0x3e')]=function(_0xe9ec14,_0x50ff1c,_0x2722c7){var _0x5b4054,_0x4367ca,_0x3445d1;if(_['isNil'](_0xe9ec14[_0x1d0a('0x5f')][_0x1d0a('0x5f')])||_0xe9ec14[_0x1d0a('0x5f')][_0x1d0a('0x5f')]===''){throw new db['Sequelize'][(_0x1d0a('0x96'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x1d0a('0x95')](_0xe9ec14[_0x1d0a('0x5f')]['to'])){throw new db[(_0x1d0a('0x7a'))][(_0x1d0a('0x96'))]('to\x20is\x20mandatory');}_0x5b4054=_0xe9ec14['body']['to'];return db[_0x1d0a('0x43')]['find']({'where':{'id':_0xe9ec14[_0x1d0a('0x5c')]['id']},'include':[{'model':db['CmList'],'as':_0x1d0a('0xc6'),'include':[{'model':db[_0x1d0a('0x79')],'as':_0x1d0a('0x9a'),'where':{'mobile':_0x5b4054},'limit':0x1,'order':[[_0x1d0a('0x7e'),_0x1d0a('0x9b')]]}]}]})['then'](handleEntityNotFound(_0x50ff1c,null))['then'](function(_0x12ab91){if(_0x12ab91&&_0x12ab91[_0x1d0a('0xc6')]){_0x4367ca=_0x12ab91[_0x1d0a('0x3a')]({'plain':!![]});if(_0x4367ca[_0x1d0a('0xc6')]&&_0x4367ca['List'][_0x1d0a('0x9a')]['length']){return _0x4367ca[_0x1d0a('0xc6')][_0x1d0a('0x9a')][0x0];}return db[_0x1d0a('0x79')][_0x1d0a('0x5e')](_['defaults'](_0xe9ec14['body'],{'firstName':_0x5b4054,'mobile':_0x5b4054,'phone':_0x5b4054,'ListId':_0x4367ca['ListId']}));}})[_0x1d0a('0x23')](handleEntityNotFound(_0x50ff1c,null))[_0x1d0a('0x23')](function(_0x2618af){if(_0x2618af){_0x3445d1=_0x2618af;return db[_0x1d0a('0x9e')]['find']({'where':{'ContactId':_0x3445d1['id'],'closed':![],'SmsAccountId':_0x4367ca['id']}})['then'](function(_0x3894e4){if(_0x3894e4){return[_0x3894e4,![]];}return db['SmsInteraction'][_0x1d0a('0x5e')]({'UserId':_0xe9ec14[_0x1d0a('0x60')]['id'],'ContactId':_0x3445d1['id'],'SmsAccountId':_0x4367ca['id'],'phone':_0x5b4054,'firstMsgDirection':_0x1d0a('0xc7'),'Messages':[_[_0x1d0a('0x5d')](_0xe9ec14['body'],{'read':![],'body':_0xe9ec14[_0x1d0a('0x5f')][_0x1d0a('0x5f')],'phone':_0x5b4054,'SmsAccountId':_0x4367ca['id'],'UserId':_0xe9ec14[_0x1d0a('0x60')]['id'],'ContactId':_0x3445d1['id']})]},{'include':[{'model':db['SmsMessage'],'as':_0x1d0a('0xc8')}]})[_0x1d0a('0x23')](function(_0x2ef8f5){return[_0x2ef8f5,!![]];});});}})[_0x1d0a('0x9f')](function(_0x11d4a7,_0x5cd87b){if(_0x5cd87b){return _0x11d4a7;}return db[_0x1d0a('0xa7')][_0x1d0a('0x5e')](_['merge'](_0xe9ec14[_0x1d0a('0x5f')],{'read':![],'body':_0xe9ec14[_0x1d0a('0x5f')][_0x1d0a('0x5f')],'phone':_0x5b4054,'SmsAccountId':_0x4367ca['id'],'SmsInteractionId':_0x11d4a7['id'],'UserId':_0xe9ec14[_0x1d0a('0x60')]['id'],'ContactId':_0x3445d1['id']}))[_0x1d0a('0x23')](function(_0x552ba6){_0x11d4a7[_0x1d0a('0xc9')][_0x1d0a('0xc8')]=[];_0x11d4a7[_0x1d0a('0xc9')][_0x1d0a('0xc8')]['push'](_0x552ba6[_0x1d0a('0xc9')]);return _0x11d4a7;});})[_0x1d0a('0x23')](respondWithResult(_0x50ff1c,null))[_0x1d0a('0x5a')](handleError(_0x50ff1c,null));};exports['status']=function(_0x318956,_0x4836ae,_0xcb6c94){if(_0x318956[_0x1d0a('0x5f')]['id']){delete _0x318956[_0x1d0a('0x5f')]['id'];}var _0x5ed51e,_0x3725c6,_0x1419be;return db[_0x1d0a('0x43')][_0x1d0a('0x62')]({'where':{'id':_0x318956['params']['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x4836ae,null))['then'](function(_0x37a11f){if(_0x37a11f){_0x1419be=_0x37a11f;logger[_0x1d0a('0x27')](_0x1d0a('0x28'),_0x1d0a('0x2e'),_0x1d0a('0xca'),_0x37a11f[_0x1d0a('0x46')],util[_0x1d0a('0xcb')](_0x318956['body'],{'showHidden':![],'depth':null}));switch(_0x37a11f['type']){case _0x1d0a('0x88'):if(_0x318956[_0x1d0a('0x5f')][_0x1d0a('0xcc')]&&_0x318956['body'][_0x1d0a('0x2e')]){_0x3725c6=_0x318956[_0x1d0a('0x5f')]['status'];return db[_0x1d0a('0xa7')][_0x1d0a('0x62')]({'where':{'messageId':_0x318956[_0x1d0a('0x5f')][_0x1d0a('0xcc')]}});}break;case _0x1d0a('0x8a'):if(_0x318956[_0x1d0a('0x5f')]['requestid']&&_0x318956[_0x1d0a('0x5f')]['statusInt']){_0x3725c6=_0x318956[_0x1d0a('0x5f')][_0x1d0a('0xcd')];return db[_0x1d0a('0xa7')][_0x1d0a('0x62')]({'where':{'messageId':_0x318956[_0x1d0a('0x5f')][_0x1d0a('0xce')]}});}break;case'clicksend':if(_0x318956['body'][_0x1d0a('0x8b')]&&_0x318956['body'][_0x1d0a('0xcf')]){_0x3725c6=_0x318956[_0x1d0a('0x5f')][_0x1d0a('0xcf')];return db[_0x1d0a('0xa7')]['find']({'where':{'messageId':_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x8b')]}});}break;case _0x1d0a('0x8e'):var _0x5339c4=_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x8f')][0x0];if(_0x5339c4['messageId']&&_0x5339c4[_0x1d0a('0x2e')][_0x1d0a('0xd0')]===_0x1d0a('0xd1')){_0x3725c6=_0x5339c4[_0x1d0a('0x2e')][_0x1d0a('0xd0')];return db[_0x1d0a('0xa7')]['find']({'where':{'messageId':_0x5339c4[_0x1d0a('0x86')]}});}break;case _0x1d0a('0xd2'):if(_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x86')]&&_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x2e')]){_0x3725c6=_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x2e')];return db[_0x1d0a('0xa7')]['find']({'where':{'messageId':_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x86')]}});}break;case _0x1d0a('0xd3'):if(_0x318956[_0x1d0a('0x5f')][0x0][_0x1d0a('0x2b')]['id']){_0x3725c6=_0x318956['body'][0x0][_0x1d0a('0x46')];return db[_0x1d0a('0xa7')][_0x1d0a('0x62')]({'where':{'messageId':_0x318956['body'][0x0]['message']['id']}});}break;case _0x1d0a('0x93'):if(_0x318956['body']['redif']&&_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x2e')]){_0x3725c6=_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x2e')];return db[_0x1d0a('0xa7')][_0x1d0a('0x62')]({'where':{'messageId':_0x318956[_0x1d0a('0x5f')][_0x1d0a('0xd4')]}});}break;}}})[_0x1d0a('0x23')](handleEntityNotFound(_0x4836ae,null))[_0x1d0a('0x23')](function(_0x312106){if(_0x312106){_0x5ed51e=_0x312106;switch(_0x1419be['type']){case'skebby':if(_0x3725c6===_0x1d0a('0xd1')){return _0x5ed51e[_0x1d0a('0x66')]({'read':!![]});}else{logger[_0x1d0a('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x1d0a('0x2e'),_0x1d0a('0x88'),util['inspect'](_0x318956[_0x1d0a('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1d0a('0x8a'):if(_0x3725c6==='1'){return _0x5ed51e[_0x1d0a('0x66')]({'read':!![]});}else{logger[_0x1d0a('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x1d0a('0x2e'),_0x1d0a('0x88'),util['inspect'](_0x318956[_0x1d0a('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1d0a('0xd5'):if(!_0x318956[_0x1d0a('0x5f')][_0x1d0a('0xd6')]&&_0x3725c6>=0xc8&&_0x3725c6<=0xce){return _0x5ed51e[_0x1d0a('0x66')]({'read':!![]});}else{logger[_0x1d0a('0x2a')](_0x1d0a('0x28'),_0x1d0a('0x2e'),'clicksend',util[_0x1d0a('0xcb')](_0x318956[_0x1d0a('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1d0a('0x8e'):var _0x4eca44=_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x8f')][0x0];if(_0x4eca44[_0x1d0a('0x2e')]['groupName']==='DELIVERED'){return _0x5ed51e[_0x1d0a('0x66')]({'read':!![]});}else{logger[_0x1d0a('0x2a')](_0x1d0a('0x28'),'status',_0x1d0a('0x8e'),util[_0x1d0a('0xcb')](_0x318956['body'],{'showHidden':![],'depth':null}));}break;case _0x1d0a('0xd2'):if(_0x3725c6==_0x1d0a('0xd7')||_0x3725c6==_0x1d0a('0xd8')){return _0x5ed51e['update']({'read':!![]});}else{logger[_0x1d0a('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x1d0a('0x2e'),_0x1d0a('0xd2'),util['inspect'](_0x318956[_0x1d0a('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1d0a('0xd3'):if(_0x3725c6==_0x1d0a('0xd9')){return _0x5ed51e['update']({'read':!![]});}else{logger[_0x1d0a('0x2a')](_0x1d0a('0x28'),_0x1d0a('0x2e'),_0x1d0a('0xd3'),util[_0x1d0a('0xcb')](_0x318956[_0x1d0a('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1d0a('0x93'):if(_0x3725c6===_0x1d0a('0xda')||_0x3725c6===_0x1d0a('0xdb')){return _0x5ed51e[_0x1d0a('0x66')]({'read':!![]});}else{logger[_0x1d0a('0x2a')](_0x1d0a('0x28'),_0x1d0a('0x2e'),_0x1d0a('0x93'),util['inspect'](_0x318956[_0x1d0a('0x5f')],{'showHidden':![],'depth':null}));}break;}return _0x5ed51e;}})[_0x1d0a('0x23')](respondWithResult(_0x4836ae,null))[_0x1d0a('0x5a')](handleError(_0x4836ae,null));};exports['statusGet']=function(_0x2b1b31,_0x1672a0,_0x122eae){var _0x293ba4,_0x25e4fd,_0x12b184;return db[_0x1d0a('0x43')]['find']({'where':{'id':_0x2b1b31['params']['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x1672a0,null))['then'](function(_0x4c8ad3){if(_0x4c8ad3){_0x12b184=_0x4c8ad3;logger[_0x1d0a('0x27')](_0x1d0a('0x28'),_0x1d0a('0x2e'),_0x1d0a('0xca'),_0x4c8ad3[_0x1d0a('0x46')],util[_0x1d0a('0xcb')](_0x2b1b31['query'],{'showHidden':![],'depth':null}));switch(_0x4c8ad3['type']){case'csc':if(_0x2b1b31[_0x1d0a('0x4a')][_0x1d0a('0xdc')]&&_0x2b1b31['query'][_0x1d0a('0xdd')]){_0x25e4fd=_0x2b1b31[_0x1d0a('0x4a')][_0x1d0a('0xdd')];return db['SmsMessage']['find']({'where':{'messageId':_0x2b1b31[_0x1d0a('0x4a')]['message-id']}});}break;}}})[_0x1d0a('0x23')](handleEntityNotFound(_0x1672a0,null))[_0x1d0a('0x23')](function(_0x3b35b0){if(_0x3b35b0){_0x293ba4=_0x3b35b0;switch(_0x12b184['type']){case _0x1d0a('0x90'):if(_0x25e4fd==='2'||_0x25e4fd==='6'){return _0x293ba4['update']({'read':!![]});}else{logger[_0x1d0a('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x1d0a('0x2e'),_0x1d0a('0x90'),util['inspect'](_0x2b1b31[_0x1d0a('0x4a')],{'showHidden':![],'depth':null}));};break;}return _0x293ba4;}})[_0x1d0a('0x23')](respondWithResult(_0x1672a0,null))[_0x1d0a('0x5a')](handleError(_0x1672a0,null));};exports[_0x1d0a('0xde')]=function(_0x292bf2,_0x26382d,_0x3c39e4){return db[_0x1d0a('0x43')][_0x1d0a('0x62')]({'where':{'id':_0x292bf2['params']['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x26382d,null))[_0x1d0a('0x23')](function(_0x3af3f2){if(_0x3af3f2){return _0x3af3f2[_0x1d0a('0xde')](_0x292bf2[_0x1d0a('0x5f')][_0x1d0a('0x71')],_['omit'](_0x292bf2[_0x1d0a('0x5f')],[_0x1d0a('0x71'),'id'])||{})[_0x1d0a('0x9f')](function(_0x3bced9){for(var _0x2ac0cb=0x0;_0x2ac0cb<_0x292bf2[_0x1d0a('0x5f')]['ids'][_0x1d0a('0x4f')];_0x2ac0cb+=0x1){socket[_0x1d0a('0xdf')](_0x1d0a('0xe0'),{'UserId':Number(_0x292bf2[_0x1d0a('0x5f')][_0x1d0a('0x71')][_0x2ac0cb]),'SmsAccountId':Number(_0x292bf2[_0x1d0a('0x5c')]['id'])});}return _0x3bced9;});}})[_0x1d0a('0x23')](respondWithResult(_0x26382d,null))[_0x1d0a('0x5a')](handleError(_0x26382d,null));};exports[_0x1d0a('0xe1')]=function(_0x406f11,_0x562fd0,_0x49a6b4){return db[_0x1d0a('0x43')][_0x1d0a('0x62')]({'where':{'id':_0x406f11['params']['id']}})['then'](handleEntityNotFound(_0x562fd0,null))[_0x1d0a('0x23')](function(_0x2cd719){if(_0x2cd719){return _0x2cd719[_0x1d0a('0xe1')](_0x406f11[_0x1d0a('0x4a')][_0x1d0a('0x71')])[_0x1d0a('0x23')](function(){if(_['isArray'](_0x406f11[_0x1d0a('0x4a')]['ids'])){for(var _0x49d285=0x0;_0x49d285<_0x406f11[_0x1d0a('0x4a')][_0x1d0a('0x71')][_0x1d0a('0x4f')];_0x49d285+=0x1){socket[_0x1d0a('0xdf')](_0x1d0a('0xe2'),{'UserId':Number(_0x406f11[_0x1d0a('0x4a')][_0x1d0a('0x71')][_0x49d285]),'SmsAccountId':Number(_0x406f11[_0x1d0a('0x5c')]['id'])});}}else{socket['emit'](_0x1d0a('0xe2'),{'UserId':Number(_0x406f11['query'][_0x1d0a('0x71')]),'SmsAccountId':Number(_0x406f11['params']['id'])});}});}})[_0x1d0a('0x23')](respondWithStatusCode(_0x562fd0,null))[_0x1d0a('0x5a')](handleError(_0x562fd0,null));};exports[_0x1d0a('0xe3')]=function(_0xd81c23,_0x2471b3,_0x368c26){var _0x679b48={};var _0x3dd4a8={};var _0x3e8efc;var _0x6a97ab;return db[_0x1d0a('0x43')][_0x1d0a('0x6c')]({'where':{'id':_0xd81c23['params']['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x2471b3,null))[_0x1d0a('0x23')](function(_0x3a1bd5){if(_0x3a1bd5){_0x3e8efc=_0x3a1bd5;_0x3dd4a8['model']=_[_0x1d0a('0x49')](db[_0x1d0a('0xaa')][_0x1d0a('0x44')]);_0x3dd4a8['query']=_[_0x1d0a('0x49')](_0xd81c23[_0x1d0a('0x4a')]);_0x3dd4a8[_0x1d0a('0x4b')]=_[_0x1d0a('0x4c')](_0x3dd4a8[_0x1d0a('0x48')],_0x3dd4a8[_0x1d0a('0x4a')]);_0x679b48['attributes']=_['intersection'](_0x3dd4a8[_0x1d0a('0x48')],qs['fields'](_0xd81c23[_0x1d0a('0x4a')][_0x1d0a('0x4d')]));_0x679b48[_0x1d0a('0x4e')]=_0x679b48['attributes'][_0x1d0a('0x4f')]?_0x679b48[_0x1d0a('0x4e')]:_0x3dd4a8[_0x1d0a('0x48')];_0x679b48[_0x1d0a('0x52')]=qs[_0x1d0a('0x53')](_0xd81c23[_0x1d0a('0x4a')][_0x1d0a('0x53')]);_0x679b48[_0x1d0a('0x54')]=qs[_0x1d0a('0x4b')](_['pick'](_0xd81c23[_0x1d0a('0x4a')],_0x3dd4a8[_0x1d0a('0x4b')]));if(_0xd81c23[_0x1d0a('0x4a')]['filter']){_0x679b48[_0x1d0a('0x54')]=_[_0x1d0a('0x5d')](_0x679b48['where'],{'$or':_[_0x1d0a('0x42')](_0x679b48['attributes'],function(_0x9d6130){var _0x200cd7={};_0x200cd7[_0x9d6130]={'$like':'%'+_0xd81c23[_0x1d0a('0x4a')][_0x1d0a('0x56')]+'%'};return _0x200cd7;})});}_0x679b48=_['merge']({},_0x679b48,_0xd81c23[_0x1d0a('0x6d')]);return _0x3e8efc[_0x1d0a('0xe3')](_0x679b48);}})[_0x1d0a('0x23')](function(_0x4ffd79){if(_0x4ffd79){_0x6a97ab=_0x4ffd79[_0x1d0a('0x4f')];if(!_0xd81c23['query'][_0x1d0a('0x50')]('nolimit')){_0x679b48['limit']=qs[_0x1d0a('0x32')](_0xd81c23['query'][_0x1d0a('0x32')]);_0x679b48['offset']=qs[_0x1d0a('0x31')](_0xd81c23[_0x1d0a('0x4a')][_0x1d0a('0x31')]);}return _0x3e8efc[_0x1d0a('0xe3')](_0x679b48);}})[_0x1d0a('0x23')](function(_0x43fb5d){if(_0x43fb5d){return _0x43fb5d?{'count':_0x6a97ab,'rows':_0x43fb5d}:null;}})[_0x1d0a('0x23')](respondWithResult(_0x2471b3,null))['catch'](handleError(_0x2471b3,null));};
\ No newline at end of file
index 8f9d260..7dbb91b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79b8=['events','../../mysqldb','SmsAccount','setMaxListeners','save','update','remove','emit','hook','exports'];(function(_0x4aacdc,_0x99bb88){var _0x2c7429=function(_0x1197e0){while(--_0x1197e0){_0x4aacdc['push'](_0x4aacdc['shift']());}};_0x2c7429(++_0x99bb88);}(_0x79b8,0x64));var _0x879b=function(_0x505eae,_0x127237){_0x505eae=_0x505eae-0x0;var _0x2f097a=_0x79b8[_0x505eae];return _0x2f097a;};'use strict';var EventEmitter=require(_0x879b('0x0'));var SmsAccount=require(_0x879b('0x1'))['db'][_0x879b('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x879b('0x3')](0x0);var events={'afterCreate':_0x879b('0x4'),'afterUpdate':_0x879b('0x5'),'afterDestroy':_0x879b('0x6')};function emitEvent(_0x25a813){return function(_0x4154ab,_0x2bf108,_0x58e463){SmsAccountEvents[_0x879b('0x7')](_0x25a813+':'+_0x4154ab['id'],_0x4154ab);SmsAccountEvents[_0x879b('0x7')](_0x25a813,_0x4154ab);_0x58e463(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsAccount[_0x879b('0x8')](e,emitEvent(event));}}module[_0x879b('0x9')]=SmsAccountEvents;
\ No newline at end of file
+var _0x2d37=['hasOwnProperty','hook','exports','events','setMaxListeners','update','emit'];(function(_0x2b1ec0,_0x15ac0a){var _0x15227a=function(_0x576553){while(--_0x576553){_0x2b1ec0['push'](_0x2b1ec0['shift']());}};_0x15227a(++_0x15ac0a);}(_0x2d37,0x1a0));var _0x72d3=function(_0x4f27c0,_0x93696){_0x4f27c0=_0x4f27c0-0x0;var _0x5f0deb=_0x2d37[_0x4f27c0];return _0x5f0deb;};'use strict';var EventEmitter=require(_0x72d3('0x0'));var SmsAccount=require('../../mysqldb')['db']['SmsAccount'];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x72d3('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x72d3('0x2'),'afterDestroy':'remove'};function emitEvent(_0x39752a){return function(_0x139c73,_0x572d77,_0x21d12a){SmsAccountEvents[_0x72d3('0x3')](_0x39752a+':'+_0x139c73['id'],_0x139c73);SmsAccountEvents[_0x72d3('0x3')](_0x39752a,_0x139c73);_0x21d12a(null);};}for(var e in events){if(events[_0x72d3('0x4')](e)){var event=events[e];SmsAccount[_0x72d3('0x5')](e,emitEvent(event));}}module[_0x72d3('0x6')]=SmsAccountEvents;
\ No newline at end of file
index 54bb589..3dca55c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40cb=['api','moment','rimraf','./smsAccount.attributes','exports','define','SmsAccount','sms_accounts','lodash','util','../../config/logger'];(function(_0x43f881,_0xd6e5a2){var _0x365c14=function(_0x50d386){while(--_0x50d386){_0x43f881['push'](_0x43f881['shift']());}};_0x365c14(++_0xd6e5a2);}(_0x40cb,0x105));var _0xb40c=function(_0x3476fc,_0x503b07){_0x3476fc=_0x3476fc-0x0;var _0x53213c=_0x40cb[_0x3476fc];return _0x53213c;};'use strict';var _=require(_0xb40c('0x0'));var util=require(_0xb40c('0x1'));var logger=require(_0xb40c('0x2'))(_0xb40c('0x3'));var moment=require(_0xb40c('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb40c('0x5'));var config=require('../../config/environment');var attributes=require(_0xb40c('0x6'));module[_0xb40c('0x7')]=function(_0xf28b4f,_0xfe8ac0){return _0xf28b4f[_0xb40c('0x8')](_0xb40c('0x9'),attributes,{'tableName':_0xb40c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8e54=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./smsAccount.attributes','exports','define','SmsAccount','sms_accounts','lodash','util'];(function(_0x161f59,_0x42e9ff){var _0x3ffa0e=function(_0x3aef14){while(--_0x3aef14){_0x161f59['push'](_0x161f59['shift']());}};_0x3ffa0e(++_0x42e9ff);}(_0x8e54,0x108));var _0x48e5=function(_0x298dc7,_0x5114fb){_0x298dc7=_0x298dc7-0x0;var _0x30ec59=_0x8e54[_0x298dc7];return _0x30ec59;};'use strict';var _=require(_0x48e5('0x0'));var util=require(_0x48e5('0x1'));var logger=require(_0x48e5('0x2'))(_0x48e5('0x3'));var moment=require(_0x48e5('0x4'));var BPromise=require(_0x48e5('0x5'));var rp=require(_0x48e5('0x6'));var fs=require('fs');var path=require(_0x48e5('0x7'));var rimraf=require('rimraf');var config=require(_0x48e5('0x8'));var attributes=require(_0x48e5('0x9'));module[_0x48e5('0xa')]=function(_0x7112f7,_0x7b6fc6){return _0x7112f7[_0x48e5('0xb')](_0x48e5('0xc'),attributes,{'tableName':_0x48e5('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 93cda0a..aac5520 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3d3=['request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','ShowSmsAccount','options','raw','where','attributes','include','map','model','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s'];(function(_0x312e90,_0x47626f){var _0x21790b=function(_0x38f4dc){while(--_0x38f4dc){_0x312e90['push'](_0x312e90['shift']());}};_0x21790b(++_0x47626f);}(_0xd3d3,0x1cb));var _0x3d3d=function(_0x5a79e2,_0x319b1a){_0x5a79e2=_0x5a79e2-0x0;var _0x266c45=_0xd3d3[_0x5a79e2];return _0x266c45;};'use strict';var _=require(_0x3d3d('0x0'));var util=require(_0x3d3d('0x1'));var moment=require(_0x3d3d('0x2'));var BPromise=require(_0x3d3d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3d3d('0x4'));var db=require(_0x3d3d('0x5'))['db'];var utils=require(_0x3d3d('0x6'));var logger=require(_0x3d3d('0x7'))(_0x3d3d('0x8'));var config=require('../../config/environment');var jayson=require(_0x3d3d('0x9'));var client=jayson[_0x3d3d('0xa')][_0x3d3d('0xb')]({'port':0x232a});config[_0x3d3d('0xc')]=_[_0x3d3d('0xd')](config[_0x3d3d('0xc')],{'host':_0x3d3d('0xe'),'port':0x18eb});var socket=require(_0x3d3d('0xf'))(new Redis(config['redis']));require(_0x3d3d('0x10'))[_0x3d3d('0x11')](socket);function respondWithRpcPromise(_0x339579,_0x1439db,_0x53cfa8){return new BPromise(function(_0x2b9d44,_0x37dfcf){return client[_0x3d3d('0x12')](_0x339579,_0x53cfa8)[_0x3d3d('0x13')](function(_0x202927){logger[_0x3d3d('0x14')](_0x3d3d('0x15'),_0x1439db,_0x3d3d('0x16'));logger[_0x3d3d('0x17')](_0x3d3d('0x18'),_0x1439db,_0x3d3d('0x16'),JSON['stringify'](_0x202927));if(_0x202927[_0x3d3d('0x19')]){if(_0x202927['error'][_0x3d3d('0x1a')]===0x1f4){logger['error'](_0x3d3d('0x15'),_0x1439db,_0x202927[_0x3d3d('0x19')][_0x3d3d('0x1b')]);return _0x37dfcf(_0x202927['error'][_0x3d3d('0x1b')]);}logger[_0x3d3d('0x19')](_0x3d3d('0x15'),_0x1439db,_0x202927[_0x3d3d('0x19')][_0x3d3d('0x1b')]);return _0x2b9d44(_0x202927[_0x3d3d('0x19')][_0x3d3d('0x1b')]);}else{logger['info'](_0x3d3d('0x15'),_0x1439db,_0x3d3d('0x16'));_0x2b9d44(_0x202927['result'][_0x3d3d('0x1b')]);}})[_0x3d3d('0x1c')](function(_0x179fc9){logger[_0x3d3d('0x19')]('SmsAccount,\x20%s,\x20%s',_0x1439db,_0x179fc9);_0x37dfcf(_0x179fc9);});});}exports[_0x3d3d('0x1d')]=function(_0xd60b8){var _0x33cb7c=this;return new Promise(function(_0xa42fc4,_0x59ba4f){return db['SmsAccount']['find']({'raw':_0xd60b8[_0x3d3d('0x1e')]?_0xd60b8['options'][_0x3d3d('0x1f')]===undefined?!![]:![]:!![],'where':_0xd60b8[_0x3d3d('0x1e')]?_0xd60b8['options'][_0x3d3d('0x20')]||null:null,'attributes':_0xd60b8[_0x3d3d('0x1e')]?_0xd60b8['options'][_0x3d3d('0x21')]||null:null,'include':_0xd60b8[_0x3d3d('0x1e')]?_0xd60b8['options'][_0x3d3d('0x22')]?_[_0x3d3d('0x23')](_0xd60b8[_0x3d3d('0x1e')][_0x3d3d('0x22')],function(_0x4ebcd3){return{'model':db[_0x4ebcd3[_0x3d3d('0x24')]],'as':_0x4ebcd3['as'],'attributes':_0x4ebcd3[_0x3d3d('0x21')],'include':_0x4ebcd3[_0x3d3d('0x22')]?_[_0x3d3d('0x23')](_0x4ebcd3['include'],function(_0x5163c1){return{'model':db[_0x5163c1[_0x3d3d('0x24')]],'as':_0x5163c1['as'],'attributes':_0x5163c1[_0x3d3d('0x21')],'include':_0x5163c1['include']?_[_0x3d3d('0x23')](_0x5163c1[_0x3d3d('0x22')],function(_0x18252c){return{'model':db[_0x18252c[_0x3d3d('0x24')]],'as':_0x18252c['as'],'attributes':_0x18252c[_0x3d3d('0x21')]};}):[]};}):[]};}):[]:[]})[_0x3d3d('0x13')](function(_0x3132d6){logger['info'](_0x3d3d('0x1d'),_0xd60b8);logger[_0x3d3d('0x17')](_0x3d3d('0x1d'),_0xd60b8,JSON['stringify'](_0x3132d6));_0xa42fc4(_0x3132d6);})['catch'](function(_0x34c575){logger[_0x3d3d('0x19')]('ShowSmsAccount',_0x34c575['message'],_0xd60b8);_0x59ba4f(_0x33cb7c['error'](0x1f4,_0x34c575[_0x3d3d('0x1b')]));});});};
\ No newline at end of file
+var _0x9251=['model','util','moment','bluebird','randomstring','ioredis','../../mysqldb','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ShowSmsAccount','SmsAccount','find','options','where','attributes','include','map'];(function(_0x42e980,_0x407b17){var _0x3c0468=function(_0x41d359){while(--_0x41d359){_0x42e980['push'](_0x42e980['shift']());}};_0x3c0468(++_0x407b17);}(_0x9251,0xd3));var _0x1925=function(_0x236d24,_0x29e80a){_0x236d24=_0x236d24-0x0;var _0x1574cf=_0x9251[_0x236d24];return _0x1574cf;};'use strict';var _=require('lodash');var util=require(_0x1925('0x0'));var moment=require(_0x1925('0x1'));var BPromise=require(_0x1925('0x2'));var rs=require(_0x1925('0x3'));var fs=require('fs');var Redis=require(_0x1925('0x4'));var db=require(_0x1925('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x1925('0x6'));var client=jayson[_0x1925('0x7')][_0x1925('0x8')]({'port':0x232a});config[_0x1925('0x9')]=_[_0x1925('0xa')](config[_0x1925('0x9')],{'host':_0x1925('0xb'),'port':0x18eb});var socket=require(_0x1925('0xc'))(new Redis(config[_0x1925('0x9')]));require(_0x1925('0xd'))[_0x1925('0xe')](socket);function respondWithRpcPromise(_0x54d1a9,_0x513f71,_0x37ca29){return new BPromise(function(_0x3b7d2d,_0x41bf5b){return client[_0x1925('0xf')](_0x54d1a9,_0x37ca29)[_0x1925('0x10')](function(_0xc248a0){logger[_0x1925('0x11')](_0x1925('0x12'),_0x513f71,_0x1925('0x13'));logger['debug'](_0x1925('0x14'),_0x513f71,'request\x20sent',JSON[_0x1925('0x15')](_0xc248a0));if(_0xc248a0['error']){if(_0xc248a0['error']['code']===0x1f4){logger[_0x1925('0x16')](_0x1925('0x12'),_0x513f71,_0xc248a0[_0x1925('0x16')]['message']);return _0x41bf5b(_0xc248a0[_0x1925('0x16')][_0x1925('0x17')]);}logger[_0x1925('0x16')]('SmsAccount,\x20%s,\x20%s',_0x513f71,_0xc248a0[_0x1925('0x16')]['message']);return _0x3b7d2d(_0xc248a0[_0x1925('0x16')][_0x1925('0x17')]);}else{logger[_0x1925('0x11')](_0x1925('0x12'),_0x513f71,'request\x20sent');_0x3b7d2d(_0xc248a0[_0x1925('0x18')][_0x1925('0x17')]);}})[_0x1925('0x19')](function(_0x2ed1bb){logger['error'](_0x1925('0x12'),_0x513f71,_0x2ed1bb);_0x41bf5b(_0x2ed1bb);});});}exports[_0x1925('0x1a')]=function(_0x3385fa){var _0x48bafa=this;return new Promise(function(_0x51868e,_0x444cd4){return db[_0x1925('0x1b')][_0x1925('0x1c')]({'raw':_0x3385fa[_0x1925('0x1d')]?_0x3385fa[_0x1925('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x3385fa['options']?_0x3385fa['options'][_0x1925('0x1e')]||null:null,'attributes':_0x3385fa['options']?_0x3385fa[_0x1925('0x1d')][_0x1925('0x1f')]||null:null,'include':_0x3385fa[_0x1925('0x1d')]?_0x3385fa[_0x1925('0x1d')][_0x1925('0x20')]?_[_0x1925('0x21')](_0x3385fa[_0x1925('0x1d')][_0x1925('0x20')],function(_0x4c08a7){return{'model':db[_0x4c08a7[_0x1925('0x22')]],'as':_0x4c08a7['as'],'attributes':_0x4c08a7[_0x1925('0x1f')],'include':_0x4c08a7[_0x1925('0x20')]?_[_0x1925('0x21')](_0x4c08a7['include'],function(_0x478bf0){return{'model':db[_0x478bf0[_0x1925('0x22')]],'as':_0x478bf0['as'],'attributes':_0x478bf0['attributes'],'include':_0x478bf0[_0x1925('0x20')]?_[_0x1925('0x21')](_0x478bf0[_0x1925('0x20')],function(_0x3d020b){return{'model':db[_0x3d020b['model']],'as':_0x3d020b['as'],'attributes':_0x3d020b[_0x1925('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x1925('0x10')](function(_0x5b814c){logger[_0x1925('0x11')]('ShowSmsAccount',_0x3385fa);logger['debug']('ShowSmsAccount',_0x3385fa,JSON['stringify'](_0x5b814c));_0x51868e(_0x5b814c);})[_0x1925('0x19')](function(_0x299c4d){logger[_0x1925('0x16')](_0x1925('0x1a'),_0x299c4d[_0x1925('0x17')],_0x3385fa);_0x444cd4(_0x48bafa[_0x1925('0x16')](0x1f4,_0x299c4d[_0x1925('0x17')]));});});};
\ No newline at end of file
index 96217a9..d7587b0 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(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xa9e0[_0x6131cd];return _0x47e916;};'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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'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 e36bc91..f5fdb4f 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','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x45e98e,_0x169b60){var _0x374dba=function(_0x597612){while(--_0x597612){_0x45e98e['push'](_0x45e98e['shift']());}};_0x374dba(++_0x169b60);}(_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 _0x55ca=['update','delete','/:id','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','show','create'];(function(_0x4497bf,_0x464dce){var _0x3b734f=function(_0x1c6ff9){while(--_0x1c6ff9){_0x4497bf['push'](_0x4497bf['shift']());}};_0x3b734f(++_0x464dce);}(_0x55ca,0x126));var _0xa55c=function(_0x20dda3,_0xfcb775){_0x20dda3=_0x20dda3-0x0;var _0x547b71=_0x55ca[_0x20dda3];return _0x547b71;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['post']('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0xb')]);router['put']('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xc')]);router[_0xa55c('0xd')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);module[_0xa55c('0x10')]=router;
\ No newline at end of file
index 5d69ebf..f9ad79d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfffa=['sequelize','exports','INTEGER','STRING','noop','TEXT','*,*,*,*'];(function(_0xaea8f,_0x28eb5b){var _0x512d6a=function(_0xa31840){while(--_0xa31840){_0xaea8f['push'](_0xaea8f['shift']());}};_0x512d6a(++_0x28eb5b);}(_0xfffa,0xe7));var _0xafff=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xfffa[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0xafff('0x0'));module[_0xafff('0x1')]={'priority':{'type':Sequelize[_0xafff('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xafff('0x3')],'allowNull':![],'defaultValue':_0xafff('0x4')},'appdata':{'type':Sequelize[_0xafff('0x5')]()},'description':{'type':Sequelize[_0xafff('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xafff('0x6')}};
\ No newline at end of file
+var _0xe3d5=['INTEGER','STRING','noop','TEXT'];(function(_0x5c67c1,_0x31b26c){var _0x5bf1b1=function(_0x28365d){while(--_0x28365d){_0x5c67c1['push'](_0x5c67c1['shift']());}};_0x5bf1b1(++_0x31b26c);}(_0xe3d5,0x158));var _0x5e3d=function(_0x2c2980,_0x34282a){_0x2c2980=_0x2c2980-0x0;var _0x2a20a9=_0xe3d5[_0x2c2980];return _0x2a20a9;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0x5e3d('0x0')],'allowNull':![]},'app':{'type':Sequelize[_0x5e3d('0x1')],'allowNull':![],'defaultValue':_0x5e3d('0x2')},'appdata':{'type':Sequelize[_0x5e3d('0x3')]()},'description':{'type':Sequelize[_0x5e3d('0x1')]},'interval':{'type':Sequelize[_0x5e3d('0x1')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 3b85200..e2fcd21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ab6=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','Content-Range','reject','save','then','end','stack','send','index','map','SmsApplication','rawAttributes','fieldName','type','key','model','name','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','offset','sort','filters','pick','where','filter','merge','includeAll','include','findAll','show','params','keys','find','catch','create','body','update','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service'];(function(_0x13ca24,_0x2da5bb){var _0x10dcd3=function(_0x9d5e5f){while(--_0x9d5e5f){_0x13ca24['push'](_0x13ca24['shift']());}};_0x10dcd3(++_0x2da5bb);}(_0x3ab6,0x1a9));var _0x63ab=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3ab6[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x63ab('0x0'));var rimraf=require(_0x63ab('0x1'));var zipdir=require(_0x63ab('0x2'));var jsonpatch=require(_0x63ab('0x3'));var rp=require(_0x63ab('0x4'));var moment=require(_0x63ab('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x63ab('0x6'));var util=require(_0x63ab('0x7'));var path=require(_0x63ab('0x8'));var sox=require(_0x63ab('0x9'));var csv=require(_0x63ab('0xa'));var ejs=require(_0x63ab('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x63ab('0xc'));var squel=require(_0x63ab('0xd'));var crypto=require('crypto');var jsforce=require(_0x63ab('0xe'));var deskjs=require(_0x63ab('0xf'));var toCsv=require(_0x63ab('0xa'));var querystring=require('querystring');var Papa=require(_0x63ab('0x10'));var Redis=require(_0x63ab('0x11'));var authService=require(_0x63ab('0x12'));var qs=require(_0x63ab('0x13'));var as=require(_0x63ab('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x63ab('0x15'))('api');var utils=require(_0x63ab('0x16'));var config=require(_0x63ab('0x17'));var licenseUtil=require(_0x63ab('0x18'));var db=require(_0x63ab('0x19'))['db'];function respondWithStatusCode(_0x3d41f6,_0x1d4cd4){_0x1d4cd4=_0x1d4cd4||0xcc;return function(_0x87abaa){if(_0x87abaa){return _0x3d41f6[_0x63ab('0x1a')](_0x1d4cd4);}return _0x3d41f6['status'](_0x1d4cd4)['end']();};}function respondWithResult(_0x4ae8,_0x861bb3){_0x861bb3=_0x861bb3||0xc8;return function(_0x3aaab2){if(_0x3aaab2){return _0x4ae8[_0x63ab('0x1b')](_0x861bb3)[_0x63ab('0x1c')](_0x3aaab2);}};}function respondWithFilteredResult(_0x4c7ad0,_0x13ee95){return function(_0x4c5c36){if(_0x4c5c36){var _0x1ca1d6=typeof _0x13ee95['offset']===_0x63ab('0x1d')&&typeof _0x13ee95[_0x63ab('0x1e')]===_0x63ab('0x1d');var _0x294135=_0x4c5c36[_0x63ab('0x1f')];var _0x3abd6a=_0x1ca1d6?0x0:_0x13ee95['offset'];var _0x20e340=_0x1ca1d6?_0x4c5c36[_0x63ab('0x1f')]:_0x13ee95['offset']+_0x13ee95[_0x63ab('0x1e')];var _0x17cfc1;if(_0x20e340>=_0x294135){_0x20e340=_0x294135;_0x17cfc1=0xc8;}else{_0x17cfc1=0xce;}_0x4c7ad0[_0x63ab('0x1b')](_0x17cfc1);return _0x4c7ad0['set'](_0x63ab('0x20'),_0x3abd6a+'-'+_0x20e340+'/'+_0x294135)[_0x63ab('0x1c')](_0x4c5c36);}return null;};}function patchUpdates(_0xaa527b){return function(_0x56d95d){try{jsonpatch['apply'](_0x56d95d,_0xaa527b,!![]);}catch(_0x55bedb){return BPromise[_0x63ab('0x21')](_0x55bedb);}return _0x56d95d[_0x63ab('0x22')]();};}function saveUpdates(_0xb57b67,_0x4ed665){return function(_0x2b52b5){if(_0x2b52b5){return _0x2b52b5['update'](_0xb57b67)[_0x63ab('0x23')](function(_0x126c8d){return _0x126c8d;});}return null;};}function removeEntity(_0x5f104e,_0xb10e8e){return function(_0x45e9ad){if(_0x45e9ad){return _0x45e9ad['destroy']()[_0x63ab('0x23')](function(){_0x5f104e['status'](0xcc)[_0x63ab('0x24')]();});}};}function handleEntityNotFound(_0xb8a286,_0x58c413){return function(_0x5e5c5f){if(!_0x5e5c5f){_0xb8a286[_0x63ab('0x1a')](0x194);}return _0x5e5c5f;};}function handleError(_0x581b09,_0x171937){_0x171937=_0x171937||0x1f4;return function(_0x5a3671){logger['error'](_0x5a3671[_0x63ab('0x25')]);if(_0x5a3671['name']){delete _0x5a3671['name'];}_0x581b09['status'](_0x171937)[_0x63ab('0x26')](_0x5a3671);};}exports[_0x63ab('0x27')]=function(_0x582cf7,_0x18ef63){var _0x5bfec5={},_0xf591ec={},_0x59c625={'count':0x0,'rows':[]};var _0x4e4165=_[_0x63ab('0x28')](db[_0x63ab('0x29')][_0x63ab('0x2a')],function(_0x5888c0){return{'name':_0x5888c0[_0x63ab('0x2b')],'type':_0x5888c0[_0x63ab('0x2c')][_0x63ab('0x2d')]};});_0xf591ec[_0x63ab('0x2e')]=_[_0x63ab('0x28')](_0x4e4165,_0x63ab('0x2f'));_0xf591ec[_0x63ab('0x30')]=_['keys'](_0x582cf7[_0x63ab('0x30')]);_0xf591ec['filters']=_[_0x63ab('0x31')](_0xf591ec['model'],_0xf591ec[_0x63ab('0x30')]);_0x5bfec5['attributes']=_[_0x63ab('0x31')](_0xf591ec[_0x63ab('0x2e')],qs[_0x63ab('0x32')](_0x582cf7[_0x63ab('0x30')][_0x63ab('0x32')]));_0x5bfec5[_0x63ab('0x33')]=_0x5bfec5[_0x63ab('0x33')][_0x63ab('0x34')]?_0x5bfec5['attributes']:_0xf591ec[_0x63ab('0x2e')];if(!_0x582cf7[_0x63ab('0x30')][_0x63ab('0x35')](_0x63ab('0x36'))){_0x5bfec5['limit']=qs['limit'](_0x582cf7[_0x63ab('0x30')]['limit']);_0x5bfec5['offset']=qs[_0x63ab('0x37')](_0x582cf7['query'][_0x63ab('0x37')]);}_0x5bfec5['order']=qs[_0x63ab('0x38')](_0x582cf7[_0x63ab('0x30')][_0x63ab('0x38')]);_0x5bfec5['where']=qs[_0x63ab('0x39')](_[_0x63ab('0x3a')](_0x582cf7[_0x63ab('0x30')],_0xf591ec[_0x63ab('0x39')]),_0x4e4165);if(_0x582cf7['query']['filter']){_0x5bfec5[_0x63ab('0x3b')]=_['merge'](_0x5bfec5['where'],{'$or':_[_0x63ab('0x28')](_0x4e4165,function(_0x6853c7){if(_0x6853c7[_0x63ab('0x2c')]!=='VIRTUAL'){var _0x3c64d2={};_0x3c64d2[_0x6853c7['name']]={'$like':'%'+_0x582cf7[_0x63ab('0x30')][_0x63ab('0x3c')]+'%'};return _0x3c64d2;}})});}_0x5bfec5=_[_0x63ab('0x3d')]({},_0x5bfec5,_0x582cf7['options']);var _0x1d4dad={'where':_0x5bfec5['where']};return db[_0x63ab('0x29')][_0x63ab('0x1f')](_0x1d4dad)[_0x63ab('0x23')](function(_0x553a82){_0x59c625[_0x63ab('0x1f')]=_0x553a82;if(_0x582cf7['query'][_0x63ab('0x3e')]){_0x5bfec5[_0x63ab('0x3f')]=[{'all':!![]}];}return db[_0x63ab('0x29')][_0x63ab('0x40')](_0x5bfec5);})[_0x63ab('0x23')](function(_0x27e504){_0x59c625['rows']=_0x27e504;return _0x59c625;})[_0x63ab('0x23')](respondWithFilteredResult(_0x18ef63,_0x5bfec5))['catch'](handleError(_0x18ef63,null));};exports[_0x63ab('0x41')]=function(_0x3557b1,_0x3538dc){var _0x245b36={'raw':!![],'where':{'id':_0x3557b1[_0x63ab('0x42')]['id']}},_0x4080af={};_0x4080af[_0x63ab('0x2e')]=_['keys'](db['SmsApplication'][_0x63ab('0x2a')]);_0x4080af['query']=_[_0x63ab('0x43')](_0x3557b1['query']);_0x4080af['filters']=_[_0x63ab('0x31')](_0x4080af[_0x63ab('0x2e')],_0x4080af['query']);_0x245b36[_0x63ab('0x33')]=_['intersection'](_0x4080af[_0x63ab('0x2e')],qs['fields'](_0x3557b1[_0x63ab('0x30')][_0x63ab('0x32')]));_0x245b36[_0x63ab('0x33')]=_0x245b36['attributes']['length']?_0x245b36[_0x63ab('0x33')]:_0x4080af[_0x63ab('0x2e')];if(_0x3557b1['query'][_0x63ab('0x3e')]){_0x245b36[_0x63ab('0x3f')]=[{'all':!![]}];}_0x245b36=_[_0x63ab('0x3d')]({},_0x245b36,_0x3557b1['options']);return db[_0x63ab('0x29')][_0x63ab('0x44')](_0x245b36)[_0x63ab('0x23')](handleEntityNotFound(_0x3538dc,null))[_0x63ab('0x23')](respondWithResult(_0x3538dc,null))[_0x63ab('0x45')](handleError(_0x3538dc,null));};exports[_0x63ab('0x46')]=function(_0x28b726,_0x2e0b81){return db[_0x63ab('0x29')][_0x63ab('0x46')](_0x28b726[_0x63ab('0x47')],{})[_0x63ab('0x23')](respondWithResult(_0x2e0b81,0xc9))[_0x63ab('0x45')](handleError(_0x2e0b81,null));};exports[_0x63ab('0x48')]=function(_0x12cc14,_0x296dff){if(_0x12cc14[_0x63ab('0x47')]['id']){delete _0x12cc14['body']['id'];}return db[_0x63ab('0x29')][_0x63ab('0x44')]({'where':{'id':_0x12cc14[_0x63ab('0x42')]['id']}})[_0x63ab('0x23')](handleEntityNotFound(_0x296dff,null))['then'](saveUpdates(_0x12cc14[_0x63ab('0x47')],null))[_0x63ab('0x23')](respondWithResult(_0x296dff,null))[_0x63ab('0x45')](handleError(_0x296dff,null));};exports[_0x63ab('0x49')]=function(_0x1e4ffb,_0xd6adc7){return db['SmsApplication'][_0x63ab('0x44')]({'where':{'id':_0x1e4ffb[_0x63ab('0x42')]['id']}})[_0x63ab('0x23')](handleEntityNotFound(_0xd6adc7,null))['then'](removeEntity(_0xd6adc7,null))[_0x63ab('0x45')](handleError(_0xd6adc7,null));};
\ No newline at end of file
+var _0x4993=['error','stack','name','send','map','rawAttributes','fieldName','type','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','order','where','pick','filters','filter','merge','VIRTUAL','options','SmsApplication','include','catch','show','includeAll','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','save','update','then','destroy'];(function(_0x56db44,_0x63219a){var _0x206d12=function(_0x358e6f){while(--_0x358e6f){_0x56db44['push'](_0x56db44['shift']());}};_0x206d12(++_0x63219a);}(_0x4993,0x189));var _0x3499=function(_0x83bf,_0x4b3273){_0x83bf=_0x83bf-0x0;var _0x14a6d3=_0x4993[_0x83bf];return _0x14a6d3;};'use strict';var emlformat=require(_0x3499('0x0'));var rimraf=require(_0x3499('0x1'));var zipdir=require(_0x3499('0x2'));var jsonpatch=require(_0x3499('0x3'));var rp=require(_0x3499('0x4'));var moment=require(_0x3499('0x5'));var BPromise=require(_0x3499('0x6'));var Mustache=require(_0x3499('0x7'));var util=require('util');var path=require(_0x3499('0x8'));var sox=require(_0x3499('0x9'));var csv=require(_0x3499('0xa'));var ejs=require(_0x3499('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x3499('0xc'));var crypto=require(_0x3499('0xd'));var jsforce=require(_0x3499('0xe'));var deskjs=require(_0x3499('0xf'));var toCsv=require(_0x3499('0xa'));var querystring=require('querystring');var Papa=require(_0x3499('0x10'));var Redis=require(_0x3499('0x11'));var authService=require(_0x3499('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x3499('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3499('0x14'))(_0x3499('0x15'));var utils=require(_0x3499('0x16'));var config=require(_0x3499('0x17'));var licenseUtil=require(_0x3499('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x121335,_0x4593ea){_0x4593ea=_0x4593ea||0xcc;return function(_0x4340bc){if(_0x4340bc){return _0x121335[_0x3499('0x19')](_0x4593ea);}return _0x121335[_0x3499('0x1a')](_0x4593ea)[_0x3499('0x1b')]();};}function respondWithResult(_0x5b595c,_0x550cc5){_0x550cc5=_0x550cc5||0xc8;return function(_0x16d651){if(_0x16d651){return _0x5b595c[_0x3499('0x1a')](_0x550cc5)[_0x3499('0x1c')](_0x16d651);}};}function respondWithFilteredResult(_0x4f12fe,_0x4826bf){return function(_0x4cef41){if(_0x4cef41){var _0x139ed5=typeof _0x4826bf[_0x3499('0x1d')]==='undefined'&&typeof _0x4826bf[_0x3499('0x1e')]==='undefined';var _0x25c267=_0x4cef41[_0x3499('0x1f')];var _0x3a7c12=_0x139ed5?0x0:_0x4826bf[_0x3499('0x1d')];var _0x339642=_0x139ed5?_0x4cef41[_0x3499('0x1f')]:_0x4826bf[_0x3499('0x1d')]+_0x4826bf[_0x3499('0x1e')];var _0x249006;if(_0x339642>=_0x25c267){_0x339642=_0x25c267;_0x249006=0xc8;}else{_0x249006=0xce;}_0x4f12fe[_0x3499('0x1a')](_0x249006);return _0x4f12fe[_0x3499('0x20')](_0x3499('0x21'),_0x3a7c12+'-'+_0x339642+'/'+_0x25c267)['json'](_0x4cef41);}return null;};}function patchUpdates(_0x2e177f){return function(_0x53ebb0){try{jsonpatch[_0x3499('0x22')](_0x53ebb0,_0x2e177f,!![]);}catch(_0x4e2cc4){return BPromise['reject'](_0x4e2cc4);}return _0x53ebb0[_0x3499('0x23')]();};}function saveUpdates(_0x46641d,_0x5ccc04){return function(_0x57c31c){if(_0x57c31c){return _0x57c31c[_0x3499('0x24')](_0x46641d)[_0x3499('0x25')](function(_0x3422ca){return _0x3422ca;});}return null;};}function removeEntity(_0x403039,_0x71d9bd){return function(_0x5b7694){if(_0x5b7694){return _0x5b7694[_0x3499('0x26')]()['then'](function(){_0x403039[_0x3499('0x1a')](0xcc)[_0x3499('0x1b')]();});}};}function handleEntityNotFound(_0x105da2,_0x189897){return function(_0x136e48){if(!_0x136e48){_0x105da2['sendStatus'](0x194);}return _0x136e48;};}function handleError(_0x2b7cb5,_0x5b663d){_0x5b663d=_0x5b663d||0x1f4;return function(_0x5db2a0){logger[_0x3499('0x27')](_0x5db2a0[_0x3499('0x28')]);if(_0x5db2a0[_0x3499('0x29')]){delete _0x5db2a0[_0x3499('0x29')];}_0x2b7cb5[_0x3499('0x1a')](_0x5b663d)[_0x3499('0x2a')](_0x5db2a0);};}exports['index']=function(_0x284cbc,_0x362492){var _0x55e51b={},_0x3e3bdd={},_0x4445e0={'count':0x0,'rows':[]};var _0x5c89dc=_[_0x3499('0x2b')](db['SmsApplication'][_0x3499('0x2c')],function(_0x4df330){return{'name':_0x4df330[_0x3499('0x2d')],'type':_0x4df330[_0x3499('0x2e')]['key']};});_0x3e3bdd['model']=_[_0x3499('0x2b')](_0x5c89dc,_0x3499('0x29'));_0x3e3bdd[_0x3499('0x2f')]=_[_0x3499('0x30')](_0x284cbc['query']);_0x3e3bdd['filters']=_[_0x3499('0x31')](_0x3e3bdd[_0x3499('0x32')],_0x3e3bdd[_0x3499('0x2f')]);_0x55e51b['attributes']=_[_0x3499('0x31')](_0x3e3bdd[_0x3499('0x32')],qs['fields'](_0x284cbc[_0x3499('0x2f')][_0x3499('0x33')]));_0x55e51b[_0x3499('0x34')]=_0x55e51b[_0x3499('0x34')][_0x3499('0x35')]?_0x55e51b[_0x3499('0x34')]:_0x3e3bdd['model'];if(!_0x284cbc[_0x3499('0x2f')][_0x3499('0x36')]('nolimit')){_0x55e51b[_0x3499('0x1e')]=qs[_0x3499('0x1e')](_0x284cbc['query'][_0x3499('0x1e')]);_0x55e51b[_0x3499('0x1d')]=qs[_0x3499('0x1d')](_0x284cbc[_0x3499('0x2f')][_0x3499('0x1d')]);}_0x55e51b[_0x3499('0x37')]=qs['sort'](_0x284cbc[_0x3499('0x2f')]['sort']);_0x55e51b[_0x3499('0x38')]=qs['filters'](_[_0x3499('0x39')](_0x284cbc[_0x3499('0x2f')],_0x3e3bdd[_0x3499('0x3a')]),_0x5c89dc);if(_0x284cbc[_0x3499('0x2f')][_0x3499('0x3b')]){_0x55e51b[_0x3499('0x38')]=_[_0x3499('0x3c')](_0x55e51b[_0x3499('0x38')],{'$or':_[_0x3499('0x2b')](_0x5c89dc,function(_0x385fe9){if(_0x385fe9[_0x3499('0x2e')]!==_0x3499('0x3d')){var _0x5a750f={};_0x5a750f[_0x385fe9[_0x3499('0x29')]]={'$like':'%'+_0x284cbc[_0x3499('0x2f')][_0x3499('0x3b')]+'%'};return _0x5a750f;}})});}_0x55e51b=_[_0x3499('0x3c')]({},_0x55e51b,_0x284cbc[_0x3499('0x3e')]);var _0x134c5d={'where':_0x55e51b[_0x3499('0x38')]};return db[_0x3499('0x3f')][_0x3499('0x1f')](_0x134c5d)[_0x3499('0x25')](function(_0x331e6c){_0x4445e0[_0x3499('0x1f')]=_0x331e6c;if(_0x284cbc[_0x3499('0x2f')]['includeAll']){_0x55e51b[_0x3499('0x40')]=[{'all':!![]}];}return db[_0x3499('0x3f')]['findAll'](_0x55e51b);})[_0x3499('0x25')](function(_0x16e862){_0x4445e0['rows']=_0x16e862;return _0x4445e0;})[_0x3499('0x25')](respondWithFilteredResult(_0x362492,_0x55e51b))[_0x3499('0x41')](handleError(_0x362492,null));};exports[_0x3499('0x42')]=function(_0x326550,_0x4678e6){var _0x5ef12c={'raw':!![],'where':{'id':_0x326550['params']['id']}},_0x3cfe55={};_0x3cfe55[_0x3499('0x32')]=_['keys'](db[_0x3499('0x3f')][_0x3499('0x2c')]);_0x3cfe55[_0x3499('0x2f')]=_[_0x3499('0x30')](_0x326550[_0x3499('0x2f')]);_0x3cfe55['filters']=_[_0x3499('0x31')](_0x3cfe55[_0x3499('0x32')],_0x3cfe55[_0x3499('0x2f')]);_0x5ef12c[_0x3499('0x34')]=_[_0x3499('0x31')](_0x3cfe55[_0x3499('0x32')],qs['fields'](_0x326550[_0x3499('0x2f')]['fields']));_0x5ef12c[_0x3499('0x34')]=_0x5ef12c['attributes'][_0x3499('0x35')]?_0x5ef12c['attributes']:_0x3cfe55[_0x3499('0x32')];if(_0x326550[_0x3499('0x2f')][_0x3499('0x43')]){_0x5ef12c[_0x3499('0x40')]=[{'all':!![]}];}_0x5ef12c=_[_0x3499('0x3c')]({},_0x5ef12c,_0x326550[_0x3499('0x3e')]);return db[_0x3499('0x3f')][_0x3499('0x44')](_0x5ef12c)[_0x3499('0x25')](handleEntityNotFound(_0x4678e6,null))[_0x3499('0x25')](respondWithResult(_0x4678e6,null))['catch'](handleError(_0x4678e6,null));};exports[_0x3499('0x45')]=function(_0x394147,_0x18a48f){return db[_0x3499('0x3f')][_0x3499('0x45')](_0x394147[_0x3499('0x46')],{})[_0x3499('0x25')](respondWithResult(_0x18a48f,0xc9))[_0x3499('0x41')](handleError(_0x18a48f,null));};exports['update']=function(_0x3472aa,_0x54b224){if(_0x3472aa[_0x3499('0x46')]['id']){delete _0x3472aa['body']['id'];}return db[_0x3499('0x3f')][_0x3499('0x44')]({'where':{'id':_0x3472aa['params']['id']}})[_0x3499('0x25')](handleEntityNotFound(_0x54b224,null))[_0x3499('0x25')](saveUpdates(_0x3472aa[_0x3499('0x46')],null))[_0x3499('0x25')](respondWithResult(_0x54b224,null))['catch'](handleError(_0x54b224,null));};exports[_0x3499('0x26')]=function(_0x2b6fbd,_0x103800){return db[_0x3499('0x3f')][_0x3499('0x44')]({'where':{'id':_0x2b6fbd[_0x3499('0x47')]['id']}})['then'](handleEntityNotFound(_0x103800,null))[_0x3499('0x25')](removeEntity(_0x103800,null))[_0x3499('0x41')](handleError(_0x103800,null));};
\ No newline at end of file
index 69a08bf..9092508 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed81=['sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','path','../../config/environment','./smsApplication.attributes','exports','define','SmsApplication'];(function(_0x46469d,_0x325310){var _0x407281=function(_0x477e55){while(--_0x477e55){_0x46469d['push'](_0x46469d['shift']());}};_0x407281(++_0x325310);}(_0xed81,0x9d));var _0x1ed8=function(_0x1ed74c,_0x5eb85d){_0x1ed74c=_0x1ed74c-0x0;var _0x598da2=_0xed81[_0x1ed74c];return _0x598da2;};'use strict';var _=require(_0x1ed8('0x0'));var util=require(_0x1ed8('0x1'));var logger=require('../../config/logger')(_0x1ed8('0x2'));var moment=require(_0x1ed8('0x3'));var BPromise=require(_0x1ed8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1ed8('0x5'));var rimraf=require('rimraf');var config=require(_0x1ed8('0x6'));var attributes=require(_0x1ed8('0x7'));module[_0x1ed8('0x8')]=function(_0x56402b,_0xc055e0){return _0x56402b[_0x1ed8('0x9')](_0x1ed8('0xa'),attributes,{'tableName':_0x1ed8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1ed8('0xc'),'collate':_0x1ed8('0xd')});};
\ No newline at end of file
+var _0xf0aa=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsApplication.attributes','exports','define','SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger'];(function(_0xd70515,_0x50cfb3){var _0x1e9a3a=function(_0xbb7d0c){while(--_0xbb7d0c){_0xd70515['push'](_0xd70515['shift']());}};_0x1e9a3a(++_0x50cfb3);}(_0xf0aa,0x16e));var _0xaf0a=function(_0x4bb213,_0xe97108){_0x4bb213=_0x4bb213-0x0;var _0x518991=_0xf0aa[_0x4bb213];return _0x518991;};'use strict';var _=require(_0xaf0a('0x0'));var util=require('util');var logger=require(_0xaf0a('0x1'))(_0xaf0a('0x2'));var moment=require(_0xaf0a('0x3'));var BPromise=require(_0xaf0a('0x4'));var rp=require(_0xaf0a('0x5'));var fs=require('fs');var path=require(_0xaf0a('0x6'));var rimraf=require(_0xaf0a('0x7'));var config=require(_0xaf0a('0x8'));var attributes=require(_0xaf0a('0x9'));module[_0xaf0a('0xa')]=function(_0x4a000b,_0x3f7dbf){return _0x4a000b[_0xaf0a('0xb')](_0xaf0a('0xc'),attributes,{'tableName':_0xaf0a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xaf0a('0xe'),'collate':_0xaf0a('0xf')});};
\ No newline at end of file
index 78ef2bf..cc10d99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf954=['error','code','SmsApplication,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','then','info','SmsApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x296e09,_0x42b025){var _0x225354=function(_0x59523c){while(--_0x59523c){_0x296e09['push'](_0x296e09['shift']());}};_0x225354(++_0x42b025);}(_0xf954,0x10e));var _0x4f95=function(_0x75e81a,_0x55970c){_0x75e81a=_0x75e81a-0x0;var _0x235e84=_0xf954[_0x75e81a];return _0x235e84;};'use strict';var _=require(_0x4f95('0x0'));var util=require(_0x4f95('0x1'));var moment=require(_0x4f95('0x2'));var BPromise=require(_0x4f95('0x3'));var rs=require(_0x4f95('0x4'));var fs=require('fs');var Redis=require(_0x4f95('0x5'));var db=require(_0x4f95('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x4f95('0x7'));var config=require(_0x4f95('0x8'));var jayson=require(_0x4f95('0x9'));var client=jayson[_0x4f95('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x9d6129,_0x414fb1,_0x2b4724){return new BPromise(function(_0x3f8c9a,_0x4a61f7){return client['request'](_0x9d6129,_0x2b4724)[_0x4f95('0xb')](function(_0x22ecb1){logger[_0x4f95('0xc')]('SmsApplication,\x20%s,\x20%s',_0x414fb1,'request\x20sent');logger['debug'](_0x4f95('0xd'),_0x414fb1,_0x4f95('0xe'),JSON[_0x4f95('0xf')](_0x22ecb1));if(_0x22ecb1[_0x4f95('0x10')]){if(_0x22ecb1['error'][_0x4f95('0x11')]===0x1f4){logger[_0x4f95('0x10')](_0x4f95('0x12'),_0x414fb1,_0x22ecb1[_0x4f95('0x10')][_0x4f95('0x13')]);return _0x4a61f7(_0x22ecb1['error'][_0x4f95('0x13')]);}logger[_0x4f95('0x10')](_0x4f95('0x12'),_0x414fb1,_0x22ecb1[_0x4f95('0x10')]['message']);return _0x3f8c9a(_0x22ecb1[_0x4f95('0x10')][_0x4f95('0x13')]);}else{logger[_0x4f95('0xc')]('SmsApplication,\x20%s,\x20%s',_0x414fb1,_0x4f95('0xe'));_0x3f8c9a(_0x22ecb1[_0x4f95('0x14')][_0x4f95('0x13')]);}})[_0x4f95('0x15')](function(_0x3ea415){logger[_0x4f95('0x10')](_0x4f95('0x12'),_0x414fb1,_0x3ea415);_0x4a61f7(_0x3ea415);});});}
\ No newline at end of file
+var _0x905a=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','error','code','message','SmsApplication,\x20%s,\x20%s','info','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils'];(function(_0xfe115f,_0x27e9fe){var _0x57b607=function(_0x1dbe42){while(--_0x1dbe42){_0xfe115f['push'](_0xfe115f['shift']());}};_0x57b607(++_0x27e9fe);}(_0x905a,0xeb));var _0xa905=function(_0x8d798c,_0x30948e){_0x8d798c=_0x8d798c-0x0;var _0x2dd577=_0x905a[_0x8d798c];return _0x2dd577;};'use strict';var _=require(_0xa905('0x0'));var util=require('util');var moment=require(_0xa905('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa905('0x2'));var db=require(_0xa905('0x3'))['db'];var utils=require(_0xa905('0x4'));var logger=require(_0xa905('0x5'))(_0xa905('0x6'));var config=require(_0xa905('0x7'));var jayson=require(_0xa905('0x8'));var client=jayson[_0xa905('0x9')][_0xa905('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3a0072,_0x18c72e,_0x16ac5b){return new BPromise(function(_0x314e6d,_0x51ae6d){return client[_0xa905('0xb')](_0x3a0072,_0x16ac5b)['then'](function(_0x43eced){logger['info']('SmsApplication,\x20%s,\x20%s',_0x18c72e,_0xa905('0xc'));logger[_0xa905('0xd')]('SmsApplication,\x20%s,\x20%s,\x20%s',_0x18c72e,_0xa905('0xc'),JSON['stringify'](_0x43eced));if(_0x43eced['error']){if(_0x43eced[_0xa905('0xe')][_0xa905('0xf')]===0x1f4){logger['error']('SmsApplication,\x20%s,\x20%s',_0x18c72e,_0x43eced[_0xa905('0xe')][_0xa905('0x10')]);return _0x51ae6d(_0x43eced[_0xa905('0xe')][_0xa905('0x10')]);}logger[_0xa905('0xe')](_0xa905('0x11'),_0x18c72e,_0x43eced['error'][_0xa905('0x10')]);return _0x314e6d(_0x43eced['error'][_0xa905('0x10')]);}else{logger[_0xa905('0x12')]('SmsApplication,\x20%s,\x20%s',_0x18c72e,'request\x20sent');_0x314e6d(_0x43eced['result'][_0xa905('0x10')]);}})[_0xa905('0x13')](function(_0x1d393b){logger[_0xa905('0xe')](_0xa905('0x11'),_0x18c72e,_0x1d393b);_0x51ae6d(_0x1d393b);});});}
\ No newline at end of file
index 9294cd0..52ae71c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c00=['smsinteraction:addtags','addTags','/:id','smsinteraction:update','update','delete','smsinteraction:destroy','destroy','removeTags','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','show','/:id/messages','getMessages','post','create','addMessage','/:id/tags','tracked','sms'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x5c00,0x17e));var _0x05c0=function(_0x5e8c98,_0xf42c9c){_0x5e8c98=_0x5e8c98-0x0;var _0x487a2a=_0x5c00[_0x5e8c98];return _0x487a2a;};'use strict';var multer=require(_0x05c0('0x0'));var util=require(_0x05c0('0x1'));var path=require(_0x05c0('0x2'));var timeout=require('connect-timeout');var express=require(_0x05c0('0x3'));var router=express['Router']();var fs_extra=require(_0x05c0('0x4'));var auth=require(_0x05c0('0x5'));var interaction=require(_0x05c0('0x6'));var config=require(_0x05c0('0x7'));var controller=require('./smsInteraction.controller');router[_0x05c0('0x8')]('/',auth[_0x05c0('0x9')](),controller[_0x05c0('0xa')]);router[_0x05c0('0x8')]('/describe',auth[_0x05c0('0x9')](),controller[_0x05c0('0xb')]);router[_0x05c0('0x8')]('/:id',auth[_0x05c0('0x9')](),controller[_0x05c0('0xc')]);router[_0x05c0('0x8')](_0x05c0('0xd'),auth[_0x05c0('0x9')](),controller[_0x05c0('0xe')]);router['get']('/:id/download',auth[_0x05c0('0x9')](),controller['download']);router[_0x05c0('0xf')]('/',auth[_0x05c0('0x9')](),controller[_0x05c0('0x10')]);router['post'](_0x05c0('0xd'),auth['isAuthenticated'](),controller[_0x05c0('0x11')]);router[_0x05c0('0xf')](_0x05c0('0x12'),auth[_0x05c0('0x9')](),interaction[_0x05c0('0x13')](_0x05c0('0x14'),_0x05c0('0x15')),controller[_0x05c0('0x16')]);router['put'](_0x05c0('0x17'),auth[_0x05c0('0x9')](),interaction[_0x05c0('0x13')](_0x05c0('0x14'),_0x05c0('0x18')),controller[_0x05c0('0x19')]);router[_0x05c0('0x1a')](_0x05c0('0x17'),auth[_0x05c0('0x9')](),interaction['tracked'](_0x05c0('0x14'),_0x05c0('0x1b')),controller[_0x05c0('0x1c')]);router['delete'](_0x05c0('0x12'),auth[_0x05c0('0x9')](),controller[_0x05c0('0x1d')]);module[_0x05c0('0x1e')]=router;
\ No newline at end of file
+var _0x0abf=['create','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','update','smsinteraction:destroy','destroy','delete','removeTags','exports','multer','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','index','describe','/:id','show','/:id/messages','download','post'];(function(_0x29d9bf,_0x2056c8){var _0x5a6887=function(_0xc58c72){while(--_0xc58c72){_0x29d9bf['push'](_0x29d9bf['shift']());}};_0x5a6887(++_0x2056c8);}(_0x0abf,0xe8));var _0xf0ab=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x0abf[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0xf0ab('0x0'));var util=require('util');var path=require(_0xf0ab('0x1'));var timeout=require(_0xf0ab('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf0ab('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xf0ab('0x4'));var config=require(_0xf0ab('0x5'));var controller=require(_0xf0ab('0x6'));router[_0xf0ab('0x7')]('/',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x9')]);router[_0xf0ab('0x7')]('/describe',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0xa')]);router[_0xf0ab('0x7')](_0xf0ab('0xb'),auth['isAuthenticated'](),controller[_0xf0ab('0xc')]);router[_0xf0ab('0x7')](_0xf0ab('0xd'),auth['isAuthenticated'](),controller['getMessages']);router[_0xf0ab('0x7')]('/:id/download',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0xe')]);router[_0xf0ab('0xf')]('/',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x10')]);router[_0xf0ab('0xf')](_0xf0ab('0xd'),auth['isAuthenticated'](),controller[_0xf0ab('0x11')]);router[_0xf0ab('0xf')](_0xf0ab('0x12'),auth[_0xf0ab('0x8')](),interaction[_0xf0ab('0x13')](_0xf0ab('0x14'),_0xf0ab('0x15')),controller[_0xf0ab('0x16')]);router[_0xf0ab('0x17')](_0xf0ab('0xb'),auth[_0xf0ab('0x8')](),interaction[_0xf0ab('0x13')](_0xf0ab('0x14'),_0xf0ab('0x18')),controller[_0xf0ab('0x19')]);router['delete'](_0xf0ab('0xb'),auth[_0xf0ab('0x8')](),interaction[_0xf0ab('0x13')](_0xf0ab('0x14'),_0xf0ab('0x1a')),controller[_0xf0ab('0x1b')]);router[_0xf0ab('0x1c')](_0xf0ab('0x12'),auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x1d')]);module[_0xf0ab('0x1e')]=router;
\ No newline at end of file
index 9765864..eb1e746 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc8d=['DATE','STRING','ENUM','out','sequelize','exports','BOOLEAN'];(function(_0x202686,_0x5c3908){var _0x35ade5=function(_0x4b8ed0){while(--_0x4b8ed0){_0x202686['push'](_0x202686['shift']());}};_0x35ade5(++_0x5c3908);}(_0xbc8d,0x15b));var _0xdbc8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbc8d[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xdbc8('0x0'));var moment=require('moment');module[_0xdbc8('0x1')]={'closed':{'type':Sequelize[_0xdbc8('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xdbc8('0x3')]},'disposition':{'type':Sequelize[_0xdbc8('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xdbc8('0x4')]},'note':{'type':Sequelize[_0xdbc8('0x4')]},'phone':{'type':Sequelize[_0xdbc8('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0xdbc8('0x5')]('in',_0xdbc8('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xdbc8('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xdbc8('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x2070=['DATE','STRING','out','exports','BOOLEAN'];(function(_0xd60c2c,_0x1f76d6){var _0x55730b=function(_0x190d51){while(--_0x190d51){_0xd60c2c['push'](_0xd60c2c['shift']());}};_0x55730b(++_0x1f76d6);}(_0x2070,0x1a2));var _0x0207=function(_0x46530f,_0x12134){_0x46530f=_0x46530f-0x0;var _0x316fdb=_0x2070[_0x46530f];return _0x316fdb;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x0207('0x0')]={'closed':{'type':Sequelize[_0x0207('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x0207('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x0207('0x3')]},'thirdDisposition':{'type':Sequelize[_0x0207('0x3')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x0207('0x3')]},'read1stAt':{'type':Sequelize[_0x0207('0x2')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x0207('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x0207('0x4')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x0207('0x1')],'defaultValue':![]}};
\ No newline at end of file
index aceccd6..a29e84f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2065=['filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','field','color','from','tools_tags','select','u.id','u.fullname','user_has_sms_interactions','users','u.id\x20=\x20ui.UserId','sms_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','left_join','o.id\x20=\x20i.UserId','sms_accounts','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','t.id\x20=\x20it.TagId','expr','parseSearch','sqlOperator','conditions','unreadMessages','`\x20=\x200','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','ContactId','buildExpression','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','find','UserId','text','body','keys','some','compact','isEmpty','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','tag','filter','replace','isNumeric','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','Sequelize','SELECT','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','i.SmsAccountId\x20IS\x20NULL','agent','toString','sequelize','keyBy','merge','SmsInteraction','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','c.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','all','show','params','include','options','catch','create','describe','SmsMessage','addMessage','ids','getMessages','findOne','$gte','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','addTags','emit','smsInteractionTags:save','removeTags','download','root','server','files','join','attachments','transcript-%d-%s.zip','CmContact','firstName','Messages','direction','secret','get','mkdirSync','Sms','Owner','N.A.','closed','closedAt','disposition','out','System','lastName','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','Users','map','fullname','TagIds','Tags','forEach','push','index','rawAttributes','fieldName','type','model','query'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x2065,0x18f));var _0x5206=function(_0x51be96,_0x102e1e){_0x51be96=_0x51be96-0x0;var _0x13ad6f=_0x2065[_0x51be96];return _0x13ad6f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5206('0x0'));var zipdir=require(_0x5206('0x1'));var jsonpatch=require(_0x5206('0x2'));var rp=require(_0x5206('0x3'));var moment=require(_0x5206('0x4'));var BPromise=require(_0x5206('0x5'));var Mustache=require(_0x5206('0x6'));var util=require('util');var path=require('path');var sox=require(_0x5206('0x7'));var csv=require(_0x5206('0x8'));var ejs=require(_0x5206('0x9'));var fs=require('fs');var fs_extra=require(_0x5206('0xa'));var _=require(_0x5206('0xb'));var squel=require(_0x5206('0xc'));var crypto=require('crypto');var jsforce=require(_0x5206('0xd'));var deskjs=require(_0x5206('0xe'));var toCsv=require(_0x5206('0x8'));var querystring=require(_0x5206('0xf'));var Papa=require(_0x5206('0x10'));var Redis=require(_0x5206('0x11'));var authService=require(_0x5206('0x12'));var qs=require(_0x5206('0x13'));var as=require(_0x5206('0x14'));var pdf=require(_0x5206('0x15'));var hardwareService=require(_0x5206('0x16'));var logger=require(_0x5206('0x17'))(_0x5206('0x18'));var utils=require('../../config/utils');var config=require(_0x5206('0x19'));var licenseUtil=require(_0x5206('0x1a'));var db=require(_0x5206('0x1b'))['db'];config[_0x5206('0x1c')]=_['defaults'](config[_0x5206('0x1c')],{'host':_0x5206('0x1d'),'port':0x18eb});var socket=require(_0x5206('0x1e'))(new Redis(config[_0x5206('0x1c')]));require('./smsInteraction.socket')[_0x5206('0x1f')](socket);function respondWithStatusCode(_0x47949a,_0x2c8d73){_0x2c8d73=_0x2c8d73||0xcc;return function(_0x1e3071){if(_0x1e3071){return _0x47949a[_0x5206('0x20')](_0x2c8d73);}return _0x47949a['status'](_0x2c8d73)[_0x5206('0x21')]();};}function respondWithResult(_0x4dd2fa,_0x4388fd){_0x4388fd=_0x4388fd||0xc8;return function(_0x103f90){if(_0x103f90){return _0x4dd2fa['status'](_0x4388fd)[_0x5206('0x22')](_0x103f90);}};}function respondWithFilteredResult(_0x424097,_0x5cc635){return function(_0x2bf43f){if(_0x2bf43f){var _0x4c8210=typeof _0x5cc635[_0x5206('0x23')]===_0x5206('0x24')&&typeof _0x5cc635[_0x5206('0x25')]===_0x5206('0x24');var _0x5689f1=_0x2bf43f[_0x5206('0x26')];var _0x53fc69=_0x4c8210?0x0:_0x5cc635[_0x5206('0x23')];var _0x5cb8e3=_0x4c8210?_0x2bf43f[_0x5206('0x26')]:_0x5cc635[_0x5206('0x23')]+_0x5cc635['limit'];var _0x229d45;if(_0x5cb8e3>=_0x5689f1){_0x5cb8e3=_0x5689f1;_0x229d45=0xc8;}else{_0x229d45=0xce;}_0x424097[_0x5206('0x27')](_0x229d45);return _0x424097[_0x5206('0x28')](_0x5206('0x29'),_0x53fc69+'-'+_0x5cb8e3+'/'+_0x5689f1)[_0x5206('0x22')](_0x2bf43f);}return null;};}function patchUpdates(_0x2ab0d0){return function(_0x5d1bf6){try{jsonpatch[_0x5206('0x2a')](_0x5d1bf6,_0x2ab0d0,!![]);}catch(_0x486ce0){return BPromise[_0x5206('0x2b')](_0x486ce0);}return _0x5d1bf6[_0x5206('0x2c')]();};}function saveUpdates(_0x2724f7,_0x52fd0c){return function(_0x2f269c){if(_0x2f269c){return _0x2f269c[_0x5206('0x2d')](_0x2724f7)[_0x5206('0x2e')](function(_0x1e628d){return _0x1e628d;});}return null;};}function removeEntity(_0x1bcbdc,_0x56c957){return function(_0x5e11bd){if(_0x5e11bd){return _0x5e11bd[_0x5206('0x2f')]()[_0x5206('0x2e')](function(){_0x1bcbdc[_0x5206('0x27')](0xcc)[_0x5206('0x21')]();});}};}function handleEntityNotFound(_0x47f5c9,_0x46b478){return function(_0x4f0688){if(!_0x4f0688){_0x47f5c9[_0x5206('0x20')](0x194);}return _0x4f0688;};}function handleError(_0x556fc5,_0x1a8430){_0x1a8430=_0x1a8430||0x1f4;return function(_0x1b1cc9){logger[_0x5206('0x30')](_0x1b1cc9[_0x5206('0x31')]);if(_0x1b1cc9[_0x5206('0x32')]){delete _0x1b1cc9[_0x5206('0x32')];}_0x556fc5[_0x5206('0x27')](_0x1a8430)[_0x5206('0x33')](_0x1b1cc9);};}function getInteractionUsers(_0x33e200,_0x9bf654){return new BPromise(function(_0xdc208c,_0x2c9e21){try{if(_0x9bf654[_0x33e200['id']]){_0x33e200[_0x5206('0x34')]=_[_0x5206('0x35')](_0x9bf654[_0x33e200['id']],function(_0x2f83c5){return{'id':_0x2f83c5['id'],'fullname':_0x2f83c5[_0x5206('0x36')]};});}}catch(_0x35b8a0){_0x2c9e21(_0x35b8a0);}_0xdc208c(_0x33e200);});}function getInteractionTags(_0x2d376a,_0x1f9110){return new BPromise(function(_0x3a059e,_0x21e102){try{if(_0x2d376a[_0x5206('0x37')]){_0x2d376a[_0x5206('0x38')]=[];_0x2d376a[_0x5206('0x37')]['split'](',')[_0x5206('0x39')](function(_0x22f3bd){_0x2d376a[_0x5206('0x38')][_0x5206('0x3a')](_0x1f9110[_0x22f3bd]);});}delete _0x2d376a[_0x5206('0x37')];}catch(_0x3c65f3){_0x21e102(_0x3c65f3);}_0x3a059e(_0x2d376a);});}function updateSmsInteraction(_0x3a14de,_0x3041c6,_0x24b4e2){return new BPromise(function(_0x3bcd9f,_0x1f2568){return getInteractionUsers(_0x3a14de,_0x24b4e2)['then'](function(_0x1475cf){return getInteractionTags(_0x1475cf,_0x3041c6);})[_0x5206('0x2e')](function(_0x34fc97){_0x3bcd9f(_0x34fc97);})['catch'](function(_0x5d832c){_0x1f2568(_0x5d832c);});});}exports[_0x5206('0x3b')]=function(_0x54f51d,_0x5bc139){var _0x336d05={},_0x5be1ef={},_0xe6a0fe={'count':0x0,'rows':[]};var _0x519bce=_['map'](db['SmsInteraction'][_0x5206('0x3c')],function(_0x3b49b9){return{'name':_0x3b49b9[_0x5206('0x3d')],'type':_0x3b49b9[_0x5206('0x3e')]['key']};});_0x5be1ef[_0x5206('0x3f')]=_[_0x5206('0x35')](_0x519bce,'name');_0x5be1ef[_0x5206('0x40')]=_['keys'](_0x54f51d[_0x5206('0x40')]);_0x5be1ef[_0x5206('0x41')]=_[_0x5206('0x42')](_0x5be1ef[_0x5206('0x3f')],_0x5be1ef['query']);_0x336d05[_0x5206('0x43')]=_[_0x5206('0x42')](_0x5be1ef[_0x5206('0x3f')],qs[_0x5206('0x44')](_0x54f51d['query'][_0x5206('0x44')]));_0x336d05[_0x5206('0x43')]=_0x336d05[_0x5206('0x43')][_0x5206('0x45')]?_0x336d05['attributes']:_0x5be1ef[_0x5206('0x3f')];if(!_0x54f51d[_0x5206('0x40')]['hasOwnProperty'](_0x5206('0x46'))){_0x336d05['limit']=qs[_0x5206('0x25')](_0x54f51d[_0x5206('0x40')][_0x5206('0x25')]);_0x336d05[_0x5206('0x23')]=qs[_0x5206('0x23')](_0x54f51d['query'][_0x5206('0x23')]);}_0x336d05[_0x5206('0x47')]=qs[_0x5206('0x48')](_0x54f51d[_0x5206('0x40')][_0x5206('0x48')]);_0x336d05[_0x5206('0x49')]=qs[_0x5206('0x41')](_[_0x5206('0x4a')](_0x54f51d[_0x5206('0x40')],_0x5be1ef[_0x5206('0x41')]),_0x519bce);var _0x2b6635=[];var _0x2dd0d6=squel['select']()[_0x5206('0x4b')]('id')[_0x5206('0x4b')]('name')['field'](_0x5206('0x4c'))[_0x5206('0x4d')](_0x5206('0x4e'));var _0x4f94f9=squel[_0x5206('0x4f')]()['field'](_0x5206('0x50'))[_0x5206('0x4b')](_0x5206('0x51'))[_0x5206('0x4b')]('ui.SmsInteractionId')[_0x5206('0x4d')](_0x5206('0x52'),'ui')['left_join'](_0x5206('0x53'),'u',_0x5206('0x54'));var _0x37ee64=squel[_0x5206('0x4f')]()[_0x5206('0x4d')](_0x5206('0x55'),'i')['left_join']('cm_contacts','c',_0x5206('0x56'))[_0x5206('0x57')](_0x5206('0x53'),'o',_0x5206('0x58'))[_0x5206('0x57')](_0x5206('0x59'),'a','a.id\x20=\x20i.SmsAccountId')[_0x5206('0x57')](_0x5206('0x5a'),'me',_0x5206('0x5b'))['left_join'](_0x5206('0x5c'),'it','it.SmsInteractionId\x20=\x20i.id')[_0x5206('0x57')](_0x5206('0x4e'),'t',_0x5206('0x5d'));var _0x364c87=squel[_0x5206('0x5e')]();var _0x51f2cd=[];var _0x518022=squel[_0x5206('0x5e')]();var _0xe9aa75;if(_0x54f51d[_0x5206('0x40')]['search']){_0xe9aa75=as[_0x5206('0x5f')](_0x54f51d[_0x5206('0x40')]['search']);var _0x390662=_0xe9aa75[_0x5206('0x60')];for(var _0x4431a3=0x0;_0x4431a3<_0xe9aa75[_0x5206('0x61')][_0x5206('0x45')];_0x4431a3++){var _0x5ef35f=_0xe9aa75['conditions'][_0x4431a3];var _0x3d0587='i';var _0x639644=_['find'](_0x519bce,[_0x5206('0x32'),_0x5ef35f[_0x5206('0x4b')]]);if(!_0x639644){switch(_0x5ef35f[_0x5206('0x4b')]){case _0x5206('0x62'):if(_0x5ef35f['value']==0x1){_0x37ee64['having']('`'+_0x5ef35f[_0x5206('0x4b')]+_0x5206('0x63'));}else{_0x37ee64[_0x5206('0x64')]('`'+_0x5ef35f[_0x5206('0x4b')]+_0x5206('0x65'));}break;case _0x5206('0x66'):if(_0x5ef35f[_0x5206('0x67')]===_0x5206('0x68')){if(_0x5ef35f[_0x5206('0x69')][_0x5206('0x6a')]('\x20')[_0x5206('0x45')]>0x1){_0x364c87[_0x390662](_0x5206('0x6b'),qs[_0x5206('0x6c')](_0x5ef35f[_0x5206('0x69')]),null);}else{var _0x3bec5d='%'+_0x5ef35f[_0x5206('0x69')]+'%';_0x364c87[_0x390662]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x3bec5d,_0x3bec5d,_0x3bec5d);}}else{_0x639644=_['find'](_0x519bce,[_0x5206('0x32'),_0x5206('0x6d')]);_0x5ef35f[_0x5206('0x4b')]='ContactId';_0x1b66f0=as[_0x5206('0x6e')](_0x3d0587,_0x639644[_0x5206('0x3e')],_0x5ef35f);_0x364c87[_0x390662](_0x1b66f0['text'],_0x1b66f0['value'][_0x5206('0x6f')],_0x1b66f0[_0x5206('0x69')]['end']);}break;case _0x5206('0x70'):var _0x22bbc1=_0x5ef35f['value'][_0x5206('0x6a')](',')[_0x5206('0x35')](function(_0x1070d2){return Number(_0x1070d2);});_0x22bbc1[_0x5206('0x39')](function(_0x12f9b6){_0x518022['or'](_0x5206('0x71'),'%,'+_0x12f9b6+',%');});_0x51f2cd=_[_0x5206('0x72')](_0x51f2cd,_0x22bbc1);break;case _0x5206('0x73'):if(_0x5ef35f[_0x5206('0x67')]===_0x5206('0x68')){_0x364c87[_0x390662]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x5ef35f[_0x5206('0x69')]+'%',null);}else{_0x639644=_[_0x5206('0x74')](_0x519bce,['name',_0x5206('0x75')]);_0x5ef35f[_0x5206('0x4b')]='UserId';_0x1b66f0=as[_0x5206('0x6e')](_0x3d0587,_0x639644[_0x5206('0x3e')],_0x5ef35f);_0x364c87[_0x390662](_0x1b66f0[_0x5206('0x76')],_0x1b66f0[_0x5206('0x69')][_0x5206('0x6f')],_0x1b66f0[_0x5206('0x69')]['end']);}break;case _0x5206('0x77'):_0x1b66f0=as[_0x5206('0x6e')]('me',null,_0x5ef35f);_0x364c87[_0x390662](_0x1b66f0[_0x5206('0x76')],_0x1b66f0[_0x5206('0x69')][_0x5206('0x6f')],_0x1b66f0[_0x5206('0x69')][_0x5206('0x21')]);break;}}else{var _0x1b66f0=as['buildExpression'](_0x3d0587,_0x639644[_0x5206('0x3e')],_0x5ef35f);_0x364c87[_0x390662](_0x1b66f0[_0x5206('0x76')],_0x1b66f0['value'][_0x5206('0x6f')],_0x1b66f0[_0x5206('0x69')][_0x5206('0x21')]);}}}else{var _0x2ca534=_(_0x54f51d[_0x5206('0x40')])[_0x5206('0x78')]()[_0x5206('0x35')](function(_0x4c79f2){return _[_0x5206('0x79')](_0x519bce,[_0x5206('0x32'),_0x4c79f2])?_0x4c79f2:undefined;})[_0x5206('0x7a')]()[_0x5206('0x69')]();if(!_[_0x5206('0x7b')](_0x2ca534)){_0x2ca534[_0x5206('0x39')](function(_0x3f5edd){if(_0x3f5edd===_0x5206('0x7c')){_0x37ee64[_0x5206('0x49')](_0x5206('0x7d'),[][_0x5206('0x7e')](_0x54f51d[_0x5206('0x40')][_0x3f5edd]));}else if(_0x3f5edd===_0x5206('0x7f')){var _0x5a78a2=JSON[_0x5206('0x80')](_0x54f51d[_0x5206('0x40')][_0x3f5edd])['$gte'];var _0x19f251=JSON[_0x5206('0x80')](_0x54f51d[_0x5206('0x40')][_0x3f5edd])[_0x5206('0x81')];_0x37ee64[_0x5206('0x49')](_0x5206('0x82'),_0x5a78a2,_0x19f251);}else{if(_0x54f51d['query'][_0x3f5edd]===_0x5206('0x83')){_0x37ee64[_0x5206('0x49')]('i.'+_0x3f5edd+'\x20IS\x20NULL');}else{_0x37ee64[_0x5206('0x49')]('i.'+_0x3f5edd+_0x5206('0x84'),_0x54f51d[_0x5206('0x40')][_0x3f5edd]);}}});}if(_0x54f51d[_0x5206('0x40')][_0x5206('0x85')]){if(_0x54f51d[_0x5206('0x40')]['read']==0x1){_0x37ee64[_0x5206('0x64')]('`unreadMessages`\x20=\x200');}else{_0x37ee64[_0x5206('0x64')]('`unreadMessages`\x20>\x200');}}if(_0x54f51d['query'][_0x5206('0x86')]){_0x51f2cd=_['isArray'](_0x54f51d['query'][_0x5206('0x86')])?_0x54f51d['query'][_0x5206('0x86')]:new Array(_0x54f51d[_0x5206('0x40')]['tag']);_0x51f2cd['forEach'](function(_0x5f1d9b){_0x518022['or'](_0x5206('0x71'),'%,'+_0x5f1d9b+',%');});}if(_0x54f51d[_0x5206('0x40')]['filter']){var _0x45cdb0=_0x54f51d['query'][_0x5206('0x87')][_0x5206('0x88')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x5206('0x89')](_0x45cdb0)){_0x364c87['or']('i.id\x20LIKE\x20?',_0x45cdb0+'%')['or'](_0x5206('0x8a'),_0x45cdb0+'%');}else{_0x364c87['or'](_0x5206('0x8b'),qs[_0x5206('0x6c')](_0x45cdb0))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x45cdb0+'%');}}}_0x37ee64['where'](_0x364c87);_0x37ee64[_0x5206('0x8c')]('i.id');var _0x234019={'type':db[_0x5206('0x8d')]['QueryTypes'][_0x5206('0x8e')],'raw':!![]};var _0x618ac2=_0x37ee64['clone']();_0x618ac2[_0x5206('0x4b')](_0x5206('0x8f'));_0x618ac2[_0x5206('0x4b')](_0x5206('0x90'),_0x5206('0x62'));if(_0x336d05[_0x5206('0x47')]){_0x336d05['order'][_0x5206('0x39')](function(_0x39c545){var _0x46a592=_0x39c545[0x0]==='contactName'?_0x39c545[0x0]:'i.'+_0x39c545[0x0];_0x37ee64[_0x5206('0x47')](_0x46a592,_0x39c545[0x1]===_0x5206('0x91')?![]:!![]);});}if(!_[_0x5206('0x7b')](_0x51f2cd)){_0x37ee64[_0x5206('0x64')](_0x518022);_0x618ac2['where'](_0x5206('0x92'),_0x51f2cd);}BPromise[_0x5206('0x93')]()['then'](function(){if(!_0xe9aa75){if(_0x54f51d['query'][_0x5206('0x7c')])return;_0x618ac2[_0x5206('0x49')](_0x5206('0x94'));_0x37ee64[_0x5206('0x49')](_0x5206('0x94'));return;}if(_0x54f51d[_0x5206('0x95')][_0x5206('0x96')]!=='agent')return;return _0x54f51d[_0x5206('0x95')]['getSmsAccounts']({'attributes':['id'],'raw':!![]})[_0x5206('0x2e')](function(_0x432f14){if(_['isEmpty'](_0x432f14)){_0x618ac2['where']('i.SmsAccountId\x20IS\x20NULL');_0x37ee64[_0x5206('0x49')](_0x5206('0x97'));}else{_0x618ac2[_0x5206('0x49')](_0x5206('0x7d'),_[_0x5206('0x35')](_0x432f14,'id'));_0x37ee64[_0x5206('0x49')](_0x5206('0x7d'),_[_0x5206('0x35')](_0x432f14,'id'));}});})[_0x5206('0x2e')](function(){if(_0x54f51d['user']['role']===_0x5206('0x98')&&!_0xe9aa75&&!_0x54f51d[_0x5206('0x40')][_0x5206('0x7c')])return[];return db['sequelize'][_0x5206('0x40')](_0x618ac2[_0x5206('0x99')](),_0x234019);})[_0x5206('0x2e')](function(_0x4834a7){_0xe6a0fe[_0x5206('0x26')]=_0x4834a7['length'];if(_0xe6a0fe[_0x5206('0x26')]===0x0)return[];return db[_0x5206('0x9a')]['query'](_0x2dd0d6[_0x5206('0x99')](),_0x234019)['then'](function(_0x57e5e5){_0x2b6635=_[_0x5206('0x9b')](_0x57e5e5,'id');_0x234019=_[_0x5206('0x9c')](_0x234019,{'model':db[_0x5206('0x9d')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x54f51d[_0x5206('0x40')][_0x5206('0x44')]){_0x336d05[_0x5206('0x43')][_0x5206('0x39')](function(_0x652e31){_0x37ee64['field']('i.'+_0x652e31);});}else{_0x37ee64[_0x5206('0x4b')](_0x5206('0x90'),_0x5206('0x62'));_0x37ee64[_0x5206('0x4b')](_0x5206('0x9e'),_0x5206('0x9f'));_0x37ee64[_0x5206('0x4b')](_0x5206('0xa0'),_0x5206('0xa1'));_0x37ee64[_0x5206('0x4b')](_0x5206('0xa2'),'contactName');_0x37ee64[_0x5206('0x4b')](_0x5206('0xa3'));_0x37ee64['field'](_0x5206('0xa4'),_0x5206('0xa5'));_0x37ee64[_0x5206('0x4b')](_0x5206('0xa6'),_0x5206('0xa7'));_0x37ee64[_0x5206('0x4b')](_0x5206('0xa8'),_0x5206('0xa9'));_0x37ee64[_0x5206('0x4b')](_0x5206('0xaa'),_0x5206('0xab'));_0x37ee64[_0x5206('0x4b')](_0x5206('0xac'),_0x5206('0xad'));_0x37ee64[_0x5206('0x4b')](_0x5206('0xae'),'Contact.fax');_0x37ee64[_0x5206('0x4b')](_0x5206('0xaf'),'Owner.fullname');_0x37ee64[_0x5206('0x4b')](_0x5206('0xb0'),_0x5206('0xb1'));_0x37ee64['field'](_0x5206('0xb2'),_0x5206('0x37'));}if(_0x336d05['limit'])_0x37ee64[_0x5206('0x25')](_0x336d05[_0x5206('0x25')]);if(_0x336d05[_0x5206('0x23')])_0x37ee64[_0x5206('0x23')](_0x336d05[_0x5206('0x23')]);return db[_0x5206('0x9a')][_0x5206('0x40')](_0x37ee64['toString'](),_0x234019);})['then'](function(_0x25be2d){if(_0x25be2d[_0x5206('0x45')]>0x0)_0x4f94f9['where'](_0x5206('0xb3'),_[_0x5206('0x35')](_0x25be2d,'id'));return db[_0x5206('0x9a')][_0x5206('0x40')](_0x4f94f9['toString'](),_0x234019)['then'](function(_0x3a77f1){var _0x4f5b75=_[_0x5206('0xb4')](_0x3a77f1,_0x5206('0xb5'));var _0x5d07f4=[];_0x25be2d[_0x5206('0x39')](function(_0x17529a){_0x5d07f4['push'](updateSmsInteraction(_0x17529a,_0x2b6635,_0x4f5b75));});return BPromise[_0x5206('0xb6')](_0x5d07f4);});});})[_0x5206('0x2e')](function(_0x337cf2){_0xe6a0fe['rows']=_0x337cf2;return _0xe6a0fe;})[_0x5206('0x2e')](respondWithFilteredResult(_0x5bc139,_0x336d05))['catch'](handleError(_0x5bc139,null));};exports[_0x5206('0xb7')]=function(_0x37085a,_0x36d26a){var _0x25c9f1={'raw':![],'where':{'id':_0x37085a[_0x5206('0xb8')]['id']}},_0x3b28f2={};_0x3b28f2['model']=_[_0x5206('0x78')](db[_0x5206('0x9d')]['rawAttributes']);_0x3b28f2[_0x5206('0x40')]=_[_0x5206('0x78')](_0x37085a[_0x5206('0x40')]);_0x3b28f2[_0x5206('0x41')]=_[_0x5206('0x42')](_0x3b28f2[_0x5206('0x3f')],_0x3b28f2['query']);_0x25c9f1[_0x5206('0x43')]=_[_0x5206('0x42')](_0x3b28f2['model'],qs[_0x5206('0x44')](_0x37085a[_0x5206('0x40')][_0x5206('0x44')]));_0x25c9f1[_0x5206('0x43')]=_0x25c9f1[_0x5206('0x43')]['length']?_0x25c9f1[_0x5206('0x43')]:_0x3b28f2['model'];if(_0x37085a['query']['includeAll']){_0x25c9f1[_0x5206('0xb9')]=[{'all':!![]}];}_0x25c9f1=_['merge']({},_0x25c9f1,_0x37085a[_0x5206('0xba')]);return db[_0x5206('0x9d')][_0x5206('0x74')](_0x25c9f1)['then'](handleEntityNotFound(_0x36d26a,null))[_0x5206('0x2e')](respondWithResult(_0x36d26a,null))[_0x5206('0xbb')](handleError(_0x36d26a,null));};exports[_0x5206('0xbc')]=function(_0x357b46,_0x13a2a1){return db[_0x5206('0x9d')][_0x5206('0xbc')](_0x357b46[_0x5206('0x77')],{})[_0x5206('0x2e')](respondWithResult(_0x13a2a1,0xc9))[_0x5206('0xbb')](handleError(_0x13a2a1,null));};exports[_0x5206('0x2d')]=function(_0x546dd2,_0x4f057f){if(_0x546dd2['body']['id']){delete _0x546dd2['body']['id'];}return db['SmsInteraction'][_0x5206('0x74')]({'where':{'id':_0x546dd2[_0x5206('0xb8')]['id']}})['then'](handleEntityNotFound(_0x4f057f,null))[_0x5206('0x2e')](saveUpdates(_0x546dd2[_0x5206('0x77')],null))[_0x5206('0x2e')](respondWithResult(_0x4f057f,null))[_0x5206('0xbb')](handleError(_0x4f057f,null));};exports[_0x5206('0x2f')]=function(_0x38a664,_0xfcfc83){return db[_0x5206('0x9d')][_0x5206('0x74')]({'where':{'id':_0x38a664[_0x5206('0xb8')]['id']}})[_0x5206('0x2e')](handleEntityNotFound(_0xfcfc83,null))[_0x5206('0x2e')](removeEntity(_0xfcfc83,null))[_0x5206('0xbb')](handleError(_0xfcfc83,null));};exports[_0x5206('0xbd')]=function(_0x3f4ada,_0x4fe4bf){return db[_0x5206('0x9d')][_0x5206('0xbd')]()[_0x5206('0x2e')](respondWithResult(_0x4fe4bf,null))[_0x5206('0xbb')](handleError(_0x4fe4bf,null));};exports['addMessage']=function(_0x22647e,_0x3c388e,_0x2a808b){return db[_0x5206('0xbe')][_0x5206('0x74')]({'where':{'id':_0x22647e[_0x5206('0xb8')]['id']}})[_0x5206('0x2e')](handleEntityNotFound(_0x3c388e,null))[_0x5206('0x2e')](function(_0x29fdc2){if(_0x29fdc2){return _0x29fdc2[_0x5206('0xbf')](_0x22647e['body'][_0x5206('0xc0')],_['omit'](_0x22647e[_0x5206('0x77')],[_0x5206('0xc0'),'id'])||{});}})[_0x5206('0x2e')](respondWithResult(_0x3c388e,null))[_0x5206('0xbb')](handleError(_0x3c388e,null));};exports[_0x5206('0xc1')]=function(_0x13d202,_0x47dd5e,_0x43afa5){var _0x1090af={'raw':![],'where':{}};var _0x2a805e={};var _0x325c46={'count':0x0,'rows':[]};return db[_0x5206('0x9d')][_0x5206('0xc2')]({'where':{'id':_0x13d202['params']['id']}})[_0x5206('0x2e')](handleEntityNotFound(_0x47dd5e,null))[_0x5206('0x2e')](function(_0xe2b157){if(_0xe2b157){_0x2a805e[_0x5206('0x3f')]=_[_0x5206('0x78')](db[_0x5206('0xbe')][_0x5206('0x3c')]);_0x2a805e[_0x5206('0x40')]=_['keys'](_0x13d202[_0x5206('0x40')]);_0x2a805e[_0x5206('0x41')]=_['intersection'](_0x2a805e[_0x5206('0x3f')],_0x2a805e[_0x5206('0x40')]);_0x1090af['attributes']=_['intersection'](_0x2a805e[_0x5206('0x3f')],qs[_0x5206('0x44')](_0x13d202['query']['fields']));_0x1090af[_0x5206('0x43')]=_0x1090af[_0x5206('0x43')][_0x5206('0x45')]?_0x1090af[_0x5206('0x43')]:_0x2a805e[_0x5206('0x3f')];if(!_0x13d202['query']['hasOwnProperty']('nolimit')){_0x1090af[_0x5206('0x25')]=qs[_0x5206('0x25')](_0x13d202[_0x5206('0x40')]['limit']);_0x1090af[_0x5206('0x23')]=qs[_0x5206('0x23')](_0x13d202[_0x5206('0x40')][_0x5206('0x23')]);}_0x1090af[_0x5206('0x47')]=qs['sort'](_0x13d202[_0x5206('0x40')][_0x5206('0x48')]);_0x1090af[_0x5206('0x49')]=qs[_0x5206('0x41')](_[_0x5206('0x4a')](_0x13d202[_0x5206('0x40')],_0x2a805e[_0x5206('0x41')]));_0x1090af['where'][_0x5206('0xb5')]=_0xe2b157['id'];if(_0x13d202[_0x5206('0x40')][_0x5206('0x87')]){_0x1090af['where']=_[_0x5206('0x9c')](_0x1090af[_0x5206('0x49')],{'$or':_[_0x5206('0x35')](_0x1090af[_0x5206('0x43')],function(_0x1d6fc1){var _0x285ed1={};_0x285ed1[_0x1d6fc1]={'$like':'%'+_0x13d202['query'][_0x5206('0x87')]+'%'};return _0x285ed1;})});}if(_0x13d202[_0x5206('0x40')][_0x5206('0xc3')]){var _0x519b81=_0x13d202['query']['$gte'][_0x5206('0x6a')](',');var _0x1dc6f1={};_0x1dc6f1[_0x519b81[0x0]]={'$gte':moment(_0x519b81[0x1])[_0x5206('0xc4')](_0x5206('0xc5'))};_0x1090af[_0x5206('0x49')]=_[_0x5206('0x9c')](_0x1090af[_0x5206('0x49')],_0x1dc6f1);}_0x1090af=_[_0x5206('0x9c')]({},_0x1090af,_0x13d202[_0x5206('0xba')]);return db[_0x5206('0xbe')]['count']({'where':_0x1090af['where']})[_0x5206('0x2e')](function(_0x59c798){_0x325c46[_0x5206('0x26')]=_0x59c798;if(_0x13d202[_0x5206('0x40')][_0x5206('0xc6')]){_0x1090af[_0x5206('0xb9')]=[{'all':!![]}];}return db[_0x5206('0xbe')][_0x5206('0xc7')](_0x1090af);})['then'](function(_0x199437){_0x325c46['rows']=_0x199437;return _0x325c46;});}})[_0x5206('0x2e')](respondWithFilteredResult(_0x47dd5e,_0x1090af))[_0x5206('0xbb')](handleError(_0x47dd5e,null));};exports[_0x5206('0xc8')]=function(_0x210461,_0x19dcbc,_0x12c8ea){return db[_0x5206('0x9d')]['find']({'where':{'id':_0x210461[_0x5206('0xb8')]['id']}})[_0x5206('0x2e')](handleEntityNotFound(_0x19dcbc,null))['then'](function(_0x59fe8e){if(_0x59fe8e){return _0x59fe8e['setTags'](_0x210461[_0x5206('0x77')]['ids'],_['omit'](_0x210461[_0x5206('0x77')],[_0x5206('0xc0'),'id'])||{})['spread'](function(){return db['Tag'][_0x5206('0xc7')]({'attributes':['id',_0x5206('0x32'),'color'],'where':{'id':_0x210461[_0x5206('0x77')][_0x5206('0xc0')]}});})[_0x5206('0x2e')](function(_0x687975){socket[_0x5206('0xc9')](_0x5206('0xca'),{'id':Number(_0x210461[_0x5206('0xb8')]['id']),'tags':_0x687975||[]});return{'id':Number(_0x210461[_0x5206('0xb8')]['id']),'tags':_0x687975||[]};});}})[_0x5206('0x2e')](respondWithResult(_0x19dcbc,null))['catch'](handleError(_0x19dcbc,null));};exports[_0x5206('0xcb')]=function(_0x27f93f,_0x141b71,_0x2db888){return db[_0x5206('0x9d')][_0x5206('0x74')]({'where':{'id':_0x27f93f[_0x5206('0xb8')]['id']}})[_0x5206('0x2e')](handleEntityNotFound(_0x141b71,null))['then'](function(_0x2fada4){if(_0x2fada4){return _0x2fada4[_0x5206('0xcb')](_0x27f93f['query']['ids']);}})['then'](respondWithStatusCode(_0x141b71,null))[_0x5206('0xbb')](handleError(_0x141b71,null));};exports[_0x5206('0xcc')]=function(_0x18a3f9,_0x4381c4){var _0x5f3687=moment()['unix']()['toString']();var _0x2f132e=path['join'](config[_0x5206('0xcd')],_0x5206('0xce'),_0x5206('0xcf'),'tmp');var _0x3dd561=path[_0x5206('0xd0')](config[_0x5206('0xcd')],_0x5206('0xce'),_0x5206('0xcf'),_0x5206('0xd1'));var _0x5ceb0e=path['join'](_0x2f132e,_0x5f3687);var _0x16e93d=util[_0x5206('0xc4')](_0x5206('0xd2'),_0x18a3f9[_0x5206('0xb8')]['id'],_0x5f3687);var _0x244be6=path['join'](_0x2f132e,_0x16e93d);var _0x27a889=[];_0x27a889[_0x5206('0x3a')]({'model':db[_0x5206('0x73')],'as':'User','attributes':['id',_0x5206('0x36')],'raw':!![]});_0x27a889[_0x5206('0x3a')]({'model':db[_0x5206('0xd3')],'as':_0x5206('0x66'),'attributes':['id',_0x5206('0xd4'),'lastName'],'raw':!![]});var _0x402d07=[{'model':db[_0x5206('0xbe')],'as':_0x5206('0xd5'),'attributes':['id',_0x5206('0x77'),'createdAt',_0x5206('0xd6'),_0x5206('0xd7'),_0x5206('0x85')],'include':_0x27a889}];_0x402d07[_0x5206('0x3a')]({'model':db['SmsAccount'],'as':'Account','attributes':['id',_0x5206('0x32')]});_0x402d07[_0x5206('0x3a')]({'model':db[_0x5206('0x73')],'as':'Owner','attributes':['id',_0x5206('0x36')]});return db[_0x5206('0x9d')][_0x5206('0x74')]({'where':{'id':_0x18a3f9['params']['id']},'include':_0x402d07})['then'](handleEntityNotFound(_0x4381c4,null))['then'](function(_0x1b6c1f){if(_0x1b6c1f){var _0x3d82d0=_0x1b6c1f[_0x5206('0xd8')]({'plain':!![]});fs[_0x5206('0xd9')](_0x5ceb0e);var _0x456cad={'channel':_0x5206('0xda'),'account':_0x3d82d0['Account']['name'],'agent':_0x3d82d0[_0x5206('0xdb')]?_0x3d82d0['Owner']['fullname']:_0x5206('0xdc'),'createdAt':moment(_0x3d82d0[_0x5206('0x7f')])[_0x5206('0xc4')]('YYYY-MM-DD\x20HH:mm:ss')[_0x5206('0x99')](),'closedAt':_0x3d82d0[_0x5206('0xdd')]?moment(_0x3d82d0[_0x5206('0xde')])[_0x5206('0xc4')](_0x5206('0xc5'))[_0x5206('0x99')]():'','disposition':_0x3d82d0[_0x5206('0xdf')],'messages':_(_0x3d82d0[_0x5206('0xd5')])[_0x5206('0x87')]({'secret':![]})[_0x5206('0x35')](function(_0x5a6c7f){return{'date':moment(_0x5a6c7f[_0x5206('0x7f')])[_0x5206('0xc4')](_0x5206('0xc5'))[_0x5206('0x99')](),'sender':_0x5a6c7f[_0x5206('0xd6')]===_0x5206('0xe0')?_0x5a6c7f[_0x5206('0x73')]?_0x5a6c7f[_0x5206('0x73')]['fullname']:_0x5206('0xe1'):_0x5a6c7f['Contact']['firstName']+(_0x5a6c7f['Contact'][_0x5206('0xe2')]?'\x20'+_0x5a6c7f[_0x5206('0x66')]['lastName']:''),'body':_0x5a6c7f[_0x5206('0x77')],'direction':_0x5a6c7f[_0x5206('0xd6')]===_0x5206('0xe0')?'A':'C','secret':_0x5a6c7f['secret'],'read':_0x5a6c7f['read']};})[_0x5206('0x69')]()};return ejs[_0x5206('0xe3')](path[_0x5206('0xd0')](config[_0x5206('0xcd')],_0x5206('0xce'),_0x5206('0xe4'),_0x5206('0xe5')),{'interaction':_0x456cad})['then'](function(_0x3548f0){var _0x5f54ef=path['join'](_0x5ceb0e,'transcript-'+_0x3d82d0['id']+'-'+_0x5f3687+_0x5206('0xe6'));var _0x1dd135={'path':_0x5f54ef,'channel':'Sms','interactionId':_0x3d82d0['id']};return pdf[_0x5206('0xe7')](_0x3548f0,_0x1dd135);})['then'](function(){return new BPromise(function(_0x35a218,_0x388e50){zipdir(_0x5ceb0e,{'saveTo':_0x244be6},function(_0x565d9a,_0x3007f9){if(_0x565d9a)return _0x388e50(_0x565d9a);return _0x35a218(_0x3007f9);});})[_0x5206('0x2e')](function(){return new BPromise(function(_0x35c77a,_0x4a1a7e){rimraf(_0x5ceb0e,function(_0x54e2c7){if(_0x54e2c7)_0x4a1a7e(_0x54e2c7);return _0x35c77a();});});})[_0x5206('0x2e')](function(){return _0x4381c4[_0x5206('0xcc')](_0x244be6,_0x16e93d,function(_0x4d2f75){if(_0x4d2f75){console['log']('err',_0x4d2f75);}else{fs['unlinkSync'](_0x244be6);}});});});}else{return _0x4381c4[_0x5206('0x20')](0xc8);}})['catch'](handleError(_0x4381c4,null));};
\ No newline at end of file
+var _0xa7a6=['../../components/parsers/qs','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','error','name','send','Users','map','fullname','Tags','split','forEach','push','then','catch','index','SmsInteraction','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','select','field','from','tools_tags','u.id','u.fullname','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','sms_interactions','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','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','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','ContactId','buildExpression','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','UserId','text','body','some','compact','SmsAccountId','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`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?','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','i.SmsAccountId\x20IN\x20?','role','agent','sequelize','toString','keyBy','a.key','Account.key','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.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','all','rows','params','includeAll','include','options','create','describe','addMessage','ids','getMessages','findOne','SmsMessage','rawAttributes','nolimit','format','YYYY-MM-DD\x20HH:mm:ss','merge','findAll','addTags','spread','color','emit','smsInteractionTags:save','removeTags','unix','join','root','server','tmp','files','attachments','transcript-%d-%s.zip','CmContact','firstName','lastName','direction','secret','SmsAccount','Account','mkdirSync','Sms','Owner','closed','disposition','Messages','out','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','download','log','err','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa7a6,0x1d2));var _0x6a7a=function(_0x248afa,_0xc057df){_0x248afa=_0x248afa-0x0;var _0x26d2d2=_0xa7a6[_0x248afa];return _0x26d2d2;};'use strict';var emlformat=require(_0x6a7a('0x0'));var rimraf=require(_0x6a7a('0x1'));var zipdir=require(_0x6a7a('0x2'));var jsonpatch=require(_0x6a7a('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x6a7a('0x4'));var Mustache=require(_0x6a7a('0x5'));var util=require(_0x6a7a('0x6'));var path=require(_0x6a7a('0x7'));var sox=require(_0x6a7a('0x8'));var csv=require(_0x6a7a('0x9'));var ejs=require(_0x6a7a('0xa'));var fs=require('fs');var fs_extra=require(_0x6a7a('0xb'));var _=require(_0x6a7a('0xc'));var squel=require(_0x6a7a('0xd'));var crypto=require(_0x6a7a('0xe'));var jsforce=require(_0x6a7a('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x6a7a('0x9'));var querystring=require(_0x6a7a('0x10'));var Papa=require(_0x6a7a('0x11'));var Redis=require(_0x6a7a('0x12'));var authService=require(_0x6a7a('0x13'));var qs=require(_0x6a7a('0x14'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x6a7a('0x15'));var hardwareService=require(_0x6a7a('0x16'));var logger=require(_0x6a7a('0x17'))(_0x6a7a('0x18'));var utils=require(_0x6a7a('0x19'));var config=require(_0x6a7a('0x1a'));var licenseUtil=require(_0x6a7a('0x1b'));var db=require(_0x6a7a('0x1c'))['db'];config[_0x6a7a('0x1d')]=_[_0x6a7a('0x1e')](config['redis'],{'host':_0x6a7a('0x1f'),'port':0x18eb});var socket=require(_0x6a7a('0x20'))(new Redis(config[_0x6a7a('0x1d')]));require(_0x6a7a('0x21'))[_0x6a7a('0x22')](socket);function respondWithStatusCode(_0x2d70be,_0x4100d6){_0x4100d6=_0x4100d6||0xcc;return function(_0x5c472e){if(_0x5c472e){return _0x2d70be[_0x6a7a('0x23')](_0x4100d6);}return _0x2d70be[_0x6a7a('0x24')](_0x4100d6)[_0x6a7a('0x25')]();};}function respondWithResult(_0x5e943a,_0x5a2791){_0x5a2791=_0x5a2791||0xc8;return function(_0x1bca30){if(_0x1bca30){return _0x5e943a['status'](_0x5a2791)[_0x6a7a('0x26')](_0x1bca30);}};}function respondWithFilteredResult(_0x52472b,_0x34e55a){return function(_0xcd6ee7){if(_0xcd6ee7){var _0x41267b=typeof _0x34e55a[_0x6a7a('0x27')]===_0x6a7a('0x28')&&typeof _0x34e55a['limit']===_0x6a7a('0x28');var _0x46efdb=_0xcd6ee7[_0x6a7a('0x29')];var _0x2afe56=_0x41267b?0x0:_0x34e55a['offset'];var _0x34f2c4=_0x41267b?_0xcd6ee7['count']:_0x34e55a[_0x6a7a('0x27')]+_0x34e55a[_0x6a7a('0x2a')];var _0x19af14;if(_0x34f2c4>=_0x46efdb){_0x34f2c4=_0x46efdb;_0x19af14=0xc8;}else{_0x19af14=0xce;}_0x52472b['status'](_0x19af14);return _0x52472b[_0x6a7a('0x2b')](_0x6a7a('0x2c'),_0x2afe56+'-'+_0x34f2c4+'/'+_0x46efdb)[_0x6a7a('0x26')](_0xcd6ee7);}return null;};}function patchUpdates(_0x33aaa8){return function(_0x1539a4){try{jsonpatch[_0x6a7a('0x2d')](_0x1539a4,_0x33aaa8,!![]);}catch(_0x1a7ab4){return BPromise[_0x6a7a('0x2e')](_0x1a7ab4);}return _0x1539a4[_0x6a7a('0x2f')]();};}function saveUpdates(_0x532526,_0xae5e31){return function(_0x5779e2){if(_0x5779e2){return _0x5779e2[_0x6a7a('0x30')](_0x532526)['then'](function(_0x333166){return _0x333166;});}return null;};}function removeEntity(_0x5c8912,_0x27ae50){return function(_0x47dd73){if(_0x47dd73){return _0x47dd73[_0x6a7a('0x31')]()['then'](function(){_0x5c8912['status'](0xcc)[_0x6a7a('0x25')]();});}};}function handleEntityNotFound(_0x88bae6,_0x14b975){return function(_0x109c31){if(!_0x109c31){_0x88bae6[_0x6a7a('0x23')](0x194);}return _0x109c31;};}function handleError(_0x515138,_0xfedc59){_0xfedc59=_0xfedc59||0x1f4;return function(_0x3b4f4e){logger[_0x6a7a('0x32')](_0x3b4f4e['stack']);if(_0x3b4f4e[_0x6a7a('0x33')]){delete _0x3b4f4e[_0x6a7a('0x33')];}_0x515138[_0x6a7a('0x24')](_0xfedc59)[_0x6a7a('0x34')](_0x3b4f4e);};}function getInteractionUsers(_0x12ee4f,_0x4f7917){return new BPromise(function(_0x5d7e4d,_0x598921){try{if(_0x4f7917[_0x12ee4f['id']]){_0x12ee4f[_0x6a7a('0x35')]=_[_0x6a7a('0x36')](_0x4f7917[_0x12ee4f['id']],function(_0xd8a6d8){return{'id':_0xd8a6d8['id'],'fullname':_0xd8a6d8[_0x6a7a('0x37')]};});}}catch(_0x4704e0){_0x598921(_0x4704e0);}_0x5d7e4d(_0x12ee4f);});}function getInteractionTags(_0x51f432,_0x545e2f){return new BPromise(function(_0x4e784f,_0x1acf10){try{if(_0x51f432['TagIds']){_0x51f432[_0x6a7a('0x38')]=[];_0x51f432['TagIds'][_0x6a7a('0x39')](',')[_0x6a7a('0x3a')](function(_0x2c9f70){_0x51f432[_0x6a7a('0x38')][_0x6a7a('0x3b')](_0x545e2f[_0x2c9f70]);});}delete _0x51f432['TagIds'];}catch(_0x3a538d){_0x1acf10(_0x3a538d);}_0x4e784f(_0x51f432);});}function updateSmsInteraction(_0x3ac8c2,_0x1fd52c,_0x2e76b4){return new BPromise(function(_0x4c04c6,_0x4c1f90){return getInteractionUsers(_0x3ac8c2,_0x2e76b4)[_0x6a7a('0x3c')](function(_0x342535){return getInteractionTags(_0x342535,_0x1fd52c);})[_0x6a7a('0x3c')](function(_0x217d1a){_0x4c04c6(_0x217d1a);})[_0x6a7a('0x3d')](function(_0x558bc0){_0x4c1f90(_0x558bc0);});});}exports[_0x6a7a('0x3e')]=function(_0x1bb3b5,_0x2602d4){var _0x32a64b={},_0x46d92c={},_0x560d3b={'count':0x0,'rows':[]};var _0x5504aa=_[_0x6a7a('0x36')](db[_0x6a7a('0x3f')]['rawAttributes'],function(_0x4e0c31){return{'name':_0x4e0c31[_0x6a7a('0x40')],'type':_0x4e0c31[_0x6a7a('0x41')][_0x6a7a('0x42')]};});_0x46d92c[_0x6a7a('0x43')]=_[_0x6a7a('0x36')](_0x5504aa,_0x6a7a('0x33'));_0x46d92c['query']=_[_0x6a7a('0x44')](_0x1bb3b5[_0x6a7a('0x45')]);_0x46d92c['filters']=_[_0x6a7a('0x46')](_0x46d92c[_0x6a7a('0x43')],_0x46d92c['query']);_0x32a64b[_0x6a7a('0x47')]=_[_0x6a7a('0x46')](_0x46d92c['model'],qs['fields'](_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x48')]));_0x32a64b[_0x6a7a('0x47')]=_0x32a64b[_0x6a7a('0x47')][_0x6a7a('0x49')]?_0x32a64b[_0x6a7a('0x47')]:_0x46d92c[_0x6a7a('0x43')];if(!_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x4a')]('nolimit')){_0x32a64b[_0x6a7a('0x2a')]=qs[_0x6a7a('0x2a')](_0x1bb3b5['query'][_0x6a7a('0x2a')]);_0x32a64b[_0x6a7a('0x27')]=qs[_0x6a7a('0x27')](_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x27')]);}_0x32a64b[_0x6a7a('0x4b')]=qs[_0x6a7a('0x4c')](_0x1bb3b5['query'][_0x6a7a('0x4c')]);_0x32a64b[_0x6a7a('0x4d')]=qs[_0x6a7a('0x4e')](_[_0x6a7a('0x4f')](_0x1bb3b5[_0x6a7a('0x45')],_0x46d92c[_0x6a7a('0x4e')]),_0x5504aa);var _0x168596=[];var _0xbadae0=squel[_0x6a7a('0x50')]()[_0x6a7a('0x51')]('id')[_0x6a7a('0x51')](_0x6a7a('0x33'))[_0x6a7a('0x51')]('color')[_0x6a7a('0x52')](_0x6a7a('0x53'));var _0x26ad58=squel[_0x6a7a('0x50')]()[_0x6a7a('0x51')](_0x6a7a('0x54'))['field'](_0x6a7a('0x55'))[_0x6a7a('0x51')]('ui.SmsInteractionId')[_0x6a7a('0x52')](_0x6a7a('0x56'),'ui')[_0x6a7a('0x57')](_0x6a7a('0x58'),'u',_0x6a7a('0x59'));var _0x25f624=squel[_0x6a7a('0x50')]()[_0x6a7a('0x52')](_0x6a7a('0x5a'),'i')[_0x6a7a('0x57')](_0x6a7a('0x5b'),'c',_0x6a7a('0x5c'))[_0x6a7a('0x57')](_0x6a7a('0x58'),'o',_0x6a7a('0x5d'))[_0x6a7a('0x57')](_0x6a7a('0x5e'),'a',_0x6a7a('0x5f'))[_0x6a7a('0x57')](_0x6a7a('0x60'),'me',_0x6a7a('0x61'))[_0x6a7a('0x57')]('sms_interaction_has_tags','it',_0x6a7a('0x62'))[_0x6a7a('0x57')](_0x6a7a('0x53'),'t',_0x6a7a('0x63'));var _0x34bc3a=squel[_0x6a7a('0x64')]();var _0xe29709=[];var _0x4dab7a=squel[_0x6a7a('0x64')]();var _0x4ae404;if(_0x1bb3b5['query'][_0x6a7a('0x65')]){_0x4ae404=as[_0x6a7a('0x66')](_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x65')]);var _0x5561c7=_0x4ae404[_0x6a7a('0x67')];for(var _0x5daa3a=0x0;_0x5daa3a<_0x4ae404[_0x6a7a('0x68')][_0x6a7a('0x49')];_0x5daa3a++){var _0x524f3c=_0x4ae404['conditions'][_0x5daa3a];var _0x27db25='i';var _0x56ebd5=_['find'](_0x5504aa,[_0x6a7a('0x33'),_0x524f3c[_0x6a7a('0x51')]]);if(!_0x56ebd5){switch(_0x524f3c[_0x6a7a('0x51')]){case _0x6a7a('0x69'):if(_0x524f3c[_0x6a7a('0x6a')]==0x1){_0x25f624['having']('`'+_0x524f3c[_0x6a7a('0x51')]+_0x6a7a('0x6b'));}else{_0x25f624[_0x6a7a('0x6c')]('`'+_0x524f3c[_0x6a7a('0x51')]+'`\x20>\x200');}break;case _0x6a7a('0x6d'):if(_0x524f3c[_0x6a7a('0x6e')]===_0x6a7a('0x6f')){if(_0x524f3c[_0x6a7a('0x6a')][_0x6a7a('0x39')]('\x20')[_0x6a7a('0x49')]>0x1){_0x34bc3a[_0x5561c7](_0x6a7a('0x70'),qs[_0x6a7a('0x71')](_0x524f3c[_0x6a7a('0x6a')]),null);}else{var _0x4733e5='%'+_0x524f3c[_0x6a7a('0x6a')]+'%';_0x34bc3a[_0x5561c7]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x4733e5,_0x4733e5,_0x4733e5);}}else{_0x56ebd5=_['find'](_0x5504aa,[_0x6a7a('0x33'),_0x6a7a('0x72')]);_0x524f3c[_0x6a7a('0x51')]=_0x6a7a('0x72');_0x36b431=as[_0x6a7a('0x73')](_0x27db25,_0x56ebd5['type'],_0x524f3c);_0x34bc3a[_0x5561c7](_0x36b431['text'],_0x36b431[_0x6a7a('0x6a')][_0x6a7a('0x74')],_0x36b431['value'][_0x6a7a('0x25')]);}break;case'Tag':var _0x2886bc=_0x524f3c[_0x6a7a('0x6a')][_0x6a7a('0x39')](',')[_0x6a7a('0x36')](function(_0x4d20e4){return Number(_0x4d20e4);});_0x2886bc[_0x6a7a('0x3a')](function(_0x1441dc){_0x4dab7a['or'](_0x6a7a('0x75'),'%,'+_0x1441dc+',%');});_0xe29709=_[_0x6a7a('0x76')](_0xe29709,_0x2886bc);break;case _0x6a7a('0x77'):if(_0x524f3c[_0x6a7a('0x6e')]===_0x6a7a('0x6f')){_0x34bc3a[_0x5561c7](_0x6a7a('0x78'),'%'+_0x524f3c[_0x6a7a('0x6a')]+'%',null);}else{_0x56ebd5=_[_0x6a7a('0x79')](_0x5504aa,[_0x6a7a('0x33'),_0x6a7a('0x7a')]);_0x524f3c['field']=_0x6a7a('0x7a');_0x36b431=as[_0x6a7a('0x73')](_0x27db25,_0x56ebd5[_0x6a7a('0x41')],_0x524f3c);_0x34bc3a[_0x5561c7](_0x36b431[_0x6a7a('0x7b')],_0x36b431[_0x6a7a('0x6a')][_0x6a7a('0x74')],_0x36b431[_0x6a7a('0x6a')][_0x6a7a('0x25')]);}break;case _0x6a7a('0x7c'):_0x36b431=as['buildExpression']('me',null,_0x524f3c);_0x34bc3a[_0x5561c7](_0x36b431[_0x6a7a('0x7b')],_0x36b431['value'][_0x6a7a('0x74')],_0x36b431[_0x6a7a('0x6a')][_0x6a7a('0x25')]);break;}}else{var _0x36b431=as[_0x6a7a('0x73')](_0x27db25,_0x56ebd5['type'],_0x524f3c);_0x34bc3a[_0x5561c7](_0x36b431[_0x6a7a('0x7b')],_0x36b431[_0x6a7a('0x6a')][_0x6a7a('0x74')],_0x36b431[_0x6a7a('0x6a')][_0x6a7a('0x25')]);}}}else{var _0x240204=_(_0x1bb3b5[_0x6a7a('0x45')])['keys']()[_0x6a7a('0x36')](function(_0x5a6cd7){return _[_0x6a7a('0x7d')](_0x5504aa,[_0x6a7a('0x33'),_0x5a6cd7])?_0x5a6cd7:undefined;})[_0x6a7a('0x7e')]()[_0x6a7a('0x6a')]();if(!_['isEmpty'](_0x240204)){_0x240204[_0x6a7a('0x3a')](function(_0x37066a){if(_0x37066a===_0x6a7a('0x7f')){_0x25f624[_0x6a7a('0x4d')]('i.SmsAccountId\x20IN\x20?',[][_0x6a7a('0x80')](_0x1bb3b5[_0x6a7a('0x45')][_0x37066a]));}else if(_0x37066a===_0x6a7a('0x81')){var _0x4dc723=JSON[_0x6a7a('0x82')](_0x1bb3b5['query'][_0x37066a])[_0x6a7a('0x83')];var _0x19a1f2=JSON[_0x6a7a('0x82')](_0x1bb3b5[_0x6a7a('0x45')][_0x37066a])[_0x6a7a('0x84')];_0x25f624[_0x6a7a('0x4d')](_0x6a7a('0x85'),_0x4dc723,_0x19a1f2);}else{if(_0x1bb3b5[_0x6a7a('0x45')][_0x37066a]===_0x6a7a('0x86')){_0x25f624[_0x6a7a('0x4d')]('i.'+_0x37066a+_0x6a7a('0x87'));}else{_0x25f624[_0x6a7a('0x4d')]('i.'+_0x37066a+_0x6a7a('0x88'),_0x1bb3b5[_0x6a7a('0x45')][_0x37066a]);}}});}if(_0x1bb3b5[_0x6a7a('0x45')]['read']){if(_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x89')]==0x1){_0x25f624['having'](_0x6a7a('0x8a'));}else{_0x25f624[_0x6a7a('0x6c')](_0x6a7a('0x8b'));}}if(_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x8c')]){_0xe29709=_[_0x6a7a('0x8d')](_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x8c')])?_0x1bb3b5['query'][_0x6a7a('0x8c')]:new Array(_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x8c')]);_0xe29709[_0x6a7a('0x3a')](function(_0x2c6893){_0x4dab7a['or'](_0x6a7a('0x75'),'%,'+_0x2c6893+',%');});}if(_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x8e')]){var _0x23446a=_0x1bb3b5[_0x6a7a('0x45')]['filter'][_0x6a7a('0x8f')]('\x5c','\x5c\x5c')[_0x6a7a('0x8f')](/'/g,'\x27\x27');if(qs[_0x6a7a('0x90')](_0x23446a)){_0x34bc3a['or'](_0x6a7a('0x91'),_0x23446a+'%')['or'](_0x6a7a('0x92'),_0x23446a+'%');}else{_0x34bc3a['or'](_0x6a7a('0x93'),qs[_0x6a7a('0x71')](_0x23446a))['or'](_0x6a7a('0x94'),_0x23446a+'%');}}}_0x25f624[_0x6a7a('0x4d')](_0x34bc3a);_0x25f624['group']('i.id');var _0x6f4129={'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]};var _0x464586=_0x25f624[_0x6a7a('0x95')]();_0x464586[_0x6a7a('0x51')](_0x6a7a('0x96'));_0x464586[_0x6a7a('0x51')](_0x6a7a('0x97'),'unreadMessages');if(_0x32a64b[_0x6a7a('0x4b')]){_0x32a64b[_0x6a7a('0x4b')][_0x6a7a('0x3a')](function(_0x4dfb41){var _0x1f6379=_0x4dfb41[0x0]==='contactName'?_0x4dfb41[0x0]:'i.'+_0x4dfb41[0x0];_0x25f624[_0x6a7a('0x4b')](_0x1f6379,_0x4dfb41[0x1]===_0x6a7a('0x98')?![]:!![]);});}if(!_[_0x6a7a('0x99')](_0xe29709)){_0x25f624[_0x6a7a('0x6c')](_0x4dab7a);_0x464586['where'](_0x6a7a('0x9a'),_0xe29709);}BPromise[_0x6a7a('0x9b')]()[_0x6a7a('0x3c')](function(){if(!_0x4ae404){if(_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x7f')])return;_0x464586['where']('i.SmsAccountId\x20IS\x20NOT\x20NULL');_0x25f624[_0x6a7a('0x4d')](_0x6a7a('0x9c'));return;}if(_0x1bb3b5['user']['role']!=='agent')return;return _0x1bb3b5[_0x6a7a('0x9d')][_0x6a7a('0x9e')]({'attributes':['id'],'raw':!![]})['then'](function(_0x51e377){if(_[_0x6a7a('0x99')](_0x51e377)){_0x464586[_0x6a7a('0x4d')](_0x6a7a('0x9f'));_0x25f624[_0x6a7a('0x4d')](_0x6a7a('0x9f'));}else{_0x464586[_0x6a7a('0x4d')](_0x6a7a('0xa0'),_[_0x6a7a('0x36')](_0x51e377,'id'));_0x25f624[_0x6a7a('0x4d')](_0x6a7a('0xa0'),_[_0x6a7a('0x36')](_0x51e377,'id'));}});})[_0x6a7a('0x3c')](function(){if(_0x1bb3b5[_0x6a7a('0x9d')][_0x6a7a('0xa1')]===_0x6a7a('0xa2')&&!_0x4ae404&&!_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x7f')])return[];return db[_0x6a7a('0xa3')][_0x6a7a('0x45')](_0x464586[_0x6a7a('0xa4')](),_0x6f4129);})[_0x6a7a('0x3c')](function(_0xec6df0){_0x560d3b[_0x6a7a('0x29')]=_0xec6df0[_0x6a7a('0x49')];if(_0x560d3b[_0x6a7a('0x29')]===0x0)return[];return db[_0x6a7a('0xa3')]['query'](_0xbadae0[_0x6a7a('0xa4')](),_0x6f4129)[_0x6a7a('0x3c')](function(_0x94e2f9){_0x168596=_[_0x6a7a('0xa5')](_0x94e2f9,'id');_0x6f4129=_['merge'](_0x6f4129,{'model':db[_0x6a7a('0x3f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1bb3b5[_0x6a7a('0x45')]['fields']){_0x32a64b['attributes'][_0x6a7a('0x3a')](function(_0x7af228){_0x25f624[_0x6a7a('0x51')]('i.'+_0x7af228);});}else{_0x25f624['field'](_0x6a7a('0x97'),_0x6a7a('0x69'));_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xa6'),_0x6a7a('0xa7'));_0x25f624[_0x6a7a('0x51')]('a.mandatoryDisposition',_0x6a7a('0xa8'));_0x25f624['field'](_0x6a7a('0xa9'),'contactName');_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xaa'));_0x25f624[_0x6a7a('0x51')]('c.firstName','Contact.firstName');_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xab'),'Contact.lastName');_0x25f624[_0x6a7a('0x51')]('c.email',_0x6a7a('0xac'));_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xad'),_0x6a7a('0xae'));_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xaf'),_0x6a7a('0xb0'));_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xb1'),_0x6a7a('0xb2'));_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xb3'),_0x6a7a('0xb4'));_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xb5'),_0x6a7a('0xb6'));_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xb7'),'TagIds');}if(_0x32a64b[_0x6a7a('0x2a')])_0x25f624[_0x6a7a('0x2a')](_0x32a64b['limit']);if(_0x32a64b[_0x6a7a('0x27')])_0x25f624[_0x6a7a('0x27')](_0x32a64b[_0x6a7a('0x27')]);return db['sequelize'][_0x6a7a('0x45')](_0x25f624['toString'](),_0x6f4129);})['then'](function(_0x33cc45){if(_0x33cc45[_0x6a7a('0x49')]>0x0)_0x26ad58[_0x6a7a('0x4d')](_0x6a7a('0xb8'),_[_0x6a7a('0x36')](_0x33cc45,'id'));return db[_0x6a7a('0xa3')][_0x6a7a('0x45')](_0x26ad58['toString'](),_0x6f4129)[_0x6a7a('0x3c')](function(_0x3799cc){var _0x481477=_[_0x6a7a('0xb9')](_0x3799cc,_0x6a7a('0xba'));var _0x351a08=[];_0x33cc45[_0x6a7a('0x3a')](function(_0x5d3d69){_0x351a08[_0x6a7a('0x3b')](updateSmsInteraction(_0x5d3d69,_0x168596,_0x481477));});return BPromise[_0x6a7a('0xbb')](_0x351a08);});});})['then'](function(_0x3b8ea5){_0x560d3b[_0x6a7a('0xbc')]=_0x3b8ea5;return _0x560d3b;})[_0x6a7a('0x3c')](respondWithFilteredResult(_0x2602d4,_0x32a64b))['catch'](handleError(_0x2602d4,null));};exports['show']=function(_0xb5c1da,_0x262211){var _0x23ee07={'raw':![],'where':{'id':_0xb5c1da[_0x6a7a('0xbd')]['id']}},_0x3b186d={};_0x3b186d[_0x6a7a('0x43')]=_['keys'](db[_0x6a7a('0x3f')]['rawAttributes']);_0x3b186d[_0x6a7a('0x45')]=_[_0x6a7a('0x44')](_0xb5c1da['query']);_0x3b186d[_0x6a7a('0x4e')]=_[_0x6a7a('0x46')](_0x3b186d[_0x6a7a('0x43')],_0x3b186d[_0x6a7a('0x45')]);_0x23ee07['attributes']=_[_0x6a7a('0x46')](_0x3b186d['model'],qs[_0x6a7a('0x48')](_0xb5c1da['query'][_0x6a7a('0x48')]));_0x23ee07[_0x6a7a('0x47')]=_0x23ee07[_0x6a7a('0x47')][_0x6a7a('0x49')]?_0x23ee07[_0x6a7a('0x47')]:_0x3b186d[_0x6a7a('0x43')];if(_0xb5c1da[_0x6a7a('0x45')][_0x6a7a('0xbe')]){_0x23ee07[_0x6a7a('0xbf')]=[{'all':!![]}];}_0x23ee07=_['merge']({},_0x23ee07,_0xb5c1da[_0x6a7a('0xc0')]);return db[_0x6a7a('0x3f')][_0x6a7a('0x79')](_0x23ee07)[_0x6a7a('0x3c')](handleEntityNotFound(_0x262211,null))[_0x6a7a('0x3c')](respondWithResult(_0x262211,null))['catch'](handleError(_0x262211,null));};exports[_0x6a7a('0xc1')]=function(_0x3bdea5,_0x3ccf75){return db[_0x6a7a('0x3f')]['create'](_0x3bdea5[_0x6a7a('0x7c')],{})[_0x6a7a('0x3c')](respondWithResult(_0x3ccf75,0xc9))['catch'](handleError(_0x3ccf75,null));};exports['update']=function(_0x15a348,_0x58d31c){if(_0x15a348[_0x6a7a('0x7c')]['id']){delete _0x15a348[_0x6a7a('0x7c')]['id'];}return db[_0x6a7a('0x3f')]['find']({'where':{'id':_0x15a348[_0x6a7a('0xbd')]['id']}})['then'](handleEntityNotFound(_0x58d31c,null))[_0x6a7a('0x3c')](saveUpdates(_0x15a348[_0x6a7a('0x7c')],null))[_0x6a7a('0x3c')](respondWithResult(_0x58d31c,null))[_0x6a7a('0x3d')](handleError(_0x58d31c,null));};exports['destroy']=function(_0x105c39,_0x58a15b){return db[_0x6a7a('0x3f')][_0x6a7a('0x79')]({'where':{'id':_0x105c39[_0x6a7a('0xbd')]['id']}})[_0x6a7a('0x3c')](handleEntityNotFound(_0x58a15b,null))[_0x6a7a('0x3c')](removeEntity(_0x58a15b,null))['catch'](handleError(_0x58a15b,null));};exports[_0x6a7a('0xc2')]=function(_0x7efee8,_0x18eb5b){return db[_0x6a7a('0x3f')]['describe']()[_0x6a7a('0x3c')](respondWithResult(_0x18eb5b,null))[_0x6a7a('0x3d')](handleError(_0x18eb5b,null));};exports['addMessage']=function(_0x552b09,_0x202d6a,_0xdc08f6){return db['SmsMessage'][_0x6a7a('0x79')]({'where':{'id':_0x552b09[_0x6a7a('0xbd')]['id']}})['then'](handleEntityNotFound(_0x202d6a,null))[_0x6a7a('0x3c')](function(_0x212f0f){if(_0x212f0f){return _0x212f0f[_0x6a7a('0xc3')](_0x552b09[_0x6a7a('0x7c')][_0x6a7a('0xc4')],_['omit'](_0x552b09[_0x6a7a('0x7c')],[_0x6a7a('0xc4'),'id'])||{});}})[_0x6a7a('0x3c')](respondWithResult(_0x202d6a,null))['catch'](handleError(_0x202d6a,null));};exports[_0x6a7a('0xc5')]=function(_0x1e5d9b,_0x570cf0,_0x205658){var _0x188e95={'raw':![],'where':{}};var _0x414f0d={};var _0x1f6553={'count':0x0,'rows':[]};return db[_0x6a7a('0x3f')][_0x6a7a('0xc6')]({'where':{'id':_0x1e5d9b[_0x6a7a('0xbd')]['id']}})['then'](handleEntityNotFound(_0x570cf0,null))[_0x6a7a('0x3c')](function(_0xb190d7){if(_0xb190d7){_0x414f0d['model']=_[_0x6a7a('0x44')](db[_0x6a7a('0xc7')][_0x6a7a('0xc8')]);_0x414f0d[_0x6a7a('0x45')]=_['keys'](_0x1e5d9b[_0x6a7a('0x45')]);_0x414f0d[_0x6a7a('0x4e')]=_[_0x6a7a('0x46')](_0x414f0d[_0x6a7a('0x43')],_0x414f0d[_0x6a7a('0x45')]);_0x188e95[_0x6a7a('0x47')]=_['intersection'](_0x414f0d[_0x6a7a('0x43')],qs['fields'](_0x1e5d9b[_0x6a7a('0x45')]['fields']));_0x188e95[_0x6a7a('0x47')]=_0x188e95[_0x6a7a('0x47')][_0x6a7a('0x49')]?_0x188e95['attributes']:_0x414f0d[_0x6a7a('0x43')];if(!_0x1e5d9b[_0x6a7a('0x45')]['hasOwnProperty'](_0x6a7a('0xc9'))){_0x188e95[_0x6a7a('0x2a')]=qs[_0x6a7a('0x2a')](_0x1e5d9b[_0x6a7a('0x45')]['limit']);_0x188e95[_0x6a7a('0x27')]=qs[_0x6a7a('0x27')](_0x1e5d9b[_0x6a7a('0x45')][_0x6a7a('0x27')]);}_0x188e95[_0x6a7a('0x4b')]=qs[_0x6a7a('0x4c')](_0x1e5d9b[_0x6a7a('0x45')]['sort']);_0x188e95['where']=qs[_0x6a7a('0x4e')](_[_0x6a7a('0x4f')](_0x1e5d9b[_0x6a7a('0x45')],_0x414f0d[_0x6a7a('0x4e')]));_0x188e95[_0x6a7a('0x4d')]['SmsInteractionId']=_0xb190d7['id'];if(_0x1e5d9b[_0x6a7a('0x45')][_0x6a7a('0x8e')]){_0x188e95['where']=_['merge'](_0x188e95[_0x6a7a('0x4d')],{'$or':_[_0x6a7a('0x36')](_0x188e95[_0x6a7a('0x47')],function(_0xcf9461){var _0x5ad604={};_0x5ad604[_0xcf9461]={'$like':'%'+_0x1e5d9b[_0x6a7a('0x45')]['filter']+'%'};return _0x5ad604;})});}if(_0x1e5d9b[_0x6a7a('0x45')]['$gte']){var _0x48ddfd=_0x1e5d9b['query'][_0x6a7a('0x83')]['split'](',');var _0x27b3c7={};_0x27b3c7[_0x48ddfd[0x0]]={'$gte':moment(_0x48ddfd[0x1])[_0x6a7a('0xca')](_0x6a7a('0xcb'))};_0x188e95['where']=_[_0x6a7a('0xcc')](_0x188e95[_0x6a7a('0x4d')],_0x27b3c7);}_0x188e95=_['merge']({},_0x188e95,_0x1e5d9b[_0x6a7a('0xc0')]);return db[_0x6a7a('0xc7')]['count']({'where':_0x188e95[_0x6a7a('0x4d')]})[_0x6a7a('0x3c')](function(_0x21d4d3){_0x1f6553[_0x6a7a('0x29')]=_0x21d4d3;if(_0x1e5d9b[_0x6a7a('0x45')][_0x6a7a('0xbe')]){_0x188e95[_0x6a7a('0xbf')]=[{'all':!![]}];}return db['SmsMessage'][_0x6a7a('0xcd')](_0x188e95);})[_0x6a7a('0x3c')](function(_0x2ec102){_0x1f6553[_0x6a7a('0xbc')]=_0x2ec102;return _0x1f6553;});}})[_0x6a7a('0x3c')](respondWithFilteredResult(_0x570cf0,_0x188e95))['catch'](handleError(_0x570cf0,null));};exports[_0x6a7a('0xce')]=function(_0x43d599,_0x4116e7,_0xfa53cf){return db[_0x6a7a('0x3f')][_0x6a7a('0x79')]({'where':{'id':_0x43d599[_0x6a7a('0xbd')]['id']}})['then'](handleEntityNotFound(_0x4116e7,null))['then'](function(_0x4b63d5){if(_0x4b63d5){return _0x4b63d5['setTags'](_0x43d599[_0x6a7a('0x7c')][_0x6a7a('0xc4')],_['omit'](_0x43d599[_0x6a7a('0x7c')],[_0x6a7a('0xc4'),'id'])||{})[_0x6a7a('0xcf')](function(){return db['Tag'][_0x6a7a('0xcd')]({'attributes':['id',_0x6a7a('0x33'),_0x6a7a('0xd0')],'where':{'id':_0x43d599[_0x6a7a('0x7c')]['ids']}});})['then'](function(_0x4ae30c){socket[_0x6a7a('0xd1')](_0x6a7a('0xd2'),{'id':Number(_0x43d599[_0x6a7a('0xbd')]['id']),'tags':_0x4ae30c||[]});return{'id':Number(_0x43d599[_0x6a7a('0xbd')]['id']),'tags':_0x4ae30c||[]};});}})['then'](respondWithResult(_0x4116e7,null))[_0x6a7a('0x3d')](handleError(_0x4116e7,null));};exports[_0x6a7a('0xd3')]=function(_0x92488c,_0xa5c94a,_0x1d8965){return db[_0x6a7a('0x3f')]['find']({'where':{'id':_0x92488c['params']['id']}})[_0x6a7a('0x3c')](handleEntityNotFound(_0xa5c94a,null))[_0x6a7a('0x3c')](function(_0xb3fab1){if(_0xb3fab1){return _0xb3fab1['removeTags'](_0x92488c[_0x6a7a('0x45')]['ids']);}})['then'](respondWithStatusCode(_0xa5c94a,null))['catch'](handleError(_0xa5c94a,null));};exports['download']=function(_0x4bed17,_0x3d18c1){var _0x44ced8=moment()[_0x6a7a('0xd4')]()[_0x6a7a('0xa4')]();var _0x1ec006=path[_0x6a7a('0xd5')](config[_0x6a7a('0xd6')],_0x6a7a('0xd7'),'files',_0x6a7a('0xd8'));var _0xb12bc9=path[_0x6a7a('0xd5')](config[_0x6a7a('0xd6')],_0x6a7a('0xd7'),_0x6a7a('0xd9'),_0x6a7a('0xda'));var _0x4f7e31=path[_0x6a7a('0xd5')](_0x1ec006,_0x44ced8);var _0x2e689a=util['format'](_0x6a7a('0xdb'),_0x4bed17[_0x6a7a('0xbd')]['id'],_0x44ced8);var _0x163816=path['join'](_0x1ec006,_0x2e689a);var _0x14582e=[];_0x14582e[_0x6a7a('0x3b')]({'model':db[_0x6a7a('0x77')],'as':'User','attributes':['id',_0x6a7a('0x37')],'raw':!![]});_0x14582e[_0x6a7a('0x3b')]({'model':db[_0x6a7a('0xdc')],'as':_0x6a7a('0x6d'),'attributes':['id',_0x6a7a('0xdd'),_0x6a7a('0xde')],'raw':!![]});var _0x296e82=[{'model':db['SmsMessage'],'as':'Messages','attributes':['id',_0x6a7a('0x7c'),_0x6a7a('0x81'),_0x6a7a('0xdf'),_0x6a7a('0xe0'),_0x6a7a('0x89')],'include':_0x14582e}];_0x296e82['push']({'model':db[_0x6a7a('0xe1')],'as':_0x6a7a('0xe2'),'attributes':['id',_0x6a7a('0x33')]});_0x296e82[_0x6a7a('0x3b')]({'model':db[_0x6a7a('0x77')],'as':'Owner','attributes':['id',_0x6a7a('0x37')]});return db['SmsInteraction'][_0x6a7a('0x79')]({'where':{'id':_0x4bed17[_0x6a7a('0xbd')]['id']},'include':_0x296e82})[_0x6a7a('0x3c')](handleEntityNotFound(_0x3d18c1,null))['then'](function(_0xb83422){if(_0xb83422){var _0x224de6=_0xb83422['get']({'plain':!![]});fs[_0x6a7a('0xe3')](_0x4f7e31);var _0x4b7271={'channel':_0x6a7a('0xe4'),'account':_0x224de6[_0x6a7a('0xe2')][_0x6a7a('0x33')],'agent':_0x224de6[_0x6a7a('0xe5')]?_0x224de6['Owner']['fullname']:'N.A.','createdAt':moment(_0x224de6[_0x6a7a('0x81')])[_0x6a7a('0xca')]('YYYY-MM-DD\x20HH:mm:ss')[_0x6a7a('0xa4')](),'closedAt':_0x224de6[_0x6a7a('0xe6')]?moment(_0x224de6['closedAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x224de6[_0x6a7a('0xe7')],'messages':_(_0x224de6[_0x6a7a('0xe8')])[_0x6a7a('0x8e')]({'secret':![]})[_0x6a7a('0x36')](function(_0x2d48d9){return{'date':moment(_0x2d48d9[_0x6a7a('0x81')])['format'](_0x6a7a('0xcb'))[_0x6a7a('0xa4')](),'sender':_0x2d48d9[_0x6a7a('0xdf')]==='out'?_0x2d48d9[_0x6a7a('0x77')]?_0x2d48d9[_0x6a7a('0x77')][_0x6a7a('0x37')]:'System':_0x2d48d9[_0x6a7a('0x6d')][_0x6a7a('0xdd')]+(_0x2d48d9['Contact'][_0x6a7a('0xde')]?'\x20'+_0x2d48d9[_0x6a7a('0x6d')][_0x6a7a('0xde')]:''),'body':_0x2d48d9['body'],'direction':_0x2d48d9['direction']===_0x6a7a('0xe9')?'A':'C','secret':_0x2d48d9[_0x6a7a('0xe0')],'read':_0x2d48d9[_0x6a7a('0x89')]};})[_0x6a7a('0x6a')]()};return ejs[_0x6a7a('0xea')](path[_0x6a7a('0xd5')](config[_0x6a7a('0xd6')],_0x6a7a('0xd7'),_0x6a7a('0xeb'),_0x6a7a('0xec')),{'interaction':_0x4b7271})['then'](function(_0x2182dd){var _0x37fb7d=path[_0x6a7a('0xd5')](_0x4f7e31,_0x6a7a('0xed')+_0x224de6['id']+'-'+_0x44ced8+_0x6a7a('0xee'));var _0x4ca5b0={'path':_0x37fb7d,'channel':_0x6a7a('0xe4'),'interactionId':_0x224de6['id']};return pdf[_0x6a7a('0xef')](_0x2182dd,_0x4ca5b0);})[_0x6a7a('0x3c')](function(){return new BPromise(function(_0x278376,_0x3e47ee){zipdir(_0x4f7e31,{'saveTo':_0x163816},function(_0xc065be,_0x297815){if(_0xc065be)return _0x3e47ee(_0xc065be);return _0x278376(_0x297815);});})[_0x6a7a('0x3c')](function(){return new BPromise(function(_0x3699ea,_0x3b7edd){rimraf(_0x4f7e31,function(_0x5e8643){if(_0x5e8643)_0x3b7edd(_0x5e8643);return _0x3699ea();});});})[_0x6a7a('0x3c')](function(){return _0x3d18c1[_0x6a7a('0xf0')](_0x163816,_0x2e689a,function(_0x2a8deb){if(_0x2a8deb){console[_0x6a7a('0xf1')](_0x6a7a('0xf2'),_0x2a8deb);}else{fs['unlinkSync'](_0x163816);}});});});}else{return _0x3d18c1[_0x6a7a('0x23')](0xc8);}})['catch'](handleError(_0x3d18c1,null));};
\ No newline at end of file
index bad87a4..4c6121a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25e7=['hasOwnProperty','hook','events','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','save','update','remove','setDataValue','Users','map','findAll','then','unreadMessages','length','emit'];(function(_0x146edd,_0x2be255){var _0x46079b=function(_0x20ad8c){while(--_0x20ad8c){_0x146edd['push'](_0x146edd['shift']());}};_0x46079b(++_0x2be255);}(_0x25e7,0x1d6));var _0x725e=function(_0xbbbeae,_0x4a414a){_0xbbbeae=_0xbbbeae-0x0;var _0x1cb9c9=_0x25e7[_0xbbbeae];return _0x1cb9c9;};'use strict';var EventEmitter=require(_0x725e('0x0'));var SmsInteraction=require(_0x725e('0x1'))['db'][_0x725e('0x2')];var SmsMessage=require(_0x725e('0x1'))['db'][_0x725e('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x725e('0x4')](0x0);var events={'afterCreate':_0x725e('0x5'),'afterUpdate':_0x725e('0x6'),'afterDestroy':_0x725e('0x7')};function emitEvent(_0x3da706){return function(_0x493364,_0x5e17a9,_0x2497a5){_0x493364['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x111a50){_0x493364[_0x725e('0x8')](_0x725e('0x9'),_0x111a50[_0x725e('0xa')](function(_0x40d238){return{'id':_0x40d238['id']};}));return SmsMessage[_0x725e('0xb')]({'where':{'SmsInteractionId':_0x493364['id'],'direction':'in','read':![]},'raw':!![]});})[_0x725e('0xc')](function(_0x7c40ff){_0x493364[_0x725e('0x8')](_0x725e('0xd'),_0x7c40ff[_0x725e('0xe')]);SmsInteractionEvents[_0x725e('0xf')](_0x3da706+':'+_0x493364['id'],_0x493364);SmsInteractionEvents['emit'](_0x3da706,_0x493364);_0x2497a5(null);})['catch'](_0x2497a5(null));};}for(var e in events){if(events[_0x725e('0x10')](e)){var event=events[e];SmsInteraction[_0x725e('0x11')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
+var _0xd4f4=['../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events'];(function(_0x40d62a,_0x295735){var _0x8cff50=function(_0x4dbe13){while(--_0x4dbe13){_0x40d62a['push'](_0x40d62a['shift']());}};_0x8cff50(++_0x295735);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x9da4a8,_0x57d8f6){_0x9da4a8=_0x9da4a8-0x0;var _0x472380=_0xd4f4[_0x9da4a8];return _0x472380;};'use strict';var EventEmitter=require(_0x4d4f('0x0'));var SmsInteraction=require(_0x4d4f('0x1'))['db'][_0x4d4f('0x2')];var SmsMessage=require(_0x4d4f('0x1'))['db'][_0x4d4f('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x4d4f('0x4')](0x0);var events={'afterCreate':_0x4d4f('0x5'),'afterUpdate':_0x4d4f('0x6'),'afterDestroy':_0x4d4f('0x7')};function emitEvent(_0xa53cb8){return function(_0x15585,_0x5a98c7,_0x5f451b){_0x15585['getUsers']({'attributes':['id'],'raw':!![]})[_0x4d4f('0x8')](function(_0xecc103){_0x15585[_0x4d4f('0x9')](_0x4d4f('0xa'),_0xecc103[_0x4d4f('0xb')](function(_0x3c70b9){return{'id':_0x3c70b9['id']};}));return SmsMessage[_0x4d4f('0xc')]({'where':{'SmsInteractionId':_0x15585['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4d4f('0x8')](function(_0x385597){_0x15585[_0x4d4f('0x9')](_0x4d4f('0xd'),_0x385597[_0x4d4f('0xe')]);SmsInteractionEvents[_0x4d4f('0xf')](_0xa53cb8+':'+_0x15585['id'],_0x15585);SmsInteractionEvents[_0x4d4f('0xf')](_0xa53cb8,_0x15585);_0x5f451b(null);})[_0x4d4f('0x10')](_0x5f451b(null));};}for(var e in events){if(events[_0x4d4f('0x11')](e)){var event=events[e];SmsInteraction[_0x4d4f('0x12')](e,emitEvent(event));}}module[_0x4d4f('0x13')]=SmsInteractionEvents;
\ No newline at end of file
index 96ba7d2..d7afc3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccb4=['YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment','path','rimraf','../../config/environment','exports','define','sms_interactions','changed','closedAt'];(function(_0x3e6c59,_0x5b1bf9){var _0x3b9652=function(_0x1dd3db){while(--_0x1dd3db){_0x3e6c59['push'](_0x3e6c59['shift']());}};_0x3b9652(++_0x5b1bf9);}(_0xccb4,0x160));var _0x4ccb=function(_0x10004e,_0xd701e6){_0x10004e=_0x10004e-0x0;var _0x5af990=_0xccb4[_0x10004e];return _0x5af990;};'use strict';var _=require(_0x4ccb('0x0'));var util=require('util');var logger=require(_0x4ccb('0x1'))(_0x4ccb('0x2'));var moment=require(_0x4ccb('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4ccb('0x4'));var rimraf=require(_0x4ccb('0x5'));var config=require(_0x4ccb('0x6'));var attributes=require('./smsInteraction.attributes');module[_0x4ccb('0x7')]=function(_0x5682dd,_0x6480f6){return _0x5682dd[_0x4ccb('0x8')]('SmsInteraction',attributes,{'tableName':_0x4ccb('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1a172f,_0x341371,_0x5ec87f){if(_0x1a172f[_0x4ccb('0xa')]('closed')){_0x1a172f[_0x4ccb('0xb')]=moment()['format'](_0x4ccb('0xc'));}_0x5ec87f(null,_0x1a172f);}}});};
\ No newline at end of file
+var _0xafb3=['changed','format','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsInteraction.attributes','exports','define','sms_interactions'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xafb3,0x6b));var _0x3afb=function(_0x1d6bbd,_0x2596b6){_0x1d6bbd=_0x1d6bbd-0x0;var _0x3c5210=_0xafb3[_0x1d6bbd];return _0x3c5210;};'use strict';var _=require(_0x3afb('0x0'));var util=require(_0x3afb('0x1'));var logger=require(_0x3afb('0x2'))(_0x3afb('0x3'));var moment=require(_0x3afb('0x4'));var BPromise=require(_0x3afb('0x5'));var rp=require(_0x3afb('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3afb('0x7'));var config=require(_0x3afb('0x8'));var attributes=require(_0x3afb('0x9'));module[_0x3afb('0xa')]=function(_0xdf64d9,_0x36dcb4){return _0xdf64d9[_0x3afb('0xb')]('SmsInteraction',attributes,{'tableName':_0x3afb('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x282051,_0x9132a,_0x466408){if(_0x282051[_0x3afb('0xd')]('closed')){_0x282051['closedAt']=moment()[_0x3afb('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x466408(null,_0x282051);}}});};
\ No newline at end of file
index 6b410b2..29a7f17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcb2=['moment','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','SmsInteraction,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','UpdateSmsInteraction','body','options','attributes','limit','debug','AddTagsToSmsInteraction','find','where','addTags','ids','spread','AddTags','lodash'];(function(_0x4ace0e,_0x7f30a8){var _0x376e23=function(_0x3801a3){while(--_0x3801a3){_0x4ace0e['push'](_0x4ace0e['shift']());}};_0x376e23(++_0x7f30a8);}(_0xbcb2,0x1d3));var _0x2bcb=function(_0x5b0482,_0x318c3e){_0x5b0482=_0x5b0482-0x0;var _0x246165=_0xbcb2[_0x5b0482];return _0x246165;};'use strict';var _=require(_0x2bcb('0x0'));var util=require('util');var moment=require(_0x2bcb('0x1'));var BPromise=require('bluebird');var rs=require(_0x2bcb('0x2'));var fs=require('fs');var Redis=require(_0x2bcb('0x3'));var db=require(_0x2bcb('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2bcb('0x5'));var config=require('../../config/environment');var jayson=require(_0x2bcb('0x6'));var client=jayson[_0x2bcb('0x7')][_0x2bcb('0x8')]({'port':0x232a});config[_0x2bcb('0x9')]=_[_0x2bcb('0xa')](config['redis'],{'host':_0x2bcb('0xb'),'port':0x18eb});var socket=require(_0x2bcb('0xc'))(new Redis(config['redis']));require(_0x2bcb('0xd'))[_0x2bcb('0xe')](socket);function respondWithRpcPromise(_0x11c999,_0x5db35d,_0x2abab5){return new BPromise(function(_0x5b3e10,_0x431233){return client[_0x2bcb('0xf')](_0x11c999,_0x2abab5)[_0x2bcb('0x10')](function(_0x45e510){logger[_0x2bcb('0x11')](_0x2bcb('0x12'),_0x5db35d,_0x2bcb('0x13'));logger['debug'](_0x2bcb('0x14'),_0x5db35d,_0x2bcb('0x13'),JSON['stringify'](_0x45e510));if(_0x45e510[_0x2bcb('0x15')]){if(_0x45e510[_0x2bcb('0x15')][_0x2bcb('0x16')]===0x1f4){logger[_0x2bcb('0x15')](_0x2bcb('0x12'),_0x5db35d,_0x45e510[_0x2bcb('0x15')]['message']);return _0x431233(_0x45e510[_0x2bcb('0x15')][_0x2bcb('0x17')]);}logger[_0x2bcb('0x15')](_0x2bcb('0x12'),_0x5db35d,_0x45e510[_0x2bcb('0x15')][_0x2bcb('0x17')]);return _0x5b3e10(_0x45e510[_0x2bcb('0x15')][_0x2bcb('0x17')]);}else{logger['info']('SmsInteraction,\x20%s,\x20%s',_0x5db35d,'request\x20sent');_0x5b3e10(_0x45e510[_0x2bcb('0x18')]['message']);}})[_0x2bcb('0x19')](function(_0x4f7d91){logger[_0x2bcb('0x15')](_0x2bcb('0x12'),_0x5db35d,_0x4f7d91);_0x431233(_0x4f7d91);});});}exports[_0x2bcb('0x1a')]=function(_0x13e806){var _0x4ac72e=this;return new Promise(function(_0x360b47,_0x23075f){return db['SmsInteraction']['update'](_0x13e806[_0x2bcb('0x1b')],{'raw':_0x13e806[_0x2bcb('0x1c')]?_0x13e806[_0x2bcb('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x13e806['options']?_0x13e806[_0x2bcb('0x1c')]['where']||null:null,'attributes':_0x13e806[_0x2bcb('0x1c')]?_0x13e806['options'][_0x2bcb('0x1d')]||null:null,'limit':_0x13e806['options']?_0x13e806['options'][_0x2bcb('0x1e')]||null:null})[_0x2bcb('0x10')](function(_0x5d28cd){logger['info'](_0x2bcb('0x1a'),_0x13e806);logger[_0x2bcb('0x1f')](_0x2bcb('0x1a'),_0x13e806,JSON['stringify'](_0x5d28cd));_0x360b47(_0x5d28cd);})['catch'](function(_0x436325){logger[_0x2bcb('0x15')](_0x2bcb('0x1a'),_0x436325['message'],_0x13e806);_0x23075f(_0x4ac72e[_0x2bcb('0x15')](0x1f4,_0x436325[_0x2bcb('0x17')]));});});};exports[_0x2bcb('0x20')]=function(_0x588896){return new Promise(function(_0x2d8be0,_0x441289){return db['SmsInteraction'][_0x2bcb('0x21')]({'where':_0x588896[_0x2bcb('0x1c')]?_0x588896[_0x2bcb('0x1c')][_0x2bcb('0x22')]||null:null})[_0x2bcb('0x10')](function(_0x51244c){if(_0x51244c){return _0x51244c[_0x2bcb('0x23')](_0x588896[_0x2bcb('0x1b')][_0x2bcb('0x24')],_['omit'](_0x588896['body'],[_0x2bcb('0x24'),'id'])||{});}})[_0x2bcb('0x25')](function(_0x35b0d3){logger[_0x2bcb('0x11')]('AddTags',_0x588896);logger['debug'](_0x2bcb('0x26'),_0x588896,JSON['stringify'](_0x35b0d3));_0x2d8be0(_0x35b0d3);})[_0x2bcb('0x19')](function(_0x2170eb){logger[_0x2bcb('0x15')]('AddTags',_0x2170eb[_0x2bcb('0x17')],_0x588896);_0x441289(_this[_0x2bcb('0x15')](0x1f4,_0x2170eb[_0x2bcb('0x17')]));});});};
\ No newline at end of file
+var _0xbd10=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','redis','defaults','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where','attributes','limit','ids','spread','AddTags','lodash','util'];(function(_0x5b7d78,_0x1fbb0d){var _0x10354a=function(_0x15daea){while(--_0x15daea){_0x5b7d78['push'](_0x5b7d78['shift']());}};_0x10354a(++_0x1fbb0d);}(_0xbd10,0xee));var _0x0bd1=function(_0x19b747,_0x425536){_0x19b747=_0x19b747-0x0;var _0x5b6533=_0xbd10[_0x19b747];return _0x5b6533;};'use strict';var _=require(_0x0bd1('0x0'));var util=require(_0x0bd1('0x1'));var moment=require(_0x0bd1('0x2'));var BPromise=require(_0x0bd1('0x3'));var rs=require(_0x0bd1('0x4'));var fs=require('fs');var Redis=require(_0x0bd1('0x5'));var db=require(_0x0bd1('0x6'))['db'];var utils=require(_0x0bd1('0x7'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x0bd1('0x8'));var client=jayson[_0x0bd1('0x9')][_0x0bd1('0xa')]({'port':0x232a});config[_0x0bd1('0xb')]=_[_0x0bd1('0xc')](config[_0x0bd1('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0bd1('0xd'))[_0x0bd1('0xe')](socket);function respondWithRpcPromise(_0x39cf3f,_0x35a2d2,_0x22cd37){return new BPromise(function(_0x597df3,_0x51c7c7){return client[_0x0bd1('0xf')](_0x39cf3f,_0x22cd37)[_0x0bd1('0x10')](function(_0x5dc6e7){logger[_0x0bd1('0x11')](_0x0bd1('0x12'),_0x35a2d2,_0x0bd1('0x13'));logger[_0x0bd1('0x14')](_0x0bd1('0x15'),_0x35a2d2,'request\x20sent',JSON[_0x0bd1('0x16')](_0x5dc6e7));if(_0x5dc6e7['error']){if(_0x5dc6e7['error'][_0x0bd1('0x17')]===0x1f4){logger[_0x0bd1('0x18')](_0x0bd1('0x12'),_0x35a2d2,_0x5dc6e7[_0x0bd1('0x18')][_0x0bd1('0x19')]);return _0x51c7c7(_0x5dc6e7[_0x0bd1('0x18')][_0x0bd1('0x19')]);}logger[_0x0bd1('0x18')](_0x0bd1('0x12'),_0x35a2d2,_0x5dc6e7[_0x0bd1('0x18')][_0x0bd1('0x19')]);return _0x597df3(_0x5dc6e7['error'][_0x0bd1('0x19')]);}else{logger[_0x0bd1('0x11')]('SmsInteraction,\x20%s,\x20%s',_0x35a2d2,_0x0bd1('0x13'));_0x597df3(_0x5dc6e7[_0x0bd1('0x1a')][_0x0bd1('0x19')]);}})[_0x0bd1('0x1b')](function(_0xe22211){logger['error'](_0x0bd1('0x12'),_0x35a2d2,_0xe22211);_0x51c7c7(_0xe22211);});});}exports[_0x0bd1('0x1c')]=function(_0x1d3442){var _0x2fb4f8=this;return new Promise(function(_0x17fe06,_0x288172){return db[_0x0bd1('0x1d')][_0x0bd1('0x1e')](_0x1d3442[_0x0bd1('0x1f')],{'raw':_0x1d3442[_0x0bd1('0x20')]?_0x1d3442[_0x0bd1('0x20')][_0x0bd1('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d3442[_0x0bd1('0x20')]?_0x1d3442[_0x0bd1('0x20')][_0x0bd1('0x22')]||null:null,'attributes':_0x1d3442['options']?_0x1d3442[_0x0bd1('0x20')][_0x0bd1('0x23')]||null:null,'limit':_0x1d3442['options']?_0x1d3442[_0x0bd1('0x20')][_0x0bd1('0x24')]||null:null})[_0x0bd1('0x10')](function(_0x20609f){logger[_0x0bd1('0x11')](_0x0bd1('0x1c'),_0x1d3442);logger[_0x0bd1('0x14')](_0x0bd1('0x1c'),_0x1d3442,JSON[_0x0bd1('0x16')](_0x20609f));_0x17fe06(_0x20609f);})[_0x0bd1('0x1b')](function(_0x1828d7){logger[_0x0bd1('0x18')](_0x0bd1('0x1c'),_0x1828d7[_0x0bd1('0x19')],_0x1d3442);_0x288172(_0x2fb4f8[_0x0bd1('0x18')](0x1f4,_0x1828d7[_0x0bd1('0x19')]));});});};exports['AddTagsToSmsInteraction']=function(_0x503593){return new Promise(function(_0x2e003c,_0xa8ef4d){return db[_0x0bd1('0x1d')]['find']({'where':_0x503593[_0x0bd1('0x20')]?_0x503593[_0x0bd1('0x20')][_0x0bd1('0x22')]||null:null})[_0x0bd1('0x10')](function(_0x26ba0a){if(_0x26ba0a){return _0x26ba0a['addTags'](_0x503593['body'][_0x0bd1('0x25')],_['omit'](_0x503593[_0x0bd1('0x1f')],['ids','id'])||{});}})[_0x0bd1('0x26')](function(_0x42206f){logger['info'](_0x0bd1('0x27'),_0x503593);logger['debug'](_0x0bd1('0x27'),_0x503593,JSON[_0x0bd1('0x16')](_0x42206f));_0x2e003c(_0x42206f);})[_0x0bd1('0x1b')](function(_0x15057f){logger['error'](_0x0bd1('0x27'),_0x15057f[_0x0bd1('0x19')],_0x503593);_0xa8ef4d(_this['error'](0x1f4,_0x15057f['message']));});});};
\ No newline at end of file
index 9d7db5a..e4bc167 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc45=['./smsInteraction.events','save','emit','removeListener','register','length','smsInteraction:'];(function(_0x179d2d,_0x5a8396){var _0x5badda=function(_0x4c8be9){while(--_0x4c8be9){_0x179d2d['push'](_0x179d2d['shift']());}};_0x5badda(++_0x5a8396);}(_0xdc45,0xc4));var _0x5dc4=function(_0x47d4bc,_0x463853){_0x47d4bc=_0x47d4bc-0x0;var _0x323f6d=_0xdc45[_0x47d4bc];return _0x323f6d;};'use strict';var SmsInteractionEvents=require(_0x5dc4('0x0'));var events=[_0x5dc4('0x1'),'remove','update'];function createListener(_0x550c1a,_0x4434b4){return function(_0xd0e544){_0x4434b4[_0x5dc4('0x2')](_0x550c1a,_0xd0e544);};}function removeListener(_0x3db73a,_0x23e212){return function(){SmsInteractionEvents[_0x5dc4('0x3')](_0x3db73a,_0x23e212);};}exports[_0x5dc4('0x4')]=function(_0x27c24e){for(var _0x5b8b2c=0x0,_0xe6ca9f=events[_0x5dc4('0x5')];_0x5b8b2c<_0xe6ca9f;_0x5b8b2c++){var _0x13bde1=events[_0x5b8b2c];var _0x2fbf32=createListener(_0x5dc4('0x6')+_0x13bde1,_0x27c24e);SmsInteractionEvents['on'](_0x13bde1,_0x2fbf32);}};
\ No newline at end of file
+var _0xbb00=['removeListener','register','./smsInteraction.events','save','remove'];(function(_0x5723a1,_0x624b39){var _0x3a01e9=function(_0x22e30e){while(--_0x22e30e){_0x5723a1['push'](_0x5723a1['shift']());}};_0x3a01e9(++_0x624b39);}(_0xbb00,0xca));var _0x0bb0=function(_0x341845,_0x4db5bc){_0x341845=_0x341845-0x0;var _0xa605e2=_0xbb00[_0x341845];return _0xa605e2;};'use strict';var SmsInteractionEvents=require(_0x0bb0('0x0'));var events=[_0x0bb0('0x1'),_0x0bb0('0x2'),'update'];function createListener(_0x40b067,_0xcd5714){return function(_0x499606){_0xcd5714['emit'](_0x40b067,_0x499606);};}function removeListener(_0x2fc553,_0x3cb1ca){return function(){SmsInteractionEvents[_0x0bb0('0x3')](_0x2fc553,_0x3cb1ca);};}exports[_0x0bb0('0x4')]=function(_0x352a75){for(var _0x120205=0x0,_0xfaf623=events['length'];_0x120205<_0xfaf623;_0x120205++){var _0x2fca2a=events[_0x120205];var _0x5029fe=createListener('smsInteraction:'+_0x2fca2a,_0x352a75);SmsInteractionEvents['on'](_0x2fca2a,_0x5029fe);}};
\ No newline at end of file
index 5cf974b..de5230c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5158=['tracked','sms','/:id/status','status','put','update','/:id/accept','reject','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','/describe','show','post'];(function(_0x5d38ef,_0x44b400){var _0x13d75a=function(_0x30cc0c){while(--_0x30cc0c){_0x5d38ef['push'](_0x5d38ef['shift']());}};_0x13d75a(++_0x44b400);}(_0x5158,0x1d7));var _0x8515=function(_0x17406a,_0x1e2320){_0x17406a=_0x17406a-0x0;var _0x1501ff=_0x5158[_0x17406a];return _0x1501ff;};'use strict';var multer=require(_0x8515('0x0'));var util=require(_0x8515('0x1'));var path=require(_0x8515('0x2'));var timeout=require(_0x8515('0x3'));var express=require(_0x8515('0x4'));var router=express[_0x8515('0x5')]();var fs_extra=require(_0x8515('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x8515('0x7'));var config=require(_0x8515('0x8'));var controller=require(_0x8515('0x9'));router[_0x8515('0xa')]('/',auth[_0x8515('0xb')](),controller['index']);router['get'](_0x8515('0xc'),auth[_0x8515('0xb')](),controller['describe']);router['get']('/:id',auth['isAuthenticated'](),controller[_0x8515('0xd')]);router[_0x8515('0xe')]('/',auth['isAuthenticated'](),interaction[_0x8515('0xf')](_0x8515('0x10'),'smsmessage:create'),controller['create']);router[_0x8515('0xe')](_0x8515('0x11'),controller[_0x8515('0x12')]);router[_0x8515('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x8515('0x14')]);router[_0x8515('0x13')](_0x8515('0x15'),auth[_0x8515('0xb')](),controller['accept']);router[_0x8515('0x13')]('/:id/reject',auth[_0x8515('0xb')](),controller[_0x8515('0x16')]);router[_0x8515('0x17')](_0x8515('0x18'),auth[_0x8515('0xb')](),controller[_0x8515('0x19')]);module[_0x8515('0x1a')]=router;
\ No newline at end of file
+var _0x7d60=['post','tracked','/:id/status','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/describe','describe','/:id','isAuthenticated','show'];(function(_0x459e2d,_0x2c4f73){var _0x54e591=function(_0x3d4ecf){while(--_0x3d4ecf){_0x459e2d['push'](_0x459e2d['shift']());}};_0x54e591(++_0x2c4f73);}(_0x7d60,0xd0));var _0x07d6=function(_0x13413e,_0x5886c8){_0x13413e=_0x13413e-0x0;var _0x42b823=_0x7d60[_0x13413e];return _0x42b823;};'use strict';var multer=require(_0x07d6('0x0'));var util=require(_0x07d6('0x1'));var path=require(_0x07d6('0x2'));var timeout=require(_0x07d6('0x3'));var express=require(_0x07d6('0x4'));var router=express[_0x07d6('0x5')]();var fs_extra=require(_0x07d6('0x6'));var auth=require(_0x07d6('0x7'));var interaction=require(_0x07d6('0x8'));var config=require('../../config/environment');var controller=require('./smsMessage.controller');router[_0x07d6('0x9')]('/',auth['isAuthenticated'](),controller[_0x07d6('0xa')]);router[_0x07d6('0x9')](_0x07d6('0xb'),auth['isAuthenticated'](),controller[_0x07d6('0xc')]);router[_0x07d6('0x9')](_0x07d6('0xd'),auth[_0x07d6('0xe')](),controller[_0x07d6('0xf')]);router[_0x07d6('0x10')]('/',auth[_0x07d6('0xe')](),interaction[_0x07d6('0x11')]('sms','smsmessage:create'),controller['create']);router[_0x07d6('0x10')](_0x07d6('0x12'),controller['status']);router[_0x07d6('0x13')](_0x07d6('0xd'),auth[_0x07d6('0xe')](),controller[_0x07d6('0x14')]);router[_0x07d6('0x13')](_0x07d6('0x15'),auth[_0x07d6('0xe')](),controller[_0x07d6('0x16')]);router[_0x07d6('0x13')](_0x07d6('0x17'),auth['isAuthenticated'](),controller[_0x07d6('0x18')]);router[_0x07d6('0x19')](_0x07d6('0xd'),auth['isAuthenticated'](),controller[_0x07d6('0x1a')]);module[_0x07d6('0x1b')]=router;
\ No newline at end of file
index 2792b26..21f27af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x652f=['STRING','DATE','TEXT','exports','medium','ENUM','out'];(function(_0x862fb7,_0x1ed9f5){var _0x2c13f2=function(_0x26a791){while(--_0x26a791){_0x862fb7['push'](_0x862fb7['shift']());}};_0x2c13f2(++_0x1ed9f5);}(_0x652f,0xf1));var _0xf652=function(_0x3e8a46,_0x56d9b9){_0x3e8a46=_0x3e8a46-0x0;var _0x4c4525=_0x652f[_0x3e8a46];return _0x4c4525;};'use strict';var Sequelize=require('sequelize');module[_0xf652('0x0')]={'body':{'type':Sequelize['TEXT'](_0xf652('0x1')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xf652('0x2')]('in',_0xf652('0x3')),'defaultValue':_0xf652('0x3'),'allowNull':![]},'messageId':{'type':Sequelize[_0xf652('0x4')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0xf652('0x5')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0xf652('0x4')]},'providerResponse':{'type':Sequelize[_0xf652('0x6')]}};
\ No newline at end of file
+var _0x5a9b=['DATE','BOOLEAN','TEXT','sequelize','exports','medium','out','STRING'];(function(_0x30b280,_0x529f93){var _0x2c074f=function(_0x4f5b55){while(--_0x4f5b55){_0x30b280['push'](_0x30b280['shift']());}};_0x2c074f(++_0x529f93);}(_0x5a9b,0x1e3));var _0xb5a9=function(_0x5691dc,_0x3b2efe){_0x5691dc=_0x5691dc-0x0;var _0x4139c8=_0x5a9b[_0x5691dc];return _0x4139c8;};'use strict';var Sequelize=require(_0xb5a9('0x0'));module[_0xb5a9('0x1')]={'body':{'type':Sequelize['TEXT'](_0xb5a9('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xb5a9('0x3')),'defaultValue':_0xb5a9('0x3'),'allowNull':![]},'messageId':{'type':Sequelize[_0xb5a9('0x4')](0xbe)},'phone':{'type':Sequelize[_0xb5a9('0x4')]},'readAt':{'type':Sequelize[_0xb5a9('0x5')]},'secret':{'type':Sequelize[_0xb5a9('0x6')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xb5a9('0x7')]}};
\ No newline at end of file
index 35c1542..a561e71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa4d=['fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','jayson/promise','http','client','request','then','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','stack','send','index','fieldName','key','map','keys','query','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','filter','merge','where','type','VIRTUAL','name','options','SmsMessage','includeAll','include','findAll','rows','show','params','rawAttributes','length','find','create','body','describe','sms-interactions','accept','sms','read','readAt','format','UserId','user','agent','get','SmsInteraction','SmsInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','info','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','ContactId','Sequelize','QueryTypes','contact','User','fullname','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','SELECT','email','internal','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','sent','Status','plivio','inspect','infobip','results','groupName','eml-format','rimraf','fast-json-patch','mustache','util','path','sox','to-csv','ejs'];(function(_0x48aa07,_0x3c21dc){var _0x555d2e=function(_0x4be333){while(--_0x4be333){_0x48aa07['push'](_0x48aa07['shift']());}};_0x555d2e(++_0x3c21dc);}(_0xfa4d,0x90));var _0xdfa4=function(_0x526626,_0x300d1f){_0x526626=_0x526626-0x0;var _0x10bf6e=_0xfa4d[_0x526626];return _0x10bf6e;};'use strict';var emlformat=require(_0xdfa4('0x0'));var rimraf=require(_0xdfa4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdfa4('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xdfa4('0x3'));var util=require(_0xdfa4('0x4'));var path=require(_0xdfa4('0x5'));var sox=require(_0xdfa4('0x6'));var csv=require(_0xdfa4('0x7'));var ejs=require(_0xdfa4('0x8'));var fs=require('fs');var fs_extra=require(_0xdfa4('0x9'));var _=require(_0xdfa4('0xa'));var squel=require(_0xdfa4('0xb'));var crypto=require(_0xdfa4('0xc'));var jsforce=require(_0xdfa4('0xd'));var deskjs=require(_0xdfa4('0xe'));var toCsv=require(_0xdfa4('0x7'));var querystring=require(_0xdfa4('0xf'));var Papa=require(_0xdfa4('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xdfa4('0x11'));var as=require(_0xdfa4('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdfa4('0x13'))('api');var utils=require(_0xdfa4('0x14'));var config=require(_0xdfa4('0x15'));var licenseUtil=require(_0xdfa4('0x16'));var db=require(_0xdfa4('0x17'))['db'];config[_0xdfa4('0x18')]=_[_0xdfa4('0x19')](config[_0xdfa4('0x18')],{'host':_0xdfa4('0x1a'),'port':0x18eb});var socket=require(_0xdfa4('0x1b'))(new Redis(config[_0xdfa4('0x18')]));require(_0xdfa4('0x1c'))[_0xdfa4('0x1d')](socket);var jayson=require(_0xdfa4('0x1e'));var client=jayson['client'][_0xdfa4('0x1f')]({'port':0x232c});var client9002=jayson[_0xdfa4('0x20')][_0xdfa4('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x566c09,_0x1284de,_0x1163ed,_0x4c069a){return new BPromise(function(_0x9f8bd6,_0xad42a3){var _0x2d7fe6=_0x4c069a||client;return _0x2d7fe6[_0xdfa4('0x21')](_0x566c09,_0x1163ed)[_0xdfa4('0x22')](function(_0x4d6fe0){logger['info'](_0xdfa4('0x23'),_0x1284de,_0xdfa4('0x24'));logger[_0xdfa4('0x25')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1284de,'request\x20sent',JSON[_0xdfa4('0x26')](_0x4d6fe0));if(_0x4d6fe0['error']){if(_0x4d6fe0[_0xdfa4('0x27')][_0xdfa4('0x28')]===0x1f4){logger[_0xdfa4('0x27')](_0xdfa4('0x23'),_0x1284de,_0x4d6fe0[_0xdfa4('0x27')][_0xdfa4('0x29')]);return _0xad42a3(_0x4d6fe0[_0xdfa4('0x27')][_0xdfa4('0x29')]);}logger['error'](_0xdfa4('0x23'),_0x1284de,_0x4d6fe0[_0xdfa4('0x27')]['message']);return _0x9f8bd6(_0x4d6fe0[_0xdfa4('0x27')][_0xdfa4('0x29')]);}else{logger['info'](_0xdfa4('0x23'),_0x1284de,_0xdfa4('0x24'));_0x9f8bd6(_0x4d6fe0[_0xdfa4('0x2a')]['message']);}})[_0xdfa4('0x2b')](function(_0x37f2d5){logger[_0xdfa4('0x27')]('SmsMessage,\x20%s,\x20%s',_0x1284de,_0x37f2d5);_0xad42a3(_0x37f2d5);});});}function respondWithStatusCode(_0x3dc981,_0x1748ac){_0x1748ac=_0x1748ac||0xcc;return function(_0x4b2c8d){if(_0x4b2c8d){return _0x3dc981[_0xdfa4('0x2c')](_0x1748ac);}return _0x3dc981[_0xdfa4('0x2d')](_0x1748ac)[_0xdfa4('0x2e')]();};}function respondWithResult(_0x633aa7,_0x442974){_0x442974=_0x442974||0xc8;return function(_0x1fd295){if(_0x1fd295){return _0x633aa7[_0xdfa4('0x2d')](_0x442974)[_0xdfa4('0x2f')](_0x1fd295);}};}function respondWithFilteredResult(_0x155a39,_0x195ed2){return function(_0xa5adc9){if(_0xa5adc9){var _0x11b9db=typeof _0x195ed2[_0xdfa4('0x30')]===_0xdfa4('0x31')&&typeof _0x195ed2[_0xdfa4('0x32')]==='undefined';var _0x4679f9=_0xa5adc9[_0xdfa4('0x33')];var _0x267c79=_0x11b9db?0x0:_0x195ed2[_0xdfa4('0x30')];var _0x26874a=_0x11b9db?_0xa5adc9[_0xdfa4('0x33')]:_0x195ed2[_0xdfa4('0x30')]+_0x195ed2[_0xdfa4('0x32')];var _0x4eaf56;if(_0x26874a>=_0x4679f9){_0x26874a=_0x4679f9;_0x4eaf56=0xc8;}else{_0x4eaf56=0xce;}_0x155a39['status'](_0x4eaf56);return _0x155a39[_0xdfa4('0x34')](_0xdfa4('0x35'),_0x267c79+'-'+_0x26874a+'/'+_0x4679f9)[_0xdfa4('0x2f')](_0xa5adc9);}return null;};}function patchUpdates(_0x1e8359){return function(_0xd15ec6){try{jsonpatch[_0xdfa4('0x36')](_0xd15ec6,_0x1e8359,!![]);}catch(_0x1566b8){return BPromise[_0xdfa4('0x37')](_0x1566b8);}return _0xd15ec6[_0xdfa4('0x38')]();};}function saveUpdates(_0x31e15a,_0xd15595){return function(_0x5cb158){if(_0x5cb158){return _0x5cb158[_0xdfa4('0x39')](_0x31e15a)['then'](function(_0x21463a){return _0x21463a;});}return null;};}function removeEntity(_0x361712,_0x34e00c){return function(_0x5b35de){if(_0x5b35de){return _0x5b35de[_0xdfa4('0x3a')]()['then'](function(){_0x361712[_0xdfa4('0x2d')](0xcc)[_0xdfa4('0x2e')]();});}};}function handleEntityNotFound(_0x58cee8,_0x634c2e){return function(_0xdcf7d4){if(!_0xdcf7d4){_0x58cee8[_0xdfa4('0x2c')](0x194);}return _0xdcf7d4;};}function handleError(_0x149424,_0x1f2b45){_0x1f2b45=_0x1f2b45||0x1f4;return function(_0x58df04){logger[_0xdfa4('0x27')](_0x58df04[_0xdfa4('0x3b')]);if(_0x58df04['name']){delete _0x58df04['name'];}_0x149424[_0xdfa4('0x2d')](_0x1f2b45)[_0xdfa4('0x3c')](_0x58df04);};}exports[_0xdfa4('0x3d')]=function(_0x1ba95d,_0x1da430){var _0x1c0481={},_0x56d979={},_0x577b67={'count':0x0,'rows':[]};var _0x4e5659=_['map'](db['SmsMessage']['rawAttributes'],function(_0x46078d){return{'name':_0x46078d[_0xdfa4('0x3e')],'type':_0x46078d['type'][_0xdfa4('0x3f')]};});_0x56d979['model']=_[_0xdfa4('0x40')](_0x4e5659,'name');_0x56d979['query']=_[_0xdfa4('0x41')](_0x1ba95d[_0xdfa4('0x42')]);_0x56d979[_0xdfa4('0x43')]=_[_0xdfa4('0x44')](_0x56d979[_0xdfa4('0x45')],_0x56d979[_0xdfa4('0x42')]);_0x1c0481['attributes']=_['intersection'](_0x56d979[_0xdfa4('0x45')],qs[_0xdfa4('0x46')](_0x1ba95d[_0xdfa4('0x42')]['fields']));_0x1c0481[_0xdfa4('0x47')]=_0x1c0481[_0xdfa4('0x47')]['length']?_0x1c0481[_0xdfa4('0x47')]:_0x56d979[_0xdfa4('0x45')];if(!_0x1ba95d['query'][_0xdfa4('0x48')](_0xdfa4('0x49'))){_0x1c0481['limit']=qs[_0xdfa4('0x32')](_0x1ba95d['query'][_0xdfa4('0x32')]);_0x1c0481[_0xdfa4('0x30')]=qs['offset'](_0x1ba95d[_0xdfa4('0x42')]['offset']);}_0x1c0481[_0xdfa4('0x4a')]=qs['sort'](_0x1ba95d['query'][_0xdfa4('0x4b')]);_0x1c0481['where']=qs[_0xdfa4('0x43')](_['pick'](_0x1ba95d[_0xdfa4('0x42')],_0x56d979[_0xdfa4('0x43')]),_0x4e5659);if(_0x1ba95d[_0xdfa4('0x42')][_0xdfa4('0x4c')]){_0x1c0481['where']=_[_0xdfa4('0x4d')](_0x1c0481[_0xdfa4('0x4e')],{'$or':_[_0xdfa4('0x40')](_0x4e5659,function(_0x2c410b){if(_0x2c410b[_0xdfa4('0x4f')]!==_0xdfa4('0x50')){var _0x3b92d9={};_0x3b92d9[_0x2c410b[_0xdfa4('0x51')]]={'$like':'%'+_0x1ba95d['query'][_0xdfa4('0x4c')]+'%'};return _0x3b92d9;}})});}_0x1c0481=_['merge']({},_0x1c0481,_0x1ba95d[_0xdfa4('0x52')]);var _0x499633={'where':_0x1c0481[_0xdfa4('0x4e')]};return db[_0xdfa4('0x53')][_0xdfa4('0x33')](_0x499633)[_0xdfa4('0x22')](function(_0xde552d){_0x577b67[_0xdfa4('0x33')]=_0xde552d;if(_0x1ba95d[_0xdfa4('0x42')][_0xdfa4('0x54')]){_0x1c0481[_0xdfa4('0x55')]=[{'all':!![]}];}return db[_0xdfa4('0x53')][_0xdfa4('0x56')](_0x1c0481);})[_0xdfa4('0x22')](function(_0x4e7a80){_0x577b67[_0xdfa4('0x57')]=_0x4e7a80;return _0x577b67;})[_0xdfa4('0x22')](respondWithFilteredResult(_0x1da430,_0x1c0481))[_0xdfa4('0x2b')](handleError(_0x1da430,null));};exports[_0xdfa4('0x58')]=function(_0x4508da,_0x362758){var _0x1e831d={'raw':!![],'where':{'id':_0x4508da[_0xdfa4('0x59')]['id']}},_0x474831={};_0x474831[_0xdfa4('0x45')]=_[_0xdfa4('0x41')](db[_0xdfa4('0x53')][_0xdfa4('0x5a')]);_0x474831[_0xdfa4('0x42')]=_['keys'](_0x4508da[_0xdfa4('0x42')]);_0x474831[_0xdfa4('0x43')]=_[_0xdfa4('0x44')](_0x474831['model'],_0x474831[_0xdfa4('0x42')]);_0x1e831d[_0xdfa4('0x47')]=_[_0xdfa4('0x44')](_0x474831['model'],qs[_0xdfa4('0x46')](_0x4508da[_0xdfa4('0x42')][_0xdfa4('0x46')]));_0x1e831d[_0xdfa4('0x47')]=_0x1e831d[_0xdfa4('0x47')][_0xdfa4('0x5b')]?_0x1e831d[_0xdfa4('0x47')]:_0x474831[_0xdfa4('0x45')];if(_0x4508da[_0xdfa4('0x42')][_0xdfa4('0x54')]){_0x1e831d[_0xdfa4('0x55')]=[{'all':!![]}];}_0x1e831d=_['merge']({},_0x1e831d,_0x4508da['options']);return db[_0xdfa4('0x53')][_0xdfa4('0x5c')](_0x1e831d)[_0xdfa4('0x22')](handleEntityNotFound(_0x362758,null))[_0xdfa4('0x22')](respondWithResult(_0x362758,null))[_0xdfa4('0x2b')](handleError(_0x362758,null));};exports[_0xdfa4('0x5d')]=function(_0x4f0a26,_0x54cd9d){return db[_0xdfa4('0x53')][_0xdfa4('0x5d')](_0x4f0a26['body'],{})[_0xdfa4('0x22')](respondWithResult(_0x54cd9d,0xc9))[_0xdfa4('0x2b')](handleError(_0x54cd9d,null));};exports[_0xdfa4('0x39')]=function(_0x1a4136,_0x1b76c3){if(_0x1a4136[_0xdfa4('0x5e')]['id']){delete _0x1a4136[_0xdfa4('0x5e')]['id'];}return db[_0xdfa4('0x53')][_0xdfa4('0x5c')]({'where':{'id':_0x1a4136[_0xdfa4('0x59')]['id']}})['then'](handleEntityNotFound(_0x1b76c3,null))[_0xdfa4('0x22')](saveUpdates(_0x1a4136[_0xdfa4('0x5e')],null))[_0xdfa4('0x22')](respondWithResult(_0x1b76c3,null))[_0xdfa4('0x2b')](handleError(_0x1b76c3,null));};exports[_0xdfa4('0x3a')]=function(_0x4f826f,_0x5c2ee8){return db['SmsMessage'][_0xdfa4('0x5c')]({'where':{'id':_0x4f826f['params']['id']}})[_0xdfa4('0x22')](handleEntityNotFound(_0x5c2ee8,null))[_0xdfa4('0x22')](removeEntity(_0x5c2ee8,null))[_0xdfa4('0x2b')](handleError(_0x5c2ee8,null));};exports['describe']=function(_0x1db9f9,_0x21310c){return db[_0xdfa4('0x53')][_0xdfa4('0x5f')]()['then'](respondWithResult(_0x21310c,null))[_0xdfa4('0x2b')](handleError(_0x21310c,null));};var interaction_log=require(_0xdfa4('0x13'))(_0xdfa4('0x60'));exports[_0xdfa4('0x61')]=function(_0x5eede3,_0x5077ee,_0x35cba1){var _0x25ecb8={'agent':{},'channel':_0xdfa4('0x62')};if(_0x5eede3[_0xdfa4('0x5e')]['id']){delete _0x5eede3[_0xdfa4('0x5e')]['id'];}_0x5eede3['body'][_0xdfa4('0x63')]=!![];_0x5eede3[_0xdfa4('0x5e')][_0xdfa4('0x64')]=moment()[_0xdfa4('0x65')]('YYYY-MM-DD\x20HH:mm:ss');_0x5eede3[_0xdfa4('0x5e')][_0xdfa4('0x66')]=_0x5eede3[_0xdfa4('0x5e')][_0xdfa4('0x66')]||_0x5eede3[_0xdfa4('0x67')]['id'];_0x25ecb8[_0xdfa4('0x68')]['id']=_0x5eede3['body'][_0xdfa4('0x66')];return db[_0xdfa4('0x53')][_0xdfa4('0x5c')]({'where':{'id':_0x5eede3['params']['id'],'UserId':null}})[_0xdfa4('0x22')](handleEntityNotFound(_0x5077ee,null))[_0xdfa4('0x22')](saveUpdates(_0x5eede3['body'],null))[_0xdfa4('0x22')](function(_0x40ef54){if(_0x40ef54){_0x25ecb8[_0xdfa4('0x29')]=_0x40ef54[_0xdfa4('0x69')]({'plain':!![]});return db[_0xdfa4('0x6a')][_0xdfa4('0x5c')]({'where':{'id':_0x40ef54[_0xdfa4('0x6b')]}});}return null;})[_0xdfa4('0x22')](handleEntityNotFound(_0x5077ee,null))[_0xdfa4('0x22')](function(_0x44f6dc){if(_0x44f6dc){return _0x44f6dc['update']({'UserId':_0x5eede3[_0xdfa4('0x5e')][_0xdfa4('0x66')],'read1stAt':_[_0xdfa4('0x6c')](_0x44f6dc[_0xdfa4('0x6d')])?moment()[_0xdfa4('0x65')](_0xdfa4('0x6e')):undefined});}return null;})[_0xdfa4('0x22')](function(_0x25155a){if(_0x25155a){_0x25ecb8[_0xdfa4('0x6f')]=_0x25155a[_0xdfa4('0x69')]({'plain':!![]});interaction_log[_0xdfa4('0x70')](_0xdfa4('0x71'),_0x5eede3['user']['id'],_0x5eede3['user'][_0xdfa4('0x51')],_0x5eede3[_0xdfa4('0x67')][_0xdfa4('0x72')],_0x25ecb8[_0xdfa4('0x6f')]['id'],_0x5eede3[_0xdfa4('0x5e')]?JSON[_0xdfa4('0x26')](_0x5eede3[_0xdfa4('0x5e')]):_0xdfa4('0x73'));return respondWithRpcPromise('AcceptMessage',_0xdfa4('0x74'),_0x25ecb8);}return null;})[_0xdfa4('0x22')](function(_0x221cfb){var _0x5912f9='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x221cfb[_0xdfa4('0x29')][_0xdfa4('0x75')];return db['sequelize'][_0xdfa4('0x42')](_0x5912f9,{'type':db[_0xdfa4('0x76')][_0xdfa4('0x77')]['SELECT'],'raw':!![]})[_0xdfa4('0x22')](function(_0x17811c){return _0x17811c;});})[_0xdfa4('0x22')](function(_0x5c1d7d){if(_0x5c1d7d){_0x25ecb8[_0xdfa4('0x29')][_0xdfa4('0x78')]=_0x5c1d7d[0x0];if(!_0x5eede3['body'][_0xdfa4('0x66')])return;return db[_0xdfa4('0x79')][_0xdfa4('0x5c')]({'where':{'id':_0x5eede3['body'][_0xdfa4('0x66')],'role':_0xdfa4('0x68')},'attributes':['id',_0xdfa4('0x51'),_0xdfa4('0x7a'),'email','internal'],'raw':!![]});}return null;})[_0xdfa4('0x22')](function(_0x18ccde){if(!_0x18ccde)return null;_0x25ecb8['message'][_0xdfa4('0x68')]=_0x18ccde;return _0x25ecb8;})[_0xdfa4('0x22')](function(_0x27cd90){if(_0x27cd90){if(_0x5eede3[_0xdfa4('0x5e')][_0xdfa4('0x7b')]){_0x25ecb8[_0xdfa4('0x29')][_0xdfa4('0x7c')]=util[_0xdfa4('0x65')](_0xdfa4('0x7d'),_0x5eede3['user'][_0xdfa4('0x51')]);_0x25ecb8[_0xdfa4('0x29')][_0xdfa4('0x7e')]=_0x25ecb8[_0xdfa4('0x7e')];_0x25ecb8[_0xdfa4('0x29')]['motionChannel']=_0x25ecb8[_0xdfa4('0x7e')];_0x25ecb8[_0xdfa4('0x29')][_0xdfa4('0x7f')]=_0xdfa4('0x61');return respondWithRpcPromise('EventManager',_0xdfa4('0x80'),{'event':_0xdfa4('0x81'),'message':_0x25ecb8[_0xdfa4('0x29')]},client9002)['then'](function(){return _0x25ecb8;});}return _0x25ecb8;}return null;})['then'](respondWithResult(_0x5077ee,null))['catch'](handleError(_0x5077ee,null));};var interaction_log=require(_0xdfa4('0x13'))('sms-interactions');exports[_0xdfa4('0x37')]=function(_0x31348a,_0x40430e,_0xc885e0){var _0x33600f={'agent':{},'channel':_0xdfa4('0x62')};if(_0x31348a[_0xdfa4('0x5e')]['id']){delete _0x31348a[_0xdfa4('0x5e')]['id'];}_0x31348a[_0xdfa4('0x5e')][_0xdfa4('0x66')]=_0x31348a[_0xdfa4('0x5e')][_0xdfa4('0x66')]||_0x31348a[_0xdfa4('0x67')]['id'];_0x33600f[_0xdfa4('0x68')]['id']=_0x31348a[_0xdfa4('0x5e')][_0xdfa4('0x66')];return db['SmsMessage'][_0xdfa4('0x5c')]({'where':{'id':_0x31348a[_0xdfa4('0x59')]['id'],'UserId':null}})[_0xdfa4('0x22')](handleEntityNotFound(_0x40430e,null))[_0xdfa4('0x22')](function(_0x1746d7){if(_0x1746d7){_0x33600f[_0xdfa4('0x29')]=_0x1746d7['get']({'plain':!![]});return db[_0xdfa4('0x6a')]['find']({'where':{'id':_0x1746d7[_0xdfa4('0x6b')]}});}return null;})[_0xdfa4('0x22')](handleEntityNotFound(_0x40430e,null))[_0xdfa4('0x22')](function(_0x11d8f1){if(_0x11d8f1){_0x33600f[_0xdfa4('0x6f')]=_0x11d8f1[_0xdfa4('0x69')]({'plain':!![]});interaction_log[_0xdfa4('0x70')]('[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x31348a['user']['id'],_0x31348a[_0xdfa4('0x67')][_0xdfa4('0x51')],_0x31348a[_0xdfa4('0x67')][_0xdfa4('0x72')],_0x33600f[_0xdfa4('0x6f')]['id'],_0x31348a[_0xdfa4('0x5e')]?JSON[_0xdfa4('0x26')](_0x31348a[_0xdfa4('0x5e')]):_0xdfa4('0x73'));return respondWithRpcPromise(_0xdfa4('0x82'),'rejectMessage',_0x33600f);}return null;})[_0xdfa4('0x22')](function(_0xfdc890){var _0x573f00=_0xdfa4('0x83')+_0xfdc890[_0xdfa4('0x29')][_0xdfa4('0x75')];return db[_0xdfa4('0x84')]['query'](_0x573f00,{'type':db[_0xdfa4('0x76')][_0xdfa4('0x77')][_0xdfa4('0x85')],'raw':!![]})[_0xdfa4('0x22')](function(_0x4601ac){return _0x4601ac;});})[_0xdfa4('0x22')](function(_0x3af8b9){if(_0x3af8b9){_0x33600f['message'][_0xdfa4('0x78')]=_0x3af8b9[0x0];if(!_0x31348a[_0xdfa4('0x5e')]['UserId'])return;return db[_0xdfa4('0x79')][_0xdfa4('0x5c')]({'where':{'id':_0x31348a[_0xdfa4('0x5e')][_0xdfa4('0x66')],'role':'agent'},'attributes':['id',_0xdfa4('0x51'),_0xdfa4('0x7a'),_0xdfa4('0x86'),_0xdfa4('0x87')],'raw':!![]});}return null;})[_0xdfa4('0x22')](function(_0x1fee66){if(!_0x1fee66)return null;_0x33600f[_0xdfa4('0x29')][_0xdfa4('0x68')]=_0x1fee66;return _0x33600f;})[_0xdfa4('0x22')](function(_0x1cc0f8){if(_0x1cc0f8){_0x1cc0f8[_0xdfa4('0x29')][_0xdfa4('0x7c')]=util[_0xdfa4('0x65')](_0xdfa4('0x7d'),_0x31348a[_0xdfa4('0x67')][_0xdfa4('0x51')]);_0x1cc0f8[_0xdfa4('0x29')]['channel']=_0x33600f[_0xdfa4('0x7e')];_0x1cc0f8[_0xdfa4('0x29')]['motionChannel']=_0x33600f[_0xdfa4('0x7e')];_0x1cc0f8[_0xdfa4('0x29')]['event']=_0xdfa4('0x37');respondWithRpcPromise('EventManager',_0xdfa4('0x80'),{'event':'rejectmessage','message':_0x1cc0f8[_0xdfa4('0x29')]},client9002);return _0x33600f;}return null;})[_0xdfa4('0x22')](respondWithResult(_0x40430e,null))[_0xdfa4('0x2b')](handleError(_0x40430e,null));};exports[_0xdfa4('0x2d')]=function(_0x23ef9b,_0x108140,_0x1c51c1){if(_0x23ef9b['body']['id']){delete _0x23ef9b[_0xdfa4('0x5e')]['id'];}var _0x216009;return db['SmsMessage']['find']({'where':{'id':_0x23ef9b[_0xdfa4('0x59')]['id']}})[_0xdfa4('0x22')](handleEntityNotFound(_0x108140,null))['then'](function(_0x5a389e){if(_0x5a389e){_0x216009=_0x5a389e;return db[_0xdfa4('0x88')][_0xdfa4('0x5c')]({'where':{'id':_0x5a389e[_0xdfa4('0x89')]}});}})[_0xdfa4('0x22')](handleEntityNotFound(_0x108140,null))[_0xdfa4('0x22')](function(_0x5949be){if(_0x5949be){logger[_0xdfa4('0x25')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xdfa4('0x2d'),_0xdfa4('0x8a'),_0x5949be[_0xdfa4('0x4f')],util['inspect'](_0x23ef9b['body'],{'showHidden':![],'depth':null}));switch(_0x5949be[_0xdfa4('0x4f')]){case _0xdfa4('0x8b'):if(_0x23ef9b[_0xdfa4('0x5e')][_0xdfa4('0x8c')]&&_0x23ef9b[_0xdfa4('0x5e')][_0xdfa4('0x8c')]===_0x216009[_0xdfa4('0x8d')]){return _0x216009[_0xdfa4('0x39')]({'read':!![]});}else{logger[_0xdfa4('0x27')](_0xdfa4('0x8e'),_0xdfa4('0x2d'),_0xdfa4('0x8b'),util['inspect'](_0x23ef9b[_0xdfa4('0x5e')],{'showHidden':![],'depth':null}));}break;case _0xdfa4('0x8f'):if(_0x23ef9b[_0xdfa4('0x5e')]['MessageUUID']&&_0x23ef9b['body'][_0xdfa4('0x90')]===_0x216009['messageId']&&_[_0xdfa4('0x91')]([_0xdfa4('0x92'),'delivered'],_0x23ef9b['body'][_0xdfa4('0x93')])>=0x0){return _0x216009[_0xdfa4('0x39')]({'read':!![]});}else{logger['error'](_0xdfa4('0x8e'),_0xdfa4('0x2d'),_0xdfa4('0x94'),util[_0xdfa4('0x95')](_0x23ef9b['body'],{'showHidden':![],'depth':null}));}break;case _0xdfa4('0x96'):var _0x12b85f=_0x23ef9b['body'][_0xdfa4('0x97')][0x0];if(_0x12b85f[_0xdfa4('0x2d')][_0xdfa4('0x98')]==='DELIVERED'){return _0x216009[_0xdfa4('0x39')]({'read':!![]});}else{logger[_0xdfa4('0x27')](_0xdfa4('0x8e'),_0xdfa4('0x2d'),_0xdfa4('0x96'),util[_0xdfa4('0x95')](_0x23ef9b['body'],{'showHidden':![],'depth':null}));}break;}return _0x216009;}})[_0xdfa4('0x22')](respondWithResult(_0x108140,null))[_0xdfa4('0x2b')](handleError(_0x108140,null));};
\ No newline at end of file
+var _0xbb3f=['read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','SmsInteraction','read1stAt','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','acceptMessage','ContactId','sequelize','Sequelize','SELECT','contact','User','fullname','internal','manual','interface','event','EventManager','acceptmessage','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','QueryTypes','email','channel','rejectmessage','received\x20delivery\x20report\x20from','twilio','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','inspect','plivo','MessageUUID','sent','delivered','Status','plivio','infobip','results','groupName','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','lodash','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','jayson/promise','client','http','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','SmsMessage','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','include','findAll','rows','show','params','keys','includeAll','create','body','find','describe','sms-interactions','accept'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xbb3f,0x14d));var _0xfbb3=function(_0x2de51e,_0x10bb7a){_0x2de51e=_0x2de51e-0x0;var _0x39c01a=_0xbb3f[_0x2de51e];return _0x39c01a;};'use strict';var emlformat=require(_0xfbb3('0x0'));var rimraf=require(_0xfbb3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfbb3('0x2'));var rp=require(_0xfbb3('0x3'));var moment=require(_0xfbb3('0x4'));var BPromise=require(_0xfbb3('0x5'));var Mustache=require('mustache');var util=require(_0xfbb3('0x6'));var path=require('path');var sox=require(_0xfbb3('0x7'));var csv=require('to-csv');var ejs=require(_0xfbb3('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfbb3('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xfbb3('0xa'));var deskjs=require(_0xfbb3('0xb'));var toCsv=require(_0xfbb3('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xfbb3('0xd'));var authService=require(_0xfbb3('0xe'));var qs=require(_0xfbb3('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfbb3('0x10'));var logger=require(_0xfbb3('0x11'))(_0xfbb3('0x12'));var utils=require(_0xfbb3('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xfbb3('0x14'))['db'];config[_0xfbb3('0x15')]=_[_0xfbb3('0x16')](config[_0xfbb3('0x15')],{'host':_0xfbb3('0x17'),'port':0x18eb});var socket=require(_0xfbb3('0x18'))(new Redis(config[_0xfbb3('0x15')]));require(_0xfbb3('0x19'))[_0xfbb3('0x1a')](socket);var jayson=require(_0xfbb3('0x1b'));var client=jayson[_0xfbb3('0x1c')][_0xfbb3('0x1d')]({'port':0x232c});var client9002=jayson[_0xfbb3('0x1c')][_0xfbb3('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0xc1916b,_0x1b37e9,_0x5e7c79,_0x4a1f73){return new BPromise(function(_0x5499f2,_0x48beb3){var _0x1dae23=_0x4a1f73||client;return _0x1dae23['request'](_0xc1916b,_0x5e7c79)[_0xfbb3('0x1e')](function(_0x16fa94){logger[_0xfbb3('0x1f')](_0xfbb3('0x20'),_0x1b37e9,_0xfbb3('0x21'));logger[_0xfbb3('0x22')](_0xfbb3('0x23'),_0x1b37e9,_0xfbb3('0x21'),JSON[_0xfbb3('0x24')](_0x16fa94));if(_0x16fa94[_0xfbb3('0x25')]){if(_0x16fa94['error']['code']===0x1f4){logger[_0xfbb3('0x25')](_0xfbb3('0x20'),_0x1b37e9,_0x16fa94[_0xfbb3('0x25')][_0xfbb3('0x26')]);return _0x48beb3(_0x16fa94[_0xfbb3('0x25')]['message']);}logger[_0xfbb3('0x25')](_0xfbb3('0x20'),_0x1b37e9,_0x16fa94[_0xfbb3('0x25')]['message']);return _0x5499f2(_0x16fa94[_0xfbb3('0x25')][_0xfbb3('0x26')]);}else{logger[_0xfbb3('0x1f')](_0xfbb3('0x20'),_0x1b37e9,_0xfbb3('0x21'));_0x5499f2(_0x16fa94[_0xfbb3('0x27')]['message']);}})[_0xfbb3('0x28')](function(_0x1e1a56){logger[_0xfbb3('0x25')]('SmsMessage,\x20%s,\x20%s',_0x1b37e9,_0x1e1a56);_0x48beb3(_0x1e1a56);});});}function respondWithStatusCode(_0x3f0aae,_0x52b1af){_0x52b1af=_0x52b1af||0xcc;return function(_0x3b71de){if(_0x3b71de){return _0x3f0aae[_0xfbb3('0x29')](_0x52b1af);}return _0x3f0aae['status'](_0x52b1af)[_0xfbb3('0x2a')]();};}function respondWithResult(_0x5b52f9,_0xc6f8a8){_0xc6f8a8=_0xc6f8a8||0xc8;return function(_0x3a7938){if(_0x3a7938){return _0x5b52f9[_0xfbb3('0x2b')](_0xc6f8a8)[_0xfbb3('0x2c')](_0x3a7938);}};}function respondWithFilteredResult(_0x461bc6,_0x5b658c){return function(_0x5ccd50){if(_0x5ccd50){var _0x3d3c1d=typeof _0x5b658c[_0xfbb3('0x2d')]==='undefined'&&typeof _0x5b658c[_0xfbb3('0x2e')]===_0xfbb3('0x2f');var _0x51dbbb=_0x5ccd50[_0xfbb3('0x30')];var _0x5b78aa=_0x3d3c1d?0x0:_0x5b658c['offset'];var _0x12572e=_0x3d3c1d?_0x5ccd50[_0xfbb3('0x30')]:_0x5b658c[_0xfbb3('0x2d')]+_0x5b658c[_0xfbb3('0x2e')];var _0x1b400a;if(_0x12572e>=_0x51dbbb){_0x12572e=_0x51dbbb;_0x1b400a=0xc8;}else{_0x1b400a=0xce;}_0x461bc6['status'](_0x1b400a);return _0x461bc6[_0xfbb3('0x31')](_0xfbb3('0x32'),_0x5b78aa+'-'+_0x12572e+'/'+_0x51dbbb)[_0xfbb3('0x2c')](_0x5ccd50);}return null;};}function patchUpdates(_0x2e89f6){return function(_0x1a8987){try{jsonpatch[_0xfbb3('0x33')](_0x1a8987,_0x2e89f6,!![]);}catch(_0x36d1fa){return BPromise[_0xfbb3('0x34')](_0x36d1fa);}return _0x1a8987[_0xfbb3('0x35')]();};}function saveUpdates(_0x1afebd,_0x216809){return function(_0x5481b8){if(_0x5481b8){return _0x5481b8[_0xfbb3('0x36')](_0x1afebd)[_0xfbb3('0x1e')](function(_0x44ba9e){return _0x44ba9e;});}return null;};}function removeEntity(_0x1233b7,_0xbe8a5d){return function(_0x1209d2){if(_0x1209d2){return _0x1209d2[_0xfbb3('0x37')]()['then'](function(){_0x1233b7[_0xfbb3('0x2b')](0xcc)[_0xfbb3('0x2a')]();});}};}function handleEntityNotFound(_0x2d39b6,_0x288e86){return function(_0x1c7ef0){if(!_0x1c7ef0){_0x2d39b6['sendStatus'](0x194);}return _0x1c7ef0;};}function handleError(_0x363e3e,_0x111970){_0x111970=_0x111970||0x1f4;return function(_0x477f42){logger[_0xfbb3('0x25')](_0x477f42[_0xfbb3('0x38')]);if(_0x477f42[_0xfbb3('0x39')]){delete _0x477f42[_0xfbb3('0x39')];}_0x363e3e[_0xfbb3('0x2b')](_0x111970)[_0xfbb3('0x3a')](_0x477f42);};}exports[_0xfbb3('0x3b')]=function(_0x38d3d9,_0x4b13da){var _0x3f0e0c={},_0x1d3d80={},_0x69eae9={'count':0x0,'rows':[]};var _0x5e7243=_[_0xfbb3('0x3c')](db[_0xfbb3('0x3d')][_0xfbb3('0x3e')],function(_0x107308){return{'name':_0x107308[_0xfbb3('0x3f')],'type':_0x107308[_0xfbb3('0x40')][_0xfbb3('0x41')]};});_0x1d3d80[_0xfbb3('0x42')]=_[_0xfbb3('0x3c')](_0x5e7243,_0xfbb3('0x39'));_0x1d3d80[_0xfbb3('0x43')]=_['keys'](_0x38d3d9[_0xfbb3('0x43')]);_0x1d3d80[_0xfbb3('0x44')]=_[_0xfbb3('0x45')](_0x1d3d80[_0xfbb3('0x42')],_0x1d3d80[_0xfbb3('0x43')]);_0x3f0e0c[_0xfbb3('0x46')]=_[_0xfbb3('0x45')](_0x1d3d80['model'],qs[_0xfbb3('0x47')](_0x38d3d9[_0xfbb3('0x43')][_0xfbb3('0x47')]));_0x3f0e0c[_0xfbb3('0x46')]=_0x3f0e0c[_0xfbb3('0x46')][_0xfbb3('0x48')]?_0x3f0e0c[_0xfbb3('0x46')]:_0x1d3d80['model'];if(!_0x38d3d9['query'][_0xfbb3('0x49')](_0xfbb3('0x4a'))){_0x3f0e0c[_0xfbb3('0x2e')]=qs[_0xfbb3('0x2e')](_0x38d3d9[_0xfbb3('0x43')][_0xfbb3('0x2e')]);_0x3f0e0c[_0xfbb3('0x2d')]=qs[_0xfbb3('0x2d')](_0x38d3d9[_0xfbb3('0x43')]['offset']);}_0x3f0e0c[_0xfbb3('0x4b')]=qs[_0xfbb3('0x4c')](_0x38d3d9[_0xfbb3('0x43')]['sort']);_0x3f0e0c[_0xfbb3('0x4d')]=qs[_0xfbb3('0x44')](_['pick'](_0x38d3d9[_0xfbb3('0x43')],_0x1d3d80['filters']),_0x5e7243);if(_0x38d3d9['query'][_0xfbb3('0x4e')]){_0x3f0e0c['where']=_['merge'](_0x3f0e0c[_0xfbb3('0x4d')],{'$or':_[_0xfbb3('0x3c')](_0x5e7243,function(_0x5f427d){if(_0x5f427d[_0xfbb3('0x40')]!=='VIRTUAL'){var _0x4256f9={};_0x4256f9[_0x5f427d['name']]={'$like':'%'+_0x38d3d9[_0xfbb3('0x43')]['filter']+'%'};return _0x4256f9;}})});}_0x3f0e0c=_[_0xfbb3('0x4f')]({},_0x3f0e0c,_0x38d3d9['options']);var _0x3bac14={'where':_0x3f0e0c[_0xfbb3('0x4d')]};return db['SmsMessage'][_0xfbb3('0x30')](_0x3bac14)[_0xfbb3('0x1e')](function(_0x6aa8e4){_0x69eae9[_0xfbb3('0x30')]=_0x6aa8e4;if(_0x38d3d9[_0xfbb3('0x43')]['includeAll']){_0x3f0e0c[_0xfbb3('0x50')]=[{'all':!![]}];}return db[_0xfbb3('0x3d')][_0xfbb3('0x51')](_0x3f0e0c);})[_0xfbb3('0x1e')](function(_0x4359cf){_0x69eae9[_0xfbb3('0x52')]=_0x4359cf;return _0x69eae9;})[_0xfbb3('0x1e')](respondWithFilteredResult(_0x4b13da,_0x3f0e0c))[_0xfbb3('0x28')](handleError(_0x4b13da,null));};exports[_0xfbb3('0x53')]=function(_0x1646e1,_0x437735){var _0x126c15={'raw':!![],'where':{'id':_0x1646e1[_0xfbb3('0x54')]['id']}},_0x1810b3={};_0x1810b3[_0xfbb3('0x42')]=_[_0xfbb3('0x55')](db['SmsMessage'][_0xfbb3('0x3e')]);_0x1810b3[_0xfbb3('0x43')]=_[_0xfbb3('0x55')](_0x1646e1['query']);_0x1810b3['filters']=_[_0xfbb3('0x45')](_0x1810b3[_0xfbb3('0x42')],_0x1810b3[_0xfbb3('0x43')]);_0x126c15['attributes']=_[_0xfbb3('0x45')](_0x1810b3['model'],qs['fields'](_0x1646e1[_0xfbb3('0x43')][_0xfbb3('0x47')]));_0x126c15[_0xfbb3('0x46')]=_0x126c15[_0xfbb3('0x46')][_0xfbb3('0x48')]?_0x126c15[_0xfbb3('0x46')]:_0x1810b3[_0xfbb3('0x42')];if(_0x1646e1[_0xfbb3('0x43')][_0xfbb3('0x56')]){_0x126c15[_0xfbb3('0x50')]=[{'all':!![]}];}_0x126c15=_[_0xfbb3('0x4f')]({},_0x126c15,_0x1646e1['options']);return db[_0xfbb3('0x3d')]['find'](_0x126c15)[_0xfbb3('0x1e')](handleEntityNotFound(_0x437735,null))[_0xfbb3('0x1e')](respondWithResult(_0x437735,null))[_0xfbb3('0x28')](handleError(_0x437735,null));};exports[_0xfbb3('0x57')]=function(_0x3850d1,_0x4c8788){return db[_0xfbb3('0x3d')][_0xfbb3('0x57')](_0x3850d1[_0xfbb3('0x58')],{})['then'](respondWithResult(_0x4c8788,0xc9))['catch'](handleError(_0x4c8788,null));};exports[_0xfbb3('0x36')]=function(_0x41b9a1,_0x1de90e){if(_0x41b9a1['body']['id']){delete _0x41b9a1[_0xfbb3('0x58')]['id'];}return db[_0xfbb3('0x3d')][_0xfbb3('0x59')]({'where':{'id':_0x41b9a1['params']['id']}})[_0xfbb3('0x1e')](handleEntityNotFound(_0x1de90e,null))[_0xfbb3('0x1e')](saveUpdates(_0x41b9a1[_0xfbb3('0x58')],null))[_0xfbb3('0x1e')](respondWithResult(_0x1de90e,null))['catch'](handleError(_0x1de90e,null));};exports['destroy']=function(_0x2c792c,_0x23a729){return db[_0xfbb3('0x3d')][_0xfbb3('0x59')]({'where':{'id':_0x2c792c[_0xfbb3('0x54')]['id']}})[_0xfbb3('0x1e')](handleEntityNotFound(_0x23a729,null))[_0xfbb3('0x1e')](removeEntity(_0x23a729,null))['catch'](handleError(_0x23a729,null));};exports[_0xfbb3('0x5a')]=function(_0x19d1f7,_0x12e79c){return db[_0xfbb3('0x3d')]['describe']()[_0xfbb3('0x1e')](respondWithResult(_0x12e79c,null))[_0xfbb3('0x28')](handleError(_0x12e79c,null));};var interaction_log=require(_0xfbb3('0x11'))(_0xfbb3('0x5b'));exports[_0xfbb3('0x5c')]=function(_0x55d1b1,_0x29c76a,_0x5004c7){var _0x3cab71={'agent':{},'channel':'sms'};if(_0x55d1b1['body']['id']){delete _0x55d1b1['body']['id'];}_0x55d1b1[_0xfbb3('0x58')][_0xfbb3('0x5d')]=!![];_0x55d1b1[_0xfbb3('0x58')][_0xfbb3('0x5e')]=moment()[_0xfbb3('0x5f')](_0xfbb3('0x60'));_0x55d1b1[_0xfbb3('0x58')][_0xfbb3('0x61')]=_0x55d1b1['body'][_0xfbb3('0x61')]||_0x55d1b1[_0xfbb3('0x62')]['id'];_0x3cab71[_0xfbb3('0x63')]['id']=_0x55d1b1['body'][_0xfbb3('0x61')];return db[_0xfbb3('0x3d')]['find']({'where':{'id':_0x55d1b1['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x29c76a,null))[_0xfbb3('0x1e')](saveUpdates(_0x55d1b1[_0xfbb3('0x58')],null))['then'](function(_0x36d887){if(_0x36d887){_0x3cab71[_0xfbb3('0x26')]=_0x36d887[_0xfbb3('0x64')]({'plain':!![]});return db[_0xfbb3('0x65')][_0xfbb3('0x59')]({'where':{'id':_0x36d887['SmsInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x29c76a,null))[_0xfbb3('0x1e')](function(_0x54ff75){if(_0x54ff75){return _0x54ff75[_0xfbb3('0x36')]({'UserId':_0x55d1b1[_0xfbb3('0x58')][_0xfbb3('0x61')],'read1stAt':_['isNil'](_0x54ff75[_0xfbb3('0x66')])?moment()[_0xfbb3('0x5f')](_0xfbb3('0x60')):undefined});}return null;})['then'](function(_0x3d9fac){if(_0x3d9fac){_0x3cab71[_0xfbb3('0x67')]=_0x3d9fac[_0xfbb3('0x64')]({'plain':!![]});interaction_log[_0xfbb3('0x1f')](_0xfbb3('0x68'),_0x55d1b1[_0xfbb3('0x62')]['id'],_0x55d1b1[_0xfbb3('0x62')][_0xfbb3('0x39')],_0x55d1b1['user']['role'],_0x3cab71[_0xfbb3('0x67')]['id'],_0x55d1b1[_0xfbb3('0x58')]?JSON[_0xfbb3('0x24')](_0x55d1b1['body']):_0xfbb3('0x69'));return respondWithRpcPromise('AcceptMessage',_0xfbb3('0x6a'),_0x3cab71);}return null;})['then'](function(_0x43985a){var _0x46fdfc='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x43985a[_0xfbb3('0x26')][_0xfbb3('0x6b')];return db[_0xfbb3('0x6c')][_0xfbb3('0x43')](_0x46fdfc,{'type':db[_0xfbb3('0x6d')]['QueryTypes'][_0xfbb3('0x6e')],'raw':!![]})['then'](function(_0x366d9d){return _0x366d9d;});})[_0xfbb3('0x1e')](function(_0x37fa67){if(_0x37fa67){_0x3cab71[_0xfbb3('0x26')][_0xfbb3('0x6f')]=_0x37fa67[0x0];if(!_0x55d1b1[_0xfbb3('0x58')][_0xfbb3('0x61')])return;return db[_0xfbb3('0x70')]['find']({'where':{'id':_0x55d1b1[_0xfbb3('0x58')][_0xfbb3('0x61')],'role':'agent'},'attributes':['id','name',_0xfbb3('0x71'),'email',_0xfbb3('0x72')],'raw':!![]});}return null;})[_0xfbb3('0x1e')](function(_0xbd0e9e){if(!_0xbd0e9e)return null;_0x3cab71[_0xfbb3('0x26')]['agent']=_0xbd0e9e;return _0x3cab71;})[_0xfbb3('0x1e')](function(_0x3eba08){if(_0x3eba08){if(_0x55d1b1['body'][_0xfbb3('0x73')]){_0x3cab71[_0xfbb3('0x26')][_0xfbb3('0x74')]=util[_0xfbb3('0x5f')]('SIP/%s',_0x55d1b1[_0xfbb3('0x62')][_0xfbb3('0x39')]);_0x3cab71[_0xfbb3('0x26')]['channel']=_0x3cab71['channel'];_0x3cab71['message'][_0xfbb3('0x75')]=_0xfbb3('0x5c');return respondWithRpcPromise(_0xfbb3('0x76'),'EventManager',{'event':_0xfbb3('0x77'),'message':_0x3cab71[_0xfbb3('0x26')]},client9002)[_0xfbb3('0x1e')](function(){return _0x3cab71;});}return _0x3cab71;}return null;})[_0xfbb3('0x1e')](respondWithResult(_0x29c76a,null))['catch'](handleError(_0x29c76a,null));};var interaction_log=require(_0xfbb3('0x11'))(_0xfbb3('0x5b'));exports[_0xfbb3('0x34')]=function(_0x2e0bc2,_0x27f1f5,_0x234196){var _0x587d2b={'agent':{},'channel':'sms'};if(_0x2e0bc2[_0xfbb3('0x58')]['id']){delete _0x2e0bc2[_0xfbb3('0x58')]['id'];}_0x2e0bc2['body']['UserId']=_0x2e0bc2[_0xfbb3('0x58')][_0xfbb3('0x61')]||_0x2e0bc2[_0xfbb3('0x62')]['id'];_0x587d2b['agent']['id']=_0x2e0bc2['body']['UserId'];return db[_0xfbb3('0x3d')]['find']({'where':{'id':_0x2e0bc2[_0xfbb3('0x54')]['id'],'UserId':null}})[_0xfbb3('0x1e')](handleEntityNotFound(_0x27f1f5,null))['then'](function(_0xca50cb){if(_0xca50cb){_0x587d2b[_0xfbb3('0x26')]=_0xca50cb[_0xfbb3('0x64')]({'plain':!![]});return db[_0xfbb3('0x65')][_0xfbb3('0x59')]({'where':{'id':_0xca50cb['SmsInteractionId']}});}return null;})[_0xfbb3('0x1e')](handleEntityNotFound(_0x27f1f5,null))['then'](function(_0x1edae4){if(_0x1edae4){_0x587d2b[_0xfbb3('0x67')]=_0x1edae4[_0xfbb3('0x64')]({'plain':!![]});interaction_log['info'](_0xfbb3('0x78'),_0x2e0bc2['user']['id'],_0x2e0bc2[_0xfbb3('0x62')][_0xfbb3('0x39')],_0x2e0bc2[_0xfbb3('0x62')][_0xfbb3('0x79')],_0x587d2b[_0xfbb3('0x67')]['id'],_0x2e0bc2['body']?JSON[_0xfbb3('0x24')](_0x2e0bc2[_0xfbb3('0x58')]):_0xfbb3('0x69'));return respondWithRpcPromise('RejectMessage',_0xfbb3('0x7a'),_0x587d2b);}return null;})[_0xfbb3('0x1e')](function(_0x1e09b7){var _0x35ca9f=_0xfbb3('0x7b')+_0x1e09b7[_0xfbb3('0x26')]['ContactId'];return db[_0xfbb3('0x6c')][_0xfbb3('0x43')](_0x35ca9f,{'type':db['Sequelize'][_0xfbb3('0x7c')]['SELECT'],'raw':!![]})[_0xfbb3('0x1e')](function(_0x3aca26){return _0x3aca26;});})[_0xfbb3('0x1e')](function(_0x1a7a99){if(_0x1a7a99){_0x587d2b['message'][_0xfbb3('0x6f')]=_0x1a7a99[0x0];if(!_0x2e0bc2[_0xfbb3('0x58')]['UserId'])return;return db['User'][_0xfbb3('0x59')]({'where':{'id':_0x2e0bc2[_0xfbb3('0x58')][_0xfbb3('0x61')],'role':'agent'},'attributes':['id','name',_0xfbb3('0x71'),_0xfbb3('0x7d'),_0xfbb3('0x72')],'raw':!![]});}return null;})[_0xfbb3('0x1e')](function(_0x4f6e3f){if(!_0x4f6e3f)return null;_0x587d2b[_0xfbb3('0x26')][_0xfbb3('0x63')]=_0x4f6e3f;return _0x587d2b;})[_0xfbb3('0x1e')](function(_0x400266){if(_0x400266){_0x400266[_0xfbb3('0x26')][_0xfbb3('0x74')]=util[_0xfbb3('0x5f')]('SIP/%s',_0x2e0bc2['user']['name']);_0x400266[_0xfbb3('0x26')][_0xfbb3('0x7e')]=_0x587d2b['channel'];_0x400266[_0xfbb3('0x26')][_0xfbb3('0x75')]=_0xfbb3('0x34');respondWithRpcPromise('EventManager','EventManager',{'event':_0xfbb3('0x7f'),'message':_0x400266[_0xfbb3('0x26')]},client9002);return _0x587d2b;}return null;})[_0xfbb3('0x1e')](respondWithResult(_0x27f1f5,null))['catch'](handleError(_0x27f1f5,null));};exports[_0xfbb3('0x2b')]=function(_0x1dfbf2,_0x123474,_0x1fd008){if(_0x1dfbf2[_0xfbb3('0x58')]['id']){delete _0x1dfbf2[_0xfbb3('0x58')]['id'];}var _0x4e1b4b;return db[_0xfbb3('0x3d')][_0xfbb3('0x59')]({'where':{'id':_0x1dfbf2['params']['id']}})[_0xfbb3('0x1e')](handleEntityNotFound(_0x123474,null))['then'](function(_0x3a10fc){if(_0x3a10fc){_0x4e1b4b=_0x3a10fc;return db['SmsAccount'][_0xfbb3('0x59')]({'where':{'id':_0x3a10fc['SmsAccountId']}});}})[_0xfbb3('0x1e')](handleEntityNotFound(_0x123474,null))[_0xfbb3('0x1e')](function(_0x144199){if(_0x144199){logger[_0xfbb3('0x22')]('SmsMessage,\x20%s,\x20%s,\x20%s','status',_0xfbb3('0x80'),_0x144199[_0xfbb3('0x40')],util['inspect'](_0x1dfbf2[_0xfbb3('0x58')],{'showHidden':![],'depth':null}));switch(_0x144199[_0xfbb3('0x40')]){case _0xfbb3('0x81'):if(_0x1dfbf2[_0xfbb3('0x58')]['MessageSid']&&_0x1dfbf2['body']['MessageSid']===_0x4e1b4b[_0xfbb3('0x82')]){return _0x4e1b4b[_0xfbb3('0x36')]({'read':!![]});}else{logger[_0xfbb3('0x25')](_0xfbb3('0x83'),_0xfbb3('0x2b'),_0xfbb3('0x81'),util[_0xfbb3('0x84')](_0x1dfbf2[_0xfbb3('0x58')],{'showHidden':![],'depth':null}));}break;case _0xfbb3('0x85'):if(_0x1dfbf2[_0xfbb3('0x58')][_0xfbb3('0x86')]&&_0x1dfbf2['body'][_0xfbb3('0x86')]===_0x4e1b4b[_0xfbb3('0x82')]&&_['indexOf']([_0xfbb3('0x87'),_0xfbb3('0x88')],_0x1dfbf2['body'][_0xfbb3('0x89')])>=0x0){return _0x4e1b4b['update']({'read':!![]});}else{logger[_0xfbb3('0x25')](_0xfbb3('0x83'),'status',_0xfbb3('0x8a'),util['inspect'](_0x1dfbf2[_0xfbb3('0x58')],{'showHidden':![],'depth':null}));}break;case _0xfbb3('0x8b'):var _0x13634f=_0x1dfbf2['body'][_0xfbb3('0x8c')][0x0];if(_0x13634f[_0xfbb3('0x2b')][_0xfbb3('0x8d')]==='DELIVERED'){return _0x4e1b4b['update']({'read':!![]});}else{logger[_0xfbb3('0x25')](_0xfbb3('0x83'),'status',_0xfbb3('0x8b'),util[_0xfbb3('0x84')](_0x1dfbf2['body'],{'showHidden':![],'depth':null}));}break;}return _0x4e1b4b;}})[_0xfbb3('0x1e')](respondWithResult(_0x123474,null))[_0xfbb3('0x28')](handleError(_0x123474,null));};
\ No newline at end of file
index 1e2f41e..940ca96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c4a=['update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x2461c0,_0x54a024){var _0x2628bf=function(_0x1b6834){while(--_0x1b6834){_0x2461c0['push'](_0x2461c0['shift']());}};_0x2628bf(++_0x54a024);}(_0x5c4a,0x1a5));var _0xa5c4=function(_0xd5dad6,_0x354f41){_0xd5dad6=_0xd5dad6-0x0;var _0x536446=_0x5c4a[_0xd5dad6];return _0x536446;};'use strict';var EventEmitter=require(_0xa5c4('0x0'));var SmsMessage=require(_0xa5c4('0x1'))['db']['SmsMessage'];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xa5c4('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa5c4('0x3'),'afterDestroy':'remove'};function emitEvent(_0x4b4b44){return function(_0x1a324d,_0x3851c5,_0x45eea9){SmsMessageEvents[_0xa5c4('0x4')](_0x4b4b44+':'+_0x1a324d['id'],_0x1a324d);SmsMessageEvents[_0xa5c4('0x4')](_0x4b4b44,_0x1a324d);_0x45eea9(null);};}for(var e in events){if(events[_0xa5c4('0x5')](e)){var event=events[e];SmsMessage[_0xa5c4('0x6')](e,emitEvent(event));}}module[_0xa5c4('0x7')]=SmsMessageEvents;
\ No newline at end of file
+var _0x2db1=['exports','events','SmsMessage','setMaxListeners','save','update','remove','emit','hook'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x2db1,0x64));var _0x12db=function(_0x1da7f8,_0x3f70aa){_0x1da7f8=_0x1da7f8-0x0;var _0x1b11e3=_0x2db1[_0x1da7f8];return _0x1b11e3;};'use strict';var EventEmitter=require(_0x12db('0x0'));var SmsMessage=require('../../mysqldb')['db'][_0x12db('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x12db('0x2')](0x0);var events={'afterCreate':_0x12db('0x3'),'afterUpdate':_0x12db('0x4'),'afterDestroy':_0x12db('0x5')};function emitEvent(_0x370c0d){return function(_0x70b217,_0x2e4128,_0x2856d9){SmsMessageEvents[_0x12db('0x6')](_0x370c0d+':'+_0x70b217['id'],_0x70b217);SmsMessageEvents[_0x12db('0x6')](_0x370c0d,_0x70b217);_0x2856d9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage[_0x12db('0x7')](e,emitEvent(event));}}module[_0x12db('0x8')]=SmsMessageEvents;
\ No newline at end of file
index 3b35a74..969a874 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf927=['secret','find','SmsAccountId','then','type','twilio','accountSid','authToken','messages','create','phone','remote','/api/sms/messages/','token','sid','catch','error','afterCreate','inspect','SmsMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','username','password','smsMethod','sender','login?username=','&password=','split','sms','user_key','session_key','total_sent','internal_order_id','connectel','senderString','POST','https://smsapi.connectel.se/api/v2/send/','requestid','deliveryReport','clicksend','xCALLY\x20Motion','format','%s:%s','Basic\x20%s','toString','base64','data','queued_count','head','message_id','read','clickSend','Missing\x20parameters:\x20username,\x20password','plivo','authId','/status?token=','https://api.plivo.com/v1/Account/%s/Message/','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','IBSSO\x20','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','login','keys','sort','createHash','digest','hex','signature=','GET','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','uuid','UTF-8','apiMessageId','clickatell','https://messaging.bandwidth.com/api/v2/users/','accountId','applicationId','bandwidth','intelepeer','Bearer\x20','code','message','application/json','refid','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','exports','define','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','models','direction','toLowerCase','isNil','UserId','SmsInteractionId','SmsInteraction','findOne','update','createdAt','out'];(function(_0x295f6b,_0xaadff7){var _0x4417f7=function(_0x3ed8b7){while(--_0x3ed8b7){_0x295f6b['push'](_0x295f6b['shift']());}};_0x4417f7(++_0xaadff7);}(_0xf927,0xdc));var _0x7f92=function(_0x5db77c,_0x56249e){_0x5db77c=_0x5db77c-0x0;var _0x32543a=_0xf927[_0x5db77c];return _0x32543a;};'use strict';var _=require(_0x7f92('0x0'));var util=require(_0x7f92('0x1'));var logger=require('../../config/logger')(_0x7f92('0x2'));var moment=require(_0x7f92('0x3'));var BPromise=require('bluebird');var rp=require(_0x7f92('0x4'));var fs=require('fs');var path=require(_0x7f92('0x5'));var rimraf=require(_0x7f92('0x6'));var config=require(_0x7f92('0x7'));var attributes=require(_0x7f92('0x8'));module[_0x7f92('0x9')]=function(_0x40e928,_0x5290e3){return _0x40e928[_0x7f92('0xa')](_0x7f92('0xb'),attributes,{'tableName':_0x7f92('0xc'),'paranoid':![],'indexes':[{'name':_0x7f92('0xd'),'fields':[_0x7f92('0xd')]},{'name':_0x7f92('0xe'),'fields':[_0x7f92('0xf')],'type':_0x7f92('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x219270,_0x15a4dc,_0x5a6e2c){var _0x13cb1c=_0x40e928[_0x7f92('0x11')];var _0x464bf6=_0x219270['get']({'plain':!![]});if(_0x464bf6[_0x7f92('0x12')][_0x7f92('0x13')]()==='in'||_0x464bf6[_0x7f92('0x12')]['toLowerCase']()==='out'&&!_0x464bf6['secret']&&!_[_0x7f92('0x14')](_0x464bf6[_0x7f92('0x15')])&&!_[_0x7f92('0x14')](_0x464bf6[_0x7f92('0x16')])){_0x13cb1c[_0x7f92('0x17')][_0x7f92('0x18')]({'where':{'id':_0x464bf6[_0x7f92('0x16')]}})['then'](function(_0x96cd9b){if(_0x96cd9b){_0x96cd9b[_0x7f92('0x19')]({'lastMsgAt':_0x464bf6[_0x7f92('0x1a')],'lastMsgDirection':_0x464bf6[_0x7f92('0x12')]['toLowerCase']()});}})['catch'](function(_0x45c704){console['error'](_0x45c704);});}if(_0x464bf6['direction']===_0x7f92('0x1b')&&!_0x464bf6[_0x7f92('0x1c')]){var _0x3f02bb;_0x13cb1c['SmsAccount'][_0x7f92('0x1d')]({'where':{'id':_0x464bf6[_0x7f92('0x1e')]},'raw':!![]})[_0x7f92('0x1f')](function(_0x15b942){_0x3f02bb=_0x15b942;if(_0x3f02bb&&_0x3f02bb['type']){switch(_0x3f02bb[_0x7f92('0x20')]){case _0x7f92('0x21'):var _0x5c05c1=require(_0x7f92('0x21'));if(_0x3f02bb[_0x7f92('0x22')]&&_0x3f02bb[_0x7f92('0x23')]&&_0x3f02bb['phone']){var _0x11bb90=new _0x5c05c1(_0x3f02bb['accountSid'],_0x3f02bb[_0x7f92('0x23')]);_0x11bb90[_0x7f92('0x24')][_0x7f92('0x25')]({'body':_0x464bf6['body'],'to':_0x464bf6[_0x7f92('0x26')],'from':_0x3f02bb['phone'],'statusCallback':_0x3f02bb[_0x7f92('0x27')]+_0x7f92('0x28')+_0x464bf6['id']+'/status?token='+_0x3f02bb[_0x7f92('0x29')]})[_0x7f92('0x1f')](function(_0x34ba91){if(_0x34ba91[_0x7f92('0x2a')]){return _0x219270[_0x7f92('0x19')]({'messageId':_0x34ba91[_0x7f92('0x2a')]});}})[_0x7f92('0x2b')](function(_0x251add){logger[_0x7f92('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x7f92('0x2d'),'twilio',util[_0x7f92('0x2e')](_0x251add,{'showHidden':![],'depth':null}));});}else{logger[_0x7f92('0x2c')](_0x7f92('0x2f'),_0x7f92('0x2d'),_0x7f92('0x21'),_0x7f92('0x30'));}break;case _0x7f92('0x31'):var _0x542ff5='https://api.skebby.it/API/v1.0/REST/';if(_0x3f02bb[_0x7f92('0x32')]&&_0x3f02bb[_0x7f92('0x33')]){var _0x1674fa={'recipient':[_0x464bf6[_0x7f92('0x26')]],'message':_0x464bf6[_0x7f92('0xf')],'message_type':_0x3f02bb['smsMethod']};if(_0x3f02bb[_0x7f92('0x34')]&&_0x3f02bb['smsMethod']!=='SI'){_0x1674fa[_0x7f92('0x35')]=_0x3f02bb[_0x7f92('0x26')];}var _0x3c7268={'url':_0x542ff5+_0x7f92('0x36')+_0x3f02bb[_0x7f92('0x32')]+_0x7f92('0x37')+_0x3f02bb[_0x7f92('0x33')],'method':'GET'};rp(_0x3c7268)[_0x7f92('0x1f')](function(_0x1f70ac){var _0x58448b=_0x1f70ac[_0x7f92('0x38')](';');var _0x242796={'user_key':_0x58448b[0x0],'session_key':_0x58448b[0x1]};_0x3c7268={'url':_0x542ff5+_0x7f92('0x39'),'method':'POST','headers':{'user_key':_0x242796[_0x7f92('0x3a')],'Session_key':_0x242796[_0x7f92('0x3b')]},'json':!![],'body':_0x1674fa};return rp(_0x3c7268);})[_0x7f92('0x1f')](function(_0x205186){if(_0x205186[_0x7f92('0x3c')]>=0x1){var _0x586299={'messageId':_0x205186[_0x7f92('0x3d')]};if(_0x3f02bb[_0x7f92('0x34')]!=='GP'||!_0x3f02bb['deliveryReport']){_0x586299['read']=!![];}return _0x219270[_0x7f92('0x19')](_0x586299);}else{return logger[_0x7f92('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x7f92('0x31'),util[_0x7f92('0x2e')](_0x205186,{'showHidden':![],'depth':null}));}})[_0x7f92('0x2b')](function(_0x24734d){return logger['error'](_0x7f92('0x2f'),'afterCreate','skebby',util[_0x7f92('0x2e')](_0x24734d,{'showHidden':![],'depth':null}));});}else{logger[_0x7f92('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x7f92('0x31'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x7f92('0x3e'):if(_0x3f02bb[_0x7f92('0x23')]){var _0x2d673a={'recipient':_0x464bf6['phone'],'message':_0x464bf6[_0x7f92('0xf')],'sender':_0x3f02bb[_0x7f92('0x3f')]||_0x3f02bb[_0x7f92('0x26')],'authorization':_0x3f02bb[_0x7f92('0x23')]};var _0x15a4dc={'method':_0x7f92('0x40'),'uri':_0x7f92('0x41'),'body':_0x2d673a,'json':!![]};rp(_0x15a4dc)[_0x7f92('0x1f')](function(_0x3691b6){var _0x16bbd6={'messageId':_0x3691b6[_0x7f92('0x42')]};if(!_0x3f02bb[_0x7f92('0x43')]){_0x16bbd6['read']=!![];}return _0x219270[_0x7f92('0x19')](_0x16bbd6);})[_0x7f92('0x2b')](function(_0x2576f6){logger[_0x7f92('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x7f92('0x2d'),_0x7f92('0x3e'),util[_0x7f92('0x2e')](_0x2576f6,{'showHidden':![],'depth':null}));});}else{logger[_0x7f92('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x7f92('0x2d'),_0x7f92('0x3e'),'Missing\x20parameters:\x20authToken');}break;case _0x7f92('0x44'):if(_0x3f02bb['username']&&_0x3f02bb[_0x7f92('0x33')]){var _0x2d673a={'messages':[{'source':_0x7f92('0x45'),'to':_0x464bf6['phone'],'body':_0x464bf6[_0x7f92('0xf')],'from':_0x3f02bb[_0x7f92('0x3f')]||_0x3f02bb[_0x7f92('0x26')]}]};var _0x4b5680=util[_0x7f92('0x46')](_0x7f92('0x47'),_0x3f02bb['username'],_0x3f02bb[_0x7f92('0x33')]);var _0x15a4dc={'method':_0x7f92('0x40'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0x2d673a,'headers':{'Authorization':util[_0x7f92('0x46')](_0x7f92('0x48'),new Buffer(_0x4b5680)[_0x7f92('0x49')](_0x7f92('0x4a')))},'json':!![]};rp(_0x15a4dc)['then'](function(_0x8fb790){if(_0x8fb790['http_code']>=0xc8&&_0x8fb790['http_code']<=0xce){if(_0x8fb790[_0x7f92('0x4b')]&&_0x8fb790[_0x7f92('0x4b')][_0x7f92('0x4c')]>0x0){var _0x92d8a=_[_0x7f92('0x4d')](_0x8fb790['data'][_0x7f92('0x24')]);var _0x2216ac={'messageId':_0x92d8a[_0x7f92('0x4e')]};if(!_0x3f02bb['deliveryReport']){_0x2216ac[_0x7f92('0x4f')]=!![];}return _0x219270['update'](_0x2216ac);}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x7f92('0x2d'),'clickSend',util['inspect'](_0x8fb790,{'showHidden':![],'depth':null}));}}else{logger[_0x7f92('0x2c')](_0x7f92('0x2f'),_0x7f92('0x2d'),_0x7f92('0x50'),util[_0x7f92('0x2e')](_0x8fb790,{'showHidden':![],'depth':null}));}})['catch'](function(_0x473d97){logger['error'](_0x7f92('0x2f'),_0x7f92('0x2d'),_0x7f92('0x50'),util[_0x7f92('0x2e')](_0x473d97,{'showHidden':![],'depth':null}));});}else{logger[_0x7f92('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x7f92('0x2d'),_0x7f92('0x50'),_0x7f92('0x51'));}break;case _0x7f92('0x52'):if(_0x3f02bb[_0x7f92('0x53')]&&_0x3f02bb[_0x7f92('0x23')]){var _0x2d673a={'dst':_0x464bf6['phone'],'text':_0x464bf6[_0x7f92('0xf')],'src':_0x3f02bb['senderString']||_0x3f02bb[_0x7f92('0x26')],'url':_0x3f02bb[_0x7f92('0x27')]+'/api/sms/messages/'+_0x464bf6['id']+_0x7f92('0x54')+_0x3f02bb['token']};var _0x4b5680=util[_0x7f92('0x46')](_0x7f92('0x47'),_0x3f02bb[_0x7f92('0x53')],_0x3f02bb[_0x7f92('0x23')]);var _0x15a4dc={'method':_0x7f92('0x40'),'uri':util[_0x7f92('0x46')](_0x7f92('0x55'),_0x3f02bb[_0x7f92('0x53')]),'body':_0x2d673a,'headers':{'Authorization':util[_0x7f92('0x46')](_0x7f92('0x48'),new Buffer(_0x4b5680)[_0x7f92('0x49')]('base64'))},'json':!![]};rp(_0x15a4dc)['then'](function(_0x421100){var _0x4a805a={'messageId':_0x421100['message_uuid'][0x0]};return _0x219270[_0x7f92('0x19')](_0x4a805a);})['catch'](function(_0x40ea26){logger[_0x7f92('0x2c')](_0x7f92('0x2f'),_0x7f92('0x2d'),_0x7f92('0x52'),util[_0x7f92('0x2e')](_0x40ea26,{'showHidden':![],'depth':null}));});}else{logger[_0x7f92('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x7f92('0x2d'),_0x7f92('0x52'),_0x7f92('0x56'));}break;case _0x7f92('0x57'):if(_0x3f02bb[_0x7f92('0x32')]&&_0x3f02bb[_0x7f92('0x33')]){if(_0x3f02bb[_0x7f92('0x58')]){var _0x4189fc={'method':'POST','uri':_0x3f02bb[_0x7f92('0x58')]+_0x7f92('0x59'),'body':{'username':_0x3f02bb[_0x7f92('0x32')],'password':_0x3f02bb[_0x7f92('0x33')]},'json':!![]};return rp(_0x4189fc)['then'](function(_0x3f7a8a){var _0x398600={'method':_0x7f92('0x40'),'uri':_0x3f02bb[_0x7f92('0x58')]+_0x7f92('0x5a'),'body':{'messages':[{'from':_0x3f02bb[_0x7f92('0x26')],'destinations':[{'to':_0x464bf6['phone']}],'text':_0x464bf6[_0x7f92('0xf')],'notifyUrl':_0x3f02bb[_0x7f92('0x27')]+_0x7f92('0x28')+_0x464bf6['id']+_0x7f92('0x54')+_0x3f02bb['token'],'notifyContentType':'application/json','callbackData':_0x3f02bb[_0x7f92('0x26')]+';'+_0x464bf6[_0x7f92('0xf')]}]},'headers':{'Authorization':_0x7f92('0x5b')+_0x3f7a8a[_0x7f92('0x29')]},'json':!![]};return rp(_0x398600)['then'](function(_0x26e217){if(_0x26e217[_0x7f92('0x24')]){var _0x3910fa={'messageId':_0x26e217[_0x7f92('0x24')][0x0][_0x7f92('0xd')]};if(!_0x3f02bb[_0x7f92('0x43')]){_0x3910fa[_0x7f92('0x4f')]=!![];}return _0x219270[_0x7f92('0x19')](_0x3910fa);}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x7f92('0x2d'),_0x7f92('0x57'),util[_0x7f92('0x2e')](_0x26e217,{'showHidden':![],'depth':null}));}});})[_0x7f92('0x2b')](function(_0x172edb){return logger[_0x7f92('0x2c')](_0x7f92('0x2f'),_0x7f92('0x2d'),_0x7f92('0x57'),util[_0x7f92('0x2e')](_0x172edb,{'showHidden':![],'depth':null}));});}else{logger[_0x7f92('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x7f92('0x2d'),_0x7f92('0x57'),_0x7f92('0x5c'));}}else{logger[_0x7f92('0x2c')](_0x7f92('0x2f'),'afterCreate','infobip',_0x7f92('0x51'));}break;case _0x7f92('0x5d'):var _0x33cfc0=require(_0x7f92('0x5e'));if(_0x3f02bb[_0x7f92('0x5f')]){var _0x4b470e={};_0x4b470e[_0x7f92('0x60')]=_0x3f02bb[_0x7f92('0x32')];_0x4b470e[_0x7f92('0x26')]=_0x464bf6[_0x7f92('0x26')];_0x4b470e[_0x7f92('0x35')]=_0x3f02bb[_0x7f92('0x26')];_0x4b470e['text']=_0x464bf6[_0x7f92('0xf')];_0x4b470e['timestamp']=+new Date();var _0x204932='';var _0x2437d4='';var _0x28019a=Object[_0x7f92('0x61')](_0x4b470e);_0x28019a[_0x7f92('0x62')]();for(var _0x3dd5a8=0x0;_0x3dd5a8<_0x28019a['length'];_0x3dd5a8++){if(_0x204932!=''){_0x204932+='&';}_0x204932+=_0x28019a[_0x3dd5a8]+'='+encodeURIComponent(_0x4b470e[_0x28019a[_0x3dd5a8]]);_0x2437d4+=_0x4b470e[_0x28019a[_0x3dd5a8]];}_0x2437d4+=_0x3f02bb['apiKey'];_0x2437d4=_0x33cfc0[_0x7f92('0x63')]('md5')['update'](_0x2437d4)[_0x7f92('0x64')](_0x7f92('0x65'));if(_0x204932!==''){_0x204932+='&';}_0x204932+=_0x7f92('0x66')+_0x2437d4;var _0x3c7268={'method':_0x7f92('0x67'),'uri':_0x3f02bb[_0x7f92('0x58')]+_0x7f92('0x68')+_0x204932,'json':!![]};return rp(_0x3c7268)['then'](function(_0x17dde9){var _0x5208ab=Object[_0x7f92('0x61')](_0x17dde9);if(_0x17dde9[_0x5208ab[0x0]][_0x7f92('0x2c')]&&parseInt(_0x17dde9[_0x5208ab[0x0]][_0x7f92('0x2c')])===0x0){var _0x5ded78={'messageId':_0x17dde9[_0x5208ab[0x0]][_0x7f92('0x69')]};if(!_0x3f02bb['deliveryReport']){_0x5ded78[_0x7f92('0x4f')]=!![];}return _0x219270[_0x7f92('0x19')](_0x5ded78);}else{return logger['error'](_0x7f92('0x2f'),'afterCreate','csc',util[_0x7f92('0x2e')](_0x17dde9[_0x7f92('0x2c')],{'showHidden':![],'depth':null}));}})[_0x7f92('0x2b')](function(_0x167fd5){return logger[_0x7f92('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x7f92('0x2d'),_0x7f92('0x5d'),util[_0x7f92('0x2e')](_0x167fd5,{'showHidden':![],'depth':null}));});}else{logger[_0x7f92('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x7f92('0x2d'),'csc',_0x7f92('0x6a'));}break;case'clickatell':if(_0x3f02bb[_0x7f92('0x5f')]){var _0x2f99d0={'method':_0x7f92('0x40'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x3f02bb[_0x7f92('0x5f')]},'body':{'content':_0x464bf6[_0x7f92('0xf')],'to':[_0x464bf6[_0x7f92('0x26')]],'from':_0x3f02bb[_0x7f92('0x26')],'binary':![],'clientMessageId':_0x7f92('0x6b'),'charset':_0x7f92('0x6c')},'json':!![]};rp(_0x2f99d0)[_0x7f92('0x1f')](function(_0x519199){if(!_0x519199[_0x7f92('0x2c')]){var _0x5dd16d={'messageId':_0x519199[_0x7f92('0x24')][0x0][_0x7f92('0x6d')]};if(!_0x3f02bb[_0x7f92('0x43')]){_0x5dd16d[_0x7f92('0x4f')]=!![];}return _0x219270[_0x7f92('0x19')](_0x5dd16d);}else{return logger[_0x7f92('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x7f92('0x2d'),_0x7f92('0x6e'),util[_0x7f92('0x2e')](_0x519199[_0x7f92('0x2c')],{'showHidden':![],'depth':null}));}})[_0x7f92('0x2b')](function(_0x1aba7b){return logger[_0x7f92('0x2c')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x7f92('0x6e'),util['inspect'](_0x1aba7b,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x7f92('0x2d'),'clickatell','Missing\x20parameters:\x20apiKey');}break;case'bandwidth':if(_0x3f02bb[_0x7f92('0x32')]&&_0x3f02bb['password']){var _0x4b5680=util[_0x7f92('0x46')](_0x7f92('0x47'),_0x3f02bb[_0x7f92('0x32')],_0x3f02bb[_0x7f92('0x33')]);var _0x15a4dc={'method':_0x7f92('0x40'),'uri':_0x7f92('0x6f')+_0x3f02bb[_0x7f92('0x70')]+'/messages','body':{'to':[_0x464bf6[_0x7f92('0x26')]],'text':_0x464bf6[_0x7f92('0xf')],'from':_0x3f02bb[_0x7f92('0x26')],'applicationId':_0x3f02bb[_0x7f92('0x71')]},'headers':{'Authorization':util['format'](_0x7f92('0x48'),new Buffer(_0x4b5680)[_0x7f92('0x49')]('base64'))},'json':!![]};rp(_0x15a4dc)[_0x7f92('0x1f')](function(_0x27d01c){if(_0x27d01c['id']){var _0x2902dc={'messageId':_0x27d01c['id']};return _0x219270[_0x7f92('0x19')](_0x2902dc);}else{logger['error'](_0x7f92('0x2f'),_0x7f92('0x2d'),'bandwidth',util[_0x7f92('0x2e')](_0x27d01c,{'showHidden':![],'depth':null}));}})[_0x7f92('0x2b')](function(_0x1aff0e){logger[_0x7f92('0x2c')](_0x7f92('0x2f'),_0x7f92('0x2d'),_0x7f92('0x72'),util['inspect'](_0x1aff0e,{'showHidden':![],'depth':null}));});}else{logger[_0x7f92('0x2c')](_0x7f92('0x2f'),_0x7f92('0x2d'),_0x7f92('0x72'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x7f92('0x73'):if(_0x3f02bb[_0x7f92('0x5f')]){var _0x3611ee={};var _0x3c7268={'method':_0x7f92('0x40'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':_0x7f92('0x74')+_0x3f02bb[_0x7f92('0x5f')],'Content-Type':'application/json'},'body':{'from':_0x3f02bb[_0x7f92('0x26')],'to':_0x464bf6[_0x7f92('0x26')],'text':_0x464bf6['body']},'json':!![]};return rp(_0x3c7268)[_0x7f92('0x1f')](function(_0x5c24c7){if(_0x5c24c7[_0x7f92('0x75')]==0xca){_0x3611ee[_0x7f92('0x76')]=_0x5c24c7;var _0x545560={'method':'POST','uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0x7f92('0x74')+_0x3f02bb[_0x7f92('0x5f')],'Content-Type':_0x7f92('0x77')},'body':{'refid':_0x3611ee['message'][_0x7f92('0x78')]},'json':!![]};return rp(_0x545560)['then'](function(_0x2c7c5f){_0x3611ee['status']=_0x2c7c5f;var _0x339ad6={'messageId':_0x3611ee[_0x7f92('0x76')][_0x7f92('0x78')],'read':!![]};return _0x219270[_0x7f92('0x19')](_0x339ad6);});}else{return logger['error'](_0x7f92('0x2f'),_0x7f92('0x2d'),_0x7f92('0x73'),util[_0x7f92('0x2e')](_0x5c24c7,{'showHidden':![],'depth':null}));}})[_0x7f92('0x2b')](function(_0x342387){return logger[_0x7f92('0x2c')](_0x7f92('0x2f'),_0x7f92('0x2d'),_0x7f92('0x73'),util['inspect'](_0x342387,{'showHidden':![],'depth':null}));});}else{return logger[_0x7f92('0x2c')](_0x7f92('0x2f'),'afterCreate','intelepeer','Token\x20not\x20received');}break;}}})[_0x7f92('0x79')](function(){_0x5a6e2c();});}else{_0x5a6e2c();}}},'charset':_0x7f92('0x7a'),'collate':_0x7f92('0x7b')});};
\ No newline at end of file
+var _0xf296=['keys','sort','length','createHash','md5','hex','signature=','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','https://platform.clickatell.com/messages','UTF-8','apiMessageId','clickatell','bandwidth','https://messaging.bandwidth.com/api/v2/users/','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','message','status','refid','Token\x20not\x20received','finally','utf8mb4','lodash','util','api','request-promise','path','../../config/environment','./smsMessage.attributes','exports','define','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','get','toLowerCase','direction','secret','isNil','UserId','SmsInteraction','findOne','then','update','catch','error','SmsAccount','type','twilio','accountSid','authToken','phone','create','remote','/api/sms/messages/','/status?token=','token','sid','afterCreate','inspect','SmsMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','sender','login?username=','&password=','GET','split','sms','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','skebby','Missing\x20parameters:\x20username,\x20password','connectel','senderString','POST','https://smsapi.connectel.se/api/v2/send/','requestid','Missing\x20parameters:\x20authToken','username','xCALLY\x20Motion','format','%s:%s','Basic\x20%s','toString','base64','http_code','data','queued_count','head','message_id','clickSend','plivo','authId','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','messages','Missing\x20parameters:\x20base_url','csc','apiKey','login','text'];(function(_0x52d8e9,_0x402208){var _0x307f94=function(_0x396b4c){while(--_0x396b4c){_0x52d8e9['push'](_0x52d8e9['shift']());}};_0x307f94(++_0x402208);}(_0xf296,0x94));var _0x6f29=function(_0x4ce315,_0x388074){_0x4ce315=_0x4ce315-0x0;var _0x1a6160=_0xf296[_0x4ce315];return _0x1a6160;};'use strict';var _=require(_0x6f29('0x0'));var util=require(_0x6f29('0x1'));var logger=require('../../config/logger')(_0x6f29('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6f29('0x3'));var fs=require('fs');var path=require(_0x6f29('0x4'));var rimraf=require('rimraf');var config=require(_0x6f29('0x5'));var attributes=require(_0x6f29('0x6'));module[_0x6f29('0x7')]=function(_0x4f0712,_0x1d9c3f){return _0x4f0712[_0x6f29('0x8')]('SmsMessage',attributes,{'tableName':_0x6f29('0x9'),'paranoid':![],'indexes':[{'name':_0x6f29('0xa'),'fields':[_0x6f29('0xa')]},{'name':_0x6f29('0xb'),'fields':[_0x6f29('0xc')],'type':_0x6f29('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x42773f,_0x533e59,_0x53db5d){var _0xbf45fd=_0x4f0712['models'];var _0x5201d4=_0x42773f[_0x6f29('0xe')]({'plain':!![]});if(_0x5201d4['direction'][_0x6f29('0xf')]()==='in'||_0x5201d4[_0x6f29('0x10')][_0x6f29('0xf')]()==='out'&&!_0x5201d4[_0x6f29('0x11')]&&!_[_0x6f29('0x12')](_0x5201d4[_0x6f29('0x13')])){_0xbf45fd[_0x6f29('0x14')][_0x6f29('0x15')]({'where':{'id':_0x5201d4['SmsInteractionId']}})[_0x6f29('0x16')](function(_0x115d08){if(_0x115d08){_0x115d08[_0x6f29('0x17')]({'lastMsgAt':_0x5201d4['createdAt'],'lastMsgDirection':_0x5201d4[_0x6f29('0x10')]['toLowerCase']()});}})[_0x6f29('0x18')](function(_0x2907e4){console[_0x6f29('0x19')](_0x2907e4);});}if(_0x5201d4[_0x6f29('0x10')]==='out'&&!_0x5201d4['secret']){var _0x28995e;_0xbf45fd[_0x6f29('0x1a')]['find']({'where':{'id':_0x5201d4['SmsAccountId']},'raw':!![]})[_0x6f29('0x16')](function(_0x19a72c){_0x28995e=_0x19a72c;if(_0x28995e&&_0x28995e[_0x6f29('0x1b')]){switch(_0x28995e[_0x6f29('0x1b')]){case _0x6f29('0x1c'):var _0x4d7964=require(_0x6f29('0x1c'));if(_0x28995e[_0x6f29('0x1d')]&&_0x28995e[_0x6f29('0x1e')]&&_0x28995e[_0x6f29('0x1f')]){var _0x1f7c53=new _0x4d7964(_0x28995e[_0x6f29('0x1d')],_0x28995e['authToken']);_0x1f7c53['messages'][_0x6f29('0x20')]({'body':_0x5201d4[_0x6f29('0xc')],'to':_0x5201d4[_0x6f29('0x1f')],'from':_0x28995e['phone'],'statusCallback':_0x28995e[_0x6f29('0x21')]+_0x6f29('0x22')+_0x5201d4['id']+_0x6f29('0x23')+_0x28995e[_0x6f29('0x24')]})[_0x6f29('0x16')](function(_0x9d7eda){if(_0x9d7eda['sid']){return _0x42773f[_0x6f29('0x17')]({'messageId':_0x9d7eda[_0x6f29('0x25')]});}})[_0x6f29('0x18')](function(_0x54c05b){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6f29('0x26'),_0x6f29('0x1c'),util[_0x6f29('0x27')](_0x54c05b,{'showHidden':![],'depth':null}));});}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x1c'),_0x6f29('0x29'));}break;case'skebby':var _0x36384c=_0x6f29('0x2a');if(_0x28995e['username']&&_0x28995e[_0x6f29('0x2b')]){var _0x8e0348={'recipient':[_0x5201d4[_0x6f29('0x1f')]],'message':_0x5201d4[_0x6f29('0xc')],'message_type':_0x28995e[_0x6f29('0x2c')]};if(_0x28995e['smsMethod']&&_0x28995e[_0x6f29('0x2c')]!=='SI'){_0x8e0348[_0x6f29('0x2d')]=_0x28995e['phone'];}var _0x5c43b2={'url':_0x36384c+_0x6f29('0x2e')+_0x28995e['username']+_0x6f29('0x2f')+_0x28995e['password'],'method':_0x6f29('0x30')};rp(_0x5c43b2)[_0x6f29('0x16')](function(_0x100bbf){var _0x52ebd3=_0x100bbf[_0x6f29('0x31')](';');var _0x220ddf={'user_key':_0x52ebd3[0x0],'session_key':_0x52ebd3[0x1]};_0x5c43b2={'url':_0x36384c+_0x6f29('0x32'),'method':'POST','headers':{'user_key':_0x220ddf[_0x6f29('0x33')],'Session_key':_0x220ddf[_0x6f29('0x34')]},'json':!![],'body':_0x8e0348};return rp(_0x5c43b2);})['then'](function(_0x3cdcfe){if(_0x3cdcfe[_0x6f29('0x35')]>=0x1){var _0x404097={'messageId':_0x3cdcfe[_0x6f29('0x36')]};if(_0x28995e[_0x6f29('0x2c')]!=='GP'||!_0x28995e[_0x6f29('0x37')]){_0x404097[_0x6f29('0x38')]=!![];}return _0x42773f[_0x6f29('0x17')](_0x404097);}else{return logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate','skebby',util[_0x6f29('0x27')](_0x3cdcfe,{'showHidden':![],'depth':null}));}})['catch'](function(_0xf9fed3){return logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate',_0x6f29('0x39'),util[_0x6f29('0x27')](_0xf9fed3,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x6f29('0x28'),'afterCreate',_0x6f29('0x39'),_0x6f29('0x3a'));}break;case _0x6f29('0x3b'):if(_0x28995e['authToken']){var _0x42135a={'recipient':_0x5201d4[_0x6f29('0x1f')],'message':_0x5201d4[_0x6f29('0xc')],'sender':_0x28995e[_0x6f29('0x3c')]||_0x28995e[_0x6f29('0x1f')],'authorization':_0x28995e[_0x6f29('0x1e')]};var _0x533e59={'method':_0x6f29('0x3d'),'uri':_0x6f29('0x3e'),'body':_0x42135a,'json':!![]};rp(_0x533e59)[_0x6f29('0x16')](function(_0x314004){var _0x476090={'messageId':_0x314004[_0x6f29('0x3f')]};if(!_0x28995e['deliveryReport']){_0x476090['read']=!![];}return _0x42773f[_0x6f29('0x17')](_0x476090);})[_0x6f29('0x18')](function(_0x3b23d4){logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x3b'),util['inspect'](_0x3b23d4,{'showHidden':![],'depth':null}));});}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate','connectel',_0x6f29('0x40'));}break;case'clicksend':if(_0x28995e[_0x6f29('0x41')]&&_0x28995e[_0x6f29('0x2b')]){var _0x42135a={'messages':[{'source':_0x6f29('0x42'),'to':_0x5201d4['phone'],'body':_0x5201d4['body'],'from':_0x28995e[_0x6f29('0x3c')]||_0x28995e[_0x6f29('0x1f')]}]};var _0x1ec590=util[_0x6f29('0x43')](_0x6f29('0x44'),_0x28995e[_0x6f29('0x41')],_0x28995e['password']);var _0x533e59={'method':_0x6f29('0x3d'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0x42135a,'headers':{'Authorization':util[_0x6f29('0x43')](_0x6f29('0x45'),new Buffer(_0x1ec590)[_0x6f29('0x46')](_0x6f29('0x47')))},'json':!![]};rp(_0x533e59)[_0x6f29('0x16')](function(_0x2bc09b){if(_0x2bc09b[_0x6f29('0x48')]>=0xc8&&_0x2bc09b[_0x6f29('0x48')]<=0xce){if(_0x2bc09b[_0x6f29('0x49')]&&_0x2bc09b[_0x6f29('0x49')][_0x6f29('0x4a')]>0x0){var _0x3ab5d9=_[_0x6f29('0x4b')](_0x2bc09b[_0x6f29('0x49')]['messages']);var _0x2df2fc={'messageId':_0x3ab5d9[_0x6f29('0x4c')]};if(!_0x28995e['deliveryReport']){_0x2df2fc[_0x6f29('0x38')]=!![];}return _0x42773f[_0x6f29('0x17')](_0x2df2fc);}else{logger[_0x6f29('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6f29('0x26'),_0x6f29('0x4d'),util['inspect'](_0x2bc09b,{'showHidden':![],'depth':null}));}}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x4d'),util[_0x6f29('0x27')](_0x2bc09b,{'showHidden':![],'depth':null}));}})[_0x6f29('0x18')](function(_0x118f6e){logger[_0x6f29('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6f29('0x26'),_0x6f29('0x4d'),util[_0x6f29('0x27')](_0x118f6e,{'showHidden':![],'depth':null}));});}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate',_0x6f29('0x4d'),_0x6f29('0x3a'));}break;case _0x6f29('0x4e'):if(_0x28995e[_0x6f29('0x4f')]&&_0x28995e['authToken']){var _0x42135a={'dst':_0x5201d4[_0x6f29('0x1f')],'text':_0x5201d4[_0x6f29('0xc')],'src':_0x28995e[_0x6f29('0x3c')]||_0x28995e['phone'],'url':_0x28995e[_0x6f29('0x21')]+_0x6f29('0x22')+_0x5201d4['id']+_0x6f29('0x23')+_0x28995e[_0x6f29('0x24')]};var _0x1ec590=util['format'](_0x6f29('0x44'),_0x28995e[_0x6f29('0x4f')],_0x28995e[_0x6f29('0x1e')]);var _0x533e59={'method':_0x6f29('0x3d'),'uri':util[_0x6f29('0x43')](_0x6f29('0x50'),_0x28995e[_0x6f29('0x4f')]),'body':_0x42135a,'headers':{'Authorization':util[_0x6f29('0x43')](_0x6f29('0x45'),new Buffer(_0x1ec590)['toString'](_0x6f29('0x47')))},'json':!![]};rp(_0x533e59)[_0x6f29('0x16')](function(_0x5bf27c){var _0x54c208={'messageId':_0x5bf27c[_0x6f29('0x51')][0x0]};return _0x42773f[_0x6f29('0x17')](_0x54c208);})['catch'](function(_0x9f4c47){logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate',_0x6f29('0x4e'),util[_0x6f29('0x27')](_0x9f4c47,{'showHidden':![],'depth':null}));});}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x4e'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case _0x6f29('0x52'):if(_0x28995e[_0x6f29('0x41')]&&_0x28995e[_0x6f29('0x2b')]){if(_0x28995e[_0x6f29('0x53')]){var _0x5dba6a={'method':_0x6f29('0x3d'),'uri':_0x28995e[_0x6f29('0x53')]+_0x6f29('0x54'),'body':{'username':_0x28995e[_0x6f29('0x41')],'password':_0x28995e['password']},'json':!![]};return rp(_0x5dba6a)[_0x6f29('0x16')](function(_0x145220){var _0x56f730={'method':_0x6f29('0x3d'),'uri':_0x28995e[_0x6f29('0x53')]+_0x6f29('0x55'),'body':{'messages':[{'from':_0x28995e[_0x6f29('0x1f')],'destinations':[{'to':_0x5201d4[_0x6f29('0x1f')]}],'text':_0x5201d4[_0x6f29('0xc')],'notifyUrl':_0x28995e[_0x6f29('0x21')]+'/api/sms/messages/'+_0x5201d4['id']+_0x6f29('0x23')+_0x28995e[_0x6f29('0x24')],'notifyContentType':_0x6f29('0x56'),'callbackData':_0x28995e[_0x6f29('0x1f')]+';'+_0x5201d4[_0x6f29('0xc')]}]},'headers':{'Authorization':_0x6f29('0x57')+_0x145220['token']},'json':!![]};return rp(_0x56f730)[_0x6f29('0x16')](function(_0x406734){if(_0x406734[_0x6f29('0x58')]){var _0x5aa655={'messageId':_0x406734['messages'][0x0][_0x6f29('0xa')]};if(!_0x28995e[_0x6f29('0x37')]){_0x5aa655[_0x6f29('0x38')]=!![];}return _0x42773f[_0x6f29('0x17')](_0x5aa655);}else{return logger[_0x6f29('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6f29('0x26'),_0x6f29('0x52'),util[_0x6f29('0x27')](_0x406734,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x2302c0){return logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x52'),util[_0x6f29('0x27')](_0x2302c0,{'showHidden':![],'depth':null}));});}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate',_0x6f29('0x52'),_0x6f29('0x59'));}}else{logger[_0x6f29('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','infobip',_0x6f29('0x3a'));}break;case _0x6f29('0x5a'):var _0x666fcc=require('crypto');if(_0x28995e[_0x6f29('0x5b')]){var _0x1c555f={};_0x1c555f[_0x6f29('0x5c')]=_0x28995e[_0x6f29('0x41')];_0x1c555f[_0x6f29('0x1f')]=_0x5201d4[_0x6f29('0x1f')];_0x1c555f[_0x6f29('0x2d')]=_0x28995e[_0x6f29('0x1f')];_0x1c555f[_0x6f29('0x5d')]=_0x5201d4[_0x6f29('0xc')];_0x1c555f['timestamp']=+new Date();var _0x21989f='';var _0x53c7a5='';var _0x2b2766=Object[_0x6f29('0x5e')](_0x1c555f);_0x2b2766[_0x6f29('0x5f')]();for(var _0x525a78=0x0;_0x525a78<_0x2b2766[_0x6f29('0x60')];_0x525a78++){if(_0x21989f!=''){_0x21989f+='&';}_0x21989f+=_0x2b2766[_0x525a78]+'='+encodeURIComponent(_0x1c555f[_0x2b2766[_0x525a78]]);_0x53c7a5+=_0x1c555f[_0x2b2766[_0x525a78]];}_0x53c7a5+=_0x28995e[_0x6f29('0x5b')];_0x53c7a5=_0x666fcc[_0x6f29('0x61')](_0x6f29('0x62'))[_0x6f29('0x17')](_0x53c7a5)['digest'](_0x6f29('0x63'));if(_0x21989f!==''){_0x21989f+='&';}_0x21989f+=_0x6f29('0x64')+_0x53c7a5;var _0x5c43b2={'method':_0x6f29('0x30'),'uri':_0x28995e[_0x6f29('0x53')]+_0x6f29('0x65')+_0x21989f,'json':!![]};return rp(_0x5c43b2)[_0x6f29('0x16')](function(_0x422f12){var _0x3f1391=Object[_0x6f29('0x5e')](_0x422f12);if(_0x422f12[_0x3f1391[0x0]][_0x6f29('0x19')]&&parseInt(_0x422f12[_0x3f1391[0x0]][_0x6f29('0x19')])===0x0){var _0x3c1551={'messageId':_0x422f12[_0x3f1391[0x0]][_0x6f29('0x66')]};if(!_0x28995e['deliveryReport']){_0x3c1551[_0x6f29('0x38')]=!![];}return _0x42773f[_0x6f29('0x17')](_0x3c1551);}else{return logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x5a'),util[_0x6f29('0x27')](_0x422f12['error'],{'showHidden':![],'depth':null}));}})[_0x6f29('0x18')](function(_0x3150f9){return logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x5a'),util[_0x6f29('0x27')](_0x3150f9,{'showHidden':![],'depth':null}));});}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x5a'),_0x6f29('0x67'));}break;case'clickatell':if(_0x28995e['apiKey']){var _0x51b4ae={'method':_0x6f29('0x3d'),'uri':_0x6f29('0x68'),'headers':{'Authorization':_0x28995e['apiKey']},'body':{'content':_0x5201d4[_0x6f29('0xc')],'to':[_0x5201d4[_0x6f29('0x1f')]],'from':_0x28995e['phone'],'binary':![],'clientMessageId':'uuid','charset':_0x6f29('0x69')},'json':!![]};rp(_0x51b4ae)[_0x6f29('0x16')](function(_0x4446ca){if(!_0x4446ca[_0x6f29('0x19')]){var _0x21703b={'messageId':_0x4446ca[_0x6f29('0x58')][0x0][_0x6f29('0x6a')]};if(!_0x28995e[_0x6f29('0x37')]){_0x21703b[_0x6f29('0x38')]=!![];}return _0x42773f[_0x6f29('0x17')](_0x21703b);}else{return logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x6b'),util[_0x6f29('0x27')](_0x4446ca['error'],{'showHidden':![],'depth':null}));}})[_0x6f29('0x18')](function(_0x1e503b){return logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),'clickatell',util[_0x6f29('0x27')](_0x1e503b,{'showHidden':![],'depth':null}));});}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x6b'),_0x6f29('0x67'));}break;case _0x6f29('0x6c'):if(_0x28995e[_0x6f29('0x41')]&&_0x28995e[_0x6f29('0x2b')]){var _0x1ec590=util[_0x6f29('0x43')](_0x6f29('0x44'),_0x28995e[_0x6f29('0x41')],_0x28995e[_0x6f29('0x2b')]);var _0x533e59={'method':'POST','uri':_0x6f29('0x6d')+_0x28995e['accountId']+'/messages','body':{'to':[_0x5201d4['phone']],'text':_0x5201d4[_0x6f29('0xc')],'from':_0x28995e[_0x6f29('0x1f')],'applicationId':_0x28995e[_0x6f29('0x6e')]},'headers':{'Authorization':util['format'](_0x6f29('0x45'),new Buffer(_0x1ec590)['toString'](_0x6f29('0x47')))},'json':!![]};rp(_0x533e59)[_0x6f29('0x16')](function(_0x580c8a){if(_0x580c8a['id']){var _0x239ece={'messageId':_0x580c8a['id']};return _0x42773f['update'](_0x239ece);}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate',_0x6f29('0x6c'),util[_0x6f29('0x27')](_0x580c8a,{'showHidden':![],'depth':null}));}})[_0x6f29('0x18')](function(_0x24a678){logger[_0x6f29('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6f29('0x26'),'bandwidth',util[_0x6f29('0x27')](_0x24a678,{'showHidden':![],'depth':null}));});}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate',_0x6f29('0x6c'),_0x6f29('0x3a'));}break;case _0x6f29('0x6f'):if(_0x28995e['apiKey']){var _0x3034db={};var _0x5c43b2={'method':_0x6f29('0x3d'),'uri':_0x6f29('0x70'),'headers':{'Authorization':_0x6f29('0x71')+_0x28995e['apiKey'],'Content-Type':_0x6f29('0x56')},'body':{'from':_0x28995e[_0x6f29('0x1f')],'to':_0x5201d4['phone'],'text':_0x5201d4['body']},'json':!![]};return rp(_0x5c43b2)[_0x6f29('0x16')](function(_0x23b4a4){if(_0x23b4a4[_0x6f29('0x72')]==0xca){_0x3034db[_0x6f29('0x73')]=_0x23b4a4;var _0x583211={'method':_0x6f29('0x3d'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0x6f29('0x71')+_0x28995e['apiKey'],'Content-Type':_0x6f29('0x56')},'body':{'refid':_0x3034db[_0x6f29('0x73')]['refid']},'json':!![]};return rp(_0x583211)[_0x6f29('0x16')](function(_0x48c3f8){_0x3034db[_0x6f29('0x74')]=_0x48c3f8;var _0x5d53f0={'messageId':_0x3034db['message'][_0x6f29('0x75')],'read':!![]};return _0x42773f[_0x6f29('0x17')](_0x5d53f0);});}else{return logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate','intelepeer',util['inspect'](_0x23b4a4,{'showHidden':![],'depth':null}));}})[_0x6f29('0x18')](function(_0xe82f16){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6f29('0x26'),'intelepeer',util[_0x6f29('0x27')](_0xe82f16,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x6f'),_0x6f29('0x76'));}break;}}})[_0x6f29('0x77')](function(){_0x53db5d();});}else{_0x53db5d();}}},'charset':_0x6f29('0x78'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index d7eff79..9ece9b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x822d=['error','code','message','info','result','CreateSmsMessage','SmsMessage','create','body','options','stringify','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','redis','defaults','register','request','then','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s'];(function(_0x21ab1c,_0x42238f){var _0x574989=function(_0x528d85){while(--_0x528d85){_0x21ab1c['push'](_0x21ab1c['shift']());}};_0x574989(++_0x42238f);}(_0x822d,0x123));var _0xd822=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0x822d[_0x5a3cf0];return _0x5a64ee;};'use strict';var _=require(_0xd822('0x0'));var util=require(_0xd822('0x1'));var moment=require(_0xd822('0x2'));var BPromise=require(_0xd822('0x3'));var rs=require(_0xd822('0x4'));var fs=require('fs');var Redis=require(_0xd822('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xd822('0x6'))(_0xd822('0x7'));var config=require(_0xd822('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd822('0x9')]['http']({'port':0x232a});config[_0xd822('0xa')]=_[_0xd822('0xb')](config[_0xd822('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd822('0xa')]));require('./smsMessage.socket')[_0xd822('0xc')](socket);function respondWithRpcPromise(_0x4d9886,_0x286192,_0x5841e5){return new BPromise(function(_0x922307,_0x5178a5){return client[_0xd822('0xd')](_0x4d9886,_0x5841e5)[_0xd822('0xe')](function(_0x2bccf3){logger['info'](_0xd822('0xf'),_0x286192,_0xd822('0x10'));logger[_0xd822('0x11')](_0xd822('0x12'),_0x286192,_0xd822('0x10'),JSON['stringify'](_0x2bccf3));if(_0x2bccf3[_0xd822('0x13')]){if(_0x2bccf3['error'][_0xd822('0x14')]===0x1f4){logger[_0xd822('0x13')](_0xd822('0xf'),_0x286192,_0x2bccf3['error'][_0xd822('0x15')]);return _0x5178a5(_0x2bccf3[_0xd822('0x13')][_0xd822('0x15')]);}logger[_0xd822('0x13')](_0xd822('0xf'),_0x286192,_0x2bccf3[_0xd822('0x13')][_0xd822('0x15')]);return _0x922307(_0x2bccf3[_0xd822('0x13')][_0xd822('0x15')]);}else{logger[_0xd822('0x16')](_0xd822('0xf'),_0x286192,'request\x20sent');_0x922307(_0x2bccf3[_0xd822('0x17')]['message']);}})['catch'](function(_0x21effd){logger[_0xd822('0x13')](_0xd822('0xf'),_0x286192,_0x21effd);_0x5178a5(_0x21effd);});});}exports[_0xd822('0x18')]=function(_0x5918fa){var _0x64071=this;return new Promise(function(_0x5d1e71,_0x5193b9){return db[_0xd822('0x19')][_0xd822('0x1a')](_0x5918fa[_0xd822('0x1b')],{'raw':_0x5918fa[_0xd822('0x1c')]?_0x5918fa[_0xd822('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x4bf6de){logger['info']('CreateSmsMessage',_0x5918fa);logger[_0xd822('0x11')](_0xd822('0x18'),_0x5918fa,JSON[_0xd822('0x1d')](_0x4bf6de));_0x5d1e71(_0x4bf6de);})[_0xd822('0x1e')](function(_0x45005e){logger['error'](_0xd822('0x18'),_0x45005e[_0xd822('0x15')],_0x5918fa);_0x5193b9(_0x64071[_0xd822('0x13')](0x1f4,_0x45005e[_0xd822('0x15')]));});});};
\ No newline at end of file
+var _0x2526=['info','request\x20sent','debug','stringify','error','code','message','SmsMessage,\x20%s,\x20%s','result','CreateSmsMessage','SmsMessage','create','body','options','raw','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','register','then'];(function(_0x495476,_0x199f0a){var _0x5c9a77=function(_0x31a863){while(--_0x31a863){_0x495476['push'](_0x495476['shift']());}};_0x5c9a77(++_0x199f0a);}(_0x2526,0x98));var _0x6252=function(_0x54c419,_0x3bee42){_0x54c419=_0x54c419-0x0;var _0x1fd72c=_0x2526[_0x54c419];return _0x1fd72c;};'use strict';var _=require(_0x6252('0x0'));var util=require(_0x6252('0x1'));var moment=require(_0x6252('0x2'));var BPromise=require(_0x6252('0x3'));var rs=require(_0x6252('0x4'));var fs=require('fs');var Redis=require(_0x6252('0x5'));var db=require(_0x6252('0x6'))['db'];var utils=require(_0x6252('0x7'));var logger=require(_0x6252('0x8'))(_0x6252('0x9'));var config=require(_0x6252('0xa'));var jayson=require(_0x6252('0xb'));var client=jayson[_0x6252('0xc')][_0x6252('0xd')]({'port':0x232a});config['redis']=_[_0x6252('0xe')](config['redis'],{'host':_0x6252('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./smsMessage.socket')[_0x6252('0x10')](socket);function respondWithRpcPromise(_0x105728,_0x30cd47,_0x19883){return new BPromise(function(_0x1ab0e7,_0x35955a){return client['request'](_0x105728,_0x19883)[_0x6252('0x11')](function(_0x10cc26){logger[_0x6252('0x12')]('SmsMessage,\x20%s,\x20%s',_0x30cd47,_0x6252('0x13'));logger[_0x6252('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x30cd47,'request\x20sent',JSON[_0x6252('0x15')](_0x10cc26));if(_0x10cc26[_0x6252('0x16')]){if(_0x10cc26[_0x6252('0x16')][_0x6252('0x17')]===0x1f4){logger[_0x6252('0x16')]('SmsMessage,\x20%s,\x20%s',_0x30cd47,_0x10cc26[_0x6252('0x16')][_0x6252('0x18')]);return _0x35955a(_0x10cc26[_0x6252('0x16')][_0x6252('0x18')]);}logger['error'](_0x6252('0x19'),_0x30cd47,_0x10cc26[_0x6252('0x16')][_0x6252('0x18')]);return _0x1ab0e7(_0x10cc26['error'][_0x6252('0x18')]);}else{logger[_0x6252('0x12')](_0x6252('0x19'),_0x30cd47,_0x6252('0x13'));_0x1ab0e7(_0x10cc26[_0x6252('0x1a')][_0x6252('0x18')]);}})['catch'](function(_0x4e969a){logger[_0x6252('0x16')](_0x6252('0x19'),_0x30cd47,_0x4e969a);_0x35955a(_0x4e969a);});});}exports[_0x6252('0x1b')]=function(_0x331786){var _0x20989b=this;return new Promise(function(_0x4c00be,_0x4cda38){return db[_0x6252('0x1c')][_0x6252('0x1d')](_0x331786[_0x6252('0x1e')],{'raw':_0x331786[_0x6252('0x1f')]?_0x331786['options'][_0x6252('0x20')]===undefined?!![]:![]:!![]})[_0x6252('0x11')](function(_0x537da9){logger[_0x6252('0x12')](_0x6252('0x1b'),_0x331786);logger[_0x6252('0x14')](_0x6252('0x1b'),_0x331786,JSON[_0x6252('0x15')](_0x537da9));_0x4c00be(_0x537da9);})[_0x6252('0x21')](function(_0x4e442a){logger[_0x6252('0x16')](_0x6252('0x1b'),_0x4e442a[_0x6252('0x18')],_0x331786);_0x4cda38(_0x20989b[_0x6252('0x16')](0x1f4,_0x4e442a[_0x6252('0x18')]));});});};
\ No newline at end of file
index f29d4a3..bf2cd14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba4b=['emit','removeListener','register','./smsMessage.events','save','update'];(function(_0x1f83a5,_0x59843f){var _0x45edf0=function(_0x431e25){while(--_0x431e25){_0x1f83a5['push'](_0x1f83a5['shift']());}};_0x45edf0(++_0x59843f);}(_0xba4b,0x18f));var _0xbba4=function(_0x2878ea,_0x428929){_0x2878ea=_0x2878ea-0x0;var _0x36a70d=_0xba4b[_0x2878ea];return _0x36a70d;};'use strict';var SmsMessageEvents=require(_0xbba4('0x0'));var events=[_0xbba4('0x1'),'remove',_0xbba4('0x2')];function createListener(_0x3f1b65,_0x19da40){return function(_0x17677b){_0x19da40[_0xbba4('0x3')](_0x3f1b65,_0x17677b);};}function removeListener(_0x53796e,_0x291fd5){return function(){SmsMessageEvents[_0xbba4('0x4')](_0x53796e,_0x291fd5);};}exports[_0xbba4('0x5')]=function(_0x8508e8){for(var _0x1c3259=0x0,_0x8304c1=events['length'];_0x1c3259<_0x8304c1;_0x1c3259++){var _0x29d6c6=events[_0x1c3259];var _0x3571c7=createListener('smsMessage:'+_0x29d6c6,_0x8508e8);SmsMessageEvents['on'](_0x29d6c6,_0x3571c7);}};
\ No newline at end of file
+var _0x1f38=['update','emit','removeListener','register','length','smsMessage:','save','remove'];(function(_0x35b18a,_0x6b2fbe){var _0x4db1bd=function(_0x389e62){while(--_0x389e62){_0x35b18a['push'](_0x35b18a['shift']());}};_0x4db1bd(++_0x6b2fbe);}(_0x1f38,0x96));var _0x81f3=function(_0x584528,_0xa9e2ef){_0x584528=_0x584528-0x0;var _0x369f6f=_0x1f38[_0x584528];return _0x369f6f;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=[_0x81f3('0x0'),_0x81f3('0x1'),_0x81f3('0x2')];function createListener(_0xb47f06,_0x68bd62){return function(_0x79c8af){_0x68bd62[_0x81f3('0x3')](_0xb47f06,_0x79c8af);};}function removeListener(_0x56153c,_0x4efe47){return function(){SmsMessageEvents[_0x81f3('0x4')](_0x56153c,_0x4efe47);};}exports[_0x81f3('0x5')]=function(_0x2d1a58){for(var _0x3096b2=0x0,_0x5651e1=events[_0x81f3('0x6')];_0x3096b2<_0x5651e1;_0x3096b2++){var _0x3d8337=events[_0x3096b2];var _0x3d1193=createListener(_0x81f3('0x7')+_0x3d8337,_0x2d1a58);SmsMessageEvents['on'](_0x3d8337,_0x3d1193);}};
\ No newline at end of file
index 1dfc1fd..7056f7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd419=['removeAgents','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id/members','getMembers','post','create','/:id/teams','addTeams','/:id/users','/:id','delete','destroy','removeTeams'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xd419,0x1a4));var _0x9d41=function(_0x72d656,_0x85ae0d){_0x72d656=_0x72d656-0x0;var _0x1f44d4=_0xd419[_0x72d656];return _0x1f44d4;};'use strict';var multer=require('multer');var util=require(_0x9d41('0x0'));var path=require(_0x9d41('0x1'));var timeout=require(_0x9d41('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x9d41('0x3'));var auth=require(_0x9d41('0x4'));var interaction=require(_0x9d41('0x5'));var config=require('../../config/environment');var controller=require('./smsQueue.controller');router[_0x9d41('0x6')]('/',auth[_0x9d41('0x7')](),controller[_0x9d41('0x8')]);router[_0x9d41('0x6')]('/describe',auth[_0x9d41('0x7')](),controller['describe']);router[_0x9d41('0x6')]('/:id',auth[_0x9d41('0x7')](),controller['show']);router[_0x9d41('0x6')](_0x9d41('0x9'),auth['isAuthenticated'](),controller[_0x9d41('0xa')]);router['get']('/:id/teams',auth['isAuthenticated'](),controller['getTeams']);router[_0x9d41('0x6')]('/:id/users',auth[_0x9d41('0x7')](),controller['getAgents']);router[_0x9d41('0xb')]('/',auth[_0x9d41('0x7')](),controller[_0x9d41('0xc')]);router[_0x9d41('0xb')](_0x9d41('0xd'),auth[_0x9d41('0x7')](),controller[_0x9d41('0xe')]);router[_0x9d41('0xb')](_0x9d41('0xf'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0x9d41('0x10'),auth[_0x9d41('0x7')](),controller['update']);router[_0x9d41('0x11')](_0x9d41('0x10'),auth['isAuthenticated'](),controller[_0x9d41('0x12')]);router['delete'](_0x9d41('0xd'),auth['isAuthenticated'](),controller[_0x9d41('0x13')]);router['delete']('/:id/users',auth[_0x9d41('0x7')](),controller[_0x9d41('0x14')]);module[_0x9d41('0x15')]=router;
\ No newline at end of file
+var _0x8584=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','/:id','show','/:id/members','getMembers','getTeams','/:id/users','post','create','/:id/teams','addAgents','destroy','delete','removeTeams','removeAgents','exports'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x8584,0x16c));var _0x4858=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x8584[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require('multer');var util=require(_0x4858('0x0'));var path=require(_0x4858('0x1'));var timeout=require(_0x4858('0x2'));var express=require(_0x4858('0x3'));var router=express[_0x4858('0x4')]();var fs_extra=require(_0x4858('0x5'));var auth=require(_0x4858('0x6'));var interaction=require(_0x4858('0x7'));var config=require(_0x4858('0x8'));var controller=require(_0x4858('0x9'));router[_0x4858('0xa')]('/',auth[_0x4858('0xb')](),controller[_0x4858('0xc')]);router[_0x4858('0xa')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x4858('0xa')](_0x4858('0xd'),auth[_0x4858('0xb')](),controller[_0x4858('0xe')]);router[_0x4858('0xa')](_0x4858('0xf'),auth[_0x4858('0xb')](),controller[_0x4858('0x10')]);router['get']('/:id/teams',auth[_0x4858('0xb')](),controller[_0x4858('0x11')]);router[_0x4858('0xa')](_0x4858('0x12'),auth[_0x4858('0xb')](),controller['getAgents']);router[_0x4858('0x13')]('/',auth[_0x4858('0xb')](),controller[_0x4858('0x14')]);router[_0x4858('0x13')](_0x4858('0x15'),auth[_0x4858('0xb')](),controller['addTeams']);router['post'](_0x4858('0x12'),auth['isAuthenticated'](),controller[_0x4858('0x16')]);router['put'](_0x4858('0xd'),auth[_0x4858('0xb')](),controller['update']);router['delete'](_0x4858('0xd'),auth[_0x4858('0xb')](),controller[_0x4858('0x17')]);router[_0x4858('0x18')](_0x4858('0x15'),auth[_0x4858('0xb')](),controller[_0x4858('0x19')]);router[_0x4858('0x18')](_0x4858('0x12'),auth[_0x4858('0xb')](),controller[_0x4858('0x1a')]);module[_0x4858('0x1b')]=router;
\ No newline at end of file
index 6f3c1a7..1519017 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45ec=['beepall','sequelize','STRING','INTEGER','ENUM','rrmemory'];(function(_0x43c765,_0x581beb){var _0x2d8795=function(_0x263b1d){while(--_0x263b1d){_0x43c765['push'](_0x43c765['shift']());}};_0x2d8795(++_0x581beb);}(_0x45ec,0x139));var _0xc45e=function(_0x14f8d3,_0x170ff5){_0x14f8d3=_0x14f8d3-0x0;var _0x37dfed=_0x45ec[_0x14f8d3];return _0x37dfed;};'use strict';var Sequelize=require(_0xc45e('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xc45e('0x1')]},'timeout':{'type':Sequelize[_0xc45e('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xc45e('0x3')](_0xc45e('0x4'),_0xc45e('0x5'),'roundrobin')}};
\ No newline at end of file
+var _0xcd6a=['beepall','roundrobin','sequelize','exports','STRING','name','ENUM','rrmemory'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0xcd6a,0x12a));var _0xacd6=function(_0x1557c,_0x3c4b95){_0x1557c=_0x1557c-0x0;var _0x54f07a=_0xcd6a[_0x1557c];return _0x54f07a;};'use strict';var Sequelize=require(_0xacd6('0x0'));module[_0xacd6('0x1')]={'name':{'type':Sequelize[_0xacd6('0x2')],'unique':_0xacd6('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xacd6('0x4')](_0xacd6('0x5'),_0xacd6('0x6'),_0xacd6('0x7'))}};
\ No newline at end of file
index 99317f1..ef4c933 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadbb=['TeamId','includes','all','union','emit','userSmsQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','eml-format','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/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./smsQueue.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','then','destroy','get','SmsQueues','stack','name','send','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','SmsQueue','includeAll','include','findAll','catch','show','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserSmsQueue','nolimit','pick','SmsQueueId','User','agent','smsPause','updatedAt','createdAt','rows','format','%s/%s','getTeams','addTeams','ids','Team','Agents','online','voicePause','flatMap','sequelize','transaction','each','findOrCreate','forEach','userSmsQueue:save','removeTeams','select','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','push','toString','QueryTypes','SELECT','every'];(function(_0x40430e,_0x43e827){var _0x13e204=function(_0x597378){while(--_0x597378){_0x40430e['push'](_0x40430e['shift']());}};_0x13e204(++_0x43e827);}(_0xadbb,0x97));var _0xbadb=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xadbb[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0xbadb('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xbadb('0x1'));var rp=require(_0xbadb('0x2'));var moment=require(_0xbadb('0x3'));var BPromise=require(_0xbadb('0x4'));var Mustache=require(_0xbadb('0x5'));var util=require(_0xbadb('0x6'));var path=require(_0xbadb('0x7'));var sox=require(_0xbadb('0x8'));var csv=require(_0xbadb('0x9'));var ejs=require(_0xbadb('0xa'));var fs=require('fs');var fs_extra=require(_0xbadb('0xb'));var _=require(_0xbadb('0xc'));var squel=require(_0xbadb('0xd'));var crypto=require(_0xbadb('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xbadb('0xf'));var toCsv=require(_0xbadb('0x9'));var querystring=require(_0xbadb('0x10'));var Papa=require('papaparse');var Redis=require(_0xbadb('0x11'));var authService=require(_0xbadb('0x12'));var qs=require(_0xbadb('0x13'));var as=require(_0xbadb('0x14'));var hardwareService=require(_0xbadb('0x15'));var logger=require(_0xbadb('0x16'))('api');var utils=require('../../config/utils');var config=require(_0xbadb('0x17'));var licenseUtil=require(_0xbadb('0x18'));var db=require(_0xbadb('0x19'))['db'];config[_0xbadb('0x1a')]=_['defaults'](config[_0xbadb('0x1a')],{'host':_0xbadb('0x1b'),'port':0x18eb});var socket=require(_0xbadb('0x1c'))(new Redis(config[_0xbadb('0x1a')]));require(_0xbadb('0x1d'))[_0xbadb('0x1e')](socket);function respondWithStatusCode(_0x29a203,_0xc8f5f8){_0xc8f5f8=_0xc8f5f8||0xcc;return function(_0x49a120){if(_0x49a120){return _0x29a203[_0xbadb('0x1f')](_0xc8f5f8);}return _0x29a203[_0xbadb('0x20')](_0xc8f5f8)[_0xbadb('0x21')]();};}function respondWithResult(_0x420b7f,_0x2d48ca){_0x2d48ca=_0x2d48ca||0xc8;return function(_0x5d3196){if(_0x5d3196){return _0x420b7f[_0xbadb('0x20')](_0x2d48ca)[_0xbadb('0x22')](_0x5d3196);}};}function respondWithFilteredResult(_0x29f175,_0x3d05f7){return function(_0x5ae0c6){if(_0x5ae0c6){var _0x505c85=typeof _0x3d05f7[_0xbadb('0x23')]===_0xbadb('0x24')&&typeof _0x3d05f7['limit']===_0xbadb('0x24');var _0x54e7a0=_0x5ae0c6[_0xbadb('0x25')];var _0x59dad6=_0x505c85?0x0:_0x3d05f7[_0xbadb('0x23')];var _0x5353f0=_0x505c85?_0x5ae0c6[_0xbadb('0x25')]:_0x3d05f7[_0xbadb('0x23')]+_0x3d05f7[_0xbadb('0x26')];var _0x293c35;if(_0x5353f0>=_0x54e7a0){_0x5353f0=_0x54e7a0;_0x293c35=0xc8;}else{_0x293c35=0xce;}_0x29f175[_0xbadb('0x20')](_0x293c35);return _0x29f175['set'](_0xbadb('0x27'),_0x59dad6+'-'+_0x5353f0+'/'+_0x54e7a0)[_0xbadb('0x22')](_0x5ae0c6);}return null;};}function patchUpdates(_0x499bae){return function(_0x2cb573){try{jsonpatch[_0xbadb('0x28')](_0x2cb573,_0x499bae,!![]);}catch(_0x860092){return BPromise[_0xbadb('0x29')](_0x860092);}return _0x2cb573['save']();};}function saveUpdates(_0x38f1a5,_0x40c48e){return function(_0x55ca50){if(_0x55ca50){return _0x55ca50['update'](_0x38f1a5)[_0xbadb('0x2a')](function(_0xd68974){return _0xd68974;});}return null;};}function removeEntity(_0x1bb142,_0x5434a4){return function(_0x83b19a){if(_0x83b19a){return _0x83b19a[_0xbadb('0x2b')]()[_0xbadb('0x2a')](function(){var _0x1f54f9=_0x83b19a[_0xbadb('0x2c')]({'plain':!![]});var _0x1564bf=_0xbadb('0x2d');return db['UserProfileResource'][_0xbadb('0x2b')]({'where':{'type':_0x1564bf,'resourceId':_0x1f54f9['id']}})[_0xbadb('0x2a')](function(){return _0x83b19a;});})[_0xbadb('0x2a')](function(){_0x1bb142[_0xbadb('0x20')](0xcc)[_0xbadb('0x21')]();});}};}function handleEntityNotFound(_0x3b0da7,_0x7db56b){return function(_0x14aa64){if(!_0x14aa64){_0x3b0da7[_0xbadb('0x1f')](0x194);}return _0x14aa64;};}function handleError(_0x1313a2,_0x1527ba){_0x1527ba=_0x1527ba||0x1f4;return function(_0x21e2eb){logger['error'](_0x21e2eb[_0xbadb('0x2e')]);if(_0x21e2eb[_0xbadb('0x2f')]){delete _0x21e2eb[_0xbadb('0x2f')];}_0x1313a2['status'](_0x1527ba)[_0xbadb('0x30')](_0x21e2eb);};}exports['index']=function(_0xc37272,_0x1f7738){var _0x549d64={},_0x19d143={},_0x2a7be7={'count':0x0,'rows':[]};var _0x4ec8b3=_[_0xbadb('0x31')](db['SmsQueue'][_0xbadb('0x32')],function(_0x3e4a28){return{'name':_0x3e4a28['fieldName'],'type':_0x3e4a28[_0xbadb('0x33')][_0xbadb('0x34')]};});_0x19d143[_0xbadb('0x35')]=_[_0xbadb('0x31')](_0x4ec8b3,_0xbadb('0x2f'));_0x19d143[_0xbadb('0x36')]=_[_0xbadb('0x37')](_0xc37272[_0xbadb('0x36')]);_0x19d143[_0xbadb('0x38')]=_[_0xbadb('0x39')](_0x19d143[_0xbadb('0x35')],_0x19d143['query']);_0x549d64[_0xbadb('0x3a')]=_['intersection'](_0x19d143['model'],qs['fields'](_0xc37272[_0xbadb('0x36')][_0xbadb('0x3b')]));_0x549d64[_0xbadb('0x3a')]=_0x549d64['attributes']['length']?_0x549d64['attributes']:_0x19d143[_0xbadb('0x35')];if(!_0xc37272['query'][_0xbadb('0x3c')]('nolimit')){_0x549d64[_0xbadb('0x26')]=qs[_0xbadb('0x26')](_0xc37272['query'][_0xbadb('0x26')]);_0x549d64['offset']=qs[_0xbadb('0x23')](_0xc37272[_0xbadb('0x36')][_0xbadb('0x23')]);}_0x549d64[_0xbadb('0x3d')]=qs[_0xbadb('0x3e')](_0xc37272[_0xbadb('0x36')][_0xbadb('0x3e')]);_0x549d64[_0xbadb('0x3f')]=qs[_0xbadb('0x38')](_['pick'](_0xc37272['query'],_0x19d143[_0xbadb('0x38')]),_0x4ec8b3);if(_0xc37272[_0xbadb('0x36')]['filter']){_0x549d64[_0xbadb('0x3f')]=_[_0xbadb('0x40')](_0x549d64['where'],{'$or':_[_0xbadb('0x31')](_0x4ec8b3,function(_0x47d7d6){if(_0x47d7d6[_0xbadb('0x33')]!==_0xbadb('0x41')){var _0x1f68d9={};_0x1f68d9[_0x47d7d6[_0xbadb('0x2f')]]={'$like':'%'+_0xc37272['query'][_0xbadb('0x42')]+'%'};return _0x1f68d9;}})});}_0x549d64=_[_0xbadb('0x40')]({},_0x549d64,_0xc37272[_0xbadb('0x43')]);var _0x2e5a74={'where':_0x549d64[_0xbadb('0x3f')]};return db[_0xbadb('0x44')][_0xbadb('0x25')](_0x2e5a74)['then'](function(_0x4d5aaa){_0x2a7be7[_0xbadb('0x25')]=_0x4d5aaa;if(_0xc37272[_0xbadb('0x36')][_0xbadb('0x45')]){_0x549d64[_0xbadb('0x46')]=[{'all':!![]}];}return db[_0xbadb('0x44')][_0xbadb('0x47')](_0x549d64);})[_0xbadb('0x2a')](function(_0x249333){_0x2a7be7['rows']=_0x249333;return _0x2a7be7;})[_0xbadb('0x2a')](respondWithFilteredResult(_0x1f7738,_0x549d64))[_0xbadb('0x48')](handleError(_0x1f7738,null));};exports[_0xbadb('0x49')]=function(_0x210e2d,_0x2defe5){var _0x3d83fa={'raw':!![],'where':{'id':_0x210e2d[_0xbadb('0x4a')]['id']}},_0x3e1e04={};_0x3e1e04[_0xbadb('0x35')]=_[_0xbadb('0x37')](db[_0xbadb('0x44')][_0xbadb('0x32')]);_0x3e1e04[_0xbadb('0x36')]=_[_0xbadb('0x37')](_0x210e2d[_0xbadb('0x36')]);_0x3e1e04[_0xbadb('0x38')]=_[_0xbadb('0x39')](_0x3e1e04[_0xbadb('0x35')],_0x3e1e04[_0xbadb('0x36')]);_0x3d83fa[_0xbadb('0x3a')]=_['intersection'](_0x3e1e04[_0xbadb('0x35')],qs[_0xbadb('0x3b')](_0x210e2d[_0xbadb('0x36')][_0xbadb('0x3b')]));_0x3d83fa['attributes']=_0x3d83fa['attributes'][_0xbadb('0x4b')]?_0x3d83fa['attributes']:_0x3e1e04[_0xbadb('0x35')];if(_0x210e2d[_0xbadb('0x36')][_0xbadb('0x45')]){_0x3d83fa[_0xbadb('0x46')]=[{'all':!![]}];}_0x3d83fa=_[_0xbadb('0x40')]({},_0x3d83fa,_0x210e2d['options']);return db[_0xbadb('0x44')][_0xbadb('0x4c')](_0x3d83fa)['then'](handleEntityNotFound(_0x2defe5,null))['then'](respondWithResult(_0x2defe5,null))[_0xbadb('0x48')](handleError(_0x2defe5,null));};exports[_0xbadb('0x4d')]=function(_0x466cf3,_0x2e9582){return db[_0xbadb('0x44')][_0xbadb('0x4d')](_0x466cf3[_0xbadb('0x4e')],{})[_0xbadb('0x2a')](function(_0x2906e3){var _0x56a685=_0x466cf3[_0xbadb('0x4f')][_0xbadb('0x2c')]({'plain':!![]});if(!_0x56a685)throw new Error(_0xbadb('0x50'));if(_0x56a685[_0xbadb('0x51')]===_0xbadb('0x4f')){var _0x1f8f71=_0x2906e3[_0xbadb('0x2c')]({'plain':!![]});var _0x468f54=_0xbadb('0x2d');return db['UserProfileSection'][_0xbadb('0x4c')]({'where':{'name':_0x468f54,'userProfileId':_0x56a685[_0xbadb('0x52')]},'raw':!![]})['then'](function(_0x354eac){if(_0x354eac&&_0x354eac[_0xbadb('0x53')]===0x0){return db[_0xbadb('0x54')][_0xbadb('0x4d')]({'name':_0x1f8f71[_0xbadb('0x2f')],'resourceId':_0x1f8f71['id'],'type':_0x354eac['name'],'sectionId':_0x354eac['id']},{})[_0xbadb('0x2a')](function(){return _0x2906e3;});}else{return _0x2906e3;}})['catch'](function(_0xe13ba7){logger['error'](_0xbadb('0x55'),_0xe13ba7);throw _0xe13ba7;});}return _0x2906e3;})[_0xbadb('0x2a')](respondWithResult(_0x2e9582,0xc9))[_0xbadb('0x48')](handleError(_0x2e9582,null));};exports['update']=function(_0x10d486,_0x2216ab){if(_0x10d486[_0xbadb('0x4e')]['id']){delete _0x10d486[_0xbadb('0x4e')]['id'];}return db[_0xbadb('0x44')][_0xbadb('0x4c')]({'where':{'id':_0x10d486[_0xbadb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2216ab,null))[_0xbadb('0x2a')](saveUpdates(_0x10d486[_0xbadb('0x4e')],null))[_0xbadb('0x2a')](respondWithResult(_0x2216ab,null))[_0xbadb('0x48')](handleError(_0x2216ab,null));};exports[_0xbadb('0x2b')]=function(_0x372332,_0x5a8a18){return db[_0xbadb('0x44')][_0xbadb('0x4c')]({'where':{'id':_0x372332[_0xbadb('0x4a')]['id']}})[_0xbadb('0x2a')](handleEntityNotFound(_0x5a8a18,null))['then'](removeEntity(_0x5a8a18,null))[_0xbadb('0x48')](handleError(_0x5a8a18,null));};exports['describe']=function(_0x37b369,_0x2adf54){return db['SmsQueue'][_0xbadb('0x56')]()[_0xbadb('0x2a')](respondWithResult(_0x2adf54,null))[_0xbadb('0x48')](handleError(_0x2adf54,null));};exports[_0xbadb('0x57')]=function(_0x39c3e6,_0x2bfe03,_0x40a49a){var _0x156a21={'raw':!![],'where':{}},_0xcb8e54={},_0x41f4e5;return db['SmsQueue'][_0xbadb('0x58')]({'where':{'id':_0x39c3e6['params']['id']}})['then'](handleEntityNotFound(_0x2bfe03,null))['then'](function(_0x233114){if(_0x233114){_0x41f4e5=_0x233114[_0xbadb('0x2c')]({'plain':!![]});_0xcb8e54['model']=_[_0xbadb('0x37')](db[_0xbadb('0x59')][_0xbadb('0x32')]);_0xcb8e54[_0xbadb('0x36')]=_[_0xbadb('0x37')](_0x39c3e6['query']);_0xcb8e54[_0xbadb('0x38')]=_[_0xbadb('0x39')](_0xcb8e54['model'],_0xcb8e54[_0xbadb('0x36')]);_0x156a21['attributes']=_['intersection'](_0xcb8e54[_0xbadb('0x35')],qs[_0xbadb('0x3b')](_0x39c3e6[_0xbadb('0x36')]['fields']));_0x156a21['attributes']=_0x156a21['attributes'][_0xbadb('0x4b')]?_0x156a21[_0xbadb('0x3a')]:_0xcb8e54[_0xbadb('0x35')];if(!_0x39c3e6[_0xbadb('0x36')]['hasOwnProperty'](_0xbadb('0x5a'))){_0x156a21['limit']=qs[_0xbadb('0x26')](_0x39c3e6[_0xbadb('0x36')][_0xbadb('0x26')]);_0x156a21[_0xbadb('0x23')]=qs[_0xbadb('0x23')](_0x39c3e6[_0xbadb('0x36')][_0xbadb('0x23')]);}_0x156a21[_0xbadb('0x3d')]=qs['sort'](_0x39c3e6[_0xbadb('0x36')][_0xbadb('0x3e')]);_0x156a21[_0xbadb('0x3f')]=qs[_0xbadb('0x38')](_[_0xbadb('0x5b')](_0x39c3e6[_0xbadb('0x36')],_0xcb8e54['filters']));_0x156a21[_0xbadb('0x3f')][_0xbadb('0x5c')]=_0x233114['id'];if(_0x39c3e6[_0xbadb('0x36')][_0xbadb('0x42')]){_0x156a21[_0xbadb('0x3f')]=_[_0xbadb('0x40')](_0x156a21[_0xbadb('0x3f')],{'$or':_[_0xbadb('0x31')](_0x156a21[_0xbadb('0x3a')],function(_0x25bc82){var _0x3ae9ca={};_0x3ae9ca[_0x25bc82]={'$like':'%'+_0x39c3e6[_0xbadb('0x36')][_0xbadb('0x42')]+'%'};return _0x3ae9ca;})});}_0x156a21=_[_0xbadb('0x40')]({},_0x156a21,_0x39c3e6['options']);return db['UserSmsQueue'][_0xbadb('0x47')](_0x156a21);}})[_0xbadb('0x2a')](function(_0x10b7f5){if(_0x10b7f5){return db[_0xbadb('0x5d')]['findAndCountAll']({'where':{'id':_[_0xbadb('0x31')](_0x10b7f5,'UserId'),'role':_0xbadb('0x5e')},'attributes':['id','name',_0xbadb('0x5f'),_0xbadb('0x60'),_0xbadb('0x61')]});}})[_0xbadb('0x2a')](function(_0x12029a){if(_0x12029a){return{'count':_0x12029a[_0xbadb('0x25')],'rows':_[_0xbadb('0x31')](_0x12029a[_0xbadb('0x62')],function(_0xc9acd6){return{'membername':_0xc9acd6[_0xbadb('0x2f')],'UserId':_0xc9acd6['id'],'queue_name':_0x41f4e5[_0xbadb('0x2f')],'SmsQueueId':_0x41f4e5['id'],'interface':util[_0xbadb('0x63')](_0xbadb('0x64'),'SIP',_0xc9acd6[_0xbadb('0x2f')]),'penalty':0x0,'paused':_0xc9acd6[_0xbadb('0x5f')],'createdAt':_0xc9acd6['createdAt'],'updatedAt':_0xc9acd6[_0xbadb('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xbadb('0x2a')](respondWithFilteredResult(_0x2bfe03,_0x156a21))[_0xbadb('0x48')](handleError(_0x2bfe03,null));};exports[_0xbadb('0x65')]=function(_0x35b3a8,_0x464034,_0x39df29){var _0x162188={};var _0x23ad85={};var _0xfbbe63;var _0x4f6943;return db[_0xbadb('0x44')][_0xbadb('0x58')]({'where':{'id':_0x35b3a8[_0xbadb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x464034,null))[_0xbadb('0x2a')](function(_0x299472){if(_0x299472){_0xfbbe63=_0x299472;_0x23ad85[_0xbadb('0x35')]=_['keys'](db['Team']['rawAttributes']);_0x23ad85[_0xbadb('0x36')]=_[_0xbadb('0x37')](_0x35b3a8['query']);_0x23ad85[_0xbadb('0x38')]=_['intersection'](_0x23ad85[_0xbadb('0x35')],_0x23ad85['query']);_0x162188[_0xbadb('0x3a')]=_[_0xbadb('0x39')](_0x23ad85['model'],qs[_0xbadb('0x3b')](_0x35b3a8['query'][_0xbadb('0x3b')]));_0x162188[_0xbadb('0x3a')]=_0x162188[_0xbadb('0x3a')][_0xbadb('0x4b')]?_0x162188[_0xbadb('0x3a')]:_0x23ad85[_0xbadb('0x35')];_0x162188[_0xbadb('0x3d')]=qs[_0xbadb('0x3e')](_0x35b3a8[_0xbadb('0x36')][_0xbadb('0x3e')]);_0x162188[_0xbadb('0x3f')]=qs[_0xbadb('0x38')](_[_0xbadb('0x5b')](_0x35b3a8[_0xbadb('0x36')],_0x23ad85['filters']));if(_0x35b3a8[_0xbadb('0x36')][_0xbadb('0x42')]){_0x162188[_0xbadb('0x3f')]=_[_0xbadb('0x40')](_0x162188[_0xbadb('0x3f')],{'$or':_[_0xbadb('0x31')](_0x162188[_0xbadb('0x3a')],function(_0x3d761f){var _0x20dbfd={};_0x20dbfd[_0x3d761f]={'$like':'%'+_0x35b3a8['query'][_0xbadb('0x42')]+'%'};return _0x20dbfd;})});}_0x162188=_[_0xbadb('0x40')]({},_0x162188,_0x35b3a8[_0xbadb('0x43')]);return _0xfbbe63[_0xbadb('0x65')](_0x162188);}})['then'](function(_0x1a0919){if(_0x1a0919){_0x4f6943=_0x1a0919[_0xbadb('0x4b')];if(!_0x35b3a8[_0xbadb('0x36')][_0xbadb('0x3c')](_0xbadb('0x5a'))){_0x162188[_0xbadb('0x26')]=qs[_0xbadb('0x26')](_0x35b3a8['query'][_0xbadb('0x26')]);_0x162188[_0xbadb('0x23')]=qs[_0xbadb('0x23')](_0x35b3a8[_0xbadb('0x36')][_0xbadb('0x23')]);}return _0xfbbe63[_0xbadb('0x65')](_0x162188);}})[_0xbadb('0x2a')](function(_0x798c33){if(_0x798c33){return _0x798c33?{'count':_0x4f6943,'rows':_0x798c33}:null;}})[_0xbadb('0x2a')](respondWithResult(_0x464034,null))[_0xbadb('0x48')](handleError(_0x464034,null));};exports[_0xbadb('0x66')]=function(_0xc8dca8,_0x3510ee,_0x21e674){var _0x39fe70=_0xc8dca8['body'][_0xbadb('0x67')];return db[_0xbadb('0x68')][_0xbadb('0x47')]({'where':{'id':_0x39fe70},'attributes':['id'],'include':[{'model':db[_0xbadb('0x5d')],'as':_0xbadb('0x69'),'attributes':['id','name',_0xbadb('0x6a'),_0xbadb('0x6b'),'interface'],'raw':!![]}]})[_0xbadb('0x2a')](function(_0x56b2ea){if(_0x56b2ea){var _0x3c5fb7=_[_0xbadb('0x6c')](_0x56b2ea,function(_0x55d13e){var _0x3d0dfe=_0x55d13e[_0xbadb('0x2c')]({'plain':!![]});return _0x3d0dfe[_0xbadb('0x69')];});return db[_0xbadb('0x44')]['find']({'where':{'id':_0xc8dca8[_0xbadb('0x4a')]['id']}})[_0xbadb('0x2a')](function(_0x298699){return db[_0xbadb('0x6d')][_0xbadb('0x6e')](function(_0x5a788b){return _0x298699[_0xbadb('0x66')](_0x39fe70,{'transaction':_0x5a788b})[_0xbadb('0x2a')](function(){return BPromise[_0xbadb('0x6f')](_0x3c5fb7,function(_0x40f1f8){return db[_0xbadb('0x59')][_0xbadb('0x70')]({'where':{'UserId':_0x40f1f8['id'],'SmsQueueId':_0xc8dca8[_0xbadb('0x4a')]['id']},'transaction':_0x5a788b});});})[_0xbadb('0x2a')](function(){_0x3c5fb7[_0xbadb('0x71')](function(_0x3d0b4a){socket['emit'](_0xbadb('0x72'),{'UserId':_0x3d0b4a['id'],'SmsQueueId':_0x298699['id']});});});});});}})[_0xbadb('0x2a')](respondWithStatusCode(_0x3510ee,null))[_0xbadb('0x48')](handleError(_0x3510ee,null));};exports[_0xbadb('0x73')]=function(_0x54e7ad,_0x131d0d,_0x4a2af5){return db['Team'][_0xbadb('0x47')]({'where':{'id':_0x54e7ad[_0xbadb('0x36')][_0xbadb('0x67')]},'attributes':['id'],'include':[{'model':db[_0xbadb('0x5d')],'as':_0xbadb('0x69'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x131d0d,null))[_0xbadb('0x2a')](function(_0x56994e){var _0x207e24=_['map'](_0x56994e,'id');var _0x1af5b0=[];var _0x17fb34=[];var _0x349238=squel[_0xbadb('0x74')]();_0x349238['field']('tq.TeamId')[_0xbadb('0x75')]('team_has_sms_queues','tq')[_0xbadb('0x76')](_0xbadb('0x77'),'ut',_0xbadb('0x78'))[_0xbadb('0x3f')](_0xbadb('0x79'),_0x54e7ad['params']['id']);for(var _0x2bc5a2=0x0;_0x2bc5a2<_0x56994e[_0xbadb('0x4b')];_0x2bc5a2+=0x1){let _0x2d120c=_0x56994e[_0x2bc5a2];for(var _0x17c88b=0x0;_0x17c88b<_0x2d120c[_0xbadb('0x69')][_0xbadb('0x4b')];_0x17c88b+=0x1){let _0x116efc=_0x2d120c[_0xbadb('0x69')][_0x17c88b];var _0x47dff8=_0x349238['clone']();_0x47dff8['where']('ut.UserId\x20=\x20?',_0x116efc['id']);_0x17fb34[_0xbadb('0x7a')](db['sequelize'][_0xbadb('0x36')](_0x47dff8[_0xbadb('0x7b')](),{'type':db[_0xbadb('0x6d')][_0xbadb('0x7c')][_0xbadb('0x7d')]})[_0xbadb('0x2a')](function(_0x18256b){if(_0x18256b[_0xbadb('0x4b')]===0x1){return _0x116efc['id'];}else{var _0x2eb2c3=_[_0xbadb('0x7e')](_[_0xbadb('0x31')](_0x18256b,_0xbadb('0x7f')),function(_0x225f1a){return _[_0xbadb('0x80')](_0x207e24,_0x225f1a);});if(_0x2eb2c3){return _0x116efc['id'];}}}));}}return BPromise[_0xbadb('0x81')](_0x17fb34)[_0xbadb('0x2a')](function(_0x48668f){_0x1af5b0=_(_0x1af5b0)[_0xbadb('0x82')](_0x48668f)['compact']()['value']();return db[_0xbadb('0x44')]['find']({'where':{'id':_0x54e7ad[_0xbadb('0x4a')]['id']}})[_0xbadb('0x2a')](function(_0x15ca01){return db[_0xbadb('0x6d')][_0xbadb('0x6e')](function(_0x15f15d){return _0x15ca01[_0xbadb('0x73')](_0x54e7ad[_0xbadb('0x36')][_0xbadb('0x67')],{'transaction':_0x15f15d})['then'](function(){if(!_['isEmpty'](_0x1af5b0)){return _0x15ca01['removeAgents'](_0x1af5b0,{'transaction':_0x15f15d});}})['then'](function(){_0x1af5b0[_0xbadb('0x71')](function(_0x1909b9){socket[_0xbadb('0x83')](_0xbadb('0x84'),{'UserId':_0x1909b9,'SmsQueueId':_0x15ca01['id']});});});});});});})[_0xbadb('0x2a')](respondWithStatusCode(_0x131d0d,null))['catch'](handleError(_0x131d0d,null));};exports[_0xbadb('0x85')]=function(_0x10098d,_0x4eb4da,_0x488b9c){return db[_0xbadb('0x44')][_0xbadb('0x4c')]({'where':{'id':_0x10098d[_0xbadb('0x4a')]['id']}})[_0xbadb('0x2a')](handleEntityNotFound(_0x4eb4da,null))[_0xbadb('0x2a')](function(_0x27eef9){if(_0x27eef9){return _0x27eef9[_0xbadb('0x85')](_0x10098d[_0xbadb('0x4e')]['ids'],_[_0xbadb('0x86')](_0x10098d[_0xbadb('0x4e')],[_0xbadb('0x67'),'id'])||{})[_0xbadb('0x87')](function(_0x54deed){for(var _0x240b4e=0x0;_0x240b4e<_0x10098d[_0xbadb('0x4e')][_0xbadb('0x67')]['length'];_0x240b4e+=0x1){socket[_0xbadb('0x83')](_0xbadb('0x72'),{'UserId':Number(_0x10098d[_0xbadb('0x4e')][_0xbadb('0x67')][_0x240b4e]),'SmsQueueId':Number(_0x10098d[_0xbadb('0x4a')]['id'])});}return _0x54deed;});}})[_0xbadb('0x2a')](respondWithResult(_0x4eb4da,null))['catch'](handleError(_0x4eb4da,null));};exports[_0xbadb('0x88')]=function(_0x22a893,_0x2dea79,_0x4a7ed3){return db[_0xbadb('0x44')][_0xbadb('0x4c')]({'where':{'id':_0x22a893['params']['id']}})[_0xbadb('0x2a')](handleEntityNotFound(_0x2dea79,null))[_0xbadb('0x2a')](function(_0x39187a){if(_0x39187a){return _0x39187a['removeAgents'](_0x22a893[_0xbadb('0x36')][_0xbadb('0x67')])['then'](function(){if(_[_0xbadb('0x89')](_0x22a893[_0xbadb('0x36')][_0xbadb('0x67')])){for(var _0x4f56bc=0x0;_0x4f56bc<_0x22a893['query']['ids'][_0xbadb('0x4b')];_0x4f56bc+=0x1){socket[_0xbadb('0x83')](_0xbadb('0x84'),{'UserId':Number(_0x22a893[_0xbadb('0x36')][_0xbadb('0x67')][_0x4f56bc]),'SmsQueueId':Number(_0x22a893[_0xbadb('0x4a')]['id'])});}}else{socket['emit'](_0xbadb('0x84'),{'UserId':Number(_0x22a893[_0xbadb('0x36')][_0xbadb('0x67')]),'SmsQueueId':Number(_0x22a893['params']['id'])});}});}})[_0xbadb('0x2a')](respondWithStatusCode(_0x2dea79,null))[_0xbadb('0x48')](handleError(_0x2dea79,null));};exports[_0xbadb('0x8a')]=function(_0x5f3126,_0x1d257d,_0x3cb33d){var _0x1062ee={};var _0x2cddc2={};var _0x5279c1;var _0x25c8b1;return db[_0xbadb('0x44')][_0xbadb('0x58')]({'where':{'id':_0x5f3126[_0xbadb('0x4a')]['id']}})[_0xbadb('0x2a')](handleEntityNotFound(_0x1d257d,null))['then'](function(_0x1adb87){if(_0x1adb87){_0x5279c1=_0x1adb87;_0x2cddc2['model']=_[_0xbadb('0x37')](db['User'][_0xbadb('0x32')]);_0x2cddc2['query']=_[_0xbadb('0x37')](_0x5f3126[_0xbadb('0x36')]);_0x2cddc2[_0xbadb('0x38')]=_['intersection'](_0x2cddc2[_0xbadb('0x35')],_0x2cddc2[_0xbadb('0x36')]);_0x1062ee[_0xbadb('0x3a')]=_['intersection'](_0x2cddc2[_0xbadb('0x35')],qs['fields'](_0x5f3126['query']['fields']));_0x1062ee[_0xbadb('0x3a')]=_0x1062ee[_0xbadb('0x3a')]['length']?_0x1062ee['attributes']:_0x2cddc2[_0xbadb('0x35')];_0x1062ee[_0xbadb('0x3d')]=qs[_0xbadb('0x3e')](_0x5f3126[_0xbadb('0x36')][_0xbadb('0x3e')]);_0x1062ee[_0xbadb('0x3f')]=qs[_0xbadb('0x38')](_[_0xbadb('0x5b')](_0x5f3126[_0xbadb('0x36')],_0x2cddc2['filters']));if(_0x5f3126[_0xbadb('0x36')][_0xbadb('0x42')]){_0x1062ee[_0xbadb('0x3f')]=_['merge'](_0x1062ee['where'],{'$or':_[_0xbadb('0x31')](_0x1062ee['attributes'],function(_0xb9a7ba){var _0x1cad60={};_0x1cad60[_0xb9a7ba]={'$like':'%'+_0x5f3126['query'][_0xbadb('0x42')]+'%'};return _0x1cad60;})});}_0x1062ee=_[_0xbadb('0x40')]({},_0x1062ee,_0x5f3126[_0xbadb('0x43')]);return _0x5279c1[_0xbadb('0x8a')](_0x1062ee);}})[_0xbadb('0x2a')](function(_0xbd9476){if(_0xbd9476){_0x25c8b1=_0xbd9476['length'];if(!_0x5f3126[_0xbadb('0x36')][_0xbadb('0x3c')](_0xbadb('0x5a'))){_0x1062ee[_0xbadb('0x26')]=qs[_0xbadb('0x26')](_0x5f3126['query'][_0xbadb('0x26')]);_0x1062ee[_0xbadb('0x23')]=qs[_0xbadb('0x23')](_0x5f3126[_0xbadb('0x36')][_0xbadb('0x23')]);}return _0x5279c1[_0xbadb('0x8a')](_0x1062ee);}})[_0xbadb('0x2a')](function(_0x3457c4){if(_0x3457c4){return _0x3457c4?{'count':_0x25c8b1,'rows':_0x3457c4}:null;}})[_0xbadb('0x2a')](respondWithResult(_0x1d257d,null))[_0xbadb('0x48')](handleError(_0x1d257d,null));};
\ No newline at end of file
+var _0x6811=['value','sequelize','isEmpty','removeAgents','addAgents','omit','spread','userSmsQueue:save','isArray','userSmsQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','status','end','json','offset','undefined','limit','count','apply','reject','update','then','destroy','get','SmsQueues','UserProfileResource','error','stack','name','send','index','map','SmsQueue','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserSmsQueue','SmsQueueId','UserId','updatedAt','SIP','smsPause','createdAt','getTeams','Team','addTeams','User','Agents','online','voicePause','interface','flatMap','transaction','findOrCreate','forEach','emit','ids','tq.TeamId','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','TeamId','includes','union','compact'];(function(_0x10f68e,_0xf198ea){var _0x4c8372=function(_0x38517){while(--_0x38517){_0x10f68e['push'](_0x10f68e['shift']());}};_0x4c8372(++_0xf198ea);}(_0x6811,0x121));var _0x1681=function(_0x551442,_0x34942b){_0x551442=_0x551442-0x0;var _0xa62b18=_0x6811[_0x551442];return _0xa62b18;};'use strict';var emlformat=require(_0x1681('0x0'));var rimraf=require(_0x1681('0x1'));var zipdir=require(_0x1681('0x2'));var jsonpatch=require(_0x1681('0x3'));var rp=require(_0x1681('0x4'));var moment=require(_0x1681('0x5'));var BPromise=require(_0x1681('0x6'));var Mustache=require(_0x1681('0x7'));var util=require(_0x1681('0x8'));var path=require(_0x1681('0x9'));var sox=require('sox');var csv=require(_0x1681('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1681('0xb'));var _=require('lodash');var squel=require(_0x1681('0xc'));var crypto=require(_0x1681('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1681('0xe'));var toCsv=require(_0x1681('0xa'));var querystring=require('querystring');var Papa=require(_0x1681('0xf'));var Redis=require(_0x1681('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x1681('0x11'));var as=require(_0x1681('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1681('0x13'))(_0x1681('0x14'));var utils=require(_0x1681('0x15'));var config=require(_0x1681('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x1681('0x17'))['db'];config[_0x1681('0x18')]=_[_0x1681('0x19')](config[_0x1681('0x18')],{'host':_0x1681('0x1a'),'port':0x18eb});var socket=require(_0x1681('0x1b'))(new Redis(config[_0x1681('0x18')]));require(_0x1681('0x1c'))[_0x1681('0x1d')](socket);function respondWithStatusCode(_0xdef75,_0x527fa9){_0x527fa9=_0x527fa9||0xcc;return function(_0x4705f8){if(_0x4705f8){return _0xdef75['sendStatus'](_0x527fa9);}return _0xdef75[_0x1681('0x1e')](_0x527fa9)[_0x1681('0x1f')]();};}function respondWithResult(_0x3243c6,_0x4e3d86){_0x4e3d86=_0x4e3d86||0xc8;return function(_0x2e6a2f){if(_0x2e6a2f){return _0x3243c6['status'](_0x4e3d86)[_0x1681('0x20')](_0x2e6a2f);}};}function respondWithFilteredResult(_0x594d28,_0x14f923){return function(_0x1f11cc){if(_0x1f11cc){var _0x40a9cd=typeof _0x14f923[_0x1681('0x21')]===_0x1681('0x22')&&typeof _0x14f923[_0x1681('0x23')]===_0x1681('0x22');var _0x48f18c=_0x1f11cc[_0x1681('0x24')];var _0x57ab0a=_0x40a9cd?0x0:_0x14f923['offset'];var _0x124145=_0x40a9cd?_0x1f11cc[_0x1681('0x24')]:_0x14f923[_0x1681('0x21')]+_0x14f923['limit'];var _0x1661b4;if(_0x124145>=_0x48f18c){_0x124145=_0x48f18c;_0x1661b4=0xc8;}else{_0x1661b4=0xce;}_0x594d28[_0x1681('0x1e')](_0x1661b4);return _0x594d28['set']('Content-Range',_0x57ab0a+'-'+_0x124145+'/'+_0x48f18c)[_0x1681('0x20')](_0x1f11cc);}return null;};}function patchUpdates(_0xd69dd2){return function(_0x56ca3a){try{jsonpatch[_0x1681('0x25')](_0x56ca3a,_0xd69dd2,!![]);}catch(_0x180fcc){return BPromise[_0x1681('0x26')](_0x180fcc);}return _0x56ca3a['save']();};}function saveUpdates(_0x4092ed,_0x47d542){return function(_0x5b58a6){if(_0x5b58a6){return _0x5b58a6[_0x1681('0x27')](_0x4092ed)[_0x1681('0x28')](function(_0x123c07){return _0x123c07;});}return null;};}function removeEntity(_0x572d78,_0x18f288){return function(_0x5bbb13){if(_0x5bbb13){return _0x5bbb13[_0x1681('0x29')]()[_0x1681('0x28')](function(){var _0x14a5ce=_0x5bbb13[_0x1681('0x2a')]({'plain':!![]});var _0x392082=_0x1681('0x2b');return db[_0x1681('0x2c')][_0x1681('0x29')]({'where':{'type':_0x392082,'resourceId':_0x14a5ce['id']}})[_0x1681('0x28')](function(){return _0x5bbb13;});})['then'](function(){_0x572d78[_0x1681('0x1e')](0xcc)[_0x1681('0x1f')]();});}};}function handleEntityNotFound(_0x42443b,_0x32d6a9){return function(_0x49c1fd){if(!_0x49c1fd){_0x42443b['sendStatus'](0x194);}return _0x49c1fd;};}function handleError(_0x2cf6d0,_0x2759c1){_0x2759c1=_0x2759c1||0x1f4;return function(_0x19e1f1){logger[_0x1681('0x2d')](_0x19e1f1[_0x1681('0x2e')]);if(_0x19e1f1[_0x1681('0x2f')]){delete _0x19e1f1['name'];}_0x2cf6d0['status'](_0x2759c1)[_0x1681('0x30')](_0x19e1f1);};}exports[_0x1681('0x31')]=function(_0x19d3cd,_0x388ad7){var _0x58d934={},_0x150cd5={},_0x2c734a={'count':0x0,'rows':[]};var _0x84a3f9=_[_0x1681('0x32')](db[_0x1681('0x33')][_0x1681('0x34')],function(_0x314908){return{'name':_0x314908[_0x1681('0x35')],'type':_0x314908[_0x1681('0x36')][_0x1681('0x37')]};});_0x150cd5['model']=_[_0x1681('0x32')](_0x84a3f9,'name');_0x150cd5[_0x1681('0x38')]=_[_0x1681('0x39')](_0x19d3cd[_0x1681('0x38')]);_0x150cd5[_0x1681('0x3a')]=_[_0x1681('0x3b')](_0x150cd5[_0x1681('0x3c')],_0x150cd5[_0x1681('0x38')]);_0x58d934[_0x1681('0x3d')]=_['intersection'](_0x150cd5[_0x1681('0x3c')],qs[_0x1681('0x3e')](_0x19d3cd['query'][_0x1681('0x3e')]));_0x58d934[_0x1681('0x3d')]=_0x58d934[_0x1681('0x3d')][_0x1681('0x3f')]?_0x58d934[_0x1681('0x3d')]:_0x150cd5[_0x1681('0x3c')];if(!_0x19d3cd['query'][_0x1681('0x40')](_0x1681('0x41'))){_0x58d934[_0x1681('0x23')]=qs[_0x1681('0x23')](_0x19d3cd[_0x1681('0x38')][_0x1681('0x23')]);_0x58d934[_0x1681('0x21')]=qs['offset'](_0x19d3cd[_0x1681('0x38')][_0x1681('0x21')]);}_0x58d934[_0x1681('0x42')]=qs[_0x1681('0x43')](_0x19d3cd[_0x1681('0x38')][_0x1681('0x43')]);_0x58d934[_0x1681('0x44')]=qs[_0x1681('0x3a')](_[_0x1681('0x45')](_0x19d3cd['query'],_0x150cd5[_0x1681('0x3a')]),_0x84a3f9);if(_0x19d3cd[_0x1681('0x38')]['filter']){_0x58d934[_0x1681('0x44')]=_[_0x1681('0x46')](_0x58d934[_0x1681('0x44')],{'$or':_[_0x1681('0x32')](_0x84a3f9,function(_0x56ba0b){if(_0x56ba0b[_0x1681('0x36')]!==_0x1681('0x47')){var _0x3e3b35={};_0x3e3b35[_0x56ba0b['name']]={'$like':'%'+_0x19d3cd['query'][_0x1681('0x48')]+'%'};return _0x3e3b35;}})});}_0x58d934=_[_0x1681('0x46')]({},_0x58d934,_0x19d3cd[_0x1681('0x49')]);var _0x5ec288={'where':_0x58d934['where']};return db['SmsQueue'][_0x1681('0x24')](_0x5ec288)[_0x1681('0x28')](function(_0x56ea41){_0x2c734a[_0x1681('0x24')]=_0x56ea41;if(_0x19d3cd[_0x1681('0x38')][_0x1681('0x4a')]){_0x58d934[_0x1681('0x4b')]=[{'all':!![]}];}return db[_0x1681('0x33')][_0x1681('0x4c')](_0x58d934);})[_0x1681('0x28')](function(_0x2f0ece){_0x2c734a[_0x1681('0x4d')]=_0x2f0ece;return _0x2c734a;})['then'](respondWithFilteredResult(_0x388ad7,_0x58d934))['catch'](handleError(_0x388ad7,null));};exports[_0x1681('0x4e')]=function(_0x462490,_0x452a94){var _0x2cd255={'raw':!![],'where':{'id':_0x462490[_0x1681('0x4f')]['id']}},_0x3b25d9={};_0x3b25d9['model']=_[_0x1681('0x39')](db[_0x1681('0x33')][_0x1681('0x34')]);_0x3b25d9['query']=_[_0x1681('0x39')](_0x462490[_0x1681('0x38')]);_0x3b25d9['filters']=_[_0x1681('0x3b')](_0x3b25d9[_0x1681('0x3c')],_0x3b25d9[_0x1681('0x38')]);_0x2cd255[_0x1681('0x3d')]=_[_0x1681('0x3b')](_0x3b25d9[_0x1681('0x3c')],qs['fields'](_0x462490[_0x1681('0x38')][_0x1681('0x3e')]));_0x2cd255[_0x1681('0x3d')]=_0x2cd255['attributes']['length']?_0x2cd255[_0x1681('0x3d')]:_0x3b25d9[_0x1681('0x3c')];if(_0x462490[_0x1681('0x38')]['includeAll']){_0x2cd255[_0x1681('0x4b')]=[{'all':!![]}];}_0x2cd255=_[_0x1681('0x46')]({},_0x2cd255,_0x462490[_0x1681('0x49')]);return db['SmsQueue'][_0x1681('0x50')](_0x2cd255)[_0x1681('0x28')](handleEntityNotFound(_0x452a94,null))[_0x1681('0x28')](respondWithResult(_0x452a94,null))[_0x1681('0x51')](handleError(_0x452a94,null));};exports['create']=function(_0x3b957c,_0x42a324){return db[_0x1681('0x33')][_0x1681('0x52')](_0x3b957c[_0x1681('0x53')],{})[_0x1681('0x28')](function(_0x29b167){var _0x551399=_0x3b957c[_0x1681('0x54')]['get']({'plain':!![]});if(!_0x551399)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x551399[_0x1681('0x55')]===_0x1681('0x54')){var _0x4ecd65=_0x29b167[_0x1681('0x2a')]({'plain':!![]});var _0x198270=_0x1681('0x2b');return db[_0x1681('0x56')][_0x1681('0x50')]({'where':{'name':_0x198270,'userProfileId':_0x551399[_0x1681('0x57')]},'raw':!![]})['then'](function(_0x4e95a1){if(_0x4e95a1&&_0x4e95a1[_0x1681('0x58')]===0x0){return db['UserProfileResource'][_0x1681('0x52')]({'name':_0x4ecd65['name'],'resourceId':_0x4ecd65['id'],'type':_0x4e95a1[_0x1681('0x2f')],'sectionId':_0x4e95a1['id']},{})[_0x1681('0x28')](function(){return _0x29b167;});}else{return _0x29b167;}})[_0x1681('0x51')](function(_0x19ced3){logger['error'](_0x1681('0x59'),_0x19ced3);throw _0x19ced3;});}return _0x29b167;})[_0x1681('0x28')](respondWithResult(_0x42a324,0xc9))['catch'](handleError(_0x42a324,null));};exports[_0x1681('0x27')]=function(_0x52fb1f,_0x3a4a13){if(_0x52fb1f[_0x1681('0x53')]['id']){delete _0x52fb1f[_0x1681('0x53')]['id'];}return db[_0x1681('0x33')][_0x1681('0x50')]({'where':{'id':_0x52fb1f[_0x1681('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3a4a13,null))[_0x1681('0x28')](saveUpdates(_0x52fb1f[_0x1681('0x53')],null))[_0x1681('0x28')](respondWithResult(_0x3a4a13,null))[_0x1681('0x51')](handleError(_0x3a4a13,null));};exports[_0x1681('0x29')]=function(_0x45a15d,_0x40241d){return db[_0x1681('0x33')][_0x1681('0x50')]({'where':{'id':_0x45a15d[_0x1681('0x4f')]['id']}})['then'](handleEntityNotFound(_0x40241d,null))['then'](removeEntity(_0x40241d,null))[_0x1681('0x51')](handleError(_0x40241d,null));};exports['describe']=function(_0x2b041b,_0x4455b4){return db[_0x1681('0x33')][_0x1681('0x5a')]()[_0x1681('0x28')](respondWithResult(_0x4455b4,null))[_0x1681('0x51')](handleError(_0x4455b4,null));};exports['getMembers']=function(_0x4d1b3e,_0x4e0ce1,_0x5434b3){var _0x5e95db={'raw':!![],'where':{}},_0xbb0731={},_0x6dc6f9;return db['SmsQueue'][_0x1681('0x5b')]({'where':{'id':_0x4d1b3e[_0x1681('0x4f')]['id']}})[_0x1681('0x28')](handleEntityNotFound(_0x4e0ce1,null))[_0x1681('0x28')](function(_0x2ec0f4){if(_0x2ec0f4){_0x6dc6f9=_0x2ec0f4[_0x1681('0x2a')]({'plain':!![]});_0xbb0731[_0x1681('0x3c')]=_[_0x1681('0x39')](db[_0x1681('0x5c')]['rawAttributes']);_0xbb0731['query']=_[_0x1681('0x39')](_0x4d1b3e[_0x1681('0x38')]);_0xbb0731['filters']=_[_0x1681('0x3b')](_0xbb0731[_0x1681('0x3c')],_0xbb0731['query']);_0x5e95db[_0x1681('0x3d')]=_[_0x1681('0x3b')](_0xbb0731['model'],qs[_0x1681('0x3e')](_0x4d1b3e[_0x1681('0x38')]['fields']));_0x5e95db[_0x1681('0x3d')]=_0x5e95db[_0x1681('0x3d')][_0x1681('0x3f')]?_0x5e95db[_0x1681('0x3d')]:_0xbb0731[_0x1681('0x3c')];if(!_0x4d1b3e['query'][_0x1681('0x40')](_0x1681('0x41'))){_0x5e95db['limit']=qs[_0x1681('0x23')](_0x4d1b3e[_0x1681('0x38')]['limit']);_0x5e95db[_0x1681('0x21')]=qs['offset'](_0x4d1b3e['query']['offset']);}_0x5e95db[_0x1681('0x42')]=qs['sort'](_0x4d1b3e[_0x1681('0x38')]['sort']);_0x5e95db[_0x1681('0x44')]=qs[_0x1681('0x3a')](_[_0x1681('0x45')](_0x4d1b3e[_0x1681('0x38')],_0xbb0731[_0x1681('0x3a')]));_0x5e95db[_0x1681('0x44')][_0x1681('0x5d')]=_0x2ec0f4['id'];if(_0x4d1b3e['query'][_0x1681('0x48')]){_0x5e95db[_0x1681('0x44')]=_[_0x1681('0x46')](_0x5e95db[_0x1681('0x44')],{'$or':_[_0x1681('0x32')](_0x5e95db['attributes'],function(_0x4f9802){var _0x3cb7b4={};_0x3cb7b4[_0x4f9802]={'$like':'%'+_0x4d1b3e[_0x1681('0x38')][_0x1681('0x48')]+'%'};return _0x3cb7b4;})});}_0x5e95db=_[_0x1681('0x46')]({},_0x5e95db,_0x4d1b3e['options']);return db[_0x1681('0x5c')]['findAll'](_0x5e95db);}})[_0x1681('0x28')](function(_0x4f6148){if(_0x4f6148){return db['User']['findAndCountAll']({'where':{'id':_['map'](_0x4f6148,_0x1681('0x5e')),'role':'agent'},'attributes':['id','name','smsPause',_0x1681('0x5f'),'createdAt']});}})['then'](function(_0x4ea2e5){if(_0x4ea2e5){return{'count':_0x4ea2e5[_0x1681('0x24')],'rows':_[_0x1681('0x32')](_0x4ea2e5[_0x1681('0x4d')],function(_0x3fa30e){return{'membername':_0x3fa30e[_0x1681('0x2f')],'UserId':_0x3fa30e['id'],'queue_name':_0x6dc6f9[_0x1681('0x2f')],'SmsQueueId':_0x6dc6f9['id'],'interface':util['format']('%s/%s',_0x1681('0x60'),_0x3fa30e[_0x1681('0x2f')]),'penalty':0x0,'paused':_0x3fa30e[_0x1681('0x61')],'createdAt':_0x3fa30e[_0x1681('0x62')],'updatedAt':_0x3fa30e[_0x1681('0x5f')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4e0ce1,_0x5e95db))[_0x1681('0x51')](handleError(_0x4e0ce1,null));};exports[_0x1681('0x63')]=function(_0xe25ddf,_0x57aac9,_0x19f9aa){var _0x431b1f={};var _0x10aba3={};var _0x59ec1c;var _0x30fe07;return db[_0x1681('0x33')][_0x1681('0x5b')]({'where':{'id':_0xe25ddf[_0x1681('0x4f')]['id']}})['then'](handleEntityNotFound(_0x57aac9,null))['then'](function(_0x3c558a){if(_0x3c558a){_0x59ec1c=_0x3c558a;_0x10aba3[_0x1681('0x3c')]=_['keys'](db[_0x1681('0x64')][_0x1681('0x34')]);_0x10aba3[_0x1681('0x38')]=_[_0x1681('0x39')](_0xe25ddf[_0x1681('0x38')]);_0x10aba3[_0x1681('0x3a')]=_[_0x1681('0x3b')](_0x10aba3[_0x1681('0x3c')],_0x10aba3['query']);_0x431b1f[_0x1681('0x3d')]=_[_0x1681('0x3b')](_0x10aba3[_0x1681('0x3c')],qs[_0x1681('0x3e')](_0xe25ddf[_0x1681('0x38')][_0x1681('0x3e')]));_0x431b1f[_0x1681('0x3d')]=_0x431b1f[_0x1681('0x3d')][_0x1681('0x3f')]?_0x431b1f[_0x1681('0x3d')]:_0x10aba3[_0x1681('0x3c')];_0x431b1f[_0x1681('0x42')]=qs[_0x1681('0x43')](_0xe25ddf[_0x1681('0x38')]['sort']);_0x431b1f[_0x1681('0x44')]=qs[_0x1681('0x3a')](_[_0x1681('0x45')](_0xe25ddf[_0x1681('0x38')],_0x10aba3[_0x1681('0x3a')]));if(_0xe25ddf['query'][_0x1681('0x48')]){_0x431b1f[_0x1681('0x44')]=_[_0x1681('0x46')](_0x431b1f[_0x1681('0x44')],{'$or':_[_0x1681('0x32')](_0x431b1f[_0x1681('0x3d')],function(_0x17fbc6){var _0xc4b3b3={};_0xc4b3b3[_0x17fbc6]={'$like':'%'+_0xe25ddf[_0x1681('0x38')][_0x1681('0x48')]+'%'};return _0xc4b3b3;})});}_0x431b1f=_['merge']({},_0x431b1f,_0xe25ddf[_0x1681('0x49')]);return _0x59ec1c[_0x1681('0x63')](_0x431b1f);}})['then'](function(_0x253837){if(_0x253837){_0x30fe07=_0x253837[_0x1681('0x3f')];if(!_0xe25ddf[_0x1681('0x38')]['hasOwnProperty'](_0x1681('0x41'))){_0x431b1f[_0x1681('0x23')]=qs['limit'](_0xe25ddf[_0x1681('0x38')][_0x1681('0x23')]);_0x431b1f[_0x1681('0x21')]=qs['offset'](_0xe25ddf[_0x1681('0x38')][_0x1681('0x21')]);}return _0x59ec1c[_0x1681('0x63')](_0x431b1f);}})['then'](function(_0x19c6ea){if(_0x19c6ea){return _0x19c6ea?{'count':_0x30fe07,'rows':_0x19c6ea}:null;}})['then'](respondWithResult(_0x57aac9,null))[_0x1681('0x51')](handleError(_0x57aac9,null));};exports[_0x1681('0x65')]=function(_0x3fef70,_0x502ff2,_0x340110){var _0xbe8ff8=_0x3fef70[_0x1681('0x53')]['ids'];return db[_0x1681('0x64')][_0x1681('0x4c')]({'where':{'id':_0xbe8ff8},'attributes':['id'],'include':[{'model':db[_0x1681('0x66')],'as':_0x1681('0x67'),'attributes':['id',_0x1681('0x2f'),_0x1681('0x68'),_0x1681('0x69'),_0x1681('0x6a')],'raw':!![]}]})['then'](function(_0x2e6283){if(_0x2e6283){var _0xbd71c6=_[_0x1681('0x6b')](_0x2e6283,function(_0x25d5ab){var _0x10d75f=_0x25d5ab[_0x1681('0x2a')]({'plain':!![]});return _0x10d75f[_0x1681('0x67')];});return db[_0x1681('0x33')]['find']({'where':{'id':_0x3fef70[_0x1681('0x4f')]['id']}})[_0x1681('0x28')](function(_0x2efc24){return db['sequelize'][_0x1681('0x6c')](function(_0x15c8ef){return _0x2efc24[_0x1681('0x65')](_0xbe8ff8,{'transaction':_0x15c8ef})[_0x1681('0x28')](function(){return BPromise['each'](_0xbd71c6,function(_0x600fa1){return db['UserSmsQueue'][_0x1681('0x6d')]({'where':{'UserId':_0x600fa1['id'],'SmsQueueId':_0x3fef70['params']['id']},'transaction':_0x15c8ef});});})['then'](function(){_0xbd71c6[_0x1681('0x6e')](function(_0x225460){socket[_0x1681('0x6f')]('userSmsQueue:save',{'UserId':_0x225460['id'],'SmsQueueId':_0x2efc24['id']});});});});});}})[_0x1681('0x28')](respondWithStatusCode(_0x502ff2,null))[_0x1681('0x51')](handleError(_0x502ff2,null));};exports['removeTeams']=function(_0x428250,_0x1c16f4,_0x5739d6){return db[_0x1681('0x64')]['findAll']({'where':{'id':_0x428250['query'][_0x1681('0x70')]},'attributes':['id'],'include':[{'model':db[_0x1681('0x66')],'as':_0x1681('0x67'),'attributes':['id'],'raw':!![]}]})[_0x1681('0x28')](handleEntityNotFound(_0x1c16f4,null))['then'](function(_0x1ce7e7){var _0x362acb=_['map'](_0x1ce7e7,'id');var _0x5c5793=[];var _0x2d4feb=[];var _0x5b8d65=squel['select']();_0x5b8d65['field'](_0x1681('0x71'))[_0x1681('0x72')](_0x1681('0x73'),'tq')[_0x1681('0x74')](_0x1681('0x75'),'ut',_0x1681('0x76'))[_0x1681('0x44')]('SmsQueueId\x20=\x20?',_0x428250[_0x1681('0x4f')]['id']);for(var _0x4149cc=0x0;_0x4149cc<_0x1ce7e7[_0x1681('0x3f')];_0x4149cc+=0x1){let _0x2e8f4a=_0x1ce7e7[_0x4149cc];for(var _0x500932=0x0;_0x500932<_0x2e8f4a['Agents'][_0x1681('0x3f')];_0x500932+=0x1){let _0x2ed9cc=_0x2e8f4a[_0x1681('0x67')][_0x500932];var _0x17815d=_0x5b8d65[_0x1681('0x77')]();_0x17815d[_0x1681('0x44')](_0x1681('0x78'),_0x2ed9cc['id']);_0x2d4feb[_0x1681('0x79')](db['sequelize'][_0x1681('0x38')](_0x17815d['toString'](),{'type':db['sequelize'][_0x1681('0x7a')][_0x1681('0x7b')]})['then'](function(_0x3aed54){if(_0x3aed54[_0x1681('0x3f')]===0x1){return _0x2ed9cc['id'];}else{var _0x5794d1=_['every'](_[_0x1681('0x32')](_0x3aed54,_0x1681('0x7c')),function(_0x1cf215){return _[_0x1681('0x7d')](_0x362acb,_0x1cf215);});if(_0x5794d1){return _0x2ed9cc['id'];}}}));}}return BPromise['all'](_0x2d4feb)[_0x1681('0x28')](function(_0x2090c4){_0x5c5793=_(_0x5c5793)[_0x1681('0x7e')](_0x2090c4)[_0x1681('0x7f')]()[_0x1681('0x80')]();return db[_0x1681('0x33')][_0x1681('0x50')]({'where':{'id':_0x428250['params']['id']}})[_0x1681('0x28')](function(_0x53616d){return db[_0x1681('0x81')][_0x1681('0x6c')](function(_0x1bb34d){return _0x53616d['removeTeams'](_0x428250['query'][_0x1681('0x70')],{'transaction':_0x1bb34d})['then'](function(){if(!_[_0x1681('0x82')](_0x5c5793)){return _0x53616d[_0x1681('0x83')](_0x5c5793,{'transaction':_0x1bb34d});}})[_0x1681('0x28')](function(){_0x5c5793[_0x1681('0x6e')](function(_0x5a6217){socket['emit']('userSmsQueue:remove',{'UserId':_0x5a6217,'SmsQueueId':_0x53616d['id']});});});});});});})[_0x1681('0x28')](respondWithStatusCode(_0x1c16f4,null))[_0x1681('0x51')](handleError(_0x1c16f4,null));};exports[_0x1681('0x84')]=function(_0x543ffe,_0x1cb096,_0x326f27){return db[_0x1681('0x33')][_0x1681('0x50')]({'where':{'id':_0x543ffe['params']['id']}})[_0x1681('0x28')](handleEntityNotFound(_0x1cb096,null))[_0x1681('0x28')](function(_0x48aa91){if(_0x48aa91){return _0x48aa91[_0x1681('0x84')](_0x543ffe[_0x1681('0x53')][_0x1681('0x70')],_[_0x1681('0x85')](_0x543ffe[_0x1681('0x53')],[_0x1681('0x70'),'id'])||{})[_0x1681('0x86')](function(_0x3fe281){for(var _0x1ab51f=0x0;_0x1ab51f<_0x543ffe[_0x1681('0x53')][_0x1681('0x70')]['length'];_0x1ab51f+=0x1){socket['emit'](_0x1681('0x87'),{'UserId':Number(_0x543ffe['body'][_0x1681('0x70')][_0x1ab51f]),'SmsQueueId':Number(_0x543ffe[_0x1681('0x4f')]['id'])});}return _0x3fe281;});}})[_0x1681('0x28')](respondWithResult(_0x1cb096,null))[_0x1681('0x51')](handleError(_0x1cb096,null));};exports[_0x1681('0x83')]=function(_0x30b74f,_0x43ad5e,_0x5d164f){return db[_0x1681('0x33')][_0x1681('0x50')]({'where':{'id':_0x30b74f[_0x1681('0x4f')]['id']}})[_0x1681('0x28')](handleEntityNotFound(_0x43ad5e,null))[_0x1681('0x28')](function(_0x4fc246){if(_0x4fc246){return _0x4fc246[_0x1681('0x83')](_0x30b74f['query'][_0x1681('0x70')])[_0x1681('0x28')](function(){if(_[_0x1681('0x88')](_0x30b74f[_0x1681('0x38')]['ids'])){for(var _0x3f0661=0x0;_0x3f0661<_0x30b74f[_0x1681('0x38')][_0x1681('0x70')]['length'];_0x3f0661+=0x1){socket[_0x1681('0x6f')](_0x1681('0x89'),{'UserId':Number(_0x30b74f[_0x1681('0x38')]['ids'][_0x3f0661]),'SmsQueueId':Number(_0x30b74f['params']['id'])});}}else{socket['emit'](_0x1681('0x89'),{'UserId':Number(_0x30b74f[_0x1681('0x38')][_0x1681('0x70')]),'SmsQueueId':Number(_0x30b74f[_0x1681('0x4f')]['id'])});}});}})['then'](respondWithStatusCode(_0x43ad5e,null))[_0x1681('0x51')](handleError(_0x43ad5e,null));};exports[_0x1681('0x8a')]=function(_0x358703,_0x27308a,_0x1a3e92){var _0x257db5={};var _0x461564={};var _0x2a8d3d;var _0x545534;return db['SmsQueue'][_0x1681('0x5b')]({'where':{'id':_0x358703['params']['id']}})[_0x1681('0x28')](handleEntityNotFound(_0x27308a,null))[_0x1681('0x28')](function(_0x488c10){if(_0x488c10){_0x2a8d3d=_0x488c10;_0x461564[_0x1681('0x3c')]=_[_0x1681('0x39')](db[_0x1681('0x66')][_0x1681('0x34')]);_0x461564[_0x1681('0x38')]=_['keys'](_0x358703[_0x1681('0x38')]);_0x461564[_0x1681('0x3a')]=_[_0x1681('0x3b')](_0x461564[_0x1681('0x3c')],_0x461564[_0x1681('0x38')]);_0x257db5['attributes']=_['intersection'](_0x461564['model'],qs[_0x1681('0x3e')](_0x358703[_0x1681('0x38')][_0x1681('0x3e')]));_0x257db5[_0x1681('0x3d')]=_0x257db5[_0x1681('0x3d')]['length']?_0x257db5[_0x1681('0x3d')]:_0x461564[_0x1681('0x3c')];_0x257db5[_0x1681('0x42')]=qs['sort'](_0x358703[_0x1681('0x38')]['sort']);_0x257db5['where']=qs[_0x1681('0x3a')](_[_0x1681('0x45')](_0x358703[_0x1681('0x38')],_0x461564[_0x1681('0x3a')]));if(_0x358703[_0x1681('0x38')][_0x1681('0x48')]){_0x257db5[_0x1681('0x44')]=_[_0x1681('0x46')](_0x257db5['where'],{'$or':_['map'](_0x257db5['attributes'],function(_0x2fe434){var _0x16ef8a={};_0x16ef8a[_0x2fe434]={'$like':'%'+_0x358703[_0x1681('0x38')][_0x1681('0x48')]+'%'};return _0x16ef8a;})});}_0x257db5=_['merge']({},_0x257db5,_0x358703[_0x1681('0x49')]);return _0x2a8d3d[_0x1681('0x8a')](_0x257db5);}})[_0x1681('0x28')](function(_0x3041c6){if(_0x3041c6){_0x545534=_0x3041c6[_0x1681('0x3f')];if(!_0x358703[_0x1681('0x38')][_0x1681('0x40')](_0x1681('0x41'))){_0x257db5['limit']=qs['limit'](_0x358703[_0x1681('0x38')][_0x1681('0x23')]);_0x257db5['offset']=qs[_0x1681('0x21')](_0x358703[_0x1681('0x38')]['offset']);}return _0x2a8d3d[_0x1681('0x8a')](_0x257db5);}})[_0x1681('0x28')](function(_0x4e5477){if(_0x4e5477){return _0x4e5477?{'count':_0x545534,'rows':_0x4e5477}:null;}})[_0x1681('0x28')](respondWithResult(_0x27308a,null))['catch'](handleError(_0x27308a,null));};
\ No newline at end of file
index 2368846..8bfc8fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08a4=['update','remove','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','save'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0x08a4,0xb4));var _0x408a=function(_0x44e435,_0x446c1b){_0x44e435=_0x44e435-0x0;var _0x253bef=_0x08a4[_0x44e435];return _0x253bef;};'use strict';var EventEmitter=require(_0x408a('0x0'));var SmsQueue=require(_0x408a('0x1'))['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x408a('0x2')](0x0);var events={'afterCreate':_0x408a('0x3'),'afterUpdate':_0x408a('0x4'),'afterDestroy':_0x408a('0x5')};function emitEvent(_0x3324d8){return function(_0x20a951,_0x23c31a,_0x38ab23){SmsQueueEvents['emit'](_0x3324d8+':'+_0x20a951['id'],_0x20a951);SmsQueueEvents['emit'](_0x3324d8,_0x20a951);_0x38ab23(null);};}for(var e in events){if(events[_0x408a('0x6')](e)){var event=events[e];SmsQueue[_0x408a('0x7')](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
+var _0x843a=['hook','exports','SmsQueue','save','update','remove','emit','hasOwnProperty'];(function(_0x19ea71,_0x28639e){var _0x4f94ef=function(_0x2360cc){while(--_0x2360cc){_0x19ea71['push'](_0x19ea71['shift']());}};_0x4f94ef(++_0x28639e);}(_0x843a,0x182));var _0xa843=function(_0x3599f5,_0x324184){_0x3599f5=_0x3599f5-0x0;var _0x4efb59=_0x843a[_0x3599f5];return _0x4efb59;};'use strict';var EventEmitter=require('events');var SmsQueue=require('../../mysqldb')['db'][_0xa843('0x0')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa843('0x1'),'afterUpdate':_0xa843('0x2'),'afterDestroy':_0xa843('0x3')};function emitEvent(_0x5b2237){return function(_0x1f41df,_0x550ed5,_0x564564){SmsQueueEvents[_0xa843('0x4')](_0x5b2237+':'+_0x1f41df['id'],_0x1f41df);SmsQueueEvents[_0xa843('0x4')](_0x5b2237,_0x1f41df);_0x564564(null);};}for(var e in events){if(events[_0xa843('0x5')](e)){var event=events[e];SmsQueue[_0xa843('0x6')](e,emitEvent(event));}}module[_0xa843('0x7')]=SmsQueueEvents;
\ No newline at end of file
index 6795ddf..6620c94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa07c=['exports','SmsQueue','sms_queues','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x351f92,_0x51990e){var _0x407102=function(_0x16e7f3){while(--_0x16e7f3){_0x351f92['push'](_0x351f92['shift']());}};_0x407102(++_0x51990e);}(_0xa07c,0x163));var _0xca07=function(_0x54d8e6,_0x1311ab){_0x54d8e6=_0x54d8e6-0x0;var _0x5692fa=_0xa07c[_0x54d8e6];return _0x5692fa;};'use strict';var _=require('lodash');var util=require(_0xca07('0x0'));var logger=require('../../config/logger')(_0xca07('0x1'));var moment=require(_0xca07('0x2'));var BPromise=require(_0xca07('0x3'));var rp=require(_0xca07('0x4'));var fs=require('fs');var path=require(_0xca07('0x5'));var rimraf=require(_0xca07('0x6'));var config=require(_0xca07('0x7'));var attributes=require('./smsQueue.attributes');module[_0xca07('0x8')]=function(_0x18e7d5,_0x2a6b7d){return _0x18e7d5['define'](_0xca07('0x9'),attributes,{'tableName':_0xca07('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb54e=['./smsQueue.attributes','exports','define','SmsQueue','lodash','util','api','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb54e,0x138));var _0xeb54=function(_0x42a4cf,_0x1dffea){_0x42a4cf=_0x42a4cf-0x0;var _0x27e14a=_0xb54e[_0x42a4cf];return _0x27e14a;};'use strict';var _=require(_0xeb54('0x0'));var util=require(_0xeb54('0x1'));var logger=require('../../config/logger')(_0xeb54('0x2'));var moment=require('moment');var BPromise=require(_0xeb54('0x3'));var rp=require(_0xeb54('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xeb54('0x5'));var config=require(_0xeb54('0x6'));var attributes=require(_0xeb54('0x7'));module[_0xeb54('0x8')]=function(_0x3f885,_0x311325){return _0x3f885[_0xeb54('0x9')](_0xeb54('0xa'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3de9916..9119078 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21a7=['message','result','GetSmsQueue','findAll','options','raw','where','limit','map','include','attributes','model','ShowSmsQueue','SmsQueue','debug','stringify','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','error'];(function(_0x3ce803,_0x7028ab){var _0x26204e=function(_0x56dc10){while(--_0x56dc10){_0x3ce803['push'](_0x3ce803['shift']());}};_0x26204e(++_0x7028ab);}(_0x21a7,0x101));var _0x721a=function(_0x47863b,_0x46967c){_0x47863b=_0x47863b-0x0;var _0x5cd617=_0x21a7[_0x47863b];return _0x5cd617;};'use strict';var _=require(_0x721a('0x0'));var util=require('util');var moment=require(_0x721a('0x1'));var BPromise=require(_0x721a('0x2'));var rs=require(_0x721a('0x3'));var fs=require('fs');var Redis=require(_0x721a('0x4'));var db=require(_0x721a('0x5'))['db'];var utils=require(_0x721a('0x6'));var logger=require(_0x721a('0x7'))('rpc');var config=require(_0x721a('0x8'));var jayson=require(_0x721a('0x9'));var client=jayson[_0x721a('0xa')][_0x721a('0xb')]({'port':0x232a});config[_0x721a('0xc')]=_[_0x721a('0xd')](config['redis'],{'host':_0x721a('0xe'),'port':0x18eb});var socket=require(_0x721a('0xf'))(new Redis(config['redis']));require('./smsQueue.socket')[_0x721a('0x10')](socket);function respondWithRpcPromise(_0x56d39c,_0x17bc61,_0x2e9f2a){return new BPromise(function(_0x1b7294,_0x194565){return client[_0x721a('0x11')](_0x56d39c,_0x2e9f2a)[_0x721a('0x12')](function(_0x559f6f){logger[_0x721a('0x13')](_0x721a('0x14'),_0x17bc61,_0x721a('0x15'));logger['debug']('SmsQueue,\x20%s,\x20%s,\x20%s',_0x17bc61,_0x721a('0x15'),JSON['stringify'](_0x559f6f));if(_0x559f6f['error']){if(_0x559f6f[_0x721a('0x16')]['code']===0x1f4){logger['error'](_0x721a('0x14'),_0x17bc61,_0x559f6f[_0x721a('0x16')]['message']);return _0x194565(_0x559f6f[_0x721a('0x16')][_0x721a('0x17')]);}logger[_0x721a('0x16')](_0x721a('0x14'),_0x17bc61,_0x559f6f['error'][_0x721a('0x17')]);return _0x1b7294(_0x559f6f[_0x721a('0x16')][_0x721a('0x17')]);}else{logger[_0x721a('0x13')](_0x721a('0x14'),_0x17bc61,_0x721a('0x15'));_0x1b7294(_0x559f6f[_0x721a('0x18')]['message']);}})['catch'](function(_0xee1ba3){logger['error'](_0x721a('0x14'),_0x17bc61,_0xee1ba3);_0x194565(_0xee1ba3);});});}exports[_0x721a('0x19')]=function(_0x2f6101){var _0x236a5f=this;return new Promise(function(_0x3173ed,_0x36708c){return db['SmsQueue'][_0x721a('0x1a')]({'raw':_0x2f6101[_0x721a('0x1b')]?_0x2f6101[_0x721a('0x1b')][_0x721a('0x1c')]===undefined?!![]:![]:!![],'where':_0x2f6101[_0x721a('0x1b')]?_0x2f6101['options'][_0x721a('0x1d')]||null:null,'attributes':_0x2f6101[_0x721a('0x1b')]?_0x2f6101['options']['attributes']||null:null,'limit':_0x2f6101[_0x721a('0x1b')]?_0x2f6101[_0x721a('0x1b')][_0x721a('0x1e')]||null:null,'include':_0x2f6101[_0x721a('0x1b')]?_0x2f6101['options']['include']?_[_0x721a('0x1f')](_0x2f6101['options'][_0x721a('0x20')],function(_0x20e62e){return{'model':db[_0x20e62e['model']],'as':_0x20e62e['as'],'attributes':_0x20e62e[_0x721a('0x21')],'include':_0x20e62e['include']?_[_0x721a('0x1f')](_0x20e62e[_0x721a('0x20')],function(_0x1ca218){return{'model':db[_0x1ca218[_0x721a('0x22')]],'as':_0x1ca218['as'],'attributes':_0x1ca218[_0x721a('0x21')],'include':_0x1ca218['include']?_['map'](_0x1ca218[_0x721a('0x20')],function(_0x2daa1e){return{'model':db[_0x2daa1e[_0x721a('0x22')]],'as':_0x2daa1e['as'],'attributes':_0x2daa1e[_0x721a('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x37cf72){logger[_0x721a('0x13')](_0x721a('0x19'),_0x2f6101);logger['debug'](_0x721a('0x19'),_0x2f6101,JSON['stringify'](_0x37cf72));_0x3173ed(_0x37cf72);})['catch'](function(_0x1513fe){logger[_0x721a('0x16')](_0x721a('0x19'),_0x1513fe[_0x721a('0x17')],_0x2f6101);_0x36708c(_0x236a5f['error'](0x1f4,_0x1513fe['message']));});});};exports[_0x721a('0x23')]=function(_0x4d7a65){var _0x1922ff=this;return new Promise(function(_0xe83e45,_0x4eb935){return db[_0x721a('0x24')]['find']({'raw':_0x4d7a65[_0x721a('0x1b')]?_0x4d7a65['options'][_0x721a('0x1c')]===undefined?!![]:![]:!![],'where':_0x4d7a65[_0x721a('0x1b')]?_0x4d7a65['options'][_0x721a('0x1d')]||null:null,'attributes':_0x4d7a65['options']?_0x4d7a65['options'][_0x721a('0x21')]||null:null,'include':_0x4d7a65[_0x721a('0x1b')]?_0x4d7a65[_0x721a('0x1b')][_0x721a('0x20')]?_['map'](_0x4d7a65[_0x721a('0x1b')][_0x721a('0x20')],function(_0x290b73){return{'model':db[_0x290b73['model']],'as':_0x290b73['as'],'attributes':_0x290b73[_0x721a('0x21')],'include':_0x290b73[_0x721a('0x20')]?_[_0x721a('0x1f')](_0x290b73['include'],function(_0x35af3e){return{'model':db[_0x35af3e[_0x721a('0x22')]],'as':_0x35af3e['as'],'attributes':_0x35af3e[_0x721a('0x21')],'include':_0x35af3e[_0x721a('0x20')]?_[_0x721a('0x1f')](_0x35af3e[_0x721a('0x20')],function(_0xcf924a){return{'model':db[_0xcf924a[_0x721a('0x22')]],'as':_0xcf924a['as'],'attributes':_0xcf924a[_0x721a('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x226dd5){logger[_0x721a('0x13')](_0x721a('0x23'),_0x4d7a65);logger[_0x721a('0x25')]('ShowSmsQueue',_0x4d7a65,JSON[_0x721a('0x26')](_0x226dd5));_0xe83e45(_0x226dd5);})[_0x721a('0x27')](function(_0x1a22bb){logger[_0x721a('0x16')]('ShowSmsQueue',_0x1a22bb[_0x721a('0x17')],_0x4d7a65);_0x4eb935(_0x1922ff[_0x721a('0x16')](0x1f4,_0x1a22bb['message']));});});};
\ No newline at end of file
+var _0xf7f5=['limit','include','map','model','catch','find','ShowSmsQueue','util','moment','bluebird','../../mysqldb','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./smsQueue.socket','register','request','then','info','SmsQueue,\x20%s,\x20%s','debug','SmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','GetSmsQueue','SmsQueue','findAll','options','raw','where','attributes'];(function(_0x298b53,_0x3f830d){var _0x370c14=function(_0x16a8d7){while(--_0x16a8d7){_0x298b53['push'](_0x298b53['shift']());}};_0x370c14(++_0x3f830d);}(_0xf7f5,0xc5));var _0x5f7f=function(_0x30420c,_0x2e5b1d){_0x30420c=_0x30420c-0x0;var _0x13b10e=_0xf7f5[_0x30420c];return _0x13b10e;};'use strict';var _=require('lodash');var util=require(_0x5f7f('0x0'));var moment=require(_0x5f7f('0x1'));var BPromise=require(_0x5f7f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5f7f('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x5f7f('0x4'));var jayson=require(_0x5f7f('0x5'));var client=jayson[_0x5f7f('0x6')][_0x5f7f('0x7')]({'port':0x232a});config[_0x5f7f('0x8')]=_[_0x5f7f('0x9')](config[_0x5f7f('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x5f7f('0xa'))(new Redis(config['redis']));require(_0x5f7f('0xb'))[_0x5f7f('0xc')](socket);function respondWithRpcPromise(_0x5a856d,_0x15a3b2,_0x8b1d43){return new BPromise(function(_0x2affbd,_0x265b2c){return client[_0x5f7f('0xd')](_0x5a856d,_0x8b1d43)[_0x5f7f('0xe')](function(_0x15b075){logger[_0x5f7f('0xf')](_0x5f7f('0x10'),_0x15a3b2,'request\x20sent');logger[_0x5f7f('0x11')](_0x5f7f('0x12'),_0x15a3b2,_0x5f7f('0x13'),JSON[_0x5f7f('0x14')](_0x15b075));if(_0x15b075['error']){if(_0x15b075[_0x5f7f('0x15')][_0x5f7f('0x16')]===0x1f4){logger[_0x5f7f('0x15')](_0x5f7f('0x10'),_0x15a3b2,_0x15b075[_0x5f7f('0x15')]['message']);return _0x265b2c(_0x15b075[_0x5f7f('0x15')][_0x5f7f('0x17')]);}logger['error'](_0x5f7f('0x10'),_0x15a3b2,_0x15b075[_0x5f7f('0x15')][_0x5f7f('0x17')]);return _0x2affbd(_0x15b075[_0x5f7f('0x15')][_0x5f7f('0x17')]);}else{logger[_0x5f7f('0xf')](_0x5f7f('0x10'),_0x15a3b2,_0x5f7f('0x13'));_0x2affbd(_0x15b075['result'][_0x5f7f('0x17')]);}})['catch'](function(_0x58c4d6){logger[_0x5f7f('0x15')](_0x5f7f('0x10'),_0x15a3b2,_0x58c4d6);_0x265b2c(_0x58c4d6);});});}exports[_0x5f7f('0x18')]=function(_0x53b4df){var _0x1cbfad=this;return new Promise(function(_0x112efb,_0x1fa931){return db[_0x5f7f('0x19')][_0x5f7f('0x1a')]({'raw':_0x53b4df[_0x5f7f('0x1b')]?_0x53b4df[_0x5f7f('0x1b')][_0x5f7f('0x1c')]===undefined?!![]:![]:!![],'where':_0x53b4df['options']?_0x53b4df['options'][_0x5f7f('0x1d')]||null:null,'attributes':_0x53b4df[_0x5f7f('0x1b')]?_0x53b4df[_0x5f7f('0x1b')][_0x5f7f('0x1e')]||null:null,'limit':_0x53b4df[_0x5f7f('0x1b')]?_0x53b4df['options'][_0x5f7f('0x1f')]||null:null,'include':_0x53b4df['options']?_0x53b4df['options'][_0x5f7f('0x20')]?_[_0x5f7f('0x21')](_0x53b4df['options'][_0x5f7f('0x20')],function(_0x28169f){return{'model':db[_0x28169f[_0x5f7f('0x22')]],'as':_0x28169f['as'],'attributes':_0x28169f[_0x5f7f('0x1e')],'include':_0x28169f[_0x5f7f('0x20')]?_['map'](_0x28169f[_0x5f7f('0x20')],function(_0x4743f7){return{'model':db[_0x4743f7[_0x5f7f('0x22')]],'as':_0x4743f7['as'],'attributes':_0x4743f7[_0x5f7f('0x1e')],'include':_0x4743f7['include']?_['map'](_0x4743f7[_0x5f7f('0x20')],function(_0x21696a){return{'model':db[_0x21696a[_0x5f7f('0x22')]],'as':_0x21696a['as'],'attributes':_0x21696a[_0x5f7f('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x5f7f('0xe')](function(_0x4643eb){logger[_0x5f7f('0xf')]('GetSmsQueue',_0x53b4df);logger['debug'](_0x5f7f('0x18'),_0x53b4df,JSON['stringify'](_0x4643eb));_0x112efb(_0x4643eb);})[_0x5f7f('0x23')](function(_0x1f9a27){logger[_0x5f7f('0x15')](_0x5f7f('0x18'),_0x1f9a27[_0x5f7f('0x17')],_0x53b4df);_0x1fa931(_0x1cbfad[_0x5f7f('0x15')](0x1f4,_0x1f9a27['message']));});});};exports['ShowSmsQueue']=function(_0x438e69){var _0x464b78=this;return new Promise(function(_0xb8ce5f,_0x7162e9){return db[_0x5f7f('0x19')][_0x5f7f('0x24')]({'raw':_0x438e69[_0x5f7f('0x1b')]?_0x438e69['options'][_0x5f7f('0x1c')]===undefined?!![]:![]:!![],'where':_0x438e69[_0x5f7f('0x1b')]?_0x438e69[_0x5f7f('0x1b')][_0x5f7f('0x1d')]||null:null,'attributes':_0x438e69['options']?_0x438e69[_0x5f7f('0x1b')][_0x5f7f('0x1e')]||null:null,'include':_0x438e69['options']?_0x438e69[_0x5f7f('0x1b')][_0x5f7f('0x20')]?_[_0x5f7f('0x21')](_0x438e69['options'][_0x5f7f('0x20')],function(_0x413b08){return{'model':db[_0x413b08[_0x5f7f('0x22')]],'as':_0x413b08['as'],'attributes':_0x413b08[_0x5f7f('0x1e')],'include':_0x413b08['include']?_[_0x5f7f('0x21')](_0x413b08[_0x5f7f('0x20')],function(_0x2473b0){return{'model':db[_0x2473b0[_0x5f7f('0x22')]],'as':_0x2473b0['as'],'attributes':_0x2473b0[_0x5f7f('0x1e')],'include':_0x2473b0[_0x5f7f('0x20')]?_[_0x5f7f('0x21')](_0x2473b0[_0x5f7f('0x20')],function(_0x249e4a){return{'model':db[_0x249e4a[_0x5f7f('0x22')]],'as':_0x249e4a['as'],'attributes':_0x249e4a['attributes']};}):[]};}):[]};}):[]:[]})[_0x5f7f('0xe')](function(_0x1ddd04){logger[_0x5f7f('0xf')](_0x5f7f('0x25'),_0x438e69);logger[_0x5f7f('0x11')](_0x5f7f('0x25'),_0x438e69,JSON[_0x5f7f('0x14')](_0x1ddd04));_0xb8ce5f(_0x1ddd04);})[_0x5f7f('0x23')](function(_0x1bedc7){logger[_0x5f7f('0x15')](_0x5f7f('0x25'),_0x1bedc7[_0x5f7f('0x17')],_0x438e69);_0x7162e9(_0x464b78['error'](0x1f4,_0x1bedc7['message']));});});};
\ No newline at end of file
index 32eaa10..f0ce300 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91ab=['./smsQueue.events','save','remove','update','emit','register','length','smsQueue:'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x91ab,0x140));var _0xb91a=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0x91ab[_0x484e36];return _0xafc85d;};'use strict';var SmsQueueEvents=require(_0xb91a('0x0'));var events=[_0xb91a('0x1'),_0xb91a('0x2'),_0xb91a('0x3')];function createListener(_0x331467,_0x238b5e){return function(_0x4df889){_0x238b5e[_0xb91a('0x4')](_0x331467,_0x4df889);};}function removeListener(_0x996f66,_0x59372f){return function(){SmsQueueEvents['removeListener'](_0x996f66,_0x59372f);};}exports[_0xb91a('0x5')]=function(_0x555171){for(var _0x3642bc=0x0,_0xc3ed87=events[_0xb91a('0x6')];_0x3642bc<_0xc3ed87;_0x3642bc++){var _0x24151c=events[_0x3642bc];var _0x2f89f2=createListener(_0xb91a('0x7')+_0x24151c,_0x555171);SmsQueueEvents['on'](_0x24151c,_0x2f89f2);}};
\ No newline at end of file
+var _0x8ca1=['save','remove','update','emit','removeListener','register','length','smsQueue:','./smsQueue.events'];(function(_0x5b740b,_0x381833){var _0x6f8f4e=function(_0x86d068){while(--_0x86d068){_0x5b740b['push'](_0x5b740b['shift']());}};_0x6f8f4e(++_0x381833);}(_0x8ca1,0x170));var _0x18ca=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8ca1[_0x20a584];return _0x4b41a8;};'use strict';var SmsQueueEvents=require(_0x18ca('0x0'));var events=[_0x18ca('0x1'),_0x18ca('0x2'),_0x18ca('0x3')];function createListener(_0x444db6,_0x46224c){return function(_0x5376b7){_0x46224c[_0x18ca('0x4')](_0x444db6,_0x5376b7);};}function removeListener(_0x30e69d,_0x191999){return function(){SmsQueueEvents[_0x18ca('0x5')](_0x30e69d,_0x191999);};}exports[_0x18ca('0x6')]=function(_0x1c539d){for(var _0x4c5d68=0x0,_0x55187b=events[_0x18ca('0x7')];_0x4c5d68<_0x55187b;_0x4c5d68++){var _0x390220=events[_0x4c5d68];var _0x32a44c=createListener(_0x18ca('0x8')+_0x390220,_0x1c539d);SmsQueueEvents['on'](_0x390220,_0x32a44c);}};
\ No newline at end of file
index 0b01025..68b664b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x108e=['describe','/:id','show','post','update','destroy','util','path','express','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe'];(function(_0x5526c4,_0x4e77eb){var _0x165ff8=function(_0x3b8802){while(--_0x3b8802){_0x5526c4['push'](_0x5526c4['shift']());}};_0x165ff8(++_0x4e77eb);}(_0x108e,0x141));var _0xe108=function(_0x37d2fc,_0x25af0f){_0x37d2fc=_0x37d2fc-0x0;var _0x310e1b=_0x108e[_0x37d2fc];return _0x310e1b;};'use strict';var multer=require('multer');var util=require(_0xe108('0x0'));var path=require(_0xe108('0x1'));var timeout=require('connect-timeout');var express=require(_0xe108('0x2'));var router=express['Router']();var fs_extra=require(_0xe108('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xe108('0x4'));var config=require('../../config/environment');var controller=require('./smsQueueReport.controller');router[_0xe108('0x5')]('/',auth[_0xe108('0x6')](),controller[_0xe108('0x7')]);router[_0xe108('0x5')](_0xe108('0x8'),auth[_0xe108('0x6')](),controller[_0xe108('0x9')]);router[_0xe108('0x5')](_0xe108('0xa'),auth['isAuthenticated'](),controller[_0xe108('0xb')]);router[_0xe108('0xc')]('/',auth[_0xe108('0x6')](),controller['create']);router['put'](_0xe108('0xa'),auth[_0xe108('0x6')](),controller[_0xe108('0xd')]);router['delete'](_0xe108('0xa'),auth[_0xe108('0x6')](),controller[_0xe108('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x3f27=['/describe','/:id','show','post','put','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','get','isAuthenticated','index'];(function(_0x381098,_0x11cc33){var _0x4481a2=function(_0x3e00e6){while(--_0x3e00e6){_0x381098['push'](_0x381098['shift']());}};_0x4481a2(++_0x11cc33);}(_0x3f27,0x1f4));var _0x73f2=function(_0x3737d9,_0x15b5b6){_0x3737d9=_0x3737d9-0x0;var _0x3e6da3=_0x3f27[_0x3737d9];return _0x3e6da3;};'use strict';var multer=require(_0x73f2('0x0'));var util=require(_0x73f2('0x1'));var path=require(_0x73f2('0x2'));var timeout=require(_0x73f2('0x3'));var express=require(_0x73f2('0x4'));var router=express['Router']();var fs_extra=require(_0x73f2('0x5'));var auth=require(_0x73f2('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./smsQueueReport.controller');router[_0x73f2('0x7')]('/',auth[_0x73f2('0x8')](),controller[_0x73f2('0x9')]);router[_0x73f2('0x7')](_0x73f2('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x73f2('0x7')](_0x73f2('0xb'),auth[_0x73f2('0x8')](),controller[_0x73f2('0xc')]);router[_0x73f2('0xd')]('/',auth[_0x73f2('0x8')](),controller['create']);router[_0x73f2('0xe')](_0x73f2('0xb'),auth[_0x73f2('0x8')](),controller['update']);router['delete']('/:id',auth[_0x73f2('0x8')](),controller[_0x73f2('0xf')]);module[_0x73f2('0x10')]=router;
\ No newline at end of file
index b84b7a7..9f72944 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47dd=['STRING','DATE','moment','exports'];(function(_0x5ee6af,_0x5089e3){var _0x517c8a=function(_0x12af0e){while(--_0x12af0e){_0x5ee6af['push'](_0x5ee6af['shift']());}};_0x517c8a(++_0x5089e3);}(_0x47dd,0x176));var _0xd47d=function(_0x251d9c,_0x580977){_0x251d9c=_0x251d9c-0x0;var _0x16ae64=_0x47dd[_0x251d9c];return _0x16ae64;};'use strict';var moment=require(_0xd47d('0x0'));var Sequelize=require('sequelize');module[_0xd47d('0x1')]={'uniqueid':{'type':Sequelize[_0xd47d('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xd47d('0x2')]},'joinAt':{'type':Sequelize[_0xd47d('0x3')]},'leaveAt':{'type':Sequelize[_0xd47d('0x3')]},'acceptAt':{'type':Sequelize[_0xd47d('0x3')]},'exitAt':{'type':Sequelize[_0xd47d('0x3')]},'reason':{'type':Sequelize[_0xd47d('0x2')]}};
\ No newline at end of file
+var _0x6439=['DATE','sequelize','exports','STRING'];(function(_0x30d7ad,_0x13c394){var _0x34369f=function(_0x39be46){while(--_0x39be46){_0x30d7ad['push'](_0x30d7ad['shift']());}};_0x34369f(++_0x13c394);}(_0x6439,0xc9));var _0x9643=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x6439[_0xfae23b];return _0x200640;};'use strict';var moment=require('moment');var Sequelize=require(_0x9643('0x0'));module[_0x9643('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x9643('0x2')]},'joinAt':{'type':Sequelize[_0x9643('0x3')]},'leaveAt':{'type':Sequelize[_0x9643('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 057a15e..8e282d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd315=['key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','sort','where','filters','pick','filter','merge','options','SmsQueueReport','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','sendStatus','status','end','json','limit','undefined','count','offset','set','reject','save','then','error','stack','name','send','index','rawAttributes','fieldName'];(function(_0x5f2b2f,_0x30ac95){var _0x457060=function(_0x3d42c7){while(--_0x3d42c7){_0x5f2b2f['push'](_0x5f2b2f['shift']());}};_0x457060(++_0x30ac95);}(_0xd315,0x1ce));var _0x5d31=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd315[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x5d31('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5d31('0x1'));var jsonpatch=require(_0x5d31('0x2'));var rp=require('request-promise');var moment=require(_0x5d31('0x3'));var BPromise=require(_0x5d31('0x4'));var Mustache=require(_0x5d31('0x5'));var util=require('util');var path=require(_0x5d31('0x6'));var sox=require(_0x5d31('0x7'));var csv=require(_0x5d31('0x8'));var ejs=require(_0x5d31('0x9'));var fs=require('fs');var fs_extra=require(_0x5d31('0xa'));var _=require(_0x5d31('0xb'));var squel=require(_0x5d31('0xc'));var crypto=require(_0x5d31('0xd'));var jsforce=require(_0x5d31('0xe'));var deskjs=require(_0x5d31('0xf'));var toCsv=require(_0x5d31('0x8'));var querystring=require(_0x5d31('0x10'));var Papa=require(_0x5d31('0x11'));var Redis=require(_0x5d31('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x5d31('0x13'));var as=require(_0x5d31('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x5d31('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x5d31('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e515e,_0x544793){_0x544793=_0x544793||0xcc;return function(_0x2ae4a3){if(_0x2ae4a3){return _0x1e515e[_0x5d31('0x17')](_0x544793);}return _0x1e515e[_0x5d31('0x18')](_0x544793)[_0x5d31('0x19')]();};}function respondWithResult(_0x560295,_0x5d0030){_0x5d0030=_0x5d0030||0xc8;return function(_0x192838){if(_0x192838){return _0x560295['status'](_0x5d0030)[_0x5d31('0x1a')](_0x192838);}};}function respondWithFilteredResult(_0x55e18d,_0x311449){return function(_0x1964c0){if(_0x1964c0){var _0x58d026=typeof _0x311449['offset']==='undefined'&&typeof _0x311449[_0x5d31('0x1b')]===_0x5d31('0x1c');var _0x21487d=_0x1964c0[_0x5d31('0x1d')];var _0x3796bc=_0x58d026?0x0:_0x311449[_0x5d31('0x1e')];var _0x8d3164=_0x58d026?_0x1964c0[_0x5d31('0x1d')]:_0x311449['offset']+_0x311449[_0x5d31('0x1b')];var _0x4ab751;if(_0x8d3164>=_0x21487d){_0x8d3164=_0x21487d;_0x4ab751=0xc8;}else{_0x4ab751=0xce;}_0x55e18d[_0x5d31('0x18')](_0x4ab751);return _0x55e18d[_0x5d31('0x1f')]('Content-Range',_0x3796bc+'-'+_0x8d3164+'/'+_0x21487d)[_0x5d31('0x1a')](_0x1964c0);}return null;};}function patchUpdates(_0x48f170){return function(_0x466f6e){try{jsonpatch['apply'](_0x466f6e,_0x48f170,!![]);}catch(_0x33cff9){return BPromise[_0x5d31('0x20')](_0x33cff9);}return _0x466f6e[_0x5d31('0x21')]();};}function saveUpdates(_0x3526dc,_0x11eeba){return function(_0x5181ec){if(_0x5181ec){return _0x5181ec['update'](_0x3526dc)[_0x5d31('0x22')](function(_0x41216e){return _0x41216e;});}return null;};}function removeEntity(_0x1e241b,_0x2982e1){return function(_0xac8730){if(_0xac8730){return _0xac8730['destroy']()['then'](function(){_0x1e241b[_0x5d31('0x18')](0xcc)[_0x5d31('0x19')]();});}};}function handleEntityNotFound(_0x131fe4,_0x5c747c){return function(_0x2f83e1){if(!_0x2f83e1){_0x131fe4[_0x5d31('0x17')](0x194);}return _0x2f83e1;};}function handleError(_0x3c0253,_0x2be0b1){_0x2be0b1=_0x2be0b1||0x1f4;return function(_0x3861e1){logger[_0x5d31('0x23')](_0x3861e1[_0x5d31('0x24')]);if(_0x3861e1[_0x5d31('0x25')]){delete _0x3861e1[_0x5d31('0x25')];}_0x3c0253[_0x5d31('0x18')](_0x2be0b1)[_0x5d31('0x26')](_0x3861e1);};}exports[_0x5d31('0x27')]=function(_0x501ae9,_0x1c7e79){var _0x5359f8={},_0x2e7810={},_0x5bed22={'count':0x0,'rows':[]};var _0x20f297=_['map'](db['SmsQueueReport'][_0x5d31('0x28')],function(_0x43454e){return{'name':_0x43454e[_0x5d31('0x29')],'type':_0x43454e['type'][_0x5d31('0x2a')]};});_0x2e7810[_0x5d31('0x2b')]=_[_0x5d31('0x2c')](_0x20f297,_0x5d31('0x25'));_0x2e7810[_0x5d31('0x2d')]=_[_0x5d31('0x2e')](_0x501ae9[_0x5d31('0x2d')]);_0x2e7810['filters']=_[_0x5d31('0x2f')](_0x2e7810[_0x5d31('0x2b')],_0x2e7810[_0x5d31('0x2d')]);_0x5359f8['attributes']=_[_0x5d31('0x2f')](_0x2e7810['model'],qs['fields'](_0x501ae9[_0x5d31('0x2d')][_0x5d31('0x30')]));_0x5359f8[_0x5d31('0x31')]=_0x5359f8[_0x5d31('0x31')][_0x5d31('0x32')]?_0x5359f8['attributes']:_0x2e7810[_0x5d31('0x2b')];if(!_0x501ae9[_0x5d31('0x2d')][_0x5d31('0x33')]('nolimit')){_0x5359f8['limit']=qs['limit'](_0x501ae9['query'][_0x5d31('0x1b')]);_0x5359f8[_0x5d31('0x1e')]=qs[_0x5d31('0x1e')](_0x501ae9[_0x5d31('0x2d')][_0x5d31('0x1e')]);}_0x5359f8['order']=qs[_0x5d31('0x34')](_0x501ae9[_0x5d31('0x2d')][_0x5d31('0x34')]);_0x5359f8[_0x5d31('0x35')]=qs[_0x5d31('0x36')](_[_0x5d31('0x37')](_0x501ae9['query'],_0x2e7810[_0x5d31('0x36')]),_0x20f297);if(_0x501ae9[_0x5d31('0x2d')][_0x5d31('0x38')]){_0x5359f8['where']=_[_0x5d31('0x39')](_0x5359f8[_0x5d31('0x35')],{'$or':_[_0x5d31('0x2c')](_0x20f297,function(_0x1661ef){if(_0x1661ef['type']!=='VIRTUAL'){var _0xccea4e={};_0xccea4e[_0x1661ef[_0x5d31('0x25')]]={'$like':'%'+_0x501ae9[_0x5d31('0x2d')][_0x5d31('0x38')]+'%'};return _0xccea4e;}})});}_0x5359f8=_['merge']({},_0x5359f8,_0x501ae9[_0x5d31('0x3a')]);var _0x2dbfab={'where':_0x5359f8['where']};return db[_0x5d31('0x3b')]['count'](_0x2dbfab)[_0x5d31('0x22')](function(_0x29fa6f){_0x5bed22[_0x5d31('0x1d')]=_0x29fa6f;if(_0x501ae9[_0x5d31('0x2d')][_0x5d31('0x3c')]){_0x5359f8[_0x5d31('0x3d')]=[{'all':!![]}];}return db[_0x5d31('0x3b')][_0x5d31('0x3e')](_0x5359f8);})[_0x5d31('0x22')](function(_0x33d2d4){_0x5bed22[_0x5d31('0x3f')]=_0x33d2d4;return _0x5bed22;})[_0x5d31('0x22')](respondWithFilteredResult(_0x1c7e79,_0x5359f8))[_0x5d31('0x40')](handleError(_0x1c7e79,null));};exports[_0x5d31('0x41')]=function(_0x16b254,_0x3b3f0b){var _0x454159={'raw':!![],'where':{'id':_0x16b254[_0x5d31('0x42')]['id']}},_0x4aa32e={};_0x4aa32e['model']=_['keys'](db['SmsQueueReport']['rawAttributes']);_0x4aa32e[_0x5d31('0x2d')]=_[_0x5d31('0x2e')](_0x16b254[_0x5d31('0x2d')]);_0x4aa32e[_0x5d31('0x36')]=_[_0x5d31('0x2f')](_0x4aa32e[_0x5d31('0x2b')],_0x4aa32e[_0x5d31('0x2d')]);_0x454159[_0x5d31('0x31')]=_[_0x5d31('0x2f')](_0x4aa32e[_0x5d31('0x2b')],qs[_0x5d31('0x30')](_0x16b254[_0x5d31('0x2d')]['fields']));_0x454159[_0x5d31('0x31')]=_0x454159['attributes'][_0x5d31('0x32')]?_0x454159[_0x5d31('0x31')]:_0x4aa32e[_0x5d31('0x2b')];if(_0x16b254[_0x5d31('0x2d')][_0x5d31('0x3c')]){_0x454159[_0x5d31('0x3d')]=[{'all':!![]}];}_0x454159=_[_0x5d31('0x39')]({},_0x454159,_0x16b254[_0x5d31('0x3a')]);return db[_0x5d31('0x3b')][_0x5d31('0x43')](_0x454159)[_0x5d31('0x22')](handleEntityNotFound(_0x3b3f0b,null))[_0x5d31('0x22')](respondWithResult(_0x3b3f0b,null))[_0x5d31('0x40')](handleError(_0x3b3f0b,null));};exports[_0x5d31('0x44')]=function(_0x3f0ad0,_0x30192c){return db[_0x5d31('0x3b')]['create'](_0x3f0ad0[_0x5d31('0x45')],{})[_0x5d31('0x22')](respondWithResult(_0x30192c,0xc9))['catch'](handleError(_0x30192c,null));};exports[_0x5d31('0x46')]=function(_0x527b31,_0x5d2b8e){if(_0x527b31[_0x5d31('0x45')]['id']){delete _0x527b31[_0x5d31('0x45')]['id'];}return db[_0x5d31('0x3b')][_0x5d31('0x43')]({'where':{'id':_0x527b31[_0x5d31('0x42')]['id']}})[_0x5d31('0x22')](handleEntityNotFound(_0x5d2b8e,null))[_0x5d31('0x22')](saveUpdates(_0x527b31[_0x5d31('0x45')],null))[_0x5d31('0x22')](respondWithResult(_0x5d2b8e,null))['catch'](handleError(_0x5d2b8e,null));};exports['destroy']=function(_0x4f14b2,_0x284b1a){return db['SmsQueueReport']['find']({'where':{'id':_0x4f14b2['params']['id']}})[_0x5d31('0x22')](handleEntityNotFound(_0x284b1a,null))[_0x5d31('0x22')](removeEntity(_0x284b1a,null))[_0x5d31('0x40')](handleError(_0x284b1a,null));};exports['describe']=function(_0x457479,_0x298435){return db[_0x5d31('0x3b')][_0x5d31('0x47')]()[_0x5d31('0x22')](respondWithResult(_0x298435,null))[_0x5d31('0x40')](handleError(_0x298435,null));};
\ No newline at end of file
+var _0x9703=['key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','options','SmsQueueReport','then','includeAll','include','findAll','rows','catch','params','find','create','update','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','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','sendStatus','status','end','json','offset','count','set','apply','save','stack','name','index','map','rawAttributes','type'];(function(_0x17813e,_0x5a5da9){var _0x50ad2b=function(_0x4af077){while(--_0x4af077){_0x17813e['push'](_0x17813e['shift']());}};_0x50ad2b(++_0x5a5da9);}(_0x9703,0x138));var _0x3970=function(_0x3a2a74,_0x3b4775){_0x3a2a74=_0x3a2a74-0x0;var _0x5a2c55=_0x9703[_0x3a2a74];return _0x5a2c55;};'use strict';var emlformat=require(_0x3970('0x0'));var rimraf=require(_0x3970('0x1'));var zipdir=require(_0x3970('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3970('0x3'));var moment=require(_0x3970('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3970('0x5'));var util=require(_0x3970('0x6'));var path=require(_0x3970('0x7'));var sox=require(_0x3970('0x8'));var csv=require('to-csv');var ejs=require(_0x3970('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x3970('0xa'));var deskjs=require(_0x3970('0xb'));var toCsv=require('to-csv');var querystring=require(_0x3970('0xc'));var Papa=require(_0x3970('0xd'));var Redis=require(_0x3970('0xe'));var authService=require(_0x3970('0xf'));var qs=require(_0x3970('0x10'));var as=require(_0x3970('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3970('0x12'))(_0x3970('0x13'));var utils=require(_0x3970('0x14'));var config=require(_0x3970('0x15'));var licenseUtil=require(_0x3970('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1be54b,_0x11b17a){_0x11b17a=_0x11b17a||0xcc;return function(_0x158a52){if(_0x158a52){return _0x1be54b[_0x3970('0x17')](_0x11b17a);}return _0x1be54b[_0x3970('0x18')](_0x11b17a)[_0x3970('0x19')]();};}function respondWithResult(_0x46fcc5,_0x172cdb){_0x172cdb=_0x172cdb||0xc8;return function(_0x133880){if(_0x133880){return _0x46fcc5[_0x3970('0x18')](_0x172cdb)[_0x3970('0x1a')](_0x133880);}};}function respondWithFilteredResult(_0x472165,_0x4c6490){return function(_0x27f3f6){if(_0x27f3f6){var _0x100c14=typeof _0x4c6490[_0x3970('0x1b')]==='undefined'&&typeof _0x4c6490['limit']==='undefined';var _0x221638=_0x27f3f6[_0x3970('0x1c')];var _0x1c5b1=_0x100c14?0x0:_0x4c6490['offset'];var _0x2df97d=_0x100c14?_0x27f3f6['count']:_0x4c6490[_0x3970('0x1b')]+_0x4c6490['limit'];var _0x5638d3;if(_0x2df97d>=_0x221638){_0x2df97d=_0x221638;_0x5638d3=0xc8;}else{_0x5638d3=0xce;}_0x472165[_0x3970('0x18')](_0x5638d3);return _0x472165[_0x3970('0x1d')]('Content-Range',_0x1c5b1+'-'+_0x2df97d+'/'+_0x221638)[_0x3970('0x1a')](_0x27f3f6);}return null;};}function patchUpdates(_0x3db17b){return function(_0x2bad83){try{jsonpatch[_0x3970('0x1e')](_0x2bad83,_0x3db17b,!![]);}catch(_0x1b72fe){return BPromise['reject'](_0x1b72fe);}return _0x2bad83[_0x3970('0x1f')]();};}function saveUpdates(_0x2de7a2,_0x32f5be){return function(_0x4ed514){if(_0x4ed514){return _0x4ed514['update'](_0x2de7a2)['then'](function(_0x12f97a){return _0x12f97a;});}return null;};}function removeEntity(_0x14c295,_0x10dd36){return function(_0x110b02){if(_0x110b02){return _0x110b02['destroy']()['then'](function(){_0x14c295[_0x3970('0x18')](0xcc)[_0x3970('0x19')]();});}};}function handleEntityNotFound(_0x52cf91,_0x27e250){return function(_0x22ed28){if(!_0x22ed28){_0x52cf91[_0x3970('0x17')](0x194);}return _0x22ed28;};}function handleError(_0xc5e426,_0x328de0){_0x328de0=_0x328de0||0x1f4;return function(_0xc1626e){logger['error'](_0xc1626e[_0x3970('0x20')]);if(_0xc1626e[_0x3970('0x21')]){delete _0xc1626e[_0x3970('0x21')];}_0xc5e426[_0x3970('0x18')](_0x328de0)['send'](_0xc1626e);};}exports[_0x3970('0x22')]=function(_0x6f57a5,_0x2202ac){var _0x5a2e43={},_0x52de1c={},_0xb3db05={'count':0x0,'rows':[]};var _0x4f5c1e=_[_0x3970('0x23')](db['SmsQueueReport'][_0x3970('0x24')],function(_0x55be3a){return{'name':_0x55be3a['fieldName'],'type':_0x55be3a[_0x3970('0x25')][_0x3970('0x26')]};});_0x52de1c[_0x3970('0x27')]=_[_0x3970('0x23')](_0x4f5c1e,_0x3970('0x21'));_0x52de1c['query']=_[_0x3970('0x28')](_0x6f57a5[_0x3970('0x29')]);_0x52de1c[_0x3970('0x2a')]=_[_0x3970('0x2b')](_0x52de1c['model'],_0x52de1c['query']);_0x5a2e43[_0x3970('0x2c')]=_[_0x3970('0x2b')](_0x52de1c['model'],qs[_0x3970('0x2d')](_0x6f57a5[_0x3970('0x29')]['fields']));_0x5a2e43['attributes']=_0x5a2e43['attributes'][_0x3970('0x2e')]?_0x5a2e43[_0x3970('0x2c')]:_0x52de1c[_0x3970('0x27')];if(!_0x6f57a5[_0x3970('0x29')][_0x3970('0x2f')](_0x3970('0x30'))){_0x5a2e43[_0x3970('0x31')]=qs['limit'](_0x6f57a5[_0x3970('0x29')][_0x3970('0x31')]);_0x5a2e43['offset']=qs[_0x3970('0x1b')](_0x6f57a5[_0x3970('0x29')][_0x3970('0x1b')]);}_0x5a2e43[_0x3970('0x32')]=qs[_0x3970('0x33')](_0x6f57a5['query'][_0x3970('0x33')]);_0x5a2e43[_0x3970('0x34')]=qs[_0x3970('0x2a')](_['pick'](_0x6f57a5[_0x3970('0x29')],_0x52de1c[_0x3970('0x2a')]),_0x4f5c1e);if(_0x6f57a5[_0x3970('0x29')][_0x3970('0x35')]){_0x5a2e43[_0x3970('0x34')]=_[_0x3970('0x36')](_0x5a2e43[_0x3970('0x34')],{'$or':_[_0x3970('0x23')](_0x4f5c1e,function(_0x23b7d6){if(_0x23b7d6['type']!==_0x3970('0x37')){var _0x74a75={};_0x74a75[_0x23b7d6[_0x3970('0x21')]]={'$like':'%'+_0x6f57a5[_0x3970('0x29')][_0x3970('0x35')]+'%'};return _0x74a75;}})});}_0x5a2e43=_[_0x3970('0x36')]({},_0x5a2e43,_0x6f57a5[_0x3970('0x38')]);var _0xcd0fa={'where':_0x5a2e43['where']};return db[_0x3970('0x39')][_0x3970('0x1c')](_0xcd0fa)[_0x3970('0x3a')](function(_0x14aa5b){_0xb3db05['count']=_0x14aa5b;if(_0x6f57a5[_0x3970('0x29')][_0x3970('0x3b')]){_0x5a2e43[_0x3970('0x3c')]=[{'all':!![]}];}return db['SmsQueueReport'][_0x3970('0x3d')](_0x5a2e43);})[_0x3970('0x3a')](function(_0xbbdfa6){_0xb3db05[_0x3970('0x3e')]=_0xbbdfa6;return _0xb3db05;})[_0x3970('0x3a')](respondWithFilteredResult(_0x2202ac,_0x5a2e43))[_0x3970('0x3f')](handleError(_0x2202ac,null));};exports['show']=function(_0x384fb4,_0x5dca69){var _0x23132d={'raw':!![],'where':{'id':_0x384fb4[_0x3970('0x40')]['id']}},_0x341450={};_0x341450[_0x3970('0x27')]=_['keys'](db[_0x3970('0x39')][_0x3970('0x24')]);_0x341450['query']=_[_0x3970('0x28')](_0x384fb4[_0x3970('0x29')]);_0x341450['filters']=_[_0x3970('0x2b')](_0x341450[_0x3970('0x27')],_0x341450[_0x3970('0x29')]);_0x23132d[_0x3970('0x2c')]=_[_0x3970('0x2b')](_0x341450[_0x3970('0x27')],qs[_0x3970('0x2d')](_0x384fb4['query'][_0x3970('0x2d')]));_0x23132d[_0x3970('0x2c')]=_0x23132d['attributes']['length']?_0x23132d[_0x3970('0x2c')]:_0x341450[_0x3970('0x27')];if(_0x384fb4[_0x3970('0x29')]['includeAll']){_0x23132d[_0x3970('0x3c')]=[{'all':!![]}];}_0x23132d=_[_0x3970('0x36')]({},_0x23132d,_0x384fb4[_0x3970('0x38')]);return db[_0x3970('0x39')][_0x3970('0x41')](_0x23132d)[_0x3970('0x3a')](handleEntityNotFound(_0x5dca69,null))[_0x3970('0x3a')](respondWithResult(_0x5dca69,null))[_0x3970('0x3f')](handleError(_0x5dca69,null));};exports[_0x3970('0x42')]=function(_0xebd863,_0x248018){return db[_0x3970('0x39')][_0x3970('0x42')](_0xebd863['body'],{})[_0x3970('0x3a')](respondWithResult(_0x248018,0xc9))[_0x3970('0x3f')](handleError(_0x248018,null));};exports[_0x3970('0x43')]=function(_0x3bf5ba,_0x399bed){if(_0x3bf5ba[_0x3970('0x44')]['id']){delete _0x3bf5ba[_0x3970('0x44')]['id'];}return db[_0x3970('0x39')][_0x3970('0x41')]({'where':{'id':_0x3bf5ba[_0x3970('0x40')]['id']}})[_0x3970('0x3a')](handleEntityNotFound(_0x399bed,null))['then'](saveUpdates(_0x3bf5ba[_0x3970('0x44')],null))[_0x3970('0x3a')](respondWithResult(_0x399bed,null))['catch'](handleError(_0x399bed,null));};exports['destroy']=function(_0x588094,_0xa55897){return db[_0x3970('0x39')]['find']({'where':{'id':_0x588094[_0x3970('0x40')]['id']}})['then'](handleEntityNotFound(_0xa55897,null))[_0x3970('0x3a')](removeEntity(_0xa55897,null))[_0x3970('0x3f')](handleError(_0xa55897,null));};exports[_0x3970('0x45')]=function(_0x50f5a5,_0x271c34){return db[_0x3970('0x39')][_0x3970('0x45')]()[_0x3970('0x3a')](respondWithResult(_0x271c34,null))[_0x3970('0x3f')](handleError(_0x271c34,null));};
\ No newline at end of file
index 65240b9..18f0ac8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['path','rimraf','./smsQueueReport.attributes','exports','define','report_sms_queue','uniqueid','../../config/logger','api','moment','bluebird'];(function(_0x3fdc4b,_0x39267e){var _0x4b0ea5=function(_0x2ed49b){while(--_0x2ed49b){_0x3fdc4b['push'](_0x3fdc4b['shift']());}};_0x4b0ea5(++_0x39267e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2fc012,_0x503e5b){_0x2fc012=_0x2fc012-0x0;var _0x2891f9=_0xcb91[_0x2fc012];return _0x2891f9;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));module[_0x1cb9('0x7')]=function(_0x53ffbd,_0x226b69){return _0x53ffbd[_0x1cb9('0x8')]('SmsQueueReport',attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[{'name':_0x1cb9('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports','define','SmsQueueReport','report_sms_queue','uniqueid','lodash','util'];(function(_0x275a90,_0xa0f3cc){var _0x17b092=function(_0x45ec5a){while(--_0x45ec5a){_0x275a90['push'](_0x275a90['shift']());}};_0x17b092(++_0xa0f3cc);}(_0xe706,0xa3));var _0x6e70=function(_0x3eee56,_0x176daf){_0x3eee56=_0x3eee56-0x0;var _0x506bcd=_0xe706[_0x3eee56];return _0x506bcd;};'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'));module[_0x6e70('0xa')]=function(_0x1b0389,_0x4381d1){return _0x1b0389[_0x6e70('0xb')](_0x6e70('0xc'),attributes,{'tableName':_0x6e70('0xd'),'paranoid':![],'indexes':[{'name':_0x6e70('0xe'),'fields':[_0x6e70('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index cffdacf..017a61a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x641e=['body','options','raw','stringify','UpdateSmsQueueReport','update','where','attributes','limit','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','http','request','then','info','SmsQueueReport,\x20%s,\x20%s','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create'];(function(_0x2f925d,_0x28c728){var _0x1e65a5=function(_0x13a46f){while(--_0x13a46f){_0x2f925d['push'](_0x2f925d['shift']());}};_0x1e65a5(++_0x28c728);}(_0x641e,0x153));var _0xe641=function(_0x26474a,_0x3cfcfd){_0x26474a=_0x26474a-0x0;var _0x32e0e0=_0x641e[_0x26474a];return _0x32e0e0;};'use strict';var _=require('lodash');var util=require(_0xe641('0x0'));var moment=require(_0xe641('0x1'));var BPromise=require(_0xe641('0x2'));var rs=require(_0xe641('0x3'));var fs=require('fs');var Redis=require(_0xe641('0x4'));var db=require(_0xe641('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xe641('0x6'));var config=require(_0xe641('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe641('0x8')][_0xe641('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x66fdfb,_0x3d76cd,_0x44ea00){return new BPromise(function(_0xcfb3e3,_0xb568ce){return client[_0xe641('0xa')](_0x66fdfb,_0x44ea00)[_0xe641('0xb')](function(_0x52c1f3){logger[_0xe641('0xc')](_0xe641('0xd'),_0x3d76cd,'request\x20sent');logger[_0xe641('0xe')](_0xe641('0xf'),_0x3d76cd,_0xe641('0x10'),JSON['stringify'](_0x52c1f3));if(_0x52c1f3[_0xe641('0x11')]){if(_0x52c1f3[_0xe641('0x11')]['code']===0x1f4){logger['error'](_0xe641('0xd'),_0x3d76cd,_0x52c1f3['error'][_0xe641('0x12')]);return _0xb568ce(_0x52c1f3['error']['message']);}logger[_0xe641('0x11')](_0xe641('0xd'),_0x3d76cd,_0x52c1f3[_0xe641('0x11')]['message']);return _0xcfb3e3(_0x52c1f3[_0xe641('0x11')][_0xe641('0x12')]);}else{logger[_0xe641('0xc')](_0xe641('0xd'),_0x3d76cd,_0xe641('0x10'));_0xcfb3e3(_0x52c1f3[_0xe641('0x13')][_0xe641('0x12')]);}})[_0xe641('0x14')](function(_0xc7d9c7){logger[_0xe641('0x11')]('SmsQueueReport,\x20%s,\x20%s',_0x3d76cd,_0xc7d9c7);_0xb568ce(_0xc7d9c7);});});}exports[_0xe641('0x15')]=function(_0x4399ae){var _0x7d5b04=this;return new Promise(function(_0x1f901a,_0x1aaded){return db[_0xe641('0x16')][_0xe641('0x17')](_0x4399ae[_0xe641('0x18')],{'raw':_0x4399ae[_0xe641('0x19')]?_0x4399ae[_0xe641('0x19')][_0xe641('0x1a')]===undefined?!![]:![]:!![]})[_0xe641('0xb')](function(_0x3a7869){logger[_0xe641('0xc')](_0xe641('0x15'),_0x4399ae);logger['debug']('CreateSmsQueueReport',_0x4399ae,JSON[_0xe641('0x1b')](_0x3a7869));_0x1f901a(_0x3a7869);})[_0xe641('0x14')](function(_0x5d5b71){logger['error'](_0xe641('0x15'),_0x5d5b71[_0xe641('0x12')],_0x4399ae);_0x1aaded(_0x7d5b04[_0xe641('0x11')](0x1f4,_0x5d5b71[_0xe641('0x12')]));});});};exports[_0xe641('0x1c')]=function(_0x25374e){var _0x5036a0=this;return new Promise(function(_0x1b08ca,_0x2d9d03){return db[_0xe641('0x16')][_0xe641('0x1d')](_0x25374e[_0xe641('0x18')],{'raw':_0x25374e[_0xe641('0x19')]?_0x25374e['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x25374e[_0xe641('0x19')]?_0x25374e['options'][_0xe641('0x1e')]||null:null,'attributes':_0x25374e[_0xe641('0x19')]?_0x25374e['options'][_0xe641('0x1f')]||null:null,'limit':_0x25374e[_0xe641('0x19')]?_0x25374e[_0xe641('0x19')][_0xe641('0x20')]||null:null})[_0xe641('0xb')](function(_0x464176){logger['info'](_0xe641('0x1c'),_0x25374e);logger['debug']('UpdateSmsQueueReport',_0x25374e,JSON['stringify'](_0x464176));_0x1b08ca(_0x464176);})['catch'](function(_0x318ac4){logger[_0xe641('0x11')](_0xe641('0x1c'),_0x318ac4[_0xe641('0x12')],_0x25374e);_0x2d9d03(_0x5036a0[_0xe641('0x11')](0x1f4,_0x318ac4[_0xe641('0x12')]));});});};
\ No newline at end of file
+var _0x0012=['where','attributes','limit','UpdateSmsQueueReport','lodash','moment','randomstring','ioredis','../../config/logger','jayson/promise','client','http','request','then','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','CreateSmsQueueReport','create','body','options','raw','update'];(function(_0x4cec6c,_0x98a94e){var _0x105876=function(_0x465baa){while(--_0x465baa){_0x4cec6c['push'](_0x4cec6c['shift']());}};_0x105876(++_0x98a94e);}(_0x0012,0xd6));var _0x2001=function(_0x3acd5d,_0x4a424a){_0x3acd5d=_0x3acd5d-0x0;var _0x586bed=_0x0012[_0x3acd5d];return _0x586bed;};'use strict';var _=require(_0x2001('0x0'));var util=require('util');var moment=require(_0x2001('0x1'));var BPromise=require('bluebird');var rs=require(_0x2001('0x2'));var fs=require('fs');var Redis=require(_0x2001('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2001('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2001('0x5'));var client=jayson[_0x2001('0x6')][_0x2001('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4ff638,_0x38f048,_0x53715c){return new BPromise(function(_0x5f1ce6,_0x425b87){return client[_0x2001('0x8')](_0x4ff638,_0x53715c)[_0x2001('0x9')](function(_0x29e40a){logger['info'](_0x2001('0xa'),_0x38f048,_0x2001('0xb'));logger[_0x2001('0xc')](_0x2001('0xd'),_0x38f048,_0x2001('0xb'),JSON[_0x2001('0xe')](_0x29e40a));if(_0x29e40a[_0x2001('0xf')]){if(_0x29e40a['error']['code']===0x1f4){logger[_0x2001('0xf')](_0x2001('0xa'),_0x38f048,_0x29e40a['error'][_0x2001('0x10')]);return _0x425b87(_0x29e40a['error'][_0x2001('0x10')]);}logger[_0x2001('0xf')]('SmsQueueReport,\x20%s,\x20%s',_0x38f048,_0x29e40a['error'][_0x2001('0x10')]);return _0x5f1ce6(_0x29e40a[_0x2001('0xf')][_0x2001('0x10')]);}else{logger[_0x2001('0x11')](_0x2001('0xa'),_0x38f048,_0x2001('0xb'));_0x5f1ce6(_0x29e40a[_0x2001('0x12')]['message']);}})[_0x2001('0x13')](function(_0x331a04){logger[_0x2001('0xf')](_0x2001('0xa'),_0x38f048,_0x331a04);_0x425b87(_0x331a04);});});}exports[_0x2001('0x14')]=function(_0x473636){var _0x3e8cec=this;return new Promise(function(_0x52152d,_0xd0ffd1){return db['SmsQueueReport'][_0x2001('0x15')](_0x473636[_0x2001('0x16')],{'raw':_0x473636[_0x2001('0x17')]?_0x473636[_0x2001('0x17')][_0x2001('0x18')]===undefined?!![]:![]:!![]})[_0x2001('0x9')](function(_0x444df9){logger['info'](_0x2001('0x14'),_0x473636);logger[_0x2001('0xc')](_0x2001('0x14'),_0x473636,JSON[_0x2001('0xe')](_0x444df9));_0x52152d(_0x444df9);})[_0x2001('0x13')](function(_0x5d9d8f){logger[_0x2001('0xf')]('CreateSmsQueueReport',_0x5d9d8f['message'],_0x473636);_0xd0ffd1(_0x3e8cec[_0x2001('0xf')](0x1f4,_0x5d9d8f[_0x2001('0x10')]));});});};exports['UpdateSmsQueueReport']=function(_0x559149){var _0x1c70b6=this;return new Promise(function(_0x3ae628,_0x491b67){return db['SmsQueueReport'][_0x2001('0x19')](_0x559149[_0x2001('0x16')],{'raw':_0x559149[_0x2001('0x17')]?_0x559149[_0x2001('0x17')][_0x2001('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x559149[_0x2001('0x17')]?_0x559149[_0x2001('0x17')][_0x2001('0x1a')]||null:null,'attributes':_0x559149[_0x2001('0x17')]?_0x559149['options'][_0x2001('0x1b')]||null:null,'limit':_0x559149[_0x2001('0x17')]?_0x559149[_0x2001('0x17')][_0x2001('0x1c')]||null:null})['then'](function(_0x156354){logger[_0x2001('0x11')](_0x2001('0x1d'),_0x559149);logger[_0x2001('0xc')](_0x2001('0x1d'),_0x559149,JSON[_0x2001('0xe')](_0x156354));_0x3ae628(_0x156354);})['catch'](function(_0x28c7cf){logger['error'](_0x2001('0x1d'),_0x28c7cf['message'],_0x559149);_0x491b67(_0x1c70b6[_0x2001('0xf')](0x1f4,_0x28c7cf[_0x2001('0x10')]));});});};
\ No newline at end of file
index 32fbea3..1bbc1cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5089=['show','create','put','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','/:id'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x5089,0x1bb));var _0x9508=function(_0x22e47a,_0x4ea10c){_0x22e47a=_0x22e47a-0x0;var _0x15a12a=_0x5089[_0x22e47a];return _0x15a12a;};'use strict';var multer=require(_0x9508('0x0'));var util=require(_0x9508('0x1'));var path=require('path');var timeout=require(_0x9508('0x2'));var express=require(_0x9508('0x3'));var router=express[_0x9508('0x4')]();var fs_extra=require(_0x9508('0x5'));var auth=require(_0x9508('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x9508('0x7'));var controller=require('./smsTransferReport.controller');router[_0x9508('0x8')]('/',auth[_0x9508('0x9')](),controller[_0x9508('0xa')]);router['get'](_0x9508('0xb'),auth[_0x9508('0x9')](),controller['describe']);router[_0x9508('0x8')](_0x9508('0xc'),auth['isAuthenticated'](),controller[_0x9508('0xd')]);router['post']('/',auth[_0x9508('0x9')](),controller[_0x9508('0xe')]);router[_0x9508('0xf')](_0x9508('0xc'),auth[_0x9508('0x9')](),controller[_0x9508('0x10')]);router['delete'](_0x9508('0xc'),auth['isAuthenticated'](),controller[_0x9508('0x11')]);module[_0x9508('0x12')]=router;
\ No newline at end of file
+var _0x31af=['delete','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','post','create','put','update'];(function(_0x36b909,_0xc33e4b){var _0x598733=function(_0x382fcb){while(--_0x382fcb){_0x36b909['push'](_0x36b909['shift']());}};_0x598733(++_0xc33e4b);}(_0x31af,0xde));var _0xf31a=function(_0x5d8966,_0x83813){_0x5d8966=_0x5d8966-0x0;var _0x2444c4=_0x31af[_0x5d8966];return _0x2444c4;};'use strict';var multer=require(_0xf31a('0x0'));var util=require(_0xf31a('0x1'));var path=require(_0xf31a('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf31a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xf31a('0x4'));var interaction=require(_0xf31a('0x5'));var config=require(_0xf31a('0x6'));var controller=require(_0xf31a('0x7'));router['get']('/',auth[_0xf31a('0x8')](),controller[_0xf31a('0x9')]);router[_0xf31a('0xa')](_0xf31a('0xb'),auth['isAuthenticated'](),controller[_0xf31a('0xc')]);router[_0xf31a('0xa')](_0xf31a('0xd'),auth[_0xf31a('0x8')](),controller['show']);router[_0xf31a('0xe')]('/',auth[_0xf31a('0x8')](),controller[_0xf31a('0xf')]);router[_0xf31a('0x10')](_0xf31a('0xd'),auth['isAuthenticated'](),controller[_0xf31a('0x11')]);router[_0xf31a('0x12')](_0xf31a('0xd'),auth[_0xf31a('0x8')](),controller['destroy']);module[_0xf31a('0x13')]=router;
\ No newline at end of file
index 3a0e078..414232b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x497826,_0x164921){var _0x4b3ae6=function(_0x1c18e1){while(--_0x1c18e1){_0x497826['push'](_0x497826['shift']());}};_0x4b3ae6(++_0x164921);}(_0x9c44,0x178));var _0x49c4=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0x9c44[_0x6cf19c];return _0xce14f3;};'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
+var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x2e3b22,_0x1e3c7e){var _0x150e7c=function(_0x395356){while(--_0x395356){_0x2e3b22['push'](_0x2e3b22['shift']());}};_0x150e7c(++_0x1e3c7e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'use strict';var moment=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x0a9e('0x3'),'agent',_0x0a9e('0x4')),'allowNull':![],'defaultValue':_0x0a9e('0x4')},'transferredAt':{'type':Sequelize[_0x0a9e('0x5')],'allowNull':![],'defaultValue':Sequelize[_0x0a9e('0x6')]}};
\ No newline at end of file
index 03b54d0..9b2e194 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddb5=['zip-dir','fast-json-patch','bluebird','mustache','util','sox','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/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','key','query','filters','intersection','attributes','model','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','SmsTransferReport','includeAll','findAll','rows','params','keys','include','find','catch','create','body','describe','eml-format','rimraf'];(function(_0x30cd88,_0x7b6d56){var _0x5cc56f=function(_0x3fcbd6){while(--_0x3fcbd6){_0x30cd88['push'](_0x30cd88['shift']());}};_0x5cc56f(++_0x7b6d56);}(_0xddb5,0x96));var _0x5ddb=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xddb5[_0x2b4411];return _0x8e41ef;};'use strict';var emlformat=require(_0x5ddb('0x0'));var rimraf=require(_0x5ddb('0x1'));var zipdir=require(_0x5ddb('0x2'));var jsonpatch=require(_0x5ddb('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5ddb('0x4'));var Mustache=require(_0x5ddb('0x5'));var util=require(_0x5ddb('0x6'));var path=require('path');var sox=require(_0x5ddb('0x7'));var csv=require(_0x5ddb('0x8'));var ejs=require(_0x5ddb('0x9'));var fs=require('fs');var fs_extra=require(_0x5ddb('0xa'));var _=require(_0x5ddb('0xb'));var squel=require(_0x5ddb('0xc'));var crypto=require(_0x5ddb('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x5ddb('0xe'));var toCsv=require(_0x5ddb('0x8'));var querystring=require(_0x5ddb('0xf'));var Papa=require(_0x5ddb('0x10'));var Redis=require(_0x5ddb('0x11'));var authService=require(_0x5ddb('0x12'));var qs=require(_0x5ddb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5ddb('0x14'));var logger=require(_0x5ddb('0x15'))(_0x5ddb('0x16'));var utils=require(_0x5ddb('0x17'));var config=require(_0x5ddb('0x18'));var licenseUtil=require(_0x5ddb('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x289241,_0x36f386){_0x36f386=_0x36f386||0xcc;return function(_0x50fe44){if(_0x50fe44){return _0x289241[_0x5ddb('0x1a')](_0x36f386);}return _0x289241[_0x5ddb('0x1b')](_0x36f386)[_0x5ddb('0x1c')]();};}function respondWithResult(_0x1ba0a4,_0x4b6254){_0x4b6254=_0x4b6254||0xc8;return function(_0x21a901){if(_0x21a901){return _0x1ba0a4[_0x5ddb('0x1b')](_0x4b6254)[_0x5ddb('0x1d')](_0x21a901);}};}function respondWithFilteredResult(_0xb02d2a,_0x58fba5){return function(_0x5c9030){if(_0x5c9030){var _0x137c77=typeof _0x58fba5[_0x5ddb('0x1e')]===_0x5ddb('0x1f')&&typeof _0x58fba5[_0x5ddb('0x20')]===_0x5ddb('0x1f');var _0x5def29=_0x5c9030[_0x5ddb('0x21')];var _0x493504=_0x137c77?0x0:_0x58fba5['offset'];var _0xff93a0=_0x137c77?_0x5c9030['count']:_0x58fba5[_0x5ddb('0x1e')]+_0x58fba5[_0x5ddb('0x20')];var _0xd5a5b8;if(_0xff93a0>=_0x5def29){_0xff93a0=_0x5def29;_0xd5a5b8=0xc8;}else{_0xd5a5b8=0xce;}_0xb02d2a['status'](_0xd5a5b8);return _0xb02d2a[_0x5ddb('0x22')](_0x5ddb('0x23'),_0x493504+'-'+_0xff93a0+'/'+_0x5def29)[_0x5ddb('0x1d')](_0x5c9030);}return null;};}function patchUpdates(_0x5b5da8){return function(_0x3a47da){try{jsonpatch[_0x5ddb('0x24')](_0x3a47da,_0x5b5da8,!![]);}catch(_0x20973f){return BPromise[_0x5ddb('0x25')](_0x20973f);}return _0x3a47da['save']();};}function saveUpdates(_0x39b5be,_0x214838){return function(_0x51c4c6){if(_0x51c4c6){return _0x51c4c6[_0x5ddb('0x26')](_0x39b5be)[_0x5ddb('0x27')](function(_0x46533f){return _0x46533f;});}return null;};}function removeEntity(_0x4abc01,_0x54e21d){return function(_0x24eb73){if(_0x24eb73){return _0x24eb73[_0x5ddb('0x28')]()['then'](function(){_0x4abc01['status'](0xcc)[_0x5ddb('0x1c')]();});}};}function handleEntityNotFound(_0x1d79ca,_0x3cf80f){return function(_0x45f9f1){if(!_0x45f9f1){_0x1d79ca[_0x5ddb('0x1a')](0x194);}return _0x45f9f1;};}function handleError(_0xd315c4,_0x305ad1){_0x305ad1=_0x305ad1||0x1f4;return function(_0x30ebae){logger[_0x5ddb('0x29')](_0x30ebae['stack']);if(_0x30ebae['name']){delete _0x30ebae[_0x5ddb('0x2a')];}_0xd315c4[_0x5ddb('0x1b')](_0x305ad1)[_0x5ddb('0x2b')](_0x30ebae);};}exports[_0x5ddb('0x2c')]=function(_0x263d9b,_0x58732e){var _0x56dba6={},_0x85190f={},_0x5f4edc={'count':0x0,'rows':[]};var _0x5e2d7a=_[_0x5ddb('0x2d')](db['SmsTransferReport'][_0x5ddb('0x2e')],function(_0x2ff4cd){return{'name':_0x2ff4cd[_0x5ddb('0x2f')],'type':_0x2ff4cd['type'][_0x5ddb('0x30')]};});_0x85190f['model']=_['map'](_0x5e2d7a,_0x5ddb('0x2a'));_0x85190f['query']=_['keys'](_0x263d9b[_0x5ddb('0x31')]);_0x85190f[_0x5ddb('0x32')]=_[_0x5ddb('0x33')](_0x85190f['model'],_0x85190f[_0x5ddb('0x31')]);_0x56dba6[_0x5ddb('0x34')]=_[_0x5ddb('0x33')](_0x85190f[_0x5ddb('0x35')],qs[_0x5ddb('0x36')](_0x263d9b[_0x5ddb('0x31')]['fields']));_0x56dba6[_0x5ddb('0x34')]=_0x56dba6['attributes'][_0x5ddb('0x37')]?_0x56dba6[_0x5ddb('0x34')]:_0x85190f['model'];if(!_0x263d9b['query']['hasOwnProperty']('nolimit')){_0x56dba6[_0x5ddb('0x20')]=qs[_0x5ddb('0x20')](_0x263d9b[_0x5ddb('0x31')][_0x5ddb('0x20')]);_0x56dba6[_0x5ddb('0x1e')]=qs['offset'](_0x263d9b[_0x5ddb('0x31')][_0x5ddb('0x1e')]);}_0x56dba6[_0x5ddb('0x38')]=qs['sort'](_0x263d9b[_0x5ddb('0x31')][_0x5ddb('0x39')]);_0x56dba6[_0x5ddb('0x3a')]=qs[_0x5ddb('0x32')](_[_0x5ddb('0x3b')](_0x263d9b[_0x5ddb('0x31')],_0x85190f['filters']),_0x5e2d7a);if(_0x263d9b[_0x5ddb('0x31')][_0x5ddb('0x3c')]){_0x56dba6[_0x5ddb('0x3a')]=_[_0x5ddb('0x3d')](_0x56dba6['where'],{'$or':_[_0x5ddb('0x2d')](_0x5e2d7a,function(_0x41cbce){if(_0x41cbce['type']!==_0x5ddb('0x3e')){var _0x295fc4={};_0x295fc4[_0x41cbce['name']]={'$like':'%'+_0x263d9b[_0x5ddb('0x31')]['filter']+'%'};return _0x295fc4;}})});}_0x56dba6=_[_0x5ddb('0x3d')]({},_0x56dba6,_0x263d9b[_0x5ddb('0x3f')]);var _0xd1343a={'where':_0x56dba6['where']};return db[_0x5ddb('0x40')][_0x5ddb('0x21')](_0xd1343a)['then'](function(_0x5e48fb){_0x5f4edc[_0x5ddb('0x21')]=_0x5e48fb;if(_0x263d9b[_0x5ddb('0x31')][_0x5ddb('0x41')]){_0x56dba6['include']=[{'all':!![]}];}return db['SmsTransferReport'][_0x5ddb('0x42')](_0x56dba6);})[_0x5ddb('0x27')](function(_0xefd238){_0x5f4edc[_0x5ddb('0x43')]=_0xefd238;return _0x5f4edc;})[_0x5ddb('0x27')](respondWithFilteredResult(_0x58732e,_0x56dba6))['catch'](handleError(_0x58732e,null));};exports['show']=function(_0x212d28,_0x5dff9d){var _0x359ed6={'raw':!![],'where':{'id':_0x212d28[_0x5ddb('0x44')]['id']}},_0x2d58c6={};_0x2d58c6['model']=_[_0x5ddb('0x45')](db[_0x5ddb('0x40')][_0x5ddb('0x2e')]);_0x2d58c6['query']=_[_0x5ddb('0x45')](_0x212d28[_0x5ddb('0x31')]);_0x2d58c6[_0x5ddb('0x32')]=_[_0x5ddb('0x33')](_0x2d58c6[_0x5ddb('0x35')],_0x2d58c6[_0x5ddb('0x31')]);_0x359ed6[_0x5ddb('0x34')]=_[_0x5ddb('0x33')](_0x2d58c6['model'],qs[_0x5ddb('0x36')](_0x212d28[_0x5ddb('0x31')][_0x5ddb('0x36')]));_0x359ed6[_0x5ddb('0x34')]=_0x359ed6[_0x5ddb('0x34')][_0x5ddb('0x37')]?_0x359ed6[_0x5ddb('0x34')]:_0x2d58c6[_0x5ddb('0x35')];if(_0x212d28[_0x5ddb('0x31')]['includeAll']){_0x359ed6[_0x5ddb('0x46')]=[{'all':!![]}];}_0x359ed6=_[_0x5ddb('0x3d')]({},_0x359ed6,_0x212d28['options']);return db[_0x5ddb('0x40')][_0x5ddb('0x47')](_0x359ed6)[_0x5ddb('0x27')](handleEntityNotFound(_0x5dff9d,null))[_0x5ddb('0x27')](respondWithResult(_0x5dff9d,null))[_0x5ddb('0x48')](handleError(_0x5dff9d,null));};exports[_0x5ddb('0x49')]=function(_0x9d3435,_0x53881b){return db[_0x5ddb('0x40')][_0x5ddb('0x49')](_0x9d3435[_0x5ddb('0x4a')],{})['then'](respondWithResult(_0x53881b,0xc9))[_0x5ddb('0x48')](handleError(_0x53881b,null));};exports[_0x5ddb('0x26')]=function(_0x5b4086,_0x2a362e){if(_0x5b4086['body']['id']){delete _0x5b4086[_0x5ddb('0x4a')]['id'];}return db[_0x5ddb('0x40')][_0x5ddb('0x47')]({'where':{'id':_0x5b4086['params']['id']}})[_0x5ddb('0x27')](handleEntityNotFound(_0x2a362e,null))['then'](saveUpdates(_0x5b4086['body'],null))['then'](respondWithResult(_0x2a362e,null))[_0x5ddb('0x48')](handleError(_0x2a362e,null));};exports[_0x5ddb('0x28')]=function(_0x49e452,_0x4a5cb8){return db['SmsTransferReport'][_0x5ddb('0x47')]({'where':{'id':_0x49e452[_0x5ddb('0x44')]['id']}})['then'](handleEntityNotFound(_0x4a5cb8,null))[_0x5ddb('0x27')](removeEntity(_0x4a5cb8,null))[_0x5ddb('0x48')](handleError(_0x4a5cb8,null));};exports[_0x5ddb('0x4b')]=function(_0x3242a9,_0x1e1756){return db[_0x5ddb('0x40')][_0x5ddb('0x4b')]()[_0x5ddb('0x27')](respondWithResult(_0x1e1756,null))[_0x5ddb('0x48')](handleError(_0x1e1756,null));};
\ No newline at end of file
+var _0x5089=['path','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','error','name','send','map','SmsTransferReport','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','merge','where','then','includeAll','include','findAll','rows','catch','params','options','find','create','body','update','destroy','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache'];(function(_0x9b99da,_0x5a8535){var _0x52a08f=function(_0x4d1e6e){while(--_0x4d1e6e){_0x9b99da['push'](_0x9b99da['shift']());}};_0x52a08f(++_0x5a8535);}(_0x5089,0xd4));var _0x9508=function(_0x358806,_0x322b66){_0x358806=_0x358806-0x0;var _0x19fdcb=_0x5089[_0x358806];return _0x19fdcb;};'use strict';var emlformat=require(_0x9508('0x0'));var rimraf=require(_0x9508('0x1'));var zipdir=require(_0x9508('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9508('0x3'));var moment=require(_0x9508('0x4'));var BPromise=require(_0x9508('0x5'));var Mustache=require(_0x9508('0x6'));var util=require('util');var path=require(_0x9508('0x7'));var sox=require(_0x9508('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9508('0x9'));var _=require(_0x9508('0xa'));var squel=require(_0x9508('0xb'));var crypto=require('crypto');var jsforce=require(_0x9508('0xc'));var deskjs=require(_0x9508('0xd'));var toCsv=require(_0x9508('0xe'));var querystring=require(_0x9508('0xf'));var Papa=require(_0x9508('0x10'));var Redis=require(_0x9508('0x11'));var authService=require(_0x9508('0x12'));var qs=require(_0x9508('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9508('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x9508('0x15'));var config=require(_0x9508('0x16'));var licenseUtil=require(_0x9508('0x17'));var db=require(_0x9508('0x18'))['db'];function respondWithStatusCode(_0x4e4737,_0x3beb5a){_0x3beb5a=_0x3beb5a||0xcc;return function(_0x5939fc){if(_0x5939fc){return _0x4e4737[_0x9508('0x19')](_0x3beb5a);}return _0x4e4737[_0x9508('0x1a')](_0x3beb5a)[_0x9508('0x1b')]();};}function respondWithResult(_0x468e78,_0x2219f1){_0x2219f1=_0x2219f1||0xc8;return function(_0x555de9){if(_0x555de9){return _0x468e78[_0x9508('0x1a')](_0x2219f1)[_0x9508('0x1c')](_0x555de9);}};}function respondWithFilteredResult(_0x14fd50,_0x5289fc){return function(_0x5e5701){if(_0x5e5701){var _0x1453ae=typeof _0x5289fc['offset']==='undefined'&&typeof _0x5289fc['limit']==='undefined';var _0x5709a5=_0x5e5701[_0x9508('0x1d')];var _0x1c1cdf=_0x1453ae?0x0:_0x5289fc['offset'];var _0x5c1ef9=_0x1453ae?_0x5e5701[_0x9508('0x1d')]:_0x5289fc[_0x9508('0x1e')]+_0x5289fc[_0x9508('0x1f')];var _0x2c9bf9;if(_0x5c1ef9>=_0x5709a5){_0x5c1ef9=_0x5709a5;_0x2c9bf9=0xc8;}else{_0x2c9bf9=0xce;}_0x14fd50['status'](_0x2c9bf9);return _0x14fd50[_0x9508('0x20')](_0x9508('0x21'),_0x1c1cdf+'-'+_0x5c1ef9+'/'+_0x5709a5)[_0x9508('0x1c')](_0x5e5701);}return null;};}function patchUpdates(_0x5e5238){return function(_0x239ede){try{jsonpatch[_0x9508('0x22')](_0x239ede,_0x5e5238,!![]);}catch(_0x58ac36){return BPromise[_0x9508('0x23')](_0x58ac36);}return _0x239ede[_0x9508('0x24')]();};}function saveUpdates(_0x41d6eb,_0x12c7c3){return function(_0x59d8cc){if(_0x59d8cc){return _0x59d8cc['update'](_0x41d6eb)['then'](function(_0x1a5cb7){return _0x1a5cb7;});}return null;};}function removeEntity(_0x5b30cc,_0x1b387c){return function(_0x2d2e7e){if(_0x2d2e7e){return _0x2d2e7e['destroy']()['then'](function(){_0x5b30cc['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x9e758c,_0x5d9008){return function(_0x201685){if(!_0x201685){_0x9e758c[_0x9508('0x19')](0x194);}return _0x201685;};}function handleError(_0x2f1049,_0x44de04){_0x44de04=_0x44de04||0x1f4;return function(_0x2b1709){logger[_0x9508('0x25')](_0x2b1709['stack']);if(_0x2b1709[_0x9508('0x26')]){delete _0x2b1709[_0x9508('0x26')];}_0x2f1049[_0x9508('0x1a')](_0x44de04)[_0x9508('0x27')](_0x2b1709);};}exports['index']=function(_0x4554ef,_0x33c5c1){var _0x5322c9={},_0x22d87c={},_0x38ad62={'count':0x0,'rows':[]};var _0x2fdd79=_[_0x9508('0x28')](db[_0x9508('0x29')][_0x9508('0x2a')],function(_0x4f6cbf){return{'name':_0x4f6cbf['fieldName'],'type':_0x4f6cbf[_0x9508('0x2b')]['key']};});_0x22d87c[_0x9508('0x2c')]=_[_0x9508('0x28')](_0x2fdd79,_0x9508('0x26'));_0x22d87c[_0x9508('0x2d')]=_[_0x9508('0x2e')](_0x4554ef[_0x9508('0x2d')]);_0x22d87c[_0x9508('0x2f')]=_[_0x9508('0x30')](_0x22d87c[_0x9508('0x2c')],_0x22d87c[_0x9508('0x2d')]);_0x5322c9[_0x9508('0x31')]=_['intersection'](_0x22d87c[_0x9508('0x2c')],qs[_0x9508('0x32')](_0x4554ef[_0x9508('0x2d')][_0x9508('0x32')]));_0x5322c9[_0x9508('0x31')]=_0x5322c9[_0x9508('0x31')][_0x9508('0x33')]?_0x5322c9['attributes']:_0x22d87c[_0x9508('0x2c')];if(!_0x4554ef[_0x9508('0x2d')]['hasOwnProperty'](_0x9508('0x34'))){_0x5322c9[_0x9508('0x1f')]=qs[_0x9508('0x1f')](_0x4554ef[_0x9508('0x2d')][_0x9508('0x1f')]);_0x5322c9[_0x9508('0x1e')]=qs[_0x9508('0x1e')](_0x4554ef[_0x9508('0x2d')][_0x9508('0x1e')]);}_0x5322c9[_0x9508('0x35')]=qs[_0x9508('0x36')](_0x4554ef[_0x9508('0x2d')][_0x9508('0x36')]);_0x5322c9['where']=qs[_0x9508('0x2f')](_[_0x9508('0x37')](_0x4554ef[_0x9508('0x2d')],_0x22d87c[_0x9508('0x2f')]),_0x2fdd79);if(_0x4554ef[_0x9508('0x2d')][_0x9508('0x38')]){_0x5322c9['where']=_[_0x9508('0x39')](_0x5322c9[_0x9508('0x3a')],{'$or':_[_0x9508('0x28')](_0x2fdd79,function(_0x309c68){if(_0x309c68['type']!=='VIRTUAL'){var _0x235b2a={};_0x235b2a[_0x309c68[_0x9508('0x26')]]={'$like':'%'+_0x4554ef[_0x9508('0x2d')][_0x9508('0x38')]+'%'};return _0x235b2a;}})});}_0x5322c9=_[_0x9508('0x39')]({},_0x5322c9,_0x4554ef['options']);var _0x2199e2={'where':_0x5322c9[_0x9508('0x3a')]};return db['SmsTransferReport']['count'](_0x2199e2)[_0x9508('0x3b')](function(_0x6b1578){_0x38ad62['count']=_0x6b1578;if(_0x4554ef['query'][_0x9508('0x3c')]){_0x5322c9[_0x9508('0x3d')]=[{'all':!![]}];}return db['SmsTransferReport'][_0x9508('0x3e')](_0x5322c9);})['then'](function(_0xfb6a5b){_0x38ad62[_0x9508('0x3f')]=_0xfb6a5b;return _0x38ad62;})[_0x9508('0x3b')](respondWithFilteredResult(_0x33c5c1,_0x5322c9))[_0x9508('0x40')](handleError(_0x33c5c1,null));};exports['show']=function(_0x4badfc,_0x47b690){var _0x38d803={'raw':!![],'where':{'id':_0x4badfc[_0x9508('0x41')]['id']}},_0x2fd5a9={};_0x2fd5a9['model']=_['keys'](db[_0x9508('0x29')][_0x9508('0x2a')]);_0x2fd5a9[_0x9508('0x2d')]=_[_0x9508('0x2e')](_0x4badfc[_0x9508('0x2d')]);_0x2fd5a9[_0x9508('0x2f')]=_[_0x9508('0x30')](_0x2fd5a9[_0x9508('0x2c')],_0x2fd5a9[_0x9508('0x2d')]);_0x38d803[_0x9508('0x31')]=_[_0x9508('0x30')](_0x2fd5a9[_0x9508('0x2c')],qs[_0x9508('0x32')](_0x4badfc['query']['fields']));_0x38d803[_0x9508('0x31')]=_0x38d803['attributes']['length']?_0x38d803[_0x9508('0x31')]:_0x2fd5a9[_0x9508('0x2c')];if(_0x4badfc[_0x9508('0x2d')][_0x9508('0x3c')]){_0x38d803['include']=[{'all':!![]}];}_0x38d803=_['merge']({},_0x38d803,_0x4badfc[_0x9508('0x42')]);return db[_0x9508('0x29')][_0x9508('0x43')](_0x38d803)[_0x9508('0x3b')](handleEntityNotFound(_0x47b690,null))[_0x9508('0x3b')](respondWithResult(_0x47b690,null))[_0x9508('0x40')](handleError(_0x47b690,null));};exports[_0x9508('0x44')]=function(_0x273d24,_0x4619fe){return db[_0x9508('0x29')][_0x9508('0x44')](_0x273d24[_0x9508('0x45')],{})[_0x9508('0x3b')](respondWithResult(_0x4619fe,0xc9))[_0x9508('0x40')](handleError(_0x4619fe,null));};exports[_0x9508('0x46')]=function(_0x51e990,_0x2115ea){if(_0x51e990[_0x9508('0x45')]['id']){delete _0x51e990[_0x9508('0x45')]['id'];}return db['SmsTransferReport'][_0x9508('0x43')]({'where':{'id':_0x51e990['params']['id']}})[_0x9508('0x3b')](handleEntityNotFound(_0x2115ea,null))[_0x9508('0x3b')](saveUpdates(_0x51e990[_0x9508('0x45')],null))[_0x9508('0x3b')](respondWithResult(_0x2115ea,null))[_0x9508('0x40')](handleError(_0x2115ea,null));};exports[_0x9508('0x47')]=function(_0x372f90,_0x5dedda){return db[_0x9508('0x29')][_0x9508('0x43')]({'where':{'id':_0x372f90[_0x9508('0x41')]['id']}})['then'](handleEntityNotFound(_0x5dedda,null))[_0x9508('0x3b')](removeEntity(_0x5dedda,null))[_0x9508('0x40')](handleError(_0x5dedda,null));};exports[_0x9508('0x48')]=function(_0x20368b,_0x5d14c1){return db[_0x9508('0x29')][_0x9508('0x48')]()[_0x9508('0x3b')](respondWithResult(_0x5d14c1,null))[_0x9508('0x40')](handleError(_0x5d14c1,null));};
\ No newline at end of file
index 18f9f13..e13f9c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc743=['request-promise','path','rimraf','../../config/environment','define','report_sms_transfer','uniqueid','lodash','util','../../config/logger','moment','bluebird'];(function(_0x276300,_0x352986){var _0xca5bef=function(_0x51b9d3){while(--_0x51b9d3){_0x276300['push'](_0x276300['shift']());}};_0xca5bef(++_0x352986);}(_0xc743,0x103));var _0x3c74=function(_0xabc05f,_0x3cde47){_0xabc05f=_0xabc05f-0x0;var _0xcb3775=_0xc743[_0xabc05f];return _0xcb3775;};'use strict';var _=require(_0x3c74('0x0'));var util=require(_0x3c74('0x1'));var logger=require(_0x3c74('0x2'))('api');var moment=require(_0x3c74('0x3'));var BPromise=require(_0x3c74('0x4'));var rp=require(_0x3c74('0x5'));var fs=require('fs');var path=require(_0x3c74('0x6'));var rimraf=require(_0x3c74('0x7'));var config=require(_0x3c74('0x8'));var attributes=require('./smsTransferReport.attributes');module['exports']=function(_0xce3828,_0x3dfee6){return _0xce3828[_0x3c74('0x9')]('SmsTransferReport',attributes,{'tableName':_0x3c74('0xa'),'paranoid':![],'indexes':[{'name':_0x3c74('0xb'),'fields':[_0x3c74('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6149=['request-promise','path','rimraf','./smsTransferReport.attributes','exports','define','SmsTransferReport','report_sms_transfer','uniqueid','../../config/logger','moment','bluebird'];(function(_0x42bc91,_0x41f40a){var _0x3f5507=function(_0x20cfaf){while(--_0x20cfaf){_0x42bc91['push'](_0x42bc91['shift']());}};_0x3f5507(++_0x41f40a);}(_0x6149,0x165));var _0x9614=function(_0x1f0d03,_0x5be7f4){_0x1f0d03=_0x1f0d03-0x0;var _0x1ed0b1=_0x6149[_0x1f0d03];return _0x1ed0b1;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9614('0x0'))('api');var moment=require(_0x9614('0x1'));var BPromise=require(_0x9614('0x2'));var rp=require(_0x9614('0x3'));var fs=require('fs');var path=require(_0x9614('0x4'));var rimraf=require(_0x9614('0x5'));var config=require('../../config/environment');var attributes=require(_0x9614('0x6'));module[_0x9614('0x7')]=function(_0x2db4c2,_0x5786e2){return _0x2db4c2[_0x9614('0x8')](_0x9614('0x9'),attributes,{'tableName':_0x9614('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x9614('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 6ce27b1..ee7c10a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5183=['../../config/utils','../../config/logger','jayson/promise','client','http','request','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','moment','ioredis','../../mysqldb'];(function(_0x59eefb,_0x2151ce){var _0x1a49e8=function(_0x5a758c){while(--_0x5a758c){_0x59eefb['push'](_0x59eefb['shift']());}};_0x1a49e8(++_0x2151ce);}(_0x5183,0x13e));var _0x3518=function(_0x4d6622,_0x2d5573){_0x4d6622=_0x4d6622-0x0;var _0x14a268=_0x5183[_0x4d6622];return _0x14a268;};'use strict';var _=require(_0x3518('0x0'));var util=require(_0x3518('0x1'));var moment=require(_0x3518('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3518('0x3'));var db=require(_0x3518('0x4'))['db'];var utils=require(_0x3518('0x5'));var logger=require(_0x3518('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3518('0x7'));var client=jayson[_0x3518('0x8')][_0x3518('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x482b2d,_0x5cd139,_0x488c52){return new BPromise(function(_0x147b59,_0x33e66c){return client[_0x3518('0xa')](_0x482b2d,_0x488c52)['then'](function(_0x12530b){logger['info'](_0x3518('0xb'),_0x5cd139,_0x3518('0xc'));logger[_0x3518('0xd')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x5cd139,_0x3518('0xc'),JSON[_0x3518('0xe')](_0x12530b));if(_0x12530b['error']){if(_0x12530b[_0x3518('0xf')][_0x3518('0x10')]===0x1f4){logger[_0x3518('0xf')](_0x3518('0xb'),_0x5cd139,_0x12530b['error']['message']);return _0x33e66c(_0x12530b[_0x3518('0xf')][_0x3518('0x11')]);}logger[_0x3518('0xf')]('SmsTransferReport,\x20%s,\x20%s',_0x5cd139,_0x12530b['error'][_0x3518('0x11')]);return _0x147b59(_0x12530b[_0x3518('0xf')][_0x3518('0x11')]);}else{logger['info'](_0x3518('0xb'),_0x5cd139,_0x3518('0xc'));_0x147b59(_0x12530b[_0x3518('0x12')][_0x3518('0x11')]);}})['catch'](function(_0xc7f658){logger['error'](_0x3518('0xb'),_0x5cd139,_0xc7f658);_0x33e66c(_0xc7f658);});});}
\ No newline at end of file
+var _0xabe8=['result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','SmsTransferReport,\x20%s,\x20%s','message','info'];(function(_0x473d3c,_0x417145){var _0x467125=function(_0x5b2f39){while(--_0x5b2f39){_0x473d3c['push'](_0x473d3c['shift']());}};_0x467125(++_0x417145);}(_0xabe8,0x8c));var _0x8abe=function(_0x3f913e,_0x286dce){_0x3f913e=_0x3f913e-0x0;var _0x1228c8=_0xabe8[_0x3f913e];return _0x1228c8;};'use strict';var _=require(_0x8abe('0x0'));var util=require(_0x8abe('0x1'));var moment=require(_0x8abe('0x2'));var BPromise=require('bluebird');var rs=require(_0x8abe('0x3'));var fs=require('fs');var Redis=require(_0x8abe('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8abe('0x5'));var logger=require('../../config/logger')(_0x8abe('0x6'));var config=require(_0x8abe('0x7'));var jayson=require(_0x8abe('0x8'));var client=jayson[_0x8abe('0x9')][_0x8abe('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4e49d7,_0x57355d,_0x27ebd9){return new BPromise(function(_0xd686ac,_0x45ea69){return client[_0x8abe('0xb')](_0x4e49d7,_0x27ebd9)[_0x8abe('0xc')](function(_0x16e5e9){logger['info']('SmsTransferReport,\x20%s,\x20%s',_0x57355d,'request\x20sent');logger[_0x8abe('0xd')](_0x8abe('0xe'),_0x57355d,_0x8abe('0xf'),JSON[_0x8abe('0x10')](_0x16e5e9));if(_0x16e5e9[_0x8abe('0x11')]){if(_0x16e5e9['error']['code']===0x1f4){logger[_0x8abe('0x11')](_0x8abe('0x12'),_0x57355d,_0x16e5e9[_0x8abe('0x11')][_0x8abe('0x13')]);return _0x45ea69(_0x16e5e9['error']['message']);}logger['error'](_0x8abe('0x12'),_0x57355d,_0x16e5e9['error'][_0x8abe('0x13')]);return _0xd686ac(_0x16e5e9['error'][_0x8abe('0x13')]);}else{logger[_0x8abe('0x14')]('SmsTransferReport,\x20%s,\x20%s',_0x57355d,_0x8abe('0xf'));_0xd686ac(_0x16e5e9[_0x8abe('0x15')][_0x8abe('0x13')]);}})[_0x8abe('0x16')](function(_0x34b2c7){logger[_0x8abe('0x11')](_0x8abe('0x12'),_0x57355d,_0x34b2c7);_0x45ea69(_0x34b2c7);});});}
\ No newline at end of file
index dae4265..efc2faa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d6d=['../../components/auth/service','../../components/interaction/service','../../config/environment','./sound.controller','get','isAuthenticated','index','/:id','show','/:id/download','diskStorage','join','root','originalname','replace','basename','extname','now','post','single','create','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x29c8dc,_0x11b303){var _0x41d1fc=function(_0x5bc83f){while(--_0x5bc83f){_0x29c8dc['push'](_0x29c8dc['shift']());}};_0x41d1fc(++_0x11b303);}(_0x3d6d,0xb4));var _0xd3d6=function(_0x4bb2b9,_0x459c78){_0x4bb2b9=_0x4bb2b9-0x0;var _0x40e2a2=_0x3d6d[_0x4bb2b9];return _0x40e2a2;};'use strict';var multer=require(_0xd3d6('0x0'));var util=require(_0xd3d6('0x1'));var path=require(_0xd3d6('0x2'));var timeout=require(_0xd3d6('0x3'));var express=require('express');var router=express[_0xd3d6('0x4')]();var fs_extra=require(_0xd3d6('0x5'));var auth=require(_0xd3d6('0x6'));var interaction=require(_0xd3d6('0x7'));var config=require(_0xd3d6('0x8'));var controller=require(_0xd3d6('0x9'));router[_0xd3d6('0xa')]('/',auth[_0xd3d6('0xb')](),controller[_0xd3d6('0xc')]);router[_0xd3d6('0xa')](_0xd3d6('0xd'),auth[_0xd3d6('0xb')](),controller[_0xd3d6('0xe')]);router[_0xd3d6('0xa')](_0xd3d6('0xf'),auth['isAuthenticated'](),controller['download']);var upload=multer({'storage':multer[_0xd3d6('0x10')]({'destination':function(_0x235c09,_0x1727b6,_0x5916b6){_0x5916b6(null,path[_0xd3d6('0x11')](config[_0xd3d6('0x12')],'server/files/sounds/original/'));},'filename':function(_0x4c8c9b,_0x5a3eda,_0x858477){_0x5a3eda[_0xd3d6('0x13')]=_0x5a3eda['originalname'][_0xd3d6('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x858477(null,util['format']('%s-%s%s',path[_0xd3d6('0x15')](_0x5a3eda[_0xd3d6('0x13')],path[_0xd3d6('0x16')](_0x5a3eda[_0xd3d6('0x13')])),Date[_0xd3d6('0x17')](),path[_0xd3d6('0x16')](_0x5a3eda['originalname'])));}})});router[_0xd3d6('0x18')]('/',upload[_0xd3d6('0x19')]('file'),controller[_0xd3d6('0x1a')]);router[_0xd3d6('0x1b')](_0xd3d6('0xd'),auth[_0xd3d6('0xb')](),controller[_0xd3d6('0x1c')]);router[_0xd3d6('0x1d')](_0xd3d6('0xd'),auth[_0xd3d6('0xb')](),controller[_0xd3d6('0x1d')]);module[_0xd3d6('0x1e')]=router;
\ No newline at end of file
+var _0x7bcd=['./sound.controller','get','isAuthenticated','index','/:id','show','download','join','root','server/files/sounds/original/','originalname','format','%s-%s%s','basename','extname','now','post','single','file','create','put','update','delete','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service'];(function(_0x4bd5da,_0x28e606){var _0x5a857b=function(_0x4dbe58){while(--_0x4dbe58){_0x4bd5da['push'](_0x4bd5da['shift']());}};_0x5a857b(++_0x28e606);}(_0x7bcd,0x19e));var _0xd7bc=function(_0x24cc72,_0x4dc73a){_0x24cc72=_0x24cc72-0x0;var _0xd49f1e=_0x7bcd[_0x24cc72];return _0xd49f1e;};'use strict';var multer=require('multer');var util=require(_0xd7bc('0x0'));var path=require(_0xd7bc('0x1'));var timeout=require(_0xd7bc('0x2'));var express=require('express');var router=express[_0xd7bc('0x3')]();var fs_extra=require(_0xd7bc('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xd7bc('0x5'));var config=require('../../config/environment');var controller=require(_0xd7bc('0x6'));router[_0xd7bc('0x7')]('/',auth[_0xd7bc('0x8')](),controller[_0xd7bc('0x9')]);router[_0xd7bc('0x7')](_0xd7bc('0xa'),auth[_0xd7bc('0x8')](),controller[_0xd7bc('0xb')]);router[_0xd7bc('0x7')]('/:id/download',auth['isAuthenticated'](),controller[_0xd7bc('0xc')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x462153,_0x2d8eac,_0x8dfd3){_0x8dfd3(null,path[_0xd7bc('0xd')](config[_0xd7bc('0xe')],_0xd7bc('0xf')));},'filename':function(_0x16b83c,_0xdff831,_0x28bc8a){_0xdff831['originalname']=_0xdff831[_0xd7bc('0x10')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x28bc8a(null,util[_0xd7bc('0x11')](_0xd7bc('0x12'),path[_0xd7bc('0x13')](_0xdff831[_0xd7bc('0x10')],path[_0xd7bc('0x14')](_0xdff831[_0xd7bc('0x10')])),Date[_0xd7bc('0x15')](),path[_0xd7bc('0x14')](_0xdff831['originalname'])));}})});router[_0xd7bc('0x16')]('/',upload[_0xd7bc('0x17')](_0xd7bc('0x18')),controller[_0xd7bc('0x19')]);router[_0xd7bc('0x1a')](_0xd7bc('0xa'),auth[_0xd7bc('0x8')](),controller[_0xd7bc('0x1b')]);router['delete'](_0xd7bc('0xa'),auth[_0xd7bc('0x8')](),controller[_0xd7bc('0x1c')]);module[_0xd7bc('0x1d')]=router;
\ No newline at end of file
index 901d928..afbc6ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85ce=['INTEGER','STRING','name','FLOAT','BIGINT'];(function(_0x581cad,_0x355b2e){var _0x1a9f4b=function(_0x5c8461){while(--_0x5c8461){_0x581cad['push'](_0x581cad['shift']());}};_0x1a9f4b(++_0x355b2e);}(_0x85ce,0x191));var _0xe85c=function(_0x572050,_0x1161fb){_0x572050=_0x572050-0x0;var _0x433ede=_0x85ce[_0x572050];return _0x433ede;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xe85c('0x0')],'unique':_0xe85c('0x1'),'allowNull':![]},'save_name':{'type':Sequelize[_0xe85c('0x0')]},'display_name':{'type':Sequelize[_0xe85c('0x0')],'defaultValue':''},'description':{'type':Sequelize[_0xe85c('0x0')]},'original_format':{'type':Sequelize['STRING']},'original_duration':{'type':Sequelize[_0xe85c('0x2')]},'original_sampleCount':{'type':Sequelize[_0xe85c('0x3')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize['BIGINT']},'original_sampleRate':{'type':Sequelize[_0xe85c('0x4')]},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0xe85c('0x2')]},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize[_0xe85c('0x3')]},'converted_sampleRate':{'type':Sequelize[_0xe85c('0x4')]}};
\ No newline at end of file
+var _0xfdd0=['STRING','name','FLOAT','INTEGER','BIGINT','exports'];(function(_0x95975e,_0x51412c){var _0x5d4933=function(_0x1cb2da){while(--_0x1cb2da){_0x95975e['push'](_0x95975e['shift']());}};_0x5d4933(++_0x51412c);}(_0xfdd0,0x7d));var _0x0fdd=function(_0xed5729,_0x4979b1){_0xed5729=_0xed5729-0x0;var _0x4607e4=_0xfdd0[_0xed5729];return _0x4607e4;};'use strict';var Sequelize=require('sequelize');module[_0x0fdd('0x0')]={'name':{'type':Sequelize[_0x0fdd('0x1')],'unique':_0x0fdd('0x2'),'allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize[_0x0fdd('0x1')]},'original_format':{'type':Sequelize[_0x0fdd('0x1')]},'original_duration':{'type':Sequelize[_0x0fdd('0x3')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0x0fdd('0x4')]},'original_bitRate':{'type':Sequelize[_0x0fdd('0x5')]},'original_sampleRate':{'type':Sequelize[_0x0fdd('0x4')]},'converted_format':{'type':Sequelize[_0x0fdd('0x1')]},'converted_duration':{'type':Sequelize[_0x0fdd('0x3')]},'converted_sampleCount':{'type':Sequelize[_0x0fdd('0x5')]},'converted_channelCount':{'type':Sequelize[_0x0fdd('0x4')]},'converted_bitRate':{'type':Sequelize[_0x0fdd('0x5')]},'converted_sampleRate':{'type':Sequelize[_0x0fdd('0x4')]}};
\ No newline at end of file
index 0b5ccc9..493b897 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87cb=['sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','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','destroy','then','get','Sounds','UserProfileResource','error','send','index','map','Sound','rawAttributes','fieldName','type','key','model','name','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','keys','catch','find','params','save_name','converted_format','existsSync','join','root','server/files/sounds/converted','Sequelize','ValidationError','Sound\x20not\x20found','download','%s.%s','format','create','basename','originalname','extname','file','filename','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','wav','unlinkSync','src','original_duration','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','sampleRate','dest','converted_duration','duration','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','delete','original_format','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path'];(function(_0x488164,_0x189273){var _0x405912=function(_0x55341){while(--_0x55341){_0x488164['push'](_0x488164['shift']());}};_0x405912(++_0x189273);}(_0x87cb,0xfd));var _0xb87c=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x87cb[_0x178e48];return _0x440d7e;};'use strict';var emlformat=require(_0xb87c('0x0'));var rimraf=require(_0xb87c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb87c('0x2'));var rp=require(_0xb87c('0x3'));var moment=require(_0xb87c('0x4'));var BPromise=require(_0xb87c('0x5'));var Mustache=require(_0xb87c('0x6'));var util=require(_0xb87c('0x7'));var path=require(_0xb87c('0x8'));var sox=require(_0xb87c('0x9'));var csv=require(_0xb87c('0xa'));var ejs=require(_0xb87c('0xb'));var fs=require('fs');var fs_extra=require(_0xb87c('0xc'));var _=require(_0xb87c('0xd'));var squel=require('squel');var crypto=require(_0xb87c('0xe'));var jsforce=require(_0xb87c('0xf'));var deskjs=require(_0xb87c('0x10'));var toCsv=require(_0xb87c('0xa'));var querystring=require(_0xb87c('0x11'));var Papa=require(_0xb87c('0x12'));var Redis=require(_0xb87c('0x13'));var authService=require(_0xb87c('0x14'));var qs=require(_0xb87c('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb87c('0x16'));var logger=require(_0xb87c('0x17'))(_0xb87c('0x18'));var utils=require(_0xb87c('0x19'));var config=require(_0xb87c('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xb87c('0x1b'))['db'];function respondWithStatusCode(_0x4ad914,_0x2d5e6d){_0x2d5e6d=_0x2d5e6d||0xcc;return function(_0x9bd577){if(_0x9bd577){return _0x4ad914[_0xb87c('0x1c')](_0x2d5e6d);}return _0x4ad914[_0xb87c('0x1d')](_0x2d5e6d)['end']();};}function respondWithResult(_0x28dc19,_0x43ff48){_0x43ff48=_0x43ff48||0xc8;return function(_0x5510d2){if(_0x5510d2){return _0x28dc19['status'](_0x43ff48)[_0xb87c('0x1e')](_0x5510d2);}};}function respondWithFilteredResult(_0x562b91,_0x2fc196){return function(_0x14d3fa){if(_0x14d3fa){var _0x49fb7f=typeof _0x2fc196[_0xb87c('0x1f')]===_0xb87c('0x20')&&typeof _0x2fc196[_0xb87c('0x21')]===_0xb87c('0x20');var _0x11525c=_0x14d3fa[_0xb87c('0x22')];var _0x5973c0=_0x49fb7f?0x0:_0x2fc196[_0xb87c('0x1f')];var _0x3867d2=_0x49fb7f?_0x14d3fa[_0xb87c('0x22')]:_0x2fc196[_0xb87c('0x1f')]+_0x2fc196[_0xb87c('0x21')];var _0xbdb3f4;if(_0x3867d2>=_0x11525c){_0x3867d2=_0x11525c;_0xbdb3f4=0xc8;}else{_0xbdb3f4=0xce;}_0x562b91[_0xb87c('0x1d')](_0xbdb3f4);return _0x562b91[_0xb87c('0x23')](_0xb87c('0x24'),_0x5973c0+'-'+_0x3867d2+'/'+_0x11525c)['json'](_0x14d3fa);}return null;};}function patchUpdates(_0x3887e4){return function(_0xdbf2d0){try{jsonpatch[_0xb87c('0x25')](_0xdbf2d0,_0x3887e4,!![]);}catch(_0x5f4830){return BPromise[_0xb87c('0x26')](_0x5f4830);}return _0xdbf2d0['save']();};}function saveUpdates(_0x616b76,_0x5abb8b){return function(_0x39c4d2){if(_0x39c4d2){return _0x39c4d2[_0xb87c('0x27')](_0x616b76)['then'](function(_0x4d8a5c){return _0x4d8a5c;});}return null;};}function removeEntity(_0xb2c085,_0x306f4a){return function(_0x3fcbbc){if(_0x3fcbbc){return _0x3fcbbc[_0xb87c('0x28')]()[_0xb87c('0x29')](function(){var _0x428de9=_0x3fcbbc[_0xb87c('0x2a')]({'plain':!![]});var _0x530d1b=_0xb87c('0x2b');return db[_0xb87c('0x2c')]['destroy']({'where':{'type':_0x530d1b,'resourceId':_0x428de9['id']}})[_0xb87c('0x29')](function(){return _0x3fcbbc;});})[_0xb87c('0x29')](function(){_0xb2c085['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xbe8afc,_0x2631f0){return function(_0xfd233a){if(!_0xfd233a){_0xbe8afc[_0xb87c('0x1c')](0x194);}return _0xfd233a;};}function handleError(_0x3d8969,_0x29454f){_0x29454f=_0x29454f||0x1f4;return function(_0x566452){logger[_0xb87c('0x2d')](_0x566452['stack']);if(_0x566452['name']){delete _0x566452['name'];}_0x3d8969['status'](_0x29454f)[_0xb87c('0x2e')](_0x566452);};}exports[_0xb87c('0x2f')]=function(_0x17c1a9,_0x145cc7){var _0x177c01={},_0x22f1ef={},_0x1ea647={'count':0x0,'rows':[]};var _0x23038b=_[_0xb87c('0x30')](db[_0xb87c('0x31')][_0xb87c('0x32')],function(_0x3bb0d1){return{'name':_0x3bb0d1[_0xb87c('0x33')],'type':_0x3bb0d1[_0xb87c('0x34')][_0xb87c('0x35')]};});_0x22f1ef[_0xb87c('0x36')]=_[_0xb87c('0x30')](_0x23038b,_0xb87c('0x37'));_0x22f1ef['query']=_['keys'](_0x17c1a9[_0xb87c('0x38')]);_0x22f1ef['filters']=_[_0xb87c('0x39')](_0x22f1ef[_0xb87c('0x36')],_0x22f1ef[_0xb87c('0x38')]);_0x177c01[_0xb87c('0x3a')]=_[_0xb87c('0x39')](_0x22f1ef[_0xb87c('0x36')],qs['fields'](_0x17c1a9[_0xb87c('0x38')][_0xb87c('0x3b')]));_0x177c01[_0xb87c('0x3a')]=_0x177c01[_0xb87c('0x3a')][_0xb87c('0x3c')]?_0x177c01[_0xb87c('0x3a')]:_0x22f1ef[_0xb87c('0x36')];if(!_0x17c1a9[_0xb87c('0x38')][_0xb87c('0x3d')](_0xb87c('0x3e'))){_0x177c01[_0xb87c('0x21')]=qs[_0xb87c('0x21')](_0x17c1a9[_0xb87c('0x38')][_0xb87c('0x21')]);_0x177c01[_0xb87c('0x1f')]=qs[_0xb87c('0x1f')](_0x17c1a9[_0xb87c('0x38')][_0xb87c('0x1f')]);}_0x177c01[_0xb87c('0x3f')]=qs[_0xb87c('0x40')](_0x17c1a9[_0xb87c('0x38')]['sort']);_0x177c01[_0xb87c('0x41')]=qs['filters'](_[_0xb87c('0x42')](_0x17c1a9['query'],_0x22f1ef['filters']),_0x23038b);if(_0x17c1a9['query'][_0xb87c('0x43')]){_0x177c01[_0xb87c('0x41')]=_['merge'](_0x177c01[_0xb87c('0x41')],{'$or':_[_0xb87c('0x30')](_0x23038b,function(_0x98d21){if(_0x98d21[_0xb87c('0x34')]!=='VIRTUAL'){var _0x8d8b58={};_0x8d8b58[_0x98d21[_0xb87c('0x37')]]={'$like':'%'+_0x17c1a9['query']['filter']+'%'};return _0x8d8b58;}})});}_0x177c01=_[_0xb87c('0x44')]({},_0x177c01,_0x17c1a9[_0xb87c('0x45')]);var _0x428c05={'where':_0x177c01[_0xb87c('0x41')]};return db[_0xb87c('0x31')][_0xb87c('0x22')](_0x428c05)[_0xb87c('0x29')](function(_0x4b4198){_0x1ea647[_0xb87c('0x22')]=_0x4b4198;if(_0x17c1a9['query'][_0xb87c('0x46')]){_0x177c01[_0xb87c('0x47')]=[{'all':!![]}];}return db[_0xb87c('0x31')][_0xb87c('0x48')](_0x177c01);})[_0xb87c('0x29')](function(_0x4ee5ce){_0x1ea647[_0xb87c('0x49')]=_0x4ee5ce;return _0x1ea647;})['then'](respondWithFilteredResult(_0x145cc7,_0x177c01))['catch'](handleError(_0x145cc7,null));};exports[_0xb87c('0x4a')]=function(_0x2b0f02,_0xd6ad98){var _0x349690={'raw':!![],'where':{'id':_0x2b0f02['params']['id']}},_0x41fb5b={};_0x41fb5b['model']=_['keys'](db[_0xb87c('0x31')][_0xb87c('0x32')]);_0x41fb5b[_0xb87c('0x38')]=_[_0xb87c('0x4b')](_0x2b0f02['query']);_0x41fb5b['filters']=_[_0xb87c('0x39')](_0x41fb5b[_0xb87c('0x36')],_0x41fb5b[_0xb87c('0x38')]);_0x349690['attributes']=_[_0xb87c('0x39')](_0x41fb5b[_0xb87c('0x36')],qs[_0xb87c('0x3b')](_0x2b0f02[_0xb87c('0x38')][_0xb87c('0x3b')]));_0x349690[_0xb87c('0x3a')]=_0x349690[_0xb87c('0x3a')][_0xb87c('0x3c')]?_0x349690[_0xb87c('0x3a')]:_0x41fb5b[_0xb87c('0x36')];if(_0x2b0f02[_0xb87c('0x38')][_0xb87c('0x46')]){_0x349690[_0xb87c('0x47')]=[{'all':!![]}];}_0x349690=_['merge']({},_0x349690,_0x2b0f02[_0xb87c('0x45')]);return db[_0xb87c('0x31')]['find'](_0x349690)[_0xb87c('0x29')](handleEntityNotFound(_0xd6ad98,null))['then'](respondWithResult(_0xd6ad98,null))[_0xb87c('0x4c')](handleError(_0xd6ad98,null));};exports['download']=function(_0x1303ab,_0x143d19,_0x1d59ac){return db['Sound'][_0xb87c('0x4d')]({'where':{'id':_0x1303ab[_0xb87c('0x4e')]['id']},'attributes':[_0xb87c('0x37'),_0xb87c('0x4f'),_0xb87c('0x50')],'raw':!![]})[_0xb87c('0x29')](handleEntityNotFound(_0x143d19,null))[_0xb87c('0x29')](function(_0xb03c3e){if(_0xb03c3e){if(!fs[_0xb87c('0x51')](path[_0xb87c('0x52')](config[_0xb87c('0x53')],_0xb87c('0x54'),_0xb03c3e['save_name']+'.'+_0xb03c3e['converted_format']))){throw new db[(_0xb87c('0x55'))][(_0xb87c('0x56'))](_0xb87c('0x57'));}return _0x143d19[_0xb87c('0x58')](path[_0xb87c('0x52')](config[_0xb87c('0x53')],_0xb87c('0x54'),util['format'](_0xb87c('0x59'),_0xb03c3e[_0xb87c('0x4f')],_0xb03c3e[_0xb87c('0x50')])),util[_0xb87c('0x5a')](_0xb87c('0x59'),_0xb03c3e[_0xb87c('0x37')],_0xb03c3e['converted_format']));}return null;})[_0xb87c('0x4c')](handleError(_0x143d19,null));};exports[_0xb87c('0x5b')]=function(_0x57e52e,_0x3b77f4,_0x1bc908){var _0xfc6b44={'name':path[_0xb87c('0x5c')](_0x57e52e['file'][_0xb87c('0x5d')],path[_0xb87c('0x5e')](_0x57e52e[_0xb87c('0x5f')]['originalname'])),'save_name':path['basename'](_0x57e52e[_0xb87c('0x5f')][_0xb87c('0x60')],path[_0xb87c('0x5e')](_0x57e52e[_0xb87c('0x5f')]['filename'])),'original_format':path['extname'](_0x57e52e[_0xb87c('0x5f')]['originalname'])['substring'](0x1),'converted_format':'wav'};var _0x2db0ea=path[_0xb87c('0x52')](config[_0xb87c('0x53')],_0xb87c('0x61'),_0x57e52e['file'][_0xb87c('0x60')]);var _0x4de2e8=path[_0xb87c('0x52')](config['root'],_0xb87c('0x54'),util[_0xb87c('0x5a')](_0xb87c('0x59'),path[_0xb87c('0x5c')](_0x57e52e[_0xb87c('0x5f')][_0xb87c('0x60')],path['extname'](_0x57e52e[_0xb87c('0x5f')][_0xb87c('0x60')])),_0xfc6b44[_0xb87c('0x50')]));logger[_0xb87c('0x62')](_0xb87c('0x63'),_0x2db0ea);logger[_0xb87c('0x62')](_0xb87c('0x64'),_0x4de2e8);try{fs[_0xb87c('0x65')](_0x2db0ea,parseInt(_0xb87c('0x66'),0x8));var _0x594f59=sox['transcode'](_0x2db0ea,_0x4de2e8,{'sampleRate':0x1f40,'format':_0xb87c('0x67'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x594f59['on']('error',function(_0x241814){fs[_0xb87c('0x68')](_0x2db0ea);_0x3b77f4['status'](0x1f4)[_0xb87c('0x2e')](_0x241814);});_0x594f59['on'](_0xb87c('0x69'),function(_0x15fcbc){_0xfc6b44[_0xb87c('0x6a')]=isNaN(_0x15fcbc['duration'])?null:_0x15fcbc['duration']*0x3e8;_0xfc6b44['original_sampleCount']=isNaN(_0x15fcbc[_0xb87c('0x6b')])?null:_0x15fcbc[_0xb87c('0x6b')];_0xfc6b44[_0xb87c('0x6c')]=isNaN(_0x15fcbc[_0xb87c('0x6d')])?null:_0x15fcbc['channelCount'];_0xfc6b44[_0xb87c('0x6e')]=isNaN(_0x15fcbc[_0xb87c('0x6f')])?null:_0x15fcbc[_0xb87c('0x6f')];_0xfc6b44['original_sampleRate']=isNaN(_0x15fcbc['sampleRate'])?null:_0x15fcbc[_0xb87c('0x70')];});_0x594f59['on'](_0xb87c('0x71'),function(_0x2a44d4){_0xfc6b44[_0xb87c('0x72')]=isNaN(_0x2a44d4[_0xb87c('0x73')])?null:_0x2a44d4[_0xb87c('0x73')]*0x3e8;_0xfc6b44[_0xb87c('0x74')]=isNaN(_0x2a44d4[_0xb87c('0x6b')])?null:_0x2a44d4['sampleCount'];_0xfc6b44[_0xb87c('0x75')]=isNaN(_0x2a44d4[_0xb87c('0x6d')])?null:_0x2a44d4[_0xb87c('0x6d')];_0xfc6b44[_0xb87c('0x76')]=isNaN(_0x2a44d4[_0xb87c('0x6f')])?null:_0x2a44d4[_0xb87c('0x6f')];_0xfc6b44[_0xb87c('0x77')]=isNaN(_0x2a44d4['sampleRate'])?null:_0x2a44d4[_0xb87c('0x70')];});_0x594f59['on']('end',function(){fs[_0xb87c('0x65')](_0x4de2e8,parseInt(_0xb87c('0x66'),0x8));return db[_0xb87c('0x31')][_0xb87c('0x5b')](_0xfc6b44)['then'](function(_0x39ed44){var _0x435ec0={'role':_0x57e52e[_0xb87c('0x78')][_0xb87c('0x79')],'userProfileId':_0x57e52e['body'][_0xb87c('0x7a')]};if(!_0x435ec0)throw new Error(_0xb87c('0x7b'));if(_0x435ec0['role']===_0xb87c('0x7c')){var _0x452430=_0x39ed44['get']({'plain':!![]});return db[_0xb87c('0x7d')]['find']({'where':{'name':_0xb87c('0x2b'),'userProfileId':_0x435ec0[_0xb87c('0x7a')]},'raw':!![]})[_0xb87c('0x29')](function(_0x11acf){if(_0x11acf&&_0x11acf[_0xb87c('0x7e')]===0x0){return db[_0xb87c('0x2c')][_0xb87c('0x5b')]({'name':_0x452430[_0xb87c('0x37')],'resourceId':_0x452430['id'],'type':_0x11acf[_0xb87c('0x37')],'sectionId':_0x11acf['id']},{})[_0xb87c('0x29')](function(){return _0x39ed44;});}else{return _0x39ed44;}})[_0xb87c('0x4c')](function(_0x3ecc2b){logger['error'](_0xb87c('0x7f'),_0x3ecc2b);throw _0x3ecc2b;});}return _0x39ed44;})[_0xb87c('0x29')](respondWithResult(_0x3b77f4,null))['catch'](handleError(_0x3b77f4,null));});_0x594f59[_0xb87c('0x80')]();}catch(_0x4753bd){_0x3b77f4[_0xb87c('0x1d')](0x1f4)['send'](_0x4753bd);}};exports[_0xb87c('0x27')]=function(_0x19bade,_0x178090,_0x1c8198){return db['Sound'][_0xb87c('0x4d')]({'where':{'id':_0x19bade[_0xb87c('0x4e')]['id']}})[_0xb87c('0x29')](handleEntityNotFound(_0x178090,null))['then'](saveUpdates(_[_0xb87c('0x42')](_0x19bade['body'],[_0xb87c('0x37'),'description']),null))[_0xb87c('0x29')](respondWithResult(_0x178090,null))['catch'](handleError(_0x178090,null));};exports[_0xb87c('0x81')]=function(_0x1b2c72,_0x3064c2,_0x51e442){return db[_0xb87c('0x31')]['find']({'where':{'id':_0x1b2c72[_0xb87c('0x4e')]['id']}})[_0xb87c('0x29')](function(_0x4c11a8){if(_0x4c11a8){return _0x4c11a8['destroy']();}})['then'](function(_0x2f0253){var _0xe11c1=path['join'](config[_0xb87c('0x53')],'server/files/sounds/original',util['format'](_0xb87c('0x59'),_0x2f0253['save_name'],_0x2f0253[_0xb87c('0x82')]));var _0xf921c7=path[_0xb87c('0x52')](config[_0xb87c('0x53')],_0xb87c('0x54'),util[_0xb87c('0x5a')](_0xb87c('0x59'),_0x2f0253['save_name'],_0x2f0253[_0xb87c('0x50')]));fs[_0xb87c('0x68')](_0xe11c1);fs[_0xb87c('0x68')](_0xf921c7);return _0x2f0253;})[_0xb87c('0x29')](function(_0x4140eb){if(_0x4140eb){return _0x3064c2[_0xb87c('0x1d')](0xcc)['end']();}})[_0xb87c('0x29')](handleEntityNotFound(_0x3064c2,null))[_0xb87c('0x4c')](handleError(_0x3064c2,null));};
\ No newline at end of file
+var _0x3d54=['../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','reject','save','update','then','Sounds','UserProfileResource','destroy','error','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','Sound','findAll','rows','params','include','find','catch','download','converted_format','join','root','save_name','Sound\x20not\x20found','server/files/sounds/converted','format','%s.%s','create','file','originalname','extname','filename','substring','wav','basename','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','unlinkSync','src','duration','sampleCount','original_channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','channelCount','converted_bitRate','converted_sampleRate','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','delete','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment'];(function(_0x51d245,_0x5f2dcf){var _0x4079af=function(_0x57fab3){while(--_0x57fab3){_0x51d245['push'](_0x51d245['shift']());}};_0x4079af(++_0x5f2dcf);}(_0x3d54,0x1db));var _0x43d5=function(_0x12dc94,_0x121794){_0x12dc94=_0x12dc94-0x0;var _0x3a6d65=_0x3d54[_0x12dc94];return _0x3a6d65;};'use strict';var emlformat=require(_0x43d5('0x0'));var rimraf=require(_0x43d5('0x1'));var zipdir=require(_0x43d5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x43d5('0x3'));var moment=require(_0x43d5('0x4'));var BPromise=require(_0x43d5('0x5'));var Mustache=require(_0x43d5('0x6'));var util=require('util');var path=require(_0x43d5('0x7'));var sox=require(_0x43d5('0x8'));var csv=require('to-csv');var ejs=require(_0x43d5('0x9'));var fs=require('fs');var fs_extra=require(_0x43d5('0xa'));var _=require(_0x43d5('0xb'));var squel=require(_0x43d5('0xc'));var crypto=require(_0x43d5('0xd'));var jsforce=require(_0x43d5('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x43d5('0xf'));var querystring=require(_0x43d5('0x10'));var Papa=require('papaparse');var Redis=require(_0x43d5('0x11'));var authService=require(_0x43d5('0x12'));var qs=require(_0x43d5('0x13'));var as=require(_0x43d5('0x14'));var hardwareService=require(_0x43d5('0x15'));var logger=require(_0x43d5('0x16'))(_0x43d5('0x17'));var utils=require('../../config/utils');var config=require(_0x43d5('0x18'));var licenseUtil=require(_0x43d5('0x19'));var db=require(_0x43d5('0x1a'))['db'];function respondWithStatusCode(_0x1d5e70,_0xcbd135){_0xcbd135=_0xcbd135||0xcc;return function(_0x15b1c8){if(_0x15b1c8){return _0x1d5e70[_0x43d5('0x1b')](_0xcbd135);}return _0x1d5e70[_0x43d5('0x1c')](_0xcbd135)[_0x43d5('0x1d')]();};}function respondWithResult(_0x4ff6a4,_0x373207){_0x373207=_0x373207||0xc8;return function(_0x2d4820){if(_0x2d4820){return _0x4ff6a4[_0x43d5('0x1c')](_0x373207)[_0x43d5('0x1e')](_0x2d4820);}};}function respondWithFilteredResult(_0x5e66a9,_0x5ca599){return function(_0x1b565f){if(_0x1b565f){var _0x1da3e9=typeof _0x5ca599[_0x43d5('0x1f')]===_0x43d5('0x20')&&typeof _0x5ca599[_0x43d5('0x21')]==='undefined';var _0x4bc6b1=_0x1b565f[_0x43d5('0x22')];var _0x36e973=_0x1da3e9?0x0:_0x5ca599[_0x43d5('0x1f')];var _0x52977a=_0x1da3e9?_0x1b565f[_0x43d5('0x22')]:_0x5ca599[_0x43d5('0x1f')]+_0x5ca599['limit'];var _0x200ca8;if(_0x52977a>=_0x4bc6b1){_0x52977a=_0x4bc6b1;_0x200ca8=0xc8;}else{_0x200ca8=0xce;}_0x5e66a9[_0x43d5('0x1c')](_0x200ca8);return _0x5e66a9['set']('Content-Range',_0x36e973+'-'+_0x52977a+'/'+_0x4bc6b1)[_0x43d5('0x1e')](_0x1b565f);}return null;};}function patchUpdates(_0x5790b1){return function(_0x4d9523){try{jsonpatch['apply'](_0x4d9523,_0x5790b1,!![]);}catch(_0x322075){return BPromise[_0x43d5('0x23')](_0x322075);}return _0x4d9523[_0x43d5('0x24')]();};}function saveUpdates(_0x3e9a66,_0x25db35){return function(_0x39dcdb){if(_0x39dcdb){return _0x39dcdb[_0x43d5('0x25')](_0x3e9a66)[_0x43d5('0x26')](function(_0x4af918){return _0x4af918;});}return null;};}function removeEntity(_0x38ea28,_0x3f691a){return function(_0x420e02){if(_0x420e02){return _0x420e02['destroy']()['then'](function(){var _0x422cd5=_0x420e02['get']({'plain':!![]});var _0x3531ff=_0x43d5('0x27');return db[_0x43d5('0x28')][_0x43d5('0x29')]({'where':{'type':_0x3531ff,'resourceId':_0x422cd5['id']}})[_0x43d5('0x26')](function(){return _0x420e02;});})[_0x43d5('0x26')](function(){_0x38ea28[_0x43d5('0x1c')](0xcc)[_0x43d5('0x1d')]();});}};}function handleEntityNotFound(_0x2af2ef,_0x2071e2){return function(_0x23d733){if(!_0x23d733){_0x2af2ef[_0x43d5('0x1b')](0x194);}return _0x23d733;};}function handleError(_0x55dbf8,_0x3ffaad){_0x3ffaad=_0x3ffaad||0x1f4;return function(_0x45b4b9){logger[_0x43d5('0x2a')](_0x45b4b9['stack']);if(_0x45b4b9[_0x43d5('0x2b')]){delete _0x45b4b9[_0x43d5('0x2b')];}_0x55dbf8['status'](_0x3ffaad)[_0x43d5('0x2c')](_0x45b4b9);};}exports[_0x43d5('0x2d')]=function(_0x3259a6,_0xb53fe6){var _0x59ad33={},_0xe651d7={},_0x2e0b94={'count':0x0,'rows':[]};var _0x42563b=_['map'](db['Sound'][_0x43d5('0x2e')],function(_0x7e20d5){return{'name':_0x7e20d5[_0x43d5('0x2f')],'type':_0x7e20d5[_0x43d5('0x30')][_0x43d5('0x31')]};});_0xe651d7[_0x43d5('0x32')]=_[_0x43d5('0x33')](_0x42563b,'name');_0xe651d7[_0x43d5('0x34')]=_[_0x43d5('0x35')](_0x3259a6[_0x43d5('0x34')]);_0xe651d7[_0x43d5('0x36')]=_[_0x43d5('0x37')](_0xe651d7['model'],_0xe651d7['query']);_0x59ad33[_0x43d5('0x38')]=_[_0x43d5('0x37')](_0xe651d7[_0x43d5('0x32')],qs['fields'](_0x3259a6[_0x43d5('0x34')][_0x43d5('0x39')]));_0x59ad33['attributes']=_0x59ad33['attributes'][_0x43d5('0x3a')]?_0x59ad33[_0x43d5('0x38')]:_0xe651d7[_0x43d5('0x32')];if(!_0x3259a6[_0x43d5('0x34')][_0x43d5('0x3b')](_0x43d5('0x3c'))){_0x59ad33['limit']=qs[_0x43d5('0x21')](_0x3259a6[_0x43d5('0x34')][_0x43d5('0x21')]);_0x59ad33[_0x43d5('0x1f')]=qs[_0x43d5('0x1f')](_0x3259a6['query'][_0x43d5('0x1f')]);}_0x59ad33[_0x43d5('0x3d')]=qs[_0x43d5('0x3e')](_0x3259a6[_0x43d5('0x34')][_0x43d5('0x3e')]);_0x59ad33[_0x43d5('0x3f')]=qs[_0x43d5('0x36')](_[_0x43d5('0x40')](_0x3259a6[_0x43d5('0x34')],_0xe651d7[_0x43d5('0x36')]),_0x42563b);if(_0x3259a6['query'][_0x43d5('0x41')]){_0x59ad33[_0x43d5('0x3f')]=_['merge'](_0x59ad33['where'],{'$or':_[_0x43d5('0x33')](_0x42563b,function(_0x5046bd){if(_0x5046bd[_0x43d5('0x30')]!==_0x43d5('0x42')){var _0x181d3b={};_0x181d3b[_0x5046bd[_0x43d5('0x2b')]]={'$like':'%'+_0x3259a6[_0x43d5('0x34')][_0x43d5('0x41')]+'%'};return _0x181d3b;}})});}_0x59ad33=_[_0x43d5('0x43')]({},_0x59ad33,_0x3259a6[_0x43d5('0x44')]);var _0x8f199f={'where':_0x59ad33['where']};return db['Sound']['count'](_0x8f199f)[_0x43d5('0x26')](function(_0x29df61){_0x2e0b94[_0x43d5('0x22')]=_0x29df61;if(_0x3259a6[_0x43d5('0x34')][_0x43d5('0x45')]){_0x59ad33['include']=[{'all':!![]}];}return db[_0x43d5('0x46')][_0x43d5('0x47')](_0x59ad33);})['then'](function(_0xab28b5){_0x2e0b94[_0x43d5('0x48')]=_0xab28b5;return _0x2e0b94;})['then'](respondWithFilteredResult(_0xb53fe6,_0x59ad33))['catch'](handleError(_0xb53fe6,null));};exports['show']=function(_0x3bfe04,_0x9dffdf){var _0x1166ee={'raw':!![],'where':{'id':_0x3bfe04[_0x43d5('0x49')]['id']}},_0x500ade={};_0x500ade[_0x43d5('0x32')]=_[_0x43d5('0x35')](db[_0x43d5('0x46')][_0x43d5('0x2e')]);_0x500ade['query']=_[_0x43d5('0x35')](_0x3bfe04[_0x43d5('0x34')]);_0x500ade[_0x43d5('0x36')]=_[_0x43d5('0x37')](_0x500ade[_0x43d5('0x32')],_0x500ade[_0x43d5('0x34')]);_0x1166ee['attributes']=_[_0x43d5('0x37')](_0x500ade['model'],qs[_0x43d5('0x39')](_0x3bfe04[_0x43d5('0x34')][_0x43d5('0x39')]));_0x1166ee[_0x43d5('0x38')]=_0x1166ee[_0x43d5('0x38')][_0x43d5('0x3a')]?_0x1166ee[_0x43d5('0x38')]:_0x500ade[_0x43d5('0x32')];if(_0x3bfe04[_0x43d5('0x34')]['includeAll']){_0x1166ee[_0x43d5('0x4a')]=[{'all':!![]}];}_0x1166ee=_[_0x43d5('0x43')]({},_0x1166ee,_0x3bfe04[_0x43d5('0x44')]);return db[_0x43d5('0x46')][_0x43d5('0x4b')](_0x1166ee)[_0x43d5('0x26')](handleEntityNotFound(_0x9dffdf,null))[_0x43d5('0x26')](respondWithResult(_0x9dffdf,null))[_0x43d5('0x4c')](handleError(_0x9dffdf,null));};exports[_0x43d5('0x4d')]=function(_0x394a90,_0x2941e9,_0xa2c5c2){return db[_0x43d5('0x46')]['find']({'where':{'id':_0x394a90['params']['id']},'attributes':[_0x43d5('0x2b'),'save_name',_0x43d5('0x4e')],'raw':!![]})[_0x43d5('0x26')](handleEntityNotFound(_0x2941e9,null))[_0x43d5('0x26')](function(_0x160336){if(_0x160336){if(!fs['existsSync'](path[_0x43d5('0x4f')](config[_0x43d5('0x50')],'server/files/sounds/converted',_0x160336[_0x43d5('0x51')]+'.'+_0x160336[_0x43d5('0x4e')]))){throw new db['Sequelize']['ValidationError'](_0x43d5('0x52'));}return _0x2941e9['download'](path['join'](config['root'],_0x43d5('0x53'),util[_0x43d5('0x54')](_0x43d5('0x55'),_0x160336[_0x43d5('0x51')],_0x160336[_0x43d5('0x4e')])),util[_0x43d5('0x54')](_0x43d5('0x55'),_0x160336[_0x43d5('0x2b')],_0x160336['converted_format']));}return null;})[_0x43d5('0x4c')](handleError(_0x2941e9,null));};exports[_0x43d5('0x56')]=function(_0x450dbb,_0x2e0941,_0x2bfe6e){var _0x2c187f={'name':path['basename'](_0x450dbb[_0x43d5('0x57')][_0x43d5('0x58')],path[_0x43d5('0x59')](_0x450dbb[_0x43d5('0x57')]['originalname'])),'save_name':path['basename'](_0x450dbb['file']['filename'],path[_0x43d5('0x59')](_0x450dbb[_0x43d5('0x57')][_0x43d5('0x5a')])),'original_format':path['extname'](_0x450dbb[_0x43d5('0x57')]['originalname'])[_0x43d5('0x5b')](0x1),'converted_format':_0x43d5('0x5c')};var _0xfe4080=path[_0x43d5('0x4f')](config['root'],'server/files/sounds/original',_0x450dbb[_0x43d5('0x57')]['filename']);var _0x100a44=path[_0x43d5('0x4f')](config['root'],_0x43d5('0x53'),util[_0x43d5('0x54')](_0x43d5('0x55'),path[_0x43d5('0x5d')](_0x450dbb[_0x43d5('0x57')]['filename'],path[_0x43d5('0x59')](_0x450dbb[_0x43d5('0x57')][_0x43d5('0x5a')])),_0x2c187f[_0x43d5('0x4e')]));logger[_0x43d5('0x5e')](_0x43d5('0x5f'),_0xfe4080);logger['info'](_0x43d5('0x60'),_0x100a44);try{fs[_0x43d5('0x61')](_0xfe4080,parseInt(_0x43d5('0x62'),0x8));var _0x21b995=sox['transcode'](_0xfe4080,_0x100a44,{'sampleRate':0x1f40,'format':_0x43d5('0x5c'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x21b995['on'](_0x43d5('0x2a'),function(_0x155384){fs[_0x43d5('0x63')](_0xfe4080);_0x2e0941['status'](0x1f4)[_0x43d5('0x2c')](_0x155384);});_0x21b995['on'](_0x43d5('0x64'),function(_0x1de44d){_0x2c187f['original_duration']=isNaN(_0x1de44d[_0x43d5('0x65')])?null:_0x1de44d[_0x43d5('0x65')]*0x3e8;_0x2c187f['original_sampleCount']=isNaN(_0x1de44d['sampleCount'])?null:_0x1de44d[_0x43d5('0x66')];_0x2c187f[_0x43d5('0x67')]=isNaN(_0x1de44d['channelCount'])?null:_0x1de44d['channelCount'];_0x2c187f[_0x43d5('0x68')]=isNaN(_0x1de44d['bitRate'])?null:_0x1de44d[_0x43d5('0x69')];_0x2c187f[_0x43d5('0x6a')]=isNaN(_0x1de44d['sampleRate'])?null:_0x1de44d[_0x43d5('0x6b')];});_0x21b995['on'](_0x43d5('0x6c'),function(_0xc26b3a){_0x2c187f[_0x43d5('0x6d')]=isNaN(_0xc26b3a[_0x43d5('0x65')])?null:_0xc26b3a[_0x43d5('0x65')]*0x3e8;_0x2c187f[_0x43d5('0x6e')]=isNaN(_0xc26b3a[_0x43d5('0x66')])?null:_0xc26b3a['sampleCount'];_0x2c187f[_0x43d5('0x6f')]=isNaN(_0xc26b3a[_0x43d5('0x70')])?null:_0xc26b3a[_0x43d5('0x70')];_0x2c187f[_0x43d5('0x71')]=isNaN(_0xc26b3a[_0x43d5('0x69')])?null:_0xc26b3a[_0x43d5('0x69')];_0x2c187f[_0x43d5('0x72')]=isNaN(_0xc26b3a[_0x43d5('0x6b')])?null:_0xc26b3a[_0x43d5('0x6b')];});_0x21b995['on'](_0x43d5('0x1d'),function(){fs[_0x43d5('0x61')](_0x100a44,parseInt(_0x43d5('0x62'),0x8));return db['Sound'][_0x43d5('0x56')](_0x2c187f)[_0x43d5('0x26')](function(_0x1c3082){var _0x21b2db={'role':_0x450dbb[_0x43d5('0x73')]['role'],'userProfileId':_0x450dbb[_0x43d5('0x73')][_0x43d5('0x74')]};if(!_0x21b2db)throw new Error(_0x43d5('0x75'));if(_0x21b2db[_0x43d5('0x76')]===_0x43d5('0x77')){var _0x3ff174=_0x1c3082['get']({'plain':!![]});return db[_0x43d5('0x78')][_0x43d5('0x4b')]({'where':{'name':_0x43d5('0x27'),'userProfileId':_0x21b2db[_0x43d5('0x74')]},'raw':!![]})[_0x43d5('0x26')](function(_0x3074d6){if(_0x3074d6&&_0x3074d6[_0x43d5('0x79')]===0x0){return db[_0x43d5('0x28')][_0x43d5('0x56')]({'name':_0x3ff174[_0x43d5('0x2b')],'resourceId':_0x3ff174['id'],'type':_0x3074d6[_0x43d5('0x2b')],'sectionId':_0x3074d6['id']},{})[_0x43d5('0x26')](function(){return _0x1c3082;});}else{return _0x1c3082;}})[_0x43d5('0x4c')](function(_0x122764){logger[_0x43d5('0x2a')](_0x43d5('0x7a'),_0x122764);throw _0x122764;});}return _0x1c3082;})[_0x43d5('0x26')](respondWithResult(_0x2e0941,null))[_0x43d5('0x4c')](handleError(_0x2e0941,null));});_0x21b995[_0x43d5('0x7b')]();}catch(_0x59db3e){_0x2e0941['status'](0x1f4)[_0x43d5('0x2c')](_0x59db3e);}};exports[_0x43d5('0x25')]=function(_0x1fe33c,_0xabc4e2,_0x448a59){return db[_0x43d5('0x46')]['find']({'where':{'id':_0x1fe33c[_0x43d5('0x49')]['id']}})[_0x43d5('0x26')](handleEntityNotFound(_0xabc4e2,null))[_0x43d5('0x26')](saveUpdates(_['pick'](_0x1fe33c[_0x43d5('0x73')],['name','description']),null))[_0x43d5('0x26')](respondWithResult(_0xabc4e2,null))['catch'](handleError(_0xabc4e2,null));};exports[_0x43d5('0x7c')]=function(_0x2ecf8e,_0x403582,_0x384bb8){return db[_0x43d5('0x46')][_0x43d5('0x4b')]({'where':{'id':_0x2ecf8e[_0x43d5('0x49')]['id']}})[_0x43d5('0x26')](function(_0x2954af){if(_0x2954af){return _0x2954af[_0x43d5('0x29')]();}})['then'](function(_0x138ce2){var _0x51c265=path[_0x43d5('0x4f')](config['root'],'server/files/sounds/original',util[_0x43d5('0x54')](_0x43d5('0x55'),_0x138ce2[_0x43d5('0x51')],_0x138ce2['original_format']));var _0x2d638e=path[_0x43d5('0x4f')](config[_0x43d5('0x50')],_0x43d5('0x53'),util[_0x43d5('0x54')]('%s.%s',_0x138ce2['save_name'],_0x138ce2[_0x43d5('0x4e')]));fs[_0x43d5('0x63')](_0x51c265);fs[_0x43d5('0x63')](_0x2d638e);return _0x138ce2;})['then'](function(_0x535175){if(_0x535175){return _0x403582[_0x43d5('0x1c')](0xcc)[_0x43d5('0x1d')]();}})[_0x43d5('0x26')](handleEntityNotFound(_0x403582,null))[_0x43d5('0x4c')](handleError(_0x403582,null));};
\ No newline at end of file
index 1bf36b4..8b9abf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfca0=['api','moment','bluebird','rimraf','../../config/environment','./sound.attributes','exports','define','tools_sounds','util','../../config/logger'];(function(_0x4bef78,_0x48132f){var _0x5314dd=function(_0xc02b24){while(--_0xc02b24){_0x4bef78['push'](_0x4bef78['shift']());}};_0x5314dd(++_0x48132f);}(_0xfca0,0x6c));var _0x0fca=function(_0x33b986,_0x40da5f){_0x33b986=_0x33b986-0x0;var _0x4ddaca=_0xfca0[_0x33b986];return _0x4ddaca;};'use strict';var _=require('lodash');var util=require(_0x0fca('0x0'));var logger=require(_0x0fca('0x1'))(_0x0fca('0x2'));var moment=require(_0x0fca('0x3'));var BPromise=require(_0x0fca('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x0fca('0x5'));var config=require(_0x0fca('0x6'));var attributes=require(_0x0fca('0x7'));module[_0x0fca('0x8')]=function(_0xa98358,_0x19de98){return _0xa98358[_0x0fca('0x9')]('Sound',attributes,{'tableName':_0x0fca('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xac6b=['./sound.attributes','define','tools_sounds','lodash','util','../../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);}(_0xac6b,0xab));var _0xbac6=function(_0x29314d,_0x538a65){_0x29314d=_0x29314d-0x0;var _0x10b540=_0xac6b[_0x29314d];return _0x10b540;};'use strict';var _=require(_0xbac6('0x0'));var util=require(_0xbac6('0x1'));var logger=require(_0xbac6('0x2'))(_0xbac6('0x3'));var moment=require(_0xbac6('0x4'));var BPromise=require('bluebird');var rp=require(_0xbac6('0x5'));var fs=require('fs');var path=require(_0xbac6('0x6'));var rimraf=require(_0xbac6('0x7'));var config=require(_0xbac6('0x8'));var attributes=require(_0xbac6('0x9'));module['exports']=function(_0x283f57,_0x39d0a7){return _0x283f57[_0xbac6('0xa')]('Sound',attributes,{'tableName':_0xbac6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b3315f8..cad2fd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf89=['Sound,\x20%s,\x20%s','message','result','catch','find','options','where','attributes','include','map','model','then','ShowSound','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request','info','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x508685,_0x9f94af){var _0x976a76=function(_0x1bcb05){while(--_0x1bcb05){_0x508685['push'](_0x508685['shift']());}};_0x976a76(++_0x9f94af);}(_0xaf89,0x143));var _0x9af8=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0xaf89[_0xbe200f];return _0x192597;};'use strict';var _=require(_0x9af8('0x0'));var util=require(_0x9af8('0x1'));var moment=require(_0x9af8('0x2'));var BPromise=require('bluebird');var rs=require(_0x9af8('0x3'));var fs=require('fs');var Redis=require(_0x9af8('0x4'));var db=require(_0x9af8('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9af8('0x6'));var config=require(_0x9af8('0x7'));var jayson=require(_0x9af8('0x8'));var client=jayson[_0x9af8('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x140340,_0x12eabd,_0x1cfbf8){return new BPromise(function(_0x3d9ca3,_0x4c7213){return client[_0x9af8('0xa')](_0x140340,_0x1cfbf8)['then'](function(_0x4f1662){logger[_0x9af8('0xb')]('Sound,\x20%s,\x20%s',_0x12eabd,_0x9af8('0xc'));logger[_0x9af8('0xd')](_0x9af8('0xe'),_0x12eabd,'request\x20sent',JSON[_0x9af8('0xf')](_0x4f1662));if(_0x4f1662[_0x9af8('0x10')]){if(_0x4f1662[_0x9af8('0x10')][_0x9af8('0x11')]===0x1f4){logger['error'](_0x9af8('0x12'),_0x12eabd,_0x4f1662['error'][_0x9af8('0x13')]);return _0x4c7213(_0x4f1662['error'][_0x9af8('0x13')]);}logger[_0x9af8('0x10')](_0x9af8('0x12'),_0x12eabd,_0x4f1662[_0x9af8('0x10')][_0x9af8('0x13')]);return _0x3d9ca3(_0x4f1662['error']['message']);}else{logger['info']('Sound,\x20%s,\x20%s',_0x12eabd,_0x9af8('0xc'));_0x3d9ca3(_0x4f1662[_0x9af8('0x14')][_0x9af8('0x13')]);}})[_0x9af8('0x15')](function(_0x53f02f){logger[_0x9af8('0x10')](_0x9af8('0x12'),_0x12eabd,_0x53f02f);_0x4c7213(_0x53f02f);});});}exports['ShowSound']=function(_0x2b7926){var _0x4353fe=this;return new Promise(function(_0x1c933a,_0x13002b){return db['Sound'][_0x9af8('0x16')]({'raw':_0x2b7926['options']?_0x2b7926[_0x9af8('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x2b7926[_0x9af8('0x17')]?_0x2b7926[_0x9af8('0x17')][_0x9af8('0x18')]||null:null,'attributes':_0x2b7926['options']?_0x2b7926['options'][_0x9af8('0x19')]||null:null,'include':_0x2b7926[_0x9af8('0x17')]?_0x2b7926['options'][_0x9af8('0x1a')]?_['map'](_0x2b7926[_0x9af8('0x17')][_0x9af8('0x1a')],function(_0x1b1ffb){return{'model':db[_0x1b1ffb['model']],'as':_0x1b1ffb['as'],'attributes':_0x1b1ffb[_0x9af8('0x19')],'include':_0x1b1ffb[_0x9af8('0x1a')]?_[_0x9af8('0x1b')](_0x1b1ffb[_0x9af8('0x1a')],function(_0x594614){return{'model':db[_0x594614['model']],'as':_0x594614['as'],'attributes':_0x594614[_0x9af8('0x19')],'include':_0x594614[_0x9af8('0x1a')]?_[_0x9af8('0x1b')](_0x594614[_0x9af8('0x1a')],function(_0x103295){return{'model':db[_0x103295[_0x9af8('0x1c')]],'as':_0x103295['as'],'attributes':_0x103295[_0x9af8('0x19')]};}):[]};}):[]};}):[]:[]})[_0x9af8('0x1d')](function(_0x54b102){logger['info']('ShowSound',_0x2b7926);logger['debug']('ShowSound',_0x2b7926,JSON['stringify'](_0x54b102));_0x1c933a(_0x54b102);})[_0x9af8('0x15')](function(_0x556545){logger['error'](_0x9af8('0x1e'),_0x556545[_0x9af8('0x13')],_0x2b7926);_0x13002b(_0x4353fe['error'](0x1f4,_0x556545[_0x9af8('0x13')]));});});};
\ No newline at end of file
+var _0x93f1=['then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','ShowSound','options','raw','attributes','include','model','map','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x53532b,_0x38e675){var _0x5a6f64=function(_0xa805e1){while(--_0xa805e1){_0x53532b['push'](_0x53532b['shift']());}};_0x5a6f64(++_0x38e675);}(_0x93f1,0x133));var _0x193f=function(_0x124098,_0x143963){_0x124098=_0x124098-0x0;var _0x41d3d4=_0x93f1[_0x124098];return _0x41d3d4;};'use strict';var _=require(_0x193f('0x0'));var util=require(_0x193f('0x1'));var moment=require(_0x193f('0x2'));var BPromise=require(_0x193f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x193f('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x193f('0x5'))(_0x193f('0x6'));var config=require(_0x193f('0x7'));var jayson=require(_0x193f('0x8'));var client=jayson[_0x193f('0x9')][_0x193f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x24afef,_0x56dd2c,_0x30d57e){return new BPromise(function(_0xffdf93,_0x764aaf){return client[_0x193f('0xb')](_0x24afef,_0x30d57e)[_0x193f('0xc')](function(_0x496408){logger[_0x193f('0xd')](_0x193f('0xe'),_0x56dd2c,_0x193f('0xf'));logger[_0x193f('0x10')]('Sound,\x20%s,\x20%s,\x20%s',_0x56dd2c,_0x193f('0xf'),JSON[_0x193f('0x11')](_0x496408));if(_0x496408[_0x193f('0x12')]){if(_0x496408[_0x193f('0x12')][_0x193f('0x13')]===0x1f4){logger['error'](_0x193f('0xe'),_0x56dd2c,_0x496408[_0x193f('0x12')]['message']);return _0x764aaf(_0x496408[_0x193f('0x12')]['message']);}logger[_0x193f('0x12')]('Sound,\x20%s,\x20%s',_0x56dd2c,_0x496408[_0x193f('0x12')][_0x193f('0x14')]);return _0xffdf93(_0x496408['error'][_0x193f('0x14')]);}else{logger[_0x193f('0xd')](_0x193f('0xe'),_0x56dd2c,_0x193f('0xf'));_0xffdf93(_0x496408['result'][_0x193f('0x14')]);}})[_0x193f('0x15')](function(_0x3973d7){logger[_0x193f('0x12')](_0x193f('0xe'),_0x56dd2c,_0x3973d7);_0x764aaf(_0x3973d7);});});}exports[_0x193f('0x16')]=function(_0x76deec){var _0x5713d3=this;return new Promise(function(_0x5db1d9,_0x138af3){return db['Sound']['find']({'raw':_0x76deec[_0x193f('0x17')]?_0x76deec[_0x193f('0x17')][_0x193f('0x18')]===undefined?!![]:![]:!![],'where':_0x76deec[_0x193f('0x17')]?_0x76deec['options']['where']||null:null,'attributes':_0x76deec[_0x193f('0x17')]?_0x76deec[_0x193f('0x17')][_0x193f('0x19')]||null:null,'include':_0x76deec[_0x193f('0x17')]?_0x76deec[_0x193f('0x17')][_0x193f('0x1a')]?_['map'](_0x76deec[_0x193f('0x17')][_0x193f('0x1a')],function(_0x1f4024){return{'model':db[_0x1f4024[_0x193f('0x1b')]],'as':_0x1f4024['as'],'attributes':_0x1f4024[_0x193f('0x19')],'include':_0x1f4024[_0x193f('0x1a')]?_['map'](_0x1f4024[_0x193f('0x1a')],function(_0x32fb36){return{'model':db[_0x32fb36[_0x193f('0x1b')]],'as':_0x32fb36['as'],'attributes':_0x32fb36[_0x193f('0x19')],'include':_0x32fb36[_0x193f('0x1a')]?_[_0x193f('0x1c')](_0x32fb36[_0x193f('0x1a')],function(_0x34d906){return{'model':db[_0x34d906[_0x193f('0x1b')]],'as':_0x34d906['as'],'attributes':_0x34d906[_0x193f('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1c6eea){logger[_0x193f('0xd')](_0x193f('0x16'),_0x76deec);logger[_0x193f('0x10')](_0x193f('0x16'),_0x76deec,JSON[_0x193f('0x11')](_0x1c6eea));_0x5db1d9(_0x1c6eea);})[_0x193f('0x15')](function(_0x1839e4){logger[_0x193f('0x12')](_0x193f('0x16'),_0x1839e4[_0x193f('0x14')],_0x76deec);_0x138af3(_0x5713d3['error'](0x1f4,_0x1839e4[_0x193f('0x14')]));});});};
\ No newline at end of file
index db4cc83..5c46573 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8603=['../../components/interaction/service','./squareMessage.controller','isAuthenticated','index','get','/:id','create','put','update','exports','util','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x5ce34a,_0x57887e){var _0x309350=function(_0x52a947){while(--_0x52a947){_0x5ce34a['push'](_0x5ce34a['shift']());}};_0x309350(++_0x57887e);}(_0x8603,0x190));var _0x3860=function(_0xadd0cd,_0x2b444a){_0xadd0cd=_0xadd0cd-0x0;var _0x525c5b=_0x8603[_0xadd0cd];return _0x525c5b;};'use strict';var multer=require('multer');var util=require(_0x3860('0x0'));var path=require(_0x3860('0x1'));var timeout=require(_0x3860('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3860('0x3'));var auth=require(_0x3860('0x4'));var interaction=require(_0x3860('0x5'));var config=require('../../config/environment');var controller=require(_0x3860('0x6'));router['get']('/',auth[_0x3860('0x7')](),controller[_0x3860('0x8')]);router[_0x3860('0x9')](_0x3860('0xa'),auth[_0x3860('0x7')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x3860('0xb')]);router[_0x3860('0xc')]('/:id',auth[_0x3860('0x7')](),controller[_0x3860('0xd')]);router['delete'](_0x3860('0xa'),auth[_0x3860('0x7')](),controller['destroy']);module[_0x3860('0xe')]=router;
\ No newline at end of file
+var _0x757a=['destroy','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','index','isAuthenticated','show','post','create','/:id','update','delete'];(function(_0x2b10e0,_0x3c15a2){var _0x195046=function(_0x1ed4ea){while(--_0x1ed4ea){_0x2b10e0['push'](_0x2b10e0['shift']());}};_0x195046(++_0x3c15a2);}(_0x757a,0xde));var _0xa757=function(_0x3ac402,_0x352932){_0x3ac402=_0x3ac402-0x0;var _0x927620=_0x757a[_0x3ac402];return _0x927620;};'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('0xb')]('/',auth[_0xa757('0x9')](),controller[_0xa757('0xc')]);router['put'](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0xe')]);router[_0xa757('0xf')](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0x10')]);module['exports']=router;
\ No newline at end of file
index 01d8c5d..8e12226 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe87d=['out','sequelize','exports','TEXT','ENUM'];(function(_0x47aa04,_0x238d55){var _0x19e595=function(_0x4c350f){while(--_0x4c350f){_0x47aa04['push'](_0x47aa04['shift']());}};_0x19e595(++_0x238d55);}(_0xe87d,0x1dc));var _0xde87=function(_0x5c11c3,_0x4c243b){_0x5c11c3=_0x5c11c3-0x0;var _0x1a66d0=_0xe87d[_0x5c11c3];return _0x1a66d0;};'use strict';var Sequelize=require(_0xde87('0x0'));module[_0xde87('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0xde87('0x2')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0xde87('0x3')]('in','out'),'defaultValue':_0xde87('0x4'),'allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xde87('0x2')]}};
\ No newline at end of file
+var _0x9f31=['TEXT','medium','ENUM','out','exports','STRING'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x9f31,0xdc));var _0x19f3=function(_0x4b2436,_0x452299){_0x4b2436=_0x4b2436-0x0;var _0x4f5ab2=_0x9f31[_0x4b2436];return _0x4f5ab2;};'use strict';var Sequelize=require('sequelize');module[_0x19f3('0x0')]={'uniqueid':{'type':Sequelize[_0x19f3('0x1')]},'body':{'type':Sequelize[_0x19f3('0x2')](_0x19f3('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0x19f3('0x4')]('in','out'),'defaultValue':_0x19f3('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0x19f3('0x1')]},'providerResponse':{'type':Sequelize[_0x19f3('0x2')]}};
\ No newline at end of file
index 380c52b..5f4dfac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a76=['sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','keys','rawAttributes','options','find','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','index','map','SquareMessage','fieldName','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order'];(function(_0x291d3f,_0x3ef99f){var _0x242080=function(_0x257705){while(--_0x257705){_0x291d3f['push'](_0x291d3f['shift']());}};_0x242080(++_0x3ef99f);}(_0x1a76,0xf1));var _0x61a7=function(_0x16ae34,_0x1dc6d){_0x16ae34=_0x16ae34-0x0;var _0x184836=_0x1a76[_0x16ae34];return _0x184836;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x61a7('0x0'));var zipdir=require(_0x61a7('0x1'));var jsonpatch=require(_0x61a7('0x2'));var rp=require(_0x61a7('0x3'));var moment=require(_0x61a7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x61a7('0x5'));var util=require('util');var path=require(_0x61a7('0x6'));var sox=require('sox');var csv=require(_0x61a7('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x61a7('0x8'));var _=require(_0x61a7('0x9'));var squel=require(_0x61a7('0xa'));var crypto=require('crypto');var jsforce=require(_0x61a7('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x61a7('0xc'));var Papa=require(_0x61a7('0xd'));var Redis=require(_0x61a7('0xe'));var authService=require(_0x61a7('0xf'));var qs=require(_0x61a7('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x61a7('0x11'));var logger=require('../../config/logger')(_0x61a7('0x12'));var utils=require(_0x61a7('0x13'));var config=require(_0x61a7('0x14'));var licenseUtil=require(_0x61a7('0x15'));var db=require(_0x61a7('0x16'))['db'];function respondWithStatusCode(_0x178de8,_0x18afce){_0x18afce=_0x18afce||0xcc;return function(_0x4a02b5){if(_0x4a02b5){return _0x178de8[_0x61a7('0x17')](_0x18afce);}return _0x178de8[_0x61a7('0x18')](_0x18afce)[_0x61a7('0x19')]();};}function respondWithResult(_0x160837,_0x3b1d60){_0x3b1d60=_0x3b1d60||0xc8;return function(_0x2e023b){if(_0x2e023b){return _0x160837[_0x61a7('0x18')](_0x3b1d60)['json'](_0x2e023b);}};}function respondWithFilteredResult(_0xad693,_0x1bf45e){return function(_0x409cde){if(_0x409cde){var _0x356c3c=typeof _0x1bf45e[_0x61a7('0x1a')]===_0x61a7('0x1b')&&typeof _0x1bf45e[_0x61a7('0x1c')]===_0x61a7('0x1b');var _0x36f594=_0x409cde[_0x61a7('0x1d')];var _0x14c290=_0x356c3c?0x0:_0x1bf45e[_0x61a7('0x1a')];var _0x34184a=_0x356c3c?_0x409cde[_0x61a7('0x1d')]:_0x1bf45e['offset']+_0x1bf45e[_0x61a7('0x1c')];var _0x531f4a;if(_0x34184a>=_0x36f594){_0x34184a=_0x36f594;_0x531f4a=0xc8;}else{_0x531f4a=0xce;}_0xad693['status'](_0x531f4a);return _0xad693['set'](_0x61a7('0x1e'),_0x14c290+'-'+_0x34184a+'/'+_0x36f594)['json'](_0x409cde);}return null;};}function patchUpdates(_0x489ee6){return function(_0x11a7ed){try{jsonpatch[_0x61a7('0x1f')](_0x11a7ed,_0x489ee6,!![]);}catch(_0x4dea83){return BPromise[_0x61a7('0x20')](_0x4dea83);}return _0x11a7ed[_0x61a7('0x21')]();};}function saveUpdates(_0xe64701,_0x48752f){return function(_0x4c6115){if(_0x4c6115){return _0x4c6115[_0x61a7('0x22')](_0xe64701)['then'](function(_0x4b176f){return _0x4b176f;});}return null;};}function removeEntity(_0x117293,_0x4d7f0f){return function(_0x38406a){if(_0x38406a){return _0x38406a[_0x61a7('0x23')]()[_0x61a7('0x24')](function(){_0x117293[_0x61a7('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x432eda,_0x462da7){return function(_0x4499a0){if(!_0x4499a0){_0x432eda[_0x61a7('0x17')](0x194);}return _0x4499a0;};}function handleError(_0x53f490,_0x40e7ef){_0x40e7ef=_0x40e7ef||0x1f4;return function(_0x71bae7){logger['error'](_0x71bae7[_0x61a7('0x25')]);if(_0x71bae7[_0x61a7('0x26')]){delete _0x71bae7['name'];}_0x53f490[_0x61a7('0x18')](_0x40e7ef)[_0x61a7('0x27')](_0x71bae7);};}exports[_0x61a7('0x28')]=function(_0x4dac65,_0x194f57){var _0x3ce5de={},_0x2e93eb={},_0x7ea4ca={'count':0x0,'rows':[]};var _0x5681d7=_[_0x61a7('0x29')](db[_0x61a7('0x2a')]['rawAttributes'],function(_0x3e7606){return{'name':_0x3e7606[_0x61a7('0x2b')],'type':_0x3e7606[_0x61a7('0x2c')]['key']};});_0x2e93eb[_0x61a7('0x2d')]=_['map'](_0x5681d7,_0x61a7('0x26'));_0x2e93eb['query']=_['keys'](_0x4dac65[_0x61a7('0x2e')]);_0x2e93eb[_0x61a7('0x2f')]=_[_0x61a7('0x30')](_0x2e93eb[_0x61a7('0x2d')],_0x2e93eb[_0x61a7('0x2e')]);_0x3ce5de['attributes']=_[_0x61a7('0x30')](_0x2e93eb[_0x61a7('0x2d')],qs['fields'](_0x4dac65[_0x61a7('0x2e')][_0x61a7('0x31')]));_0x3ce5de[_0x61a7('0x32')]=_0x3ce5de[_0x61a7('0x32')][_0x61a7('0x33')]?_0x3ce5de[_0x61a7('0x32')]:_0x2e93eb['model'];if(!_0x4dac65['query'][_0x61a7('0x34')](_0x61a7('0x35'))){_0x3ce5de['limit']=qs[_0x61a7('0x1c')](_0x4dac65[_0x61a7('0x2e')]['limit']);_0x3ce5de[_0x61a7('0x1a')]=qs[_0x61a7('0x1a')](_0x4dac65['query'][_0x61a7('0x1a')]);}_0x3ce5de[_0x61a7('0x36')]=qs[_0x61a7('0x37')](_0x4dac65[_0x61a7('0x2e')][_0x61a7('0x37')]);_0x3ce5de['where']=qs['filters'](_[_0x61a7('0x38')](_0x4dac65[_0x61a7('0x2e')],_0x2e93eb[_0x61a7('0x2f')]),_0x5681d7);if(_0x4dac65[_0x61a7('0x2e')][_0x61a7('0x39')]){_0x3ce5de[_0x61a7('0x3a')]=_[_0x61a7('0x3b')](_0x3ce5de[_0x61a7('0x3a')],{'$or':_[_0x61a7('0x29')](_0x5681d7,function(_0x114951){if(_0x114951[_0x61a7('0x2c')]!==_0x61a7('0x3c')){var _0x37dd10={};_0x37dd10[_0x114951[_0x61a7('0x26')]]={'$like':'%'+_0x4dac65[_0x61a7('0x2e')][_0x61a7('0x39')]+'%'};return _0x37dd10;}})});}_0x3ce5de=_[_0x61a7('0x3b')]({},_0x3ce5de,_0x4dac65['options']);var _0x3f57a5={'where':_0x3ce5de['where']};return db[_0x61a7('0x2a')][_0x61a7('0x1d')](_0x3f57a5)[_0x61a7('0x24')](function(_0x30c5b6){_0x7ea4ca['count']=_0x30c5b6;if(_0x4dac65[_0x61a7('0x2e')][_0x61a7('0x3d')]){_0x3ce5de[_0x61a7('0x3e')]=[{'all':!![]}];}return db[_0x61a7('0x2a')][_0x61a7('0x3f')](_0x3ce5de);})[_0x61a7('0x24')](function(_0x383dcb){_0x7ea4ca[_0x61a7('0x40')]=_0x383dcb;return _0x7ea4ca;})[_0x61a7('0x24')](respondWithFilteredResult(_0x194f57,_0x3ce5de))[_0x61a7('0x41')](handleError(_0x194f57,null));};exports[_0x61a7('0x42')]=function(_0x2e6b04,_0x185b01){var _0xc80d8a={'raw':!![],'where':{'id':_0x2e6b04['params']['id']}},_0xdbdebd={};_0xdbdebd['model']=_[_0x61a7('0x43')](db['SquareMessage'][_0x61a7('0x44')]);_0xdbdebd[_0x61a7('0x2e')]=_['keys'](_0x2e6b04[_0x61a7('0x2e')]);_0xdbdebd[_0x61a7('0x2f')]=_[_0x61a7('0x30')](_0xdbdebd[_0x61a7('0x2d')],_0xdbdebd[_0x61a7('0x2e')]);_0xc80d8a['attributes']=_[_0x61a7('0x30')](_0xdbdebd['model'],qs[_0x61a7('0x31')](_0x2e6b04[_0x61a7('0x2e')][_0x61a7('0x31')]));_0xc80d8a['attributes']=_0xc80d8a[_0x61a7('0x32')][_0x61a7('0x33')]?_0xc80d8a['attributes']:_0xdbdebd[_0x61a7('0x2d')];if(_0x2e6b04[_0x61a7('0x2e')][_0x61a7('0x3d')]){_0xc80d8a[_0x61a7('0x3e')]=[{'all':!![]}];}_0xc80d8a=_[_0x61a7('0x3b')]({},_0xc80d8a,_0x2e6b04[_0x61a7('0x45')]);return db[_0x61a7('0x2a')][_0x61a7('0x46')](_0xc80d8a)['then'](handleEntityNotFound(_0x185b01,null))[_0x61a7('0x24')](respondWithResult(_0x185b01,null))[_0x61a7('0x41')](handleError(_0x185b01,null));};exports[_0x61a7('0x47')]=function(_0x5ee33d,_0x2db092){return db[_0x61a7('0x2a')][_0x61a7('0x47')](_0x5ee33d['body'],{})[_0x61a7('0x24')](respondWithResult(_0x2db092,0xc9))[_0x61a7('0x41')](handleError(_0x2db092,null));};exports[_0x61a7('0x22')]=function(_0x57aaf8,_0x14369c){if(_0x57aaf8[_0x61a7('0x48')]['id']){delete _0x57aaf8[_0x61a7('0x48')]['id'];}return db['SquareMessage'][_0x61a7('0x46')]({'where':{'id':_0x57aaf8['params']['id']}})[_0x61a7('0x24')](handleEntityNotFound(_0x14369c,null))[_0x61a7('0x24')](saveUpdates(_0x57aaf8[_0x61a7('0x48')],null))['then'](respondWithResult(_0x14369c,null))[_0x61a7('0x41')](handleError(_0x14369c,null));};exports[_0x61a7('0x23')]=function(_0x5c5f0d,_0x12ceb8){return db[_0x61a7('0x2a')][_0x61a7('0x46')]({'where':{'id':_0x5c5f0d[_0x61a7('0x49')]['id']}})[_0x61a7('0x24')](handleEntityNotFound(_0x12ceb8,null))[_0x61a7('0x24')](removeEntity(_0x12ceb8,null))[_0x61a7('0x41')](handleError(_0x12ceb8,null));};
\ No newline at end of file
+var _0x6d0c=['squel','crypto','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/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','name','send','map','SquareMessage','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','fs-extra','lodash'];(function(_0x3c5f8d,_0x39891f){var _0x3b7beb=function(_0x44d6c9){while(--_0x44d6c9){_0x3c5f8d['push'](_0x3c5f8d['shift']());}};_0x3b7beb(++_0x39891f);}(_0x6d0c,0x8c));var _0xc6d0=function(_0x50368e,_0x466c09){_0x50368e=_0x50368e-0x0;var _0x4a65cd=_0x6d0c[_0x50368e];return _0x4a65cd;};'use strict';var emlformat=require(_0xc6d0('0x0'));var rimraf=require(_0xc6d0('0x1'));var zipdir=require(_0xc6d0('0x2'));var jsonpatch=require(_0xc6d0('0x3'));var rp=require(_0xc6d0('0x4'));var moment=require(_0xc6d0('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc6d0('0x6'));var util=require('util');var path=require('path');var sox=require(_0xc6d0('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc6d0('0x8'));var _=require(_0xc6d0('0x9'));var squel=require(_0xc6d0('0xa'));var crypto=require(_0xc6d0('0xb'));var jsforce=require(_0xc6d0('0xc'));var deskjs=require(_0xc6d0('0xd'));var toCsv=require(_0xc6d0('0xe'));var querystring=require(_0xc6d0('0xf'));var Papa=require(_0xc6d0('0x10'));var Redis=require(_0xc6d0('0x11'));var authService=require(_0xc6d0('0x12'));var qs=require(_0xc6d0('0x13'));var as=require(_0xc6d0('0x14'));var hardwareService=require(_0xc6d0('0x15'));var logger=require(_0xc6d0('0x16'))(_0xc6d0('0x17'));var utils=require(_0xc6d0('0x18'));var config=require(_0xc6d0('0x19'));var licenseUtil=require(_0xc6d0('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x562ae9,_0x170c38){_0x170c38=_0x170c38||0xcc;return function(_0x3b3a05){if(_0x3b3a05){return _0x562ae9['sendStatus'](_0x170c38);}return _0x562ae9[_0xc6d0('0x1b')](_0x170c38)[_0xc6d0('0x1c')]();};}function respondWithResult(_0x16170e,_0x58393c){_0x58393c=_0x58393c||0xc8;return function(_0x5c4521){if(_0x5c4521){return _0x16170e[_0xc6d0('0x1b')](_0x58393c)[_0xc6d0('0x1d')](_0x5c4521);}};}function respondWithFilteredResult(_0x17afb5,_0x501260){return function(_0x2e1ba2){if(_0x2e1ba2){var _0x49ef8e=typeof _0x501260[_0xc6d0('0x1e')]===_0xc6d0('0x1f')&&typeof _0x501260[_0xc6d0('0x20')]===_0xc6d0('0x1f');var _0x3acff1=_0x2e1ba2['count'];var _0x4b178c=_0x49ef8e?0x0:_0x501260['offset'];var _0x1fa160=_0x49ef8e?_0x2e1ba2[_0xc6d0('0x21')]:_0x501260[_0xc6d0('0x1e')]+_0x501260['limit'];var _0x278552;if(_0x1fa160>=_0x3acff1){_0x1fa160=_0x3acff1;_0x278552=0xc8;}else{_0x278552=0xce;}_0x17afb5['status'](_0x278552);return _0x17afb5['set'](_0xc6d0('0x22'),_0x4b178c+'-'+_0x1fa160+'/'+_0x3acff1)[_0xc6d0('0x1d')](_0x2e1ba2);}return null;};}function patchUpdates(_0x2121f2){return function(_0x42d2d7){try{jsonpatch[_0xc6d0('0x23')](_0x42d2d7,_0x2121f2,!![]);}catch(_0x7a0604){return BPromise[_0xc6d0('0x24')](_0x7a0604);}return _0x42d2d7[_0xc6d0('0x25')]();};}function saveUpdates(_0x4e88b2,_0x411faa){return function(_0x2fbbd9){if(_0x2fbbd9){return _0x2fbbd9[_0xc6d0('0x26')](_0x4e88b2)[_0xc6d0('0x27')](function(_0x4b48f3){return _0x4b48f3;});}return null;};}function removeEntity(_0x5e7a68,_0x321a97){return function(_0x55b44d){if(_0x55b44d){return _0x55b44d[_0xc6d0('0x28')]()[_0xc6d0('0x27')](function(){_0x5e7a68[_0xc6d0('0x1b')](0xcc)[_0xc6d0('0x1c')]();});}};}function handleEntityNotFound(_0x2cc17e,_0x47182b){return function(_0x420cf4){if(!_0x420cf4){_0x2cc17e[_0xc6d0('0x29')](0x194);}return _0x420cf4;};}function handleError(_0x345c58,_0x1126fa){_0x1126fa=_0x1126fa||0x1f4;return function(_0x2bb7a8){logger['error'](_0x2bb7a8['stack']);if(_0x2bb7a8[_0xc6d0('0x2a')]){delete _0x2bb7a8[_0xc6d0('0x2a')];}_0x345c58[_0xc6d0('0x1b')](_0x1126fa)[_0xc6d0('0x2b')](_0x2bb7a8);};}exports['index']=function(_0xa457fa,_0x4720d7){var _0x1e2a03={},_0x3dcc61={},_0x6d0d94={'count':0x0,'rows':[]};var _0x4b7013=_[_0xc6d0('0x2c')](db[_0xc6d0('0x2d')][_0xc6d0('0x2e')],function(_0x8463ab){return{'name':_0x8463ab[_0xc6d0('0x2f')],'type':_0x8463ab[_0xc6d0('0x30')]['key']};});_0x3dcc61[_0xc6d0('0x31')]=_[_0xc6d0('0x2c')](_0x4b7013,_0xc6d0('0x2a'));_0x3dcc61[_0xc6d0('0x32')]=_[_0xc6d0('0x33')](_0xa457fa['query']);_0x3dcc61['filters']=_[_0xc6d0('0x34')](_0x3dcc61[_0xc6d0('0x31')],_0x3dcc61['query']);_0x1e2a03[_0xc6d0('0x35')]=_[_0xc6d0('0x34')](_0x3dcc61[_0xc6d0('0x31')],qs[_0xc6d0('0x36')](_0xa457fa[_0xc6d0('0x32')][_0xc6d0('0x36')]));_0x1e2a03['attributes']=_0x1e2a03[_0xc6d0('0x35')]['length']?_0x1e2a03['attributes']:_0x3dcc61[_0xc6d0('0x31')];if(!_0xa457fa[_0xc6d0('0x32')][_0xc6d0('0x37')]('nolimit')){_0x1e2a03['limit']=qs[_0xc6d0('0x20')](_0xa457fa[_0xc6d0('0x32')]['limit']);_0x1e2a03['offset']=qs[_0xc6d0('0x1e')](_0xa457fa[_0xc6d0('0x32')]['offset']);}_0x1e2a03[_0xc6d0('0x38')]=qs[_0xc6d0('0x39')](_0xa457fa[_0xc6d0('0x32')]['sort']);_0x1e2a03['where']=qs[_0xc6d0('0x3a')](_[_0xc6d0('0x3b')](_0xa457fa[_0xc6d0('0x32')],_0x3dcc61['filters']),_0x4b7013);if(_0xa457fa['query']['filter']){_0x1e2a03[_0xc6d0('0x3c')]=_[_0xc6d0('0x3d')](_0x1e2a03[_0xc6d0('0x3c')],{'$or':_['map'](_0x4b7013,function(_0x50a30e){if(_0x50a30e[_0xc6d0('0x30')]!==_0xc6d0('0x3e')){var _0xcd19fa={};_0xcd19fa[_0x50a30e['name']]={'$like':'%'+_0xa457fa[_0xc6d0('0x32')][_0xc6d0('0x3f')]+'%'};return _0xcd19fa;}})});}_0x1e2a03=_['merge']({},_0x1e2a03,_0xa457fa[_0xc6d0('0x40')]);var _0x1d812f={'where':_0x1e2a03[_0xc6d0('0x3c')]};return db[_0xc6d0('0x2d')][_0xc6d0('0x21')](_0x1d812f)['then'](function(_0x3718c0){_0x6d0d94[_0xc6d0('0x21')]=_0x3718c0;if(_0xa457fa['query'][_0xc6d0('0x41')]){_0x1e2a03[_0xc6d0('0x42')]=[{'all':!![]}];}return db[_0xc6d0('0x2d')][_0xc6d0('0x43')](_0x1e2a03);})['then'](function(_0x4a3cd8){_0x6d0d94[_0xc6d0('0x44')]=_0x4a3cd8;return _0x6d0d94;})[_0xc6d0('0x27')](respondWithFilteredResult(_0x4720d7,_0x1e2a03))[_0xc6d0('0x45')](handleError(_0x4720d7,null));};exports[_0xc6d0('0x46')]=function(_0x2e7c85,_0x1d4962){var _0x5776bf={'raw':!![],'where':{'id':_0x2e7c85[_0xc6d0('0x47')]['id']}},_0x3c54fc={};_0x3c54fc[_0xc6d0('0x31')]=_[_0xc6d0('0x33')](db['SquareMessage'][_0xc6d0('0x2e')]);_0x3c54fc['query']=_[_0xc6d0('0x33')](_0x2e7c85['query']);_0x3c54fc[_0xc6d0('0x3a')]=_[_0xc6d0('0x34')](_0x3c54fc[_0xc6d0('0x31')],_0x3c54fc[_0xc6d0('0x32')]);_0x5776bf['attributes']=_[_0xc6d0('0x34')](_0x3c54fc['model'],qs[_0xc6d0('0x36')](_0x2e7c85['query'][_0xc6d0('0x36')]));_0x5776bf[_0xc6d0('0x35')]=_0x5776bf[_0xc6d0('0x35')]['length']?_0x5776bf[_0xc6d0('0x35')]:_0x3c54fc[_0xc6d0('0x31')];if(_0x2e7c85[_0xc6d0('0x32')][_0xc6d0('0x41')]){_0x5776bf['include']=[{'all':!![]}];}_0x5776bf=_[_0xc6d0('0x3d')]({},_0x5776bf,_0x2e7c85[_0xc6d0('0x40')]);return db[_0xc6d0('0x2d')][_0xc6d0('0x48')](_0x5776bf)['then'](handleEntityNotFound(_0x1d4962,null))['then'](respondWithResult(_0x1d4962,null))['catch'](handleError(_0x1d4962,null));};exports[_0xc6d0('0x49')]=function(_0x45f786,_0x1f7320){return db['SquareMessage'][_0xc6d0('0x49')](_0x45f786[_0xc6d0('0x4a')],{})[_0xc6d0('0x27')](respondWithResult(_0x1f7320,0xc9))[_0xc6d0('0x45')](handleError(_0x1f7320,null));};exports['update']=function(_0x530472,_0x47ec13){if(_0x530472[_0xc6d0('0x4a')]['id']){delete _0x530472['body']['id'];}return db['SquareMessage'][_0xc6d0('0x48')]({'where':{'id':_0x530472[_0xc6d0('0x47')]['id']}})['then'](handleEntityNotFound(_0x47ec13,null))['then'](saveUpdates(_0x530472['body'],null))['then'](respondWithResult(_0x47ec13,null))[_0xc6d0('0x45')](handleError(_0x47ec13,null));};exports['destroy']=function(_0x234783,_0x212ce8){return db[_0xc6d0('0x2d')][_0xc6d0('0x48')]({'where':{'id':_0x234783['params']['id']}})['then'](handleEntityNotFound(_0x212ce8,null))['then'](removeEntity(_0x212ce8,null))[_0xc6d0('0x45')](handleError(_0x212ce8,null));};
\ No newline at end of file
index e9d4290..d4bff76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60ea=['define','SquareMessage','square_messages','lodash','util','api','moment','bluebird','rimraf','./squareMessage.attributes'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x60ea,0xcb));var _0xa60e=function(_0x1d996f,_0x25fd00){_0x1d996f=_0x1d996f-0x0;var _0x14a94a=_0x60ea[_0x1d996f];return _0x14a94a;};'use strict';var _=require(_0xa60e('0x0'));var util=require(_0xa60e('0x1'));var logger=require('../../config/logger')(_0xa60e('0x2'));var moment=require(_0xa60e('0x3'));var BPromise=require(_0xa60e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xa60e('0x5'));var config=require('../../config/environment');var attributes=require(_0xa60e('0x6'));module['exports']=function(_0xee9532,_0x3f8e8d){return _0xee9532[_0xa60e('0x7')](_0xa60e('0x8'),attributes,{'tableName':_0xa60e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf812=['moment','bluebird','path','rimraf','../../config/environment','./squareMessage.attributes','define','SquareMessage','square_messages','lodash','util','../../config/logger','api'];(function(_0x4d1dcb,_0x49df03){var _0x3088a7=function(_0xeb5143){while(--_0xeb5143){_0x4d1dcb['push'](_0x4d1dcb['shift']());}};_0x3088a7(++_0x49df03);}(_0xf812,0x8b));var _0x2f81=function(_0x831eff,_0x3c447c){_0x831eff=_0x831eff-0x0;var _0x4a3f84=_0xf812[_0x831eff];return _0x4a3f84;};'use strict';var _=require(_0x2f81('0x0'));var util=require(_0x2f81('0x1'));var logger=require(_0x2f81('0x2'))(_0x2f81('0x3'));var moment=require(_0x2f81('0x4'));var BPromise=require(_0x2f81('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2f81('0x6'));var rimraf=require(_0x2f81('0x7'));var config=require(_0x2f81('0x8'));var attributes=require(_0x2f81('0x9'));module['exports']=function(_0x38fe96,_0x46f6cd){return _0x38fe96[_0x2f81('0xa')](_0x2f81('0xb'),attributes,{'tableName':_0x2f81('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index df92227..547a24b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe69e=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareMessage,\x20%s,\x20%s','message','catch','CreateSquareMessage','SquareMessage','body','options','raw','debug','bluebird','randomstring','ioredis'];(function(_0x159c39,_0x1195ce){var _0xa06872=function(_0x1febea){while(--_0x1febea){_0x159c39['push'](_0x159c39['shift']());}};_0xa06872(++_0x1195ce);}(_0xe69e,0xdd));var _0xee69=function(_0xf5d71c,_0x2613a6){_0xf5d71c=_0xf5d71c-0x0;var _0x5af672=_0xe69e[_0xf5d71c];return _0x5af672;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xee69('0x0'));var rs=require(_0xee69('0x1'));var fs=require('fs');var Redis=require(_0xee69('0x2'));var db=require(_0xee69('0x3'))['db'];var utils=require(_0xee69('0x4'));var logger=require(_0xee69('0x5'))(_0xee69('0x6'));var config=require(_0xee69('0x7'));var jayson=require(_0xee69('0x8'));var client=jayson[_0xee69('0x9')][_0xee69('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x150dff,_0x2b0220,_0x3163b9){return new BPromise(function(_0x917bb2,_0x5c843a){return client[_0xee69('0xb')](_0x150dff,_0x3163b9)[_0xee69('0xc')](function(_0x2608f4){logger[_0xee69('0xd')]('SquareMessage,\x20%s,\x20%s',_0x2b0220,_0xee69('0xe'));logger['debug'](_0xee69('0xf'),_0x2b0220,_0xee69('0xe'),JSON[_0xee69('0x10')](_0x2608f4));if(_0x2608f4['error']){if(_0x2608f4[_0xee69('0x11')][_0xee69('0x12')]===0x1f4){logger[_0xee69('0x11')](_0xee69('0x13'),_0x2b0220,_0x2608f4[_0xee69('0x11')][_0xee69('0x14')]);return _0x5c843a(_0x2608f4[_0xee69('0x11')]['message']);}logger[_0xee69('0x11')]('SquareMessage,\x20%s,\x20%s',_0x2b0220,_0x2608f4[_0xee69('0x11')][_0xee69('0x14')]);return _0x917bb2(_0x2608f4[_0xee69('0x11')][_0xee69('0x14')]);}else{logger[_0xee69('0xd')](_0xee69('0x13'),_0x2b0220,_0xee69('0xe'));_0x917bb2(_0x2608f4['result']['message']);}})[_0xee69('0x15')](function(_0x408598){logger['error']('SquareMessage,\x20%s,\x20%s',_0x2b0220,_0x408598);_0x5c843a(_0x408598);});});}exports[_0xee69('0x16')]=function(_0x1e12ea){var _0x1ee495=this;return new Promise(function(_0x3d886e,_0x38e351){return db[_0xee69('0x17')]['create'](_0x1e12ea[_0xee69('0x18')],{'raw':_0x1e12ea[_0xee69('0x19')]?_0x1e12ea[_0xee69('0x19')][_0xee69('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x21c853){logger[_0xee69('0xd')]('CreateSquareMessage',_0x1e12ea);logger[_0xee69('0x1b')]('CreateSquareMessage',_0x1e12ea,JSON[_0xee69('0x10')](_0x21c853));_0x3d886e(_0x21c853);})[_0xee69('0x15')](function(_0x48d1fc){logger['error'](_0xee69('0x16'),_0x48d1fc['message'],_0x1e12ea);_0x38e351(_0x1ee495['error'](0x1f4,_0x48d1fc['message']));});});};
\ No newline at end of file
+var _0x4517=['request\x20sent','debug','stringify','error','code','SquareMessage,\x20%s,\x20%s','message','catch','SquareMessage','create','body','options','then','CreateSquareMessage','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','info'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4517,0x146));var _0x7451=function(_0x6aa13c,_0x525802){_0x6aa13c=_0x6aa13c-0x0;var _0x2d688f=_0x4517[_0x6aa13c];return _0x2d688f;};'use strict';var _=require(_0x7451('0x0'));var util=require(_0x7451('0x1'));var moment=require(_0x7451('0x2'));var BPromise=require('bluebird');var rs=require(_0x7451('0x3'));var fs=require('fs');var Redis=require(_0x7451('0x4'));var db=require(_0x7451('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7451('0x6'))(_0x7451('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x7451('0x8')][_0x7451('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2215cf,_0x56fdf6,_0x5dc3ed){return new BPromise(function(_0x31b4e0,_0x808ec2){return client[_0x7451('0xa')](_0x2215cf,_0x5dc3ed)['then'](function(_0x2df14a){logger[_0x7451('0xb')]('SquareMessage,\x20%s,\x20%s',_0x56fdf6,_0x7451('0xc'));logger[_0x7451('0xd')]('SquareMessage,\x20%s,\x20%s,\x20%s',_0x56fdf6,_0x7451('0xc'),JSON[_0x7451('0xe')](_0x2df14a));if(_0x2df14a['error']){if(_0x2df14a[_0x7451('0xf')][_0x7451('0x10')]===0x1f4){logger['error'](_0x7451('0x11'),_0x56fdf6,_0x2df14a['error'][_0x7451('0x12')]);return _0x808ec2(_0x2df14a[_0x7451('0xf')][_0x7451('0x12')]);}logger[_0x7451('0xf')]('SquareMessage,\x20%s,\x20%s',_0x56fdf6,_0x2df14a[_0x7451('0xf')]['message']);return _0x31b4e0(_0x2df14a[_0x7451('0xf')]['message']);}else{logger['info'](_0x7451('0x11'),_0x56fdf6,_0x7451('0xc'));_0x31b4e0(_0x2df14a['result'][_0x7451('0x12')]);}})[_0x7451('0x13')](function(_0x4a4905){logger['error']('SquareMessage,\x20%s,\x20%s',_0x56fdf6,_0x4a4905);_0x808ec2(_0x4a4905);});});}exports['CreateSquareMessage']=function(_0x346b5d){var _0xe51fc5=this;return new Promise(function(_0x527698,_0x47db45){return db[_0x7451('0x14')][_0x7451('0x15')](_0x346b5d[_0x7451('0x16')],{'raw':_0x346b5d[_0x7451('0x17')]?_0x346b5d[_0x7451('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x7451('0x18')](function(_0x265c1a){logger[_0x7451('0xb')](_0x7451('0x19'),_0x346b5d);logger[_0x7451('0xd')](_0x7451('0x19'),_0x346b5d,JSON[_0x7451('0xe')](_0x265c1a));_0x527698(_0x265c1a);})[_0x7451('0x13')](function(_0x4ea096){logger[_0x7451('0xf')](_0x7451('0x19'),_0x4ea096[_0x7451('0x12')],_0x346b5d);_0x47db45(_0xe51fc5['error'](0x1f4,_0x4ea096[_0x7451('0x12')]));});});};
\ No newline at end of file
index 9eb7380..d3b6a69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa480=['index','/:id','show','/:id/test','test','post','create','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa480,0x82));var _0x0a48=function(_0x48b810,_0x173a5e){_0x48b810=_0x48b810-0x0;var _0x23c17d=_0xa480[_0x48b810];return _0x23c17d;};'use strict';var multer=require(_0x0a48('0x0'));var util=require('util');var path=require(_0x0a48('0x1'));var timeout=require('connect-timeout');var express=require(_0x0a48('0x2'));var router=express[_0x0a48('0x3')]();var fs_extra=require(_0x0a48('0x4'));var auth=require(_0x0a48('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x0a48('0x6'));var controller=require(_0x0a48('0x7'));router[_0x0a48('0x8')]('/',auth[_0x0a48('0x9')](),controller[_0x0a48('0xa')]);router[_0x0a48('0x8')](_0x0a48('0xb'),auth[_0x0a48('0x9')](),controller[_0x0a48('0xc')]);router[_0x0a48('0x8')](_0x0a48('0xd'),auth[_0x0a48('0x9')](),timeout('15s'),controller[_0x0a48('0xe')]);router[_0x0a48('0xf')]('/',auth[_0x0a48('0x9')](),controller[_0x0a48('0x10')]);router['put'](_0x0a48('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x0a48('0x11')]('/:id',auth[_0x0a48('0x9')](),controller[_0x0a48('0x12')]);module[_0x0a48('0x13')]=router;
\ No newline at end of file
+var _0x5be8=['create','put','/:id','destroy','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','index','/:id/test','15s','test'];(function(_0x3f8f5c,_0x461c6e){var _0x51f351=function(_0x7cc97e){while(--_0x7cc97e){_0x3f8f5c['push'](_0x3f8f5c['shift']());}};_0x51f351(++_0x461c6e);}(_0x5be8,0x1b4));var _0x85be=function(_0x16f300,_0x1ed589){_0x16f300=_0x16f300-0x0;var _0x36d640=_0x5be8[_0x16f300];return _0x36d640;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x85be('0x0'));var express=require('express');var router=express[_0x85be('0x1')]();var fs_extra=require(_0x85be('0x2'));var auth=require(_0x85be('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x85be('0x4'));var controller=require(_0x85be('0x5'));router[_0x85be('0x6')]('/',auth[_0x85be('0x7')](),controller[_0x85be('0x8')]);router['get']('/:id',auth[_0x85be('0x7')](),controller['show']);router['get'](_0x85be('0x9'),auth[_0x85be('0x7')](),timeout(_0x85be('0xa')),controller[_0x85be('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x85be('0xc')]);router[_0x85be('0xd')](_0x85be('0xe'),auth[_0x85be('0x7')](),controller['update']);router['delete'](_0x85be('0xe'),auth[_0x85be('0x7')](),controller[_0x85be('0xf')]);module['exports']=router;
\ No newline at end of file
index baead94..0a59d84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe49a=['STRING','name','sequelize','exports'];(function(_0x1a3bb0,_0x6874d){var _0x2b24af=function(_0x7d6394){while(--_0x7d6394){_0x1a3bb0['push'](_0x1a3bb0['shift']());}};_0x2b24af(++_0x6874d);}(_0xe49a,0x18a));var _0xae49=function(_0x24717a,_0x26f6dc){_0x24717a=_0x24717a-0x0;var _0x32cf54=_0xe49a[_0x24717a];return _0x32cf54;};'use strict';var Sequelize=require(_0xae49('0x0'));module[_0xae49('0x1')]={'name':{'type':Sequelize[_0xae49('0x2')],'unique':_0xae49('0x3'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd353=['name','STRING','sequelize','exports'];(function(_0x2eb88f,_0x37fe90){var _0x52e1ed=function(_0x531ff1){while(--_0x531ff1){_0x2eb88f['push'](_0x2eb88f['shift']());}};_0x52e1ed(++_0x37fe90);}(_0xd353,0x7e));var _0x3d35=function(_0x6751f2,_0x314f17){_0x6751f2=_0x6751f2-0x0;var _0x71e504=_0xd353[_0x6751f2];return _0x71e504;};'use strict';var Sequelize=require(_0x3d35('0x0'));module[_0x3d35('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x3d35('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0x3d35('0x3')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index a89bfea..307490a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a92=['UserProfileResource','error','stack','send','index','rawAttributes','fieldName','type','key','model','map','name','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','SquareOdbc','includeAll','include','rows','show','params','keys','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','test','dsn','odbc','openSync','closeSync','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','sox','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get'];(function(_0x4aa4e6,_0x278c45){var _0x322588=function(_0x19279d){while(--_0x19279d){_0x4aa4e6['push'](_0x4aa4e6['shift']());}};_0x322588(++_0x278c45);}(_0x4a92,0x187));var _0x24a9=function(_0x1392c4,_0x5a51c6){_0x1392c4=_0x1392c4-0x0;var _0x179f77=_0x4a92[_0x1392c4];return _0x179f77;};'use strict';var emlformat=require(_0x24a9('0x0'));var rimraf=require(_0x24a9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x24a9('0x2'));var rp=require(_0x24a9('0x3'));var moment=require(_0x24a9('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x24a9('0x5'));var util=require('util');var path=require('path');var sox=require(_0x24a9('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x24a9('0x7'));var squel=require(_0x24a9('0x8'));var crypto=require(_0x24a9('0x9'));var jsforce=require(_0x24a9('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x24a9('0xb'));var querystring=require(_0x24a9('0xc'));var Papa=require(_0x24a9('0xd'));var Redis=require('ioredis');var authService=require(_0x24a9('0xe'));var qs=require(_0x24a9('0xf'));var as=require(_0x24a9('0x10'));var hardwareService=require(_0x24a9('0x11'));var logger=require(_0x24a9('0x12'))(_0x24a9('0x13'));var utils=require('../../config/utils');var config=require(_0x24a9('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x24a9('0x15'))['db'];function respondWithStatusCode(_0x1d4b0e,_0x23e9b9){_0x23e9b9=_0x23e9b9||0xcc;return function(_0x17043a){if(_0x17043a){return _0x1d4b0e[_0x24a9('0x16')](_0x23e9b9);}return _0x1d4b0e[_0x24a9('0x17')](_0x23e9b9)[_0x24a9('0x18')]();};}function respondWithResult(_0x165b67,_0x5a2bbf){_0x5a2bbf=_0x5a2bbf||0xc8;return function(_0x112208){if(_0x112208){return _0x165b67['status'](_0x5a2bbf)[_0x24a9('0x19')](_0x112208);}};}function respondWithFilteredResult(_0x3fa942,_0x304b3b){return function(_0x1bb75a){if(_0x1bb75a){var _0x521f4f=typeof _0x304b3b[_0x24a9('0x1a')]===_0x24a9('0x1b')&&typeof _0x304b3b[_0x24a9('0x1c')]===_0x24a9('0x1b');var _0x3fb370=_0x1bb75a[_0x24a9('0x1d')];var _0x268988=_0x521f4f?0x0:_0x304b3b['offset'];var _0x1818ad=_0x521f4f?_0x1bb75a[_0x24a9('0x1d')]:_0x304b3b[_0x24a9('0x1a')]+_0x304b3b['limit'];var _0x35f8f6;if(_0x1818ad>=_0x3fb370){_0x1818ad=_0x3fb370;_0x35f8f6=0xc8;}else{_0x35f8f6=0xce;}_0x3fa942[_0x24a9('0x17')](_0x35f8f6);return _0x3fa942[_0x24a9('0x1e')](_0x24a9('0x1f'),_0x268988+'-'+_0x1818ad+'/'+_0x3fb370)[_0x24a9('0x19')](_0x1bb75a);}return null;};}function patchUpdates(_0x517bd5){return function(_0x5eef98){try{jsonpatch[_0x24a9('0x20')](_0x5eef98,_0x517bd5,!![]);}catch(_0x3d49fc){return BPromise[_0x24a9('0x21')](_0x3d49fc);}return _0x5eef98[_0x24a9('0x22')]();};}function saveUpdates(_0x1bf228,_0x5927b4){return function(_0x1f7be9){if(_0x1f7be9){return _0x1f7be9[_0x24a9('0x23')](_0x1bf228)[_0x24a9('0x24')](function(_0x33e872){return _0x33e872;});}return null;};}function removeEntity(_0x2d9d69,_0x1f0fca){return function(_0x5aaa3c){if(_0x5aaa3c){return _0x5aaa3c[_0x24a9('0x25')]()[_0x24a9('0x24')](function(){var _0x2dcdc1=_0x5aaa3c[_0x24a9('0x26')]({'plain':!![]});var _0x33c880='ODBC';return db[_0x24a9('0x27')][_0x24a9('0x25')]({'where':{'type':_0x33c880,'resourceId':_0x2dcdc1['id']}})['then'](function(){return _0x5aaa3c;});})[_0x24a9('0x24')](function(){_0x2d9d69[_0x24a9('0x17')](0xcc)[_0x24a9('0x18')]();});}};}function handleEntityNotFound(_0x360cc9,_0x39020e){return function(_0x269701){if(!_0x269701){_0x360cc9[_0x24a9('0x16')](0x194);}return _0x269701;};}function handleError(_0x20c6c9,_0x18758a){_0x18758a=_0x18758a||0x1f4;return function(_0x1afc16){logger[_0x24a9('0x28')](_0x1afc16[_0x24a9('0x29')]);if(_0x1afc16['name']){delete _0x1afc16['name'];}_0x20c6c9[_0x24a9('0x17')](_0x18758a)[_0x24a9('0x2a')](_0x1afc16);};}exports[_0x24a9('0x2b')]=function(_0x2d6260,_0x30ec02){var _0x43d8ae={},_0x3fe381={},_0x44bd5f={'count':0x0,'rows':[]};var _0x196165=_['map'](db['SquareOdbc'][_0x24a9('0x2c')],function(_0x14b843){return{'name':_0x14b843[_0x24a9('0x2d')],'type':_0x14b843[_0x24a9('0x2e')][_0x24a9('0x2f')]};});_0x3fe381[_0x24a9('0x30')]=_[_0x24a9('0x31')](_0x196165,_0x24a9('0x32'));_0x3fe381[_0x24a9('0x33')]=_['keys'](_0x2d6260['query']);_0x3fe381[_0x24a9('0x34')]=_[_0x24a9('0x35')](_0x3fe381[_0x24a9('0x30')],_0x3fe381[_0x24a9('0x33')]);_0x43d8ae[_0x24a9('0x36')]=_['intersection'](_0x3fe381[_0x24a9('0x30')],qs[_0x24a9('0x37')](_0x2d6260[_0x24a9('0x33')][_0x24a9('0x37')]));_0x43d8ae[_0x24a9('0x36')]=_0x43d8ae[_0x24a9('0x36')][_0x24a9('0x38')]?_0x43d8ae[_0x24a9('0x36')]:_0x3fe381[_0x24a9('0x30')];if(!_0x2d6260[_0x24a9('0x33')]['hasOwnProperty'](_0x24a9('0x39'))){_0x43d8ae[_0x24a9('0x1c')]=qs[_0x24a9('0x1c')](_0x2d6260[_0x24a9('0x33')][_0x24a9('0x1c')]);_0x43d8ae[_0x24a9('0x1a')]=qs[_0x24a9('0x1a')](_0x2d6260[_0x24a9('0x33')][_0x24a9('0x1a')]);}_0x43d8ae[_0x24a9('0x3a')]=qs[_0x24a9('0x3b')](_0x2d6260[_0x24a9('0x33')][_0x24a9('0x3b')]);_0x43d8ae[_0x24a9('0x3c')]=qs[_0x24a9('0x34')](_[_0x24a9('0x3d')](_0x2d6260[_0x24a9('0x33')],_0x3fe381['filters']),_0x196165);if(_0x2d6260[_0x24a9('0x33')][_0x24a9('0x3e')]){_0x43d8ae[_0x24a9('0x3c')]=_[_0x24a9('0x3f')](_0x43d8ae['where'],{'$or':_['map'](_0x196165,function(_0xed6d52){if(_0xed6d52[_0x24a9('0x2e')]!=='VIRTUAL'){var _0x4d73ea={};_0x4d73ea[_0xed6d52[_0x24a9('0x32')]]={'$like':'%'+_0x2d6260[_0x24a9('0x33')][_0x24a9('0x3e')]+'%'};return _0x4d73ea;}})});}_0x43d8ae=_['merge']({},_0x43d8ae,_0x2d6260[_0x24a9('0x40')]);var _0x17b1ca={'where':_0x43d8ae[_0x24a9('0x3c')]};return db[_0x24a9('0x41')][_0x24a9('0x1d')](_0x17b1ca)[_0x24a9('0x24')](function(_0xa72478){_0x44bd5f[_0x24a9('0x1d')]=_0xa72478;if(_0x2d6260['query'][_0x24a9('0x42')]){_0x43d8ae[_0x24a9('0x43')]=[{'all':!![]}];}return db['SquareOdbc']['findAll'](_0x43d8ae);})[_0x24a9('0x24')](function(_0x2ced4b){_0x44bd5f[_0x24a9('0x44')]=_0x2ced4b;return _0x44bd5f;})[_0x24a9('0x24')](respondWithFilteredResult(_0x30ec02,_0x43d8ae))['catch'](handleError(_0x30ec02,null));};exports[_0x24a9('0x45')]=function(_0x4d9ba0,_0x3bb865){var _0x4b77a7={'raw':!![],'where':{'id':_0x4d9ba0[_0x24a9('0x46')]['id']}},_0x525110={};_0x525110[_0x24a9('0x30')]=_[_0x24a9('0x47')](db[_0x24a9('0x41')][_0x24a9('0x2c')]);_0x525110[_0x24a9('0x33')]=_['keys'](_0x4d9ba0[_0x24a9('0x33')]);_0x525110[_0x24a9('0x34')]=_[_0x24a9('0x35')](_0x525110[_0x24a9('0x30')],_0x525110[_0x24a9('0x33')]);_0x4b77a7[_0x24a9('0x36')]=_[_0x24a9('0x35')](_0x525110['model'],qs[_0x24a9('0x37')](_0x4d9ba0[_0x24a9('0x33')][_0x24a9('0x37')]));_0x4b77a7[_0x24a9('0x36')]=_0x4b77a7[_0x24a9('0x36')][_0x24a9('0x38')]?_0x4b77a7[_0x24a9('0x36')]:_0x525110[_0x24a9('0x30')];if(_0x4d9ba0[_0x24a9('0x33')][_0x24a9('0x42')]){_0x4b77a7[_0x24a9('0x43')]=[{'all':!![]}];}_0x4b77a7=_[_0x24a9('0x3f')]({},_0x4b77a7,_0x4d9ba0['options']);return db[_0x24a9('0x41')]['find'](_0x4b77a7)[_0x24a9('0x24')](handleEntityNotFound(_0x3bb865,null))['then'](respondWithResult(_0x3bb865,null))['catch'](handleError(_0x3bb865,null));};exports[_0x24a9('0x48')]=function(_0x2c6418,_0x4932df){return db[_0x24a9('0x41')][_0x24a9('0x48')](_0x2c6418[_0x24a9('0x49')],{})[_0x24a9('0x24')](function(_0xd60eb4){var _0x199edc=_0x2c6418[_0x24a9('0x4a')][_0x24a9('0x26')]({'plain':!![]});if(!_0x199edc)throw new Error(_0x24a9('0x4b'));if(_0x199edc[_0x24a9('0x4c')]===_0x24a9('0x4a')){var _0x13965d=_0xd60eb4[_0x24a9('0x26')]({'plain':!![]});var _0x791280='ODBC';return db['UserProfileSection'][_0x24a9('0x4d')]({'where':{'name':_0x791280,'userProfileId':_0x199edc[_0x24a9('0x4e')]},'raw':!![]})['then'](function(_0x36f242){if(_0x36f242&&_0x36f242['autoAssociation']===0x0){return db[_0x24a9('0x27')][_0x24a9('0x48')]({'name':_0x13965d[_0x24a9('0x32')],'resourceId':_0x13965d['id'],'type':_0x36f242[_0x24a9('0x32')],'sectionId':_0x36f242['id']},{})[_0x24a9('0x24')](function(){return _0xd60eb4;});}else{return _0xd60eb4;}})[_0x24a9('0x4f')](function(_0x3e0570){logger[_0x24a9('0x28')](_0x24a9('0x50'),_0x3e0570);throw _0x3e0570;});}return _0xd60eb4;})[_0x24a9('0x24')](respondWithResult(_0x4932df,0xc9))[_0x24a9('0x4f')](handleError(_0x4932df,null));};exports[_0x24a9('0x23')]=function(_0x4c2381,_0x596fce){if(_0x4c2381[_0x24a9('0x49')]['id']){delete _0x4c2381[_0x24a9('0x49')]['id'];}return db['SquareOdbc'][_0x24a9('0x4d')]({'where':{'id':_0x4c2381[_0x24a9('0x46')]['id']}})[_0x24a9('0x24')](handleEntityNotFound(_0x596fce,null))['then'](saveUpdates(_0x4c2381[_0x24a9('0x49')],null))[_0x24a9('0x24')](respondWithResult(_0x596fce,null))[_0x24a9('0x4f')](handleError(_0x596fce,null));};exports['destroy']=function(_0x5735ad,_0x3cce59){return db[_0x24a9('0x41')][_0x24a9('0x4d')]({'where':{'id':_0x5735ad[_0x24a9('0x46')]['id']}})['then'](handleEntityNotFound(_0x3cce59,null))['then'](removeEntity(_0x3cce59,null))[_0x24a9('0x4f')](handleError(_0x3cce59,null));};exports[_0x24a9('0x51')]=function(_0xb9019f,_0x5bdb20,_0x3c4217){var _0x41c1f1;return db[_0x24a9('0x41')]['find']({'where':{'id':_0xb9019f[_0x24a9('0x46')]['id']},'attributes':['id',_0x24a9('0x52')]})[_0x24a9('0x24')](handleEntityNotFound(_0x5bdb20,null))[_0x24a9('0x24')](function(_0xf72fa9){if(_0xf72fa9){var _0x1f9249=require(_0x24a9('0x53'))();_0x1f9249[_0x24a9('0x54')](_0xf72fa9[_0x24a9('0x52')]);_0x1f9249[_0x24a9('0x55')]();return _0xf72fa9;}})[_0x24a9('0x24')](respondWithResult(_0x5bdb20,null))[_0x24a9('0x4f')](handleError(_0x5bdb20,null));};
\ No newline at end of file
+var _0xd022=['dsn','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','limit','count','offset','Content-Range','json','apply','save','update','then','destroy','get','UserProfileResource','end','error','stack','name','send','index','map','SquareOdbc','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','ODBC','UserProfileSection','userProfileId','autoAssociation','test','odbc','openSync'];(function(_0x33eb5c,_0x4a7d98){var _0x253328=function(_0x3b23a0){while(--_0x3b23a0){_0x33eb5c['push'](_0x33eb5c['shift']());}};_0x253328(++_0x4a7d98);}(_0xd022,0x166));var _0x2d02=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0xd022[_0x24061a];return _0x82054e;};'use strict';var emlformat=require(_0x2d02('0x0'));var rimraf=require(_0x2d02('0x1'));var zipdir=require(_0x2d02('0x2'));var jsonpatch=require(_0x2d02('0x3'));var rp=require(_0x2d02('0x4'));var moment=require(_0x2d02('0x5'));var BPromise=require(_0x2d02('0x6'));var Mustache=require(_0x2d02('0x7'));var util=require(_0x2d02('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x2d02('0x9'));var ejs=require(_0x2d02('0xa'));var fs=require('fs');var fs_extra=require(_0x2d02('0xb'));var _=require(_0x2d02('0xc'));var squel=require(_0x2d02('0xd'));var crypto=require(_0x2d02('0xe'));var jsforce=require(_0x2d02('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x2d02('0x9'));var querystring=require(_0x2d02('0x10'));var Papa=require(_0x2d02('0x11'));var Redis=require(_0x2d02('0x12'));var authService=require(_0x2d02('0x13'));var qs=require(_0x2d02('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x2d02('0x15'))(_0x2d02('0x16'));var utils=require('../../config/utils');var config=require(_0x2d02('0x17'));var licenseUtil=require(_0x2d02('0x18'));var db=require(_0x2d02('0x19'))['db'];function respondWithStatusCode(_0x48359c,_0x49b367){_0x49b367=_0x49b367||0xcc;return function(_0x5e1ec0){if(_0x5e1ec0){return _0x48359c[_0x2d02('0x1a')](_0x49b367);}return _0x48359c[_0x2d02('0x1b')](_0x49b367)['end']();};}function respondWithResult(_0x14445f,_0x3057ec){_0x3057ec=_0x3057ec||0xc8;return function(_0x48059b){if(_0x48059b){return _0x14445f[_0x2d02('0x1b')](_0x3057ec)['json'](_0x48059b);}};}function respondWithFilteredResult(_0x96a5cc,_0x4265bc){return function(_0x4a4302){if(_0x4a4302){var _0x307647=typeof _0x4265bc['offset']==='undefined'&&typeof _0x4265bc[_0x2d02('0x1c')]==='undefined';var _0x4f6af0=_0x4a4302[_0x2d02('0x1d')];var _0x1ae88b=_0x307647?0x0:_0x4265bc[_0x2d02('0x1e')];var _0x13e240=_0x307647?_0x4a4302[_0x2d02('0x1d')]:_0x4265bc[_0x2d02('0x1e')]+_0x4265bc['limit'];var _0x2a3552;if(_0x13e240>=_0x4f6af0){_0x13e240=_0x4f6af0;_0x2a3552=0xc8;}else{_0x2a3552=0xce;}_0x96a5cc[_0x2d02('0x1b')](_0x2a3552);return _0x96a5cc['set'](_0x2d02('0x1f'),_0x1ae88b+'-'+_0x13e240+'/'+_0x4f6af0)[_0x2d02('0x20')](_0x4a4302);}return null;};}function patchUpdates(_0x1a8a1f){return function(_0x29c7a7){try{jsonpatch[_0x2d02('0x21')](_0x29c7a7,_0x1a8a1f,!![]);}catch(_0x14d516){return BPromise['reject'](_0x14d516);}return _0x29c7a7[_0x2d02('0x22')]();};}function saveUpdates(_0x5ace0c,_0x4508e8){return function(_0x168e7c){if(_0x168e7c){return _0x168e7c[_0x2d02('0x23')](_0x5ace0c)[_0x2d02('0x24')](function(_0x4f32a1){return _0x4f32a1;});}return null;};}function removeEntity(_0x506fe6,_0x512c43){return function(_0x2055fa){if(_0x2055fa){return _0x2055fa[_0x2d02('0x25')]()[_0x2d02('0x24')](function(){var _0x58ffb9=_0x2055fa[_0x2d02('0x26')]({'plain':!![]});var _0x5ef4d6='ODBC';return db[_0x2d02('0x27')]['destroy']({'where':{'type':_0x5ef4d6,'resourceId':_0x58ffb9['id']}})[_0x2d02('0x24')](function(){return _0x2055fa;});})[_0x2d02('0x24')](function(){_0x506fe6[_0x2d02('0x1b')](0xcc)[_0x2d02('0x28')]();});}};}function handleEntityNotFound(_0x3b23af,_0x356e9c){return function(_0x165380){if(!_0x165380){_0x3b23af['sendStatus'](0x194);}return _0x165380;};}function handleError(_0x422b29,_0x450305){_0x450305=_0x450305||0x1f4;return function(_0x5092a9){logger[_0x2d02('0x29')](_0x5092a9[_0x2d02('0x2a')]);if(_0x5092a9[_0x2d02('0x2b')]){delete _0x5092a9['name'];}_0x422b29[_0x2d02('0x1b')](_0x450305)[_0x2d02('0x2c')](_0x5092a9);};}exports[_0x2d02('0x2d')]=function(_0x21b553,_0x297b88){var _0x53e068={},_0x4fca91={},_0x465b4e={'count':0x0,'rows':[]};var _0x1892bf=_[_0x2d02('0x2e')](db[_0x2d02('0x2f')][_0x2d02('0x30')],function(_0x504e2b){return{'name':_0x504e2b[_0x2d02('0x31')],'type':_0x504e2b[_0x2d02('0x32')][_0x2d02('0x33')]};});_0x4fca91[_0x2d02('0x34')]=_[_0x2d02('0x2e')](_0x1892bf,_0x2d02('0x2b'));_0x4fca91[_0x2d02('0x35')]=_[_0x2d02('0x36')](_0x21b553[_0x2d02('0x35')]);_0x4fca91['filters']=_[_0x2d02('0x37')](_0x4fca91[_0x2d02('0x34')],_0x4fca91[_0x2d02('0x35')]);_0x53e068[_0x2d02('0x38')]=_[_0x2d02('0x37')](_0x4fca91[_0x2d02('0x34')],qs[_0x2d02('0x39')](_0x21b553['query'][_0x2d02('0x39')]));_0x53e068[_0x2d02('0x38')]=_0x53e068[_0x2d02('0x38')][_0x2d02('0x3a')]?_0x53e068[_0x2d02('0x38')]:_0x4fca91['model'];if(!_0x21b553[_0x2d02('0x35')][_0x2d02('0x3b')](_0x2d02('0x3c'))){_0x53e068[_0x2d02('0x1c')]=qs['limit'](_0x21b553[_0x2d02('0x35')][_0x2d02('0x1c')]);_0x53e068[_0x2d02('0x1e')]=qs[_0x2d02('0x1e')](_0x21b553[_0x2d02('0x35')][_0x2d02('0x1e')]);}_0x53e068[_0x2d02('0x3d')]=qs[_0x2d02('0x3e')](_0x21b553[_0x2d02('0x35')][_0x2d02('0x3e')]);_0x53e068[_0x2d02('0x3f')]=qs[_0x2d02('0x40')](_['pick'](_0x21b553[_0x2d02('0x35')],_0x4fca91[_0x2d02('0x40')]),_0x1892bf);if(_0x21b553[_0x2d02('0x35')]['filter']){_0x53e068[_0x2d02('0x3f')]=_['merge'](_0x53e068[_0x2d02('0x3f')],{'$or':_[_0x2d02('0x2e')](_0x1892bf,function(_0x995916){if(_0x995916[_0x2d02('0x32')]!==_0x2d02('0x41')){var _0x278210={};_0x278210[_0x995916['name']]={'$like':'%'+_0x21b553['query'][_0x2d02('0x42')]+'%'};return _0x278210;}})});}_0x53e068=_[_0x2d02('0x43')]({},_0x53e068,_0x21b553[_0x2d02('0x44')]);var _0x2ca0a0={'where':_0x53e068['where']};return db[_0x2d02('0x2f')][_0x2d02('0x1d')](_0x2ca0a0)[_0x2d02('0x24')](function(_0x4c67da){_0x465b4e['count']=_0x4c67da;if(_0x21b553['query'][_0x2d02('0x45')]){_0x53e068[_0x2d02('0x46')]=[{'all':!![]}];}return db[_0x2d02('0x2f')][_0x2d02('0x47')](_0x53e068);})[_0x2d02('0x24')](function(_0x3f8133){_0x465b4e[_0x2d02('0x48')]=_0x3f8133;return _0x465b4e;})['then'](respondWithFilteredResult(_0x297b88,_0x53e068))[_0x2d02('0x49')](handleError(_0x297b88,null));};exports[_0x2d02('0x4a')]=function(_0x476867,_0x42bf51){var _0x3f484a={'raw':!![],'where':{'id':_0x476867[_0x2d02('0x4b')]['id']}},_0x307ed4={};_0x307ed4[_0x2d02('0x34')]=_[_0x2d02('0x36')](db[_0x2d02('0x2f')][_0x2d02('0x30')]);_0x307ed4[_0x2d02('0x35')]=_[_0x2d02('0x36')](_0x476867['query']);_0x307ed4[_0x2d02('0x40')]=_['intersection'](_0x307ed4[_0x2d02('0x34')],_0x307ed4[_0x2d02('0x35')]);_0x3f484a[_0x2d02('0x38')]=_[_0x2d02('0x37')](_0x307ed4[_0x2d02('0x34')],qs[_0x2d02('0x39')](_0x476867['query'][_0x2d02('0x39')]));_0x3f484a[_0x2d02('0x38')]=_0x3f484a[_0x2d02('0x38')][_0x2d02('0x3a')]?_0x3f484a[_0x2d02('0x38')]:_0x307ed4[_0x2d02('0x34')];if(_0x476867[_0x2d02('0x35')][_0x2d02('0x45')]){_0x3f484a[_0x2d02('0x46')]=[{'all':!![]}];}_0x3f484a=_[_0x2d02('0x43')]({},_0x3f484a,_0x476867[_0x2d02('0x44')]);return db[_0x2d02('0x2f')][_0x2d02('0x4c')](_0x3f484a)[_0x2d02('0x24')](handleEntityNotFound(_0x42bf51,null))['then'](respondWithResult(_0x42bf51,null))[_0x2d02('0x49')](handleError(_0x42bf51,null));};exports['create']=function(_0x297a39,_0x32cb7c){return db[_0x2d02('0x2f')][_0x2d02('0x4d')](_0x297a39[_0x2d02('0x4e')],{})[_0x2d02('0x24')](function(_0x18f8bb){var _0x4dac4e=_0x297a39['user'][_0x2d02('0x26')]({'plain':!![]});if(!_0x4dac4e)throw new Error(_0x2d02('0x4f'));if(_0x4dac4e['role']==='user'){var _0x3e70a0=_0x18f8bb[_0x2d02('0x26')]({'plain':!![]});var _0x465ad3=_0x2d02('0x50');return db[_0x2d02('0x51')][_0x2d02('0x4c')]({'where':{'name':_0x465ad3,'userProfileId':_0x4dac4e[_0x2d02('0x52')]},'raw':!![]})[_0x2d02('0x24')](function(_0x4dd94f){if(_0x4dd94f&&_0x4dd94f[_0x2d02('0x53')]===0x0){return db['UserProfileResource'][_0x2d02('0x4d')]({'name':_0x3e70a0[_0x2d02('0x2b')],'resourceId':_0x3e70a0['id'],'type':_0x4dd94f['name'],'sectionId':_0x4dd94f['id']},{})['then'](function(){return _0x18f8bb;});}else{return _0x18f8bb;}})['catch'](function(_0x523375){logger[_0x2d02('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x523375);throw _0x523375;});}return _0x18f8bb;})[_0x2d02('0x24')](respondWithResult(_0x32cb7c,0xc9))[_0x2d02('0x49')](handleError(_0x32cb7c,null));};exports[_0x2d02('0x23')]=function(_0x56ff5b,_0x34a925){if(_0x56ff5b[_0x2d02('0x4e')]['id']){delete _0x56ff5b[_0x2d02('0x4e')]['id'];}return db[_0x2d02('0x2f')][_0x2d02('0x4c')]({'where':{'id':_0x56ff5b[_0x2d02('0x4b')]['id']}})[_0x2d02('0x24')](handleEntityNotFound(_0x34a925,null))[_0x2d02('0x24')](saveUpdates(_0x56ff5b[_0x2d02('0x4e')],null))['then'](respondWithResult(_0x34a925,null))[_0x2d02('0x49')](handleError(_0x34a925,null));};exports[_0x2d02('0x25')]=function(_0x52d314,_0x15f242){return db[_0x2d02('0x2f')]['find']({'where':{'id':_0x52d314[_0x2d02('0x4b')]['id']}})[_0x2d02('0x24')](handleEntityNotFound(_0x15f242,null))['then'](removeEntity(_0x15f242,null))[_0x2d02('0x49')](handleError(_0x15f242,null));};exports[_0x2d02('0x54')]=function(_0x921943,_0x593e5d,_0x4b83a0){var _0x51d87d;return db[_0x2d02('0x2f')]['find']({'where':{'id':_0x921943['params']['id']},'attributes':['id','dsn']})[_0x2d02('0x24')](handleEntityNotFound(_0x593e5d,null))[_0x2d02('0x24')](function(_0x43b2fa){if(_0x43b2fa){var _0x44c485=require(_0x2d02('0x55'))();_0x44c485[_0x2d02('0x56')](_0x43b2fa[_0x2d02('0x57')]);_0x44c485[_0x2d02('0x58')]();return _0x43b2fa;}})[_0x2d02('0x24')](respondWithResult(_0x593e5d,null))[_0x2d02('0x49')](handleError(_0x593e5d,null));};
\ No newline at end of file
index 959c82a..213e818 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2292=['SquareOdbc','square_odbc','lodash','util','../../config/logger','moment','bluebird','path','../../config/environment','./squareOdbc.attributes','exports','define'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x2292,0x1a6));var _0x2229=function(_0x4287cb,_0xe75c02){_0x4287cb=_0x4287cb-0x0;var _0x2b5fd3=_0x2292[_0x4287cb];return _0x2b5fd3;};'use strict';var _=require(_0x2229('0x0'));var util=require(_0x2229('0x1'));var logger=require(_0x2229('0x2'))('api');var moment=require(_0x2229('0x3'));var BPromise=require(_0x2229('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2229('0x5'));var rimraf=require('rimraf');var config=require(_0x2229('0x6'));var attributes=require(_0x2229('0x7'));module[_0x2229('0x8')]=function(_0x1ec998,_0x3e08c9){return _0x1ec998[_0x2229('0x9')](_0x2229('0xa'),attributes,{'tableName':_0x2229('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2296=['SquareOdbc','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareOdbc.attributes','define'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2296,0x7f));var _0x6229=function(_0x20057d,_0x5763a8){_0x20057d=_0x20057d-0x0;var _0x4feb5a=_0x2296[_0x20057d];return _0x4feb5a;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x6229('0x0'));var BPromise=require(_0x6229('0x1'));var rp=require(_0x6229('0x2'));var fs=require('fs');var path=require(_0x6229('0x3'));var rimraf=require(_0x6229('0x4'));var config=require(_0x6229('0x5'));var attributes=require(_0x6229('0x6'));module['exports']=function(_0x50a032,_0x489202){return _0x50a032[_0x6229('0x7')](_0x6229('0x8'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3ca9d7e..98c2d58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe912=['rpc','../../config/environment','jayson/promise','http','request','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','ShowSquareOdbc','options','where','attributes','include','map','model','lodash','randomstring','ioredis','../../config/utils'];(function(_0x5538d5,_0x190032){var _0x323b1a=function(_0x179caa){while(--_0x179caa){_0x5538d5['push'](_0x5538d5['shift']());}};_0x323b1a(++_0x190032);}(_0xe912,0xcc));var _0x2e91=function(_0x2535a8,_0x464d82){_0x2535a8=_0x2535a8-0x0;var _0xcc6f38=_0xe912[_0x2535a8];return _0xcc6f38;};'use strict';var _=require(_0x2e91('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2e91('0x1'));var fs=require('fs');var Redis=require(_0x2e91('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x2e91('0x3'));var logger=require('../../config/logger')(_0x2e91('0x4'));var config=require(_0x2e91('0x5'));var jayson=require(_0x2e91('0x6'));var client=jayson['client'][_0x2e91('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4aaf9e,_0x74be0b,_0xf63e1c){return new BPromise(function(_0x2eb58f,_0x1a8e59){return client[_0x2e91('0x8')](_0x4aaf9e,_0xf63e1c)['then'](function(_0x37c3d7){logger['info'](_0x2e91('0x9'),_0x74be0b,_0x2e91('0xa'));logger[_0x2e91('0xb')](_0x2e91('0xc'),_0x74be0b,_0x2e91('0xa'),JSON[_0x2e91('0xd')](_0x37c3d7));if(_0x37c3d7['error']){if(_0x37c3d7[_0x2e91('0xe')]['code']===0x1f4){logger[_0x2e91('0xe')](_0x2e91('0x9'),_0x74be0b,_0x37c3d7[_0x2e91('0xe')][_0x2e91('0xf')]);return _0x1a8e59(_0x37c3d7['error']['message']);}logger[_0x2e91('0xe')](_0x2e91('0x9'),_0x74be0b,_0x37c3d7['error'][_0x2e91('0xf')]);return _0x2eb58f(_0x37c3d7[_0x2e91('0xe')][_0x2e91('0xf')]);}else{logger[_0x2e91('0x10')](_0x2e91('0x9'),_0x74be0b,_0x2e91('0xa'));_0x2eb58f(_0x37c3d7[_0x2e91('0x11')][_0x2e91('0xf')]);}})[_0x2e91('0x12')](function(_0x4f4836){logger[_0x2e91('0xe')](_0x2e91('0x9'),_0x74be0b,_0x4f4836);_0x1a8e59(_0x4f4836);});});}exports[_0x2e91('0x13')]=function(_0x329c14){var _0x44fe07=this;return new Promise(function(_0x101c00,_0x18bd9d){return db['SquareOdbc']['find']({'raw':_0x329c14[_0x2e91('0x14')]?_0x329c14[_0x2e91('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x329c14['options']?_0x329c14[_0x2e91('0x14')][_0x2e91('0x15')]||null:null,'attributes':_0x329c14[_0x2e91('0x14')]?_0x329c14[_0x2e91('0x14')][_0x2e91('0x16')]||null:null,'include':_0x329c14[_0x2e91('0x14')]?_0x329c14[_0x2e91('0x14')][_0x2e91('0x17')]?_['map'](_0x329c14['options']['include'],function(_0x1a4b28){return{'model':db[_0x1a4b28['model']],'as':_0x1a4b28['as'],'attributes':_0x1a4b28[_0x2e91('0x16')],'include':_0x1a4b28[_0x2e91('0x17')]?_[_0x2e91('0x18')](_0x1a4b28['include'],function(_0x3a0448){return{'model':db[_0x3a0448[_0x2e91('0x19')]],'as':_0x3a0448['as'],'attributes':_0x3a0448[_0x2e91('0x16')],'include':_0x3a0448['include']?_['map'](_0x3a0448[_0x2e91('0x17')],function(_0x20a8bf){return{'model':db[_0x20a8bf['model']],'as':_0x20a8bf['as'],'attributes':_0x20a8bf[_0x2e91('0x16')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x39af0b){logger['info']('ShowSquareOdbc',_0x329c14);logger[_0x2e91('0xb')]('ShowSquareOdbc',_0x329c14,JSON[_0x2e91('0xd')](_0x39af0b));_0x101c00(_0x39af0b);})[_0x2e91('0x12')](function(_0x47d00f){logger[_0x2e91('0xe')]('ShowSquareOdbc',_0x47d00f[_0x2e91('0xf')],_0x329c14);_0x18bd9d(_0x44fe07['error'](0x1f4,_0x47d00f[_0x2e91('0xf')]));});});};
\ No newline at end of file
+var _0x9eb6=['request','info','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','SquareOdbc,\x20%s,\x20%s','message','result','catch','SquareOdbc','find','options','raw','where','attributes','include','model','map','then','ShowSquareOdbc','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x53ab4f,_0x429c14){var _0x4e9ba2=function(_0x70884b){while(--_0x70884b){_0x53ab4f['push'](_0x53ab4f['shift']());}};_0x4e9ba2(++_0x429c14);}(_0x9eb6,0x126));var _0x69eb=function(_0xa8883,_0x1f107f){_0xa8883=_0xa8883-0x0;var _0x479426=_0x9eb6[_0xa8883];return _0x479426;};'use strict';var _=require(_0x69eb('0x0'));var util=require(_0x69eb('0x1'));var moment=require(_0x69eb('0x2'));var BPromise=require(_0x69eb('0x3'));var rs=require(_0x69eb('0x4'));var fs=require('fs');var Redis=require(_0x69eb('0x5'));var db=require(_0x69eb('0x6'))['db'];var utils=require(_0x69eb('0x7'));var logger=require(_0x69eb('0x8'))(_0x69eb('0x9'));var config=require(_0x69eb('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x69eb('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x35cec9,_0x5e910f,_0x14629f){return new BPromise(function(_0x482836,_0x4eb05d){return client[_0x69eb('0xc')](_0x35cec9,_0x14629f)['then'](function(_0x3215f2){logger[_0x69eb('0xd')]('SquareOdbc,\x20%s,\x20%s',_0x5e910f,_0x69eb('0xe'));logger[_0x69eb('0xf')](_0x69eb('0x10'),_0x5e910f,'request\x20sent',JSON[_0x69eb('0x11')](_0x3215f2));if(_0x3215f2[_0x69eb('0x12')]){if(_0x3215f2['error']['code']===0x1f4){logger[_0x69eb('0x12')](_0x69eb('0x13'),_0x5e910f,_0x3215f2[_0x69eb('0x12')]['message']);return _0x4eb05d(_0x3215f2['error'][_0x69eb('0x14')]);}logger[_0x69eb('0x12')](_0x69eb('0x13'),_0x5e910f,_0x3215f2[_0x69eb('0x12')][_0x69eb('0x14')]);return _0x482836(_0x3215f2['error'][_0x69eb('0x14')]);}else{logger[_0x69eb('0xd')](_0x69eb('0x13'),_0x5e910f,_0x69eb('0xe'));_0x482836(_0x3215f2[_0x69eb('0x15')]['message']);}})[_0x69eb('0x16')](function(_0x471720){logger[_0x69eb('0x12')]('SquareOdbc,\x20%s,\x20%s',_0x5e910f,_0x471720);_0x4eb05d(_0x471720);});});}exports['ShowSquareOdbc']=function(_0x3ebba3){var _0x42cb45=this;return new Promise(function(_0x52cff3,_0x1618b8){return db[_0x69eb('0x17')][_0x69eb('0x18')]({'raw':_0x3ebba3[_0x69eb('0x19')]?_0x3ebba3[_0x69eb('0x19')][_0x69eb('0x1a')]===undefined?!![]:![]:!![],'where':_0x3ebba3[_0x69eb('0x19')]?_0x3ebba3[_0x69eb('0x19')][_0x69eb('0x1b')]||null:null,'attributes':_0x3ebba3[_0x69eb('0x19')]?_0x3ebba3[_0x69eb('0x19')][_0x69eb('0x1c')]||null:null,'include':_0x3ebba3[_0x69eb('0x19')]?_0x3ebba3[_0x69eb('0x19')][_0x69eb('0x1d')]?_['map'](_0x3ebba3[_0x69eb('0x19')]['include'],function(_0x20de85){return{'model':db[_0x20de85[_0x69eb('0x1e')]],'as':_0x20de85['as'],'attributes':_0x20de85[_0x69eb('0x1c')],'include':_0x20de85[_0x69eb('0x1d')]?_[_0x69eb('0x1f')](_0x20de85[_0x69eb('0x1d')],function(_0xb7133b){return{'model':db[_0xb7133b[_0x69eb('0x1e')]],'as':_0xb7133b['as'],'attributes':_0xb7133b['attributes'],'include':_0xb7133b['include']?_['map'](_0xb7133b[_0x69eb('0x1d')],function(_0x2ce6c1){return{'model':db[_0x2ce6c1['model']],'as':_0x2ce6c1['as'],'attributes':_0x2ce6c1['attributes']};}):[]};}):[]};}):[]:[]})[_0x69eb('0x20')](function(_0x14ca32){logger[_0x69eb('0xd')](_0x69eb('0x21'),_0x3ebba3);logger['debug'](_0x69eb('0x21'),_0x3ebba3,JSON[_0x69eb('0x11')](_0x14ca32));_0x52cff3(_0x14ca32);})[_0x69eb('0x16')](function(_0x4c384e){logger[_0x69eb('0x12')](_0x69eb('0x21'),_0x4c384e[_0x69eb('0x14')],_0x3ebba3);_0x1618b8(_0x42cb45[_0x69eb('0x12')](0x1f4,_0x4c384e[_0x69eb('0x14')]));});});};
\ No newline at end of file
index acf4e0e..fc8909b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1f8=['path','connect-timeout','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','getUsers','create','post','/:id/users','update','delete','destroy','removeUsers','exports','multer','util'];(function(_0x42f6b1,_0x560c04){var _0x39b69f=function(_0x38df3c){while(--_0x38df3c){_0x42f6b1['push'](_0x42f6b1['shift']());}};_0x39b69f(++_0x560c04);}(_0xd1f8,0x18e));var _0x8d1f=function(_0x1afabf,_0x56fdcc){_0x1afabf=_0x1afabf-0x0;var _0x497ff1=_0xd1f8[_0x1afabf];return _0x497ff1;};'use strict';var multer=require(_0x8d1f('0x0'));var util=require(_0x8d1f('0x1'));var path=require(_0x8d1f('0x2'));var timeout=require(_0x8d1f('0x3'));var express=require('express');var router=express[_0x8d1f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8d1f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8d1f('0x6'));var controller=require('./squareProject.controller');router[_0x8d1f('0x7')]('/',auth[_0x8d1f('0x8')](),controller['index']);router[_0x8d1f('0x7')](_0x8d1f('0x9'),auth[_0x8d1f('0x8')](),controller[_0x8d1f('0xa')]);router[_0x8d1f('0x7')]('/:id/users',auth[_0x8d1f('0x8')](),controller[_0x8d1f('0xb')]);router['post']('/',auth[_0x8d1f('0x8')](),controller[_0x8d1f('0xc')]);router[_0x8d1f('0xd')](_0x8d1f('0xe'),auth[_0x8d1f('0x8')](),controller['addUsers']);router['put'](_0x8d1f('0x9'),auth['isAuthenticated'](),controller[_0x8d1f('0xf')]);router[_0x8d1f('0x10')]('/:id',auth[_0x8d1f('0x8')](),controller[_0x8d1f('0x11')]);router[_0x8d1f('0x10')]('/:id/users',auth[_0x8d1f('0x8')](),controller[_0x8d1f('0x12')]);module[_0x8d1f('0x13')]=router;
\ No newline at end of file
+var _0x87d0=['multer','util','path','express','fs-extra','../../components/auth/service','get','isAuthenticated','index','getUsers','post','create','/:id/users','addUsers','put','update','/:id','destroy','delete','removeUsers','exports'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x87d0,0xbd));var _0x087d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x87d0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x087d('0x0'));var util=require(_0x087d('0x1'));var path=require(_0x087d('0x2'));var timeout=require('connect-timeout');var express=require(_0x087d('0x3'));var router=express['Router']();var fs_extra=require(_0x087d('0x4'));var auth=require(_0x087d('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./squareProject.controller');router[_0x087d('0x6')]('/',auth[_0x087d('0x7')](),controller[_0x087d('0x8')]);router[_0x087d('0x6')]('/:id',auth[_0x087d('0x7')](),controller['show']);router[_0x087d('0x6')]('/:id/users',auth[_0x087d('0x7')](),controller[_0x087d('0x9')]);router[_0x087d('0xa')]('/',auth[_0x087d('0x7')](),controller[_0x087d('0xb')]);router[_0x087d('0xa')](_0x087d('0xc'),auth[_0x087d('0x7')](),controller[_0x087d('0xd')]);router[_0x087d('0xe')]('/:id',auth[_0x087d('0x7')](),controller[_0x087d('0xf')]);router['delete'](_0x087d('0x10'),auth['isAuthenticated'](),controller[_0x087d('0x11')]);router[_0x087d('0x12')](_0x087d('0xc'),auth[_0x087d('0x7')](),controller[_0x087d('0x13')]);module[_0x087d('0x14')]=router;
\ No newline at end of file
index 109cc9b..7c754c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc094=['long','production','DATE','sequelize','STRING','name','BLOB','getDataValue','preproduction','toString','utf8'];(function(_0x231a35,_0xcca231){var _0x3f8562=function(_0x59b628){while(--_0x59b628){_0x231a35['push'](_0x231a35['shift']());}};_0x3f8562(++_0xcca231);}(_0xc094,0x71));var _0x4c09=function(_0x3a7f88,_0x4c7f32){_0x3a7f88=_0x3a7f88-0x0;var _0x2742ae=_0xc094[_0x3a7f88];return _0x2742ae;};'use strict';var Sequelize=require(_0x4c09('0x0'));module['exports']={'name':{'type':Sequelize[_0x4c09('0x1')],'unique':_0x4c09('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x4c09('0x1')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x4c09('0x3')]('long'),'get':function(){if(this[_0x4c09('0x4')](_0x4c09('0x5'))){return this[_0x4c09('0x4')](_0x4c09('0x5'))[_0x4c09('0x6')](_0x4c09('0x7'));}}},'production':{'type':Sequelize[_0x4c09('0x3')](_0x4c09('0x8')),'get':function(){if(this['getDataValue'](_0x4c09('0x9'))){return this['getDataValue'](_0x4c09('0x9'))[_0x4c09('0x6')](_0x4c09('0x7'));}}},'savedAt':{'type':Sequelize[_0x4c09('0xa')]},'publishedAt':{'type':Sequelize[_0x4c09('0xa')]}};
\ No newline at end of file
+var _0x6c33=['STRING','name','BLOB','getDataValue','preproduction','toString','utf8','long','production','DATE','sequelize','exports'];(function(_0x5b69f6,_0x5dac2e){var _0x1d18dd=function(_0xd52ecb){while(--_0xd52ecb){_0x5b69f6['push'](_0x5b69f6['shift']());}};_0x1d18dd(++_0x5dac2e);}(_0x6c33,0x82));var _0x36c3=function(_0x37656f,_0x350ac6){_0x37656f=_0x37656f-0x0;var _0x5cd9d8=_0x6c33[_0x37656f];return _0x5cd9d8;};'use strict';var Sequelize=require(_0x36c3('0x0'));module[_0x36c3('0x1')]={'name':{'type':Sequelize[_0x36c3('0x2')],'unique':_0x36c3('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x36c3('0x2')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x36c3('0x4')]('long'),'get':function(){if(this[_0x36c3('0x5')](_0x36c3('0x6'))){return this[_0x36c3('0x5')](_0x36c3('0x6'))[_0x36c3('0x7')](_0x36c3('0x8'));}}},'production':{'type':Sequelize[_0x36c3('0x4')](_0x36c3('0x9')),'get':function(){if(this['getDataValue'](_0x36c3('0xa'))){return this[_0x36c3('0x5')](_0x36c3('0xa'))[_0x36c3('0x7')](_0x36c3('0x8'));}}},'savedAt':{'type':Sequelize[_0x36c3('0xb')]},'publishedAt':{'type':Sequelize[_0x36c3('0xb')]}};
\ No newline at end of file
index f6a6564..20256fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x626c=['VIRTUAL','options','include','findAll','catch','show','params','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','UserProfileResource','error','update','find','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','findOne','User','getUsers','nolimit','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','sox','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','../../config/license/util','../../mysqldb','redis','localhost','./squareProject.socket','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','then','destroy','get','stack','name','send','index','map','SquareProject','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','limit','order','sort','where','pick','filter','merge'];(function(_0xf43353,_0x236336){var _0x47db8f=function(_0x5493b3){while(--_0x5493b3){_0xf43353['push'](_0xf43353['shift']());}};_0x47db8f(++_0x236336);}(_0x626c,0x143));var _0xc626=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x626c[_0x4b055c];return _0x4b62bb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc626('0x0'));var zipdir=require(_0xc626('0x1'));var jsonpatch=require(_0xc626('0x2'));var rp=require(_0xc626('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc626('0x4'));var util=require(_0xc626('0x5'));var path=require('path');var sox=require(_0xc626('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc626('0x7'));var _=require(_0xc626('0x8'));var squel=require('squel');var crypto=require(_0xc626('0x9'));var jsforce=require(_0xc626('0xa'));var deskjs=require(_0xc626('0xb'));var toCsv=require('to-csv');var querystring=require(_0xc626('0xc'));var Papa=require(_0xc626('0xd'));var Redis=require(_0xc626('0xe'));var authService=require(_0xc626('0xf'));var qs=require(_0xc626('0x10'));var as=require(_0xc626('0x11'));var hardwareService=require(_0xc626('0x12'));var logger=require(_0xc626('0x13'))(_0xc626('0x14'));var utils=require(_0xc626('0x15'));var config=require(_0xc626('0x16'));var licenseUtil=require(_0xc626('0x17'));var db=require(_0xc626('0x18'))['db'];config[_0xc626('0x19')]=_['defaults'](config[_0xc626('0x19')],{'host':_0xc626('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc626('0x19')]));require(_0xc626('0x1b'))[_0xc626('0x1c')](socket);function respondWithStatusCode(_0x5d38cf,_0x4ae4a3){_0x4ae4a3=_0x4ae4a3||0xcc;return function(_0x520e11){if(_0x520e11){return _0x5d38cf[_0xc626('0x1d')](_0x4ae4a3);}return _0x5d38cf[_0xc626('0x1e')](_0x4ae4a3)[_0xc626('0x1f')]();};}function respondWithResult(_0xf6b1ed,_0x127a73){_0x127a73=_0x127a73||0xc8;return function(_0x4147a2){if(_0x4147a2){return _0xf6b1ed['status'](_0x127a73)[_0xc626('0x20')](_0x4147a2);}};}function respondWithFilteredResult(_0x5442e5,_0x3ae887){return function(_0x89eb05){if(_0x89eb05){var _0x2484d3=typeof _0x3ae887[_0xc626('0x21')]===_0xc626('0x22')&&typeof _0x3ae887['limit']===_0xc626('0x22');var _0x39ae9e=_0x89eb05[_0xc626('0x23')];var _0x4bc91d=_0x2484d3?0x0:_0x3ae887[_0xc626('0x21')];var _0x3cb469=_0x2484d3?_0x89eb05['count']:_0x3ae887[_0xc626('0x21')]+_0x3ae887['limit'];var _0x5bd691;if(_0x3cb469>=_0x39ae9e){_0x3cb469=_0x39ae9e;_0x5bd691=0xc8;}else{_0x5bd691=0xce;}_0x5442e5[_0xc626('0x1e')](_0x5bd691);return _0x5442e5[_0xc626('0x24')](_0xc626('0x25'),_0x4bc91d+'-'+_0x3cb469+'/'+_0x39ae9e)[_0xc626('0x20')](_0x89eb05);}return null;};}function patchUpdates(_0x5b8c39){return function(_0x263507){try{jsonpatch[_0xc626('0x26')](_0x263507,_0x5b8c39,!![]);}catch(_0xb4571f){return BPromise[_0xc626('0x27')](_0xb4571f);}return _0x263507['save']();};}function saveUpdates(_0x2205af,_0x45e024){return function(_0x526c4b){if(_0x526c4b){return _0x526c4b['update'](_0x2205af)[_0xc626('0x28')](function(_0x2217a0){return _0x2217a0;});}return null;};}function removeEntity(_0x1180f0,_0x4be55a){return function(_0x5cd378){if(_0x5cd378){return _0x5cd378[_0xc626('0x29')]()[_0xc626('0x28')](function(){var _0x55cb3b=_0x5cd378[_0xc626('0x2a')]({'plain':!![]});var _0x33a5c1='SquareProjects';return db['UserProfileResource'][_0xc626('0x29')]({'where':{'type':_0x33a5c1,'resourceId':_0x55cb3b['id']}})['then'](function(){return _0x5cd378;});})[_0xc626('0x28')](function(){_0x1180f0['status'](0xcc)[_0xc626('0x1f')]();});}};}function handleEntityNotFound(_0x238e91,_0x3c381e){return function(_0x4defee){if(!_0x4defee){_0x238e91[_0xc626('0x1d')](0x194);}return _0x4defee;};}function handleError(_0x225be3,_0x720ec1){_0x720ec1=_0x720ec1||0x1f4;return function(_0x53fc8d){logger['error'](_0x53fc8d[_0xc626('0x2b')]);if(_0x53fc8d[_0xc626('0x2c')]){delete _0x53fc8d['name'];}_0x225be3[_0xc626('0x1e')](_0x720ec1)[_0xc626('0x2d')](_0x53fc8d);};}exports[_0xc626('0x2e')]=function(_0x3d24f3,_0x36da41){var _0x52d7c5={},_0x183409={},_0x23eafd={'count':0x0,'rows':[]};var _0x51b574=_[_0xc626('0x2f')](db[_0xc626('0x30')][_0xc626('0x31')],function(_0x1e89b2){return{'name':_0x1e89b2[_0xc626('0x32')],'type':_0x1e89b2[_0xc626('0x33')][_0xc626('0x34')]};});_0x183409['model']=_[_0xc626('0x2f')](_0x51b574,_0xc626('0x2c'));_0x183409[_0xc626('0x35')]=_[_0xc626('0x36')](_0x3d24f3[_0xc626('0x35')]);_0x183409[_0xc626('0x37')]=_[_0xc626('0x38')](_0x183409[_0xc626('0x39')],_0x183409[_0xc626('0x35')]);_0x52d7c5[_0xc626('0x3a')]=_[_0xc626('0x38')](_0x183409[_0xc626('0x39')],qs[_0xc626('0x3b')](_0x3d24f3[_0xc626('0x35')][_0xc626('0x3b')]));_0x52d7c5[_0xc626('0x3a')]=_0x52d7c5['attributes'][_0xc626('0x3c')]?_0x52d7c5[_0xc626('0x3a')]:_0x183409[_0xc626('0x39')];if(!_0x3d24f3[_0xc626('0x35')][_0xc626('0x3d')]('nolimit')){_0x52d7c5[_0xc626('0x3e')]=qs['limit'](_0x3d24f3[_0xc626('0x35')][_0xc626('0x3e')]);_0x52d7c5['offset']=qs[_0xc626('0x21')](_0x3d24f3[_0xc626('0x35')][_0xc626('0x21')]);}_0x52d7c5[_0xc626('0x3f')]=qs[_0xc626('0x40')](_0x3d24f3[_0xc626('0x35')][_0xc626('0x40')]);_0x52d7c5[_0xc626('0x41')]=qs[_0xc626('0x37')](_[_0xc626('0x42')](_0x3d24f3[_0xc626('0x35')],_0x183409[_0xc626('0x37')]),_0x51b574);if(_0x3d24f3[_0xc626('0x35')][_0xc626('0x43')]){_0x52d7c5[_0xc626('0x41')]=_[_0xc626('0x44')](_0x52d7c5[_0xc626('0x41')],{'$or':_[_0xc626('0x2f')](_0x51b574,function(_0x52e025){if(_0x52e025['type']!==_0xc626('0x45')){var _0x774637={};_0x774637[_0x52e025[_0xc626('0x2c')]]={'$like':'%'+_0x3d24f3[_0xc626('0x35')]['filter']+'%'};return _0x774637;}})});}_0x52d7c5=_[_0xc626('0x44')]({},_0x52d7c5,_0x3d24f3[_0xc626('0x46')]);var _0x2ba8fd={'where':_0x52d7c5[_0xc626('0x41')]};return db[_0xc626('0x30')]['count'](_0x2ba8fd)[_0xc626('0x28')](function(_0x5b71fd){_0x23eafd[_0xc626('0x23')]=_0x5b71fd;if(_0x3d24f3[_0xc626('0x35')]['includeAll']){_0x52d7c5[_0xc626('0x47')]=[{'all':!![]}];}return db[_0xc626('0x30')][_0xc626('0x48')](_0x52d7c5);})[_0xc626('0x28')](function(_0x21fa17){_0x23eafd['rows']=_0x21fa17;return _0x23eafd;})[_0xc626('0x28')](respondWithFilteredResult(_0x36da41,_0x52d7c5))[_0xc626('0x49')](handleError(_0x36da41,null));};exports[_0xc626('0x4a')]=function(_0x3b84ce,_0x24b4d8){var _0x216512={'raw':![],'where':{'id':_0x3b84ce[_0xc626('0x4b')]['id']}},_0x262d39={};_0x262d39[_0xc626('0x39')]=_['keys'](db[_0xc626('0x30')][_0xc626('0x31')]);_0x262d39[_0xc626('0x35')]=_['keys'](_0x3b84ce[_0xc626('0x35')]);_0x262d39[_0xc626('0x37')]=_[_0xc626('0x38')](_0x262d39[_0xc626('0x39')],_0x262d39['query']);_0x216512[_0xc626('0x3a')]=_[_0xc626('0x38')](_0x262d39['model'],qs['fields'](_0x3b84ce[_0xc626('0x35')]['fields']));_0x216512[_0xc626('0x3a')]=_0x216512[_0xc626('0x3a')]['length']?_0x216512['attributes']:_0x262d39[_0xc626('0x39')];if(_0x3b84ce['query'][_0xc626('0x4c')]){_0x216512[_0xc626('0x47')]=[{'all':!![]}];}_0x216512=_[_0xc626('0x44')]({},_0x216512,_0x3b84ce['options']);return db[_0xc626('0x30')]['find'](_0x216512)[_0xc626('0x28')](handleEntityNotFound(_0x24b4d8,null))['then'](respondWithResult(_0x24b4d8,null))[_0xc626('0x49')](handleError(_0x24b4d8,null));};exports['create']=function(_0x22f29e,_0x52aaaf){return db[_0xc626('0x30')][_0xc626('0x4d')](_0x22f29e[_0xc626('0x4e')],{})[_0xc626('0x28')](function(_0x3f2695){var _0x2ec888=_0x22f29e[_0xc626('0x4f')][_0xc626('0x2a')]({'plain':!![]});if(!_0x2ec888)throw new Error(_0xc626('0x50'));if(_0x2ec888[_0xc626('0x51')]===_0xc626('0x4f')){var _0x4d86bc=_0x3f2695[_0xc626('0x2a')]({'plain':!![]});var _0x444d02='SquareProjects';return db['UserProfileSection']['find']({'where':{'name':_0x444d02,'userProfileId':_0x2ec888[_0xc626('0x52')]},'raw':!![]})[_0xc626('0x28')](function(_0x1c6239){if(_0x1c6239&&_0x1c6239['autoAssociation']===0x0){return db[_0xc626('0x53')]['create']({'name':_0x4d86bc[_0xc626('0x2c')],'resourceId':_0x4d86bc['id'],'type':_0x1c6239[_0xc626('0x2c')],'sectionId':_0x1c6239['id']},{})[_0xc626('0x28')](function(){return _0x3f2695;});}else{return _0x3f2695;}})[_0xc626('0x49')](function(_0x32a2a4){logger[_0xc626('0x54')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x32a2a4);throw _0x32a2a4;});}return _0x3f2695;})[_0xc626('0x28')](respondWithResult(_0x52aaaf,0xc9))[_0xc626('0x49')](handleError(_0x52aaaf,null));};exports[_0xc626('0x55')]=function(_0x12004e,_0x5620af){if(_0x12004e[_0xc626('0x4e')]['id']){delete _0x12004e[_0xc626('0x4e')]['id'];}return db['SquareProject'][_0xc626('0x56')]({'where':{'id':_0x12004e[_0xc626('0x4b')]['id']}})[_0xc626('0x28')](handleEntityNotFound(_0x5620af,null))[_0xc626('0x28')](saveUpdates(_0x12004e[_0xc626('0x4e')],null))[_0xc626('0x28')](respondWithResult(_0x5620af,null))['catch'](handleError(_0x5620af,null));};exports['destroy']=function(_0x5db112,_0x211754){return db[_0xc626('0x30')][_0xc626('0x56')]({'where':{'id':_0x5db112[_0xc626('0x4b')]['id']}})[_0xc626('0x28')](handleEntityNotFound(_0x211754,null))[_0xc626('0x28')](removeEntity(_0x211754,null))['catch'](handleError(_0x211754,null));};exports[_0xc626('0x57')]=function(_0x5a5efb,_0x56abb4,_0x162e59){return db[_0xc626('0x30')][_0xc626('0x56')]({'where':{'id':_0x5a5efb[_0xc626('0x4b')]['id']}})[_0xc626('0x28')](handleEntityNotFound(_0x56abb4,null))[_0xc626('0x28')](function(_0x46ee55){if(_0x46ee55){return _0x46ee55[_0xc626('0x57')](_0x5a5efb['body'][_0xc626('0x58')],_[_0xc626('0x59')](_0x5a5efb[_0xc626('0x4e')],[_0xc626('0x58'),'id'])||{});}})['then'](respondWithResult(_0x56abb4,null))[_0xc626('0x49')](handleError(_0x56abb4,null));};exports[_0xc626('0x5a')]=function(_0xf74bad,_0x102b46,_0x3e27ce){return db['SquareProject'][_0xc626('0x56')]({'where':{'id':_0xf74bad[_0xc626('0x4b')]['id']}})[_0xc626('0x28')](handleEntityNotFound(_0x102b46,null))['then'](function(_0x4fd0a0){if(_0x4fd0a0){return _0x4fd0a0[_0xc626('0x5a')](_0xf74bad[_0xc626('0x35')][_0xc626('0x58')])['then'](function(){if(_[_0xc626('0x5b')](_0xf74bad['query']['ids'])){for(var _0x961985=0x0;_0x961985<_0xf74bad[_0xc626('0x35')][_0xc626('0x58')][_0xc626('0x3c')];_0x961985+=0x1){socket[_0xc626('0x5c')]('userSquareProject:remove',{'UserId':Number(_0xf74bad[_0xc626('0x35')]['ids'][_0x961985]),'SquareProjectId':Number(_0xf74bad['params']['id'])});}}else{socket[_0xc626('0x5c')](_0xc626('0x5d'),{'UserId':Number(_0xf74bad[_0xc626('0x35')][_0xc626('0x58')]),'SquareProjectId':Number(_0xf74bad['params']['id'])});}});}})[_0xc626('0x28')](respondWithStatusCode(_0x102b46,null))['catch'](handleError(_0x102b46,null));};exports['getUsers']=function(_0x3d014a,_0x34dc06,_0x56af76){var _0x1729b6={};var _0x36b859={};var _0x56d4e7;var _0x136946;return db[_0xc626('0x30')][_0xc626('0x5e')]({'where':{'id':_0x3d014a[_0xc626('0x4b')]['id']}})[_0xc626('0x28')](handleEntityNotFound(_0x34dc06,null))['then'](function(_0x50592f){if(_0x50592f){_0x56d4e7=_0x50592f;_0x36b859[_0xc626('0x39')]=_[_0xc626('0x36')](db[_0xc626('0x5f')][_0xc626('0x31')]);_0x36b859[_0xc626('0x35')]=_[_0xc626('0x36')](_0x3d014a['query']);_0x36b859[_0xc626('0x37')]=_[_0xc626('0x38')](_0x36b859[_0xc626('0x39')],_0x36b859[_0xc626('0x35')]);_0x1729b6[_0xc626('0x3a')]=_['intersection'](_0x36b859[_0xc626('0x39')],qs[_0xc626('0x3b')](_0x3d014a[_0xc626('0x35')][_0xc626('0x3b')]));_0x1729b6[_0xc626('0x3a')]=_0x1729b6[_0xc626('0x3a')][_0xc626('0x3c')]?_0x1729b6[_0xc626('0x3a')]:_0x36b859['model'];_0x1729b6[_0xc626('0x3f')]=qs[_0xc626('0x40')](_0x3d014a[_0xc626('0x35')][_0xc626('0x40')]);_0x1729b6[_0xc626('0x41')]=qs[_0xc626('0x37')](_['pick'](_0x3d014a[_0xc626('0x35')],_0x36b859[_0xc626('0x37')]));if(_0x3d014a[_0xc626('0x35')][_0xc626('0x43')]){_0x1729b6[_0xc626('0x41')]=_['merge'](_0x1729b6[_0xc626('0x41')],{'$or':_[_0xc626('0x2f')](_0x1729b6[_0xc626('0x3a')],function(_0x14c285){var _0x515910={};_0x515910[_0x14c285]={'$like':'%'+_0x3d014a[_0xc626('0x35')][_0xc626('0x43')]+'%'};return _0x515910;})});}_0x1729b6=_[_0xc626('0x44')]({},_0x1729b6,_0x3d014a[_0xc626('0x46')]);return _0x56d4e7[_0xc626('0x60')](_0x1729b6);}})['then'](function(_0x3c7712){if(_0x3c7712){_0x136946=_0x3c7712[_0xc626('0x3c')];if(!_0x3d014a['query']['hasOwnProperty'](_0xc626('0x61'))){_0x1729b6[_0xc626('0x3e')]=qs[_0xc626('0x3e')](_0x3d014a[_0xc626('0x35')][_0xc626('0x3e')]);_0x1729b6[_0xc626('0x21')]=qs[_0xc626('0x21')](_0x3d014a[_0xc626('0x35')][_0xc626('0x21')]);}return _0x56d4e7[_0xc626('0x60')](_0x1729b6);}})[_0xc626('0x28')](function(_0x326e19){if(_0x326e19){return _0x326e19?{'count':_0x136946,'rows':_0x326e19}:null;}})[_0xc626('0x28')](respondWithResult(_0x34dc06,null))[_0xc626('0x49')](handleError(_0x34dc06,null));};
\ No newline at end of file
+var _0xc83f=['to-csv','ejs','fs-extra','lodash','squel','crypto','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','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','send','index','map','SquareProject','fieldName','type','key','name','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','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','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','findOne','User','getUsers','nolimit','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc83f,0xc9));var _0xfc83=function(_0x32d8f6,_0x153146){_0x32d8f6=_0x32d8f6-0x0;var _0x4d6740=_0xc83f[_0x32d8f6];return _0x4d6740;};'use strict';var emlformat=require(_0xfc83('0x0'));var rimraf=require(_0xfc83('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfc83('0x2'));var rp=require(_0xfc83('0x3'));var moment=require('moment');var BPromise=require(_0xfc83('0x4'));var Mustache=require(_0xfc83('0x5'));var util=require(_0xfc83('0x6'));var path=require(_0xfc83('0x7'));var sox=require(_0xfc83('0x8'));var csv=require(_0xfc83('0x9'));var ejs=require(_0xfc83('0xa'));var fs=require('fs');var fs_extra=require(_0xfc83('0xb'));var _=require(_0xfc83('0xc'));var squel=require(_0xfc83('0xd'));var crypto=require(_0xfc83('0xe'));var jsforce=require(_0xfc83('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xfc83('0x10'));var Papa=require(_0xfc83('0x11'));var Redis=require(_0xfc83('0x12'));var authService=require(_0xfc83('0x13'));var qs=require(_0xfc83('0x14'));var as=require(_0xfc83('0x15'));var hardwareService=require(_0xfc83('0x16'));var logger=require(_0xfc83('0x17'))('api');var utils=require(_0xfc83('0x18'));var config=require(_0xfc83('0x19'));var licenseUtil=require(_0xfc83('0x1a'));var db=require(_0xfc83('0x1b'))['db'];config[_0xfc83('0x1c')]=_[_0xfc83('0x1d')](config[_0xfc83('0x1c')],{'host':_0xfc83('0x1e'),'port':0x18eb});var socket=require(_0xfc83('0x1f'))(new Redis(config[_0xfc83('0x1c')]));require(_0xfc83('0x20'))[_0xfc83('0x21')](socket);function respondWithStatusCode(_0x696dd6,_0x35d49a){_0x35d49a=_0x35d49a||0xcc;return function(_0xfb1007){if(_0xfb1007){return _0x696dd6[_0xfc83('0x22')](_0x35d49a);}return _0x696dd6[_0xfc83('0x23')](_0x35d49a)[_0xfc83('0x24')]();};}function respondWithResult(_0x36ef88,_0x68c761){_0x68c761=_0x68c761||0xc8;return function(_0x4bfad9){if(_0x4bfad9){return _0x36ef88['status'](_0x68c761)[_0xfc83('0x25')](_0x4bfad9);}};}function respondWithFilteredResult(_0x42cbac,_0x1af051){return function(_0x28b274){if(_0x28b274){var _0xd11e1=typeof _0x1af051[_0xfc83('0x26')]===_0xfc83('0x27')&&typeof _0x1af051[_0xfc83('0x28')]===_0xfc83('0x27');var _0x4e672c=_0x28b274[_0xfc83('0x29')];var _0x55df68=_0xd11e1?0x0:_0x1af051['offset'];var _0x1c1452=_0xd11e1?_0x28b274[_0xfc83('0x29')]:_0x1af051['offset']+_0x1af051[_0xfc83('0x28')];var _0x20e907;if(_0x1c1452>=_0x4e672c){_0x1c1452=_0x4e672c;_0x20e907=0xc8;}else{_0x20e907=0xce;}_0x42cbac['status'](_0x20e907);return _0x42cbac[_0xfc83('0x2a')]('Content-Range',_0x55df68+'-'+_0x1c1452+'/'+_0x4e672c)[_0xfc83('0x25')](_0x28b274);}return null;};}function patchUpdates(_0x2d4119){return function(_0x2311bf){try{jsonpatch[_0xfc83('0x2b')](_0x2311bf,_0x2d4119,!![]);}catch(_0x5e313d){return BPromise[_0xfc83('0x2c')](_0x5e313d);}return _0x2311bf[_0xfc83('0x2d')]();};}function saveUpdates(_0x2d3bd8,_0x4b30ad){return function(_0x3a41c3){if(_0x3a41c3){return _0x3a41c3[_0xfc83('0x2e')](_0x2d3bd8)[_0xfc83('0x2f')](function(_0x3d630e){return _0x3d630e;});}return null;};}function removeEntity(_0x53028f,_0x2ec5ce){return function(_0x2fee97){if(_0x2fee97){return _0x2fee97[_0xfc83('0x30')]()[_0xfc83('0x2f')](function(){var _0x487ed9=_0x2fee97[_0xfc83('0x31')]({'plain':!![]});var _0x1c98b8='SquareProjects';return db[_0xfc83('0x32')][_0xfc83('0x30')]({'where':{'type':_0x1c98b8,'resourceId':_0x487ed9['id']}})[_0xfc83('0x2f')](function(){return _0x2fee97;});})['then'](function(){_0x53028f[_0xfc83('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x36b18e,_0x217104){return function(_0xeba8e){if(!_0xeba8e){_0x36b18e['sendStatus'](0x194);}return _0xeba8e;};}function handleError(_0x1f6773,_0x2c9e13){_0x2c9e13=_0x2c9e13||0x1f4;return function(_0x3acabf){logger[_0xfc83('0x33')](_0x3acabf[_0xfc83('0x34')]);if(_0x3acabf['name']){delete _0x3acabf['name'];}_0x1f6773[_0xfc83('0x23')](_0x2c9e13)[_0xfc83('0x35')](_0x3acabf);};}exports[_0xfc83('0x36')]=function(_0x4868a2,_0x43793c){var _0x3aa42e={},_0x47f4ed={},_0x588bbe={'count':0x0,'rows':[]};var _0x1ae38a=_[_0xfc83('0x37')](db[_0xfc83('0x38')]['rawAttributes'],function(_0x321c86){return{'name':_0x321c86[_0xfc83('0x39')],'type':_0x321c86[_0xfc83('0x3a')][_0xfc83('0x3b')]};});_0x47f4ed['model']=_['map'](_0x1ae38a,_0xfc83('0x3c'));_0x47f4ed[_0xfc83('0x3d')]=_[_0xfc83('0x3e')](_0x4868a2[_0xfc83('0x3d')]);_0x47f4ed[_0xfc83('0x3f')]=_[_0xfc83('0x40')](_0x47f4ed[_0xfc83('0x41')],_0x47f4ed[_0xfc83('0x3d')]);_0x3aa42e[_0xfc83('0x42')]=_[_0xfc83('0x40')](_0x47f4ed[_0xfc83('0x41')],qs[_0xfc83('0x43')](_0x4868a2[_0xfc83('0x3d')][_0xfc83('0x43')]));_0x3aa42e[_0xfc83('0x42')]=_0x3aa42e[_0xfc83('0x42')][_0xfc83('0x44')]?_0x3aa42e[_0xfc83('0x42')]:_0x47f4ed['model'];if(!_0x4868a2[_0xfc83('0x3d')][_0xfc83('0x45')]('nolimit')){_0x3aa42e['limit']=qs['limit'](_0x4868a2[_0xfc83('0x3d')][_0xfc83('0x28')]);_0x3aa42e[_0xfc83('0x26')]=qs[_0xfc83('0x26')](_0x4868a2['query'][_0xfc83('0x26')]);}_0x3aa42e[_0xfc83('0x46')]=qs[_0xfc83('0x47')](_0x4868a2[_0xfc83('0x3d')][_0xfc83('0x47')]);_0x3aa42e[_0xfc83('0x48')]=qs[_0xfc83('0x3f')](_[_0xfc83('0x49')](_0x4868a2[_0xfc83('0x3d')],_0x47f4ed['filters']),_0x1ae38a);if(_0x4868a2[_0xfc83('0x3d')][_0xfc83('0x4a')]){_0x3aa42e['where']=_[_0xfc83('0x4b')](_0x3aa42e[_0xfc83('0x48')],{'$or':_[_0xfc83('0x37')](_0x1ae38a,function(_0x4f4c13){if(_0x4f4c13[_0xfc83('0x3a')]!=='VIRTUAL'){var _0x4fbc67={};_0x4fbc67[_0x4f4c13[_0xfc83('0x3c')]]={'$like':'%'+_0x4868a2[_0xfc83('0x3d')][_0xfc83('0x4a')]+'%'};return _0x4fbc67;}})});}_0x3aa42e=_[_0xfc83('0x4b')]({},_0x3aa42e,_0x4868a2[_0xfc83('0x4c')]);var _0x495ab0={'where':_0x3aa42e['where']};return db['SquareProject'][_0xfc83('0x29')](_0x495ab0)[_0xfc83('0x2f')](function(_0x12f8f5){_0x588bbe[_0xfc83('0x29')]=_0x12f8f5;if(_0x4868a2['query'][_0xfc83('0x4d')]){_0x3aa42e[_0xfc83('0x4e')]=[{'all':!![]}];}return db['SquareProject'][_0xfc83('0x4f')](_0x3aa42e);})[_0xfc83('0x2f')](function(_0x42a465){_0x588bbe[_0xfc83('0x50')]=_0x42a465;return _0x588bbe;})[_0xfc83('0x2f')](respondWithFilteredResult(_0x43793c,_0x3aa42e))[_0xfc83('0x51')](handleError(_0x43793c,null));};exports[_0xfc83('0x52')]=function(_0x4389fe,_0x52b91b){var _0x2f5e56={'raw':![],'where':{'id':_0x4389fe[_0xfc83('0x53')]['id']}},_0x5b5c76={};_0x5b5c76['model']=_[_0xfc83('0x3e')](db[_0xfc83('0x38')][_0xfc83('0x54')]);_0x5b5c76['query']=_['keys'](_0x4389fe['query']);_0x5b5c76[_0xfc83('0x3f')]=_[_0xfc83('0x40')](_0x5b5c76['model'],_0x5b5c76['query']);_0x2f5e56[_0xfc83('0x42')]=_[_0xfc83('0x40')](_0x5b5c76[_0xfc83('0x41')],qs[_0xfc83('0x43')](_0x4389fe['query']['fields']));_0x2f5e56[_0xfc83('0x42')]=_0x2f5e56['attributes'][_0xfc83('0x44')]?_0x2f5e56[_0xfc83('0x42')]:_0x5b5c76['model'];if(_0x4389fe[_0xfc83('0x3d')][_0xfc83('0x4d')]){_0x2f5e56['include']=[{'all':!![]}];}_0x2f5e56=_[_0xfc83('0x4b')]({},_0x2f5e56,_0x4389fe['options']);return db['SquareProject'][_0xfc83('0x55')](_0x2f5e56)['then'](handleEntityNotFound(_0x52b91b,null))[_0xfc83('0x2f')](respondWithResult(_0x52b91b,null))[_0xfc83('0x51')](handleError(_0x52b91b,null));};exports[_0xfc83('0x56')]=function(_0x21acb3,_0x20b7a2){return db[_0xfc83('0x38')][_0xfc83('0x56')](_0x21acb3[_0xfc83('0x57')],{})[_0xfc83('0x2f')](function(_0x460801){var _0x70db4d=_0x21acb3[_0xfc83('0x58')]['get']({'plain':!![]});if(!_0x70db4d)throw new Error(_0xfc83('0x59'));if(_0x70db4d[_0xfc83('0x5a')]===_0xfc83('0x58')){var _0x3214e6=_0x460801['get']({'plain':!![]});var _0x38cf9e='SquareProjects';return db[_0xfc83('0x5b')][_0xfc83('0x55')]({'where':{'name':_0x38cf9e,'userProfileId':_0x70db4d[_0xfc83('0x5c')]},'raw':!![]})['then'](function(_0x19b2f0){if(_0x19b2f0&&_0x19b2f0['autoAssociation']===0x0){return db[_0xfc83('0x32')][_0xfc83('0x56')]({'name':_0x3214e6[_0xfc83('0x3c')],'resourceId':_0x3214e6['id'],'type':_0x19b2f0[_0xfc83('0x3c')],'sectionId':_0x19b2f0['id']},{})['then'](function(){return _0x460801;});}else{return _0x460801;}})['catch'](function(_0x539061){logger['error'](_0xfc83('0x5d'),_0x539061);throw _0x539061;});}return _0x460801;})['then'](respondWithResult(_0x20b7a2,0xc9))[_0xfc83('0x51')](handleError(_0x20b7a2,null));};exports[_0xfc83('0x2e')]=function(_0x5a8441,_0x17f715){if(_0x5a8441[_0xfc83('0x57')]['id']){delete _0x5a8441['body']['id'];}return db[_0xfc83('0x38')][_0xfc83('0x55')]({'where':{'id':_0x5a8441[_0xfc83('0x53')]['id']}})[_0xfc83('0x2f')](handleEntityNotFound(_0x17f715,null))[_0xfc83('0x2f')](saveUpdates(_0x5a8441[_0xfc83('0x57')],null))[_0xfc83('0x2f')](respondWithResult(_0x17f715,null))[_0xfc83('0x51')](handleError(_0x17f715,null));};exports['destroy']=function(_0x55a7ea,_0x34e9f4){return db['SquareProject']['find']({'where':{'id':_0x55a7ea[_0xfc83('0x53')]['id']}})[_0xfc83('0x2f')](handleEntityNotFound(_0x34e9f4,null))['then'](removeEntity(_0x34e9f4,null))['catch'](handleError(_0x34e9f4,null));};exports[_0xfc83('0x5e')]=function(_0x5d9c67,_0x26eb87,_0x1d05e6){return db[_0xfc83('0x38')][_0xfc83('0x55')]({'where':{'id':_0x5d9c67[_0xfc83('0x53')]['id']}})['then'](handleEntityNotFound(_0x26eb87,null))['then'](function(_0x1cb7c2){if(_0x1cb7c2){return _0x1cb7c2[_0xfc83('0x5e')](_0x5d9c67[_0xfc83('0x57')][_0xfc83('0x5f')],_[_0xfc83('0x60')](_0x5d9c67['body'],[_0xfc83('0x5f'),'id'])||{});}})[_0xfc83('0x2f')](respondWithResult(_0x26eb87,null))[_0xfc83('0x51')](handleError(_0x26eb87,null));};exports[_0xfc83('0x61')]=function(_0x1c6a67,_0x425614,_0x3329d4){return db['SquareProject']['find']({'where':{'id':_0x1c6a67[_0xfc83('0x53')]['id']}})[_0xfc83('0x2f')](handleEntityNotFound(_0x425614,null))['then'](function(_0x32ffaf){if(_0x32ffaf){return _0x32ffaf['removeUsers'](_0x1c6a67['query'][_0xfc83('0x5f')])[_0xfc83('0x2f')](function(){if(_[_0xfc83('0x62')](_0x1c6a67[_0xfc83('0x3d')][_0xfc83('0x5f')])){for(var _0x962675=0x0;_0x962675<_0x1c6a67[_0xfc83('0x3d')][_0xfc83('0x5f')][_0xfc83('0x44')];_0x962675+=0x1){socket[_0xfc83('0x63')](_0xfc83('0x64'),{'UserId':Number(_0x1c6a67[_0xfc83('0x3d')]['ids'][_0x962675]),'SquareProjectId':Number(_0x1c6a67['params']['id'])});}}else{socket[_0xfc83('0x63')]('userSquareProject:remove',{'UserId':Number(_0x1c6a67[_0xfc83('0x3d')][_0xfc83('0x5f')]),'SquareProjectId':Number(_0x1c6a67[_0xfc83('0x53')]['id'])});}});}})[_0xfc83('0x2f')](respondWithStatusCode(_0x425614,null))[_0xfc83('0x51')](handleError(_0x425614,null));};exports['getUsers']=function(_0x13d0e9,_0x5f76ac,_0xba7929){var _0x516df0={};var _0x27985b={};var _0x266b78;var _0x27fc71;return db[_0xfc83('0x38')][_0xfc83('0x65')]({'where':{'id':_0x13d0e9[_0xfc83('0x53')]['id']}})[_0xfc83('0x2f')](handleEntityNotFound(_0x5f76ac,null))[_0xfc83('0x2f')](function(_0x5ad332){if(_0x5ad332){_0x266b78=_0x5ad332;_0x27985b[_0xfc83('0x41')]=_[_0xfc83('0x3e')](db[_0xfc83('0x66')][_0xfc83('0x54')]);_0x27985b[_0xfc83('0x3d')]=_[_0xfc83('0x3e')](_0x13d0e9['query']);_0x27985b[_0xfc83('0x3f')]=_[_0xfc83('0x40')](_0x27985b[_0xfc83('0x41')],_0x27985b[_0xfc83('0x3d')]);_0x516df0[_0xfc83('0x42')]=_[_0xfc83('0x40')](_0x27985b[_0xfc83('0x41')],qs[_0xfc83('0x43')](_0x13d0e9[_0xfc83('0x3d')][_0xfc83('0x43')]));_0x516df0['attributes']=_0x516df0['attributes'][_0xfc83('0x44')]?_0x516df0[_0xfc83('0x42')]:_0x27985b['model'];_0x516df0[_0xfc83('0x46')]=qs[_0xfc83('0x47')](_0x13d0e9[_0xfc83('0x3d')][_0xfc83('0x47')]);_0x516df0[_0xfc83('0x48')]=qs['filters'](_['pick'](_0x13d0e9[_0xfc83('0x3d')],_0x27985b['filters']));if(_0x13d0e9['query']['filter']){_0x516df0[_0xfc83('0x48')]=_[_0xfc83('0x4b')](_0x516df0[_0xfc83('0x48')],{'$or':_[_0xfc83('0x37')](_0x516df0[_0xfc83('0x42')],function(_0x4a7ad3){var _0x5965ae={};_0x5965ae[_0x4a7ad3]={'$like':'%'+_0x13d0e9[_0xfc83('0x3d')][_0xfc83('0x4a')]+'%'};return _0x5965ae;})});}_0x516df0=_['merge']({},_0x516df0,_0x13d0e9[_0xfc83('0x4c')]);return _0x266b78[_0xfc83('0x67')](_0x516df0);}})[_0xfc83('0x2f')](function(_0x4379e8){if(_0x4379e8){_0x27fc71=_0x4379e8[_0xfc83('0x44')];if(!_0x13d0e9['query'][_0xfc83('0x45')](_0xfc83('0x68'))){_0x516df0[_0xfc83('0x28')]=qs[_0xfc83('0x28')](_0x13d0e9[_0xfc83('0x3d')][_0xfc83('0x28')]);_0x516df0[_0xfc83('0x26')]=qs[_0xfc83('0x26')](_0x13d0e9[_0xfc83('0x3d')][_0xfc83('0x26')]);}return _0x266b78[_0xfc83('0x67')](_0x516df0);}})['then'](function(_0x552b1a){if(_0x552b1a){return _0x552b1a?{'count':_0x27fc71,'rows':_0x552b1a}:null;}})[_0xfc83('0x2f')](respondWithResult(_0x5f76ac,null))[_0xfc83('0x51')](handleError(_0x5f76ac,null));};
\ No newline at end of file
index 354814c..dd82e5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1bf=['save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','SquareProject','setMaxListeners'];(function(_0x19fc64,_0x3cc450){var _0x5b2a74=function(_0x2a2eea){while(--_0x2a2eea){_0x19fc64['push'](_0x19fc64['shift']());}};_0x5b2a74(++_0x3cc450);}(_0xf1bf,0x6a));var _0xff1b=function(_0x2618c0,_0x2ef47b){_0x2618c0=_0x2618c0-0x0;var _0x488e13=_0xf1bf[_0x2618c0];return _0x488e13;};'use strict';var EventEmitter=require(_0xff1b('0x0'));var SquareProject=require(_0xff1b('0x1'))['db'][_0xff1b('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xff1b('0x3')](0x0);var events={'afterCreate':_0xff1b('0x4'),'afterUpdate':_0xff1b('0x5'),'afterDestroy':_0xff1b('0x6')};function emitEvent(_0x5453e7){return function(_0x221480,_0x364e7f,_0x1286fb){SquareProjectEvents['emit'](_0x5453e7+':'+_0x221480['id'],_0x221480);SquareProjectEvents[_0xff1b('0x7')](_0x5453e7,_0x221480);_0x1286fb(null);};}for(var e in events){if(events[_0xff1b('0x8')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0xff1b('0x9')]=SquareProjectEvents;
\ No newline at end of file
+var _0xd8db=['hasOwnProperty','hook','exports','events','../../mysqldb','SquareProject','setMaxListeners','update','remove','emit'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xd8db,0x67));var _0xbd8d=function(_0x5aedc7,_0x102a15){_0x5aedc7=_0x5aedc7-0x0;var _0x54a4ce=_0xd8db[_0x5aedc7];return _0x54a4ce;};'use strict';var EventEmitter=require(_0xbd8d('0x0'));var SquareProject=require(_0xbd8d('0x1'))['db'][_0xbd8d('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xbd8d('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xbd8d('0x4'),'afterDestroy':_0xbd8d('0x5')};function emitEvent(_0x20fc14){return function(_0x275b22,_0xdbea94,_0x1cc031){SquareProjectEvents[_0xbd8d('0x6')](_0x20fc14+':'+_0x275b22['id'],_0x275b22);SquareProjectEvents[_0xbd8d('0x6')](_0x20fc14,_0x275b22);_0x1cc031(null);};}for(var e in events){if(events[_0xbd8d('0x7')](e)){var event=events[e];SquareProject[_0xbd8d('0x8')](e,emitEvent(event));}}module[_0xbd8d('0x9')]=SquareProjectEvents;
\ No newline at end of file
index f77f68d..f89dd3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8212=['../../config/logger','api','moment','request-promise','path','../../config/environment','./squareProject.attributes','SquareProject','changed','preproduction','savedAt','format','publishedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util'];(function(_0x2b54f6,_0x35a4bd){var _0x530780=function(_0x73d649){while(--_0x73d649){_0x2b54f6['push'](_0x2b54f6['shift']());}};_0x530780(++_0x35a4bd);}(_0x8212,0xae));var _0x2821=function(_0x333456,_0x510c63){_0x333456=_0x333456-0x0;var _0x32f090=_0x8212[_0x333456];return _0x32f090;};'use strict';var _=require(_0x2821('0x0'));var util=require(_0x2821('0x1'));var logger=require(_0x2821('0x2'))(_0x2821('0x3'));var moment=require(_0x2821('0x4'));var BPromise=require('bluebird');var rp=require(_0x2821('0x5'));var fs=require('fs');var path=require(_0x2821('0x6'));var rimraf=require('rimraf');var config=require(_0x2821('0x7'));var attributes=require(_0x2821('0x8'));module['exports']=function(_0x885584,_0x1bcd44){return _0x885584['define'](_0x2821('0x9'),attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x17339f,_0xba7a55,_0x443f61){if(_0x17339f[_0x2821('0xa')](_0x2821('0xb'))){_0x17339f[_0x2821('0xc')]=moment()[_0x2821('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x17339f['changed']('production')){_0x17339f[_0x2821('0xe')]=moment()[_0x2821('0xd')](_0x2821('0xf'));}_0x443f61(null,_0x17339f);}}});};
\ No newline at end of file
+var _0xa2b2=['publishedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./squareProject.attributes','exports','SquareProject','square_projects','changed','preproduction','savedAt','production'];(function(_0x2046dd,_0x40a9ab){var _0x2eb055=function(_0x1c65e8){while(--_0x1c65e8){_0x2046dd['push'](_0x2046dd['shift']());}};_0x2eb055(++_0x40a9ab);}(_0xa2b2,0x1f1));var _0x2a2b=function(_0x41cc22,_0x335c08){_0x41cc22=_0x41cc22-0x0;var _0x344fd4=_0xa2b2[_0x41cc22];return _0x344fd4;};'use strict';var _=require(_0x2a2b('0x0'));var util=require(_0x2a2b('0x1'));var logger=require('../../config/logger')(_0x2a2b('0x2'));var moment=require(_0x2a2b('0x3'));var BPromise=require(_0x2a2b('0x4'));var rp=require(_0x2a2b('0x5'));var fs=require('fs');var path=require(_0x2a2b('0x6'));var rimraf=require('rimraf');var config=require(_0x2a2b('0x7'));var attributes=require(_0x2a2b('0x8'));module[_0x2a2b('0x9')]=function(_0x5c8986,_0x47ad80){return _0x5c8986['define'](_0x2a2b('0xa'),attributes,{'tableName':_0x2a2b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3a2047,_0x502099,_0x3b96a7){if(_0x3a2047[_0x2a2b('0xc')](_0x2a2b('0xd'))){_0x3a2047[_0x2a2b('0xe')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x3a2047['changed'](_0x2a2b('0xf'))){_0x3a2047[_0x2a2b('0x10')]=moment()[_0x2a2b('0x11')](_0x2a2b('0x12'));}_0x3b96a7(null,_0x3a2047);}}});};
\ No newline at end of file
index 61bbee9..80cd3c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf077=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','redis','socket.io-emitter','./squareProject.socket','register','request','then','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','ShowSquareProject','SquareProject','find','raw','options','attributes','map','include','model'];(function(_0x2a004f,_0x475b0a){var _0x3e628d=function(_0x3b3ef4){while(--_0x3b3ef4){_0x2a004f['push'](_0x2a004f['shift']());}};_0x3e628d(++_0x475b0a);}(_0xf077,0x1b0));var _0x7f07=function(_0xd31b9f,_0x1bd59a){_0xd31b9f=_0xd31b9f-0x0;var _0x2b6a05=_0xf077[_0xd31b9f];return _0x2b6a05;};'use strict';var _=require(_0x7f07('0x0'));var util=require(_0x7f07('0x1'));var moment=require(_0x7f07('0x2'));var BPromise=require(_0x7f07('0x3'));var rs=require(_0x7f07('0x4'));var fs=require('fs');var Redis=require(_0x7f07('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x7f07('0x6'));var logger=require(_0x7f07('0x7'))('rpc');var config=require(_0x7f07('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x7f07('0x9')][_0x7f07('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x7f07('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x7f07('0xc'))(new Redis(config['redis']));require(_0x7f07('0xd'))[_0x7f07('0xe')](socket);function respondWithRpcPromise(_0x331ecc,_0x240b6e,_0x93b789){return new BPromise(function(_0x46e7c7,_0x4bddcd){return client[_0x7f07('0xf')](_0x331ecc,_0x93b789)[_0x7f07('0x10')](function(_0x30f7b2){logger['info'](_0x7f07('0x11'),_0x240b6e,_0x7f07('0x12'));logger[_0x7f07('0x13')](_0x7f07('0x14'),_0x240b6e,_0x7f07('0x12'),JSON[_0x7f07('0x15')](_0x30f7b2));if(_0x30f7b2['error']){if(_0x30f7b2[_0x7f07('0x16')]['code']===0x1f4){logger['error'](_0x7f07('0x11'),_0x240b6e,_0x30f7b2['error'][_0x7f07('0x17')]);return _0x4bddcd(_0x30f7b2[_0x7f07('0x16')][_0x7f07('0x17')]);}logger[_0x7f07('0x16')]('SquareProject,\x20%s,\x20%s',_0x240b6e,_0x30f7b2[_0x7f07('0x16')]['message']);return _0x46e7c7(_0x30f7b2['error'][_0x7f07('0x17')]);}else{logger[_0x7f07('0x18')](_0x7f07('0x11'),_0x240b6e,_0x7f07('0x12'));_0x46e7c7(_0x30f7b2[_0x7f07('0x19')][_0x7f07('0x17')]);}})[_0x7f07('0x1a')](function(_0x514a78){logger[_0x7f07('0x16')]('SquareProject,\x20%s,\x20%s',_0x240b6e,_0x514a78);_0x4bddcd(_0x514a78);});});}exports[_0x7f07('0x1b')]=function(_0x4c9f90){var _0x1afb78=this;return new Promise(function(_0x552621,_0x49d260){return db[_0x7f07('0x1c')][_0x7f07('0x1d')]({'raw':_0x4c9f90['options']?_0x4c9f90['options'][_0x7f07('0x1e')]===undefined?!![]:![]:!![],'where':_0x4c9f90[_0x7f07('0x1f')]?_0x4c9f90[_0x7f07('0x1f')]['where']||null:null,'attributes':_0x4c9f90[_0x7f07('0x1f')]?_0x4c9f90[_0x7f07('0x1f')][_0x7f07('0x20')]||null:null,'include':_0x4c9f90['options']?_0x4c9f90[_0x7f07('0x1f')]['include']?_[_0x7f07('0x21')](_0x4c9f90[_0x7f07('0x1f')][_0x7f07('0x22')],function(_0x3b0229){return{'model':db[_0x3b0229[_0x7f07('0x23')]],'as':_0x3b0229['as'],'attributes':_0x3b0229['attributes'],'include':_0x3b0229['include']?_[_0x7f07('0x21')](_0x3b0229[_0x7f07('0x22')],function(_0xa82e6e){return{'model':db[_0xa82e6e[_0x7f07('0x23')]],'as':_0xa82e6e['as'],'attributes':_0xa82e6e[_0x7f07('0x20')],'include':_0xa82e6e[_0x7f07('0x22')]?_[_0x7f07('0x21')](_0xa82e6e[_0x7f07('0x22')],function(_0x3d9397){return{'model':db[_0x3d9397['model']],'as':_0x3d9397['as'],'attributes':_0x3d9397[_0x7f07('0x20')]};}):[]};}):[]};}):[]:[]})[_0x7f07('0x10')](function(_0x23f6ef){logger['info'](_0x7f07('0x1b'),_0x4c9f90);logger[_0x7f07('0x13')](_0x7f07('0x1b'),_0x4c9f90,JSON[_0x7f07('0x15')](_0x23f6ef));_0x552621(_0x23f6ef);})[_0x7f07('0x1a')](function(_0x2bdbdb){logger[_0x7f07('0x16')](_0x7f07('0x1b'),_0x2bdbdb[_0x7f07('0x17')],_0x4c9f90);_0x49d260(_0x1afb78['error'](0x1f4,_0x2bdbdb[_0x7f07('0x17')]));});});};
\ No newline at end of file
+var _0xf445=['map','then','ShowSquareProject','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./squareProject.socket','register','request','info','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','SquareProject','options','raw','include','model','attributes'];(function(_0x496adf,_0x48c502){var _0x220377=function(_0x3dda53){while(--_0x3dda53){_0x496adf['push'](_0x496adf['shift']());}};_0x220377(++_0x48c502);}(_0xf445,0xe1));var _0x5f44=function(_0x4b4844,_0x2f0dfb){_0x4b4844=_0x4b4844-0x0;var _0x575192=_0xf445[_0x4b4844];return _0x575192;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x5f44('0x0'));var BPromise=require(_0x5f44('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5f44('0x2'));var db=require(_0x5f44('0x3'))['db'];var utils=require(_0x5f44('0x4'));var logger=require(_0x5f44('0x5'))(_0x5f44('0x6'));var config=require('../../config/environment');var jayson=require(_0x5f44('0x7'));var client=jayson[_0x5f44('0x8')][_0x5f44('0x9')]({'port':0x232a});config['redis']=_[_0x5f44('0xa')](config[_0x5f44('0xb')],{'host':_0x5f44('0xc'),'port':0x18eb});var socket=require(_0x5f44('0xd'))(new Redis(config[_0x5f44('0xb')]));require(_0x5f44('0xe'))[_0x5f44('0xf')](socket);function respondWithRpcPromise(_0x58109b,_0xf39747,_0x5daee9){return new BPromise(function(_0x3b8b29,_0x3beac4){return client[_0x5f44('0x10')](_0x58109b,_0x5daee9)['then'](function(_0x324c22){logger[_0x5f44('0x11')](_0x5f44('0x12'),_0xf39747,_0x5f44('0x13'));logger[_0x5f44('0x14')](_0x5f44('0x15'),_0xf39747,_0x5f44('0x13'),JSON[_0x5f44('0x16')](_0x324c22));if(_0x324c22[_0x5f44('0x17')]){if(_0x324c22[_0x5f44('0x17')][_0x5f44('0x18')]===0x1f4){logger[_0x5f44('0x17')](_0x5f44('0x12'),_0xf39747,_0x324c22[_0x5f44('0x17')][_0x5f44('0x19')]);return _0x3beac4(_0x324c22[_0x5f44('0x17')][_0x5f44('0x19')]);}logger[_0x5f44('0x17')](_0x5f44('0x12'),_0xf39747,_0x324c22[_0x5f44('0x17')][_0x5f44('0x19')]);return _0x3b8b29(_0x324c22[_0x5f44('0x17')][_0x5f44('0x19')]);}else{logger[_0x5f44('0x11')]('SquareProject,\x20%s,\x20%s',_0xf39747,_0x5f44('0x13'));_0x3b8b29(_0x324c22[_0x5f44('0x1a')][_0x5f44('0x19')]);}})[_0x5f44('0x1b')](function(_0x8a576c){logger[_0x5f44('0x17')](_0x5f44('0x12'),_0xf39747,_0x8a576c);_0x3beac4(_0x8a576c);});});}exports['ShowSquareProject']=function(_0x218865){var _0x876f63=this;return new Promise(function(_0x5a6cb2,_0x511271){return db[_0x5f44('0x1c')]['find']({'raw':_0x218865['options']?_0x218865[_0x5f44('0x1d')][_0x5f44('0x1e')]===undefined?!![]:![]:!![],'where':_0x218865[_0x5f44('0x1d')]?_0x218865[_0x5f44('0x1d')]['where']||null:null,'attributes':_0x218865[_0x5f44('0x1d')]?_0x218865[_0x5f44('0x1d')]['attributes']||null:null,'include':_0x218865['options']?_0x218865[_0x5f44('0x1d')][_0x5f44('0x1f')]?_['map'](_0x218865[_0x5f44('0x1d')][_0x5f44('0x1f')],function(_0x3b14c4){return{'model':db[_0x3b14c4[_0x5f44('0x20')]],'as':_0x3b14c4['as'],'attributes':_0x3b14c4[_0x5f44('0x21')],'include':_0x3b14c4[_0x5f44('0x1f')]?_[_0x5f44('0x22')](_0x3b14c4[_0x5f44('0x1f')],function(_0x517fc0){return{'model':db[_0x517fc0[_0x5f44('0x20')]],'as':_0x517fc0['as'],'attributes':_0x517fc0[_0x5f44('0x21')],'include':_0x517fc0[_0x5f44('0x1f')]?_['map'](_0x517fc0[_0x5f44('0x1f')],function(_0x364bbc){return{'model':db[_0x364bbc[_0x5f44('0x20')]],'as':_0x364bbc['as'],'attributes':_0x364bbc[_0x5f44('0x21')]};}):[]};}):[]};}):[]:[]})[_0x5f44('0x23')](function(_0xa63dec){logger[_0x5f44('0x11')]('ShowSquareProject',_0x218865);logger['debug'](_0x5f44('0x24'),_0x218865,JSON[_0x5f44('0x16')](_0xa63dec));_0x5a6cb2(_0xa63dec);})['catch'](function(_0x3be107){logger[_0x5f44('0x17')](_0x5f44('0x24'),_0x3be107[_0x5f44('0x19')],_0x218865);_0x511271(_0x876f63[_0x5f44('0x17')](0x1f4,_0x3be107[_0x5f44('0x19')]));});});};
\ No newline at end of file
index d2a5d94..53e54b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7577=['save','remove','update','removeListener','register','length','squareProject:'];(function(_0x28a1c6,_0x496ef4){var _0x856330=function(_0xdabf73){while(--_0xdabf73){_0x28a1c6['push'](_0x28a1c6['shift']());}};_0x856330(++_0x496ef4);}(_0x7577,0x188));var _0x7757=function(_0x31df50,_0x410b9f){_0x31df50=_0x31df50-0x0;var _0x5572b9=_0x7577[_0x31df50];return _0x5572b9;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0x7757('0x0'),_0x7757('0x1'),_0x7757('0x2')];function createListener(_0xb73e02,_0x1b1898){return function(_0x307b5b){_0x1b1898['emit'](_0xb73e02,_0x307b5b);};}function removeListener(_0x4c301c,_0x2c6a45){return function(){SquareProjectEvents[_0x7757('0x3')](_0x4c301c,_0x2c6a45);};}exports[_0x7757('0x4')]=function(_0x4791c0){for(var _0x55c829=0x0,_0x5757f1=events[_0x7757('0x5')];_0x55c829<_0x5757f1;_0x55c829++){var _0x3c5636=events[_0x55c829];var _0x3e59ee=createListener(_0x7757('0x6')+_0x3c5636,_0x4791c0);SquareProjectEvents['on'](_0x3c5636,_0x3e59ee);}};
\ No newline at end of file
+var _0xc128=['length','./squareProject.events','save','emit','register'];(function(_0x31e4bb,_0x3c7802){var _0x426aa3=function(_0x4d2792){while(--_0x4d2792){_0x31e4bb['push'](_0x31e4bb['shift']());}};_0x426aa3(++_0x3c7802);}(_0xc128,0x10f));var _0x8c12=function(_0x3e5a81,_0x4fbcf1){_0x3e5a81=_0x3e5a81-0x0;var _0x8f5dcc=_0xc128[_0x3e5a81];return _0x8f5dcc;};'use strict';var SquareProjectEvents=require(_0x8c12('0x0'));var events=[_0x8c12('0x1'),'remove','update'];function createListener(_0x1fd6ff,_0x2cc538){return function(_0x271c98){_0x2cc538[_0x8c12('0x2')](_0x1fd6ff,_0x271c98);};}function removeListener(_0x49d2da,_0x357fb1){return function(){SquareProjectEvents['removeListener'](_0x49d2da,_0x357fb1);};}exports[_0x8c12('0x3')]=function(_0x2347e3){for(var _0x53450a=0x0,_0x3366e0=events[_0x8c12('0x4')];_0x53450a<_0x3366e0;_0x53450a++){var _0x29b3b0=events[_0x53450a];var _0x32ccc1=createListener('squareProject:'+_0x29b3b0,_0x2347e3);SquareProjectEvents['on'](_0x29b3b0,_0x32ccc1);}};
\ No newline at end of file
index 4a2d1c0..b64cc51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./squareRecording.controller','isAuthenticated','get','/:id','show','/:id/download','download','post','create','put'];(function(_0x5e1fc4,_0x5ecb65){var _0x3fad7c=function(_0x14cd23){while(--_0x14cd23){_0x5e1fc4['push'](_0x5e1fc4['shift']());}};_0x3fad7c(++_0x5ecb65);}(_0x53ec,0x192));var _0xc53e=function(_0x3bfdde,_0x306be4){_0x3bfdde=_0x3bfdde-0x0;var _0x3f752a=_0x53ec[_0x3bfdde];return _0x3f752a;};'use strict';var multer=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var path=require(_0xc53e('0x2'));var timeout=require(_0xc53e('0x3'));var express=require(_0xc53e('0x4'));var router=express[_0xc53e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc53e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc53e('0x7'));var controller=require(_0xc53e('0x8'));router['get']('/',auth[_0xc53e('0x9')](),controller['index']);router[_0xc53e('0xa')](_0xc53e('0xb'),auth['isAuthenticated'](),controller[_0xc53e('0xc')]);router[_0xc53e('0xa')](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0xe')]);router[_0xc53e('0xf')]('/',auth[_0xc53e('0x9')](),controller[_0xc53e('0x10')]);router[_0xc53e('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xc53e('0x12')]);router['delete']('/:id',auth[_0xc53e('0x9')](),controller[_0xc53e('0x13')]);module[_0xc53e('0x14')]=router;
\ No newline at end of file
+var _0x4975=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','index','/:id','isAuthenticated','show','/:id/download','download','post','create','put','update','destroy','exports','multer','path','connect-timeout','express'];(function(_0x3ad2fc,_0x4c5e28){var _0x326336=function(_0x52fb0c){while(--_0x52fb0c){_0x3ad2fc['push'](_0x3ad2fc['shift']());}};_0x326336(++_0x4c5e28);}(_0x4975,0x86));var _0x5497=function(_0x29504f,_0x36a166){_0x29504f=_0x29504f-0x0;var _0x558b70=_0x4975[_0x29504f];return _0x558b70;};'use strict';var multer=require(_0x5497('0x0'));var util=require('util');var path=require(_0x5497('0x1'));var timeout=require(_0x5497('0x2'));var express=require(_0x5497('0x3'));var router=express[_0x5497('0x4')]();var fs_extra=require(_0x5497('0x5'));var auth=require(_0x5497('0x6'));var interaction=require(_0x5497('0x7'));var config=require(_0x5497('0x8'));var controller=require(_0x5497('0x9'));router[_0x5497('0xa')]('/',auth['isAuthenticated'](),controller[_0x5497('0xb')]);router['get'](_0x5497('0xc'),auth[_0x5497('0xd')](),controller[_0x5497('0xe')]);router['get'](_0x5497('0xf'),auth['isAuthenticated'](),controller[_0x5497('0x10')]);router[_0x5497('0x11')]('/',auth[_0x5497('0xd')](),controller[_0x5497('0x12')]);router[_0x5497('0x13')](_0x5497('0xc'),auth[_0x5497('0xd')](),controller[_0x5497('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x5497('0x15')]);module[_0x5497('0x16')]=router;
\ No newline at end of file
index fbfa651..842e18a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['substring','lastIndexOf','sequelize','exports','STRING','VIRTUAL','getDataValue','savePath'];(function(_0x12b87f,_0x15c1eb){var _0x87c0e2=function(_0x327ec0){while(--_0x327ec0){_0x12b87f['push'](_0x12b87f['shift']());}};_0x87c0e2(++_0x15c1eb);}(_0x814b,0x1a2));var _0xb814=function(_0x40cdfa,_0x1cf634){_0x40cdfa=_0x40cdfa-0x0;var _0x2c5e4d=_0x814b[_0x40cdfa];return _0x2c5e4d;};'use strict';var Sequelize=require(_0xb814('0x0'));module[_0xb814('0x1')]={'uniqueid':{'type':Sequelize[_0xb814('0x2')]},'callerid':{'type':Sequelize[_0xb814('0x2')]},'calleridname':{'type':Sequelize[_0xb814('0x2')]},'context':{'type':Sequelize[_0xb814('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xb814('0x2')]},'accountcode':{'type':Sequelize[_0xb814('0x2')]},'dnid':{'type':Sequelize[_0xb814('0x2')]},'projectName':{'type':Sequelize[_0xb814('0x2')]},'saveName':{'type':Sequelize[_0xb814('0x2')]},'filename':{'type':Sequelize[_0xb814('0x2')]},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0xb814('0x3')],'get':function(){var _0x2e6272='';var _0x5c8539=this[_0xb814('0x4')](_0xb814('0x5'));if(_0x5c8539){_0x2e6272=_0x5c8539[_0xb814('0x6')](_0x5c8539[_0xb814('0x7')]('.'));}return _0x2e6272;}}};
\ No newline at end of file
+var _0x9957=['sequelize','exports','STRING','VIRTUAL','getDataValue','savePath','lastIndexOf'];(function(_0x3a8ef3,_0x3c9849){var _0x4ae8cc=function(_0x12e6ef){while(--_0x12e6ef){_0x3a8ef3['push'](_0x3a8ef3['shift']());}};_0x4ae8cc(++_0x3c9849);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')]},'callerid':{'type':Sequelize[_0x7995('0x2')]},'calleridname':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x7995('0x2')]},'extension':{'type':Sequelize[_0x7995('0x2')]},'priority':{'type':Sequelize[_0x7995('0x2')]},'accountcode':{'type':Sequelize[_0x7995('0x2')]},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize[_0x7995('0x2')]},'saveName':{'type':Sequelize[_0x7995('0x2')]},'filename':{'type':Sequelize[_0x7995('0x2')]},'savePath':{'type':Sequelize[_0x7995('0x2')]},'format':{'type':Sequelize[_0x7995('0x3')],'get':function(){var _0x326741='';var _0x4996ca=this[_0x7995('0x4')](_0x7995('0x5'));if(_0x4996ca){_0x326741=_0x4996ca['substring'](_0x4996ca[_0x7995('0x6')]('.'));}return _0x326741;}}};
\ No newline at end of file
index fc5022a..5c794a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb30=['Entity\x20not\x20found','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','error','stack','name','send','index','SquareRecording','type','key','model','map','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','options','includeAll','include','findAll','rows','catch','show','rawAttributes','merge','create','body','find','../../components/encryptor','uniqueid','params','savePath','filename','format','%s.cypher','secrets','recording','existsSync','download','extname','unlink','message','Not\x20found','destroy','isNil'];(function(_0x595604,_0x2cc998){var _0x1466f3=function(_0x4e1d9b){while(--_0x4e1d9b){_0x595604['push'](_0x595604['shift']());}};_0x1466f3(++_0x2cc998);}(_0xfb30,0x17d));var _0x0fb3=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xfb30[_0x502c7d];return _0x30b7ed;};'use strict';var emlformat=require(_0x0fb3('0x0'));var rimraf=require(_0x0fb3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0fb3('0x2'));var rp=require(_0x0fb3('0x3'));var moment=require('moment');var BPromise=require(_0x0fb3('0x4'));var Mustache=require(_0x0fb3('0x5'));var util=require(_0x0fb3('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x0fb3('0x7'));var ejs=require(_0x0fb3('0x8'));var fs=require('fs');var fs_extra=require(_0x0fb3('0x9'));var _=require(_0x0fb3('0xa'));var squel=require(_0x0fb3('0xb'));var crypto=require(_0x0fb3('0xc'));var jsforce=require(_0x0fb3('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0fb3('0xe'));var Redis=require(_0x0fb3('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x0fb3('0x10'));var as=require(_0x0fb3('0x11'));var hardwareService=require(_0x0fb3('0x12'));var logger=require(_0x0fb3('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x0fb3('0x14'));var licenseUtil=require(_0x0fb3('0x15'));var db=require(_0x0fb3('0x16'))['db'];function respondWithStatusCode(_0x3e833b,_0x6c73b2){_0x6c73b2=_0x6c73b2||0xcc;return function(_0x5b3bf3){if(_0x5b3bf3){return _0x3e833b[_0x0fb3('0x17')](_0x6c73b2);}return _0x3e833b[_0x0fb3('0x18')](_0x6c73b2)[_0x0fb3('0x19')]();};}function respondWithResult(_0x1991a6,_0x9b3ed8){_0x9b3ed8=_0x9b3ed8||0xc8;return function(_0x406a14){if(_0x406a14){return _0x1991a6[_0x0fb3('0x18')](_0x9b3ed8)[_0x0fb3('0x1a')](_0x406a14);}};}function respondWithFilteredResult(_0x1e17a1,_0x10b312){return function(_0x473df5){if(_0x473df5){var _0x10196c=typeof _0x10b312[_0x0fb3('0x1b')]===_0x0fb3('0x1c')&&typeof _0x10b312[_0x0fb3('0x1d')]===_0x0fb3('0x1c');var _0x383a8f=_0x473df5['count'];var _0x54a109=_0x10196c?0x0:_0x10b312[_0x0fb3('0x1b')];var _0x1d6717=_0x10196c?_0x473df5[_0x0fb3('0x1e')]:_0x10b312[_0x0fb3('0x1b')]+_0x10b312[_0x0fb3('0x1d')];var _0x1f0af1;if(_0x1d6717>=_0x383a8f){_0x1d6717=_0x383a8f;_0x1f0af1=0xc8;}else{_0x1f0af1=0xce;}_0x1e17a1[_0x0fb3('0x18')](_0x1f0af1);return _0x1e17a1[_0x0fb3('0x1f')](_0x0fb3('0x20'),_0x54a109+'-'+_0x1d6717+'/'+_0x383a8f)['json'](_0x473df5);}return null;};}function patchUpdates(_0x54d79e){return function(_0x17924c){try{jsonpatch[_0x0fb3('0x21')](_0x17924c,_0x54d79e,!![]);}catch(_0x38b58e){return BPromise['reject'](_0x38b58e);}return _0x17924c[_0x0fb3('0x22')]();};}function saveUpdates(_0x49e7df,_0x2ba448){return function(_0x146240){if(_0x146240){return _0x146240[_0x0fb3('0x23')](_0x49e7df)[_0x0fb3('0x24')](function(_0x4f2e86){return _0x4f2e86;});}return null;};}function removeEntity(_0x17d46f,_0x5b522a){return function(_0x41dea9){if(_0x41dea9){return _0x41dea9['destroy']()[_0x0fb3('0x24')](function(){_0x17d46f[_0x0fb3('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x55d4a2,_0x51d8b7){return function(_0x19c2a6){if(!_0x19c2a6){_0x55d4a2[_0x0fb3('0x17')](0x194);}return _0x19c2a6;};}function handleError(_0x27c598,_0x585ee2){_0x585ee2=_0x585ee2||0x1f4;return function(_0x37fcd1){logger[_0x0fb3('0x25')](_0x37fcd1[_0x0fb3('0x26')]);if(_0x37fcd1[_0x0fb3('0x27')]){delete _0x37fcd1[_0x0fb3('0x27')];}_0x27c598[_0x0fb3('0x18')](_0x585ee2)[_0x0fb3('0x28')](_0x37fcd1);};}exports[_0x0fb3('0x29')]=function(_0x39fe3a,_0x1bbe43){var _0x127fbf={},_0x2410b3={},_0x142552={'count':0x0,'rows':[]};var _0x267a8e=_['map'](db[_0x0fb3('0x2a')]['rawAttributes'],function(_0x25fc90){return{'name':_0x25fc90['fieldName'],'type':_0x25fc90[_0x0fb3('0x2b')][_0x0fb3('0x2c')]};});_0x2410b3[_0x0fb3('0x2d')]=_[_0x0fb3('0x2e')](_0x267a8e,_0x0fb3('0x27'));_0x2410b3[_0x0fb3('0x2f')]=_[_0x0fb3('0x30')](_0x39fe3a[_0x0fb3('0x2f')]);_0x2410b3['filters']=_['intersection'](_0x2410b3[_0x0fb3('0x2d')],_0x2410b3[_0x0fb3('0x2f')]);_0x127fbf[_0x0fb3('0x31')]=_[_0x0fb3('0x32')](_0x2410b3['model'],qs[_0x0fb3('0x33')](_0x39fe3a['query']['fields']));_0x127fbf[_0x0fb3('0x31')]=_0x127fbf['attributes'][_0x0fb3('0x34')]?_0x127fbf['attributes']:_0x2410b3[_0x0fb3('0x2d')];if(!_0x39fe3a['query'][_0x0fb3('0x35')](_0x0fb3('0x36'))){_0x127fbf[_0x0fb3('0x1d')]=qs[_0x0fb3('0x1d')](_0x39fe3a[_0x0fb3('0x2f')][_0x0fb3('0x1d')]);_0x127fbf[_0x0fb3('0x1b')]=qs['offset'](_0x39fe3a['query'][_0x0fb3('0x1b')]);}_0x127fbf['order']=qs[_0x0fb3('0x37')](_0x39fe3a[_0x0fb3('0x2f')][_0x0fb3('0x37')]);_0x127fbf[_0x0fb3('0x38')]=qs[_0x0fb3('0x39')](_[_0x0fb3('0x3a')](_0x39fe3a[_0x0fb3('0x2f')],_0x2410b3[_0x0fb3('0x39')]),_0x267a8e);if(_0x39fe3a[_0x0fb3('0x2f')][_0x0fb3('0x3b')]){_0x127fbf[_0x0fb3('0x38')]=_['merge'](_0x127fbf[_0x0fb3('0x38')],{'$or':_[_0x0fb3('0x2e')](_0x267a8e,function(_0x435795){if(_0x435795[_0x0fb3('0x2b')]!=='VIRTUAL'){var _0xf3f767={};_0xf3f767[_0x435795[_0x0fb3('0x27')]]={'$like':'%'+_0x39fe3a['query'][_0x0fb3('0x3b')]+'%'};return _0xf3f767;}})});}_0x127fbf=_['merge']({},_0x127fbf,_0x39fe3a[_0x0fb3('0x3c')]);var _0x1b28a5={'where':_0x127fbf[_0x0fb3('0x38')]};return db[_0x0fb3('0x2a')][_0x0fb3('0x1e')](_0x1b28a5)[_0x0fb3('0x24')](function(_0x33b7e3){_0x142552[_0x0fb3('0x1e')]=_0x33b7e3;if(_0x39fe3a['query'][_0x0fb3('0x3d')]){_0x127fbf[_0x0fb3('0x3e')]=[{'all':!![]}];}return db['SquareRecording'][_0x0fb3('0x3f')](_0x127fbf);})[_0x0fb3('0x24')](function(_0x3b65bb){_0x142552[_0x0fb3('0x40')]=_0x3b65bb;return _0x142552;})['then'](respondWithFilteredResult(_0x1bbe43,_0x127fbf))[_0x0fb3('0x41')](handleError(_0x1bbe43,null));};exports[_0x0fb3('0x42')]=function(_0x2529c8,_0x3b92e8){var _0x1391b6={'raw':!![],'where':{'id':_0x2529c8['params']['id']}},_0x15f96b={};_0x15f96b[_0x0fb3('0x2d')]=_[_0x0fb3('0x30')](db[_0x0fb3('0x2a')][_0x0fb3('0x43')]);_0x15f96b[_0x0fb3('0x2f')]=_[_0x0fb3('0x30')](_0x2529c8[_0x0fb3('0x2f')]);_0x15f96b[_0x0fb3('0x39')]=_[_0x0fb3('0x32')](_0x15f96b[_0x0fb3('0x2d')],_0x15f96b[_0x0fb3('0x2f')]);_0x1391b6[_0x0fb3('0x31')]=_[_0x0fb3('0x32')](_0x15f96b[_0x0fb3('0x2d')],qs[_0x0fb3('0x33')](_0x2529c8[_0x0fb3('0x2f')]['fields']));_0x1391b6[_0x0fb3('0x31')]=_0x1391b6['attributes'][_0x0fb3('0x34')]?_0x1391b6['attributes']:_0x15f96b[_0x0fb3('0x2d')];if(_0x2529c8['query']['includeAll']){_0x1391b6[_0x0fb3('0x3e')]=[{'all':!![]}];}_0x1391b6=_[_0x0fb3('0x44')]({},_0x1391b6,_0x2529c8[_0x0fb3('0x3c')]);return db[_0x0fb3('0x2a')]['find'](_0x1391b6)[_0x0fb3('0x24')](handleEntityNotFound(_0x3b92e8,null))[_0x0fb3('0x24')](respondWithResult(_0x3b92e8,null))[_0x0fb3('0x41')](handleError(_0x3b92e8,null));};exports[_0x0fb3('0x45')]=function(_0x487ff7,_0x2d5cce){return db[_0x0fb3('0x2a')][_0x0fb3('0x45')](_0x487ff7[_0x0fb3('0x46')],{})['then'](respondWithResult(_0x2d5cce,0xc9))[_0x0fb3('0x41')](handleError(_0x2d5cce,null));};exports[_0x0fb3('0x23')]=function(_0x2f98a4,_0x436ab6){if(_0x2f98a4[_0x0fb3('0x46')]['id']){delete _0x2f98a4['body']['id'];}return db['SquareRecording'][_0x0fb3('0x47')]({'where':{'id':_0x2f98a4['params']['id']}})['then'](handleEntityNotFound(_0x436ab6,null))[_0x0fb3('0x24')](saveUpdates(_0x2f98a4[_0x0fb3('0x46')],null))[_0x0fb3('0x24')](respondWithResult(_0x436ab6,null))['catch'](handleError(_0x436ab6,null));};exports['download']=function(_0x22b144,_0x1656dc,_0x38dcc9){var _0x169e66=require(_0x0fb3('0x48'));var _0x31dbdc=![];var _0x48c866={};if(_0x22b144['query'][_0x0fb3('0x2b')]&&_0x22b144[_0x0fb3('0x2f')][_0x0fb3('0x2b')]===_0x0fb3('0x49')){_0x48c866[_0x0fb3('0x49')]=_0x22b144[_0x0fb3('0x4a')]['id'];}else{_0x48c866['id']=_0x22b144[_0x0fb3('0x4a')]['id'];}return db['SquareRecording'][_0x0fb3('0x47')]({'where':_0x48c866,'attributes':['id',_0x0fb3('0x4b'),_0x0fb3('0x4c')],'raw':!![]})[_0x0fb3('0x24')](handleEntityNotFound(_0x1656dc,null))[_0x0fb3('0x24')](function(_0x11e99e){if(_0x11e99e){var _0x1b44e4=_0x11e99e[_0x0fb3('0x4b')];var _0x1e64a8=util[_0x0fb3('0x4d')](_0x0fb3('0x4e'),_0x1b44e4);if(fs['existsSync'](_0x1e64a8)){_0x31dbdc=!![];return _0x169e66['decryptFile'](_0x1e64a8,_0x1b44e4,config[_0x0fb3('0x4f')][_0x0fb3('0x50')])[_0x0fb3('0x24')](function(){return _0x11e99e;});}return _0x11e99e;}})[_0x0fb3('0x24')](function(_0x4c5ee2){if(_0x4c5ee2){var _0x15eed2=_0x4c5ee2['savePath'];if(!fs[_0x0fb3('0x51')](_0x15eed2)){throw new db['Sequelize']['ValidationError']('SquareRecording\x20not\x20found');}if(_0x4c5ee2['filename']){return _0x1656dc[_0x0fb3('0x52')](_0x15eed2,_0x4c5ee2[_0x0fb3('0x4c')]+path[_0x0fb3('0x53')](_0x15eed2),function(){if(_0x31dbdc){fs[_0x0fb3('0x54')](_0x15eed2);}});}else{return _0x1656dc[_0x0fb3('0x52')](_0x15eed2,function(_0x336edc){if(_0x31dbdc){fs[_0x0fb3('0x54')](_0x15eed2);}});}}})['catch'](function(_0x5d7e10){if(_0x5d7e10[_0x0fb3('0x55')]==='SquareRecording\x20not\x20found'){_0x1656dc[_0x0fb3('0x18')](0x194)[_0x0fb3('0x28')](_0x0fb3('0x56'));}else{return handleError(_0x1656dc,null);}});};exports[_0x0fb3('0x57')]=function(_0x109963,_0x5684bb){return db[_0x0fb3('0x2a')][_0x0fb3('0x47')]({'where':{'id':_0x109963[_0x0fb3('0x4a')]['id']}})[_0x0fb3('0x24')](function(_0x3aa8fa){if(_[_0x0fb3('0x58')](_0x3aa8fa)){throw new ReferenceError(_0x0fb3('0x59'));}return _0x3aa8fa;})[_0x0fb3('0x24')](function(_0x1da08d){var _0x12bfb9=_0x1da08d[_0x0fb3('0x4b')];logger[_0x0fb3('0x5a')]('cancellazione\x20fisica\x20documento\x20%s',_0x12bfb9);if(!_[_0x0fb3('0x58')](_0x1da08d[_0x0fb3('0x4b')])&&fs[_0x0fb3('0x51')](_0x12bfb9)){logger['info'](_0x0fb3('0x5b')+_0x12bfb9+_0x0fb3('0x5c'));fs['unlinkSync'](_0x12bfb9);}_0x12bfb9=_0x12bfb9+'.cypher';if(!_[_0x0fb3('0x58')](_0x1da08d[_0x0fb3('0x4b')])&&fs[_0x0fb3('0x51')](_0x12bfb9)){logger['info'](_0x0fb3('0x5b')+_0x12bfb9+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x0fb3('0x5d')](_0x12bfb9);}return _0x1da08d;})['then'](function(_0x4c0718){if(!_0x4c0718)throw new InternalError();return _0x4c0718[_0x0fb3('0x57')]();})[_0x0fb3('0x24')](function(){_0x5684bb[_0x0fb3('0x18')](0xcc)[_0x0fb3('0x19')]();})[_0x0fb3('0x41')](handleError(_0x5684bb,null));};
\ No newline at end of file
+var _0x2555=['Content-Range','apply','reject','save','then','destroy','send','map','SquareRecording','rawAttributes','type','name','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','limit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','params','find','catch','create','body','update','../../components/encryptor','uniqueid','savePath','filename','format','existsSync','secrets','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','download','unlink','Not\x20found','isNil','Entity\x20not\x20found','info','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','to-csv','fs-extra','lodash','squel','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','sendStatus','status','end','json','offset','undefined','count','set'];(function(_0x35a274,_0x98b399){var _0x40d905=function(_0x5c8455){while(--_0x5c8455){_0x35a274['push'](_0x35a274['shift']());}};_0x40d905(++_0x98b399);}(_0x2555,0x1ab));var _0x5255=function(_0x5b9f1c,_0x57a8af){_0x5b9f1c=_0x5b9f1c-0x0;var _0x11d728=_0x2555[_0x5b9f1c];return _0x11d728;};'use strict';var emlformat=require(_0x5255('0x0'));var rimraf=require(_0x5255('0x1'));var zipdir=require(_0x5255('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5255('0x3'));var moment=require('moment');var BPromise=require(_0x5255('0x4'));var Mustache=require('mustache');var util=require(_0x5255('0x5'));var path=require(_0x5255('0x6'));var sox=require('sox');var csv=require(_0x5255('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5255('0x8'));var _=require(_0x5255('0x9'));var squel=require(_0x5255('0xa'));var crypto=require(_0x5255('0xb'));var jsforce=require(_0x5255('0xc'));var deskjs=require(_0x5255('0xd'));var toCsv=require('to-csv');var querystring=require(_0x5255('0xe'));var Papa=require(_0x5255('0xf'));var Redis=require(_0x5255('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x5255('0x11'));var as=require(_0x5255('0x12'));var hardwareService=require(_0x5255('0x13'));var logger=require(_0x5255('0x14'))(_0x5255('0x15'));var utils=require(_0x5255('0x16'));var config=require(_0x5255('0x17'));var licenseUtil=require(_0x5255('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x21f323,_0x1bd7ce){_0x1bd7ce=_0x1bd7ce||0xcc;return function(_0x715725){if(_0x715725){return _0x21f323[_0x5255('0x19')](_0x1bd7ce);}return _0x21f323[_0x5255('0x1a')](_0x1bd7ce)[_0x5255('0x1b')]();};}function respondWithResult(_0x15b327,_0x3b0fea){_0x3b0fea=_0x3b0fea||0xc8;return function(_0x39e35a){if(_0x39e35a){return _0x15b327['status'](_0x3b0fea)[_0x5255('0x1c')](_0x39e35a);}};}function respondWithFilteredResult(_0x325499,_0x52e39a){return function(_0x4f0720){if(_0x4f0720){var _0x4a3d23=typeof _0x52e39a[_0x5255('0x1d')]==='undefined'&&typeof _0x52e39a['limit']===_0x5255('0x1e');var _0x31ce63=_0x4f0720[_0x5255('0x1f')];var _0x179459=_0x4a3d23?0x0:_0x52e39a[_0x5255('0x1d')];var _0x283c21=_0x4a3d23?_0x4f0720['count']:_0x52e39a[_0x5255('0x1d')]+_0x52e39a['limit'];var _0x47d44c;if(_0x283c21>=_0x31ce63){_0x283c21=_0x31ce63;_0x47d44c=0xc8;}else{_0x47d44c=0xce;}_0x325499[_0x5255('0x1a')](_0x47d44c);return _0x325499[_0x5255('0x20')](_0x5255('0x21'),_0x179459+'-'+_0x283c21+'/'+_0x31ce63)['json'](_0x4f0720);}return null;};}function patchUpdates(_0x41df18){return function(_0x10c9db){try{jsonpatch[_0x5255('0x22')](_0x10c9db,_0x41df18,!![]);}catch(_0x424a20){return BPromise[_0x5255('0x23')](_0x424a20);}return _0x10c9db[_0x5255('0x24')]();};}function saveUpdates(_0x548ca1,_0x1c977f){return function(_0x34270b){if(_0x34270b){return _0x34270b['update'](_0x548ca1)[_0x5255('0x25')](function(_0x2eb033){return _0x2eb033;});}return null;};}function removeEntity(_0x5f3721,_0xd53409){return function(_0xf7c58e){if(_0xf7c58e){return _0xf7c58e[_0x5255('0x26')]()['then'](function(){_0x5f3721[_0x5255('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x418e18,_0xc150dc){return function(_0x4532f3){if(!_0x4532f3){_0x418e18[_0x5255('0x19')](0x194);}return _0x4532f3;};}function handleError(_0x38a0e0,_0x3b6289){_0x3b6289=_0x3b6289||0x1f4;return function(_0x58151e){logger['error'](_0x58151e['stack']);if(_0x58151e['name']){delete _0x58151e['name'];}_0x38a0e0['status'](_0x3b6289)[_0x5255('0x27')](_0x58151e);};}exports['index']=function(_0x1a1d47,_0x44e3c){var _0x26d841={},_0x404527={},_0x5d1d47={'count':0x0,'rows':[]};var _0x10a1e1=_[_0x5255('0x28')](db[_0x5255('0x29')][_0x5255('0x2a')],function(_0x436504){return{'name':_0x436504['fieldName'],'type':_0x436504[_0x5255('0x2b')]['key']};});_0x404527['model']=_[_0x5255('0x28')](_0x10a1e1,_0x5255('0x2c'));_0x404527[_0x5255('0x2d')]=_[_0x5255('0x2e')](_0x1a1d47[_0x5255('0x2d')]);_0x404527[_0x5255('0x2f')]=_[_0x5255('0x30')](_0x404527[_0x5255('0x31')],_0x404527['query']);_0x26d841['attributes']=_[_0x5255('0x30')](_0x404527[_0x5255('0x31')],qs['fields'](_0x1a1d47[_0x5255('0x2d')][_0x5255('0x32')]));_0x26d841[_0x5255('0x33')]=_0x26d841[_0x5255('0x33')][_0x5255('0x34')]?_0x26d841[_0x5255('0x33')]:_0x404527[_0x5255('0x31')];if(!_0x1a1d47[_0x5255('0x2d')][_0x5255('0x35')]('nolimit')){_0x26d841['limit']=qs[_0x5255('0x36')](_0x1a1d47[_0x5255('0x2d')]['limit']);_0x26d841['offset']=qs[_0x5255('0x1d')](_0x1a1d47['query'][_0x5255('0x1d')]);}_0x26d841[_0x5255('0x37')]=qs[_0x5255('0x38')](_0x1a1d47['query'][_0x5255('0x38')]);_0x26d841[_0x5255('0x39')]=qs[_0x5255('0x2f')](_['pick'](_0x1a1d47[_0x5255('0x2d')],_0x404527[_0x5255('0x2f')]),_0x10a1e1);if(_0x1a1d47[_0x5255('0x2d')][_0x5255('0x3a')]){_0x26d841[_0x5255('0x39')]=_[_0x5255('0x3b')](_0x26d841[_0x5255('0x39')],{'$or':_[_0x5255('0x28')](_0x10a1e1,function(_0x3edb20){if(_0x3edb20[_0x5255('0x2b')]!=='VIRTUAL'){var _0x348160={};_0x348160[_0x3edb20[_0x5255('0x2c')]]={'$like':'%'+_0x1a1d47[_0x5255('0x2d')][_0x5255('0x3a')]+'%'};return _0x348160;}})});}_0x26d841=_[_0x5255('0x3b')]({},_0x26d841,_0x1a1d47[_0x5255('0x3c')]);var _0x521fe2={'where':_0x26d841[_0x5255('0x39')]};return db[_0x5255('0x29')][_0x5255('0x1f')](_0x521fe2)[_0x5255('0x25')](function(_0x285a54){_0x5d1d47[_0x5255('0x1f')]=_0x285a54;if(_0x1a1d47[_0x5255('0x2d')][_0x5255('0x3d')]){_0x26d841[_0x5255('0x3e')]=[{'all':!![]}];}return db['SquareRecording'][_0x5255('0x3f')](_0x26d841);})['then'](function(_0x19238e){_0x5d1d47[_0x5255('0x40')]=_0x19238e;return _0x5d1d47;})['then'](respondWithFilteredResult(_0x44e3c,_0x26d841))['catch'](handleError(_0x44e3c,null));};exports['show']=function(_0x53b379,_0x506898){var _0x209fce={'raw':!![],'where':{'id':_0x53b379[_0x5255('0x41')]['id']}},_0x54a28a={};_0x54a28a[_0x5255('0x31')]=_[_0x5255('0x2e')](db[_0x5255('0x29')][_0x5255('0x2a')]);_0x54a28a[_0x5255('0x2d')]=_[_0x5255('0x2e')](_0x53b379[_0x5255('0x2d')]);_0x54a28a[_0x5255('0x2f')]=_[_0x5255('0x30')](_0x54a28a[_0x5255('0x31')],_0x54a28a[_0x5255('0x2d')]);_0x209fce[_0x5255('0x33')]=_['intersection'](_0x54a28a[_0x5255('0x31')],qs[_0x5255('0x32')](_0x53b379[_0x5255('0x2d')]['fields']));_0x209fce[_0x5255('0x33')]=_0x209fce['attributes']['length']?_0x209fce[_0x5255('0x33')]:_0x54a28a[_0x5255('0x31')];if(_0x53b379[_0x5255('0x2d')][_0x5255('0x3d')]){_0x209fce[_0x5255('0x3e')]=[{'all':!![]}];}_0x209fce=_[_0x5255('0x3b')]({},_0x209fce,_0x53b379[_0x5255('0x3c')]);return db['SquareRecording'][_0x5255('0x42')](_0x209fce)['then'](handleEntityNotFound(_0x506898,null))[_0x5255('0x25')](respondWithResult(_0x506898,null))[_0x5255('0x43')](handleError(_0x506898,null));};exports[_0x5255('0x44')]=function(_0x1c8dd7,_0x20df4a){return db[_0x5255('0x29')][_0x5255('0x44')](_0x1c8dd7[_0x5255('0x45')],{})['then'](respondWithResult(_0x20df4a,0xc9))['catch'](handleError(_0x20df4a,null));};exports[_0x5255('0x46')]=function(_0x429080,_0x466b0c){if(_0x429080['body']['id']){delete _0x429080['body']['id'];}return db[_0x5255('0x29')][_0x5255('0x42')]({'where':{'id':_0x429080[_0x5255('0x41')]['id']}})['then'](handleEntityNotFound(_0x466b0c,null))[_0x5255('0x25')](saveUpdates(_0x429080[_0x5255('0x45')],null))[_0x5255('0x25')](respondWithResult(_0x466b0c,null))['catch'](handleError(_0x466b0c,null));};exports['download']=function(_0x6a5dbb,_0x4abb8f,_0x300693){var _0xb23286=require(_0x5255('0x47'));var _0x5f2ea6=![];var _0x782c55={};if(_0x6a5dbb[_0x5255('0x2d')][_0x5255('0x2b')]&&_0x6a5dbb['query']['type']===_0x5255('0x48')){_0x782c55[_0x5255('0x48')]=_0x6a5dbb[_0x5255('0x41')]['id'];}else{_0x782c55['id']=_0x6a5dbb[_0x5255('0x41')]['id'];}return db[_0x5255('0x29')][_0x5255('0x42')]({'where':_0x782c55,'attributes':['id',_0x5255('0x49'),_0x5255('0x4a')],'raw':!![]})[_0x5255('0x25')](handleEntityNotFound(_0x4abb8f,null))['then'](function(_0x50ecb4){if(_0x50ecb4){var _0x1d61f9=_0x50ecb4[_0x5255('0x49')];var _0x46126b=util[_0x5255('0x4b')]('%s.cypher',_0x1d61f9);if(fs[_0x5255('0x4c')](_0x46126b)){_0x5f2ea6=!![];return _0xb23286['decryptFile'](_0x46126b,_0x1d61f9,config[_0x5255('0x4d')][_0x5255('0x4e')])[_0x5255('0x25')](function(){return _0x50ecb4;});}return _0x50ecb4;}})[_0x5255('0x25')](function(_0x41269b){if(_0x41269b){var _0x418b5b=_0x41269b['savePath'];if(!fs['existsSync'](_0x418b5b)){throw new db[(_0x5255('0x4f'))][(_0x5255('0x50'))](_0x5255('0x51'));}if(_0x41269b[_0x5255('0x4a')]){return _0x4abb8f[_0x5255('0x52')](_0x418b5b,_0x41269b[_0x5255('0x4a')]+path['extname'](_0x418b5b),function(){if(_0x5f2ea6){fs[_0x5255('0x53')](_0x418b5b);}});}else{return _0x4abb8f[_0x5255('0x52')](_0x418b5b,function(_0x186caf){if(_0x5f2ea6){fs[_0x5255('0x53')](_0x418b5b);}});}}})[_0x5255('0x43')](function(_0x3d4fdd){if(_0x3d4fdd['message']===_0x5255('0x51')){_0x4abb8f[_0x5255('0x1a')](0x194)[_0x5255('0x27')](_0x5255('0x54'));}else{return handleError(_0x4abb8f,null);}});};exports[_0x5255('0x26')]=function(_0x448170,_0x5357c0){return db[_0x5255('0x29')][_0x5255('0x42')]({'where':{'id':_0x448170[_0x5255('0x41')]['id']}})[_0x5255('0x25')](function(_0x5ed179){if(_[_0x5255('0x55')](_0x5ed179)){throw new ReferenceError(_0x5255('0x56'));}return _0x5ed179;})[_0x5255('0x25')](function(_0x50514b){var _0xd9bae8=_0x50514b[_0x5255('0x49')];logger[_0x5255('0x57')]('cancellazione\x20fisica\x20documento\x20%s',_0xd9bae8);if(!_[_0x5255('0x55')](_0x50514b['savePath'])&&fs[_0x5255('0x4c')](_0xd9bae8)){logger[_0x5255('0x57')](_0x5255('0x58')+_0xd9bae8+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x5255('0x59')](_0xd9bae8);}_0xd9bae8=_0xd9bae8+_0x5255('0x5a');if(!_[_0x5255('0x55')](_0x50514b['savePath'])&&fs[_0x5255('0x4c')](_0xd9bae8)){logger[_0x5255('0x57')](_0x5255('0x58')+_0xd9bae8+_0x5255('0x5b'));fs[_0x5255('0x59')](_0xd9bae8);}return _0x50514b;})['then'](function(_0x186a6a){if(!_0x186a6a)throw new InternalError();return _0x186a6a[_0x5255('0x26')]();})[_0x5255('0x25')](function(){_0x5357c0[_0x5255('0x1a')](0xcc)[_0x5255('0x1b')]();})[_0x5255('0x43')](handleError(_0x5357c0,null));};
\ No newline at end of file
index ed43762..b2c649f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1d3=['../../config/environment','define','SquareRecording','square_recordings','lodash','util','../../config/logger','api','moment','request-promise','rimraf'];(function(_0x43d11d,_0xccff91){var _0x38cd08=function(_0x131ae2){while(--_0x131ae2){_0x43d11d['push'](_0x43d11d['shift']());}};_0x38cd08(++_0xccff91);}(_0xe1d3,0x159));var _0x3e1d=function(_0x46a042,_0x80911f){_0x46a042=_0x46a042-0x0;var _0x17fbc6=_0xe1d3[_0x46a042];return _0x17fbc6;};'use strict';var _=require(_0x3e1d('0x0'));var util=require(_0x3e1d('0x1'));var logger=require(_0x3e1d('0x2'))(_0x3e1d('0x3'));var moment=require(_0x3e1d('0x4'));var BPromise=require('bluebird');var rp=require(_0x3e1d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3e1d('0x6'));var config=require(_0x3e1d('0x7'));var attributes=require('./squareRecording.attributes');module['exports']=function(_0x4594cf,_0x44d676){return _0x4594cf[_0x3e1d('0x8')](_0x3e1d('0x9'),attributes,{'tableName':_0x3e1d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2f4a=['define','SquareRecording','square_recordings','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x4261bd,_0xb3ed37){var _0x5c9a4f=function(_0x3d3ab4){while(--_0x3d3ab4){_0x4261bd['push'](_0x4261bd['shift']());}};_0x5c9a4f(++_0xb3ed37);}(_0x2f4a,0x8f));var _0xa2f4=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0x2f4a[_0x5447fd];return _0x15b28a;};'use strict';var _=require(_0xa2f4('0x0'));var util=require(_0xa2f4('0x1'));var logger=require(_0xa2f4('0x2'))(_0xa2f4('0x3'));var moment=require(_0xa2f4('0x4'));var BPromise=require(_0xa2f4('0x5'));var rp=require(_0xa2f4('0x6'));var fs=require('fs');var path=require(_0xa2f4('0x7'));var rimraf=require(_0xa2f4('0x8'));var config=require(_0xa2f4('0x9'));var attributes=require('./squareRecording.attributes');module[_0xa2f4('0xa')]=function(_0x3d4545,_0x37ccfa){return _0x3d4545[_0xa2f4('0xb')](_0xa2f4('0xc'),attributes,{'tableName':_0xa2f4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c3a4140..1578bd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1707=['code','message','result','catch','CreateSquareRecording','SquareRecording','create','body','options','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareRecording,\x20%s,\x20%s','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x26f418,_0x1549a9){var _0x44901f=function(_0x223777){while(--_0x223777){_0x26f418['push'](_0x26f418['shift']());}};_0x44901f(++_0x1549a9);}(_0x1707,0x1ea));var _0x7170=function(_0x2c8314,_0x3932bc){_0x2c8314=_0x2c8314-0x0;var _0x5df49f=_0x1707[_0x2c8314];return _0x5df49f;};'use strict';var _=require(_0x7170('0x0'));var util=require(_0x7170('0x1'));var moment=require(_0x7170('0x2'));var BPromise=require(_0x7170('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7170('0x4'));var db=require(_0x7170('0x5'))['db'];var utils=require(_0x7170('0x6'));var logger=require(_0x7170('0x7'))(_0x7170('0x8'));var config=require(_0x7170('0x9'));var jayson=require(_0x7170('0xa'));var client=jayson[_0x7170('0xb')][_0x7170('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x18c55b,_0x376051,_0x44c616){return new BPromise(function(_0x4ae2bc,_0x522c5e){return client[_0x7170('0xd')](_0x18c55b,_0x44c616)[_0x7170('0xe')](function(_0x5701a9){logger[_0x7170('0xf')](_0x7170('0x10'),_0x376051,'request\x20sent');logger['debug'](_0x7170('0x11'),_0x376051,'request\x20sent',JSON[_0x7170('0x12')](_0x5701a9));if(_0x5701a9['error']){if(_0x5701a9[_0x7170('0x13')][_0x7170('0x14')]===0x1f4){logger[_0x7170('0x13')](_0x7170('0x10'),_0x376051,_0x5701a9[_0x7170('0x13')][_0x7170('0x15')]);return _0x522c5e(_0x5701a9['error'][_0x7170('0x15')]);}logger[_0x7170('0x13')](_0x7170('0x10'),_0x376051,_0x5701a9[_0x7170('0x13')]['message']);return _0x4ae2bc(_0x5701a9[_0x7170('0x13')][_0x7170('0x15')]);}else{logger[_0x7170('0xf')](_0x7170('0x10'),_0x376051,'request\x20sent');_0x4ae2bc(_0x5701a9[_0x7170('0x16')][_0x7170('0x15')]);}})[_0x7170('0x17')](function(_0x84bd46){logger[_0x7170('0x13')](_0x7170('0x10'),_0x376051,_0x84bd46);_0x522c5e(_0x84bd46);});});}exports[_0x7170('0x18')]=function(_0xa4160c){var _0x152ec5=this;return new Promise(function(_0x55e7d5,_0x42228e){return db[_0x7170('0x19')][_0x7170('0x1a')](_0xa4160c[_0x7170('0x1b')],{'raw':_0xa4160c[_0x7170('0x1c')]?_0xa4160c[_0x7170('0x1c')][_0x7170('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0xde0f3f){logger[_0x7170('0xf')]('CreateSquareRecording',_0xa4160c);logger['debug'](_0x7170('0x18'),_0xa4160c,JSON['stringify'](_0xde0f3f));_0x55e7d5(_0xde0f3f);})[_0x7170('0x17')](function(_0x1641cf){logger[_0x7170('0x13')](_0x7170('0x18'),_0x1641cf[_0x7170('0x15')],_0xa4160c);_0x42228e(_0x152ec5[_0x7170('0x13')](0x1f4,_0x1641cf['message']));});});};
\ No newline at end of file
+var _0xee24=['code','message','catch','CreateSquareRecording','SquareRecording','body','options','debug','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2e5187,_0x37db01){var _0x3bb107=function(_0x205291){while(--_0x205291){_0x2e5187['push'](_0x2e5187['shift']());}};_0x3bb107(++_0x37db01);}(_0xee24,0x14c));var _0x4ee2=function(_0xaf326d,_0xc3a37c){_0xaf326d=_0xaf326d-0x0;var _0x4aacda=_0xee24[_0xaf326d];return _0x4aacda;};'use strict';var _=require(_0x4ee2('0x0'));var util=require('util');var moment=require(_0x4ee2('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4ee2('0x2'));var db=require(_0x4ee2('0x3'))['db'];var utils=require(_0x4ee2('0x4'));var logger=require(_0x4ee2('0x5'))(_0x4ee2('0x6'));var config=require(_0x4ee2('0x7'));var jayson=require(_0x4ee2('0x8'));var client=jayson[_0x4ee2('0x9')][_0x4ee2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2b7b27,_0x58621d,_0x1c49f1){return new BPromise(function(_0x4d2763,_0x509597){return client[_0x4ee2('0xb')](_0x2b7b27,_0x1c49f1)[_0x4ee2('0xc')](function(_0x355345){logger[_0x4ee2('0xd')](_0x4ee2('0xe'),_0x58621d,_0x4ee2('0xf'));logger['debug'](_0x4ee2('0x10'),_0x58621d,'request\x20sent',JSON[_0x4ee2('0x11')](_0x355345));if(_0x355345['error']){if(_0x355345[_0x4ee2('0x12')][_0x4ee2('0x13')]===0x1f4){logger['error'](_0x4ee2('0xe'),_0x58621d,_0x355345[_0x4ee2('0x12')]['message']);return _0x509597(_0x355345['error'][_0x4ee2('0x14')]);}logger['error'](_0x4ee2('0xe'),_0x58621d,_0x355345[_0x4ee2('0x12')][_0x4ee2('0x14')]);return _0x4d2763(_0x355345[_0x4ee2('0x12')][_0x4ee2('0x14')]);}else{logger[_0x4ee2('0xd')]('SquareRecording,\x20%s,\x20%s',_0x58621d,'request\x20sent');_0x4d2763(_0x355345['result'][_0x4ee2('0x14')]);}})[_0x4ee2('0x15')](function(_0x2de35e){logger[_0x4ee2('0x12')](_0x4ee2('0xe'),_0x58621d,_0x2de35e);_0x509597(_0x2de35e);});});}exports[_0x4ee2('0x16')]=function(_0x116323){var _0x1592ee=this;return new Promise(function(_0x484093,_0x57b486){return db[_0x4ee2('0x17')]['create'](_0x116323[_0x4ee2('0x18')],{'raw':_0x116323[_0x4ee2('0x19')]?_0x116323[_0x4ee2('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x4ee2('0xc')](function(_0x2c0e4c){logger['info'](_0x4ee2('0x16'),_0x116323);logger[_0x4ee2('0x1a')]('CreateSquareRecording',_0x116323,JSON['stringify'](_0x2c0e4c));_0x484093(_0x2c0e4c);})[_0x4ee2('0x15')](function(_0x1c3a78){logger[_0x4ee2('0x12')](_0x4ee2('0x16'),_0x1c3a78['message'],_0x116323);_0x57b486(_0x1592ee[_0x4ee2('0x12')](0x1f4,_0x1c3a78['message']));});});};
\ No newline at end of file
index 25555fa..7c9648e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x1280a1,_0x5967cd){var _0x240d6f=function(_0x480ee9){while(--_0x480ee9){_0x1280a1['push'](_0x1280a1['shift']());}};_0x240d6f(++_0x5967cd);}(_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'));var controller=require('./squareReport.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
+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(_0x40b7ea,_0x550490){var _0x2627ec=function(_0x78fd8e){while(--_0x78fd8e){_0x40b7ea['push'](_0x40b7ea['shift']());}};_0x2627ec(++_0x550490);}(_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'));var controller=require('./squareReport.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 7ac65fe..0eb4636 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c52=['exports','STRING','DATE','sequelize'];(function(_0x16de68,_0x33d7ff){var _0x1c277e=function(_0x1d8549){while(--_0x1d8549){_0x16de68['push'](_0x16de68['shift']());}};_0x1c277e(++_0x33d7ff);}(_0x2c52,0xbf));var _0x22c5=function(_0x4ad443,_0x370b0f){_0x4ad443=_0x4ad443-0x0;var _0x4e4b0f=_0x2c52[_0x4ad443];return _0x4e4b0f;};'use strict';var Sequelize=require(_0x22c5('0x0'));module[_0x22c5('0x1')]={'network':{'type':Sequelize[_0x22c5('0x2')]},'network_script':{'type':Sequelize[_0x22c5('0x2')]},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x22c5('0x2')]},'language':{'type':Sequelize[_0x22c5('0x2')]},'type':{'type':Sequelize[_0x22c5('0x2')]},'uniqueid':{'type':Sequelize[_0x22c5('0x2')]},'version':{'type':Sequelize[_0x22c5('0x2')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize[_0x22c5('0x2')]},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize[_0x22c5('0x2')]},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x22c5('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize[_0x22c5('0x2')]},'accountcode':{'type':Sequelize[_0x22c5('0x2')]},'threadid':{'type':Sequelize[_0x22c5('0x2')]},'project_name':{'type':Sequelize[_0x22c5('0x2')]},'joinAt':{'type':Sequelize[_0x22c5('0x3')]},'leaveAt':{'type':Sequelize[_0x22c5('0x3')]},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x3a35=['DATE','BOOLEAN','exports','STRING'];(function(_0x3ea74b,_0x5a5a3f){var _0x2edf17=function(_0x340ae3){while(--_0x340ae3){_0x3ea74b['push'](_0x3ea74b['shift']());}};_0x2edf17(++_0x5a5a3f);}(_0x3a35,0x1a2));var _0x53a3=function(_0x4d07cc,_0x587613){_0x4d07cc=_0x4d07cc-0x0;var _0x42de3b=_0x3a35[_0x4d07cc];return _0x42de3b;};'use strict';var Sequelize=require('sequelize');module[_0x53a3('0x0')]={'network':{'type':Sequelize[_0x53a3('0x1')]},'network_script':{'type':Sequelize[_0x53a3('0x1')]},'request':{'type':Sequelize[_0x53a3('0x1')]},'channel':{'type':Sequelize[_0x53a3('0x1')]},'language':{'type':Sequelize[_0x53a3('0x1')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x53a3('0x1')]},'version':{'type':Sequelize[_0x53a3('0x1')]},'callerid':{'type':Sequelize[_0x53a3('0x1')]},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize[_0x53a3('0x1')]},'callingani2':{'type':Sequelize[_0x53a3('0x1')]},'callington':{'type':Sequelize[_0x53a3('0x1')]},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize[_0x53a3('0x1')]},'context':{'type':Sequelize[_0x53a3('0x1')]},'extension':{'type':Sequelize[_0x53a3('0x1')]},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize[_0x53a3('0x1')]},'accountcode':{'type':Sequelize['STRING']},'threadid':{'type':Sequelize[_0x53a3('0x1')]},'project_name':{'type':Sequelize[_0x53a3('0x1')]},'joinAt':{'type':Sequelize[_0x53a3('0x2')]},'leaveAt':{'type':Sequelize[_0x53a3('0x2')]},'bot':{'type':Sequelize[_0x53a3('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 38c0dce..1888de6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46d5=['rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','SquareReport','includeAll','include','catch','params','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','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','offset','undefined','count','limit','set','json','apply','save','update','then','end','error','name','send','index','map'];(function(_0x2a6596,_0x3e2807){var _0x5ef636=function(_0x21e5cc){while(--_0x21e5cc){_0x2a6596['push'](_0x2a6596['shift']());}};_0x5ef636(++_0x3e2807);}(_0x46d5,0x67));var _0x546d=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x46d5[_0x167cc1];return _0x10bc4b;};'use strict';var emlformat=require(_0x546d('0x0'));var rimraf=require(_0x546d('0x1'));var zipdir=require(_0x546d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x546d('0x3'));var moment=require(_0x546d('0x4'));var BPromise=require(_0x546d('0x5'));var Mustache=require(_0x546d('0x6'));var util=require(_0x546d('0x7'));var path=require(_0x546d('0x8'));var sox=require('sox');var csv=require(_0x546d('0x9'));var ejs=require(_0x546d('0xa'));var fs=require('fs');var fs_extra=require(_0x546d('0xb'));var _=require(_0x546d('0xc'));var squel=require(_0x546d('0xd'));var crypto=require(_0x546d('0xe'));var jsforce=require(_0x546d('0xf'));var deskjs=require(_0x546d('0x10'));var toCsv=require(_0x546d('0x9'));var querystring=require(_0x546d('0x11'));var Papa=require('papaparse');var Redis=require(_0x546d('0x12'));var authService=require(_0x546d('0x13'));var qs=require(_0x546d('0x14'));var as=require(_0x546d('0x15'));var hardwareService=require(_0x546d('0x16'));var logger=require(_0x546d('0x17'))('api');var utils=require(_0x546d('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x546d('0x19'));var db=require(_0x546d('0x1a'))['db'];function respondWithStatusCode(_0x377f9c,_0x412986){_0x412986=_0x412986||0xcc;return function(_0x3789c3){if(_0x3789c3){return _0x377f9c[_0x546d('0x1b')](_0x412986);}return _0x377f9c[_0x546d('0x1c')](_0x412986)['end']();};}function respondWithResult(_0x525d6b,_0x5e40cd){_0x5e40cd=_0x5e40cd||0xc8;return function(_0x56e669){if(_0x56e669){return _0x525d6b['status'](_0x5e40cd)['json'](_0x56e669);}};}function respondWithFilteredResult(_0x255bb1,_0x5b916a){return function(_0xfd37a){if(_0xfd37a){var _0x137a5f=typeof _0x5b916a[_0x546d('0x1d')]===_0x546d('0x1e')&&typeof _0x5b916a['limit']===_0x546d('0x1e');var _0x4fc53e=_0xfd37a[_0x546d('0x1f')];var _0xb5da0a=_0x137a5f?0x0:_0x5b916a[_0x546d('0x1d')];var _0x585f64=_0x137a5f?_0xfd37a[_0x546d('0x1f')]:_0x5b916a[_0x546d('0x1d')]+_0x5b916a[_0x546d('0x20')];var _0x2f2b63;if(_0x585f64>=_0x4fc53e){_0x585f64=_0x4fc53e;_0x2f2b63=0xc8;}else{_0x2f2b63=0xce;}_0x255bb1[_0x546d('0x1c')](_0x2f2b63);return _0x255bb1[_0x546d('0x21')]('Content-Range',_0xb5da0a+'-'+_0x585f64+'/'+_0x4fc53e)[_0x546d('0x22')](_0xfd37a);}return null;};}function patchUpdates(_0x1a32e1){return function(_0x31b650){try{jsonpatch[_0x546d('0x23')](_0x31b650,_0x1a32e1,!![]);}catch(_0x57ec6d){return BPromise['reject'](_0x57ec6d);}return _0x31b650[_0x546d('0x24')]();};}function saveUpdates(_0x95b56f,_0x588774){return function(_0x41b7d2){if(_0x41b7d2){return _0x41b7d2[_0x546d('0x25')](_0x95b56f)[_0x546d('0x26')](function(_0x549318){return _0x549318;});}return null;};}function removeEntity(_0x3a604f,_0x1f3f14){return function(_0x16118a){if(_0x16118a){return _0x16118a['destroy']()[_0x546d('0x26')](function(){_0x3a604f[_0x546d('0x1c')](0xcc)[_0x546d('0x27')]();});}};}function handleEntityNotFound(_0x49cea6,_0xc30e4e){return function(_0x16e739){if(!_0x16e739){_0x49cea6[_0x546d('0x1b')](0x194);}return _0x16e739;};}function handleError(_0x1a6693,_0x462120){_0x462120=_0x462120||0x1f4;return function(_0x2606c4){logger[_0x546d('0x28')](_0x2606c4['stack']);if(_0x2606c4[_0x546d('0x29')]){delete _0x2606c4[_0x546d('0x29')];}_0x1a6693[_0x546d('0x1c')](_0x462120)[_0x546d('0x2a')](_0x2606c4);};}exports[_0x546d('0x2b')]=function(_0x4195f1,_0x14658a){var _0x583119={},_0x3b0ad1={},_0x5958d1={'count':0x0,'rows':[]};var _0x633bab=_[_0x546d('0x2c')](db['SquareReport'][_0x546d('0x2d')],function(_0x3dbe76){return{'name':_0x3dbe76['fieldName'],'type':_0x3dbe76[_0x546d('0x2e')][_0x546d('0x2f')]};});_0x3b0ad1[_0x546d('0x30')]=_[_0x546d('0x2c')](_0x633bab,'name');_0x3b0ad1['query']=_[_0x546d('0x31')](_0x4195f1[_0x546d('0x32')]);_0x3b0ad1[_0x546d('0x33')]=_[_0x546d('0x34')](_0x3b0ad1[_0x546d('0x30')],_0x3b0ad1['query']);_0x583119[_0x546d('0x35')]=_[_0x546d('0x34')](_0x3b0ad1[_0x546d('0x30')],qs[_0x546d('0x36')](_0x4195f1[_0x546d('0x32')][_0x546d('0x36')]));_0x583119[_0x546d('0x35')]=_0x583119[_0x546d('0x35')][_0x546d('0x37')]?_0x583119[_0x546d('0x35')]:_0x3b0ad1[_0x546d('0x30')];if(!_0x4195f1[_0x546d('0x32')][_0x546d('0x38')](_0x546d('0x39'))){_0x583119[_0x546d('0x20')]=qs['limit'](_0x4195f1[_0x546d('0x32')][_0x546d('0x20')]);_0x583119['offset']=qs[_0x546d('0x1d')](_0x4195f1[_0x546d('0x32')]['offset']);}_0x583119['order']=qs[_0x546d('0x3a')](_0x4195f1[_0x546d('0x32')][_0x546d('0x3a')]);_0x583119[_0x546d('0x3b')]=qs[_0x546d('0x33')](_[_0x546d('0x3c')](_0x4195f1[_0x546d('0x32')],_0x3b0ad1[_0x546d('0x33')]),_0x633bab);if(_0x4195f1[_0x546d('0x32')][_0x546d('0x3d')]){_0x583119[_0x546d('0x3b')]=_[_0x546d('0x3e')](_0x583119[_0x546d('0x3b')],{'$or':_[_0x546d('0x2c')](_0x633bab,function(_0x23ea59){if(_0x23ea59[_0x546d('0x2e')]!==_0x546d('0x3f')){var _0x439f79={};_0x439f79[_0x23ea59['name']]={'$like':'%'+_0x4195f1[_0x546d('0x32')][_0x546d('0x3d')]+'%'};return _0x439f79;}})});}_0x583119=_[_0x546d('0x3e')]({},_0x583119,_0x4195f1[_0x546d('0x40')]);var _0x211728={'where':_0x583119[_0x546d('0x3b')]};return db[_0x546d('0x41')]['count'](_0x211728)[_0x546d('0x26')](function(_0x386716){_0x5958d1[_0x546d('0x1f')]=_0x386716;if(_0x4195f1[_0x546d('0x32')][_0x546d('0x42')]){_0x583119[_0x546d('0x43')]=[{'all':!![]}];}return db['SquareReport']['findAll'](_0x583119);})[_0x546d('0x26')](function(_0x3f49a3){_0x5958d1['rows']=_0x3f49a3;return _0x5958d1;})[_0x546d('0x26')](respondWithFilteredResult(_0x14658a,_0x583119))[_0x546d('0x44')](handleError(_0x14658a,null));};exports['show']=function(_0x2cf4ee,_0x2352e8){var _0x3a7547={'raw':!![],'where':{'id':_0x2cf4ee[_0x546d('0x45')]['id']}},_0x2febf9={};_0x2febf9[_0x546d('0x30')]=_['keys'](db[_0x546d('0x41')][_0x546d('0x2d')]);_0x2febf9[_0x546d('0x32')]=_[_0x546d('0x31')](_0x2cf4ee[_0x546d('0x32')]);_0x2febf9['filters']=_[_0x546d('0x34')](_0x2febf9[_0x546d('0x30')],_0x2febf9[_0x546d('0x32')]);_0x3a7547[_0x546d('0x35')]=_[_0x546d('0x34')](_0x2febf9[_0x546d('0x30')],qs[_0x546d('0x36')](_0x2cf4ee[_0x546d('0x32')]['fields']));_0x3a7547['attributes']=_0x3a7547[_0x546d('0x35')]['length']?_0x3a7547[_0x546d('0x35')]:_0x2febf9[_0x546d('0x30')];if(_0x2cf4ee[_0x546d('0x32')][_0x546d('0x42')]){_0x3a7547['include']=[{'all':!![]}];}_0x3a7547=_['merge']({},_0x3a7547,_0x2cf4ee[_0x546d('0x40')]);return db[_0x546d('0x41')][_0x546d('0x46')](_0x3a7547)[_0x546d('0x26')](handleEntityNotFound(_0x2352e8,null))[_0x546d('0x26')](respondWithResult(_0x2352e8,null))[_0x546d('0x44')](handleError(_0x2352e8,null));};exports[_0x546d('0x47')]=function(_0x1bb458,_0x33d906){return db['SquareReport'][_0x546d('0x47')](_0x1bb458['body'],{})[_0x546d('0x26')](respondWithResult(_0x33d906,0xc9))[_0x546d('0x44')](handleError(_0x33d906,null));};exports[_0x546d('0x25')]=function(_0x2bdd4f,_0x167e25){if(_0x2bdd4f[_0x546d('0x48')]['id']){delete _0x2bdd4f[_0x546d('0x48')]['id'];}return db[_0x546d('0x41')][_0x546d('0x46')]({'where':{'id':_0x2bdd4f[_0x546d('0x45')]['id']}})[_0x546d('0x26')](handleEntityNotFound(_0x167e25,null))[_0x546d('0x26')](saveUpdates(_0x2bdd4f[_0x546d('0x48')],null))[_0x546d('0x26')](respondWithResult(_0x167e25,null))[_0x546d('0x44')](handleError(_0x167e25,null));};exports['destroy']=function(_0x389472,_0x5b033b){return db['SquareReport'][_0x546d('0x46')]({'where':{'id':_0x389472[_0x546d('0x45')]['id']}})['then'](handleEntityNotFound(_0x5b033b,null))[_0x546d('0x26')](removeEntity(_0x5b033b,null))[_0x546d('0x44')](handleError(_0x5b033b,null));};exports[_0x546d('0x49')]=function(_0xaa14d6,_0x4b9257){return db[_0x546d('0x41')][_0x546d('0x49')]()[_0x546d('0x26')](respondWithResult(_0x4b9257,null))[_0x546d('0x44')](handleError(_0x4b9257,null));};
\ No newline at end of file
+var _0x2a68=['merge','type','VIRTUAL','filter','options','includeAll','SquareReport','findAll','catch','show','params','keys','rawAttributes','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','json','reject','save','update','then','error','name','map','fieldName','key','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','pick','where'];(function(_0x2fbb3a,_0x509ef4){var _0xc7419f=function(_0x3d0595){while(--_0x3d0595){_0x2fbb3a['push'](_0x2fbb3a['shift']());}};_0xc7419f(++_0x509ef4);}(_0x2a68,0xe7));var _0x82a6=function(_0x339ded,_0xb38a57){_0x339ded=_0x339ded-0x0;var _0x37f8dc=_0x2a68[_0x339ded];return _0x37f8dc;};'use strict';var emlformat=require(_0x82a6('0x0'));var rimraf=require(_0x82a6('0x1'));var zipdir=require(_0x82a6('0x2'));var jsonpatch=require(_0x82a6('0x3'));var rp=require(_0x82a6('0x4'));var moment=require(_0x82a6('0x5'));var BPromise=require(_0x82a6('0x6'));var Mustache=require(_0x82a6('0x7'));var util=require(_0x82a6('0x8'));var path=require(_0x82a6('0x9'));var sox=require(_0x82a6('0xa'));var csv=require(_0x82a6('0xb'));var ejs=require(_0x82a6('0xc'));var fs=require('fs');var fs_extra=require(_0x82a6('0xd'));var _=require('lodash');var squel=require(_0x82a6('0xe'));var crypto=require(_0x82a6('0xf'));var jsforce=require(_0x82a6('0x10'));var deskjs=require(_0x82a6('0x11'));var toCsv=require('to-csv');var querystring=require(_0x82a6('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x82a6('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x82a6('0x14'));var utils=require('../../config/utils');var config=require(_0x82a6('0x15'));var licenseUtil=require(_0x82a6('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x131408,_0x21f63f){_0x21f63f=_0x21f63f||0xcc;return function(_0xebbc55){if(_0xebbc55){return _0x131408[_0x82a6('0x17')](_0x21f63f);}return _0x131408[_0x82a6('0x18')](_0x21f63f)[_0x82a6('0x19')]();};}function respondWithResult(_0x138fba,_0x2f57c5){_0x2f57c5=_0x2f57c5||0xc8;return function(_0x1187ff){if(_0x1187ff){return _0x138fba['status'](_0x2f57c5)['json'](_0x1187ff);}};}function respondWithFilteredResult(_0x1cf377,_0x2aa7aa){return function(_0x193230){if(_0x193230){var _0x305a84=typeof _0x2aa7aa[_0x82a6('0x1a')]===_0x82a6('0x1b')&&typeof _0x2aa7aa[_0x82a6('0x1c')]==='undefined';var _0x5c6514=_0x193230[_0x82a6('0x1d')];var _0x49a712=_0x305a84?0x0:_0x2aa7aa[_0x82a6('0x1a')];var _0x87ce4a=_0x305a84?_0x193230[_0x82a6('0x1d')]:_0x2aa7aa[_0x82a6('0x1a')]+_0x2aa7aa[_0x82a6('0x1c')];var _0x420b42;if(_0x87ce4a>=_0x5c6514){_0x87ce4a=_0x5c6514;_0x420b42=0xc8;}else{_0x420b42=0xce;}_0x1cf377[_0x82a6('0x18')](_0x420b42);return _0x1cf377[_0x82a6('0x1e')]('Content-Range',_0x49a712+'-'+_0x87ce4a+'/'+_0x5c6514)[_0x82a6('0x1f')](_0x193230);}return null;};}function patchUpdates(_0x31abd1){return function(_0x1e6807){try{jsonpatch['apply'](_0x1e6807,_0x31abd1,!![]);}catch(_0x3de1fe){return BPromise[_0x82a6('0x20')](_0x3de1fe);}return _0x1e6807[_0x82a6('0x21')]();};}function saveUpdates(_0x56d09c,_0x28a3cb){return function(_0x41c35c){if(_0x41c35c){return _0x41c35c[_0x82a6('0x22')](_0x56d09c)[_0x82a6('0x23')](function(_0x40add0){return _0x40add0;});}return null;};}function removeEntity(_0x1fe205,_0x5ce24f){return function(_0x3cf1b4){if(_0x3cf1b4){return _0x3cf1b4['destroy']()[_0x82a6('0x23')](function(){_0x1fe205[_0x82a6('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x423e34,_0x4698e0){return function(_0x427b5c){if(!_0x427b5c){_0x423e34[_0x82a6('0x17')](0x194);}return _0x427b5c;};}function handleError(_0x41c710,_0x1eb3a9){_0x1eb3a9=_0x1eb3a9||0x1f4;return function(_0x14abbe){logger[_0x82a6('0x24')](_0x14abbe['stack']);if(_0x14abbe[_0x82a6('0x25')]){delete _0x14abbe[_0x82a6('0x25')];}_0x41c710[_0x82a6('0x18')](_0x1eb3a9)['send'](_0x14abbe);};}exports['index']=function(_0x42b934,_0x5151e6){var _0x1cb13b={},_0x40ff81={},_0x280ec1={'count':0x0,'rows':[]};var _0x4c1c9d=_[_0x82a6('0x26')](db['SquareReport']['rawAttributes'],function(_0x1af3b9){return{'name':_0x1af3b9[_0x82a6('0x27')],'type':_0x1af3b9['type'][_0x82a6('0x28')]};});_0x40ff81['model']=_[_0x82a6('0x26')](_0x4c1c9d,'name');_0x40ff81[_0x82a6('0x29')]=_['keys'](_0x42b934['query']);_0x40ff81[_0x82a6('0x2a')]=_[_0x82a6('0x2b')](_0x40ff81[_0x82a6('0x2c')],_0x40ff81[_0x82a6('0x29')]);_0x1cb13b[_0x82a6('0x2d')]=_[_0x82a6('0x2b')](_0x40ff81['model'],qs['fields'](_0x42b934[_0x82a6('0x29')][_0x82a6('0x2e')]));_0x1cb13b['attributes']=_0x1cb13b[_0x82a6('0x2d')][_0x82a6('0x2f')]?_0x1cb13b[_0x82a6('0x2d')]:_0x40ff81[_0x82a6('0x2c')];if(!_0x42b934[_0x82a6('0x29')]['hasOwnProperty'](_0x82a6('0x30'))){_0x1cb13b[_0x82a6('0x1c')]=qs[_0x82a6('0x1c')](_0x42b934[_0x82a6('0x29')][_0x82a6('0x1c')]);_0x1cb13b[_0x82a6('0x1a')]=qs[_0x82a6('0x1a')](_0x42b934[_0x82a6('0x29')][_0x82a6('0x1a')]);}_0x1cb13b[_0x82a6('0x31')]=qs[_0x82a6('0x32')](_0x42b934[_0x82a6('0x29')][_0x82a6('0x32')]);_0x1cb13b['where']=qs[_0x82a6('0x2a')](_[_0x82a6('0x33')](_0x42b934[_0x82a6('0x29')],_0x40ff81[_0x82a6('0x2a')]),_0x4c1c9d);if(_0x42b934['query']['filter']){_0x1cb13b[_0x82a6('0x34')]=_[_0x82a6('0x35')](_0x1cb13b[_0x82a6('0x34')],{'$or':_[_0x82a6('0x26')](_0x4c1c9d,function(_0x1ec039){if(_0x1ec039[_0x82a6('0x36')]!==_0x82a6('0x37')){var _0x3211fb={};_0x3211fb[_0x1ec039[_0x82a6('0x25')]]={'$like':'%'+_0x42b934[_0x82a6('0x29')][_0x82a6('0x38')]+'%'};return _0x3211fb;}})});}_0x1cb13b=_[_0x82a6('0x35')]({},_0x1cb13b,_0x42b934[_0x82a6('0x39')]);var _0x5f4a17={'where':_0x1cb13b[_0x82a6('0x34')]};return db['SquareReport'][_0x82a6('0x1d')](_0x5f4a17)[_0x82a6('0x23')](function(_0x2726bc){_0x280ec1[_0x82a6('0x1d')]=_0x2726bc;if(_0x42b934[_0x82a6('0x29')][_0x82a6('0x3a')]){_0x1cb13b['include']=[{'all':!![]}];}return db[_0x82a6('0x3b')][_0x82a6('0x3c')](_0x1cb13b);})['then'](function(_0x4ed204){_0x280ec1['rows']=_0x4ed204;return _0x280ec1;})[_0x82a6('0x23')](respondWithFilteredResult(_0x5151e6,_0x1cb13b))[_0x82a6('0x3d')](handleError(_0x5151e6,null));};exports[_0x82a6('0x3e')]=function(_0x3995a1,_0x22cc3a){var _0x26858d={'raw':!![],'where':{'id':_0x3995a1[_0x82a6('0x3f')]['id']}},_0x51ca8e={};_0x51ca8e['model']=_[_0x82a6('0x40')](db[_0x82a6('0x3b')][_0x82a6('0x41')]);_0x51ca8e[_0x82a6('0x29')]=_['keys'](_0x3995a1[_0x82a6('0x29')]);_0x51ca8e['filters']=_[_0x82a6('0x2b')](_0x51ca8e[_0x82a6('0x2c')],_0x51ca8e[_0x82a6('0x29')]);_0x26858d[_0x82a6('0x2d')]=_['intersection'](_0x51ca8e[_0x82a6('0x2c')],qs[_0x82a6('0x2e')](_0x3995a1[_0x82a6('0x29')][_0x82a6('0x2e')]));_0x26858d[_0x82a6('0x2d')]=_0x26858d[_0x82a6('0x2d')][_0x82a6('0x2f')]?_0x26858d[_0x82a6('0x2d')]:_0x51ca8e['model'];if(_0x3995a1[_0x82a6('0x29')][_0x82a6('0x3a')]){_0x26858d['include']=[{'all':!![]}];}_0x26858d=_[_0x82a6('0x35')]({},_0x26858d,_0x3995a1[_0x82a6('0x39')]);return db[_0x82a6('0x3b')][_0x82a6('0x42')](_0x26858d)[_0x82a6('0x23')](handleEntityNotFound(_0x22cc3a,null))['then'](respondWithResult(_0x22cc3a,null))[_0x82a6('0x3d')](handleError(_0x22cc3a,null));};exports[_0x82a6('0x43')]=function(_0x4450fe,_0x502991){return db[_0x82a6('0x3b')][_0x82a6('0x43')](_0x4450fe['body'],{})[_0x82a6('0x23')](respondWithResult(_0x502991,0xc9))['catch'](handleError(_0x502991,null));};exports['update']=function(_0x149dc8,_0x3c7274){if(_0x149dc8[_0x82a6('0x44')]['id']){delete _0x149dc8[_0x82a6('0x44')]['id'];}return db['SquareReport'][_0x82a6('0x42')]({'where':{'id':_0x149dc8['params']['id']}})['then'](handleEntityNotFound(_0x3c7274,null))[_0x82a6('0x23')](saveUpdates(_0x149dc8['body'],null))[_0x82a6('0x23')](respondWithResult(_0x3c7274,null))[_0x82a6('0x3d')](handleError(_0x3c7274,null));};exports[_0x82a6('0x45')]=function(_0x39abbe,_0x253d10){return db[_0x82a6('0x3b')][_0x82a6('0x42')]({'where':{'id':_0x39abbe[_0x82a6('0x3f')]['id']}})[_0x82a6('0x23')](handleEntityNotFound(_0x253d10,null))[_0x82a6('0x23')](removeEntity(_0x253d10,null))['catch'](handleError(_0x253d10,null));};exports[_0x82a6('0x46')]=function(_0x443e11,_0x79fad9){return db[_0x82a6('0x3b')][_0x82a6('0x46')]()[_0x82a6('0x23')](respondWithResult(_0x79fad9,null))[_0x82a6('0x3d')](handleError(_0x79fad9,null));};
\ No newline at end of file
index 421300f..a25e3ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x388f=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./squareReport.attributes','exports','define','SquareReport','report_square','uniqueid','project_name','util'];(function(_0x44a2a6,_0xab647b){var _0x5f609b=function(_0x2d8562){while(--_0x2d8562){_0x44a2a6['push'](_0x44a2a6['shift']());}};_0x5f609b(++_0xab647b);}(_0x388f,0x194));var _0xf388=function(_0x56c4b8,_0x17f78d){_0x56c4b8=_0x56c4b8-0x0;var _0x222836=_0x388f[_0x56c4b8];return _0x222836;};'use strict';var _=require('lodash');var util=require(_0xf388('0x0'));var logger=require(_0xf388('0x1'))(_0xf388('0x2'));var moment=require(_0xf388('0x3'));var BPromise=require(_0xf388('0x4'));var rp=require(_0xf388('0x5'));var fs=require('fs');var path=require(_0xf388('0x6'));var rimraf=require('rimraf');var config=require(_0xf388('0x7'));var attributes=require(_0xf388('0x8'));module[_0xf388('0x9')]=function(_0x9779e8,_0x26a6c0){return _0x9779e8[_0xf388('0xa')](_0xf388('0xb'),attributes,{'tableName':_0xf388('0xc'),'paranoid':![],'indexes':[{'name':'uid_pname','fields':[_0xf388('0xd'),_0xf388('0xe')]},{'name':'leaveAt','fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8161=['SquareReport','uid_pname','project_name','leaveAt','lodash','util','api','bluebird','path','rimraf','../../config/environment','exports','define'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8161,0x1b1));var _0x1816=function(_0x38f470,_0x3b1ebd){_0x38f470=_0x38f470-0x0;var _0x57fca3=_0x8161[_0x38f470];return _0x57fca3;};'use strict';var _=require(_0x1816('0x0'));var util=require(_0x1816('0x1'));var logger=require('../../config/logger')(_0x1816('0x2'));var moment=require('moment');var BPromise=require(_0x1816('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1816('0x4'));var rimraf=require(_0x1816('0x5'));var config=require(_0x1816('0x6'));var attributes=require('./squareReport.attributes');module[_0x1816('0x7')]=function(_0x328e00,_0x8ee486){return _0x328e00[_0x1816('0x8')](_0x1816('0x9'),attributes,{'tableName':'report_square','paranoid':![],'indexes':[{'name':_0x1816('0xa'),'fields':['uniqueid',_0x1816('0xb')]},{'name':'leaveAt','fields':[_0x1816('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 03a665b..1727e5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe561=['http','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateSquareReport','SquareReport','create','body','options','raw','UpdateSquareReport','update','where','limit','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client'];(function(_0x1f9386,_0x1045fc){var _0x39be16=function(_0x2fce54){while(--_0x2fce54){_0x1f9386['push'](_0x1f9386['shift']());}};_0x39be16(++_0x1045fc);}(_0xe561,0xbc));var _0x1e56=function(_0x3a0a25,_0xc055b8){_0x3a0a25=_0x3a0a25-0x0;var _0x9a0717=_0xe561[_0x3a0a25];return _0x9a0717;};'use strict';var _=require('lodash');var util=require(_0x1e56('0x0'));var moment=require(_0x1e56('0x1'));var BPromise=require(_0x1e56('0x2'));var rs=require(_0x1e56('0x3'));var fs=require('fs');var Redis=require(_0x1e56('0x4'));var db=require(_0x1e56('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x1e56('0x6'));var config=require(_0x1e56('0x7'));var jayson=require(_0x1e56('0x8'));var client=jayson[_0x1e56('0x9')][_0x1e56('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4d355b,_0x1c63bc,_0x23c08f){return new BPromise(function(_0x5c6208,_0x171ba9){return client[_0x1e56('0xb')](_0x4d355b,_0x23c08f)[_0x1e56('0xc')](function(_0x4404f5){logger[_0x1e56('0xd')](_0x1e56('0xe'),_0x1c63bc,_0x1e56('0xf'));logger[_0x1e56('0x10')]('SquareReport,\x20%s,\x20%s,\x20%s',_0x1c63bc,'request\x20sent',JSON[_0x1e56('0x11')](_0x4404f5));if(_0x4404f5[_0x1e56('0x12')]){if(_0x4404f5['error'][_0x1e56('0x13')]===0x1f4){logger['error'](_0x1e56('0xe'),_0x1c63bc,_0x4404f5['error']['message']);return _0x171ba9(_0x4404f5[_0x1e56('0x12')][_0x1e56('0x14')]);}logger[_0x1e56('0x12')]('SquareReport,\x20%s,\x20%s',_0x1c63bc,_0x4404f5[_0x1e56('0x12')][_0x1e56('0x14')]);return _0x5c6208(_0x4404f5[_0x1e56('0x12')][_0x1e56('0x14')]);}else{logger[_0x1e56('0xd')](_0x1e56('0xe'),_0x1c63bc,_0x1e56('0xf'));_0x5c6208(_0x4404f5[_0x1e56('0x15')][_0x1e56('0x14')]);}})[_0x1e56('0x16')](function(_0x41b244){logger[_0x1e56('0x12')](_0x1e56('0xe'),_0x1c63bc,_0x41b244);_0x171ba9(_0x41b244);});});}exports[_0x1e56('0x17')]=function(_0x1df389){var _0x295bf8=this;return new Promise(function(_0x3a9e3a,_0x26bdcb){return db[_0x1e56('0x18')][_0x1e56('0x19')](_0x1df389[_0x1e56('0x1a')],{'raw':_0x1df389[_0x1e56('0x1b')]?_0x1df389[_0x1e56('0x1b')][_0x1e56('0x1c')]===undefined?!![]:![]:!![]})[_0x1e56('0xc')](function(_0x446ada){logger[_0x1e56('0xd')](_0x1e56('0x17'),_0x1df389);logger[_0x1e56('0x10')](_0x1e56('0x17'),_0x1df389,JSON[_0x1e56('0x11')](_0x446ada));_0x3a9e3a(_0x446ada);})[_0x1e56('0x16')](function(_0x1c4eb4){logger['error']('CreateSquareReport',_0x1c4eb4[_0x1e56('0x14')],_0x1df389);_0x26bdcb(_0x295bf8[_0x1e56('0x12')](0x1f4,_0x1c4eb4['message']));});});};exports[_0x1e56('0x1d')]=function(_0x54c4fd){var _0x303648=this;return new Promise(function(_0x4b5a27,_0x5e8c5e){return db['SquareReport'][_0x1e56('0x1e')](_0x54c4fd['body'],{'raw':_0x54c4fd['options']?_0x54c4fd[_0x1e56('0x1b')][_0x1e56('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x54c4fd[_0x1e56('0x1b')]?_0x54c4fd[_0x1e56('0x1b')][_0x1e56('0x1f')]||null:null,'attributes':_0x54c4fd['options']?_0x54c4fd[_0x1e56('0x1b')]['attributes']||null:null,'limit':_0x54c4fd[_0x1e56('0x1b')]?_0x54c4fd[_0x1e56('0x1b')][_0x1e56('0x20')]||null:null})[_0x1e56('0xc')](function(_0x20bf21){logger['info'](_0x1e56('0x1d'),_0x54c4fd);logger[_0x1e56('0x10')](_0x1e56('0x1d'),_0x54c4fd,JSON['stringify'](_0x20bf21));_0x4b5a27(_0x20bf21);})[_0x1e56('0x16')](function(_0x493537){logger[_0x1e56('0x12')](_0x1e56('0x1d'),_0x493537[_0x1e56('0x14')],_0x54c4fd);_0x5e8c5e(_0x303648['error'](0x1f4,_0x493537[_0x1e56('0x14')]));});});};
\ No newline at end of file
+var _0xb9b0=['attributes','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','SquareReport,\x20%s,\x20%s','debug','error','code','message','result','catch','SquareReport','create','body','options','CreateSquareReport','UpdateSquareReport','update','where'];(function(_0x3d3b5b,_0x1d40d0){var _0xe2d20c=function(_0x5d8d25){while(--_0x5d8d25){_0x3d3b5b['push'](_0x3d3b5b['shift']());}};_0xe2d20c(++_0x1d40d0);}(_0xb9b0,0x71));var _0x0b9b=function(_0xac05f3,_0x576385){_0xac05f3=_0xac05f3-0x0;var _0x315ee6=_0xb9b0[_0xac05f3];return _0x315ee6;};'use strict';var _=require(_0x0b9b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x0b9b('0x1'));var rs=require(_0x0b9b('0x2'));var fs=require('fs');var Redis=require(_0x0b9b('0x3'));var db=require(_0x0b9b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0b9b('0x5'))(_0x0b9b('0x6'));var config=require(_0x0b9b('0x7'));var jayson=require(_0x0b9b('0x8'));var client=jayson['client'][_0x0b9b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x52621f,_0x2df78d,_0x24bf47){return new BPromise(function(_0x3856ae,_0x3ed952){return client['request'](_0x52621f,_0x24bf47)[_0x0b9b('0xa')](function(_0x208b35){logger[_0x0b9b('0xb')](_0x0b9b('0xc'),_0x2df78d,'request\x20sent');logger[_0x0b9b('0xd')]('SquareReport,\x20%s,\x20%s,\x20%s',_0x2df78d,'request\x20sent',JSON['stringify'](_0x208b35));if(_0x208b35[_0x0b9b('0xe')]){if(_0x208b35[_0x0b9b('0xe')][_0x0b9b('0xf')]===0x1f4){logger[_0x0b9b('0xe')]('SquareReport,\x20%s,\x20%s',_0x2df78d,_0x208b35[_0x0b9b('0xe')][_0x0b9b('0x10')]);return _0x3ed952(_0x208b35[_0x0b9b('0xe')][_0x0b9b('0x10')]);}logger[_0x0b9b('0xe')](_0x0b9b('0xc'),_0x2df78d,_0x208b35['error'][_0x0b9b('0x10')]);return _0x3856ae(_0x208b35[_0x0b9b('0xe')]['message']);}else{logger[_0x0b9b('0xb')](_0x0b9b('0xc'),_0x2df78d,'request\x20sent');_0x3856ae(_0x208b35[_0x0b9b('0x11')][_0x0b9b('0x10')]);}})[_0x0b9b('0x12')](function(_0x47eaaa){logger['error'](_0x0b9b('0xc'),_0x2df78d,_0x47eaaa);_0x3ed952(_0x47eaaa);});});}exports['CreateSquareReport']=function(_0x2e785f){var _0x4cdce7=this;return new Promise(function(_0x12f707,_0x3d306f){return db[_0x0b9b('0x13')][_0x0b9b('0x14')](_0x2e785f[_0x0b9b('0x15')],{'raw':_0x2e785f[_0x0b9b('0x16')]?_0x2e785f[_0x0b9b('0x16')]['raw']===undefined?!![]:![]:!![]})[_0x0b9b('0xa')](function(_0x59f61a){logger[_0x0b9b('0xb')](_0x0b9b('0x17'),_0x2e785f);logger[_0x0b9b('0xd')](_0x0b9b('0x17'),_0x2e785f,JSON['stringify'](_0x59f61a));_0x12f707(_0x59f61a);})[_0x0b9b('0x12')](function(_0x23b322){logger[_0x0b9b('0xe')](_0x0b9b('0x17'),_0x23b322[_0x0b9b('0x10')],_0x2e785f);_0x3d306f(_0x4cdce7[_0x0b9b('0xe')](0x1f4,_0x23b322[_0x0b9b('0x10')]));});});};exports[_0x0b9b('0x18')]=function(_0x168138){var _0x1e0cbc=this;return new Promise(function(_0x4c992c,_0x435604){return db[_0x0b9b('0x13')][_0x0b9b('0x19')](_0x168138['body'],{'raw':_0x168138[_0x0b9b('0x16')]?_0x168138[_0x0b9b('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x168138[_0x0b9b('0x16')]?_0x168138[_0x0b9b('0x16')][_0x0b9b('0x1a')]||null:null,'attributes':_0x168138[_0x0b9b('0x16')]?_0x168138['options'][_0x0b9b('0x1b')]||null:null,'limit':_0x168138[_0x0b9b('0x16')]?_0x168138[_0x0b9b('0x16')]['limit']||null:null})[_0x0b9b('0xa')](function(_0x57d428){logger['info']('UpdateSquareReport',_0x168138);logger[_0x0b9b('0xd')](_0x0b9b('0x18'),_0x168138,JSON['stringify'](_0x57d428));_0x4c992c(_0x57d428);})['catch'](function(_0x15d939){logger[_0x0b9b('0xe')]('UpdateSquareReport',_0x15d939[_0x0b9b('0x10')],_0x168138);_0x435604(_0x1e0cbc['error'](0x1f4,_0x15d939[_0x0b9b('0x10')]));});});};
\ No newline at end of file
index 04be644..9538813 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4067=['../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','/describe','describe','/:id','show','post','put','exports','multer','path','connect-timeout','express','Router'];(function(_0x25bb91,_0x9fe674){var _0x1acb95=function(_0x5d1d11){while(--_0x5d1d11){_0x25bb91['push'](_0x25bb91['shift']());}};_0x1acb95(++_0x9fe674);}(_0x4067,0x1e8));var _0x7406=function(_0x2c4b17,_0x4fc4b4){_0x2c4b17=_0x2c4b17-0x0;var _0x4d7604=_0x4067[_0x2c4b17];return _0x4d7604;};'use strict';var multer=require(_0x7406('0x0'));var util=require('util');var path=require(_0x7406('0x1'));var timeout=require(_0x7406('0x2'));var express=require(_0x7406('0x3'));var router=express[_0x7406('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x7406('0x5'));var config=require(_0x7406('0x6'));var controller=require(_0x7406('0x7'));router[_0x7406('0x8')]('/',auth[_0x7406('0x9')](),controller['index']);router[_0x7406('0x8')](_0x7406('0xa'),auth[_0x7406('0x9')](),controller[_0x7406('0xb')]);router[_0x7406('0x8')](_0x7406('0xc'),auth[_0x7406('0x9')](),controller[_0x7406('0xd')]);router[_0x7406('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7406('0xf')]('/:id',auth[_0x7406('0x9')](),controller['update']);router['delete'](_0x7406('0xc'),auth[_0x7406('0x9')](),controller['destroy']);module[_0x7406('0x10')]=router;
\ No newline at end of file
+var _0x65e0=['../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','/describe','post','put','/:id','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x65e0,0x1d9));var _0x065e=function(_0x2f39cf,_0x3c59ec){_0x2f39cf=_0x2f39cf-0x0;var _0xd0ece8=_0x65e0[_0x2f39cf];return _0xd0ece8;};'use strict';var multer=require(_0x065e('0x0'));var util=require(_0x065e('0x1'));var path=require(_0x065e('0x2'));var timeout=require(_0x065e('0x3'));var express=require('express');var router=express[_0x065e('0x4')]();var fs_extra=require(_0x065e('0x5'));var auth=require(_0x065e('0x6'));var interaction=require(_0x065e('0x7'));var config=require(_0x065e('0x8'));var controller=require(_0x065e('0x9'));router[_0x065e('0xa')]('/',auth[_0x065e('0xb')](),controller[_0x065e('0xc')]);router[_0x065e('0xa')](_0x065e('0xd'),auth[_0x065e('0xb')](),controller['describe']);router['get']('/:id',auth[_0x065e('0xb')](),controller['show']);router[_0x065e('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x065e('0xf')](_0x065e('0x10'),auth[_0x065e('0xb')](),controller['update']);router[_0x065e('0x11')](_0x065e('0x10'),auth[_0x065e('0xb')](),controller[_0x065e('0x12')]);module[_0x065e('0x13')]=router;
\ No newline at end of file
index c737b15..fe8c3f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7278=['exports','STRING'];(function(_0x4f8752,_0x589974){var _0x58dd0a=function(_0xdcb48f){while(--_0xdcb48f){_0x4f8752['push'](_0x4f8752['shift']());}};_0x58dd0a(++_0x589974);}(_0x7278,0x1da));var _0x8727=function(_0x2f33b7,_0x3a79ed){_0x2f33b7=_0x2f33b7-0x0;var _0x3aa9a8=_0x7278[_0x2f33b7];return _0x3aa9a8;};'use strict';var Sequelize=require('sequelize');module[_0x8727('0x0')]={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize[_0x8727('0x1')]},'application':{'type':Sequelize[_0x8727('0x1')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1ff1=['sequelize','exports','STRING'];(function(_0x36bff5,_0x3156cb){var _0x80ade5=function(_0x5eee65){while(--_0x5eee65){_0x36bff5['push'](_0x36bff5['shift']());}};_0x80ade5(++_0x3156cb);}(_0x1ff1,0x10e));var _0x11ff=function(_0x187046,_0x26fe60){_0x187046=_0x187046-0x0;var _0xdd564d=_0x1ff1[_0x187046];return _0xdd564d;};'use strict';var Sequelize=require(_0x11ff('0x0'));module[_0x11ff('0x1')]={'uniqueid':{'type':Sequelize[_0x11ff('0x2')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize[_0x11ff('0x2')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize[_0x11ff('0x2')]},'callerid':{'type':Sequelize[_0x11ff('0x2')]}};
\ No newline at end of file
index f4a1fef..570766c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9474=['fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','catch','show','params','merge','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','apply','reject','update','destroy','then','sendStatus','error','stack','name','send','index','map','SquareDetailsReport','rawAttributes'];(function(_0x1e2a3e,_0x1b1d76){var _0x48532b=function(_0x2b5e2c){while(--_0x2b5e2c){_0x1e2a3e['push'](_0x1e2a3e['shift']());}};_0x48532b(++_0x1b1d76);}(_0x9474,0x68));var _0x4947=function(_0x3b7e6f,_0x1565b5){_0x3b7e6f=_0x3b7e6f-0x0;var _0x4873c3=_0x9474[_0x3b7e6f];return _0x4873c3;};'use strict';var emlformat=require(_0x4947('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4947('0x1'));var jsonpatch=require(_0x4947('0x2'));var rp=require(_0x4947('0x3'));var moment=require(_0x4947('0x4'));var BPromise=require(_0x4947('0x5'));var Mustache=require('mustache');var util=require(_0x4947('0x6'));var path=require(_0x4947('0x7'));var sox=require(_0x4947('0x8'));var csv=require(_0x4947('0x9'));var ejs=require(_0x4947('0xa'));var fs=require('fs');var fs_extra=require(_0x4947('0xb'));var _=require('lodash');var squel=require(_0x4947('0xc'));var crypto=require(_0x4947('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x4947('0xe'));var toCsv=require(_0x4947('0x9'));var querystring=require(_0x4947('0xf'));var Papa=require('papaparse');var Redis=require(_0x4947('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x4947('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4947('0x12'));var logger=require(_0x4947('0x13'))(_0x4947('0x14'));var utils=require(_0x4947('0x15'));var config=require(_0x4947('0x16'));var licenseUtil=require(_0x4947('0x17'));var db=require(_0x4947('0x18'))['db'];function respondWithStatusCode(_0x555f8e,_0x238045){_0x238045=_0x238045||0xcc;return function(_0x39bdaf){if(_0x39bdaf){return _0x555f8e['sendStatus'](_0x238045);}return _0x555f8e[_0x4947('0x19')](_0x238045)[_0x4947('0x1a')]();};}function respondWithResult(_0xbbfcc6,_0x4bd055){_0x4bd055=_0x4bd055||0xc8;return function(_0x543880){if(_0x543880){return _0xbbfcc6['status'](_0x4bd055)[_0x4947('0x1b')](_0x543880);}};}function respondWithFilteredResult(_0x350ae6,_0x3c38f3){return function(_0x214a0f){if(_0x214a0f){var _0x1fe3eb=typeof _0x3c38f3[_0x4947('0x1c')]==='undefined'&&typeof _0x3c38f3[_0x4947('0x1d')]===_0x4947('0x1e');var _0x19f745=_0x214a0f['count'];var _0x57b02f=_0x1fe3eb?0x0:_0x3c38f3[_0x4947('0x1c')];var _0x2473af=_0x1fe3eb?_0x214a0f[_0x4947('0x1f')]:_0x3c38f3['offset']+_0x3c38f3[_0x4947('0x1d')];var _0x4ff050;if(_0x2473af>=_0x19f745){_0x2473af=_0x19f745;_0x4ff050=0xc8;}else{_0x4ff050=0xce;}_0x350ae6[_0x4947('0x19')](_0x4ff050);return _0x350ae6['set']('Content-Range',_0x57b02f+'-'+_0x2473af+'/'+_0x19f745)[_0x4947('0x1b')](_0x214a0f);}return null;};}function patchUpdates(_0x388eac){return function(_0x3a265b){try{jsonpatch[_0x4947('0x20')](_0x3a265b,_0x388eac,!![]);}catch(_0x4f820a){return BPromise[_0x4947('0x21')](_0x4f820a);}return _0x3a265b['save']();};}function saveUpdates(_0x56c041,_0x2bc331){return function(_0x167de4){if(_0x167de4){return _0x167de4[_0x4947('0x22')](_0x56c041)['then'](function(_0x5688fa){return _0x5688fa;});}return null;};}function removeEntity(_0x3b52f5,_0xc18e38){return function(_0x4b0826){if(_0x4b0826){return _0x4b0826[_0x4947('0x23')]()[_0x4947('0x24')](function(){_0x3b52f5[_0x4947('0x19')](0xcc)[_0x4947('0x1a')]();});}};}function handleEntityNotFound(_0x3e4efd,_0x2c0703){return function(_0xc66961){if(!_0xc66961){_0x3e4efd[_0x4947('0x25')](0x194);}return _0xc66961;};}function handleError(_0x2d50a3,_0x48e57c){_0x48e57c=_0x48e57c||0x1f4;return function(_0x4d769a){logger[_0x4947('0x26')](_0x4d769a[_0x4947('0x27')]);if(_0x4d769a[_0x4947('0x28')]){delete _0x4d769a['name'];}_0x2d50a3[_0x4947('0x19')](_0x48e57c)[_0x4947('0x29')](_0x4d769a);};}exports[_0x4947('0x2a')]=function(_0x14e3ca,_0x138ec9){var _0x472452={},_0x1f659c={},_0x4be142={'count':0x0,'rows':[]};var _0x1505d8=_[_0x4947('0x2b')](db[_0x4947('0x2c')][_0x4947('0x2d')],function(_0x21c2e4){return{'name':_0x21c2e4[_0x4947('0x2e')],'type':_0x21c2e4[_0x4947('0x2f')][_0x4947('0x30')]};});_0x1f659c[_0x4947('0x31')]=_[_0x4947('0x2b')](_0x1505d8,_0x4947('0x28'));_0x1f659c['query']=_[_0x4947('0x32')](_0x14e3ca[_0x4947('0x33')]);_0x1f659c[_0x4947('0x34')]=_[_0x4947('0x35')](_0x1f659c[_0x4947('0x31')],_0x1f659c[_0x4947('0x33')]);_0x472452['attributes']=_['intersection'](_0x1f659c[_0x4947('0x31')],qs[_0x4947('0x36')](_0x14e3ca[_0x4947('0x33')][_0x4947('0x36')]));_0x472452[_0x4947('0x37')]=_0x472452[_0x4947('0x37')][_0x4947('0x38')]?_0x472452['attributes']:_0x1f659c[_0x4947('0x31')];if(!_0x14e3ca[_0x4947('0x33')]['hasOwnProperty'](_0x4947('0x39'))){_0x472452[_0x4947('0x1d')]=qs[_0x4947('0x1d')](_0x14e3ca['query'][_0x4947('0x1d')]);_0x472452['offset']=qs['offset'](_0x14e3ca['query'][_0x4947('0x1c')]);}_0x472452[_0x4947('0x3a')]=qs[_0x4947('0x3b')](_0x14e3ca['query'][_0x4947('0x3b')]);_0x472452[_0x4947('0x3c')]=qs['filters'](_[_0x4947('0x3d')](_0x14e3ca[_0x4947('0x33')],_0x1f659c[_0x4947('0x34')]),_0x1505d8);if(_0x14e3ca[_0x4947('0x33')][_0x4947('0x3e')]){_0x472452[_0x4947('0x3c')]=_['merge'](_0x472452[_0x4947('0x3c')],{'$or':_['map'](_0x1505d8,function(_0xec5422){if(_0xec5422[_0x4947('0x2f')]!==_0x4947('0x3f')){var _0x4b34e4={};_0x4b34e4[_0xec5422['name']]={'$like':'%'+_0x14e3ca['query'][_0x4947('0x3e')]+'%'};return _0x4b34e4;}})});}_0x472452=_['merge']({},_0x472452,_0x14e3ca[_0x4947('0x40')]);var _0x5ae056={'where':_0x472452[_0x4947('0x3c')]};return db[_0x4947('0x2c')][_0x4947('0x1f')](_0x5ae056)['then'](function(_0x37ab75){_0x4be142[_0x4947('0x1f')]=_0x37ab75;if(_0x14e3ca[_0x4947('0x33')][_0x4947('0x41')]){_0x472452[_0x4947('0x42')]=[{'all':!![]}];}return db[_0x4947('0x2c')]['findAll'](_0x472452);})[_0x4947('0x24')](function(_0x4d8f56){_0x4be142['rows']=_0x4d8f56;return _0x4be142;})['then'](respondWithFilteredResult(_0x138ec9,_0x472452))[_0x4947('0x43')](handleError(_0x138ec9,null));};exports[_0x4947('0x44')]=function(_0xc0d96d,_0x1c9e9a){var _0x42e686={'raw':!![],'where':{'id':_0xc0d96d[_0x4947('0x45')]['id']}},_0x3981a8={};_0x3981a8[_0x4947('0x31')]=_[_0x4947('0x32')](db[_0x4947('0x2c')][_0x4947('0x2d')]);_0x3981a8[_0x4947('0x33')]=_[_0x4947('0x32')](_0xc0d96d[_0x4947('0x33')]);_0x3981a8['filters']=_[_0x4947('0x35')](_0x3981a8[_0x4947('0x31')],_0x3981a8['query']);_0x42e686['attributes']=_[_0x4947('0x35')](_0x3981a8[_0x4947('0x31')],qs[_0x4947('0x36')](_0xc0d96d[_0x4947('0x33')][_0x4947('0x36')]));_0x42e686['attributes']=_0x42e686[_0x4947('0x37')][_0x4947('0x38')]?_0x42e686['attributes']:_0x3981a8[_0x4947('0x31')];if(_0xc0d96d[_0x4947('0x33')][_0x4947('0x41')]){_0x42e686[_0x4947('0x42')]=[{'all':!![]}];}_0x42e686=_[_0x4947('0x46')]({},_0x42e686,_0xc0d96d[_0x4947('0x40')]);return db[_0x4947('0x2c')][_0x4947('0x47')](_0x42e686)[_0x4947('0x24')](handleEntityNotFound(_0x1c9e9a,null))['then'](respondWithResult(_0x1c9e9a,null))[_0x4947('0x43')](handleError(_0x1c9e9a,null));};exports[_0x4947('0x48')]=function(_0x5691c1,_0x43abc0){return db['SquareDetailsReport']['create'](_0x5691c1[_0x4947('0x49')],{})[_0x4947('0x24')](respondWithResult(_0x43abc0,0xc9))[_0x4947('0x43')](handleError(_0x43abc0,null));};exports['update']=function(_0x419719,_0xf1ad2d){if(_0x419719[_0x4947('0x49')]['id']){delete _0x419719[_0x4947('0x49')]['id'];}return db[_0x4947('0x2c')]['find']({'where':{'id':_0x419719[_0x4947('0x45')]['id']}})[_0x4947('0x24')](handleEntityNotFound(_0xf1ad2d,null))['then'](saveUpdates(_0x419719[_0x4947('0x49')],null))[_0x4947('0x24')](respondWithResult(_0xf1ad2d,null))[_0x4947('0x43')](handleError(_0xf1ad2d,null));};exports[_0x4947('0x23')]=function(_0x3b859d,_0x2f2d73){return db[_0x4947('0x2c')][_0x4947('0x47')]({'where':{'id':_0x3b859d[_0x4947('0x45')]['id']}})[_0x4947('0x24')](handleEntityNotFound(_0x2f2d73,null))[_0x4947('0x24')](removeEntity(_0x2f2d73,null))['catch'](handleError(_0x2f2d73,null));};exports[_0x4947('0x4a')]=function(_0x2c7ff4,_0x8924d6){return db[_0x4947('0x2c')][_0x4947('0x4a')]()[_0x4947('0x24')](respondWithResult(_0x8924d6,null))[_0x4947('0x43')](handleError(_0x8924d6,null));};
\ No newline at end of file
+var _0x9cc0=['find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','Content-Range','reject','save','update','then','error','send','index','map','SquareDetailsReport','rawAttributes','type','key','model','name','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','includeAll','catch','params','keys','include','options'];(function(_0x1b1855,_0x1f8fce){var _0x5168bd=function(_0x479115){while(--_0x479115){_0x1b1855['push'](_0x1b1855['shift']());}};_0x5168bd(++_0x1f8fce);}(_0x9cc0,0x93));var _0x09cc=function(_0x57b5d5,_0x25b4ee){_0x57b5d5=_0x57b5d5-0x0;var _0x24e2b5=_0x9cc0[_0x57b5d5];return _0x24e2b5;};'use strict';var emlformat=require(_0x09cc('0x0'));var rimraf=require(_0x09cc('0x1'));var zipdir=require(_0x09cc('0x2'));var jsonpatch=require(_0x09cc('0x3'));var rp=require('request-promise');var moment=require(_0x09cc('0x4'));var BPromise=require(_0x09cc('0x5'));var Mustache=require(_0x09cc('0x6'));var util=require(_0x09cc('0x7'));var path=require(_0x09cc('0x8'));var sox=require(_0x09cc('0x9'));var csv=require(_0x09cc('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x09cc('0xb'));var _=require(_0x09cc('0xc'));var squel=require(_0x09cc('0xd'));var crypto=require(_0x09cc('0xe'));var jsforce=require(_0x09cc('0xf'));var deskjs=require(_0x09cc('0x10'));var toCsv=require(_0x09cc('0xa'));var querystring=require(_0x09cc('0x11'));var Papa=require(_0x09cc('0x12'));var Redis=require(_0x09cc('0x13'));var authService=require(_0x09cc('0x14'));var qs=require(_0x09cc('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x09cc('0x16'));var db=require(_0x09cc('0x17'))['db'];function respondWithStatusCode(_0x3869d0,_0x3e0d58){_0x3e0d58=_0x3e0d58||0xcc;return function(_0x428931){if(_0x428931){return _0x3869d0[_0x09cc('0x18')](_0x3e0d58);}return _0x3869d0[_0x09cc('0x19')](_0x3e0d58)['end']();};}function respondWithResult(_0xccfcdb,_0x5a8e54){_0x5a8e54=_0x5a8e54||0xc8;return function(_0x2783cd){if(_0x2783cd){return _0xccfcdb['status'](_0x5a8e54)[_0x09cc('0x1a')](_0x2783cd);}};}function respondWithFilteredResult(_0xb69a28,_0x1c591a){return function(_0x24c3b9){if(_0x24c3b9){var _0x19864d=typeof _0x1c591a[_0x09cc('0x1b')]==='undefined'&&typeof _0x1c591a['limit']===_0x09cc('0x1c');var _0x588c31=_0x24c3b9[_0x09cc('0x1d')];var _0x5c4326=_0x19864d?0x0:_0x1c591a[_0x09cc('0x1b')];var _0x374bd2=_0x19864d?_0x24c3b9['count']:_0x1c591a[_0x09cc('0x1b')]+_0x1c591a[_0x09cc('0x1e')];var _0x55c9df;if(_0x374bd2>=_0x588c31){_0x374bd2=_0x588c31;_0x55c9df=0xc8;}else{_0x55c9df=0xce;}_0xb69a28['status'](_0x55c9df);return _0xb69a28['set'](_0x09cc('0x1f'),_0x5c4326+'-'+_0x374bd2+'/'+_0x588c31)[_0x09cc('0x1a')](_0x24c3b9);}return null;};}function patchUpdates(_0x4d04f8){return function(_0x2c4bb8){try{jsonpatch['apply'](_0x2c4bb8,_0x4d04f8,!![]);}catch(_0x5dd088){return BPromise[_0x09cc('0x20')](_0x5dd088);}return _0x2c4bb8[_0x09cc('0x21')]();};}function saveUpdates(_0x5cacc9,_0xfd7f19){return function(_0x22ac9a){if(_0x22ac9a){return _0x22ac9a[_0x09cc('0x22')](_0x5cacc9)[_0x09cc('0x23')](function(_0x4b60f6){return _0x4b60f6;});}return null;};}function removeEntity(_0x513ae8,_0x1b8a13){return function(_0x496c1c){if(_0x496c1c){return _0x496c1c['destroy']()[_0x09cc('0x23')](function(){_0x513ae8[_0x09cc('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5eed16,_0x5d02a6){return function(_0x3a0d9e){if(!_0x3a0d9e){_0x5eed16[_0x09cc('0x18')](0x194);}return _0x3a0d9e;};}function handleError(_0x215373,_0x2a5334){_0x2a5334=_0x2a5334||0x1f4;return function(_0x4c0f84){logger[_0x09cc('0x24')](_0x4c0f84['stack']);if(_0x4c0f84['name']){delete _0x4c0f84['name'];}_0x215373[_0x09cc('0x19')](_0x2a5334)[_0x09cc('0x25')](_0x4c0f84);};}exports[_0x09cc('0x26')]=function(_0x3cab33,_0x527e7b){var _0x52b254={},_0x52d7d={},_0x32d432={'count':0x0,'rows':[]};var _0x307431=_[_0x09cc('0x27')](db[_0x09cc('0x28')][_0x09cc('0x29')],function(_0x557eaf){return{'name':_0x557eaf['fieldName'],'type':_0x557eaf[_0x09cc('0x2a')][_0x09cc('0x2b')]};});_0x52d7d[_0x09cc('0x2c')]=_[_0x09cc('0x27')](_0x307431,_0x09cc('0x2d'));_0x52d7d['query']=_['keys'](_0x3cab33[_0x09cc('0x2e')]);_0x52d7d[_0x09cc('0x2f')]=_[_0x09cc('0x30')](_0x52d7d[_0x09cc('0x2c')],_0x52d7d[_0x09cc('0x2e')]);_0x52b254[_0x09cc('0x31')]=_[_0x09cc('0x30')](_0x52d7d['model'],qs[_0x09cc('0x32')](_0x3cab33[_0x09cc('0x2e')][_0x09cc('0x32')]));_0x52b254[_0x09cc('0x31')]=_0x52b254[_0x09cc('0x31')][_0x09cc('0x33')]?_0x52b254[_0x09cc('0x31')]:_0x52d7d[_0x09cc('0x2c')];if(!_0x3cab33[_0x09cc('0x2e')][_0x09cc('0x34')](_0x09cc('0x35'))){_0x52b254[_0x09cc('0x1e')]=qs['limit'](_0x3cab33[_0x09cc('0x2e')][_0x09cc('0x1e')]);_0x52b254[_0x09cc('0x1b')]=qs['offset'](_0x3cab33[_0x09cc('0x2e')][_0x09cc('0x1b')]);}_0x52b254[_0x09cc('0x36')]=qs[_0x09cc('0x37')](_0x3cab33[_0x09cc('0x2e')]['sort']);_0x52b254[_0x09cc('0x38')]=qs[_0x09cc('0x2f')](_[_0x09cc('0x39')](_0x3cab33[_0x09cc('0x2e')],_0x52d7d[_0x09cc('0x2f')]),_0x307431);if(_0x3cab33[_0x09cc('0x2e')]['filter']){_0x52b254['where']=_[_0x09cc('0x3a')](_0x52b254[_0x09cc('0x38')],{'$or':_[_0x09cc('0x27')](_0x307431,function(_0x22012c){if(_0x22012c[_0x09cc('0x2a')]!==_0x09cc('0x3b')){var _0x5688a8={};_0x5688a8[_0x22012c['name']]={'$like':'%'+_0x3cab33[_0x09cc('0x2e')]['filter']+'%'};return _0x5688a8;}})});}_0x52b254=_['merge']({},_0x52b254,_0x3cab33['options']);var _0x531d33={'where':_0x52b254['where']};return db['SquareDetailsReport'][_0x09cc('0x1d')](_0x531d33)[_0x09cc('0x23')](function(_0x5db0b5){_0x32d432[_0x09cc('0x1d')]=_0x5db0b5;if(_0x3cab33[_0x09cc('0x2e')][_0x09cc('0x3c')]){_0x52b254['include']=[{'all':!![]}];}return db[_0x09cc('0x28')]['findAll'](_0x52b254);})[_0x09cc('0x23')](function(_0x377678){_0x32d432['rows']=_0x377678;return _0x32d432;})[_0x09cc('0x23')](respondWithFilteredResult(_0x527e7b,_0x52b254))[_0x09cc('0x3d')](handleError(_0x527e7b,null));};exports['show']=function(_0x2a5734,_0x219731){var _0x1c6e5f={'raw':!![],'where':{'id':_0x2a5734[_0x09cc('0x3e')]['id']}},_0x2cd905={};_0x2cd905[_0x09cc('0x2c')]=_[_0x09cc('0x3f')](db['SquareDetailsReport'][_0x09cc('0x29')]);_0x2cd905[_0x09cc('0x2e')]=_['keys'](_0x2a5734[_0x09cc('0x2e')]);_0x2cd905[_0x09cc('0x2f')]=_[_0x09cc('0x30')](_0x2cd905[_0x09cc('0x2c')],_0x2cd905[_0x09cc('0x2e')]);_0x1c6e5f[_0x09cc('0x31')]=_[_0x09cc('0x30')](_0x2cd905[_0x09cc('0x2c')],qs[_0x09cc('0x32')](_0x2a5734[_0x09cc('0x2e')][_0x09cc('0x32')]));_0x1c6e5f[_0x09cc('0x31')]=_0x1c6e5f[_0x09cc('0x31')][_0x09cc('0x33')]?_0x1c6e5f[_0x09cc('0x31')]:_0x2cd905[_0x09cc('0x2c')];if(_0x2a5734[_0x09cc('0x2e')][_0x09cc('0x3c')]){_0x1c6e5f[_0x09cc('0x40')]=[{'all':!![]}];}_0x1c6e5f=_[_0x09cc('0x3a')]({},_0x1c6e5f,_0x2a5734[_0x09cc('0x41')]);return db[_0x09cc('0x28')][_0x09cc('0x42')](_0x1c6e5f)[_0x09cc('0x23')](handleEntityNotFound(_0x219731,null))[_0x09cc('0x23')](respondWithResult(_0x219731,null))[_0x09cc('0x3d')](handleError(_0x219731,null));};exports[_0x09cc('0x43')]=function(_0xd7de7f,_0x292573){return db['SquareDetailsReport']['create'](_0xd7de7f[_0x09cc('0x44')],{})[_0x09cc('0x23')](respondWithResult(_0x292573,0xc9))[_0x09cc('0x3d')](handleError(_0x292573,null));};exports[_0x09cc('0x22')]=function(_0xf8f49d,_0x1bebd4){if(_0xf8f49d[_0x09cc('0x44')]['id']){delete _0xf8f49d['body']['id'];}return db[_0x09cc('0x28')][_0x09cc('0x42')]({'where':{'id':_0xf8f49d[_0x09cc('0x3e')]['id']}})[_0x09cc('0x23')](handleEntityNotFound(_0x1bebd4,null))[_0x09cc('0x23')](saveUpdates(_0xf8f49d['body'],null))['then'](respondWithResult(_0x1bebd4,null))[_0x09cc('0x3d')](handleError(_0x1bebd4,null));};exports[_0x09cc('0x45')]=function(_0x46ebc0,_0x1fc49d){return db[_0x09cc('0x28')]['find']({'where':{'id':_0x46ebc0[_0x09cc('0x3e')]['id']}})[_0x09cc('0x23')](handleEntityNotFound(_0x1fc49d,null))[_0x09cc('0x23')](removeEntity(_0x1fc49d,null))[_0x09cc('0x3d')](handleError(_0x1fc49d,null));};exports[_0x09cc('0x46')]=function(_0x5a0146,_0x13dde6){return db[_0x09cc('0x28')][_0x09cc('0x46')]()[_0x09cc('0x23')](respondWithResult(_0x13dde6,null))[_0x09cc('0x3d')](handleError(_0x13dde6,null));};
\ No newline at end of file
index fa45461..4a7b118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a0c=['report_square_details','lodash','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','exports','define'];(function(_0x28072a,_0xb7e66a){var _0x396181=function(_0x4b0909){while(--_0x4b0909){_0x28072a['push'](_0x28072a['shift']());}};_0x396181(++_0xb7e66a);}(_0x9a0c,0x12d));var _0xc9a0=function(_0x26bc3f,_0x121c1b){_0x26bc3f=_0x26bc3f-0x0;var _0xf4bb68=_0x9a0c[_0x26bc3f];return _0xf4bb68;};'use strict';var _=require(_0xc9a0('0x0'));var util=require('util');var logger=require(_0xc9a0('0x1'))('api');var moment=require(_0xc9a0('0x2'));var BPromise=require(_0xc9a0('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc9a0('0x4'));var rimraf=require(_0xc9a0('0x5'));var config=require(_0xc9a0('0x6'));var attributes=require('./squareReportDetail.attributes');module[_0xc9a0('0x7')]=function(_0x2b3fd6,_0x328791){return _0x2b3fd6[_0xc9a0('0x8')]('SquareDetailsReport',attributes,{'tableName':_0xc9a0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd583=['request-promise','path','rimraf','../../config/environment','./squareReportDetail.attributes','define','lodash','util','../../config/logger','api','bluebird'];(function(_0xc1b474,_0x4fff31){var _0x3b3abd=function(_0x42917e){while(--_0x42917e){_0xc1b474['push'](_0xc1b474['shift']());}};_0x3b3abd(++_0x4fff31);}(_0xd583,0x19d));var _0x3d58=function(_0x1b5cc2,_0x4321c2){_0x1b5cc2=_0x1b5cc2-0x0;var _0x375f3b=_0xd583[_0x1b5cc2];return _0x375f3b;};'use strict';var _=require(_0x3d58('0x0'));var util=require(_0x3d58('0x1'));var logger=require(_0x3d58('0x2'))(_0x3d58('0x3'));var moment=require('moment');var BPromise=require(_0x3d58('0x4'));var rp=require(_0x3d58('0x5'));var fs=require('fs');var path=require(_0x3d58('0x6'));var rimraf=require(_0x3d58('0x7'));var config=require(_0x3d58('0x8'));var attributes=require(_0x3d58('0x9'));module['exports']=function(_0x4d58f,_0x5cfc01){return _0x4d58f[_0x3d58('0xa')]('SquareDetailsReport',attributes,{'tableName':'report_square_details','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 041fa2f..a8f1249 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42f4=['randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','http','then','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareDetailsReport,\x20%s,\x20%s','message','info','result','catch','SquareDetailsReport','create','body','options','CreateSquareDetailsReport','lodash','moment','bluebird'];(function(_0x4f4476,_0x47772f){var _0x26529b=function(_0x146fdc){while(--_0x146fdc){_0x4f4476['push'](_0x4f4476['shift']());}};_0x26529b(++_0x47772f);}(_0x42f4,0x19d));var _0x442f=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x42f4[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0x442f('0x0'));var util=require('util');var moment=require(_0x442f('0x1'));var BPromise=require(_0x442f('0x2'));var rs=require(_0x442f('0x3'));var fs=require('fs');var Redis=require(_0x442f('0x4'));var db=require(_0x442f('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x442f('0x6'));var jayson=require(_0x442f('0x7'));var client=jayson['client'][_0x442f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x11b450,_0x23c5ba,_0x37dfe7){return new BPromise(function(_0x6c0b4b,_0x476480){return client['request'](_0x11b450,_0x37dfe7)[_0x442f('0x9')](function(_0x4e32af){logger['info']('SquareDetailsReport,\x20%s,\x20%s',_0x23c5ba,_0x442f('0xa'));logger[_0x442f('0xb')](_0x442f('0xc'),_0x23c5ba,_0x442f('0xa'),JSON[_0x442f('0xd')](_0x4e32af));if(_0x4e32af[_0x442f('0xe')]){if(_0x4e32af[_0x442f('0xe')][_0x442f('0xf')]===0x1f4){logger[_0x442f('0xe')](_0x442f('0x10'),_0x23c5ba,_0x4e32af['error'][_0x442f('0x11')]);return _0x476480(_0x4e32af[_0x442f('0xe')][_0x442f('0x11')]);}logger[_0x442f('0xe')](_0x442f('0x10'),_0x23c5ba,_0x4e32af[_0x442f('0xe')][_0x442f('0x11')]);return _0x6c0b4b(_0x4e32af[_0x442f('0xe')][_0x442f('0x11')]);}else{logger[_0x442f('0x12')](_0x442f('0x10'),_0x23c5ba,_0x442f('0xa'));_0x6c0b4b(_0x4e32af[_0x442f('0x13')][_0x442f('0x11')]);}})[_0x442f('0x14')](function(_0x3ff2b1){logger['error'](_0x442f('0x10'),_0x23c5ba,_0x3ff2b1);_0x476480(_0x3ff2b1);});});}exports['CreateSquareDetailsReport']=function(_0x54c48a){var _0x5668e0=this;return new Promise(function(_0x5e3dda,_0x1b18fd){return db[_0x442f('0x15')][_0x442f('0x16')](_0x54c48a[_0x442f('0x17')],{'raw':_0x54c48a[_0x442f('0x18')]?_0x54c48a[_0x442f('0x18')]['raw']===undefined?!![]:![]:!![]})[_0x442f('0x9')](function(_0x552f81){logger[_0x442f('0x12')](_0x442f('0x19'),_0x54c48a);logger[_0x442f('0xb')]('CreateSquareDetailsReport',_0x54c48a,JSON[_0x442f('0xd')](_0x552f81));_0x5e3dda(_0x552f81);})[_0x442f('0x14')](function(_0x5dd019){logger['error'](_0x442f('0x19'),_0x5dd019[_0x442f('0x11')],_0x54c48a);_0x1b18fd(_0x5668e0[_0x442f('0xe')](0x1f4,_0x5dd019[_0x442f('0x11')]));});});};
\ No newline at end of file
+var _0x26f9=['create','options','CreateSquareDetailsReport','lodash','util','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','SquareDetailsReport,\x20%s,\x20%s','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','SquareDetailsReport'];(function(_0x57bed9,_0x181e67){var _0x3e8241=function(_0x169315){while(--_0x169315){_0x57bed9['push'](_0x57bed9['shift']());}};_0x3e8241(++_0x181e67);}(_0x26f9,0x16f));var _0x926f=function(_0x501ca1,_0x6c6edc){_0x501ca1=_0x501ca1-0x0;var _0x2a99c4=_0x26f9[_0x501ca1];return _0x2a99c4;};'use strict';var _=require(_0x926f('0x0'));var util=require(_0x926f('0x1'));var moment=require('moment');var BPromise=require(_0x926f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x926f('0x3'))['db'];var utils=require(_0x926f('0x4'));var logger=require('../../config/logger')(_0x926f('0x5'));var config=require(_0x926f('0x6'));var jayson=require(_0x926f('0x7'));var client=jayson[_0x926f('0x8')][_0x926f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3d2ded,_0xf56fcb,_0x1e455d){return new BPromise(function(_0x41a7ed,_0x2af11e){return client['request'](_0x3d2ded,_0x1e455d)[_0x926f('0xa')](function(_0x593c13){logger[_0x926f('0xb')](_0x926f('0xc'),_0xf56fcb,'request\x20sent');logger[_0x926f('0xd')](_0x926f('0xe'),_0xf56fcb,_0x926f('0xf'),JSON[_0x926f('0x10')](_0x593c13));if(_0x593c13[_0x926f('0x11')]){if(_0x593c13['error'][_0x926f('0x12')]===0x1f4){logger[_0x926f('0x11')](_0x926f('0xc'),_0xf56fcb,_0x593c13[_0x926f('0x11')][_0x926f('0x13')]);return _0x2af11e(_0x593c13[_0x926f('0x11')][_0x926f('0x13')]);}logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0xf56fcb,_0x593c13['error'][_0x926f('0x13')]);return _0x41a7ed(_0x593c13[_0x926f('0x11')][_0x926f('0x13')]);}else{logger[_0x926f('0xb')]('SquareDetailsReport,\x20%s,\x20%s',_0xf56fcb,_0x926f('0xf'));_0x41a7ed(_0x593c13[_0x926f('0x14')]['message']);}})[_0x926f('0x15')](function(_0x52865b){logger[_0x926f('0x11')]('SquareDetailsReport,\x20%s,\x20%s',_0xf56fcb,_0x52865b);_0x2af11e(_0x52865b);});});}exports['CreateSquareDetailsReport']=function(_0x36ead3){var _0xab29b3=this;return new Promise(function(_0x4f25e3,_0x3ed07d){return db[_0x926f('0x16')][_0x926f('0x17')](_0x36ead3['body'],{'raw':_0x36ead3[_0x926f('0x18')]?_0x36ead3[_0x926f('0x18')]['raw']===undefined?!![]:![]:!![]})[_0x926f('0xa')](function(_0x4241ac){logger['info'](_0x926f('0x19'),_0x36ead3);logger[_0x926f('0xd')](_0x926f('0x19'),_0x36ead3,JSON[_0x926f('0x10')](_0x4241ac));_0x4f25e3(_0x4241ac);})[_0x926f('0x15')](function(_0x3b7179){logger[_0x926f('0x11')](_0x926f('0x19'),_0x3b7179[_0x926f('0x13')],_0x36ead3);_0x3ed07d(_0xab29b3[_0x926f('0x11')](0x1f4,_0x3b7179[_0x926f('0x13')]));});});};
\ No newline at end of file
index 6639919..fdcf4e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0da9=['../../components/auth/service','./system.controller','get','isAuthenticated','index','/process/:pid/kill','exports','express','Router'];(function(_0x6e3b3b,_0x51b084){var _0x5df3bb=function(_0x38c715){while(--_0x38c715){_0x6e3b3b['push'](_0x6e3b3b['shift']());}};_0x5df3bb(++_0x51b084);}(_0x0da9,0xa0));var _0x90da=function(_0x561bd8,_0x2458de){_0x561bd8=_0x561bd8-0x0;var _0x355db5=_0x0da9[_0x561bd8];return _0x355db5;};'use strict';var express=require(_0x90da('0x0'));var router=express[_0x90da('0x1')]();var auth=require(_0x90da('0x2'));var controller=require(_0x90da('0x3'));router[_0x90da('0x4')]('/',auth[_0x90da('0x5')](),controller[_0x90da('0x6')]);router[_0x90da('0x4')](_0x90da('0x7'),auth['isAuthenticated'](),controller['killProcess']);module[_0x90da('0x8')]=router;
\ No newline at end of file
+var _0xeb85=['/process/:pid/kill','killProcess','exports','express','./system.controller','get','isAuthenticated','index'];(function(_0xbd2b07,_0x4015d2){var _0x3e5613=function(_0x3a6992){while(--_0x3a6992){_0xbd2b07['push'](_0xbd2b07['shift']());}};_0x3e5613(++_0x4015d2);}(_0xeb85,0x133));var _0x5eb8=function(_0x171849,_0x144e89){_0x171849=_0x171849-0x0;var _0x254440=_0xeb85[_0x171849];return _0x254440;};'use strict';var express=require(_0x5eb8('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0x5eb8('0x1'));router[_0x5eb8('0x2')]('/',auth[_0x5eb8('0x3')](),controller[_0x5eb8('0x4')]);router[_0x5eb8('0x2')](_0x5eb8('0x5'),auth[_0x5eb8('0x3')](),controller[_0x5eb8('0x6')]);module[_0x5eb8('0x7')]=router;
\ No newline at end of file
index 21c74e5..9f96d23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0570=['inspect','send','getAllData','then','status','catch','format','params','pid','split','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','json','Process\x20with\x20pid\x20%s\x20killed\x20correctly','killProcess','systeminformation','exec','../../config/logger','api','util','lodash','error'];(function(_0xa84d4e,_0x297f98){var _0x100738=function(_0x75008){while(--_0x75008){_0xa84d4e['push'](_0xa84d4e['shift']());}};_0x100738(++_0x297f98);}(_0x0570,0xd5));var _0x0057=function(_0x4a4394,_0x3468be){_0x4a4394=_0x4a4394-0x0;var _0x4263bb=_0x0570[_0x4a4394];return _0x4263bb;};'use strict';var info=require(_0x0057('0x0'));var exec=require('child_process')[_0x0057('0x1')];var logger=require(_0x0057('0x2'))(_0x0057('0x3'));var util=require(_0x0057('0x4'));var BPromise=require('bluebird');var _=require(_0x0057('0x5'));function handleError(_0x22bc8f,_0x72e917,_0x163b9e){_0x72e917=_0x72e917||0x1f4;return function(_0x37a741){logger[_0x0057('0x6')]('<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s',_0x163b9e,_0x72e917,util[_0x0057('0x7')](_0x37a741,{'showHidden':![],'depth':null}));delete _0x37a741['name'];_0x22bc8f['status'](_0x72e917)[_0x0057('0x8')](_0x37a741);};}exports['index']=function(_0xda3d60,_0x42a9ff){return info[_0x0057('0x9')]()[_0x0057('0xa')](function(_0x2a453b){return _0x42a9ff[_0x0057('0xb')](0xc8)['json'](_0x2a453b);})[_0x0057('0xc')](function(_0x1734fa){return _0x42a9ff[_0x0057('0xb')](0x1f4)['json'](_0x1734fa);});};exports['killProcess']=function(_0x52f9fe,_0x4d6ef5){var _0x147b9d=['components/import/cm'];return new BPromise(function(_0x36b14c,_0xb84d66){return exec(util[_0x0057('0xd')]('ps\x20-p\x20%s\x20-ww\x20-o\x20args',_0x52f9fe[_0x0057('0xe')][_0x0057('0xf')]),function(_0x16e4bc,_0xd92fb,_0x488e8a){if(_0x16e4bc){return _0xb84d66(_0x16e4bc);}return _0x36b14c(_0xd92fb);});})['then'](function(_0x288941){var _0x3da607=![];var _0x4d69d8=_0x288941[_0x0057('0x10')](/\n/);for(var _0x5f2471=0x0,_0x455457=_0x147b9d['length'];_0x5f2471<_0x455457,_0x3da607===![];_0x5f2471+=0x1){if(_0x288941['indexOf'](_0x147b9d[_0x5f2471])>=0x0){_0x3da607=!![];}}if(!_0x3da607){throw new Error(util[_0x0057('0xd')](_0x0057('0x11'),_0x52f9fe[_0x0057('0xe')]['pid']));}process[_0x0057('0x12')](_0x52f9fe[_0x0057('0xe')][_0x0057('0xf')],'SIGINT');return _0x4d6ef5[_0x0057('0xb')](0xc8)[_0x0057('0x13')]({'message':util[_0x0057('0xd')](_0x0057('0x14'),_0x52f9fe[_0x0057('0xe')][_0x0057('0xf')])});})[_0x0057('0xc')](handleError(_0x4d6ef5,null,_0x0057('0x15')));};
\ No newline at end of file
+var _0xf584=['util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','name','status','send','index','getAllData','then','json','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','pid','split','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','Process\x20with\x20pid\x20%s\x20killed\x20correctly','params','catch','../../config/logger','api'];(function(_0x5e886b,_0x582627){var _0x4b05c8=function(_0x2083a6){while(--_0x2083a6){_0x5e886b['push'](_0x5e886b['shift']());}};_0x4b05c8(++_0x582627);}(_0xf584,0x11c));var _0x4f58=function(_0x2b5541,_0x544572){_0x2b5541=_0x2b5541-0x0;var _0x21318f=_0xf584[_0x2b5541];return _0x21318f;};'use strict';var info=require('systeminformation');var exec=require('child_process')['exec'];var logger=require(_0x4f58('0x0'))(_0x4f58('0x1'));var util=require(_0x4f58('0x2'));var BPromise=require(_0x4f58('0x3'));var _=require(_0x4f58('0x4'));function handleError(_0x15eff1,_0x3256d1,_0x590d4d){_0x3256d1=_0x3256d1||0x1f4;return function(_0x1c5c45){logger[_0x4f58('0x5')](_0x4f58('0x6'),_0x590d4d,_0x3256d1,util['inspect'](_0x1c5c45,{'showHidden':![],'depth':null}));delete _0x1c5c45[_0x4f58('0x7')];_0x15eff1[_0x4f58('0x8')](_0x3256d1)[_0x4f58('0x9')](_0x1c5c45);};}exports[_0x4f58('0xa')]=function(_0x4d8415,_0x1fa889){return info[_0x4f58('0xb')]()[_0x4f58('0xc')](function(_0x17ffc4){return _0x1fa889['status'](0xc8)[_0x4f58('0xd')](_0x17ffc4);})['catch'](function(_0x3da4fa){return _0x1fa889[_0x4f58('0x8')](0x1f4)[_0x4f58('0xd')](_0x3da4fa);});};exports[_0x4f58('0xe')]=function(_0x150f50,_0x1dcc82){var _0x5df2de=[_0x4f58('0xf')];return new BPromise(function(_0x2cb637,_0x2d19f6){return exec(util[_0x4f58('0x10')](_0x4f58('0x11'),_0x150f50['params'][_0x4f58('0x12')]),function(_0x5cc442,_0x4c7314,_0x5118a6){if(_0x5cc442){return _0x2d19f6(_0x5cc442);}return _0x2cb637(_0x4c7314);});})['then'](function(_0x300035){var _0x5f0f35=![];var _0x13853e=_0x300035[_0x4f58('0x13')](/\n/);for(var _0x54eb53=0x0,_0x1a5e19=_0x5df2de[_0x4f58('0x14')];_0x54eb53<_0x1a5e19,_0x5f0f35===![];_0x54eb53+=0x1){if(_0x300035[_0x4f58('0x15')](_0x5df2de[_0x54eb53])>=0x0){_0x5f0f35=!![];}}if(!_0x5f0f35){throw new Error(util[_0x4f58('0x10')](_0x4f58('0x16'),_0x150f50['params'][_0x4f58('0x12')]));}process['kill'](_0x150f50['params'][_0x4f58('0x12')],'SIGINT');return _0x1dcc82[_0x4f58('0x8')](0xc8)['json']({'message':util[_0x4f58('0x10')](_0x4f58('0x17'),_0x150f50[_0x4f58('0x18')]['pid'])});})[_0x4f58('0x19')](handleError(_0x1dcc82,null,'killProcess'));};
\ No newline at end of file
index 120dd9b..5f96264 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09b3=['express','Router','fs-extra','../../components/auth/service','../../config/environment','./tag.controller','get','isAuthenticated','index','show','post','create','put','update','delete','/:id','destroy','exports','multer','path'];(function(_0x1f3e93,_0x50bc18){var _0x1d7bb9=function(_0x2360d2){while(--_0x2360d2){_0x1f3e93['push'](_0x1f3e93['shift']());}};_0x1d7bb9(++_0x50bc18);}(_0x09b3,0x1f2));var _0x309b=function(_0x4232c4,_0x3204fe){_0x4232c4=_0x4232c4-0x0;var _0x1ee8e6=_0x09b3[_0x4232c4];return _0x1ee8e6;};'use strict';var multer=require(_0x309b('0x0'));var util=require('util');var path=require(_0x309b('0x1'));var timeout=require('connect-timeout');var express=require(_0x309b('0x2'));var router=express[_0x309b('0x3')]();var fs_extra=require(_0x309b('0x4'));var auth=require(_0x309b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x309b('0x6'));var controller=require(_0x309b('0x7'));router[_0x309b('0x8')]('/',auth[_0x309b('0x9')](),controller[_0x309b('0xa')]);router['get']('/:id',auth[_0x309b('0x9')](),controller[_0x309b('0xb')]);router[_0x309b('0xc')]('/',auth['isAuthenticated'](),controller[_0x309b('0xd')]);router[_0x309b('0xe')]('/:id',auth[_0x309b('0x9')](),controller[_0x309b('0xf')]);router[_0x309b('0x10')](_0x309b('0x11'),auth[_0x309b('0x9')](),controller[_0x309b('0x12')]);module[_0x309b('0x13')]=router;
\ No newline at end of file
+var _0x8e1f=['create','/:id','update','destroy','exports','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./tag.controller','get','isAuthenticated','post'];(function(_0xcdd508,_0x38975b){var _0x1febcb=function(_0x2a47b5){while(--_0x2a47b5){_0xcdd508['push'](_0xcdd508['shift']());}};_0x1febcb(++_0x38975b);}(_0x8e1f,0x95));var _0xf8e1=function(_0x5bb2e9,_0x2d3666){_0x5bb2e9=_0x5bb2e9-0x0;var _0xd073e8=_0x8e1f[_0x5bb2e9];return _0xd073e8;};'use strict';var multer=require(_0xf8e1('0x0'));var util=require(_0xf8e1('0x1'));var path=require('path');var timeout=require(_0xf8e1('0x2'));var express=require('express');var router=express[_0xf8e1('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xf8e1('0x4'));var interaction=require(_0xf8e1('0x5'));var config=require(_0xf8e1('0x6'));var controller=require(_0xf8e1('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xf8e1('0x8')]('/:id',auth[_0xf8e1('0x9')](),controller['show']);router[_0xf8e1('0xa')]('/',auth['isAuthenticated'](),controller[_0xf8e1('0xb')]);router['put'](_0xf8e1('0xc'),auth[_0xf8e1('0x9')](),controller[_0xf8e1('0xd')]);router['delete'](_0xf8e1('0xc'),auth[_0xf8e1('0x9')](),controller[_0xf8e1('0xe')]);module[_0xf8e1('0xf')]=router;
\ No newline at end of file
index 2802c3d..6773171 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85cf=['name','#0091EA','exports','STRING'];(function(_0x5e2b74,_0x37fa74){var _0x44f313=function(_0x5b060c){while(--_0x5b060c){_0x5e2b74['push'](_0x5e2b74['shift']());}};_0x44f313(++_0x37fa74);}(_0x85cf,0x76));var _0xf85c=function(_0x4f819c,_0x39feb5){_0x4f819c=_0x4f819c-0x0;var _0x4cc321=_0x85cf[_0x4f819c];return _0x4cc321;};'use strict';var Sequelize=require('sequelize');module[_0xf85c('0x0')]={'name':{'type':Sequelize[_0xf85c('0x1')],'unique':_0xf85c('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xf85c('0x1')],'defaultValue':_0xf85c('0x3')},'description':{'type':Sequelize[_0xf85c('0x1')]}};
\ No newline at end of file
+var _0x0c6b=['sequelize','STRING','name','#0091EA'];(function(_0x12df55,_0x24a2cf){var _0x2e2b72=function(_0x18c9ee){while(--_0x18c9ee){_0x12df55['push'](_0x12df55['shift']());}};_0x2e2b72(++_0x24a2cf);}(_0x0c6b,0x1bc));var _0xb0c6=function(_0x1984c9,_0x4717d3){_0x1984c9=_0x1984c9-0x0;var _0x3a59c4=_0x0c6b[_0x1984c9];return _0x3a59c4;};'use strict';var Sequelize=require(_0xb0c6('0x0'));module['exports']={'name':{'type':Sequelize[_0xb0c6('0x1')],'unique':_0xb0c6('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xb0c6('0x1')],'defaultValue':_0xb0c6('0x3')},'description':{'type':Sequelize[_0xb0c6('0x1')]}};
\ No newline at end of file
index ba1fc33..9cc2444 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80d9=['offset','count','set','Content-Range','apply','save','then','Tags','UserProfileResource','destroy','error','stack','name','index','map','Tag','fieldName','type','query','intersection','model','fields','attributes','length','nolimit','filters','pick','filter','where','merge','options','include','findAll','rows','catch','show','keys','rawAttributes','includeAll','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','update','params','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','fs-extra','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','sendStatus','status','end','json','undefined','limit'];(function(_0x46398b,_0x221566){var _0x4bf887=function(_0xd999d4){while(--_0xd999d4){_0x46398b['push'](_0x46398b['shift']());}};_0x4bf887(++_0x221566);}(_0x80d9,0x15c));var _0x980d=function(_0x343206,_0x39349e){_0x343206=_0x343206-0x0;var _0x13674d=_0x80d9[_0x343206];return _0x13674d;};'use strict';var emlformat=require(_0x980d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x980d('0x1'));var jsonpatch=require(_0x980d('0x2'));var rp=require(_0x980d('0x3'));var moment=require('moment');var BPromise=require(_0x980d('0x4'));var Mustache=require(_0x980d('0x5'));var util=require(_0x980d('0x6'));var path=require(_0x980d('0x7'));var sox=require(_0x980d('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x980d('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x980d('0xa'));var jsforce=require(_0x980d('0xb'));var deskjs=require(_0x980d('0xc'));var toCsv=require(_0x980d('0xd'));var querystring=require(_0x980d('0xe'));var Papa=require(_0x980d('0xf'));var Redis=require(_0x980d('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x980d('0x11'));var logger=require(_0x980d('0x12'))('api');var utils=require(_0x980d('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x980d('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xc0168a,_0x19cb9b){_0x19cb9b=_0x19cb9b||0xcc;return function(_0x171a61){if(_0x171a61){return _0xc0168a[_0x980d('0x15')](_0x19cb9b);}return _0xc0168a[_0x980d('0x16')](_0x19cb9b)[_0x980d('0x17')]();};}function respondWithResult(_0x109ddf,_0x3a317b){_0x3a317b=_0x3a317b||0xc8;return function(_0x5f524e){if(_0x5f524e){return _0x109ddf[_0x980d('0x16')](_0x3a317b)[_0x980d('0x18')](_0x5f524e);}};}function respondWithFilteredResult(_0x3fc5f7,_0x3846bd){return function(_0x2f229b){if(_0x2f229b){var _0x169648=typeof _0x3846bd['offset']===_0x980d('0x19')&&typeof _0x3846bd[_0x980d('0x1a')]==='undefined';var _0x1633cf=_0x2f229b['count'];var _0x23f64c=_0x169648?0x0:_0x3846bd[_0x980d('0x1b')];var _0x39192b=_0x169648?_0x2f229b[_0x980d('0x1c')]:_0x3846bd[_0x980d('0x1b')]+_0x3846bd[_0x980d('0x1a')];var _0x3ef68b;if(_0x39192b>=_0x1633cf){_0x39192b=_0x1633cf;_0x3ef68b=0xc8;}else{_0x3ef68b=0xce;}_0x3fc5f7[_0x980d('0x16')](_0x3ef68b);return _0x3fc5f7[_0x980d('0x1d')](_0x980d('0x1e'),_0x23f64c+'-'+_0x39192b+'/'+_0x1633cf)[_0x980d('0x18')](_0x2f229b);}return null;};}function patchUpdates(_0x550741){return function(_0x58dddf){try{jsonpatch[_0x980d('0x1f')](_0x58dddf,_0x550741,!![]);}catch(_0x551339){return BPromise['reject'](_0x551339);}return _0x58dddf[_0x980d('0x20')]();};}function saveUpdates(_0x1d6286,_0x45d698){return function(_0xbb89e3){if(_0xbb89e3){return _0xbb89e3['update'](_0x1d6286)['then'](function(_0x11cb45){return _0x11cb45;});}return null;};}function removeEntity(_0x4fca61,_0x4de252){return function(_0x20cea1){if(_0x20cea1){return _0x20cea1['destroy']()[_0x980d('0x21')](function(){var _0x4798d7=_0x20cea1['get']({'plain':!![]});var _0x4ecf91=_0x980d('0x22');return db[_0x980d('0x23')][_0x980d('0x24')]({'where':{'type':_0x4ecf91,'resourceId':_0x4798d7['id']}})[_0x980d('0x21')](function(){return _0x20cea1;});})['then'](function(){_0x4fca61['status'](0xcc)[_0x980d('0x17')]();});}};}function handleEntityNotFound(_0x1d5dad,_0x97ca70){return function(_0x1da8ea){if(!_0x1da8ea){_0x1d5dad[_0x980d('0x15')](0x194);}return _0x1da8ea;};}function handleError(_0x47b11d,_0x4a51f9){_0x4a51f9=_0x4a51f9||0x1f4;return function(_0x2830e5){logger[_0x980d('0x25')](_0x2830e5[_0x980d('0x26')]);if(_0x2830e5[_0x980d('0x27')]){delete _0x2830e5[_0x980d('0x27')];}_0x47b11d[_0x980d('0x16')](_0x4a51f9)['send'](_0x2830e5);};}exports[_0x980d('0x28')]=function(_0x471f52,_0xaa9cd6){var _0xd397e3={},_0x3981d8={},_0x38470b={'count':0x0,'rows':[]};var _0x868f1f=_[_0x980d('0x29')](db[_0x980d('0x2a')]['rawAttributes'],function(_0x3671b8){return{'name':_0x3671b8[_0x980d('0x2b')],'type':_0x3671b8[_0x980d('0x2c')]['key']};});_0x3981d8['model']=_[_0x980d('0x29')](_0x868f1f,'name');_0x3981d8[_0x980d('0x2d')]=_['keys'](_0x471f52['query']);_0x3981d8['filters']=_['intersection'](_0x3981d8['model'],_0x3981d8['query']);_0xd397e3['attributes']=_[_0x980d('0x2e')](_0x3981d8[_0x980d('0x2f')],qs[_0x980d('0x30')](_0x471f52['query'][_0x980d('0x30')]));_0xd397e3[_0x980d('0x31')]=_0xd397e3[_0x980d('0x31')][_0x980d('0x32')]?_0xd397e3[_0x980d('0x31')]:_0x3981d8[_0x980d('0x2f')];if(!_0x471f52[_0x980d('0x2d')]['hasOwnProperty'](_0x980d('0x33'))){_0xd397e3[_0x980d('0x1a')]=qs['limit'](_0x471f52[_0x980d('0x2d')]['limit']);_0xd397e3[_0x980d('0x1b')]=qs[_0x980d('0x1b')](_0x471f52[_0x980d('0x2d')]['offset']);}_0xd397e3['order']=qs['sort'](_0x471f52[_0x980d('0x2d')]['sort']);_0xd397e3['where']=qs[_0x980d('0x34')](_[_0x980d('0x35')](_0x471f52[_0x980d('0x2d')],_0x3981d8['filters']),_0x868f1f);if(_0x471f52[_0x980d('0x2d')][_0x980d('0x36')]){_0xd397e3[_0x980d('0x37')]=_[_0x980d('0x38')](_0xd397e3[_0x980d('0x37')],{'$or':_['map'](_0x868f1f,function(_0x5a8515){if(_0x5a8515[_0x980d('0x2c')]!=='VIRTUAL'){var _0x5b49e2={};_0x5b49e2[_0x5a8515['name']]={'$like':'%'+_0x471f52['query'][_0x980d('0x36')]+'%'};return _0x5b49e2;}})});}_0xd397e3=_[_0x980d('0x38')]({},_0xd397e3,_0x471f52[_0x980d('0x39')]);var _0x47a4ac={'where':_0xd397e3[_0x980d('0x37')]};return db[_0x980d('0x2a')][_0x980d('0x1c')](_0x47a4ac)[_0x980d('0x21')](function(_0x20a388){_0x38470b[_0x980d('0x1c')]=_0x20a388;if(_0x471f52[_0x980d('0x2d')]['includeAll']){_0xd397e3[_0x980d('0x3a')]=[{'all':!![]}];}return db[_0x980d('0x2a')][_0x980d('0x3b')](_0xd397e3);})['then'](function(_0x2a40fd){_0x38470b[_0x980d('0x3c')]=_0x2a40fd;return _0x38470b;})[_0x980d('0x21')](respondWithFilteredResult(_0xaa9cd6,_0xd397e3))[_0x980d('0x3d')](handleError(_0xaa9cd6,null));};exports[_0x980d('0x3e')]=function(_0x45831c,_0x1ad432){var _0x4d0220={'raw':!![],'where':{'id':_0x45831c['params']['id']}},_0x473c94={};_0x473c94[_0x980d('0x2f')]=_[_0x980d('0x3f')](db[_0x980d('0x2a')][_0x980d('0x40')]);_0x473c94[_0x980d('0x2d')]=_[_0x980d('0x3f')](_0x45831c[_0x980d('0x2d')]);_0x473c94[_0x980d('0x34')]=_['intersection'](_0x473c94['model'],_0x473c94[_0x980d('0x2d')]);_0x4d0220[_0x980d('0x31')]=_[_0x980d('0x2e')](_0x473c94[_0x980d('0x2f')],qs[_0x980d('0x30')](_0x45831c['query'][_0x980d('0x30')]));_0x4d0220[_0x980d('0x31')]=_0x4d0220['attributes'][_0x980d('0x32')]?_0x4d0220[_0x980d('0x31')]:_0x473c94[_0x980d('0x2f')];if(_0x45831c[_0x980d('0x2d')][_0x980d('0x41')]){_0x4d0220[_0x980d('0x3a')]=[{'all':!![]}];}_0x4d0220=_[_0x980d('0x38')]({},_0x4d0220,_0x45831c[_0x980d('0x39')]);return db[_0x980d('0x2a')]['find'](_0x4d0220)[_0x980d('0x21')](handleEntityNotFound(_0x1ad432,null))[_0x980d('0x21')](respondWithResult(_0x1ad432,null))[_0x980d('0x3d')](handleError(_0x1ad432,null));};exports[_0x980d('0x42')]=function(_0x2e18c6,_0x7d0acf){return db[_0x980d('0x2a')]['create'](_0x2e18c6[_0x980d('0x43')],{})['then'](function(_0x33c914){var _0x6e16c1=_0x2e18c6[_0x980d('0x44')][_0x980d('0x45')]({'plain':!![]});if(!_0x6e16c1)throw new Error(_0x980d('0x46'));if(_0x6e16c1['role']===_0x980d('0x44')){var _0x448b3c=_0x33c914[_0x980d('0x45')]({'plain':!![]});var _0x12c1ea=_0x980d('0x22');return db[_0x980d('0x47')][_0x980d('0x48')]({'where':{'name':_0x12c1ea,'userProfileId':_0x6e16c1['userProfileId']},'raw':!![]})['then'](function(_0x508663){if(_0x508663&&_0x508663['autoAssociation']===0x0){return db[_0x980d('0x23')][_0x980d('0x42')]({'name':_0x448b3c[_0x980d('0x27')],'resourceId':_0x448b3c['id'],'type':_0x508663[_0x980d('0x27')],'sectionId':_0x508663['id']},{})[_0x980d('0x21')](function(){return _0x33c914;});}else{return _0x33c914;}})[_0x980d('0x3d')](function(_0x5cd6a0){logger[_0x980d('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5cd6a0);throw _0x5cd6a0;});}return _0x33c914;})[_0x980d('0x21')](respondWithResult(_0x7d0acf,0xc9))[_0x980d('0x3d')](handleError(_0x7d0acf,null));};exports[_0x980d('0x49')]=function(_0x4656f4,_0x522b28){if(_0x4656f4['body']['id']){delete _0x4656f4[_0x980d('0x43')]['id'];}return db[_0x980d('0x2a')][_0x980d('0x48')]({'where':{'id':_0x4656f4['params']['id']}})['then'](handleEntityNotFound(_0x522b28,null))[_0x980d('0x21')](saveUpdates(_0x4656f4['body'],null))[_0x980d('0x21')](respondWithResult(_0x522b28,null))[_0x980d('0x3d')](handleError(_0x522b28,null));};exports[_0x980d('0x24')]=function(_0x15427b,_0x20459e){return db[_0x980d('0x2a')][_0x980d('0x48')]({'where':{'id':_0x15427b[_0x980d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x20459e,null))['then'](removeEntity(_0x20459e,null))[_0x980d('0x3d')](handleError(_0x20459e,null));};
\ No newline at end of file
+var _0x303a=['update','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','get','sendStatus','error','stack','name','send','index','map','Tag','rawAttributes','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','intersection','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Tags','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x20d916,_0x4bfa65){var _0x366417=function(_0xb3c76c){while(--_0xb3c76c){_0x20d916['push'](_0x20d916['shift']());}};_0x366417(++_0x4bfa65);}(_0x303a,0x1a0));var _0xa303=function(_0x38db77,_0x18239f){_0x38db77=_0x38db77-0x0;var _0x916e60=_0x303a[_0x38db77];return _0x916e60;};'use strict';var emlformat=require(_0xa303('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa303('0x1'));var jsonpatch=require(_0xa303('0x2'));var rp=require(_0xa303('0x3'));var moment=require(_0xa303('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa303('0x5'));var util=require(_0xa303('0x6'));var path=require(_0xa303('0x7'));var sox=require(_0xa303('0x8'));var csv=require(_0xa303('0x9'));var ejs=require(_0xa303('0xa'));var fs=require('fs');var fs_extra=require(_0xa303('0xb'));var _=require(_0xa303('0xc'));var squel=require(_0xa303('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa303('0x9'));var querystring=require(_0xa303('0xe'));var Papa=require('papaparse');var Redis=require(_0xa303('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xa303('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa303('0x11'));var logger=require(_0xa303('0x12'))(_0xa303('0x13'));var utils=require(_0xa303('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa303('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xf5df1e,_0x43a054){_0x43a054=_0x43a054||0xcc;return function(_0x2ed971){if(_0x2ed971){return _0xf5df1e['sendStatus'](_0x43a054);}return _0xf5df1e[_0xa303('0x16')](_0x43a054)[_0xa303('0x17')]();};}function respondWithResult(_0x28cd7f,_0xfa522c){_0xfa522c=_0xfa522c||0xc8;return function(_0xed0420){if(_0xed0420){return _0x28cd7f[_0xa303('0x16')](_0xfa522c)[_0xa303('0x18')](_0xed0420);}};}function respondWithFilteredResult(_0x2d1110,_0x4c8bc1){return function(_0x2c2939){if(_0x2c2939){var _0xd2e8ee=typeof _0x4c8bc1[_0xa303('0x19')]===_0xa303('0x1a')&&typeof _0x4c8bc1[_0xa303('0x1b')]===_0xa303('0x1a');var _0x5ec243=_0x2c2939[_0xa303('0x1c')];var _0x54ca49=_0xd2e8ee?0x0:_0x4c8bc1[_0xa303('0x19')];var _0x4cf535=_0xd2e8ee?_0x2c2939[_0xa303('0x1c')]:_0x4c8bc1['offset']+_0x4c8bc1[_0xa303('0x1b')];var _0xe263f9;if(_0x4cf535>=_0x5ec243){_0x4cf535=_0x5ec243;_0xe263f9=0xc8;}else{_0xe263f9=0xce;}_0x2d1110[_0xa303('0x16')](_0xe263f9);return _0x2d1110['set'](_0xa303('0x1d'),_0x54ca49+'-'+_0x4cf535+'/'+_0x5ec243)[_0xa303('0x18')](_0x2c2939);}return null;};}function patchUpdates(_0x1b0566){return function(_0x59e551){try{jsonpatch[_0xa303('0x1e')](_0x59e551,_0x1b0566,!![]);}catch(_0x3bc8c3){return BPromise[_0xa303('0x1f')](_0x3bc8c3);}return _0x59e551[_0xa303('0x20')]();};}function saveUpdates(_0x54b173,_0x14f9ab){return function(_0x2a2512){if(_0x2a2512){return _0x2a2512['update'](_0x54b173)[_0xa303('0x21')](function(_0x27c1d7){return _0x27c1d7;});}return null;};}function removeEntity(_0x25db9c,_0x122d1e){return function(_0x65ab0e){if(_0x65ab0e){return _0x65ab0e[_0xa303('0x22')]()[_0xa303('0x21')](function(){var _0x5d9dee=_0x65ab0e[_0xa303('0x23')]({'plain':!![]});var _0x57d584='Tags';return db['UserProfileResource']['destroy']({'where':{'type':_0x57d584,'resourceId':_0x5d9dee['id']}})['then'](function(){return _0x65ab0e;});})[_0xa303('0x21')](function(){_0x25db9c[_0xa303('0x16')](0xcc)[_0xa303('0x17')]();});}};}function handleEntityNotFound(_0xbb93f0,_0x94d3e4){return function(_0x48e79f){if(!_0x48e79f){_0xbb93f0[_0xa303('0x24')](0x194);}return _0x48e79f;};}function handleError(_0xb35c22,_0x561d73){_0x561d73=_0x561d73||0x1f4;return function(_0x221f59){logger[_0xa303('0x25')](_0x221f59[_0xa303('0x26')]);if(_0x221f59[_0xa303('0x27')]){delete _0x221f59[_0xa303('0x27')];}_0xb35c22[_0xa303('0x16')](_0x561d73)[_0xa303('0x28')](_0x221f59);};}exports[_0xa303('0x29')]=function(_0x411b42,_0x3383f4){var _0x9b7e61={},_0x217967={},_0x2f7775={'count':0x0,'rows':[]};var _0x1a44fc=_[_0xa303('0x2a')](db[_0xa303('0x2b')][_0xa303('0x2c')],function(_0x5de180){return{'name':_0x5de180['fieldName'],'type':_0x5de180[_0xa303('0x2d')][_0xa303('0x2e')]};});_0x217967[_0xa303('0x2f')]=_[_0xa303('0x2a')](_0x1a44fc,'name');_0x217967[_0xa303('0x30')]=_[_0xa303('0x31')](_0x411b42[_0xa303('0x30')]);_0x217967[_0xa303('0x32')]=_['intersection'](_0x217967[_0xa303('0x2f')],_0x217967[_0xa303('0x30')]);_0x9b7e61[_0xa303('0x33')]=_['intersection'](_0x217967[_0xa303('0x2f')],qs[_0xa303('0x34')](_0x411b42[_0xa303('0x30')]['fields']));_0x9b7e61[_0xa303('0x33')]=_0x9b7e61[_0xa303('0x33')][_0xa303('0x35')]?_0x9b7e61['attributes']:_0x217967[_0xa303('0x2f')];if(!_0x411b42[_0xa303('0x30')][_0xa303('0x36')](_0xa303('0x37'))){_0x9b7e61['limit']=qs[_0xa303('0x1b')](_0x411b42[_0xa303('0x30')][_0xa303('0x1b')]);_0x9b7e61[_0xa303('0x19')]=qs['offset'](_0x411b42[_0xa303('0x30')][_0xa303('0x19')]);}_0x9b7e61[_0xa303('0x38')]=qs[_0xa303('0x39')](_0x411b42[_0xa303('0x30')]['sort']);_0x9b7e61['where']=qs[_0xa303('0x32')](_[_0xa303('0x3a')](_0x411b42[_0xa303('0x30')],_0x217967['filters']),_0x1a44fc);if(_0x411b42['query'][_0xa303('0x3b')]){_0x9b7e61[_0xa303('0x3c')]=_[_0xa303('0x3d')](_0x9b7e61[_0xa303('0x3c')],{'$or':_['map'](_0x1a44fc,function(_0x59e413){if(_0x59e413[_0xa303('0x2d')]!==_0xa303('0x3e')){var _0x1c99b4={};_0x1c99b4[_0x59e413[_0xa303('0x27')]]={'$like':'%'+_0x411b42[_0xa303('0x30')]['filter']+'%'};return _0x1c99b4;}})});}_0x9b7e61=_[_0xa303('0x3d')]({},_0x9b7e61,_0x411b42[_0xa303('0x3f')]);var _0x468928={'where':_0x9b7e61[_0xa303('0x3c')]};return db['Tag']['count'](_0x468928)['then'](function(_0x1805f6){_0x2f7775[_0xa303('0x1c')]=_0x1805f6;if(_0x411b42[_0xa303('0x30')][_0xa303('0x40')]){_0x9b7e61[_0xa303('0x41')]=[{'all':!![]}];}return db[_0xa303('0x2b')][_0xa303('0x42')](_0x9b7e61);})[_0xa303('0x21')](function(_0x3615c5){_0x2f7775[_0xa303('0x43')]=_0x3615c5;return _0x2f7775;})[_0xa303('0x21')](respondWithFilteredResult(_0x3383f4,_0x9b7e61))['catch'](handleError(_0x3383f4,null));};exports['show']=function(_0x45fb2f,_0x54e558){var _0x839adf={'raw':!![],'where':{'id':_0x45fb2f[_0xa303('0x44')]['id']}},_0x564d59={};_0x564d59[_0xa303('0x2f')]=_[_0xa303('0x31')](db[_0xa303('0x2b')][_0xa303('0x2c')]);_0x564d59[_0xa303('0x30')]=_[_0xa303('0x31')](_0x45fb2f[_0xa303('0x30')]);_0x564d59[_0xa303('0x32')]=_[_0xa303('0x45')](_0x564d59[_0xa303('0x2f')],_0x564d59[_0xa303('0x30')]);_0x839adf[_0xa303('0x33')]=_['intersection'](_0x564d59[_0xa303('0x2f')],qs['fields'](_0x45fb2f[_0xa303('0x30')][_0xa303('0x34')]));_0x839adf[_0xa303('0x33')]=_0x839adf['attributes']['length']?_0x839adf[_0xa303('0x33')]:_0x564d59[_0xa303('0x2f')];if(_0x45fb2f[_0xa303('0x30')][_0xa303('0x40')]){_0x839adf[_0xa303('0x41')]=[{'all':!![]}];}_0x839adf=_[_0xa303('0x3d')]({},_0x839adf,_0x45fb2f[_0xa303('0x3f')]);return db[_0xa303('0x2b')][_0xa303('0x46')](_0x839adf)[_0xa303('0x21')](handleEntityNotFound(_0x54e558,null))['then'](respondWithResult(_0x54e558,null))[_0xa303('0x47')](handleError(_0x54e558,null));};exports[_0xa303('0x48')]=function(_0x532003,_0x3cc97a){return db['Tag'][_0xa303('0x48')](_0x532003[_0xa303('0x49')],{})[_0xa303('0x21')](function(_0x3fd1be){var _0x5a6da0=_0x532003[_0xa303('0x4a')][_0xa303('0x23')]({'plain':!![]});if(!_0x5a6da0)throw new Error(_0xa303('0x4b'));if(_0x5a6da0[_0xa303('0x4c')]===_0xa303('0x4a')){var _0x16242c=_0x3fd1be['get']({'plain':!![]});var _0x1a8bc0=_0xa303('0x4d');return db[_0xa303('0x4e')][_0xa303('0x46')]({'where':{'name':_0x1a8bc0,'userProfileId':_0x5a6da0['userProfileId']},'raw':!![]})['then'](function(_0x34547d){if(_0x34547d&&_0x34547d[_0xa303('0x4f')]===0x0){return db[_0xa303('0x50')]['create']({'name':_0x16242c[_0xa303('0x27')],'resourceId':_0x16242c['id'],'type':_0x34547d['name'],'sectionId':_0x34547d['id']},{})['then'](function(){return _0x3fd1be;});}else{return _0x3fd1be;}})['catch'](function(_0x51c4db){logger[_0xa303('0x25')](_0xa303('0x51'),_0x51c4db);throw _0x51c4db;});}return _0x3fd1be;})['then'](respondWithResult(_0x3cc97a,0xc9))[_0xa303('0x47')](handleError(_0x3cc97a,null));};exports[_0xa303('0x52')]=function(_0x33a667,_0x3cda19){if(_0x33a667[_0xa303('0x49')]['id']){delete _0x33a667['body']['id'];}return db[_0xa303('0x2b')][_0xa303('0x46')]({'where':{'id':_0x33a667[_0xa303('0x44')]['id']}})[_0xa303('0x21')](handleEntityNotFound(_0x3cda19,null))[_0xa303('0x21')](saveUpdates(_0x33a667['body'],null))['then'](respondWithResult(_0x3cda19,null))[_0xa303('0x47')](handleError(_0x3cda19,null));};exports[_0xa303('0x22')]=function(_0x3e377b,_0x87a096){return db[_0xa303('0x2b')][_0xa303('0x46')]({'where':{'id':_0x3e377b[_0xa303('0x44')]['id']}})[_0xa303('0x21')](handleEntityNotFound(_0x87a096,null))[_0xa303('0x21')](removeEntity(_0x87a096,null))['catch'](handleError(_0x87a096,null));};
\ No newline at end of file
index bc7d93d..fe2e4fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d1b=['moment','bluebird','request-promise','rimraf','../../config/environment','define','Tag','tools_tags','lodash','util','../../config/logger','api'];(function(_0x1e8d97,_0x2702d1){var _0x311523=function(_0xbbfd60){while(--_0xbbfd60){_0x1e8d97['push'](_0x1e8d97['shift']());}};_0x311523(++_0x2702d1);}(_0x1d1b,0x110));var _0xb1d1=function(_0x4b6b31,_0x2102d1){_0x4b6b31=_0x4b6b31-0x0;var _0x1dad53=_0x1d1b[_0x4b6b31];return _0x1dad53;};'use strict';var _=require(_0xb1d1('0x0'));var util=require(_0xb1d1('0x1'));var logger=require(_0xb1d1('0x2'))(_0xb1d1('0x3'));var moment=require(_0xb1d1('0x4'));var BPromise=require(_0xb1d1('0x5'));var rp=require(_0xb1d1('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb1d1('0x7'));var config=require(_0xb1d1('0x8'));var attributes=require('./tag.attributes');module['exports']=function(_0x45e162,_0x1adc8e){return _0x45e162[_0xb1d1('0x9')](_0xb1d1('0xa'),attributes,{'tableName':_0xb1d1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5f4b=['tools_tags','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./tag.attributes','exports','define','Tag'];(function(_0x146837,_0x2aa6a2){var _0x3d7e60=function(_0x1301ac){while(--_0x1301ac){_0x146837['push'](_0x146837['shift']());}};_0x3d7e60(++_0x2aa6a2);}(_0x5f4b,0x1b3));var _0xb5f4=function(_0x5cf6d8,_0x363522){_0x5cf6d8=_0x5cf6d8-0x0;var _0xd2aa1a=_0x5f4b[_0x5cf6d8];return _0xd2aa1a;};'use strict';var _=require(_0xb5f4('0x0'));var util=require(_0xb5f4('0x1'));var logger=require(_0xb5f4('0x2'))(_0xb5f4('0x3'));var moment=require(_0xb5f4('0x4'));var BPromise=require(_0xb5f4('0x5'));var rp=require(_0xb5f4('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb5f4('0x7'));var config=require(_0xb5f4('0x8'));var attributes=require(_0xb5f4('0x9'));module[_0xb5f4('0xa')]=function(_0x4021ea,_0xf8e3ab){return _0x4021ea[_0xb5f4('0xb')](_0xb5f4('0xc'),attributes,{'tableName':_0xb5f4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 53149f2..a1b8088 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0bb=['debug','stringify','error','code','Tag,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','request\x20sent'];(function(_0x28fce2,_0x2e4c7f){var _0x330a94=function(_0x56d4e6){while(--_0x56d4e6){_0x28fce2['push'](_0x28fce2['shift']());}};_0x330a94(++_0x2e4c7f);}(_0xd0bb,0x1eb));var _0xbd0b=function(_0x4e322c,_0x4c95b3){_0x4e322c=_0x4e322c-0x0;var _0x358af7=_0xd0bb[_0x4e322c];return _0x358af7;};'use strict';var _=require(_0xbd0b('0x0'));var util=require(_0xbd0b('0x1'));var moment=require(_0xbd0b('0x2'));var BPromise=require('bluebird');var rs=require(_0xbd0b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbd0b('0x4'))['db'];var utils=require(_0xbd0b('0x5'));var logger=require('../../config/logger')(_0xbd0b('0x6'));var config=require('../../config/environment');var jayson=require(_0xbd0b('0x7'));var client=jayson[_0xbd0b('0x8')][_0xbd0b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x37c205,_0x809599,_0x5eb975){return new BPromise(function(_0x2a4075,_0x4533ff){return client[_0xbd0b('0xa')](_0x37c205,_0x5eb975)[_0xbd0b('0xb')](function(_0x16e185){logger['info']('Tag,\x20%s,\x20%s',_0x809599,_0xbd0b('0xc'));logger[_0xbd0b('0xd')]('Tag,\x20%s,\x20%s,\x20%s',_0x809599,_0xbd0b('0xc'),JSON[_0xbd0b('0xe')](_0x16e185));if(_0x16e185['error']){if(_0x16e185[_0xbd0b('0xf')][_0xbd0b('0x10')]===0x1f4){logger[_0xbd0b('0xf')](_0xbd0b('0x11'),_0x809599,_0x16e185[_0xbd0b('0xf')][_0xbd0b('0x12')]);return _0x4533ff(_0x16e185[_0xbd0b('0xf')][_0xbd0b('0x12')]);}logger[_0xbd0b('0xf')](_0xbd0b('0x11'),_0x809599,_0x16e185[_0xbd0b('0xf')]['message']);return _0x2a4075(_0x16e185[_0xbd0b('0xf')]['message']);}else{logger['info'](_0xbd0b('0x11'),_0x809599,_0xbd0b('0xc'));_0x2a4075(_0x16e185[_0xbd0b('0x13')][_0xbd0b('0x12')]);}})[_0xbd0b('0x14')](function(_0x546db3){logger['error'](_0xbd0b('0x11'),_0x809599,_0x546db3);_0x4533ff(_0x546db3);});});}
\ No newline at end of file
+var _0xee24=['stringify','error','code','Tag,\x20%s,\x20%s','message','info','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s'];(function(_0x24249d,_0x367ce0){var _0x43436d=function(_0x9aff80){while(--_0x9aff80){_0x24249d['push'](_0x24249d['shift']());}};_0x43436d(++_0x367ce0);}(_0xee24,0x1a6));var _0x4ee2=function(_0x42ab91,_0x2a0179){_0x42ab91=_0x42ab91-0x0;var _0x259d35=_0xee24[_0x42ab91];return _0x259d35;};'use strict';var _=require('lodash');var util=require(_0x4ee2('0x0'));var moment=require(_0x4ee2('0x1'));var BPromise=require('bluebird');var rs=require(_0x4ee2('0x2'));var fs=require('fs');var Redis=require(_0x4ee2('0x3'));var db=require(_0x4ee2('0x4'))['db'];var utils=require(_0x4ee2('0x5'));var logger=require('../../config/logger')(_0x4ee2('0x6'));var config=require(_0x4ee2('0x7'));var jayson=require(_0x4ee2('0x8'));var client=jayson[_0x4ee2('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2e6e11,_0x319d9d,_0xe966eb){return new BPromise(function(_0x9a963c,_0x8d7266){return client[_0x4ee2('0xa')](_0x2e6e11,_0xe966eb)[_0x4ee2('0xb')](function(_0x3b6028){logger['info']('Tag,\x20%s,\x20%s',_0x319d9d,_0x4ee2('0xc'));logger[_0x4ee2('0xd')](_0x4ee2('0xe'),_0x319d9d,_0x4ee2('0xc'),JSON[_0x4ee2('0xf')](_0x3b6028));if(_0x3b6028['error']){if(_0x3b6028[_0x4ee2('0x10')][_0x4ee2('0x11')]===0x1f4){logger[_0x4ee2('0x10')](_0x4ee2('0x12'),_0x319d9d,_0x3b6028['error'][_0x4ee2('0x13')]);return _0x8d7266(_0x3b6028[_0x4ee2('0x10')][_0x4ee2('0x13')]);}logger[_0x4ee2('0x10')]('Tag,\x20%s,\x20%s',_0x319d9d,_0x3b6028['error'][_0x4ee2('0x13')]);return _0x9a963c(_0x3b6028[_0x4ee2('0x10')]['message']);}else{logger[_0x4ee2('0x14')](_0x4ee2('0x12'),_0x319d9d,_0x4ee2('0xc'));_0x9a963c(_0x3b6028[_0x4ee2('0x15')][_0x4ee2('0x13')]);}})[_0x4ee2('0x16')](function(_0x5e19f8){logger[_0x4ee2('0x10')](_0x4ee2('0x12'),_0x319d9d,_0x5e19f8);_0x8d7266(_0x5e19f8);});});}
\ No newline at end of file
index 8fec69a..a31cb7f 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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'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(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xa9e0[_0x4709c0];return _0x13348b;};'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 6976c7d..f692bf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','sequelize'];(function(_0x5cf2e5,_0x2f7a8e){var _0xb10474=function(_0xefb1a4){while(--_0xefb1a4){_0x5cf2e5['push'](_0x5cf2e5['shift']());}};_0xb10474(++_0x2f7a8e);}(_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 _0xd8b0=['exports','sequelize'];(function(_0x50e064,_0x42e0fc){var _0x1c42d7=function(_0x4ce33c){while(--_0x4ce33c){_0x50e064['push'](_0x50e064['shift']());}};_0x1c42d7(++_0x42e0fc);}(_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
index 68aa97c..6f7b6d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d1d=['bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','redis','defaults','./team.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','update','then','stack','name','send','index','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','map','merge','options','Team','include','findAll','rows','catch','show','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','Teams','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','destroy','sequelize','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','UserVoiceQueue','MailQueueId','UserMailQueue','SmsQueueId','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','UserChatQueue','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','UserOpenchannelQueue','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','getQueues','channel','isValidChannel','ValidationError','capitalize','Queues','addQueues','findOne','toLowerCase','ids','removeQueues','remove','addAgents','isArray','Chat','Sms','Fax','Openchannel','Whatsapp','Voice','penalty','TeamVoiceQueue','User','Queue','emit','Queue:save','QueueId','voicePause','interface','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','all','spread','removeAgents','Mail','Queue:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment'];(function(_0x29d623,_0x1a5c9c){var _0x242e59=function(_0x2c78ab){while(--_0x2c78ab){_0x29d623['push'](_0x29d623['shift']());}};_0x242e59(++_0x1a5c9c);}(_0x1d1d,0x92));var _0xd1d1=function(_0x491685,_0x19a38d){_0x491685=_0x491685-0x0;var _0x58ffbe=_0x1d1d[_0x491685];return _0x58ffbe;};'use strict';var emlformat=require(_0xd1d1('0x0'));var rimraf=require(_0xd1d1('0x1'));var zipdir=require(_0xd1d1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd1d1('0x3'));var moment=require(_0xd1d1('0x4'));var BPromise=require(_0xd1d1('0x5'));var Mustache=require(_0xd1d1('0x6'));var util=require(_0xd1d1('0x7'));var path=require(_0xd1d1('0x8'));var sox=require('sox');var csv=require(_0xd1d1('0x9'));var ejs=require(_0xd1d1('0xa'));var fs=require('fs');var fs_extra=require(_0xd1d1('0xb'));var _=require(_0xd1d1('0xc'));var squel=require(_0xd1d1('0xd'));var crypto=require(_0xd1d1('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xd1d1('0xf'));var toCsv=require(_0xd1d1('0x9'));var querystring=require(_0xd1d1('0x10'));var Papa=require(_0xd1d1('0x11'));var Redis=require(_0xd1d1('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xd1d1('0x13'));var as=require(_0xd1d1('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd1d1('0x15'));var utils=require(_0xd1d1('0x16'));var config=require(_0xd1d1('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xd1d1('0x18')]=_[_0xd1d1('0x19')](config[_0xd1d1('0x18')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xd1d1('0x1a'))[_0xd1d1('0x1b')](socket);function respondWithStatusCode(_0x3df150,_0x15339){_0x15339=_0x15339||0xcc;return function(_0x25e8c5){if(_0x25e8c5){return _0x3df150[_0xd1d1('0x1c')](_0x15339);}return _0x3df150[_0xd1d1('0x1d')](_0x15339)[_0xd1d1('0x1e')]();};}function respondWithResult(_0x2a2b88,_0x36fb60){_0x36fb60=_0x36fb60||0xc8;return function(_0xf3574e){if(_0xf3574e){return _0x2a2b88[_0xd1d1('0x1d')](_0x36fb60)[_0xd1d1('0x1f')](_0xf3574e);}};}function respondWithFilteredResult(_0x50381d,_0x2a8f09){return function(_0x476fc4){if(_0x476fc4){var _0x4e9212=typeof _0x2a8f09[_0xd1d1('0x20')]===_0xd1d1('0x21')&&typeof _0x2a8f09[_0xd1d1('0x22')]===_0xd1d1('0x21');var _0x1220bc=_0x476fc4[_0xd1d1('0x23')];var _0x18a732=_0x4e9212?0x0:_0x2a8f09[_0xd1d1('0x20')];var _0x82461b=_0x4e9212?_0x476fc4[_0xd1d1('0x23')]:_0x2a8f09[_0xd1d1('0x20')]+_0x2a8f09['limit'];var _0x3b9e7a;if(_0x82461b>=_0x1220bc){_0x82461b=_0x1220bc;_0x3b9e7a=0xc8;}else{_0x3b9e7a=0xce;}_0x50381d[_0xd1d1('0x1d')](_0x3b9e7a);return _0x50381d[_0xd1d1('0x24')]('Content-Range',_0x18a732+'-'+_0x82461b+'/'+_0x1220bc)[_0xd1d1('0x1f')](_0x476fc4);}return null;};}function patchUpdates(_0x21d961){return function(_0x418a96){try{jsonpatch[_0xd1d1('0x25')](_0x418a96,_0x21d961,!![]);}catch(_0x465d74){return BPromise['reject'](_0x465d74);}return _0x418a96['save']();};}function saveUpdates(_0x46bbd0,_0x4df21a){return function(_0xab58c0){if(_0xab58c0){return _0xab58c0[_0xd1d1('0x26')](_0x46bbd0)[_0xd1d1('0x27')](function(_0x222545){return _0x222545;});}return null;};}function handleEntityNotFound(_0xc02368,_0x5360a7){return function(_0x29f618){if(!_0x29f618){_0xc02368[_0xd1d1('0x1c')](0x194);}return _0x29f618;};}function handleError(_0x3872a8,_0x5cf755){_0x5cf755=_0x5cf755||0x1f4;return function(_0x2d5b98){logger['error'](_0x2d5b98[_0xd1d1('0x28')]);if(_0x2d5b98[_0xd1d1('0x29')]){delete _0x2d5b98[_0xd1d1('0x29')];}_0x3872a8[_0xd1d1('0x1d')](_0x5cf755)[_0xd1d1('0x2a')](_0x2d5b98);};}exports[_0xd1d1('0x2b')]=function(_0x11c416,_0x205758){var _0x2aa79e={},_0x3c3181={},_0x22f312={'count':0x0,'rows':[]};var _0x473175=_['map'](db['Team'][_0xd1d1('0x2c')],function(_0xa2da32){return{'name':_0xa2da32[_0xd1d1('0x2d')],'type':_0xa2da32[_0xd1d1('0x2e')][_0xd1d1('0x2f')]};});_0x3c3181[_0xd1d1('0x30')]=_['map'](_0x473175,'name');_0x3c3181[_0xd1d1('0x31')]=_[_0xd1d1('0x32')](_0x11c416[_0xd1d1('0x31')]);_0x3c3181[_0xd1d1('0x33')]=_[_0xd1d1('0x34')](_0x3c3181[_0xd1d1('0x30')],_0x3c3181['query']);_0x2aa79e[_0xd1d1('0x35')]=_[_0xd1d1('0x34')](_0x3c3181['model'],qs[_0xd1d1('0x36')](_0x11c416[_0xd1d1('0x31')][_0xd1d1('0x36')]));_0x2aa79e[_0xd1d1('0x35')]=_0x2aa79e[_0xd1d1('0x35')][_0xd1d1('0x37')]?_0x2aa79e['attributes']:_0x3c3181[_0xd1d1('0x30')];if(!_0x11c416[_0xd1d1('0x31')]['hasOwnProperty'](_0xd1d1('0x38'))){_0x2aa79e['limit']=qs[_0xd1d1('0x22')](_0x11c416[_0xd1d1('0x31')][_0xd1d1('0x22')]);_0x2aa79e[_0xd1d1('0x20')]=qs['offset'](_0x11c416[_0xd1d1('0x31')][_0xd1d1('0x20')]);}_0x2aa79e[_0xd1d1('0x39')]=qs[_0xd1d1('0x3a')](_0x11c416[_0xd1d1('0x31')]['sort']);_0x2aa79e['where']=qs[_0xd1d1('0x33')](_[_0xd1d1('0x3b')](_0x11c416[_0xd1d1('0x31')],_0x3c3181[_0xd1d1('0x33')]),_0x473175);if(_0x11c416[_0xd1d1('0x31')][_0xd1d1('0x3c')]){_0x2aa79e[_0xd1d1('0x3d')]=_['merge'](_0x2aa79e[_0xd1d1('0x3d')],{'$or':_[_0xd1d1('0x3e')](_0x473175,function(_0x293920){if(_0x293920[_0xd1d1('0x2e')]!=='VIRTUAL'){var _0x580d34={};_0x580d34[_0x293920[_0xd1d1('0x29')]]={'$like':'%'+_0x11c416[_0xd1d1('0x31')][_0xd1d1('0x3c')]+'%'};return _0x580d34;}})});}_0x2aa79e=_[_0xd1d1('0x3f')]({},_0x2aa79e,_0x11c416[_0xd1d1('0x40')]);var _0x5061cc={'where':_0x2aa79e['where']};return db[_0xd1d1('0x41')][_0xd1d1('0x23')](_0x5061cc)['then'](function(_0x47d7e2){_0x22f312[_0xd1d1('0x23')]=_0x47d7e2;if(_0x11c416['query']['includeAll']){_0x2aa79e[_0xd1d1('0x42')]=[{'all':!![]}];}return db[_0xd1d1('0x41')][_0xd1d1('0x43')](_0x2aa79e);})[_0xd1d1('0x27')](function(_0x4fc0c3){_0x22f312[_0xd1d1('0x44')]=_0x4fc0c3;return _0x22f312;})[_0xd1d1('0x27')](respondWithFilteredResult(_0x205758,_0x2aa79e))[_0xd1d1('0x45')](handleError(_0x205758,null));};exports[_0xd1d1('0x46')]=function(_0x39a24d,_0x2cc277){var _0x1fb664={'raw':![],'where':{'id':_0x39a24d['params']['id']}},_0x3d9407={};_0x3d9407[_0xd1d1('0x30')]=_[_0xd1d1('0x32')](db['Team'][_0xd1d1('0x2c')]);_0x3d9407[_0xd1d1('0x31')]=_[_0xd1d1('0x32')](_0x39a24d[_0xd1d1('0x31')]);_0x3d9407[_0xd1d1('0x33')]=_[_0xd1d1('0x34')](_0x3d9407[_0xd1d1('0x30')],_0x3d9407[_0xd1d1('0x31')]);_0x1fb664['attributes']=_['intersection'](_0x3d9407[_0xd1d1('0x30')],qs[_0xd1d1('0x36')](_0x39a24d['query'][_0xd1d1('0x36')]));_0x1fb664[_0xd1d1('0x35')]=_0x1fb664[_0xd1d1('0x35')]['length']?_0x1fb664[_0xd1d1('0x35')]:_0x3d9407[_0xd1d1('0x30')];if(_0x39a24d['query'][_0xd1d1('0x47')]){_0x1fb664['include']=[{'all':!![]}];}_0x1fb664=_[_0xd1d1('0x3f')]({},_0x1fb664,_0x39a24d[_0xd1d1('0x40')]);return db[_0xd1d1('0x41')][_0xd1d1('0x48')](_0x1fb664)[_0xd1d1('0x27')](handleEntityNotFound(_0x2cc277,null))['then'](respondWithResult(_0x2cc277,null))[_0xd1d1('0x45')](handleError(_0x2cc277,null));};exports[_0xd1d1('0x49')]=function(_0x34f5f0,_0x540d09){return db[_0xd1d1('0x41')]['create'](_0x34f5f0[_0xd1d1('0x4a')],{})[_0xd1d1('0x27')](function(_0x39f4ff){var _0x5c00e3=_0x34f5f0[_0xd1d1('0x4b')]['get']({'plain':!![]});if(!_0x5c00e3)throw new Error(_0xd1d1('0x4c'));if(_0x5c00e3[_0xd1d1('0x4d')]===_0xd1d1('0x4b')){var _0x5b3e38=_0x39f4ff[_0xd1d1('0x4e')]({'plain':!![]});var _0x383b3d=_0xd1d1('0x4f');return db['UserProfileSection']['find']({'where':{'name':_0x383b3d,'userProfileId':_0x5c00e3[_0xd1d1('0x50')]},'raw':!![]})[_0xd1d1('0x27')](function(_0x64123c){if(_0x64123c&&_0x64123c[_0xd1d1('0x51')]===0x0){return db[_0xd1d1('0x52')][_0xd1d1('0x49')]({'name':_0x5b3e38[_0xd1d1('0x29')],'resourceId':_0x5b3e38['id'],'type':_0x64123c[_0xd1d1('0x29')],'sectionId':_0x64123c['id']},{})[_0xd1d1('0x27')](function(){return _0x39f4ff;});}else{return _0x39f4ff;}})['catch'](function(_0x311b59){logger[_0xd1d1('0x53')](_0xd1d1('0x54'),_0x311b59);throw _0x311b59;});}return _0x39f4ff;})[_0xd1d1('0x27')](respondWithResult(_0x540d09,0xc9))[_0xd1d1('0x45')](handleError(_0x540d09,null));};exports[_0xd1d1('0x26')]=function(_0x3e2ddc,_0x5e3cb9){if(_0x3e2ddc[_0xd1d1('0x4a')]['id']){delete _0x3e2ddc['body']['id'];}return db[_0xd1d1('0x41')]['find']({'where':{'id':_0x3e2ddc[_0xd1d1('0x55')]['id']}})[_0xd1d1('0x27')](handleEntityNotFound(_0x5e3cb9,null))['then'](saveUpdates(_0x3e2ddc['body'],null))['then'](respondWithResult(_0x5e3cb9,null))['catch'](handleError(_0x5e3cb9,null));};exports[_0xd1d1('0x56')]=function(_0x2beecc,_0x111b97){var _0x32f822=_0x2beecc[_0xd1d1('0x55')]['id'];var _0x4f3e42=[];return db[_0xd1d1('0x57')][_0xd1d1('0x58')](function(_0x49b809){var _0x20b11f=_0xd1d1('0x59')+_0x32f822;return db[_0xd1d1('0x57')]['query'](_0x20b11f,{'type':db[_0xd1d1('0x5a')][_0xd1d1('0x5b')][_0xd1d1('0x5c')],'raw':!![],'transaction':_0x49b809})['then'](function(_0x131937){_0x4f3e42=_['map'](_0x131937,function(_0x2acaa9){return Number(_0x2acaa9[_0xd1d1('0x5d')]);});})[_0xd1d1('0x27')](function(){var _0x2e0925=_0xd1d1('0x5e')+_0x32f822;return db[_0xd1d1('0x57')]['query'](_0x2e0925,{'type':db['Sequelize'][_0xd1d1('0x5b')]['SELECT'],'raw':!![],'transaction':_0x49b809});})[_0xd1d1('0x27')](function(_0x2faa98){var _0x4634eb=_[_0xd1d1('0x3e')](_0x2faa98,function(_0x4a407c){return Number(_0x4a407c['VoiceQueueId']);});return db[_0xd1d1('0x5f')][_0xd1d1('0x56')]({'where':{'UserId':{'$in':_0x4f3e42},'VoiceQueueId':{'$in':_0x4634eb}},'transaction':_0x49b809});})['then'](function(){var _0x5c3ef9='SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20'+_0x32f822;return db['sequelize'][_0xd1d1('0x31')](_0x5c3ef9,{'type':db['Sequelize'][_0xd1d1('0x5b')][_0xd1d1('0x5c')],'raw':!![],'transaction':_0x49b809});})[_0xd1d1('0x27')](function(_0x1bf996){var _0x1d36a4=_[_0xd1d1('0x3e')](_0x1bf996,function(_0x222bfe){return Number(_0x222bfe[_0xd1d1('0x60')]);});return db[_0xd1d1('0x61')][_0xd1d1('0x56')]({'where':{'UserId':{'$in':_0x4f3e42},'MailQueueId':{'$in':_0x1d36a4}},'transaction':_0x49b809});})['then'](function(){var _0xeed914='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x32f822;return db[_0xd1d1('0x57')][_0xd1d1('0x31')](_0xeed914,{'type':db[_0xd1d1('0x5a')][_0xd1d1('0x5b')][_0xd1d1('0x5c')],'raw':!![],'transaction':_0x49b809});})[_0xd1d1('0x27')](function(_0x2e1bc8){var _0x292542=_[_0xd1d1('0x3e')](_0x2e1bc8,function(_0x420513){return Number(_0x420513[_0xd1d1('0x62')]);});return db['UserSmsQueue'][_0xd1d1('0x56')]({'where':{'UserId':{'$in':_0x4f3e42},'SmsQueueId':{'$in':_0x292542}},'transaction':_0x49b809});})['then'](function(){var _0x2acaef=_0xd1d1('0x63')+_0x32f822;return db[_0xd1d1('0x57')][_0xd1d1('0x31')](_0x2acaef,{'type':db[_0xd1d1('0x5a')][_0xd1d1('0x5b')]['SELECT'],'raw':!![],'transaction':_0x49b809});})[_0xd1d1('0x27')](function(_0x1f2919){var _0x3b9ddc=_['map'](_0x1f2919,function(_0x57de24){return Number(_0x57de24[_0xd1d1('0x64')]);});return db[_0xd1d1('0x65')][_0xd1d1('0x56')]({'where':{'UserId':{'$in':_0x4f3e42},'ChatQueueId':{'$in':_0x3b9ddc}},'transaction':_0x49b809});})[_0xd1d1('0x27')](function(){var _0x58cbb6='SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20'+_0x32f822;return db[_0xd1d1('0x57')][_0xd1d1('0x31')](_0x58cbb6,{'type':db[_0xd1d1('0x5a')][_0xd1d1('0x5b')]['SELECT'],'raw':!![],'transaction':_0x49b809});})[_0xd1d1('0x27')](function(_0x4225e5){var _0x401276=_[_0xd1d1('0x3e')](_0x4225e5,function(_0x172bcc){return Number(_0x172bcc[_0xd1d1('0x66')]);});return db[_0xd1d1('0x67')][_0xd1d1('0x56')]({'where':{'UserId':{'$in':_0x4f3e42},'FaxQueueId':{'$in':_0x401276}},'transaction':_0x49b809});})[_0xd1d1('0x27')](function(){var _0x24c0a7=_0xd1d1('0x68')+_0x32f822;return db[_0xd1d1('0x57')][_0xd1d1('0x31')](_0x24c0a7,{'type':db[_0xd1d1('0x5a')][_0xd1d1('0x5b')]['SELECT'],'raw':!![],'transaction':_0x49b809});})['then'](function(_0x5b440e){var _0x28ec0e=_[_0xd1d1('0x3e')](_0x5b440e,function(_0x43fe31){return Number(_0x43fe31['OpenchannelQueueId']);});return db[_0xd1d1('0x69')][_0xd1d1('0x56')]({'where':{'UserId':{'$in':_0x4f3e42},'OpenchannelQueueId':{'$in':_0x28ec0e}},'transaction':_0x49b809});})[_0xd1d1('0x27')](function(){var _0x12b749='SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20'+_0x32f822;return db['sequelize']['query'](_0x12b749,{'type':db[_0xd1d1('0x5a')][_0xd1d1('0x5b')]['SELECT'],'raw':!![],'transaction':_0x49b809});})[_0xd1d1('0x27')](function(_0x20085){var _0x56a28f=_[_0xd1d1('0x3e')](_0x20085,function(_0x15a817){return Number(_0x15a817[_0xd1d1('0x6a')]);});return db[_0xd1d1('0x6b')][_0xd1d1('0x56')]({'where':{'UserId':{'$in':_0x4f3e42},'WhatsappQueueId':{'$in':_0x56a28f}},'transaction':_0x49b809});})[_0xd1d1('0x27')](function(){return db[_0xd1d1('0x6c')][_0xd1d1('0x48')]({'where':{'TeamId':_0x32f822}});})[_0xd1d1('0x27')](function(_0x318e8d){if(_0x318e8d===null){return;}return db[_0xd1d1('0x6d')][_0xd1d1('0x56')]({'where':{'UserId':{'$in':_0x4f3e42},'VoicePrefixId':_0x318e8d[_0xd1d1('0x6e')]},'transaction':_0x49b809});})[_0xd1d1('0x27')](function(){return db[_0xd1d1('0x41')][_0xd1d1('0x56')]({'where':{'id':_0x32f822},'cascade':!![],'transaction':_0x49b809});})[_0xd1d1('0x27')](function(_0x1c73e4){if(_0x1c73e4===0x0){_0x111b97[_0xd1d1('0x1c')](0x194);}else{return db[_0xd1d1('0x52')][_0xd1d1('0x56')]({'where':{'type':'Teams','resourceId':_0x32f822},'cascade':!![],'transaction':_0x49b809})['then'](function(){_0x111b97[_0xd1d1('0x1d')](0xcc)[_0xd1d1('0x1e')]();});}})[_0xd1d1('0x45')](function(_0x5ddf3d){_0x111b97[_0xd1d1('0x1d')](0x1f4)[_0xd1d1('0x2a')](_0x5ddf3d);});});};exports[_0xd1d1('0x6f')]=function(_0xafdc6,_0x4fad66,_0x209b9e){return db[_0xd1d1('0x41')]['findOne']({'where':{'id':_0xafdc6['params']['id']}})[_0xd1d1('0x27')](handleEntityNotFound(_0x4fad66,null))['then'](function(_0xf360){if(!_0xafdc6[_0xd1d1('0x31')][_0xd1d1('0x70')]||!utils[_0xd1d1('0x71')](_0xafdc6[_0xd1d1('0x31')][_0xd1d1('0x70')])){throw new db[(_0xd1d1('0x5a'))][(_0xd1d1('0x72'))]('Unknown\x20channel');}var _0x7e5be0={};var _0x1dc8b8={};_0x1dc8b8['model']=_[_0xd1d1('0x32')](db[_[_0xd1d1('0x73')](_0xafdc6[_0xd1d1('0x31')][_0xd1d1('0x70')]['toLowerCase']())+'Queue'][_0xd1d1('0x2c')]);_0x1dc8b8[_0xd1d1('0x31')]=_[_0xd1d1('0x32')](_0xafdc6[_0xd1d1('0x31')]);_0x1dc8b8[_0xd1d1('0x33')]=_['intersection'](_0x1dc8b8[_0xd1d1('0x30')],_0x1dc8b8[_0xd1d1('0x31')]);_0x7e5be0['attributes']=_[_0xd1d1('0x34')](_0x1dc8b8[_0xd1d1('0x30')],qs[_0xd1d1('0x36')](_0xafdc6[_0xd1d1('0x31')][_0xd1d1('0x36')]));_0x7e5be0['attributes']=_0x7e5be0[_0xd1d1('0x35')][_0xd1d1('0x37')]?_0x7e5be0[_0xd1d1('0x35')]:_0x1dc8b8[_0xd1d1('0x30')];_0x7e5be0[_0xd1d1('0x22')]=qs[_0xd1d1('0x22')](_0xafdc6['query'][_0xd1d1('0x22')]);_0x7e5be0[_0xd1d1('0x20')]=qs['offset'](_0xafdc6[_0xd1d1('0x31')][_0xd1d1('0x20')]);_0x7e5be0[_0xd1d1('0x39')]=qs[_0xd1d1('0x3a')](_0xafdc6[_0xd1d1('0x31')][_0xd1d1('0x3a')]);_0x7e5be0[_0xd1d1('0x3d')]=qs['filters'](_[_0xd1d1('0x3b')](_0xafdc6[_0xd1d1('0x31')],_0x1dc8b8[_0xd1d1('0x33')]));_0x7e5be0=_[_0xd1d1('0x3f')]({},_0x7e5be0,_0xafdc6[_0xd1d1('0x40')]);return _0xf360[_0xd1d1('0x4e')+_[_0xd1d1('0x73')](_0xafdc6['query'][_0xd1d1('0x70')]['toLowerCase']())+_0xd1d1('0x74')](_0x7e5be0);})['then'](respondWithResult(_0x4fad66,null))['catch'](handleError(_0x4fad66,null));};exports[_0xd1d1('0x75')]=function(_0x457027,_0x1b2723,_0x511634){return db[_0xd1d1('0x41')][_0xd1d1('0x76')]({'where':{'id':_0x457027[_0xd1d1('0x55')]['id']}})[_0xd1d1('0x27')](function(_0x1dac2d){if(_0x1dac2d){if(!_0x457027['body']['channel']||!utils[_0xd1d1('0x71')](_0x457027['body'][_0xd1d1('0x70')])){throw new db['Sequelize'][(_0xd1d1('0x72'))]('Unknown\x20channel');}return _0x1dac2d['add'+_[_0xd1d1('0x73')](_0x457027[_0xd1d1('0x4a')][_0xd1d1('0x70')][_0xd1d1('0x77')]())+_0xd1d1('0x74')](_0x457027[_0xd1d1('0x4a')][_0xd1d1('0x78')]);}return null;})[_0xd1d1('0x27')](handleEntityNotFound(_0x1b2723,null))[_0xd1d1('0x27')](respondWithStatusCode(_0x1b2723,null))['catch'](handleError(_0x1b2723,null));};exports[_0xd1d1('0x79')]=function(_0x124da1,_0x4028da,_0x1dd7e4){return db[_0xd1d1('0x41')][_0xd1d1('0x76')]({'where':{'id':_0x124da1[_0xd1d1('0x55')]['id']}})[_0xd1d1('0x27')](function(_0x25cea4){if(_0x25cea4){if(!_0x124da1[_0xd1d1('0x31')][_0xd1d1('0x70')]||!utils[_0xd1d1('0x71')](_0x124da1[_0xd1d1('0x31')][_0xd1d1('0x70')])){throw new db[(_0xd1d1('0x5a'))][(_0xd1d1('0x72'))]('Unknown\x20channel');}return _0x25cea4[_0xd1d1('0x7a')+_[_0xd1d1('0x73')](_0x124da1[_0xd1d1('0x31')][_0xd1d1('0x70')][_0xd1d1('0x77')]())+_0xd1d1('0x74')](_0x124da1[_0xd1d1('0x31')][_0xd1d1('0x78')]);}return null;})['then'](handleEntityNotFound(_0x4028da,null))['then'](respondWithStatusCode(_0x4028da,null))['catch'](handleError(_0x4028da,null));};exports[_0xd1d1('0x7b')]=function(_0x18a627,_0x34fddf){var _0x5ed857=_[_0xd1d1('0x7c')](_0x18a627[_0xd1d1('0x4a')][_0xd1d1('0x78')])?_0x18a627[_0xd1d1('0x4a')][_0xd1d1('0x78')]:[_0x18a627[_0xd1d1('0x4a')][_0xd1d1('0x78')]];var _0x5e2c48=_0x18a627[_0xd1d1('0x55')]['id'];return db[_0xd1d1('0x41')][_0xd1d1('0x48')]({'where':{'id':_0x5e2c48}})['then'](handleEntityNotFound(_0x34fddf,null))[_0xd1d1('0x27')](function(_0x486cbf){if(_0x486cbf){var _0x2a44b4=['Voice',_0xd1d1('0x7d'),'Mail',_0xd1d1('0x7e'),_0xd1d1('0x7f'),_0xd1d1('0x80'),_0xd1d1('0x81')];return db[_0xd1d1('0x57')][_0xd1d1('0x58')](function(_0x538dad){var _0xf3e53a=_['map'](_0x2a44b4,function(_0x3cc175){var _0x3b5d9c={'attributes':['id',_0xd1d1('0x29')]};if(_0x3cc175===_0xd1d1('0x82')){_0x3b5d9c['through']={'attributes':[_0xd1d1('0x83')]};}return _0x486cbf['get'+_0x3cc175+'Queues'](_0x3b5d9c)[_0xd1d1('0x27')](function(_0x4d6856){var _0x14900d=_[_0xd1d1('0x3e')](_0x4d6856,function(_0x8e78d6){var _0x46e48e=_[_0xd1d1('0x3e')](_0x5ed857,function(_0x249b4f){var _0x45fbb9={'where':{'UserId':_0x249b4f,[_0x3cc175+'QueueId']:_0x8e78d6['id']},'transaction':_0x538dad};if(_0x3cc175==='Voice'){_0x45fbb9['defaults']={'penalty':_0x8e78d6[_0xd1d1('0x84')][_0xd1d1('0x83')]};}return db[_0xd1d1('0x85')+_0x3cc175+_0xd1d1('0x86')]['findOrCreate'](_0x45fbb9)[_0xd1d1('0x27')](function(){socket[_0xd1d1('0x87')](_0xd1d1('0x4b')+_0x3cc175+_0xd1d1('0x88'),{'UserId':_0x249b4f,[_0x3cc175+_0xd1d1('0x89')]:_0x8e78d6['id']});if(_0x3cc175!=='Voice'){return;}return db[_0xd1d1('0x85')][_0xd1d1('0x43')]({'where':{'id':_0x5ed857,'online':0x1},'attributes':['id',_0xd1d1('0x29'),'online',_0xd1d1('0x8a'),_0xd1d1('0x8b')],'raw':!![]})[_0xd1d1('0x27')](function(_0x570825){var _0x5cfb5c=_['map'](_0x570825,function(_0x5d273c){return db[_0xd1d1('0x8c')][_0xd1d1('0x8d')]({'membername':_0x5d273c[_0xd1d1('0x29')],'UserId':_0x5d273c['id'],'queue_name':_0x8e78d6[_0xd1d1('0x29')],'VoiceQueueId':_0x8e78d6['id'],'interface':_[_0xd1d1('0x8e')](_0x5d273c[_0xd1d1('0x8b')])?util[_0xd1d1('0x8f')](_0xd1d1('0x90'),_0x5d273c[_0xd1d1('0x29')]):_0x5d273c[_0xd1d1('0x8b')],'paused':_0x5d273c[_0xd1d1('0x8a')]||![],'penalty':_0x8e78d6['TeamVoiceQueue'][_0xd1d1('0x83')]},{'transaction':_0x538dad});});return Promise['all'](_0x5cfb5c);});});});return Promise[_0xd1d1('0x91')](_0x46e48e);});return Promise[_0xd1d1('0x91')](_0x14900d);})[_0xd1d1('0x27')](function(){return db[_0xd1d1('0x6c')][_0xd1d1('0x76')]({'where':{'teamId':_0x5e2c48}})[_0xd1d1('0x27')](function(_0x4673c9){if(_0x4673c9){var _0x1bf9dd=_[_0xd1d1('0x3e')](_0x5ed857,function(_0x5b08f8){db[_0xd1d1('0x6d')][_0xd1d1('0x8d')]({'UserId':_0x5b08f8,'VoicePrefixId':_0x4673c9['VoicePrefixId']});});return Promise['all'](_0x1bf9dd);}});});});return Promise['all'](_0xf3e53a)[_0xd1d1('0x27')](function(){return _0x486cbf[_0xd1d1('0x7b')](_0x5ed857,{'transaction':_0x538dad})[_0xd1d1('0x92')](function(_0x423f85){return _0x423f85;});});});}})[_0xd1d1('0x27')](respondWithResult(_0x34fddf,null))['catch'](handleError(_0x34fddf,null));};exports[_0xd1d1('0x93')]=function(_0xd6786e,_0x2fb21e){var _0x2d3d64=_[_0xd1d1('0x7c')](_0xd6786e[_0xd1d1('0x31')][_0xd1d1('0x78')])?_0xd6786e[_0xd1d1('0x31')][_0xd1d1('0x78')]:[_0xd6786e['query'][_0xd1d1('0x78')]];var _0x27e9ef=_0xd6786e[_0xd1d1('0x55')]['id'];return db[_0xd1d1('0x41')][_0xd1d1('0x48')]({'where':{'id':_0x27e9ef}})[_0xd1d1('0x27')](handleEntityNotFound(_0x2fb21e,null))[_0xd1d1('0x27')](function(_0x212f0a){if(_0x212f0a){var _0x5c2c22=[_0xd1d1('0x82'),_0xd1d1('0x7d'),_0xd1d1('0x94'),_0xd1d1('0x7e'),_0xd1d1('0x7f'),_0xd1d1('0x80'),_0xd1d1('0x81')];return db[_0xd1d1('0x57')]['transaction'](function(_0x4f6332){var _0x3d35b9=_['map'](_0x5c2c22,function(_0x476c64){var _0x5f0f99={'attributes':['id',_0xd1d1('0x29')]};return _0x212f0a[_0xd1d1('0x4e')+_0x476c64+_0xd1d1('0x74')](_0x5f0f99)[_0xd1d1('0x27')](function(_0xb6a77b){var _0x207354=_[_0xd1d1('0x3e')](_0xb6a77b,function(_0x1ed5ef){return _0x1ed5ef['removeAgents'](_0x2d3d64,{'transaction':_0x4f6332})['then'](function(){var _0x54cb24=_[_0xd1d1('0x3e')](_0x2d3d64,function(_0x36b6cd){socket['emit'](_0xd1d1('0x4b')+_0x476c64+_0xd1d1('0x95'),{'UserId':Number(_0x36b6cd),[_0x476c64+_0xd1d1('0x89')]:_0x1ed5ef['id']});if(_0x476c64!==_0xd1d1('0x82')){return;}return db[_0xd1d1('0x8c')][_0xd1d1('0x56')]({'where':{'VoiceQueueId':_0x1ed5ef['id'],'UserId':_0x36b6cd},'transaction':_0x4f6332});});return Promise[_0xd1d1('0x91')](_0x54cb24);});});return Promise[_0xd1d1('0x91')](_0x207354);});});return Promise[_0xd1d1('0x91')](_0x3d35b9)[_0xd1d1('0x27')](function(){return _0x212f0a[_0xd1d1('0x93')](_0x2d3d64,{'transaction':_0x4f6332});})[_0xd1d1('0x27')](function(){return db['TeamVoicePrefix'][_0xd1d1('0x76')]({'where':{'teamId':_0x27e9ef}})['then'](function(_0x16248d){if(_0x16248d){var _0x535092=_[_0xd1d1('0x3e')](_0x2d3d64,function(_0x3e9443){db['UserVoicePrefix'][_0xd1d1('0x56')]({'where':{'UserId':_0x3e9443,'VoicePrefixId':_0x16248d['VoicePrefixId']}});});return Promise['all'](_0x535092);}});});});}})[_0xd1d1('0x27')](respondWithStatusCode(_0x2fb21e,null))[_0xd1d1('0x45')](handleError(_0x2fb21e,null));};exports[_0xd1d1('0x96')]=function(_0xb54f3c,_0x4d110e,_0x275cc7){var _0x1ec208={};var _0x4042da={};var _0x453d1c;var _0x1f4891;return db[_0xd1d1('0x41')][_0xd1d1('0x76')]({'where':{'id':_0xb54f3c[_0xd1d1('0x55')]['id']}})[_0xd1d1('0x27')](handleEntityNotFound(_0x4d110e,null))['then'](function(_0x5e5d42){if(_0x5e5d42){_0x453d1c=_0x5e5d42;_0x4042da[_0xd1d1('0x30')]=_[_0xd1d1('0x32')](db[_0xd1d1('0x85')][_0xd1d1('0x2c')]);_0x4042da[_0xd1d1('0x31')]=_['keys'](_0xb54f3c[_0xd1d1('0x31')]);_0x4042da['filters']=_[_0xd1d1('0x34')](_0x4042da['model'],_0x4042da[_0xd1d1('0x31')]);_0x1ec208[_0xd1d1('0x35')]=_[_0xd1d1('0x34')](_0x4042da[_0xd1d1('0x30')],qs[_0xd1d1('0x36')](_0xb54f3c[_0xd1d1('0x31')][_0xd1d1('0x36')]));_0x1ec208[_0xd1d1('0x35')]=_0x1ec208['attributes'][_0xd1d1('0x37')]?_0x1ec208[_0xd1d1('0x35')]:_0x4042da[_0xd1d1('0x30')];_0x1ec208[_0xd1d1('0x39')]=qs[_0xd1d1('0x3a')](_0xb54f3c['query'][_0xd1d1('0x3a')]);_0x1ec208[_0xd1d1('0x3d')]=qs[_0xd1d1('0x33')](_[_0xd1d1('0x3b')](_0xb54f3c[_0xd1d1('0x31')],_0x4042da[_0xd1d1('0x33')]));if(_0xb54f3c[_0xd1d1('0x31')][_0xd1d1('0x3c')]){_0x1ec208[_0xd1d1('0x3d')]=_[_0xd1d1('0x3f')](_0x1ec208['where'],{'$or':_['map'](_0x1ec208['attributes'],function(_0x5a51ab){var _0x2b15a2={};_0x2b15a2[_0x5a51ab]={'$like':'%'+_0xb54f3c['query'][_0xd1d1('0x3c')]+'%'};return _0x2b15a2;})});}_0x1ec208=_['merge']({},_0x1ec208,_0xb54f3c[_0xd1d1('0x40')]);return _0x453d1c[_0xd1d1('0x96')](_0x1ec208);}})[_0xd1d1('0x27')](function(_0x53f6e2){if(_0x53f6e2){_0x1f4891=_0x53f6e2['length'];if(!_0xb54f3c[_0xd1d1('0x31')]['hasOwnProperty']('nolimit')){_0x1ec208[_0xd1d1('0x22')]=qs[_0xd1d1('0x22')](_0xb54f3c[_0xd1d1('0x31')][_0xd1d1('0x22')]);_0x1ec208[_0xd1d1('0x20')]=qs[_0xd1d1('0x20')](_0xb54f3c[_0xd1d1('0x31')][_0xd1d1('0x20')]);}return _0x453d1c[_0xd1d1('0x96')](_0x1ec208);}})[_0xd1d1('0x27')](function(_0x69f146){if(_0x69f146){return _0x69f146?{'count':_0x1f4891,'rows':_0x69f146}:null;}})['then'](respondWithResult(_0x4d110e,null))[_0xd1d1('0x45')](handleError(_0x4d110e,null));};
\ No newline at end of file
+var _0xfbe8=['type','key','model','query','intersection','attributes','fields','length','nolimit','limit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','catch','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Teams','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','getQueues','findOne','channel','Sequelize','ValidationError','capitalize','toLowerCase','Queue','Queues','isValidChannel','Unknown\x20channel','add','ids','removeQueues','remove','addAgents','Voice','Sms','Fax','Openchannel','sequelize','through','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','findAll','online','UserVoiceQueueRt','isNil','interface','format','SIP/%s','all','removeAgents','Chat','Mail','Whatsapp','transaction','Queue:remove','getAgents','hasOwnProperty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','ejs','lodash','squel','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','redis','localhost','./team.socket','register','sendStatus','status','end','undefined','count','offset','Content-Range','json','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','Team','rawAttributes'];(function(_0x13d7f2,_0x52d3b0){var _0xe53a30=function(_0xb17e2c){while(--_0xb17e2c){_0x13d7f2['push'](_0x13d7f2['shift']());}};_0xe53a30(++_0x52d3b0);}(_0xfbe8,0x152));var _0x8fbe=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xfbe8[_0x4d613c];return _0x301fe3;};'use strict';var emlformat=require(_0x8fbe('0x0'));var rimraf=require(_0x8fbe('0x1'));var zipdir=require(_0x8fbe('0x2'));var jsonpatch=require(_0x8fbe('0x3'));var rp=require(_0x8fbe('0x4'));var moment=require(_0x8fbe('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8fbe('0x6'));var util=require(_0x8fbe('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8fbe('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8fbe('0x9'));var squel=require(_0x8fbe('0xa'));var crypto=require(_0x8fbe('0xb'));var jsforce=require(_0x8fbe('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8fbe('0xd'));var querystring=require(_0x8fbe('0xe'));var Papa=require(_0x8fbe('0xf'));var Redis=require('ioredis');var authService=require(_0x8fbe('0x10'));var qs=require(_0x8fbe('0x11'));var as=require(_0x8fbe('0x12'));var hardwareService=require(_0x8fbe('0x13'));var logger=require('../../config/logger')(_0x8fbe('0x14'));var utils=require(_0x8fbe('0x15'));var config=require(_0x8fbe('0x16'));var licenseUtil=require(_0x8fbe('0x17'));var db=require(_0x8fbe('0x18'))['db'];config[_0x8fbe('0x19')]=_['defaults'](config[_0x8fbe('0x19')],{'host':_0x8fbe('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8fbe('0x1b'))[_0x8fbe('0x1c')](socket);function respondWithStatusCode(_0x412d1f,_0x151c3e){_0x151c3e=_0x151c3e||0xcc;return function(_0x27dd98){if(_0x27dd98){return _0x412d1f[_0x8fbe('0x1d')](_0x151c3e);}return _0x412d1f[_0x8fbe('0x1e')](_0x151c3e)[_0x8fbe('0x1f')]();};}function respondWithResult(_0x596556,_0x2fae8d){_0x2fae8d=_0x2fae8d||0xc8;return function(_0x178e8b){if(_0x178e8b){return _0x596556[_0x8fbe('0x1e')](_0x2fae8d)['json'](_0x178e8b);}};}function respondWithFilteredResult(_0x4e7315,_0x619874){return function(_0x2f0c80){if(_0x2f0c80){var _0x36b7bc=typeof _0x619874['offset']===_0x8fbe('0x20')&&typeof _0x619874['limit']===_0x8fbe('0x20');var _0x47d0ea=_0x2f0c80[_0x8fbe('0x21')];var _0x46bc1f=_0x36b7bc?0x0:_0x619874['offset'];var _0x283b44=_0x36b7bc?_0x2f0c80[_0x8fbe('0x21')]:_0x619874[_0x8fbe('0x22')]+_0x619874['limit'];var _0x5c7a9e;if(_0x283b44>=_0x47d0ea){_0x283b44=_0x47d0ea;_0x5c7a9e=0xc8;}else{_0x5c7a9e=0xce;}_0x4e7315[_0x8fbe('0x1e')](_0x5c7a9e);return _0x4e7315['set'](_0x8fbe('0x23'),_0x46bc1f+'-'+_0x283b44+'/'+_0x47d0ea)[_0x8fbe('0x24')](_0x2f0c80);}return null;};}function patchUpdates(_0x11eb78){return function(_0x362fb9){try{jsonpatch['apply'](_0x362fb9,_0x11eb78,!![]);}catch(_0x5ef09b){return BPromise['reject'](_0x5ef09b);}return _0x362fb9['save']();};}function saveUpdates(_0x3675a6,_0x2f6c59){return function(_0x3214eb){if(_0x3214eb){return _0x3214eb['update'](_0x3675a6)[_0x8fbe('0x25')](function(_0x1c0c06){return _0x1c0c06;});}return null;};}function removeEntity(_0x5a209d,_0x4bc8de){return function(_0x31f46a){if(_0x31f46a){return _0x31f46a[_0x8fbe('0x26')]()[_0x8fbe('0x25')](function(){var _0x1b1ad5=_0x31f46a[_0x8fbe('0x27')]({'plain':!![]});var _0x145792='Teams';return db[_0x8fbe('0x28')][_0x8fbe('0x26')]({'where':{'type':_0x145792,'resourceId':_0x1b1ad5['id']}})[_0x8fbe('0x25')](function(){return _0x31f46a;});})[_0x8fbe('0x25')](function(){_0x5a209d[_0x8fbe('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x180f43,_0x41fa48){return function(_0x5d3276){if(!_0x5d3276){_0x180f43[_0x8fbe('0x1d')](0x194);}return _0x5d3276;};}function handleError(_0x31482a,_0x11014e){_0x11014e=_0x11014e||0x1f4;return function(_0x5e4562){logger[_0x8fbe('0x29')](_0x5e4562[_0x8fbe('0x2a')]);if(_0x5e4562[_0x8fbe('0x2b')]){delete _0x5e4562[_0x8fbe('0x2b')];}_0x31482a[_0x8fbe('0x1e')](_0x11014e)[_0x8fbe('0x2c')](_0x5e4562);};}exports[_0x8fbe('0x2d')]=function(_0xcc9289,_0x3ac72c){var _0x53de7e={},_0x5003d9={},_0x4e6701={'count':0x0,'rows':[]};var _0x213750=_[_0x8fbe('0x2e')](db[_0x8fbe('0x2f')][_0x8fbe('0x30')],function(_0x21badf){return{'name':_0x21badf['fieldName'],'type':_0x21badf[_0x8fbe('0x31')][_0x8fbe('0x32')]};});_0x5003d9[_0x8fbe('0x33')]=_['map'](_0x213750,_0x8fbe('0x2b'));_0x5003d9['query']=_['keys'](_0xcc9289[_0x8fbe('0x34')]);_0x5003d9['filters']=_[_0x8fbe('0x35')](_0x5003d9[_0x8fbe('0x33')],_0x5003d9[_0x8fbe('0x34')]);_0x53de7e[_0x8fbe('0x36')]=_['intersection'](_0x5003d9[_0x8fbe('0x33')],qs[_0x8fbe('0x37')](_0xcc9289[_0x8fbe('0x34')][_0x8fbe('0x37')]));_0x53de7e['attributes']=_0x53de7e[_0x8fbe('0x36')][_0x8fbe('0x38')]?_0x53de7e[_0x8fbe('0x36')]:_0x5003d9[_0x8fbe('0x33')];if(!_0xcc9289['query']['hasOwnProperty'](_0x8fbe('0x39'))){_0x53de7e['limit']=qs[_0x8fbe('0x3a')](_0xcc9289[_0x8fbe('0x34')][_0x8fbe('0x3a')]);_0x53de7e['offset']=qs[_0x8fbe('0x22')](_0xcc9289[_0x8fbe('0x34')][_0x8fbe('0x22')]);}_0x53de7e[_0x8fbe('0x3b')]=qs[_0x8fbe('0x3c')](_0xcc9289[_0x8fbe('0x34')][_0x8fbe('0x3c')]);_0x53de7e[_0x8fbe('0x3d')]=qs[_0x8fbe('0x3e')](_[_0x8fbe('0x3f')](_0xcc9289['query'],_0x5003d9[_0x8fbe('0x3e')]),_0x213750);if(_0xcc9289[_0x8fbe('0x34')][_0x8fbe('0x40')]){_0x53de7e[_0x8fbe('0x3d')]=_['merge'](_0x53de7e[_0x8fbe('0x3d')],{'$or':_[_0x8fbe('0x2e')](_0x213750,function(_0x5b39e8){if(_0x5b39e8[_0x8fbe('0x31')]!==_0x8fbe('0x41')){var _0x1bf4cb={};_0x1bf4cb[_0x5b39e8[_0x8fbe('0x2b')]]={'$like':'%'+_0xcc9289[_0x8fbe('0x34')][_0x8fbe('0x40')]+'%'};return _0x1bf4cb;}})});}_0x53de7e=_[_0x8fbe('0x42')]({},_0x53de7e,_0xcc9289[_0x8fbe('0x43')]);var _0x416d84={'where':_0x53de7e[_0x8fbe('0x3d')]};return db[_0x8fbe('0x2f')][_0x8fbe('0x21')](_0x416d84)[_0x8fbe('0x25')](function(_0x3154fd){_0x4e6701[_0x8fbe('0x21')]=_0x3154fd;if(_0xcc9289[_0x8fbe('0x34')][_0x8fbe('0x44')]){_0x53de7e[_0x8fbe('0x45')]=[{'all':!![]}];}return db[_0x8fbe('0x2f')]['findAll'](_0x53de7e);})['then'](function(_0x4cef4a){_0x4e6701['rows']=_0x4cef4a;return _0x4e6701;})[_0x8fbe('0x25')](respondWithFilteredResult(_0x3ac72c,_0x53de7e))[_0x8fbe('0x46')](handleError(_0x3ac72c,null));};exports['show']=function(_0x54dace,_0x47e968){var _0x1aaf12={'raw':![],'where':{'id':_0x54dace['params']['id']}},_0x158f96={};_0x158f96['model']=_[_0x8fbe('0x47')](db[_0x8fbe('0x2f')][_0x8fbe('0x30')]);_0x158f96[_0x8fbe('0x34')]=_[_0x8fbe('0x47')](_0x54dace[_0x8fbe('0x34')]);_0x158f96['filters']=_[_0x8fbe('0x35')](_0x158f96[_0x8fbe('0x33')],_0x158f96[_0x8fbe('0x34')]);_0x1aaf12[_0x8fbe('0x36')]=_[_0x8fbe('0x35')](_0x158f96['model'],qs[_0x8fbe('0x37')](_0x54dace[_0x8fbe('0x34')][_0x8fbe('0x37')]));_0x1aaf12[_0x8fbe('0x36')]=_0x1aaf12[_0x8fbe('0x36')][_0x8fbe('0x38')]?_0x1aaf12[_0x8fbe('0x36')]:_0x158f96[_0x8fbe('0x33')];if(_0x54dace[_0x8fbe('0x34')]['includeAll']){_0x1aaf12[_0x8fbe('0x45')]=[{'all':!![]}];}_0x1aaf12=_[_0x8fbe('0x42')]({},_0x1aaf12,_0x54dace[_0x8fbe('0x43')]);return db[_0x8fbe('0x2f')][_0x8fbe('0x48')](_0x1aaf12)['then'](handleEntityNotFound(_0x47e968,null))['then'](respondWithResult(_0x47e968,null))['catch'](handleError(_0x47e968,null));};exports[_0x8fbe('0x49')]=function(_0x3e35fa,_0x4aff39){return db[_0x8fbe('0x2f')][_0x8fbe('0x49')](_0x3e35fa[_0x8fbe('0x4a')],{})[_0x8fbe('0x25')](function(_0x15a7a7){var _0x373f8c=_0x3e35fa[_0x8fbe('0x4b')][_0x8fbe('0x27')]({'plain':!![]});if(!_0x373f8c)throw new Error(_0x8fbe('0x4c'));if(_0x373f8c['role']==='user'){var _0xd6a033=_0x15a7a7['get']({'plain':!![]});var _0xb68c7e=_0x8fbe('0x4d');return db[_0x8fbe('0x4e')][_0x8fbe('0x48')]({'where':{'name':_0xb68c7e,'userProfileId':_0x373f8c[_0x8fbe('0x4f')]},'raw':!![]})[_0x8fbe('0x25')](function(_0x2a43a5){if(_0x2a43a5&&_0x2a43a5[_0x8fbe('0x50')]===0x0){return db[_0x8fbe('0x28')]['create']({'name':_0xd6a033[_0x8fbe('0x2b')],'resourceId':_0xd6a033['id'],'type':_0x2a43a5[_0x8fbe('0x2b')],'sectionId':_0x2a43a5['id']},{})[_0x8fbe('0x25')](function(){return _0x15a7a7;});}else{return _0x15a7a7;}})[_0x8fbe('0x46')](function(_0x16f991){logger[_0x8fbe('0x29')](_0x8fbe('0x51'),_0x16f991);throw _0x16f991;});}return _0x15a7a7;})[_0x8fbe('0x25')](respondWithResult(_0x4aff39,0xc9))[_0x8fbe('0x46')](handleError(_0x4aff39,null));};exports[_0x8fbe('0x52')]=function(_0x460724,_0x31d25a){if(_0x460724[_0x8fbe('0x4a')]['id']){delete _0x460724['body']['id'];}return db[_0x8fbe('0x2f')][_0x8fbe('0x48')]({'where':{'id':_0x460724[_0x8fbe('0x53')]['id']}})['then'](handleEntityNotFound(_0x31d25a,null))['then'](saveUpdates(_0x460724[_0x8fbe('0x4a')],null))[_0x8fbe('0x25')](respondWithResult(_0x31d25a,null))[_0x8fbe('0x46')](handleError(_0x31d25a,null));};exports['destroy']=function(_0x39d2bb,_0x3a1f66){return db[_0x8fbe('0x2f')]['find']({'where':{'id':_0x39d2bb[_0x8fbe('0x53')]['id']}})[_0x8fbe('0x25')](handleEntityNotFound(_0x3a1f66,null))[_0x8fbe('0x25')](removeEntity(_0x3a1f66,null))[_0x8fbe('0x46')](handleError(_0x3a1f66,null));};exports[_0x8fbe('0x54')]=function(_0x3b9f1e,_0x3208f7,_0x40a04f){return db['Team'][_0x8fbe('0x55')]({'where':{'id':_0x3b9f1e[_0x8fbe('0x53')]['id']}})[_0x8fbe('0x25')](handleEntityNotFound(_0x3208f7,null))[_0x8fbe('0x25')](function(_0x2fece4){if(!_0x3b9f1e['query'][_0x8fbe('0x56')]||!utils['isValidChannel'](_0x3b9f1e[_0x8fbe('0x34')][_0x8fbe('0x56')])){throw new db[(_0x8fbe('0x57'))][(_0x8fbe('0x58'))]('Unknown\x20channel');}var _0x32ae4f={};var _0xcf5a14={};_0xcf5a14['model']=_[_0x8fbe('0x47')](db[_[_0x8fbe('0x59')](_0x3b9f1e['query'][_0x8fbe('0x56')][_0x8fbe('0x5a')]())+_0x8fbe('0x5b')]['rawAttributes']);_0xcf5a14[_0x8fbe('0x34')]=_['keys'](_0x3b9f1e[_0x8fbe('0x34')]);_0xcf5a14[_0x8fbe('0x3e')]=_[_0x8fbe('0x35')](_0xcf5a14[_0x8fbe('0x33')],_0xcf5a14[_0x8fbe('0x34')]);_0x32ae4f[_0x8fbe('0x36')]=_['intersection'](_0xcf5a14[_0x8fbe('0x33')],qs[_0x8fbe('0x37')](_0x3b9f1e['query'][_0x8fbe('0x37')]));_0x32ae4f['attributes']=_0x32ae4f[_0x8fbe('0x36')][_0x8fbe('0x38')]?_0x32ae4f[_0x8fbe('0x36')]:_0xcf5a14[_0x8fbe('0x33')];_0x32ae4f[_0x8fbe('0x3a')]=qs[_0x8fbe('0x3a')](_0x3b9f1e[_0x8fbe('0x34')][_0x8fbe('0x3a')]);_0x32ae4f[_0x8fbe('0x22')]=qs[_0x8fbe('0x22')](_0x3b9f1e[_0x8fbe('0x34')][_0x8fbe('0x22')]);_0x32ae4f[_0x8fbe('0x3b')]=qs[_0x8fbe('0x3c')](_0x3b9f1e['query'][_0x8fbe('0x3c')]);_0x32ae4f[_0x8fbe('0x3d')]=qs[_0x8fbe('0x3e')](_[_0x8fbe('0x3f')](_0x3b9f1e[_0x8fbe('0x34')],_0xcf5a14['filters']));_0x32ae4f=_[_0x8fbe('0x42')]({},_0x32ae4f,_0x3b9f1e[_0x8fbe('0x43')]);return _0x2fece4[_0x8fbe('0x27')+_[_0x8fbe('0x59')](_0x3b9f1e['query'][_0x8fbe('0x56')][_0x8fbe('0x5a')]())+_0x8fbe('0x5c')](_0x32ae4f);})[_0x8fbe('0x25')](respondWithResult(_0x3208f7,null))[_0x8fbe('0x46')](handleError(_0x3208f7,null));};exports['addQueues']=function(_0x48c0e4,_0x18193a,_0x49c32b){return db['Team'][_0x8fbe('0x55')]({'where':{'id':_0x48c0e4[_0x8fbe('0x53')]['id']}})[_0x8fbe('0x25')](function(_0x396012){if(_0x396012){if(!_0x48c0e4[_0x8fbe('0x4a')]['channel']||!utils[_0x8fbe('0x5d')](_0x48c0e4[_0x8fbe('0x4a')][_0x8fbe('0x56')])){throw new db[(_0x8fbe('0x57'))][(_0x8fbe('0x58'))](_0x8fbe('0x5e'));}return _0x396012[_0x8fbe('0x5f')+_[_0x8fbe('0x59')](_0x48c0e4[_0x8fbe('0x4a')]['channel'][_0x8fbe('0x5a')]())+_0x8fbe('0x5c')](_0x48c0e4[_0x8fbe('0x4a')][_0x8fbe('0x60')]);}return null;})[_0x8fbe('0x25')](handleEntityNotFound(_0x18193a,null))[_0x8fbe('0x25')](respondWithStatusCode(_0x18193a,null))[_0x8fbe('0x46')](handleError(_0x18193a,null));};exports[_0x8fbe('0x61')]=function(_0x29fe12,_0x5559a3,_0xf4e278){return db[_0x8fbe('0x2f')][_0x8fbe('0x55')]({'where':{'id':_0x29fe12[_0x8fbe('0x53')]['id']}})[_0x8fbe('0x25')](function(_0x2ecc82){if(_0x2ecc82){if(!_0x29fe12[_0x8fbe('0x34')]['channel']||!utils[_0x8fbe('0x5d')](_0x29fe12[_0x8fbe('0x34')][_0x8fbe('0x56')])){throw new db[(_0x8fbe('0x57'))]['ValidationError'](_0x8fbe('0x5e'));}return _0x2ecc82[_0x8fbe('0x62')+_[_0x8fbe('0x59')](_0x29fe12[_0x8fbe('0x34')][_0x8fbe('0x56')][_0x8fbe('0x5a')]())+_0x8fbe('0x5c')](_0x29fe12[_0x8fbe('0x34')][_0x8fbe('0x60')]);}return null;})['then'](handleEntityNotFound(_0x5559a3,null))[_0x8fbe('0x25')](respondWithStatusCode(_0x5559a3,null))[_0x8fbe('0x46')](handleError(_0x5559a3,null));};exports[_0x8fbe('0x63')]=function(_0x374d90,_0x34bf31){return db[_0x8fbe('0x2f')]['find']({'where':{'id':_0x374d90[_0x8fbe('0x53')]['id']}})[_0x8fbe('0x25')](handleEntityNotFound(_0x34bf31,null))[_0x8fbe('0x25')](function(_0x1e786a){if(_0x1e786a){var _0x1c6e5d=[_0x8fbe('0x64'),'Chat','Mail',_0x8fbe('0x65'),_0x8fbe('0x66'),_0x8fbe('0x67'),'Whatsapp'];return db[_0x8fbe('0x68')]['transaction'](function(_0x154373){var _0x525d43=_['map'](_0x1c6e5d,function(_0x3cf093){var _0x4d3d66={'attributes':['id',_0x8fbe('0x2b')]};if(_0x3cf093===_0x8fbe('0x64')){_0x4d3d66[_0x8fbe('0x69')]={'attributes':[_0x8fbe('0x6a')]};}return _0x1e786a[_0x8fbe('0x27')+_0x3cf093+_0x8fbe('0x5c')](_0x4d3d66)[_0x8fbe('0x25')](function(_0x166001){var _0x395f8f=_[_0x8fbe('0x2e')](_0x166001,function(_0x899dd){var _0x449cbb=_['map'](_0x374d90[_0x8fbe('0x4a')][_0x8fbe('0x60')],function(_0x52d802){var _0x13e224={'where':{'UserId':_0x52d802,[_0x3cf093+_0x8fbe('0x6b')]:_0x899dd['id']},'transaction':_0x154373};if(_0x3cf093===_0x8fbe('0x64')){_0x13e224['defaults']={'penalty':_0x899dd[_0x8fbe('0x6c')][_0x8fbe('0x6a')]};}return db[_0x8fbe('0x6d')+_0x3cf093+'Queue'][_0x8fbe('0x6e')](_0x13e224)[_0x8fbe('0x25')](function(){socket[_0x8fbe('0x6f')](_0x8fbe('0x4b')+_0x3cf093+_0x8fbe('0x70'),{'UserId':_0x52d802,[_0x3cf093+_0x8fbe('0x6b')]:_0x899dd['id']});if(_0x3cf093!==_0x8fbe('0x64'))return;return db[_0x8fbe('0x6d')][_0x8fbe('0x71')]({'where':{'id':_0x374d90[_0x8fbe('0x4a')]['ids'],'online':0x1},'attributes':['id',_0x8fbe('0x2b'),_0x8fbe('0x72'),'voicePause','interface'],'raw':!![]})[_0x8fbe('0x25')](function(_0x1d0e40){var _0x41af34=_[_0x8fbe('0x2e')](_0x1d0e40,function(_0x5e8285){return db[_0x8fbe('0x73')]['upsert']({'membername':_0x5e8285[_0x8fbe('0x2b')],'UserId':_0x5e8285['id'],'queue_name':_0x899dd[_0x8fbe('0x2b')],'VoiceQueueId':_0x899dd['id'],'interface':_[_0x8fbe('0x74')](_0x5e8285[_0x8fbe('0x75')])?util[_0x8fbe('0x76')](_0x8fbe('0x77'),_0x5e8285[_0x8fbe('0x2b')]):_0x5e8285['interface'],'paused':_0x5e8285['voicePause']||![],'penalty':_0x899dd['TeamVoiceQueue'][_0x8fbe('0x6a')]},{'transaction':_0x154373});});return Promise[_0x8fbe('0x78')](_0x41af34);});});});return Promise[_0x8fbe('0x78')](_0x449cbb);});return Promise[_0x8fbe('0x78')](_0x395f8f);});});return Promise[_0x8fbe('0x78')](_0x525d43)['then'](function(){return _0x1e786a['addAgents'](_0x374d90[_0x8fbe('0x4a')][_0x8fbe('0x60')],{'transaction':_0x154373})['spread'](function(_0x446d0b){return _0x446d0b;});});});}})[_0x8fbe('0x25')](respondWithResult(_0x34bf31,null))[_0x8fbe('0x46')](handleError(_0x34bf31,null));};exports[_0x8fbe('0x79')]=function(_0x41288c,_0x53c441){return db[_0x8fbe('0x2f')][_0x8fbe('0x48')]({'where':{'id':_0x41288c[_0x8fbe('0x53')]['id']}})[_0x8fbe('0x25')](handleEntityNotFound(_0x53c441,null))['then'](function(_0x23bf8c){if(_0x23bf8c){var _0x7e4de7=[_0x8fbe('0x64'),_0x8fbe('0x7a'),_0x8fbe('0x7b'),_0x8fbe('0x65'),_0x8fbe('0x66'),_0x8fbe('0x67'),_0x8fbe('0x7c')];return db[_0x8fbe('0x68')][_0x8fbe('0x7d')](function(_0x304ed4){var _0x83e7e=_[_0x8fbe('0x2e')](_0x7e4de7,function(_0x327e6d){var _0x4d94b6={'attributes':['id',_0x8fbe('0x2b')]};return _0x23bf8c['get'+_0x327e6d+_0x8fbe('0x5c')](_0x4d94b6)[_0x8fbe('0x25')](function(_0xbe572c){var _0x14e5d5=_[_0x8fbe('0x2e')](_0xbe572c,function(_0x31c1dd){return _0x31c1dd[_0x8fbe('0x79')](_0x41288c[_0x8fbe('0x34')][_0x8fbe('0x60')],{'transaction':_0x304ed4})[_0x8fbe('0x25')](function(){var _0x50de30=JSON['parse']('['+_0x41288c[_0x8fbe('0x34')][_0x8fbe('0x60')]+']');var _0x3e42df=_[_0x8fbe('0x2e')](_0x50de30,function(_0x5266dd){socket['emit']('user'+_0x327e6d+_0x8fbe('0x7e'),{'UserId':Number(_0x5266dd),[_0x327e6d+_0x8fbe('0x6b')]:_0x31c1dd['id']});if(_0x327e6d!==_0x8fbe('0x64'))return;return db[_0x8fbe('0x73')][_0x8fbe('0x26')]({'where':{'VoiceQueueId':_0x31c1dd['id'],'UserId':_0x5266dd},'transaction':_0x304ed4});});return Promise['all'](_0x3e42df);});});return Promise[_0x8fbe('0x78')](_0x14e5d5);});});return Promise['all'](_0x83e7e)['then'](function(){return _0x23bf8c[_0x8fbe('0x79')](_0x41288c[_0x8fbe('0x34')]['ids'],{'transaction':_0x304ed4});});});}})[_0x8fbe('0x25')](respondWithStatusCode(_0x53c441,null))['catch'](handleError(_0x53c441,null));};exports['getAgents']=function(_0x34fb93,_0x1d49dd,_0x45b71c){var _0x4724e2={};var _0x32ca52={};var _0xfffd84;var _0x185cca;return db['Team'][_0x8fbe('0x55')]({'where':{'id':_0x34fb93[_0x8fbe('0x53')]['id']}})[_0x8fbe('0x25')](handleEntityNotFound(_0x1d49dd,null))[_0x8fbe('0x25')](function(_0x48dc75){if(_0x48dc75){_0xfffd84=_0x48dc75;_0x32ca52[_0x8fbe('0x33')]=_[_0x8fbe('0x47')](db[_0x8fbe('0x6d')][_0x8fbe('0x30')]);_0x32ca52[_0x8fbe('0x34')]=_['keys'](_0x34fb93['query']);_0x32ca52[_0x8fbe('0x3e')]=_[_0x8fbe('0x35')](_0x32ca52[_0x8fbe('0x33')],_0x32ca52[_0x8fbe('0x34')]);_0x4724e2[_0x8fbe('0x36')]=_[_0x8fbe('0x35')](_0x32ca52['model'],qs[_0x8fbe('0x37')](_0x34fb93[_0x8fbe('0x34')]['fields']));_0x4724e2[_0x8fbe('0x36')]=_0x4724e2[_0x8fbe('0x36')][_0x8fbe('0x38')]?_0x4724e2[_0x8fbe('0x36')]:_0x32ca52[_0x8fbe('0x33')];_0x4724e2[_0x8fbe('0x3b')]=qs[_0x8fbe('0x3c')](_0x34fb93[_0x8fbe('0x34')][_0x8fbe('0x3c')]);_0x4724e2[_0x8fbe('0x3d')]=qs[_0x8fbe('0x3e')](_[_0x8fbe('0x3f')](_0x34fb93[_0x8fbe('0x34')],_0x32ca52[_0x8fbe('0x3e')]));if(_0x34fb93['query'][_0x8fbe('0x40')]){_0x4724e2[_0x8fbe('0x3d')]=_[_0x8fbe('0x42')](_0x4724e2[_0x8fbe('0x3d')],{'$or':_['map'](_0x4724e2[_0x8fbe('0x36')],function(_0xa9cc3a){var _0x5ce16e={};_0x5ce16e[_0xa9cc3a]={'$like':'%'+_0x34fb93[_0x8fbe('0x34')][_0x8fbe('0x40')]+'%'};return _0x5ce16e;})});}_0x4724e2=_[_0x8fbe('0x42')]({},_0x4724e2,_0x34fb93[_0x8fbe('0x43')]);return _0xfffd84[_0x8fbe('0x7f')](_0x4724e2);}})[_0x8fbe('0x25')](function(_0x341094){if(_0x341094){_0x185cca=_0x341094[_0x8fbe('0x38')];if(!_0x34fb93[_0x8fbe('0x34')][_0x8fbe('0x80')]('nolimit')){_0x4724e2['limit']=qs[_0x8fbe('0x3a')](_0x34fb93['query'][_0x8fbe('0x3a')]);_0x4724e2[_0x8fbe('0x22')]=qs[_0x8fbe('0x22')](_0x34fb93[_0x8fbe('0x34')]['offset']);}return _0xfffd84[_0x8fbe('0x7f')](_0x4724e2);}})[_0x8fbe('0x25')](function(_0x5d6886){if(_0x5d6886){return _0x5d6886?{'count':_0x185cca,'rows':_0x5d6886}:null;}})[_0x8fbe('0x25')](respondWithResult(_0x1d49dd,null))[_0x8fbe('0x46')](handleError(_0x1d49dd,null));};
\ No newline at end of file
index 643a953..7290cc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7804=['hook','exports','events','../../mysqldb','Team','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x21e998,_0x558e24){var _0x1382f6=function(_0x5dd85b){while(--_0x5dd85b){_0x21e998['push'](_0x21e998['shift']());}};_0x1382f6(++_0x558e24);}(_0x7804,0x66));var _0x4780=function(_0xc2c330,_0x43cef3){_0xc2c330=_0xc2c330-0x0;var _0x512b01=_0x7804[_0xc2c330];return _0x512b01;};'use strict';var EventEmitter=require(_0x4780('0x0'));var Team=require(_0x4780('0x1'))['db'][_0x4780('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x4780('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4780('0x4'),'afterDestroy':_0x4780('0x5')};function emitEvent(_0x510659){return function(_0x27e662,_0x26941a,_0x41820f){TeamEvents['emit'](_0x510659+':'+_0x27e662['id'],_0x27e662);TeamEvents[_0x4780('0x6')](_0x510659,_0x27e662);_0x41820f(null);};}for(var e in events){if(events[_0x4780('0x7')](e)){var event=events[e];Team[_0x4780('0x8')](e,emitEvent(event));}}module[_0x4780('0x9')]=TeamEvents;
\ No newline at end of file
+var _0xd808=['setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Team'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0xd808,0x11f));var _0x8d80=function(_0x10c51f,_0x11270f){_0x10c51f=_0x10c51f-0x0;var _0x56a0cd=_0xd808[_0x10c51f];return _0x56a0cd;};'use strict';var EventEmitter=require(_0x8d80('0x0'));var Team=require(_0x8d80('0x1'))['db'][_0x8d80('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x8d80('0x3')](0x0);var events={'afterCreate':_0x8d80('0x4'),'afterUpdate':'update','afterDestroy':_0x8d80('0x5')};function emitEvent(_0x373d0a){return function(_0x142e5c,_0x48a25a,_0x43d824){TeamEvents[_0x8d80('0x6')](_0x373d0a+':'+_0x142e5c['id'],_0x142e5c);TeamEvents['emit'](_0x373d0a,_0x142e5c);_0x43d824(null);};}for(var e in events){if(events[_0x8d80('0x7')](e)){var event=events[e];Team[_0x8d80('0x8')](e,emitEvent(event));}}module[_0x8d80('0x9')]=TeamEvents;
\ No newline at end of file
index 24a4a2f..2ace2c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1c0=['exports','Team','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./team.attributes'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xf1c0,0x91));var _0x0f1c=function(_0x59623e,_0x2dde03){_0x59623e=_0x59623e-0x0;var _0x28f2f6=_0xf1c0[_0x59623e];return _0x28f2f6;};'use strict';var _=require(_0x0f1c('0x0'));var util=require(_0x0f1c('0x1'));var logger=require(_0x0f1c('0x2'))(_0x0f1c('0x3'));var moment=require(_0x0f1c('0x4'));var BPromise=require(_0x0f1c('0x5'));var rp=require(_0x0f1c('0x6'));var fs=require('fs');var path=require(_0x0f1c('0x7'));var rimraf=require(_0x0f1c('0x8'));var config=require(_0x0f1c('0x9'));var attributes=require(_0x0f1c('0xa'));module[_0x0f1c('0xb')]=function(_0x5c6a48,_0x1c5a64){return _0x5c6a48['define'](_0x0f1c('0xc'),attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1234=['lodash','api','moment','bluebird','request-promise','path','../../config/environment','./team.attributes','exports','Team'];(function(_0x319687,_0x268ada){var _0x153252=function(_0x3c3a76){while(--_0x3c3a76){_0x319687['push'](_0x319687['shift']());}};_0x153252(++_0x268ada);}(_0x1234,0x14a));var _0x4123=function(_0x15df53,_0x55b292){_0x15df53=_0x15df53-0x0;var _0x10eb13=_0x1234[_0x15df53];return _0x10eb13;};'use strict';var _=require(_0x4123('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x4123('0x1'));var moment=require(_0x4123('0x2'));var BPromise=require(_0x4123('0x3'));var rp=require(_0x4123('0x4'));var fs=require('fs');var path=require(_0x4123('0x5'));var rimraf=require('rimraf');var config=require(_0x4123('0x6'));var attributes=require(_0x4123('0x7'));module[_0x4123('0x8')]=function(_0x3985f0,_0x4bef2f){return _0x3985f0['define'](_0x4123('0x9'),attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 00b54f6..ca14f5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc485=['code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','localhost','./team.socket','register','info','Team,\x20%s,\x20%s','request\x20sent','Team,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x27530d,_0x46480a){var _0x59e561=function(_0x395fe9){while(--_0x395fe9){_0x27530d['push'](_0x27530d['shift']());}};_0x59e561(++_0x46480a);}(_0xc485,0x1be));var _0x5c48=function(_0x577077,_0x52f056){_0x577077=_0x577077-0x0;var _0x370769=_0xc485[_0x577077];return _0x370769;};'use strict';var _=require(_0x5c48('0x0'));var util=require('util');var moment=require(_0x5c48('0x1'));var BPromise=require(_0x5c48('0x2'));var rs=require(_0x5c48('0x3'));var fs=require('fs');var Redis=require(_0x5c48('0x4'));var db=require(_0x5c48('0x5'))['db'];var utils=require(_0x5c48('0x6'));var logger=require(_0x5c48('0x7'))(_0x5c48('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5c48('0x9')][_0x5c48('0xa')]({'port':0x232a});config[_0x5c48('0xb')]=_[_0x5c48('0xc')](config[_0x5c48('0xb')],{'host':_0x5c48('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5c48('0xb')]));require(_0x5c48('0xe'))[_0x5c48('0xf')](socket);function respondWithRpcPromise(_0x5d3e97,_0x15026c,_0x49c0fd){return new BPromise(function(_0xe16ba8,_0x449d22){return client['request'](_0x5d3e97,_0x49c0fd)['then'](function(_0x3e2e31){logger[_0x5c48('0x10')](_0x5c48('0x11'),_0x15026c,_0x5c48('0x12'));logger['debug'](_0x5c48('0x13'),_0x15026c,_0x5c48('0x12'),JSON[_0x5c48('0x14')](_0x3e2e31));if(_0x3e2e31['error']){if(_0x3e2e31[_0x5c48('0x15')][_0x5c48('0x16')]===0x1f4){logger[_0x5c48('0x15')](_0x5c48('0x11'),_0x15026c,_0x3e2e31['error'][_0x5c48('0x17')]);return _0x449d22(_0x3e2e31['error'][_0x5c48('0x17')]);}logger[_0x5c48('0x15')](_0x5c48('0x11'),_0x15026c,_0x3e2e31['error'][_0x5c48('0x17')]);return _0xe16ba8(_0x3e2e31[_0x5c48('0x15')]['message']);}else{logger[_0x5c48('0x10')]('Team,\x20%s,\x20%s',_0x15026c,_0x5c48('0x12'));_0xe16ba8(_0x3e2e31[_0x5c48('0x18')][_0x5c48('0x17')]);}})[_0x5c48('0x19')](function(_0x1dea2f){logger[_0x5c48('0x15')](_0x5c48('0x11'),_0x15026c,_0x1dea2f);_0x449d22(_0x1dea2f);});});}
\ No newline at end of file
+var _0x414d=['defaults','localhost','socket.io-emitter','request','then','info','Team,\x20%s,\x20%s','debug','Team,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','client','redis'];(function(_0x24259d,_0x64a194){var _0x5a701=function(_0x204516){while(--_0x204516){_0x24259d['push'](_0x24259d['shift']());}};_0x5a701(++_0x64a194);}(_0x414d,0x154));var _0xd414=function(_0x4c6e4a,_0x263ab8){_0x4c6e4a=_0x4c6e4a-0x0;var _0x3d69f4=_0x414d[_0x4c6e4a];return _0x3d69f4;};'use strict';var _=require(_0xd414('0x0'));var util=require(_0xd414('0x1'));var moment=require(_0xd414('0x2'));var BPromise=require(_0xd414('0x3'));var rs=require(_0xd414('0x4'));var fs=require('fs');var Redis=require(_0xd414('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd414('0x6'));var logger=require(_0xd414('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd414('0x8')]['http']({'port':0x232a});config[_0xd414('0x9')]=_[_0xd414('0xa')](config[_0xd414('0x9')],{'host':_0xd414('0xb'),'port':0x18eb});var socket=require(_0xd414('0xc'))(new Redis(config[_0xd414('0x9')]));require('./team.socket')['register'](socket);function respondWithRpcPromise(_0xec8ca5,_0x71b156,_0x27cb54){return new BPromise(function(_0x20ca8,_0x3cf488){return client[_0xd414('0xd')](_0xec8ca5,_0x27cb54)[_0xd414('0xe')](function(_0x310767){logger[_0xd414('0xf')](_0xd414('0x10'),_0x71b156,'request\x20sent');logger[_0xd414('0x11')](_0xd414('0x12'),_0x71b156,_0xd414('0x13'),JSON[_0xd414('0x14')](_0x310767));if(_0x310767['error']){if(_0x310767[_0xd414('0x15')]['code']===0x1f4){logger[_0xd414('0x15')]('Team,\x20%s,\x20%s',_0x71b156,_0x310767[_0xd414('0x15')][_0xd414('0x16')]);return _0x3cf488(_0x310767[_0xd414('0x15')][_0xd414('0x16')]);}logger[_0xd414('0x15')](_0xd414('0x10'),_0x71b156,_0x310767[_0xd414('0x15')]['message']);return _0x20ca8(_0x310767['error'][_0xd414('0x16')]);}else{logger['info']('Team,\x20%s,\x20%s',_0x71b156,_0xd414('0x13'));_0x20ca8(_0x310767[_0xd414('0x17')][_0xd414('0x16')]);}})[_0xd414('0x18')](function(_0x3c0b1b){logger[_0xd414('0x15')](_0xd414('0x10'),_0x71b156,_0x3c0b1b);_0x3cf488(_0x3c0b1b);});});}
\ No newline at end of file
index 5ad803b..3785647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x228d=['update','register','team:','./team.events','save','remove'];(function(_0x314370,_0x501045){var _0x1ef00c=function(_0x309779){while(--_0x309779){_0x314370['push'](_0x314370['shift']());}};_0x1ef00c(++_0x501045);}(_0x228d,0x87));var _0xd228=function(_0xa0ac05,_0x4a7da8){_0xa0ac05=_0xa0ac05-0x0;var _0x6ea8b4=_0x228d[_0xa0ac05];return _0x6ea8b4;};'use strict';var TeamEvents=require(_0xd228('0x0'));var events=[_0xd228('0x1'),_0xd228('0x2'),_0xd228('0x3')];function createListener(_0x66b451,_0x29ded0){return function(_0x20887d){_0x29ded0['emit'](_0x66b451,_0x20887d);};}function removeListener(_0x389a68,_0xf361b7){return function(){TeamEvents['removeListener'](_0x389a68,_0xf361b7);};}exports[_0xd228('0x4')]=function(_0x50490d){for(var _0x5530c4=0x0,_0x51d129=events['length'];_0x5530c4<_0x51d129;_0x5530c4++){var _0x442121=events[_0x5530c4];var _0x48fecf=createListener(_0xd228('0x5')+_0x442121,_0x50490d);TeamEvents['on'](_0x442121,_0x48fecf);}};
\ No newline at end of file
+var _0x4fad=['register','length','team:','./team.events','save','remove','emit','removeListener'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x4fad,0xcb));var _0xd4fa=function(_0xfd2cc7,_0x40f00b){_0xfd2cc7=_0xfd2cc7-0x0;var _0x2d99e2=_0x4fad[_0xfd2cc7];return _0x2d99e2;};'use strict';var TeamEvents=require(_0xd4fa('0x0'));var events=[_0xd4fa('0x1'),_0xd4fa('0x2'),'update'];function createListener(_0x22bcd4,_0x3711b4){return function(_0x174360){_0x3711b4[_0xd4fa('0x3')](_0x22bcd4,_0x174360);};}function removeListener(_0x419a9c,_0x3903a1){return function(){TeamEvents[_0xd4fa('0x4')](_0x419a9c,_0x3903a1);};}exports[_0xd4fa('0x5')]=function(_0x597fbe){for(var _0x2d4e07=0x0,_0x52b426=events[_0xd4fa('0x6')];_0x2d4e07<_0x52b426;_0x2d4e07++){var _0x19a910=events[_0x2d4e07];var _0x155c09=createListener(_0xd4fa('0x7')+_0x19a910,_0x597fbe);TeamEvents['on'](_0x19a910,_0x155c09);}};
\ No newline at end of file
diff --git a/server/api/teamVoicePrefix/teamVoicePrefix.attributes.js b/server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
deleted file mode 100644 (file)
index 0bc467c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0x9d3d=['exports','INTEGER'];(function(_0x431581,_0x1100e2){var _0x3e2565=function(_0xec6ee1){while(--_0xec6ee1){_0x431581['push'](_0x431581['shift']());}};_0x3e2565(++_0x1100e2);}(_0x9d3d,0x96));var _0xd9d3=function(_0xe0d30,_0x2be2c4){_0xe0d30=_0xe0d30-0x0;var _0x757289=_0x9d3d[_0xe0d30];return _0x757289;};'use strict';var Sequelize=require('sequelize');module[_0xd9d3('0x0')]={'TeamId':{'type':Sequelize[_0xd9d3('0x1')]},'VoicePrefixId':{'type':Sequelize[_0xd9d3('0x1')]}};
\ No newline at end of file
diff --git a/server/api/teamVoicePrefix/teamVoicePrefix.model.js b/server/api/teamVoicePrefix/teamVoicePrefix.model.js
deleted file mode 100644 (file)
index 1f3cba3..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0x087b=['../../config/environment','./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix','team_has_voice_prefixes','lodash','util','moment','request-promise','path','rimraf'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x087b,0x11a));var _0xb087=function(_0x2080a3,_0x48acfa){_0x2080a3=_0x2080a3-0x0;var _0x8d7d17=_0x087b[_0x2080a3];return _0x8d7d17;};'use strict';var _=require(_0xb087('0x0'));var util=require(_0xb087('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xb087('0x2'));var BPromise=require('bluebird');var rp=require(_0xb087('0x3'));var fs=require('fs');var path=require(_0xb087('0x4'));var rimraf=require(_0xb087('0x5'));var config=require(_0xb087('0x6'));var attributes=require(_0xb087('0x7'));module[_0xb087('0x8')]=function(_0x40156d,_0x17d6e8){return _0x40156d[_0xb087('0x9')](_0xb087('0xa'),attributes,{'tableName':_0xb087('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 656cada..b59379e 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(_0x284b22,_0x1e0f2c){var _0x261e08=function(_0x167b12){while(--_0x167b12){_0x284b22['push'](_0x284b22['shift']());}};_0x261e08(++_0x1e0f2c);}(_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'));module['exports']=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x18e3a1,_0xd51faa){var _0x69b4a1=function(_0x2509a8){while(--_0x2509a8){_0x18e3a1['push'](_0x18e3a1['shift']());}};_0x69b4a1(++_0xd51faa);}(_0x9c44,0x178));var _0x49c4=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x9c44[_0x2064e5];return _0x21a233;};'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 0aad208..4d49a9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa58a=['sequelize','exports'];(function(_0x17c3d3,_0x7675f2){var _0xcbfcb5=function(_0x4eed9e){while(--_0x4eed9e){_0x17c3d3['push'](_0x17c3d3['shift']());}};_0xcbfcb5(++_0x7675f2);}(_0xa58a,0x104));var _0xaa58=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xa58a[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require(_0xaa58('0x0'));module[_0xaa58('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1f89=['exports','INTEGER','sequelize'];(function(_0x2e5216,_0x23893f){var _0x4a6e14=function(_0x2679f9){while(--_0x2679f9){_0x2e5216['push'](_0x2e5216['shift']());}};_0x4a6e14(++_0x23893f);}(_0x1f89,0x14c));var _0x91f8=function(_0x2928d4,_0x4fea4c){_0x2928d4=_0x2928d4-0x0;var _0x40d1f5=_0x1f89[_0x2928d4];return _0x40d1f5;};'use strict';var Sequelize=require(_0x91f8('0x0'));module[_0x91f8('0x1')]={'penalty':{'type':Sequelize[_0x91f8('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 9c51a00..78697da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6753=['bluebird','request-promise','rimraf','../../config/environment','define','TeamVoiceQueue','team_has_voice_queues','lodash','util','../../config/logger','api'];(function(_0x18ee13,_0x6f5058){var _0x4a7cae=function(_0x5c0386){while(--_0x5c0386){_0x18ee13['push'](_0x18ee13['shift']());}};_0x4a7cae(++_0x6f5058);}(_0x6753,0xa1));var _0x3675=function(_0x15e45f,_0x812bb7){_0x15e45f=_0x15e45f-0x0;var _0x50c4ee=_0x6753[_0x15e45f];return _0x50c4ee;};'use strict';var _=require(_0x3675('0x0'));var util=require(_0x3675('0x1'));var logger=require(_0x3675('0x2'))(_0x3675('0x3'));var moment=require('moment');var BPromise=require(_0x3675('0x4'));var rp=require(_0x3675('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3675('0x6'));var config=require(_0x3675('0x7'));var attributes=require('./teamVoiceQueue.attributes');module['exports']=function(_0x4e4e73,_0x396a35){return _0x4e4e73[_0x3675('0x8')](_0x3675('0x9'),attributes,{'tableName':_0x3675('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe14d=['util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','team_has_voice_queues','lodash'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0xe14d,0x1ee));var _0xde14=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xe14d[_0x4dbaad];return _0x226c72;};'use strict';var _=require(_0xde14('0x0'));var util=require(_0xde14('0x1'));var logger=require(_0xde14('0x2'))(_0xde14('0x3'));var moment=require('moment');var BPromise=require(_0xde14('0x4'));var rp=require(_0xde14('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xde14('0x6'));var config=require(_0xde14('0x7'));var attributes=require(_0xde14('0x8'));module[_0xde14('0x9')]=function(_0x461af3,_0xba1514){return _0x461af3['define']('TeamVoiceQueue',attributes,{'tableName':_0xde14('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8216be5..692282c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93eb=['request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','TeamVoiceQueue,\x20%s,\x20%s','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info'];(function(_0x3eb795,_0x4f3849){var _0x1d3490=function(_0x426dcc){while(--_0x426dcc){_0x3eb795['push'](_0x3eb795['shift']());}};_0x1d3490(++_0x4f3849);}(_0x93eb,0x7d));var _0xb93e=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x93eb[_0x4e676e];return _0x336a3c;};'use strict';var _=require('lodash');var util=require(_0xb93e('0x0'));var moment=require('moment');var BPromise=require(_0xb93e('0x1'));var rs=require(_0xb93e('0x2'));var fs=require('fs');var Redis=require(_0xb93e('0x3'));var db=require(_0xb93e('0x4'))['db'];var utils=require(_0xb93e('0x5'));var logger=require('../../config/logger')(_0xb93e('0x6'));var config=require('../../config/environment');var jayson=require(_0xb93e('0x7'));var client=jayson[_0xb93e('0x8')][_0xb93e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xcb759,_0x5302d4,_0x3599d4){return new BPromise(function(_0x3e6e2d,_0x20f9d1){return client[_0xb93e('0xa')](_0xcb759,_0x3599d4)[_0xb93e('0xb')](function(_0x9f91d8){logger[_0xb93e('0xc')]('TeamVoiceQueue,\x20%s,\x20%s',_0x5302d4,_0xb93e('0xd'));logger[_0xb93e('0xe')](_0xb93e('0xf'),_0x5302d4,_0xb93e('0xd'),JSON[_0xb93e('0x10')](_0x9f91d8));if(_0x9f91d8[_0xb93e('0x11')]){if(_0x9f91d8[_0xb93e('0x11')][_0xb93e('0x12')]===0x1f4){logger['error'](_0xb93e('0x13'),_0x5302d4,_0x9f91d8['error'][_0xb93e('0x14')]);return _0x20f9d1(_0x9f91d8['error'][_0xb93e('0x14')]);}logger[_0xb93e('0x11')]('TeamVoiceQueue,\x20%s,\x20%s',_0x5302d4,_0x9f91d8['error']['message']);return _0x3e6e2d(_0x9f91d8[_0xb93e('0x11')][_0xb93e('0x14')]);}else{logger['info'](_0xb93e('0x13'),_0x5302d4,_0xb93e('0xd'));_0x3e6e2d(_0x9f91d8[_0xb93e('0x15')]['message']);}})[_0xb93e('0x16')](function(_0x4a8e2b){logger['error']('TeamVoiceQueue,\x20%s,\x20%s',_0x5302d4,_0x4a8e2b);_0x20f9d1(_0x4a8e2b);});});}
\ No newline at end of file
+var _0xc997=['then','TeamVoiceQueue,\x20%s,\x20%s','debug','stringify','error','code','message','info','request\x20sent','result','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x41bc53,_0x48fa89){var _0x4a2a35=function(_0x374df3){while(--_0x374df3){_0x41bc53['push'](_0x41bc53['shift']());}};_0x4a2a35(++_0x48fa89);}(_0xc997,0x1ac));var _0x7c99=function(_0x23add2,_0x59a127){_0x23add2=_0x23add2-0x0;var _0x2fdc91=_0xc997[_0x23add2];return _0x2fdc91;};'use strict';var _=require('lodash');var util=require(_0x7c99('0x0'));var moment=require(_0x7c99('0x1'));var BPromise=require(_0x7c99('0x2'));var rs=require(_0x7c99('0x3'));var fs=require('fs');var Redis=require(_0x7c99('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7c99('0x5'));var logger=require(_0x7c99('0x6'))(_0x7c99('0x7'));var config=require(_0x7c99('0x8'));var jayson=require(_0x7c99('0x9'));var client=jayson[_0x7c99('0xa')][_0x7c99('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x36955c,_0x56bf58,_0x6d672){return new BPromise(function(_0x33fd86,_0x905c84){return client['request'](_0x36955c,_0x6d672)[_0x7c99('0xc')](function(_0x9f6f7c){logger['info'](_0x7c99('0xd'),_0x56bf58,'request\x20sent');logger[_0x7c99('0xe')]('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x56bf58,'request\x20sent',JSON[_0x7c99('0xf')](_0x9f6f7c));if(_0x9f6f7c[_0x7c99('0x10')]){if(_0x9f6f7c[_0x7c99('0x10')][_0x7c99('0x11')]===0x1f4){logger[_0x7c99('0x10')](_0x7c99('0xd'),_0x56bf58,_0x9f6f7c[_0x7c99('0x10')][_0x7c99('0x12')]);return _0x905c84(_0x9f6f7c[_0x7c99('0x10')][_0x7c99('0x12')]);}logger[_0x7c99('0x10')](_0x7c99('0xd'),_0x56bf58,_0x9f6f7c[_0x7c99('0x10')][_0x7c99('0x12')]);return _0x33fd86(_0x9f6f7c[_0x7c99('0x10')][_0x7c99('0x12')]);}else{logger[_0x7c99('0x13')](_0x7c99('0xd'),_0x56bf58,_0x7c99('0x14'));_0x33fd86(_0x9f6f7c[_0x7c99('0x15')][_0x7c99('0x12')]);}})['catch'](function(_0x2d80d4){logger['error']('TeamVoiceQueue,\x20%s,\x20%s',_0x56bf58,_0x2d80d4);_0x905c84(_0x2d80d4);});});}
\ No newline at end of file
index fd9777f..f530b16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38b8=['exports','multer','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','create','put','delete','destroy'];(function(_0x391cd8,_0x37e968){var _0x5bdf6b=function(_0x1c1cb8){while(--_0x1c1cb8){_0x391cd8['push'](_0x391cd8['shift']());}};_0x5bdf6b(++_0x37e968);}(_0x38b8,0x7f));var _0x838b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x38b8[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x838b('0x0'));var util=require('util');var path=require(_0x838b('0x1'));var timeout=require(_0x838b('0x2'));var express=require('express');var router=express[_0x838b('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x838b('0x4'));var config=require(_0x838b('0x5'));var controller=require('./template.controller');router['get']('/',auth[_0x838b('0x6')](),controller[_0x838b('0x7')]);router['get'](_0x838b('0x8'),auth[_0x838b('0x6')](),controller['show']);router['post']('/',auth[_0x838b('0x6')](),controller[_0x838b('0x9')]);router[_0x838b('0xa')]('/:id',auth[_0x838b('0x6')](),controller['update']);router[_0x838b('0xb')](_0x838b('0x8'),auth[_0x838b('0x6')](),controller[_0x838b('0xc')]);module[_0x838b('0xd')]=router;
\ No newline at end of file
+var _0xfcbb=['/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get'];(function(_0xc02ff2,_0x4a417e){var _0x3cc849=function(_0x14759d){while(--_0x14759d){_0xc02ff2['push'](_0xc02ff2['shift']());}};_0x3cc849(++_0x4a417e);}(_0xfcbb,0x10d));var _0xbfcb=function(_0x19a018,_0x5c996c){_0x19a018=_0x19a018-0x0;var _0x493974=_0xfcbb[_0x19a018];return _0x493974;};'use strict';var multer=require(_0xbfcb('0x0'));var util=require(_0xbfcb('0x1'));var path=require(_0xbfcb('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbfcb('0x3')]();var fs_extra=require(_0xbfcb('0x4'));var auth=require(_0xbfcb('0x5'));var interaction=require(_0xbfcb('0x6'));var config=require(_0xbfcb('0x7'));var controller=require('./template.controller');router['get']('/',auth[_0xbfcb('0x8')](),controller[_0xbfcb('0x9')]);router[_0xbfcb('0xa')](_0xbfcb('0xb'),auth[_0xbfcb('0x8')](),controller[_0xbfcb('0xc')]);router[_0xbfcb('0xd')]('/',auth['isAuthenticated'](),controller[_0xbfcb('0xe')]);router[_0xbfcb('0xf')](_0xbfcb('0xb'),auth['isAuthenticated'](),controller[_0xbfcb('0x10')]);router[_0xbfcb('0x11')](_0xbfcb('0xb'),auth[_0xbfcb('0x8')](),controller[_0xbfcb('0x12')]);module[_0xbfcb('0x13')]=router;
\ No newline at end of file
index 814382d..d004ba0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc140=['STRING','TEXT','sequelize'];(function(_0x16c934,_0x1b48f8){var _0x322325=function(_0x52de33){while(--_0x52de33){_0x16c934['push'](_0x16c934['shift']());}};_0x322325(++_0x1b48f8);}(_0xc140,0x143));var _0x0c14=function(_0x99ff94,_0x47a1b1){_0x99ff94=_0x99ff94-0x0;var _0x1b5bc0=_0xc140[_0x99ff94];return _0x1b5bc0;};'use strict';var Sequelize=require(_0x0c14('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x0c14('0x1')]},'html':{'type':Sequelize[_0x0c14('0x2')]}};
\ No newline at end of file
+var _0xab42=['STRING','TEXT','sequelize','exports'];(function(_0x121350,_0x361f4d){var _0x2e21c7=function(_0x3b6d51){while(--_0x3b6d51){_0x121350['push'](_0x121350['shift']());}};_0x2e21c7(++_0x361f4d);}(_0xab42,0x142));var _0x2ab4=function(_0x3c38d8,_0xa60299){_0x3c38d8=_0x3c38d8-0x0;var _0xdc36fa=_0xab42[_0x3c38d8];return _0xdc36fa;};'use strict';var Sequelize=require(_0x2ab4('0x0'));module[_0x2ab4('0x1')]={'name':{'type':Sequelize[_0x2ab4('0x2')]},'description':{'type':Sequelize[_0x2ab4('0x2')]},'html':{'type':Sequelize[_0x2ab4('0x3')]}};
\ No newline at end of file
index db1f2da..efab858 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc26c=['VIRTUAL','filter','options','include','rows','show','params','length','includeAll','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','reject','update','then','destroy','get','Templates','UserProfileResource','error','name','send','index','map','Template','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge'];(function(_0x5cb606,_0x4c749d){var _0x41ddb3=function(_0x3159f4){while(--_0x3159f4){_0x5cb606['push'](_0x5cb606['shift']());}};_0x41ddb3(++_0x4c749d);}(_0xc26c,0x1a8));var _0xcc26=function(_0x12a82a,_0x4df3e0){_0x12a82a=_0x12a82a-0x0;var _0x1a59a8=_0xc26c[_0x12a82a];return _0x1a59a8;};'use strict';var emlformat=require(_0xcc26('0x0'));var rimraf=require(_0xcc26('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcc26('0x2'));var rp=require('request-promise');var moment=require(_0xcc26('0x3'));var BPromise=require(_0xcc26('0x4'));var Mustache=require(_0xcc26('0x5'));var util=require('util');var path=require('path');var sox=require(_0xcc26('0x6'));var csv=require('to-csv');var ejs=require(_0xcc26('0x7'));var fs=require('fs');var fs_extra=require(_0xcc26('0x8'));var _=require(_0xcc26('0x9'));var squel=require(_0xcc26('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xcc26('0xb'));var Papa=require(_0xcc26('0xc'));var Redis=require(_0xcc26('0xd'));var authService=require(_0xcc26('0xe'));var qs=require(_0xcc26('0xf'));var as=require(_0xcc26('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcc26('0x11'))(_0xcc26('0x12'));var utils=require('../../config/utils');var config=require(_0xcc26('0x13'));var licenseUtil=require(_0xcc26('0x14'));var db=require(_0xcc26('0x15'))['db'];function respondWithStatusCode(_0x10fb69,_0x421486){_0x421486=_0x421486||0xcc;return function(_0x45a8a1){if(_0x45a8a1){return _0x10fb69[_0xcc26('0x16')](_0x421486);}return _0x10fb69['status'](_0x421486)[_0xcc26('0x17')]();};}function respondWithResult(_0x5bc63a,_0x4dac0d){_0x4dac0d=_0x4dac0d||0xc8;return function(_0xcce398){if(_0xcce398){return _0x5bc63a['status'](_0x4dac0d)[_0xcc26('0x18')](_0xcce398);}};}function respondWithFilteredResult(_0x37e25b,_0x312c9b){return function(_0x3c8406){if(_0x3c8406){var _0x184135=typeof _0x312c9b[_0xcc26('0x19')]===_0xcc26('0x1a')&&typeof _0x312c9b[_0xcc26('0x1b')]===_0xcc26('0x1a');var _0x4c9232=_0x3c8406[_0xcc26('0x1c')];var _0x2e6579=_0x184135?0x0:_0x312c9b[_0xcc26('0x19')];var _0x4cdd30=_0x184135?_0x3c8406['count']:_0x312c9b[_0xcc26('0x19')]+_0x312c9b['limit'];var _0x433973;if(_0x4cdd30>=_0x4c9232){_0x4cdd30=_0x4c9232;_0x433973=0xc8;}else{_0x433973=0xce;}_0x37e25b[_0xcc26('0x1d')](_0x433973);return _0x37e25b[_0xcc26('0x1e')](_0xcc26('0x1f'),_0x2e6579+'-'+_0x4cdd30+'/'+_0x4c9232)['json'](_0x3c8406);}return null;};}function patchUpdates(_0x314d6c){return function(_0x1187ed){try{jsonpatch['apply'](_0x1187ed,_0x314d6c,!![]);}catch(_0x2c0dd5){return BPromise[_0xcc26('0x20')](_0x2c0dd5);}return _0x1187ed['save']();};}function saveUpdates(_0x43510f,_0xc6a200){return function(_0x3e84ec){if(_0x3e84ec){return _0x3e84ec[_0xcc26('0x21')](_0x43510f)[_0xcc26('0x22')](function(_0x3debab){return _0x3debab;});}return null;};}function removeEntity(_0xd9542a,_0x244e2b){return function(_0x3daa4e){if(_0x3daa4e){return _0x3daa4e[_0xcc26('0x23')]()[_0xcc26('0x22')](function(){var _0x3f62f3=_0x3daa4e[_0xcc26('0x24')]({'plain':!![]});var _0x19e2d3=_0xcc26('0x25');return db[_0xcc26('0x26')][_0xcc26('0x23')]({'where':{'type':_0x19e2d3,'resourceId':_0x3f62f3['id']}})['then'](function(){return _0x3daa4e;});})['then'](function(){_0xd9542a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x59ee13,_0x524a6f){return function(_0x3373d3){if(!_0x3373d3){_0x59ee13[_0xcc26('0x16')](0x194);}return _0x3373d3;};}function handleError(_0x321792,_0x2af63c){_0x2af63c=_0x2af63c||0x1f4;return function(_0x10952a){logger[_0xcc26('0x27')](_0x10952a['stack']);if(_0x10952a[_0xcc26('0x28')]){delete _0x10952a[_0xcc26('0x28')];}_0x321792[_0xcc26('0x1d')](_0x2af63c)[_0xcc26('0x29')](_0x10952a);};}exports[_0xcc26('0x2a')]=function(_0x24ba2d,_0x50e469){var _0x5a044b={},_0x35ae7e={},_0x1c9461={'count':0x0,'rows':[]};var _0x3ef7ea=_[_0xcc26('0x2b')](db[_0xcc26('0x2c')][_0xcc26('0x2d')],function(_0x3fce25){return{'name':_0x3fce25[_0xcc26('0x2e')],'type':_0x3fce25[_0xcc26('0x2f')][_0xcc26('0x30')]};});_0x35ae7e['model']=_[_0xcc26('0x2b')](_0x3ef7ea,_0xcc26('0x28'));_0x35ae7e[_0xcc26('0x31')]=_[_0xcc26('0x32')](_0x24ba2d[_0xcc26('0x31')]);_0x35ae7e[_0xcc26('0x33')]=_[_0xcc26('0x34')](_0x35ae7e[_0xcc26('0x35')],_0x35ae7e[_0xcc26('0x31')]);_0x5a044b[_0xcc26('0x36')]=_[_0xcc26('0x34')](_0x35ae7e['model'],qs['fields'](_0x24ba2d[_0xcc26('0x31')][_0xcc26('0x37')]));_0x5a044b[_0xcc26('0x36')]=_0x5a044b[_0xcc26('0x36')]['length']?_0x5a044b['attributes']:_0x35ae7e[_0xcc26('0x35')];if(!_0x24ba2d[_0xcc26('0x31')][_0xcc26('0x38')](_0xcc26('0x39'))){_0x5a044b['limit']=qs[_0xcc26('0x1b')](_0x24ba2d[_0xcc26('0x31')][_0xcc26('0x1b')]);_0x5a044b['offset']=qs['offset'](_0x24ba2d[_0xcc26('0x31')][_0xcc26('0x19')]);}_0x5a044b['order']=qs[_0xcc26('0x3a')](_0x24ba2d[_0xcc26('0x31')][_0xcc26('0x3a')]);_0x5a044b[_0xcc26('0x3b')]=qs['filters'](_[_0xcc26('0x3c')](_0x24ba2d[_0xcc26('0x31')],_0x35ae7e['filters']),_0x3ef7ea);if(_0x24ba2d[_0xcc26('0x31')]['filter']){_0x5a044b['where']=_[_0xcc26('0x3d')](_0x5a044b[_0xcc26('0x3b')],{'$or':_[_0xcc26('0x2b')](_0x3ef7ea,function(_0x28d31b){if(_0x28d31b[_0xcc26('0x2f')]!==_0xcc26('0x3e')){var _0x5e3593={};_0x5e3593[_0x28d31b[_0xcc26('0x28')]]={'$like':'%'+_0x24ba2d['query'][_0xcc26('0x3f')]+'%'};return _0x5e3593;}})});}_0x5a044b=_[_0xcc26('0x3d')]({},_0x5a044b,_0x24ba2d[_0xcc26('0x40')]);var _0x24be5b={'where':_0x5a044b[_0xcc26('0x3b')]};return db['Template'][_0xcc26('0x1c')](_0x24be5b)['then'](function(_0x1ecdd8){_0x1c9461[_0xcc26('0x1c')]=_0x1ecdd8;if(_0x24ba2d[_0xcc26('0x31')]['includeAll']){_0x5a044b[_0xcc26('0x41')]=[{'all':!![]}];}return db[_0xcc26('0x2c')]['findAll'](_0x5a044b);})[_0xcc26('0x22')](function(_0x5bee23){_0x1c9461[_0xcc26('0x42')]=_0x5bee23;return _0x1c9461;})['then'](respondWithFilteredResult(_0x50e469,_0x5a044b))['catch'](handleError(_0x50e469,null));};exports[_0xcc26('0x43')]=function(_0x1d5794,_0x190886){var _0x164408={'raw':!![],'where':{'id':_0x1d5794[_0xcc26('0x44')]['id']}},_0x48e0b3={};_0x48e0b3['model']=_['keys'](db[_0xcc26('0x2c')][_0xcc26('0x2d')]);_0x48e0b3[_0xcc26('0x31')]=_[_0xcc26('0x32')](_0x1d5794[_0xcc26('0x31')]);_0x48e0b3[_0xcc26('0x33')]=_[_0xcc26('0x34')](_0x48e0b3[_0xcc26('0x35')],_0x48e0b3[_0xcc26('0x31')]);_0x164408[_0xcc26('0x36')]=_[_0xcc26('0x34')](_0x48e0b3[_0xcc26('0x35')],qs['fields'](_0x1d5794['query'][_0xcc26('0x37')]));_0x164408['attributes']=_0x164408['attributes'][_0xcc26('0x45')]?_0x164408['attributes']:_0x48e0b3[_0xcc26('0x35')];if(_0x1d5794[_0xcc26('0x31')][_0xcc26('0x46')]){_0x164408[_0xcc26('0x41')]=[{'all':!![]}];}_0x164408=_[_0xcc26('0x3d')]({},_0x164408,_0x1d5794[_0xcc26('0x40')]);return db[_0xcc26('0x2c')][_0xcc26('0x47')](_0x164408)[_0xcc26('0x22')](handleEntityNotFound(_0x190886,null))[_0xcc26('0x22')](respondWithResult(_0x190886,null))[_0xcc26('0x48')](handleError(_0x190886,null));};exports[_0xcc26('0x49')]=function(_0x4bee6e,_0x22347e){return db[_0xcc26('0x2c')][_0xcc26('0x49')](_0x4bee6e['body'],{})[_0xcc26('0x22')](function(_0x21a0f0){var _0x50dcd4=_0x4bee6e[_0xcc26('0x4a')][_0xcc26('0x24')]({'plain':!![]});if(!_0x50dcd4)throw new Error(_0xcc26('0x4b'));if(_0x50dcd4[_0xcc26('0x4c')]===_0xcc26('0x4a')){var _0x2ffb3a=_0x21a0f0['get']({'plain':!![]});var _0x1824ff=_0xcc26('0x25');return db[_0xcc26('0x4d')][_0xcc26('0x47')]({'where':{'name':_0x1824ff,'userProfileId':_0x50dcd4[_0xcc26('0x4e')]},'raw':!![]})[_0xcc26('0x22')](function(_0x489bd5){if(_0x489bd5&&_0x489bd5['autoAssociation']===0x0){return db[_0xcc26('0x26')][_0xcc26('0x49')]({'name':_0x2ffb3a[_0xcc26('0x28')],'resourceId':_0x2ffb3a['id'],'type':_0x489bd5[_0xcc26('0x28')],'sectionId':_0x489bd5['id']},{})[_0xcc26('0x22')](function(){return _0x21a0f0;});}else{return _0x21a0f0;}})[_0xcc26('0x48')](function(_0x5befe4){logger[_0xcc26('0x27')](_0xcc26('0x4f'),_0x5befe4);throw _0x5befe4;});}return _0x21a0f0;})['then'](respondWithResult(_0x22347e,0xc9))['catch'](handleError(_0x22347e,null));};exports[_0xcc26('0x21')]=function(_0x11170b,_0x2964ba){if(_0x11170b[_0xcc26('0x50')]['id']){delete _0x11170b['body']['id'];}return db[_0xcc26('0x2c')][_0xcc26('0x47')]({'where':{'id':_0x11170b[_0xcc26('0x44')]['id']}})[_0xcc26('0x22')](handleEntityNotFound(_0x2964ba,null))[_0xcc26('0x22')](saveUpdates(_0x11170b[_0xcc26('0x50')],null))[_0xcc26('0x22')](respondWithResult(_0x2964ba,null))[_0xcc26('0x48')](handleError(_0x2964ba,null));};exports[_0xcc26('0x23')]=function(_0x4051e7,_0x388773){return db['Template'][_0xcc26('0x47')]({'where':{'id':_0x4051e7[_0xcc26('0x44')]['id']}})['then'](handleEntityNotFound(_0x388773,null))[_0xcc26('0x22')](removeEntity(_0x388773,null))[_0xcc26('0x48')](handleError(_0x388773,null));};
\ No newline at end of file
+var _0x99b3=['apply','reject','save','update','then','destroy','UserProfileResource','error','stack','name','index','map','Template','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','include','findAll','rows','show','params','rawAttributes','includeAll','options','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range'];(function(_0x4d4058,_0x5b7056){var _0x86eeed=function(_0x519e4a){while(--_0x519e4a){_0x4d4058['push'](_0x4d4058['shift']());}};_0x86eeed(++_0x5b7056);}(_0x99b3,0x1be));var _0x399b=function(_0x24e48c,_0x3b6352){_0x24e48c=_0x24e48c-0x0;var _0x5be973=_0x99b3[_0x24e48c];return _0x5be973;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x399b('0x0'));var zipdir=require(_0x399b('0x1'));var jsonpatch=require(_0x399b('0x2'));var rp=require(_0x399b('0x3'));var moment=require(_0x399b('0x4'));var BPromise=require(_0x399b('0x5'));var Mustache=require('mustache');var util=require(_0x399b('0x6'));var path=require(_0x399b('0x7'));var sox=require('sox');var csv=require(_0x399b('0x8'));var ejs=require(_0x399b('0x9'));var fs=require('fs');var fs_extra=require(_0x399b('0xa'));var _=require(_0x399b('0xb'));var squel=require(_0x399b('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x399b('0xd'));var toCsv=require(_0x399b('0x8'));var querystring=require(_0x399b('0xe'));var Papa=require(_0x399b('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x399b('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x399b('0x11'));var logger=require(_0x399b('0x12'))(_0x399b('0x13'));var utils=require(_0x399b('0x14'));var config=require(_0x399b('0x15'));var licenseUtil=require(_0x399b('0x16'));var db=require(_0x399b('0x17'))['db'];function respondWithStatusCode(_0x19ec82,_0x27c88e){_0x27c88e=_0x27c88e||0xcc;return function(_0x91957){if(_0x91957){return _0x19ec82[_0x399b('0x18')](_0x27c88e);}return _0x19ec82['status'](_0x27c88e)[_0x399b('0x19')]();};}function respondWithResult(_0x1c615d,_0x2e6a42){_0x2e6a42=_0x2e6a42||0xc8;return function(_0x1a53b3){if(_0x1a53b3){return _0x1c615d[_0x399b('0x1a')](_0x2e6a42)[_0x399b('0x1b')](_0x1a53b3);}};}function respondWithFilteredResult(_0x1c1256,_0x471a8c){return function(_0x5ca17a){if(_0x5ca17a){var _0x1e491e=typeof _0x471a8c[_0x399b('0x1c')]===_0x399b('0x1d')&&typeof _0x471a8c[_0x399b('0x1e')]==='undefined';var _0x16989e=_0x5ca17a[_0x399b('0x1f')];var _0x4e9448=_0x1e491e?0x0:_0x471a8c['offset'];var _0x47454d=_0x1e491e?_0x5ca17a[_0x399b('0x1f')]:_0x471a8c['offset']+_0x471a8c[_0x399b('0x1e')];var _0x3631e3;if(_0x47454d>=_0x16989e){_0x47454d=_0x16989e;_0x3631e3=0xc8;}else{_0x3631e3=0xce;}_0x1c1256['status'](_0x3631e3);return _0x1c1256[_0x399b('0x20')](_0x399b('0x21'),_0x4e9448+'-'+_0x47454d+'/'+_0x16989e)[_0x399b('0x1b')](_0x5ca17a);}return null;};}function patchUpdates(_0x215142){return function(_0x1e9402){try{jsonpatch[_0x399b('0x22')](_0x1e9402,_0x215142,!![]);}catch(_0x4a8886){return BPromise[_0x399b('0x23')](_0x4a8886);}return _0x1e9402[_0x399b('0x24')]();};}function saveUpdates(_0x10290f,_0x49ead7){return function(_0x40a050){if(_0x40a050){return _0x40a050[_0x399b('0x25')](_0x10290f)[_0x399b('0x26')](function(_0x89d2fc){return _0x89d2fc;});}return null;};}function removeEntity(_0x54004f,_0x5b8b5a){return function(_0x420ac0){if(_0x420ac0){return _0x420ac0[_0x399b('0x27')]()['then'](function(){var _0x297d6f=_0x420ac0['get']({'plain':!![]});var _0x325f6b='Templates';return db[_0x399b('0x28')][_0x399b('0x27')]({'where':{'type':_0x325f6b,'resourceId':_0x297d6f['id']}})[_0x399b('0x26')](function(){return _0x420ac0;});})[_0x399b('0x26')](function(){_0x54004f[_0x399b('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7b1e3f,_0x374d62){return function(_0x561825){if(!_0x561825){_0x7b1e3f[_0x399b('0x18')](0x194);}return _0x561825;};}function handleError(_0x5099a7,_0x5918c9){_0x5918c9=_0x5918c9||0x1f4;return function(_0x3561a2){logger[_0x399b('0x29')](_0x3561a2[_0x399b('0x2a')]);if(_0x3561a2[_0x399b('0x2b')]){delete _0x3561a2[_0x399b('0x2b')];}_0x5099a7[_0x399b('0x1a')](_0x5918c9)['send'](_0x3561a2);};}exports[_0x399b('0x2c')]=function(_0x41ba3a,_0x541c13){var _0x16601a={},_0x5bac6c={},_0x467be2={'count':0x0,'rows':[]};var _0x46ffa9=_[_0x399b('0x2d')](db[_0x399b('0x2e')]['rawAttributes'],function(_0x596085){return{'name':_0x596085['fieldName'],'type':_0x596085['type'][_0x399b('0x2f')]};});_0x5bac6c[_0x399b('0x30')]=_[_0x399b('0x2d')](_0x46ffa9,_0x399b('0x2b'));_0x5bac6c[_0x399b('0x31')]=_[_0x399b('0x32')](_0x41ba3a['query']);_0x5bac6c[_0x399b('0x33')]=_[_0x399b('0x34')](_0x5bac6c[_0x399b('0x30')],_0x5bac6c[_0x399b('0x31')]);_0x16601a[_0x399b('0x35')]=_['intersection'](_0x5bac6c[_0x399b('0x30')],qs[_0x399b('0x36')](_0x41ba3a[_0x399b('0x31')][_0x399b('0x36')]));_0x16601a['attributes']=_0x16601a[_0x399b('0x35')][_0x399b('0x37')]?_0x16601a[_0x399b('0x35')]:_0x5bac6c[_0x399b('0x30')];if(!_0x41ba3a[_0x399b('0x31')]['hasOwnProperty'](_0x399b('0x38'))){_0x16601a[_0x399b('0x1e')]=qs['limit'](_0x41ba3a[_0x399b('0x31')][_0x399b('0x1e')]);_0x16601a['offset']=qs[_0x399b('0x1c')](_0x41ba3a['query'][_0x399b('0x1c')]);}_0x16601a[_0x399b('0x39')]=qs[_0x399b('0x3a')](_0x41ba3a[_0x399b('0x31')][_0x399b('0x3a')]);_0x16601a['where']=qs[_0x399b('0x33')](_[_0x399b('0x3b')](_0x41ba3a['query'],_0x5bac6c['filters']),_0x46ffa9);if(_0x41ba3a[_0x399b('0x31')][_0x399b('0x3c')]){_0x16601a[_0x399b('0x3d')]=_[_0x399b('0x3e')](_0x16601a[_0x399b('0x3d')],{'$or':_[_0x399b('0x2d')](_0x46ffa9,function(_0x35ce72){if(_0x35ce72['type']!=='VIRTUAL'){var _0xacda28={};_0xacda28[_0x35ce72[_0x399b('0x2b')]]={'$like':'%'+_0x41ba3a['query'][_0x399b('0x3c')]+'%'};return _0xacda28;}})});}_0x16601a=_[_0x399b('0x3e')]({},_0x16601a,_0x41ba3a['options']);var _0x51c642={'where':_0x16601a[_0x399b('0x3d')]};return db[_0x399b('0x2e')][_0x399b('0x1f')](_0x51c642)[_0x399b('0x26')](function(_0x1766f4){_0x467be2[_0x399b('0x1f')]=_0x1766f4;if(_0x41ba3a[_0x399b('0x31')]['includeAll']){_0x16601a[_0x399b('0x3f')]=[{'all':!![]}];}return db[_0x399b('0x2e')][_0x399b('0x40')](_0x16601a);})[_0x399b('0x26')](function(_0x46955f){_0x467be2[_0x399b('0x41')]=_0x46955f;return _0x467be2;})[_0x399b('0x26')](respondWithFilteredResult(_0x541c13,_0x16601a))['catch'](handleError(_0x541c13,null));};exports[_0x399b('0x42')]=function(_0x271c90,_0x167549){var _0xb2a846={'raw':!![],'where':{'id':_0x271c90[_0x399b('0x43')]['id']}},_0x1632d6={};_0x1632d6[_0x399b('0x30')]=_[_0x399b('0x32')](db[_0x399b('0x2e')][_0x399b('0x44')]);_0x1632d6[_0x399b('0x31')]=_[_0x399b('0x32')](_0x271c90[_0x399b('0x31')]);_0x1632d6['filters']=_[_0x399b('0x34')](_0x1632d6[_0x399b('0x30')],_0x1632d6[_0x399b('0x31')]);_0xb2a846[_0x399b('0x35')]=_[_0x399b('0x34')](_0x1632d6['model'],qs[_0x399b('0x36')](_0x271c90['query'][_0x399b('0x36')]));_0xb2a846[_0x399b('0x35')]=_0xb2a846[_0x399b('0x35')][_0x399b('0x37')]?_0xb2a846['attributes']:_0x1632d6[_0x399b('0x30')];if(_0x271c90[_0x399b('0x31')][_0x399b('0x45')]){_0xb2a846['include']=[{'all':!![]}];}_0xb2a846=_['merge']({},_0xb2a846,_0x271c90[_0x399b('0x46')]);return db[_0x399b('0x2e')]['find'](_0xb2a846)[_0x399b('0x26')](handleEntityNotFound(_0x167549,null))[_0x399b('0x26')](respondWithResult(_0x167549,null))[_0x399b('0x47')](handleError(_0x167549,null));};exports['create']=function(_0x27147b,_0x4452bd){return db[_0x399b('0x2e')][_0x399b('0x48')](_0x27147b[_0x399b('0x49')],{})[_0x399b('0x26')](function(_0x14e4b9){var _0x26f799=_0x27147b[_0x399b('0x4a')][_0x399b('0x4b')]({'plain':!![]});if(!_0x26f799)throw new Error(_0x399b('0x4c'));if(_0x26f799[_0x399b('0x4d')]==='user'){var _0x11ba9f=_0x14e4b9[_0x399b('0x4b')]({'plain':!![]});var _0x3544c4='Templates';return db['UserProfileSection'][_0x399b('0x4e')]({'where':{'name':_0x3544c4,'userProfileId':_0x26f799[_0x399b('0x4f')]},'raw':!![]})[_0x399b('0x26')](function(_0x24de61){if(_0x24de61&&_0x24de61['autoAssociation']===0x0){return db[_0x399b('0x28')][_0x399b('0x48')]({'name':_0x11ba9f['name'],'resourceId':_0x11ba9f['id'],'type':_0x24de61[_0x399b('0x2b')],'sectionId':_0x24de61['id']},{})[_0x399b('0x26')](function(){return _0x14e4b9;});}else{return _0x14e4b9;}})[_0x399b('0x47')](function(_0x191475){logger[_0x399b('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x191475);throw _0x191475;});}return _0x14e4b9;})[_0x399b('0x26')](respondWithResult(_0x4452bd,0xc9))[_0x399b('0x47')](handleError(_0x4452bd,null));};exports['update']=function(_0xd9aa58,_0x40fcfa){if(_0xd9aa58[_0x399b('0x49')]['id']){delete _0xd9aa58[_0x399b('0x49')]['id'];}return db['Template']['find']({'where':{'id':_0xd9aa58[_0x399b('0x43')]['id']}})[_0x399b('0x26')](handleEntityNotFound(_0x40fcfa,null))['then'](saveUpdates(_0xd9aa58['body'],null))[_0x399b('0x26')](respondWithResult(_0x40fcfa,null))[_0x399b('0x47')](handleError(_0x40fcfa,null));};exports[_0x399b('0x27')]=function(_0x2c8772,_0x2a1b56){return db[_0x399b('0x2e')][_0x399b('0x4e')]({'where':{'id':_0x2c8772['params']['id']}})[_0x399b('0x26')](handleEntityNotFound(_0x2a1b56,null))['then'](removeEntity(_0x2a1b56,null))[_0x399b('0x47')](handleError(_0x2a1b56,null));};
\ No newline at end of file
index 6fceb37..baa6134 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb27b=['./template.attributes','exports','define','Template','tools_templates','util','../../config/logger','api','bluebird','path','rimraf'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb27b,0xf7));var _0xbb27=function(_0x203dc2,_0x44dbdb){_0x203dc2=_0x203dc2-0x0;var _0x3cc22f=_0xb27b[_0x203dc2];return _0x3cc22f;};'use strict';var _=require('lodash');var util=require(_0xbb27('0x0'));var logger=require(_0xbb27('0x1'))(_0xbb27('0x2'));var moment=require('moment');var BPromise=require(_0xbb27('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbb27('0x4'));var rimraf=require(_0xbb27('0x5'));var config=require('../../config/environment');var attributes=require(_0xbb27('0x6'));module[_0xbb27('0x7')]=function(_0x15ae4e,_0x44b0a8){return _0x15ae4e[_0xbb27('0x8')](_0xbb27('0x9'),attributes,{'tableName':_0xbb27('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb70c=['path','rimraf','./template.attributes','exports','define','tools_templates','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4bcfa6,_0x1c7e43){var _0x1c0165=function(_0x30c963){while(--_0x30c963){_0x4bcfa6['push'](_0x4bcfa6['shift']());}};_0x1c0165(++_0x1c7e43);}(_0xb70c,0x8a));var _0xcb70=function(_0x189305,_0x46c43f){_0x189305=_0x189305-0x0;var _0xea3406=_0xb70c[_0x189305];return _0xea3406;};'use strict';var _=require(_0xcb70('0x0'));var util=require('util');var logger=require(_0xcb70('0x1'))(_0xcb70('0x2'));var moment=require(_0xcb70('0x3'));var BPromise=require(_0xcb70('0x4'));var rp=require(_0xcb70('0x5'));var fs=require('fs');var path=require(_0xcb70('0x6'));var rimraf=require(_0xcb70('0x7'));var config=require('../../config/environment');var attributes=require(_0xcb70('0x8'));module[_0xcb70('0x9')]=function(_0x514f85,_0x5ebbdc){return _0x514f85[_0xcb70('0xa')]('Template',attributes,{'tableName':_0xcb70('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3010ffb..3bcd085 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc03=['info','debug','Template,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Template,\x20%s,\x20%s','message','result','GetTemplate','Template','findAll','options','where','attributes','limit','include','model','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xfc03,0x113));var _0x3fc0=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0xfc03[_0x1b6186];return _0x186121;};'use strict';var _=require(_0x3fc0('0x0'));var util=require(_0x3fc0('0x1'));var moment=require('moment');var BPromise=require(_0x3fc0('0x2'));var rs=require(_0x3fc0('0x3'));var fs=require('fs');var Redis=require(_0x3fc0('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3fc0('0x5'));var logger=require(_0x3fc0('0x6'))(_0x3fc0('0x7'));var config=require(_0x3fc0('0x8'));var jayson=require(_0x3fc0('0x9'));var client=jayson['client'][_0x3fc0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x64290c,_0x1ba28d,_0x686db0){return new BPromise(function(_0x6f08bd,_0x2f6609){return client[_0x3fc0('0xb')](_0x64290c,_0x686db0)[_0x3fc0('0xc')](function(_0x23063a){logger[_0x3fc0('0xd')]('Template,\x20%s,\x20%s',_0x1ba28d,'request\x20sent');logger[_0x3fc0('0xe')](_0x3fc0('0xf'),_0x1ba28d,_0x3fc0('0x10'),JSON[_0x3fc0('0x11')](_0x23063a));if(_0x23063a['error']){if(_0x23063a[_0x3fc0('0x12')][_0x3fc0('0x13')]===0x1f4){logger[_0x3fc0('0x12')](_0x3fc0('0x14'),_0x1ba28d,_0x23063a[_0x3fc0('0x12')][_0x3fc0('0x15')]);return _0x2f6609(_0x23063a[_0x3fc0('0x12')][_0x3fc0('0x15')]);}logger[_0x3fc0('0x12')](_0x3fc0('0x14'),_0x1ba28d,_0x23063a['error'][_0x3fc0('0x15')]);return _0x6f08bd(_0x23063a[_0x3fc0('0x12')]['message']);}else{logger['info'](_0x3fc0('0x14'),_0x1ba28d,'request\x20sent');_0x6f08bd(_0x23063a[_0x3fc0('0x16')][_0x3fc0('0x15')]);}})['catch'](function(_0x3ae6f8){logger[_0x3fc0('0x12')](_0x3fc0('0x14'),_0x1ba28d,_0x3ae6f8);_0x2f6609(_0x3ae6f8);});});}exports[_0x3fc0('0x17')]=function(_0x2cc968){var _0x4c330f=this;return new Promise(function(_0x7b0ad,_0x100727){return db[_0x3fc0('0x18')][_0x3fc0('0x19')]({'raw':_0x2cc968['options']?_0x2cc968['options']['raw']===undefined?!![]:![]:!![],'where':_0x2cc968['options']?_0x2cc968[_0x3fc0('0x1a')][_0x3fc0('0x1b')]||null:null,'attributes':_0x2cc968[_0x3fc0('0x1a')]?_0x2cc968['options'][_0x3fc0('0x1c')]||null:null,'limit':_0x2cc968['options']?_0x2cc968[_0x3fc0('0x1a')][_0x3fc0('0x1d')]||null:null,'include':_0x2cc968[_0x3fc0('0x1a')]?_0x2cc968[_0x3fc0('0x1a')][_0x3fc0('0x1e')]?_['map'](_0x2cc968[_0x3fc0('0x1a')][_0x3fc0('0x1e')],function(_0x49d318){return{'model':db[_0x49d318[_0x3fc0('0x1f')]],'as':_0x49d318['as'],'attributes':_0x49d318[_0x3fc0('0x1c')],'include':_0x49d318[_0x3fc0('0x1e')]?_['map'](_0x49d318[_0x3fc0('0x1e')],function(_0x4f5265){return{'model':db[_0x4f5265[_0x3fc0('0x1f')]],'as':_0x4f5265['as'],'attributes':_0x4f5265[_0x3fc0('0x1c')],'include':_0x4f5265['include']?_['map'](_0x4f5265['include'],function(_0x1c1f52){return{'model':db[_0x1c1f52[_0x3fc0('0x1f')]],'as':_0x1c1f52['as'],'attributes':_0x1c1f52[_0x3fc0('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x3fc0('0xc')](function(_0x37c660){logger[_0x3fc0('0xd')](_0x3fc0('0x17'),_0x2cc968);logger[_0x3fc0('0xe')]('GetTemplate',_0x2cc968,JSON[_0x3fc0('0x11')](_0x37c660));_0x7b0ad(_0x37c660);})['catch'](function(_0x1227db){logger[_0x3fc0('0x12')](_0x3fc0('0x17'),_0x1227db[_0x3fc0('0x15')],_0x2cc968);_0x100727(_0x4c330f[_0x3fc0('0x12')](0x1f4,_0x1227db[_0x3fc0('0x15')]));});});};
\ No newline at end of file
+var _0x6664=['rpc','jayson/promise','request','then','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','findAll','options','raw','where','attributes','limit','map','model','include','GetTemplate','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x166947,_0x520bdd){var _0x46f572=function(_0x5832e8){while(--_0x5832e8){_0x166947['push'](_0x166947['shift']());}};_0x46f572(++_0x520bdd);}(_0x6664,0x19e));var _0x4666=function(_0x35fcb7,_0x3734c0){_0x35fcb7=_0x35fcb7-0x0;var _0x30f28a=_0x6664[_0x35fcb7];return _0x30f28a;};'use strict';var _=require(_0x4666('0x0'));var util=require('util');var moment=require(_0x4666('0x1'));var BPromise=require('bluebird');var rs=require(_0x4666('0x2'));var fs=require('fs');var Redis=require(_0x4666('0x3'));var db=require(_0x4666('0x4'))['db'];var utils=require(_0x4666('0x5'));var logger=require('../../config/logger')(_0x4666('0x6'));var config=require('../../config/environment');var jayson=require(_0x4666('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x44f013,_0xcf7915,_0x3fcaeb){return new BPromise(function(_0x5de96d,_0x444770){return client[_0x4666('0x8')](_0x44f013,_0x3fcaeb)[_0x4666('0x9')](function(_0x35e994){logger['info'](_0x4666('0xa'),_0xcf7915,_0x4666('0xb'));logger[_0x4666('0xc')](_0x4666('0xd'),_0xcf7915,'request\x20sent',JSON[_0x4666('0xe')](_0x35e994));if(_0x35e994[_0x4666('0xf')]){if(_0x35e994['error'][_0x4666('0x10')]===0x1f4){logger[_0x4666('0xf')](_0x4666('0xa'),_0xcf7915,_0x35e994[_0x4666('0xf')]['message']);return _0x444770(_0x35e994[_0x4666('0xf')][_0x4666('0x11')]);}logger[_0x4666('0xf')](_0x4666('0xa'),_0xcf7915,_0x35e994['error'][_0x4666('0x11')]);return _0x5de96d(_0x35e994[_0x4666('0xf')]['message']);}else{logger[_0x4666('0x12')](_0x4666('0xa'),_0xcf7915,'request\x20sent');_0x5de96d(_0x35e994[_0x4666('0x13')][_0x4666('0x11')]);}})['catch'](function(_0x18add1){logger[_0x4666('0xf')](_0x4666('0xa'),_0xcf7915,_0x18add1);_0x444770(_0x18add1);});});}exports['GetTemplate']=function(_0x16d1bd){var _0x2f53d9=this;return new Promise(function(_0x2af259,_0xd7fec9){return db['Template'][_0x4666('0x14')]({'raw':_0x16d1bd[_0x4666('0x15')]?_0x16d1bd[_0x4666('0x15')][_0x4666('0x16')]===undefined?!![]:![]:!![],'where':_0x16d1bd[_0x4666('0x15')]?_0x16d1bd['options'][_0x4666('0x17')]||null:null,'attributes':_0x16d1bd['options']?_0x16d1bd[_0x4666('0x15')][_0x4666('0x18')]||null:null,'limit':_0x16d1bd['options']?_0x16d1bd[_0x4666('0x15')][_0x4666('0x19')]||null:null,'include':_0x16d1bd[_0x4666('0x15')]?_0x16d1bd[_0x4666('0x15')]['include']?_[_0x4666('0x1a')](_0x16d1bd['options']['include'],function(_0x2759d7){return{'model':db[_0x2759d7[_0x4666('0x1b')]],'as':_0x2759d7['as'],'attributes':_0x2759d7[_0x4666('0x18')],'include':_0x2759d7[_0x4666('0x1c')]?_[_0x4666('0x1a')](_0x2759d7[_0x4666('0x1c')],function(_0x5717bf){return{'model':db[_0x5717bf['model']],'as':_0x5717bf['as'],'attributes':_0x5717bf[_0x4666('0x18')],'include':_0x5717bf['include']?_['map'](_0x5717bf[_0x4666('0x1c')],function(_0x3edf60){return{'model':db[_0x3edf60[_0x4666('0x1b')]],'as':_0x3edf60['as'],'attributes':_0x3edf60[_0x4666('0x18')]};}):[]};}):[]};}):[]:[]})[_0x4666('0x9')](function(_0x156529){logger[_0x4666('0x12')]('GetTemplate',_0x16d1bd);logger[_0x4666('0xc')]('GetTemplate',_0x16d1bd,JSON[_0x4666('0xe')](_0x156529));_0x2af259(_0x156529);})['catch'](function(_0x3ac77c){logger[_0x4666('0xf')](_0x4666('0x1d'),_0x3ac77c[_0x4666('0x11')],_0x16d1bd);_0xd7fec9(_0x2f53d9[_0x4666('0xf')](0x1f4,_0x3ac77c[_0x4666('0x11')]));});});};
\ No newline at end of file
index 8da7031..178e3ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4729=['/:id/actions','addAction','update','delete','exports','multer','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./trigger.controller','index','get','/:id','isAuthenticated','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','getActions','post','create','addAllCondition','addAnyCondition'];(function(_0x276ba0,_0x6c227a){var _0x4f6ffb=function(_0x38dd7c){while(--_0x38dd7c){_0x276ba0['push'](_0x276ba0['shift']());}};_0x4f6ffb(++_0x6c227a);}(_0x4729,0x123));var _0x9472=function(_0x834fd2,_0x42dbd2){_0x834fd2=_0x834fd2-0x0;var _0x13c3a9=_0x4729[_0x834fd2];return _0x13c3a9;};'use strict';var multer=require(_0x9472('0x0'));var util=require('util');var path=require(_0x9472('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x9472('0x2')]();var fs_extra=require(_0x9472('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x9472('0x4'));var config=require(_0x9472('0x5'));var controller=require(_0x9472('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x9472('0x7')]);router[_0x9472('0x8')](_0x9472('0x9'),auth[_0x9472('0xa')](),controller[_0x9472('0xb')]);router[_0x9472('0x8')](_0x9472('0xc'),auth[_0x9472('0xa')](),controller[_0x9472('0xd')]);router[_0x9472('0x8')](_0x9472('0xe'),auth[_0x9472('0xa')](),controller[_0x9472('0xf')]);router[_0x9472('0x8')]('/:id/actions',auth['isAuthenticated'](),controller[_0x9472('0x10')]);router[_0x9472('0x11')]('/',auth[_0x9472('0xa')](),controller[_0x9472('0x12')]);router[_0x9472('0x11')](_0x9472('0xc'),auth[_0x9472('0xa')](),controller[_0x9472('0x13')]);router[_0x9472('0x11')](_0x9472('0xe'),auth[_0x9472('0xa')](),controller[_0x9472('0x14')]);router['post'](_0x9472('0x15'),auth[_0x9472('0xa')](),controller[_0x9472('0x16')]);router['put'](_0x9472('0x9'),auth[_0x9472('0xa')](),controller[_0x9472('0x17')]);router[_0x9472('0x18')](_0x9472('0x9'),auth[_0x9472('0xa')](),controller['destroy']);module[_0x9472('0x19')]=router;
\ No newline at end of file
+var _0x6db0=['show','/:id/all_conditions','getAllConditions','getAnyConditions','/:id/actions','getActions','post','/:id/any_conditions','addAnyCondition','addAction','put','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','get','isAuthenticated','index','/:id'];(function(_0x3015f9,_0x6eeb0d){var _0x3390b6=function(_0x4cff57){while(--_0x4cff57){_0x3015f9['push'](_0x3015f9['shift']());}};_0x3390b6(++_0x6eeb0d);}(_0x6db0,0x87));var _0x06db=function(_0x431e8d,_0x2bdb83){_0x431e8d=_0x431e8d-0x0;var _0x67b452=_0x6db0[_0x431e8d];return _0x67b452;};'use strict';var multer=require(_0x06db('0x0'));var util=require(_0x06db('0x1'));var path=require(_0x06db('0x2'));var timeout=require(_0x06db('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x06db('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./trigger.controller');router[_0x06db('0x5')]('/',auth[_0x06db('0x6')](),controller[_0x06db('0x7')]);router[_0x06db('0x5')](_0x06db('0x8'),auth[_0x06db('0x6')](),controller[_0x06db('0x9')]);router[_0x06db('0x5')](_0x06db('0xa'),auth[_0x06db('0x6')](),controller[_0x06db('0xb')]);router[_0x06db('0x5')]('/:id/any_conditions',auth[_0x06db('0x6')](),controller[_0x06db('0xc')]);router[_0x06db('0x5')](_0x06db('0xd'),auth['isAuthenticated'](),controller[_0x06db('0xe')]);router[_0x06db('0xf')]('/',auth[_0x06db('0x6')](),controller['create']);router[_0x06db('0xf')]('/:id/all_conditions',auth[_0x06db('0x6')](),controller['addAllCondition']);router[_0x06db('0xf')](_0x06db('0x10'),auth[_0x06db('0x6')](),controller[_0x06db('0x11')]);router['post'](_0x06db('0xd'),auth[_0x06db('0x6')](),controller[_0x06db('0x12')]);router[_0x06db('0x13')](_0x06db('0x8'),auth[_0x06db('0x6')](),controller[_0x06db('0x14')]);router[_0x06db('0x15')](_0x06db('0x8'),auth[_0x06db('0x6')](),controller[_0x06db('0x16')]);module[_0x06db('0x17')]=router;
\ No newline at end of file
index 0f912ad..49eabc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5342=['STRING','BOOLEAN','sequelize','exports'];(function(_0x57d3d9,_0x2d605b){var _0x46730c=function(_0x1e7019){while(--_0x1e7019){_0x57d3d9['push'](_0x57d3d9['shift']());}};_0x46730c(++_0x2d605b);}(_0x5342,0xb2));var _0x2534=function(_0x3724e2,_0x41d318){_0x3724e2=_0x3724e2-0x0;var _0x5c5ab2=_0x5342[_0x3724e2];return _0x5c5ab2;};'use strict';var Sequelize=require(_0x2534('0x0'));module[_0x2534('0x1')]={'name':{'type':Sequelize[_0x2534('0x2')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x2534('0x2')]},'status':{'type':Sequelize[_0x2534('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x2922=['sequelize','exports','STRING','BOOLEAN'];(function(_0x21000,_0x531540){var _0x108434=function(_0x83e176){while(--_0x83e176){_0x21000['push'](_0x21000['shift']());}};_0x108434(++_0x531540);}(_0x2922,0x6c));var _0x2292=function(_0x5a87b4,_0x56057e){_0x5a87b4=_0x5a87b4-0x0;var _0x288c42=_0x2922[_0x5a87b4];return _0x288c42;};'use strict';var Sequelize=require(_0x2292('0x0'));module[_0x2292('0x1')]={'name':{'type':Sequelize[_0x2292('0x2')]},'channel':{'type':Sequelize[_0x2292('0x2')]},'description':{'type':Sequelize[_0x2292('0x2')]},'status':{'type':Sequelize[_0x2292('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 6723348..7b575b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93aa=['../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','get','Triggers','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','key','map','keys','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','VIRTUAL','filter','merge','options','Trigger','includeAll','findAll','rows','show','include','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','params','TriggerAllId','Condition','addAnyCondition','getAllConditions','getAnyConditions','addAction','TriggerId','Action','getActions','findOne','eml-format','zip-dir','request-promise','moment','bluebird','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api'];(function(_0x1c90a7,_0x115e4d){var _0x408b33=function(_0x4b2b46){while(--_0x4b2b46){_0x1c90a7['push'](_0x1c90a7['shift']());}};_0x408b33(++_0x115e4d);}(_0x93aa,0x172));var _0xa93a=function(_0x2a8125,_0x13d9e0){_0x2a8125=_0x2a8125-0x0;var _0x100372=_0x93aa[_0x2a8125];return _0x100372;};'use strict';var emlformat=require(_0xa93a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa93a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa93a('0x2'));var moment=require(_0xa93a('0x3'));var BPromise=require(_0xa93a('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xa93a('0x5'));var sox=require(_0xa93a('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa93a('0x7'));var _=require(_0xa93a('0x8'));var squel=require(_0xa93a('0x9'));var crypto=require(_0xa93a('0xa'));var jsforce=require(_0xa93a('0xb'));var deskjs=require(_0xa93a('0xc'));var toCsv=require(_0xa93a('0xd'));var querystring=require(_0xa93a('0xe'));var Papa=require(_0xa93a('0xf'));var Redis=require(_0xa93a('0x10'));var authService=require(_0xa93a('0x11'));var qs=require(_0xa93a('0x12'));var as=require(_0xa93a('0x13'));var hardwareService=require(_0xa93a('0x14'));var logger=require('../../config/logger')(_0xa93a('0x15'));var utils=require(_0xa93a('0x16'));var config=require(_0xa93a('0x17'));var licenseUtil=require(_0xa93a('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4f3b58,_0x2a6890){_0x2a6890=_0x2a6890||0xcc;return function(_0x3779d1){if(_0x3779d1){return _0x4f3b58[_0xa93a('0x19')](_0x2a6890);}return _0x4f3b58[_0xa93a('0x1a')](_0x2a6890)[_0xa93a('0x1b')]();};}function respondWithResult(_0xd92067,_0x35938d){_0x35938d=_0x35938d||0xc8;return function(_0x1756d8){if(_0x1756d8){return _0xd92067[_0xa93a('0x1a')](_0x35938d)['json'](_0x1756d8);}};}function respondWithFilteredResult(_0x4322af,_0x5e081f){return function(_0x1ef309){if(_0x1ef309){var _0x2b9b31=typeof _0x5e081f[_0xa93a('0x1c')]===_0xa93a('0x1d')&&typeof _0x5e081f[_0xa93a('0x1e')]===_0xa93a('0x1d');var _0x41a189=_0x1ef309[_0xa93a('0x1f')];var _0xd72253=_0x2b9b31?0x0:_0x5e081f[_0xa93a('0x1c')];var _0x5129f1=_0x2b9b31?_0x1ef309[_0xa93a('0x1f')]:_0x5e081f['offset']+_0x5e081f[_0xa93a('0x1e')];var _0x383150;if(_0x5129f1>=_0x41a189){_0x5129f1=_0x41a189;_0x383150=0xc8;}else{_0x383150=0xce;}_0x4322af[_0xa93a('0x1a')](_0x383150);return _0x4322af[_0xa93a('0x20')]('Content-Range',_0xd72253+'-'+_0x5129f1+'/'+_0x41a189)[_0xa93a('0x21')](_0x1ef309);}return null;};}function patchUpdates(_0x3af2b7){return function(_0x5ef344){try{jsonpatch[_0xa93a('0x22')](_0x5ef344,_0x3af2b7,!![]);}catch(_0x2a95be){return BPromise[_0xa93a('0x23')](_0x2a95be);}return _0x5ef344[_0xa93a('0x24')]();};}function saveUpdates(_0x1659ce,_0x346572){return function(_0x5137d1){if(_0x5137d1){return _0x5137d1[_0xa93a('0x25')](_0x1659ce)[_0xa93a('0x26')](function(_0x236195){return _0x236195;});}return null;};}function removeEntity(_0x298eb2,_0x33a795){return function(_0x249f57){if(_0x249f57){return _0x249f57['destroy']()[_0xa93a('0x26')](function(){var _0x5f27f1=_0x249f57[_0xa93a('0x27')]({'plain':!![]});var _0x517715=_0xa93a('0x28');return db['UserProfileResource'][_0xa93a('0x29')]({'where':{'type':_0x517715,'resourceId':_0x5f27f1['id']}})['then'](function(){return _0x249f57;});})[_0xa93a('0x26')](function(){_0x298eb2[_0xa93a('0x1a')](0xcc)[_0xa93a('0x1b')]();});}};}function handleEntityNotFound(_0x1a9429,_0x483606){return function(_0x40ec5a){if(!_0x40ec5a){_0x1a9429[_0xa93a('0x19')](0x194);}return _0x40ec5a;};}function handleError(_0x1acefa,_0x28604d){_0x28604d=_0x28604d||0x1f4;return function(_0x34c0c2){logger[_0xa93a('0x2a')](_0x34c0c2[_0xa93a('0x2b')]);if(_0x34c0c2[_0xa93a('0x2c')]){delete _0x34c0c2[_0xa93a('0x2c')];}_0x1acefa[_0xa93a('0x1a')](_0x28604d)[_0xa93a('0x2d')](_0x34c0c2);};}exports[_0xa93a('0x2e')]=function(_0x3ecfe7,_0x11321e){var _0x321a72={},_0x49e001={},_0x349220={'count':0x0,'rows':[]};var _0x3c1fbe=_['map'](db['Trigger'][_0xa93a('0x2f')],function(_0x1fa2e0){return{'name':_0x1fa2e0[_0xa93a('0x30')],'type':_0x1fa2e0[_0xa93a('0x31')][_0xa93a('0x32')]};});_0x49e001['model']=_[_0xa93a('0x33')](_0x3c1fbe,_0xa93a('0x2c'));_0x49e001['query']=_[_0xa93a('0x34')](_0x3ecfe7['query']);_0x49e001['filters']=_[_0xa93a('0x35')](_0x49e001[_0xa93a('0x36')],_0x49e001[_0xa93a('0x37')]);_0x321a72[_0xa93a('0x38')]=_['intersection'](_0x49e001[_0xa93a('0x36')],qs[_0xa93a('0x39')](_0x3ecfe7[_0xa93a('0x37')][_0xa93a('0x39')]));_0x321a72['attributes']=_0x321a72[_0xa93a('0x38')][_0xa93a('0x3a')]?_0x321a72[_0xa93a('0x38')]:_0x49e001[_0xa93a('0x36')];if(!_0x3ecfe7[_0xa93a('0x37')][_0xa93a('0x3b')](_0xa93a('0x3c'))){_0x321a72[_0xa93a('0x1e')]=qs[_0xa93a('0x1e')](_0x3ecfe7[_0xa93a('0x37')][_0xa93a('0x1e')]);_0x321a72[_0xa93a('0x1c')]=qs[_0xa93a('0x1c')](_0x3ecfe7[_0xa93a('0x37')][_0xa93a('0x1c')]);}_0x321a72[_0xa93a('0x3d')]=qs[_0xa93a('0x3e')](_0x3ecfe7['query'][_0xa93a('0x3e')]);_0x321a72[_0xa93a('0x3f')]=qs[_0xa93a('0x40')](_[_0xa93a('0x41')](_0x3ecfe7[_0xa93a('0x37')],_0x49e001[_0xa93a('0x40')]),_0x3c1fbe);if(_0x3ecfe7['query']['filter']){_0x321a72[_0xa93a('0x3f')]=_['merge'](_0x321a72['where'],{'$or':_['map'](_0x3c1fbe,function(_0x4a00f5){if(_0x4a00f5[_0xa93a('0x31')]!==_0xa93a('0x42')){var _0x2d6882={};_0x2d6882[_0x4a00f5[_0xa93a('0x2c')]]={'$like':'%'+_0x3ecfe7[_0xa93a('0x37')][_0xa93a('0x43')]+'%'};return _0x2d6882;}})});}_0x321a72=_[_0xa93a('0x44')]({},_0x321a72,_0x3ecfe7[_0xa93a('0x45')]);var _0x2519bf={'where':_0x321a72[_0xa93a('0x3f')]};return db[_0xa93a('0x46')]['count'](_0x2519bf)[_0xa93a('0x26')](function(_0xd3af72){_0x349220[_0xa93a('0x1f')]=_0xd3af72;if(_0x3ecfe7[_0xa93a('0x37')][_0xa93a('0x47')]){_0x321a72['include']=[{'all':!![]}];}return db[_0xa93a('0x46')][_0xa93a('0x48')](_0x321a72);})[_0xa93a('0x26')](function(_0x515fa2){_0x349220[_0xa93a('0x49')]=_0x515fa2;return _0x349220;})['then'](respondWithFilteredResult(_0x11321e,_0x321a72))['catch'](handleError(_0x11321e,null));};exports[_0xa93a('0x4a')]=function(_0x34fa3c,_0x16d91d){var _0x175dbc={'raw':![],'where':{'id':_0x34fa3c['params']['id']}},_0x35363e={};_0x35363e[_0xa93a('0x36')]=_[_0xa93a('0x34')](db[_0xa93a('0x46')][_0xa93a('0x2f')]);_0x35363e[_0xa93a('0x37')]=_['keys'](_0x34fa3c[_0xa93a('0x37')]);_0x35363e[_0xa93a('0x40')]=_['intersection'](_0x35363e[_0xa93a('0x36')],_0x35363e[_0xa93a('0x37')]);_0x175dbc['attributes']=_['intersection'](_0x35363e['model'],qs[_0xa93a('0x39')](_0x34fa3c[_0xa93a('0x37')][_0xa93a('0x39')]));_0x175dbc[_0xa93a('0x38')]=_0x175dbc[_0xa93a('0x38')][_0xa93a('0x3a')]?_0x175dbc['attributes']:_0x35363e['model'];if(_0x34fa3c[_0xa93a('0x37')][_0xa93a('0x47')]){_0x175dbc[_0xa93a('0x4b')]=[{'all':!![]}];}_0x175dbc=_['merge']({},_0x175dbc,_0x34fa3c['options']);return db[_0xa93a('0x46')]['find'](_0x175dbc)['then'](handleEntityNotFound(_0x16d91d,null))[_0xa93a('0x26')](respondWithResult(_0x16d91d,null))[_0xa93a('0x4c')](handleError(_0x16d91d,null));};exports[_0xa93a('0x4d')]=function(_0x11c1f8,_0x5d6e03){return db[_0xa93a('0x46')][_0xa93a('0x4d')](_0x11c1f8[_0xa93a('0x4e')],{})['then'](function(_0x4ce1c3){var _0x165979=_0x11c1f8[_0xa93a('0x4f')]['get']({'plain':!![]});if(!_0x165979)throw new Error(_0xa93a('0x50'));if(_0x165979[_0xa93a('0x51')]===_0xa93a('0x4f')){var _0xa97f74=_0x4ce1c3['get']({'plain':!![]});var _0x8886dd=_0xa93a('0x28');return db[_0xa93a('0x52')][_0xa93a('0x53')]({'where':{'name':_0x8886dd,'userProfileId':_0x165979['userProfileId']},'raw':!![]})['then'](function(_0x277117){if(_0x277117&&_0x277117['autoAssociation']===0x0){return db[_0xa93a('0x54')]['create']({'name':_0xa97f74['name'],'resourceId':_0xa97f74['id'],'type':_0x277117[_0xa93a('0x2c')],'sectionId':_0x277117['id']},{})[_0xa93a('0x26')](function(){return _0x4ce1c3;});}else{return _0x4ce1c3;}})[_0xa93a('0x4c')](function(_0x566eea){logger[_0xa93a('0x2a')](_0xa93a('0x55'),_0x566eea);throw _0x566eea;});}return _0x4ce1c3;})[_0xa93a('0x26')](respondWithResult(_0x5d6e03,0xc9))['catch'](handleError(_0x5d6e03,null));};exports[_0xa93a('0x25')]=function(_0x14f174,_0x116982){if(_0x14f174[_0xa93a('0x4e')]['id']){delete _0x14f174['body']['id'];}return db[_0xa93a('0x46')]['find']({'where':{'id':_0x14f174['params']['id']}})[_0xa93a('0x26')](handleEntityNotFound(_0x116982,null))['then'](saveUpdates(_0x14f174['body'],null))[_0xa93a('0x26')](respondWithResult(_0x116982,null))[_0xa93a('0x4c')](handleError(_0x116982,null));};exports['destroy']=function(_0x90e5bb,_0x191183){return db[_0xa93a('0x46')][_0xa93a('0x53')]({'where':{'id':_0x90e5bb['params']['id']}})['then'](handleEntityNotFound(_0x191183,null))[_0xa93a('0x26')](removeEntity(_0x191183,null))[_0xa93a('0x4c')](handleError(_0x191183,null));};exports[_0xa93a('0x56')]=function(_0x2c9224,_0x3401cc,_0x482539){if(_0x2c9224['body']['id']){delete _0x2c9224[_0xa93a('0x4e')]['id'];}return db[_0xa93a('0x46')][_0xa93a('0x53')]({'where':{'id':_0x2c9224[_0xa93a('0x57')]['id']}})[_0xa93a('0x26')](handleEntityNotFound(_0x3401cc,null))[_0xa93a('0x26')](function(_0x3cb8a3){if(_0x3cb8a3){_0x2c9224['body'][_0xa93a('0x58')]=_0x3cb8a3['id'];return db[_0xa93a('0x59')][_0xa93a('0x4d')](_0x2c9224[_0xa93a('0x4e')]);}})[_0xa93a('0x26')](respondWithResult(_0x3401cc,null))[_0xa93a('0x4c')](handleError(_0x3401cc,null));};exports[_0xa93a('0x5a')]=function(_0x567a9d,_0x13b6f0,_0x4d6f66){if(_0x567a9d[_0xa93a('0x4e')]['id']){delete _0x567a9d[_0xa93a('0x4e')]['id'];}return db[_0xa93a('0x46')][_0xa93a('0x53')]({'where':{'id':_0x567a9d[_0xa93a('0x57')]['id']}})[_0xa93a('0x26')](handleEntityNotFound(_0x13b6f0,null))[_0xa93a('0x26')](function(_0x29c7a7){if(_0x29c7a7){_0x567a9d[_0xa93a('0x4e')]['TriggerAnyId']=_0x29c7a7['id'];return db[_0xa93a('0x59')]['create'](_0x567a9d[_0xa93a('0x4e')]);}})['then'](respondWithResult(_0x13b6f0,null))[_0xa93a('0x4c')](handleError(_0x13b6f0,null));};exports[_0xa93a('0x5b')]=function(_0xa5adfb,_0x14cae4,_0x424997){var _0x134c10={};var _0x3d7291={};var _0x25a8c0;var _0x2f5c40;return db[_0xa93a('0x46')]['findOne']({'where':{'id':_0xa5adfb['params']['id']}})['then'](handleEntityNotFound(_0x14cae4,null))[_0xa93a('0x26')](function(_0x55975c){if(_0x55975c){_0x25a8c0=_0x55975c;_0x3d7291['model']=_[_0xa93a('0x34')](db[_0xa93a('0x59')][_0xa93a('0x2f')]);_0x3d7291[_0xa93a('0x37')]=_[_0xa93a('0x34')](_0xa5adfb[_0xa93a('0x37')]);_0x3d7291[_0xa93a('0x40')]=_[_0xa93a('0x35')](_0x3d7291['model'],_0x3d7291['query']);_0x134c10[_0xa93a('0x38')]=_[_0xa93a('0x35')](_0x3d7291[_0xa93a('0x36')],qs[_0xa93a('0x39')](_0xa5adfb[_0xa93a('0x37')][_0xa93a('0x39')]));_0x134c10[_0xa93a('0x38')]=_0x134c10[_0xa93a('0x38')]['length']?_0x134c10[_0xa93a('0x38')]:_0x3d7291['model'];_0x134c10[_0xa93a('0x3d')]=qs[_0xa93a('0x3e')](_0xa5adfb[_0xa93a('0x37')][_0xa93a('0x3e')]);_0x134c10['where']=qs[_0xa93a('0x40')](_[_0xa93a('0x41')](_0xa5adfb[_0xa93a('0x37')],_0x3d7291['filters']));if(_0xa5adfb[_0xa93a('0x37')][_0xa93a('0x43')]){_0x134c10[_0xa93a('0x3f')]=_['merge'](_0x134c10[_0xa93a('0x3f')],{'$or':_[_0xa93a('0x33')](_0x134c10[_0xa93a('0x38')],function(_0x4659a8){var _0x59884f={};_0x59884f[_0x4659a8]={'$like':'%'+_0xa5adfb['query'][_0xa93a('0x43')]+'%'};return _0x59884f;})});}_0x134c10=_[_0xa93a('0x44')]({},_0x134c10,_0xa5adfb['options']);return _0x25a8c0['getAllConditions'](_0x134c10);}})[_0xa93a('0x26')](function(_0x58cc25){if(_0x58cc25){_0x2f5c40=_0x58cc25[_0xa93a('0x3a')];if(!_0xa5adfb[_0xa93a('0x37')][_0xa93a('0x3b')](_0xa93a('0x3c'))){_0x134c10[_0xa93a('0x1e')]=qs[_0xa93a('0x1e')](_0xa5adfb['query'][_0xa93a('0x1e')]);_0x134c10[_0xa93a('0x1c')]=qs[_0xa93a('0x1c')](_0xa5adfb[_0xa93a('0x37')]['offset']);}return _0x25a8c0[_0xa93a('0x5b')](_0x134c10);}})['then'](function(_0x1d9d72){if(_0x1d9d72){return _0x1d9d72?{'count':_0x2f5c40,'rows':_0x1d9d72}:null;}})['then'](respondWithResult(_0x14cae4,null))[_0xa93a('0x4c')](handleError(_0x14cae4,null));};exports[_0xa93a('0x5c')]=function(_0x441dbf,_0x23bf16,_0x1951a0){var _0x50a87c={};var _0x50dd83={};var _0x5a1f33;var _0x53ddb2;return db['Trigger']['findOne']({'where':{'id':_0x441dbf['params']['id']}})[_0xa93a('0x26')](handleEntityNotFound(_0x23bf16,null))[_0xa93a('0x26')](function(_0x54ef82){if(_0x54ef82){_0x5a1f33=_0x54ef82;_0x50dd83['model']=_[_0xa93a('0x34')](db[_0xa93a('0x59')][_0xa93a('0x2f')]);_0x50dd83[_0xa93a('0x37')]=_[_0xa93a('0x34')](_0x441dbf[_0xa93a('0x37')]);_0x50dd83[_0xa93a('0x40')]=_[_0xa93a('0x35')](_0x50dd83[_0xa93a('0x36')],_0x50dd83[_0xa93a('0x37')]);_0x50a87c[_0xa93a('0x38')]=_[_0xa93a('0x35')](_0x50dd83['model'],qs[_0xa93a('0x39')](_0x441dbf['query'][_0xa93a('0x39')]));_0x50a87c[_0xa93a('0x38')]=_0x50a87c['attributes'][_0xa93a('0x3a')]?_0x50a87c[_0xa93a('0x38')]:_0x50dd83[_0xa93a('0x36')];_0x50a87c[_0xa93a('0x3d')]=qs[_0xa93a('0x3e')](_0x441dbf[_0xa93a('0x37')][_0xa93a('0x3e')]);_0x50a87c['where']=qs[_0xa93a('0x40')](_[_0xa93a('0x41')](_0x441dbf[_0xa93a('0x37')],_0x50dd83['filters']));if(_0x441dbf[_0xa93a('0x37')][_0xa93a('0x43')]){_0x50a87c[_0xa93a('0x3f')]=_[_0xa93a('0x44')](_0x50a87c['where'],{'$or':_[_0xa93a('0x33')](_0x50a87c[_0xa93a('0x38')],function(_0x1e0f88){var _0x5e44ee={};_0x5e44ee[_0x1e0f88]={'$like':'%'+_0x441dbf[_0xa93a('0x37')][_0xa93a('0x43')]+'%'};return _0x5e44ee;})});}_0x50a87c=_[_0xa93a('0x44')]({},_0x50a87c,_0x441dbf['options']);return _0x5a1f33[_0xa93a('0x5c')](_0x50a87c);}})[_0xa93a('0x26')](function(_0x1d3cbb){if(_0x1d3cbb){_0x53ddb2=_0x1d3cbb[_0xa93a('0x3a')];if(!_0x441dbf[_0xa93a('0x37')][_0xa93a('0x3b')](_0xa93a('0x3c'))){_0x50a87c[_0xa93a('0x1e')]=qs[_0xa93a('0x1e')](_0x441dbf[_0xa93a('0x37')]['limit']);_0x50a87c[_0xa93a('0x1c')]=qs[_0xa93a('0x1c')](_0x441dbf[_0xa93a('0x37')][_0xa93a('0x1c')]);}return _0x5a1f33['getAnyConditions'](_0x50a87c);}})[_0xa93a('0x26')](function(_0x4fd45e){if(_0x4fd45e){return _0x4fd45e?{'count':_0x53ddb2,'rows':_0x4fd45e}:null;}})['then'](respondWithResult(_0x23bf16,null))[_0xa93a('0x4c')](handleError(_0x23bf16,null));};exports[_0xa93a('0x5d')]=function(_0x1e6ec5,_0xad576a,_0x3f25a5){if(_0x1e6ec5[_0xa93a('0x4e')]['id']){delete _0x1e6ec5[_0xa93a('0x4e')]['id'];}return db[_0xa93a('0x46')]['find']({'where':{'id':_0x1e6ec5[_0xa93a('0x57')]['id']}})[_0xa93a('0x26')](handleEntityNotFound(_0xad576a,null))['then'](function(_0x2c2a5b){if(_0x2c2a5b){_0x1e6ec5[_0xa93a('0x4e')][_0xa93a('0x5e')]=_0x2c2a5b['id'];return db[_0xa93a('0x5f')][_0xa93a('0x4d')](_0x1e6ec5['body']);}})[_0xa93a('0x26')](respondWithResult(_0xad576a,null))[_0xa93a('0x4c')](handleError(_0xad576a,null));};exports[_0xa93a('0x60')]=function(_0x200d1c,_0x5970ee,_0x23cd84){var _0x5f03c3={};var _0x408f1a={};var _0x24efdc;var _0xe5c87c;return db[_0xa93a('0x46')][_0xa93a('0x61')]({'where':{'id':_0x200d1c[_0xa93a('0x57')]['id']}})[_0xa93a('0x26')](handleEntityNotFound(_0x5970ee,null))[_0xa93a('0x26')](function(_0x359eba){if(_0x359eba){_0x24efdc=_0x359eba;_0x408f1a[_0xa93a('0x36')]=_['keys'](db[_0xa93a('0x5f')][_0xa93a('0x2f')]);_0x408f1a[_0xa93a('0x37')]=_['keys'](_0x200d1c[_0xa93a('0x37')]);_0x408f1a[_0xa93a('0x40')]=_[_0xa93a('0x35')](_0x408f1a['model'],_0x408f1a[_0xa93a('0x37')]);_0x5f03c3[_0xa93a('0x38')]=_[_0xa93a('0x35')](_0x408f1a[_0xa93a('0x36')],qs[_0xa93a('0x39')](_0x200d1c[_0xa93a('0x37')][_0xa93a('0x39')]));_0x5f03c3[_0xa93a('0x38')]=_0x5f03c3[_0xa93a('0x38')][_0xa93a('0x3a')]?_0x5f03c3[_0xa93a('0x38')]:_0x408f1a[_0xa93a('0x36')];_0x5f03c3[_0xa93a('0x3d')]=qs[_0xa93a('0x3e')](_0x200d1c[_0xa93a('0x37')][_0xa93a('0x3e')]);_0x5f03c3['where']=qs['filters'](_[_0xa93a('0x41')](_0x200d1c[_0xa93a('0x37')],_0x408f1a[_0xa93a('0x40')]));if(_0x200d1c[_0xa93a('0x37')][_0xa93a('0x43')]){_0x5f03c3[_0xa93a('0x3f')]=_['merge'](_0x5f03c3['where'],{'$or':_[_0xa93a('0x33')](_0x5f03c3['attributes'],function(_0x521e9d){var _0x5cf417={};_0x5cf417[_0x521e9d]={'$like':'%'+_0x200d1c[_0xa93a('0x37')]['filter']+'%'};return _0x5cf417;})});}_0x5f03c3=_['merge']({},_0x5f03c3,_0x200d1c[_0xa93a('0x45')]);return _0x24efdc['getActions'](_0x5f03c3);}})[_0xa93a('0x26')](function(_0x451d48){if(_0x451d48){_0xe5c87c=_0x451d48[_0xa93a('0x3a')];if(!_0x200d1c['query'][_0xa93a('0x3b')](_0xa93a('0x3c'))){_0x5f03c3[_0xa93a('0x1e')]=qs[_0xa93a('0x1e')](_0x200d1c[_0xa93a('0x37')]['limit']);_0x5f03c3['offset']=qs[_0xa93a('0x1c')](_0x200d1c[_0xa93a('0x37')][_0xa93a('0x1c')]);}return _0x24efdc[_0xa93a('0x60')](_0x5f03c3);}})['then'](function(_0x5be872){if(_0x5be872){return _0x5be872?{'count':_0xe5c87c,'rows':_0x5be872}:null;}})[_0xa93a('0x26')](respondWithResult(_0x5970ee,null))[_0xa93a('0x4c')](handleError(_0x5970ee,null));};
\ No newline at end of file
+var _0x7be8=['role','Triggers','UserProfileSection','UserProfileResource','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','TriggerAllId','Condition','TriggerAnyId','getAllConditions','findOne','filter','getAnyConditions','addAction','Action','getActions','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','then','destroy','get','stack','name','map','Trigger','rawAttributes','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','options','include','rows','show','params','intersection','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x1cfc39,_0x1d3913){var _0x957a28=function(_0x2be930){while(--_0x2be930){_0x1cfc39['push'](_0x1cfc39['shift']());}};_0x957a28(++_0x1d3913);}(_0x7be8,0x17e));var _0x87be=function(_0x5bf4e9,_0x1199da){_0x5bf4e9=_0x5bf4e9-0x0;var _0x14c33d=_0x7be8[_0x5bf4e9];return _0x14c33d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x87be('0x0'));var zipdir=require(_0x87be('0x1'));var jsonpatch=require(_0x87be('0x2'));var rp=require(_0x87be('0x3'));var moment=require(_0x87be('0x4'));var BPromise=require(_0x87be('0x5'));var Mustache=require(_0x87be('0x6'));var util=require(_0x87be('0x7'));var path=require(_0x87be('0x8'));var sox=require(_0x87be('0x9'));var csv=require('to-csv');var ejs=require(_0x87be('0xa'));var fs=require('fs');var fs_extra=require(_0x87be('0xb'));var _=require(_0x87be('0xc'));var squel=require('squel');var crypto=require(_0x87be('0xd'));var jsforce=require(_0x87be('0xe'));var deskjs=require(_0x87be('0xf'));var toCsv=require('to-csv');var querystring=require(_0x87be('0x10'));var Papa=require(_0x87be('0x11'));var Redis=require(_0x87be('0x12'));var authService=require(_0x87be('0x13'));var qs=require(_0x87be('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x87be('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x87be('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x87be('0x17'));var db=require(_0x87be('0x18'))['db'];function respondWithStatusCode(_0x323c9c,_0x12582a){_0x12582a=_0x12582a||0xcc;return function(_0x17bc6d){if(_0x17bc6d){return _0x323c9c[_0x87be('0x19')](_0x12582a);}return _0x323c9c[_0x87be('0x1a')](_0x12582a)[_0x87be('0x1b')]();};}function respondWithResult(_0x4ae4eb,_0x1cefea){_0x1cefea=_0x1cefea||0xc8;return function(_0x230bbb){if(_0x230bbb){return _0x4ae4eb[_0x87be('0x1a')](_0x1cefea)[_0x87be('0x1c')](_0x230bbb);}};}function respondWithFilteredResult(_0x1015d6,_0x5afb98){return function(_0x2ae5f8){if(_0x2ae5f8){var _0x5c2997=typeof _0x5afb98['offset']===_0x87be('0x1d')&&typeof _0x5afb98[_0x87be('0x1e')]==='undefined';var _0x54d33e=_0x2ae5f8[_0x87be('0x1f')];var _0x583401=_0x5c2997?0x0:_0x5afb98[_0x87be('0x20')];var _0x2fb51b=_0x5c2997?_0x2ae5f8['count']:_0x5afb98[_0x87be('0x20')]+_0x5afb98['limit'];var _0x4b7e80;if(_0x2fb51b>=_0x54d33e){_0x2fb51b=_0x54d33e;_0x4b7e80=0xc8;}else{_0x4b7e80=0xce;}_0x1015d6[_0x87be('0x1a')](_0x4b7e80);return _0x1015d6[_0x87be('0x21')](_0x87be('0x22'),_0x583401+'-'+_0x2fb51b+'/'+_0x54d33e)[_0x87be('0x1c')](_0x2ae5f8);}return null;};}function patchUpdates(_0x533517){return function(_0x3ea7ac){try{jsonpatch[_0x87be('0x23')](_0x3ea7ac,_0x533517,!![]);}catch(_0x300089){return BPromise['reject'](_0x300089);}return _0x3ea7ac['save']();};}function saveUpdates(_0x27c7fd,_0x5c55db){return function(_0x2a4899){if(_0x2a4899){return _0x2a4899['update'](_0x27c7fd)[_0x87be('0x24')](function(_0x4597ee){return _0x4597ee;});}return null;};}function removeEntity(_0x336111,_0x1d702b){return function(_0x442a4b){if(_0x442a4b){return _0x442a4b[_0x87be('0x25')]()[_0x87be('0x24')](function(){var _0x1e4674=_0x442a4b[_0x87be('0x26')]({'plain':!![]});var _0xe9a08a='Triggers';return db['UserProfileResource'][_0x87be('0x25')]({'where':{'type':_0xe9a08a,'resourceId':_0x1e4674['id']}})['then'](function(){return _0x442a4b;});})[_0x87be('0x24')](function(){_0x336111[_0x87be('0x1a')](0xcc)[_0x87be('0x1b')]();});}};}function handleEntityNotFound(_0x321837,_0x387742){return function(_0x2c7eca){if(!_0x2c7eca){_0x321837[_0x87be('0x19')](0x194);}return _0x2c7eca;};}function handleError(_0x30e960,_0x56510e){_0x56510e=_0x56510e||0x1f4;return function(_0x380ed5){logger['error'](_0x380ed5[_0x87be('0x27')]);if(_0x380ed5[_0x87be('0x28')]){delete _0x380ed5[_0x87be('0x28')];}_0x30e960[_0x87be('0x1a')](_0x56510e)['send'](_0x380ed5);};}exports['index']=function(_0x425aed,_0x1f7d71){var _0x1e05bf={},_0x25cd7d={},_0x327ebc={'count':0x0,'rows':[]};var _0x38c4a0=_[_0x87be('0x29')](db[_0x87be('0x2a')][_0x87be('0x2b')],function(_0x2835d9){return{'name':_0x2835d9['fieldName'],'type':_0x2835d9['type'][_0x87be('0x2c')]};});_0x25cd7d[_0x87be('0x2d')]=_['map'](_0x38c4a0,'name');_0x25cd7d[_0x87be('0x2e')]=_[_0x87be('0x2f')](_0x425aed[_0x87be('0x2e')]);_0x25cd7d[_0x87be('0x30')]=_['intersection'](_0x25cd7d[_0x87be('0x2d')],_0x25cd7d[_0x87be('0x2e')]);_0x1e05bf[_0x87be('0x31')]=_['intersection'](_0x25cd7d[_0x87be('0x2d')],qs[_0x87be('0x32')](_0x425aed[_0x87be('0x2e')][_0x87be('0x32')]));_0x1e05bf[_0x87be('0x31')]=_0x1e05bf['attributes'][_0x87be('0x33')]?_0x1e05bf[_0x87be('0x31')]:_0x25cd7d[_0x87be('0x2d')];if(!_0x425aed['query'][_0x87be('0x34')](_0x87be('0x35'))){_0x1e05bf[_0x87be('0x1e')]=qs[_0x87be('0x1e')](_0x425aed['query'][_0x87be('0x1e')]);_0x1e05bf[_0x87be('0x20')]=qs[_0x87be('0x20')](_0x425aed[_0x87be('0x2e')]['offset']);}_0x1e05bf[_0x87be('0x36')]=qs[_0x87be('0x37')](_0x425aed['query'][_0x87be('0x37')]);_0x1e05bf[_0x87be('0x38')]=qs[_0x87be('0x30')](_[_0x87be('0x39')](_0x425aed[_0x87be('0x2e')],_0x25cd7d['filters']),_0x38c4a0);if(_0x425aed[_0x87be('0x2e')]['filter']){_0x1e05bf[_0x87be('0x38')]=_[_0x87be('0x3a')](_0x1e05bf[_0x87be('0x38')],{'$or':_[_0x87be('0x29')](_0x38c4a0,function(_0x541fbd){if(_0x541fbd[_0x87be('0x3b')]!==_0x87be('0x3c')){var _0x4a10a5={};_0x4a10a5[_0x541fbd[_0x87be('0x28')]]={'$like':'%'+_0x425aed['query']['filter']+'%'};return _0x4a10a5;}})});}_0x1e05bf=_['merge']({},_0x1e05bf,_0x425aed[_0x87be('0x3d')]);var _0x519fad={'where':_0x1e05bf[_0x87be('0x38')]};return db[_0x87be('0x2a')][_0x87be('0x1f')](_0x519fad)[_0x87be('0x24')](function(_0x59650c){_0x327ebc[_0x87be('0x1f')]=_0x59650c;if(_0x425aed[_0x87be('0x2e')]['includeAll']){_0x1e05bf[_0x87be('0x3e')]=[{'all':!![]}];}return db['Trigger']['findAll'](_0x1e05bf);})[_0x87be('0x24')](function(_0x8716eb){_0x327ebc[_0x87be('0x3f')]=_0x8716eb;return _0x327ebc;})[_0x87be('0x24')](respondWithFilteredResult(_0x1f7d71,_0x1e05bf))['catch'](handleError(_0x1f7d71,null));};exports[_0x87be('0x40')]=function(_0x3962e2,_0x15d177){var _0x2d35d8={'raw':![],'where':{'id':_0x3962e2[_0x87be('0x41')]['id']}},_0x42382d={};_0x42382d[_0x87be('0x2d')]=_['keys'](db[_0x87be('0x2a')]['rawAttributes']);_0x42382d['query']=_[_0x87be('0x2f')](_0x3962e2[_0x87be('0x2e')]);_0x42382d[_0x87be('0x30')]=_[_0x87be('0x42')](_0x42382d[_0x87be('0x2d')],_0x42382d['query']);_0x2d35d8[_0x87be('0x31')]=_[_0x87be('0x42')](_0x42382d['model'],qs[_0x87be('0x32')](_0x3962e2[_0x87be('0x2e')][_0x87be('0x32')]));_0x2d35d8[_0x87be('0x31')]=_0x2d35d8[_0x87be('0x31')][_0x87be('0x33')]?_0x2d35d8[_0x87be('0x31')]:_0x42382d['model'];if(_0x3962e2[_0x87be('0x2e')][_0x87be('0x43')]){_0x2d35d8[_0x87be('0x3e')]=[{'all':!![]}];}_0x2d35d8=_[_0x87be('0x3a')]({},_0x2d35d8,_0x3962e2[_0x87be('0x3d')]);return db[_0x87be('0x2a')][_0x87be('0x44')](_0x2d35d8)[_0x87be('0x24')](handleEntityNotFound(_0x15d177,null))[_0x87be('0x24')](respondWithResult(_0x15d177,null))['catch'](handleError(_0x15d177,null));};exports[_0x87be('0x45')]=function(_0x277c44,_0x4eb14a){return db[_0x87be('0x2a')][_0x87be('0x45')](_0x277c44[_0x87be('0x46')],{})['then'](function(_0x2d6276){var _0x2c8619=_0x277c44[_0x87be('0x47')][_0x87be('0x26')]({'plain':!![]});if(!_0x2c8619)throw new Error(_0x87be('0x48'));if(_0x2c8619[_0x87be('0x49')]===_0x87be('0x47')){var _0x5b8c3f=_0x2d6276[_0x87be('0x26')]({'plain':!![]});var _0x2edb1e=_0x87be('0x4a');return db[_0x87be('0x4b')][_0x87be('0x44')]({'where':{'name':_0x2edb1e,'userProfileId':_0x2c8619['userProfileId']},'raw':!![]})[_0x87be('0x24')](function(_0xc28d4f){if(_0xc28d4f&&_0xc28d4f['autoAssociation']===0x0){return db[_0x87be('0x4c')][_0x87be('0x45')]({'name':_0x5b8c3f[_0x87be('0x28')],'resourceId':_0x5b8c3f['id'],'type':_0xc28d4f[_0x87be('0x28')],'sectionId':_0xc28d4f['id']},{})[_0x87be('0x24')](function(){return _0x2d6276;});}else{return _0x2d6276;}})[_0x87be('0x4d')](function(_0x5cd959){logger[_0x87be('0x4e')](_0x87be('0x4f'),_0x5cd959);throw _0x5cd959;});}return _0x2d6276;})[_0x87be('0x24')](respondWithResult(_0x4eb14a,0xc9))[_0x87be('0x4d')](handleError(_0x4eb14a,null));};exports[_0x87be('0x50')]=function(_0x4fdfa3,_0x828638){if(_0x4fdfa3['body']['id']){delete _0x4fdfa3[_0x87be('0x46')]['id'];}return db['Trigger'][_0x87be('0x44')]({'where':{'id':_0x4fdfa3[_0x87be('0x41')]['id']}})[_0x87be('0x24')](handleEntityNotFound(_0x828638,null))[_0x87be('0x24')](saveUpdates(_0x4fdfa3[_0x87be('0x46')],null))[_0x87be('0x24')](respondWithResult(_0x828638,null))['catch'](handleError(_0x828638,null));};exports['destroy']=function(_0x137ed7,_0x3abb5d){return db['Trigger'][_0x87be('0x44')]({'where':{'id':_0x137ed7[_0x87be('0x41')]['id']}})['then'](handleEntityNotFound(_0x3abb5d,null))[_0x87be('0x24')](removeEntity(_0x3abb5d,null))[_0x87be('0x4d')](handleError(_0x3abb5d,null));};exports['addAllCondition']=function(_0x28fceb,_0x3db316,_0x305864){if(_0x28fceb[_0x87be('0x46')]['id']){delete _0x28fceb['body']['id'];}return db['Trigger'][_0x87be('0x44')]({'where':{'id':_0x28fceb[_0x87be('0x41')]['id']}})[_0x87be('0x24')](handleEntityNotFound(_0x3db316,null))['then'](function(_0x25d93c){if(_0x25d93c){_0x28fceb[_0x87be('0x46')][_0x87be('0x51')]=_0x25d93c['id'];return db[_0x87be('0x52')][_0x87be('0x45')](_0x28fceb[_0x87be('0x46')]);}})[_0x87be('0x24')](respondWithResult(_0x3db316,null))[_0x87be('0x4d')](handleError(_0x3db316,null));};exports['addAnyCondition']=function(_0x3db338,_0x30c8a4,_0x1c5670){if(_0x3db338[_0x87be('0x46')]['id']){delete _0x3db338['body']['id'];}return db[_0x87be('0x2a')][_0x87be('0x44')]({'where':{'id':_0x3db338[_0x87be('0x41')]['id']}})['then'](handleEntityNotFound(_0x30c8a4,null))['then'](function(_0x1ab782){if(_0x1ab782){_0x3db338[_0x87be('0x46')][_0x87be('0x53')]=_0x1ab782['id'];return db[_0x87be('0x52')]['create'](_0x3db338[_0x87be('0x46')]);}})[_0x87be('0x24')](respondWithResult(_0x30c8a4,null))[_0x87be('0x4d')](handleError(_0x30c8a4,null));};exports[_0x87be('0x54')]=function(_0x2a4bfa,_0x4dff81,_0x20df7c){var _0x4b7652={};var _0x3ded47={};var _0x9aa640;var _0x4095d1;return db[_0x87be('0x2a')][_0x87be('0x55')]({'where':{'id':_0x2a4bfa['params']['id']}})[_0x87be('0x24')](handleEntityNotFound(_0x4dff81,null))[_0x87be('0x24')](function(_0x3fabb6){if(_0x3fabb6){_0x9aa640=_0x3fabb6;_0x3ded47[_0x87be('0x2d')]=_['keys'](db[_0x87be('0x52')][_0x87be('0x2b')]);_0x3ded47['query']=_[_0x87be('0x2f')](_0x2a4bfa[_0x87be('0x2e')]);_0x3ded47[_0x87be('0x30')]=_['intersection'](_0x3ded47['model'],_0x3ded47['query']);_0x4b7652['attributes']=_[_0x87be('0x42')](_0x3ded47['model'],qs['fields'](_0x2a4bfa[_0x87be('0x2e')]['fields']));_0x4b7652['attributes']=_0x4b7652[_0x87be('0x31')][_0x87be('0x33')]?_0x4b7652[_0x87be('0x31')]:_0x3ded47['model'];_0x4b7652[_0x87be('0x36')]=qs[_0x87be('0x37')](_0x2a4bfa[_0x87be('0x2e')]['sort']);_0x4b7652[_0x87be('0x38')]=qs[_0x87be('0x30')](_[_0x87be('0x39')](_0x2a4bfa[_0x87be('0x2e')],_0x3ded47[_0x87be('0x30')]));if(_0x2a4bfa['query'][_0x87be('0x56')]){_0x4b7652[_0x87be('0x38')]=_['merge'](_0x4b7652[_0x87be('0x38')],{'$or':_[_0x87be('0x29')](_0x4b7652['attributes'],function(_0x17d832){var _0x20d2d2={};_0x20d2d2[_0x17d832]={'$like':'%'+_0x2a4bfa['query'][_0x87be('0x56')]+'%'};return _0x20d2d2;})});}_0x4b7652=_[_0x87be('0x3a')]({},_0x4b7652,_0x2a4bfa['options']);return _0x9aa640[_0x87be('0x54')](_0x4b7652);}})[_0x87be('0x24')](function(_0x4d3a92){if(_0x4d3a92){_0x4095d1=_0x4d3a92[_0x87be('0x33')];if(!_0x2a4bfa[_0x87be('0x2e')][_0x87be('0x34')](_0x87be('0x35'))){_0x4b7652[_0x87be('0x1e')]=qs[_0x87be('0x1e')](_0x2a4bfa[_0x87be('0x2e')]['limit']);_0x4b7652[_0x87be('0x20')]=qs[_0x87be('0x20')](_0x2a4bfa[_0x87be('0x2e')]['offset']);}return _0x9aa640[_0x87be('0x54')](_0x4b7652);}})[_0x87be('0x24')](function(_0x262f86){if(_0x262f86){return _0x262f86?{'count':_0x4095d1,'rows':_0x262f86}:null;}})[_0x87be('0x24')](respondWithResult(_0x4dff81,null))['catch'](handleError(_0x4dff81,null));};exports['getAnyConditions']=function(_0x166c74,_0x1e635e,_0x263104){var _0x328a57={};var _0x2fa0d2={};var _0x3c2873;var _0x36109d;return db[_0x87be('0x2a')][_0x87be('0x55')]({'where':{'id':_0x166c74[_0x87be('0x41')]['id']}})['then'](handleEntityNotFound(_0x1e635e,null))['then'](function(_0x522e1d){if(_0x522e1d){_0x3c2873=_0x522e1d;_0x2fa0d2[_0x87be('0x2d')]=_[_0x87be('0x2f')](db[_0x87be('0x52')][_0x87be('0x2b')]);_0x2fa0d2['query']=_['keys'](_0x166c74[_0x87be('0x2e')]);_0x2fa0d2[_0x87be('0x30')]=_['intersection'](_0x2fa0d2[_0x87be('0x2d')],_0x2fa0d2['query']);_0x328a57[_0x87be('0x31')]=_[_0x87be('0x42')](_0x2fa0d2[_0x87be('0x2d')],qs[_0x87be('0x32')](_0x166c74[_0x87be('0x2e')][_0x87be('0x32')]));_0x328a57[_0x87be('0x31')]=_0x328a57[_0x87be('0x31')][_0x87be('0x33')]?_0x328a57[_0x87be('0x31')]:_0x2fa0d2[_0x87be('0x2d')];_0x328a57[_0x87be('0x36')]=qs[_0x87be('0x37')](_0x166c74[_0x87be('0x2e')][_0x87be('0x37')]);_0x328a57['where']=qs['filters'](_['pick'](_0x166c74[_0x87be('0x2e')],_0x2fa0d2[_0x87be('0x30')]));if(_0x166c74['query'][_0x87be('0x56')]){_0x328a57[_0x87be('0x38')]=_[_0x87be('0x3a')](_0x328a57[_0x87be('0x38')],{'$or':_[_0x87be('0x29')](_0x328a57[_0x87be('0x31')],function(_0x3af5ad){var _0x513f8c={};_0x513f8c[_0x3af5ad]={'$like':'%'+_0x166c74[_0x87be('0x2e')]['filter']+'%'};return _0x513f8c;})});}_0x328a57=_[_0x87be('0x3a')]({},_0x328a57,_0x166c74['options']);return _0x3c2873[_0x87be('0x57')](_0x328a57);}})['then'](function(_0x110cae){if(_0x110cae){_0x36109d=_0x110cae[_0x87be('0x33')];if(!_0x166c74[_0x87be('0x2e')][_0x87be('0x34')]('nolimit')){_0x328a57['limit']=qs[_0x87be('0x1e')](_0x166c74[_0x87be('0x2e')][_0x87be('0x1e')]);_0x328a57['offset']=qs[_0x87be('0x20')](_0x166c74[_0x87be('0x2e')][_0x87be('0x20')]);}return _0x3c2873[_0x87be('0x57')](_0x328a57);}})[_0x87be('0x24')](function(_0x3c19a2){if(_0x3c19a2){return _0x3c19a2?{'count':_0x36109d,'rows':_0x3c19a2}:null;}})['then'](respondWithResult(_0x1e635e,null))[_0x87be('0x4d')](handleError(_0x1e635e,null));};exports[_0x87be('0x58')]=function(_0x11012d,_0x24c69f,_0xe34203){if(_0x11012d[_0x87be('0x46')]['id']){delete _0x11012d['body']['id'];}return db['Trigger'][_0x87be('0x44')]({'where':{'id':_0x11012d[_0x87be('0x41')]['id']}})[_0x87be('0x24')](handleEntityNotFound(_0x24c69f,null))[_0x87be('0x24')](function(_0x57cb7e){if(_0x57cb7e){_0x11012d[_0x87be('0x46')]['TriggerId']=_0x57cb7e['id'];return db[_0x87be('0x59')][_0x87be('0x45')](_0x11012d[_0x87be('0x46')]);}})[_0x87be('0x24')](respondWithResult(_0x24c69f,null))[_0x87be('0x4d')](handleError(_0x24c69f,null));};exports[_0x87be('0x5a')]=function(_0x22fe7f,_0x4760bb,_0xdb7631){var _0x4a1b00={};var _0x2d2d09={};var _0x4e6638;var _0x320f05;return db['Trigger']['findOne']({'where':{'id':_0x22fe7f[_0x87be('0x41')]['id']}})[_0x87be('0x24')](handleEntityNotFound(_0x4760bb,null))['then'](function(_0x17431b){if(_0x17431b){_0x4e6638=_0x17431b;_0x2d2d09[_0x87be('0x2d')]=_[_0x87be('0x2f')](db['Action']['rawAttributes']);_0x2d2d09[_0x87be('0x2e')]=_['keys'](_0x22fe7f[_0x87be('0x2e')]);_0x2d2d09[_0x87be('0x30')]=_[_0x87be('0x42')](_0x2d2d09['model'],_0x2d2d09['query']);_0x4a1b00[_0x87be('0x31')]=_[_0x87be('0x42')](_0x2d2d09[_0x87be('0x2d')],qs[_0x87be('0x32')](_0x22fe7f['query']['fields']));_0x4a1b00[_0x87be('0x31')]=_0x4a1b00[_0x87be('0x31')][_0x87be('0x33')]?_0x4a1b00['attributes']:_0x2d2d09[_0x87be('0x2d')];_0x4a1b00['order']=qs[_0x87be('0x37')](_0x22fe7f['query'][_0x87be('0x37')]);_0x4a1b00[_0x87be('0x38')]=qs[_0x87be('0x30')](_['pick'](_0x22fe7f[_0x87be('0x2e')],_0x2d2d09[_0x87be('0x30')]));if(_0x22fe7f[_0x87be('0x2e')][_0x87be('0x56')]){_0x4a1b00[_0x87be('0x38')]=_['merge'](_0x4a1b00[_0x87be('0x38')],{'$or':_[_0x87be('0x29')](_0x4a1b00['attributes'],function(_0x1621cd){var _0x5c586b={};_0x5c586b[_0x1621cd]={'$like':'%'+_0x22fe7f['query'][_0x87be('0x56')]+'%'};return _0x5c586b;})});}_0x4a1b00=_['merge']({},_0x4a1b00,_0x22fe7f[_0x87be('0x3d')]);return _0x4e6638['getActions'](_0x4a1b00);}})[_0x87be('0x24')](function(_0x17e3d8){if(_0x17e3d8){_0x320f05=_0x17e3d8['length'];if(!_0x22fe7f[_0x87be('0x2e')][_0x87be('0x34')](_0x87be('0x35'))){_0x4a1b00[_0x87be('0x1e')]=qs[_0x87be('0x1e')](_0x22fe7f[_0x87be('0x2e')]['limit']);_0x4a1b00[_0x87be('0x20')]=qs[_0x87be('0x20')](_0x22fe7f[_0x87be('0x2e')][_0x87be('0x20')]);}return _0x4e6638[_0x87be('0x5a')](_0x4a1b00);}})[_0x87be('0x24')](function(_0x493e3d){if(_0x493e3d){return _0x493e3d?{'count':_0x320f05,'rows':_0x493e3d}:null;}})[_0x87be('0x24')](respondWithResult(_0x4760bb,null))[_0x87be('0x4d')](handleError(_0x4760bb,null));};
\ No newline at end of file
index 1ff45b8..1be47d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98e1=['Trigger','util','../../config/logger','api','moment','request-promise','../../config/environment','./trigger.attributes','exports'];(function(_0x323604,_0x48a294){var _0x4531d0=function(_0x1c9793){while(--_0x1c9793){_0x323604['push'](_0x323604['shift']());}};_0x4531d0(++_0x48a294);}(_0x98e1,0x160));var _0x198e=function(_0x2d9217,_0x59361a){_0x2d9217=_0x2d9217-0x0;var _0x54cae3=_0x98e1[_0x2d9217];return _0x54cae3;};'use strict';var _=require('lodash');var util=require(_0x198e('0x0'));var logger=require(_0x198e('0x1'))(_0x198e('0x2'));var moment=require(_0x198e('0x3'));var BPromise=require('bluebird');var rp=require(_0x198e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x198e('0x5'));var attributes=require(_0x198e('0x6'));module[_0x198e('0x7')]=function(_0x317209,_0x551d31){return _0x317209['define'](_0x198e('0x8'),attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6631=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./trigger.attributes','exports','define','Trigger','tools_triggers'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x6631,0x134));var _0x1663=function(_0x458b96,_0x3d8583){_0x458b96=_0x458b96-0x0;var _0x2c0d51=_0x6631[_0x458b96];return _0x2c0d51;};'use strict';var _=require(_0x1663('0x0'));var util=require(_0x1663('0x1'));var logger=require(_0x1663('0x2'))(_0x1663('0x3'));var moment=require(_0x1663('0x4'));var BPromise=require(_0x1663('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1663('0x6'));var rimraf=require(_0x1663('0x7'));var config=require(_0x1663('0x8'));var attributes=require(_0x1663('0x9'));module[_0x1663('0xa')]=function(_0x1faf52,_0x23a307){return _0x1faf52[_0x1663('0xb')](_0x1663('0xc'),attributes,{'tableName':_0x1663('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 099fb64..673c28b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x284e=['Trigger,\x20%s,\x20%s','request\x20sent','error','message','Trigger','findAll','options','raw','where','attributes','map','model','include','GetTrigger','debug','stringify','catch','ShowTrigger','find','util','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','then','info'];(function(_0x1d7037,_0x57dd95){var _0x4d6568=function(_0x5c64c5){while(--_0x5c64c5){_0x1d7037['push'](_0x1d7037['shift']());}};_0x4d6568(++_0x57dd95);}(_0x284e,0x135));var _0xe284=function(_0x52c5b8,_0x1fe9f1){_0x52c5b8=_0x52c5b8-0x0;var _0x36b5f2=_0x284e[_0x52c5b8];return _0x36b5f2;};'use strict';var _=require('lodash');var util=require(_0xe284('0x0'));var moment=require('moment');var BPromise=require(_0xe284('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe284('0x2'));var db=require(_0xe284('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xe284('0x4'))('rpc');var config=require(_0xe284('0x5'));var jayson=require(_0xe284('0x6'));var client=jayson[_0xe284('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d07a0,_0x3a795b,_0x6895){return new BPromise(function(_0x1d62bd,_0x5e0943){return client['request'](_0x5d07a0,_0x6895)[_0xe284('0x8')](function(_0x199531){logger[_0xe284('0x9')](_0xe284('0xa'),_0x3a795b,_0xe284('0xb'));logger['debug']('Trigger,\x20%s,\x20%s,\x20%s',_0x3a795b,'request\x20sent',JSON['stringify'](_0x199531));if(_0x199531['error']){if(_0x199531[_0xe284('0xc')]['code']===0x1f4){logger[_0xe284('0xc')](_0xe284('0xa'),_0x3a795b,_0x199531['error']['message']);return _0x5e0943(_0x199531[_0xe284('0xc')]['message']);}logger[_0xe284('0xc')](_0xe284('0xa'),_0x3a795b,_0x199531['error']['message']);return _0x1d62bd(_0x199531[_0xe284('0xc')][_0xe284('0xd')]);}else{logger[_0xe284('0x9')](_0xe284('0xa'),_0x3a795b,_0xe284('0xb'));_0x1d62bd(_0x199531['result'][_0xe284('0xd')]);}})['catch'](function(_0x46d125){logger[_0xe284('0xc')](_0xe284('0xa'),_0x3a795b,_0x46d125);_0x5e0943(_0x46d125);});});}exports['GetTrigger']=function(_0x1857f5){var _0x164d01=this;return new Promise(function(_0x978e75,_0x9982a){return db[_0xe284('0xe')][_0xe284('0xf')]({'raw':_0x1857f5[_0xe284('0x10')]?_0x1857f5[_0xe284('0x10')][_0xe284('0x11')]===undefined?!![]:![]:!![],'where':_0x1857f5[_0xe284('0x10')]?_0x1857f5['options'][_0xe284('0x12')]||null:null,'attributes':_0x1857f5[_0xe284('0x10')]?_0x1857f5['options'][_0xe284('0x13')]||null:null,'limit':_0x1857f5['options']?_0x1857f5[_0xe284('0x10')]['limit']||null:null,'include':_0x1857f5[_0xe284('0x10')]?_0x1857f5[_0xe284('0x10')]['include']?_[_0xe284('0x14')](_0x1857f5[_0xe284('0x10')]['include'],function(_0x101724){return{'model':db[_0x101724[_0xe284('0x15')]],'as':_0x101724['as'],'attributes':_0x101724[_0xe284('0x13')],'include':_0x101724['include']?_[_0xe284('0x14')](_0x101724['include'],function(_0x45521b){return{'model':db[_0x45521b[_0xe284('0x15')]],'as':_0x45521b['as'],'attributes':_0x45521b[_0xe284('0x13')],'include':_0x45521b[_0xe284('0x16')]?_['map'](_0x45521b[_0xe284('0x16')],function(_0x4e1d39){return{'model':db[_0x4e1d39[_0xe284('0x15')]],'as':_0x4e1d39['as'],'attributes':_0x4e1d39['attributes']};}):[]};}):[]};}):[]:[]})[_0xe284('0x8')](function(_0x23d65d){logger[_0xe284('0x9')](_0xe284('0x17'),_0x1857f5);logger[_0xe284('0x18')]('GetTrigger',_0x1857f5,JSON[_0xe284('0x19')](_0x23d65d));_0x978e75(_0x23d65d);})[_0xe284('0x1a')](function(_0x4ddddd){logger[_0xe284('0xc')](_0xe284('0x17'),_0x4ddddd['message'],_0x1857f5);_0x9982a(_0x164d01[_0xe284('0xc')](0x1f4,_0x4ddddd[_0xe284('0xd')]));});});};exports[_0xe284('0x1b')]=function(_0x51b679){var _0x2c8cff=this;return new Promise(function(_0x1d707f,_0x468557){return db[_0xe284('0xe')][_0xe284('0x1c')]({'raw':_0x51b679[_0xe284('0x10')]?_0x51b679[_0xe284('0x10')][_0xe284('0x11')]===undefined?!![]:![]:!![],'where':_0x51b679[_0xe284('0x10')]?_0x51b679[_0xe284('0x10')][_0xe284('0x12')]||null:null,'attributes':_0x51b679['options']?_0x51b679[_0xe284('0x10')][_0xe284('0x13')]||null:null,'include':_0x51b679[_0xe284('0x10')]?_0x51b679[_0xe284('0x10')][_0xe284('0x16')]?_[_0xe284('0x14')](_0x51b679[_0xe284('0x10')][_0xe284('0x16')],function(_0x1c2e99){return{'model':db[_0x1c2e99[_0xe284('0x15')]],'as':_0x1c2e99['as'],'attributes':_0x1c2e99[_0xe284('0x13')],'include':_0x1c2e99[_0xe284('0x16')]?_[_0xe284('0x14')](_0x1c2e99[_0xe284('0x16')],function(_0x5e87b){return{'model':db[_0x5e87b['model']],'as':_0x5e87b['as'],'attributes':_0x5e87b[_0xe284('0x13')],'include':_0x5e87b['include']?_[_0xe284('0x14')](_0x5e87b[_0xe284('0x16')],function(_0x3bdeaa){return{'model':db[_0x3bdeaa[_0xe284('0x15')]],'as':_0x3bdeaa['as'],'attributes':_0x3bdeaa[_0xe284('0x13')]};}):[]};}):[]};}):[]:[]})[_0xe284('0x8')](function(_0x159376){logger[_0xe284('0x9')]('ShowTrigger',_0x51b679);logger['debug']('ShowTrigger',_0x51b679,JSON['stringify'](_0x159376));_0x1d707f(_0x159376);})[_0xe284('0x1a')](function(_0x4a658f){logger['error'](_0xe284('0x1b'),_0x4a658f[_0xe284('0xd')],_0x51b679);_0x468557(_0x2c8cff[_0xe284('0xc')](0x1f4,_0x4a658f[_0xe284('0xd')]));});});};
\ No newline at end of file
+var _0x102d=['jayson/promise','client','http','request','then','info','Trigger,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Trigger,\x20%s,\x20%s','message','result','GetTrigger','options','raw','where','attributes','include','map','model','debug','catch','ShowTrigger','Trigger','find','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x14be9e,_0x44e984){var _0x11fd99=function(_0x26cd70){while(--_0x26cd70){_0x14be9e['push'](_0x14be9e['shift']());}};_0x11fd99(++_0x44e984);}(_0x102d,0x123));var _0xd102=function(_0x5d604d,_0x365495){_0x5d604d=_0x5d604d-0x0;var _0x55e59c=_0x102d[_0x5d604d];return _0x55e59c;};'use strict';var _=require(_0xd102('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd102('0x1'));var fs=require('fs');var Redis=require(_0xd102('0x2'));var db=require(_0xd102('0x3'))['db'];var utils=require(_0xd102('0x4'));var logger=require(_0xd102('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd102('0x6'));var client=jayson[_0xd102('0x7')][_0xd102('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x133ede,_0x3a3732,_0x54e8c8){return new BPromise(function(_0x16f0bf,_0x3b0659){return client[_0xd102('0x9')](_0x133ede,_0x54e8c8)[_0xd102('0xa')](function(_0x2fae91){logger[_0xd102('0xb')]('Trigger,\x20%s,\x20%s',_0x3a3732,'request\x20sent');logger['debug'](_0xd102('0xc'),_0x3a3732,_0xd102('0xd'),JSON[_0xd102('0xe')](_0x2fae91));if(_0x2fae91[_0xd102('0xf')]){if(_0x2fae91['error'][_0xd102('0x10')]===0x1f4){logger[_0xd102('0xf')](_0xd102('0x11'),_0x3a3732,_0x2fae91['error'][_0xd102('0x12')]);return _0x3b0659(_0x2fae91['error']['message']);}logger['error'](_0xd102('0x11'),_0x3a3732,_0x2fae91[_0xd102('0xf')][_0xd102('0x12')]);return _0x16f0bf(_0x2fae91[_0xd102('0xf')][_0xd102('0x12')]);}else{logger['info']('Trigger,\x20%s,\x20%s',_0x3a3732,_0xd102('0xd'));_0x16f0bf(_0x2fae91[_0xd102('0x13')][_0xd102('0x12')]);}})['catch'](function(_0xf54a3f){logger[_0xd102('0xf')](_0xd102('0x11'),_0x3a3732,_0xf54a3f);_0x3b0659(_0xf54a3f);});});}exports[_0xd102('0x14')]=function(_0x50b857){var _0x106d74=this;return new Promise(function(_0x5c91ed,_0x39914c){return db['Trigger']['findAll']({'raw':_0x50b857['options']?_0x50b857[_0xd102('0x15')][_0xd102('0x16')]===undefined?!![]:![]:!![],'where':_0x50b857[_0xd102('0x15')]?_0x50b857[_0xd102('0x15')][_0xd102('0x17')]||null:null,'attributes':_0x50b857[_0xd102('0x15')]?_0x50b857[_0xd102('0x15')][_0xd102('0x18')]||null:null,'limit':_0x50b857[_0xd102('0x15')]?_0x50b857[_0xd102('0x15')]['limit']||null:null,'include':_0x50b857[_0xd102('0x15')]?_0x50b857['options'][_0xd102('0x19')]?_[_0xd102('0x1a')](_0x50b857[_0xd102('0x15')][_0xd102('0x19')],function(_0x2db2ac){return{'model':db[_0x2db2ac['model']],'as':_0x2db2ac['as'],'attributes':_0x2db2ac[_0xd102('0x18')],'include':_0x2db2ac[_0xd102('0x19')]?_['map'](_0x2db2ac[_0xd102('0x19')],function(_0x37e258){return{'model':db[_0x37e258[_0xd102('0x1b')]],'as':_0x37e258['as'],'attributes':_0x37e258['attributes'],'include':_0x37e258[_0xd102('0x19')]?_[_0xd102('0x1a')](_0x37e258[_0xd102('0x19')],function(_0x427b6c){return{'model':db[_0x427b6c[_0xd102('0x1b')]],'as':_0x427b6c['as'],'attributes':_0x427b6c[_0xd102('0x18')]};}):[]};}):[]};}):[]:[]})[_0xd102('0xa')](function(_0x247ae4){logger[_0xd102('0xb')](_0xd102('0x14'),_0x50b857);logger[_0xd102('0x1c')](_0xd102('0x14'),_0x50b857,JSON[_0xd102('0xe')](_0x247ae4));_0x5c91ed(_0x247ae4);})[_0xd102('0x1d')](function(_0x23a7ff){logger['error']('GetTrigger',_0x23a7ff['message'],_0x50b857);_0x39914c(_0x106d74[_0xd102('0xf')](0x1f4,_0x23a7ff[_0xd102('0x12')]));});});};exports[_0xd102('0x1e')]=function(_0x211ff6){var _0x523185=this;return new Promise(function(_0x2be069,_0x4f3f48){return db[_0xd102('0x1f')][_0xd102('0x20')]({'raw':_0x211ff6['options']?_0x211ff6[_0xd102('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x211ff6[_0xd102('0x15')]?_0x211ff6[_0xd102('0x15')]['where']||null:null,'attributes':_0x211ff6[_0xd102('0x15')]?_0x211ff6[_0xd102('0x15')]['attributes']||null:null,'include':_0x211ff6[_0xd102('0x15')]?_0x211ff6[_0xd102('0x15')][_0xd102('0x19')]?_[_0xd102('0x1a')](_0x211ff6[_0xd102('0x15')][_0xd102('0x19')],function(_0x1199ed){return{'model':db[_0x1199ed[_0xd102('0x1b')]],'as':_0x1199ed['as'],'attributes':_0x1199ed[_0xd102('0x18')],'include':_0x1199ed[_0xd102('0x19')]?_[_0xd102('0x1a')](_0x1199ed['include'],function(_0x4fd9ef){return{'model':db[_0x4fd9ef['model']],'as':_0x4fd9ef['as'],'attributes':_0x4fd9ef[_0xd102('0x18')],'include':_0x4fd9ef[_0xd102('0x19')]?_[_0xd102('0x1a')](_0x4fd9ef['include'],function(_0x2745ef){return{'model':db[_0x2745ef[_0xd102('0x1b')]],'as':_0x2745ef['as'],'attributes':_0x2745ef[_0xd102('0x18')]};}):[]};}):[]};}):[]:[]})[_0xd102('0xa')](function(_0x54e0c0){logger[_0xd102('0xb')](_0xd102('0x1e'),_0x211ff6);logger['debug'](_0xd102('0x1e'),_0x211ff6,JSON[_0xd102('0xe')](_0x54e0c0));_0x2be069(_0x54e0c0);})[_0xd102('0x1d')](function(_0x376055){logger[_0xd102('0xf')](_0xd102('0x1e'),_0x376055[_0xd102('0x12')],_0x211ff6);_0x4f3f48(_0x523185[_0xd102('0xf')](0x1f4,_0x376055[_0xd102('0x12')]));});});};
\ No newline at end of file
index 5dfe784..e2a3cba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf14=['index','get','/:id','isAuthenticated','show','post','/:id/clone','clone','create','put','update','destroy','exports','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./trunk.controller'];(function(_0x13e9d4,_0x25483d){var _0x2c62b8=function(_0x4c5ffb){while(--_0x4c5ffb){_0x13e9d4['push'](_0x13e9d4['shift']());}};_0x2c62b8(++_0x25483d);}(_0xcf14,0x1ed));var _0x4cf1=function(_0x2716bf,_0x25188f){_0x2716bf=_0x2716bf-0x0;var _0x108b12=_0xcf14[_0x2716bf];return _0x108b12;};'use strict';var multer=require('multer');var util=require(_0x4cf1('0x0'));var path=require('path');var timeout=require(_0x4cf1('0x1'));var express=require('express');var router=express[_0x4cf1('0x2')]();var fs_extra=require(_0x4cf1('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x4cf1('0x4'));var config=require(_0x4cf1('0x5'));var controller=require(_0x4cf1('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x4cf1('0x7')]);router[_0x4cf1('0x8')](_0x4cf1('0x9'),auth[_0x4cf1('0xa')](),controller[_0x4cf1('0xb')]);router[_0x4cf1('0xc')](_0x4cf1('0xd'),auth['isAuthenticated'](),controller[_0x4cf1('0xe')]);router['post']('/',auth[_0x4cf1('0xa')](),controller[_0x4cf1('0xf')]);router[_0x4cf1('0x10')](_0x4cf1('0x9'),auth[_0x4cf1('0xa')](),controller[_0x4cf1('0x11')]);router['delete'](_0x4cf1('0x9'),auth['isAuthenticated'](),controller[_0x4cf1('0x12')]);module[_0x4cf1('0x13')]=router;
\ No newline at end of file
+var _0x7ecd=['/:id','show','post','/:id/clone','clone','create','put','update','delete','destroy','multer','path','express','Router','../../components/auth/service','../../config/environment','isAuthenticated','index','get'];(function(_0x8568e9,_0x474bea){var _0x357f5a=function(_0xb8677f){while(--_0xb8677f){_0x8568e9['push'](_0x8568e9['shift']());}};_0x357f5a(++_0x474bea);}(_0x7ecd,0x199));var _0xd7ec=function(_0x30dd0e,_0x4e89f0){_0x30dd0e=_0x30dd0e-0x0;var _0xac744e=_0x7ecd[_0x30dd0e];return _0xac744e;};'use strict';var multer=require(_0xd7ec('0x0'));var util=require('util');var path=require(_0xd7ec('0x1'));var timeout=require('connect-timeout');var express=require(_0xd7ec('0x2'));var router=express[_0xd7ec('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xd7ec('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xd7ec('0x5'));var controller=require('./trunk.controller');router['get']('/',auth[_0xd7ec('0x6')](),controller[_0xd7ec('0x7')]);router[_0xd7ec('0x8')](_0xd7ec('0x9'),auth[_0xd7ec('0x6')](),controller[_0xd7ec('0xa')]);router[_0xd7ec('0xb')](_0xd7ec('0xc'),auth[_0xd7ec('0x6')](),controller[_0xd7ec('0xd')]);router[_0xd7ec('0xb')]('/',auth[_0xd7ec('0x6')](),controller[_0xd7ec('0xe')]);router[_0xd7ec('0xf')](_0xd7ec('0x9'),auth['isAuthenticated'](),controller[_0xd7ec('0x10')]);router[_0xd7ec('0x11')](_0xd7ec('0x9'),auth[_0xd7ec('0x6')](),controller[_0xd7ec('0x12')]);module['exports']=router;
\ No newline at end of file
index 6923a6c..66593c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc26=['ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_FAILED_SCREEN','udp','transport','join','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','nonat','update','force_rport,comedia','setDataValue','getDataValue','nat','split','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','never','\x22\x22\x20<>','INTEGER','always','refuse','originate','uac','uas','fingerprint','certificate','active','actpass','dynamic','update,nonat','BOOLEAN','sequelize','STRING','ENUM','friend','user','from-voip-provider','ALLOWED_NOT_SCREENED'];(function(_0x24b858,_0x6969cb){var _0x2b11e6=function(_0x36793c){while(--_0x36793c){_0x24b858['push'](_0x24b858['shift']());}};_0x2b11e6(++_0x6969cb);}(_0xdc26,0xe4));var _0x6dc2=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0xdc26[_0x4b7895];return _0x264180;};'use strict';var Sequelize=require(_0x6dc2('0x0'));module['exports']={'name':{'type':Sequelize[_0x6dc2('0x1')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x3'),_0x6dc2('0x4'),'peer'),'allowNull':![],'defaultValue':_0x6dc2('0x3')},'context':{'type':Sequelize[_0x6dc2('0x1')],'allowNull':![],'defaultValue':_0x6dc2('0x5')},'callingpres':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x6'),_0x6dc2('0x7'),_0x6dc2('0x8'),'ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN',_0x6dc2('0x9'),'PROHIB')},'deny':{'type':Sequelize['STRING']},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize[_0x6dc2('0x1')]},'md5secret':{'type':Sequelize[_0x6dc2('0x1')]},'remotesecret':{'type':Sequelize[_0x6dc2('0x1')]},'transport':{'type':Sequelize[_0x6dc2('0x1')],'defaultValue':_0x6dc2('0xa'),'set':function(_0xb9b163){this['setDataValue'](_0x6dc2('0xb'),_0xb9b163?_0xb9b163[_0x6dc2('0xc')](','):null);},'get':function(){return this['getDataValue'](_0x6dc2('0xb'))?this['getDataValue'](_0x6dc2('0xb'))['split'](','):null;},'comment':_0x6dc2('0xd')},'dtmfmode':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0xe'),_0x6dc2('0xf'),_0x6dc2('0x10'),_0x6dc2('0x11'),_0x6dc2('0x12')),'defaultValue':_0x6dc2('0xe')},'directmedia':{'type':Sequelize['ENUM'](_0x6dc2('0x13'),'no',_0x6dc2('0x14'),_0x6dc2('0x15'),'outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x6dc2('0x1')]},'directmediadeny':{'type':Sequelize['STRING']},'nat':{'type':Sequelize[_0x6dc2('0x1')],'defaultValue':_0x6dc2('0x16'),'set':function(_0x5298db){this[_0x6dc2('0x17')]('nat',_0x5298db?_0x5298db['join'](','):null);},'get':function(){return this['getDataValue']('nat')?this[_0x6dc2('0x18')](_0x6dc2('0x19'))[_0x6dc2('0x1a')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x6dc2('0x1')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x6dc2('0x1')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING'],'allowNull':!![]},'disallow':{'type':Sequelize[_0x6dc2('0x1')],'defaultValue':'all'},'allow':{'type':Sequelize[_0x6dc2('0x1')],'allowNull':![],'defaultValue':_0x6dc2('0x1b'),'set':function(_0x4ee923){this['setDataValue'](_0x6dc2('0x1c'),_0x4ee923?_0x4ee923[_0x6dc2('0xc')](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0x6dc2('0x18')]('allow')?this[_0x6dc2('0x18')](_0x6dc2('0x1c'))[_0x6dc2('0x1a')](';'):null;},'comment':_0x6dc2('0x1d')},'autoframing':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no')},'insecure':{'type':Sequelize[_0x6dc2('0x1')],'defaultValue':_0x6dc2('0x1e'),'set':function(_0x2aaf6a){this['setDataValue'](_0x6dc2('0x1f'),_0x2aaf6a?_0x2aaf6a[_0x6dc2('0xc')](','):null);},'get':function(){return this[_0x6dc2('0x18')]('insecure')?this[_0x6dc2('0x18')]('insecure')['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize['ENUM'](_0x6dc2('0x13'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM']('yes','no',_0x6dc2('0x20'))},'promiscredir':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no')},'useclientcode':{'type':Sequelize['ENUM'](_0x6dc2('0x13'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x6dc2('0x1')],'defaultValue':_0x6dc2('0x21')},'amaflags':{'type':Sequelize[_0x6dc2('0x1')]},'callcounter':{'type':Sequelize['ENUM'](_0x6dc2('0x13'),'no'),'defaultValue':_0x6dc2('0x13')},'busylevel':{'type':Sequelize[_0x6dc2('0x22')](0xb)},'allowoverlap':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0x6dc2('0x13'),'no')},'allowtransfer':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no')},'ignoresdpversion':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no')},'subscribecontext':{'type':Sequelize[_0x6dc2('0x1')]},'template':{'type':Sequelize[_0x6dc2('0x1')]},'videosupport':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no',_0x6dc2('0x23')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no')},'mailbox':{'type':Sequelize[_0x6dc2('0x1')]},'session_timers':{'type':Sequelize[_0x6dc2('0x2')]('accept',_0x6dc2('0x24'),_0x6dc2('0x25'))},'session_expires':{'type':Sequelize[_0x6dc2('0x22')](0xb)},'session_minse':{'type':Sequelize[_0x6dc2('0x22')](0xb)},'session_refresher':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x26'),_0x6dc2('0x27')),'defaultValue':_0x6dc2('0x27')},'t38pt_usertpsource':{'type':Sequelize[_0x6dc2('0x1')]},'regexten':{'type':Sequelize['STRING']},'fromdomain':{'type':Sequelize[_0x6dc2('0x1')]},'fromuser':{'type':Sequelize[_0x6dc2('0x1')]},'port':{'type':Sequelize[_0x6dc2('0x22')](0x5)},'qualify':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x6dc2('0x22')](0xb)},'defaultip':{'type':Sequelize['STRING']},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0x6dc2('0x22')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x6dc2('0x22')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x6dc2('0x22')](0xb)},'sendrpid':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x6dc2('0x1')]},'callbackextension':{'type':Sequelize[_0x6dc2('0x1')]},'timert1':{'type':Sequelize[_0x6dc2('0x22')](0xb)},'timerb':{'type':Sequelize[_0x6dc2('0x22')](0xb)},'qualifyfreq':{'type':Sequelize[_0x6dc2('0x22')](0xb)},'contactpermit':{'type':Sequelize[_0x6dc2('0x1')]},'contactdeny':{'type':Sequelize[_0x6dc2('0x1')]},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize[_0x6dc2('0x22')](0xb)},'encryption':{'type':Sequelize['ENUM'](_0x6dc2('0x13'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no')},'force_avp':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no')},'icesupport':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no')},'dtlsenable':{'type':Sequelize['ENUM']('yes','no')},'dtlsverify':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no',_0x6dc2('0x28'),_0x6dc2('0x29'))},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize[_0x6dc2('0x1')]},'dtlsprivatekey':{'type':Sequelize[_0x6dc2('0x1')]},'dtlscipher':{'type':Sequelize[_0x6dc2('0x1')]},'dtlscafile':{'type':Sequelize[_0x6dc2('0x1')]},'dtlscapath':{'type':Sequelize[_0x6dc2('0x1')]},'dtlssetup':{'type':Sequelize['ENUM'](_0x6dc2('0x2a'),'passive',_0x6dc2('0x2b')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x6dc2('0x1')]},'usereqphone':{'type':Sequelize[_0x6dc2('0x2')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x6dc2('0x1')]},'recordofffeature':{'type':Sequelize['STRING']},'call_limit':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no')},'subscribemwi':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no')},'vmexten':{'type':Sequelize[_0x6dc2('0x1')]},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize[_0x6dc2('0x1')]},'parkinglot':{'type':Sequelize[_0x6dc2('0x1')]},'description':{'type':Sequelize[_0x6dc2('0x1')]},'host':{'type':Sequelize['STRING'],'defaultValue':_0x6dc2('0x2c')},'canreinvite':{'type':Sequelize[_0x6dc2('0x2')](_0x6dc2('0x13'),'no',_0x6dc2('0x14'),'update',_0x6dc2('0x2d')),'defaultValue':'no'},'registry':{'type':Sequelize[_0x6dc2('0x1')]},'otherFields':{'type':Sequelize[_0x6dc2('0x1')]},'active':{'type':Sequelize[_0x6dc2('0x2e')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x6dc2('0x1')],'defaultValue':'no'}};
\ No newline at end of file
+var _0xd4f9=['join','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','nonat','update','force_rport,comedia','nat','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\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','always','accept','refuse','originate','uac','uas','fingerprint','certificate','active','passive','actpass','dynamic','update,nonat','sequelize','exports','STRING','ENUM','friend','user','peer','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_PASSED_SCREEN','PROHIB','udp','setDataValue','transport'];(function(_0x163fe4,_0x17b748){var _0x5c0a8e=function(_0x4f8fe1){while(--_0x4f8fe1){_0x163fe4['push'](_0x163fe4['shift']());}};_0x5c0a8e(++_0x17b748);}(_0xd4f9,0xc1));var _0x9d4f=function(_0x13ad07,_0x5f391a){_0x13ad07=_0x13ad07-0x0;var _0x15ab02=_0xd4f9[_0x13ad07];return _0x15ab02;};'use strict';var Sequelize=require(_0x9d4f('0x0'));module[_0x9d4f('0x1')]={'name':{'type':Sequelize[_0x9d4f('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x4'),_0x9d4f('0x5'),_0x9d4f('0x6')),'allowNull':![],'defaultValue':_0x9d4f('0x4')},'context':{'type':Sequelize[_0x9d4f('0x2')],'allowNull':![],'defaultValue':_0x9d4f('0x7')},'callingpres':{'type':Sequelize[_0x9d4f('0x3')]('ALLOWED_NOT_SCREENED',_0x9d4f('0x8'),_0x9d4f('0x9'),'ALLOWED','PROHIB_NOT_SCREENED',_0x9d4f('0xa'),'PROHIB_FAILED_SCREEN',_0x9d4f('0xb'))},'deny':{'type':Sequelize[_0x9d4f('0x2')]},'permit':{'type':Sequelize[_0x9d4f('0x2')]},'secret':{'type':Sequelize[_0x9d4f('0x2')]},'md5secret':{'type':Sequelize[_0x9d4f('0x2')]},'remotesecret':{'type':Sequelize[_0x9d4f('0x2')]},'transport':{'type':Sequelize[_0x9d4f('0x2')],'defaultValue':_0x9d4f('0xc'),'set':function(_0x3cad4b){this[_0x9d4f('0xd')](_0x9d4f('0xe'),_0x3cad4b?_0x3cad4b[_0x9d4f('0xf')](','):null);},'get':function(){return this[_0x9d4f('0x10')](_0x9d4f('0xe'))?this['getDataValue'](_0x9d4f('0xe'))[_0x9d4f('0x11')](','):null;},'comment':_0x9d4f('0x12')},'dtmfmode':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x13'),_0x9d4f('0x14'),_0x9d4f('0x15'),_0x9d4f('0x16'),_0x9d4f('0x17')),'defaultValue':_0x9d4f('0x13')},'directmedia':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no',_0x9d4f('0x19'),_0x9d4f('0x1a'),'outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x9d4f('0x2')]},'directmediadeny':{'type':Sequelize[_0x9d4f('0x2')]},'nat':{'type':Sequelize[_0x9d4f('0x2')],'defaultValue':_0x9d4f('0x1b'),'set':function(_0x56c0dc){this[_0x9d4f('0xd')]('nat',_0x56c0dc?_0x56c0dc[_0x9d4f('0xf')](','):null);},'get':function(){return this[_0x9d4f('0x10')](_0x9d4f('0x1c'))?this[_0x9d4f('0x10')](_0x9d4f('0x1c'))[_0x9d4f('0x11')](','):null;},'comment':_0x9d4f('0x1d')},'callgroup':{'type':Sequelize[_0x9d4f('0x2')]},'namedcallgroup':{'type':Sequelize[_0x9d4f('0x2')]},'pickupgroup':{'type':Sequelize[_0x9d4f('0x2')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x9d4f('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x9d4f('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x9d4f('0x2')],'defaultValue':_0x9d4f('0x1e')},'allow':{'type':Sequelize[_0x9d4f('0x2')],'allowNull':![],'defaultValue':_0x9d4f('0x1f'),'set':function(_0x45bdb2){this[_0x9d4f('0xd')](_0x9d4f('0x20'),_0x45bdb2?_0x45bdb2['join'](';'):_0x9d4f('0x1f'));},'get':function(){return this[_0x9d4f('0x10')](_0x9d4f('0x20'))?this[_0x9d4f('0x10')]('allow')[_0x9d4f('0x11')](';'):null;},'comment':_0x9d4f('0x21')},'autoframing':{'type':Sequelize['ENUM']('yes','no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0x9d4f('0x22'),'set':function(_0x12a047){this[_0x9d4f('0xd')](_0x9d4f('0x23'),_0x12a047?_0x12a047['join'](','):null);},'get':function(){return this[_0x9d4f('0x10')](_0x9d4f('0x23'))?this[_0x9d4f('0x10')](_0x9d4f('0x23'))[_0x9d4f('0x11')](','):null;},'comment':_0x9d4f('0x24')},'trustrpid':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x9d4f('0x3')]('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no',_0x9d4f('0x25'))},'promiscredir':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no')},'useclientcode':{'type':Sequelize[_0x9d4f('0x3')]('yes','no')},'accountcode':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'setvar':{'type':Sequelize[_0x9d4f('0x2')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no'),'defaultValue':_0x9d4f('0x18')},'busylevel':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'allowoverlap':{'type':Sequelize[_0x9d4f('0x3')]('yes','no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0x9d4f('0x18'),'no')},'allowtransfer':{'type':Sequelize['ENUM']('yes','no')},'ignoresdpversion':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no')},'subscribecontext':{'type':Sequelize['STRING']},'template':{'type':Sequelize[_0x9d4f('0x2')]},'videosupport':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no',_0x9d4f('0x27')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x9d4f('0x3')]('yes','no')},'mailbox':{'type':Sequelize[_0x9d4f('0x2')]},'session_timers':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x28'),_0x9d4f('0x29'),_0x9d4f('0x2a'))},'session_expires':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'session_minse':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'session_refresher':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x2b'),_0x9d4f('0x2c')),'defaultValue':_0x9d4f('0x2c')},'t38pt_usertpsource':{'type':Sequelize[_0x9d4f('0x2')]},'regexten':{'type':Sequelize['STRING']},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0x9d4f('0x2')]},'port':{'type':Sequelize[_0x9d4f('0x26')](0x5)},'qualify':{'type':Sequelize['ENUM'](_0x9d4f('0x18'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'defaultip':{'type':Sequelize[_0x9d4f('0x2')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'sendrpid':{'type':Sequelize[_0x9d4f('0x3')]('yes','no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x9d4f('0x2')]},'callbackextension':{'type':Sequelize[_0x9d4f('0x2')]},'timert1':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'timerb':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'qualifyfreq':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'contactpermit':{'type':Sequelize[_0x9d4f('0x2')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize[_0x9d4f('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0x9d4f('0x2')]},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'encryption':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no')},'force_avp':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no')},'icesupport':{'type':Sequelize['ENUM'](_0x9d4f('0x18'),'no')},'dtlsenable':{'type':Sequelize['ENUM'](_0x9d4f('0x18'),'no')},'dtlsverify':{'type':Sequelize['ENUM']('yes','no',_0x9d4f('0x2d'),_0x9d4f('0x2e'))},'dtlsrekey':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'dtlscertfile':{'type':Sequelize[_0x9d4f('0x2')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize[_0x9d4f('0x2')]},'dtlscafile':{'type':Sequelize[_0x9d4f('0x2')]},'dtlscapath':{'type':Sequelize[_0x9d4f('0x2')]},'dtlssetup':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x2f'),_0x9d4f('0x30'),_0x9d4f('0x31')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x9d4f('0x2')]},'usereqphone':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x9d4f('0x2')]},'recordofffeature':{'type':Sequelize[_0x9d4f('0x2')]},'call_limit':{'type':Sequelize[_0x9d4f('0x26')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no')},'subscribemwi':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize[_0x9d4f('0x2')]},'parkinglot':{'type':Sequelize[_0x9d4f('0x2')]},'description':{'type':Sequelize[_0x9d4f('0x2')]},'host':{'type':Sequelize[_0x9d4f('0x2')],'defaultValue':_0x9d4f('0x32')},'canreinvite':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no','nonat',_0x9d4f('0x1a'),_0x9d4f('0x33')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x9d4f('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x9d4f('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index f5e8560..4d5b8e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2ca=['omit','createdAt','body','updatedAt','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','root','server/files/templates/trunk.ejs','utf8','render','writeFileSync','registry','/etc/asterisk/sip_xcally_registers.conf','Unable\x20to\x20retrieve\x20the\x20current\x20user','server/files/templates/registry.ejs','/etc/asterisk/sip_xcally_trunks.conf','Reload','chan_sip.so','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','offset','limit','count','set','Content-Range','apply','save','update','destroy','get','Trunks','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','show','params','Trunk','find','clone'];(function(_0x1ea4d2,_0x43dc2a){var _0x4cda87=function(_0x525003){while(--_0x525003){_0x1ea4d2['push'](_0x1ea4d2['shift']());}};_0x4cda87(++_0x43dc2a);}(_0xf2ca,0x16a));var _0xaf2c=function(_0x40f9a0,_0x3458cc){_0x40f9a0=_0x40f9a0-0x0;var _0x3e3144=_0xf2ca[_0x40f9a0];return _0x3e3144;};'use strict';var emlformat=require(_0xaf2c('0x0'));var rimraf=require(_0xaf2c('0x1'));var zipdir=require(_0xaf2c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xaf2c('0x3'));var moment=require(_0xaf2c('0x4'));var BPromise=require(_0xaf2c('0x5'));var Mustache=require(_0xaf2c('0x6'));var util=require(_0xaf2c('0x7'));var path=require(_0xaf2c('0x8'));var sox=require('sox');var csv=require(_0xaf2c('0x9'));var ejs=require(_0xaf2c('0xa'));var fs=require('fs');var fs_extra=require(_0xaf2c('0xb'));var _=require(_0xaf2c('0xc'));var squel=require('squel');var crypto=require(_0xaf2c('0xd'));var jsforce=require(_0xaf2c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xaf2c('0x9'));var querystring=require('querystring');var Papa=require(_0xaf2c('0xf'));var Redis=require('ioredis');var authService=require(_0xaf2c('0x10'));var qs=require(_0xaf2c('0x11'));var as=require(_0xaf2c('0x12'));var hardwareService=require(_0xaf2c('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xaf2c('0x14'));var config=require(_0xaf2c('0x15'));var licenseUtil=require(_0xaf2c('0x16'));var db=require(_0xaf2c('0x17'))['db'];var jayson=require(_0xaf2c('0x18'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x15ccb4,_0x8eaf9b,_0x935959,_0x18a8a5){return new BPromise(function(_0x293ca6,_0x152c73){var _0x214f47=_0x18a8a5||client;return _0x214f47[_0xaf2c('0x19')](_0x15ccb4,_0x935959)[_0xaf2c('0x1a')](function(_0x1d0633){logger[_0xaf2c('0x1b')](_0xaf2c('0x1c'),_0x8eaf9b,_0xaf2c('0x1d'));logger[_0xaf2c('0x1e')](_0xaf2c('0x1f'),_0x8eaf9b,'request\x20sent',JSON[_0xaf2c('0x20')](_0x1d0633));if(_0x1d0633['error']){if(_0x1d0633[_0xaf2c('0x21')][_0xaf2c('0x22')]===0x1f4){logger[_0xaf2c('0x21')]('Trunk,\x20%s,\x20%s',_0x8eaf9b,_0x1d0633[_0xaf2c('0x21')][_0xaf2c('0x23')]);return _0x152c73(_0x1d0633[_0xaf2c('0x21')][_0xaf2c('0x23')]);}logger[_0xaf2c('0x21')](_0xaf2c('0x1c'),_0x8eaf9b,_0x1d0633['error'][_0xaf2c('0x23')]);return _0x293ca6(_0x1d0633[_0xaf2c('0x21')][_0xaf2c('0x23')]);}else{logger[_0xaf2c('0x1b')](_0xaf2c('0x1c'),_0x8eaf9b,'request\x20sent');_0x293ca6(_0x1d0633[_0xaf2c('0x24')][_0xaf2c('0x23')]);}})[_0xaf2c('0x25')](function(_0x4be6ed){logger['error'](_0xaf2c('0x1c'),_0x8eaf9b,_0x4be6ed);_0x152c73(_0x4be6ed);});});}function respondWithStatusCode(_0x303546,_0x1cafad){_0x1cafad=_0x1cafad||0xcc;return function(_0x99f78d){if(_0x99f78d){return _0x303546['sendStatus'](_0x1cafad);}return _0x303546[_0xaf2c('0x26')](_0x1cafad)[_0xaf2c('0x27')]();};}function respondWithResult(_0x3a0145,_0x3c1ae6){_0x3c1ae6=_0x3c1ae6||0xc8;return function(_0xe929b5){if(_0xe929b5){return _0x3a0145[_0xaf2c('0x26')](_0x3c1ae6)[_0xaf2c('0x28')](_0xe929b5);}};}function respondWithFilteredResult(_0x4a8dd8,_0x29f8b0){return function(_0x2051be){if(_0x2051be){var _0x36f37c=typeof _0x29f8b0[_0xaf2c('0x29')]==='undefined'&&typeof _0x29f8b0[_0xaf2c('0x2a')]==='undefined';var _0x38db1b=_0x2051be[_0xaf2c('0x2b')];var _0x15466b=_0x36f37c?0x0:_0x29f8b0['offset'];var _0x2747bb=_0x36f37c?_0x2051be[_0xaf2c('0x2b')]:_0x29f8b0[_0xaf2c('0x29')]+_0x29f8b0['limit'];var _0xe18ba7;if(_0x2747bb>=_0x38db1b){_0x2747bb=_0x38db1b;_0xe18ba7=0xc8;}else{_0xe18ba7=0xce;}_0x4a8dd8[_0xaf2c('0x26')](_0xe18ba7);return _0x4a8dd8[_0xaf2c('0x2c')](_0xaf2c('0x2d'),_0x15466b+'-'+_0x2747bb+'/'+_0x38db1b)['json'](_0x2051be);}return null;};}function patchUpdates(_0x3da072){return function(_0x4072ff){try{jsonpatch[_0xaf2c('0x2e')](_0x4072ff,_0x3da072,!![]);}catch(_0x51a49c){return BPromise['reject'](_0x51a49c);}return _0x4072ff[_0xaf2c('0x2f')]();};}function saveUpdates(_0x4c9b4f,_0x39c0ed){return function(_0x5e7247){if(_0x5e7247){return _0x5e7247[_0xaf2c('0x30')](_0x4c9b4f)[_0xaf2c('0x1a')](function(_0x4ffbb9){return _0x4ffbb9;});}return null;};}function removeEntity(_0x1408e3,_0x5403f8){return function(_0x54db57){if(_0x54db57){return _0x54db57[_0xaf2c('0x31')]()[_0xaf2c('0x1a')](function(){var _0x211a69=_0x54db57[_0xaf2c('0x32')]({'plain':!![]});var _0x2d6ed7=_0xaf2c('0x33');return db['UserProfileResource'][_0xaf2c('0x31')]({'where':{'type':_0x2d6ed7,'resourceId':_0x211a69['id']}})['then'](function(){return _0x54db57;});})[_0xaf2c('0x1a')](function(){_0x1408e3['status'](0xcc)[_0xaf2c('0x27')]();});}};}function handleEntityNotFound(_0x59f686,_0x2f3d16){return function(_0x4e877e){if(!_0x4e877e){_0x59f686[_0xaf2c('0x34')](0x194);}return _0x4e877e;};}function handleError(_0x4b9c6b,_0x30fd87){_0x30fd87=_0x30fd87||0x1f4;return function(_0x356402){logger[_0xaf2c('0x21')](_0x356402[_0xaf2c('0x35')]);if(_0x356402[_0xaf2c('0x36')]){delete _0x356402['name'];}_0x4b9c6b['status'](_0x30fd87)[_0xaf2c('0x37')](_0x356402);};}exports[_0xaf2c('0x38')]=function(_0x409700,_0xa44813){var _0x4eeecf={},_0x316238={},_0x573db3={'count':0x0,'rows':[]};var _0xa1248e=_[_0xaf2c('0x39')](db['Trunk'][_0xaf2c('0x3a')],function(_0x24668d){return{'name':_0x24668d[_0xaf2c('0x3b')],'type':_0x24668d[_0xaf2c('0x3c')][_0xaf2c('0x3d')]};});_0x316238[_0xaf2c('0x3e')]=_[_0xaf2c('0x39')](_0xa1248e,_0xaf2c('0x36'));_0x316238[_0xaf2c('0x3f')]=_[_0xaf2c('0x40')](_0x409700[_0xaf2c('0x3f')]);_0x316238[_0xaf2c('0x41')]=_[_0xaf2c('0x42')](_0x316238['model'],_0x316238['query']);_0x4eeecf['attributes']=_[_0xaf2c('0x42')](_0x316238[_0xaf2c('0x3e')],qs[_0xaf2c('0x43')](_0x409700[_0xaf2c('0x3f')][_0xaf2c('0x43')]));_0x4eeecf[_0xaf2c('0x44')]=_0x4eeecf['attributes'][_0xaf2c('0x45')]?_0x4eeecf[_0xaf2c('0x44')]:_0x316238[_0xaf2c('0x3e')];if(!_0x409700['query']['hasOwnProperty'](_0xaf2c('0x46'))){_0x4eeecf['limit']=qs[_0xaf2c('0x2a')](_0x409700[_0xaf2c('0x3f')][_0xaf2c('0x2a')]);_0x4eeecf[_0xaf2c('0x29')]=qs['offset'](_0x409700[_0xaf2c('0x3f')]['offset']);}_0x4eeecf[_0xaf2c('0x47')]=qs[_0xaf2c('0x48')](_0x409700['query'][_0xaf2c('0x48')]);_0x4eeecf['where']=qs[_0xaf2c('0x41')](_[_0xaf2c('0x49')](_0x409700[_0xaf2c('0x3f')],_0x316238[_0xaf2c('0x41')]),_0xa1248e);if(_0x409700[_0xaf2c('0x3f')][_0xaf2c('0x4a')]){_0x4eeecf[_0xaf2c('0x4b')]=_[_0xaf2c('0x4c')](_0x4eeecf[_0xaf2c('0x4b')],{'$or':_['map'](_0xa1248e,function(_0x51d751){if(_0x51d751[_0xaf2c('0x3c')]!=='VIRTUAL'){var _0x4ad36e={};_0x4ad36e[_0x51d751['name']]={'$like':'%'+_0x409700[_0xaf2c('0x3f')][_0xaf2c('0x4a')]+'%'};return _0x4ad36e;}})});}_0x4eeecf=_[_0xaf2c('0x4c')]({},_0x4eeecf,_0x409700[_0xaf2c('0x4d')]);var _0x599b2d={'where':_0x4eeecf[_0xaf2c('0x4b')]};return db['Trunk'][_0xaf2c('0x2b')](_0x599b2d)['then'](function(_0x166c26){_0x573db3[_0xaf2c('0x2b')]=_0x166c26;if(_0x409700[_0xaf2c('0x3f')][_0xaf2c('0x4e')]){_0x4eeecf[_0xaf2c('0x4f')]=[{'all':!![]}];}return db['Trunk'][_0xaf2c('0x50')](_0x4eeecf);})[_0xaf2c('0x1a')](function(_0x4b3ca4){_0x573db3['rows']=_0x4b3ca4;return _0x573db3;})[_0xaf2c('0x1a')](respondWithFilteredResult(_0xa44813,_0x4eeecf))['catch'](handleError(_0xa44813,null));};exports[_0xaf2c('0x51')]=function(_0x23642b,_0x17b9ec){var _0x315b9f={'raw':![],'where':{'id':_0x23642b[_0xaf2c('0x52')]['id']}},_0x367112={};_0x367112[_0xaf2c('0x3e')]=_[_0xaf2c('0x40')](db[_0xaf2c('0x53')][_0xaf2c('0x3a')]);_0x367112[_0xaf2c('0x3f')]=_['keys'](_0x23642b[_0xaf2c('0x3f')]);_0x367112[_0xaf2c('0x41')]=_['intersection'](_0x367112['model'],_0x367112['query']);_0x315b9f[_0xaf2c('0x44')]=_[_0xaf2c('0x42')](_0x367112['model'],qs[_0xaf2c('0x43')](_0x23642b[_0xaf2c('0x3f')][_0xaf2c('0x43')]));_0x315b9f[_0xaf2c('0x44')]=_0x315b9f[_0xaf2c('0x44')][_0xaf2c('0x45')]?_0x315b9f[_0xaf2c('0x44')]:_0x367112['model'];if(_0x23642b[_0xaf2c('0x3f')][_0xaf2c('0x4e')]){_0x315b9f['include']=[{'all':!![]}];}_0x315b9f=_[_0xaf2c('0x4c')]({},_0x315b9f,_0x23642b[_0xaf2c('0x4d')]);return db[_0xaf2c('0x53')][_0xaf2c('0x54')](_0x315b9f)[_0xaf2c('0x1a')](handleEntityNotFound(_0x17b9ec,null))[_0xaf2c('0x1a')](respondWithResult(_0x17b9ec,null))[_0xaf2c('0x25')](handleError(_0x17b9ec,null));};exports[_0xaf2c('0x55')]=function(_0x19b82d,_0x300254){var _0x133678={'where':{'id':_0x19b82d[_0xaf2c('0x52')]['id']}},_0x10a270={};_0x10a270[_0xaf2c('0x3e')]=_[_0xaf2c('0x40')](db[_0xaf2c('0x53')][_0xaf2c('0x3a')]);_0x133678[_0xaf2c('0x44')]=_[_0xaf2c('0x42')](_0x10a270[_0xaf2c('0x3e')],qs['fields'](_0x19b82d[_0xaf2c('0x3f')][_0xaf2c('0x43')]));_0x133678[_0xaf2c('0x44')]=_0x133678['attributes'][_0xaf2c('0x45')]?_0x133678['attributes']:_0x10a270[_0xaf2c('0x3e')];if(_0x19b82d[_0xaf2c('0x3f')][_0xaf2c('0x4e')]){_0x133678[_0xaf2c('0x4f')]=[{'all':!![]}];}_0x133678=_[_0xaf2c('0x4c')]({},_0x133678,_0x19b82d[_0xaf2c('0x4d')]);return db[_0xaf2c('0x53')][_0xaf2c('0x54')](_0x133678)[_0xaf2c('0x1a')](handleEntityNotFound(_0x300254,null))['then'](function(_0x41d08b){if(_0x41d08b){var _0x400dcd=_0x41d08b[_0xaf2c('0x32')]({'plain':!![]});_0x400dcd=qs[_0xaf2c('0x56')](_0x400dcd,['id',_0xaf2c('0x57'),'updatedAt']);_0x19b82d[_0xaf2c('0x58')]=_[_0xaf2c('0x56')](_0x19b82d['body'],['id',_0xaf2c('0x57'),_0xaf2c('0x59')]);return db['Trunk']['create'](_[_0xaf2c('0x4c')](_0x400dcd,_0x19b82d[_0xaf2c('0x58')]),{'include':_0x19b82d[_0xaf2c('0x3f')][_0xaf2c('0x4e')]?[{'all':!![]}]:undefined})['then'](function(_0x36b6f0){var _0x3f48f1=_0x19b82d['user'][_0xaf2c('0x32')]({'plain':!![]});if(!_0x3f48f1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3f48f1[_0xaf2c('0x5a')]===_0xaf2c('0x5b')){var _0x16e9f4=_0x36b6f0[_0xaf2c('0x32')]({'plain':!![]});var _0x1a297e=_0xaf2c('0x33');return db[_0xaf2c('0x5c')][_0xaf2c('0x54')]({'where':{'name':_0x1a297e,'userProfileId':_0x3f48f1[_0xaf2c('0x5d')]},'raw':!![]})[_0xaf2c('0x1a')](function(_0x53ba41){if(_0x53ba41&&_0x53ba41[_0xaf2c('0x5e')]===0x0){return db[_0xaf2c('0x5f')][_0xaf2c('0x60')]({'name':_0x16e9f4[_0xaf2c('0x36')],'resourceId':_0x16e9f4['id'],'type':_0x53ba41[_0xaf2c('0x36')],'sectionId':_0x53ba41['id']},{})['then'](function(){return _0x36b6f0;});}else{return _0x36b6f0;}})[_0xaf2c('0x25')](function(_0x28b09f){logger[_0xaf2c('0x21')](_0xaf2c('0x61'),_0x28b09f);throw _0x28b09f;});}return _0x36b6f0;});}})[_0xaf2c('0x1a')](respondWithResult(_0x300254,0xc9))['catch'](handleError(_0x300254,null));};exports['create']=function(_0x1166c9,_0x1ead61,_0x5849f8){var _0xf96361;return db[_0xaf2c('0x53')][_0xaf2c('0x60')](_0x1166c9['body'],{'raw':!![]})[_0xaf2c('0x1a')](function(_0x2bd845){_0xf96361=_0x2bd845;return db[_0xaf2c('0x53')][_0xaf2c('0x50')]({'raw':!![]});})['then'](function(_0x32d552){var _0x26129c=fs[_0xaf2c('0x62')](path[_0xaf2c('0x63')](config[_0xaf2c('0x64')],_0xaf2c('0x65')),_0xaf2c('0x66'));var _0x2767c7=fs[_0xaf2c('0x62')](path[_0xaf2c('0x63')](config[_0xaf2c('0x64')],'server/files/templates/registry.ejs'),_0xaf2c('0x66'));var _0x5d965c=ejs[_0xaf2c('0x67')](_0x26129c,{'trunks':_0x32d552||[]});fs[_0xaf2c('0x68')]('/etc/asterisk/sip_xcally_trunks.conf',_0x5d965c);if(_0xf96361[_0xaf2c('0x69')]){var _0x5a95ac=ejs['render'](_0x2767c7,{'trunks':_0x32d552||[]});fs[_0xaf2c('0x68')](_0xaf2c('0x6a'),_0x5a95ac);}})[_0xaf2c('0x1a')](function(){return respondWithRpcPromise('Reload','create',{'module':'chan_sip.so'});})[_0xaf2c('0x1a')](function(){var _0x3e972c=_0x1166c9['user'][_0xaf2c('0x32')]({'plain':!![]});if(!_0x3e972c)throw new Error(_0xaf2c('0x6b'));if(_0x3e972c[_0xaf2c('0x5a')]===_0xaf2c('0x5b')){var _0x6e1837=_0xf96361[_0xaf2c('0x32')]({'plain':!![]});return db['UserProfileSection'][_0xaf2c('0x54')]({'where':{'name':_0xaf2c('0x33'),'userProfileId':_0x3e972c[_0xaf2c('0x5d')]},'raw':!![]})['then'](function(_0xc9dd21){if(_0xc9dd21&&_0xc9dd21[_0xaf2c('0x5e')]===0x0){return db[_0xaf2c('0x5f')]['create']({'name':_0x6e1837[_0xaf2c('0x36')],'resourceId':_0x6e1837['id'],'type':_0xc9dd21[_0xaf2c('0x36')],'sectionId':_0xc9dd21['id']},{})[_0xaf2c('0x1a')](function(){return _0xf96361;});}else{return _0xf96361;}})[_0xaf2c('0x25')](function(_0x491160){logger[_0xaf2c('0x21')](_0xaf2c('0x61'),_0x491160);throw _0x491160;});}return _0xf96361;})[_0xaf2c('0x1a')](respondWithResult(_0x1ead61,0xc9))['catch'](handleError(_0x1ead61,null));};exports['update']=function(_0x427ece,_0x1b7dc1,_0x5571eb){var _0x3675d9;return db[_0xaf2c('0x53')]['find']({'where':{'id':_0x427ece[_0xaf2c('0x52')]['id']}})[_0xaf2c('0x1a')](handleEntityNotFound(_0x1b7dc1,null))[_0xaf2c('0x1a')](saveUpdates(_0x427ece[_0xaf2c('0x58')],null))[_0xaf2c('0x1a')](function(_0x4af252){if(_0x4af252){_0x3675d9=_0x4af252;return db['Trunk'][_0xaf2c('0x50')]({'raw':!![]});}})[_0xaf2c('0x1a')](function(_0x55b568){if(_0x55b568){var _0x4f378e=fs[_0xaf2c('0x62')](path[_0xaf2c('0x63')](config[_0xaf2c('0x64')],_0xaf2c('0x65')),_0xaf2c('0x66'));var _0x4b9fdc=fs[_0xaf2c('0x62')](path[_0xaf2c('0x63')](config[_0xaf2c('0x64')],_0xaf2c('0x6c')),_0xaf2c('0x66'));var _0x41c707=ejs['render'](_0x4f378e,{'trunks':_0x55b568||[]});fs[_0xaf2c('0x68')](_0xaf2c('0x6d'),_0x41c707);var _0x483774=ejs['render'](_0x4b9fdc,{'trunks':_0x55b568||[]});fs['writeFileSync'](_0xaf2c('0x6a'),_0x483774);return respondWithRpcPromise(_0xaf2c('0x6e'),_0xaf2c('0x30'),{'module':_0xaf2c('0x6f')});}return null;})['then'](function(_0x19fbd5){if(_0x19fbd5){return _0x3675d9;}})[_0xaf2c('0x1a')](respondWithResult(_0x1b7dc1,null))[_0xaf2c('0x25')](handleError(_0x1b7dc1,null));};exports[_0xaf2c('0x31')]=function(_0x4ddf95,_0x1e8fc0,_0x23aeac){var _0x41590;return db[_0xaf2c('0x53')][_0xaf2c('0x54')]({'where':{'id':_0x4ddf95['params']['id']}})[_0xaf2c('0x1a')](handleEntityNotFound(_0x1e8fc0,null))[_0xaf2c('0x1a')](removeEntity(_0x1e8fc0,null))['then'](function(){return db['Trunk'][_0xaf2c('0x50')]({'raw':!![]});})[_0xaf2c('0x1a')](function(_0x5bce65){var _0x1e6a12=fs[_0xaf2c('0x62')](path[_0xaf2c('0x63')](config[_0xaf2c('0x64')],_0xaf2c('0x65')),_0xaf2c('0x66'));var _0x2a3cb4=fs[_0xaf2c('0x62')](path['join'](config[_0xaf2c('0x64')],'server/files/templates/registry.ejs'),_0xaf2c('0x66'));var _0x7724cc=ejs['render'](_0x1e6a12,{'trunks':_0x5bce65});var _0x4a9ea8=ejs[_0xaf2c('0x67')](_0x2a3cb4,{'trunks':_0x5bce65});fs[_0xaf2c('0x68')](_0xaf2c('0x6d'),_0x7724cc);fs['writeFileSync'](_0xaf2c('0x6a'),_0x4a9ea8);return respondWithRpcPromise(_0xaf2c('0x6e'),_0xaf2c('0x31'),{'module':'chan_sip.so'});})['catch'](handleError(_0x1e8fc0,null));};
\ No newline at end of file
+var _0x9bde=['fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','request','then','info','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','sendStatus','status','end','json','undefined','limit','count','set','Content-Range','apply','reject','save','update','get','Trunks','UserProfileResource','destroy','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','offset','order','sort','where','pick','filter','VIRTUAL','merge','Trunk','includeAll','findAll','rows','show','params','fields','include','options','clone','find','omit','createdAt','body','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','server/files/templates/registry.ejs','utf8','render','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','root','server/files/templates/trunk.ejs','writeFileSync','rimraf'];(function(_0x27188e,_0x2cb7b7){var _0x466456=function(_0x2b9758){while(--_0x2b9758){_0x27188e['push'](_0x27188e['shift']());}};_0x466456(++_0x2cb7b7);}(_0x9bde,0xe1));var _0xe9bd=function(_0x8fde49,_0x50d944){_0x8fde49=_0x8fde49-0x0;var _0x4e4888=_0x9bde[_0x8fde49];return _0x4e4888;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe9bd('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe9bd('0x1'));var rp=require('request-promise');var moment=require(_0xe9bd('0x2'));var BPromise=require(_0xe9bd('0x3'));var Mustache=require(_0xe9bd('0x4'));var util=require(_0xe9bd('0x5'));var path=require(_0xe9bd('0x6'));var sox=require(_0xe9bd('0x7'));var csv=require(_0xe9bd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe9bd('0x9'));var _=require(_0xe9bd('0xa'));var squel=require(_0xe9bd('0xb'));var crypto=require(_0xe9bd('0xc'));var jsforce=require(_0xe9bd('0xd'));var deskjs=require(_0xe9bd('0xe'));var toCsv=require(_0xe9bd('0x8'));var querystring=require(_0xe9bd('0xf'));var Papa=require(_0xe9bd('0x10'));var Redis=require(_0xe9bd('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe9bd('0x12'));var hardwareService=require(_0xe9bd('0x13'));var logger=require(_0xe9bd('0x14'))('api');var utils=require(_0xe9bd('0x15'));var config=require(_0xe9bd('0x16'));var licenseUtil=require(_0xe9bd('0x17'));var db=require(_0xe9bd('0x18'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xe9bd('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x220d07,_0x429e88,_0x3435b4,_0x51109f){return new BPromise(function(_0x47ba5e,_0x46a95e){var _0x248818=_0x51109f||client;return _0x248818[_0xe9bd('0x1a')](_0x220d07,_0x3435b4)[_0xe9bd('0x1b')](function(_0x3360bd){logger[_0xe9bd('0x1c')](_0xe9bd('0x1d'),_0x429e88,'request\x20sent');logger[_0xe9bd('0x1e')](_0xe9bd('0x1f'),_0x429e88,_0xe9bd('0x20'),JSON['stringify'](_0x3360bd));if(_0x3360bd[_0xe9bd('0x21')]){if(_0x3360bd[_0xe9bd('0x21')][_0xe9bd('0x22')]===0x1f4){logger[_0xe9bd('0x21')]('Trunk,\x20%s,\x20%s',_0x429e88,_0x3360bd[_0xe9bd('0x21')]['message']);return _0x46a95e(_0x3360bd[_0xe9bd('0x21')]['message']);}logger[_0xe9bd('0x21')](_0xe9bd('0x1d'),_0x429e88,_0x3360bd[_0xe9bd('0x21')][_0xe9bd('0x23')]);return _0x47ba5e(_0x3360bd[_0xe9bd('0x21')][_0xe9bd('0x23')]);}else{logger[_0xe9bd('0x1c')]('Trunk,\x20%s,\x20%s',_0x429e88,_0xe9bd('0x20'));_0x47ba5e(_0x3360bd[_0xe9bd('0x24')]['message']);}})[_0xe9bd('0x25')](function(_0x505c23){logger[_0xe9bd('0x21')](_0xe9bd('0x1d'),_0x429e88,_0x505c23);_0x46a95e(_0x505c23);});});}function respondWithStatusCode(_0x36f8c0,_0xf02209){_0xf02209=_0xf02209||0xcc;return function(_0x5bc4bf){if(_0x5bc4bf){return _0x36f8c0[_0xe9bd('0x26')](_0xf02209);}return _0x36f8c0[_0xe9bd('0x27')](_0xf02209)[_0xe9bd('0x28')]();};}function respondWithResult(_0x39b206,_0x2641be){_0x2641be=_0x2641be||0xc8;return function(_0xb52d45){if(_0xb52d45){return _0x39b206[_0xe9bd('0x27')](_0x2641be)[_0xe9bd('0x29')](_0xb52d45);}};}function respondWithFilteredResult(_0x1ae889,_0x5987af){return function(_0x3c211a){if(_0x3c211a){var _0x38fdfa=typeof _0x5987af['offset']===_0xe9bd('0x2a')&&typeof _0x5987af[_0xe9bd('0x2b')]===_0xe9bd('0x2a');var _0x429055=_0x3c211a[_0xe9bd('0x2c')];var _0x183601=_0x38fdfa?0x0:_0x5987af['offset'];var _0x5b7f1d=_0x38fdfa?_0x3c211a[_0xe9bd('0x2c')]:_0x5987af['offset']+_0x5987af[_0xe9bd('0x2b')];var _0x1f2c0e;if(_0x5b7f1d>=_0x429055){_0x5b7f1d=_0x429055;_0x1f2c0e=0xc8;}else{_0x1f2c0e=0xce;}_0x1ae889[_0xe9bd('0x27')](_0x1f2c0e);return _0x1ae889[_0xe9bd('0x2d')](_0xe9bd('0x2e'),_0x183601+'-'+_0x5b7f1d+'/'+_0x429055)['json'](_0x3c211a);}return null;};}function patchUpdates(_0x4b7bc2){return function(_0x7f2c5){try{jsonpatch[_0xe9bd('0x2f')](_0x7f2c5,_0x4b7bc2,!![]);}catch(_0x3f96a0){return BPromise[_0xe9bd('0x30')](_0x3f96a0);}return _0x7f2c5[_0xe9bd('0x31')]();};}function saveUpdates(_0x1f0f9e,_0x3c31ee){return function(_0x66213a){if(_0x66213a){return _0x66213a[_0xe9bd('0x32')](_0x1f0f9e)['then'](function(_0x426004){return _0x426004;});}return null;};}function removeEntity(_0x81a31f,_0x390a43){return function(_0x5117bc){if(_0x5117bc){return _0x5117bc['destroy']()[_0xe9bd('0x1b')](function(){var _0x2e9593=_0x5117bc[_0xe9bd('0x33')]({'plain':!![]});var _0x3ed60a=_0xe9bd('0x34');return db[_0xe9bd('0x35')][_0xe9bd('0x36')]({'where':{'type':_0x3ed60a,'resourceId':_0x2e9593['id']}})[_0xe9bd('0x1b')](function(){return _0x5117bc;});})[_0xe9bd('0x1b')](function(){_0x81a31f[_0xe9bd('0x27')](0xcc)[_0xe9bd('0x28')]();});}};}function handleEntityNotFound(_0x549dd1,_0x2ad46e){return function(_0x199477){if(!_0x199477){_0x549dd1[_0xe9bd('0x26')](0x194);}return _0x199477;};}function handleError(_0x8ff624,_0x264ba0){_0x264ba0=_0x264ba0||0x1f4;return function(_0x147da5){logger['error'](_0x147da5[_0xe9bd('0x37')]);if(_0x147da5[_0xe9bd('0x38')]){delete _0x147da5['name'];}_0x8ff624[_0xe9bd('0x27')](_0x264ba0)[_0xe9bd('0x39')](_0x147da5);};}exports['index']=function(_0x4b1da0,_0x2785e6){var _0xdf43b9={},_0x4d2f3d={},_0x2d1289={'count':0x0,'rows':[]};var _0x3ea705=_[_0xe9bd('0x3a')](db['Trunk'][_0xe9bd('0x3b')],function(_0x4d1945){return{'name':_0x4d1945[_0xe9bd('0x3c')],'type':_0x4d1945[_0xe9bd('0x3d')][_0xe9bd('0x3e')]};});_0x4d2f3d[_0xe9bd('0x3f')]=_['map'](_0x3ea705,_0xe9bd('0x38'));_0x4d2f3d[_0xe9bd('0x40')]=_[_0xe9bd('0x41')](_0x4b1da0[_0xe9bd('0x40')]);_0x4d2f3d[_0xe9bd('0x42')]=_[_0xe9bd('0x43')](_0x4d2f3d[_0xe9bd('0x3f')],_0x4d2f3d[_0xe9bd('0x40')]);_0xdf43b9[_0xe9bd('0x44')]=_[_0xe9bd('0x43')](_0x4d2f3d['model'],qs['fields'](_0x4b1da0[_0xe9bd('0x40')]['fields']));_0xdf43b9[_0xe9bd('0x44')]=_0xdf43b9[_0xe9bd('0x44')][_0xe9bd('0x45')]?_0xdf43b9['attributes']:_0x4d2f3d[_0xe9bd('0x3f')];if(!_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x46')]('nolimit')){_0xdf43b9[_0xe9bd('0x2b')]=qs[_0xe9bd('0x2b')](_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x2b')]);_0xdf43b9[_0xe9bd('0x47')]=qs[_0xe9bd('0x47')](_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x47')]);}_0xdf43b9[_0xe9bd('0x48')]=qs[_0xe9bd('0x49')](_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x49')]);_0xdf43b9[_0xe9bd('0x4a')]=qs[_0xe9bd('0x42')](_[_0xe9bd('0x4b')](_0x4b1da0['query'],_0x4d2f3d['filters']),_0x3ea705);if(_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x4c')]){_0xdf43b9[_0xe9bd('0x4a')]=_['merge'](_0xdf43b9['where'],{'$or':_[_0xe9bd('0x3a')](_0x3ea705,function(_0x3f6f22){if(_0x3f6f22[_0xe9bd('0x3d')]!==_0xe9bd('0x4d')){var _0x39fb61={};_0x39fb61[_0x3f6f22[_0xe9bd('0x38')]]={'$like':'%'+_0x4b1da0[_0xe9bd('0x40')]['filter']+'%'};return _0x39fb61;}})});}_0xdf43b9=_[_0xe9bd('0x4e')]({},_0xdf43b9,_0x4b1da0['options']);var _0x36726e={'where':_0xdf43b9[_0xe9bd('0x4a')]};return db[_0xe9bd('0x4f')][_0xe9bd('0x2c')](_0x36726e)[_0xe9bd('0x1b')](function(_0x4b7b67){_0x2d1289[_0xe9bd('0x2c')]=_0x4b7b67;if(_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x50')]){_0xdf43b9['include']=[{'all':!![]}];}return db[_0xe9bd('0x4f')][_0xe9bd('0x51')](_0xdf43b9);})[_0xe9bd('0x1b')](function(_0x5a466b){_0x2d1289[_0xe9bd('0x52')]=_0x5a466b;return _0x2d1289;})[_0xe9bd('0x1b')](respondWithFilteredResult(_0x2785e6,_0xdf43b9))[_0xe9bd('0x25')](handleError(_0x2785e6,null));};exports[_0xe9bd('0x53')]=function(_0x1ee09c,_0x579d26){var _0x3f4833={'raw':![],'where':{'id':_0x1ee09c[_0xe9bd('0x54')]['id']}},_0x4b8ff9={};_0x4b8ff9[_0xe9bd('0x3f')]=_[_0xe9bd('0x41')](db[_0xe9bd('0x4f')][_0xe9bd('0x3b')]);_0x4b8ff9['query']=_[_0xe9bd('0x41')](_0x1ee09c['query']);_0x4b8ff9[_0xe9bd('0x42')]=_[_0xe9bd('0x43')](_0x4b8ff9['model'],_0x4b8ff9['query']);_0x3f4833[_0xe9bd('0x44')]=_['intersection'](_0x4b8ff9[_0xe9bd('0x3f')],qs['fields'](_0x1ee09c[_0xe9bd('0x40')][_0xe9bd('0x55')]));_0x3f4833['attributes']=_0x3f4833[_0xe9bd('0x44')]['length']?_0x3f4833[_0xe9bd('0x44')]:_0x4b8ff9[_0xe9bd('0x3f')];if(_0x1ee09c[_0xe9bd('0x40')]['includeAll']){_0x3f4833[_0xe9bd('0x56')]=[{'all':!![]}];}_0x3f4833=_[_0xe9bd('0x4e')]({},_0x3f4833,_0x1ee09c[_0xe9bd('0x57')]);return db[_0xe9bd('0x4f')]['find'](_0x3f4833)['then'](handleEntityNotFound(_0x579d26,null))[_0xe9bd('0x1b')](respondWithResult(_0x579d26,null))['catch'](handleError(_0x579d26,null));};exports[_0xe9bd('0x58')]=function(_0x3c33b8,_0xc7dd2f){var _0xc818b4={'where':{'id':_0x3c33b8[_0xe9bd('0x54')]['id']}},_0x159f68={};_0x159f68[_0xe9bd('0x3f')]=_[_0xe9bd('0x41')](db[_0xe9bd('0x4f')][_0xe9bd('0x3b')]);_0xc818b4[_0xe9bd('0x44')]=_[_0xe9bd('0x43')](_0x159f68['model'],qs['fields'](_0x3c33b8['query'][_0xe9bd('0x55')]));_0xc818b4['attributes']=_0xc818b4[_0xe9bd('0x44')][_0xe9bd('0x45')]?_0xc818b4[_0xe9bd('0x44')]:_0x159f68[_0xe9bd('0x3f')];if(_0x3c33b8[_0xe9bd('0x40')][_0xe9bd('0x50')]){_0xc818b4[_0xe9bd('0x56')]=[{'all':!![]}];}_0xc818b4=_[_0xe9bd('0x4e')]({},_0xc818b4,_0x3c33b8[_0xe9bd('0x57')]);return db['Trunk'][_0xe9bd('0x59')](_0xc818b4)[_0xe9bd('0x1b')](handleEntityNotFound(_0xc7dd2f,null))[_0xe9bd('0x1b')](function(_0x3f848d){if(_0x3f848d){var _0x4d58c1=_0x3f848d[_0xe9bd('0x33')]({'plain':!![]});_0x4d58c1=qs[_0xe9bd('0x5a')](_0x4d58c1,['id',_0xe9bd('0x5b'),'updatedAt']);_0x3c33b8[_0xe9bd('0x5c')]=_[_0xe9bd('0x5a')](_0x3c33b8[_0xe9bd('0x5c')],['id',_0xe9bd('0x5b'),'updatedAt']);return db['Trunk'][_0xe9bd('0x5d')](_[_0xe9bd('0x4e')](_0x4d58c1,_0x3c33b8[_0xe9bd('0x5c')]),{'include':_0x3c33b8[_0xe9bd('0x40')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x305efa){var _0x20855b=_0x3c33b8[_0xe9bd('0x5e')][_0xe9bd('0x33')]({'plain':!![]});if(!_0x20855b)throw new Error(_0xe9bd('0x5f'));if(_0x20855b[_0xe9bd('0x60')]==='user'){var _0x179c8d=_0x305efa['get']({'plain':!![]});var _0x27e07c=_0xe9bd('0x34');return db[_0xe9bd('0x61')][_0xe9bd('0x59')]({'where':{'name':_0x27e07c,'userProfileId':_0x20855b['userProfileId']},'raw':!![]})[_0xe9bd('0x1b')](function(_0x263ad9){if(_0x263ad9&&_0x263ad9[_0xe9bd('0x62')]===0x0){return db['UserProfileResource'][_0xe9bd('0x5d')]({'name':_0x179c8d[_0xe9bd('0x38')],'resourceId':_0x179c8d['id'],'type':_0x263ad9[_0xe9bd('0x38')],'sectionId':_0x263ad9['id']},{})[_0xe9bd('0x1b')](function(){return _0x305efa;});}else{return _0x305efa;}})[_0xe9bd('0x25')](function(_0x16b66c){logger[_0xe9bd('0x21')](_0xe9bd('0x63'),_0x16b66c);throw _0x16b66c;});}return _0x305efa;});}})[_0xe9bd('0x1b')](respondWithResult(_0xc7dd2f,0xc9))[_0xe9bd('0x25')](handleError(_0xc7dd2f,null));};exports[_0xe9bd('0x5d')]=function(_0x37d07a,_0x5d1e4b,_0x3a12e9){var _0x9d0603;return db['Trunk'][_0xe9bd('0x5d')](_0x37d07a[_0xe9bd('0x5c')],{'raw':!![]})['then'](function(_0x561165){_0x9d0603=_0x561165;return db[_0xe9bd('0x4f')][_0xe9bd('0x51')]({'raw':!![]});})['then'](function(_0x4ec8be){var _0x4a6422=fs[_0xe9bd('0x64')](path['join'](config['root'],'server/files/templates/trunk.ejs'),'utf8');var _0x1fc88d=fs[_0xe9bd('0x64')](path[_0xe9bd('0x65')](config['root'],_0xe9bd('0x66')),_0xe9bd('0x67'));var _0x337284=ejs[_0xe9bd('0x68')](_0x4a6422,{'trunks':_0x4ec8be||[]});fs['writeFileSync'](_0xe9bd('0x69'),_0x337284);if(_0x9d0603[_0xe9bd('0x6a')]){var _0x11ebcb=ejs['render'](_0x1fc88d,{'trunks':_0x4ec8be||[]});fs['writeFileSync'](_0xe9bd('0x6b'),_0x11ebcb);}})[_0xe9bd('0x1b')](function(){return respondWithRpcPromise(_0xe9bd('0x6c'),_0xe9bd('0x5d'),{'module':_0xe9bd('0x6d')});})[_0xe9bd('0x1b')](function(){var _0x3fda4c=_0x37d07a[_0xe9bd('0x5e')]['get']({'plain':!![]});if(!_0x3fda4c)throw new Error(_0xe9bd('0x5f'));if(_0x3fda4c[_0xe9bd('0x60')]===_0xe9bd('0x5e')){var _0x3db47a=_0x9d0603[_0xe9bd('0x33')]({'plain':!![]});return db['UserProfileSection'][_0xe9bd('0x59')]({'where':{'name':'Trunks','userProfileId':_0x3fda4c['userProfileId']},'raw':!![]})[_0xe9bd('0x1b')](function(_0x4496e3){if(_0x4496e3&&_0x4496e3['autoAssociation']===0x0){return db[_0xe9bd('0x35')][_0xe9bd('0x5d')]({'name':_0x3db47a[_0xe9bd('0x38')],'resourceId':_0x3db47a['id'],'type':_0x4496e3[_0xe9bd('0x38')],'sectionId':_0x4496e3['id']},{})['then'](function(){return _0x9d0603;});}else{return _0x9d0603;}})[_0xe9bd('0x25')](function(_0x41fb41){logger['error'](_0xe9bd('0x63'),_0x41fb41);throw _0x41fb41;});}return _0x9d0603;})[_0xe9bd('0x1b')](respondWithResult(_0x5d1e4b,0xc9))[_0xe9bd('0x25')](handleError(_0x5d1e4b,null));};exports[_0xe9bd('0x32')]=function(_0x2e63c7,_0x1a36aa,_0x466a89){var _0x5e127b;return db[_0xe9bd('0x4f')][_0xe9bd('0x59')]({'where':{'id':_0x2e63c7[_0xe9bd('0x54')]['id']}})[_0xe9bd('0x1b')](handleEntityNotFound(_0x1a36aa,null))[_0xe9bd('0x1b')](saveUpdates(_0x2e63c7[_0xe9bd('0x5c')],null))[_0xe9bd('0x1b')](function(_0x2adc49){if(_0x2adc49){_0x5e127b=_0x2adc49;return db[_0xe9bd('0x4f')]['findAll']({'raw':!![]});}})[_0xe9bd('0x1b')](function(_0x466952){if(_0x466952){var _0x256890=fs[_0xe9bd('0x64')](path[_0xe9bd('0x65')](config[_0xe9bd('0x6e')],_0xe9bd('0x6f')),'utf8');var _0x18519d=fs[_0xe9bd('0x64')](path['join'](config[_0xe9bd('0x6e')],_0xe9bd('0x66')),_0xe9bd('0x67'));var _0x2083c4=ejs[_0xe9bd('0x68')](_0x256890,{'trunks':_0x466952||[]});fs[_0xe9bd('0x70')](_0xe9bd('0x69'),_0x2083c4);var _0x4f3dc6=ejs['render'](_0x18519d,{'trunks':_0x466952||[]});fs[_0xe9bd('0x70')](_0xe9bd('0x6b'),_0x4f3dc6);return respondWithRpcPromise(_0xe9bd('0x6c'),_0xe9bd('0x32'),{'module':_0xe9bd('0x6d')});}return null;})[_0xe9bd('0x1b')](function(_0x1b46f4){if(_0x1b46f4){return _0x5e127b;}})['then'](respondWithResult(_0x1a36aa,null))[_0xe9bd('0x25')](handleError(_0x1a36aa,null));};exports[_0xe9bd('0x36')]=function(_0x29833b,_0x256862,_0x14cdd5){var _0x74063;return db[_0xe9bd('0x4f')]['find']({'where':{'id':_0x29833b['params']['id']}})['then'](handleEntityNotFound(_0x256862,null))[_0xe9bd('0x1b')](removeEntity(_0x256862,null))['then'](function(){return db['Trunk']['findAll']({'raw':!![]});})[_0xe9bd('0x1b')](function(_0x402ab2){var _0xf170d4=fs[_0xe9bd('0x64')](path[_0xe9bd('0x65')](config[_0xe9bd('0x6e')],_0xe9bd('0x6f')),_0xe9bd('0x67'));var _0x14ec42=fs['readFileSync'](path[_0xe9bd('0x65')](config['root'],_0xe9bd('0x66')),_0xe9bd('0x67'));var _0x22c67f=ejs[_0xe9bd('0x68')](_0xf170d4,{'trunks':_0x402ab2});var _0x416938=ejs['render'](_0x14ec42,{'trunks':_0x402ab2});fs['writeFileSync']('/etc/asterisk/sip_xcally_trunks.conf',_0x22c67f);fs[_0xe9bd('0x70')](_0xe9bd('0x6b'),_0x416938);return respondWithRpcPromise('Reload',_0xe9bd('0x36'),{'module':_0xe9bd('0x6d')});})[_0xe9bd('0x25')](handleError(_0x256862,null));};
\ No newline at end of file
index c1b1593..772129c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11f2=['tools_trunks','util','api','bluebird','request-promise','rimraf','../../config/environment','./trunk.attributes','exports','define'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x11f2,0x169));var _0x211f=function(_0x51aa85,_0x581788){_0x51aa85=_0x51aa85-0x0;var _0x81756b=_0x11f2[_0x51aa85];return _0x81756b;};'use strict';var _=require('lodash');var util=require(_0x211f('0x0'));var logger=require('../../config/logger')(_0x211f('0x1'));var moment=require('moment');var BPromise=require(_0x211f('0x2'));var rp=require(_0x211f('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x211f('0x4'));var config=require(_0x211f('0x5'));var attributes=require(_0x211f('0x6'));module[_0x211f('0x7')]=function(_0x26347b,_0x5a20a6){return _0x26347b[_0x211f('0x8')]('Trunk',attributes,{'tableName':_0x211f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0575=['lodash','api','moment','bluebird','request-promise','rimraf','../../config/environment','./trunk.attributes','exports','define','Trunk','tools_trunks'];(function(_0x131390,_0xd0846e){var _0x550870=function(_0x13e841){while(--_0x13e841){_0x131390['push'](_0x131390['shift']());}};_0x550870(++_0xd0846e);}(_0x0575,0x150));var _0x5057=function(_0xedf8fb,_0x1f01a5){_0xedf8fb=_0xedf8fb-0x0;var _0x486ab8=_0x0575[_0xedf8fb];return _0x486ab8;};'use strict';var _=require(_0x5057('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5057('0x1'));var moment=require(_0x5057('0x2'));var BPromise=require(_0x5057('0x3'));var rp=require(_0x5057('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5057('0x5'));var config=require(_0x5057('0x6'));var attributes=require(_0x5057('0x7'));module[_0x5057('0x8')]=function(_0x33b9c3,_0xac0a62){return _0x33b9c3[_0x5057('0x9')](_0x5057('0xa'),attributes,{'tableName':_0x5057('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 29257ce..08c457a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2503=['info','Trunk,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetTrunk','Trunk','findAll','options','where','attributes','limit','include','model','map','debug','ShowTrunk','find','raw','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then'];(function(_0x39954b,_0x498d8e){var _0xccce60=function(_0x2372ff){while(--_0x2372ff){_0x39954b['push'](_0x39954b['shift']());}};_0xccce60(++_0x498d8e);}(_0x2503,0xc5));var _0x3250=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x2503[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x3250('0x0'));var util=require(_0x3250('0x1'));var moment=require(_0x3250('0x2'));var BPromise=require('bluebird');var rs=require(_0x3250('0x3'));var fs=require('fs');var Redis=require(_0x3250('0x4'));var db=require(_0x3250('0x5'))['db'];var utils=require(_0x3250('0x6'));var logger=require('../../config/logger')(_0x3250('0x7'));var config=require(_0x3250('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x3250('0x9')][_0x3250('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4525b5,_0x1c8209,_0x2c0c88){return new BPromise(function(_0x1d868b,_0x4cca10){return client[_0x3250('0xb')](_0x4525b5,_0x2c0c88)[_0x3250('0xc')](function(_0x1218a1){logger[_0x3250('0xd')](_0x3250('0xe'),_0x1c8209,_0x3250('0xf'));logger['debug']('Trunk,\x20%s,\x20%s,\x20%s',_0x1c8209,_0x3250('0xf'),JSON[_0x3250('0x10')](_0x1218a1));if(_0x1218a1['error']){if(_0x1218a1[_0x3250('0x11')][_0x3250('0x12')]===0x1f4){logger[_0x3250('0x11')](_0x3250('0xe'),_0x1c8209,_0x1218a1[_0x3250('0x11')]['message']);return _0x4cca10(_0x1218a1['error'][_0x3250('0x13')]);}logger[_0x3250('0x11')](_0x3250('0xe'),_0x1c8209,_0x1218a1[_0x3250('0x11')][_0x3250('0x13')]);return _0x1d868b(_0x1218a1[_0x3250('0x11')][_0x3250('0x13')]);}else{logger[_0x3250('0xd')](_0x3250('0xe'),_0x1c8209,_0x3250('0xf'));_0x1d868b(_0x1218a1['result'][_0x3250('0x13')]);}})[_0x3250('0x14')](function(_0xe2235a){logger['error'](_0x3250('0xe'),_0x1c8209,_0xe2235a);_0x4cca10(_0xe2235a);});});}exports[_0x3250('0x15')]=function(_0xd8006){var _0x565de8=this;return new Promise(function(_0x41840e,_0x501600){return db[_0x3250('0x16')][_0x3250('0x17')]({'raw':_0xd8006[_0x3250('0x18')]?_0xd8006['options']['raw']===undefined?!![]:![]:!![],'where':_0xd8006['options']?_0xd8006[_0x3250('0x18')][_0x3250('0x19')]||null:null,'attributes':_0xd8006[_0x3250('0x18')]?_0xd8006[_0x3250('0x18')][_0x3250('0x1a')]||null:null,'limit':_0xd8006[_0x3250('0x18')]?_0xd8006['options'][_0x3250('0x1b')]||null:null,'include':_0xd8006[_0x3250('0x18')]?_0xd8006[_0x3250('0x18')][_0x3250('0x1c')]?_['map'](_0xd8006[_0x3250('0x18')]['include'],function(_0x583800){return{'model':db[_0x583800[_0x3250('0x1d')]],'as':_0x583800['as'],'attributes':_0x583800[_0x3250('0x1a')],'include':_0x583800['include']?_['map'](_0x583800[_0x3250('0x1c')],function(_0x5a937c){return{'model':db[_0x5a937c[_0x3250('0x1d')]],'as':_0x5a937c['as'],'attributes':_0x5a937c[_0x3250('0x1a')],'include':_0x5a937c['include']?_[_0x3250('0x1e')](_0x5a937c[_0x3250('0x1c')],function(_0xe845f0){return{'model':db[_0xe845f0['model']],'as':_0xe845f0['as'],'attributes':_0xe845f0['attributes']};}):[]};}):[]};}):[]:[]})[_0x3250('0xc')](function(_0x1b8f49){logger[_0x3250('0xd')](_0x3250('0x15'),_0xd8006);logger[_0x3250('0x1f')](_0x3250('0x15'),_0xd8006,JSON[_0x3250('0x10')](_0x1b8f49));_0x41840e(_0x1b8f49);})['catch'](function(_0xb6a261){logger[_0x3250('0x11')](_0x3250('0x15'),_0xb6a261[_0x3250('0x13')],_0xd8006);_0x501600(_0x565de8[_0x3250('0x11')](0x1f4,_0xb6a261['message']));});});};exports[_0x3250('0x20')]=function(_0x4d52cd){var _0xc71d12=this;return new Promise(function(_0x40b786,_0x219ffe){return db['Trunk'][_0x3250('0x21')]({'raw':_0x4d52cd['options']?_0x4d52cd[_0x3250('0x18')][_0x3250('0x22')]===undefined?!![]:![]:!![],'where':_0x4d52cd[_0x3250('0x18')]?_0x4d52cd[_0x3250('0x18')][_0x3250('0x19')]||null:null,'attributes':_0x4d52cd[_0x3250('0x18')]?_0x4d52cd[_0x3250('0x18')][_0x3250('0x1a')]||null:null,'include':_0x4d52cd[_0x3250('0x18')]?_0x4d52cd[_0x3250('0x18')][_0x3250('0x1c')]?_[_0x3250('0x1e')](_0x4d52cd[_0x3250('0x18')][_0x3250('0x1c')],function(_0x5589f8){return{'model':db[_0x5589f8[_0x3250('0x1d')]],'as':_0x5589f8['as'],'attributes':_0x5589f8[_0x3250('0x1a')],'include':_0x5589f8[_0x3250('0x1c')]?_[_0x3250('0x1e')](_0x5589f8[_0x3250('0x1c')],function(_0x3153af){return{'model':db[_0x3153af['model']],'as':_0x3153af['as'],'attributes':_0x3153af[_0x3250('0x1a')],'include':_0x3153af[_0x3250('0x1c')]?_[_0x3250('0x1e')](_0x3153af[_0x3250('0x1c')],function(_0xfd596d){return{'model':db[_0xfd596d['model']],'as':_0xfd596d['as'],'attributes':_0xfd596d['attributes']};}):[]};}):[]};}):[]:[]})[_0x3250('0xc')](function(_0x279b61){logger[_0x3250('0xd')](_0x3250('0x20'),_0x4d52cd);logger['debug'](_0x3250('0x20'),_0x4d52cd,JSON[_0x3250('0x10')](_0x279b61));_0x40b786(_0x279b61);})[_0x3250('0x14')](function(_0x3cb6eb){logger[_0x3250('0x11')]('ShowTrunk',_0x3cb6eb[_0x3250('0x13')],_0x4d52cd);_0x219ffe(_0xc71d12[_0x3250('0x11')](0x1f4,_0x3cb6eb[_0x3250('0x13')]));});});};
\ No newline at end of file
+var _0x7c4d=['Trunk,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetTrunk','Trunk','findAll','options','raw','limit','include','map','model','attributes','find','ShowTrunk','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x411d4b,_0x8ce248){var _0x3ef5c3=function(_0x2f48cc){while(--_0x2f48cc){_0x411d4b['push'](_0x411d4b['shift']());}};_0x3ef5c3(++_0x8ce248);}(_0x7c4d,0x7b));var _0xd7c4=function(_0x4bbc90,_0x18145e){_0x4bbc90=_0x4bbc90-0x0;var _0xf6f7c2=_0x7c4d[_0x4bbc90];return _0xf6f7c2;};'use strict';var _=require(_0xd7c4('0x0'));var util=require('util');var moment=require(_0xd7c4('0x1'));var BPromise=require(_0xd7c4('0x2'));var rs=require(_0xd7c4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd7c4('0x4'))['db'];var utils=require(_0xd7c4('0x5'));var logger=require(_0xd7c4('0x6'))(_0xd7c4('0x7'));var config=require(_0xd7c4('0x8'));var jayson=require(_0xd7c4('0x9'));var client=jayson[_0xd7c4('0xa')][_0xd7c4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24e3e2,_0x15d580,_0xe05677){return new BPromise(function(_0x39fdfa,_0x331f6b){return client['request'](_0x24e3e2,_0xe05677)[_0xd7c4('0xc')](function(_0x53dec3){logger[_0xd7c4('0xd')](_0xd7c4('0xe'),_0x15d580,_0xd7c4('0xf'));logger[_0xd7c4('0x10')](_0xd7c4('0x11'),_0x15d580,_0xd7c4('0xf'),JSON[_0xd7c4('0x12')](_0x53dec3));if(_0x53dec3[_0xd7c4('0x13')]){if(_0x53dec3[_0xd7c4('0x13')]['code']===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0x15d580,_0x53dec3[_0xd7c4('0x13')][_0xd7c4('0x14')]);return _0x331f6b(_0x53dec3[_0xd7c4('0x13')][_0xd7c4('0x14')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x15d580,_0x53dec3[_0xd7c4('0x13')][_0xd7c4('0x14')]);return _0x39fdfa(_0x53dec3[_0xd7c4('0x13')][_0xd7c4('0x14')]);}else{logger[_0xd7c4('0xd')](_0xd7c4('0xe'),_0x15d580,_0xd7c4('0xf'));_0x39fdfa(_0x53dec3[_0xd7c4('0x15')]['message']);}})[_0xd7c4('0x16')](function(_0x5caa93){logger['error'](_0xd7c4('0xe'),_0x15d580,_0x5caa93);_0x331f6b(_0x5caa93);});});}exports[_0xd7c4('0x17')]=function(_0x256c91){var _0x31bb37=this;return new Promise(function(_0x2deadf,_0x1aeb41){return db[_0xd7c4('0x18')][_0xd7c4('0x19')]({'raw':_0x256c91[_0xd7c4('0x1a')]?_0x256c91['options'][_0xd7c4('0x1b')]===undefined?!![]:![]:!![],'where':_0x256c91[_0xd7c4('0x1a')]?_0x256c91[_0xd7c4('0x1a')]['where']||null:null,'attributes':_0x256c91[_0xd7c4('0x1a')]?_0x256c91[_0xd7c4('0x1a')]['attributes']||null:null,'limit':_0x256c91[_0xd7c4('0x1a')]?_0x256c91[_0xd7c4('0x1a')][_0xd7c4('0x1c')]||null:null,'include':_0x256c91[_0xd7c4('0x1a')]?_0x256c91[_0xd7c4('0x1a')][_0xd7c4('0x1d')]?_[_0xd7c4('0x1e')](_0x256c91[_0xd7c4('0x1a')][_0xd7c4('0x1d')],function(_0x3b5cba){return{'model':db[_0x3b5cba[_0xd7c4('0x1f')]],'as':_0x3b5cba['as'],'attributes':_0x3b5cba[_0xd7c4('0x20')],'include':_0x3b5cba[_0xd7c4('0x1d')]?_[_0xd7c4('0x1e')](_0x3b5cba['include'],function(_0x1117f3){return{'model':db[_0x1117f3[_0xd7c4('0x1f')]],'as':_0x1117f3['as'],'attributes':_0x1117f3[_0xd7c4('0x20')],'include':_0x1117f3[_0xd7c4('0x1d')]?_[_0xd7c4('0x1e')](_0x1117f3['include'],function(_0x35560a){return{'model':db[_0x35560a['model']],'as':_0x35560a['as'],'attributes':_0x35560a[_0xd7c4('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x26405){logger['info']('GetTrunk',_0x256c91);logger[_0xd7c4('0x10')]('GetTrunk',_0x256c91,JSON[_0xd7c4('0x12')](_0x26405));_0x2deadf(_0x26405);})['catch'](function(_0x97c381){logger[_0xd7c4('0x13')](_0xd7c4('0x17'),_0x97c381[_0xd7c4('0x14')],_0x256c91);_0x1aeb41(_0x31bb37['error'](0x1f4,_0x97c381[_0xd7c4('0x14')]));});});};exports['ShowTrunk']=function(_0x4b5a86){var _0xdc8601=this;return new Promise(function(_0x46910c,_0x5c0bf2){return db[_0xd7c4('0x18')][_0xd7c4('0x21')]({'raw':_0x4b5a86[_0xd7c4('0x1a')]?_0x4b5a86[_0xd7c4('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x4b5a86[_0xd7c4('0x1a')]?_0x4b5a86[_0xd7c4('0x1a')]['where']||null:null,'attributes':_0x4b5a86[_0xd7c4('0x1a')]?_0x4b5a86[_0xd7c4('0x1a')][_0xd7c4('0x20')]||null:null,'include':_0x4b5a86['options']?_0x4b5a86[_0xd7c4('0x1a')][_0xd7c4('0x1d')]?_[_0xd7c4('0x1e')](_0x4b5a86[_0xd7c4('0x1a')][_0xd7c4('0x1d')],function(_0x1d3e86){return{'model':db[_0x1d3e86[_0xd7c4('0x1f')]],'as':_0x1d3e86['as'],'attributes':_0x1d3e86[_0xd7c4('0x20')],'include':_0x1d3e86[_0xd7c4('0x1d')]?_[_0xd7c4('0x1e')](_0x1d3e86[_0xd7c4('0x1d')],function(_0x164da6){return{'model':db[_0x164da6[_0xd7c4('0x1f')]],'as':_0x164da6['as'],'attributes':_0x164da6[_0xd7c4('0x20')],'include':_0x164da6[_0xd7c4('0x1d')]?_[_0xd7c4('0x1e')](_0x164da6['include'],function(_0x2da28f){return{'model':db[_0x2da28f[_0xd7c4('0x1f')]],'as':_0x2da28f['as'],'attributes':_0x2da28f['attributes']};}):[]};}):[]};}):[]:[]})[_0xd7c4('0xc')](function(_0x38bf35){logger['info'](_0xd7c4('0x22'),_0x4b5a86);logger[_0xd7c4('0x10')](_0xd7c4('0x22'),_0x4b5a86,JSON[_0xd7c4('0x12')](_0x38bf35));_0x46910c(_0x38bf35);})[_0xd7c4('0x16')](function(_0x2c5265){logger[_0xd7c4('0x13')](_0xd7c4('0x22'),_0x2c5265[_0xd7c4('0x14')],_0x4b5a86);_0x5c0bf2(_0xdc8601[_0xd7c4('0x13')](0x1f4,_0x2c5265[_0xd7c4('0x14')]));});});};
\ No newline at end of file
index 3d5f6de..161be7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafa3=['/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','getScheduledCalls','/:id/api_key','getApiKey','post','/:id/contacts','addContacts','create','/create_many','addQueues','diskStorage','root','single','file','addAvatar','login','logout','pause','/:id/unpause','unpause','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','/:id/fax_interactions','addFaxInteractions','addSmsInteractions','addOpenchannelInteractions','/:id/fax_accounts','addOpenchannelAccounts','addChatWebsites','addSquareProjects','createApiKey','put','update','/:id/password','changePassword','delete','removeQueues','removeTeams','destroy','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','/:id/openchannel_interactions','/:id/whatsapp_interactions','removeWhatsappInteractions','removeMailAccounts','removeSmsAccounts','removeApiKey','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','/describe','describe','/whoami','whoami','/:id','/:id/avatar','/:id/open_tabs','getOpenTabs','getContacts','/:id/queues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xafa3,0xb0));var _0x3afa=function(_0x2b13ab,_0x3e916f){_0x2b13ab=_0x2b13ab-0x0;var _0x1c96ce=_0xafa3[_0x2b13ab];return _0x1c96ce;};'use strict';var multer=require(_0x3afa('0x0'));var util=require(_0x3afa('0x1'));var path=require(_0x3afa('0x2'));var timeout=require(_0x3afa('0x3'));var express=require(_0x3afa('0x4'));var router=express[_0x3afa('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x3afa('0x6'));var config=require(_0x3afa('0x7'));var controller=require(_0x3afa('0x8'));router[_0x3afa('0x9')]('/',auth[_0x3afa('0xa')](),controller[_0x3afa('0xb')]);router['get'](_0x3afa('0xc'),auth[_0x3afa('0xa')](),controller[_0x3afa('0xd')]);router['get'](_0x3afa('0xe'),auth[_0x3afa('0xa')](),controller[_0x3afa('0xf')]);router[_0x3afa('0x9')]('/presence',auth['isAuthenticated'](),controller['getPresence']);router['get'](_0x3afa('0x10'),auth[_0x3afa('0xa')](),controller['show']);router['get'](_0x3afa('0x11'),controller['getAvatar']);router[_0x3afa('0x9')](_0x3afa('0x12'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x13')]);router[_0x3afa('0x9')]('/:id/contacts',auth[_0x3afa('0xa')](),controller[_0x3afa('0x14')]);router['get'](_0x3afa('0x15'),auth[_0x3afa('0xa')](),controller['getQueues']);router[_0x3afa('0x9')](_0x3afa('0x16'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x17')]);router[_0x3afa('0x9')](_0x3afa('0x18'),auth['isAuthenticated'](),controller[_0x3afa('0x19')]);router[_0x3afa('0x9')](_0x3afa('0x1a'),auth['isAuthenticated'](),controller['getRecordings']);router[_0x3afa('0x9')](_0x3afa('0x1b'),auth['isAuthenticated'](),controller[_0x3afa('0x1c')]);router['get'](_0x3afa('0x1d'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x1e')]);router[_0x3afa('0x9')](_0x3afa('0x1f'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x20')]);router[_0x3afa('0x9')](_0x3afa('0x21'),auth['isAuthenticated'](),controller[_0x3afa('0x22')]);router[_0x3afa('0x9')]('/:id/sms/interactions',auth[_0x3afa('0xa')](),controller[_0x3afa('0x23')]);router[_0x3afa('0x9')](_0x3afa('0x24'),auth['isAuthenticated'](),controller[_0x3afa('0x25')]);router['get'](_0x3afa('0x26'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x27')]);router['get'](_0x3afa('0x28'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x29')]);router[_0x3afa('0x9')](_0x3afa('0x2a'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x2b')]);router[_0x3afa('0x9')](_0x3afa('0x2c'),auth['isAuthenticated'](),controller[_0x3afa('0x2d')]);router[_0x3afa('0x9')](_0x3afa('0x2e'),auth['isAuthenticated'](),controller[_0x3afa('0x2f')]);router[_0x3afa('0x9')]('/:id/fax_accounts',auth[_0x3afa('0xa')](),controller[_0x3afa('0x30')]);router[_0x3afa('0x9')](_0x3afa('0x31'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x32')]);router[_0x3afa('0x9')](_0x3afa('0x33'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x34')]);router[_0x3afa('0x9')](_0x3afa('0x35'),auth['isAuthenticated'](),controller[_0x3afa('0x36')]);router[_0x3afa('0x9')](_0x3afa('0x37'),auth[_0x3afa('0xa')](),controller['getChatWebsites']);router[_0x3afa('0x9')](_0x3afa('0x38'),auth['isAuthenticated'](),controller[_0x3afa('0x39')]);router[_0x3afa('0x9')](_0x3afa('0x3a'),auth['isAuthenticated'](),controller['getSquareProjects']);router[_0x3afa('0x9')]('/:id/scheduled_calls',auth[_0x3afa('0xa')](),controller[_0x3afa('0x3b')]);router['get'](_0x3afa('0x3c'),auth['isAuthenticated'](),controller[_0x3afa('0x3d')]);router[_0x3afa('0x3e')](_0x3afa('0x3f'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x40')]);router[_0x3afa('0x3e')]('/',auth[_0x3afa('0xa')](),controller[_0x3afa('0x41')]);router[_0x3afa('0x3e')](_0x3afa('0x42'),auth[_0x3afa('0xa')](),controller['bulkCreate']);router[_0x3afa('0x3e')]('/:id/queues',auth[_0x3afa('0xa')](),controller[_0x3afa('0x43')]);var upload=multer({'storage':multer[_0x3afa('0x44')]({'destination':function(_0x161d00,_0x2a3d88,_0x3edc74){_0x3edc74(null,path['join'](config[_0x3afa('0x45')],'server/files/images/'));},'filename':function(_0x4831e8,_0x490823,_0x480e2d){_0x480e2d(null,util['format']('%s-%s',Date['now'](),_0x490823['originalname']));}})});router['post'](_0x3afa('0x11'),upload[_0x3afa('0x46')](_0x3afa('0x47')),controller[_0x3afa('0x48')]);router['post']('/:id/login',auth[_0x3afa('0xa')](),controller[_0x3afa('0x49')]);router[_0x3afa('0x3e')]('/:id/logout',auth[_0x3afa('0xa')](),controller[_0x3afa('0x4a')]);router[_0x3afa('0x3e')]('/:id/pause',auth['isAuthenticated'](),controller[_0x3afa('0x4b')]);router['post'](_0x3afa('0x4c'),auth['isAuthenticated'](),controller[_0x3afa('0x4d')]);router[_0x3afa('0x3e')](_0x3afa('0x28'),auth['isAuthenticated'](),controller['addTeams']);router[_0x3afa('0x3e')](_0x3afa('0x4e'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x4f')]);router[_0x3afa('0x3e')](_0x3afa('0x50'),auth[_0x3afa('0xa')](),controller['addMailInteractions']);router[_0x3afa('0x3e')](_0x3afa('0x51'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x52')]);router[_0x3afa('0x3e')]('/:id/sms_interactions',auth[_0x3afa('0xa')](),controller[_0x3afa('0x53')]);router[_0x3afa('0x3e')]('/:id/openchannel_interactions',auth['isAuthenticated'](),controller[_0x3afa('0x54')]);router[_0x3afa('0x3e')]('/:id/whatsapp_interactions',auth['isAuthenticated'](),controller['addWhatsappInteractions']);router[_0x3afa('0x3e')](_0x3afa('0x55'),auth['isAuthenticated'](),controller['addFaxAccounts']);router['post'](_0x3afa('0x31'),auth[_0x3afa('0xa')](),controller['addMailAccounts']);router['post'](_0x3afa('0x33'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x56')]);router[_0x3afa('0x3e')]('/:id/sms_accounts',auth[_0x3afa('0xa')](),controller['addSmsAccounts']);router[_0x3afa('0x3e')](_0x3afa('0x37'),auth['isAuthenticated'](),controller[_0x3afa('0x57')]);router[_0x3afa('0x3e')]('/:id/whatsapp_accounts',auth['isAuthenticated'](),controller['addWhatsappAccounts']);router[_0x3afa('0x3e')](_0x3afa('0x3a'),auth['isAuthenticated'](),controller[_0x3afa('0x58')]);router[_0x3afa('0x3e')]('/:id/api_key',auth[_0x3afa('0xa')](),controller[_0x3afa('0x59')]);router[_0x3afa('0x5a')](_0x3afa('0x10'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x5b')]);router['put'](_0x3afa('0x5c'),auth['isAuthenticated'](),controller[_0x3afa('0x5d')]);router[_0x3afa('0x5e')](_0x3afa('0x15'),auth['isAuthenticated'](),controller[_0x3afa('0x5f')]);router[_0x3afa('0x5e')](_0x3afa('0x28'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x60')]);router[_0x3afa('0x5e')](_0x3afa('0x10'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x61')]);router[_0x3afa('0x5e')]('/:id/chat_interactions',auth[_0x3afa('0xa')](),controller['removeChatInteractions']);router[_0x3afa('0x5e')]('/:id/mail_interactions',auth[_0x3afa('0xa')](),controller[_0x3afa('0x62')]);router[_0x3afa('0x5e')](_0x3afa('0x51'),auth['isAuthenticated'](),controller[_0x3afa('0x63')]);router[_0x3afa('0x5e')]('/:id/sms_interactions',auth[_0x3afa('0xa')](),controller[_0x3afa('0x64')]);router[_0x3afa('0x5e')](_0x3afa('0x65'),auth[_0x3afa('0xa')](),controller['removeOpenchannelInteractions']);router[_0x3afa('0x5e')](_0x3afa('0x66'),auth['isAuthenticated'](),controller[_0x3afa('0x67')]);router[_0x3afa('0x5e')](_0x3afa('0x55'),auth[_0x3afa('0xa')](),controller['removeFaxAccounts']);router[_0x3afa('0x5e')](_0x3afa('0x31'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x68')]);router[_0x3afa('0x5e')](_0x3afa('0x33'),auth[_0x3afa('0xa')](),controller['removeOpenchannelAccounts']);router['delete'](_0x3afa('0x35'),auth['isAuthenticated'](),controller[_0x3afa('0x69')]);router[_0x3afa('0x5e')](_0x3afa('0x37'),auth[_0x3afa('0xa')](),controller['removeChatWebsites']);router[_0x3afa('0x5e')](_0x3afa('0x38'),auth[_0x3afa('0xa')](),controller['removeWhatsappAccounts']);router[_0x3afa('0x5e')](_0x3afa('0x3a'),auth['isAuthenticated'](),controller['removeSquareProjects']);router[_0x3afa('0x5e')](_0x3afa('0x3c'),auth[_0x3afa('0xa')](),controller[_0x3afa('0x6a')]);module[_0x3afa('0x6b')]=router;
\ No newline at end of file
+var _0x7ff6=['/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','post','create','/create_many','addQueues','join','server/files/images/','format','%s-%s','now','originalname','addAvatar','/:id/login','login','/:id/logout','logout','/:id/pause','pause','/:id/unpause','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','/:id/sms_interactions','/:id/whatsapp_interactions','/:id/mail_accounts','addMailAccounts','addOpenchannelAccounts','addChatWebsites','addWhatsappAccounts','addSquareProjects','put','/:id/password','changePassword','delete','removeTeams','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','/:id/openchannel_interactions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','/:id/api_key','removeApiKey','exports','util','path','fs-extra','../../components/auth/service','../../config/environment','./user.controller','get','isAuthenticated','index','/describe','describe','/whoami','whoami','/:id','show','/:id/avatar','getAvatar','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','/:id/chat/interactions','getChatInteractions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getFaxInteractions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','getMailAccounts','/:id/openchannel_accounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites'];(function(_0x5dca2b,_0x218372){var _0x20097c=function(_0x22e9a3){while(--_0x22e9a3){_0x5dca2b['push'](_0x5dca2b['shift']());}};_0x20097c(++_0x218372);}(_0x7ff6,0x1e4));var _0x67ff=function(_0x23fc0c,_0x53ce48){_0x23fc0c=_0x23fc0c-0x0;var _0x1f6c3a=_0x7ff6[_0x23fc0c];return _0x1f6c3a;};'use strict';var multer=require('multer');var util=require(_0x67ff('0x0'));var path=require(_0x67ff('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x67ff('0x2'));var auth=require(_0x67ff('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x67ff('0x4'));var controller=require(_0x67ff('0x5'));router[_0x67ff('0x6')]('/',auth[_0x67ff('0x7')](),controller[_0x67ff('0x8')]);router[_0x67ff('0x6')](_0x67ff('0x9'),auth[_0x67ff('0x7')](),controller[_0x67ff('0xa')]);router['get'](_0x67ff('0xb'),auth[_0x67ff('0x7')](),controller[_0x67ff('0xc')]);router[_0x67ff('0x6')]('/presence',auth[_0x67ff('0x7')](),controller['getPresence']);router['get'](_0x67ff('0xd'),auth['isAuthenticated'](),controller[_0x67ff('0xe')]);router['get'](_0x67ff('0xf'),controller[_0x67ff('0x10')]);router[_0x67ff('0x6')]('/:id/open_tabs',auth[_0x67ff('0x7')](),controller[_0x67ff('0x11')]);router[_0x67ff('0x6')](_0x67ff('0x12'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x13')]);router[_0x67ff('0x6')](_0x67ff('0x14'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x15')]);router[_0x67ff('0x6')]('/:id/queues_rt',auth[_0x67ff('0x7')](),controller[_0x67ff('0x16')]);router['get'](_0x67ff('0x17'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x18')]);router[_0x67ff('0x6')](_0x67ff('0x19'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x1a')]);router[_0x67ff('0x6')](_0x67ff('0x1b'),auth['isAuthenticated'](),controller['getScreenRecordings']);router[_0x67ff('0x6')](_0x67ff('0x1c'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x1d')]);router['get']('/:id/openchannel/interactions',auth['isAuthenticated'](),controller[_0x67ff('0x1e')]);router['get'](_0x67ff('0x1f'),auth['isAuthenticated'](),controller[_0x67ff('0x20')]);router['get'](_0x67ff('0x21'),auth['isAuthenticated'](),controller['getSmsInteractions']);router['get']('/:id/fax/interactions',auth[_0x67ff('0x7')](),controller[_0x67ff('0x22')]);router['get']('/:id/whatsapp/interactions',auth[_0x67ff('0x7')](),controller[_0x67ff('0x23')]);router[_0x67ff('0x6')](_0x67ff('0x24'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x25')]);router[_0x67ff('0x6')](_0x67ff('0x26'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x27')]);router['get']('/:id/agents',auth[_0x67ff('0x7')](),controller[_0x67ff('0x28')]);router[_0x67ff('0x6')](_0x67ff('0x29'),auth['isAuthenticated'](),controller[_0x67ff('0x2a')]);router[_0x67ff('0x6')](_0x67ff('0x2b'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x2c')]);router[_0x67ff('0x6')]('/:id/mail_accounts',auth['isAuthenticated'](),controller[_0x67ff('0x2d')]);router[_0x67ff('0x6')](_0x67ff('0x2e'),auth[_0x67ff('0x7')](),controller['getOpenchannelAccounts']);router['get'](_0x67ff('0x2f'),auth['isAuthenticated'](),controller[_0x67ff('0x30')]);router[_0x67ff('0x6')](_0x67ff('0x31'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x32')]);router[_0x67ff('0x6')](_0x67ff('0x33'),auth['isAuthenticated'](),controller[_0x67ff('0x34')]);router[_0x67ff('0x6')](_0x67ff('0x35'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x36')]);router[_0x67ff('0x6')](_0x67ff('0x37'),auth['isAuthenticated'](),controller[_0x67ff('0x38')]);router[_0x67ff('0x6')]('/:id/api_key',auth[_0x67ff('0x7')](),controller['getApiKey']);router['post'](_0x67ff('0x12'),auth[_0x67ff('0x7')](),controller['addContacts']);router[_0x67ff('0x39')]('/',auth['isAuthenticated'](),controller[_0x67ff('0x3a')]);router[_0x67ff('0x39')](_0x67ff('0x3b'),auth['isAuthenticated'](),controller['bulkCreate']);router[_0x67ff('0x39')](_0x67ff('0x14'),auth['isAuthenticated'](),controller[_0x67ff('0x3c')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x92337b,_0x40bd3e,_0x574333){_0x574333(null,path[_0x67ff('0x3d')](config['root'],_0x67ff('0x3e')));},'filename':function(_0x181ff3,_0x1ac33e,_0x5d3eef){_0x5d3eef(null,util[_0x67ff('0x3f')](_0x67ff('0x40'),Date[_0x67ff('0x41')](),_0x1ac33e[_0x67ff('0x42')]));}})});router['post'](_0x67ff('0xf'),upload['single']('file'),controller[_0x67ff('0x43')]);router[_0x67ff('0x39')](_0x67ff('0x44'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x45')]);router[_0x67ff('0x39')](_0x67ff('0x46'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x47')]);router[_0x67ff('0x39')](_0x67ff('0x48'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x49')]);router[_0x67ff('0x39')](_0x67ff('0x4a'),auth[_0x67ff('0x7')](),controller['unpause']);router[_0x67ff('0x39')]('/:id/teams',auth['isAuthenticated'](),controller['addTeams']);router[_0x67ff('0x39')](_0x67ff('0x4b'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x4c')]);router[_0x67ff('0x39')](_0x67ff('0x4d'),auth['isAuthenticated'](),controller[_0x67ff('0x4e')]);router[_0x67ff('0x39')](_0x67ff('0x4f'),auth['isAuthenticated'](),controller['addFaxInteractions']);router[_0x67ff('0x39')](_0x67ff('0x50'),auth[_0x67ff('0x7')](),controller['addSmsInteractions']);router[_0x67ff('0x39')]('/:id/openchannel_interactions',auth[_0x67ff('0x7')](),controller['addOpenchannelInteractions']);router[_0x67ff('0x39')](_0x67ff('0x51'),auth[_0x67ff('0x7')](),controller['addWhatsappInteractions']);router['post'](_0x67ff('0x2b'),auth[_0x67ff('0x7')](),controller['addFaxAccounts']);router[_0x67ff('0x39')](_0x67ff('0x52'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x53')]);router[_0x67ff('0x39')](_0x67ff('0x2e'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x54')]);router[_0x67ff('0x39')](_0x67ff('0x2f'),auth[_0x67ff('0x7')](),controller['addSmsAccounts']);router['post'](_0x67ff('0x31'),auth['isAuthenticated'](),controller[_0x67ff('0x55')]);router['post'](_0x67ff('0x33'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x56')]);router[_0x67ff('0x39')]('/:id/square_projects',auth['isAuthenticated'](),controller[_0x67ff('0x57')]);router['post']('/:id/api_key',auth[_0x67ff('0x7')](),controller['createApiKey']);router[_0x67ff('0x58')](_0x67ff('0xd'),auth[_0x67ff('0x7')](),controller['update']);router[_0x67ff('0x58')](_0x67ff('0x59'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x5a')]);router['delete'](_0x67ff('0x14'),auth[_0x67ff('0x7')](),controller['removeQueues']);router[_0x67ff('0x5b')](_0x67ff('0x24'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x5c')]);router['delete'](_0x67ff('0xd'),auth['isAuthenticated'](),controller['destroy']);router['delete'](_0x67ff('0x4b'),auth[_0x67ff('0x7')](),controller['removeChatInteractions']);router['delete'](_0x67ff('0x4d'),auth['isAuthenticated'](),controller[_0x67ff('0x5d')]);router[_0x67ff('0x5b')](_0x67ff('0x4f'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x5e')]);router[_0x67ff('0x5b')]('/:id/sms_interactions',auth[_0x67ff('0x7')](),controller[_0x67ff('0x5f')]);router[_0x67ff('0x5b')](_0x67ff('0x60'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x61')]);router[_0x67ff('0x5b')](_0x67ff('0x51'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x62')]);router[_0x67ff('0x5b')](_0x67ff('0x2b'),auth['isAuthenticated'](),controller[_0x67ff('0x63')]);router['delete'](_0x67ff('0x52'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x64')]);router[_0x67ff('0x5b')](_0x67ff('0x2e'),auth['isAuthenticated'](),controller[_0x67ff('0x65')]);router[_0x67ff('0x5b')](_0x67ff('0x2f'),auth['isAuthenticated'](),controller[_0x67ff('0x66')]);router[_0x67ff('0x5b')](_0x67ff('0x31'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x67')]);router[_0x67ff('0x5b')](_0x67ff('0x33'),auth[_0x67ff('0x7')](),controller['removeWhatsappAccounts']);router[_0x67ff('0x5b')](_0x67ff('0x35'),auth[_0x67ff('0x7')](),controller['removeSquareProjects']);router['delete'](_0x67ff('0x68'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x69')]);module[_0x67ff('0x6a')]=router;
\ No newline at end of file
index 07fd4f6..6252197 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6726=['ulaw;alaw;gsm','allow','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','accept','refuse','originate','uac','uas','fingerprint','certificate','active','passive','actpass','nonat','update','update,nonat','DATE','TEXT','showWebBar','isArray','wss','encryption','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','avpf','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','true','screenrecording','blocked','blockedAt','UNSIGNED','moment','util','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','ENUM','admin','user','agent','telephone','local','INTEGER','BOOLEAN','dynamic','peer','friend','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','udp','transport','join','split','rfc2833','info','inband','auto','yes','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'];(function(_0x155876,_0x4bd08b){var _0x1f3c09=function(_0xddc409){while(--_0xddc409){_0x155876['push'](_0x155876['shift']());}};_0x1f3c09(++_0x4bd08b);}(_0x6726,0xdb));var _0x6672=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x6726[_0xbca1b1];return _0x4e1686;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x6672('0x0'));var util=require(_0x6672('0x1'));var _=require('lodash');module[_0x6672('0x2')]={'name':{'type':Sequelize[_0x6672('0x3')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x122ae0){this['setDataValue'](_0x6672('0x4'),_0x122ae0);this[_0x6672('0x5')](_0x6672('0x6'),_0x122ae0);},'comment':_0x6672('0x7')},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0xa1d3b7){this[_0x6672('0x5')](_0x6672('0x8'),_0xa1d3b7);this[_0x6672('0x5')](_0x6672('0x9'),util[_0x6672('0xa')](_0x6672('0xb'),_0xa1d3b7,this[_0x6672('0xc')](_0x6672('0xd'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x6672('0x3')],'allowNull':![],'unique':_0x6672('0xe'),'validate':{'isEmail':!![]},'set':function(_0x502ee3){if(_0x502ee3){this[_0x6672('0x5')](_0x6672('0xe'),_0x502ee3[_0x6672('0xf')]());}}},'role':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x11'),_0x6672('0x12'),_0x6672('0x13'),_0x6672('0x14')),'allowNull':![]},'password':{'type':Sequelize[_0x6672('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0x6672('0x15')},'internal':{'type':Sequelize[_0x6672('0x16')](0xb),'allowNull':![],'unique':_0x6672('0xd'),'set':function(_0x40f310){this[_0x6672('0x5')](_0x6672('0xd'),_0x40f310);this[_0x6672('0x5')]('accountcode',_0x40f310);this[_0x6672('0x5')](_0x6672('0x9'),util[_0x6672('0xa')](_0x6672('0xb'),this[_0x6672('0xc')](_0x6672('0x8')),_0x40f310));}},'salt':{'type':Sequelize[_0x6672('0x3')]},'phone':{'type':Sequelize[_0x6672('0x3')]},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize[_0x6672('0x3')]},'zipcode':{'type':Sequelize[_0x6672('0x3')]},'userpic':{'type':Sequelize[_0x6672('0x3')]},'city':{'type':Sequelize[_0x6672('0x3')]},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'chatPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x6672('0x3')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize[_0x6672('0x16')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x6672('0x16')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x6672('0x16')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x6672('0x16')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x6672('0x16')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x6672('0x16')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x6672('0x17')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x6672('0x16')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x6672('0x16')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x6672('0x16')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'description':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'host':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![],'defaultValue':_0x6672('0x18')},'ipaddr':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'port':{'type':Sequelize['INTEGER'](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x6672('0x16')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'useragent':{'type':Sequelize['STRING'],'allowNull':!![]},'lastms':{'type':Sequelize[_0x6672('0x16')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM']('friend','user',_0x6672('0x19')),'allowNull':!![],'defaultValue':_0x6672('0x1a')},'context':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![],'defaultValue':_0x6672('0x1b')},'callingpres':{'type':Sequelize['ENUM'](_0x6672('0x1c'),'ALLOWED_PASSED_SCREEN',_0x6672('0x1d'),_0x6672('0x1e'),_0x6672('0x1f'),'PROHIB_PASSED_SCREEN',_0x6672('0x20'),'PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'permit':{'type':Sequelize['STRING'],'allowNull':!![]},'secret':{'type':Sequelize['STRING'],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'transport':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![],'defaultValue':_0x6672('0x21'),'set':function(_0x747cbb){this[_0x6672('0x5')](_0x6672('0x22'),_0x747cbb?_0x747cbb[_0x6672('0x23')](','):null);},'get':function(){return this[_0x6672('0xc')](_0x6672('0x22'))?this[_0x6672('0xc')]('transport')[_0x6672('0x24')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x25'),_0x6672('0x26'),'shortinfo',_0x6672('0x27'),_0x6672('0x28')),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize['ENUM']('yes','no','nonat','update','outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0x6672('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![],'defaultValue':_0x6672('0x2a'),'set':function(_0x4a0926){this[_0x6672('0x5')](_0x6672('0x2b'),_0x4a0926?_0x4a0926['join'](','):null);},'get':function(){return this[_0x6672('0xc')]('nat')?this[_0x6672('0xc')]('nat')['split'](','):null;},'comment':_0x6672('0x2c')},'callgroup':{'type':Sequelize[_0x6672('0x3')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x6672('0x3')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x6672('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x6672('0x3')]},'disallow':{'type':Sequelize[_0x6672('0x3')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x6672('0x2d'),'set':function(_0xaa394a){this[_0x6672('0x5')]('allow',_0xaa394a?_0xaa394a['join'](';'):'ulaw;alaw;gsm');},'get':function(){return this['getDataValue'](_0x6672('0x2e'))?this[_0x6672('0xc')](_0x6672('0x2e'))['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x29'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![],'set':function(_0x219f45){this['setDataValue'](_0x6672('0x2f'),_0x219f45?_0x219f45['join'](','):null);},'get':function(){return this[_0x6672('0xc')](_0x6672('0x2f'))?this['getDataValue']('insecure')['split'](','):null;},'comment':_0x6672('0x30')},'trustrpid':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x6672('0x10')]('yes','no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x6672('0x10')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x29'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x6672('0x16')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![],'defaultValue':_0x6672('0x31')},'amaflags':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'callcounter':{'type':Sequelize['ENUM'](_0x6672('0x29'),'no'),'allowNull':!![],'defaultValue':_0x6672('0x29')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM'](_0x6672('0x29'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x29'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x29'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x29'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'template':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0x6672('0x29'),'no','always'),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x6672('0x16')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x6672('0x29'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x32'),_0x6672('0x33'),_0x6672('0x34')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x6672('0x16')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x35'),'uas'),'allowNull':!![],'defaultValue':_0x6672('0x36')},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x29'),'no'),'allowNull':!![],'defaultValue':_0x6672('0x29')},'keepalive':{'type':Sequelize[_0x6672('0x16')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x6672('0x16')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x6672('0x16')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x6672('0x16')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x6672('0x16')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize['STRING'],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x6672('0x16')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x6672('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x29'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x29'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x6672('0x10')]('yes','no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize['ENUM'](_0x6672('0x29'),'no',_0x6672('0x37'),_0x6672('0x38')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x6672('0x16')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x39'),_0x6672('0x3a'),_0x6672('0x3b')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x6672('0x10')](_0x6672('0x29'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0x6672('0x29'),'no',_0x6672('0x3c'),_0x6672('0x3d'),_0x6672('0x3e')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize[_0x6672('0x3f')]},'passwordResetAt':{'type':Sequelize[_0x6672('0x3f')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x6672('0x40')]},'showWebBar':{'type':Sequelize[_0x6672('0x16')],'defaultValue':0x0,'set':function(_0x95facd){this[_0x6672('0x5')](_0x6672('0x41'),_0x95facd);var _0x24f377=this['get']({'plain':!![]});switch(_0x95facd){case 0x0:case 0x1:var _0xd97a22=_0x24f377[_0x6672('0x22')]?_[_0x6672('0x42')](_0x24f377[_0x6672('0x22')])?_0x24f377['transport'][_0x6672('0x23')]():_0x24f377[_0x6672('0x22')]:_0x6672('0x21');if(_0xd97a22===_0x6672('0x43')){_0xd97a22='udp';}this[_0x6672('0x5')](_0x6672('0x22'),_0xd97a22);this[_0x6672('0x5')](_0x6672('0x44'),'no');this['setDataValue']('avpf',null);this[_0x6672('0x5')](_0x6672('0x45'),null);this['setDataValue'](_0x6672('0x46'),null);this[_0x6672('0x5')](_0x6672('0x47'),null);this[_0x6672('0x5')](_0x6672('0x48'),null);this[_0x6672('0x5')](_0x6672('0x49'),null);this[_0x6672('0x5')](_0x6672('0x4a'),null);this[_0x6672('0x5')](_0x6672('0x4b'),null);this[_0x6672('0x5')](_0x6672('0x4c'),'no');break;case 0x2:this[_0x6672('0x5')](_0x6672('0x22'),_0x6672('0x43'));this[_0x6672('0x5')]('encryption',_0x6672('0x29'));this[_0x6672('0x5')](_0x6672('0x4d'),_0x6672('0x29'));this[_0x6672('0x5')](_0x6672('0x45'),_0x6672('0x29'));this[_0x6672('0x5')](_0x6672('0x46'),'yes');this[_0x6672('0x5')](_0x6672('0x47'),_0x6672('0x29'));this[_0x6672('0x5')](_0x6672('0x48'),'no');this['setDataValue']('dtlssetup','actpass');this[_0x6672('0x5')](_0x6672('0x4a'),_0x24f377[_0x6672('0x4a')]||_0x6672('0x4e'));this['setDataValue'](_0x6672('0x4b'),_0x24f377['dtlsprivatekey']||_0x6672('0x4f'));this[_0x6672('0x5')]('rtcp_mux',_0x6672('0x29'));break;default:}}},'permissions':{'type':Sequelize[_0x6672('0x40')],'set':function(_0x44fc61){this[_0x6672('0x5')]('permissions',_0x44fc61?_0x44fc61[_0x6672('0x23')](','):[]);},'get':function(){return this[_0x6672('0xc')](_0x6672('0x50'))?_[_0x6672('0x51')](this[_0x6672('0xc')](_0x6672('0x50'))[_0x6672('0x24')](','),function(_0x669838){return parseInt(_0x669838,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x6672('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x6672('0x3')]},'phoneBarBusyNumber':{'type':Sequelize[_0x6672('0x3')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x6672('0x17')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x6672('0x17')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x6672('0x16')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x6672('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x6672('0x16')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x6672('0x3')]},'phoneBarEnableJaws':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x6672('0x52')],'get':function(){return this[_0x6672('0xc')]('phoneBarEnableScreenRecordingByAgent')?this[_0x6672('0xc')]('phoneBarEnableScreenRecordingByAgent'):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'interface':{'type':Sequelize[_0x6672('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x6672('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![],'set':function(_0x2fbb93){if(typeof _0x2fbb93==='string'){var _0x2c4047=_0x2fbb93==='1'?!![]:_0x2fbb93==='0'?![]:_0x2fbb93===_0x6672('0x53')?!![]:_0x2fbb93==='false'?![]:![];this[_0x6672('0x5')](_0x6672('0x54'),_0x2c4047);}else{this[_0x6672('0x5')]('screenrecording',_0x2fbb93);}}},'blocked':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![],'set':function(_0x5bd6eb){this[_0x6672('0x5')](_0x6672('0x55'),_0x5bd6eb);if(_0x5bd6eb===!![]){this['setDataValue']('blockedAt',moment());this[_0x6672('0x5')]('loginAttempts',0x0);}else{this[_0x6672('0x5')](_0x6672('0x56'),null);}}},'blockedAt':{'type':Sequelize[_0x6672('0x3f')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x6672('0x17')],'defaultValue':!![]},'wssPort':{'type':Sequelize['INTEGER'](0x5)[_0x6672('0x57')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x6672('0x17')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x6672('0x17')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x6672('0x17')],'defaultValue':![]}};
\ No newline at end of file
+var _0x3974=['permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','sequelize','moment','util','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','callerid','format','getDataValue','internal','email','ENUM','admin','user','telephone','INTEGER','accountcode','DATE','BOOLEAN','dynamic','friend','from-sip','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','join','rfc2833','info','shortinfo','inband','auto','nonat','update','outgoing','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','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]','yes','never','\x22\x22\x20<>','always','refuse','originate','uac','uas','passive','TEXT','showWebBar','get','isArray','wss','avpf','force_avp','dtlsenable','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','encryption','icesupport','dtlsverify','actpass','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key'];(function(_0x4a73ae,_0x576600){var _0x729796=function(_0x484881){while(--_0x484881){_0x4a73ae['push'](_0x4a73ae['shift']());}};_0x729796(++_0x576600);}(_0x3974,0xbc));var _0x4397=function(_0x2e2ba7,_0x438938){_0x2e2ba7=_0x2e2ba7-0x0;var _0x157e57=_0x3974[_0x2e2ba7];return _0x157e57;};'use strict';var Sequelize=require(_0x4397('0x0'));var moment=require(_0x4397('0x1'));var util=require(_0x4397('0x2'));var _=require('lodash');module['exports']={'name':{'type':Sequelize[_0x4397('0x3')],'allowNull':![],'unique':_0x4397('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x9db237){this[_0x4397('0x5')](_0x4397('0x4'),_0x9db237);this['setDataValue'](_0x4397('0x6'),_0x9db237);},'comment':_0x4397('0x7')},'fullname':{'type':Sequelize[_0x4397('0x3')],'allowNull':![],'set':function(_0x391ea0){this['setDataValue'](_0x4397('0x8'),_0x391ea0);this[_0x4397('0x5')](_0x4397('0x9'),util[_0x4397('0xa')]('\x22%s\x22\x20<%s>',_0x391ea0,this[_0x4397('0xb')](_0x4397('0xc'))));}},'alias':{'type':Sequelize[_0x4397('0x3')]},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':'email','validate':{'isEmail':!![]},'set':function(_0x41d0da){if(_0x41d0da){this[_0x4397('0x5')](_0x4397('0xd'),_0x41d0da['toLowerCase']());}}},'role':{'type':Sequelize[_0x4397('0xe')](_0x4397('0xf'),_0x4397('0x10'),'agent',_0x4397('0x11')),'allowNull':![]},'password':{'type':Sequelize[_0x4397('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x4397('0x3')],'defaultValue':'local'},'internal':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':![],'unique':'internal','set':function(_0x3b7b4a){this['setDataValue'](_0x4397('0xc'),_0x3b7b4a);this[_0x4397('0x5')](_0x4397('0x13'),_0x3b7b4a);this[_0x4397('0x5')](_0x4397('0x9'),util[_0x4397('0xa')]('\x22%s\x22\x20<%s>',this[_0x4397('0xb')](_0x4397('0x8')),_0x3b7b4a));}},'salt':{'type':Sequelize[_0x4397('0x3')]},'phone':{'type':Sequelize[_0x4397('0x3')]},'mobile':{'type':Sequelize[_0x4397('0x3')]},'address':{'type':Sequelize[_0x4397('0x3')]},'zipcode':{'type':Sequelize[_0x4397('0x3')]},'userpic':{'type':Sequelize[_0x4397('0x3')]},'city':{'type':Sequelize[_0x4397('0x3')]},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x4397('0x14')]},'voicePause':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize[_0x4397('0x12')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x4397('0x12')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x4397('0x12')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x4397('0x12')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x4397('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x4397('0x12')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x4397('0x12')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'description':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'host':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![],'defaultValue':_0x4397('0x16')},'ipaddr':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'port':{'type':Sequelize[_0x4397('0x12')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x17'),'user','peer'),'allowNull':!![],'defaultValue':_0x4397('0x17')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x4397('0x18')},'callingpres':{'type':Sequelize[_0x4397('0xe')]('ALLOWED_NOT_SCREENED',_0x4397('0x19'),_0x4397('0x1a'),_0x4397('0x1b'),'PROHIB_NOT_SCREENED',_0x4397('0x1c'),_0x4397('0x1d'),_0x4397('0x1e')),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'secret':{'type':Sequelize['STRING'],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![],'defaultValue':_0x4397('0x1f'),'set':function(_0x338519){this[_0x4397('0x5')](_0x4397('0x20'),_0x338519?_0x338519[_0x4397('0x21')](','):null);},'get':function(){return this['getDataValue'](_0x4397('0x20'))?this[_0x4397('0xb')]('transport')['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x22'),_0x4397('0x23'),_0x4397('0x24'),_0x4397('0x25'),_0x4397('0x26')),'allowNull':!![],'defaultValue':_0x4397('0x22')},'directmedia':{'type':Sequelize['ENUM']('yes','no',_0x4397('0x27'),_0x4397('0x28'),_0x4397('0x29')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x4397('0xe')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![],'defaultValue':_0x4397('0x2a'),'set':function(_0x4d88ad){this[_0x4397('0x5')](_0x4397('0x2b'),_0x4d88ad?_0x4d88ad['join'](','):null);},'get':function(){return this[_0x4397('0xb')](_0x4397('0x2b'))?this[_0x4397('0xb')]('nat')['split'](','):null;},'comment':_0x4397('0x2c')},'callgroup':{'type':Sequelize[_0x4397('0x3')]},'namedcallgroup':{'type':Sequelize[_0x4397('0x3')]},'pickupgroup':{'type':Sequelize[_0x4397('0x3')]},'namedpickupgroup':{'type':Sequelize[_0x4397('0x3')]},'language':{'type':Sequelize[_0x4397('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x4397('0x2d')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x4397('0x2e'),'set':function(_0x9d5070){this[_0x4397('0x5')](_0x4397('0x2f'),_0x9d5070?_0x9d5070[_0x4397('0x21')](';'):_0x4397('0x2e'));},'get':function(){return this['getDataValue'](_0x4397('0x2f'))?this[_0x4397('0xb')]('allow')[_0x4397('0x30')](';'):null;},'comment':_0x4397('0x31')},'autoframing':{'type':Sequelize[_0x4397('0xe')]('yes','no'),'allowNull':!![]},'insecure':{'type':Sequelize['STRING'],'allowNull':!![],'set':function(_0x1fb51f){this['setDataValue'](_0x4397('0x32'),_0x1fb51f?_0x1fb51f[_0x4397('0x21')](','):null);},'get':function(){return this[_0x4397('0xb')](_0x4397('0x32'))?this['getDataValue'](_0x4397('0x32'))[_0x4397('0x30')](','):null;},'comment':_0x4397('0x33')},'trustrpid':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x4397('0xe')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no',_0x4397('0x35')),'allowNull':!![]},'promiscredir':{'type':Sequelize['ENUM'](_0x4397('0x34'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![],'defaultValue':_0x4397('0x36')},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![],'defaultValue':_0x4397('0x34')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'template':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM']('yes','no',_0x4397('0x37')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x4397('0xe')]('accept',_0x4397('0x38'),_0x4397('0x39')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x3a'),_0x4397('0x3b')),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize['STRING'],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x4397('0x34'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0x4397('0x34'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x4397('0xe')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0x4397('0x34'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no','fingerprint','certificate'),'allowNull':!![]},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x4397('0xe')]('active',_0x4397('0x3c'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no',_0x4397('0x27'),_0x4397('0x28'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x4397('0x3')]},'resetPasswordExpires':{'type':Sequelize[_0x4397('0x14')]},'passwordResetAt':{'type':Sequelize[_0x4397('0x14')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x4397('0x3d')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x22afd2){this['setDataValue'](_0x4397('0x3e'),_0x22afd2);var _0x143b20=this[_0x4397('0x3f')]({'plain':!![]});switch(_0x22afd2){case 0x0:case 0x1:var _0x1e1529=_0x143b20[_0x4397('0x20')]?_[_0x4397('0x40')](_0x143b20[_0x4397('0x20')])?_0x143b20[_0x4397('0x20')][_0x4397('0x21')]():_0x143b20[_0x4397('0x20')]:'udp';if(_0x1e1529===_0x4397('0x41')){_0x1e1529=_0x4397('0x1f');}this[_0x4397('0x5')](_0x4397('0x20'),_0x1e1529);this[_0x4397('0x5')]('encryption','no');this[_0x4397('0x5')](_0x4397('0x42'),null);this['setDataValue'](_0x4397('0x43'),null);this['setDataValue']('icesupport',null);this[_0x4397('0x5')](_0x4397('0x44'),null);this[_0x4397('0x5')]('dtlsverify',null);this[_0x4397('0x5')](_0x4397('0x45'),null);this[_0x4397('0x5')](_0x4397('0x46'),null);this[_0x4397('0x5')](_0x4397('0x47'),null);this['setDataValue'](_0x4397('0x48'),'no');break;case 0x2:this[_0x4397('0x5')](_0x4397('0x20'),'wss');this[_0x4397('0x5')](_0x4397('0x49'),_0x4397('0x34'));this[_0x4397('0x5')]('avpf',_0x4397('0x34'));this['setDataValue'](_0x4397('0x43'),'yes');this[_0x4397('0x5')](_0x4397('0x4a'),_0x4397('0x34'));this[_0x4397('0x5')](_0x4397('0x44'),'yes');this[_0x4397('0x5')](_0x4397('0x4b'),'no');this[_0x4397('0x5')]('dtlssetup',_0x4397('0x4c'));this[_0x4397('0x5')](_0x4397('0x46'),_0x143b20[_0x4397('0x46')]||_0x4397('0x4d'));this[_0x4397('0x5')]('dtlsprivatekey',_0x143b20[_0x4397('0x47')]||_0x4397('0x4e'));this['setDataValue'](_0x4397('0x48'),_0x4397('0x34'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x1a0a81){this['setDataValue'](_0x4397('0x4f'),_0x1a0a81?_0x1a0a81['join'](','):[]);},'get':function(){return this['getDataValue'](_0x4397('0x4f'))?_[_0x4397('0x50')](this[_0x4397('0xb')](_0x4397('0x4f'))[_0x4397('0x30')](','),function(_0x250da7){return parseInt(_0x250da7,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x4397('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize[_0x4397('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x4397('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x4397('0x12')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x4397('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x4397('0x12')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0x4397('0x34'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x4397('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x4397('0x3')]},'phoneBarEnableJaws':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x4397('0x51')],'get':function(){return this['getDataValue'](_0x4397('0x52'))?this[_0x4397('0xb')](_0x4397('0x52')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![],'set':function(_0x18dfd3){if(typeof _0x18dfd3===_0x4397('0x53')){var _0x98c487=_0x18dfd3==='1'?!![]:_0x18dfd3==='0'?![]:_0x18dfd3==='true'?!![]:_0x18dfd3==='false'?![]:![];this[_0x4397('0x5')](_0x4397('0x54'),_0x98c487);}else{this['setDataValue'](_0x4397('0x54'),_0x18dfd3);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x53d3d1){this['setDataValue'](_0x4397('0x55'),_0x53d3d1);if(_0x53d3d1===!![]){this[_0x4397('0x5')](_0x4397('0x56'),moment());this[_0x4397('0x5')](_0x4397('0x57'),0x0);}else{this[_0x4397('0x5')](_0x4397('0x56'),null);}}},'blockedAt':{'type':Sequelize[_0x4397('0x14')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x4397('0x12')],'defaultValue':0x0},'disabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x4397('0x12')](0x5)[_0x4397('0x58')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x4397('0x15')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x4397('0x15')],'defaultValue':!![]}};
\ No newline at end of file
index 4286d21..cded453 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0e=['bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','all','each','create','isEmpty','autoAssociation','changePassword','oldPassword','newPassword','Sequelize','authenticate','ValidationError','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','enforcePasswordHistory','previousPasswords','validatePasswordHistory','passwordHistoryLimit','updatePasswordsHistory','addQueues','channel','loginInPause','voicePause','interface','capitalize','toLowerCase','penalty','spread','QueueId','emit','Queue:save','voice','VoiceQueue','online','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','isValidChannel','Unknown\x20channel','remove','Queues','isArray','Queue:remove','addAvatar','userpic','file','getAvatar','join','root','server/files/images/logos/default_profile.png','existsSync','download','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','findOne','sort','pick','getContacts','hasOwnProperty','CmList','List','Tag','Tags','tag','getQueues','Queue','order','Unknown\x20role','nolimit','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','ScreenRecording','UserId','getChatInteractions','getOpenchannelInteractions','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','login','phone','LOCAL/%s@from-sip/n','format','intrf','user:%s','user:forcelogout','headers','socket','remoteAddress','connection','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','UserVoiceQueue.penalty','YYYY-MM-DD\x20HH:mm:ss','getChannels','forEach','LOGIN','device','PAUSE','LOGININPAUSE','MemberReport','concat','isMiddleware','resolve','logout','pause','QueuePause','type','DEFAULT\x20PAUSE','mailPause','chatPause','faxPause','smsPause','whatsapppause','pauseType','unpause','manual','%s%s','Pause','Team','getTeams','addTeams','getVoiceQueues','setDataValue','Voice','getChatQueues','Mail','getSmsQueues','getWhatsappQueues','Whatsapp','getFaxQueues','Fax','Openchannel','flatten','transaction','addAgent','getDataValue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams','Chat','getMailQueues','Sms','getOpenchannelQueues','removeAgent','getLists','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','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','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','FaxAccount','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','OpenchannelAccount','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','SquareProject','getSquareProjects','getScheduledCalls','CmHopper','$and','$or','$gt','$gte','$ne','$eq','$not','$between','$notBetween','$in','$like','$iLike','$notILike','$overlap','$any','firstName','CmContact','Contact','dialActive','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','createApiKey','iat','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','removeApiKey','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','queues','teams','inbound','getAgents','lower','col','toString','desc','uniqBy','orderBy','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','busy','slice','toUpperCase','QueryTypes','field','ui.','InteractionId','user_has_','_interactions','OpenTabs','moment','bluebird','util','path','lodash','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/license/util','../../mysqldb','socket.io-emitter','./user.socket','register','redis','defaults','localhost','client','http','then','info','User,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','update','destroy','get','role','admin','Users','user','Agents','agent','Telephones','telephone','filter','ignore','map','find','value','name','sendStatus','stack','send','index','rawAttributes','fieldName','key','getOptions','where','User','query','includeAll','include','attributes','findAll','openTabs','true','length','push','chat','rows','dataValues','sms','fax','mail','openchannel','whatsapp','show','params','model','differenceBy','keys','password','filters','intersection','fields','merge','options','includes','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)','SELECT','from','mailbox','VoiceMail','fullname','email','permissions','101','102','103','113','110','104','105','107','108','109','100','111','114','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','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x2976e6,_0x5e38d6){var _0x4b4576=function(_0x507851){while(--_0x507851){_0x2976e6['push'](_0x2976e6['shift']());}};_0x4b4576(++_0x5e38d6);}(_0x9f0e,0x116));var _0xe9f0=function(_0x41b4df,_0x2ba24f){_0x41b4df=_0x41b4df-0x0;var _0x40239a=_0x9f0e[_0x41b4df];return _0x40239a;};'use strict';var moment=require(_0xe9f0('0x0'));var BPromise=require(_0xe9f0('0x1'));var util=require(_0xe9f0('0x2'));var path=require(_0xe9f0('0x3'));var fs=require('fs');var _=require(_0xe9f0('0x4'));var squel=require('squel');var jayson=require('jayson/promise');var Redis=require(_0xe9f0('0x5'));var authService=require(_0xe9f0('0x6'));var qs=require(_0xe9f0('0x7'));var logger=require(_0xe9f0('0x8'))(_0xe9f0('0x9'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe9f0('0xa'));var db=require(_0xe9f0('0xb'))['db'];var socket=require(_0xe9f0('0xc'))(new Redis(config['redis']));require(_0xe9f0('0xd'))[_0xe9f0('0xe')](socket);config[_0xe9f0('0xf')]=_[_0xe9f0('0x10')](config[_0xe9f0('0xf')],{'host':_0xe9f0('0x11'),'port':0x18eb});var client=jayson[_0xe9f0('0x12')][_0xe9f0('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0x6acfb,_0x5352e0,_0x39b5b1,_0x329ecd){return new BPromise(function(_0x2d2863,_0x4a82aa){var _0x207fac=_0x329ecd||client;return _0x207fac['request'](_0x6acfb,_0x39b5b1)[_0xe9f0('0x14')](function(_0xd82420){logger[_0xe9f0('0x15')](_0xe9f0('0x16'),_0x5352e0,'request\x20sent');logger[_0xe9f0('0x17')]('User,\x20%s,\x20%s,\x20%s',_0x5352e0,_0xe9f0('0x18'),JSON[_0xe9f0('0x19')](_0xd82420));if(_0xd82420[_0xe9f0('0x1a')]){if(_0xd82420['error'][_0xe9f0('0x1b')]===0x1f4){logger[_0xe9f0('0x1a')](_0xe9f0('0x16'),_0x5352e0,_0xd82420['error'][_0xe9f0('0x1c')]);return _0x4a82aa(_0xd82420[_0xe9f0('0x1a')][_0xe9f0('0x1c')]);}logger[_0xe9f0('0x1a')](_0xe9f0('0x16'),_0x5352e0,_0xd82420[_0xe9f0('0x1a')][_0xe9f0('0x1c')]);return _0x2d2863(_0xd82420['error'][_0xe9f0('0x1c')]);}else{logger[_0xe9f0('0x15')](_0xe9f0('0x16'),_0x5352e0,'request\x20sent');_0x2d2863(_0xd82420[_0xe9f0('0x1d')][_0xe9f0('0x1c')]);}})[_0xe9f0('0x1e')](function(_0x43f399){logger['error'](_0xe9f0('0x16'),_0x5352e0,_0x43f399);_0x4a82aa(_0x43f399);});});}function respondWithStatusCode(_0xfaa312,_0x583687){_0x583687=_0x583687||0xcc;return function(_0x51e03f){if(_0x51e03f){return _0xfaa312['sendStatus'](_0x583687);}return _0xfaa312[_0xe9f0('0x1f')](_0x583687)[_0xe9f0('0x20')]();};}function respondWithResult(_0x1211ae,_0x316cdf){_0x316cdf=_0x316cdf||0xc8;return function(_0x3ce106){if(_0x3ce106){return _0x1211ae['status'](_0x316cdf)[_0xe9f0('0x21')](_0x3ce106);}};}function respondWithFilteredResult(_0x38b7ee,_0x437d43){return function(_0x10801b){if(_0x10801b){var _0x3ca991=typeof _0x437d43[_0xe9f0('0x22')]===_0xe9f0('0x23')&&typeof _0x437d43[_0xe9f0('0x24')]===_0xe9f0('0x23');var _0x3fce54=_0x10801b['count'];var _0x371095=_0x3ca991?0x0:_0x437d43[_0xe9f0('0x22')];var _0x2ddfba=_0x3ca991?_0x10801b[_0xe9f0('0x25')]:_0x437d43['offset']+_0x437d43[_0xe9f0('0x24')];var _0x2613fd;if(_0x2ddfba>=_0x3fce54){_0x2ddfba=_0x3fce54;_0x2613fd=0xc8;}else{_0x2613fd=0xce;}_0x38b7ee[_0xe9f0('0x1f')](_0x2613fd);return _0x38b7ee[_0xe9f0('0x26')](_0xe9f0('0x27'),_0x371095+'-'+_0x2ddfba+'/'+_0x3fce54)['json'](_0x10801b);}return null;};}function saveUpdates(_0x130f96){return function(_0xdc16bc){if(_0xdc16bc){return _0xdc16bc[_0xe9f0('0x28')](_0x130f96)[_0xe9f0('0x14')](function(_0xa27c84){return _0xa27c84;});}return null;};}function removeEntity(_0xd19788){return function(_0x1d788a){if(_0x1d788a){return _0x1d788a[_0xe9f0('0x29')]()[_0xe9f0('0x14')](function(){var _0x3dbe49=_0x1d788a[_0xe9f0('0x2a')]({'plain':!![]});if(_0x3dbe49[_0xe9f0('0x2b')]===_0xe9f0('0x2c'))return;var _0x2ab77d=[{'name':_0xe9f0('0x2d'),'value':_0xe9f0('0x2e'),'ignore':!![]},{'name':_0xe9f0('0x2f'),'value':_0xe9f0('0x30'),'ignore':![]},{'name':_0xe9f0('0x31'),'value':_0xe9f0('0x32'),'ignore':![]}];var _0x4089cc=_(_0x2ab77d)[_0xe9f0('0x33')](_0xe9f0('0x34'))[_0xe9f0('0x35')]('value')['value']();if(_['includes'](_0x4089cc,_0x3dbe49[_0xe9f0('0x2b')])){return;}var _0x585742=_[_0xe9f0('0x36')](_0x2ab77d,[_0xe9f0('0x37'),_0x3dbe49['role']])[_0xe9f0('0x38')];return db['UserProfileResource']['destroy']({'where':{'type':_0x585742,'resourceId':_0x3dbe49['id']}})['then'](function(){return _0x1d788a;});})[_0xe9f0('0x14')](function(){_0xd19788[_0xe9f0('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3becb9){return function(_0xb0cfc){if(!_0xb0cfc){_0x3becb9[_0xe9f0('0x39')](0x194);}return _0xb0cfc;};}function handleError(_0x4d4186,_0x523fbc){_0x523fbc=_0x523fbc||0x1f4;return function(_0x3fb04e){logger[_0xe9f0('0x1a')](_0x3fb04e[_0xe9f0('0x3a')]);if(_0x3fb04e['name']){delete _0x3fb04e[_0xe9f0('0x38')];}_0x4d4186[_0xe9f0('0x1f')](_0x523fbc)[_0xe9f0('0x3b')](_0x3fb04e);};}exports[_0xe9f0('0x3c')]=function(_0x2b38de,_0x552ec2){var _0x2ab492={},_0x3a2b23={'count':0x0,'rows':[]};var _0x2ede2=_(db['User'][_0xe9f0('0x3d')])[_0xe9f0('0x35')](function(_0x4825f2){return{'name':_0x4825f2[_0xe9f0('0x3e')],'type':_0x4825f2['type'][_0xe9f0('0x3f')]};})['filter'](function(_0x5dcbeb){return!_['includes'](['password','salt'],_0x5dcbeb[_0xe9f0('0x38')]);})[_0xe9f0('0x37')]();_0x2ab492=qs[_0xe9f0('0x40')](_0x2ede2,_0x2b38de);var _0x40c2c6={'where':_0x2ab492[_0xe9f0('0x41')]};return db[_0xe9f0('0x42')][_0xe9f0('0x25')](_0x40c2c6)[_0xe9f0('0x14')](function(_0xb06e04){_0x3a2b23['count']=_0xb06e04;if(_0x2b38de[_0xe9f0('0x43')][_0xe9f0('0x44')]){_0x2ab492[_0xe9f0('0x45')]=[{'all':!![]}];}if(!_['includes'](_0x2ab492['attributes'],'id')){_0x2ab492[_0xe9f0('0x46')]['push']('id');}return db[_0xe9f0('0x42')][_0xe9f0('0x47')](_0x2ab492);})[_0xe9f0('0x14')](function(_0x42d9d2){_0x3a2b23['rows']=_0x42d9d2;if(_0x2b38de[_0xe9f0('0x43')][_0xe9f0('0x48')]===_0xe9f0('0x49')){var _0x18faaf=[];for(var _0x37a2ac=0x0;_0x37a2ac<_0x3a2b23['rows'][_0xe9f0('0x4a')];_0x37a2ac++){_0x18faaf[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x4c'),_0x3a2b23[_0xe9f0('0x4d')][_0x37a2ac][_0xe9f0('0x4e')]));_0x18faaf['push'](get_open_tabs(_0xe9f0('0x4f'),_0x3a2b23['rows'][_0x37a2ac]['dataValues']));_0x18faaf[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x50'),_0x3a2b23['rows'][_0x37a2ac][_0xe9f0('0x4e')]));_0x18faaf[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x51'),_0x3a2b23[_0xe9f0('0x4d')][_0x37a2ac][_0xe9f0('0x4e')]));_0x18faaf[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x52'),_0x3a2b23['rows'][_0x37a2ac][_0xe9f0('0x4e')]));_0x18faaf['push'](get_open_tabs(_0xe9f0('0x53'),_0x3a2b23['rows'][_0x37a2ac][_0xe9f0('0x4e')]));}return BPromise['all'](_0x18faaf)[_0xe9f0('0x14')](function(_0x2023b4){return _0x3a2b23;});}else{return _0x3a2b23;}})[_0xe9f0('0x14')](respondWithFilteredResult(_0x552ec2,_0x2ab492))['catch'](handleError(_0x552ec2,null));};exports[_0xe9f0('0x54')]=function(_0xcf426d,_0x3e351a){var _0x22fce6={'raw':![],'where':{'id':_0xcf426d[_0xe9f0('0x55')]['id']}},_0x9a25fb={};_0x9a25fb[_0xe9f0('0x56')]=_[_0xe9f0('0x57')](_[_0xe9f0('0x58')](db[_0xe9f0('0x42')][_0xe9f0('0x3d')]),[_0xe9f0('0x59'),'salt']);_0x9a25fb['query']=_[_0xe9f0('0x58')](_0xcf426d[_0xe9f0('0x43')]);_0x9a25fb[_0xe9f0('0x5a')]=_['intersection'](_0x9a25fb[_0xe9f0('0x56')],_0x9a25fb['query']);_0x22fce6[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x9a25fb[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0xcf426d['query'][_0xe9f0('0x5c')]));_0x22fce6[_0xe9f0('0x46')]=_0x22fce6['attributes'][_0xe9f0('0x4a')]?_0x22fce6[_0xe9f0('0x46')]:_0x9a25fb[_0xe9f0('0x56')];if(_0xcf426d[_0xe9f0('0x43')]['includeAll']){_0x22fce6[_0xe9f0('0x45')]=[{'all':!![]}];}_0x22fce6=_[_0xe9f0('0x5d')]({},_0x22fce6,_0xcf426d[_0xe9f0('0x5e')]);if(!_[_0xe9f0('0x5f')](_0x22fce6[_0xe9f0('0x46')],'id')){_0x22fce6[_0xe9f0('0x46')][_0xe9f0('0x4b')]('id');}return db[_0xe9f0('0x42')]['find'](_0x22fce6)[_0xe9f0('0x14')](handleEntityNotFound(_0x3e351a,null))[_0xe9f0('0x14')](function(_0x465380){var _0x4728e7=[];values=_0x465380;if(_0xcf426d[_0xe9f0('0x43')][_0xe9f0('0x48')]===_0xe9f0('0x49')){_0x4728e7[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x4c'),_0x465380[_0xe9f0('0x4e')]));_0x4728e7[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x4f'),_0x465380[_0xe9f0('0x4e')]));_0x4728e7[_0xe9f0('0x4b')](get_open_tabs('openchannel',_0x465380[_0xe9f0('0x4e')]));_0x4728e7[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x53'),_0x465380['dataValues']));_0x4728e7['push'](get_open_tabs(_0xe9f0('0x50'),_0x465380['dataValues']));_0x4728e7[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x51'),_0x465380[_0xe9f0('0x4e')]));return BPromise['all'](_0x4728e7);}else{return values;}})[_0xe9f0('0x14')](function(_0x454b8a){return values;})[_0xe9f0('0x14')](respondWithResult(_0x3e351a,null))[_0xe9f0('0x1e')](handleError(_0x3e351a,null));};exports['update']=function(_0x392eae,_0x3a05e7){if(_0x392eae[_0xe9f0('0x60')]['id']){delete _0x392eae[_0xe9f0('0x60')]['id'];}delete _0x392eae['body']['role'];return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x392eae[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x3a05e7,null))[_0xe9f0('0x14')](saveUpdates(_0x392eae['body'],null))[_0xe9f0('0x14')](respondWithResult(_0x3a05e7,null))['catch'](handleError(_0x3a05e7,null));};exports[_0xe9f0('0x61')]=function(_0x5858a9,_0x7c05aa){return db[_0xe9f0('0x42')][_0xe9f0('0x61')]()[_0xe9f0('0x14')](respondWithResult(_0x7c05aa,null))[_0xe9f0('0x1e')](handleError(_0x7c05aa,null));};exports['addContacts']=function(_0x4e972e,_0x4bfb6d){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x4e972e['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x4bfb6d,null))['then'](function(_0x4f6a5b){if(_0x4f6a5b){return _0x4f6a5b[_0xe9f0('0x62')](_0x4e972e[_0xe9f0('0x60')][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0x4e972e[_0xe9f0('0x60')],[_0xe9f0('0x63'),'id'])||{});}})['then'](respondWithResult(_0x4bfb6d,null))['catch'](handleError(_0x4bfb6d,null));};function validateUser(_0x1255e6){return new BPromise(function(_0x248f10,_0x12d40a){if(_0x1255e6[_0xe9f0('0x65')])return _0x248f10(_0x1255e6);return db['Setting'][_0xe9f0('0x66')](0x1)[_0xe9f0('0x14')](function(_0x22b44a){if(_0x22b44a[_0xe9f0('0x67')])authService[_0xe9f0('0x68')](_0x1255e6[_0xe9f0('0x59')]);db['User'][_0xe9f0('0x69')](_0xe9f0('0x65'))[_0xe9f0('0x14')](function(_0x16f19f){if(_[_0xe9f0('0x6a')](_0x16f19f)){_0x1255e6['internal']=_0x22b44a[_0xe9f0('0x6b')]||0x1;return;}if(_[_0xe9f0('0x6a')](_0x22b44a[_0xe9f0('0x6b')])||_0x22b44a[_0xe9f0('0x6b')]===_0x16f19f){_0x1255e6[_0xe9f0('0x65')]=_0x16f19f+0x1;return;}if(_0x22b44a[_0xe9f0('0x6b')]>_0x16f19f){_0x1255e6[_0xe9f0('0x65')]=_0x22b44a[_0xe9f0('0x6b')];return;}return db[_0xe9f0('0x6c')][_0xe9f0('0x43')](_0xe9f0('0x6d'),{'type':db[_0xe9f0('0x6c')]['QueryTypes'][_0xe9f0('0x6e')]})[_0xe9f0('0x14')](function(_0x78fcdb){if(_0x78fcdb&&_0x78fcdb[_0xe9f0('0x4a')]){for(var _0x3c700e=0x0,_0x2428aa=_0x78fcdb[_0xe9f0('0x4a')];_0x3c700e<_0x2428aa&&_['isNil'](_0x1255e6[_0xe9f0('0x65')]);_0x3c700e++){if(_0x22b44a[_0xe9f0('0x6b')]<=_0x78fcdb[_0x3c700e]['from']){_0x1255e6[_0xe9f0('0x65')]=_0x78fcdb[_0x3c700e][_0xe9f0('0x6f')];}else if(_0x22b44a[_0xe9f0('0x6b')]>_0x78fcdb[_0x3c700e]['from']&&_0x22b44a[_0xe9f0('0x6b')]<=_0x78fcdb[_0x3c700e]['to']){_0x1255e6[_0xe9f0('0x65')]=_0x22b44a['min_internal'];}}}if(_[_0xe9f0('0x6a')](_0x1255e6[_0xe9f0('0x65')])){_0x1255e6['internal']=_0x16f19f+0x1;}return _0x248f10(_0x1255e6);});});})['catch'](function(_0x45466b){_0x12d40a(_0x45466b);});});}function updateUser(_0x507e02){return new BPromise(function(_0x386d7b,_0x3afb6c){try{if(_0x507e02['voicemail']){_0x507e02[_0xe9f0('0x70')]=_0x507e02[_0xe9f0('0x65')];_0x507e02[_0xe9f0('0x71')]={'mailbox':_0x507e02[_0xe9f0('0x65')],'password':_0x507e02[_0xe9f0('0x59')],'fullname':_0x507e02[_0xe9f0('0x72')],'email':_0x507e02[_0xe9f0('0x73')]};}if(_0x507e02[_0xe9f0('0x2b')]===_0xe9f0('0x30')){if(!_0x507e02['permissions'])_0x507e02[_0xe9f0('0x74')]=[_0xe9f0('0x75'),_0xe9f0('0x76'),_0xe9f0('0x77'),_0xe9f0('0x78'),_0xe9f0('0x79'),_0xe9f0('0x7a'),_0xe9f0('0x7b'),'106',_0xe9f0('0x7c'),_0xe9f0('0x7d'),_0xe9f0('0x7e'),_0xe9f0('0x7f'),_0xe9f0('0x80'),_0xe9f0('0x81'),'115'];}_0x386d7b(_0x507e02);}catch(_0x12e663){_0x3afb6c(_0x12e663);}});}exports['create']=function(_0x5dda96,_0x5ca5e5){if(_0x5dda96[_0xe9f0('0x2e')][_0xe9f0('0x2b')]===_0xe9f0('0x30'))throw new Error(_0xe9f0('0x82'));if(_0x5dda96[_0xe9f0('0x60')][_0xe9f0('0x2b')]===_0xe9f0('0x2e')&&_0x5dda96[_0xe9f0('0x2e')][_0xe9f0('0x2b')]!=='admin'){throw new Error(_0xe9f0('0x83'));}if(_0x5dda96[_0xe9f0('0x60')][_0xe9f0('0x2b')]===_0xe9f0('0x2c')&&_0x5dda96[_0xe9f0('0x2e')][_0xe9f0('0x2b')]!==_0xe9f0('0x2c')){throw new Error(_0xe9f0('0x84'));}return licenseUtil[_0xe9f0('0x85')]([_0x5dda96[_0xe9f0('0x60')]])['then'](function(){return validateUser(_0x5dda96['body']);})[_0xe9f0('0x14')](function(_0x27ff72){return updateUser(_0x27ff72)[_0xe9f0('0x14')](function(_0x2b4a03){if(_0x2b4a03[_0xe9f0('0x2b')]===_0xe9f0('0x2c')){_0x2b4a03[_0xe9f0('0x86')]=_0x5dda96[_0xe9f0('0x2e')]['settingsEnabled'];delete _0x2b4a03['userProfileId'];}return _0x2b4a03;});})[_0xe9f0('0x14')](function(_0x449a6a){return db['User']['create'](_0x449a6a,{'include':[{'model':db[_0xe9f0('0x71')],'as':_0xe9f0('0x71')}]});})[_0xe9f0('0x14')](function(_0xab92b){if(_0x5dda96[_0xe9f0('0x60')]['role']===_0xe9f0('0x2e'))return _0xab92b;if(_0x5dda96[_0xe9f0('0x2e')][_0xe9f0('0x2b')]!==_0xe9f0('0x2e'))return _0xab92b;return db[_0xe9f0('0x87')][_0xe9f0('0x36')]({'where':{'name':_0xab92b[_0xe9f0('0x2b')]==='agent'?'Agents':'Telephones','userProfileId':_0x5dda96[_0xe9f0('0x2e')][_0xe9f0('0x88')]},'raw':!![]})[_0xe9f0('0x14')](function(_0x39affc){if(!_0x39affc||_0x39affc['autoAssociation']!=0x0)return _0xab92b;return db[_0xe9f0('0x89')]['create']({'name':_0xab92b[_0xe9f0('0x38')],'resourceId':_0xab92b['id'],'type':_0x39affc['name'],'sectionId':_0x39affc['id']},{})[_0xe9f0('0x14')](function(){return _0xab92b;});})[_0xe9f0('0x1e')](function(_0x83cb0b){logger[_0xe9f0('0x1a')](_0xe9f0('0x8a'),_0x83cb0b);throw _0x83cb0b;});})[_0xe9f0('0x14')](respondWithResult(_0x5ca5e5,0xc9))['catch'](handleError(_0x5ca5e5,null));};exports[_0xe9f0('0x8b')]=function(_0x1820f6,_0x7a0ccc){var _0x470c5a=_0x1820f6[_0xe9f0('0x60')];var _0x5da556=[];if(_0x1820f6[_0xe9f0('0x2e')][_0xe9f0('0x2b')]==='agent')throw new Error(_0xe9f0('0x82'));if(_['some'](_0x470c5a,[_0xe9f0('0x2b'),_0xe9f0('0x2e')])&&_0x1820f6[_0xe9f0('0x2e')]['role']!==_0xe9f0('0x2c')){throw new Error(_0xe9f0('0x83'));}if(_[_0xe9f0('0x8c')](_0x470c5a,['role',_0xe9f0('0x2c')])&&_0x1820f6[_0xe9f0('0x2e')][_0xe9f0('0x2b')]!==_0xe9f0('0x2c')){throw new Error(_0xe9f0('0x8d'));}return licenseUtil[_0xe9f0('0x85')](_0x470c5a)[_0xe9f0('0x14')](function(){return validateUser(_0x470c5a[0x0]);})['then'](function(){for(var _0x4a416c=0x1;_0x4a416c<_0x470c5a[_0xe9f0('0x4a')];_0x4a416c++){var _0x37a475=_0x470c5a[_0x4a416c-0x1][_0xe9f0('0x65')];if(!_0x470c5a[_0x4a416c]['internal'])_0x470c5a[_0x4a416c][_0xe9f0('0x65')]=_0x37a475+0x1;_0x5da556[_0xe9f0('0x4b')](validateUser(_0x470c5a[_0x4a416c]));}return BPromise[_0xe9f0('0x8e')](_0x5da556);})[_0xe9f0('0x14')](function(){_0x5da556=[];for(var _0x592592=0x0;_0x592592<_0x470c5a['length'];_0x592592++){_0x5da556[_0xe9f0('0x4b')](updateUser(_0x470c5a[_0x592592]));}return BPromise[_0xe9f0('0x8e')](_0x5da556);})['then'](function(){return BPromise[_0xe9f0('0x8f')](_0x470c5a,function(_0x5b26b1){return db['User'][_0xe9f0('0x90')](_0x5b26b1,{'include':[{'model':db[_0xe9f0('0x71')],'as':_0xe9f0('0x71')}]})[_0xe9f0('0x14')](function(_0x10c4cf){_0x5b26b1['id']=_0x10c4cf['id'];return _0x5b26b1;});});})['then'](function(_0x5761d3){if(_0x1820f6[_0xe9f0('0x60')][_0xe9f0('0x2b')]===_0xe9f0('0x2e'))return _0x5761d3;if(_0x1820f6[_0xe9f0('0x2e')][_0xe9f0('0x2b')]!=='user')return _0x5761d3;var _0x57b0d0=_['some'](_0x5761d3,function(_0xb78361){return _0xb78361['role']===_0xe9f0('0x30')||_0xb78361[_0xe9f0('0x2b')]===_0xe9f0('0x32');});if(!_0x57b0d0)return _0x5761d3;return db[_0xe9f0('0x87')][_0xe9f0('0x47')]({'where':{'name':{'$or':[_0xe9f0('0x2f'),'Telephones']},'userProfileId':_0x1820f6['user'][_0xe9f0('0x88')]},'raw':!![]})[_0xe9f0('0x14')](function(_0x55bcc4){if(_[_0xe9f0('0x91')](_0x55bcc4)||!_[_0xe9f0('0x8c')](_0x55bcc4,[_0xe9f0('0x92'),0x0]))return _0x5761d3;_0x5da556=[];var _0x22d878=_(_0x55bcc4)[_0xe9f0('0x35')](function(_0x29764d){if(_0x29764d[_0xe9f0('0x92')]===0x1)return;return _0x29764d[_0xe9f0('0x38')]===_0xe9f0('0x2f')?_0xe9f0('0x30'):_0xe9f0('0x32');})['compact']()[_0xe9f0('0x37')]();for(var _0x169951=0x0;_0x169951<_0x5761d3[_0xe9f0('0x4a')];_0x169951++){if(!_[_0xe9f0('0x5f')](_0x22d878,_0x5761d3[_0x169951][_0xe9f0('0x2b')]))return;var _0x34203f=_0x5761d3[_0x169951][_0xe9f0('0x2b')]===_0xe9f0('0x30')?_0xe9f0('0x2f'):_0xe9f0('0x31');_0x5da556[_0xe9f0('0x4b')](db['UserProfileResource'][_0xe9f0('0x90')]({'name':_0x5761d3[_0x169951][_0xe9f0('0x38')],'resourceId':_0x5761d3[_0x169951]['id'],'type':_0x34203f,'sectionId':_[_0xe9f0('0x36')](_0x55bcc4,[_0xe9f0('0x38'),_0x34203f])['id']},{}));}return BPromise[_0xe9f0('0x8e')](_0x5da556);});})[_0xe9f0('0x14')](respondWithResult(_0x7a0ccc,0xc9))[_0xe9f0('0x1e')](handleError(_0x7a0ccc,null));};exports[_0xe9f0('0x93')]=function(_0x5b32f2,_0x5c5ac9){if(_0x5b32f2[_0xe9f0('0x60')]['id']){delete _0x5b32f2[_0xe9f0('0x60')]['id'];}return db['User']['find']({'where':{'id':_0x5b32f2[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](function(_0x37a080){if(!_0x37a080)return null;if(_0x37a080['id']===_0x5b32f2[_0xe9f0('0x2e')]['id']){if(!_0x5b32f2[_0xe9f0('0x60')][_0xe9f0('0x94')]||!_0x5b32f2['body'][_0xe9f0('0x95')]){throw new db[(_0xe9f0('0x96'))]['ValidationError']('Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword');}if(!_0x37a080[_0xe9f0('0x97')](_0x5b32f2[_0xe9f0('0x60')]['oldPassword'])){throw new db[(_0xe9f0('0x96'))][(_0xe9f0('0x98'))](_0xe9f0('0x99'));}if(_0x5b32f2['body'][_0xe9f0('0x94')]===_0x5b32f2[_0xe9f0('0x60')][_0xe9f0('0x95')]){throw new db[(_0xe9f0('0x96'))]['ValidationError'](_0xe9f0('0x9a'));}}else if(_0x5b32f2[_0xe9f0('0x2e')][_0xe9f0('0x2b')]==='admin'){if(!_0x5b32f2['body']['newPassword']){throw new db[(_0xe9f0('0x96'))]['ValidationError']('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x5b32f2[_0xe9f0('0x2e')]['role']===_0xe9f0('0x2e')){if(!_0x5b32f2[_0xe9f0('0x60')][_0xe9f0('0x95')]){throw new db[(_0xe9f0('0x96'))]['ValidationError'](_0xe9f0('0x9b'));}if(_0x37a080[_0xe9f0('0x2b')]!==_0xe9f0('0x30')){throw new db[(_0xe9f0('0x96'))][(_0xe9f0('0x98'))](_0xe9f0('0x82'));}}else{throw new db[(_0xe9f0('0x96'))][(_0xe9f0('0x98'))](_0xe9f0('0x82'));}return _0x37a080;})[_0xe9f0('0x14')](handleEntityNotFound(_0x5c5ac9,null))[_0xe9f0('0x14')](function(_0x1ceb54){return db[_0xe9f0('0x9c')]['findOne']({'attributes':['id',_0xe9f0('0x67'),_0xe9f0('0x9d'),'passwordHistoryLimit']})['then'](function(_0xec006){if(_0xec006[_0xe9f0('0x67')])authService[_0xe9f0('0x68')](_0x5b32f2[_0xe9f0('0x60')]['newPassword']);if(!_0xec006[_0xe9f0('0x9d')]||!_0x1ceb54[_0xe9f0('0x9e')])return _0x1ceb54;authService[_0xe9f0('0x9f')](_0x5b32f2['body'][_0xe9f0('0x95')],_0x1ceb54[_0xe9f0('0x9e')],_0xec006[_0xe9f0('0xa0')]);return _0x1ceb54;})[_0xe9f0('0x14')](saveUpdates({'password':_0x5b32f2[_0xe9f0('0x60')]['newPassword'],'passwordResetAt':_0x5b32f2['user']['id']==_0x5b32f2[_0xe9f0('0x55')]['id']?moment():null,'previousPasswords':authService[_0xe9f0('0xa1')](_0x5b32f2[_0xe9f0('0x60')][_0xe9f0('0x95')],_0x1ceb54[_0xe9f0('0x9e')])},null));})[_0xe9f0('0x14')](respondWithResult(_0x5c5ac9,null))[_0xe9f0('0x1e')](handleError(_0x5c5ac9,null));};exports[_0xe9f0('0xa2')]=function(_0x5ae9f1,_0x1aacfa){var _0x4eea8f=_0x5ae9f1['body'][_0xe9f0('0xa3')];return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x5ae9f1['params']['id']},'attributes':['id',_0xe9f0('0x38'),_0xe9f0('0x2b'),'online',_0xe9f0('0xa4'),_0xe9f0('0xa5'),_0xe9f0('0xa6')]})[_0xe9f0('0x14')](handleEntityNotFound(_0x1aacfa,null))['then'](function(_0x25750e){if(_0x25750e){if(!utils['isValidChannel'](_0x4eea8f)){throw new db[(_0xe9f0('0x96'))]['ValidationError']('Unknown\x20channel');}return _0x25750e['add'+_[_0xe9f0('0xa7')](_0x4eea8f[_0xe9f0('0xa8')]())+'Queues'](_0x5ae9f1[_0xe9f0('0x60')][_0xe9f0('0x63')],{'penalty':_0x5ae9f1[_0xe9f0('0x60')][_0xe9f0('0xa9')]||0x0})[_0xe9f0('0xaa')](function(_0x40306a){for(var _0x1cfb29=0x0;_0x1cfb29<_0x5ae9f1['body'][_0xe9f0('0x63')][_0xe9f0('0x4a')];_0x1cfb29+=0x1){var _0x32eb6c={'UserId':Number(_0x5ae9f1['params']['id'])};_0x32eb6c[_[_0xe9f0('0xa7')](_0x4eea8f[_0xe9f0('0xa8')]())+_0xe9f0('0xab')]=Number(_0x5ae9f1['body'][_0xe9f0('0x63')][_0x1cfb29]);socket[_0xe9f0('0xac')]('user'+_[_0xe9f0('0xa7')](_0x4eea8f['toLowerCase']())+_0xe9f0('0xad'),_0x32eb6c);}return _0x40306a;})[_0xe9f0('0x14')](function(){if(_0x4eea8f===_0xe9f0('0xae')){return db[_0xe9f0('0xaf')][_0xe9f0('0x47')]({'where':{'id':_0x5ae9f1[_0xe9f0('0x60')]['ids']||[]},'raw':!![],'attributes':['id',_0xe9f0('0x38')]});}})[_0xe9f0('0x14')](function(_0xfe329a){var _0x1684a7=_0x25750e[_0xe9f0('0x2a')]({'plain':!![]});var _0x45e390=[];if(_0x4eea8f===_0xe9f0('0xae')&&_0x1684a7['role']==='agent'&&_0x1684a7[_0xe9f0('0xb0')]){for(var _0x3e8745=0x0;_0x3e8745<_0xfe329a['length'];_0x3e8745+=0x1){_0x45e390[_0xe9f0('0x4b')]({'membername':_0x1684a7['name'],'UserId':_0x1684a7['id'],'queue_name':_0xfe329a[_0x3e8745][_0xe9f0('0x38')],'VoiceQueueId':_0xfe329a[_0x3e8745]['id'],'interface':_[_0xe9f0('0x6a')](_0x1684a7['interface'])?util['format'](_0xe9f0('0xb1'),_0x1684a7[_0xe9f0('0x38')]):_0x1684a7[_0xe9f0('0xa6')],'paused':_0x1684a7['voicePause']||![],'penalty':_0x5ae9f1['body'][_0xe9f0('0xa9')]||0x0});}return BPromise[_0xe9f0('0x8f')](_0x45e390,function(_0x249c41){return db[_0xe9f0('0xb2')][_0xe9f0('0xb3')](_0x249c41);});}return _0x25750e;});}})[_0xe9f0('0x14')](respondWithStatusCode(_0x1aacfa,null))[_0xe9f0('0x1e')](handleError(_0x1aacfa,null));};exports[_0xe9f0('0xb4')]=function(_0x2f65a6,_0x45edd9){var _0x423364;return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x2f65a6[_0xe9f0('0x55')]['id']},'attributes':['id','name',_0xe9f0('0x2b')]})['then'](handleEntityNotFound(_0x45edd9,null))[_0xe9f0('0x14')](function(_0x229e28){if(_0x229e28){_0x423364=_0x229e28;if(!_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0xa3')]||!utils[_0xe9f0('0xb5')](_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0xa3')])){throw new db[(_0xe9f0('0x96'))]['ValidationError'](_0xe9f0('0xb6'));}return _0x229e28[_0xe9f0('0xb7')+_[_0xe9f0('0xa7')](_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0xa3')][_0xe9f0('0xa8')]())+_0xe9f0('0xb8')](_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0x63')]);}})[_0xe9f0('0x14')](function(_0x896068){if(_[_0xe9f0('0xb9')](_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0x63')])){for(var _0x46705f=0x0;_0x46705f<_0x2f65a6[_0xe9f0('0x43')]['ids'][_0xe9f0('0x4a')];_0x46705f+=0x1){var _0x4a98e8={'UserId':Number(_0x2f65a6['params']['id'])};_0x4a98e8[_[_0xe9f0('0xa7')](_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0xa3')][_0xe9f0('0xa8')]())+'QueueId']=Number(_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0x63')][_0x46705f]);socket[_0xe9f0('0xac')](_0xe9f0('0x2e')+_['capitalize'](_0x2f65a6[_0xe9f0('0x43')]['channel']['toLowerCase']())+_0xe9f0('0xba'),_0x4a98e8);}}else{var _0x4a98e8={'UserId':Number(_0x2f65a6['params']['id'])};_0x4a98e8[_[_0xe9f0('0xa7')](_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0xa3')][_0xe9f0('0xa8')]())+_0xe9f0('0xab')]=Number(_0x2f65a6['query'][_0xe9f0('0x63')]);socket[_0xe9f0('0xac')]('user'+_[_0xe9f0('0xa7')](_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0xa3')][_0xe9f0('0xa8')]())+_0xe9f0('0xba'),_0x4a98e8);}return _0x896068;})[_0xe9f0('0x14')](function(){if(_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0xa3')]===_0xe9f0('0xae')){return db['UserVoiceQueueRt'][_0xe9f0('0x29')]({'where':{'UserId':_0x2f65a6[_0xe9f0('0x55')]['id'],'VoiceQueueId':_0x2f65a6['query'][_0xe9f0('0x63')]},'individualHooks':!![]})[_0xe9f0('0x14')](function(){return _0x423364;});}return _0x423364;})[_0xe9f0('0x14')](respondWithStatusCode(_0x45edd9,null))[_0xe9f0('0x1e')](handleError(_0x45edd9,null));};exports[_0xe9f0('0xbb')]=function(_0x4e7e1a,_0x54efec){_0x4e7e1a[_0xe9f0('0x60')][_0xe9f0('0xbc')]=_0x4e7e1a[_0xe9f0('0xbd')]['filename'];return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x4e7e1a[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x54efec,null))[_0xe9f0('0x14')](saveUpdates(_0x4e7e1a[_0xe9f0('0x60')],null))[_0xe9f0('0x14')](respondWithResult(_0x54efec,null))[_0xe9f0('0x1e')](handleError(_0x54efec,null));};exports[_0xe9f0('0xbe')]=function(_0x1869c1,_0x162c2e){var _0xf63dd8=path[_0xe9f0('0xbf')](config[_0xe9f0('0xc0')],_0xe9f0('0xc1'));return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x1869c1['params']['id']},'attributes':['id',_0xe9f0('0xbc')],'raw':!![]})[_0xe9f0('0x14')](handleEntityNotFound(_0x162c2e,null))[_0xe9f0('0x14')](function(_0x58fe38){if(_0x58fe38){if(_[_0xe9f0('0x6a')](_0x58fe38['userpic'])){return _0x162c2e['download'](_0xf63dd8);}else{if(!fs[_0xe9f0('0xc2')](path['join'](config[_0xe9f0('0xc0')],'server/files/images/',_0x58fe38['userpic']))){return _0x162c2e[_0xe9f0('0xc3')](_0xf63dd8);}return _0x162c2e[_0xe9f0('0xc3')](path[_0xe9f0('0xbf')](config['root'],_0xe9f0('0xc4'),_0x58fe38[_0xe9f0('0xbc')]));}}})[_0xe9f0('0x1e')](handleError(_0x162c2e,null));};exports[_0xe9f0('0xc5')]=function(_0x1646cb,_0x3957d7){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x1646cb[_0xe9f0('0x55')]['id']},'attributes':['id']})[_0xe9f0('0x14')](handleEntityNotFound(_0x3957d7,null))[_0xe9f0('0x14')](function(_0x360e00){var _0x1c925b=[];values=_0x360e00[_0xe9f0('0x4e')];_0x1c925b['push'](get_open_tabs(_0xe9f0('0x4c'),_0x360e00[_0xe9f0('0x4e')]));_0x1c925b[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x4f'),_0x360e00[_0xe9f0('0x4e')]));_0x1c925b[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x52'),_0x360e00[_0xe9f0('0x4e')]));_0x1c925b['push'](get_open_tabs(_0xe9f0('0x53'),_0x360e00['dataValues']));_0x1c925b[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x50'),_0x360e00[_0xe9f0('0x4e')]));_0x1c925b[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x51'),_0x360e00[_0xe9f0('0x4e')]));return BPromise[_0xe9f0('0x8e')](_0x1c925b);})['then'](function(_0x17a367){var _0x5a6222=[];if(_0x17a367){for(var _0x1de13b=0x0;_0x1de13b<values[_0xe9f0('0xc6')]['length'];_0x1de13b++){var _0x4b8d2d=values[_0xe9f0('0xc6')][_0x1de13b];_0x5a6222[_0xe9f0('0x4b')]({'channel':_0xe9f0('0xc7'),'id':_0x4b8d2d['id'],'createdAt':_0x4b8d2d[_0xe9f0('0xc8')]});}for(var _0x1de13b=0x0;_0x1de13b<values[_0xe9f0('0xc9')][_0xe9f0('0x4a')];_0x1de13b++){var _0x4b8d2d=values[_0xe9f0('0xc9')][_0x1de13b];_0x5a6222[_0xe9f0('0x4b')]({'channel':_0xe9f0('0xca'),'id':_0x4b8d2d['id'],'createdAt':_0x4b8d2d[_0xe9f0('0xc8')]});}for(var _0x1de13b=0x0;_0x1de13b<values['OpenchannelOpenTabs'][_0xe9f0('0x4a')];_0x1de13b++){var _0x4b8d2d=values['OpenchannelOpenTabs'][_0x1de13b];_0x5a6222[_0xe9f0('0x4b')]({'channel':_0xe9f0('0xcb'),'id':_0x4b8d2d['id'],'createdAt':_0x4b8d2d[_0xe9f0('0xc8')]});}for(var _0x1de13b=0x0;_0x1de13b<values['MailOpenTabs'][_0xe9f0('0x4a')];_0x1de13b++){var _0x4b8d2d=values[_0xe9f0('0xcc')][_0x1de13b];_0x5a6222[_0xe9f0('0x4b')]({'channel':_0xe9f0('0xcd'),'id':_0x4b8d2d['id'],'createdAt':_0x4b8d2d['createdAt']});}for(var _0x1de13b=0x0;_0x1de13b<values[_0xe9f0('0xce')]['length'];_0x1de13b++){var _0x4b8d2d=values['SmsOpenTabs'][_0x1de13b];_0x5a6222[_0xe9f0('0x4b')]({'channel':_0xe9f0('0xcf'),'id':_0x4b8d2d['id'],'createdAt':_0x4b8d2d[_0xe9f0('0xc8')]});}for(var _0x1de13b=0x0;_0x1de13b<values[_0xe9f0('0xd0')][_0xe9f0('0x4a')];_0x1de13b++){var _0x4b8d2d=values[_0xe9f0('0xd0')][_0x1de13b];_0x5a6222[_0xe9f0('0x4b')]({'channel':_0xe9f0('0xd1'),'id':_0x4b8d2d['id'],'createdAt':_0x4b8d2d['createdAt']});}var _0xa1d44b={'count':_0x5a6222['length'],'rows':_0x5a6222};return _0xa1d44b;}else return null;})[_0xe9f0('0x14')](respondWithResult(_0x3957d7,null))[_0xe9f0('0x1e')](handleError(_0x3957d7,null));};exports['getContacts']=function(_0x490d6e,_0x4ebfcc){var _0x2b3bde={};var _0x316e88={};var _0x325708;var _0x6e7cd9;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x490d6e[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x4ebfcc,null))[_0xe9f0('0x14')](function(_0x5a2191){if(_0x5a2191){_0x325708=_0x5a2191;_0x316e88['model']=_[_0xe9f0('0x58')](db['CmContact'][_0xe9f0('0x3d')]);_0x316e88[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x490d6e[_0xe9f0('0x43')]);_0x316e88[_0xe9f0('0x5a')]=_['intersection'](_0x316e88[_0xe9f0('0x56')],_0x316e88[_0xe9f0('0x43')]);_0x2b3bde[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x316e88[_0xe9f0('0x56')],qs['fields'](_0x490d6e[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x2b3bde['attributes']=_0x2b3bde[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x2b3bde[_0xe9f0('0x46')]:_0x316e88['model'];_0x2b3bde['order']=qs[_0xe9f0('0xd3')](_0x490d6e[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x2b3bde['where']=qs['filters'](_[_0xe9f0('0xd4')](_0x490d6e[_0xe9f0('0x43')],_0x316e88[_0xe9f0('0x5a')]));if(_0x490d6e['query'][_0xe9f0('0x33')]){_0x2b3bde[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x2b3bde[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0x2b3bde[_0xe9f0('0x46')],function(_0x4bc973){var _0x218ee5={};_0x218ee5[_0x4bc973]={'$like':'%'+_0x490d6e[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x218ee5;})});}_0x2b3bde=_[_0xe9f0('0x5d')]({},_0x2b3bde,_0x490d6e[_0xe9f0('0x5e')]);return _0x325708[_0xe9f0('0xd5')](_0x2b3bde);}})[_0xe9f0('0x14')](function(_0xd2a575){if(_0xd2a575){_0x6e7cd9=_0xd2a575[_0xe9f0('0x4a')];if(_0x490d6e[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0x44'))){_0x2b3bde[_0xe9f0('0x45')]=[{'model':db[_0xe9f0('0xd7')],'as':_0xe9f0('0xd8'),'required':![]},{'model':db[_0xe9f0('0xd9')],'as':_0xe9f0('0xda'),'attributes':['id','name','color'],'where':_0x490d6e['query'][_0xe9f0('0xdb')]?{'id':_0x490d6e[_0xe9f0('0x43')]['tag']}:undefined,'required':_0x490d6e[_0xe9f0('0x43')]['tag']?!![]:![]}];}if(!_0x490d6e[_0xe9f0('0x43')][_0xe9f0('0xd6')]('nolimit')){_0x2b3bde[_0xe9f0('0x24')]=qs['limit'](_0x490d6e[_0xe9f0('0x43')]['limit']);_0x2b3bde['offset']=qs[_0xe9f0('0x22')](_0x490d6e[_0xe9f0('0x43')]['offset']);}return _0x325708[_0xe9f0('0xd5')](_0x2b3bde);}})[_0xe9f0('0x14')](function(_0x12df00){if(_0x12df00){return _0x12df00?{'count':_0x6e7cd9,'rows':_0x12df00}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x4ebfcc,null))[_0xe9f0('0x1e')](handleError(_0x4ebfcc,null));};exports[_0xe9f0('0xdc')]=function(_0x4e13b6,_0x34edd6){var _0x77d071;var _0x1ed935;var _0xa22b5={};var _0x5ef897;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x4e13b6[_0xe9f0('0x55')]['id']},'attributes':['id',_0xe9f0('0x38'),_0xe9f0('0x2b')]})[_0xe9f0('0x14')](handleEntityNotFound(_0x34edd6,null))[_0xe9f0('0x14')](function(_0xba5824){if(!utils[_0xe9f0('0xb5')](_0x4e13b6[_0xe9f0('0x43')][_0xe9f0('0xa3')])){throw new db[(_0xe9f0('0x96'))]['ValidationError'](_0xe9f0('0xb6'));}_0x77d071=_0xba5824;var _0x32fceb={};_0x32fceb[_0xe9f0('0x56')]=_['keys'](db[_[_0xe9f0('0xa7')](_0x4e13b6[_0xe9f0('0x43')]['channel'])+_0xe9f0('0xdd')][_0xe9f0('0x3d')]);_0x32fceb[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x4e13b6[_0xe9f0('0x43')]);_0x32fceb[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x32fceb['model'],_0x32fceb['query']);_0xa22b5[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x32fceb[_0xe9f0('0x56')],qs['fields'](_0x4e13b6[_0xe9f0('0x43')]['fields']));_0xa22b5['attributes']=_0xa22b5[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0xa22b5['attributes']:_0x32fceb[_0xe9f0('0x56')];_0xa22b5[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x4e13b6[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0xa22b5[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x4e13b6[_0xe9f0('0x43')],_0x32fceb[_0xe9f0('0x5a')]));if(_0x4e13b6[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0xa22b5[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0xa22b5[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0xa22b5['attributes'],function(_0x59d73f){var _0x1e8c61={};_0x1e8c61[_0x59d73f]={'$like':'%'+_0x4e13b6[_0xe9f0('0x43')]['filter']+'%'};return _0x1e8c61;})});}_0xa22b5=_[_0xe9f0('0x5d')]({},_0xa22b5,_0x4e13b6['options']);switch(_0x77d071[_0xe9f0('0x2b')]){case _0xe9f0('0x2c'):return db[_[_0xe9f0('0xa7')](_0x4e13b6['query'][_0xe9f0('0xa3')])+'Queue'][_0xe9f0('0x47')](_0xa22b5);case _0xe9f0('0x2e'):case _0xe9f0('0x30'):return _0x77d071[_0xe9f0('0x2a')+_[_0xe9f0('0xa7')](_0x4e13b6[_0xe9f0('0x43')][_0xe9f0('0xa3')])+'Queues'](_0xa22b5);default:throw new db['Sequelize'][(_0xe9f0('0x98'))](_0xe9f0('0xdf'));}})['then'](function(_0x40d436){_0x5ef897=_0x40d436['length'];if(!_0x4e13b6[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0xa22b5[_0xe9f0('0x24')]=qs['limit'](_0x4e13b6[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0xa22b5[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x4e13b6[_0xe9f0('0x43')][_0xe9f0('0x22')]);}switch(_0x77d071[_0xe9f0('0x2b')]){case _0xe9f0('0x2c'):return db[_['capitalize'](_0x4e13b6['query'][_0xe9f0('0xa3')])+_0xe9f0('0xdd')][_0xe9f0('0x47')](_0xa22b5);case _0xe9f0('0x2e'):case'agent':return _0x77d071[_0xe9f0('0x2a')+_[_0xe9f0('0xa7')](_0x4e13b6[_0xe9f0('0x43')]['channel'])+_0xe9f0('0xb8')](_0xa22b5);}})[_0xe9f0('0x14')](function(_0x4e674e){return{'count':_0x5ef897,'rows':_0x4e674e};})[_0xe9f0('0x14')](respondWithResult(_0x34edd6,null))[_0xe9f0('0x1e')](handleError(_0x34edd6,null));};exports[_0xe9f0('0xe1')]=function(_0x3e4912,_0x1ee162){var _0x344755={};var _0x591b59={};var _0x242895;var _0x7b4b1;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x3e4912['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x1ee162,null))['then'](function(_0x1ad83c){if(_0x1ad83c){_0x242895=_0x1ad83c;_0x591b59[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db[_0xe9f0('0xb2')][_0xe9f0('0x3d')]);_0x591b59[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x3e4912[_0xe9f0('0x43')]);_0x591b59['filters']=_[_0xe9f0('0x5b')](_0x591b59[_0xe9f0('0x56')],_0x591b59[_0xe9f0('0x43')]);_0x344755[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x591b59['model'],qs[_0xe9f0('0x5c')](_0x3e4912[_0xe9f0('0x43')]['fields']));_0x344755[_0xe9f0('0x46')]=_0x344755[_0xe9f0('0x46')]['length']?_0x344755[_0xe9f0('0x46')]:_0x591b59[_0xe9f0('0x56')];_0x344755['order']=qs[_0xe9f0('0xd3')](_0x3e4912[_0xe9f0('0x43')]['sort']);_0x344755['where']=qs['filters'](_['pick'](_0x3e4912['query'],_0x591b59[_0xe9f0('0x5a')]));if(_0x3e4912[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x344755['where']=_[_0xe9f0('0x5d')](_0x344755[_0xe9f0('0x41')],{'$or':_['map'](_0x344755[_0xe9f0('0x46')],function(_0x16b798){var _0x149cc2={};_0x149cc2[_0x16b798]={'$like':'%'+_0x3e4912[_0xe9f0('0x43')]['filter']+'%'};return _0x149cc2;})});}_0x344755=_['merge']({},_0x344755,_0x3e4912['options']);return _0x242895[_0xe9f0('0xe1')](_0x344755);}})['then'](function(_0x35a944){if(_0x35a944){_0x7b4b1=_0x35a944['length'];if(!_0x3e4912['query'][_0xe9f0('0xd6')]('nolimit')){_0x344755[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x3e4912[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x344755['offset']=qs[_0xe9f0('0x22')](_0x3e4912['query'][_0xe9f0('0x22')]);}return _0x242895[_0xe9f0('0xe1')](_0x344755);}})[_0xe9f0('0x14')](function(_0x591513){if(_0x591513){return _0x591513?{'count':_0x7b4b1,'rows':_0x591513}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x1ee162,null))[_0xe9f0('0x1e')](handleError(_0x1ee162,null));};exports[_0xe9f0('0xe2')]=function(_0x562b95,_0x53ad49){var _0x257fc2={};var _0x58c366={};var _0x306620;var _0x51614c;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x562b95[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x53ad49,null))[_0xe9f0('0x14')](function(_0x3db1f8){if(_0x3db1f8){_0x306620=_0x3db1f8;_0x58c366[_0xe9f0('0x56')]=_['keys'](db[_0xe9f0('0xe3')]['rawAttributes']);_0x58c366[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x562b95[_0xe9f0('0x43')]);_0x58c366[_0xe9f0('0x5a')]=_['intersection'](_0x58c366[_0xe9f0('0x56')],_0x58c366[_0xe9f0('0x43')]);_0x257fc2[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x58c366[_0xe9f0('0x56')],qs['fields'](_0x562b95[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x257fc2[_0xe9f0('0x46')]=_0x257fc2[_0xe9f0('0x46')]['length']?_0x257fc2[_0xe9f0('0x46')]:_0x58c366[_0xe9f0('0x56')];_0x257fc2[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x562b95[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x257fc2[_0xe9f0('0x41')]=qs['filters'](_[_0xe9f0('0xd4')](_0x562b95[_0xe9f0('0x43')],_0x58c366[_0xe9f0('0x5a')]));if(_0x562b95[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x257fc2[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x257fc2[_0xe9f0('0x41')],{'$or':_['map'](_0x257fc2[_0xe9f0('0x46')],function(_0x400ed1){var _0x576f20={};_0x576f20[_0x400ed1]={'$like':'%'+_0x562b95[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x576f20;})});}_0x257fc2=_[_0xe9f0('0x5d')]({},_0x257fc2,_0x562b95['options']);return _0x306620['getGroups'](_0x257fc2);}})[_0xe9f0('0x14')](function(_0x58acdd){if(_0x58acdd){_0x51614c=_0x58acdd[_0xe9f0('0x4a')];if(!_0x562b95[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x257fc2['limit']=qs[_0xe9f0('0x24')](_0x562b95['query']['limit']);_0x257fc2[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x562b95[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0x306620[_0xe9f0('0xe2')](_0x257fc2);}})[_0xe9f0('0x14')](function(_0x4e3d20){if(_0x4e3d20){return _0x4e3d20?{'count':_0x51614c,'rows':_0x4e3d20}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x53ad49,null))['catch'](handleError(_0x53ad49,null));};exports[_0xe9f0('0xe4')]=function(_0x2ff309,_0x193cb2){var _0x3cb18a={'raw':!![],'where':{}};var _0x5afb5c={};var _0x3ab841={'count':0x0,'rows':[]};return db[_0xe9f0('0x42')]['findOne']({'where':{'id':_0x2ff309[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x193cb2,null))[_0xe9f0('0x14')](function(_0x58a314){if(_0x58a314){_0x5afb5c['model']=_['keys'](db[_0xe9f0('0xe5')][_0xe9f0('0x3d')]);_0x5afb5c['query']=_[_0xe9f0('0x58')](_0x2ff309[_0xe9f0('0x43')]);_0x5afb5c[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x5afb5c[_0xe9f0('0x56')],_0x5afb5c[_0xe9f0('0x43')]);_0x3cb18a[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x5afb5c['model'],qs[_0xe9f0('0x5c')](_0x2ff309[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x3cb18a[_0xe9f0('0x46')]=_0x3cb18a[_0xe9f0('0x46')]['length']?_0x3cb18a[_0xe9f0('0x46')]:_0x5afb5c['model'];if(!_0x2ff309[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x3cb18a[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x2ff309['query'][_0xe9f0('0x24')]);_0x3cb18a[_0xe9f0('0x22')]=qs['offset'](_0x2ff309[_0xe9f0('0x43')][_0xe9f0('0x22')]);}_0x3cb18a['order']=qs[_0xe9f0('0xd3')](_0x2ff309[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x3cb18a[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x2ff309[_0xe9f0('0x43')],_0x5afb5c[_0xe9f0('0x5a')]));_0x3cb18a[_0xe9f0('0x41')]['UserId']=_0x58a314['id'];if(_0x2ff309[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x3cb18a[_0xe9f0('0x41')]=_['merge'](_0x3cb18a['where'],{'$or':_[_0xe9f0('0x35')](_0x3cb18a[_0xe9f0('0x46')],function(_0x5cab9d){var _0x3a6e4e={};_0x3a6e4e[_0x5cab9d]={'$like':'%'+_0x2ff309['query']['filter']+'%'};return _0x3a6e4e;})});}_0x3cb18a=_['merge']({},_0x3cb18a,_0x2ff309['options']);return db[_0xe9f0('0xe5')][_0xe9f0('0x25')]({'where':_0x3cb18a['where']})[_0xe9f0('0x14')](function(_0x3fe6ea){_0x3ab841['count']=_0x3fe6ea;if(_0x2ff309[_0xe9f0('0x43')][_0xe9f0('0x44')]){_0x3cb18a['include']=[{'all':!![]}];}return db['VoiceRecording'][_0xe9f0('0x47')](_0x3cb18a);})['then'](function(_0x27f0d9){_0x3ab841[_0xe9f0('0x4d')]=_0x27f0d9;return _0x3ab841;});}})[_0xe9f0('0x14')](respondWithFilteredResult(_0x193cb2,_0x3cb18a))[_0xe9f0('0x1e')](handleError(_0x193cb2,null));};exports['getScreenRecordings']=function(_0x484e2d,_0xa27b3c){var _0x17ee38={'raw':!![],'where':{}};var _0x3233f5={};var _0x1cf653={'count':0x0,'rows':[]};return db['User'][_0xe9f0('0xd2')]({'where':{'id':_0x484e2d['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0xa27b3c,null))[_0xe9f0('0x14')](function(_0x2e2fb9){if(_0x2e2fb9){_0x3233f5['model']=_[_0xe9f0('0x58')](db[_0xe9f0('0xe6')]['rawAttributes']);_0x3233f5['query']=_[_0xe9f0('0x58')](_0x484e2d['query']);_0x3233f5['filters']=_[_0xe9f0('0x5b')](_0x3233f5['model'],_0x3233f5[_0xe9f0('0x43')]);_0x17ee38[_0xe9f0('0x46')]=_['intersection'](_0x3233f5[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x484e2d[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x17ee38[_0xe9f0('0x46')]=_0x17ee38[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x17ee38[_0xe9f0('0x46')]:_0x3233f5[_0xe9f0('0x56')];if(!_0x484e2d['query']['hasOwnProperty']('nolimit')){_0x17ee38[_0xe9f0('0x24')]=qs['limit'](_0x484e2d['query']['limit']);_0x17ee38[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x484e2d[_0xe9f0('0x43')][_0xe9f0('0x22')]);}_0x17ee38[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x484e2d[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x17ee38[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x484e2d['query'],_0x3233f5[_0xe9f0('0x5a')]));_0x17ee38[_0xe9f0('0x41')][_0xe9f0('0xe7')]=_0x2e2fb9['id'];if(_0x484e2d[_0xe9f0('0x43')]['filter']){_0x17ee38['where']=_[_0xe9f0('0x5d')](_0x17ee38['where'],{'$or':_['map'](_0x17ee38[_0xe9f0('0x46')],function(_0x32c83c){var _0x5d094c={};_0x5d094c[_0x32c83c]={'$like':'%'+_0x484e2d[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x5d094c;})});}_0x17ee38=_['merge']({},_0x17ee38,_0x484e2d['options']);return db[_0xe9f0('0xe6')]['count']({'where':_0x17ee38[_0xe9f0('0x41')]})[_0xe9f0('0x14')](function(_0x56389c){_0x1cf653[_0xe9f0('0x25')]=_0x56389c;if(_0x484e2d[_0xe9f0('0x43')][_0xe9f0('0x44')]){_0x17ee38[_0xe9f0('0x45')]=[{'all':!![]}];}return db[_0xe9f0('0xe6')][_0xe9f0('0x47')](_0x17ee38);})[_0xe9f0('0x14')](function(_0x531e4f){_0x1cf653['rows']=_0x531e4f;return _0x1cf653;});}})['then'](respondWithFilteredResult(_0xa27b3c,_0x17ee38))[_0xe9f0('0x1e')](handleError(_0xa27b3c,null));};exports[_0xe9f0('0xe8')]=function(_0x5b50c5,_0x5f55f8){var _0xecf079={};var _0x11897a={};var _0x2c2e0c;var _0x506e4f;return db['User']['findOne']({'where':{'id':_0x5b50c5[_0xe9f0('0x55')]['id']}})['then'](handleEntityNotFound(_0x5f55f8,null))[_0xe9f0('0x14')](function(_0x2ec29e){if(_0x2ec29e){_0x2c2e0c=_0x2ec29e;_0x11897a['model']=_[_0xe9f0('0x58')](db['ChatInteraction']['rawAttributes']);_0x11897a[_0xe9f0('0x43')]=_['keys'](_0x5b50c5['query']);_0x11897a[_0xe9f0('0x5a')]=_['intersection'](_0x11897a[_0xe9f0('0x56')],_0x11897a[_0xe9f0('0x43')]);_0xecf079[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x11897a[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x5b50c5['query'][_0xe9f0('0x5c')]));_0xecf079[_0xe9f0('0x46')]=_0xecf079[_0xe9f0('0x46')]['length']?_0xecf079[_0xe9f0('0x46')]:_0x11897a['model'];_0xecf079['order']=qs[_0xe9f0('0xd3')](_0x5b50c5[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0xecf079[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x5b50c5[_0xe9f0('0x43')],_0x11897a[_0xe9f0('0x5a')]));if(_0x5b50c5[_0xe9f0('0x43')]['filter']){_0xecf079['where']=_[_0xe9f0('0x5d')](_0xecf079[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0xecf079[_0xe9f0('0x46')],function(_0x330367){var _0x2000d0={};_0x2000d0[_0x330367]={'$like':'%'+_0x5b50c5['query'][_0xe9f0('0x33')]+'%'};return _0x2000d0;})});}_0xecf079=_['merge']({},_0xecf079,_0x5b50c5[_0xe9f0('0x5e')]);return _0x2c2e0c[_0xe9f0('0xe8')](_0xecf079);}})[_0xe9f0('0x14')](function(_0xb366e){if(_0xb366e){_0x506e4f=_0xb366e[_0xe9f0('0x4a')];if(!_0x5b50c5['query'][_0xe9f0('0xd6')]('nolimit')){_0xecf079['limit']=qs[_0xe9f0('0x24')](_0x5b50c5[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0xecf079['offset']=qs[_0xe9f0('0x22')](_0x5b50c5['query'][_0xe9f0('0x22')]);}return _0x2c2e0c[_0xe9f0('0xe8')](_0xecf079);}})[_0xe9f0('0x14')](function(_0x15fd9c){if(_0x15fd9c){return _0x15fd9c?{'count':_0x506e4f,'rows':_0x15fd9c}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x5f55f8,null))[_0xe9f0('0x1e')](handleError(_0x5f55f8,null));};exports[_0xe9f0('0xe9')]=function(_0x28dd42,_0x17cee5){var _0x31c39f={};var _0x3a3949={};var _0x5e77f5;var _0x36b491;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x28dd42[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x17cee5,null))[_0xe9f0('0x14')](function(_0x2f036a){if(_0x2f036a){_0x5e77f5=_0x2f036a;_0x3a3949[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db['OpenchannelInteraction']['rawAttributes']);_0x3a3949[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x28dd42[_0xe9f0('0x43')]);_0x3a3949[_0xe9f0('0x5a')]=_['intersection'](_0x3a3949[_0xe9f0('0x56')],_0x3a3949[_0xe9f0('0x43')]);_0x31c39f['attributes']=_[_0xe9f0('0x5b')](_0x3a3949[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x28dd42[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x31c39f[_0xe9f0('0x46')]=_0x31c39f['attributes'][_0xe9f0('0x4a')]?_0x31c39f[_0xe9f0('0x46')]:_0x3a3949[_0xe9f0('0x56')];_0x31c39f[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x28dd42['query']['sort']);_0x31c39f[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x28dd42[_0xe9f0('0x43')],_0x3a3949[_0xe9f0('0x5a')]));if(_0x28dd42[_0xe9f0('0x43')]['filter']){_0x31c39f[_0xe9f0('0x41')]=_['merge'](_0x31c39f[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0x31c39f[_0xe9f0('0x46')],function(_0x39e37e){var _0x3bad57={};_0x3bad57[_0x39e37e]={'$like':'%'+_0x28dd42[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x3bad57;})});}_0x31c39f=_[_0xe9f0('0x5d')]({},_0x31c39f,_0x28dd42[_0xe9f0('0x5e')]);return _0x5e77f5[_0xe9f0('0xe9')](_0x31c39f);}})[_0xe9f0('0x14')](function(_0x10d035){if(_0x10d035){_0x36b491=_0x10d035[_0xe9f0('0x4a')];if(!_0x28dd42[_0xe9f0('0x43')]['hasOwnProperty'](_0xe9f0('0xe0'))){_0x31c39f[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x28dd42[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x31c39f[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x28dd42[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0x5e77f5[_0xe9f0('0xe9')](_0x31c39f);}})[_0xe9f0('0x14')](function(_0x4cfaa0){if(_0x4cfaa0){return _0x4cfaa0?{'count':_0x36b491,'rows':_0x4cfaa0}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x17cee5,null))[_0xe9f0('0x1e')](handleError(_0x17cee5,null));};exports[_0xe9f0('0xea')]=function(_0x47537d,_0x3b3117){var _0x5e2adc={'raw':!![],'where':{}};var _0x398c4a={};var _0x29982b={'count':0x0,'rows':[]};return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x47537d['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x3b3117,null))[_0xe9f0('0x14')](function(_0x5b5004){if(_0x5b5004){_0x398c4a[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db[_0xe9f0('0xeb')]['rawAttributes']);_0x398c4a[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x47537d[_0xe9f0('0x43')]);_0x398c4a[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x398c4a[_0xe9f0('0x56')],_0x398c4a[_0xe9f0('0x43')]);_0x5e2adc[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x398c4a[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x47537d['query']['fields']));_0x5e2adc[_0xe9f0('0x46')]=_0x5e2adc[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x5e2adc[_0xe9f0('0x46')]:_0x398c4a[_0xe9f0('0x56')];if(!_0x47537d[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x5e2adc[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x47537d[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x5e2adc[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x47537d[_0xe9f0('0x43')][_0xe9f0('0x22')]);}_0x5e2adc[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x47537d['query'][_0xe9f0('0xd3')]);_0x5e2adc[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x47537d[_0xe9f0('0x43')],_0x398c4a[_0xe9f0('0x5a')]));_0x5e2adc[_0xe9f0('0x41')][_0xe9f0('0xe7')]=_0x5b5004['id'];if(_0x47537d[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x5e2adc[_0xe9f0('0x41')]=_['merge'](_0x5e2adc['where'],{'$or':_[_0xe9f0('0x35')](_0x5e2adc[_0xe9f0('0x46')],function(_0x49b411){var _0x444377={};_0x444377[_0x49b411]={'$like':'%'+_0x47537d['query']['filter']+'%'};return _0x444377;})});}_0x5e2adc=_[_0xe9f0('0x5d')]({},_0x5e2adc,_0x47537d[_0xe9f0('0x5e')]);return db[_0xe9f0('0xeb')][_0xe9f0('0x25')]({'where':_0x5e2adc[_0xe9f0('0x41')]})[_0xe9f0('0x14')](function(_0x413808){_0x29982b[_0xe9f0('0x25')]=_0x413808;if(_0x47537d['query'][_0xe9f0('0x44')]){_0x5e2adc[_0xe9f0('0x45')]=[{'all':!![]}];}return db[_0xe9f0('0xeb')][_0xe9f0('0x47')](_0x5e2adc);})[_0xe9f0('0x14')](function(_0x45e657){_0x29982b[_0xe9f0('0x4d')]=_0x45e657;return _0x29982b;});}})[_0xe9f0('0x14')](respondWithFilteredResult(_0x3b3117,_0x5e2adc))[_0xe9f0('0x1e')](handleError(_0x3b3117,null));};exports[_0xe9f0('0xec')]=function(_0x31a31e,_0xb4687b){var _0x1d3e63={};var _0xf0dfda={};var _0x145808;var _0x2e1ee5;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x31a31e[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0xb4687b,null))['then'](function(_0x2ec00f){if(_0x2ec00f){_0x145808=_0x2ec00f;_0xf0dfda['model']=_[_0xe9f0('0x58')](db[_0xe9f0('0xed')][_0xe9f0('0x3d')]);_0xf0dfda['query']=_[_0xe9f0('0x58')](_0x31a31e[_0xe9f0('0x43')]);_0xf0dfda[_0xe9f0('0x5a')]=_['intersection'](_0xf0dfda[_0xe9f0('0x56')],_0xf0dfda[_0xe9f0('0x43')]);_0x1d3e63['attributes']=_['intersection'](_0xf0dfda['model'],qs[_0xe9f0('0x5c')](_0x31a31e[_0xe9f0('0x43')]['fields']));_0x1d3e63['attributes']=_0x1d3e63[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x1d3e63[_0xe9f0('0x46')]:_0xf0dfda[_0xe9f0('0x56')];_0x1d3e63[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x31a31e[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x1d3e63[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x31a31e[_0xe9f0('0x43')],_0xf0dfda[_0xe9f0('0x5a')]));if(_0x31a31e[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x1d3e63['where']=_['merge'](_0x1d3e63[_0xe9f0('0x41')],{'$or':_['map'](_0x1d3e63[_0xe9f0('0x46')],function(_0x3930ac){var _0x621209={};_0x621209[_0x3930ac]={'$like':'%'+_0x31a31e[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x621209;})});}_0x1d3e63=_['merge']({},_0x1d3e63,_0x31a31e[_0xe9f0('0x5e')]);return _0x145808[_0xe9f0('0xec')](_0x1d3e63);}})['then'](function(_0x5029d0){if(_0x5029d0){_0x2e1ee5=_0x5029d0[_0xe9f0('0x4a')];if(!_0x31a31e['query']['hasOwnProperty'](_0xe9f0('0xe0'))){_0x1d3e63[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x31a31e[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x1d3e63[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x31a31e['query'][_0xe9f0('0x22')]);}return _0x145808[_0xe9f0('0xec')](_0x1d3e63);}})[_0xe9f0('0x14')](function(_0x22d847){if(_0x22d847){return _0x22d847?{'count':_0x2e1ee5,'rows':_0x22d847}:null;}})[_0xe9f0('0x14')](respondWithResult(_0xb4687b,null))['catch'](handleError(_0xb4687b,null));};exports[_0xe9f0('0xee')]=function(_0x447856,_0x1e5045){var _0x257745={};var _0x1f29bd={};var _0x30351c;var _0x2274f7;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x447856[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x1e5045,null))[_0xe9f0('0x14')](function(_0x1ab82f){if(_0x1ab82f){_0x30351c=_0x1ab82f;_0x1f29bd[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db['FaxInteraction'][_0xe9f0('0x3d')]);_0x1f29bd[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x447856['query']);_0x1f29bd[_0xe9f0('0x5a')]=_['intersection'](_0x1f29bd[_0xe9f0('0x56')],_0x1f29bd[_0xe9f0('0x43')]);_0x257745[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x1f29bd['model'],qs[_0xe9f0('0x5c')](_0x447856[_0xe9f0('0x43')]['fields']));_0x257745['attributes']=_0x257745[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x257745['attributes']:_0x1f29bd[_0xe9f0('0x56')];_0x257745['order']=qs[_0xe9f0('0xd3')](_0x447856[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x257745['where']=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x447856[_0xe9f0('0x43')],_0x1f29bd[_0xe9f0('0x5a')]));if(_0x447856[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x257745[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x257745[_0xe9f0('0x41')],{'$or':_['map'](_0x257745[_0xe9f0('0x46')],function(_0x2c4d7f){var _0x5167d4={};_0x5167d4[_0x2c4d7f]={'$like':'%'+_0x447856[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x5167d4;})});}_0x257745=_[_0xe9f0('0x5d')]({},_0x257745,_0x447856[_0xe9f0('0x5e')]);return _0x30351c[_0xe9f0('0xee')](_0x257745);}})[_0xe9f0('0x14')](function(_0x6d9bd){if(_0x6d9bd){_0x2274f7=_0x6d9bd['length'];if(!_0x447856[_0xe9f0('0x43')]['hasOwnProperty']('nolimit')){_0x257745[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x447856[_0xe9f0('0x43')]['limit']);_0x257745[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x447856[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0x30351c['getFaxInteractions'](_0x257745);}})[_0xe9f0('0x14')](function(_0x14139d){if(_0x14139d){return _0x14139d?{'count':_0x2274f7,'rows':_0x14139d}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x1e5045,null))[_0xe9f0('0x1e')](handleError(_0x1e5045,null));};exports[_0xe9f0('0xef')]=function(_0x15cca0,_0x52111c){var _0x12e508={};var _0x184c77={};var _0x4f4443;var _0x5c3817;return db[_0xe9f0('0x42')]['findOne']({'where':{'id':_0x15cca0['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x52111c,null))[_0xe9f0('0x14')](function(_0x47295d){if(_0x47295d){_0x4f4443=_0x47295d;_0x184c77['model']=_['keys'](db[_0xe9f0('0xf0')][_0xe9f0('0x3d')]);_0x184c77['query']=_[_0xe9f0('0x58')](_0x15cca0[_0xe9f0('0x43')]);_0x184c77[_0xe9f0('0x5a')]=_['intersection'](_0x184c77[_0xe9f0('0x56')],_0x184c77[_0xe9f0('0x43')]);_0x12e508['attributes']=_[_0xe9f0('0x5b')](_0x184c77[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x15cca0[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x12e508['attributes']=_0x12e508[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x12e508[_0xe9f0('0x46')]:_0x184c77[_0xe9f0('0x56')];_0x12e508[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x15cca0[_0xe9f0('0x43')]['sort']);_0x12e508['where']=qs['filters'](_[_0xe9f0('0xd4')](_0x15cca0['query'],_0x184c77[_0xe9f0('0x5a')]));if(_0x15cca0['query'][_0xe9f0('0x33')]){_0x12e508[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x12e508['where'],{'$or':_[_0xe9f0('0x35')](_0x12e508[_0xe9f0('0x46')],function(_0x2c8f67){var _0x27746c={};_0x27746c[_0x2c8f67]={'$like':'%'+_0x15cca0[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x27746c;})});}_0x12e508=_[_0xe9f0('0x5d')]({},_0x12e508,_0x15cca0[_0xe9f0('0x5e')]);return _0x4f4443[_0xe9f0('0xef')](_0x12e508);}})[_0xe9f0('0x14')](function(_0x14d906){if(_0x14d906){_0x5c3817=_0x14d906[_0xe9f0('0x4a')];if(!_0x15cca0[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x12e508[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x15cca0[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x12e508[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x15cca0['query']['offset']);}return _0x4f4443[_0xe9f0('0xef')](_0x12e508);}})[_0xe9f0('0x14')](function(_0x15fe35){if(_0x15fe35){return _0x15fe35?{'count':_0x5c3817,'rows':_0x15fe35}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x52111c,null))['catch'](handleError(_0x52111c,null));};exports[_0xe9f0('0xf1')]=function(_0x519179,_0x545b75,_0xab8d50){var _0x346b16;var _0xc0e487;var _0x268a6b;var _0x8bdc85=!_[_0xe9f0('0x6a')](_0x519179[_0xe9f0('0x55')]['id'])?_0x519179[_0xe9f0('0x55')]['id']:!_[_0xe9f0('0x6a')](_0x519179['user']['id'])?_0x519179[_0xe9f0('0x2e')]['id']:null;return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x8bdc85,'role':{'$or':[_0xe9f0('0x2c'),_0xe9f0('0x2e'),'agent']}},'attributes':['id','name',_0xe9f0('0xf2'),'mobile','role',_0xe9f0('0x65'),'loginInPause']})['then'](function(_0x15f8c1){if(_0x15f8c1){if(_0x15f8c1[_0xe9f0('0x2b')]===_0xe9f0('0x30')){_0x346b16=_0x15f8c1;if(_0x519179['body'][_0xe9f0('0xa6')]){_0x268a6b=util['format'](_0xe9f0('0xf3'),_0x346b16[_0x519179[_0xe9f0('0x60')]['interface']]);}else if(_0x519179[_0xe9f0('0x60')]['intrf']){_0x268a6b=util[_0xe9f0('0xf4')]('SIP/%s',_0x519179[_0xe9f0('0x60')][_0xe9f0('0xf5')]);}else{_0x268a6b=util[_0xe9f0('0xf4')]('SIP/%s',_0x346b16[_0xe9f0('0x38')]);}socket['to'](util['format'](_0xe9f0('0xf6'),_0x346b16[_0xe9f0('0x38')]))['emit'](_0xe9f0('0xf7'),{'user':{'id':_0x346b16['id'],'name':_0x346b16['name']},'ip':_0x519179[_0xe9f0('0xf8')]['x-forwarded-for']||_0x519179['connection']['remoteAddress']||_0x519179[_0xe9f0('0xf9')][_0xe9f0('0xfa')]||_0x519179[_0xe9f0('0xfb')][_0xe9f0('0xf9')]['remoteAddress']});return db[_0xe9f0('0xb2')][_0xe9f0('0x29')]({'where':{'membername':_0x346b16['name']},'individualHooks':!![]});}}else{throw new db[(_0xe9f0('0x96'))]['ValidationError'](_0xe9f0('0xfc'));}})['then'](function(){if(_0x346b16){return _0x346b16['getVoiceQueues']({'raw':!![]});}})[_0xe9f0('0x14')](function(_0x518f57){if(_0x346b16){var _0x4e40e5=[];if(_0x518f57){_0xc0e487=_0x518f57;if(_0xc0e487['length']){for(var _0x51e1d4=0x0;_0x51e1d4<_0xc0e487[_0xe9f0('0x4a')];_0x51e1d4++){_0x4e40e5[_0xe9f0('0x4b')]({'membername':_0x346b16[_0xe9f0('0x38')],'UserId':_0x346b16['id'],'queue_name':_0xc0e487[_0x51e1d4][_0xe9f0('0x38')],'VoiceQueueId':_0xc0e487[_0x51e1d4]['id'],'interface':_0x268a6b,'paused':_0x346b16[_0xe9f0('0xa4')]||![],'penalty':_0xc0e487[_0x51e1d4][_0xe9f0('0xfd')]||0x0});}return BPromise['each'](_0x4e40e5,function(_0x3efa36){return db[_0xe9f0('0xb2')][_0xe9f0('0xb3')](_0x3efa36);});}}}})[_0xe9f0('0x14')](function(){if(_0x346b16){return db['MemberReport'][_0xe9f0('0x47')]({'where':{'membername':_0x346b16[_0xe9f0('0x38')],'exitAt':null}});}})['then'](function(_0x490bc4){if(_0x346b16){var _0x47c5e6=[];_0x490bc4['forEach'](function(_0x3fc6c7){_0x47c5e6[_0xe9f0('0x4b')](_0x3fc6c7[_0xe9f0('0x28')]({'exitAt':moment()[_0xe9f0('0xf4')](_0xe9f0('0xfe'))}));});return BPromise[_0xe9f0('0x8e')](_0x47c5e6);}})[_0xe9f0('0x14')](function(){if(_0x346b16){var _0x3c96f3=[];var _0x460943=[];var _0x4c5bde=utils[_0xe9f0('0xff')]();var _0x479ce3={'membername':_0x346b16[_0xe9f0('0x38')],'interface':_0x268a6b,'enterAt':moment()[_0xe9f0('0xf4')](_0xe9f0('0xfe')),'role':_0x346b16[_0xe9f0('0x2b')],'internal':_0x346b16[_0xe9f0('0x65')]};_0x4c5bde[_0xe9f0('0x100')](function(_0x2437c3){_0x3c96f3['push'](_['merge']({'channel':_0x2437c3,'type':_0xe9f0('0x101'),'data1':_0x519179[_0xe9f0('0x60')][_0xe9f0('0x102')],'data2':_0x268a6b},_0x479ce3));if(_0x346b16[_0xe9f0('0xa4')]){_0x460943[_0xe9f0('0x4b')](_['merge']({'channel':_0x2437c3,'type':_0xe9f0('0x103'),'data1':_0xe9f0('0x104')},_0x479ce3));}});return db[_0xe9f0('0x105')][_0xe9f0('0x8b')](_0x3c96f3[_0xe9f0('0x106')](_0x460943),{'individualHooks':!![]});}})['then'](function(){if(_0x346b16){return _0x346b16[_0xe9f0('0x28')]({'online':!![],'lastLoginAt':moment()[_0xe9f0('0xf4')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x346b16['loginInPause']||![],'mailPause':_0x346b16[_0xe9f0('0xa4')]||![],'chatPause':_0x346b16[_0xe9f0('0xa4')]||![],'faxPause':_0x346b16[_0xe9f0('0xa4')]||![],'smsPause':_0x346b16[_0xe9f0('0xa4')]||![],'openchannelPause':_0x346b16[_0xe9f0('0xa4')]||![],'whatsappPause':_0x346b16[_0xe9f0('0xa4')]||![],'pauseType':_0x346b16['loginInPause']?_0xe9f0('0x104'):null,'interface':_0x268a6b,'lastPauseAt':moment()[_0xe9f0('0xf4')](_0xe9f0('0xfe'))});}})[_0xe9f0('0x14')](function(_0x44b3fe){if(_0x519179[_0xe9f0('0x107')]){return _0xab8d50();}else{return BPromise[_0xe9f0('0x108')](_0x44b3fe)[_0xe9f0('0x14')](respondWithResult(_0x545b75,null));}})[_0xe9f0('0x1e')](handleError(_0x545b75,null));};exports[_0xe9f0('0x109')]=function(_0x288ed2,_0x1bc1db){var _0x57576c;return db['User'][_0xe9f0('0x36')]({'where':{'id':_0x288ed2['params']['id'],'role':_0xe9f0('0x30')},'attributes':['id','name',_0xe9f0('0x2b')]})[_0xe9f0('0x14')](handleEntityNotFound(_0x1bc1db,null))[_0xe9f0('0x14')](function(_0xb01504){if(_0xb01504){_0x57576c=_0xb01504;return db[_0xe9f0('0xb2')][_0xe9f0('0x29')]({'where':{'membername':_0x57576c[_0xe9f0('0x38')]},'individualHooks':!![]});}})['then'](function(){return db[_0xe9f0('0x105')][_0xe9f0('0x47')]({'where':{'membername':_0x57576c[_0xe9f0('0x38')],'exitAt':null}});})[_0xe9f0('0x14')](function(_0x26437c){var _0x498654=[];_0x26437c['forEach'](function(_0x3a1b0f){_0x498654[_0xe9f0('0x4b')](_0x3a1b0f[_0xe9f0('0x28')]({'exitAt':moment()[_0xe9f0('0xf4')](_0xe9f0('0xfe'))}));});return BPromise[_0xe9f0('0x8e')](_0x498654);})[_0xe9f0('0x14')](function(){return _0x57576c[_0xe9f0('0x28')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xe9f0('0x14')](respondWithResult(_0x1bc1db,null))[_0xe9f0('0x1e')](handleError(_0x1bc1db,null));};exports[_0xe9f0('0x10a')]=function(_0x5bb8ba,_0x348567){var _0x52f5ab;return db[_0xe9f0('0xb2')][_0xe9f0('0x28')]({'paused':0x1},{'where':{'UserId':_0x5bb8ba['params']['id']},'individualHooks':!![]})[_0xe9f0('0x14')](function(){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x5bb8ba['params']['id'],'role':_0xe9f0('0x30')},'attributes':['id','name','role',_0xe9f0('0x65'),'interface']});})['then'](handleEntityNotFound(_0x348567,null))['then'](function(_0x4d4c0d){if(_0x4d4c0d){_0x52f5ab=_0x4d4c0d;return respondWithRpcPromise(_0xe9f0('0x10b'),_0xe9f0('0x10a'),{'id':_0x52f5ab['id'],'name':_0x52f5ab[_0xe9f0('0x38')],'pause':!![]});}})[_0xe9f0('0x14')](function(){if(_0x52f5ab){return db['MemberReport'][_0xe9f0('0x47')]({'where':{'membername':_0x52f5ab[_0xe9f0('0x38')],'type':_0xe9f0('0x103'),'exitAt':null}});}})[_0xe9f0('0x14')](function(_0x27df5d){if(_0x27df5d['length']){var _0x4644c4=moment()[_0xe9f0('0xf4')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x1eaa38=0x0,_0x741522=_0x27df5d[_0xe9f0('0x4a')];_0x1eaa38<_0x741522;_0x1eaa38++){_0x27df5d[_0x1eaa38]['updateAttributes']({'exitAt':_0x4644c4});}}})[_0xe9f0('0x14')](function(){var _0x49e4b7=[];var _0x100878=utils['getChannels']();_0x100878['forEach'](function(_0x112de5){_0x49e4b7[_0xe9f0('0x4b')]({'channel':_0x112de5,'membername':_0x52f5ab[_0xe9f0('0x38')],'interface':_['isNil'](_0x52f5ab['interface'])?util[_0xe9f0('0xf4')](_0xe9f0('0xb1'),_0x52f5ab[_0xe9f0('0x38')]):_0x52f5ab[_0xe9f0('0xa6')],'type':_0xe9f0('0x103'),'enterAt':moment()[_0xe9f0('0xf4')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x5bb8ba[_0xe9f0('0x60')][_0xe9f0('0x10c')]||_0xe9f0('0x10d'),'role':_0x52f5ab[_0xe9f0('0x2b')],'internal':_0x52f5ab[_0xe9f0('0x65')]});});return db[_0xe9f0('0x105')][_0xe9f0('0x8b')](_0x49e4b7,{'individualHooks':!![]});})['then'](function(){return _0x52f5ab['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x5bb8ba[_0xe9f0('0x60')][_0xe9f0('0x10c')]||_0xe9f0('0x10d'),'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});})['then'](respondWithResult(_0x348567,null))[_0xe9f0('0x1e')](handleError(_0x348567,null));};exports['unpause']=function(_0xe4cee8,_0x324007){var _0x1996f4;return db['User'][_0xe9f0('0x36')]({'where':{'id':_0xe4cee8[_0xe9f0('0x55')]['id']},'attributes':['id',_0xe9f0('0x38'),'role',_0xe9f0('0xa5'),_0xe9f0('0x10e'),_0xe9f0('0x10f'),_0xe9f0('0x110'),'openchannelPause',_0xe9f0('0x111'),_0xe9f0('0x112'),_0xe9f0('0x113'),'lastPauseAt']})[_0xe9f0('0x14')](handleEntityNotFound(_0x324007,null))[_0xe9f0('0x14')](function(_0x1f106e){if(_0x1f106e){_0x1996f4=_0x1f106e;if(_0xe4cee8[_0xe9f0('0x60')][_0xe9f0('0xa3')]&&!utils['isValidChannel'](_0xe4cee8[_0xe9f0('0x60')][_0xe9f0('0xa3')])){throw new db[(_0xe9f0('0x96'))]['ValidationError']('Unknown\x20channel');}switch(_0xe4cee8[_0xe9f0('0x60')]['channel']){case _0xe9f0('0xae'):return respondWithRpcPromise(_0xe9f0('0x10b'),_0xe9f0('0x114'),{'id':_0x1996f4['id'],'name':_0x1996f4['name'],'pause':![]})[_0xe9f0('0x14')](function(){return db[_0xe9f0('0xb2')]['update']({'paused':0x0},{'where':{'UserId':_0x1996f4['id']},'individualHooks':!![]});})[_0xe9f0('0x14')](function(){return db[_0xe9f0('0x105')]['find']({'where':{'channel':_0xe4cee8[_0xe9f0('0x60')]['channel'],'membername':_0x1996f4['name'],'type':'PAUSE','exitAt':null}});})[_0xe9f0('0x14')](function(_0x129429){if(_0x129429){return _0x129429[_0xe9f0('0x28')]({'exitAt':moment()[_0xe9f0('0xf4')](_0xe9f0('0xfe')),'data2':_0xe9f0('0x115')},{'individualHooks':!![]});}return null;})[_0xe9f0('0x14')](function(){return _0x1996f4[_0xe9f0('0x28')]({'voicePause':![]});});case'mail':case _0xe9f0('0x4c'):case _0xe9f0('0x50'):case _0xe9f0('0x4f'):case _0xe9f0('0x53'):case _0xe9f0('0x52'):return db[_0xe9f0('0x105')][_0xe9f0('0x36')]({'where':{'channel':_0xe4cee8[_0xe9f0('0x60')][_0xe9f0('0xa3')],'membername':_0x1996f4['name'],'type':_0xe9f0('0x103'),'exitAt':null}})[_0xe9f0('0x14')](function(_0xb736a2){if(_0xb736a2){return _0xb736a2['update']({'exitAt':moment()[_0xe9f0('0xf4')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xe9f0('0x115')},{'individualHooks':!![]});}return null;})[_0xe9f0('0x14')](function(){var _0xd01692={};_[_0xe9f0('0x26')](_0xd01692,util['format'](_0xe9f0('0x116'),_0xe4cee8[_0xe9f0('0x60')][_0xe9f0('0xa3')],_0xe9f0('0x117')),![]);return _0x1996f4[_0xe9f0('0x28')](_0xd01692);});default:return respondWithRpcPromise('QueuePause','unpause',{'id':_0x1996f4['id'],'name':_0x1996f4[_0xe9f0('0x38')],'pause':![]})[_0xe9f0('0x14')](function(){return db[_0xe9f0('0xb2')][_0xe9f0('0x28')]({'paused':0x0},{'where':{'UserId':_0x1996f4['id']}});})[_0xe9f0('0x14')](function(){return db[_0xe9f0('0x105')][_0xe9f0('0x47')]({'where':{'membername':_0x1996f4[_0xe9f0('0x38')],'type':_0xe9f0('0x103'),'exitAt':null}});})[_0xe9f0('0x14')](function(_0x51787a){var _0x4f1ab7=[];_0x51787a[_0xe9f0('0x100')](function(_0x5614b4){_0x4f1ab7[_0xe9f0('0x4b')](_0x5614b4[_0xe9f0('0x28')]({'exitAt':moment()[_0xe9f0('0xf4')](_0xe9f0('0xfe')),'data2':_0xe9f0('0x115')}));});return BPromise[_0xe9f0('0x8e')](_0x4f1ab7);})[_0xe9f0('0x14')](function(){return _0x1996f4['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})['then'](respondWithResult(_0x324007,null))[_0xe9f0('0x1e')](handleError(_0x324007,null));};exports['getTeams']=function(_0x3cda98,_0x293381){var _0x4c604e={};var _0x20921a={};var _0x30c14b;var _0x1a2e02;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x3cda98[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x293381,null))[_0xe9f0('0x14')](function(_0x58edfa){if(_0x58edfa){_0x30c14b=_0x58edfa;_0x20921a[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db[_0xe9f0('0x118')][_0xe9f0('0x3d')]);_0x20921a[_0xe9f0('0x43')]=_['keys'](_0x3cda98[_0xe9f0('0x43')]);_0x20921a['filters']=_[_0xe9f0('0x5b')](_0x20921a[_0xe9f0('0x56')],_0x20921a['query']);_0x4c604e[_0xe9f0('0x46')]=_['intersection'](_0x20921a[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x3cda98[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x4c604e[_0xe9f0('0x46')]=_0x4c604e['attributes'][_0xe9f0('0x4a')]?_0x4c604e[_0xe9f0('0x46')]:_0x20921a['model'];_0x4c604e[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x3cda98[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x4c604e[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_['pick'](_0x3cda98['query'],_0x20921a['filters']));if(_0x3cda98[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x4c604e[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x4c604e[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0x4c604e[_0xe9f0('0x46')],function(_0x3f26b4){var _0x1e85d2={};_0x1e85d2[_0x3f26b4]={'$like':'%'+_0x3cda98[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x1e85d2;})});}_0x4c604e=_['merge']({},_0x4c604e,_0x3cda98[_0xe9f0('0x5e')]);return _0x30c14b[_0xe9f0('0x119')](_0x4c604e);}})[_0xe9f0('0x14')](function(_0x3b0c6c){if(_0x3b0c6c){_0x1a2e02=_0x3b0c6c['length'];if(!_0x3cda98[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x4c604e[_0xe9f0('0x24')]=qs['limit'](_0x3cda98['query']['limit']);_0x4c604e['offset']=qs[_0xe9f0('0x22')](_0x3cda98[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0x30c14b[_0xe9f0('0x119')](_0x4c604e);}})[_0xe9f0('0x14')](function(_0x4e64aa){if(_0x4e64aa){return _0x4e64aa?{'count':_0x1a2e02,'rows':_0x4e64aa}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x293381,null))[_0xe9f0('0x1e')](handleError(_0x293381,null));};exports[_0xe9f0('0x11a')]=function(_0x1ff695,_0x379a21){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x1ff695[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x379a21,null))[_0xe9f0('0x14')](function(_0x351b88){if(_0x351b88){var _0x44753d=_0x351b88['get']({'plain':!![]});return _0x351b88[_0xe9f0('0x11a')](_0x1ff695[_0xe9f0('0x60')][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0x1ff695[_0xe9f0('0x60')],['ids','id'])||{})[_0xe9f0('0x14')](function(){for(var _0x86e0fd=0x0;_0x86e0fd<_0x1ff695[_0xe9f0('0x60')][_0xe9f0('0x63')][_0xe9f0('0x4a')];_0x86e0fd++){var _0x3a9668=[];var _0x2fd1e3={};db['Team'][_0xe9f0('0xd2')]({'where':{'id':_0x1ff695[_0xe9f0('0x60')][_0xe9f0('0x63')][_0x86e0fd]}})[_0xe9f0('0x14')](function(_0x10da41){_0x2fd1e3=_0x10da41[_0xe9f0('0x4e')];_0x3a9668[_0xe9f0('0x4b')](_0x10da41[_0xe9f0('0x11b')]()['then'](function(_0xb8b06){for(var _0x9ba1b2=0x0;_0x9ba1b2<_0xb8b06[_0xe9f0('0x4a')];_0x9ba1b2++){_0xb8b06[_0x9ba1b2][_0xe9f0('0x11c')](_0xe9f0('0xa3'),_0xe9f0('0x11d'));}return _0xb8b06;}));_0x3a9668['push'](_0x10da41[_0xe9f0('0x11e')]()['then'](function(_0x2919ca){for(var _0x3536bd=0x0;_0x3536bd<_0x2919ca[_0xe9f0('0x4a')];_0x3536bd++){_0x2919ca[_0x3536bd]['setDataValue']('channel','Chat');}return _0x2919ca;}));_0x3a9668[_0xe9f0('0x4b')](_0x10da41['getMailQueues']()[_0xe9f0('0x14')](function(_0x93c590){for(var _0x6967f6=0x0;_0x6967f6<_0x93c590[_0xe9f0('0x4a')];_0x6967f6++){_0x93c590[_0x6967f6][_0xe9f0('0x11c')](_0xe9f0('0xa3'),_0xe9f0('0x11f'));}return _0x93c590;}));_0x3a9668[_0xe9f0('0x4b')](_0x10da41[_0xe9f0('0x120')]()['then'](function(_0x10ec21){for(var _0x1ed933=0x0;_0x1ed933<_0x10ec21[_0xe9f0('0x4a')];_0x1ed933++){_0x10ec21[_0x1ed933][_0xe9f0('0x11c')](_0xe9f0('0xa3'),'Sms');}return _0x10ec21;}));_0x3a9668[_0xe9f0('0x4b')](_0x10da41[_0xe9f0('0x121')]()['then'](function(_0x22617d){for(var _0x233089=0x0;_0x233089<_0x22617d[_0xe9f0('0x4a')];_0x233089++){_0x22617d[_0x233089][_0xe9f0('0x11c')](_0xe9f0('0xa3'),_0xe9f0('0x122'));}return _0x22617d;}));_0x3a9668['push'](_0x10da41[_0xe9f0('0x123')]()[_0xe9f0('0x14')](function(_0x2aa100){for(var _0x5043bd=0x0;_0x5043bd<_0x2aa100['length'];_0x5043bd++){_0x2aa100[_0x5043bd][_0xe9f0('0x11c')](_0xe9f0('0xa3'),_0xe9f0('0x124'));}return _0x2aa100;}));_0x3a9668[_0xe9f0('0x4b')](_0x10da41['getOpenchannelQueues']()[_0xe9f0('0x14')](function(_0x3942f8){for(var _0x332cc0=0x0;_0x332cc0<_0x3942f8['length'];_0x332cc0++){_0x3942f8[_0x332cc0]['setDataValue'](_0xe9f0('0xa3'),_0xe9f0('0x125'));}return _0x3942f8;}));return BPromise['all'](_0x3a9668);})[_0xe9f0('0x14')](function(_0x273c04){var _0x109d4c=_[_0xe9f0('0x126')](_0x273c04);_0x3a9668=[];return db[_0xe9f0('0x6c')][_0xe9f0('0x127')](function(_0x209d0a){for(var _0x218e83=0x0;_0x218e83<_0x109d4c[_0xe9f0('0x4a')];_0x218e83++){_0x3a9668[_0xe9f0('0x4b')](_0x109d4c[_0x218e83][_0xe9f0('0x128')](_0x44753d['id']),{'transaction':_0x209d0a});}return BPromise[_0xe9f0('0x8e')](_0x3a9668)['then'](function(){if(_0x44753d[_0xe9f0('0xb0')]){return BPromise[_0xe9f0('0x8f')](_[_0xe9f0('0x33')](_0x109d4c,function(_0x3e2fcd){return _0x3e2fcd[_0xe9f0('0x129')](_0xe9f0('0xa3'))===_0xe9f0('0x11d');}),function(_0x589986){return db[_0xe9f0('0xb2')]['upsert']({'membername':_0x44753d['name'],'UserId':_0x44753d['id'],'queue_name':_0x589986[_0xe9f0('0x38')],'VoiceQueueId':_0x589986['id'],'interface':_['isNil'](_0x44753d[_0xe9f0('0xa6')])?util[_0xe9f0('0xf4')](_0xe9f0('0xb1'),_0x44753d['name']):_0x44753d[_0xe9f0('0xa6')],'paused':_0x44753d[_0xe9f0('0xa5')]||![],'penalty':_0x44753d[_0xe9f0('0xa9')]},{'transaction':_0x209d0a});});}else{return;}})[_0xe9f0('0x14')](function(){for(var _0x201d1e=0x0;_0x201d1e<_0x109d4c[_0xe9f0('0x4a')];_0x201d1e++){var _0x2d9456=_0x109d4c[_0x201d1e][_0xe9f0('0x129')](_0xe9f0('0xa3'));var _0x581db3=_0x2d9456+_0xe9f0('0xab');socket['emit'](_0xe9f0('0x2e')+_0x2d9456+_0xe9f0('0xad'),{'UserId':_0x44753d['id'],['queueField']:_0x109d4c[_0x201d1e]['id']});}});});})[_0xe9f0('0x14')](function(){db[_0xe9f0('0x12a')]['findOne']({'where':{'teamId':_0x2fd1e3['id']}})[_0xe9f0('0x14')](function(_0x26b7e9){if(_0x26b7e9){db[_0xe9f0('0x12b')][_0xe9f0('0x90')]({'UserId':_0x1ff695['params']['id'],'VoicePrefixId':_0x26b7e9[_0xe9f0('0x12c')]});}});});}});}})[_0xe9f0('0x14')](respondWithStatusCode(_0x379a21,null))[_0xe9f0('0x1e')](handleError(_0x379a21,null));};exports[_0xe9f0('0x12d')]=function(_0x1484fc,_0x532b2e){return db['User'][_0xe9f0('0xd2')]({'where':{'id':_0x1484fc[_0xe9f0('0x55')]['id']}})['then'](handleEntityNotFound(_0x532b2e,null))[_0xe9f0('0x14')](function(_0xf44411){if(_0xf44411){var _0x21d45b=_0xf44411[_0xe9f0('0x2a')]({'plain':!![]});var _0x4d1c58=_0x1484fc[_0xe9f0('0x43')][_0xe9f0('0x63')];return _0xf44411[_0xe9f0('0x12d')](_0x4d1c58)[_0xe9f0('0x14')](function(){for(var _0x1f1343=0x0;_0x1f1343<_0x4d1c58[_0xe9f0('0x4a')];_0x1f1343++){var _0x22d71b=[];var _0x26ddc4={};db[_0xe9f0('0x118')][_0xe9f0('0xd2')]({'where':{'id':_0x4d1c58[_0x1f1343]}})[_0xe9f0('0x14')](function(_0x293660){_0x26ddc4=_0x293660['dataValues'];_0x22d71b[_0xe9f0('0x4b')](_0x293660['getVoiceQueues']()[_0xe9f0('0x14')](function(_0x1cc518){for(var _0x5d6675=0x0;_0x5d6675<_0x1cc518[_0xe9f0('0x4a')];_0x5d6675++){_0x1cc518[_0x5d6675]['setDataValue'](_0xe9f0('0xa3'),_0xe9f0('0x11d'));}return _0x1cc518;}));_0x22d71b['push'](_0x293660[_0xe9f0('0x11e')]()[_0xe9f0('0x14')](function(_0x25a582){for(var _0x200b46=0x0;_0x200b46<_0x25a582[_0xe9f0('0x4a')];_0x200b46++){_0x25a582[_0x200b46][_0xe9f0('0x11c')]('channel',_0xe9f0('0x12e'));}return _0x25a582;}));_0x22d71b[_0xe9f0('0x4b')](_0x293660[_0xe9f0('0x12f')]()[_0xe9f0('0x14')](function(_0x2c97e2){for(var _0x20a7db=0x0;_0x20a7db<_0x2c97e2[_0xe9f0('0x4a')];_0x20a7db++){_0x2c97e2[_0x20a7db][_0xe9f0('0x11c')](_0xe9f0('0xa3'),'Mail');}return _0x2c97e2;}));_0x22d71b[_0xe9f0('0x4b')](_0x293660[_0xe9f0('0x120')]()['then'](function(_0x1588b8){for(var _0x22a998=0x0;_0x22a998<_0x1588b8['length'];_0x22a998++){_0x1588b8[_0x22a998]['setDataValue'](_0xe9f0('0xa3'),_0xe9f0('0x130'));}return _0x1588b8;}));_0x22d71b[_0xe9f0('0x4b')](_0x293660['getWhatsappQueues']()[_0xe9f0('0x14')](function(_0x42c72e){for(var _0x1575c5=0x0;_0x1575c5<_0x42c72e[_0xe9f0('0x4a')];_0x1575c5++){_0x42c72e[_0x1575c5][_0xe9f0('0x11c')](_0xe9f0('0xa3'),_0xe9f0('0x122'));}return _0x42c72e;}));_0x22d71b[_0xe9f0('0x4b')](_0x293660['getFaxQueues']()[_0xe9f0('0x14')](function(_0x1de62a){for(var _0x21b399=0x0;_0x21b399<_0x1de62a[_0xe9f0('0x4a')];_0x21b399++){_0x1de62a[_0x21b399]['setDataValue']('channel',_0xe9f0('0x124'));}return _0x1de62a;}));_0x22d71b[_0xe9f0('0x4b')](_0x293660[_0xe9f0('0x131')]()['then'](function(_0x18a0b4){for(var _0x4bdf68=0x0;_0x4bdf68<_0x18a0b4[_0xe9f0('0x4a')];_0x4bdf68++){_0x18a0b4[_0x4bdf68][_0xe9f0('0x11c')](_0xe9f0('0xa3'),_0xe9f0('0x125'));}return _0x18a0b4;}));return BPromise['all'](_0x22d71b);})[_0xe9f0('0x14')](function(_0x3c7cf8){var _0x4f5ebb=_[_0xe9f0('0x126')](_0x3c7cf8);_0x22d71b=[];return db[_0xe9f0('0x6c')][_0xe9f0('0x127')](function(_0x56e14e){for(var _0x55dfe5=0x0;_0x55dfe5<_0x4f5ebb['length'];_0x55dfe5++){_0x22d71b['push'](_0x4f5ebb[_0x55dfe5][_0xe9f0('0x132')](_0x21d45b['id']),{'transaction':_0x56e14e});}return BPromise[_0xe9f0('0x8e')](_0x22d71b)[_0xe9f0('0x14')](function(){if(_0x21d45b[_0xe9f0('0xb0')]){return BPromise[_0xe9f0('0x8f')](_[_0xe9f0('0x33')](_0x4f5ebb,function(_0x57460b){return _0x57460b[_0xe9f0('0x129')]('channel')==='Voice';}),function(_0x17b54f){return db[_0xe9f0('0xb2')][_0xe9f0('0x29')]({'where':{'VoiceQueueId':_0x17b54f['id'],'UserId':_0x21d45b['id']},'transaction':_0x56e14e});});}else{return;}})['then'](function(){db['TeamVoicePrefix']['findOne']({'where':{'teamId':_0x26ddc4['id']}})[_0xe9f0('0x14')](function(_0x4560e0){if(_0x4560e0){return db[_0xe9f0('0x12b')][_0xe9f0('0x29')]({'where':{'UserId':_0x21d45b['id'],'VoicePrefixId':_0x4560e0[_0xe9f0('0x4e')][_0xe9f0('0x12c')]}});}});})[_0xe9f0('0x14')](function(){for(var _0x1b593=0x0;_0x1b593<_0x4f5ebb['length'];_0x1b593++){var _0x1c6dbf=_0x4f5ebb[_0x1b593]['getDataValue'](_0xe9f0('0xa3'));var _0x183a72=_0x1c6dbf+_0xe9f0('0xab');socket['emit'](_0xe9f0('0x2e')+_0x1c6dbf+_0xe9f0('0xba'),{'UserId':_0x21d45b['id'],['queueField']:_0x4f5ebb[_0x1b593]['id']});}});});});}});}})[_0xe9f0('0x14')](respondWithStatusCode(_0x532b2e,null))[_0xe9f0('0x1e')](handleError(_0x532b2e,null));};exports[_0xe9f0('0x133')]=function(_0x3cd6d9,_0x205886){var _0x1d6ef1={};var _0x180dcb={};var _0x3d728a;var _0x2462fe;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x3cd6d9[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x205886,null))[_0xe9f0('0x14')](function(_0x5994ec){if(_0x5994ec){_0x3d728a=_0x5994ec;_0x180dcb[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db['CmList'][_0xe9f0('0x3d')]);_0x180dcb[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x3cd6d9[_0xe9f0('0x43')]);_0x180dcb[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x180dcb[_0xe9f0('0x56')],_0x180dcb['query']);_0x1d6ef1[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x180dcb[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x3cd6d9[_0xe9f0('0x43')]['fields']));_0x1d6ef1['attributes']=_0x1d6ef1[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x1d6ef1[_0xe9f0('0x46')]:_0x180dcb['model'];_0x1d6ef1['order']=qs[_0xe9f0('0xd3')](_0x3cd6d9['query'][_0xe9f0('0xd3')]);_0x1d6ef1[_0xe9f0('0x41')]=qs['filters'](_[_0xe9f0('0xd4')](_0x3cd6d9[_0xe9f0('0x43')],_0x180dcb[_0xe9f0('0x5a')]));if(_0x3cd6d9[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x1d6ef1[_0xe9f0('0x41')]=_['merge'](_0x1d6ef1[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0x1d6ef1[_0xe9f0('0x46')],function(_0x282f64){var _0x45bc0c={};_0x45bc0c[_0x282f64]={'$like':'%'+_0x3cd6d9[_0xe9f0('0x43')]['filter']+'%'};return _0x45bc0c;})});}_0x1d6ef1=_[_0xe9f0('0x5d')]({},_0x1d6ef1,_0x3cd6d9[_0xe9f0('0x5e')]);return _0x3d728a[_0xe9f0('0x133')](_0x1d6ef1);}})['then'](function(_0x3ca85d){if(_0x3ca85d){_0x2462fe=_0x3ca85d[_0xe9f0('0x4a')];if(!_0x3cd6d9['query']['hasOwnProperty'](_0xe9f0('0xe0'))){_0x1d6ef1[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x3cd6d9['query'][_0xe9f0('0x24')]);_0x1d6ef1[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x3cd6d9[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0x3d728a[_0xe9f0('0x133')](_0x1d6ef1);}})[_0xe9f0('0x14')](function(_0x50e247){if(_0x50e247){return _0x50e247?{'count':_0x2462fe,'rows':_0x50e247}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x205886,null))[_0xe9f0('0x1e')](handleError(_0x205886,null));};exports['getAgents']=function(_0x937742,_0x5b9b88){var _0x129e43={};var _0x204658={};var _0xddb69d;var _0x42f153;return db[_0xe9f0('0x42')]['findOne']({'where':{'id':_0x937742[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x5b9b88,null))[_0xe9f0('0x14')](function(_0x2f6121){if(_0x2f6121){_0xddb69d=_0x2f6121;_0x204658[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db['User'][_0xe9f0('0x3d')]);_0x204658[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x937742[_0xe9f0('0x43')]);_0x204658[_0xe9f0('0x5a')]=_['intersection'](_0x204658[_0xe9f0('0x56')],_0x204658[_0xe9f0('0x43')]);_0x129e43['attributes']=_[_0xe9f0('0x5b')](_0x204658['model'],qs[_0xe9f0('0x5c')](_0x937742[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x129e43['attributes']=_0x129e43['attributes'][_0xe9f0('0x4a')]?_0x129e43['attributes']:_0x204658[_0xe9f0('0x56')];_0x129e43['order']=qs['sort'](_0x937742['query']['sort']);_0x129e43[_0xe9f0('0x41')]=qs['filters'](_[_0xe9f0('0xd4')](_0x937742[_0xe9f0('0x43')],_0x204658['filters']));if(_0x937742[_0xe9f0('0x43')]['filter']){_0x129e43[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x129e43[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0x129e43[_0xe9f0('0x46')],function(_0x266fc3){var _0x59d971={};_0x59d971[_0x266fc3]={'$like':'%'+_0x937742[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x59d971;})});}_0x129e43['model']=db['User'];_0x129e43['as']=_0xe9f0('0x2f');_0x129e43=_['merge']({},_0x129e43,_0x937742[_0xe9f0('0x5e')]);return _0xddb69d[_0xe9f0('0x11b')]({'include':[_0x129e43]});}})['then'](function(_0x50dae0){if(_0x50dae0){var _0x31ff63={},_0x49de75=[],_0x3cb152=0x0;for(var _0x25c7e4=0x0;_0x25c7e4<_0x50dae0[_0xe9f0('0x4a')];_0x25c7e4+=0x1){for(var _0x4079af=0x0,_0x2e2c83;_0x4079af<_0x50dae0[_0x25c7e4][_0xe9f0('0x2f')]['length'];_0x4079af+=0x1){_0x2e2c83=_0x50dae0[_0x25c7e4]['Agents'][_0x4079af][_0xe9f0('0x2a')]({'plain':!![]});_0x31ff63[_0x2e2c83['id']]=_0x2e2c83;}}_0x31ff63=_[_0xe9f0('0x134')](_0x31ff63);for(var _0x22407b=qs[_0xe9f0('0x22')](_0x937742[_0xe9f0('0x43')]['offset']);_0x22407b<_0x31ff63[_0xe9f0('0x4a')]&&_0x49de75[_0xe9f0('0x4a')]<qs[_0xe9f0('0x24')](_0x937742[_0xe9f0('0x43')]['limit']);_0x22407b+=0x1){if(_0x31ff63[_0x22407b]){_0x49de75[_0xe9f0('0x4b')](_0x31ff63[_0x22407b]);}}return{'count':_0x31ff63[_0xe9f0('0x4a')],'rows':_0x49de75};}})[_0xe9f0('0x14')](respondWithResult(_0x5b9b88,null))[_0xe9f0('0x1e')](handleError(_0x5b9b88,null));};exports['destroy']=function(_0x35ce88,_0x4c77f0){if(_0x35ce88[_0xe9f0('0x2e')]['id']==_0x35ce88[_0xe9f0('0x55')]['id']){return _0x4c77f0[_0xe9f0('0x1f')](0x1f4)[_0xe9f0('0x3b')]({'message':_0xe9f0('0x135')});}return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x35ce88['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x4c77f0,null))[_0xe9f0('0x14')](removeEntity(_0x4c77f0,null))[_0xe9f0('0x1e')](handleError(_0x4c77f0,null));};exports[_0xe9f0('0x136')]=function(_0x475c47,_0x150fe5){return db[_0xe9f0('0x42')]['find']({'where':{'id':_0x475c47[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x150fe5,null))[_0xe9f0('0x14')](function(_0x18cc91){if(_0x18cc91){return _0x18cc91['addChatInteractions'](_0x475c47[_0xe9f0('0x60')][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0x475c47[_0xe9f0('0x60')],[_0xe9f0('0x63'),'id'])||{})[_0xe9f0('0xaa')](function(){for(var _0x3bce88=0x0;_0x3bce88<_0x475c47['body']['ids'][_0xe9f0('0x4a')];_0x3bce88+=0x1){socket[_0xe9f0('0xac')](_0xe9f0('0x137'),{'ChatInteractionId':Number(_0x475c47[_0xe9f0('0x60')][_0xe9f0('0x63')][_0x3bce88]),'UserId':Number(_0x475c47[_0xe9f0('0x55')]['id'])});}return _0x475c47[_0xe9f0('0x60')]['ids'];});}})[_0xe9f0('0x14')](respondWithResult(_0x150fe5,null))[_0xe9f0('0x1e')](handleError(_0x150fe5,null));};exports['removeChatInteractions']=function(_0x55a88d,_0x47c838){return db[_0xe9f0('0x42')]['find']({'where':{'id':_0x55a88d[_0xe9f0('0x55')]['id']}})['then'](handleEntityNotFound(_0x47c838,null))[_0xe9f0('0x14')](function(_0x4b07d2){if(_0x4b07d2){return _0x4b07d2['removeChatInteractions'](_0x55a88d[_0xe9f0('0x43')][_0xe9f0('0x63')])['then'](function(){if(_[_0xe9f0('0xb9')](_0x55a88d[_0xe9f0('0x43')][_0xe9f0('0x63')])){for(var _0x1a2d57=0x0;_0x1a2d57<_0x55a88d[_0xe9f0('0x43')][_0xe9f0('0x63')][_0xe9f0('0x4a')];_0x1a2d57+=0x1){socket[_0xe9f0('0xac')](_0xe9f0('0x138'),{'ChatInteractionId':Number(_0x55a88d[_0xe9f0('0x43')]['ids'][_0x1a2d57]),'UserId':Number(_0x55a88d[_0xe9f0('0x55')]['id'])});}}else{socket[_0xe9f0('0xac')](_0xe9f0('0x138'),{'ChatInteractionId':Number(_0x55a88d['query'][_0xe9f0('0x63')]),'UserId':Number(_0x55a88d[_0xe9f0('0x55')]['id'])});}});}})[_0xe9f0('0x14')](respondWithStatusCode(_0x47c838,null))[_0xe9f0('0x1e')](handleError(_0x47c838,null));};exports[_0xe9f0('0x139')]=function(_0x20e5f0,_0x3c3126){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x20e5f0[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x3c3126,null))[_0xe9f0('0x14')](function(_0x2f4fa3){if(_0x2f4fa3){return _0x2f4fa3[_0xe9f0('0x139')](_0x20e5f0[_0xe9f0('0x60')][_0xe9f0('0x63')],_['omit'](_0x20e5f0[_0xe9f0('0x60')],['ids','id'])||{})[_0xe9f0('0xaa')](function(){for(var _0x187660=0x0;_0x187660<_0x20e5f0[_0xe9f0('0x60')][_0xe9f0('0x63')][_0xe9f0('0x4a')];_0x187660+=0x1){socket[_0xe9f0('0xac')](_0xe9f0('0x13a'),{'MailInteractionId':Number(_0x20e5f0['body'][_0xe9f0('0x63')][_0x187660]),'UserId':Number(_0x20e5f0['params']['id'])});}return _0x20e5f0[_0xe9f0('0x60')][_0xe9f0('0x63')];});}})[_0xe9f0('0x14')](respondWithResult(_0x3c3126,null))[_0xe9f0('0x1e')](handleError(_0x3c3126,null));};exports[_0xe9f0('0x13b')]=function(_0x24cadd,_0x2d7b0c){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x24cadd[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x2d7b0c,null))[_0xe9f0('0x14')](function(_0x19f3d7){if(_0x19f3d7){return _0x19f3d7[_0xe9f0('0x13b')](_0x24cadd[_0xe9f0('0x43')][_0xe9f0('0x63')])['then'](function(){if(_['isArray'](_0x24cadd[_0xe9f0('0x43')][_0xe9f0('0x63')])){for(var _0x43b441=0x0;_0x43b441<_0x24cadd[_0xe9f0('0x43')][_0xe9f0('0x63')][_0xe9f0('0x4a')];_0x43b441+=0x1){socket[_0xe9f0('0xac')](_0xe9f0('0x13c'),{'MailInteractionId':Number(_0x24cadd[_0xe9f0('0x43')][_0xe9f0('0x63')][_0x43b441]),'UserId':Number(_0x24cadd[_0xe9f0('0x55')]['id'])});}}else{socket[_0xe9f0('0xac')](_0xe9f0('0x13c'),{'MailInteractionId':Number(_0x24cadd[_0xe9f0('0x43')]['ids']),'UserId':Number(_0x24cadd[_0xe9f0('0x55')]['id'])});}});}})[_0xe9f0('0x14')](respondWithStatusCode(_0x2d7b0c,null))[_0xe9f0('0x1e')](handleError(_0x2d7b0c,null));};exports['addFaxInteractions']=function(_0x48aab8,_0x44416a){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x48aab8['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x44416a,null))[_0xe9f0('0x14')](function(_0x257762){if(_0x257762){return _0x257762[_0xe9f0('0x13d')](_0x48aab8[_0xe9f0('0x60')][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0x48aab8['body'],[_0xe9f0('0x63'),'id'])||{})['spread'](function(){for(var _0x5b06ce=0x0;_0x5b06ce<_0x48aab8[_0xe9f0('0x60')][_0xe9f0('0x63')]['length'];_0x5b06ce+=0x1){socket['emit'](_0xe9f0('0x13e'),{'FaxInteractionId':Number(_0x48aab8[_0xe9f0('0x60')][_0xe9f0('0x63')][_0x5b06ce]),'UserId':Number(_0x48aab8[_0xe9f0('0x55')]['id'])});}return _0x48aab8[_0xe9f0('0x60')]['ids'];});}})[_0xe9f0('0x14')](respondWithResult(_0x44416a,null))[_0xe9f0('0x1e')](handleError(_0x44416a,null));};exports[_0xe9f0('0x13f')]=function(_0x4440c5,_0x29e885){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x4440c5['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x29e885,null))[_0xe9f0('0x14')](function(_0x5376ed){if(_0x5376ed){return _0x5376ed[_0xe9f0('0x13f')](_0x4440c5[_0xe9f0('0x43')]['ids'])['then'](function(){if(_[_0xe9f0('0xb9')](_0x4440c5[_0xe9f0('0x43')][_0xe9f0('0x63')])){for(var _0x4dbf62=0x0;_0x4dbf62<_0x4440c5[_0xe9f0('0x43')]['ids'][_0xe9f0('0x4a')];_0x4dbf62+=0x1){socket[_0xe9f0('0xac')](_0xe9f0('0x140'),{'FaxInteractionId':Number(_0x4440c5[_0xe9f0('0x43')]['ids'][_0x4dbf62]),'UserId':Number(_0x4440c5[_0xe9f0('0x55')]['id'])});}}else{socket[_0xe9f0('0xac')](_0xe9f0('0x140'),{'FaxInteractionId':Number(_0x4440c5['query'][_0xe9f0('0x63')]),'UserId':Number(_0x4440c5['params']['id'])});}});}})[_0xe9f0('0x14')](respondWithStatusCode(_0x29e885,null))[_0xe9f0('0x1e')](handleError(_0x29e885,null));};exports[_0xe9f0('0x141')]=function(_0xe1165e,_0x99e7cf){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0xe1165e[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x99e7cf,null))[_0xe9f0('0x14')](function(_0x49ad45){if(_0x49ad45){return _0x49ad45[_0xe9f0('0x141')](_0xe1165e[_0xe9f0('0x60')][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0xe1165e['body'],[_0xe9f0('0x63'),'id'])||{})[_0xe9f0('0xaa')](function(){for(var _0x53eaae=0x0;_0x53eaae<_0xe1165e['body'][_0xe9f0('0x63')]['length'];_0x53eaae+=0x1){socket[_0xe9f0('0xac')](_0xe9f0('0x142'),{'SmsInteractionId':Number(_0xe1165e[_0xe9f0('0x60')][_0xe9f0('0x63')][_0x53eaae]),'UserId':Number(_0xe1165e[_0xe9f0('0x55')]['id'])});}return _0xe1165e['body'][_0xe9f0('0x63')];});}})[_0xe9f0('0x14')](respondWithResult(_0x99e7cf,null))[_0xe9f0('0x1e')](handleError(_0x99e7cf,null));};exports[_0xe9f0('0x143')]=function(_0xb7f413,_0x1f5f9b){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0xb7f413[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x1f5f9b,null))[_0xe9f0('0x14')](function(_0x33423c){if(_0x33423c){return _0x33423c[_0xe9f0('0x143')](_0xb7f413[_0xe9f0('0x43')][_0xe9f0('0x63')])['then'](function(){if(_[_0xe9f0('0xb9')](_0xb7f413[_0xe9f0('0x43')][_0xe9f0('0x63')])){for(var _0x3a662a=0x0;_0x3a662a<_0xb7f413[_0xe9f0('0x43')]['ids'][_0xe9f0('0x4a')];_0x3a662a+=0x1){socket[_0xe9f0('0xac')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0xb7f413[_0xe9f0('0x43')][_0xe9f0('0x63')][_0x3a662a]),'UserId':Number(_0xb7f413[_0xe9f0('0x55')]['id'])});}}else{socket[_0xe9f0('0xac')](_0xe9f0('0x144'),{'SmsInteractionId':Number(_0xb7f413['query'][_0xe9f0('0x63')]),'UserId':Number(_0xb7f413[_0xe9f0('0x55')]['id'])});}});}})['then'](respondWithStatusCode(_0x1f5f9b,null))[_0xe9f0('0x1e')](handleError(_0x1f5f9b,null));};exports[_0xe9f0('0x145')]=function(_0x22530a,_0x2e80a0){return db[_0xe9f0('0x42')]['find']({'where':{'id':_0x22530a[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x2e80a0,null))[_0xe9f0('0x14')](function(_0x31f6a2){if(_0x31f6a2){return _0x31f6a2['addOpenchannelInteractions'](_0x22530a[_0xe9f0('0x60')][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0x22530a[_0xe9f0('0x60')],['ids','id'])||{})[_0xe9f0('0xaa')](function(){for(var _0x5f47de=0x0;_0x5f47de<_0x22530a[_0xe9f0('0x60')][_0xe9f0('0x63')]['length'];_0x5f47de+=0x1){socket[_0xe9f0('0xac')](_0xe9f0('0x146'),{'OpenchannelInteractionId':Number(_0x22530a['body'][_0xe9f0('0x63')][_0x5f47de]),'UserId':Number(_0x22530a[_0xe9f0('0x55')]['id'])});}return _0x22530a[_0xe9f0('0x60')][_0xe9f0('0x63')];});}})[_0xe9f0('0x14')](respondWithResult(_0x2e80a0,null))[_0xe9f0('0x1e')](handleError(_0x2e80a0,null));};exports[_0xe9f0('0x147')]=function(_0x3037e5,_0x33fce6){return db[_0xe9f0('0x42')]['find']({'where':{'id':_0x3037e5[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x33fce6,null))[_0xe9f0('0x14')](function(_0x3ab3f9){if(_0x3ab3f9){return _0x3ab3f9[_0xe9f0('0x147')](_0x3037e5['query'][_0xe9f0('0x63')])['then'](function(){if(_[_0xe9f0('0xb9')](_0x3037e5[_0xe9f0('0x43')][_0xe9f0('0x63')])){for(var _0x1b5bee=0x0;_0x1b5bee<_0x3037e5['query'][_0xe9f0('0x63')][_0xe9f0('0x4a')];_0x1b5bee+=0x1){socket['emit'](_0xe9f0('0x148'),{'OpenchannelInteractionId':Number(_0x3037e5['query'][_0xe9f0('0x63')][_0x1b5bee]),'UserId':Number(_0x3037e5[_0xe9f0('0x55')]['id'])});}}else{socket['emit'](_0xe9f0('0x148'),{'OpenchannelInteractionId':Number(_0x3037e5['query'][_0xe9f0('0x63')]),'UserId':Number(_0x3037e5[_0xe9f0('0x55')]['id'])});}});}})[_0xe9f0('0x14')](respondWithStatusCode(_0x33fce6,null))[_0xe9f0('0x1e')](handleError(_0x33fce6,null));};exports[_0xe9f0('0x149')]=function(_0xd3452c,_0x5be398){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0xd3452c[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x5be398,null))['then'](function(_0x246948){if(_0x246948){return _0x246948[_0xe9f0('0x149')](_0xd3452c[_0xe9f0('0x60')][_0xe9f0('0x63')],_['omit'](_0xd3452c[_0xe9f0('0x60')],[_0xe9f0('0x63'),'id'])||{})[_0xe9f0('0xaa')](function(){for(var _0x5ed38a=0x0;_0x5ed38a<_0xd3452c[_0xe9f0('0x60')]['ids'][_0xe9f0('0x4a')];_0x5ed38a+=0x1){socket[_0xe9f0('0xac')]('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0xd3452c[_0xe9f0('0x60')][_0xe9f0('0x63')][_0x5ed38a]),'UserId':Number(_0xd3452c[_0xe9f0('0x55')]['id'])});}return _0xd3452c[_0xe9f0('0x60')]['ids'];});}})['then'](respondWithResult(_0x5be398,null))[_0xe9f0('0x1e')](handleError(_0x5be398,null));};exports[_0xe9f0('0x14a')]=function(_0x27c967,_0xab22d){return db['User'][_0xe9f0('0x36')]({'where':{'id':_0x27c967['params']['id']}})['then'](handleEntityNotFound(_0xab22d,null))[_0xe9f0('0x14')](function(_0xf5a7e7){if(_0xf5a7e7){return _0xf5a7e7[_0xe9f0('0x14a')](_0x27c967['query'][_0xe9f0('0x63')]);}})['then'](respondWithStatusCode(_0xab22d,null))[_0xe9f0('0x1e')](handleError(_0xab22d,null));};exports[_0xe9f0('0x14b')]=function(_0x279e4e,_0x60b12b){var _0x261084={};var _0xcda07c={};var _0x5e76d4;var _0x4c2de6;return db['User'][_0xe9f0('0xd2')]({'where':{'id':_0x279e4e[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x60b12b,null))[_0xe9f0('0x14')](function(_0xfa0176){if(_0xfa0176){_0x5e76d4=_0xfa0176;_0xcda07c['model']=_[_0xe9f0('0x58')](db[_0xe9f0('0x14c')][_0xe9f0('0x3d')]);_0xcda07c['query']=_[_0xe9f0('0x58')](_0x279e4e[_0xe9f0('0x43')]);_0xcda07c[_0xe9f0('0x5a')]=_['intersection'](_0xcda07c[_0xe9f0('0x56')],_0xcda07c[_0xe9f0('0x43')]);_0x261084['attributes']=_['intersection'](_0xcda07c[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x279e4e[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x261084[_0xe9f0('0x46')]=_0x261084[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x261084['attributes']:_0xcda07c[_0xe9f0('0x56')];_0x261084[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x279e4e[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x261084['where']=qs['filters'](_[_0xe9f0('0xd4')](_0x279e4e['query'],_0xcda07c[_0xe9f0('0x5a')]));if(_0x279e4e[_0xe9f0('0x43')]['filter']){_0x261084[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x261084[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0x261084[_0xe9f0('0x46')],function(_0x3f50e3){var _0x193a7b={};_0x193a7b[_0x3f50e3]={'$like':'%'+_0x279e4e[_0xe9f0('0x43')]['filter']+'%'};return _0x193a7b;})});}_0x261084=_[_0xe9f0('0x5d')]({},_0x261084,_0x279e4e[_0xe9f0('0x5e')]);return _0x5e76d4[_0xe9f0('0x14b')](_0x261084);}})[_0xe9f0('0x14')](function(_0x322150){if(_0x322150){_0x4c2de6=_0x322150[_0xe9f0('0x4a')];if(!_0x279e4e['query'][_0xe9f0('0xd6')]('nolimit')){_0x261084['limit']=qs[_0xe9f0('0x24')](_0x279e4e[_0xe9f0('0x43')]['limit']);_0x261084[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x279e4e[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0x5e76d4[_0xe9f0('0x14b')](_0x261084);}})[_0xe9f0('0x14')](function(_0xf95db2){if(_0xf95db2){return _0xf95db2?{'count':_0x4c2de6,'rows':_0xf95db2}:null;}})['then'](respondWithResult(_0x60b12b,null))[_0xe9f0('0x1e')](handleError(_0x60b12b,null));};exports['getFaxAccounts']=function(_0x47450d,_0x36246c){var _0x28d68a={};var _0x73f6b={};var _0xe381f8;var _0xbb8fb8;return db['User'][_0xe9f0('0xd2')]({'where':{'id':_0x47450d[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x36246c,null))[_0xe9f0('0x14')](function(_0x1f803a){if(_0x1f803a){_0xe381f8=_0x1f803a;_0x73f6b[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db[_0xe9f0('0x14d')][_0xe9f0('0x3d')]);_0x73f6b[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x47450d['query']);_0x73f6b[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x73f6b[_0xe9f0('0x56')],_0x73f6b[_0xe9f0('0x43')]);_0x28d68a[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x73f6b[_0xe9f0('0x56')],qs['fields'](_0x47450d['query'][_0xe9f0('0x5c')]));_0x28d68a[_0xe9f0('0x46')]=_0x28d68a[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x28d68a[_0xe9f0('0x46')]:_0x73f6b[_0xe9f0('0x56')];_0x28d68a[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x47450d[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x28d68a[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x47450d[_0xe9f0('0x43')],_0x73f6b['filters']));if(_0x47450d['query']['filter']){_0x28d68a[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x28d68a['where'],{'$or':_[_0xe9f0('0x35')](_0x28d68a[_0xe9f0('0x46')],function(_0x2f330c){var _0x5a742b={};_0x5a742b[_0x2f330c]={'$like':'%'+_0x47450d[_0xe9f0('0x43')]['filter']+'%'};return _0x5a742b;})});}_0x28d68a=_[_0xe9f0('0x5d')]({},_0x28d68a,_0x47450d[_0xe9f0('0x5e')]);return _0xe381f8[_0xe9f0('0x14e')](_0x28d68a);}})[_0xe9f0('0x14')](function(_0x27849b){if(_0x27849b){_0xbb8fb8=_0x27849b[_0xe9f0('0x4a')];if(!_0x47450d[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x28d68a[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x47450d[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x28d68a[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x47450d[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0xe381f8[_0xe9f0('0x14e')](_0x28d68a);}})[_0xe9f0('0x14')](function(_0xa8e32b){if(_0xa8e32b){return _0xa8e32b?{'count':_0xbb8fb8,'rows':_0xa8e32b}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x36246c,null))[_0xe9f0('0x1e')](handleError(_0x36246c,null));};exports[_0xe9f0('0x14f')]=function(_0x4a963d,_0x2617a4){return db['User']['find']({'where':{'id':_0x4a963d[_0xe9f0('0x55')]['id']}})['then'](handleEntityNotFound(_0x2617a4,null))[_0xe9f0('0x14')](function(_0x2207bb){if(_0x2207bb){return _0x2207bb[_0xe9f0('0x14f')](_0x4a963d[_0xe9f0('0x60')][_0xe9f0('0x63')],_['omit'](_0x4a963d[_0xe9f0('0x60')],['ids','id'])||{});}})['then'](respondWithResult(_0x2617a4,null))['catch'](handleError(_0x2617a4,null));};exports[_0xe9f0('0x150')]=function(_0x3fdcd4,_0x14d111){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x3fdcd4['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x14d111,null))[_0xe9f0('0x14')](function(_0x4a0914){if(_0x4a0914){return _0x4a0914['removeFaxAccounts'](_0x3fdcd4[_0xe9f0('0x43')][_0xe9f0('0x63')]);}})[_0xe9f0('0x14')](respondWithStatusCode(_0x14d111,null))['catch'](handleError(_0x14d111,null));};exports[_0xe9f0('0x151')]=function(_0x102508,_0x171313){var _0x4c8f97={};var _0x4d96aa={};var _0x4450af;var _0x394108;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x102508['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x171313,null))[_0xe9f0('0x14')](function(_0x541e67){if(_0x541e67){_0x4450af=_0x541e67;_0x4d96aa[_0xe9f0('0x56')]=_['keys'](db['MailAccount'][_0xe9f0('0x3d')]);_0x4d96aa[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x102508[_0xe9f0('0x43')]);_0x4d96aa[_0xe9f0('0x5a')]=_['intersection'](_0x4d96aa[_0xe9f0('0x56')],_0x4d96aa[_0xe9f0('0x43')]);_0x4c8f97['attributes']=_[_0xe9f0('0x5b')](_0x4d96aa[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x102508['query'][_0xe9f0('0x5c')]));_0x4c8f97[_0xe9f0('0x46')]=_0x4c8f97['attributes'][_0xe9f0('0x4a')]?_0x4c8f97[_0xe9f0('0x46')]:_0x4d96aa['model'];_0x4c8f97['order']=qs[_0xe9f0('0xd3')](_0x102508[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x4c8f97['where']=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x102508[_0xe9f0('0x43')],_0x4d96aa[_0xe9f0('0x5a')]));if(_0x102508[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x4c8f97[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x4c8f97['where'],{'$or':_[_0xe9f0('0x35')](_0x4c8f97[_0xe9f0('0x46')],function(_0xab35a9){var _0x4a19f5={};_0x4a19f5[_0xab35a9]={'$like':'%'+_0x102508[_0xe9f0('0x43')]['filter']+'%'};return _0x4a19f5;})});}_0x4c8f97=_['merge']({},_0x4c8f97,_0x102508['options']);return _0x4450af[_0xe9f0('0x151')](_0x4c8f97);}})[_0xe9f0('0x14')](function(_0xbed28c){if(_0xbed28c){_0x394108=_0xbed28c[_0xe9f0('0x4a')];if(!_0x102508[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x4c8f97['limit']=qs['limit'](_0x102508[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x4c8f97['offset']=qs[_0xe9f0('0x22')](_0x102508['query'][_0xe9f0('0x22')]);}return _0x4450af[_0xe9f0('0x151')](_0x4c8f97);}})[_0xe9f0('0x14')](function(_0x50d6cf){if(_0x50d6cf){return _0x50d6cf?{'count':_0x394108,'rows':_0x50d6cf}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x171313,null))[_0xe9f0('0x1e')](handleError(_0x171313,null));};exports[_0xe9f0('0x152')]=function(_0x2412b4,_0x2d6d6f){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x2412b4['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x2d6d6f,null))[_0xe9f0('0x14')](function(_0x2aef76){if(_0x2aef76){return _0x2aef76['addMailAccounts'](_0x2412b4['body'][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0x2412b4['body'],[_0xe9f0('0x63'),'id'])||{});}})['then'](respondWithResult(_0x2d6d6f,null))['catch'](handleError(_0x2d6d6f,null));};exports[_0xe9f0('0x153')]=function(_0x524e85,_0x300272){return db['User']['find']({'where':{'id':_0x524e85[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x300272,null))[_0xe9f0('0x14')](function(_0x23ee34){if(_0x23ee34){return _0x23ee34['removeMailAccounts'](_0x524e85[_0xe9f0('0x43')]['ids']);}})['then'](respondWithStatusCode(_0x300272,null))['catch'](handleError(_0x300272,null));};exports['getOpenchannelAccounts']=function(_0x5b49a7,_0x1a39b6){var _0x11c25d={};var _0x2427ec={};var _0x3de52e;var _0x187c98;return db[_0xe9f0('0x42')]['findOne']({'where':{'id':_0x5b49a7[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x1a39b6,null))['then'](function(_0x4a55e1){if(_0x4a55e1){_0x3de52e=_0x4a55e1;_0x2427ec[_0xe9f0('0x56')]=_['keys'](db[_0xe9f0('0x154')][_0xe9f0('0x3d')]);_0x2427ec['query']=_[_0xe9f0('0x58')](_0x5b49a7['query']);_0x2427ec[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x2427ec[_0xe9f0('0x56')],_0x2427ec[_0xe9f0('0x43')]);_0x11c25d[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x2427ec['model'],qs[_0xe9f0('0x5c')](_0x5b49a7['query'][_0xe9f0('0x5c')]));_0x11c25d[_0xe9f0('0x46')]=_0x11c25d[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x11c25d[_0xe9f0('0x46')]:_0x2427ec[_0xe9f0('0x56')];_0x11c25d[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x5b49a7[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x11c25d[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_['pick'](_0x5b49a7[_0xe9f0('0x43')],_0x2427ec[_0xe9f0('0x5a')]));if(_0x5b49a7[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x11c25d[_0xe9f0('0x41')]=_['merge'](_0x11c25d['where'],{'$or':_[_0xe9f0('0x35')](_0x11c25d[_0xe9f0('0x46')],function(_0x342616){var _0x51efd8={};_0x51efd8[_0x342616]={'$like':'%'+_0x5b49a7[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x51efd8;})});}_0x11c25d=_[_0xe9f0('0x5d')]({},_0x11c25d,_0x5b49a7[_0xe9f0('0x5e')]);return _0x3de52e['getOpenchannelAccounts'](_0x11c25d);}})[_0xe9f0('0x14')](function(_0x16cdd6){if(_0x16cdd6){_0x187c98=_0x16cdd6['length'];if(!_0x5b49a7[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x11c25d[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x5b49a7[_0xe9f0('0x43')]['limit']);_0x11c25d[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x5b49a7['query'][_0xe9f0('0x22')]);}return _0x3de52e[_0xe9f0('0x155')](_0x11c25d);}})[_0xe9f0('0x14')](function(_0x38418d){if(_0x38418d){return _0x38418d?{'count':_0x187c98,'rows':_0x38418d}:null;}})['then'](respondWithResult(_0x1a39b6,null))[_0xe9f0('0x1e')](handleError(_0x1a39b6,null));};exports[_0xe9f0('0x156')]=function(_0x151548,_0xe2d98e){return db['User'][_0xe9f0('0x36')]({'where':{'id':_0x151548[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0xe2d98e,null))[_0xe9f0('0x14')](function(_0x2d79e4){if(_0x2d79e4){return _0x2d79e4[_0xe9f0('0x156')](_0x151548['body']['ids'],_[_0xe9f0('0x64')](_0x151548['body'],['ids','id'])||{});}})[_0xe9f0('0x14')](respondWithResult(_0xe2d98e,null))[_0xe9f0('0x1e')](handleError(_0xe2d98e,null));};exports[_0xe9f0('0x157')]=function(_0x3e4728,_0x5ab145){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x3e4728['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x5ab145,null))['then'](function(_0x3f492c){if(_0x3f492c){return _0x3f492c[_0xe9f0('0x157')](_0x3e4728[_0xe9f0('0x43')][_0xe9f0('0x63')]);}})[_0xe9f0('0x14')](respondWithStatusCode(_0x5ab145,null))[_0xe9f0('0x1e')](handleError(_0x5ab145,null));};exports[_0xe9f0('0x158')]=function(_0x3688f5,_0x2a35df){var _0x49bde3={};var _0x9f5d95={};var _0x13d724;var _0x18d809;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x3688f5['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x2a35df,null))[_0xe9f0('0x14')](function(_0x4a1d5c){if(_0x4a1d5c){_0x13d724=_0x4a1d5c;_0x9f5d95[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db['SmsAccount'][_0xe9f0('0x3d')]);_0x9f5d95['query']=_[_0xe9f0('0x58')](_0x3688f5['query']);_0x9f5d95['filters']=_[_0xe9f0('0x5b')](_0x9f5d95[_0xe9f0('0x56')],_0x9f5d95[_0xe9f0('0x43')]);_0x49bde3[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x9f5d95['model'],qs['fields'](_0x3688f5['query'][_0xe9f0('0x5c')]));_0x49bde3[_0xe9f0('0x46')]=_0x49bde3[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x49bde3['attributes']:_0x9f5d95['model'];_0x49bde3[_0xe9f0('0xde')]=qs['sort'](_0x3688f5[_0xe9f0('0x43')]['sort']);_0x49bde3[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x3688f5[_0xe9f0('0x43')],_0x9f5d95[_0xe9f0('0x5a')]));if(_0x3688f5['query']['filter']){_0x49bde3['where']=_['merge'](_0x49bde3['where'],{'$or':_[_0xe9f0('0x35')](_0x49bde3[_0xe9f0('0x46')],function(_0x29aa4f){var _0x39bb05={};_0x39bb05[_0x29aa4f]={'$like':'%'+_0x3688f5[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x39bb05;})});}_0x49bde3=_[_0xe9f0('0x5d')]({},_0x49bde3,_0x3688f5[_0xe9f0('0x5e')]);return _0x13d724[_0xe9f0('0x158')](_0x49bde3);}})[_0xe9f0('0x14')](function(_0x4b0e67){if(_0x4b0e67){_0x18d809=_0x4b0e67['length'];if(!_0x3688f5[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x49bde3[_0xe9f0('0x24')]=qs['limit'](_0x3688f5[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x49bde3['offset']=qs[_0xe9f0('0x22')](_0x3688f5[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0x13d724['getSmsAccounts'](_0x49bde3);}})[_0xe9f0('0x14')](function(_0x1b8163){if(_0x1b8163){return _0x1b8163?{'count':_0x18d809,'rows':_0x1b8163}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x2a35df,null))[_0xe9f0('0x1e')](handleError(_0x2a35df,null));};exports['addSmsAccounts']=function(_0x39a712,_0x33e588){return db[_0xe9f0('0x42')]['find']({'where':{'id':_0x39a712[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x33e588,null))['then'](function(_0x175eda){if(_0x175eda){return _0x175eda['addSmsAccounts'](_0x39a712[_0xe9f0('0x60')][_0xe9f0('0x63')],_['omit'](_0x39a712[_0xe9f0('0x60')],[_0xe9f0('0x63'),'id'])||{});}})['then'](respondWithResult(_0x33e588,null))['catch'](handleError(_0x33e588,null));};exports[_0xe9f0('0x159')]=function(_0x3419da,_0x33ce41){return db['User'][_0xe9f0('0x36')]({'where':{'id':_0x3419da[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x33ce41,null))[_0xe9f0('0x14')](function(_0x259a8d){if(_0x259a8d){return _0x259a8d[_0xe9f0('0x159')](_0x3419da[_0xe9f0('0x43')]['ids']);}})[_0xe9f0('0x14')](respondWithStatusCode(_0x33ce41,null))[_0xe9f0('0x1e')](handleError(_0x33ce41,null));};exports[_0xe9f0('0x15a')]=function(_0x4d6d89,_0x53a295){var _0xf36ac9={};var _0x27d0ae={};var _0x51db6c;var _0x3ba5d8;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x4d6d89[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x53a295,null))[_0xe9f0('0x14')](function(_0x27e779){if(_0x27e779){_0x51db6c=_0x27e779;_0x27d0ae[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db[_0xe9f0('0x15b')][_0xe9f0('0x3d')]);_0x27d0ae[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x4d6d89['query']);_0x27d0ae[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x27d0ae[_0xe9f0('0x56')],_0x27d0ae[_0xe9f0('0x43')]);_0xf36ac9['attributes']=_[_0xe9f0('0x5b')](_0x27d0ae[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x4d6d89[_0xe9f0('0x43')]['fields']));_0xf36ac9[_0xe9f0('0x46')]=_0xf36ac9[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0xf36ac9[_0xe9f0('0x46')]:_0x27d0ae[_0xe9f0('0x56')];_0xf36ac9['order']=qs['sort'](_0x4d6d89[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0xf36ac9['where']=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x4d6d89[_0xe9f0('0x43')],_0x27d0ae['filters']));if(_0x4d6d89[_0xe9f0('0x43')]['filter']){_0xf36ac9[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0xf36ac9['where'],{'$or':_[_0xe9f0('0x35')](_0xf36ac9['attributes'],function(_0x57e2ac){var _0x41da05={};_0x41da05[_0x57e2ac]={'$like':'%'+_0x4d6d89[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x41da05;})});}_0xf36ac9=_[_0xe9f0('0x5d')]({},_0xf36ac9,_0x4d6d89[_0xe9f0('0x5e')]);return _0x51db6c[_0xe9f0('0x15a')](_0xf36ac9);}})[_0xe9f0('0x14')](function(_0x32c17a){if(_0x32c17a){_0x3ba5d8=_0x32c17a['length'];if(!_0x4d6d89[_0xe9f0('0x43')][_0xe9f0('0xd6')]('nolimit')){_0xf36ac9['limit']=qs['limit'](_0x4d6d89[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0xf36ac9['offset']=qs[_0xe9f0('0x22')](_0x4d6d89[_0xe9f0('0x43')]['offset']);}return _0x51db6c['getChatWebsites'](_0xf36ac9);}})[_0xe9f0('0x14')](function(_0x457ec9){if(_0x457ec9){return _0x457ec9?{'count':_0x3ba5d8,'rows':_0x457ec9}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x53a295,null))['catch'](handleError(_0x53a295,null));};exports[_0xe9f0('0x15c')]=function(_0x570444,_0x2c6152){return db[_0xe9f0('0x42')]['find']({'where':{'id':_0x570444[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x2c6152,null))[_0xe9f0('0x14')](function(_0x4e4a08){if(_0x4e4a08){return _0x4e4a08['addChatWebsites'](_0x570444['body']['ids'],_['omit'](_0x570444[_0xe9f0('0x60')],[_0xe9f0('0x63'),'id'])||{});}})['then'](respondWithResult(_0x2c6152,null))[_0xe9f0('0x1e')](handleError(_0x2c6152,null));};exports[_0xe9f0('0x15d')]=function(_0x25d301,_0x15d270){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x25d301[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x15d270,null))['then'](function(_0x271122){if(_0x271122){return _0x271122[_0xe9f0('0x15d')](_0x25d301[_0xe9f0('0x43')][_0xe9f0('0x63')]);}})[_0xe9f0('0x14')](respondWithStatusCode(_0x15d270,null))['catch'](handleError(_0x15d270,null));};exports[_0xe9f0('0x15e')]=function(_0x178c32,_0x545a7f){var _0x22fad9={};var _0x49bfcf={};var _0x30dcb2;var _0x378f44;return db['User']['findOne']({'where':{'id':_0x178c32[_0xe9f0('0x55')]['id']}})['then'](handleEntityNotFound(_0x545a7f,null))[_0xe9f0('0x14')](function(_0x23a2e4){if(_0x23a2e4){_0x30dcb2=_0x23a2e4;_0x49bfcf[_0xe9f0('0x56')]=_['keys'](db[_0xe9f0('0x15f')][_0xe9f0('0x3d')]);_0x49bfcf[_0xe9f0('0x43')]=_['keys'](_0x178c32[_0xe9f0('0x43')]);_0x49bfcf[_0xe9f0('0x5a')]=_['intersection'](_0x49bfcf['model'],_0x49bfcf['query']);_0x22fad9[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x49bfcf['model'],qs[_0xe9f0('0x5c')](_0x178c32['query'][_0xe9f0('0x5c')]));_0x22fad9['attributes']=_0x22fad9[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x22fad9['attributes']:_0x49bfcf[_0xe9f0('0x56')];_0x22fad9[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x178c32[_0xe9f0('0x43')]['sort']);_0x22fad9[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x178c32[_0xe9f0('0x43')],_0x49bfcf[_0xe9f0('0x5a')]));if(_0x178c32[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x22fad9['where']=_[_0xe9f0('0x5d')](_0x22fad9['where'],{'$or':_[_0xe9f0('0x35')](_0x22fad9[_0xe9f0('0x46')],function(_0x259cb8){var _0x330e56={};_0x330e56[_0x259cb8]={'$like':'%'+_0x178c32[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x330e56;})});}_0x22fad9=_[_0xe9f0('0x5d')]({},_0x22fad9,_0x178c32[_0xe9f0('0x5e')]);return _0x30dcb2[_0xe9f0('0x15e')](_0x22fad9);}})[_0xe9f0('0x14')](function(_0x9a619){if(_0x9a619){_0x378f44=_0x9a619[_0xe9f0('0x4a')];if(!_0x178c32[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x22fad9[_0xe9f0('0x24')]=qs['limit'](_0x178c32[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x22fad9[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x178c32['query'][_0xe9f0('0x22')]);}return _0x30dcb2[_0xe9f0('0x15e')](_0x22fad9);}})[_0xe9f0('0x14')](function(_0x5f3ab4){if(_0x5f3ab4){return _0x5f3ab4?{'count':_0x378f44,'rows':_0x5f3ab4}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x545a7f,null))[_0xe9f0('0x1e')](handleError(_0x545a7f,null));};exports[_0xe9f0('0x160')]=function(_0x1266fd,_0x511a4d){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x1266fd[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x511a4d,null))[_0xe9f0('0x14')](function(_0x1f63e1){if(_0x1f63e1){return _0x1f63e1[_0xe9f0('0x160')](_0x1266fd['body'][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0x1266fd[_0xe9f0('0x60')],[_0xe9f0('0x63'),'id'])||{});}})[_0xe9f0('0x14')](respondWithResult(_0x511a4d,null))[_0xe9f0('0x1e')](handleError(_0x511a4d,null));};exports[_0xe9f0('0x161')]=function(_0x41ce56,_0x5b7f5a){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x41ce56['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x5b7f5a,null))[_0xe9f0('0x14')](function(_0x1c6a56){if(_0x1c6a56){return _0x1c6a56[_0xe9f0('0x161')](_0x41ce56[_0xe9f0('0x43')]['ids']);}})[_0xe9f0('0x14')](respondWithStatusCode(_0x5b7f5a,null))['catch'](handleError(_0x5b7f5a,null));};exports['getSquareProjects']=function(_0x32b967,_0x44a816){var _0x58a2ef={};var _0x291be7={};var _0x50a397;var _0x26b3d8;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x32b967[_0xe9f0('0x55')]['id']}})['then'](handleEntityNotFound(_0x44a816,null))['then'](function(_0x36c3e6){if(_0x36c3e6){_0x50a397=_0x36c3e6;_0x291be7[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db[_0xe9f0('0x162')]['rawAttributes']);_0x291be7[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x32b967[_0xe9f0('0x43')]);_0x291be7[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x291be7[_0xe9f0('0x56')],_0x291be7[_0xe9f0('0x43')]);_0x58a2ef[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x291be7[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x32b967[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x58a2ef[_0xe9f0('0x46')]=_0x58a2ef['attributes']['length']?_0x58a2ef[_0xe9f0('0x46')]:_0x291be7[_0xe9f0('0x56')];_0x58a2ef[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x32b967[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x58a2ef[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x32b967[_0xe9f0('0x43')],_0x291be7[_0xe9f0('0x5a')]));if(_0x32b967[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x58a2ef[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x58a2ef[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0x58a2ef[_0xe9f0('0x46')],function(_0x2b6ce9){var _0x188a8d={};_0x188a8d[_0x2b6ce9]={'$like':'%'+_0x32b967[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x188a8d;})});}_0x58a2ef=_[_0xe9f0('0x5d')]({},_0x58a2ef,_0x32b967[_0xe9f0('0x5e')]);return _0x50a397[_0xe9f0('0x163')](_0x58a2ef);}})['then'](function(_0x4753b7){if(_0x4753b7){_0x26b3d8=_0x4753b7[_0xe9f0('0x4a')];if(!_0x32b967[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x58a2ef[_0xe9f0('0x24')]=qs['limit'](_0x32b967['query']['limit']);_0x58a2ef['offset']=qs[_0xe9f0('0x22')](_0x32b967[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0x50a397[_0xe9f0('0x163')](_0x58a2ef);}})[_0xe9f0('0x14')](function(_0x6cc818){if(_0x6cc818){return _0x6cc818?{'count':_0x26b3d8,'rows':_0x6cc818}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x44a816,null))[_0xe9f0('0x1e')](handleError(_0x44a816,null));};exports['addSquareProjects']=function(_0x1d2125,_0x2bdcd6){return db['User'][_0xe9f0('0x36')]({'where':{'id':_0x1d2125[_0xe9f0('0x55')]['id']}})['then'](handleEntityNotFound(_0x2bdcd6,null))[_0xe9f0('0x14')](function(_0x398ec6){if(_0x398ec6){return _0x398ec6['addSquareProjects'](_0x1d2125[_0xe9f0('0x60')][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0x1d2125[_0xe9f0('0x60')],[_0xe9f0('0x63'),'id'])||{});}})[_0xe9f0('0x14')](respondWithResult(_0x2bdcd6,null))[_0xe9f0('0x1e')](handleError(_0x2bdcd6,null));};exports['removeSquareProjects']=function(_0x24e7d4,_0x77d415){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x24e7d4[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x77d415,null))[_0xe9f0('0x14')](function(_0x47d343){if(_0x47d343){return _0x47d343['removeSquareProjects'](_0x24e7d4['query']['ids']);}})['then'](respondWithStatusCode(_0x77d415,null))[_0xe9f0('0x1e')](handleError(_0x77d415,null));};exports[_0xe9f0('0x164')]=function(_0x25a11f,_0x5471b6){var _0x2d7cae={},_0x400fd6={},_0x2870bd={'count':0x0,'rows':[]};var _0x49bda8=db[_0xe9f0('0x165')]['rawAttributes'];_0x400fd6[_0xe9f0('0x56')]=_['keys'](_0x49bda8);_0x400fd6[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x25a11f[_0xe9f0('0x43')]);_0x400fd6[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x400fd6[_0xe9f0('0x56')],_0x400fd6[_0xe9f0('0x43')]);_0x400fd6[_0xe9f0('0x5a')]=_[_0xe9f0('0x106')](_0x400fd6[_0xe9f0('0x5a')],[_0xe9f0('0x166'),_0xe9f0('0x167'),_0xe9f0('0x168'),_0xe9f0('0x169'),'$lt','$lte',_0xe9f0('0x16a'),_0xe9f0('0x16b'),_0xe9f0('0x16c'),_0xe9f0('0x16d'),_0xe9f0('0x16e'),_0xe9f0('0x16f'),'$notIn',_0xe9f0('0x170'),'$notLike',_0xe9f0('0x171'),_0xe9f0('0x172'),'$like',_0xe9f0('0x173'),'$contains','$contained',_0xe9f0('0x174')]);_0x2d7cae[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x400fd6['model'],qs[_0xe9f0('0x5c')](_0x25a11f['query'][_0xe9f0('0x5c')]));_0x2d7cae[_0xe9f0('0x46')]=_0x2d7cae[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x2d7cae[_0xe9f0('0x46')]:_0x400fd6[_0xe9f0('0x56')];if(!_0x25a11f[_0xe9f0('0x43')]['hasOwnProperty']('nolimit')){_0x2d7cae[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x25a11f['query'][_0xe9f0('0x24')]);_0x2d7cae[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x25a11f[_0xe9f0('0x43')][_0xe9f0('0x22')]);}_0x2d7cae[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x25a11f[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x2d7cae[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x25a11f[_0xe9f0('0x43')],_0x400fd6[_0xe9f0('0x5a')]));if(_0x25a11f[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x2d7cae[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x2d7cae['where'],{'$or':_[_0xe9f0('0x35')](_0x2d7cae[_0xe9f0('0x46')],function(_0x5b100c){var _0x140701={};_0x140701[_0x5b100c]={'$like':'%'+_0x25a11f[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x140701;})});}_0x2d7cae[_0xe9f0('0x41')]={'$and':[_0x2d7cae[_0xe9f0('0x41')],{'$or':[{'UserId':_0x25a11f[_0xe9f0('0x55')]['id']},{'OwnerId':_0x25a11f[_0xe9f0('0x55')]['id']}]}]};_0x2d7cae=_[_0xe9f0('0x5d')]({},_0x2d7cae,_0x25a11f['options']);var _0xb9fc05={'where':_0x2d7cae[_0xe9f0('0x41')]};return db[_0xe9f0('0x165')]['count'](_0xb9fc05)[_0xe9f0('0x14')](function(_0x1963f0){_0x2870bd[_0xe9f0('0x25')]=_0x1963f0;if(_0x25a11f[_0xe9f0('0x43')][_0xe9f0('0x44')]){_0x2d7cae[_0xe9f0('0x45')]=[{'attributes':['id',_0xe9f0('0x175'),'lastName',_0xe9f0('0xf2')],'model':db[_0xe9f0('0x176')],'as':_0xe9f0('0x177')},{'attributes':['id',_0xe9f0('0x38'),_0xe9f0('0x178')],'model':db['VoiceQueue'],'as':_0xe9f0('0xdd')}];}return db[_0xe9f0('0x165')][_0xe9f0('0x47')](_0x2d7cae);})[_0xe9f0('0x14')](function(_0x35bc72){_0x2870bd[_0xe9f0('0x4d')]=_0x35bc72;return _0x2870bd;})['then'](respondWithFilteredResult(_0x5471b6,_0x2d7cae))[_0xe9f0('0x1e')](handleError(_0x5471b6,null));};exports[_0xe9f0('0x179')]=function(_0x2baf0a,_0x475397){if(!_[_0xe9f0('0x6a')](_0x2baf0a[_0xe9f0('0x2e')]['id'])&&(_0x2baf0a['user'][_0xe9f0('0x2b')]==_0xe9f0('0x2c')||_0x2baf0a['user'][_0xe9f0('0x2b')]==_0xe9f0('0x2e'))){return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x2baf0a[_0xe9f0('0x55')]['id']},'raw':!![]})[_0xe9f0('0x14')](function(_0x24b026){return authService[_0xe9f0('0x17a')](_0x24b026);})[_0xe9f0('0x14')](function(_0x824cb0){if(_0x824cb0){return _0x475397[_0xe9f0('0x1f')](0xc8)[_0xe9f0('0x21')]({'api_key':_0x824cb0[_0xe9f0('0x17b')]});}else{return _0x475397[_0xe9f0('0x1f')](0xcc)[_0xe9f0('0x21')]({'message':_0xe9f0('0x17c')});}})[_0xe9f0('0x1e')](handleError(_0x475397,0x193));}else{return _0x475397[_0xe9f0('0x1f')](0x191)[_0xe9f0('0x21')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0xe9f0('0x17d')]=function(_0x3a4144,_0xbefd52){if(!_['isNil'](_0x3a4144['user']['id'])&&(_0x3a4144['user']['role']==_0xe9f0('0x2c')||_0x3a4144['user'][_0xe9f0('0x2b')]==_0xe9f0('0x2e'))){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x3a4144[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](function(_0x5bd4b7){return authService['generateApiKey'](_0x5bd4b7);})[_0xe9f0('0x14')](function(_0x349514){return db[_0xe9f0('0x42')][_0xe9f0('0x28')]({'apiKeyIat':_0x349514[_0xe9f0('0x17e')],'apiKeyNonce':_0x349514['nonce']},{'where':{'id':_0x3a4144[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](function(){return _0xbefd52[_0xe9f0('0x1f')](0xc8)[_0xe9f0('0x21')]({'api_key':_0x349514[_0xe9f0('0x17b')]});});})[_0xe9f0('0x1e')](handleError(_0xbefd52,0x193));}else{return _0xbefd52[_0xe9f0('0x1f')](0x191)[_0xe9f0('0x21')]({'message':_0xe9f0('0x17f')});}};exports[_0xe9f0('0x180')]=function(_0x5e3a2c,_0x3d479a){if(!_[_0xe9f0('0x6a')](_0x5e3a2c[_0xe9f0('0x2e')]['id'])&&(_0x5e3a2c[_0xe9f0('0x2e')]['role']==_0xe9f0('0x2c')||_0x5e3a2c[_0xe9f0('0x2e')][_0xe9f0('0x2b')]==_0xe9f0('0x2e'))){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x5e3a2c[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x3d479a,null))[_0xe9f0('0x14')](function(_0x386fbd){if(_0x386fbd&&_0x386fbd['apiKeyNonce']&&_0x386fbd[_0xe9f0('0x181')])return _0x386fbd;else throw{'message':_0xe9f0('0x182')};})[_0xe9f0('0x14')](function(_0x44aa63){return db[_0xe9f0('0x42')][_0xe9f0('0x28')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x5e3a2c[_0xe9f0('0x55')]['id']}});})[_0xe9f0('0x14')](respondWithStatusCode(_0x3d479a,0xc8))['catch'](handleError(_0x3d479a,0x193));}else{return _0x3d479a[_0xe9f0('0x1f')](0x191)[_0xe9f0('0x21')]({'message':_0xe9f0('0x17f')});}};exports[_0xe9f0('0x183')]=function(_0x11be0e,_0x303618){var _0x1b4a71=_0x11be0e['user'][_0xe9f0('0x2a')]({'plain':!![]});if(!_0x1b4a71){return _0x303618[_0xe9f0('0x1f')](0x191)[_0xe9f0('0x3b')](_0xe9f0('0x184'));}else{return _0x303618[_0xe9f0('0x1f')](0xc8)[_0xe9f0('0x21')](_0x1b4a71);}};exports['getPresence']=function(_0xf9964b,_0x2ec0f7){var _0x535888={'offset':0x0},_0x256c3b={'count':0x0,'rows':[]};Promise['resolve']()['then'](function(){if(!_0xf9964b['query']['filter']&&!_0xf9964b[_0xe9f0('0x43')]['teams']&&!_0xf9964b[_0xe9f0('0x43')][_0xe9f0('0x185')])return[];return Promise[_0xe9f0('0x108')]()[_0xe9f0('0x14')](function(){var _0x20f10a=[];if(!_['isEmpty'](_0xf9964b[_0xe9f0('0x43')][_0xe9f0('0x186')])){_0x20f10a[_0xe9f0('0x4b')](db[_0xe9f0('0x118')]['findAll']({'attributes':['id',_0xe9f0('0x38')],'where':{'id':_0xf9964b[_0xe9f0('0x43')][_0xe9f0('0x186')]}}));}if(!_[_0xe9f0('0x91')](_0xf9964b[_0xe9f0('0x43')]['queues'])){_0x20f10a[_0xe9f0('0x4b')](db[_0xe9f0('0xaf')]['findAll']({'attributes':['id',_0xe9f0('0x38')],'type':_0xe9f0('0x187'),'where':{'id':_0xf9964b[_0xe9f0('0x43')][_0xe9f0('0x185')]}}));}return Promise[_0xe9f0('0x8e')](_0x20f10a);})[_0xe9f0('0x14')](function(_0x362ea6){var _0x50a129=_[_0xe9f0('0x126')](_0x362ea6)[_0xe9f0('0x35')](function(_0x56dbcf){return _0x56dbcf[_0xe9f0('0x188')]({'attributes':['id',_0xe9f0('0x38'),_0xe9f0('0x65'),_0xe9f0('0xb0')],'raw':!![]});});return Promise[_0xe9f0('0x8e')](_0x50a129);})[_0xe9f0('0x14')](function(_0x34ad34){var _0x43754b=_[_0xe9f0('0x126')](_0x34ad34);if(!_0xf9964b[_0xe9f0('0x43')]['filter'])return _0x43754b;if(_['isEmpty'](_0x43754b)){return db[_0xe9f0('0x42')]['findAll']({'attributes':['id',_0xe9f0('0x38'),_0xe9f0('0x65'),'online'],'where':{'role':_0xe9f0('0x30'),'$or':[db['sequelize'][_0xe9f0('0x41')](db[_0xe9f0('0x6c')]['fn'](_0xe9f0('0x189'),db[_0xe9f0('0x6c')][_0xe9f0('0x18a')](_0xe9f0('0x38'))),{'$like':'%'+_0xf9964b[_0xe9f0('0x43')][_0xe9f0('0x33')][_0xe9f0('0xa8')]()+'%'}),{'internal':{'$like':'%'+_0xf9964b[_0xe9f0('0x43')]['filter']+'%'}}]},'raw':!![]});}else{return _(_0x43754b)[_0xe9f0('0x126')]()[_0xe9f0('0x33')](function(_0x2ff387){return _0x2ff387[_0xe9f0('0x38')][_0xe9f0('0xa8')]()['includes'](_0xf9964b['query'][_0xe9f0('0x33')][_0xe9f0('0xa8')]())||_0x2ff387[_0xe9f0('0x65')][_0xe9f0('0x18b')]()[_0xe9f0('0x5f')](_0xf9964b[_0xe9f0('0x43')]['filter']);})[_0xe9f0('0x37')]();}})[_0xe9f0('0x14')](function(_0x31af56){var _0x1c93a6=_0xe9f0('0x38');var _0x4f0e56='asc';if(_0xf9964b[_0xe9f0('0x43')][_0xe9f0('0xd3')]){var _0x4f0e56=_0xf9964b['query']['sort'][0x0]==='-'?_0xe9f0('0x18c'):'asc';var _0x1c93a6=_0x4f0e56==='asc'?_0xf9964b[_0xe9f0('0x43')]['sort']:_0xf9964b['query'][_0xe9f0('0xd3')]['substring'](0x1);}return _(_0x31af56)[_0xe9f0('0x18d')]('id')[_0xe9f0('0x18e')]([function(_0x5d5c71){return _0x1c93a6==='name'?_0x5d5c71[_0x1c93a6][_0xe9f0('0xa8')]():_0x5d5c71[_0x1c93a6];}],[_0x4f0e56])['map'](function(_0x1d3e22){return _[_0xe9f0('0xd4')](_0x1d3e22,['id',_0xe9f0('0x38'),_0xe9f0('0x65'),_0xe9f0('0xb0')]);})[_0xe9f0('0x37')]();})[_0xe9f0('0x14')](function(_0x5ade7f){return client[_0xe9f0('0x18f')](_0xe9f0('0x2f'),_0xf9964b)[_0xe9f0('0x14')](function(_0x15b9ad){if(_0x15b9ad[_0xe9f0('0x1a')])throw new Error(_0xe9f0('0x190'));var _0x43c559=_0x15b9ad[_0xe9f0('0x1d')];var _0x422aea=jayson[_0xe9f0('0x12')][_0xe9f0('0x13')]({'port':0x232c});return _0x422aea[_0xe9f0('0x18f')](_0xe9f0('0x2f'),_0xf9964b)['then'](function(_0x296f0){if(_0x296f0[_0xe9f0('0x1a')])throw new Error(_0xe9f0('0x191'));var _0x158ccf=_0x296f0['result'];return _['merge']({},_0x158ccf,_0x43c559);});})['then'](function(_0x21a82a){return _[_0xe9f0('0x35')](_0x5ade7f,function(_0x324b0a){var _0x135b69=_[_0xe9f0('0x36')](_0x21a82a[_0xe9f0('0x4d')],['id',_0x324b0a['id']]);if(!_0x135b69||!_0x324b0a['online']){_0x324b0a['status']=_0xe9f0('0x192');}else if(_0x135b69['voicePause']){_0x324b0a[_0xe9f0('0x1f')]=_0xe9f0('0x10a');}else{_0x324b0a[_0xe9f0('0x1f')]=_[_0xe9f0('0x5f')]([_0xe9f0('0x193'),_0xe9f0('0x194'),_0xe9f0('0x195'),_0xe9f0('0x196'),null,undefined],_0x135b69['voiceStatus'])?_0xe9f0('0xb0'):_0xe9f0('0x197');}return _0x324b0a;});});});})[_0xe9f0('0x14')](function(_0x5117bb){if(!_0xf9964b[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x535888[_0xe9f0('0x24')]=qs['limit'](_0xf9964b[_0xe9f0('0x43')]['limit']||0xa);_0x535888['offset']=qs[_0xe9f0('0x22')](_0xf9964b[_0xe9f0('0x43')][_0xe9f0('0x22')]);}_0x256c3b[_0xe9f0('0x25')]=_0x5117bb[_0xe9f0('0x4a')];_0x256c3b[_0xe9f0('0x4d')]=_0x535888[_0xe9f0('0x24')]?_0x5117bb[_0xe9f0('0x198')](_0x535888[_0xe9f0('0x22')],_0x535888['offset']+_0x535888[_0xe9f0('0x24')]):_0x5117bb;return _0x256c3b;})[_0xe9f0('0x14')](respondWithFilteredResult(_0x2ec0f7,_0x535888))[_0xe9f0('0x1e')](handleError(_0x2ec0f7,null));};function get_open_tabs(_0x15a003,_0x1d877a){var _0x157a3a=_0x15a003['charAt'](0x0)[_0xe9f0('0x199')]()+_0x15a003[_0xe9f0('0x198')](0x1);var _0x274023={'type':db[_0xe9f0('0x96')][_0xe9f0('0x19a')][_0xe9f0('0x6e')],'raw':!![]};return new BPromise(function(_0x1ce031,_0x42f68e){var _0x4c262b=squel['select']()[_0xe9f0('0x19b')](_0xe9f0('0x19c')+_0x157a3a+_0xe9f0('0x19d'),'id')[_0xe9f0('0x19b')]('ui.createdAt')['from'](_0xe9f0('0x19e')+_0x15a003+_0xe9f0('0x19f'),'ui')[_0xe9f0('0x41')]('ui.UserId\x20=\x20?',_0x1d877a['id']);return db[_0xe9f0('0x6c')][_0xe9f0('0x43')](_0x4c262b[_0xe9f0('0x18b')](),_0x274023)[_0xe9f0('0x14')](function(_0x3ea2c7){_0x1d877a[_0x157a3a+_0xe9f0('0x1a0')]=_0x3ea2c7;_0x1ce031(_0x3ea2c7);})[_0xe9f0('0x1e')](function(_0x1e10ed){_0x42f68e(_0x1e10ed);});});};
\ No newline at end of file
+var _0x1619=['OpenTabs','util','lodash','squel','jayson/promise','../../components/auth/service','../../config/logger','../../config/environment','../../config/license/util','socket.io-emitter','redis','register','defaults','localhost','client','http','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','end','offset','undefined','limit','count','status','set','json','update','destroy','get','role','Users','user','agent','Telephones','telephone','filter','ignore','map','value','includes','find','name','UserProfileResource','stack','send','index','User','type','key','password','getOptions','where','include','attributes','push','findAll','rows','query','openTabs','true','sms','dataValues','mail','openchannel','whatsapp','all','catch','show','params','keys','rawAttributes','salt','filters','intersection','model','fields','includeAll','merge','options','fax','body','describe','ids','omit','internal','Setting','findById','securePassword','max','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','length','isNil','from','voicemail','mailbox','VoiceMail','email','permissions','101','103','113','110','105','106','108','109','111','114','115','admin','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','Agents','userProfileId','autoAssociation','create','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','UserProfileSection','isEmpty','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Unauthorized','findOne','enforcePasswordHistory','validatePasswordPattern','previousPasswords','validatePasswordHistory','passwordHistoryLimit','online','loginInPause','interface','isValidChannel','add','toLowerCase','Queues','spread','capitalize','QueueId','Queue:save','voice','VoiceQueue','format','SIP/%s','voicePause','UserVoiceQueueRt','upsert','channel','Unknown\x20channel','remove','isArray','emit','Queue:remove','addAvatar','userpic','file','filename','join','root','download','existsSync','server/files/images/','getOpenTabs','chat','CHAT','FaxOpenTabs','FAX','createdAt','OpenchannelOpenTabs','MailOpenTabs','MAIL','SmsOpenTabs','WhatsappOpenTabs','WHATSAPP','CmContact','order','sort','pick','CmList','Tags','color','tag','hasOwnProperty','nolimit','getContacts','getQueues','Queue','Unknown\x20role','getVoiceQueuesRt','ChatGroup','getGroups','UserId','VoiceRecording','getScreenRecordings','ScreenRecording','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','phone','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','getChannels','YYYY-MM-DD\x20HH:mm:ss','LOGIN','PAUSE','concat','LOGININPAUSE','isMiddleware','resolve','logout','forEach','pause','QueuePause','updateAttributes','DEFAULT\x20PAUSE','unpause','mailPause','faxPause','smsPause','whatsapppause','lastPauseAt','manual','%s%s','Pause','getTeams','addTeams','Voice','getChatQueues','setDataValue','Chat','getMailQueues','Mail','getSmsQueues','Sms','getWhatsappQueues','Whatsapp','getFaxQueues','getOpenchannelQueues','Openchannel','flatten','addAgent','getDataValue','penalty','removeTeams','Fax','transaction','removeAgent','getLists','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','addSquareProjects','removeSquareProjects','getScheduledCalls','$and','$gt','$gte','$lte','$eq','$between','$notBetween','$in','$like','$notLike','$notILike','$overlap','$contains','$contained','firstName','lastName','Contact','dialActive','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','API\x20key\x20not\x20available','whoami','getPresence','teams','queues','Team','getAgents','lower','col','toString','asc','desc','uniqBy','orderBy','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','idle','unknown','ringing','voiceStatus','busy','slice','toUpperCase','select','field','ui.','InteractionId','_interactions'];(function(_0x4f4668,_0x2a9474){var _0x45ca66=function(_0xb61325){while(--_0xb61325){_0x4f4668['push'](_0x4f4668['shift']());}};_0x45ca66(++_0x2a9474);}(_0x1619,0x189));var _0x9161=function(_0x34347c,_0x1fa27d){_0x34347c=_0x34347c-0x0;var _0x49c4a7=_0x1619[_0x34347c];return _0x49c4a7;};'use strict';var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x9161('0x0'));var path=require('path');var fs=require('fs');var _=require(_0x9161('0x1'));var squel=require(_0x9161('0x2'));var jayson=require(_0x9161('0x3'));var Redis=require('ioredis');var authService=require(_0x9161('0x4'));var qs=require('../../components/parsers/qs');var logger=require(_0x9161('0x5'))('api');var utils=require('../../config/utils');var config=require(_0x9161('0x6'));var licenseUtil=require(_0x9161('0x7'));var db=require('../../mysqldb')['db'];var socket=require(_0x9161('0x8'))(new Redis(config[_0x9161('0x9')]));require('./user.socket')[_0x9161('0xa')](socket);config['redis']=_[_0x9161('0xb')](config['redis'],{'host':_0x9161('0xc'),'port':0x18eb});var client=jayson[_0x9161('0xd')][_0x9161('0xe')]({'port':0x232a});var values;function respondWithRpcPromise(_0x251ee2,_0x37dcc7,_0x442399,_0x32ef57){return new BPromise(function(_0x51030c,_0x5a9a1c){var _0x52f17c=_0x32ef57||client;return _0x52f17c['request'](_0x251ee2,_0x442399)[_0x9161('0xf')](function(_0x575ce5){logger[_0x9161('0x10')](_0x9161('0x11'),_0x37dcc7,_0x9161('0x12'));logger[_0x9161('0x13')](_0x9161('0x14'),_0x37dcc7,_0x9161('0x12'),JSON[_0x9161('0x15')](_0x575ce5));if(_0x575ce5[_0x9161('0x16')]){if(_0x575ce5['error'][_0x9161('0x17')]===0x1f4){logger[_0x9161('0x16')](_0x9161('0x11'),_0x37dcc7,_0x575ce5['error'][_0x9161('0x18')]);return _0x5a9a1c(_0x575ce5[_0x9161('0x16')][_0x9161('0x18')]);}logger['error'](_0x9161('0x11'),_0x37dcc7,_0x575ce5[_0x9161('0x16')]['message']);return _0x51030c(_0x575ce5[_0x9161('0x16')][_0x9161('0x18')]);}else{logger[_0x9161('0x10')](_0x9161('0x11'),_0x37dcc7,_0x9161('0x12'));_0x51030c(_0x575ce5[_0x9161('0x19')][_0x9161('0x18')]);}})['catch'](function(_0x73d1cc){logger['error'](_0x9161('0x11'),_0x37dcc7,_0x73d1cc);_0x5a9a1c(_0x73d1cc);});});}function respondWithStatusCode(_0x12918e,_0x2db6a0){_0x2db6a0=_0x2db6a0||0xcc;return function(_0x56b77a){if(_0x56b77a){return _0x12918e['sendStatus'](_0x2db6a0);}return _0x12918e['status'](_0x2db6a0)[_0x9161('0x1a')]();};}function respondWithResult(_0x30f97f,_0x5b735a){_0x5b735a=_0x5b735a||0xc8;return function(_0x49f1ea){if(_0x49f1ea){return _0x30f97f['status'](_0x5b735a)['json'](_0x49f1ea);}};}function respondWithFilteredResult(_0x20fa48,_0x41a5f8){return function(_0x214e1b){if(_0x214e1b){var _0x2ffeb4=typeof _0x41a5f8[_0x9161('0x1b')]===_0x9161('0x1c')&&typeof _0x41a5f8[_0x9161('0x1d')]==='undefined';var _0x8c4949=_0x214e1b[_0x9161('0x1e')];var _0x20899d=_0x2ffeb4?0x0:_0x41a5f8[_0x9161('0x1b')];var _0x2b17a3=_0x2ffeb4?_0x214e1b[_0x9161('0x1e')]:_0x41a5f8[_0x9161('0x1b')]+_0x41a5f8[_0x9161('0x1d')];var _0x588ea6;if(_0x2b17a3>=_0x8c4949){_0x2b17a3=_0x8c4949;_0x588ea6=0xc8;}else{_0x588ea6=0xce;}_0x20fa48[_0x9161('0x1f')](_0x588ea6);return _0x20fa48[_0x9161('0x20')]('Content-Range',_0x20899d+'-'+_0x2b17a3+'/'+_0x8c4949)[_0x9161('0x21')](_0x214e1b);}return null;};}function saveUpdates(_0x3124dc){return function(_0x522a04){if(_0x522a04){return _0x522a04[_0x9161('0x22')](_0x3124dc)[_0x9161('0xf')](function(_0x5ce294){return _0x5ce294;});}return null;};}function removeEntity(_0x2b29ff){return function(_0x464786){if(_0x464786){return _0x464786[_0x9161('0x23')]()['then'](function(){var _0x40daaf=_0x464786[_0x9161('0x24')]({'plain':!![]});if(_0x40daaf[_0x9161('0x25')]==='admin')return;var _0x4523dd=[{'name':_0x9161('0x26'),'value':_0x9161('0x27'),'ignore':!![]},{'name':'Agents','value':_0x9161('0x28'),'ignore':![]},{'name':_0x9161('0x29'),'value':_0x9161('0x2a'),'ignore':![]}];var _0x207519=_(_0x4523dd)[_0x9161('0x2b')](_0x9161('0x2c'))[_0x9161('0x2d')](_0x9161('0x2e'))[_0x9161('0x2e')]();if(_[_0x9161('0x2f')](_0x207519,_0x40daaf[_0x9161('0x25')])){return;}var _0x44cb29=_[_0x9161('0x30')](_0x4523dd,[_0x9161('0x2e'),_0x40daaf[_0x9161('0x25')]])[_0x9161('0x31')];return db[_0x9161('0x32')][_0x9161('0x23')]({'where':{'type':_0x44cb29,'resourceId':_0x40daaf['id']}})[_0x9161('0xf')](function(){return _0x464786;});})[_0x9161('0xf')](function(){_0x2b29ff[_0x9161('0x1f')](0xcc)[_0x9161('0x1a')]();});}};}function handleEntityNotFound(_0x5b9b49){return function(_0x55b787){if(!_0x55b787){_0x5b9b49['sendStatus'](0x194);}return _0x55b787;};}function handleError(_0xc7b85d,_0x378849){_0x378849=_0x378849||0x1f4;return function(_0x16706b){logger[_0x9161('0x16')](_0x16706b[_0x9161('0x33')]);if(_0x16706b['name']){delete _0x16706b[_0x9161('0x31')];}_0xc7b85d['status'](_0x378849)[_0x9161('0x34')](_0x16706b);};}exports[_0x9161('0x35')]=function(_0x1f6ec1,_0x56f755){var _0x1e9ce3={},_0xa613fe={'count':0x0,'rows':[]};var _0x566711=_(db[_0x9161('0x36')]['rawAttributes'])['map'](function(_0x5b6cdc){return{'name':_0x5b6cdc['fieldName'],'type':_0x5b6cdc[_0x9161('0x37')][_0x9161('0x38')]};})['filter'](function(_0x4d1092){return!_[_0x9161('0x2f')]([_0x9161('0x39'),'salt'],_0x4d1092[_0x9161('0x31')]);})['value']();_0x1e9ce3=qs[_0x9161('0x3a')](_0x566711,_0x1f6ec1);var _0x27be74={'where':_0x1e9ce3[_0x9161('0x3b')]};return db[_0x9161('0x36')]['count'](_0x27be74)['then'](function(_0x2c8eeb){_0xa613fe[_0x9161('0x1e')]=_0x2c8eeb;if(_0x1f6ec1['query']['includeAll']){_0x1e9ce3[_0x9161('0x3c')]=[{'all':!![]}];}if(!_[_0x9161('0x2f')](_0x1e9ce3[_0x9161('0x3d')],'id')){_0x1e9ce3[_0x9161('0x3d')][_0x9161('0x3e')]('id');}return db[_0x9161('0x36')][_0x9161('0x3f')](_0x1e9ce3);})[_0x9161('0xf')](function(_0x2553bd){_0xa613fe[_0x9161('0x40')]=_0x2553bd;if(_0x1f6ec1[_0x9161('0x41')][_0x9161('0x42')]===_0x9161('0x43')){var _0x2ef987=[];for(var _0x177849=0x0;_0x177849<_0xa613fe[_0x9161('0x40')]['length'];_0x177849++){_0x2ef987[_0x9161('0x3e')](get_open_tabs('chat',_0xa613fe[_0x9161('0x40')][_0x177849]['dataValues']));_0x2ef987[_0x9161('0x3e')](get_open_tabs(_0x9161('0x44'),_0xa613fe[_0x9161('0x40')][_0x177849][_0x9161('0x45')]));_0x2ef987[_0x9161('0x3e')](get_open_tabs('fax',_0xa613fe[_0x9161('0x40')][_0x177849]['dataValues']));_0x2ef987[_0x9161('0x3e')](get_open_tabs(_0x9161('0x46'),_0xa613fe[_0x9161('0x40')][_0x177849][_0x9161('0x45')]));_0x2ef987[_0x9161('0x3e')](get_open_tabs(_0x9161('0x47'),_0xa613fe[_0x9161('0x40')][_0x177849][_0x9161('0x45')]));_0x2ef987[_0x9161('0x3e')](get_open_tabs(_0x9161('0x48'),_0xa613fe[_0x9161('0x40')][_0x177849][_0x9161('0x45')]));}return BPromise[_0x9161('0x49')](_0x2ef987)['then'](function(_0x3dfefc){return _0xa613fe;});}else{return _0xa613fe;}})[_0x9161('0xf')](respondWithFilteredResult(_0x56f755,_0x1e9ce3))[_0x9161('0x4a')](handleError(_0x56f755,null));};exports[_0x9161('0x4b')]=function(_0x1a56f8,_0x2af28e){var _0x43db88={'raw':![],'where':{'id':_0x1a56f8[_0x9161('0x4c')]['id']}},_0x3a9492={};_0x3a9492['model']=_['differenceBy'](_[_0x9161('0x4d')](db[_0x9161('0x36')][_0x9161('0x4e')]),[_0x9161('0x39'),_0x9161('0x4f')]);_0x3a9492[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x1a56f8[_0x9161('0x41')]);_0x3a9492[_0x9161('0x50')]=_[_0x9161('0x51')](_0x3a9492[_0x9161('0x52')],_0x3a9492[_0x9161('0x41')]);_0x43db88[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x3a9492['model'],qs[_0x9161('0x53')](_0x1a56f8[_0x9161('0x41')][_0x9161('0x53')]));_0x43db88[_0x9161('0x3d')]=_0x43db88[_0x9161('0x3d')]['length']?_0x43db88['attributes']:_0x3a9492[_0x9161('0x52')];if(_0x1a56f8[_0x9161('0x41')][_0x9161('0x54')]){_0x43db88[_0x9161('0x3c')]=[{'all':!![]}];}_0x43db88=_[_0x9161('0x55')]({},_0x43db88,_0x1a56f8[_0x9161('0x56')]);if(!_[_0x9161('0x2f')](_0x43db88[_0x9161('0x3d')],'id')){_0x43db88['attributes']['push']('id');}return db[_0x9161('0x36')][_0x9161('0x30')](_0x43db88)[_0x9161('0xf')](handleEntityNotFound(_0x2af28e,null))[_0x9161('0xf')](function(_0x4c62db){var _0x1deb75=[];values=_0x4c62db;if(_0x1a56f8[_0x9161('0x41')][_0x9161('0x42')]===_0x9161('0x43')){_0x1deb75[_0x9161('0x3e')](get_open_tabs('chat',_0x4c62db[_0x9161('0x45')]));_0x1deb75['push'](get_open_tabs('sms',_0x4c62db[_0x9161('0x45')]));_0x1deb75['push'](get_open_tabs(_0x9161('0x47'),_0x4c62db['dataValues']));_0x1deb75['push'](get_open_tabs(_0x9161('0x48'),_0x4c62db[_0x9161('0x45')]));_0x1deb75[_0x9161('0x3e')](get_open_tabs(_0x9161('0x57'),_0x4c62db['dataValues']));_0x1deb75[_0x9161('0x3e')](get_open_tabs('mail',_0x4c62db[_0x9161('0x45')]));return BPromise[_0x9161('0x49')](_0x1deb75);}else{return values;}})[_0x9161('0xf')](function(_0x229c73){return values;})[_0x9161('0xf')](respondWithResult(_0x2af28e,null))[_0x9161('0x4a')](handleError(_0x2af28e,null));};exports['update']=function(_0x39ec3e,_0x3edb6b){if(_0x39ec3e[_0x9161('0x58')]['id']){delete _0x39ec3e[_0x9161('0x58')]['id'];}delete _0x39ec3e[_0x9161('0x58')][_0x9161('0x25')];return db[_0x9161('0x36')]['find']({'where':{'id':_0x39ec3e['params']['id']}})['then'](handleEntityNotFound(_0x3edb6b,null))[_0x9161('0xf')](saveUpdates(_0x39ec3e[_0x9161('0x58')],null))[_0x9161('0xf')](respondWithResult(_0x3edb6b,null))[_0x9161('0x4a')](handleError(_0x3edb6b,null));};exports[_0x9161('0x59')]=function(_0x4398d2,_0x23d5d9){return db[_0x9161('0x36')][_0x9161('0x59')]()[_0x9161('0xf')](respondWithResult(_0x23d5d9,null))['catch'](handleError(_0x23d5d9,null));};exports['addContacts']=function(_0x23d291,_0x42f381){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x23d291[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x42f381,null))[_0x9161('0xf')](function(_0xd060a2){if(_0xd060a2){return _0xd060a2['addContacts'](_0x23d291['body'][_0x9161('0x5a')],_[_0x9161('0x5b')](_0x23d291[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{});}})[_0x9161('0xf')](respondWithResult(_0x42f381,null))[_0x9161('0x4a')](handleError(_0x42f381,null));};function validateUser(_0x1390e3){return new BPromise(function(_0x24064c,_0x3f564c){if(_0x1390e3[_0x9161('0x5c')])return _0x24064c(_0x1390e3);return db[_0x9161('0x5d')][_0x9161('0x5e')](0x1)[_0x9161('0xf')](function(_0x24c68d){if(_0x24c68d[_0x9161('0x5f')])authService['validatePasswordPattern'](_0x1390e3[_0x9161('0x39')]);db['User'][_0x9161('0x60')](_0x9161('0x5c'))[_0x9161('0xf')](function(_0x2941c1){if(_['isNil'](_0x2941c1)){_0x1390e3[_0x9161('0x5c')]=_0x24c68d[_0x9161('0x61')]||0x1;return;}if(_['isNil'](_0x24c68d[_0x9161('0x61')])||_0x24c68d[_0x9161('0x61')]===_0x2941c1){_0x1390e3[_0x9161('0x5c')]=_0x2941c1+0x1;return;}if(_0x24c68d['min_internal']>_0x2941c1){_0x1390e3[_0x9161('0x5c')]=_0x24c68d['min_internal'];return;}return db[_0x9161('0x62')][_0x9161('0x41')](_0x9161('0x63'),{'type':db[_0x9161('0x62')][_0x9161('0x64')][_0x9161('0x65')]})['then'](function(_0x35c254){if(_0x35c254&&_0x35c254['length']){for(var _0x5d3d39=0x0,_0x461b17=_0x35c254[_0x9161('0x66')];_0x5d3d39<_0x461b17&&_[_0x9161('0x67')](_0x1390e3['internal']);_0x5d3d39++){if(_0x24c68d[_0x9161('0x61')]<=_0x35c254[_0x5d3d39]['from']){_0x1390e3['internal']=_0x35c254[_0x5d3d39]['from'];}else if(_0x24c68d[_0x9161('0x61')]>_0x35c254[_0x5d3d39][_0x9161('0x68')]&&_0x24c68d[_0x9161('0x61')]<=_0x35c254[_0x5d3d39]['to']){_0x1390e3[_0x9161('0x5c')]=_0x24c68d[_0x9161('0x61')];}}}if(_[_0x9161('0x67')](_0x1390e3[_0x9161('0x5c')])){_0x1390e3[_0x9161('0x5c')]=_0x2941c1+0x1;}return _0x24064c(_0x1390e3);});});})[_0x9161('0x4a')](function(_0x5b7bc3){_0x3f564c(_0x5b7bc3);});});}function updateUser(_0x2a9b17){return new BPromise(function(_0x15f139,_0x4d5211){try{if(_0x2a9b17[_0x9161('0x69')]){_0x2a9b17[_0x9161('0x6a')]=_0x2a9b17[_0x9161('0x5c')];_0x2a9b17[_0x9161('0x6b')]={'mailbox':_0x2a9b17[_0x9161('0x5c')],'password':_0x2a9b17[_0x9161('0x39')],'fullname':_0x2a9b17['fullname'],'email':_0x2a9b17[_0x9161('0x6c')]};}if(_0x2a9b17[_0x9161('0x25')]==='agent'){if(!_0x2a9b17[_0x9161('0x6d')])_0x2a9b17[_0x9161('0x6d')]=[_0x9161('0x6e'),'102',_0x9161('0x6f'),_0x9161('0x70'),_0x9161('0x71'),'104',_0x9161('0x72'),_0x9161('0x73'),'107',_0x9161('0x74'),_0x9161('0x75'),'100',_0x9161('0x76'),_0x9161('0x77'),_0x9161('0x78')];}_0x15f139(_0x2a9b17);}catch(_0x5f4a30){_0x4d5211(_0x5f4a30);}});}exports['create']=function(_0x26699d,_0x272f3f){if(_0x26699d[_0x9161('0x27')][_0x9161('0x25')]===_0x9161('0x28'))throw new Error('Unauthorized');if(_0x26699d[_0x9161('0x58')][_0x9161('0x25')]===_0x9161('0x27')&&_0x26699d[_0x9161('0x27')][_0x9161('0x25')]!==_0x9161('0x79')){throw new Error(_0x9161('0x7a'));}if(_0x26699d[_0x9161('0x58')]['role']===_0x9161('0x79')&&_0x26699d[_0x9161('0x27')][_0x9161('0x25')]!==_0x9161('0x79')){throw new Error(_0x9161('0x7b'));}return licenseUtil[_0x9161('0x7c')]([_0x26699d[_0x9161('0x58')]])[_0x9161('0xf')](function(){return validateUser(_0x26699d[_0x9161('0x58')]);})[_0x9161('0xf')](function(_0x375c52){return updateUser(_0x375c52)[_0x9161('0xf')](function(_0x4b4b85){if(_0x4b4b85['role']==='admin'){_0x4b4b85[_0x9161('0x7d')]=_0x26699d[_0x9161('0x27')]['settingsEnabled'];delete _0x4b4b85['userProfileId'];}return _0x4b4b85;});})[_0x9161('0xf')](function(_0x102402){return db[_0x9161('0x36')]['create'](_0x102402,{'include':[{'model':db[_0x9161('0x6b')],'as':_0x9161('0x6b')}]});})['then'](function(_0x15ba6c){if(_0x26699d[_0x9161('0x58')]['role']===_0x9161('0x27'))return _0x15ba6c;if(_0x26699d[_0x9161('0x27')][_0x9161('0x25')]!==_0x9161('0x27'))return _0x15ba6c;return db['UserProfileSection'][_0x9161('0x30')]({'where':{'name':_0x15ba6c[_0x9161('0x25')]===_0x9161('0x28')?_0x9161('0x7e'):'Telephones','userProfileId':_0x26699d['user'][_0x9161('0x7f')]},'raw':!![]})[_0x9161('0xf')](function(_0xedba89){if(!_0xedba89||_0xedba89[_0x9161('0x80')]!=0x0)return _0x15ba6c;return db['UserProfileResource'][_0x9161('0x81')]({'name':_0x15ba6c['name'],'resourceId':_0x15ba6c['id'],'type':_0xedba89['name'],'sectionId':_0xedba89['id']},{})[_0x9161('0xf')](function(){return _0x15ba6c;});})[_0x9161('0x4a')](function(_0x2b3556){logger[_0x9161('0x16')](_0x9161('0x82'),_0x2b3556);throw _0x2b3556;});})[_0x9161('0xf')](respondWithResult(_0x272f3f,0xc9))[_0x9161('0x4a')](handleError(_0x272f3f,null));};exports[_0x9161('0x83')]=function(_0x47ccec,_0x27623a){var _0x4c22f4=_0x47ccec[_0x9161('0x58')];var _0x24aec3=[];if(_0x47ccec[_0x9161('0x27')][_0x9161('0x25')]==='agent')throw new Error('Unauthorized');if(_['some'](_0x4c22f4,[_0x9161('0x25'),'user'])&&_0x47ccec[_0x9161('0x27')][_0x9161('0x25')]!==_0x9161('0x79')){throw new Error(_0x9161('0x7a'));}if(_[_0x9161('0x84')](_0x4c22f4,['role','admin'])&&_0x47ccec[_0x9161('0x27')][_0x9161('0x25')]!=='admin'){throw new Error(_0x9161('0x85'));}return licenseUtil[_0x9161('0x7c')](_0x4c22f4)[_0x9161('0xf')](function(){return validateUser(_0x4c22f4[0x0]);})[_0x9161('0xf')](function(){for(var _0x57aaba=0x1;_0x57aaba<_0x4c22f4[_0x9161('0x66')];_0x57aaba++){var _0x5de16f=_0x4c22f4[_0x57aaba-0x1][_0x9161('0x5c')];if(!_0x4c22f4[_0x57aaba]['internal'])_0x4c22f4[_0x57aaba][_0x9161('0x5c')]=_0x5de16f+0x1;_0x24aec3[_0x9161('0x3e')](validateUser(_0x4c22f4[_0x57aaba]));}return BPromise['all'](_0x24aec3);})[_0x9161('0xf')](function(){_0x24aec3=[];for(var _0x4700a8=0x0;_0x4700a8<_0x4c22f4[_0x9161('0x66')];_0x4700a8++){_0x24aec3['push'](updateUser(_0x4c22f4[_0x4700a8]));}return BPromise['all'](_0x24aec3);})[_0x9161('0xf')](function(){return BPromise[_0x9161('0x86')](_0x4c22f4,function(_0x2dbe3f){return db[_0x9161('0x36')][_0x9161('0x81')](_0x2dbe3f,{'include':[{'model':db['VoiceMail'],'as':'VoiceMail'}]})[_0x9161('0xf')](function(_0x178e33){_0x2dbe3f['id']=_0x178e33['id'];return _0x2dbe3f;});});})['then'](function(_0x1b00e3){if(_0x47ccec[_0x9161('0x58')][_0x9161('0x25')]===_0x9161('0x27'))return _0x1b00e3;if(_0x47ccec[_0x9161('0x27')]['role']!=='user')return _0x1b00e3;var _0x80b5b8=_['some'](_0x1b00e3,function(_0x17b2d1){return _0x17b2d1['role']===_0x9161('0x28')||_0x17b2d1[_0x9161('0x25')]===_0x9161('0x2a');});if(!_0x80b5b8)return _0x1b00e3;return db[_0x9161('0x87')][_0x9161('0x3f')]({'where':{'name':{'$or':['Agents',_0x9161('0x29')]},'userProfileId':_0x47ccec[_0x9161('0x27')][_0x9161('0x7f')]},'raw':!![]})[_0x9161('0xf')](function(_0x1619ac){if(_[_0x9161('0x88')](_0x1619ac)||!_[_0x9161('0x84')](_0x1619ac,['autoAssociation',0x0]))return _0x1b00e3;_0x24aec3=[];var _0x2ccb78=_(_0x1619ac)[_0x9161('0x2d')](function(_0x4d1a31){if(_0x4d1a31[_0x9161('0x80')]===0x1)return;return _0x4d1a31[_0x9161('0x31')]===_0x9161('0x7e')?_0x9161('0x28'):_0x9161('0x2a');})['compact']()[_0x9161('0x2e')]();for(var _0x1a93a2=0x0;_0x1a93a2<_0x1b00e3[_0x9161('0x66')];_0x1a93a2++){if(!_[_0x9161('0x2f')](_0x2ccb78,_0x1b00e3[_0x1a93a2]['role']))return;var _0x39b2b1=_0x1b00e3[_0x1a93a2][_0x9161('0x25')]==='agent'?_0x9161('0x7e'):_0x9161('0x29');_0x24aec3[_0x9161('0x3e')](db['UserProfileResource']['create']({'name':_0x1b00e3[_0x1a93a2][_0x9161('0x31')],'resourceId':_0x1b00e3[_0x1a93a2]['id'],'type':_0x39b2b1,'sectionId':_['find'](_0x1619ac,[_0x9161('0x31'),_0x39b2b1])['id']},{}));}return BPromise['all'](_0x24aec3);});})[_0x9161('0xf')](respondWithResult(_0x27623a,0xc9))[_0x9161('0x4a')](handleError(_0x27623a,null));};exports[_0x9161('0x89')]=function(_0x43d1fd,_0x42d54a){if(_0x43d1fd['body']['id']){delete _0x43d1fd[_0x9161('0x58')]['id'];}return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x43d1fd[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](function(_0x1935d0){if(!_0x1935d0)return null;if(_0x1935d0['id']===_0x43d1fd[_0x9161('0x27')]['id']){if(!_0x43d1fd[_0x9161('0x58')][_0x9161('0x8a')]||!_0x43d1fd[_0x9161('0x58')][_0x9161('0x8b')]){throw new db[(_0x9161('0x8c'))][(_0x9161('0x8d'))](_0x9161('0x8e'));}if(!_0x1935d0['authenticate'](_0x43d1fd['body'][_0x9161('0x8a')])){throw new db[(_0x9161('0x8c'))][(_0x9161('0x8d'))]('Wrong\x20credentials');}if(_0x43d1fd[_0x9161('0x58')][_0x9161('0x8a')]===_0x43d1fd[_0x9161('0x58')]['newPassword']){throw new db['Sequelize']['ValidationError'](_0x9161('0x8f'));}}else if(_0x43d1fd['user'][_0x9161('0x25')]===_0x9161('0x79')){if(!_0x43d1fd[_0x9161('0x58')][_0x9161('0x8b')]){throw new db[(_0x9161('0x8c'))][(_0x9161('0x8d'))](_0x9161('0x90'));}}else if(_0x43d1fd[_0x9161('0x27')][_0x9161('0x25')]===_0x9161('0x27')){if(!_0x43d1fd[_0x9161('0x58')][_0x9161('0x8b')]){throw new db[(_0x9161('0x8c'))]['ValidationError'](_0x9161('0x90'));}if(_0x1935d0[_0x9161('0x25')]!==_0x9161('0x28')){throw new db[(_0x9161('0x8c'))][(_0x9161('0x8d'))](_0x9161('0x91'));}}else{throw new db[(_0x9161('0x8c'))][(_0x9161('0x8d'))](_0x9161('0x91'));}return _0x1935d0;})[_0x9161('0xf')](handleEntityNotFound(_0x42d54a,null))[_0x9161('0xf')](function(_0xfc328b){return db[_0x9161('0x5d')][_0x9161('0x92')]({'attributes':['id',_0x9161('0x5f'),_0x9161('0x93'),'passwordHistoryLimit']})[_0x9161('0xf')](function(_0x4dbbc1){if(_0x4dbbc1[_0x9161('0x5f')])authService[_0x9161('0x94')](_0x43d1fd[_0x9161('0x58')][_0x9161('0x8b')]);if(!_0x4dbbc1[_0x9161('0x93')]||!_0xfc328b[_0x9161('0x95')])return _0xfc328b;authService[_0x9161('0x96')](_0x43d1fd[_0x9161('0x58')][_0x9161('0x8b')],_0xfc328b[_0x9161('0x95')],_0x4dbbc1[_0x9161('0x97')]);return _0xfc328b;})[_0x9161('0xf')](saveUpdates({'password':_0x43d1fd[_0x9161('0x58')][_0x9161('0x8b')],'passwordResetAt':_0x43d1fd[_0x9161('0x27')]['id']==_0x43d1fd[_0x9161('0x4c')]['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x43d1fd[_0x9161('0x58')][_0x9161('0x8b')],_0xfc328b[_0x9161('0x95')])},null));})['then'](respondWithResult(_0x42d54a,null))[_0x9161('0x4a')](handleError(_0x42d54a,null));};exports['addQueues']=function(_0x1db9e0,_0x142e2c){var _0x2e9834=_0x1db9e0['body']['channel'];return db['User']['find']({'where':{'id':_0x1db9e0['params']['id']},'attributes':['id',_0x9161('0x31'),_0x9161('0x25'),_0x9161('0x98'),_0x9161('0x99'),'voicePause',_0x9161('0x9a')]})['then'](handleEntityNotFound(_0x142e2c,null))['then'](function(_0x49f519){if(_0x49f519){if(!utils[_0x9161('0x9b')](_0x2e9834)){throw new db['Sequelize'][(_0x9161('0x8d'))]('Unknown\x20channel');}return _0x49f519[_0x9161('0x9c')+_['capitalize'](_0x2e9834[_0x9161('0x9d')]())+_0x9161('0x9e')](_0x1db9e0[_0x9161('0x58')][_0x9161('0x5a')],{'penalty':_0x1db9e0['body']['penalty']||0x0})[_0x9161('0x9f')](function(_0x4ff055){for(var _0x12f67d=0x0;_0x12f67d<_0x1db9e0[_0x9161('0x58')][_0x9161('0x5a')][_0x9161('0x66')];_0x12f67d+=0x1){var _0x56eb88={'UserId':Number(_0x1db9e0[_0x9161('0x4c')]['id'])};_0x56eb88[_[_0x9161('0xa0')](_0x2e9834[_0x9161('0x9d')]())+_0x9161('0xa1')]=Number(_0x1db9e0['body'][_0x9161('0x5a')][_0x12f67d]);socket['emit'](_0x9161('0x27')+_[_0x9161('0xa0')](_0x2e9834[_0x9161('0x9d')]())+_0x9161('0xa2'),_0x56eb88);}return _0x4ff055;})[_0x9161('0xf')](function(){if(_0x2e9834===_0x9161('0xa3')){return db[_0x9161('0xa4')][_0x9161('0x3f')]({'where':{'id':_0x1db9e0[_0x9161('0x58')][_0x9161('0x5a')]||[]},'raw':!![],'attributes':['id','name']});}})[_0x9161('0xf')](function(_0x21e866){var _0x51611d=_0x49f519['get']({'plain':!![]});var _0x2810b4=[];if(_0x2e9834===_0x9161('0xa3')&&_0x51611d[_0x9161('0x25')]===_0x9161('0x28')&&_0x51611d[_0x9161('0x98')]){for(var _0x215a93=0x0;_0x215a93<_0x21e866[_0x9161('0x66')];_0x215a93+=0x1){_0x2810b4[_0x9161('0x3e')]({'membername':_0x51611d[_0x9161('0x31')],'UserId':_0x51611d['id'],'queue_name':_0x21e866[_0x215a93][_0x9161('0x31')],'VoiceQueueId':_0x21e866[_0x215a93]['id'],'interface':_[_0x9161('0x67')](_0x51611d[_0x9161('0x9a')])?util[_0x9161('0xa5')](_0x9161('0xa6'),_0x51611d[_0x9161('0x31')]):_0x51611d['interface'],'paused':_0x51611d[_0x9161('0xa7')]||![],'penalty':_0x1db9e0[_0x9161('0x58')]['penalty']||0x0});}return BPromise[_0x9161('0x86')](_0x2810b4,function(_0x2f4923){return db[_0x9161('0xa8')][_0x9161('0xa9')](_0x2f4923);});}return _0x49f519;});}})[_0x9161('0xf')](respondWithStatusCode(_0x142e2c,null))[_0x9161('0x4a')](handleError(_0x142e2c,null));};exports['removeQueues']=function(_0x5b88bf,_0x522d1f){var _0x2ee027;return db[_0x9161('0x36')]['find']({'where':{'id':_0x5b88bf[_0x9161('0x4c')]['id']},'attributes':['id',_0x9161('0x31'),_0x9161('0x25')]})[_0x9161('0xf')](handleEntityNotFound(_0x522d1f,null))[_0x9161('0xf')](function(_0x540f9a){if(_0x540f9a){_0x2ee027=_0x540f9a;if(!_0x5b88bf[_0x9161('0x41')]['channel']||!utils['isValidChannel'](_0x5b88bf[_0x9161('0x41')][_0x9161('0xaa')])){throw new db[(_0x9161('0x8c'))][(_0x9161('0x8d'))](_0x9161('0xab'));}return _0x540f9a[_0x9161('0xac')+_[_0x9161('0xa0')](_0x5b88bf['query'][_0x9161('0xaa')][_0x9161('0x9d')]())+_0x9161('0x9e')](_0x5b88bf[_0x9161('0x41')][_0x9161('0x5a')]);}})[_0x9161('0xf')](function(_0x1562fa){if(_[_0x9161('0xad')](_0x5b88bf[_0x9161('0x41')][_0x9161('0x5a')])){for(var _0x5ab314=0x0;_0x5ab314<_0x5b88bf['query'][_0x9161('0x5a')][_0x9161('0x66')];_0x5ab314+=0x1){var _0x545140={'UserId':Number(_0x5b88bf[_0x9161('0x4c')]['id'])};_0x545140[_[_0x9161('0xa0')](_0x5b88bf[_0x9161('0x41')]['channel'][_0x9161('0x9d')]())+'QueueId']=Number(_0x5b88bf[_0x9161('0x41')][_0x9161('0x5a')][_0x5ab314]);socket[_0x9161('0xae')](_0x9161('0x27')+_[_0x9161('0xa0')](_0x5b88bf[_0x9161('0x41')][_0x9161('0xaa')][_0x9161('0x9d')]())+'Queue:remove',_0x545140);}}else{var _0x545140={'UserId':Number(_0x5b88bf[_0x9161('0x4c')]['id'])};_0x545140[_[_0x9161('0xa0')](_0x5b88bf['query'][_0x9161('0xaa')][_0x9161('0x9d')]())+_0x9161('0xa1')]=Number(_0x5b88bf[_0x9161('0x41')][_0x9161('0x5a')]);socket['emit'](_0x9161('0x27')+_['capitalize'](_0x5b88bf[_0x9161('0x41')][_0x9161('0xaa')][_0x9161('0x9d')]())+_0x9161('0xaf'),_0x545140);}return _0x1562fa;})['then'](function(){if(_0x5b88bf[_0x9161('0x41')][_0x9161('0xaa')]===_0x9161('0xa3')){return db[_0x9161('0xa8')][_0x9161('0x23')]({'where':{'UserId':_0x5b88bf['params']['id'],'VoiceQueueId':_0x5b88bf[_0x9161('0x41')][_0x9161('0x5a')]},'individualHooks':!![]})[_0x9161('0xf')](function(){return _0x2ee027;});}return _0x2ee027;})[_0x9161('0xf')](respondWithStatusCode(_0x522d1f,null))['catch'](handleError(_0x522d1f,null));};exports[_0x9161('0xb0')]=function(_0x338659,_0x4d50e2){_0x338659['body'][_0x9161('0xb1')]=_0x338659[_0x9161('0xb2')][_0x9161('0xb3')];return db['User'][_0x9161('0x30')]({'where':{'id':_0x338659[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x4d50e2,null))[_0x9161('0xf')](saveUpdates(_0x338659[_0x9161('0x58')],null))[_0x9161('0xf')](respondWithResult(_0x4d50e2,null))[_0x9161('0x4a')](handleError(_0x4d50e2,null));};exports['getAvatar']=function(_0x204643,_0x53ef87){var _0x1d6e82=path[_0x9161('0xb4')](config[_0x9161('0xb5')],'server/files/images/logos/default_profile.png');return db[_0x9161('0x36')]['find']({'where':{'id':_0x204643[_0x9161('0x4c')]['id']},'attributes':['id',_0x9161('0xb1')],'raw':!![]})[_0x9161('0xf')](handleEntityNotFound(_0x53ef87,null))[_0x9161('0xf')](function(_0x492516){if(_0x492516){if(_[_0x9161('0x67')](_0x492516[_0x9161('0xb1')])){return _0x53ef87[_0x9161('0xb6')](_0x1d6e82);}else{if(!fs[_0x9161('0xb7')](path['join'](config[_0x9161('0xb5')],_0x9161('0xb8'),_0x492516['userpic']))){return _0x53ef87[_0x9161('0xb6')](_0x1d6e82);}return _0x53ef87['download'](path[_0x9161('0xb4')](config['root'],_0x9161('0xb8'),_0x492516[_0x9161('0xb1')]));}}})[_0x9161('0x4a')](handleError(_0x53ef87,null));};exports[_0x9161('0xb9')]=function(_0x1c7c8c,_0x4dac04){return db['User'][_0x9161('0x30')]({'where':{'id':_0x1c7c8c['params']['id']},'attributes':['id']})[_0x9161('0xf')](handleEntityNotFound(_0x4dac04,null))[_0x9161('0xf')](function(_0x492090){var _0x2a06db=[];values=_0x492090[_0x9161('0x45')];_0x2a06db['push'](get_open_tabs(_0x9161('0xba'),_0x492090['dataValues']));_0x2a06db[_0x9161('0x3e')](get_open_tabs(_0x9161('0x44'),_0x492090[_0x9161('0x45')]));_0x2a06db['push'](get_open_tabs(_0x9161('0x47'),_0x492090[_0x9161('0x45')]));_0x2a06db[_0x9161('0x3e')](get_open_tabs(_0x9161('0x48'),_0x492090[_0x9161('0x45')]));_0x2a06db['push'](get_open_tabs(_0x9161('0x57'),_0x492090['dataValues']));_0x2a06db[_0x9161('0x3e')](get_open_tabs(_0x9161('0x46'),_0x492090[_0x9161('0x45')]));return BPromise[_0x9161('0x49')](_0x2a06db);})[_0x9161('0xf')](function(_0x5a118b){var _0xe25158=[];if(_0x5a118b){for(var _0x3fb79e=0x0;_0x3fb79e<values['ChatOpenTabs']['length'];_0x3fb79e++){var _0x2eaa70=values['ChatOpenTabs'][_0x3fb79e];_0xe25158['push']({'channel':_0x9161('0xbb'),'id':_0x2eaa70['id'],'createdAt':_0x2eaa70['createdAt']});}for(var _0x3fb79e=0x0;_0x3fb79e<values[_0x9161('0xbc')][_0x9161('0x66')];_0x3fb79e++){var _0x2eaa70=values[_0x9161('0xbc')][_0x3fb79e];_0xe25158['push']({'channel':_0x9161('0xbd'),'id':_0x2eaa70['id'],'createdAt':_0x2eaa70[_0x9161('0xbe')]});}for(var _0x3fb79e=0x0;_0x3fb79e<values[_0x9161('0xbf')][_0x9161('0x66')];_0x3fb79e++){var _0x2eaa70=values[_0x9161('0xbf')][_0x3fb79e];_0xe25158[_0x9161('0x3e')]({'channel':'OPENCHANNEL','id':_0x2eaa70['id'],'createdAt':_0x2eaa70['createdAt']});}for(var _0x3fb79e=0x0;_0x3fb79e<values[_0x9161('0xc0')]['length'];_0x3fb79e++){var _0x2eaa70=values[_0x9161('0xc0')][_0x3fb79e];_0xe25158[_0x9161('0x3e')]({'channel':_0x9161('0xc1'),'id':_0x2eaa70['id'],'createdAt':_0x2eaa70[_0x9161('0xbe')]});}for(var _0x3fb79e=0x0;_0x3fb79e<values[_0x9161('0xc2')]['length'];_0x3fb79e++){var _0x2eaa70=values['SmsOpenTabs'][_0x3fb79e];_0xe25158['push']({'channel':'SMS','id':_0x2eaa70['id'],'createdAt':_0x2eaa70[_0x9161('0xbe')]});}for(var _0x3fb79e=0x0;_0x3fb79e<values['WhatsappOpenTabs']['length'];_0x3fb79e++){var _0x2eaa70=values[_0x9161('0xc3')][_0x3fb79e];_0xe25158['push']({'channel':_0x9161('0xc4'),'id':_0x2eaa70['id'],'createdAt':_0x2eaa70[_0x9161('0xbe')]});}var _0x3ab8c0={'count':_0xe25158[_0x9161('0x66')],'rows':_0xe25158};return _0x3ab8c0;}else return null;})['then'](respondWithResult(_0x4dac04,null))[_0x9161('0x4a')](handleError(_0x4dac04,null));};exports['getContacts']=function(_0x490085,_0x48ba3a){var _0x169103={};var _0x459e13={};var _0xe89568;var _0x2197cb;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x490085[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x48ba3a,null))['then'](function(_0x432d07){if(_0x432d07){_0xe89568=_0x432d07;_0x459e13[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0xc5')]['rawAttributes']);_0x459e13[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x490085['query']);_0x459e13[_0x9161('0x50')]=_['intersection'](_0x459e13[_0x9161('0x52')],_0x459e13[_0x9161('0x41')]);_0x169103[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x459e13[_0x9161('0x52')],qs[_0x9161('0x53')](_0x490085['query'][_0x9161('0x53')]));_0x169103[_0x9161('0x3d')]=_0x169103['attributes'][_0x9161('0x66')]?_0x169103[_0x9161('0x3d')]:_0x459e13[_0x9161('0x52')];_0x169103[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x490085[_0x9161('0x41')]['sort']);_0x169103[_0x9161('0x3b')]=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x490085[_0x9161('0x41')],_0x459e13[_0x9161('0x50')]));if(_0x490085[_0x9161('0x41')][_0x9161('0x2b')]){_0x169103['where']=_[_0x9161('0x55')](_0x169103[_0x9161('0x3b')],{'$or':_['map'](_0x169103[_0x9161('0x3d')],function(_0x29384c){var _0x554f7d={};_0x554f7d[_0x29384c]={'$like':'%'+_0x490085[_0x9161('0x41')]['filter']+'%'};return _0x554f7d;})});}_0x169103=_[_0x9161('0x55')]({},_0x169103,_0x490085[_0x9161('0x56')]);return _0xe89568['getContacts'](_0x169103);}})[_0x9161('0xf')](function(_0x30df48){if(_0x30df48){_0x2197cb=_0x30df48[_0x9161('0x66')];if(_0x490085[_0x9161('0x41')]['hasOwnProperty'](_0x9161('0x54'))){_0x169103['include']=[{'model':db[_0x9161('0xc9')],'as':'List','required':![]},{'model':db['Tag'],'as':_0x9161('0xca'),'attributes':['id',_0x9161('0x31'),_0x9161('0xcb')],'where':_0x490085['query'][_0x9161('0xcc')]?{'id':_0x490085[_0x9161('0x41')][_0x9161('0xcc')]}:undefined,'required':_0x490085[_0x9161('0x41')][_0x9161('0xcc')]?!![]:![]}];}if(!_0x490085[_0x9161('0x41')][_0x9161('0xcd')](_0x9161('0xce'))){_0x169103[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x490085['query'][_0x9161('0x1d')]);_0x169103[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x490085[_0x9161('0x41')][_0x9161('0x1b')]);}return _0xe89568[_0x9161('0xcf')](_0x169103);}})[_0x9161('0xf')](function(_0x3518cf){if(_0x3518cf){return _0x3518cf?{'count':_0x2197cb,'rows':_0x3518cf}:null;}})[_0x9161('0xf')](respondWithResult(_0x48ba3a,null))[_0x9161('0x4a')](handleError(_0x48ba3a,null));};exports[_0x9161('0xd0')]=function(_0x321659,_0x590500){var _0x5b1498;var _0x59211f;var _0x5f5a2e={};var _0x2d6257;return db[_0x9161('0x36')]['findOne']({'where':{'id':_0x321659[_0x9161('0x4c')]['id']},'attributes':['id',_0x9161('0x31'),'role']})['then'](handleEntityNotFound(_0x590500,null))[_0x9161('0xf')](function(_0x5e2d10){if(!utils['isValidChannel'](_0x321659[_0x9161('0x41')][_0x9161('0xaa')])){throw new db[(_0x9161('0x8c'))][(_0x9161('0x8d'))](_0x9161('0xab'));}_0x5b1498=_0x5e2d10;var _0x3199ce={};_0x3199ce[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_['capitalize'](_0x321659[_0x9161('0x41')]['channel'])+'Queue'][_0x9161('0x4e')]);_0x3199ce['query']=_[_0x9161('0x4d')](_0x321659['query']);_0x3199ce[_0x9161('0x50')]=_[_0x9161('0x51')](_0x3199ce[_0x9161('0x52')],_0x3199ce[_0x9161('0x41')]);_0x5f5a2e[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x3199ce[_0x9161('0x52')],qs[_0x9161('0x53')](_0x321659[_0x9161('0x41')][_0x9161('0x53')]));_0x5f5a2e[_0x9161('0x3d')]=_0x5f5a2e[_0x9161('0x3d')][_0x9161('0x66')]?_0x5f5a2e['attributes']:_0x3199ce[_0x9161('0x52')];_0x5f5a2e[_0x9161('0xc6')]=qs['sort'](_0x321659[_0x9161('0x41')][_0x9161('0xc7')]);_0x5f5a2e['where']=qs['filters'](_[_0x9161('0xc8')](_0x321659[_0x9161('0x41')],_0x3199ce[_0x9161('0x50')]));if(_0x321659[_0x9161('0x41')][_0x9161('0x2b')]){_0x5f5a2e[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x5f5a2e['where'],{'$or':_[_0x9161('0x2d')](_0x5f5a2e[_0x9161('0x3d')],function(_0xa9347){var _0x428ae5={};_0x428ae5[_0xa9347]={'$like':'%'+_0x321659[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x428ae5;})});}_0x5f5a2e=_[_0x9161('0x55')]({},_0x5f5a2e,_0x321659['options']);switch(_0x5b1498[_0x9161('0x25')]){case'admin':return db[_[_0x9161('0xa0')](_0x321659[_0x9161('0x41')][_0x9161('0xaa')])+_0x9161('0xd1')][_0x9161('0x3f')](_0x5f5a2e);case _0x9161('0x27'):case _0x9161('0x28'):return _0x5b1498[_0x9161('0x24')+_['capitalize'](_0x321659['query'][_0x9161('0xaa')])+'Queues'](_0x5f5a2e);default:throw new db[(_0x9161('0x8c'))][(_0x9161('0x8d'))](_0x9161('0xd2'));}})[_0x9161('0xf')](function(_0x21bf06){_0x2d6257=_0x21bf06[_0x9161('0x66')];if(!_0x321659['query']['hasOwnProperty'](_0x9161('0xce'))){_0x5f5a2e['limit']=qs[_0x9161('0x1d')](_0x321659[_0x9161('0x41')][_0x9161('0x1d')]);_0x5f5a2e[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x321659[_0x9161('0x41')][_0x9161('0x1b')]);}switch(_0x5b1498['role']){case _0x9161('0x79'):return db[_['capitalize'](_0x321659[_0x9161('0x41')][_0x9161('0xaa')])+_0x9161('0xd1')][_0x9161('0x3f')](_0x5f5a2e);case _0x9161('0x27'):case _0x9161('0x28'):return _0x5b1498[_0x9161('0x24')+_[_0x9161('0xa0')](_0x321659[_0x9161('0x41')][_0x9161('0xaa')])+_0x9161('0x9e')](_0x5f5a2e);}})[_0x9161('0xf')](function(_0x37aa3c){return{'count':_0x2d6257,'rows':_0x37aa3c};})[_0x9161('0xf')](respondWithResult(_0x590500,null))[_0x9161('0x4a')](handleError(_0x590500,null));};exports[_0x9161('0xd3')]=function(_0x4219af,_0x2a5d40){var _0xc64de1={};var _0x268d5e={};var _0x5d458;var _0x2ed6d4;return db['User']['findOne']({'where':{'id':_0x4219af[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x2a5d40,null))[_0x9161('0xf')](function(_0x4c422a){if(_0x4c422a){_0x5d458=_0x4c422a;_0x268d5e[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0xa8')]['rawAttributes']);_0x268d5e['query']=_[_0x9161('0x4d')](_0x4219af['query']);_0x268d5e[_0x9161('0x50')]=_['intersection'](_0x268d5e[_0x9161('0x52')],_0x268d5e[_0x9161('0x41')]);_0xc64de1['attributes']=_[_0x9161('0x51')](_0x268d5e['model'],qs[_0x9161('0x53')](_0x4219af[_0x9161('0x41')][_0x9161('0x53')]));_0xc64de1[_0x9161('0x3d')]=_0xc64de1[_0x9161('0x3d')][_0x9161('0x66')]?_0xc64de1[_0x9161('0x3d')]:_0x268d5e['model'];_0xc64de1[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x4219af['query'][_0x9161('0xc7')]);_0xc64de1[_0x9161('0x3b')]=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x4219af['query'],_0x268d5e[_0x9161('0x50')]));if(_0x4219af[_0x9161('0x41')][_0x9161('0x2b')]){_0xc64de1['where']=_[_0x9161('0x55')](_0xc64de1[_0x9161('0x3b')],{'$or':_['map'](_0xc64de1[_0x9161('0x3d')],function(_0x433d6a){var _0x17763d={};_0x17763d[_0x433d6a]={'$like':'%'+_0x4219af[_0x9161('0x41')]['filter']+'%'};return _0x17763d;})});}_0xc64de1=_['merge']({},_0xc64de1,_0x4219af[_0x9161('0x56')]);return _0x5d458[_0x9161('0xd3')](_0xc64de1);}})[_0x9161('0xf')](function(_0x2d5fbc){if(_0x2d5fbc){_0x2ed6d4=_0x2d5fbc[_0x9161('0x66')];if(!_0x4219af[_0x9161('0x41')][_0x9161('0xcd')]('nolimit')){_0xc64de1[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x4219af[_0x9161('0x41')][_0x9161('0x1d')]);_0xc64de1[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x4219af[_0x9161('0x41')][_0x9161('0x1b')]);}return _0x5d458[_0x9161('0xd3')](_0xc64de1);}})[_0x9161('0xf')](function(_0x2fecdf){if(_0x2fecdf){return _0x2fecdf?{'count':_0x2ed6d4,'rows':_0x2fecdf}:null;}})['then'](respondWithResult(_0x2a5d40,null))[_0x9161('0x4a')](handleError(_0x2a5d40,null));};exports['getGroups']=function(_0x179ee8,_0x514319){var _0x13a13b={};var _0x9b0939={};var _0x3c54a2;var _0x12abb2;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x179ee8[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x514319,null))['then'](function(_0x3eadf6){if(_0x3eadf6){_0x3c54a2=_0x3eadf6;_0x9b0939[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0xd4')][_0x9161('0x4e')]);_0x9b0939['query']=_['keys'](_0x179ee8['query']);_0x9b0939[_0x9161('0x50')]=_[_0x9161('0x51')](_0x9b0939[_0x9161('0x52')],_0x9b0939[_0x9161('0x41')]);_0x13a13b['attributes']=_[_0x9161('0x51')](_0x9b0939['model'],qs[_0x9161('0x53')](_0x179ee8[_0x9161('0x41')]['fields']));_0x13a13b[_0x9161('0x3d')]=_0x13a13b[_0x9161('0x3d')][_0x9161('0x66')]?_0x13a13b['attributes']:_0x9b0939[_0x9161('0x52')];_0x13a13b[_0x9161('0xc6')]=qs['sort'](_0x179ee8[_0x9161('0x41')][_0x9161('0xc7')]);_0x13a13b[_0x9161('0x3b')]=qs[_0x9161('0x50')](_['pick'](_0x179ee8['query'],_0x9b0939['filters']));if(_0x179ee8[_0x9161('0x41')][_0x9161('0x2b')]){_0x13a13b[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x13a13b['where'],{'$or':_[_0x9161('0x2d')](_0x13a13b[_0x9161('0x3d')],function(_0x1a03cc){var _0x45d815={};_0x45d815[_0x1a03cc]={'$like':'%'+_0x179ee8[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x45d815;})});}_0x13a13b=_[_0x9161('0x55')]({},_0x13a13b,_0x179ee8[_0x9161('0x56')]);return _0x3c54a2[_0x9161('0xd5')](_0x13a13b);}})[_0x9161('0xf')](function(_0x47d3cc){if(_0x47d3cc){_0x12abb2=_0x47d3cc[_0x9161('0x66')];if(!_0x179ee8[_0x9161('0x41')]['hasOwnProperty'](_0x9161('0xce'))){_0x13a13b['limit']=qs[_0x9161('0x1d')](_0x179ee8[_0x9161('0x41')][_0x9161('0x1d')]);_0x13a13b[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x179ee8[_0x9161('0x41')]['offset']);}return _0x3c54a2[_0x9161('0xd5')](_0x13a13b);}})['then'](function(_0x1ec180){if(_0x1ec180){return _0x1ec180?{'count':_0x12abb2,'rows':_0x1ec180}:null;}})['then'](respondWithResult(_0x514319,null))[_0x9161('0x4a')](handleError(_0x514319,null));};exports['getRecordings']=function(_0x1115cb,_0x5c1b76){var _0x536c4d={'raw':!![],'where':{}};var _0x2cc287={};var _0x5ba6ca={'count':0x0,'rows':[]};return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x1115cb[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x5c1b76,null))[_0x9161('0xf')](function(_0x1f39d6){if(_0x1f39d6){_0x2cc287[_0x9161('0x52')]=_[_0x9161('0x4d')](db['VoiceRecording'][_0x9161('0x4e')]);_0x2cc287[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x1115cb['query']);_0x2cc287[_0x9161('0x50')]=_[_0x9161('0x51')](_0x2cc287['model'],_0x2cc287[_0x9161('0x41')]);_0x536c4d[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x2cc287[_0x9161('0x52')],qs[_0x9161('0x53')](_0x1115cb['query']['fields']));_0x536c4d[_0x9161('0x3d')]=_0x536c4d[_0x9161('0x3d')][_0x9161('0x66')]?_0x536c4d['attributes']:_0x2cc287[_0x9161('0x52')];if(!_0x1115cb['query'][_0x9161('0xcd')](_0x9161('0xce'))){_0x536c4d[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x1115cb[_0x9161('0x41')]['limit']);_0x536c4d['offset']=qs['offset'](_0x1115cb[_0x9161('0x41')][_0x9161('0x1b')]);}_0x536c4d['order']=qs[_0x9161('0xc7')](_0x1115cb['query'][_0x9161('0xc7')]);_0x536c4d[_0x9161('0x3b')]=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x1115cb[_0x9161('0x41')],_0x2cc287['filters']));_0x536c4d[_0x9161('0x3b')][_0x9161('0xd6')]=_0x1f39d6['id'];if(_0x1115cb[_0x9161('0x41')]['filter']){_0x536c4d[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x536c4d['where'],{'$or':_[_0x9161('0x2d')](_0x536c4d[_0x9161('0x3d')],function(_0x24661d){var _0x570eb2={};_0x570eb2[_0x24661d]={'$like':'%'+_0x1115cb[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x570eb2;})});}_0x536c4d=_['merge']({},_0x536c4d,_0x1115cb[_0x9161('0x56')]);return db[_0x9161('0xd7')][_0x9161('0x1e')]({'where':_0x536c4d[_0x9161('0x3b')]})[_0x9161('0xf')](function(_0x138501){_0x5ba6ca['count']=_0x138501;if(_0x1115cb[_0x9161('0x41')][_0x9161('0x54')]){_0x536c4d[_0x9161('0x3c')]=[{'all':!![]}];}return db[_0x9161('0xd7')][_0x9161('0x3f')](_0x536c4d);})['then'](function(_0x162858){_0x5ba6ca[_0x9161('0x40')]=_0x162858;return _0x5ba6ca;});}})['then'](respondWithFilteredResult(_0x5c1b76,_0x536c4d))['catch'](handleError(_0x5c1b76,null));};exports[_0x9161('0xd8')]=function(_0x2930ab,_0x17205c){var _0x3ad313={'raw':!![],'where':{}};var _0x21ef23={};var _0x3634a1={'count':0x0,'rows':[]};return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x2930ab[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x17205c,null))[_0x9161('0xf')](function(_0x280a24){if(_0x280a24){_0x21ef23[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0xd9')]['rawAttributes']);_0x21ef23['query']=_[_0x9161('0x4d')](_0x2930ab['query']);_0x21ef23[_0x9161('0x50')]=_['intersection'](_0x21ef23[_0x9161('0x52')],_0x21ef23[_0x9161('0x41')]);_0x3ad313[_0x9161('0x3d')]=_['intersection'](_0x21ef23[_0x9161('0x52')],qs[_0x9161('0x53')](_0x2930ab[_0x9161('0x41')]['fields']));_0x3ad313[_0x9161('0x3d')]=_0x3ad313[_0x9161('0x3d')][_0x9161('0x66')]?_0x3ad313[_0x9161('0x3d')]:_0x21ef23[_0x9161('0x52')];if(!_0x2930ab[_0x9161('0x41')][_0x9161('0xcd')]('nolimit')){_0x3ad313['limit']=qs[_0x9161('0x1d')](_0x2930ab[_0x9161('0x41')][_0x9161('0x1d')]);_0x3ad313[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x2930ab['query'][_0x9161('0x1b')]);}_0x3ad313[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x2930ab[_0x9161('0x41')][_0x9161('0xc7')]);_0x3ad313[_0x9161('0x3b')]=qs[_0x9161('0x50')](_['pick'](_0x2930ab[_0x9161('0x41')],_0x21ef23[_0x9161('0x50')]));_0x3ad313[_0x9161('0x3b')][_0x9161('0xd6')]=_0x280a24['id'];if(_0x2930ab[_0x9161('0x41')][_0x9161('0x2b')]){_0x3ad313['where']=_[_0x9161('0x55')](_0x3ad313[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x3ad313[_0x9161('0x3d')],function(_0x2746b7){var _0x189e7d={};_0x189e7d[_0x2746b7]={'$like':'%'+_0x2930ab[_0x9161('0x41')]['filter']+'%'};return _0x189e7d;})});}_0x3ad313=_[_0x9161('0x55')]({},_0x3ad313,_0x2930ab[_0x9161('0x56')]);return db[_0x9161('0xd9')][_0x9161('0x1e')]({'where':_0x3ad313[_0x9161('0x3b')]})[_0x9161('0xf')](function(_0x472a49){_0x3634a1[_0x9161('0x1e')]=_0x472a49;if(_0x2930ab['query'][_0x9161('0x54')]){_0x3ad313[_0x9161('0x3c')]=[{'all':!![]}];}return db[_0x9161('0xd9')][_0x9161('0x3f')](_0x3ad313);})[_0x9161('0xf')](function(_0x397387){_0x3634a1['rows']=_0x397387;return _0x3634a1;});}})['then'](respondWithFilteredResult(_0x17205c,_0x3ad313))[_0x9161('0x4a')](handleError(_0x17205c,null));};exports[_0x9161('0xda')]=function(_0x12a92f,_0x35c36c){var _0x1af8c2={};var _0x262940={};var _0x4b1f35;var _0x2fdb66;return db['User'][_0x9161('0x92')]({'where':{'id':_0x12a92f[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x35c36c,null))['then'](function(_0x2b4ff5){if(_0x2b4ff5){_0x4b1f35=_0x2b4ff5;_0x262940['model']=_[_0x9161('0x4d')](db['ChatInteraction']['rawAttributes']);_0x262940[_0x9161('0x41')]=_['keys'](_0x12a92f[_0x9161('0x41')]);_0x262940[_0x9161('0x50')]=_[_0x9161('0x51')](_0x262940[_0x9161('0x52')],_0x262940[_0x9161('0x41')]);_0x1af8c2[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x262940[_0x9161('0x52')],qs[_0x9161('0x53')](_0x12a92f['query'][_0x9161('0x53')]));_0x1af8c2[_0x9161('0x3d')]=_0x1af8c2[_0x9161('0x3d')][_0x9161('0x66')]?_0x1af8c2[_0x9161('0x3d')]:_0x262940['model'];_0x1af8c2['order']=qs[_0x9161('0xc7')](_0x12a92f[_0x9161('0x41')][_0x9161('0xc7')]);_0x1af8c2['where']=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x12a92f[_0x9161('0x41')],_0x262940[_0x9161('0x50')]));if(_0x12a92f['query'][_0x9161('0x2b')]){_0x1af8c2[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x1af8c2[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x1af8c2[_0x9161('0x3d')],function(_0x16d122){var _0x489f2b={};_0x489f2b[_0x16d122]={'$like':'%'+_0x12a92f[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x489f2b;})});}_0x1af8c2=_[_0x9161('0x55')]({},_0x1af8c2,_0x12a92f[_0x9161('0x56')]);return _0x4b1f35[_0x9161('0xda')](_0x1af8c2);}})[_0x9161('0xf')](function(_0x15275c){if(_0x15275c){_0x2fdb66=_0x15275c[_0x9161('0x66')];if(!_0x12a92f['query'][_0x9161('0xcd')]('nolimit')){_0x1af8c2[_0x9161('0x1d')]=qs['limit'](_0x12a92f[_0x9161('0x41')][_0x9161('0x1d')]);_0x1af8c2[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x12a92f['query'][_0x9161('0x1b')]);}return _0x4b1f35[_0x9161('0xda')](_0x1af8c2);}})[_0x9161('0xf')](function(_0x575a52){if(_0x575a52){return _0x575a52?{'count':_0x2fdb66,'rows':_0x575a52}:null;}})[_0x9161('0xf')](respondWithResult(_0x35c36c,null))[_0x9161('0x4a')](handleError(_0x35c36c,null));};exports[_0x9161('0xdb')]=function(_0x11e0e1,_0x158f83){var _0xb22372={};var _0x3c3bec={};var _0xae27a6;var _0x2d9ab1;return db[_0x9161('0x36')]['findOne']({'where':{'id':_0x11e0e1[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x158f83,null))[_0x9161('0xf')](function(_0x40ce89){if(_0x40ce89){_0xae27a6=_0x40ce89;_0x3c3bec['model']=_[_0x9161('0x4d')](db[_0x9161('0xdc')][_0x9161('0x4e')]);_0x3c3bec[_0x9161('0x41')]=_['keys'](_0x11e0e1['query']);_0x3c3bec[_0x9161('0x50')]=_['intersection'](_0x3c3bec[_0x9161('0x52')],_0x3c3bec[_0x9161('0x41')]);_0xb22372[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x3c3bec['model'],qs['fields'](_0x11e0e1[_0x9161('0x41')][_0x9161('0x53')]));_0xb22372[_0x9161('0x3d')]=_0xb22372[_0x9161('0x3d')]['length']?_0xb22372[_0x9161('0x3d')]:_0x3c3bec[_0x9161('0x52')];_0xb22372[_0x9161('0xc6')]=qs['sort'](_0x11e0e1[_0x9161('0x41')]['sort']);_0xb22372[_0x9161('0x3b')]=qs['filters'](_[_0x9161('0xc8')](_0x11e0e1[_0x9161('0x41')],_0x3c3bec[_0x9161('0x50')]));if(_0x11e0e1[_0x9161('0x41')]['filter']){_0xb22372['where']=_[_0x9161('0x55')](_0xb22372[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0xb22372[_0x9161('0x3d')],function(_0x4e707b){var _0x2a67cb={};_0x2a67cb[_0x4e707b]={'$like':'%'+_0x11e0e1[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x2a67cb;})});}_0xb22372=_['merge']({},_0xb22372,_0x11e0e1[_0x9161('0x56')]);return _0xae27a6['getOpenchannelInteractions'](_0xb22372);}})[_0x9161('0xf')](function(_0x424704){if(_0x424704){_0x2d9ab1=_0x424704[_0x9161('0x66')];if(!_0x11e0e1['query']['hasOwnProperty']('nolimit')){_0xb22372[_0x9161('0x1d')]=qs['limit'](_0x11e0e1[_0x9161('0x41')][_0x9161('0x1d')]);_0xb22372[_0x9161('0x1b')]=qs['offset'](_0x11e0e1[_0x9161('0x41')][_0x9161('0x1b')]);}return _0xae27a6[_0x9161('0xdb')](_0xb22372);}})[_0x9161('0xf')](function(_0x3c9c9c){if(_0x3c9c9c){return _0x3c9c9c?{'count':_0x2d9ab1,'rows':_0x3c9c9c}:null;}})[_0x9161('0xf')](respondWithResult(_0x158f83,null))['catch'](handleError(_0x158f83,null));};exports[_0x9161('0xdd')]=function(_0x12b7c7,_0x22e2c8){var _0x22e257={'raw':!![],'where':{}};var _0x3ca168={};var _0x2fe3ed={'count':0x0,'rows':[]};return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x12b7c7['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x22e2c8,null))[_0x9161('0xf')](function(_0x3d75a3){if(_0x3d75a3){_0x3ca168[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0xde')][_0x9161('0x4e')]);_0x3ca168[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x12b7c7[_0x9161('0x41')]);_0x3ca168[_0x9161('0x50')]=_[_0x9161('0x51')](_0x3ca168['model'],_0x3ca168[_0x9161('0x41')]);_0x22e257[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x3ca168['model'],qs[_0x9161('0x53')](_0x12b7c7[_0x9161('0x41')][_0x9161('0x53')]));_0x22e257[_0x9161('0x3d')]=_0x22e257[_0x9161('0x3d')][_0x9161('0x66')]?_0x22e257[_0x9161('0x3d')]:_0x3ca168[_0x9161('0x52')];if(!_0x12b7c7[_0x9161('0x41')]['hasOwnProperty'](_0x9161('0xce'))){_0x22e257[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x12b7c7['query'][_0x9161('0x1d')]);_0x22e257[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x12b7c7[_0x9161('0x41')][_0x9161('0x1b')]);}_0x22e257[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x12b7c7['query'][_0x9161('0xc7')]);_0x22e257[_0x9161('0x3b')]=qs['filters'](_[_0x9161('0xc8')](_0x12b7c7[_0x9161('0x41')],_0x3ca168[_0x9161('0x50')]));_0x22e257[_0x9161('0x3b')]['UserId']=_0x3d75a3['id'];if(_0x12b7c7[_0x9161('0x41')][_0x9161('0x2b')]){_0x22e257[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x22e257[_0x9161('0x3b')],{'$or':_['map'](_0x22e257[_0x9161('0x3d')],function(_0x10ffe0){var _0x5deac1={};_0x5deac1[_0x10ffe0]={'$like':'%'+_0x12b7c7[_0x9161('0x41')]['filter']+'%'};return _0x5deac1;})});}_0x22e257=_[_0x9161('0x55')]({},_0x22e257,_0x12b7c7[_0x9161('0x56')]);return db[_0x9161('0xde')][_0x9161('0x1e')]({'where':_0x22e257['where']})[_0x9161('0xf')](function(_0x160030){_0x2fe3ed[_0x9161('0x1e')]=_0x160030;if(_0x12b7c7[_0x9161('0x41')][_0x9161('0x54')]){_0x22e257['include']=[{'all':!![]}];}return db[_0x9161('0xde')][_0x9161('0x3f')](_0x22e257);})['then'](function(_0x3d310e){_0x2fe3ed[_0x9161('0x40')]=_0x3d310e;return _0x2fe3ed;});}})[_0x9161('0xf')](respondWithFilteredResult(_0x22e2c8,_0x22e257))[_0x9161('0x4a')](handleError(_0x22e2c8,null));};exports[_0x9161('0xdf')]=function(_0x2e00be,_0x33a7a3){var _0x271964={};var _0x1f80a2={};var _0x529045;var _0x30624b;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x2e00be['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x33a7a3,null))[_0x9161('0xf')](function(_0x286419){if(_0x286419){_0x529045=_0x286419;_0x1f80a2[_0x9161('0x52')]=_[_0x9161('0x4d')](db['SmsInteraction']['rawAttributes']);_0x1f80a2[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x2e00be[_0x9161('0x41')]);_0x1f80a2[_0x9161('0x50')]=_[_0x9161('0x51')](_0x1f80a2['model'],_0x1f80a2[_0x9161('0x41')]);_0x271964['attributes']=_[_0x9161('0x51')](_0x1f80a2['model'],qs[_0x9161('0x53')](_0x2e00be[_0x9161('0x41')][_0x9161('0x53')]));_0x271964[_0x9161('0x3d')]=_0x271964[_0x9161('0x3d')][_0x9161('0x66')]?_0x271964[_0x9161('0x3d')]:_0x1f80a2[_0x9161('0x52')];_0x271964[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x2e00be[_0x9161('0x41')][_0x9161('0xc7')]);_0x271964['where']=qs['filters'](_[_0x9161('0xc8')](_0x2e00be['query'],_0x1f80a2[_0x9161('0x50')]));if(_0x2e00be[_0x9161('0x41')]['filter']){_0x271964['where']=_['merge'](_0x271964[_0x9161('0x3b')],{'$or':_['map'](_0x271964['attributes'],function(_0x556d08){var _0x304dea={};_0x304dea[_0x556d08]={'$like':'%'+_0x2e00be[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x304dea;})});}_0x271964=_[_0x9161('0x55')]({},_0x271964,_0x2e00be[_0x9161('0x56')]);return _0x529045[_0x9161('0xdf')](_0x271964);}})[_0x9161('0xf')](function(_0x5e4a0e){if(_0x5e4a0e){_0x30624b=_0x5e4a0e[_0x9161('0x66')];if(!_0x2e00be[_0x9161('0x41')][_0x9161('0xcd')](_0x9161('0xce'))){_0x271964[_0x9161('0x1d')]=qs['limit'](_0x2e00be[_0x9161('0x41')]['limit']);_0x271964[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x2e00be['query'][_0x9161('0x1b')]);}return _0x529045[_0x9161('0xdf')](_0x271964);}})['then'](function(_0x46a583){if(_0x46a583){return _0x46a583?{'count':_0x30624b,'rows':_0x46a583}:null;}})[_0x9161('0xf')](respondWithResult(_0x33a7a3,null))[_0x9161('0x4a')](handleError(_0x33a7a3,null));};exports[_0x9161('0xe0')]=function(_0x29d063,_0x287223){var _0xaac0cd={};var _0x3872b6={};var _0x3b99e6;var _0x49139f;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x29d063[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x287223,null))[_0x9161('0xf')](function(_0x70434d){if(_0x70434d){_0x3b99e6=_0x70434d;_0x3872b6[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0xe1')][_0x9161('0x4e')]);_0x3872b6[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x29d063[_0x9161('0x41')]);_0x3872b6[_0x9161('0x50')]=_[_0x9161('0x51')](_0x3872b6['model'],_0x3872b6[_0x9161('0x41')]);_0xaac0cd[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x3872b6[_0x9161('0x52')],qs[_0x9161('0x53')](_0x29d063[_0x9161('0x41')][_0x9161('0x53')]));_0xaac0cd['attributes']=_0xaac0cd[_0x9161('0x3d')][_0x9161('0x66')]?_0xaac0cd['attributes']:_0x3872b6[_0x9161('0x52')];_0xaac0cd[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x29d063[_0x9161('0x41')][_0x9161('0xc7')]);_0xaac0cd[_0x9161('0x3b')]=qs['filters'](_[_0x9161('0xc8')](_0x29d063[_0x9161('0x41')],_0x3872b6[_0x9161('0x50')]));if(_0x29d063[_0x9161('0x41')]['filter']){_0xaac0cd[_0x9161('0x3b')]=_[_0x9161('0x55')](_0xaac0cd[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0xaac0cd[_0x9161('0x3d')],function(_0x571b0a){var _0x3b1676={};_0x3b1676[_0x571b0a]={'$like':'%'+_0x29d063['query']['filter']+'%'};return _0x3b1676;})});}_0xaac0cd=_['merge']({},_0xaac0cd,_0x29d063['options']);return _0x3b99e6[_0x9161('0xe0')](_0xaac0cd);}})[_0x9161('0xf')](function(_0x2fa44d){if(_0x2fa44d){_0x49139f=_0x2fa44d[_0x9161('0x66')];if(!_0x29d063['query'][_0x9161('0xcd')](_0x9161('0xce'))){_0xaac0cd[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x29d063[_0x9161('0x41')][_0x9161('0x1d')]);_0xaac0cd[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x29d063[_0x9161('0x41')]['offset']);}return _0x3b99e6['getFaxInteractions'](_0xaac0cd);}})['then'](function(_0x1399f7){if(_0x1399f7){return _0x1399f7?{'count':_0x49139f,'rows':_0x1399f7}:null;}})[_0x9161('0xf')](respondWithResult(_0x287223,null))[_0x9161('0x4a')](handleError(_0x287223,null));};exports[_0x9161('0xe2')]=function(_0x53b074,_0x27ac0){var _0x3ee145={};var _0x88a378={};var _0x34ea55;var _0x433968;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x53b074[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x27ac0,null))['then'](function(_0x58c4a3){if(_0x58c4a3){_0x34ea55=_0x58c4a3;_0x88a378['model']=_['keys'](db[_0x9161('0xe3')][_0x9161('0x4e')]);_0x88a378[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x53b074[_0x9161('0x41')]);_0x88a378['filters']=_['intersection'](_0x88a378[_0x9161('0x52')],_0x88a378[_0x9161('0x41')]);_0x3ee145[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x88a378['model'],qs[_0x9161('0x53')](_0x53b074[_0x9161('0x41')][_0x9161('0x53')]));_0x3ee145[_0x9161('0x3d')]=_0x3ee145['attributes']['length']?_0x3ee145[_0x9161('0x3d')]:_0x88a378['model'];_0x3ee145[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x53b074[_0x9161('0x41')][_0x9161('0xc7')]);_0x3ee145['where']=qs['filters'](_[_0x9161('0xc8')](_0x53b074[_0x9161('0x41')],_0x88a378[_0x9161('0x50')]));if(_0x53b074['query'][_0x9161('0x2b')]){_0x3ee145[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x3ee145[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x3ee145[_0x9161('0x3d')],function(_0x2e996c){var _0x1bb3d2={};_0x1bb3d2[_0x2e996c]={'$like':'%'+_0x53b074[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x1bb3d2;})});}_0x3ee145=_['merge']({},_0x3ee145,_0x53b074[_0x9161('0x56')]);return _0x34ea55['getWhatsappInteractions'](_0x3ee145);}})[_0x9161('0xf')](function(_0x1a9710){if(_0x1a9710){_0x433968=_0x1a9710['length'];if(!_0x53b074[_0x9161('0x41')][_0x9161('0xcd')]('nolimit')){_0x3ee145[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x53b074[_0x9161('0x41')][_0x9161('0x1d')]);_0x3ee145[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x53b074['query'][_0x9161('0x1b')]);}return _0x34ea55[_0x9161('0xe2')](_0x3ee145);}})['then'](function(_0x21d292){if(_0x21d292){return _0x21d292?{'count':_0x433968,'rows':_0x21d292}:null;}})['then'](respondWithResult(_0x27ac0,null))[_0x9161('0x4a')](handleError(_0x27ac0,null));};exports['login']=function(_0x1ae722,_0xc827da,_0x27aa46){var _0x18f356;var _0x116228;var _0x13985a;var _0x598072=!_[_0x9161('0x67')](_0x1ae722['params']['id'])?_0x1ae722[_0x9161('0x4c')]['id']:!_[_0x9161('0x67')](_0x1ae722['user']['id'])?_0x1ae722['user']['id']:null;return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x598072,'role':{'$or':['admin',_0x9161('0x27'),_0x9161('0x28')]}},'attributes':['id',_0x9161('0x31'),_0x9161('0xe4'),_0x9161('0xe5'),_0x9161('0x25'),_0x9161('0x5c'),_0x9161('0x99')]})[_0x9161('0xf')](function(_0x2f3e5b){if(_0x2f3e5b){if(_0x2f3e5b[_0x9161('0x25')]===_0x9161('0x28')){_0x18f356=_0x2f3e5b;if(_0x1ae722[_0x9161('0x58')][_0x9161('0x9a')]){_0x13985a=util[_0x9161('0xa5')]('LOCAL/%s@from-sip/n',_0x18f356[_0x1ae722[_0x9161('0x58')][_0x9161('0x9a')]]);}else if(_0x1ae722[_0x9161('0x58')][_0x9161('0xe6')]){_0x13985a=util[_0x9161('0xa5')](_0x9161('0xa6'),_0x1ae722[_0x9161('0x58')][_0x9161('0xe6')]);}else{_0x13985a=util[_0x9161('0xa5')](_0x9161('0xa6'),_0x18f356['name']);}socket['to'](util[_0x9161('0xa5')](_0x9161('0xe7'),_0x18f356[_0x9161('0x31')]))[_0x9161('0xae')](_0x9161('0xe8'),{'user':{'id':_0x18f356['id'],'name':_0x18f356[_0x9161('0x31')]},'ip':_0x1ae722['headers'][_0x9161('0xe9')]||_0x1ae722[_0x9161('0xea')][_0x9161('0xeb')]||_0x1ae722['socket']['remoteAddress']||_0x1ae722[_0x9161('0xea')][_0x9161('0xec')][_0x9161('0xeb')]});return db[_0x9161('0xa8')]['destroy']({'where':{'membername':_0x18f356[_0x9161('0x31')]},'individualHooks':!![]});}}else{throw new db[(_0x9161('0x8c'))]['ValidationError'](_0x9161('0xed'));}})[_0x9161('0xf')](function(){if(_0x18f356){return _0x18f356[_0x9161('0xee')]({'raw':!![]});}})[_0x9161('0xf')](function(_0xaf9a4e){if(_0x18f356){var _0x1d06cf=[];if(_0xaf9a4e){_0x116228=_0xaf9a4e;if(_0x116228[_0x9161('0x66')]){for(var _0x39fe70=0x0;_0x39fe70<_0x116228[_0x9161('0x66')];_0x39fe70++){_0x1d06cf[_0x9161('0x3e')]({'membername':_0x18f356['name'],'UserId':_0x18f356['id'],'queue_name':_0x116228[_0x39fe70][_0x9161('0x31')],'VoiceQueueId':_0x116228[_0x39fe70]['id'],'interface':_0x13985a,'paused':_0x18f356[_0x9161('0x99')]||![],'penalty':_0x116228[_0x39fe70][_0x9161('0xef')]||0x0});}return BPromise[_0x9161('0x86')](_0x1d06cf,function(_0x1ec78c){return db[_0x9161('0xa8')][_0x9161('0xa9')](_0x1ec78c);});}}}})[_0x9161('0xf')](function(){if(_0x18f356){return db[_0x9161('0xf0')][_0x9161('0x3f')]({'where':{'membername':_0x18f356[_0x9161('0x31')],'exitAt':null}});}})['then'](function(_0x421446){if(_0x18f356){var _0x3e9136=[];_0x421446['forEach'](function(_0x516436){_0x3e9136[_0x9161('0x3e')](_0x516436[_0x9161('0x22')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x9161('0x49')](_0x3e9136);}})[_0x9161('0xf')](function(){if(_0x18f356){var _0x575e85=[];var _0x50cb42=[];var _0x19ee75=utils[_0x9161('0xf1')]();var _0x5d4b39={'membername':_0x18f356['name'],'interface':_0x13985a,'enterAt':moment()[_0x9161('0xa5')](_0x9161('0xf2')),'role':_0x18f356[_0x9161('0x25')],'internal':_0x18f356[_0x9161('0x5c')]};_0x19ee75['forEach'](function(_0x50728f){_0x575e85[_0x9161('0x3e')](_[_0x9161('0x55')]({'channel':_0x50728f,'type':_0x9161('0xf3'),'data1':_0x1ae722['body']['device'],'data2':_0x13985a},_0x5d4b39));if(_0x18f356['loginInPause']){_0x50cb42['push'](_['merge']({'channel':_0x50728f,'type':_0x9161('0xf4'),'data1':'LOGININPAUSE'},_0x5d4b39));}});return db[_0x9161('0xf0')][_0x9161('0x83')](_0x575e85[_0x9161('0xf5')](_0x50cb42),{'individualHooks':!![]});}})['then'](function(){if(_0x18f356){return _0x18f356[_0x9161('0x22')]({'online':!![],'lastLoginAt':moment()['format'](_0x9161('0xf2')),'voicePause':_0x18f356[_0x9161('0x99')]||![],'mailPause':_0x18f356[_0x9161('0x99')]||![],'chatPause':_0x18f356[_0x9161('0x99')]||![],'faxPause':_0x18f356['loginInPause']||![],'smsPause':_0x18f356[_0x9161('0x99')]||![],'openchannelPause':_0x18f356[_0x9161('0x99')]||![],'whatsappPause':_0x18f356[_0x9161('0x99')]||![],'pauseType':_0x18f356[_0x9161('0x99')]?_0x9161('0xf6'):null,'interface':_0x13985a,'lastPauseAt':moment()[_0x9161('0xa5')](_0x9161('0xf2'))});}})[_0x9161('0xf')](function(_0x2fb4f2){if(_0x1ae722[_0x9161('0xf7')]){return _0x27aa46();}else{return BPromise[_0x9161('0xf8')](_0x2fb4f2)[_0x9161('0xf')](respondWithResult(_0xc827da,null));}})['catch'](handleError(_0xc827da,null));};exports[_0x9161('0xf9')]=function(_0x446882,_0x14bfc1){var _0x318cf0;return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x446882[_0x9161('0x4c')]['id'],'role':'agent'},'attributes':['id',_0x9161('0x31'),_0x9161('0x25')]})['then'](handleEntityNotFound(_0x14bfc1,null))[_0x9161('0xf')](function(_0x11e666){if(_0x11e666){_0x318cf0=_0x11e666;return db['UserVoiceQueueRt'][_0x9161('0x23')]({'where':{'membername':_0x318cf0[_0x9161('0x31')]},'individualHooks':!![]});}})[_0x9161('0xf')](function(){return db[_0x9161('0xf0')][_0x9161('0x3f')]({'where':{'membername':_0x318cf0['name'],'exitAt':null}});})['then'](function(_0x51777a){var _0xe9b86a=[];_0x51777a[_0x9161('0xfa')](function(_0x2c7d63){_0xe9b86a[_0x9161('0x3e')](_0x2c7d63[_0x9161('0x22')]({'exitAt':moment()[_0x9161('0xa5')](_0x9161('0xf2'))}));});return BPromise[_0x9161('0x49')](_0xe9b86a);})[_0x9161('0xf')](function(){return _0x318cf0['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x9161('0xf')](respondWithResult(_0x14bfc1,null))[_0x9161('0x4a')](handleError(_0x14bfc1,null));};exports[_0x9161('0xfb')]=function(_0x56b744,_0x2b1ef3){var _0x34d9eb;return db[_0x9161('0xa8')][_0x9161('0x22')]({'paused':0x1},{'where':{'UserId':_0x56b744['params']['id']},'individualHooks':!![]})[_0x9161('0xf')](function(){return db['User'][_0x9161('0x30')]({'where':{'id':_0x56b744[_0x9161('0x4c')]['id'],'role':_0x9161('0x28')},'attributes':['id',_0x9161('0x31'),_0x9161('0x25'),_0x9161('0x5c'),_0x9161('0x9a')]});})[_0x9161('0xf')](handleEntityNotFound(_0x2b1ef3,null))[_0x9161('0xf')](function(_0x5a2a18){if(_0x5a2a18){_0x34d9eb=_0x5a2a18;return respondWithRpcPromise(_0x9161('0xfc'),_0x9161('0xfb'),{'id':_0x34d9eb['id'],'name':_0x34d9eb[_0x9161('0x31')],'pause':!![]});}})[_0x9161('0xf')](function(){if(_0x34d9eb){return db[_0x9161('0xf0')]['findAll']({'where':{'membername':_0x34d9eb['name'],'type':_0x9161('0xf4'),'exitAt':null}});}})['then'](function(_0x3c7915){if(_0x3c7915[_0x9161('0x66')]){var _0x5eceb1=moment()['format'](_0x9161('0xf2'));for(var _0x4e5d3a=0x0,_0x4c0b41=_0x3c7915[_0x9161('0x66')];_0x4e5d3a<_0x4c0b41;_0x4e5d3a++){_0x3c7915[_0x4e5d3a][_0x9161('0xfd')]({'exitAt':_0x5eceb1});}}})[_0x9161('0xf')](function(){var _0x39fc8b=[];var _0x299bec=utils[_0x9161('0xf1')]();_0x299bec[_0x9161('0xfa')](function(_0x4f9f23){_0x39fc8b[_0x9161('0x3e')]({'channel':_0x4f9f23,'membername':_0x34d9eb['name'],'interface':_['isNil'](_0x34d9eb['interface'])?util[_0x9161('0xa5')](_0x9161('0xa6'),_0x34d9eb[_0x9161('0x31')]):_0x34d9eb['interface'],'type':'PAUSE','enterAt':moment()[_0x9161('0xa5')](_0x9161('0xf2')),'data1':_0x56b744['body'][_0x9161('0x37')]||_0x9161('0xfe'),'role':_0x34d9eb['role'],'internal':_0x34d9eb[_0x9161('0x5c')]});});return db[_0x9161('0xf0')][_0x9161('0x83')](_0x39fc8b,{'individualHooks':!![]});})[_0x9161('0xf')](function(){return _0x34d9eb['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x56b744[_0x9161('0x58')][_0x9161('0x37')]||_0x9161('0xfe'),'lastPauseAt':moment()[_0x9161('0xa5')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0x9161('0xf')](respondWithResult(_0x2b1ef3,null))['catch'](handleError(_0x2b1ef3,null));};exports[_0x9161('0xff')]=function(_0x386840,_0x1e2d32){var _0x24b0be;return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x386840['params']['id']},'attributes':['id',_0x9161('0x31'),_0x9161('0x25'),_0x9161('0xa7'),_0x9161('0x100'),'chatPause',_0x9161('0x101'),'openchannelPause',_0x9161('0x102'),_0x9161('0x103'),'pauseType',_0x9161('0x104')]})[_0x9161('0xf')](handleEntityNotFound(_0x1e2d32,null))[_0x9161('0xf')](function(_0x1182ac){if(_0x1182ac){_0x24b0be=_0x1182ac;if(_0x386840[_0x9161('0x58')][_0x9161('0xaa')]&&!utils[_0x9161('0x9b')](_0x386840[_0x9161('0x58')][_0x9161('0xaa')])){throw new db['Sequelize'][(_0x9161('0x8d'))](_0x9161('0xab'));}switch(_0x386840[_0x9161('0x58')][_0x9161('0xaa')]){case _0x9161('0xa3'):return respondWithRpcPromise('QueuePause',_0x9161('0xff'),{'id':_0x24b0be['id'],'name':_0x24b0be['name'],'pause':![]})['then'](function(){return db['UserVoiceQueueRt'][_0x9161('0x22')]({'paused':0x0},{'where':{'UserId':_0x24b0be['id']},'individualHooks':!![]});})['then'](function(){return db[_0x9161('0xf0')][_0x9161('0x30')]({'where':{'channel':_0x386840['body'][_0x9161('0xaa')],'membername':_0x24b0be[_0x9161('0x31')],'type':_0x9161('0xf4'),'exitAt':null}});})[_0x9161('0xf')](function(_0x39608b){if(_0x39608b){return _0x39608b[_0x9161('0x22')]({'exitAt':moment()[_0x9161('0xa5')](_0x9161('0xf2')),'data2':_0x9161('0x105')},{'individualHooks':!![]});}return null;})[_0x9161('0xf')](function(){return _0x24b0be[_0x9161('0x22')]({'voicePause':![]});});case _0x9161('0x46'):case _0x9161('0xba'):case _0x9161('0x57'):case _0x9161('0x44'):case _0x9161('0x48'):case'openchannel':return db['MemberReport'][_0x9161('0x30')]({'where':{'channel':_0x386840[_0x9161('0x58')][_0x9161('0xaa')],'membername':_0x24b0be[_0x9161('0x31')],'type':_0x9161('0xf4'),'exitAt':null}})[_0x9161('0xf')](function(_0x5ebd64){if(_0x5ebd64){return _0x5ebd64[_0x9161('0x22')]({'exitAt':moment()['format'](_0x9161('0xf2')),'data2':_0x9161('0x105')},{'individualHooks':!![]});}return null;})[_0x9161('0xf')](function(){var _0x480fb3={};_['set'](_0x480fb3,util[_0x9161('0xa5')](_0x9161('0x106'),_0x386840[_0x9161('0x58')][_0x9161('0xaa')],_0x9161('0x107')),![]);return _0x24b0be['update'](_0x480fb3);});default:return respondWithRpcPromise(_0x9161('0xfc'),_0x9161('0xff'),{'id':_0x24b0be['id'],'name':_0x24b0be['name'],'pause':![]})[_0x9161('0xf')](function(){return db[_0x9161('0xa8')][_0x9161('0x22')]({'paused':0x0},{'where':{'UserId':_0x24b0be['id']}});})['then'](function(){return db['MemberReport'][_0x9161('0x3f')]({'where':{'membername':_0x24b0be[_0x9161('0x31')],'type':'PAUSE','exitAt':null}});})[_0x9161('0xf')](function(_0x45f143){var _0x116b12=[];_0x45f143[_0x9161('0xfa')](function(_0x2e9949){_0x116b12[_0x9161('0x3e')](_0x2e9949[_0x9161('0x22')]({'exitAt':moment()[_0x9161('0xa5')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x9161('0x105')}));});return BPromise[_0x9161('0x49')](_0x116b12);})[_0x9161('0xf')](function(){return _0x24b0be['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x9161('0xf')](respondWithResult(_0x1e2d32,null))[_0x9161('0x4a')](handleError(_0x1e2d32,null));};exports[_0x9161('0x108')]=function(_0x276c1f,_0x1930b2){var _0x1f0c97={};var _0x104c12={};var _0x1924ab;var _0x45d8e0;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x276c1f['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x1930b2,null))[_0x9161('0xf')](function(_0x31f399){if(_0x31f399){_0x1924ab=_0x31f399;_0x104c12['model']=_[_0x9161('0x4d')](db['Team'][_0x9161('0x4e')]);_0x104c12[_0x9161('0x41')]=_['keys'](_0x276c1f['query']);_0x104c12[_0x9161('0x50')]=_['intersection'](_0x104c12[_0x9161('0x52')],_0x104c12[_0x9161('0x41')]);_0x1f0c97[_0x9161('0x3d')]=_['intersection'](_0x104c12[_0x9161('0x52')],qs['fields'](_0x276c1f[_0x9161('0x41')][_0x9161('0x53')]));_0x1f0c97[_0x9161('0x3d')]=_0x1f0c97['attributes'][_0x9161('0x66')]?_0x1f0c97[_0x9161('0x3d')]:_0x104c12[_0x9161('0x52')];_0x1f0c97['order']=qs[_0x9161('0xc7')](_0x276c1f[_0x9161('0x41')][_0x9161('0xc7')]);_0x1f0c97[_0x9161('0x3b')]=qs['filters'](_[_0x9161('0xc8')](_0x276c1f[_0x9161('0x41')],_0x104c12[_0x9161('0x50')]));if(_0x276c1f[_0x9161('0x41')][_0x9161('0x2b')]){_0x1f0c97[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x1f0c97['where'],{'$or':_['map'](_0x1f0c97[_0x9161('0x3d')],function(_0x4886fc){var _0x29e4b5={};_0x29e4b5[_0x4886fc]={'$like':'%'+_0x276c1f[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x29e4b5;})});}_0x1f0c97=_[_0x9161('0x55')]({},_0x1f0c97,_0x276c1f['options']);return _0x1924ab[_0x9161('0x108')](_0x1f0c97);}})[_0x9161('0xf')](function(_0x5c0add){if(_0x5c0add){_0x45d8e0=_0x5c0add[_0x9161('0x66')];if(!_0x276c1f[_0x9161('0x41')]['hasOwnProperty'](_0x9161('0xce'))){_0x1f0c97[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x276c1f[_0x9161('0x41')]['limit']);_0x1f0c97[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x276c1f[_0x9161('0x41')][_0x9161('0x1b')]);}return _0x1924ab[_0x9161('0x108')](_0x1f0c97);}})[_0x9161('0xf')](function(_0x53790c){if(_0x53790c){return _0x53790c?{'count':_0x45d8e0,'rows':_0x53790c}:null;}})[_0x9161('0xf')](respondWithResult(_0x1930b2,null))[_0x9161('0x4a')](handleError(_0x1930b2,null));};exports[_0x9161('0x109')]=function(_0xdd3647,_0x5a1ec4){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0xdd3647[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x5a1ec4,null))[_0x9161('0xf')](function(_0x390175){if(_0x390175){var _0x22c57e=_0x390175[_0x9161('0x24')]({'plain':!![]});return _0x390175[_0x9161('0x109')](_0xdd3647[_0x9161('0x58')][_0x9161('0x5a')],_[_0x9161('0x5b')](_0xdd3647[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{})['then'](function(){for(var _0x3e6a74=0x0;_0x3e6a74<_0xdd3647[_0x9161('0x58')][_0x9161('0x5a')][_0x9161('0x66')];_0x3e6a74++){var _0x1dd1bc=[];db['Team']['findOne']({'where':{'id':_0xdd3647['body'][_0x9161('0x5a')][_0x3e6a74]}})[_0x9161('0xf')](function(_0x46190b){_0x1dd1bc[_0x9161('0x3e')](_0x46190b[_0x9161('0xee')]()[_0x9161('0xf')](function(_0x20f0d5){for(var _0x1f80b3=0x0;_0x1f80b3<_0x20f0d5[_0x9161('0x66')];_0x1f80b3++){_0x20f0d5[_0x1f80b3]['setDataValue'](_0x9161('0xaa'),_0x9161('0x10a'));}return _0x20f0d5;}));_0x1dd1bc['push'](_0x46190b[_0x9161('0x10b')]()[_0x9161('0xf')](function(_0x3ad5b1){for(var _0x5eb6a7=0x0;_0x5eb6a7<_0x3ad5b1[_0x9161('0x66')];_0x5eb6a7++){_0x3ad5b1[_0x5eb6a7][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x10d'));}return _0x3ad5b1;}));_0x1dd1bc['push'](_0x46190b[_0x9161('0x10e')]()[_0x9161('0xf')](function(_0x2fe594){for(var _0x7babc4=0x0;_0x7babc4<_0x2fe594[_0x9161('0x66')];_0x7babc4++){_0x2fe594[_0x7babc4][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x10f'));}return _0x2fe594;}));_0x1dd1bc[_0x9161('0x3e')](_0x46190b[_0x9161('0x110')]()[_0x9161('0xf')](function(_0x50d4fe){for(var _0x58c1f9=0x0;_0x58c1f9<_0x50d4fe[_0x9161('0x66')];_0x58c1f9++){_0x50d4fe[_0x58c1f9][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x111'));}return _0x50d4fe;}));_0x1dd1bc['push'](_0x46190b[_0x9161('0x112')]()[_0x9161('0xf')](function(_0x431204){for(var _0x3da0e0=0x0;_0x3da0e0<_0x431204[_0x9161('0x66')];_0x3da0e0++){_0x431204[_0x3da0e0][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x113'));}return _0x431204;}));_0x1dd1bc[_0x9161('0x3e')](_0x46190b[_0x9161('0x114')]()[_0x9161('0xf')](function(_0x27f351){for(var _0x40161c=0x0;_0x40161c<_0x27f351[_0x9161('0x66')];_0x40161c++){_0x27f351[_0x40161c][_0x9161('0x10c')](_0x9161('0xaa'),'Fax');}return _0x27f351;}));_0x1dd1bc[_0x9161('0x3e')](_0x46190b[_0x9161('0x115')]()[_0x9161('0xf')](function(_0x3abde3){for(var _0x343cfe=0x0;_0x343cfe<_0x3abde3[_0x9161('0x66')];_0x343cfe++){_0x3abde3[_0x343cfe][_0x9161('0x10c')]('channel',_0x9161('0x116'));}return _0x3abde3;}));return BPromise[_0x9161('0x49')](_0x1dd1bc);})[_0x9161('0xf')](function(_0x4e3dcf){var _0x1b206a=_[_0x9161('0x117')](_0x4e3dcf);_0x1dd1bc=[];return db['sequelize']['transaction'](function(_0x497fd3){for(var _0x550b4d=0x0;_0x550b4d<_0x1b206a[_0x9161('0x66')];_0x550b4d++){_0x1dd1bc[_0x9161('0x3e')](_0x1b206a[_0x550b4d][_0x9161('0x118')](_0x22c57e['id']),{'transaction':_0x497fd3});}return BPromise[_0x9161('0x49')](_0x1dd1bc)['then'](function(){if(_0x22c57e['online']){return BPromise[_0x9161('0x86')](_['filter'](_0x1b206a,function(_0x43aa8f){return _0x43aa8f[_0x9161('0x119')]('channel')===_0x9161('0x10a');}),function(_0x5543d7){return db[_0x9161('0xa8')][_0x9161('0xa9')]({'membername':_0x22c57e[_0x9161('0x31')],'UserId':_0x22c57e['id'],'queue_name':_0x5543d7['name'],'VoiceQueueId':_0x5543d7['id'],'interface':_['isNil'](_0x22c57e[_0x9161('0x9a')])?util[_0x9161('0xa5')](_0x9161('0xa6'),_0x22c57e[_0x9161('0x31')]):_0x22c57e[_0x9161('0x9a')],'paused':_0x22c57e[_0x9161('0xa7')]||![],'penalty':_0x22c57e[_0x9161('0x11a')]},{'transaction':_0x497fd3});});}else{return;}})[_0x9161('0xf')](function(){for(var _0x4abe14=0x0;_0x4abe14<_0x1b206a[_0x9161('0x66')];_0x4abe14++){var _0x32c86d=_0x1b206a[_0x4abe14]['getDataValue'](_0x9161('0xaa'));var _0x5cbf69=_0x32c86d+_0x9161('0xa1');socket[_0x9161('0xae')](_0x9161('0x27')+_0x32c86d+_0x9161('0xa2'),{'UserId':_0x22c57e['id'],['queueField']:_0x1b206a[_0x4abe14]['id']});}});});});}});}})[_0x9161('0xf')](respondWithStatusCode(_0x5a1ec4,null))[_0x9161('0x4a')](handleError(_0x5a1ec4,null));};exports['removeTeams']=function(_0x14e3ac,_0x418750){return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x14e3ac['params']['id']}})['then'](handleEntityNotFound(_0x418750,null))[_0x9161('0xf')](function(_0x278c07){if(_0x278c07){var _0x3bdd93=_0x278c07[_0x9161('0x24')]({'plain':!![]});var _0x25ceba=_0x14e3ac[_0x9161('0x41')]['ids'];return _0x278c07[_0x9161('0x11b')](_0x25ceba)['then'](function(){for(var _0x42cd61=0x0;_0x42cd61<_0x25ceba[_0x9161('0x66')];_0x42cd61++){var _0x4589aa=[];db['Team'][_0x9161('0x92')]({'where':{'id':_0x25ceba[_0x42cd61]}})['then'](function(_0xb23e3a){_0x4589aa[_0x9161('0x3e')](_0xb23e3a[_0x9161('0xee')]()[_0x9161('0xf')](function(_0x111601){for(var _0xf9d2d=0x0;_0xf9d2d<_0x111601['length'];_0xf9d2d++){_0x111601[_0xf9d2d][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x10a'));}return _0x111601;}));_0x4589aa[_0x9161('0x3e')](_0xb23e3a[_0x9161('0x10b')]()['then'](function(_0x594268){for(var _0x154c5e=0x0;_0x154c5e<_0x594268[_0x9161('0x66')];_0x154c5e++){_0x594268[_0x154c5e][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x10d'));}return _0x594268;}));_0x4589aa['push'](_0xb23e3a[_0x9161('0x10e')]()[_0x9161('0xf')](function(_0x4a4b04){for(var _0x2a8787=0x0;_0x2a8787<_0x4a4b04['length'];_0x2a8787++){_0x4a4b04[_0x2a8787][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x10f'));}return _0x4a4b04;}));_0x4589aa[_0x9161('0x3e')](_0xb23e3a[_0x9161('0x110')]()[_0x9161('0xf')](function(_0x2283ae){for(var _0x4870e0=0x0;_0x4870e0<_0x2283ae[_0x9161('0x66')];_0x4870e0++){_0x2283ae[_0x4870e0][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x111'));}return _0x2283ae;}));_0x4589aa[_0x9161('0x3e')](_0xb23e3a['getWhatsappQueues']()['then'](function(_0xa2f05e){for(var _0x312443=0x0;_0x312443<_0xa2f05e['length'];_0x312443++){_0xa2f05e[_0x312443][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x113'));}return _0xa2f05e;}));_0x4589aa['push'](_0xb23e3a[_0x9161('0x114')]()[_0x9161('0xf')](function(_0x5c038a){for(var _0x2181a8=0x0;_0x2181a8<_0x5c038a[_0x9161('0x66')];_0x2181a8++){_0x5c038a[_0x2181a8][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x11c'));}return _0x5c038a;}));_0x4589aa[_0x9161('0x3e')](_0xb23e3a[_0x9161('0x115')]()['then'](function(_0xd577c9){for(var _0x3d784f=0x0;_0x3d784f<_0xd577c9['length'];_0x3d784f++){_0xd577c9[_0x3d784f]['setDataValue'](_0x9161('0xaa'),_0x9161('0x116'));}return _0xd577c9;}));return BPromise['all'](_0x4589aa);})[_0x9161('0xf')](function(_0x166c63){var _0x39060f=_['flatten'](_0x166c63);_0x4589aa=[];return db[_0x9161('0x62')][_0x9161('0x11d')](function(_0x23ef16){for(var _0x1cc8b0=0x0;_0x1cc8b0<_0x39060f[_0x9161('0x66')];_0x1cc8b0++){_0x4589aa[_0x9161('0x3e')](_0x39060f[_0x1cc8b0][_0x9161('0x11e')](_0x3bdd93['id']),{'transaction':_0x23ef16});}return BPromise[_0x9161('0x49')](_0x4589aa)[_0x9161('0xf')](function(){if(_0x3bdd93[_0x9161('0x98')]){return BPromise[_0x9161('0x86')](_[_0x9161('0x2b')](_0x39060f,function(_0x5f3669){return _0x5f3669[_0x9161('0x119')](_0x9161('0xaa'))===_0x9161('0x10a');}),function(_0x42a975){return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0x42a975['id'],'UserId':_0x3bdd93['id']},'transaction':_0x23ef16});});}else{return;}})[_0x9161('0xf')](function(){for(var _0x3659f9=0x0;_0x3659f9<_0x39060f[_0x9161('0x66')];_0x3659f9++){var _0x19c40c=_0x39060f[_0x3659f9][_0x9161('0x119')](_0x9161('0xaa'));var _0xa37aab=_0x19c40c+'QueueId';socket[_0x9161('0xae')](_0x9161('0x27')+_0x19c40c+'Queue:remove',{'UserId':_0x3bdd93['id'],['queueField']:_0x39060f[_0x3659f9]['id']});}});});});}});}})[_0x9161('0xf')](respondWithStatusCode(_0x418750,null))['catch'](handleError(_0x418750,null));};exports[_0x9161('0x11f')]=function(_0x4c35d5,_0x5cf46c){var _0x4da9b9={};var _0x24b94e={};var _0x122ddb;var _0x1963ea;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x4c35d5[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x5cf46c,null))[_0x9161('0xf')](function(_0x21495d){if(_0x21495d){_0x122ddb=_0x21495d;_0x24b94e[_0x9161('0x52')]=_[_0x9161('0x4d')](db['CmList']['rawAttributes']);_0x24b94e['query']=_[_0x9161('0x4d')](_0x4c35d5[_0x9161('0x41')]);_0x24b94e[_0x9161('0x50')]=_[_0x9161('0x51')](_0x24b94e['model'],_0x24b94e[_0x9161('0x41')]);_0x4da9b9[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x24b94e[_0x9161('0x52')],qs[_0x9161('0x53')](_0x4c35d5[_0x9161('0x41')]['fields']));_0x4da9b9[_0x9161('0x3d')]=_0x4da9b9[_0x9161('0x3d')]['length']?_0x4da9b9[_0x9161('0x3d')]:_0x24b94e[_0x9161('0x52')];_0x4da9b9[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x4c35d5[_0x9161('0x41')][_0x9161('0xc7')]);_0x4da9b9[_0x9161('0x3b')]=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x4c35d5[_0x9161('0x41')],_0x24b94e[_0x9161('0x50')]));if(_0x4c35d5[_0x9161('0x41')]['filter']){_0x4da9b9[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x4da9b9['where'],{'$or':_['map'](_0x4da9b9[_0x9161('0x3d')],function(_0xeacb30){var _0x165deb={};_0x165deb[_0xeacb30]={'$like':'%'+_0x4c35d5[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x165deb;})});}_0x4da9b9=_['merge']({},_0x4da9b9,_0x4c35d5[_0x9161('0x56')]);return _0x122ddb[_0x9161('0x11f')](_0x4da9b9);}})[_0x9161('0xf')](function(_0xba3344){if(_0xba3344){_0x1963ea=_0xba3344[_0x9161('0x66')];if(!_0x4c35d5[_0x9161('0x41')][_0x9161('0xcd')]('nolimit')){_0x4da9b9[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x4c35d5[_0x9161('0x41')][_0x9161('0x1d')]);_0x4da9b9['offset']=qs[_0x9161('0x1b')](_0x4c35d5[_0x9161('0x41')]['offset']);}return _0x122ddb['getLists'](_0x4da9b9);}})[_0x9161('0xf')](function(_0x187ab6){if(_0x187ab6){return _0x187ab6?{'count':_0x1963ea,'rows':_0x187ab6}:null;}})['then'](respondWithResult(_0x5cf46c,null))[_0x9161('0x4a')](handleError(_0x5cf46c,null));};exports['getAgents']=function(_0x101f2e,_0x39f430){var _0x4dda16={};var _0x361eb4={};var _0x10ab34;var _0x3c86a6;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x101f2e[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x39f430,null))['then'](function(_0x5fe049){if(_0x5fe049){_0x10ab34=_0x5fe049;_0x361eb4['model']=_[_0x9161('0x4d')](db[_0x9161('0x36')][_0x9161('0x4e')]);_0x361eb4['query']=_[_0x9161('0x4d')](_0x101f2e[_0x9161('0x41')]);_0x361eb4[_0x9161('0x50')]=_['intersection'](_0x361eb4['model'],_0x361eb4['query']);_0x4dda16[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x361eb4['model'],qs[_0x9161('0x53')](_0x101f2e[_0x9161('0x41')]['fields']));_0x4dda16['attributes']=_0x4dda16[_0x9161('0x3d')]['length']?_0x4dda16[_0x9161('0x3d')]:_0x361eb4[_0x9161('0x52')];_0x4dda16[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x101f2e[_0x9161('0x41')][_0x9161('0xc7')]);_0x4dda16[_0x9161('0x3b')]=qs[_0x9161('0x50')](_['pick'](_0x101f2e['query'],_0x361eb4['filters']));if(_0x101f2e[_0x9161('0x41')][_0x9161('0x2b')]){_0x4dda16[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x4dda16[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x4dda16[_0x9161('0x3d')],function(_0x1f6fef){var _0x2625f5={};_0x2625f5[_0x1f6fef]={'$like':'%'+_0x101f2e[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x2625f5;})});}_0x4dda16['model']=db[_0x9161('0x36')];_0x4dda16['as']=_0x9161('0x7e');_0x4dda16=_[_0x9161('0x55')]({},_0x4dda16,_0x101f2e[_0x9161('0x56')]);return _0x10ab34[_0x9161('0xee')]({'include':[_0x4dda16]});}})[_0x9161('0xf')](function(_0x3e6d46){if(_0x3e6d46){var _0x1582fc={},_0x133136=[],_0x55f090=0x0;for(var _0x2c966e=0x0;_0x2c966e<_0x3e6d46[_0x9161('0x66')];_0x2c966e+=0x1){for(var _0x1b1152=0x0,_0x2c6d2f;_0x1b1152<_0x3e6d46[_0x2c966e][_0x9161('0x7e')]['length'];_0x1b1152+=0x1){_0x2c6d2f=_0x3e6d46[_0x2c966e][_0x9161('0x7e')][_0x1b1152][_0x9161('0x24')]({'plain':!![]});_0x1582fc[_0x2c6d2f['id']]=_0x2c6d2f;}}_0x1582fc=_[_0x9161('0x120')](_0x1582fc);for(var _0x441840=qs['offset'](_0x101f2e[_0x9161('0x41')][_0x9161('0x1b')]);_0x441840<_0x1582fc[_0x9161('0x66')]&&_0x133136[_0x9161('0x66')]<qs[_0x9161('0x1d')](_0x101f2e[_0x9161('0x41')][_0x9161('0x1d')]);_0x441840+=0x1){if(_0x1582fc[_0x441840]){_0x133136[_0x9161('0x3e')](_0x1582fc[_0x441840]);}}return{'count':_0x1582fc[_0x9161('0x66')],'rows':_0x133136};}})[_0x9161('0xf')](respondWithResult(_0x39f430,null))['catch'](handleError(_0x39f430,null));};exports[_0x9161('0x23')]=function(_0x15c0d9,_0x9735e5){if(_0x15c0d9['user']['id']==_0x15c0d9[_0x9161('0x4c')]['id']){return _0x9735e5[_0x9161('0x1f')](0x1f4)[_0x9161('0x34')]({'message':_0x9161('0x121')});}return db[_0x9161('0x36')]['find']({'where':{'id':_0x15c0d9['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x9735e5,null))[_0x9161('0xf')](removeEntity(_0x9735e5,null))[_0x9161('0x4a')](handleError(_0x9735e5,null));};exports[_0x9161('0x122')]=function(_0x197a74,_0x368dbd){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x197a74['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x368dbd,null))[_0x9161('0xf')](function(_0x12bcad){if(_0x12bcad){return _0x12bcad[_0x9161('0x122')](_0x197a74[_0x9161('0x58')]['ids'],_[_0x9161('0x5b')](_0x197a74[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{})[_0x9161('0x9f')](function(){for(var _0x285115=0x0;_0x285115<_0x197a74[_0x9161('0x58')][_0x9161('0x5a')][_0x9161('0x66')];_0x285115+=0x1){socket[_0x9161('0xae')]('user_has_chat_interactions:save',{'ChatInteractionId':Number(_0x197a74['body'][_0x9161('0x5a')][_0x285115]),'UserId':Number(_0x197a74[_0x9161('0x4c')]['id'])});}return _0x197a74[_0x9161('0x58')][_0x9161('0x5a')];});}})['then'](respondWithResult(_0x368dbd,null))['catch'](handleError(_0x368dbd,null));};exports['removeChatInteractions']=function(_0x59fdfb,_0x5d6cad){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x59fdfb['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x5d6cad,null))[_0x9161('0xf')](function(_0x20ecf8){if(_0x20ecf8){return _0x20ecf8[_0x9161('0x123')](_0x59fdfb[_0x9161('0x41')][_0x9161('0x5a')])['then'](function(){if(_[_0x9161('0xad')](_0x59fdfb[_0x9161('0x41')][_0x9161('0x5a')])){for(var _0xcab04e=0x0;_0xcab04e<_0x59fdfb[_0x9161('0x41')][_0x9161('0x5a')][_0x9161('0x66')];_0xcab04e+=0x1){socket[_0x9161('0xae')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x59fdfb[_0x9161('0x41')][_0x9161('0x5a')][_0xcab04e]),'UserId':Number(_0x59fdfb[_0x9161('0x4c')]['id'])});}}else{socket[_0x9161('0xae')](_0x9161('0x124'),{'ChatInteractionId':Number(_0x59fdfb[_0x9161('0x41')][_0x9161('0x5a')]),'UserId':Number(_0x59fdfb[_0x9161('0x4c')]['id'])});}});}})[_0x9161('0xf')](respondWithStatusCode(_0x5d6cad,null))['catch'](handleError(_0x5d6cad,null));};exports[_0x9161('0x125')]=function(_0x150ea9,_0x2d8442){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x150ea9['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x2d8442,null))['then'](function(_0x1f9d6a){if(_0x1f9d6a){return _0x1f9d6a[_0x9161('0x125')](_0x150ea9['body'][_0x9161('0x5a')],_[_0x9161('0x5b')](_0x150ea9['body'],[_0x9161('0x5a'),'id'])||{})['spread'](function(){for(var _0x28d6ad=0x0;_0x28d6ad<_0x150ea9['body'][_0x9161('0x5a')]['length'];_0x28d6ad+=0x1){socket[_0x9161('0xae')](_0x9161('0x126'),{'MailInteractionId':Number(_0x150ea9[_0x9161('0x58')][_0x9161('0x5a')][_0x28d6ad]),'UserId':Number(_0x150ea9[_0x9161('0x4c')]['id'])});}return _0x150ea9[_0x9161('0x58')]['ids'];});}})[_0x9161('0xf')](respondWithResult(_0x2d8442,null))[_0x9161('0x4a')](handleError(_0x2d8442,null));};exports[_0x9161('0x127')]=function(_0x4f8157,_0x1f8cd5){return db[_0x9161('0x36')]['find']({'where':{'id':_0x4f8157['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x1f8cd5,null))[_0x9161('0xf')](function(_0x1590e1){if(_0x1590e1){return _0x1590e1[_0x9161('0x127')](_0x4f8157[_0x9161('0x41')][_0x9161('0x5a')])[_0x9161('0xf')](function(){if(_[_0x9161('0xad')](_0x4f8157[_0x9161('0x41')][_0x9161('0x5a')])){for(var _0xb88c21=0x0;_0xb88c21<_0x4f8157[_0x9161('0x41')]['ids'][_0x9161('0x66')];_0xb88c21+=0x1){socket[_0x9161('0xae')](_0x9161('0x128'),{'MailInteractionId':Number(_0x4f8157[_0x9161('0x41')][_0x9161('0x5a')][_0xb88c21]),'UserId':Number(_0x4f8157['params']['id'])});}}else{socket[_0x9161('0xae')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x4f8157[_0x9161('0x41')][_0x9161('0x5a')]),'UserId':Number(_0x4f8157[_0x9161('0x4c')]['id'])});}});}})[_0x9161('0xf')](respondWithStatusCode(_0x1f8cd5,null))['catch'](handleError(_0x1f8cd5,null));};exports['addFaxInteractions']=function(_0x4d06b4,_0x14c00e){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x4d06b4[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x14c00e,null))['then'](function(_0x3bce00){if(_0x3bce00){return _0x3bce00[_0x9161('0x129')](_0x4d06b4[_0x9161('0x58')][_0x9161('0x5a')],_['omit'](_0x4d06b4[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{})['spread'](function(){for(var _0x2ce844=0x0;_0x2ce844<_0x4d06b4[_0x9161('0x58')][_0x9161('0x5a')][_0x9161('0x66')];_0x2ce844+=0x1){socket[_0x9161('0xae')](_0x9161('0x12a'),{'FaxInteractionId':Number(_0x4d06b4[_0x9161('0x58')]['ids'][_0x2ce844]),'UserId':Number(_0x4d06b4['params']['id'])});}return _0x4d06b4[_0x9161('0x58')][_0x9161('0x5a')];});}})[_0x9161('0xf')](respondWithResult(_0x14c00e,null))[_0x9161('0x4a')](handleError(_0x14c00e,null));};exports[_0x9161('0x12b')]=function(_0xd9f07f,_0x9ffd34){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0xd9f07f['params']['id']}})['then'](handleEntityNotFound(_0x9ffd34,null))[_0x9161('0xf')](function(_0x51fbc1){if(_0x51fbc1){return _0x51fbc1['removeFaxInteractions'](_0xd9f07f['query'][_0x9161('0x5a')])[_0x9161('0xf')](function(){if(_['isArray'](_0xd9f07f[_0x9161('0x41')][_0x9161('0x5a')])){for(var _0x172ddc=0x0;_0x172ddc<_0xd9f07f['query'][_0x9161('0x5a')][_0x9161('0x66')];_0x172ddc+=0x1){socket[_0x9161('0xae')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0xd9f07f[_0x9161('0x41')][_0x9161('0x5a')][_0x172ddc]),'UserId':Number(_0xd9f07f['params']['id'])});}}else{socket[_0x9161('0xae')](_0x9161('0x12c'),{'FaxInteractionId':Number(_0xd9f07f[_0x9161('0x41')][_0x9161('0x5a')]),'UserId':Number(_0xd9f07f[_0x9161('0x4c')]['id'])});}});}})[_0x9161('0xf')](respondWithStatusCode(_0x9ffd34,null))[_0x9161('0x4a')](handleError(_0x9ffd34,null));};exports[_0x9161('0x12d')]=function(_0x11abce,_0x57197d){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x11abce[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x57197d,null))[_0x9161('0xf')](function(_0x1328e9){if(_0x1328e9){return _0x1328e9['addSmsInteractions'](_0x11abce[_0x9161('0x58')][_0x9161('0x5a')],_[_0x9161('0x5b')](_0x11abce[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{})[_0x9161('0x9f')](function(){for(var _0x2991e8=0x0;_0x2991e8<_0x11abce[_0x9161('0x58')][_0x9161('0x5a')][_0x9161('0x66')];_0x2991e8+=0x1){socket[_0x9161('0xae')](_0x9161('0x12e'),{'SmsInteractionId':Number(_0x11abce[_0x9161('0x58')][_0x9161('0x5a')][_0x2991e8]),'UserId':Number(_0x11abce[_0x9161('0x4c')]['id'])});}return _0x11abce['body']['ids'];});}})['then'](respondWithResult(_0x57197d,null))[_0x9161('0x4a')](handleError(_0x57197d,null));};exports['removeSmsInteractions']=function(_0x2b29c2,_0x5473be){return db[_0x9161('0x36')]['find']({'where':{'id':_0x2b29c2[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x5473be,null))['then'](function(_0x93ea7c){if(_0x93ea7c){return _0x93ea7c['removeSmsInteractions'](_0x2b29c2['query'][_0x9161('0x5a')])[_0x9161('0xf')](function(){if(_['isArray'](_0x2b29c2['query'][_0x9161('0x5a')])){for(var _0x413701=0x0;_0x413701<_0x2b29c2[_0x9161('0x41')][_0x9161('0x5a')]['length'];_0x413701+=0x1){socket[_0x9161('0xae')](_0x9161('0x12f'),{'SmsInteractionId':Number(_0x2b29c2[_0x9161('0x41')][_0x9161('0x5a')][_0x413701]),'UserId':Number(_0x2b29c2['params']['id'])});}}else{socket['emit'](_0x9161('0x12f'),{'SmsInteractionId':Number(_0x2b29c2[_0x9161('0x41')][_0x9161('0x5a')]),'UserId':Number(_0x2b29c2[_0x9161('0x4c')]['id'])});}});}})['then'](respondWithStatusCode(_0x5473be,null))['catch'](handleError(_0x5473be,null));};exports['addOpenchannelInteractions']=function(_0x31588c,_0x43a60f){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x31588c[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x43a60f,null))[_0x9161('0xf')](function(_0x5b9ecb){if(_0x5b9ecb){return _0x5b9ecb[_0x9161('0x130')](_0x31588c[_0x9161('0x58')][_0x9161('0x5a')],_[_0x9161('0x5b')](_0x31588c[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{})[_0x9161('0x9f')](function(){for(var _0x52799e=0x0;_0x52799e<_0x31588c[_0x9161('0x58')][_0x9161('0x5a')][_0x9161('0x66')];_0x52799e+=0x1){socket[_0x9161('0xae')](_0x9161('0x131'),{'OpenchannelInteractionId':Number(_0x31588c[_0x9161('0x58')][_0x9161('0x5a')][_0x52799e]),'UserId':Number(_0x31588c[_0x9161('0x4c')]['id'])});}return _0x31588c['body'][_0x9161('0x5a')];});}})[_0x9161('0xf')](respondWithResult(_0x43a60f,null))[_0x9161('0x4a')](handleError(_0x43a60f,null));};exports[_0x9161('0x132')]=function(_0x1c7c57,_0xdaec53){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x1c7c57[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0xdaec53,null))['then'](function(_0x576510){if(_0x576510){return _0x576510['removeOpenchannelInteractions'](_0x1c7c57[_0x9161('0x41')][_0x9161('0x5a')])[_0x9161('0xf')](function(){if(_[_0x9161('0xad')](_0x1c7c57[_0x9161('0x41')][_0x9161('0x5a')])){for(var _0x1461a7=0x0;_0x1461a7<_0x1c7c57[_0x9161('0x41')][_0x9161('0x5a')][_0x9161('0x66')];_0x1461a7+=0x1){socket['emit'](_0x9161('0x133'),{'OpenchannelInteractionId':Number(_0x1c7c57[_0x9161('0x41')][_0x9161('0x5a')][_0x1461a7]),'UserId':Number(_0x1c7c57[_0x9161('0x4c')]['id'])});}}else{socket[_0x9161('0xae')](_0x9161('0x133'),{'OpenchannelInteractionId':Number(_0x1c7c57[_0x9161('0x41')][_0x9161('0x5a')]),'UserId':Number(_0x1c7c57[_0x9161('0x4c')]['id'])});}});}})[_0x9161('0xf')](respondWithStatusCode(_0xdaec53,null))[_0x9161('0x4a')](handleError(_0xdaec53,null));};exports[_0x9161('0x134')]=function(_0x21feb8,_0x497c4d){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x21feb8[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x497c4d,null))[_0x9161('0xf')](function(_0x106b73){if(_0x106b73){return _0x106b73[_0x9161('0x134')](_0x21feb8[_0x9161('0x58')][_0x9161('0x5a')],_[_0x9161('0x5b')](_0x21feb8[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{})['spread'](function(){for(var _0x16a496=0x0;_0x16a496<_0x21feb8[_0x9161('0x58')][_0x9161('0x5a')][_0x9161('0x66')];_0x16a496+=0x1){socket[_0x9161('0xae')]('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0x21feb8['body'][_0x9161('0x5a')][_0x16a496]),'UserId':Number(_0x21feb8[_0x9161('0x4c')]['id'])});}return _0x21feb8['body'][_0x9161('0x5a')];});}})['then'](respondWithResult(_0x497c4d,null))['catch'](handleError(_0x497c4d,null));};exports[_0x9161('0x135')]=function(_0x71ef24,_0x59a1a7){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x71ef24['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x59a1a7,null))[_0x9161('0xf')](function(_0x10aba9){if(_0x10aba9){return _0x10aba9[_0x9161('0x135')](_0x71ef24[_0x9161('0x41')][_0x9161('0x5a')]);}})[_0x9161('0xf')](respondWithStatusCode(_0x59a1a7,null))[_0x9161('0x4a')](handleError(_0x59a1a7,null));};exports[_0x9161('0x136')]=function(_0x3b68e1,_0x23215f){var _0x58f7c9={};var _0x4e7b5d={};var _0x12f016;var _0x25b55f;return db['User'][_0x9161('0x92')]({'where':{'id':_0x3b68e1['params']['id']}})['then'](handleEntityNotFound(_0x23215f,null))[_0x9161('0xf')](function(_0x58cec6){if(_0x58cec6){_0x12f016=_0x58cec6;_0x4e7b5d[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0x137')][_0x9161('0x4e')]);_0x4e7b5d[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x3b68e1[_0x9161('0x41')]);_0x4e7b5d['filters']=_[_0x9161('0x51')](_0x4e7b5d[_0x9161('0x52')],_0x4e7b5d[_0x9161('0x41')]);_0x58f7c9[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x4e7b5d[_0x9161('0x52')],qs[_0x9161('0x53')](_0x3b68e1[_0x9161('0x41')][_0x9161('0x53')]));_0x58f7c9['attributes']=_0x58f7c9[_0x9161('0x3d')][_0x9161('0x66')]?_0x58f7c9[_0x9161('0x3d')]:_0x4e7b5d[_0x9161('0x52')];_0x58f7c9[_0x9161('0xc6')]=qs['sort'](_0x3b68e1[_0x9161('0x41')][_0x9161('0xc7')]);_0x58f7c9[_0x9161('0x3b')]=qs['filters'](_[_0x9161('0xc8')](_0x3b68e1['query'],_0x4e7b5d['filters']));if(_0x3b68e1[_0x9161('0x41')][_0x9161('0x2b')]){_0x58f7c9[_0x9161('0x3b')]=_['merge'](_0x58f7c9[_0x9161('0x3b')],{'$or':_['map'](_0x58f7c9[_0x9161('0x3d')],function(_0x462351){var _0x390167={};_0x390167[_0x462351]={'$like':'%'+_0x3b68e1[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x390167;})});}_0x58f7c9=_[_0x9161('0x55')]({},_0x58f7c9,_0x3b68e1[_0x9161('0x56')]);return _0x12f016[_0x9161('0x136')](_0x58f7c9);}})[_0x9161('0xf')](function(_0x140fde){if(_0x140fde){_0x25b55f=_0x140fde['length'];if(!_0x3b68e1['query'][_0x9161('0xcd')](_0x9161('0xce'))){_0x58f7c9[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x3b68e1[_0x9161('0x41')][_0x9161('0x1d')]);_0x58f7c9[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x3b68e1[_0x9161('0x41')][_0x9161('0x1b')]);}return _0x12f016[_0x9161('0x136')](_0x58f7c9);}})['then'](function(_0x113779){if(_0x113779){return _0x113779?{'count':_0x25b55f,'rows':_0x113779}:null;}})[_0x9161('0xf')](respondWithResult(_0x23215f,null))[_0x9161('0x4a')](handleError(_0x23215f,null));};exports[_0x9161('0x138')]=function(_0x3ecb81,_0x460de3){var _0x5546f8={};var _0x4e318f={};var _0x2a06de;var _0x906f6a;return db[_0x9161('0x36')]['findOne']({'where':{'id':_0x3ecb81[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x460de3,null))[_0x9161('0xf')](function(_0x35cda9){if(_0x35cda9){_0x2a06de=_0x35cda9;_0x4e318f['model']=_['keys'](db[_0x9161('0x139')][_0x9161('0x4e')]);_0x4e318f[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x3ecb81[_0x9161('0x41')]);_0x4e318f[_0x9161('0x50')]=_[_0x9161('0x51')](_0x4e318f[_0x9161('0x52')],_0x4e318f[_0x9161('0x41')]);_0x5546f8[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x4e318f['model'],qs[_0x9161('0x53')](_0x3ecb81['query'][_0x9161('0x53')]));_0x5546f8[_0x9161('0x3d')]=_0x5546f8[_0x9161('0x3d')][_0x9161('0x66')]?_0x5546f8[_0x9161('0x3d')]:_0x4e318f[_0x9161('0x52')];_0x5546f8[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x3ecb81[_0x9161('0x41')]['sort']);_0x5546f8[_0x9161('0x3b')]=qs['filters'](_['pick'](_0x3ecb81[_0x9161('0x41')],_0x4e318f['filters']));if(_0x3ecb81[_0x9161('0x41')][_0x9161('0x2b')]){_0x5546f8[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x5546f8[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x5546f8[_0x9161('0x3d')],function(_0x51f1c4){var _0x5ef389={};_0x5ef389[_0x51f1c4]={'$like':'%'+_0x3ecb81[_0x9161('0x41')]['filter']+'%'};return _0x5ef389;})});}_0x5546f8=_[_0x9161('0x55')]({},_0x5546f8,_0x3ecb81[_0x9161('0x56')]);return _0x2a06de[_0x9161('0x138')](_0x5546f8);}})['then'](function(_0x13c742){if(_0x13c742){_0x906f6a=_0x13c742[_0x9161('0x66')];if(!_0x3ecb81[_0x9161('0x41')]['hasOwnProperty']('nolimit')){_0x5546f8[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x3ecb81[_0x9161('0x41')][_0x9161('0x1d')]);_0x5546f8[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x3ecb81[_0x9161('0x41')][_0x9161('0x1b')]);}return _0x2a06de[_0x9161('0x138')](_0x5546f8);}})[_0x9161('0xf')](function(_0x5bb046){if(_0x5bb046){return _0x5bb046?{'count':_0x906f6a,'rows':_0x5bb046}:null;}})['then'](respondWithResult(_0x460de3,null))[_0x9161('0x4a')](handleError(_0x460de3,null));};exports[_0x9161('0x13a')]=function(_0x2c0c5f,_0x442fce){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x2c0c5f[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x442fce,null))['then'](function(_0x246867){if(_0x246867){return _0x246867['addFaxAccounts'](_0x2c0c5f[_0x9161('0x58')][_0x9161('0x5a')],_['omit'](_0x2c0c5f['body'],[_0x9161('0x5a'),'id'])||{});}})['then'](respondWithResult(_0x442fce,null))['catch'](handleError(_0x442fce,null));};exports['removeFaxAccounts']=function(_0x40165d,_0x1151ac){return db['User'][_0x9161('0x30')]({'where':{'id':_0x40165d[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1151ac,null))[_0x9161('0xf')](function(_0x628c4c){if(_0x628c4c){return _0x628c4c[_0x9161('0x13b')](_0x40165d['query']['ids']);}})[_0x9161('0xf')](respondWithStatusCode(_0x1151ac,null))[_0x9161('0x4a')](handleError(_0x1151ac,null));};exports[_0x9161('0x13c')]=function(_0x351074,_0x247c5c){var _0x3748ee={};var _0x3c570f={};var _0x5f4e98;var _0x198e11;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x351074[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x247c5c,null))[_0x9161('0xf')](function(_0x1488ad){if(_0x1488ad){_0x5f4e98=_0x1488ad;_0x3c570f['model']=_['keys'](db['MailAccount'][_0x9161('0x4e')]);_0x3c570f[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x351074['query']);_0x3c570f['filters']=_[_0x9161('0x51')](_0x3c570f[_0x9161('0x52')],_0x3c570f[_0x9161('0x41')]);_0x3748ee['attributes']=_[_0x9161('0x51')](_0x3c570f[_0x9161('0x52')],qs[_0x9161('0x53')](_0x351074[_0x9161('0x41')][_0x9161('0x53')]));_0x3748ee[_0x9161('0x3d')]=_0x3748ee[_0x9161('0x3d')][_0x9161('0x66')]?_0x3748ee[_0x9161('0x3d')]:_0x3c570f[_0x9161('0x52')];_0x3748ee[_0x9161('0xc6')]=qs['sort'](_0x351074[_0x9161('0x41')][_0x9161('0xc7')]);_0x3748ee['where']=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x351074[_0x9161('0x41')],_0x3c570f[_0x9161('0x50')]));if(_0x351074['query']['filter']){_0x3748ee['where']=_[_0x9161('0x55')](_0x3748ee[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x3748ee[_0x9161('0x3d')],function(_0x556cec){var _0x20b2f2={};_0x20b2f2[_0x556cec]={'$like':'%'+_0x351074[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x20b2f2;})});}_0x3748ee=_[_0x9161('0x55')]({},_0x3748ee,_0x351074[_0x9161('0x56')]);return _0x5f4e98[_0x9161('0x13c')](_0x3748ee);}})[_0x9161('0xf')](function(_0x3bc097){if(_0x3bc097){_0x198e11=_0x3bc097[_0x9161('0x66')];if(!_0x351074[_0x9161('0x41')]['hasOwnProperty'](_0x9161('0xce'))){_0x3748ee[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x351074[_0x9161('0x41')][_0x9161('0x1d')]);_0x3748ee[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x351074[_0x9161('0x41')]['offset']);}return _0x5f4e98['getMailAccounts'](_0x3748ee);}})['then'](function(_0x16b06d){if(_0x16b06d){return _0x16b06d?{'count':_0x198e11,'rows':_0x16b06d}:null;}})[_0x9161('0xf')](respondWithResult(_0x247c5c,null))[_0x9161('0x4a')](handleError(_0x247c5c,null));};exports[_0x9161('0x13d')]=function(_0x280152,_0x31b52a){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x280152[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x31b52a,null))['then'](function(_0x246e65){if(_0x246e65){return _0x246e65[_0x9161('0x13d')](_0x280152[_0x9161('0x58')][_0x9161('0x5a')],_[_0x9161('0x5b')](_0x280152[_0x9161('0x58')],['ids','id'])||{});}})[_0x9161('0xf')](respondWithResult(_0x31b52a,null))[_0x9161('0x4a')](handleError(_0x31b52a,null));};exports['removeMailAccounts']=function(_0x142cc3,_0x1c4984){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x142cc3[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1c4984,null))[_0x9161('0xf')](function(_0x5c41bf){if(_0x5c41bf){return _0x5c41bf[_0x9161('0x13e')](_0x142cc3[_0x9161('0x41')]['ids']);}})[_0x9161('0xf')](respondWithStatusCode(_0x1c4984,null))['catch'](handleError(_0x1c4984,null));};exports[_0x9161('0x13f')]=function(_0x3ccb25,_0xf54736){var _0x448bc7={};var _0x3ded5b={};var _0x254cdf;var _0x3d2431;return db['User'][_0x9161('0x92')]({'where':{'id':_0x3ccb25[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0xf54736,null))['then'](function(_0x56e378){if(_0x56e378){_0x254cdf=_0x56e378;_0x3ded5b[_0x9161('0x52')]=_[_0x9161('0x4d')](db['OpenchannelAccount'][_0x9161('0x4e')]);_0x3ded5b['query']=_[_0x9161('0x4d')](_0x3ccb25[_0x9161('0x41')]);_0x3ded5b['filters']=_[_0x9161('0x51')](_0x3ded5b['model'],_0x3ded5b[_0x9161('0x41')]);_0x448bc7['attributes']=_[_0x9161('0x51')](_0x3ded5b[_0x9161('0x52')],qs['fields'](_0x3ccb25[_0x9161('0x41')][_0x9161('0x53')]));_0x448bc7[_0x9161('0x3d')]=_0x448bc7[_0x9161('0x3d')][_0x9161('0x66')]?_0x448bc7[_0x9161('0x3d')]:_0x3ded5b[_0x9161('0x52')];_0x448bc7[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x3ccb25['query'][_0x9161('0xc7')]);_0x448bc7[_0x9161('0x3b')]=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x3ccb25[_0x9161('0x41')],_0x3ded5b['filters']));if(_0x3ccb25[_0x9161('0x41')][_0x9161('0x2b')]){_0x448bc7[_0x9161('0x3b')]=_['merge'](_0x448bc7[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x448bc7[_0x9161('0x3d')],function(_0x5d9b73){var _0x5cea1b={};_0x5cea1b[_0x5d9b73]={'$like':'%'+_0x3ccb25[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x5cea1b;})});}_0x448bc7=_[_0x9161('0x55')]({},_0x448bc7,_0x3ccb25[_0x9161('0x56')]);return _0x254cdf[_0x9161('0x13f')](_0x448bc7);}})[_0x9161('0xf')](function(_0x2507c8){if(_0x2507c8){_0x3d2431=_0x2507c8['length'];if(!_0x3ccb25[_0x9161('0x41')][_0x9161('0xcd')](_0x9161('0xce'))){_0x448bc7[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x3ccb25[_0x9161('0x41')]['limit']);_0x448bc7['offset']=qs[_0x9161('0x1b')](_0x3ccb25[_0x9161('0x41')][_0x9161('0x1b')]);}return _0x254cdf['getOpenchannelAccounts'](_0x448bc7);}})[_0x9161('0xf')](function(_0x3ca6fd){if(_0x3ca6fd){return _0x3ca6fd?{'count':_0x3d2431,'rows':_0x3ca6fd}:null;}})['then'](respondWithResult(_0xf54736,null))[_0x9161('0x4a')](handleError(_0xf54736,null));};exports['addOpenchannelAccounts']=function(_0x2521b0,_0x3e24e0){return db['User']['find']({'where':{'id':_0x2521b0[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x3e24e0,null))[_0x9161('0xf')](function(_0x507bbc){if(_0x507bbc){return _0x507bbc[_0x9161('0x140')](_0x2521b0[_0x9161('0x58')][_0x9161('0x5a')],_[_0x9161('0x5b')](_0x2521b0[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{});}})[_0x9161('0xf')](respondWithResult(_0x3e24e0,null))[_0x9161('0x4a')](handleError(_0x3e24e0,null));};exports[_0x9161('0x141')]=function(_0x395376,_0x1618a0){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x395376[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1618a0,null))[_0x9161('0xf')](function(_0x2f660){if(_0x2f660){return _0x2f660[_0x9161('0x141')](_0x395376[_0x9161('0x41')][_0x9161('0x5a')]);}})[_0x9161('0xf')](respondWithStatusCode(_0x1618a0,null))[_0x9161('0x4a')](handleError(_0x1618a0,null));};exports[_0x9161('0x142')]=function(_0x515776,_0x2802cd){var _0x65ab8={};var _0x633ebd={};var _0x4fd2fd;var _0x173d06;return db[_0x9161('0x36')]['findOne']({'where':{'id':_0x515776[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2802cd,null))['then'](function(_0x2d148a){if(_0x2d148a){_0x4fd2fd=_0x2d148a;_0x633ebd['model']=_['keys'](db['SmsAccount'][_0x9161('0x4e')]);_0x633ebd['query']=_['keys'](_0x515776[_0x9161('0x41')]);_0x633ebd[_0x9161('0x50')]=_['intersection'](_0x633ebd[_0x9161('0x52')],_0x633ebd[_0x9161('0x41')]);_0x65ab8[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x633ebd[_0x9161('0x52')],qs[_0x9161('0x53')](_0x515776[_0x9161('0x41')][_0x9161('0x53')]));_0x65ab8[_0x9161('0x3d')]=_0x65ab8[_0x9161('0x3d')][_0x9161('0x66')]?_0x65ab8[_0x9161('0x3d')]:_0x633ebd[_0x9161('0x52')];_0x65ab8[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x515776['query'][_0x9161('0xc7')]);_0x65ab8[_0x9161('0x3b')]=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x515776[_0x9161('0x41')],_0x633ebd['filters']));if(_0x515776[_0x9161('0x41')][_0x9161('0x2b')]){_0x65ab8[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x65ab8[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x65ab8[_0x9161('0x3d')],function(_0x27b334){var _0x5d5359={};_0x5d5359[_0x27b334]={'$like':'%'+_0x515776[_0x9161('0x41')]['filter']+'%'};return _0x5d5359;})});}_0x65ab8=_[_0x9161('0x55')]({},_0x65ab8,_0x515776['options']);return _0x4fd2fd[_0x9161('0x142')](_0x65ab8);}})[_0x9161('0xf')](function(_0x4d620d){if(_0x4d620d){_0x173d06=_0x4d620d[_0x9161('0x66')];if(!_0x515776['query']['hasOwnProperty'](_0x9161('0xce'))){_0x65ab8[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x515776[_0x9161('0x41')]['limit']);_0x65ab8[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x515776['query'][_0x9161('0x1b')]);}return _0x4fd2fd[_0x9161('0x142')](_0x65ab8);}})[_0x9161('0xf')](function(_0x3c229b){if(_0x3c229b){return _0x3c229b?{'count':_0x173d06,'rows':_0x3c229b}:null;}})[_0x9161('0xf')](respondWithResult(_0x2802cd,null))['catch'](handleError(_0x2802cd,null));};exports['addSmsAccounts']=function(_0x1cec56,_0xa6930f){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x1cec56[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0xa6930f,null))[_0x9161('0xf')](function(_0x25cc3d){if(_0x25cc3d){return _0x25cc3d['addSmsAccounts'](_0x1cec56[_0x9161('0x58')]['ids'],_[_0x9161('0x5b')](_0x1cec56[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{});}})[_0x9161('0xf')](respondWithResult(_0xa6930f,null))[_0x9161('0x4a')](handleError(_0xa6930f,null));};exports[_0x9161('0x143')]=function(_0x26bdea,_0xef80ee){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x26bdea['params']['id']}})['then'](handleEntityNotFound(_0xef80ee,null))[_0x9161('0xf')](function(_0x193887){if(_0x193887){return _0x193887[_0x9161('0x143')](_0x26bdea['query'][_0x9161('0x5a')]);}})[_0x9161('0xf')](respondWithStatusCode(_0xef80ee,null))[_0x9161('0x4a')](handleError(_0xef80ee,null));};exports[_0x9161('0x144')]=function(_0x5b48da,_0xfcd6de){var _0x2c53e8={};var _0x256716={};var _0x230827;var _0x7470ee;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x5b48da[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0xfcd6de,null))[_0x9161('0xf')](function(_0x4553eb){if(_0x4553eb){_0x230827=_0x4553eb;_0x256716[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0x145')][_0x9161('0x4e')]);_0x256716[_0x9161('0x41')]=_['keys'](_0x5b48da[_0x9161('0x41')]);_0x256716['filters']=_['intersection'](_0x256716['model'],_0x256716['query']);_0x2c53e8['attributes']=_[_0x9161('0x51')](_0x256716[_0x9161('0x52')],qs[_0x9161('0x53')](_0x5b48da['query'][_0x9161('0x53')]));_0x2c53e8[_0x9161('0x3d')]=_0x2c53e8[_0x9161('0x3d')][_0x9161('0x66')]?_0x2c53e8[_0x9161('0x3d')]:_0x256716[_0x9161('0x52')];_0x2c53e8['order']=qs[_0x9161('0xc7')](_0x5b48da[_0x9161('0x41')][_0x9161('0xc7')]);_0x2c53e8[_0x9161('0x3b')]=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x5b48da['query'],_0x256716['filters']));if(_0x5b48da[_0x9161('0x41')][_0x9161('0x2b')]){_0x2c53e8[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x2c53e8['where'],{'$or':_['map'](_0x2c53e8[_0x9161('0x3d')],function(_0x1b1cc2){var _0x58b1ff={};_0x58b1ff[_0x1b1cc2]={'$like':'%'+_0x5b48da[_0x9161('0x41')]['filter']+'%'};return _0x58b1ff;})});}_0x2c53e8=_[_0x9161('0x55')]({},_0x2c53e8,_0x5b48da['options']);return _0x230827[_0x9161('0x144')](_0x2c53e8);}})[_0x9161('0xf')](function(_0x4671df){if(_0x4671df){_0x7470ee=_0x4671df[_0x9161('0x66')];if(!_0x5b48da[_0x9161('0x41')][_0x9161('0xcd')]('nolimit')){_0x2c53e8['limit']=qs[_0x9161('0x1d')](_0x5b48da['query'][_0x9161('0x1d')]);_0x2c53e8['offset']=qs[_0x9161('0x1b')](_0x5b48da['query'][_0x9161('0x1b')]);}return _0x230827['getChatWebsites'](_0x2c53e8);}})[_0x9161('0xf')](function(_0x366c45){if(_0x366c45){return _0x366c45?{'count':_0x7470ee,'rows':_0x366c45}:null;}})['then'](respondWithResult(_0xfcd6de,null))[_0x9161('0x4a')](handleError(_0xfcd6de,null));};exports[_0x9161('0x146')]=function(_0x126b9d,_0x4ffedc){return db['User'][_0x9161('0x30')]({'where':{'id':_0x126b9d[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x4ffedc,null))['then'](function(_0x31b461){if(_0x31b461){return _0x31b461[_0x9161('0x146')](_0x126b9d[_0x9161('0x58')][_0x9161('0x5a')],_[_0x9161('0x5b')](_0x126b9d['body'],[_0x9161('0x5a'),'id'])||{});}})[_0x9161('0xf')](respondWithResult(_0x4ffedc,null))[_0x9161('0x4a')](handleError(_0x4ffedc,null));};exports[_0x9161('0x147')]=function(_0x1e3370,_0x116867){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x1e3370['params']['id']}})['then'](handleEntityNotFound(_0x116867,null))['then'](function(_0x482f87){if(_0x482f87){return _0x482f87[_0x9161('0x147')](_0x1e3370[_0x9161('0x41')][_0x9161('0x5a')]);}})[_0x9161('0xf')](respondWithStatusCode(_0x116867,null))[_0x9161('0x4a')](handleError(_0x116867,null));};exports[_0x9161('0x148')]=function(_0x1ab896,_0x32d6c6){var _0x701dcb={};var _0x59ff36={};var _0x3f43dd;var _0x54b1c6;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x1ab896[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x32d6c6,null))['then'](function(_0x12e03e){if(_0x12e03e){_0x3f43dd=_0x12e03e;_0x59ff36[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0x149')][_0x9161('0x4e')]);_0x59ff36[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x1ab896[_0x9161('0x41')]);_0x59ff36[_0x9161('0x50')]=_[_0x9161('0x51')](_0x59ff36['model'],_0x59ff36[_0x9161('0x41')]);_0x701dcb['attributes']=_[_0x9161('0x51')](_0x59ff36['model'],qs[_0x9161('0x53')](_0x1ab896[_0x9161('0x41')][_0x9161('0x53')]));_0x701dcb[_0x9161('0x3d')]=_0x701dcb[_0x9161('0x3d')][_0x9161('0x66')]?_0x701dcb[_0x9161('0x3d')]:_0x59ff36[_0x9161('0x52')];_0x701dcb[_0x9161('0xc6')]=qs['sort'](_0x1ab896['query'][_0x9161('0xc7')]);_0x701dcb[_0x9161('0x3b')]=qs['filters'](_[_0x9161('0xc8')](_0x1ab896[_0x9161('0x41')],_0x59ff36[_0x9161('0x50')]));if(_0x1ab896[_0x9161('0x41')][_0x9161('0x2b')]){_0x701dcb[_0x9161('0x3b')]=_['merge'](_0x701dcb[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x701dcb[_0x9161('0x3d')],function(_0x5af415){var _0x526d0e={};_0x526d0e[_0x5af415]={'$like':'%'+_0x1ab896[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x526d0e;})});}_0x701dcb=_[_0x9161('0x55')]({},_0x701dcb,_0x1ab896[_0x9161('0x56')]);return _0x3f43dd['getWhatsappAccounts'](_0x701dcb);}})[_0x9161('0xf')](function(_0x1502f1){if(_0x1502f1){_0x54b1c6=_0x1502f1['length'];if(!_0x1ab896[_0x9161('0x41')][_0x9161('0xcd')]('nolimit')){_0x701dcb['limit']=qs[_0x9161('0x1d')](_0x1ab896[_0x9161('0x41')][_0x9161('0x1d')]);_0x701dcb[_0x9161('0x1b')]=qs['offset'](_0x1ab896[_0x9161('0x41')][_0x9161('0x1b')]);}return _0x3f43dd[_0x9161('0x148')](_0x701dcb);}})['then'](function(_0x527fdc){if(_0x527fdc){return _0x527fdc?{'count':_0x54b1c6,'rows':_0x527fdc}:null;}})[_0x9161('0xf')](respondWithResult(_0x32d6c6,null))[_0x9161('0x4a')](handleError(_0x32d6c6,null));};exports[_0x9161('0x14a')]=function(_0x2d4647,_0x67793d){return db[_0x9161('0x36')]['find']({'where':{'id':_0x2d4647[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x67793d,null))['then'](function(_0x4be8b7){if(_0x4be8b7){return _0x4be8b7['addWhatsappAccounts'](_0x2d4647[_0x9161('0x58')][_0x9161('0x5a')],_['omit'](_0x2d4647[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{});}})[_0x9161('0xf')](respondWithResult(_0x67793d,null))[_0x9161('0x4a')](handleError(_0x67793d,null));};exports[_0x9161('0x14b')]=function(_0x2f5617,_0xe1246c){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x2f5617['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0xe1246c,null))[_0x9161('0xf')](function(_0x31c2b4){if(_0x31c2b4){return _0x31c2b4[_0x9161('0x14b')](_0x2f5617['query']['ids']);}})[_0x9161('0xf')](respondWithStatusCode(_0xe1246c,null))[_0x9161('0x4a')](handleError(_0xe1246c,null));};exports[_0x9161('0x14c')]=function(_0x1adebc,_0x22055b){var _0xe73def={};var _0x128e25={};var _0x3af3c0;var _0x45ad16;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x1adebc[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x22055b,null))[_0x9161('0xf')](function(_0xb265fa){if(_0xb265fa){_0x3af3c0=_0xb265fa;_0x128e25[_0x9161('0x52')]=_[_0x9161('0x4d')](db['SquareProject'][_0x9161('0x4e')]);_0x128e25['query']=_[_0x9161('0x4d')](_0x1adebc[_0x9161('0x41')]);_0x128e25[_0x9161('0x50')]=_[_0x9161('0x51')](_0x128e25[_0x9161('0x52')],_0x128e25[_0x9161('0x41')]);_0xe73def[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x128e25[_0x9161('0x52')],qs['fields'](_0x1adebc[_0x9161('0x41')][_0x9161('0x53')]));_0xe73def[_0x9161('0x3d')]=_0xe73def[_0x9161('0x3d')][_0x9161('0x66')]?_0xe73def[_0x9161('0x3d')]:_0x128e25[_0x9161('0x52')];_0xe73def[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x1adebc['query'][_0x9161('0xc7')]);_0xe73def[_0x9161('0x3b')]=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x1adebc[_0x9161('0x41')],_0x128e25[_0x9161('0x50')]));if(_0x1adebc[_0x9161('0x41')]['filter']){_0xe73def['where']=_[_0x9161('0x55')](_0xe73def[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0xe73def['attributes'],function(_0x3f4bbf){var _0x2d744a={};_0x2d744a[_0x3f4bbf]={'$like':'%'+_0x1adebc['query'][_0x9161('0x2b')]+'%'};return _0x2d744a;})});}_0xe73def=_[_0x9161('0x55')]({},_0xe73def,_0x1adebc[_0x9161('0x56')]);return _0x3af3c0[_0x9161('0x14c')](_0xe73def);}})[_0x9161('0xf')](function(_0x4aeb88){if(_0x4aeb88){_0x45ad16=_0x4aeb88[_0x9161('0x66')];if(!_0x1adebc['query'][_0x9161('0xcd')](_0x9161('0xce'))){_0xe73def[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x1adebc['query']['limit']);_0xe73def[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x1adebc['query'][_0x9161('0x1b')]);}return _0x3af3c0[_0x9161('0x14c')](_0xe73def);}})[_0x9161('0xf')](function(_0x34d82f){if(_0x34d82f){return _0x34d82f?{'count':_0x45ad16,'rows':_0x34d82f}:null;}})['then'](respondWithResult(_0x22055b,null))[_0x9161('0x4a')](handleError(_0x22055b,null));};exports[_0x9161('0x14d')]=function(_0x522edb,_0x277aff){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x522edb[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x277aff,null))[_0x9161('0xf')](function(_0x480f12){if(_0x480f12){return _0x480f12[_0x9161('0x14d')](_0x522edb[_0x9161('0x58')]['ids'],_['omit'](_0x522edb['body'],[_0x9161('0x5a'),'id'])||{});}})[_0x9161('0xf')](respondWithResult(_0x277aff,null))[_0x9161('0x4a')](handleError(_0x277aff,null));};exports[_0x9161('0x14e')]=function(_0x2ce55b,_0x2c4ae2){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x2ce55b['params']['id']}})['then'](handleEntityNotFound(_0x2c4ae2,null))[_0x9161('0xf')](function(_0x17be9e){if(_0x17be9e){return _0x17be9e[_0x9161('0x14e')](_0x2ce55b[_0x9161('0x41')][_0x9161('0x5a')]);}})[_0x9161('0xf')](respondWithStatusCode(_0x2c4ae2,null))[_0x9161('0x4a')](handleError(_0x2c4ae2,null));};exports[_0x9161('0x14f')]=function(_0x61cf72,_0x21964d){var _0x5469c2={},_0x38ca90={},_0x514b4e={'count':0x0,'rows':[]};var _0x3ba7eb=db['CmHopper'][_0x9161('0x4e')];_0x38ca90['model']=_[_0x9161('0x4d')](_0x3ba7eb);_0x38ca90[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x61cf72[_0x9161('0x41')]);_0x38ca90[_0x9161('0x50')]=_[_0x9161('0x51')](_0x38ca90[_0x9161('0x52')],_0x38ca90[_0x9161('0x41')]);_0x38ca90[_0x9161('0x50')]=_['concat'](_0x38ca90['filters'],[_0x9161('0x150'),'$or',_0x9161('0x151'),_0x9161('0x152'),'$lt',_0x9161('0x153'),'$ne',_0x9161('0x154'),'$not',_0x9161('0x155'),_0x9161('0x156'),_0x9161('0x157'),'$notIn',_0x9161('0x158'),_0x9161('0x159'),'$iLike',_0x9161('0x15a'),_0x9161('0x158'),_0x9161('0x15b'),_0x9161('0x15c'),_0x9161('0x15d'),'$any']);_0x5469c2[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x38ca90[_0x9161('0x52')],qs[_0x9161('0x53')](_0x61cf72[_0x9161('0x41')][_0x9161('0x53')]));_0x5469c2[_0x9161('0x3d')]=_0x5469c2[_0x9161('0x3d')][_0x9161('0x66')]?_0x5469c2[_0x9161('0x3d')]:_0x38ca90[_0x9161('0x52')];if(!_0x61cf72[_0x9161('0x41')][_0x9161('0xcd')](_0x9161('0xce'))){_0x5469c2['limit']=qs[_0x9161('0x1d')](_0x61cf72[_0x9161('0x41')][_0x9161('0x1d')]);_0x5469c2[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x61cf72[_0x9161('0x41')][_0x9161('0x1b')]);}_0x5469c2[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x61cf72[_0x9161('0x41')][_0x9161('0xc7')]);_0x5469c2[_0x9161('0x3b')]=qs['filters'](_[_0x9161('0xc8')](_0x61cf72[_0x9161('0x41')],_0x38ca90['filters']));if(_0x61cf72['query']['filter']){_0x5469c2['where']=_[_0x9161('0x55')](_0x5469c2[_0x9161('0x3b')],{'$or':_['map'](_0x5469c2['attributes'],function(_0x3e4707){var _0x487189={};_0x487189[_0x3e4707]={'$like':'%'+_0x61cf72[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x487189;})});}_0x5469c2['where']={'$and':[_0x5469c2[_0x9161('0x3b')],{'$or':[{'UserId':_0x61cf72['params']['id']},{'OwnerId':_0x61cf72[_0x9161('0x4c')]['id']}]}]};_0x5469c2=_[_0x9161('0x55')]({},_0x5469c2,_0x61cf72[_0x9161('0x56')]);var _0x337118={'where':_0x5469c2[_0x9161('0x3b')]};return db['CmHopper'][_0x9161('0x1e')](_0x337118)[_0x9161('0xf')](function(_0x436999){_0x514b4e[_0x9161('0x1e')]=_0x436999;if(_0x61cf72[_0x9161('0x41')][_0x9161('0x54')]){_0x5469c2[_0x9161('0x3c')]=[{'attributes':['id',_0x9161('0x15e'),_0x9161('0x15f'),'phone'],'model':db[_0x9161('0xc5')],'as':_0x9161('0x160')},{'attributes':['id',_0x9161('0x31'),_0x9161('0x161')],'model':db['VoiceQueue'],'as':_0x9161('0xd1')}];}return db['CmHopper'][_0x9161('0x3f')](_0x5469c2);})[_0x9161('0xf')](function(_0x25e13e){_0x514b4e[_0x9161('0x40')]=_0x25e13e;return _0x514b4e;})[_0x9161('0xf')](respondWithFilteredResult(_0x21964d,_0x5469c2))[_0x9161('0x4a')](handleError(_0x21964d,null));};exports[_0x9161('0x162')]=function(_0x30ab60,_0x4ef476){if(!_['isNil'](_0x30ab60[_0x9161('0x27')]['id'])&&(_0x30ab60['user']['role']==_0x9161('0x79')||_0x30ab60['user']['role']=='user')){return db['User'][_0x9161('0x92')]({'where':{'id':_0x30ab60[_0x9161('0x4c')]['id']},'raw':!![]})[_0x9161('0xf')](function(_0xf78496){return authService[_0x9161('0x163')](_0xf78496);})[_0x9161('0xf')](function(_0x496a80){if(_0x496a80){return _0x4ef476['status'](0xc8)[_0x9161('0x21')]({'api_key':_0x496a80[_0x9161('0x164')]});}else{return _0x4ef476[_0x9161('0x1f')](0xcc)[_0x9161('0x21')]({'message':_0x9161('0x165')});}})[_0x9161('0x4a')](handleError(_0x4ef476,0x193));}else{return _0x4ef476['status'](0x191)['json']({'message':_0x9161('0x166')});}};exports[_0x9161('0x167')]=function(_0x51c731,_0x14ca1c){if(!_[_0x9161('0x67')](_0x51c731[_0x9161('0x27')]['id'])&&(_0x51c731[_0x9161('0x27')]['role']==_0x9161('0x79')||_0x51c731[_0x9161('0x27')][_0x9161('0x25')]==_0x9161('0x27'))){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x51c731['params']['id']}})['then'](function(_0x932aba){return authService[_0x9161('0x168')](_0x932aba);})[_0x9161('0xf')](function(_0x5e7d3f){return db[_0x9161('0x36')][_0x9161('0x22')]({'apiKeyIat':_0x5e7d3f[_0x9161('0x169')],'apiKeyNonce':_0x5e7d3f[_0x9161('0x16a')]},{'where':{'id':_0x51c731[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](function(){return _0x14ca1c[_0x9161('0x1f')](0xc8)[_0x9161('0x21')]({'api_key':_0x5e7d3f['token']});});})[_0x9161('0x4a')](handleError(_0x14ca1c,0x193));}else{return _0x14ca1c[_0x9161('0x1f')](0x191)[_0x9161('0x21')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports['removeApiKey']=function(_0x4eff02,_0x345cee){if(!_[_0x9161('0x67')](_0x4eff02[_0x9161('0x27')]['id'])&&(_0x4eff02[_0x9161('0x27')][_0x9161('0x25')]==_0x9161('0x79')||_0x4eff02[_0x9161('0x27')]['role']==_0x9161('0x27'))){return db['User'][_0x9161('0x30')]({'where':{'id':_0x4eff02[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x345cee,null))[_0x9161('0xf')](function(_0x2c8fb3){if(_0x2c8fb3&&_0x2c8fb3['apiKeyNonce']&&_0x2c8fb3['apiKeyIat'])return _0x2c8fb3;else throw{'message':_0x9161('0x16b')};})[_0x9161('0xf')](function(_0x41ec4c){return db[_0x9161('0x36')]['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x4eff02[_0x9161('0x4c')]['id']}});})['then'](respondWithStatusCode(_0x345cee,0xc8))[_0x9161('0x4a')](handleError(_0x345cee,0x193));}else{return _0x345cee['status'](0x191)[_0x9161('0x21')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0x9161('0x16c')]=function(_0x2db480,_0x4a5055){var _0x5b770c=_0x2db480[_0x9161('0x27')][_0x9161('0x24')]({'plain':!![]});if(!_0x5b770c){return _0x4a5055['status'](0x191)[_0x9161('0x34')]('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{return _0x4a5055['status'](0xc8)['json'](_0x5b770c);}};exports[_0x9161('0x16d')]=function(_0x4762f6,_0x14c78a){var _0x20a79f={'offset':0x0},_0x570f1c={'count':0x0,'rows':[]};Promise[_0x9161('0xf8')]()['then'](function(){if(!_0x4762f6[_0x9161('0x41')]['filter']&&!_0x4762f6[_0x9161('0x41')][_0x9161('0x16e')]&&!_0x4762f6[_0x9161('0x41')][_0x9161('0x16f')])return[];return Promise[_0x9161('0xf8')]()[_0x9161('0xf')](function(){var _0x8f6432=[];if(!_[_0x9161('0x88')](_0x4762f6[_0x9161('0x41')]['teams'])){_0x8f6432[_0x9161('0x3e')](db[_0x9161('0x170')][_0x9161('0x3f')]({'attributes':['id','name'],'where':{'id':_0x4762f6['query'][_0x9161('0x16e')]}}));}if(!_[_0x9161('0x88')](_0x4762f6[_0x9161('0x41')][_0x9161('0x16f')])){_0x8f6432[_0x9161('0x3e')](db[_0x9161('0xa4')][_0x9161('0x3f')]({'attributes':['id',_0x9161('0x31')],'type':'inbound','where':{'id':_0x4762f6[_0x9161('0x41')]['queues']}}));}return Promise[_0x9161('0x49')](_0x8f6432);})[_0x9161('0xf')](function(_0x3aa676){var _0x5caf6d=_[_0x9161('0x117')](_0x3aa676)[_0x9161('0x2d')](function(_0x1d3716){return _0x1d3716[_0x9161('0x171')]({'attributes':['id',_0x9161('0x31'),_0x9161('0x5c'),'online'],'raw':!![]});});return Promise['all'](_0x5caf6d);})[_0x9161('0xf')](function(_0x4fd98d){var _0x4f7942=_[_0x9161('0x117')](_0x4fd98d);if(!_0x4762f6[_0x9161('0x41')][_0x9161('0x2b')])return _0x4f7942;if(_[_0x9161('0x88')](_0x4f7942)){return db[_0x9161('0x36')][_0x9161('0x3f')]({'attributes':['id',_0x9161('0x31'),_0x9161('0x5c'),'online'],'where':{'role':_0x9161('0x28'),'$or':[db[_0x9161('0x62')][_0x9161('0x3b')](db[_0x9161('0x62')]['fn'](_0x9161('0x172'),db[_0x9161('0x62')][_0x9161('0x173')](_0x9161('0x31'))),{'$like':'%'+_0x4762f6[_0x9161('0x41')]['filter'][_0x9161('0x9d')]()+'%'}),{'internal':{'$like':'%'+_0x4762f6[_0x9161('0x41')][_0x9161('0x2b')]+'%'}}]},'raw':!![]});}else{return _(_0x4f7942)[_0x9161('0x117')]()[_0x9161('0x2b')](function(_0x5e20e3){return _0x5e20e3[_0x9161('0x31')]['toLowerCase']()[_0x9161('0x2f')](_0x4762f6[_0x9161('0x41')][_0x9161('0x2b')][_0x9161('0x9d')]())||_0x5e20e3[_0x9161('0x5c')][_0x9161('0x174')]()[_0x9161('0x2f')](_0x4762f6['query'][_0x9161('0x2b')]);})['value']();}})[_0x9161('0xf')](function(_0x5c0c99){var _0x22df10=_0x9161('0x31');var _0x557096=_0x9161('0x175');if(_0x4762f6[_0x9161('0x41')][_0x9161('0xc7')]){var _0x557096=_0x4762f6[_0x9161('0x41')][_0x9161('0xc7')][0x0]==='-'?_0x9161('0x176'):_0x9161('0x175');var _0x22df10=_0x557096===_0x9161('0x175')?_0x4762f6[_0x9161('0x41')][_0x9161('0xc7')]:_0x4762f6[_0x9161('0x41')]['sort']['substring'](0x1);}return _(_0x5c0c99)[_0x9161('0x177')]('id')[_0x9161('0x178')]([function(_0x99b15c){return _0x22df10===_0x9161('0x31')?_0x99b15c[_0x22df10]['toLowerCase']():_0x99b15c[_0x22df10];}],[_0x557096])[_0x9161('0x2d')](function(_0x51a919){return _['pick'](_0x51a919,['id',_0x9161('0x31'),_0x9161('0x5c'),'online']);})[_0x9161('0x2e')]();})[_0x9161('0xf')](function(_0x5d0150){return client[_0x9161('0x179')](_0x9161('0x7e'),_0x4762f6)[_0x9161('0xf')](function(_0x4ff102){if(_0x4ff102[_0x9161('0x16')])throw new Error(_0x9161('0x17a'));var _0x31f0a5=_0x4ff102[_0x9161('0x19')];var _0xa24d94=jayson[_0x9161('0xd')]['http']({'port':0x232c});return _0xa24d94[_0x9161('0x179')]('Agents',_0x4762f6)[_0x9161('0xf')](function(_0x4543e8){if(_0x4543e8['error'])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x40ce9f=_0x4543e8[_0x9161('0x19')];return _['merge']({},_0x40ce9f,_0x31f0a5);});})['then'](function(_0x398588){return _['map'](_0x5d0150,function(_0x56dbc6){var _0x156ee0=_[_0x9161('0x30')](_0x398588[_0x9161('0x40')],['id',_0x56dbc6['id']]);if(!_0x156ee0||!_0x56dbc6['online']){_0x56dbc6['status']='offline';}else if(_0x156ee0['voicePause']){_0x56dbc6[_0x9161('0x1f')]=_0x9161('0xfb');}else{_0x56dbc6['status']=_['includes']([_0x9161('0x17b'),_0x9161('0x17c'),'unavailable',_0x9161('0x17d'),null,undefined],_0x156ee0[_0x9161('0x17e')])?_0x9161('0x98'):_0x9161('0x17f');}return _0x56dbc6;});});});})[_0x9161('0xf')](function(_0x3de369){if(!_0x4762f6[_0x9161('0x41')][_0x9161('0xcd')](_0x9161('0xce'))){_0x20a79f[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x4762f6[_0x9161('0x41')][_0x9161('0x1d')]||0xa);_0x20a79f[_0x9161('0x1b')]=qs['offset'](_0x4762f6['query'][_0x9161('0x1b')]);}_0x570f1c[_0x9161('0x1e')]=_0x3de369[_0x9161('0x66')];_0x570f1c['rows']=_0x20a79f[_0x9161('0x1d')]?_0x3de369[_0x9161('0x180')](_0x20a79f[_0x9161('0x1b')],_0x20a79f['offset']+_0x20a79f[_0x9161('0x1d')]):_0x3de369;return _0x570f1c;})[_0x9161('0xf')](respondWithFilteredResult(_0x14c78a,_0x20a79f))[_0x9161('0x4a')](handleError(_0x14c78a,null));};function get_open_tabs(_0x57cd5b,_0x43e46d){var _0xa23b7d=_0x57cd5b['charAt'](0x0)[_0x9161('0x181')]()+_0x57cd5b['slice'](0x1);var _0xd08f08={'type':db[_0x9161('0x8c')][_0x9161('0x64')][_0x9161('0x65')],'raw':!![]};return new BPromise(function(_0x3f813a,_0x4b7b5e){var _0x4d43b2=squel[_0x9161('0x182')]()[_0x9161('0x183')](_0x9161('0x184')+_0xa23b7d+_0x9161('0x185'),'id')[_0x9161('0x183')]('ui.createdAt')['from']('user_has_'+_0x57cd5b+_0x9161('0x186'),'ui')[_0x9161('0x3b')]('ui.UserId\x20=\x20?',_0x43e46d['id']);return db[_0x9161('0x62')][_0x9161('0x41')](_0x4d43b2['toString'](),_0xd08f08)[_0x9161('0xf')](function(_0x531908){_0x43e46d[_0xa23b7d+_0x9161('0x187')]=_0x531908;_0x3f813a(_0x531908);})['catch'](function(_0x4eb0d7){_0x4b7b5e(_0x4eb0d7);});});};
\ No newline at end of file
index 611d097..52a480d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7548=['User','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x1d2e99,_0x9e3932){var _0x2af608=function(_0x3a87a1){while(--_0x3a87a1){_0x1d2e99['push'](_0x1d2e99['shift']());}};_0x2af608(++_0x9e3932);}(_0x7548,0x153));var _0x8754=function(_0x1fbd6e,_0x2bbbbd){_0x1fbd6e=_0x1fbd6e-0x0;var _0x57a2a3=_0x7548[_0x1fbd6e];return _0x57a2a3;};'use strict';var EventEmitter=require(_0x8754('0x0'));var User=require(_0x8754('0x1'))['db'][_0x8754('0x2')];var UserEvents=new EventEmitter();UserEvents[_0x8754('0x3')](0x0);var events={'afterCreate':_0x8754('0x4'),'afterUpdate':_0x8754('0x5'),'afterDestroy':_0x8754('0x6')};function emitEvent(_0x5981a5){return function(_0x2f790f,_0x4990fe,_0x306ad7){UserEvents[_0x8754('0x7')](_0x5981a5+':'+_0x2f790f['id'],_0x2f790f);UserEvents[_0x8754('0x7')](_0x5981a5,_0x2f790f);_0x306ad7(null);};}for(var e in events){if(events[_0x8754('0x8')](e)){var event=events[e];User[_0x8754('0x9')](e,emitEvent(event));}}module[_0x8754('0xa')]=UserEvents;
\ No newline at end of file
+var _0x9233=['events','User','setMaxListeners','remove','emit','hook'];(function(_0xeff2c3,_0x3a5a82){var _0x2cade6=function(_0x5a26a1){while(--_0x5a26a1){_0xeff2c3['push'](_0xeff2c3['shift']());}};_0x2cade6(++_0x3a5a82);}(_0x9233,0x114));var _0x3923=function(_0x3944b3,_0xf05375){_0x3944b3=_0x3944b3-0x0;var _0xbf7a53=_0x9233[_0x3944b3];return _0xbf7a53;};'use strict';var EventEmitter=require(_0x3923('0x0'));var User=require('../../mysqldb')['db'][_0x3923('0x1')];var UserEvents=new EventEmitter();UserEvents[_0x3923('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x3923('0x3')};function emitEvent(_0x255edd){return function(_0x50db44,_0x1dbd47,_0x263ff6){UserEvents['emit'](_0x255edd+':'+_0x50db44['id'],_0x50db44);UserEvents[_0x3923('0x4')](_0x255edd,_0x50db44);_0x263ff6(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User[_0x3923('0x5')](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
index 540336f..0183428 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb50c=[':asterisk:','bluebird','crypto','util','md5','lodash','./user.attributes','google','system','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','auth','password','ChanSpy','SIP/%s,%s','name','options','join','wav','WAV','gsm','context','from-sip','CDR(type)=internal','includes','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','SIP/%s,,tTxX','Hangup','priority','VoiceChanSpy','findAll','then','internal','concat','catch','models','users','utf8_bin','undefined','resolve','UserProfile','find','userProfileId','privacyEnabled','changed','updateMd5Password','updatePassword','VoiceExtension','bulkCreate','length','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','pbkdf2','provider','Invalid\x20password','makeSalt','md5secret'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0xb50c,0x1cf));var _0xcb50=function(_0x2930c3,_0x2cdf5b){_0x2930c3=_0x2930c3-0x0;var _0x3d0dc9=_0xb50c[_0x2930c3];return _0x3d0dc9;};'use strict';var BPromise=require(_0xcb50('0x0'));var crypto=require(_0xcb50('0x1'));var util=require(_0xcb50('0x2'));var md5=require(_0xcb50('0x3'));var _=require(_0xcb50('0x4'));var attributes=require(_0xcb50('0x5'));var authTypes=[_0xcb50('0x6')];var validatePresenceOf=function(_0x49a092){return _0x49a092&&_0x49a092['length'];};var getChanSpyApplications=function(_0x386050,_0x1fb068,_0x179b8b){var _0x357334={'context':_0x386050['context']||'from-sip','type':_0xcb50('0x7'),'isApp':![],'UserId':_0x386050['id']};var _0x2617c4=[];for(var _0x2a3a7e=0x0,_0x1c43c6=0x1;_0x2a3a7e<_0x179b8b['length'];_0x2a3a7e++,_0x1c43c6=0x1){var _0x4fa369={'exten':util[_0xcb50('0x8')](_0xcb50('0x9'),_0x179b8b[_0x2a3a7e][_0xcb50('0xa')],_0x1fb068),'ChanSpyId':_0x179b8b[_0x2a3a7e]['id']};_0x2617c4[_0xcb50('0xb')](_[_0xcb50('0xc')]({'app':_0xcb50('0xd'),'appdata':util[_0xcb50('0x8')](_0xcb50('0xe'),_0xcb50('0xf')),'priority':_0x1c43c6++},_0x357334,_0x4fa369));if(_0x179b8b[_0x2a3a7e][_0xcb50('0x10')]){_0x2617c4['push'](_[_0xcb50('0xc')]({'app':_0xcb50('0x11'),'appdata':util[_0xcb50('0x8')](_0xcb50('0x12'),_0x179b8b[_0x2a3a7e]['recordingFormat']),'priority':_0x1c43c6++},_0x357334,_0x4fa369));}if(_0x179b8b[_0x2a3a7e][_0xcb50('0x13')]){_0x2617c4['push'](_[_0xcb50('0xc')]({'app':'Authenticate','appdata':_0x179b8b[_0x2a3a7e][_0xcb50('0x14')],'priority':_0x1c43c6++},_0x357334,_0x4fa369));}_0x2617c4[_0xcb50('0xb')](_[_0xcb50('0xc')]({'app':_0xcb50('0x15'),'appdata':util[_0xcb50('0x8')](_0xcb50('0x16'),_0x386050[_0xcb50('0x17')],_0x179b8b[_0x2a3a7e]['options']?_0x179b8b[_0x2a3a7e][_0xcb50('0x18')][_0xcb50('0x19')](''):''),'priority':_0x1c43c6++},_0x357334,_0x4fa369));if(_0x179b8b[_0x2a3a7e]['record']){_0x2617c4[_0xcb50('0xb')](_[_0xcb50('0xc')]({'app':'StopMixMonitor','priority':_0x1c43c6++},_0x357334,_0x4fa369));}}return _0x2617c4;};var getUserApplications=function(_0x65d81e,_0x4750a4){var _0x580fb0=[_0xcb50('0x1a'),_0xcb50('0x1b'),_0xcb50('0x1c')];var _0x562ebd={'context':_0x65d81e[_0xcb50('0x1d')]||_0xcb50('0x1e'),'exten':_0x4750a4,'type':_0xcb50('0x7'),'isApp':![],'UserId':_0x65d81e['id']};var _0x99b672=[{'app':'Set','appdata':_0xcb50('0x1f')}];if(_0x65d81e['extensionMonitor']&&_[_0xcb50('0x20')](_0x580fb0,_0x65d81e[_0xcb50('0x21')])){_0x99b672[_0xcb50('0xb')]({'app':_0xcb50('0xd'),'appdata':_0xcb50('0x22')});_0x99b672['push']({'app':_0xcb50('0xd'),'appdata':util['format'](_0xcb50('0x23'),_0x65d81e[_0xcb50('0x21')])});_0x99b672[_0xcb50('0xb')]({'app':'Dial','appdata':util[_0xcb50('0x8')](_0xcb50('0x24'),_0x65d81e[_0xcb50('0x17')])});}else{_0x99b672[_0xcb50('0xb')]({'app':_0xcb50('0x25'),'appdata':util[_0xcb50('0x8')](_0xcb50('0x26'),_0x65d81e[_0xcb50('0x17')])});}_0x99b672[_0xcb50('0xb')]({'app':_0xcb50('0x27')});for(var _0x38ea89=0x0;_0x38ea89<_0x99b672['length'];_0x38ea89++){_0x99b672[_0x38ea89][_0xcb50('0x28')]=_0x38ea89+0x1;_0x99b672[_0x38ea89]=_['defaults'](_0x99b672[_0x38ea89],_0x562ebd);}return _0x99b672;};var getChanSpyPromise=function(_0x22ee36,_0x18f64d){return new BPromise(function(_0xdffe35,_0x3b1399){return _0x22ee36[_0xcb50('0x29')][_0xcb50('0x2a')]()[_0xcb50('0x2b')](function(_0x5a7090){if(_0x5a7090){var _0xcba213=getChanSpyApplications(_0x18f64d,_0x18f64d[_0xcb50('0x2c')],_0x5a7090);if(_0x18f64d['internal']!=_0x18f64d[_0xcb50('0x17')]){_0xcba213=_0xcba213[_0xcb50('0x2d')](getChanSpyApplications(_0x18f64d,_0x18f64d[_0xcb50('0x17')],_0x5a7090));}return _0xdffe35(_0xcba213);}return _0xdffe35([]);})[_0xcb50('0x2e')](function(_0x3aee34){_0x3b1399(_0x3aee34);});});};module['exports']=function(_0x536757,_0x47fa17){var _0x580312=_0x536757[_0xcb50('0x2f')];return _0x536757['define']('User',attributes,{'tableName':_0xcb50('0x30'),'charset':'utf8','collate':_0xcb50('0x31'),'hooks':{'beforeCreate':function(_0x48a0cf,_0x2f4e8d,_0x202f96){var _0x4d7cc2=typeof _0x48a0cf['userProfileId']===_0xcb50('0x32')?BPromise[_0xcb50('0x33')](null):_0x580312[_0xcb50('0x34')][_0xcb50('0x35')]({'where':{'id':_0x48a0cf[_0xcb50('0x36')]}});_0x4d7cc2[_0xcb50('0x2b')](function(_0x56e60a){if(_0x56e60a){_0x48a0cf['privacyEnabled']=_0x56e60a[_0xcb50('0x37')];}})[_0xcb50('0x2b')](function(){_0x48a0cf['updateMd5Password']();_0x48a0cf['updatePassword'](_0x202f96);})['catch'](function(_0x4ada28){_0x202f96(_0x4ada28);});},'beforeUpdate':function(_0x52ab35,_0x4f2757,_0xeb306f){Promise[_0xcb50('0x33')]()[_0xcb50('0x2b')](function(){if(_0x52ab35['changed'](_0xcb50('0x36'))===![])return;return _0x580312[_0xcb50('0x34')][_0xcb50('0x35')]({'where':{'id':_0x52ab35[_0xcb50('0x36')]}})[_0xcb50('0x2b')](function(_0x25e172){if(_0x25e172)_0x52ab35['privacyEnabled']=_0x25e172[_0xcb50('0x37')];return;});})['then'](function(){if(_0x52ab35[_0xcb50('0x38')](_0xcb50('0x14'))){_0x52ab35[_0xcb50('0x39')]();return _0x52ab35[_0xcb50('0x3a')](_0xeb306f);}_0xeb306f();})['catch'](function(_0xf20894){_0xeb306f(_0xf20894);});},'afterCreate':function(_0x5cba0e,_0x3e7030,_0x354309){var _0x3c1f0b=getUserApplications(_0x5cba0e,_0x5cba0e[_0xcb50('0x2c')]);if(_0x5cba0e[_0xcb50('0x2c')]!=_0x5cba0e['name']){_0x3c1f0b=_0x3c1f0b[_0xcb50('0x2d')](getUserApplications(_0x5cba0e,_0x5cba0e[_0xcb50('0x17')]));}return _0x580312[_0xcb50('0x3b')][_0xcb50('0x3c')](_0x3c1f0b)[_0xcb50('0x2b')](function(){if(_0x5cba0e['chanspy']){return getChanSpyPromise(_0x580312,_0x5cba0e);}})[_0xcb50('0x2b')](function(_0x24e993){if(_0x24e993&&_0x24e993['length']){return _0x580312[_0xcb50('0x3b')][_0xcb50('0x3c')](_0x24e993);}})[_0xcb50('0x2b')](function(){_0x354309();})[_0xcb50('0x2e')](function(_0x59fc28){_0x354309(_0x59fc28);});},'afterUpdate':function(_0x1aa23c,_0x22b2aa,_0x22827a){return BPromise[_0xcb50('0x33')]()[_0xcb50('0x2b')](function(){if(_0x1aa23c[_0xcb50('0x38')](_0xcb50('0xf'))||_0x1aa23c[_0xcb50('0x38')](_0xcb50('0x1d'))){return _0x580312[_0xcb50('0x3b')]['destroy']({'where':{'UserId':_0x1aa23c['id'],'type':_0xcb50('0x7'),'ChanSpyId':{'$ne':null}}})[_0xcb50('0x2b')](function(){if(_0x1aa23c['chanspy']){return getChanSpyPromise(_0x580312,_0x1aa23c)['then'](function(_0x1455f6){if(_0x1455f6&&_0x1455f6[_0xcb50('0x3d')]){return _0x580312[_0xcb50('0x3b')][_0xcb50('0x3c')](_0x1455f6);}});}});}})[_0xcb50('0x2b')](function(){if(_0x1aa23c[_0xcb50('0x38')]('extensionMonitor')||_0x1aa23c[_0xcb50('0x38')]('context')){return _0x580312[_0xcb50('0x3b')][_0xcb50('0x3e')]({'where':{'UserId':_0x1aa23c['id'],'type':_0xcb50('0x7'),'ChanSpyId':null}})['then'](function(){var _0x1de268=getUserApplications(_0x1aa23c,_0x1aa23c[_0xcb50('0x2c')]);if(_0x1aa23c[_0xcb50('0x2c')]!=_0x1aa23c[_0xcb50('0x17')]){_0x1de268=_0x1de268['concat'](getUserApplications(_0x1aa23c,_0x1aa23c[_0xcb50('0x17')]));}return _0x580312[_0xcb50('0x3b')][_0xcb50('0x3c')](_0x1de268);});}})[_0xcb50('0x2b')](function(){_0x22827a();})[_0xcb50('0x2e')](function(_0x264e69){_0x22827a(_0x264e69);});},'afterDestroy':function(_0x1ae684,_0x113406){return _0x580312[_0xcb50('0x3b')][_0xcb50('0x3e')]({'where':{'UserId':_0x1ae684['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x16e8fa,_0x24f71d){if(!_0x24f71d){return this[_0xcb50('0x14')]===this['encryptPassword'](_0x16e8fa);}var _0x170270=this;this[_0xcb50('0x3f')](_0x16e8fa,function(_0x2278a2,_0x2ef06e){if(_0x2278a2){_0x24f71d(_0x2278a2);}if(_0x170270[_0xcb50('0x14')]===_0x2ef06e){_0x24f71d(null,!![]);}else{_0x24f71d(null,![]);}});},'makeSalt':function(_0x116523,_0x21e406){var _0x2d47cb=0x10;if(typeof arguments[0x0]===_0xcb50('0x40')){_0x21e406=arguments[0x0];_0x116523=_0x2d47cb;}else if(typeof arguments[0x1]===_0xcb50('0x40')){_0x21e406=arguments[0x1];}else{throw new Error(_0xcb50('0x41'));}if(!_0x116523){_0x116523=_0x2d47cb;}return crypto[_0xcb50('0x42')](_0x116523,function(_0x14d412,_0x25b682){if(_0x14d412){_0x21e406(_0x14d412);}return _0x21e406(null,_0x25b682[_0xcb50('0x43')](_0xcb50('0x44')));});},'encryptPassword':function(_0x153efe,_0x273f7f){if(!_0x153efe||!this[_0xcb50('0x45')]){return _0x273f7f?_0x273f7f(null):null;}var _0x2f5c27=0x2710;var _0x12c2f1=0x40;var _0x11ef2d=new Buffer(this[_0xcb50('0x45')],'base64');if(!_0x273f7f){return crypto[_0xcb50('0x46')](_0x153efe,_0x11ef2d,_0x2f5c27,_0x12c2f1,'sha1')[_0xcb50('0x43')](_0xcb50('0x44'));}return crypto[_0xcb50('0x47')](_0x153efe,_0x11ef2d,_0x2f5c27,_0x12c2f1,'sha1',function(_0x2dde7a,_0x598845){if(_0x2dde7a){_0x273f7f(_0x2dde7a);}return _0x273f7f(null,_0x598845[_0xcb50('0x43')](_0xcb50('0x44')));});},'updatePassword':function(_0xbd8680){if(!this['password']){return _0xbd8680(null);}if(!validatePresenceOf(this[_0xcb50('0x14')])&&authTypes['indexOf'](this[_0xcb50('0x48')])===-0x1){_0xbd8680(new Error(_0xcb50('0x49')));}var _0x2c0777=this;this[_0xcb50('0x4a')](function(_0xf46dbb,_0x3f9369){if(_0xf46dbb){return _0xbd8680(_0xf46dbb);}_0x2c0777['salt']=_0x3f9369;_0x2c0777[_0xcb50('0x3f')](_0x2c0777[_0xcb50('0x14')],function(_0x59414d,_0x1f8662){if(_0x59414d){_0xbd8680(_0x59414d);}_0x2c0777[_0xcb50('0x14')]=_0x1f8662;_0xbd8680(null);});});},'updateMd5Password':function(){this[_0xcb50('0x4b')]=md5(this[_0xcb50('0x17')]+_0xcb50('0x4c')+this[_0xcb50('0x14')]);return this[_0xcb50('0x4b')];}}});};
\ No newline at end of file
+var _0x99c0=['_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','findAll','then','concat','define','User','utf8','find','userProfileId','updateMd5Password','updatePassword','privacyEnabled','changed','catch','internal','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','salt','base64','pbkdf2Sync','sha1','pbkdf2','indexOf','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','util','md5','length','from-sip','system','format','%s%s','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','recordingFormat','Authenticate','password','ChanSpy','name','StopMixMonitor','wav','WAV','context','CDR(type)=internal','extensionMonitor','includes'];(function(_0x2297af,_0x5f4bd5){var _0x581df6=function(_0x1fa835){while(--_0x1fa835){_0x2297af['push'](_0x2297af['shift']());}};_0x581df6(++_0x5f4bd5);}(_0x99c0,0x1ba));var _0x099c=function(_0x1cfca7,_0x5b73b4){_0x1cfca7=_0x1cfca7-0x0;var _0x3bf2fb=_0x99c0[_0x1cfca7];return _0x3bf2fb;};'use strict';var BPromise=require(_0x099c('0x0'));var crypto=require('crypto');var util=require(_0x099c('0x1'));var md5=require(_0x099c('0x2'));var _=require('lodash');var attributes=require('./user.attributes');var authTypes=['google'];var validatePresenceOf=function(_0x520465){return _0x520465&&_0x520465[_0x099c('0x3')];};var getChanSpyApplications=function(_0x286851,_0x4ab93d,_0x38bf9f){var _0x59ef06={'context':_0x286851['context']||_0x099c('0x4'),'type':_0x099c('0x5'),'isApp':![],'UserId':_0x286851['id']};var _0x39120d=[];for(var _0x5c903e=0x0,_0x2a5355=0x1;_0x5c903e<_0x38bf9f[_0x099c('0x3')];_0x5c903e++,_0x2a5355=0x1){var _0x1d9d18={'exten':util[_0x099c('0x6')](_0x099c('0x7'),_0x38bf9f[_0x5c903e]['prefix'],_0x4ab93d),'ChanSpyId':_0x38bf9f[_0x5c903e]['id']};_0x39120d[_0x099c('0x8')](_[_0x099c('0x9')]({'app':_0x099c('0xa'),'appdata':util['format'](_0x099c('0xb'),_0x099c('0xc')),'priority':_0x2a5355++},_0x59ef06,_0x1d9d18));if(_0x38bf9f[_0x5c903e][_0x099c('0xd')]){_0x39120d[_0x099c('0x8')](_['merge']({'app':_0x099c('0xe'),'appdata':util['format']('${UNIQUEID}.%s,a',_0x38bf9f[_0x5c903e][_0x099c('0xf')]),'priority':_0x2a5355++},_0x59ef06,_0x1d9d18));}if(_0x38bf9f[_0x5c903e]['auth']){_0x39120d['push'](_[_0x099c('0x9')]({'app':_0x099c('0x10'),'appdata':_0x38bf9f[_0x5c903e][_0x099c('0x11')],'priority':_0x2a5355++},_0x59ef06,_0x1d9d18));}_0x39120d[_0x099c('0x8')](_[_0x099c('0x9')]({'app':_0x099c('0x12'),'appdata':util[_0x099c('0x6')]('SIP/%s,%s',_0x286851[_0x099c('0x13')],_0x38bf9f[_0x5c903e]['options']?_0x38bf9f[_0x5c903e]['options']['join'](''):''),'priority':_0x2a5355++},_0x59ef06,_0x1d9d18));if(_0x38bf9f[_0x5c903e][_0x099c('0xd')]){_0x39120d[_0x099c('0x8')](_[_0x099c('0x9')]({'app':_0x099c('0x14'),'priority':_0x2a5355++},_0x59ef06,_0x1d9d18));}}return _0x39120d;};var getUserApplications=function(_0x4f5eb4,_0x4256b6){var _0x266447=[_0x099c('0x15'),_0x099c('0x16'),'gsm'];var _0x3f702c={'context':_0x4f5eb4[_0x099c('0x17')]||_0x099c('0x4'),'exten':_0x4256b6,'type':'system','isApp':![],'UserId':_0x4f5eb4['id']};var _0x45d93e=[{'app':_0x099c('0xa'),'appdata':_0x099c('0x18')}];if(_0x4f5eb4[_0x099c('0x19')]&&_[_0x099c('0x1a')](_0x266447,_0x4f5eb4[_0x099c('0x19')])){_0x45d93e[_0x099c('0x8')]({'app':'Set','appdata':_0x099c('0x1b')});_0x45d93e[_0x099c('0x8')]({'app':_0x099c('0xa'),'appdata':util[_0x099c('0x6')](_0x099c('0x1c'),_0x4f5eb4[_0x099c('0x19')])});_0x45d93e[_0x099c('0x8')]({'app':_0x099c('0x1d'),'appdata':util[_0x099c('0x6')](_0x099c('0x1e'),_0x4f5eb4[_0x099c('0x13')])});}else{_0x45d93e[_0x099c('0x8')]({'app':'Dial','appdata':util['format'](_0x099c('0x1f'),_0x4f5eb4[_0x099c('0x13')])});}_0x45d93e['push']({'app':_0x099c('0x20')});for(var _0x19b380=0x0;_0x19b380<_0x45d93e[_0x099c('0x3')];_0x19b380++){_0x45d93e[_0x19b380][_0x099c('0x21')]=_0x19b380+0x1;_0x45d93e[_0x19b380]=_[_0x099c('0x22')](_0x45d93e[_0x19b380],_0x3f702c);}return _0x45d93e;};var getChanSpyPromise=function(_0x595055,_0x48e600){return new BPromise(function(_0x3f9c44,_0x31f9c3){return _0x595055['VoiceChanSpy'][_0x099c('0x23')]()[_0x099c('0x24')](function(_0x342715){if(_0x342715){var _0x55d55=getChanSpyApplications(_0x48e600,_0x48e600['internal'],_0x342715);if(_0x48e600['internal']!=_0x48e600[_0x099c('0x13')]){_0x55d55=_0x55d55[_0x099c('0x25')](getChanSpyApplications(_0x48e600,_0x48e600[_0x099c('0x13')],_0x342715));}return _0x3f9c44(_0x55d55);}return _0x3f9c44([]);})['catch'](function(_0x2b5387){_0x31f9c3(_0x2b5387);});});};module['exports']=function(_0x23484d,_0x34bf1e){var _0xff9c6b=_0x23484d['models'];return _0x23484d[_0x099c('0x26')](_0x099c('0x27'),attributes,{'tableName':'users','charset':_0x099c('0x28'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x61ac5c,_0x4d1da9,_0x31b3e2){var _0x464f9a=typeof _0x61ac5c['userProfileId']==='undefined'?BPromise['resolve'](null):_0xff9c6b['UserProfile'][_0x099c('0x29')]({'where':{'id':_0x61ac5c[_0x099c('0x2a')]}});_0x464f9a[_0x099c('0x24')](function(_0x427d36){if(_0x427d36){_0x61ac5c['privacyEnabled']=_0x427d36['privacyEnabled'];}})['then'](function(){_0x61ac5c[_0x099c('0x2b')]();_0x61ac5c[_0x099c('0x2c')](_0x31b3e2);})['catch'](function(_0x9cf3c3){_0x31b3e2(_0x9cf3c3);});},'beforeUpdate':function(_0x45b4e4,_0x2ab606,_0x1135b8){Promise['resolve']()[_0x099c('0x24')](function(){if(_0x45b4e4['changed'](_0x099c('0x2a'))===![])return;return _0xff9c6b['UserProfile'][_0x099c('0x29')]({'where':{'id':_0x45b4e4[_0x099c('0x2a')]}})[_0x099c('0x24')](function(_0x3e9d53){if(_0x3e9d53)_0x45b4e4[_0x099c('0x2d')]=_0x3e9d53[_0x099c('0x2d')];return;});})[_0x099c('0x24')](function(){if(_0x45b4e4[_0x099c('0x2e')](_0x099c('0x11'))){_0x45b4e4[_0x099c('0x2b')]();return _0x45b4e4[_0x099c('0x2c')](_0x1135b8);}_0x1135b8();})[_0x099c('0x2f')](function(_0x1421da){_0x1135b8(_0x1421da);});},'afterCreate':function(_0x5abb68,_0xadf10b,_0x4593f2){var _0x923a0=getUserApplications(_0x5abb68,_0x5abb68[_0x099c('0x30')]);if(_0x5abb68[_0x099c('0x30')]!=_0x5abb68[_0x099c('0x13')]){_0x923a0=_0x923a0[_0x099c('0x25')](getUserApplications(_0x5abb68,_0x5abb68[_0x099c('0x13')]));}return _0xff9c6b[_0x099c('0x31')][_0x099c('0x32')](_0x923a0)['then'](function(){if(_0x5abb68[_0x099c('0xc')]){return getChanSpyPromise(_0xff9c6b,_0x5abb68);}})[_0x099c('0x24')](function(_0x1ef6e7){if(_0x1ef6e7&&_0x1ef6e7[_0x099c('0x3')]){return _0xff9c6b[_0x099c('0x31')][_0x099c('0x32')](_0x1ef6e7);}})[_0x099c('0x24')](function(){_0x4593f2();})[_0x099c('0x2f')](function(_0x30b100){_0x4593f2(_0x30b100);});},'afterUpdate':function(_0x547662,_0xd0ae7d,_0x2ccb62){return BPromise['resolve']()['then'](function(){if(_0x547662[_0x099c('0x2e')]('chanspy')||_0x547662[_0x099c('0x2e')](_0x099c('0x17'))){return _0xff9c6b[_0x099c('0x31')]['destroy']({'where':{'UserId':_0x547662['id'],'type':_0x099c('0x5'),'ChanSpyId':{'$ne':null}}})[_0x099c('0x24')](function(){if(_0x547662[_0x099c('0xc')]){return getChanSpyPromise(_0xff9c6b,_0x547662)[_0x099c('0x24')](function(_0x3902fd){if(_0x3902fd&&_0x3902fd[_0x099c('0x3')]){return _0xff9c6b[_0x099c('0x31')]['bulkCreate'](_0x3902fd);}});}});}})[_0x099c('0x24')](function(){if(_0x547662[_0x099c('0x2e')](_0x099c('0x19'))||_0x547662['changed'](_0x099c('0x17'))){return _0xff9c6b[_0x099c('0x31')]['destroy']({'where':{'UserId':_0x547662['id'],'type':_0x099c('0x5'),'ChanSpyId':null}})['then'](function(){var _0x4a9d62=getUserApplications(_0x547662,_0x547662[_0x099c('0x30')]);if(_0x547662[_0x099c('0x30')]!=_0x547662['name']){_0x4a9d62=_0x4a9d62['concat'](getUserApplications(_0x547662,_0x547662[_0x099c('0x13')]));}return _0xff9c6b[_0x099c('0x31')][_0x099c('0x32')](_0x4a9d62);});}})[_0x099c('0x24')](function(){_0x2ccb62();})[_0x099c('0x2f')](function(_0x1c6622){_0x2ccb62(_0x1c6622);});},'afterDestroy':function(_0x455d18,_0x3ec265){return _0xff9c6b[_0x099c('0x31')][_0x099c('0x33')]({'where':{'UserId':_0x455d18['id'],'type':_0x099c('0x5')}});}},'instanceMethods':{'authenticate':function(_0x57ee21,_0x9b5bd5){if(!_0x9b5bd5){return this[_0x099c('0x11')]===this[_0x099c('0x34')](_0x57ee21);}var _0x59fabc=this;this[_0x099c('0x34')](_0x57ee21,function(_0x223b49,_0x26df52){if(_0x223b49){_0x9b5bd5(_0x223b49);}if(_0x59fabc[_0x099c('0x11')]===_0x26df52){_0x9b5bd5(null,!![]);}else{_0x9b5bd5(null,![]);}});},'makeSalt':function(_0x289b51,_0x7c5d79){var _0x234e91=0x10;if(typeof arguments[0x0]==='function'){_0x7c5d79=arguments[0x0];_0x289b51=_0x234e91;}else if(typeof arguments[0x1]===_0x099c('0x35')){_0x7c5d79=arguments[0x1];}else{throw new Error(_0x099c('0x36'));}if(!_0x289b51){_0x289b51=_0x234e91;}return crypto[_0x099c('0x37')](_0x289b51,function(_0x223519,_0x4a46aa){if(_0x223519){_0x7c5d79(_0x223519);}return _0x7c5d79(null,_0x4a46aa[_0x099c('0x38')]('base64'));});},'encryptPassword':function(_0x5826d5,_0x4a9231){if(!_0x5826d5||!this[_0x099c('0x39')]){return _0x4a9231?_0x4a9231(null):null;}var _0x176e37=0x2710;var _0x792afc=0x40;var _0x4b0ada=new Buffer(this[_0x099c('0x39')],_0x099c('0x3a'));if(!_0x4a9231){return crypto[_0x099c('0x3b')](_0x5826d5,_0x4b0ada,_0x176e37,_0x792afc,_0x099c('0x3c'))['toString'](_0x099c('0x3a'));}return crypto[_0x099c('0x3d')](_0x5826d5,_0x4b0ada,_0x176e37,_0x792afc,'sha1',function(_0x27b50f,_0x4e0bba){if(_0x27b50f){_0x4a9231(_0x27b50f);}return _0x4a9231(null,_0x4e0bba[_0x099c('0x38')](_0x099c('0x3a')));});},'updatePassword':function(_0x80c24c){if(!this['password']){return _0x80c24c(null);}if(!validatePresenceOf(this[_0x099c('0x11')])&&authTypes[_0x099c('0x3e')](this['provider'])===-0x1){_0x80c24c(new Error(_0x099c('0x3f')));}var _0x3ae6dc=this;this[_0x099c('0x40')](function(_0x4913b3,_0x4f9c14){if(_0x4913b3){return _0x80c24c(_0x4913b3);}_0x3ae6dc[_0x099c('0x39')]=_0x4f9c14;_0x3ae6dc[_0x099c('0x34')](_0x3ae6dc[_0x099c('0x11')],function(_0x145ee4,_0x5d7027){if(_0x145ee4){_0x80c24c(_0x145ee4);}_0x3ae6dc[_0x099c('0x11')]=_0x5d7027;_0x80c24c(null);});});},'updateMd5Password':function(){this[_0x099c('0x41')]=md5(this[_0x099c('0x13')]+_0x099c('0x42')+this[_0x099c('0x11')]);return this['md5secret'];}}});};
\ No newline at end of file
index d1dfa3c..c71dc78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c3b=['LOGININPAUSE','concat','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','User,\x20%s,\x20%s','request\x20sent','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetUser','User','options','raw','where','attributes','limit','include','map','model','debug','find','ShowUser','PauseUser','internal','UserVoiceQueueRt','update','name','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','push','isNil','interface','format','SIP/%s','type','DEFAULT\x20PAUSE','role','body','uniqueid','MemberReport','bulkCreate','UnpauseUser','channel','isValidChannel','voice','system','mail','chat','sms','openchannel','whatsapp','set','%s%s','findAll','all','findOne','destroy','LoginUser','phone','loginInPause','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','merge'];(function(_0x490864,_0x250abd){var _0xd902d4=function(_0x1e3da3){while(--_0x1e3da3){_0x490864['push'](_0x490864['shift']());}};_0xd902d4(++_0x250abd);}(_0x1c3b,0x122));var _0xb1c3=function(_0x18ff3a,_0x385357){_0x18ff3a=_0x18ff3a-0x0;var _0x59a012=_0x1c3b[_0x18ff3a];return _0x59a012;};'use strict';var _=require(_0xb1c3('0x0'));var util=require(_0xb1c3('0x1'));var moment=require(_0xb1c3('0x2'));var BPromise=require(_0xb1c3('0x3'));var rs=require(_0xb1c3('0x4'));var fs=require('fs');var Redis=require(_0xb1c3('0x5'));var db=require(_0xb1c3('0x6'))['db'];var utils=require(_0xb1c3('0x7'));var logger=require(_0xb1c3('0x8'))(_0xb1c3('0x9'));var config=require(_0xb1c3('0xa'));var jayson=require(_0xb1c3('0xb'));var client=jayson[_0xb1c3('0xc')][_0xb1c3('0xd')]({'port':0x232a});config[_0xb1c3('0xe')]=_[_0xb1c3('0xf')](config[_0xb1c3('0xe')],{'host':_0xb1c3('0x10'),'port':0x18eb});var socket=require(_0xb1c3('0x11'))(new Redis(config[_0xb1c3('0xe')]));require('./user.socket')[_0xb1c3('0x12')](socket);function respondWithRpcPromise(_0x58b038,_0x3b4d1e,_0x96a19f){return new BPromise(function(_0x515b4b,_0x383742){return client[_0xb1c3('0x13')](_0x58b038,_0x96a19f)[_0xb1c3('0x14')](function(_0x4ce5bf){logger[_0xb1c3('0x15')](_0xb1c3('0x16'),_0x3b4d1e,_0xb1c3('0x17'));logger['debug'](_0xb1c3('0x18'),_0x3b4d1e,_0xb1c3('0x17'),JSON[_0xb1c3('0x19')](_0x4ce5bf));if(_0x4ce5bf[_0xb1c3('0x1a')]){if(_0x4ce5bf[_0xb1c3('0x1a')][_0xb1c3('0x1b')]===0x1f4){logger[_0xb1c3('0x1a')](_0xb1c3('0x16'),_0x3b4d1e,_0x4ce5bf[_0xb1c3('0x1a')][_0xb1c3('0x1c')]);return _0x383742(_0x4ce5bf['error']['message']);}logger[_0xb1c3('0x1a')](_0xb1c3('0x16'),_0x3b4d1e,_0x4ce5bf[_0xb1c3('0x1a')][_0xb1c3('0x1c')]);return _0x515b4b(_0x4ce5bf[_0xb1c3('0x1a')][_0xb1c3('0x1c')]);}else{logger[_0xb1c3('0x15')](_0xb1c3('0x16'),_0x3b4d1e,_0xb1c3('0x17'));_0x515b4b(_0x4ce5bf[_0xb1c3('0x1d')][_0xb1c3('0x1c')]);}})[_0xb1c3('0x1e')](function(_0x2d70a6){logger['error']('User,\x20%s,\x20%s',_0x3b4d1e,_0x2d70a6);_0x383742(_0x2d70a6);});});}exports[_0xb1c3('0x1f')]=function(_0x5136b5){var _0x36819c=this;return new Promise(function(_0xce073d,_0x5bb85f){return db[_0xb1c3('0x20')]['findAll']({'raw':_0x5136b5[_0xb1c3('0x21')]?_0x5136b5[_0xb1c3('0x21')][_0xb1c3('0x22')]===undefined?!![]:![]:!![],'where':_0x5136b5[_0xb1c3('0x21')]?_0x5136b5[_0xb1c3('0x21')][_0xb1c3('0x23')]||null:null,'attributes':_0x5136b5[_0xb1c3('0x21')]?_0x5136b5['options'][_0xb1c3('0x24')]||null:null,'limit':_0x5136b5[_0xb1c3('0x21')]?_0x5136b5['options'][_0xb1c3('0x25')]||null:null,'include':_0x5136b5[_0xb1c3('0x21')]?_0x5136b5['options'][_0xb1c3('0x26')]?_[_0xb1c3('0x27')](_0x5136b5[_0xb1c3('0x21')][_0xb1c3('0x26')],function(_0x24e0fe){return{'model':db[_0x24e0fe[_0xb1c3('0x28')]],'as':_0x24e0fe['as'],'attributes':_0x24e0fe['attributes'],'include':_0x24e0fe[_0xb1c3('0x26')]?_[_0xb1c3('0x27')](_0x24e0fe[_0xb1c3('0x26')],function(_0xdb5fe1){return{'model':db[_0xdb5fe1[_0xb1c3('0x28')]],'as':_0xdb5fe1['as'],'attributes':_0xdb5fe1['attributes'],'include':_0xdb5fe1[_0xb1c3('0x26')]?_[_0xb1c3('0x27')](_0xdb5fe1[_0xb1c3('0x26')],function(_0x313f44){return{'model':db[_0x313f44[_0xb1c3('0x28')]],'as':_0x313f44['as'],'attributes':_0x313f44['attributes']};}):[]};}):[]};}):[]:[]})[_0xb1c3('0x14')](function(_0x516f84){logger[_0xb1c3('0x15')](_0xb1c3('0x1f'),_0x5136b5);logger[_0xb1c3('0x29')](_0xb1c3('0x1f'),_0x5136b5,JSON['stringify'](_0x516f84));_0xce073d(_0x516f84);})[_0xb1c3('0x1e')](function(_0x4342f0){logger[_0xb1c3('0x1a')](_0xb1c3('0x1f'),_0x4342f0['message'],_0x5136b5);_0x5bb85f(_0x36819c['error'](0x1f4,_0x4342f0[_0xb1c3('0x1c')]));});});};exports['ShowUser']=function(_0x56090c){var _0x20714b=this;return new Promise(function(_0x27b3b4,_0x220a6b){return db[_0xb1c3('0x20')][_0xb1c3('0x2a')]({'raw':_0x56090c[_0xb1c3('0x21')]?_0x56090c[_0xb1c3('0x21')]['raw']===undefined?!![]:![]:!![],'where':_0x56090c[_0xb1c3('0x21')]?_0x56090c[_0xb1c3('0x21')][_0xb1c3('0x23')]||null:null,'attributes':_0x56090c[_0xb1c3('0x21')]?_0x56090c[_0xb1c3('0x21')][_0xb1c3('0x24')]||null:null,'include':_0x56090c[_0xb1c3('0x21')]?_0x56090c['options'][_0xb1c3('0x26')]?_[_0xb1c3('0x27')](_0x56090c['options'][_0xb1c3('0x26')],function(_0xc3f88){return{'model':db[_0xc3f88[_0xb1c3('0x28')]],'as':_0xc3f88['as'],'attributes':_0xc3f88[_0xb1c3('0x24')],'include':_0xc3f88[_0xb1c3('0x26')]?_[_0xb1c3('0x27')](_0xc3f88[_0xb1c3('0x26')],function(_0x192b54){return{'model':db[_0x192b54[_0xb1c3('0x28')]],'as':_0x192b54['as'],'attributes':_0x192b54[_0xb1c3('0x24')],'include':_0x192b54[_0xb1c3('0x26')]?_['map'](_0x192b54[_0xb1c3('0x26')],function(_0x372e84){return{'model':db[_0x372e84[_0xb1c3('0x28')]],'as':_0x372e84['as'],'attributes':_0x372e84['attributes']};}):[]};}):[]};}):[]:[]})[_0xb1c3('0x14')](function(_0x294b34){logger['info'](_0xb1c3('0x2b'),_0x56090c);logger[_0xb1c3('0x29')]('ShowUser',_0x56090c,JSON[_0xb1c3('0x19')](_0x294b34));_0x27b3b4(_0x294b34);})[_0xb1c3('0x1e')](function(_0x5b768a){logger[_0xb1c3('0x1a')]('ShowUser',_0x5b768a[_0xb1c3('0x1c')],_0x56090c);_0x220a6b(_0x20714b[_0xb1c3('0x1a')](0x1f4,_0x5b768a[_0xb1c3('0x1c')]));});});};exports[_0xb1c3('0x2c')]=function(_0x4921ff){var _0x2f0018=this;return new Promise(function(_0x162495,_0x1ae52d){var _0x2c651c;return db[_0xb1c3('0x20')][_0xb1c3('0x2a')]({'where':_0x4921ff[_0xb1c3('0x21')][_0xb1c3('0x23')]||{},'attributes':['id','name','role',_0xb1c3('0x2d'),'interface']})['then'](function(_0x58f0cb){if(_0x58f0cb){_0x2c651c=_0x58f0cb;return db[_0xb1c3('0x2e')][_0xb1c3('0x2f')]({'paused':0x1},{'where':{'UserId':_0x2c651c['id']},'individualHooks':!![]});}})[_0xb1c3('0x14')](function(){if(_0x2c651c){return db['MemberReport']['findAll']({'where':{'membername':_0x2c651c[_0xb1c3('0x30')],'type':_0xb1c3('0x31'),'exitAt':null}});}})['then'](function(_0x58c2cd){if(_0x2c651c){if(_0x58c2cd&&_0x58c2cd[_0xb1c3('0x32')]){var _0x491225=moment()['format'](_0xb1c3('0x33'));for(var _0x3e0c32=0x0,_0x4a420b=_0x58c2cd['length'];_0x3e0c32<_0x4a420b;_0x3e0c32++){_0x58c2cd[_0x3e0c32][_0xb1c3('0x34')]({'exitAt':_0x491225});}}}})[_0xb1c3('0x14')](function(){if(_0x2c651c){var _0x3d16f7=[];var _0x252726=utils[_0xb1c3('0x35')]();_0x252726[_0xb1c3('0x36')](function(_0x2e10a8){_0x3d16f7[_0xb1c3('0x37')]({'channel':_0x2e10a8,'membername':_0x2c651c[_0xb1c3('0x30')],'interface':_[_0xb1c3('0x38')](_0x2c651c[_0xb1c3('0x39')])?util[_0xb1c3('0x3a')](_0xb1c3('0x3b'),_0x2c651c[_0xb1c3('0x30')]):_0x2c651c['interface'],'type':_0xb1c3('0x31'),'enterAt':moment()[_0xb1c3('0x3a')](_0xb1c3('0x33')),'data1':_0x4921ff['body'][_0xb1c3('0x3c')]||_0xb1c3('0x3d'),'role':_0x2c651c[_0xb1c3('0x3e')],'internal':_0x2c651c[_0xb1c3('0x2d')],'uniqueid':_0x4921ff[_0xb1c3('0x3f')][_0xb1c3('0x40')]||null});});return db[_0xb1c3('0x41')][_0xb1c3('0x42')](_0x3d16f7,{'individualHooks':!![]});}})[_0xb1c3('0x14')](function(){if(_0x2c651c){return _0x2c651c[_0xb1c3('0x2f')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x4921ff[_0xb1c3('0x3f')][_0xb1c3('0x3c')]||_0xb1c3('0x3d'),'lastPauseAt':moment()[_0xb1c3('0x3a')](_0xb1c3('0x33'))});}})[_0xb1c3('0x14')](function(_0x53df49){_0x162495(_0x53df49);})[_0xb1c3('0x1e')](function(_0x27fe50){_0x1ae52d(_0x2f0018['error'](0x1f4,_0x27fe50['message']));});});};exports[_0xb1c3('0x43')]=function(_0x3d4017){var _0x220f78=this;return new Promise(function(_0x1bbea2,_0x450a0e){var _0x26314c;return db[_0xb1c3('0x20')]['findOne']({'where':_0x3d4017[_0xb1c3('0x21')][_0xb1c3('0x23')]||{},'attributes':['id',_0xb1c3('0x30')]})['then'](function(_0x292cf5){if(_0x292cf5){_0x26314c=_0x292cf5;if(_0x3d4017[_0xb1c3('0x3f')][_0xb1c3('0x44')]&&!utils[_0xb1c3('0x45')](_0x3d4017[_0xb1c3('0x3f')][_0xb1c3('0x44')])){throw new Error('Unknown\x20channel');}switch(_0x3d4017['body'][_0xb1c3('0x44')]){case _0xb1c3('0x46'):return db[_0xb1c3('0x2e')]['update']({'paused':0x0},{'where':{'UserId':_0x26314c['id']}})[_0xb1c3('0x14')](function(){return db[_0xb1c3('0x41')][_0xb1c3('0x2a')]({'where':{'channel':_0x3d4017[_0xb1c3('0x3f')]['channel'],'membername':_0x26314c['name'],'type':_0xb1c3('0x31'),'exitAt':null}});})['then'](function(_0x4bc9ec){if(_0x4bc9ec){return _0x4bc9ec[_0xb1c3('0x2f')]({'exitAt':moment()[_0xb1c3('0x3a')](_0xb1c3('0x33')),'data2':_0xb1c3('0x47')},{'individualHooks':!![]});}return null;})[_0xb1c3('0x14')](function(){return _0x26314c[_0xb1c3('0x2f')]({'voicePause':![]});});case _0xb1c3('0x48'):case _0xb1c3('0x49'):case'fax':case _0xb1c3('0x4a'):case _0xb1c3('0x4b'):case _0xb1c3('0x4c'):return db['MemberReport'][_0xb1c3('0x2a')]({'where':{'channel':_0x3d4017[_0xb1c3('0x3f')][_0xb1c3('0x44')],'membername':_0x26314c['name'],'type':_0xb1c3('0x31'),'exitAt':null}})[_0xb1c3('0x14')](function(_0x1df2c6){return _0x1df2c6[_0xb1c3('0x2f')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xb1c3('0x47')},{'individualHooks':!![]});})[_0xb1c3('0x14')](function(){var _0x2cc761={};_[_0xb1c3('0x4d')](_0x2cc761,util['format'](_0xb1c3('0x4e'),_0x3d4017[_0xb1c3('0x3f')][_0xb1c3('0x44')],'Pause'),![]);return _0x26314c[_0xb1c3('0x2f')](_0x2cc761);});default:return db[_0xb1c3('0x2e')][_0xb1c3('0x2f')]({'paused':0x0},{'where':{'UserId':_0x26314c['id']}})['then'](function(){return db[_0xb1c3('0x41')][_0xb1c3('0x4f')]({'where':{'membername':_0x26314c['name'],'type':_0xb1c3('0x31'),'exitAt':null}});})[_0xb1c3('0x14')](function(_0x1e8b62){var _0x12ed4a=[];_0x1e8b62[_0xb1c3('0x36')](function(_0x4f6fb9){_0x12ed4a[_0xb1c3('0x37')](_0x4f6fb9['update']({'exitAt':moment()['format'](_0xb1c3('0x33')),'data2':_0xb1c3('0x47')}));});return BPromise[_0xb1c3('0x50')](_0x12ed4a);})[_0xb1c3('0x14')](function(){return _0x26314c['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})['then'](function(_0x508909){_0x1bbea2(_0x508909);})['catch'](function(_0x40bfc4){_0x450a0e(_0x220f78[_0xb1c3('0x1a')](0x1f4,_0x40bfc4[_0xb1c3('0x1c')]));});});};exports['LogoutUser']=function(_0x5b4e90){var _0x199bd1=this;return new Promise(function(_0x45d401,_0x12bdf2){var _0x3615c9;return db[_0xb1c3('0x20')][_0xb1c3('0x51')]({'where':_0x5b4e90[_0xb1c3('0x21')][_0xb1c3('0x23')]||{},'attributes':['id','name']})[_0xb1c3('0x14')](function(_0x36145d){if(_0x36145d){_0x3615c9=_0x36145d;return db[_0xb1c3('0x2e')][_0xb1c3('0x52')]({'where':{'membername':_0x3615c9['name']},'individualHooks':!![]});}})[_0xb1c3('0x14')](function(){if(_0x3615c9){return db['MemberReport'][_0xb1c3('0x4f')]({'where':{'membername':_0x3615c9[_0xb1c3('0x30')],'exitAt':null}});}})[_0xb1c3('0x14')](function(_0x2bd597){if(_0x3615c9){if(_0x2bd597&&_0x2bd597[_0xb1c3('0x32')]){var _0x1e8d27=[];_0x2bd597[_0xb1c3('0x36')](function(_0x5a93fe){_0x1e8d27[_0xb1c3('0x37')](_0x5a93fe[_0xb1c3('0x2f')]({'exitAt':moment()[_0xb1c3('0x3a')](_0xb1c3('0x33'))}));});return BPromise[_0xb1c3('0x50')](_0x1e8d27);}}})[_0xb1c3('0x14')](function(){if(_0x3615c9){return _0x3615c9[_0xb1c3('0x2f')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xb1c3('0x14')](function(_0x4a8c03){_0x45d401(_0x4a8c03);})[_0xb1c3('0x1e')](function(_0x5c8652){_0x12bdf2(_0x199bd1[_0xb1c3('0x1a')](0x1f4,_0x5c8652[_0xb1c3('0x1c')]));});});};exports[_0xb1c3('0x53')]=function(_0x4a88cb){var _0x1ecfd0=this;return new Promise(function(_0xbc0f84,_0x523977){var _0x1d12a6;var _0x2b5159;var _0x2d20b7;var _0x2cb576;return db[_0xb1c3('0x20')][_0xb1c3('0x51')]({'where':_0x4a88cb[_0xb1c3('0x21')][_0xb1c3('0x23')]||{},'attributes':['id',_0xb1c3('0x30'),_0xb1c3('0x3e'),'mobile',_0xb1c3('0x54'),_0xb1c3('0x2d'),_0xb1c3('0x55'),_0xb1c3('0x39')]})[_0xb1c3('0x14')](function(_0x51cfa9){if(_0x51cfa9){_0x1d12a6=_0x51cfa9;_0x2cb576=_0x4a88cb['body'][_0xb1c3('0x39')]?_0x4a88cb[_0xb1c3('0x3f')][_0xb1c3('0x39')]:util[_0xb1c3('0x3a')](_0xb1c3('0x3b'),_0x1d12a6[_0xb1c3('0x30')]);return db[_0xb1c3('0x20')]['count']({'where':{'role':_0xb1c3('0x56'),'online':!![],'id':{'$ne':_0x1d12a6['id']}}});}})[_0xb1c3('0x14')](function(_0x25788d){if(_0x25788d){_0x2d20b7=_0x25788d;return require(_0xb1c3('0x57'))[_0xb1c3('0x58')]();}})[_0xb1c3('0x14')](function(_0x3606f1){if(_0x3606f1&&_0x3606f1[_0xb1c3('0x59')]&&_0x2d20b7>=_0x3606f1[_0xb1c3('0x59')]){throw new Error(_0xb1c3('0x5a'));}})[_0xb1c3('0x14')](function(){if(_0x1d12a6){return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x1d12a6[_0xb1c3('0x30')]},'individualHooks':!![]});}})[_0xb1c3('0x14')](function(){if(_0x1d12a6){return _0x1d12a6[_0xb1c3('0x5b')]({'raw':!![]});}})['then'](function(_0x5da525){if(_0x1d12a6){if(_0x5da525){var _0x22ef82=[];_0x2b5159=_0x5da525;if(_0x2b5159[_0xb1c3('0x32')]){for(var _0xb5105e=0x0;_0xb5105e<_0x2b5159['length'];_0xb5105e++){_0x22ef82[_0xb1c3('0x37')](db[_0xb1c3('0x2e')][_0xb1c3('0x5c')]({'membername':_0x1d12a6[_0xb1c3('0x30')],'UserId':_0x1d12a6['id'],'queue_name':_0x2b5159[_0xb5105e]['name'],'VoiceQueueId':_0x2b5159[_0xb5105e]['id'],'interface':_0x2cb576,'paused':_0x1d12a6['loginInPause']||![],'penalty':_0x2b5159[_0xb5105e]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0xb1c3('0x50')](_0x22ef82);}}}})['then'](function(){if(_0x1d12a6){return db[_0xb1c3('0x41')]['findAll']({'where':{'membername':_0x1d12a6[_0xb1c3('0x30')],'exitAt':null}});}})[_0xb1c3('0x14')](function(_0x564ef3){if(_0x1d12a6){if(_0x564ef3&&_0x564ef3[_0xb1c3('0x32')]){var _0x199e8e=[];_0x564ef3[_0xb1c3('0x36')](function(_0xa0928f){_0x199e8e['push'](_0xa0928f[_0xb1c3('0x2f')]({'exitAt':moment()[_0xb1c3('0x3a')](_0xb1c3('0x33'))}));});return BPromise['all'](_0x199e8e);}}})[_0xb1c3('0x14')](function(_0x4219f2){if(_0x1d12a6){var _0x5939d3=[];var _0x47e111=[];var _0x4e1ce3=utils[_0xb1c3('0x35')]();var _0xd3c459={'membername':_0x1d12a6[_0xb1c3('0x30')],'interface':_0x2cb576,'enterAt':moment()[_0xb1c3('0x3a')](_0xb1c3('0x33')),'role':_0x1d12a6[_0xb1c3('0x3e')],'internal':_0x1d12a6[_0xb1c3('0x2d')]};_0x4e1ce3['forEach'](function(_0x41222b){_0x5939d3[_0xb1c3('0x37')](_[_0xb1c3('0x5d')]({'channel':_0x41222b,'type':'LOGIN','data1':'callysquare','data2':_0x2cb576},_0xd3c459));if(_0x1d12a6[_0xb1c3('0x55')]){_0x47e111['push'](_['merge']({'channel':_0x41222b,'type':_0xb1c3('0x31'),'data1':_0xb1c3('0x5e')},_0xd3c459));}});return db[_0xb1c3('0x41')][_0xb1c3('0x42')](_0x5939d3[_0xb1c3('0x5f')](_0x47e111),{'individualHooks':!![]});}})['then'](function(){if(_0x1d12a6){return _0x1d12a6['update']({'online':!![],'lastLoginAt':moment()[_0xb1c3('0x3a')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x1d12a6[_0xb1c3('0x55')]||![],'mailPause':_0x1d12a6['loginInPause']||![],'chatPause':_0x1d12a6[_0xb1c3('0x55')]||![],'faxPause':_0x1d12a6[_0xb1c3('0x55')]||![],'smsPause':_0x1d12a6['loginInPause']||![],'openchannelPause':_0x1d12a6[_0xb1c3('0x55')]||![],'pauseType':_0x1d12a6[_0xb1c3('0x55')]?_0xb1c3('0x5e'):null,'lastPauseAt':moment()[_0xb1c3('0x3a')](_0xb1c3('0x33')),'interface':_0x2cb576});}})[_0xb1c3('0x14')](function(_0x14c24f){_0xbc0f84(_0x14c24f);})[_0xb1c3('0x1e')](function(_0x72daac){_0x523977(_0x1ecfd0['error'](0x1f4,_0x72daac['message']));});});};
\ No newline at end of file
+var _0x2cbf=['map','model','GetUser','ShowUser','find','PauseUser','where','name','role','internal','interface','UserVoiceQueueRt','update','findAll','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','format','SIP/%s','body','uniqueid','MemberReport','bulkCreate','type','findOne','channel','isValidChannel','voice','system','fax','openchannel','whatsapp','set','%s%s','Pause','push','all','LogoutUser','destroy','LoginUser','mobile','phone','loginInPause','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','merge','LOGIN','callysquare','LOGININPAUSE','concat','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','./user.socket','register','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','User','options','raw','attributes','limit','include'];(function(_0x25efc8,_0x2d7c01){var _0x5d4ad7=function(_0x4aa37d){while(--_0x4aa37d){_0x25efc8['push'](_0x25efc8['shift']());}};_0x5d4ad7(++_0x2d7c01);}(_0x2cbf,0x156));var _0xf2cb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2cbf[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf2cb('0x0'));var util=require(_0xf2cb('0x1'));var moment=require(_0xf2cb('0x2'));var BPromise=require(_0xf2cb('0x3'));var rs=require(_0xf2cb('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf2cb('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf2cb('0x6'))(_0xf2cb('0x7'));var config=require(_0xf2cb('0x8'));var jayson=require(_0xf2cb('0x9'));var client=jayson[_0xf2cb('0xa')][_0xf2cb('0xb')]({'port':0x232a});config['redis']=_[_0xf2cb('0xc')](config[_0xf2cb('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf2cb('0xd')]));require(_0xf2cb('0xe'))[_0xf2cb('0xf')](socket);function respondWithRpcPromise(_0x43fc6b,_0x1cb37d,_0xa0ffee){return new BPromise(function(_0x5d2334,_0x2a70fe){return client[_0xf2cb('0x10')](_0x43fc6b,_0xa0ffee)[_0xf2cb('0x11')](function(_0x5c258b){logger[_0xf2cb('0x12')](_0xf2cb('0x13'),_0x1cb37d,_0xf2cb('0x14'));logger[_0xf2cb('0x15')](_0xf2cb('0x16'),_0x1cb37d,_0xf2cb('0x14'),JSON[_0xf2cb('0x17')](_0x5c258b));if(_0x5c258b[_0xf2cb('0x18')]){if(_0x5c258b['error'][_0xf2cb('0x19')]===0x1f4){logger[_0xf2cb('0x18')](_0xf2cb('0x13'),_0x1cb37d,_0x5c258b[_0xf2cb('0x18')][_0xf2cb('0x1a')]);return _0x2a70fe(_0x5c258b['error'][_0xf2cb('0x1a')]);}logger[_0xf2cb('0x18')](_0xf2cb('0x13'),_0x1cb37d,_0x5c258b['error'][_0xf2cb('0x1a')]);return _0x5d2334(_0x5c258b[_0xf2cb('0x18')]['message']);}else{logger['info'](_0xf2cb('0x13'),_0x1cb37d,'request\x20sent');_0x5d2334(_0x5c258b['result'][_0xf2cb('0x1a')]);}})[_0xf2cb('0x1b')](function(_0x4783cf){logger[_0xf2cb('0x18')]('User,\x20%s,\x20%s',_0x1cb37d,_0x4783cf);_0x2a70fe(_0x4783cf);});});}exports['GetUser']=function(_0x22c46f){var _0x15e469=this;return new Promise(function(_0x281a49,_0x47028a){return db[_0xf2cb('0x1c')]['findAll']({'raw':_0x22c46f['options']?_0x22c46f[_0xf2cb('0x1d')][_0xf2cb('0x1e')]===undefined?!![]:![]:!![],'where':_0x22c46f[_0xf2cb('0x1d')]?_0x22c46f[_0xf2cb('0x1d')]['where']||null:null,'attributes':_0x22c46f['options']?_0x22c46f[_0xf2cb('0x1d')][_0xf2cb('0x1f')]||null:null,'limit':_0x22c46f[_0xf2cb('0x1d')]?_0x22c46f[_0xf2cb('0x1d')][_0xf2cb('0x20')]||null:null,'include':_0x22c46f[_0xf2cb('0x1d')]?_0x22c46f[_0xf2cb('0x1d')][_0xf2cb('0x21')]?_[_0xf2cb('0x22')](_0x22c46f['options'][_0xf2cb('0x21')],function(_0x3001a5){return{'model':db[_0x3001a5[_0xf2cb('0x23')]],'as':_0x3001a5['as'],'attributes':_0x3001a5['attributes'],'include':_0x3001a5[_0xf2cb('0x21')]?_[_0xf2cb('0x22')](_0x3001a5['include'],function(_0x3fb05a){return{'model':db[_0x3fb05a[_0xf2cb('0x23')]],'as':_0x3fb05a['as'],'attributes':_0x3fb05a[_0xf2cb('0x1f')],'include':_0x3fb05a[_0xf2cb('0x21')]?_[_0xf2cb('0x22')](_0x3fb05a[_0xf2cb('0x21')],function(_0x496533){return{'model':db[_0x496533[_0xf2cb('0x23')]],'as':_0x496533['as'],'attributes':_0x496533[_0xf2cb('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xf2cb('0x11')](function(_0x2de2d9){logger[_0xf2cb('0x12')](_0xf2cb('0x24'),_0x22c46f);logger[_0xf2cb('0x15')](_0xf2cb('0x24'),_0x22c46f,JSON[_0xf2cb('0x17')](_0x2de2d9));_0x281a49(_0x2de2d9);})[_0xf2cb('0x1b')](function(_0x477d48){logger[_0xf2cb('0x18')](_0xf2cb('0x24'),_0x477d48[_0xf2cb('0x1a')],_0x22c46f);_0x47028a(_0x15e469['error'](0x1f4,_0x477d48[_0xf2cb('0x1a')]));});});};exports[_0xf2cb('0x25')]=function(_0x4ee4f8){var _0x23aa74=this;return new Promise(function(_0x5275d7,_0x4ca409){return db[_0xf2cb('0x1c')][_0xf2cb('0x26')]({'raw':_0x4ee4f8['options']?_0x4ee4f8[_0xf2cb('0x1d')][_0xf2cb('0x1e')]===undefined?!![]:![]:!![],'where':_0x4ee4f8['options']?_0x4ee4f8[_0xf2cb('0x1d')]['where']||null:null,'attributes':_0x4ee4f8['options']?_0x4ee4f8[_0xf2cb('0x1d')][_0xf2cb('0x1f')]||null:null,'include':_0x4ee4f8[_0xf2cb('0x1d')]?_0x4ee4f8[_0xf2cb('0x1d')][_0xf2cb('0x21')]?_[_0xf2cb('0x22')](_0x4ee4f8[_0xf2cb('0x1d')][_0xf2cb('0x21')],function(_0x1ff0ff){return{'model':db[_0x1ff0ff['model']],'as':_0x1ff0ff['as'],'attributes':_0x1ff0ff[_0xf2cb('0x1f')],'include':_0x1ff0ff[_0xf2cb('0x21')]?_[_0xf2cb('0x22')](_0x1ff0ff[_0xf2cb('0x21')],function(_0x212f08){return{'model':db[_0x212f08[_0xf2cb('0x23')]],'as':_0x212f08['as'],'attributes':_0x212f08[_0xf2cb('0x1f')],'include':_0x212f08[_0xf2cb('0x21')]?_[_0xf2cb('0x22')](_0x212f08[_0xf2cb('0x21')],function(_0x5a03bb){return{'model':db[_0x5a03bb[_0xf2cb('0x23')]],'as':_0x5a03bb['as'],'attributes':_0x5a03bb[_0xf2cb('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x58c721){logger[_0xf2cb('0x12')](_0xf2cb('0x25'),_0x4ee4f8);logger[_0xf2cb('0x15')](_0xf2cb('0x25'),_0x4ee4f8,JSON[_0xf2cb('0x17')](_0x58c721));_0x5275d7(_0x58c721);})[_0xf2cb('0x1b')](function(_0x4de5c3){logger[_0xf2cb('0x18')](_0xf2cb('0x25'),_0x4de5c3['message'],_0x4ee4f8);_0x4ca409(_0x23aa74[_0xf2cb('0x18')](0x1f4,_0x4de5c3['message']));});});};exports[_0xf2cb('0x27')]=function(_0x443856){var _0x15ef20=this;return new Promise(function(_0x5387da,_0x3eab7c){var _0x479a30;return db[_0xf2cb('0x1c')][_0xf2cb('0x26')]({'where':_0x443856[_0xf2cb('0x1d')][_0xf2cb('0x28')]||{},'attributes':['id',_0xf2cb('0x29'),_0xf2cb('0x2a'),_0xf2cb('0x2b'),_0xf2cb('0x2c')]})[_0xf2cb('0x11')](function(_0x5bbfac){if(_0x5bbfac){_0x479a30=_0x5bbfac;return db[_0xf2cb('0x2d')][_0xf2cb('0x2e')]({'paused':0x1},{'where':{'UserId':_0x479a30['id']},'individualHooks':!![]});}})[_0xf2cb('0x11')](function(){if(_0x479a30){return db['MemberReport'][_0xf2cb('0x2f')]({'where':{'membername':_0x479a30['name'],'type':_0xf2cb('0x30'),'exitAt':null}});}})[_0xf2cb('0x11')](function(_0x1be831){if(_0x479a30){if(_0x1be831&&_0x1be831[_0xf2cb('0x31')]){var _0x3b182a=moment()['format'](_0xf2cb('0x32'));for(var _0x323ff5=0x0,_0x59ea11=_0x1be831[_0xf2cb('0x31')];_0x323ff5<_0x59ea11;_0x323ff5++){_0x1be831[_0x323ff5][_0xf2cb('0x33')]({'exitAt':_0x3b182a});}}}})[_0xf2cb('0x11')](function(){if(_0x479a30){var _0x2a5d3c=[];var _0x7d9825=utils[_0xf2cb('0x34')]();_0x7d9825[_0xf2cb('0x35')](function(_0x495287){_0x2a5d3c['push']({'channel':_0x495287,'membername':_0x479a30[_0xf2cb('0x29')],'interface':_['isNil'](_0x479a30[_0xf2cb('0x2c')])?util[_0xf2cb('0x36')](_0xf2cb('0x37'),_0x479a30[_0xf2cb('0x29')]):_0x479a30[_0xf2cb('0x2c')],'type':'PAUSE','enterAt':moment()[_0xf2cb('0x36')](_0xf2cb('0x32')),'data1':_0x443856['body']['type']||'DEFAULT\x20PAUSE','role':_0x479a30[_0xf2cb('0x2a')],'internal':_0x479a30[_0xf2cb('0x2b')],'uniqueid':_0x443856[_0xf2cb('0x38')][_0xf2cb('0x39')]||null});});return db[_0xf2cb('0x3a')][_0xf2cb('0x3b')](_0x2a5d3c,{'individualHooks':!![]});}})[_0xf2cb('0x11')](function(){if(_0x479a30){return _0x479a30['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x443856[_0xf2cb('0x38')][_0xf2cb('0x3c')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0xf2cb('0x36')](_0xf2cb('0x32'))});}})[_0xf2cb('0x11')](function(_0x1866b7){_0x5387da(_0x1866b7);})[_0xf2cb('0x1b')](function(_0x300af0){_0x3eab7c(_0x15ef20[_0xf2cb('0x18')](0x1f4,_0x300af0[_0xf2cb('0x1a')]));});});};exports['UnpauseUser']=function(_0x53aea9){var _0x32ed3b=this;return new Promise(function(_0x1d3cf7,_0x1a61a7){var _0x4769d6;return db['User'][_0xf2cb('0x3d')]({'where':_0x53aea9[_0xf2cb('0x1d')][_0xf2cb('0x28')]||{},'attributes':['id','name']})[_0xf2cb('0x11')](function(_0x4824bd){if(_0x4824bd){_0x4769d6=_0x4824bd;if(_0x53aea9['body'][_0xf2cb('0x3e')]&&!utils[_0xf2cb('0x3f')](_0x53aea9['body'][_0xf2cb('0x3e')])){throw new Error('Unknown\x20channel');}switch(_0x53aea9['body'][_0xf2cb('0x3e')]){case _0xf2cb('0x40'):return db[_0xf2cb('0x2d')]['update']({'paused':0x0},{'where':{'UserId':_0x4769d6['id']}})[_0xf2cb('0x11')](function(){return db[_0xf2cb('0x3a')][_0xf2cb('0x26')]({'where':{'channel':_0x53aea9['body']['channel'],'membername':_0x4769d6[_0xf2cb('0x29')],'type':_0xf2cb('0x30'),'exitAt':null}});})[_0xf2cb('0x11')](function(_0x26bbbc){if(_0x26bbbc){return _0x26bbbc['update']({'exitAt':moment()['format'](_0xf2cb('0x32')),'data2':_0xf2cb('0x41')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x4769d6[_0xf2cb('0x2e')]({'voicePause':![]});});case'mail':case'chat':case _0xf2cb('0x42'):case'sms':case _0xf2cb('0x43'):case _0xf2cb('0x44'):return db[_0xf2cb('0x3a')]['find']({'where':{'channel':_0x53aea9[_0xf2cb('0x38')]['channel'],'membername':_0x4769d6['name'],'type':_0xf2cb('0x30'),'exitAt':null}})[_0xf2cb('0x11')](function(_0x564012){return _0x564012[_0xf2cb('0x2e')]({'exitAt':moment()[_0xf2cb('0x36')](_0xf2cb('0x32')),'data2':_0xf2cb('0x41')},{'individualHooks':!![]});})['then'](function(){var _0x4b7e37={};_[_0xf2cb('0x45')](_0x4b7e37,util[_0xf2cb('0x36')](_0xf2cb('0x46'),_0x53aea9[_0xf2cb('0x38')][_0xf2cb('0x3e')],_0xf2cb('0x47')),![]);return _0x4769d6['update'](_0x4b7e37);});default:return db['UserVoiceQueueRt'][_0xf2cb('0x2e')]({'paused':0x0},{'where':{'UserId':_0x4769d6['id']}})[_0xf2cb('0x11')](function(){return db[_0xf2cb('0x3a')][_0xf2cb('0x2f')]({'where':{'membername':_0x4769d6['name'],'type':'PAUSE','exitAt':null}});})[_0xf2cb('0x11')](function(_0x14c945){var _0x1e1057=[];_0x14c945[_0xf2cb('0x35')](function(_0x5212de){_0x1e1057[_0xf2cb('0x48')](_0x5212de[_0xf2cb('0x2e')]({'exitAt':moment()['format'](_0xf2cb('0x32')),'data2':_0xf2cb('0x41')}));});return BPromise[_0xf2cb('0x49')](_0x1e1057);})[_0xf2cb('0x11')](function(){return _0x4769d6[_0xf2cb('0x2e')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xf2cb('0x11')](function(_0xaac477){_0x1d3cf7(_0xaac477);})[_0xf2cb('0x1b')](function(_0x323dc8){_0x1a61a7(_0x32ed3b[_0xf2cb('0x18')](0x1f4,_0x323dc8[_0xf2cb('0x1a')]));});});};exports[_0xf2cb('0x4a')]=function(_0x18bc38){var _0x4168e2=this;return new Promise(function(_0x71c4fb,_0x47392c){var _0xfc495a;return db[_0xf2cb('0x1c')]['findOne']({'where':_0x18bc38[_0xf2cb('0x1d')]['where']||{},'attributes':['id','name']})[_0xf2cb('0x11')](function(_0x202c4f){if(_0x202c4f){_0xfc495a=_0x202c4f;return db[_0xf2cb('0x2d')][_0xf2cb('0x4b')]({'where':{'membername':_0xfc495a['name']},'individualHooks':!![]});}})[_0xf2cb('0x11')](function(){if(_0xfc495a){return db[_0xf2cb('0x3a')][_0xf2cb('0x2f')]({'where':{'membername':_0xfc495a[_0xf2cb('0x29')],'exitAt':null}});}})[_0xf2cb('0x11')](function(_0x56ac4d){if(_0xfc495a){if(_0x56ac4d&&_0x56ac4d['length']){var _0x565086=[];_0x56ac4d[_0xf2cb('0x35')](function(_0x2aa79c){_0x565086['push'](_0x2aa79c[_0xf2cb('0x2e')]({'exitAt':moment()[_0xf2cb('0x36')](_0xf2cb('0x32'))}));});return BPromise[_0xf2cb('0x49')](_0x565086);}}})[_0xf2cb('0x11')](function(){if(_0xfc495a){return _0xfc495a[_0xf2cb('0x2e')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xf2cb('0x11')](function(_0x178002){_0x71c4fb(_0x178002);})[_0xf2cb('0x1b')](function(_0xf814dc){_0x47392c(_0x4168e2['error'](0x1f4,_0xf814dc[_0xf2cb('0x1a')]));});});};exports[_0xf2cb('0x4c')]=function(_0x56a4bf){var _0x2c72af=this;return new Promise(function(_0xa4e08,_0x165841){var _0x5ef7be;var _0x498574;var _0x33c462;var _0x4e829b;return db[_0xf2cb('0x1c')]['findOne']({'where':_0x56a4bf['options']['where']||{},'attributes':['id','name',_0xf2cb('0x2a'),_0xf2cb('0x4d'),_0xf2cb('0x4e'),_0xf2cb('0x2b'),_0xf2cb('0x4f'),_0xf2cb('0x2c')]})['then'](function(_0x46a3db){if(_0x46a3db){_0x5ef7be=_0x46a3db;_0x4e829b=_0x56a4bf['body'][_0xf2cb('0x2c')]?_0x56a4bf[_0xf2cb('0x38')][_0xf2cb('0x2c')]:util[_0xf2cb('0x36')](_0xf2cb('0x37'),_0x5ef7be[_0xf2cb('0x29')]);return db[_0xf2cb('0x1c')][_0xf2cb('0x50')]({'where':{'role':_0xf2cb('0x51'),'online':!![],'id':{'$ne':_0x5ef7be['id']}}});}})[_0xf2cb('0x11')](function(_0x173aaa){if(_0x173aaa){_0x33c462=_0x173aaa;return require(_0xf2cb('0x52'))[_0xf2cb('0x53')]();}})[_0xf2cb('0x11')](function(_0x54a2d2){if(_0x54a2d2&&_0x54a2d2['agents']&&_0x33c462>=_0x54a2d2[_0xf2cb('0x54')]){throw new Error(_0xf2cb('0x55'));}})[_0xf2cb('0x11')](function(){if(_0x5ef7be){return db[_0xf2cb('0x2d')]['destroy']({'where':{'membername':_0x5ef7be['name']},'individualHooks':!![]});}})[_0xf2cb('0x11')](function(){if(_0x5ef7be){return _0x5ef7be[_0xf2cb('0x56')]({'raw':!![]});}})[_0xf2cb('0x11')](function(_0x2673f7){if(_0x5ef7be){if(_0x2673f7){var _0x2303c2=[];_0x498574=_0x2673f7;if(_0x498574['length']){for(var _0x54d999=0x0;_0x54d999<_0x498574[_0xf2cb('0x31')];_0x54d999++){_0x2303c2[_0xf2cb('0x48')](db[_0xf2cb('0x2d')][_0xf2cb('0x57')]({'membername':_0x5ef7be[_0xf2cb('0x29')],'UserId':_0x5ef7be['id'],'queue_name':_0x498574[_0x54d999][_0xf2cb('0x29')],'VoiceQueueId':_0x498574[_0x54d999]['id'],'interface':_0x4e829b,'paused':_0x5ef7be['loginInPause']||![],'penalty':_0x498574[_0x54d999][_0xf2cb('0x58')]||0x0}));}return BPromise[_0xf2cb('0x49')](_0x2303c2);}}}})[_0xf2cb('0x11')](function(){if(_0x5ef7be){return db[_0xf2cb('0x3a')][_0xf2cb('0x2f')]({'where':{'membername':_0x5ef7be[_0xf2cb('0x29')],'exitAt':null}});}})[_0xf2cb('0x11')](function(_0x48f744){if(_0x5ef7be){if(_0x48f744&&_0x48f744['length']){var _0x519c4f=[];_0x48f744['forEach'](function(_0x185bdd){_0x519c4f[_0xf2cb('0x48')](_0x185bdd[_0xf2cb('0x2e')]({'exitAt':moment()['format'](_0xf2cb('0x32'))}));});return BPromise['all'](_0x519c4f);}}})[_0xf2cb('0x11')](function(_0xb4edfc){if(_0x5ef7be){var _0x1dcdf=[];var _0x457220=[];var _0x17c20c=utils[_0xf2cb('0x34')]();var _0x3f4cff={'membername':_0x5ef7be[_0xf2cb('0x29')],'interface':_0x4e829b,'enterAt':moment()[_0xf2cb('0x36')](_0xf2cb('0x32')),'role':_0x5ef7be[_0xf2cb('0x2a')],'internal':_0x5ef7be[_0xf2cb('0x2b')]};_0x17c20c[_0xf2cb('0x35')](function(_0x3e8d33){_0x1dcdf[_0xf2cb('0x48')](_[_0xf2cb('0x59')]({'channel':_0x3e8d33,'type':_0xf2cb('0x5a'),'data1':_0xf2cb('0x5b'),'data2':_0x4e829b},_0x3f4cff));if(_0x5ef7be[_0xf2cb('0x4f')]){_0x457220[_0xf2cb('0x48')](_[_0xf2cb('0x59')]({'channel':_0x3e8d33,'type':'PAUSE','data1':_0xf2cb('0x5c')},_0x3f4cff));}});return db[_0xf2cb('0x3a')][_0xf2cb('0x3b')](_0x1dcdf[_0xf2cb('0x5d')](_0x457220),{'individualHooks':!![]});}})[_0xf2cb('0x11')](function(){if(_0x5ef7be){return _0x5ef7be[_0xf2cb('0x2e')]({'online':!![],'lastLoginAt':moment()[_0xf2cb('0x36')](_0xf2cb('0x32')),'voicePause':_0x5ef7be[_0xf2cb('0x4f')]||![],'mailPause':_0x5ef7be[_0xf2cb('0x4f')]||![],'chatPause':_0x5ef7be[_0xf2cb('0x4f')]||![],'faxPause':_0x5ef7be[_0xf2cb('0x4f')]||![],'smsPause':_0x5ef7be[_0xf2cb('0x4f')]||![],'openchannelPause':_0x5ef7be['loginInPause']||![],'pauseType':_0x5ef7be[_0xf2cb('0x4f')]?_0xf2cb('0x5c'):null,'lastPauseAt':moment()[_0xf2cb('0x36')](_0xf2cb('0x32')),'interface':_0x4e829b});}})['then'](function(_0x5a30e9){_0xa4e08(_0x5a30e9);})[_0xf2cb('0x1b')](function(_0x510828){_0x165841(_0x2c72af[_0xf2cb('0x18')](0x1f4,_0x510828[_0xf2cb('0x1a')]));});});};
\ No newline at end of file
index f0e08fb..5336e2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb822=['length','user:','save','remove','update','emit','removeListener'];(function(_0x39d736,_0x1586cc){var _0x2bdd31=function(_0x4a11eb){while(--_0x4a11eb){_0x39d736['push'](_0x39d736['shift']());}};_0x2bdd31(++_0x1586cc);}(_0xb822,0x1a6));var _0x2b82=function(_0x2d6346,_0xc068e5){_0x2d6346=_0x2d6346-0x0;var _0x9a131e=_0xb822[_0x2d6346];return _0x9a131e;};'use strict';var UserEvents=require('./user.events');var events=[_0x2b82('0x0'),_0x2b82('0x1'),_0x2b82('0x2')];function createListener(_0x204a28,_0x5a17fc){return function(_0x1172fc){_0x5a17fc[_0x2b82('0x3')](_0x204a28,_0x1172fc);};}function removeListener(_0x22b251,_0x32ef96){return function(){UserEvents[_0x2b82('0x4')](_0x22b251,_0x32ef96);};}exports['register']=function(_0xcdf616){for(var _0x1d773b=0x0,_0x2f5380=events[_0x2b82('0x5')];_0x1d773b<_0x2f5380;_0x1d773b++){var _0x5cebe3=events[_0x1d773b];var _0xb95a31=createListener(_0x2b82('0x6')+_0x5cebe3,_0xcdf616);UserEvents['on'](_0x5cebe3,_0xb95a31);}};
\ No newline at end of file
+var _0xf8cb=['save','update','emit','removeListener','user:','./user.events'];(function(_0x292b9d,_0x123322){var _0x33621e=function(_0x49cd9e){while(--_0x49cd9e){_0x292b9d['push'](_0x292b9d['shift']());}};_0x33621e(++_0x123322);}(_0xf8cb,0x161));var _0xbf8c=function(_0x17ddb3,_0x179b02){_0x17ddb3=_0x17ddb3-0x0;var _0x2eb84d=_0xf8cb[_0x17ddb3];return _0x2eb84d;};'use strict';var UserEvents=require(_0xbf8c('0x0'));var events=[_0xbf8c('0x1'),'remove',_0xbf8c('0x2')];function createListener(_0x458d0c,_0x52eff0){return function(_0x3b2484){_0x52eff0[_0xbf8c('0x3')](_0x458d0c,_0x3b2484);};}function removeListener(_0x4dff94,_0x59e4b2){return function(){UserEvents[_0xbf8c('0x4')](_0x4dff94,_0x59e4b2);};}exports['register']=function(_0x71411b){for(var _0x966aeb=0x0,_0x40c785=events['length'];_0x966aeb<_0x40c785;_0x966aeb++){var _0x1c6f62=events[_0x966aeb];var _0x297ab8=createListener(_0xbf8c('0x5')+_0x1c6f62,_0x71411b);UserEvents['on'](_0x1c6f62,_0x297ab8);}};
\ No newline at end of file
index f9cd220..736142f 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(_0x23d1c3,_0x5cf356){var _0x1d0013=function(_0x39f9ce){while(--_0x39f9ce){_0x23d1c3['push'](_0x23d1c3['shift']());}};_0x1d0013(++_0x5cf356);}(_0x70e0,0x17b));var _0x070e=function(_0x39913c,_0x1c3312){_0x39913c=_0x39913c-0x0;var _0xf29227=_0x70e0[_0x39913c];return _0xf29227;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x172704,_0x921888){var _0x4813c8=function(_0x4d585b){while(--_0x4d585b){_0x172704['push'](_0x172704['shift']());}};_0x4813c8(++_0x921888);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0xcb91[_0x5a3cf0];return _0x5a64ee;};'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 89c608e..6aa5491 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d0e=['INTEGER','exports'];(function(_0x391316,_0x2a747d){var _0x9634d2=function(_0x342e7d){while(--_0x342e7d){_0x391316['push'](_0x391316['shift']());}};_0x9634d2(++_0x2a747d);}(_0x4d0e,0x18b));var _0xe4d0=function(_0x26dafe,_0x2df859){_0x26dafe=_0x26dafe-0x0;var _0x563a9b=_0x4d0e[_0x26dafe];return _0x563a9b;};'use strict';var Sequelize=require('sequelize');module[_0xe4d0('0x0')]={'penalty':{'type':Sequelize[_0xe4d0('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb275=['INTEGER','exports'];(function(_0x406e46,_0x5799cb){var _0x4a3742=function(_0x1fa435){while(--_0x1fa435){_0x406e46['push'](_0x406e46['shift']());}};_0x4a3742(++_0x5799cb);}(_0xb275,0xbf));var _0x5b27=function(_0x3696b4,_0x4f7371){_0x3696b4=_0x3696b4-0x0;var _0x52f40c=_0xb275[_0x3696b4];return _0x52f40c;};'use strict';var Sequelize=require('sequelize');module[_0x5b27('0x0')]={'penalty':{'type':Sequelize[_0x5b27('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 099d274..885e5cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bb0=['request-promise','rimraf','../../config/environment','./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues','lodash','util','api','moment','bluebird'];(function(_0x4cce3b,_0x186a48){var _0x474c24=function(_0x3fb09b){while(--_0x3fb09b){_0x4cce3b['push'](_0x4cce3b['shift']());}};_0x474c24(++_0x186a48);}(_0x8bb0,0x133));var _0x08bb=function(_0x3127f8,_0x41f94a){_0x3127f8=_0x3127f8-0x0;var _0x3df460=_0x8bb0[_0x3127f8];return _0x3df460;};'use strict';var _=require(_0x08bb('0x0'));var util=require(_0x08bb('0x1'));var logger=require('../../config/logger')(_0x08bb('0x2'));var moment=require(_0x08bb('0x3'));var BPromise=require(_0x08bb('0x4'));var rp=require(_0x08bb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x08bb('0x6'));var config=require(_0x08bb('0x7'));var attributes=require(_0x08bb('0x8'));module[_0x08bb('0x9')]=function(_0x4f385f,_0x174b8c){return _0x4f385f[_0x08bb('0xa')](_0x08bb('0xb'),attributes,{'tableName':_0x08bb('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x546c=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues','lodash','util'];(function(_0x1709e7,_0x2ced21){var _0x402819=function(_0x3637a0){while(--_0x3637a0){_0x1709e7['push'](_0x1709e7['shift']());}};_0x402819(++_0x2ced21);}(_0x546c,0x132));var _0xc546=function(_0x152972,_0x44ccc2){_0x152972=_0x152972-0x0;var _0xdb0fdd=_0x546c[_0x152972];return _0xdb0fdd;};'use strict';var _=require(_0xc546('0x0'));var util=require(_0xc546('0x1'));var logger=require(_0xc546('0x2'))(_0xc546('0x3'));var moment=require(_0xc546('0x4'));var BPromise=require('bluebird');var rp=require(_0xc546('0x5'));var fs=require('fs');var path=require(_0xc546('0x6'));var rimraf=require(_0xc546('0x7'));var config=require(_0xc546('0x8'));var attributes=require(_0xc546('0x9'));module[_0xc546('0xa')]=function(_0x50772c,_0x3f1dcd){return _0x50772c[_0xc546('0xb')](_0xc546('0xc'),attributes,{'tableName':_0xc546('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 916b1c7..f97c5a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf22f=['util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','lodash'];(function(_0x45a4a8,_0xed9a51){var _0x44a1f0=function(_0x5f0fe2){while(--_0x5f0fe2){_0x45a4a8['push'](_0x45a4a8['shift']());}};_0x44a1f0(++_0xed9a51);}(_0xf22f,0x18e));var _0xff22=function(_0x2798ac,_0x37ea3a){_0x2798ac=_0x2798ac-0x0;var _0x12470f=_0xf22f[_0x2798ac];return _0x12470f;};'use strict';var _=require(_0xff22('0x0'));var util=require(_0xff22('0x1'));var moment=require('moment');var BPromise=require(_0xff22('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xff22('0x3'))['db'];var utils=require(_0xff22('0x4'));var logger=require(_0xff22('0x5'))(_0xff22('0x6'));var config=require(_0xff22('0x7'));var jayson=require(_0xff22('0x8'));var client=jayson[_0xff22('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x27e00e,_0x4f4bea,_0x2240bd){return new BPromise(function(_0x36580a,_0x534074){return client['request'](_0x27e00e,_0x2240bd)[_0xff22('0xa')](function(_0x209cbd){logger['info'](_0xff22('0xb'),_0x4f4bea,_0xff22('0xc'));logger[_0xff22('0xd')]('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x4f4bea,_0xff22('0xc'),JSON[_0xff22('0xe')](_0x209cbd));if(_0x209cbd[_0xff22('0xf')]){if(_0x209cbd[_0xff22('0xf')][_0xff22('0x10')]===0x1f4){logger[_0xff22('0xf')](_0xff22('0xb'),_0x4f4bea,_0x209cbd[_0xff22('0xf')][_0xff22('0x11')]);return _0x534074(_0x209cbd[_0xff22('0xf')][_0xff22('0x11')]);}logger[_0xff22('0xf')]('UserChatQueue,\x20%s,\x20%s',_0x4f4bea,_0x209cbd[_0xff22('0xf')][_0xff22('0x11')]);return _0x36580a(_0x209cbd[_0xff22('0xf')][_0xff22('0x11')]);}else{logger[_0xff22('0x12')](_0xff22('0xb'),_0x4f4bea,_0xff22('0xc'));_0x36580a(_0x209cbd[_0xff22('0x13')][_0xff22('0x11')]);}})[_0xff22('0x14')](function(_0x2891cb){logger[_0xff22('0xf')]('UserChatQueue,\x20%s,\x20%s',_0x4f4bea,_0x2891cb);_0x534074(_0x2891cb);});});}
\ No newline at end of file
+var _0x25cc=['client','http','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x5d1817,_0x4b303a){var _0x5700e7=function(_0x54a874){while(--_0x54a874){_0x5d1817['push'](_0x5d1817['shift']());}};_0x5700e7(++_0x4b303a);}(_0x25cc,0x121));var _0xc25c=function(_0x2e30c6,_0x40a809){_0x2e30c6=_0x2e30c6-0x0;var _0x470e59=_0x25cc[_0x2e30c6];return _0x470e59;};'use strict';var _=require(_0xc25c('0x0'));var util=require(_0xc25c('0x1'));var moment=require(_0xc25c('0x2'));var BPromise=require(_0xc25c('0x3'));var rs=require(_0xc25c('0x4'));var fs=require('fs');var Redis=require(_0xc25c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc25c('0x6'));var logger=require(_0xc25c('0x7'))(_0xc25c('0x8'));var config=require('../../config/environment');var jayson=require(_0xc25c('0x9'));var client=jayson[_0xc25c('0xa')][_0xc25c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2a2b06,_0x319927,_0x4cc07c){return new BPromise(function(_0x5a893c,_0x9ff85a){return client['request'](_0x2a2b06,_0x4cc07c)[_0xc25c('0xc')](function(_0x3cd7df){logger[_0xc25c('0xd')](_0xc25c('0xe'),_0x319927,_0xc25c('0xf'));logger[_0xc25c('0x10')]('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x319927,_0xc25c('0xf'),JSON[_0xc25c('0x11')](_0x3cd7df));if(_0x3cd7df[_0xc25c('0x12')]){if(_0x3cd7df[_0xc25c('0x12')][_0xc25c('0x13')]===0x1f4){logger[_0xc25c('0x12')](_0xc25c('0xe'),_0x319927,_0x3cd7df[_0xc25c('0x12')][_0xc25c('0x14')]);return _0x9ff85a(_0x3cd7df[_0xc25c('0x12')][_0xc25c('0x14')]);}logger[_0xc25c('0x12')](_0xc25c('0xe'),_0x319927,_0x3cd7df[_0xc25c('0x12')]['message']);return _0x5a893c(_0x3cd7df['error']['message']);}else{logger[_0xc25c('0xd')](_0xc25c('0xe'),_0x319927,_0xc25c('0xf'));_0x5a893c(_0x3cd7df[_0xc25c('0x15')][_0xc25c('0x14')]);}})[_0xc25c('0x16')](function(_0x24ccee){logger['error']('UserChatQueue,\x20%s,\x20%s',_0x319927,_0x24ccee);_0x9ff85a(_0x24ccee);});});}
\ No newline at end of file
index 10a674c..aebe2a0 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(_0x4c735e,_0x12dc8b){var _0x36f3de=function(_0x55c509){while(--_0x55c509){_0x4c735e['push'](_0x4c735e['shift']());}};_0x36f3de(++_0x12dc8b);}(_0xedd9,0xfc));var _0x9edd=function(_0x3ac327,_0x5ab07a){_0x3ac327=_0x3ac327-0x0;var _0x3ee133=_0xedd9[_0x3ac327];return _0x3ee133;};'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 _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x2e4798,_0x5c2816){var _0x13b207=function(_0x3e5681){while(--_0x3e5681){_0x2e4798['push'](_0x2e4798['shift']());}};_0x13b207(++_0x5c2816);}(_0xedd9,0xfc));var _0x9edd=function(_0x57caec,_0x280eec){_0x57caec=_0x57caec-0x0;var _0x3c5c65=_0xedd9[_0x57caec];return _0x3c5c65;};'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
index 30beccc..2f8ff43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddf1=['sequelize','exports','STRING'];(function(_0x56516c,_0x1b7756){var _0x2e61a1=function(_0x59d4e8){while(--_0x59d4e8){_0x56516c['push'](_0x56516c['shift']());}};_0x2e61a1(++_0x1b7756);}(_0xddf1,0x111));var _0x1ddf=function(_0x2adbeb,_0x5581be){_0x2adbeb=_0x2adbeb-0x0;var _0x5e18a6=_0xddf1[_0x2adbeb];return _0x5e18a6;};'use strict';var Sequelize=require(_0x1ddf('0x0'));module[_0x1ddf('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize[_0x1ddf('0x2')]}};
\ No newline at end of file
+var _0xd668=['exports','INTEGER','STRING'];(function(_0x59582f,_0x25ef7c){var _0x523455=function(_0x5ce6cb){while(--_0x5ce6cb){_0x59582f['push'](_0x59582f['shift']());}};_0x523455(++_0x25ef7c);}(_0xd668,0xe1));var _0x8d66=function(_0x570f4f,_0x335a91){_0x570f4f=_0x570f4f-0x0;var _0x2ae0a4=_0xd668[_0x570f4f];return _0x2ae0a4;};'use strict';var Sequelize=require('sequelize');module[_0x8d66('0x0')]={'penalty':{'type':Sequelize[_0x8d66('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x8d66('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x8d66('0x2')]}};
\ No newline at end of file
index 73323bc..bc5fbbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd27d=['util','api','bluebird','request-promise','path','./userFaxQueue.attributes','define','UserFaxQueue'];(function(_0x798799,_0x18f22c){var _0x3eb8ce=function(_0x3d496b){while(--_0x3d496b){_0x798799['push'](_0x798799['shift']());}};_0x3eb8ce(++_0x18f22c);}(_0xd27d,0xa8));var _0xdd27=function(_0x7bde64,_0x4f3fc5){_0x7bde64=_0x7bde64-0x0;var _0x14bb79=_0xd27d[_0x7bde64];return _0x14bb79;};'use strict';var _=require('lodash');var util=require(_0xdd27('0x0'));var logger=require('../../config/logger')(_0xdd27('0x1'));var moment=require('moment');var BPromise=require(_0xdd27('0x2'));var rp=require(_0xdd27('0x3'));var fs=require('fs');var path=require(_0xdd27('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xdd27('0x5'));module['exports']=function(_0x20d827,_0x47e17c){return _0x20d827[_0xdd27('0x6')](_0xdd27('0x7'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xccae=['UserFaxQueue','user_has_fax_queues','lodash','../../config/logger','bluebird','path','rimraf','../../config/environment','define'];(function(_0x508711,_0x22ba06){var _0x29c09a=function(_0x52ff10){while(--_0x52ff10){_0x508711['push'](_0x508711['shift']());}};_0x29c09a(++_0x22ba06);}(_0xccae,0x185));var _0xecca=function(_0x1589dd,_0x2b9d22){_0x1589dd=_0x1589dd-0x0;var _0x1bddd1=_0xccae[_0x1589dd];return _0x1bddd1;};'use strict';var _=require(_0xecca('0x0'));var util=require('util');var logger=require(_0xecca('0x1'))('api');var moment=require('moment');var BPromise=require(_0xecca('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xecca('0x3'));var rimraf=require(_0xecca('0x4'));var config=require(_0xecca('0x5'));var attributes=require('./userFaxQueue.attributes');module['exports']=function(_0x351569,_0x5dd607){return _0x351569[_0xecca('0x6')](_0xecca('0x7'),attributes,{'tableName':_0xecca('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5ab695c..39413f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf53=['request\x20sent','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','request','UserFaxQueue,\x20%s,\x20%s'];(function(_0x491ff4,_0x1c83fd){var _0x223621=function(_0x71f8b3){while(--_0x71f8b3){_0x491ff4['push'](_0x491ff4['shift']());}};_0x223621(++_0x1c83fd);}(_0xcf53,0x1e8));var _0x3cf5=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xcf53[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x3cf5('0x0'));var util=require(_0x3cf5('0x1'));var moment=require(_0x3cf5('0x2'));var BPromise=require(_0x3cf5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3cf5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3cf5('0x5'));var logger=require(_0x3cf5('0x6'))('rpc');var config=require(_0x3cf5('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x3cf5('0x8')][_0x3cf5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x307007,_0x38ba69,_0x475b13){return new BPromise(function(_0x28782c,_0x18ccdf){return client[_0x3cf5('0xa')](_0x307007,_0x475b13)['then'](function(_0x4f85f6){logger['info'](_0x3cf5('0xb'),_0x38ba69,_0x3cf5('0xc'));logger['debug'](_0x3cf5('0xd'),_0x38ba69,_0x3cf5('0xc'),JSON[_0x3cf5('0xe')](_0x4f85f6));if(_0x4f85f6[_0x3cf5('0xf')]){if(_0x4f85f6[_0x3cf5('0xf')]['code']===0x1f4){logger['error'](_0x3cf5('0xb'),_0x38ba69,_0x4f85f6[_0x3cf5('0xf')][_0x3cf5('0x10')]);return _0x18ccdf(_0x4f85f6[_0x3cf5('0xf')][_0x3cf5('0x10')]);}logger[_0x3cf5('0xf')](_0x3cf5('0xb'),_0x38ba69,_0x4f85f6[_0x3cf5('0xf')][_0x3cf5('0x10')]);return _0x28782c(_0x4f85f6[_0x3cf5('0xf')][_0x3cf5('0x10')]);}else{logger[_0x3cf5('0x11')](_0x3cf5('0xb'),_0x38ba69,_0x3cf5('0xc'));_0x28782c(_0x4f85f6[_0x3cf5('0x12')][_0x3cf5('0x10')]);}})[_0x3cf5('0x13')](function(_0x4e4e30){logger[_0x3cf5('0xf')](_0x3cf5('0xb'),_0x38ba69,_0x4e4e30);_0x18ccdf(_0x4e4e30);});});}
\ No newline at end of file
+var _0xd1d4=['request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','http'];(function(_0x3fac28,_0x4436f8){var _0x65fa06=function(_0x4df963){while(--_0x4df963){_0x3fac28['push'](_0x3fac28['shift']());}};_0x65fa06(++_0x4436f8);}(_0xd1d4,0xae));var _0x4d1d=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0xd1d4[_0x16d10f];return _0x50c823;};'use strict';var _=require(_0x4d1d('0x0'));var util=require(_0x4d1d('0x1'));var moment=require(_0x4d1d('0x2'));var BPromise=require(_0x4d1d('0x3'));var rs=require(_0x4d1d('0x4'));var fs=require('fs');var Redis=require(_0x4d1d('0x5'));var db=require(_0x4d1d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x4d1d('0x7'))(_0x4d1d('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x4d1d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1d1c12,_0x21a916,_0x5cfe52){return new BPromise(function(_0x521a61,_0x13b341){return client[_0x4d1d('0xa')](_0x1d1c12,_0x5cfe52)[_0x4d1d('0xb')](function(_0x451e11){logger[_0x4d1d('0xc')](_0x4d1d('0xd'),_0x21a916,_0x4d1d('0xe'));logger[_0x4d1d('0xf')](_0x4d1d('0x10'),_0x21a916,'request\x20sent',JSON[_0x4d1d('0x11')](_0x451e11));if(_0x451e11[_0x4d1d('0x12')]){if(_0x451e11['error'][_0x4d1d('0x13')]===0x1f4){logger['error'](_0x4d1d('0xd'),_0x21a916,_0x451e11[_0x4d1d('0x12')][_0x4d1d('0x14')]);return _0x13b341(_0x451e11['error'][_0x4d1d('0x14')]);}logger[_0x4d1d('0x12')]('UserFaxQueue,\x20%s,\x20%s',_0x21a916,_0x451e11[_0x4d1d('0x12')][_0x4d1d('0x14')]);return _0x521a61(_0x451e11[_0x4d1d('0x12')]['message']);}else{logger['info']('UserFaxQueue,\x20%s,\x20%s',_0x21a916,'request\x20sent');_0x521a61(_0x451e11[_0x4d1d('0x15')][_0x4d1d('0x14')]);}})[_0x4d1d('0x16')](function(_0x20d399){logger[_0x4d1d('0x12')](_0x4d1d('0xd'),_0x21a916,_0x20d399);_0x13b341(_0x20d399);});});}
\ No newline at end of file
index 7ce207d..29bc9d7 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(_0xca726d,_0x38d8bd){var _0xd7c51b=function(_0xda7d99){while(--_0xda7d99){_0xca726d['push'](_0xca726d['shift']());}};_0xd7c51b(++_0x38d8bd);}(_0x70e0,0x17b));var _0x070e=function(_0x396d1f,_0x36da70){_0x396d1f=_0x396d1f-0x0;var _0x3a7ca4=_0x70e0[_0x396d1f];return _0x3a7ca4;};'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(_0x3d0632,_0x213d47){var _0x2637dd=function(_0x344469){while(--_0x344469){_0x3d0632['push'](_0x3d0632['shift']());}};_0x2637dd(++_0x213d47);}(_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'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 5c482cc..2300696 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf766=['sequelize','exports','INTEGER'];(function(_0x2e4fbe,_0xe928df){var _0x35a27d=function(_0xeccaec){while(--_0xeccaec){_0x2e4fbe['push'](_0x2e4fbe['shift']());}};_0x35a27d(++_0xe928df);}(_0xf766,0x78));var _0x6f76=function(_0x4e6cbb,_0x3450f0){_0x4e6cbb=_0x4e6cbb-0x0;var _0x15ced4=_0xf766[_0x4e6cbb];return _0x15ced4;};'use strict';var Sequelize=require(_0x6f76('0x0'));module[_0x6f76('0x1')]={'penalty':{'type':Sequelize[_0x6f76('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb009=['sequelize','INTEGER'];(function(_0x499cd3,_0x244380){var _0xa0c04f=function(_0x48a133){while(--_0x48a133){_0x499cd3['push'](_0x499cd3['shift']());}};_0xa0c04f(++_0x244380);}(_0xb009,0xe0));var _0x9b00=function(_0x287c21,_0x1b7be5){_0x287c21=_0x287c21-0x0;var _0x145e31=_0xb009[_0x287c21];return _0x145e31;};'use strict';var Sequelize=require(_0x9b00('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x9b00('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 49945a8..18132f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe58e=['moment','request-promise','path','rimraf','../../config/environment','./userMailQueue.attributes','define','UserMailQueue','lodash','util','../../config/logger'];(function(_0x521d85,_0x377f3d){var _0x5e790f=function(_0x10d96a){while(--_0x10d96a){_0x521d85['push'](_0x521d85['shift']());}};_0x5e790f(++_0x377f3d);}(_0xe58e,0x126));var _0xee58=function(_0x1e341b,_0x5d8dd8){_0x1e341b=_0x1e341b-0x0;var _0x12d7dc=_0xe58e[_0x1e341b];return _0x12d7dc;};'use strict';var _=require(_0xee58('0x0'));var util=require(_0xee58('0x1'));var logger=require(_0xee58('0x2'))('api');var moment=require(_0xee58('0x3'));var BPromise=require('bluebird');var rp=require(_0xee58('0x4'));var fs=require('fs');var path=require(_0xee58('0x5'));var rimraf=require(_0xee58('0x6'));var config=require(_0xee58('0x7'));var attributes=require(_0xee58('0x8'));module['exports']=function(_0x10afa2,_0x37c28f){return _0x10afa2[_0xee58('0x9')](_0xee58('0xa'),attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd73a=['define','UserMailQueue','user_has_mail_queues','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./userMailQueue.attributes'];(function(_0x524cb3,_0x3f3e47){var _0x2d4464=function(_0xb14b59){while(--_0xb14b59){_0x524cb3['push'](_0x524cb3['shift']());}};_0x2d4464(++_0x3f3e47);}(_0xd73a,0xff));var _0xad73=function(_0x41333d,_0x423c8d){_0x41333d=_0x41333d-0x0;var _0x261369=_0xd73a[_0x41333d];return _0x261369;};'use strict';var _=require(_0xad73('0x0'));var util=require(_0xad73('0x1'));var logger=require(_0xad73('0x2'))(_0xad73('0x3'));var moment=require(_0xad73('0x4'));var BPromise=require(_0xad73('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xad73('0x6'));var config=require(_0xad73('0x7'));var attributes=require(_0xad73('0x8'));module['exports']=function(_0x3a0c7c,_0x3de78a){return _0x3a0c7c[_0xad73('0x9')](_0xad73('0xa'),attributes,{'tableName':_0xad73('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 572335f..af237c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','stringify','error','code','message','UserMailQueue,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x8b8f0,_0x1cd9a8){var _0x507697=function(_0x325544){while(--_0x325544){_0x8b8f0['push'](_0x8b8f0['shift']());}};_0x507697(++_0x1cd9a8);}(_0x5fc3,0xa8));var _0x35fc=function(_0x128bef,_0xc7a0af){_0x128bef=_0x128bef-0x0;var _0x1ba862=_0x5fc3[_0x128bef];return _0x1ba862;};'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')]('UserMailQueue,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('UserMailQueue,\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']('UserMailQueue,\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
+var _0xe14b=['../../config/environment','jayson/promise','client','http','then','info','UserMailQueue,\x20%s,\x20%s','UserMailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils'];(function(_0x5c1eb4,_0x8fb242){var _0x472a05=function(_0x46b50c){while(--_0x46b50c){_0x5c1eb4['push'](_0x5c1eb4['shift']());}};_0x472a05(++_0x8fb242);}(_0xe14b,0x93));var _0xbe14=function(_0x557197,_0x533eb0){_0x557197=_0x557197-0x0;var _0x3debf7=_0xe14b[_0x557197];return _0x3debf7;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbe14('0x2'));var fs=require('fs');var Redis=require(_0xbe14('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbe14('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xbe14('0x5'));var jayson=require(_0xbe14('0x6'));var client=jayson[_0xbe14('0x7')][_0xbe14('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d9ade,_0x39387e,_0x196fca){return new BPromise(function(_0x566ae7,_0x50f909){return client['request'](_0x1d9ade,_0x196fca)[_0xbe14('0x9')](function(_0x6fceff){logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,'request\x20sent');logger['debug'](_0xbe14('0xc'),_0x39387e,_0xbe14('0xd'),JSON['stringify'](_0x6fceff));if(_0x6fceff[_0xbe14('0xe')]){if(_0x6fceff[_0xbe14('0xe')][_0xbe14('0xf')]===0x1f4){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x50f909(_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);}logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x566ae7(_0x6fceff['error']['message']);}else{logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,_0xbe14('0xd'));_0x566ae7(_0x6fceff[_0xbe14('0x11')]['message']);}})[_0xbe14('0x12')](function(_0xe9c3ec){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0xe9c3ec);_0x50f909(_0xe9c3ec);});});}
\ No newline at end of file
index 6ade4cb..f8b3341 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ac1=['post','isAuthenticated','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller'];(function(_0x119c2e,_0xef0c57){var _0x368a30=function(_0x25b0e2){while(--_0x25b0e2){_0x119c2e['push'](_0x119c2e['shift']());}};_0x368a30(++_0xef0c57);}(_0x7ac1,0x163));var _0x17ac=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x7ac1[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x17ac('0x0'));var util=require(_0x17ac('0x1'));var path=require(_0x17ac('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x17ac('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x17ac('0x4'));var interaction=require(_0x17ac('0x5'));var config=require(_0x17ac('0x6'));var controller=require(_0x17ac('0x7'));router[_0x17ac('0x8')]('/',auth[_0x17ac('0x9')](),controller['sendUserNotification']);module[_0x17ac('0xa')]=router;
\ No newline at end of file
+var _0x5bbd=['post','isAuthenticated','sendUserNotification','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller'];(function(_0x274509,_0x1353f7){var _0x47298c=function(_0x514eaf){while(--_0x514eaf){_0x274509['push'](_0x274509['shift']());}};_0x47298c(++_0x1353f7);}(_0x5bbd,0x7c));var _0xd5bb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5bbd[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xd5bb('0x0'));var util=require(_0xd5bb('0x1'));var path=require(_0xd5bb('0x2'));var timeout=require(_0xd5bb('0x3'));var express=require(_0xd5bb('0x4'));var router=express[_0xd5bb('0x5')]();var fs_extra=require(_0xd5bb('0x6'));var auth=require(_0xd5bb('0x7'));var interaction=require(_0xd5bb('0x8'));var config=require(_0xd5bb('0x9'));var controller=require(_0xd5bb('0xa'));router[_0xd5bb('0xb')]('/',auth[_0xd5bb('0xc')](),controller[_0xd5bb('0xd')]);module[_0xd5bb('0xe')]=router;
\ No newline at end of file
index 56b4cbe..6b1249c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf861=['BOOLEAN','sequelize','exports','STRING','TEXT'];(function(_0xa60086,_0x501574){var _0x58fd63=function(_0x1c6ce7){while(--_0x1c6ce7){_0xa60086['push'](_0xa60086['shift']());}};_0x58fd63(++_0x501574);}(_0xf861,0x191));var _0x1f86=function(_0x353899,_0x3eedbe){_0x353899=_0x353899-0x0;var _0x47d57a=_0xf861[_0x353899];return _0x47d57a;};'use strict';var Sequelize=require(_0x1f86('0x0'));module[_0x1f86('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x1f86('0x2')]},'recipientsId':{'type':Sequelize[_0x1f86('0x3')]},'recipientsDescription':{'type':Sequelize[_0x1f86('0x2')]},'beep':{'type':Sequelize[_0x1f86('0x4')]}};
\ No newline at end of file
+var _0x91ef=['TEXT','BOOLEAN','exports','STRING'];(function(_0x5ca5bc,_0x5b8a9d){var _0x26ca86=function(_0x1ad9a6){while(--_0x1ad9a6){_0x5ca5bc['push'](_0x5ca5bc['shift']());}};_0x26ca86(++_0x5b8a9d);}(_0x91ef,0x1e2));var _0xf91e=function(_0x82129b,_0x484ae9){_0x82129b=_0x82129b-0x0;var _0x2ae5dc=_0x91ef[_0x82129b];return _0x2ae5dc;};'use strict';var Sequelize=require('sequelize');module[_0xf91e('0x0')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0xf91e('0x1')]},'recipientsId':{'type':Sequelize[_0xf91e('0x2')]},'recipientsDescription':{'type':Sequelize[_0xf91e('0x1')]},'beep':{'type':Sequelize[_0xf91e('0x3')]}};
\ No newline at end of file
index f9110c6..b777b2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8104=['sendUserNotification','body','hasOwnProperty','text','TemplateId','Sequelize','ValidationError','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','smsqueue','voicequeue','whatsappqueue','team','user','some','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','beep','recipientsId','sortBy','join','sequelize','transaction','UserNotification','create','forEach','recipient','emit','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','model','union','ids','queue','replace','Queue','push','all','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','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','./userNotification.socket','register','sendStatus','end','json','offset','undefined','limit','count','status','Content-Range','reject','save','update','then','destroy','error','stack','name','send'];(function(_0x1ac550,_0x58c95a){var _0x110ed1=function(_0x2325f2){while(--_0x2325f2){_0x1ac550['push'](_0x1ac550['shift']());}};_0x110ed1(++_0x58c95a);}(_0x8104,0x97));var _0x4810=function(_0x7cc776,_0xdc86b0){_0x7cc776=_0x7cc776-0x0;var _0x18b1f0=_0x8104[_0x7cc776];return _0x18b1f0;};'use strict';var emlformat=require(_0x4810('0x0'));var rimraf=require(_0x4810('0x1'));var zipdir=require(_0x4810('0x2'));var jsonpatch=require(_0x4810('0x3'));var rp=require(_0x4810('0x4'));var moment=require('moment');var BPromise=require(_0x4810('0x5'));var Mustache=require('mustache');var util=require(_0x4810('0x6'));var path=require(_0x4810('0x7'));var sox=require(_0x4810('0x8'));var csv=require(_0x4810('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4810('0xa'));var _=require(_0x4810('0xb'));var squel=require('squel');var crypto=require(_0x4810('0xc'));var jsforce=require(_0x4810('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x4810('0x9'));var querystring=require(_0x4810('0xe'));var Papa=require(_0x4810('0xf'));var Redis=require('ioredis');var authService=require(_0x4810('0x10'));var qs=require(_0x4810('0x11'));var as=require(_0x4810('0x12'));var hardwareService=require(_0x4810('0x13'));var logger=require(_0x4810('0x14'))(_0x4810('0x15'));var utils=require(_0x4810('0x16'));var config=require(_0x4810('0x17'));var licenseUtil=require(_0x4810('0x18'));var db=require(_0x4810('0x19'))['db'];config[_0x4810('0x1a')]=_['defaults'](config[_0x4810('0x1a')],{'host':_0x4810('0x1b'),'port':0x18eb});var socket=require(_0x4810('0x1c'))(new Redis(config['redis']));require(_0x4810('0x1d'))[_0x4810('0x1e')](socket);function respondWithStatusCode(_0x2e9c47,_0x5415d6){_0x5415d6=_0x5415d6||0xcc;return function(_0x463708){if(_0x463708){return _0x2e9c47[_0x4810('0x1f')](_0x5415d6);}return _0x2e9c47['status'](_0x5415d6)[_0x4810('0x20')]();};}function respondWithResult(_0x5e7eaa,_0x5b9b65){_0x5b9b65=_0x5b9b65||0xc8;return function(_0x35b2e7){if(_0x35b2e7){return _0x5e7eaa['status'](_0x5b9b65)[_0x4810('0x21')](_0x35b2e7);}};}function respondWithFilteredResult(_0x857820,_0x2098fc){return function(_0x16883a){if(_0x16883a){var _0x4fab11=typeof _0x2098fc[_0x4810('0x22')]===_0x4810('0x23')&&typeof _0x2098fc[_0x4810('0x24')]===_0x4810('0x23');var _0x296195=_0x16883a[_0x4810('0x25')];var _0x2fe7ba=_0x4fab11?0x0:_0x2098fc['offset'];var _0x327bda=_0x4fab11?_0x16883a[_0x4810('0x25')]:_0x2098fc[_0x4810('0x22')]+_0x2098fc[_0x4810('0x24')];var _0x4b90c2;if(_0x327bda>=_0x296195){_0x327bda=_0x296195;_0x4b90c2=0xc8;}else{_0x4b90c2=0xce;}_0x857820[_0x4810('0x26')](_0x4b90c2);return _0x857820['set'](_0x4810('0x27'),_0x2fe7ba+'-'+_0x327bda+'/'+_0x296195)[_0x4810('0x21')](_0x16883a);}return null;};}function patchUpdates(_0x32a313){return function(_0x2145e1){try{jsonpatch['apply'](_0x2145e1,_0x32a313,!![]);}catch(_0x1d3905){return BPromise[_0x4810('0x28')](_0x1d3905);}return _0x2145e1[_0x4810('0x29')]();};}function saveUpdates(_0x3f9cd0,_0x187a9e){return function(_0x2049be){if(_0x2049be){return _0x2049be[_0x4810('0x2a')](_0x3f9cd0)[_0x4810('0x2b')](function(_0x2fd54d){return _0x2fd54d;});}return null;};}function removeEntity(_0xc52aa3,_0x3effa5){return function(_0x120966){if(_0x120966){return _0x120966[_0x4810('0x2c')]()[_0x4810('0x2b')](function(){_0xc52aa3[_0x4810('0x26')](0xcc)[_0x4810('0x20')]();});}};}function handleEntityNotFound(_0x3cb65c,_0x172054){return function(_0x381c35){if(!_0x381c35){_0x3cb65c[_0x4810('0x1f')](0x194);}return _0x381c35;};}function handleError(_0x31fe1f,_0x463197){_0x463197=_0x463197||0x1f4;return function(_0x5f85e2){logger[_0x4810('0x2d')](_0x5f85e2[_0x4810('0x2e')]);if(_0x5f85e2['name']){delete _0x5f85e2[_0x4810('0x2f')];}_0x31fe1f[_0x4810('0x26')](_0x463197)[_0x4810('0x30')](_0x5f85e2);};}exports[_0x4810('0x31')]=function(_0x384f17,_0x239115,_0x1878f9){if(!_0x384f17[_0x4810('0x32')][_0x4810('0x33')](_0x4810('0x34'))&&!_0x384f17[_0x4810('0x32')]['hasOwnProperty'](_0x4810('0x35'))){throw new db[(_0x4810('0x36'))][(_0x4810('0x37'))]('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x384f17[_0x4810('0x32')][_0x4810('0x33')](_0x4810('0x35'))&&!_0x384f17[_0x4810('0x32')][_0x4810('0x33')]('view')){throw new db[(_0x4810('0x36'))]['ValidationError'](_0x4810('0x38'));}if(!_0x384f17['body']['hasOwnProperty'](_0x4810('0x39'))){throw new db[(_0x4810('0x36'))][(_0x4810('0x37'))](_0x4810('0x3a'));}else{try{var _0x55c2a6=JSON[_0x4810('0x3b')](_0x384f17[_0x4810('0x32')]['recipients']);}catch(_0x3d442d){logger[_0x4810('0x2d')](_0x3d442d);throw new db['Sequelize'][(_0x4810('0x37'))](_0x4810('0x3c'));}var _0x371b7c=[_0x4810('0x3d'),'faxqueue','mailqueue','openchannelqueue',_0x4810('0x3e'),_0x4810('0x3f'),_0x4810('0x40'),_0x4810('0x41'),_0x4810('0x42')];if(_[_0x4810('0x43')](_0x55c2a6,function(_0x46e864){return!_['includes'](_0x371b7c,_0x46e864['model'][_0x4810('0x44')]());})){throw new db[(_0x4810('0x36'))]['ValidationError'](_0x4810('0x45'));}}}var _0xe7952d={};_0xe7952d['senderName']=_0x384f17[_0x4810('0x32')]['hasOwnProperty'](_0x4810('0x46'))?_0x384f17[_0x4810('0x32')]['senderName']:_0x384f17['user'][_0x4810('0x47')];_0xe7952d['recipientsDescription']=_['isEmpty'](_0x384f17[_0x4810('0x32')][_0x4810('0x48')])?null:_0x384f17[_0x4810('0x32')][_0x4810('0x48')];_0xe7952d['beep']=_0x384f17[_0x4810('0x32')][_0x4810('0x49')]||![];_0xe7952d['SenderId']=_0x384f17[_0x4810('0x42')]['id'];return getContent(_0x384f17['body'])[_0x4810('0x2b')](function(_0x9bb128){_0xe7952d['body']=_0x9bb128;return getRecipients(_0x55c2a6);})['then'](function(_0x4a6e8){_0xe7952d[_0x4810('0x4a')]=_[_0x4810('0x4b')](_0x4a6e8)[_0x4810('0x4c')](',');return db[_0x4810('0x4d')][_0x4810('0x4e')](function(_0x4bd128){return db[_0x4810('0x4f')][_0x4810('0x50')](_0xe7952d,{'raw':!![],'transaction':_0x4bd128})['then'](function(_0xfd3c21){var _0x517445={'sender':_0xe7952d[_0x4810('0x46')],'description':_0xe7952d[_0x4810('0x48')],'content':_0xe7952d[_0x4810('0x32')],'beep':_0xe7952d[_0x4810('0x49')]};_0x4a6e8[_0x4810('0x51')](function(_0x496259){_0x517445[_0x4810('0x52')]=_0x496259;socket[_0x4810('0x53')]('userNotification:send',_0x517445);});return _0xfd3c21;});});})[_0x4810('0x2b')](respondWithResult(_0x239115,0xc9))[_0x4810('0x54')](handleError(_0x239115,null));};function getContent(_0x2f2f7d){return new BPromise(function(_0x2b7d11,_0xffffc5){if(_0x2f2f7d[_0x4810('0x34')]){_0x2b7d11(_0x2f2f7d[_0x4810('0x34')]);return;}return db[_0x4810('0x55')][_0x4810('0x56')]({'attributes':[_0x4810('0x57')],'where':{'id':_0x2f2f7d[_0x4810('0x35')]},'raw':!![]})[_0x4810('0x2b')](function(_0x45e651){if(!_0x45e651)throw new db[(_0x4810('0x36'))]['ValidationError'](_0x4810('0x58'));var _0x4faace=Mustache[_0x4810('0x59')](_0x45e651[_0x4810('0x57')],_0x2f2f7d['view']);_0x2b7d11(_0x4faace);})['catch'](function(_0x2b8def){_0xffffc5(_0x2b8def);});});}function getRecipients(_0x4f8e34){return new BPromise(function(_0x4ad186,_0x5bb223){var _0x51698f=[];var _0x5de215=[];_0x4f8e34[_0x4810('0x51')](function(_0x2e379f){var _0x1d7950=_[_0x4810('0x5a')](_0x2e379f[_0x4810('0x5b')][_0x4810('0x44')]());if(_0x1d7950==='User'){_0x51698f=_[_0x4810('0x5c')](_0x51698f,_0x2e379f[_0x4810('0x5d')]);}else{if(_['includes'](_0x1d7950,_0x4810('0x5e')))_0x1d7950=_0x1d7950[_0x4810('0x5f')](_0x4810('0x5e'),_0x4810('0x60'));_0x2e379f[_0x4810('0x5d')][_0x4810('0x51')](function(_0x32ff78){_0x5de215[_0x4810('0x61')](getAgents(_0x1d7950,_0x32ff78));});}});return BPromise[_0x4810('0x62')](_0x5de215)[_0x4810('0x2b')](function(_0x9bacda){_0x51698f=_[_0x4810('0x5c')](_0x51698f,_['flatten'](_0x9bacda));_0x4ad186(_0x51698f);})[_0x4810('0x54')](function(_0x12f001){_0x5bb223(_0x12f001);});});}function getAgents(_0x3e478b,_0x320ea9){return new BPromise(function(_0x21881d,_0x13871f){return db[_0x3e478b][_0x4810('0x56')]({'where':{'id':_0x320ea9}})['then'](function(_0x2aa53c){return _0x2aa53c[_0x4810('0x63')]({'attributes':['id'],'raw':!![]})[_0x4810('0x2b')](function(_0x3aa881){var _0x565331=_['map'](_0x3aa881,'id');_0x21881d(_0x565331);});})[_0x4810('0x54')](function(_0x391b09){_0x13871f(_0x391b09);});});}
\ No newline at end of file
+var _0xe6ca=['status','json','offset','undefined','limit','count','apply','reject','save','update','then','end','sendStatus','error','stack','name','send','body','text','hasOwnProperty','Sequelize','ValidationError','TemplateId','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','openchannelqueue','voicequeue','whatsappqueue','some','includes','toLowerCase','senderName','user','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','sequelize','transaction','UserNotification','create','forEach','recipient','emit','userNotification:send','catch','Template','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','User','ids','queue','Queue','push','all','union','findOne','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./userNotification.socket'];(function(_0x35007a,_0x58a0d4){var _0x574f68=function(_0xd1c129){while(--_0xd1c129){_0x35007a['push'](_0x35007a['shift']());}};_0x574f68(++_0x58a0d4);}(_0xe6ca,0xa5));var _0xae6c=function(_0x4a0f8e,_0xcee8fe){_0x4a0f8e=_0x4a0f8e-0x0;var _0x215ee0=_0xe6ca[_0x4a0f8e];return _0x215ee0;};'use strict';var emlformat=require(_0xae6c('0x0'));var rimraf=require(_0xae6c('0x1'));var zipdir=require(_0xae6c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xae6c('0x3'));var moment=require(_0xae6c('0x4'));var BPromise=require(_0xae6c('0x5'));var Mustache=require(_0xae6c('0x6'));var util=require(_0xae6c('0x7'));var path=require('path');var sox=require(_0xae6c('0x8'));var csv=require(_0xae6c('0x9'));var ejs=require(_0xae6c('0xa'));var fs=require('fs');var fs_extra=require(_0xae6c('0xb'));var _=require(_0xae6c('0xc'));var squel=require(_0xae6c('0xd'));var crypto=require('crypto');var jsforce=require(_0xae6c('0xe'));var deskjs=require(_0xae6c('0xf'));var toCsv=require(_0xae6c('0x9'));var querystring=require(_0xae6c('0x10'));var Papa=require(_0xae6c('0x11'));var Redis=require(_0xae6c('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xae6c('0x13'));var as=require(_0xae6c('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xae6c('0x15'))('api');var utils=require(_0xae6c('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xae6c('0x17'));var db=require(_0xae6c('0x18'))['db'];config[_0xae6c('0x19')]=_['defaults'](config[_0xae6c('0x19')],{'host':_0xae6c('0x1a'),'port':0x18eb});var socket=require(_0xae6c('0x1b'))(new Redis(config[_0xae6c('0x19')]));require(_0xae6c('0x1c'))['register'](socket);function respondWithStatusCode(_0x230199,_0x27eaea){_0x27eaea=_0x27eaea||0xcc;return function(_0x38a656){if(_0x38a656){return _0x230199['sendStatus'](_0x27eaea);}return _0x230199['status'](_0x27eaea)['end']();};}function respondWithResult(_0x2d5c5c,_0x2518a4){_0x2518a4=_0x2518a4||0xc8;return function(_0x186836){if(_0x186836){return _0x2d5c5c[_0xae6c('0x1d')](_0x2518a4)[_0xae6c('0x1e')](_0x186836);}};}function respondWithFilteredResult(_0x307600,_0x2cd2b2){return function(_0x494e75){if(_0x494e75){var _0x460e25=typeof _0x2cd2b2[_0xae6c('0x1f')]===_0xae6c('0x20')&&typeof _0x2cd2b2[_0xae6c('0x21')]==='undefined';var _0x5d6d92=_0x494e75['count'];var _0x3b15d4=_0x460e25?0x0:_0x2cd2b2[_0xae6c('0x1f')];var _0x46bd6c=_0x460e25?_0x494e75[_0xae6c('0x22')]:_0x2cd2b2['offset']+_0x2cd2b2[_0xae6c('0x21')];var _0x5edf71;if(_0x46bd6c>=_0x5d6d92){_0x46bd6c=_0x5d6d92;_0x5edf71=0xc8;}else{_0x5edf71=0xce;}_0x307600[_0xae6c('0x1d')](_0x5edf71);return _0x307600['set']('Content-Range',_0x3b15d4+'-'+_0x46bd6c+'/'+_0x5d6d92)['json'](_0x494e75);}return null;};}function patchUpdates(_0x5e39f4){return function(_0xa1aaa3){try{jsonpatch[_0xae6c('0x23')](_0xa1aaa3,_0x5e39f4,!![]);}catch(_0x59277f){return BPromise[_0xae6c('0x24')](_0x59277f);}return _0xa1aaa3[_0xae6c('0x25')]();};}function saveUpdates(_0x397a5c,_0x3814c9){return function(_0x48eedc){if(_0x48eedc){return _0x48eedc[_0xae6c('0x26')](_0x397a5c)[_0xae6c('0x27')](function(_0xe4495c){return _0xe4495c;});}return null;};}function removeEntity(_0x2b70fc,_0x4213a8){return function(_0x9b42ed){if(_0x9b42ed){return _0x9b42ed['destroy']()[_0xae6c('0x27')](function(){_0x2b70fc[_0xae6c('0x1d')](0xcc)[_0xae6c('0x28')]();});}};}function handleEntityNotFound(_0x3ec390,_0x2b0e95){return function(_0x445b72){if(!_0x445b72){_0x3ec390[_0xae6c('0x29')](0x194);}return _0x445b72;};}function handleError(_0x5c4b22,_0x3204ac){_0x3204ac=_0x3204ac||0x1f4;return function(_0x3a5668){logger[_0xae6c('0x2a')](_0x3a5668[_0xae6c('0x2b')]);if(_0x3a5668[_0xae6c('0x2c')]){delete _0x3a5668['name'];}_0x5c4b22[_0xae6c('0x1d')](_0x3204ac)[_0xae6c('0x2d')](_0x3a5668);};}exports['sendUserNotification']=function(_0x47bd94,_0x1456b8,_0x2f7d21){if(!_0x47bd94[_0xae6c('0x2e')]['hasOwnProperty'](_0xae6c('0x2f'))&&!_0x47bd94[_0xae6c('0x2e')][_0xae6c('0x30')]('TemplateId')){throw new db[(_0xae6c('0x31'))][(_0xae6c('0x32'))]('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x47bd94[_0xae6c('0x2e')]['hasOwnProperty'](_0xae6c('0x33'))&&!_0x47bd94[_0xae6c('0x2e')][_0xae6c('0x30')](_0xae6c('0x34'))){throw new db[(_0xae6c('0x31'))][(_0xae6c('0x32'))](_0xae6c('0x35'));}if(!_0x47bd94['body'][_0xae6c('0x30')](_0xae6c('0x36'))){throw new db[(_0xae6c('0x31'))][(_0xae6c('0x32'))](_0xae6c('0x37'));}else{try{var _0x2f450c=JSON[_0xae6c('0x38')](_0x47bd94[_0xae6c('0x2e')][_0xae6c('0x36')]);}catch(_0x199e26){logger['error'](_0x199e26);throw new db[(_0xae6c('0x31'))]['ValidationError'](_0xae6c('0x39'));}var _0x48a769=[_0xae6c('0x3a'),_0xae6c('0x3b'),'mailqueue',_0xae6c('0x3c'),'smsqueue',_0xae6c('0x3d'),_0xae6c('0x3e'),'team','user'];if(_[_0xae6c('0x3f')](_0x2f450c,function(_0x6601b9){return!_[_0xae6c('0x40')](_0x48a769,_0x6601b9['model'][_0xae6c('0x41')]());})){throw new db[(_0xae6c('0x31'))][(_0xae6c('0x32'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x204a97={};_0x204a97[_0xae6c('0x42')]=_0x47bd94[_0xae6c('0x2e')][_0xae6c('0x30')]('senderName')?_0x47bd94[_0xae6c('0x2e')][_0xae6c('0x42')]:_0x47bd94[_0xae6c('0x43')]['fullname'];_0x204a97[_0xae6c('0x44')]=_[_0xae6c('0x45')](_0x47bd94['body'][_0xae6c('0x44')])?null:_0x47bd94[_0xae6c('0x2e')][_0xae6c('0x44')];_0x204a97['beep']=_0x47bd94[_0xae6c('0x2e')][_0xae6c('0x46')]||![];_0x204a97[_0xae6c('0x47')]=_0x47bd94['user']['id'];return getContent(_0x47bd94[_0xae6c('0x2e')])[_0xae6c('0x27')](function(_0x556345){_0x204a97[_0xae6c('0x2e')]=_0x556345;return getRecipients(_0x2f450c);})[_0xae6c('0x27')](function(_0x597585){_0x204a97[_0xae6c('0x48')]=_[_0xae6c('0x49')](_0x597585)[_0xae6c('0x4a')](',');return db[_0xae6c('0x4b')][_0xae6c('0x4c')](function(_0x37c845){return db[_0xae6c('0x4d')][_0xae6c('0x4e')](_0x204a97,{'raw':!![],'transaction':_0x37c845})[_0xae6c('0x27')](function(_0x420ffe){var _0x45b114={'sender':_0x204a97[_0xae6c('0x42')],'description':_0x204a97[_0xae6c('0x44')],'content':_0x204a97[_0xae6c('0x2e')],'beep':_0x204a97['beep']};_0x597585[_0xae6c('0x4f')](function(_0x54694a){_0x45b114[_0xae6c('0x50')]=_0x54694a;socket[_0xae6c('0x51')](_0xae6c('0x52'),_0x45b114);});return _0x420ffe;});});})[_0xae6c('0x27')](respondWithResult(_0x1456b8,0xc9))[_0xae6c('0x53')](handleError(_0x1456b8,null));};function getContent(_0x11ff2c){return new BPromise(function(_0x38f99d,_0x339b85){if(_0x11ff2c[_0xae6c('0x2f')]){_0x38f99d(_0x11ff2c['text']);return;}return db[_0xae6c('0x54')]['findOne']({'attributes':[_0xae6c('0x55')],'where':{'id':_0x11ff2c[_0xae6c('0x33')]},'raw':!![]})[_0xae6c('0x27')](function(_0x1765f1){if(!_0x1765f1)throw new db['Sequelize'][(_0xae6c('0x32'))](_0xae6c('0x56'));var _0x3b622c=Mustache[_0xae6c('0x57')](_0x1765f1['html'],_0x11ff2c[_0xae6c('0x34')]);_0x38f99d(_0x3b622c);})[_0xae6c('0x53')](function(_0x370ff0){_0x339b85(_0x370ff0);});});}function getRecipients(_0xf58cb0){return new BPromise(function(_0x241dab,_0x281054){var _0x39a256=[];var _0x55cb54=[];_0xf58cb0[_0xae6c('0x4f')](function(_0x3f4bc3){var _0x43aca0=_['startCase'](_0x3f4bc3['model'][_0xae6c('0x41')]());if(_0x43aca0===_0xae6c('0x58')){_0x39a256=_['union'](_0x39a256,_0x3f4bc3[_0xae6c('0x59')]);}else{if(_[_0xae6c('0x40')](_0x43aca0,'queue'))_0x43aca0=_0x43aca0['replace'](_0xae6c('0x5a'),_0xae6c('0x5b'));_0x3f4bc3[_0xae6c('0x59')][_0xae6c('0x4f')](function(_0x52e548){_0x55cb54[_0xae6c('0x5c')](getAgents(_0x43aca0,_0x52e548));});}});return BPromise[_0xae6c('0x5d')](_0x55cb54)[_0xae6c('0x27')](function(_0x3a1734){_0x39a256=_[_0xae6c('0x5e')](_0x39a256,_['flatten'](_0x3a1734));_0x241dab(_0x39a256);})['catch'](function(_0x36f934){_0x281054(_0x36f934);});});}function getAgents(_0x1ffb8a,_0x54629b){return new BPromise(function(_0x239b92,_0x4543d3){return db[_0x1ffb8a][_0xae6c('0x5f')]({'where':{'id':_0x54629b}})[_0xae6c('0x27')](function(_0x439447){return _0x439447[_0xae6c('0x60')]({'attributes':['id'],'raw':!![]})[_0xae6c('0x27')](function(_0x3bc11f){var _0x4e9dc1=_['map'](_0x3bc11f,'id');_0x239b92(_0x4e9dc1);});})[_0xae6c('0x53')](function(_0x1d50eb){_0x4543d3(_0x1d50eb);});});}
\ No newline at end of file
index 45d7c5d..642ba26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb66=['hasOwnProperty','hook','exports','events','UserNotification','setMaxListeners','save','update','remove','emit'];(function(_0x250071,_0x301941){var _0x34e574=function(_0x567186){while(--_0x567186){_0x250071['push'](_0x250071['shift']());}};_0x34e574(++_0x301941);}(_0xcb66,0x107));var _0x6cb6=function(_0x4c05da,_0x414720){_0x4c05da=_0x4c05da-0x0;var _0x1614db=_0xcb66[_0x4c05da];return _0x1614db;};'use strict';var EventEmitter=require(_0x6cb6('0x0'));var UserNotification=require('../../mysqldb')['db'][_0x6cb6('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x6cb6('0x2')](0x0);var events={'afterCreate':_0x6cb6('0x3'),'afterUpdate':_0x6cb6('0x4'),'afterDestroy':_0x6cb6('0x5')};function emitEvent(_0x2dda10){return function(_0x2ff689,_0x5f2fc7,_0x56d19b){UserNotificationEvents[_0x6cb6('0x6')](_0x2dda10+':'+_0x2ff689['id'],_0x2ff689);UserNotificationEvents[_0x6cb6('0x6')](_0x2dda10,_0x2ff689);_0x56d19b(null);};}for(var e in events){if(events[_0x6cb6('0x7')](e)){var event=events[e];UserNotification[_0x6cb6('0x8')](e,emitEvent(event));}}module[_0x6cb6('0x9')]=UserNotificationEvents;
\ No newline at end of file
+var _0xdb14=['hook','exports','events','../../mysqldb','UserNotification','save','update','remove','emit','hasOwnProperty'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xdb14,0x106));var _0x4db1=function(_0x486f0b,_0x19a9b7){_0x486f0b=_0x486f0b-0x0;var _0x12ccaf=_0xdb14[_0x486f0b];return _0x12ccaf;};'use strict';var EventEmitter=require(_0x4db1('0x0'));var UserNotification=require(_0x4db1('0x1'))['db'][_0x4db1('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4db1('0x3'),'afterUpdate':_0x4db1('0x4'),'afterDestroy':_0x4db1('0x5')};function emitEvent(_0xfa65f7){return function(_0xa1b2b,_0x279cf3,_0x559e91){UserNotificationEvents[_0x4db1('0x6')](_0xfa65f7+':'+_0xa1b2b['id'],_0xa1b2b);UserNotificationEvents['emit'](_0xfa65f7,_0xa1b2b);_0x559e91(null);};}for(var e in events){if(events[_0x4db1('0x7')](e)){var event=events[e];UserNotification[_0x4db1('0x8')](e,emitEvent(event));}}module[_0x4db1('0x9')]=UserNotificationEvents;
\ No newline at end of file
index f43ed2d..1e37324 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6db6=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','path','rimraf','../../config/environment','define','UserNotification','userNotifications','utf8mb4'];(function(_0x549508,_0x33d8ad){var _0x4d07c3=function(_0x24cde3){while(--_0x24cde3){_0x549508['push'](_0x549508['shift']());}};_0x4d07c3(++_0x33d8ad);}(_0x6db6,0x9d));var _0x66db=function(_0x530c07,_0x3c32bd){_0x530c07=_0x530c07-0x0;var _0x270f1d=_0x6db6[_0x530c07];return _0x270f1d;};'use strict';var _=require(_0x66db('0x0'));var util=require(_0x66db('0x1'));var logger=require(_0x66db('0x2'))(_0x66db('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x66db('0x4'));var rimraf=require(_0x66db('0x5'));var config=require(_0x66db('0x6'));var attributes=require('./userNotification.attributes');module['exports']=function(_0x574be5,_0x470ca5){return _0x574be5[_0x66db('0x7')](_0x66db('0x8'),attributes,{'tableName':_0x66db('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x66db('0xa'),'collate':_0x66db('0xb')});};
\ No newline at end of file
+var _0x7dc8=['define','userNotifications','utf8mb4','api','moment','bluebird','request-promise','path','../../config/environment','./userNotification.attributes','exports'];(function(_0x188d31,_0x576e87){var _0x30ed33=function(_0x15f9a5){while(--_0x15f9a5){_0x188d31['push'](_0x188d31['shift']());}};_0x30ed33(++_0x576e87);}(_0x7dc8,0x1b0));var _0x87dc=function(_0x4ee842,_0x160c3f){_0x4ee842=_0x4ee842-0x0;var _0x27826f=_0x7dc8[_0x4ee842];return _0x27826f;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x87dc('0x0'));var moment=require(_0x87dc('0x1'));var BPromise=require(_0x87dc('0x2'));var rp=require(_0x87dc('0x3'));var fs=require('fs');var path=require(_0x87dc('0x4'));var rimraf=require('rimraf');var config=require(_0x87dc('0x5'));var attributes=require(_0x87dc('0x6'));module[_0x87dc('0x7')]=function(_0x1773d2,_0x57af01){return _0x1773d2[_0x87dc('0x8')]('UserNotification',attributes,{'tableName':_0x87dc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x87dc('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index c4dd9d8..b682cc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb549=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./userNotification.socket','register','request','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'];(function(_0x483e50,_0xf30714){var _0x4e3456=function(_0x21edd1){while(--_0x21edd1){_0x483e50['push'](_0x483e50['shift']());}};_0x4e3456(++_0xf30714);}(_0xb549,0x176));var _0x9b54=function(_0x653afa,_0x38528b){_0x653afa=_0x653afa-0x0;var _0x4c22f1=_0xb549[_0x653afa];return _0x4c22f1;};'use strict';var _=require(_0x9b54('0x0'));var util=require(_0x9b54('0x1'));var moment=require(_0x9b54('0x2'));var BPromise=require(_0x9b54('0x3'));var rs=require(_0x9b54('0x4'));var fs=require('fs');var Redis=require(_0x9b54('0x5'));var db=require(_0x9b54('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x9b54('0x7'))('rpc');var config=require(_0x9b54('0x8'));var jayson=require(_0x9b54('0x9'));var client=jayson['client'][_0x9b54('0xa')]({'port':0x232a});config[_0x9b54('0xb')]=_['defaults'](config['redis'],{'host':_0x9b54('0xc'),'port':0x18eb});var socket=require(_0x9b54('0xd'))(new Redis(config[_0x9b54('0xb')]));require(_0x9b54('0xe'))[_0x9b54('0xf')](socket);function respondWithRpcPromise(_0x2464a4,_0x2a89ff,_0x3f8e9c){return new BPromise(function(_0x4ded2b,_0x309108){return client[_0x9b54('0x10')](_0x2464a4,_0x3f8e9c)[_0x9b54('0x11')](function(_0x337730){logger[_0x9b54('0x12')](_0x9b54('0x13'),_0x2a89ff,_0x9b54('0x14'));logger[_0x9b54('0x15')](_0x9b54('0x16'),_0x2a89ff,_0x9b54('0x14'),JSON[_0x9b54('0x17')](_0x337730));if(_0x337730[_0x9b54('0x18')]){if(_0x337730[_0x9b54('0x18')][_0x9b54('0x19')]===0x1f4){logger[_0x9b54('0x18')](_0x9b54('0x13'),_0x2a89ff,_0x337730['error'][_0x9b54('0x1a')]);return _0x309108(_0x337730['error'][_0x9b54('0x1a')]);}logger[_0x9b54('0x18')](_0x9b54('0x13'),_0x2a89ff,_0x337730[_0x9b54('0x18')]['message']);return _0x4ded2b(_0x337730[_0x9b54('0x18')][_0x9b54('0x1a')]);}else{logger[_0x9b54('0x12')](_0x9b54('0x13'),_0x2a89ff,_0x9b54('0x14'));_0x4ded2b(_0x337730[_0x9b54('0x1b')][_0x9b54('0x1a')]);}})[_0x9b54('0x1c')](function(_0x2a544f){logger['error'](_0x9b54('0x13'),_0x2a89ff,_0x2a544f);_0x309108(_0x2a544f);});});}
\ No newline at end of file
+var _0x6b9b=['result','catch','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','./userNotification.socket','request','then','info','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','UserNotification,\x20%s,\x20%s','message'];(function(_0x17052f,_0x15d288){var _0x30c0fe=function(_0x1f9ee0){while(--_0x1f9ee0){_0x17052f['push'](_0x17052f['shift']());}};_0x30c0fe(++_0x15d288);}(_0x6b9b,0x161));var _0xb6b9=function(_0x4ce9d8,_0x5aca2c){_0x4ce9d8=_0x4ce9d8-0x0;var _0x260e5a=_0x6b9b[_0x4ce9d8];return _0x260e5a;};'use strict';var _=require(_0xb6b9('0x0'));var util=require('util');var moment=require(_0xb6b9('0x1'));var BPromise=require('bluebird');var rs=require(_0xb6b9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb6b9('0x3'))['db'];var utils=require(_0xb6b9('0x4'));var logger=require(_0xb6b9('0x5'))(_0xb6b9('0x6'));var config=require('../../config/environment');var jayson=require(_0xb6b9('0x7'));var client=jayson[_0xb6b9('0x8')][_0xb6b9('0x9')]({'port':0x232a});config['redis']=_[_0xb6b9('0xa')](config['redis'],{'host':_0xb6b9('0xb'),'port':0x18eb});var socket=require(_0xb6b9('0xc'))(new Redis(config[_0xb6b9('0xd')]));require(_0xb6b9('0xe'))['register'](socket);function respondWithRpcPromise(_0x3b85df,_0x3db187,_0x4b1cca){return new BPromise(function(_0x457c9e,_0x4a6cc5){return client[_0xb6b9('0xf')](_0x3b85df,_0x4b1cca)[_0xb6b9('0x10')](function(_0x487f51){logger[_0xb6b9('0x11')]('UserNotification,\x20%s,\x20%s',_0x3db187,_0xb6b9('0x12'));logger[_0xb6b9('0x13')](_0xb6b9('0x14'),_0x3db187,_0xb6b9('0x12'),JSON[_0xb6b9('0x15')](_0x487f51));if(_0x487f51[_0xb6b9('0x16')]){if(_0x487f51['error']['code']===0x1f4){logger[_0xb6b9('0x16')](_0xb6b9('0x17'),_0x3db187,_0x487f51['error']['message']);return _0x4a6cc5(_0x487f51[_0xb6b9('0x16')][_0xb6b9('0x18')]);}logger[_0xb6b9('0x16')](_0xb6b9('0x17'),_0x3db187,_0x487f51[_0xb6b9('0x16')][_0xb6b9('0x18')]);return _0x457c9e(_0x487f51[_0xb6b9('0x16')]['message']);}else{logger[_0xb6b9('0x11')](_0xb6b9('0x17'),_0x3db187,_0xb6b9('0x12'));_0x457c9e(_0x487f51[_0xb6b9('0x19')][_0xb6b9('0x18')]);}})[_0xb6b9('0x1a')](function(_0x311717){logger[_0xb6b9('0x16')](_0xb6b9('0x17'),_0x3db187,_0x311717);_0x4a6cc5(_0x311717);});});}
\ No newline at end of file
index 43eb424..1c7a86a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1d1=['userNotification:','./userNotification.events','save','remove','emit','removeListener','register','length'];(function(_0x526625,_0x15cb75){var _0x36bb0c=function(_0x313102){while(--_0x313102){_0x526625['push'](_0x526625['shift']());}};_0x36bb0c(++_0x15cb75);}(_0xe1d1,0x159));var _0x1e1d=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0xe1d1[_0x1e4360];return _0x31e6b4;};'use strict';var UserNotificationEvents=require(_0x1e1d('0x0'));var events=[_0x1e1d('0x1'),_0x1e1d('0x2'),'update'];function createListener(_0x170d2e,_0x45ca40){return function(_0xe7846f){_0x45ca40[_0x1e1d('0x3')](_0x170d2e,_0xe7846f);};}function removeListener(_0x386955,_0x20c3d5){return function(){UserNotificationEvents[_0x1e1d('0x4')](_0x386955,_0x20c3d5);};}exports[_0x1e1d('0x5')]=function(_0x421fbe){for(var _0x3519a4=0x0,_0x4cc010=events[_0x1e1d('0x6')];_0x3519a4<_0x4cc010;_0x3519a4++){var _0x165d7a=events[_0x3519a4];var _0x3ce9aa=createListener(_0x1e1d('0x7')+_0x165d7a,_0x421fbe);UserNotificationEvents['on'](_0x165d7a,_0x3ce9aa);}};
\ No newline at end of file
+var _0x73e7=['emit','length','userNotification:','./userNotification.events','save','remove','update'];(function(_0x4803ed,_0x2fd324){var _0x4f5677=function(_0x47f123){while(--_0x47f123){_0x4803ed['push'](_0x4803ed['shift']());}};_0x4f5677(++_0x2fd324);}(_0x73e7,0x1a7));var _0x773e=function(_0x1d8a2b,_0x364f7b){_0x1d8a2b=_0x1d8a2b-0x0;var _0x579810=_0x73e7[_0x1d8a2b];return _0x579810;};'use strict';var UserNotificationEvents=require(_0x773e('0x0'));var events=[_0x773e('0x1'),_0x773e('0x2'),_0x773e('0x3')];function createListener(_0x30080d,_0x3b2d72){return function(_0x5c8c46){_0x3b2d72[_0x773e('0x4')](_0x30080d,_0x5c8c46);};}function removeListener(_0x2f726a,_0x2c6960){return function(){UserNotificationEvents['removeListener'](_0x2f726a,_0x2c6960);};}exports['register']=function(_0x5bd362){for(var _0x4bb955=0x0,_0x52b287=events[_0x773e('0x5')];_0x4bb955<_0x52b287;_0x4bb955++){var _0x57425d=events[_0x4bb955];var _0x55c258=createListener(_0x773e('0x6')+_0x57425d,_0x5bd362);UserNotificationEvents['on'](_0x57425d,_0x55c258);}};
\ No newline at end of file
index d98bc24..6cf2ee5 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(_0x2e8a6e,_0x18e64f){var _0x259829=function(_0x230dac){while(--_0x230dac){_0x2e8a6e['push'](_0x2e8a6e['shift']());}};_0x259829(++_0x18e64f);}(_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'));module['exports']=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x5908a8,_0x1d5503){var _0x584046=function(_0x172b02){while(--_0x172b02){_0x5908a8['push'](_0x5908a8['shift']());}};_0x584046(++_0x1d5503);}(_0xedd9,0xfc));var _0x9edd=function(_0x7d3263,_0x402cf6){_0x7d3263=_0x7d3263-0x0;var _0x91a7cf=_0xedd9[_0x7d3263];return _0x91a7cf;};'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
index ff1e2ea..fbb8bf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207c=['exports','INTEGER'];(function(_0x54a2e4,_0x1ff92c){var _0x4742d0=function(_0x147a6f){while(--_0x147a6f){_0x54a2e4['push'](_0x54a2e4['shift']());}};_0x4742d0(++_0x1ff92c);}(_0x207c,0x1e8));var _0xc207=function(_0x44a94,_0x39f323){_0x44a94=_0x44a94-0x0;var _0x31ef56=_0x207c[_0x44a94];return _0x31ef56;};'use strict';var Sequelize=require('sequelize');module[_0xc207('0x0')]={'penalty':{'type':Sequelize[_0xc207('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2562=['sequelize','exports'];(function(_0x1e6a2e,_0x4e521a){var _0x4ec462=function(_0x47a934){while(--_0x47a934){_0x1e6a2e['push'](_0x1e6a2e['shift']());}};_0x4ec462(++_0x4e521a);}(_0x2562,0x70));var _0x2256=function(_0x32fb3c,_0x3840b3){_0x32fb3c=_0x32fb3c-0x0;var _0xf5656=_0x2562[_0x32fb3c];return _0xf5656;};'use strict';var Sequelize=require(_0x2256('0x0'));module[_0x2256('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index f79aa4c..7198bbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x336c=['api','moment','bluebird','request-promise','path','../../config/environment','./userOpenchannelQueue.attributes','exports','UserOpenchannelQueue','user_has_openchannel_queues','lodash'];(function(_0xd9f102,_0x5a0d28){var _0x2652e4=function(_0x5021a1){while(--_0x5021a1){_0xd9f102['push'](_0xd9f102['shift']());}};_0x2652e4(++_0x5a0d28);}(_0x336c,0x16a));var _0xc336=function(_0x4d98cc,_0x39b8a3){_0x4d98cc=_0x4d98cc-0x0;var _0x493fe3=_0x336c[_0x4d98cc];return _0x493fe3;};'use strict';var _=require(_0xc336('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc336('0x1'));var moment=require(_0xc336('0x2'));var BPromise=require(_0xc336('0x3'));var rp=require(_0xc336('0x4'));var fs=require('fs');var path=require(_0xc336('0x5'));var rimraf=require('rimraf');var config=require(_0xc336('0x6'));var attributes=require(_0xc336('0x7'));module[_0xc336('0x8')]=function(_0x470c2f,_0x16fced){return _0x470c2f['define'](_0xc336('0x9'),attributes,{'tableName':_0xc336('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0ec3=['request-promise','path','../../config/environment','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','moment','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0ec3,0x1dc));var _0x30ec=function(_0xc32e17,_0x513fcc){_0xc32e17=_0xc32e17-0x0;var _0x413870=_0x0ec3[_0xc32e17];return _0x413870;};'use strict';var _=require(_0x30ec('0x0'));var util=require(_0x30ec('0x1'));var logger=require(_0x30ec('0x2'))('api');var moment=require(_0x30ec('0x3'));var BPromise=require(_0x30ec('0x4'));var rp=require(_0x30ec('0x5'));var fs=require('fs');var path=require(_0x30ec('0x6'));var rimraf=require('rimraf');var config=require(_0x30ec('0x7'));var attributes=require(_0x30ec('0x8'));module[_0x30ec('0x9')]=function(_0x1220fd,_0x5b9721){return _0x1220fd[_0x30ec('0xa')](_0x30ec('0xb'),attributes,{'tableName':_0x30ec('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a22fd34..fddce13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06d6=['result','catch','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','stringify','error','code','UserOpenchannelQueue,\x20%s,\x20%s','message'];(function(_0x8de54f,_0x271987){var _0x14cba4=function(_0x58ed41){while(--_0x58ed41){_0x8de54f['push'](_0x8de54f['shift']());}};_0x14cba4(++_0x271987);}(_0x06d6,0x167));var _0x606d=function(_0x507a4d,_0x29f32b){_0x507a4d=_0x507a4d-0x0;var _0x52c824=_0x06d6[_0x507a4d];return _0x52c824;};'use strict';var _=require('lodash');var util=require(_0x606d('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x606d('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x606d('0x2'))['db'];var utils=require(_0x606d('0x3'));var logger=require(_0x606d('0x4'))(_0x606d('0x5'));var config=require(_0x606d('0x6'));var jayson=require(_0x606d('0x7'));var client=jayson[_0x606d('0x8')][_0x606d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x20002c,_0x1680a6,_0x22e5c4){return new BPromise(function(_0x56ccca,_0x5f22b5){return client['request'](_0x20002c,_0x22e5c4)[_0x606d('0xa')](function(_0x5444cb){logger[_0x606d('0xb')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x1680a6,_0x606d('0xc'));logger[_0x606d('0xd')]('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x1680a6,'request\x20sent',JSON[_0x606d('0xe')](_0x5444cb));if(_0x5444cb[_0x606d('0xf')]){if(_0x5444cb[_0x606d('0xf')][_0x606d('0x10')]===0x1f4){logger[_0x606d('0xf')](_0x606d('0x11'),_0x1680a6,_0x5444cb[_0x606d('0xf')]['message']);return _0x5f22b5(_0x5444cb[_0x606d('0xf')][_0x606d('0x12')]);}logger[_0x606d('0xf')](_0x606d('0x11'),_0x1680a6,_0x5444cb[_0x606d('0xf')][_0x606d('0x12')]);return _0x56ccca(_0x5444cb[_0x606d('0xf')]['message']);}else{logger[_0x606d('0xb')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x1680a6,_0x606d('0xc'));_0x56ccca(_0x5444cb[_0x606d('0x13')]['message']);}})[_0x606d('0x14')](function(_0x3e98bc){logger[_0x606d('0xf')](_0x606d('0x11'),_0x1680a6,_0x3e98bc);_0x5f22b5(_0x3e98bc);});});}
\ No newline at end of file
+var _0x4071=['http','then','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2f73a0,_0xe3bcba){var _0x33e612=function(_0x3473e9){while(--_0x3473e9){_0x2f73a0['push'](_0x2f73a0['shift']());}};_0x33e612(++_0xe3bcba);}(_0x4071,0x6f));var _0x1407=function(_0x26fe87,_0x3ba11f){_0x26fe87=_0x26fe87-0x0;var _0xa72c65=_0x4071[_0x26fe87];return _0xa72c65;};'use strict';var _=require(_0x1407('0x0'));var util=require(_0x1407('0x1'));var moment=require(_0x1407('0x2'));var BPromise=require(_0x1407('0x3'));var rs=require(_0x1407('0x4'));var fs=require('fs');var Redis=require(_0x1407('0x5'));var db=require(_0x1407('0x6'))['db'];var utils=require(_0x1407('0x7'));var logger=require(_0x1407('0x8'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x1407('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x32fc1e,_0x13916f,_0x15a6f2){return new BPromise(function(_0x577b5c,_0x21f83a){return client['request'](_0x32fc1e,_0x15a6f2)[_0x1407('0xa')](function(_0xd0f605){logger[_0x1407('0xb')](_0x1407('0xc'),_0x13916f,_0x1407('0xd'));logger[_0x1407('0xe')](_0x1407('0xf'),_0x13916f,_0x1407('0xd'),JSON[_0x1407('0x10')](_0xd0f605));if(_0xd0f605[_0x1407('0x11')]){if(_0xd0f605['error'][_0x1407('0x12')]===0x1f4){logger['error']('UserOpenchannelQueue,\x20%s,\x20%s',_0x13916f,_0xd0f605[_0x1407('0x11')][_0x1407('0x13')]);return _0x21f83a(_0xd0f605['error']['message']);}logger['error'](_0x1407('0xc'),_0x13916f,_0xd0f605['error']['message']);return _0x577b5c(_0xd0f605[_0x1407('0x11')]['message']);}else{logger[_0x1407('0xb')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x13916f,_0x1407('0xd'));_0x577b5c(_0xd0f605['result']['message']);}})['catch'](function(_0x453b4f){logger['error'](_0x1407('0xc'),_0x13916f,_0x453b4f);_0x21f83a(_0x453b4f);});});}
\ No newline at end of file
index 2146263..87029ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27c5=['addResources','update','delete','destroy','removeSections','removeResources','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','isAuthenticated','/:id','/:id/sections','getSections','/:id/resources','getResources','post','create','clone','addSections'];(function(_0x35f616,_0xc97542){var _0x4057dc=function(_0x526fd9){while(--_0x526fd9){_0x35f616['push'](_0x35f616['shift']());}};_0x4057dc(++_0xc97542);}(_0x27c5,0x173));var _0x527c=function(_0x2a829f,_0x1b0c15){_0x2a829f=_0x2a829f-0x0;var _0x5737c3=_0x27c5[_0x2a829f];return _0x5737c3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x527c('0x0'));var timeout=require(_0x527c('0x1'));var express=require(_0x527c('0x2'));var router=express['Router']();var fs_extra=require(_0x527c('0x3'));var auth=require(_0x527c('0x4'));var interaction=require(_0x527c('0x5'));var config=require(_0x527c('0x6'));var controller=require(_0x527c('0x7'));router[_0x527c('0x8')]('/',auth[_0x527c('0x9')](),controller['index']);router[_0x527c('0x8')]('/describe',auth[_0x527c('0x9')](),controller['describe']);router[_0x527c('0x8')](_0x527c('0xa'),auth[_0x527c('0x9')](),controller['show']);router[_0x527c('0x8')](_0x527c('0xb'),auth[_0x527c('0x9')](),controller[_0x527c('0xc')]);router[_0x527c('0x8')](_0x527c('0xd'),auth[_0x527c('0x9')](),controller[_0x527c('0xe')]);router[_0x527c('0xf')]('/',auth[_0x527c('0x9')](),controller[_0x527c('0x10')]);router['post']('/:id/clone',auth[_0x527c('0x9')](),controller[_0x527c('0x11')]);router[_0x527c('0xf')](_0x527c('0xb'),auth['isAuthenticated'](),controller[_0x527c('0x12')]);router[_0x527c('0xf')]('/:id/resources',auth['isAuthenticated'](),controller[_0x527c('0x13')]);router['put']('/:id',auth[_0x527c('0x9')](),controller[_0x527c('0x14')]);router[_0x527c('0x15')]('/:id',auth[_0x527c('0x9')](),controller[_0x527c('0x16')]);router['delete'](_0x527c('0xb'),auth['isAuthenticated'](),controller[_0x527c('0x17')]);router[_0x527c('0x15')]('/:id/resources',auth['isAuthenticated'](),controller[_0x527c('0x18')]);module[_0x527c('0x19')]=router;
\ No newline at end of file
+var _0x01b5=['get','isAuthenticated','index','/describe','describe','/:id','/:id/sections','getSections','/:id/resources','getResources','post','create','clone','addSections','addResources','update','delete','destroy','removeSections','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','./userProfile.controller'];(function(_0x98023f,_0x158398){var _0x2e33b3=function(_0x28e99b){while(--_0x28e99b){_0x98023f['push'](_0x98023f['shift']());}};_0x2e33b3(++_0x158398);}(_0x01b5,0xa0));var _0x501b=function(_0x2ad228,_0x3a77c8){_0x2ad228=_0x2ad228-0x0;var _0x13010c=_0x01b5[_0x2ad228];return _0x13010c;};'use strict';var multer=require(_0x501b('0x0'));var util=require(_0x501b('0x1'));var path=require(_0x501b('0x2'));var timeout=require(_0x501b('0x3'));var express=require(_0x501b('0x4'));var router=express[_0x501b('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x501b('0x6'));var config=require('../../config/environment');var controller=require(_0x501b('0x7'));router[_0x501b('0x8')]('/',auth[_0x501b('0x9')](),controller[_0x501b('0xa')]);router['get'](_0x501b('0xb'),auth[_0x501b('0x9')](),controller[_0x501b('0xc')]);router[_0x501b('0x8')](_0x501b('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x501b('0x8')](_0x501b('0xe'),auth[_0x501b('0x9')](),controller[_0x501b('0xf')]);router['get'](_0x501b('0x10'),auth[_0x501b('0x9')](),controller[_0x501b('0x11')]);router[_0x501b('0x12')]('/',auth['isAuthenticated'](),controller[_0x501b('0x13')]);router[_0x501b('0x12')]('/:id/clone',auth[_0x501b('0x9')](),controller[_0x501b('0x14')]);router[_0x501b('0x12')](_0x501b('0xe'),auth['isAuthenticated'](),controller[_0x501b('0x15')]);router[_0x501b('0x12')]('/:id/resources',auth[_0x501b('0x9')](),controller[_0x501b('0x16')]);router['put'](_0x501b('0xd'),auth[_0x501b('0x9')](),controller[_0x501b('0x17')]);router[_0x501b('0x18')](_0x501b('0xd'),auth[_0x501b('0x9')](),controller[_0x501b('0x19')]);router[_0x501b('0x18')](_0x501b('0xe'),auth[_0x501b('0x9')](),controller[_0x501b('0x1a')]);router[_0x501b('0x18')](_0x501b('0x10'),auth['isAuthenticated'](),controller['removeResources']);module[_0x501b('0x1b')]=router;
\ No newline at end of file
index 5a2afc3..fd0e495 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5438=['sequelize','exports','STRING','name','crudPermissions','join','getDataValue','split','BOOLEAN'];(function(_0x4a3068,_0x3e5c96){var _0x1cdec9=function(_0x218ba4){while(--_0x218ba4){_0x4a3068['push'](_0x4a3068['shift']());}};_0x1cdec9(++_0x3e5c96);}(_0x5438,0x195));var _0x8543=function(_0x2a9a1e,_0x106b56){_0x2a9a1e=_0x2a9a1e-0x0;var _0x1c1f48=_0x5438[_0x2a9a1e];return _0x1c1f48;};'use strict';var Sequelize=require(_0x8543('0x0'));module[_0x8543('0x1')]={'name':{'type':Sequelize[_0x8543('0x2')],'allowNull':![],'unique':_0x8543('0x3')},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x4d9963){this['setDataValue'](_0x8543('0x4'),_0x4d9963?_0x4d9963[_0x8543('0x5')](''):[]);},'get':function(){return this[_0x8543('0x6')](_0x8543('0x4'))?this['getDataValue'](_0x8543('0x4'))[_0x8543('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x8543('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x8543('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x8543('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x8543('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x8543('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x8543('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x8543('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x8543('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x8543('0x8')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xd664=['join','getDataValue','split','BOOLEAN','sequelize','exports','STRING','name','crudPermissions'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0xd664,0xc1));var _0x4d66=function(_0x4d9f2d,_0x48c71e){_0x4d9f2d=_0x4d9f2d-0x0;var _0x32ceb0=_0xd664[_0x4d9f2d];return _0x32ceb0;};'use strict';var Sequelize=require(_0x4d66('0x0'));module[_0x4d66('0x1')]={'name':{'type':Sequelize[_0x4d66('0x2')],'allowNull':![],'unique':_0x4d66('0x3')},'crudPermissions':{'type':Sequelize[_0x4d66('0x2')],'set':function(_0x142113){this['setDataValue'](_0x4d66('0x4'),_0x142113?_0x142113[_0x4d66('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0x4d66('0x4'))?this[_0x4d66('0x6')](_0x4d66('0x4'))[_0x4d66('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x4d66('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x4d66('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x4d66('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x4d66('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index c5568a0..00dbd08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa4d=['sequelize','UserProfileSection','findAll','autoAssociation','UserProfileResource','sectionId','Resources','update','describe','addSections','transaction','userProfileId','each','push','ids','enabled','isEmpty','includes','subsections','findOne','Dashboard','forEach','resourceId','Plugin','addResources','bulkCreate','get','removeResources','getResources','section','Missing\x20section\x20parameter','eml-format','rimraf','fast-json-patch','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','reject','then','destroy','end','error','stack','name','send','map','UserProfile','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','options','include','show','params','find','catch','create','body','clone','rawAttributes','includeAll','omit','createdAt','updatedAt','crudPermissions'];(function(_0xd7c609,_0x591ac5){var _0x1e6dc2=function(_0x57c1a2){while(--_0x57c1a2){_0xd7c609['push'](_0xd7c609['shift']());}};_0x1e6dc2(++_0x591ac5);}(_0xfa4d,0x90));var _0xdfa4=function(_0x2cb16e,_0x2eb57f){_0x2cb16e=_0x2cb16e-0x0;var _0x3429e5=_0xfa4d[_0x2cb16e];return _0x3429e5;};'use strict';var emlformat=require(_0xdfa4('0x0'));var rimraf=require(_0xdfa4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdfa4('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xdfa4('0x3'));var util=require(_0xdfa4('0x4'));var path=require(_0xdfa4('0x5'));var sox=require(_0xdfa4('0x6'));var csv=require(_0xdfa4('0x7'));var ejs=require(_0xdfa4('0x8'));var fs=require('fs');var fs_extra=require(_0xdfa4('0x9'));var _=require(_0xdfa4('0xa'));var squel=require(_0xdfa4('0xb'));var crypto=require(_0xdfa4('0xc'));var jsforce=require(_0xdfa4('0xd'));var deskjs=require(_0xdfa4('0xe'));var toCsv=require(_0xdfa4('0x7'));var querystring=require(_0xdfa4('0xf'));var Papa=require(_0xdfa4('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xdfa4('0x11'));var as=require(_0xdfa4('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdfa4('0x13'))('api');var utils=require(_0xdfa4('0x14'));var config=require(_0xdfa4('0x15'));var licenseUtil=require(_0xdfa4('0x16'));var db=require(_0xdfa4('0x17'))['db'];config[_0xdfa4('0x18')]=_[_0xdfa4('0x19')](config[_0xdfa4('0x18')],{'host':_0xdfa4('0x1a'),'port':0x18eb});var socket=require(_0xdfa4('0x1b'))(new Redis(config[_0xdfa4('0x18')]));require(_0xdfa4('0x1c'))[_0xdfa4('0x1d')](socket);function respondWithStatusCode(_0x239bde,_0x58ed13){_0x58ed13=_0x58ed13||0xcc;return function(_0x464b22){if(_0x464b22){return _0x239bde[_0xdfa4('0x1e')](_0x58ed13);}return _0x239bde[_0xdfa4('0x1f')](_0x58ed13)['end']();};}function respondWithResult(_0x1284de,_0x1163ed){_0x1163ed=_0x1163ed||0xc8;return function(_0x4c069a){if(_0x4c069a){return _0x1284de[_0xdfa4('0x1f')](_0x1163ed)[_0xdfa4('0x20')](_0x4c069a);}};}function respondWithFilteredResult(_0x2d7fe6,_0x36717f){return function(_0xed6924){if(_0xed6924){var _0x4d6fe0=typeof _0x36717f['offset']===_0xdfa4('0x21')&&typeof _0x36717f[_0xdfa4('0x22')]===_0xdfa4('0x21');var _0x5d4412=_0xed6924['count'];var _0x5ac92a=_0x4d6fe0?0x0:_0x36717f['offset'];var _0x449a22=_0x4d6fe0?_0xed6924[_0xdfa4('0x23')]:_0x36717f[_0xdfa4('0x24')]+_0x36717f[_0xdfa4('0x22')];var _0x34fd7a;if(_0x449a22>=_0x5d4412){_0x449a22=_0x5d4412;_0x34fd7a=0xc8;}else{_0x34fd7a=0xce;}_0x2d7fe6[_0xdfa4('0x1f')](_0x34fd7a);return _0x2d7fe6[_0xdfa4('0x25')](_0xdfa4('0x26'),_0x5ac92a+'-'+_0x449a22+'/'+_0x5d4412)['json'](_0xed6924);}return null;};}function patchUpdates(_0x359ba2){return function(_0x204f64){try{jsonpatch['apply'](_0x204f64,_0x359ba2,!![]);}catch(_0x3024b6){return BPromise[_0xdfa4('0x27')](_0x3024b6);}return _0x204f64['save']();};}function saveUpdates(_0x3c77bf,_0x12c765){return function(_0x46301b){if(_0x46301b){return _0x46301b['update'](_0x3c77bf)[_0xdfa4('0x28')](function(_0x37f2d5){return _0x37f2d5;});}return null;};}function removeEntity(_0x41a6e9,_0x524150){return function(_0x3dc981){if(_0x3dc981){return _0x3dc981[_0xdfa4('0x29')]()['then'](function(){_0x41a6e9[_0xdfa4('0x1f')](0xcc)[_0xdfa4('0x2a')]();});}};}function handleEntityNotFound(_0x733fc,_0x633aa7){return function(_0x442974){if(!_0x442974){_0x733fc[_0xdfa4('0x1e')](0x194);}return _0x442974;};}function handleError(_0x2c26fa,_0xe2b998){_0xe2b998=_0xe2b998||0x1f4;return function(_0x155a39){logger[_0xdfa4('0x2b')](_0x155a39[_0xdfa4('0x2c')]);if(_0x155a39[_0xdfa4('0x2d')]){delete _0x155a39[_0xdfa4('0x2d')];}_0x2c26fa[_0xdfa4('0x1f')](_0xe2b998)[_0xdfa4('0x2e')](_0x155a39);};}exports['index']=function(_0x4679f9,_0x400796){var _0x267c79={},_0x18d983={},_0x26874a={'count':0x0,'rows':[]};var _0x1d67f8=_[_0xdfa4('0x2f')](db[_0xdfa4('0x30')]['rawAttributes'],function(_0x50af77){return{'name':_0x50af77[_0xdfa4('0x31')],'type':_0x50af77[_0xdfa4('0x32')][_0xdfa4('0x33')]};});_0x18d983[_0xdfa4('0x34')]=_[_0xdfa4('0x2f')](_0x1d67f8,_0xdfa4('0x2d'));_0x18d983[_0xdfa4('0x35')]=_[_0xdfa4('0x36')](_0x4679f9[_0xdfa4('0x35')]);_0x18d983[_0xdfa4('0x37')]=_[_0xdfa4('0x38')](_0x18d983['model'],_0x18d983[_0xdfa4('0x35')]);_0x267c79['attributes']=_[_0xdfa4('0x38')](_0x18d983[_0xdfa4('0x34')],qs[_0xdfa4('0x39')](_0x4679f9['query'][_0xdfa4('0x39')]));_0x267c79['attributes']=_0x267c79[_0xdfa4('0x3a')][_0xdfa4('0x3b')]?_0x267c79['attributes']:_0x18d983[_0xdfa4('0x34')];if(!_0x4679f9[_0xdfa4('0x35')][_0xdfa4('0x3c')](_0xdfa4('0x3d'))){_0x267c79[_0xdfa4('0x22')]=qs['limit'](_0x4679f9[_0xdfa4('0x35')][_0xdfa4('0x22')]);_0x267c79['offset']=qs['offset'](_0x4679f9[_0xdfa4('0x35')][_0xdfa4('0x24')]);}_0x267c79[_0xdfa4('0x3e')]=qs[_0xdfa4('0x3f')](_0x4679f9[_0xdfa4('0x35')][_0xdfa4('0x3f')]);_0x267c79['where']=qs['filters'](_['pick'](_0x4679f9['query'],_0x18d983['filters']),_0x1d67f8);if(_0x4679f9['query'][_0xdfa4('0x40')]){_0x267c79[_0xdfa4('0x41')]=_['merge'](_0x267c79[_0xdfa4('0x41')],{'$or':_['map'](_0x1d67f8,function(_0x24afd1){if(_0x24afd1['type']!=='VIRTUAL'){var _0x3fd6d4={};_0x3fd6d4[_0x24afd1[_0xdfa4('0x2d')]]={'$like':'%'+_0x4679f9[_0xdfa4('0x35')][_0xdfa4('0x40')]+'%'};return _0x3fd6d4;}})});}_0x267c79=_[_0xdfa4('0x42')]({},_0x267c79,_0x4679f9[_0xdfa4('0x43')]);var _0x4e7e67={'where':_0x267c79['where']};return db[_0xdfa4('0x30')][_0xdfa4('0x23')](_0x4e7e67)[_0xdfa4('0x28')](function(_0x525a62){_0x26874a[_0xdfa4('0x23')]=_0x525a62;if(_0x4679f9[_0xdfa4('0x35')]['includeAll']){_0x267c79[_0xdfa4('0x44')]=[{'all':!![]}];}return db[_0xdfa4('0x30')]['findAll'](_0x267c79);})[_0xdfa4('0x28')](function(_0x3ec03a){_0x26874a['rows']=_0x3ec03a;return _0x26874a;})[_0xdfa4('0x28')](respondWithFilteredResult(_0x400796,_0x267c79))['catch'](handleError(_0x400796,null));};exports[_0xdfa4('0x45')]=function(_0x1c3968,_0x5154e5){var _0x450781={'raw':![],'where':{'id':_0x1c3968[_0xdfa4('0x46')]['id']}},_0x48a66c={};_0x48a66c['model']=_['keys'](db[_0xdfa4('0x30')]['rawAttributes']);_0x48a66c[_0xdfa4('0x35')]=_['keys'](_0x1c3968[_0xdfa4('0x35')]);_0x48a66c[_0xdfa4('0x37')]=_[_0xdfa4('0x38')](_0x48a66c[_0xdfa4('0x34')],_0x48a66c['query']);_0x450781[_0xdfa4('0x3a')]=_[_0xdfa4('0x38')](_0x48a66c[_0xdfa4('0x34')],qs[_0xdfa4('0x39')](_0x1c3968[_0xdfa4('0x35')][_0xdfa4('0x39')]));_0x450781[_0xdfa4('0x3a')]=_0x450781[_0xdfa4('0x3a')]['length']?_0x450781[_0xdfa4('0x3a')]:_0x48a66c['model'];if(_0x1c3968[_0xdfa4('0x35')]['includeAll']){_0x450781[_0xdfa4('0x44')]=[{'all':!![]}];}_0x450781=_[_0xdfa4('0x42')]({},_0x450781,_0x1c3968[_0xdfa4('0x43')]);return db[_0xdfa4('0x30')][_0xdfa4('0x47')](_0x450781)[_0xdfa4('0x28')](handleEntityNotFound(_0x5154e5,null))[_0xdfa4('0x28')](respondWithResult(_0x5154e5,null))[_0xdfa4('0x48')](handleError(_0x5154e5,null));};exports[_0xdfa4('0x49')]=function(_0x1be5ca,_0xd06b1c){return db[_0xdfa4('0x30')]['create'](_0x1be5ca[_0xdfa4('0x4a')],{})[_0xdfa4('0x28')](respondWithResult(_0xd06b1c,0xc9))[_0xdfa4('0x48')](handleError(_0xd06b1c,null));};exports[_0xdfa4('0x4b')]=function(_0x4508da,_0x362758){var _0x1e831d={'where':{'id':_0x4508da[_0xdfa4('0x46')]['id']}},_0x474831={};_0x474831[_0xdfa4('0x34')]=_[_0xdfa4('0x36')](db[_0xdfa4('0x30')][_0xdfa4('0x4c')]);_0x1e831d[_0xdfa4('0x3a')]=_['intersection'](_0x474831[_0xdfa4('0x34')],qs[_0xdfa4('0x39')](_0x4508da[_0xdfa4('0x35')]['fields']));_0x1e831d[_0xdfa4('0x3a')]=_0x1e831d[_0xdfa4('0x3a')][_0xdfa4('0x3b')]?_0x1e831d['attributes']:_0x474831[_0xdfa4('0x34')];if(_0x4508da[_0xdfa4('0x35')][_0xdfa4('0x4d')]){_0x1e831d[_0xdfa4('0x44')]=[{'all':!![]}];}_0x1e831d=_[_0xdfa4('0x42')]({},_0x1e831d,_0x4508da[_0xdfa4('0x43')]);return db[_0xdfa4('0x30')][_0xdfa4('0x47')](_0x1e831d)[_0xdfa4('0x28')](handleEntityNotFound(_0x362758,null))[_0xdfa4('0x28')](function(_0x18d36b){if(_0x18d36b){var _0x4eb7ed=_0x18d36b['get']({'plain':!![]});_0x4eb7ed=qs[_0xdfa4('0x4e')](_0x4eb7ed,['id',_0xdfa4('0x4f'),_0xdfa4('0x50'),_0xdfa4('0x51')]);_0x4508da[_0xdfa4('0x4a')]=_[_0xdfa4('0x4e')](_0x4508da['body'],['id',_0xdfa4('0x4f'),_0xdfa4('0x50')]);return db[_0xdfa4('0x52')]['transaction'](function(_0x2e4808){return db[_0xdfa4('0x30')][_0xdfa4('0x49')](_[_0xdfa4('0x42')](_0x4eb7ed,_0x4508da[_0xdfa4('0x4a')]),{'include':_0x4508da[_0xdfa4('0x35')][_0xdfa4('0x4d')]?[{'all':!![]}]:undefined,'transaction':_0x2e4808})[_0xdfa4('0x28')](function(_0x1c1856){var _0x2f04d4=_0x1c1856['get']({'plain':!![]});return db[_0xdfa4('0x53')][_0xdfa4('0x54')]({'where':{'userProfileId':_0x4508da[_0xdfa4('0x46')]['id']},'raw':!![]})[_0xdfa4('0x28')](function(_0x1c281d){if(_0x1c281d){return BPromise['each'](_0x1c281d,function(_0x5c2ee8){return new BPromise(function(_0x4afd9b,_0x43ddb6){if(_0x5c2ee8['autoAssociation']===null||_0x5c2ee8[_0xdfa4('0x55')]===0x1)_0x4afd9b(null);return db[_0xdfa4('0x56')][_0xdfa4('0x54')]({'where':{'sectionId':_0x5c2ee8['id']},'raw':!![]})['then'](function(_0x1db9f9){var _0x21310c=_[_0xdfa4('0x2f')](_0x1db9f9,function(_0x23ade4){return qs['omit'](_0x23ade4,['id',_0xdfa4('0x4f'),_0xdfa4('0x50'),_0xdfa4('0x57')]);});_0x4afd9b(_0x21310c);})[_0xdfa4('0x48')](function(_0x5eede3){_0x43ddb6(_0x5eede3);});})['then'](function(_0x35cba1){var _0x25ecb8=qs[_0xdfa4('0x4e')](_0x5c2ee8,['id',_0xdfa4('0x4f'),_0xdfa4('0x50')]);_0x25ecb8['userProfileId']=_0x2f04d4['id'];if(_0x35cba1)_0x25ecb8[_0xdfa4('0x58')]=_0x35cba1;return _0x25ecb8;})[_0xdfa4('0x28')](function(_0x1a5cc6){return db[_0xdfa4('0x53')]['create'](_0x1a5cc6,{'include':[{'model':db[_0xdfa4('0x56')],'as':_0xdfa4('0x58')}],'raw':!![],'transaction':_0x2e4808});});})[_0xdfa4('0x28')](function(){return _0x2f04d4;});}});});});}})[_0xdfa4('0x28')](respondWithResult(_0x362758,0xc9))[_0xdfa4('0x48')](handleError(_0x362758,null));};exports[_0xdfa4('0x59')]=function(_0x597986,_0x149e1d){if(_0x597986[_0xdfa4('0x4a')]['id']){delete _0x597986[_0xdfa4('0x4a')]['id'];}return db['UserProfile'][_0xdfa4('0x47')]({'where':{'id':_0x597986[_0xdfa4('0x46')]['id']}})['then'](handleEntityNotFound(_0x149e1d,null))[_0xdfa4('0x28')](saveUpdates(_0x597986[_0xdfa4('0x4a')],null))[_0xdfa4('0x28')](respondWithResult(_0x149e1d,null))[_0xdfa4('0x48')](handleError(_0x149e1d,null));};exports[_0xdfa4('0x29')]=function(_0x330206,_0x27c8dd){return db[_0xdfa4('0x30')][_0xdfa4('0x47')]({'where':{'id':_0x330206[_0xdfa4('0x46')]['id']}})['then'](handleEntityNotFound(_0x27c8dd,null))[_0xdfa4('0x28')](removeEntity(_0x27c8dd,null))[_0xdfa4('0x48')](handleError(_0x27c8dd,null));};exports[_0xdfa4('0x5a')]=function(_0x316fde,_0x15f03d){return db[_0xdfa4('0x30')][_0xdfa4('0x5a')]()[_0xdfa4('0x28')](respondWithResult(_0x15f03d,null))[_0xdfa4('0x48')](handleError(_0x15f03d,null));};exports[_0xdfa4('0x5b')]=function(_0x412816,_0x28b037){var _0x4ad98c=_0x412816['body'];return db[_0xdfa4('0x30')][_0xdfa4('0x47')]({'where':{'id':_0x412816[_0xdfa4('0x46')]['id']}})[_0xdfa4('0x28')](handleEntityNotFound(_0x28b037,null))[_0xdfa4('0x28')](function(_0x18c4ff){if(_0x18c4ff){return db[_0xdfa4('0x52')][_0xdfa4('0x5c')](function(_0x5da233){return db[_0xdfa4('0x53')][_0xdfa4('0x29')]({'where':{'userProfileId':_0x412816[_0xdfa4('0x46')]['id'],'sectionId':_['map'](_0x4ad98c,function(_0x5d6ed6){return _0x5d6ed6[_0xdfa4('0x57')];})},'transaction':_0x5da233})[_0xdfa4('0x28')](function(){var _0x58f35c=_[_0xdfa4('0x2f')](_0x4ad98c,function(_0xfceb5e){_0xfceb5e[_0xdfa4('0x5d')]=_0x412816['params']['id'];return _0xfceb5e;});var _0x350a0d=[];return BPromise[_0xdfa4('0x5e')](_0x58f35c,function(_0x134422){return db['UserProfileSection'][_0xdfa4('0x49')](_0x134422,{'include':[{'model':db[_0xdfa4('0x56')],'as':'Resources'}],'raw':!![],'transaction':_0x5da233})[_0xdfa4('0x28')](function(_0x11f331){_0x350a0d[_0xdfa4('0x5f')](_0x11f331['get']({'plain':!![]}));});})[_0xdfa4('0x28')](function(){return _0x350a0d;});});});}})[_0xdfa4('0x28')](function(_0x2e501b){return _0x2e501b;})[_0xdfa4('0x28')](respondWithResult(_0x28b037,null))['catch'](handleError(_0x28b037,null));};exports['removeSections']=function(_0x2d0074,_0x18ccde){var _0x52b9a5;return db[_0xdfa4('0x30')][_0xdfa4('0x47')]({'where':{'id':_0x2d0074[_0xdfa4('0x46')]['id']},'attributes':['id',_0xdfa4('0x2d')]})[_0xdfa4('0x28')](handleEntityNotFound(_0x18ccde,null))[_0xdfa4('0x28')](function(_0x383baa){if(_0x383baa){_0x52b9a5=_0x383baa;return db[_0xdfa4('0x53')][_0xdfa4('0x29')]({'where':{'userProfileId':_0x2d0074['params']['id'],'sectionId':_0x2d0074[_0xdfa4('0x35')][_0xdfa4('0x60')]}});}})[_0xdfa4('0x28')](function(){return _0x52b9a5;})[_0xdfa4('0x28')](respondWithStatusCode(_0x18ccde,null))[_0xdfa4('0x48')](handleError(_0x18ccde,null));};exports['getSections']=function(_0x46a0eb,_0x3bb2b6){var _0x13a8d7=[];var _0x16024e=[];return db['UserProfileSection'][_0xdfa4('0x54')]({'where':{'userProfileId':_0x46a0eb[_0xdfa4('0x46')]['id']},'raw':!![]})[_0xdfa4('0x28')](function(_0x56514c){_0x13a8d7=_['filter'](_0x56514c,function(_0x5c0515){return _0x5c0515[_0xdfa4('0x61')]===0x1||_['includes']([0x3eb,0x709],_0x5c0515[_0xdfa4('0x57')]);});if(!_[_0xdfa4('0x62')](_0x13a8d7)){return _[_0xdfa4('0x2f')](_0x13a8d7,function(_0xc885e0){return _0xc885e0[_0xdfa4('0x57')];});}else{return;}})[_0xdfa4('0x28')](function(_0x1546db){if(_0x1546db)_0x16024e=_0x1546db;if(_[_0xdfa4('0x63')](_0x16024e,0x64)){var _0x2f39cc=_[_0xdfa4('0x47')](_0x13a8d7,{'sectionId':0x64});return hasDefaultDashboard(_0x2f39cc)[_0xdfa4('0x28')](function(_0x12a862){return _[_0xdfa4('0x2f')](_0x13a8d7,function(_0x31b6e4){if(_0x31b6e4[_0xdfa4('0x57')]===0x64){_0x31b6e4[_0xdfa4('0x64')]=_0x12a862;}return _0x31b6e4;});});}else{return;}})['then'](function(_0x19d965){if(_0x19d965)_0x13a8d7=_0x19d965;if(_[_0xdfa4('0x63')](_0x16024e,0x3eb)){var _0x21ebd8=_[_0xdfa4('0x47')](_0x13a8d7,{'sectionId':0x3eb});return getCustomDashboards(_0x21ebd8)[_0xdfa4('0x28')](function(_0x1f812e){return _['map'](_0x13a8d7,function(_0x3c5c64){if(_0x21ebd8['enabled']){if(_0x3c5c64[_0xdfa4('0x57')]===0x3eb){_0x3c5c64[_0xdfa4('0x64')]=_0x1f812e;}}else{if(_0x3c5c64[_0xdfa4('0x57')]===0x64){_0x3c5c64[_0xdfa4('0x64')]=_0x1f812e;}}return _0x3c5c64;});});}else{return;}})[_0xdfa4('0x28')](function(_0x36e3f0){if(_0x36e3f0)_0x13a8d7=_0x36e3f0;if(_[_0xdfa4('0x63')](_0x16024e,0x709)){var _0x5514b4=_['find'](_0x13a8d7,{'sectionId':0x709});return getPlugins(_0x5514b4)[_0xdfa4('0x28')](function(_0x38c3b1){if(_0x5514b4[_0xdfa4('0x61')]){return _[_0xdfa4('0x2f')](_0x13a8d7,function(_0x16dfe1){if(_0x16dfe1[_0xdfa4('0x57')]===0x709){_0x16dfe1[_0xdfa4('0x64')]=_0x38c3b1;}return _0x16dfe1;});}else{var _0xb4ebab={'sectionId':0x76c,'enabled':0x1,'subsections':_0x38c3b1};var _0x13825d=_[_0xdfa4('0x2f')](_0x13a8d7);_0x13825d['push'](_0xb4ebab);return _0x13825d;}});}else{return;}})[_0xdfa4('0x28')](function(_0xfdc890){if(_0xfdc890)_0x13a8d7=_0xfdc890;return _['filter'](_0x13a8d7,[_0xdfa4('0x61'),0x1]);})[_0xdfa4('0x28')](respondWithResult(_0x3bb2b6,null))[_0xdfa4('0x48')](handleError(_0x3bb2b6,null));};function hasDefaultDashboard(_0x4528c9){var _0x5995f6=[0x65];return new BPromise(function(_0x189332,_0x3d9b75){try{if(_0x4528c9[_0xdfa4('0x55')]){_0x189332(_0x5995f6);}else{return db[_0xdfa4('0x56')][_0xdfa4('0x65')]({'where':{'sectionId':_0x4528c9['id']},'raw':!![]})[_0xdfa4('0x28')](function(_0x3af8b9){_0x3af8b9?_0x189332(_0x5995f6):_0x189332();});}}catch(_0x54bb0f){_0x3d9b75(_0x54bb0f);}});}function getCustomDashboards(_0x37134e){var _0x286cf1=[];return new BPromise(function(_0x5d7897,_0x43d4c7){try{if(_0x37134e[_0xdfa4('0x55')]){return db[_0xdfa4('0x66')][_0xdfa4('0x54')]({'raw':!![]})['then'](function(_0x155b0d){_0x155b0d[_0xdfa4('0x67')](function(_0x2f5e9e){_0x286cf1[_0xdfa4('0x5f')](_0x2f5e9e['id']+0x1869f);});_0x5d7897(_0x286cf1);});}else{return db[_0xdfa4('0x56')][_0xdfa4('0x54')]({'where':{'sectionId':_0x37134e['id']},'raw':!![]})[_0xdfa4('0x28')](function(_0x67aef7){_0x67aef7[_0xdfa4('0x67')](function(_0x1cc0f8){_0x286cf1[_0xdfa4('0x5f')](_0x1cc0f8[_0xdfa4('0x68')]+0x1869f);});_0x5d7897(_0x286cf1);});}}catch(_0x162250){_0x43d4c7(_0x162250);}});}function getPlugins(_0x36f1ac){var _0x1a17c7=[];return new BPromise(function(_0x363430,_0xa015c4){try{if(_0x36f1ac['autoAssociation']){return db[_0xdfa4('0x69')][_0xdfa4('0x54')]({'raw':!![]})['then'](function(_0x1c5ac8){_0x1c5ac8[_0xdfa4('0x67')](function(_0x530e89){_0x1a17c7[_0xdfa4('0x5f')](_0x530e89['id']+0x15b38);});_0x363430(_0x1a17c7);});}else{return db['UserProfileResource'][_0xdfa4('0x54')]({'where':{'sectionId':_0x36f1ac['id']},'raw':!![]})['then'](function(_0x28753e){_0x28753e[_0xdfa4('0x67')](function(_0x41ae83){_0x1a17c7[_0xdfa4('0x5f')](_0x41ae83[_0xdfa4('0x68')]+0x15b38);});_0x363430(_0x1a17c7);});}}catch(_0x108140){_0xa015c4(_0x108140);}});}exports[_0xdfa4('0x6a')]=function(_0x599b01,_0x2c81c6){return db[_0xdfa4('0x30')]['find']({'where':{'id':_0x599b01['params']['id']}})[_0xdfa4('0x28')](handleEntityNotFound(_0x2c81c6,null))[_0xdfa4('0x28')](function(_0x5ab1ee){if(_0x5ab1ee){return db['sequelize'][_0xdfa4('0x5c')](function(_0x45ff8e){return db[_0xdfa4('0x53')][_0xdfa4('0x54')]({'where':{'userProfileId':_0x599b01[_0xdfa4('0x46')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x3d9a67){if(_0x3d9a67){return db['UserProfileSection'][_0xdfa4('0x29')]({'where':{'userProfileId':_0x599b01[_0xdfa4('0x46')]['id'],'id':_[_0xdfa4('0x2f')](_0x3d9a67,function(_0x52e6a5){return _0x52e6a5['id'];})},'transaction':_0x45ff8e});}})['then'](function(_0x37b886){var _0x3a0e71=_[_0xdfa4('0x2f')](_0x599b01[_0xdfa4('0x4a')],function(_0x3dc919){_0x3dc919[_0xdfa4('0x5d')]=_0x599b01[_0xdfa4('0x46')]['id'];return _0x3dc919;});return db[_0xdfa4('0x53')][_0xdfa4('0x6b')](_0x3a0e71,{'raw':!![],'transaction':_0x45ff8e});})[_0xdfa4('0x28')](function(_0x2868eb){var _0x145281=_['filter'](_[_0xdfa4('0x2f')](_0x2868eb,function(_0xef692b){return _0xef692b[_0xdfa4('0x6c')]({'plain':!![]});}),{'includeAll':![]});if(_0x145281){return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x599b01[_0xdfa4('0x46')]['id'],'sectionId':_['map'](_0x145281,function(_0xed61e7){return _0xed61e7[_0xdfa4('0x57')];})},'attributes':['id','sectionId'],'raw':!![]})['then'](function(_0x191acb){var _0x108dde=_['map'](_0x599b01[_0xdfa4('0x4a')],function(_0xc34e0f){_0xc34e0f[_0xdfa4('0x5d')]=_0x599b01[_0xdfa4('0x46')]['id'];return _0xc34e0f;});return db['UserProfileResource'][_0xdfa4('0x6b')](_0x108dde,{'raw':!![],'transaction':_0x45ff8e});});}})[_0xdfa4('0x48')](handleError(_0x2c81c6,null));});}})['then'](function(_0x1a5571){var _0x1b2929=_[_0xdfa4('0x2f')](_0x1a5571,function(_0x501774){return _0x501774[_0xdfa4('0x6c')]({'plain':!![]});});})[_0xdfa4('0x28')](respondWithResult(_0x2c81c6,null))[_0xdfa4('0x48')](handleError(_0x2c81c6,null));};exports[_0xdfa4('0x6d')]=function(_0x2902a7,_0x29a036,_0x539faa){return db[_0xdfa4('0x30')][_0xdfa4('0x47')]({'where':{'id':_0x2902a7[_0xdfa4('0x46')]['id']}})[_0xdfa4('0x28')](handleEntityNotFound(_0x29a036,null))[_0xdfa4('0x28')](function(_0x253560){if(_0x253560){return _0x253560[_0xdfa4('0x6d')](_0x2902a7[_0xdfa4('0x35')][_0xdfa4('0x60')]);}})[_0xdfa4('0x28')](respondWithStatusCode(_0x29a036,null))[_0xdfa4('0x48')](handleError(_0x29a036,null));};exports[_0xdfa4('0x6e')]=function(_0x10d1aa,_0xdde9a3){var _0x50d6d4={};if(!_0x10d1aa['query'][_0xdfa4('0x6f')])throw new Error(_0xdfa4('0x70'));if(!_0x10d1aa['query'][_0xdfa4('0x3c')]('nolimit')){_0x50d6d4[_0xdfa4('0x22')]=qs[_0xdfa4('0x22')](_0x10d1aa['query']['limit']);_0x50d6d4['offset']=qs[_0xdfa4('0x24')](_0x10d1aa['query'][_0xdfa4('0x24')]);}return db[_0xdfa4('0x30')][_0xdfa4('0x47')]({'where':{'id':_0x10d1aa[_0xdfa4('0x46')]['id']}})[_0xdfa4('0x28')](function(_0x20a6dd){if(!_0x20a6dd)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x10d1aa[_0xdfa4('0x46')]['id']);return db['UserProfile'][_0xdfa4('0x6e')](_0x10d1aa);})['then'](respondWithFilteredResult(_0xdde9a3,_0x50d6d4))[_0xdfa4('0x48')](handleError(_0xdde9a3,null));};
\ No newline at end of file
+var _0xc5df=['ids','getSections','includes','isEmpty','subsections','enabled','findOne','Dashboard','forEach','resourceId','addResources','bulkCreate','removeResources','section','Missing\x20section\x20parameter','getResources','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./userProfile.socket','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','stack','name','send','index','UserProfile','rawAttributes','type','key','map','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','filter','options','includeAll','include','catch','show','params','merge','find','create','body','clone','length','get','omit','createdAt','updatedAt','crudPermissions','sequelize','transaction','UserProfileSection','findAll','each','autoAssociation','UserProfileResource','userProfileId','Resources','describe','addSections','destroy','sectionId','push','removeSections'];(function(_0x3b6f86,_0x3ff406){var _0x1587b2=function(_0x4da36b){while(--_0x4da36b){_0x3b6f86['push'](_0x3b6f86['shift']());}};_0x1587b2(++_0x3ff406);}(_0xc5df,0x80));var _0xfc5d=function(_0x355f09,_0x7e1784){_0x355f09=_0x355f09-0x0;var _0x31e32b=_0xc5df[_0x355f09];return _0x31e32b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfc5d('0x0'));var jsonpatch=require(_0xfc5d('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfc5d('0x2'));var Mustache=require(_0xfc5d('0x3'));var util=require(_0xfc5d('0x4'));var path=require(_0xfc5d('0x5'));var sox=require(_0xfc5d('0x6'));var csv=require('to-csv');var ejs=require(_0xfc5d('0x7'));var fs=require('fs');var fs_extra=require(_0xfc5d('0x8'));var _=require(_0xfc5d('0x9'));var squel=require(_0xfc5d('0xa'));var crypto=require(_0xfc5d('0xb'));var jsforce=require(_0xfc5d('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xfc5d('0xd'));var querystring=require(_0xfc5d('0xe'));var Papa=require('papaparse');var Redis=require(_0xfc5d('0xf'));var authService=require(_0xfc5d('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xfc5d('0x11'));var hardwareService=require(_0xfc5d('0x12'));var logger=require(_0xfc5d('0x13'))(_0xfc5d('0x14'));var utils=require('../../config/utils');var config=require(_0xfc5d('0x15'));var licenseUtil=require(_0xfc5d('0x16'));var db=require(_0xfc5d('0x17'))['db'];config['redis']=_[_0xfc5d('0x18')](config[_0xfc5d('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xfc5d('0x1a'))(new Redis(config['redis']));require(_0xfc5d('0x1b'))['register'](socket);function respondWithStatusCode(_0x248498,_0x206207){_0x206207=_0x206207||0xcc;return function(_0x1606ee){if(_0x1606ee){return _0x248498[_0xfc5d('0x1c')](_0x206207);}return _0x248498[_0xfc5d('0x1d')](_0x206207)['end']();};}function respondWithResult(_0x44d245,_0x1d496e){_0x1d496e=_0x1d496e||0xc8;return function(_0x4db0cd){if(_0x4db0cd){return _0x44d245[_0xfc5d('0x1d')](_0x1d496e)['json'](_0x4db0cd);}};}function respondWithFilteredResult(_0x438729,_0x581c1c){return function(_0x4783d5){if(_0x4783d5){var _0x3ae06e=typeof _0x581c1c[_0xfc5d('0x1e')]===_0xfc5d('0x1f')&&typeof _0x581c1c[_0xfc5d('0x20')]==='undefined';var _0x5e5023=_0x4783d5[_0xfc5d('0x21')];var _0x4f9d5d=_0x3ae06e?0x0:_0x581c1c['offset'];var _0x54ca7b=_0x3ae06e?_0x4783d5[_0xfc5d('0x21')]:_0x581c1c['offset']+_0x581c1c[_0xfc5d('0x20')];var _0x4fa971;if(_0x54ca7b>=_0x5e5023){_0x54ca7b=_0x5e5023;_0x4fa971=0xc8;}else{_0x4fa971=0xce;}_0x438729[_0xfc5d('0x1d')](_0x4fa971);return _0x438729[_0xfc5d('0x22')](_0xfc5d('0x23'),_0x4f9d5d+'-'+_0x54ca7b+'/'+_0x5e5023)[_0xfc5d('0x24')](_0x4783d5);}return null;};}function patchUpdates(_0x47e6c2){return function(_0x4cf28c){try{jsonpatch['apply'](_0x4cf28c,_0x47e6c2,!![]);}catch(_0x469e4){return BPromise[_0xfc5d('0x25')](_0x469e4);}return _0x4cf28c[_0xfc5d('0x26')]();};}function saveUpdates(_0x4ce3dd,_0x30b782){return function(_0x22eb5a){if(_0x22eb5a){return _0x22eb5a[_0xfc5d('0x27')](_0x4ce3dd)[_0xfc5d('0x28')](function(_0x2036b3){return _0x2036b3;});}return null;};}function removeEntity(_0xee4bb6,_0x64cf33){return function(_0x5c2392){if(_0x5c2392){return _0x5c2392['destroy']()[_0xfc5d('0x28')](function(){_0xee4bb6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ecb16,_0x5d4470){return function(_0x1c9fd7){if(!_0x1c9fd7){_0x1ecb16[_0xfc5d('0x1c')](0x194);}return _0x1c9fd7;};}function handleError(_0x4e5b48,_0xf9156d){_0xf9156d=_0xf9156d||0x1f4;return function(_0x5bc69c){logger['error'](_0x5bc69c[_0xfc5d('0x29')]);if(_0x5bc69c[_0xfc5d('0x2a')]){delete _0x5bc69c[_0xfc5d('0x2a')];}_0x4e5b48[_0xfc5d('0x1d')](_0xf9156d)[_0xfc5d('0x2b')](_0x5bc69c);};}exports[_0xfc5d('0x2c')]=function(_0x366313,_0x560198){var _0x82f10a={},_0x5eb75f={},_0x3eb6e3={'count':0x0,'rows':[]};var _0xf44fdc=_['map'](db[_0xfc5d('0x2d')][_0xfc5d('0x2e')],function(_0x116272){return{'name':_0x116272['fieldName'],'type':_0x116272[_0xfc5d('0x2f')][_0xfc5d('0x30')]};});_0x5eb75f['model']=_[_0xfc5d('0x31')](_0xf44fdc,'name');_0x5eb75f[_0xfc5d('0x32')]=_[_0xfc5d('0x33')](_0x366313[_0xfc5d('0x32')]);_0x5eb75f[_0xfc5d('0x34')]=_[_0xfc5d('0x35')](_0x5eb75f[_0xfc5d('0x36')],_0x5eb75f[_0xfc5d('0x32')]);_0x82f10a['attributes']=_['intersection'](_0x5eb75f['model'],qs['fields'](_0x366313[_0xfc5d('0x32')][_0xfc5d('0x37')]));_0x82f10a[_0xfc5d('0x38')]=_0x82f10a[_0xfc5d('0x38')]['length']?_0x82f10a['attributes']:_0x5eb75f[_0xfc5d('0x36')];if(!_0x366313[_0xfc5d('0x32')][_0xfc5d('0x39')](_0xfc5d('0x3a'))){_0x82f10a['limit']=qs['limit'](_0x366313[_0xfc5d('0x32')][_0xfc5d('0x20')]);_0x82f10a[_0xfc5d('0x1e')]=qs[_0xfc5d('0x1e')](_0x366313[_0xfc5d('0x32')][_0xfc5d('0x1e')]);}_0x82f10a[_0xfc5d('0x3b')]=qs[_0xfc5d('0x3c')](_0x366313[_0xfc5d('0x32')]['sort']);_0x82f10a[_0xfc5d('0x3d')]=qs[_0xfc5d('0x34')](_['pick'](_0x366313[_0xfc5d('0x32')],_0x5eb75f[_0xfc5d('0x34')]),_0xf44fdc);if(_0x366313['query']['filter']){_0x82f10a['where']=_['merge'](_0x82f10a['where'],{'$or':_[_0xfc5d('0x31')](_0xf44fdc,function(_0x4ca856){if(_0x4ca856[_0xfc5d('0x2f')]!==_0xfc5d('0x3e')){var _0x4dac1b={};_0x4dac1b[_0x4ca856[_0xfc5d('0x2a')]]={'$like':'%'+_0x366313['query'][_0xfc5d('0x3f')]+'%'};return _0x4dac1b;}})});}_0x82f10a=_['merge']({},_0x82f10a,_0x366313[_0xfc5d('0x40')]);var _0x2893dd={'where':_0x82f10a[_0xfc5d('0x3d')]};return db[_0xfc5d('0x2d')]['count'](_0x2893dd)[_0xfc5d('0x28')](function(_0x1f35fe){_0x3eb6e3[_0xfc5d('0x21')]=_0x1f35fe;if(_0x366313[_0xfc5d('0x32')][_0xfc5d('0x41')]){_0x82f10a[_0xfc5d('0x42')]=[{'all':!![]}];}return db['UserProfile']['findAll'](_0x82f10a);})[_0xfc5d('0x28')](function(_0x463386){_0x3eb6e3['rows']=_0x463386;return _0x3eb6e3;})[_0xfc5d('0x28')](respondWithFilteredResult(_0x560198,_0x82f10a))[_0xfc5d('0x43')](handleError(_0x560198,null));};exports[_0xfc5d('0x44')]=function(_0x522fd5,_0x116e72){var _0x1c1cae={'raw':![],'where':{'id':_0x522fd5[_0xfc5d('0x45')]['id']}},_0xd9d449={};_0xd9d449[_0xfc5d('0x36')]=_[_0xfc5d('0x33')](db[_0xfc5d('0x2d')][_0xfc5d('0x2e')]);_0xd9d449[_0xfc5d('0x32')]=_['keys'](_0x522fd5[_0xfc5d('0x32')]);_0xd9d449['filters']=_['intersection'](_0xd9d449[_0xfc5d('0x36')],_0xd9d449[_0xfc5d('0x32')]);_0x1c1cae[_0xfc5d('0x38')]=_[_0xfc5d('0x35')](_0xd9d449[_0xfc5d('0x36')],qs[_0xfc5d('0x37')](_0x522fd5['query'][_0xfc5d('0x37')]));_0x1c1cae[_0xfc5d('0x38')]=_0x1c1cae[_0xfc5d('0x38')]['length']?_0x1c1cae['attributes']:_0xd9d449[_0xfc5d('0x36')];if(_0x522fd5[_0xfc5d('0x32')][_0xfc5d('0x41')]){_0x1c1cae[_0xfc5d('0x42')]=[{'all':!![]}];}_0x1c1cae=_[_0xfc5d('0x46')]({},_0x1c1cae,_0x522fd5[_0xfc5d('0x40')]);return db['UserProfile'][_0xfc5d('0x47')](_0x1c1cae)[_0xfc5d('0x28')](handleEntityNotFound(_0x116e72,null))[_0xfc5d('0x28')](respondWithResult(_0x116e72,null))[_0xfc5d('0x43')](handleError(_0x116e72,null));};exports[_0xfc5d('0x48')]=function(_0x4e8313,_0x235e68){return db[_0xfc5d('0x2d')][_0xfc5d('0x48')](_0x4e8313[_0xfc5d('0x49')],{})['then'](respondWithResult(_0x235e68,0xc9))['catch'](handleError(_0x235e68,null));};exports[_0xfc5d('0x4a')]=function(_0x2afdfe,_0x512a30){var _0x490175={'where':{'id':_0x2afdfe[_0xfc5d('0x45')]['id']}},_0x614b81={};_0x614b81['model']=_[_0xfc5d('0x33')](db['UserProfile']['rawAttributes']);_0x490175[_0xfc5d('0x38')]=_[_0xfc5d('0x35')](_0x614b81[_0xfc5d('0x36')],qs['fields'](_0x2afdfe[_0xfc5d('0x32')][_0xfc5d('0x37')]));_0x490175[_0xfc5d('0x38')]=_0x490175[_0xfc5d('0x38')][_0xfc5d('0x4b')]?_0x490175[_0xfc5d('0x38')]:_0x614b81[_0xfc5d('0x36')];if(_0x2afdfe['query']['includeAll']){_0x490175[_0xfc5d('0x42')]=[{'all':!![]}];}_0x490175=_[_0xfc5d('0x46')]({},_0x490175,_0x2afdfe['options']);return db[_0xfc5d('0x2d')]['find'](_0x490175)[_0xfc5d('0x28')](handleEntityNotFound(_0x512a30,null))[_0xfc5d('0x28')](function(_0x2c7a8f){if(_0x2c7a8f){var _0x1d93bd=_0x2c7a8f[_0xfc5d('0x4c')]({'plain':!![]});_0x1d93bd=qs[_0xfc5d('0x4d')](_0x1d93bd,['id',_0xfc5d('0x4e'),_0xfc5d('0x4f'),_0xfc5d('0x50')]);_0x2afdfe[_0xfc5d('0x49')]=_[_0xfc5d('0x4d')](_0x2afdfe[_0xfc5d('0x49')],['id','createdAt',_0xfc5d('0x4f')]);return db[_0xfc5d('0x51')][_0xfc5d('0x52')](function(_0x60f319){return db[_0xfc5d('0x2d')]['create'](_[_0xfc5d('0x46')](_0x1d93bd,_0x2afdfe[_0xfc5d('0x49')]),{'include':_0x2afdfe[_0xfc5d('0x32')][_0xfc5d('0x41')]?[{'all':!![]}]:undefined,'transaction':_0x60f319})[_0xfc5d('0x28')](function(_0x459800){var _0x4f21ef=_0x459800[_0xfc5d('0x4c')]({'plain':!![]});return db[_0xfc5d('0x53')][_0xfc5d('0x54')]({'where':{'userProfileId':_0x2afdfe[_0xfc5d('0x45')]['id']},'raw':!![]})[_0xfc5d('0x28')](function(_0x20d9d8){if(_0x20d9d8){return BPromise[_0xfc5d('0x55')](_0x20d9d8,function(_0x59586e){return new BPromise(function(_0x1fa073,_0x4bd03b){if(_0x59586e[_0xfc5d('0x56')]===null||_0x59586e[_0xfc5d('0x56')]===0x1)_0x1fa073(null);return db[_0xfc5d('0x57')][_0xfc5d('0x54')]({'where':{'sectionId':_0x59586e['id']},'raw':!![]})[_0xfc5d('0x28')](function(_0x34b7b9){var _0x19af34=_['map'](_0x34b7b9,function(_0x290a09){return qs[_0xfc5d('0x4d')](_0x290a09,['id',_0xfc5d('0x4e'),_0xfc5d('0x4f'),'sectionId']);});_0x1fa073(_0x19af34);})[_0xfc5d('0x43')](function(_0xf02aa4){_0x4bd03b(_0xf02aa4);});})[_0xfc5d('0x28')](function(_0x25187e){var _0xeb4d50=qs[_0xfc5d('0x4d')](_0x59586e,['id',_0xfc5d('0x4e'),_0xfc5d('0x4f')]);_0xeb4d50[_0xfc5d('0x58')]=_0x4f21ef['id'];if(_0x25187e)_0xeb4d50[_0xfc5d('0x59')]=_0x25187e;return _0xeb4d50;})[_0xfc5d('0x28')](function(_0x5a434e){return db['UserProfileSection'][_0xfc5d('0x48')](_0x5a434e,{'include':[{'model':db['UserProfileResource'],'as':'Resources'}],'raw':!![],'transaction':_0x60f319});});})[_0xfc5d('0x28')](function(){return _0x4f21ef;});}});});});}})[_0xfc5d('0x28')](respondWithResult(_0x512a30,0xc9))[_0xfc5d('0x43')](handleError(_0x512a30,null));};exports['update']=function(_0x5ce5c0,_0x3bb091){if(_0x5ce5c0[_0xfc5d('0x49')]['id']){delete _0x5ce5c0[_0xfc5d('0x49')]['id'];}return db[_0xfc5d('0x2d')]['find']({'where':{'id':_0x5ce5c0[_0xfc5d('0x45')]['id']}})[_0xfc5d('0x28')](handleEntityNotFound(_0x3bb091,null))[_0xfc5d('0x28')](saveUpdates(_0x5ce5c0['body'],null))['then'](respondWithResult(_0x3bb091,null))[_0xfc5d('0x43')](handleError(_0x3bb091,null));};exports['destroy']=function(_0x497344,_0x71b171){return db[_0xfc5d('0x2d')][_0xfc5d('0x47')]({'where':{'id':_0x497344[_0xfc5d('0x45')]['id']}})[_0xfc5d('0x28')](handleEntityNotFound(_0x71b171,null))[_0xfc5d('0x28')](removeEntity(_0x71b171,null))[_0xfc5d('0x43')](handleError(_0x71b171,null));};exports['describe']=function(_0x5be7c5,_0x4c0b0f){return db[_0xfc5d('0x2d')][_0xfc5d('0x5a')]()['then'](respondWithResult(_0x4c0b0f,null))[_0xfc5d('0x43')](handleError(_0x4c0b0f,null));};exports[_0xfc5d('0x5b')]=function(_0x4795ed,_0x50cf3c){var _0x2e2d7f=_0x4795ed[_0xfc5d('0x49')];return db[_0xfc5d('0x2d')][_0xfc5d('0x47')]({'where':{'id':_0x4795ed[_0xfc5d('0x45')]['id']}})['then'](handleEntityNotFound(_0x50cf3c,null))[_0xfc5d('0x28')](function(_0x534b94){if(_0x534b94){return db[_0xfc5d('0x51')]['transaction'](function(_0x49875f){return db[_0xfc5d('0x53')][_0xfc5d('0x5c')]({'where':{'userProfileId':_0x4795ed[_0xfc5d('0x45')]['id'],'sectionId':_[_0xfc5d('0x31')](_0x2e2d7f,function(_0x5736f5){return _0x5736f5[_0xfc5d('0x5d')];})},'transaction':_0x49875f})[_0xfc5d('0x28')](function(){var _0x23296a=_[_0xfc5d('0x31')](_0x2e2d7f,function(_0x4cfe54){_0x4cfe54[_0xfc5d('0x58')]=_0x4795ed[_0xfc5d('0x45')]['id'];return _0x4cfe54;});var _0x3079ae=[];return BPromise[_0xfc5d('0x55')](_0x23296a,function(_0x2e4557){return db[_0xfc5d('0x53')]['create'](_0x2e4557,{'include':[{'model':db['UserProfileResource'],'as':_0xfc5d('0x59')}],'raw':!![],'transaction':_0x49875f})['then'](function(_0x224df1){_0x3079ae[_0xfc5d('0x5e')](_0x224df1[_0xfc5d('0x4c')]({'plain':!![]}));});})[_0xfc5d('0x28')](function(){return _0x3079ae;});});});}})[_0xfc5d('0x28')](function(_0x1b81d5){return _0x1b81d5;})[_0xfc5d('0x28')](respondWithResult(_0x50cf3c,null))['catch'](handleError(_0x50cf3c,null));};exports[_0xfc5d('0x5f')]=function(_0x3c14b4,_0x3074bb){var _0x5c6a00;return db[_0xfc5d('0x2d')][_0xfc5d('0x47')]({'where':{'id':_0x3c14b4[_0xfc5d('0x45')]['id']},'attributes':['id','name']})[_0xfc5d('0x28')](handleEntityNotFound(_0x3074bb,null))[_0xfc5d('0x28')](function(_0x1a3414){if(_0x1a3414){_0x5c6a00=_0x1a3414;return db['UserProfileSection'][_0xfc5d('0x5c')]({'where':{'userProfileId':_0x3c14b4[_0xfc5d('0x45')]['id'],'sectionId':_0x3c14b4['query'][_0xfc5d('0x60')]}});}})[_0xfc5d('0x28')](function(){return _0x5c6a00;})[_0xfc5d('0x28')](respondWithStatusCode(_0x3074bb,null))[_0xfc5d('0x43')](handleError(_0x3074bb,null));};exports[_0xfc5d('0x61')]=function(_0x29cf2e,_0x97e4e2){var _0x413773=[];var _0x8608b7=[];return db['UserProfileSection'][_0xfc5d('0x54')]({'where':{'userProfileId':_0x29cf2e['params']['id']},'raw':!![]})[_0xfc5d('0x28')](function(_0x164dfa){_0x413773=_[_0xfc5d('0x3f')](_0x164dfa,function(_0x527c25){return _0x527c25['enabled']===0x1||_[_0xfc5d('0x62')]([0x3eb,0x709],_0x527c25[_0xfc5d('0x5d')]);});if(!_[_0xfc5d('0x63')](_0x413773)){return _[_0xfc5d('0x31')](_0x413773,function(_0x3f46bd){return _0x3f46bd[_0xfc5d('0x5d')];});}else{return;}})[_0xfc5d('0x28')](function(_0x251d05){if(_0x251d05)_0x8608b7=_0x251d05;if(_['includes'](_0x8608b7,0x64)){var _0x181175=_[_0xfc5d('0x47')](_0x413773,{'sectionId':0x64});return hasDefaultDashboard(_0x181175)[_0xfc5d('0x28')](function(_0x42b4af){return _[_0xfc5d('0x31')](_0x413773,function(_0x3c029f){if(_0x3c029f[_0xfc5d('0x5d')]===0x64){_0x3c029f[_0xfc5d('0x64')]=_0x42b4af;}return _0x3c029f;});});}else{return;}})[_0xfc5d('0x28')](function(_0x470f03){if(_0x470f03)_0x413773=_0x470f03;if(_[_0xfc5d('0x62')](_0x8608b7,0x3eb)){var _0x2c65dc=_[_0xfc5d('0x47')](_0x413773,{'sectionId':0x3eb});return getCustomDashboards(_0x2c65dc)[_0xfc5d('0x28')](function(_0x4738fc){return _[_0xfc5d('0x31')](_0x413773,function(_0x5633b8){if(_0x2c65dc[_0xfc5d('0x65')]){if(_0x5633b8['sectionId']===0x3eb){_0x5633b8['subsections']=_0x4738fc;}}else{if(_0x5633b8[_0xfc5d('0x5d')]===0x64){_0x5633b8[_0xfc5d('0x64')]=_0x4738fc;}}return _0x5633b8;});});}else{return;}})[_0xfc5d('0x28')](function(_0x55406a){if(_0x55406a)_0x413773=_0x55406a;if(_['includes'](_0x8608b7,0x709)){var _0x29bd76=_[_0xfc5d('0x47')](_0x413773,{'sectionId':0x709});return getPlugins(_0x29bd76)[_0xfc5d('0x28')](function(_0xe14c70){if(_0x29bd76[_0xfc5d('0x65')]){return _['map'](_0x413773,function(_0x410f06){if(_0x410f06[_0xfc5d('0x5d')]===0x709){_0x410f06[_0xfc5d('0x64')]=_0xe14c70;}return _0x410f06;});}else{var _0x59520e={'sectionId':0x76c,'enabled':0x1,'subsections':_0xe14c70};var _0x387e2a=_[_0xfc5d('0x31')](_0x413773);_0x387e2a['push'](_0x59520e);return _0x387e2a;}});}else{return;}})[_0xfc5d('0x28')](function(_0xd6553e){if(_0xd6553e)_0x413773=_0xd6553e;return _[_0xfc5d('0x3f')](_0x413773,[_0xfc5d('0x65'),0x1]);})[_0xfc5d('0x28')](respondWithResult(_0x97e4e2,null))[_0xfc5d('0x43')](handleError(_0x97e4e2,null));};function hasDefaultDashboard(_0x1fd25d){var _0x6bd2bb=[0x65];return new BPromise(function(_0x1ae36c,_0x231636){try{if(_0x1fd25d['autoAssociation']){_0x1ae36c(_0x6bd2bb);}else{return db[_0xfc5d('0x57')][_0xfc5d('0x66')]({'where':{'sectionId':_0x1fd25d['id']},'raw':!![]})[_0xfc5d('0x28')](function(_0x3edcad){_0x3edcad?_0x1ae36c(_0x6bd2bb):_0x1ae36c();});}}catch(_0x31b39e){_0x231636(_0x31b39e);}});}function getCustomDashboards(_0x39c268){var _0x551ad7=[];return new BPromise(function(_0x4940dc,_0x1f9740){try{if(_0x39c268[_0xfc5d('0x56')]){return db[_0xfc5d('0x67')][_0xfc5d('0x54')]({'raw':!![]})[_0xfc5d('0x28')](function(_0x4037e7){_0x4037e7[_0xfc5d('0x68')](function(_0xa49fee){_0x551ad7[_0xfc5d('0x5e')](_0xa49fee['id']+0x1869f);});_0x4940dc(_0x551ad7);});}else{return db['UserProfileResource'][_0xfc5d('0x54')]({'where':{'sectionId':_0x39c268['id']},'raw':!![]})[_0xfc5d('0x28')](function(_0x23c748){_0x23c748[_0xfc5d('0x68')](function(_0x5b17c6){_0x551ad7[_0xfc5d('0x5e')](_0x5b17c6[_0xfc5d('0x69')]+0x1869f);});_0x4940dc(_0x551ad7);});}}catch(_0x5f39f3){_0x1f9740(_0x5f39f3);}});}function getPlugins(_0x12b539){var _0x897e16=[];return new BPromise(function(_0x168fdf,_0x5de09d){try{if(_0x12b539[_0xfc5d('0x56')]){return db['Plugin'][_0xfc5d('0x54')]({'raw':!![]})[_0xfc5d('0x28')](function(_0x2aeb33){_0x2aeb33[_0xfc5d('0x68')](function(_0x26f702){_0x897e16[_0xfc5d('0x5e')](_0x26f702['id']+0x15b38);});_0x168fdf(_0x897e16);});}else{return db[_0xfc5d('0x57')][_0xfc5d('0x54')]({'where':{'sectionId':_0x12b539['id']},'raw':!![]})['then'](function(_0x1e98fa){_0x1e98fa[_0xfc5d('0x68')](function(_0x549325){_0x897e16[_0xfc5d('0x5e')](_0x549325[_0xfc5d('0x69')]+0x15b38);});_0x168fdf(_0x897e16);});}}catch(_0x56cc35){_0x5de09d(_0x56cc35);}});}exports[_0xfc5d('0x6a')]=function(_0x20949d,_0x45e0dc){return db[_0xfc5d('0x2d')]['find']({'where':{'id':_0x20949d[_0xfc5d('0x45')]['id']}})[_0xfc5d('0x28')](handleEntityNotFound(_0x45e0dc,null))[_0xfc5d('0x28')](function(_0x38cfac){if(_0x38cfac){return db[_0xfc5d('0x51')][_0xfc5d('0x52')](function(_0x344e50){return db[_0xfc5d('0x53')][_0xfc5d('0x54')]({'where':{'userProfileId':_0x20949d['params']['id']},'attributes':['id'],'raw':!![]})[_0xfc5d('0x28')](function(_0x34fcc0){if(_0x34fcc0){return db[_0xfc5d('0x53')]['destroy']({'where':{'userProfileId':_0x20949d[_0xfc5d('0x45')]['id'],'id':_[_0xfc5d('0x31')](_0x34fcc0,function(_0x30a0a1){return _0x30a0a1['id'];})},'transaction':_0x344e50});}})['then'](function(_0x33c13b){var _0x53a354=_[_0xfc5d('0x31')](_0x20949d['body'],function(_0x44ad00){_0x44ad00[_0xfc5d('0x58')]=_0x20949d[_0xfc5d('0x45')]['id'];return _0x44ad00;});return db[_0xfc5d('0x53')][_0xfc5d('0x6b')](_0x53a354,{'raw':!![],'transaction':_0x344e50});})[_0xfc5d('0x28')](function(_0x4ebb7b){var _0x2304b7=_['filter'](_['map'](_0x4ebb7b,function(_0x135a8c){return _0x135a8c['get']({'plain':!![]});}),{'includeAll':![]});if(_0x2304b7){return db[_0xfc5d('0x53')][_0xfc5d('0x54')]({'where':{'userProfileId':_0x20949d['params']['id'],'sectionId':_[_0xfc5d('0x31')](_0x2304b7,function(_0x12c539){return _0x12c539[_0xfc5d('0x5d')];})},'attributes':['id',_0xfc5d('0x5d')],'raw':!![]})[_0xfc5d('0x28')](function(_0x388de7){var _0x3aa824=_['map'](_0x20949d[_0xfc5d('0x49')],function(_0x5d26d3){_0x5d26d3['userProfileId']=_0x20949d[_0xfc5d('0x45')]['id'];return _0x5d26d3;});return db[_0xfc5d('0x57')][_0xfc5d('0x6b')](_0x3aa824,{'raw':!![],'transaction':_0x344e50});});}})[_0xfc5d('0x43')](handleError(_0x45e0dc,null));});}})[_0xfc5d('0x28')](function(_0x2a10db){var _0x1b0e7b=_[_0xfc5d('0x31')](_0x2a10db,function(_0x30565f){return _0x30565f[_0xfc5d('0x4c')]({'plain':!![]});});})[_0xfc5d('0x28')](respondWithResult(_0x45e0dc,null))['catch'](handleError(_0x45e0dc,null));};exports[_0xfc5d('0x6c')]=function(_0x1ec524,_0x107341,_0x2387c8){return db[_0xfc5d('0x2d')]['find']({'where':{'id':_0x1ec524[_0xfc5d('0x45')]['id']}})['then'](handleEntityNotFound(_0x107341,null))[_0xfc5d('0x28')](function(_0xb387db){if(_0xb387db){return _0xb387db[_0xfc5d('0x6c')](_0x1ec524[_0xfc5d('0x32')][_0xfc5d('0x60')]);}})[_0xfc5d('0x28')](respondWithStatusCode(_0x107341,null))[_0xfc5d('0x43')](handleError(_0x107341,null));};exports['getResources']=function(_0x17969c,_0x5069c8){var _0x28a370={};if(!_0x17969c[_0xfc5d('0x32')][_0xfc5d('0x6d')])throw new Error(_0xfc5d('0x6e'));if(!_0x17969c[_0xfc5d('0x32')][_0xfc5d('0x39')](_0xfc5d('0x3a'))){_0x28a370[_0xfc5d('0x20')]=qs[_0xfc5d('0x20')](_0x17969c[_0xfc5d('0x32')][_0xfc5d('0x20')]);_0x28a370['offset']=qs[_0xfc5d('0x1e')](_0x17969c[_0xfc5d('0x32')][_0xfc5d('0x1e')]);}return db[_0xfc5d('0x2d')][_0xfc5d('0x47')]({'where':{'id':_0x17969c[_0xfc5d('0x45')]['id']}})[_0xfc5d('0x28')](function(_0x4afa91){if(!_0x4afa91)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x17969c[_0xfc5d('0x45')]['id']);return db[_0xfc5d('0x2d')][_0xfc5d('0x6f')](_0x17969c);})['then'](respondWithFilteredResult(_0x5069c8,_0x28a370))['catch'](handleError(_0x5069c8,null));};
\ No newline at end of file
index 9c0ddac..0b75b60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf5a=['setMaxListeners','save','update','remove','emit','hasOwnProperty','../../mysqldb','UserProfile'];(function(_0x3f6bcf,_0x531e79){var _0x1c5350=function(_0x282fc5){while(--_0x282fc5){_0x3f6bcf['push'](_0x3f6bcf['shift']());}};_0x1c5350(++_0x531e79);}(_0xaf5a,0x116));var _0xaaf5=function(_0x187826,_0x357251){_0x187826=_0x187826-0x0;var _0x2c22f5=_0xaf5a[_0x187826];return _0x2c22f5;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0xaaf5('0x0'))['db'][_0xaaf5('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xaaf5('0x2')](0x0);var events={'afterCreate':_0xaaf5('0x3'),'afterUpdate':_0xaaf5('0x4'),'afterDestroy':_0xaaf5('0x5')};function emitEvent(_0x5c55af){return function(_0x1bdf16,_0x4ae9ed,_0x23fbd9){UserProfileEvents[_0xaaf5('0x6')](_0x5c55af+':'+_0x1bdf16['id'],_0x1bdf16);UserProfileEvents[_0xaaf5('0x6')](_0x5c55af,_0x1bdf16);_0x23fbd9(null);};}for(var e in events){if(events[_0xaaf5('0x7')](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
+var _0x1623=['emit','hasOwnProperty','exports','events','setMaxListeners','save','update','remove'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0x1623,0xab));var _0x3162=function(_0xe2364a,_0x32436a){_0xe2364a=_0xe2364a-0x0;var _0x263b58=_0x1623[_0xe2364a];return _0x263b58;};'use strict';var EventEmitter=require(_0x3162('0x0'));var UserProfile=require('../../mysqldb')['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x3162('0x1')](0x0);var events={'afterCreate':_0x3162('0x2'),'afterUpdate':_0x3162('0x3'),'afterDestroy':_0x3162('0x4')};function emitEvent(_0x428dd7){return function(_0x4ce2bd,_0x5d49d0,_0x7a4559){UserProfileEvents['emit'](_0x428dd7+':'+_0x4ce2bd['id'],_0x4ce2bd);UserProfileEvents[_0x3162('0x5')](_0x428dd7,_0x4ce2bd);_0x7a4559(null);};}for(var e in events){if(events[_0x3162('0x6')](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0x3162('0x7')]=UserProfileEvents;
\ No newline at end of file
index 812ba09..e4c0b01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa3f=['lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','value','findAll','associatedResources','map','name','catch','resolve','AnalyticExtractedReport','resourceId','toLowerCase','squareprojects','childModel','odbc','SquareOdbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','projects','JscriptyProject','contacts','Lists','ListId','companies','CmCompany','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording','Agents','membername','role','agent','Telephones','User','telephone','VoiceQueues','queue','VoiceQueue','type','outbound','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','MailQueue','MailAccount','mailsubstatuses','openchannelqueues','OpenchannelQueue','OpenchannelAccount','smsqueues','SmsQueue','whatsappqueues','WhatsappQueue','WhatsappAccount','Team','voicequeues','queuecampaigns','QueueCampaigns','agents','telephones','admin','user','zendeskaccounts','ZendeskAccount','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','DeskAccount','zohoaccounts','ZohoAccount','Disposition','customdashboards','Dashboard','intervals','Interval','Schedule','sounds','Sound','tags','Tag','templates','Template','triggers','Trigger','trunks','Trunk','Variable','plugins','Plugin','extractedreports','reportId','metrics','AnalyticMetric','charAt','toUpperCase','slice','QueryTypes','SELECT','select','ui.','InteractionId','ui.createdAt','from','user_has_','_interactions','sequelize','then','OpenTabs','define','user_profiles','query','mergeResources','isEmpty','length','push','UserProfileSection','find','params','all','ignore','autoAssociation','model','rawAttributes','keys','attributes','fields','nolimit','limit','offset','order','sort','where','pick','filters','merge','VIRTUAL','foreignKey','options','include','forEach','default','DefaultReports','custom','CustomReports','rows','count','includeAll','CmContact','color','tag','ThroughTags','openTabs','true','dataValues','sms','fax','mail','openchannel'];(function(_0x47c47f,_0x28034a){var _0x2c470b=function(_0x30f365){while(--_0x30f365){_0x47c47f['push'](_0x47c47f['shift']());}};_0x2c470b(++_0x28034a);}(_0xaa3f,0xbb));var _0xfaa3=function(_0x560d00,_0x5ef422){_0x560d00=_0x560d00-0x0;var _0xd80ada=_0xaa3f[_0x560d00];return _0xd80ada;};'use strict';var _=require(_0xfaa3('0x0'));var attributes=require(_0xfaa3('0x1'));var qs=require(_0xfaa3('0x2'));var squel=require(_0xfaa3('0x3'));module[_0xfaa3('0x4')]=function(_0x1da39b){var _0x408343=_0x1da39b[_0xfaa3('0x5')];function _0x32f4e1(_0x5123a3,_0x513eea){return new Promise(function(_0x2ac57f,_0x4bac92){if(!_0x513eea)return _0x2ac57f(null);var _0x3d09aa=_0x513eea[_0xfaa3('0x6')]?{[_0x513eea[_0xfaa3('0x6')][_0xfaa3('0x7')]]:_0x513eea[_0xfaa3('0x6')][_0xfaa3('0x8')]}:undefined;return _0x408343[_0x5123a3][_0xfaa3('0x9')]({'where':_0x3d09aa,'raw':!![]})['then'](function(_0x37bcd5){_0x513eea[_0xfaa3('0xa')]=_['map'](_0x37bcd5,'id');_0x2ac57f(_0x513eea);})['catch'](function(_0x44d88e){_0x4bac92(_0x44d88e);});});}function _0xce3b1f(_0x34d3dc,_0x278e6c){return new Promise(function(_0x23e4b6,_0x32866b){var _0x5e1b29=_0x34d3dc[_0xfaa3('0x6')]?{[_0x34d3dc['filter'][_0xfaa3('0x7')]]:_0x34d3dc[_0xfaa3('0x6')][_0xfaa3('0x8')]}:undefined;return _0x408343[_0x34d3dc['model']][_0xfaa3('0x9')]({'where':_0x5e1b29,'raw':!![]})['then'](function(_0xdf7551){_0x278e6c[_0xfaa3('0xa')]=_[_0xfaa3('0xb')](_0xdf7551,function(_0x3ddb40){return _0x3ddb40[_0xfaa3('0xc')];});_0x23e4b6(_0x278e6c);})[_0xfaa3('0xd')](function(_0x4da250){_0x32866b(_0x4da250);});});}function _0x5f47dd(_0x46e112,_0xe1a082,_0x407384){if(!_0xe1a082)return Promise[_0xfaa3('0xe')](null);return new Promise(function(_0x4e54e4,_0x5dd38c){return _0x408343['UserProfileResource']['findAll']({'where':{'sectionId':_0xe1a082['id']},'raw':!![]})['then'](function(_0x275a07){if(_0x46e112['field']&&_0x46e112[_0xfaa3('0x7')]!=='id'){_0xe1a082[_0xfaa3('0xa')]=_[_0xfaa3('0xb')](_0x275a07,function(_0x34b276){return _0x34b276[_0x46e112[_0xfaa3('0x7')]];});}else{if(_0x407384===_0xfaa3('0xf')){_0xe1a082[_0xfaa3('0xa')]=_[_0xfaa3('0xb')](_0x275a07,function(_0x220c9e){return{'id':_0x220c9e[_0xfaa3('0x10')],'type':_0x220c9e['type']};});}else{_0xe1a082[_0xfaa3('0xa')]=_[_0xfaa3('0xb')](_0x275a07,function(_0x26d9ef){return _0x26d9ef[_0xfaa3('0x10')];});}}_0x4e54e4(_0xe1a082);})['catch'](function(_0x1f7324){_0x5dd38c(_0x1f7324);});});}function _0x2d4087(_0x2f077c,_0x22156a){var _0x16a3e3={'parentSections':[]};switch(_0x2f077c[_0xfaa3('0x11')]()){case _0xfaa3('0x12'):_0x16a3e3[_0xfaa3('0x13')]='SquareProject';break;case _0xfaa3('0x14'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x15');break;case _0xfaa3('0x16'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x17');_0x16a3e3[_0xfaa3('0x18')]=[{'name':_0xfaa3('0x19'),'field':_0xfaa3('0xc'),'foreignKey':_0xfaa3('0x1a')}];break;case _0xfaa3('0x1b'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x1c');break;case _0xfaa3('0x1d'):_0x16a3e3[_0xfaa3('0x13')]='CmContact';_0x16a3e3[_0xfaa3('0x18')]=[{'name':_0xfaa3('0x1e'),'field':'id','foreignKey':_0xfaa3('0x1f')}];break;case'lists':_0x16a3e3[_0xfaa3('0x13')]='CmList';break;case _0xfaa3('0x20'):_0x16a3e3['childModel']=_0xfaa3('0x21');break;case _0xfaa3('0x22'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x23');break;case _0xfaa3('0x24'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x25');break;case _0xfaa3('0x26'):_0x16a3e3['childModel']=_0xfaa3('0x27');break;case _0xfaa3('0x28'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x29');break;case _0xfaa3('0x2a'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x2b');break;case _0xfaa3('0x2c'):case _0xfaa3('0x2d'):case _0xfaa3('0x2e'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x2f');break;case _0xfaa3('0x30'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x31');break;case _0xfaa3('0x32'):_0x16a3e3['childModel']=_0xfaa3('0x33');break;case _0xfaa3('0x34'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x35');_0x16a3e3[_0xfaa3('0x18')]=[{'name':_0xfaa3('0x36'),'field':_0xfaa3('0xc'),'foreignKey':_0xfaa3('0x37'),'model':'User','filter':{'field':_0xfaa3('0x38'),'value':[_0xfaa3('0x39')]}},{'name':_0xfaa3('0x3a'),'field':'name','foreignKey':_0xfaa3('0x37'),'model':_0xfaa3('0x3b'),'filter':{'field':'role','value':[_0xfaa3('0x3c')]}},{'name':_0xfaa3('0x3d'),'field':_0xfaa3('0xc'),'foreignKey':_0xfaa3('0x3e'),'model':_0xfaa3('0x3f'),'filter':{'field':_0xfaa3('0x40'),'value':['inbound']}},{'name':'QueueCampaigns','field':_0xfaa3('0xc'),'foreignKey':_0xfaa3('0x3e'),'model':'VoiceQueue','filter':{'field':'type','value':[_0xfaa3('0x41')]}}];break;case'musiconholds':_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x42');break;case _0xfaa3('0x43'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x44');break;case _0xfaa3('0x45'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x46');break;case'ivrcampaigns':_0x16a3e3['childModel']='Campaign';break;case'mailqueues':_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x47');break;case'mailaccounts':_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x48');break;case _0xfaa3('0x49'):_0x16a3e3['childModel']='MailSubstatus';break;case _0xfaa3('0x4a'):_0x16a3e3['childModel']=_0xfaa3('0x4b');break;case'openchannelaccounts':_0x16a3e3['childModel']=_0xfaa3('0x4c');break;case _0xfaa3('0x4d'):_0x16a3e3['childModel']=_0xfaa3('0x4e');break;case'smsaccounts':_0x16a3e3[_0xfaa3('0x13')]='SmsAccount';break;case _0xfaa3('0x4f'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x50');break;case'whatsappaccounts':_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x51');break;case'teams':_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x52');break;case _0xfaa3('0x53'):case _0xfaa3('0x54'):_0x16a3e3['childModel']=_0xfaa3('0x3f');if(_0x22156a){_0x16a3e3[_0xfaa3('0x18')]=[{'name':'VoiceQueues'},{'name':_0xfaa3('0x55')}];}break;case'users':case _0xfaa3('0x56'):case _0xfaa3('0x57'):_0x16a3e3[_0xfaa3('0x13')]='User';if(_0x22156a){_0x16a3e3[_0xfaa3('0x18')]=[{'name':'Users','filter':{'field':'role','value':[_0xfaa3('0x58'),_0xfaa3('0x59')]},'ignore':!![]},{'name':_0xfaa3('0x36')},{'name':_0xfaa3('0x3a')}];}break;case _0xfaa3('0x5a'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x5b');break;case'salesforceaccounts':_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x5c');break;case _0xfaa3('0x5d'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x5e');break;case _0xfaa3('0x5f'):_0x16a3e3[_0xfaa3('0x13')]='SugarcrmAccount';break;case'deskaccounts':_0x16a3e3['childModel']=_0xfaa3('0x60');break;case _0xfaa3('0x61'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x62');break;case'vtigeraccounts':_0x16a3e3[_0xfaa3('0x13')]='User';break;case'cannedanswers':_0x16a3e3['childModel']='CannedAnswer';break;case'dispositions':_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x63');break;case _0xfaa3('0x64'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x65');break;case _0xfaa3('0x66'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x67');break;case'pauses':_0x16a3e3[_0xfaa3('0x13')]='Pause';break;case'scheduler':_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x68');break;case _0xfaa3('0x69'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x6a');break;case _0xfaa3('0x6b'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x6c');break;case _0xfaa3('0x6d'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x6e');break;case _0xfaa3('0x6f'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x70');break;case _0xfaa3('0x71'):_0x16a3e3['childModel']=_0xfaa3('0x72');break;case'variables':_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x73');break;case _0xfaa3('0x74'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x75');break;case _0xfaa3('0x76'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0xf');_0x16a3e3[_0xfaa3('0x18')]=[{'name':'Reports','field':'id','foreignKey':_0xfaa3('0x77')}];break;case _0xfaa3('0x78'):_0x16a3e3[_0xfaa3('0x13')]=_0xfaa3('0x79');break;}return _0x16a3e3;}function _0x5ccb10(_0x1fd6d7,_0x1cf28e){var _0x172a2c=_0x1fd6d7[_0xfaa3('0x7a')](0x0)[_0xfaa3('0x7b')]()+_0x1fd6d7[_0xfaa3('0x7c')](0x1);var _0x42e7f9={'type':_0x408343['Sequelize'][_0xfaa3('0x7d')][_0xfaa3('0x7e')],'raw':!![]};return new Promise(function(_0x22ce8c,_0x17e10a){var _0x5d8277=squel[_0xfaa3('0x7f')]()[_0xfaa3('0x7')](_0xfaa3('0x80')+_0x172a2c+_0xfaa3('0x81'),'id')[_0xfaa3('0x7')](_0xfaa3('0x82'))[_0xfaa3('0x83')](_0xfaa3('0x84')+_0x1fd6d7+_0xfaa3('0x85'),'ui')['where']('ui.UserId\x20=\x20?',_0x1cf28e['id']);return _0x408343[_0xfaa3('0x86')]['query'](_0x5d8277['toString'](),_0x42e7f9)[_0xfaa3('0x87')](function(_0x8b7c){_0x1cf28e[_0x172a2c+_0xfaa3('0x88')]=_0x8b7c;_0x22ce8c(_0x8b7c);})['catch'](function(_0x142f5b){_0x17e10a(_0x142f5b);});});}return _0x1da39b[_0xfaa3('0x89')]('UserProfile',attributes,{'tableName':_0xfaa3('0x8a'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x2a1dde){var _0x2ef70d={'raw':![],'where':{}};var _0x304af6={};var _0x4a537f={'count':0x0,'rows':[]};var _0x1fd9cf=_0x2a1dde[_0xfaa3('0x8b')]['section'];var _0x345291=_0x2a1dde[_0xfaa3('0x8b')][_0xfaa3('0x8c')]||![];var _0x1df722=_0x2d4087(_0x1fd9cf,_0x345291);if(!_0x1df722[_0xfaa3('0x13')])throw new Error('Invalid\x20section\x20\x27'+_0x1fd9cf+'\x27');var _0x17b747=[{'name':_0x1fd9cf}];if(!_[_0xfaa3('0x8d')](_0x1df722['parentSections']))_0x17b747=_0x1df722['parentSections'];var _0x5b3a99=[];for(var _0x4e1069=0x0;_0x4e1069<_0x17b747[_0xfaa3('0x8e')];_0x4e1069++){_0x5b3a99[_0xfaa3('0x8f')](_0x408343[_0xfaa3('0x90')][_0xfaa3('0x91')]({'where':{'userProfileId':_0x2a1dde[_0xfaa3('0x92')]['id'],'name':_0x17b747[_0x4e1069][_0xfaa3('0xc')]},'raw':!![]}));}return Promise[_0xfaa3('0x93')](_0x5b3a99)[_0xfaa3('0x87')](function(_0x1cc322){var _0x19fd0e=_[_0xfaa3('0x6')](_0x1cc322,function(_0x517769){return _0x517769?_0x517769:undefined;});var _0xbbad66=_['filter'](_0x17b747,[_0xfaa3('0x94'),!![]]);var _0x5f02d4=_[_0xfaa3('0x8d')](_0x19fd0e)&&_[_0xfaa3('0x8d')](_0xbbad66)?null:_['union'](_0xbbad66,_0x19fd0e);if(!_0x5f02d4)return null;var _0x5d573e=[];for(var _0x16f059=0x0;_0x16f059<_0x5f02d4[_0xfaa3('0x8e')];_0x16f059++){var _0x2bc04c=_[_0xfaa3('0x91')](_0x17b747,function(_0x60adb2){return _0x5f02d4[_0x16f059]?_0x60adb2[_0xfaa3('0xc')]===_0x5f02d4[_0x16f059][_0xfaa3('0xc')]:null;});if(_0x2bc04c){if(_0x5f02d4[_0x16f059]['ignore']){_0x5d573e[_0xfaa3('0x8f')](_0x32f4e1(_0x1df722[_0xfaa3('0x13')],_0x5f02d4[_0x16f059]));}else{if(!_0x5f02d4[_0x16f059][_0xfaa3('0x95')]){_0x5d573e['push'](_0x5f47dd(_0x2bc04c,_0x5f02d4[_0x16f059],_0x1df722[_0xfaa3('0x13')]));}else{if(_0x2bc04c[_0xfaa3('0x96')]){_0x5d573e[_0xfaa3('0x8f')](_0xce3b1f(_0x2bc04c,_0x5f02d4[_0x16f059]));}}}}}return Promise[_0xfaa3('0x93')](_0x5d573e);})['then'](function(_0x6ea54e){var _0x5a6e29=_0x6ea54e;var _0x5e71bd=null;if(_0x5a6e29){_0x5e71bd=_0x5a6e29[_0xfaa3('0x8e')]===0x1?_0x5a6e29[0x0]:null;}if(!_0x5e71bd&&!_0x5a6e29)return _0x4a537f;var _0x38c1fb=_0x408343[_0x1df722[_0xfaa3('0x13')]][_0xfaa3('0x97')];_0x304af6[_0xfaa3('0x96')]=_[_0xfaa3('0x98')](_0x38c1fb);_0x304af6[_0xfaa3('0x8b')]=_['keys'](_0x2a1dde[_0xfaa3('0x8b')]);_0x304af6['filters']=_['intersection'](_0x304af6[_0xfaa3('0x96')],_0x304af6['query']);_0x2ef70d[_0xfaa3('0x99')]=_['intersection'](_0x304af6['model'],qs[_0xfaa3('0x9a')](_0x2a1dde[_0xfaa3('0x8b')][_0xfaa3('0x9a')]));_0x2ef70d['attributes']=_0x2ef70d[_0xfaa3('0x99')][_0xfaa3('0x8e')]?_0x2ef70d[_0xfaa3('0x99')]:_0x304af6[_0xfaa3('0x96')];if(!_0x2a1dde[_0xfaa3('0x8b')]['hasOwnProperty'](_0xfaa3('0x9b'))){_0x2ef70d[_0xfaa3('0x9c')]=qs['limit'](_0x2a1dde[_0xfaa3('0x8b')][_0xfaa3('0x9c')]);_0x2ef70d[_0xfaa3('0x9d')]=qs[_0xfaa3('0x9d')](_0x2a1dde[_0xfaa3('0x8b')][_0xfaa3('0x9d')]);}_0x2ef70d[_0xfaa3('0x9e')]=qs[_0xfaa3('0x9f')](_0x2a1dde['query'][_0xfaa3('0x9f')]);_0x2ef70d[_0xfaa3('0xa0')]=qs['filters'](_[_0xfaa3('0xa1')](_0x2a1dde[_0xfaa3('0x8b')],_0x304af6[_0xfaa3('0xa2')]));if(_0x2a1dde[_0xfaa3('0x8b')][_0xfaa3('0x6')]){_0x2ef70d['where']=_[_0xfaa3('0xa3')](_0x2ef70d[_0xfaa3('0xa0')],{'$or':_[_0xfaa3('0xb')](_0x38c1fb,function(_0x479203){if(_0x479203[_0xfaa3('0x40')]['key']!==_0xfaa3('0xa4')){var _0x2d8f04={};_0x2d8f04[_0x479203[_0xfaa3('0x7')]]={'$like':'%'+_0x2a1dde['query'][_0xfaa3('0x6')]+'%'};return _0x2d8f04;}})});}var _0x248b55=[];var _0x1f48f4=null;var _0x1d8ff5={};if(_0x5e71bd){_0x1f48f4=_['find'](_0x17b747,['name',_0x5e71bd['name']]);if(_0x1f48f4[_0xfaa3('0x7')]){_0x1d8ff5={};if(_0x1df722[_0xfaa3('0x13')]===_0xfaa3('0xf')){_0x1d8ff5[_0x1f48f4[_0xfaa3('0xa5')]]=_[_0xfaa3('0xb')](_0x5e71bd['associatedResources'],'id');}else{_0x1d8ff5[_0x1f48f4[_0xfaa3('0xa5')]]=_0x5e71bd[_0xfaa3('0xa')];}_0x248b55[_0xfaa3('0x8f')](_0x1d8ff5);}else{_0x2ef70d['where']['id']=_0x5e71bd[_0xfaa3('0xa')];}}else{for(var _0x509231=0x0;_0x509231<_0x5a6e29[_0xfaa3('0x8e')];_0x509231++){_0x1f48f4=_['find'](_0x17b747,[_0xfaa3('0xc'),_0x5a6e29[_0x509231][_0xfaa3('0xc')]]);if(_0x1f48f4[_0xfaa3('0x7')]){_0x1d8ff5={};_0x1d8ff5[_0x1f48f4[_0xfaa3('0xa5')]]=_0x5a6e29[_0x509231]['associatedResources'];_0x248b55[_0xfaa3('0x8f')](_0x1d8ff5);}else{if(!_0x2ef70d[_0xfaa3('0xa0')]['id'])_0x2ef70d[_0xfaa3('0xa0')]['id']=[];_0x5a6e29[_0x509231][_0xfaa3('0xa')]['forEach'](function(_0x3cc53c){_0x2ef70d[_0xfaa3('0xa0')]['id'][_0xfaa3('0x8f')](_0x3cc53c);});}}}if(!_[_0xfaa3('0x8d')](_0x248b55)){_0x2ef70d[_0xfaa3('0xa0')]=_['merge'](_0x2ef70d[_0xfaa3('0xa0')],{'$and':{'$or':_0x248b55}});}_0x2ef70d=_[_0xfaa3('0xa3')]({},_0x2ef70d,_0x2a1dde[_0xfaa3('0xa6')]);if(_0x5e71bd&&!_0x5e71bd['autoAssociation']&&_0x1df722[_0xfaa3('0x13')]===_0xfaa3('0xf')){if(_0x2a1dde[_0xfaa3('0x8b')]['includeAll']){_0x2ef70d[_0xfaa3('0xa7')]=[{'all':!![]}];}return _0x408343[_0x1df722['childModel']][_0xfaa3('0x9')](_0x2ef70d)['then'](function(_0x1956a6){var _0x4f8505=[];_0x1956a6[_0xfaa3('0xa8')](function(_0xa932d5){var _0x4fb738;switch(_0xa932d5['reportType']){case _0xfaa3('0xa9'):_0x4fb738=_[_0xfaa3('0x91')](_0x5e71bd[_0xfaa3('0xa')],function(_0x31f074){return _0x31f074['id']===_0xa932d5[_0xfaa3('0x77')]&&_0x31f074['type']===_0xfaa3('0xaa');});break;case _0xfaa3('0xab'):_0x4fb738=_[_0xfaa3('0x91')](_0x5e71bd[_0xfaa3('0xa')],function(_0x259139){return _0x259139['id']===_0xa932d5[_0xfaa3('0x77')]&&_0x259139[_0xfaa3('0x40')]===_0xfaa3('0xac');});break;}if(_0x4fb738)_0x4f8505[_0xfaa3('0x8f')](_0xa932d5);});_0x4a537f['count']=_0x4f8505['length'];_0x4a537f[_0xfaa3('0xad')]=_0x4f8505;return _0x4a537f;});}else{return _0x408343[_0x1df722[_0xfaa3('0x13')]]['count']({'where':_0x2ef70d[_0xfaa3('0xa0')]})[_0xfaa3('0x87')](function(_0x16dc21){_0x4a537f[_0xfaa3('0xae')]=_0x16dc21;if(_0x2a1dde[_0xfaa3('0x8b')][_0xfaa3('0xaf')]){if(_0x1df722[_0xfaa3('0x13')]===_0xfaa3('0xb0')){_0x2ef70d[_0xfaa3('0xa7')]=[{'model':_0x408343['Tag'],'as':'Tags','attributes':['id',_0xfaa3('0xc'),_0xfaa3('0xb1')],'required':_0x2a1dde[_0xfaa3('0x8b')][_0xfaa3('0xb2')]?!![]:![]},{'model':_0x408343[_0xfaa3('0x6c')],'as':_0xfaa3('0xb3'),'attributes':['id',_0xfaa3('0xc'),_0xfaa3('0xb1')],'through':_0x2a1dde['query']['tag']?{'attributes':[],'where':{'TagId':_0x2a1dde[_0xfaa3('0x8b')][_0xfaa3('0xb2')]||undefined}}:{},'required':_0x2a1dde[_0xfaa3('0x8b')]['tag']?!![]:![]}];}else{_0x2ef70d[_0xfaa3('0xa7')]=[{'all':!![]}];}}return _0x408343[_0x1df722[_0xfaa3('0x13')]][_0xfaa3('0x9')](_0x2ef70d);})[_0xfaa3('0x87')](function(_0x1f458b){_0x4a537f[_0xfaa3('0xad')]=_0x1f458b;if(_0x1fd9cf===_0xfaa3('0x36')&&_0x2a1dde['query'][_0xfaa3('0xb4')]===_0xfaa3('0xb5')){var _0x4d8ce7=[];for(var _0x875fea=0x0;_0x875fea<_0x4a537f[_0xfaa3('0xad')][_0xfaa3('0x8e')];_0x875fea++){_0x4d8ce7[_0xfaa3('0x8f')](_0x5ccb10('chat',_0x4a537f[_0xfaa3('0xad')][_0x875fea][_0xfaa3('0xb6')]));_0x4d8ce7['push'](_0x5ccb10(_0xfaa3('0xb7'),_0x4a537f['rows'][_0x875fea]['dataValues']));_0x4d8ce7['push'](_0x5ccb10(_0xfaa3('0xb8'),_0x4a537f['rows'][_0x875fea][_0xfaa3('0xb6')]));_0x4d8ce7['push'](_0x5ccb10(_0xfaa3('0xb9'),_0x4a537f['rows'][_0x875fea][_0xfaa3('0xb6')]));_0x4d8ce7['push'](_0x5ccb10(_0xfaa3('0xba'),_0x4a537f[_0xfaa3('0xad')][_0x875fea][_0xfaa3('0xb6')]));_0x4d8ce7['push'](_0x5ccb10('whatsapp',_0x4a537f['rows'][_0x875fea][_0xfaa3('0xb6')]));}return Promise[_0xfaa3('0x93')](_0x4d8ce7)[_0xfaa3('0x87')](function(){return _0x4a537f;});}return _0x4a537f;});}});}}});};
\ No newline at end of file
+var _0x2a07=['chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','MailQueue','MailAccount','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsaccounts','whatsappqueues','WhatsappQueue','whatsappaccounts','teams','Team','VoiceQueues','users','agents','telephones','admin','user','Agents','zendeskaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','dispositions','Disposition','customdashboards','intervals','Pause','scheduler','Schedule','sounds','Sound','Template','triggers','Trigger','Variable','extractedreports','Reports','reportId','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','select','ui.createdAt','from','user_has_','where','sequelize','query','OpenTabs','define','user_profiles','section','Invalid\x20section\x20\x27','isEmpty','length','UserProfileSection','params','find','ignore','push','autoAssociation','all','keys','filters','intersection','attributes','fields','hasOwnProperty','limit','offset','order','sort','pick','merge','key','VIRTUAL','foreignKey','forEach','options','AnalyticExtractedReport','includeAll','include','default','DefaultReports','custom','CustomReports','count','Tag','color','tag','rows','openTabs','true','chat','dataValues','sms','fax','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','value','findAll','then','map','catch','model','associatedResources','name','resolve','UserProfileResource','type','childModel','SquareProject','odbc','SquareOdbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','projects','JscriptyProject','contacts','CmContact','Lists','ListId','CmList','companies','CmCompany','globalcustomfields','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','faxaccounts','FaxAccount','internalroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording','User','role','agent','Telephones','membername','telephone','queue','VoiceQueue','inbound','QueueCampaigns','outbound'];(function(_0x565ed7,_0x398228){var _0x183ad7=function(_0x5a43d7){while(--_0x5a43d7){_0x565ed7['push'](_0x565ed7['shift']());}};_0x183ad7(++_0x398228);}(_0x2a07,0x74));var _0x72a0=function(_0x3ebcab,_0x482df2){_0x3ebcab=_0x3ebcab-0x0;var _0x4074d3=_0x2a07[_0x3ebcab];return _0x4074d3;};'use strict';var _=require(_0x72a0('0x0'));var attributes=require(_0x72a0('0x1'));var qs=require(_0x72a0('0x2'));var squel=require(_0x72a0('0x3'));module[_0x72a0('0x4')]=function(_0x548164){var _0x335b7c=_0x548164[_0x72a0('0x5')];function _0x135982(_0x45b155,_0x431f65){return new Promise(function(_0xce74c,_0x3ccf6d){if(!_0x431f65)return _0xce74c(null);var _0x20dab9=_0x431f65[_0x72a0('0x6')]?{[_0x431f65[_0x72a0('0x6')][_0x72a0('0x7')]]:_0x431f65[_0x72a0('0x6')][_0x72a0('0x8')]}:undefined;return _0x335b7c[_0x45b155][_0x72a0('0x9')]({'where':_0x20dab9,'raw':!![]})[_0x72a0('0xa')](function(_0x2bc45b){_0x431f65['associatedResources']=_[_0x72a0('0xb')](_0x2bc45b,'id');_0xce74c(_0x431f65);})[_0x72a0('0xc')](function(_0x54abf6){_0x3ccf6d(_0x54abf6);});});}function _0x46fb8a(_0x194488,_0x1b85b1){return new Promise(function(_0x44d7cf,_0x975c27){var _0x516c08=_0x194488[_0x72a0('0x6')]?{[_0x194488[_0x72a0('0x6')][_0x72a0('0x7')]]:_0x194488[_0x72a0('0x6')][_0x72a0('0x8')]}:undefined;return _0x335b7c[_0x194488[_0x72a0('0xd')]][_0x72a0('0x9')]({'where':_0x516c08,'raw':!![]})['then'](function(_0x4930c5){_0x1b85b1[_0x72a0('0xe')]=_[_0x72a0('0xb')](_0x4930c5,function(_0x19eaf9){return _0x19eaf9[_0x72a0('0xf')];});_0x44d7cf(_0x1b85b1);})[_0x72a0('0xc')](function(_0x3f3d62){_0x975c27(_0x3f3d62);});});}function _0x4ab55e(_0x30248e,_0x2e7552,_0x16ac70){if(!_0x2e7552)return Promise[_0x72a0('0x10')](null);return new Promise(function(_0x2d1e95,_0x54495e){return _0x335b7c[_0x72a0('0x11')][_0x72a0('0x9')]({'where':{'sectionId':_0x2e7552['id']},'raw':!![]})[_0x72a0('0xa')](function(_0x5b63c8){if(_0x30248e[_0x72a0('0x7')]&&_0x30248e[_0x72a0('0x7')]!=='id'){_0x2e7552[_0x72a0('0xe')]=_[_0x72a0('0xb')](_0x5b63c8,function(_0x5437df){return _0x5437df[_0x30248e[_0x72a0('0x7')]];});}else{if(_0x16ac70==='AnalyticExtractedReport'){_0x2e7552[_0x72a0('0xe')]=_[_0x72a0('0xb')](_0x5b63c8,function(_0xde058c){return{'id':_0xde058c['resourceId'],'type':_0xde058c[_0x72a0('0x12')]};});}else{_0x2e7552[_0x72a0('0xe')]=_[_0x72a0('0xb')](_0x5b63c8,function(_0x3d1965){return _0x3d1965['resourceId'];});}}_0x2d1e95(_0x2e7552);})[_0x72a0('0xc')](function(_0x390464){_0x54495e(_0x390464);});});}function _0x1ddd54(_0x23b918,_0x3022b0){var _0x174b1b={'parentSections':[]};switch(_0x23b918['toLowerCase']()){case'squareprojects':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x14');break;case _0x72a0('0x15'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x16');break;case _0x72a0('0x17'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x18');_0x174b1b[_0x72a0('0x19')]=[{'name':_0x72a0('0x1a'),'field':'name','foreignKey':_0x72a0('0x1b')}];break;case _0x72a0('0x1c'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x1d');break;case _0x72a0('0x1e'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x1f');_0x174b1b[_0x72a0('0x19')]=[{'name':_0x72a0('0x20'),'field':'id','foreignKey':_0x72a0('0x21')}];break;case'lists':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x22');break;case _0x72a0('0x23'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x24');break;case _0x72a0('0x25'):_0x174b1b[_0x72a0('0x13')]='CmCustomField';break;case _0x72a0('0x26'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x27');break;case _0x72a0('0x28'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x29');break;case _0x72a0('0x2a'):_0x174b1b[_0x72a0('0x13')]='FaxQueue';break;case _0x72a0('0x2b'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x2c');break;case'inboundroutes':case _0x72a0('0x2d'):case'outboundroutes':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x2e');break;case _0x72a0('0x2f'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x30');break;case _0x72a0('0x31'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x32');break;case _0x72a0('0x33'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x34');_0x174b1b[_0x72a0('0x19')]=[{'name':'Agents','field':_0x72a0('0xf'),'foreignKey':'membername','model':_0x72a0('0x35'),'filter':{'field':_0x72a0('0x36'),'value':[_0x72a0('0x37')]}},{'name':_0x72a0('0x38'),'field':_0x72a0('0xf'),'foreignKey':_0x72a0('0x39'),'model':_0x72a0('0x35'),'filter':{'field':_0x72a0('0x36'),'value':[_0x72a0('0x3a')]}},{'name':'VoiceQueues','field':'name','foreignKey':_0x72a0('0x3b'),'model':_0x72a0('0x3c'),'filter':{'field':_0x72a0('0x12'),'value':[_0x72a0('0x3d')]}},{'name':_0x72a0('0x3e'),'field':'name','foreignKey':_0x72a0('0x3b'),'model':_0x72a0('0x3c'),'filter':{'field':'type','value':[_0x72a0('0x3f')]}}];break;case'musiconholds':_0x174b1b['childModel']='VoiceMusicOnHold';break;case _0x72a0('0x40'):_0x174b1b['childModel']=_0x72a0('0x41');break;case _0x72a0('0x42'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x43');break;case'ivrcampaigns':_0x174b1b['childModel']='Campaign';break;case'mailqueues':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x44');break;case'mailaccounts':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x45');break;case'mailsubstatuses':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x46');break;case _0x72a0('0x47'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x48');break;case _0x72a0('0x49'):_0x174b1b['childModel']=_0x72a0('0x4a');break;case'smsqueues':_0x174b1b[_0x72a0('0x13')]='SmsQueue';break;case _0x72a0('0x4b'):_0x174b1b[_0x72a0('0x13')]='SmsAccount';break;case _0x72a0('0x4c'):_0x174b1b['childModel']=_0x72a0('0x4d');break;case _0x72a0('0x4e'):_0x174b1b[_0x72a0('0x13')]='WhatsappAccount';break;case _0x72a0('0x4f'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x50');break;case'voicequeues':case'queuecampaigns':_0x174b1b[_0x72a0('0x13')]='VoiceQueue';if(_0x3022b0){_0x174b1b[_0x72a0('0x19')]=[{'name':_0x72a0('0x51')},{'name':_0x72a0('0x3e')}];}break;case _0x72a0('0x52'):case _0x72a0('0x53'):case _0x72a0('0x54'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x35');if(_0x3022b0){_0x174b1b[_0x72a0('0x19')]=[{'name':'Users','filter':{'field':_0x72a0('0x36'),'value':[_0x72a0('0x55'),_0x72a0('0x56')]},'ignore':!![]},{'name':_0x72a0('0x57')},{'name':_0x72a0('0x38')}];}break;case _0x72a0('0x58'):_0x174b1b[_0x72a0('0x13')]='ZendeskAccount';break;case'salesforceaccounts':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x59');break;case _0x72a0('0x5a'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x5b');break;case _0x72a0('0x5c'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x5d');break;case _0x72a0('0x5e'):_0x174b1b[_0x72a0('0x13')]='DeskAccount';break;case _0x72a0('0x5f'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x60');break;case _0x72a0('0x61'):_0x174b1b[_0x72a0('0x13')]='User';break;case _0x72a0('0x62'):_0x174b1b['childModel']='CannedAnswer';break;case _0x72a0('0x63'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x64');break;case _0x72a0('0x65'):_0x174b1b[_0x72a0('0x13')]='Dashboard';break;case _0x72a0('0x66'):_0x174b1b[_0x72a0('0x13')]='Interval';break;case'pauses':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x67');break;case _0x72a0('0x68'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x69');break;case _0x72a0('0x6a'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x6b');break;case'tags':_0x174b1b[_0x72a0('0x13')]='Tag';break;case'templates':_0x174b1b['childModel']=_0x72a0('0x6c');break;case _0x72a0('0x6d'):_0x174b1b['childModel']=_0x72a0('0x6e');break;case'trunks':_0x174b1b[_0x72a0('0x13')]='Trunk';break;case'variables':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x6f');break;case'plugins':_0x174b1b[_0x72a0('0x13')]='Plugin';break;case _0x72a0('0x70'):_0x174b1b['childModel']='AnalyticExtractedReport';_0x174b1b[_0x72a0('0x19')]=[{'name':_0x72a0('0x71'),'field':'id','foreignKey':_0x72a0('0x72')}];break;case'metrics':_0x174b1b['childModel']=_0x72a0('0x73');break;}return _0x174b1b;}function _0x48f178(_0x44b171,_0x36d604){var _0x1cea02=_0x44b171[_0x72a0('0x74')](0x0)[_0x72a0('0x75')]()+_0x44b171[_0x72a0('0x76')](0x1);var _0x41f7f6={'type':_0x335b7c[_0x72a0('0x77')][_0x72a0('0x78')][_0x72a0('0x79')],'raw':!![]};return new Promise(function(_0x32a0bb,_0x43ec4b){var _0x4d0774=squel[_0x72a0('0x7a')]()['field']('ui.'+_0x1cea02+'InteractionId','id')['field'](_0x72a0('0x7b'))[_0x72a0('0x7c')](_0x72a0('0x7d')+_0x44b171+'_interactions','ui')[_0x72a0('0x7e')]('ui.UserId\x20=\x20?',_0x36d604['id']);return _0x335b7c[_0x72a0('0x7f')][_0x72a0('0x80')](_0x4d0774['toString'](),_0x41f7f6)[_0x72a0('0xa')](function(_0x24e211){_0x36d604[_0x1cea02+_0x72a0('0x81')]=_0x24e211;_0x32a0bb(_0x24e211);})[_0x72a0('0xc')](function(_0x5e47c4){_0x43ec4b(_0x5e47c4);});});}return _0x548164[_0x72a0('0x82')]('UserProfile',attributes,{'tableName':_0x72a0('0x83'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x2cb292){var _0x1df6fc={'raw':![],'where':{}};var _0x47fe64={};var _0x432656={'count':0x0,'rows':[]};var _0x3eb3b5=_0x2cb292[_0x72a0('0x80')][_0x72a0('0x84')];var _0x100277=_0x2cb292['query']['mergeResources']||![];var _0xa65d14=_0x1ddd54(_0x3eb3b5,_0x100277);if(!_0xa65d14['childModel'])throw new Error(_0x72a0('0x85')+_0x3eb3b5+'\x27');var _0x523bd0=[{'name':_0x3eb3b5}];if(!_[_0x72a0('0x86')](_0xa65d14[_0x72a0('0x19')]))_0x523bd0=_0xa65d14['parentSections'];var _0x1cfd1d=[];for(var _0x1b960e=0x0;_0x1b960e<_0x523bd0[_0x72a0('0x87')];_0x1b960e++){_0x1cfd1d['push'](_0x335b7c[_0x72a0('0x88')]['find']({'where':{'userProfileId':_0x2cb292[_0x72a0('0x89')]['id'],'name':_0x523bd0[_0x1b960e][_0x72a0('0xf')]},'raw':!![]}));}return Promise['all'](_0x1cfd1d)[_0x72a0('0xa')](function(_0x4b6e60){var _0x4c32db=_['filter'](_0x4b6e60,function(_0x28969a){return _0x28969a?_0x28969a:undefined;});var _0x4a0373=_[_0x72a0('0x6')](_0x523bd0,['ignore',!![]]);var _0x29fff7=_[_0x72a0('0x86')](_0x4c32db)&&_[_0x72a0('0x86')](_0x4a0373)?null:_['union'](_0x4a0373,_0x4c32db);if(!_0x29fff7)return null;var _0x1f8e98=[];for(var _0x420d8d=0x0;_0x420d8d<_0x29fff7[_0x72a0('0x87')];_0x420d8d++){var _0x28551a=_[_0x72a0('0x8a')](_0x523bd0,function(_0x58ef97){return _0x29fff7[_0x420d8d]?_0x58ef97[_0x72a0('0xf')]===_0x29fff7[_0x420d8d][_0x72a0('0xf')]:null;});if(_0x28551a){if(_0x29fff7[_0x420d8d][_0x72a0('0x8b')]){_0x1f8e98[_0x72a0('0x8c')](_0x135982(_0xa65d14['childModel'],_0x29fff7[_0x420d8d]));}else{if(!_0x29fff7[_0x420d8d][_0x72a0('0x8d')]){_0x1f8e98[_0x72a0('0x8c')](_0x4ab55e(_0x28551a,_0x29fff7[_0x420d8d],_0xa65d14['childModel']));}else{if(_0x28551a[_0x72a0('0xd')]){_0x1f8e98['push'](_0x46fb8a(_0x28551a,_0x29fff7[_0x420d8d]));}}}}}return Promise[_0x72a0('0x8e')](_0x1f8e98);})[_0x72a0('0xa')](function(_0xb17e09){var _0x1238a3=_0xb17e09;var _0x14f61a=null;if(_0x1238a3){_0x14f61a=_0x1238a3[_0x72a0('0x87')]===0x1?_0x1238a3[0x0]:null;}if(!_0x14f61a&&!_0x1238a3)return _0x432656;var _0x7450c7=_0x335b7c[_0xa65d14['childModel']]['rawAttributes'];_0x47fe64['model']=_[_0x72a0('0x8f')](_0x7450c7);_0x47fe64[_0x72a0('0x80')]=_[_0x72a0('0x8f')](_0x2cb292[_0x72a0('0x80')]);_0x47fe64[_0x72a0('0x90')]=_[_0x72a0('0x91')](_0x47fe64['model'],_0x47fe64[_0x72a0('0x80')]);_0x1df6fc[_0x72a0('0x92')]=_[_0x72a0('0x91')](_0x47fe64[_0x72a0('0xd')],qs[_0x72a0('0x93')](_0x2cb292[_0x72a0('0x80')][_0x72a0('0x93')]));_0x1df6fc['attributes']=_0x1df6fc[_0x72a0('0x92')][_0x72a0('0x87')]?_0x1df6fc[_0x72a0('0x92')]:_0x47fe64[_0x72a0('0xd')];if(!_0x2cb292[_0x72a0('0x80')][_0x72a0('0x94')]('nolimit')){_0x1df6fc[_0x72a0('0x95')]=qs['limit'](_0x2cb292[_0x72a0('0x80')][_0x72a0('0x95')]);_0x1df6fc[_0x72a0('0x96')]=qs[_0x72a0('0x96')](_0x2cb292[_0x72a0('0x80')]['offset']);}_0x1df6fc[_0x72a0('0x97')]=qs[_0x72a0('0x98')](_0x2cb292['query'][_0x72a0('0x98')]);_0x1df6fc[_0x72a0('0x7e')]=qs[_0x72a0('0x90')](_[_0x72a0('0x99')](_0x2cb292['query'],_0x47fe64[_0x72a0('0x90')]));if(_0x2cb292[_0x72a0('0x80')][_0x72a0('0x6')]){_0x1df6fc[_0x72a0('0x7e')]=_[_0x72a0('0x9a')](_0x1df6fc[_0x72a0('0x7e')],{'$or':_[_0x72a0('0xb')](_0x7450c7,function(_0x1d2dfb){if(_0x1d2dfb[_0x72a0('0x12')][_0x72a0('0x9b')]!==_0x72a0('0x9c')){var _0x109e9e={};_0x109e9e[_0x1d2dfb['field']]={'$like':'%'+_0x2cb292[_0x72a0('0x80')][_0x72a0('0x6')]+'%'};return _0x109e9e;}})});}var _0xe0411e=[];var _0x3cbbcd=null;var _0xada6ad={};if(_0x14f61a){_0x3cbbcd=_[_0x72a0('0x8a')](_0x523bd0,[_0x72a0('0xf'),_0x14f61a[_0x72a0('0xf')]]);if(_0x3cbbcd['field']){_0xada6ad={};if(_0xa65d14[_0x72a0('0x13')]==='AnalyticExtractedReport'){_0xada6ad[_0x3cbbcd['foreignKey']]=_[_0x72a0('0xb')](_0x14f61a['associatedResources'],'id');}else{_0xada6ad[_0x3cbbcd['foreignKey']]=_0x14f61a[_0x72a0('0xe')];}_0xe0411e['push'](_0xada6ad);}else{_0x1df6fc[_0x72a0('0x7e')]['id']=_0x14f61a[_0x72a0('0xe')];}}else{for(var _0xb4cdec=0x0;_0xb4cdec<_0x1238a3['length'];_0xb4cdec++){_0x3cbbcd=_[_0x72a0('0x8a')](_0x523bd0,[_0x72a0('0xf'),_0x1238a3[_0xb4cdec][_0x72a0('0xf')]]);if(_0x3cbbcd[_0x72a0('0x7')]){_0xada6ad={};_0xada6ad[_0x3cbbcd[_0x72a0('0x9d')]]=_0x1238a3[_0xb4cdec]['associatedResources'];_0xe0411e[_0x72a0('0x8c')](_0xada6ad);}else{if(!_0x1df6fc[_0x72a0('0x7e')]['id'])_0x1df6fc[_0x72a0('0x7e')]['id']=[];_0x1238a3[_0xb4cdec]['associatedResources'][_0x72a0('0x9e')](function(_0x2e3eb0){_0x1df6fc[_0x72a0('0x7e')]['id']['push'](_0x2e3eb0);});}}}if(!_[_0x72a0('0x86')](_0xe0411e)){_0x1df6fc[_0x72a0('0x7e')]=_[_0x72a0('0x9a')](_0x1df6fc[_0x72a0('0x7e')],{'$and':{'$or':_0xe0411e}});}_0x1df6fc=_[_0x72a0('0x9a')]({},_0x1df6fc,_0x2cb292[_0x72a0('0x9f')]);if(_0x14f61a&&!_0x14f61a[_0x72a0('0x8d')]&&_0xa65d14[_0x72a0('0x13')]===_0x72a0('0xa0')){if(_0x2cb292['query'][_0x72a0('0xa1')]){_0x1df6fc[_0x72a0('0xa2')]=[{'all':!![]}];}return _0x335b7c[_0xa65d14[_0x72a0('0x13')]][_0x72a0('0x9')](_0x1df6fc)[_0x72a0('0xa')](function(_0x5b72b7){var _0x311dcd=[];_0x5b72b7[_0x72a0('0x9e')](function(_0x1c95fc){var _0x4124e7;switch(_0x1c95fc['reportType']){case _0x72a0('0xa3'):_0x4124e7=_[_0x72a0('0x8a')](_0x14f61a[_0x72a0('0xe')],function(_0x59d3a7){return _0x59d3a7['id']===_0x1c95fc['reportId']&&_0x59d3a7[_0x72a0('0x12')]===_0x72a0('0xa4');});break;case _0x72a0('0xa5'):_0x4124e7=_[_0x72a0('0x8a')](_0x14f61a[_0x72a0('0xe')],function(_0x56e9c0){return _0x56e9c0['id']===_0x1c95fc['reportId']&&_0x56e9c0['type']===_0x72a0('0xa6');});break;}if(_0x4124e7)_0x311dcd['push'](_0x1c95fc);});_0x432656[_0x72a0('0xa7')]=_0x311dcd['length'];_0x432656['rows']=_0x311dcd;return _0x432656;});}else{return _0x335b7c[_0xa65d14['childModel']]['count']({'where':_0x1df6fc[_0x72a0('0x7e')]})[_0x72a0('0xa')](function(_0x153802){_0x432656[_0x72a0('0xa7')]=_0x153802;if(_0x2cb292['query'][_0x72a0('0xa1')]){if(_0xa65d14[_0x72a0('0x13')]==='CmContact'){_0x1df6fc[_0x72a0('0xa2')]=[{'model':_0x335b7c[_0x72a0('0xa8')],'as':'Tags','attributes':['id',_0x72a0('0xf'),_0x72a0('0xa9')],'required':_0x2cb292[_0x72a0('0x80')][_0x72a0('0xaa')]?!![]:![]},{'model':_0x335b7c['Tag'],'as':'ThroughTags','attributes':['id',_0x72a0('0xf'),_0x72a0('0xa9')],'through':_0x2cb292[_0x72a0('0x80')][_0x72a0('0xaa')]?{'attributes':[],'where':{'TagId':_0x2cb292[_0x72a0('0x80')][_0x72a0('0xaa')]||undefined}}:{},'required':_0x2cb292['query']['tag']?!![]:![]}];}else{_0x1df6fc[_0x72a0('0xa2')]=[{'all':!![]}];}}return _0x335b7c[_0xa65d14[_0x72a0('0x13')]]['findAll'](_0x1df6fc);})[_0x72a0('0xa')](function(_0x3a8fee){_0x432656[_0x72a0('0xab')]=_0x3a8fee;if(_0x3eb3b5===_0x72a0('0x57')&&_0x2cb292[_0x72a0('0x80')][_0x72a0('0xac')]===_0x72a0('0xad')){var _0x56bdf5=[];for(var _0x42e186=0x0;_0x42e186<_0x432656[_0x72a0('0xab')][_0x72a0('0x87')];_0x42e186++){_0x56bdf5['push'](_0x48f178(_0x72a0('0xae'),_0x432656[_0x72a0('0xab')][_0x42e186][_0x72a0('0xaf')]));_0x56bdf5[_0x72a0('0x8c')](_0x48f178(_0x72a0('0xb0'),_0x432656['rows'][_0x42e186][_0x72a0('0xaf')]));_0x56bdf5[_0x72a0('0x8c')](_0x48f178(_0x72a0('0xb1'),_0x432656[_0x72a0('0xab')][_0x42e186][_0x72a0('0xaf')]));_0x56bdf5[_0x72a0('0x8c')](_0x48f178('mail',_0x432656[_0x72a0('0xab')][_0x42e186][_0x72a0('0xaf')]));_0x56bdf5[_0x72a0('0x8c')](_0x48f178(_0x72a0('0xb2'),_0x432656[_0x72a0('0xab')][_0x42e186][_0x72a0('0xaf')]));_0x56bdf5[_0x72a0('0x8c')](_0x48f178(_0x72a0('0xb3'),_0x432656[_0x72a0('0xab')][_0x42e186]['dataValues']));}return Promise[_0x72a0('0x8e')](_0x56bdf5)['then'](function(){return _0x432656;});}return _0x432656;});}});}}});};
\ No newline at end of file
index 284db4f..d974884 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf40b=['request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','./userProfile.socket','register','request','then','info','UserProfile,\x20%s,\x20%s'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xf40b,0xb0));var _0xbf40=function(_0x3113b1,_0x42646c){_0x3113b1=_0x3113b1-0x0;var _0x4d45a8=_0xf40b[_0x3113b1];return _0x4d45a8;};'use strict';var _=require('lodash');var util=require(_0xbf40('0x0'));var moment=require(_0xbf40('0x1'));var BPromise=require(_0xbf40('0x2'));var rs=require(_0xbf40('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbf40('0x4'))['db'];var utils=require(_0xbf40('0x5'));var logger=require(_0xbf40('0x6'))(_0xbf40('0x7'));var config=require(_0xbf40('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xbf40('0x9')][_0xbf40('0xa')]({'port':0x232a});config[_0xbf40('0xb')]=_[_0xbf40('0xc')](config[_0xbf40('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xbf40('0xd'))(new Redis(config[_0xbf40('0xb')]));require(_0xbf40('0xe'))[_0xbf40('0xf')](socket);function respondWithRpcPromise(_0x11c5be,_0x7ed794,_0x2cc598){return new BPromise(function(_0x20b14e,_0x500300){return client[_0xbf40('0x10')](_0x11c5be,_0x2cc598)[_0xbf40('0x11')](function(_0x40ee4a){logger[_0xbf40('0x12')](_0xbf40('0x13'),_0x7ed794,_0xbf40('0x14'));logger[_0xbf40('0x15')](_0xbf40('0x16'),_0x7ed794,'request\x20sent',JSON['stringify'](_0x40ee4a));if(_0x40ee4a[_0xbf40('0x17')]){if(_0x40ee4a[_0xbf40('0x17')][_0xbf40('0x18')]===0x1f4){logger[_0xbf40('0x17')]('UserProfile,\x20%s,\x20%s',_0x7ed794,_0x40ee4a[_0xbf40('0x17')][_0xbf40('0x19')]);return _0x500300(_0x40ee4a[_0xbf40('0x17')][_0xbf40('0x19')]);}logger[_0xbf40('0x17')](_0xbf40('0x13'),_0x7ed794,_0x40ee4a[_0xbf40('0x17')][_0xbf40('0x19')]);return _0x20b14e(_0x40ee4a['error'][_0xbf40('0x19')]);}else{logger[_0xbf40('0x12')](_0xbf40('0x13'),_0x7ed794,_0xbf40('0x14'));_0x20b14e(_0x40ee4a[_0xbf40('0x1a')][_0xbf40('0x19')]);}})[_0xbf40('0x1b')](function(_0x3cca3c){logger['error'](_0xbf40('0x13'),_0x7ed794,_0x3cca3c);_0x500300(_0x3cca3c);});});}
\ No newline at end of file
+var _0xfd49=['code','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','socket.io-emitter','./userProfile.socket','register','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','error'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0xfd49,0x121));var _0x9fd4=function(_0x510dbc,_0x80f9ed){_0x510dbc=_0x510dbc-0x0;var _0xc9094e=_0xfd49[_0x510dbc];return _0xc9094e;};'use strict';var _=require(_0x9fd4('0x0'));var util=require(_0x9fd4('0x1'));var moment=require(_0x9fd4('0x2'));var BPromise=require(_0x9fd4('0x3'));var rs=require(_0x9fd4('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9fd4('0x5'))['db'];var utils=require(_0x9fd4('0x6'));var logger=require(_0x9fd4('0x7'))(_0x9fd4('0x8'));var config=require(_0x9fd4('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x9fd4('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x9fd4('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x9fd4('0xc'))(new Redis(config['redis']));require(_0x9fd4('0xd'))[_0x9fd4('0xe')](socket);function respondWithRpcPromise(_0x4c2f58,_0x191bc2,_0x13e5fb){return new BPromise(function(_0x18c0ec,_0x4a7aa6){return client[_0x9fd4('0xf')](_0x4c2f58,_0x13e5fb)[_0x9fd4('0x10')](function(_0x38f946){logger[_0x9fd4('0x11')](_0x9fd4('0x12'),_0x191bc2,_0x9fd4('0x13'));logger[_0x9fd4('0x14')](_0x9fd4('0x15'),_0x191bc2,_0x9fd4('0x13'),JSON['stringify'](_0x38f946));if(_0x38f946[_0x9fd4('0x16')]){if(_0x38f946[_0x9fd4('0x16')][_0x9fd4('0x17')]===0x1f4){logger['error'](_0x9fd4('0x12'),_0x191bc2,_0x38f946[_0x9fd4('0x16')][_0x9fd4('0x18')]);return _0x4a7aa6(_0x38f946[_0x9fd4('0x16')][_0x9fd4('0x18')]);}logger['error']('UserProfile,\x20%s,\x20%s',_0x191bc2,_0x38f946['error'][_0x9fd4('0x18')]);return _0x18c0ec(_0x38f946[_0x9fd4('0x16')][_0x9fd4('0x18')]);}else{logger[_0x9fd4('0x11')](_0x9fd4('0x12'),_0x191bc2,_0x9fd4('0x13'));_0x18c0ec(_0x38f946[_0x9fd4('0x19')][_0x9fd4('0x18')]);}})['catch'](function(_0x31a657){logger[_0x9fd4('0x16')](_0x9fd4('0x12'),_0x191bc2,_0x31a657);_0x4a7aa6(_0x31a657);});});}
\ No newline at end of file
index e0e42ba..cac27ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ffb=['remove','update','register','length','userProfile:','save'];(function(_0x1f185e,_0x47e170){var _0x2ffdd1=function(_0x6161f9){while(--_0x6161f9){_0x1f185e['push'](_0x1f185e['shift']());}};_0x2ffdd1(++_0x47e170);}(_0x7ffb,0x71));var _0xb7ff=function(_0x4ddc7e,_0xcb9b8){_0x4ddc7e=_0x4ddc7e-0x0;var _0xfbf0ec=_0x7ffb[_0x4ddc7e];return _0xfbf0ec;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=[_0xb7ff('0x0'),_0xb7ff('0x1'),_0xb7ff('0x2')];function createListener(_0x2cc84c,_0x2f37dd){return function(_0x5a39ee){_0x2f37dd['emit'](_0x2cc84c,_0x5a39ee);};}function removeListener(_0x1e3c87,_0x12a5ac){return function(){UserProfileEvents['removeListener'](_0x1e3c87,_0x12a5ac);};}exports[_0xb7ff('0x3')]=function(_0x1215ce){for(var _0x5d0927=0x0,_0x590fa8=events[_0xb7ff('0x4')];_0x5d0927<_0x590fa8;_0x5d0927++){var _0x24e21c=events[_0x5d0927];var _0x281f09=createListener(_0xb7ff('0x5')+_0x24e21c,_0x1215ce);UserProfileEvents['on'](_0x24e21c,_0x281f09);}};
\ No newline at end of file
+var _0xca43=['removeListener','length','userProfile:','./userProfile.events','save','update','emit'];(function(_0x4ff482,_0x554bc7){var _0x5d873d=function(_0x5a4b41){while(--_0x5a4b41){_0x4ff482['push'](_0x4ff482['shift']());}};_0x5d873d(++_0x554bc7);}(_0xca43,0x15a));var _0x3ca4=function(_0x212626,_0xf13a11){_0x212626=_0x212626-0x0;var _0x1fb4a0=_0xca43[_0x212626];return _0x1fb4a0;};'use strict';var UserProfileEvents=require(_0x3ca4('0x0'));var events=[_0x3ca4('0x1'),'remove',_0x3ca4('0x2')];function createListener(_0x47bc48,_0x37c0f2){return function(_0x2dcd78){_0x37c0f2[_0x3ca4('0x3')](_0x47bc48,_0x2dcd78);};}function removeListener(_0x1c7cdf,_0x109e1a){return function(){UserProfileEvents[_0x3ca4('0x4')](_0x1c7cdf,_0x109e1a);};}exports['register']=function(_0x4564b2){for(var _0x218755=0x0,_0x1a6479=events[_0x3ca4('0x5')];_0x218755<_0x1a6479;_0x218755++){var _0x2ec1d5=events[_0x218755];var _0xf2c1c6=createListener(_0x3ca4('0x6')+_0x2ec1d5,_0x4564b2);UserProfileEvents['on'](_0x2ec1d5,_0xf2c1c6);}};
\ No newline at end of file
index 49ce067..ef2836b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b0b=['put','update','delete','destroy','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','isAuthenticated','index','get','/:id','show','post','create'];(function(_0x1b70e3,_0x3a15b1){var _0x1452ab=function(_0x692883){while(--_0x692883){_0x1b70e3['push'](_0x1b70e3['shift']());}};_0x1452ab(++_0x3a15b1);}(_0x8b0b,0x131));var _0xb8b0=function(_0x304b67,_0x31cb39){_0x304b67=_0x304b67-0x0;var _0x493afb=_0x8b0b[_0x304b67];return _0x493afb;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb8b0('0x0'));var timeout=require(_0xb8b0('0x1'));var express=require(_0xb8b0('0x2'));var router=express['Router']();var fs_extra=require(_0xb8b0('0x3'));var auth=require(_0xb8b0('0x4'));var interaction=require(_0xb8b0('0x5'));var config=require(_0xb8b0('0x6'));var controller=require(_0xb8b0('0x7'));router['get']('/',auth[_0xb8b0('0x8')](),controller[_0xb8b0('0x9')]);router[_0xb8b0('0xa')]('/describe',auth[_0xb8b0('0x8')](),controller['describe']);router[_0xb8b0('0xa')](_0xb8b0('0xb'),auth[_0xb8b0('0x8')](),controller[_0xb8b0('0xc')]);router[_0xb8b0('0xd')]('/',auth['isAuthenticated'](),controller[_0xb8b0('0xe')]);router[_0xb8b0('0xf')](_0xb8b0('0xb'),auth[_0xb8b0('0x8')](),controller[_0xb8b0('0x10')]);router[_0xb8b0('0x11')](_0xb8b0('0xb'),auth[_0xb8b0('0x8')](),controller[_0xb8b0('0x12')]);module[_0xb8b0('0x13')]=router;
\ No newline at end of file
+var _0xf6e4=['../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','/describe','/:id','show','create','put','delete','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x372b25,_0x28586f){var _0x144245=function(_0x2b8095){while(--_0x2b8095){_0x372b25['push'](_0x372b25['shift']());}};_0x144245(++_0x28586f);}(_0xf6e4,0xcb));var _0x4f6e=function(_0x49e285,_0x4963e0){_0x49e285=_0x49e285-0x0;var _0x29d01a=_0xf6e4[_0x49e285];return _0x29d01a;};'use strict';var multer=require(_0x4f6e('0x0'));var util=require('util');var path=require(_0x4f6e('0x1'));var timeout=require(_0x4f6e('0x2'));var express=require(_0x4f6e('0x3'));var router=express[_0x4f6e('0x4')]();var fs_extra=require(_0x4f6e('0x5'));var auth=require(_0x4f6e('0x6'));var interaction=require(_0x4f6e('0x7'));var config=require(_0x4f6e('0x8'));var controller=require(_0x4f6e('0x9'));router[_0x4f6e('0xa')]('/',auth[_0x4f6e('0xb')](),controller['index']);router[_0x4f6e('0xa')](_0x4f6e('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x4f6e('0xa')](_0x4f6e('0xd'),auth['isAuthenticated'](),controller[_0x4f6e('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x4f6e('0xf')]);router[_0x4f6e('0x10')]('/:id',auth[_0x4f6e('0xb')](),controller['update']);router[_0x4f6e('0x11')](_0x4f6e('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x4f6e('0x12')]=router;
\ No newline at end of file
index 16e21b8..1f1c1da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5f0=['exports','STRING','INTEGER'];(function(_0x57975f,_0x388556){var _0x4793b8=function(_0x652c05){while(--_0x652c05){_0x57975f['push'](_0x57975f['shift']());}};_0x4793b8(++_0x388556);}(_0xa5f0,0x135));var _0x0a5f=function(_0x476bf4,_0x2a3755){_0x476bf4=_0x476bf4-0x0;var _0x788ffe=_0xa5f0[_0x476bf4];return _0x788ffe;};'use strict';var Sequelize=require('sequelize');module[_0x0a5f('0x0')]={'name':{'type':Sequelize[_0x0a5f('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x0a5f('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x0a5f('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xbffe=['exports','STRING','sequelize'];(function(_0x3ca829,_0xc55f17){var _0x3b416b=function(_0x592aae){while(--_0x592aae){_0x3ca829['push'](_0x3ca829['shift']());}};_0x3b416b(++_0xc55f17);}(_0xbffe,0x77));var _0xebff=function(_0x15e31b,_0x48b51a){_0x15e31b=_0x15e31b-0x0;var _0x3c7afe=_0xbffe[_0x15e31b];return _0x3c7afe;};'use strict';var Sequelize=require(_0xebff('0x0'));module[_0xebff('0x1')]={'name':{'type':Sequelize[_0xebff('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize['INTEGER'],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 946967a..4507c74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1883=['length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','UserProfileResource','includeAll','include','findAll','params','catch','create','body','find','describe','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','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','apply','update','then','destroy','end','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields'];(function(_0x5542a1,_0x168a10){var _0x45b950=function(_0x58ec1b){while(--_0x58ec1b){_0x5542a1['push'](_0x5542a1['shift']());}};_0x45b950(++_0x168a10);}(_0x1883,0xab));var _0x3188=function(_0x3cd511,_0x584fcf){_0x3cd511=_0x3cd511-0x0;var _0x436c1a=_0x1883[_0x3cd511];return _0x436c1a;};'use strict';var emlformat=require(_0x3188('0x0'));var rimraf=require(_0x3188('0x1'));var zipdir=require(_0x3188('0x2'));var jsonpatch=require(_0x3188('0x3'));var rp=require(_0x3188('0x4'));var moment=require(_0x3188('0x5'));var BPromise=require(_0x3188('0x6'));var Mustache=require(_0x3188('0x7'));var util=require(_0x3188('0x8'));var path=require(_0x3188('0x9'));var sox=require(_0x3188('0xa'));var csv=require(_0x3188('0xb'));var ejs=require(_0x3188('0xc'));var fs=require('fs');var fs_extra=require(_0x3188('0xd'));var _=require(_0x3188('0xe'));var squel=require(_0x3188('0xf'));var crypto=require(_0x3188('0x10'));var jsforce=require('jsforce');var deskjs=require(_0x3188('0x11'));var toCsv=require(_0x3188('0xb'));var querystring=require('querystring');var Papa=require(_0x3188('0x12'));var Redis=require('ioredis');var authService=require(_0x3188('0x13'));var qs=require(_0x3188('0x14'));var as=require(_0x3188('0x15'));var hardwareService=require(_0x3188('0x16'));var logger=require('../../config/logger')(_0x3188('0x17'));var utils=require(_0x3188('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3188('0x19'))['db'];function respondWithStatusCode(_0x45e94e,_0x20fef6){_0x20fef6=_0x20fef6||0xcc;return function(_0x3ae228){if(_0x3ae228){return _0x45e94e[_0x3188('0x1a')](_0x20fef6);}return _0x45e94e[_0x3188('0x1b')](_0x20fef6)['end']();};}function respondWithResult(_0x276d69,_0x5e0044){_0x5e0044=_0x5e0044||0xc8;return function(_0x4a2f36){if(_0x4a2f36){return _0x276d69[_0x3188('0x1b')](_0x5e0044)['json'](_0x4a2f36);}};}function respondWithFilteredResult(_0x54a87f,_0x32c239){return function(_0x1beead){if(_0x1beead){var _0xa2269=typeof _0x32c239[_0x3188('0x1c')]===_0x3188('0x1d')&&typeof _0x32c239[_0x3188('0x1e')]==='undefined';var _0x19cc72=_0x1beead[_0x3188('0x1f')];var _0x3f5b35=_0xa2269?0x0:_0x32c239[_0x3188('0x1c')];var _0x18a71a=_0xa2269?_0x1beead[_0x3188('0x1f')]:_0x32c239[_0x3188('0x1c')]+_0x32c239[_0x3188('0x1e')];var _0x5bcbba;if(_0x18a71a>=_0x19cc72){_0x18a71a=_0x19cc72;_0x5bcbba=0xc8;}else{_0x5bcbba=0xce;}_0x54a87f[_0x3188('0x1b')](_0x5bcbba);return _0x54a87f[_0x3188('0x20')]('Content-Range',_0x3f5b35+'-'+_0x18a71a+'/'+_0x19cc72)['json'](_0x1beead);}return null;};}function patchUpdates(_0x5d8d62){return function(_0x46a318){try{jsonpatch[_0x3188('0x21')](_0x46a318,_0x5d8d62,!![]);}catch(_0xd292b5){return BPromise['reject'](_0xd292b5);}return _0x46a318['save']();};}function saveUpdates(_0x266260,_0x461286){return function(_0x375077){if(_0x375077){return _0x375077[_0x3188('0x22')](_0x266260)[_0x3188('0x23')](function(_0x4bd5ee){return _0x4bd5ee;});}return null;};}function removeEntity(_0x30cf2c,_0x33f882){return function(_0x5a2e67){if(_0x5a2e67){return _0x5a2e67[_0x3188('0x24')]()['then'](function(){_0x30cf2c['status'](0xcc)[_0x3188('0x25')]();});}};}function handleEntityNotFound(_0x129bd7,_0x87d5a3){return function(_0x1aeaba){if(!_0x1aeaba){_0x129bd7[_0x3188('0x1a')](0x194);}return _0x1aeaba;};}function handleError(_0x2cd060,_0xe57f73){_0xe57f73=_0xe57f73||0x1f4;return function(_0x11021c){logger['error'](_0x11021c[_0x3188('0x26')]);if(_0x11021c[_0x3188('0x27')]){delete _0x11021c['name'];}_0x2cd060[_0x3188('0x1b')](_0xe57f73)[_0x3188('0x28')](_0x11021c);};}exports[_0x3188('0x29')]=function(_0x44db9a,_0x20e6aa){var _0x1f1c6f={},_0x8f810f={},_0x472926={'count':0x0,'rows':[]};var _0x57c21c=_[_0x3188('0x2a')](db['UserProfileResource'][_0x3188('0x2b')],function(_0x5623f1){return{'name':_0x5623f1[_0x3188('0x2c')],'type':_0x5623f1[_0x3188('0x2d')][_0x3188('0x2e')]};});_0x8f810f[_0x3188('0x2f')]=_[_0x3188('0x2a')](_0x57c21c,_0x3188('0x27'));_0x8f810f[_0x3188('0x30')]=_[_0x3188('0x31')](_0x44db9a[_0x3188('0x30')]);_0x8f810f[_0x3188('0x32')]=_[_0x3188('0x33')](_0x8f810f[_0x3188('0x2f')],_0x8f810f[_0x3188('0x30')]);_0x1f1c6f[_0x3188('0x34')]=_[_0x3188('0x33')](_0x8f810f[_0x3188('0x2f')],qs[_0x3188('0x35')](_0x44db9a[_0x3188('0x30')]['fields']));_0x1f1c6f[_0x3188('0x34')]=_0x1f1c6f['attributes'][_0x3188('0x36')]?_0x1f1c6f[_0x3188('0x34')]:_0x8f810f['model'];if(!_0x44db9a[_0x3188('0x30')][_0x3188('0x37')](_0x3188('0x38'))){_0x1f1c6f[_0x3188('0x1e')]=qs[_0x3188('0x1e')](_0x44db9a[_0x3188('0x30')][_0x3188('0x1e')]);_0x1f1c6f['offset']=qs['offset'](_0x44db9a[_0x3188('0x30')][_0x3188('0x1c')]);}_0x1f1c6f[_0x3188('0x39')]=qs[_0x3188('0x3a')](_0x44db9a['query'][_0x3188('0x3a')]);_0x1f1c6f[_0x3188('0x3b')]=qs[_0x3188('0x32')](_[_0x3188('0x3c')](_0x44db9a['query'],_0x8f810f[_0x3188('0x32')]),_0x57c21c);if(_0x44db9a['query'][_0x3188('0x3d')]){_0x1f1c6f['where']=_[_0x3188('0x3e')](_0x1f1c6f[_0x3188('0x3b')],{'$or':_[_0x3188('0x2a')](_0x57c21c,function(_0x2990c4){if(_0x2990c4[_0x3188('0x2d')]!==_0x3188('0x3f')){var _0x4666b2={};_0x4666b2[_0x2990c4[_0x3188('0x27')]]={'$like':'%'+_0x44db9a[_0x3188('0x30')][_0x3188('0x3d')]+'%'};return _0x4666b2;}})});}_0x1f1c6f=_['merge']({},_0x1f1c6f,_0x44db9a[_0x3188('0x40')]);var _0x2bad0f={'where':_0x1f1c6f[_0x3188('0x3b')]};return db[_0x3188('0x41')][_0x3188('0x1f')](_0x2bad0f)[_0x3188('0x23')](function(_0x5a815d){_0x472926[_0x3188('0x1f')]=_0x5a815d;if(_0x44db9a['query'][_0x3188('0x42')]){_0x1f1c6f[_0x3188('0x43')]=[{'all':!![]}];}return db[_0x3188('0x41')][_0x3188('0x44')](_0x1f1c6f);})[_0x3188('0x23')](function(_0x549ab2){_0x472926['rows']=_0x549ab2;return _0x472926;})['then'](respondWithFilteredResult(_0x20e6aa,_0x1f1c6f))['catch'](handleError(_0x20e6aa,null));};exports['show']=function(_0x763943,_0x28c224){var _0x3e5f90={'raw':![],'where':{'id':_0x763943[_0x3188('0x45')]['id']}},_0x1b40b1={};_0x1b40b1['model']=_[_0x3188('0x31')](db['UserProfileResource'][_0x3188('0x2b')]);_0x1b40b1[_0x3188('0x30')]=_[_0x3188('0x31')](_0x763943[_0x3188('0x30')]);_0x1b40b1['filters']=_[_0x3188('0x33')](_0x1b40b1[_0x3188('0x2f')],_0x1b40b1[_0x3188('0x30')]);_0x3e5f90[_0x3188('0x34')]=_[_0x3188('0x33')](_0x1b40b1['model'],qs['fields'](_0x763943[_0x3188('0x30')][_0x3188('0x35')]));_0x3e5f90['attributes']=_0x3e5f90[_0x3188('0x34')][_0x3188('0x36')]?_0x3e5f90['attributes']:_0x1b40b1[_0x3188('0x2f')];if(_0x763943[_0x3188('0x30')][_0x3188('0x42')]){_0x3e5f90[_0x3188('0x43')]=[{'all':!![]}];}_0x3e5f90=_[_0x3188('0x3e')]({},_0x3e5f90,_0x763943['options']);return db[_0x3188('0x41')]['find'](_0x3e5f90)[_0x3188('0x23')](handleEntityNotFound(_0x28c224,null))[_0x3188('0x23')](respondWithResult(_0x28c224,null))[_0x3188('0x46')](handleError(_0x28c224,null));};exports[_0x3188('0x47')]=function(_0xe4cbb0,_0x315524){return db[_0x3188('0x41')][_0x3188('0x47')](_0xe4cbb0[_0x3188('0x48')],{})[_0x3188('0x23')](respondWithResult(_0x315524,0xc9))[_0x3188('0x46')](handleError(_0x315524,null));};exports['update']=function(_0x50fd56,_0x1b012d){if(_0x50fd56['body']['id']){delete _0x50fd56[_0x3188('0x48')]['id'];}return db[_0x3188('0x41')]['find']({'where':{'id':_0x50fd56[_0x3188('0x45')]['id']}})[_0x3188('0x23')](handleEntityNotFound(_0x1b012d,null))[_0x3188('0x23')](saveUpdates(_0x50fd56[_0x3188('0x48')],null))[_0x3188('0x23')](respondWithResult(_0x1b012d,null))[_0x3188('0x46')](handleError(_0x1b012d,null));};exports[_0x3188('0x24')]=function(_0x1e3592,_0x59a177){return db[_0x3188('0x41')][_0x3188('0x49')]({'where':{'id':_0x1e3592['params']['id']}})[_0x3188('0x23')](handleEntityNotFound(_0x59a177,null))['then'](removeEntity(_0x59a177,null))[_0x3188('0x46')](handleError(_0x59a177,null));};exports[_0x3188('0x4a')]=function(_0x4f8852,_0x559264){return db['UserProfileResource']['describe']()['then'](respondWithResult(_0x559264,null))['catch'](handleError(_0x559264,null));};
\ No newline at end of file
+var _0x4991=['hasOwnProperty','nolimit','order','sort','where','merge','type','filter','options','UserProfileResource','includeAll','include','findAll','rows','show','params','keys','find','create','body','catch','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','map','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length'];(function(_0x37854a,_0x59b0ac){var _0x11f882=function(_0x1950f2){while(--_0x1950f2){_0x37854a['push'](_0x37854a['shift']());}};_0x11f882(++_0x59b0ac);}(_0x4991,0xf7));var _0x1499=function(_0x4ff258,_0x458547){_0x4ff258=_0x4ff258-0x0;var _0x207367=_0x4991[_0x4ff258];return _0x207367;};'use strict';var emlformat=require(_0x1499('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1499('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1499('0x2'));var moment=require(_0x1499('0x3'));var BPromise=require(_0x1499('0x4'));var Mustache=require(_0x1499('0x5'));var util=require(_0x1499('0x6'));var path=require(_0x1499('0x7'));var sox=require(_0x1499('0x8'));var csv=require(_0x1499('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1499('0xa'));var _=require(_0x1499('0xb'));var squel=require(_0x1499('0xc'));var crypto=require(_0x1499('0xd'));var jsforce=require(_0x1499('0xe'));var deskjs=require(_0x1499('0xf'));var toCsv=require(_0x1499('0x9'));var querystring=require(_0x1499('0x10'));var Papa=require('papaparse');var Redis=require(_0x1499('0x11'));var authService=require(_0x1499('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x1499('0x13'));var hardwareService=require(_0x1499('0x14'));var logger=require('../../config/logger')(_0x1499('0x15'));var utils=require(_0x1499('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3039ce,_0x274bc1){_0x274bc1=_0x274bc1||0xcc;return function(_0x34a928){if(_0x34a928){return _0x3039ce[_0x1499('0x17')](_0x274bc1);}return _0x3039ce[_0x1499('0x18')](_0x274bc1)['end']();};}function respondWithResult(_0x5f34f2,_0x308177){_0x308177=_0x308177||0xc8;return function(_0x4e5195){if(_0x4e5195){return _0x5f34f2[_0x1499('0x18')](_0x308177)[_0x1499('0x19')](_0x4e5195);}};}function respondWithFilteredResult(_0x308318,_0x3ab605){return function(_0x48f654){if(_0x48f654){var _0x1ed43b=typeof _0x3ab605[_0x1499('0x1a')]==='undefined'&&typeof _0x3ab605[_0x1499('0x1b')]===_0x1499('0x1c');var _0x46b364=_0x48f654[_0x1499('0x1d')];var _0x1e45a9=_0x1ed43b?0x0:_0x3ab605[_0x1499('0x1a')];var _0x5b9859=_0x1ed43b?_0x48f654['count']:_0x3ab605['offset']+_0x3ab605[_0x1499('0x1b')];var _0xad534b;if(_0x5b9859>=_0x46b364){_0x5b9859=_0x46b364;_0xad534b=0xc8;}else{_0xad534b=0xce;}_0x308318['status'](_0xad534b);return _0x308318[_0x1499('0x1e')](_0x1499('0x1f'),_0x1e45a9+'-'+_0x5b9859+'/'+_0x46b364)[_0x1499('0x19')](_0x48f654);}return null;};}function patchUpdates(_0x18e4a6){return function(_0x21e887){try{jsonpatch[_0x1499('0x20')](_0x21e887,_0x18e4a6,!![]);}catch(_0x2b0458){return BPromise[_0x1499('0x21')](_0x2b0458);}return _0x21e887[_0x1499('0x22')]();};}function saveUpdates(_0x15bcd4,_0x2bb71f){return function(_0x836081){if(_0x836081){return _0x836081[_0x1499('0x23')](_0x15bcd4)[_0x1499('0x24')](function(_0x4ec57a){return _0x4ec57a;});}return null;};}function removeEntity(_0x1e2c51,_0x2c7f57){return function(_0x5615b4){if(_0x5615b4){return _0x5615b4[_0x1499('0x25')]()[_0x1499('0x24')](function(){_0x1e2c51[_0x1499('0x18')](0xcc)[_0x1499('0x26')]();});}};}function handleEntityNotFound(_0x3968e0,_0x16d036){return function(_0x54f3c2){if(!_0x54f3c2){_0x3968e0['sendStatus'](0x194);}return _0x54f3c2;};}function handleError(_0x12739b,_0x3c9aca){_0x3c9aca=_0x3c9aca||0x1f4;return function(_0x3b9259){logger[_0x1499('0x27')](_0x3b9259[_0x1499('0x28')]);if(_0x3b9259['name']){delete _0x3b9259[_0x1499('0x29')];}_0x12739b['status'](_0x3c9aca)['send'](_0x3b9259);};}exports['index']=function(_0x21d204,_0x103efa){var _0x40932a={},_0x1b460b={},_0x3dad86={'count':0x0,'rows':[]};var _0x388513=_[_0x1499('0x2a')](db['UserProfileResource'][_0x1499('0x2b')],function(_0x1a2c99){return{'name':_0x1a2c99[_0x1499('0x2c')],'type':_0x1a2c99['type'][_0x1499('0x2d')]};});_0x1b460b[_0x1499('0x2e')]=_['map'](_0x388513,_0x1499('0x29'));_0x1b460b[_0x1499('0x2f')]=_['keys'](_0x21d204[_0x1499('0x2f')]);_0x1b460b[_0x1499('0x30')]=_[_0x1499('0x31')](_0x1b460b[_0x1499('0x2e')],_0x1b460b[_0x1499('0x2f')]);_0x40932a[_0x1499('0x32')]=_[_0x1499('0x31')](_0x1b460b[_0x1499('0x2e')],qs[_0x1499('0x33')](_0x21d204[_0x1499('0x2f')][_0x1499('0x33')]));_0x40932a[_0x1499('0x32')]=_0x40932a[_0x1499('0x32')][_0x1499('0x34')]?_0x40932a[_0x1499('0x32')]:_0x1b460b[_0x1499('0x2e')];if(!_0x21d204[_0x1499('0x2f')][_0x1499('0x35')](_0x1499('0x36'))){_0x40932a[_0x1499('0x1b')]=qs['limit'](_0x21d204[_0x1499('0x2f')][_0x1499('0x1b')]);_0x40932a[_0x1499('0x1a')]=qs[_0x1499('0x1a')](_0x21d204[_0x1499('0x2f')][_0x1499('0x1a')]);}_0x40932a[_0x1499('0x37')]=qs[_0x1499('0x38')](_0x21d204[_0x1499('0x2f')][_0x1499('0x38')]);_0x40932a[_0x1499('0x39')]=qs['filters'](_['pick'](_0x21d204[_0x1499('0x2f')],_0x1b460b['filters']),_0x388513);if(_0x21d204[_0x1499('0x2f')]['filter']){_0x40932a[_0x1499('0x39')]=_[_0x1499('0x3a')](_0x40932a[_0x1499('0x39')],{'$or':_[_0x1499('0x2a')](_0x388513,function(_0x531933){if(_0x531933[_0x1499('0x3b')]!=='VIRTUAL'){var _0x2f9c59={};_0x2f9c59[_0x531933[_0x1499('0x29')]]={'$like':'%'+_0x21d204[_0x1499('0x2f')][_0x1499('0x3c')]+'%'};return _0x2f9c59;}})});}_0x40932a=_['merge']({},_0x40932a,_0x21d204[_0x1499('0x3d')]);var _0x815a99={'where':_0x40932a[_0x1499('0x39')]};return db[_0x1499('0x3e')]['count'](_0x815a99)[_0x1499('0x24')](function(_0x4cc411){_0x3dad86[_0x1499('0x1d')]=_0x4cc411;if(_0x21d204[_0x1499('0x2f')][_0x1499('0x3f')]){_0x40932a[_0x1499('0x40')]=[{'all':!![]}];}return db[_0x1499('0x3e')][_0x1499('0x41')](_0x40932a);})[_0x1499('0x24')](function(_0xcb85eb){_0x3dad86[_0x1499('0x42')]=_0xcb85eb;return _0x3dad86;})[_0x1499('0x24')](respondWithFilteredResult(_0x103efa,_0x40932a))['catch'](handleError(_0x103efa,null));};exports[_0x1499('0x43')]=function(_0x5dd36c,_0x2cfdaf){var _0x1af1a1={'raw':![],'where':{'id':_0x5dd36c[_0x1499('0x44')]['id']}},_0x5646cf={};_0x5646cf[_0x1499('0x2e')]=_[_0x1499('0x45')](db[_0x1499('0x3e')][_0x1499('0x2b')]);_0x5646cf['query']=_['keys'](_0x5dd36c[_0x1499('0x2f')]);_0x5646cf[_0x1499('0x30')]=_['intersection'](_0x5646cf[_0x1499('0x2e')],_0x5646cf[_0x1499('0x2f')]);_0x1af1a1['attributes']=_['intersection'](_0x5646cf[_0x1499('0x2e')],qs[_0x1499('0x33')](_0x5dd36c[_0x1499('0x2f')]['fields']));_0x1af1a1[_0x1499('0x32')]=_0x1af1a1[_0x1499('0x32')][_0x1499('0x34')]?_0x1af1a1[_0x1499('0x32')]:_0x5646cf['model'];if(_0x5dd36c[_0x1499('0x2f')][_0x1499('0x3f')]){_0x1af1a1[_0x1499('0x40')]=[{'all':!![]}];}_0x1af1a1=_[_0x1499('0x3a')]({},_0x1af1a1,_0x5dd36c['options']);return db[_0x1499('0x3e')][_0x1499('0x46')](_0x1af1a1)[_0x1499('0x24')](handleEntityNotFound(_0x2cfdaf,null))['then'](respondWithResult(_0x2cfdaf,null))['catch'](handleError(_0x2cfdaf,null));};exports[_0x1499('0x47')]=function(_0x491777,_0x7fa101){return db[_0x1499('0x3e')][_0x1499('0x47')](_0x491777[_0x1499('0x48')],{})[_0x1499('0x24')](respondWithResult(_0x7fa101,0xc9))[_0x1499('0x49')](handleError(_0x7fa101,null));};exports[_0x1499('0x23')]=function(_0x591aa8,_0x420d16){if(_0x591aa8['body']['id']){delete _0x591aa8[_0x1499('0x48')]['id'];}return db[_0x1499('0x3e')]['find']({'where':{'id':_0x591aa8[_0x1499('0x44')]['id']}})[_0x1499('0x24')](handleEntityNotFound(_0x420d16,null))[_0x1499('0x24')](saveUpdates(_0x591aa8['body'],null))[_0x1499('0x24')](respondWithResult(_0x420d16,null))[_0x1499('0x49')](handleError(_0x420d16,null));};exports[_0x1499('0x25')]=function(_0x29ac0f,_0x305599){return db[_0x1499('0x3e')][_0x1499('0x46')]({'where':{'id':_0x29ac0f[_0x1499('0x44')]['id']}})[_0x1499('0x24')](handleEntityNotFound(_0x305599,null))[_0x1499('0x24')](removeEntity(_0x305599,null))['catch'](handleError(_0x305599,null));};exports[_0x1499('0x4a')]=function(_0x9f0520,_0x278178){return db['UserProfileResource'][_0x1499('0x4a')]()[_0x1499('0x24')](respondWithResult(_0x278178,null))['catch'](handleError(_0x278178,null));};
\ No newline at end of file
index add14c5..14e2741 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7687=['lodash','util','api','moment','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','sectionId'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x7687,0x186));var _0x7768=function(_0x32c012,_0xe3c576){_0x32c012=_0x32c012-0x0;var _0x48562e=_0x7687[_0x32c012];return _0x48562e;};'use strict';var _=require(_0x7768('0x0'));var util=require(_0x7768('0x1'));var logger=require('../../config/logger')(_0x7768('0x2'));var moment=require(_0x7768('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7768('0x4'));var rimraf=require(_0x7768('0x5'));var config=require(_0x7768('0x6'));var attributes=require(_0x7768('0x7'));module[_0x7768('0x8')]=function(_0x286829,_0x2cd00c){return _0x286829[_0x7768('0x9')](_0x7768('0xa'),attributes,{'tableName':_0x7768('0xb'),'paranoid':![],'indexes':[{'name':_0x7768('0xc'),'fields':[_0x7768('0xd'),_0x7768('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x22c7=['api','moment','bluebird','request-promise','path','../../config/environment','./userProfileResource.attributes','exports','define','UserProfileResource','compositeIndex','resourceId','lodash','util','../../config/logger'];(function(_0x599e60,_0x5b6519){var _0x468e19=function(_0xcdfd97){while(--_0xcdfd97){_0x599e60['push'](_0x599e60['shift']());}};_0x468e19(++_0x5b6519);}(_0x22c7,0xde));var _0x722c=function(_0x515679,_0x31ae43){_0x515679=_0x515679-0x0;var _0x3dbcc2=_0x22c7[_0x515679];return _0x3dbcc2;};'use strict';var _=require(_0x722c('0x0'));var util=require(_0x722c('0x1'));var logger=require(_0x722c('0x2'))(_0x722c('0x3'));var moment=require(_0x722c('0x4'));var BPromise=require(_0x722c('0x5'));var rp=require(_0x722c('0x6'));var fs=require('fs');var path=require(_0x722c('0x7'));var rimraf=require('rimraf');var config=require(_0x722c('0x8'));var attributes=require(_0x722c('0x9'));module[_0x722c('0xa')]=function(_0x1ffad8,_0x58c046){return _0x1ffad8[_0x722c('0xb')](_0x722c('0xc'),attributes,{'tableName':'user_profile_has_resources','paranoid':![],'indexes':[{'name':_0x722c('0xd'),'fields':[_0x722c('0xe'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
index 464ed42..4308463 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccc5=['info','UserProfileResource,\x20%s,\x20%s','debug','request\x20sent','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x551698,_0x675a14){var _0xe378d=function(_0x534c0f){while(--_0x534c0f){_0x551698['push'](_0x551698['shift']());}};_0xe378d(++_0x675a14);}(_0xccc5,0x1e8));var _0x5ccc=function(_0x5627e1,_0x1b2dbf){_0x5627e1=_0x5627e1-0x0;var _0x2f013f=_0xccc5[_0x5627e1];return _0x2f013f;};'use strict';var _=require(_0x5ccc('0x0'));var util=require(_0x5ccc('0x1'));var moment=require(_0x5ccc('0x2'));var BPromise=require(_0x5ccc('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5ccc('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5ccc('0x5'));var logger=require(_0x5ccc('0x6'))(_0x5ccc('0x7'));var config=require(_0x5ccc('0x8'));var jayson=require(_0x5ccc('0x9'));var client=jayson[_0x5ccc('0xa')][_0x5ccc('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1b26ed,_0x1a4193,_0x37a5bb){return new BPromise(function(_0x2096a3,_0x354347){return client['request'](_0x1b26ed,_0x37a5bb)['then'](function(_0x23b85b){logger[_0x5ccc('0xc')](_0x5ccc('0xd'),_0x1a4193,'request\x20sent');logger[_0x5ccc('0xe')]('UserProfileResource,\x20%s,\x20%s,\x20%s',_0x1a4193,_0x5ccc('0xf'),JSON['stringify'](_0x23b85b));if(_0x23b85b['error']){if(_0x23b85b[_0x5ccc('0x10')]['code']===0x1f4){logger[_0x5ccc('0x10')](_0x5ccc('0xd'),_0x1a4193,_0x23b85b['error'][_0x5ccc('0x11')]);return _0x354347(_0x23b85b[_0x5ccc('0x10')][_0x5ccc('0x11')]);}logger[_0x5ccc('0x10')](_0x5ccc('0xd'),_0x1a4193,_0x23b85b[_0x5ccc('0x10')][_0x5ccc('0x11')]);return _0x2096a3(_0x23b85b[_0x5ccc('0x10')][_0x5ccc('0x11')]);}else{logger['info'](_0x5ccc('0xd'),_0x1a4193,'request\x20sent');_0x2096a3(_0x23b85b[_0x5ccc('0x12')]['message']);}})[_0x5ccc('0x13')](function(_0x3b56da){logger['error'](_0x5ccc('0xd'),_0x1a4193,_0x3b56da);_0x354347(_0x3b56da);});});}
\ No newline at end of file
+var _0xaaa3=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird'];(function(_0x330b6d,_0x423489){var _0x17f54b=function(_0x33ddd4){while(--_0x33ddd4){_0x330b6d['push'](_0x330b6d['shift']());}};_0x17f54b(++_0x423489);}(_0xaaa3,0xef));var _0x3aaa=function(_0x556e0a,_0x180c53){_0x556e0a=_0x556e0a-0x0;var _0x2903ed=_0xaaa3[_0x556e0a];return _0x2903ed;};'use strict';var _=require('lodash');var util=require(_0x3aaa('0x0'));var moment=require(_0x3aaa('0x1'));var BPromise=require(_0x3aaa('0x2'));var rs=require(_0x3aaa('0x3'));var fs=require('fs');var Redis=require(_0x3aaa('0x4'));var db=require(_0x3aaa('0x5'))['db'];var utils=require(_0x3aaa('0x6'));var logger=require(_0x3aaa('0x7'))(_0x3aaa('0x8'));var config=require(_0x3aaa('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3aaa('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2a0f00,_0x1dbd72,_0x25b749){return new BPromise(function(_0x446233,_0xb99ea7){return client[_0x3aaa('0xb')](_0x2a0f00,_0x25b749)[_0x3aaa('0xc')](function(_0x37fb95){logger[_0x3aaa('0xd')](_0x3aaa('0xe'),_0x1dbd72,_0x3aaa('0xf'));logger['debug'](_0x3aaa('0x10'),_0x1dbd72,'request\x20sent',JSON[_0x3aaa('0x11')](_0x37fb95));if(_0x37fb95['error']){if(_0x37fb95[_0x3aaa('0x12')]['code']===0x1f4){logger[_0x3aaa('0x12')](_0x3aaa('0xe'),_0x1dbd72,_0x37fb95[_0x3aaa('0x12')][_0x3aaa('0x13')]);return _0xb99ea7(_0x37fb95[_0x3aaa('0x12')]['message']);}logger[_0x3aaa('0x12')](_0x3aaa('0xe'),_0x1dbd72,_0x37fb95[_0x3aaa('0x12')][_0x3aaa('0x13')]);return _0x446233(_0x37fb95[_0x3aaa('0x12')][_0x3aaa('0x13')]);}else{logger['info'](_0x3aaa('0xe'),_0x1dbd72,'request\x20sent');_0x446233(_0x37fb95[_0x3aaa('0x14')]['message']);}})[_0x3aaa('0x15')](function(_0x1a1004){logger[_0x3aaa('0x12')](_0x3aaa('0xe'),_0x1dbd72,_0x1a1004);_0xb99ea7(_0x1a1004);});});}
\ No newline at end of file
index 2f4b138..e1d9abe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70b6=['./userProfileSection.controller','index','get','isAuthenticated','/:id','create','put','update','delete','destroy','exports','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1d87fc,_0x1e5321){var _0x492b56=function(_0x4c6b16){while(--_0x4c6b16){_0x1d87fc['push'](_0x1d87fc['shift']());}};_0x492b56(++_0x1e5321);}(_0x70b6,0x13d));var _0x670b=function(_0x407de3,_0x41ea09){_0x407de3=_0x407de3-0x0;var _0x3a8cdf=_0x70b6[_0x407de3];return _0x3a8cdf;};'use strict';var multer=require('multer');var util=require(_0x670b('0x0'));var path=require(_0x670b('0x1'));var timeout=require('connect-timeout');var express=require(_0x670b('0x2'));var router=express[_0x670b('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x670b('0x4'));var interaction=require(_0x670b('0x5'));var config=require(_0x670b('0x6'));var controller=require(_0x670b('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x670b('0x8')]);router[_0x670b('0x9')]('/describe',auth[_0x670b('0xa')](),controller['describe']);router[_0x670b('0x9')](_0x670b('0xb'),auth[_0x670b('0xa')](),controller['show']);router['post']('/',auth[_0x670b('0xa')](),controller[_0x670b('0xc')]);router[_0x670b('0xd')]('/:id',auth[_0x670b('0xa')](),controller[_0x670b('0xe')]);router[_0x670b('0xf')](_0x670b('0xb'),auth[_0x670b('0xa')](),controller[_0x670b('0x10')]);module[_0x670b('0x11')]=router;
\ No newline at end of file
+var _0x68f1=['./userProfileSection.controller','get','isAuthenticated','index','/describe','describe','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment'];(function(_0x26224c,_0x1a354c){var _0x4c2bc5=function(_0x179343){while(--_0x179343){_0x26224c['push'](_0x26224c['shift']());}};_0x4c2bc5(++_0x1a354c);}(_0x68f1,0x19a));var _0x168f=function(_0x59a0d2,_0x4e0f17){_0x59a0d2=_0x59a0d2-0x0;var _0x55bed2=_0x68f1[_0x59a0d2];return _0x55bed2;};'use strict';var multer=require(_0x168f('0x0'));var util=require(_0x168f('0x1'));var path=require(_0x168f('0x2'));var timeout=require(_0x168f('0x3'));var express=require(_0x168f('0x4'));var router=express[_0x168f('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x168f('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x168f('0x7'));var controller=require(_0x168f('0x8'));router[_0x168f('0x9')]('/',auth[_0x168f('0xa')](),controller[_0x168f('0xb')]);router[_0x168f('0x9')](_0x168f('0xc'),auth['isAuthenticated'](),controller[_0x168f('0xd')]);router[_0x168f('0x9')]('/:id',auth[_0x168f('0xa')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x168f('0xe')]);router[_0x168f('0xf')]('/:id',auth[_0x168f('0xa')](),controller[_0x168f('0x10')]);router[_0x168f('0x11')]('/:id',auth[_0x168f('0xa')](),controller[_0x168f('0x12')]);module['exports']=router;
\ No newline at end of file
index a54ba85..983a980 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfff0=['BOOLEAN','setDataValue','crudPermissions','getDataValue','split','exports','STRING'];(function(_0x39d544,_0x35c14f){var _0x5a5ff2=function(_0x2271fb){while(--_0x2271fb){_0x39d544['push'](_0x39d544['shift']());}};_0x5a5ff2(++_0x35c14f);}(_0xfff0,0x139));var _0x0fff=function(_0x34cfd5,_0x4be7a2){_0x34cfd5=_0x34cfd5-0x0;var _0x5389ce=_0xfff0[_0x34cfd5];return _0x5389ce;};'use strict';var Sequelize=require('sequelize');module[_0x0fff('0x0')]={'name':{'type':Sequelize[_0x0fff('0x1')],'allowNull':![]},'category':{'type':Sequelize[_0x0fff('0x1')],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0x0fff('0x2')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x0fff('0x2')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x0fff('0x1')],'set':function(_0x4bec60){this[_0x0fff('0x3')](_0x0fff('0x4'),_0x4bec60?_0x4bec60['join'](''):[]);},'get':function(){return this[_0x0fff('0x5')](_0x0fff('0x4'))?this[_0x0fff('0x5')]('crudPermissions')[_0x0fff('0x6')](''):[];}}};
\ No newline at end of file
+var _0x087b=['getDataValue','split','sequelize','exports','INTEGER','BOOLEAN','STRING','setDataValue','crudPermissions','join'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x087b,0x11a));var _0xb087=function(_0x29d915,_0x54a040){_0x29d915=_0x29d915-0x0;var _0x160f86=_0x087b[_0x29d915];return _0x160f86;};'use strict';var Sequelize=require(_0xb087('0x0'));module[_0xb087('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0xb087('0x2')],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0xb087('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xb087('0x4')],'set':function(_0x1d3299){this[_0xb087('0x5')](_0xb087('0x6'),_0x1d3299?_0x1d3299[_0xb087('0x7')](''):[]);},'get':function(){return this[_0xb087('0x8')](_0xb087('0x6'))?this[_0xb087('0x8')](_0xb087('0x6'))[_0xb087('0x9')](''):[];}}};
\ No newline at end of file
index 6d20f1c..ce8beda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f95=['count','set','apply','save','update','destroy','then','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','offset','order','sort','where','merge','filter','options','UserProfileSection','includeAll','include','findAll','rows','show','params','length','find','catch','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','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/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0x0f95,0xc6));var _0x50f9=function(_0x485f35,_0x45a0fc){_0x485f35=_0x485f35-0x0;var _0x2ad118=_0x0f95[_0x485f35];return _0x2ad118;};'use strict';var emlformat=require(_0x50f9('0x0'));var rimraf=require(_0x50f9('0x1'));var zipdir=require(_0x50f9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x50f9('0x3'));var moment=require(_0x50f9('0x4'));var BPromise=require(_0x50f9('0x5'));var Mustache=require('mustache');var util=require(_0x50f9('0x6'));var path=require(_0x50f9('0x7'));var sox=require(_0x50f9('0x8'));var csv=require(_0x50f9('0x9'));var ejs=require(_0x50f9('0xa'));var fs=require('fs');var fs_extra=require(_0x50f9('0xb'));var _=require(_0x50f9('0xc'));var squel=require(_0x50f9('0xd'));var crypto=require(_0x50f9('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x50f9('0xf'));var toCsv=require(_0x50f9('0x9'));var querystring=require(_0x50f9('0x10'));var Papa=require(_0x50f9('0x11'));var Redis=require(_0x50f9('0x12'));var authService=require(_0x50f9('0x13'));var qs=require(_0x50f9('0x14'));var as=require(_0x50f9('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x50f9('0x16'))(_0x50f9('0x17'));var utils=require('../../config/utils');var config=require(_0x50f9('0x18'));var licenseUtil=require(_0x50f9('0x19'));var db=require(_0x50f9('0x1a'))['db'];function respondWithStatusCode(_0x59f5b2,_0x3c2309){_0x3c2309=_0x3c2309||0xcc;return function(_0x59d863){if(_0x59d863){return _0x59f5b2[_0x50f9('0x1b')](_0x3c2309);}return _0x59f5b2['status'](_0x3c2309)[_0x50f9('0x1c')]();};}function respondWithResult(_0x1eb060,_0x2d19a5){_0x2d19a5=_0x2d19a5||0xc8;return function(_0x5bec54){if(_0x5bec54){return _0x1eb060[_0x50f9('0x1d')](_0x2d19a5)[_0x50f9('0x1e')](_0x5bec54);}};}function respondWithFilteredResult(_0x26482e,_0x1225d9){return function(_0x13d013){if(_0x13d013){var _0x1b8be8=typeof _0x1225d9['offset']===_0x50f9('0x1f')&&typeof _0x1225d9[_0x50f9('0x20')]===_0x50f9('0x1f');var _0x4cd7fd=_0x13d013[_0x50f9('0x21')];var _0x57b946=_0x1b8be8?0x0:_0x1225d9['offset'];var _0x4fb5ec=_0x1b8be8?_0x13d013['count']:_0x1225d9['offset']+_0x1225d9[_0x50f9('0x20')];var _0x3d1b54;if(_0x4fb5ec>=_0x4cd7fd){_0x4fb5ec=_0x4cd7fd;_0x3d1b54=0xc8;}else{_0x3d1b54=0xce;}_0x26482e[_0x50f9('0x1d')](_0x3d1b54);return _0x26482e[_0x50f9('0x22')]('Content-Range',_0x57b946+'-'+_0x4fb5ec+'/'+_0x4cd7fd)[_0x50f9('0x1e')](_0x13d013);}return null;};}function patchUpdates(_0x2deb1e){return function(_0x2a3c26){try{jsonpatch[_0x50f9('0x23')](_0x2a3c26,_0x2deb1e,!![]);}catch(_0x4efdf4){return BPromise['reject'](_0x4efdf4);}return _0x2a3c26[_0x50f9('0x24')]();};}function saveUpdates(_0x849ed2,_0xa9a47d){return function(_0x513e5e){if(_0x513e5e){return _0x513e5e[_0x50f9('0x25')](_0x849ed2)['then'](function(_0x1c077b){return _0x1c077b;});}return null;};}function removeEntity(_0x25d9f2,_0x2ea44f){return function(_0x2025f7){if(_0x2025f7){return _0x2025f7[_0x50f9('0x26')]()[_0x50f9('0x27')](function(){_0x25d9f2[_0x50f9('0x1d')](0xcc)[_0x50f9('0x1c')]();});}};}function handleEntityNotFound(_0x27369d,_0x53cf81){return function(_0xd63e22){if(!_0xd63e22){_0x27369d[_0x50f9('0x1b')](0x194);}return _0xd63e22;};}function handleError(_0x599baf,_0x212210){_0x212210=_0x212210||0x1f4;return function(_0x2df206){logger['error'](_0x2df206[_0x50f9('0x28')]);if(_0x2df206[_0x50f9('0x29')]){delete _0x2df206[_0x50f9('0x29')];}_0x599baf[_0x50f9('0x1d')](_0x212210)[_0x50f9('0x2a')](_0x2df206);};}exports[_0x50f9('0x2b')]=function(_0x41621a,_0x79aeb){var _0xd00c82={},_0x3514fe={},_0x589060={'count':0x0,'rows':[]};var _0x3963d3=_[_0x50f9('0x2c')](db['UserProfileSection'][_0x50f9('0x2d')],function(_0x4759d4){return{'name':_0x4759d4[_0x50f9('0x2e')],'type':_0x4759d4[_0x50f9('0x2f')][_0x50f9('0x30')]};});_0x3514fe[_0x50f9('0x31')]=_[_0x50f9('0x2c')](_0x3963d3,_0x50f9('0x29'));_0x3514fe[_0x50f9('0x32')]=_[_0x50f9('0x33')](_0x41621a[_0x50f9('0x32')]);_0x3514fe[_0x50f9('0x34')]=_[_0x50f9('0x35')](_0x3514fe[_0x50f9('0x31')],_0x3514fe['query']);_0xd00c82[_0x50f9('0x36')]=_[_0x50f9('0x35')](_0x3514fe[_0x50f9('0x31')],qs[_0x50f9('0x37')](_0x41621a[_0x50f9('0x32')]['fields']));_0xd00c82['attributes']=_0xd00c82[_0x50f9('0x36')]['length']?_0xd00c82[_0x50f9('0x36')]:_0x3514fe[_0x50f9('0x31')];if(!_0x41621a['query'][_0x50f9('0x38')]('nolimit')){_0xd00c82[_0x50f9('0x20')]=qs[_0x50f9('0x20')](_0x41621a['query']['limit']);_0xd00c82['offset']=qs[_0x50f9('0x39')](_0x41621a[_0x50f9('0x32')][_0x50f9('0x39')]);}_0xd00c82[_0x50f9('0x3a')]=qs[_0x50f9('0x3b')](_0x41621a[_0x50f9('0x32')][_0x50f9('0x3b')]);_0xd00c82['where']=qs[_0x50f9('0x34')](_['pick'](_0x41621a['query'],_0x3514fe[_0x50f9('0x34')]),_0x3963d3);if(_0x41621a[_0x50f9('0x32')]['filter']){_0xd00c82[_0x50f9('0x3c')]=_[_0x50f9('0x3d')](_0xd00c82[_0x50f9('0x3c')],{'$or':_['map'](_0x3963d3,function(_0xa074b7){if(_0xa074b7[_0x50f9('0x2f')]!=='VIRTUAL'){var _0x499c98={};_0x499c98[_0xa074b7[_0x50f9('0x29')]]={'$like':'%'+_0x41621a[_0x50f9('0x32')][_0x50f9('0x3e')]+'%'};return _0x499c98;}})});}_0xd00c82=_[_0x50f9('0x3d')]({},_0xd00c82,_0x41621a[_0x50f9('0x3f')]);var _0x10649b={'where':_0xd00c82[_0x50f9('0x3c')]};return db[_0x50f9('0x40')][_0x50f9('0x21')](_0x10649b)[_0x50f9('0x27')](function(_0x4ce226){_0x589060['count']=_0x4ce226;if(_0x41621a[_0x50f9('0x32')][_0x50f9('0x41')]){_0xd00c82[_0x50f9('0x42')]=[{'all':!![]}];}return db['UserProfileSection'][_0x50f9('0x43')](_0xd00c82);})[_0x50f9('0x27')](function(_0x16719e){_0x589060[_0x50f9('0x44')]=_0x16719e;return _0x589060;})['then'](respondWithFilteredResult(_0x79aeb,_0xd00c82))['catch'](handleError(_0x79aeb,null));};exports[_0x50f9('0x45')]=function(_0x28a372,_0x1c0a75){var _0x162dc9={'raw':![],'where':{'id':_0x28a372[_0x50f9('0x46')]['id']}},_0x460b80={};_0x460b80['model']=_[_0x50f9('0x33')](db['UserProfileSection'][_0x50f9('0x2d')]);_0x460b80['query']=_[_0x50f9('0x33')](_0x28a372['query']);_0x460b80[_0x50f9('0x34')]=_[_0x50f9('0x35')](_0x460b80[_0x50f9('0x31')],_0x460b80['query']);_0x162dc9['attributes']=_['intersection'](_0x460b80[_0x50f9('0x31')],qs[_0x50f9('0x37')](_0x28a372[_0x50f9('0x32')][_0x50f9('0x37')]));_0x162dc9['attributes']=_0x162dc9[_0x50f9('0x36')][_0x50f9('0x47')]?_0x162dc9[_0x50f9('0x36')]:_0x460b80[_0x50f9('0x31')];if(_0x28a372[_0x50f9('0x32')][_0x50f9('0x41')]){_0x162dc9['include']=[{'all':!![]}];}_0x162dc9=_['merge']({},_0x162dc9,_0x28a372[_0x50f9('0x3f')]);return db[_0x50f9('0x40')][_0x50f9('0x48')](_0x162dc9)[_0x50f9('0x27')](handleEntityNotFound(_0x1c0a75,null))[_0x50f9('0x27')](respondWithResult(_0x1c0a75,null))[_0x50f9('0x49')](handleError(_0x1c0a75,null));};exports[_0x50f9('0x4a')]=function(_0xecdab9,_0x850769){return db[_0x50f9('0x40')][_0x50f9('0x4a')](_0xecdab9[_0x50f9('0x4b')],{})[_0x50f9('0x27')](respondWithResult(_0x850769,0xc9))['catch'](handleError(_0x850769,null));};exports['update']=function(_0xe6f0f6,_0x3ef373){if(_0xe6f0f6[_0x50f9('0x4b')]['id']){delete _0xe6f0f6[_0x50f9('0x4b')]['id'];}return db[_0x50f9('0x40')][_0x50f9('0x48')]({'where':{'id':_0xe6f0f6['params']['id']}})[_0x50f9('0x27')](handleEntityNotFound(_0x3ef373,null))[_0x50f9('0x27')](saveUpdates(_0xe6f0f6['body'],null))['then'](respondWithResult(_0x3ef373,null))['catch'](handleError(_0x3ef373,null));};exports[_0x50f9('0x26')]=function(_0x2dbac4,_0x31a4ae){return db[_0x50f9('0x40')][_0x50f9('0x48')]({'where':{'id':_0x2dbac4[_0x50f9('0x46')]['id']}})[_0x50f9('0x27')](handleEntityNotFound(_0x31a4ae,null))[_0x50f9('0x27')](removeEntity(_0x31a4ae,null))[_0x50f9('0x49')](handleError(_0x31a4ae,null));};exports[_0x50f9('0x4c')]=function(_0x3db24d,_0x404ca4){return db[_0x50f9('0x40')]['describe']()[_0x50f9('0x27')](respondWithResult(_0x404ca4,null))['catch'](handleError(_0x404ca4,null));};
\ No newline at end of file
+var _0x0db6=['VIRTUAL','options','count','include','findAll','rows','catch','show','params','rawAttributes','keys','includeAll','create','body','destroy','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','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','../../mysqldb','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','UserProfileSection','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x54fe4e,_0x480c77){var _0x4dab9c=function(_0x133088){while(--_0x133088){_0x54fe4e['push'](_0x54fe4e['shift']());}};_0x4dab9c(++_0x480c77);}(_0x0db6,0x1ab));var _0x60db=function(_0x538967,_0x464c86){_0x538967=_0x538967-0x0;var _0x30bc9b=_0x0db6[_0x538967];return _0x30bc9b;};'use strict';var emlformat=require(_0x60db('0x0'));var rimraf=require(_0x60db('0x1'));var zipdir=require(_0x60db('0x2'));var jsonpatch=require(_0x60db('0x3'));var rp=require(_0x60db('0x4'));var moment=require(_0x60db('0x5'));var BPromise=require(_0x60db('0x6'));var Mustache=require(_0x60db('0x7'));var util=require(_0x60db('0x8'));var path=require(_0x60db('0x9'));var sox=require(_0x60db('0xa'));var csv=require(_0x60db('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x60db('0xc'));var squel=require(_0x60db('0xd'));var crypto=require(_0x60db('0xe'));var jsforce=require(_0x60db('0xf'));var deskjs=require(_0x60db('0x10'));var toCsv=require(_0x60db('0xb'));var querystring=require(_0x60db('0x11'));var Papa=require(_0x60db('0x12'));var Redis=require(_0x60db('0x13'));var authService=require(_0x60db('0x14'));var qs=require(_0x60db('0x15'));var as=require(_0x60db('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x60db('0x17'))(_0x60db('0x18'));var utils=require(_0x60db('0x19'));var config=require(_0x60db('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x60db('0x1b'))['db'];function respondWithStatusCode(_0x8a09e9,_0x46f29f){_0x46f29f=_0x46f29f||0xcc;return function(_0x171d7f){if(_0x171d7f){return _0x8a09e9['sendStatus'](_0x46f29f);}return _0x8a09e9[_0x60db('0x1c')](_0x46f29f)[_0x60db('0x1d')]();};}function respondWithResult(_0x205790,_0x15564b){_0x15564b=_0x15564b||0xc8;return function(_0x14a98f){if(_0x14a98f){return _0x205790[_0x60db('0x1c')](_0x15564b)[_0x60db('0x1e')](_0x14a98f);}};}function respondWithFilteredResult(_0x2cfccf,_0x351617){return function(_0x4a15fc){if(_0x4a15fc){var _0x3ab0aa=typeof _0x351617[_0x60db('0x1f')]===_0x60db('0x20')&&typeof _0x351617[_0x60db('0x21')]===_0x60db('0x20');var _0x340823=_0x4a15fc['count'];var _0x1d1cab=_0x3ab0aa?0x0:_0x351617[_0x60db('0x1f')];var _0x3e7736=_0x3ab0aa?_0x4a15fc['count']:_0x351617[_0x60db('0x1f')]+_0x351617[_0x60db('0x21')];var _0x3e8019;if(_0x3e7736>=_0x340823){_0x3e7736=_0x340823;_0x3e8019=0xc8;}else{_0x3e8019=0xce;}_0x2cfccf[_0x60db('0x1c')](_0x3e8019);return _0x2cfccf[_0x60db('0x22')](_0x60db('0x23'),_0x1d1cab+'-'+_0x3e7736+'/'+_0x340823)[_0x60db('0x1e')](_0x4a15fc);}return null;};}function patchUpdates(_0x27a92f){return function(_0x1261c5){try{jsonpatch[_0x60db('0x24')](_0x1261c5,_0x27a92f,!![]);}catch(_0x1f2853){return BPromise[_0x60db('0x25')](_0x1f2853);}return _0x1261c5[_0x60db('0x26')]();};}function saveUpdates(_0x18e75d,_0x45e72c){return function(_0x967292){if(_0x967292){return _0x967292[_0x60db('0x27')](_0x18e75d)[_0x60db('0x28')](function(_0x153978){return _0x153978;});}return null;};}function removeEntity(_0x17eb3a,_0x3af089){return function(_0x3de27e){if(_0x3de27e){return _0x3de27e['destroy']()['then'](function(){_0x17eb3a['status'](0xcc)[_0x60db('0x1d')]();});}};}function handleEntityNotFound(_0x7d7441,_0x579e4f){return function(_0x2d8d66){if(!_0x2d8d66){_0x7d7441['sendStatus'](0x194);}return _0x2d8d66;};}function handleError(_0x4af901,_0x1b4fe7){_0x1b4fe7=_0x1b4fe7||0x1f4;return function(_0x22c0fb){logger[_0x60db('0x29')](_0x22c0fb[_0x60db('0x2a')]);if(_0x22c0fb[_0x60db('0x2b')]){delete _0x22c0fb[_0x60db('0x2b')];}_0x4af901[_0x60db('0x1c')](_0x1b4fe7)[_0x60db('0x2c')](_0x22c0fb);};}exports[_0x60db('0x2d')]=function(_0x1ff870,_0x333f7e){var _0x3c9558={},_0x32c47c={},_0xd36c6={'count':0x0,'rows':[]};var _0x1bf888=_[_0x60db('0x2e')](db[_0x60db('0x2f')]['rawAttributes'],function(_0x195b26){return{'name':_0x195b26['fieldName'],'type':_0x195b26[_0x60db('0x30')][_0x60db('0x31')]};});_0x32c47c[_0x60db('0x32')]=_[_0x60db('0x2e')](_0x1bf888,'name');_0x32c47c['query']=_['keys'](_0x1ff870[_0x60db('0x33')]);_0x32c47c[_0x60db('0x34')]=_[_0x60db('0x35')](_0x32c47c[_0x60db('0x32')],_0x32c47c['query']);_0x3c9558[_0x60db('0x36')]=_['intersection'](_0x32c47c[_0x60db('0x32')],qs[_0x60db('0x37')](_0x1ff870['query'][_0x60db('0x37')]));_0x3c9558[_0x60db('0x36')]=_0x3c9558['attributes'][_0x60db('0x38')]?_0x3c9558[_0x60db('0x36')]:_0x32c47c[_0x60db('0x32')];if(!_0x1ff870[_0x60db('0x33')][_0x60db('0x39')](_0x60db('0x3a'))){_0x3c9558[_0x60db('0x21')]=qs['limit'](_0x1ff870['query']['limit']);_0x3c9558[_0x60db('0x1f')]=qs[_0x60db('0x1f')](_0x1ff870[_0x60db('0x33')][_0x60db('0x1f')]);}_0x3c9558[_0x60db('0x3b')]=qs[_0x60db('0x3c')](_0x1ff870[_0x60db('0x33')]['sort']);_0x3c9558[_0x60db('0x3d')]=qs[_0x60db('0x34')](_[_0x60db('0x3e')](_0x1ff870[_0x60db('0x33')],_0x32c47c[_0x60db('0x34')]),_0x1bf888);if(_0x1ff870[_0x60db('0x33')][_0x60db('0x3f')]){_0x3c9558['where']=_[_0x60db('0x40')](_0x3c9558[_0x60db('0x3d')],{'$or':_[_0x60db('0x2e')](_0x1bf888,function(_0x499ab8){if(_0x499ab8[_0x60db('0x30')]!==_0x60db('0x41')){var _0x3190a6={};_0x3190a6[_0x499ab8['name']]={'$like':'%'+_0x1ff870['query'][_0x60db('0x3f')]+'%'};return _0x3190a6;}})});}_0x3c9558=_['merge']({},_0x3c9558,_0x1ff870[_0x60db('0x42')]);var _0x38f531={'where':_0x3c9558[_0x60db('0x3d')]};return db['UserProfileSection']['count'](_0x38f531)[_0x60db('0x28')](function(_0x18649b){_0xd36c6[_0x60db('0x43')]=_0x18649b;if(_0x1ff870['query']['includeAll']){_0x3c9558[_0x60db('0x44')]=[{'all':!![]}];}return db[_0x60db('0x2f')][_0x60db('0x45')](_0x3c9558);})[_0x60db('0x28')](function(_0x3f2641){_0xd36c6[_0x60db('0x46')]=_0x3f2641;return _0xd36c6;})['then'](respondWithFilteredResult(_0x333f7e,_0x3c9558))[_0x60db('0x47')](handleError(_0x333f7e,null));};exports[_0x60db('0x48')]=function(_0x5b280a,_0x544c93){var _0x2e0187={'raw':![],'where':{'id':_0x5b280a[_0x60db('0x49')]['id']}},_0x451efe={};_0x451efe['model']=_['keys'](db['UserProfileSection'][_0x60db('0x4a')]);_0x451efe[_0x60db('0x33')]=_[_0x60db('0x4b')](_0x5b280a[_0x60db('0x33')]);_0x451efe[_0x60db('0x34')]=_[_0x60db('0x35')](_0x451efe['model'],_0x451efe[_0x60db('0x33')]);_0x2e0187['attributes']=_['intersection'](_0x451efe[_0x60db('0x32')],qs['fields'](_0x5b280a['query'][_0x60db('0x37')]));_0x2e0187[_0x60db('0x36')]=_0x2e0187[_0x60db('0x36')][_0x60db('0x38')]?_0x2e0187[_0x60db('0x36')]:_0x451efe[_0x60db('0x32')];if(_0x5b280a[_0x60db('0x33')][_0x60db('0x4c')]){_0x2e0187[_0x60db('0x44')]=[{'all':!![]}];}_0x2e0187=_[_0x60db('0x40')]({},_0x2e0187,_0x5b280a[_0x60db('0x42')]);return db['UserProfileSection']['find'](_0x2e0187)[_0x60db('0x28')](handleEntityNotFound(_0x544c93,null))[_0x60db('0x28')](respondWithResult(_0x544c93,null))['catch'](handleError(_0x544c93,null));};exports[_0x60db('0x4d')]=function(_0x1c92cc,_0x28d5a4){return db[_0x60db('0x2f')][_0x60db('0x4d')](_0x1c92cc[_0x60db('0x4e')],{})[_0x60db('0x28')](respondWithResult(_0x28d5a4,0xc9))[_0x60db('0x47')](handleError(_0x28d5a4,null));};exports[_0x60db('0x27')]=function(_0x2fbd3d,_0x12f1c6){if(_0x2fbd3d[_0x60db('0x4e')]['id']){delete _0x2fbd3d[_0x60db('0x4e')]['id'];}return db['UserProfileSection']['find']({'where':{'id':_0x2fbd3d[_0x60db('0x49')]['id']}})['then'](handleEntityNotFound(_0x12f1c6,null))['then'](saveUpdates(_0x2fbd3d[_0x60db('0x4e')],null))[_0x60db('0x28')](respondWithResult(_0x12f1c6,null))['catch'](handleError(_0x12f1c6,null));};exports[_0x60db('0x4f')]=function(_0x509d16,_0x457761){return db['UserProfileSection'][_0x60db('0x50')]({'where':{'id':_0x509d16[_0x60db('0x49')]['id']}})['then'](handleEntityNotFound(_0x457761,null))['then'](removeEntity(_0x457761,null))[_0x60db('0x47')](handleError(_0x457761,null));};exports['describe']=function(_0x4b6f1a,_0x3338d0){return db[_0x60db('0x2f')][_0x60db('0x51')]()['then'](respondWithResult(_0x3338d0,null))['catch'](handleError(_0x3338d0,null));};
\ No newline at end of file
index 960f062..c753ba5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdc3=['user_profile_has_sections','compositeIndex','sectionId','userProfileId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0xcf338f,_0x26e3bb){var _0x109064=function(_0x177b7a){while(--_0x177b7a){_0xcf338f['push'](_0xcf338f['shift']());}};_0x109064(++_0x26e3bb);}(_0xfdc3,0x66));var _0x3fdc=function(_0xf92e28,_0x565ba1){_0xf92e28=_0xf92e28-0x0;var _0x18e934=_0xfdc3[_0xf92e28];return _0x18e934;};'use strict';var _=require(_0x3fdc('0x0'));var util=require(_0x3fdc('0x1'));var logger=require(_0x3fdc('0x2'))('api');var moment=require(_0x3fdc('0x3'));var BPromise=require(_0x3fdc('0x4'));var rp=require(_0x3fdc('0x5'));var fs=require('fs');var path=require(_0x3fdc('0x6'));var rimraf=require(_0x3fdc('0x7'));var config=require(_0x3fdc('0x8'));var attributes=require('./userProfileSection.attributes');module[_0x3fdc('0x9')]=function(_0x113939,_0x3f0cee){return _0x113939['define']('UserProfileSection',attributes,{'tableName':_0x3fdc('0xa'),'paranoid':![],'indexes':[{'name':_0x3fdc('0xb'),'fields':[_0x3fdc('0xc'),_0x3fdc('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x48e7=['../../config/environment','./userProfileSection.attributes','exports','define','UserProfileSection','compositeIndex','userProfileId','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x23687f,_0x39ba06){var _0x1e8fc1=function(_0x17e18f){while(--_0x17e18f){_0x23687f['push'](_0x23687f['shift']());}};_0x1e8fc1(++_0x39ba06);}(_0x48e7,0x1db));var _0x748e=function(_0x24e5b6,_0x5e07d0){_0x24e5b6=_0x24e5b6-0x0;var _0x422ad9=_0x48e7[_0x24e5b6];return _0x422ad9;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x748e('0x0'))(_0x748e('0x1'));var moment=require(_0x748e('0x2'));var BPromise=require(_0x748e('0x3'));var rp=require(_0x748e('0x4'));var fs=require('fs');var path=require(_0x748e('0x5'));var rimraf=require('rimraf');var config=require(_0x748e('0x6'));var attributes=require(_0x748e('0x7'));module[_0x748e('0x8')]=function(_0x5d51aa,_0x3f21e7){return _0x5d51aa[_0x748e('0x9')](_0x748e('0xa'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':_0x748e('0xb'),'fields':['sectionId',_0x748e('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index d1d3e70..d916706 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b01=['debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','UserProfileSection,\x20%s,\x20%s','request\x20sent'];(function(_0x422500,_0x573212){var _0x5aa179=function(_0x57a064){while(--_0x57a064){_0x422500['push'](_0x422500['shift']());}};_0x5aa179(++_0x573212);}(_0x3b01,0x1aa));var _0x13b0=function(_0x3984b6,_0x16ac21){_0x3984b6=_0x3984b6-0x0;var _0x4da508=_0x3b01[_0x3984b6];return _0x4da508;};'use strict';var _=require(_0x13b0('0x0'));var util=require('util');var moment=require(_0x13b0('0x1'));var BPromise=require(_0x13b0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x13b0('0x3'))['db'];var utils=require(_0x13b0('0x4'));var logger=require(_0x13b0('0x5'))(_0x13b0('0x6'));var config=require('../../config/environment');var jayson=require(_0x13b0('0x7'));var client=jayson[_0x13b0('0x8')][_0x13b0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b46d2,_0x3e9e7e,_0x4086e0){return new BPromise(function(_0x45c225,_0x1feec0){return client[_0x13b0('0xa')](_0x5b46d2,_0x4086e0)[_0x13b0('0xb')](function(_0x1d22fc){logger['info'](_0x13b0('0xc'),_0x3e9e7e,_0x13b0('0xd'));logger[_0x13b0('0xe')](_0x13b0('0xf'),_0x3e9e7e,_0x13b0('0xd'),JSON[_0x13b0('0x10')](_0x1d22fc));if(_0x1d22fc[_0x13b0('0x11')]){if(_0x1d22fc['error'][_0x13b0('0x12')]===0x1f4){logger[_0x13b0('0x11')](_0x13b0('0xc'),_0x3e9e7e,_0x1d22fc[_0x13b0('0x11')][_0x13b0('0x13')]);return _0x1feec0(_0x1d22fc[_0x13b0('0x11')]['message']);}logger['error'](_0x13b0('0xc'),_0x3e9e7e,_0x1d22fc['error'][_0x13b0('0x13')]);return _0x45c225(_0x1d22fc['error'][_0x13b0('0x13')]);}else{logger[_0x13b0('0x14')](_0x13b0('0xc'),_0x3e9e7e,_0x13b0('0xd'));_0x45c225(_0x1d22fc[_0x13b0('0x15')]['message']);}})['catch'](function(_0x5c49e6){logger['error'](_0x13b0('0xc'),_0x3e9e7e,_0x5c49e6);_0x1feec0(_0x5c49e6);});});}
\ No newline at end of file
+var _0x8bff=['http','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','jayson/promise','client'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8bff,0x1d2));var _0xf8bf=function(_0x34f2f0,_0x1fe946){_0x34f2f0=_0x34f2f0-0x0;var _0x4dd55d=_0x8bff[_0x34f2f0];return _0x4dd55d;};'use strict';var _=require(_0xf8bf('0x0'));var util=require(_0xf8bf('0x1'));var moment=require(_0xf8bf('0x2'));var BPromise=require(_0xf8bf('0x3'));var rs=require(_0xf8bf('0x4'));var fs=require('fs');var Redis=require(_0xf8bf('0x5'));var db=require(_0xf8bf('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xf8bf('0x7'));var client=jayson[_0xf8bf('0x8')][_0xf8bf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4733be,_0x57d27b,_0x34c507){return new BPromise(function(_0x500875,_0x1885b8){return client['request'](_0x4733be,_0x34c507)['then'](function(_0xc03a13){logger[_0xf8bf('0xa')](_0xf8bf('0xb'),_0x57d27b,_0xf8bf('0xc'));logger[_0xf8bf('0xd')](_0xf8bf('0xe'),_0x57d27b,_0xf8bf('0xc'),JSON['stringify'](_0xc03a13));if(_0xc03a13[_0xf8bf('0xf')]){if(_0xc03a13['error'][_0xf8bf('0x10')]===0x1f4){logger[_0xf8bf('0xf')](_0xf8bf('0xb'),_0x57d27b,_0xc03a13[_0xf8bf('0xf')]['message']);return _0x1885b8(_0xc03a13['error'][_0xf8bf('0x11')]);}logger[_0xf8bf('0xf')](_0xf8bf('0xb'),_0x57d27b,_0xc03a13[_0xf8bf('0xf')][_0xf8bf('0x11')]);return _0x500875(_0xc03a13['error'][_0xf8bf('0x11')]);}else{logger[_0xf8bf('0xa')](_0xf8bf('0xb'),_0x57d27b,_0xf8bf('0xc'));_0x500875(_0xc03a13[_0xf8bf('0x12')]['message']);}})['catch'](function(_0x2f6b2e){logger[_0xf8bf('0xf')]('UserProfileSection,\x20%s,\x20%s',_0x57d27b,_0x2f6b2e);_0x1885b8(_0x2f6b2e);});});}
\ No newline at end of file
index f3d5171..4d1c826 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x314079,_0x2b98a0){var _0x423351=function(_0x501dcc){while(--_0x501dcc){_0x314079['push'](_0x314079['shift']());}};_0x423351(++_0x2b98a0);}(_0x9c44,0x178));var _0x49c4=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x9c44[_0x13e741];return _0x3f8bb3;};'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
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x40167d,_0x39ed26){var _0x299086=function(_0x149b07){while(--_0x149b07){_0x40167d['push'](_0x40167d['shift']());}};_0x299086(++_0x39ed26);}(_0xedd9,0xfc));var _0x9edd=function(_0xf8c29d,_0x1924b9){_0xf8c29d=_0xf8c29d-0x0;var _0x1aa975=_0xedd9[_0xf8c29d];return _0x1aa975;};'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
index 2077d25..6f903ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5692=['exports','INTEGER','sequelize'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x5692,0xe0));var _0x2569=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x5692[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x2569('0x0'));module[_0x2569('0x1')]={'penalty':{'type':Sequelize[_0x2569('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xaf07=['sequelize','exports','INTEGER'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0xaf07,0x117));var _0x7af0=function(_0x21526d,_0x3fc4b7){_0x21526d=_0x21526d-0x0;var _0x4b7fc3=_0xaf07[_0x21526d];return _0x4b7fc3;};'use strict';var Sequelize=require(_0x7af0('0x0'));module[_0x7af0('0x1')]={'penalty':{'type':Sequelize[_0x7af0('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index e837b90..cbc1850 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x781d=['rimraf','../../config/environment','./userSmsQueue.attributes','exports','UserSmsQueue','user_has_sms_queues','lodash','util','moment','bluebird','request-promise','path'];(function(_0x2785bb,_0xff0ad){var _0x46495b=function(_0x638104){while(--_0x638104){_0x2785bb['push'](_0x2785bb['shift']());}};_0x46495b(++_0xff0ad);}(_0x781d,0x14a));var _0xd781=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x781d[_0x2d7f0e];return _0x110b07;};'use strict';var _=require(_0xd781('0x0'));var util=require(_0xd781('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xd781('0x2'));var BPromise=require(_0xd781('0x3'));var rp=require(_0xd781('0x4'));var fs=require('fs');var path=require(_0xd781('0x5'));var rimraf=require(_0xd781('0x6'));var config=require(_0xd781('0x7'));var attributes=require(_0xd781('0x8'));module[_0xd781('0x9')]=function(_0x830b,_0x2f98ee){return _0x830b['define'](_0xd781('0xa'),attributes,{'tableName':_0xd781('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x964b=['util','api','moment','bluebird','rimraf','./userSmsQueue.attributes','exports','define','UserSmsQueue','user_has_sms_queues','lodash'];(function(_0x14f89e,_0x139fce){var _0x26092d=function(_0x2bdc20){while(--_0x2bdc20){_0x14f89e['push'](_0x14f89e['shift']());}};_0x26092d(++_0x139fce);}(_0x964b,0x112));var _0xb964=function(_0x40e1b7,_0x49c7dd){_0x40e1b7=_0x40e1b7-0x0;var _0x57395d=_0x964b[_0x40e1b7];return _0x57395d;};'use strict';var _=require(_0xb964('0x0'));var util=require(_0xb964('0x1'));var logger=require('../../config/logger')(_0xb964('0x2'));var moment=require(_0xb964('0x3'));var BPromise=require(_0xb964('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb964('0x5'));var config=require('../../config/environment');var attributes=require(_0xb964('0x6'));module[_0xb964('0x7')]=function(_0xba9f19,_0x11a0c1){return _0xba9f19[_0xb964('0x8')](_0xb964('0x9'),attributes,{'tableName':_0xb964('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7186932..b86cc2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe854=['../../config/logger','../../config/environment','client','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x313de1,_0xc77590){var _0x13c571=function(_0x23b196){while(--_0x23b196){_0x313de1['push'](_0x313de1['shift']());}};_0x13c571(++_0xc77590);}(_0xe854,0x12d));var _0x4e85=function(_0x17e9fa,_0x266b4d){_0x17e9fa=_0x17e9fa-0x0;var _0x594f93=_0xe854[_0x17e9fa];return _0x594f93;};'use strict';var _=require(_0x4e85('0x0'));var util=require(_0x4e85('0x1'));var moment=require(_0x4e85('0x2'));var BPromise=require('bluebird');var rs=require(_0x4e85('0x3'));var fs=require('fs');var Redis=require(_0x4e85('0x4'));var db=require(_0x4e85('0x5'))['db'];var utils=require(_0x4e85('0x6'));var logger=require(_0x4e85('0x7'))('rpc');var config=require(_0x4e85('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x4e85('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x38a663,_0x4ea93c,_0x2fe377){return new BPromise(function(_0x261959,_0x5ee22c){return client[_0x4e85('0xa')](_0x38a663,_0x2fe377)[_0x4e85('0xb')](function(_0x38ec6c){logger[_0x4e85('0xc')](_0x4e85('0xd'),_0x4ea93c,_0x4e85('0xe'));logger[_0x4e85('0xf')](_0x4e85('0x10'),_0x4ea93c,'request\x20sent',JSON[_0x4e85('0x11')](_0x38ec6c));if(_0x38ec6c[_0x4e85('0x12')]){if(_0x38ec6c[_0x4e85('0x12')][_0x4e85('0x13')]===0x1f4){logger[_0x4e85('0x12')](_0x4e85('0xd'),_0x4ea93c,_0x38ec6c['error'][_0x4e85('0x14')]);return _0x5ee22c(_0x38ec6c[_0x4e85('0x12')]['message']);}logger[_0x4e85('0x12')](_0x4e85('0xd'),_0x4ea93c,_0x38ec6c[_0x4e85('0x12')][_0x4e85('0x14')]);return _0x261959(_0x38ec6c['error'][_0x4e85('0x14')]);}else{logger[_0x4e85('0xc')](_0x4e85('0xd'),_0x4ea93c,_0x4e85('0xe'));_0x261959(_0x38ec6c['result'][_0x4e85('0x14')]);}})[_0x4e85('0x15')](function(_0x4be91f){logger[_0x4e85('0x12')](_0x4e85('0xd'),_0x4ea93c,_0x4be91f);_0x5ee22c(_0x4be91f);});});}
\ No newline at end of file
+var _0xca71=['info','UserSmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','UserSmsQueue,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','client','http','request'];(function(_0x37d86b,_0x4a4334){var _0x14847d=function(_0x591420){while(--_0x591420){_0x37d86b['push'](_0x37d86b['shift']());}};_0x14847d(++_0x4a4334);}(_0xca71,0xf1));var _0x1ca7=function(_0xa7fb1f,_0x1c49bc){_0xa7fb1f=_0xa7fb1f-0x0;var _0x32e057=_0xca71[_0xa7fb1f];return _0x32e057;};'use strict';var _=require(_0x1ca7('0x0'));var util=require(_0x1ca7('0x1'));var moment=require(_0x1ca7('0x2'));var BPromise=require(_0x1ca7('0x3'));var rs=require(_0x1ca7('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1ca7('0x5'));var logger=require('../../config/logger')(_0x1ca7('0x6'));var config=require(_0x1ca7('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x1ca7('0x8')][_0x1ca7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3689b4,_0x532ae0,_0x526320){return new BPromise(function(_0x429f60,_0x18c534){return client[_0x1ca7('0xa')](_0x3689b4,_0x526320)['then'](function(_0x58ea23){logger[_0x1ca7('0xb')]('UserSmsQueue,\x20%s,\x20%s',_0x532ae0,'request\x20sent');logger['debug'](_0x1ca7('0xc'),_0x532ae0,_0x1ca7('0xd'),JSON[_0x1ca7('0xe')](_0x58ea23));if(_0x58ea23[_0x1ca7('0xf')]){if(_0x58ea23[_0x1ca7('0xf')][_0x1ca7('0x10')]===0x1f4){logger[_0x1ca7('0xf')](_0x1ca7('0x11'),_0x532ae0,_0x58ea23[_0x1ca7('0xf')][_0x1ca7('0x12')]);return _0x18c534(_0x58ea23[_0x1ca7('0xf')][_0x1ca7('0x12')]);}logger[_0x1ca7('0xf')](_0x1ca7('0x11'),_0x532ae0,_0x58ea23['error']['message']);return _0x429f60(_0x58ea23[_0x1ca7('0xf')][_0x1ca7('0x12')]);}else{logger[_0x1ca7('0xb')](_0x1ca7('0x11'),_0x532ae0,'request\x20sent');_0x429f60(_0x58ea23[_0x1ca7('0x13')][_0x1ca7('0x12')]);}})[_0x1ca7('0x14')](function(_0x4a9203){logger[_0x1ca7('0xf')](_0x1ca7('0x11'),_0x532ae0,_0x4a9203);_0x18c534(_0x4a9203);});});}
\ No newline at end of file
diff --git a/server/api/userVoicePrefix/userVoicePrefix.attributes.js b/server/api/userVoicePrefix/userVoicePrefix.attributes.js
deleted file mode 100644 (file)
index 06b15e6..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0x36af=['INTEGER','sequelize','exports'];(function(_0x4d7a20,_0x1092ef){var _0x10cb39=function(_0x4f3c64){while(--_0x4f3c64){_0x4d7a20['push'](_0x4d7a20['shift']());}};_0x10cb39(++_0x1092ef);}(_0x36af,0xa0));var _0xf36a=function(_0x48b0ae,_0x47ba2f){_0x48b0ae=_0x48b0ae-0x0;var _0x1cead2=_0x36af[_0x48b0ae];return _0x1cead2;};'use strict';var Sequelize=require(_0xf36a('0x0'));module[_0xf36a('0x1')]={'UserId':{'type':Sequelize[_0xf36a('0x2')]},'VoicePrefixId':{'type':Sequelize[_0xf36a('0x2')]}};
\ No newline at end of file
diff --git a/server/api/userVoicePrefix/userVoicePrefix.model.js b/server/api/userVoicePrefix/userVoicePrefix.model.js
deleted file mode 100644 (file)
index b0955e6..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * 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(_0x53cc6,_0x1e251f){var _0x8320d0=function(_0x5d66c1){while(--_0x5d66c1){_0x53cc6['push'](_0x53cc6['shift']());}};_0x8320d0(++_0x1e251f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'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 522c988..d18be04 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(_0x53f4a4,_0xb07de7){var _0x2aa5e7=function(_0x3b0350){while(--_0x3b0350){_0x53f4a4['push'](_0x53f4a4['shift']());}};_0x2aa5e7(++_0xb07de7);}(_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(_0x32ee50,_0x564493){var _0x12a1b3=function(_0x3d6bc8){while(--_0x3d6bc8){_0x32ee50['push'](_0x32ee50['shift']());}};_0x12a1b3(++_0x564493);}(_0x9c44,0x178));var _0x49c4=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x9c44[_0x2dea24];return _0x309d58;};'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 dcaa198..756cf24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcafc=['exports','sequelize'];(function(_0x4d5205,_0x223e9e){var _0x16acbe=function(_0x435cef){while(--_0x435cef){_0x4d5205['push'](_0x4d5205['shift']());}};_0x16acbe(++_0x223e9e);}(_0xcafc,0x77));var _0xccaf=function(_0xfe8aec,_0x35ef1d){_0xfe8aec=_0xfe8aec-0x0;var _0xfda47c=_0xcafc[_0xfe8aec];return _0xfda47c;};'use strict';var Sequelize=require(_0xccaf('0x0'));module[_0xccaf('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xcc05=['exports','sequelize'];(function(_0x3f25bb,_0x59eddd){var _0x5ae3a0=function(_0x413f56){while(--_0x413f56){_0x3f25bb['push'](_0x3f25bb['shift']());}};_0x5ae3a0(++_0x59eddd);}(_0xcc05,0x95));var _0x5cc0=function(_0x5e9e6a,_0x216a42){_0x5e9e6a=_0x5e9e6a-0x0;var _0x1d942d=_0xcc05[_0x5e9e6a];return _0x1d942d;};'use strict';var Sequelize=require(_0x5cc0('0x0'));module[_0x5cc0('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index d92090d..26760cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefe2=['util','api','moment','bluebird','request-promise','path','rimraf','exports','UserVoiceQueue','user_has_voice_queues'];(function(_0x1cfb08,_0x2c9b9f){var _0xc4e9bd=function(_0x576758){while(--_0x576758){_0x1cfb08['push'](_0x1cfb08['shift']());}};_0xc4e9bd(++_0x2c9b9f);}(_0xefe2,0x172));var _0x2efe=function(_0x7b57a9,_0x42a911){_0x7b57a9=_0x7b57a9-0x0;var _0x39f049=_0xefe2[_0x7b57a9];return _0x39f049;};'use strict';var _=require('lodash');var util=require(_0x2efe('0x0'));var logger=require('../../config/logger')(_0x2efe('0x1'));var moment=require(_0x2efe('0x2'));var BPromise=require(_0x2efe('0x3'));var rp=require(_0x2efe('0x4'));var fs=require('fs');var path=require(_0x2efe('0x5'));var rimraf=require(_0x2efe('0x6'));var config=require('../../config/environment');var attributes=require('./userVoiceQueue.attributes');module[_0x2efe('0x7')]=function(_0x1621cf,_0x5c0c54){return _0x1621cf['define'](_0x2efe('0x8'),attributes,{'tableName':_0x2efe('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4544=['user_has_voice_queues','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','UserVoiceQueue'];(function(_0xfb6763,_0x1791d2){var _0x526660=function(_0x3d1654){while(--_0x3d1654){_0xfb6763['push'](_0xfb6763['shift']());}};_0x526660(++_0x1791d2);}(_0x4544,0x9d));var _0x4454=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x4544[_0x57b54c];return _0x59cc19;};'use strict';var _=require('lodash');var util=require(_0x4454('0x0'));var logger=require(_0x4454('0x1'))(_0x4454('0x2'));var moment=require(_0x4454('0x3'));var BPromise=require(_0x4454('0x4'));var rp=require(_0x4454('0x5'));var fs=require('fs');var path=require(_0x4454('0x6'));var rimraf=require('rimraf');var config=require(_0x4454('0x7'));var attributes=require('./userVoiceQueue.attributes');module[_0x4454('0x8')]=function(_0x16a16e,_0x3fda26){return _0x16a16e[_0x4454('0x9')](_0x4454('0xa'),attributes,{'tableName':_0x4454('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 76a8d71..7d74223 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4228=['request\x20sent','debug','error','message','result','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','UserVoiceQueue,\x20%s,\x20%s'];(function(_0x227a0f,_0x376760){var _0x3544a7=function(_0x367555){while(--_0x367555){_0x227a0f['push'](_0x227a0f['shift']());}};_0x3544a7(++_0x376760);}(_0x4228,0x181));var _0x8422=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4228[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x8422('0x0'));var moment=require(_0x8422('0x1'));var BPromise=require(_0x8422('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8422('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x8422('0x4'));var logger=require(_0x8422('0x5'))(_0x8422('0x6'));var config=require(_0x8422('0x7'));var jayson=require(_0x8422('0x8'));var client=jayson[_0x8422('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5aa081,_0x3b33a6,_0x1403bf){return new BPromise(function(_0x28f31d,_0x35eba8){return client[_0x8422('0xa')](_0x5aa081,_0x1403bf)[_0x8422('0xb')](function(_0x4a678f){logger[_0x8422('0xc')](_0x8422('0xd'),_0x3b33a6,_0x8422('0xe'));logger[_0x8422('0xf')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x3b33a6,_0x8422('0xe'),JSON['stringify'](_0x4a678f));if(_0x4a678f[_0x8422('0x10')]){if(_0x4a678f[_0x8422('0x10')]['code']===0x1f4){logger[_0x8422('0x10')]('UserVoiceQueue,\x20%s,\x20%s',_0x3b33a6,_0x4a678f[_0x8422('0x10')][_0x8422('0x11')]);return _0x35eba8(_0x4a678f[_0x8422('0x10')][_0x8422('0x11')]);}logger[_0x8422('0x10')](_0x8422('0xd'),_0x3b33a6,_0x4a678f['error'][_0x8422('0x11')]);return _0x28f31d(_0x4a678f[_0x8422('0x10')]['message']);}else{logger[_0x8422('0xc')](_0x8422('0xd'),_0x3b33a6,_0x8422('0xe'));_0x28f31d(_0x4a678f[_0x8422('0x12')]['message']);}})['catch'](function(_0x55ee67){logger[_0x8422('0x10')](_0x8422('0xd'),_0x3b33a6,_0x55ee67);_0x35eba8(_0x55ee67);});});}
\ No newline at end of file
+var _0x8647=['stringify','error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8647,0x176));var _0x7864=function(_0x11e24e,_0x2b8bb1){_0x11e24e=_0x11e24e-0x0;var _0x2caedc=_0x8647[_0x11e24e];return _0x2caedc;};'use strict';var _=require(_0x7864('0x0'));var util=require('util');var moment=require(_0x7864('0x1'));var BPromise=require('bluebird');var rs=require(_0x7864('0x2'));var fs=require('fs');var Redis=require(_0x7864('0x3'));var db=require(_0x7864('0x4'))['db'];var utils=require(_0x7864('0x5'));var logger=require(_0x7864('0x6'))(_0x7864('0x7'));var config=require(_0x7864('0x8'));var jayson=require(_0x7864('0x9'));var client=jayson[_0x7864('0xa')][_0x7864('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1cdcad,_0x93e1bf,_0x4b787c){return new BPromise(function(_0x398b7b,_0x48f3e9){return client[_0x7864('0xc')](_0x1cdcad,_0x4b787c)['then'](function(_0x10e605){logger['info'](_0x7864('0xd'),_0x93e1bf,_0x7864('0xe'));logger[_0x7864('0xf')](_0x7864('0x10'),_0x93e1bf,_0x7864('0xe'),JSON[_0x7864('0x11')](_0x10e605));if(_0x10e605[_0x7864('0x12')]){if(_0x10e605['error'][_0x7864('0x13')]===0x1f4){logger[_0x7864('0x12')](_0x7864('0xd'),_0x93e1bf,_0x10e605['error'][_0x7864('0x14')]);return _0x48f3e9(_0x10e605[_0x7864('0x12')]['message']);}logger[_0x7864('0x12')](_0x7864('0xd'),_0x93e1bf,_0x10e605[_0x7864('0x12')][_0x7864('0x14')]);return _0x398b7b(_0x10e605[_0x7864('0x12')][_0x7864('0x14')]);}else{logger['info']('UserVoiceQueue,\x20%s,\x20%s',_0x93e1bf,_0x7864('0xe'));_0x398b7b(_0x10e605[_0x7864('0x15')][_0x7864('0x14')]);}})[_0x7864('0x16')](function(_0x5290bd){logger['error'](_0x7864('0xd'),_0x93e1bf,_0x5290bd);_0x48f3e9(_0x5290bd);});});}
\ No newline at end of file
index 940805b..0255783 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(_0x1b7085,_0xd1a047){var _0x73fa64=function(_0x5a9bf9){while(--_0x5a9bf9){_0x1b7085['push'](_0x1b7085['shift']());}};_0x73fa64(++_0xd1a047);}(_0xe706,0xa3));var _0x6e70=function(_0x149b25,_0x2bb415){_0x149b25=_0x149b25-0x0;var _0x40b742=_0xe706[_0x149b25];return _0x40b742;};'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 _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x3f3ad8,_0x4bc014){var _0x3a2667=function(_0x4fe7e0){while(--_0x4fe7e0){_0x3f3ad8['push'](_0x3f3ad8['shift']());}};_0x3a2667(++_0x4bc014);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'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 8695226..4585ef0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad24=['Required\x20by\x20Asterisk','sequelize','INTEGER','STRING','queue_interface'];(function(_0x2613e4,_0x40ee97){var _0x36807f=function(_0x3c6780){while(--_0x3c6780){_0x2613e4['push'](_0x2613e4['shift']());}};_0x36807f(++_0x40ee97);}(_0xad24,0x1e6));var _0x4ad2=function(_0x195bd9,_0x5f3c70){_0x195bd9=_0x195bd9-0x0;var _0x5ecc05=_0xad24[_0x195bd9];return _0x5ecc05;};'use strict';var Sequelize=require(_0x4ad2('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x4ad2('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0x4ad2('0x2')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize[_0x4ad2('0x2')],'allowNull':![],'unique':_0x4ad2('0x3'),'comment':_0x4ad2('0x4')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'allowNull':![]},'interface':{'type':Sequelize[_0x4ad2('0x2')],'allowNull':![],'unique':'queue_interface','comment':_0x4ad2('0x4')},'penalty':{'type':Sequelize[_0x4ad2('0x1')](0xb),'defaultValue':0x0,'comment':_0x4ad2('0x4')},'paused':{'type':Sequelize[_0x4ad2('0x1')](0xb),'defaultValue':0x0,'comment':_0x4ad2('0x4')}};
\ No newline at end of file
+var _0x74d8=['INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface'];(function(_0x19a2ed,_0x5cea0c){var _0x3fb209=function(_0x32dcec){while(--_0x32dcec){_0x19a2ed['push'](_0x19a2ed['shift']());}};_0x3fb209(++_0x5cea0c);}(_0x74d8,0xd8));var _0x874d=function(_0x3d8417,_0x595482){_0x3d8417=_0x3d8417-0x0;var _0x3d0ccb=_0x74d8[_0x3d8417];return _0x3d0ccb;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x874d('0x0')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x874d('0x1')},'membername':{'type':Sequelize[_0x874d('0x2')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0x874d('0x0')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x874d('0x2')],'allowNull':![],'unique':'queue_interface','comment':_0x874d('0x1')},'VoiceQueueId':{'type':Sequelize[_0x874d('0x0')],'allowNull':![]},'interface':{'type':Sequelize[_0x874d('0x2')],'allowNull':![],'unique':_0x874d('0x3'),'comment':_0x874d('0x1')},'penalty':{'type':Sequelize[_0x874d('0x0')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize[_0x874d('0x0')](0xb),'defaultValue':0x0,'comment':_0x874d('0x1')}};
\ No newline at end of file
index a731267..417bd07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ca7=['events','../../mysqldb','UserVoiceQueueRt','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x2dc2bf,_0x445916){var _0x5d1be8=function(_0x9577bd){while(--_0x9577bd){_0x2dc2bf['push'](_0x2dc2bf['shift']());}};_0x5d1be8(++_0x445916);}(_0x9ca7,0x172));var _0x79ca=function(_0x188597,_0x57fb18){_0x188597=_0x188597-0x0;var _0x2c77c7=_0x9ca7[_0x188597];return _0x2c77c7;};'use strict';var EventEmitter=require(_0x79ca('0x0'));var UserVoiceQueueRt=require(_0x79ca('0x1'))['db'][_0x79ca('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x79ca('0x3')](0x0);var events={'afterCreate':_0x79ca('0x4'),'afterUpdate':_0x79ca('0x5'),'afterDestroy':_0x79ca('0x6')};function emitEvent(_0x18f679){return function(_0x1ad305,_0x22e612,_0x4402da){UserVoiceQueueRtEvents[_0x79ca('0x7')](_0x18f679+':'+_0x1ad305['id'],_0x1ad305);UserVoiceQueueRtEvents['emit'](_0x18f679,_0x1ad305);_0x4402da(null);};}for(var e in events){if(events[_0x79ca('0x8')](e)){var event=events[e];UserVoiceQueueRt[_0x79ca('0x9')](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x81ca=['events','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x4aa78a,_0x15c09c){var _0x444b3b=function(_0x7c30bb){while(--_0x7c30bb){_0x4aa78a['push'](_0x4aa78a['shift']());}};_0x444b3b(++_0x15c09c);}(_0x81ca,0x1e8));var _0xa81c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x81ca[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xa81c('0x0'));var UserVoiceQueueRt=require('../../mysqldb')['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa81c('0x1'),'afterUpdate':_0xa81c('0x2'),'afterDestroy':_0xa81c('0x3')};function emitEvent(_0x15d5d9){return function(_0x5671d2,_0x1d6a30,_0x533ca6){UserVoiceQueueRtEvents[_0xa81c('0x4')](_0x15d5d9+':'+_0x5671d2['id'],_0x5671d2);UserVoiceQueueRtEvents[_0xa81c('0x4')](_0x15d5d9,_0x5671d2);_0x533ca6(null);};}for(var e in events){if(events[_0xa81c('0x5')](e)){var event=events[e];UserVoiceQueueRt[_0xa81c('0x6')](e,emitEvent(event));}}module[_0xa81c('0x7')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 6a5f4bd..e44fe91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffda=['rimraf','../../config/environment','exports','define','UserVoiceQueueRt','user_has_voice_queues_rt','util','api','moment','bluebird','request-promise','path'];(function(_0x13f1ba,_0x3f170f){var _0x3f7318=function(_0x261718){while(--_0x261718){_0x13f1ba['push'](_0x13f1ba['shift']());}};_0x3f7318(++_0x3f170f);}(_0xffda,0xf6));var _0xaffd=function(_0x1d09a1,_0x10e074){_0x1d09a1=_0x1d09a1-0x0;var _0x33c73f=_0xffda[_0x1d09a1];return _0x33c73f;};'use strict';var _=require('lodash');var util=require(_0xaffd('0x0'));var logger=require('../../config/logger')(_0xaffd('0x1'));var moment=require(_0xaffd('0x2'));var BPromise=require(_0xaffd('0x3'));var rp=require(_0xaffd('0x4'));var fs=require('fs');var path=require(_0xaffd('0x5'));var rimraf=require(_0xaffd('0x6'));var config=require(_0xaffd('0x7'));var attributes=require('./userVoiceQueueRt.attributes');module[_0xaffd('0x8')]=function(_0x47a9f6,_0x5c0f30){return _0x47a9f6[_0xaffd('0x9')](_0xaffd('0xa'),attributes,{'tableName':_0xaffd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3a18=['api','bluebird','path','rimraf','./userVoiceQueueRt.attributes','exports','user_has_voice_queues_rt','lodash','util','../../config/logger'];(function(_0x1231c5,_0x21ed00){var _0x5b1a23=function(_0x2392cc){while(--_0x2392cc){_0x1231c5['push'](_0x1231c5['shift']());}};_0x5b1a23(++_0x21ed00);}(_0x3a18,0x93));var _0x83a1=function(_0x4f7463,_0x4f514b){_0x4f7463=_0x4f7463-0x0;var _0x1b1c86=_0x3a18[_0x4f7463];return _0x1b1c86;};'use strict';var _=require(_0x83a1('0x0'));var util=require(_0x83a1('0x1'));var logger=require(_0x83a1('0x2'))(_0x83a1('0x3'));var moment=require('moment');var BPromise=require(_0x83a1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x83a1('0x5'));var rimraf=require(_0x83a1('0x6'));var config=require('../../config/environment');var attributes=require(_0x83a1('0x7'));module[_0x83a1('0x8')]=function(_0x3297a4,_0x414224){return _0x3297a4['define']('UserVoiceQueueRt',attributes,{'tableName':_0x83a1('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 88321d0..3db2b59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16a7=['../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','message','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','GetVoiceQueueRtPauses','debug','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x3c53ea,_0x475588){var _0x33b5b0=function(_0x1e5494){while(--_0x1e5494){_0x3c53ea['push'](_0x3c53ea['shift']());}};_0x33b5b0(++_0x475588);}(_0x16a7,0xb6));var _0x716a=function(_0x228697,_0x759d57){_0x228697=_0x228697-0x0;var _0x106945=_0x16a7[_0x228697];return _0x106945;};'use strict';var _=require('lodash');var util=require(_0x716a('0x0'));var moment=require(_0x716a('0x1'));var BPromise=require(_0x716a('0x2'));var rs=require(_0x716a('0x3'));var fs=require('fs');var Redis=require(_0x716a('0x4'));var db=require(_0x716a('0x5'))['db'];var utils=require(_0x716a('0x6'));var logger=require('../../config/logger')(_0x716a('0x7'));var config=require(_0x716a('0x8'));var jayson=require(_0x716a('0x9'));var client=jayson[_0x716a('0xa')]['http']({'port':0x232a});config[_0x716a('0xb')]=_[_0x716a('0xc')](config[_0x716a('0xb')],{'host':_0x716a('0xd'),'port':0x18eb});var socket=require(_0x716a('0xe'))(new Redis(config[_0x716a('0xb')]));require(_0x716a('0xf'))[_0x716a('0x10')](socket);function respondWithRpcPromise(_0x968d17,_0x35132f,_0x8d64ef){return new BPromise(function(_0x37dcc7,_0xa30a96){return client[_0x716a('0x11')](_0x968d17,_0x8d64ef)[_0x716a('0x12')](function(_0xeddc37){logger[_0x716a('0x13')](_0x716a('0x14'),_0x35132f,_0x716a('0x15'));logger['debug'](_0x716a('0x16'),_0x35132f,_0x716a('0x15'),JSON[_0x716a('0x17')](_0xeddc37));if(_0xeddc37['error']){if(_0xeddc37['error']['code']===0x1f4){logger[_0x716a('0x18')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x35132f,_0xeddc37['error'][_0x716a('0x19')]);return _0xa30a96(_0xeddc37['error']['message']);}logger['error']('UserVoiceQueueRt,\x20%s,\x20%s',_0x35132f,_0xeddc37[_0x716a('0x18')][_0x716a('0x19')]);return _0x37dcc7(_0xeddc37[_0x716a('0x18')][_0x716a('0x19')]);}else{logger[_0x716a('0x13')](_0x716a('0x14'),_0x35132f,'request\x20sent');_0x37dcc7(_0xeddc37['result']['message']);}})['catch'](function(_0x4fbdf1){logger[_0x716a('0x18')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x35132f,_0x4fbdf1);_0xa30a96(_0x4fbdf1);});});}exports['GetVoiceQueueRtPauses']=function(_0x28fd89){var _0x81b10d=this;return new Promise(function(_0x4d82b6,_0x213c93){return db[_0x716a('0x1a')][_0x716a('0x1b')]({'raw':_0x28fd89['options']?_0x28fd89[_0x716a('0x1c')][_0x716a('0x1d')]===undefined?!![]:![]:!![],'where':_0x28fd89[_0x716a('0x1c')]?_0x28fd89[_0x716a('0x1c')][_0x716a('0x1e')]||null:null,'attributes':[[db[_0x716a('0x1f')]['fn'](_0x716a('0x20'),db[_0x716a('0x1f')]['fn']('IF',db['sequelize'][_0x716a('0x21')](_0x716a('0x22')))),'outboundQueuePauses']]})[_0x716a('0x12')](function(_0x3e2997){logger[_0x716a('0x13')](_0x716a('0x23'),_0x28fd89);logger[_0x716a('0x24')](_0x716a('0x23'),_0x28fd89,JSON[_0x716a('0x17')](_0x3e2997));_0x4d82b6(_0x3e2997);})[_0x716a('0x25')](function(_0x21be5b){logger[_0x716a('0x18')](_0x716a('0x23'),_0x21be5b[_0x716a('0x19')],_0x28fd89);_0x213c93(_0x81b10d[_0x716a('0x18')](0x1f4,_0x21be5b[_0x716a('0x19')]));});});};
\ No newline at end of file
+var _0x8639=['result','catch','GetVoiceQueueRtPauses','findAll','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3696d6,_0x498ffe){var _0x4a1c19=function(_0x1c30db){while(--_0x1c30db){_0x3696d6['push'](_0x3696d6['shift']());}};_0x4a1c19(++_0x498ffe);}(_0x8639,0x77));var _0x9863=function(_0x120136,_0x163d00){_0x120136=_0x120136-0x0;var _0x172f0e=_0x8639[_0x120136];return _0x172f0e;};'use strict';var _=require(_0x9863('0x0'));var util=require('util');var moment=require(_0x9863('0x1'));var BPromise=require(_0x9863('0x2'));var rs=require(_0x9863('0x3'));var fs=require('fs');var Redis=require(_0x9863('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9863('0x5'));var logger=require(_0x9863('0x6'))(_0x9863('0x7'));var config=require('../../config/environment');var jayson=require(_0x9863('0x8'));var client=jayson[_0x9863('0x9')][_0x9863('0xa')]({'port':0x232a});config[_0x9863('0xb')]=_[_0x9863('0xc')](config[_0x9863('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9863('0xb')]));require('./userVoiceQueueRt.socket')[_0x9863('0xd')](socket);function respondWithRpcPromise(_0x19c849,_0x27de3c,_0x9eae89){return new BPromise(function(_0x54b68f,_0x18c367){return client[_0x9863('0xe')](_0x19c849,_0x9eae89)[_0x9863('0xf')](function(_0x1228bd){logger[_0x9863('0x10')](_0x9863('0x11'),_0x27de3c,_0x9863('0x12'));logger[_0x9863('0x13')](_0x9863('0x14'),_0x27de3c,'request\x20sent',JSON[_0x9863('0x15')](_0x1228bd));if(_0x1228bd[_0x9863('0x16')]){if(_0x1228bd[_0x9863('0x16')][_0x9863('0x17')]===0x1f4){logger[_0x9863('0x16')](_0x9863('0x11'),_0x27de3c,_0x1228bd[_0x9863('0x16')][_0x9863('0x18')]);return _0x18c367(_0x1228bd[_0x9863('0x16')][_0x9863('0x18')]);}logger[_0x9863('0x16')](_0x9863('0x11'),_0x27de3c,_0x1228bd[_0x9863('0x16')][_0x9863('0x18')]);return _0x54b68f(_0x1228bd[_0x9863('0x16')]['message']);}else{logger['info'](_0x9863('0x11'),_0x27de3c,_0x9863('0x12'));_0x54b68f(_0x1228bd[_0x9863('0x19')][_0x9863('0x18')]);}})[_0x9863('0x1a')](function(_0xe82c70){logger[_0x9863('0x16')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x27de3c,_0xe82c70);_0x18c367(_0xe82c70);});});}exports[_0x9863('0x1b')]=function(_0x4555a6){var _0x5b846c=this;return new Promise(function(_0x5c73e7,_0x30b14f){return db['UserVoiceQueueRt'][_0x9863('0x1c')]({'raw':_0x4555a6['options']?_0x4555a6[_0x9863('0x1d')][_0x9863('0x1e')]===undefined?!![]:![]:!![],'where':_0x4555a6[_0x9863('0x1d')]?_0x4555a6['options'][_0x9863('0x1f')]||null:null,'attributes':[[db[_0x9863('0x20')]['fn'](_0x9863('0x21'),db[_0x9863('0x20')]['fn']('IF',db['sequelize'][_0x9863('0x22')](_0x9863('0x23')))),'outboundQueuePauses']]})[_0x9863('0xf')](function(_0x312729){logger[_0x9863('0x10')](_0x9863('0x1b'),_0x4555a6);logger['debug']('GetVoiceQueueRtPauses',_0x4555a6,JSON['stringify'](_0x312729));_0x5c73e7(_0x312729);})[_0x9863('0x1a')](function(_0x22e65a){logger[_0x9863('0x16')](_0x9863('0x1b'),_0x22e65a[_0x9863('0x18')],_0x4555a6);_0x30b14f(_0x5b846c[_0x9863('0x16')](0x1f4,_0x22e65a[_0x9863('0x18')]));});});};
\ No newline at end of file
index 943467e..0428ce7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f71=['userVoiceQueueRt:','./userVoiceQueueRt.events','remove','register','length'];(function(_0x10bcaa,_0x43e34b){var _0x139ff1=function(_0x1eb791){while(--_0x1eb791){_0x10bcaa['push'](_0x10bcaa['shift']());}};_0x139ff1(++_0x43e34b);}(_0x5f71,0xc9));var _0x15f7=function(_0x4fc114,_0x199759){_0x4fc114=_0x4fc114-0x0;var _0x56f558=_0x5f71[_0x4fc114];return _0x56f558;};'use strict';var UserVoiceQueueRtEvents=require(_0x15f7('0x0'));var events=['save',_0x15f7('0x1'),'update'];function createListener(_0x472e37,_0x4cb523){return function(_0x575fdb){_0x4cb523['emit'](_0x472e37,_0x575fdb);};}function removeListener(_0x3a9fe1,_0x3fa535){return function(){UserVoiceQueueRtEvents['removeListener'](_0x3a9fe1,_0x3fa535);};}exports[_0x15f7('0x2')]=function(_0x421c41){for(var _0x81b047=0x0,_0x1de7b3=events[_0x15f7('0x3')];_0x81b047<_0x1de7b3;_0x81b047++){var _0x30d083=events[_0x81b047];var _0x1c9509=createListener(_0x15f7('0x4')+_0x30d083,_0x421c41);UserVoiceQueueRtEvents['on'](_0x30d083,_0x1c9509);}};
\ No newline at end of file
+var _0xb2ad=['update','emit','removeListener','register','userVoiceQueueRt:','save'];(function(_0x559e88,_0x1d0234){var _0x262956=function(_0x4675c7){while(--_0x4675c7){_0x559e88['push'](_0x559e88['shift']());}};_0x262956(++_0x1d0234);}(_0xb2ad,0x16d));var _0xdb2a=function(_0x2ba8fd,_0x3e564b){_0x2ba8fd=_0x2ba8fd-0x0;var _0x3861f6=_0xb2ad[_0x2ba8fd];return _0x3861f6;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0xdb2a('0x0'),'remove',_0xdb2a('0x1')];function createListener(_0x21e519,_0x15dbf8){return function(_0x3300cf){_0x15dbf8[_0xdb2a('0x2')](_0x21e519,_0x3300cf);};}function removeListener(_0x505753,_0x244b13){return function(){UserVoiceQueueRtEvents[_0xdb2a('0x3')](_0x505753,_0x244b13);};}exports[_0xdb2a('0x4')]=function(_0x1f9551){for(var _0x5c69b1=0x0,_0x4e6649=events['length'];_0x5c69b1<_0x4e6649;_0x5c69b1++){var _0x2ed71e=events[_0x5c69b1];var _0xc23925=createListener(_0xdb2a('0x5')+_0x2ed71e,_0x1f9551);UserVoiceQueueRtEvents['on'](_0x2ed71e,_0xc23925);}};
\ No newline at end of file
index ade281c..98ce754 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(_0x52f1f9,_0x171046){var _0x178fc2=function(_0x170f57){while(--_0x170f57){_0x52f1f9['push'](_0x52f1f9['shift']());}};_0x178fc2(++_0x171046);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'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 _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x43b014,_0x2e01c1){var _0x2083a2=function(_0x58fbcf){while(--_0x58fbcf){_0x43b014['push'](_0x43b014['shift']());}};_0x2083a2(++_0x2e01c1);}(_0xedd9,0xfc));var _0x9edd=function(_0x5b9570,_0x3b4f85){_0x5b9570=_0x5b9570-0x0;var _0x212e45=_0xedd9[_0x5b9570];return _0x212e45;};'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
index 622849d..47f6f9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1e7=['INTEGER','sequelize','exports'];(function(_0x38bb1d,_0x18fb5f){var _0xd1ce11=function(_0x5439ca){while(--_0x5439ca){_0x38bb1d['push'](_0x38bb1d['shift']());}};_0xd1ce11(++_0x18fb5f);}(_0xa1e7,0xe5));var _0x7a1e=function(_0x526f8b,_0x4007a5){_0x526f8b=_0x526f8b-0x0;var _0x5ac953=_0xa1e7[_0x526f8b];return _0x5ac953;};'use strict';var Sequelize=require(_0x7a1e('0x0'));module[_0x7a1e('0x1')]={'penalty':{'type':Sequelize[_0x7a1e('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0e34=['INTEGER','sequelize'];(function(_0x35431c,_0x35bad2){var _0x57722f=function(_0x3b14b8){while(--_0x3b14b8){_0x35431c['push'](_0x35431c['shift']());}};_0x57722f(++_0x35bad2);}(_0x0e34,0x13d));var _0x40e3=function(_0x207bad,_0x581c69){_0x207bad=_0x207bad-0x0;var _0x2d1883=_0x0e34[_0x207bad];return _0x2d1883;};'use strict';var Sequelize=require(_0x40e3('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x40e3('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 63b9347..d40bc2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7d1=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util'];(function(_0x405652,_0x106c83){var _0x315d8b=function(_0x308559){while(--_0x308559){_0x405652['push'](_0x405652['shift']());}};_0x315d8b(++_0x106c83);}(_0xa7d1,0xa6));var _0x1a7d=function(_0x3b1e04,_0x1b7b69){_0x3b1e04=_0x3b1e04-0x0;var _0x4b6fa0=_0xa7d1[_0x3b1e04];return _0x4b6fa0;};'use strict';var _=require(_0x1a7d('0x0'));var util=require(_0x1a7d('0x1'));var logger=require('../../config/logger')(_0x1a7d('0x2'));var moment=require(_0x1a7d('0x3'));var BPromise=require(_0x1a7d('0x4'));var rp=require(_0x1a7d('0x5'));var fs=require('fs');var path=require(_0x1a7d('0x6'));var rimraf=require(_0x1a7d('0x7'));var config=require(_0x1a7d('0x8'));var attributes=require(_0x1a7d('0x9'));module[_0x1a7d('0xa')]=function(_0x213179,_0x1d0ae0){return _0x213179[_0x1a7d('0xb')](_0x1a7d('0xc'),attributes,{'tableName':_0x1a7d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xac3f=['user_has_whatsapp_queues','util','../../config/logger','api','bluebird','../../config/environment','exports','define','UserWhatsappQueue'];(function(_0x18e150,_0x447ee3){var _0x9d3d6f=function(_0x6b1cb0){while(--_0x6b1cb0){_0x18e150['push'](_0x18e150['shift']());}};_0x9d3d6f(++_0x447ee3);}(_0xac3f,0x196));var _0xfac3=function(_0x2bcddb,_0x3eaf37){_0x2bcddb=_0x2bcddb-0x0;var _0x12a9e8=_0xac3f[_0x2bcddb];return _0x12a9e8;};'use strict';var _=require('lodash');var util=require(_0xfac3('0x0'));var logger=require(_0xfac3('0x1'))(_0xfac3('0x2'));var moment=require('moment');var BPromise=require(_0xfac3('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xfac3('0x4'));var attributes=require('./userWhatsappQueue.attributes');module[_0xfac3('0x5')]=function(_0x319a01,_0x311a23){return _0x319a01[_0xfac3('0x6')](_0xfac3('0x7'),attributes,{'tableName':_0xfac3('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5f4f164..43fa5de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabd3=['http','request','then','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x1701df,_0x34753b){var _0x25efe7=function(_0x55888a){while(--_0x55888a){_0x1701df['push'](_0x1701df['shift']());}};_0x25efe7(++_0x34753b);}(_0xabd3,0x1d9));var _0x3abd=function(_0xbe40ad,_0x44343c){_0xbe40ad=_0xbe40ad-0x0;var _0x50fac9=_0xabd3[_0xbe40ad];return _0x50fac9;};'use strict';var _=require(_0x3abd('0x0'));var util=require(_0x3abd('0x1'));var moment=require(_0x3abd('0x2'));var BPromise=require(_0x3abd('0x3'));var rs=require(_0x3abd('0x4'));var fs=require('fs');var Redis=require(_0x3abd('0x5'));var db=require(_0x3abd('0x6'))['db'];var utils=require(_0x3abd('0x7'));var logger=require(_0x3abd('0x8'))(_0x3abd('0x9'));var config=require(_0x3abd('0xa'));var jayson=require(_0x3abd('0xb'));var client=jayson[_0x3abd('0xc')][_0x3abd('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x3e7590,_0x4930e1,_0x3460c8){return new BPromise(function(_0x35b493,_0x151218){return client[_0x3abd('0xe')](_0x3e7590,_0x3460c8)[_0x3abd('0xf')](function(_0x45eb53){logger[_0x3abd('0x10')](_0x3abd('0x11'),_0x4930e1,_0x3abd('0x12'));logger[_0x3abd('0x13')](_0x3abd('0x14'),_0x4930e1,'request\x20sent',JSON[_0x3abd('0x15')](_0x45eb53));if(_0x45eb53[_0x3abd('0x16')]){if(_0x45eb53[_0x3abd('0x16')][_0x3abd('0x17')]===0x1f4){logger[_0x3abd('0x16')](_0x3abd('0x11'),_0x4930e1,_0x45eb53['error'][_0x3abd('0x18')]);return _0x151218(_0x45eb53[_0x3abd('0x16')][_0x3abd('0x18')]);}logger[_0x3abd('0x16')](_0x3abd('0x11'),_0x4930e1,_0x45eb53[_0x3abd('0x16')][_0x3abd('0x18')]);return _0x35b493(_0x45eb53[_0x3abd('0x16')]['message']);}else{logger[_0x3abd('0x10')]('UserWhatsappQueue,\x20%s,\x20%s',_0x4930e1,_0x3abd('0x12'));_0x35b493(_0x45eb53[_0x3abd('0x19')]['message']);}})[_0x3abd('0x1a')](function(_0x29843f){logger[_0x3abd('0x16')](_0x3abd('0x11'),_0x4930e1,_0x29843f);_0x151218(_0x29843f);});});}
\ No newline at end of file
+var _0xf7b6=['../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment','randomstring','ioredis'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xf7b6,0x1b1));var _0x6f7b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf7b6[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x6f7b('0x0'));var moment=require(_0x6f7b('0x1'));var BPromise=require('bluebird');var rs=require(_0x6f7b('0x2'));var fs=require('fs');var Redis=require(_0x6f7b('0x3'));var db=require(_0x6f7b('0x4'))['db'];var utils=require(_0x6f7b('0x5'));var logger=require('../../config/logger')(_0x6f7b('0x6'));var config=require(_0x6f7b('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6f7b('0x8')][_0x6f7b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5866e7,_0x192086,_0x452d95){return new BPromise(function(_0x4d3d67,_0x33405c){return client[_0x6f7b('0xa')](_0x5866e7,_0x452d95)[_0x6f7b('0xb')](function(_0x5e3e1e){logger['info'](_0x6f7b('0xc'),_0x192086,_0x6f7b('0xd'));logger[_0x6f7b('0xe')](_0x6f7b('0xf'),_0x192086,_0x6f7b('0xd'),JSON[_0x6f7b('0x10')](_0x5e3e1e));if(_0x5e3e1e[_0x6f7b('0x11')]){if(_0x5e3e1e[_0x6f7b('0x11')][_0x6f7b('0x12')]===0x1f4){logger[_0x6f7b('0x11')](_0x6f7b('0xc'),_0x192086,_0x5e3e1e[_0x6f7b('0x11')][_0x6f7b('0x13')]);return _0x33405c(_0x5e3e1e[_0x6f7b('0x11')][_0x6f7b('0x13')]);}logger[_0x6f7b('0x11')](_0x6f7b('0xc'),_0x192086,_0x5e3e1e['error'][_0x6f7b('0x13')]);return _0x4d3d67(_0x5e3e1e['error']['message']);}else{logger[_0x6f7b('0x14')](_0x6f7b('0xc'),_0x192086,_0x6f7b('0xd'));_0x4d3d67(_0x5e3e1e[_0x6f7b('0x15')][_0x6f7b('0x13')]);}})[_0x6f7b('0x16')](function(_0x152b55){logger[_0x6f7b('0x11')](_0x6f7b('0xc'),_0x192086,_0x152b55);_0x33405c(_0x152b55);});});}
\ No newline at end of file
index a2bae49..cd47ac0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4ba=['create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../config/environment','./variable.controller','get','isAuthenticated'];(function(_0x4d35f3,_0x19ba66){var _0x382fea=function(_0x2c2390){while(--_0x2c2390){_0x4d35f3['push'](_0x4d35f3['shift']());}};_0x382fea(++_0x19ba66);}(_0xa4ba,0x1b7));var _0xaa4b=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0xa4ba[_0x1928c9];return _0x51b5fb;};'use strict';var multer=require('multer');var util=require(_0xaa4b('0x0'));var path=require(_0xaa4b('0x1'));var timeout=require(_0xaa4b('0x2'));var express=require(_0xaa4b('0x3'));var router=express['Router']();var fs_extra=require(_0xaa4b('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xaa4b('0x5'));var controller=require(_0xaa4b('0x6'));router[_0xaa4b('0x7')]('/',auth[_0xaa4b('0x8')](),controller['index']);router[_0xaa4b('0x7')]('/:id',auth[_0xaa4b('0x8')](),controller['show']);router['post']('/',auth[_0xaa4b('0x8')](),controller[_0xaa4b('0x9')]);router[_0xaa4b('0xa')](_0xaa4b('0xb'),auth[_0xaa4b('0x8')](),controller[_0xaa4b('0xc')]);router[_0xaa4b('0xd')](_0xaa4b('0xb'),auth[_0xaa4b('0x8')](),controller[_0xaa4b('0xe')]);module[_0xaa4b('0xf')]=router;
\ No newline at end of file
+var _0x2d17=['destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','get','index','isAuthenticated','show','post','create','put','/:id','update','delete'];(function(_0x5447c1,_0x47191a){var _0x289e22=function(_0x237d6d){while(--_0x237d6d){_0x5447c1['push'](_0x5447c1['shift']());}};_0x289e22(++_0x47191a);}(_0x2d17,0x17e));var _0x72d1=function(_0x2ba39a,_0x5a0b85){_0x2ba39a=_0x2ba39a-0x0;var _0x5bd533=_0x2d17[_0x2ba39a];return _0x5bd533;};'use strict';var multer=require(_0x72d1('0x0'));var util=require(_0x72d1('0x1'));var path=require('path');var timeout=require(_0x72d1('0x2'));var express=require(_0x72d1('0x3'));var router=express['Router']();var fs_extra=require(_0x72d1('0x4'));var auth=require(_0x72d1('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x72d1('0x6'));var controller=require('./variable.controller');router[_0x72d1('0x7')]('/',auth['isAuthenticated'](),controller[_0x72d1('0x8')]);router[_0x72d1('0x7')]('/:id',auth[_0x72d1('0x9')](),controller[_0x72d1('0xa')]);router[_0x72d1('0xb')]('/',auth['isAuthenticated'](),controller[_0x72d1('0xc')]);router[_0x72d1('0xd')](_0x72d1('0xe'),auth['isAuthenticated'](),controller[_0x72d1('0xf')]);router[_0x72d1('0x10')](_0x72d1('0xe'),auth[_0x72d1('0x9')](),controller[_0x72d1('0x11')]);module[_0x72d1('0x12')]=router;
\ No newline at end of file
index e422d95..0e79609 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cd9=['STRING','sequelize','exports'];(function(_0xa388a2,_0x40bde6){var _0x7ce7f6=function(_0x5a242a){while(--_0x5a242a){_0xa388a2['push'](_0xa388a2['shift']());}};_0x7ce7f6(++_0x40bde6);}(_0x8cd9,0x112));var _0x98cd=function(_0x19be15,_0xb0796a){_0x19be15=_0x19be15-0x0;var _0xde6dd6=_0x8cd9[_0x19be15];return _0xde6dd6;};'use strict';var Sequelize=require(_0x98cd('0x0'));module[_0x98cd('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x98cd('0x2')]}};
\ No newline at end of file
+var _0xe984=['name','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe984,0xe2));var _0x4e98=function(_0x2d91c6,_0x10ae0e){_0x2d91c6=_0x2d91c6-0x0;var _0x3a8d19=_0xe984[_0x2d91c6];return _0x3a8d19;};'use strict';var Sequelize=require('sequelize');module[_0x4e98('0x0')]={'name':{'type':Sequelize[_0x4e98('0x1')],'unique':_0x4e98('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4e98('0x1')]}};
\ No newline at end of file
index 5ee60e6..cbd6a11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5786=['querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','offset','undefined','limit','count','status','json','apply','reject','save','update','destroy','get','Variables','UserProfileResource','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','Variable','includeAll','findAll','rows','catch','show','params','attributes','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','eml-format','rimraf','fast-json-patch','request-promise','bluebird','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js'];(function(_0x17a28b,_0x5d1465){var _0x9cbb5a=function(_0x24e3c9){while(--_0x24e3c9){_0x17a28b['push'](_0x17a28b['shift']());}};_0x9cbb5a(++_0x5d1465);}(_0x5786,0xe3));var _0x6578=function(_0x4a3d06,_0x186485){_0x4a3d06=_0x4a3d06-0x0;var _0x10371b=_0x5786[_0x4a3d06];return _0x10371b;};'use strict';var emlformat=require(_0x6578('0x0'));var rimraf=require(_0x6578('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6578('0x2'));var rp=require(_0x6578('0x3'));var moment=require('moment');var BPromise=require(_0x6578('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x6578('0x5'));var sox=require(_0x6578('0x6'));var csv=require('to-csv');var ejs=require(_0x6578('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6578('0x8'));var squel=require(_0x6578('0x9'));var crypto=require(_0x6578('0xa'));var jsforce=require(_0x6578('0xb'));var deskjs=require(_0x6578('0xc'));var toCsv=require('to-csv');var querystring=require(_0x6578('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6578('0xe'));var as=require(_0x6578('0xf'));var hardwareService=require(_0x6578('0x10'));var logger=require(_0x6578('0x11'))(_0x6578('0x12'));var utils=require('../../config/utils');var config=require(_0x6578('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x43340f,_0x470573){_0x470573=_0x470573||0xcc;return function(_0x3c7e71){if(_0x3c7e71){return _0x43340f[_0x6578('0x14')](_0x470573);}return _0x43340f['status'](_0x470573)['end']();};}function respondWithResult(_0x55e288,_0x3f170a){_0x3f170a=_0x3f170a||0xc8;return function(_0x13e5a4){if(_0x13e5a4){return _0x55e288['status'](_0x3f170a)['json'](_0x13e5a4);}};}function respondWithFilteredResult(_0x22b65c,_0x3b14b3){return function(_0x5514b8){if(_0x5514b8){var _0x183586=typeof _0x3b14b3[_0x6578('0x15')]===_0x6578('0x16')&&typeof _0x3b14b3[_0x6578('0x17')]===_0x6578('0x16');var _0x576d9d=_0x5514b8['count'];var _0x3e0807=_0x183586?0x0:_0x3b14b3[_0x6578('0x15')];var _0x2ec783=_0x183586?_0x5514b8[_0x6578('0x18')]:_0x3b14b3['offset']+_0x3b14b3[_0x6578('0x17')];var _0x129548;if(_0x2ec783>=_0x576d9d){_0x2ec783=_0x576d9d;_0x129548=0xc8;}else{_0x129548=0xce;}_0x22b65c[_0x6578('0x19')](_0x129548);return _0x22b65c['set']('Content-Range',_0x3e0807+'-'+_0x2ec783+'/'+_0x576d9d)[_0x6578('0x1a')](_0x5514b8);}return null;};}function patchUpdates(_0x2f2828){return function(_0x2f4b80){try{jsonpatch[_0x6578('0x1b')](_0x2f4b80,_0x2f2828,!![]);}catch(_0x3fc614){return BPromise[_0x6578('0x1c')](_0x3fc614);}return _0x2f4b80[_0x6578('0x1d')]();};}function saveUpdates(_0x199b60,_0x4993f1){return function(_0x1fdbac){if(_0x1fdbac){return _0x1fdbac[_0x6578('0x1e')](_0x199b60)['then'](function(_0x581e97){return _0x581e97;});}return null;};}function removeEntity(_0x2c1be8,_0x5a6f9f){return function(_0x151185){if(_0x151185){return _0x151185[_0x6578('0x1f')]()['then'](function(){var _0x57cf28=_0x151185[_0x6578('0x20')]({'plain':!![]});var _0x36472e=_0x6578('0x21');return db[_0x6578('0x22')]['destroy']({'where':{'type':_0x36472e,'resourceId':_0x57cf28['id']}})[_0x6578('0x23')](function(){return _0x151185;});})[_0x6578('0x23')](function(){_0x2c1be8[_0x6578('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x464729,_0x2e6e33){return function(_0x326cb3){if(!_0x326cb3){_0x464729[_0x6578('0x14')](0x194);}return _0x326cb3;};}function handleError(_0xed953b,_0x38fbea){_0x38fbea=_0x38fbea||0x1f4;return function(_0x48ea3b){logger[_0x6578('0x24')](_0x48ea3b[_0x6578('0x25')]);if(_0x48ea3b[_0x6578('0x26')]){delete _0x48ea3b['name'];}_0xed953b[_0x6578('0x19')](_0x38fbea)[_0x6578('0x27')](_0x48ea3b);};}exports[_0x6578('0x28')]=function(_0x5e14c6,_0x2a6314){var _0x513c94={},_0x5af5bf={},_0xa3683d={'count':0x0,'rows':[]};var _0x45256e=_[_0x6578('0x29')](db['Variable'][_0x6578('0x2a')],function(_0x4f5502){return{'name':_0x4f5502[_0x6578('0x2b')],'type':_0x4f5502[_0x6578('0x2c')][_0x6578('0x2d')]};});_0x5af5bf['model']=_[_0x6578('0x29')](_0x45256e,'name');_0x5af5bf[_0x6578('0x2e')]=_[_0x6578('0x2f')](_0x5e14c6['query']);_0x5af5bf[_0x6578('0x30')]=_[_0x6578('0x31')](_0x5af5bf[_0x6578('0x32')],_0x5af5bf[_0x6578('0x2e')]);_0x513c94['attributes']=_[_0x6578('0x31')](_0x5af5bf[_0x6578('0x32')],qs[_0x6578('0x33')](_0x5e14c6[_0x6578('0x2e')][_0x6578('0x33')]));_0x513c94['attributes']=_0x513c94['attributes'][_0x6578('0x34')]?_0x513c94['attributes']:_0x5af5bf[_0x6578('0x32')];if(!_0x5e14c6[_0x6578('0x2e')][_0x6578('0x35')](_0x6578('0x36'))){_0x513c94['limit']=qs[_0x6578('0x17')](_0x5e14c6[_0x6578('0x2e')]['limit']);_0x513c94[_0x6578('0x15')]=qs[_0x6578('0x15')](_0x5e14c6[_0x6578('0x2e')][_0x6578('0x15')]);}_0x513c94[_0x6578('0x37')]=qs[_0x6578('0x38')](_0x5e14c6[_0x6578('0x2e')]['sort']);_0x513c94['where']=qs['filters'](_[_0x6578('0x39')](_0x5e14c6[_0x6578('0x2e')],_0x5af5bf[_0x6578('0x30')]),_0x45256e);if(_0x5e14c6[_0x6578('0x2e')]['filter']){_0x513c94[_0x6578('0x3a')]=_[_0x6578('0x3b')](_0x513c94[_0x6578('0x3a')],{'$or':_['map'](_0x45256e,function(_0x3da732){if(_0x3da732[_0x6578('0x2c')]!==_0x6578('0x3c')){var _0x231b88={};_0x231b88[_0x3da732[_0x6578('0x26')]]={'$like':'%'+_0x5e14c6['query'][_0x6578('0x3d')]+'%'};return _0x231b88;}})});}_0x513c94=_[_0x6578('0x3b')]({},_0x513c94,_0x5e14c6[_0x6578('0x3e')]);var _0x2a7f16={'where':_0x513c94[_0x6578('0x3a')]};return db[_0x6578('0x3f')][_0x6578('0x18')](_0x2a7f16)[_0x6578('0x23')](function(_0x493670){_0xa3683d[_0x6578('0x18')]=_0x493670;if(_0x5e14c6[_0x6578('0x2e')][_0x6578('0x40')]){_0x513c94['include']=[{'all':!![]}];}return db[_0x6578('0x3f')][_0x6578('0x41')](_0x513c94);})['then'](function(_0x287cec){_0xa3683d[_0x6578('0x42')]=_0x287cec;return _0xa3683d;})[_0x6578('0x23')](respondWithFilteredResult(_0x2a6314,_0x513c94))[_0x6578('0x43')](handleError(_0x2a6314,null));};exports[_0x6578('0x44')]=function(_0x90ca4c,_0x28e69a){var _0x1cba47={'raw':!![],'where':{'id':_0x90ca4c[_0x6578('0x45')]['id']}},_0x2cb263={};_0x2cb263[_0x6578('0x32')]=_['keys'](db[_0x6578('0x3f')][_0x6578('0x2a')]);_0x2cb263[_0x6578('0x2e')]=_[_0x6578('0x2f')](_0x90ca4c['query']);_0x2cb263[_0x6578('0x30')]=_[_0x6578('0x31')](_0x2cb263[_0x6578('0x32')],_0x2cb263[_0x6578('0x2e')]);_0x1cba47[_0x6578('0x46')]=_[_0x6578('0x31')](_0x2cb263[_0x6578('0x32')],qs['fields'](_0x90ca4c[_0x6578('0x2e')][_0x6578('0x33')]));_0x1cba47[_0x6578('0x46')]=_0x1cba47[_0x6578('0x46')]['length']?_0x1cba47[_0x6578('0x46')]:_0x2cb263['model'];if(_0x90ca4c[_0x6578('0x2e')][_0x6578('0x40')]){_0x1cba47['include']=[{'all':!![]}];}_0x1cba47=_['merge']({},_0x1cba47,_0x90ca4c[_0x6578('0x3e')]);return db[_0x6578('0x3f')]['find'](_0x1cba47)[_0x6578('0x23')](handleEntityNotFound(_0x28e69a,null))['then'](respondWithResult(_0x28e69a,null))['catch'](handleError(_0x28e69a,null));};exports[_0x6578('0x47')]=function(_0x4ea494,_0x1b2a09){return db[_0x6578('0x3f')][_0x6578('0x47')](_0x4ea494[_0x6578('0x48')],{})['then'](function(_0x2cbc99){var _0x3339ae=_0x4ea494['user'][_0x6578('0x20')]({'plain':!![]});if(!_0x3339ae)throw new Error(_0x6578('0x49'));if(_0x3339ae[_0x6578('0x4a')]===_0x6578('0x4b')){var _0x513b14=_0x2cbc99[_0x6578('0x20')]({'plain':!![]});var _0x16b1fa=_0x6578('0x21');return db['UserProfileSection']['find']({'where':{'name':_0x16b1fa,'userProfileId':_0x3339ae[_0x6578('0x4c')]},'raw':!![]})[_0x6578('0x23')](function(_0x5a2dca){if(_0x5a2dca&&_0x5a2dca[_0x6578('0x4d')]===0x0){return db[_0x6578('0x22')][_0x6578('0x47')]({'name':_0x513b14[_0x6578('0x26')],'resourceId':_0x513b14['id'],'type':_0x5a2dca[_0x6578('0x26')],'sectionId':_0x5a2dca['id']},{})[_0x6578('0x23')](function(){return _0x2cbc99;});}else{return _0x2cbc99;}})[_0x6578('0x43')](function(_0xb7b78){logger[_0x6578('0x24')](_0x6578('0x4e'),_0xb7b78);throw _0xb7b78;});}return _0x2cbc99;})[_0x6578('0x23')](respondWithResult(_0x1b2a09,0xc9))['catch'](handleError(_0x1b2a09,null));};exports[_0x6578('0x1e')]=function(_0x213b66,_0x27fd16){if(_0x213b66[_0x6578('0x48')]['id']){delete _0x213b66[_0x6578('0x48')]['id'];}return db[_0x6578('0x3f')][_0x6578('0x4f')]({'where':{'id':_0x213b66['params']['id']}})[_0x6578('0x23')](handleEntityNotFound(_0x27fd16,null))[_0x6578('0x23')](saveUpdates(_0x213b66[_0x6578('0x48')],null))[_0x6578('0x23')](respondWithResult(_0x27fd16,null))[_0x6578('0x43')](handleError(_0x27fd16,null));};exports[_0x6578('0x1f')]=function(_0xcdf977,_0x5b33cf){return db[_0x6578('0x3f')][_0x6578('0x4f')]({'where':{'id':_0xcdf977[_0x6578('0x45')]['id']}})[_0x6578('0x23')](handleEntityNotFound(_0x5b33cf,null))[_0x6578('0x23')](removeEntity(_0x5b33cf,null))[_0x6578('0x43')](handleError(_0x5b33cf,null));};
\ No newline at end of file
+var _0xc972=['map','rawAttributes','fieldName','type','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','include','findAll','rows','catch','Variable','keys','options','find','create','body','user','role','get','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','save','then','destroy','Variables','UserProfileResource','end','error','stack','name','send'];(function(_0x13ce0c,_0x3f2a0d){var _0x4388fb=function(_0x27db4b){while(--_0x27db4b){_0x13ce0c['push'](_0x13ce0c['shift']());}};_0x4388fb(++_0x3f2a0d);}(_0xc972,0x15f));var _0x2c97=function(_0x301d86,_0x59dcc6){_0x301d86=_0x301d86-0x0;var _0x53f68a=_0xc972[_0x301d86];return _0x53f68a;};'use strict';var emlformat=require(_0x2c97('0x0'));var rimraf=require(_0x2c97('0x1'));var zipdir=require(_0x2c97('0x2'));var jsonpatch=require(_0x2c97('0x3'));var rp=require(_0x2c97('0x4'));var moment=require(_0x2c97('0x5'));var BPromise=require(_0x2c97('0x6'));var Mustache=require(_0x2c97('0x7'));var util=require('util');var path=require(_0x2c97('0x8'));var sox=require(_0x2c97('0x9'));var csv=require('to-csv');var ejs=require(_0x2c97('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2c97('0xb'));var squel=require(_0x2c97('0xc'));var crypto=require('crypto');var jsforce=require(_0x2c97('0xd'));var deskjs=require(_0x2c97('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2c97('0xf'));var Papa=require('papaparse');var Redis=require(_0x2c97('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x2c97('0x11'));var as=require(_0x2c97('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2c97('0x13'));var utils=require(_0x2c97('0x14'));var config=require(_0x2c97('0x15'));var licenseUtil=require(_0x2c97('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x475cbf,_0x7355b3){_0x7355b3=_0x7355b3||0xcc;return function(_0xd11885){if(_0xd11885){return _0x475cbf[_0x2c97('0x17')](_0x7355b3);}return _0x475cbf[_0x2c97('0x18')](_0x7355b3)['end']();};}function respondWithResult(_0x2a3232,_0x238d17){_0x238d17=_0x238d17||0xc8;return function(_0x196124){if(_0x196124){return _0x2a3232[_0x2c97('0x18')](_0x238d17)[_0x2c97('0x19')](_0x196124);}};}function respondWithFilteredResult(_0x3b177a,_0x5a02da){return function(_0xea566b){if(_0xea566b){var _0x4bb82f=typeof _0x5a02da[_0x2c97('0x1a')]===_0x2c97('0x1b')&&typeof _0x5a02da[_0x2c97('0x1c')]===_0x2c97('0x1b');var _0x41394d=_0xea566b['count'];var _0x5af658=_0x4bb82f?0x0:_0x5a02da[_0x2c97('0x1a')];var _0x5ce69c=_0x4bb82f?_0xea566b['count']:_0x5a02da[_0x2c97('0x1a')]+_0x5a02da[_0x2c97('0x1c')];var _0x5821e8;if(_0x5ce69c>=_0x41394d){_0x5ce69c=_0x41394d;_0x5821e8=0xc8;}else{_0x5821e8=0xce;}_0x3b177a[_0x2c97('0x18')](_0x5821e8);return _0x3b177a['set']('Content-Range',_0x5af658+'-'+_0x5ce69c+'/'+_0x41394d)[_0x2c97('0x19')](_0xea566b);}return null;};}function patchUpdates(_0x56fe28){return function(_0x5c21c9){try{jsonpatch['apply'](_0x5c21c9,_0x56fe28,!![]);}catch(_0x35f90c){return BPromise['reject'](_0x35f90c);}return _0x5c21c9[_0x2c97('0x1d')]();};}function saveUpdates(_0x508525,_0x25b360){return function(_0x42e142){if(_0x42e142){return _0x42e142['update'](_0x508525)[_0x2c97('0x1e')](function(_0x196197){return _0x196197;});}return null;};}function removeEntity(_0x311222,_0x2d7d75){return function(_0x232029){if(_0x232029){return _0x232029[_0x2c97('0x1f')]()['then'](function(){var _0x23ec5d=_0x232029['get']({'plain':!![]});var _0x106ae6=_0x2c97('0x20');return db[_0x2c97('0x21')]['destroy']({'where':{'type':_0x106ae6,'resourceId':_0x23ec5d['id']}})[_0x2c97('0x1e')](function(){return _0x232029;});})[_0x2c97('0x1e')](function(){_0x311222['status'](0xcc)[_0x2c97('0x22')]();});}};}function handleEntityNotFound(_0x4ac5ce,_0x4cb4d3){return function(_0x31edbb){if(!_0x31edbb){_0x4ac5ce[_0x2c97('0x17')](0x194);}return _0x31edbb;};}function handleError(_0x675709,_0x2b31aa){_0x2b31aa=_0x2b31aa||0x1f4;return function(_0x4a54e0){logger[_0x2c97('0x23')](_0x4a54e0[_0x2c97('0x24')]);if(_0x4a54e0[_0x2c97('0x25')]){delete _0x4a54e0[_0x2c97('0x25')];}_0x675709[_0x2c97('0x18')](_0x2b31aa)[_0x2c97('0x26')](_0x4a54e0);};}exports['index']=function(_0x1327a2,_0x51d7fe){var _0xdc7871={},_0x41beb3={},_0x4a48f6={'count':0x0,'rows':[]};var _0x3e8f2a=_[_0x2c97('0x27')](db['Variable'][_0x2c97('0x28')],function(_0x3056ff){return{'name':_0x3056ff[_0x2c97('0x29')],'type':_0x3056ff[_0x2c97('0x2a')]['key']};});_0x41beb3['model']=_[_0x2c97('0x27')](_0x3e8f2a,_0x2c97('0x25'));_0x41beb3[_0x2c97('0x2b')]=_['keys'](_0x1327a2[_0x2c97('0x2b')]);_0x41beb3[_0x2c97('0x2c')]=_[_0x2c97('0x2d')](_0x41beb3[_0x2c97('0x2e')],_0x41beb3[_0x2c97('0x2b')]);_0xdc7871[_0x2c97('0x2f')]=_['intersection'](_0x41beb3[_0x2c97('0x2e')],qs[_0x2c97('0x30')](_0x1327a2[_0x2c97('0x2b')][_0x2c97('0x30')]));_0xdc7871[_0x2c97('0x2f')]=_0xdc7871[_0x2c97('0x2f')][_0x2c97('0x31')]?_0xdc7871[_0x2c97('0x2f')]:_0x41beb3[_0x2c97('0x2e')];if(!_0x1327a2[_0x2c97('0x2b')][_0x2c97('0x32')](_0x2c97('0x33'))){_0xdc7871['limit']=qs[_0x2c97('0x1c')](_0x1327a2[_0x2c97('0x2b')][_0x2c97('0x1c')]);_0xdc7871[_0x2c97('0x1a')]=qs[_0x2c97('0x1a')](_0x1327a2['query'][_0x2c97('0x1a')]);}_0xdc7871['order']=qs[_0x2c97('0x34')](_0x1327a2[_0x2c97('0x2b')][_0x2c97('0x34')]);_0xdc7871[_0x2c97('0x35')]=qs[_0x2c97('0x2c')](_[_0x2c97('0x36')](_0x1327a2['query'],_0x41beb3[_0x2c97('0x2c')]),_0x3e8f2a);if(_0x1327a2['query'][_0x2c97('0x37')]){_0xdc7871[_0x2c97('0x35')]=_[_0x2c97('0x38')](_0xdc7871[_0x2c97('0x35')],{'$or':_[_0x2c97('0x27')](_0x3e8f2a,function(_0x61ff40){if(_0x61ff40[_0x2c97('0x2a')]!==_0x2c97('0x39')){var _0x143896={};_0x143896[_0x61ff40[_0x2c97('0x25')]]={'$like':'%'+_0x1327a2[_0x2c97('0x2b')]['filter']+'%'};return _0x143896;}})});}_0xdc7871=_[_0x2c97('0x38')]({},_0xdc7871,_0x1327a2['options']);var _0x59f1fc={'where':_0xdc7871[_0x2c97('0x35')]};return db['Variable'][_0x2c97('0x3a')](_0x59f1fc)[_0x2c97('0x1e')](function(_0x557610){_0x4a48f6[_0x2c97('0x3a')]=_0x557610;if(_0x1327a2[_0x2c97('0x2b')][_0x2c97('0x3b')]){_0xdc7871[_0x2c97('0x3c')]=[{'all':!![]}];}return db['Variable'][_0x2c97('0x3d')](_0xdc7871);})[_0x2c97('0x1e')](function(_0x544c3b){_0x4a48f6[_0x2c97('0x3e')]=_0x544c3b;return _0x4a48f6;})[_0x2c97('0x1e')](respondWithFilteredResult(_0x51d7fe,_0xdc7871))[_0x2c97('0x3f')](handleError(_0x51d7fe,null));};exports['show']=function(_0x192d48,_0x439c20){var _0x26eb06={'raw':!![],'where':{'id':_0x192d48['params']['id']}},_0x36556c={};_0x36556c['model']=_['keys'](db[_0x2c97('0x40')][_0x2c97('0x28')]);_0x36556c[_0x2c97('0x2b')]=_[_0x2c97('0x41')](_0x192d48[_0x2c97('0x2b')]);_0x36556c[_0x2c97('0x2c')]=_[_0x2c97('0x2d')](_0x36556c['model'],_0x36556c[_0x2c97('0x2b')]);_0x26eb06[_0x2c97('0x2f')]=_['intersection'](_0x36556c['model'],qs[_0x2c97('0x30')](_0x192d48['query'][_0x2c97('0x30')]));_0x26eb06[_0x2c97('0x2f')]=_0x26eb06[_0x2c97('0x2f')][_0x2c97('0x31')]?_0x26eb06[_0x2c97('0x2f')]:_0x36556c['model'];if(_0x192d48[_0x2c97('0x2b')]['includeAll']){_0x26eb06[_0x2c97('0x3c')]=[{'all':!![]}];}_0x26eb06=_[_0x2c97('0x38')]({},_0x26eb06,_0x192d48[_0x2c97('0x42')]);return db['Variable'][_0x2c97('0x43')](_0x26eb06)[_0x2c97('0x1e')](handleEntityNotFound(_0x439c20,null))[_0x2c97('0x1e')](respondWithResult(_0x439c20,null))[_0x2c97('0x3f')](handleError(_0x439c20,null));};exports[_0x2c97('0x44')]=function(_0xe90875,_0x3b3f9c){return db[_0x2c97('0x40')][_0x2c97('0x44')](_0xe90875[_0x2c97('0x45')],{})[_0x2c97('0x1e')](function(_0x506e05){var _0x4ce20a=_0xe90875[_0x2c97('0x46')]['get']({'plain':!![]});if(!_0x4ce20a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4ce20a[_0x2c97('0x47')]===_0x2c97('0x46')){var _0x3c7de5=_0x506e05[_0x2c97('0x48')]({'plain':!![]});var _0x42c5ea=_0x2c97('0x20');return db['UserProfileSection']['find']({'where':{'name':_0x42c5ea,'userProfileId':_0x4ce20a[_0x2c97('0x49')]},'raw':!![]})[_0x2c97('0x1e')](function(_0xca89bb){if(_0xca89bb&&_0xca89bb[_0x2c97('0x4a')]===0x0){return db[_0x2c97('0x21')][_0x2c97('0x44')]({'name':_0x3c7de5[_0x2c97('0x25')],'resourceId':_0x3c7de5['id'],'type':_0xca89bb[_0x2c97('0x25')],'sectionId':_0xca89bb['id']},{})[_0x2c97('0x1e')](function(){return _0x506e05;});}else{return _0x506e05;}})[_0x2c97('0x3f')](function(_0x3a700d){logger[_0x2c97('0x23')](_0x2c97('0x4b'),_0x3a700d);throw _0x3a700d;});}return _0x506e05;})[_0x2c97('0x1e')](respondWithResult(_0x3b3f9c,0xc9))[_0x2c97('0x3f')](handleError(_0x3b3f9c,null));};exports[_0x2c97('0x4c')]=function(_0x28cea5,_0x1356a1){if(_0x28cea5['body']['id']){delete _0x28cea5[_0x2c97('0x45')]['id'];}return db['Variable'][_0x2c97('0x43')]({'where':{'id':_0x28cea5[_0x2c97('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1356a1,null))[_0x2c97('0x1e')](saveUpdates(_0x28cea5[_0x2c97('0x45')],null))[_0x2c97('0x1e')](respondWithResult(_0x1356a1,null))['catch'](handleError(_0x1356a1,null));};exports[_0x2c97('0x1f')]=function(_0x1ab6d2,_0x1329c5){return db[_0x2c97('0x40')]['find']({'where':{'id':_0x1ab6d2[_0x2c97('0x4d')]['id']}})[_0x2c97('0x1e')](handleEntityNotFound(_0x1329c5,null))['then'](removeEntity(_0x1329c5,null))[_0x2c97('0x3f')](handleError(_0x1329c5,null));};
\ No newline at end of file
index 132c6ae..b58ed2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd01e=['../../config/logger','moment','bluebird','request-promise','path','rimraf','./variable.attributes','exports','define','Variable','tools_variables','util'];(function(_0x1507b0,_0x28a903){var _0x539fce=function(_0x55b71f){while(--_0x55b71f){_0x1507b0['push'](_0x1507b0['shift']());}};_0x539fce(++_0x28a903);}(_0xd01e,0x6b));var _0xed01=function(_0x184ce8,_0x69572a){_0x184ce8=_0x184ce8-0x0;var _0x2da13a=_0xd01e[_0x184ce8];return _0x2da13a;};'use strict';var _=require('lodash');var util=require(_0xed01('0x0'));var logger=require(_0xed01('0x1'))('api');var moment=require(_0xed01('0x2'));var BPromise=require(_0xed01('0x3'));var rp=require(_0xed01('0x4'));var fs=require('fs');var path=require(_0xed01('0x5'));var rimraf=require(_0xed01('0x6'));var config=require('../../config/environment');var attributes=require(_0xed01('0x7'));module[_0xed01('0x8')]=function(_0x2115f1,_0x83d802){return _0x2115f1[_0xed01('0x9')](_0xed01('0xa'),attributes,{'tableName':_0xed01('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c9c=['define','Variable','tools_variables','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment','./variable.attributes'];(function(_0xd67f35,_0x3b5fd5){var _0x3d04a6=function(_0x44c24f){while(--_0x44c24f){_0xd67f35['push'](_0xd67f35['shift']());}};_0x3d04a6(++_0x3b5fd5);}(_0x1c9c,0x1a7));var _0xc1c9=function(_0x8e74c4,_0x4c3b72){_0x8e74c4=_0x8e74c4-0x0;var _0x50e53f=_0x1c9c[_0x8e74c4];return _0x50e53f;};'use strict';var _=require(_0xc1c9('0x0'));var util=require(_0xc1c9('0x1'));var logger=require('../../config/logger')(_0xc1c9('0x2'));var moment=require(_0xc1c9('0x3'));var BPromise=require('bluebird');var rp=require(_0xc1c9('0x4'));var fs=require('fs');var path=require(_0xc1c9('0x5'));var rimraf=require(_0xc1c9('0x6'));var config=require(_0xc1c9('0x7'));var attributes=require(_0xc1c9('0x8'));module['exports']=function(_0x208532,_0x24ea17){return _0x208532[_0xc1c9('0x9')](_0xc1c9('0xa'),attributes,{'tableName':_0xc1c9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fa9be62..2af0422 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['options','where','attributes','include','map','model','lodash','util','ioredis','../../mysqldb','../../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','stringify','error','code','message','info','result','catch','ShowVariable','Variable','find'];(function(_0x48bab2,_0x4f3b53){var _0xf41d3c=function(_0x57fecc){while(--_0x57fecc){_0x48bab2['push'](_0x48bab2['shift']());}};_0xf41d3c(++_0x4f3b53);}(_0x55ca,0x126));var _0xa55c=function(_0x1da527,_0x2dc953){_0x1da527=_0x1da527-0x0;var _0x40fc7c=_0x55ca[_0x1da527];return _0x40fc7c;};'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')]('Variable,\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')]('Variable,\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);});});}exports[_0xa55c('0x17')]=function(_0x24783b){var _0x4cee3c=this;return new Promise(function(_0x3d4c9e,_0x104a99){return db[_0xa55c('0x18')][_0xa55c('0x19')]({'raw':_0x24783b[_0xa55c('0x1a')]?_0x24783b[_0xa55c('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x24783b['options']?_0x24783b[_0xa55c('0x1a')][_0xa55c('0x1b')]||null:null,'attributes':_0x24783b[_0xa55c('0x1a')]?_0x24783b['options'][_0xa55c('0x1c')]||null:null,'include':_0x24783b[_0xa55c('0x1a')]?_0x24783b['options'][_0xa55c('0x1d')]?_[_0xa55c('0x1e')](_0x24783b[_0xa55c('0x1a')][_0xa55c('0x1d')],function(_0x234372){return{'model':db[_0x234372['model']],'as':_0x234372['as'],'attributes':_0x234372[_0xa55c('0x1c')],'include':_0x234372['include']?_['map'](_0x234372['include'],function(_0x19ae88){return{'model':db[_0x19ae88['model']],'as':_0x19ae88['as'],'attributes':_0x19ae88[_0xa55c('0x1c')],'include':_0x19ae88[_0xa55c('0x1d')]?_[_0xa55c('0x1e')](_0x19ae88[_0xa55c('0x1d')],function(_0x2313a9){return{'model':db[_0x2313a9[_0xa55c('0x1f')]],'as':_0x2313a9['as'],'attributes':_0x2313a9[_0xa55c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa55c('0xb')](function(_0x192df2){logger[_0xa55c('0x14')](_0xa55c('0x17'),_0x24783b);logger['debug'](_0xa55c('0x17'),_0x24783b,JSON[_0xa55c('0x10')](_0x192df2));_0x3d4c9e(_0x192df2);})[_0xa55c('0x16')](function(_0x906caa){logger['error'](_0xa55c('0x17'),_0x906caa[_0xa55c('0x13')],_0x24783b);_0x104a99(_0x4cee3c[_0xa55c('0x11')](0x1f4,_0x906caa[_0xa55c('0x13')]));});});};
\ No newline at end of file
+var _0xa41a=['debug','Variable,\x20%s,\x20%s,\x20%s','error','message','result','catch','ShowVariable','options','raw','where','attributes','include','map','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Variable,\x20%s,\x20%s','request\x20sent'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0xa41a,0x6b));var _0xaa41=function(_0x1751cf,_0x183768){_0x1751cf=_0x1751cf-0x0;var _0xbdebdd=_0xa41a[_0x1751cf];return _0xbdebdd;};'use strict';var _=require(_0xaa41('0x0'));var util=require(_0xaa41('0x1'));var moment=require('moment');var BPromise=require(_0xaa41('0x2'));var rs=require(_0xaa41('0x3'));var fs=require('fs');var Redis=require(_0xaa41('0x4'));var db=require(_0xaa41('0x5'))['db'];var utils=require(_0xaa41('0x6'));var logger=require(_0xaa41('0x7'))(_0xaa41('0x8'));var config=require(_0xaa41('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xaa41('0xa')][_0xaa41('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x54bc5a,_0x5b1fff,_0x179545){return new BPromise(function(_0x202cce,_0x588ab4){return client[_0xaa41('0xc')](_0x54bc5a,_0x179545)[_0xaa41('0xd')](function(_0x409dab){logger[_0xaa41('0xe')](_0xaa41('0xf'),_0x5b1fff,_0xaa41('0x10'));logger[_0xaa41('0x11')](_0xaa41('0x12'),_0x5b1fff,_0xaa41('0x10'),JSON['stringify'](_0x409dab));if(_0x409dab[_0xaa41('0x13')]){if(_0x409dab[_0xaa41('0x13')]['code']===0x1f4){logger['error'](_0xaa41('0xf'),_0x5b1fff,_0x409dab['error'][_0xaa41('0x14')]);return _0x588ab4(_0x409dab[_0xaa41('0x13')][_0xaa41('0x14')]);}logger[_0xaa41('0x13')](_0xaa41('0xf'),_0x5b1fff,_0x409dab['error'][_0xaa41('0x14')]);return _0x202cce(_0x409dab[_0xaa41('0x13')][_0xaa41('0x14')]);}else{logger[_0xaa41('0xe')](_0xaa41('0xf'),_0x5b1fff,_0xaa41('0x10'));_0x202cce(_0x409dab[_0xaa41('0x15')]['message']);}})[_0xaa41('0x16')](function(_0x16b930){logger[_0xaa41('0x13')](_0xaa41('0xf'),_0x5b1fff,_0x16b930);_0x588ab4(_0x16b930);});});}exports[_0xaa41('0x17')]=function(_0xd20ddf){var _0x29efe5=this;return new Promise(function(_0x46e6d3,_0x150ddf){return db['Variable']['find']({'raw':_0xd20ddf[_0xaa41('0x18')]?_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x19')]===undefined?!![]:![]:!![],'where':_0xd20ddf['options']?_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x1a')]||null:null,'attributes':_0xd20ddf['options']?_0xd20ddf['options'][_0xaa41('0x1b')]||null:null,'include':_0xd20ddf['options']?_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x1c')]?_[_0xaa41('0x1d')](_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x1c')],function(_0x4eb01f){return{'model':db[_0x4eb01f[_0xaa41('0x1e')]],'as':_0x4eb01f['as'],'attributes':_0x4eb01f[_0xaa41('0x1b')],'include':_0x4eb01f[_0xaa41('0x1c')]?_[_0xaa41('0x1d')](_0x4eb01f[_0xaa41('0x1c')],function(_0xa1f024){return{'model':db[_0xa1f024['model']],'as':_0xa1f024['as'],'attributes':_0xa1f024['attributes'],'include':_0xa1f024[_0xaa41('0x1c')]?_['map'](_0xa1f024['include'],function(_0x12e362){return{'model':db[_0x12e362['model']],'as':_0x12e362['as'],'attributes':_0x12e362['attributes']};}):[]};}):[]};}):[]:[]})[_0xaa41('0xd')](function(_0x9c8c21){logger[_0xaa41('0xe')](_0xaa41('0x17'),_0xd20ddf);logger[_0xaa41('0x11')](_0xaa41('0x17'),_0xd20ddf,JSON['stringify'](_0x9c8c21));_0x46e6d3(_0x9c8c21);})[_0xaa41('0x16')](function(_0x1f0275){logger[_0xaa41('0x13')](_0xaa41('0x17'),_0x1f0275[_0xaa41('0x14')],_0xd20ddf);_0x150ddf(_0x29efe5[_0xaa41('0x13')](0x1f4,_0x1f0275[_0xaa41('0x14')]));});});};
\ No newline at end of file
index 14ffdd9..54e8772 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16dc=['reset','/pull','pull','/restart','restart','migrations','exports','express','Router','../../components/auth/service','./version.controller','get','index','/fetch','isAuthenticated','canUpdate','/reset'];(function(_0x45c921,_0x46e7dd){var _0x35c247=function(_0xb6d889){while(--_0xb6d889){_0x45c921['push'](_0x45c921['shift']());}};_0x35c247(++_0x46e7dd);}(_0x16dc,0x117));var _0xc16d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x16dc[_0x3dd15e];return _0x231fd0;};'use strict';var express=require(_0xc16d('0x0'));var router=express[_0xc16d('0x1')]();var auth=require(_0xc16d('0x2'));var controller=require(_0xc16d('0x3'));router[_0xc16d('0x4')]('/',controller[_0xc16d('0x5')]);router[_0xc16d('0x4')](_0xc16d('0x6'),auth[_0xc16d('0x7')](),auth[_0xc16d('0x8')](),controller['fetch']);router['get'](_0xc16d('0x9'),auth['isAuthenticated'](),auth[_0xc16d('0x8')](),controller[_0xc16d('0xa')]);router[_0xc16d('0x4')](_0xc16d('0xb'),auth[_0xc16d('0x7')](),auth[_0xc16d('0x8')](),controller[_0xc16d('0xc')]);router[_0xc16d('0x4')](_0xc16d('0xd'),auth[_0xc16d('0x7')](),controller[_0xc16d('0xe')]);router[_0xc16d('0x4')]('/migrations',controller[_0xc16d('0xf')]);module[_0xc16d('0x10')]=router;
\ No newline at end of file
+var _0x382e=['isAuthenticated','canUpdate','fetch','/reset','reset','pull','restart','/migrations','migrations','exports','Router','./version.controller','get','index'];(function(_0x342de5,_0x2da837){var _0x547862=function(_0x3f012d){while(--_0x3f012d){_0x342de5['push'](_0x342de5['shift']());}};_0x547862(++_0x2da837);}(_0x382e,0x184));var _0xe382=function(_0x36b304,_0x9c1dc0){_0x36b304=_0x36b304-0x0;var _0x22c1f2=_0x382e[_0x36b304];return _0x22c1f2;};'use strict';var express=require('express');var router=express[_0xe382('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0xe382('0x1'));router[_0xe382('0x2')]('/',controller[_0xe382('0x3')]);router[_0xe382('0x2')]('/fetch',auth[_0xe382('0x4')](),auth[_0xe382('0x5')](),controller[_0xe382('0x6')]);router[_0xe382('0x2')](_0xe382('0x7'),auth[_0xe382('0x4')](),auth[_0xe382('0x5')](),controller[_0xe382('0x8')]);router[_0xe382('0x2')]('/pull',auth[_0xe382('0x4')](),auth[_0xe382('0x5')](),controller[_0xe382('0x9')]);router[_0xe382('0x2')]('/restart',auth[_0xe382('0x4')](),controller[_0xe382('0xa')]);router['get'](_0xe382('0xb'),controller[_0xe382('0xc')]);module[_0xe382('0xd')]=router;
\ No newline at end of file
index 0727953..8ccd11c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2dc=['last','catch','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version','compare-versions','exec','../../config/environment','../../config/pm2','update','simple-git','root','index','exports','query','latest','status','json','fetch','origin','error','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','migrations','readdirSync','join','length','replace','.js','push','sort','sequelize','Migration','getQueryInterface','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','server','map'];(function(_0x16ca04,_0x2e1403){var _0x21f968=function(_0x6cf3ab){while(--_0x6cf3ab){_0x16ca04['push'](_0x16ca04['shift']());}};_0x21f968(++_0x2e1403);}(_0xc2dc,0x1b4));var _0xcc2d=function(_0x39fba9,_0x245311){_0x39fba9=_0x39fba9-0x0;var _0x3078c5=_0xc2dc[_0x39fba9];return _0x3078c5;};'use strict';var Umzug=require(_0xcc2d('0x0'));var path=require(_0xcc2d('0x1'));var fs=require('fs');var _=require(_0xcc2d('0x2'));var pkginfo=require(_0xcc2d('0x3'))(module,_0xcc2d('0x4'));var compareVersions=require(_0xcc2d('0x5'));var exec=require('child_process')[_0xcc2d('0x6')];var db=require('../../mysqldb')['db'];var config=require(_0xcc2d('0x7'));var pm2=require(_0xcc2d('0x8'));var logger=require('../../config/logger')(_0xcc2d('0x9'));var git=require(_0xcc2d('0xa'))(config[_0xcc2d('0xb')]);exports[_0xcc2d('0xc')]=function(_0x52cd16,_0x33012c){var _0x33a1c9={'current':module[_0xcc2d('0xd')][_0xcc2d('0x4')],'phonebar':0x2};if(_0x52cd16[_0xcc2d('0xe')]&&_0x52cd16[_0xcc2d('0xe')]['latest']){return git['fetch']()['tags'](function(_0x4c7256,_0x2ae6c2){_0x33a1c9[_0xcc2d('0xf')]=(_0x4c7256?module['exports']['version']:_0x2ae6c2['latest'])||'2.0.0';return _0x33012c[_0xcc2d('0x10')](0xc8)[_0xcc2d('0x11')](_0x33a1c9);});}else{return _0x33012c[_0xcc2d('0x10')](0xc8)[_0xcc2d('0x11')](_0x33a1c9);}};exports[_0xcc2d('0x12')]=function(_0x4b87ba,_0x263e70){return git[_0xcc2d('0x12')]([_0xcc2d('0x13'),'master'],function(_0x5759c9){if(_0x5759c9){logger[_0xcc2d('0x14')](_0x5759c9);return _0x263e70[_0xcc2d('0x10')](0x1f4)[_0xcc2d('0x11')](_0x5759c9);}logger[_0xcc2d('0x15')](_0xcc2d('0x16'));return _0x263e70[_0xcc2d('0x10')](0xc8)[_0xcc2d('0x11')]({'output':_0xcc2d('0x17')});});};exports[_0xcc2d('0x18')]=function(_0x1a3232,_0x34a71c){return git[_0xcc2d('0x18')](['--hard',_0xcc2d('0x19')],function(_0x5bbc69){if(_0x5bbc69){logger['error'](_0x5bbc69);return _0x34a71c[_0xcc2d('0x10')](0x1f4)['json'](_0x5bbc69);}logger[_0xcc2d('0x15')](_0xcc2d('0x1a'));return _0x34a71c[_0xcc2d('0x10')](0xc8)['json']({'output':_0xcc2d('0x1b')});});};exports[_0xcc2d('0x1c')]=function(_0x533398,_0x27c164){exec(_0xcc2d('0x1d'),function(_0x416935,_0x3e00e3,_0x1e4a71){logger[_0xcc2d('0x15')](_0x3e00e3);logger[_0xcc2d('0x15')](_0x1e4a71);if(_0x416935){logger[_0xcc2d('0x14')](_0x416935);return _0x27c164[_0xcc2d('0x10')](0x1f4)[_0xcc2d('0x11')](_0x416935);}return _0x27c164[_0xcc2d('0x10')](0xc8)[_0xcc2d('0x11')]({'output':_0x3e00e3});});};exports['restart']=function(_0x56cf2a,_0x5256c6){return pm2['restart']('motion2')['then'](function(_0x55b233){logger['info']('pm2\x20restart\x20motion\x20%s',_0x55b233);return _0x5256c6[_0xcc2d('0x10')](0xc8)[_0xcc2d('0x11')]({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})['catch'](function(_0x168d81){logger['error'](_0x168d81);return _0x5256c6[_0xcc2d('0x10')](0x1f4)['json'](_0x168d81);});};exports[_0xcc2d('0x1e')]=function(_0x3568ed,_0x43bede){var _0x74ecbd=fs[_0xcc2d('0x1f')](path[_0xcc2d('0x20')](config[_0xcc2d('0xb')],'server',_0xcc2d('0x1e')));var _0x4fc79e=[];for(var _0x4f2493=0x0;_0x4f2493<_0x74ecbd[_0xcc2d('0x21')];_0x4f2493++){var _0x1b9725=_0x74ecbd[_0x4f2493][_0xcc2d('0x22')](_0xcc2d('0x23'),'');if(compareVersions(module[_0xcc2d('0xd')][_0xcc2d('0x4')],_0x1b9725)===-0x1){_0x4fc79e[_0xcc2d('0x24')](_0x1b9725);}}if(_0x4fc79e[_0xcc2d('0x21')]){var _0x1e6893=_0x4fc79e[_0xcc2d('0x25')](compareVersions);var _0x3179b0=new Umzug({'storage':_0xcc2d('0x26'),'storageOptions':{'model':db[_0xcc2d('0x27')],'modelName':_0xcc2d('0x27'),'columnName':_0xcc2d('0x4')},'migrations':{'params':[db[_0xcc2d('0x26')][_0xcc2d('0x28')](),db[_0xcc2d('0x26')]['constructor'],function(){throw new Error(_0xcc2d('0x29'));}],'path':path['join'](config[_0xcc2d('0xb')],_0xcc2d('0x2a'),_0xcc2d('0x1e')),'pattern':/\.js$/}});_0x3179b0['up']({'migrations':_[_0xcc2d('0x2b')](_0x1e6893,function(_0x4829c5){return _0x4829c5+_0xcc2d('0x23');})})['then'](function(){return _0x43bede[_0xcc2d('0x10')](0xc8)[_0xcc2d('0x11')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module[_0xcc2d('0xd')][_0xcc2d('0x4')]+'\x20to\x20'+_[_0xcc2d('0x2c')](_0x1e6893),'migrations':_[_0xcc2d('0x20')](_0x1e6893)});})[_0xcc2d('0x2d')](function(_0x20f432){if(_0x20f432 instanceof db[_0xcc2d('0x26')][_0xcc2d('0x2e')]){return _0x43bede[_0xcc2d('0x10')](0xc8)['json']({'output':'Database\x20already\x20up-to-date'});}else{return _0x43bede[_0xcc2d('0x10')](0x1f4)[_0xcc2d('0x11')](_0x20f432);}});}else{return _0x43bede['status'](0xc8)[_0xcc2d('0x11')]({'output':_0xcc2d('0x2f')});}};
\ No newline at end of file
+var _0xc14c=['root','index','exports','query','latest','tags','2.0.0','status','json','fetch','origin','master','error','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','git\x20reset\x20--hard','restart','motion2','then','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','server','length','replace','.js','push','sort','sequelize','Migration','getQueryInterface','join','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version','compare-versions','exec','../../config/environment','../../config/pm2','update','simple-git'];(function(_0x28ea3b,_0x13d7a1){var _0x5ac766=function(_0x1ea77b){while(--_0x1ea77b){_0x28ea3b['push'](_0x28ea3b['shift']());}};_0x5ac766(++_0x13d7a1);}(_0xc14c,0x85));var _0xcc14=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xc14c[_0x40a045];return _0x1a687c;};'use strict';var Umzug=require(_0xcc14('0x0'));var path=require(_0xcc14('0x1'));var fs=require('fs');var _=require(_0xcc14('0x2'));var pkginfo=require(_0xcc14('0x3'))(module,_0xcc14('0x4'));var compareVersions=require(_0xcc14('0x5'));var exec=require('child_process')[_0xcc14('0x6')];var db=require('../../mysqldb')['db'];var config=require(_0xcc14('0x7'));var pm2=require(_0xcc14('0x8'));var logger=require('../../config/logger')(_0xcc14('0x9'));var git=require(_0xcc14('0xa'))(config[_0xcc14('0xb')]);exports[_0xcc14('0xc')]=function(_0x46321c,_0x3371ab){var _0x3629cc={'current':module[_0xcc14('0xd')][_0xcc14('0x4')],'phonebar':0x2};if(_0x46321c[_0xcc14('0xe')]&&_0x46321c[_0xcc14('0xe')][_0xcc14('0xf')]){return git['fetch']()[_0xcc14('0x10')](function(_0x2b394f,_0x38b43c){_0x3629cc[_0xcc14('0xf')]=(_0x2b394f?module[_0xcc14('0xd')][_0xcc14('0x4')]:_0x38b43c[_0xcc14('0xf')])||_0xcc14('0x11');return _0x3371ab[_0xcc14('0x12')](0xc8)['json'](_0x3629cc);});}else{return _0x3371ab[_0xcc14('0x12')](0xc8)[_0xcc14('0x13')](_0x3629cc);}};exports[_0xcc14('0x14')]=function(_0xcca209,_0xf20ff5){return git[_0xcc14('0x14')]([_0xcc14('0x15'),_0xcc14('0x16')],function(_0x43a9c2){if(_0x43a9c2){logger[_0xcc14('0x17')](_0x43a9c2);return _0xf20ff5[_0xcc14('0x12')](0x1f4)[_0xcc14('0x13')](_0x43a9c2);}logger[_0xcc14('0x18')](_0xcc14('0x19'));return _0xf20ff5[_0xcc14('0x12')](0xc8)[_0xcc14('0x13')]({'output':_0xcc14('0x1a')});});};exports[_0xcc14('0x1b')]=function(_0x2f4ce2,_0x1d33df){return git[_0xcc14('0x1b')](['--hard','FETCH_HEAD'],function(_0x402f39){if(_0x402f39){logger[_0xcc14('0x17')](_0x402f39);return _0x1d33df[_0xcc14('0x12')](0x1f4)['json'](_0x402f39);}logger[_0xcc14('0x18')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x1d33df[_0xcc14('0x12')](0xc8)[_0xcc14('0x13')]({'output':_0xcc14('0x1c')});});};exports['pull']=function(_0x5b242c,_0x143ab2){exec('npm\x20install\x20--production',function(_0x12fb19,_0x51462f,_0xec16b9){logger['info'](_0x51462f);logger[_0xcc14('0x18')](_0xec16b9);if(_0x12fb19){logger[_0xcc14('0x17')](_0x12fb19);return _0x143ab2['status'](0x1f4)[_0xcc14('0x13')](_0x12fb19);}return _0x143ab2['status'](0xc8)[_0xcc14('0x13')]({'output':_0x51462f});});};exports[_0xcc14('0x1d')]=function(_0x9afcfc,_0xdb37d3){return pm2['restart'](_0xcc14('0x1e'))[_0xcc14('0x1f')](function(_0x4a353c){logger[_0xcc14('0x18')]('pm2\x20restart\x20motion\x20%s',_0x4a353c);return _0xdb37d3[_0xcc14('0x12')](0xc8)[_0xcc14('0x13')]({'output':_0xcc14('0x20')});})[_0xcc14('0x21')](function(_0xc66942){logger['error'](_0xc66942);return _0xdb37d3[_0xcc14('0x12')](0x1f4)[_0xcc14('0x13')](_0xc66942);});};exports[_0xcc14('0x22')]=function(_0x3556c7,_0x491bf8){var _0x36b83d=fs['readdirSync'](path['join'](config[_0xcc14('0xb')],_0xcc14('0x23'),_0xcc14('0x22')));var _0x3a383b=[];for(var _0x2a5cdf=0x0;_0x2a5cdf<_0x36b83d[_0xcc14('0x24')];_0x2a5cdf++){var _0x5abaca=_0x36b83d[_0x2a5cdf][_0xcc14('0x25')](_0xcc14('0x26'),'');if(compareVersions(module[_0xcc14('0xd')][_0xcc14('0x4')],_0x5abaca)===-0x1){_0x3a383b[_0xcc14('0x27')](_0x5abaca);}}if(_0x3a383b[_0xcc14('0x24')]){var _0x2610b8=_0x3a383b[_0xcc14('0x28')](compareVersions);var _0x2fdca3=new Umzug({'storage':_0xcc14('0x29'),'storageOptions':{'model':db[_0xcc14('0x2a')],'modelName':_0xcc14('0x2a'),'columnName':'version'},'migrations':{'params':[db[_0xcc14('0x29')][_0xcc14('0x2b')](),db[_0xcc14('0x29')]['constructor'],function(){throw new Error('Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.');}],'path':path[_0xcc14('0x2c')](config['root'],_0xcc14('0x23'),'migrations'),'pattern':/\.js$/}});_0x2fdca3['up']({'migrations':_['map'](_0x2610b8,function(_0xaf25f3){return _0xaf25f3+_0xcc14('0x26');})})['then'](function(){return _0x491bf8[_0xcc14('0x12')](0xc8)[_0xcc14('0x13')]({'output':_0xcc14('0x2d')+module['exports']['version']+_0xcc14('0x2e')+_['last'](_0x2610b8),'migrations':_[_0xcc14('0x2c')](_0x2610b8)});})['catch'](function(_0x4e3860){if(_0x4e3860 instanceof db[_0xcc14('0x29')]['UniqueConstraintError']){return _0x491bf8[_0xcc14('0x12')](0xc8)['json']({'output':_0xcc14('0x2f')});}else{return _0x491bf8[_0xcc14('0x12')](0x1f4)[_0xcc14('0x13')](_0x4e3860);}});}else{return _0x491bf8['status'](0xc8)['json']({'output':_0xcc14('0x2f')});}};
\ No newline at end of file
index 542db91..35d946f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x376d=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path'];(function(_0x23551e,_0x56f82f){var _0x4e36ff=function(_0x2249ad){while(--_0x2249ad){_0x23551e['push'](_0x23551e['shift']());}};_0x4e36ff(++_0x56f82f);}(_0x376d,0x135));var _0xd376=function(_0xf5ba90,_0xc84738){_0xf5ba90=_0xf5ba90-0x0;var _0x15f6b5=_0x376d[_0xf5ba90];return _0x15f6b5;};'use strict';var multer=require(_0xd376('0x0'));var util=require(_0xd376('0x1'));var path=require(_0xd376('0x2'));var timeout=require(_0xd376('0x3'));var express=require(_0xd376('0x4'));var router=express[_0xd376('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xd376('0x6'));var interaction=require(_0xd376('0x7'));var config=require(_0xd376('0x8'));var controller=require(_0xd376('0x9'));router[_0xd376('0xa')]('/',auth[_0xd376('0xb')](),controller[_0xd376('0xc')]);router['get'](_0xd376('0xd'),auth['isAuthenticated'](),controller[_0xd376('0xe')]);router[_0xd376('0xa')](_0xd376('0xf'),auth[_0xd376('0xb')](),controller[_0xd376('0x10')]);router[_0xd376('0x11')]('/',auth[_0xd376('0xb')](),controller[_0xd376('0x12')]);router[_0xd376('0x13')](_0xd376('0xf'),auth[_0xd376('0xb')](),controller[_0xd376('0x14')]);router[_0xd376('0x15')](_0xd376('0xf'),auth['isAuthenticated'](),controller[_0xd376('0x16')]);module[_0xd376('0x17')]=router;
\ No newline at end of file
+var _0xf9b9=['./voiceAgentReport.controller','get','isAuthenticated','show','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x288f5e,_0x205edd){var _0x476cc9=function(_0x796f53){while(--_0x796f53){_0x288f5e['push'](_0x288f5e['shift']());}};_0x476cc9(++_0x205edd);}(_0xf9b9,0x1c4));var _0x9f9b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf9b9[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x9f9b('0x0'));var util=require(_0x9f9b('0x1'));var path=require('path');var timeout=require(_0x9f9b('0x2'));var express=require(_0x9f9b('0x3'));var router=express['Router']();var fs_extra=require(_0x9f9b('0x4'));var auth=require(_0x9f9b('0x5'));var interaction=require(_0x9f9b('0x6'));var config=require('../../config/environment');var controller=require(_0x9f9b('0x7'));router[_0x9f9b('0x8')]('/',auth[_0x9f9b('0x9')](),controller['index']);router[_0x9f9b('0x8')]('/describe',auth[_0x9f9b('0x9')](),controller['describe']);router[_0x9f9b('0x8')]('/:id',auth[_0x9f9b('0x9')](),controller[_0x9f9b('0xa')]);router['post']('/',auth[_0x9f9b('0x9')](),controller['create']);router[_0x9f9b('0xb')](_0x9f9b('0xc'),auth[_0x9f9b('0x9')](),controller[_0x9f9b('0xd')]);router[_0x9f9b('0xe')](_0x9f9b('0xc'),auth['isAuthenticated'](),controller[_0x9f9b('0xf')]);module[_0x9f9b('0x10')]=router;
\ No newline at end of file
index f5e7f66..a519d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x937d=['INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','STRING','DATE','BOOLEAN'];(function(_0x301065,_0x33ef1a){var _0x20bcac=function(_0x2625fe){while(--_0x2625fe){_0x301065['push'](_0x301065['shift']());}};_0x20bcac(++_0x33ef1a);}(_0x937d,0x1f4));var _0xd937=function(_0x2c0754,_0x59f325){_0x2c0754=_0x2c0754-0x0;var _0x42e4f6=_0x937d[_0x2c0754];return _0x42e4f6;};'use strict';var Sequelize=require(_0xd937('0x0'));module['exports']={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xd937('0x1')]},'calleridname':{'type':Sequelize[_0xd937('0x1')]},'queue':{'type':Sequelize[_0xd937('0x1')]},'interface':{'type':Sequelize[_0xd937('0x1')]},'membername':{'type':Sequelize[_0xd937('0x1')]},'agentcalledAt':{'type':Sequelize[_0xd937('0x2')]},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0xd937('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0xd937('0x2')]},'agentdumpAt':{'type':Sequelize[_0xd937('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0xd937('0x3')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xd937('0x3')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0xd937('0x4')]},'agentacw':{'type':Sequelize[_0xd937('0x3')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xd937('0x4')]},'reason':{'type':Sequelize[_0xd937('0x1')]},'lastevent':{'type':Sequelize[_0xd937('0x1')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0xd937('0x4')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xd937('0x1')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xd937('0x1')]},'accountcode':{'type':Sequelize[_0xd937('0x1')]},'context':{'type':Sequelize[_0xd937('0x1')]},'exten':{'type':Sequelize[_0xd937('0x1')]},'priority':{'type':Sequelize[_0xd937('0x1')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xd937('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0xd937('0x1')]},'destcalleridnum':{'type':Sequelize[_0xd937('0x1')]},'destcalleridname':{'type':Sequelize[_0xd937('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xd937('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xd937('0x1')]},'destlanguage':{'type':Sequelize[_0xd937('0x1')]},'destaccountcode':{'type':Sequelize[_0xd937('0x1')]},'destcontext':{'type':Sequelize[_0xd937('0x1')]},'destexten':{'type':Sequelize[_0xd937('0x1')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0xd937('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xd937('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0xd937('0x1')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xd937('0x1')],'comment':_0xd937('0x5')},'transferexten':{'type':Sequelize[_0xd937('0x1')]},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize[_0xd937('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x81cb=['BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE','INTEGER'];(function(_0x4e1419,_0xe65f19){var _0x5bbbac=function(_0x3a2d3f){while(--_0x3a2d3f){_0x4e1419['push'](_0x4e1419['shift']());}};_0x5bbbac(++_0xe65f19);}(_0x81cb,0xaa));var _0xb81c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x81cb[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xb81c('0x0'));module[_0xb81c('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xb81c('0x2')]},'calleridnum':{'type':Sequelize[_0xb81c('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xb81c('0x2')]},'interface':{'type':Sequelize[_0xb81c('0x2')]},'membername':{'type':Sequelize[_0xb81c('0x2')]},'agentcalledAt':{'type':Sequelize[_0xb81c('0x3')]},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0xb81c('0x3')]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0xb81c('0x4')]},'agentcomplete':{'type':Sequelize[_0xb81c('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xb81c('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xb81c('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize[_0xb81c('0x4')]},'agentacw':{'type':Sequelize[_0xb81c('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xb81c('0x4')]},'reason':{'type':Sequelize[_0xb81c('0x2')]},'lastevent':{'type':Sequelize[_0xb81c('0x2')]},'channel':{'type':Sequelize[_0xb81c('0x2')]},'channelstate':{'type':Sequelize[_0xb81c('0x4')]},'channelstatedesc':{'type':Sequelize[_0xb81c('0x2')]},'connectedlinenum':{'type':Sequelize[_0xb81c('0x2')]},'connectedlinename':{'type':Sequelize[_0xb81c('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xb81c('0x2')]},'context':{'type':Sequelize[_0xb81c('0x2')]},'exten':{'type':Sequelize[_0xb81c('0x2')]},'priority':{'type':Sequelize[_0xb81c('0x2')]},'destchannel':{'type':Sequelize[_0xb81c('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xb81c('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0xb81c('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xb81c('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0xb81c('0x2')]},'destaccountcode':{'type':Sequelize[_0xb81c('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0xb81c('0x2')]},'destpriority':{'type':Sequelize[_0xb81c('0x2')]},'destuniqueid':{'type':Sequelize[_0xb81c('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize['STRING']},'answeredelsewheremembername':{'type':Sequelize[_0xb81c('0x2')]},'transfer':{'type':Sequelize[_0xb81c('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0xb81c('0x6')},'transferexten':{'type':Sequelize[_0xb81c('0x2')]},'transferuniqueid':{'type':Sequelize[_0xb81c('0x2')]},'agententerreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 2b83a2e..4acac5d 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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'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(_0xb24a3e,_0x4a3594){var _0x4038d7=function(_0x1ea3c3){while(--_0x1ea3c3){_0xb24a3e['push'](_0xb24a3e['shift']());}};_0x4038d7(++_0x4a3594);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'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 067d7ed..2f220b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d0=['define','VoiceAgentReport','uniqueid','destuniqueid','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x42a1b3,_0x826383){var _0xa8cdfc=function(_0x157aaa){while(--_0x157aaa){_0x42a1b3['push'](_0x42a1b3['shift']());}};_0xa8cdfc(++_0x826383);}(_0x85d0,0x164));var _0x085d=function(_0x238ef9,_0x56e608){_0x238ef9=_0x238ef9-0x0;var _0x3ee243=_0x85d0[_0x238ef9];return _0x3ee243;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x085d('0x0'));var BPromise=require(_0x085d('0x1'));var rp=require(_0x085d('0x2'));var fs=require('fs');var path=require(_0x085d('0x3'));var rimraf=require(_0x085d('0x4'));var config=require(_0x085d('0x5'));var attributes=require('./voiceAgentReport.attributes');module[_0x085d('0x6')]=function(_0x5c917f,_0x364f09){return _0x5c917f[_0x085d('0x7')](_0x085d('0x8'),attributes,{'tableName':'report_agent','paranoid':![],'indexes':[{'fields':[_0x085d('0x9'),_0x085d('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7923=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','exports','define','VoiceAgentReport','destuniqueid','lodash'];(function(_0x52a857,_0xc99fa1){var _0x4e2aae=function(_0x5410d9){while(--_0x5410d9){_0x52a857['push'](_0x52a857['shift']());}};_0x4e2aae(++_0xc99fa1);}(_0x7923,0x8f));var _0x3792=function(_0x1c5ec4,_0x27d08e){_0x1c5ec4=_0x1c5ec4-0x0;var _0x54e39d=_0x7923[_0x1c5ec4];return _0x54e39d;};'use strict';var _=require(_0x3792('0x0'));var util=require(_0x3792('0x1'));var logger=require(_0x3792('0x2'))(_0x3792('0x3'));var moment=require(_0x3792('0x4'));var BPromise=require(_0x3792('0x5'));var rp=require(_0x3792('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3792('0x7'));var config=require('../../config/environment');var attributes=require('./voiceAgentReport.attributes');module[_0x3792('0x8')]=function(_0x4f98c6,_0x326cc2){return _0x4f98c6[_0x3792('0x9')](_0x3792('0xa'),attributes,{'tableName':'report_agent','paranoid':![],'indexes':[{'fields':['uniqueid',_0x3792('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 2e803c0..c781076 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5859=['VoiceAgentReport','create','options','raw','debug','stringify','catch','UpdateVoiceAgentReport','body','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','VoiceAgentReport,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateVoiceAgentReport'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5859,0x198));var _0x9585=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x5859[_0x5d2803];return _0xdcad2c;};'use strict';var _=require(_0x9585('0x0'));var util=require(_0x9585('0x1'));var moment=require(_0x9585('0x2'));var BPromise=require(_0x9585('0x3'));var rs=require(_0x9585('0x4'));var fs=require('fs');var Redis=require(_0x9585('0x5'));var db=require(_0x9585('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x9585('0x7'))(_0x9585('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x9585('0x9')][_0x9585('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x328e00,_0x8047a1,_0xc39d7b){return new BPromise(function(_0x15ac61,_0x2b2dbc){return client['request'](_0x328e00,_0xc39d7b)[_0x9585('0xb')](function(_0x37f450){logger[_0x9585('0xc')](_0x9585('0xd'),_0x8047a1,_0x9585('0xe'));logger['debug'](_0x9585('0xf'),_0x8047a1,_0x9585('0xe'),JSON['stringify'](_0x37f450));if(_0x37f450[_0x9585('0x10')]){if(_0x37f450[_0x9585('0x10')][_0x9585('0x11')]===0x1f4){logger[_0x9585('0x10')](_0x9585('0xd'),_0x8047a1,_0x37f450[_0x9585('0x10')][_0x9585('0x12')]);return _0x2b2dbc(_0x37f450[_0x9585('0x10')]['message']);}logger['error'](_0x9585('0xd'),_0x8047a1,_0x37f450[_0x9585('0x10')]['message']);return _0x15ac61(_0x37f450[_0x9585('0x10')][_0x9585('0x12')]);}else{logger['info'](_0x9585('0xd'),_0x8047a1,_0x9585('0xe'));_0x15ac61(_0x37f450[_0x9585('0x13')][_0x9585('0x12')]);}})['catch'](function(_0x50b99e){logger['error'](_0x9585('0xd'),_0x8047a1,_0x50b99e);_0x2b2dbc(_0x50b99e);});});}exports[_0x9585('0x14')]=function(_0x39211e){var _0x5e0ec7=this;return new Promise(function(_0x1cc283,_0x2dc70a){return db[_0x9585('0x15')][_0x9585('0x16')](_0x39211e['body'],{'raw':_0x39211e[_0x9585('0x17')]?_0x39211e[_0x9585('0x17')][_0x9585('0x18')]===undefined?!![]:![]:!![]})[_0x9585('0xb')](function(_0x5adaae){logger[_0x9585('0xc')](_0x9585('0x14'),_0x39211e);logger[_0x9585('0x19')]('CreateVoiceAgentReport',_0x39211e,JSON[_0x9585('0x1a')](_0x5adaae));_0x1cc283(_0x5adaae);})[_0x9585('0x1b')](function(_0x439a35){logger[_0x9585('0x10')](_0x9585('0x14'),_0x439a35['message'],_0x39211e);_0x2dc70a(_0x5e0ec7[_0x9585('0x10')](0x1f4,_0x439a35[_0x9585('0x12')]));});});};exports[_0x9585('0x1c')]=function(_0x5a639b){var _0x1bcbd5=this;return new Promise(function(_0x4c131f,_0x13b868){return db[_0x9585('0x15')]['update'](_0x5a639b[_0x9585('0x1d')],{'raw':_0x5a639b['options']?_0x5a639b[_0x9585('0x17')][_0x9585('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5a639b[_0x9585('0x17')]?_0x5a639b['options'][_0x9585('0x1e')]||null:null,'attributes':_0x5a639b[_0x9585('0x17')]?_0x5a639b['options'][_0x9585('0x1f')]||null:null,'limit':_0x5a639b[_0x9585('0x17')]?_0x5a639b[_0x9585('0x17')][_0x9585('0x20')]||null:null})[_0x9585('0xb')](function(_0x460988){logger[_0x9585('0xc')](_0x9585('0x1c'),_0x5a639b);logger[_0x9585('0x19')](_0x9585('0x1c'),_0x5a639b,JSON[_0x9585('0x1a')](_0x460988));_0x4c131f(_0x460988);})[_0x9585('0x1b')](function(_0x60bf07){logger[_0x9585('0x10')]('UpdateVoiceAgentReport',_0x60bf07[_0x9585('0x12')],_0x5a639b);_0x13b868(_0x1bcbd5['error'](0x1f4,_0x60bf07[_0x9585('0x12')]));});});};
\ No newline at end of file
+var _0xe0dd=['attributes','UpdateVoiceAgentReport','stringify','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','error','VoiceAgentReport,\x20%s,\x20%s','message','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','raw','update','where'];(function(_0x124577,_0x2ad2de){var _0x184b77=function(_0x138388){while(--_0x138388){_0x124577['push'](_0x124577['shift']());}};_0x184b77(++_0x2ad2de);}(_0xe0dd,0xfb));var _0xde0d=function(_0x5c4585,_0x3d0eab){_0x5c4585=_0x5c4585-0x0;var _0x21dede=_0xe0dd[_0x5c4585];return _0x21dede;};'use strict';var _=require('lodash');var util=require(_0xde0d('0x0'));var moment=require('moment');var BPromise=require(_0xde0d('0x1'));var rs=require(_0xde0d('0x2'));var fs=require('fs');var Redis=require(_0xde0d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xde0d('0x4'));var logger=require(_0xde0d('0x5'))(_0xde0d('0x6'));var config=require(_0xde0d('0x7'));var jayson=require(_0xde0d('0x8'));var client=jayson[_0xde0d('0x9')][_0xde0d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc60f34,_0x343baa,_0x21a2c2){return new BPromise(function(_0x792e33,_0x1edf49){return client['request'](_0xc60f34,_0x21a2c2)[_0xde0d('0xb')](function(_0x5fb8f8){logger[_0xde0d('0xc')]('VoiceAgentReport,\x20%s,\x20%s',_0x343baa,_0xde0d('0xd'));logger[_0xde0d('0xe')]('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0x343baa,_0xde0d('0xd'),JSON['stringify'](_0x5fb8f8));if(_0x5fb8f8[_0xde0d('0xf')]){if(_0x5fb8f8[_0xde0d('0xf')]['code']===0x1f4){logger['error'](_0xde0d('0x10'),_0x343baa,_0x5fb8f8[_0xde0d('0xf')][_0xde0d('0x11')]);return _0x1edf49(_0x5fb8f8['error'][_0xde0d('0x11')]);}logger['error'](_0xde0d('0x10'),_0x343baa,_0x5fb8f8[_0xde0d('0xf')][_0xde0d('0x11')]);return _0x792e33(_0x5fb8f8['error'][_0xde0d('0x11')]);}else{logger[_0xde0d('0xc')](_0xde0d('0x10'),_0x343baa,_0xde0d('0xd'));_0x792e33(_0x5fb8f8[_0xde0d('0x12')]['message']);}})[_0xde0d('0x13')](function(_0x349451){logger['error'](_0xde0d('0x10'),_0x343baa,_0x349451);_0x1edf49(_0x349451);});});}exports[_0xde0d('0x14')]=function(_0x8c7459){var _0x50d980=this;return new Promise(function(_0x4c0a2c,_0x2fd587){return db[_0xde0d('0x15')][_0xde0d('0x16')](_0x8c7459[_0xde0d('0x17')],{'raw':_0x8c7459[_0xde0d('0x18')]?_0x8c7459[_0xde0d('0x18')][_0xde0d('0x19')]===undefined?!![]:![]:!![]})[_0xde0d('0xb')](function(_0x359c19){logger[_0xde0d('0xc')]('CreateVoiceAgentReport',_0x8c7459);logger[_0xde0d('0xe')]('CreateVoiceAgentReport',_0x8c7459,JSON['stringify'](_0x359c19));_0x4c0a2c(_0x359c19);})[_0xde0d('0x13')](function(_0x1f69b0){logger[_0xde0d('0xf')]('CreateVoiceAgentReport',_0x1f69b0['message'],_0x8c7459);_0x2fd587(_0x50d980[_0xde0d('0xf')](0x1f4,_0x1f69b0[_0xde0d('0x11')]));});});};exports['UpdateVoiceAgentReport']=function(_0x5905e8){var _0x32730b=this;return new Promise(function(_0x3fdb8e,_0xc48b20){return db[_0xde0d('0x15')][_0xde0d('0x1a')](_0x5905e8[_0xde0d('0x17')],{'raw':_0x5905e8['options']?_0x5905e8[_0xde0d('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5905e8[_0xde0d('0x18')]?_0x5905e8['options'][_0xde0d('0x1b')]||null:null,'attributes':_0x5905e8[_0xde0d('0x18')]?_0x5905e8[_0xde0d('0x18')][_0xde0d('0x1c')]||null:null,'limit':_0x5905e8[_0xde0d('0x18')]?_0x5905e8['options']['limit']||null:null})[_0xde0d('0xb')](function(_0x57fc1f){logger['info']('UpdateVoiceAgentReport',_0x5905e8);logger['debug'](_0xde0d('0x1d'),_0x5905e8,JSON[_0xde0d('0x1e')](_0x57fc1f));_0x3fdb8e(_0x57fc1f);})[_0xde0d('0x13')](function(_0x2d60d4){logger[_0xde0d('0xf')](_0xde0d('0x1d'),_0x2d60d4[_0xde0d('0x11')],_0x5905e8);_0xc48b20(_0x32730b[_0xde0d('0xf')](0x1f4,_0x2d60d4['message']));});});};
\ No newline at end of file
index 5ba1654..a7d769d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['/:id','show','post','create','put','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','isAuthenticated','index','describe'];(function(_0x300972,_0x3ddda8){var _0x25edb3=function(_0x1c0c1e){while(--_0x1c0c1e){_0x300972['push'](_0x300972['shift']());}};_0x25edb3(++_0x3ddda8);}(_0xa41a,0x6b));var _0xaa41=function(_0x40ca76,_0x1dd4b8){_0x40ca76=_0x40ca76-0x0;var _0x206179=_0xa41a[_0x40ca76];return _0x206179;};'use strict';var multer=require(_0xaa41('0x0'));var util=require(_0xaa41('0x1'));var path=require('path');var timeout=require(_0xaa41('0x2'));var express=require(_0xaa41('0x3'));var router=express[_0xaa41('0x4')]();var fs_extra=require(_0xaa41('0x5'));var auth=require(_0xaa41('0x6'));var interaction=require(_0xaa41('0x7'));var config=require(_0xaa41('0x8'));var controller=require(_0xaa41('0x9'));router['get']('/',auth[_0xaa41('0xa')](),controller[_0xaa41('0xb')]);router['get']('/describe',auth[_0xaa41('0xa')](),controller[_0xaa41('0xc')]);router['get'](_0xaa41('0xd'),auth[_0xaa41('0xa')](),controller[_0xaa41('0xe')]);router[_0xaa41('0xf')]('/',auth[_0xaa41('0xa')](),controller[_0xaa41('0x10')]);router[_0xaa41('0x11')](_0xaa41('0xd'),auth[_0xaa41('0xa')](),controller['update']);router[_0xaa41('0x12')](_0xaa41('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xaa41('0x13')]=router;
\ No newline at end of file
+var _0x5ad3=['isAuthenticated','index','describe','create','/:id','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get'];(function(_0x1daaf1,_0x4c488c){var _0x1a6973=function(_0x327cff){while(--_0x327cff){_0x1daaf1['push'](_0x1daaf1['shift']());}};_0x1a6973(++_0x4c488c);}(_0x5ad3,0x1e2));var _0x35ad=function(_0xd299c3,_0x4ba0f1){_0xd299c3=_0xd299c3-0x0;var _0x376574=_0x5ad3[_0xd299c3];return _0x376574;};'use strict';var multer=require(_0x35ad('0x0'));var util=require(_0x35ad('0x1'));var path=require(_0x35ad('0x2'));var timeout=require(_0x35ad('0x3'));var express=require('express');var router=express[_0x35ad('0x4')]();var fs_extra=require(_0x35ad('0x5'));var auth=require(_0x35ad('0x6'));var interaction=require(_0x35ad('0x7'));var config=require(_0x35ad('0x8'));var controller=require(_0x35ad('0x9'));router[_0x35ad('0xa')]('/',auth[_0x35ad('0xb')](),controller[_0x35ad('0xc')]);router[_0x35ad('0xa')]('/describe',auth[_0x35ad('0xb')](),controller[_0x35ad('0xd')]);router[_0x35ad('0xa')]('/:id',auth[_0x35ad('0xb')](),controller['show']);router['post']('/',auth[_0x35ad('0xb')](),controller[_0x35ad('0xe')]);router['put'](_0x35ad('0xf'),auth[_0x35ad('0xb')](),controller['update']);router['delete'](_0x35ad('0xf'),auth[_0x35ad('0xb')](),controller['destroy']);module[_0x35ad('0x10')]=router;
\ No newline at end of file
index bd8e812..1d17dc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x315c=['dialer','TEXT','DATE','INTEGER','sequelize','exports','STRING','inbound','internal','outbound','inbound-fax'];(function(_0x554fe5,_0x5d8a02){var _0x37b0f5=function(_0x4d5c30){while(--_0x4d5c30){_0x554fe5['push'](_0x554fe5['shift']());}};_0x37b0f5(++_0x5d8a02);}(_0x315c,0xd5));var _0xc315=function(_0x83bd8e,_0x2d92ff){_0x83bd8e=_0x83bd8e-0x0;var _0x241a8f=_0x315c[_0x83bd8e];return _0x241a8f;};'use strict';var Sequelize=require(_0xc315('0x0'));module[_0xc315('0x1')]={'uniqueid':{'type':Sequelize[_0xc315('0x2')]},'type':{'type':Sequelize['ENUM'](_0xc315('0x3'),_0xc315('0x4'),_0xc315('0x5'),_0xc315('0x6'),'outbound-fax',_0xc315('0x7'))},'tag':{'type':Sequelize[_0xc315('0x2')]},'accountcode':{'type':Sequelize[_0xc315('0x2')]},'source':{'type':Sequelize[_0xc315('0x2')]},'destination':{'type':Sequelize[_0xc315('0x2')]},'destinationcontext':{'type':Sequelize[_0xc315('0x2')]},'callerid':{'type':Sequelize[_0xc315('0x2')]},'channel':{'type':Sequelize[_0xc315('0x2')]},'destinationchannel':{'type':Sequelize[_0xc315('0x2')]},'lastapplication':{'type':Sequelize[_0xc315('0x2')]},'lastdata':{'type':Sequelize[_0xc315('0x8')]},'starttime':{'type':Sequelize[_0xc315('0x9')]},'systemanswertime':{'type':Sequelize[_0xc315('0x9')]},'answertime':{'type':Sequelize[_0xc315('0x9')]},'endtime':{'type':Sequelize[_0xc315('0x9')]},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0xc315('0xa')]},'mohtime':{'type':Sequelize[_0xc315('0xa')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xc315('0x2')]},'amaflags':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize[_0xc315('0x2')]},'userSecondDisposition':{'type':Sequelize[_0xc315('0x2')]},'userThirdDisposition':{'type':Sequelize[_0xc315('0x2')]},'note':{'type':Sequelize[_0xc315('0x2')]},'prefix':{'type':Sequelize[_0xc315('0x2')]},'routeid':{'type':Sequelize[_0xc315('0xa')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xac80=['dialer','DATE','INTEGER','sequelize','exports','STRING','ENUM','inbound','internal','outbound','outbound-fax'];(function(_0x38d0f0,_0x29dc18){var _0x329ee0=function(_0x5ad5b3){while(--_0x5ad5b3){_0x38d0f0['push'](_0x38d0f0['shift']());}};_0x329ee0(++_0x29dc18);}(_0xac80,0x163));var _0x0ac8=function(_0x2ae24e,_0x26305b){_0x2ae24e=_0x2ae24e-0x0;var _0x1295b0=_0xac80[_0x2ae24e];return _0x1295b0;};'use strict';var Sequelize=require(_0x0ac8('0x0'));module[_0x0ac8('0x1')]={'uniqueid':{'type':Sequelize[_0x0ac8('0x2')]},'type':{'type':Sequelize[_0x0ac8('0x3')](_0x0ac8('0x4'),_0x0ac8('0x5'),_0x0ac8('0x6'),'inbound-fax',_0x0ac8('0x7'),_0x0ac8('0x8'))},'tag':{'type':Sequelize[_0x0ac8('0x2')]},'accountcode':{'type':Sequelize[_0x0ac8('0x2')]},'source':{'type':Sequelize[_0x0ac8('0x2')]},'destination':{'type':Sequelize[_0x0ac8('0x2')]},'destinationcontext':{'type':Sequelize[_0x0ac8('0x2')]},'callerid':{'type':Sequelize[_0x0ac8('0x2')]},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize[_0x0ac8('0x2')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize['DATE']},'systemanswertime':{'type':Sequelize[_0x0ac8('0x9')]},'answertime':{'type':Sequelize[_0x0ac8('0x9')]},'endtime':{'type':Sequelize[_0x0ac8('0x9')]},'duration':{'type':Sequelize[_0x0ac8('0xa')]},'billableseconds':{'type':Sequelize[_0x0ac8('0xa')]},'mohtime':{'type':Sequelize[_0x0ac8('0xa')],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x0ac8('0x2')]},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize[_0x0ac8('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x0ac8('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x0ac8('0x2')]},'note':{'type':Sequelize[_0x0ac8('0x2')]},'prefix':{'type':Sequelize[_0x0ac8('0x2')]},'routeid':{'type':Sequelize[_0x0ac8('0xa')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 8f586db..491057f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['pick','filter','merge','options','VoiceCallReport','then','includeAll','include','fullname','alias','User','findAll','rows','catch','show','params','keys','find','create','destroy','describe','body','uniqueid','user','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','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where'];(function(_0x580647,_0x43d2c3){var _0x5f0792=function(_0x386cef){while(--_0x386cef){_0x580647['push'](_0x580647['shift']());}};_0x5f0792(++_0x43d2c3);}(_0x2ef3,0xba));var _0x32ef=function(_0x4ced12,_0x515240){_0x4ced12=_0x4ced12-0x0;var _0x1df850=_0x2ef3[_0x4ced12];return _0x1df850;};'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);};}exports['index']=function(_0xd65fde,_0x2f5d06){var _0x5a04cd={},_0x12de1a={},_0x3c569d={'count':0x0,'rows':[]};var _0x30b250=_[_0x32ef('0x29')](db['VoiceCallReport'][_0x32ef('0x2a')],function(_0x22bf86){return{'name':_0x22bf86[_0x32ef('0x2b')],'type':_0x22bf86[_0x32ef('0x2c')][_0x32ef('0x2d')]};});_0x12de1a[_0x32ef('0x2e')]=_[_0x32ef('0x29')](_0x30b250,'name');_0x12de1a[_0x32ef('0x2f')]=_['keys'](_0xd65fde[_0x32ef('0x2f')]);_0x12de1a[_0x32ef('0x30')]=_['intersection'](_0x12de1a[_0x32ef('0x2e')],_0x12de1a[_0x32ef('0x2f')]);_0x5a04cd[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0x12de1a[_0x32ef('0x2e')],qs['fields'](_0xd65fde['query'][_0x32ef('0x33')]));_0x5a04cd['attributes']=_0x5a04cd[_0x32ef('0x31')][_0x32ef('0x34')]?_0x5a04cd[_0x32ef('0x31')]:_0x12de1a[_0x32ef('0x2e')];if(!_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x35')]('nolimit')){_0x5a04cd['limit']=qs['limit'](_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x1d')]);_0x5a04cd[_0x32ef('0x1b')]=qs['offset'](_0xd65fde['query'][_0x32ef('0x1b')]);}_0x5a04cd[_0x32ef('0x36')]=qs[_0x32ef('0x37')](_0xd65fde['query']['sort']);_0x5a04cd[_0x32ef('0x38')]=qs[_0x32ef('0x30')](_[_0x32ef('0x39')](_0xd65fde[_0x32ef('0x2f')],_0x12de1a[_0x32ef('0x30')]),_0x30b250);if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]){_0x5a04cd[_0x32ef('0x38')]=_[_0x32ef('0x3b')](_0x5a04cd['where'],{'$or':_[_0x32ef('0x29')](_0x30b250,function(_0x36e374){if(_0x36e374[_0x32ef('0x2c')]!=='VIRTUAL'){var _0x365125={};_0x365125[_0x36e374[_0x32ef('0x27')]]={'$like':'%'+_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]+'%'};return _0x365125;}})});}_0x5a04cd=_[_0x32ef('0x3b')]({},_0x5a04cd,_0xd65fde[_0x32ef('0x3c')]);var _0x256c40={'where':_0x5a04cd[_0x32ef('0x38')]};return db[_0x32ef('0x3d')][_0x32ef('0x1e')](_0x256c40)[_0x32ef('0x3e')](function(_0x4615b4){_0x3c569d['count']=_0x4615b4;if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3f')]){_0x5a04cd[_0x32ef('0x40')]=[{'attributes':['id',_0x32ef('0x27'),_0x32ef('0x41'),_0x32ef('0x42')],'model':db[_0x32ef('0x43')],'as':'User'}];}return db['VoiceCallReport'][_0x32ef('0x44')](_0x5a04cd);})[_0x32ef('0x3e')](function(_0x2a33dd){_0x3c569d[_0x32ef('0x45')]=_0x2a33dd;return _0x3c569d;})['then'](respondWithFilteredResult(_0x2f5d06,_0x5a04cd))[_0x32ef('0x46')](handleError(_0x2f5d06,null));};exports[_0x32ef('0x47')]=function(_0x5d2f06,_0x4744ba){var _0x4bc5bc={'raw':!![],'where':{'id':_0x5d2f06[_0x32ef('0x48')]['id']}},_0xcb3c08={};_0xcb3c08[_0x32ef('0x2e')]=_[_0x32ef('0x49')](db[_0x32ef('0x3d')][_0x32ef('0x2a')]);_0xcb3c08[_0x32ef('0x2f')]=_[_0x32ef('0x49')](_0x5d2f06[_0x32ef('0x2f')]);_0xcb3c08[_0x32ef('0x30')]=_['intersection'](_0xcb3c08[_0x32ef('0x2e')],_0xcb3c08['query']);_0x4bc5bc[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0xcb3c08[_0x32ef('0x2e')],qs['fields'](_0x5d2f06[_0x32ef('0x2f')][_0x32ef('0x33')]));_0x4bc5bc[_0x32ef('0x31')]=_0x4bc5bc[_0x32ef('0x31')][_0x32ef('0x34')]?_0x4bc5bc[_0x32ef('0x31')]:_0xcb3c08[_0x32ef('0x2e')];if(_0x5d2f06['query']['includeAll']){_0x4bc5bc[_0x32ef('0x40')]=[{'all':!![]}];}_0x4bc5bc=_[_0x32ef('0x3b')]({},_0x4bc5bc,_0x5d2f06[_0x32ef('0x3c')]);return db[_0x32ef('0x3d')][_0x32ef('0x4a')](_0x4bc5bc)[_0x32ef('0x3e')](handleEntityNotFound(_0x4744ba,null))[_0x32ef('0x3e')](respondWithResult(_0x4744ba,null))[_0x32ef('0x46')](handleError(_0x4744ba,null));};exports[_0x32ef('0x4b')]=function(_0x1ebedf,_0x35a294){return db[_0x32ef('0x3d')][_0x32ef('0x4b')](_0x1ebedf['body'],{})[_0x32ef('0x3e')](respondWithResult(_0x35a294,0xc9))[_0x32ef('0x46')](handleError(_0x35a294,null));};exports[_0x32ef('0x4c')]=function(_0xd42609,_0x1cc9f3){return db[_0x32ef('0x3d')][_0x32ef('0x4a')]({'where':{'id':_0xd42609[_0x32ef('0x48')]['id']}})[_0x32ef('0x3e')](handleEntityNotFound(_0x1cc9f3,null))[_0x32ef('0x3e')](removeEntity(_0x1cc9f3,null))[_0x32ef('0x46')](handleError(_0x1cc9f3,null));};exports[_0x32ef('0x4d')]=function(_0x272377,_0x326445){return db[_0x32ef('0x3d')][_0x32ef('0x4d')]()[_0x32ef('0x3e')](respondWithResult(_0x326445,null))[_0x32ef('0x46')](handleError(_0x326445,null));};exports['update']=function(_0x515ac9,_0x179c2f){if(_0x515ac9[_0x32ef('0x4e')][_0x32ef('0x4f')]){delete _0x515ac9[_0x32ef('0x4e')][_0x32ef('0x4f')];}return db[_0x32ef('0x3d')][_0x32ef('0x4a')]({'where':{'uniqueid':_0x515ac9[_0x32ef('0x48')]['id'],'UserId':{'$or':[null,_0x515ac9[_0x32ef('0x50')]['id']]}}})[_0x32ef('0x3e')](handleEntityNotFound(_0x179c2f,null))[_0x32ef('0x3e')](saveUpdates(_0x515ac9['body'],null))[_0x32ef('0x3e')](respondWithResult(_0x179c2f,null))[_0x32ef('0x46')](handleError(_0x179c2f,null));};
\ No newline at end of file
+var _0xadb5=['filter','VIRTUAL','merge','options','includeAll','include','fullname','User','findAll','rows','show','rawAttributes','length','find','catch','body','params','describe','uniqueid','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','VoiceCallReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters'];(function(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0xadb5,0xad));var _0x5adb=function(_0x1de25c,_0x7459f5){_0x1de25c=_0x1de25c-0x0;var _0x4b0dee=_0xadb5[_0x1de25c];return _0x4b0dee;};'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['VoiceCallReport']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'attributes':['id',_0x5adb('0x26'),_0x5adb('0x40'),'alias'],'model':db['User'],'as':_0x5adb('0x41')}];}return db['VoiceCallReport'][_0x5adb('0x42')](_0x5d457e);})[_0x5adb('0x22')](function(_0x299746){_0x1eac55[_0x5adb('0x43')]=_0x299746;return _0x1eac55;})[_0x5adb('0x22')](respondWithFilteredResult(_0x49992e,_0x5d457e))['catch'](handleError(_0x49992e,null));};exports[_0x5adb('0x44')]=function(_0x565b03,_0x508690){var _0x4160ad={'raw':!![],'where':{'id':_0x565b03['params']['id']}},_0x1a256c={};_0x1a256c[_0x5adb('0x2e')]=_[_0x5adb('0x30')](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x1a256c[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x565b03[_0x5adb('0x2f')]);_0x1a256c['filters']=_['intersection'](_0x1a256c[_0x5adb('0x2e')],_0x1a256c[_0x5adb('0x2f')]);_0x4160ad[_0x5adb('0x32')]=_[_0x5adb('0x31')](_0x1a256c['model'],qs['fields'](_0x565b03[_0x5adb('0x2f')][_0x5adb('0x33')]));_0x4160ad[_0x5adb('0x32')]=_0x4160ad[_0x5adb('0x32')][_0x5adb('0x46')]?_0x4160ad['attributes']:_0x1a256c[_0x5adb('0x2e')];if(_0x565b03[_0x5adb('0x2f')]['includeAll']){_0x4160ad[_0x5adb('0x3f')]=[{'all':!![]}];}_0x4160ad=_[_0x5adb('0x3c')]({},_0x4160ad,_0x565b03[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')][_0x5adb('0x47')](_0x4160ad)[_0x5adb('0x22')](handleEntityNotFound(_0x508690,null))[_0x5adb('0x22')](respondWithResult(_0x508690,null))[_0x5adb('0x48')](handleError(_0x508690,null));};exports['create']=function(_0x3a925b,_0x57dc8b){return db['VoiceCallReport']['create'](_0x3a925b[_0x5adb('0x49')],{})[_0x5adb('0x22')](respondWithResult(_0x57dc8b,0xc9))[_0x5adb('0x48')](handleError(_0x57dc8b,null));};exports['destroy']=function(_0x2ad69d,_0x5cbab5){return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'id':_0x2ad69d[_0x5adb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5cbab5,null))[_0x5adb('0x22')](removeEntity(_0x5cbab5,null))['catch'](handleError(_0x5cbab5,null));};exports[_0x5adb('0x4b')]=function(_0x6dc067,_0x55c535){return db[_0x5adb('0x2a')][_0x5adb('0x4b')]()[_0x5adb('0x22')](respondWithResult(_0x55c535,null))[_0x5adb('0x48')](handleError(_0x55c535,null));};exports[_0x5adb('0x21')]=function(_0x4cb36c,_0x36b847){if(_0x4cb36c[_0x5adb('0x49')][_0x5adb('0x4c')]){delete _0x4cb36c[_0x5adb('0x49')]['uniqueid'];}return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'uniqueid':_0x4cb36c[_0x5adb('0x4a')]['id'],'UserId':{'$or':[null,_0x4cb36c['user']['id']]}}})[_0x5adb('0x22')](handleEntityNotFound(_0x36b847,null))[_0x5adb('0x22')](saveUpdates(_0x4cb36c[_0x5adb('0x49')],null))[_0x5adb('0x22')](respondWithResult(_0x36b847,null))['catch'](handleError(_0x36b847,null));};
\ No newline at end of file
index 5383c61..5f4e145 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf66=['moment','bluebird','request-promise','path','rimraf','../../config/environment','define','VoiceCallReport','lodash','../../config/logger','api'];(function(_0x4bdcbf,_0x306baf){var _0x21b314=function(_0x430395){while(--_0x430395){_0x4bdcbf['push'](_0x4bdcbf['shift']());}};_0x21b314(++_0x306baf);}(_0xcf66,0x110));var _0x6cf6=function(_0x7986a2,_0x2967e0){_0x7986a2=_0x7986a2-0x0;var _0x23c61a=_0xcf66[_0x7986a2];return _0x23c61a;};'use strict';var _=require(_0x6cf6('0x0'));var util=require('util');var logger=require(_0x6cf6('0x1'))(_0x6cf6('0x2'));var moment=require(_0x6cf6('0x3'));var BPromise=require(_0x6cf6('0x4'));var rp=require(_0x6cf6('0x5'));var fs=require('fs');var path=require(_0x6cf6('0x6'));var rimraf=require(_0x6cf6('0x7'));var config=require(_0x6cf6('0x8'));var attributes=require('./voiceCallReport.attributes');module['exports']=function(_0x33d550,_0x1f92f4){return _0x33d550[_0x6cf6('0x9')](_0x6cf6('0xa'),attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe35e=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','VoiceCallReport','report_call','uniqueid','util'];(function(_0x3540c8,_0x4a4696){var _0x38c53=function(_0x5c9859){while(--_0x5c9859){_0x3540c8['push'](_0x3540c8['shift']());}};_0x38c53(++_0x4a4696);}(_0xe35e,0x9b));var _0xee35=function(_0x356e8d,_0x24c719){_0x356e8d=_0x356e8d-0x0;var _0x39e65a=_0xe35e[_0x356e8d];return _0x39e65a;};'use strict';var _=require('lodash');var util=require(_0xee35('0x0'));var logger=require(_0xee35('0x1'))(_0xee35('0x2'));var moment=require('moment');var BPromise=require(_0xee35('0x3'));var rp=require(_0xee35('0x4'));var fs=require('fs');var path=require(_0xee35('0x5'));var rimraf=require(_0xee35('0x6'));var config=require(_0xee35('0x7'));var attributes=require('./voiceCallReport.attributes');module[_0xee35('0x8')]=function(_0x2b335d,_0x29bf0f){return _0x2b335d[_0xee35('0x9')](_0xee35('0xa'),attributes,{'tableName':_0xee35('0xb'),'paranoid':![],'indexes':[{'fields':[_0xee35('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 679ef4d..13271ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31a9=['body','UpdateVoiceCallReport','update','where','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceCallReport,\x20%s,\x20%s','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','attributes','limit','map','model','include','CreateVoiceCallReport'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x31a9,0x180));var _0x931a=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x31a9[_0x32f7d7];return _0x133d09;};'use strict';var _=require('lodash');var util=require(_0x931a('0x0'));var moment=require(_0x931a('0x1'));var BPromise=require('bluebird');var rs=require(_0x931a('0x2'));var fs=require('fs');var Redis=require(_0x931a('0x3'));var db=require(_0x931a('0x4'))['db'];var utils=require(_0x931a('0x5'));var logger=require('../../config/logger')(_0x931a('0x6'));var config=require(_0x931a('0x7'));var jayson=require(_0x931a('0x8'));var client=jayson[_0x931a('0x9')][_0x931a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x317620,_0x2d0ee0,_0x585c0c){return new BPromise(function(_0x4293cf,_0x3f2bce){return client[_0x931a('0xb')](_0x317620,_0x585c0c)[_0x931a('0xc')](function(_0x3c41de){logger[_0x931a('0xd')](_0x931a('0xe'),_0x2d0ee0,'request\x20sent');logger[_0x931a('0xf')](_0x931a('0x10'),_0x2d0ee0,_0x931a('0x11'),JSON[_0x931a('0x12')](_0x3c41de));if(_0x3c41de[_0x931a('0x13')]){if(_0x3c41de[_0x931a('0x13')][_0x931a('0x14')]===0x1f4){logger[_0x931a('0x13')]('VoiceCallReport,\x20%s,\x20%s',_0x2d0ee0,_0x3c41de[_0x931a('0x13')][_0x931a('0x15')]);return _0x3f2bce(_0x3c41de[_0x931a('0x13')][_0x931a('0x15')]);}logger[_0x931a('0x13')](_0x931a('0xe'),_0x2d0ee0,_0x3c41de['error']['message']);return _0x4293cf(_0x3c41de[_0x931a('0x13')]['message']);}else{logger[_0x931a('0xd')](_0x931a('0xe'),_0x2d0ee0,'request\x20sent');_0x4293cf(_0x3c41de[_0x931a('0x16')][_0x931a('0x15')]);}})[_0x931a('0x17')](function(_0x4c73a4){logger[_0x931a('0x13')](_0x931a('0xe'),_0x2d0ee0,_0x4c73a4);_0x3f2bce(_0x4c73a4);});});}exports[_0x931a('0x18')]=function(_0xfd1f94){var _0x2f889f=this;return new Promise(function(_0x56816,_0xeb7d39){return db[_0x931a('0x19')][_0x931a('0x1a')]({'raw':_0xfd1f94[_0x931a('0x1b')]?_0xfd1f94['options']['raw']===undefined?!![]:![]:!![],'where':_0xfd1f94[_0x931a('0x1b')]?_0xfd1f94['options']['where']||null:null,'attributes':_0xfd1f94[_0x931a('0x1b')]?_0xfd1f94[_0x931a('0x1b')][_0x931a('0x1c')]||null:null,'limit':_0xfd1f94[_0x931a('0x1b')]?_0xfd1f94['options'][_0x931a('0x1d')]||null:null,'include':_0xfd1f94['options']?_0xfd1f94['options']['include']?_[_0x931a('0x1e')](_0xfd1f94[_0x931a('0x1b')]['include'],function(_0x5f5cea){return{'model':db[_0x5f5cea[_0x931a('0x1f')]],'as':_0x5f5cea['as'],'attributes':_0x5f5cea[_0x931a('0x1c')],'include':_0x5f5cea[_0x931a('0x20')]?_[_0x931a('0x1e')](_0x5f5cea[_0x931a('0x20')],function(_0x2bf12d){return{'model':db[_0x2bf12d[_0x931a('0x1f')]],'as':_0x2bf12d['as'],'attributes':_0x2bf12d[_0x931a('0x1c')],'include':_0x2bf12d[_0x931a('0x20')]?_[_0x931a('0x1e')](_0x2bf12d[_0x931a('0x20')],function(_0xd290e2){return{'model':db[_0xd290e2[_0x931a('0x1f')]],'as':_0xd290e2['as'],'attributes':_0xd290e2[_0x931a('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x931a('0xc')](function(_0x2ac5bb){logger[_0x931a('0xd')](_0x931a('0x18'),_0xfd1f94);logger[_0x931a('0xf')](_0x931a('0x18'),_0xfd1f94,JSON[_0x931a('0x12')](_0x2ac5bb));_0x56816(_0x2ac5bb);})[_0x931a('0x17')](function(_0x414d30){logger['error'](_0x931a('0x18'),_0x414d30['message'],_0xfd1f94);_0xeb7d39(_0x2f889f[_0x931a('0x13')](0x1f4,_0x414d30['message']));});});};exports[_0x931a('0x21')]=function(_0xcd5653){var _0x252609=this;return new Promise(function(_0x2239f7,_0x57e1dd){return db['VoiceCallReport']['create'](_0xcd5653[_0x931a('0x22')],{'raw':_0xcd5653[_0x931a('0x1b')]?_0xcd5653[_0x931a('0x1b')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1ef13e){logger[_0x931a('0xd')](_0x931a('0x21'),_0xcd5653);logger[_0x931a('0xf')](_0x931a('0x21'),_0xcd5653,JSON[_0x931a('0x12')](_0x1ef13e));_0x2239f7(_0x1ef13e);})['catch'](function(_0x4cba0c){logger[_0x931a('0x13')](_0x931a('0x21'),_0x4cba0c[_0x931a('0x15')],_0xcd5653);_0x57e1dd(_0x252609[_0x931a('0x13')](0x1f4,_0x4cba0c[_0x931a('0x15')]));});});};exports[_0x931a('0x23')]=function(_0x4bee91){var _0x577942=this;return new Promise(function(_0x2f708c,_0x352996){return db['VoiceCallReport'][_0x931a('0x24')](_0x4bee91[_0x931a('0x22')],{'raw':_0x4bee91[_0x931a('0x1b')]?_0x4bee91[_0x931a('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4bee91[_0x931a('0x1b')]?_0x4bee91[_0x931a('0x1b')][_0x931a('0x25')]||null:null,'attributes':_0x4bee91['options']?_0x4bee91[_0x931a('0x1b')][_0x931a('0x1c')]||null:null,'limit':_0x4bee91[_0x931a('0x1b')]?_0x4bee91[_0x931a('0x1b')][_0x931a('0x1d')]||null:null})['then'](function(_0x331581){logger['info'](_0x931a('0x23'),_0x4bee91);logger[_0x931a('0xf')]('UpdateVoiceCallReport',_0x4bee91,JSON['stringify'](_0x331581));_0x2f708c(_0x331581);})['catch'](function(_0x498d8e){logger[_0x931a('0x13')](_0x931a('0x23'),_0x498d8e[_0x931a('0x15')],_0x4bee91);_0x352996(_0x577942[_0x931a('0x13')](0x1f4,_0x498d8e[_0x931a('0x15')]));});});};
\ No newline at end of file
+var _0x9d10=['UpdateVoiceCallReport','update','util','moment','ioredis','../../config/logger','rpc','jayson/promise','client','http','request','then','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetVoiceCallReport','options','raw','where','attributes','limit','include','map','model','CreateVoiceCallReport','VoiceCallReport','create','body','info'];(function(_0x4af72f,_0xd67b2e){var _0x5a25e4=function(_0x3f7724){while(--_0x3f7724){_0x4af72f['push'](_0x4af72f['shift']());}};_0x5a25e4(++_0xd67b2e);}(_0x9d10,0xf7));var _0x09d1=function(_0x2071d8,_0xb92a7b){_0x2071d8=_0x2071d8-0x0;var _0x1e43da=_0x9d10[_0x2071d8];return _0x1e43da;};'use strict';var _=require('lodash');var util=require(_0x09d1('0x0'));var moment=require(_0x09d1('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x09d1('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x09d1('0x3'))(_0x09d1('0x4'));var config=require('../../config/environment');var jayson=require(_0x09d1('0x5'));var client=jayson[_0x09d1('0x6')][_0x09d1('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xa48bea,_0x3ae265,_0x498a00){return new BPromise(function(_0x12ca88,_0x1a18f3){return client[_0x09d1('0x8')](_0xa48bea,_0x498a00)[_0x09d1('0x9')](function(_0xee5f1f){logger['info'](_0x09d1('0xa'),_0x3ae265,_0x09d1('0xb'));logger[_0x09d1('0xc')](_0x09d1('0xd'),_0x3ae265,_0x09d1('0xb'),JSON[_0x09d1('0xe')](_0xee5f1f));if(_0xee5f1f[_0x09d1('0xf')]){if(_0xee5f1f['error'][_0x09d1('0x10')]===0x1f4){logger[_0x09d1('0xf')](_0x09d1('0xa'),_0x3ae265,_0xee5f1f['error'][_0x09d1('0x11')]);return _0x1a18f3(_0xee5f1f[_0x09d1('0xf')]['message']);}logger[_0x09d1('0xf')](_0x09d1('0xa'),_0x3ae265,_0xee5f1f[_0x09d1('0xf')][_0x09d1('0x11')]);return _0x12ca88(_0xee5f1f[_0x09d1('0xf')][_0x09d1('0x11')]);}else{logger['info'](_0x09d1('0xa'),_0x3ae265,_0x09d1('0xb'));_0x12ca88(_0xee5f1f['result'][_0x09d1('0x11')]);}})[_0x09d1('0x12')](function(_0x38274a){logger[_0x09d1('0xf')](_0x09d1('0xa'),_0x3ae265,_0x38274a);_0x1a18f3(_0x38274a);});});}exports[_0x09d1('0x13')]=function(_0x172686){var _0x574930=this;return new Promise(function(_0x42b92c,_0x2f8414){return db['VoiceCallReport']['findAll']({'raw':_0x172686[_0x09d1('0x14')]?_0x172686[_0x09d1('0x14')][_0x09d1('0x15')]===undefined?!![]:![]:!![],'where':_0x172686[_0x09d1('0x14')]?_0x172686[_0x09d1('0x14')][_0x09d1('0x16')]||null:null,'attributes':_0x172686[_0x09d1('0x14')]?_0x172686[_0x09d1('0x14')][_0x09d1('0x17')]||null:null,'limit':_0x172686[_0x09d1('0x14')]?_0x172686[_0x09d1('0x14')][_0x09d1('0x18')]||null:null,'include':_0x172686[_0x09d1('0x14')]?_0x172686['options'][_0x09d1('0x19')]?_[_0x09d1('0x1a')](_0x172686['options'][_0x09d1('0x19')],function(_0x43537b){return{'model':db[_0x43537b['model']],'as':_0x43537b['as'],'attributes':_0x43537b[_0x09d1('0x17')],'include':_0x43537b[_0x09d1('0x19')]?_[_0x09d1('0x1a')](_0x43537b['include'],function(_0x34ae69){return{'model':db[_0x34ae69[_0x09d1('0x1b')]],'as':_0x34ae69['as'],'attributes':_0x34ae69[_0x09d1('0x17')],'include':_0x34ae69[_0x09d1('0x19')]?_[_0x09d1('0x1a')](_0x34ae69[_0x09d1('0x19')],function(_0x45d81f){return{'model':db[_0x45d81f[_0x09d1('0x1b')]],'as':_0x45d81f['as'],'attributes':_0x45d81f['attributes']};}):[]};}):[]};}):[]:[]})[_0x09d1('0x9')](function(_0x1f7bc0){logger['info'](_0x09d1('0x13'),_0x172686);logger[_0x09d1('0xc')](_0x09d1('0x13'),_0x172686,JSON['stringify'](_0x1f7bc0));_0x42b92c(_0x1f7bc0);})[_0x09d1('0x12')](function(_0x224fb2){logger[_0x09d1('0xf')](_0x09d1('0x13'),_0x224fb2[_0x09d1('0x11')],_0x172686);_0x2f8414(_0x574930['error'](0x1f4,_0x224fb2['message']));});});};exports[_0x09d1('0x1c')]=function(_0x1c48de){var _0x29aebd=this;return new Promise(function(_0x2669b9,_0x4cbcc0){return db[_0x09d1('0x1d')][_0x09d1('0x1e')](_0x1c48de[_0x09d1('0x1f')],{'raw':_0x1c48de['options']?_0x1c48de[_0x09d1('0x14')][_0x09d1('0x15')]===undefined?!![]:![]:!![]})[_0x09d1('0x9')](function(_0x595677){logger[_0x09d1('0x20')]('CreateVoiceCallReport',_0x1c48de);logger[_0x09d1('0xc')](_0x09d1('0x1c'),_0x1c48de,JSON[_0x09d1('0xe')](_0x595677));_0x2669b9(_0x595677);})[_0x09d1('0x12')](function(_0x23a466){logger['error'](_0x09d1('0x1c'),_0x23a466[_0x09d1('0x11')],_0x1c48de);_0x4cbcc0(_0x29aebd[_0x09d1('0xf')](0x1f4,_0x23a466[_0x09d1('0x11')]));});});};exports[_0x09d1('0x21')]=function(_0x452099){var _0x1b0c9b=this;return new Promise(function(_0x5b3959,_0x333cc2){return db[_0x09d1('0x1d')][_0x09d1('0x22')](_0x452099[_0x09d1('0x1f')],{'raw':_0x452099['options']?_0x452099[_0x09d1('0x14')][_0x09d1('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x452099[_0x09d1('0x14')]?_0x452099[_0x09d1('0x14')][_0x09d1('0x16')]||null:null,'attributes':_0x452099[_0x09d1('0x14')]?_0x452099[_0x09d1('0x14')][_0x09d1('0x17')]||null:null,'limit':_0x452099[_0x09d1('0x14')]?_0x452099[_0x09d1('0x14')]['limit']||null:null})['then'](function(_0x3af2e1){logger[_0x09d1('0x20')]('UpdateVoiceCallReport',_0x452099);logger[_0x09d1('0xc')](_0x09d1('0x21'),_0x452099,JSON[_0x09d1('0xe')](_0x3af2e1));_0x5b3959(_0x3af2e1);})['catch'](function(_0x5e763f){logger['error'](_0x09d1('0x21'),_0x5e763f[_0x09d1('0x11')],_0x452099);_0x333cc2(_0x1b0c9b['error'](0x1f4,_0x5e763f[_0x09d1('0x11')]));});});};
\ No newline at end of file
index 2400c33..144f67b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb82=['get','isAuthenticated','index','create','/:id','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceChanSpy.controller'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0xcb82,0xcf));var _0x2cb8=function(_0x5912be,_0x1bd806){_0x5912be=_0x5912be-0x0;var _0x41be72=_0xcb82[_0x5912be];return _0x41be72;};'use strict';var multer=require(_0x2cb8('0x0'));var util=require(_0x2cb8('0x1'));var path=require(_0x2cb8('0x2'));var timeout=require('connect-timeout');var express=require(_0x2cb8('0x3'));var router=express[_0x2cb8('0x4')]();var fs_extra=require(_0x2cb8('0x5'));var auth=require(_0x2cb8('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x2cb8('0x7'));var controller=require(_0x2cb8('0x8'));router[_0x2cb8('0x9')]('/',auth[_0x2cb8('0xa')](),controller[_0x2cb8('0xb')]);router[_0x2cb8('0x9')]('/:id',auth[_0x2cb8('0xa')](),controller['show']);router['post']('/',auth[_0x2cb8('0xa')](),controller[_0x2cb8('0xc')]);router['put'](_0x2cb8('0xd'),auth[_0x2cb8('0xa')](),controller[_0x2cb8('0xe')]);router[_0x2cb8('0xf')]('/:id',auth[_0x2cb8('0xa')](),controller[_0x2cb8('0x10')]);module[_0x2cb8('0x11')]=router;
\ No newline at end of file
+var _0xe319=['connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','multer'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe319,0x76));var _0x9e31=function(_0x2faa2c,_0x42bd50){_0x2faa2c=_0x2faa2c-0x0;var _0xb2286b=_0xe319[_0x2faa2c];return _0xb2286b;};'use strict';var multer=require(_0x9e31('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9e31('0x1'));var express=require('express');var router=express[_0x9e31('0x2')]();var fs_extra=require(_0x9e31('0x3'));var auth=require(_0x9e31('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x9e31('0x5'));var controller=require('./voiceChanSpy.controller');router[_0x9e31('0x6')]('/',auth[_0x9e31('0x7')](),controller[_0x9e31('0x8')]);router[_0x9e31('0x6')](_0x9e31('0x9'),auth[_0x9e31('0x7')](),controller['show']);router[_0x9e31('0xa')]('/',auth[_0x9e31('0x7')](),controller[_0x9e31('0xb')]);router[_0x9e31('0xc')](_0x9e31('0x9'),auth[_0x9e31('0x7')](),controller[_0x9e31('0xd')]);router[_0x9e31('0xe')](_0x9e31('0x9'),auth[_0x9e31('0x7')](),controller[_0x9e31('0xf')]);module[_0x9e31('0x10')]=router;
\ No newline at end of file
index 9ef0be7..02c77aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0780=['setDataValue','options','join','BOOLEAN','sequelize','exports','STRING'];(function(_0x5956a0,_0x1ee1e8){var _0x191741=function(_0x3ec794){while(--_0x3ec794){_0x5956a0['push'](_0x5956a0['shift']());}};_0x191741(++_0x1ee1e8);}(_0x0780,0x107));var _0x0078=function(_0x17ffd0,_0x1ea12e){_0x17ffd0=_0x17ffd0-0x0;var _0x104d90=_0x0780[_0x17ffd0];return _0x104d90;};'use strict';var Sequelize=require(_0x0078('0x0'));module[_0x0078('0x1')]={'name':{'type':Sequelize[_0x0078('0x2')]},'prefix':{'type':Sequelize[_0x0078('0x2')],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0x0078('0x2')],'set':function(_0x35cc3e){this[_0x0078('0x3')](_0x0078('0x4'),_0x35cc3e?_0x35cc3e[_0x0078('0x5')](''):[]);},'get':function(){return this['getDataValue']('options')?this['getDataValue'](_0x0078('0x4'))['split'](''):[];}},'auth':{'type':Sequelize[_0x0078('0x6')],'defaultValue':![]},'password':{'type':Sequelize[_0x0078('0x2')]},'record':{'type':Sequelize[_0x0078('0x6')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x0078('0x2')]},'description':{'type':Sequelize[_0x0078('0x2')]}};
\ No newline at end of file
+var _0x37d7=['BOOLEAN','sequelize','STRING','name','setDataValue','join','getDataValue','options','split'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x37d7,0x1cc));var _0x737d=function(_0x1b4af6,_0xd59625){_0x1b4af6=_0x1b4af6-0x0;var _0x105d96=_0x37d7[_0x1b4af6];return _0x105d96;};'use strict';var Sequelize=require(_0x737d('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x737d('0x1')],'unique':_0x737d('0x2'),'allowNull':![]},'options':{'type':Sequelize[_0x737d('0x1')],'set':function(_0x142072){this[_0x737d('0x3')]('options',_0x142072?_0x142072[_0x737d('0x4')](''):[]);},'get':function(){return this[_0x737d('0x5')]('options')?this[_0x737d('0x5')](_0x737d('0x6'))[_0x737d('0x7')](''):[];}},'auth':{'type':Sequelize[_0x737d('0x8')],'defaultValue':![]},'password':{'type':Sequelize[_0x737d('0x1')]},'record':{'type':Sequelize[_0x737d('0x8')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x737d('0x1')]},'description':{'type':Sequelize[_0x737d('0x1')]}};
\ No newline at end of file
index 82343aa..4de1dcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5db8=['model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','VIRTUAL','merge','includeAll','findAll','catch','show','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','get','ChanSpies','error','stack','name','send','index','map','VoiceChanSpy','fieldName','type','key','query','keys','intersection'];(function(_0x25eb73,_0x51c584){var _0x2c013a=function(_0x278110){while(--_0x278110){_0x25eb73['push'](_0x25eb73['shift']());}};_0x2c013a(++_0x51c584);}(_0x5db8,0xbb));var _0x85db=function(_0xe4c712,_0x1e26d5){_0xe4c712=_0xe4c712-0x0;var _0x101962=_0x5db8[_0xe4c712];return _0x101962;};'use strict';var emlformat=require(_0x85db('0x0'));var rimraf=require(_0x85db('0x1'));var zipdir=require(_0x85db('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x85db('0x3'));var moment=require(_0x85db('0x4'));var BPromise=require(_0x85db('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x85db('0x6'));var sox=require(_0x85db('0x7'));var csv=require(_0x85db('0x8'));var ejs=require(_0x85db('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x85db('0xa'));var crypto=require(_0x85db('0xb'));var jsforce=require(_0x85db('0xc'));var deskjs=require(_0x85db('0xd'));var toCsv=require('to-csv');var querystring=require(_0x85db('0xe'));var Papa=require('papaparse');var Redis=require(_0x85db('0xf'));var authService=require(_0x85db('0x10'));var qs=require(_0x85db('0x11'));var as=require(_0x85db('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x85db('0x13'));var config=require(_0x85db('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x85db('0x15'))['db'];function respondWithStatusCode(_0x541f2f,_0x437f7a){_0x437f7a=_0x437f7a||0xcc;return function(_0x35f8c6){if(_0x35f8c6){return _0x541f2f[_0x85db('0x16')](_0x437f7a);}return _0x541f2f[_0x85db('0x17')](_0x437f7a)[_0x85db('0x18')]();};}function respondWithResult(_0xb7ea66,_0x2b7507){_0x2b7507=_0x2b7507||0xc8;return function(_0x25ec64){if(_0x25ec64){return _0xb7ea66[_0x85db('0x17')](_0x2b7507)[_0x85db('0x19')](_0x25ec64);}};}function respondWithFilteredResult(_0x1e9dec,_0x270fd7){return function(_0x2be61d){if(_0x2be61d){var _0x5ccfef=typeof _0x270fd7[_0x85db('0x1a')]===_0x85db('0x1b')&&typeof _0x270fd7[_0x85db('0x1c')]===_0x85db('0x1b');var _0x2ecd71=_0x2be61d[_0x85db('0x1d')];var _0x3209b3=_0x5ccfef?0x0:_0x270fd7['offset'];var _0x37ac04=_0x5ccfef?_0x2be61d[_0x85db('0x1d')]:_0x270fd7[_0x85db('0x1a')]+_0x270fd7[_0x85db('0x1c')];var _0x4d976d;if(_0x37ac04>=_0x2ecd71){_0x37ac04=_0x2ecd71;_0x4d976d=0xc8;}else{_0x4d976d=0xce;}_0x1e9dec[_0x85db('0x17')](_0x4d976d);return _0x1e9dec[_0x85db('0x1e')](_0x85db('0x1f'),_0x3209b3+'-'+_0x37ac04+'/'+_0x2ecd71)[_0x85db('0x19')](_0x2be61d);}return null;};}function patchUpdates(_0x107c10){return function(_0x5c37d7){try{jsonpatch[_0x85db('0x20')](_0x5c37d7,_0x107c10,!![]);}catch(_0x398aa2){return BPromise[_0x85db('0x21')](_0x398aa2);}return _0x5c37d7[_0x85db('0x22')]();};}function saveUpdates(_0x44c122,_0x3842d7){return function(_0x3a7148){if(_0x3a7148){return _0x3a7148[_0x85db('0x23')](_0x44c122)['then'](function(_0xfffea2){return _0xfffea2;});}return null;};}function removeEntity(_0x2534bc,_0x57fe5b){return function(_0x3381ec){if(_0x3381ec){return _0x3381ec[_0x85db('0x24')]()[_0x85db('0x25')](function(){var _0x51c948=_0x3381ec[_0x85db('0x26')]({'plain':!![]});var _0x46f428=_0x85db('0x27');return db['UserProfileResource']['destroy']({'where':{'type':_0x46f428,'resourceId':_0x51c948['id']}})['then'](function(){return _0x3381ec;});})[_0x85db('0x25')](function(){_0x2534bc[_0x85db('0x17')](0xcc)[_0x85db('0x18')]();});}};}function handleEntityNotFound(_0x51b748,_0x71c6f4){return function(_0xc2abb8){if(!_0xc2abb8){_0x51b748[_0x85db('0x16')](0x194);}return _0xc2abb8;};}function handleError(_0x574bcc,_0x5c8ddd){_0x5c8ddd=_0x5c8ddd||0x1f4;return function(_0x299013){logger[_0x85db('0x28')](_0x299013[_0x85db('0x29')]);if(_0x299013[_0x85db('0x2a')]){delete _0x299013[_0x85db('0x2a')];}_0x574bcc[_0x85db('0x17')](_0x5c8ddd)[_0x85db('0x2b')](_0x299013);};}exports[_0x85db('0x2c')]=function(_0x6ee161,_0x1edc8d){var _0x580e90={},_0x4a15b9={},_0x13ad98={'count':0x0,'rows':[]};var _0x5e0e75=_[_0x85db('0x2d')](db[_0x85db('0x2e')]['rawAttributes'],function(_0x1d15b0){return{'name':_0x1d15b0[_0x85db('0x2f')],'type':_0x1d15b0[_0x85db('0x30')][_0x85db('0x31')]};});_0x4a15b9['model']=_[_0x85db('0x2d')](_0x5e0e75,_0x85db('0x2a'));_0x4a15b9[_0x85db('0x32')]=_[_0x85db('0x33')](_0x6ee161[_0x85db('0x32')]);_0x4a15b9['filters']=_[_0x85db('0x34')](_0x4a15b9[_0x85db('0x35')],_0x4a15b9[_0x85db('0x32')]);_0x580e90[_0x85db('0x36')]=_['intersection'](_0x4a15b9[_0x85db('0x35')],qs[_0x85db('0x37')](_0x6ee161[_0x85db('0x32')]['fields']));_0x580e90['attributes']=_0x580e90[_0x85db('0x36')][_0x85db('0x38')]?_0x580e90['attributes']:_0x4a15b9[_0x85db('0x35')];if(!_0x6ee161[_0x85db('0x32')][_0x85db('0x39')](_0x85db('0x3a'))){_0x580e90[_0x85db('0x1c')]=qs[_0x85db('0x1c')](_0x6ee161[_0x85db('0x32')][_0x85db('0x1c')]);_0x580e90[_0x85db('0x1a')]=qs[_0x85db('0x1a')](_0x6ee161[_0x85db('0x32')][_0x85db('0x1a')]);}_0x580e90['order']=qs[_0x85db('0x3b')](_0x6ee161[_0x85db('0x32')][_0x85db('0x3b')]);_0x580e90[_0x85db('0x3c')]=qs['filters'](_[_0x85db('0x3d')](_0x6ee161[_0x85db('0x32')],_0x4a15b9[_0x85db('0x3e')]),_0x5e0e75);if(_0x6ee161[_0x85db('0x32')]['filter']){_0x580e90['where']=_['merge'](_0x580e90['where'],{'$or':_['map'](_0x5e0e75,function(_0x3b9d1b){if(_0x3b9d1b[_0x85db('0x30')]!==_0x85db('0x3f')){var _0x17f649={};_0x17f649[_0x3b9d1b[_0x85db('0x2a')]]={'$like':'%'+_0x6ee161['query']['filter']+'%'};return _0x17f649;}})});}_0x580e90=_[_0x85db('0x40')]({},_0x580e90,_0x6ee161['options']);var _0x9f2d7f={'where':_0x580e90[_0x85db('0x3c')]};return db['VoiceChanSpy']['count'](_0x9f2d7f)[_0x85db('0x25')](function(_0x928808){_0x13ad98[_0x85db('0x1d')]=_0x928808;if(_0x6ee161[_0x85db('0x32')][_0x85db('0x41')]){_0x580e90['include']=[{'all':!![]}];}return db[_0x85db('0x2e')][_0x85db('0x42')](_0x580e90);})[_0x85db('0x25')](function(_0x5be721){_0x13ad98['rows']=_0x5be721;return _0x13ad98;})['then'](respondWithFilteredResult(_0x1edc8d,_0x580e90))[_0x85db('0x43')](handleError(_0x1edc8d,null));};exports[_0x85db('0x44')]=function(_0x116cb3,_0x57677d){var _0x5ef59b={'raw':![],'where':{'id':_0x116cb3['params']['id']}},_0x3e4dbc={};_0x3e4dbc[_0x85db('0x35')]=_[_0x85db('0x33')](db[_0x85db('0x2e')]['rawAttributes']);_0x3e4dbc[_0x85db('0x32')]=_[_0x85db('0x33')](_0x116cb3[_0x85db('0x32')]);_0x3e4dbc[_0x85db('0x3e')]=_[_0x85db('0x34')](_0x3e4dbc[_0x85db('0x35')],_0x3e4dbc[_0x85db('0x32')]);_0x5ef59b[_0x85db('0x36')]=_[_0x85db('0x34')](_0x3e4dbc['model'],qs[_0x85db('0x37')](_0x116cb3[_0x85db('0x32')][_0x85db('0x37')]));_0x5ef59b[_0x85db('0x36')]=_0x5ef59b[_0x85db('0x36')][_0x85db('0x38')]?_0x5ef59b['attributes']:_0x3e4dbc[_0x85db('0x35')];if(_0x116cb3[_0x85db('0x32')][_0x85db('0x41')]){_0x5ef59b['include']=[{'all':!![]}];}_0x5ef59b=_['merge']({},_0x5ef59b,_0x116cb3[_0x85db('0x45')]);return db['VoiceChanSpy'][_0x85db('0x46')](_0x5ef59b)[_0x85db('0x25')](handleEntityNotFound(_0x57677d,null))[_0x85db('0x25')](respondWithResult(_0x57677d,null))[_0x85db('0x43')](handleError(_0x57677d,null));};exports[_0x85db('0x47')]=function(_0x5e1455,_0x5d44ef){return db[_0x85db('0x2e')][_0x85db('0x47')](_0x5e1455[_0x85db('0x48')],{})[_0x85db('0x25')](function(_0x1b6157){var _0x107882=_0x5e1455[_0x85db('0x49')][_0x85db('0x26')]({'plain':!![]});if(!_0x107882)throw new Error(_0x85db('0x4a'));if(_0x107882[_0x85db('0x4b')]==='user'){var _0x69c505=_0x1b6157[_0x85db('0x26')]({'plain':!![]});var _0x54abf5='ChanSpies';return db[_0x85db('0x4c')][_0x85db('0x46')]({'where':{'name':_0x54abf5,'userProfileId':_0x107882['userProfileId']},'raw':!![]})['then'](function(_0x74b926){if(_0x74b926&&_0x74b926[_0x85db('0x4d')]===0x0){return db['UserProfileResource'][_0x85db('0x47')]({'name':_0x69c505[_0x85db('0x2a')],'resourceId':_0x69c505['id'],'type':_0x74b926[_0x85db('0x2a')],'sectionId':_0x74b926['id']},{})[_0x85db('0x25')](function(){return _0x1b6157;});}else{return _0x1b6157;}})[_0x85db('0x43')](function(_0x2cddad){logger[_0x85db('0x28')](_0x85db('0x4e'),_0x2cddad);throw _0x2cddad;});}return _0x1b6157;})[_0x85db('0x25')](respondWithResult(_0x5d44ef,0xc9))[_0x85db('0x43')](handleError(_0x5d44ef,null));};exports['update']=function(_0x4ef4db,_0x283b13){if(_0x4ef4db[_0x85db('0x48')]['id']){delete _0x4ef4db[_0x85db('0x48')]['id'];}return db[_0x85db('0x2e')][_0x85db('0x46')]({'where':{'id':_0x4ef4db[_0x85db('0x4f')]['id']}})[_0x85db('0x25')](handleEntityNotFound(_0x283b13,null))[_0x85db('0x25')](saveUpdates(_0x4ef4db[_0x85db('0x48')],null))[_0x85db('0x25')](respondWithResult(_0x283b13,null))[_0x85db('0x43')](handleError(_0x283b13,null));};exports[_0x85db('0x24')]=function(_0x198dad,_0x425e61){return db['VoiceChanSpy'][_0x85db('0x46')]({'where':{'id':_0x198dad[_0x85db('0x4f')]['id']}})['then'](handleEntityNotFound(_0x425e61,null))[_0x85db('0x25')](removeEntity(_0x425e61,null))[_0x85db('0x43')](handleError(_0x425e61,null));};
\ No newline at end of file
+var _0xb575=['crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','ChanSpies','UserProfileResource','error','stack','name','index','map','VoiceChanSpy','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','type','includeAll','include','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','eml-format','rimraf','fast-json-patch','mustache','util','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x53ce95,_0x32ed31){var _0x111663=function(_0x4d5d89){while(--_0x4d5d89){_0x53ce95['push'](_0x53ce95['shift']());}};_0x111663(++_0x32ed31);}(_0xb575,0xda));var _0x5b57=function(_0x47f9e8,_0x295f47){_0x47f9e8=_0x47f9e8-0x0;var _0x5837e1=_0xb575[_0x47f9e8];return _0x5837e1;};'use strict';var emlformat=require(_0x5b57('0x0'));var rimraf=require(_0x5b57('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5b57('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x5b57('0x3'));var util=require(_0x5b57('0x4'));var path=require('path');var sox=require(_0x5b57('0x5'));var csv=require(_0x5b57('0x6'));var ejs=require(_0x5b57('0x7'));var fs=require('fs');var fs_extra=require(_0x5b57('0x8'));var _=require(_0x5b57('0x9'));var squel=require('squel');var crypto=require(_0x5b57('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x5b57('0xb'));var toCsv=require(_0x5b57('0x6'));var querystring=require(_0x5b57('0xc'));var Papa=require('papaparse');var Redis=require(_0x5b57('0xd'));var authService=require(_0x5b57('0xe'));var qs=require(_0x5b57('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5b57('0x10'));var logger=require(_0x5b57('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x5b57('0x12'));var licenseUtil=require(_0x5b57('0x13'));var db=require(_0x5b57('0x14'))['db'];function respondWithStatusCode(_0xd897ba,_0x355dab){_0x355dab=_0x355dab||0xcc;return function(_0x45cb5c){if(_0x45cb5c){return _0xd897ba[_0x5b57('0x15')](_0x355dab);}return _0xd897ba[_0x5b57('0x16')](_0x355dab)[_0x5b57('0x17')]();};}function respondWithResult(_0x42ba90,_0x53df3e){_0x53df3e=_0x53df3e||0xc8;return function(_0x16ffe0){if(_0x16ffe0){return _0x42ba90[_0x5b57('0x16')](_0x53df3e)[_0x5b57('0x18')](_0x16ffe0);}};}function respondWithFilteredResult(_0x4ba858,_0x2a0a1b){return function(_0x3b4631){if(_0x3b4631){var _0x132430=typeof _0x2a0a1b[_0x5b57('0x19')]===_0x5b57('0x1a')&&typeof _0x2a0a1b[_0x5b57('0x1b')]===_0x5b57('0x1a');var _0x32f18d=_0x3b4631['count'];var _0x336db6=_0x132430?0x0:_0x2a0a1b[_0x5b57('0x19')];var _0x2cb809=_0x132430?_0x3b4631[_0x5b57('0x1c')]:_0x2a0a1b[_0x5b57('0x19')]+_0x2a0a1b[_0x5b57('0x1b')];var _0x5f0dc6;if(_0x2cb809>=_0x32f18d){_0x2cb809=_0x32f18d;_0x5f0dc6=0xc8;}else{_0x5f0dc6=0xce;}_0x4ba858[_0x5b57('0x16')](_0x5f0dc6);return _0x4ba858[_0x5b57('0x1d')](_0x5b57('0x1e'),_0x336db6+'-'+_0x2cb809+'/'+_0x32f18d)[_0x5b57('0x18')](_0x3b4631);}return null;};}function patchUpdates(_0x53378c){return function(_0x3c7f4f){try{jsonpatch[_0x5b57('0x1f')](_0x3c7f4f,_0x53378c,!![]);}catch(_0x3cb5c0){return BPromise['reject'](_0x3cb5c0);}return _0x3c7f4f[_0x5b57('0x20')]();};}function saveUpdates(_0xd8567a,_0x3a4488){return function(_0x28721f){if(_0x28721f){return _0x28721f[_0x5b57('0x21')](_0xd8567a)[_0x5b57('0x22')](function(_0x4a4ed8){return _0x4a4ed8;});}return null;};}function removeEntity(_0x139214,_0x50ea5f){return function(_0x11c149){if(_0x11c149){return _0x11c149[_0x5b57('0x23')]()['then'](function(){var _0x52e4b0=_0x11c149[_0x5b57('0x24')]({'plain':!![]});var _0x5eab3d=_0x5b57('0x25');return db[_0x5b57('0x26')][_0x5b57('0x23')]({'where':{'type':_0x5eab3d,'resourceId':_0x52e4b0['id']}})[_0x5b57('0x22')](function(){return _0x11c149;});})[_0x5b57('0x22')](function(){_0x139214[_0x5b57('0x16')](0xcc)[_0x5b57('0x17')]();});}};}function handleEntityNotFound(_0x10ee0f,_0xf0375b){return function(_0x31c4a5){if(!_0x31c4a5){_0x10ee0f[_0x5b57('0x15')](0x194);}return _0x31c4a5;};}function handleError(_0x2d6398,_0x511a00){_0x511a00=_0x511a00||0x1f4;return function(_0x53c81b){logger[_0x5b57('0x27')](_0x53c81b[_0x5b57('0x28')]);if(_0x53c81b[_0x5b57('0x29')]){delete _0x53c81b['name'];}_0x2d6398[_0x5b57('0x16')](_0x511a00)['send'](_0x53c81b);};}exports[_0x5b57('0x2a')]=function(_0x2743ce,_0x33b262){var _0x42d96c={},_0x4454b2={},_0x41434b={'count':0x0,'rows':[]};var _0x51bd43=_[_0x5b57('0x2b')](db[_0x5b57('0x2c')][_0x5b57('0x2d')],function(_0x3336da){return{'name':_0x3336da[_0x5b57('0x2e')],'type':_0x3336da['type'][_0x5b57('0x2f')]};});_0x4454b2['model']=_[_0x5b57('0x2b')](_0x51bd43,'name');_0x4454b2[_0x5b57('0x30')]=_[_0x5b57('0x31')](_0x2743ce[_0x5b57('0x30')]);_0x4454b2[_0x5b57('0x32')]=_[_0x5b57('0x33')](_0x4454b2[_0x5b57('0x34')],_0x4454b2[_0x5b57('0x30')]);_0x42d96c[_0x5b57('0x35')]=_[_0x5b57('0x33')](_0x4454b2[_0x5b57('0x34')],qs['fields'](_0x2743ce[_0x5b57('0x30')][_0x5b57('0x36')]));_0x42d96c[_0x5b57('0x35')]=_0x42d96c[_0x5b57('0x35')][_0x5b57('0x37')]?_0x42d96c[_0x5b57('0x35')]:_0x4454b2[_0x5b57('0x34')];if(!_0x2743ce[_0x5b57('0x30')][_0x5b57('0x38')](_0x5b57('0x39'))){_0x42d96c[_0x5b57('0x1b')]=qs[_0x5b57('0x1b')](_0x2743ce[_0x5b57('0x30')][_0x5b57('0x1b')]);_0x42d96c['offset']=qs[_0x5b57('0x19')](_0x2743ce['query'][_0x5b57('0x19')]);}_0x42d96c[_0x5b57('0x3a')]=qs[_0x5b57('0x3b')](_0x2743ce[_0x5b57('0x30')][_0x5b57('0x3b')]);_0x42d96c[_0x5b57('0x3c')]=qs[_0x5b57('0x32')](_['pick'](_0x2743ce[_0x5b57('0x30')],_0x4454b2[_0x5b57('0x32')]),_0x51bd43);if(_0x2743ce[_0x5b57('0x30')]['filter']){_0x42d96c[_0x5b57('0x3c')]=_[_0x5b57('0x3d')](_0x42d96c['where'],{'$or':_[_0x5b57('0x2b')](_0x51bd43,function(_0x11db96){if(_0x11db96[_0x5b57('0x3e')]!=='VIRTUAL'){var _0x5631f1={};_0x5631f1[_0x11db96[_0x5b57('0x29')]]={'$like':'%'+_0x2743ce[_0x5b57('0x30')]['filter']+'%'};return _0x5631f1;}})});}_0x42d96c=_[_0x5b57('0x3d')]({},_0x42d96c,_0x2743ce['options']);var _0xd6bda6={'where':_0x42d96c[_0x5b57('0x3c')]};return db['VoiceChanSpy'][_0x5b57('0x1c')](_0xd6bda6)[_0x5b57('0x22')](function(_0x16a177){_0x41434b[_0x5b57('0x1c')]=_0x16a177;if(_0x2743ce[_0x5b57('0x30')][_0x5b57('0x3f')]){_0x42d96c[_0x5b57('0x40')]=[{'all':!![]}];}return db['VoiceChanSpy']['findAll'](_0x42d96c);})[_0x5b57('0x22')](function(_0x48fb91){_0x41434b[_0x5b57('0x41')]=_0x48fb91;return _0x41434b;})['then'](respondWithFilteredResult(_0x33b262,_0x42d96c))[_0x5b57('0x42')](handleError(_0x33b262,null));};exports[_0x5b57('0x43')]=function(_0x30a53a,_0x254207){var _0x41b03e={'raw':![],'where':{'id':_0x30a53a[_0x5b57('0x44')]['id']}},_0x16a453={};_0x16a453[_0x5b57('0x34')]=_[_0x5b57('0x31')](db[_0x5b57('0x2c')][_0x5b57('0x2d')]);_0x16a453[_0x5b57('0x30')]=_[_0x5b57('0x31')](_0x30a53a[_0x5b57('0x30')]);_0x16a453[_0x5b57('0x32')]=_[_0x5b57('0x33')](_0x16a453[_0x5b57('0x34')],_0x16a453[_0x5b57('0x30')]);_0x41b03e[_0x5b57('0x35')]=_['intersection'](_0x16a453[_0x5b57('0x34')],qs[_0x5b57('0x36')](_0x30a53a[_0x5b57('0x30')]['fields']));_0x41b03e[_0x5b57('0x35')]=_0x41b03e[_0x5b57('0x35')][_0x5b57('0x37')]?_0x41b03e[_0x5b57('0x35')]:_0x16a453['model'];if(_0x30a53a['query']['includeAll']){_0x41b03e[_0x5b57('0x40')]=[{'all':!![]}];}_0x41b03e=_[_0x5b57('0x3d')]({},_0x41b03e,_0x30a53a['options']);return db[_0x5b57('0x2c')][_0x5b57('0x45')](_0x41b03e)[_0x5b57('0x22')](handleEntityNotFound(_0x254207,null))[_0x5b57('0x22')](respondWithResult(_0x254207,null))[_0x5b57('0x42')](handleError(_0x254207,null));};exports[_0x5b57('0x46')]=function(_0x22ea65,_0x2027b4){return db[_0x5b57('0x2c')][_0x5b57('0x46')](_0x22ea65[_0x5b57('0x47')],{})[_0x5b57('0x22')](function(_0x267cc7){var _0xe2a031=_0x22ea65[_0x5b57('0x48')][_0x5b57('0x24')]({'plain':!![]});if(!_0xe2a031)throw new Error(_0x5b57('0x49'));if(_0xe2a031[_0x5b57('0x4a')]===_0x5b57('0x48')){var _0x115dda=_0x267cc7[_0x5b57('0x24')]({'plain':!![]});var _0x3f2a3d='ChanSpies';return db['UserProfileSection'][_0x5b57('0x45')]({'where':{'name':_0x3f2a3d,'userProfileId':_0xe2a031['userProfileId']},'raw':!![]})[_0x5b57('0x22')](function(_0x4e54f9){if(_0x4e54f9&&_0x4e54f9[_0x5b57('0x4b')]===0x0){return db[_0x5b57('0x26')][_0x5b57('0x46')]({'name':_0x115dda['name'],'resourceId':_0x115dda['id'],'type':_0x4e54f9['name'],'sectionId':_0x4e54f9['id']},{})['then'](function(){return _0x267cc7;});}else{return _0x267cc7;}})['catch'](function(_0x367dea){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x367dea);throw _0x367dea;});}return _0x267cc7;})['then'](respondWithResult(_0x2027b4,0xc9))[_0x5b57('0x42')](handleError(_0x2027b4,null));};exports[_0x5b57('0x21')]=function(_0x2590a7,_0x3e0c0c){if(_0x2590a7[_0x5b57('0x47')]['id']){delete _0x2590a7[_0x5b57('0x47')]['id'];}return db['VoiceChanSpy'][_0x5b57('0x45')]({'where':{'id':_0x2590a7[_0x5b57('0x44')]['id']}})['then'](handleEntityNotFound(_0x3e0c0c,null))[_0x5b57('0x22')](saveUpdates(_0x2590a7[_0x5b57('0x47')],null))[_0x5b57('0x22')](respondWithResult(_0x3e0c0c,null))[_0x5b57('0x42')](handleError(_0x3e0c0c,null));};exports['destroy']=function(_0x4c90a3,_0x3da514){return db[_0x5b57('0x2c')][_0x5b57('0x45')]({'where':{'id':_0x4c90a3[_0x5b57('0x44')]['id']}})[_0x5b57('0x22')](handleEntityNotFound(_0x3da514,null))['then'](removeEntity(_0x3da514,null))['catch'](handleError(_0x3da514,null));};
\ No newline at end of file
index fbe93c4..bb860d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdb0=['./voiceChanSpy.attributes','context','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','recordingFormat','auth','Authenticate','password','name','options','join','length','concat','internal','findAll','agent','then','exports','define','VoiceChanSpy','voice_chanspy','bulkCreate','catch','VoiceExtension','destroy','lodash','util'];(function(_0x53c412,_0x42577f){var _0x2790b7=function(_0x31e0ee){while(--_0x31e0ee){_0x53c412['push'](_0x53c412['shift']());}};_0x2790b7(++_0x42577f);}(_0xfdb0,0x15c));var _0x0fdb=function(_0x4dfd06,_0x6af841){_0x4dfd06=_0x4dfd06-0x0;var _0x51f8bb=_0xfdb0[_0x4dfd06];return _0x51f8bb;};'use strict';var _=require(_0x0fdb('0x0'));var util=require(_0x0fdb('0x1'));var BPromise=require('bluebird');var attributes=require(_0x0fdb('0x2'));var getUserApplications=function(_0x5b159c,_0x5d4fcb,_0x16f30e){var _0x52fff1=0x1;var _0x3b162c=[];var _0x202a52={'context':_0x5d4fcb[_0x0fdb('0x3')]||'from-sip','exten':util[_0x0fdb('0x4')](_0x0fdb('0x5'),_0x5b159c[_0x0fdb('0x6')],_0x16f30e),'type':'system','isApp':![],'ChanSpyId':_0x5b159c['id'],'UserId':_0x5d4fcb['id']};_0x3b162c[_0x0fdb('0x7')](_[_0x0fdb('0x8')]({'app':_0x0fdb('0x9'),'appdata':util[_0x0fdb('0x4')](_0x0fdb('0xa'),_0x0fdb('0xb')),'priority':_0x52fff1++},_0x202a52));if(_0x5b159c[_0x0fdb('0xc')]){_0x3b162c['push'](_['merge']({'app':_0x0fdb('0xd'),'appdata':util['format']('${UNIQUEID}.%s,a',_0x5b159c[_0x0fdb('0xe')]),'priority':_0x52fff1++},_0x202a52));}if(_0x5b159c[_0x0fdb('0xf')]){_0x3b162c[_0x0fdb('0x7')](_['merge']({'app':_0x0fdb('0x10'),'appdata':_0x5b159c[_0x0fdb('0x11')],'priority':_0x52fff1++},_0x202a52));}_0x3b162c[_0x0fdb('0x7')](_[_0x0fdb('0x8')]({'app':'ChanSpy','appdata':util['format']('SIP/%s,%s',_0x5d4fcb[_0x0fdb('0x12')],_0x5b159c['options']?_0x5b159c[_0x0fdb('0x13')][_0x0fdb('0x14')](''):''),'priority':_0x52fff1++},_0x202a52));if(_0x5b159c['record']){_0x3b162c['push'](_[_0x0fdb('0x8')]({'app':'StopMixMonitor','priority':_0x52fff1++},_0x202a52));}return _0x3b162c;};var getChanSpyApplications=function(_0x38a18e,_0x54ac5a){var _0x8ef6da=[];for(var _0x30ab21=0x0,_0x5680b6=0x1;_0x30ab21<_0x54ac5a[_0x0fdb('0x15')];_0x30ab21++,_0x5680b6=0x1){_0x8ef6da=_0x8ef6da[_0x0fdb('0x16')](getUserApplications(_0x38a18e,_0x54ac5a[_0x30ab21],_0x54ac5a[_0x30ab21][_0x0fdb('0x17')]));if(_0x54ac5a[_0x30ab21][_0x0fdb('0x17')]!=_0x54ac5a[_0x30ab21][_0x0fdb('0x12')]){_0x8ef6da=_0x8ef6da[_0x0fdb('0x16')](getUserApplications(_0x38a18e,_0x54ac5a[_0x30ab21],_0x54ac5a[_0x30ab21][_0x0fdb('0x12')]));}}return _0x8ef6da;};var getChanSpyPromise=function(_0x47a1be,_0x1a9f8c){return new BPromise(function(_0x435c08,_0x2dc34d){return _0x47a1be['User'][_0x0fdb('0x18')]({'attributes':['id',_0x0fdb('0x12'),_0x0fdb('0x17')],'where':{'role':_0x0fdb('0x19'),'chanspy':!![]},'raw':!![]})[_0x0fdb('0x1a')](function(_0x1c9349){if(_0x1c9349){return _0x435c08(getChanSpyApplications(_0x1a9f8c,_0x1c9349));}return _0x435c08([]);})['catch'](function(_0x20927a){_0x2dc34d(_0x20927a);});});};module[_0x0fdb('0x1b')]=function(_0x6e6bdd,_0x4eefbd){var _0x311780=_0x6e6bdd['models'];return _0x6e6bdd[_0x0fdb('0x1c')](_0x0fdb('0x1d'),attributes,{'tableName':_0x0fdb('0x1e'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x4f9b5a,_0x454f94,_0x294eff){return getChanSpyPromise(_0x311780,_0x4f9b5a)['then'](function(_0x2e42e0){if(_0x2e42e0&&_0x2e42e0[_0x0fdb('0x15')]){return _0x311780['VoiceExtension'][_0x0fdb('0x1f')](_0x2e42e0);}})[_0x0fdb('0x1a')](function(){_0x294eff();})[_0x0fdb('0x20')](function(_0x3fab8b){_0x294eff(_0x3fab8b);});},'afterUpdate':function(_0x520c92,_0x843681,_0x12ac10){return _0x311780[_0x0fdb('0x21')][_0x0fdb('0x22')]({'where':{'ChanSpyId':_0x520c92['id']}})['then'](function(){return getChanSpyPromise(_0x311780,_0x520c92);})[_0x0fdb('0x1a')](function(_0x3f32be){if(_0x3f32be&&_0x3f32be[_0x0fdb('0x15')]){return _0x311780[_0x0fdb('0x21')][_0x0fdb('0x1f')](_0x3f32be);}})[_0x0fdb('0x1a')](function(){_0x12ac10();})['catch'](function(_0x47643d){_0x12ac10(_0x47643d);});},'afterDestroy':function(_0x550e65,_0x409108,_0x364815){return _0x311780[_0x0fdb('0x21')][_0x0fdb('0x22')]({'where':{'ChanSpyId':_0x550e65['id']}})[_0x0fdb('0x1a')](function(){_0x364815();})[_0x0fdb('0x20')](function(_0xf0cbdb){_0x364815(_0xf0cbdb);});}}});};
\ No newline at end of file
+var _0x3e4e=['chanspy','record','push','MixMonitor','format','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','join','length','concat','internal','User','findAll','agent','then','exports','models','define','VoiceChanSpy','voice_chanspy','catch','destroy','bulkCreate','VoiceExtension','lodash','util','context','from-sip','prefix','system','merge','Set'];(function(_0x292851,_0xeca2a8){var _0x3c5904=function(_0x2ddf8d){while(--_0x2ddf8d){_0x292851['push'](_0x292851['shift']());}};_0x3c5904(++_0xeca2a8);}(_0x3e4e,0x6a));var _0xe3e4=function(_0x3f2e38,_0x5900fa){_0x3f2e38=_0x3f2e38-0x0;var _0x2002e8=_0x3e4e[_0x3f2e38];return _0x2002e8;};'use strict';var _=require(_0xe3e4('0x0'));var util=require(_0xe3e4('0x1'));var BPromise=require('bluebird');var attributes=require('./voiceChanSpy.attributes');var getUserApplications=function(_0x49363d,_0x15dfb7,_0x2ef5b3){var _0x188be4=0x1;var _0x4a4393=[];var _0x559144={'context':_0x15dfb7[_0xe3e4('0x2')]||_0xe3e4('0x3'),'exten':util['format']('%s%s',_0x49363d[_0xe3e4('0x4')],_0x2ef5b3),'type':_0xe3e4('0x5'),'isApp':![],'ChanSpyId':_0x49363d['id'],'UserId':_0x15dfb7['id']};_0x4a4393['push'](_[_0xe3e4('0x6')]({'app':_0xe3e4('0x7'),'appdata':util['format']('CDR(type)=%s',_0xe3e4('0x8')),'priority':_0x188be4++},_0x559144));if(_0x49363d[_0xe3e4('0x9')]){_0x4a4393[_0xe3e4('0xa')](_[_0xe3e4('0x6')]({'app':_0xe3e4('0xb'),'appdata':util[_0xe3e4('0xc')](_0xe3e4('0xd'),_0x49363d[_0xe3e4('0xe')]),'priority':_0x188be4++},_0x559144));}if(_0x49363d[_0xe3e4('0xf')]){_0x4a4393[_0xe3e4('0xa')](_['merge']({'app':_0xe3e4('0x10'),'appdata':_0x49363d[_0xe3e4('0x11')],'priority':_0x188be4++},_0x559144));}_0x4a4393[_0xe3e4('0xa')](_[_0xe3e4('0x6')]({'app':_0xe3e4('0x12'),'appdata':util['format'](_0xe3e4('0x13'),_0x15dfb7[_0xe3e4('0x14')],_0x49363d['options']?_0x49363d['options'][_0xe3e4('0x15')](''):''),'priority':_0x188be4++},_0x559144));if(_0x49363d[_0xe3e4('0x9')]){_0x4a4393[_0xe3e4('0xa')](_['merge']({'app':'StopMixMonitor','priority':_0x188be4++},_0x559144));}return _0x4a4393;};var getChanSpyApplications=function(_0x5ce9d3,_0x471960){var _0x329149=[];for(var _0x400a64=0x0,_0x5afdec=0x1;_0x400a64<_0x471960[_0xe3e4('0x16')];_0x400a64++,_0x5afdec=0x1){_0x329149=_0x329149[_0xe3e4('0x17')](getUserApplications(_0x5ce9d3,_0x471960[_0x400a64],_0x471960[_0x400a64]['internal']));if(_0x471960[_0x400a64][_0xe3e4('0x18')]!=_0x471960[_0x400a64][_0xe3e4('0x14')]){_0x329149=_0x329149[_0xe3e4('0x17')](getUserApplications(_0x5ce9d3,_0x471960[_0x400a64],_0x471960[_0x400a64][_0xe3e4('0x14')]));}}return _0x329149;};var getChanSpyPromise=function(_0x3cfdb9,_0x55485c){return new BPromise(function(_0x5b5f0c,_0x412ffb){return _0x3cfdb9[_0xe3e4('0x19')][_0xe3e4('0x1a')]({'attributes':['id',_0xe3e4('0x14'),_0xe3e4('0x18')],'where':{'role':_0xe3e4('0x1b'),'chanspy':!![]},'raw':!![]})[_0xe3e4('0x1c')](function(_0x3d1cda){if(_0x3d1cda){return _0x5b5f0c(getChanSpyApplications(_0x55485c,_0x3d1cda));}return _0x5b5f0c([]);})['catch'](function(_0x5b9d8a){_0x412ffb(_0x5b9d8a);});});};module[_0xe3e4('0x1d')]=function(_0x1f6b36,_0x1b1111){var _0x51f697=_0x1f6b36[_0xe3e4('0x1e')];return _0x1f6b36[_0xe3e4('0x1f')](_0xe3e4('0x20'),attributes,{'tableName':_0xe3e4('0x21'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x4debcb,_0x443590,_0x42c6db){return getChanSpyPromise(_0x51f697,_0x4debcb)['then'](function(_0x53dacd){if(_0x53dacd&&_0x53dacd['length']){return _0x51f697['VoiceExtension']['bulkCreate'](_0x53dacd);}})[_0xe3e4('0x1c')](function(){_0x42c6db();})[_0xe3e4('0x22')](function(_0x327ce7){_0x42c6db(_0x327ce7);});},'afterUpdate':function(_0x56ae7b,_0x5f0890,_0x422973){return _0x51f697['VoiceExtension'][_0xe3e4('0x23')]({'where':{'ChanSpyId':_0x56ae7b['id']}})[_0xe3e4('0x1c')](function(){return getChanSpyPromise(_0x51f697,_0x56ae7b);})['then'](function(_0x195b76){if(_0x195b76&&_0x195b76[_0xe3e4('0x16')]){return _0x51f697['VoiceExtension'][_0xe3e4('0x24')](_0x195b76);}})[_0xe3e4('0x1c')](function(){_0x422973();})[_0xe3e4('0x22')](function(_0x2efc62){_0x422973(_0x2efc62);});},'afterDestroy':function(_0xb6c6de,_0x150357,_0x583483){return _0x51f697[_0xe3e4('0x25')][_0xe3e4('0x23')]({'where':{'ChanSpyId':_0xb6c6de['id']}})[_0xe3e4('0x1c')](function(){_0x583483();})[_0xe3e4('0x22')](function(_0x1325d4){_0x583483(_0x1325d4);});}}});};
\ No newline at end of file
index 534fb4b..55fd8bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf80=['result','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','VoiceChanSpy,\x20%s,\x20%s','VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message'];(function(_0x3e32a1,_0x256a37){var _0x371eb4=function(_0x2f8f28){while(--_0x2f8f28){_0x3e32a1['push'](_0x3e32a1['shift']());}};_0x371eb4(++_0x256a37);}(_0xaf80,0x1ef));var _0x0af8=function(_0x41ec32,_0x335cca){_0x41ec32=_0x41ec32-0x0;var _0x39f3a9=_0xaf80[_0x41ec32];return _0x39f3a9;};'use strict';var _=require(_0x0af8('0x0'));var util=require(_0x0af8('0x1'));var moment=require(_0x0af8('0x2'));var BPromise=require(_0x0af8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0af8('0x4'));var logger=require(_0x0af8('0x5'))(_0x0af8('0x6'));var config=require(_0x0af8('0x7'));var jayson=require(_0x0af8('0x8'));var client=jayson[_0x0af8('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4bce2c,_0x28f555,_0x538c1c){return new BPromise(function(_0x207a9b,_0x430bd4){return client[_0x0af8('0xa')](_0x4bce2c,_0x538c1c)['then'](function(_0xc0d5eb){logger[_0x0af8('0xb')](_0x0af8('0xc'),_0x28f555,'request\x20sent');logger['debug'](_0x0af8('0xd'),_0x28f555,_0x0af8('0xe'),JSON[_0x0af8('0xf')](_0xc0d5eb));if(_0xc0d5eb[_0x0af8('0x10')]){if(_0xc0d5eb[_0x0af8('0x10')]['code']===0x1f4){logger[_0x0af8('0x10')](_0x0af8('0xc'),_0x28f555,_0xc0d5eb[_0x0af8('0x10')][_0x0af8('0x11')]);return _0x430bd4(_0xc0d5eb[_0x0af8('0x10')][_0x0af8('0x11')]);}logger[_0x0af8('0x10')]('VoiceChanSpy,\x20%s,\x20%s',_0x28f555,_0xc0d5eb['error'][_0x0af8('0x11')]);return _0x207a9b(_0xc0d5eb[_0x0af8('0x10')][_0x0af8('0x11')]);}else{logger[_0x0af8('0xb')](_0x0af8('0xc'),_0x28f555,_0x0af8('0xe'));_0x207a9b(_0xc0d5eb[_0x0af8('0x12')][_0x0af8('0x11')]);}})['catch'](function(_0x5f4275){logger['error'](_0x0af8('0xc'),_0x28f555,_0x5f4275);_0x430bd4(_0x5f4275);});});}
\ No newline at end of file
+var _0x1339=['info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then'];(function(_0x2e5acb,_0x145a99){var _0x8d1b76=function(_0x22b290){while(--_0x22b290){_0x2e5acb['push'](_0x2e5acb['shift']());}};_0x8d1b76(++_0x145a99);}(_0x1339,0x1ed));var _0x9133=function(_0x4318fc,_0x81805){_0x4318fc=_0x4318fc-0x0;var _0x46da1e=_0x1339[_0x4318fc];return _0x46da1e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9133('0x0'));var BPromise=require(_0x9133('0x1'));var rs=require(_0x9133('0x2'));var fs=require('fs');var Redis=require(_0x9133('0x3'));var db=require(_0x9133('0x4'))['db'];var utils=require(_0x9133('0x5'));var logger=require(_0x9133('0x6'))(_0x9133('0x7'));var config=require('../../config/environment');var jayson=require(_0x9133('0x8'));var client=jayson[_0x9133('0x9')][_0x9133('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x539af6,_0x2758e2,_0x334dcd){return new BPromise(function(_0x3059c4,_0x431a55){return client[_0x9133('0xb')](_0x539af6,_0x334dcd)[_0x9133('0xc')](function(_0x4294b7){logger[_0x9133('0xd')](_0x9133('0xe'),_0x2758e2,_0x9133('0xf'));logger['debug'](_0x9133('0x10'),_0x2758e2,_0x9133('0xf'),JSON[_0x9133('0x11')](_0x4294b7));if(_0x4294b7[_0x9133('0x12')]){if(_0x4294b7[_0x9133('0x12')][_0x9133('0x13')]===0x1f4){logger['error'](_0x9133('0xe'),_0x2758e2,_0x4294b7[_0x9133('0x12')]['message']);return _0x431a55(_0x4294b7['error'][_0x9133('0x14')]);}logger['error'](_0x9133('0xe'),_0x2758e2,_0x4294b7[_0x9133('0x12')][_0x9133('0x14')]);return _0x3059c4(_0x4294b7[_0x9133('0x12')][_0x9133('0x14')]);}else{logger[_0x9133('0xd')]('VoiceChanSpy,\x20%s,\x20%s',_0x2758e2,_0x9133('0xf'));_0x3059c4(_0x4294b7[_0x9133('0x15')]['message']);}})[_0x9133('0x16')](function(_0xa46eb1){logger[_0x9133('0x12')](_0x9133('0xe'),_0x2758e2,_0xa46eb1);_0x431a55(_0xa46eb1);});});}
\ No newline at end of file
index 2b541f2..ea13348 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39e4=['Router','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','multer','util','path','connect-timeout','express'];(function(_0x580b15,_0x28afa4){var _0x1adb1b=function(_0x47a01f){while(--_0x47a01f){_0x580b15['push'](_0x580b15['shift']());}};_0x1adb1b(++_0x28afa4);}(_0x39e4,0x6d));var _0x439e=function(_0x2804c5,_0x27ba76){_0x2804c5=_0x2804c5-0x0;var _0x26257f=_0x39e4[_0x2804c5];return _0x26257f;};'use strict';var multer=require(_0x439e('0x0'));var util=require(_0x439e('0x1'));var path=require(_0x439e('0x2'));var timeout=require(_0x439e('0x3'));var express=require(_0x439e('0x4'));var router=express[_0x439e('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x439e('0x6'));var config=require(_0x439e('0x7'));var controller=require(_0x439e('0x8'));router[_0x439e('0x9')]('/',auth[_0x439e('0xa')](),controller[_0x439e('0xb')]);router[_0x439e('0x9')](_0x439e('0xc'),auth[_0x439e('0xa')](),controller[_0x439e('0xd')]);router['post']('/',auth[_0x439e('0xa')](),controller[_0x439e('0xe')]);router[_0x439e('0xf')]('/:id',auth[_0x439e('0xa')](),controller[_0x439e('0x10')]);router[_0x439e('0x11')](_0x439e('0xc'),auth[_0x439e('0xa')](),controller[_0x439e('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x60cb=['get','index','isAuthenticated','show','post','create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x569caa,_0x5174ce){var _0x44cb5a=function(_0x456df4){while(--_0x456df4){_0x569caa['push'](_0x569caa['shift']());}};_0x44cb5a(++_0x5174ce);}(_0x60cb,0x124));var _0xb60c=function(_0x2a458f,_0x198f82){_0x2a458f=_0x2a458f-0x0;var _0x91fb7=_0x60cb[_0x2a458f];return _0x91fb7;};'use strict';var multer=require(_0xb60c('0x0'));var util=require('util');var path=require(_0xb60c('0x1'));var timeout=require(_0xb60c('0x2'));var express=require(_0xb60c('0x3'));var router=express[_0xb60c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb60c('0x5'));var interaction=require(_0xb60c('0x6'));var config=require(_0xb60c('0x7'));var controller=require('./voiceContext.controller');router[_0xb60c('0x8')]('/',auth['isAuthenticated'](),controller[_0xb60c('0x9')]);router[_0xb60c('0x8')]('/:id',auth[_0xb60c('0xa')](),controller[_0xb60c('0xb')]);router[_0xb60c('0xc')]('/',auth[_0xb60c('0xa')](),controller[_0xb60c('0xd')]);router[_0xb60c('0xe')](_0xb60c('0xf'),auth[_0xb60c('0xa')](),controller[_0xb60c('0x10')]);router[_0xb60c('0x11')](_0xb60c('0xf'),auth[_0xb60c('0xa')](),controller[_0xb60c('0x12')]);module[_0xb60c('0x13')]=router;
\ No newline at end of file
index 3ffa9dd..f99004e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6da=['exports','STRING','BOOLEAN'];(function(_0x48dc3e,_0x1ac9bf){var _0x3d5e06=function(_0x203bbb){while(--_0x203bbb){_0x48dc3e['push'](_0x48dc3e['shift']());}};_0x3d5e06(++_0x1ac9bf);}(_0xf6da,0x1ce));var _0xaf6d=function(_0x21105b,_0x382c18){_0x21105b=_0x21105b-0x0;var _0xb5a5d4=_0xf6da[_0x21105b];return _0xb5a5d4;};'use strict';var Sequelize=require('sequelize');module[_0xaf6d('0x0')]={'name':{'type':Sequelize[_0xaf6d('0x1')],'unique':'name'},'description':{'type':Sequelize[_0xaf6d('0x1')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xaf6d('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2c91=['exports','name','BOOLEAN','sequelize'];(function(_0x304d57,_0x3f378d){var _0x5db23c=function(_0x18ff31){while(--_0x18ff31){_0x304d57['push'](_0x304d57['shift']());}};_0x5db23c(++_0x3f378d);}(_0x2c91,0x1db));var _0x12c9=function(_0x1581b9,_0x733184){_0x1581b9=_0x1581b9-0x0;var _0x3e04f9=_0x2c91[_0x1581b9];return _0x3e04f9;};'use strict';var Sequelize=require(_0x12c9('0x0'));module[_0x12c9('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x12c9('0x2')},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x12c9('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index fd7e2fd..001ac38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2192=['VIRTUAL','options','then','include','findAll','rows','catch','show','includeAll','create','readFileSync','join','server/files/templates/context.ejs','utf8','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','Contexts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','render','root','eml-format','rimraf','zip-dir','moment','mustache','util','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','request','VoiceContext,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','result','sendStatus','status','end','json','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','UserProfileResource','name','send','index','VoiceContext','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map'];(function(_0x170715,_0x535d5c){var _0x2230be=function(_0x4b6706){while(--_0x4b6706){_0x170715['push'](_0x170715['shift']());}};_0x2230be(++_0x535d5c);}(_0x2192,0xe9));var _0x2219=function(_0x1ecf4f,_0x36d4e0){_0x1ecf4f=_0x1ecf4f-0x0;var _0x4f94d6=_0x2192[_0x1ecf4f];return _0x4f94d6;};'use strict';var emlformat=require(_0x2219('0x0'));var rimraf=require(_0x2219('0x1'));var zipdir=require(_0x2219('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x2219('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2219('0x4'));var util=require(_0x2219('0x5'));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(_0x2219('0x6'));var _=require(_0x2219('0x7'));var squel=require(_0x2219('0x8'));var crypto=require('crypto');var jsforce=require(_0x2219('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x2219('0xa'));var querystring=require(_0x2219('0xb'));var Papa=require(_0x2219('0xc'));var Redis=require(_0x2219('0xd'));var authService=require(_0x2219('0xe'));var qs=require(_0x2219('0xf'));var as=require(_0x2219('0x10'));var hardwareService=require(_0x2219('0x11'));var logger=require(_0x2219('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x2219('0x13'));var licenseUtil=require(_0x2219('0x14'));var db=require(_0x2219('0x15'))['db'];var jayson=require(_0x2219('0x16'));var client=jayson[_0x2219('0x17')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3763b3,_0x529abd,_0x267208,_0x5c9de8){return new BPromise(function(_0x50c24d,_0xde3e85){var _0x22a823=_0x5c9de8||client;return _0x22a823[_0x2219('0x18')](_0x3763b3,_0x267208)['then'](function(_0x5ac441){logger['info'](_0x2219('0x19'),_0x529abd,'request\x20sent');logger[_0x2219('0x1a')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x529abd,_0x2219('0x1b'),JSON[_0x2219('0x1c')](_0x5ac441));if(_0x5ac441[_0x2219('0x1d')]){if(_0x5ac441['error'][_0x2219('0x1e')]===0x1f4){logger[_0x2219('0x1d')]('VoiceContext,\x20%s,\x20%s',_0x529abd,_0x5ac441[_0x2219('0x1d')][_0x2219('0x1f')]);return _0xde3e85(_0x5ac441['error'][_0x2219('0x1f')]);}logger[_0x2219('0x1d')](_0x2219('0x19'),_0x529abd,_0x5ac441[_0x2219('0x1d')][_0x2219('0x1f')]);return _0x50c24d(_0x5ac441[_0x2219('0x1d')][_0x2219('0x1f')]);}else{logger[_0x2219('0x20')](_0x2219('0x19'),_0x529abd,'request\x20sent');_0x50c24d(_0x5ac441[_0x2219('0x21')][_0x2219('0x1f')]);}})['catch'](function(_0x86d8d9){logger[_0x2219('0x1d')](_0x2219('0x19'),_0x529abd,_0x86d8d9);_0xde3e85(_0x86d8d9);});});}function respondWithStatusCode(_0xae0585,_0x34ddef){_0x34ddef=_0x34ddef||0xcc;return function(_0x249d7c){if(_0x249d7c){return _0xae0585[_0x2219('0x22')](_0x34ddef);}return _0xae0585[_0x2219('0x23')](_0x34ddef)[_0x2219('0x24')]();};}function respondWithResult(_0x3c6ffc,_0x4ae213){_0x4ae213=_0x4ae213||0xc8;return function(_0x4368c6){if(_0x4368c6){return _0x3c6ffc[_0x2219('0x23')](_0x4ae213)[_0x2219('0x25')](_0x4368c6);}};}function respondWithFilteredResult(_0x118541,_0x1ce77f){return function(_0x370ef1){if(_0x370ef1){var _0x399000=typeof _0x1ce77f['offset']==='undefined'&&typeof _0x1ce77f[_0x2219('0x26')]==='undefined';var _0x2ccf7c=_0x370ef1[_0x2219('0x27')];var _0x5422d4=_0x399000?0x0:_0x1ce77f[_0x2219('0x28')];var _0x1f2e6a=_0x399000?_0x370ef1[_0x2219('0x27')]:_0x1ce77f[_0x2219('0x28')]+_0x1ce77f[_0x2219('0x26')];var _0x163108;if(_0x1f2e6a>=_0x2ccf7c){_0x1f2e6a=_0x2ccf7c;_0x163108=0xc8;}else{_0x163108=0xce;}_0x118541[_0x2219('0x23')](_0x163108);return _0x118541[_0x2219('0x29')](_0x2219('0x2a'),_0x5422d4+'-'+_0x1f2e6a+'/'+_0x2ccf7c)['json'](_0x370ef1);}return null;};}function patchUpdates(_0x579240){return function(_0x1cb179){try{jsonpatch[_0x2219('0x2b')](_0x1cb179,_0x579240,!![]);}catch(_0x546c98){return BPromise[_0x2219('0x2c')](_0x546c98);}return _0x1cb179[_0x2219('0x2d')]();};}function saveUpdates(_0x766553,_0x40caa4){return function(_0x11a42b){if(_0x11a42b){return _0x11a42b[_0x2219('0x2e')](_0x766553)['then'](function(_0x267066){return _0x267066;});}return null;};}function removeEntity(_0x51318a,_0x3d1c5f){return function(_0x287cf6){if(_0x287cf6){return _0x287cf6[_0x2219('0x2f')]()['then'](function(){var _0xbebb7b=_0x287cf6['get']({'plain':!![]});var _0x4d67e2='Contexts';return db[_0x2219('0x30')]['destroy']({'where':{'type':_0x4d67e2,'resourceId':_0xbebb7b['id']}})['then'](function(){return _0x287cf6;});})['then'](function(){_0x51318a['status'](0xcc)[_0x2219('0x24')]();});}};}function handleEntityNotFound(_0x295035,_0x5b2a5d){return function(_0x217bb8){if(!_0x217bb8){_0x295035['sendStatus'](0x194);}return _0x217bb8;};}function handleError(_0x73d4ac,_0x380162){_0x380162=_0x380162||0x1f4;return function(_0x1322a3){logger[_0x2219('0x1d')](_0x1322a3['stack']);if(_0x1322a3[_0x2219('0x31')]){delete _0x1322a3[_0x2219('0x31')];}_0x73d4ac['status'](_0x380162)[_0x2219('0x32')](_0x1322a3);};}exports[_0x2219('0x33')]=function(_0x39fe10,_0x464a95){var _0x521fc={},_0x35c602={},_0x44cede={'count':0x0,'rows':[]};var _0x57cb8d=_['map'](db[_0x2219('0x34')][_0x2219('0x35')],function(_0x281b9a){return{'name':_0x281b9a[_0x2219('0x36')],'type':_0x281b9a[_0x2219('0x37')][_0x2219('0x38')]};});_0x35c602[_0x2219('0x39')]=_['map'](_0x57cb8d,'name');_0x35c602['query']=_[_0x2219('0x3a')](_0x39fe10[_0x2219('0x3b')]);_0x35c602[_0x2219('0x3c')]=_[_0x2219('0x3d')](_0x35c602[_0x2219('0x39')],_0x35c602[_0x2219('0x3b')]);_0x521fc[_0x2219('0x3e')]=_['intersection'](_0x35c602[_0x2219('0x39')],qs[_0x2219('0x3f')](_0x39fe10[_0x2219('0x3b')][_0x2219('0x3f')]));_0x521fc['attributes']=_0x521fc[_0x2219('0x3e')][_0x2219('0x40')]?_0x521fc[_0x2219('0x3e')]:_0x35c602[_0x2219('0x39')];if(!_0x39fe10[_0x2219('0x3b')][_0x2219('0x41')](_0x2219('0x42'))){_0x521fc[_0x2219('0x26')]=qs['limit'](_0x39fe10[_0x2219('0x3b')]['limit']);_0x521fc[_0x2219('0x28')]=qs[_0x2219('0x28')](_0x39fe10['query']['offset']);}_0x521fc['order']=qs[_0x2219('0x43')](_0x39fe10['query'][_0x2219('0x43')]);_0x521fc[_0x2219('0x44')]=qs['filters'](_[_0x2219('0x45')](_0x39fe10['query'],_0x35c602[_0x2219('0x3c')]),_0x57cb8d);if(_0x39fe10['query'][_0x2219('0x46')]){_0x521fc[_0x2219('0x44')]=_[_0x2219('0x47')](_0x521fc[_0x2219('0x44')],{'$or':_[_0x2219('0x48')](_0x57cb8d,function(_0x4558d1){if(_0x4558d1[_0x2219('0x37')]!==_0x2219('0x49')){var _0x4c0316={};_0x4c0316[_0x4558d1['name']]={'$like':'%'+_0x39fe10[_0x2219('0x3b')][_0x2219('0x46')]+'%'};return _0x4c0316;}})});}_0x521fc=_[_0x2219('0x47')]({},_0x521fc,_0x39fe10[_0x2219('0x4a')]);var _0xa54304={'where':_0x521fc[_0x2219('0x44')]};return db['VoiceContext'][_0x2219('0x27')](_0xa54304)[_0x2219('0x4b')](function(_0x4352d9){_0x44cede[_0x2219('0x27')]=_0x4352d9;if(_0x39fe10[_0x2219('0x3b')]['includeAll']){_0x521fc[_0x2219('0x4c')]=[{'all':!![]}];}return db[_0x2219('0x34')][_0x2219('0x4d')](_0x521fc);})[_0x2219('0x4b')](function(_0xf6a383){_0x44cede[_0x2219('0x4e')]=_0xf6a383;return _0x44cede;})['then'](respondWithFilteredResult(_0x464a95,_0x521fc))[_0x2219('0x4f')](handleError(_0x464a95,null));};exports[_0x2219('0x50')]=function(_0x5bc87d,_0x140742){var _0x1421ec={'raw':![],'where':{'id':_0x5bc87d['params']['id']}},_0x58c236={};_0x58c236['model']=_[_0x2219('0x3a')](db[_0x2219('0x34')]['rawAttributes']);_0x58c236['query']=_[_0x2219('0x3a')](_0x5bc87d['query']);_0x58c236['filters']=_[_0x2219('0x3d')](_0x58c236[_0x2219('0x39')],_0x58c236[_0x2219('0x3b')]);_0x1421ec[_0x2219('0x3e')]=_[_0x2219('0x3d')](_0x58c236[_0x2219('0x39')],qs['fields'](_0x5bc87d['query']['fields']));_0x1421ec[_0x2219('0x3e')]=_0x1421ec[_0x2219('0x3e')][_0x2219('0x40')]?_0x1421ec[_0x2219('0x3e')]:_0x58c236['model'];if(_0x5bc87d[_0x2219('0x3b')][_0x2219('0x51')]){_0x1421ec[_0x2219('0x4c')]=[{'all':!![]}];}_0x1421ec=_[_0x2219('0x47')]({},_0x1421ec,_0x5bc87d['options']);return db[_0x2219('0x34')]['find'](_0x1421ec)['then'](handleEntityNotFound(_0x140742,null))['then'](respondWithResult(_0x140742,null))[_0x2219('0x4f')](handleError(_0x140742,null));};exports[_0x2219('0x52')]=function(_0x5b2433,_0x1fdb11,_0x370cd6){var _0x47b5a2;return db[_0x2219('0x34')][_0x2219('0x52')](_0x5b2433['body'],{'raw':!![]})['then'](function(_0x3ff673){_0x47b5a2=_0x3ff673;return db[_0x2219('0x34')][_0x2219('0x4d')]({'raw':!![]});})['then'](function(_0x9cc2e8){var _0x4cf419=fs[_0x2219('0x53')](path[_0x2219('0x54')](config['root'],_0x2219('0x55')),_0x2219('0x56'));var _0x22d6e0=ejs['render'](_0x4cf419,{'contexts':_0x9cc2e8||[]});fs[_0x2219('0x57')](_0x2219('0x58'),_0x22d6e0);})[_0x2219('0x4b')](function(){return respondWithRpcPromise(_0x2219('0x59'),_0x2219('0x52'),{'module':_0x2219('0x5a')});})[_0x2219('0x4b')](function(){var _0x557085=_0x5b2433[_0x2219('0x5b')][_0x2219('0x5c')]({'plain':!![]});if(!_0x557085)throw new Error(_0x2219('0x5d'));if(_0x557085[_0x2219('0x5e')]===_0x2219('0x5b')){var _0x25a05c=_0x47b5a2[_0x2219('0x5c')]({'plain':!![]});return db['UserProfileSection'][_0x2219('0x5f')]({'where':{'name':_0x2219('0x60'),'userProfileId':_0x557085[_0x2219('0x61')]},'raw':!![]})[_0x2219('0x4b')](function(_0x1c6d38){if(_0x1c6d38&&_0x1c6d38[_0x2219('0x62')]===0x0){return db[_0x2219('0x30')][_0x2219('0x52')]({'name':_0x25a05c[_0x2219('0x31')],'resourceId':_0x25a05c['id'],'type':_0x1c6d38[_0x2219('0x31')],'sectionId':_0x1c6d38['id']},{})[_0x2219('0x4b')](function(){return _0x47b5a2;});}else{return _0x47b5a2;}})[_0x2219('0x4f')](function(_0x33ebf3){logger[_0x2219('0x1d')](_0x2219('0x63'),_0x33ebf3);throw _0x33ebf3;});}return _0x47b5a2;})['then'](respondWithResult(_0x1fdb11,0xc9))[_0x2219('0x4f')](handleError(_0x1fdb11,null));};exports[_0x2219('0x2e')]=function(_0x21b65d,_0x57eea9,_0x25718f){var _0x451947;return db[_0x2219('0x34')][_0x2219('0x5f')]({'where':{'id':_0x21b65d['params']['id']}})[_0x2219('0x4b')](handleEntityNotFound(_0x57eea9,null))[_0x2219('0x4b')](saveUpdates(_0x21b65d['body'],null))[_0x2219('0x4b')](function(_0x4247e8){if(_0x4247e8){_0x451947=_0x4247e8;return db[_0x2219('0x34')][_0x2219('0x4d')]({'raw':!![]});}})[_0x2219('0x4b')](function(_0x28245a){var _0x4a70ac=fs[_0x2219('0x53')](path['join'](config['root'],_0x2219('0x55')),'utf8');var _0x549d78=ejs[_0x2219('0x64')](_0x4a70ac,{'contexts':_0x28245a||[]});fs[_0x2219('0x57')](_0x2219('0x58'),_0x549d78);})['then'](function(){return respondWithRpcPromise('Reload',_0x2219('0x2e'),{'module':_0x2219('0x5a')});})[_0x2219('0x4b')](function(){return _0x451947;})[_0x2219('0x4b')](respondWithResult(_0x57eea9,null))[_0x2219('0x4f')](handleError(_0x57eea9,null));};exports[_0x2219('0x2f')]=function(_0x1fbbc4,_0x86cd19,_0x588f69){var _0x9c22b7;return db[_0x2219('0x34')][_0x2219('0x5f')]({'where':{'id':_0x1fbbc4['params']['id']}})[_0x2219('0x4b')](handleEntityNotFound(_0x86cd19,null))[_0x2219('0x4b')](removeEntity(_0x86cd19,null))['then'](function(){return db['VoiceContext']['findAll']({'raw':!![]});})[_0x2219('0x4b')](function(_0x3c798e){var _0x510acc=fs[_0x2219('0x53')](path[_0x2219('0x54')](config[_0x2219('0x65')],_0x2219('0x55')),_0x2219('0x56'));var _0x551d2c=ejs[_0x2219('0x64')](_0x510acc,{'contexts':_0x3c798e});fs[_0x2219('0x57')](_0x2219('0x58'),_0x551d2c);return respondWithRpcPromise(_0x2219('0x59'),_0x2219('0x2f'),{'module':_0x2219('0x5a')});})[_0x2219('0x4f')](handleError(_0x86cd19,null));};
\ No newline at end of file
+var _0xcdf8=['length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','intersection','create','body','readFileSync','join','server/files/templates/context.ejs','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','root','utf8','chan_sip.so','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','Contexts','name','send','index','map','VoiceContext','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','fields'];(function(_0x3b742c,_0x3908ba){var _0x186511=function(_0x5662df){while(--_0x5662df){_0x3b742c['push'](_0x3b742c['shift']());}};_0x186511(++_0x3908ba);}(_0xcdf8,0x16a));var _0x8cdf=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0xcdf8[_0x465a0c];return _0x1e202e;};'use strict';var emlformat=require(_0x8cdf('0x0'));var rimraf=require(_0x8cdf('0x1'));var zipdir=require(_0x8cdf('0x2'));var jsonpatch=require(_0x8cdf('0x3'));var rp=require('request-promise');var moment=require(_0x8cdf('0x4'));var BPromise=require(_0x8cdf('0x5'));var Mustache=require(_0x8cdf('0x6'));var util=require(_0x8cdf('0x7'));var path=require(_0x8cdf('0x8'));var sox=require(_0x8cdf('0x9'));var csv=require(_0x8cdf('0xa'));var ejs=require(_0x8cdf('0xb'));var fs=require('fs');var fs_extra=require(_0x8cdf('0xc'));var _=require(_0x8cdf('0xd'));var squel=require(_0x8cdf('0xe'));var crypto=require(_0x8cdf('0xf'));var jsforce=require(_0x8cdf('0x10'));var deskjs=require(_0x8cdf('0x11'));var toCsv=require(_0x8cdf('0xa'));var querystring=require(_0x8cdf('0x12'));var Papa=require('papaparse');var Redis=require(_0x8cdf('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x8cdf('0x14'));var as=require(_0x8cdf('0x15'));var hardwareService=require(_0x8cdf('0x16'));var logger=require(_0x8cdf('0x17'))(_0x8cdf('0x18'));var utils=require(_0x8cdf('0x19'));var config=require(_0x8cdf('0x1a'));var licenseUtil=require(_0x8cdf('0x1b'));var db=require(_0x8cdf('0x1c'))['db'];var jayson=require(_0x8cdf('0x1d'));var client=jayson[_0x8cdf('0x1e')][_0x8cdf('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x1cbf3e,_0x356402,_0x463103,_0x255629){return new BPromise(function(_0x2cfda8,_0x4b2225){var _0x315b68=_0x255629||client;return _0x315b68[_0x8cdf('0x20')](_0x1cbf3e,_0x463103)[_0x8cdf('0x21')](function(_0x5de735){logger[_0x8cdf('0x22')](_0x8cdf('0x23'),_0x356402,'request\x20sent');logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x356402,'request\x20sent',JSON['stringify'](_0x5de735));if(_0x5de735[_0x8cdf('0x24')]){if(_0x5de735['error'][_0x8cdf('0x25')]===0x1f4){logger[_0x8cdf('0x24')](_0x8cdf('0x23'),_0x356402,_0x5de735[_0x8cdf('0x24')][_0x8cdf('0x26')]);return _0x4b2225(_0x5de735[_0x8cdf('0x24')][_0x8cdf('0x26')]);}logger['error'](_0x8cdf('0x23'),_0x356402,_0x5de735[_0x8cdf('0x24')][_0x8cdf('0x26')]);return _0x2cfda8(_0x5de735[_0x8cdf('0x24')][_0x8cdf('0x26')]);}else{logger[_0x8cdf('0x22')](_0x8cdf('0x23'),_0x356402,_0x8cdf('0x27'));_0x2cfda8(_0x5de735[_0x8cdf('0x28')][_0x8cdf('0x26')]);}})[_0x8cdf('0x29')](function(_0x7e6f46){logger[_0x8cdf('0x24')](_0x8cdf('0x23'),_0x356402,_0x7e6f46);_0x4b2225(_0x7e6f46);});});}function respondWithStatusCode(_0x4a5583,_0x45e7bc){_0x45e7bc=_0x45e7bc||0xcc;return function(_0x3518be){if(_0x3518be){return _0x4a5583['sendStatus'](_0x45e7bc);}return _0x4a5583[_0x8cdf('0x2a')](_0x45e7bc)[_0x8cdf('0x2b')]();};}function respondWithResult(_0x17f21d,_0x2eca2c){_0x2eca2c=_0x2eca2c||0xc8;return function(_0x4ac61e){if(_0x4ac61e){return _0x17f21d[_0x8cdf('0x2a')](_0x2eca2c)[_0x8cdf('0x2c')](_0x4ac61e);}};}function respondWithFilteredResult(_0x244e19,_0xd4858e){return function(_0x5cfff5){if(_0x5cfff5){var _0x3aa9ac=typeof _0xd4858e[_0x8cdf('0x2d')]===_0x8cdf('0x2e')&&typeof _0xd4858e[_0x8cdf('0x2f')]==='undefined';var _0x2a19e0=_0x5cfff5[_0x8cdf('0x30')];var _0x5a4a31=_0x3aa9ac?0x0:_0xd4858e['offset'];var _0x83acd3=_0x3aa9ac?_0x5cfff5[_0x8cdf('0x30')]:_0xd4858e['offset']+_0xd4858e['limit'];var _0x45f444;if(_0x83acd3>=_0x2a19e0){_0x83acd3=_0x2a19e0;_0x45f444=0xc8;}else{_0x45f444=0xce;}_0x244e19[_0x8cdf('0x2a')](_0x45f444);return _0x244e19[_0x8cdf('0x31')](_0x8cdf('0x32'),_0x5a4a31+'-'+_0x83acd3+'/'+_0x2a19e0)[_0x8cdf('0x2c')](_0x5cfff5);}return null;};}function patchUpdates(_0x280bce){return function(_0x529004){try{jsonpatch[_0x8cdf('0x33')](_0x529004,_0x280bce,!![]);}catch(_0x3563e4){return BPromise['reject'](_0x3563e4);}return _0x529004[_0x8cdf('0x34')]();};}function saveUpdates(_0x59f06d,_0x179a7e){return function(_0x5de273){if(_0x5de273){return _0x5de273[_0x8cdf('0x35')](_0x59f06d)[_0x8cdf('0x21')](function(_0x363968){return _0x363968;});}return null;};}function removeEntity(_0x145d1b,_0x6d85cc){return function(_0x4e2c51){if(_0x4e2c51){return _0x4e2c51['destroy']()['then'](function(){var _0x397e64=_0x4e2c51['get']({'plain':!![]});var _0xc583c=_0x8cdf('0x36');return db['UserProfileResource']['destroy']({'where':{'type':_0xc583c,'resourceId':_0x397e64['id']}})['then'](function(){return _0x4e2c51;});})[_0x8cdf('0x21')](function(){_0x145d1b[_0x8cdf('0x2a')](0xcc)[_0x8cdf('0x2b')]();});}};}function handleEntityNotFound(_0x1dfd70,_0x52eb34){return function(_0x2fd79e){if(!_0x2fd79e){_0x1dfd70['sendStatus'](0x194);}return _0x2fd79e;};}function handleError(_0x3be6fc,_0x77c42f){_0x77c42f=_0x77c42f||0x1f4;return function(_0x91ab38){logger[_0x8cdf('0x24')](_0x91ab38['stack']);if(_0x91ab38['name']){delete _0x91ab38[_0x8cdf('0x37')];}_0x3be6fc['status'](_0x77c42f)[_0x8cdf('0x38')](_0x91ab38);};}exports[_0x8cdf('0x39')]=function(_0x30e721,_0x2085ef){var _0x326ddb={},_0x3a2c99={},_0x4483b2={'count':0x0,'rows':[]};var _0x4ff232=_[_0x8cdf('0x3a')](db[_0x8cdf('0x3b')][_0x8cdf('0x3c')],function(_0x169666){return{'name':_0x169666[_0x8cdf('0x3d')],'type':_0x169666[_0x8cdf('0x3e')][_0x8cdf('0x3f')]};});_0x3a2c99[_0x8cdf('0x40')]=_[_0x8cdf('0x3a')](_0x4ff232,'name');_0x3a2c99['query']=_[_0x8cdf('0x41')](_0x30e721[_0x8cdf('0x42')]);_0x3a2c99[_0x8cdf('0x43')]=_['intersection'](_0x3a2c99[_0x8cdf('0x40')],_0x3a2c99['query']);_0x326ddb[_0x8cdf('0x44')]=_['intersection'](_0x3a2c99[_0x8cdf('0x40')],qs[_0x8cdf('0x45')](_0x30e721[_0x8cdf('0x42')][_0x8cdf('0x45')]));_0x326ddb[_0x8cdf('0x44')]=_0x326ddb[_0x8cdf('0x44')][_0x8cdf('0x46')]?_0x326ddb[_0x8cdf('0x44')]:_0x3a2c99[_0x8cdf('0x40')];if(!_0x30e721['query'][_0x8cdf('0x47')](_0x8cdf('0x48'))){_0x326ddb[_0x8cdf('0x2f')]=qs[_0x8cdf('0x2f')](_0x30e721[_0x8cdf('0x42')][_0x8cdf('0x2f')]);_0x326ddb[_0x8cdf('0x2d')]=qs[_0x8cdf('0x2d')](_0x30e721['query'][_0x8cdf('0x2d')]);}_0x326ddb[_0x8cdf('0x49')]=qs[_0x8cdf('0x4a')](_0x30e721[_0x8cdf('0x42')][_0x8cdf('0x4a')]);_0x326ddb[_0x8cdf('0x4b')]=qs[_0x8cdf('0x43')](_[_0x8cdf('0x4c')](_0x30e721[_0x8cdf('0x42')],_0x3a2c99[_0x8cdf('0x43')]),_0x4ff232);if(_0x30e721[_0x8cdf('0x42')][_0x8cdf('0x4d')]){_0x326ddb[_0x8cdf('0x4b')]=_[_0x8cdf('0x4e')](_0x326ddb[_0x8cdf('0x4b')],{'$or':_[_0x8cdf('0x3a')](_0x4ff232,function(_0x40eb15){if(_0x40eb15[_0x8cdf('0x3e')]!==_0x8cdf('0x4f')){var _0x4f220a={};_0x4f220a[_0x40eb15[_0x8cdf('0x37')]]={'$like':'%'+_0x30e721[_0x8cdf('0x42')][_0x8cdf('0x4d')]+'%'};return _0x4f220a;}})});}_0x326ddb=_['merge']({},_0x326ddb,_0x30e721[_0x8cdf('0x50')]);var _0x351f96={'where':_0x326ddb[_0x8cdf('0x4b')]};return db['VoiceContext']['count'](_0x351f96)[_0x8cdf('0x21')](function(_0x35ef62){_0x4483b2['count']=_0x35ef62;if(_0x30e721[_0x8cdf('0x42')][_0x8cdf('0x51')]){_0x326ddb[_0x8cdf('0x52')]=[{'all':!![]}];}return db[_0x8cdf('0x3b')][_0x8cdf('0x53')](_0x326ddb);})[_0x8cdf('0x21')](function(_0x225aa0){_0x4483b2[_0x8cdf('0x54')]=_0x225aa0;return _0x4483b2;})['then'](respondWithFilteredResult(_0x2085ef,_0x326ddb))['catch'](handleError(_0x2085ef,null));};exports['show']=function(_0x2ea441,_0x16f579){var _0x51076e={'raw':![],'where':{'id':_0x2ea441['params']['id']}},_0x41fd37={};_0x41fd37[_0x8cdf('0x40')]=_[_0x8cdf('0x41')](db['VoiceContext'][_0x8cdf('0x3c')]);_0x41fd37['query']=_['keys'](_0x2ea441[_0x8cdf('0x42')]);_0x41fd37[_0x8cdf('0x43')]=_[_0x8cdf('0x55')](_0x41fd37[_0x8cdf('0x40')],_0x41fd37[_0x8cdf('0x42')]);_0x51076e['attributes']=_['intersection'](_0x41fd37[_0x8cdf('0x40')],qs['fields'](_0x2ea441[_0x8cdf('0x42')][_0x8cdf('0x45')]));_0x51076e[_0x8cdf('0x44')]=_0x51076e[_0x8cdf('0x44')]['length']?_0x51076e['attributes']:_0x41fd37['model'];if(_0x2ea441['query'][_0x8cdf('0x51')]){_0x51076e[_0x8cdf('0x52')]=[{'all':!![]}];}_0x51076e=_[_0x8cdf('0x4e')]({},_0x51076e,_0x2ea441['options']);return db[_0x8cdf('0x3b')]['find'](_0x51076e)[_0x8cdf('0x21')](handleEntityNotFound(_0x16f579,null))[_0x8cdf('0x21')](respondWithResult(_0x16f579,null))[_0x8cdf('0x29')](handleError(_0x16f579,null));};exports[_0x8cdf('0x56')]=function(_0x144496,_0x142ed0,_0x20d90e){var _0xb7e095;return db[_0x8cdf('0x3b')][_0x8cdf('0x56')](_0x144496[_0x8cdf('0x57')],{'raw':!![]})[_0x8cdf('0x21')](function(_0x543c7c){_0xb7e095=_0x543c7c;return db['VoiceContext'][_0x8cdf('0x53')]({'raw':!![]});})[_0x8cdf('0x21')](function(_0x453c12){var _0x36a768=fs[_0x8cdf('0x58')](path[_0x8cdf('0x59')](config['root'],_0x8cdf('0x5a')),'utf8');var _0x21b895=ejs[_0x8cdf('0x5b')](_0x36a768,{'contexts':_0x453c12||[]});fs[_0x8cdf('0x5c')](_0x8cdf('0x5d'),_0x21b895);})['then'](function(){return respondWithRpcPromise(_0x8cdf('0x5e'),'create',{'module':'chan_sip.so'});})[_0x8cdf('0x21')](function(){var _0x296094=_0x144496[_0x8cdf('0x5f')][_0x8cdf('0x60')]({'plain':!![]});if(!_0x296094)throw new Error(_0x8cdf('0x61'));if(_0x296094[_0x8cdf('0x62')]==='user'){var _0x4ddfbb=_0xb7e095[_0x8cdf('0x60')]({'plain':!![]});return db[_0x8cdf('0x63')][_0x8cdf('0x64')]({'where':{'name':_0x8cdf('0x36'),'userProfileId':_0x296094['userProfileId']},'raw':!![]})[_0x8cdf('0x21')](function(_0x266c40){if(_0x266c40&&_0x266c40['autoAssociation']===0x0){return db[_0x8cdf('0x65')][_0x8cdf('0x56')]({'name':_0x4ddfbb[_0x8cdf('0x37')],'resourceId':_0x4ddfbb['id'],'type':_0x266c40['name'],'sectionId':_0x266c40['id']},{})[_0x8cdf('0x21')](function(){return _0xb7e095;});}else{return _0xb7e095;}})[_0x8cdf('0x29')](function(_0x13af9a){logger[_0x8cdf('0x24')](_0x8cdf('0x66'),_0x13af9a);throw _0x13af9a;});}return _0xb7e095;})[_0x8cdf('0x21')](respondWithResult(_0x142ed0,0xc9))['catch'](handleError(_0x142ed0,null));};exports[_0x8cdf('0x35')]=function(_0xbfd1c8,_0x471bcc,_0x3291ad){var _0x393f86;return db[_0x8cdf('0x3b')][_0x8cdf('0x64')]({'where':{'id':_0xbfd1c8[_0x8cdf('0x67')]['id']}})['then'](handleEntityNotFound(_0x471bcc,null))[_0x8cdf('0x21')](saveUpdates(_0xbfd1c8[_0x8cdf('0x57')],null))[_0x8cdf('0x21')](function(_0x4cb71e){if(_0x4cb71e){_0x393f86=_0x4cb71e;return db['VoiceContext']['findAll']({'raw':!![]});}})[_0x8cdf('0x21')](function(_0x55c690){var _0x59ab31=fs['readFileSync'](path['join'](config[_0x8cdf('0x68')],'server/files/templates/context.ejs'),_0x8cdf('0x69'));var _0x10a18e=ejs[_0x8cdf('0x5b')](_0x59ab31,{'contexts':_0x55c690||[]});fs['writeFileSync'](_0x8cdf('0x5d'),_0x10a18e);})['then'](function(){return respondWithRpcPromise(_0x8cdf('0x5e'),_0x8cdf('0x35'),{'module':_0x8cdf('0x6a')});})['then'](function(){return _0x393f86;})[_0x8cdf('0x21')](respondWithResult(_0x471bcc,null))[_0x8cdf('0x29')](handleError(_0x471bcc,null));};exports['destroy']=function(_0x28de59,_0x575637,_0x5586ea){var _0x1443e4;return db[_0x8cdf('0x3b')][_0x8cdf('0x64')]({'where':{'id':_0x28de59['params']['id']}})['then'](handleEntityNotFound(_0x575637,null))[_0x8cdf('0x21')](removeEntity(_0x575637,null))[_0x8cdf('0x21')](function(){return db[_0x8cdf('0x3b')][_0x8cdf('0x53')]({'raw':!![]});})[_0x8cdf('0x21')](function(_0x4dd323){var _0x4480cb=fs[_0x8cdf('0x58')](path[_0x8cdf('0x59')](config[_0x8cdf('0x68')],_0x8cdf('0x5a')),_0x8cdf('0x69'));var _0x310e2a=ejs['render'](_0x4480cb,{'contexts':_0x4dd323});fs['writeFileSync'](_0x8cdf('0x5d'),_0x310e2a);return respondWithRpcPromise('Reload',_0x8cdf('0x6b'),{'module':_0x8cdf('0x6a')});})[_0x8cdf('0x29')](handleError(_0x575637,null));};
\ No newline at end of file
index 80a27d1..e05f4a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6cb=['api','moment','bluebird','request-promise','rimraf','exports','VoiceContext','lodash','util','../../config/logger'];(function(_0x5d860f,_0x467498){var _0x236490=function(_0x5e045c){while(--_0x5e045c){_0x5d860f['push'](_0x5d860f['shift']());}};_0x236490(++_0x467498);}(_0xd6cb,0x9d));var _0xbd6c=function(_0x4b13ee,_0x587562){_0x4b13ee=_0x4b13ee-0x0;var _0x190d07=_0xd6cb[_0x4b13ee];return _0x190d07;};'use strict';var _=require(_0xbd6c('0x0'));var util=require(_0xbd6c('0x1'));var logger=require(_0xbd6c('0x2'))(_0xbd6c('0x3'));var moment=require(_0xbd6c('0x4'));var BPromise=require(_0xbd6c('0x5'));var rp=require(_0xbd6c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xbd6c('0x7'));var config=require('../../config/environment');var attributes=require('./voiceContext.attributes');module[_0xbd6c('0x8')]=function(_0x309ac5,_0x9bdefb){return _0x309ac5['define'](_0xbd6c('0x9'),attributes,{'tableName':'voice_contexts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5001=['./voiceContext.attributes','exports','define','voice_contexts','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x3a61f9,_0x34f6d8){var _0x4e9c1b=function(_0x56c6fb){while(--_0x56c6fb){_0x3a61f9['push'](_0x3a61f9['shift']());}};_0x4e9c1b(++_0x34f6d8);}(_0x5001,0xd0));var _0x1500=function(_0x1117f6,_0x4786c8){_0x1117f6=_0x1117f6-0x0;var _0x5d74c7=_0x5001[_0x1117f6];return _0x5d74c7;};'use strict';var _=require('lodash');var util=require(_0x1500('0x0'));var logger=require(_0x1500('0x1'))(_0x1500('0x2'));var moment=require(_0x1500('0x3'));var BPromise=require(_0x1500('0x4'));var rp=require(_0x1500('0x5'));var fs=require('fs');var path=require(_0x1500('0x6'));var rimraf=require(_0x1500('0x7'));var config=require('../../config/environment');var attributes=require(_0x1500('0x8'));module[_0x1500('0x9')]=function(_0x209467,_0x4dd00f){return _0x209467[_0x1500('0xa')]('VoiceContext',attributes,{'tableName':_0x1500('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7c160ef..24463dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68b7=['request\x20sent','debug','stringify','code','error','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','VoiceContext,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x68b7,0x8c));var _0x768b=function(_0x815692,_0x559242){_0x815692=_0x815692-0x0;var _0x3b8819=_0x68b7[_0x815692];return _0x3b8819;};'use strict';var _=require(_0x768b('0x0'));var util=require('util');var moment=require(_0x768b('0x1'));var BPromise=require(_0x768b('0x2'));var rs=require(_0x768b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x768b('0x4'))['db'];var utils=require(_0x768b('0x5'));var logger=require(_0x768b('0x6'))('rpc');var config=require(_0x768b('0x7'));var jayson=require(_0x768b('0x8'));var client=jayson[_0x768b('0x9')][_0x768b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xba88ed,_0x455b55,_0x17c501){return new BPromise(function(_0x48405c,_0x441e3a){return client['request'](_0xba88ed,_0x17c501)[_0x768b('0xb')](function(_0x192508){logger[_0x768b('0xc')](_0x768b('0xd'),_0x455b55,_0x768b('0xe'));logger[_0x768b('0xf')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x455b55,_0x768b('0xe'),JSON[_0x768b('0x10')](_0x192508));if(_0x192508['error']){if(_0x192508['error'][_0x768b('0x11')]===0x1f4){logger[_0x768b('0x12')](_0x768b('0xd'),_0x455b55,_0x192508[_0x768b('0x12')][_0x768b('0x13')]);return _0x441e3a(_0x192508[_0x768b('0x12')][_0x768b('0x13')]);}logger[_0x768b('0x12')](_0x768b('0xd'),_0x455b55,_0x192508['error'][_0x768b('0x13')]);return _0x48405c(_0x192508[_0x768b('0x12')][_0x768b('0x13')]);}else{logger[_0x768b('0xc')](_0x768b('0xd'),_0x455b55,'request\x20sent');_0x48405c(_0x192508[_0x768b('0x14')][_0x768b('0x13')]);}})[_0x768b('0x15')](function(_0x2a8a6e){logger[_0x768b('0x12')](_0x768b('0xd'),_0x455b55,_0x2a8a6e);_0x441e3a(_0x2a8a6e);});});}
\ No newline at end of file
+var _0x0a16=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch'];(function(_0x2e137e,_0x3ec457){var _0x2d92ac=function(_0x59afcf){while(--_0x59afcf){_0x2e137e['push'](_0x2e137e['shift']());}};_0x2d92ac(++_0x3ec457);}(_0x0a16,0x160));var _0x60a1=function(_0x3a2fe5,_0x4f3adf){_0x3a2fe5=_0x3a2fe5-0x0;var _0x5aacd1=_0x0a16[_0x3a2fe5];return _0x5aacd1;};'use strict';var _=require(_0x60a1('0x0'));var util=require(_0x60a1('0x1'));var moment=require(_0x60a1('0x2'));var BPromise=require(_0x60a1('0x3'));var rs=require(_0x60a1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x60a1('0x5'))['db'];var utils=require(_0x60a1('0x6'));var logger=require(_0x60a1('0x7'))('rpc');var config=require(_0x60a1('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x60a1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4cbccb,_0x4ad729,_0x558006){return new BPromise(function(_0x461b5e,_0x300eb7){return client[_0x60a1('0xa')](_0x4cbccb,_0x558006)[_0x60a1('0xb')](function(_0x5b5d94){logger[_0x60a1('0xc')](_0x60a1('0xd'),_0x4ad729,_0x60a1('0xe'));logger[_0x60a1('0xf')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x4ad729,_0x60a1('0xe'),JSON[_0x60a1('0x10')](_0x5b5d94));if(_0x5b5d94[_0x60a1('0x11')]){if(_0x5b5d94[_0x60a1('0x11')][_0x60a1('0x12')]===0x1f4){logger[_0x60a1('0x11')](_0x60a1('0xd'),_0x4ad729,_0x5b5d94[_0x60a1('0x11')][_0x60a1('0x13')]);return _0x300eb7(_0x5b5d94[_0x60a1('0x11')][_0x60a1('0x13')]);}logger['error'](_0x60a1('0xd'),_0x4ad729,_0x5b5d94[_0x60a1('0x11')][_0x60a1('0x13')]);return _0x461b5e(_0x5b5d94['error'][_0x60a1('0x13')]);}else{logger['info'](_0x60a1('0xd'),_0x4ad729,_0x60a1('0xe'));_0x461b5e(_0x5b5d94[_0x60a1('0x14')][_0x60a1('0x13')]);}})[_0x60a1('0x15')](function(_0x2179f8){logger[_0x60a1('0x11')](_0x60a1('0xd'),_0x4ad729,_0x2179f8);_0x300eb7(_0x2179f8);});});}
\ No newline at end of file
index 738dd8b..7f8a6c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa25b=['../../components/interaction/service','./voiceDialReport.controller','get','index','/describe','isAuthenticated','/:id','create','update','delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x2b5eab,_0x387848){var _0x5411ef=function(_0x3d31ac){while(--_0x3d31ac){_0x2b5eab['push'](_0x2b5eab['shift']());}};_0x5411ef(++_0x387848);}(_0xa25b,0x170));var _0xba25=function(_0x4a8d6d,_0x2879aa){_0x4a8d6d=_0x4a8d6d-0x0;var _0x5ac305=_0xa25b[_0x4a8d6d];return _0x5ac305;};'use strict';var multer=require(_0xba25('0x0'));var util=require(_0xba25('0x1'));var path=require('path');var timeout=require(_0xba25('0x2'));var express=require('express');var router=express[_0xba25('0x3')]();var fs_extra=require(_0xba25('0x4'));var auth=require(_0xba25('0x5'));var interaction=require(_0xba25('0x6'));var config=require('../../config/environment');var controller=require(_0xba25('0x7'));router[_0xba25('0x8')]('/',auth['isAuthenticated'](),controller[_0xba25('0x9')]);router[_0xba25('0x8')](_0xba25('0xa'),auth[_0xba25('0xb')](),controller['describe']);router['get'](_0xba25('0xc'),auth[_0xba25('0xb')](),controller['show']);router['post']('/',auth[_0xba25('0xb')](),controller[_0xba25('0xd')]);router['put'](_0xba25('0xc'),auth[_0xba25('0xb')](),controller[_0xba25('0xe')]);router[_0xba25('0xf')](_0xba25('0xc'),auth[_0xba25('0xb')](),controller['destroy']);module[_0xba25('0x10')]=router;
\ No newline at end of file
+var _0xc524=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','describe','show','create','put','/:id','update','delete','exports','path','connect-timeout','express'];(function(_0x513c5e,_0x5dc757){var _0x30f7ec=function(_0xcc93bf){while(--_0xcc93bf){_0x513c5e['push'](_0x513c5e['shift']());}};_0x30f7ec(++_0x5dc757);}(_0xc524,0x1bf));var _0x4c52=function(_0x240263,_0x2afac9){_0x240263=_0x240263-0x0;var _0x2b3ece=_0xc524[_0x240263];return _0x2b3ece;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4c52('0x0'));var timeout=require(_0x4c52('0x1'));var express=require(_0x4c52('0x2'));var router=express[_0x4c52('0x3')]();var fs_extra=require(_0x4c52('0x4'));var auth=require(_0x4c52('0x5'));var interaction=require(_0x4c52('0x6'));var config=require('../../config/environment');var controller=require('./voiceDialReport.controller');router[_0x4c52('0x7')]('/',auth[_0x4c52('0x8')](),controller[_0x4c52('0x9')]);router[_0x4c52('0x7')]('/describe',auth['isAuthenticated'](),controller[_0x4c52('0xa')]);router[_0x4c52('0x7')]('/:id',auth[_0x4c52('0x8')](),controller[_0x4c52('0xb')]);router['post']('/',auth[_0x4c52('0x8')](),controller[_0x4c52('0xc')]);router[_0x4c52('0xd')](_0x4c52('0xe'),auth[_0x4c52('0x8')](),controller[_0x4c52('0xf')]);router[_0x4c52('0x10')](_0x4c52('0xe'),auth[_0x4c52('0x8')](),controller['destroy']);module[_0x4c52('0x11')]=router;
\ No newline at end of file
index b6cf805..859e198 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ab=['INTEGER','DATE','called,connect,complete','sequelize','exports','STRING'];(function(_0x1f75a4,_0x220814){var _0x3e3309=function(_0x595036){while(--_0x595036){_0x1f75a4['push'](_0x1f75a4['shift']());}};_0x3e3309(++_0x220814);}(_0x84ab,0x12f));var _0xb84a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x84ab[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xb84a('0x0'));module[_0xb84a('0x1')]={'privilege':{'type':Sequelize[_0xb84a('0x2')]},'channel':{'type':Sequelize[_0xb84a('0x2')]},'channelstate':{'type':Sequelize[_0xb84a('0x3')]},'channelstatedesc':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xb84a('0x2')]},'calleridname':{'type':Sequelize[_0xb84a('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xb84a('0x2')]},'language':{'type':Sequelize[_0xb84a('0x2')]},'accountcode':{'type':Sequelize[_0xb84a('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0xb84a('0x2')]},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xb84a('0x2')]},'destchannelstate':{'type':Sequelize[_0xb84a('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0xb84a('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xb84a('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xb84a('0x2')]},'destlanguage':{'type':Sequelize[_0xb84a('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xb84a('0x3')]},'destuniqueid':{'type':Sequelize[_0xb84a('0x2')]},'destlinkedid':{'type':Sequelize[_0xb84a('0x2')]},'dialstring':{'type':Sequelize[_0xb84a('0x2')]},'dialstatus':{'type':Sequelize[_0xb84a('0x2')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xb84a('0x4')]},'endtime':{'type':Sequelize[_0xb84a('0x4')]},'lastevent':{'type':Sequelize[_0xb84a('0x2')],'comment':_0xb84a('0x5')},'routeId':{'type':Sequelize[_0xb84a('0x3')]},'duration':{'type':Sequelize[_0xb84a('0x3')]},'holdtime':{'type':Sequelize[_0xb84a('0x3')]},'billableseconds':{'type':Sequelize[_0xb84a('0x3')]}};
\ No newline at end of file
+var _0xedd9=['DATE','called,connect,complete','exports','STRING','INTEGER'];(function(_0x185025,_0x38cee9){var _0x11ba75=function(_0x5bd6a5){while(--_0x5bd6a5){_0x185025['push'](_0x185025['shift']());}};_0x11ba75(++_0x38cee9);}(_0xedd9,0xfc));var _0x9edd=function(_0x5f5cfa,_0x50a7d5){_0x5f5cfa=_0x5f5cfa-0x0;var _0x5a4a04=_0xedd9[_0x5f5cfa];return _0x5a4a04;};'use strict';var Sequelize=require('sequelize');module[_0x9edd('0x0')]={'privilege':{'type':Sequelize[_0x9edd('0x1')]},'channel':{'type':Sequelize[_0x9edd('0x1')]},'channelstate':{'type':Sequelize[_0x9edd('0x2')]},'channelstatedesc':{'type':Sequelize[_0x9edd('0x1')]},'calleridnum':{'type':Sequelize[_0x9edd('0x1')]},'calleridname':{'type':Sequelize[_0x9edd('0x1')]},'connectedlinenum':{'type':Sequelize[_0x9edd('0x1')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x9edd('0x1')]},'accountcode':{'type':Sequelize[_0x9edd('0x1')]},'context':{'type':Sequelize[_0x9edd('0x1')]},'exten':{'type':Sequelize[_0x9edd('0x1')]},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x9edd('0x1')]},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x9edd('0x1')]},'destchannelstate':{'type':Sequelize[_0x9edd('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x9edd('0x1')]},'destcalleridnum':{'type':Sequelize[_0x9edd('0x1')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x9edd('0x1')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x9edd('0x1')]},'destaccountcode':{'type':Sequelize[_0x9edd('0x1')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x9edd('0x1')]},'destpriority':{'type':Sequelize[_0x9edd('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize[_0x9edd('0x1')]},'dialstring':{'type':Sequelize[_0x9edd('0x1')]},'dialstatus':{'type':Sequelize[_0x9edd('0x1')]},'starttime':{'type':Sequelize[_0x9edd('0x3')]},'answertime':{'type':Sequelize[_0x9edd('0x3')]},'endtime':{'type':Sequelize[_0x9edd('0x3')]},'lastevent':{'type':Sequelize[_0x9edd('0x1')],'comment':_0x9edd('0x4')},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize[_0x9edd('0x2')]},'holdtime':{'type':Sequelize[_0x9edd('0x2')]},'billableseconds':{'type':Sequelize[_0x9edd('0x2')]}};
\ No newline at end of file
index 37fc20c..f51970e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfab2=['../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','set','apply','update','then','destroy','end','error','name','send','index','map','VoiceDialReport','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','filter','merge','type','options','includeAll','catch','show','keys','include','find','create','body','params','describe','rimraf','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','crypto','desk.js','papaparse'];(function(_0x3676b2,_0x533c11){var _0x21f0e2=function(_0x512d71){while(--_0x512d71){_0x3676b2['push'](_0x3676b2['shift']());}};_0x21f0e2(++_0x533c11);}(_0xfab2,0x78));var _0x2fab=function(_0xebcaa6,_0x31f2ac){_0xebcaa6=_0xebcaa6-0x0;var _0x342c25=_0xfab2[_0xebcaa6];return _0x342c25;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2fab('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x2fab('0x1'));var moment=require(_0x2fab('0x2'));var BPromise=require(_0x2fab('0x3'));var Mustache=require(_0x2fab('0x4'));var util=require('util');var path=require('path');var sox=require(_0x2fab('0x5'));var csv=require(_0x2fab('0x6'));var ejs=require(_0x2fab('0x7'));var fs=require('fs');var fs_extra=require(_0x2fab('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2fab('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x2fab('0xa'));var toCsv=require(_0x2fab('0x6'));var querystring=require('querystring');var Papa=require(_0x2fab('0xb'));var Redis=require('ioredis');var authService=require(_0x2fab('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x2fab('0xd'));var hardwareService=require(_0x2fab('0xe'));var logger=require(_0x2fab('0xf'))(_0x2fab('0x10'));var utils=require(_0x2fab('0x11'));var config=require(_0x2fab('0x12'));var licenseUtil=require(_0x2fab('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x30bc6b,_0x431c1b){_0x431c1b=_0x431c1b||0xcc;return function(_0x37c08e){if(_0x37c08e){return _0x30bc6b[_0x2fab('0x14')](_0x431c1b);}return _0x30bc6b[_0x2fab('0x15')](_0x431c1b)['end']();};}function respondWithResult(_0x27744c,_0x4096d3){_0x4096d3=_0x4096d3||0xc8;return function(_0x45b22e){if(_0x45b22e){return _0x27744c[_0x2fab('0x15')](_0x4096d3)[_0x2fab('0x16')](_0x45b22e);}};}function respondWithFilteredResult(_0x27f0e3,_0x9328e3){return function(_0x15faf6){if(_0x15faf6){var _0xe37381=typeof _0x9328e3['offset']===_0x2fab('0x17')&&typeof _0x9328e3[_0x2fab('0x18')]===_0x2fab('0x17');var _0x2bb764=_0x15faf6[_0x2fab('0x19')];var _0x5366ff=_0xe37381?0x0:_0x9328e3[_0x2fab('0x1a')];var _0x51fb2e=_0xe37381?_0x15faf6[_0x2fab('0x19')]:_0x9328e3[_0x2fab('0x1a')]+_0x9328e3['limit'];var _0x3def8f;if(_0x51fb2e>=_0x2bb764){_0x51fb2e=_0x2bb764;_0x3def8f=0xc8;}else{_0x3def8f=0xce;}_0x27f0e3[_0x2fab('0x15')](_0x3def8f);return _0x27f0e3[_0x2fab('0x1b')]('Content-Range',_0x5366ff+'-'+_0x51fb2e+'/'+_0x2bb764)[_0x2fab('0x16')](_0x15faf6);}return null;};}function patchUpdates(_0x909e9b){return function(_0x57e675){try{jsonpatch[_0x2fab('0x1c')](_0x57e675,_0x909e9b,!![]);}catch(_0x7a56fa){return BPromise['reject'](_0x7a56fa);}return _0x57e675['save']();};}function saveUpdates(_0x1d4a89,_0x4d755e){return function(_0x37896d){if(_0x37896d){return _0x37896d[_0x2fab('0x1d')](_0x1d4a89)[_0x2fab('0x1e')](function(_0x41fd6a){return _0x41fd6a;});}return null;};}function removeEntity(_0x51dc3c,_0x176eab){return function(_0x340a04){if(_0x340a04){return _0x340a04[_0x2fab('0x1f')]()[_0x2fab('0x1e')](function(){_0x51dc3c['status'](0xcc)[_0x2fab('0x20')]();});}};}function handleEntityNotFound(_0x1df3e0,_0x6131ed){return function(_0x21f341){if(!_0x21f341){_0x1df3e0['sendStatus'](0x194);}return _0x21f341;};}function handleError(_0x29b853,_0x160d8b){_0x160d8b=_0x160d8b||0x1f4;return function(_0x249fc8){logger[_0x2fab('0x21')](_0x249fc8['stack']);if(_0x249fc8['name']){delete _0x249fc8[_0x2fab('0x22')];}_0x29b853['status'](_0x160d8b)[_0x2fab('0x23')](_0x249fc8);};}exports[_0x2fab('0x24')]=function(_0x3297f6,_0x7922cf){var _0x22a26e={},_0xb96a6f={},_0x431d85={'count':0x0,'rows':[]};var _0x4d5542=_[_0x2fab('0x25')](db[_0x2fab('0x26')]['rawAttributes'],function(_0x291c07){return{'name':_0x291c07[_0x2fab('0x27')],'type':_0x291c07['type'][_0x2fab('0x28')]};});_0xb96a6f[_0x2fab('0x29')]=_['map'](_0x4d5542,_0x2fab('0x22'));_0xb96a6f['query']=_['keys'](_0x3297f6[_0x2fab('0x2a')]);_0xb96a6f[_0x2fab('0x2b')]=_[_0x2fab('0x2c')](_0xb96a6f['model'],_0xb96a6f[_0x2fab('0x2a')]);_0x22a26e['attributes']=_[_0x2fab('0x2c')](_0xb96a6f[_0x2fab('0x29')],qs[_0x2fab('0x2d')](_0x3297f6['query'][_0x2fab('0x2d')]));_0x22a26e[_0x2fab('0x2e')]=_0x22a26e[_0x2fab('0x2e')][_0x2fab('0x2f')]?_0x22a26e[_0x2fab('0x2e')]:_0xb96a6f[_0x2fab('0x29')];if(!_0x3297f6[_0x2fab('0x2a')][_0x2fab('0x30')](_0x2fab('0x31'))){_0x22a26e[_0x2fab('0x18')]=qs['limit'](_0x3297f6[_0x2fab('0x2a')]['limit']);_0x22a26e['offset']=qs[_0x2fab('0x1a')](_0x3297f6[_0x2fab('0x2a')][_0x2fab('0x1a')]);}_0x22a26e[_0x2fab('0x32')]=qs['sort'](_0x3297f6['query']['sort']);_0x22a26e[_0x2fab('0x33')]=qs['filters'](_['pick'](_0x3297f6[_0x2fab('0x2a')],_0xb96a6f[_0x2fab('0x2b')]),_0x4d5542);if(_0x3297f6[_0x2fab('0x2a')][_0x2fab('0x34')]){_0x22a26e[_0x2fab('0x33')]=_[_0x2fab('0x35')](_0x22a26e['where'],{'$or':_[_0x2fab('0x25')](_0x4d5542,function(_0x53251b){if(_0x53251b[_0x2fab('0x36')]!=='VIRTUAL'){var _0x4d1883={};_0x4d1883[_0x53251b[_0x2fab('0x22')]]={'$like':'%'+_0x3297f6[_0x2fab('0x2a')][_0x2fab('0x34')]+'%'};return _0x4d1883;}})});}_0x22a26e=_['merge']({},_0x22a26e,_0x3297f6[_0x2fab('0x37')]);var _0x48f949={'where':_0x22a26e[_0x2fab('0x33')]};return db['VoiceDialReport'][_0x2fab('0x19')](_0x48f949)[_0x2fab('0x1e')](function(_0x307605){_0x431d85['count']=_0x307605;if(_0x3297f6[_0x2fab('0x2a')][_0x2fab('0x38')]){_0x22a26e['include']=[{'all':!![]}];}return db[_0x2fab('0x26')]['findAll'](_0x22a26e);})[_0x2fab('0x1e')](function(_0x4bd921){_0x431d85['rows']=_0x4bd921;return _0x431d85;})[_0x2fab('0x1e')](respondWithFilteredResult(_0x7922cf,_0x22a26e))[_0x2fab('0x39')](handleError(_0x7922cf,null));};exports[_0x2fab('0x3a')]=function(_0x588aab,_0x2282a0){var _0x159eb5={'raw':!![],'where':{'id':_0x588aab['params']['id']}},_0x5c963d={};_0x5c963d[_0x2fab('0x29')]=_[_0x2fab('0x3b')](db[_0x2fab('0x26')]['rawAttributes']);_0x5c963d['query']=_['keys'](_0x588aab[_0x2fab('0x2a')]);_0x5c963d[_0x2fab('0x2b')]=_[_0x2fab('0x2c')](_0x5c963d['model'],_0x5c963d[_0x2fab('0x2a')]);_0x159eb5['attributes']=_['intersection'](_0x5c963d['model'],qs[_0x2fab('0x2d')](_0x588aab['query'][_0x2fab('0x2d')]));_0x159eb5[_0x2fab('0x2e')]=_0x159eb5['attributes'][_0x2fab('0x2f')]?_0x159eb5[_0x2fab('0x2e')]:_0x5c963d[_0x2fab('0x29')];if(_0x588aab['query'][_0x2fab('0x38')]){_0x159eb5[_0x2fab('0x3c')]=[{'all':!![]}];}_0x159eb5=_[_0x2fab('0x35')]({},_0x159eb5,_0x588aab['options']);return db[_0x2fab('0x26')][_0x2fab('0x3d')](_0x159eb5)[_0x2fab('0x1e')](handleEntityNotFound(_0x2282a0,null))[_0x2fab('0x1e')](respondWithResult(_0x2282a0,null))[_0x2fab('0x39')](handleError(_0x2282a0,null));};exports['create']=function(_0x1a92a9,_0x310559){return db[_0x2fab('0x26')][_0x2fab('0x3e')](_0x1a92a9[_0x2fab('0x3f')],{})[_0x2fab('0x1e')](respondWithResult(_0x310559,0xc9))['catch'](handleError(_0x310559,null));};exports[_0x2fab('0x1d')]=function(_0x3e7f97,_0x308f41){if(_0x3e7f97['body']['id']){delete _0x3e7f97[_0x2fab('0x3f')]['id'];}return db[_0x2fab('0x26')][_0x2fab('0x3d')]({'where':{'id':_0x3e7f97['params']['id']}})[_0x2fab('0x1e')](handleEntityNotFound(_0x308f41,null))[_0x2fab('0x1e')](saveUpdates(_0x3e7f97[_0x2fab('0x3f')],null))[_0x2fab('0x1e')](respondWithResult(_0x308f41,null))[_0x2fab('0x39')](handleError(_0x308f41,null));};exports[_0x2fab('0x1f')]=function(_0x4a0eaf,_0x9b7371){return db[_0x2fab('0x26')][_0x2fab('0x3d')]({'where':{'id':_0x4a0eaf[_0x2fab('0x40')]['id']}})['then'](handleEntityNotFound(_0x9b7371,null))['then'](removeEntity(_0x9b7371,null))['catch'](handleError(_0x9b7371,null));};exports[_0x2fab('0x41')]=function(_0x34979f,_0x510de4){return db[_0x2fab('0x26')][_0x2fab('0x41')]()['then'](respondWithResult(_0x510de4,null))[_0x2fab('0x39')](handleError(_0x510de4,null));};
\ No newline at end of file
+var _0x2874=['key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','rawAttributes','include','find','catch','create','body','params','describe','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','save','update','then','destroy','error','stack','name','send','index','map','VoiceDialReport','fieldName'];(function(_0x5abc6e,_0x195a42){var _0x1a7992=function(_0xf0c6ae){while(--_0xf0c6ae){_0x5abc6e['push'](_0x5abc6e['shift']());}};_0x1a7992(++_0x195a42);}(_0x2874,0x142));var _0x4287=function(_0x233d57,_0x284678){_0x233d57=_0x233d57-0x0;var _0x3eec8c=_0x2874[_0x233d57];return _0x3eec8c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4287('0x0'));var zipdir=require(_0x4287('0x1'));var jsonpatch=require(_0x4287('0x2'));var rp=require('request-promise');var moment=require(_0x4287('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4287('0x4'));var util=require(_0x4287('0x5'));var path=require(_0x4287('0x6'));var sox=require(_0x4287('0x7'));var csv=require('to-csv');var ejs=require(_0x4287('0x8'));var fs=require('fs');var fs_extra=require(_0x4287('0x9'));var _=require(_0x4287('0xa'));var squel=require(_0x4287('0xb'));var crypto=require(_0x4287('0xc'));var jsforce=require(_0x4287('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4287('0xe'));var Papa=require(_0x4287('0xf'));var Redis=require(_0x4287('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x4287('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4287('0x12'))(_0x4287('0x13'));var utils=require(_0x4287('0x14'));var config=require(_0x4287('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x4287('0x16'))['db'];function respondWithStatusCode(_0x2094c0,_0x440687){_0x440687=_0x440687||0xcc;return function(_0x5d5b7c){if(_0x5d5b7c){return _0x2094c0[_0x4287('0x17')](_0x440687);}return _0x2094c0[_0x4287('0x18')](_0x440687)[_0x4287('0x19')]();};}function respondWithResult(_0x5f5b56,_0x2a6024){_0x2a6024=_0x2a6024||0xc8;return function(_0x5ea149){if(_0x5ea149){return _0x5f5b56[_0x4287('0x18')](_0x2a6024)['json'](_0x5ea149);}};}function respondWithFilteredResult(_0x144d81,_0x3ed8c8){return function(_0xbe2337){if(_0xbe2337){var _0x16d2cd=typeof _0x3ed8c8[_0x4287('0x1a')]===_0x4287('0x1b')&&typeof _0x3ed8c8[_0x4287('0x1c')]===_0x4287('0x1b');var _0x33e556=_0xbe2337[_0x4287('0x1d')];var _0x1e51bf=_0x16d2cd?0x0:_0x3ed8c8[_0x4287('0x1a')];var _0x3dd500=_0x16d2cd?_0xbe2337['count']:_0x3ed8c8['offset']+_0x3ed8c8[_0x4287('0x1c')];var _0x400d52;if(_0x3dd500>=_0x33e556){_0x3dd500=_0x33e556;_0x400d52=0xc8;}else{_0x400d52=0xce;}_0x144d81[_0x4287('0x18')](_0x400d52);return _0x144d81[_0x4287('0x1e')]('Content-Range',_0x1e51bf+'-'+_0x3dd500+'/'+_0x33e556)['json'](_0xbe2337);}return null;};}function patchUpdates(_0x3f99fa){return function(_0x465e47){try{jsonpatch['apply'](_0x465e47,_0x3f99fa,!![]);}catch(_0x57a16e){return BPromise['reject'](_0x57a16e);}return _0x465e47[_0x4287('0x1f')]();};}function saveUpdates(_0x11f585,_0x224655){return function(_0x1d7934){if(_0x1d7934){return _0x1d7934[_0x4287('0x20')](_0x11f585)[_0x4287('0x21')](function(_0x49f9f7){return _0x49f9f7;});}return null;};}function removeEntity(_0xa50c2f,_0x3d2272){return function(_0x2999c2){if(_0x2999c2){return _0x2999c2[_0x4287('0x22')]()[_0x4287('0x21')](function(){_0xa50c2f[_0x4287('0x18')](0xcc)[_0x4287('0x19')]();});}};}function handleEntityNotFound(_0x28e6d6,_0xd09b2b){return function(_0x1c76fd){if(!_0x1c76fd){_0x28e6d6[_0x4287('0x17')](0x194);}return _0x1c76fd;};}function handleError(_0x4c60b7,_0x3342bb){_0x3342bb=_0x3342bb||0x1f4;return function(_0x2f6402){logger[_0x4287('0x23')](_0x2f6402[_0x4287('0x24')]);if(_0x2f6402['name']){delete _0x2f6402[_0x4287('0x25')];}_0x4c60b7[_0x4287('0x18')](_0x3342bb)[_0x4287('0x26')](_0x2f6402);};}exports[_0x4287('0x27')]=function(_0x442837,_0x49d43c){var _0x4b30ee={},_0x551c95={},_0x5df49e={'count':0x0,'rows':[]};var _0x5b58a1=_[_0x4287('0x28')](db[_0x4287('0x29')]['rawAttributes'],function(_0x171d3e){return{'name':_0x171d3e[_0x4287('0x2a')],'type':_0x171d3e['type'][_0x4287('0x2b')]};});_0x551c95['model']=_[_0x4287('0x28')](_0x5b58a1,_0x4287('0x25'));_0x551c95['query']=_[_0x4287('0x2c')](_0x442837[_0x4287('0x2d')]);_0x551c95[_0x4287('0x2e')]=_[_0x4287('0x2f')](_0x551c95[_0x4287('0x30')],_0x551c95['query']);_0x4b30ee[_0x4287('0x31')]=_[_0x4287('0x2f')](_0x551c95[_0x4287('0x30')],qs[_0x4287('0x32')](_0x442837[_0x4287('0x2d')]['fields']));_0x4b30ee[_0x4287('0x31')]=_0x4b30ee[_0x4287('0x31')][_0x4287('0x33')]?_0x4b30ee[_0x4287('0x31')]:_0x551c95['model'];if(!_0x442837['query'][_0x4287('0x34')](_0x4287('0x35'))){_0x4b30ee[_0x4287('0x1c')]=qs['limit'](_0x442837[_0x4287('0x2d')][_0x4287('0x1c')]);_0x4b30ee[_0x4287('0x1a')]=qs['offset'](_0x442837[_0x4287('0x2d')][_0x4287('0x1a')]);}_0x4b30ee[_0x4287('0x36')]=qs['sort'](_0x442837[_0x4287('0x2d')][_0x4287('0x37')]);_0x4b30ee[_0x4287('0x38')]=qs[_0x4287('0x2e')](_[_0x4287('0x39')](_0x442837[_0x4287('0x2d')],_0x551c95['filters']),_0x5b58a1);if(_0x442837[_0x4287('0x2d')][_0x4287('0x3a')]){_0x4b30ee[_0x4287('0x38')]=_[_0x4287('0x3b')](_0x4b30ee['where'],{'$or':_[_0x4287('0x28')](_0x5b58a1,function(_0x551703){if(_0x551703[_0x4287('0x3c')]!==_0x4287('0x3d')){var _0xd89476={};_0xd89476[_0x551703[_0x4287('0x25')]]={'$like':'%'+_0x442837['query'][_0x4287('0x3a')]+'%'};return _0xd89476;}})});}_0x4b30ee=_[_0x4287('0x3b')]({},_0x4b30ee,_0x442837[_0x4287('0x3e')]);var _0x214c38={'where':_0x4b30ee['where']};return db[_0x4287('0x29')][_0x4287('0x1d')](_0x214c38)[_0x4287('0x21')](function(_0x130e1e){_0x5df49e['count']=_0x130e1e;if(_0x442837[_0x4287('0x2d')][_0x4287('0x3f')]){_0x4b30ee['include']=[{'all':!![]}];}return db[_0x4287('0x29')][_0x4287('0x40')](_0x4b30ee);})['then'](function(_0x2e5a0e){_0x5df49e['rows']=_0x2e5a0e;return _0x5df49e;})[_0x4287('0x21')](respondWithFilteredResult(_0x49d43c,_0x4b30ee))['catch'](handleError(_0x49d43c,null));};exports['show']=function(_0x4f4ba7,_0x2d25c8){var _0x1044ea={'raw':!![],'where':{'id':_0x4f4ba7['params']['id']}},_0x4db7b2={};_0x4db7b2[_0x4287('0x30')]=_['keys'](db['VoiceDialReport'][_0x4287('0x41')]);_0x4db7b2[_0x4287('0x2d')]=_[_0x4287('0x2c')](_0x4f4ba7[_0x4287('0x2d')]);_0x4db7b2[_0x4287('0x2e')]=_[_0x4287('0x2f')](_0x4db7b2[_0x4287('0x30')],_0x4db7b2['query']);_0x1044ea[_0x4287('0x31')]=_[_0x4287('0x2f')](_0x4db7b2[_0x4287('0x30')],qs['fields'](_0x4f4ba7['query']['fields']));_0x1044ea[_0x4287('0x31')]=_0x1044ea[_0x4287('0x31')][_0x4287('0x33')]?_0x1044ea[_0x4287('0x31')]:_0x4db7b2[_0x4287('0x30')];if(_0x4f4ba7[_0x4287('0x2d')]['includeAll']){_0x1044ea[_0x4287('0x42')]=[{'all':!![]}];}_0x1044ea=_[_0x4287('0x3b')]({},_0x1044ea,_0x4f4ba7['options']);return db['VoiceDialReport'][_0x4287('0x43')](_0x1044ea)[_0x4287('0x21')](handleEntityNotFound(_0x2d25c8,null))[_0x4287('0x21')](respondWithResult(_0x2d25c8,null))[_0x4287('0x44')](handleError(_0x2d25c8,null));};exports[_0x4287('0x45')]=function(_0x329884,_0x1ca07a){return db[_0x4287('0x29')][_0x4287('0x45')](_0x329884[_0x4287('0x46')],{})[_0x4287('0x21')](respondWithResult(_0x1ca07a,0xc9))[_0x4287('0x44')](handleError(_0x1ca07a,null));};exports[_0x4287('0x20')]=function(_0x4af9a7,_0x20aa7d){if(_0x4af9a7['body']['id']){delete _0x4af9a7[_0x4287('0x46')]['id'];}return db[_0x4287('0x29')][_0x4287('0x43')]({'where':{'id':_0x4af9a7[_0x4287('0x47')]['id']}})['then'](handleEntityNotFound(_0x20aa7d,null))[_0x4287('0x21')](saveUpdates(_0x4af9a7[_0x4287('0x46')],null))[_0x4287('0x21')](respondWithResult(_0x20aa7d,null))['catch'](handleError(_0x20aa7d,null));};exports[_0x4287('0x22')]=function(_0x49bfe7,_0x5e25bd){return db[_0x4287('0x29')][_0x4287('0x43')]({'where':{'id':_0x49bfe7['params']['id']}})[_0x4287('0x21')](handleEntityNotFound(_0x5e25bd,null))[_0x4287('0x21')](removeEntity(_0x5e25bd,null))[_0x4287('0x44')](handleError(_0x5e25bd,null));};exports[_0x4287('0x48')]=function(_0x359f21,_0x4535f8){return db[_0x4287('0x29')][_0x4287('0x48')]()['then'](respondWithResult(_0x4535f8,null))[_0x4287('0x44')](handleError(_0x4535f8,null));};
\ No newline at end of file
index 7bbfe04..f710fee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbfe=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceDialReport.attributes','exports','define','VoiceDialReport','report_dial','util','../../config/logger'];(function(_0x224f65,_0x4750bf){var _0x3f921c=function(_0x1b5f64){while(--_0x1b5f64){_0x224f65['push'](_0x224f65['shift']());}};_0x3f921c(++_0x4750bf);}(_0xdbfe,0xd0));var _0xedbf=function(_0x2bd34a,_0x5d7350){_0x2bd34a=_0x2bd34a-0x0;var _0x409aa7=_0xdbfe[_0x2bd34a];return _0x409aa7;};'use strict';var _=require('lodash');var util=require(_0xedbf('0x0'));var logger=require(_0xedbf('0x1'))(_0xedbf('0x2'));var moment=require(_0xedbf('0x3'));var BPromise=require(_0xedbf('0x4'));var rp=require(_0xedbf('0x5'));var fs=require('fs');var path=require(_0xedbf('0x6'));var rimraf=require(_0xedbf('0x7'));var config=require(_0xedbf('0x8'));var attributes=require(_0xedbf('0x9'));module[_0xedbf('0xa')]=function(_0x4a6c3b,_0x23b2cc){return _0x4a6c3b[_0xedbf('0xb')](_0xedbf('0xc'),attributes,{'tableName':_0xedbf('0xd'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3728=['path','rimraf','../../config/environment','./voiceDialReport.attributes','exports','define','report_dial','uniqueid','lodash','moment','bluebird','request-promise'];(function(_0x1ebc48,_0x4e3abd){var _0xb53b51=function(_0x4eb7e3){while(--_0x4eb7e3){_0x1ebc48['push'](_0x1ebc48['shift']());}};_0xb53b51(++_0x4e3abd);}(_0x3728,0x17c));var _0x8372=function(_0x541246,_0x2e0aa3){_0x541246=_0x541246-0x0;var _0x3acfcf=_0x3728[_0x541246];return _0x3acfcf;};'use strict';var _=require(_0x8372('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x8372('0x1'));var BPromise=require(_0x8372('0x2'));var rp=require(_0x8372('0x3'));var fs=require('fs');var path=require(_0x8372('0x4'));var rimraf=require(_0x8372('0x5'));var config=require(_0x8372('0x6'));var attributes=require(_0x8372('0x7'));module[_0x8372('0x8')]=function(_0xb20a83,_0xfdbf48){return _0xb20a83[_0x8372('0x9')]('VoiceDialReport',attributes,{'tableName':_0x8372('0xa'),'paranoid':![],'indexes':[{'fields':[_0x8372('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 5363bde..ef1c948 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4be1=['raw','UpdateVoiceDialReport','update','where','attributes','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','CreateVoiceDialReport','VoiceDialReport','create','body','options'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x4be1,0xfd));var _0x14be=function(_0x2fb87c,_0x2dee49){_0x2fb87c=_0x2fb87c-0x0;var _0x43038b=_0x4be1[_0x2fb87c];return _0x43038b;};'use strict';var _=require(_0x14be('0x0'));var util=require(_0x14be('0x1'));var moment=require(_0x14be('0x2'));var BPromise=require('bluebird');var rs=require(_0x14be('0x3'));var fs=require('fs');var Redis=require(_0x14be('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x14be('0x5'));var logger=require(_0x14be('0x6'))(_0x14be('0x7'));var config=require('../../config/environment');var jayson=require(_0x14be('0x8'));var client=jayson[_0x14be('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x52f09a,_0x591718,_0x46a95d){return new BPromise(function(_0x4f5468,_0x29ff32){return client[_0x14be('0xa')](_0x52f09a,_0x46a95d)[_0x14be('0xb')](function(_0x12c4c0){logger[_0x14be('0xc')](_0x14be('0xd'),_0x591718,_0x14be('0xe'));logger[_0x14be('0xf')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x591718,'request\x20sent',JSON[_0x14be('0x10')](_0x12c4c0));if(_0x12c4c0[_0x14be('0x11')]){if(_0x12c4c0[_0x14be('0x11')][_0x14be('0x12')]===0x1f4){logger[_0x14be('0x11')]('VoiceDialReport,\x20%s,\x20%s',_0x591718,_0x12c4c0[_0x14be('0x11')][_0x14be('0x13')]);return _0x29ff32(_0x12c4c0[_0x14be('0x11')][_0x14be('0x13')]);}logger[_0x14be('0x11')](_0x14be('0xd'),_0x591718,_0x12c4c0[_0x14be('0x11')][_0x14be('0x13')]);return _0x4f5468(_0x12c4c0[_0x14be('0x11')][_0x14be('0x13')]);}else{logger[_0x14be('0xc')](_0x14be('0xd'),_0x591718,_0x14be('0xe'));_0x4f5468(_0x12c4c0['result']['message']);}})[_0x14be('0x14')](function(_0x42b1d4){logger[_0x14be('0x11')]('VoiceDialReport,\x20%s,\x20%s',_0x591718,_0x42b1d4);_0x29ff32(_0x42b1d4);});});}exports[_0x14be('0x15')]=function(_0x195b8a){var _0xae6f62=this;return new Promise(function(_0x5e13ad,_0x4bb57a){return db[_0x14be('0x16')][_0x14be('0x17')](_0x195b8a[_0x14be('0x18')],{'raw':_0x195b8a[_0x14be('0x19')]?_0x195b8a['options'][_0x14be('0x1a')]===undefined?!![]:![]:!![]})[_0x14be('0xb')](function(_0x4a58ca){logger[_0x14be('0xc')](_0x14be('0x15'),_0x195b8a);logger['debug'](_0x14be('0x15'),_0x195b8a,JSON[_0x14be('0x10')](_0x4a58ca));_0x5e13ad(_0x4a58ca);})['catch'](function(_0x2ed596){logger[_0x14be('0x11')](_0x14be('0x15'),_0x2ed596['message'],_0x195b8a);_0x4bb57a(_0xae6f62['error'](0x1f4,_0x2ed596[_0x14be('0x13')]));});});};exports[_0x14be('0x1b')]=function(_0x6d4c68){var _0x5e6a85=this;return new Promise(function(_0x59c6d9,_0x13a8d5){return db[_0x14be('0x16')][_0x14be('0x1c')](_0x6d4c68['body'],{'raw':_0x6d4c68[_0x14be('0x19')]?_0x6d4c68[_0x14be('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x6d4c68[_0x14be('0x19')]?_0x6d4c68[_0x14be('0x19')][_0x14be('0x1d')]||null:null,'attributes':_0x6d4c68[_0x14be('0x19')]?_0x6d4c68['options'][_0x14be('0x1e')]||null:null,'limit':_0x6d4c68[_0x14be('0x19')]?_0x6d4c68[_0x14be('0x19')]['limit']||null:null})[_0x14be('0xb')](function(_0x22716c){logger[_0x14be('0xc')](_0x14be('0x1b'),_0x6d4c68);logger[_0x14be('0xf')](_0x14be('0x1b'),_0x6d4c68,JSON['stringify'](_0x22716c));_0x59c6d9(_0x22716c);})[_0x14be('0x14')](function(_0x49a64c){logger[_0x14be('0x11')](_0x14be('0x1b'),_0x49a64c[_0x14be('0x13')],_0x6d4c68);_0x13a8d5(_0x5e6a85[_0x14be('0x11')](0x1f4,_0x49a64c[_0x14be('0x13')]));});});};
\ No newline at end of file
+var _0x8abb=['then','info','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','VoiceDialReport,\x20%s,\x20%s','message','request\x20sent','result','catch','CreateVoiceDialReport','VoiceDialReport','raw','update','options','where','attributes','limit','UpdateVoiceDialReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x8abb,0xb4));var _0xb8ab=function(_0x4aaf8a,_0x21d9ab){_0x4aaf8a=_0x4aaf8a-0x0;var _0x25410f=_0x8abb[_0x4aaf8a];return _0x25410f;};'use strict';var _=require(_0xb8ab('0x0'));var util=require(_0xb8ab('0x1'));var moment=require(_0xb8ab('0x2'));var BPromise=require(_0xb8ab('0x3'));var rs=require(_0xb8ab('0x4'));var fs=require('fs');var Redis=require(_0xb8ab('0x5'));var db=require(_0xb8ab('0x6'))['db'];var utils=require(_0xb8ab('0x7'));var logger=require(_0xb8ab('0x8'))(_0xb8ab('0x9'));var config=require('../../config/environment');var jayson=require(_0xb8ab('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x36b1b3,_0x30e94a,_0x25f0e2){return new BPromise(function(_0x3fa847,_0x58b130){return client[_0xb8ab('0xb')](_0x36b1b3,_0x25f0e2)[_0xb8ab('0xc')](function(_0x4d895f){logger[_0xb8ab('0xd')]('VoiceDialReport,\x20%s,\x20%s',_0x30e94a,'request\x20sent');logger[_0xb8ab('0xe')](_0xb8ab('0xf'),_0x30e94a,'request\x20sent',JSON[_0xb8ab('0x10')](_0x4d895f));if(_0x4d895f['error']){if(_0x4d895f[_0xb8ab('0x11')]['code']===0x1f4){logger['error'](_0xb8ab('0x12'),_0x30e94a,_0x4d895f[_0xb8ab('0x11')][_0xb8ab('0x13')]);return _0x58b130(_0x4d895f[_0xb8ab('0x11')][_0xb8ab('0x13')]);}logger[_0xb8ab('0x11')](_0xb8ab('0x12'),_0x30e94a,_0x4d895f['error'][_0xb8ab('0x13')]);return _0x3fa847(_0x4d895f['error'][_0xb8ab('0x13')]);}else{logger[_0xb8ab('0xd')](_0xb8ab('0x12'),_0x30e94a,_0xb8ab('0x14'));_0x3fa847(_0x4d895f[_0xb8ab('0x15')]['message']);}})[_0xb8ab('0x16')](function(_0x587e46){logger['error'](_0xb8ab('0x12'),_0x30e94a,_0x587e46);_0x58b130(_0x587e46);});});}exports[_0xb8ab('0x17')]=function(_0x528efb){var _0x2e46e9=this;return new Promise(function(_0x2c747,_0x4d47e0){return db[_0xb8ab('0x18')]['create'](_0x528efb['body'],{'raw':_0x528efb['options']?_0x528efb['options'][_0xb8ab('0x19')]===undefined?!![]:![]:!![]})[_0xb8ab('0xc')](function(_0x1af616){logger[_0xb8ab('0xd')](_0xb8ab('0x17'),_0x528efb);logger['debug'](_0xb8ab('0x17'),_0x528efb,JSON[_0xb8ab('0x10')](_0x1af616));_0x2c747(_0x1af616);})[_0xb8ab('0x16')](function(_0x4bd482){logger[_0xb8ab('0x11')](_0xb8ab('0x17'),_0x4bd482[_0xb8ab('0x13')],_0x528efb);_0x4d47e0(_0x2e46e9[_0xb8ab('0x11')](0x1f4,_0x4bd482[_0xb8ab('0x13')]));});});};exports['UpdateVoiceDialReport']=function(_0x30dedf){var _0x894683=this;return new Promise(function(_0x2b92b7,_0x1403fa){return db['VoiceDialReport'][_0xb8ab('0x1a')](_0x30dedf['body'],{'raw':_0x30dedf[_0xb8ab('0x1b')]?_0x30dedf[_0xb8ab('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x30dedf[_0xb8ab('0x1b')]?_0x30dedf[_0xb8ab('0x1b')][_0xb8ab('0x1c')]||null:null,'attributes':_0x30dedf['options']?_0x30dedf[_0xb8ab('0x1b')][_0xb8ab('0x1d')]||null:null,'limit':_0x30dedf[_0xb8ab('0x1b')]?_0x30dedf[_0xb8ab('0x1b')][_0xb8ab('0x1e')]||null:null})[_0xb8ab('0xc')](function(_0x231791){logger[_0xb8ab('0xd')]('UpdateVoiceDialReport',_0x30dedf);logger[_0xb8ab('0xe')](_0xb8ab('0x1f'),_0x30dedf,JSON[_0xb8ab('0x10')](_0x231791));_0x2b92b7(_0x231791);})[_0xb8ab('0x16')](function(_0x35ea04){logger[_0xb8ab('0x11')](_0xb8ab('0x1f'),_0x35ea04[_0xb8ab('0x13')],_0x30dedf);_0x1403fa(_0x894683['error'](0x1f4,_0x35ea04[_0xb8ab('0x13')]));});});};
\ No newline at end of file
index 62d5c0a..b786e6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e70=['destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','./voiceExtension.controller','get','isAuthenticated','index','/:id','show','post','create','/:id/applications','addApplications','put','update','delete'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x2e70,0xd4));var _0x02e7=function(_0x146bf9,_0x37879c){_0x146bf9=_0x146bf9-0x0;var _0x16b6fc=_0x2e70[_0x146bf9];return _0x16b6fc;};'use strict';var multer=require('multer');var util=require(_0x02e7('0x0'));var path=require(_0x02e7('0x1'));var timeout=require(_0x02e7('0x2'));var express=require(_0x02e7('0x3'));var router=express[_0x02e7('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x02e7('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x02e7('0x6'));router[_0x02e7('0x7')]('/',auth[_0x02e7('0x8')](),controller[_0x02e7('0x9')]);router[_0x02e7('0x7')](_0x02e7('0xa'),auth[_0x02e7('0x8')](),controller[_0x02e7('0xb')]);router[_0x02e7('0xc')]('/',auth['isAuthenticated'](),controller[_0x02e7('0xd')]);router[_0x02e7('0xc')](_0x02e7('0xe'),auth[_0x02e7('0x8')](),controller[_0x02e7('0xf')]);router[_0x02e7('0x10')](_0x02e7('0xa'),auth['isAuthenticated'](),controller[_0x02e7('0x11')]);router[_0x02e7('0x12')](_0x02e7('0xa'),auth[_0x02e7('0x8')](),controller[_0x02e7('0x13')]);module[_0x02e7('0x14')]=router;
\ No newline at end of file
+var _0xdd8d=['../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','index','isAuthenticated','create','post','addApplications','put','/:id','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x39658a,_0xf361cc){var _0x3acb43=function(_0x16ae3f){while(--_0x16ae3f){_0x39658a['push'](_0x39658a['shift']());}};_0x3acb43(++_0xf361cc);}(_0xdd8d,0x10a));var _0xddd8=function(_0x3cc4c8,_0x114636){_0x3cc4c8=_0x3cc4c8-0x0;var _0xdc0123=_0xdd8d[_0x3cc4c8];return _0xdc0123;};'use strict';var multer=require(_0xddd8('0x0'));var util=require(_0xddd8('0x1'));var path=require(_0xddd8('0x2'));var timeout=require(_0xddd8('0x3'));var express=require(_0xddd8('0x4'));var router=express[_0xddd8('0x5')]();var fs_extra=require(_0xddd8('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xddd8('0x7'));var config=require(_0xddd8('0x8'));var controller=require(_0xddd8('0x9'));router[_0xddd8('0xa')]('/',auth['isAuthenticated'](),controller[_0xddd8('0xb')]);router[_0xddd8('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xddd8('0xc')](),controller[_0xddd8('0xd')]);router[_0xddd8('0xe')]('/:id/applications',auth['isAuthenticated'](),controller[_0xddd8('0xf')]);router[_0xddd8('0x10')](_0xddd8('0x11'),auth['isAuthenticated'](),controller[_0xddd8('0x12')]);router[_0xddd8('0x13')](_0xddd8('0x11'),auth['isAuthenticated'](),controller[_0xddd8('0x14')]);module['exports']=router;
\ No newline at end of file
index d111fef..4b39c63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc894=['ENUM','inbound','outbound','internal','inbound-fax','outbound-fax','system','any','INTEGER','BOOLEAN','wav','VIRTUAL','sequelize','compositeIndex','STRING'];(function(_0x4ec520,_0x15fee2){var _0xed49d7=function(_0x3031f2){while(--_0x3031f2){_0x4ec520['push'](_0x4ec520['shift']());}};_0xed49d7(++_0x15fee2);}(_0xc894,0x75));var _0x4c89=function(_0xbf3f93,_0x9a3732){_0xbf3f93=_0xbf3f93-0x0;var _0x499fef=_0xc894[_0xbf3f93];return _0x499fef;};'use strict';var Sequelize=require(_0x4c89('0x0'));module['exports']={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x4c89('0x1'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x4c89('0x2')],'allowNull':![],'unique':_0x4c89('0x1')},'priority':{'type':Sequelize[_0x4c89('0x2')],'allowNull':![],'defaultValue':'1','unique':_0x4c89('0x1')},'tag':{'type':Sequelize[_0x4c89('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x4c89('0x2')],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0x4c89('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x4c89('0x3')](_0x4c89('0x4'),_0x4c89('0x5'),_0x4c89('0x6'),_0x4c89('0x7'),_0x4c89('0x8'),_0x4c89('0x9'),_0x4c89('0xa')),'allowNull':![]},'description':{'type':Sequelize[_0x4c89('0x2')]},'interval':{'type':Sequelize[_0x4c89('0x2')],'allowNull':![],'defaultValue':'*,*,*,*'},'IntervalId':{'type':Sequelize[_0x4c89('0xb')]},'isApp':{'type':Sequelize[_0x4c89('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x4c89('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0x4c89('0x2')],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x4c89('0xb')]},'recordingFormat':{'type':Sequelize[_0x4c89('0x2')],'defaultValue':_0x4c89('0xd')},'answer':{'type':Sequelize[_0x4c89('0xc')],'defaultValue':!![]},'name':{'type':Sequelize[_0x4c89('0xe')],'get':function(_0x64d868){return this['getDataValue']('exten');}},'alias':{'type':Sequelize[_0x4c89('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x1078=['BOOLEAN','wav','VIRTUAL','getDataValue','exten','sequelize','exports','STRING','compositeIndex','inbound','outbound','internal','inbound-fax','outbound-fax','system','INTEGER'];(function(_0x429e4c,_0x551b1f){var _0x317c3d=function(_0x531c04){while(--_0x531c04){_0x429e4c['push'](_0x429e4c['shift']());}};_0x317c3d(++_0x551b1f);}(_0x1078,0x135));var _0x8107=function(_0x380837,_0x3de934){_0x380837=_0x380837-0x0;var _0x37ddbe=_0x1078[_0x380837];return _0x37ddbe;};'use strict';var Sequelize=require(_0x8107('0x0'));module[_0x8107('0x1')]={'context':{'type':Sequelize[_0x8107('0x2')],'allowNull':![],'unique':_0x8107('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x8107('0x2')],'allowNull':![],'unique':_0x8107('0x3')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0x8107('0x3')},'tag':{'type':Sequelize[_0x8107('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x8107('0x2')],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize['ENUM'](_0x8107('0x4'),_0x8107('0x5'),_0x8107('0x6'),_0x8107('0x7'),_0x8107('0x8'),_0x8107('0x9'),'any'),'allowNull':![]},'description':{'type':Sequelize[_0x8107('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'*,*,*,*'},'IntervalId':{'type':Sequelize[_0x8107('0xa')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x8107('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0x8107('0x2')],'allowNull':!![]},'record':{'type':Sequelize[_0x8107('0xb')],'defaultValue':![]},'cutdigits':{'type':Sequelize['INTEGER']},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':_0x8107('0xc')},'answer':{'type':Sequelize[_0x8107('0xb')],'defaultValue':!![]},'name':{'type':Sequelize[_0x8107('0xd')],'get':function(_0x41cb05){return this[_0x8107('0xe')](_0x8107('0xf'));}},'alias':{'type':Sequelize[_0x8107('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 921a520..882c2a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe85f=['findOne','sequelize','transaction','VoiceExtensionId','isApp','createRouting','log','findAndCountAll','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','socket.io-emitter','redis','./voiceExtension.socket','register','sendStatus','status','offset','limit','undefined','count','Content-Range','json','then','get','InboundRoutes','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','map','value','includes','type','UserProfileResource','destroy','end','error','stack','name','index','VoiceExtension','rawAttributes','fieldName','key','model','keys','query','intersection','fields','attributes','length','sort','where','filters','pick','merge','options','includeAll','include','rows','show','find','params','catch','create','startsWith','exten','body','concat','role','user','inbound','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','description','cutdigits','mandatoryDisposition','alias','context','addApplications'];(function(_0x1019e6,_0xc8d28b){var _0x1f88d2=function(_0x2aef18){while(--_0x2aef18){_0x1019e6['push'](_0x1019e6['shift']());}};_0x1f88d2(++_0xc8d28b);}(_0xe85f,0x116));var _0xfe85=function(_0x56916d,_0x37b935){_0x56916d=_0x56916d-0x0;var _0x2b7f1f=_0xe85f[_0x56916d];return _0x2b7f1f;};'use strict';var _=require(_0xfe85('0x0'));var Redis=require(_0xfe85('0x1'));var qs=require(_0xfe85('0x2'));var logger=require(_0xfe85('0x3'))(_0xfe85('0x4'));var config=require(_0xfe85('0x5'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xfe85('0x6')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xfe85('0x7'))(new Redis(config[_0xfe85('0x8')]));require(_0xfe85('0x9'))[_0xfe85('0xa')](socket);function respondWithStatusCode(_0x304949,_0x2512c3){_0x2512c3=_0x2512c3||0xcc;return function(_0x96ed43){if(_0x96ed43){return _0x304949[_0xfe85('0xb')](_0x2512c3);}return _0x304949[_0xfe85('0xc')](_0x2512c3)['end']();};}function respondWithResult(_0x20cd32,_0x212b6c){_0x212b6c=_0x212b6c||0xc8;return function(_0x3a4d1c){if(_0x3a4d1c){return _0x20cd32[_0xfe85('0xc')](_0x212b6c)['json'](_0x3a4d1c);}};}function respondWithFilteredResult(_0x2b203b,_0x32cd3c){return function(_0x59fc3c){if(_0x59fc3c){var _0x5527e7=typeof _0x32cd3c[_0xfe85('0xd')]==='undefined'&&typeof _0x32cd3c[_0xfe85('0xe')]===_0xfe85('0xf');var _0x28eb3b=_0x59fc3c[_0xfe85('0x10')];var _0x5a2f1c=_0x5527e7?0x0:_0x32cd3c[_0xfe85('0xd')];var _0x5b9f59=_0x5527e7?_0x59fc3c[_0xfe85('0x10')]:_0x32cd3c['offset']+_0x32cd3c['limit'];var _0xb1bf4e;if(_0x5b9f59>=_0x28eb3b){_0x5b9f59=_0x28eb3b;_0xb1bf4e=0xc8;}else{_0xb1bf4e=0xce;}_0x2b203b['status'](_0xb1bf4e);return _0x2b203b['set'](_0xfe85('0x11'),_0x5a2f1c+'-'+_0x5b9f59+'/'+_0x28eb3b)[_0xfe85('0x12')](_0x59fc3c);}return null;};}function removeEntity(_0x314044){return function(_0x1ffaa5){if(_0x1ffaa5){return _0x1ffaa5['destroy']()[_0xfe85('0x13')](function(){var _0x4aba0a=_0x1ffaa5[_0xfe85('0x14')]({'plain':!![]});var _0x6b79e=[{'name':_0xfe85('0x15'),'value':'inbound','ignore':![]},{'name':_0xfe85('0x16'),'value':_0xfe85('0x17'),'ignore':![]},{'name':_0xfe85('0x18'),'value':_0xfe85('0x19'),'ignore':![]}];var _0x168a01=_(_0x6b79e)[_0xfe85('0x1a')](_0xfe85('0x1b'))[_0xfe85('0x1c')](_0xfe85('0x1d'))[_0xfe85('0x1d')]();if(_[_0xfe85('0x1e')](_0x168a01,_0x4aba0a['type'])){return;}var _0x184b2c=_['find'](_0x6b79e,[_0xfe85('0x1d'),_0x4aba0a[_0xfe85('0x1f')]])['name'];return db[_0xfe85('0x20')][_0xfe85('0x21')]({'where':{'type':_0x184b2c,'resourceId':_0x4aba0a['id']}})[_0xfe85('0x13')](function(){return _0x1ffaa5;});})['then'](function(){_0x314044['status'](0xcc)[_0xfe85('0x22')]();});}};}function handleEntityNotFound(_0x5c36ef){return function(_0x51835e){if(!_0x51835e){_0x5c36ef[_0xfe85('0xb')](0x194);}return _0x51835e;};}function handleError(_0x419e39,_0x5b644c){_0x5b644c=_0x5b644c||0x1f4;return function(_0x4a7385){logger[_0xfe85('0x23')](_0x4a7385[_0xfe85('0x24')]);if(_0x4a7385[_0xfe85('0x25')]){delete _0x4a7385[_0xfe85('0x25')];}_0x419e39[_0xfe85('0xc')](_0x5b644c)['send'](_0x4a7385);};}exports[_0xfe85('0x26')]=function(_0x286588,_0x347c56){var _0x52a00f={},_0x5b4bd2={},_0x5ec059={'count':0x0,'rows':[]};var _0x4a3003=_[_0xfe85('0x1c')](db[_0xfe85('0x27')][_0xfe85('0x28')],function(_0x1f245d){return{'name':_0x1f245d[_0xfe85('0x29')],'type':_0x1f245d[_0xfe85('0x1f')][_0xfe85('0x2a')]};});_0x5b4bd2[_0xfe85('0x2b')]=_['map'](_0x4a3003,_0xfe85('0x25'));_0x5b4bd2['query']=_[_0xfe85('0x2c')](_0x286588[_0xfe85('0x2d')]);_0x5b4bd2['filters']=_['intersection'](_0x5b4bd2['model'],_0x5b4bd2[_0xfe85('0x2d')]);_0x52a00f['attributes']=_[_0xfe85('0x2e')](_0x5b4bd2[_0xfe85('0x2b')],qs[_0xfe85('0x2f')](_0x286588[_0xfe85('0x2d')]['fields']));_0x52a00f['attributes']=_0x52a00f[_0xfe85('0x30')][_0xfe85('0x31')]?_0x52a00f[_0xfe85('0x30')]:_0x5b4bd2[_0xfe85('0x2b')];if(!_0x286588[_0xfe85('0x2d')]['hasOwnProperty']('nolimit')){_0x52a00f['limit']=qs['limit'](_0x286588[_0xfe85('0x2d')]['limit']);_0x52a00f[_0xfe85('0xd')]=qs[_0xfe85('0xd')](_0x286588[_0xfe85('0x2d')][_0xfe85('0xd')]);}_0x52a00f['order']=qs[_0xfe85('0x32')](_0x286588[_0xfe85('0x2d')][_0xfe85('0x32')]);_0x52a00f[_0xfe85('0x33')]=qs[_0xfe85('0x34')](_[_0xfe85('0x35')](_0x286588[_0xfe85('0x2d')],_0x5b4bd2[_0xfe85('0x34')]),_0x4a3003);if(_0x286588[_0xfe85('0x2d')]['filter']){_0x52a00f[_0xfe85('0x33')]=_['merge'](_0x52a00f['where'],{'$or':_[_0xfe85('0x1c')](_0x4a3003,function(_0x1886b4){if(_0x1886b4[_0xfe85('0x1f')]!=='VIRTUAL'){var _0x6f616={};_0x6f616[_0x1886b4[_0xfe85('0x25')]]={'$like':'%'+_0x286588['query'][_0xfe85('0x1a')]+'%'};return _0x6f616;}})});}_0x52a00f=_[_0xfe85('0x36')]({},_0x52a00f,_0x286588[_0xfe85('0x37')]);var _0xcac6c9={'where':_0x52a00f['where']};return db[_0xfe85('0x27')][_0xfe85('0x10')](_0xcac6c9)['then'](function(_0x30bbb1){_0x5ec059[_0xfe85('0x10')]=_0x30bbb1;if(_0x286588['query'][_0xfe85('0x38')]){_0x52a00f[_0xfe85('0x39')]=[{'all':!![]}];}return db[_0xfe85('0x27')]['findAll'](_0x52a00f);})[_0xfe85('0x13')](function(_0x289845){_0x5ec059[_0xfe85('0x3a')]=_0x289845;return _0x5ec059;})['then'](respondWithFilteredResult(_0x347c56,_0x52a00f))['catch'](handleError(_0x347c56,null));};exports[_0xfe85('0x3b')]=function(_0x17d3a1,_0x3d2c73){var _0x45e5cb={'raw':![],'where':{'id':_0x17d3a1['params']['id']}},_0x40b578={};_0x40b578[_0xfe85('0x2b')]=_[_0xfe85('0x2c')](db['VoiceExtension'][_0xfe85('0x28')]);_0x40b578[_0xfe85('0x2d')]=_['keys'](_0x17d3a1['query']);_0x40b578['filters']=_[_0xfe85('0x2e')](_0x40b578[_0xfe85('0x2b')],_0x40b578['query']);_0x45e5cb[_0xfe85('0x30')]=_[_0xfe85('0x2e')](_0x40b578[_0xfe85('0x2b')],qs[_0xfe85('0x2f')](_0x17d3a1[_0xfe85('0x2d')]['fields']));_0x45e5cb[_0xfe85('0x30')]=_0x45e5cb[_0xfe85('0x30')][_0xfe85('0x31')]?_0x45e5cb['attributes']:_0x40b578[_0xfe85('0x2b')];if(_0x17d3a1[_0xfe85('0x2d')][_0xfe85('0x38')]){_0x45e5cb[_0xfe85('0x39')]=[{'all':!![]}];}_0x45e5cb=_['merge']({},_0x45e5cb,_0x17d3a1['options']);return db['VoiceExtension'][_0xfe85('0x3c')](_0x45e5cb)[_0xfe85('0x13')](handleEntityNotFound(_0x3d2c73,null))[_0xfe85('0x13')](respondWithResult(_0x3d2c73,null))['catch'](handleError(_0x3d2c73,null));};exports[_0xfe85('0x21')]=function(_0x25c213,_0x31141d){return db[_0xfe85('0x27')][_0xfe85('0x3c')]({'where':{'id':_0x25c213[_0xfe85('0x3d')]['id']}})[_0xfe85('0x13')](handleEntityNotFound(_0x31141d,null))[_0xfe85('0x13')](removeEntity(_0x31141d,null))[_0xfe85('0x3e')](handleError(_0x31141d,null));};exports[_0xfe85('0x3f')]=function(_0x53b1b9,_0x1e8add){if(_0x53b1b9['body']['type']===_0xfe85('0x17')&&!_[_0xfe85('0x40')](_0x53b1b9['body'][_0xfe85('0x41')],'_')){_0x53b1b9[_0xfe85('0x42')][_0xfe85('0x41')]='_'[_0xfe85('0x43')](_0x53b1b9[_0xfe85('0x42')][_0xfe85('0x41')]);}return db[_0xfe85('0x27')][_0xfe85('0x3f')](_0x53b1b9[_0xfe85('0x42')],{'raw':![]})[_0xfe85('0x13')](function(_0xd04b08){var _0x66df1a=_0x53b1b9['user']['get']({'plain':!![]});if(!_0x66df1a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x66df1a[_0xfe85('0x44')]===_0xfe85('0x45')){var _0x16b12d=_0xd04b08[_0xfe85('0x14')]({'plain':!![]});var _0x463a6d=[{'name':_0xfe85('0x15'),'value':_0xfe85('0x46')},{'name':'OutboundRoutes','value':_0xfe85('0x17')},{'name':_0xfe85('0x18'),'value':_0xfe85('0x19')}];var _0x5c5d01=_[_0xfe85('0x3c')](_0x463a6d,['value',_0x16b12d[_0xfe85('0x1f')]])[_0xfe85('0x25')];return db[_0xfe85('0x47')][_0xfe85('0x3c')]({'where':{'name':_0x5c5d01,'userProfileId':_0x66df1a[_0xfe85('0x48')]},'raw':!![]})[_0xfe85('0x13')](function(_0x2c242c){if(_0x2c242c&&_0x2c242c[_0xfe85('0x49')]===0x0){return db['UserProfileResource']['create']({'name':_0x16b12d['name'],'resourceId':_0x16b12d['id'],'type':_0x2c242c[_0xfe85('0x25')],'sectionId':_0x2c242c['id']},{})[_0xfe85('0x13')](function(){return _0xd04b08;});}else{return _0xd04b08;}})[_0xfe85('0x3e')](function(_0x9ac39f){logger[_0xfe85('0x23')](_0xfe85('0x4a'),_0x9ac39f);throw _0x9ac39f;});}return _0xd04b08;})[_0xfe85('0x13')](respondWithResult(_0x1e8add,0xc9))['catch'](handleError(_0x1e8add,null));};exports[_0xfe85('0x4b')]=function(_0x54402c,_0x32697){if(_0x54402c[_0xfe85('0x42')]['id']){delete _0x54402c[_0xfe85('0x42')]['id'];}return db['VoiceExtension'][_0xfe85('0x3c')]({'where':{'id':_0x54402c['params']['id']}})[_0xfe85('0x13')](handleEntityNotFound(_0x32697,null))[_0xfe85('0x13')](function(_0x48a5b7){if(_0x48a5b7){return db[_0xfe85('0x27')][_0xfe85('0x4b')](_['pick'](_0x54402c[_0xfe85('0x42')],['exten','context',_0xfe85('0x4c'),'recordingFormat',_0xfe85('0x4d'),_0xfe85('0x4e'),_0xfe85('0x4f')]),{'where':{'context':_0x48a5b7[_0xfe85('0x50')],'exten':_0x48a5b7['exten']},'individualHooks':!![]})['then'](function(_0x36014b){return _0x36014b;});}return null;})[_0xfe85('0x13')](respondWithStatusCode(_0x32697,null))['catch'](handleError(_0x32697,null));};exports[_0xfe85('0x51')]=function(_0xe68e2,_0x48c9e7){return db[_0xfe85('0x27')][_0xfe85('0x52')]({'where':{'id':_0xe68e2[_0xfe85('0x3d')]['id']}})[_0xfe85('0x13')](function(_0x1cc6c7){if(_0x1cc6c7){return db[_0xfe85('0x53')][_0xfe85('0x54')](function(_0x52c0e8){return db[_0xfe85('0x27')]['destroy']({'where':{'VoiceExtensionId':_0xe68e2[_0xfe85('0x3d')]['id']},'transaction':_0x52c0e8})[_0xfe85('0x13')](function(){var _0x1adf12=_['map'](_0xe68e2[_0xfe85('0x42')],function(_0x3c6d63){_0x3c6d63[_0xfe85('0x55')]=_0xe68e2[_0xfe85('0x3d')]['id'];_0x3c6d63[_0xfe85('0x56')]=!![];return _0x3c6d63;});return _0x1cc6c7[_0xfe85('0x57')](_0x1adf12);})[_0xfe85('0x13')](function(_0x291b63){console[_0xfe85('0x58')]('LOG\x20~\x20.then\x20~\x20routing',_0x291b63);return db[_0xfe85('0x27')]['bulkCreate'](_0x291b63,{'transaction':_0x52c0e8});});})[_0xfe85('0x13')](function(){return db[_0xfe85('0x27')][_0xfe85('0x59')]({'where':{'isApp':!![],'VoiceExtensionId':_0xe68e2[_0xfe85('0x3d')]['id']},'order':'cast(priority\x20as\x20unsigned)'});});}})['then'](respondWithResult(_0x48c9e7,null))['catch'](handleError(_0x48c9e7,null));};
\ No newline at end of file
+var _0xfd22=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','save','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','internal','ignore','value','includes','type','name','destroy','stack','send','map','rawAttributes','fieldName','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','VoiceExtension','findAll','rows','catch','show','includeAll','find','body','concat','exten','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','InternalRoutes','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','context','recordingFormat','mandatoryDisposition','alias','addApplications','findOne','sequelize','transaction','isApp','rewriteDial','toLowerCase','true','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/auth/service'];(function(_0x16848d,_0x57e6dc){var _0x20471a=function(_0x2d7470){while(--_0x2d7470){_0x16848d['push'](_0x16848d['shift']());}};_0x20471a(++_0x57e6dc);}(_0xfd22,0x64));var _0x2fd2=function(_0x503724,_0xed68a3){_0x503724=_0x503724-0x0;var _0x1e3fd7=_0xfd22[_0x503724];return _0x1e3fd7;};'use strict';var emlformat=require(_0x2fd2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2fd2('0x1'));var jsonpatch=require(_0x2fd2('0x2'));var rp=require(_0x2fd2('0x3'));var moment=require(_0x2fd2('0x4'));var BPromise=require(_0x2fd2('0x5'));var Mustache=require(_0x2fd2('0x6'));var util=require('util');var path=require(_0x2fd2('0x7'));var sox=require(_0x2fd2('0x8'));var csv=require(_0x2fd2('0x9'));var ejs=require(_0x2fd2('0xa'));var fs=require('fs');var fs_extra=require(_0x2fd2('0xb'));var _=require(_0x2fd2('0xc'));var squel=require(_0x2fd2('0xd'));var crypto=require(_0x2fd2('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2fd2('0x9'));var querystring=require(_0x2fd2('0xf'));var Papa=require('papaparse');var Redis=require(_0x2fd2('0x10'));var authService=require(_0x2fd2('0x11'));var qs=require(_0x2fd2('0x12'));var as=require(_0x2fd2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2fd2('0x14'))('api');var utils=require(_0x2fd2('0x15'));var config=require(_0x2fd2('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x2fd2('0x17'))['db'];config[_0x2fd2('0x18')]=_[_0x2fd2('0x19')](config[_0x2fd2('0x18')],{'host':_0x2fd2('0x1a'),'port':0x18eb});var socket=require(_0x2fd2('0x1b'))(new Redis(config[_0x2fd2('0x18')]));require(_0x2fd2('0x1c'))[_0x2fd2('0x1d')](socket);function respondWithStatusCode(_0x4451b3,_0xd96503){_0xd96503=_0xd96503||0xcc;return function(_0x3d5617){if(_0x3d5617){return _0x4451b3[_0x2fd2('0x1e')](_0xd96503);}return _0x4451b3['status'](_0xd96503)[_0x2fd2('0x1f')]();};}function respondWithResult(_0x40096d,_0x529d1f){_0x529d1f=_0x529d1f||0xc8;return function(_0x36650f){if(_0x36650f){return _0x40096d[_0x2fd2('0x20')](_0x529d1f)[_0x2fd2('0x21')](_0x36650f);}};}function respondWithFilteredResult(_0x13814f,_0x904728){return function(_0x43019c){if(_0x43019c){var _0x16f594=typeof _0x904728[_0x2fd2('0x22')]===_0x2fd2('0x23')&&typeof _0x904728[_0x2fd2('0x24')]==='undefined';var _0x532fd8=_0x43019c['count'];var _0x2acb3f=_0x16f594?0x0:_0x904728[_0x2fd2('0x22')];var _0x55b1b4=_0x16f594?_0x43019c[_0x2fd2('0x25')]:_0x904728['offset']+_0x904728[_0x2fd2('0x24')];var _0x4a28bf;if(_0x55b1b4>=_0x532fd8){_0x55b1b4=_0x532fd8;_0x4a28bf=0xc8;}else{_0x4a28bf=0xce;}_0x13814f[_0x2fd2('0x20')](_0x4a28bf);return _0x13814f[_0x2fd2('0x26')]('Content-Range',_0x2acb3f+'-'+_0x55b1b4+'/'+_0x532fd8)[_0x2fd2('0x21')](_0x43019c);}return null;};}function patchUpdates(_0x45fb72){return function(_0x572a3e){try{jsonpatch[_0x2fd2('0x27')](_0x572a3e,_0x45fb72,!![]);}catch(_0x24c69f){return BPromise[_0x2fd2('0x28')](_0x24c69f);}return _0x572a3e[_0x2fd2('0x29')]();};}function saveUpdates(_0x592722,_0x1d90bb){return function(_0x3a314d){if(_0x3a314d){return _0x3a314d['update'](_0x592722)[_0x2fd2('0x2a')](function(_0x3b06ff){return _0x3b06ff;});}return null;};}function removeEntity(_0x5b79ab,_0x24ee20){return function(_0x58051f){if(_0x58051f){return _0x58051f['destroy']()[_0x2fd2('0x2a')](function(){var _0x18c48d=_0x58051f[_0x2fd2('0x2b')]({'plain':!![]});var _0x1b8f7b=[{'name':_0x2fd2('0x2c'),'value':_0x2fd2('0x2d'),'ignore':![]},{'name':_0x2fd2('0x2e'),'value':_0x2fd2('0x2f'),'ignore':![]},{'name':'InternalRoutes','value':_0x2fd2('0x30'),'ignore':![]}];var _0x2e1ce9=_(_0x1b8f7b)['filter'](_0x2fd2('0x31'))['map'](_0x2fd2('0x32'))[_0x2fd2('0x32')]();if(_[_0x2fd2('0x33')](_0x2e1ce9,_0x18c48d[_0x2fd2('0x34')])){return;}var _0x1fc891=_['find'](_0x1b8f7b,[_0x2fd2('0x32'),_0x18c48d[_0x2fd2('0x34')]])[_0x2fd2('0x35')];return db['UserProfileResource'][_0x2fd2('0x36')]({'where':{'type':_0x1fc891,'resourceId':_0x18c48d['id']}})[_0x2fd2('0x2a')](function(){return _0x58051f;});})['then'](function(){_0x5b79ab[_0x2fd2('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x276490,_0x1ceb61){return function(_0x1b280e){if(!_0x1b280e){_0x276490['sendStatus'](0x194);}return _0x1b280e;};}function handleError(_0x5b4ba4,_0x51ae13){_0x51ae13=_0x51ae13||0x1f4;return function(_0x51e29f){logger['error'](_0x51e29f[_0x2fd2('0x37')]);if(_0x51e29f[_0x2fd2('0x35')]){delete _0x51e29f[_0x2fd2('0x35')];}_0x5b4ba4[_0x2fd2('0x20')](_0x51ae13)[_0x2fd2('0x38')](_0x51e29f);};}exports['index']=function(_0x1561dc,_0x2e0427){var _0x339985={},_0x357444={},_0x162904={'count':0x0,'rows':[]};var _0x3b40fa=_[_0x2fd2('0x39')](db['VoiceExtension'][_0x2fd2('0x3a')],function(_0x1c330b){return{'name':_0x1c330b[_0x2fd2('0x3b')],'type':_0x1c330b['type']['key']};});_0x357444[_0x2fd2('0x3c')]=_[_0x2fd2('0x39')](_0x3b40fa,_0x2fd2('0x35'));_0x357444[_0x2fd2('0x3d')]=_[_0x2fd2('0x3e')](_0x1561dc[_0x2fd2('0x3d')]);_0x357444[_0x2fd2('0x3f')]=_['intersection'](_0x357444[_0x2fd2('0x3c')],_0x357444[_0x2fd2('0x3d')]);_0x339985[_0x2fd2('0x40')]=_[_0x2fd2('0x41')](_0x357444[_0x2fd2('0x3c')],qs[_0x2fd2('0x42')](_0x1561dc[_0x2fd2('0x3d')][_0x2fd2('0x42')]));_0x339985['attributes']=_0x339985['attributes'][_0x2fd2('0x43')]?_0x339985[_0x2fd2('0x40')]:_0x357444['model'];if(!_0x1561dc['query'][_0x2fd2('0x44')](_0x2fd2('0x45'))){_0x339985[_0x2fd2('0x24')]=qs['limit'](_0x1561dc[_0x2fd2('0x3d')][_0x2fd2('0x24')]);_0x339985[_0x2fd2('0x22')]=qs['offset'](_0x1561dc[_0x2fd2('0x3d')][_0x2fd2('0x22')]);}_0x339985[_0x2fd2('0x46')]=qs['sort'](_0x1561dc[_0x2fd2('0x3d')][_0x2fd2('0x47')]);_0x339985[_0x2fd2('0x48')]=qs[_0x2fd2('0x3f')](_[_0x2fd2('0x49')](_0x1561dc['query'],_0x357444['filters']),_0x3b40fa);if(_0x1561dc[_0x2fd2('0x3d')][_0x2fd2('0x4a')]){_0x339985['where']=_[_0x2fd2('0x4b')](_0x339985[_0x2fd2('0x48')],{'$or':_[_0x2fd2('0x39')](_0x3b40fa,function(_0xd63e3b){if(_0xd63e3b['type']!==_0x2fd2('0x4c')){var _0x2e13f7={};_0x2e13f7[_0xd63e3b[_0x2fd2('0x35')]]={'$like':'%'+_0x1561dc[_0x2fd2('0x3d')][_0x2fd2('0x4a')]+'%'};return _0x2e13f7;}})});}_0x339985=_[_0x2fd2('0x4b')]({},_0x339985,_0x1561dc[_0x2fd2('0x4d')]);var _0x521580={'where':_0x339985['where']};return db['VoiceExtension'][_0x2fd2('0x25')](_0x521580)[_0x2fd2('0x2a')](function(_0x1bcfb6){_0x162904[_0x2fd2('0x25')]=_0x1bcfb6;if(_0x1561dc['query']['includeAll']){_0x339985[_0x2fd2('0x4e')]=[{'all':!![]}];}return db[_0x2fd2('0x4f')][_0x2fd2('0x50')](_0x339985);})[_0x2fd2('0x2a')](function(_0x285eec){_0x162904[_0x2fd2('0x51')]=_0x285eec;return _0x162904;})[_0x2fd2('0x2a')](respondWithFilteredResult(_0x2e0427,_0x339985))[_0x2fd2('0x52')](handleError(_0x2e0427,null));};exports[_0x2fd2('0x53')]=function(_0x412cf6,_0x1dacdf){var _0xc56426={'raw':![],'where':{'id':_0x412cf6['params']['id']}},_0x348bab={};_0x348bab[_0x2fd2('0x3c')]=_[_0x2fd2('0x3e')](db[_0x2fd2('0x4f')]['rawAttributes']);_0x348bab[_0x2fd2('0x3d')]=_[_0x2fd2('0x3e')](_0x412cf6[_0x2fd2('0x3d')]);_0x348bab[_0x2fd2('0x3f')]=_['intersection'](_0x348bab[_0x2fd2('0x3c')],_0x348bab[_0x2fd2('0x3d')]);_0xc56426['attributes']=_[_0x2fd2('0x41')](_0x348bab[_0x2fd2('0x3c')],qs[_0x2fd2('0x42')](_0x412cf6['query'][_0x2fd2('0x42')]));_0xc56426['attributes']=_0xc56426['attributes'][_0x2fd2('0x43')]?_0xc56426[_0x2fd2('0x40')]:_0x348bab[_0x2fd2('0x3c')];if(_0x412cf6['query'][_0x2fd2('0x54')]){_0xc56426[_0x2fd2('0x4e')]=[{'all':!![]}];}_0xc56426=_[_0x2fd2('0x4b')]({},_0xc56426,_0x412cf6[_0x2fd2('0x4d')]);return db['VoiceExtension'][_0x2fd2('0x55')](_0xc56426)[_0x2fd2('0x2a')](handleEntityNotFound(_0x1dacdf,null))[_0x2fd2('0x2a')](respondWithResult(_0x1dacdf,null))['catch'](handleError(_0x1dacdf,null));};exports[_0x2fd2('0x36')]=function(_0x57e937,_0x302ebb){return db[_0x2fd2('0x4f')][_0x2fd2('0x55')]({'where':{'id':_0x57e937['params']['id']}})[_0x2fd2('0x2a')](handleEntityNotFound(_0x302ebb,null))[_0x2fd2('0x2a')](removeEntity(_0x302ebb,null))[_0x2fd2('0x52')](handleError(_0x302ebb,null));};exports['create']=function(_0x10818e,_0x4d2ab1){if(_0x10818e[_0x2fd2('0x56')]['type']===_0x2fd2('0x2f')&&!_['startsWith'](_0x10818e[_0x2fd2('0x56')]['exten'],'_')){_0x10818e['body']['exten']='_'[_0x2fd2('0x57')](_0x10818e[_0x2fd2('0x56')][_0x2fd2('0x58')]);}return db[_0x2fd2('0x4f')][_0x2fd2('0x59')](_0x10818e[_0x2fd2('0x56')],{'raw':![]})['then'](function(_0x22051b){var _0xad2376=_0x10818e[_0x2fd2('0x5a')][_0x2fd2('0x2b')]({'plain':!![]});if(!_0xad2376)throw new Error(_0x2fd2('0x5b'));if(_0xad2376[_0x2fd2('0x5c')]===_0x2fd2('0x5a')){var _0x69547e=_0x22051b[_0x2fd2('0x2b')]({'plain':!![]});var _0x1771e9=[{'name':_0x2fd2('0x2c'),'value':_0x2fd2('0x2d')},{'name':_0x2fd2('0x2e'),'value':_0x2fd2('0x2f')},{'name':_0x2fd2('0x5d'),'value':_0x2fd2('0x30')}];var _0x46b4a6=_[_0x2fd2('0x55')](_0x1771e9,[_0x2fd2('0x32'),_0x69547e['type']])[_0x2fd2('0x35')];return db[_0x2fd2('0x5e')][_0x2fd2('0x55')]({'where':{'name':_0x46b4a6,'userProfileId':_0xad2376[_0x2fd2('0x5f')]},'raw':!![]})[_0x2fd2('0x2a')](function(_0x2a9046){if(_0x2a9046&&_0x2a9046[_0x2fd2('0x60')]===0x0){return db[_0x2fd2('0x61')]['create']({'name':_0x69547e[_0x2fd2('0x35')],'resourceId':_0x69547e['id'],'type':_0x2a9046['name'],'sectionId':_0x2a9046['id']},{})[_0x2fd2('0x2a')](function(){return _0x22051b;});}else{return _0x22051b;}})[_0x2fd2('0x52')](function(_0x819a64){logger[_0x2fd2('0x62')](_0x2fd2('0x63'),_0x819a64);throw _0x819a64;});}return _0x22051b;})[_0x2fd2('0x2a')](respondWithResult(_0x4d2ab1,0xc9))[_0x2fd2('0x52')](handleError(_0x4d2ab1,null));};exports[_0x2fd2('0x64')]=function(_0x10599a,_0x7ec722){if(_0x10599a['body']['id']){delete _0x10599a[_0x2fd2('0x56')]['id'];}return db[_0x2fd2('0x4f')][_0x2fd2('0x55')]({'where':{'id':_0x10599a[_0x2fd2('0x65')]['id']}})[_0x2fd2('0x2a')](handleEntityNotFound(_0x7ec722,null))['then'](function(_0x5c1987){if(_0x5c1987){return db[_0x2fd2('0x4f')][_0x2fd2('0x64')](_['pick'](_0x10599a[_0x2fd2('0x56')],[_0x2fd2('0x58'),_0x2fd2('0x66'),'description',_0x2fd2('0x67'),'cutdigits',_0x2fd2('0x68'),_0x2fd2('0x69')]),{'where':{'context':_0x5c1987['context'],'exten':_0x5c1987[_0x2fd2('0x58')]},'individualHooks':!![]})[_0x2fd2('0x2a')](function(_0xb8ffb9){return _0xb8ffb9;});}return null;})[_0x2fd2('0x2a')](respondWithStatusCode(_0x7ec722,null))[_0x2fd2('0x52')](handleError(_0x7ec722,null));};exports[_0x2fd2('0x6a')]=function(_0x1cb3d7,_0x36bfd3){return db[_0x2fd2('0x4f')][_0x2fd2('0x6b')]({'where':{'id':_0x1cb3d7[_0x2fd2('0x65')]['id']}})[_0x2fd2('0x2a')](function(_0x119dc5){if(_0x119dc5){return db[_0x2fd2('0x6c')][_0x2fd2('0x6d')](function(_0x59e64f){return db[_0x2fd2('0x4f')][_0x2fd2('0x36')]({'where':{'VoiceExtensionId':_0x1cb3d7[_0x2fd2('0x65')]['id']},'transaction':_0x59e64f})[_0x2fd2('0x2a')](function(){var _0x4528b7=_[_0x2fd2('0x39')](_0x1cb3d7['body'],function(_0xef02f8){_0xef02f8['VoiceExtensionId']=_0x1cb3d7[_0x2fd2('0x65')]['id'];_0xef02f8[_0x2fd2('0x6e')]=!![];return _0xef02f8;});var _0x7508ef=_0x1cb3d7[_0x2fd2('0x3d')]['rewriteDial']&&_0x1cb3d7[_0x2fd2('0x3d')][_0x2fd2('0x6f')][_0x2fd2('0x70')]()===_0x2fd2('0x71')?!![]:![];return _0x119dc5[_0x2fd2('0x72')](_0x4528b7,_0x7508ef);})[_0x2fd2('0x2a')](function(_0x206527){return db[_0x2fd2('0x4f')][_0x2fd2('0x73')](_0x206527,{'transaction':_0x59e64f});});})['then'](function(){return db[_0x2fd2('0x4f')][_0x2fd2('0x74')]({'where':{'isApp':!![],'VoiceExtensionId':_0x1cb3d7[_0x2fd2('0x65')]['id']},'order':_0x2fd2('0x75')});});}})['then'](respondWithResult(_0x36bfd3,null))[_0x2fd2('0x52')](handleError(_0x36bfd3,null));};
\ No newline at end of file
index c3674e0..bdb9d1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f04=['exports','events','VoiceExtension','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x3f2228,_0x3b27d5){var _0x285ae4=function(_0x5e1f23){while(--_0x5e1f23){_0x3f2228['push'](_0x3f2228['shift']());}};_0x285ae4(++_0x3b27d5);}(_0x6f04,0xe7));var _0x46f0=function(_0x13270a,_0x270a4d){_0x13270a=_0x13270a-0x0;var _0x4ebe1e=_0x6f04[_0x13270a];return _0x4ebe1e;};'use strict';var EventEmitter=require(_0x46f0('0x0'));var VoiceExtension=require('../../mysqldb')['db'][_0x46f0('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x46f0('0x2')](0x0);var events={'afterCreate':_0x46f0('0x3'),'afterUpdate':_0x46f0('0x4'),'afterDestroy':_0x46f0('0x5')};function emitEvent(_0x1c7289){return function(_0x52c1ea,_0x1e62c3,_0x35747c){VoiceExtensionEvents['emit'](_0x1c7289+':'+_0x52c1ea['id'],_0x52c1ea);VoiceExtensionEvents[_0x46f0('0x6')](_0x1c7289,_0x52c1ea);_0x35747c(null);};}for(var e in events){if(events[_0x46f0('0x7')](e)){var event=events[e];VoiceExtension[_0x46f0('0x8')](e,emitEvent(event));}}module[_0x46f0('0x9')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x3d48=['events','../../mysqldb','update','emit','hook'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3d48,0x177));var _0x83d4=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x3d48[_0x2c91e9];return _0x13f0ff;};'use strict';var EventEmitter=require(_0x83d4('0x0'));var VoiceExtension=require(_0x83d4('0x1'))['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x83d4('0x2'),'afterDestroy':'remove'};function emitEvent(_0xaad37){return function(_0x4281d4,_0x5e122b,_0x457c94){VoiceExtensionEvents['emit'](_0xaad37+':'+_0x4281d4['id'],_0x4281d4);VoiceExtensionEvents[_0x83d4('0x3')](_0xaad37,_0x4281d4);_0x457c94(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0x83d4('0x4')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
index c6cdafa..ed2796f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e35=['$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','GotoIfTime',',${EXTEN},','outboundDial','appdata','priority','last','concat','catch','get','Hangup','lodash','exports','models','type','context','exten','alias','Set','NoOp','No\x20alias\x20set','inbound','push','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','CDR(routeid)=','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','timeout','options','url','split','trunk','phone','param','prefix','indexOf','U(xcally-mixmonitor-context)','replace','join','findAll','then','length','interval','*,*,*,*','intervals','IntervalId','map','filter','toLowerCase','hasOwnProperty','tag','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','Set(CALLERID(all)=','callerID','NoOp(No\x20number\x20available)','queue','playback','includes','app','appType','custom'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2e35,0x101));var _0x52e3=function(_0x1c61f7,_0x59bce9){_0x1c61f7=_0x1c61f7-0x0;var _0x18354e=_0x2e35[_0x1c61f7];return _0x18354e;};'use strict';var _=require(_0x52e3('0x0'));var attributes=require('./voiceExtension.attributes');module[_0x52e3('0x1')]=function(_0x4c1bb8){var _0x3b24b7=_0x4c1bb8[_0x52e3('0x2')];function _0xc6a6b8(_0x3b4c00){var _0x536388=0x2;var _0x144abc=[{'type':_0x3b4c00['type'],'app':'Set','appdata':'CDR(type)='+_0x3b4c00[_0x52e3('0x3')],'context':_0x3b4c00[_0x52e3('0x4')],'exten':_0x3b4c00[_0x52e3('0x5')],'priority':_0x536388++,'VoiceExtensionId':_0x3b4c00['id']},{'type':_0x3b4c00[_0x52e3('0x3')],'app':_0x3b4c00[_0x52e3('0x6')]?_0x52e3('0x7'):_0x52e3('0x8'),'appdata':_0x3b4c00[_0x52e3('0x6')]?'CDR(routeAlias)='+_0x3b4c00[_0x52e3('0x6')]:_0x52e3('0x9'),'context':_0x3b4c00[_0x52e3('0x4')],'exten':_0x3b4c00[_0x52e3('0x5')],'priority':_0x536388++,'VoiceExtensionId':_0x3b4c00['id']}];if(_0x3b4c00[_0x52e3('0x3')]===_0x52e3('0xa')){_0x144abc[_0x52e3('0xb')]({'type':'inbound','app':'Set','appdata':'CDR(routeid)='+_0x3b4c00['id'],'context':_0x3b4c00[_0x52e3('0x4')],'exten':_0x3b4c00[_0x52e3('0x5')],'priority':_0x536388++,'VoiceExtensionId':_0x3b4c00['id']});}_0x144abc[_0x52e3('0xb')]({'type':_0x3b4c00['type'],'app':_0x52e3('0x7'),'appdata':_0x52e3('0xc'),'context':_0x3b4c00['context'],'exten':_0x3b4c00[_0x52e3('0x5')],'priority':_0x536388++,'VoiceExtensionId':_0x3b4c00['id']},{'type':_0x3b4c00[_0x52e3('0x3')],'app':'Set','appdata':_0x52e3('0xd'),'context':_0x3b4c00[_0x52e3('0x4')],'exten':_0x3b4c00[_0x52e3('0x5')],'priority':_0x536388++,'VoiceExtensionId':_0x3b4c00['id']},{'type':_0x3b4c00[_0x52e3('0x3')],'app':_0x52e3('0x7'),'appdata':_0x52e3('0xe'),'context':_0x3b4c00[_0x52e3('0x4')],'exten':_0x3b4c00[_0x52e3('0x5')],'priority':_0x536388++,'VoiceExtensionId':_0x3b4c00['id']});return _0x144abc;}function _0x453b02(_0x11d725){var _0x5553a1=0x2;var _0x2e982c=[{'type':_0x52e3('0xf'),'app':_0x52e3('0x7'),'appdata':_0x52e3('0x10'),'context':_0x11d725[_0x52e3('0x4')],'exten':_0x11d725[_0x52e3('0x5')],'priority':_0x5553a1++,'VoiceExtensionId':_0x11d725['id']},{'type':_0x52e3('0xf'),'app':_0x11d725[_0x52e3('0x6')]?_0x52e3('0x7'):_0x52e3('0x8'),'appdata':_0x11d725[_0x52e3('0x6')]?'CDR(routeAlias)='+_0x11d725[_0x52e3('0x6')]:_0x52e3('0x9'),'context':_0x11d725['context'],'exten':_0x11d725['exten'],'priority':_0x5553a1++,'VoiceExtensionId':_0x11d725['id']},{'type':_0x52e3('0xf'),'app':_0x52e3('0x7'),'appdata':_0x52e3('0x11')+(_0x11d725[_0x52e3('0x12')]?_0x52e3('0x13')+_0x11d725[_0x52e3('0x12')]+'}':_0x52e3('0x14')),'context':_0x11d725[_0x52e3('0x4')],'exten':_0x11d725[_0x52e3('0x5')],'priority':_0x5553a1++,'VoiceExtensionId':_0x11d725['id']},{'type':_0x52e3('0xf'),'app':_0x52e3('0x7'),'appdata':_0x52e3('0x15')+_0x11d725['id'],'context':_0x11d725[_0x52e3('0x4')],'exten':_0x11d725[_0x52e3('0x5')],'priority':_0x5553a1++,'VoiceExtensionId':_0x11d725['id']},{'type':_0x52e3('0xf'),'app':'ExecIf','appdata':_0x52e3('0x16')+(_0x5553a1+0x2)+_0x52e3('0x17')+(_0x5553a1+0x1)+')','context':_0x11d725['context'],'exten':_0x11d725[_0x52e3('0x5')],'priority':_0x5553a1++,'VoiceExtensionId':_0x11d725['id']},{'type':_0x52e3('0xf'),'app':_0x52e3('0x7'),'appdata':_0x11d725[_0x52e3('0x12')]?_0x52e3('0x18')+_0x11d725[_0x52e3('0x12')]+'}':_0x52e3('0x19'),'context':_0x11d725['context'],'exten':_0x11d725[_0x52e3('0x5')],'priority':_0x5553a1++,'VoiceExtensionId':_0x11d725['id']},{'type':_0x52e3('0xf'),'app':'Set','appdata':_0x52e3('0xc'),'context':_0x11d725['context'],'exten':_0x11d725[_0x52e3('0x5')],'priority':_0x5553a1++,'VoiceExtensionId':_0x11d725['id']},{'type':_0x52e3('0xf'),'app':_0x52e3('0x7'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x11d725[_0x52e3('0x4')],'exten':_0x11d725[_0x52e3('0x5')],'priority':_0x5553a1++,'VoiceExtensionId':_0x11d725['id']},{'type':_0x52e3('0xf'),'app':_0x52e3('0x7'),'appdata':_0x52e3('0xe'),'context':_0x11d725[_0x52e3('0x4')],'exten':_0x11d725['exten'],'priority':_0x5553a1++,'VoiceExtensionId':_0x11d725['id']},{'type':_0x52e3('0xf'),'app':'Set','appdata':_0x52e3('0x1a')+_0x11d725['id'],'context':_0x11d725[_0x52e3('0x4')],'exten':_0x11d725[_0x52e3('0x5')],'priority':_0x5553a1++,'VoiceExtensionId':_0x11d725['id']}];if(_0x11d725['hasOwnProperty'](_0x52e3('0x1b'))&&_0x11d725['recordingFormat']!==_0x52e3('0x1c')){_0x2e982c[_0x52e3('0xb')]({'type':_0x52e3('0xf'),'app':_0x52e3('0x7'),'appdata':_0x52e3('0x1d'),'context':_0x11d725[_0x52e3('0x4')],'exten':_0x11d725['exten'],'priority':_0x5553a1++,'VoiceExtensionId':_0x11d725['id']},{'type':_0x52e3('0xf'),'app':_0x52e3('0x7'),'appdata':_0x52e3('0x1e')+_0x11d725['recordingFormat']||_0x52e3('0x1f'),'context':_0x11d725[_0x52e3('0x4')],'exten':_0x11d725[_0x52e3('0x5')],'priority':_0x5553a1++,'VoiceExtensionId':_0x11d725['id']});}return _0x2e982c;}function _0x4a282b(_0x85416e,_0x360b04){var _0x40ae4e=[{'name':'trunk','param':0x0},{'name':_0x52e3('0x20'),'param':0x1},{'name':_0x52e3('0x21'),'param':0x2},{'name':_0x52e3('0x22'),'param':0x3}];var _0x3b0a78={};var _0x599dd0=_0x360b04[_0x52e3('0x23')](',');var _0x5cde31=[];for(var _0x211852=0x0;_0x211852<_0x40ae4e['length'];_0x211852++){switch(_0x40ae4e[_0x211852]['name']){case'trunk':_0x3b0a78[_0x52e3('0x24')]=_0x599dd0[_0x40ae4e[_0x211852]['param']][_0x52e3('0x23')]('/')[0x1];_0x3b0a78[_0x52e3('0x25')]=_0x599dd0[_0x40ae4e[_0x211852][_0x52e3('0x26')]][_0x52e3('0x23')]('/')[0x2];_0x3b0a78[_0x52e3('0x27')]=_0x3b0a78[_0x52e3('0x25')]?_0x3b0a78[_0x52e3('0x25')][_0x52e3('0x23')]('$')[0x0]:undefined;_0x3b0a78['phone']=_0x85416e[_0x52e3('0x12')]?(_0x3b0a78[_0x52e3('0x27')]||'')+_0x52e3('0x13')+_0x85416e[_0x52e3('0x12')]+'}':(_0x3b0a78['prefix']||'')+_0x52e3('0x14');_0x5cde31[_0x40ae4e[_0x211852][_0x52e3('0x26')]]=['SIP',_0x3b0a78[_0x52e3('0x24')],_0x3b0a78['phone']]['join']('/');break;case _0x52e3('0x21'):_0x3b0a78['options']=_0x599dd0[_0x40ae4e[_0x211852]['param']];if(_0x85416e[_0x52e3('0x1b')]!==_0x52e3('0x1c')){if(_0x3b0a78[_0x52e3('0x21')][_0x52e3('0x28')]('U(xcally-mixmonitor-context)')<0x0){_0x3b0a78['options']+=_0x52e3('0x29');}}else{_0x3b0a78[_0x52e3('0x21')]=_0x3b0a78['options'][_0x52e3('0x2a')](_0x52e3('0x29'),'');}_0x5cde31[_0x40ae4e[_0x211852][_0x52e3('0x26')]]=_0x3b0a78[_0x52e3('0x21')];break;default:_0x5cde31[_0x40ae4e[_0x211852]['param']]=_0x599dd0[_0x40ae4e[_0x211852][_0x52e3('0x26')]];}}return _0x5cde31[_0x52e3('0x2b')](',');}function _0x143122(_0x2ea5ac,_0x23de88,_0x382cd0){return new Promise(function(_0x3a90b7,_0x5bb570){var _0x699b94=[];if(_['isEmpty'](_0x23de88))return _0x3a90b7(_0x699b94);_0x3b24b7['Interval'][_0x52e3('0x2c')]({'attributes':['id','interval','IntervalId'],'raw':!![]})[_0x52e3('0x2d')](function(_0x3c8383){for(var _0x57ec2c=0x0,_0x467f2b=0x0;_0x57ec2c<_0x23de88[_0x52e3('0x2e')];_0x57ec2c++,_0x467f2b=0x0){var _0x1b1ad8=_0x23de88[_0x57ec2c];var _0x509634=[];var _0x5cb0e4=[];delete _0x1b1ad8['id'];if(_0x1b1ad8[_0x52e3('0x2f')]!==_0x52e3('0x30')){_0x1b1ad8[_0x52e3('0x31')]=[_0x1b1ad8[_0x52e3('0x2f')]];}else{_0x1b1ad8[_0x52e3('0x31')]=_0x1b1ad8[_0x52e3('0x32')]?_[_0x52e3('0x33')](_[_0x52e3('0x34')](_0x3c8383,{'IntervalId':_0x1b1ad8[_0x52e3('0x32')]}),_0x52e3('0x2f')):[];}_0x1b1ad8[_0x52e3('0x4')]=_0x2ea5ac[_0x52e3('0x4')];_0x1b1ad8['exten']=_0x2ea5ac[_0x52e3('0x5')];if(_0x1b1ad8['type'])_0x1b1ad8[_0x52e3('0x3')]=_0x1b1ad8[_0x52e3('0x3')][_0x52e3('0x35')]();if(_0x2ea5ac['type']==='outbound'){if(_0x1b1ad8[_0x52e3('0x36')](_0x52e3('0x37'))&&_0x1b1ad8[_0x52e3('0x37')]&&_0x1b1ad8[_0x52e3('0x37')]!=='--'){_0x509634[_0x52e3('0xb')]({'type':_0x1b1ad8['type'][_0x52e3('0x35')](),'app':'Set','appdata':'CDR(tag)='+_0x1b1ad8[_0x52e3('0x37')],'context':_0x2ea5ac[_0x52e3('0x4')],'exten':_0x2ea5ac[_0x52e3('0x5')],'priority':_0x1b1ad8[_0x52e3('0x31')][_0x52e3('0x2e')]+_0x382cd0+_0x467f2b++,'VoiceExtensionId':_0x2ea5ac['id']});}_0x509634[_0x52e3('0xb')]({'type':_0x1b1ad8[_0x52e3('0x3')][_0x52e3('0x35')](),'app':_0x52e3('0x38'),'appdata':_0x52e3('0x39')+(_0x1b1ad8['callerID']?_0x52e3('0x3a')+_0x1b1ad8[_0x52e3('0x3b')]+')':_0x52e3('0x3c')),'context':_0x2ea5ac[_0x52e3('0x4')],'exten':_0x2ea5ac[_0x52e3('0x5')],'priority':_0x1b1ad8[_0x52e3('0x31')][_0x52e3('0x2e')]+_0x382cd0+_0x467f2b++,'VoiceExtensionId':_0x2ea5ac['id']});}else{if(_0x1b1ad8[_0x52e3('0x36')]('answer')){if([_0x52e3('0x3d'),_0x52e3('0x3e')][_0x52e3('0x3f')](_0x1b1ad8[_0x52e3('0x40')][_0x52e3('0x35')]())&&_0x1b1ad8[_0x52e3('0x41')]!==_0x52e3('0x42')){if(_0x1b1ad8['answer']){_0x509634[_0x52e3('0xb')]({'type':_0x1b1ad8['type'][_0x52e3('0x35')](),'app':'ExecIf','appdata':_0x52e3('0x43'),'context':_0x2ea5ac[_0x52e3('0x4')],'exten':_0x2ea5ac[_0x52e3('0x5')],'priority':_0x1b1ad8['intervals']['length']+_0x382cd0+_0x467f2b++,'VoiceExtensionId':_0x2ea5ac['id']});_0x509634[_0x52e3('0xb')]({'type':_0x1b1ad8['type'][_0x52e3('0x35')](),'app':_0x52e3('0x7'),'appdata':_0x52e3('0x44'),'context':_0x2ea5ac[_0x52e3('0x4')],'exten':_0x2ea5ac[_0x52e3('0x5')],'priority':_0x1b1ad8[_0x52e3('0x31')][_0x52e3('0x2e')]+_0x382cd0+_0x467f2b++,'VoiceExtensionId':_0x2ea5ac['id']});}else{_0x509634[_0x52e3('0xb')]({'type':_0x1b1ad8[_0x52e3('0x3')][_0x52e3('0x35')](),'app':_0x52e3('0x38'),'appdata':_0x52e3('0x45'),'context':_0x2ea5ac[_0x52e3('0x4')],'exten':_0x2ea5ac[_0x52e3('0x5')],'priority':_0x1b1ad8['intervals'][_0x52e3('0x2e')]+_0x382cd0+_0x467f2b++,'VoiceExtensionId':_0x2ea5ac['id']});_0x509634[_0x52e3('0xb')]({'type':_0x1b1ad8[_0x52e3('0x3')][_0x52e3('0x35')](),'app':_0x52e3('0x7'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x2ea5ac[_0x52e3('0x4')],'exten':_0x2ea5ac[_0x52e3('0x5')],'priority':_0x1b1ad8['intervals'][_0x52e3('0x2e')]+_0x382cd0+_0x467f2b++,'VoiceExtensionId':_0x2ea5ac['id']});}}}}for(var _0x44ade7=0x0;_0x44ade7<_0x1b1ad8[_0x52e3('0x31')]['length'];_0x44ade7++){var _0x3a8bbf=_0x382cd0+_0x1b1ad8[_0x52e3('0x31')][_0x52e3('0x2e')];var _0x35f104=_0x44ade7===_0x1b1ad8[_0x52e3('0x31')][_0x52e3('0x2e')]-0x1?_0x382cd0+_0x509634[_0x52e3('0x2e')]+_0x5cb0e4[_0x52e3('0x2e')]+0x2:_0x382cd0+_0x44ade7+0x1;_0x509634[_0x52e3('0x46')](_0x44ade7,0x0,{'type':_0x2ea5ac[_0x52e3('0x3')],'app':_0x52e3('0x47'),'appdata':_0x1b1ad8[_0x52e3('0x31')][_0x44ade7]+'?'+_0x2ea5ac['context']+_0x52e3('0x48')+_0x3a8bbf+':'+_0x2ea5ac[_0x52e3('0x4')]+_0x52e3('0x48')+_0x35f104,'exten':_0x2ea5ac['exten'],'context':_0x2ea5ac[_0x52e3('0x4')],'priority':_0x382cd0+_0x44ade7,'VoiceExtensionId':_0x2ea5ac['id']});}if(_0x1b1ad8['appType']===_0x52e3('0x49'))_0x1b1ad8[_0x52e3('0x4a')]=_0x4a282b(_0x2ea5ac,_0x1b1ad8['appdata']);_0x1b1ad8[_0x52e3('0x4b')]=_0x509634[_0x52e3('0x2e')]?_[_0x52e3('0x4c')](_0x509634)[_0x52e3('0x4b')]+0x1:_0x382cd0;_0x699b94=_[_0x52e3('0x4d')](_0x699b94,_0x509634,[_0x1b1ad8],_0x5cb0e4);_0x382cd0=_['last'](_0x699b94)['priority']+0x1;}return _0x3a90b7(_0x699b94);})[_0x52e3('0x4e')](function(_0x3a3924){_0x5bb570(_0x3a3924);});});}return _0x4c1bb8['define']('VoiceExtension',attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x25961d){var _0x103107=this[_0x52e3('0x4f')]({'plain':!![]});var _0x4b2c92=_0x103107[_0x52e3('0x3')]===_0x52e3('0xf')?_0x453b02(_0x103107):_0xc6a6b8(_0x103107);return _0x143122(_0x103107,_0x25961d,_[_0x52e3('0x4c')](_0x4b2c92)['priority']+0x1)[_0x52e3('0x2d')](function(_0x2c5eac){var _0x3dcde9=_[_0x52e3('0x4d')](_0x4b2c92,_0x2c5eac);_0x3dcde9[_0x52e3('0xb')]({'type':_0x103107['type'],'app':_0x52e3('0x50'),'exten':_0x103107['exten'],'context':_0x103107[_0x52e3('0x4')],'priority':_[_0x52e3('0x4c')](_0x3dcde9)[_0x52e3('0x4b')]+0x1,'VoiceExtensionId':_0x103107['id']});return _0x3dcde9;});}}});};
\ No newline at end of file
+var _0xe8d8=['length','name','trunk','param','phone','prefix','${EXTEN}','SIP','join','U(xcally-mixmonitor-context)','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','map','filter','tag','toLowerCase','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','queue','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','ExecIf','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1',',${EXTEN},','outboundDial','appdata','priority','last','concat','catch','voice_extensions','Hangup','util','lodash','exports','models','Set','CDR(type)=','type','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set','exten','inbound','CDR(routeid)=','context','push','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN:','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','timeout','options','url','split'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe8d8,0x171));var _0x8e8d=function(_0xc7fc34,_0xd8ad6c){_0xc7fc34=_0xc7fc34-0x0;var _0x41d17d=_0xe8d8[_0xc7fc34];return _0x41d17d;};'use strict';var util=require(_0x8e8d('0x0'));var _=require(_0x8e8d('0x1'));var attributes=require('./voiceExtension.attributes');module[_0x8e8d('0x2')]=function(_0x18c30c){var _0x4bc3b3=_0x18c30c[_0x8e8d('0x3')];function _0x5db796(_0x131b64){var _0x58ee9f=0x2;var _0x20bcb2=[{'type':_0x131b64['type'],'app':_0x8e8d('0x4'),'appdata':_0x8e8d('0x5')+_0x131b64['type'],'context':_0x131b64['context'],'exten':_0x131b64['exten'],'priority':_0x58ee9f++,'VoiceExtensionId':_0x131b64['id']},{'type':_0x131b64[_0x8e8d('0x6')],'app':_0x131b64[_0x8e8d('0x7')]?'Set':_0x8e8d('0x8'),'appdata':_0x131b64[_0x8e8d('0x7')]?_0x8e8d('0x9')+_0x131b64[_0x8e8d('0x7')]:_0x8e8d('0xa'),'context':_0x131b64['context'],'exten':_0x131b64[_0x8e8d('0xb')],'priority':_0x58ee9f++,'VoiceExtensionId':_0x131b64['id']}];if(_0x131b64[_0x8e8d('0x6')]===_0x8e8d('0xc')){_0x20bcb2['push']({'type':'inbound','app':'Set','appdata':_0x8e8d('0xd')+_0x131b64['id'],'context':_0x131b64[_0x8e8d('0xe')],'exten':_0x131b64[_0x8e8d('0xb')],'priority':_0x58ee9f++,'VoiceExtensionId':_0x131b64['id']});}_0x20bcb2[_0x8e8d('0xf')]({'type':_0x131b64[_0x8e8d('0x6')],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=0','context':_0x131b64[_0x8e8d('0xe')],'exten':_0x131b64['exten'],'priority':_0x58ee9f++,'VoiceExtensionId':_0x131b64['id']},{'type':_0x131b64[_0x8e8d('0x6')],'app':'Set','appdata':_0x8e8d('0x10'),'context':_0x131b64[_0x8e8d('0xe')],'exten':_0x131b64['exten'],'priority':_0x58ee9f++,'VoiceExtensionId':_0x131b64['id']},{'type':_0x131b64[_0x8e8d('0x6')],'app':'Set','appdata':_0x8e8d('0x11'),'context':_0x131b64['context'],'exten':_0x131b64[_0x8e8d('0xb')],'priority':_0x58ee9f++,'VoiceExtensionId':_0x131b64['id']});return _0x20bcb2;}function _0x51e8e0(_0x3035b9){var _0xea275e=0x2;var _0x2c7bd7=[{'type':_0x8e8d('0x12'),'app':_0x8e8d('0x4'),'appdata':_0x8e8d('0x13'),'context':_0x3035b9['context'],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':_0x3035b9['alias']?_0x8e8d('0x4'):_0x8e8d('0x8'),'appdata':_0x3035b9[_0x8e8d('0x7')]?_0x8e8d('0x9')+_0x3035b9[_0x8e8d('0x7')]:_0x8e8d('0xa'),'context':_0x3035b9[_0x8e8d('0xe')],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':_0x8e8d('0x4'),'appdata':_0x8e8d('0x14')+(_0x3035b9[_0x8e8d('0x15')]?_0x8e8d('0x16')+_0x3035b9[_0x8e8d('0x15')]+'}':'${EXTEN}'),'context':_0x3035b9[_0x8e8d('0xe')],'exten':_0x3035b9['exten'],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':_0x8e8d('0x4'),'appdata':_0x8e8d('0xd')+_0x3035b9['id'],'context':_0x3035b9[_0x8e8d('0xe')],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':'ExecIf','appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0xea275e+0x2)+_0x8e8d('0x17')+(_0xea275e+0x1)+')','context':_0x3035b9['context'],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':_0x8e8d('0x4'),'appdata':_0x3035b9[_0x8e8d('0x15')]?_0x8e8d('0x18')+_0x3035b9[_0x8e8d('0x15')]+'}':_0x8e8d('0x19'),'context':_0x3035b9[_0x8e8d('0xe')],'exten':_0x3035b9['exten'],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':_0x8e8d('0x4'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x3035b9[_0x8e8d('0xe')],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':_0x8e8d('0x4'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x3035b9[_0x8e8d('0xe')],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':_0x8e8d('0x4'),'appdata':_0x8e8d('0x11'),'context':_0x3035b9['context'],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':'Set','appdata':_0x8e8d('0x1a')+_0x3035b9['id'],'context':_0x3035b9['context'],'exten':_0x3035b9['exten'],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']}];if(_0x3035b9[_0x8e8d('0x1b')](_0x8e8d('0x1c'))&&_0x3035b9[_0x8e8d('0x1c')]!==_0x8e8d('0x1d')){_0x2c7bd7['push']({'type':_0x8e8d('0x12'),'app':_0x8e8d('0x4'),'appdata':_0x8e8d('0x1e'),'context':_0x3035b9[_0x8e8d('0xe')],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':'Set','appdata':_0x8e8d('0x1f')+_0x3035b9['recordingFormat']||'wav','context':_0x3035b9[_0x8e8d('0xe')],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']});}return _0x2c7bd7;}function _0x38e888(_0x538324){var _0x185c43=[{'name':'trunk','param':0x0},{'name':_0x8e8d('0x20'),'param':0x1},{'name':_0x8e8d('0x21'),'param':0x2},{'name':_0x8e8d('0x22'),'param':0x3}];var _0x26619f={};var _0x2aaeaf=_0x538324[_0x8e8d('0x23')](',');var _0x45b3c8=[];for(var _0x1e12d3=0x0;_0x1e12d3<_0x185c43[_0x8e8d('0x24')];_0x1e12d3++){switch(_0x185c43[_0x1e12d3][_0x8e8d('0x25')]){case _0x8e8d('0x26'):_0x26619f['trunk']=_0x2aaeaf[_0x185c43[_0x1e12d3][_0x8e8d('0x27')]][_0x8e8d('0x23')]('/')[0x1];_0x26619f[_0x8e8d('0x28')]=_0x2aaeaf[_0x185c43[_0x1e12d3][_0x8e8d('0x27')]][_0x8e8d('0x23')]('/')[0x2];_0x26619f['prefix']=_0x26619f['phone']?_0x26619f['phone'][_0x8e8d('0x23')]('$')[0x0]:undefined;_0x26619f[_0x8e8d('0x28')]=route['cutdigits']?(_0x26619f['prefix']||'')+_0x8e8d('0x16')+route[_0x8e8d('0x15')]+'}':(_0x26619f[_0x8e8d('0x29')]||'')+_0x8e8d('0x2a');_0x45b3c8[_0x185c43[_0x1e12d3][_0x8e8d('0x27')]]=[_0x8e8d('0x2b'),_0x26619f[_0x8e8d('0x26')],_0x26619f['phone']][_0x8e8d('0x2c')]('/');break;case _0x8e8d('0x21'):_0x26619f[_0x8e8d('0x21')]=_0x2aaeaf[_0x185c43[_0x1e12d3]['param']];if(route['recordingFormat']!==_0x8e8d('0x1d')){if(_0x26619f['options']['indexOf'](_0x8e8d('0x2d'))<0x0){_0x26619f[_0x8e8d('0x21')]+=_0x8e8d('0x2d');}}else{_0x26619f['options']=_0x26619f['options']['replace'](_0x8e8d('0x2d'),'');}_0x45b3c8[_0x185c43[_0x1e12d3][_0x8e8d('0x27')]]=_0x26619f[_0x8e8d('0x21')];break;default:_0x45b3c8[_0x185c43[_0x1e12d3][_0x8e8d('0x27')]]=_0x2aaeaf[_0x185c43[_0x1e12d3][_0x8e8d('0x27')]];}}return _0x45b3c8[_0x8e8d('0x2c')](',');}function _0x1b7756(_0x11f2fe,_0x397e9a,_0x3825b9,_0x215482){return new Promise(function(_0x1d5a8f,_0x5725ce){var _0x1eed05=[];if(_['isEmpty'](_0x397e9a))return _0x1d5a8f(_0x1eed05);_0x4bc3b3[_0x8e8d('0x2e')][_0x8e8d('0x2f')]({'attributes':['id',_0x8e8d('0x30'),_0x8e8d('0x31')],'raw':!![]})[_0x8e8d('0x32')](function(_0x2eda7b){for(var _0x3173ad=0x0,_0x502071=0x0;_0x3173ad<_0x397e9a[_0x8e8d('0x24')];_0x3173ad++,_0x502071=0x0){var _0x104ea5=_0x397e9a[_0x3173ad];var _0x5c9637=[];var _0x11304e=[];if(_0x104ea5[_0x8e8d('0x30')]!==_0x8e8d('0x33')){_0x104ea5[_0x8e8d('0x34')]=[_0x104ea5['interval']];}else{_0x104ea5[_0x8e8d('0x34')]=_0x104ea5['IntervalId']?_[_0x8e8d('0x35')](_[_0x8e8d('0x36')](_0x2eda7b,{'IntervalId':_0x104ea5['IntervalId']}),_0x8e8d('0x30')):[];}_0x104ea5[_0x8e8d('0xe')]=_0x11f2fe[_0x8e8d('0xe')];_0x104ea5[_0x8e8d('0xb')]=_0x11f2fe[_0x8e8d('0xb')];if(_0x104ea5['type'])_0x104ea5[_0x8e8d('0x6')]=_0x104ea5[_0x8e8d('0x6')]['toLowerCase']();if(_0x11f2fe['type']===_0x8e8d('0x12')){if(_0x104ea5[_0x8e8d('0x1b')](_0x8e8d('0x37'))&&_0x104ea5[_0x8e8d('0x37')]&&_0x104ea5[_0x8e8d('0x37')]!=='--'){_0x5c9637['push']({'type':_0x104ea5['type'][_0x8e8d('0x38')](),'app':_0x8e8d('0x4'),'appdata':_0x8e8d('0x39')+_0x104ea5[_0x8e8d('0x37')],'context':_0x11f2fe[_0x8e8d('0xe')],'exten':_0x11f2fe['exten'],'priority':_0x104ea5[_0x8e8d('0x34')][_0x8e8d('0x24')]+_0x3825b9+_0x502071++,'VoiceExtensionId':_0x11f2fe['id']});}_0x5c9637[_0x8e8d('0xf')]({'type':_0x104ea5[_0x8e8d('0x6')][_0x8e8d('0x38')](),'app':'ExecIf','appdata':_0x8e8d('0x3a')+(_0x104ea5[_0x8e8d('0x3b')]?_0x8e8d('0x3c')+_0x104ea5[_0x8e8d('0x3b')]+')':_0x8e8d('0x3d')),'context':_0x11f2fe[_0x8e8d('0xe')],'exten':_0x11f2fe[_0x8e8d('0xb')],'priority':_0x104ea5[_0x8e8d('0x34')][_0x8e8d('0x24')]+_0x3825b9+_0x502071++,'VoiceExtensionId':_0x11f2fe['id']});}else{if(_0x104ea5[_0x8e8d('0x1b')](_0x8e8d('0x3e'))){if([_0x8e8d('0x3f'),'playback'][_0x8e8d('0x40')](_0x104ea5[_0x8e8d('0x41')][_0x8e8d('0x38')]())&&_0x104ea5[_0x8e8d('0x42')]!==_0x8e8d('0x43')){if(_0x104ea5[_0x8e8d('0x3e')]){_0x5c9637[_0x8e8d('0xf')]({'type':_0x104ea5[_0x8e8d('0x6')][_0x8e8d('0x38')](),'app':'ExecIf','appdata':_0x8e8d('0x44'),'context':_0x11f2fe[_0x8e8d('0xe')],'exten':_0x11f2fe[_0x8e8d('0xb')],'priority':_0x104ea5[_0x8e8d('0x34')][_0x8e8d('0x24')]+_0x3825b9+_0x502071++,'VoiceExtensionId':_0x11f2fe['id']});_0x5c9637[_0x8e8d('0xf')]({'type':_0x104ea5['type'][_0x8e8d('0x38')](),'app':_0x8e8d('0x4'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x11f2fe[_0x8e8d('0xe')],'exten':_0x11f2fe[_0x8e8d('0xb')],'priority':_0x104ea5[_0x8e8d('0x34')][_0x8e8d('0x24')]+_0x3825b9+_0x502071++,'VoiceExtensionId':_0x11f2fe['id']});}else{_0x5c9637[_0x8e8d('0xf')]({'type':_0x104ea5[_0x8e8d('0x6')]['toLowerCase'](),'app':_0x8e8d('0x45'),'appdata':_0x8e8d('0x46'),'context':_0x11f2fe[_0x8e8d('0xe')],'exten':_0x11f2fe[_0x8e8d('0xb')],'priority':_0x104ea5[_0x8e8d('0x34')][_0x8e8d('0x24')]+_0x3825b9+_0x502071++,'VoiceExtensionId':_0x11f2fe['id']});_0x5c9637[_0x8e8d('0xf')]({'type':_0x104ea5[_0x8e8d('0x6')]['toLowerCase'](),'app':_0x8e8d('0x4'),'appdata':_0x8e8d('0x47'),'context':_0x11f2fe[_0x8e8d('0xe')],'exten':_0x11f2fe[_0x8e8d('0xb')],'priority':_0x104ea5[_0x8e8d('0x34')][_0x8e8d('0x24')]+_0x3825b9+_0x502071++,'VoiceExtensionId':_0x11f2fe['id']});}}}}for(var _0x2b962f=0x0;_0x2b962f<_0x104ea5[_0x8e8d('0x34')]['length'];_0x2b962f++){var _0x2bd119=_0x3825b9+_0x104ea5[_0x8e8d('0x34')][_0x8e8d('0x24')];var _0xcfb9e=_0x2b962f===_0x104ea5[_0x8e8d('0x34')][_0x8e8d('0x24')]-0x1?_0x3825b9+_0x5c9637['length']+_0x11304e[_0x8e8d('0x24')]+0x2:_0x3825b9+_0x2b962f+0x1;_0x5c9637['splice'](_0x2b962f,0x0,{'type':_0x11f2fe[_0x8e8d('0x6')],'app':'GotoIfTime','appdata':_0x104ea5[_0x8e8d('0x34')][_0x2b962f]+'?'+_0x11f2fe['context']+_0x8e8d('0x48')+_0x2bd119+':'+_0x11f2fe['context']+',${EXTEN},'+_0xcfb9e,'exten':_0x11f2fe[_0x8e8d('0xb')],'context':_0x11f2fe[_0x8e8d('0xe')],'priority':_0x3825b9+_0x2b962f,'VoiceExtensionId':_0x11f2fe['id']});}if(_0x215482&&_0x104ea5['appType']===_0x8e8d('0x49'))_0x104ea5[_0x8e8d('0x4a')]=_0x38e888(_0x104ea5[_0x8e8d('0x4a')]);_0x104ea5[_0x8e8d('0x4b')]=_0x5c9637[_0x8e8d('0x24')]?_[_0x8e8d('0x4c')](_0x5c9637)[_0x8e8d('0x4b')]+0x1:_0x3825b9;_0x1eed05=_[_0x8e8d('0x4d')](_0x1eed05,_0x5c9637,[_0x104ea5],_0x11304e);_0x3825b9=_['last'](_0x1eed05)[_0x8e8d('0x4b')]+0x1;}return _0x1d5a8f(_0x1eed05);})[_0x8e8d('0x4e')](function(_0x18dbee){_0x5725ce(_0x18dbee);});});}return _0x18c30c['define']('VoiceExtension',attributes,{'tableName':_0x8e8d('0x4f'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x57f78e,_0x48d0cd){var _0x3278c8=this;var _0x2b6e32=_0x3278c8[_0x8e8d('0x6')]==='outbound'?_0x51e8e0(_0x3278c8):_0x5db796(_0x3278c8);return _0x1b7756(_0x3278c8,_0x57f78e,_['last'](_0x2b6e32)[_0x8e8d('0x4b')]+0x1,_0x48d0cd)[_0x8e8d('0x32')](function(_0x23fe7c){var _0x234204=_[_0x8e8d('0x4d')](_0x2b6e32,_0x23fe7c);_0x234204['push']({'type':_0x3278c8[_0x8e8d('0x6')],'app':_0x8e8d('0x50'),'exten':_0x3278c8[_0x8e8d('0xb')],'context':_0x3278c8[_0x8e8d('0xe')],'priority':_[_0x8e8d('0x4c')](_0x234204)[_0x8e8d('0x4b')]+0x1,'VoiceExtensionId':_0x3278c8['id']});return _0x234204;});}}});};
\ No newline at end of file
index 37fc65f..92091c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f05=['VoiceExtension,\x20%s,\x20%s','message','result','VoiceExtension','findAll','options','where','limit','include','map','attributes','model','info','GetVoiceExtension','debug','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','defaults','redis','localhost','./voiceExtension.socket','then','request\x20sent','stringify','error'];(function(_0x55d0fd,_0x1b1bdd){var _0x40ce6f=function(_0x282df9){while(--_0x282df9){_0x55d0fd['push'](_0x55d0fd['shift']());}};_0x40ce6f(++_0x1b1bdd);}(_0x7f05,0xdc));var _0x57f0=function(_0xdf033,_0x322f51){_0xdf033=_0xdf033-0x0;var _0x10e214=_0x7f05[_0xdf033];return _0x10e214;};'use strict';var _=require(_0x57f0('0x0'));var util=require(_0x57f0('0x1'));var moment=require(_0x57f0('0x2'));var BPromise=require('bluebird');var rs=require(_0x57f0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x57f0('0x4'))['db'];var utils=require(_0x57f0('0x5'));var logger=require('../../config/logger')(_0x57f0('0x6'));var config=require(_0x57f0('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x57f0('0x8')][_0x57f0('0x9')]({'port':0x232a});config['redis']=_[_0x57f0('0xa')](config[_0x57f0('0xb')],{'host':_0x57f0('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x57f0('0xd'))['register'](socket);function respondWithRpcPromise(_0x2b8ff5,_0x30ff14,_0x24c617){return new BPromise(function(_0xaa0ad7,_0x5a715b){return client['request'](_0x2b8ff5,_0x24c617)[_0x57f0('0xe')](function(_0x576d84){logger['info']('VoiceExtension,\x20%s,\x20%s',_0x30ff14,'request\x20sent');logger['debug']('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x30ff14,_0x57f0('0xf'),JSON[_0x57f0('0x10')](_0x576d84));if(_0x576d84[_0x57f0('0x11')]){if(_0x576d84[_0x57f0('0x11')]['code']===0x1f4){logger['error'](_0x57f0('0x12'),_0x30ff14,_0x576d84[_0x57f0('0x11')][_0x57f0('0x13')]);return _0x5a715b(_0x576d84[_0x57f0('0x11')][_0x57f0('0x13')]);}logger[_0x57f0('0x11')]('VoiceExtension,\x20%s,\x20%s',_0x30ff14,_0x576d84['error'][_0x57f0('0x13')]);return _0xaa0ad7(_0x576d84['error']['message']);}else{logger['info']('VoiceExtension,\x20%s,\x20%s',_0x30ff14,_0x57f0('0xf'));_0xaa0ad7(_0x576d84[_0x57f0('0x14')][_0x57f0('0x13')]);}})['catch'](function(_0x38e7be){logger[_0x57f0('0x11')](_0x57f0('0x12'),_0x30ff14,_0x38e7be);_0x5a715b(_0x38e7be);});});}exports['GetVoiceExtension']=function(_0x2e3d15){var _0xb04bf3=this;return new Promise(function(_0x5ab625,_0x589c18){return db[_0x57f0('0x15')][_0x57f0('0x16')]({'raw':_0x2e3d15['options']?_0x2e3d15[_0x57f0('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x2e3d15[_0x57f0('0x17')]?_0x2e3d15[_0x57f0('0x17')][_0x57f0('0x18')]||null:null,'attributes':_0x2e3d15[_0x57f0('0x17')]?_0x2e3d15['options']['attributes']||null:null,'limit':_0x2e3d15[_0x57f0('0x17')]?_0x2e3d15['options'][_0x57f0('0x19')]||null:null,'include':_0x2e3d15[_0x57f0('0x17')]?_0x2e3d15[_0x57f0('0x17')][_0x57f0('0x1a')]?_[_0x57f0('0x1b')](_0x2e3d15[_0x57f0('0x17')][_0x57f0('0x1a')],function(_0x941a03){return{'model':db[_0x941a03['model']],'as':_0x941a03['as'],'attributes':_0x941a03[_0x57f0('0x1c')],'include':_0x941a03['include']?_['map'](_0x941a03[_0x57f0('0x1a')],function(_0x58a529){return{'model':db[_0x58a529[_0x57f0('0x1d')]],'as':_0x58a529['as'],'attributes':_0x58a529['attributes'],'include':_0x58a529['include']?_[_0x57f0('0x1b')](_0x58a529[_0x57f0('0x1a')],function(_0x16c711){return{'model':db[_0x16c711[_0x57f0('0x1d')]],'as':_0x16c711['as'],'attributes':_0x16c711[_0x57f0('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x57f0('0xe')](function(_0xb3ef4e){logger[_0x57f0('0x1e')](_0x57f0('0x1f'),_0x2e3d15);logger[_0x57f0('0x20')]('GetVoiceExtension',_0x2e3d15,JSON[_0x57f0('0x10')](_0xb3ef4e));_0x5ab625(_0xb3ef4e);})[_0x57f0('0x21')](function(_0x316abe){logger[_0x57f0('0x11')](_0x57f0('0x1f'),_0x316abe[_0x57f0('0x13')],_0x2e3d15);_0x589c18(_0xb04bf3[_0x57f0('0x11')](0x1f4,_0x316abe[_0x57f0('0x13')]));});});};
\ No newline at end of file
+var _0x3c94=['../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','request','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','limit','include','map','attributes','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x28f5cf,_0x299353){var _0x471342=function(_0x7bc180){while(--_0x7bc180){_0x28f5cf['push'](_0x28f5cf['shift']());}};_0x471342(++_0x299353);}(_0x3c94,0xcd));var _0x43c9=function(_0x4da6ba,_0x554ea7){_0x4da6ba=_0x4da6ba-0x0;var _0x4b8317=_0x3c94[_0x4da6ba];return _0x4b8317;};'use strict';var _=require(_0x43c9('0x0'));var util=require(_0x43c9('0x1'));var moment=require(_0x43c9('0x2'));var BPromise=require(_0x43c9('0x3'));var rs=require(_0x43c9('0x4'));var fs=require('fs');var Redis=require(_0x43c9('0x5'));var db=require(_0x43c9('0x6'))['db'];var utils=require(_0x43c9('0x7'));var logger=require(_0x43c9('0x8'))(_0x43c9('0x9'));var config=require(_0x43c9('0xa'));var jayson=require(_0x43c9('0xb'));var client=jayson['client'][_0x43c9('0xc')]({'port':0x232a});config[_0x43c9('0xd')]=_[_0x43c9('0xe')](config[_0x43c9('0xd')],{'host':_0x43c9('0xf'),'port':0x18eb});var socket=require(_0x43c9('0x10'))(new Redis(config[_0x43c9('0xd')]));require(_0x43c9('0x11'))[_0x43c9('0x12')](socket);function respondWithRpcPromise(_0x4b113f,_0x31d997,_0x18a5c9){return new BPromise(function(_0x34bb65,_0x3b21f5){return client[_0x43c9('0x13')](_0x4b113f,_0x18a5c9)[_0x43c9('0x14')](function(_0x690bde){logger[_0x43c9('0x15')](_0x43c9('0x16'),_0x31d997,_0x43c9('0x17'));logger[_0x43c9('0x18')](_0x43c9('0x19'),_0x31d997,_0x43c9('0x17'),JSON[_0x43c9('0x1a')](_0x690bde));if(_0x690bde[_0x43c9('0x1b')]){if(_0x690bde[_0x43c9('0x1b')][_0x43c9('0x1c')]===0x1f4){logger['error'](_0x43c9('0x16'),_0x31d997,_0x690bde[_0x43c9('0x1b')][_0x43c9('0x1d')]);return _0x3b21f5(_0x690bde[_0x43c9('0x1b')][_0x43c9('0x1d')]);}logger['error']('VoiceExtension,\x20%s,\x20%s',_0x31d997,_0x690bde[_0x43c9('0x1b')][_0x43c9('0x1d')]);return _0x34bb65(_0x690bde[_0x43c9('0x1b')][_0x43c9('0x1d')]);}else{logger['info'](_0x43c9('0x16'),_0x31d997,_0x43c9('0x17'));_0x34bb65(_0x690bde[_0x43c9('0x1e')][_0x43c9('0x1d')]);}})[_0x43c9('0x1f')](function(_0x2ab239){logger[_0x43c9('0x1b')](_0x43c9('0x16'),_0x31d997,_0x2ab239);_0x3b21f5(_0x2ab239);});});}exports[_0x43c9('0x20')]=function(_0x2a7b78){var _0x3f841a=this;return new Promise(function(_0x4847b2,_0x39c6f1){return db[_0x43c9('0x21')][_0x43c9('0x22')]({'raw':_0x2a7b78['options']?_0x2a7b78[_0x43c9('0x23')][_0x43c9('0x24')]===undefined?!![]:![]:!![],'where':_0x2a7b78[_0x43c9('0x23')]?_0x2a7b78['options'][_0x43c9('0x25')]||null:null,'attributes':_0x2a7b78[_0x43c9('0x23')]?_0x2a7b78[_0x43c9('0x23')]['attributes']||null:null,'limit':_0x2a7b78['options']?_0x2a7b78[_0x43c9('0x23')][_0x43c9('0x26')]||null:null,'include':_0x2a7b78[_0x43c9('0x23')]?_0x2a7b78['options'][_0x43c9('0x27')]?_[_0x43c9('0x28')](_0x2a7b78[_0x43c9('0x23')][_0x43c9('0x27')],function(_0x2c69af){return{'model':db[_0x2c69af['model']],'as':_0x2c69af['as'],'attributes':_0x2c69af[_0x43c9('0x29')],'include':_0x2c69af[_0x43c9('0x27')]?_[_0x43c9('0x28')](_0x2c69af[_0x43c9('0x27')],function(_0x4633cc){return{'model':db[_0x4633cc[_0x43c9('0x2a')]],'as':_0x4633cc['as'],'attributes':_0x4633cc[_0x43c9('0x29')],'include':_0x4633cc[_0x43c9('0x27')]?_[_0x43c9('0x28')](_0x4633cc[_0x43c9('0x27')],function(_0x4eb970){return{'model':db[_0x4eb970[_0x43c9('0x2a')]],'as':_0x4eb970['as'],'attributes':_0x4eb970[_0x43c9('0x29')]};}):[]};}):[]};}):[]:[]})[_0x43c9('0x14')](function(_0x519e2c){logger[_0x43c9('0x15')](_0x43c9('0x20'),_0x2a7b78);logger['debug'](_0x43c9('0x20'),_0x2a7b78,JSON['stringify'](_0x519e2c));_0x4847b2(_0x519e2c);})[_0x43c9('0x1f')](function(_0x33ee11){logger[_0x43c9('0x1b')](_0x43c9('0x20'),_0x33ee11['message'],_0x2a7b78);_0x39c6f1(_0x3f841a[_0x43c9('0x1b')](0x1f4,_0x33ee11[_0x43c9('0x1d')]));});});};
\ No newline at end of file
index 5658c78..dce2caf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['./voiceExtension.events','save','update','emit','removeListener','register','voiceExtension:'];(function(_0x401d08,_0x3afbb4){var _0x3a7297=function(_0x2f83a9){while(--_0x2f83a9){_0x401d08['push'](_0x401d08['shift']());}};_0x3a7297(++_0x3afbb4);}(_0x5fc3,0xa8));var _0x35fc=function(_0x34bd34,_0x1444f7){_0x34bd34=_0x34bd34-0x0;var _0x4e36d6=_0x5fc3[_0x34bd34];return _0x4e36d6;};'use strict';var VoiceExtensionEvents=require(_0x35fc('0x0'));var events=[_0x35fc('0x1'),'remove',_0x35fc('0x2')];function createListener(_0x2ac6da,_0x196bc2){return function(_0x91d024){_0x196bc2[_0x35fc('0x3')](_0x2ac6da,_0x91d024);};}function removeListener(_0x5e75e6,_0x2d1404){return function(){VoiceExtensionEvents[_0x35fc('0x4')](_0x5e75e6,_0x2d1404);};}exports[_0x35fc('0x5')]=function(_0x5b85ad){for(var _0x5754be=0x0,_0x19a0d1=events['length'];_0x5754be<_0x19a0d1;_0x5754be++){var _0x16e153=events[_0x5754be];var _0x27524f=createListener(_0x35fc('0x6')+_0x16e153,_0x5b85ad);VoiceExtensionEvents['on'](_0x16e153,_0x27524f);}};
\ No newline at end of file
+var _0x1261=['save','remove','update','emit','removeListener','voiceExtension:'];(function(_0x18f669,_0x4fc0d3){var _0x592fe9=function(_0x15e19a){while(--_0x15e19a){_0x18f669['push'](_0x18f669['shift']());}};_0x592fe9(++_0x4fc0d3);}(_0x1261,0x144));var _0x1126=function(_0x19f183,_0x540981){_0x19f183=_0x19f183-0x0;var _0x317275=_0x1261[_0x19f183];return _0x317275;};'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 59e25bf..a4a6e86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5af=['show','create','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','/:id'];(function(_0x470a20,_0x19fda7){var _0x2ff7b=function(_0x23d791){while(--_0x23d791){_0x470a20['push'](_0x470a20['shift']());}};_0x2ff7b(++_0x19fda7);}(_0xe5af,0x9c));var _0xfe5a=function(_0x5457a4,_0x258eda){_0x5457a4=_0x5457a4-0x0;var _0x3ae8eb=_0xe5af[_0x5457a4];return _0x3ae8eb;};'use strict';var multer=require('multer');var util=require(_0xfe5a('0x0'));var path=require(_0xfe5a('0x1'));var timeout=require('connect-timeout');var express=require(_0xfe5a('0x2'));var router=express[_0xfe5a('0x3')]();var fs_extra=require(_0xfe5a('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xfe5a('0x5'));var config=require('../../config/environment');var controller=require('./voiceMail.controller');router[_0xfe5a('0x6')]('/',auth[_0xfe5a('0x7')](),controller['index']);router['get'](_0xfe5a('0x8'),auth[_0xfe5a('0x7')](),controller[_0xfe5a('0x9')]);router[_0xfe5a('0x6')]('/:id/messages',auth[_0xfe5a('0x7')](),controller['getMessages']);router['post']('/',auth[_0xfe5a('0x7')](),controller[_0xfe5a('0xa')]);router['put'](_0xfe5a('0x8'),auth[_0xfe5a('0x7')](),controller[_0xfe5a('0xb')]);router[_0xfe5a('0xc')](_0xfe5a('0x8'),auth['isAuthenticated'](),controller[_0xfe5a('0xd')]);module[_0xfe5a('0xe')]=router;
\ No newline at end of file
+var _0xeda8=['show','/:id/messages','create','put','/:id','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','isAuthenticated','index'];(function(_0x5350f8,_0x55c29b){var _0x5a4a65=function(_0x5acb92){while(--_0x5acb92){_0x5350f8['push'](_0x5350f8['shift']());}};_0x5a4a65(++_0x55c29b);}(_0xeda8,0x104));var _0x8eda=function(_0x4612d5,_0x86a8a8){_0x4612d5=_0x4612d5-0x0;var _0x841ca0=_0xeda8[_0x4612d5];return _0x841ca0;};'use strict';var multer=require(_0x8eda('0x0'));var util=require(_0x8eda('0x1'));var path=require('path');var timeout=require(_0x8eda('0x2'));var express=require(_0x8eda('0x3'));var router=express[_0x8eda('0x4')]();var fs_extra=require(_0x8eda('0x5'));var auth=require(_0x8eda('0x6'));var interaction=require(_0x8eda('0x7'));var config=require(_0x8eda('0x8'));var controller=require(_0x8eda('0x9'));router[_0x8eda('0xa')]('/',auth[_0x8eda('0xb')](),controller[_0x8eda('0xc')]);router[_0x8eda('0xa')]('/:id',auth[_0x8eda('0xb')](),controller[_0x8eda('0xd')]);router[_0x8eda('0xa')](_0x8eda('0xe'),auth['isAuthenticated'](),controller['getMessages']);router['post']('/',auth['isAuthenticated'](),controller[_0x8eda('0xf')]);router[_0x8eda('0x10')](_0x8eda('0x11'),auth['isAuthenticated'](),controller[_0x8eda('0x12')]);router['delete'](_0x8eda('0x11'),auth[_0x8eda('0xb')](),controller[_0x8eda('0x13')]);module[_0x8eda('0x14')]=router;
\ No newline at end of file
index dd0d1c8..afae7e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x554d=['yes','VIRTUAL','fullname','\x20-\x20','mailbox','exports','STRING','contest_mailbox','email','string','trim','central','ENUM'];(function(_0x4fadf8,_0x1a95ca){var _0x478c11=function(_0x3915fe){while(--_0x3915fe){_0x4fadf8['push'](_0x4fadf8['shift']());}};_0x478c11(++_0x1a95ca);}(_0x554d,0xef));var _0xd554=function(_0x2c0ecd,_0x12e00){_0x2c0ecd=_0x2c0ecd-0x0;var _0x25c8e5=_0x554d[_0x2c0ecd];return _0x25c8e5;};'use strict';var Sequelize=require('sequelize');module[_0xd554('0x0')]={'customer_id':{'type':Sequelize[_0xd554('0x1')]},'context':{'type':Sequelize['STRING'],'defaultValue':'from-voicemail','unique':_0xd554('0x2')},'mailbox':{'type':Sequelize[_0xd554('0x1')],'defaultValue':'','allowNull':![],'unique':_0xd554('0x2')},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0xd554('0x1')]},'email':{'type':Sequelize[_0xd554('0x1')],'validate':{'isEmail':!![]},'set':function(_0x5e8979){this['setDataValue'](_0xd554('0x3'),typeof _0x5e8979===_0xd554('0x4')&&_0x5e8979[_0xd554('0x5')]()?_0x5e8979[_0xd554('0x5')]():null);}},'pager':{'type':Sequelize[_0xd554('0x1')]},'tz':{'type':Sequelize[_0xd554('0x1')],'defaultValue':_0xd554('0x6')},'attach':{'type':Sequelize[_0xd554('0x7')](_0xd554('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize['ENUM'](_0xd554('0x8'),'no'),'defaultValue':_0xd554('0x8'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0xd554('0x1')]},'review':{'type':Sequelize['ENUM'](_0xd554('0x8'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM'](_0xd554('0x8'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xd554('0x7')](_0xd554('0x8'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xd554('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xd554('0x7')](_0xd554('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xd554('0x7')](_0xd554('0x8'),'no'),'defaultValue':_0xd554('0x8'),'allowNull':![]},'forcename':{'type':Sequelize['ENUM'](_0xd554('0x8'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0xd554('0x7')](_0xd554('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':'TIMESTAMP'},'emailsubject':{'type':Sequelize[_0xd554('0x1')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xd554('0x9')],'get':function(){return this['getDataValue'](_0xd554('0xa'))+_0xd554('0xb')+this['getDataValue'](_0xd554('0xc'));}}};
\ No newline at end of file
+var _0x2d1c=['trim','yes','ENUM','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','\x20-\x20','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue','email','string'];(function(_0x313927,_0x2b3a6d){var _0x545b28=function(_0x1be96e){while(--_0x1be96e){_0x313927['push'](_0x313927['shift']());}};_0x545b28(++_0x2b3a6d);}(_0x2d1c,0x188));var _0xc2d1=function(_0x4bda6e,_0x247877){_0x4bda6e=_0x4bda6e-0x0;var _0xb08cc9=_0x2d1c[_0x4bda6e];return _0xb08cc9;};'use strict';var Sequelize=require(_0xc2d1('0x0'));module[_0xc2d1('0x1')]={'customer_id':{'type':Sequelize[_0xc2d1('0x2')]},'context':{'type':Sequelize['STRING'],'defaultValue':_0xc2d1('0x3'),'unique':_0xc2d1('0x4')},'mailbox':{'type':Sequelize[_0xc2d1('0x2')],'defaultValue':'','allowNull':![],'unique':_0xc2d1('0x4')},'password':{'type':Sequelize[_0xc2d1('0x2')]},'fullname':{'type':Sequelize[_0xc2d1('0x2')]},'email':{'type':Sequelize[_0xc2d1('0x2')],'validate':{'isEmail':!![]},'set':function(_0x8e2b38){this[_0xc2d1('0x5')](_0xc2d1('0x6'),typeof _0x8e2b38===_0xc2d1('0x7')&&_0x8e2b38['trim']()?_0x8e2b38[_0xc2d1('0x8')]():null);}},'pager':{'type':Sequelize['STRING']},'tz':{'type':Sequelize[_0xc2d1('0x2')],'defaultValue':'central'},'attach':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0xc2d1('0x9'),'allowNull':![]},'saycid':{'type':Sequelize['ENUM'](_0xc2d1('0x9'),'no'),'defaultValue':_0xc2d1('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0xc2d1('0x2')]},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize[_0xc2d1('0xa')](_0xc2d1('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xc2d1('0xa')](_0xc2d1('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM'](_0xc2d1('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize['ENUM'](_0xc2d1('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xc2d1('0xa')](_0xc2d1('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM'](_0xc2d1('0x9'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xc2d1('0xa')](_0xc2d1('0x9'),'no'),'defaultValue':_0xc2d1('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0xc2d1('0xa')](_0xc2d1('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0xc2d1('0xa')](_0xc2d1('0x9'),'no'),'defaultValue':_0xc2d1('0x9'),'allowNull':![]},'stamp':{'type':_0xc2d1('0xb')},'emailsubject':{'type':Sequelize[_0xc2d1('0x2')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize[_0xc2d1('0xc')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xc2d1('0xc')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xc2d1('0xd')],'get':function(){return this[_0xc2d1('0xe')]('fullname')+_0xc2d1('0xf')+this['getDataValue']('mailbox');}}};
\ No newline at end of file
index 63e3d19..2717978 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb5=['error','stack','name','send','index','map','VoiceMail','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getMessages','findOne','VoiceMailMessage','hasOwnProperty','mailbox','findAndCountAll','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','destroy','get','Voicemails'];(function(_0x1dd78b,_0x213fd9){var _0x2d9bf6=function(_0x2c749a){while(--_0x2c749a){_0x1dd78b['push'](_0x1dd78b['shift']());}};_0x2d9bf6(++_0x213fd9);}(_0x0bb5,0x148));var _0x50bb=function(_0x182283,_0x2d9994){_0x182283=_0x182283-0x0;var _0x1b34a6=_0x0bb5[_0x182283];return _0x1b34a6;};'use strict';var emlformat=require(_0x50bb('0x0'));var rimraf=require(_0x50bb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x50bb('0x2'));var moment=require(_0x50bb('0x3'));var BPromise=require(_0x50bb('0x4'));var Mustache=require(_0x50bb('0x5'));var util=require(_0x50bb('0x6'));var path=require(_0x50bb('0x7'));var sox=require(_0x50bb('0x8'));var csv=require(_0x50bb('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x50bb('0xa'));var squel=require(_0x50bb('0xb'));var crypto=require(_0x50bb('0xc'));var jsforce=require(_0x50bb('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x50bb('0xe'));var Papa=require(_0x50bb('0xf'));var Redis=require(_0x50bb('0x10'));var authService=require(_0x50bb('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x50bb('0x12'));var hardwareService=require(_0x50bb('0x13'));var logger=require(_0x50bb('0x14'))(_0x50bb('0x15'));var utils=require(_0x50bb('0x16'));var config=require(_0x50bb('0x17'));var licenseUtil=require(_0x50bb('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x226370,_0x58837d){_0x58837d=_0x58837d||0xcc;return function(_0x283f04){if(_0x283f04){return _0x226370[_0x50bb('0x19')](_0x58837d);}return _0x226370[_0x50bb('0x1a')](_0x58837d)['end']();};}function respondWithResult(_0x17007f,_0x309986){_0x309986=_0x309986||0xc8;return function(_0x3094f2){if(_0x3094f2){return _0x17007f['status'](_0x309986)[_0x50bb('0x1b')](_0x3094f2);}};}function respondWithFilteredResult(_0x5e8478,_0x21befa){return function(_0x3e1a51){if(_0x3e1a51){var _0x253073=typeof _0x21befa[_0x50bb('0x1c')]===_0x50bb('0x1d')&&typeof _0x21befa['limit']===_0x50bb('0x1d');var _0x174065=_0x3e1a51['count'];var _0x24ba19=_0x253073?0x0:_0x21befa['offset'];var _0x301f61=_0x253073?_0x3e1a51[_0x50bb('0x1e')]:_0x21befa['offset']+_0x21befa['limit'];var _0x43465b;if(_0x301f61>=_0x174065){_0x301f61=_0x174065;_0x43465b=0xc8;}else{_0x43465b=0xce;}_0x5e8478[_0x50bb('0x1a')](_0x43465b);return _0x5e8478[_0x50bb('0x1f')](_0x50bb('0x20'),_0x24ba19+'-'+_0x301f61+'/'+_0x174065)['json'](_0x3e1a51);}return null;};}function patchUpdates(_0x19dc5d){return function(_0x32bfc3){try{jsonpatch[_0x50bb('0x21')](_0x32bfc3,_0x19dc5d,!![]);}catch(_0x597e95){return BPromise[_0x50bb('0x22')](_0x597e95);}return _0x32bfc3[_0x50bb('0x23')]();};}function saveUpdates(_0x1344ec,_0x4825f8){return function(_0x1dbba2){if(_0x1dbba2){return _0x1dbba2['update'](_0x1344ec)[_0x50bb('0x24')](function(_0x3391da){return _0x3391da;});}return null;};}function removeEntity(_0x1a2a0b,_0x2ee87a){return function(_0x846311){if(_0x846311){return _0x846311[_0x50bb('0x25')]()['then'](function(){var _0xad17ac=_0x846311[_0x50bb('0x26')]({'plain':!![]});var _0x284a76=_0x50bb('0x27');return db['UserProfileResource'][_0x50bb('0x25')]({'where':{'type':_0x284a76,'resourceId':_0xad17ac['id']}})['then'](function(){return _0x846311;});})['then'](function(){_0x1a2a0b[_0x50bb('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5cfe4b,_0x41fd89){return function(_0x12ee2c){if(!_0x12ee2c){_0x5cfe4b[_0x50bb('0x19')](0x194);}return _0x12ee2c;};}function handleError(_0x1b74f9,_0x17c158){_0x17c158=_0x17c158||0x1f4;return function(_0x269479){logger[_0x50bb('0x28')](_0x269479[_0x50bb('0x29')]);if(_0x269479['name']){delete _0x269479[_0x50bb('0x2a')];}_0x1b74f9[_0x50bb('0x1a')](_0x17c158)[_0x50bb('0x2b')](_0x269479);};}exports[_0x50bb('0x2c')]=function(_0x560b07,_0x13dc3c){var _0x1a62fb={},_0xc38da5={},_0xb3c3ba={'count':0x0,'rows':[]};var _0x3fd5f6=_[_0x50bb('0x2d')](db[_0x50bb('0x2e')][_0x50bb('0x2f')],function(_0x5cfdd5){return{'name':_0x5cfdd5[_0x50bb('0x30')],'type':_0x5cfdd5[_0x50bb('0x31')][_0x50bb('0x32')]};});_0xc38da5['model']=_[_0x50bb('0x2d')](_0x3fd5f6,_0x50bb('0x2a'));_0xc38da5[_0x50bb('0x33')]=_[_0x50bb('0x34')](_0x560b07[_0x50bb('0x33')]);_0xc38da5[_0x50bb('0x35')]=_[_0x50bb('0x36')](_0xc38da5[_0x50bb('0x37')],_0xc38da5[_0x50bb('0x33')]);_0x1a62fb[_0x50bb('0x38')]=_[_0x50bb('0x36')](_0xc38da5['model'],qs[_0x50bb('0x39')](_0x560b07[_0x50bb('0x33')][_0x50bb('0x39')]));_0x1a62fb[_0x50bb('0x38')]=_0x1a62fb[_0x50bb('0x38')][_0x50bb('0x3a')]?_0x1a62fb['attributes']:_0xc38da5['model'];if(!_0x560b07[_0x50bb('0x33')]['hasOwnProperty'](_0x50bb('0x3b'))){_0x1a62fb[_0x50bb('0x3c')]=qs[_0x50bb('0x3c')](_0x560b07[_0x50bb('0x33')][_0x50bb('0x3c')]);_0x1a62fb['offset']=qs[_0x50bb('0x1c')](_0x560b07['query'][_0x50bb('0x1c')]);}_0x1a62fb[_0x50bb('0x3d')]=qs[_0x50bb('0x3e')](_0x560b07['query']['sort']);_0x1a62fb[_0x50bb('0x3f')]=qs[_0x50bb('0x35')](_[_0x50bb('0x40')](_0x560b07[_0x50bb('0x33')],_0xc38da5['filters']),_0x3fd5f6);if(_0x560b07[_0x50bb('0x33')]['filter']){_0x1a62fb['where']=_[_0x50bb('0x41')](_0x1a62fb['where'],{'$or':_[_0x50bb('0x2d')](_0x3fd5f6,function(_0x3d94b8){if(_0x3d94b8[_0x50bb('0x31')]!==_0x50bb('0x42')){var _0x3a9fe4={};_0x3a9fe4[_0x3d94b8[_0x50bb('0x2a')]]={'$like':'%'+_0x560b07[_0x50bb('0x33')][_0x50bb('0x43')]+'%'};return _0x3a9fe4;}})});}_0x1a62fb=_[_0x50bb('0x41')]({},_0x1a62fb,_0x560b07[_0x50bb('0x44')]);var _0x594f16={'where':_0x1a62fb['where']};return db[_0x50bb('0x2e')][_0x50bb('0x1e')](_0x594f16)[_0x50bb('0x24')](function(_0x1d929d){_0xb3c3ba['count']=_0x1d929d;if(_0x560b07[_0x50bb('0x33')]['includeAll']){_0x1a62fb[_0x50bb('0x45')]=[{'all':!![]}];}return db[_0x50bb('0x2e')][_0x50bb('0x46')](_0x1a62fb);})[_0x50bb('0x24')](function(_0x1c438b){_0xb3c3ba[_0x50bb('0x47')]=_0x1c438b;return _0xb3c3ba;})[_0x50bb('0x24')](respondWithFilteredResult(_0x13dc3c,_0x1a62fb))[_0x50bb('0x48')](handleError(_0x13dc3c,null));};exports[_0x50bb('0x49')]=function(_0x46c1c3,_0x349474){var _0x24e375={'raw':!![],'where':{'id':_0x46c1c3[_0x50bb('0x4a')]['id']}},_0x85b0ff={};_0x85b0ff[_0x50bb('0x37')]=_[_0x50bb('0x34')](db['VoiceMail'][_0x50bb('0x2f')]);_0x85b0ff['query']=_[_0x50bb('0x34')](_0x46c1c3[_0x50bb('0x33')]);_0x85b0ff[_0x50bb('0x35')]=_[_0x50bb('0x36')](_0x85b0ff[_0x50bb('0x37')],_0x85b0ff[_0x50bb('0x33')]);_0x24e375[_0x50bb('0x38')]=_[_0x50bb('0x36')](_0x85b0ff[_0x50bb('0x37')],qs[_0x50bb('0x39')](_0x46c1c3[_0x50bb('0x33')][_0x50bb('0x39')]));_0x24e375[_0x50bb('0x38')]=_0x24e375[_0x50bb('0x38')]['length']?_0x24e375[_0x50bb('0x38')]:_0x85b0ff['model'];if(_0x46c1c3[_0x50bb('0x33')][_0x50bb('0x4b')]){_0x24e375[_0x50bb('0x45')]=[{'all':!![]}];}_0x24e375=_[_0x50bb('0x41')]({},_0x24e375,_0x46c1c3[_0x50bb('0x44')]);return db[_0x50bb('0x2e')][_0x50bb('0x4c')](_0x24e375)[_0x50bb('0x24')](handleEntityNotFound(_0x349474,null))['then'](respondWithResult(_0x349474,null))[_0x50bb('0x48')](handleError(_0x349474,null));};exports[_0x50bb('0x4d')]=function(_0xf52a22,_0x13afe2){return db[_0x50bb('0x2e')]['create'](_0xf52a22[_0x50bb('0x4e')],{})[_0x50bb('0x24')](function(_0x2a411d){var _0x154ff8=_0xf52a22[_0x50bb('0x4f')]['get']({'plain':!![]});if(!_0x154ff8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x154ff8[_0x50bb('0x50')]==='user'){var _0x357d08=_0x2a411d['get']({'plain':!![]});var _0x4316e4=_0x50bb('0x27');return db[_0x50bb('0x51')]['find']({'where':{'name':_0x4316e4,'userProfileId':_0x154ff8[_0x50bb('0x52')]},'raw':!![]})[_0x50bb('0x24')](function(_0x588dfe){if(_0x588dfe&&_0x588dfe[_0x50bb('0x53')]===0x0){return db[_0x50bb('0x54')][_0x50bb('0x4d')]({'name':_0x357d08[_0x50bb('0x2a')],'resourceId':_0x357d08['id'],'type':_0x588dfe['name'],'sectionId':_0x588dfe['id']},{})[_0x50bb('0x24')](function(){return _0x2a411d;});}else{return _0x2a411d;}})[_0x50bb('0x48')](function(_0x2e0032){logger[_0x50bb('0x28')](_0x50bb('0x55'),_0x2e0032);throw _0x2e0032;});}return _0x2a411d;})['then'](respondWithResult(_0x13afe2,0xc9))[_0x50bb('0x48')](handleError(_0x13afe2,null));};exports['update']=function(_0x38a775,_0x50216f){if(_0x38a775['body']['id']){delete _0x38a775[_0x50bb('0x4e')]['id'];}return db['VoiceMail']['find']({'where':{'id':_0x38a775[_0x50bb('0x4a')]['id']}})[_0x50bb('0x24')](handleEntityNotFound(_0x50216f,null))[_0x50bb('0x24')](saveUpdates(_0x38a775[_0x50bb('0x4e')],null))[_0x50bb('0x24')](respondWithResult(_0x50216f,null))[_0x50bb('0x48')](handleError(_0x50216f,null));};exports[_0x50bb('0x25')]=function(_0x1408fa,_0x57d749){return db['VoiceMail'][_0x50bb('0x4c')]({'where':{'id':_0x1408fa[_0x50bb('0x4a')]['id']}})[_0x50bb('0x24')](handleEntityNotFound(_0x57d749,null))[_0x50bb('0x24')](removeEntity(_0x57d749,null))[_0x50bb('0x48')](handleError(_0x57d749,null));};exports[_0x50bb('0x56')]=function(_0x287bc7,_0x4bf426,_0x3be83b){return db[_0x50bb('0x2e')][_0x50bb('0x57')]({'where':{'id':_0x287bc7[_0x50bb('0x4a')]['id']}})[_0x50bb('0x24')](handleEntityNotFound(_0x4bf426,null))['then'](function(_0x33ebe6){var _0x1d8b85;var _0x1da5cd={},_0x507f26={};_0x507f26[_0x50bb('0x37')]=_['keys'](db[_0x50bb('0x58')]['rawAttributes']);_0x507f26['query']=_[_0x50bb('0x34')](_0x287bc7[_0x50bb('0x33')]);_0x507f26[_0x50bb('0x35')]=_[_0x50bb('0x36')](_0x507f26[_0x50bb('0x37')],_0x507f26[_0x50bb('0x33')]);_0x1da5cd[_0x50bb('0x38')]=_[_0x50bb('0x36')](_0x507f26[_0x50bb('0x37')],qs[_0x50bb('0x39')](_0x287bc7[_0x50bb('0x33')]['fields']));_0x1da5cd[_0x50bb('0x38')]=_0x1da5cd['attributes'][_0x50bb('0x3a')]?_0x1da5cd[_0x50bb('0x38')]:_0x507f26['model'];if(!_0x287bc7[_0x50bb('0x33')][_0x50bb('0x59')](_0x50bb('0x3b'))){_0x1da5cd[_0x50bb('0x3c')]=qs[_0x50bb('0x3c')](_0x287bc7[_0x50bb('0x33')][_0x50bb('0x3c')]);_0x1da5cd[_0x50bb('0x1c')]=qs['offset'](_0x287bc7[_0x50bb('0x33')][_0x50bb('0x1c')]);}_0x1da5cd[_0x50bb('0x3d')]=qs['sort'](_0x287bc7[_0x50bb('0x33')][_0x50bb('0x3e')]);_0x1da5cd[_0x50bb('0x3f')]=qs[_0x50bb('0x35')](_[_0x50bb('0x40')](_0x287bc7[_0x50bb('0x33')],_0x507f26['filters']));if(_0x287bc7[_0x50bb('0x33')][_0x50bb('0x43')]){_0x1da5cd[_0x50bb('0x3f')]=_[_0x50bb('0x41')](_0x1da5cd[_0x50bb('0x3f')],{'$or':_[_0x50bb('0x2d')](_0x1da5cd['attributes'],function(_0x40257b){var _0xa85833={};_0xa85833[_0x40257b]={'$like':'%'+_0x287bc7[_0x50bb('0x33')][_0x50bb('0x43')]+'%'};return _0xa85833;})});}_0x1da5cd[_0x50bb('0x3f')]=_[_0x50bb('0x41')](_0x1da5cd[_0x50bb('0x3f')],{'mailboxuser':_0x33ebe6[_0x50bb('0x5a')]});_0x1da5cd=_[_0x50bb('0x41')]({},_0x1da5cd,_0x287bc7['options']);return db[_0x50bb('0x58')][_0x50bb('0x5b')](_0x1da5cd)[_0x50bb('0x24')](respondWithFilteredResult(_0x4bf426,_0x1da5cd));})[_0x50bb('0x48')](handleError(_0x4bf426,null));};
\ No newline at end of file
+var _0xe706=['../../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','get','Voicemails','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','options','includeAll','VoiceMail','findAll','catch','keys','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','params','destroy','getMessages','findOne','VoiceMailMessage','mailbox','findAndCountAll','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'];(function(_0x1f3c55,_0x26adcb){var _0x75368a=function(_0x1054e9){while(--_0x1054e9){_0x1f3c55['push'](_0x1f3c55['shift']());}};_0x75368a(++_0x26adcb);}(_0xe706,0xa3));var _0x6e70=function(_0x133fc0,_0x1edda8){_0x133fc0=_0x133fc0-0x0;var _0x4ce619=_0xe706[_0x133fc0];return _0x4ce619;};'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(){var _0x41e352=_0x538b9c[_0x6e70('0x2a')]({'plain':!![]});var _0x51d292=_0x6e70('0x2b');return db[_0x6e70('0x2c')]['destroy']({'where':{'type':_0x51d292,'resourceId':_0x41e352['id']}})[_0x6e70('0x29')](function(){return _0x538b9c;});})[_0x6e70('0x29')](function(){_0x50da2c[_0x6e70('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x54a5fe,_0x2c4d37){return function(_0x3af17f){if(!_0x3af17f){_0x54a5fe[_0x6e70('0x1d')](0x194);}return _0x3af17f;};}function handleError(_0x114344,_0x43fee0){_0x43fee0=_0x43fee0||0x1f4;return function(_0x5d772a){logger[_0x6e70('0x2d')](_0x5d772a[_0x6e70('0x2e')]);if(_0x5d772a[_0x6e70('0x2f')]){delete _0x5d772a[_0x6e70('0x2f')];}_0x114344[_0x6e70('0x1e')](_0x43fee0)[_0x6e70('0x30')](_0x5d772a);};}exports[_0x6e70('0x31')]=function(_0x24114a,_0x3a0821){var _0x3a5d30={},_0x4b1229={},_0x1b27d8={'count':0x0,'rows':[]};var _0x50d60b=_[_0x6e70('0x32')](db['VoiceMail'][_0x6e70('0x33')],function(_0x2722e8){return{'name':_0x2722e8[_0x6e70('0x34')],'type':_0x2722e8['type'][_0x6e70('0x35')]};});_0x4b1229[_0x6e70('0x36')]=_['map'](_0x50d60b,_0x6e70('0x2f'));_0x4b1229[_0x6e70('0x37')]=_['keys'](_0x24114a[_0x6e70('0x37')]);_0x4b1229[_0x6e70('0x38')]=_[_0x6e70('0x39')](_0x4b1229[_0x6e70('0x36')],_0x4b1229[_0x6e70('0x37')]);_0x3a5d30[_0x6e70('0x3a')]=_[_0x6e70('0x39')](_0x4b1229[_0x6e70('0x36')],qs[_0x6e70('0x3b')](_0x24114a[_0x6e70('0x37')]['fields']));_0x3a5d30[_0x6e70('0x3a')]=_0x3a5d30['attributes'][_0x6e70('0x3c')]?_0x3a5d30[_0x6e70('0x3a')]:_0x4b1229[_0x6e70('0x36')];if(!_0x24114a[_0x6e70('0x37')][_0x6e70('0x3d')](_0x6e70('0x3e'))){_0x3a5d30[_0x6e70('0x20')]=qs[_0x6e70('0x20')](_0x24114a[_0x6e70('0x37')][_0x6e70('0x20')]);_0x3a5d30[_0x6e70('0x22')]=qs[_0x6e70('0x22')](_0x24114a[_0x6e70('0x37')]['offset']);}_0x3a5d30['order']=qs['sort'](_0x24114a[_0x6e70('0x37')][_0x6e70('0x3f')]);_0x3a5d30[_0x6e70('0x40')]=qs[_0x6e70('0x38')](_[_0x6e70('0x41')](_0x24114a[_0x6e70('0x37')],_0x4b1229['filters']),_0x50d60b);if(_0x24114a[_0x6e70('0x37')][_0x6e70('0x42')]){_0x3a5d30[_0x6e70('0x40')]=_[_0x6e70('0x43')](_0x3a5d30[_0x6e70('0x40')],{'$or':_[_0x6e70('0x32')](_0x50d60b,function(_0x246e61){if(_0x246e61[_0x6e70('0x44')]!=='VIRTUAL'){var _0x2c0bd1={};_0x2c0bd1[_0x246e61[_0x6e70('0x2f')]]={'$like':'%'+_0x24114a[_0x6e70('0x37')][_0x6e70('0x42')]+'%'};return _0x2c0bd1;}})});}_0x3a5d30=_[_0x6e70('0x43')]({},_0x3a5d30,_0x24114a[_0x6e70('0x45')]);var _0x21b0e7={'where':_0x3a5d30['where']};return db['VoiceMail']['count'](_0x21b0e7)[_0x6e70('0x29')](function(_0x2b63cc){_0x1b27d8[_0x6e70('0x21')]=_0x2b63cc;if(_0x24114a[_0x6e70('0x37')][_0x6e70('0x46')]){_0x3a5d30['include']=[{'all':!![]}];}return db[_0x6e70('0x47')][_0x6e70('0x48')](_0x3a5d30);})[_0x6e70('0x29')](function(_0x52b197){_0x1b27d8['rows']=_0x52b197;return _0x1b27d8;})['then'](respondWithFilteredResult(_0x3a0821,_0x3a5d30))[_0x6e70('0x49')](handleError(_0x3a0821,null));};exports['show']=function(_0x42f49a,_0x39913a){var _0x3fed21={'raw':!![],'where':{'id':_0x42f49a['params']['id']}},_0x75a90d={};_0x75a90d[_0x6e70('0x36')]=_['keys'](db[_0x6e70('0x47')][_0x6e70('0x33')]);_0x75a90d[_0x6e70('0x37')]=_[_0x6e70('0x4a')](_0x42f49a['query']);_0x75a90d[_0x6e70('0x38')]=_[_0x6e70('0x39')](_0x75a90d[_0x6e70('0x36')],_0x75a90d[_0x6e70('0x37')]);_0x3fed21[_0x6e70('0x3a')]=_[_0x6e70('0x39')](_0x75a90d[_0x6e70('0x36')],qs['fields'](_0x42f49a[_0x6e70('0x37')][_0x6e70('0x3b')]));_0x3fed21[_0x6e70('0x3a')]=_0x3fed21[_0x6e70('0x3a')][_0x6e70('0x3c')]?_0x3fed21[_0x6e70('0x3a')]:_0x75a90d[_0x6e70('0x36')];if(_0x42f49a['query'][_0x6e70('0x46')]){_0x3fed21['include']=[{'all':!![]}];}_0x3fed21=_[_0x6e70('0x43')]({},_0x3fed21,_0x42f49a[_0x6e70('0x45')]);return db['VoiceMail']['find'](_0x3fed21)[_0x6e70('0x29')](handleEntityNotFound(_0x39913a,null))[_0x6e70('0x29')](respondWithResult(_0x39913a,null))[_0x6e70('0x49')](handleError(_0x39913a,null));};exports['create']=function(_0x4af9b1,_0x238ebb){return db[_0x6e70('0x47')][_0x6e70('0x4b')](_0x4af9b1[_0x6e70('0x4c')],{})[_0x6e70('0x29')](function(_0x340674){var _0x4ad5a9=_0x4af9b1[_0x6e70('0x4d')][_0x6e70('0x2a')]({'plain':!![]});if(!_0x4ad5a9)throw new Error(_0x6e70('0x4e'));if(_0x4ad5a9[_0x6e70('0x4f')]===_0x6e70('0x4d')){var _0x4b354e=_0x340674['get']({'plain':!![]});var _0x2c5538=_0x6e70('0x2b');return db[_0x6e70('0x50')][_0x6e70('0x51')]({'where':{'name':_0x2c5538,'userProfileId':_0x4ad5a9[_0x6e70('0x52')]},'raw':!![]})['then'](function(_0x41bd0b){if(_0x41bd0b&&_0x41bd0b[_0x6e70('0x53')]===0x0){return db[_0x6e70('0x2c')][_0x6e70('0x4b')]({'name':_0x4b354e[_0x6e70('0x2f')],'resourceId':_0x4b354e['id'],'type':_0x41bd0b['name'],'sectionId':_0x41bd0b['id']},{})[_0x6e70('0x29')](function(){return _0x340674;});}else{return _0x340674;}})[_0x6e70('0x49')](function(_0x2c20d3){logger[_0x6e70('0x2d')](_0x6e70('0x54'),_0x2c20d3);throw _0x2c20d3;});}return _0x340674;})[_0x6e70('0x29')](respondWithResult(_0x238ebb,0xc9))['catch'](handleError(_0x238ebb,null));};exports[_0x6e70('0x28')]=function(_0x8d425d,_0x5c2396){if(_0x8d425d[_0x6e70('0x4c')]['id']){delete _0x8d425d[_0x6e70('0x4c')]['id'];}return db['VoiceMail'][_0x6e70('0x51')]({'where':{'id':_0x8d425d[_0x6e70('0x55')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x5c2396,null))[_0x6e70('0x29')](saveUpdates(_0x8d425d[_0x6e70('0x4c')],null))['then'](respondWithResult(_0x5c2396,null))[_0x6e70('0x49')](handleError(_0x5c2396,null));};exports[_0x6e70('0x56')]=function(_0x10d655,_0x13be81){return db[_0x6e70('0x47')][_0x6e70('0x51')]({'where':{'id':_0x10d655[_0x6e70('0x55')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x13be81,null))[_0x6e70('0x29')](removeEntity(_0x13be81,null))[_0x6e70('0x49')](handleError(_0x13be81,null));};exports[_0x6e70('0x57')]=function(_0x1b12a1,_0xb8f78,_0x1fd9a6){return db[_0x6e70('0x47')][_0x6e70('0x58')]({'where':{'id':_0x1b12a1[_0x6e70('0x55')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0xb8f78,null))[_0x6e70('0x29')](function(_0x1c7dca){var _0x4c6aab;var _0x28898a={},_0x4434dd={};_0x4434dd[_0x6e70('0x36')]=_[_0x6e70('0x4a')](db[_0x6e70('0x59')][_0x6e70('0x33')]);_0x4434dd['query']=_[_0x6e70('0x4a')](_0x1b12a1[_0x6e70('0x37')]);_0x4434dd['filters']=_[_0x6e70('0x39')](_0x4434dd[_0x6e70('0x36')],_0x4434dd[_0x6e70('0x37')]);_0x28898a['attributes']=_['intersection'](_0x4434dd[_0x6e70('0x36')],qs[_0x6e70('0x3b')](_0x1b12a1[_0x6e70('0x37')][_0x6e70('0x3b')]));_0x28898a[_0x6e70('0x3a')]=_0x28898a[_0x6e70('0x3a')][_0x6e70('0x3c')]?_0x28898a['attributes']:_0x4434dd['model'];if(!_0x1b12a1[_0x6e70('0x37')][_0x6e70('0x3d')](_0x6e70('0x3e'))){_0x28898a[_0x6e70('0x20')]=qs['limit'](_0x1b12a1['query'][_0x6e70('0x20')]);_0x28898a[_0x6e70('0x22')]=qs['offset'](_0x1b12a1['query'][_0x6e70('0x22')]);}_0x28898a['order']=qs[_0x6e70('0x3f')](_0x1b12a1[_0x6e70('0x37')][_0x6e70('0x3f')]);_0x28898a[_0x6e70('0x40')]=qs[_0x6e70('0x38')](_[_0x6e70('0x41')](_0x1b12a1[_0x6e70('0x37')],_0x4434dd[_0x6e70('0x38')]));if(_0x1b12a1['query'][_0x6e70('0x42')]){_0x28898a[_0x6e70('0x40')]=_[_0x6e70('0x43')](_0x28898a[_0x6e70('0x40')],{'$or':_[_0x6e70('0x32')](_0x28898a['attributes'],function(_0x5f5b02){var _0x5979bf={};_0x5979bf[_0x5f5b02]={'$like':'%'+_0x1b12a1[_0x6e70('0x37')][_0x6e70('0x42')]+'%'};return _0x5979bf;})});}_0x28898a[_0x6e70('0x40')]=_['merge'](_0x28898a['where'],{'mailboxuser':_0x1c7dca[_0x6e70('0x5a')]});_0x28898a=_[_0x6e70('0x43')]({},_0x28898a,_0x1b12a1[_0x6e70('0x45')]);return db[_0x6e70('0x59')][_0x6e70('0x5b')](_0x28898a)[_0x6e70('0x29')](respondWithFilteredResult(_0xb8f78,_0x28898a));})['catch'](handleError(_0xb8f78,null));};
\ No newline at end of file
index 816d6dc..d87da08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa85=['VoiceMail','mailbox_context','context','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x23da4d,_0x63498c){var _0x4ae55=function(_0x323d75){while(--_0x323d75){_0x23da4d['push'](_0x23da4d['shift']());}};_0x4ae55(++_0x63498c);}(_0xaa85,0x1e4));var _0x5aa8=function(_0x1459dd,_0x5b64ec){_0x1459dd=_0x1459dd-0x0;var _0x12c78c=_0xaa85[_0x1459dd];return _0x12c78c;};'use strict';var _=require(_0x5aa8('0x0'));var util=require(_0x5aa8('0x1'));var logger=require(_0x5aa8('0x2'))(_0x5aa8('0x3'));var moment=require(_0x5aa8('0x4'));var BPromise=require(_0x5aa8('0x5'));var rp=require(_0x5aa8('0x6'));var fs=require('fs');var path=require(_0x5aa8('0x7'));var rimraf=require(_0x5aa8('0x8'));var config=require(_0x5aa8('0x9'));var attributes=require('./voiceMail.attributes');module['exports']=function(_0x3a4889,_0x1dc06c){return _0x3a4889['define'](_0x5aa8('0xa'),attributes,{'tableName':'voice_voicemail','paranoid':![],'indexes':[{'name':_0x5aa8('0xb'),'fields':['mailbox',_0x5aa8('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7f7a=['../../config/environment','./voiceMail.attributes','exports','define','VoiceMail','voice_voicemail','mailbox_context','mailbox','context','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x27e73b,_0x403028){var _0x543cbb=function(_0x6b5647){while(--_0x6b5647){_0x27e73b['push'](_0x27e73b['shift']());}};_0x543cbb(++_0x403028);}(_0x7f7a,0x15d));var _0xa7f7=function(_0x453b51,_0x1a1af6){_0x453b51=_0x453b51-0x0;var _0x48b0eb=_0x7f7a[_0x453b51];return _0x48b0eb;};'use strict';var _=require(_0xa7f7('0x0'));var util=require(_0xa7f7('0x1'));var logger=require(_0xa7f7('0x2'))(_0xa7f7('0x3'));var moment=require(_0xa7f7('0x4'));var BPromise=require(_0xa7f7('0x5'));var rp=require(_0xa7f7('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa7f7('0x7'));var config=require(_0xa7f7('0x8'));var attributes=require(_0xa7f7('0x9'));module[_0xa7f7('0xa')]=function(_0x3cd1e4,_0x361e90){return _0x3cd1e4[_0xa7f7('0xb')](_0xa7f7('0xc'),attributes,{'tableName':_0xa7f7('0xd'),'paranoid':![],'indexes':[{'name':_0xa7f7('0xe'),'fields':[_0xa7f7('0xf'),_0xa7f7('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
index 08b1d0d..206b911 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe768=['request','then','info','debug','VoiceMail,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','VoiceMail,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http'];(function(_0x330c04,_0x561ccb){var _0x60715d=function(_0x166eb2){while(--_0x166eb2){_0x330c04['push'](_0x330c04['shift']());}};_0x60715d(++_0x561ccb);}(_0xe768,0x14f));var _0x8e76=function(_0x4bb06d,_0xaeae46){_0x4bb06d=_0x4bb06d-0x0;var _0x1429c0=_0xe768[_0x4bb06d];return _0x1429c0;};'use strict';var _=require(_0x8e76('0x0'));var util=require(_0x8e76('0x1'));var moment=require(_0x8e76('0x2'));var BPromise=require(_0x8e76('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8e76('0x4'))['db'];var utils=require(_0x8e76('0x5'));var logger=require('../../config/logger')(_0x8e76('0x6'));var config=require(_0x8e76('0x7'));var jayson=require(_0x8e76('0x8'));var client=jayson['client'][_0x8e76('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x479caf,_0x273d3f,_0x28ff6a){return new BPromise(function(_0x12a3c4,_0x28aaee){return client[_0x8e76('0xa')](_0x479caf,_0x28ff6a)[_0x8e76('0xb')](function(_0x341e23){logger[_0x8e76('0xc')]('VoiceMail,\x20%s,\x20%s',_0x273d3f,'request\x20sent');logger[_0x8e76('0xd')](_0x8e76('0xe'),_0x273d3f,_0x8e76('0xf'),JSON[_0x8e76('0x10')](_0x341e23));if(_0x341e23[_0x8e76('0x11')]){if(_0x341e23[_0x8e76('0x11')][_0x8e76('0x12')]===0x1f4){logger[_0x8e76('0x11')](_0x8e76('0x13'),_0x273d3f,_0x341e23[_0x8e76('0x11')]['message']);return _0x28aaee(_0x341e23[_0x8e76('0x11')]['message']);}logger[_0x8e76('0x11')]('VoiceMail,\x20%s,\x20%s',_0x273d3f,_0x341e23[_0x8e76('0x11')]['message']);return _0x12a3c4(_0x341e23['error'][_0x8e76('0x14')]);}else{logger[_0x8e76('0xc')](_0x8e76('0x13'),_0x273d3f,_0x8e76('0xf'));_0x12a3c4(_0x341e23[_0x8e76('0x15')][_0x8e76('0x14')]);}})[_0x8e76('0x16')](function(_0x573978){logger[_0x8e76('0x11')](_0x8e76('0x13'),_0x273d3f,_0x573978);_0x28aaee(_0x573978);});});}
\ No newline at end of file
+var _0xa09b=['message','request\x20sent','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','VoiceMail,\x20%s,\x20%s','stringify','error','code'];(function(_0x1781d9,_0x479026){var _0x50c607=function(_0x1302e1){while(--_0x1302e1){_0x1781d9['push'](_0x1781d9['shift']());}};_0x50c607(++_0x479026);}(_0xa09b,0x193));var _0xba09=function(_0x125106,_0x1a5f5d){_0x125106=_0x125106-0x0;var _0xc1ffd5=_0xa09b[_0x125106];return _0xc1ffd5;};'use strict';var _=require('lodash');var util=require(_0xba09('0x0'));var moment=require(_0xba09('0x1'));var BPromise=require(_0xba09('0x2'));var rs=require(_0xba09('0x3'));var fs=require('fs');var Redis=require(_0xba09('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xba09('0x5'));var logger=require(_0xba09('0x6'))(_0xba09('0x7'));var config=require(_0xba09('0x8'));var jayson=require(_0xba09('0x9'));var client=jayson['client'][_0xba09('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xda7454,_0x119c46,_0x597b4e){return new BPromise(function(_0x2529aa,_0x198f32){return client[_0xba09('0xb')](_0xda7454,_0x597b4e)['then'](function(_0x1177cc){logger[_0xba09('0xc')](_0xba09('0xd'),_0x119c46,'request\x20sent');logger['debug']('VoiceMail,\x20%s,\x20%s,\x20%s',_0x119c46,'request\x20sent',JSON[_0xba09('0xe')](_0x1177cc));if(_0x1177cc[_0xba09('0xf')]){if(_0x1177cc[_0xba09('0xf')][_0xba09('0x10')]===0x1f4){logger['error'](_0xba09('0xd'),_0x119c46,_0x1177cc[_0xba09('0xf')][_0xba09('0x11')]);return _0x198f32(_0x1177cc[_0xba09('0xf')][_0xba09('0x11')]);}logger['error'](_0xba09('0xd'),_0x119c46,_0x1177cc[_0xba09('0xf')][_0xba09('0x11')]);return _0x2529aa(_0x1177cc['error']['message']);}else{logger[_0xba09('0xc')](_0xba09('0xd'),_0x119c46,_0xba09('0x12'));_0x2529aa(_0x1177cc[_0xba09('0x13')][_0xba09('0x11')]);}})[_0xba09('0x14')](function(_0x2a7f86){logger['error']('VoiceMail,\x20%s,\x20%s',_0x119c46,_0x2a7f86);_0x198f32(_0x2a7f86);});});}
\ No newline at end of file
index c21e887..8ba2675 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa717=['put','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','create'];(function(_0x7c3904,_0x92254d){var _0x7767de=function(_0x178f7f){while(--_0x178f7f){_0x7c3904['push'](_0x7c3904['shift']());}};_0x7767de(++_0x92254d);}(_0xa717,0x147));var _0x7a71=function(_0x39c4ea,_0x1bb06b){_0x39c4ea=_0x39c4ea-0x0;var _0x45866a=_0xa717[_0x39c4ea];return _0x45866a;};'use strict';var multer=require(_0x7a71('0x0'));var util=require(_0x7a71('0x1'));var path=require('path');var timeout=require(_0x7a71('0x2'));var express=require('express');var router=express[_0x7a71('0x3')]();var fs_extra=require(_0x7a71('0x4'));var auth=require(_0x7a71('0x5'));var interaction=require(_0x7a71('0x6'));var config=require(_0x7a71('0x7'));var controller=require(_0x7a71('0x8'));router[_0x7a71('0x9')]('/',auth[_0x7a71('0xa')](),controller[_0x7a71('0xb')]);router[_0x7a71('0x9')](_0x7a71('0xc'),auth[_0x7a71('0xa')](),controller[_0x7a71('0xd')]);router[_0x7a71('0x9')](_0x7a71('0xe'),auth[_0x7a71('0xa')](),controller[_0x7a71('0xf')]);router[_0x7a71('0x10')]('/',auth[_0x7a71('0xa')](),controller[_0x7a71('0x11')]);router[_0x7a71('0x12')](_0x7a71('0xc'),auth['isAuthenticated'](),controller[_0x7a71('0x13')]);router[_0x7a71('0x14')]('/:id',auth[_0x7a71('0xa')](),controller[_0x7a71('0x15')]);module[_0x7a71('0x16')]=router;
\ No newline at end of file
+var _0x968a=['put','update','destroy','exports','multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','/:id','show','/:id/download','create'];(function(_0x1c0197,_0x582693){var _0x14ae83=function(_0x5c83ff){while(--_0x5c83ff){_0x1c0197['push'](_0x1c0197['shift']());}};_0x14ae83(++_0x582693);}(_0x968a,0x190));var _0xa968=function(_0x5354c1,_0x154c3a){_0x5354c1=_0x5354c1-0x0;var _0x28552f=_0x968a[_0x5354c1];return _0x28552f;};'use strict';var multer=require(_0xa968('0x0'));var util=require(_0xa968('0x1'));var path=require(_0xa968('0x2'));var timeout=require('connect-timeout');var express=require(_0xa968('0x3'));var router=express['Router']();var fs_extra=require(_0xa968('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xa968('0x5'));var config=require(_0xa968('0x6'));var controller=require(_0xa968('0x7'));router[_0xa968('0x8')]('/',auth[_0xa968('0x9')](),controller['index']);router[_0xa968('0x8')](_0xa968('0xa'),auth[_0xa968('0x9')](),controller[_0xa968('0xb')]);router[_0xa968('0x8')](_0xa968('0xc'),auth[_0xa968('0x9')](),controller['download']);router['post']('/',auth[_0xa968('0x9')](),controller[_0xa968('0xd')]);router[_0xa968('0xe')](_0xa968('0xa'),auth[_0xa968('0x9')](),controller[_0xa968('0xf')]);router['delete'](_0xa968('0xa'),auth['isAuthenticated'](),controller[_0xa968('0x10')]);module[_0xa968('0x11')]=router;
\ No newline at end of file
index c825194..b139d64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec6f=['sequelize','exports','VIRTUAL','STRING','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0xec6f,0xaf));var _0xfec6=function(_0x42e25e,_0x46cfd1){_0x42e25e=_0x42e25e-0x0;var _0x1ed3a6=_0xec6f[_0x42e25e];return _0x1ed3a6;};'use strict';var Sequelize=require(_0xfec6('0x0'));module[_0xfec6('0x1')]={'name':{'type':Sequelize[_0xfec6('0x2')],'get':function(_0x1c2c4a){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize[_0xfec6('0x3')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xfec6('0x3')],'defaultValue':''},'callerid':{'type':Sequelize[_0xfec6('0x3')],'defaultValue':''},'origtime':{'type':Sequelize[_0xfec6('0x3')],'defaultValue':''},'duration':{'type':Sequelize[_0xfec6('0x3')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xfec6('0x3')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xfec6('0x3')],'defaultValue':''},'recording':{'type':Sequelize['BLOB']('long'),'defaultValue':null},'flag':{'type':Sequelize[_0xfec6('0x3')],'defaultValue':''},'msg_id':{'type':Sequelize[_0xfec6('0x3')],'defaultValue':''},'stamp':{'type':_0xfec6('0x4'),'defaultValue':Sequelize[_0xfec6('0x5')](_0xfec6('0x6'))}};
\ No newline at end of file
+var _0x3f1b=['CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','getDataValue','STRING','TIMESTAMP','literal'];(function(_0x10e89f,_0x208260){var _0x143acb=function(_0x32faa1){while(--_0x32faa1){_0x10e89f['push'](_0x10e89f['shift']());}};_0x143acb(++_0x208260);}(_0x3f1b,0x14a));var _0xb3f1=function(_0x3ca263,_0x5d0ba3){_0x3ca263=_0x3ca263-0x0;var _0x1570d1=_0x3f1b[_0x3ca263];return _0x1570d1;};'use strict';var Sequelize=require(_0xb3f1('0x0'));module[_0xb3f1('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0xf32d1d){return this[_0xb3f1('0x2')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xb3f1('0x3')],'defaultValue':''},'context':{'type':Sequelize[_0xb3f1('0x3')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xb3f1('0x3')],'defaultValue':''},'callerid':{'type':Sequelize[_0xb3f1('0x3')],'defaultValue':''},'origtime':{'type':Sequelize[_0xb3f1('0x3')],'defaultValue':''},'duration':{'type':Sequelize[_0xb3f1('0x3')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xb3f1('0x3')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xb3f1('0x3')],'defaultValue':''},'recording':{'type':Sequelize['BLOB']('long'),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0xb3f1('0x4'),'defaultValue':Sequelize[_0xb3f1('0x5')](_0xb3f1('0x6'))}};
\ No newline at end of file
index 2ebbafa..08e25ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad48=['apply','reject','save','then','destroy','error','stack','name','send','map','VoiceMailMessage','type','query','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','merge','count','includeAll','include','findAll','catch','show','params','keys','rawAttributes','options','find','body','update','download','msg_id','Sequelize','ValidationError','audio/wav','attachment','.wav\x22','recording','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','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','sendStatus','status','end','json','undefined','limit','offset','set','Content-Range'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0xad48,0x17c));var _0x8ad4=function(_0x5430a5,_0x4d613f){_0x5430a5=_0x5430a5-0x0;var _0x96a99f=_0xad48[_0x5430a5];return _0x96a99f;};'use strict';var emlformat=require(_0x8ad4('0x0'));var rimraf=require(_0x8ad4('0x1'));var zipdir=require(_0x8ad4('0x2'));var jsonpatch=require(_0x8ad4('0x3'));var rp=require(_0x8ad4('0x4'));var moment=require(_0x8ad4('0x5'));var BPromise=require(_0x8ad4('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8ad4('0x7'));var sox=require(_0x8ad4('0x8'));var csv=require(_0x8ad4('0x9'));var ejs=require(_0x8ad4('0xa'));var fs=require('fs');var fs_extra=require(_0x8ad4('0xb'));var _=require(_0x8ad4('0xc'));var squel=require('squel');var crypto=require(_0x8ad4('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x8ad4('0xe'));var toCsv=require(_0x8ad4('0x9'));var querystring=require(_0x8ad4('0xf'));var Papa=require(_0x8ad4('0x10'));var Redis=require('ioredis');var authService=require(_0x8ad4('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x8ad4('0x12'));var hardwareService=require(_0x8ad4('0x13'));var logger=require(_0x8ad4('0x14'))(_0x8ad4('0x15'));var utils=require(_0x8ad4('0x16'));var config=require(_0x8ad4('0x17'));var licenseUtil=require(_0x8ad4('0x18'));var db=require(_0x8ad4('0x19'))['db'];function respondWithStatusCode(_0x1496cf,_0x18049d){_0x18049d=_0x18049d||0xcc;return function(_0x330da6){if(_0x330da6){return _0x1496cf[_0x8ad4('0x1a')](_0x18049d);}return _0x1496cf[_0x8ad4('0x1b')](_0x18049d)[_0x8ad4('0x1c')]();};}function respondWithResult(_0x2e336d,_0x419e68){_0x419e68=_0x419e68||0xc8;return function(_0x551d82){if(_0x551d82){return _0x2e336d['status'](_0x419e68)[_0x8ad4('0x1d')](_0x551d82);}};}function respondWithFilteredResult(_0x2c5891,_0x221043){return function(_0x4bd44e){if(_0x4bd44e){var _0x2a865f=typeof _0x221043['offset']===_0x8ad4('0x1e')&&typeof _0x221043[_0x8ad4('0x1f')]===_0x8ad4('0x1e');var _0x2d49ab=_0x4bd44e['count'];var _0xcc9ff5=_0x2a865f?0x0:_0x221043[_0x8ad4('0x20')];var _0x4a5e07=_0x2a865f?_0x4bd44e['count']:_0x221043['offset']+_0x221043[_0x8ad4('0x1f')];var _0x65bea9;if(_0x4a5e07>=_0x2d49ab){_0x4a5e07=_0x2d49ab;_0x65bea9=0xc8;}else{_0x65bea9=0xce;}_0x2c5891[_0x8ad4('0x1b')](_0x65bea9);return _0x2c5891[_0x8ad4('0x21')](_0x8ad4('0x22'),_0xcc9ff5+'-'+_0x4a5e07+'/'+_0x2d49ab)[_0x8ad4('0x1d')](_0x4bd44e);}return null;};}function patchUpdates(_0x2be8ca){return function(_0x3a33ea){try{jsonpatch[_0x8ad4('0x23')](_0x3a33ea,_0x2be8ca,!![]);}catch(_0x135db3){return BPromise[_0x8ad4('0x24')](_0x135db3);}return _0x3a33ea[_0x8ad4('0x25')]();};}function saveUpdates(_0x187a46,_0xb9c3db){return function(_0x14aceb){if(_0x14aceb){return _0x14aceb['update'](_0x187a46)[_0x8ad4('0x26')](function(_0x4d86c4){return _0x4d86c4;});}return null;};}function removeEntity(_0x224cba,_0x5d090e){return function(_0x2b25ac){if(_0x2b25ac){return _0x2b25ac[_0x8ad4('0x27')]()['then'](function(){_0x224cba['status'](0xcc)[_0x8ad4('0x1c')]();});}};}function handleEntityNotFound(_0x479354,_0xd8f640){return function(_0x237a29){if(!_0x237a29){_0x479354[_0x8ad4('0x1a')](0x194);}return _0x237a29;};}function handleError(_0xcb86d2,_0x336563){_0x336563=_0x336563||0x1f4;return function(_0x25f082){logger[_0x8ad4('0x28')](_0x25f082[_0x8ad4('0x29')]);if(_0x25f082[_0x8ad4('0x2a')]){delete _0x25f082['name'];}_0xcb86d2['status'](_0x336563)[_0x8ad4('0x2b')](_0x25f082);};}exports['index']=function(_0x17675c,_0x2aa6ae){var _0x2ab804={},_0x955bb7={},_0x3ece99={'count':0x0,'rows':[]};var _0x6d6239=_[_0x8ad4('0x2c')](db[_0x8ad4('0x2d')]['rawAttributes'],function(_0x4c7135){return{'name':_0x4c7135['fieldName'],'type':_0x4c7135[_0x8ad4('0x2e')]['key']};});_0x955bb7['model']=_['differenceBy'](_[_0x8ad4('0x2c')](_0x6d6239,_0x8ad4('0x2a')),[_0x8ad4('0x2a')]);_0x955bb7[_0x8ad4('0x2f')]=_['keys'](_0x17675c['query']);_0x955bb7[_0x8ad4('0x30')]=_['intersection'](_0x955bb7['model'],_0x955bb7['query']);_0x2ab804[_0x8ad4('0x31')]=_[_0x8ad4('0x32')](_0x955bb7[_0x8ad4('0x33')],qs['fields'](_0x17675c['query'][_0x8ad4('0x34')]));_0x2ab804[_0x8ad4('0x31')]=_0x2ab804[_0x8ad4('0x31')][_0x8ad4('0x35')]?_0x2ab804[_0x8ad4('0x31')]:_0x955bb7[_0x8ad4('0x33')];if(!_0x17675c[_0x8ad4('0x2f')][_0x8ad4('0x36')](_0x8ad4('0x37'))){_0x2ab804[_0x8ad4('0x1f')]=qs[_0x8ad4('0x1f')](_0x17675c[_0x8ad4('0x2f')][_0x8ad4('0x1f')]);_0x2ab804[_0x8ad4('0x20')]=qs[_0x8ad4('0x20')](_0x17675c[_0x8ad4('0x2f')]['offset']);}_0x2ab804['order']=qs[_0x8ad4('0x38')](_0x17675c[_0x8ad4('0x2f')][_0x8ad4('0x38')]);_0x2ab804['where']=qs[_0x8ad4('0x30')](_[_0x8ad4('0x39')](_0x17675c['query'],_0x955bb7[_0x8ad4('0x30')]),_0x6d6239);if(_0x17675c['query'][_0x8ad4('0x3a')]){_0x2ab804[_0x8ad4('0x3b')]=_['merge'](_0x2ab804[_0x8ad4('0x3b')],{'$or':_[_0x8ad4('0x2c')](_0x6d6239,function(_0x32740f){if(_0x32740f[_0x8ad4('0x2e')]!==_0x8ad4('0x3c')){var _0x54a994={};_0x54a994[_0x32740f[_0x8ad4('0x2a')]]={'$like':'%'+_0x17675c[_0x8ad4('0x2f')]['filter']+'%'};return _0x54a994;}})});}_0x2ab804=_[_0x8ad4('0x3d')]({},_0x2ab804,_0x17675c['options']);var _0x10e18a={'where':_0x2ab804[_0x8ad4('0x3b')]};return db[_0x8ad4('0x2d')]['count'](_0x10e18a)[_0x8ad4('0x26')](function(_0x6c6718){_0x3ece99[_0x8ad4('0x3e')]=_0x6c6718;if(_0x17675c[_0x8ad4('0x2f')][_0x8ad4('0x3f')]){_0x2ab804[_0x8ad4('0x40')]=[{'all':!![]}];}return db['VoiceMailMessage'][_0x8ad4('0x41')](_0x2ab804);})[_0x8ad4('0x26')](function(_0x3d01a9){_0x3ece99['rows']=_0x3d01a9;return _0x3ece99;})[_0x8ad4('0x26')](respondWithFilteredResult(_0x2aa6ae,_0x2ab804))[_0x8ad4('0x42')](handleError(_0x2aa6ae,null));};exports[_0x8ad4('0x43')]=function(_0x4485f7,_0x3e3924){var _0x28e57e={'raw':!![],'where':{'id':_0x4485f7[_0x8ad4('0x44')]['id']}},_0x22ce05={};_0x22ce05['model']=_[_0x8ad4('0x45')](db[_0x8ad4('0x2d')][_0x8ad4('0x46')]);_0x22ce05[_0x8ad4('0x2f')]=_[_0x8ad4('0x45')](_0x4485f7['query']);_0x22ce05[_0x8ad4('0x30')]=_[_0x8ad4('0x32')](_0x22ce05['model'],_0x22ce05['query']);_0x28e57e[_0x8ad4('0x31')]=_['intersection'](_0x22ce05[_0x8ad4('0x33')],qs[_0x8ad4('0x34')](_0x4485f7['query']['fields']));_0x28e57e[_0x8ad4('0x31')]=_0x28e57e[_0x8ad4('0x31')][_0x8ad4('0x35')]?_0x28e57e[_0x8ad4('0x31')]:_0x22ce05[_0x8ad4('0x33')];if(_0x4485f7[_0x8ad4('0x2f')]['includeAll']){_0x28e57e['include']=[{'all':!![]}];}_0x28e57e=_['merge']({},_0x28e57e,_0x4485f7[_0x8ad4('0x47')]);return db[_0x8ad4('0x2d')][_0x8ad4('0x48')](_0x28e57e)[_0x8ad4('0x26')](handleEntityNotFound(_0x3e3924,null))['then'](respondWithResult(_0x3e3924,null))[_0x8ad4('0x42')](handleError(_0x3e3924,null));};exports['create']=function(_0x78d8c5,_0x1678d7){return db['VoiceMailMessage']['create'](_0x78d8c5[_0x8ad4('0x49')],{})[_0x8ad4('0x26')](respondWithResult(_0x1678d7,0xc9))['catch'](handleError(_0x1678d7,null));};exports[_0x8ad4('0x4a')]=function(_0x2e0d12,_0x4ef134){if(_0x2e0d12[_0x8ad4('0x49')]['id']){delete _0x2e0d12[_0x8ad4('0x49')]['id'];}return db['VoiceMailMessage'][_0x8ad4('0x48')]({'where':{'id':_0x2e0d12['params']['id']}})[_0x8ad4('0x26')](handleEntityNotFound(_0x4ef134,null))[_0x8ad4('0x26')](saveUpdates(_0x2e0d12[_0x8ad4('0x49')],null))[_0x8ad4('0x26')](respondWithResult(_0x4ef134,null))[_0x8ad4('0x42')](handleError(_0x4ef134,null));};exports['destroy']=function(_0x2207c7,_0x20dc9d){return db[_0x8ad4('0x2d')][_0x8ad4('0x48')]({'where':{'id':_0x2207c7['params']['id']}})[_0x8ad4('0x26')](handleEntityNotFound(_0x20dc9d,null))['then'](removeEntity(_0x20dc9d,null))['catch'](handleError(_0x20dc9d,null));};exports[_0x8ad4('0x4b')]=function(_0x39f53,_0x20ac9e,_0x518621){return db['VoiceMailMessage']['find']({'where':{'id':_0x39f53[_0x8ad4('0x44')]['id']},'attributes':['id','recording',_0x8ad4('0x4c')]})[_0x8ad4('0x26')](handleEntityNotFound(_0x20ac9e,null))[_0x8ad4('0x26')](function(_0x94ea58){if(_0x94ea58){if(!_0x94ea58['recording']){throw new db[(_0x8ad4('0x4d'))][(_0x8ad4('0x4e'))]('VoiceMailMessage\x20not\x20found');}var _0x46325e={'Content-Type':_0x8ad4('0x4f'),'Content-Disposition':_0x8ad4('0x50')};if(_0x94ea58[_0x8ad4('0x4c')]){_0x46325e['Content-Disposition']='attachment;\x20filename=\x22'+_0x94ea58[_0x8ad4('0x4c')]+_0x8ad4('0x51');}_0x20ac9e[_0x8ad4('0x21')](_0x46325e);return _0x20ac9e[_0x8ad4('0x2b')](new Buffer(_0x94ea58[_0x8ad4('0x52')]));}})[_0x8ad4('0x42')](handleError(_0x20ac9e,null));};
\ No newline at end of file
+var _0xc8c8=['papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','VoiceMailMessage','rawAttributes','fieldName','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','options','count','includeAll','include','catch','show','params','find','create','body','recording','msg_id','ValidationError','VoiceMailMessage\x20not\x20found','attachment','Content-Disposition','.wav\x22','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring'];(function(_0x8ee3de,_0x467dd0){var _0x2e7346=function(_0xbbdbaf){while(--_0xbbdbaf){_0x8ee3de['push'](_0x8ee3de['shift']());}};_0x2e7346(++_0x467dd0);}(_0xc8c8,0xe4));var _0x8c8c=function(_0x30585b,_0x1a583d){_0x30585b=_0x30585b-0x0;var _0x3b3d4b=_0xc8c8[_0x30585b];return _0x3b3d4b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8c8c('0x0'));var zipdir=require(_0x8c8c('0x1'));var jsonpatch=require(_0x8c8c('0x2'));var rp=require(_0x8c8c('0x3'));var moment=require(_0x8c8c('0x4'));var BPromise=require(_0x8c8c('0x5'));var Mustache=require(_0x8c8c('0x6'));var util=require(_0x8c8c('0x7'));var path=require(_0x8c8c('0x8'));var sox=require(_0x8c8c('0x9'));var csv=require(_0x8c8c('0xa'));var ejs=require(_0x8c8c('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8c8c('0xc'));var squel=require(_0x8c8c('0xd'));var crypto=require(_0x8c8c('0xe'));var jsforce=require(_0x8c8c('0xf'));var deskjs=require(_0x8c8c('0x10'));var toCsv=require(_0x8c8c('0xa'));var querystring=require(_0x8c8c('0x11'));var Papa=require(_0x8c8c('0x12'));var Redis=require('ioredis');var authService=require(_0x8c8c('0x13'));var qs=require(_0x8c8c('0x14'));var as=require(_0x8c8c('0x15'));var hardwareService=require(_0x8c8c('0x16'));var logger=require('../../config/logger')(_0x8c8c('0x17'));var utils=require(_0x8c8c('0x18'));var config=require(_0x8c8c('0x19'));var licenseUtil=require(_0x8c8c('0x1a'));var db=require(_0x8c8c('0x1b'))['db'];function respondWithStatusCode(_0x37b924,_0x30cb89){_0x30cb89=_0x30cb89||0xcc;return function(_0x55810e){if(_0x55810e){return _0x37b924[_0x8c8c('0x1c')](_0x30cb89);}return _0x37b924[_0x8c8c('0x1d')](_0x30cb89)[_0x8c8c('0x1e')]();};}function respondWithResult(_0x5c6ad8,_0x53f599){_0x53f599=_0x53f599||0xc8;return function(_0x34c982){if(_0x34c982){return _0x5c6ad8[_0x8c8c('0x1d')](_0x53f599)['json'](_0x34c982);}};}function respondWithFilteredResult(_0x9727d4,_0x51f84d){return function(_0x15d234){if(_0x15d234){var _0x455faa=typeof _0x51f84d[_0x8c8c('0x1f')]===_0x8c8c('0x20')&&typeof _0x51f84d[_0x8c8c('0x21')]==='undefined';var _0x2e0e68=_0x15d234['count'];var _0x3ef8f7=_0x455faa?0x0:_0x51f84d[_0x8c8c('0x1f')];var _0x54e526=_0x455faa?_0x15d234['count']:_0x51f84d['offset']+_0x51f84d[_0x8c8c('0x21')];var _0x36c9bf;if(_0x54e526>=_0x2e0e68){_0x54e526=_0x2e0e68;_0x36c9bf=0xc8;}else{_0x36c9bf=0xce;}_0x9727d4[_0x8c8c('0x1d')](_0x36c9bf);return _0x9727d4[_0x8c8c('0x22')](_0x8c8c('0x23'),_0x3ef8f7+'-'+_0x54e526+'/'+_0x2e0e68)['json'](_0x15d234);}return null;};}function patchUpdates(_0x42141e){return function(_0xaa090f){try{jsonpatch[_0x8c8c('0x24')](_0xaa090f,_0x42141e,!![]);}catch(_0xf7df00){return BPromise[_0x8c8c('0x25')](_0xf7df00);}return _0xaa090f['save']();};}function saveUpdates(_0x51797b,_0x20df5c){return function(_0x59565d){if(_0x59565d){return _0x59565d[_0x8c8c('0x26')](_0x51797b)[_0x8c8c('0x27')](function(_0x523bd5){return _0x523bd5;});}return null;};}function removeEntity(_0x13d5fc,_0x41cb52){return function(_0x25902d){if(_0x25902d){return _0x25902d[_0x8c8c('0x28')]()[_0x8c8c('0x27')](function(){_0x13d5fc[_0x8c8c('0x1d')](0xcc)[_0x8c8c('0x1e')]();});}};}function handleEntityNotFound(_0x29940d,_0x34ec36){return function(_0x434eb0){if(!_0x434eb0){_0x29940d[_0x8c8c('0x1c')](0x194);}return _0x434eb0;};}function handleError(_0x58a1c1,_0x1cf84d){_0x1cf84d=_0x1cf84d||0x1f4;return function(_0x437108){logger['error'](_0x437108[_0x8c8c('0x29')]);if(_0x437108[_0x8c8c('0x2a')]){delete _0x437108[_0x8c8c('0x2a')];}_0x58a1c1[_0x8c8c('0x1d')](_0x1cf84d)[_0x8c8c('0x2b')](_0x437108);};}exports[_0x8c8c('0x2c')]=function(_0x2e8c5d,_0x3788e3){var _0x221516={},_0x1bda52={},_0x2d4c35={'count':0x0,'rows':[]};var _0x41fa72=_[_0x8c8c('0x2d')](db[_0x8c8c('0x2e')][_0x8c8c('0x2f')],function(_0x22ab32){return{'name':_0x22ab32[_0x8c8c('0x30')],'type':_0x22ab32['type']['key']};});_0x1bda52['model']=_['differenceBy'](_[_0x8c8c('0x2d')](_0x41fa72,'name'),[_0x8c8c('0x2a')]);_0x1bda52[_0x8c8c('0x31')]=_[_0x8c8c('0x32')](_0x2e8c5d['query']);_0x1bda52[_0x8c8c('0x33')]=_['intersection'](_0x1bda52[_0x8c8c('0x34')],_0x1bda52[_0x8c8c('0x31')]);_0x221516[_0x8c8c('0x35')]=_[_0x8c8c('0x36')](_0x1bda52[_0x8c8c('0x34')],qs[_0x8c8c('0x37')](_0x2e8c5d[_0x8c8c('0x31')][_0x8c8c('0x37')]));_0x221516[_0x8c8c('0x35')]=_0x221516[_0x8c8c('0x35')][_0x8c8c('0x38')]?_0x221516['attributes']:_0x1bda52[_0x8c8c('0x34')];if(!_0x2e8c5d[_0x8c8c('0x31')][_0x8c8c('0x39')](_0x8c8c('0x3a'))){_0x221516['limit']=qs[_0x8c8c('0x21')](_0x2e8c5d[_0x8c8c('0x31')][_0x8c8c('0x21')]);_0x221516[_0x8c8c('0x1f')]=qs['offset'](_0x2e8c5d[_0x8c8c('0x31')][_0x8c8c('0x1f')]);}_0x221516[_0x8c8c('0x3b')]=qs[_0x8c8c('0x3c')](_0x2e8c5d['query'][_0x8c8c('0x3c')]);_0x221516[_0x8c8c('0x3d')]=qs[_0x8c8c('0x33')](_['pick'](_0x2e8c5d[_0x8c8c('0x31')],_0x1bda52['filters']),_0x41fa72);if(_0x2e8c5d[_0x8c8c('0x31')][_0x8c8c('0x3e')]){_0x221516[_0x8c8c('0x3d')]=_[_0x8c8c('0x3f')](_0x221516[_0x8c8c('0x3d')],{'$or':_['map'](_0x41fa72,function(_0x589af2){if(_0x589af2[_0x8c8c('0x40')]!=='VIRTUAL'){var _0x36b730={};_0x36b730[_0x589af2['name']]={'$like':'%'+_0x2e8c5d[_0x8c8c('0x31')]['filter']+'%'};return _0x36b730;}})});}_0x221516=_[_0x8c8c('0x3f')]({},_0x221516,_0x2e8c5d[_0x8c8c('0x41')]);var _0x361997={'where':_0x221516['where']};return db[_0x8c8c('0x2e')][_0x8c8c('0x42')](_0x361997)['then'](function(_0x707fe5){_0x2d4c35['count']=_0x707fe5;if(_0x2e8c5d[_0x8c8c('0x31')][_0x8c8c('0x43')]){_0x221516[_0x8c8c('0x44')]=[{'all':!![]}];}return db[_0x8c8c('0x2e')]['findAll'](_0x221516);})['then'](function(_0x496852){_0x2d4c35['rows']=_0x496852;return _0x2d4c35;})[_0x8c8c('0x27')](respondWithFilteredResult(_0x3788e3,_0x221516))[_0x8c8c('0x45')](handleError(_0x3788e3,null));};exports[_0x8c8c('0x46')]=function(_0x55092f,_0x403886){var _0x1346a1={'raw':!![],'where':{'id':_0x55092f[_0x8c8c('0x47')]['id']}},_0x51e29d={};_0x51e29d[_0x8c8c('0x34')]=_[_0x8c8c('0x32')](db['VoiceMailMessage'][_0x8c8c('0x2f')]);_0x51e29d[_0x8c8c('0x31')]=_[_0x8c8c('0x32')](_0x55092f[_0x8c8c('0x31')]);_0x51e29d['filters']=_[_0x8c8c('0x36')](_0x51e29d[_0x8c8c('0x34')],_0x51e29d[_0x8c8c('0x31')]);_0x1346a1[_0x8c8c('0x35')]=_[_0x8c8c('0x36')](_0x51e29d[_0x8c8c('0x34')],qs[_0x8c8c('0x37')](_0x55092f['query'][_0x8c8c('0x37')]));_0x1346a1[_0x8c8c('0x35')]=_0x1346a1[_0x8c8c('0x35')][_0x8c8c('0x38')]?_0x1346a1[_0x8c8c('0x35')]:_0x51e29d[_0x8c8c('0x34')];if(_0x55092f[_0x8c8c('0x31')]['includeAll']){_0x1346a1['include']=[{'all':!![]}];}_0x1346a1=_[_0x8c8c('0x3f')]({},_0x1346a1,_0x55092f[_0x8c8c('0x41')]);return db['VoiceMailMessage'][_0x8c8c('0x48')](_0x1346a1)[_0x8c8c('0x27')](handleEntityNotFound(_0x403886,null))[_0x8c8c('0x27')](respondWithResult(_0x403886,null))[_0x8c8c('0x45')](handleError(_0x403886,null));};exports[_0x8c8c('0x49')]=function(_0x4bc334,_0xd857dd){return db[_0x8c8c('0x2e')]['create'](_0x4bc334['body'],{})['then'](respondWithResult(_0xd857dd,0xc9))[_0x8c8c('0x45')](handleError(_0xd857dd,null));};exports[_0x8c8c('0x26')]=function(_0x55edfc,_0x33d5c9){if(_0x55edfc[_0x8c8c('0x4a')]['id']){delete _0x55edfc[_0x8c8c('0x4a')]['id'];}return db[_0x8c8c('0x2e')][_0x8c8c('0x48')]({'where':{'id':_0x55edfc[_0x8c8c('0x47')]['id']}})[_0x8c8c('0x27')](handleEntityNotFound(_0x33d5c9,null))['then'](saveUpdates(_0x55edfc[_0x8c8c('0x4a')],null))['then'](respondWithResult(_0x33d5c9,null))['catch'](handleError(_0x33d5c9,null));};exports[_0x8c8c('0x28')]=function(_0x10bbde,_0x427ba7){return db['VoiceMailMessage'][_0x8c8c('0x48')]({'where':{'id':_0x10bbde[_0x8c8c('0x47')]['id']}})[_0x8c8c('0x27')](handleEntityNotFound(_0x427ba7,null))['then'](removeEntity(_0x427ba7,null))[_0x8c8c('0x45')](handleError(_0x427ba7,null));};exports['download']=function(_0x4c2a7e,_0x51dd77,_0x359c57){return db[_0x8c8c('0x2e')][_0x8c8c('0x48')]({'where':{'id':_0x4c2a7e[_0x8c8c('0x47')]['id']},'attributes':['id',_0x8c8c('0x4b'),_0x8c8c('0x4c')]})[_0x8c8c('0x27')](handleEntityNotFound(_0x51dd77,null))[_0x8c8c('0x27')](function(_0x2889a4){if(_0x2889a4){if(!_0x2889a4['recording']){throw new db['Sequelize'][(_0x8c8c('0x4d'))](_0x8c8c('0x4e'));}var _0x7ee092={'Content-Type':'audio/wav','Content-Disposition':_0x8c8c('0x4f')};if(_0x2889a4[_0x8c8c('0x4c')]){_0x7ee092[_0x8c8c('0x50')]='attachment;\x20filename=\x22'+_0x2889a4['msg_id']+_0x8c8c('0x51');}_0x51dd77['set'](_0x7ee092);return _0x51dd77[_0x8c8c('0x2b')](new Buffer(_0x2889a4[_0x8c8c('0x4b')]));}})[_0x8c8c('0x45')](handleError(_0x51dd77,null));};
\ No newline at end of file
index cf743cf..cc43d55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x456a=['path','rimraf','../../config/environment','exports','define','VoiceMailMessage','voice_voicemail_messages','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x240860,_0x20c04d){var _0x40e288=function(_0x38a753){while(--_0x38a753){_0x240860['push'](_0x240860['shift']());}};_0x40e288(++_0x20c04d);}(_0x456a,0xdf));var _0xa456=function(_0x2d5c57,_0x51734f){_0x2d5c57=_0x2d5c57-0x0;var _0x98faa8=_0x456a[_0x2d5c57];return _0x98faa8;};'use strict';var _=require('lodash');var util=require(_0xa456('0x0'));var logger=require(_0xa456('0x1'))('api');var moment=require(_0xa456('0x2'));var BPromise=require(_0xa456('0x3'));var rp=require(_0xa456('0x4'));var fs=require('fs');var path=require(_0xa456('0x5'));var rimraf=require(_0xa456('0x6'));var config=require(_0xa456('0x7'));var attributes=require('./voiceMailMessage.attributes');module[_0xa456('0x8')]=function(_0x1aefaf,_0x340c66){return _0x1aefaf[_0xa456('0x9')](_0xa456('0xa'),attributes,{'tableName':_0xa456('0xb'),'paranoid':![],'indexes':[{'name':'dir','fields':['dir']}],'timestamps':![]});};
\ No newline at end of file
+var _0xd8b3=['voice_voicemail_messages','dir','util','api','moment','request-promise','path','rimraf','./voiceMailMessage.attributes','exports','define','VoiceMailMessage'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xd8b3,0x16a));var _0x3d8b=function(_0x3ccac1,_0x5cc7ea){_0x3ccac1=_0x3ccac1-0x0;var _0x10b20b=_0xd8b3[_0x3ccac1];return _0x10b20b;};'use strict';var _=require('lodash');var util=require(_0x3d8b('0x0'));var logger=require('../../config/logger')(_0x3d8b('0x1'));var moment=require(_0x3d8b('0x2'));var BPromise=require('bluebird');var rp=require(_0x3d8b('0x3'));var fs=require('fs');var path=require(_0x3d8b('0x4'));var rimraf=require(_0x3d8b('0x5'));var config=require('../../config/environment');var attributes=require(_0x3d8b('0x6'));module[_0x3d8b('0x7')]=function(_0x24931b,_0x3402f0){return _0x24931b[_0x3d8b('0x8')](_0x3d8b('0x9'),attributes,{'tableName':_0x3d8b('0xa'),'paranoid':![],'indexes':[{'name':_0x3d8b('0xb'),'fields':[_0x3d8b('0xb')]}],'timestamps':![]});};
\ No newline at end of file
index b0bdea7..61a2e54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3640=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4bef3c,_0x348f10){var _0x278946=function(_0x3fccf4){while(--_0x3fccf4){_0x4bef3c['push'](_0x4bef3c['shift']());}};_0x278946(++_0x348f10);}(_0x3640,0xec));var _0x0364=function(_0xa6cc5c,_0x239c99){_0xa6cc5c=_0xa6cc5c-0x0;var _0x44803d=_0x3640[_0xa6cc5c];return _0x44803d;};'use strict';var _=require(_0x0364('0x0'));var util=require(_0x0364('0x1'));var moment=require('moment');var BPromise=require(_0x0364('0x2'));var rs=require(_0x0364('0x3'));var fs=require('fs');var Redis=require(_0x0364('0x4'));var db=require(_0x0364('0x5'))['db'];var utils=require(_0x0364('0x6'));var logger=require(_0x0364('0x7'))('rpc');var config=require(_0x0364('0x8'));var jayson=require(_0x0364('0x9'));var client=jayson[_0x0364('0xa')][_0x0364('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4b02fb,_0x5876f7,_0x4c58b4){return new BPromise(function(_0x3dbc6f,_0x42c287){return client['request'](_0x4b02fb,_0x4c58b4)[_0x0364('0xc')](function(_0x378280){logger[_0x0364('0xd')](_0x0364('0xe'),_0x5876f7,_0x0364('0xf'));logger[_0x0364('0x10')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x5876f7,'request\x20sent',JSON[_0x0364('0x11')](_0x378280));if(_0x378280[_0x0364('0x12')]){if(_0x378280[_0x0364('0x12')][_0x0364('0x13')]===0x1f4){logger[_0x0364('0x12')](_0x0364('0xe'),_0x5876f7,_0x378280[_0x0364('0x12')][_0x0364('0x14')]);return _0x42c287(_0x378280[_0x0364('0x12')][_0x0364('0x14')]);}logger[_0x0364('0x12')]('VoiceMailMessage,\x20%s,\x20%s',_0x5876f7,_0x378280['error'][_0x0364('0x14')]);return _0x3dbc6f(_0x378280[_0x0364('0x12')]['message']);}else{logger[_0x0364('0xd')](_0x0364('0xe'),_0x5876f7,_0x0364('0xf'));_0x3dbc6f(_0x378280['result']['message']);}})[_0x0364('0x15')](function(_0x2f968c){logger[_0x0364('0x12')](_0x0364('0xe'),_0x5876f7,_0x2f968c);_0x42c287(_0x2f968c);});});}
\ No newline at end of file
+var _0xd36c=['../../config/environment','jayson/promise','http','request','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x58e931,_0x22c547){var _0x425696=function(_0x5a4819){while(--_0x5a4819){_0x58e931['push'](_0x58e931['shift']());}};_0x425696(++_0x22c547);}(_0xd36c,0x115));var _0xcd36=function(_0x32b993,_0x1c5989){_0x32b993=_0x32b993-0x0;var _0x482780=_0xd36c[_0x32b993];return _0x482780;};'use strict';var _=require(_0xcd36('0x0'));var util=require(_0xcd36('0x1'));var moment=require(_0xcd36('0x2'));var BPromise=require(_0xcd36('0x3'));var rs=require(_0xcd36('0x4'));var fs=require('fs');var Redis=require(_0xcd36('0x5'));var db=require(_0xcd36('0x6'))['db'];var utils=require(_0xcd36('0x7'));var logger=require('../../config/logger')(_0xcd36('0x8'));var config=require(_0xcd36('0x9'));var jayson=require(_0xcd36('0xa'));var client=jayson['client'][_0xcd36('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x407851,_0x211284,_0x17eeb6){return new BPromise(function(_0x2517c4,_0x5e1ad5){return client[_0xcd36('0xc')](_0x407851,_0x17eeb6)['then'](function(_0x26e42c){logger[_0xcd36('0xd')](_0xcd36('0xe'),_0x211284,_0xcd36('0xf'));logger['debug'](_0xcd36('0x10'),_0x211284,_0xcd36('0xf'),JSON[_0xcd36('0x11')](_0x26e42c));if(_0x26e42c[_0xcd36('0x12')]){if(_0x26e42c[_0xcd36('0x12')][_0xcd36('0x13')]===0x1f4){logger['error'](_0xcd36('0xe'),_0x211284,_0x26e42c[_0xcd36('0x12')][_0xcd36('0x14')]);return _0x5e1ad5(_0x26e42c[_0xcd36('0x12')][_0xcd36('0x14')]);}logger[_0xcd36('0x12')](_0xcd36('0xe'),_0x211284,_0x26e42c[_0xcd36('0x12')][_0xcd36('0x14')]);return _0x2517c4(_0x26e42c[_0xcd36('0x12')][_0xcd36('0x14')]);}else{logger['info'](_0xcd36('0xe'),_0x211284,_0xcd36('0xf'));_0x2517c4(_0x26e42c[_0xcd36('0x15')]['message']);}})['catch'](function(_0x253bed){logger[_0xcd36('0x12')](_0xcd36('0xe'),_0x211284,_0x253bed);_0x5e1ad5(_0x253bed);});});}
\ No newline at end of file
index 57654ec..f16e18c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd005=['update','delete','destroy','/:id/sounds/:id2','removeSound','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','index','get','isAuthenticated','show','/:id/sounds','getSounds','post','create','put','/:id'];(function(_0x397cfb,_0xb8f317){var _0x15fed9=function(_0x3eba43){while(--_0x3eba43){_0x397cfb['push'](_0x397cfb['shift']());}};_0x15fed9(++_0xb8f317);}(_0xd005,0x155));var _0x5d00=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xd005[_0x397e5f];return _0x5302b8;};'use strict';var multer=require(_0x5d00('0x0'));var util=require(_0x5d00('0x1'));var path=require('path');var timeout=require(_0x5d00('0x2'));var express=require('express');var router=express[_0x5d00('0x3')]();var fs_extra=require(_0x5d00('0x4'));var auth=require(_0x5d00('0x5'));var interaction=require(_0x5d00('0x6'));var config=require(_0x5d00('0x7'));var controller=require(_0x5d00('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x5d00('0x9')]);router[_0x5d00('0xa')]('/:id',auth[_0x5d00('0xb')](),controller[_0x5d00('0xc')]);router[_0x5d00('0xa')](_0x5d00('0xd'),auth['isAuthenticated'](),controller[_0x5d00('0xe')]);router[_0x5d00('0xf')]('/',auth[_0x5d00('0xb')](),controller[_0x5d00('0x10')]);router[_0x5d00('0xf')](_0x5d00('0xd'),auth[_0x5d00('0xb')](),controller['addSound']);router[_0x5d00('0x11')](_0x5d00('0x12'),auth[_0x5d00('0xb')](),controller[_0x5d00('0x13')]);router[_0x5d00('0x14')](_0x5d00('0x12'),auth['isAuthenticated'](),controller[_0x5d00('0x15')]);router[_0x5d00('0x14')](_0x5d00('0x16'),auth[_0x5d00('0xb')](),controller[_0x5d00('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x2d7e=['delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','/:id','show','/:id/sounds','getSounds','create','post','put','update'];(function(_0x461f6d,_0x45549b){var _0x4ab620=function(_0x1af48e){while(--_0x1af48e){_0x461f6d['push'](_0x461f6d['shift']());}};_0x4ab620(++_0x45549b);}(_0x2d7e,0x13e));var _0xe2d7=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x2d7e[_0x4565bf];return _0x5610ba;};'use strict';var multer=require(_0xe2d7('0x0'));var util=require(_0xe2d7('0x1'));var path=require(_0xe2d7('0x2'));var timeout=require(_0xe2d7('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xe2d7('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xe2d7('0x5'));var config=require(_0xe2d7('0x6'));var controller=require(_0xe2d7('0x7'));router[_0xe2d7('0x8')]('/',auth[_0xe2d7('0x9')](),controller['index']);router[_0xe2d7('0x8')](_0xe2d7('0xa'),auth[_0xe2d7('0x9')](),controller[_0xe2d7('0xb')]);router[_0xe2d7('0x8')](_0xe2d7('0xc'),auth[_0xe2d7('0x9')](),controller[_0xe2d7('0xd')]);router['post']('/',auth[_0xe2d7('0x9')](),controller[_0xe2d7('0xe')]);router[_0xe2d7('0xf')](_0xe2d7('0xc'),auth[_0xe2d7('0x9')](),controller['addSound']);router[_0xe2d7('0x10')]('/:id',auth[_0xe2d7('0x9')](),controller[_0xe2d7('0x11')]);router[_0xe2d7('0x12')](_0xe2d7('0xa'),auth[_0xe2d7('0x9')](),controller[_0xe2d7('0x13')]);router[_0xe2d7('0x12')]('/:id/sounds/:id2',auth[_0xe2d7('0x9')](),controller['removeSound']);module[_0xe2d7('0x14')]=router;
\ No newline at end of file
index 0d3ce25..e131dd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x493b=['name','ENUM','files','mp3nb','quietmp3nb','quietmp3','mp3','BOOLEAN','STRING'];(function(_0x38b212,_0x1226de){var _0x1fb3a8=function(_0x2ae6fe){while(--_0x2ae6fe){_0x38b212['push'](_0x38b212['shift']());}};_0x1fb3a8(++_0x1226de);}(_0x493b,0xbc));var _0xb493=function(_0x2b3df4,_0x4f24ee){_0x2b3df4=_0x2b3df4-0x0;var _0x7c4d17=_0x493b[_0x2b3df4];return _0x7c4d17;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xb493('0x0')],'allowNull':![],'unique':_0xb493('0x1')},'mode':{'type':Sequelize[_0xb493('0x2')]('custom',_0xb493('0x3'),_0xb493('0x4'),_0xb493('0x5'),_0xb493('0x6'),_0xb493('0x7')),'allowNull':!![],'defaultValue':_0xb493('0x3')},'directory':{'type':Sequelize[_0xb493('0x0')],'allowNull':!![]},'application':{'type':Sequelize[_0xb493('0x0')],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0xb493('0x0')],'allowNull':!![]},'stamp':{'type':'TIMESTAMP'},'defaultEntry':{'type':Sequelize[_0xb493('0x8')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd537=['TIMESTAMP','STRING','ENUM','custom','files','quietmp3nb','mp3','alpha'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0xd537,0x159));var _0x7d53=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xd537[_0x5d6456];return _0x4d66c1;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x7d53('0x0')],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0x7d53('0x1')](_0x7d53('0x2'),_0x7d53('0x3'),'mp3nb',_0x7d53('0x4'),'quietmp3',_0x7d53('0x5')),'allowNull':!![],'defaultValue':'files'},'directory':{'type':Sequelize[_0x7d53('0x0')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0x7d53('0x0')],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x7d53('0x6')},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0x7d53('0x7')},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index 78e9bae..050d6c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8b2=['format','basename','save_name','extname','%s.%s','symlinkSync','message','removeSound','id2','getSounds','nolimit','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','reject','save','update','destroy','then','MusicOnHolds','stack','name','send','index','fieldName','type','key','model','query','intersection','fields','length','attributes','hasOwnProperty','order','sort','where','filters','pick','merge','map','filter','options','VoiceMusicOnHold','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','include','find','body','create','sequelize','transaction','mode','files','directory','root','server/files/moh','0777','get','role','user','userProfileId','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','forEach','unlinkSync','join','rmdirSync','Sequelize','ValidationError','addSound','Sound','findOne','converted_format','createdAt','server/files/sounds/converted'];(function(_0x29157e,_0x26c1d0){var _0x3a172b=function(_0x417123){while(--_0x417123){_0x29157e['push'](_0x29157e['shift']());}};_0x3a172b(++_0x26c1d0);}(_0xb8b2,0x1d3));var _0x2b8b=function(_0x3a0c4f,_0x5dd1a3){_0x3a0c4f=_0x3a0c4f-0x0;var _0x247049=_0xb8b2[_0x3a0c4f];return _0x247049;};'use strict';var emlformat=require(_0x2b8b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2b8b('0x1'));var jsonpatch=require(_0x2b8b('0x2'));var rp=require(_0x2b8b('0x3'));var moment=require(_0x2b8b('0x4'));var BPromise=require(_0x2b8b('0x5'));var Mustache=require(_0x2b8b('0x6'));var util=require(_0x2b8b('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x2b8b('0x8'));var ejs=require(_0x2b8b('0x9'));var fs=require('fs');var fs_extra=require(_0x2b8b('0xa'));var _=require(_0x2b8b('0xb'));var squel=require(_0x2b8b('0xc'));var crypto=require('crypto');var jsforce=require(_0x2b8b('0xd'));var deskjs=require(_0x2b8b('0xe'));var toCsv=require(_0x2b8b('0x8'));var querystring=require(_0x2b8b('0xf'));var Papa=require('papaparse');var Redis=require(_0x2b8b('0x10'));var authService=require(_0x2b8b('0x11'));var qs=require(_0x2b8b('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2b8b('0x13'));var logger=require(_0x2b8b('0x14'))(_0x2b8b('0x15'));var utils=require(_0x2b8b('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2b8b('0x17'))['db'];function respondWithStatusCode(_0x21c362,_0x15e718){_0x15e718=_0x15e718||0xcc;return function(_0x74e22f){if(_0x74e22f){return _0x21c362[_0x2b8b('0x18')](_0x15e718);}return _0x21c362[_0x2b8b('0x19')](_0x15e718)[_0x2b8b('0x1a')]();};}function respondWithResult(_0x310db3,_0x1e4089){_0x1e4089=_0x1e4089||0xc8;return function(_0x4f70b2){if(_0x4f70b2){return _0x310db3[_0x2b8b('0x19')](_0x1e4089)[_0x2b8b('0x1b')](_0x4f70b2);}};}function respondWithFilteredResult(_0x445dff,_0x2c6e2f){return function(_0x4b387b){if(_0x4b387b){var _0x412ba6=typeof _0x2c6e2f['offset']===_0x2b8b('0x1c')&&typeof _0x2c6e2f[_0x2b8b('0x1d')]===_0x2b8b('0x1c');var _0xa3b487=_0x4b387b[_0x2b8b('0x1e')];var _0xc51315=_0x412ba6?0x0:_0x2c6e2f[_0x2b8b('0x1f')];var _0x81a7d2=_0x412ba6?_0x4b387b[_0x2b8b('0x1e')]:_0x2c6e2f['offset']+_0x2c6e2f['limit'];var _0x68ec97;if(_0x81a7d2>=_0xa3b487){_0x81a7d2=_0xa3b487;_0x68ec97=0xc8;}else{_0x68ec97=0xce;}_0x445dff[_0x2b8b('0x19')](_0x68ec97);return _0x445dff[_0x2b8b('0x20')]('Content-Range',_0xc51315+'-'+_0x81a7d2+'/'+_0xa3b487)[_0x2b8b('0x1b')](_0x4b387b);}return null;};}function patchUpdates(_0x5db79){return function(_0x2ed889){try{jsonpatch['apply'](_0x2ed889,_0x5db79,!![]);}catch(_0x4fb5d1){return BPromise[_0x2b8b('0x21')](_0x4fb5d1);}return _0x2ed889[_0x2b8b('0x22')]();};}function saveUpdates(_0x510346,_0x354cfd){return function(_0xa58be7){if(_0xa58be7){return _0xa58be7[_0x2b8b('0x23')](_0x510346)['then'](function(_0x32688d){return _0x32688d;});}return null;};}function removeEntity(_0x224809,_0x36f8d1){return function(_0x7f7f22){if(_0x7f7f22){return _0x7f7f22[_0x2b8b('0x24')]()[_0x2b8b('0x25')](function(){var _0x4c8ae4=_0x7f7f22['get']({'plain':!![]});var _0x4a2b74=_0x2b8b('0x26');return db['UserProfileResource'][_0x2b8b('0x24')]({'where':{'type':_0x4a2b74,'resourceId':_0x4c8ae4['id']}})[_0x2b8b('0x25')](function(){return _0x7f7f22;});})['then'](function(){_0x224809[_0x2b8b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5f24e3,_0x48190d){return function(_0x277b01){if(!_0x277b01){_0x5f24e3[_0x2b8b('0x18')](0x194);}return _0x277b01;};}function handleError(_0x145573,_0x2ca044){_0x2ca044=_0x2ca044||0x1f4;return function(_0x2a0047){logger['error'](_0x2a0047[_0x2b8b('0x27')]);if(_0x2a0047[_0x2b8b('0x28')]){delete _0x2a0047[_0x2b8b('0x28')];}_0x145573[_0x2b8b('0x19')](_0x2ca044)[_0x2b8b('0x29')](_0x2a0047);};}exports[_0x2b8b('0x2a')]=function(_0x269b68,_0x29b3a6){var _0xebc545={},_0x3f8fe1={},_0x4d388d={'count':0x0,'rows':[]};var _0x5c2048=_['map'](db['VoiceMusicOnHold']['rawAttributes'],function(_0x586d4b){return{'name':_0x586d4b[_0x2b8b('0x2b')],'type':_0x586d4b[_0x2b8b('0x2c')][_0x2b8b('0x2d')]};});_0x3f8fe1[_0x2b8b('0x2e')]=_['map'](_0x5c2048,'name');_0x3f8fe1[_0x2b8b('0x2f')]=_['keys'](_0x269b68[_0x2b8b('0x2f')]);_0x3f8fe1['filters']=_[_0x2b8b('0x30')](_0x3f8fe1[_0x2b8b('0x2e')],_0x3f8fe1[_0x2b8b('0x2f')]);_0xebc545['attributes']=_['intersection'](_0x3f8fe1[_0x2b8b('0x2e')],qs[_0x2b8b('0x31')](_0x269b68[_0x2b8b('0x2f')][_0x2b8b('0x31')]));_0xebc545['attributes']=_0xebc545['attributes'][_0x2b8b('0x32')]?_0xebc545[_0x2b8b('0x33')]:_0x3f8fe1[_0x2b8b('0x2e')];if(!_0x269b68['query'][_0x2b8b('0x34')]('nolimit')){_0xebc545[_0x2b8b('0x1d')]=qs[_0x2b8b('0x1d')](_0x269b68[_0x2b8b('0x2f')][_0x2b8b('0x1d')]);_0xebc545[_0x2b8b('0x1f')]=qs[_0x2b8b('0x1f')](_0x269b68[_0x2b8b('0x2f')][_0x2b8b('0x1f')]);}_0xebc545[_0x2b8b('0x35')]=qs[_0x2b8b('0x36')](_0x269b68[_0x2b8b('0x2f')][_0x2b8b('0x36')]);delete _0x269b68[_0x2b8b('0x2f')][_0x2b8b('0x36')];_0xebc545[_0x2b8b('0x37')]=qs[_0x2b8b('0x38')](_[_0x2b8b('0x39')](_0x269b68['query'],_0x3f8fe1['filters']),_0x5c2048);if(_0x269b68['query']['filter']){_0xebc545['where']=_[_0x2b8b('0x3a')](_0xebc545['where'],{'$or':_[_0x2b8b('0x3b')](_0x5c2048,function(_0x305622){if(_0x305622['type']!=='VIRTUAL'){var _0x4d3433={};_0x4d3433[_0x305622[_0x2b8b('0x28')]]={'$like':'%'+_0x269b68[_0x2b8b('0x2f')][_0x2b8b('0x3c')]+'%'};return _0x4d3433;}})});}_0xebc545=_[_0x2b8b('0x3a')]({},_0xebc545,_0x269b68[_0x2b8b('0x3d')]);var _0x47360b={'where':_0xebc545['where']};return db[_0x2b8b('0x3e')]['count'](_0x47360b)[_0x2b8b('0x25')](function(_0x27f598){_0x4d388d[_0x2b8b('0x1e')]=_0x27f598;if(_0x269b68['query'][_0x2b8b('0x3f')]){_0xebc545['include']=[{'all':!![]}];}return db[_0x2b8b('0x3e')][_0x2b8b('0x40')](_0xebc545);})[_0x2b8b('0x25')](function(_0x459c2e){_0x4d388d[_0x2b8b('0x41')]=_0x459c2e;return _0x4d388d;})[_0x2b8b('0x25')](respondWithFilteredResult(_0x29b3a6,_0xebc545))[_0x2b8b('0x42')](handleError(_0x29b3a6,null));};exports[_0x2b8b('0x43')]=function(_0x4e7243,_0x4e4e97){var _0xad4216={'raw':![],'where':{'id':_0x4e7243[_0x2b8b('0x44')]['id']}},_0x158086={};_0x158086[_0x2b8b('0x2e')]=_[_0x2b8b('0x45')](db['VoiceMusicOnHold'][_0x2b8b('0x46')]);_0x158086[_0x2b8b('0x2f')]=_[_0x2b8b('0x45')](_0x4e7243['query']);_0x158086[_0x2b8b('0x38')]=_[_0x2b8b('0x30')](_0x158086['model'],_0x158086[_0x2b8b('0x2f')]);_0xad4216['attributes']=_[_0x2b8b('0x30')](_0x158086[_0x2b8b('0x2e')],qs['fields'](_0x4e7243['query'][_0x2b8b('0x31')]));_0xad4216[_0x2b8b('0x33')]=_0xad4216['attributes'][_0x2b8b('0x32')]?_0xad4216[_0x2b8b('0x33')]:_0x158086[_0x2b8b('0x2e')];if(_0x4e7243[_0x2b8b('0x2f')][_0x2b8b('0x3f')]){_0xad4216[_0x2b8b('0x47')]=[{'all':!![]}];}_0xad4216=_[_0x2b8b('0x3a')]({},_0xad4216,_0x4e7243[_0x2b8b('0x3d')]);return db[_0x2b8b('0x3e')][_0x2b8b('0x48')](_0xad4216)[_0x2b8b('0x25')](handleEntityNotFound(_0x4e4e97,null))['then'](respondWithResult(_0x4e4e97,null))[_0x2b8b('0x42')](handleError(_0x4e4e97,null));};exports[_0x2b8b('0x23')]=function(_0x4c4c85,_0x475e4f){if(_0x4c4c85[_0x2b8b('0x49')]['id']){delete _0x4c4c85[_0x2b8b('0x49')]['id'];}return db['VoiceMusicOnHold']['find']({'where':{'id':_0x4c4c85[_0x2b8b('0x44')]['id']}})[_0x2b8b('0x25')](handleEntityNotFound(_0x475e4f,null))[_0x2b8b('0x25')](saveUpdates(_0x4c4c85[_0x2b8b('0x49')],null))[_0x2b8b('0x25')](respondWithResult(_0x475e4f,null))['catch'](handleError(_0x475e4f,null));};exports[_0x2b8b('0x4a')]=function(_0x478a12,_0x5efcef,_0x39fc3c){return db[_0x2b8b('0x4b')][_0x2b8b('0x4c')](function(_0x57ba6e){if(_0x478a12[_0x2b8b('0x49')][_0x2b8b('0x4d')]===_0x2b8b('0x4e')){_0x478a12['body'][_0x2b8b('0x4f')]=path['join'](config[_0x2b8b('0x50')],_0x2b8b('0x51'),_0x478a12[_0x2b8b('0x49')][_0x2b8b('0x28')]);}return db[_0x2b8b('0x3e')]['create'](_0x478a12[_0x2b8b('0x49')],{'transaction':_0x57ba6e})['then'](function(_0x45834b){if(_0x478a12['body']['mode']===_0x2b8b('0x4e')){fs['mkdirSync'](_0x45834b[_0x2b8b('0x4f')],parseInt(_0x2b8b('0x52'),0x8));}var _0x1da4d4=_0x478a12['user'][_0x2b8b('0x53')]({'plain':!![]});if(!_0x1da4d4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1da4d4[_0x2b8b('0x54')]===_0x2b8b('0x55')){var _0x267b6d=_0x45834b['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0x2b8b('0x26'),'userProfileId':_0x1da4d4[_0x2b8b('0x56')]},'raw':!![]})[_0x2b8b('0x25')](function(_0x4f7094){if(_0x4f7094&&_0x4f7094['autoAssociation']===0x0){return db[_0x2b8b('0x57')][_0x2b8b('0x4a')]({'name':_0x267b6d[_0x2b8b('0x28')],'resourceId':_0x267b6d['id'],'type':_0x4f7094['name'],'sectionId':_0x4f7094['id']},{})['then'](function(){return _0x45834b;});}else{return _0x45834b;}})[_0x2b8b('0x42')](function(_0xdd149e){logger[_0x2b8b('0x58')](_0x2b8b('0x59'),_0xdd149e);});}return _0x45834b;});})[_0x2b8b('0x25')](respondWithResult(_0x5efcef,0xc9))[_0x2b8b('0x42')](handleError(_0x5efcef,null));};exports[_0x2b8b('0x24')]=function(_0x194007,_0x5c3956,_0x19d79d){var _0xa684df;return db[_0x2b8b('0x3e')][_0x2b8b('0x48')]({'where':{'id':_0x194007['params']['id']}})['then'](function(_0x500aff){if(_0x500aff){return db[_0x2b8b('0x4b')][_0x2b8b('0x4c')](function(_0xc022ee){return _0x500aff[_0x2b8b('0x24')]({'transaction':_0xc022ee,'raw':!![]})[_0x2b8b('0x25')](function(_0x4a5416){if(_0x4a5416['directory']){fs[_0x2b8b('0x5a')](_0x4a5416[_0x2b8b('0x4f')])[_0x2b8b('0x5b')](function(_0x366fc9){fs[_0x2b8b('0x5c')](path[_0x2b8b('0x5d')](_0x4a5416[_0x2b8b('0x4f')],_0x366fc9));});fs[_0x2b8b('0x5e')](_0x4a5416[_0x2b8b('0x4f')]);}return _0x4a5416;});})[_0x2b8b('0x42')](function(_0x23969b){throw new db[(_0x2b8b('0x5f'))][(_0x2b8b('0x60'))](_0x23969b['message']);});}})[_0x2b8b('0x25')](handleEntityNotFound(_0x5c3956,null))[_0x2b8b('0x25')](removeEntity(_0x5c3956,null))[_0x2b8b('0x42')](handleError(_0x5c3956,null));};exports['addSound']=function(_0x416196,_0x5474d6,_0x271f0e){return db[_0x2b8b('0x4b')][_0x2b8b('0x4c')](function(_0x3c5c0d){var _0x54b73e;return db[_0x2b8b('0x3e')]['find']({'where':{'id':_0x416196[_0x2b8b('0x44')]['id']}})[_0x2b8b('0x25')](function(_0x2779b4){if(_0x2779b4){_0x54b73e=_0x2779b4;return _0x2779b4[_0x2b8b('0x61')](_0x416196[_0x2b8b('0x49')]['id'],{'transaction':_0x3c5c0d});}})[_0x2b8b('0x25')](function(_0x46d4b0){if(_0x46d4b0){return db[_0x2b8b('0x62')][_0x2b8b('0x63')]({'where':{'id':_0x416196[_0x2b8b('0x49')]['id']},'attributes':['id',_0x2b8b('0x28'),'save_name',_0x2b8b('0x64'),_0x2b8b('0x65')],'raw':!![]});}})[_0x2b8b('0x25')](function(_0xc67c94){if(_0xc67c94){var _0x2ccdef=path['join'](config[_0x2b8b('0x50')],_0x2b8b('0x66'),util[_0x2b8b('0x67')]('%s.%s',path[_0x2b8b('0x68')](_0xc67c94[_0x2b8b('0x69')],path[_0x2b8b('0x6a')](_0xc67c94[_0x2b8b('0x69')])),_0xc67c94['converted_format']));var _0x3b8f93=path[_0x2b8b('0x5d')](config[_0x2b8b('0x50')],_0x2b8b('0x51'),_0x54b73e[_0x2b8b('0x28')],util[_0x2b8b('0x67')](_0x2b8b('0x6b'),_0xc67c94['name'],_0xc67c94[_0x2b8b('0x64')]));fs[_0x2b8b('0x6c')](_0x2ccdef,_0x3b8f93);return _0xc67c94;}})[_0x2b8b('0x42')](function(_0x1025cd){throw new db[(_0x2b8b('0x5f'))]['ValidationError'](_0x1025cd[_0x2b8b('0x6d')]);});})[_0x2b8b('0x25')](handleEntityNotFound(_0x5474d6,null))['then'](respondWithResult(_0x5474d6,0xc9))[_0x2b8b('0x42')](handleError(_0x5474d6,null));};exports[_0x2b8b('0x6e')]=function(_0x1fe109,_0x400f2f,_0x33d7b3){return db['sequelize']['transaction'](function(_0x20f942){var _0x393116;return db[_0x2b8b('0x3e')][_0x2b8b('0x63')]({'where':{'id':_0x1fe109[_0x2b8b('0x44')]['id']}})[_0x2b8b('0x25')](handleEntityNotFound(_0x400f2f,null))[_0x2b8b('0x25')](function(_0x19e556){if(_0x19e556){_0x393116=_0x19e556;return _0x19e556[_0x2b8b('0x6e')](_0x1fe109[_0x2b8b('0x44')]['id2']);}})[_0x2b8b('0x25')](function(_0x47d28b){if(_0x47d28b){return db[_0x2b8b('0x62')][_0x2b8b('0x63')]({'where':{'id':_0x1fe109[_0x2b8b('0x44')][_0x2b8b('0x6f')]},'attributes':['id',_0x2b8b('0x28'),_0x2b8b('0x69'),_0x2b8b('0x64'),_0x2b8b('0x65')],'raw':!![]});}})[_0x2b8b('0x25')](function(_0x5deea2){if(_0x5deea2){fs[_0x2b8b('0x5c')](path[_0x2b8b('0x5d')](_0x393116[_0x2b8b('0x4f')],util['format'](_0x2b8b('0x6b'),_0x5deea2['name'],_0x5deea2[_0x2b8b('0x64')])));return _0x5deea2;}})[_0x2b8b('0x42')](function(_0x166bae){throw new db[(_0x2b8b('0x5f'))][(_0x2b8b('0x60'))](_0x166bae[_0x2b8b('0x6d')]);});})[_0x2b8b('0x25')](handleEntityNotFound(_0x400f2f,null))['then'](respondWithStatusCode(_0x400f2f,0xcc))[_0x2b8b('0x42')](handleError(_0x400f2f,null));};exports[_0x2b8b('0x70')]=function(_0x39c290,_0x460c74,_0x5b2556){var _0x1c6b9b={};var _0x780628={};var _0x167f3a;var _0x55e078;return db[_0x2b8b('0x3e')][_0x2b8b('0x63')]({'where':{'id':_0x39c290[_0x2b8b('0x44')]['id']}})[_0x2b8b('0x25')](handleEntityNotFound(_0x460c74,null))[_0x2b8b('0x25')](function(_0x3bd07f){if(_0x3bd07f){_0x167f3a=_0x3bd07f;_0x780628[_0x2b8b('0x2e')]=_['keys'](db['Sound'][_0x2b8b('0x46')]);_0x780628['query']=_[_0x2b8b('0x45')](_0x39c290[_0x2b8b('0x2f')]);_0x780628['filters']=_[_0x2b8b('0x30')](_0x780628[_0x2b8b('0x2e')],_0x780628[_0x2b8b('0x2f')]);_0x1c6b9b[_0x2b8b('0x33')]=_[_0x2b8b('0x30')](_0x780628[_0x2b8b('0x2e')],qs[_0x2b8b('0x31')](_0x39c290['query'][_0x2b8b('0x31')]));_0x1c6b9b[_0x2b8b('0x33')]=_0x1c6b9b[_0x2b8b('0x33')][_0x2b8b('0x32')]?_0x1c6b9b[_0x2b8b('0x33')]:_0x780628[_0x2b8b('0x2e')];_0x1c6b9b[_0x2b8b('0x35')]=qs[_0x2b8b('0x36')](_0x39c290['query'][_0x2b8b('0x36')]);_0x1c6b9b[_0x2b8b('0x37')]=qs[_0x2b8b('0x38')](_[_0x2b8b('0x39')](_0x39c290[_0x2b8b('0x2f')],_0x780628[_0x2b8b('0x38')]));if(_0x39c290[_0x2b8b('0x2f')][_0x2b8b('0x3c')]){_0x1c6b9b[_0x2b8b('0x37')]=_[_0x2b8b('0x3a')](_0x1c6b9b[_0x2b8b('0x37')],{'$or':_[_0x2b8b('0x3b')](_0x1c6b9b[_0x2b8b('0x33')],function(_0x4b6868){var _0x58c8a1={};_0x58c8a1[_0x4b6868]={'$like':'%'+_0x39c290[_0x2b8b('0x2f')]['filter']+'%'};return _0x58c8a1;})});}_0x1c6b9b=_[_0x2b8b('0x3a')]({},_0x1c6b9b,_0x39c290[_0x2b8b('0x3d')]);return _0x167f3a[_0x2b8b('0x70')](_0x1c6b9b);}})[_0x2b8b('0x25')](function(_0xe7a211){if(_0xe7a211){_0x55e078=_0xe7a211[_0x2b8b('0x32')];if(!_0x39c290[_0x2b8b('0x2f')][_0x2b8b('0x34')](_0x2b8b('0x71'))){_0x1c6b9b['limit']=qs['limit'](_0x39c290[_0x2b8b('0x2f')][_0x2b8b('0x1d')]);_0x1c6b9b[_0x2b8b('0x1f')]=qs['offset'](_0x39c290[_0x2b8b('0x2f')][_0x2b8b('0x1f')]);}return _0x167f3a[_0x2b8b('0x70')](_0x1c6b9b);}})[_0x2b8b('0x25')](function(_0x2c5522){if(_0x2c5522){return _0x2c5522?{'count':_0x55e078,'rows':_0x2c5522}:null;}})[_0x2b8b('0x25')](respondWithResult(_0x460c74,null))[_0x2b8b('0x42')](handleError(_0x460c74,null));};
\ No newline at end of file
+var _0x146c=['findOne','id2','getSounds','length','order','filter','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','limit','undefined','count','offset','set','Content-Range','apply','then','destroy','get','UserProfileResource','sendStatus','stack','name','send','index','map','VoiceMusicOnHold','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','pick','merge','where','VIRTUAL','include','findAll','rows','catch','show','rawAttributes','includeAll','options','find','update','body','params','sequelize','transaction','mode','files','directory','join','root','server/files/moh','create','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','unlinkSync','rmdirSync','ValidationError','message','addSound','Sound','converted_format','server/files/sounds/converted','format','save_name','%s.%s','Sequelize','removeSound'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x146c,0x1c6));var _0xc146=function(_0x3bbc7e,_0x4c27c7){_0x3bbc7e=_0x3bbc7e-0x0;var _0x250a02=_0x146c[_0x3bbc7e];return _0x250a02;};'use strict';var emlformat=require(_0xc146('0x0'));var rimraf=require(_0xc146('0x1'));var zipdir=require(_0xc146('0x2'));var jsonpatch=require(_0xc146('0x3'));var rp=require(_0xc146('0x4'));var moment=require(_0xc146('0x5'));var BPromise=require(_0xc146('0x6'));var Mustache=require('mustache');var util=require(_0xc146('0x7'));var path=require(_0xc146('0x8'));var sox=require(_0xc146('0x9'));var csv=require('to-csv');var ejs=require(_0xc146('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc146('0xb'));var squel=require(_0xc146('0xc'));var crypto=require(_0xc146('0xd'));var jsforce=require(_0xc146('0xe'));var deskjs=require(_0xc146('0xf'));var toCsv=require(_0xc146('0x10'));var querystring=require(_0xc146('0x11'));var Papa=require(_0xc146('0x12'));var Redis=require(_0xc146('0x13'));var authService=require(_0xc146('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xc146('0x15'));var hardwareService=require(_0xc146('0x16'));var logger=require(_0xc146('0x17'))(_0xc146('0x18'));var utils=require(_0xc146('0x19'));var config=require(_0xc146('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xc146('0x1b'))['db'];function respondWithStatusCode(_0x4abb83,_0x2f92a8){_0x2f92a8=_0x2f92a8||0xcc;return function(_0x1cfc9a){if(_0x1cfc9a){return _0x4abb83['sendStatus'](_0x2f92a8);}return _0x4abb83['status'](_0x2f92a8)[_0xc146('0x1c')]();};}function respondWithResult(_0x2a4ab5,_0x15d570){_0x15d570=_0x15d570||0xc8;return function(_0x4c2d2d){if(_0x4c2d2d){return _0x2a4ab5[_0xc146('0x1d')](_0x15d570)[_0xc146('0x1e')](_0x4c2d2d);}};}function respondWithFilteredResult(_0x2c38f2,_0x104926){return function(_0x40ae2c){if(_0x40ae2c){var _0x5bd016=typeof _0x104926['offset']==='undefined'&&typeof _0x104926[_0xc146('0x1f')]===_0xc146('0x20');var _0x11904d=_0x40ae2c[_0xc146('0x21')];var _0x3a55e1=_0x5bd016?0x0:_0x104926[_0xc146('0x22')];var _0x3ced8b=_0x5bd016?_0x40ae2c[_0xc146('0x21')]:_0x104926[_0xc146('0x22')]+_0x104926['limit'];var _0x1792a8;if(_0x3ced8b>=_0x11904d){_0x3ced8b=_0x11904d;_0x1792a8=0xc8;}else{_0x1792a8=0xce;}_0x2c38f2[_0xc146('0x1d')](_0x1792a8);return _0x2c38f2[_0xc146('0x23')](_0xc146('0x24'),_0x3a55e1+'-'+_0x3ced8b+'/'+_0x11904d)[_0xc146('0x1e')](_0x40ae2c);}return null;};}function patchUpdates(_0x17ab95){return function(_0x284343){try{jsonpatch[_0xc146('0x25')](_0x284343,_0x17ab95,!![]);}catch(_0x6f454d){return BPromise['reject'](_0x6f454d);}return _0x284343['save']();};}function saveUpdates(_0x3a2fd4,_0x40ff5d){return function(_0x573bac){if(_0x573bac){return _0x573bac['update'](_0x3a2fd4)[_0xc146('0x26')](function(_0x47edad){return _0x47edad;});}return null;};}function removeEntity(_0x4cad60,_0x4bbfad){return function(_0x2d8417){if(_0x2d8417){return _0x2d8417[_0xc146('0x27')]()[_0xc146('0x26')](function(){var _0x2af924=_0x2d8417[_0xc146('0x28')]({'plain':!![]});var _0xaa8296='MusicOnHolds';return db[_0xc146('0x29')][_0xc146('0x27')]({'where':{'type':_0xaa8296,'resourceId':_0x2af924['id']}})[_0xc146('0x26')](function(){return _0x2d8417;});})['then'](function(){_0x4cad60[_0xc146('0x1d')](0xcc)[_0xc146('0x1c')]();});}};}function handleEntityNotFound(_0x8286d6,_0x55a75c){return function(_0x255270){if(!_0x255270){_0x8286d6[_0xc146('0x2a')](0x194);}return _0x255270;};}function handleError(_0x25e61b,_0x56916e){_0x56916e=_0x56916e||0x1f4;return function(_0x4ea659){logger['error'](_0x4ea659[_0xc146('0x2b')]);if(_0x4ea659[_0xc146('0x2c')]){delete _0x4ea659[_0xc146('0x2c')];}_0x25e61b[_0xc146('0x1d')](_0x56916e)[_0xc146('0x2d')](_0x4ea659);};}exports[_0xc146('0x2e')]=function(_0x530ebf,_0x337151){var _0x144523={},_0x515486={},_0x4d254b={'count':0x0,'rows':[]};var _0x2e17d3=_[_0xc146('0x2f')](db[_0xc146('0x30')]['rawAttributes'],function(_0x338541){return{'name':_0x338541['fieldName'],'type':_0x338541[_0xc146('0x31')][_0xc146('0x32')]};});_0x515486[_0xc146('0x33')]=_[_0xc146('0x2f')](_0x2e17d3,'name');_0x515486[_0xc146('0x34')]=_[_0xc146('0x35')](_0x530ebf[_0xc146('0x34')]);_0x515486[_0xc146('0x36')]=_[_0xc146('0x37')](_0x515486[_0xc146('0x33')],_0x515486['query']);_0x144523[_0xc146('0x38')]=_[_0xc146('0x37')](_0x515486['model'],qs[_0xc146('0x39')](_0x530ebf[_0xc146('0x34')][_0xc146('0x39')]));_0x144523[_0xc146('0x38')]=_0x144523[_0xc146('0x38')]['length']?_0x144523[_0xc146('0x38')]:_0x515486['model'];if(!_0x530ebf[_0xc146('0x34')][_0xc146('0x3a')](_0xc146('0x3b'))){_0x144523[_0xc146('0x1f')]=qs[_0xc146('0x1f')](_0x530ebf[_0xc146('0x34')][_0xc146('0x1f')]);_0x144523[_0xc146('0x22')]=qs[_0xc146('0x22')](_0x530ebf[_0xc146('0x34')][_0xc146('0x22')]);}_0x144523['order']=qs[_0xc146('0x3c')](_0x530ebf[_0xc146('0x34')][_0xc146('0x3c')]);delete _0x530ebf[_0xc146('0x34')]['sort'];_0x144523['where']=qs[_0xc146('0x36')](_[_0xc146('0x3d')](_0x530ebf[_0xc146('0x34')],_0x515486['filters']),_0x2e17d3);if(_0x530ebf[_0xc146('0x34')]['filter']){_0x144523['where']=_[_0xc146('0x3e')](_0x144523[_0xc146('0x3f')],{'$or':_[_0xc146('0x2f')](_0x2e17d3,function(_0x370d4d){if(_0x370d4d[_0xc146('0x31')]!==_0xc146('0x40')){var _0x477ce7={};_0x477ce7[_0x370d4d[_0xc146('0x2c')]]={'$like':'%'+_0x530ebf[_0xc146('0x34')]['filter']+'%'};return _0x477ce7;}})});}_0x144523=_[_0xc146('0x3e')]({},_0x144523,_0x530ebf['options']);var _0x1b44c4={'where':_0x144523[_0xc146('0x3f')]};return db['VoiceMusicOnHold'][_0xc146('0x21')](_0x1b44c4)['then'](function(_0x2c581e){_0x4d254b['count']=_0x2c581e;if(_0x530ebf[_0xc146('0x34')]['includeAll']){_0x144523[_0xc146('0x41')]=[{'all':!![]}];}return db[_0xc146('0x30')][_0xc146('0x42')](_0x144523);})[_0xc146('0x26')](function(_0xfbb761){_0x4d254b[_0xc146('0x43')]=_0xfbb761;return _0x4d254b;})[_0xc146('0x26')](respondWithFilteredResult(_0x337151,_0x144523))[_0xc146('0x44')](handleError(_0x337151,null));};exports[_0xc146('0x45')]=function(_0x2dec57,_0xcc1d88){var _0x24ed2c={'raw':![],'where':{'id':_0x2dec57['params']['id']}},_0xe618f2={};_0xe618f2[_0xc146('0x33')]=_[_0xc146('0x35')](db['VoiceMusicOnHold'][_0xc146('0x46')]);_0xe618f2['query']=_['keys'](_0x2dec57[_0xc146('0x34')]);_0xe618f2['filters']=_[_0xc146('0x37')](_0xe618f2[_0xc146('0x33')],_0xe618f2[_0xc146('0x34')]);_0x24ed2c['attributes']=_[_0xc146('0x37')](_0xe618f2[_0xc146('0x33')],qs['fields'](_0x2dec57['query'][_0xc146('0x39')]));_0x24ed2c[_0xc146('0x38')]=_0x24ed2c[_0xc146('0x38')]['length']?_0x24ed2c[_0xc146('0x38')]:_0xe618f2[_0xc146('0x33')];if(_0x2dec57[_0xc146('0x34')][_0xc146('0x47')]){_0x24ed2c[_0xc146('0x41')]=[{'all':!![]}];}_0x24ed2c=_[_0xc146('0x3e')]({},_0x24ed2c,_0x2dec57[_0xc146('0x48')]);return db[_0xc146('0x30')][_0xc146('0x49')](_0x24ed2c)[_0xc146('0x26')](handleEntityNotFound(_0xcc1d88,null))[_0xc146('0x26')](respondWithResult(_0xcc1d88,null))['catch'](handleError(_0xcc1d88,null));};exports[_0xc146('0x4a')]=function(_0x1f82ea,_0x4518b0){if(_0x1f82ea[_0xc146('0x4b')]['id']){delete _0x1f82ea[_0xc146('0x4b')]['id'];}return db[_0xc146('0x30')]['find']({'where':{'id':_0x1f82ea[_0xc146('0x4c')]['id']}})[_0xc146('0x26')](handleEntityNotFound(_0x4518b0,null))[_0xc146('0x26')](saveUpdates(_0x1f82ea[_0xc146('0x4b')],null))['then'](respondWithResult(_0x4518b0,null))['catch'](handleError(_0x4518b0,null));};exports['create']=function(_0x326bad,_0x5e4b05,_0x3974f3){return db[_0xc146('0x4d')][_0xc146('0x4e')](function(_0x38cc0f){if(_0x326bad[_0xc146('0x4b')][_0xc146('0x4f')]===_0xc146('0x50')){_0x326bad['body'][_0xc146('0x51')]=path[_0xc146('0x52')](config[_0xc146('0x53')],_0xc146('0x54'),_0x326bad[_0xc146('0x4b')]['name']);}return db['VoiceMusicOnHold'][_0xc146('0x55')](_0x326bad['body'],{'transaction':_0x38cc0f})[_0xc146('0x26')](function(_0x414ec6){if(_0x326bad[_0xc146('0x4b')][_0xc146('0x4f')]===_0xc146('0x50')){fs['mkdirSync'](_0x414ec6[_0xc146('0x51')],parseInt(_0xc146('0x56'),0x8));}var _0x25267d=_0x326bad[_0xc146('0x57')]['get']({'plain':!![]});if(!_0x25267d)throw new Error(_0xc146('0x58'));if(_0x25267d[_0xc146('0x59')]==='user'){var _0x145f53=_0x414ec6['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':'MusicOnHolds','userProfileId':_0x25267d['userProfileId']},'raw':!![]})['then'](function(_0x27bfcf){if(_0x27bfcf&&_0x27bfcf['autoAssociation']===0x0){return db['UserProfileResource'][_0xc146('0x55')]({'name':_0x145f53[_0xc146('0x2c')],'resourceId':_0x145f53['id'],'type':_0x27bfcf['name'],'sectionId':_0x27bfcf['id']},{})[_0xc146('0x26')](function(){return _0x414ec6;});}else{return _0x414ec6;}})['catch'](function(_0x417cec){logger[_0xc146('0x5a')](_0xc146('0x5b'),_0x417cec);});}return _0x414ec6;});})[_0xc146('0x26')](respondWithResult(_0x5e4b05,0xc9))[_0xc146('0x44')](handleError(_0x5e4b05,null));};exports['destroy']=function(_0x2a56d9,_0x186e91,_0x6fd067){var _0x43ecab;return db[_0xc146('0x30')][_0xc146('0x49')]({'where':{'id':_0x2a56d9['params']['id']}})['then'](function(_0x4733a3){if(_0x4733a3){return db[_0xc146('0x4d')][_0xc146('0x4e')](function(_0x54733c){return _0x4733a3[_0xc146('0x27')]({'transaction':_0x54733c,'raw':!![]})[_0xc146('0x26')](function(_0x245710){if(_0x245710[_0xc146('0x51')]){fs[_0xc146('0x5c')](_0x245710['directory'])['forEach'](function(_0x57abd5){fs[_0xc146('0x5d')](path[_0xc146('0x52')](_0x245710[_0xc146('0x51')],_0x57abd5));});fs[_0xc146('0x5e')](_0x245710[_0xc146('0x51')]);}return _0x245710;});})['catch'](function(_0x554854){throw new db['Sequelize'][(_0xc146('0x5f'))](_0x554854[_0xc146('0x60')]);});}})[_0xc146('0x26')](handleEntityNotFound(_0x186e91,null))[_0xc146('0x26')](removeEntity(_0x186e91,null))[_0xc146('0x44')](handleError(_0x186e91,null));};exports[_0xc146('0x61')]=function(_0x365c47,_0x2924c6,_0x694580){return db[_0xc146('0x4d')]['transaction'](function(_0x622e99){var _0x264619;return db['VoiceMusicOnHold']['find']({'where':{'id':_0x365c47['params']['id']}})['then'](function(_0xb85905){if(_0xb85905){_0x264619=_0xb85905;return _0xb85905['addSound'](_0x365c47[_0xc146('0x4b')]['id'],{'transaction':_0x622e99});}})['then'](function(_0x3ee149){if(_0x3ee149){return db[_0xc146('0x62')]['findOne']({'where':{'id':_0x365c47[_0xc146('0x4b')]['id']},'attributes':['id','name','save_name',_0xc146('0x63'),'createdAt'],'raw':!![]});}})['then'](function(_0x26250e){if(_0x26250e){var _0x16274e=path[_0xc146('0x52')](config[_0xc146('0x53')],_0xc146('0x64'),util[_0xc146('0x65')]('%s.%s',path['basename'](_0x26250e[_0xc146('0x66')],path['extname'](_0x26250e[_0xc146('0x66')])),_0x26250e[_0xc146('0x63')]));var _0x4fc15f=path[_0xc146('0x52')](config['root'],'server/files/moh',_0x264619['name'],util[_0xc146('0x65')](_0xc146('0x67'),_0x26250e['name'],_0x26250e[_0xc146('0x63')]));fs['symlinkSync'](_0x16274e,_0x4fc15f);return _0x26250e;}})['catch'](function(_0x133b80){throw new db[(_0xc146('0x68'))][(_0xc146('0x5f'))](_0x133b80['message']);});})[_0xc146('0x26')](handleEntityNotFound(_0x2924c6,null))[_0xc146('0x26')](respondWithResult(_0x2924c6,0xc9))['catch'](handleError(_0x2924c6,null));};exports[_0xc146('0x69')]=function(_0x3beb77,_0xfa54b1,_0x2cdee4){return db[_0xc146('0x4d')][_0xc146('0x4e')](function(_0x158f65){var _0xfee9b5;return db['VoiceMusicOnHold'][_0xc146('0x6a')]({'where':{'id':_0x3beb77[_0xc146('0x4c')]['id']}})[_0xc146('0x26')](handleEntityNotFound(_0xfa54b1,null))[_0xc146('0x26')](function(_0x3932f7){if(_0x3932f7){_0xfee9b5=_0x3932f7;return _0x3932f7['removeSound'](_0x3beb77[_0xc146('0x4c')][_0xc146('0x6b')]);}})['then'](function(_0x2f4a94){if(_0x2f4a94){return db['Sound'][_0xc146('0x6a')]({'where':{'id':_0x3beb77[_0xc146('0x4c')]['id2']},'attributes':['id',_0xc146('0x2c'),_0xc146('0x66'),_0xc146('0x63'),'createdAt'],'raw':!![]});}})[_0xc146('0x26')](function(_0x4e4b3d){if(_0x4e4b3d){fs[_0xc146('0x5d')](path[_0xc146('0x52')](_0xfee9b5[_0xc146('0x51')],util[_0xc146('0x65')](_0xc146('0x67'),_0x4e4b3d[_0xc146('0x2c')],_0x4e4b3d[_0xc146('0x63')])));return _0x4e4b3d;}})[_0xc146('0x44')](function(_0x1c2421){throw new db['Sequelize']['ValidationError'](_0x1c2421['message']);});})[_0xc146('0x26')](handleEntityNotFound(_0xfa54b1,null))['then'](respondWithStatusCode(_0xfa54b1,0xcc))[_0xc146('0x44')](handleError(_0xfa54b1,null));};exports[_0xc146('0x6c')]=function(_0x1b4727,_0x3c6d6e,_0x25b1ae){var _0x4dfe2f={};var _0x3a5e47={};var _0x1ff5f0;var _0x44b0ef;return db[_0xc146('0x30')][_0xc146('0x6a')]({'where':{'id':_0x1b4727[_0xc146('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3c6d6e,null))['then'](function(_0xa31bc8){if(_0xa31bc8){_0x1ff5f0=_0xa31bc8;_0x3a5e47['model']=_[_0xc146('0x35')](db[_0xc146('0x62')]['rawAttributes']);_0x3a5e47[_0xc146('0x34')]=_[_0xc146('0x35')](_0x1b4727[_0xc146('0x34')]);_0x3a5e47[_0xc146('0x36')]=_[_0xc146('0x37')](_0x3a5e47[_0xc146('0x33')],_0x3a5e47['query']);_0x4dfe2f[_0xc146('0x38')]=_[_0xc146('0x37')](_0x3a5e47[_0xc146('0x33')],qs[_0xc146('0x39')](_0x1b4727[_0xc146('0x34')][_0xc146('0x39')]));_0x4dfe2f['attributes']=_0x4dfe2f[_0xc146('0x38')][_0xc146('0x6d')]?_0x4dfe2f[_0xc146('0x38')]:_0x3a5e47[_0xc146('0x33')];_0x4dfe2f[_0xc146('0x6e')]=qs['sort'](_0x1b4727['query'][_0xc146('0x3c')]);_0x4dfe2f[_0xc146('0x3f')]=qs[_0xc146('0x36')](_['pick'](_0x1b4727[_0xc146('0x34')],_0x3a5e47[_0xc146('0x36')]));if(_0x1b4727[_0xc146('0x34')][_0xc146('0x6f')]){_0x4dfe2f[_0xc146('0x3f')]=_['merge'](_0x4dfe2f[_0xc146('0x3f')],{'$or':_[_0xc146('0x2f')](_0x4dfe2f[_0xc146('0x38')],function(_0x6f8ae3){var _0x3d9d52={};_0x3d9d52[_0x6f8ae3]={'$like':'%'+_0x1b4727[_0xc146('0x34')][_0xc146('0x6f')]+'%'};return _0x3d9d52;})});}_0x4dfe2f=_[_0xc146('0x3e')]({},_0x4dfe2f,_0x1b4727[_0xc146('0x48')]);return _0x1ff5f0['getSounds'](_0x4dfe2f);}})['then'](function(_0x303314){if(_0x303314){_0x44b0ef=_0x303314[_0xc146('0x6d')];if(!_0x1b4727[_0xc146('0x34')]['hasOwnProperty'](_0xc146('0x3b'))){_0x4dfe2f[_0xc146('0x1f')]=qs[_0xc146('0x1f')](_0x1b4727[_0xc146('0x34')][_0xc146('0x1f')]);_0x4dfe2f[_0xc146('0x22')]=qs[_0xc146('0x22')](_0x1b4727[_0xc146('0x34')][_0xc146('0x22')]);}return _0x1ff5f0['getSounds'](_0x4dfe2f);}})[_0xc146('0x26')](function(_0xc7aad1){if(_0xc7aad1){return _0xc7aad1?{'count':_0x44b0ef,'rows':_0xc7aad1}:null;}})[_0xc146('0x26')](respondWithResult(_0x3c6d6e,null))[_0xc146('0x44')](handleError(_0x3c6d6e,null));};
\ No newline at end of file
index 0b31468..a0b6e23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50bd=['exports','define','voice_musiconhold','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./voiceMusicOnHold.attributes'];(function(_0xf6f7f1,_0x503f4f){var _0x3eefd8=function(_0x3f60c3){while(--_0x3f60c3){_0xf6f7f1['push'](_0xf6f7f1['shift']());}};_0x3eefd8(++_0x503f4f);}(_0x50bd,0xc3));var _0xd50b=function(_0x497bd3,_0x3d231b){_0x497bd3=_0x497bd3-0x0;var _0x7fd879=_0x50bd[_0x497bd3];return _0x7fd879;};'use strict';var _=require(_0xd50b('0x0'));var util=require(_0xd50b('0x1'));var logger=require(_0xd50b('0x2'))(_0xd50b('0x3'));var moment=require(_0xd50b('0x4'));var BPromise=require(_0xd50b('0x5'));var rp=require(_0xd50b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd50b('0x7'));var config=require('../../config/environment');var attributes=require(_0xd50b('0x8'));module[_0xd50b('0x9')]=function(_0x4e11b8,_0x15beaa){return _0x4e11b8[_0xd50b('0xa')]('VoiceMusicOnHold',attributes,{'tableName':_0xd50b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x60f2=['../../config/environment','./voiceMusicOnHold.attributes','define','voice_musiconhold','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x1cd71f,_0x2a9d19){var _0x33d362=function(_0x2ecb41){while(--_0x2ecb41){_0x1cd71f['push'](_0x1cd71f['shift']());}};_0x33d362(++_0x2a9d19);}(_0x60f2,0x178));var _0x260f=function(_0x496744,_0xfa7ca1){_0x496744=_0x496744-0x0;var _0x15b018=_0x60f2[_0x496744];return _0x15b018;};'use strict';var _=require(_0x260f('0x0'));var util=require(_0x260f('0x1'));var logger=require('../../config/logger')(_0x260f('0x2'));var moment=require(_0x260f('0x3'));var BPromise=require(_0x260f('0x4'));var rp=require(_0x260f('0x5'));var fs=require('fs');var path=require(_0x260f('0x6'));var rimraf=require(_0x260f('0x7'));var config=require(_0x260f('0x8'));var attributes=require(_0x260f('0x9'));module['exports']=function(_0x36c136,_0x11add7){return _0x36c136[_0x260f('0xa')]('VoiceMusicOnHold',attributes,{'tableName':_0x260f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b6200b8..ffe2b87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\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(_0x6b4963,_0x2fd1e6){var _0x3fdf4e=function(_0x59035f){while(--_0x59035f){_0x6b4963['push'](_0x6b4963['shift']());}};_0x3fdf4e(++_0x2fd1e6);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'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 _0x70e0=['code','VoiceMusicOnHold,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x2e76f4,_0x1ecb81){var _0x56a27d=function(_0x500b73){while(--_0x500b73){_0x2e76f4['push'](_0x2e76f4['shift']());}};_0x56a27d(++_0x1ecb81);}(_0x70e0,0x17b));var _0x070e=function(_0x4f44f3,_0x12f5c2){_0x4f44f3=_0x4f44f3-0x0;var _0x5d14d0=_0x70e0[_0x4f44f3];return _0x5d14d0;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
index 0fe685f..e614d4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f96=['/:id','show','getAgents','/:id/teams','getTeams','post','/:id/users','addAgents','addTeams','delete','removeAgents','removeTeams','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./voicePrefix.controller','get','index','isAuthenticated','describe'];(function(_0x13e998,_0x110473){var _0x155462=function(_0x3c4bfd){while(--_0x3c4bfd){_0x13e998['push'](_0x13e998['shift']());}};_0x155462(++_0x110473);}(_0x5f96,0x75));var _0x65f9=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0x5f96[_0x341e0f];return _0x59555a;};'use strict';var multer=require(_0x65f9('0x0'));var util=require(_0x65f9('0x1'));var path=require(_0x65f9('0x2'));var timeout=require(_0x65f9('0x3'));var express=require(_0x65f9('0x4'));var router=express[_0x65f9('0x5')]();var fs_extra=require(_0x65f9('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x65f9('0x7'));var config=require('../../config/environment');var controller=require(_0x65f9('0x8'));router[_0x65f9('0x9')]('/',auth['isAuthenticated'](),controller[_0x65f9('0xa')]);router[_0x65f9('0x9')]('/describe',auth[_0x65f9('0xb')](),controller[_0x65f9('0xc')]);router[_0x65f9('0x9')](_0x65f9('0xd'),auth[_0x65f9('0xb')](),controller[_0x65f9('0xe')]);router['get']('/:id/users',auth[_0x65f9('0xb')](),controller[_0x65f9('0xf')]);router[_0x65f9('0x9')](_0x65f9('0x10'),auth['isAuthenticated'](),controller[_0x65f9('0x11')]);router['post']('/',auth[_0x65f9('0xb')](),controller['create']);router[_0x65f9('0x12')](_0x65f9('0x13'),auth['isAuthenticated'](),controller[_0x65f9('0x14')]);router[_0x65f9('0x12')](_0x65f9('0x10'),auth['isAuthenticated'](),controller[_0x65f9('0x15')]);router['put'](_0x65f9('0xd'),auth[_0x65f9('0xb')](),controller['update']);router[_0x65f9('0x16')](_0x65f9('0xd'),auth['isAuthenticated'](),controller['destroy']);router[_0x65f9('0x16')](_0x65f9('0x13'),auth[_0x65f9('0xb')](),controller[_0x65f9('0x17')]);router[_0x65f9('0x16')](_0x65f9('0x10'),auth[_0x65f9('0xb')](),controller[_0x65f9('0x18')]);module[_0x65f9('0x19')]=router;
\ No newline at end of file
+var _0x076a=['exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','describe','/:id','show','/:id/users','getAgents','post','update','destroy','removeAgents'];(function(_0x26cc8f,_0x4daf52){var _0x33a42c=function(_0x488eb3){while(--_0x488eb3){_0x26cc8f['push'](_0x26cc8f['shift']());}};_0x33a42c(++_0x4daf52);}(_0x076a,0x11f));var _0xa076=function(_0x12dfa1,_0x36ff32){_0x12dfa1=_0x12dfa1-0x0;var _0x5db581=_0x076a[_0x12dfa1];return _0x5db581;};'use strict';var multer=require(_0xa076('0x0'));var util=require(_0xa076('0x1'));var path=require('path');var timeout=require(_0xa076('0x2'));var express=require(_0xa076('0x3'));var router=express[_0xa076('0x4')]();var fs_extra=require(_0xa076('0x5'));var auth=require(_0xa076('0x6'));var interaction=require(_0xa076('0x7'));var config=require(_0xa076('0x8'));var controller=require('./voicePrefix.controller');router['get']('/',auth[_0xa076('0x9')](),controller['index']);router[_0xa076('0xa')](_0xa076('0xb'),auth['isAuthenticated'](),controller[_0xa076('0xc')]);router['get'](_0xa076('0xd'),auth[_0xa076('0x9')](),controller[_0xa076('0xe')]);router[_0xa076('0xa')](_0xa076('0xf'),auth[_0xa076('0x9')](),controller[_0xa076('0x10')]);router[_0xa076('0x11')]('/',auth[_0xa076('0x9')](),controller['create']);router[_0xa076('0x11')](_0xa076('0xf'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0xa076('0xd'),auth[_0xa076('0x9')](),controller[_0xa076('0x12')]);router['delete']('/:id',auth[_0xa076('0x9')](),controller[_0xa076('0x13')]);router['delete'](_0xa076('0xf'),auth['isAuthenticated'](),controller[_0xa076('0x14')]);module[_0xa076('0x15')]=router;
\ No newline at end of file
index d91a931..1177969 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1572=['name','VIRTUAL','system-','INTEGER','sequelize','exports','STRING'];(function(_0x1d92a3,_0x3dbe62){var _0x3f7e92=function(_0x411d50){while(--_0x411d50){_0x1d92a3['push'](_0x1d92a3['shift']());}};_0x3f7e92(++_0x3dbe62);}(_0x1572,0xac));var _0x2157=function(_0x2e627b,_0x22e66e){_0x2e627b=_0x2e627b-0x0;var _0x4493f5=_0x1572[_0x2e627b];return _0x4493f5;};'use strict';var Sequelize=require(_0x2157('0x0'));module[_0x2157('0x1')]={'name':{'type':Sequelize[_0x2157('0x2')],'allowNull':![],'unique':_0x2157('0x3')},'prefix':{'type':Sequelize[_0x2157('0x4')],'get':function(_0x4b4a22){return _0x2157('0x5')+this['getDataValue'](_0x2157('0x3'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0x2157('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x2157('0x6')]}};
\ No newline at end of file
+var _0xac30=['getDataValue','STRING','INTEGER','VIRTUAL'];(function(_0x187757,_0x5d6d38){var _0x134e53=function(_0x597573){while(--_0x597573){_0x187757['push'](_0x187757['shift']());}};_0x134e53(++_0x5d6d38);}(_0xac30,0x1cb));var _0x0ac3=function(_0x45d1fd,_0x463212){_0x45d1fd=_0x45d1fd-0x0;var _0xd0e542=_0xac30[_0x45d1fd];return _0xd0e542;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize[_0x0ac3('0x0')],'get':function(_0xff0fdc){return'system-'+this[_0x0ac3('0x1')]('name')+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0x0ac3('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x0ac3('0x3')]}};
\ No newline at end of file
index 5d9f172..e3d05fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x065e=['localhost','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','destroy','then','get','VoicePrefixes','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','VoicePrefix','include','rows','catch','show','params','find','describe','create','sequelize','transaction','body','VoiceExtension','VoiceExtensionId','user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','exten','app','system','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','Voice\x20Prefix','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','callerIdAll','push','Set','PREFIX-CALLERIDALL=','NoOp','goto','context','${EXTEN:','charAt','update','system-','findById','addAgents','omit','ids','emit','userVoicePrefix:save','removeAgents','userVoicePrefix:remove','getAgents','User','order','pick','getTeams','findOne','addTeams','Team','findAll','Agents','voicePause','interface','each','upsert','UserVoicePrefix','forEach','field','tq.TeamId','from','join','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','every','TeamId','includes','all','union','compact','isEmpty','eml-format','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults'];(function(_0x1363cc,_0x5cc404){var _0x82d9d9=function(_0xb1e806){while(--_0xb1e806){_0x1363cc['push'](_0x1363cc['shift']());}};_0x82d9d9(++_0x5cc404);}(_0x065e,0x1a7));var _0xe065=function(_0x1c76fa,_0x1a88c3){_0x1c76fa=_0x1c76fa-0x0;var _0x13ae6d=_0x065e[_0x1c76fa];return _0x13ae6d;};'use strict';var emlformat=require(_0xe065('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xe065('0x1'));var moment=require(_0xe065('0x2'));var BPromise=require(_0xe065('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xe065('0x4'));var sox=require(_0xe065('0x5'));var csv=require('to-csv');var ejs=require(_0xe065('0x6'));var fs=require('fs');var fs_extra=require(_0xe065('0x7'));var _=require(_0xe065('0x8'));var squel=require('squel');var crypto=require(_0xe065('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xe065('0xa'));var toCsv=require(_0xe065('0xb'));var querystring=require(_0xe065('0xc'));var Papa=require(_0xe065('0xd'));var Redis=require(_0xe065('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xe065('0xf'));var as=require(_0xe065('0x10'));var hardwareService=require(_0xe065('0x11'));var logger=require(_0xe065('0x12'))(_0xe065('0x13'));var utils=require(_0xe065('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe065('0x15'))['db'];config[_0xe065('0x16')]=_[_0xe065('0x17')](config['redis'],{'host':_0xe065('0x18'),'port':0x18eb});var socket=require(_0xe065('0x19'))(new Redis(config[_0xe065('0x16')]));require(_0xe065('0x1a'))[_0xe065('0x1b')](socket);function respondWithStatusCode(_0x541985,_0x3d3557){_0x3d3557=_0x3d3557||0xcc;return function(_0x2b4789){if(_0x2b4789){return _0x541985[_0xe065('0x1c')](_0x3d3557);}return _0x541985[_0xe065('0x1d')](_0x3d3557)[_0xe065('0x1e')]();};}function respondWithResult(_0x352206,_0x2e5feb){_0x2e5feb=_0x2e5feb||0xc8;return function(_0x545100){if(_0x545100){return _0x352206[_0xe065('0x1d')](_0x2e5feb)[_0xe065('0x1f')](_0x545100);}};}function respondWithFilteredResult(_0x54d260,_0x2bfec0){return function(_0x1d2f7a){if(_0x1d2f7a){var _0x397f05=typeof _0x2bfec0[_0xe065('0x20')]===_0xe065('0x21')&&typeof _0x2bfec0[_0xe065('0x22')]===_0xe065('0x21');var _0x5000e1=_0x1d2f7a[_0xe065('0x23')];var _0x52e9b2=_0x397f05?0x0:_0x2bfec0[_0xe065('0x20')];var _0x23233d=_0x397f05?_0x1d2f7a['count']:_0x2bfec0[_0xe065('0x20')]+_0x2bfec0['limit'];var _0xe26e9b;if(_0x23233d>=_0x5000e1){_0x23233d=_0x5000e1;_0xe26e9b=0xc8;}else{_0xe26e9b=0xce;}_0x54d260[_0xe065('0x1d')](_0xe26e9b);return _0x54d260[_0xe065('0x24')](_0xe065('0x25'),_0x52e9b2+'-'+_0x23233d+'/'+_0x5000e1)[_0xe065('0x1f')](_0x1d2f7a);}return null;};}function patchUpdates(_0x105cb2){return function(_0x22a0cb){try{jsonpatch[_0xe065('0x26')](_0x22a0cb,_0x105cb2,!![]);}catch(_0x1c5dd9){return BPromise['reject'](_0x1c5dd9);}return _0x22a0cb[_0xe065('0x27')]();};}function saveUpdates(_0x43b712,_0x44ec95){return function(_0x13f6e5){if(_0x13f6e5){return _0x13f6e5['update'](_0x43b712)['then'](function(_0x164965){return _0x164965;});}return null;};}function removeEntity(_0x530dc0,_0x14e6b6){return function(_0x27e669){if(_0x27e669){return _0x27e669[_0xe065('0x28')]()[_0xe065('0x29')](function(){var _0x418731=_0x27e669[_0xe065('0x2a')]({'plain':!![]});var _0x3b1caf=_0xe065('0x2b');return db['UserProfileResource']['destroy']({'where':{'type':_0x3b1caf,'resourceId':_0x418731['id']}})[_0xe065('0x29')](function(){return _0x27e669;});})[_0xe065('0x29')](function(){_0x530dc0[_0xe065('0x1d')](0xcc)[_0xe065('0x1e')]();});}};}function handleEntityNotFound(_0x5b1220,_0x23f573){return function(_0x55ecaa){if(!_0x55ecaa){_0x5b1220['sendStatus'](0x194);}return _0x55ecaa;};}function handleError(_0x182743,_0x2659e6){_0x2659e6=_0x2659e6||0x1f4;return function(_0x2aa766){logger['error'](_0x2aa766[_0xe065('0x2c')]);if(_0x2aa766['name']){delete _0x2aa766[_0xe065('0x2d')];}_0x182743[_0xe065('0x1d')](_0x2659e6)[_0xe065('0x2e')](_0x2aa766);};}exports[_0xe065('0x2f')]=function(_0x58c49b,_0x3f02b2){var _0x4940cf={},_0x3fa56f={},_0x2e4e4a={'count':0x0,'rows':[]};var _0x5d0864=_[_0xe065('0x30')](db['VoicePrefix'][_0xe065('0x31')],function(_0x4999b0){return{'name':_0x4999b0[_0xe065('0x32')],'type':_0x4999b0[_0xe065('0x33')][_0xe065('0x34')]};});_0x3fa56f[_0xe065('0x35')]=_['map'](_0x5d0864,_0xe065('0x2d'));_0x3fa56f[_0xe065('0x36')]=_[_0xe065('0x37')](_0x58c49b[_0xe065('0x36')]);_0x3fa56f[_0xe065('0x38')]=_[_0xe065('0x39')](_0x3fa56f['model'],_0x3fa56f[_0xe065('0x36')]);_0x4940cf[_0xe065('0x3a')]=_['intersection'](_0x3fa56f[_0xe065('0x35')],qs[_0xe065('0x3b')](_0x58c49b[_0xe065('0x36')][_0xe065('0x3b')]));_0x4940cf[_0xe065('0x3a')]=_0x4940cf[_0xe065('0x3a')][_0xe065('0x3c')]?_0x4940cf['attributes']:_0x3fa56f[_0xe065('0x35')];if(!_0x58c49b['query'][_0xe065('0x3d')](_0xe065('0x3e'))){_0x4940cf[_0xe065('0x22')]=qs[_0xe065('0x22')](_0x58c49b[_0xe065('0x36')][_0xe065('0x22')]);_0x4940cf['offset']=qs[_0xe065('0x20')](_0x58c49b[_0xe065('0x36')][_0xe065('0x20')]);}_0x4940cf['order']=qs[_0xe065('0x3f')](_0x58c49b[_0xe065('0x36')][_0xe065('0x3f')]);_0x4940cf[_0xe065('0x40')]=qs[_0xe065('0x38')](_['pick'](_0x58c49b[_0xe065('0x36')],_0x3fa56f[_0xe065('0x38')]),_0x5d0864);if(_0x58c49b['query'][_0xe065('0x41')]){_0x4940cf['where']=_[_0xe065('0x42')](_0x4940cf[_0xe065('0x40')],{'$or':_['map'](_0x5d0864,function(_0x3c7e70){if(_0x3c7e70[_0xe065('0x33')]!=='VIRTUAL'){var _0x16b5da={};_0x16b5da[_0x3c7e70[_0xe065('0x2d')]]={'$like':'%'+_0x58c49b[_0xe065('0x36')][_0xe065('0x41')]+'%'};return _0x16b5da;}})});}_0x4940cf=_[_0xe065('0x42')]({},_0x4940cf,_0x58c49b[_0xe065('0x43')]);var _0x395cc2={'where':_0x4940cf[_0xe065('0x40')]};return db[_0xe065('0x44')][_0xe065('0x23')](_0x395cc2)[_0xe065('0x29')](function(_0x4364c3){_0x2e4e4a[_0xe065('0x23')]=_0x4364c3;if(_0x58c49b['query']['includeAll']){_0x4940cf[_0xe065('0x45')]=[{'all':!![]}];}return db[_0xe065('0x44')]['findAll'](_0x4940cf);})[_0xe065('0x29')](function(_0x448044){_0x2e4e4a[_0xe065('0x46')]=_0x448044;return _0x2e4e4a;})[_0xe065('0x29')](respondWithFilteredResult(_0x3f02b2,_0x4940cf))[_0xe065('0x47')](handleError(_0x3f02b2,null));};exports[_0xe065('0x48')]=function(_0x39440c,_0x11e82d){var _0x1f93e9={'raw':![],'where':{'id':_0x39440c[_0xe065('0x49')]['id']}},_0x52073d={};_0x52073d[_0xe065('0x35')]=_[_0xe065('0x37')](db['VoicePrefix'][_0xe065('0x31')]);_0x52073d[_0xe065('0x36')]=_[_0xe065('0x37')](_0x39440c[_0xe065('0x36')]);_0x52073d['filters']=_[_0xe065('0x39')](_0x52073d[_0xe065('0x35')],_0x52073d[_0xe065('0x36')]);_0x1f93e9[_0xe065('0x3a')]=_[_0xe065('0x39')](_0x52073d[_0xe065('0x35')],qs[_0xe065('0x3b')](_0x39440c['query'][_0xe065('0x3b')]));_0x1f93e9[_0xe065('0x3a')]=_0x1f93e9[_0xe065('0x3a')][_0xe065('0x3c')]?_0x1f93e9[_0xe065('0x3a')]:_0x52073d[_0xe065('0x35')];if(_0x39440c[_0xe065('0x36')]['includeAll']){_0x1f93e9[_0xe065('0x45')]=[{'all':!![]}];}_0x1f93e9=_['merge']({},_0x1f93e9,_0x39440c[_0xe065('0x43')]);return db[_0xe065('0x44')][_0xe065('0x4a')](_0x1f93e9)['then'](handleEntityNotFound(_0x11e82d,null))[_0xe065('0x29')](respondWithResult(_0x11e82d,null))[_0xe065('0x47')](handleError(_0x11e82d,null));};exports[_0xe065('0x28')]=function(_0x162d11,_0x3c6880){return db[_0xe065('0x44')][_0xe065('0x4a')]({'where':{'id':_0x162d11[_0xe065('0x49')]['id']}})[_0xe065('0x29')](handleEntityNotFound(_0x3c6880,null))[_0xe065('0x29')](removeEntity(_0x3c6880,null))[_0xe065('0x47')](handleError(_0x3c6880,null));};exports[_0xe065('0x4b')]=function(_0x14327f,_0x490498){return db['VoicePrefix']['describe']()[_0xe065('0x29')](respondWithResult(_0x490498,null))['catch'](handleError(_0x490498,null));};exports[_0xe065('0x4c')]=function(_0x2c5e42,_0x5a7a98){var _0x480aec;return db[_0xe065('0x4d')][_0xe065('0x4e')](function(_0x5cce78){return db[_0xe065('0x44')][_0xe065('0x4c')](_0x2c5e42[_0xe065('0x4f')],{'transaction':_0x5cce78})[_0xe065('0x29')](function(_0x12df39){_0x480aec=_0x12df39[_0xe065('0x2a')]({'plain':!![]});return db[_0xe065('0x50')][_0xe065('0x4a')]({'where':{'id':_0x480aec[_0xe065('0x51')]},'raw':!![]})[_0xe065('0x29')](function(_0x49a367){return createVoicePrefixExtensions(_0x480aec,_0x49a367,_0x5cce78);});});})[_0xe065('0x29')](function(){var _0x18eb92=_0x2c5e42[_0xe065('0x52')][_0xe065('0x2a')]({'plain':!![]});if(!_0x18eb92)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x18eb92[_0xe065('0x53')]===_0xe065('0x52')){var _0x21884d=_0x480aec;return db[_0xe065('0x54')]['find']({'where':{'name':_0xe065('0x2b'),'userProfileId':_0x18eb92[_0xe065('0x55')]},'raw':!![]})[_0xe065('0x29')](function(_0x5320c6){if(_0x5320c6&&_0x5320c6[_0xe065('0x56')]===0x0){return db[_0xe065('0x57')][_0xe065('0x4c')]({'name':_0x21884d[_0xe065('0x2d')],'resourceId':_0x21884d['id'],'type':_0x5320c6[_0xe065('0x2d')],'sectionId':_0x5320c6['id']},{})[_0xe065('0x29')](function(){return _0x480aec;});}else{return _0x480aec;}})[_0xe065('0x47')](function(_0x464ef7){logger[_0xe065('0x58')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x464ef7);throw _0x464ef7;});}return _0x480aec;})[_0xe065('0x29')](respondWithResult(_0x5a7a98,null))['catch'](handleError(_0x5a7a98,null));};function Extension(_0x44edf0,_0x24fc1c,_0x3c1229,_0x4e9e85){this['context']='from-sip';this[_0xe065('0x59')]=_0x44edf0;this[_0xe065('0x5a')]=_0x3c1229;this[_0xe065('0x33')]=_0xe065('0x5b');this[_0xe065('0x5c')]=_0xe065('0x5d');this[_0xe065('0x5e')]=_0x24fc1c;this[_0xe065('0x5f')]=_0x4e9e85;}function createVoicePrefixExtensions(_0x20abe0,_0x3169fa,_0x25ec8a){return new BPromise(function(_0x590429,_0x544bff){var _0x2fe0ac=new Extension(formatPrefixName(_0x20abe0[_0xe065('0x60')]),0x1,'NoOp',_0xe065('0x61'));_0x2fe0ac['VoicePrefixId']=_0x20abe0['id'];return db['VoiceExtension'][_0xe065('0x4c')](_0x2fe0ac,{'transaction':_0x25ec8a})[_0xe065('0x29')](function(_0x4e7275){var _0x96355e=_0x4e7275[_0xe065('0x2a')]({'plain':!![]});var _0x817baf=_[_0xe065('0x30')](addVoicePrefixExtensions(_0x20abe0,_0x3169fa),function(_0x5edc0f){_0x5edc0f[_0xe065('0x51')]=_0x96355e['id'];_0x5edc0f[_0xe065('0x62')]=_0x20abe0['id'];return _0x5edc0f;});return db[_0xe065('0x50')][_0xe065('0x63')](_0x817baf,{'transaction':_0x25ec8a})[_0xe065('0x29')](function(_0x4f35a6){if(!_0x4f35a6){return _0x544bff(_0xe065('0x64'));}else{return _0x590429(_0x4f35a6);}})[_0xe065('0x47')](function(_0x29b3f0){return _0x544bff(_0x29b3f0);});});;});};function addVoicePrefixExtensions(_0x155133,_0x2968c5){var _0xfce2e=[];var _0x5af9d5=formatPrefixName(_0x155133['prefix']);_0xfce2e['push'](new Extension(_0x5af9d5,0x2,'Set','CDR(prefix)='+_0x155133[_0xe065('0x2d')]));if(_0x155133[_0xe065('0x65')]){_0xfce2e[_0xe065('0x66')](new Extension(_0x5af9d5,0x3,_0xe065('0x67'),_0xe065('0x68')+_0x155133[_0xe065('0x65')]));}else{_0xfce2e[_0xe065('0x66')](new Extension(_0x5af9d5,0x3,_0xe065('0x69'),'No\x20callerid\x20available'));}_0xfce2e['push'](new Extension(_0x5af9d5,0x4,_0xe065('0x6a'),_0x2968c5[_0xe065('0x6b')]+','+_0xe065('0x6c')+(0x8+_0x155133['name'][_0xe065('0x3c')])+'}'+','+0x1));return _0xfce2e;}function formatPrefixName(_0x268428){var _0x113a0f='_';for(var _0x4765a0=0x0;_0x4765a0<_0x268428[_0xe065('0x3c')];_0x4765a0++){if(_0x268428[_0xe065('0x6d')](_0x4765a0)=='-'){_0x113a0f+=_0x268428[_0xe065('0x6d')](_0x4765a0);}else{_0x113a0f+='['+_0x268428[_0xe065('0x6d')](_0x4765a0)+']';}}_0x113a0f+='.';return _0x113a0f;}exports[_0xe065('0x6e')]=function(_0xecef2,_0x213feb,_0x4493db){var _0xa5310c=_0xecef2[_0xe065('0x4f')];_0xa5310c[_0xe065('0x60')]=_0xe065('0x6f')+_0xa5310c[_0xe065('0x2d')]+'-';return db[_0xe065('0x4d')]['transaction'](function(_0x31d6cb){return db[_0xe065('0x44')][_0xe065('0x6e')](_0xa5310c,{'where':{'id':_0xa5310c['id']},'transaction':_0x31d6cb})[_0xe065('0x29')](function(){return db[_0xe065('0x50')][_0xe065('0x28')]({'where':{'VoicePrefixId':_0xa5310c['id']},'transaction':_0x31d6cb})[_0xe065('0x29')](function(){return db[_0xe065('0x50')][_0xe065('0x4a')]({'where':{'id':_0xa5310c[_0xe065('0x51')]},'raw':!![]})[_0xe065('0x29')](function(_0xa08631){return createVoicePrefixExtensions(_0xa5310c,_0xa08631,_0x31d6cb);});});});})[_0xe065('0x29')](function(){return db[_0xe065('0x44')][_0xe065('0x70')](_0xa5310c['id']);})[_0xe065('0x29')](respondWithResult(_0x213feb,null))[_0xe065('0x47')](handleError(_0x213feb,null));};exports['addAgents']=function(_0x256eef,_0x185b5b,_0x3e2241){return db[_0xe065('0x44')][_0xe065('0x4a')]({'where':{'id':_0x256eef[_0xe065('0x49')]['id']}})[_0xe065('0x29')](handleEntityNotFound(_0x185b5b,null))[_0xe065('0x29')](function(_0x54b1f2){if(_0x54b1f2){return _0x54b1f2[_0xe065('0x71')](_0x256eef['body']['ids'],_[_0xe065('0x72')](_0x256eef['body'],[_0xe065('0x73'),'id'])||{})['spread'](function(_0x1df721){for(var _0x162482=0x0;_0x162482<_0x256eef[_0xe065('0x4f')][_0xe065('0x73')][_0xe065('0x3c')];_0x162482+=0x1){socket[_0xe065('0x74')](_0xe065('0x75'),{'UserId':Number(_0x256eef[_0xe065('0x4f')][_0xe065('0x73')][_0x162482]),'VoicePrefixId':Number(_0x256eef['params']['id'])});}return _0x1df721;});}})[_0xe065('0x29')](respondWithResult(_0x185b5b,null))[_0xe065('0x47')](handleError(_0x185b5b,null));};exports[_0xe065('0x76')]=function(_0x3f8e32,_0x5858d9,_0x26c427){return db[_0xe065('0x44')][_0xe065('0x4a')]({'where':{'id':_0x3f8e32['params']['id']}})[_0xe065('0x29')](handleEntityNotFound(_0x5858d9,null))[_0xe065('0x29')](function(_0x3c024b){if(_0x3c024b){return _0x3c024b['removeAgents'](_0x3f8e32[_0xe065('0x36')][_0xe065('0x73')])['then'](function(){if(_['isArray'](_0x3f8e32[_0xe065('0x36')][_0xe065('0x73')])){for(var _0x1b8c33=0x0;_0x1b8c33<_0x3f8e32[_0xe065('0x36')][_0xe065('0x73')]['length'];_0x1b8c33+=0x1){socket['emit'](_0xe065('0x77'),{'UserId':Number(_0x3f8e32[_0xe065('0x36')]['ids'][_0x1b8c33]),'VoicePrefixId':Number(_0x3f8e32[_0xe065('0x49')]['id'])});}}else{socket[_0xe065('0x74')](_0xe065('0x77'),{'UserId':Number(_0x3f8e32[_0xe065('0x36')][_0xe065('0x73')]),'VoicePrefixId':Number(_0x3f8e32[_0xe065('0x49')]['id'])});}});}})[_0xe065('0x29')](respondWithStatusCode(_0x5858d9,null))[_0xe065('0x47')](handleError(_0x5858d9,null));};exports[_0xe065('0x78')]=function(_0x1ec81f,_0x4d25b9,_0x5d940d){var _0x34174f={};var _0x5336e3={};var _0x2451ec;var _0x45b479;return db[_0xe065('0x44')]['findOne']({'where':{'id':_0x1ec81f[_0xe065('0x49')]['id']}})[_0xe065('0x29')](handleEntityNotFound(_0x4d25b9,null))[_0xe065('0x29')](function(_0x124054){if(_0x124054){_0x2451ec=_0x124054;_0x5336e3[_0xe065('0x35')]=_[_0xe065('0x37')](db[_0xe065('0x79')][_0xe065('0x31')]);_0x5336e3[_0xe065('0x36')]=_[_0xe065('0x37')](_0x1ec81f[_0xe065('0x36')]);_0x5336e3['filters']=_[_0xe065('0x39')](_0x5336e3[_0xe065('0x35')],_0x5336e3[_0xe065('0x36')]);_0x34174f[_0xe065('0x3a')]=_[_0xe065('0x39')](_0x5336e3[_0xe065('0x35')],qs[_0xe065('0x3b')](_0x1ec81f[_0xe065('0x36')][_0xe065('0x3b')]));_0x34174f[_0xe065('0x3a')]=_0x34174f[_0xe065('0x3a')][_0xe065('0x3c')]?_0x34174f['attributes']:_0x5336e3[_0xe065('0x35')];_0x34174f[_0xe065('0x7a')]=qs[_0xe065('0x3f')](_0x1ec81f[_0xe065('0x36')][_0xe065('0x3f')]);_0x34174f[_0xe065('0x40')]=qs[_0xe065('0x38')](_[_0xe065('0x7b')](_0x1ec81f[_0xe065('0x36')],_0x5336e3[_0xe065('0x38')]));if(_0x1ec81f[_0xe065('0x36')][_0xe065('0x41')]){_0x34174f[_0xe065('0x40')]=_[_0xe065('0x42')](_0x34174f[_0xe065('0x40')],{'$or':_[_0xe065('0x30')](_0x34174f[_0xe065('0x3a')],function(_0x47792d){var _0x105eaa={};_0x105eaa[_0x47792d]={'$like':'%'+_0x1ec81f[_0xe065('0x36')][_0xe065('0x41')]+'%'};return _0x105eaa;})});}_0x34174f=_[_0xe065('0x42')]({},_0x34174f,_0x1ec81f[_0xe065('0x43')]);return _0x2451ec[_0xe065('0x78')](_0x34174f);}})[_0xe065('0x29')](function(_0x428745){if(_0x428745){_0x45b479=_0x428745[_0xe065('0x3c')];if(!_0x1ec81f[_0xe065('0x36')][_0xe065('0x3d')](_0xe065('0x3e'))){_0x34174f[_0xe065('0x22')]=qs[_0xe065('0x22')](_0x1ec81f[_0xe065('0x36')][_0xe065('0x22')]);_0x34174f[_0xe065('0x20')]=qs[_0xe065('0x20')](_0x1ec81f[_0xe065('0x36')][_0xe065('0x20')]);}return _0x2451ec[_0xe065('0x78')](_0x34174f);}})[_0xe065('0x29')](function(_0x4da03f){if(_0x4da03f){return _0x4da03f?{'count':_0x45b479,'rows':_0x4da03f}:null;}})[_0xe065('0x29')](respondWithResult(_0x4d25b9,null))[_0xe065('0x47')](handleError(_0x4d25b9,null));};exports[_0xe065('0x7c')]=function(_0xe199d7,_0x40231d,_0x34b37c){var _0x24ebbd={};var _0x22bc5c={};var _0x5d6761;var _0x2f2f53;return db['VoicePrefix'][_0xe065('0x7d')]({'where':{'id':_0xe199d7['params']['id']}})[_0xe065('0x29')](handleEntityNotFound(_0x40231d,null))[_0xe065('0x29')](function(_0x19e3cf){if(_0x19e3cf){_0x5d6761=_0x19e3cf;_0x22bc5c[_0xe065('0x35')]=_['keys'](db['Team'][_0xe065('0x31')]);_0x22bc5c[_0xe065('0x36')]=_[_0xe065('0x37')](_0xe199d7['query']);_0x22bc5c[_0xe065('0x38')]=_[_0xe065('0x39')](_0x22bc5c[_0xe065('0x35')],_0x22bc5c['query']);_0x24ebbd['attributes']=_['intersection'](_0x22bc5c['model'],qs[_0xe065('0x3b')](_0xe199d7[_0xe065('0x36')][_0xe065('0x3b')]));_0x24ebbd[_0xe065('0x3a')]=_0x24ebbd[_0xe065('0x3a')]['length']?_0x24ebbd[_0xe065('0x3a')]:_0x22bc5c[_0xe065('0x35')];_0x24ebbd['order']=qs[_0xe065('0x3f')](_0xe199d7['query'][_0xe065('0x3f')]);_0x24ebbd['where']=qs[_0xe065('0x38')](_[_0xe065('0x7b')](_0xe199d7[_0xe065('0x36')],_0x22bc5c[_0xe065('0x38')]));if(_0xe199d7[_0xe065('0x36')][_0xe065('0x41')]){_0x24ebbd[_0xe065('0x40')]=_[_0xe065('0x42')](_0x24ebbd[_0xe065('0x40')],{'$or':_[_0xe065('0x30')](_0x24ebbd[_0xe065('0x3a')],function(_0x242712){var _0xa89a0e={};_0xa89a0e[_0x242712]={'$like':'%'+_0xe199d7[_0xe065('0x36')]['filter']+'%'};return _0xa89a0e;})});}_0x24ebbd=_['merge']({},_0x24ebbd,_0xe199d7[_0xe065('0x43')]);return _0x5d6761[_0xe065('0x7c')](_0x24ebbd);}})['then'](function(_0x33a5b9){if(_0x33a5b9){_0x2f2f53=_0x33a5b9[_0xe065('0x3c')];if(!_0xe199d7[_0xe065('0x36')][_0xe065('0x3d')](_0xe065('0x3e'))){_0x24ebbd[_0xe065('0x22')]=qs[_0xe065('0x22')](_0xe199d7['query']['limit']);_0x24ebbd[_0xe065('0x20')]=qs[_0xe065('0x20')](_0xe199d7[_0xe065('0x36')][_0xe065('0x20')]);}return _0x5d6761['getTeams'](_0x24ebbd);}})[_0xe065('0x29')](function(_0x33f41c){if(_0x33f41c){return _0x33f41c?{'count':_0x2f2f53,'rows':_0x33f41c}:null;}})[_0xe065('0x29')](respondWithResult(_0x40231d,null))[_0xe065('0x47')](handleError(_0x40231d,null));};exports[_0xe065('0x7e')]=function(_0x123188,_0x490961,_0x3cd1c8){var _0x4a63da=_0x123188['body'][_0xe065('0x73')];var _0x14440a;return db[_0xe065('0x7f')][_0xe065('0x80')]({'where':{'id':_0x4a63da},'attributes':['id'],'include':[{'model':db['User'],'as':_0xe065('0x81'),'attributes':['id',_0xe065('0x2d'),'online',_0xe065('0x82'),_0xe065('0x83')],'raw':!![]}]})[_0xe065('0x29')](function(_0x29ecc6){if(_0x29ecc6){_0x14440a=_0x29ecc6;var _0x2aab25=_['flatMap'](_0x29ecc6,function(_0x1998ee){var _0x5df1f5=_0x1998ee[_0xe065('0x2a')]({'plain':!![]});return _0x5df1f5['Agents'];});return db[_0xe065('0x44')][_0xe065('0x4a')]({'where':{'id':_0x123188[_0xe065('0x49')]['id']}})['then'](function(_0x4d68c2){return db[_0xe065('0x4d')][_0xe065('0x4e')](function(_0x5c61df){return _0x4d68c2[_0xe065('0x7e')](_0x4a63da,{'transaction':_0x5c61df})['then'](function(){return BPromise[_0xe065('0x84')](_0x14440a,function(_0x41c62a){return db['TeamVoicePrefix'][_0xe065('0x85')]({'TeamId':_0x41c62a['id'],'VoicePrefixId':_0x123188[_0xe065('0x49')]['id']},{'transaction':_0x5c61df});});})[_0xe065('0x29')](function(){return BPromise[_0xe065('0x84')](_0x2aab25,function(_0xd8b280){return db[_0xe065('0x86')]['findOrCreate']({'where':{'UserId':_0xd8b280['id'],'VoicePrefixId':_0x123188['params']['id']},'transaction':_0x5c61df});});})[_0xe065('0x29')](function(){_0x2aab25[_0xe065('0x87')](function(_0x41d5b5){socket[_0xe065('0x74')](_0xe065('0x75'),{'UserId':_0x41d5b5['id'],'VoicePrefixId':_0x4d68c2['id']});});});});});}})['then'](respondWithStatusCode(_0x490961,null))['catch'](handleError(_0x490961,null));};exports['removeTeams']=function(_0x3e51b4,_0xab9cb,_0x5d64af){return db[_0xe065('0x7f')][_0xe065('0x80')]({'where':{'id':_0x3e51b4[_0xe065('0x36')]['ids']},'attributes':['id'],'include':[{'model':db[_0xe065('0x79')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0xab9cb,null))[_0xe065('0x29')](function(_0x42afb3){var _0x38119f=_[_0xe065('0x30')](_0x42afb3,'id');var _0x5b7ce9=[];var _0xa80c6d=[];var _0x3a46d3=squel['select']();_0x3a46d3[_0xe065('0x88')](_0xe065('0x89'))[_0xe065('0x8a')]('team_has_voice_prefixes','tq')[_0xe065('0x8b')]('user_has_teams','ut',_0xe065('0x8c'))[_0xe065('0x40')]('VoicePrefixId\x20=\x20?',_0x3e51b4['params']['id']);for(var _0x451186=0x0;_0x451186<_0x42afb3[_0xe065('0x3c')];_0x451186+=0x1){let _0x16e82a=_0x42afb3[_0x451186];for(var _0x243415=0x0;_0x243415<_0x16e82a[_0xe065('0x81')][_0xe065('0x3c')];_0x243415+=0x1){let _0x2b8d04=_0x16e82a['Agents'][_0x243415];var _0x572836=_0x3a46d3['clone']();_0x572836[_0xe065('0x40')](_0xe065('0x8d'),_0x2b8d04['id']);_0xa80c6d['push'](db[_0xe065('0x4d')][_0xe065('0x36')](_0x572836['toString'](),{'type':db[_0xe065('0x4d')]['QueryTypes']['SELECT']})[_0xe065('0x29')](function(_0x1a21c0){if(_0x1a21c0[_0xe065('0x3c')]===0x1){return _0x2b8d04['id'];}else{var _0x5c7e10=_[_0xe065('0x8e')](_[_0xe065('0x30')](_0x1a21c0,_0xe065('0x8f')),function(_0x10a15e){return _[_0xe065('0x90')](_0x38119f,_0x10a15e);});if(_0x5c7e10){return _0x2b8d04['id'];}}}));}}return BPromise[_0xe065('0x91')](_0xa80c6d)[_0xe065('0x29')](function(_0x20c16c){_0x5b7ce9=_(_0x5b7ce9)[_0xe065('0x92')](_0x20c16c)[_0xe065('0x93')]()['value']();return db[_0xe065('0x44')][_0xe065('0x4a')]({'where':{'id':_0x3e51b4[_0xe065('0x49')]['id']}})[_0xe065('0x29')](function(_0x97b140){return db['sequelize'][_0xe065('0x4e')](function(_0x257ea2){return _0x97b140['removeTeams'](_0x3e51b4['query'][_0xe065('0x73')],{'transaction':_0x257ea2})[_0xe065('0x29')](function(){if(!_[_0xe065('0x94')](_0x5b7ce9)){return _0x97b140[_0xe065('0x76')](_0x5b7ce9,{'transaction':_0x257ea2});}})['then'](function(){_0x5b7ce9[_0xe065('0x87')](function(_0x1113fa){socket[_0xe065('0x74')](_0xe065('0x77'),{'UserId':_0x1113fa,'VoicePrefixId':_0x97b140['id']});});});});});});})['then'](respondWithStatusCode(_0xab9cb,null))[_0xe065('0x47')](handleError(_0xab9cb,null));};
\ No newline at end of file
+var _0x8b6f=['mustache','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/license/util','../../mysqldb','defaults','redis','./voicePrefix.socket','register','sendStatus','json','undefined','count','offset','limit','status','set','Content-Range','apply','reject','save','update','then','destroy','get','VoicePrefixes','end','stack','name','send','index','map','VoicePrefix','fieldName','type','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','rawAttributes','length','find','params','describe','create','sequelize','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','from-sip','app','description','appdata','NoOp','Voice\x20Prefix','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','context','${EXTEN:','charAt','body','prefix','transaction','VoiceExtension','findById','addAgents','ids','spread','removeAgents','isArray','emit','userVoicePrefix:remove','getAgents','findOne','User','pick','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird'];(function(_0x494f21,_0x26f879){var _0x4b1e81=function(_0x1e0414){while(--_0x1e0414){_0x494f21['push'](_0x494f21['shift']());}};_0x4b1e81(++_0x26f879);}(_0x8b6f,0x177));var _0xf8b6=function(_0x1f61b1,_0x354916){_0x1f61b1=_0x1f61b1-0x0;var _0x10e5a8=_0x8b6f[_0x1f61b1];return _0x10e5a8;};'use strict';var emlformat=require(_0xf8b6('0x0'));var rimraf=require(_0xf8b6('0x1'));var zipdir=require(_0xf8b6('0x2'));var jsonpatch=require(_0xf8b6('0x3'));var rp=require('request-promise');var moment=require(_0xf8b6('0x4'));var BPromise=require(_0xf8b6('0x5'));var Mustache=require(_0xf8b6('0x6'));var util=require('util');var path=require('path');var sox=require(_0xf8b6('0x7'));var csv=require(_0xf8b6('0x8'));var ejs=require(_0xf8b6('0x9'));var fs=require('fs');var fs_extra=require(_0xf8b6('0xa'));var _=require(_0xf8b6('0xb'));var squel=require(_0xf8b6('0xc'));var crypto=require(_0xf8b6('0xd'));var jsforce=require(_0xf8b6('0xe'));var deskjs=require(_0xf8b6('0xf'));var toCsv=require(_0xf8b6('0x8'));var querystring=require(_0xf8b6('0x10'));var Papa=require(_0xf8b6('0x11'));var Redis=require(_0xf8b6('0x12'));var authService=require(_0xf8b6('0x13'));var qs=require(_0xf8b6('0x14'));var as=require(_0xf8b6('0x15'));var hardwareService=require(_0xf8b6('0x16'));var logger=require(_0xf8b6('0x17'))(_0xf8b6('0x18'));var utils=require(_0xf8b6('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xf8b6('0x1a'));var db=require(_0xf8b6('0x1b'))['db'];config['redis']=_[_0xf8b6('0x1c')](config[_0xf8b6('0x1d')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf8b6('0x1d')]));require(_0xf8b6('0x1e'))[_0xf8b6('0x1f')](socket);function respondWithStatusCode(_0x30af1d,_0x11752b){_0x11752b=_0x11752b||0xcc;return function(_0x49ad1e){if(_0x49ad1e){return _0x30af1d[_0xf8b6('0x20')](_0x11752b);}return _0x30af1d['status'](_0x11752b)['end']();};}function respondWithResult(_0x1629a7,_0x50ebd0){_0x50ebd0=_0x50ebd0||0xc8;return function(_0x23bd49){if(_0x23bd49){return _0x1629a7['status'](_0x50ebd0)[_0xf8b6('0x21')](_0x23bd49);}};}function respondWithFilteredResult(_0x40350d,_0x375ed4){return function(_0x198c61){if(_0x198c61){var _0x5bc4b2=typeof _0x375ed4['offset']===_0xf8b6('0x22')&&typeof _0x375ed4['limit']===_0xf8b6('0x22');var _0x57a897=_0x198c61[_0xf8b6('0x23')];var _0x1cc304=_0x5bc4b2?0x0:_0x375ed4[_0xf8b6('0x24')];var _0x152c95=_0x5bc4b2?_0x198c61[_0xf8b6('0x23')]:_0x375ed4[_0xf8b6('0x24')]+_0x375ed4[_0xf8b6('0x25')];var _0x3e214d;if(_0x152c95>=_0x57a897){_0x152c95=_0x57a897;_0x3e214d=0xc8;}else{_0x3e214d=0xce;}_0x40350d[_0xf8b6('0x26')](_0x3e214d);return _0x40350d[_0xf8b6('0x27')](_0xf8b6('0x28'),_0x1cc304+'-'+_0x152c95+'/'+_0x57a897)['json'](_0x198c61);}return null;};}function patchUpdates(_0x303d99){return function(_0x332d07){try{jsonpatch[_0xf8b6('0x29')](_0x332d07,_0x303d99,!![]);}catch(_0x4d2d29){return BPromise[_0xf8b6('0x2a')](_0x4d2d29);}return _0x332d07[_0xf8b6('0x2b')]();};}function saveUpdates(_0x5a3bef,_0x453f12){return function(_0x2cd054){if(_0x2cd054){return _0x2cd054[_0xf8b6('0x2c')](_0x5a3bef)[_0xf8b6('0x2d')](function(_0x3a16c8){return _0x3a16c8;});}return null;};}function removeEntity(_0x4892ab,_0x410c9a){return function(_0x64dadf){if(_0x64dadf){return _0x64dadf[_0xf8b6('0x2e')]()[_0xf8b6('0x2d')](function(){var _0x20bc99=_0x64dadf[_0xf8b6('0x2f')]({'plain':!![]});var _0x364652=_0xf8b6('0x30');return db['UserProfileResource'][_0xf8b6('0x2e')]({'where':{'type':_0x364652,'resourceId':_0x20bc99['id']}})['then'](function(){return _0x64dadf;});})[_0xf8b6('0x2d')](function(){_0x4892ab['status'](0xcc)[_0xf8b6('0x31')]();});}};}function handleEntityNotFound(_0x1acf71,_0x5d357f){return function(_0x770534){if(!_0x770534){_0x1acf71['sendStatus'](0x194);}return _0x770534;};}function handleError(_0x1189d5,_0x38bb06){_0x38bb06=_0x38bb06||0x1f4;return function(_0x1fb807){logger['error'](_0x1fb807[_0xf8b6('0x32')]);if(_0x1fb807[_0xf8b6('0x33')]){delete _0x1fb807[_0xf8b6('0x33')];}_0x1189d5[_0xf8b6('0x26')](_0x38bb06)[_0xf8b6('0x34')](_0x1fb807);};}exports[_0xf8b6('0x35')]=function(_0x136f7b,_0x5ead1e){var _0x4cc242={},_0x171580={},_0xb6363c={'count':0x0,'rows':[]};var _0x11764e=_[_0xf8b6('0x36')](db[_0xf8b6('0x37')]['rawAttributes'],function(_0x24945e){return{'name':_0x24945e[_0xf8b6('0x38')],'type':_0x24945e[_0xf8b6('0x39')]['key']};});_0x171580['model']=_['map'](_0x11764e,'name');_0x171580[_0xf8b6('0x3a')]=_[_0xf8b6('0x3b')](_0x136f7b[_0xf8b6('0x3a')]);_0x171580[_0xf8b6('0x3c')]=_[_0xf8b6('0x3d')](_0x171580[_0xf8b6('0x3e')],_0x171580['query']);_0x4cc242['attributes']=_[_0xf8b6('0x3d')](_0x171580['model'],qs[_0xf8b6('0x3f')](_0x136f7b[_0xf8b6('0x3a')][_0xf8b6('0x3f')]));_0x4cc242[_0xf8b6('0x40')]=_0x4cc242[_0xf8b6('0x40')]['length']?_0x4cc242[_0xf8b6('0x40')]:_0x171580[_0xf8b6('0x3e')];if(!_0x136f7b[_0xf8b6('0x3a')][_0xf8b6('0x41')](_0xf8b6('0x42'))){_0x4cc242[_0xf8b6('0x25')]=qs[_0xf8b6('0x25')](_0x136f7b[_0xf8b6('0x3a')][_0xf8b6('0x25')]);_0x4cc242['offset']=qs['offset'](_0x136f7b[_0xf8b6('0x3a')]['offset']);}_0x4cc242[_0xf8b6('0x43')]=qs[_0xf8b6('0x44')](_0x136f7b['query'][_0xf8b6('0x44')]);_0x4cc242[_0xf8b6('0x45')]=qs['filters'](_['pick'](_0x136f7b['query'],_0x171580[_0xf8b6('0x3c')]),_0x11764e);if(_0x136f7b['query'][_0xf8b6('0x46')]){_0x4cc242[_0xf8b6('0x45')]=_[_0xf8b6('0x47')](_0x4cc242[_0xf8b6('0x45')],{'$or':_[_0xf8b6('0x36')](_0x11764e,function(_0x503ca9){if(_0x503ca9[_0xf8b6('0x39')]!=='VIRTUAL'){var _0x3081e0={};_0x3081e0[_0x503ca9[_0xf8b6('0x33')]]={'$like':'%'+_0x136f7b[_0xf8b6('0x3a')]['filter']+'%'};return _0x3081e0;}})});}_0x4cc242=_[_0xf8b6('0x47')]({},_0x4cc242,_0x136f7b[_0xf8b6('0x48')]);var _0xaa4b69={'where':_0x4cc242[_0xf8b6('0x45')]};return db['VoicePrefix']['count'](_0xaa4b69)[_0xf8b6('0x2d')](function(_0x19891d){_0xb6363c['count']=_0x19891d;if(_0x136f7b['query'][_0xf8b6('0x49')]){_0x4cc242[_0xf8b6('0x4a')]=[{'all':!![]}];}return db[_0xf8b6('0x37')][_0xf8b6('0x4b')](_0x4cc242);})[_0xf8b6('0x2d')](function(_0x2d8c1e){_0xb6363c[_0xf8b6('0x4c')]=_0x2d8c1e;return _0xb6363c;})[_0xf8b6('0x2d')](respondWithFilteredResult(_0x5ead1e,_0x4cc242))[_0xf8b6('0x4d')](handleError(_0x5ead1e,null));};exports['show']=function(_0x7e79f2,_0x27ab3e){var _0x56cf3e={'raw':![],'where':{'id':_0x7e79f2['params']['id']}},_0x135d95={};_0x135d95['model']=_[_0xf8b6('0x3b')](db['VoicePrefix'][_0xf8b6('0x4e')]);_0x135d95[_0xf8b6('0x3a')]=_[_0xf8b6('0x3b')](_0x7e79f2[_0xf8b6('0x3a')]);_0x135d95[_0xf8b6('0x3c')]=_[_0xf8b6('0x3d')](_0x135d95[_0xf8b6('0x3e')],_0x135d95[_0xf8b6('0x3a')]);_0x56cf3e[_0xf8b6('0x40')]=_[_0xf8b6('0x3d')](_0x135d95['model'],qs[_0xf8b6('0x3f')](_0x7e79f2[_0xf8b6('0x3a')][_0xf8b6('0x3f')]));_0x56cf3e[_0xf8b6('0x40')]=_0x56cf3e[_0xf8b6('0x40')][_0xf8b6('0x4f')]?_0x56cf3e[_0xf8b6('0x40')]:_0x135d95['model'];if(_0x7e79f2['query'][_0xf8b6('0x49')]){_0x56cf3e['include']=[{'all':!![]}];}_0x56cf3e=_[_0xf8b6('0x47')]({},_0x56cf3e,_0x7e79f2[_0xf8b6('0x48')]);return db['VoicePrefix'][_0xf8b6('0x50')](_0x56cf3e)[_0xf8b6('0x2d')](handleEntityNotFound(_0x27ab3e,null))[_0xf8b6('0x2d')](respondWithResult(_0x27ab3e,null))[_0xf8b6('0x4d')](handleError(_0x27ab3e,null));};exports[_0xf8b6('0x2e')]=function(_0x58a1b6,_0x378dd9){return db[_0xf8b6('0x37')][_0xf8b6('0x50')]({'where':{'id':_0x58a1b6[_0xf8b6('0x51')]['id']}})['then'](handleEntityNotFound(_0x378dd9,null))[_0xf8b6('0x2d')](removeEntity(_0x378dd9,null))[_0xf8b6('0x4d')](handleError(_0x378dd9,null));};exports[_0xf8b6('0x52')]=function(_0x20f73d,_0x40acc1){return db[_0xf8b6('0x37')][_0xf8b6('0x52')]()[_0xf8b6('0x2d')](respondWithResult(_0x40acc1,null))[_0xf8b6('0x4d')](handleError(_0x40acc1,null));};exports[_0xf8b6('0x53')]=function(_0x2f0fc9,_0x5e136b){var _0x7916e1;return db[_0xf8b6('0x54')]['transaction'](function(_0x3498e3){return db[_0xf8b6('0x37')][_0xf8b6('0x53')](_0x2f0fc9['body'],{'transaction':_0x3498e3})[_0xf8b6('0x2d')](function(_0x64b6ce){_0x7916e1=_0x64b6ce['get']({'plain':!![]});return db['VoiceExtension'][_0xf8b6('0x50')]({'where':{'id':_0x7916e1['VoiceExtensionId']},'raw':!![]})[_0xf8b6('0x2d')](function(_0x310d33){return createVoicePrefixExtensions(_0x7916e1,_0x310d33,_0x3498e3);});});})['then'](function(){var _0x3bf4bd=_0x2f0fc9[_0xf8b6('0x55')][_0xf8b6('0x2f')]({'plain':!![]});if(!_0x3bf4bd)throw new Error(_0xf8b6('0x56'));if(_0x3bf4bd[_0xf8b6('0x57')]==='user'){var _0x48d7ae=_0x7916e1;return db[_0xf8b6('0x58')][_0xf8b6('0x50')]({'where':{'name':_0xf8b6('0x30'),'userProfileId':_0x3bf4bd[_0xf8b6('0x59')]},'raw':!![]})[_0xf8b6('0x2d')](function(_0x3f6132){if(_0x3f6132&&_0x3f6132[_0xf8b6('0x5a')]===0x0){return db[_0xf8b6('0x5b')]['create']({'name':_0x48d7ae[_0xf8b6('0x33')],'resourceId':_0x48d7ae['id'],'type':_0x3f6132[_0xf8b6('0x33')],'sectionId':_0x3f6132['id']},{})[_0xf8b6('0x2d')](function(){return _0x7916e1;});}else{return _0x7916e1;}})[_0xf8b6('0x4d')](function(_0x3e0aa3){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3e0aa3);throw _0x3e0aa3;});}return _0x7916e1;})[_0xf8b6('0x2d')](respondWithResult(_0x5e136b,null))[_0xf8b6('0x4d')](handleError(_0x5e136b,null));};function Extension(_0x2ef303,_0x5afd15,_0x3346f1,_0xb3694a){this['context']=_0xf8b6('0x5c');this['exten']=_0x2ef303;this[_0xf8b6('0x5d')]=_0x3346f1;this[_0xf8b6('0x39')]='system';this[_0xf8b6('0x5e')]='Voice\x20Prefix\x20Extension';this['priority']=_0x5afd15;this[_0xf8b6('0x5f')]=_0xb3694a;}function createVoicePrefixExtensions(_0x21204c,_0x214429,_0x108d5a){return new BPromise(function(_0x2fe82a,_0x5e63fa){var _0x455238=new Extension(formatPrefixName(_0x21204c['prefix']),0x1,_0xf8b6('0x60'),_0xf8b6('0x61'));_0x455238[_0xf8b6('0x62')]=_0x21204c['id'];return db['VoiceExtension'][_0xf8b6('0x53')](_0x455238,{'transaction':_0x108d5a})[_0xf8b6('0x2d')](function(_0xd3ebb){var _0x393ca6=_0xd3ebb['get']({'plain':!![]});var _0x34d88a=_[_0xf8b6('0x36')](addVoicePrefixExtensions(_0x21204c,_0x214429),function(_0x14c367){_0x14c367['VoiceExtensionId']=_0x393ca6['id'];_0x14c367['VoicePrefixId']=_0x21204c['id'];return _0x14c367;});return db['VoiceExtension'][_0xf8b6('0x63')](_0x34d88a,{'transaction':_0x108d5a})[_0xf8b6('0x2d')](function(_0x25c1b6){if(!_0x25c1b6){return _0x5e63fa(_0xf8b6('0x64'));}else{return _0x2fe82a(_0x25c1b6);}})['catch'](function(_0x201826){return _0x5e63fa(_0x201826);});});;});};function addVoicePrefixExtensions(_0x2e1474,_0x4453d2){var _0x233d04=[];var _0x389c52=formatPrefixName(_0x2e1474['prefix']);_0x233d04[_0xf8b6('0x65')](new Extension(_0x389c52,0x2,_0xf8b6('0x66'),_0xf8b6('0x67')+_0x2e1474['name']));if(_0x2e1474[_0xf8b6('0x68')]){_0x233d04['push'](new Extension(_0x389c52,0x3,_0xf8b6('0x66'),_0xf8b6('0x69')+_0x2e1474['callerIdAll']));}else{_0x233d04[_0xf8b6('0x65')](new Extension(_0x389c52,0x3,'NoOp',_0xf8b6('0x6a')));}_0x233d04[_0xf8b6('0x65')](new Extension(_0x389c52,0x4,_0xf8b6('0x6b'),_0x4453d2[_0xf8b6('0x6c')]+','+_0xf8b6('0x6d')+(0x8+_0x2e1474[_0xf8b6('0x33')][_0xf8b6('0x4f')])+'}'+','+0x1));return _0x233d04;}function formatPrefixName(_0x2496d3){var _0x3b86f1='_';for(var _0x4080ec=0x0;_0x4080ec<_0x2496d3[_0xf8b6('0x4f')];_0x4080ec++){if(_0x2496d3['charAt'](_0x4080ec)=='-'){_0x3b86f1+=_0x2496d3[_0xf8b6('0x6e')](_0x4080ec);}else{_0x3b86f1+='['+_0x2496d3['charAt'](_0x4080ec)+']';}}_0x3b86f1+='.';return _0x3b86f1;}exports[_0xf8b6('0x2c')]=function(_0x3314c3,_0x46e7a7,_0x448fd2){var _0x2ca04e=_0x3314c3[_0xf8b6('0x6f')];_0x2ca04e[_0xf8b6('0x70')]='system-'+_0x2ca04e[_0xf8b6('0x33')]+'-';return db[_0xf8b6('0x54')][_0xf8b6('0x71')](function(_0x598559){return db[_0xf8b6('0x37')][_0xf8b6('0x2c')](_0x2ca04e,{'where':{'id':_0x2ca04e['id']},'transaction':_0x598559})['then'](function(){return db[_0xf8b6('0x72')][_0xf8b6('0x2e')]({'where':{'VoicePrefixId':_0x2ca04e['id']},'transaction':_0x598559})['then'](function(){return db['VoiceExtension'][_0xf8b6('0x50')]({'where':{'id':_0x2ca04e['VoiceExtensionId']},'raw':!![]})[_0xf8b6('0x2d')](function(_0x50e99c){return createVoicePrefixExtensions(_0x2ca04e,_0x50e99c,_0x598559);});});});})[_0xf8b6('0x2d')](function(){return db['VoicePrefix'][_0xf8b6('0x73')](_0x2ca04e['id']);})[_0xf8b6('0x2d')](respondWithResult(_0x46e7a7,null))[_0xf8b6('0x4d')](handleError(_0x46e7a7,null));};exports[_0xf8b6('0x74')]=function(_0xcd3688,_0x50d4fd,_0x248ae2){return db[_0xf8b6('0x37')][_0xf8b6('0x50')]({'where':{'id':_0xcd3688[_0xf8b6('0x51')]['id']}})['then'](handleEntityNotFound(_0x50d4fd,null))[_0xf8b6('0x2d')](function(_0x352d4c){if(_0x352d4c){return _0x352d4c[_0xf8b6('0x74')](_0xcd3688[_0xf8b6('0x6f')][_0xf8b6('0x75')],_['omit'](_0xcd3688[_0xf8b6('0x6f')],['ids','id'])||{})[_0xf8b6('0x76')](function(_0x410ab9){for(var _0xa9a626=0x0;_0xa9a626<_0xcd3688['body'][_0xf8b6('0x75')][_0xf8b6('0x4f')];_0xa9a626+=0x1){socket['emit']('userVoicePrefix:save',{'UserId':Number(_0xcd3688[_0xf8b6('0x6f')][_0xf8b6('0x75')][_0xa9a626]),'VoicePrefixId':Number(_0xcd3688['params']['id'])});}return _0x410ab9;});}})['then'](respondWithResult(_0x50d4fd,null))['catch'](handleError(_0x50d4fd,null));};exports[_0xf8b6('0x77')]=function(_0x2b30b4,_0x5ce729,_0x50af1e){return db['VoicePrefix']['find']({'where':{'id':_0x2b30b4[_0xf8b6('0x51')]['id']}})[_0xf8b6('0x2d')](handleEntityNotFound(_0x5ce729,null))['then'](function(_0x11250f){if(_0x11250f){return _0x11250f[_0xf8b6('0x77')](_0x2b30b4[_0xf8b6('0x3a')]['ids'])[_0xf8b6('0x2d')](function(){if(_[_0xf8b6('0x78')](_0x2b30b4[_0xf8b6('0x3a')][_0xf8b6('0x75')])){for(var _0x234121=0x0;_0x234121<_0x2b30b4[_0xf8b6('0x3a')][_0xf8b6('0x75')][_0xf8b6('0x4f')];_0x234121+=0x1){socket[_0xf8b6('0x79')](_0xf8b6('0x7a'),{'UserId':Number(_0x2b30b4['query']['ids'][_0x234121]),'VoicePrefixId':Number(_0x2b30b4[_0xf8b6('0x51')]['id'])});}}else{socket[_0xf8b6('0x79')](_0xf8b6('0x7a'),{'UserId':Number(_0x2b30b4[_0xf8b6('0x3a')][_0xf8b6('0x75')]),'VoicePrefixId':Number(_0x2b30b4[_0xf8b6('0x51')]['id'])});}});}})['then'](respondWithStatusCode(_0x5ce729,null))[_0xf8b6('0x4d')](handleError(_0x5ce729,null));};exports[_0xf8b6('0x7b')]=function(_0x41a979,_0x5e2287,_0x4b9124){var _0x23db14={};var _0xbb9bab={};var _0x109cba;var _0x22f0ba;return db[_0xf8b6('0x37')][_0xf8b6('0x7c')]({'where':{'id':_0x41a979[_0xf8b6('0x51')]['id']}})[_0xf8b6('0x2d')](handleEntityNotFound(_0x5e2287,null))[_0xf8b6('0x2d')](function(_0x5e17aa){if(_0x5e17aa){_0x109cba=_0x5e17aa;_0xbb9bab['model']=_[_0xf8b6('0x3b')](db[_0xf8b6('0x7d')]['rawAttributes']);_0xbb9bab[_0xf8b6('0x3a')]=_[_0xf8b6('0x3b')](_0x41a979[_0xf8b6('0x3a')]);_0xbb9bab['filters']=_[_0xf8b6('0x3d')](_0xbb9bab['model'],_0xbb9bab[_0xf8b6('0x3a')]);_0x23db14[_0xf8b6('0x40')]=_[_0xf8b6('0x3d')](_0xbb9bab[_0xf8b6('0x3e')],qs['fields'](_0x41a979[_0xf8b6('0x3a')]['fields']));_0x23db14[_0xf8b6('0x40')]=_0x23db14[_0xf8b6('0x40')][_0xf8b6('0x4f')]?_0x23db14['attributes']:_0xbb9bab[_0xf8b6('0x3e')];_0x23db14[_0xf8b6('0x43')]=qs[_0xf8b6('0x44')](_0x41a979['query'][_0xf8b6('0x44')]);_0x23db14['where']=qs[_0xf8b6('0x3c')](_[_0xf8b6('0x7e')](_0x41a979[_0xf8b6('0x3a')],_0xbb9bab['filters']));if(_0x41a979[_0xf8b6('0x3a')]['filter']){_0x23db14[_0xf8b6('0x45')]=_[_0xf8b6('0x47')](_0x23db14['where'],{'$or':_[_0xf8b6('0x36')](_0x23db14[_0xf8b6('0x40')],function(_0x1591c7){var _0x47fa82={};_0x47fa82[_0x1591c7]={'$like':'%'+_0x41a979['query'][_0xf8b6('0x46')]+'%'};return _0x47fa82;})});}_0x23db14=_[_0xf8b6('0x47')]({},_0x23db14,_0x41a979['options']);return _0x109cba['getAgents'](_0x23db14);}})[_0xf8b6('0x2d')](function(_0x205af2){if(_0x205af2){_0x22f0ba=_0x205af2['length'];if(!_0x41a979[_0xf8b6('0x3a')][_0xf8b6('0x41')](_0xf8b6('0x42'))){_0x23db14['limit']=qs[_0xf8b6('0x25')](_0x41a979['query'][_0xf8b6('0x25')]);_0x23db14[_0xf8b6('0x24')]=qs[_0xf8b6('0x24')](_0x41a979[_0xf8b6('0x3a')][_0xf8b6('0x24')]);}return _0x109cba[_0xf8b6('0x7b')](_0x23db14);}})[_0xf8b6('0x2d')](function(_0x389902){if(_0x389902){return _0x389902?{'count':_0x22f0ba,'rows':_0x389902}:null;}})[_0xf8b6('0x2d')](respondWithResult(_0x5e2287,null))['catch'](handleError(_0x5e2287,null));};
\ No newline at end of file
index 4814a26..5f1e952 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x489e=['emit','hook','exports','events','VoicePrefix','setMaxListeners','save','update'];(function(_0x26802d,_0xcca2ef){var _0x2b3279=function(_0x1efb0f){while(--_0x1efb0f){_0x26802d['push'](_0x26802d['shift']());}};_0x2b3279(++_0xcca2ef);}(_0x489e,0xe3));var _0xe489=function(_0x52eb08,_0x4341f3){_0x52eb08=_0x52eb08-0x0;var _0x303dd7=_0x489e[_0x52eb08];return _0x303dd7;};'use strict';var EventEmitter=require(_0xe489('0x0'));var VoicePrefix=require('../../mysqldb')['db'][_0xe489('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xe489('0x2')](0x0);var events={'afterCreate':_0xe489('0x3'),'afterUpdate':_0xe489('0x4'),'afterDestroy':'remove'};function emitEvent(_0x5daf6c){return function(_0x369031,_0x28a819,_0x56e97f){VoicePrefixEvents[_0xe489('0x5')](_0x5daf6c+':'+_0x369031['id'],_0x369031);VoicePrefixEvents[_0xe489('0x5')](_0x5daf6c,_0x369031);_0x56e97f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix[_0xe489('0x6')](e,emitEvent(event));}}module[_0xe489('0x7')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x929f=['remove','emit','hasOwnProperty','hook','exports','setMaxListeners','save','update'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x929f,0x145));var _0xf929=function(_0x6cf7b4,_0x5976a6){_0x6cf7b4=_0x6cf7b4-0x0;var _0x5df872=_0x929f[_0x6cf7b4];return _0x5df872;};'use strict';var EventEmitter=require('events');var VoicePrefix=require('../../mysqldb')['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xf929('0x0')](0x0);var events={'afterCreate':_0xf929('0x1'),'afterUpdate':_0xf929('0x2'),'afterDestroy':_0xf929('0x3')};function emitEvent(_0xf62c05){return function(_0x193b80,_0xd75d59,_0xc0520f){VoicePrefixEvents[_0xf929('0x4')](_0xf62c05+':'+_0x193b80['id'],_0x193b80);VoicePrefixEvents['emit'](_0xf62c05,_0x193b80);_0xc0520f(null);};}for(var e in events){if(events[_0xf929('0x5')](e)){var event=events[e];VoicePrefix[_0xf929('0x6')](e,emitEvent(event));}}module[_0xf929('0x7')]=VoicePrefixEvents;
\ No newline at end of file
index da2dcdb..03a3035 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe71f=['rimraf','../../config/environment','./voicePrefix.attributes','exports','define','VoicePrefix','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x207d4e,_0x5158dc){var _0x24b6f4=function(_0x96ce36){while(--_0x96ce36){_0x207d4e['push'](_0x207d4e['shift']());}};_0x24b6f4(++_0x5158dc);}(_0xe71f,0x1b3));var _0xfe71=function(_0x4c7964,_0x54cf1b){_0x4c7964=_0x4c7964-0x0;var _0x2dfb84=_0xe71f[_0x4c7964];return _0x2dfb84;};'use strict';var _=require(_0xfe71('0x0'));var util=require('util');var logger=require(_0xfe71('0x1'))(_0xfe71('0x2'));var moment=require(_0xfe71('0x3'));var BPromise=require(_0xfe71('0x4'));var rp=require(_0xfe71('0x5'));var fs=require('fs');var path=require(_0xfe71('0x6'));var rimraf=require(_0xfe71('0x7'));var config=require(_0xfe71('0x8'));var attributes=require(_0xfe71('0x9'));module[_0xfe71('0xa')]=function(_0x2fc9dd,_0x625cad){return _0x2fc9dd[_0xfe71('0xb')](_0xfe71('0xc'),attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1df9=['path','rimraf','./voicePrefix.attributes','define','lodash','util','api','moment','bluebird','request-promise'];(function(_0x443b63,_0x52c3f0){var _0x33bba6=function(_0xac7cdb){while(--_0xac7cdb){_0x443b63['push'](_0x443b63['shift']());}};_0x33bba6(++_0x52c3f0);}(_0x1df9,0x1a8));var _0x91df=function(_0x506e91,_0x35a53d){_0x506e91=_0x506e91-0x0;var _0x1bcc59=_0x1df9[_0x506e91];return _0x1bcc59;};'use strict';var _=require(_0x91df('0x0'));var util=require(_0x91df('0x1'));var logger=require('../../config/logger')(_0x91df('0x2'));var moment=require(_0x91df('0x3'));var BPromise=require(_0x91df('0x4'));var rp=require(_0x91df('0x5'));var fs=require('fs');var path=require(_0x91df('0x6'));var rimraf=require(_0x91df('0x7'));var config=require('../../config/environment');var attributes=require(_0x91df('0x8'));module['exports']=function(_0xa2ee10,_0x1bece6){return _0xa2ee10[_0x91df('0x9')]('VoicePrefix',attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ef35280..de14152 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3e3=['error','code','message','request\x20sent','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','info','VoicePrefix,\x20%s,\x20%s','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify'];(function(_0xfad1a7,_0x2e3b8d){var _0x571012=function(_0x33255d){while(--_0x33255d){_0xfad1a7['push'](_0xfad1a7['shift']());}};_0x571012(++_0x2e3b8d);}(_0xd3e3,0xdd));var _0x3d3e=function(_0x56f883,_0x146daf){_0x56f883=_0x56f883-0x0;var _0x563550=_0xd3e3[_0x56f883];return _0x563550;};'use strict';var _=require(_0x3d3e('0x0'));var util=require(_0x3d3e('0x1'));var moment=require(_0x3d3e('0x2'));var BPromise=require(_0x3d3e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3d3e('0x4'));var db=require(_0x3d3e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3d3e('0x6'))(_0x3d3e('0x7'));var config=require('../../config/environment');var jayson=require(_0x3d3e('0x8'));var client=jayson[_0x3d3e('0x9')][_0x3d3e('0xa')]({'port':0x232a});config[_0x3d3e('0xb')]=_[_0x3d3e('0xc')](config['redis'],{'host':_0x3d3e('0xd'),'port':0x18eb});var socket=require(_0x3d3e('0xe'))(new Redis(config[_0x3d3e('0xb')]));require('./voicePrefix.socket')[_0x3d3e('0xf')](socket);function respondWithRpcPromise(_0x17b2c5,_0x25c4a1,_0x45cb37){return new BPromise(function(_0x5cb1be,_0x53b776){return client['request'](_0x17b2c5,_0x45cb37)[_0x3d3e('0x10')](function(_0x144237){logger[_0x3d3e('0x11')](_0x3d3e('0x12'),_0x25c4a1,'request\x20sent');logger[_0x3d3e('0x13')](_0x3d3e('0x14'),_0x25c4a1,'request\x20sent',JSON[_0x3d3e('0x15')](_0x144237));if(_0x144237[_0x3d3e('0x16')]){if(_0x144237[_0x3d3e('0x16')][_0x3d3e('0x17')]===0x1f4){logger[_0x3d3e('0x16')](_0x3d3e('0x12'),_0x25c4a1,_0x144237[_0x3d3e('0x16')][_0x3d3e('0x18')]);return _0x53b776(_0x144237[_0x3d3e('0x16')]['message']);}logger[_0x3d3e('0x16')](_0x3d3e('0x12'),_0x25c4a1,_0x144237[_0x3d3e('0x16')]['message']);return _0x5cb1be(_0x144237['error'][_0x3d3e('0x18')]);}else{logger['info'](_0x3d3e('0x12'),_0x25c4a1,_0x3d3e('0x19'));_0x5cb1be(_0x144237[_0x3d3e('0x1a')][_0x3d3e('0x18')]);}})['catch'](function(_0x4a9adb){logger[_0x3d3e('0x16')](_0x3d3e('0x12'),_0x25c4a1,_0x4a9adb);_0x53b776(_0x4a9adb);});});}
\ No newline at end of file
+var _0xb7ae=['../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voicePrefix.socket','register','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','error','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0xc49bc6,_0xaaf844){var _0x1d7079=function(_0x4d2e4e){while(--_0x4d2e4e){_0xc49bc6['push'](_0xc49bc6['shift']());}};_0x1d7079(++_0xaaf844);}(_0xb7ae,0xf3));var _0xeb7a=function(_0x3a9e41,_0x1554e0){_0x3a9e41=_0x3a9e41-0x0;var _0x855ff0=_0xb7ae[_0x3a9e41];return _0x855ff0;};'use strict';var _=require(_0xeb7a('0x0'));var util=require(_0xeb7a('0x1'));var moment=require(_0xeb7a('0x2'));var BPromise=require(_0xeb7a('0x3'));var rs=require(_0xeb7a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xeb7a('0x5'))['db'];var utils=require(_0xeb7a('0x6'));var logger=require(_0xeb7a('0x7'))('rpc');var config=require(_0xeb7a('0x8'));var jayson=require(_0xeb7a('0x9'));var client=jayson[_0xeb7a('0xa')][_0xeb7a('0xb')]({'port':0x232a});config[_0xeb7a('0xc')]=_['defaults'](config[_0xeb7a('0xc')],{'host':_0xeb7a('0xd'),'port':0x18eb});var socket=require(_0xeb7a('0xe'))(new Redis(config['redis']));require(_0xeb7a('0xf'))[_0xeb7a('0x10')](socket);function respondWithRpcPromise(_0xb440a6,_0x15581b,_0x1a997e){return new BPromise(function(_0x275d58,_0x1e56db){return client['request'](_0xb440a6,_0x1a997e)['then'](function(_0x31222f){logger[_0xeb7a('0x11')](_0xeb7a('0x12'),_0x15581b,_0xeb7a('0x13'));logger[_0xeb7a('0x14')](_0xeb7a('0x15'),_0x15581b,_0xeb7a('0x13'),JSON['stringify'](_0x31222f));if(_0x31222f[_0xeb7a('0x16')]){if(_0x31222f[_0xeb7a('0x16')]['code']===0x1f4){logger[_0xeb7a('0x16')](_0xeb7a('0x12'),_0x15581b,_0x31222f['error'][_0xeb7a('0x17')]);return _0x1e56db(_0x31222f['error']['message']);}logger[_0xeb7a('0x16')]('VoicePrefix,\x20%s,\x20%s',_0x15581b,_0x31222f['error'][_0xeb7a('0x17')]);return _0x275d58(_0x31222f[_0xeb7a('0x16')][_0xeb7a('0x17')]);}else{logger[_0xeb7a('0x11')]('VoicePrefix,\x20%s,\x20%s',_0x15581b,'request\x20sent');_0x275d58(_0x31222f[_0xeb7a('0x18')][_0xeb7a('0x17')]);}})['catch'](function(_0x538311){logger[_0xeb7a('0x16')](_0xeb7a('0x12'),_0x15581b,_0x538311);_0x1e56db(_0x538311);});});}
\ No newline at end of file
index 32ec922..e7250cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfe9=['remove','emit','removeListener','register','length','voicePrefix:','./voicePrefix.events'];(function(_0x44a3e1,_0x4084b4){var _0x493faa=function(_0x406529){while(--_0x406529){_0x44a3e1['push'](_0x44a3e1['shift']());}};_0x493faa(++_0x4084b4);}(_0xdfe9,0xc3));var _0x9dfe=function(_0x2e69af,_0x45bfc9){_0x2e69af=_0x2e69af-0x0;var _0x154ed9=_0xdfe9[_0x2e69af];return _0x154ed9;};'use strict';var VoicePrefixEvents=require(_0x9dfe('0x0'));var events=['save',_0x9dfe('0x1'),'update'];function createListener(_0x4c67d6,_0x32bd98){return function(_0x2d3b4e){_0x32bd98[_0x9dfe('0x2')](_0x4c67d6,_0x2d3b4e);};}function removeListener(_0x35fd64,_0x1ed50f){return function(){VoicePrefixEvents[_0x9dfe('0x3')](_0x35fd64,_0x1ed50f);};}exports[_0x9dfe('0x4')]=function(_0x3678b1){for(var _0x2b0d0b=0x0,_0x3471f0=events[_0x9dfe('0x5')];_0x2b0d0b<_0x3471f0;_0x2b0d0b++){var _0x5e0faf=events[_0x2b0d0b];var _0x377c1e=createListener(_0x9dfe('0x6')+_0x5e0faf,_0x3678b1);VoicePrefixEvents['on'](_0x5e0faf,_0x377c1e);}};
\ No newline at end of file
+var _0x1cf3=['emit','removeListener','register','length','voicePrefix:','./voicePrefix.events','save','remove','update'];(function(_0x23a9cb,_0x2cf119){var _0x2e1181=function(_0xc69873){while(--_0xc69873){_0x23a9cb['push'](_0x23a9cb['shift']());}};_0x2e1181(++_0x2cf119);}(_0x1cf3,0x1be));var _0x31cf=function(_0x3d5c7e,_0x4a311e){_0x3d5c7e=_0x3d5c7e-0x0;var _0x2cbe3a=_0x1cf3[_0x3d5c7e];return _0x2cbe3a;};'use strict';var VoicePrefixEvents=require(_0x31cf('0x0'));var events=[_0x31cf('0x1'),_0x31cf('0x2'),_0x31cf('0x3')];function createListener(_0x54dff7,_0x20aa57){return function(_0x5a2ae7){_0x20aa57[_0x31cf('0x4')](_0x54dff7,_0x5a2ae7);};}function removeListener(_0x442009,_0x44d64d){return function(){VoicePrefixEvents[_0x31cf('0x5')](_0x442009,_0x44d64d);};}exports[_0x31cf('0x6')]=function(_0x44dd04){for(var _0x2b7cd4=0x0,_0x1830b4=events[_0x31cf('0x7')];_0x2b7cd4<_0x1830b4;_0x2b7cd4++){var _0x6be80=events[_0x2b7cd4];var _0x3f7b2e=createListener(_0x31cf('0x8')+_0x6be80,_0x44dd04);VoicePrefixEvents['on'](_0x6be80,_0x3f7b2e);}};
\ No newline at end of file
index d79b32b..62853c8 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(_0x5b077b,_0x50b707){var _0x16faf7=function(_0x41ba83){while(--_0x41ba83){_0x5b077b['push'](_0x5b077b['shift']());}};_0x16faf7(++_0x50b707);}(_0xb10b,0x12a));var _0xbb10=function(_0x2bd4e3,_0x4d9b53){_0x2bd4e3=_0x2bd4e3-0x0;var _0x259f7c=_0xb10b[_0x2bd4e3];return _0x259f7c;};'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 _0xd766=['getHopperFinals','/:id/hopper_black','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','/:id/teams','addTeams','addAgents','addLists','addBlackLists','put','destroy','removeTeams','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers','/:id/hopper_histories','/:id/hopper_finals'];(function(_0x47ce8f,_0x313a66){var _0x12b547=function(_0x1034a3){while(--_0x1034a3){_0x47ce8f['push'](_0x47ce8f['shift']());}};_0x12b547(++_0x313a66);}(_0xd766,0x188));var _0x6d76=function(_0xeaba4b,_0x1eab4b){_0xeaba4b=_0xeaba4b-0x0;var _0x32f4fd=_0xd766[_0xeaba4b];return _0x32f4fd;};'use strict';var multer=require(_0x6d76('0x0'));var util=require(_0x6d76('0x1'));var path=require(_0x6d76('0x2'));var timeout=require(_0x6d76('0x3'));var express=require(_0x6d76('0x4'));var router=express[_0x6d76('0x5')]();var fs_extra=require(_0x6d76('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x6d76('0x7'));var config=require(_0x6d76('0x8'));var controller=require(_0x6d76('0x9'));router[_0x6d76('0xa')]('/',auth[_0x6d76('0xb')](),controller[_0x6d76('0xc')]);router[_0x6d76('0xa')](_0x6d76('0xd'),auth[_0x6d76('0xb')](),controller[_0x6d76('0xe')]);router['get'](_0x6d76('0xf'),auth['isAuthenticated'](),controller['getHoppers']);router['get'](_0x6d76('0x10'),auth[_0x6d76('0xb')](),controller['getHopperHistories']);router['get'](_0x6d76('0x11'),auth[_0x6d76('0xb')](),controller[_0x6d76('0x12')]);router[_0x6d76('0xa')](_0x6d76('0x13'),auth[_0x6d76('0xb')](),controller['getHopperBlacks']);router[_0x6d76('0xa')]('/:id/teams',auth[_0x6d76('0xb')](),controller['getTeams']);router[_0x6d76('0xa')](_0x6d76('0x14'),auth[_0x6d76('0xb')](),controller[_0x6d76('0x15')]);router[_0x6d76('0xa')](_0x6d76('0x16'),auth[_0x6d76('0xb')](),controller[_0x6d76('0x17')]);router[_0x6d76('0xa')](_0x6d76('0x18'),auth[_0x6d76('0xb')](),controller[_0x6d76('0x19')]);router['get'](_0x6d76('0x1a'),auth['isAuthenticated'](),controller[_0x6d76('0x1b')]);router[_0x6d76('0x1c')]('/',auth['isAuthenticated'](),controller[_0x6d76('0x1d')]);router[_0x6d76('0x1c')](_0x6d76('0x1e'),auth['isAuthenticated'](),controller[_0x6d76('0x1f')]);router[_0x6d76('0x1c')](_0x6d76('0x20'),auth[_0x6d76('0xb')](),controller[_0x6d76('0x21')]);router['post']('/:id/users',auth['isAuthenticated'](),controller[_0x6d76('0x22')]);router[_0x6d76('0x1c')](_0x6d76('0x18'),auth[_0x6d76('0xb')](),controller[_0x6d76('0x23')]);router[_0x6d76('0x1c')]('/:id/blacklists',auth['isAuthenticated'](),controller[_0x6d76('0x24')]);router[_0x6d76('0x25')](_0x6d76('0xd'),auth[_0x6d76('0xb')](),controller['update']);router['delete'](_0x6d76('0xd'),auth['isAuthenticated'](),controller[_0x6d76('0x26')]);router['delete'](_0x6d76('0x20'),auth['isAuthenticated'](),controller[_0x6d76('0x27')]);router['delete']('/:id/users',auth[_0x6d76('0xb')](),controller['removeAgents']);router[_0x6d76('0x28')](_0x6d76('0x18'),auth[_0x6d76('0xb')](),controller['removeLists']);router[_0x6d76('0x28')]('/:id/blacklists',auth[_0x6d76('0xb')](),controller['removeBlackLists']);module['exports']=router;
\ No newline at end of file
index 8ab5709..2236367 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5aaa=['random','rrmemory','linear','setDataValue','getDataValue','type','dialMethod','strategy','booked','roundrobin','progressive','predictive','power','INTEGER','yes','all','once','TEXT','join','periodic_announce','joinempty','split','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','Dial\x20Method.','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','UNSIGNED','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)','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','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','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\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\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#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','mandatoryDispositionPauseId','name','inbound','outbound','STRING','default','ENUM','ringall','leastrecent','fewestcalls'];(function(_0x9a581d,_0x1e3fe9){var _0xd9d69=function(_0x29be4e){while(--_0x29be4e){_0x9a581d['push'](_0x9a581d['shift']());}};_0xd9d69(++_0x1e3fe9);}(_0x5aaa,0xff));var _0xa5aa=function(_0x1417d3,_0x4b5533){_0x1417d3=_0x1417d3-0x0;var _0x1d39a8=_0x5aaa[_0x1417d3];return _0x1d39a8;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xa5aa('0x0'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0xa5aa('0x1'),_0xa5aa('0x2')),'allowNull':![],'defaultValue':_0xa5aa('0x1')},'musiconhold':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':_0xa5aa('0x4')},'announce':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':''},'strategy':{'type':Sequelize[_0xa5aa('0x5')]('rr',_0xa5aa('0x6'),_0xa5aa('0x7'),_0xa5aa('0x8'),_0xa5aa('0x9'),_0xa5aa('0xa'),_0xa5aa('0xb'),'wrandom','rrordered'),'allowNull':![],'defaultValue':_0xa5aa('0x6'),'set':function(_0xeb46fb){this[_0xa5aa('0xc')]('strategy',_0xeb46fb?_0xeb46fb:'rrmemory');},'get':function(){var _0x7ef101=this[_0xa5aa('0xd')](_0xa5aa('0xe'));var _0x4f73a2=this['getDataValue'](_0xa5aa('0xf'));var _0x2f2a4b=this[_0xa5aa('0xd')](_0xa5aa('0x10'));if(_0x7ef101===_0xa5aa('0x1')){return _0x2f2a4b;}if(_0x4f73a2===_0xa5aa('0x11')&&_0x2f2a4b===_0xa5aa('0xa')||_0x4f73a2===_0xa5aa('0x11')&&_0x2f2a4b===_0xa5aa('0x12')){return _0x2f2a4b;}if(_0x4f73a2===_0xa5aa('0x13')||_0x4f73a2===_0xa5aa('0x14')||_0x4f73a2===_0xa5aa('0x15')){return _0x2f2a4b;}return null;}},'servicelevel':{'type':Sequelize[_0xa5aa('0x16')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize[_0xa5aa('0x16')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xa5aa('0x3')]},'weight':{'type':Sequelize[_0xa5aa('0x16')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xa5aa('0x16')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xa5aa('0x5')]('yes','no'),'defaultValue':_0xa5aa('0x17')},'autopause':{'type':Sequelize[_0xa5aa('0x5')](_0xa5aa('0x17'),'no',_0xa5aa('0x18')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xa5aa('0x16')](0xb)},'autopausebusy':{'type':Sequelize[_0xa5aa('0x5')](_0xa5aa('0x17'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xa5aa('0x5')](_0xa5aa('0x17'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xa5aa('0x16')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xa5aa('0x5')]('yes','no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM'](_0xa5aa('0x17'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xa5aa('0x5')](_0xa5aa('0x17'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize['ENUM'](_0xa5aa('0x17'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xa5aa('0x3')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xa5aa('0x3')],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xa5aa('0x16')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0xa5aa('0x16')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xa5aa('0x5')](_0xa5aa('0x17'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0xa5aa('0x17'),'no'),'defaultValue':_0xa5aa('0x17')},'announce_holdtime':{'type':Sequelize[_0xa5aa('0x5')](_0xa5aa('0x17'),'no',_0xa5aa('0x19')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize['ENUM']('yes','no')},'announce_position_limit':{'type':Sequelize[_0xa5aa('0x16')](0xb)},'announce_round_seconds':{'type':Sequelize[_0xa5aa('0x5')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xa5aa('0x3')]},'queue_youarenext':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':null},'queue_minute':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':null},'queue_reporthold':{'type':Sequelize['STRING']},'queue_quantity1':{'type':Sequelize[_0xa5aa('0x3')]},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize[_0xa5aa('0x3')]},'queue_less_than':{'type':Sequelize[_0xa5aa('0x3')]},'periodic_announce':{'type':Sequelize[_0xa5aa('0x1a')],'set':function(_0x4eda69){this[_0xa5aa('0xc')]('periodic_announce',_0x4eda69?_0x4eda69[_0xa5aa('0x1b')](','):[]);},'get':function(){return this[_0xa5aa('0xd')]('periodic_announce')?this['getDataValue'](_0xa5aa('0x1c'))['split'](','):[];}},'joinempty':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':_0xa5aa('0x17'),'set':function(_0x2b57b4){this[_0xa5aa('0xc')]('joinempty',_0x2b57b4?_0x2b57b4[_0xa5aa('0x1b')](','):undefined);},'get':function(){return this['getDataValue'](_0xa5aa('0x1d'))?this[_0xa5aa('0xd')]('joinempty')[_0xa5aa('0x1e')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':'no','set':function(_0x4743bd){this['setDataValue']('leavewhenempty',_0x4743bd?_0x4743bd[_0xa5aa('0x1b')](','):undefined);},'get':function(){return this[_0xa5aa('0xd')]('leavewhenempty')?this[_0xa5aa('0xd')](_0xa5aa('0x1f'))[_0xa5aa('0x1e')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xa5aa('0x5')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xa5aa('0x5')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xa5aa('0x16')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xa5aa('0x5')](_0xa5aa('0x17'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xa5aa('0x3')]},'description':{'type':Sequelize[_0xa5aa('0x3')]},'acw':{'type':Sequelize[_0xa5aa('0x20')],'defaultValue':0x0,'set':function(_0x489a5c){this[_0xa5aa('0xc')](_0xa5aa('0x21'),_0x489a5c);if(_0x489a5c){if(this[_0xa5aa('0xd')]('wrapuptime')<0x2){this[_0xa5aa('0xc')](_0xa5aa('0x22'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xa5aa('0x16')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xa5aa('0x20')],'defaultValue':0x0,'comment':_0xa5aa('0x23')},'dialMethod':{'type':Sequelize[_0xa5aa('0x5')]('preview',_0xa5aa('0x13'),_0xa5aa('0x15'),_0xa5aa('0x14'),_0xa5aa('0x11')),'defaultValue':'progressive','comment':_0xa5aa('0x24')},'dialLimitChannel':{'type':Sequelize[_0xa5aa('0x16')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xa5aa('0x25')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xa5aa('0x26')},'dialPowerLevel':{'type':Sequelize[_0xa5aa('0x27')](0x2)[_0xa5aa('0x28')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize[_0xa5aa('0x5')](_0xa5aa('0x29'),_0xa5aa('0x2a')),'defaultValue':_0xa5aa('0x2a'),'comment':_0xa5aa('0x2b')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xa5aa('0x2c')},'dialPredictiveInterval':{'type':Sequelize[_0xa5aa('0x16')](0x3)[_0xa5aa('0x28')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xa5aa('0x2d')},'dialOriginateCallerIdName':{'type':Sequelize[_0xa5aa('0x3')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xa5aa('0x3')]},'dialOriginateTimeout':{'type':Sequelize[_0xa5aa('0x16')](0x3)[_0xa5aa('0x28')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa5aa('0x2e')},'dialQueueOptions':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':_0xa5aa('0x2f'),'comment':_0xa5aa('0x30')},'dialQueueTimeout':{'type':Sequelize[_0xa5aa('0x16')](0x3)[_0xa5aa('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa5aa('0x31')},'dialQueueProject':{'type':Sequelize[_0xa5aa('0x3')],'comment':_0xa5aa('0x32')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa5aa('0x33')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xa5aa('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa5aa('0x34')},'dialBusyMaxRetry':{'type':Sequelize[_0xa5aa('0x16')](0x3)[_0xa5aa('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa5aa('0x35')},'dialBusyRetryFrequency':{'type':Sequelize[_0xa5aa('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa5aa('0x36')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xa5aa('0x16')](0x3)[_0xa5aa('0x28')],'defaultValue':0x3,'comment':_0xa5aa('0x37')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xa5aa('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa5aa('0x38')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xa5aa('0x28')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xa5aa('0x39')},'dialTimezone':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0xa5aa('0x3a')},'dialPrefix':{'type':Sequelize[_0xa5aa('0x3')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0xa5aa('0x3b'),_0xa5aa('0x3c'),_0xa5aa('0x3d')),'defaultValue':_0xa5aa('0x3b')},'dialAMDActive':{'type':Sequelize[_0xa5aa('0x20')],'defaultValue':0x0,'comment':_0xa5aa('0x3e')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0xa5aa('0x28')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xa5aa('0x3f')},'dialAMDGreeting':{'type':Sequelize[_0xa5aa('0x16')](0x9)[_0xa5aa('0x28')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xa5aa('0x40')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0xa5aa('0x28')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xa5aa('0x41')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xa5aa('0x16')](0x9)[_0xa5aa('0x28')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xa5aa('0x42')},'dialAMDMinWordLength':{'type':Sequelize[_0xa5aa('0x16')](0x9)[_0xa5aa('0x28')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xa5aa('0x43')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0xa5aa('0x28')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xa5aa('0x44')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xa5aa('0x16')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xa5aa('0x45')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xa5aa('0x16')](0x5)[_0xa5aa('0x28')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0xa5aa('0x16')](0x9)[_0xa5aa('0x28')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xa5aa('0x46')},'dialRecallMeTimeout':{'type':Sequelize[_0xa5aa('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xa5aa('0x47')},'dialRecallInQueue':{'type':Sequelize[_0xa5aa('0x20')],'defaultValue':0x0,'comment':_0xa5aa('0x48')},'dialOrderByScheduledAt':{'type':Sequelize[_0xa5aa('0x5')]('DESC',_0xa5aa('0x49')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0xa5aa('0x3')],'comment':_0xa5aa('0x32')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xa5aa('0x20')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xa5aa('0x20')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xa5aa('0x16')](0x3)[_0xa5aa('0x28')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xa5aa('0x4a')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0xa5aa('0x28')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xa5aa('0x4b')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xa5aa('0x16')](0x3)[_0xa5aa('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa5aa('0x4c')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xa5aa('0x16')](0x5)[_0xa5aa('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa5aa('0x4d')},'dialDropMaxRetry':{'type':Sequelize[_0xa5aa('0x16')](0x3)[_0xa5aa('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa5aa('0x4e')},'dialDropRetryFrequency':{'type':Sequelize[_0xa5aa('0x16')](0x5)[_0xa5aa('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa5aa('0x4f')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xa5aa('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa5aa('0x50')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xa5aa('0x16')](0x5)[_0xa5aa('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa5aa('0x51')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xa5aa('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0xa5aa('0x16')](0x5)[_0xa5aa('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa5aa('0x52')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xa5aa('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xa5aa('0x53')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xa5aa('0x16')](0x5)[_0xa5aa('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xa5aa('0x54')},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':_0xa5aa('0x55')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xa5aa('0x56'),'set':function(_0x25da8c){if(!_0x25da8c)this['setDataValue'](_0xa5aa('0x57'),null);this[_0xa5aa('0xc')]('mandatoryDisposition',_0x25da8c);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xa5aa('0x16')](0x3)[_0xa5aa('0x28')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x8b2d=['ASC','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','#Drop\x20Retry\x20(min:1,\x20max:999)','#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)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDisposition','STRING','ENUM','inbound','ringall','leastrecent','fewestcalls','random','rrmemory','linear','wrandom','rrordered','strategy','getDataValue','type','booked','roundrobin','predictive','INTEGER','yes','all','setDataValue','periodic_announce','join','split','joinempty','leavewhenempty','acw','wrapuptime','BOOLEAN','Active/Disactive\x20Campaign','preview','progressive','power','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','agentBusyFactor','dropRate','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','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)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#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)','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','DESC'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8b2d,0xe5));var _0xd8b2=function(_0x3a23c1,_0x495d49){_0x3a23c1=_0x3a23c1-0x0;var _0x286863=_0x8b2d[_0x3a23c1];return _0x286863;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xd8b2('0x0')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x2'),'outbound'),'allowNull':![],'defaultValue':_0xd8b2('0x2')},'musiconhold':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':'default'},'announce':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':''},'strategy':{'type':Sequelize[_0xd8b2('0x1')]('rr',_0xd8b2('0x3'),_0xd8b2('0x4'),_0xd8b2('0x5'),_0xd8b2('0x6'),_0xd8b2('0x7'),_0xd8b2('0x8'),_0xd8b2('0x9'),_0xd8b2('0xa')),'allowNull':![],'defaultValue':'ringall','set':function(_0x2ac547){this['setDataValue'](_0xd8b2('0xb'),_0x2ac547?_0x2ac547:_0xd8b2('0x7'));},'get':function(){var _0xba39d5=this[_0xd8b2('0xc')](_0xd8b2('0xd'));var _0x4e7f9f=this['getDataValue']('dialMethod');var _0x726301=this[_0xd8b2('0xc')](_0xd8b2('0xb'));if(_0xba39d5==='inbound'){return _0x726301;}if(_0x4e7f9f===_0xd8b2('0xe')&&_0x726301===_0xd8b2('0x7')||_0x4e7f9f===_0xd8b2('0xe')&&_0x726301===_0xd8b2('0xf')){return _0x726301;}if(_0x4e7f9f==='progressive'||_0x4e7f9f===_0xd8b2('0x10')||_0x4e7f9f==='power'){return _0x726301;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xd8b2('0x11')](0xb)},'timeout':{'type':Sequelize[_0xd8b2('0x11')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xd8b2('0x11')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xd8b2('0x0')]},'weight':{'type':Sequelize[_0xd8b2('0x11')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xd8b2('0x11')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0xd8b2('0x12')},'autopause':{'type':Sequelize['ENUM'](_0xd8b2('0x12'),'no',_0xd8b2('0x13')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xd8b2('0x11')](0xb)},'autopausebusy':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x12'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize['ENUM'](_0xd8b2('0x12'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xd8b2('0x11')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x12'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM'](_0xd8b2('0x12'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xd8b2('0x1')]('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xd8b2('0x0')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xd8b2('0x11')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0xd8b2('0x11')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x12'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0xd8b2('0x12'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x12'),'no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xd8b2('0x1')]('yes','no')},'announce_position_limit':{'type':Sequelize[_0xd8b2('0x11')](0xb)},'announce_round_seconds':{'type':Sequelize[_0xd8b2('0x1')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize['STRING'],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xd8b2('0x0')]},'queue_youarenext':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xd8b2('0x0')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xd8b2('0x0')]},'queue_quantity1':{'type':Sequelize[_0xd8b2('0x0')]},'queue_quantity2':{'type':Sequelize[_0xd8b2('0x0')]},'queue_periodic_announce':{'type':Sequelize[_0xd8b2('0x0')]},'queue_less_than':{'type':Sequelize[_0xd8b2('0x0')]},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x22b687){this[_0xd8b2('0x14')](_0xd8b2('0x15'),_0x22b687?_0x22b687[_0xd8b2('0x16')](','):[]);},'get':function(){return this[_0xd8b2('0xc')](_0xd8b2('0x15'))?this[_0xd8b2('0xc')](_0xd8b2('0x15'))[_0xd8b2('0x17')](','):[];}},'joinempty':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':_0xd8b2('0x12'),'set':function(_0x51f9bc){this[_0xd8b2('0x14')]('joinempty',_0x51f9bc?_0x51f9bc[_0xd8b2('0x16')](','):undefined);},'get':function(){return this[_0xd8b2('0xc')](_0xd8b2('0x18'))?this[_0xd8b2('0xc')](_0xd8b2('0x18'))[_0xd8b2('0x17')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':'no','set':function(_0x30b8a5){this['setDataValue'](_0xd8b2('0x19'),_0x30b8a5?_0x30b8a5[_0xd8b2('0x16')](','):undefined);},'get':function(){return this[_0xd8b2('0xc')](_0xd8b2('0x19'))?this[_0xd8b2('0xc')](_0xd8b2('0x19'))[_0xd8b2('0x17')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x12'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xd8b2('0x1')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xd8b2('0x11')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xd8b2('0x1')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xd8b2('0x0')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x31491f){this['setDataValue'](_0xd8b2('0x1a'),_0x31491f);if(_0x31491f){if(this[_0xd8b2('0xc')](_0xd8b2('0x1b'))<0x2){this[_0xd8b2('0x14')](_0xd8b2('0x1b'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xd8b2('0x11')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xd8b2('0x1c')],'defaultValue':0x0,'comment':_0xd8b2('0x1d')},'dialMethod':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x1e'),_0xd8b2('0x1f'),_0xd8b2('0x20'),_0xd8b2('0x10'),_0xd8b2('0xe')),'defaultValue':_0xd8b2('0x1f'),'comment':_0xd8b2('0x21')},'dialLimitChannel':{'type':Sequelize[_0xd8b2('0x11')](0x4)[_0xd8b2('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xd8b2('0x23')},'dialLimitQueue':{'type':Sequelize[_0xd8b2('0x11')](0x4)[_0xd8b2('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xd8b2('0x24')},'dialPowerLevel':{'type':Sequelize['FLOAT'](0x2)[_0xd8b2('0x22')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x25'),_0xd8b2('0x26')),'defaultValue':'dropRate','comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xd8b2('0x27')},'dialPredictiveInterval':{'type':Sequelize[_0xd8b2('0x11')](0x3)[_0xd8b2('0x22')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':'Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)'},'dialOriginateCallerIdName':{'type':Sequelize[_0xd8b2('0x0')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xd8b2('0x0')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0xd8b2('0x22')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0xd8b2('0x28'),'comment':_0xd8b2('0x29')},'dialQueueTimeout':{'type':Sequelize[_0xd8b2('0x11')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0xd8b2('0x0')],'comment':_0xd8b2('0x2a')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xd8b2('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8b2('0x2b')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xd8b2('0x11')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd8b2('0x2c')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xd8b2('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8b2('0x2d')},'dialBusyRetryFrequency':{'type':Sequelize[_0xd8b2('0x11')](0x5)[_0xd8b2('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd8b2('0x2e')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xd8b2('0x22')],'defaultValue':0x3,'comment':_0xd8b2('0x2f')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xd8b2('0x11')](0x5)[_0xd8b2('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd8b2('0x30')},'dialGlobalMaxRetry':{'type':Sequelize[_0xd8b2('0x11')](0x3)[_0xd8b2('0x22')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xd8b2('0x31')},'dialTimezone':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':'07:00-22:00,*,*,*'},'dialPrefix':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0xd8b2('0x32'),_0xd8b2('0x33'),_0xd8b2('0x34')),'defaultValue':_0xd8b2('0x32')},'dialAMDActive':{'type':Sequelize[_0xd8b2('0x1c')],'defaultValue':0x0,'comment':_0xd8b2('0x35')},'dialAMDInitialSilence':{'type':Sequelize[_0xd8b2('0x11')](0x9)[_0xd8b2('0x22')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xd8b2('0x36')},'dialAMDGreeting':{'type':Sequelize[_0xd8b2('0x11')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xd8b2('0x11')](0x9)[_0xd8b2('0x22')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xd8b2('0x11')](0x9)[_0xd8b2('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xd8b2('0x37')},'dialAMDMinWordLength':{'type':Sequelize[_0xd8b2('0x11')](0x9)[_0xd8b2('0x22')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xd8b2('0x38')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xd8b2('0x11')](0x9)[_0xd8b2('0x22')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xd8b2('0x39')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xd8b2('0x3a')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xd8b2('0x11')](0x5)[_0xd8b2('0x22')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xd8b2('0x3b')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xd8b2('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xd8b2('0x3c')},'dialRecallMeTimeout':{'type':Sequelize[_0xd8b2('0x11')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xd8b2('0x3d')},'dialRecallInQueue':{'type':Sequelize[_0xd8b2('0x1c')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x3e'),_0xd8b2('0x3f')),'defaultValue':_0xd8b2('0x3e')},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialAgiAfterHangupClient':{'type':Sequelize[_0xd8b2('0x1c')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xd8b2('0x1c')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xd8b2('0x11')](0x3)[_0xd8b2('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0xd8b2('0x11')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xd8b2('0x40')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xd8b2('0x11')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8b2('0x41')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xd8b2('0x11')](0x5)[_0xd8b2('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0xd8b2('0x11')](0x3)[_0xd8b2('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8b2('0x42')},'dialDropRetryFrequency':{'type':Sequelize[_0xd8b2('0x11')](0x5)[_0xd8b2('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0xd8b2('0x11')](0x3)[_0xd8b2('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xd8b2('0x11')](0x5)[_0xd8b2('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0xd8b2('0x11')](0x3)[_0xd8b2('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8b2('0x43')},'dialMachineRetryFrequency':{'type':Sequelize[_0xd8b2('0x11')](0x5)[_0xd8b2('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd8b2('0x44')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xd8b2('0x11')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8b2('0x45')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xd8b2('0x11')](0x5)[_0xd8b2('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd8b2('0x46')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd8b2('0x11')],'allowNull':!![],'comment':_0xd8b2('0x47')},'mandatoryDisposition':{'type':Sequelize[_0xd8b2('0x1c')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x18c769){if(!_0x18c769)this[_0xd8b2('0x14')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0xd8b2('0x48'),_0x18c769);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xd8b2('0x11')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0xd8b2('0x22')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
index f1db1a7..43cc055 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d84=['phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','removeLists','getBlackLists','addBlackLists','removeBlackLists','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./voiceQueue.socket','register','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','VoiceQueues','inbound','QueueCampaigns','outbound','filter','ignore','map','value','includes','type','find','name','UserProfileResource','send','VoiceQueue','fieldName','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','rawAttributes','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','body','updatedAt','autoAssociation','error','getHoppers','findOne','CmHopper','order','pick','VoiceQueueId','getHopperHistories','CmHopperHistory','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','Agents','interface','forEach','penalty','sequelize','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','format','voicePause','emit','userVoiceQueue:save','ids','select','field','tq.TeamId','from','user_has_teams','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','TeamId','all','union','removeAgents','userVoiceQueue:remove','addAgents','spread','online','SIP/%s','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','CmListId','NOW()','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?'];(function(_0x43fc52,_0x2412af){var _0x27f99d=function(_0x5756e0){while(--_0x5756e0){_0x43fc52['push'](_0x43fc52['shift']());}};_0x27f99d(++_0x2412af);}(_0x7d84,0x16f));var _0x47d8=function(_0x3c51d4,_0x36ba53){_0x3c51d4=_0x3c51d4-0x0;var _0x53c45f=_0x7d84[_0x3c51d4];return _0x53c45f;};'use strict';var emlformat=require(_0x47d8('0x0'));var rimraf=require(_0x47d8('0x1'));var zipdir=require(_0x47d8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47d8('0x3'));var moment=require(_0x47d8('0x4'));var BPromise=require(_0x47d8('0x5'));var Mustache=require(_0x47d8('0x6'));var util=require(_0x47d8('0x7'));var path=require(_0x47d8('0x8'));var sox=require('sox');var csv=require(_0x47d8('0x9'));var ejs=require(_0x47d8('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x47d8('0xb'));var squel=require(_0x47d8('0xc'));var crypto=require(_0x47d8('0xd'));var jsforce=require(_0x47d8('0xe'));var deskjs=require(_0x47d8('0xf'));var toCsv=require(_0x47d8('0x9'));var querystring=require(_0x47d8('0x10'));var Papa=require(_0x47d8('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x47d8('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47d8('0x13'));var utils=require(_0x47d8('0x14'));var config=require(_0x47d8('0x15'));var licenseUtil=require(_0x47d8('0x16'));var db=require(_0x47d8('0x17'))['db'];config[_0x47d8('0x18')]=_[_0x47d8('0x19')](config[_0x47d8('0x18')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x47d8('0x18')]));require(_0x47d8('0x1a'))[_0x47d8('0x1b')](socket);function respondWithStatusCode(_0x38dd5e,_0x50b760){_0x50b760=_0x50b760||0xcc;return function(_0x403fb2){if(_0x403fb2){return _0x38dd5e[_0x47d8('0x1c')](_0x50b760);}return _0x38dd5e[_0x47d8('0x1d')](_0x50b760)[_0x47d8('0x1e')]();};}function respondWithResult(_0x5be330,_0x11c06f){_0x11c06f=_0x11c06f||0xc8;return function(_0x300f41){if(_0x300f41){return _0x5be330[_0x47d8('0x1d')](_0x11c06f)['json'](_0x300f41);}};}function respondWithFilteredResult(_0x3f1bc9,_0x58ec43){return function(_0x1f7ad7){if(_0x1f7ad7){var _0x4a50a0=typeof _0x58ec43[_0x47d8('0x1f')]===_0x47d8('0x20')&&typeof _0x58ec43[_0x47d8('0x21')]===_0x47d8('0x20');var _0xe88766=_0x1f7ad7[_0x47d8('0x22')];var _0x3636d3=_0x4a50a0?0x0:_0x58ec43[_0x47d8('0x1f')];var _0x40ccf3=_0x4a50a0?_0x1f7ad7[_0x47d8('0x22')]:_0x58ec43[_0x47d8('0x1f')]+_0x58ec43[_0x47d8('0x21')];var _0x211da0;if(_0x40ccf3>=_0xe88766){_0x40ccf3=_0xe88766;_0x211da0=0xc8;}else{_0x211da0=0xce;}_0x3f1bc9[_0x47d8('0x1d')](_0x211da0);return _0x3f1bc9['set'](_0x47d8('0x23'),_0x3636d3+'-'+_0x40ccf3+'/'+_0xe88766)['json'](_0x1f7ad7);}return null;};}function patchUpdates(_0x18e0e9){return function(_0x219a42){try{jsonpatch[_0x47d8('0x24')](_0x219a42,_0x18e0e9,!![]);}catch(_0x5a7eae){return BPromise[_0x47d8('0x25')](_0x5a7eae);}return _0x219a42[_0x47d8('0x26')]();};}function saveUpdates(_0x25e463,_0x75161c){return function(_0x12067f){if(_0x12067f){return _0x12067f[_0x47d8('0x27')](_0x25e463)[_0x47d8('0x28')](function(_0x5c5bdb){return _0x5c5bdb;});}return null;};}function removeEntity(_0x5b2719,_0x45495d){return function(_0x55a0fe){if(_0x55a0fe){return _0x55a0fe[_0x47d8('0x29')]()[_0x47d8('0x28')](function(){var _0xe8b1e3=_0x55a0fe['get']({'plain':!![]});var _0x22cde3=[{'name':_0x47d8('0x2a'),'value':_0x47d8('0x2b'),'ignore':![]},{'name':_0x47d8('0x2c'),'value':_0x47d8('0x2d'),'ignore':![]}];var _0xdd6feb=_(_0x22cde3)[_0x47d8('0x2e')](_0x47d8('0x2f'))[_0x47d8('0x30')](_0x47d8('0x31'))[_0x47d8('0x31')]();if(_[_0x47d8('0x32')](_0xdd6feb,_0xe8b1e3[_0x47d8('0x33')])){return;}var _0x5b42a3=_[_0x47d8('0x34')](_0x22cde3,['value',_0xe8b1e3[_0x47d8('0x33')]])[_0x47d8('0x35')];return db[_0x47d8('0x36')]['destroy']({'where':{'type':_0x5b42a3,'resourceId':_0xe8b1e3['id']}})['then'](function(){return _0x55a0fe;});})[_0x47d8('0x28')](function(){_0x5b2719[_0x47d8('0x1d')](0xcc)[_0x47d8('0x1e')]();});}};}function handleEntityNotFound(_0x1692b1,_0x2045eb){return function(_0x4b6998){if(!_0x4b6998){_0x1692b1[_0x47d8('0x1c')](0x194);}return _0x4b6998;};}function handleError(_0x22a7e4,_0x3b08e4){_0x3b08e4=_0x3b08e4||0x1f4;return function(_0x4a3494){logger['error'](_0x4a3494['stack']);if(_0x4a3494['name']){delete _0x4a3494['name'];}_0x22a7e4[_0x47d8('0x1d')](_0x3b08e4)[_0x47d8('0x37')](_0x4a3494);};}exports['index']=function(_0x56dda1,_0x34fcac){var _0x1408ff={},_0x3a4103={},_0x505792={'count':0x0,'rows':[]};var _0x189642=_['map'](db[_0x47d8('0x38')]['rawAttributes'],function(_0x54f60e){return{'name':_0x54f60e[_0x47d8('0x39')],'type':_0x54f60e[_0x47d8('0x33')][_0x47d8('0x3a')]};});_0x3a4103['model']=_['map'](_0x189642,_0x47d8('0x35'));_0x3a4103['query']=_[_0x47d8('0x3b')](_0x56dda1[_0x47d8('0x3c')]);_0x3a4103[_0x47d8('0x3d')]=_[_0x47d8('0x3e')](_0x3a4103['model'],_0x3a4103[_0x47d8('0x3c')]);_0x1408ff[_0x47d8('0x3f')]=_[_0x47d8('0x3e')](_0x3a4103[_0x47d8('0x40')],qs[_0x47d8('0x41')](_0x56dda1[_0x47d8('0x3c')]['fields']));_0x1408ff['attributes']=_0x1408ff[_0x47d8('0x3f')][_0x47d8('0x42')]?_0x1408ff[_0x47d8('0x3f')]:_0x3a4103[_0x47d8('0x40')];if(!_0x56dda1['query'][_0x47d8('0x43')](_0x47d8('0x44'))){_0x1408ff[_0x47d8('0x21')]=qs[_0x47d8('0x21')](_0x56dda1[_0x47d8('0x3c')][_0x47d8('0x21')]);_0x1408ff[_0x47d8('0x1f')]=qs[_0x47d8('0x1f')](_0x56dda1[_0x47d8('0x3c')][_0x47d8('0x1f')]);}_0x1408ff['order']=qs[_0x47d8('0x45')](_0x56dda1[_0x47d8('0x3c')][_0x47d8('0x45')]);_0x1408ff['where']=qs[_0x47d8('0x3d')](_['pick'](_0x56dda1[_0x47d8('0x3c')],_0x3a4103[_0x47d8('0x3d')]),_0x189642);if(_0x56dda1['query']['filter']){_0x1408ff[_0x47d8('0x46')]=_[_0x47d8('0x47')](_0x1408ff[_0x47d8('0x46')],{'$or':_[_0x47d8('0x30')](_0x189642,function(_0x3a6ba6){if(_0x3a6ba6['type']!==_0x47d8('0x48')){var _0x497ce5={};_0x497ce5[_0x3a6ba6[_0x47d8('0x35')]]={'$like':'%'+_0x56dda1[_0x47d8('0x3c')][_0x47d8('0x2e')]+'%'};return _0x497ce5;}})});}_0x1408ff=_[_0x47d8('0x47')]({},_0x1408ff,_0x56dda1[_0x47d8('0x49')]);var _0x550cc1={'where':_0x1408ff[_0x47d8('0x46')]};return db[_0x47d8('0x38')][_0x47d8('0x22')](_0x550cc1)['then'](function(_0x488a1b){_0x505792['count']=_0x488a1b;if(_0x56dda1[_0x47d8('0x3c')][_0x47d8('0x4a')]){_0x1408ff[_0x47d8('0x4b')]=[{'all':!![]}];}return db['VoiceQueue'][_0x47d8('0x4c')](_0x1408ff);})[_0x47d8('0x28')](function(_0x446aed){_0x505792[_0x47d8('0x4d')]=_0x446aed;return _0x505792;})[_0x47d8('0x28')](respondWithFilteredResult(_0x34fcac,_0x1408ff))['catch'](handleError(_0x34fcac,null));};exports[_0x47d8('0x4e')]=function(_0x1c41e6,_0xc048df){var _0x31f334={'raw':![],'where':{'id':_0x1c41e6[_0x47d8('0x4f')]['id']}},_0x2d36e6={};_0x2d36e6[_0x47d8('0x40')]=_[_0x47d8('0x3b')](db[_0x47d8('0x38')][_0x47d8('0x50')]);_0x2d36e6[_0x47d8('0x3c')]=_[_0x47d8('0x3b')](_0x1c41e6['query']);_0x2d36e6['filters']=_['intersection'](_0x2d36e6[_0x47d8('0x40')],_0x2d36e6[_0x47d8('0x3c')]);_0x31f334[_0x47d8('0x3f')]=_['intersection'](_0x2d36e6[_0x47d8('0x40')],qs['fields'](_0x1c41e6['query'][_0x47d8('0x41')]));_0x31f334[_0x47d8('0x3f')]=_0x31f334[_0x47d8('0x3f')][_0x47d8('0x42')]?_0x31f334[_0x47d8('0x3f')]:_0x2d36e6[_0x47d8('0x40')];if(_0x1c41e6[_0x47d8('0x3c')][_0x47d8('0x4a')]){_0x31f334[_0x47d8('0x4b')]=[{'all':!![]}];}_0x31f334=_[_0x47d8('0x47')]({},_0x31f334,_0x1c41e6['options']);return db['VoiceQueue'][_0x47d8('0x34')](_0x31f334)[_0x47d8('0x28')](handleEntityNotFound(_0xc048df,null))[_0x47d8('0x28')](respondWithResult(_0xc048df,null))[_0x47d8('0x51')](handleError(_0xc048df,null));};exports[_0x47d8('0x52')]=function(_0xce77ab,_0x292872){return db[_0x47d8('0x38')][_0x47d8('0x52')](_0xce77ab['body'],{})[_0x47d8('0x28')](function(_0x1120f5){var _0x3b72c7=_0xce77ab[_0x47d8('0x53')][_0x47d8('0x54')]({'plain':!![]});if(!_0x3b72c7)throw new Error(_0x47d8('0x55'));if(_0x3b72c7[_0x47d8('0x56')]===_0x47d8('0x53')){var _0x4d0b67=_0x1120f5[_0x47d8('0x54')]({'plain':!![]});var _0x4c7f6d=[{'name':_0x47d8('0x2a'),'value':_0x47d8('0x2b')},{'name':_0x47d8('0x2c'),'value':_0x47d8('0x2d')}];var _0x263d18=_['find'](_0x4c7f6d,[_0x47d8('0x31'),_0x4d0b67[_0x47d8('0x33')]])[_0x47d8('0x35')];return db[_0x47d8('0x57')]['find']({'where':{'name':_0x263d18,'userProfileId':_0x3b72c7[_0x47d8('0x58')]},'raw':!![]})['then'](function(_0x18b3aa){if(_0x18b3aa&&_0x18b3aa['autoAssociation']===0x0){return db[_0x47d8('0x36')][_0x47d8('0x52')]({'name':_0x4d0b67[_0x47d8('0x35')],'resourceId':_0x4d0b67['id'],'type':_0x18b3aa[_0x47d8('0x35')],'sectionId':_0x18b3aa['id']},{})[_0x47d8('0x28')](function(){return _0x1120f5;});}else{return _0x1120f5;}})[_0x47d8('0x51')](function(_0x2928db){logger['error'](_0x47d8('0x59'),_0x2928db);throw _0x2928db;});}return _0x1120f5;})[_0x47d8('0x28')](respondWithResult(_0x292872,0xc9))['catch'](handleError(_0x292872,null));};exports[_0x47d8('0x5a')]=function(_0x502e0a,_0x38ccef){var _0x726a0f={'where':{'id':_0x502e0a['params']['id']}},_0x2067c7={};_0x2067c7[_0x47d8('0x40')]=_[_0x47d8('0x3b')](db[_0x47d8('0x38')][_0x47d8('0x50')]);_0x726a0f[_0x47d8('0x3f')]=_[_0x47d8('0x3e')](_0x2067c7['model'],qs[_0x47d8('0x41')](_0x502e0a[_0x47d8('0x3c')][_0x47d8('0x41')]));_0x726a0f[_0x47d8('0x3f')]=_0x726a0f['attributes'][_0x47d8('0x42')]?_0x726a0f[_0x47d8('0x3f')]:_0x2067c7[_0x47d8('0x40')];if(_0x502e0a['query']['includeAll']){_0x726a0f[_0x47d8('0x4b')]=[{'all':!![]}];}_0x726a0f=_[_0x47d8('0x47')]({},_0x726a0f,_0x502e0a[_0x47d8('0x49')]);return db[_0x47d8('0x38')][_0x47d8('0x34')](_0x726a0f)[_0x47d8('0x28')](handleEntityNotFound(_0x38ccef,null))[_0x47d8('0x28')](function(_0x40d04a){if(_0x40d04a){var _0x253e16=_0x40d04a['get']({'plain':!![]});_0x253e16=qs[_0x47d8('0x5b')](_0x253e16,['id',_0x47d8('0x5c'),'updatedAt']);_0x502e0a[_0x47d8('0x5d')]=_['omit'](_0x502e0a[_0x47d8('0x5d')],['id',_0x47d8('0x5c'),_0x47d8('0x5e')]);return db[_0x47d8('0x38')]['create'](_[_0x47d8('0x47')](_0x253e16,_0x502e0a[_0x47d8('0x5d')]),{'include':_0x502e0a[_0x47d8('0x3c')]['includeAll']?[{'all':!![]}]:undefined})[_0x47d8('0x28')](function(_0xa1d3c6){var _0x30643a=_0x502e0a['user'][_0x47d8('0x54')]({'plain':!![]});if(!_0x30643a)throw new Error(_0x47d8('0x55'));if(_0x30643a['role']===_0x47d8('0x53')){var _0x2e267b=_0xa1d3c6[_0x47d8('0x54')]({'plain':!![]});var _0x463f75=[{'name':'VoiceQueues','value':_0x47d8('0x2b')},{'name':_0x47d8('0x2c'),'value':_0x47d8('0x2d')}];var _0x1e973f=_[_0x47d8('0x34')](_0x463f75,[_0x47d8('0x31'),_0x2e267b[_0x47d8('0x33')]])[_0x47d8('0x35')];return db[_0x47d8('0x57')]['find']({'where':{'name':_0x1e973f,'userProfileId':_0x30643a['userProfileId']},'raw':!![]})[_0x47d8('0x28')](function(_0xe83b04){if(_0xe83b04&&_0xe83b04[_0x47d8('0x5f')]===0x0){return db[_0x47d8('0x36')][_0x47d8('0x52')]({'name':_0x2e267b[_0x47d8('0x35')],'resourceId':_0x2e267b['id'],'type':_0xe83b04[_0x47d8('0x35')],'sectionId':_0xe83b04['id']},{})[_0x47d8('0x28')](function(){return _0xa1d3c6;});}else{return _0xa1d3c6;}})['catch'](function(_0x38caa3){logger[_0x47d8('0x60')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x38caa3);throw _0x38caa3;});}return _0xa1d3c6;});}})['then'](respondWithResult(_0x38ccef,0xc9))[_0x47d8('0x51')](handleError(_0x38ccef,null));};exports[_0x47d8('0x27')]=function(_0xfe5e15,_0x205885){if(_0xfe5e15[_0x47d8('0x5d')]['id']){delete _0xfe5e15['body']['id'];}return db[_0x47d8('0x38')]['find']({'where':{'id':_0xfe5e15['params']['id']}})[_0x47d8('0x28')](handleEntityNotFound(_0x205885,null))[_0x47d8('0x28')](saveUpdates(_0xfe5e15[_0x47d8('0x5d')],null))[_0x47d8('0x28')](respondWithResult(_0x205885,null))['catch'](handleError(_0x205885,null));};exports['destroy']=function(_0x17d3f9,_0x3bb446){return db[_0x47d8('0x38')]['find']({'where':{'id':_0x17d3f9[_0x47d8('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3bb446,null))[_0x47d8('0x28')](removeEntity(_0x3bb446,null))[_0x47d8('0x51')](handleError(_0x3bb446,null));};exports[_0x47d8('0x61')]=function(_0x44de1d,_0x39dafd,_0x27f5aa){var _0x190938={'raw':![],'where':{}};var _0x2ceedf={};var _0x3be915={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x47d8('0x62')]({'where':{'id':_0x44de1d[_0x47d8('0x4f')]['id']}})[_0x47d8('0x28')](handleEntityNotFound(_0x39dafd,null))[_0x47d8('0x28')](function(_0x42704a){if(_0x42704a){_0x2ceedf[_0x47d8('0x40')]=_[_0x47d8('0x3b')](db[_0x47d8('0x63')][_0x47d8('0x50')]);_0x2ceedf[_0x47d8('0x3c')]=_[_0x47d8('0x3b')](_0x44de1d[_0x47d8('0x3c')]);_0x2ceedf['filters']=_['intersection'](_0x2ceedf[_0x47d8('0x40')],_0x2ceedf[_0x47d8('0x3c')]);_0x190938[_0x47d8('0x3f')]=_[_0x47d8('0x3e')](_0x2ceedf[_0x47d8('0x40')],qs[_0x47d8('0x41')](_0x44de1d[_0x47d8('0x3c')][_0x47d8('0x41')]));_0x190938[_0x47d8('0x3f')]=_0x190938[_0x47d8('0x3f')][_0x47d8('0x42')]?_0x190938[_0x47d8('0x3f')]:_0x2ceedf[_0x47d8('0x40')];if(!_0x44de1d[_0x47d8('0x3c')][_0x47d8('0x43')](_0x47d8('0x44'))){_0x190938['limit']=qs['limit'](_0x44de1d[_0x47d8('0x3c')][_0x47d8('0x21')]);_0x190938[_0x47d8('0x1f')]=qs[_0x47d8('0x1f')](_0x44de1d[_0x47d8('0x3c')][_0x47d8('0x1f')]);}_0x190938[_0x47d8('0x64')]=qs['sort'](_0x44de1d[_0x47d8('0x3c')][_0x47d8('0x45')]);_0x190938[_0x47d8('0x46')]=qs[_0x47d8('0x3d')](_[_0x47d8('0x65')](_0x44de1d['query'],_0x2ceedf[_0x47d8('0x3d')]));_0x190938[_0x47d8('0x46')][_0x47d8('0x66')]=_0x42704a['id'];if(_0x44de1d[_0x47d8('0x3c')][_0x47d8('0x2e')]){_0x190938['where']=_['merge'](_0x190938[_0x47d8('0x46')],{'$or':_[_0x47d8('0x30')](_0x190938[_0x47d8('0x3f')],function(_0x663d38){var _0x590cee={};_0x590cee[_0x663d38]={'$like':'%'+_0x44de1d[_0x47d8('0x3c')]['filter']+'%'};return _0x590cee;})});}_0x190938=_[_0x47d8('0x47')]({},_0x190938,_0x44de1d[_0x47d8('0x49')]);return db[_0x47d8('0x63')]['count']({'where':_0x190938[_0x47d8('0x46')]})['then'](function(_0x30be0e){_0x3be915[_0x47d8('0x22')]=_0x30be0e;if(_0x44de1d['query'][_0x47d8('0x4a')]){_0x190938[_0x47d8('0x4b')]=[{'all':!![]}];}return db['CmHopper'][_0x47d8('0x4c')](_0x190938);})['then'](function(_0x400fe6){_0x3be915[_0x47d8('0x4d')]=_0x400fe6;return _0x3be915;});}})['then'](respondWithFilteredResult(_0x39dafd,_0x190938))[_0x47d8('0x51')](handleError(_0x39dafd,null));};exports[_0x47d8('0x67')]=function(_0x57783b,_0x39027b,_0x5cf28e){var _0x3e99a8={'raw':!![],'where':{}};var _0x45d049={};var _0x316def={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x47d8('0x62')]({'where':{'id':_0x57783b['params']['id']}})[_0x47d8('0x28')](handleEntityNotFound(_0x39027b,null))['then'](function(_0x3af232){if(_0x3af232){_0x45d049[_0x47d8('0x40')]=_['keys'](db[_0x47d8('0x68')][_0x47d8('0x50')]);_0x45d049[_0x47d8('0x3c')]=_[_0x47d8('0x3b')](_0x57783b['query']);_0x45d049[_0x47d8('0x3d')]=_['intersection'](_0x45d049[_0x47d8('0x40')],_0x45d049['query']);_0x3e99a8[_0x47d8('0x3f')]=_[_0x47d8('0x3e')](_0x45d049[_0x47d8('0x40')],qs[_0x47d8('0x41')](_0x57783b[_0x47d8('0x3c')][_0x47d8('0x41')]));_0x3e99a8['attributes']=_0x3e99a8[_0x47d8('0x3f')][_0x47d8('0x42')]?_0x3e99a8[_0x47d8('0x3f')]:_0x45d049[_0x47d8('0x40')];if(!_0x57783b[_0x47d8('0x3c')][_0x47d8('0x43')](_0x47d8('0x44'))){_0x3e99a8['limit']=qs[_0x47d8('0x21')](_0x57783b['query']['limit']);_0x3e99a8[_0x47d8('0x1f')]=qs[_0x47d8('0x1f')](_0x57783b[_0x47d8('0x3c')][_0x47d8('0x1f')]);}_0x3e99a8['order']=qs['sort'](_0x57783b[_0x47d8('0x3c')][_0x47d8('0x45')]);_0x3e99a8['where']=qs[_0x47d8('0x3d')](_[_0x47d8('0x65')](_0x57783b[_0x47d8('0x3c')],_0x45d049[_0x47d8('0x3d')]));_0x3e99a8[_0x47d8('0x46')][_0x47d8('0x66')]=_0x3af232['id'];if(_0x57783b[_0x47d8('0x3c')][_0x47d8('0x2e')]){_0x3e99a8['where']=_[_0x47d8('0x47')](_0x3e99a8[_0x47d8('0x46')],{'$or':_[_0x47d8('0x30')](_0x3e99a8['attributes'],function(_0x98656f){var _0x4620ae={};_0x4620ae[_0x98656f]={'$like':'%'+_0x57783b[_0x47d8('0x3c')]['filter']+'%'};return _0x4620ae;})});}_0x3e99a8=_[_0x47d8('0x47')]({},_0x3e99a8,_0x57783b[_0x47d8('0x49')]);return db[_0x47d8('0x68')][_0x47d8('0x22')]({'where':_0x3e99a8[_0x47d8('0x46')]})[_0x47d8('0x28')](function(_0x399015){_0x316def[_0x47d8('0x22')]=_0x399015;if(_0x57783b['query'][_0x47d8('0x4a')]){_0x3e99a8[_0x47d8('0x4b')]=[{'all':!![]}];}return db[_0x47d8('0x68')][_0x47d8('0x4c')](_0x3e99a8);})[_0x47d8('0x28')](function(_0x2120f2){_0x316def[_0x47d8('0x4d')]=_0x2120f2;return _0x316def;});}})[_0x47d8('0x28')](respondWithFilteredResult(_0x39027b,_0x3e99a8))['catch'](handleError(_0x39027b,null));};exports['getHopperFinals']=function(_0x2986e6,_0x471e0b,_0x12b507){var _0x2908fa={'raw':!![],'where':{}};var _0x302814={};var _0xc1bd42={'count':0x0,'rows':[]};return db[_0x47d8('0x38')][_0x47d8('0x62')]({'where':{'id':_0x2986e6['params']['id']}})['then'](handleEntityNotFound(_0x471e0b,null))[_0x47d8('0x28')](function(_0x314faa){if(_0x314faa){_0x302814[_0x47d8('0x40')]=_[_0x47d8('0x3b')](db[_0x47d8('0x69')][_0x47d8('0x50')]);_0x302814['query']=_['keys'](_0x2986e6[_0x47d8('0x3c')]);_0x302814[_0x47d8('0x3d')]=_[_0x47d8('0x3e')](_0x302814[_0x47d8('0x40')],_0x302814[_0x47d8('0x3c')]);_0x2908fa[_0x47d8('0x3f')]=_['intersection'](_0x302814[_0x47d8('0x40')],qs['fields'](_0x2986e6['query'][_0x47d8('0x41')]));_0x2908fa['attributes']=_0x2908fa[_0x47d8('0x3f')][_0x47d8('0x42')]?_0x2908fa[_0x47d8('0x3f')]:_0x302814['model'];if(!_0x2986e6[_0x47d8('0x3c')][_0x47d8('0x43')]('nolimit')){_0x2908fa[_0x47d8('0x21')]=qs[_0x47d8('0x21')](_0x2986e6['query'][_0x47d8('0x21')]);_0x2908fa[_0x47d8('0x1f')]=qs[_0x47d8('0x1f')](_0x2986e6[_0x47d8('0x3c')]['offset']);}_0x2908fa['order']=qs[_0x47d8('0x45')](_0x2986e6[_0x47d8('0x3c')][_0x47d8('0x45')]);_0x2908fa[_0x47d8('0x46')]=qs[_0x47d8('0x3d')](_[_0x47d8('0x65')](_0x2986e6[_0x47d8('0x3c')],_0x302814[_0x47d8('0x3d')]));_0x2908fa['where']['VoiceQueueId']=_0x314faa['id'];if(_0x2986e6[_0x47d8('0x3c')]['filter']){_0x2908fa[_0x47d8('0x46')]=_[_0x47d8('0x47')](_0x2908fa[_0x47d8('0x46')],{'$or':_['map'](_0x2908fa[_0x47d8('0x3f')],function(_0x1f4f0f){var _0x476ecf={};_0x476ecf[_0x1f4f0f]={'$like':'%'+_0x2986e6[_0x47d8('0x3c')]['filter']+'%'};return _0x476ecf;})});}_0x2908fa=_['merge']({},_0x2908fa,_0x2986e6[_0x47d8('0x49')]);return db[_0x47d8('0x69')][_0x47d8('0x22')]({'where':_0x2908fa[_0x47d8('0x46')]})[_0x47d8('0x28')](function(_0x27b4d8){_0xc1bd42[_0x47d8('0x22')]=_0x27b4d8;if(_0x2986e6[_0x47d8('0x3c')][_0x47d8('0x4a')]){_0x2908fa[_0x47d8('0x4b')]=[{'all':!![]}];}return db[_0x47d8('0x69')][_0x47d8('0x4c')](_0x2908fa);})[_0x47d8('0x28')](function(_0x216c74){_0xc1bd42[_0x47d8('0x4d')]=_0x216c74;return _0xc1bd42;});}})['then'](respondWithFilteredResult(_0x471e0b,_0x2908fa))[_0x47d8('0x51')](handleError(_0x471e0b,null));};exports[_0x47d8('0x6a')]=function(_0x211382,_0x402995,_0x1258b8){var _0x18c79d={'raw':!![],'where':{}};var _0x564e71={};var _0x499aa1={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x47d8('0x62')]({'where':{'id':_0x211382[_0x47d8('0x4f')]['id']}})[_0x47d8('0x28')](handleEntityNotFound(_0x402995,null))['then'](function(_0x4767ee){if(_0x4767ee){_0x564e71[_0x47d8('0x40')]=_[_0x47d8('0x3b')](db[_0x47d8('0x6b')][_0x47d8('0x50')]);_0x564e71[_0x47d8('0x3c')]=_[_0x47d8('0x3b')](_0x211382[_0x47d8('0x3c')]);_0x564e71[_0x47d8('0x3d')]=_[_0x47d8('0x3e')](_0x564e71[_0x47d8('0x40')],_0x564e71[_0x47d8('0x3c')]);_0x18c79d[_0x47d8('0x3f')]=_[_0x47d8('0x3e')](_0x564e71['model'],qs[_0x47d8('0x41')](_0x211382[_0x47d8('0x3c')][_0x47d8('0x41')]));_0x18c79d[_0x47d8('0x3f')]=_0x18c79d[_0x47d8('0x3f')]['length']?_0x18c79d[_0x47d8('0x3f')]:_0x564e71[_0x47d8('0x40')];if(!_0x211382[_0x47d8('0x3c')][_0x47d8('0x43')](_0x47d8('0x44'))){_0x18c79d[_0x47d8('0x21')]=qs[_0x47d8('0x21')](_0x211382['query'][_0x47d8('0x21')]);_0x18c79d[_0x47d8('0x1f')]=qs[_0x47d8('0x1f')](_0x211382[_0x47d8('0x3c')][_0x47d8('0x1f')]);}_0x18c79d['order']=qs[_0x47d8('0x45')](_0x211382[_0x47d8('0x3c')][_0x47d8('0x45')]);_0x18c79d[_0x47d8('0x46')]=qs['filters'](_[_0x47d8('0x65')](_0x211382['query'],_0x564e71[_0x47d8('0x3d')]));_0x18c79d['where'][_0x47d8('0x66')]=_0x4767ee['id'];if(_0x211382[_0x47d8('0x3c')]['filter']){_0x18c79d[_0x47d8('0x46')]=_[_0x47d8('0x47')](_0x18c79d[_0x47d8('0x46')],{'$or':_['map'](_0x18c79d[_0x47d8('0x3f')],function(_0x25b47c){var _0x1ed99d={};_0x1ed99d[_0x25b47c]={'$like':'%'+_0x211382[_0x47d8('0x3c')][_0x47d8('0x2e')]+'%'};return _0x1ed99d;})});}_0x18c79d=_[_0x47d8('0x47')]({},_0x18c79d,_0x211382[_0x47d8('0x49')]);return db['CmHopperBlack'][_0x47d8('0x22')]({'where':_0x18c79d['where']})[_0x47d8('0x28')](function(_0x478000){_0x499aa1[_0x47d8('0x22')]=_0x478000;if(_0x211382[_0x47d8('0x3c')][_0x47d8('0x4a')]){_0x18c79d[_0x47d8('0x4b')]=[{'all':!![]}];}return db[_0x47d8('0x6b')][_0x47d8('0x4c')](_0x18c79d);})[_0x47d8('0x28')](function(_0x36d782){_0x499aa1[_0x47d8('0x4d')]=_0x36d782;return _0x499aa1;});}})[_0x47d8('0x28')](respondWithFilteredResult(_0x402995,_0x18c79d))[_0x47d8('0x51')](handleError(_0x402995,null));};exports[_0x47d8('0x6c')]=function(_0x5887e2,_0x183781,_0x158d73){var _0x4ce9b6={};var _0x533640={};var _0x23f718;var _0xd447f6;return db[_0x47d8('0x38')][_0x47d8('0x62')]({'where':{'id':_0x5887e2[_0x47d8('0x4f')]['id']}})[_0x47d8('0x28')](handleEntityNotFound(_0x183781,null))[_0x47d8('0x28')](function(_0x3db234){if(_0x3db234){_0x23f718=_0x3db234;_0x533640[_0x47d8('0x40')]=_[_0x47d8('0x3b')](db[_0x47d8('0x6d')]['rawAttributes']);_0x533640[_0x47d8('0x3c')]=_['keys'](_0x5887e2[_0x47d8('0x3c')]);_0x533640['filters']=_['intersection'](_0x533640[_0x47d8('0x40')],_0x533640[_0x47d8('0x3c')]);_0x4ce9b6['attributes']=_[_0x47d8('0x3e')](_0x533640[_0x47d8('0x40')],qs[_0x47d8('0x41')](_0x5887e2[_0x47d8('0x3c')]['fields']));_0x4ce9b6['attributes']=_0x4ce9b6[_0x47d8('0x3f')][_0x47d8('0x42')]?_0x4ce9b6['attributes']:_0x533640[_0x47d8('0x40')];_0x4ce9b6[_0x47d8('0x64')]=qs[_0x47d8('0x45')](_0x5887e2[_0x47d8('0x3c')][_0x47d8('0x45')]);_0x4ce9b6[_0x47d8('0x46')]=qs[_0x47d8('0x3d')](_['pick'](_0x5887e2[_0x47d8('0x3c')],_0x533640[_0x47d8('0x3d')]));if(_0x5887e2[_0x47d8('0x3c')][_0x47d8('0x2e')]){_0x4ce9b6[_0x47d8('0x46')]=_[_0x47d8('0x47')](_0x4ce9b6['where'],{'$or':_[_0x47d8('0x30')](_0x4ce9b6['attributes'],function(_0x625d61){var _0x2dd934={};_0x2dd934[_0x625d61]={'$like':'%'+_0x5887e2[_0x47d8('0x3c')]['filter']+'%'};return _0x2dd934;})});}_0x4ce9b6=_[_0x47d8('0x47')]({},_0x4ce9b6,_0x5887e2[_0x47d8('0x49')]);return _0x23f718[_0x47d8('0x6c')](_0x4ce9b6);}})['then'](function(_0x55e637){if(_0x55e637){_0xd447f6=_0x55e637['length'];if(!_0x5887e2['query'][_0x47d8('0x43')](_0x47d8('0x44'))){_0x4ce9b6['limit']=qs[_0x47d8('0x21')](_0x5887e2[_0x47d8('0x3c')][_0x47d8('0x21')]);_0x4ce9b6['offset']=qs[_0x47d8('0x1f')](_0x5887e2[_0x47d8('0x3c')][_0x47d8('0x1f')]);}return _0x23f718[_0x47d8('0x6c')](_0x4ce9b6);}})['then'](function(_0x49124b){if(_0x49124b){return _0x49124b?{'count':_0xd447f6,'rows':_0x49124b}:null;}})[_0x47d8('0x28')](respondWithResult(_0x183781,null))[_0x47d8('0x51')](handleError(_0x183781,null));};exports[_0x47d8('0x6e')]=function(_0x20a2a7,_0x5f299e,_0x4bf75f){var _0x54a647=_0x20a2a7[_0x47d8('0x5d')][_0x47d8('0x6f')];var _0x40fcea=_[_0x47d8('0x30')](_0x54a647,'id');return db['Team'][_0x47d8('0x4c')]({'where':{'id':_0x40fcea},'attributes':['id'],'include':[{'model':db[_0x47d8('0x70')],'as':_0x47d8('0x71'),'attributes':['id',_0x47d8('0x35'),'online','voicePause',_0x47d8('0x72')],'raw':!![]}]})[_0x47d8('0x28')](function(_0x1b2d1a){if(_0x1b2d1a){var _0x3acac5=_['flatMap'](_0x1b2d1a,function(_0x395f40){var _0x261ed6=_0x395f40['get']({'plain':!![]});_0x261ed6[_0x47d8('0x71')][_0x47d8('0x73')](function(_0x132023){_0x132023['penalty']=_[_0x47d8('0x34')](_0x54a647,{'id':_0x261ed6['id']})[_0x47d8('0x74')];});return _0x261ed6[_0x47d8('0x71')];});return db[_0x47d8('0x38')]['find']({'where':{'id':_0x20a2a7[_0x47d8('0x4f')]['id']}})[_0x47d8('0x28')](function(_0x485edb){return db[_0x47d8('0x75')][_0x47d8('0x76')](function(_0x393c3f){return _0x485edb[_0x47d8('0x6e')](_0x40fcea,{'transaction':_0x393c3f})[_0x47d8('0x28')](function(){return BPromise[_0x47d8('0x77')](_0x54a647,function(_0xe81c2a){return db[_0x47d8('0x78')][_0x47d8('0x79')]({'TeamId':_0xe81c2a['id'],'VoiceQueueId':_0x20a2a7[_0x47d8('0x4f')]['id'],'penalty':_0xe81c2a[_0x47d8('0x74')]},{'transaction':_0x393c3f});});})['then'](function(){return BPromise[_0x47d8('0x77')](_0x3acac5,function(_0x368923){return db[_0x47d8('0x7a')][_0x47d8('0x7b')]({'where':{'UserId':_0x368923['id'],'VoiceQueueId':_0x20a2a7['params']['id']},'defaults':{'penalty':_0x368923[_0x47d8('0x74')]},'transaction':_0x393c3f});});})[_0x47d8('0x28')](function(){return BPromise['each'](_[_0x47d8('0x2e')](_0x3acac5,{'online':!![]}),function(_0xc39e26){return db[_0x47d8('0x7c')][_0x47d8('0x79')]({'membername':_0xc39e26[_0x47d8('0x35')],'UserId':_0xc39e26['id'],'queue_name':_0x485edb[_0x47d8('0x35')],'VoiceQueueId':_0x485edb['id'],'interface':_[_0x47d8('0x7d')](_0xc39e26[_0x47d8('0x72')])?util[_0x47d8('0x7e')]('SIP/%s',_0xc39e26['name']):_0xc39e26[_0x47d8('0x72')],'paused':_0xc39e26[_0x47d8('0x7f')]||![],'penalty':_0xc39e26['penalty']},{'transaction':_0x393c3f});});})[_0x47d8('0x28')](function(){_0x3acac5[_0x47d8('0x73')](function(_0x5fbcce){socket[_0x47d8('0x80')](_0x47d8('0x81'),{'UserId':_0x5fbcce['id'],'VoiceQueueId':_0x485edb['id']});});});});});}})['then'](respondWithStatusCode(_0x5f299e,null))[_0x47d8('0x51')](handleError(_0x5f299e,null));};exports['removeTeams']=function(_0xd44425,_0xcb95b8,_0x2091d7){return db[_0x47d8('0x6d')][_0x47d8('0x4c')]({'where':{'id':_0xd44425[_0x47d8('0x3c')][_0x47d8('0x82')]},'attributes':['id'],'include':[{'model':db[_0x47d8('0x70')],'as':_0x47d8('0x71'),'attributes':['id'],'raw':!![]}]})[_0x47d8('0x28')](handleEntityNotFound(_0xcb95b8,null))[_0x47d8('0x28')](function(_0x38337f){var _0x4fb03d=_[_0x47d8('0x30')](_0x38337f,'id');var _0x7cd98d=[];var _0x4b5c4f=[];var _0x472575=squel[_0x47d8('0x83')]();_0x472575[_0x47d8('0x84')](_0x47d8('0x85'))[_0x47d8('0x86')]('team_has_voice_queues','tq')['join'](_0x47d8('0x87'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0x47d8('0x88'),_0xd44425['params']['id']);for(var _0xd507f9=0x0;_0xd507f9<_0x38337f[_0x47d8('0x42')];_0xd507f9+=0x1){let _0xa8602b=_0x38337f[_0xd507f9];for(var _0x407487=0x0;_0x407487<_0xa8602b[_0x47d8('0x71')][_0x47d8('0x42')];_0x407487+=0x1){let _0x3cf3c2=_0xa8602b[_0x47d8('0x71')][_0x407487];var _0x3576d4=_0x472575[_0x47d8('0x5a')]();_0x3576d4['where'](_0x47d8('0x89'),_0x3cf3c2['id']);_0x4b5c4f[_0x47d8('0x8a')](db[_0x47d8('0x75')][_0x47d8('0x3c')](_0x3576d4[_0x47d8('0x8b')](),{'type':db['sequelize'][_0x47d8('0x8c')][_0x47d8('0x8d')]})[_0x47d8('0x28')](function(_0x28c6da){if(_0x28c6da[_0x47d8('0x42')]===0x1){return _0x3cf3c2['id'];}else{var _0x36f990=_['every'](_[_0x47d8('0x30')](_0x28c6da,_0x47d8('0x8e')),function(_0x17a08c){return _[_0x47d8('0x32')](_0x4fb03d,_0x17a08c);});if(_0x36f990){return _0x3cf3c2['id'];}}}));}}return BPromise[_0x47d8('0x8f')](_0x4b5c4f)[_0x47d8('0x28')](function(_0x2ca739){_0x7cd98d=_(_0x7cd98d)[_0x47d8('0x90')](_0x2ca739)['compact']()[_0x47d8('0x31')]();return db[_0x47d8('0x38')][_0x47d8('0x34')]({'where':{'id':_0xd44425['params']['id']}})[_0x47d8('0x28')](function(_0x5cd076){return db[_0x47d8('0x75')][_0x47d8('0x76')](function(_0x14b639){return _0x5cd076['removeTeams'](_0xd44425['query'][_0x47d8('0x82')],{'transaction':_0x14b639})[_0x47d8('0x28')](function(){if(!_['isEmpty'](_0x7cd98d)){return _0x5cd076[_0x47d8('0x91')](_0x7cd98d,{'transaction':_0x14b639})[_0x47d8('0x28')](function(){return db['UserVoiceQueueRt'][_0x47d8('0x29')]({'where':{'VoiceQueueId':_0xd44425[_0x47d8('0x4f')]['id'],'UserId':_0x7cd98d},'transaction':_0x14b639});});}})[_0x47d8('0x28')](function(){_0x7cd98d[_0x47d8('0x73')](function(_0x3e4bf0){socket['emit'](_0x47d8('0x92'),{'UserId':_0x3e4bf0,'VoiceQueueId':_0x5cd076['id']});});});});});});})[_0x47d8('0x28')](respondWithStatusCode(_0xcb95b8,null))[_0x47d8('0x51')](handleError(_0xcb95b8,null));};exports[_0x47d8('0x93')]=function(_0xe8e894,_0x6ff263,_0x2b2332){var _0x577bb8,_0x337440;return db[_0x47d8('0x38')][_0x47d8('0x34')]({'where':{'id':_0xe8e894['params']['id']}})[_0x47d8('0x28')](handleEntityNotFound(_0x6ff263,null))[_0x47d8('0x28')](function(_0x2d55d9){if(_0x2d55d9){_0x337440=_0x2d55d9;return _0x2d55d9['addAgents'](_0xe8e894[_0x47d8('0x5d')][_0x47d8('0x82')],_[_0x47d8('0x5b')](_0xe8e894[_0x47d8('0x5d')],['ids','id'])||{})[_0x47d8('0x94')](function(_0x37f850){for(var _0x248102=0x0;_0x248102<_0xe8e894[_0x47d8('0x5d')][_0x47d8('0x82')][_0x47d8('0x42')];_0x248102+=0x1){socket[_0x47d8('0x80')]('userVoiceQueue:save',{'UserId':Number(_0xe8e894[_0x47d8('0x5d')][_0x47d8('0x82')][_0x248102]),'VoiceQueueId':Number(_0xe8e894[_0x47d8('0x4f')]['id'])});}return _0x37f850;});}})[_0x47d8('0x28')](function(_0xc64b7f){_0x577bb8=_0xc64b7f||[];if(_0x337440){return db[_0x47d8('0x70')][_0x47d8('0x4c')]({'where':{'id':_0xe8e894[_0x47d8('0x5d')][_0x47d8('0x82')]},'attributes':['id',_0x47d8('0x35'),_0x47d8('0x95'),'voicePause',_0x47d8('0x72')],'raw':!![]});}})['then'](function(_0x2b1431){if(!_['isEmpty'](_0x2b1431)){var _0x1ff985=[];for(var _0x7dd966=0x0;_0x7dd966<_0x2b1431[_0x47d8('0x42')];_0x7dd966++){if(_0x2b1431[_0x7dd966][_0x47d8('0x95')]){_0x1ff985['push'](db['UserVoiceQueueRt']['upsert']({'membername':_0x2b1431[_0x7dd966][_0x47d8('0x35')],'UserId':_0x2b1431[_0x7dd966]['id'],'queue_name':_0x337440[_0x47d8('0x35')],'VoiceQueueId':_0x337440['id'],'interface':_[_0x47d8('0x7d')](_0x2b1431[_0x7dd966][_0x47d8('0x72')])?util[_0x47d8('0x7e')](_0x47d8('0x96'),_0x2b1431[_0x7dd966][_0x47d8('0x35')]):_0x2b1431[_0x7dd966][_0x47d8('0x72')],'paused':_0x2b1431[_0x7dd966][_0x47d8('0x7f')]||![],'penalty':_0xe8e894[_0x47d8('0x5d')][_0x47d8('0x74')]||0x0}));}}return BPromise['all'](_0x1ff985);}})[_0x47d8('0x28')](function(){return _0x577bb8;})[_0x47d8('0x28')](respondWithResult(_0x6ff263,null))['catch'](handleError(_0x6ff263,null));};exports['removeAgents']=function(_0x3d915b,_0xbdfd5b,_0x3968b5){return db[_0x47d8('0x38')][_0x47d8('0x34')]({'where':{'id':_0x3d915b[_0x47d8('0x4f')]['id']}})[_0x47d8('0x28')](handleEntityNotFound(_0xbdfd5b,null))['then'](function(_0x506848){if(_0x506848){return _0x506848[_0x47d8('0x91')](_0x3d915b[_0x47d8('0x3c')]['ids'])[_0x47d8('0x28')](function(){if(_['isArray'](_0x3d915b['query'][_0x47d8('0x82')])){for(var _0x35b21a=0x0;_0x35b21a<_0x3d915b[_0x47d8('0x3c')][_0x47d8('0x82')][_0x47d8('0x42')];_0x35b21a+=0x1){socket[_0x47d8('0x80')](_0x47d8('0x92'),{'UserId':Number(_0x3d915b[_0x47d8('0x3c')][_0x47d8('0x82')][_0x35b21a]),'VoiceQueueId':Number(_0x3d915b[_0x47d8('0x4f')]['id'])});}}else{socket['emit'](_0x47d8('0x92'),{'UserId':Number(_0x3d915b[_0x47d8('0x3c')][_0x47d8('0x82')]),'VoiceQueueId':Number(_0x3d915b[_0x47d8('0x4f')]['id'])});}});}})[_0x47d8('0x28')](function(_0x351e2d){return db[_0x47d8('0x7c')][_0x47d8('0x29')]({'where':{'VoiceQueueId':_0x3d915b['params']['id'],'UserId':_0x3d915b[_0x47d8('0x3c')][_0x47d8('0x82')]}})[_0x47d8('0x28')](function(){return _0x351e2d;});})[_0x47d8('0x28')](respondWithStatusCode(_0xbdfd5b,null))[_0x47d8('0x51')](handleError(_0xbdfd5b,null));};exports[_0x47d8('0x97')]=function(_0x3b7258,_0x9c4095,_0x2b4bf0){var _0x54b564={};var _0x105712={};var _0x39714a;var _0x4b30df;return db[_0x47d8('0x38')]['findOne']({'where':{'id':_0x3b7258[_0x47d8('0x4f')]['id']}})[_0x47d8('0x28')](handleEntityNotFound(_0x9c4095,null))[_0x47d8('0x28')](function(_0x294d39){if(_0x294d39){_0x39714a=_0x294d39;_0x105712[_0x47d8('0x40')]=_['keys'](db[_0x47d8('0x70')]['rawAttributes']);_0x105712['query']=_[_0x47d8('0x3b')](_0x3b7258['query']);_0x105712[_0x47d8('0x3d')]=_['intersection'](_0x105712['model'],_0x105712[_0x47d8('0x3c')]);_0x54b564[_0x47d8('0x3f')]=_['intersection'](_0x105712[_0x47d8('0x40')],qs[_0x47d8('0x41')](_0x3b7258[_0x47d8('0x3c')][_0x47d8('0x41')]));_0x54b564[_0x47d8('0x3f')]=_0x54b564[_0x47d8('0x3f')][_0x47d8('0x42')]?_0x54b564[_0x47d8('0x3f')]:_0x105712['model'];_0x54b564[_0x47d8('0x64')]=qs[_0x47d8('0x45')](_0x3b7258['query'][_0x47d8('0x45')]);_0x54b564[_0x47d8('0x46')]=qs[_0x47d8('0x3d')](_['pick'](_0x3b7258['query'],_0x105712[_0x47d8('0x3d')]));if(_0x3b7258[_0x47d8('0x3c')][_0x47d8('0x2e')]){_0x54b564[_0x47d8('0x46')]=_[_0x47d8('0x47')](_0x54b564[_0x47d8('0x46')],{'$or':_[_0x47d8('0x30')](_0x54b564[_0x47d8('0x3f')],function(_0x500f94){var _0x3ce312={};_0x3ce312[_0x500f94]={'$like':'%'+_0x3b7258[_0x47d8('0x3c')]['filter']+'%'};return _0x3ce312;})});}_0x54b564=_[_0x47d8('0x47')]({},_0x54b564,_0x3b7258['options']);return _0x39714a[_0x47d8('0x97')](_0x54b564);}})[_0x47d8('0x28')](function(_0x27a569){if(_0x27a569){_0x4b30df=_0x27a569[_0x47d8('0x42')];if(!_0x3b7258[_0x47d8('0x3c')][_0x47d8('0x43')](_0x47d8('0x44'))){_0x54b564[_0x47d8('0x21')]=qs[_0x47d8('0x21')](_0x3b7258[_0x47d8('0x3c')][_0x47d8('0x21')]);_0x54b564[_0x47d8('0x1f')]=qs[_0x47d8('0x1f')](_0x3b7258[_0x47d8('0x3c')][_0x47d8('0x1f')]);}return _0x39714a[_0x47d8('0x97')](_0x54b564);}})[_0x47d8('0x28')](function(_0xf78751){if(_0xf78751){return _0xf78751?{'count':_0x4b30df,'rows':_0xf78751}:null;}})[_0x47d8('0x28')](respondWithResult(_0x9c4095,null))[_0x47d8('0x51')](handleError(_0x9c4095,null));};exports[_0x47d8('0x98')]=function(_0x135ab9,_0x1dd6c1,_0xc24b3f){var _0x2b6d2={};var _0x365d4b={};var _0x4d9265;var _0x4e7a24;return db[_0x47d8('0x38')][_0x47d8('0x62')]({'where':{'id':_0x135ab9[_0x47d8('0x4f')]['id']}})[_0x47d8('0x28')](handleEntityNotFound(_0x1dd6c1,null))['then'](function(_0x56ac4a){if(_0x56ac4a){_0x4d9265=_0x56ac4a;_0x365d4b[_0x47d8('0x40')]=_['keys'](db[_0x47d8('0x7c')]['rawAttributes']);_0x365d4b['query']=_[_0x47d8('0x3b')](_0x135ab9[_0x47d8('0x3c')]);_0x365d4b[_0x47d8('0x3d')]=_[_0x47d8('0x3e')](_0x365d4b[_0x47d8('0x40')],_0x365d4b['query']);_0x2b6d2['attributes']=_[_0x47d8('0x3e')](_0x365d4b['model'],qs[_0x47d8('0x41')](_0x135ab9['query'][_0x47d8('0x41')]));_0x2b6d2[_0x47d8('0x3f')]=_0x2b6d2[_0x47d8('0x3f')][_0x47d8('0x42')]?_0x2b6d2['attributes']:_0x365d4b[_0x47d8('0x40')];_0x2b6d2[_0x47d8('0x64')]=qs[_0x47d8('0x45')](_0x135ab9['query'][_0x47d8('0x45')]);_0x2b6d2[_0x47d8('0x46')]=qs[_0x47d8('0x3d')](_[_0x47d8('0x65')](_0x135ab9[_0x47d8('0x3c')],_0x365d4b[_0x47d8('0x3d')]));if(_0x135ab9[_0x47d8('0x3c')][_0x47d8('0x2e')]){_0x2b6d2[_0x47d8('0x46')]=_[_0x47d8('0x47')](_0x2b6d2['where'],{'$or':_[_0x47d8('0x30')](_0x2b6d2[_0x47d8('0x3f')],function(_0x551996){var _0x44607d={};_0x44607d[_0x551996]={'$like':'%'+_0x135ab9[_0x47d8('0x3c')][_0x47d8('0x2e')]+'%'};return _0x44607d;})});}_0x2b6d2=_[_0x47d8('0x47')]({},_0x2b6d2,_0x135ab9[_0x47d8('0x49')]);return _0x4d9265['getMembers'](_0x2b6d2);}})[_0x47d8('0x28')](function(_0x37b233){if(_0x37b233){_0x4e7a24=_0x37b233[_0x47d8('0x42')];if(!_0x135ab9['query'][_0x47d8('0x43')](_0x47d8('0x44'))){_0x2b6d2['limit']=qs[_0x47d8('0x21')](_0x135ab9[_0x47d8('0x3c')]['limit']);_0x2b6d2[_0x47d8('0x1f')]=qs['offset'](_0x135ab9[_0x47d8('0x3c')][_0x47d8('0x1f')]);}return _0x4d9265[_0x47d8('0x98')](_0x2b6d2);}})['then'](function(_0x7d9106){return _0x7d9106?{'count':_0x4e7a24,'rows':_0x7d9106}:null;})['then'](respondWithResult(_0x1dd6c1,null))[_0x47d8('0x51')](handleError(_0x1dd6c1,null));};exports[_0x47d8('0x99')]=function(_0x33a5f1,_0x1fae3c,_0x2d1d9c){var _0xd83cc7={};var _0x698e0b={};var _0xf643a9;var _0x27fcae;return db[_0x47d8('0x38')]['findOne']({'where':{'id':_0x33a5f1['params']['id']}})[_0x47d8('0x28')](handleEntityNotFound(_0x1fae3c,null))[_0x47d8('0x28')](function(_0x27d3f3){if(_0x27d3f3){_0xf643a9=_0x27d3f3;_0x698e0b[_0x47d8('0x40')]=_[_0x47d8('0x3b')](db[_0x47d8('0x9a')][_0x47d8('0x50')]);_0x698e0b['query']=_[_0x47d8('0x3b')](_0x33a5f1['query']);_0x698e0b['filters']=_[_0x47d8('0x3e')](_0x698e0b[_0x47d8('0x40')],_0x698e0b[_0x47d8('0x3c')]);_0xd83cc7[_0x47d8('0x3f')]=_[_0x47d8('0x3e')](_0x698e0b[_0x47d8('0x40')],qs[_0x47d8('0x41')](_0x33a5f1[_0x47d8('0x3c')][_0x47d8('0x41')]));_0xd83cc7['attributes']=_0xd83cc7['attributes'][_0x47d8('0x42')]?_0xd83cc7['attributes']:_0x698e0b[_0x47d8('0x40')];_0xd83cc7[_0x47d8('0x64')]=qs[_0x47d8('0x45')](_0x33a5f1[_0x47d8('0x3c')][_0x47d8('0x45')]);_0xd83cc7[_0x47d8('0x46')]=qs['filters'](_[_0x47d8('0x65')](_0x33a5f1[_0x47d8('0x3c')],_0x698e0b[_0x47d8('0x3d')]));if(_0x33a5f1[_0x47d8('0x3c')][_0x47d8('0x2e')]){_0xd83cc7['where']=_['merge'](_0xd83cc7[_0x47d8('0x46')],{'$or':_['map'](_0xd83cc7[_0x47d8('0x3f')],function(_0x31a8f1){var _0xb037d9={};_0xb037d9[_0x31a8f1]={'$like':'%'+_0x33a5f1['query']['filter']+'%'};return _0xb037d9;})});}_0xd83cc7=_['merge']({},_0xd83cc7,_0x33a5f1[_0x47d8('0x49')]);return _0xf643a9[_0x47d8('0x99')](_0xd83cc7);}})[_0x47d8('0x28')](function(_0x1ad936){if(_0x1ad936){_0x27fcae=_0x1ad936[_0x47d8('0x42')];if(!_0x33a5f1[_0x47d8('0x3c')][_0x47d8('0x43')](_0x47d8('0x44'))){_0xd83cc7[_0x47d8('0x21')]=qs[_0x47d8('0x21')](_0x33a5f1[_0x47d8('0x3c')][_0x47d8('0x21')]);_0xd83cc7['offset']=qs['offset'](_0x33a5f1[_0x47d8('0x3c')]['offset']);}return _0xf643a9[_0x47d8('0x99')](_0xd83cc7);}})['then'](function(_0x1108e8){if(_0x1108e8){return _0x1108e8?{'count':_0x27fcae,'rows':_0x1108e8}:null;}})[_0x47d8('0x28')](respondWithResult(_0x1fae3c,null))['catch'](handleError(_0x1fae3c,null));};exports[_0x47d8('0x9b')]=function(_0x2d596f,_0x29548b,_0x226b5b){var _0x3082d9,_0x2f057a;return db[_0x47d8('0x38')][_0x47d8('0x34')]({'where':{'id':_0x2d596f[_0x47d8('0x4f')]['id']}})[_0x47d8('0x28')](handleEntityNotFound(_0x29548b,null))[_0x47d8('0x28')](function(_0x1844c6){if(_0x1844c6){_0x2f057a=_0x1844c6;return _0x1844c6[_0x47d8('0x9b')](_0x2d596f[_0x47d8('0x5d')][_0x47d8('0x82')],_[_0x47d8('0x5b')](_0x2d596f['body'],[_0x47d8('0x82'),'id'])||{});}return null;})[_0x47d8('0x94')](function(_0x88d6f2){var _0x5542b5;_0x3082d9=_0x88d6f2||[];var _0x41c2ab=[];if(_0x88d6f2){for(var _0x449cbd=0x0;_0x449cbd<_0x88d6f2['length'];_0x449cbd+=0x1){var _0x24998f=_0x88d6f2[_0x449cbd][_0x47d8('0x54')]({'plain':!![]});_0x2f057a[_0x47d8('0x9c')]=_0x2d596f[_0x47d8('0x5d')][_0x47d8('0x9c')]?_0x2d596f[_0x47d8('0x5d')][_0x47d8('0x9c')]:_0x2f057a[_0x47d8('0x9c')];switch(_0x2f057a[_0x47d8('0x9c')]){case'always':_0x5542b5=squel[_0x47d8('0x9d')]()[_0x47d8('0x9e')](_0x47d8('0x9f'))[_0x47d8('0xa0')]([_0x47d8('0xa1'),_0x47d8('0xa2'),_0x47d8('0xa3'),_0x47d8('0xa4'),_0x47d8('0x66'),_0x47d8('0x5c'),_0x47d8('0x5e')],squel['select']()[_0x47d8('0x84')]('phone',_0x47d8('0xa1'))[_0x47d8('0x84')]('NOW()',_0x47d8('0xa2'))['field']('id',_0x47d8('0xa3'))['field'](_0x24998f[_0x47d8('0xa5')][_0x47d8('0x8b')](),'ListId')[_0x47d8('0x84')](_0x2d596f[_0x47d8('0x4f')]['id'][_0x47d8('0x8b')](),_0x47d8('0x66'))[_0x47d8('0x84')](_0x47d8('0xa6'),'createdAt')[_0x47d8('0x84')](_0x47d8('0xa6'),_0x47d8('0x5e'))[_0x47d8('0x86')](_0x47d8('0xa7'))[_0x47d8('0x46')](_0x47d8('0xa8'))[_0x47d8('0x46')](_0x47d8('0xa9'),_0x24998f[_0x47d8('0xa5')]['toString']())[_0x47d8('0x46')](_0x47d8('0xaa'))['where'](_0x47d8('0xab'),squel[_0x47d8('0x83')]()[_0x47d8('0x84')](_0x47d8('0xac'))[_0x47d8('0x86')](_0x47d8('0xad'))[_0x47d8('0x46')](_0x47d8('0x88'),_0x2d596f['params']['id'][_0x47d8('0x8b')]()))[_0x47d8('0x46')](_0x47d8('0xab'),squel[_0x47d8('0x83')]()['field'](_0x47d8('0xae'))['from'](_0x47d8('0x9f'))[_0x47d8('0x46')]('VoiceQueueId\x20=\x20?',_0x2d596f[_0x47d8('0x4f')]['id'][_0x47d8('0x8b')]())))[_0x47d8('0x8b')]();break;case'onlyIfOpen':_0x5542b5=squel[_0x47d8('0x9d')]()[_0x47d8('0x9e')](_0x47d8('0x9f'))[_0x47d8('0xa0')]([_0x47d8('0xa1'),_0x47d8('0xa2'),'ContactId','ListId',_0x47d8('0x66'),_0x47d8('0x5c'),_0x47d8('0x5e')],squel[_0x47d8('0x83')]()[_0x47d8('0x84')](_0x47d8('0xa1'),_0x47d8('0xa1'))['field']('NOW()','scheduledAt')['field']('id','ContactId')[_0x47d8('0x84')](_0x24998f[_0x47d8('0xa5')][_0x47d8('0x8b')](),_0x47d8('0xa4'))[_0x47d8('0x84')](_0x2d596f['params']['id'][_0x47d8('0x8b')](),_0x47d8('0x66'))['field']('NOW()',_0x47d8('0x5c'))['field'](_0x47d8('0xa6'),_0x47d8('0x5e'))[_0x47d8('0x86')](_0x47d8('0xa7'))[_0x47d8('0x46')](_0x47d8('0xa8'))[_0x47d8('0x46')](_0x47d8('0xa9'),_0x24998f['CmListId'][_0x47d8('0x8b')]())['where']('phone\x20IS\x20NOT\x20NULL')[_0x47d8('0x46')](_0x47d8('0xab'),squel[_0x47d8('0x83')]()[_0x47d8('0x84')](_0x47d8('0xae'))[_0x47d8('0x86')](_0x47d8('0x9f'))[_0x47d8('0x46')](_0x47d8('0x88'),_0x2d596f[_0x47d8('0x4f')]['id']['toString']())))['toString']();break;default:_0x5542b5=squel[_0x47d8('0x9d')]()[_0x47d8('0x9e')]('cm_hopper')['fromQuery']([_0x47d8('0xa1'),_0x47d8('0xa2'),_0x47d8('0xa3'),_0x47d8('0xa4'),_0x47d8('0x66'),_0x47d8('0x5c'),_0x47d8('0x5e')],squel['select']()[_0x47d8('0x84')](_0x47d8('0xa1'),_0x47d8('0xa1'))[_0x47d8('0x84')](_0x47d8('0xa6'),_0x47d8('0xa2'))[_0x47d8('0x84')]('id',_0x47d8('0xa3'))[_0x47d8('0x84')](_0x24998f[_0x47d8('0xa5')][_0x47d8('0x8b')](),_0x47d8('0xa4'))[_0x47d8('0x84')](_0x2d596f[_0x47d8('0x4f')]['id'][_0x47d8('0x8b')](),_0x47d8('0x66'))[_0x47d8('0x84')](_0x47d8('0xa6'),'createdAt')[_0x47d8('0x84')]('NOW()',_0x47d8('0x5e'))[_0x47d8('0x86')](_0x47d8('0xa7'))['where']('deletedAt\x20IS\x20NULL')['where'](_0x47d8('0xa9'),_0x24998f[_0x47d8('0xa5')]['toString']())[_0x47d8('0x46')](_0x47d8('0xaa')))[_0x47d8('0x8b')]();}_0x41c2ab['push'](db[_0x47d8('0x75')][_0x47d8('0x3c')](_0x5542b5));}return BPromise[_0x47d8('0x8f')](_0x41c2ab);}})[_0x47d8('0x28')](function(){return _0x3082d9;})[_0x47d8('0x28')](respondWithResult(_0x29548b,null))[_0x47d8('0x51')](handleError(_0x29548b,null));};exports['removeLists']=function(_0x21a14f,_0x55f6e3,_0x563830){return db[_0x47d8('0x38')]['find']({'where':{'id':_0x21a14f[_0x47d8('0x4f')]['id']}})['then'](handleEntityNotFound(_0x55f6e3,null))[_0x47d8('0x28')](function(_0x182a21){if(_0x182a21){return _0x182a21[_0x47d8('0xaf')](_0x21a14f[_0x47d8('0x3c')][_0x47d8('0x82')]);}})[_0x47d8('0x28')](function(_0x522b99){if(_0x522b99){return db['CmHopper'][_0x47d8('0x29')]({'where':{'ListId':_0x21a14f[_0x47d8('0x3c')]['ids'],'VoiceQueueId':_0x21a14f['params']['id']}})[_0x47d8('0x28')](function(){return _0x522b99;});}})[_0x47d8('0x28')](respondWithStatusCode(_0x55f6e3,null))[_0x47d8('0x51')](handleError(_0x55f6e3,null));};exports[_0x47d8('0xb0')]=function(_0x127da6,_0x18a06c,_0x27a9ac){var _0x105a4f={};var _0x5be933={};var _0x304f63;var _0xbcf819;return db[_0x47d8('0x38')][_0x47d8('0x62')]({'where':{'id':_0x127da6['params']['id']}})['then'](handleEntityNotFound(_0x18a06c,null))[_0x47d8('0x28')](function(_0x1fa49f){if(_0x1fa49f){_0x304f63=_0x1fa49f;_0x5be933[_0x47d8('0x40')]=_[_0x47d8('0x3b')](db[_0x47d8('0x9a')][_0x47d8('0x50')]);_0x5be933['query']=_['keys'](_0x127da6[_0x47d8('0x3c')]);_0x5be933[_0x47d8('0x3d')]=_[_0x47d8('0x3e')](_0x5be933[_0x47d8('0x40')],_0x5be933[_0x47d8('0x3c')]);_0x105a4f['attributes']=_[_0x47d8('0x3e')](_0x5be933[_0x47d8('0x40')],qs[_0x47d8('0x41')](_0x127da6[_0x47d8('0x3c')]['fields']));_0x105a4f[_0x47d8('0x3f')]=_0x105a4f['attributes'][_0x47d8('0x42')]?_0x105a4f[_0x47d8('0x3f')]:_0x5be933[_0x47d8('0x40')];_0x105a4f[_0x47d8('0x64')]=qs[_0x47d8('0x45')](_0x127da6['query']['sort']);_0x105a4f['where']=qs['filters'](_['pick'](_0x127da6[_0x47d8('0x3c')],_0x5be933[_0x47d8('0x3d')]));if(_0x127da6['query'][_0x47d8('0x2e')]){_0x105a4f[_0x47d8('0x46')]=_[_0x47d8('0x47')](_0x105a4f[_0x47d8('0x46')],{'$or':_[_0x47d8('0x30')](_0x105a4f[_0x47d8('0x3f')],function(_0x5b5f05){var _0x69ebd9={};_0x69ebd9[_0x5b5f05]={'$like':'%'+_0x127da6['query'][_0x47d8('0x2e')]+'%'};return _0x69ebd9;})});}_0x105a4f=_[_0x47d8('0x47')]({},_0x105a4f,_0x127da6[_0x47d8('0x49')]);return _0x304f63['getBlackLists'](_0x105a4f);}})[_0x47d8('0x28')](function(_0x35bf62){if(_0x35bf62){_0xbcf819=_0x35bf62['length'];if(!_0x127da6[_0x47d8('0x3c')]['hasOwnProperty'](_0x47d8('0x44'))){_0x105a4f[_0x47d8('0x21')]=qs[_0x47d8('0x21')](_0x127da6[_0x47d8('0x3c')]['limit']);_0x105a4f['offset']=qs['offset'](_0x127da6[_0x47d8('0x3c')]['offset']);}return _0x304f63[_0x47d8('0xb0')](_0x105a4f);}})['then'](function(_0x2de58b){if(_0x2de58b){return _0x2de58b?{'count':_0xbcf819,'rows':_0x2de58b}:null;}})[_0x47d8('0x28')](respondWithResult(_0x18a06c,null))[_0x47d8('0x51')](handleError(_0x18a06c,null));};exports[_0x47d8('0xb1')]=function(_0x3e61b7,_0x1140ce,_0x23109c){var _0x28d5c1,_0x59fa6a;return db['VoiceQueue']['find']({'where':{'id':_0x3e61b7[_0x47d8('0x4f')]['id']}})[_0x47d8('0x28')](handleEntityNotFound(_0x1140ce,null))[_0x47d8('0x28')](function(_0xcb1a39){if(_0xcb1a39){_0x59fa6a=_0xcb1a39;return _0xcb1a39['addBlackLists'](_0x3e61b7[_0x47d8('0x5d')]['ids'],_[_0x47d8('0x5b')](_0x3e61b7[_0x47d8('0x5d')],['ids','id'])||{});}return null;})[_0x47d8('0x94')](function(_0x1d4f9a){var _0x569089;_0x28d5c1=_0x1d4f9a||[];var _0x38d5a0=[];if(_0x1d4f9a){for(var _0x1c7fe6=0x0;_0x1c7fe6<_0x1d4f9a['length'];_0x1c7fe6+=0x1){var _0x46d68f=_0x1d4f9a[_0x1c7fe6]['get']({'plain':!![]});_0x569089=squel[_0x47d8('0x9d')]()[_0x47d8('0x9e')]('cm_hopper_black')[_0x47d8('0xa0')]([_0x47d8('0xa1'),_0x47d8('0xa3'),_0x47d8('0xa4'),_0x47d8('0x66'),_0x47d8('0x5c'),_0x47d8('0x5e')],squel[_0x47d8('0x83')]()[_0x47d8('0x84')]('phone','phone')['field']('id',_0x47d8('0xa3'))[_0x47d8('0x84')](_0x46d68f['CmListId'][_0x47d8('0x8b')](),_0x47d8('0xa4'))['field'](_0x3e61b7[_0x47d8('0x4f')]['id'][_0x47d8('0x8b')](),_0x47d8('0x66'))[_0x47d8('0x84')](_0x47d8('0xa6'),_0x47d8('0x5c'))[_0x47d8('0x84')](_0x47d8('0xa6'),_0x47d8('0x5e'))['from'](_0x47d8('0xa7'))[_0x47d8('0x46')](_0x47d8('0xa8'))[_0x47d8('0x46')]('ListId\x20=\x20?',_0x46d68f[_0x47d8('0xa5')][_0x47d8('0x8b')]())[_0x47d8('0x46')](_0x47d8('0xaa')))[_0x47d8('0x8b')]();_0x38d5a0[_0x47d8('0x8a')](db[_0x47d8('0x75')]['query'](_0x569089));}return BPromise['all'](_0x38d5a0);}})[_0x47d8('0x28')](function(){return _0x28d5c1;})[_0x47d8('0x28')](respondWithResult(_0x1140ce,null))[_0x47d8('0x51')](handleError(_0x1140ce,null));};exports[_0x47d8('0xb2')]=function(_0x48f1c3,_0x4cc367,_0x3f5a8d){return db['VoiceQueue'][_0x47d8('0x34')]({'where':{'id':_0x48f1c3[_0x47d8('0x4f')]['id']}})[_0x47d8('0x28')](handleEntityNotFound(_0x4cc367,null))[_0x47d8('0x28')](function(_0x2c7494){if(_0x2c7494){return _0x2c7494['removeBlackLists'](_0x48f1c3['query'][_0x47d8('0x82')]);}})[_0x47d8('0x28')](function(_0x34dbf5){if(_0x34dbf5){return db['CmHopperBlack'][_0x47d8('0x29')]({'where':{'ListId':_0x48f1c3['query']['ids'],'VoiceQueueId':_0x48f1c3[_0x47d8('0x4f')]['id']}})['then'](function(){return _0x34dbf5;});}})[_0x47d8('0x28')](respondWithStatusCode(_0x4cc367,null))[_0x47d8('0x51')](handleError(_0x4cc367,null));};
\ No newline at end of file
+var _0x299d=['VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','removeAgents','userVoiceQueue:remove','addAgents','spread','isEmpty','format','isArray','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','insert','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','NOW()','CmListId','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','into','phone\x20IS\x20NOT\x20NULL','removeLists','getBlackLists','addBlackLists','removeBlackLists','rimraf','fast-json-patch','request-promise','bluebird','mustache','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','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','get','inbound','QueueCampaigns','filter','map','value','includes','type','find','name','UserProfileResource','error','stack','send','index','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','where','pick','merge','options','VoiceQueue','includeAll','include','findAll','rows','catch','show','params','length','create','user','role','VoiceQueues','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','outbound','UserProfileSection','findOne','CmHopper','order','sort','VoiceQueueId','CmHopperHistory','nolimit','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','addTeams','teams','Team','User','online','voicePause','interface','flatMap','Agents','forEach','penalty','sequelize','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','SIP/%s','emit','userVoiceQueue:save','removeTeams','ids','select','field','tq.TeamId','from','join','user_has_teams'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x299d,0x1a6));var _0xd299=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x299d[_0x47a7d0];return _0xb9bd08;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd299('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd299('0x1'));var rp=require(_0xd299('0x2'));var moment=require('moment');var BPromise=require(_0xd299('0x3'));var Mustache=require(_0xd299('0x4'));var util=require(_0xd299('0x5'));var path=require(_0xd299('0x6'));var sox=require(_0xd299('0x7'));var csv=require('to-csv');var ejs=require(_0xd299('0x8'));var fs=require('fs');var fs_extra=require(_0xd299('0x9'));var _=require(_0xd299('0xa'));var squel=require('squel');var crypto=require(_0xd299('0xb'));var jsforce=require(_0xd299('0xc'));var deskjs=require(_0xd299('0xd'));var toCsv=require('to-csv');var querystring=require(_0xd299('0xe'));var Papa=require(_0xd299('0xf'));var Redis=require(_0xd299('0x10'));var authService=require(_0xd299('0x11'));var qs=require(_0xd299('0x12'));var as=require(_0xd299('0x13'));var hardwareService=require(_0xd299('0x14'));var logger=require(_0xd299('0x15'))(_0xd299('0x16'));var utils=require(_0xd299('0x17'));var config=require(_0xd299('0x18'));var licenseUtil=require(_0xd299('0x19'));var db=require(_0xd299('0x1a'))['db'];config['redis']=_[_0xd299('0x1b')](config[_0xd299('0x1c')],{'host':_0xd299('0x1d'),'port':0x18eb});var socket=require(_0xd299('0x1e'))(new Redis(config[_0xd299('0x1c')]));require('./voiceQueue.socket')[_0xd299('0x1f')](socket);function respondWithStatusCode(_0xa17b6c,_0x1b2cae){_0x1b2cae=_0x1b2cae||0xcc;return function(_0x44c342){if(_0x44c342){return _0xa17b6c[_0xd299('0x20')](_0x1b2cae);}return _0xa17b6c[_0xd299('0x21')](_0x1b2cae)[_0xd299('0x22')]();};}function respondWithResult(_0x362dfd,_0x3d43cc){_0x3d43cc=_0x3d43cc||0xc8;return function(_0x4cee7c){if(_0x4cee7c){return _0x362dfd[_0xd299('0x21')](_0x3d43cc)['json'](_0x4cee7c);}};}function respondWithFilteredResult(_0xef63da,_0x25df6e){return function(_0x2d36b6){if(_0x2d36b6){var _0x327b4a=typeof _0x25df6e[_0xd299('0x23')]===_0xd299('0x24')&&typeof _0x25df6e[_0xd299('0x25')]==='undefined';var _0x59d2af=_0x2d36b6[_0xd299('0x26')];var _0x53d31d=_0x327b4a?0x0:_0x25df6e[_0xd299('0x23')];var _0x32a9c0=_0x327b4a?_0x2d36b6[_0xd299('0x26')]:_0x25df6e[_0xd299('0x23')]+_0x25df6e['limit'];var _0x3aebb2;if(_0x32a9c0>=_0x59d2af){_0x32a9c0=_0x59d2af;_0x3aebb2=0xc8;}else{_0x3aebb2=0xce;}_0xef63da[_0xd299('0x21')](_0x3aebb2);return _0xef63da[_0xd299('0x27')](_0xd299('0x28'),_0x53d31d+'-'+_0x32a9c0+'/'+_0x59d2af)[_0xd299('0x29')](_0x2d36b6);}return null;};}function patchUpdates(_0x5ed21a){return function(_0x453b4c){try{jsonpatch[_0xd299('0x2a')](_0x453b4c,_0x5ed21a,!![]);}catch(_0x51839d){return BPromise['reject'](_0x51839d);}return _0x453b4c[_0xd299('0x2b')]();};}function saveUpdates(_0x414d6,_0x273d40){return function(_0x43b2f9){if(_0x43b2f9){return _0x43b2f9[_0xd299('0x2c')](_0x414d6)[_0xd299('0x2d')](function(_0x149019){return _0x149019;});}return null;};}function removeEntity(_0x3f6d94,_0x5ef913){return function(_0x216062){if(_0x216062){return _0x216062[_0xd299('0x2e')]()[_0xd299('0x2d')](function(){var _0x2b0d2c=_0x216062[_0xd299('0x2f')]({'plain':!![]});var _0x115e09=[{'name':'VoiceQueues','value':_0xd299('0x30'),'ignore':![]},{'name':_0xd299('0x31'),'value':'outbound','ignore':![]}];var _0x24cad9=_(_0x115e09)[_0xd299('0x32')]('ignore')[_0xd299('0x33')](_0xd299('0x34'))[_0xd299('0x34')]();if(_[_0xd299('0x35')](_0x24cad9,_0x2b0d2c[_0xd299('0x36')])){return;}var _0x2f28b7=_[_0xd299('0x37')](_0x115e09,[_0xd299('0x34'),_0x2b0d2c[_0xd299('0x36')]])[_0xd299('0x38')];return db[_0xd299('0x39')]['destroy']({'where':{'type':_0x2f28b7,'resourceId':_0x2b0d2c['id']}})[_0xd299('0x2d')](function(){return _0x216062;});})[_0xd299('0x2d')](function(){_0x3f6d94[_0xd299('0x21')](0xcc)[_0xd299('0x22')]();});}};}function handleEntityNotFound(_0x157bfa,_0x49a6a1){return function(_0x17f9a8){if(!_0x17f9a8){_0x157bfa[_0xd299('0x20')](0x194);}return _0x17f9a8;};}function handleError(_0x1acc23,_0x230f9d){_0x230f9d=_0x230f9d||0x1f4;return function(_0x3e12e9){logger[_0xd299('0x3a')](_0x3e12e9[_0xd299('0x3b')]);if(_0x3e12e9[_0xd299('0x38')]){delete _0x3e12e9[_0xd299('0x38')];}_0x1acc23['status'](_0x230f9d)[_0xd299('0x3c')](_0x3e12e9);};}exports[_0xd299('0x3d')]=function(_0x2c6746,_0x3711e1){var _0x1f959b={},_0x5b38d7={},_0x7f8400={'count':0x0,'rows':[]};var _0x1252bb=_[_0xd299('0x33')](db['VoiceQueue'][_0xd299('0x3e')],function(_0x10452f){return{'name':_0x10452f['fieldName'],'type':_0x10452f[_0xd299('0x36')][_0xd299('0x3f')]};});_0x5b38d7[_0xd299('0x40')]=_[_0xd299('0x33')](_0x1252bb,_0xd299('0x38'));_0x5b38d7[_0xd299('0x41')]=_[_0xd299('0x42')](_0x2c6746['query']);_0x5b38d7[_0xd299('0x43')]=_['intersection'](_0x5b38d7[_0xd299('0x40')],_0x5b38d7[_0xd299('0x41')]);_0x1f959b['attributes']=_[_0xd299('0x44')](_0x5b38d7[_0xd299('0x40')],qs[_0xd299('0x45')](_0x2c6746[_0xd299('0x41')]['fields']));_0x1f959b[_0xd299('0x46')]=_0x1f959b[_0xd299('0x46')]['length']?_0x1f959b[_0xd299('0x46')]:_0x5b38d7['model'];if(!_0x2c6746[_0xd299('0x41')][_0xd299('0x47')]('nolimit')){_0x1f959b[_0xd299('0x25')]=qs['limit'](_0x2c6746[_0xd299('0x41')][_0xd299('0x25')]);_0x1f959b['offset']=qs[_0xd299('0x23')](_0x2c6746[_0xd299('0x41')][_0xd299('0x23')]);}_0x1f959b['order']=qs['sort'](_0x2c6746['query']['sort']);_0x1f959b[_0xd299('0x48')]=qs['filters'](_[_0xd299('0x49')](_0x2c6746[_0xd299('0x41')],_0x5b38d7['filters']),_0x1252bb);if(_0x2c6746[_0xd299('0x41')][_0xd299('0x32')]){_0x1f959b[_0xd299('0x48')]=_[_0xd299('0x4a')](_0x1f959b[_0xd299('0x48')],{'$or':_[_0xd299('0x33')](_0x1252bb,function(_0x43b372){if(_0x43b372[_0xd299('0x36')]!=='VIRTUAL'){var _0x755fbc={};_0x755fbc[_0x43b372[_0xd299('0x38')]]={'$like':'%'+_0x2c6746['query'][_0xd299('0x32')]+'%'};return _0x755fbc;}})});}_0x1f959b=_[_0xd299('0x4a')]({},_0x1f959b,_0x2c6746[_0xd299('0x4b')]);var _0x27aebd={'where':_0x1f959b['where']};return db[_0xd299('0x4c')][_0xd299('0x26')](_0x27aebd)[_0xd299('0x2d')](function(_0x246a20){_0x7f8400[_0xd299('0x26')]=_0x246a20;if(_0x2c6746[_0xd299('0x41')][_0xd299('0x4d')]){_0x1f959b[_0xd299('0x4e')]=[{'all':!![]}];}return db['VoiceQueue'][_0xd299('0x4f')](_0x1f959b);})[_0xd299('0x2d')](function(_0x2c6578){_0x7f8400[_0xd299('0x50')]=_0x2c6578;return _0x7f8400;})[_0xd299('0x2d')](respondWithFilteredResult(_0x3711e1,_0x1f959b))[_0xd299('0x51')](handleError(_0x3711e1,null));};exports[_0xd299('0x52')]=function(_0x1c96c8,_0x51542){var _0x7c0635={'raw':![],'where':{'id':_0x1c96c8[_0xd299('0x53')]['id']}},_0x1a65d1={};_0x1a65d1[_0xd299('0x40')]=_['keys'](db[_0xd299('0x4c')][_0xd299('0x3e')]);_0x1a65d1['query']=_['keys'](_0x1c96c8[_0xd299('0x41')]);_0x1a65d1[_0xd299('0x43')]=_[_0xd299('0x44')](_0x1a65d1[_0xd299('0x40')],_0x1a65d1[_0xd299('0x41')]);_0x7c0635[_0xd299('0x46')]=_[_0xd299('0x44')](_0x1a65d1['model'],qs['fields'](_0x1c96c8[_0xd299('0x41')]['fields']));_0x7c0635[_0xd299('0x46')]=_0x7c0635[_0xd299('0x46')][_0xd299('0x54')]?_0x7c0635['attributes']:_0x1a65d1[_0xd299('0x40')];if(_0x1c96c8['query'][_0xd299('0x4d')]){_0x7c0635[_0xd299('0x4e')]=[{'all':!![]}];}_0x7c0635=_[_0xd299('0x4a')]({},_0x7c0635,_0x1c96c8[_0xd299('0x4b')]);return db[_0xd299('0x4c')][_0xd299('0x37')](_0x7c0635)['then'](handleEntityNotFound(_0x51542,null))['then'](respondWithResult(_0x51542,null))[_0xd299('0x51')](handleError(_0x51542,null));};exports[_0xd299('0x55')]=function(_0xe787f2,_0xce1450){return db['VoiceQueue']['create'](_0xe787f2['body'],{})['then'](function(_0x17c9c1){var _0x434233=_0xe787f2[_0xd299('0x56')][_0xd299('0x2f')]({'plain':!![]});if(!_0x434233)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x434233[_0xd299('0x57')]===_0xd299('0x56')){var _0x259cea=_0x17c9c1[_0xd299('0x2f')]({'plain':!![]});var _0x429630=[{'name':_0xd299('0x58'),'value':_0xd299('0x30')},{'name':_0xd299('0x31'),'value':'outbound'}];var _0x3f97c8=_['find'](_0x429630,['value',_0x259cea[_0xd299('0x36')]])[_0xd299('0x38')];return db['UserProfileSection'][_0xd299('0x37')]({'where':{'name':_0x3f97c8,'userProfileId':_0x434233[_0xd299('0x59')]},'raw':!![]})[_0xd299('0x2d')](function(_0x14951a){if(_0x14951a&&_0x14951a[_0xd299('0x5a')]===0x0){return db[_0xd299('0x39')]['create']({'name':_0x259cea[_0xd299('0x38')],'resourceId':_0x259cea['id'],'type':_0x14951a[_0xd299('0x38')],'sectionId':_0x14951a['id']},{})[_0xd299('0x2d')](function(){return _0x17c9c1;});}else{return _0x17c9c1;}})[_0xd299('0x51')](function(_0xc083b9){logger[_0xd299('0x3a')](_0xd299('0x5b'),_0xc083b9);throw _0xc083b9;});}return _0x17c9c1;})[_0xd299('0x2d')](respondWithResult(_0xce1450,0xc9))[_0xd299('0x51')](handleError(_0xce1450,null));};exports[_0xd299('0x5c')]=function(_0x540ded,_0x4e8e6c){var _0x42c4e0={'where':{'id':_0x540ded['params']['id']}},_0x405822={};_0x405822[_0xd299('0x40')]=_[_0xd299('0x42')](db[_0xd299('0x4c')][_0xd299('0x3e')]);_0x42c4e0[_0xd299('0x46')]=_['intersection'](_0x405822['model'],qs[_0xd299('0x45')](_0x540ded['query'][_0xd299('0x45')]));_0x42c4e0[_0xd299('0x46')]=_0x42c4e0[_0xd299('0x46')][_0xd299('0x54')]?_0x42c4e0[_0xd299('0x46')]:_0x405822[_0xd299('0x40')];if(_0x540ded[_0xd299('0x41')][_0xd299('0x4d')]){_0x42c4e0[_0xd299('0x4e')]=[{'all':!![]}];}_0x42c4e0=_['merge']({},_0x42c4e0,_0x540ded[_0xd299('0x4b')]);return db[_0xd299('0x4c')]['find'](_0x42c4e0)['then'](handleEntityNotFound(_0x4e8e6c,null))['then'](function(_0x37fbef){if(_0x37fbef){var _0x270398=_0x37fbef[_0xd299('0x2f')]({'plain':!![]});_0x270398=qs[_0xd299('0x5d')](_0x270398,['id',_0xd299('0x5e'),_0xd299('0x5f')]);_0x540ded['body']=_['omit'](_0x540ded['body'],['id',_0xd299('0x5e'),_0xd299('0x5f')]);return db[_0xd299('0x4c')][_0xd299('0x55')](_[_0xd299('0x4a')](_0x270398,_0x540ded[_0xd299('0x60')]),{'include':_0x540ded[_0xd299('0x41')][_0xd299('0x4d')]?[{'all':!![]}]:undefined})[_0xd299('0x2d')](function(_0x233c71){var _0x5112d9=_0x540ded[_0xd299('0x56')][_0xd299('0x2f')]({'plain':!![]});if(!_0x5112d9)throw new Error(_0xd299('0x61'));if(_0x5112d9[_0xd299('0x57')]==='user'){var _0x564368=_0x233c71[_0xd299('0x2f')]({'plain':!![]});var _0x30a322=[{'name':'VoiceQueues','value':_0xd299('0x30')},{'name':_0xd299('0x31'),'value':_0xd299('0x62')}];var _0x1b4baf=_['find'](_0x30a322,['value',_0x564368[_0xd299('0x36')]])[_0xd299('0x38')];return db[_0xd299('0x63')][_0xd299('0x37')]({'where':{'name':_0x1b4baf,'userProfileId':_0x5112d9['userProfileId']},'raw':!![]})[_0xd299('0x2d')](function(_0x135d32){if(_0x135d32&&_0x135d32[_0xd299('0x5a')]===0x0){return db[_0xd299('0x39')]['create']({'name':_0x564368[_0xd299('0x38')],'resourceId':_0x564368['id'],'type':_0x135d32[_0xd299('0x38')],'sectionId':_0x135d32['id']},{})[_0xd299('0x2d')](function(){return _0x233c71;});}else{return _0x233c71;}})[_0xd299('0x51')](function(_0x5d46eb){logger[_0xd299('0x3a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5d46eb);throw _0x5d46eb;});}return _0x233c71;});}})[_0xd299('0x2d')](respondWithResult(_0x4e8e6c,0xc9))[_0xd299('0x51')](handleError(_0x4e8e6c,null));};exports[_0xd299('0x2c')]=function(_0x3d616e,_0x29a8fd){if(_0x3d616e[_0xd299('0x60')]['id']){delete _0x3d616e['body']['id'];}return db[_0xd299('0x4c')][_0xd299('0x37')]({'where':{'id':_0x3d616e['params']['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x29a8fd,null))['then'](saveUpdates(_0x3d616e[_0xd299('0x60')],null))[_0xd299('0x2d')](respondWithResult(_0x29a8fd,null))[_0xd299('0x51')](handleError(_0x29a8fd,null));};exports[_0xd299('0x2e')]=function(_0x29fa0f,_0x2b37be){return db[_0xd299('0x4c')][_0xd299('0x37')]({'where':{'id':_0x29fa0f[_0xd299('0x53')]['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x2b37be,null))[_0xd299('0x2d')](removeEntity(_0x2b37be,null))[_0xd299('0x51')](handleError(_0x2b37be,null));};exports['getHoppers']=function(_0x313ba3,_0x2dcc07,_0x53ec3a){var _0x3cc71f={'raw':![],'where':{}};var _0x30d1ab={};var _0x56a255={'count':0x0,'rows':[]};return db[_0xd299('0x4c')][_0xd299('0x64')]({'where':{'id':_0x313ba3['params']['id']}})['then'](handleEntityNotFound(_0x2dcc07,null))[_0xd299('0x2d')](function(_0x2de4ce){if(_0x2de4ce){_0x30d1ab[_0xd299('0x40')]=_['keys'](db[_0xd299('0x65')][_0xd299('0x3e')]);_0x30d1ab[_0xd299('0x41')]=_['keys'](_0x313ba3[_0xd299('0x41')]);_0x30d1ab['filters']=_[_0xd299('0x44')](_0x30d1ab[_0xd299('0x40')],_0x30d1ab[_0xd299('0x41')]);_0x3cc71f[_0xd299('0x46')]=_[_0xd299('0x44')](_0x30d1ab[_0xd299('0x40')],qs[_0xd299('0x45')](_0x313ba3[_0xd299('0x41')][_0xd299('0x45')]));_0x3cc71f[_0xd299('0x46')]=_0x3cc71f[_0xd299('0x46')][_0xd299('0x54')]?_0x3cc71f[_0xd299('0x46')]:_0x30d1ab[_0xd299('0x40')];if(!_0x313ba3['query'][_0xd299('0x47')]('nolimit')){_0x3cc71f['limit']=qs[_0xd299('0x25')](_0x313ba3[_0xd299('0x41')][_0xd299('0x25')]);_0x3cc71f[_0xd299('0x23')]=qs['offset'](_0x313ba3[_0xd299('0x41')][_0xd299('0x23')]);}_0x3cc71f[_0xd299('0x66')]=qs['sort'](_0x313ba3[_0xd299('0x41')][_0xd299('0x67')]);_0x3cc71f[_0xd299('0x48')]=qs[_0xd299('0x43')](_[_0xd299('0x49')](_0x313ba3[_0xd299('0x41')],_0x30d1ab['filters']));_0x3cc71f['where'][_0xd299('0x68')]=_0x2de4ce['id'];if(_0x313ba3[_0xd299('0x41')][_0xd299('0x32')]){_0x3cc71f[_0xd299('0x48')]=_['merge'](_0x3cc71f[_0xd299('0x48')],{'$or':_[_0xd299('0x33')](_0x3cc71f[_0xd299('0x46')],function(_0x107767){var _0x2927f7={};_0x2927f7[_0x107767]={'$like':'%'+_0x313ba3[_0xd299('0x41')][_0xd299('0x32')]+'%'};return _0x2927f7;})});}_0x3cc71f=_[_0xd299('0x4a')]({},_0x3cc71f,_0x313ba3[_0xd299('0x4b')]);return db[_0xd299('0x65')]['count']({'where':_0x3cc71f[_0xd299('0x48')]})[_0xd299('0x2d')](function(_0x234a45){_0x56a255['count']=_0x234a45;if(_0x313ba3[_0xd299('0x41')][_0xd299('0x4d')]){_0x3cc71f[_0xd299('0x4e')]=[{'all':!![]}];}return db['CmHopper'][_0xd299('0x4f')](_0x3cc71f);})[_0xd299('0x2d')](function(_0x42ac8b){_0x56a255[_0xd299('0x50')]=_0x42ac8b;return _0x56a255;});}})['then'](respondWithFilteredResult(_0x2dcc07,_0x3cc71f))['catch'](handleError(_0x2dcc07,null));};exports['getHopperHistories']=function(_0x23057d,_0x3e1d22,_0x201851){var _0xb51cb2={'raw':!![],'where':{}};var _0x116a02={};var _0x26ec95={'count':0x0,'rows':[]};return db[_0xd299('0x4c')]['findOne']({'where':{'id':_0x23057d['params']['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x3e1d22,null))['then'](function(_0x4183cb){if(_0x4183cb){_0x116a02[_0xd299('0x40')]=_[_0xd299('0x42')](db[_0xd299('0x69')][_0xd299('0x3e')]);_0x116a02[_0xd299('0x41')]=_[_0xd299('0x42')](_0x23057d['query']);_0x116a02[_0xd299('0x43')]=_[_0xd299('0x44')](_0x116a02['model'],_0x116a02[_0xd299('0x41')]);_0xb51cb2['attributes']=_[_0xd299('0x44')](_0x116a02[_0xd299('0x40')],qs[_0xd299('0x45')](_0x23057d[_0xd299('0x41')][_0xd299('0x45')]));_0xb51cb2[_0xd299('0x46')]=_0xb51cb2[_0xd299('0x46')][_0xd299('0x54')]?_0xb51cb2[_0xd299('0x46')]:_0x116a02[_0xd299('0x40')];if(!_0x23057d[_0xd299('0x41')][_0xd299('0x47')](_0xd299('0x6a'))){_0xb51cb2[_0xd299('0x25')]=qs[_0xd299('0x25')](_0x23057d[_0xd299('0x41')][_0xd299('0x25')]);_0xb51cb2['offset']=qs[_0xd299('0x23')](_0x23057d['query'][_0xd299('0x23')]);}_0xb51cb2['order']=qs['sort'](_0x23057d[_0xd299('0x41')][_0xd299('0x67')]);_0xb51cb2[_0xd299('0x48')]=qs[_0xd299('0x43')](_[_0xd299('0x49')](_0x23057d[_0xd299('0x41')],_0x116a02[_0xd299('0x43')]));_0xb51cb2[_0xd299('0x48')][_0xd299('0x68')]=_0x4183cb['id'];if(_0x23057d[_0xd299('0x41')][_0xd299('0x32')]){_0xb51cb2['where']=_['merge'](_0xb51cb2[_0xd299('0x48')],{'$or':_[_0xd299('0x33')](_0xb51cb2[_0xd299('0x46')],function(_0xddfed5){var _0x4db8ac={};_0x4db8ac[_0xddfed5]={'$like':'%'+_0x23057d[_0xd299('0x41')][_0xd299('0x32')]+'%'};return _0x4db8ac;})});}_0xb51cb2=_['merge']({},_0xb51cb2,_0x23057d[_0xd299('0x4b')]);return db['CmHopperHistory'][_0xd299('0x26')]({'where':_0xb51cb2['where']})[_0xd299('0x2d')](function(_0x1b34cc){_0x26ec95[_0xd299('0x26')]=_0x1b34cc;if(_0x23057d['query'][_0xd299('0x4d')]){_0xb51cb2['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0xd299('0x4f')](_0xb51cb2);})[_0xd299('0x2d')](function(_0x580fce){_0x26ec95[_0xd299('0x50')]=_0x580fce;return _0x26ec95;});}})['then'](respondWithFilteredResult(_0x3e1d22,_0xb51cb2))[_0xd299('0x51')](handleError(_0x3e1d22,null));};exports['getHopperFinals']=function(_0x31d128,_0x49a6ab,_0x5aed56){var _0x2f1087={'raw':!![],'where':{}};var _0x1b9c9d={};var _0x3fc99e={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xd299('0x64')]({'where':{'id':_0x31d128['params']['id']}})['then'](handleEntityNotFound(_0x49a6ab,null))['then'](function(_0xfd5640){if(_0xfd5640){_0x1b9c9d['model']=_['keys'](db[_0xd299('0x6b')][_0xd299('0x3e')]);_0x1b9c9d[_0xd299('0x41')]=_[_0xd299('0x42')](_0x31d128['query']);_0x1b9c9d['filters']=_[_0xd299('0x44')](_0x1b9c9d[_0xd299('0x40')],_0x1b9c9d['query']);_0x2f1087[_0xd299('0x46')]=_[_0xd299('0x44')](_0x1b9c9d[_0xd299('0x40')],qs[_0xd299('0x45')](_0x31d128['query'][_0xd299('0x45')]));_0x2f1087['attributes']=_0x2f1087[_0xd299('0x46')]['length']?_0x2f1087['attributes']:_0x1b9c9d[_0xd299('0x40')];if(!_0x31d128[_0xd299('0x41')]['hasOwnProperty'](_0xd299('0x6a'))){_0x2f1087['limit']=qs['limit'](_0x31d128[_0xd299('0x41')][_0xd299('0x25')]);_0x2f1087['offset']=qs[_0xd299('0x23')](_0x31d128['query']['offset']);}_0x2f1087[_0xd299('0x66')]=qs[_0xd299('0x67')](_0x31d128['query'][_0xd299('0x67')]);_0x2f1087[_0xd299('0x48')]=qs['filters'](_[_0xd299('0x49')](_0x31d128['query'],_0x1b9c9d[_0xd299('0x43')]));_0x2f1087['where'][_0xd299('0x68')]=_0xfd5640['id'];if(_0x31d128['query']['filter']){_0x2f1087[_0xd299('0x48')]=_[_0xd299('0x4a')](_0x2f1087[_0xd299('0x48')],{'$or':_[_0xd299('0x33')](_0x2f1087[_0xd299('0x46')],function(_0x4130c9){var _0x57a16c={};_0x57a16c[_0x4130c9]={'$like':'%'+_0x31d128['query'][_0xd299('0x32')]+'%'};return _0x57a16c;})});}_0x2f1087=_[_0xd299('0x4a')]({},_0x2f1087,_0x31d128['options']);return db['CmHopperFinal'][_0xd299('0x26')]({'where':_0x2f1087['where']})['then'](function(_0x6041c){_0x3fc99e[_0xd299('0x26')]=_0x6041c;if(_0x31d128[_0xd299('0x41')][_0xd299('0x4d')]){_0x2f1087[_0xd299('0x4e')]=[{'all':!![]}];}return db[_0xd299('0x6b')][_0xd299('0x4f')](_0x2f1087);})[_0xd299('0x2d')](function(_0x54a089){_0x3fc99e[_0xd299('0x50')]=_0x54a089;return _0x3fc99e;});}})[_0xd299('0x2d')](respondWithFilteredResult(_0x49a6ab,_0x2f1087))[_0xd299('0x51')](handleError(_0x49a6ab,null));};exports[_0xd299('0x6c')]=function(_0x6d01dd,_0x331536,_0x14783b){var _0xdf9a98={'raw':!![],'where':{}};var _0x9a4279={};var _0x3854d4={'count':0x0,'rows':[]};return db[_0xd299('0x4c')][_0xd299('0x64')]({'where':{'id':_0x6d01dd[_0xd299('0x53')]['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x331536,null))[_0xd299('0x2d')](function(_0x4f48d3){if(_0x4f48d3){_0x9a4279[_0xd299('0x40')]=_[_0xd299('0x42')](db['CmHopperBlack'][_0xd299('0x3e')]);_0x9a4279[_0xd299('0x41')]=_['keys'](_0x6d01dd['query']);_0x9a4279[_0xd299('0x43')]=_[_0xd299('0x44')](_0x9a4279[_0xd299('0x40')],_0x9a4279[_0xd299('0x41')]);_0xdf9a98[_0xd299('0x46')]=_[_0xd299('0x44')](_0x9a4279[_0xd299('0x40')],qs[_0xd299('0x45')](_0x6d01dd[_0xd299('0x41')][_0xd299('0x45')]));_0xdf9a98[_0xd299('0x46')]=_0xdf9a98[_0xd299('0x46')][_0xd299('0x54')]?_0xdf9a98['attributes']:_0x9a4279['model'];if(!_0x6d01dd['query'][_0xd299('0x47')]('nolimit')){_0xdf9a98[_0xd299('0x25')]=qs['limit'](_0x6d01dd[_0xd299('0x41')][_0xd299('0x25')]);_0xdf9a98[_0xd299('0x23')]=qs['offset'](_0x6d01dd[_0xd299('0x41')][_0xd299('0x23')]);}_0xdf9a98[_0xd299('0x66')]=qs[_0xd299('0x67')](_0x6d01dd[_0xd299('0x41')][_0xd299('0x67')]);_0xdf9a98[_0xd299('0x48')]=qs[_0xd299('0x43')](_['pick'](_0x6d01dd[_0xd299('0x41')],_0x9a4279[_0xd299('0x43')]));_0xdf9a98[_0xd299('0x48')][_0xd299('0x68')]=_0x4f48d3['id'];if(_0x6d01dd[_0xd299('0x41')][_0xd299('0x32')]){_0xdf9a98['where']=_[_0xd299('0x4a')](_0xdf9a98[_0xd299('0x48')],{'$or':_[_0xd299('0x33')](_0xdf9a98[_0xd299('0x46')],function(_0x37cfde){var _0x5ae871={};_0x5ae871[_0x37cfde]={'$like':'%'+_0x6d01dd[_0xd299('0x41')]['filter']+'%'};return _0x5ae871;})});}_0xdf9a98=_[_0xd299('0x4a')]({},_0xdf9a98,_0x6d01dd[_0xd299('0x4b')]);return db[_0xd299('0x6d')][_0xd299('0x26')]({'where':_0xdf9a98[_0xd299('0x48')]})[_0xd299('0x2d')](function(_0x51ea6c){_0x3854d4[_0xd299('0x26')]=_0x51ea6c;if(_0x6d01dd['query']['includeAll']){_0xdf9a98['include']=[{'all':!![]}];}return db['CmHopperBlack'][_0xd299('0x4f')](_0xdf9a98);})[_0xd299('0x2d')](function(_0x38c555){_0x3854d4['rows']=_0x38c555;return _0x3854d4;});}})['then'](respondWithFilteredResult(_0x331536,_0xdf9a98))[_0xd299('0x51')](handleError(_0x331536,null));};exports[_0xd299('0x6e')]=function(_0x90575f,_0x160798,_0x370dfc){var _0x358646={};var _0x1ec118={};var _0x1e9cca;var _0x21bc18;return db[_0xd299('0x4c')][_0xd299('0x64')]({'where':{'id':_0x90575f[_0xd299('0x53')]['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x160798,null))[_0xd299('0x2d')](function(_0x381fa5){if(_0x381fa5){_0x1e9cca=_0x381fa5;_0x1ec118[_0xd299('0x40')]=_[_0xd299('0x42')](db['Team'][_0xd299('0x3e')]);_0x1ec118[_0xd299('0x41')]=_['keys'](_0x90575f[_0xd299('0x41')]);_0x1ec118[_0xd299('0x43')]=_[_0xd299('0x44')](_0x1ec118[_0xd299('0x40')],_0x1ec118[_0xd299('0x41')]);_0x358646[_0xd299('0x46')]=_['intersection'](_0x1ec118['model'],qs[_0xd299('0x45')](_0x90575f['query']['fields']));_0x358646['attributes']=_0x358646[_0xd299('0x46')]['length']?_0x358646[_0xd299('0x46')]:_0x1ec118[_0xd299('0x40')];_0x358646[_0xd299('0x66')]=qs[_0xd299('0x67')](_0x90575f['query'][_0xd299('0x67')]);_0x358646['where']=qs['filters'](_[_0xd299('0x49')](_0x90575f[_0xd299('0x41')],_0x1ec118['filters']));if(_0x90575f[_0xd299('0x41')]['filter']){_0x358646[_0xd299('0x48')]=_[_0xd299('0x4a')](_0x358646[_0xd299('0x48')],{'$or':_[_0xd299('0x33')](_0x358646['attributes'],function(_0x25740d){var _0x5cb6cb={};_0x5cb6cb[_0x25740d]={'$like':'%'+_0x90575f[_0xd299('0x41')][_0xd299('0x32')]+'%'};return _0x5cb6cb;})});}_0x358646=_[_0xd299('0x4a')]({},_0x358646,_0x90575f[_0xd299('0x4b')]);return _0x1e9cca[_0xd299('0x6e')](_0x358646);}})[_0xd299('0x2d')](function(_0x5d4cae){if(_0x5d4cae){_0x21bc18=_0x5d4cae['length'];if(!_0x90575f[_0xd299('0x41')][_0xd299('0x47')](_0xd299('0x6a'))){_0x358646[_0xd299('0x25')]=qs['limit'](_0x90575f[_0xd299('0x41')][_0xd299('0x25')]);_0x358646[_0xd299('0x23')]=qs[_0xd299('0x23')](_0x90575f[_0xd299('0x41')][_0xd299('0x23')]);}return _0x1e9cca['getTeams'](_0x358646);}})[_0xd299('0x2d')](function(_0x25ac87){if(_0x25ac87){return _0x25ac87?{'count':_0x21bc18,'rows':_0x25ac87}:null;}})['then'](respondWithResult(_0x160798,null))[_0xd299('0x51')](handleError(_0x160798,null));};exports[_0xd299('0x6f')]=function(_0x9b3d34,_0x563ff8,_0x1e4079){var _0x14a2b6=_0x9b3d34[_0xd299('0x60')][_0xd299('0x70')];var _0x5ca2ba=_[_0xd299('0x33')](_0x14a2b6,'id');return db[_0xd299('0x71')][_0xd299('0x4f')]({'where':{'id':_0x5ca2ba},'attributes':['id'],'include':[{'model':db[_0xd299('0x72')],'as':'Agents','attributes':['id',_0xd299('0x38'),_0xd299('0x73'),_0xd299('0x74'),_0xd299('0x75')],'raw':!![]}]})[_0xd299('0x2d')](function(_0x3af705){if(_0x3af705){var _0x7e799d=_[_0xd299('0x76')](_0x3af705,function(_0x2736c9){var _0x1adef0=_0x2736c9[_0xd299('0x2f')]({'plain':!![]});_0x1adef0[_0xd299('0x77')][_0xd299('0x78')](function(_0x23b2d5){_0x23b2d5[_0xd299('0x79')]=_[_0xd299('0x37')](_0x14a2b6,{'id':_0x1adef0['id']})[_0xd299('0x79')];});return _0x1adef0[_0xd299('0x77')];});return db[_0xd299('0x4c')][_0xd299('0x37')]({'where':{'id':_0x9b3d34['params']['id']}})['then'](function(_0x4bc220){return db[_0xd299('0x7a')][_0xd299('0x7b')](function(_0xb8b2ba){return _0x4bc220[_0xd299('0x6f')](_0x5ca2ba,{'transaction':_0xb8b2ba})['then'](function(){return BPromise[_0xd299('0x7c')](_0x14a2b6,function(_0x58a4be){return db[_0xd299('0x7d')][_0xd299('0x7e')]({'TeamId':_0x58a4be['id'],'VoiceQueueId':_0x9b3d34[_0xd299('0x53')]['id'],'penalty':_0x58a4be[_0xd299('0x79')]},{'transaction':_0xb8b2ba});});})[_0xd299('0x2d')](function(){return BPromise['each'](_0x7e799d,function(_0x51a929){return db[_0xd299('0x7f')][_0xd299('0x80')]({'where':{'UserId':_0x51a929['id'],'VoiceQueueId':_0x9b3d34[_0xd299('0x53')]['id']},'defaults':{'penalty':_0x51a929['penalty']},'transaction':_0xb8b2ba});});})['then'](function(){return BPromise[_0xd299('0x7c')](_[_0xd299('0x32')](_0x7e799d,{'online':!![]}),function(_0x40e342){return db[_0xd299('0x81')][_0xd299('0x7e')]({'membername':_0x40e342['name'],'UserId':_0x40e342['id'],'queue_name':_0x4bc220[_0xd299('0x38')],'VoiceQueueId':_0x4bc220['id'],'interface':_[_0xd299('0x82')](_0x40e342[_0xd299('0x75')])?util['format'](_0xd299('0x83'),_0x40e342[_0xd299('0x38')]):_0x40e342[_0xd299('0x75')],'paused':_0x40e342[_0xd299('0x74')]||![],'penalty':_0x40e342['penalty']},{'transaction':_0xb8b2ba});});})[_0xd299('0x2d')](function(){_0x7e799d[_0xd299('0x78')](function(_0x194fc0){socket[_0xd299('0x84')](_0xd299('0x85'),{'UserId':_0x194fc0['id'],'VoiceQueueId':_0x4bc220['id']});});});});});}})['then'](respondWithStatusCode(_0x563ff8,null))[_0xd299('0x51')](handleError(_0x563ff8,null));};exports[_0xd299('0x86')]=function(_0x58c33e,_0x38bc19,_0x205397){return db[_0xd299('0x71')][_0xd299('0x4f')]({'where':{'id':_0x58c33e[_0xd299('0x41')][_0xd299('0x87')]},'attributes':['id'],'include':[{'model':db[_0xd299('0x72')],'as':_0xd299('0x77'),'attributes':['id'],'raw':!![]}]})[_0xd299('0x2d')](handleEntityNotFound(_0x38bc19,null))[_0xd299('0x2d')](function(_0xfd52f0){var _0x38813=_['map'](_0xfd52f0,'id');var _0xbedf87=[];var _0xb63d09=[];var _0x205631=squel[_0xd299('0x88')]();_0x205631[_0xd299('0x89')](_0xd299('0x8a'))[_0xd299('0x8b')]('team_has_voice_queues','tq')[_0xd299('0x8c')](_0xd299('0x8d'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xd299('0x48')](_0xd299('0x8e'),_0x58c33e[_0xd299('0x53')]['id']);for(var _0x50ca9b=0x0;_0x50ca9b<_0xfd52f0[_0xd299('0x54')];_0x50ca9b+=0x1){let _0x58c052=_0xfd52f0[_0x50ca9b];for(var _0x436e75=0x0;_0x436e75<_0x58c052[_0xd299('0x77')][_0xd299('0x54')];_0x436e75+=0x1){let _0x18c9b4=_0x58c052['Agents'][_0x436e75];var _0x6622a=_0x205631[_0xd299('0x5c')]();_0x6622a['where'](_0xd299('0x8f'),_0x18c9b4['id']);_0xb63d09[_0xd299('0x90')](db['sequelize'][_0xd299('0x41')](_0x6622a[_0xd299('0x91')](),{'type':db[_0xd299('0x7a')][_0xd299('0x92')][_0xd299('0x93')]})['then'](function(_0xb917f1){if(_0xb917f1[_0xd299('0x54')]===0x1){return _0x18c9b4['id'];}else{var _0x440964=_[_0xd299('0x94')](_[_0xd299('0x33')](_0xb917f1,_0xd299('0x95')),function(_0x4b6c66){return _[_0xd299('0x35')](_0x38813,_0x4b6c66);});if(_0x440964){return _0x18c9b4['id'];}}}));}}return BPromise[_0xd299('0x96')](_0xb63d09)['then'](function(_0x2fd756){_0xbedf87=_(_0xbedf87)[_0xd299('0x97')](_0x2fd756)[_0xd299('0x98')]()[_0xd299('0x34')]();return db['VoiceQueue']['find']({'where':{'id':_0x58c33e['params']['id']}})[_0xd299('0x2d')](function(_0x387718){return db[_0xd299('0x7a')]['transaction'](function(_0x57217f){return _0x387718[_0xd299('0x86')](_0x58c33e[_0xd299('0x41')][_0xd299('0x87')],{'transaction':_0x57217f})[_0xd299('0x2d')](function(){if(!_['isEmpty'](_0xbedf87)){return _0x387718[_0xd299('0x99')](_0xbedf87,{'transaction':_0x57217f})['then'](function(){return db[_0xd299('0x81')][_0xd299('0x2e')]({'where':{'VoiceQueueId':_0x58c33e[_0xd299('0x53')]['id'],'UserId':_0xbedf87},'transaction':_0x57217f});});}})[_0xd299('0x2d')](function(){_0xbedf87[_0xd299('0x78')](function(_0x339dde){socket[_0xd299('0x84')](_0xd299('0x9a'),{'UserId':_0x339dde,'VoiceQueueId':_0x387718['id']});});});});});});})[_0xd299('0x2d')](respondWithStatusCode(_0x38bc19,null))['catch'](handleError(_0x38bc19,null));};exports[_0xd299('0x9b')]=function(_0x5339bc,_0x454d1d,_0x1bc77e){var _0x560643,_0x5719c3;return db[_0xd299('0x4c')][_0xd299('0x37')]({'where':{'id':_0x5339bc[_0xd299('0x53')]['id']}})['then'](handleEntityNotFound(_0x454d1d,null))[_0xd299('0x2d')](function(_0x508b45){if(_0x508b45){_0x5719c3=_0x508b45;return _0x508b45[_0xd299('0x9b')](_0x5339bc[_0xd299('0x60')]['ids'],_[_0xd299('0x5d')](_0x5339bc['body'],[_0xd299('0x87'),'id'])||{})[_0xd299('0x9c')](function(_0x11113e){for(var _0x5b3ede=0x0;_0x5b3ede<_0x5339bc['body']['ids'][_0xd299('0x54')];_0x5b3ede+=0x1){socket[_0xd299('0x84')](_0xd299('0x85'),{'UserId':Number(_0x5339bc[_0xd299('0x60')][_0xd299('0x87')][_0x5b3ede]),'VoiceQueueId':Number(_0x5339bc[_0xd299('0x53')]['id'])});}return _0x11113e;});}})[_0xd299('0x2d')](function(_0x2e735f){_0x560643=_0x2e735f||[];if(_0x5719c3){return db[_0xd299('0x72')][_0xd299('0x4f')]({'where':{'id':_0x5339bc['body'][_0xd299('0x87')]},'attributes':['id','name',_0xd299('0x73'),'voicePause',_0xd299('0x75')],'raw':!![]});}})[_0xd299('0x2d')](function(_0x36470f){if(!_[_0xd299('0x9d')](_0x36470f)){var _0x3ba6e0=[];for(var _0x23fde5=0x0;_0x23fde5<_0x36470f[_0xd299('0x54')];_0x23fde5++){if(_0x36470f[_0x23fde5]['online']){_0x3ba6e0[_0xd299('0x90')](db[_0xd299('0x81')][_0xd299('0x7e')]({'membername':_0x36470f[_0x23fde5][_0xd299('0x38')],'UserId':_0x36470f[_0x23fde5]['id'],'queue_name':_0x5719c3[_0xd299('0x38')],'VoiceQueueId':_0x5719c3['id'],'interface':_[_0xd299('0x82')](_0x36470f[_0x23fde5][_0xd299('0x75')])?util[_0xd299('0x9e')](_0xd299('0x83'),_0x36470f[_0x23fde5][_0xd299('0x38')]):_0x36470f[_0x23fde5][_0xd299('0x75')],'paused':_0x36470f[_0x23fde5][_0xd299('0x74')]||![],'penalty':_0x5339bc[_0xd299('0x60')][_0xd299('0x79')]||0x0}));}}return BPromise[_0xd299('0x96')](_0x3ba6e0);}})[_0xd299('0x2d')](function(){return _0x560643;})[_0xd299('0x2d')](respondWithResult(_0x454d1d,null))[_0xd299('0x51')](handleError(_0x454d1d,null));};exports[_0xd299('0x99')]=function(_0x2f7d69,_0x59f7cd,_0x1f59b0){return db['VoiceQueue'][_0xd299('0x37')]({'where':{'id':_0x2f7d69[_0xd299('0x53')]['id']}})['then'](handleEntityNotFound(_0x59f7cd,null))[_0xd299('0x2d')](function(_0x802ad){if(_0x802ad){return _0x802ad[_0xd299('0x99')](_0x2f7d69[_0xd299('0x41')]['ids'])[_0xd299('0x2d')](function(){if(_[_0xd299('0x9f')](_0x2f7d69[_0xd299('0x41')][_0xd299('0x87')])){for(var _0x3c290a=0x0;_0x3c290a<_0x2f7d69[_0xd299('0x41')][_0xd299('0x87')]['length'];_0x3c290a+=0x1){socket[_0xd299('0x84')](_0xd299('0x9a'),{'UserId':Number(_0x2f7d69[_0xd299('0x41')][_0xd299('0x87')][_0x3c290a]),'VoiceQueueId':Number(_0x2f7d69['params']['id'])});}}else{socket[_0xd299('0x84')](_0xd299('0x9a'),{'UserId':Number(_0x2f7d69['query'][_0xd299('0x87')]),'VoiceQueueId':Number(_0x2f7d69[_0xd299('0x53')]['id'])});}});}})[_0xd299('0x2d')](function(_0x2820a6){return db['UserVoiceQueueRt'][_0xd299('0x2e')]({'where':{'VoiceQueueId':_0x2f7d69['params']['id'],'UserId':_0x2f7d69['query'][_0xd299('0x87')]}})[_0xd299('0x2d')](function(){return _0x2820a6;});})[_0xd299('0x2d')](respondWithStatusCode(_0x59f7cd,null))['catch'](handleError(_0x59f7cd,null));};exports[_0xd299('0xa0')]=function(_0x5910c7,_0xf659a2,_0x39d4b6){var _0x2a33dd={};var _0x45a86a={};var _0x2a79db;var _0x138cff;return db[_0xd299('0x4c')]['findOne']({'where':{'id':_0x5910c7['params']['id']}})['then'](handleEntityNotFound(_0xf659a2,null))[_0xd299('0x2d')](function(_0x5826dd){if(_0x5826dd){_0x2a79db=_0x5826dd;_0x45a86a[_0xd299('0x40')]=_[_0xd299('0x42')](db[_0xd299('0x72')][_0xd299('0x3e')]);_0x45a86a['query']=_['keys'](_0x5910c7['query']);_0x45a86a[_0xd299('0x43')]=_['intersection'](_0x45a86a['model'],_0x45a86a[_0xd299('0x41')]);_0x2a33dd[_0xd299('0x46')]=_[_0xd299('0x44')](_0x45a86a[_0xd299('0x40')],qs['fields'](_0x5910c7['query'][_0xd299('0x45')]));_0x2a33dd[_0xd299('0x46')]=_0x2a33dd['attributes'][_0xd299('0x54')]?_0x2a33dd['attributes']:_0x45a86a[_0xd299('0x40')];_0x2a33dd[_0xd299('0x66')]=qs[_0xd299('0x67')](_0x5910c7['query'][_0xd299('0x67')]);_0x2a33dd[_0xd299('0x48')]=qs[_0xd299('0x43')](_[_0xd299('0x49')](_0x5910c7[_0xd299('0x41')],_0x45a86a[_0xd299('0x43')]));if(_0x5910c7[_0xd299('0x41')]['filter']){_0x2a33dd[_0xd299('0x48')]=_[_0xd299('0x4a')](_0x2a33dd['where'],{'$or':_[_0xd299('0x33')](_0x2a33dd['attributes'],function(_0x1c2629){var _0x24dcd9={};_0x24dcd9[_0x1c2629]={'$like':'%'+_0x5910c7[_0xd299('0x41')][_0xd299('0x32')]+'%'};return _0x24dcd9;})});}_0x2a33dd=_[_0xd299('0x4a')]({},_0x2a33dd,_0x5910c7[_0xd299('0x4b')]);return _0x2a79db[_0xd299('0xa0')](_0x2a33dd);}})[_0xd299('0x2d')](function(_0x13b8cd){if(_0x13b8cd){_0x138cff=_0x13b8cd['length'];if(!_0x5910c7['query'][_0xd299('0x47')](_0xd299('0x6a'))){_0x2a33dd[_0xd299('0x25')]=qs[_0xd299('0x25')](_0x5910c7[_0xd299('0x41')][_0xd299('0x25')]);_0x2a33dd[_0xd299('0x23')]=qs['offset'](_0x5910c7[_0xd299('0x41')][_0xd299('0x23')]);}return _0x2a79db[_0xd299('0xa0')](_0x2a33dd);}})[_0xd299('0x2d')](function(_0x3c3c6e){if(_0x3c3c6e){return _0x3c3c6e?{'count':_0x138cff,'rows':_0x3c3c6e}:null;}})[_0xd299('0x2d')](respondWithResult(_0xf659a2,null))[_0xd299('0x51')](handleError(_0xf659a2,null));};exports['getMembers']=function(_0x877415,_0x8d9411,_0x4aed1e){var _0x180254={};var _0x4ba51c={};var _0x3f4afc;var _0x1a59bf;return db[_0xd299('0x4c')][_0xd299('0x64')]({'where':{'id':_0x877415['params']['id']}})['then'](handleEntityNotFound(_0x8d9411,null))[_0xd299('0x2d')](function(_0x1745ba){if(_0x1745ba){_0x3f4afc=_0x1745ba;_0x4ba51c[_0xd299('0x40')]=_['keys'](db[_0xd299('0x81')][_0xd299('0x3e')]);_0x4ba51c[_0xd299('0x41')]=_[_0xd299('0x42')](_0x877415[_0xd299('0x41')]);_0x4ba51c['filters']=_[_0xd299('0x44')](_0x4ba51c[_0xd299('0x40')],_0x4ba51c[_0xd299('0x41')]);_0x180254[_0xd299('0x46')]=_['intersection'](_0x4ba51c[_0xd299('0x40')],qs['fields'](_0x877415[_0xd299('0x41')]['fields']));_0x180254[_0xd299('0x46')]=_0x180254[_0xd299('0x46')][_0xd299('0x54')]?_0x180254[_0xd299('0x46')]:_0x4ba51c['model'];_0x180254[_0xd299('0x66')]=qs['sort'](_0x877415[_0xd299('0x41')][_0xd299('0x67')]);_0x180254['where']=qs['filters'](_[_0xd299('0x49')](_0x877415[_0xd299('0x41')],_0x4ba51c[_0xd299('0x43')]));if(_0x877415[_0xd299('0x41')][_0xd299('0x32')]){_0x180254['where']=_[_0xd299('0x4a')](_0x180254['where'],{'$or':_[_0xd299('0x33')](_0x180254[_0xd299('0x46')],function(_0x2bf10a){var _0x2c8995={};_0x2c8995[_0x2bf10a]={'$like':'%'+_0x877415[_0xd299('0x41')][_0xd299('0x32')]+'%'};return _0x2c8995;})});}_0x180254=_[_0xd299('0x4a')]({},_0x180254,_0x877415[_0xd299('0x4b')]);return _0x3f4afc[_0xd299('0xa1')](_0x180254);}})[_0xd299('0x2d')](function(_0x1af95e){if(_0x1af95e){_0x1a59bf=_0x1af95e[_0xd299('0x54')];if(!_0x877415[_0xd299('0x41')][_0xd299('0x47')](_0xd299('0x6a'))){_0x180254['limit']=qs[_0xd299('0x25')](_0x877415[_0xd299('0x41')]['limit']);_0x180254[_0xd299('0x23')]=qs[_0xd299('0x23')](_0x877415[_0xd299('0x41')][_0xd299('0x23')]);}return _0x3f4afc[_0xd299('0xa1')](_0x180254);}})[_0xd299('0x2d')](function(_0x4fb123){return _0x4fb123?{'count':_0x1a59bf,'rows':_0x4fb123}:null;})['then'](respondWithResult(_0x8d9411,null))[_0xd299('0x51')](handleError(_0x8d9411,null));};exports[_0xd299('0xa2')]=function(_0x4fb244,_0x5951d9,_0x131265){var _0x1b6bef={};var _0x11073f={};var _0x46577e;var _0x50f313;return db['VoiceQueue'][_0xd299('0x64')]({'where':{'id':_0x4fb244[_0xd299('0x53')]['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x5951d9,null))[_0xd299('0x2d')](function(_0x44afc8){if(_0x44afc8){_0x46577e=_0x44afc8;_0x11073f[_0xd299('0x40')]=_[_0xd299('0x42')](db[_0xd299('0xa3')][_0xd299('0x3e')]);_0x11073f[_0xd299('0x41')]=_[_0xd299('0x42')](_0x4fb244[_0xd299('0x41')]);_0x11073f[_0xd299('0x43')]=_[_0xd299('0x44')](_0x11073f[_0xd299('0x40')],_0x11073f['query']);_0x1b6bef[_0xd299('0x46')]=_[_0xd299('0x44')](_0x11073f[_0xd299('0x40')],qs[_0xd299('0x45')](_0x4fb244['query'][_0xd299('0x45')]));_0x1b6bef[_0xd299('0x46')]=_0x1b6bef[_0xd299('0x46')][_0xd299('0x54')]?_0x1b6bef['attributes']:_0x11073f[_0xd299('0x40')];_0x1b6bef[_0xd299('0x66')]=qs[_0xd299('0x67')](_0x4fb244[_0xd299('0x41')][_0xd299('0x67')]);_0x1b6bef[_0xd299('0x48')]=qs[_0xd299('0x43')](_['pick'](_0x4fb244[_0xd299('0x41')],_0x11073f[_0xd299('0x43')]));if(_0x4fb244[_0xd299('0x41')][_0xd299('0x32')]){_0x1b6bef[_0xd299('0x48')]=_['merge'](_0x1b6bef[_0xd299('0x48')],{'$or':_['map'](_0x1b6bef[_0xd299('0x46')],function(_0x31bb8a){var _0x20a322={};_0x20a322[_0x31bb8a]={'$like':'%'+_0x4fb244['query']['filter']+'%'};return _0x20a322;})});}_0x1b6bef=_['merge']({},_0x1b6bef,_0x4fb244[_0xd299('0x4b')]);return _0x46577e[_0xd299('0xa2')](_0x1b6bef);}})['then'](function(_0x53f7e9){if(_0x53f7e9){_0x50f313=_0x53f7e9[_0xd299('0x54')];if(!_0x4fb244[_0xd299('0x41')][_0xd299('0x47')]('nolimit')){_0x1b6bef[_0xd299('0x25')]=qs['limit'](_0x4fb244[_0xd299('0x41')][_0xd299('0x25')]);_0x1b6bef[_0xd299('0x23')]=qs[_0xd299('0x23')](_0x4fb244[_0xd299('0x41')][_0xd299('0x23')]);}return _0x46577e[_0xd299('0xa2')](_0x1b6bef);}})[_0xd299('0x2d')](function(_0x164178){if(_0x164178){return _0x164178?{'count':_0x50f313,'rows':_0x164178}:null;}})[_0xd299('0x2d')](respondWithResult(_0x5951d9,null))[_0xd299('0x51')](handleError(_0x5951d9,null));};exports['addLists']=function(_0x27a4df,_0x3e2891,_0x4f9163){var _0x542a4d,_0x1a5e96;return db[_0xd299('0x4c')][_0xd299('0x37')]({'where':{'id':_0x27a4df[_0xd299('0x53')]['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x3e2891,null))[_0xd299('0x2d')](function(_0x3561b4){if(_0x3561b4){_0x1a5e96=_0x3561b4;return _0x3561b4[_0xd299('0xa4')](_0x27a4df['body'][_0xd299('0x87')],_['omit'](_0x27a4df[_0xd299('0x60')],['ids','id'])||{});}return null;})['spread'](function(_0x59a954){var _0x4e21fb;_0x542a4d=_0x59a954||[];var _0x6c5d15=[];if(_0x59a954){for(var _0x4c7072=0x0;_0x4c7072<_0x59a954[_0xd299('0x54')];_0x4c7072+=0x1){var _0x478c45=_0x59a954[_0x4c7072][_0xd299('0x2f')]({'plain':!![]});_0x1a5e96['dialCheckDuplicateType']=_0x27a4df[_0xd299('0x60')][_0xd299('0xa5')]?_0x27a4df[_0xd299('0x60')][_0xd299('0xa5')]:_0x1a5e96[_0xd299('0xa5')];switch(_0x1a5e96[_0xd299('0xa5')]){case'always':_0x4e21fb=squel[_0xd299('0xa6')]()['into'](_0xd299('0xa7'))[_0xd299('0xa8')]([_0xd299('0xa9'),_0xd299('0xaa'),_0xd299('0xab'),_0xd299('0xac'),'VoiceQueueId',_0xd299('0x5e'),'updatedAt'],squel['select']()[_0xd299('0x89')](_0xd299('0xa9'),'phone')['field'](_0xd299('0xad'),'scheduledAt')[_0xd299('0x89')]('id',_0xd299('0xab'))[_0xd299('0x89')](_0x478c45[_0xd299('0xae')][_0xd299('0x91')](),_0xd299('0xac'))[_0xd299('0x89')](_0x27a4df[_0xd299('0x53')]['id']['toString'](),_0xd299('0x68'))[_0xd299('0x89')](_0xd299('0xad'),_0xd299('0x5e'))[_0xd299('0x89')](_0xd299('0xad'),_0xd299('0x5f'))[_0xd299('0x8b')](_0xd299('0xaf'))[_0xd299('0x48')](_0xd299('0xb0'))[_0xd299('0x48')](_0xd299('0xb1'),_0x478c45[_0xd299('0xae')][_0xd299('0x91')]())['where']('phone\x20IS\x20NOT\x20NULL')[_0xd299('0x48')](_0xd299('0xb2'),squel[_0xd299('0x88')]()[_0xd299('0x89')](_0xd299('0xb3'))[_0xd299('0x8b')](_0xd299('0xb4'))[_0xd299('0x48')]('VoiceQueueId\x20=\x20?',_0x27a4df[_0xd299('0x53')]['id'][_0xd299('0x91')]()))[_0xd299('0x48')](_0xd299('0xb2'),squel[_0xd299('0x88')]()[_0xd299('0x89')](_0xd299('0xb5'))['from'](_0xd299('0xa7'))[_0xd299('0x48')](_0xd299('0x8e'),_0x27a4df['params']['id'][_0xd299('0x91')]())))['toString']();break;case'onlyIfOpen':_0x4e21fb=squel[_0xd299('0xa6')]()[_0xd299('0xb6')](_0xd299('0xa7'))[_0xd299('0xa8')]([_0xd299('0xa9'),_0xd299('0xaa'),_0xd299('0xab'),'ListId',_0xd299('0x68'),_0xd299('0x5e'),_0xd299('0x5f')],squel[_0xd299('0x88')]()['field'](_0xd299('0xa9'),_0xd299('0xa9'))[_0xd299('0x89')]('NOW()',_0xd299('0xaa'))[_0xd299('0x89')]('id',_0xd299('0xab'))[_0xd299('0x89')](_0x478c45[_0xd299('0xae')]['toString'](),_0xd299('0xac'))[_0xd299('0x89')](_0x27a4df[_0xd299('0x53')]['id'][_0xd299('0x91')](),_0xd299('0x68'))['field'](_0xd299('0xad'),_0xd299('0x5e'))['field'](_0xd299('0xad'),'updatedAt')[_0xd299('0x8b')](_0xd299('0xaf'))[_0xd299('0x48')](_0xd299('0xb0'))['where'](_0xd299('0xb1'),_0x478c45['CmListId']['toString']())['where']('phone\x20IS\x20NOT\x20NULL')[_0xd299('0x48')]('phone\x20NOT\x20IN\x20(?)',squel[_0xd299('0x88')]()[_0xd299('0x89')](_0xd299('0xb5'))[_0xd299('0x8b')](_0xd299('0xa7'))[_0xd299('0x48')](_0xd299('0x8e'),_0x27a4df['params']['id'][_0xd299('0x91')]())))[_0xd299('0x91')]();break;default:_0x4e21fb=squel[_0xd299('0xa6')]()[_0xd299('0xb6')](_0xd299('0xa7'))['fromQuery']([_0xd299('0xa9'),_0xd299('0xaa'),'ContactId',_0xd299('0xac'),'VoiceQueueId',_0xd299('0x5e'),_0xd299('0x5f')],squel[_0xd299('0x88')]()[_0xd299('0x89')]('phone',_0xd299('0xa9'))[_0xd299('0x89')](_0xd299('0xad'),_0xd299('0xaa'))[_0xd299('0x89')]('id','ContactId')[_0xd299('0x89')](_0x478c45[_0xd299('0xae')][_0xd299('0x91')](),_0xd299('0xac'))['field'](_0x27a4df['params']['id'][_0xd299('0x91')](),'VoiceQueueId')['field'](_0xd299('0xad'),_0xd299('0x5e'))[_0xd299('0x89')]('NOW()',_0xd299('0x5f'))[_0xd299('0x8b')](_0xd299('0xaf'))[_0xd299('0x48')](_0xd299('0xb0'))['where'](_0xd299('0xb1'),_0x478c45[_0xd299('0xae')][_0xd299('0x91')]())[_0xd299('0x48')](_0xd299('0xb7')))['toString']();}_0x6c5d15[_0xd299('0x90')](db[_0xd299('0x7a')][_0xd299('0x41')](_0x4e21fb));}return BPromise['all'](_0x6c5d15);}})[_0xd299('0x2d')](function(){return _0x542a4d;})[_0xd299('0x2d')](respondWithResult(_0x3e2891,null))[_0xd299('0x51')](handleError(_0x3e2891,null));};exports['removeLists']=function(_0x1e0648,_0x37f0be,_0x13443d){return db[_0xd299('0x4c')][_0xd299('0x37')]({'where':{'id':_0x1e0648[_0xd299('0x53')]['id']}})['then'](handleEntityNotFound(_0x37f0be,null))[_0xd299('0x2d')](function(_0x23e236){if(_0x23e236){return _0x23e236[_0xd299('0xb8')](_0x1e0648[_0xd299('0x41')][_0xd299('0x87')]);}})[_0xd299('0x2d')](function(_0x59699c){if(_0x59699c){return db[_0xd299('0x65')][_0xd299('0x2e')]({'where':{'ListId':_0x1e0648['query'][_0xd299('0x87')],'VoiceQueueId':_0x1e0648[_0xd299('0x53')]['id']}})[_0xd299('0x2d')](function(){return _0x59699c;});}})[_0xd299('0x2d')](respondWithStatusCode(_0x37f0be,null))[_0xd299('0x51')](handleError(_0x37f0be,null));};exports[_0xd299('0xb9')]=function(_0x13597f,_0x3f343e,_0x1ab38b){var _0x4fd665={};var _0x1153a0={};var _0x3549cf;var _0x24eed9;return db[_0xd299('0x4c')][_0xd299('0x64')]({'where':{'id':_0x13597f['params']['id']}})['then'](handleEntityNotFound(_0x3f343e,null))[_0xd299('0x2d')](function(_0x12aa05){if(_0x12aa05){_0x3549cf=_0x12aa05;_0x1153a0['model']=_[_0xd299('0x42')](db[_0xd299('0xa3')][_0xd299('0x3e')]);_0x1153a0['query']=_['keys'](_0x13597f[_0xd299('0x41')]);_0x1153a0[_0xd299('0x43')]=_[_0xd299('0x44')](_0x1153a0[_0xd299('0x40')],_0x1153a0[_0xd299('0x41')]);_0x4fd665['attributes']=_[_0xd299('0x44')](_0x1153a0[_0xd299('0x40')],qs[_0xd299('0x45')](_0x13597f[_0xd299('0x41')][_0xd299('0x45')]));_0x4fd665[_0xd299('0x46')]=_0x4fd665[_0xd299('0x46')]['length']?_0x4fd665['attributes']:_0x1153a0['model'];_0x4fd665[_0xd299('0x66')]=qs[_0xd299('0x67')](_0x13597f[_0xd299('0x41')][_0xd299('0x67')]);_0x4fd665[_0xd299('0x48')]=qs['filters'](_[_0xd299('0x49')](_0x13597f['query'],_0x1153a0[_0xd299('0x43')]));if(_0x13597f['query'][_0xd299('0x32')]){_0x4fd665[_0xd299('0x48')]=_[_0xd299('0x4a')](_0x4fd665[_0xd299('0x48')],{'$or':_[_0xd299('0x33')](_0x4fd665[_0xd299('0x46')],function(_0x2fdea0){var _0x116f4c={};_0x116f4c[_0x2fdea0]={'$like':'%'+_0x13597f['query']['filter']+'%'};return _0x116f4c;})});}_0x4fd665=_[_0xd299('0x4a')]({},_0x4fd665,_0x13597f[_0xd299('0x4b')]);return _0x3549cf[_0xd299('0xb9')](_0x4fd665);}})[_0xd299('0x2d')](function(_0x51d643){if(_0x51d643){_0x24eed9=_0x51d643[_0xd299('0x54')];if(!_0x13597f[_0xd299('0x41')]['hasOwnProperty'](_0xd299('0x6a'))){_0x4fd665['limit']=qs[_0xd299('0x25')](_0x13597f[_0xd299('0x41')][_0xd299('0x25')]);_0x4fd665['offset']=qs[_0xd299('0x23')](_0x13597f[_0xd299('0x41')][_0xd299('0x23')]);}return _0x3549cf[_0xd299('0xb9')](_0x4fd665);}})['then'](function(_0x4cb2e4){if(_0x4cb2e4){return _0x4cb2e4?{'count':_0x24eed9,'rows':_0x4cb2e4}:null;}})[_0xd299('0x2d')](respondWithResult(_0x3f343e,null))[_0xd299('0x51')](handleError(_0x3f343e,null));};exports[_0xd299('0xba')]=function(_0x4e4dee,_0x5664e9,_0x1389d4){var _0x3d95c9,_0x135c61;return db[_0xd299('0x4c')]['find']({'where':{'id':_0x4e4dee['params']['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x5664e9,null))[_0xd299('0x2d')](function(_0x3b1652){if(_0x3b1652){_0x135c61=_0x3b1652;return _0x3b1652[_0xd299('0xba')](_0x4e4dee[_0xd299('0x60')][_0xd299('0x87')],_[_0xd299('0x5d')](_0x4e4dee[_0xd299('0x60')],[_0xd299('0x87'),'id'])||{});}return null;})['spread'](function(_0x38b9e7){var _0x190c36;_0x3d95c9=_0x38b9e7||[];var _0x2c21f1=[];if(_0x38b9e7){for(var _0x6793b8=0x0;_0x6793b8<_0x38b9e7[_0xd299('0x54')];_0x6793b8+=0x1){var _0x426f0e=_0x38b9e7[_0x6793b8]['get']({'plain':!![]});_0x190c36=squel[_0xd299('0xa6')]()['into']('cm_hopper_black')[_0xd299('0xa8')](['phone',_0xd299('0xab'),_0xd299('0xac'),_0xd299('0x68'),_0xd299('0x5e'),_0xd299('0x5f')],squel[_0xd299('0x88')]()['field'](_0xd299('0xa9'),_0xd299('0xa9'))[_0xd299('0x89')]('id',_0xd299('0xab'))[_0xd299('0x89')](_0x426f0e[_0xd299('0xae')]['toString'](),'ListId')[_0xd299('0x89')](_0x4e4dee['params']['id'][_0xd299('0x91')](),_0xd299('0x68'))[_0xd299('0x89')]('NOW()','createdAt')['field'](_0xd299('0xad'),_0xd299('0x5f'))['from'](_0xd299('0xaf'))[_0xd299('0x48')](_0xd299('0xb0'))['where'](_0xd299('0xb1'),_0x426f0e['CmListId'][_0xd299('0x91')]())['where'](_0xd299('0xb7')))['toString']();_0x2c21f1['push'](db['sequelize'][_0xd299('0x41')](_0x190c36));}return BPromise[_0xd299('0x96')](_0x2c21f1);}})[_0xd299('0x2d')](function(){return _0x3d95c9;})[_0xd299('0x2d')](respondWithResult(_0x5664e9,null))[_0xd299('0x51')](handleError(_0x5664e9,null));};exports['removeBlackLists']=function(_0x49a6e2,_0x1615f4,_0x2aad51){return db[_0xd299('0x4c')][_0xd299('0x37')]({'where':{'id':_0x49a6e2[_0xd299('0x53')]['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x1615f4,null))[_0xd299('0x2d')](function(_0x3e9d53){if(_0x3e9d53){return _0x3e9d53[_0xd299('0xbb')](_0x49a6e2['query'][_0xd299('0x87')]);}})['then'](function(_0x5ae8a9){if(_0x5ae8a9){return db[_0xd299('0x6d')]['destroy']({'where':{'ListId':_0x49a6e2['query']['ids'],'VoiceQueueId':_0x49a6e2[_0xd299('0x53')]['id']}})['then'](function(){return _0x5ae8a9;});}})[_0xd299('0x2d')](respondWithStatusCode(_0x1615f4,null))[_0xd299('0x51')](handleError(_0x1615f4,null));};
\ No newline at end of file
index 79dba09..ce2461e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x642e=['update','remove','emit','events','../../mysqldb','VoiceQueue','setMaxListeners'];(function(_0x20c19a,_0x1c5b0d){var _0x52c637=function(_0x36cd00){while(--_0x36cd00){_0x20c19a['push'](_0x20c19a['shift']());}};_0x52c637(++_0x1c5b0d);}(_0x642e,0xab));var _0xe642=function(_0x21322e,_0x1a1ac2){_0x21322e=_0x21322e-0x0;var _0x35d589=_0x642e[_0x21322e];return _0x35d589;};'use strict';var EventEmitter=require(_0xe642('0x0'));var VoiceQueue=require(_0xe642('0x1'))['db'][_0xe642('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xe642('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xe642('0x4'),'afterDestroy':_0xe642('0x5')};function emitEvent(_0x36b26d){return function(_0x3817da,_0x1e2b4c,_0x4066d2){VoiceQueueEvents[_0xe642('0x6')](_0x36b26d+':'+_0x3817da['id'],_0x3817da);VoiceQueueEvents[_0xe642('0x6')](_0x36b26d,_0x3817da);_0x4066d2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
+var _0xd12c=['events','setMaxListeners','save','update','emit'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xd12c,0x190));var _0xcd12=function(_0x487e48,_0x232219){_0x487e48=_0x487e48-0x0;var _0x934dbb=_0xd12c[_0x487e48];return _0x934dbb;};'use strict';var EventEmitter=require(_0xcd12('0x0'));var VoiceQueue=require('../../mysqldb')['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xcd12('0x1')](0x0);var events={'afterCreate':_0xcd12('0x2'),'afterUpdate':_0xcd12('0x3'),'afterDestroy':'remove'};function emitEvent(_0x19e5ec){return function(_0x18ad9a,_0x304588,_0x2c5ab3){VoiceQueueEvents[_0xcd12('0x4')](_0x19e5ec+':'+_0x18ad9a['id'],_0x18ad9a);VoiceQueueEvents['emit'](_0x19e5ec,_0x18ad9a);_0x2c5ab3(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
index 4bf9237..f699e3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['define','voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports'];(function(_0x44c37d,_0x19119f){var _0x29e087=function(_0x327fca){while(--_0x327fca){_0x44c37d['push'](_0x44c37d['shift']());}};_0x29e087(++_0x19119f);}(_0x008c,0x188));var _0xc008=function(_0x31ad86,_0x2fce0e){_0x31ad86=_0x31ad86-0x0;var _0x5e3989=_0x008c[_0x31ad86];return _0x5e3989;};'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')]('VoiceQueue',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x008c=['define','voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports'];(function(_0x5538d5,_0x190032){var _0x323b1a=function(_0x179caa){while(--_0x179caa){_0x5538d5['push'](_0x5538d5['shift']());}};_0x323b1a(++_0x190032);}(_0x008c,0x188));var _0xc008=function(_0x2b0397,_0x524af8){_0x2b0397=_0x2b0397-0x0;var _0x1a0ac9=_0x008c[_0x2b0397];return _0x1a0ac9;};'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')]('VoiceQueue',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3f33a55..06286d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc403=['result','catch','GetVoiceQueue','options','raw','limit','include','map','model','attributes','debug','ShowVoiceQueue','VoiceQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','http','redis','defaults','localhost','./voiceQueue.socket','register','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x462699,_0x1b273e){var _0x1d2988=function(_0xa57bf9){while(--_0xa57bf9){_0x462699['push'](_0x462699['shift']());}};_0x1d2988(++_0x1b273e);}(_0xc403,0x163));var _0x3c40=function(_0x21944d,_0x2dacef){_0x21944d=_0x21944d-0x0;var _0x256936=_0xc403[_0x21944d];return _0x256936;};'use strict';var _=require(_0x3c40('0x0'));var util=require(_0x3c40('0x1'));var moment=require(_0x3c40('0x2'));var BPromise=require(_0x3c40('0x3'));var rs=require(_0x3c40('0x4'));var fs=require('fs');var Redis=require(_0x3c40('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x3c40('0x6'));var logger=require(_0x3c40('0x7'))('rpc');var config=require(_0x3c40('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3c40('0x9')]({'port':0x232a});config[_0x3c40('0xa')]=_[_0x3c40('0xb')](config[_0x3c40('0xa')],{'host':_0x3c40('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3c40('0xa')]));require(_0x3c40('0xd'))[_0x3c40('0xe')](socket);function respondWithRpcPromise(_0xfdb08d,_0xb64464,_0x11955b){return new BPromise(function(_0x7fa09,_0x3976b5){return client[_0x3c40('0xf')](_0xfdb08d,_0x11955b)[_0x3c40('0x10')](function(_0x300553){logger[_0x3c40('0x11')](_0x3c40('0x12'),_0xb64464,_0x3c40('0x13'));logger['debug'](_0x3c40('0x14'),_0xb64464,_0x3c40('0x13'),JSON[_0x3c40('0x15')](_0x300553));if(_0x300553[_0x3c40('0x16')]){if(_0x300553[_0x3c40('0x16')][_0x3c40('0x17')]===0x1f4){logger[_0x3c40('0x16')]('VoiceQueue,\x20%s,\x20%s',_0xb64464,_0x300553['error'][_0x3c40('0x18')]);return _0x3976b5(_0x300553['error'][_0x3c40('0x18')]);}logger[_0x3c40('0x16')](_0x3c40('0x12'),_0xb64464,_0x300553[_0x3c40('0x16')][_0x3c40('0x18')]);return _0x7fa09(_0x300553[_0x3c40('0x16')][_0x3c40('0x18')]);}else{logger['info']('VoiceQueue,\x20%s,\x20%s',_0xb64464,_0x3c40('0x13'));_0x7fa09(_0x300553[_0x3c40('0x19')][_0x3c40('0x18')]);}})[_0x3c40('0x1a')](function(_0x17cff5){logger[_0x3c40('0x16')](_0x3c40('0x12'),_0xb64464,_0x17cff5);_0x3976b5(_0x17cff5);});});}exports[_0x3c40('0x1b')]=function(_0x525323){var _0x1c27f0=this;return new Promise(function(_0x26d86f,_0x44ee08){return db['VoiceQueue']['findAll']({'raw':_0x525323[_0x3c40('0x1c')]?_0x525323['options'][_0x3c40('0x1d')]===undefined?!![]:![]:!![],'where':_0x525323[_0x3c40('0x1c')]?_0x525323['options']['where']||null:null,'attributes':_0x525323[_0x3c40('0x1c')]?_0x525323[_0x3c40('0x1c')]['attributes']||null:null,'limit':_0x525323['options']?_0x525323[_0x3c40('0x1c')][_0x3c40('0x1e')]||null:null,'include':_0x525323[_0x3c40('0x1c')]?_0x525323[_0x3c40('0x1c')][_0x3c40('0x1f')]?_[_0x3c40('0x20')](_0x525323[_0x3c40('0x1c')][_0x3c40('0x1f')],function(_0x124bb0){return{'model':db[_0x124bb0[_0x3c40('0x21')]],'as':_0x124bb0['as'],'attributes':_0x124bb0['attributes'],'include':_0x124bb0[_0x3c40('0x1f')]?_['map'](_0x124bb0[_0x3c40('0x1f')],function(_0x33da93){return{'model':db[_0x33da93[_0x3c40('0x21')]],'as':_0x33da93['as'],'attributes':_0x33da93[_0x3c40('0x22')],'include':_0x33da93[_0x3c40('0x1f')]?_['map'](_0x33da93[_0x3c40('0x1f')],function(_0x38c905){return{'model':db[_0x38c905[_0x3c40('0x21')]],'as':_0x38c905['as'],'attributes':_0x38c905[_0x3c40('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x248420){logger[_0x3c40('0x11')](_0x3c40('0x1b'),_0x525323);logger[_0x3c40('0x23')](_0x3c40('0x1b'),_0x525323,JSON['stringify'](_0x248420));_0x26d86f(_0x248420);})[_0x3c40('0x1a')](function(_0x4b0208){logger[_0x3c40('0x16')](_0x3c40('0x1b'),_0x4b0208[_0x3c40('0x18')],_0x525323);_0x44ee08(_0x1c27f0['error'](0x1f4,_0x4b0208[_0x3c40('0x18')]));});});};exports[_0x3c40('0x24')]=function(_0x36128b){var _0x212900=this;return new Promise(function(_0x5e587e,_0x4d4dfc){return db[_0x3c40('0x25')]['find']({'raw':_0x36128b[_0x3c40('0x1c')]?_0x36128b[_0x3c40('0x1c')][_0x3c40('0x1d')]===undefined?!![]:![]:!![],'where':_0x36128b[_0x3c40('0x1c')]?_0x36128b['options']['where']||null:null,'attributes':_0x36128b[_0x3c40('0x1c')]?_0x36128b['options'][_0x3c40('0x22')]||null:null,'include':_0x36128b[_0x3c40('0x1c')]?_0x36128b[_0x3c40('0x1c')]['include']?_['map'](_0x36128b[_0x3c40('0x1c')][_0x3c40('0x1f')],function(_0x5b9c75){return{'model':db[_0x5b9c75[_0x3c40('0x21')]],'as':_0x5b9c75['as'],'attributes':_0x5b9c75[_0x3c40('0x22')],'include':_0x5b9c75[_0x3c40('0x1f')]?_[_0x3c40('0x20')](_0x5b9c75['include'],function(_0x2186a2){return{'model':db[_0x2186a2[_0x3c40('0x21')]],'as':_0x2186a2['as'],'attributes':_0x2186a2['attributes'],'include':_0x2186a2[_0x3c40('0x1f')]?_[_0x3c40('0x20')](_0x2186a2[_0x3c40('0x1f')],function(_0x3b0833){return{'model':db[_0x3b0833[_0x3c40('0x21')]],'as':_0x3b0833['as'],'attributes':_0x3b0833[_0x3c40('0x22')]};}):[]};}):[]};}):[]:[]})[_0x3c40('0x10')](function(_0x2fe6de){logger[_0x3c40('0x11')]('ShowVoiceQueue',_0x36128b);logger[_0x3c40('0x23')](_0x3c40('0x24'),_0x36128b,JSON['stringify'](_0x2fe6de));_0x5e587e(_0x2fe6de);})[_0x3c40('0x1a')](function(_0x17f44e){logger[_0x3c40('0x16')]('ShowVoiceQueue',_0x17f44e['message'],_0x36128b);_0x4d4dfc(_0x212900[_0x3c40('0x16')](0x1f4,_0x17f44e['message']));});});};
\ No newline at end of file
+var _0x0ff9=['client','defaults','redis','localhost','socket.io-emitter','./voiceQueue.socket','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','VoiceQueue','options','raw','where','attributes','limit','map','include','model','GetVoiceQueue','debug','ShowVoiceQueue','find','lodash','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise'];(function(_0x44156a,_0x50f988){var _0x1ca080=function(_0x223241){while(--_0x223241){_0x44156a['push'](_0x44156a['shift']());}};_0x1ca080(++_0x50f988);}(_0x0ff9,0x16b));var _0x90ff=function(_0x487341,_0x32de05){_0x487341=_0x487341-0x0;var _0x28f233=_0x0ff9[_0x487341];return _0x28f233;};'use strict';var _=require(_0x90ff('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x90ff('0x1'));var fs=require('fs');var Redis=require(_0x90ff('0x2'));var db=require(_0x90ff('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x90ff('0x4'))('rpc');var config=require(_0x90ff('0x5'));var jayson=require(_0x90ff('0x6'));var client=jayson[_0x90ff('0x7')]['http']({'port':0x232a});config['redis']=_[_0x90ff('0x8')](config[_0x90ff('0x9')],{'host':_0x90ff('0xa'),'port':0x18eb});var socket=require(_0x90ff('0xb'))(new Redis(config[_0x90ff('0x9')]));require(_0x90ff('0xc'))['register'](socket);function respondWithRpcPromise(_0x2d36b1,_0xbf20f2,_0x580486){return new BPromise(function(_0x2a3551,_0x2028fb){return client[_0x90ff('0xd')](_0x2d36b1,_0x580486)[_0x90ff('0xe')](function(_0x3541b7){logger[_0x90ff('0xf')](_0x90ff('0x10'),_0xbf20f2,_0x90ff('0x11'));logger['debug'](_0x90ff('0x12'),_0xbf20f2,_0x90ff('0x11'),JSON[_0x90ff('0x13')](_0x3541b7));if(_0x3541b7[_0x90ff('0x14')]){if(_0x3541b7[_0x90ff('0x14')][_0x90ff('0x15')]===0x1f4){logger['error'](_0x90ff('0x10'),_0xbf20f2,_0x3541b7[_0x90ff('0x14')]['message']);return _0x2028fb(_0x3541b7[_0x90ff('0x14')][_0x90ff('0x16')]);}logger[_0x90ff('0x14')](_0x90ff('0x10'),_0xbf20f2,_0x3541b7[_0x90ff('0x14')][_0x90ff('0x16')]);return _0x2a3551(_0x3541b7[_0x90ff('0x14')][_0x90ff('0x16')]);}else{logger[_0x90ff('0xf')]('VoiceQueue,\x20%s,\x20%s',_0xbf20f2,_0x90ff('0x11'));_0x2a3551(_0x3541b7['result']['message']);}})[_0x90ff('0x17')](function(_0x37de6f){logger[_0x90ff('0x14')](_0x90ff('0x10'),_0xbf20f2,_0x37de6f);_0x2028fb(_0x37de6f);});});}exports['GetVoiceQueue']=function(_0x8e3e8){var _0x1013df=this;return new Promise(function(_0xe95375,_0x1d5555){return db[_0x90ff('0x18')]['findAll']({'raw':_0x8e3e8[_0x90ff('0x19')]?_0x8e3e8['options'][_0x90ff('0x1a')]===undefined?!![]:![]:!![],'where':_0x8e3e8[_0x90ff('0x19')]?_0x8e3e8[_0x90ff('0x19')][_0x90ff('0x1b')]||null:null,'attributes':_0x8e3e8['options']?_0x8e3e8[_0x90ff('0x19')][_0x90ff('0x1c')]||null:null,'limit':_0x8e3e8[_0x90ff('0x19')]?_0x8e3e8[_0x90ff('0x19')][_0x90ff('0x1d')]||null:null,'include':_0x8e3e8[_0x90ff('0x19')]?_0x8e3e8[_0x90ff('0x19')]['include']?_[_0x90ff('0x1e')](_0x8e3e8['options'][_0x90ff('0x1f')],function(_0x1e35ae){return{'model':db[_0x1e35ae['model']],'as':_0x1e35ae['as'],'attributes':_0x1e35ae[_0x90ff('0x1c')],'include':_0x1e35ae[_0x90ff('0x1f')]?_[_0x90ff('0x1e')](_0x1e35ae['include'],function(_0x15b253){return{'model':db[_0x15b253[_0x90ff('0x20')]],'as':_0x15b253['as'],'attributes':_0x15b253[_0x90ff('0x1c')],'include':_0x15b253['include']?_[_0x90ff('0x1e')](_0x15b253['include'],function(_0x6bc28a){return{'model':db[_0x6bc28a[_0x90ff('0x20')]],'as':_0x6bc28a['as'],'attributes':_0x6bc28a[_0x90ff('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x90ff('0xe')](function(_0x4ad227){logger['info'](_0x90ff('0x21'),_0x8e3e8);logger[_0x90ff('0x22')](_0x90ff('0x21'),_0x8e3e8,JSON[_0x90ff('0x13')](_0x4ad227));_0xe95375(_0x4ad227);})[_0x90ff('0x17')](function(_0x2f12b0){logger[_0x90ff('0x14')](_0x90ff('0x21'),_0x2f12b0[_0x90ff('0x16')],_0x8e3e8);_0x1d5555(_0x1013df['error'](0x1f4,_0x2f12b0[_0x90ff('0x16')]));});});};exports[_0x90ff('0x23')]=function(_0x27480f){var _0x4aa44a=this;return new Promise(function(_0x47c3d9,_0x1e4654){return db[_0x90ff('0x18')][_0x90ff('0x24')]({'raw':_0x27480f[_0x90ff('0x19')]?_0x27480f[_0x90ff('0x19')][_0x90ff('0x1a')]===undefined?!![]:![]:!![],'where':_0x27480f['options']?_0x27480f[_0x90ff('0x19')][_0x90ff('0x1b')]||null:null,'attributes':_0x27480f[_0x90ff('0x19')]?_0x27480f[_0x90ff('0x19')][_0x90ff('0x1c')]||null:null,'include':_0x27480f[_0x90ff('0x19')]?_0x27480f[_0x90ff('0x19')][_0x90ff('0x1f')]?_[_0x90ff('0x1e')](_0x27480f[_0x90ff('0x19')][_0x90ff('0x1f')],function(_0x37d817){return{'model':db[_0x37d817[_0x90ff('0x20')]],'as':_0x37d817['as'],'attributes':_0x37d817[_0x90ff('0x1c')],'include':_0x37d817['include']?_['map'](_0x37d817['include'],function(_0x5deb33){return{'model':db[_0x5deb33[_0x90ff('0x20')]],'as':_0x5deb33['as'],'attributes':_0x5deb33[_0x90ff('0x1c')],'include':_0x5deb33['include']?_[_0x90ff('0x1e')](_0x5deb33['include'],function(_0x13c7a0){return{'model':db[_0x13c7a0[_0x90ff('0x20')]],'as':_0x13c7a0['as'],'attributes':_0x13c7a0[_0x90ff('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x90ff('0xe')](function(_0x49cb75){logger['info']('ShowVoiceQueue',_0x27480f);logger[_0x90ff('0x22')](_0x90ff('0x23'),_0x27480f,JSON[_0x90ff('0x13')](_0x49cb75));_0x47c3d9(_0x49cb75);})[_0x90ff('0x17')](function(_0x3ca903){logger['error']('ShowVoiceQueue',_0x3ca903['message'],_0x27480f);_0x1e4654(_0x4aa44a[_0x90ff('0x14')](0x1f4,_0x3ca903[_0x90ff('0x16')]));});});};
\ No newline at end of file
index 21510f7..82b0264 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc101=['register','length','voiceQueue:','./voiceQueue.events','save','remove','emit','removeListener'];(function(_0x32d457,_0x1a39c9){var _0x338386=function(_0x199d7a){while(--_0x199d7a){_0x32d457['push'](_0x32d457['shift']());}};_0x338386(++_0x1a39c9);}(_0xc101,0x183));var _0x1c10=function(_0x5235a6,_0x680b76){_0x5235a6=_0x5235a6-0x0;var _0x1cf37e=_0xc101[_0x5235a6];return _0x1cf37e;};'use strict';var VoiceQueueEvents=require(_0x1c10('0x0'));var events=[_0x1c10('0x1'),_0x1c10('0x2'),'update'];function createListener(_0x41bab5,_0x12662c){return function(_0x5cbc6a){_0x12662c[_0x1c10('0x3')](_0x41bab5,_0x5cbc6a);};}function removeListener(_0x4228f4,_0x2722dd){return function(){VoiceQueueEvents[_0x1c10('0x4')](_0x4228f4,_0x2722dd);};}exports[_0x1c10('0x5')]=function(_0x18aaab){for(var _0x2d341d=0x0,_0x344d08=events[_0x1c10('0x6')];_0x2d341d<_0x344d08;_0x2d341d++){var _0x2c856f=events[_0x2d341d];var _0x53d92c=createListener(_0x1c10('0x7')+_0x2c856f,_0x18aaab);VoiceQueueEvents['on'](_0x2c856f,_0x53d92c);}};
\ No newline at end of file
+var _0x3a0a=['length','voiceQueue:','./voiceQueue.events','remove','emit','removeListener','register'];(function(_0x294c73,_0x3c2c24){var _0x214314=function(_0x37f452){while(--_0x37f452){_0x294c73['push'](_0x294c73['shift']());}};_0x214314(++_0x3c2c24);}(_0x3a0a,0x6b));var _0xa3a0=function(_0xae297a,_0x4fda67){_0xae297a=_0xae297a-0x0;var _0x1e5b1b=_0x3a0a[_0xae297a];return _0x1e5b1b;};'use strict';var VoiceQueueEvents=require(_0xa3a0('0x0'));var events=['save',_0xa3a0('0x1'),'update'];function createListener(_0x4affe1,_0x3ad03){return function(_0x1f6972){_0x3ad03[_0xa3a0('0x2')](_0x4affe1,_0x1f6972);};}function removeListener(_0x1f7ac1,_0x3014d0){return function(){VoiceQueueEvents[_0xa3a0('0x3')](_0x1f7ac1,_0x3014d0);};}exports[_0xa3a0('0x4')]=function(_0x2316d2){for(var _0xab660f=0x0,_0x2bfdb6=events[_0xa3a0('0x5')];_0xab660f<_0x2bfdb6;_0xab660f++){var _0x3585d2=events[_0xab660f];var _0x659486=createListener(_0xa3a0('0x6')+_0x3585d2,_0x2316d2);VoiceQueueEvents['on'](_0x3585d2,_0x659486);}};
\ No newline at end of file
index f92419a..fec4676 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd08a=['destroy','util','express','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/index','getVoiceQueuesReport','/:id','post','create','update','delete'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0xd08a,0xef));var _0xad08=function(_0x20a2b8,_0x4abe99){_0x20a2b8=_0x20a2b8-0x0;var _0x312f0e=_0xd08a[_0x20a2b8];return _0x312f0e;};'use strict';var multer=require('multer');var util=require(_0xad08('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xad08('0x1'));var router=express['Router']();var fs_extra=require(_0xad08('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xad08('0x3'));var config=require('../../config/environment');var controller=require('./voiceQueueReport.controller');router[_0xad08('0x4')]('/',auth[_0xad08('0x5')](),controller[_0xad08('0x6')]);router['get'](_0xad08('0x7'),auth[_0xad08('0x5')](),controller[_0xad08('0x8')]);router['get'](_0xad08('0x9'),auth[_0xad08('0x5')](),controller[_0xad08('0xa')]);router[_0xad08('0x4')](_0xad08('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xad08('0xc')]('/',auth['isAuthenticated'](),controller[_0xad08('0xd')]);router['put'](_0xad08('0xb'),auth[_0xad08('0x5')](),controller[_0xad08('0xe')]);router[_0xad08('0xf')](_0xad08('0xb'),auth[_0xad08('0x5')](),controller[_0xad08('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xb2f4=['show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceQueueReport.controller','isAuthenticated','index','get','/describe','getVoiceQueuesReport','/:id'];(function(_0x2f3869,_0x1da40b){var _0x5a8831=function(_0x2aa2ba){while(--_0x2aa2ba){_0x2f3869['push'](_0x2f3869['shift']());}};_0x5a8831(++_0x1da40b);}(_0xb2f4,0xb7));var _0x4b2f=function(_0x1f98c0,_0x4ddddf){_0x1f98c0=_0x1f98c0-0x0;var _0x1cc656=_0xb2f4[_0x1f98c0];return _0x1cc656;};'use strict';var multer=require(_0x4b2f('0x0'));var util=require(_0x4b2f('0x1'));var path=require(_0x4b2f('0x2'));var timeout=require(_0x4b2f('0x3'));var express=require('express');var router=express[_0x4b2f('0x4')]();var fs_extra=require(_0x4b2f('0x5'));var auth=require(_0x4b2f('0x6'));var interaction=require(_0x4b2f('0x7'));var config=require('../../config/environment');var controller=require(_0x4b2f('0x8'));router['get']('/',auth[_0x4b2f('0x9')](),controller[_0x4b2f('0xa')]);router[_0x4b2f('0xb')](_0x4b2f('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x4b2f('0xb')]('/index',auth['isAuthenticated'](),controller[_0x4b2f('0xd')]);router[_0x4b2f('0xb')](_0x4b2f('0xe'),auth[_0x4b2f('0x9')](),controller[_0x4b2f('0xf')]);router[_0x4b2f('0x10')]('/',auth[_0x4b2f('0x9')](),controller[_0x4b2f('0x11')]);router['put'](_0x4b2f('0xe'),auth[_0x4b2f('0x9')](),controller[_0x4b2f('0x12')]);router[_0x4b2f('0x13')](_0x4b2f('0xe'),auth[_0x4b2f('0x9')](),controller[_0x4b2f('0x14')]);module[_0x4b2f('0x15')]=router;
\ No newline at end of file
index bb5064d..f397f62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e2b=['getDataValue','queuecallerjoinAt','format','diff','seconds','queuecallerleaveAt','setDataValue','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','moment','exports','STRING','DATE'];(function(_0x52429d,_0x226326){var _0x19759c=function(_0x44a11b){while(--_0x44a11b){_0x52429d['push'](_0x52429d['shift']());}};_0x19759c(++_0x226326);}(_0x5e2b,0x14c));var _0xb5e2=function(_0x489b87,_0xd51c93){_0x489b87=_0x489b87-0x0;var _0x1823b6=_0x5e2b[_0x489b87];return _0x1823b6;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xb5e2('0x0'));module[_0xb5e2('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xb5e2('0x2')]},'calleridnum':{'type':Sequelize[_0xb5e2('0x2')]},'calleridname':{'type':Sequelize[_0xb5e2('0x2')]},'queue':{'type':Sequelize[_0xb5e2('0x2')]},'queuecallerjoinAt':{'type':Sequelize[_0xb5e2('0x3')]},'queuecallerleaveAt':{'type':Sequelize[_0xb5e2('0x3')],'set':function(_0x3dbc5d){var _0x2bafb=moment(_0x3dbc5d);var _0x3cbd1d=moment(this[_0xb5e2('0x4')](_0xb5e2('0x5')))[_0xb5e2('0x6')]('YYYY-MM-DD\x20HH:mm:ss');var _0x34b880=_0x2bafb[_0xb5e2('0x7')](_0x3cbd1d,_0xb5e2('0x8'));this['setDataValue'](_0xb5e2('0x9'),_0x3dbc5d);this[_0xb5e2('0xa')]('holdtime',_0x34b880||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize[_0xb5e2('0xb')]},'queuecallerabandon':{'type':Sequelize[_0xb5e2('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize[_0xb5e2('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xb5e2('0x3')]},'queuecallerexit':{'type':Sequelize[_0xb5e2('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize[_0xb5e2('0x2')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0xb5e2('0xb')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xb5e2('0x2')]},'accountcode':{'type':Sequelize[_0xb5e2('0x2')]},'context':{'type':Sequelize[_0xb5e2('0x2')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xb5e2('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0xb5e2('0xb')],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xb5e2('0x2')]},'transfer':{'type':Sequelize[_0xb5e2('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xb5e2('0x2')],'comment':_0xb5e2('0xd')},'transferexten':{'type':Sequelize[_0xb5e2('0x2')]},'transferuniqueid':{'type':Sequelize[_0xb5e2('0x2')]},'disposition':{'type':Sequelize[_0xb5e2('0x2')]},'secondDisposition':{'type':Sequelize[_0xb5e2('0x2')]},'thirdDisposition':{'type':Sequelize[_0xb5e2('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0xb5e2('0xb')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x70cb=['INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE','getDataValue','format','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','holdtime'];(function(_0x2ce0d5,_0x73bad6){var _0x416d49=function(_0x30f885){while(--_0x30f885){_0x2ce0d5['push'](_0x2ce0d5['shift']());}};_0x416d49(++_0x73bad6);}(_0x70cb,0x1e4));var _0xb70c=function(_0x4040fa,_0x9c4170){_0x4040fa=_0x4040fa-0x0;var _0x3032fe=_0x70cb[_0x4040fa];return _0x3032fe;};'use strict';var Sequelize=require(_0xb70c('0x0'));var moment=require(_0xb70c('0x1'));module[_0xb70c('0x2')]={'type':{'type':Sequelize[_0xb70c('0x3')]},'uniqueid':{'type':Sequelize[_0xb70c('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xb70c('0x3')]},'queue':{'type':Sequelize[_0xb70c('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0xb70c('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0xb70c('0x4')],'set':function(_0x3e1fb3){var _0x65d95d=moment(_0x3e1fb3);var _0x18d579=moment(this[_0xb70c('0x5')]('queuecallerjoinAt'))[_0xb70c('0x6')](_0xb70c('0x7'));var _0x11f840=_0x65d95d[_0xb70c('0x8')](_0x18d579,_0xb70c('0x9'));this[_0xb70c('0xa')]('queuecallerleaveAt',_0x3e1fb3);this['setDataValue'](_0xb70c('0xb'),_0x11f840||null);}},'position':{'type':Sequelize[_0xb70c('0xc')]},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize[_0xb70c('0xd')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize[_0xb70c('0xd')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xb70c('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0xb70c('0x3')],'comment':_0xb70c('0xe')},'originalposition':{'type':Sequelize[_0xb70c('0xc')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xb70c('0x3')]},'connectedlinename':{'type':Sequelize[_0xb70c('0x3')]},'accountcode':{'type':Sequelize[_0xb70c('0x3')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xb70c('0x3')]},'priority':{'type':Sequelize['STRING']},'holdtime':{'type':Sequelize[_0xb70c('0xc')]},'mohtime':{'type':Sequelize[_0xb70c('0xc')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xb70c('0xd')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xb70c('0x3')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xb70c('0x3')],'comment':_0xb70c('0xf')},'transferexten':{'type':Sequelize[_0xb70c('0x3')]},'transferuniqueid':{'type':Sequelize[_0xb70c('0x3')]},'disposition':{'type':Sequelize[_0xb70c('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xb70c('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0xb70c('0xc')],'defaultValue':0x0}};
\ No newline at end of file
index 0167576..f04c0ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b98=['../../config/utils','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','error','stack','name','index','map','VoiceQueueReport','rawAttributes','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','getVoiceQueuesReport','order','eml-format','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api'];(function(_0x279fc8,_0x1ba427){var _0x4521a5=function(_0xbd2f4c){while(--_0xbd2f4c){_0x279fc8['push'](_0x279fc8['shift']());}};_0x4521a5(++_0x1ba427);}(_0x1b98,0x8a));var _0x81b9=function(_0x20050c,_0x48c1f4){_0x20050c=_0x20050c-0x0;var _0x4be367=_0x1b98[_0x20050c];return _0x4be367;};'use strict';var emlformat=require(_0x81b9('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x81b9('0x1'));var moment=require('moment');var BPromise=require(_0x81b9('0x2'));var Mustache=require(_0x81b9('0x3'));var util=require(_0x81b9('0x4'));var path=require('path');var sox=require(_0x81b9('0x5'));var csv=require(_0x81b9('0x6'));var ejs=require(_0x81b9('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x81b9('0x8'));var squel=require(_0x81b9('0x9'));var crypto=require(_0x81b9('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x81b9('0x6'));var querystring=require(_0x81b9('0xb'));var Papa=require(_0x81b9('0xc'));var Redis=require('ioredis');var authService=require(_0x81b9('0xd'));var qs=require(_0x81b9('0xe'));var as=require(_0x81b9('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x81b9('0x10'))(_0x81b9('0x11'));var utils=require(_0x81b9('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x81b9('0x13'));var db=require(_0x81b9('0x14'))['db'];config[_0x81b9('0x15')]=_['defaults'](config[_0x81b9('0x15')],{'host':'localhost','port':0x18eb});var socket=require(_0x81b9('0x16'))(new Redis(config[_0x81b9('0x15')]));require(_0x81b9('0x17'))[_0x81b9('0x18')](socket);function respondWithStatusCode(_0x7591ba,_0x4098d1){_0x4098d1=_0x4098d1||0xcc;return function(_0x49a6d6){if(_0x49a6d6){return _0x7591ba[_0x81b9('0x19')](_0x4098d1);}return _0x7591ba[_0x81b9('0x1a')](_0x4098d1)[_0x81b9('0x1b')]();};}function respondWithResult(_0x432e38,_0x2e6182){_0x2e6182=_0x2e6182||0xc8;return function(_0x14ce8d){if(_0x14ce8d){return _0x432e38[_0x81b9('0x1a')](_0x2e6182)['json'](_0x14ce8d);}};}function respondWithFilteredResult(_0x4fc2e7,_0x3ff9ac){return function(_0x2786e1){if(_0x2786e1){var _0x1a4796=typeof _0x3ff9ac[_0x81b9('0x1c')]===_0x81b9('0x1d')&&typeof _0x3ff9ac[_0x81b9('0x1e')]==='undefined';var _0x2b956f=_0x2786e1[_0x81b9('0x1f')];var _0x357f64=_0x1a4796?0x0:_0x3ff9ac[_0x81b9('0x1c')];var _0x52b871=_0x1a4796?_0x2786e1[_0x81b9('0x1f')]:_0x3ff9ac['offset']+_0x3ff9ac[_0x81b9('0x1e')];var _0x229a38;if(_0x52b871>=_0x2b956f){_0x52b871=_0x2b956f;_0x229a38=0xc8;}else{_0x229a38=0xce;}_0x4fc2e7[_0x81b9('0x1a')](_0x229a38);return _0x4fc2e7[_0x81b9('0x20')]('Content-Range',_0x357f64+'-'+_0x52b871+'/'+_0x2b956f)[_0x81b9('0x21')](_0x2786e1);}return null;};}function patchUpdates(_0x14c070){return function(_0x34b26f){try{jsonpatch[_0x81b9('0x22')](_0x34b26f,_0x14c070,!![]);}catch(_0x595acb){return BPromise[_0x81b9('0x23')](_0x595acb);}return _0x34b26f[_0x81b9('0x24')]();};}function saveUpdates(_0x57fa6c,_0x43abff){return function(_0x56c432){if(_0x56c432){return _0x56c432[_0x81b9('0x25')](_0x57fa6c)[_0x81b9('0x26')](function(_0x565ed2){return _0x565ed2;});}return null;};}function removeEntity(_0x2c505a,_0x2b6eec){return function(_0x47a3e0){if(_0x47a3e0){return _0x47a3e0[_0x81b9('0x27')]()[_0x81b9('0x26')](function(){_0x2c505a[_0x81b9('0x1a')](0xcc)[_0x81b9('0x1b')]();});}};}function handleEntityNotFound(_0x5ecc73,_0x1c50dc){return function(_0x267dc1){if(!_0x267dc1){_0x5ecc73[_0x81b9('0x19')](0x194);}return _0x267dc1;};}function handleError(_0x338e17,_0x14a3b6){_0x14a3b6=_0x14a3b6||0x1f4;return function(_0x239c59){logger[_0x81b9('0x28')](_0x239c59[_0x81b9('0x29')]);if(_0x239c59[_0x81b9('0x2a')]){delete _0x239c59['name'];}_0x338e17['status'](_0x14a3b6)['send'](_0x239c59);};}exports[_0x81b9('0x2b')]=function(_0x288ee8,_0x587854){var _0x28f93d={},_0x184c6a={},_0x402565={'count':0x0,'rows':[]};var _0x281f61=_[_0x81b9('0x2c')](db[_0x81b9('0x2d')][_0x81b9('0x2e')],function(_0x77a9ec){return{'name':_0x77a9ec['fieldName'],'type':_0x77a9ec['type'][_0x81b9('0x2f')]};});_0x184c6a[_0x81b9('0x30')]=_[_0x81b9('0x2c')](_0x281f61,'name');_0x184c6a[_0x81b9('0x31')]=_[_0x81b9('0x32')](_0x288ee8[_0x81b9('0x31')]);_0x184c6a['filters']=_['intersection'](_0x184c6a[_0x81b9('0x30')],_0x184c6a[_0x81b9('0x31')]);_0x28f93d['attributes']=_[_0x81b9('0x33')](_0x184c6a[_0x81b9('0x30')],qs['fields'](_0x288ee8[_0x81b9('0x31')][_0x81b9('0x34')]));_0x28f93d[_0x81b9('0x35')]=_0x28f93d[_0x81b9('0x35')][_0x81b9('0x36')]?_0x28f93d['attributes']:_0x184c6a['model'];if(!_0x288ee8[_0x81b9('0x31')][_0x81b9('0x37')](_0x81b9('0x38'))){_0x28f93d[_0x81b9('0x1e')]=qs['limit'](_0x288ee8[_0x81b9('0x31')]['limit']);_0x28f93d['offset']=qs[_0x81b9('0x1c')](_0x288ee8[_0x81b9('0x31')][_0x81b9('0x1c')]);}_0x28f93d['order']=qs[_0x81b9('0x39')](_0x288ee8[_0x81b9('0x31')]['sort']);_0x28f93d[_0x81b9('0x3a')]=qs[_0x81b9('0x3b')](_[_0x81b9('0x3c')](_0x288ee8[_0x81b9('0x31')],_0x184c6a[_0x81b9('0x3b')]),_0x281f61);if(_0x288ee8['query'][_0x81b9('0x3d')]){_0x28f93d['where']=_[_0x81b9('0x3e')](_0x28f93d[_0x81b9('0x3a')],{'$or':_[_0x81b9('0x2c')](_0x281f61,function(_0x497f3c){if(_0x497f3c[_0x81b9('0x3f')]!==_0x81b9('0x40')){var _0x1df2c9={};_0x1df2c9[_0x497f3c[_0x81b9('0x2a')]]={'$like':'%'+_0x288ee8[_0x81b9('0x31')][_0x81b9('0x3d')]+'%'};return _0x1df2c9;}})});}_0x28f93d=_[_0x81b9('0x3e')]({},_0x28f93d,_0x288ee8['options']);var _0x1f7ea8={'where':_0x28f93d['where']};return db['VoiceQueueReport'][_0x81b9('0x1f')](_0x1f7ea8)['then'](function(_0xe0ca6a){_0x402565['count']=_0xe0ca6a;if(_0x288ee8['query'][_0x81b9('0x41')]){_0x28f93d[_0x81b9('0x42')]=[{'all':!![]}];}return db[_0x81b9('0x2d')][_0x81b9('0x43')](_0x28f93d);})['then'](function(_0x35f865){_0x402565[_0x81b9('0x44')]=_0x35f865;return _0x402565;})['then'](respondWithFilteredResult(_0x587854,_0x28f93d))[_0x81b9('0x45')](handleError(_0x587854,null));};exports[_0x81b9('0x46')]=function(_0x221d64,_0x4bb61e){var _0x5207d6={'raw':![],'where':{'id':_0x221d64[_0x81b9('0x47')]['id']}},_0x22615d={};_0x22615d['model']=_[_0x81b9('0x32')](db[_0x81b9('0x2d')][_0x81b9('0x2e')]);_0x22615d[_0x81b9('0x31')]=_[_0x81b9('0x32')](_0x221d64[_0x81b9('0x31')]);_0x22615d['filters']=_[_0x81b9('0x33')](_0x22615d[_0x81b9('0x30')],_0x22615d[_0x81b9('0x31')]);_0x5207d6[_0x81b9('0x35')]=_[_0x81b9('0x33')](_0x22615d['model'],qs['fields'](_0x221d64['query']['fields']));_0x5207d6[_0x81b9('0x35')]=_0x5207d6[_0x81b9('0x35')][_0x81b9('0x36')]?_0x5207d6[_0x81b9('0x35')]:_0x22615d['model'];if(_0x221d64[_0x81b9('0x31')][_0x81b9('0x41')]){_0x5207d6[_0x81b9('0x42')]=[{'all':!![]}];}_0x5207d6=_[_0x81b9('0x3e')]({},_0x5207d6,_0x221d64[_0x81b9('0x48')]);return db['VoiceQueueReport'][_0x81b9('0x49')](_0x5207d6)[_0x81b9('0x26')](handleEntityNotFound(_0x4bb61e,null))[_0x81b9('0x26')](respondWithResult(_0x4bb61e,null))[_0x81b9('0x45')](handleError(_0x4bb61e,null));};exports[_0x81b9('0x4a')]=function(_0x438287,_0x4b05a7){return db[_0x81b9('0x2d')]['create'](_0x438287[_0x81b9('0x4b')],{})[_0x81b9('0x26')](respondWithResult(_0x4b05a7,0xc9))[_0x81b9('0x45')](handleError(_0x4b05a7,null));};exports[_0x81b9('0x25')]=function(_0x53945e,_0x265f9f){if(_0x53945e[_0x81b9('0x4b')]['id']){delete _0x53945e['body']['id'];}return db[_0x81b9('0x2d')][_0x81b9('0x49')]({'where':{'id':_0x53945e[_0x81b9('0x47')]['id']}})['then'](handleEntityNotFound(_0x265f9f,null))['then'](saveUpdates(_0x53945e[_0x81b9('0x4b')],null))[_0x81b9('0x26')](respondWithResult(_0x265f9f,null))['catch'](handleError(_0x265f9f,null));};exports[_0x81b9('0x27')]=function(_0x2a72e7,_0x178596){return db[_0x81b9('0x2d')][_0x81b9('0x49')]({'where':{'id':_0x2a72e7['params']['id']}})[_0x81b9('0x26')](handleEntityNotFound(_0x178596,null))['then'](removeEntity(_0x178596,null))[_0x81b9('0x45')](handleError(_0x178596,null));};exports['describe']=function(_0x341aad,_0x17047b){return db[_0x81b9('0x2d')]['describe']()[_0x81b9('0x26')](respondWithResult(_0x17047b,null))['catch'](handleError(_0x17047b,null));};exports[_0x81b9('0x4c')]=function(_0x4eb1a5,_0x2c4e45){var _0xd7a98d={},_0x5ef668={},_0x14c4ea={'count':0x0,'rows':[]};_0x5ef668[_0x81b9('0x30')]=_[_0x81b9('0x32')](db['VoiceQueueReport'][_0x81b9('0x2e')]);_0x5ef668[_0x81b9('0x31')]=_['keys'](_0x4eb1a5[_0x81b9('0x31')]);_0x5ef668[_0x81b9('0x3b')]=_[_0x81b9('0x33')](_0x5ef668[_0x81b9('0x30')],_0x5ef668['query']);_0xd7a98d['attributes']=_[_0x81b9('0x33')](_0x5ef668[_0x81b9('0x30')],qs['fields'](_0x4eb1a5[_0x81b9('0x31')][_0x81b9('0x34')]));_0xd7a98d[_0x81b9('0x35')]=_0xd7a98d[_0x81b9('0x35')][_0x81b9('0x36')]?_0xd7a98d[_0x81b9('0x35')]:_0x5ef668[_0x81b9('0x30')];if(!_0x4eb1a5[_0x81b9('0x31')][_0x81b9('0x37')]('nolimit')){_0xd7a98d['limit']=qs[_0x81b9('0x1e')](_0x4eb1a5['query']['limit']);_0xd7a98d[_0x81b9('0x1c')]=qs[_0x81b9('0x1c')](_0x4eb1a5[_0x81b9('0x31')][_0x81b9('0x1c')]);}_0xd7a98d[_0x81b9('0x4d')]=qs[_0x81b9('0x39')](_0x4eb1a5[_0x81b9('0x31')][_0x81b9('0x39')]);_0xd7a98d[_0x81b9('0x3a')]=qs[_0x81b9('0x3b')](_['pick'](_0x4eb1a5[_0x81b9('0x31')],_0x5ef668[_0x81b9('0x3b')]));if(_0x4eb1a5[_0x81b9('0x31')][_0x81b9('0x3d')]){_0xd7a98d[_0x81b9('0x3a')]=_[_0x81b9('0x3e')](_0xd7a98d[_0x81b9('0x3a')],{'$or':_[_0x81b9('0x2c')](_0xd7a98d[_0x81b9('0x35')],function(_0x412975){var _0x349859={};_0x349859[_0x412975]={'$like':'%'+_0x4eb1a5[_0x81b9('0x31')]['filter']+'%'};return _0x349859;})});}_0xd7a98d=_[_0x81b9('0x3e')]({},_0xd7a98d,_0x4eb1a5[_0x81b9('0x48')]);var _0x3efb09={'where':_0xd7a98d['where']};return db[_0x81b9('0x2d')][_0x81b9('0x1f')](_0x3efb09)[_0x81b9('0x26')](function(_0x1c7e39){_0x14c4ea['count']=_0x1c7e39;if(_0x4eb1a5[_0x81b9('0x31')]['includeAll']){_0xd7a98d[_0x81b9('0x42')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0x81b9('0x43')](_0xd7a98d);})[_0x81b9('0x26')](function(_0x26618d){_0x14c4ea['rows']=_0x26618d;return _0x14c4ea;})[_0x81b9('0x26')](respondWithFilteredResult(_0x2c4e45,_0xd7a98d,_0x81b9('0x4c')))['catch'](handleError(_0x2c4e45,null,_0x81b9('0x4c')));};
\ No newline at end of file
+var _0x2d3a=['find','create','body','destroy','describe','getVoiceQueuesReport','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','register','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','update','then','error','stack','name','send','index','map','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','VoiceQueueReport','includeAll','include','findAll','rows','catch','show','params'];(function(_0x4aa08d,_0x17312b){var _0x52e889=function(_0x5a558d){while(--_0x5a558d){_0x4aa08d['push'](_0x4aa08d['shift']());}};_0x52e889(++_0x17312b);}(_0x2d3a,0xa0));var _0xa2d3=function(_0x4dcc2d,_0x422839){_0x4dcc2d=_0x4dcc2d-0x0;var _0x1bbd79=_0x2d3a[_0x4dcc2d];return _0x1bbd79;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa2d3('0x0'));var zipdir=require(_0xa2d3('0x1'));var jsonpatch=require(_0xa2d3('0x2'));var rp=require('request-promise');var moment=require(_0xa2d3('0x3'));var BPromise=require(_0xa2d3('0x4'));var Mustache=require(_0xa2d3('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xa2d3('0x6'));var ejs=require(_0xa2d3('0x7'));var fs=require('fs');var fs_extra=require(_0xa2d3('0x8'));var _=require(_0xa2d3('0x9'));var squel=require(_0xa2d3('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa2d3('0xb'));var toCsv=require(_0xa2d3('0x6'));var querystring=require(_0xa2d3('0xc'));var Papa=require('papaparse');var Redis=require(_0xa2d3('0xd'));var authService=require(_0xa2d3('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa2d3('0xf'));var logger=require('../../config/logger')(_0xa2d3('0x10'));var utils=require(_0xa2d3('0x11'));var config=require(_0xa2d3('0x12'));var licenseUtil=require(_0xa2d3('0x13'));var db=require('../../mysqldb')['db'];config[_0xa2d3('0x14')]=_['defaults'](config[_0xa2d3('0x14')],{'host':_0xa2d3('0x15'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa2d3('0x14')]));require('./voiceQueueReport.socket')[_0xa2d3('0x16')](socket);function respondWithStatusCode(_0x2e57a4,_0x378973){_0x378973=_0x378973||0xcc;return function(_0x212421){if(_0x212421){return _0x2e57a4[_0xa2d3('0x17')](_0x378973);}return _0x2e57a4[_0xa2d3('0x18')](_0x378973)[_0xa2d3('0x19')]();};}function respondWithResult(_0x5455ea,_0x53d2b5){_0x53d2b5=_0x53d2b5||0xc8;return function(_0x4fd47d){if(_0x4fd47d){return _0x5455ea[_0xa2d3('0x18')](_0x53d2b5)['json'](_0x4fd47d);}};}function respondWithFilteredResult(_0x3c07b7,_0x215796){return function(_0x50b3e0){if(_0x50b3e0){var _0xc6192e=typeof _0x215796[_0xa2d3('0x1a')]===_0xa2d3('0x1b')&&typeof _0x215796[_0xa2d3('0x1c')]===_0xa2d3('0x1b');var _0x2b7117=_0x50b3e0[_0xa2d3('0x1d')];var _0x5dd793=_0xc6192e?0x0:_0x215796[_0xa2d3('0x1a')];var _0x2f32be=_0xc6192e?_0x50b3e0[_0xa2d3('0x1d')]:_0x215796[_0xa2d3('0x1a')]+_0x215796[_0xa2d3('0x1c')];var _0xdaeac;if(_0x2f32be>=_0x2b7117){_0x2f32be=_0x2b7117;_0xdaeac=0xc8;}else{_0xdaeac=0xce;}_0x3c07b7[_0xa2d3('0x18')](_0xdaeac);return _0x3c07b7[_0xa2d3('0x1e')]('Content-Range',_0x5dd793+'-'+_0x2f32be+'/'+_0x2b7117)[_0xa2d3('0x1f')](_0x50b3e0);}return null;};}function patchUpdates(_0x29bf7a){return function(_0x194d8a){try{jsonpatch[_0xa2d3('0x20')](_0x194d8a,_0x29bf7a,!![]);}catch(_0x4632fc){return BPromise[_0xa2d3('0x21')](_0x4632fc);}return _0x194d8a['save']();};}function saveUpdates(_0x32ca6f,_0x1b12e2){return function(_0x5a5389){if(_0x5a5389){return _0x5a5389[_0xa2d3('0x22')](_0x32ca6f)[_0xa2d3('0x23')](function(_0x1b73de){return _0x1b73de;});}return null;};}function removeEntity(_0x3ef27e,_0x3d0058){return function(_0x313aed){if(_0x313aed){return _0x313aed['destroy']()[_0xa2d3('0x23')](function(){_0x3ef27e[_0xa2d3('0x18')](0xcc)[_0xa2d3('0x19')]();});}};}function handleEntityNotFound(_0x30e83d,_0x501107){return function(_0x2e05c3){if(!_0x2e05c3){_0x30e83d['sendStatus'](0x194);}return _0x2e05c3;};}function handleError(_0x39ae60,_0x12c478){_0x12c478=_0x12c478||0x1f4;return function(_0x30542d){logger[_0xa2d3('0x24')](_0x30542d[_0xa2d3('0x25')]);if(_0x30542d[_0xa2d3('0x26')]){delete _0x30542d[_0xa2d3('0x26')];}_0x39ae60['status'](_0x12c478)[_0xa2d3('0x27')](_0x30542d);};}exports[_0xa2d3('0x28')]=function(_0x14e2a9,_0x6963bf){var _0x10fee3={},_0x50fab5={},_0x5d8cb1={'count':0x0,'rows':[]};var _0x39f308=_[_0xa2d3('0x29')](db['VoiceQueueReport'][_0xa2d3('0x2a')],function(_0x15e7c5){return{'name':_0x15e7c5['fieldName'],'type':_0x15e7c5[_0xa2d3('0x2b')][_0xa2d3('0x2c')]};});_0x50fab5['model']=_[_0xa2d3('0x29')](_0x39f308,'name');_0x50fab5[_0xa2d3('0x2d')]=_[_0xa2d3('0x2e')](_0x14e2a9[_0xa2d3('0x2d')]);_0x50fab5[_0xa2d3('0x2f')]=_[_0xa2d3('0x30')](_0x50fab5[_0xa2d3('0x31')],_0x50fab5[_0xa2d3('0x2d')]);_0x10fee3[_0xa2d3('0x32')]=_[_0xa2d3('0x30')](_0x50fab5[_0xa2d3('0x31')],qs[_0xa2d3('0x33')](_0x14e2a9[_0xa2d3('0x2d')][_0xa2d3('0x33')]));_0x10fee3['attributes']=_0x10fee3['attributes'][_0xa2d3('0x34')]?_0x10fee3[_0xa2d3('0x32')]:_0x50fab5[_0xa2d3('0x31')];if(!_0x14e2a9[_0xa2d3('0x2d')][_0xa2d3('0x35')](_0xa2d3('0x36'))){_0x10fee3['limit']=qs[_0xa2d3('0x1c')](_0x14e2a9[_0xa2d3('0x2d')][_0xa2d3('0x1c')]);_0x10fee3[_0xa2d3('0x1a')]=qs[_0xa2d3('0x1a')](_0x14e2a9[_0xa2d3('0x2d')][_0xa2d3('0x1a')]);}_0x10fee3[_0xa2d3('0x37')]=qs[_0xa2d3('0x38')](_0x14e2a9[_0xa2d3('0x2d')]['sort']);_0x10fee3[_0xa2d3('0x39')]=qs['filters'](_[_0xa2d3('0x3a')](_0x14e2a9['query'],_0x50fab5[_0xa2d3('0x2f')]),_0x39f308);if(_0x14e2a9[_0xa2d3('0x2d')][_0xa2d3('0x3b')]){_0x10fee3[_0xa2d3('0x39')]=_[_0xa2d3('0x3c')](_0x10fee3['where'],{'$or':_[_0xa2d3('0x29')](_0x39f308,function(_0x438793){if(_0x438793[_0xa2d3('0x2b')]!==_0xa2d3('0x3d')){var _0x45ffaa={};_0x45ffaa[_0x438793['name']]={'$like':'%'+_0x14e2a9[_0xa2d3('0x2d')][_0xa2d3('0x3b')]+'%'};return _0x45ffaa;}})});}_0x10fee3=_['merge']({},_0x10fee3,_0x14e2a9[_0xa2d3('0x3e')]);var _0x16a0d3={'where':_0x10fee3[_0xa2d3('0x39')]};return db[_0xa2d3('0x3f')][_0xa2d3('0x1d')](_0x16a0d3)[_0xa2d3('0x23')](function(_0xe22a79){_0x5d8cb1[_0xa2d3('0x1d')]=_0xe22a79;if(_0x14e2a9['query'][_0xa2d3('0x40')]){_0x10fee3[_0xa2d3('0x41')]=[{'all':!![]}];}return db[_0xa2d3('0x3f')][_0xa2d3('0x42')](_0x10fee3);})[_0xa2d3('0x23')](function(_0x1d9d51){_0x5d8cb1[_0xa2d3('0x43')]=_0x1d9d51;return _0x5d8cb1;})[_0xa2d3('0x23')](respondWithFilteredResult(_0x6963bf,_0x10fee3))[_0xa2d3('0x44')](handleError(_0x6963bf,null));};exports[_0xa2d3('0x45')]=function(_0x2716d5,_0x2ae0ad){var _0x2bc9c6={'raw':![],'where':{'id':_0x2716d5[_0xa2d3('0x46')]['id']}},_0x574c92={};_0x574c92[_0xa2d3('0x31')]=_[_0xa2d3('0x2e')](db['VoiceQueueReport'][_0xa2d3('0x2a')]);_0x574c92[_0xa2d3('0x2d')]=_['keys'](_0x2716d5[_0xa2d3('0x2d')]);_0x574c92[_0xa2d3('0x2f')]=_['intersection'](_0x574c92[_0xa2d3('0x31')],_0x574c92[_0xa2d3('0x2d')]);_0x2bc9c6[_0xa2d3('0x32')]=_[_0xa2d3('0x30')](_0x574c92[_0xa2d3('0x31')],qs['fields'](_0x2716d5[_0xa2d3('0x2d')][_0xa2d3('0x33')]));_0x2bc9c6['attributes']=_0x2bc9c6[_0xa2d3('0x32')][_0xa2d3('0x34')]?_0x2bc9c6[_0xa2d3('0x32')]:_0x574c92[_0xa2d3('0x31')];if(_0x2716d5['query'][_0xa2d3('0x40')]){_0x2bc9c6[_0xa2d3('0x41')]=[{'all':!![]}];}_0x2bc9c6=_[_0xa2d3('0x3c')]({},_0x2bc9c6,_0x2716d5['options']);return db[_0xa2d3('0x3f')][_0xa2d3('0x47')](_0x2bc9c6)[_0xa2d3('0x23')](handleEntityNotFound(_0x2ae0ad,null))['then'](respondWithResult(_0x2ae0ad,null))[_0xa2d3('0x44')](handleError(_0x2ae0ad,null));};exports['create']=function(_0xa34862,_0x5739ca){return db[_0xa2d3('0x3f')][_0xa2d3('0x48')](_0xa34862[_0xa2d3('0x49')],{})['then'](respondWithResult(_0x5739ca,0xc9))[_0xa2d3('0x44')](handleError(_0x5739ca,null));};exports[_0xa2d3('0x22')]=function(_0x3b4597,_0xd34519){if(_0x3b4597[_0xa2d3('0x49')]['id']){delete _0x3b4597[_0xa2d3('0x49')]['id'];}return db['VoiceQueueReport'][_0xa2d3('0x47')]({'where':{'id':_0x3b4597['params']['id']}})[_0xa2d3('0x23')](handleEntityNotFound(_0xd34519,null))[_0xa2d3('0x23')](saveUpdates(_0x3b4597[_0xa2d3('0x49')],null))[_0xa2d3('0x23')](respondWithResult(_0xd34519,null))[_0xa2d3('0x44')](handleError(_0xd34519,null));};exports[_0xa2d3('0x4a')]=function(_0x14f05c,_0x54bc4d){return db['VoiceQueueReport']['find']({'where':{'id':_0x14f05c[_0xa2d3('0x46')]['id']}})[_0xa2d3('0x23')](handleEntityNotFound(_0x54bc4d,null))[_0xa2d3('0x23')](removeEntity(_0x54bc4d,null))[_0xa2d3('0x44')](handleError(_0x54bc4d,null));};exports[_0xa2d3('0x4b')]=function(_0xe3318e,_0x15687f){return db[_0xa2d3('0x3f')][_0xa2d3('0x4b')]()['then'](respondWithResult(_0x15687f,null))[_0xa2d3('0x44')](handleError(_0x15687f,null));};exports[_0xa2d3('0x4c')]=function(_0x199221,_0x2028c3){var _0x3f41cd={},_0x498266={},_0x1d86d2={'count':0x0,'rows':[]};_0x498266[_0xa2d3('0x31')]=_[_0xa2d3('0x2e')](db[_0xa2d3('0x3f')][_0xa2d3('0x2a')]);_0x498266[_0xa2d3('0x2d')]=_['keys'](_0x199221[_0xa2d3('0x2d')]);_0x498266['filters']=_['intersection'](_0x498266[_0xa2d3('0x31')],_0x498266['query']);_0x3f41cd[_0xa2d3('0x32')]=_[_0xa2d3('0x30')](_0x498266[_0xa2d3('0x31')],qs[_0xa2d3('0x33')](_0x199221[_0xa2d3('0x2d')][_0xa2d3('0x33')]));_0x3f41cd[_0xa2d3('0x32')]=_0x3f41cd['attributes'][_0xa2d3('0x34')]?_0x3f41cd[_0xa2d3('0x32')]:_0x498266[_0xa2d3('0x31')];if(!_0x199221[_0xa2d3('0x2d')][_0xa2d3('0x35')](_0xa2d3('0x36'))){_0x3f41cd[_0xa2d3('0x1c')]=qs[_0xa2d3('0x1c')](_0x199221[_0xa2d3('0x2d')][_0xa2d3('0x1c')]);_0x3f41cd[_0xa2d3('0x1a')]=qs[_0xa2d3('0x1a')](_0x199221[_0xa2d3('0x2d')][_0xa2d3('0x1a')]);}_0x3f41cd['order']=qs[_0xa2d3('0x38')](_0x199221[_0xa2d3('0x2d')]['sort']);_0x3f41cd[_0xa2d3('0x39')]=qs['filters'](_[_0xa2d3('0x3a')](_0x199221[_0xa2d3('0x2d')],_0x498266[_0xa2d3('0x2f')]));if(_0x199221[_0xa2d3('0x2d')][_0xa2d3('0x3b')]){_0x3f41cd[_0xa2d3('0x39')]=_[_0xa2d3('0x3c')](_0x3f41cd[_0xa2d3('0x39')],{'$or':_['map'](_0x3f41cd[_0xa2d3('0x32')],function(_0x3446e5){var _0x12437c={};_0x12437c[_0x3446e5]={'$like':'%'+_0x199221[_0xa2d3('0x2d')][_0xa2d3('0x3b')]+'%'};return _0x12437c;})});}_0x3f41cd=_[_0xa2d3('0x3c')]({},_0x3f41cd,_0x199221[_0xa2d3('0x3e')]);var _0x54ea54={'where':_0x3f41cd[_0xa2d3('0x39')]};return db[_0xa2d3('0x3f')][_0xa2d3('0x1d')](_0x54ea54)['then'](function(_0x545e74){_0x1d86d2[_0xa2d3('0x1d')]=_0x545e74;if(_0x199221['query'][_0xa2d3('0x40')]){_0x3f41cd[_0xa2d3('0x41')]=[{'all':!![]}];}return db[_0xa2d3('0x3f')]['findAll'](_0x3f41cd);})[_0xa2d3('0x23')](function(_0x5e3fe6){_0x1d86d2[_0xa2d3('0x43')]=_0x5e3fe6;return _0x1d86d2;})[_0xa2d3('0x23')](respondWithFilteredResult(_0x2028c3,_0x3f41cd,_0xa2d3('0x4c')))[_0xa2d3('0x44')](handleError(_0x2028c3,null,'getVoiceQueuesReport'));};
\ No newline at end of file
index c296e47..45b56eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72e7=['../../mysqldb','VoiceQueueReport','setMaxListeners','save','update','remove','emit','hook','exports','events'];(function(_0x45502d,_0x5ca8b7){var _0x8813c9=function(_0xa53455){while(--_0xa53455){_0x45502d['push'](_0x45502d['shift']());}};_0x8813c9(++_0x5ca8b7);}(_0x72e7,0x77));var _0x772e=function(_0x322b09,_0x37a18a){_0x322b09=_0x322b09-0x0;var _0x49dec3=_0x72e7[_0x322b09];return _0x49dec3;};'use strict';var EventEmitter=require(_0x772e('0x0'));var VoiceQueueReport=require(_0x772e('0x1'))['db'][_0x772e('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x772e('0x3')](0x0);var events={'afterCreate':_0x772e('0x4'),'afterUpdate':_0x772e('0x5'),'afterDestroy':_0x772e('0x6')};function emitEvent(_0x168ad2){return function(_0x560fa0,_0x6a778b,_0x5d5430){VoiceQueueReportEvents[_0x772e('0x7')](_0x168ad2+':'+_0x560fa0['id'],_0x560fa0);VoiceQueueReportEvents[_0x772e('0x7')](_0x168ad2,_0x560fa0);_0x5d5430(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0x772e('0x8')](e,emitEvent(event));}}module[_0x772e('0x9')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xead8=['remove','emit','hasOwnProperty','exports','events','../../mysqldb','VoiceQueueReport','setMaxListeners','save'];(function(_0x45894,_0xe817e1){var _0x101b17=function(_0x4ced73){while(--_0x4ced73){_0x45894['push'](_0x45894['shift']());}};_0x101b17(++_0xe817e1);}(_0xead8,0x1bd));var _0x8ead=function(_0x500dd2,_0x23bd28){_0x500dd2=_0x500dd2-0x0;var _0xa7c859=_0xead8[_0x500dd2];return _0xa7c859;};'use strict';var EventEmitter=require(_0x8ead('0x0'));var VoiceQueueReport=require(_0x8ead('0x1'))['db'][_0x8ead('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x8ead('0x3')](0x0);var events={'afterCreate':_0x8ead('0x4'),'afterUpdate':'update','afterDestroy':_0x8ead('0x5')};function emitEvent(_0x58ae97){return function(_0x13d61f,_0x3ab127,_0x44290f){VoiceQueueReportEvents[_0x8ead('0x6')](_0x58ae97+':'+_0x13d61f['id'],_0x13d61f);VoiceQueueReportEvents[_0x8ead('0x6')](_0x58ae97,_0x13d61f);_0x44290f(null);};}for(var e in events){if(events[_0x8ead('0x7')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0x8ead('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
index 804b305..5abf94c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09d9=['rimraf','./voiceQueueReport.attributes','exports','define','VoiceQueueReport','report_queue','uniqueid','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x10dc87,_0x2444f3){var _0xb5326e=function(_0xe3f4d2){while(--_0xe3f4d2){_0x10dc87['push'](_0x10dc87['shift']());}};_0xb5326e(++_0x2444f3);}(_0x09d9,0xaf));var _0x909d=function(_0x587693,_0x27fe90){_0x587693=_0x587693-0x0;var _0x510a1a=_0x09d9[_0x587693];return _0x510a1a;};'use strict';var _=require(_0x909d('0x0'));var util=require(_0x909d('0x1'));var logger=require(_0x909d('0x2'))('api');var moment=require(_0x909d('0x3'));var BPromise=require(_0x909d('0x4'));var rp=require(_0x909d('0x5'));var fs=require('fs');var path=require(_0x909d('0x6'));var rimraf=require(_0x909d('0x7'));var config=require('../../config/environment');var attributes=require(_0x909d('0x8'));module[_0x909d('0x9')]=function(_0x1aac58,_0x138832){return _0x1aac58[_0x909d('0xa')](_0x909d('0xb'),attributes,{'tableName':_0x909d('0xc'),'paranoid':![],'indexes':[{'fields':[_0x909d('0xd')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x29b4=['request-promise','path','rimraf','../../config/environment','./voiceQueueReport.attributes','exports','report_queue','calleridnum','lodash','util','../../config/logger','moment','bluebird'];(function(_0x4f22f8,_0xe8585c){var _0x43cfb8=function(_0x103ed1){while(--_0x103ed1){_0x4f22f8['push'](_0x4f22f8['shift']());}};_0x43cfb8(++_0xe8585c);}(_0x29b4,0xa4));var _0x429b=function(_0x1a4d53,_0x2ba861){_0x1a4d53=_0x1a4d53-0x0;var _0x1610ec=_0x29b4[_0x1a4d53];return _0x1610ec;};'use strict';var _=require(_0x429b('0x0'));var util=require(_0x429b('0x1'));var logger=require(_0x429b('0x2'))('api');var moment=require(_0x429b('0x3'));var BPromise=require(_0x429b('0x4'));var rp=require(_0x429b('0x5'));var fs=require('fs');var path=require(_0x429b('0x6'));var rimraf=require(_0x429b('0x7'));var config=require(_0x429b('0x8'));var attributes=require(_0x429b('0x9'));module[_0x429b('0xa')]=function(_0x21c5c5,_0x377cdc){return _0x21c5c5['define']('VoiceQueueReport',attributes,{'tableName':_0x429b('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':[_0x429b('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index ec9087a..f686a41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2235=['UpdateVoiceQueueReport','update','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','request','info','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceQueueReport,\x20%s,\x20%s','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','where','attributes','limit','include','model','map','then','body','CreateVoiceQueueReport'];(function(_0x2a10ec,_0x321243){var _0x3f3596=function(_0x3c004c){while(--_0x3c004c){_0x2a10ec['push'](_0x2a10ec['shift']());}};_0x3f3596(++_0x321243);}(_0x2235,0x1ee));var _0x5223=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x2235[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x5223('0x0'));var BPromise=require(_0x5223('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5223('0x2'))['db'];var utils=require(_0x5223('0x3'));var logger=require(_0x5223('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5223('0x5'));var client=jayson[_0x5223('0x6')][_0x5223('0x7')]({'port':0x232a});config[_0x5223('0x8')]=_['defaults'](config['redis'],{'host':_0x5223('0x9'),'port':0x18eb});var socket=require(_0x5223('0xa'))(new Redis(config[_0x5223('0x8')]));require(_0x5223('0xb'))[_0x5223('0xc')](socket);function respondWithRpcPromise(_0x3a7672,_0x585e67,_0x50d631){return new BPromise(function(_0x47d074,_0x466a76){return client[_0x5223('0xd')](_0x3a7672,_0x50d631)['then'](function(_0x15ae5d){logger[_0x5223('0xe')]('VoiceQueueReport,\x20%s,\x20%s',_0x585e67,_0x5223('0xf'));logger[_0x5223('0x10')](_0x5223('0x11'),_0x585e67,_0x5223('0xf'),JSON[_0x5223('0x12')](_0x15ae5d));if(_0x15ae5d['error']){if(_0x15ae5d[_0x5223('0x13')][_0x5223('0x14')]===0x1f4){logger[_0x5223('0x13')](_0x5223('0x15'),_0x585e67,_0x15ae5d[_0x5223('0x13')][_0x5223('0x16')]);return _0x466a76(_0x15ae5d[_0x5223('0x13')][_0x5223('0x16')]);}logger[_0x5223('0x13')](_0x5223('0x15'),_0x585e67,_0x15ae5d['error'][_0x5223('0x16')]);return _0x47d074(_0x15ae5d[_0x5223('0x13')][_0x5223('0x16')]);}else{logger[_0x5223('0xe')](_0x5223('0x15'),_0x585e67,_0x5223('0xf'));_0x47d074(_0x15ae5d[_0x5223('0x17')][_0x5223('0x16')]);}})[_0x5223('0x18')](function(_0x38ebc9){logger[_0x5223('0x13')](_0x5223('0x15'),_0x585e67,_0x38ebc9);_0x466a76(_0x38ebc9);});});}exports[_0x5223('0x19')]=function(_0x1d99ac){var _0x428de5=this;return new Promise(function(_0x15fa2d,_0x43e074){return db[_0x5223('0x1a')][_0x5223('0x1b')]({'raw':_0x1d99ac[_0x5223('0x1c')]?_0x1d99ac[_0x5223('0x1c')][_0x5223('0x1d')]===undefined?!![]:![]:!![],'where':_0x1d99ac[_0x5223('0x1c')]?_0x1d99ac[_0x5223('0x1c')][_0x5223('0x1e')]||null:null,'attributes':_0x1d99ac[_0x5223('0x1c')]?_0x1d99ac[_0x5223('0x1c')][_0x5223('0x1f')]||null:null,'limit':_0x1d99ac[_0x5223('0x1c')]?_0x1d99ac[_0x5223('0x1c')][_0x5223('0x20')]||null:null,'include':_0x1d99ac[_0x5223('0x1c')]?_0x1d99ac[_0x5223('0x1c')]['include']?_['map'](_0x1d99ac[_0x5223('0x1c')][_0x5223('0x21')],function(_0x5468b0){return{'model':db[_0x5468b0[_0x5223('0x22')]],'as':_0x5468b0['as'],'attributes':_0x5468b0[_0x5223('0x1f')],'include':_0x5468b0['include']?_['map'](_0x5468b0['include'],function(_0x23e86c){return{'model':db[_0x23e86c[_0x5223('0x22')]],'as':_0x23e86c['as'],'attributes':_0x23e86c['attributes'],'include':_0x23e86c['include']?_[_0x5223('0x23')](_0x23e86c[_0x5223('0x21')],function(_0x4129d8){return{'model':db[_0x4129d8[_0x5223('0x22')]],'as':_0x4129d8['as'],'attributes':_0x4129d8['attributes']};}):[]};}):[]};}):[]:[]})[_0x5223('0x24')](function(_0x255bb8){logger[_0x5223('0xe')]('GetVoiceQueueReport',_0x1d99ac);logger[_0x5223('0x10')](_0x5223('0x19'),_0x1d99ac,JSON['stringify'](_0x255bb8));_0x15fa2d(_0x255bb8);})[_0x5223('0x18')](function(_0x43fad4){logger[_0x5223('0x13')]('GetVoiceQueueReport',_0x43fad4[_0x5223('0x16')],_0x1d99ac);_0x43e074(_0x428de5[_0x5223('0x13')](0x1f4,_0x43fad4[_0x5223('0x16')]));});});};exports['CreateVoiceQueueReport']=function(_0x40d5a6){var _0x3f9731=this;return new Promise(function(_0xd83b2c,_0x2f851b){return db[_0x5223('0x1a')]['create'](_0x40d5a6[_0x5223('0x25')],{'raw':_0x40d5a6[_0x5223('0x1c')]?_0x40d5a6[_0x5223('0x1c')][_0x5223('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x49483d){logger[_0x5223('0xe')](_0x5223('0x26'),_0x40d5a6);logger[_0x5223('0x10')](_0x5223('0x26'),_0x40d5a6,JSON[_0x5223('0x12')](_0x49483d));_0xd83b2c(_0x49483d);})[_0x5223('0x18')](function(_0x4877a4){logger[_0x5223('0x13')](_0x5223('0x26'),_0x4877a4['message'],_0x40d5a6);_0x2f851b(_0x3f9731[_0x5223('0x13')](0x1f4,_0x4877a4[_0x5223('0x16')]));});});};exports[_0x5223('0x27')]=function(_0x25cccc){var _0x2444e8=this;return new Promise(function(_0x17b137,_0xa95bcd){return db[_0x5223('0x1a')][_0x5223('0x28')](_0x25cccc['body'],{'raw':_0x25cccc[_0x5223('0x1c')]?_0x25cccc[_0x5223('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x25cccc['options']?_0x25cccc[_0x5223('0x1c')][_0x5223('0x1e')]||null:null,'attributes':_0x25cccc['options']?_0x25cccc[_0x5223('0x1c')][_0x5223('0x1f')]||null:null,'limit':_0x25cccc[_0x5223('0x1c')]?_0x25cccc[_0x5223('0x1c')][_0x5223('0x20')]||null:null})['then'](function(_0x2274e4){logger[_0x5223('0xe')](_0x5223('0x27'),_0x25cccc);logger[_0x5223('0x10')](_0x5223('0x27'),_0x25cccc,JSON[_0x5223('0x12')](_0x2274e4));_0x17b137(_0x2274e4);})['catch'](function(_0x4d9fb1){logger['error'](_0x5223('0x27'),_0x4d9fb1[_0x5223('0x16')],_0x25cccc);_0xa95bcd(_0x2444e8['error'](0x1f4,_0x4d9fb1[_0x5223('0x16')]));});});};
\ No newline at end of file
+var _0xed6a=['../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','register','request','then','info','VoiceQueueReport,\x20%s,\x20%s','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','limit','include','map','model','attributes','catch','CreateVoiceQueueReport','create','body','stringify','UpdateVoiceQueueReport','update','where','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x54feb0,_0x3c173){var _0x55d60c=function(_0x6b1956){while(--_0x6b1956){_0x54feb0['push'](_0x54feb0['shift']());}};_0x55d60c(++_0x3c173);}(_0xed6a,0xfc));var _0xaed6=function(_0xb22ea8,_0x1d5230){_0xb22ea8=_0xb22ea8-0x0;var _0x76cbbd=_0xed6a[_0xb22ea8];return _0x76cbbd;};'use strict';var _=require(_0xaed6('0x0'));var util=require('util');var moment=require(_0xaed6('0x1'));var BPromise=require('bluebird');var rs=require(_0xaed6('0x2'));var fs=require('fs');var Redis=require(_0xaed6('0x3'));var db=require(_0xaed6('0x4'))['db'];var utils=require(_0xaed6('0x5'));var logger=require(_0xaed6('0x6'))(_0xaed6('0x7'));var config=require(_0xaed6('0x8'));var jayson=require(_0xaed6('0x9'));var client=jayson[_0xaed6('0xa')]['http']({'port':0x232a});config[_0xaed6('0xb')]=_['defaults'](config['redis'],{'host':_0xaed6('0xc'),'port':0x18eb});var socket=require(_0xaed6('0xd'))(new Redis(config[_0xaed6('0xb')]));require('./voiceQueueReport.socket')[_0xaed6('0xe')](socket);function respondWithRpcPromise(_0x310608,_0x169598,_0x27c188){return new BPromise(function(_0x255a37,_0x5c8f83){return client[_0xaed6('0xf')](_0x310608,_0x27c188)[_0xaed6('0x10')](function(_0x3835e3){logger[_0xaed6('0x11')](_0xaed6('0x12'),_0x169598,'request\x20sent');logger[_0xaed6('0x13')](_0xaed6('0x14'),_0x169598,_0xaed6('0x15'),JSON['stringify'](_0x3835e3));if(_0x3835e3['error']){if(_0x3835e3[_0xaed6('0x16')][_0xaed6('0x17')]===0x1f4){logger[_0xaed6('0x16')](_0xaed6('0x12'),_0x169598,_0x3835e3['error'][_0xaed6('0x18')]);return _0x5c8f83(_0x3835e3[_0xaed6('0x16')]['message']);}logger['error'](_0xaed6('0x12'),_0x169598,_0x3835e3[_0xaed6('0x16')]['message']);return _0x255a37(_0x3835e3[_0xaed6('0x16')]['message']);}else{logger['info']('VoiceQueueReport,\x20%s,\x20%s',_0x169598,'request\x20sent');_0x255a37(_0x3835e3['result'][_0xaed6('0x18')]);}})['catch'](function(_0xe4842c){logger[_0xaed6('0x16')](_0xaed6('0x12'),_0x169598,_0xe4842c);_0x5c8f83(_0xe4842c);});});}exports[_0xaed6('0x19')]=function(_0x106147){var _0x48853d=this;return new Promise(function(_0xf52d61,_0xcbdfbe){return db[_0xaed6('0x1a')][_0xaed6('0x1b')]({'raw':_0x106147[_0xaed6('0x1c')]?_0x106147['options'][_0xaed6('0x1d')]===undefined?!![]:![]:!![],'where':_0x106147['options']?_0x106147['options']['where']||null:null,'attributes':_0x106147['options']?_0x106147[_0xaed6('0x1c')]['attributes']||null:null,'limit':_0x106147[_0xaed6('0x1c')]?_0x106147['options'][_0xaed6('0x1e')]||null:null,'include':_0x106147[_0xaed6('0x1c')]?_0x106147['options'][_0xaed6('0x1f')]?_[_0xaed6('0x20')](_0x106147[_0xaed6('0x1c')][_0xaed6('0x1f')],function(_0x25c78a){return{'model':db[_0x25c78a[_0xaed6('0x21')]],'as':_0x25c78a['as'],'attributes':_0x25c78a[_0xaed6('0x22')],'include':_0x25c78a[_0xaed6('0x1f')]?_['map'](_0x25c78a[_0xaed6('0x1f')],function(_0x173534){return{'model':db[_0x173534['model']],'as':_0x173534['as'],'attributes':_0x173534[_0xaed6('0x22')],'include':_0x173534[_0xaed6('0x1f')]?_[_0xaed6('0x20')](_0x173534[_0xaed6('0x1f')],function(_0x57f5ed){return{'model':db[_0x57f5ed[_0xaed6('0x21')]],'as':_0x57f5ed['as'],'attributes':_0x57f5ed[_0xaed6('0x22')]};}):[]};}):[]};}):[]:[]})[_0xaed6('0x10')](function(_0x4dbb0e){logger[_0xaed6('0x11')]('GetVoiceQueueReport',_0x106147);logger[_0xaed6('0x13')](_0xaed6('0x19'),_0x106147,JSON['stringify'](_0x4dbb0e));_0xf52d61(_0x4dbb0e);})[_0xaed6('0x23')](function(_0x5cf65d){logger['error'](_0xaed6('0x19'),_0x5cf65d['message'],_0x106147);_0xcbdfbe(_0x48853d[_0xaed6('0x16')](0x1f4,_0x5cf65d['message']));});});};exports[_0xaed6('0x24')]=function(_0x2acabc){var _0x5f3361=this;return new Promise(function(_0x32788f,_0x1e0882){return db[_0xaed6('0x1a')][_0xaed6('0x25')](_0x2acabc[_0xaed6('0x26')],{'raw':_0x2acabc[_0xaed6('0x1c')]?_0x2acabc[_0xaed6('0x1c')][_0xaed6('0x1d')]===undefined?!![]:![]:!![]})[_0xaed6('0x10')](function(_0x3073ca){logger[_0xaed6('0x11')](_0xaed6('0x24'),_0x2acabc);logger[_0xaed6('0x13')]('CreateVoiceQueueReport',_0x2acabc,JSON[_0xaed6('0x27')](_0x3073ca));_0x32788f(_0x3073ca);})[_0xaed6('0x23')](function(_0x40b357){logger[_0xaed6('0x16')](_0xaed6('0x24'),_0x40b357['message'],_0x2acabc);_0x1e0882(_0x5f3361[_0xaed6('0x16')](0x1f4,_0x40b357[_0xaed6('0x18')]));});});};exports[_0xaed6('0x28')]=function(_0x3f22c8){var _0x8035b4=this;return new Promise(function(_0x3a3c34,_0x10192b){return db[_0xaed6('0x1a')][_0xaed6('0x29')](_0x3f22c8['body'],{'raw':_0x3f22c8[_0xaed6('0x1c')]?_0x3f22c8[_0xaed6('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3f22c8[_0xaed6('0x1c')]?_0x3f22c8[_0xaed6('0x1c')][_0xaed6('0x2a')]||null:null,'attributes':_0x3f22c8[_0xaed6('0x1c')]?_0x3f22c8[_0xaed6('0x1c')]['attributes']||null:null,'limit':_0x3f22c8['options']?_0x3f22c8[_0xaed6('0x1c')][_0xaed6('0x1e')]||null:null})[_0xaed6('0x10')](function(_0x4d65e0){logger[_0xaed6('0x11')]('UpdateVoiceQueueReport',_0x3f22c8);logger[_0xaed6('0x13')]('UpdateVoiceQueueReport',_0x3f22c8,JSON[_0xaed6('0x27')](_0x4d65e0));_0x3a3c34(_0x4d65e0);})['catch'](function(_0x53aa51){logger[_0xaed6('0x16')](_0xaed6('0x28'),_0x53aa51[_0xaed6('0x18')],_0x3f22c8);_0x10192b(_0x8035b4[_0xaed6('0x16')](0x1f4,_0x53aa51[_0xaed6('0x18')]));});});};
\ No newline at end of file
index aad70ed..97da3ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a52=['removeListener','register','length','voiceQueueReport:','./voiceQueueReport.events','save','update','emit'];(function(_0x504e04,_0xc40780){var _0xabd97d=function(_0x161ef3){while(--_0x161ef3){_0x504e04['push'](_0x504e04['shift']());}};_0xabd97d(++_0xc40780);}(_0x0a52,0xe4));var _0x20a5=function(_0x417afc,_0x5a08cc){_0x417afc=_0x417afc-0x0;var _0x49ef6d=_0x0a52[_0x417afc];return _0x49ef6d;};'use strict';var VoiceQueueReportEvents=require(_0x20a5('0x0'));var events=[_0x20a5('0x1'),'remove',_0x20a5('0x2')];function createListener(_0x396070,_0xe4dbc9){return function(_0x5a71da){_0xe4dbc9[_0x20a5('0x3')](_0x396070,_0x5a71da);};}function removeListener(_0x16e604,_0x243305){return function(){VoiceQueueReportEvents[_0x20a5('0x4')](_0x16e604,_0x243305);};}exports[_0x20a5('0x5')]=function(_0x1fcc72){for(var _0x4acc66=0x0,_0x56b172=events[_0x20a5('0x6')];_0x4acc66<_0x56b172;_0x4acc66++){var _0x1f44fd=events[_0x4acc66];var _0x478779=createListener(_0x20a5('0x7')+_0x1f44fd,_0x1fcc72);VoiceQueueReportEvents['on'](_0x1f44fd,_0x478779);}};
\ No newline at end of file
+var _0x28a2=['save','remove','update','removeListener','register','voiceQueueReport:','./voiceQueueReport.events'];(function(_0x138d06,_0x33edf2){var _0x1a01eb=function(_0x387acb){while(--_0x387acb){_0x138d06['push'](_0x138d06['shift']());}};_0x1a01eb(++_0x33edf2);}(_0x28a2,0x141));var _0x228a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x28a2[_0x3dd15e];return _0x231fd0;};'use strict';var VoiceQueueReportEvents=require(_0x228a('0x0'));var events=[_0x228a('0x1'),_0x228a('0x2'),_0x228a('0x3')];function createListener(_0x466ef9,_0x41d4aa){return function(_0xfc342a){_0x41d4aa['emit'](_0x466ef9,_0xfc342a);};}function removeListener(_0x6efce7,_0x51e9e9){return function(){VoiceQueueReportEvents[_0x228a('0x4')](_0x6efce7,_0x51e9e9);};}exports[_0x228a('0x5')]=function(_0x17727b){for(var _0xf86d1d=0x0,_0x100a6a=events['length'];_0xf86d1d<_0x100a6a;_0xf86d1d++){var _0x270d15=events[_0xf86d1d];var _0x7767ab=createListener(_0x228a('0x6')+_0x270d15,_0x17727b);VoiceQueueReportEvents['on'](_0x270d15,_0x7767ab);}};
\ No newline at end of file
index b754938..c54349a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4a3=['isAuthenticated','index','get','show','post','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceQueuesLog.controller'];(function(_0x322d4b,_0x166494){var _0x10a7d8=function(_0x406f6e){while(--_0x406f6e){_0x322d4b['push'](_0x322d4b['shift']());}};_0x10a7d8(++_0x166494);}(_0xb4a3,0x174));var _0x3b4a=function(_0xe8129c,_0x2fb03c){_0xe8129c=_0xe8129c-0x0;var _0x709fc5=_0xb4a3[_0xe8129c];return _0x709fc5;};'use strict';var multer=require(_0x3b4a('0x0'));var util=require(_0x3b4a('0x1'));var path=require('path');var timeout=require(_0x3b4a('0x2'));var express=require(_0x3b4a('0x3'));var router=express[_0x3b4a('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x3b4a('0x5'));var interaction=require(_0x3b4a('0x6'));var config=require('../../config/environment');var controller=require(_0x3b4a('0x7'));router['get']('/',auth[_0x3b4a('0x8')](),controller[_0x3b4a('0x9')]);router[_0x3b4a('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x3b4a('0xb')]);router[_0x3b4a('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x3b4a('0xd')](_0x3b4a('0xe'),auth[_0x3b4a('0x8')](),controller[_0x3b4a('0xf')]);router[_0x3b4a('0x10')]('/:id',auth[_0x3b4a('0x8')](),controller[_0x3b4a('0x11')]);module[_0x3b4a('0x12')]=router;
\ No newline at end of file
+var _0x3178=['connect-timeout','Router','fs-extra','../../components/interaction/service','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x3178,0x176));var _0x8317=function(_0x4b7492,_0x5b804d){_0x4b7492=_0x4b7492-0x0;var _0x1a4bcb=_0x3178[_0x4b7492];return _0x1a4bcb;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x8317('0x0'));var express=require('express');var router=express[_0x8317('0x1')]();var fs_extra=require(_0x8317('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x8317('0x3'));var config=require('../../config/environment');var controller=require(_0x8317('0x4'));router[_0x8317('0x5')]('/',auth[_0x8317('0x6')](),controller[_0x8317('0x7')]);router[_0x8317('0x5')](_0x8317('0x8'),auth[_0x8317('0x6')](),controller[_0x8317('0x9')]);router[_0x8317('0xa')]('/',auth[_0x8317('0x6')](),controller[_0x8317('0xb')]);router[_0x8317('0xc')](_0x8317('0x8'),auth['isAuthenticated'](),controller[_0x8317('0xd')]);router[_0x8317('0xe')](_0x8317('0x8'),auth['isAuthenticated'](),controller[_0x8317('0xf')]);module[_0x8317('0x10')]=router;
\ No newline at end of file
index db30472..ed71b5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67f5=['STRING','DATE','format','sequelize','moment'];(function(_0x4edd80,_0x173991){var _0x3fc6ef=function(_0x26351c){while(--_0x26351c){_0x4edd80['push'](_0x4edd80['shift']());}};_0x3fc6ef(++_0x173991);}(_0x67f5,0x99));var _0x567f=function(_0x3c5f8d,_0x39891f){_0x3c5f8d=_0x3c5f8d-0x0;var _0x3b7beb=_0x67f5[_0x3c5f8d];return _0x3b7beb;};'use strict';var Sequelize=require(_0x567f('0x0'));var moment=require(_0x567f('0x1'));module['exports']={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0x567f('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x567f('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x567f('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x567f('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x567f('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x567f('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x567f('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x567f('0x3')],'allowNull':![],'defaultValue':moment()[_0x567f('0x4')]('YYYY-MM-DD\x20HH:mm:ss')}};
\ No newline at end of file
+var _0x58d5=['format','YYYY-MM-DD\x20HH:mm:ss','moment','STRING'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x58d5,0xd2));var _0x558d=function(_0x40be9b,_0x3d2a75){_0x40be9b=_0x40be9b-0x0;var _0x4ab64b=_0x58d5[_0x40be9b];return _0x4ab64b;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x558d('0x0'));module['exports']={'time':{'type':Sequelize[_0x558d('0x1')]},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x558d('0x1')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x558d('0x1')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x558d('0x1')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x558d('0x1')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x558d('0x1')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':moment()[_0x558d('0x2')](_0x558d('0x3'))}};
\ No newline at end of file
index 519c760..6d331c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87a3=['../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','undefined','limit','count','offset','Content-Range','apply','reject','destroy','end','error','stack','name','send','index','VoiceQueuesLog','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','then','includeAll','include','findAll','show','params','create','body','update','find','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0xbd3e4c,_0x4685ca){var _0x1d765d=function(_0x6aeeed){while(--_0x6aeeed){_0xbd3e4c['push'](_0xbd3e4c['shift']());}};_0x1d765d(++_0x4685ca);}(_0x87a3,0x11a));var _0x387a=function(_0x26d6d9,_0x431cb8){_0x26d6d9=_0x26d6d9-0x0;var _0x1b4875=_0x87a3[_0x26d6d9];return _0x1b4875;};'use strict';var emlformat=require(_0x387a('0x0'));var rimraf=require(_0x387a('0x1'));var zipdir=require(_0x387a('0x2'));var jsonpatch=require(_0x387a('0x3'));var rp=require('request-promise');var moment=require(_0x387a('0x4'));var BPromise=require(_0x387a('0x5'));var Mustache=require(_0x387a('0x6'));var util=require(_0x387a('0x7'));var path=require(_0x387a('0x8'));var sox=require(_0x387a('0x9'));var csv=require(_0x387a('0xa'));var ejs=require(_0x387a('0xb'));var fs=require('fs');var fs_extra=require(_0x387a('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x387a('0xd'));var jsforce=require(_0x387a('0xe'));var deskjs=require(_0x387a('0xf'));var toCsv=require('to-csv');var querystring=require(_0x387a('0x10'));var Papa=require(_0x387a('0x11'));var Redis=require(_0x387a('0x12'));var authService=require(_0x387a('0x13'));var qs=require(_0x387a('0x14'));var as=require(_0x387a('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x387a('0x16'))(_0x387a('0x17'));var utils=require(_0x387a('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x387a('0x19'));var db=require(_0x387a('0x1a'))['db'];function respondWithStatusCode(_0x6d3dad,_0x5a67c8){_0x5a67c8=_0x5a67c8||0xcc;return function(_0x4fa1a8){if(_0x4fa1a8){return _0x6d3dad['sendStatus'](_0x5a67c8);}return _0x6d3dad[_0x387a('0x1b')](_0x5a67c8)['end']();};}function respondWithResult(_0xdc53ac,_0x30ce23){_0x30ce23=_0x30ce23||0xc8;return function(_0x37d8a4){if(_0x37d8a4){return _0xdc53ac[_0x387a('0x1b')](_0x30ce23)[_0x387a('0x1c')](_0x37d8a4);}};}function respondWithFilteredResult(_0x3a50a7,_0x1c2235){return function(_0x5e1d6c){if(_0x5e1d6c){var _0xff0389=typeof _0x1c2235['offset']===_0x387a('0x1d')&&typeof _0x1c2235[_0x387a('0x1e')]===_0x387a('0x1d');var _0x5d78a6=_0x5e1d6c[_0x387a('0x1f')];var _0x4f7f57=_0xff0389?0x0:_0x1c2235[_0x387a('0x20')];var _0x317608=_0xff0389?_0x5e1d6c[_0x387a('0x1f')]:_0x1c2235['offset']+_0x1c2235[_0x387a('0x1e')];var _0x4099fa;if(_0x317608>=_0x5d78a6){_0x317608=_0x5d78a6;_0x4099fa=0xc8;}else{_0x4099fa=0xce;}_0x3a50a7['status'](_0x4099fa);return _0x3a50a7['set'](_0x387a('0x21'),_0x4f7f57+'-'+_0x317608+'/'+_0x5d78a6)[_0x387a('0x1c')](_0x5e1d6c);}return null;};}function patchUpdates(_0x49f7f7){return function(_0x228753){try{jsonpatch[_0x387a('0x22')](_0x228753,_0x49f7f7,!![]);}catch(_0x347a1b){return BPromise[_0x387a('0x23')](_0x347a1b);}return _0x228753['save']();};}function saveUpdates(_0x584f6d,_0x42a945){return function(_0x1d2291){if(_0x1d2291){return _0x1d2291['update'](_0x584f6d)['then'](function(_0x2cb778){return _0x2cb778;});}return null;};}function removeEntity(_0x222454,_0x1ba9c3){return function(_0x2f0ce8){if(_0x2f0ce8){return _0x2f0ce8[_0x387a('0x24')]()['then'](function(){_0x222454['status'](0xcc)[_0x387a('0x25')]();});}};}function handleEntityNotFound(_0x4ac823,_0x40a2a9){return function(_0x2397df){if(!_0x2397df){_0x4ac823['sendStatus'](0x194);}return _0x2397df;};}function handleError(_0x1f5c46,_0x159364){_0x159364=_0x159364||0x1f4;return function(_0x4fc2f3){logger[_0x387a('0x26')](_0x4fc2f3[_0x387a('0x27')]);if(_0x4fc2f3['name']){delete _0x4fc2f3[_0x387a('0x28')];}_0x1f5c46[_0x387a('0x1b')](_0x159364)[_0x387a('0x29')](_0x4fc2f3);};}exports[_0x387a('0x2a')]=function(_0x1b71cf,_0x12ae21){var _0x3196d8={},_0x25935c={},_0x193312={'count':0x0,'rows':[]};var _0x302ea0=_['map'](db[_0x387a('0x2b')][_0x387a('0x2c')],function(_0x3b0005){return{'name':_0x3b0005[_0x387a('0x2d')],'type':_0x3b0005['type'][_0x387a('0x2e')]};});_0x25935c[_0x387a('0x2f')]=_['map'](_0x302ea0,'name');_0x25935c['query']=_[_0x387a('0x30')](_0x1b71cf[_0x387a('0x31')]);_0x25935c[_0x387a('0x32')]=_[_0x387a('0x33')](_0x25935c[_0x387a('0x2f')],_0x25935c[_0x387a('0x31')]);_0x3196d8[_0x387a('0x34')]=_['intersection'](_0x25935c[_0x387a('0x2f')],qs[_0x387a('0x35')](_0x1b71cf[_0x387a('0x31')]['fields']));_0x3196d8[_0x387a('0x34')]=_0x3196d8['attributes'][_0x387a('0x36')]?_0x3196d8[_0x387a('0x34')]:_0x25935c[_0x387a('0x2f')];if(!_0x1b71cf[_0x387a('0x31')][_0x387a('0x37')](_0x387a('0x38'))){_0x3196d8['limit']=qs[_0x387a('0x1e')](_0x1b71cf['query'][_0x387a('0x1e')]);_0x3196d8[_0x387a('0x20')]=qs['offset'](_0x1b71cf[_0x387a('0x31')][_0x387a('0x20')]);}_0x3196d8[_0x387a('0x39')]=qs[_0x387a('0x3a')](_0x1b71cf[_0x387a('0x31')][_0x387a('0x3a')]);_0x3196d8[_0x387a('0x3b')]=qs[_0x387a('0x32')](_[_0x387a('0x3c')](_0x1b71cf[_0x387a('0x31')],_0x25935c['filters']),_0x302ea0);if(_0x1b71cf[_0x387a('0x31')][_0x387a('0x3d')]){_0x3196d8[_0x387a('0x3b')]=_[_0x387a('0x3e')](_0x3196d8['where'],{'$or':_[_0x387a('0x3f')](_0x302ea0,function(_0x9050ed){if(_0x9050ed['type']!==_0x387a('0x40')){var _0x354857={};_0x354857[_0x9050ed[_0x387a('0x28')]]={'$like':'%'+_0x1b71cf[_0x387a('0x31')][_0x387a('0x3d')]+'%'};return _0x354857;}})});}_0x3196d8=_[_0x387a('0x3e')]({},_0x3196d8,_0x1b71cf[_0x387a('0x41')]);var _0x527aff={'where':_0x3196d8[_0x387a('0x3b')]};return db[_0x387a('0x2b')][_0x387a('0x1f')](_0x527aff)[_0x387a('0x42')](function(_0x36bb90){_0x193312['count']=_0x36bb90;if(_0x1b71cf[_0x387a('0x31')][_0x387a('0x43')]){_0x3196d8[_0x387a('0x44')]=[{'all':!![]}];}return db['VoiceQueuesLog'][_0x387a('0x45')](_0x3196d8);})['then'](function(_0x5ee218){_0x193312['rows']=_0x5ee218;return _0x193312;})[_0x387a('0x42')](respondWithFilteredResult(_0x12ae21,_0x3196d8))['catch'](handleError(_0x12ae21,null));};exports[_0x387a('0x46')]=function(_0x25943f,_0xe4c188){var _0x1ef2ac={'raw':!![],'where':{'id':_0x25943f[_0x387a('0x47')]['id']}},_0x447d92={};_0x447d92[_0x387a('0x2f')]=_['keys'](db[_0x387a('0x2b')]['rawAttributes']);_0x447d92[_0x387a('0x31')]=_[_0x387a('0x30')](_0x25943f[_0x387a('0x31')]);_0x447d92[_0x387a('0x32')]=_[_0x387a('0x33')](_0x447d92[_0x387a('0x2f')],_0x447d92[_0x387a('0x31')]);_0x1ef2ac[_0x387a('0x34')]=_[_0x387a('0x33')](_0x447d92[_0x387a('0x2f')],qs[_0x387a('0x35')](_0x25943f[_0x387a('0x31')][_0x387a('0x35')]));_0x1ef2ac[_0x387a('0x34')]=_0x1ef2ac[_0x387a('0x34')][_0x387a('0x36')]?_0x1ef2ac[_0x387a('0x34')]:_0x447d92['model'];if(_0x25943f[_0x387a('0x31')][_0x387a('0x43')]){_0x1ef2ac[_0x387a('0x44')]=[{'all':!![]}];}_0x1ef2ac=_[_0x387a('0x3e')]({},_0x1ef2ac,_0x25943f[_0x387a('0x41')]);return db[_0x387a('0x2b')]['find'](_0x1ef2ac)['then'](handleEntityNotFound(_0xe4c188,null))[_0x387a('0x42')](respondWithResult(_0xe4c188,null))['catch'](handleError(_0xe4c188,null));};exports[_0x387a('0x48')]=function(_0x4feb4b,_0x50030b){return db['VoiceQueuesLog'][_0x387a('0x48')](_0x4feb4b[_0x387a('0x49')],{})[_0x387a('0x42')](respondWithResult(_0x50030b,0xc9))['catch'](handleError(_0x50030b,null));};exports[_0x387a('0x4a')]=function(_0x35b46e,_0xd68a3a){if(_0x35b46e[_0x387a('0x49')]['id']){delete _0x35b46e[_0x387a('0x49')]['id'];}return db[_0x387a('0x2b')]['find']({'where':{'id':_0x35b46e['params']['id']}})['then'](handleEntityNotFound(_0xd68a3a,null))[_0x387a('0x42')](saveUpdates(_0x35b46e[_0x387a('0x49')],null))[_0x387a('0x42')](respondWithResult(_0xd68a3a,null))['catch'](handleError(_0xd68a3a,null));};exports[_0x387a('0x24')]=function(_0xbe6d88,_0x15a007){return db['VoiceQueuesLog'][_0x387a('0x4b')]({'where':{'id':_0xbe6d88[_0x387a('0x47')]['id']}})[_0x387a('0x42')](handleEntityNotFound(_0x15a007,null))['then'](removeEntity(_0x15a007,null))['catch'](handleError(_0x15a007,null));};
\ No newline at end of file
+var _0xd89d=['keys','rawAttributes','length','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','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/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit','set','Content-Range','json','save','destroy','then','sendStatus','error','stack','name','send','index','fieldName','key','model','query','filters','attributes','intersection','fields','nolimit','order','sort','where','pick','merge','map','type','VIRTUAL','filter','options','VoiceQueuesLog','includeAll','include','findAll','catch','show'];(function(_0x23ca2f,_0x271c2b){var _0x4f4b51=function(_0x1cb6c0){while(--_0x1cb6c0){_0x23ca2f['push'](_0x23ca2f['shift']());}};_0x4f4b51(++_0x271c2b);}(_0xd89d,0x19c));var _0xdd89=function(_0x56e248,_0xd7da23){_0x56e248=_0x56e248-0x0;var _0x344ed2=_0xd89d[_0x56e248];return _0x344ed2;};'use strict';var emlformat=require(_0xdd89('0x0'));var rimraf=require(_0xdd89('0x1'));var zipdir=require(_0xdd89('0x2'));var jsonpatch=require(_0xdd89('0x3'));var rp=require(_0xdd89('0x4'));var moment=require(_0xdd89('0x5'));var BPromise=require(_0xdd89('0x6'));var Mustache=require(_0xdd89('0x7'));var util=require(_0xdd89('0x8'));var path=require(_0xdd89('0x9'));var sox=require(_0xdd89('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdd89('0xb'));var _=require(_0xdd89('0xc'));var squel=require(_0xdd89('0xd'));var crypto=require(_0xdd89('0xe'));var jsforce=require(_0xdd89('0xf'));var deskjs=require(_0xdd89('0x10'));var toCsv=require(_0xdd89('0x11'));var querystring=require(_0xdd89('0x12'));var Papa=require(_0xdd89('0x13'));var Redis=require(_0xdd89('0x14'));var authService=require(_0xdd89('0x15'));var qs=require(_0xdd89('0x16'));var as=require(_0xdd89('0x17'));var hardwareService=require(_0xdd89('0x18'));var logger=require(_0xdd89('0x19'))(_0xdd89('0x1a'));var utils=require(_0xdd89('0x1b'));var config=require(_0xdd89('0x1c'));var licenseUtil=require(_0xdd89('0x1d'));var db=require(_0xdd89('0x1e'))['db'];function respondWithStatusCode(_0x14fa43,_0x4d1161){_0x4d1161=_0x4d1161||0xcc;return function(_0x30b25f){if(_0x30b25f){return _0x14fa43['sendStatus'](_0x4d1161);}return _0x14fa43[_0xdd89('0x1f')](_0x4d1161)[_0xdd89('0x20')]();};}function respondWithResult(_0x1f2c3a,_0x1923bf){_0x1923bf=_0x1923bf||0xc8;return function(_0x22b93f){if(_0x22b93f){return _0x1f2c3a[_0xdd89('0x1f')](_0x1923bf)['json'](_0x22b93f);}};}function respondWithFilteredResult(_0x2ea5c9,_0x1eb47b){return function(_0x12a7fc){if(_0x12a7fc){var _0x40bd64=typeof _0x1eb47b[_0xdd89('0x21')]==='undefined'&&typeof _0x1eb47b['limit']===_0xdd89('0x22');var _0x58315a=_0x12a7fc[_0xdd89('0x23')];var _0x44d84d=_0x40bd64?0x0:_0x1eb47b[_0xdd89('0x21')];var _0xce30b3=_0x40bd64?_0x12a7fc[_0xdd89('0x23')]:_0x1eb47b[_0xdd89('0x21')]+_0x1eb47b[_0xdd89('0x24')];var _0x709a28;if(_0xce30b3>=_0x58315a){_0xce30b3=_0x58315a;_0x709a28=0xc8;}else{_0x709a28=0xce;}_0x2ea5c9['status'](_0x709a28);return _0x2ea5c9[_0xdd89('0x25')](_0xdd89('0x26'),_0x44d84d+'-'+_0xce30b3+'/'+_0x58315a)[_0xdd89('0x27')](_0x12a7fc);}return null;};}function patchUpdates(_0x45fe55){return function(_0x2d0476){try{jsonpatch['apply'](_0x2d0476,_0x45fe55,!![]);}catch(_0x31817a){return BPromise['reject'](_0x31817a);}return _0x2d0476[_0xdd89('0x28')]();};}function saveUpdates(_0x16ea16,_0x5bfeb1){return function(_0x3d9112){if(_0x3d9112){return _0x3d9112['update'](_0x16ea16)['then'](function(_0x3c502a){return _0x3c502a;});}return null;};}function removeEntity(_0x141805,_0x3d6316){return function(_0x146068){if(_0x146068){return _0x146068[_0xdd89('0x29')]()[_0xdd89('0x2a')](function(){_0x141805['status'](0xcc)[_0xdd89('0x20')]();});}};}function handleEntityNotFound(_0x125d19,_0xe071d0){return function(_0x59e48b){if(!_0x59e48b){_0x125d19[_0xdd89('0x2b')](0x194);}return _0x59e48b;};}function handleError(_0x462988,_0x5b28f9){_0x5b28f9=_0x5b28f9||0x1f4;return function(_0x50b901){logger[_0xdd89('0x2c')](_0x50b901[_0xdd89('0x2d')]);if(_0x50b901[_0xdd89('0x2e')]){delete _0x50b901[_0xdd89('0x2e')];}_0x462988[_0xdd89('0x1f')](_0x5b28f9)[_0xdd89('0x2f')](_0x50b901);};}exports[_0xdd89('0x30')]=function(_0x1fa5b2,_0x37c1f0){var _0x11386f={},_0x2ae336={},_0x3bef36={'count':0x0,'rows':[]};var _0x1c5af7=_['map'](db['VoiceQueuesLog']['rawAttributes'],function(_0x25aa41){return{'name':_0x25aa41[_0xdd89('0x31')],'type':_0x25aa41['type'][_0xdd89('0x32')]};});_0x2ae336[_0xdd89('0x33')]=_['map'](_0x1c5af7,_0xdd89('0x2e'));_0x2ae336['query']=_['keys'](_0x1fa5b2[_0xdd89('0x34')]);_0x2ae336[_0xdd89('0x35')]=_['intersection'](_0x2ae336[_0xdd89('0x33')],_0x2ae336[_0xdd89('0x34')]);_0x11386f[_0xdd89('0x36')]=_[_0xdd89('0x37')](_0x2ae336[_0xdd89('0x33')],qs[_0xdd89('0x38')](_0x1fa5b2[_0xdd89('0x34')][_0xdd89('0x38')]));_0x11386f['attributes']=_0x11386f[_0xdd89('0x36')]['length']?_0x11386f[_0xdd89('0x36')]:_0x2ae336[_0xdd89('0x33')];if(!_0x1fa5b2[_0xdd89('0x34')]['hasOwnProperty'](_0xdd89('0x39'))){_0x11386f[_0xdd89('0x24')]=qs['limit'](_0x1fa5b2[_0xdd89('0x34')]['limit']);_0x11386f[_0xdd89('0x21')]=qs[_0xdd89('0x21')](_0x1fa5b2[_0xdd89('0x34')][_0xdd89('0x21')]);}_0x11386f[_0xdd89('0x3a')]=qs[_0xdd89('0x3b')](_0x1fa5b2[_0xdd89('0x34')][_0xdd89('0x3b')]);_0x11386f[_0xdd89('0x3c')]=qs['filters'](_[_0xdd89('0x3d')](_0x1fa5b2[_0xdd89('0x34')],_0x2ae336[_0xdd89('0x35')]),_0x1c5af7);if(_0x1fa5b2[_0xdd89('0x34')]['filter']){_0x11386f['where']=_[_0xdd89('0x3e')](_0x11386f[_0xdd89('0x3c')],{'$or':_[_0xdd89('0x3f')](_0x1c5af7,function(_0x570793){if(_0x570793[_0xdd89('0x40')]!==_0xdd89('0x41')){var _0x590055={};_0x590055[_0x570793[_0xdd89('0x2e')]]={'$like':'%'+_0x1fa5b2[_0xdd89('0x34')][_0xdd89('0x42')]+'%'};return _0x590055;}})});}_0x11386f=_[_0xdd89('0x3e')]({},_0x11386f,_0x1fa5b2[_0xdd89('0x43')]);var _0x3e0617={'where':_0x11386f['where']};return db[_0xdd89('0x44')][_0xdd89('0x23')](_0x3e0617)['then'](function(_0x466566){_0x3bef36[_0xdd89('0x23')]=_0x466566;if(_0x1fa5b2[_0xdd89('0x34')][_0xdd89('0x45')]){_0x11386f[_0xdd89('0x46')]=[{'all':!![]}];}return db[_0xdd89('0x44')][_0xdd89('0x47')](_0x11386f);})[_0xdd89('0x2a')](function(_0x42d967){_0x3bef36['rows']=_0x42d967;return _0x3bef36;})[_0xdd89('0x2a')](respondWithFilteredResult(_0x37c1f0,_0x11386f))[_0xdd89('0x48')](handleError(_0x37c1f0,null));};exports[_0xdd89('0x49')]=function(_0x19bda5,_0x456696){var _0x298f28={'raw':!![],'where':{'id':_0x19bda5['params']['id']}},_0x4613d7={};_0x4613d7[_0xdd89('0x33')]=_[_0xdd89('0x4a')](db[_0xdd89('0x44')][_0xdd89('0x4b')]);_0x4613d7['query']=_[_0xdd89('0x4a')](_0x19bda5['query']);_0x4613d7[_0xdd89('0x35')]=_[_0xdd89('0x37')](_0x4613d7[_0xdd89('0x33')],_0x4613d7[_0xdd89('0x34')]);_0x298f28[_0xdd89('0x36')]=_[_0xdd89('0x37')](_0x4613d7['model'],qs[_0xdd89('0x38')](_0x19bda5[_0xdd89('0x34')]['fields']));_0x298f28[_0xdd89('0x36')]=_0x298f28['attributes'][_0xdd89('0x4c')]?_0x298f28[_0xdd89('0x36')]:_0x4613d7[_0xdd89('0x33')];if(_0x19bda5[_0xdd89('0x34')][_0xdd89('0x45')]){_0x298f28[_0xdd89('0x46')]=[{'all':!![]}];}_0x298f28=_[_0xdd89('0x3e')]({},_0x298f28,_0x19bda5[_0xdd89('0x43')]);return db[_0xdd89('0x44')][_0xdd89('0x4d')](_0x298f28)['then'](handleEntityNotFound(_0x456696,null))[_0xdd89('0x2a')](respondWithResult(_0x456696,null))[_0xdd89('0x48')](handleError(_0x456696,null));};exports[_0xdd89('0x4e')]=function(_0x128995,_0x51cccf){return db[_0xdd89('0x44')]['create'](_0x128995['body'],{})[_0xdd89('0x2a')](respondWithResult(_0x51cccf,0xc9))[_0xdd89('0x48')](handleError(_0x51cccf,null));};exports['update']=function(_0x20d35a,_0x1e8457){if(_0x20d35a[_0xdd89('0x4f')]['id']){delete _0x20d35a[_0xdd89('0x4f')]['id'];}return db['VoiceQueuesLog'][_0xdd89('0x4d')]({'where':{'id':_0x20d35a['params']['id']}})['then'](handleEntityNotFound(_0x1e8457,null))['then'](saveUpdates(_0x20d35a['body'],null))[_0xdd89('0x2a')](respondWithResult(_0x1e8457,null))[_0xdd89('0x48')](handleError(_0x1e8457,null));};exports['destroy']=function(_0x3cbd26,_0x343273){return db[_0xdd89('0x44')][_0xdd89('0x4d')]({'where':{'id':_0x3cbd26[_0xdd89('0x50')]['id']}})['then'](handleEntityNotFound(_0x343273,null))[_0xdd89('0x2a')](removeEntity(_0x343273,null))[_0xdd89('0x48')](handleError(_0x343273,null));};
\ No newline at end of file
index fa4f22b..e888d51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4833=['voice_queues_log','event_dtm','event','dtm','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define'];(function(_0x13467d,_0x4d9247){var _0x1cd6f7=function(_0xc595f3){while(--_0xc595f3){_0x13467d['push'](_0x13467d['shift']());}};_0x1cd6f7(++_0x4d9247);}(_0x4833,0xd4));var _0x3483=function(_0x4b7d85,_0x541121){_0x4b7d85=_0x4b7d85-0x0;var _0x593073=_0x4833[_0x4b7d85];return _0x593073;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3483('0x0'))(_0x3483('0x1'));var moment=require(_0x3483('0x2'));var BPromise=require('bluebird');var rp=require(_0x3483('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3483('0x4'));var config=require(_0x3483('0x5'));var attributes=require(_0x3483('0x6'));module[_0x3483('0x7')]=function(_0x181773,_0x28eea3){return _0x181773[_0x3483('0x8')]('VoiceQueuesLog',attributes,{'tableName':_0x3483('0x9'),'paranoid':![],'indexes':[{'name':_0x3483('0xa'),'fields':[_0x3483('0xb'),_0x3483('0xc')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x5081=['VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports'];(function(_0x3a93ac,_0x198ca8){var _0x35c088=function(_0xdb1a1e){while(--_0xdb1a1e){_0x3a93ac['push'](_0x3a93ac['shift']());}};_0x35c088(++_0x198ca8);}(_0x5081,0x148));var _0x1508=function(_0x102d69,_0x43a63a){_0x102d69=_0x102d69-0x0;var _0x4925b0=_0x5081[_0x102d69];return _0x4925b0;};'use strict';var _=require(_0x1508('0x0'));var util=require(_0x1508('0x1'));var logger=require(_0x1508('0x2'))(_0x1508('0x3'));var moment=require(_0x1508('0x4'));var BPromise=require(_0x1508('0x5'));var rp=require(_0x1508('0x6'));var fs=require('fs');var path=require(_0x1508('0x7'));var rimraf=require(_0x1508('0x8'));var config=require(_0x1508('0x9'));var attributes=require(_0x1508('0xa'));module[_0x1508('0xb')]=function(_0x4a339c,_0x44f4c3){return _0x4a339c['define'](_0x1508('0xc'),attributes,{'tableName':_0x1508('0xd'),'paranoid':![],'indexes':[{'name':_0x1508('0xe'),'fields':[_0x1508('0xf'),_0x1508('0x10')]}],'timestamps':![]});};
\ No newline at end of file
index ce48d67..ee75f63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x843b=['jayson/promise','client','http','request','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x48a9f0,_0x283805){var _0x512507=function(_0x91deb6){while(--_0x91deb6){_0x48a9f0['push'](_0x48a9f0['shift']());}};_0x512507(++_0x283805);}(_0x843b,0xc5));var _0xb843=function(_0x143739,_0x4daaee){_0x143739=_0x143739-0x0;var _0xade384=_0x843b[_0x143739];return _0xade384;};'use strict';var _=require(_0xb843('0x0'));var util=require(_0xb843('0x1'));var moment=require(_0xb843('0x2'));var BPromise=require('bluebird');var rs=require(_0xb843('0x3'));var fs=require('fs');var Redis=require(_0xb843('0x4'));var db=require(_0xb843('0x5'))['db'];var utils=require(_0xb843('0x6'));var logger=require(_0xb843('0x7'))(_0xb843('0x8'));var config=require(_0xb843('0x9'));var jayson=require(_0xb843('0xa'));var client=jayson[_0xb843('0xb')][_0xb843('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x6e3fa3,_0x16cf81,_0x29aa59){return new BPromise(function(_0x15cbdd,_0x101292){return client[_0xb843('0xd')](_0x6e3fa3,_0x29aa59)['then'](function(_0x2de058){logger[_0xb843('0xe')](_0xb843('0xf'),_0x16cf81,_0xb843('0x10'));logger[_0xb843('0x11')](_0xb843('0x12'),_0x16cf81,_0xb843('0x10'),JSON['stringify'](_0x2de058));if(_0x2de058[_0xb843('0x13')]){if(_0x2de058['error'][_0xb843('0x14')]===0x1f4){logger[_0xb843('0x13')](_0xb843('0xf'),_0x16cf81,_0x2de058[_0xb843('0x13')][_0xb843('0x15')]);return _0x101292(_0x2de058[_0xb843('0x13')][_0xb843('0x15')]);}logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0x16cf81,_0x2de058[_0xb843('0x13')][_0xb843('0x15')]);return _0x15cbdd(_0x2de058['error']['message']);}else{logger[_0xb843('0xe')](_0xb843('0xf'),_0x16cf81,_0xb843('0x10'));_0x15cbdd(_0x2de058['result'][_0xb843('0x15')]);}})[_0xb843('0x16')](function(_0x18670d){logger[_0xb843('0x13')](_0xb843('0xf'),_0x16cf81,_0x18670d);_0x101292(_0x18670d);});});}
\ No newline at end of file
+var _0x51ba=['code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','jayson/promise','client','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2a58d1,_0x4b8dae){var _0x3b3291=function(_0x280ce6){while(--_0x280ce6){_0x2a58d1['push'](_0x2a58d1['shift']());}};_0x3b3291(++_0x4b8dae);}(_0x51ba,0x169));var _0xa51b=function(_0x3377ed,_0x357c3c){_0x3377ed=_0x3377ed-0x0;var _0x587077=_0x51ba[_0x3377ed];return _0x587077;};'use strict';var _=require('lodash');var util=require(_0xa51b('0x0'));var moment=require(_0xa51b('0x1'));var BPromise=require(_0xa51b('0x2'));var rs=require(_0xa51b('0x3'));var fs=require('fs');var Redis=require(_0xa51b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa51b('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xa51b('0x6'));var client=jayson[_0xa51b('0x7')][_0xa51b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xb8cc99,_0x53af50,_0x15ab36){return new BPromise(function(_0x5cff86,_0x5c532d){return client[_0xa51b('0x9')](_0xb8cc99,_0x15ab36)[_0xa51b('0xa')](function(_0x4013f3){logger[_0xa51b('0xb')](_0xa51b('0xc'),_0x53af50,'request\x20sent');logger[_0xa51b('0xd')](_0xa51b('0xe'),_0x53af50,'request\x20sent',JSON[_0xa51b('0xf')](_0x4013f3));if(_0x4013f3[_0xa51b('0x10')]){if(_0x4013f3[_0xa51b('0x10')][_0xa51b('0x11')]===0x1f4){logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0x53af50,_0x4013f3[_0xa51b('0x10')][_0xa51b('0x12')]);return _0x5c532d(_0x4013f3['error'][_0xa51b('0x12')]);}logger[_0xa51b('0x10')](_0xa51b('0xc'),_0x53af50,_0x4013f3['error'][_0xa51b('0x12')]);return _0x5cff86(_0x4013f3['error'][_0xa51b('0x12')]);}else{logger[_0xa51b('0xb')](_0xa51b('0xc'),_0x53af50,'request\x20sent');_0x5cff86(_0x4013f3[_0xa51b('0x13')][_0xa51b('0x12')]);}})[_0xa51b('0x14')](function(_0x3a1ed7){logger[_0xa51b('0x10')](_0xa51b('0xc'),_0x53af50,_0x3a1ed7);_0x5c532d(_0x3a1ed7);});});}
\ No newline at end of file
index 7d33550..48a754c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a4d=['show','isAuthenticated','/:id/downloads','/:id/transcribe','downloadTranscribe','post','create','put','update','delete','destroy','exports','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','index','/describe','get','/:id'];(function(_0xfa92e1,_0x45b65c){var _0x318f81=function(_0x34d465){while(--_0x34d465){_0xfa92e1['push'](_0xfa92e1['shift']());}};_0x318f81(++_0x45b65c);}(_0x0a4d,0x1b0));var _0xd0a4=function(_0x899bef,_0x2ab3ee){_0x899bef=_0x899bef-0x0;var _0x1bf2b9=_0x0a4d[_0x899bef];return _0x1bf2b9;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd0a4('0x0'));var timeout=require(_0xd0a4('0x1'));var express=require('express');var router=express[_0xd0a4('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xd0a4('0x3'));var config=require(_0xd0a4('0x4'));var controller=require('./voiceRecording.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xd0a4('0x5')]);router['get'](_0xd0a4('0x6'),auth['isAuthenticated'](),controller['describe']);router[_0xd0a4('0x7')](_0xd0a4('0x8'),auth['isAuthenticated'](),controller[_0xd0a4('0x9')]);router[_0xd0a4('0x7')]('/:id/download',auth[_0xd0a4('0xa')](),controller['download']);router[_0xd0a4('0x7')](_0xd0a4('0xb'),controller['downloads']);router['get'](_0xd0a4('0xc'),auth[_0xd0a4('0xa')](),controller[_0xd0a4('0xd')]);router[_0xd0a4('0xe')]('/',auth[_0xd0a4('0xa')](),controller[_0xd0a4('0xf')]);router['post']('/:id/transcribe',auth[_0xd0a4('0xa')](),controller['runTranscribe']);router[_0xd0a4('0x10')](_0xd0a4('0x8'),auth[_0xd0a4('0xa')](),controller[_0xd0a4('0x11')]);router[_0xd0a4('0x12')](_0xd0a4('0x8'),auth[_0xd0a4('0xa')](),controller[_0xd0a4('0x13')]);module[_0xd0a4('0x14')]=router;
\ No newline at end of file
+var _0x010c=['download','/:id/transcribe','create','post','put','delete','destroy','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','./voiceRecording.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x4709c0,_0x3396c7){var _0x13348b=function(_0x426235){while(--_0x426235){_0x4709c0['push'](_0x4709c0['shift']());}};_0x13348b(++_0x3396c7);}(_0x010c,0x85));var _0xc010=function(_0x315c0b,_0x150529){_0x315c0b=_0x315c0b-0x0;var _0x4d55cc=_0x010c[_0x315c0b];return _0x4d55cc;};'use strict';var multer=require(_0xc010('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xc010('0x1'));var express=require(_0xc010('0x2'));var router=express[_0xc010('0x3')]();var fs_extra=require(_0xc010('0x4'));var auth=require(_0xc010('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc010('0x6'));router[_0xc010('0x7')]('/',auth[_0xc010('0x8')](),controller[_0xc010('0x9')]);router[_0xc010('0x7')](_0xc010('0xa'),auth[_0xc010('0x8')](),controller[_0xc010('0xb')]);router['get'](_0xc010('0xc'),auth[_0xc010('0x8')](),controller[_0xc010('0xd')]);router['get']('/:id/download',auth[_0xc010('0x8')](),controller[_0xc010('0xe')]);router[_0xc010('0x7')]('/:id/downloads',controller['downloads']);router[_0xc010('0x7')](_0xc010('0xf'),auth[_0xc010('0x8')](),controller['downloadTranscribe']);router['post']('/',auth[_0xc010('0x8')](),controller[_0xc010('0x10')]);router[_0xc010('0x11')](_0xc010('0xf'),auth[_0xc010('0x8')](),controller['runTranscribe']);router[_0xc010('0x12')](_0xc010('0xc'),auth[_0xc010('0x8')](),controller['update']);router[_0xc010('0x13')](_0xc010('0xc'),auth['isAuthenticated'](),controller[_0xc010('0x14')]);module['exports']=router;
\ No newline at end of file
index 4e0af44..47330f6 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(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xa9e0[_0x3ce3c];return _0x55a2c9;};'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(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'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 6f17294..19df112 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba78=['error','stack','name','send','index','map','VoiceRecording','fieldName','type','key','differenceBy','format','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','limit','sort','where','filter','merge','VIRTUAL','options','rows','catch','show','params','rawAttributes','includeAll','include','create','body','find','describe','download','../../components/encryptor','uniqueid','value','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','downloads','col','token','$and','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','listBuckets','createBucket','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','location','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeRegion','bucket','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','language','transcribeAccountId','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','IN_PROGRESS','updateAttributes','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','set','reject','update','then','destroy','sendStatus'];(function(_0x44f8ef,_0xaf336b){var _0x4db37a=function(_0x4a577c){while(--_0x4a577c){_0x44f8ef['push'](_0x44f8ef['shift']());}};_0x4db37a(++_0xaf336b);}(_0xba78,0x10b));var _0x8ba7=function(_0x9ed057,_0x12385e){_0x9ed057=_0x9ed057-0x0;var _0x51e70d=_0xba78[_0x9ed057];return _0x51e70d;};'use strict';var emlformat=require(_0x8ba7('0x0'));var rimraf=require(_0x8ba7('0x1'));var zipdir=require(_0x8ba7('0x2'));var jsonpatch=require(_0x8ba7('0x3'));var rp=require(_0x8ba7('0x4'));var moment=require(_0x8ba7('0x5'));var BPromise=require(_0x8ba7('0x6'));var Mustache=require(_0x8ba7('0x7'));var util=require(_0x8ba7('0x8'));var path=require(_0x8ba7('0x9'));var sox=require(_0x8ba7('0xa'));var csv=require(_0x8ba7('0xb'));var ejs=require(_0x8ba7('0xc'));var fs=require('fs');var fs_extra=require(_0x8ba7('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x8ba7('0xe'));var jsforce=require(_0x8ba7('0xf'));var deskjs=require(_0x8ba7('0x10'));var toCsv=require(_0x8ba7('0xb'));var querystring=require(_0x8ba7('0x11'));var Papa=require(_0x8ba7('0x12'));var AWS=require(_0x8ba7('0x13'));var uuidv4=require(_0x8ba7('0x14'));var Redis=require(_0x8ba7('0x15'));var authService=require(_0x8ba7('0x16'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8ba7('0x17'));var logger=require('../../config/logger')('api');var utils=require(_0x8ba7('0x18'));var config=require(_0x8ba7('0x19'));var licenseUtil=require(_0x8ba7('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xd17773,_0x2ff54b){_0x2ff54b=_0x2ff54b||0xcc;return function(_0x5b403a){if(_0x5b403a){return _0xd17773['sendStatus'](_0x2ff54b);}return _0xd17773[_0x8ba7('0x1b')](_0x2ff54b)[_0x8ba7('0x1c')]();};}function respondWithResult(_0x13c4ca,_0x51d99e){_0x51d99e=_0x51d99e||0xc8;return function(_0x25d1ee){if(_0x25d1ee){return _0x13c4ca['status'](_0x51d99e)[_0x8ba7('0x1d')](_0x25d1ee);}};}function respondWithFilteredResult(_0xad590b,_0x316b76){return function(_0x495d63){if(_0x495d63){var _0x54001f=typeof _0x316b76[_0x8ba7('0x1e')]===_0x8ba7('0x1f')&&typeof _0x316b76['limit']===_0x8ba7('0x1f');var _0xa3f02d=_0x495d63[_0x8ba7('0x20')];var _0x1cf7c9=_0x54001f?0x0:_0x316b76[_0x8ba7('0x1e')];var _0x93802b=_0x54001f?_0x495d63[_0x8ba7('0x20')]:_0x316b76['offset']+_0x316b76['limit'];var _0x5e5535;if(_0x93802b>=_0xa3f02d){_0x93802b=_0xa3f02d;_0x5e5535=0xc8;}else{_0x5e5535=0xce;}_0xad590b[_0x8ba7('0x1b')](_0x5e5535);return _0xad590b[_0x8ba7('0x21')]('Content-Range',_0x1cf7c9+'-'+_0x93802b+'/'+_0xa3f02d)[_0x8ba7('0x1d')](_0x495d63);}return null;};}function patchUpdates(_0x58640b){return function(_0x385f7e){try{jsonpatch['apply'](_0x385f7e,_0x58640b,!![]);}catch(_0x304548){return BPromise[_0x8ba7('0x22')](_0x304548);}return _0x385f7e['save']();};}function saveUpdates(_0x44aa3e,_0x6fcf83){return function(_0x26d756){if(_0x26d756){return _0x26d756[_0x8ba7('0x23')](_0x44aa3e)[_0x8ba7('0x24')](function(_0x2138a1){return _0x2138a1;});}return null;};}function removeEntity(_0x326893,_0x18b422){return function(_0x1f600c){if(_0x1f600c){return _0x1f600c[_0x8ba7('0x25')]()['then'](function(){_0x326893[_0x8ba7('0x1b')](0xcc)[_0x8ba7('0x1c')]();});}};}function handleEntityNotFound(_0x8ced79,_0x270518){return function(_0x400e4b){if(!_0x400e4b){_0x8ced79[_0x8ba7('0x26')](0x194);}return _0x400e4b;};}function handleError(_0x4402aa,_0x2d0052){_0x2d0052=_0x2d0052||0x1f4;return function(_0x3d7ab9){logger[_0x8ba7('0x27')](_0x3d7ab9[_0x8ba7('0x28')]);if(_0x3d7ab9[_0x8ba7('0x29')]){delete _0x3d7ab9[_0x8ba7('0x29')];}_0x4402aa['status'](_0x2d0052)[_0x8ba7('0x2a')](_0x3d7ab9);};}exports[_0x8ba7('0x2b')]=function(_0x2bfa3d,_0x318df2){var _0x43e35f={},_0x3e8bda={},_0xe94ee1={'count':0x0,'rows':[]};var _0xcbc7e7=_[_0x8ba7('0x2c')](db[_0x8ba7('0x2d')]['rawAttributes'],function(_0x234532){return{'name':_0x234532[_0x8ba7('0x2e')],'type':_0x234532[_0x8ba7('0x2f')][_0x8ba7('0x30')]};});_0x3e8bda['model']=_[_0x8ba7('0x31')](_['map'](_0xcbc7e7,_0x8ba7('0x29')),[_0x8ba7('0x32')]);_0x3e8bda[_0x8ba7('0x33')]=_[_0x8ba7('0x34')](_0x2bfa3d['query']);_0x3e8bda[_0x8ba7('0x35')]=_[_0x8ba7('0x36')](_0x3e8bda[_0x8ba7('0x37')],_0x3e8bda['query']);_0x43e35f[_0x8ba7('0x38')]=_[_0x8ba7('0x36')](_0x3e8bda[_0x8ba7('0x37')],qs[_0x8ba7('0x39')](_0x2bfa3d[_0x8ba7('0x33')][_0x8ba7('0x39')]));_0x43e35f['attributes']=_0x43e35f[_0x8ba7('0x38')][_0x8ba7('0x3a')]?_0x43e35f['attributes']:_0x3e8bda[_0x8ba7('0x37')];if(!_0x2bfa3d[_0x8ba7('0x33')][_0x8ba7('0x3b')]('nolimit')){_0x43e35f[_0x8ba7('0x3c')]=qs[_0x8ba7('0x3c')](_0x2bfa3d[_0x8ba7('0x33')][_0x8ba7('0x3c')]);_0x43e35f[_0x8ba7('0x1e')]=qs['offset'](_0x2bfa3d[_0x8ba7('0x33')][_0x8ba7('0x1e')]);}_0x43e35f['order']=qs[_0x8ba7('0x3d')](_0x2bfa3d['query'][_0x8ba7('0x3d')]);_0x43e35f[_0x8ba7('0x3e')]=qs['filters'](_['pick'](_0x2bfa3d[_0x8ba7('0x33')],_0x3e8bda[_0x8ba7('0x35')]),_0xcbc7e7);if(_0x2bfa3d['query'][_0x8ba7('0x3f')]){_0x43e35f[_0x8ba7('0x3e')]=_[_0x8ba7('0x40')](_0x43e35f[_0x8ba7('0x3e')],{'$or':_[_0x8ba7('0x2c')](_0xcbc7e7,function(_0x3f0bd7){if(_0x3f0bd7['type']!==_0x8ba7('0x41')){var _0x390216={};_0x390216[_0x3f0bd7[_0x8ba7('0x29')]]={'$like':'%'+_0x2bfa3d[_0x8ba7('0x33')]['filter']+'%'};return _0x390216;}})});}_0x43e35f=_[_0x8ba7('0x40')]({},_0x43e35f,_0x2bfa3d[_0x8ba7('0x42')]);var _0x34258a={'where':_0x43e35f[_0x8ba7('0x3e')]};return db[_0x8ba7('0x2d')][_0x8ba7('0x20')](_0x34258a)[_0x8ba7('0x24')](function(_0x1d081c){_0xe94ee1[_0x8ba7('0x20')]=_0x1d081c;if(_0x2bfa3d[_0x8ba7('0x33')]['includeAll']){_0x43e35f['include']=[{'all':!![]}];}return db[_0x8ba7('0x2d')]['findAll'](_0x43e35f);})['then'](function(_0x25e8c9){_0xe94ee1[_0x8ba7('0x43')]=_0x25e8c9;return _0xe94ee1;})[_0x8ba7('0x24')](respondWithFilteredResult(_0x318df2,_0x43e35f))[_0x8ba7('0x44')](handleError(_0x318df2,null));};exports[_0x8ba7('0x45')]=function(_0x265c6d,_0x1e9de1){var _0x3e4e1a={'raw':![],'where':{'id':_0x265c6d[_0x8ba7('0x46')]['id']}},_0x2a4c70={};_0x2a4c70[_0x8ba7('0x37')]=_[_0x8ba7('0x34')](db[_0x8ba7('0x2d')][_0x8ba7('0x47')]);_0x2a4c70['query']=_[_0x8ba7('0x34')](_0x265c6d[_0x8ba7('0x33')]);_0x2a4c70['filters']=_[_0x8ba7('0x36')](_0x2a4c70['model'],_0x2a4c70[_0x8ba7('0x33')]);_0x3e4e1a[_0x8ba7('0x38')]=_['intersection'](_0x2a4c70[_0x8ba7('0x37')],qs['fields'](_0x265c6d['query']['fields']));_0x3e4e1a['attributes']=_0x3e4e1a[_0x8ba7('0x38')][_0x8ba7('0x3a')]?_0x3e4e1a[_0x8ba7('0x38')]:_0x2a4c70[_0x8ba7('0x37')];if(_0x265c6d[_0x8ba7('0x33')][_0x8ba7('0x48')]){_0x3e4e1a[_0x8ba7('0x49')]=[{'all':!![]}];}_0x3e4e1a=_['merge']({},_0x3e4e1a,_0x265c6d['options']);return db[_0x8ba7('0x2d')]['find'](_0x3e4e1a)['then'](handleEntityNotFound(_0x1e9de1,null))[_0x8ba7('0x24')](respondWithResult(_0x1e9de1,null))['catch'](handleError(_0x1e9de1,null));};exports[_0x8ba7('0x4a')]=function(_0xa83db,_0x5352a){return db[_0x8ba7('0x2d')][_0x8ba7('0x4a')](_0xa83db['body'],{})['then'](respondWithResult(_0x5352a,0xc9))[_0x8ba7('0x44')](handleError(_0x5352a,null));};exports['update']=function(_0xd61850,_0x4648f1){if(_0xd61850['body']['id']){delete _0xd61850[_0x8ba7('0x4b')]['id'];}return db['VoiceRecording'][_0x8ba7('0x4c')]({'where':{'id':_0xd61850['params']['id']}})[_0x8ba7('0x24')](handleEntityNotFound(_0x4648f1,null))['then'](saveUpdates(_0xd61850[_0x8ba7('0x4b')],null))[_0x8ba7('0x24')](respondWithResult(_0x4648f1,null))['catch'](handleError(_0x4648f1,null));};exports[_0x8ba7('0x4d')]=function(_0x551eaa,_0xa70b62){return db['VoiceRecording'][_0x8ba7('0x4d')]()[_0x8ba7('0x24')](respondWithResult(_0xa70b62,null))[_0x8ba7('0x44')](handleError(_0xa70b62,null));};exports[_0x8ba7('0x4e')]=function(_0x3652ff,_0x615ef6,_0x4a6469){var _0x36e77c=require(_0x8ba7('0x4f'));var _0x41338b=![];var _0x40ca02={};if(_0x3652ff['query'][_0x8ba7('0x2f')]&&_0x3652ff[_0x8ba7('0x33')][_0x8ba7('0x2f')]===_0x8ba7('0x50')){_0x40ca02[_0x8ba7('0x50')]=_0x3652ff[_0x8ba7('0x46')]['id'];}else{_0x40ca02['id']=_0x3652ff[_0x8ba7('0x46')]['id'];}return db[_0x8ba7('0x2d')]['find']({'where':_0x40ca02,'attributes':['id','value'],'raw':!![]})[_0x8ba7('0x24')](handleEntityNotFound(_0x615ef6,null))[_0x8ba7('0x24')](function(_0x4398b7){if(_0x4398b7){var _0x258647=_0x4398b7[_0x8ba7('0x51')];var _0x3e33d8=util[_0x8ba7('0x32')](_0x8ba7('0x52'),_0x258647);if(fs[_0x8ba7('0x53')](_0x3e33d8)){_0x41338b=!![];return _0x36e77c[_0x8ba7('0x54')](_0x3e33d8,_0x258647,config[_0x8ba7('0x55')][_0x8ba7('0x56')])[_0x8ba7('0x24')](function(){return _0x4398b7;});}return _0x4398b7;}})['then'](function(_0x527e9a){if(_0x527e9a){var _0x4c6131=_0x527e9a[_0x8ba7('0x51')];if(!fs[_0x8ba7('0x53')](_0x4c6131)){throw new db[(_0x8ba7('0x57'))][(_0x8ba7('0x58'))](_0x8ba7('0x59'));}if(_0x527e9a[_0x8ba7('0x5a')]){return _0x615ef6[_0x8ba7('0x4e')](_0x4c6131,_0x527e9a[_0x8ba7('0x5a')]+path[_0x8ba7('0x5b')](_0x4c6131),function(){if(_0x41338b){fs[_0x8ba7('0x5c')](_0x4c6131);}});}else{return _0x615ef6[_0x8ba7('0x4e')](_0x4c6131,function(_0xf0411a){if(_0x41338b){fs['unlink'](_0x4c6131);}});}}})[_0x8ba7('0x44')](function(_0x169f11){if(_0x169f11[_0x8ba7('0x5d')]==='VoiceRecording\x20not\x20found'){_0x615ef6[_0x8ba7('0x1b')](0x194)[_0x8ba7('0x2a')](_0x8ba7('0x5e'));}else{return handleError(_0x615ef6,null);}});};exports[_0x8ba7('0x5f')]=function(_0x31ea9a,_0x29e5b7,_0x3068e0){var _0x3f7f97=require('../../components/encryptor');var _0x11a281=![];var _0xf2e80={'$and':[db['sequelize'][_0x8ba7('0x3e')](db['sequelize']['fn']('MD5',db['sequelize'][_0x8ba7('0x60')]('uniqueid')),_0x31ea9a[_0x8ba7('0x33')][_0x8ba7('0x61')])]};if(_0x31ea9a[_0x8ba7('0x33')][_0x8ba7('0x2f')]&&_0x31ea9a[_0x8ba7('0x33')]['type']===_0x8ba7('0x50')){_0xf2e80[_0x8ba7('0x62')]['push']({'uniqueid':_0x31ea9a[_0x8ba7('0x46')]['id']});}else{_0xf2e80[_0x8ba7('0x62')]['push']({'id':_0x31ea9a[_0x8ba7('0x46')]['id']});}return db[_0x8ba7('0x2d')][_0x8ba7('0x4c')]({'where':_0xf2e80,'attributes':['id','value'],'raw':!![]})['then'](handleEntityNotFound(_0x29e5b7,null))[_0x8ba7('0x24')](function(_0x34449c){if(_0x34449c){var _0x452d54=util['format'](_0x8ba7('0x52'),_0x34449c['value']);if(fs[_0x8ba7('0x53')](_0x452d54)){_0x11a281=!![];return _0x3f7f97[_0x8ba7('0x54')](_0x452d54,_0x34449c[_0x8ba7('0x51')],config[_0x8ba7('0x55')][_0x8ba7('0x56')])['then'](function(){return _0x34449c;});}return _0x34449c;}})['then'](function(_0x10f109){if(_0x10f109){if(!fs[_0x8ba7('0x53')](_0x10f109[_0x8ba7('0x51')])){throw new db['Sequelize']['ValidationError'](_0x8ba7('0x59'));}if(_0x10f109['filename']){return _0x29e5b7[_0x8ba7('0x4e')](_0x10f109[_0x8ba7('0x51')],_0x10f109[_0x8ba7('0x5a')]+path[_0x8ba7('0x5b')](_0x10f109[_0x8ba7('0x51')]),function(){if(_0x11a281){fs[_0x8ba7('0x5c')](_0x10f109[_0x8ba7('0x51')]);}});}else{return _0x29e5b7[_0x8ba7('0x4e')](_0x10f109[_0x8ba7('0x51')],function(_0x350817){if(_0x11a281){fs[_0x8ba7('0x5c')](_0x10f109[_0x8ba7('0x51')]);}});}}})[_0x8ba7('0x44')](handleError(_0x29e5b7,null));};exports[_0x8ba7('0x25')]=function(_0x55e58a,_0x87bbec){return db[_0x8ba7('0x2d')]['find']({'where':{'id':_0x55e58a['params']['id']}})[_0x8ba7('0x24')](function(_0x4ea642){if(_[_0x8ba7('0x63')](_0x4ea642)){throw new ReferenceError(_0x8ba7('0x64'));}return _0x4ea642;})[_0x8ba7('0x24')](function(_0x4468a5){var _0x3d0635=_0x4468a5[_0x8ba7('0x51')];logger[_0x8ba7('0x65')](_0x8ba7('0x66'),_0x3d0635);if(!_[_0x8ba7('0x63')](_0x4468a5['value'])&&fs[_0x8ba7('0x53')](_0x3d0635)){logger[_0x8ba7('0x65')](_0x8ba7('0x67')+_0x3d0635+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x8ba7('0x68')](_0x3d0635);}_0x3d0635=_0x3d0635+_0x8ba7('0x69');if(!_[_0x8ba7('0x63')](_0x4468a5[_0x8ba7('0x51')])&&fs[_0x8ba7('0x53')](_0x3d0635)){logger[_0x8ba7('0x65')](_0x8ba7('0x67')+_0x3d0635+_0x8ba7('0x6a'));fs[_0x8ba7('0x68')](_0x3d0635);}return _0x4468a5;})[_0x8ba7('0x24')](function(_0xc3da16){if(!_0xc3da16)throw new InternalError();return _0xc3da16[_0x8ba7('0x25')]();})[_0x8ba7('0x24')](function(){_0x87bbec[_0x8ba7('0x1b')](0xcc)[_0x8ba7('0x1c')]();})[_0x8ba7('0x44')](handleError(_0x87bbec,null));};function getBucketslist(_0x5acafd,_0x580c0e,_0x258896){return new Promise(function(_0x3c052a,_0x77b590){var _0x24a11a=new AWS['S3']({'accessKeyId':_0x580c0e,'secretAccessKey':_0x5acafd,'region':_0x258896});_0x24a11a[_0x8ba7('0x6b')]({},function(_0x4955bd,_0x1c7338){if(_0x4955bd){return _0x77b590(_0x4955bd);}else{return _0x3c052a(_0x1c7338);}});});}function createBucket(_0x31d382,_0x2bc2d6,_0x4d80ee,_0x4466b2){return new Promise(function(_0x193d88,_0x1726ca){var _0x2cfea9=new AWS['S3']({'accessKeyId':_0x2bc2d6,'secretAccessKey':_0x31d382,'region':_0x4d80ee});_0x2cfea9[_0x8ba7('0x6c')]({'Bucket':_0x4466b2},function(_0x4827de,_0x208a1d){if(_0x4827de){return _0x1726ca(_0x4827de);}else{return _0x193d88(_0x208a1d);}});});}function uploadFile(_0x24081f,_0x1eb481,_0x4fd15a,_0x372817,_0x57b117,_0x35acc4){return new Promise(function(_0x1345e4,_0x1f0c92){var _0x5aea1f=new AWS['S3']({'accessKeyId':_0x1eb481,'secretAccessKey':_0x24081f,'region':_0x4fd15a});_0x5aea1f['upload']({'Bucket':_0x372817,'Key':_0x57b117,'Body':_0x35acc4},function(_0x2d1f8c,_0x115503){if(_0x2d1f8c){return _0x1f0c92(_0x2d1f8c);}else{return _0x1345e4(_0x115503);}});});}function startTranscribe(_0x35c5dd,_0x5610bd,_0x4db23a,_0x17b991,_0x2b4311,_0x503c20){return new Promise(function(_0x43f631,_0x1653d0){var _0xcf73db=new AWS[(_0x8ba7('0x6d'))]({'accessKeyId':_0x5610bd,'secretAccessKey':_0x35c5dd,'region':_0x4db23a});_0xcf73db[_0x8ba7('0x6e')]({'TranscriptionJobName':_0x17b991,'LanguageCode':_0x2b4311,'Media':{'MediaFileUri':_0x503c20}},function(_0x255e5d,_0x1cd7e7){if(_0x255e5d){return _0x1653d0(_0x255e5d);}else{return _0x43f631(_0x1cd7e7);}});});}function transcribe(_0x3f3f5d,_0x1218b9,_0x3d13e6,_0x193cf4,_0x4d11f7,_0x2f2cd9,_0x935016){return new Promise(function(_0x578646,_0x3b8840){var _0xae6b79={};logger[_0x8ba7('0x65')](util['format'](_0x8ba7('0x6f'),_0x3f3f5d,_0x4d11f7));return uploadFile(_0x1218b9,_0x3d13e6,_0x193cf4,_0x4d11f7,path[_0x8ba7('0x70')](_0x2f2cd9),fs[_0x8ba7('0x71')](_0x2f2cd9))[_0x8ba7('0x24')](function(_0x4c770d){logger[_0x8ba7('0x65')](util['format'](_0x8ba7('0x72'),_0x3f3f5d,_0x4d11f7,_0x4c770d[_0x8ba7('0x73')]));_0xae6b79['bucket']=_0x4c770d['Bucket'];_0xae6b79[_0x8ba7('0x74')]=_0x4c770d[_0x8ba7('0x73')];logger[_0x8ba7('0x65')](util[_0x8ba7('0x32')]('[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request',_0x3f3f5d));return startTranscribe(_0x1218b9,_0x3d13e6,_0x193cf4,uuidv4(),_0x935016,_0x4c770d[_0x8ba7('0x73')]);})[_0x8ba7('0x24')](function(_0x48b02f){logger[_0x8ba7('0x65')](util[_0x8ba7('0x32')](_0x8ba7('0x75'),_0x3f3f5d,_0x48b02f[_0x8ba7('0x76')][_0x8ba7('0x77')]));_0xae6b79[_0x8ba7('0x78')]=_0x48b02f[_0x8ba7('0x76')][_0x8ba7('0x77')];_0xae6b79[_0x8ba7('0x79')]=_0x48b02f['TranscriptionJob'][_0x8ba7('0x7a')];return _0x578646(_0xae6b79);})[_0x8ba7('0x44')](function(_0x4408a4){return _0x3b8840(_0x4408a4);});});}exports[_0x8ba7('0x7b')]=function(_0x1b16b0,_0xa8d96f,_0x25a5a4){var _0x5c2090;var _0x3f0b42;var _0x246bab;var _0x52e92c=require(_0x8ba7('0x4f'));return db['VoiceRecording'][_0x8ba7('0x7c')]({'where':{'id':_0x1b16b0['params']['id']}})[_0x8ba7('0x24')](function(_0x57be8c){if(_0x57be8c){var _0x1e3f49=util[_0x8ba7('0x32')](_0x8ba7('0x52'),_0x57be8c['value']);if(fs[_0x8ba7('0x53')](_0x1e3f49)){cypher=!![];return _0x52e92c[_0x8ba7('0x54')](_0x1e3f49,_0x57be8c[_0x8ba7('0x51')],config[_0x8ba7('0x55')][_0x8ba7('0x56')])['then'](function(){return _0x57be8c;});}return _0x57be8c;}})[_0x8ba7('0x24')](function(_0x5c9ef4){if(!_0x5c9ef4){throw new db[(_0x8ba7('0x57'))]['ValidationError'](_0x8ba7('0x7d'));}_0x3f0b42=_0x5c9ef4;return db[_0x8ba7('0x7e')][_0x8ba7('0x7c')]({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0xa8d96f,null))[_0x8ba7('0x24')](function(_0x5293c7){if(_0x5293c7){_0x5c2090=_0x5293c7;if(!_0x5c2090[_0x8ba7('0x7f')]||!_0x5c2090['transcribeAccountId']||!_0x5c2090[_0x8ba7('0x80')]||!_0x5c2090['language']||!_0x5c2090[_0x8ba7('0x81')]){throw new db['Sequelize'][(_0x8ba7('0x58'))](_0x8ba7('0x82'));}if(_0x1b16b0['body'][_0x8ba7('0x83')]&&(!_0x5c2090[_0x8ba7('0x84')]||!_0x5c2090[_0x8ba7('0x85')]||!_0x5c2090[_0x8ba7('0x86')]||!_0x5c2090[_0x8ba7('0x87')]||!_0x5c2090[_0x8ba7('0x81')])){throw new db[(_0x8ba7('0x57'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}return db['CloudProvider']['findOne']({'where':{'id':_0x5c2090[_0x8ba7('0x88')]}});}})[_0x8ba7('0x24')](function(_0x348dbd){if(!_0x348dbd){throw new db[(_0x8ba7('0x57'))][(_0x8ba7('0x58'))](_0x8ba7('0x89'));}if(!_0x348dbd[_0x8ba7('0x8a')]||!_0x348dbd[_0x8ba7('0x8b')]){throw new db[(_0x8ba7('0x57'))][(_0x8ba7('0x58'))](_0x8ba7('0x8c'));}_0x246bab=_0x348dbd;return getBucketslist(_0x246bab[_0x8ba7('0x8a')],_0x246bab['data2'],_0x5c2090['transcribeRegion']);})[_0x8ba7('0x24')](function(_0x2193dc){if(_0x2193dc&&_0x2193dc['Buckets']){var _0x22bf20=_[_0x8ba7('0x4c')](_0x2193dc[_0x8ba7('0x8d')],function(_0x48a9f2){return _0x48a9f2[_0x8ba7('0x8e')]===_0x5c2090[_0x8ba7('0x81')];});if(!_0x22bf20){logger[_0x8ba7('0x65')](util[_0x8ba7('0x32')](_0x8ba7('0x8f'),_0x1b16b0[_0x8ba7('0x46')]['id'],_0x5c2090[_0x8ba7('0x81')]));return createBucket(_0x246bab['data1'],_0x246bab[_0x8ba7('0x8b')],_0x5c2090[_0x8ba7('0x80')],_0x5c2090[_0x8ba7('0x81')]);}logger['info'](util[_0x8ba7('0x32')](_0x8ba7('0x90'),_0x1b16b0[_0x8ba7('0x46')]['id'],_0x5c2090['bucket']));return;}})[_0x8ba7('0x24')](function(_0x5a3c1a){if(_0x3f0b42[_0x8ba7('0x79')]==='NEW'){return transcribe(_0x1b16b0[_0x8ba7('0x46')]['id'],_0x246bab[_0x8ba7('0x8a')],_0x246bab[_0x8ba7('0x8b')],_0x5c2090[_0x8ba7('0x80')],_0x5c2090[_0x8ba7('0x81')],_0x3f0b42[_0x8ba7('0x51')],_0x5c2090['language']);}else{logger[_0x8ba7('0x65')](util[_0x8ba7('0x32')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x1b16b0[_0x8ba7('0x46')]['id']));return{'transcribeStatus':_0x8ba7('0x91')};}})[_0x8ba7('0x24')](function(_0x3943a0){if(_0x3943a0){_0x3943a0['tempSentiment']=_0x1b16b0['body'][_0x8ba7('0x83')];return _0x3f0b42[_0x8ba7('0x92')](_0x3943a0);}})[_0x8ba7('0x24')](respondWithResult(_0xa8d96f,null))[_0x8ba7('0x44')](handleError(_0xa8d96f,null));};function writeFile(_0x411afa,_0x4d850f){return new Promise(function(_0x1fb192,_0x22ae3a){fs[_0x8ba7('0x93')](_0x4d850f,_0x411afa,function(_0x5af62d,_0x187b6e){if(_0x5af62d){return _0x22ae3a(_0x5af62d);}else{return _0x1fb192(_0x187b6e);}});});}exports[_0x8ba7('0x94')]=function(_0x1ab8f1,_0x10ae96,_0x542e76){return db['VoiceRecording'][_0x8ba7('0x7c')]({'where':{'id':_0x1ab8f1[_0x8ba7('0x46')]['id']}})['then'](handleEntityNotFound(_0x10ae96))[_0x8ba7('0x24')](function(_0x5b5117){if(_0x5b5117&&_0x5b5117['fileText']){var _0x374bca=_0x5b5117[_0x8ba7('0x95')];var _0x49b782=config[_0x8ba7('0x96')]+_0x8ba7('0x97')+_0x5b5117['id']+_0x8ba7('0x98');if(fs[_0x8ba7('0x53')](_0x49b782)){return _0x49b782;}return writeFile(_0x374bca,_0x49b782)[_0x8ba7('0x24')](function(){return _0x49b782;});}else{throw new db[(_0x8ba7('0x57'))][(_0x8ba7('0x58'))]('Transcript\x20not\x20available');}})[_0x8ba7('0x24')](function(_0x18d321){return _0x10ae96['download'](_0x18d321);})['catch'](handleError(_0x10ae96));};
\ No newline at end of file
+var _0xb124=['catch','create','body','update','describe','download','uniqueid','find','value','%s.cypher','existsSync','decryptFile','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','extname','unlink','message','send','Not\x20found','downloads','../../components/encryptor','sequelize','col','$and','push','secrets','filename','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','bucket','Location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeRegion','language','Transcribe\x20not\x20configured','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','transcribeAccountId','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','tempSentiment','updateAttributes','writeFile','fileText','/server/files/transcribes/transcribe_','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','uuid/v4','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','Content-Range','reject','save','then','destroy','error','stack','name','VoiceRecording','fieldName','type','key','differenceBy','map','format','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','where','pick','filter','merge','VIRTUAL','options','count','include','rows','params','rawAttributes'];(function(_0x2641f5,_0x2e5f77){var _0xdf1aa9=function(_0x1a479e){while(--_0x1a479e){_0x2641f5['push'](_0x2641f5['shift']());}};_0xdf1aa9(++_0x2e5f77);}(_0xb124,0xe2));var _0x4b12=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xb124[_0x618414];return _0x21c19a;};'use strict';var emlformat=require(_0x4b12('0x0'));var rimraf=require(_0x4b12('0x1'));var zipdir=require(_0x4b12('0x2'));var jsonpatch=require(_0x4b12('0x3'));var rp=require(_0x4b12('0x4'));var moment=require(_0x4b12('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x4b12('0x6'));var util=require(_0x4b12('0x7'));var path=require('path');var sox=require(_0x4b12('0x8'));var csv=require(_0x4b12('0x9'));var ejs=require(_0x4b12('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4b12('0xb'));var squel=require(_0x4b12('0xc'));var crypto=require('crypto');var jsforce=require(_0x4b12('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4b12('0xe'));var Papa=require(_0x4b12('0xf'));var AWS=require('aws-sdk');var uuidv4=require(_0x4b12('0x10'));var Redis=require('ioredis');var authService=require(_0x4b12('0x11'));var qs=require(_0x4b12('0x12'));var as=require(_0x4b12('0x13'));var hardwareService=require(_0x4b12('0x14'));var logger=require(_0x4b12('0x15'))('api');var utils=require(_0x4b12('0x16'));var config=require(_0x4b12('0x17'));var licenseUtil=require(_0x4b12('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5b3bb4,_0x5af153){_0x5af153=_0x5af153||0xcc;return function(_0x52148c){if(_0x52148c){return _0x5b3bb4[_0x4b12('0x19')](_0x5af153);}return _0x5b3bb4['status'](_0x5af153)[_0x4b12('0x1a')]();};}function respondWithResult(_0x3b5930,_0x4846c0){_0x4846c0=_0x4846c0||0xc8;return function(_0xdd9ac4){if(_0xdd9ac4){return _0x3b5930[_0x4b12('0x1b')](_0x4846c0)[_0x4b12('0x1c')](_0xdd9ac4);}};}function respondWithFilteredResult(_0x3a961e,_0x5e9fb6){return function(_0x1794e5){if(_0x1794e5){var _0x21e3a2=typeof _0x5e9fb6[_0x4b12('0x1d')]===_0x4b12('0x1e')&&typeof _0x5e9fb6['limit']==='undefined';var _0x1700c8=_0x1794e5['count'];var _0x244bfe=_0x21e3a2?0x0:_0x5e9fb6[_0x4b12('0x1d')];var _0x40e2f9=_0x21e3a2?_0x1794e5['count']:_0x5e9fb6[_0x4b12('0x1d')]+_0x5e9fb6[_0x4b12('0x1f')];var _0x31ccea;if(_0x40e2f9>=_0x1700c8){_0x40e2f9=_0x1700c8;_0x31ccea=0xc8;}else{_0x31ccea=0xce;}_0x3a961e[_0x4b12('0x1b')](_0x31ccea);return _0x3a961e['set'](_0x4b12('0x20'),_0x244bfe+'-'+_0x40e2f9+'/'+_0x1700c8)[_0x4b12('0x1c')](_0x1794e5);}return null;};}function patchUpdates(_0x24f452){return function(_0x5271a3){try{jsonpatch['apply'](_0x5271a3,_0x24f452,!![]);}catch(_0x4030b2){return BPromise[_0x4b12('0x21')](_0x4030b2);}return _0x5271a3[_0x4b12('0x22')]();};}function saveUpdates(_0x10eddb,_0x7d6875){return function(_0x59251e){if(_0x59251e){return _0x59251e['update'](_0x10eddb)[_0x4b12('0x23')](function(_0x18c1e0){return _0x18c1e0;});}return null;};}function removeEntity(_0x240cda,_0xb65bfb){return function(_0x21c08a){if(_0x21c08a){return _0x21c08a[_0x4b12('0x24')]()['then'](function(){_0x240cda[_0x4b12('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1d8e22,_0x51641a){return function(_0x45d68c){if(!_0x45d68c){_0x1d8e22['sendStatus'](0x194);}return _0x45d68c;};}function handleError(_0x4725ef,_0x1c5221){_0x1c5221=_0x1c5221||0x1f4;return function(_0x1dfa24){logger[_0x4b12('0x25')](_0x1dfa24[_0x4b12('0x26')]);if(_0x1dfa24['name']){delete _0x1dfa24[_0x4b12('0x27')];}_0x4725ef[_0x4b12('0x1b')](_0x1c5221)['send'](_0x1dfa24);};}exports['index']=function(_0x486ec4,_0x1c7b94){var _0x460990={},_0x4042b4={},_0x5f3639={'count':0x0,'rows':[]};var _0x188052=_['map'](db[_0x4b12('0x28')]['rawAttributes'],function(_0x1f120b){return{'name':_0x1f120b[_0x4b12('0x29')],'type':_0x1f120b[_0x4b12('0x2a')][_0x4b12('0x2b')]};});_0x4042b4['model']=_[_0x4b12('0x2c')](_[_0x4b12('0x2d')](_0x188052,'name'),[_0x4b12('0x2e')]);_0x4042b4[_0x4b12('0x2f')]=_[_0x4b12('0x30')](_0x486ec4[_0x4b12('0x2f')]);_0x4042b4[_0x4b12('0x31')]=_['intersection'](_0x4042b4[_0x4b12('0x32')],_0x4042b4[_0x4b12('0x2f')]);_0x460990[_0x4b12('0x33')]=_[_0x4b12('0x34')](_0x4042b4[_0x4b12('0x32')],qs[_0x4b12('0x35')](_0x486ec4['query'][_0x4b12('0x35')]));_0x460990['attributes']=_0x460990[_0x4b12('0x33')][_0x4b12('0x36')]?_0x460990[_0x4b12('0x33')]:_0x4042b4['model'];if(!_0x486ec4[_0x4b12('0x2f')][_0x4b12('0x37')]('nolimit')){_0x460990['limit']=qs[_0x4b12('0x1f')](_0x486ec4[_0x4b12('0x2f')]['limit']);_0x460990[_0x4b12('0x1d')]=qs[_0x4b12('0x1d')](_0x486ec4[_0x4b12('0x2f')]['offset']);}_0x460990[_0x4b12('0x38')]=qs['sort'](_0x486ec4[_0x4b12('0x2f')]['sort']);_0x460990[_0x4b12('0x39')]=qs['filters'](_[_0x4b12('0x3a')](_0x486ec4[_0x4b12('0x2f')],_0x4042b4[_0x4b12('0x31')]),_0x188052);if(_0x486ec4['query'][_0x4b12('0x3b')]){_0x460990['where']=_[_0x4b12('0x3c')](_0x460990[_0x4b12('0x39')],{'$or':_[_0x4b12('0x2d')](_0x188052,function(_0x2ef00b){if(_0x2ef00b[_0x4b12('0x2a')]!==_0x4b12('0x3d')){var _0x508713={};_0x508713[_0x2ef00b[_0x4b12('0x27')]]={'$like':'%'+_0x486ec4[_0x4b12('0x2f')]['filter']+'%'};return _0x508713;}})});}_0x460990=_[_0x4b12('0x3c')]({},_0x460990,_0x486ec4[_0x4b12('0x3e')]);var _0x29f0a3={'where':_0x460990['where']};return db[_0x4b12('0x28')][_0x4b12('0x3f')](_0x29f0a3)[_0x4b12('0x23')](function(_0x3d6f2b){_0x5f3639[_0x4b12('0x3f')]=_0x3d6f2b;if(_0x486ec4['query']['includeAll']){_0x460990[_0x4b12('0x40')]=[{'all':!![]}];}return db[_0x4b12('0x28')]['findAll'](_0x460990);})[_0x4b12('0x23')](function(_0x2baa57){_0x5f3639[_0x4b12('0x41')]=_0x2baa57;return _0x5f3639;})[_0x4b12('0x23')](respondWithFilteredResult(_0x1c7b94,_0x460990))['catch'](handleError(_0x1c7b94,null));};exports['show']=function(_0x4ec54f,_0x3ebcbc){var _0x3413c7={'raw':![],'where':{'id':_0x4ec54f[_0x4b12('0x42')]['id']}},_0xedf680={};_0xedf680[_0x4b12('0x32')]=_[_0x4b12('0x30')](db['VoiceRecording'][_0x4b12('0x43')]);_0xedf680['query']=_['keys'](_0x4ec54f[_0x4b12('0x2f')]);_0xedf680['filters']=_['intersection'](_0xedf680[_0x4b12('0x32')],_0xedf680[_0x4b12('0x2f')]);_0x3413c7['attributes']=_[_0x4b12('0x34')](_0xedf680[_0x4b12('0x32')],qs[_0x4b12('0x35')](_0x4ec54f[_0x4b12('0x2f')][_0x4b12('0x35')]));_0x3413c7['attributes']=_0x3413c7[_0x4b12('0x33')]['length']?_0x3413c7['attributes']:_0xedf680[_0x4b12('0x32')];if(_0x4ec54f[_0x4b12('0x2f')]['includeAll']){_0x3413c7[_0x4b12('0x40')]=[{'all':!![]}];}_0x3413c7=_[_0x4b12('0x3c')]({},_0x3413c7,_0x4ec54f[_0x4b12('0x3e')]);return db['VoiceRecording']['find'](_0x3413c7)[_0x4b12('0x23')](handleEntityNotFound(_0x3ebcbc,null))[_0x4b12('0x23')](respondWithResult(_0x3ebcbc,null))[_0x4b12('0x44')](handleError(_0x3ebcbc,null));};exports[_0x4b12('0x45')]=function(_0x38d299,_0x2b8aa9){return db[_0x4b12('0x28')][_0x4b12('0x45')](_0x38d299[_0x4b12('0x46')],{})[_0x4b12('0x23')](respondWithResult(_0x2b8aa9,0xc9))['catch'](handleError(_0x2b8aa9,null));};exports[_0x4b12('0x47')]=function(_0x1a7129,_0x46ab01){if(_0x1a7129[_0x4b12('0x46')]['id']){delete _0x1a7129[_0x4b12('0x46')]['id'];}return db[_0x4b12('0x28')]['find']({'where':{'id':_0x1a7129[_0x4b12('0x42')]['id']}})[_0x4b12('0x23')](handleEntityNotFound(_0x46ab01,null))[_0x4b12('0x23')](saveUpdates(_0x1a7129[_0x4b12('0x46')],null))['then'](respondWithResult(_0x46ab01,null))[_0x4b12('0x44')](handleError(_0x46ab01,null));};exports[_0x4b12('0x48')]=function(_0x39b944,_0x47dbf8){return db[_0x4b12('0x28')]['describe']()['then'](respondWithResult(_0x47dbf8,null))[_0x4b12('0x44')](handleError(_0x47dbf8,null));};exports[_0x4b12('0x49')]=function(_0x1858ba,_0x38efe9,_0x5d1201){var _0x49f7c9=require('../../components/encryptor');var _0x10b09f=![];var _0x3e70d5={};if(_0x1858ba[_0x4b12('0x2f')]['type']&&_0x1858ba[_0x4b12('0x2f')][_0x4b12('0x2a')]==='uniqueid'){_0x3e70d5[_0x4b12('0x4a')]=_0x1858ba['params']['id'];}else{_0x3e70d5['id']=_0x1858ba[_0x4b12('0x42')]['id'];}return db['VoiceRecording'][_0x4b12('0x4b')]({'where':_0x3e70d5,'attributes':['id','value'],'raw':!![]})[_0x4b12('0x23')](handleEntityNotFound(_0x38efe9,null))['then'](function(_0x5cc9bb){if(_0x5cc9bb){var _0x21e998=_0x5cc9bb[_0x4b12('0x4c')];var _0x1fa1d0=util[_0x4b12('0x2e')](_0x4b12('0x4d'),_0x21e998);if(fs[_0x4b12('0x4e')](_0x1fa1d0)){_0x10b09f=!![];return _0x49f7c9[_0x4b12('0x4f')](_0x1fa1d0,_0x21e998,config['secrets'][_0x4b12('0x50')])[_0x4b12('0x23')](function(){return _0x5cc9bb;});}return _0x5cc9bb;}})[_0x4b12('0x23')](function(_0x248ec9){if(_0x248ec9){var _0x3eb9b6=_0x248ec9[_0x4b12('0x4c')];if(!fs['existsSync'](_0x3eb9b6)){throw new db[(_0x4b12('0x51'))][(_0x4b12('0x52'))](_0x4b12('0x53'));}if(_0x248ec9['filename']){return _0x38efe9[_0x4b12('0x49')](_0x3eb9b6,_0x248ec9['filename']+path[_0x4b12('0x54')](_0x3eb9b6),function(){if(_0x10b09f){fs[_0x4b12('0x55')](_0x3eb9b6);}});}else{return _0x38efe9[_0x4b12('0x49')](_0x3eb9b6,function(_0x5a27fe){if(_0x10b09f){fs['unlink'](_0x3eb9b6);}});}}})['catch'](function(_0xda7463){if(_0xda7463[_0x4b12('0x56')]===_0x4b12('0x53')){_0x38efe9[_0x4b12('0x1b')](0x194)[_0x4b12('0x57')](_0x4b12('0x58'));}else{return handleError(_0x38efe9,null);}});};exports[_0x4b12('0x59')]=function(_0x3ba3d6,_0xe9ffd5,_0x14a862){var _0x4d0c58=require(_0x4b12('0x5a'));var _0x5b9a67=![];var _0x5803dd={'$and':[db[_0x4b12('0x5b')][_0x4b12('0x39')](db[_0x4b12('0x5b')]['fn']('MD5',db[_0x4b12('0x5b')][_0x4b12('0x5c')](_0x4b12('0x4a'))),_0x3ba3d6[_0x4b12('0x2f')]['token'])]};if(_0x3ba3d6['query'][_0x4b12('0x2a')]&&_0x3ba3d6[_0x4b12('0x2f')][_0x4b12('0x2a')]===_0x4b12('0x4a')){_0x5803dd[_0x4b12('0x5d')][_0x4b12('0x5e')]({'uniqueid':_0x3ba3d6[_0x4b12('0x42')]['id']});}else{_0x5803dd[_0x4b12('0x5d')][_0x4b12('0x5e')]({'id':_0x3ba3d6[_0x4b12('0x42')]['id']});}return db[_0x4b12('0x28')][_0x4b12('0x4b')]({'where':_0x5803dd,'attributes':['id',_0x4b12('0x4c')],'raw':!![]})['then'](handleEntityNotFound(_0xe9ffd5,null))[_0x4b12('0x23')](function(_0x4f7fc4){if(_0x4f7fc4){var _0x5ef32d=util[_0x4b12('0x2e')](_0x4b12('0x4d'),_0x4f7fc4['value']);if(fs[_0x4b12('0x4e')](_0x5ef32d)){_0x5b9a67=!![];return _0x4d0c58[_0x4b12('0x4f')](_0x5ef32d,_0x4f7fc4['value'],config[_0x4b12('0x5f')][_0x4b12('0x50')])[_0x4b12('0x23')](function(){return _0x4f7fc4;});}return _0x4f7fc4;}})['then'](function(_0x517223){if(_0x517223){if(!fs[_0x4b12('0x4e')](_0x517223[_0x4b12('0x4c')])){throw new db[(_0x4b12('0x51'))][(_0x4b12('0x52'))](_0x4b12('0x53'));}if(_0x517223[_0x4b12('0x60')]){return _0xe9ffd5[_0x4b12('0x49')](_0x517223[_0x4b12('0x4c')],_0x517223['filename']+path['extname'](_0x517223[_0x4b12('0x4c')]),function(){if(_0x5b9a67){fs[_0x4b12('0x55')](_0x517223[_0x4b12('0x4c')]);}});}else{return _0xe9ffd5['download'](_0x517223[_0x4b12('0x4c')],function(_0xccc9f9){if(_0x5b9a67){fs['unlink'](_0x517223[_0x4b12('0x4c')]);}});}}})['catch'](handleError(_0xe9ffd5,null));};exports[_0x4b12('0x24')]=function(_0x5b99c3,_0x54bb7c){return db['VoiceRecording'][_0x4b12('0x4b')]({'where':{'id':_0x5b99c3[_0x4b12('0x42')]['id']}})[_0x4b12('0x23')](function(_0x2a73be){if(_['isNil'](_0x2a73be)){throw new ReferenceError('Entity\x20not\x20found');}return _0x2a73be;})[_0x4b12('0x23')](function(_0xba6a50){var _0x5e8a49=_0xba6a50[_0x4b12('0x4c')];logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x5e8a49);if(!_[_0x4b12('0x61')](_0xba6a50[_0x4b12('0x4c')])&&fs[_0x4b12('0x4e')](_0x5e8a49)){logger[_0x4b12('0x62')](_0x4b12('0x63')+_0x5e8a49+_0x4b12('0x64'));fs[_0x4b12('0x65')](_0x5e8a49);}_0x5e8a49=_0x5e8a49+_0x4b12('0x66');if(!_['isNil'](_0xba6a50[_0x4b12('0x4c')])&&fs[_0x4b12('0x4e')](_0x5e8a49)){logger[_0x4b12('0x62')](_0x4b12('0x63')+_0x5e8a49+_0x4b12('0x64'));fs[_0x4b12('0x65')](_0x5e8a49);}return _0xba6a50;})[_0x4b12('0x23')](function(_0x25b4a7){if(!_0x25b4a7)throw new InternalError();return _0x25b4a7[_0x4b12('0x24')]();})[_0x4b12('0x23')](function(){_0x54bb7c['status'](0xcc)['end']();})['catch'](handleError(_0x54bb7c,null));};function getBucketslist(_0x493435,_0x3568ea,_0x76377c){return new Promise(function(_0x3756b0,_0x4c411d){var _0x1519b6=new AWS['S3']({'accessKeyId':_0x3568ea,'secretAccessKey':_0x493435,'region':_0x76377c});_0x1519b6['listBuckets']({},function(_0x315889,_0x581185){if(_0x315889){return _0x4c411d(_0x315889);}else{return _0x3756b0(_0x581185);}});});}function createBucket(_0x52d94c,_0x5dbe61,_0x97524a,_0x53a5d8){return new Promise(function(_0x205cd2,_0x3d34e3){var _0x475bfc=new AWS['S3']({'accessKeyId':_0x5dbe61,'secretAccessKey':_0x52d94c,'region':_0x97524a});_0x475bfc[_0x4b12('0x67')]({'Bucket':_0x53a5d8},function(_0x387059,_0x339ea9){if(_0x387059){return _0x3d34e3(_0x387059);}else{return _0x205cd2(_0x339ea9);}});});}function uploadFile(_0x2d0d2a,_0x15c35e,_0x25b654,_0x3719a4,_0x1de809,_0x1d030f){return new Promise(function(_0x1d4982,_0x13a3a5){var _0x46d4b1=new AWS['S3']({'accessKeyId':_0x15c35e,'secretAccessKey':_0x2d0d2a,'region':_0x25b654});_0x46d4b1[_0x4b12('0x68')]({'Bucket':_0x3719a4,'Key':_0x1de809,'Body':_0x1d030f},function(_0x71912d,_0x12e109){if(_0x71912d){return _0x13a3a5(_0x71912d);}else{return _0x1d4982(_0x12e109);}});});}function startTranscribe(_0xcbf772,_0x18b102,_0x188fee,_0x2c5b68,_0x16edf5,_0x59016e){return new Promise(function(_0xcf409c,_0x9f0bd4){var _0x5118a6=new AWS[(_0x4b12('0x69'))]({'accessKeyId':_0x18b102,'secretAccessKey':_0xcbf772,'region':_0x188fee});_0x5118a6[_0x4b12('0x6a')]({'TranscriptionJobName':_0x2c5b68,'LanguageCode':_0x16edf5,'Media':{'MediaFileUri':_0x59016e}},function(_0x108163,_0x1687fb){if(_0x108163){return _0x9f0bd4(_0x108163);}else{return _0xcf409c(_0x1687fb);}});});}function transcribe(_0x5cace6,_0x5eb261,_0x2006b7,_0x5e4ce6,_0x5bd4ab,_0x3bb640,_0x178392){return new Promise(function(_0xfa30ca,_0x50f8fe){var _0x1d8128={};logger[_0x4b12('0x62')](util[_0x4b12('0x2e')](_0x4b12('0x6b'),_0x5cace6,_0x5bd4ab));return uploadFile(_0x5eb261,_0x2006b7,_0x5e4ce6,_0x5bd4ab,path[_0x4b12('0x6c')](_0x3bb640),fs[_0x4b12('0x6d')](_0x3bb640))[_0x4b12('0x23')](function(_0x153fd1){logger[_0x4b12('0x62')](util[_0x4b12('0x2e')](_0x4b12('0x6e'),_0x5cace6,_0x5bd4ab,_0x153fd1['Location']));_0x1d8128[_0x4b12('0x6f')]=_0x153fd1['Bucket'];_0x1d8128['location']=_0x153fd1[_0x4b12('0x70')];logger[_0x4b12('0x62')](util[_0x4b12('0x2e')](_0x4b12('0x71'),_0x5cace6));return startTranscribe(_0x5eb261,_0x2006b7,_0x5e4ce6,uuidv4(),_0x178392,_0x153fd1[_0x4b12('0x70')]);})[_0x4b12('0x23')](function(_0x505be8){logger[_0x4b12('0x62')](util[_0x4b12('0x2e')](_0x4b12('0x72'),_0x5cace6,_0x505be8[_0x4b12('0x73')]['TranscriptionJobName']));_0x1d8128[_0x4b12('0x74')]=_0x505be8[_0x4b12('0x73')]['TranscriptionJobName'];_0x1d8128[_0x4b12('0x75')]=_0x505be8['TranscriptionJob'][_0x4b12('0x76')];return _0xfa30ca(_0x1d8128);})[_0x4b12('0x44')](function(_0x1be077){return _0x50f8fe(_0x1be077);});});}exports[_0x4b12('0x77')]=function(_0x3ed8df,_0x1fc6c9,_0x29ae90){var _0x50175c;var _0x367680;var _0x188da6;var _0x100333=require(_0x4b12('0x5a'));return db[_0x4b12('0x28')][_0x4b12('0x78')]({'where':{'id':_0x3ed8df[_0x4b12('0x42')]['id']}})['then'](function(_0x1c4f52){if(_0x1c4f52){var _0xb97d4f=util[_0x4b12('0x2e')](_0x4b12('0x4d'),_0x1c4f52['value']);if(fs[_0x4b12('0x4e')](_0xb97d4f)){cypher=!![];return _0x100333[_0x4b12('0x4f')](_0xb97d4f,_0x1c4f52[_0x4b12('0x4c')],config[_0x4b12('0x5f')][_0x4b12('0x50')])[_0x4b12('0x23')](function(){return _0x1c4f52;});}return _0x1c4f52;}})['then'](function(_0x9c4c06){if(!_0x9c4c06){throw new db[(_0x4b12('0x51'))]['ValidationError'](_0x4b12('0x79'));}_0x367680=_0x9c4c06;return db[_0x4b12('0x7a')]['findOne']({'where':{'id':0x1}});})[_0x4b12('0x23')](handleEntityNotFound(_0x1fc6c9,null))['then'](function(_0x287f7e){if(_0x287f7e){_0x50175c=_0x287f7e;if(!_0x50175c[_0x4b12('0x7b')]||!_0x50175c['transcribeAccountId']||!_0x50175c[_0x4b12('0x7c')]||!_0x50175c[_0x4b12('0x7d')]||!_0x50175c['bucket']){throw new db[(_0x4b12('0x51'))][(_0x4b12('0x52'))](_0x4b12('0x7e'));}if(_0x3ed8df[_0x4b12('0x46')]['runSentiment']&&(!_0x50175c[_0x4b12('0x7f')]||!_0x50175c[_0x4b12('0x80')]||!_0x50175c[_0x4b12('0x81')]||!_0x50175c[_0x4b12('0x7d')]||!_0x50175c[_0x4b12('0x6f')])){throw new db[(_0x4b12('0x51'))][(_0x4b12('0x52'))](_0x4b12('0x82'));}return db[_0x4b12('0x83')][_0x4b12('0x78')]({'where':{'id':_0x50175c[_0x4b12('0x84')]}});}})[_0x4b12('0x23')](function(_0x5a4d08){if(!_0x5a4d08){throw new db[(_0x4b12('0x51'))][(_0x4b12('0x52'))](_0x4b12('0x85'));}if(!_0x5a4d08[_0x4b12('0x86')]||!_0x5a4d08[_0x4b12('0x87')]){throw new db[(_0x4b12('0x51'))][(_0x4b12('0x52'))](_0x4b12('0x88'));}_0x188da6=_0x5a4d08;return getBucketslist(_0x188da6[_0x4b12('0x86')],_0x188da6[_0x4b12('0x87')],_0x50175c[_0x4b12('0x7c')]);})[_0x4b12('0x23')](function(_0x2d5515){if(_0x2d5515&&_0x2d5515[_0x4b12('0x89')]){var _0x304a60=_[_0x4b12('0x4b')](_0x2d5515['Buckets'],function(_0x32c0ad){return _0x32c0ad[_0x4b12('0x8a')]===_0x50175c['bucket'];});if(!_0x304a60){logger['info'](util[_0x4b12('0x2e')](_0x4b12('0x8b'),_0x3ed8df[_0x4b12('0x42')]['id'],_0x50175c['bucket']));return createBucket(_0x188da6[_0x4b12('0x86')],_0x188da6[_0x4b12('0x87')],_0x50175c['transcribeRegion'],_0x50175c[_0x4b12('0x6f')]);}logger[_0x4b12('0x62')](util[_0x4b12('0x2e')](_0x4b12('0x8c'),_0x3ed8df[_0x4b12('0x42')]['id'],_0x50175c[_0x4b12('0x6f')]));return;}})[_0x4b12('0x23')](function(_0xb5b40){if(_0x367680['transcribeStatus']===_0x4b12('0x8d')){return transcribe(_0x3ed8df['params']['id'],_0x188da6['data1'],_0x188da6['data2'],_0x50175c[_0x4b12('0x7c')],_0x50175c[_0x4b12('0x6f')],_0x367680[_0x4b12('0x4c')],_0x50175c['language']);}else{logger[_0x4b12('0x62')](util[_0x4b12('0x2e')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x3ed8df[_0x4b12('0x42')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0x4b12('0x23')](function(_0x2d7828){if(_0x2d7828){_0x2d7828[_0x4b12('0x8e')]=_0x3ed8df[_0x4b12('0x46')]['runSentiment'];return _0x367680[_0x4b12('0x8f')](_0x2d7828);}})[_0x4b12('0x23')](respondWithResult(_0x1fc6c9,null))[_0x4b12('0x44')](handleError(_0x1fc6c9,null));};function writeFile(_0x18db64,_0xc3fe91){return new Promise(function(_0x5233fb,_0x1aadfd){fs[_0x4b12('0x90')](_0xc3fe91,_0x18db64,function(_0x482e19,_0x1b9a17){if(_0x482e19){return _0x1aadfd(_0x482e19);}else{return _0x5233fb(_0x1b9a17);}});});}exports['downloadTranscribe']=function(_0x21ce7e,_0x25b9aa,_0x106774){return db[_0x4b12('0x28')]['findOne']({'where':{'id':_0x21ce7e['params']['id']}})[_0x4b12('0x23')](handleEntityNotFound(_0x25b9aa))['then'](function(_0x14c0c6){if(_0x14c0c6&&_0x14c0c6[_0x4b12('0x91')]){var _0x54c7e6=_0x14c0c6[_0x4b12('0x91')];var _0x22fc11=config['root']+_0x4b12('0x92')+_0x14c0c6['id']+'.txt';if(fs[_0x4b12('0x4e')](_0x22fc11)){return _0x22fc11;}return writeFile(_0x54c7e6,_0x22fc11)['then'](function(){return _0x22fc11;});}else{throw new db['Sequelize']['ValidationError']('Transcript\x20not\x20available');}})['then'](function(_0x396674){return _0x25b9aa[_0x4b12('0x49')](_0x396674);})[_0x4b12('0x44')](handleError(_0x25b9aa));};
\ No newline at end of file
index 730235b..e74b023 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b77=['moment','bluebird','rimraf','../../config/environment','./voiceRecording.attributes','VoiceRecording','voice_recordings','uniqueid','lodash','util','../../config/logger','api'];(function(_0x10c4f9,_0x100fb4){var _0x522b09=function(_0x3325e4){while(--_0x3325e4){_0x10c4f9['push'](_0x10c4f9['shift']());}};_0x522b09(++_0x100fb4);}(_0x3b77,0x188));var _0x73b7=function(_0x417fb1,_0x276c2a){_0x417fb1=_0x417fb1-0x0;var _0x556114=_0x3b77[_0x417fb1];return _0x556114;};'use strict';var _=require(_0x73b7('0x0'));var util=require(_0x73b7('0x1'));var logger=require(_0x73b7('0x2'))(_0x73b7('0x3'));var moment=require(_0x73b7('0x4'));var BPromise=require(_0x73b7('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x73b7('0x6'));var config=require(_0x73b7('0x7'));var attributes=require(_0x73b7('0x8'));module['exports']=function(_0x590b94,_0x54f38c){return _0x590b94['define'](_0x73b7('0x9'),attributes,{'tableName':_0x73b7('0xa'),'paranoid':![],'indexes':[{'name':_0x73b7('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8da0=['util','../../config/logger','moment','path','exports','define','VoiceRecording','voice_recordings','uniqueid','lodash'];(function(_0x672fed,_0x5223d9){var _0x505ac8=function(_0x328173){while(--_0x328173){_0x672fed['push'](_0x672fed['shift']());}};_0x505ac8(++_0x5223d9);}(_0x8da0,0x135));var _0x08da=function(_0x435500,_0x21aebb){_0x435500=_0x435500-0x0;var _0x1e29e7=_0x8da0[_0x435500];return _0x1e29e7;};'use strict';var _=require(_0x08da('0x0'));var util=require(_0x08da('0x1'));var logger=require(_0x08da('0x2'))('api');var moment=require(_0x08da('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x08da('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./voiceRecording.attributes');module[_0x08da('0x5')]=function(_0x8fd120,_0x7fecda){return _0x8fd120[_0x08da('0x6')](_0x08da('0x7'),attributes,{'tableName':_0x08da('0x8'),'paranoid':![],'indexes':[{'name':_0x08da('0x9'),'fields':[_0x08da('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index c1bbb9a..5cc12d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x573bb4,_0x59ad96){var _0x2675c9=function(_0x33091f){while(--_0x33091f){_0x573bb4['push'](_0x573bb4['shift']());}};_0x2675c9(++_0x59ad96);}(_0x93e9,0xcc));var _0x993e=function(_0x127dd9,_0x2da436){_0x127dd9=_0x127dd9-0x0;var _0x277545=_0x93e9[_0x127dd9];return _0x277545;};'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
+var _0x0424=['stringify','error','message','info','result','catch','UpdateVoiceRecording','VoiceRecording','body','options','raw','where','limit','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','value','%s.cypher','encryptFile','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s'];(function(_0x572438,_0x1b94fe){var _0xc6e9a7=function(_0x5b25a7){while(--_0x5b25a7){_0x572438['push'](_0x572438['shift']());}};_0xc6e9a7(++_0x1b94fe);}(_0x0424,0x159));var _0x4042=function(_0xf5c7bf,_0x3a157d){_0xf5c7bf=_0xf5c7bf-0x0;var _0x1425e6=_0x0424[_0xf5c7bf];return _0x1425e6;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4042('0x0'));var BPromise=require(_0x4042('0x1'));var rs=require(_0x4042('0x2'));var fs=require('fs');var Redis=require(_0x4042('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4042('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x4042('0x5'));var jayson=require(_0x4042('0x6'));var client=jayson[_0x4042('0x7')][_0x4042('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3abaf1,_0xa5310f,_0x10ec07){return new BPromise(function(_0x5d11bf,_0x509772){return client[_0x4042('0x9')](_0x3abaf1,_0x10ec07)[_0x4042('0xa')](function(_0x103e4a){logger['info'](_0x4042('0xb'),_0xa5310f,_0x4042('0xc'));logger[_0x4042('0xd')](_0x4042('0xe'),_0xa5310f,_0x4042('0xc'),JSON[_0x4042('0xf')](_0x103e4a));if(_0x103e4a[_0x4042('0x10')]){if(_0x103e4a[_0x4042('0x10')]['code']===0x1f4){logger[_0x4042('0x10')](_0x4042('0xb'),_0xa5310f,_0x103e4a['error'][_0x4042('0x11')]);return _0x509772(_0x103e4a[_0x4042('0x10')][_0x4042('0x11')]);}logger[_0x4042('0x10')](_0x4042('0xb'),_0xa5310f,_0x103e4a[_0x4042('0x10')][_0x4042('0x11')]);return _0x5d11bf(_0x103e4a['error'][_0x4042('0x11')]);}else{logger[_0x4042('0x12')]('VoiceRecording,\x20%s,\x20%s',_0xa5310f,_0x4042('0xc'));_0x5d11bf(_0x103e4a[_0x4042('0x13')][_0x4042('0x11')]);}})[_0x4042('0x14')](function(_0x31e765){logger[_0x4042('0x10')](_0x4042('0xb'),_0xa5310f,_0x31e765);_0x509772(_0x31e765);});});}exports[_0x4042('0x15')]=function(_0x466077){var _0x4b02d4=this;return new Promise(function(_0xe5c1ec,_0x4fe024){return db[_0x4042('0x16')]['update'](_0x466077[_0x4042('0x17')],{'raw':_0x466077[_0x4042('0x18')]?_0x466077[_0x4042('0x18')][_0x4042('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x466077['options']?_0x466077[_0x4042('0x18')][_0x4042('0x1a')]||null:null,'attributes':_0x466077[_0x4042('0x18')]?_0x466077[_0x4042('0x18')]['attributes']||null:null,'limit':_0x466077[_0x4042('0x18')]?_0x466077[_0x4042('0x18')][_0x4042('0x1b')]||null:null})[_0x4042('0xa')](function(_0x352631){logger['info'](_0x4042('0x15'),_0x466077);logger[_0x4042('0xd')]('UpdateVoiceRecording',_0x466077,JSON[_0x4042('0xf')](_0x352631));_0xe5c1ec(_0x352631);})['catch'](function(_0x271b82){logger[_0x4042('0x10')](_0x4042('0x15'),_0x271b82['message'],_0x466077);_0x4fe024(_0x4b02d4[_0x4042('0x10')](0x1f4,_0x271b82[_0x4042('0x11')]));});});};exports[_0x4042('0x1c')]=function(_0xbdadc8){var _0x1c4d9f=this;return new Promise(function(_0x52e575,_0x58c409){var _0x1d8d48=require(_0x4042('0x1d'));var _0x26542c;return db[_0x4042('0x1e')][_0x4042('0x1f')]({'attributes':['id',_0x4042('0x20')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x33733b){_0x26542c=_0x33733b;return db[_0x4042('0x16')]['create'](_0xbdadc8[_0x4042('0x17')]);})[_0x4042('0xa')](function(_0xe924fe){if(_0x26542c['callRecordingEncryption']&&fs['existsSync'](_0xe924fe[_0x4042('0x21')])){var _0x43bd1c=util['format'](_0x4042('0x22'),_0xe924fe[_0x4042('0x21')]);return _0x1d8d48[_0x4042('0x23')](_0xe924fe[_0x4042('0x21')],_0x43bd1c,config[_0x4042('0x24')][_0x4042('0x25')])[_0x4042('0xa')](function(){fs[_0x4042('0x26')](_0xe924fe[_0x4042('0x21')]);logger['info'](_0x4042('0x27'));return _0xe924fe;});}return _0xe924fe;})[_0x4042('0xa')](function(_0x5320f8){logger[_0x4042('0x12')](_0x4042('0x1c'),_0xbdadc8);logger['debug'](_0x4042('0x1c'),_0xbdadc8,JSON[_0x4042('0xf')](_0x5320f8));_0x52e575(_0x5320f8);})[_0x4042('0x14')](function(_0xaa7c99){logger[_0x4042('0x10')](_0x4042('0x1c'),_0xaa7c99[_0x4042('0x11')],_0xbdadc8);_0x58c409(_0x1c4d9f[_0x4042('0x10')](0x1f4,_0xaa7c99[_0x4042('0x11')]));});});};
\ No newline at end of file
index ae3a46c..a0f1da4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcddc=['destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','./voiceTransferReport.controller','get','isAuthenticated','index','describe','/:id','show','post','create','put','update','delete'];(function(_0x56f735,_0x2eca14){var _0x33efa5=function(_0x179eb5){while(--_0x179eb5){_0x56f735['push'](_0x56f735['shift']());}};_0x33efa5(++_0x2eca14);}(_0xcddc,0xf2));var _0xccdd=function(_0x597d3f,_0x2c9104){_0x597d3f=_0x597d3f-0x0;var _0x459288=_0xcddc[_0x597d3f];return _0x459288;};'use strict';var multer=require(_0xccdd('0x0'));var util=require('util');var path=require(_0xccdd('0x1'));var timeout=require(_0xccdd('0x2'));var express=require(_0xccdd('0x3'));var router=express['Router']();var fs_extra=require(_0xccdd('0x4'));var auth=require(_0xccdd('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xccdd('0x6'));router[_0xccdd('0x7')]('/',auth[_0xccdd('0x8')](),controller[_0xccdd('0x9')]);router['get']('/describe',auth[_0xccdd('0x8')](),controller[_0xccdd('0xa')]);router[_0xccdd('0x7')](_0xccdd('0xb'),auth[_0xccdd('0x8')](),controller[_0xccdd('0xc')]);router[_0xccdd('0xd')]('/',auth[_0xccdd('0x8')](),controller[_0xccdd('0xe')]);router[_0xccdd('0xf')](_0xccdd('0xb'),auth[_0xccdd('0x8')](),controller[_0xccdd('0x10')]);router[_0xccdd('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xccdd('0x12')]);module[_0xccdd('0x13')]=router;
\ No newline at end of file
+var _0x4222=['/describe','describe','/:id','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x5c3c0b,_0x4ee35e){var _0x52ecd2=function(_0x3cf575){while(--_0x3cf575){_0x5c3c0b['push'](_0x5c3c0b['shift']());}};_0x52ecd2(++_0x4ee35e);}(_0x4222,0x134));var _0x2422=function(_0x3070dc,_0x40cf11){_0x3070dc=_0x3070dc-0x0;var _0x431489=_0x4222[_0x3070dc];return _0x431489;};'use strict';var multer=require(_0x2422('0x0'));var util=require('util');var path=require(_0x2422('0x1'));var timeout=require(_0x2422('0x2'));var express=require(_0x2422('0x3'));var router=express[_0x2422('0x4')]();var fs_extra=require(_0x2422('0x5'));var auth=require(_0x2422('0x6'));var interaction=require(_0x2422('0x7'));var config=require(_0x2422('0x8'));var controller=require('./voiceTransferReport.controller');router[_0x2422('0x9')]('/',auth[_0x2422('0xa')](),controller[_0x2422('0xb')]);router[_0x2422('0x9')](_0x2422('0xc'),auth[_0x2422('0xa')](),controller[_0x2422('0xd')]);router[_0x2422('0x9')](_0x2422('0xe'),auth[_0x2422('0xa')](),controller['show']);router['post']('/',auth[_0x2422('0xa')](),controller['create']);router[_0x2422('0xf')](_0x2422('0xe'),auth[_0x2422('0xa')](),controller[_0x2422('0x10')]);router[_0x2422('0x11')]('/:id',auth[_0x2422('0xa')](),controller[_0x2422('0x12')]);module[_0x2422('0x13')]=router;
\ No newline at end of file
index 05e652e..3de088e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7742=['attended','STRING','Yes','sequelize','moment','exports','ENUM','blind'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x7742,0x12b));var _0x2774=function(_0x23ff9f,_0x1d886d){_0x23ff9f=_0x23ff9f-0x0;var _0x4bc1cc=_0x7742[_0x23ff9f];return _0x4bc1cc;};'use strict';var Sequelize=require(_0x2774('0x0'));var moment=require(_0x2774('0x1'));module[_0x2774('0x2')]={'type':{'type':Sequelize[_0x2774('0x3')](_0x2774('0x4'),_0x2774('0x5'))},'result':{'type':Sequelize[_0x2774('0x6')]},'transfererchannel':{'type':Sequelize[_0x2774('0x6')]},'transferercalleridnum':{'type':Sequelize[_0x2774('0x6')]},'transferercalleridname':{'type':Sequelize[_0x2774('0x6')]},'transfererconnectedlinenum':{'type':Sequelize[_0x2774('0x6')]},'transfererconnectedlinename':{'type':Sequelize[_0x2774('0x6')]},'transfereraccountcode':{'type':Sequelize[_0x2774('0x6')]},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize[_0x2774('0x6')]},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize[_0x2774('0x6')]},'transfereecalleridnum':{'type':Sequelize[_0x2774('0x6')]},'transfereecalleridname':{'type':Sequelize[_0x2774('0x6')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x2774('0x6')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0x2774('0x6')]},'transfereecontext':{'type':Sequelize[_0x2774('0x6')]},'transfereeexten':{'type':Sequelize[_0x2774('0x6')]},'transfereelinkedid':{'type':Sequelize[_0x2774('0x6')]},'isexternal':{'type':Sequelize[_0x2774('0x3')](_0x2774('0x7'),'No')},'context':{'type':Sequelize[_0x2774('0x6')]},'extension':{'type':Sequelize[_0x2774('0x6')]}};
\ No newline at end of file
+var _0x3c1b=['exports','ENUM','blind','attended','STRING'];(function(_0x32c260,_0x3fd61){var _0x27d39d=function(_0x2ae9d1){while(--_0x2ae9d1){_0x32c260['push'](_0x32c260['shift']());}};_0x27d39d(++_0x3fd61);}(_0x3c1b,0x127));var _0xb3c1=function(_0x198534,_0x37605b){_0x198534=_0x198534-0x0;var _0x53f523=_0x3c1b[_0x198534];return _0x53f523;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0xb3c1('0x0')]={'type':{'type':Sequelize[_0xb3c1('0x1')](_0xb3c1('0x2'),_0xb3c1('0x3'))},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize[_0xb3c1('0x4')]},'transferercalleridnum':{'type':Sequelize[_0xb3c1('0x4')]},'transferercalleridname':{'type':Sequelize[_0xb3c1('0x4')]},'transfererconnectedlinenum':{'type':Sequelize[_0xb3c1('0x4')]},'transfererconnectedlinename':{'type':Sequelize['STRING']},'transfereraccountcode':{'type':Sequelize[_0xb3c1('0x4')]},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize[_0xb3c1('0x4')]},'transfereeconnectedlinename':{'type':Sequelize[_0xb3c1('0x4')]},'transfereeaccountcode':{'type':Sequelize[_0xb3c1('0x4')]},'transfereecontext':{'type':Sequelize[_0xb3c1('0x4')]},'transfereeexten':{'type':Sequelize[_0xb3c1('0x4')]},'transfereelinkedid':{'type':Sequelize[_0xb3c1('0x4')]},'isexternal':{'type':Sequelize[_0xb3c1('0x1')]('Yes','No')},'context':{'type':Sequelize[_0xb3c1('0x4')]},'extension':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 8bdcb7b..59f599f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x866c=['zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','crypto','jsforce','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','apply','reject','save','update','then','destroy','error','stack','name','map','VoiceTransferReport','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','catch','show','keys','rawAttributes','include','find','create','body','params','describe','rimraf'];(function(_0x4d2687,_0x3c300d){var _0x3e91d2=function(_0x46558d){while(--_0x46558d){_0x4d2687['push'](_0x4d2687['shift']());}};_0x3e91d2(++_0x3c300d);}(_0x866c,0x17b));var _0xc866=function(_0x2e60a7,_0x560a31){_0x2e60a7=_0x2e60a7-0x0;var _0x46c32f=_0x866c[_0x2e60a7];return _0x46c32f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc866('0x0'));var zipdir=require(_0xc866('0x1'));var jsonpatch=require(_0xc866('0x2'));var rp=require('request-promise');var moment=require(_0xc866('0x3'));var BPromise=require(_0xc866('0x4'));var Mustache=require('mustache');var util=require(_0xc866('0x5'));var path=require(_0xc866('0x6'));var sox=require('sox');var csv=require(_0xc866('0x7'));var ejs=require(_0xc866('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xc866('0x9'));var jsforce=require(_0xc866('0xa'));var deskjs=require(_0xc866('0xb'));var toCsv=require(_0xc866('0x7'));var querystring=require(_0xc866('0xc'));var Papa=require(_0xc866('0xd'));var Redis=require(_0xc866('0xe'));var authService=require(_0xc866('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xc866('0x10'));var hardwareService=require(_0xc866('0x11'));var logger=require(_0xc866('0x12'))(_0xc866('0x13'));var utils=require(_0xc866('0x14'));var config=require(_0xc866('0x15'));var licenseUtil=require(_0xc866('0x16'));var db=require(_0xc866('0x17'))['db'];function respondWithStatusCode(_0x4943f1,_0x658d98){_0x658d98=_0x658d98||0xcc;return function(_0x2e80b7){if(_0x2e80b7){return _0x4943f1[_0xc866('0x18')](_0x658d98);}return _0x4943f1[_0xc866('0x19')](_0x658d98)[_0xc866('0x1a')]();};}function respondWithResult(_0x19d32e,_0x685a49){_0x685a49=_0x685a49||0xc8;return function(_0xb002a1){if(_0xb002a1){return _0x19d32e[_0xc866('0x19')](_0x685a49)[_0xc866('0x1b')](_0xb002a1);}};}function respondWithFilteredResult(_0x189de6,_0x293669){return function(_0x126d3d){if(_0x126d3d){var _0x3c4bb7=typeof _0x293669[_0xc866('0x1c')]===_0xc866('0x1d')&&typeof _0x293669[_0xc866('0x1e')]===_0xc866('0x1d');var _0x25bbef=_0x126d3d[_0xc866('0x1f')];var _0x49aae0=_0x3c4bb7?0x0:_0x293669['offset'];var _0x32d734=_0x3c4bb7?_0x126d3d['count']:_0x293669[_0xc866('0x1c')]+_0x293669[_0xc866('0x1e')];var _0x3b7bef;if(_0x32d734>=_0x25bbef){_0x32d734=_0x25bbef;_0x3b7bef=0xc8;}else{_0x3b7bef=0xce;}_0x189de6[_0xc866('0x19')](_0x3b7bef);return _0x189de6[_0xc866('0x20')]('Content-Range',_0x49aae0+'-'+_0x32d734+'/'+_0x25bbef)[_0xc866('0x1b')](_0x126d3d);}return null;};}function patchUpdates(_0x56449e){return function(_0x204af4){try{jsonpatch[_0xc866('0x21')](_0x204af4,_0x56449e,!![]);}catch(_0x1ec8eb){return BPromise[_0xc866('0x22')](_0x1ec8eb);}return _0x204af4[_0xc866('0x23')]();};}function saveUpdates(_0x10e539,_0x2e5c1d){return function(_0x2a3fa8){if(_0x2a3fa8){return _0x2a3fa8[_0xc866('0x24')](_0x10e539)[_0xc866('0x25')](function(_0x39272f){return _0x39272f;});}return null;};}function removeEntity(_0xc42f3f,_0x534000){return function(_0x228f8a){if(_0x228f8a){return _0x228f8a[_0xc866('0x26')]()['then'](function(){_0xc42f3f[_0xc866('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f536d,_0x3fad8e){return function(_0x5b571a){if(!_0x5b571a){_0x2f536d[_0xc866('0x18')](0x194);}return _0x5b571a;};}function handleError(_0x4c8535,_0x4adbcb){_0x4adbcb=_0x4adbcb||0x1f4;return function(_0x6b27b0){logger[_0xc866('0x27')](_0x6b27b0[_0xc866('0x28')]);if(_0x6b27b0[_0xc866('0x29')]){delete _0x6b27b0[_0xc866('0x29')];}_0x4c8535[_0xc866('0x19')](_0x4adbcb)['send'](_0x6b27b0);};}exports['index']=function(_0x429148,_0xe7250a){var _0x4ad0cd={},_0x53f41c={},_0x2e9971={'count':0x0,'rows':[]};var _0x5175ec=_[_0xc866('0x2a')](db[_0xc866('0x2b')]['rawAttributes'],function(_0x248deb){return{'name':_0x248deb[_0xc866('0x2c')],'type':_0x248deb[_0xc866('0x2d')][_0xc866('0x2e')]};});_0x53f41c[_0xc866('0x2f')]=_['map'](_0x5175ec,_0xc866('0x29'));_0x53f41c['query']=_['keys'](_0x429148[_0xc866('0x30')]);_0x53f41c[_0xc866('0x31')]=_['intersection'](_0x53f41c[_0xc866('0x2f')],_0x53f41c[_0xc866('0x30')]);_0x4ad0cd[_0xc866('0x32')]=_[_0xc866('0x33')](_0x53f41c[_0xc866('0x2f')],qs[_0xc866('0x34')](_0x429148[_0xc866('0x30')][_0xc866('0x34')]));_0x4ad0cd[_0xc866('0x32')]=_0x4ad0cd['attributes'][_0xc866('0x35')]?_0x4ad0cd[_0xc866('0x32')]:_0x53f41c[_0xc866('0x2f')];if(!_0x429148['query'][_0xc866('0x36')](_0xc866('0x37'))){_0x4ad0cd[_0xc866('0x1e')]=qs[_0xc866('0x1e')](_0x429148[_0xc866('0x30')][_0xc866('0x1e')]);_0x4ad0cd[_0xc866('0x1c')]=qs[_0xc866('0x1c')](_0x429148[_0xc866('0x30')]['offset']);}_0x4ad0cd[_0xc866('0x38')]=qs[_0xc866('0x39')](_0x429148['query']['sort']);_0x4ad0cd[_0xc866('0x3a')]=qs[_0xc866('0x31')](_[_0xc866('0x3b')](_0x429148[_0xc866('0x30')],_0x53f41c['filters']),_0x5175ec);if(_0x429148[_0xc866('0x30')][_0xc866('0x3c')]){_0x4ad0cd[_0xc866('0x3a')]=_['merge'](_0x4ad0cd['where'],{'$or':_['map'](_0x5175ec,function(_0xfe9b7f){if(_0xfe9b7f['type']!==_0xc866('0x3d')){var _0x3b6488={};_0x3b6488[_0xfe9b7f['name']]={'$like':'%'+_0x429148[_0xc866('0x30')][_0xc866('0x3c')]+'%'};return _0x3b6488;}})});}_0x4ad0cd=_[_0xc866('0x3e')]({},_0x4ad0cd,_0x429148[_0xc866('0x3f')]);var _0x3531fb={'where':_0x4ad0cd[_0xc866('0x3a')]};return db[_0xc866('0x2b')][_0xc866('0x1f')](_0x3531fb)[_0xc866('0x25')](function(_0x334bd0){_0x2e9971[_0xc866('0x1f')]=_0x334bd0;if(_0x429148[_0xc866('0x30')][_0xc866('0x40')]){_0x4ad0cd['include']=[{'all':!![]}];}return db[_0xc866('0x2b')][_0xc866('0x41')](_0x4ad0cd);})[_0xc866('0x25')](function(_0x1aa024){_0x2e9971['rows']=_0x1aa024;return _0x2e9971;})['then'](respondWithFilteredResult(_0xe7250a,_0x4ad0cd))[_0xc866('0x42')](handleError(_0xe7250a,null));};exports[_0xc866('0x43')]=function(_0x5afe05,_0x4ee6b0){var _0x331563={'raw':!![],'where':{'id':_0x5afe05['params']['id']}},_0x466c73={};_0x466c73[_0xc866('0x2f')]=_[_0xc866('0x44')](db[_0xc866('0x2b')][_0xc866('0x45')]);_0x466c73[_0xc866('0x30')]=_['keys'](_0x5afe05[_0xc866('0x30')]);_0x466c73[_0xc866('0x31')]=_[_0xc866('0x33')](_0x466c73[_0xc866('0x2f')],_0x466c73[_0xc866('0x30')]);_0x331563[_0xc866('0x32')]=_['intersection'](_0x466c73[_0xc866('0x2f')],qs[_0xc866('0x34')](_0x5afe05[_0xc866('0x30')]['fields']));_0x331563[_0xc866('0x32')]=_0x331563['attributes']['length']?_0x331563[_0xc866('0x32')]:_0x466c73['model'];if(_0x5afe05[_0xc866('0x30')][_0xc866('0x40')]){_0x331563[_0xc866('0x46')]=[{'all':!![]}];}_0x331563=_[_0xc866('0x3e')]({},_0x331563,_0x5afe05[_0xc866('0x3f')]);return db['VoiceTransferReport'][_0xc866('0x47')](_0x331563)[_0xc866('0x25')](handleEntityNotFound(_0x4ee6b0,null))[_0xc866('0x25')](respondWithResult(_0x4ee6b0,null))[_0xc866('0x42')](handleError(_0x4ee6b0,null));};exports[_0xc866('0x48')]=function(_0x57b3c1,_0x412a93){return db[_0xc866('0x2b')][_0xc866('0x48')](_0x57b3c1['body'],{})[_0xc866('0x25')](respondWithResult(_0x412a93,0xc9))[_0xc866('0x42')](handleError(_0x412a93,null));};exports['update']=function(_0x21b05a,_0x17279d){if(_0x21b05a['body']['id']){delete _0x21b05a[_0xc866('0x49')]['id'];}return db[_0xc866('0x2b')][_0xc866('0x47')]({'where':{'id':_0x21b05a[_0xc866('0x4a')]['id']}})['then'](handleEntityNotFound(_0x17279d,null))[_0xc866('0x25')](saveUpdates(_0x21b05a['body'],null))[_0xc866('0x25')](respondWithResult(_0x17279d,null))[_0xc866('0x42')](handleError(_0x17279d,null));};exports['destroy']=function(_0x1e5ef0,_0x4d9f3a){return db['VoiceTransferReport']['find']({'where':{'id':_0x1e5ef0[_0xc866('0x4a')]['id']}})[_0xc866('0x25')](handleEntityNotFound(_0x4d9f3a,null))['then'](removeEntity(_0x4d9f3a,null))['catch'](handleError(_0x4d9f3a,null));};exports[_0xc866('0x4b')]=function(_0x45e5d5,_0x3d7a38){return db[_0xc866('0x2b')][_0xc866('0x4b')]()[_0xc866('0x25')](respondWithResult(_0x3d7a38,null))[_0xc866('0x42')](handleError(_0x3d7a38,null));};
\ No newline at end of file
+var _0xe55a=['nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','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/license/util','sendStatus','status','end','json','undefined','count','offset','limit','set','apply','reject','save','update','then','destroy','name','send','index','map','VoiceTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x5c23a7,_0x405c78){var _0x1002e1=function(_0x4af0bc){while(--_0x4af0bc){_0x5c23a7['push'](_0x5c23a7['shift']());}};_0x1002e1(++_0x405c78);}(_0xe55a,0x148));var _0xae55=function(_0x431480,_0x40c7a7){_0x431480=_0x431480-0x0;var _0x139af7=_0xe55a[_0x431480];return _0x139af7;};'use strict';var emlformat=require(_0xae55('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xae55('0x1'));var jsonpatch=require(_0xae55('0x2'));var rp=require(_0xae55('0x3'));var moment=require('moment');var BPromise=require(_0xae55('0x4'));var Mustache=require(_0xae55('0x5'));var util=require(_0xae55('0x6'));var path=require(_0xae55('0x7'));var sox=require('sox');var csv=require(_0xae55('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xae55('0x9'));var _=require(_0xae55('0xa'));var squel=require('squel');var crypto=require(_0xae55('0xb'));var jsforce=require(_0xae55('0xc'));var deskjs=require(_0xae55('0xd'));var toCsv=require('to-csv');var querystring=require(_0xae55('0xe'));var Papa=require(_0xae55('0xf'));var Redis=require(_0xae55('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xae55('0x11'));var as=require(_0xae55('0x12'));var hardwareService=require(_0xae55('0x13'));var logger=require(_0xae55('0x14'))(_0xae55('0x15'));var utils=require(_0xae55('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xae55('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49333b,_0x1f28ac){_0x1f28ac=_0x1f28ac||0xcc;return function(_0x2e4fb4){if(_0x2e4fb4){return _0x49333b[_0xae55('0x18')](_0x1f28ac);}return _0x49333b[_0xae55('0x19')](_0x1f28ac)[_0xae55('0x1a')]();};}function respondWithResult(_0x3bb9c1,_0x4be4f4){_0x4be4f4=_0x4be4f4||0xc8;return function(_0x34faf4){if(_0x34faf4){return _0x3bb9c1[_0xae55('0x19')](_0x4be4f4)[_0xae55('0x1b')](_0x34faf4);}};}function respondWithFilteredResult(_0x3b73b2,_0x59d934){return function(_0x3b3f9e){if(_0x3b3f9e){var _0x63be89=typeof _0x59d934['offset']===_0xae55('0x1c')&&typeof _0x59d934['limit']===_0xae55('0x1c');var _0x5760fe=_0x3b3f9e[_0xae55('0x1d')];var _0x5cffa5=_0x63be89?0x0:_0x59d934[_0xae55('0x1e')];var _0x3e55bc=_0x63be89?_0x3b3f9e['count']:_0x59d934[_0xae55('0x1e')]+_0x59d934[_0xae55('0x1f')];var _0x162cc3;if(_0x3e55bc>=_0x5760fe){_0x3e55bc=_0x5760fe;_0x162cc3=0xc8;}else{_0x162cc3=0xce;}_0x3b73b2['status'](_0x162cc3);return _0x3b73b2[_0xae55('0x20')]('Content-Range',_0x5cffa5+'-'+_0x3e55bc+'/'+_0x5760fe)[_0xae55('0x1b')](_0x3b3f9e);}return null;};}function patchUpdates(_0x61d7b3){return function(_0x16888c){try{jsonpatch[_0xae55('0x21')](_0x16888c,_0x61d7b3,!![]);}catch(_0x5021c8){return BPromise[_0xae55('0x22')](_0x5021c8);}return _0x16888c[_0xae55('0x23')]();};}function saveUpdates(_0x5c3638,_0xb81e21){return function(_0x1300b3){if(_0x1300b3){return _0x1300b3[_0xae55('0x24')](_0x5c3638)[_0xae55('0x25')](function(_0x5647bf){return _0x5647bf;});}return null;};}function removeEntity(_0x190431,_0x386bf0){return function(_0x2fb191){if(_0x2fb191){return _0x2fb191[_0xae55('0x26')]()['then'](function(){_0x190431[_0xae55('0x19')](0xcc)[_0xae55('0x1a')]();});}};}function handleEntityNotFound(_0x221694,_0x3f1aa5){return function(_0x30b4d2){if(!_0x30b4d2){_0x221694[_0xae55('0x18')](0x194);}return _0x30b4d2;};}function handleError(_0x1ff441,_0x71e945){_0x71e945=_0x71e945||0x1f4;return function(_0x420b30){logger['error'](_0x420b30['stack']);if(_0x420b30['name']){delete _0x420b30[_0xae55('0x27')];}_0x1ff441[_0xae55('0x19')](_0x71e945)[_0xae55('0x28')](_0x420b30);};}exports[_0xae55('0x29')]=function(_0x196f75,_0x449992){var _0x66c46e={},_0x593cd0={},_0x4090ff={'count':0x0,'rows':[]};var _0x3cf20f=_[_0xae55('0x2a')](db[_0xae55('0x2b')][_0xae55('0x2c')],function(_0x5895eb){return{'name':_0x5895eb[_0xae55('0x2d')],'type':_0x5895eb[_0xae55('0x2e')][_0xae55('0x2f')]};});_0x593cd0[_0xae55('0x30')]=_[_0xae55('0x2a')](_0x3cf20f,_0xae55('0x27'));_0x593cd0[_0xae55('0x31')]=_[_0xae55('0x32')](_0x196f75['query']);_0x593cd0[_0xae55('0x33')]=_['intersection'](_0x593cd0[_0xae55('0x30')],_0x593cd0[_0xae55('0x31')]);_0x66c46e['attributes']=_[_0xae55('0x34')](_0x593cd0[_0xae55('0x30')],qs[_0xae55('0x35')](_0x196f75[_0xae55('0x31')][_0xae55('0x35')]));_0x66c46e['attributes']=_0x66c46e[_0xae55('0x36')][_0xae55('0x37')]?_0x66c46e[_0xae55('0x36')]:_0x593cd0['model'];if(!_0x196f75[_0xae55('0x31')][_0xae55('0x38')](_0xae55('0x39'))){_0x66c46e['limit']=qs[_0xae55('0x1f')](_0x196f75[_0xae55('0x31')][_0xae55('0x1f')]);_0x66c46e['offset']=qs['offset'](_0x196f75[_0xae55('0x31')][_0xae55('0x1e')]);}_0x66c46e[_0xae55('0x3a')]=qs[_0xae55('0x3b')](_0x196f75[_0xae55('0x31')]['sort']);_0x66c46e[_0xae55('0x3c')]=qs[_0xae55('0x33')](_[_0xae55('0x3d')](_0x196f75[_0xae55('0x31')],_0x593cd0['filters']),_0x3cf20f);if(_0x196f75[_0xae55('0x31')][_0xae55('0x3e')]){_0x66c46e[_0xae55('0x3c')]=_[_0xae55('0x3f')](_0x66c46e[_0xae55('0x3c')],{'$or':_[_0xae55('0x2a')](_0x3cf20f,function(_0x143965){if(_0x143965[_0xae55('0x2e')]!==_0xae55('0x40')){var _0x31a02c={};_0x31a02c[_0x143965[_0xae55('0x27')]]={'$like':'%'+_0x196f75[_0xae55('0x31')]['filter']+'%'};return _0x31a02c;}})});}_0x66c46e=_[_0xae55('0x3f')]({},_0x66c46e,_0x196f75[_0xae55('0x41')]);var _0x356feb={'where':_0x66c46e['where']};return db[_0xae55('0x2b')]['count'](_0x356feb)['then'](function(_0x4d9727){_0x4090ff[_0xae55('0x1d')]=_0x4d9727;if(_0x196f75['query']['includeAll']){_0x66c46e[_0xae55('0x42')]=[{'all':!![]}];}return db[_0xae55('0x2b')][_0xae55('0x43')](_0x66c46e);})[_0xae55('0x25')](function(_0x550d31){_0x4090ff[_0xae55('0x44')]=_0x550d31;return _0x4090ff;})['then'](respondWithFilteredResult(_0x449992,_0x66c46e))[_0xae55('0x45')](handleError(_0x449992,null));};exports[_0xae55('0x46')]=function(_0x2ae693,_0x5492e7){var _0x5564a4={'raw':!![],'where':{'id':_0x2ae693[_0xae55('0x47')]['id']}},_0x400a16={};_0x400a16[_0xae55('0x30')]=_[_0xae55('0x32')](db[_0xae55('0x2b')][_0xae55('0x2c')]);_0x400a16[_0xae55('0x31')]=_[_0xae55('0x32')](_0x2ae693[_0xae55('0x31')]);_0x400a16[_0xae55('0x33')]=_[_0xae55('0x34')](_0x400a16['model'],_0x400a16[_0xae55('0x31')]);_0x5564a4[_0xae55('0x36')]=_[_0xae55('0x34')](_0x400a16['model'],qs[_0xae55('0x35')](_0x2ae693[_0xae55('0x31')][_0xae55('0x35')]));_0x5564a4[_0xae55('0x36')]=_0x5564a4['attributes'][_0xae55('0x37')]?_0x5564a4[_0xae55('0x36')]:_0x400a16['model'];if(_0x2ae693[_0xae55('0x31')][_0xae55('0x48')]){_0x5564a4['include']=[{'all':!![]}];}_0x5564a4=_[_0xae55('0x3f')]({},_0x5564a4,_0x2ae693[_0xae55('0x41')]);return db[_0xae55('0x2b')]['find'](_0x5564a4)[_0xae55('0x25')](handleEntityNotFound(_0x5492e7,null))[_0xae55('0x25')](respondWithResult(_0x5492e7,null))['catch'](handleError(_0x5492e7,null));};exports[_0xae55('0x49')]=function(_0x456e7f,_0x31e6da){return db[_0xae55('0x2b')]['create'](_0x456e7f['body'],{})[_0xae55('0x25')](respondWithResult(_0x31e6da,0xc9))[_0xae55('0x45')](handleError(_0x31e6da,null));};exports['update']=function(_0x4e5722,_0x15a563){if(_0x4e5722['body']['id']){delete _0x4e5722[_0xae55('0x4a')]['id'];}return db[_0xae55('0x2b')]['find']({'where':{'id':_0x4e5722[_0xae55('0x47')]['id']}})[_0xae55('0x25')](handleEntityNotFound(_0x15a563,null))['then'](saveUpdates(_0x4e5722['body'],null))[_0xae55('0x25')](respondWithResult(_0x15a563,null))[_0xae55('0x45')](handleError(_0x15a563,null));};exports[_0xae55('0x26')]=function(_0x275343,_0x24062e){return db[_0xae55('0x2b')][_0xae55('0x4b')]({'where':{'id':_0x275343['params']['id']}})['then'](handleEntityNotFound(_0x24062e,null))[_0xae55('0x25')](removeEntity(_0x24062e,null))[_0xae55('0x45')](handleError(_0x24062e,null));};exports[_0xae55('0x4c')]=function(_0x1a58ac,_0x126d9c){return db[_0xae55('0x2b')][_0xae55('0x4c')]()[_0xae55('0x25')](respondWithResult(_0x126d9c,null))[_0xae55('0x45')](handleError(_0x126d9c,null));};
\ No newline at end of file
index 5fed685..de45cfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x065e=['util','../../config/logger','request-promise','path','rimraf','./voiceTransferReport.attributes','exports','VoiceTransferReport','report_call_transfer','lodash'];(function(_0x5627e1,_0x1b2dbf){var _0x2f013f=function(_0x142015){while(--_0x142015){_0x5627e1['push'](_0x5627e1['shift']());}};_0x2f013f(++_0x1b2dbf);}(_0x065e,0x1e9));var _0xe065=function(_0x3fb8dd,_0x18c07d){_0x3fb8dd=_0x3fb8dd-0x0;var _0x288028=_0x065e[_0x3fb8dd];return _0x288028;};'use strict';var _=require(_0xe065('0x0'));var util=require(_0xe065('0x1'));var logger=require(_0xe065('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xe065('0x3'));var fs=require('fs');var path=require(_0xe065('0x4'));var rimraf=require(_0xe065('0x5'));var config=require('../../config/environment');var attributes=require(_0xe065('0x6'));module[_0xe065('0x7')]=function(_0x3722c3,_0x500661){return _0x3722c3['define'](_0xe065('0x8'),attributes,{'tableName':_0xe065('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x03bd=['bluebird','request-promise','path','rimraf','../../config/environment','./voiceTransferReport.attributes','exports','define','VoiceTransferReport','report_call_transfer','api'];(function(_0x5ead93,_0xdf04c1){var _0x117556=function(_0x58ca4b){while(--_0x58ca4b){_0x5ead93['push'](_0x5ead93['shift']());}};_0x117556(++_0xdf04c1);}(_0x03bd,0x78));var _0xd03b=function(_0x464ccd,_0x4b161d){_0x464ccd=_0x464ccd-0x0;var _0x507ace=_0x03bd[_0x464ccd];return _0x507ace;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xd03b('0x0'));var moment=require('moment');var BPromise=require(_0xd03b('0x1'));var rp=require(_0xd03b('0x2'));var fs=require('fs');var path=require(_0xd03b('0x3'));var rimraf=require(_0xd03b('0x4'));var config=require(_0xd03b('0x5'));var attributes=require(_0xd03b('0x6'));module[_0xd03b('0x7')]=function(_0x4aeaae,_0x1f29bd){return _0x4aeaae[_0xd03b('0x8')](_0xd03b('0x9'),attributes,{'tableName':_0xd03b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 59210f9..3650e69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc66e=['../../config/environment','client','request','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CreateVoiceTransferReport','create','body','options','raw','then','info','debug','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x2629f2,_0x2ac3de){var _0x5a59e4=function(_0x2a9373){while(--_0x2a9373){_0x2629f2['push'](_0x2629f2['shift']());}};_0x5a59e4(++_0x2ac3de);}(_0xc66e,0x18d));var _0xec66=function(_0x2c1e7a,_0x155f86){_0x2c1e7a=_0x2c1e7a-0x0;var _0xcacb4f=_0xc66e[_0x2c1e7a];return _0xcacb4f;};'use strict';var _=require('lodash');var util=require(_0xec66('0x0'));var moment=require('moment');var BPromise=require(_0xec66('0x1'));var rs=require(_0xec66('0x2'));var fs=require('fs');var Redis=require(_0xec66('0x3'));var db=require(_0xec66('0x4'))['db'];var utils=require(_0xec66('0x5'));var logger=require(_0xec66('0x6'))(_0xec66('0x7'));var config=require(_0xec66('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xec66('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x49d122,_0x4a5e61,_0x4b7544){return new BPromise(function(_0x532dec,_0x3386ee){return client[_0xec66('0xa')](_0x49d122,_0x4b7544)['then'](function(_0x10f0ff){logger['info'](_0xec66('0xb'),_0x4a5e61,_0xec66('0xc'));logger['debug'](_0xec66('0xd'),_0x4a5e61,_0xec66('0xc'),JSON[_0xec66('0xe')](_0x10f0ff));if(_0x10f0ff[_0xec66('0xf')]){if(_0x10f0ff[_0xec66('0xf')][_0xec66('0x10')]===0x1f4){logger['error'](_0xec66('0xb'),_0x4a5e61,_0x10f0ff[_0xec66('0xf')]['message']);return _0x3386ee(_0x10f0ff[_0xec66('0xf')][_0xec66('0x11')]);}logger[_0xec66('0xf')](_0xec66('0xb'),_0x4a5e61,_0x10f0ff[_0xec66('0xf')][_0xec66('0x11')]);return _0x532dec(_0x10f0ff['error'][_0xec66('0x11')]);}else{logger['info'](_0xec66('0xb'),_0x4a5e61,_0xec66('0xc'));_0x532dec(_0x10f0ff['result'][_0xec66('0x11')]);}})['catch'](function(_0x53110b){logger['error'](_0xec66('0xb'),_0x4a5e61,_0x53110b);_0x3386ee(_0x53110b);});});}exports[_0xec66('0x12')]=function(_0xd02785){var _0x222f7a=this;return new Promise(function(_0x37cf86,_0x3ba43d){return db['VoiceTransferReport'][_0xec66('0x13')](_0xd02785[_0xec66('0x14')],{'raw':_0xd02785[_0xec66('0x15')]?_0xd02785['options'][_0xec66('0x16')]===undefined?!![]:![]:!![]})[_0xec66('0x17')](function(_0x2716c7){logger[_0xec66('0x18')](_0xec66('0x12'),_0xd02785);logger[_0xec66('0x19')](_0xec66('0x12'),_0xd02785,JSON[_0xec66('0xe')](_0x2716c7));_0x37cf86(_0x2716c7);})[_0xec66('0x1a')](function(_0x2316d7){logger[_0xec66('0xf')](_0xec66('0x12'),_0x2316d7['message'],_0xd02785);_0x3ba43d(_0x222f7a[_0xec66('0xf')](0x1f4,_0x2316d7[_0xec66('0x11')]));});});};
\ No newline at end of file
+var _0x773f=['client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','options','raw','debug','stringify','lodash','util','moment','bluebird','../../mysqldb','../../config/environment','jayson/promise'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x773f,0x165));var _0xf773=function(_0x38a155,_0x2aa026){_0x38a155=_0x38a155-0x0;var _0x269403=_0x773f[_0x38a155];return _0x269403;};'use strict';var _=require(_0xf773('0x0'));var util=require(_0xf773('0x1'));var moment=require(_0xf773('0x2'));var BPromise=require(_0xf773('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf773('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xf773('0x5'));var jayson=require(_0xf773('0x6'));var client=jayson[_0xf773('0x7')][_0xf773('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x523d3a,_0x1f6b70,_0x34dbd4){return new BPromise(function(_0x22749e,_0x4b08fe){return client[_0xf773('0x9')](_0x523d3a,_0x34dbd4)[_0xf773('0xa')](function(_0x467be7){logger[_0xf773('0xb')](_0xf773('0xc'),_0x1f6b70,_0xf773('0xd'));logger['debug']('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x1f6b70,_0xf773('0xd'),JSON['stringify'](_0x467be7));if(_0x467be7['error']){if(_0x467be7[_0xf773('0xe')][_0xf773('0xf')]===0x1f4){logger['error']('VoiceTransferReport,\x20%s,\x20%s',_0x1f6b70,_0x467be7['error'][_0xf773('0x10')]);return _0x4b08fe(_0x467be7[_0xf773('0xe')][_0xf773('0x10')]);}logger[_0xf773('0xe')](_0xf773('0xc'),_0x1f6b70,_0x467be7[_0xf773('0xe')]['message']);return _0x22749e(_0x467be7[_0xf773('0xe')][_0xf773('0x10')]);}else{logger[_0xf773('0xb')](_0xf773('0xc'),_0x1f6b70,_0xf773('0xd'));_0x22749e(_0x467be7[_0xf773('0x11')]['message']);}})[_0xf773('0x12')](function(_0x1ceeff){logger['error']('VoiceTransferReport,\x20%s,\x20%s',_0x1f6b70,_0x1ceeff);_0x4b08fe(_0x1ceeff);});});}exports[_0xf773('0x13')]=function(_0x68e612){var _0x137fae=this;return new Promise(function(_0x5e89ff,_0x1cf964){return db[_0xf773('0x14')][_0xf773('0x15')](_0x68e612['body'],{'raw':_0x68e612[_0xf773('0x16')]?_0x68e612[_0xf773('0x16')][_0xf773('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0xa51e70){logger[_0xf773('0xb')](_0xf773('0x13'),_0x68e612);logger[_0xf773('0x18')](_0xf773('0x13'),_0x68e612,JSON[_0xf773('0x19')](_0xa51e70));_0x5e89ff(_0xa51e70);})[_0xf773('0x12')](function(_0x3ac2fd){logger[_0xf773('0xe')](_0xf773('0x13'),_0x3ac2fd['message'],_0x68e612);_0x1cf964(_0x137fae[_0xf773('0xe')](0x1f4,_0x3ac2fd[_0xf773('0x10')]));});});};
\ No newline at end of file
index f97589d..a3c650d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb292=['/hangup','hangup','/answer','answer','/hold','hold','/unhold','calls','/transfer','transfer','exports','Router','../../components/auth/service','./webbar.controller','post','/originate','isAuthenticated','canUpdate'];(function(_0x35bfdf,_0x1bef4a){var _0x4daabd=function(_0x176c1d){while(--_0x176c1d){_0x35bfdf['push'](_0x35bfdf['shift']());}};_0x4daabd(++_0x1bef4a);}(_0xb292,0x1a9));var _0x2b29=function(_0x2cde74,_0x55cf68){_0x2cde74=_0x2cde74-0x0;var _0x39ee49=_0xb292[_0x2cde74];return _0x39ee49;};'use strict';var express=require('express');var router=express[_0x2b29('0x0')]();var auth=require(_0x2b29('0x1'));var controller=require(_0x2b29('0x2'));router[_0x2b29('0x3')](_0x2b29('0x4'),auth[_0x2b29('0x5')](),auth[_0x2b29('0x6')](),controller['originate']);router[_0x2b29('0x3')](_0x2b29('0x7'),auth[_0x2b29('0x5')](),auth[_0x2b29('0x6')](),controller[_0x2b29('0x8')]);router[_0x2b29('0x3')](_0x2b29('0x9'),auth[_0x2b29('0x5')](),auth[_0x2b29('0x6')](),controller[_0x2b29('0xa')]);router[_0x2b29('0x3')](_0x2b29('0xb'),auth[_0x2b29('0x5')](),auth[_0x2b29('0x6')](),controller[_0x2b29('0xc')]);router['post'](_0x2b29('0xd'),auth[_0x2b29('0x5')](),auth[_0x2b29('0x6')](),controller['unhold']);router['post']('/calls',auth[_0x2b29('0x5')](),auth[_0x2b29('0x6')](),controller[_0x2b29('0xe')]);router['post'](_0x2b29('0xf'),auth[_0x2b29('0x5')](),auth['canUpdate'](),controller[_0x2b29('0x10')]);module[_0x2b29('0x11')]=router;
\ No newline at end of file
+var _0x82c3=['/hold','hold','/unhold','unhold','/calls','calls','/transfer','transfer','exports','express','Router','../../components/auth/service','post','/originate','isAuthenticated','/hangup','canUpdate','hangup','/answer'];(function(_0x2941b1,_0x39206d){var _0x4ae180=function(_0x5e305d){while(--_0x5e305d){_0x2941b1['push'](_0x2941b1['shift']());}};_0x4ae180(++_0x39206d);}(_0x82c3,0xb4));var _0x382c=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x82c3[_0x4154a6];return _0x3b2786;};'use strict';var express=require(_0x382c('0x0'));var router=express[_0x382c('0x1')]();var auth=require(_0x382c('0x2'));var controller=require('./webbar.controller');router[_0x382c('0x3')](_0x382c('0x4'),auth[_0x382c('0x5')](),auth['canUpdate'](),controller['originate']);router[_0x382c('0x3')](_0x382c('0x6'),auth[_0x382c('0x5')](),auth[_0x382c('0x7')](),controller[_0x382c('0x8')]);router['post'](_0x382c('0x9'),auth[_0x382c('0x5')](),auth[_0x382c('0x7')](),controller['answer']);router[_0x382c('0x3')](_0x382c('0xa'),auth['isAuthenticated'](),auth[_0x382c('0x7')](),controller[_0x382c('0xb')]);router[_0x382c('0x3')](_0x382c('0xc'),auth[_0x382c('0x5')](),auth[_0x382c('0x7')](),controller[_0x382c('0xd')]);router[_0x382c('0x3')](_0x382c('0xe'),auth[_0x382c('0x5')](),auth[_0x382c('0x7')](),controller[_0x382c('0xf')]);router[_0x382c('0x3')](_0x382c('0x10'),auth['isAuthenticated'](),auth[_0x382c('0x7')](),controller[_0x382c('0x11')]);module[_0x382c('0x12')]=router;
\ No newline at end of file
index 8f2d616..5db0541 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb332=['../../config/environment','bluebird','client','../../config/logger','ioredis','redis','defaults','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','log','stack','name','send','status','NotFound','request','then','error','code','message','result','User','agent','VoiceChannels','all','filter','rows','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','validate','userId','callNumber','callerId','callbackUrl','entityFound:','webbar:originate','json','originate\x20executed!','hangup\x20fired:','user:%s','catch','answer','answer\x20fired:','format','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','conference','conference\x20fired:','conference\x20executed!','transfer','path','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb332,0xd9));var _0x2b33=function(_0x2405bc,_0x2f28a1){_0x2405bc=_0x2405bc-0x0;var _0x5272d4=_0xb332[_0x2405bc];return _0x5272d4;};'use strict';var path=require(_0x2b33('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0x2b33('0x1'))['db'];var config=require(_0x2b33('0x2'));var util=require('util');var BPromise=require(_0x2b33('0x3'));var jayson=require('jayson/promise');var amiClient=jayson[_0x2b33('0x4')]['http']({'port':0x232a});var logger=require(_0x2b33('0x5'))('webbarapi');var Redis=require(_0x2b33('0x6'));config[_0x2b33('0x7')]=_[_0x2b33('0x8')](config[_0x2b33('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2b33('0x7')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0x2b33('0x9'),'required':[!![],_0x2b33('0xa')]},'callNumber':{'type':_0x2b33('0xb'),'required':[!![],_0x2b33('0xc')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x2b33('0xb')}});var hangupValidation=new Schema({'userId':{'type':_0x2b33('0x9'),'required':[!![],_0x2b33('0xa')]},'sessionId':{'type':_0x2b33('0xb'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x2b33('0x9'),'required':[!![],_0x2b33('0xa')]},'sessionId':{'type':_0x2b33('0xb'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x2b33('0x9'),'required':[!![],_0x2b33('0xa')]},'sessionId':{'type':_0x2b33('0xb'),'required':[!![],_0x2b33('0xd')]},'transferNumber':{'type':'string','required':[!![],_0x2b33('0xe')]}});var holdValidation=new Schema({'userId':{'type':_0x2b33('0x9'),'required':[!![],_0x2b33('0xa')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x2b33('0x9'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x2b33('0xb'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x2b33('0x9'),'required':[!![],_0x2b33('0xa')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});function emit(_0x1d8e75,_0x1d50d0,_0x409428){logger[_0x2b33('0xf')](_0x1d8e75,_0x1d50d0,JSON[_0x2b33('0x10')](_0x409428));io['to'](_0x1d8e75)['emit'](_0x1d50d0,_0x409428);}function handleError(_0x554ab3){return function(_0x59f0b6){console[_0x2b33('0x11')]('handleError:',_0x59f0b6,_0x59f0b6 instanceof RangeError);logger['error'](_0x59f0b6[_0x2b33('0x12')]);if(_0x59f0b6 instanceof RangeError){if(_0x59f0b6[_0x2b33('0x13')]){delete _0x59f0b6[_0x2b33('0x13')];}_0x554ab3['status'](0x194)[_0x2b33('0x14')](_0x59f0b6);}else{if(_0x59f0b6['name']){delete _0x59f0b6[_0x2b33('0x13')];}_0x554ab3[_0x2b33('0x15')](0x1f4)[_0x2b33('0x14')](_0x59f0b6);}};}function checkError(){return function(_0x2998dd){if(!_0x2998dd){throw new RangeError(_0x2b33('0x16'));}return _0x2998dd;};}function respondWithRpcPromise(_0x6d20b,_0x39567f){return new BPromise(function(_0x4fb725,_0x23024c){var _0x1d9c98=amiClient;return _0x1d9c98[_0x2b33('0x17')](_0x6d20b,_0x39567f)[_0x2b33('0x18')](function(_0x58998e){if(_0x58998e[_0x2b33('0x19')]){if(_0x58998e[_0x2b33('0x19')][_0x2b33('0x1a')]===0x1f4){return _0x23024c(_0x58998e['error'][_0x2b33('0x1b')]);}return _0x4fb725(_0x58998e[_0x2b33('0x19')][_0x2b33('0x1b')]);}else{_0x4fb725(_0x58998e[_0x2b33('0x1c')]);}})['catch'](function(_0x2ec9db){_0x23024c(_0x2ec9db);});});}function getAgent(_0x530098){return db[_0x2b33('0x1d')]['findOne']({'where':{'id':_0x530098,'role':_0x2b33('0x1e')}})[_0x2b33('0x18')](checkError());}function getAgentCheckSession(_0x5d8d05,_0x195aa2){return new BPromise(function(_0x53c2ad,_0x267969){var _0x5b16a8=respondWithRpcPromise(_0x2b33('0x1f'));var _0xa109f4=getAgent(_0x5d8d05);Promise[_0x2b33('0x20')]([_0x5b16a8,_0xa109f4])[_0x2b33('0x18')](function(_0xaa6643){var _0x312d4d=_0xaa6643[0x0];var _0x2be034=_0xaa6643[0x1];var _0x1fadc5=_[_0x2b33('0x21')](_0x312d4d[_0x2b33('0x22')],function(_0x4cf72f){return _0x4cf72f['UserId']==_0x2be034['id']&&_0x4cf72f[_0x2b33('0x23')]==_0x195aa2;});if(_0x1fadc5[_0x2b33('0x24')]==0x1){_0x53c2ad(_0x2be034);}else{_0x267969(new RangeError(_0x2b33('0x25')+_0x195aa2+_0x2b33('0x26')));}});});}exports[_0x2b33('0x27')]=function(_0x5893bc,_0x570765){logger[_0x2b33('0xf')](_0x2b33('0x28'),_0x5893bc[_0x2b33('0x29')]);var _0x1d2168=originateValidation[_0x2b33('0x2a')](_0x5893bc[_0x2b33('0x29')]);if(_0x1d2168['length']>0x0){return _0x570765[_0x2b33('0x15')](0x190)['json'](_0x1d2168);}var _0x370faf=_0x5893bc[_0x2b33('0x29')][_0x2b33('0x2b')];var _0x23ba3e=_0x5893bc[_0x2b33('0x29')][_0x2b33('0x2c')];var _0x2bfdda=_0x5893bc[_0x2b33('0x29')][_0x2b33('0x2d')];var _0x2b9af8=_0x5893bc[_0x2b33('0x29')][_0x2b33('0x2e')];return getAgent(_0x370faf)[_0x2b33('0x18')](function(_0x19e351){logger[_0x2b33('0xf')](_0x2b33('0x2f'),_0x19e351['name']);emit(util['format']('user:%s',_0x19e351[_0x2b33('0x13')]),_0x2b33('0x30'),{'callNumber':_0x23ba3e,'callerId':_0x2bfdda,'callbackUrl':_0x2b9af8});return _0x570765[_0x2b33('0x15')](0xc8)[_0x2b33('0x31')]({'error':![],'message':_0x2b33('0x32')});})['catch'](handleError(_0x570765));};exports['hangup']=function(_0x1cfe5c,_0x4c3997){logger[_0x2b33('0xf')](_0x2b33('0x33'),_0x1cfe5c[_0x2b33('0x29')]);var _0xa638d6=hangupValidation[_0x2b33('0x2a')](_0x1cfe5c[_0x2b33('0x29')]);if(_0xa638d6[_0x2b33('0x24')]>0x0){return _0x4c3997[_0x2b33('0x15')](0x190)[_0x2b33('0x31')](_0xa638d6);}var _0x17bd1e=_0x1cfe5c['body'][_0x2b33('0x2b')];var _0x4661eb=_0x1cfe5c[_0x2b33('0x29')]['sessionId'];return getAgent(_0x17bd1e)['then'](function(_0x3afaa5){logger['info'](_0x2b33('0x2f'),_0x3afaa5[_0x2b33('0x13')]);emit(util['format'](_0x2b33('0x34'),_0x3afaa5[_0x2b33('0x13')]),'webbar:hangup',{'sessionId':_0x4661eb});return _0x4c3997[_0x2b33('0x15')](0xc8)[_0x2b33('0x31')]({'error':![],'message':'hangup\x20executed!'});})[_0x2b33('0x35')](handleError(_0x4c3997));};exports[_0x2b33('0x36')]=function(_0x264e64,_0x49348c){logger[_0x2b33('0xf')](_0x2b33('0x37'),_0x264e64[_0x2b33('0x29')]);var _0x22f321=answerValidation[_0x2b33('0x2a')](_0x264e64['body']);if(_0x22f321[_0x2b33('0x24')]>0x0){return _0x49348c[_0x2b33('0x15')](0x190)[_0x2b33('0x31')](_0x22f321);}var _0x5ad3b2=_0x264e64[_0x2b33('0x29')][_0x2b33('0x2b')];var _0x3c61d6=_0x264e64[_0x2b33('0x29')]['sessionId'];return getAgent(_0x5ad3b2)[_0x2b33('0x18')](function(_0x416f3e){logger['info']('entityFound:',_0x416f3e['name']);emit(util[_0x2b33('0x38')]('user:%s',_0x416f3e[_0x2b33('0x13')]),_0x2b33('0x39'),{'sessionId':_0x3c61d6});return _0x49348c[_0x2b33('0x15')](0xc8)[_0x2b33('0x31')]({'error':![],'message':_0x2b33('0x3a')});})[_0x2b33('0x35')](handleError(_0x49348c));};exports[_0x2b33('0x3b')]=function(_0x13bb23,_0x56224a){logger[_0x2b33('0xf')](_0x2b33('0x3c'),_0x13bb23[_0x2b33('0x29')]);var _0x83de95=holdValidation[_0x2b33('0x2a')](_0x13bb23[_0x2b33('0x29')]);if(_0x83de95['length']>0x0){return _0x56224a['status'](0x190)['json'](_0x83de95);}var _0x493123=_0x13bb23[_0x2b33('0x29')]['userId'];var _0x1c5019=_0x13bb23['body']['sessionId'];return getAgent(_0x493123)[_0x2b33('0x18')](function(_0xd15da9){logger[_0x2b33('0xf')]('entityFound:',_0xd15da9[_0x2b33('0x13')]);emit(util['format'](_0x2b33('0x34'),_0xd15da9[_0x2b33('0x13')]),_0x2b33('0x3d'),{'sessionId':_0x1c5019});return _0x56224a[_0x2b33('0x15')](0xc8)[_0x2b33('0x31')]({'error':![],'message':_0x2b33('0x3e')});})['catch'](handleError(_0x56224a));};exports[_0x2b33('0x3f')]=function(_0x27f766,_0xc3fd2e){logger['info'](_0x2b33('0x40'),_0x27f766[_0x2b33('0x29')]);var _0x434f0f=unholdValidation['validate'](_0x27f766[_0x2b33('0x29')]);if(_0x434f0f['length']>0x0){return _0xc3fd2e['status'](0x190)[_0x2b33('0x31')](_0x434f0f);}var _0x108d9a=_0x27f766[_0x2b33('0x29')][_0x2b33('0x2b')];var _0x307370=_0x27f766[_0x2b33('0x29')][_0x2b33('0x23')];return getAgent(_0x108d9a)[_0x2b33('0x18')](function(_0x486f74){logger[_0x2b33('0xf')](_0x2b33('0x2f'),_0x486f74['name']);emit(util[_0x2b33('0x38')](_0x2b33('0x34'),_0x486f74['name']),_0x2b33('0x41'),{'sessionId':_0x307370});return _0xc3fd2e[_0x2b33('0x15')](0xc8)[_0x2b33('0x31')]({'error':![],'message':_0x2b33('0x42')});})['catch'](handleError(_0xc3fd2e));};exports[_0x2b33('0x43')]=function(_0x1d55fd,_0x5528fe){logger[_0x2b33('0xf')](_0x2b33('0x44'),_0x5528fe[_0x2b33('0x29')]);var _0x26e0ca=callsValidation[_0x2b33('0x2a')](_0x1d55fd[_0x2b33('0x29')]);if(_0x26e0ca[_0x2b33('0x24')]>0x0){return _0x5528fe['status'](0x190)['json'](_0x26e0ca);}var _0x3b0877=_0x1d55fd[_0x2b33('0x29')]['userId'];var _0x3ba2c6=respondWithRpcPromise(_0x2b33('0x1f'));var _0x2b4d10=getAgent(_0x3b0877);return Promise['all']([_0x3ba2c6,_0x2b4d10])[_0x2b33('0x18')](function(_0x134c48){var _0x59aca5=_0x134c48[0x0];var _0x1af9a3=_0x134c48[0x1];var _0x464ac8=_[_0x2b33('0x21')](_0x59aca5[_0x2b33('0x22')],function(_0x150695){return _0x150695['UserId']==_0x1af9a3['id'];});return _0x5528fe['status'](0xc8)[_0x2b33('0x31')]({'count':_0x464ac8[_0x2b33('0x24')],'rows':_0x464ac8});})[_0x2b33('0x35')](handleError(_0x5528fe));};exports[_0x2b33('0x45')]=function(_0x280b85,_0x4e7971){logger['info'](_0x2b33('0x46'),_0x280b85[_0x2b33('0x29')]);var _0x2eafb2=conferenceValidation[_0x2b33('0x2a')](_0x280b85[_0x2b33('0x29')]);if(_0x2eafb2[_0x2b33('0x24')]>0x0){return _0x4e7971['status'](0x190)[_0x2b33('0x31')](_0x2eafb2);}var _0x2e0e12=_0x280b85[_0x2b33('0x29')][_0x2b33('0x2b')];return getAgent(_0x2e0e12)[_0x2b33('0x18')](function(_0x5c8246){logger[_0x2b33('0xf')](_0x2b33('0x2f'),_0x5c8246[_0x2b33('0x13')]);emit(util[_0x2b33('0x38')]('user:%s',_0x5c8246[_0x2b33('0x13')]),'webbar:conference');return _0x4e7971[_0x2b33('0x15')](0xc8)[_0x2b33('0x31')]({'error':![],'message':_0x2b33('0x47')});})[_0x2b33('0x35')](handleError(_0x4e7971));};exports[_0x2b33('0x48')]=function(_0x321940,_0x23fdb7){logger[_0x2b33('0xf')]('transfer\x20fired:',_0x321940[_0x2b33('0x29')]);var _0x22d518=transferValidation[_0x2b33('0x2a')](_0x321940[_0x2b33('0x29')]);if(_0x22d518[_0x2b33('0x24')]>0x0){return _0x23fdb7[_0x2b33('0x15')](0x190)[_0x2b33('0x31')](_0x22d518);}var _0x3305c5=_0x321940[_0x2b33('0x29')][_0x2b33('0x2b')];var _0xfd05df=_0x321940[_0x2b33('0x29')]['sessionId'];var _0x452cca=_0x321940['body']['transferNumber'];return getAgent(_0x3305c5)[_0x2b33('0x18')](function(_0x5404f8){logger[_0x2b33('0xf')]('entityFound:',_0x5404f8[_0x2b33('0x13')]);emit(util[_0x2b33('0x38')](_0x2b33('0x34'),_0x5404f8[_0x2b33('0x13')]),'webbar:transfer',{'sessionId':_0xfd05df,'transferNumber':_0x452cca});return _0x23fdb7['status'](0xc8)['json']({'error':![],'message':'transfer\x20executed!'});})['catch'](handleError(_0x23fdb7));};
\ No newline at end of file
+var _0x4fdb=['conference\x20fired:','conference\x20executed!','transfer','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','webbarapi','redis','localhost','socket.io-emitter','userId\x20is\x20required','string','callNumber\x20is\x20required','number','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','send','name','status','NotFound','then','code','message','result','catch','agent','VoiceChannels','all','filter','UserId','sessionId','sessionId\x20','\x20not\x20found!','originate','body','validate','length','json','userId','callNumber','callerId','entityFound:','format','webbar:originate','originate\x20executed!','hangup','user:%s','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold','hold\x20fired:','webbar:hold','unhold','webbar:unhold','unhold\x20executed!','calls\x20fired:','rows','conference'];(function(_0x3d808e,_0x411386){var _0x2edfde=function(_0x171c84){while(--_0x171c84){_0x3d808e['push'](_0x3d808e['shift']());}};_0x2edfde(++_0x411386);}(_0x4fdb,0x9c));var _0xb4fd=function(_0x1f70aa,_0x2aae1c){_0x1f70aa=_0x1f70aa-0x0;var _0x266de6=_0x4fdb[_0x1f70aa];return _0x266de6;};'use strict';var path=require(_0xb4fd('0x0'));var fs=require('fs');var _=require(_0xb4fd('0x1'));var db=require(_0xb4fd('0x2'))['db'];var config=require(_0xb4fd('0x3'));var util=require(_0xb4fd('0x4'));var BPromise=require(_0xb4fd('0x5'));var jayson=require(_0xb4fd('0x6'));var amiClient=jayson[_0xb4fd('0x7')][_0xb4fd('0x8')]({'port':0x232a});var logger=require('../../config/logger')(_0xb4fd('0x9'));var Redis=require('ioredis');config[_0xb4fd('0xa')]=_['defaults'](config['redis'],{'host':_0xb4fd('0xb'),'port':0x18eb});var io=require(_0xb4fd('0xc'))(new Redis(config[_0xb4fd('0xa')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0xb4fd('0xd')]},'callNumber':{'type':_0xb4fd('0xe'),'required':[!![],_0xb4fd('0xf')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xb4fd('0xe')}});var hangupValidation=new Schema({'userId':{'type':_0xb4fd('0x10'),'required':[!![],_0xb4fd('0xd')]},'sessionId':{'type':_0xb4fd('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xb4fd('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xb4fd('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xb4fd('0x10'),'required':[!![],_0xb4fd('0xd')]},'sessionId':{'type':_0xb4fd('0xe'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0xb4fd('0xe'),'required':[!![],_0xb4fd('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0xb4fd('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xb4fd('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xb4fd('0x10'),'required':[!![],_0xb4fd('0xd')]},'sessionId':{'type':_0xb4fd('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xb4fd('0x10'),'required':[!![],_0xb4fd('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':_0xb4fd('0x10'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x2076d5,_0x12401d,_0x2e92b5){logger[_0xb4fd('0x12')](_0x2076d5,_0x12401d,JSON[_0xb4fd('0x13')](_0x2e92b5));io['to'](_0x2076d5)[_0xb4fd('0x14')](_0x12401d,_0x2e92b5);}function handleError(_0x1d0812){return function(_0x44f0f0){console[_0xb4fd('0x15')](_0xb4fd('0x16'),_0x44f0f0,_0x44f0f0 instanceof RangeError);logger[_0xb4fd('0x17')](_0x44f0f0['stack']);if(_0x44f0f0 instanceof RangeError){if(_0x44f0f0['name']){delete _0x44f0f0['name'];}_0x1d0812['status'](0x194)[_0xb4fd('0x18')](_0x44f0f0);}else{if(_0x44f0f0[_0xb4fd('0x19')]){delete _0x44f0f0[_0xb4fd('0x19')];}_0x1d0812[_0xb4fd('0x1a')](0x1f4)[_0xb4fd('0x18')](_0x44f0f0);}};}function checkError(){return function(_0x2adfbd){if(!_0x2adfbd){throw new RangeError(_0xb4fd('0x1b'));}return _0x2adfbd;};}function respondWithRpcPromise(_0x4ffaf1,_0x51ac94){return new BPromise(function(_0x216307,_0x25bb7d){var _0x157fc2=amiClient;return _0x157fc2['request'](_0x4ffaf1,_0x51ac94)[_0xb4fd('0x1c')](function(_0x49d42c){if(_0x49d42c[_0xb4fd('0x17')]){if(_0x49d42c['error'][_0xb4fd('0x1d')]===0x1f4){return _0x25bb7d(_0x49d42c[_0xb4fd('0x17')][_0xb4fd('0x1e')]);}return _0x216307(_0x49d42c[_0xb4fd('0x17')][_0xb4fd('0x1e')]);}else{_0x216307(_0x49d42c[_0xb4fd('0x1f')]);}})[_0xb4fd('0x20')](function(_0x3498ad){_0x25bb7d(_0x3498ad);});});}function getAgent(_0x526fb2){return db['User']['findOne']({'where':{'id':_0x526fb2,'role':_0xb4fd('0x21')}})['then'](checkError());}function getAgentCheckSession(_0x3617b2,_0x5e9d2b){return new BPromise(function(_0x5738c2,_0x282fe4){var _0x7c5313=respondWithRpcPromise(_0xb4fd('0x22'));var _0x4a057d=getAgent(_0x3617b2);Promise[_0xb4fd('0x23')]([_0x7c5313,_0x4a057d])[_0xb4fd('0x1c')](function(_0x68776){var _0x1a653b=_0x68776[0x0];var _0x5d5606=_0x68776[0x1];var _0xd72bc3=_[_0xb4fd('0x24')](_0x1a653b['rows'],function(_0x3e5060){return _0x3e5060[_0xb4fd('0x25')]==_0x5d5606['id']&&_0x3e5060[_0xb4fd('0x26')]==_0x5e9d2b;});if(_0xd72bc3['length']==0x1){_0x5738c2(_0x5d5606);}else{_0x282fe4(new RangeError(_0xb4fd('0x27')+_0x5e9d2b+_0xb4fd('0x28')));}});});}exports[_0xb4fd('0x29')]=function(_0x4d51bb,_0x55eed3){logger['info']('originate\x20fired:',_0x4d51bb[_0xb4fd('0x2a')]);var _0xf5e2c4=originateValidation[_0xb4fd('0x2b')](_0x4d51bb[_0xb4fd('0x2a')]);if(_0xf5e2c4[_0xb4fd('0x2c')]>0x0){return _0x55eed3[_0xb4fd('0x1a')](0x190)[_0xb4fd('0x2d')](_0xf5e2c4);}var _0x1a0457=_0x4d51bb[_0xb4fd('0x2a')][_0xb4fd('0x2e')];var _0x3f7688=_0x4d51bb[_0xb4fd('0x2a')][_0xb4fd('0x2f')];var _0x1db787=_0x4d51bb[_0xb4fd('0x2a')][_0xb4fd('0x30')];var _0x373b2e=_0x4d51bb[_0xb4fd('0x2a')]['callbackUrl'];return getAgent(_0x1a0457)['then'](function(_0x930751){logger[_0xb4fd('0x12')](_0xb4fd('0x31'),_0x930751[_0xb4fd('0x19')]);emit(util[_0xb4fd('0x32')]('user:%s',_0x930751[_0xb4fd('0x19')]),_0xb4fd('0x33'),{'callNumber':_0x3f7688,'callerId':_0x1db787,'callbackUrl':_0x373b2e});return _0x55eed3[_0xb4fd('0x1a')](0xc8)[_0xb4fd('0x2d')]({'error':![],'message':_0xb4fd('0x34')});})['catch'](handleError(_0x55eed3));};exports[_0xb4fd('0x35')]=function(_0x5c1b1a,_0xcda359){logger[_0xb4fd('0x12')]('hangup\x20fired:',_0x5c1b1a['body']);var _0xd598a2=hangupValidation[_0xb4fd('0x2b')](_0x5c1b1a[_0xb4fd('0x2a')]);if(_0xd598a2[_0xb4fd('0x2c')]>0x0){return _0xcda359[_0xb4fd('0x1a')](0x190)[_0xb4fd('0x2d')](_0xd598a2);}var _0x478cf3=_0x5c1b1a[_0xb4fd('0x2a')][_0xb4fd('0x2e')];var _0x597810=_0x5c1b1a[_0xb4fd('0x2a')][_0xb4fd('0x26')];return getAgent(_0x478cf3)[_0xb4fd('0x1c')](function(_0x39e607){logger['info'](_0xb4fd('0x31'),_0x39e607[_0xb4fd('0x19')]);emit(util[_0xb4fd('0x32')](_0xb4fd('0x36'),_0x39e607[_0xb4fd('0x19')]),_0xb4fd('0x37'),{'sessionId':_0x597810});return _0xcda359['status'](0xc8)[_0xb4fd('0x2d')]({'error':![],'message':_0xb4fd('0x38')});})['catch'](handleError(_0xcda359));};exports[_0xb4fd('0x39')]=function(_0x24dab1,_0x1d1a43){logger[_0xb4fd('0x12')](_0xb4fd('0x3a'),_0x24dab1['body']);var _0x244e9d=answerValidation[_0xb4fd('0x2b')](_0x24dab1[_0xb4fd('0x2a')]);if(_0x244e9d['length']>0x0){return _0x1d1a43[_0xb4fd('0x1a')](0x190)['json'](_0x244e9d);}var _0x3c1ffa=_0x24dab1[_0xb4fd('0x2a')]['userId'];var _0x563366=_0x24dab1['body'][_0xb4fd('0x26')];return getAgent(_0x3c1ffa)[_0xb4fd('0x1c')](function(_0x23c67f){logger['info'](_0xb4fd('0x31'),_0x23c67f[_0xb4fd('0x19')]);emit(util[_0xb4fd('0x32')](_0xb4fd('0x36'),_0x23c67f[_0xb4fd('0x19')]),_0xb4fd('0x3b'),{'sessionId':_0x563366});return _0x1d1a43[_0xb4fd('0x1a')](0xc8)['json']({'error':![],'message':'answer\x20executed!'});})[_0xb4fd('0x20')](handleError(_0x1d1a43));};exports[_0xb4fd('0x3c')]=function(_0x74a4d4,_0x148181){logger['info'](_0xb4fd('0x3d'),_0x74a4d4['body']);var _0x4d5d04=holdValidation[_0xb4fd('0x2b')](_0x74a4d4[_0xb4fd('0x2a')]);if(_0x4d5d04['length']>0x0){return _0x148181[_0xb4fd('0x1a')](0x190)[_0xb4fd('0x2d')](_0x4d5d04);}var _0x4b7fa0=_0x74a4d4[_0xb4fd('0x2a')][_0xb4fd('0x2e')];var _0x3b6014=_0x74a4d4['body']['sessionId'];return getAgent(_0x4b7fa0)[_0xb4fd('0x1c')](function(_0x1b5f2d){logger[_0xb4fd('0x12')](_0xb4fd('0x31'),_0x1b5f2d['name']);emit(util[_0xb4fd('0x32')](_0xb4fd('0x36'),_0x1b5f2d['name']),_0xb4fd('0x3e'),{'sessionId':_0x3b6014});return _0x148181[_0xb4fd('0x1a')](0xc8)[_0xb4fd('0x2d')]({'error':![],'message':'hold\x20executed!'});})[_0xb4fd('0x20')](handleError(_0x148181));};exports[_0xb4fd('0x3f')]=function(_0x4ff60b,_0x47054f){logger['info']('unhold\x20fired:',_0x4ff60b[_0xb4fd('0x2a')]);var _0x1acdaf=unholdValidation[_0xb4fd('0x2b')](_0x4ff60b[_0xb4fd('0x2a')]);if(_0x1acdaf[_0xb4fd('0x2c')]>0x0){return _0x47054f[_0xb4fd('0x1a')](0x190)[_0xb4fd('0x2d')](_0x1acdaf);}var _0x315524=_0x4ff60b[_0xb4fd('0x2a')][_0xb4fd('0x2e')];var _0x77625b=_0x4ff60b[_0xb4fd('0x2a')][_0xb4fd('0x26')];return getAgent(_0x315524)[_0xb4fd('0x1c')](function(_0xbf4686){logger['info']('entityFound:',_0xbf4686[_0xb4fd('0x19')]);emit(util[_0xb4fd('0x32')](_0xb4fd('0x36'),_0xbf4686[_0xb4fd('0x19')]),_0xb4fd('0x40'),{'sessionId':_0x77625b});return _0x47054f['status'](0xc8)['json']({'error':![],'message':_0xb4fd('0x41')});})[_0xb4fd('0x20')](handleError(_0x47054f));};exports['calls']=function(_0x534f46,_0x5e28a8){logger[_0xb4fd('0x12')](_0xb4fd('0x42'),_0x5e28a8[_0xb4fd('0x2a')]);var _0xfdc372=callsValidation['validate'](_0x534f46['body']);if(_0xfdc372[_0xb4fd('0x2c')]>0x0){return _0x5e28a8[_0xb4fd('0x1a')](0x190)[_0xb4fd('0x2d')](_0xfdc372);}var _0x4c2f50=_0x534f46[_0xb4fd('0x2a')][_0xb4fd('0x2e')];var _0x135d0f=respondWithRpcPromise(_0xb4fd('0x22'));var _0x566b7c=getAgent(_0x4c2f50);return Promise[_0xb4fd('0x23')]([_0x135d0f,_0x566b7c])[_0xb4fd('0x1c')](function(_0x5758ae){var _0x340ef2=_0x5758ae[0x0];var _0x49efc4=_0x5758ae[0x1];var _0x3b8b71=_['filter'](_0x340ef2[_0xb4fd('0x43')],function(_0x2d80fa){return _0x2d80fa[_0xb4fd('0x25')]==_0x49efc4['id'];});return _0x5e28a8[_0xb4fd('0x1a')](0xc8)[_0xb4fd('0x2d')]({'count':_0x3b8b71[_0xb4fd('0x2c')],'rows':_0x3b8b71});})[_0xb4fd('0x20')](handleError(_0x5e28a8));};exports[_0xb4fd('0x44')]=function(_0x7021cf,_0x1e19e3){logger[_0xb4fd('0x12')](_0xb4fd('0x45'),_0x7021cf[_0xb4fd('0x2a')]);var _0x454acd=conferenceValidation['validate'](_0x7021cf[_0xb4fd('0x2a')]);if(_0x454acd['length']>0x0){return _0x1e19e3[_0xb4fd('0x1a')](0x190)['json'](_0x454acd);}var _0x244f91=_0x7021cf[_0xb4fd('0x2a')][_0xb4fd('0x2e')];return getAgent(_0x244f91)[_0xb4fd('0x1c')](function(_0x58f430){logger['info'](_0xb4fd('0x31'),_0x58f430['name']);emit(util[_0xb4fd('0x32')](_0xb4fd('0x36'),_0x58f430[_0xb4fd('0x19')]),'webbar:conference');return _0x1e19e3[_0xb4fd('0x1a')](0xc8)['json']({'error':![],'message':_0xb4fd('0x46')});})[_0xb4fd('0x20')](handleError(_0x1e19e3));};exports[_0xb4fd('0x47')]=function(_0x2fe519,_0x521ff6){logger[_0xb4fd('0x12')]('transfer\x20fired:',_0x2fe519[_0xb4fd('0x2a')]);var _0x3c573a=transferValidation[_0xb4fd('0x2b')](_0x2fe519['body']);if(_0x3c573a['length']>0x0){return _0x521ff6['status'](0x190)[_0xb4fd('0x2d')](_0x3c573a);}var _0x5ce30c=_0x2fe519[_0xb4fd('0x2a')]['userId'];var _0x210a0f=_0x2fe519[_0xb4fd('0x2a')][_0xb4fd('0x26')];var _0x16a3e0=_0x2fe519['body'][_0xb4fd('0x48')];return getAgent(_0x5ce30c)[_0xb4fd('0x1c')](function(_0x5b4ebe){logger[_0xb4fd('0x12')](_0xb4fd('0x31'),_0x5b4ebe['name']);emit(util[_0xb4fd('0x32')](_0xb4fd('0x36'),_0x5b4ebe['name']),_0xb4fd('0x49'),{'sessionId':_0x210a0f,'transferNumber':_0x16a3e0});return _0x521ff6[_0xb4fd('0x1a')](0xc8)[_0xb4fd('0x2d')]({'error':![],'message':_0xb4fd('0x4a')});})[_0xb4fd('0x20')](handleError(_0x521ff6));};
\ No newline at end of file
index 16903af..fedbfb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/users','getAgents','getApplications','post','create','addDisposition','addAnswer','addAgents','/:id/applications','addApplications','notify','/:id/send','put','update','delete','destroy'];(function(_0x542c0d,_0x2d40db){var _0x182cee=function(_0x1c095a){while(--_0x1c095a){_0x542c0d['push'](_0x542c0d['shift']());}};_0x182cee(++_0x2d40db);}(_0xdb28,0x106));var _0x8db2=function(_0x4c128a,_0x33c60d){_0x4c128a=_0x4c128a-0x0;var _0x1f957c=_0xdb28[_0x4c128a];return _0x1f957c;};'use strict';var multer=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var path=require(_0x8db2('0x2'));var timeout=require(_0x8db2('0x3'));var express=require('express');var router=express[_0x8db2('0x4')]();var fs_extra=require(_0x8db2('0x5'));var auth=require(_0x8db2('0x6'));var interaction=require(_0x8db2('0x7'));var config=require(_0x8db2('0x8'));var controller=require('./whatsappAccount.controller');router[_0x8db2('0x9')]('/',auth[_0x8db2('0xa')](),controller['index']);router['get'](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xc')]);router[_0x8db2('0x9')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xe')]);router['get'](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x10')]);router['get'](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller['getAnswers']);router[_0x8db2('0x9')](_0x8db2('0x12'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x13')]);router[_0x8db2('0x9')]('/:id/applications',auth['isAuthenticated'](),controller[_0x8db2('0x14')]);router[_0x8db2('0x15')]('/',auth[_0x8db2('0xa')](),controller[_0x8db2('0x16')]);router[_0x8db2('0x15')](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x17')]);router[_0x8db2('0x15')](_0x8db2('0x11'),auth['isAuthenticated'](),controller[_0x8db2('0x18')]);router[_0x8db2('0x15')]('/:id/users',auth[_0x8db2('0xa')](),controller[_0x8db2('0x19')]);router[_0x8db2('0x15')](_0x8db2('0x1a'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x1b')]);router['post']('/:id/notify',controller[_0x8db2('0x1c')]);router[_0x8db2('0x15')](_0x8db2('0x1d'),auth[_0x8db2('0xa')](),controller['send']);router[_0x8db2('0x1e')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x1f')]);router[_0x8db2('0x20')]('/:id',auth[_0x8db2('0xa')](),controller[_0x8db2('0x21')]);router[_0x8db2('0x20')](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x22')]);router[_0x8db2('0x20')]('/:id/canned_answers',auth[_0x8db2('0xa')](),controller['removeAnswers']);router['delete']('/:id/users',auth['isAuthenticated'](),controller[_0x8db2('0x23')]);module[_0x8db2('0x24')]=router;
\ No newline at end of file
+var _0x7a54=['index','/describe','isAuthenticated','/:id/dispositions','getDispositions','getAnswers','/:id/users','getAgents','getApplications','post','create','/:id/canned_answers','addAnswer','addAgents','addApplications','/:id/notify','notify','/:id/send','send','/:id','delete','removeDispositions','removeAgents','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','get'];(function(_0x2a6311,_0x3d6d2f){var _0x2bfade=function(_0x68e2e4){while(--_0x68e2e4){_0x2a6311['push'](_0x2a6311['shift']());}};_0x2bfade(++_0x3d6d2f);}(_0x7a54,0x106));var _0x47a5=function(_0x1117a2,_0x20b50e){_0x1117a2=_0x1117a2-0x0;var _0x41afcd=_0x7a54[_0x1117a2];return _0x41afcd;};'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['describe']);router[_0x47a5('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/canned_answers',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x9')](_0x47a5('0x10'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x9')]('/:id/applications',auth[_0x47a5('0xc')](),controller[_0x47a5('0x12')]);router[_0x47a5('0x13')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x14')]);router[_0x47a5('0x13')](_0x47a5('0xd'),auth[_0x47a5('0xc')](),controller['addDisposition']);router[_0x47a5('0x13')](_0x47a5('0x15'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x16')]);router[_0x47a5('0x13')]('/:id/users',auth['isAuthenticated'](),controller[_0x47a5('0x17')]);router['post']('/:id/applications',auth[_0x47a5('0xc')](),controller[_0x47a5('0x18')]);router[_0x47a5('0x13')](_0x47a5('0x19'),controller[_0x47a5('0x1a')]);router[_0x47a5('0x13')](_0x47a5('0x1b'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x1c')]);router['put'](_0x47a5('0x1d'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0x1e')](_0x47a5('0x1d'),auth[_0x47a5('0xc')](),controller['destroy']);router[_0x47a5('0x1e')](_0x47a5('0xd'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x1f')]);router['delete'](_0x47a5('0x15'),auth[_0x47a5('0xc')](),controller['removeAnswers']);router[_0x47a5('0x1e')](_0x47a5('0x10'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x20')]);module[_0x47a5('0x21')]=router;
\ No newline at end of file
index 89471bc..0e2892b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49b8=['mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING','name','generate','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','setDataValue'];(function(_0x380f0d,_0x1c531a){var _0x2fba2a=function(_0x181553){while(--_0x181553){_0x380f0d['push'](_0x380f0d['shift']());}};_0x2fba2a(++_0x1c531a);}(_0x49b8,0x6a));var _0x849b=function(_0x37ba4d,_0xe9c438){_0x37ba4d=_0x37ba4d-0x0;var _0x533e57=_0x49b8[_0x37ba4d];return _0x533e57;};'use strict';var Sequelize=require(_0x849b('0x0'));var rs=require(_0x849b('0x1'));module[_0x849b('0x2')]={'name':{'type':Sequelize[_0x849b('0x3')],'unique':_0x849b('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0x849b('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x849b('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x849b('0x3')],'defaultValue':function(){return rs[_0x849b('0x5')]();}},'phone':{'type':Sequelize[_0x849b('0x3')]},'type':{'type':Sequelize[_0x849b('0x6')]('twilio')},'accountSid':{'type':Sequelize[_0x849b('0x3')]},'authToken':{'type':Sequelize[_0x849b('0x3')]},'notificationTemplate':{'type':Sequelize[_0x849b('0x7')],'defaultValue':function(){return _0x849b('0x8');}},'notificationSound':{'type':Sequelize[_0x849b('0x9')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x849b('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x849b('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x849b('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x849b('0xa')],'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[_0x849b('0xa')],'comment':_0x849b('0xb')},'mandatoryDisposition':{'type':Sequelize[_0x849b('0x9')],'defaultValue':![],'comment':_0x849b('0xc'),'set':function(_0x373ff9){if(!_0x373ff9){this[_0x849b('0xd')](_0x849b('0xe'),null);}this[_0x849b('0xd')]('mandatoryDisposition',_0x373ff9);}},'description':{'type':Sequelize[_0x849b('0x3')]}};
\ No newline at end of file
+var _0x4f6c=['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','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','generate','ENUM','twilio','TEXT'];(function(_0x579066,_0x8a0ed6){var _0x5d4f12=function(_0x3f01d4){while(--_0x3f01d4){_0x579066['push'](_0x579066['shift']());}};_0x5d4f12(++_0x8a0ed6);}(_0x4f6c,0x180));var _0xc4f6=function(_0x2ec7b4,_0x457d7e){_0x2ec7b4=_0x2ec7b4-0x0;var _0x5b6a19=_0x4f6c[_0x2ec7b4];return _0x5b6a19;};'use strict';var Sequelize=require(_0xc4f6('0x0'));var rs=require('randomstring');module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0xc4f6('0x1')],'allowNull':![]},'remote':{'type':Sequelize[_0xc4f6('0x1')],'allowNull':![]},'token':{'type':Sequelize[_0xc4f6('0x1')],'defaultValue':function(){return rs[_0xc4f6('0x2')]();}},'phone':{'type':Sequelize[_0xc4f6('0x1')]},'type':{'type':Sequelize[_0xc4f6('0x3')](_0xc4f6('0x4'))},'accountSid':{'type':Sequelize[_0xc4f6('0x1')]},'authToken':{'type':Sequelize[_0xc4f6('0x1')]},'notificationTemplate':{'type':Sequelize[_0xc4f6('0x5')],'defaultValue':function(){return _0xc4f6('0x6');}},'notificationSound':{'type':Sequelize[_0xc4f6('0x7')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0xc4f6('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xc4f6('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xc4f6('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xc4f6('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc4f6('0x8')],'comment':_0xc4f6('0x9')},'mandatoryDisposition':{'type':Sequelize[_0xc4f6('0x7')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x56fc63){if(!_0x56fc63){this[_0xc4f6('0xa')](_0xc4f6('0xb'),null);}this[_0xc4f6('0xa')](_0xc4f6('0xc'),_0x56fc63);}},'description':{'type':Sequelize[_0xc4f6('0x1')]}};
\ No newline at end of file
index 638403d..e49227f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb2=['mandatoryDispositionPause','WhatsappAccount','rawAttributes','type','key','model','map','query','filters','intersection','attributes','fields','length','nolimit','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','show','params','keys','find','create','body','user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','WhatsappAccountId','getDispositions','findOne','Disposition','hasOwnProperty','order','rows','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','addAgents','omit','spread','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','User','getAgents','addApplications','sequelize','transaction','WhatsappApplication','bulkCreate','findAndCountAll','priority','getApplications','notify','whatsapp','Applications','applications','orderBy','asc','account','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','mobile','twilio','From','replace','Body','messageId','MessageSid','from','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','ListId','Contacts','DESC','list','contact','WhatsappInteraction','interaction','push','close','unmanaged','*,*,*,*','created','WhatsappMessage','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify','Content-Type','send','to\x20is\x20mandatory','CmList','List','out','Messages','dataValues','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','client','http','request','then','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','sendStatus','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','destroy','get','WhatsappAccounts','end','stack','name','index','Pause'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5eb2,0x146));var _0x25eb=function(_0x48f038,_0x2bde84){_0x48f038=_0x48f038-0x0;var _0x2edc62=_0x5eb2[_0x48f038];return _0x2edc62;};'use strict';var emlformat=require(_0x25eb('0x0'));var rimraf=require(_0x25eb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x25eb('0x2'));var rp=require(_0x25eb('0x3'));var moment=require(_0x25eb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x25eb('0x5'));var util=require(_0x25eb('0x6'));var path=require(_0x25eb('0x7'));var sox=require(_0x25eb('0x8'));var csv=require(_0x25eb('0x9'));var ejs=require(_0x25eb('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x25eb('0xb'));var squel=require('squel');var crypto=require(_0x25eb('0xc'));var jsforce=require(_0x25eb('0xd'));var deskjs=require(_0x25eb('0xe'));var toCsv=require('to-csv');var querystring=require(_0x25eb('0xf'));var Papa=require(_0x25eb('0x10'));var Redis=require(_0x25eb('0x11'));var authService=require(_0x25eb('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x25eb('0x13'));var logger=require('../../config/logger')(_0x25eb('0x14'));var utils=require(_0x25eb('0x15'));var config=require(_0x25eb('0x16'));var licenseUtil=require(_0x25eb('0x17'));var db=require(_0x25eb('0x18'))['db'];config[_0x25eb('0x19')]=_['defaults'](config['redis'],{'host':_0x25eb('0x1a'),'port':0x18eb});var socket=require(_0x25eb('0x1b'))(new Redis(config[_0x25eb('0x19')]));require(_0x25eb('0x1c'))[_0x25eb('0x1d')](socket);var jayson=require(_0x25eb('0x1e'));var client=jayson[_0x25eb('0x1f')][_0x25eb('0x20')]({'port':0x232c});function respondWithRpcPromise(_0x354e63,_0x4502bc,_0x47df50,_0x212018){return new BPromise(function(_0x5ee385,_0x1589cc){var _0x1173f1=_0x212018||client;return _0x1173f1[_0x25eb('0x21')](_0x354e63,_0x47df50)[_0x25eb('0x22')](function(_0x677644){logger['info'](_0x25eb('0x23'),_0x4502bc,'request\x20sent');logger[_0x25eb('0x24')](_0x25eb('0x25'),_0x4502bc,_0x25eb('0x26'),JSON['stringify'](_0x677644));if(_0x677644[_0x25eb('0x27')]){if(_0x677644['error'][_0x25eb('0x28')]===0x1f4){logger[_0x25eb('0x27')]('WhatsappAccount,\x20%s,\x20%s',_0x4502bc,_0x677644['error'][_0x25eb('0x29')]);return _0x1589cc(_0x677644[_0x25eb('0x27')]['message']);}logger[_0x25eb('0x27')](_0x25eb('0x23'),_0x4502bc,_0x677644['error'][_0x25eb('0x29')]);return _0x5ee385(_0x677644[_0x25eb('0x27')][_0x25eb('0x29')]);}else{logger[_0x25eb('0x2a')](_0x25eb('0x23'),_0x4502bc,_0x25eb('0x26'));_0x5ee385(_0x677644[_0x25eb('0x2b')]['message']);}})[_0x25eb('0x2c')](function(_0xbbf411){logger[_0x25eb('0x27')](_0x25eb('0x23'),_0x4502bc,_0xbbf411);_0x1589cc(_0xbbf411);});});}function respondWithStatusCode(_0x41c469,_0x424fbe){_0x424fbe=_0x424fbe||0xcc;return function(_0x17f328){if(_0x17f328){return _0x41c469[_0x25eb('0x2d')](_0x424fbe);}return _0x41c469['status'](_0x424fbe)['end']();};}function respondWithResult(_0x412666,_0x2a6613){_0x2a6613=_0x2a6613||0xc8;return function(_0x5a2570){if(_0x5a2570){return _0x412666[_0x25eb('0x2e')](_0x2a6613)['json'](_0x5a2570);}};}function respondWithFilteredResult(_0x2324d1,_0x4fa672){return function(_0x3b6be6){if(_0x3b6be6){var _0x469aef=typeof _0x4fa672[_0x25eb('0x2f')]==='undefined'&&typeof _0x4fa672[_0x25eb('0x30')]===_0x25eb('0x31');var _0x12ec1e=_0x3b6be6['count'];var _0x4829b4=_0x469aef?0x0:_0x4fa672[_0x25eb('0x2f')];var _0x1fc053=_0x469aef?_0x3b6be6[_0x25eb('0x32')]:_0x4fa672[_0x25eb('0x2f')]+_0x4fa672['limit'];var _0x4876b2;if(_0x1fc053>=_0x12ec1e){_0x1fc053=_0x12ec1e;_0x4876b2=0xc8;}else{_0x4876b2=0xce;}_0x2324d1[_0x25eb('0x2e')](_0x4876b2);return _0x2324d1[_0x25eb('0x33')](_0x25eb('0x34'),_0x4829b4+'-'+_0x1fc053+'/'+_0x12ec1e)[_0x25eb('0x35')](_0x3b6be6);}return null;};}function patchUpdates(_0x477fc7){return function(_0x3b4305){try{jsonpatch[_0x25eb('0x36')](_0x3b4305,_0x477fc7,!![]);}catch(_0x13e898){return BPromise[_0x25eb('0x37')](_0x13e898);}return _0x3b4305[_0x25eb('0x38')]();};}function saveUpdates(_0x40338e,_0x3e1580){return function(_0x92dd60){if(_0x92dd60){return _0x92dd60[_0x25eb('0x39')](_0x40338e)[_0x25eb('0x22')](function(_0x289b57){return _0x289b57;});}return null;};}function removeEntity(_0x432090,_0x58a434){return function(_0x44675b){if(_0x44675b){return _0x44675b[_0x25eb('0x3a')]()[_0x25eb('0x22')](function(){var _0x10b167=_0x44675b[_0x25eb('0x3b')]({'plain':!![]});var _0x449730=_0x25eb('0x3c');return db['UserProfileResource']['destroy']({'where':{'type':_0x449730,'resourceId':_0x10b167['id']}})[_0x25eb('0x22')](function(){return _0x44675b;});})[_0x25eb('0x22')](function(){_0x432090[_0x25eb('0x2e')](0xcc)[_0x25eb('0x3d')]();});}};}function handleEntityNotFound(_0x258989,_0x334043){return function(_0x209210){if(!_0x209210){_0x258989['sendStatus'](0x194);}return _0x209210;};}function handleError(_0x41cfc6,_0x35238b){_0x35238b=_0x35238b||0x1f4;return function(_0x268c70){logger[_0x25eb('0x27')](_0x268c70[_0x25eb('0x3e')]);if(_0x268c70[_0x25eb('0x3f')]){delete _0x268c70[_0x25eb('0x3f')];}_0x41cfc6[_0x25eb('0x2e')](_0x35238b)['send'](_0x268c70);};}exports[_0x25eb('0x40')]=function(_0x151901,_0x2dc1b7){var _0x3e2d16={'include':[{'model':db[_0x25eb('0x41')],'as':_0x25eb('0x42')}]},_0x16954c={},_0x2086b6={'count':0x0,'rows':[]};var _0xd81843=_['map'](db[_0x25eb('0x43')][_0x25eb('0x44')],function(_0x228e62){return{'name':_0x228e62['fieldName'],'type':_0x228e62[_0x25eb('0x45')][_0x25eb('0x46')]};});_0x16954c[_0x25eb('0x47')]=_[_0x25eb('0x48')](_0xd81843,_0x25eb('0x3f'));_0x16954c[_0x25eb('0x49')]=_['keys'](_0x151901['query']);_0x16954c[_0x25eb('0x4a')]=_[_0x25eb('0x4b')](_0x16954c[_0x25eb('0x47')],_0x16954c[_0x25eb('0x49')]);_0x3e2d16[_0x25eb('0x4c')]=_[_0x25eb('0x4b')](_0x16954c[_0x25eb('0x47')],qs[_0x25eb('0x4d')](_0x151901['query'][_0x25eb('0x4d')]));_0x3e2d16['attributes']=_0x3e2d16[_0x25eb('0x4c')][_0x25eb('0x4e')]?_0x3e2d16['attributes']:_0x16954c['model'];if(!_0x151901[_0x25eb('0x49')]['hasOwnProperty'](_0x25eb('0x4f'))){_0x3e2d16['limit']=qs[_0x25eb('0x30')](_0x151901[_0x25eb('0x49')]['limit']);_0x3e2d16[_0x25eb('0x2f')]=qs[_0x25eb('0x2f')](_0x151901[_0x25eb('0x49')][_0x25eb('0x2f')]);}_0x3e2d16['order']=qs[_0x25eb('0x50')](_0x151901[_0x25eb('0x49')][_0x25eb('0x50')]);_0x3e2d16['where']=qs['filters'](_[_0x25eb('0x51')](_0x151901[_0x25eb('0x49')],_0x16954c['filters']),_0xd81843);if(_0x151901['query'][_0x25eb('0x52')]){_0x3e2d16['where']=_[_0x25eb('0x53')](_0x3e2d16[_0x25eb('0x54')],{'$or':_[_0x25eb('0x48')](_0xd81843,function(_0x1b7eb8){if(_0x1b7eb8[_0x25eb('0x45')]!==_0x25eb('0x55')){var _0x36b82a={};_0x36b82a[_0x1b7eb8[_0x25eb('0x3f')]]={'$like':'%'+_0x151901[_0x25eb('0x49')]['filter']+'%'};return _0x36b82a;}})});}_0x3e2d16=_['merge']({},_0x3e2d16,_0x151901[_0x25eb('0x56')]);var _0x1a2367={'where':_0x3e2d16[_0x25eb('0x54')]};return db[_0x25eb('0x43')][_0x25eb('0x32')](_0x1a2367)[_0x25eb('0x22')](function(_0x3bda96){_0x2086b6[_0x25eb('0x32')]=_0x3bda96;if(_0x151901[_0x25eb('0x49')][_0x25eb('0x57')]){_0x3e2d16[_0x25eb('0x58')]=[{'all':!![]}];}return db[_0x25eb('0x43')][_0x25eb('0x59')](_0x3e2d16);})[_0x25eb('0x22')](function(_0x4ee3ab){_0x2086b6['rows']=_0x4ee3ab;return _0x2086b6;})[_0x25eb('0x22')](respondWithFilteredResult(_0x2dc1b7,_0x3e2d16))[_0x25eb('0x2c')](handleError(_0x2dc1b7,null));};exports[_0x25eb('0x5a')]=function(_0x1f79df,_0x958f80){var _0x320f8d={'raw':![],'where':{'id':_0x1f79df[_0x25eb('0x5b')]['id']},'include':[{'model':db[_0x25eb('0x41')],'as':'mandatoryDispositionPause'}]},_0x3bc6f7={};_0x3bc6f7['model']=_['keys'](db[_0x25eb('0x43')]['rawAttributes']);_0x3bc6f7[_0x25eb('0x49')]=_[_0x25eb('0x5c')](_0x1f79df['query']);_0x3bc6f7[_0x25eb('0x4a')]=_[_0x25eb('0x4b')](_0x3bc6f7[_0x25eb('0x47')],_0x3bc6f7[_0x25eb('0x49')]);_0x320f8d[_0x25eb('0x4c')]=_['intersection'](_0x3bc6f7[_0x25eb('0x47')],qs['fields'](_0x1f79df[_0x25eb('0x49')]['fields']));_0x320f8d[_0x25eb('0x4c')]=_0x320f8d[_0x25eb('0x4c')][_0x25eb('0x4e')]?_0x320f8d[_0x25eb('0x4c')]:_0x3bc6f7['model'];if(_0x1f79df[_0x25eb('0x49')][_0x25eb('0x57')]){_0x320f8d['include']=[{'all':!![]}];}_0x320f8d=_[_0x25eb('0x53')]({},_0x320f8d,_0x1f79df[_0x25eb('0x56')]);return db[_0x25eb('0x43')][_0x25eb('0x5d')](_0x320f8d)[_0x25eb('0x22')](handleEntityNotFound(_0x958f80,null))['then'](respondWithResult(_0x958f80,null))[_0x25eb('0x2c')](handleError(_0x958f80,null));};exports[_0x25eb('0x5e')]=function(_0x403d89,_0x45554a){return db['WhatsappAccount']['create'](_0x403d89[_0x25eb('0x5f')],{})[_0x25eb('0x22')](function(_0x1227bc){var _0x1acff1=_0x403d89[_0x25eb('0x60')][_0x25eb('0x3b')]({'plain':!![]});if(!_0x1acff1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1acff1[_0x25eb('0x61')]===_0x25eb('0x60')){var _0x56095b=_0x1227bc[_0x25eb('0x3b')]({'plain':!![]});var _0x5861de=_0x25eb('0x3c');return db['UserProfileSection'][_0x25eb('0x5d')]({'where':{'name':_0x5861de,'userProfileId':_0x1acff1[_0x25eb('0x62')]},'raw':!![]})[_0x25eb('0x22')](function(_0x4c0be6){if(_0x4c0be6&&_0x4c0be6[_0x25eb('0x63')]===0x0){return db['UserProfileResource'][_0x25eb('0x5e')]({'name':_0x56095b[_0x25eb('0x3f')],'resourceId':_0x56095b['id'],'type':_0x4c0be6[_0x25eb('0x3f')],'sectionId':_0x4c0be6['id']},{})[_0x25eb('0x22')](function(){return _0x1227bc;});}else{return _0x1227bc;}})['catch'](function(_0x5d8571){logger['error'](_0x25eb('0x64'),_0x5d8571);throw _0x5d8571;});}return _0x1227bc;})[_0x25eb('0x22')](respondWithResult(_0x45554a,0xc9))['catch'](handleError(_0x45554a,null));};exports[_0x25eb('0x39')]=function(_0x509728,_0x33b5c4){if(_0x509728[_0x25eb('0x5f')]['id']){delete _0x509728[_0x25eb('0x5f')]['id'];}return db[_0x25eb('0x43')][_0x25eb('0x5d')]({'where':{'id':_0x509728[_0x25eb('0x5b')]['id']},'include':[{'model':db[_0x25eb('0x41')],'as':'mandatoryDispositionPause'}]})[_0x25eb('0x22')](handleEntityNotFound(_0x33b5c4,null))[_0x25eb('0x22')](saveUpdates(_0x509728['body'],null))[_0x25eb('0x22')](respondWithResult(_0x33b5c4,null))[_0x25eb('0x2c')](handleError(_0x33b5c4,null));};exports[_0x25eb('0x3a')]=function(_0x2c5775,_0x242191){return db[_0x25eb('0x43')][_0x25eb('0x5d')]({'where':{'id':_0x2c5775[_0x25eb('0x5b')]['id']}})[_0x25eb('0x22')](handleEntityNotFound(_0x242191,null))[_0x25eb('0x22')](removeEntity(_0x242191,null))[_0x25eb('0x2c')](handleError(_0x242191,null));};exports['describe']=function(_0x73e0bd,_0x2e184c){return db[_0x25eb('0x43')][_0x25eb('0x65')]()[_0x25eb('0x22')](respondWithResult(_0x2e184c,null))['catch'](handleError(_0x2e184c,null));};exports[_0x25eb('0x66')]=function(_0x51d0a0,_0x5c27d0,_0x2e8ee8){if(_0x51d0a0[_0x25eb('0x5f')]['id']){delete _0x51d0a0[_0x25eb('0x5f')]['id'];}return db['WhatsappAccount'][_0x25eb('0x5d')]({'where':{'id':_0x51d0a0[_0x25eb('0x5b')]['id']}})[_0x25eb('0x22')](handleEntityNotFound(_0x5c27d0,null))[_0x25eb('0x22')](function(_0x56f17c){if(_0x56f17c){_0x51d0a0[_0x25eb('0x5f')][_0x25eb('0x67')]=_0x56f17c['id'];return db['Disposition']['create'](_0x51d0a0[_0x25eb('0x5f')]);}})[_0x25eb('0x22')](respondWithResult(_0x5c27d0,null))[_0x25eb('0x2c')](handleError(_0x5c27d0,null));};exports[_0x25eb('0x68')]=function(_0x563d8a,_0x2319ad,_0x2fb504){var _0x17d397={'raw':![],'where':{}};var _0x3833bf={};var _0x34195d={'count':0x0,'rows':[]};return db[_0x25eb('0x43')][_0x25eb('0x69')]({'where':{'id':_0x563d8a[_0x25eb('0x5b')]['id']}})[_0x25eb('0x22')](handleEntityNotFound(_0x2319ad,null))[_0x25eb('0x22')](function(_0x41a0e8){if(_0x41a0e8){_0x3833bf[_0x25eb('0x47')]=_[_0x25eb('0x5c')](db[_0x25eb('0x6a')][_0x25eb('0x44')]);_0x3833bf['query']=_[_0x25eb('0x5c')](_0x563d8a['query']);_0x3833bf['filters']=_[_0x25eb('0x4b')](_0x3833bf[_0x25eb('0x47')],_0x3833bf[_0x25eb('0x49')]);_0x17d397[_0x25eb('0x4c')]=_[_0x25eb('0x4b')](_0x3833bf['model'],qs[_0x25eb('0x4d')](_0x563d8a[_0x25eb('0x49')][_0x25eb('0x4d')]));_0x17d397[_0x25eb('0x4c')]=_0x17d397[_0x25eb('0x4c')][_0x25eb('0x4e')]?_0x17d397[_0x25eb('0x4c')]:_0x3833bf[_0x25eb('0x47')];if(!_0x563d8a[_0x25eb('0x49')][_0x25eb('0x6b')](_0x25eb('0x4f'))){_0x17d397[_0x25eb('0x30')]=qs[_0x25eb('0x30')](_0x563d8a[_0x25eb('0x49')][_0x25eb('0x30')]);_0x17d397[_0x25eb('0x2f')]=qs['offset'](_0x563d8a[_0x25eb('0x49')][_0x25eb('0x2f')]);}_0x17d397[_0x25eb('0x6c')]=qs['sort'](_0x563d8a['query'][_0x25eb('0x50')]);_0x17d397[_0x25eb('0x54')]=qs[_0x25eb('0x4a')](_[_0x25eb('0x51')](_0x563d8a[_0x25eb('0x49')],_0x3833bf[_0x25eb('0x4a')]));_0x17d397[_0x25eb('0x54')][_0x25eb('0x67')]=_0x41a0e8['id'];if(_0x563d8a[_0x25eb('0x49')][_0x25eb('0x52')]){_0x17d397[_0x25eb('0x54')]=_[_0x25eb('0x53')](_0x17d397['where'],{'$or':_[_0x25eb('0x48')](_0x17d397[_0x25eb('0x4c')],function(_0x404aba){var _0x2cf4ca={};_0x2cf4ca[_0x404aba]={'$like':'%'+_0x563d8a[_0x25eb('0x49')][_0x25eb('0x52')]+'%'};return _0x2cf4ca;})});}_0x17d397=_[_0x25eb('0x53')]({},_0x17d397,_0x563d8a['options']);return db[_0x25eb('0x6a')][_0x25eb('0x32')]({'where':_0x17d397[_0x25eb('0x54')]})['then'](function(_0x268be3){_0x34195d[_0x25eb('0x32')]=_0x268be3;if(_0x563d8a[_0x25eb('0x49')]['includeAll']){_0x17d397[_0x25eb('0x58')]=[{'all':!![]}];}return db[_0x25eb('0x6a')]['findAll'](_0x17d397);})[_0x25eb('0x22')](function(_0x2ea1d5){_0x34195d[_0x25eb('0x6d')]=_0x2ea1d5;return _0x34195d;});}})[_0x25eb('0x22')](respondWithFilteredResult(_0x2319ad,_0x17d397))[_0x25eb('0x2c')](handleError(_0x2319ad,null));};exports[_0x25eb('0x6e')]=function(_0x5ae2b6,_0x68ceb5,_0x243291){return db['WhatsappAccount']['find']({'where':{'id':_0x5ae2b6['params']['id']}})[_0x25eb('0x22')](handleEntityNotFound(_0x68ceb5,null))['then'](function(_0x2b6426){if(_0x2b6426){return _0x2b6426[_0x25eb('0x6e')](_0x5ae2b6['query'][_0x25eb('0x6f')]);}})[_0x25eb('0x22')](respondWithStatusCode(_0x68ceb5,null))[_0x25eb('0x2c')](handleError(_0x68ceb5,null));};exports[_0x25eb('0x70')]=function(_0x33d8c5,_0x35648a,_0x1ab238){if(_0x33d8c5[_0x25eb('0x5f')]['id']){delete _0x33d8c5['body']['id'];}return db[_0x25eb('0x43')]['find']({'where':{'id':_0x33d8c5[_0x25eb('0x5b')]['id']}})[_0x25eb('0x22')](handleEntityNotFound(_0x35648a,null))['then'](function(_0x305868){if(_0x305868){_0x33d8c5[_0x25eb('0x5f')][_0x25eb('0x67')]=_0x305868['id'];return db['CannedAnswer'][_0x25eb('0x5e')](_0x33d8c5['body']);}})[_0x25eb('0x22')](respondWithResult(_0x35648a,null))[_0x25eb('0x2c')](handleError(_0x35648a,null));};exports[_0x25eb('0x71')]=function(_0x484ba5,_0x312eab,_0x5db426){var _0x87e55f={'raw':![],'where':{}};var _0x2ad108={};var _0x453638={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x25eb('0x69')]({'where':{'id':_0x484ba5[_0x25eb('0x5b')]['id']}})['then'](handleEntityNotFound(_0x312eab,null))[_0x25eb('0x22')](function(_0x3d15da){if(_0x3d15da){_0x2ad108[_0x25eb('0x47')]=_[_0x25eb('0x5c')](db[_0x25eb('0x72')][_0x25eb('0x44')]);_0x2ad108['query']=_[_0x25eb('0x5c')](_0x484ba5[_0x25eb('0x49')]);_0x2ad108[_0x25eb('0x4a')]=_['intersection'](_0x2ad108[_0x25eb('0x47')],_0x2ad108[_0x25eb('0x49')]);_0x87e55f[_0x25eb('0x4c')]=_[_0x25eb('0x4b')](_0x2ad108[_0x25eb('0x47')],qs['fields'](_0x484ba5[_0x25eb('0x49')][_0x25eb('0x4d')]));_0x87e55f[_0x25eb('0x4c')]=_0x87e55f['attributes'][_0x25eb('0x4e')]?_0x87e55f['attributes']:_0x2ad108[_0x25eb('0x47')];if(!_0x484ba5[_0x25eb('0x49')][_0x25eb('0x6b')](_0x25eb('0x4f'))){_0x87e55f['limit']=qs['limit'](_0x484ba5['query'][_0x25eb('0x30')]);_0x87e55f['offset']=qs[_0x25eb('0x2f')](_0x484ba5['query'][_0x25eb('0x2f')]);}_0x87e55f[_0x25eb('0x6c')]=qs[_0x25eb('0x50')](_0x484ba5[_0x25eb('0x49')][_0x25eb('0x50')]);_0x87e55f[_0x25eb('0x54')]=qs['filters'](_[_0x25eb('0x51')](_0x484ba5[_0x25eb('0x49')],_0x2ad108['filters']));_0x87e55f[_0x25eb('0x54')][_0x25eb('0x67')]=_0x3d15da['id'];if(_0x484ba5[_0x25eb('0x49')][_0x25eb('0x52')]){_0x87e55f[_0x25eb('0x54')]=_['merge'](_0x87e55f[_0x25eb('0x54')],{'$or':_[_0x25eb('0x48')](_0x87e55f[_0x25eb('0x4c')],function(_0xfef051){var _0x5dd87f={};_0x5dd87f[_0xfef051]={'$like':'%'+_0x484ba5[_0x25eb('0x49')][_0x25eb('0x52')]+'%'};return _0x5dd87f;})});}_0x87e55f=_[_0x25eb('0x53')]({},_0x87e55f,_0x484ba5['options']);return db[_0x25eb('0x72')][_0x25eb('0x32')]({'where':_0x87e55f[_0x25eb('0x54')]})[_0x25eb('0x22')](function(_0x337b9d){_0x453638[_0x25eb('0x32')]=_0x337b9d;if(_0x484ba5['query'][_0x25eb('0x57')]){_0x87e55f['include']=[{'all':!![]}];}return db[_0x25eb('0x72')][_0x25eb('0x59')](_0x87e55f);})[_0x25eb('0x22')](function(_0x1a167b){_0x453638[_0x25eb('0x6d')]=_0x1a167b;return _0x453638;});}})['then'](respondWithFilteredResult(_0x312eab,_0x87e55f))[_0x25eb('0x2c')](handleError(_0x312eab,null));};exports['removeAnswers']=function(_0xfe91ca,_0x2c2901,_0x30e995){return db['WhatsappAccount'][_0x25eb('0x5d')]({'where':{'id':_0xfe91ca[_0x25eb('0x5b')]['id']}})['then'](handleEntityNotFound(_0x2c2901,null))[_0x25eb('0x22')](function(_0x3a8978){if(_0x3a8978){return _0x3a8978[_0x25eb('0x73')](_0xfe91ca[_0x25eb('0x49')][_0x25eb('0x6f')]);}})['then'](respondWithStatusCode(_0x2c2901,null))[_0x25eb('0x2c')](handleError(_0x2c2901,null));};exports[_0x25eb('0x74')]=function(_0x1e9291,_0x523c9c,_0xf0ddb5){return db[_0x25eb('0x43')][_0x25eb('0x5d')]({'where':{'id':_0x1e9291[_0x25eb('0x5b')]['id']}})[_0x25eb('0x22')](handleEntityNotFound(_0x523c9c,null))[_0x25eb('0x22')](function(_0x420a36){if(_0x420a36){return _0x420a36[_0x25eb('0x74')](_0x1e9291['body'][_0x25eb('0x6f')],_[_0x25eb('0x75')](_0x1e9291[_0x25eb('0x5f')],['ids','id'])||{})[_0x25eb('0x76')](function(_0x2523b8){for(var _0x128eba=0x0;_0x128eba<_0x1e9291[_0x25eb('0x5f')][_0x25eb('0x6f')][_0x25eb('0x4e')];_0x128eba+=0x1){socket[_0x25eb('0x77')](_0x25eb('0x78'),{'UserId':Number(_0x1e9291[_0x25eb('0x5f')]['ids'][_0x128eba]),'WhatsappAccountId':Number(_0x1e9291[_0x25eb('0x5b')]['id'])});}return _0x2523b8;});}})['then'](respondWithResult(_0x523c9c,null))[_0x25eb('0x2c')](handleError(_0x523c9c,null));};exports['removeAgents']=function(_0x328b1b,_0xb53092,_0x1c2b45){return db['WhatsappAccount'][_0x25eb('0x5d')]({'where':{'id':_0x328b1b[_0x25eb('0x5b')]['id']}})[_0x25eb('0x22')](handleEntityNotFound(_0xb53092,null))[_0x25eb('0x22')](function(_0x328e5f){if(_0x328e5f){return _0x328e5f[_0x25eb('0x79')](_0x328b1b[_0x25eb('0x49')]['ids'])['then'](function(){if(_[_0x25eb('0x7a')](_0x328b1b['query'][_0x25eb('0x6f')])){for(var _0x43a92e=0x0;_0x43a92e<_0x328b1b['query'][_0x25eb('0x6f')][_0x25eb('0x4e')];_0x43a92e+=0x1){socket[_0x25eb('0x77')](_0x25eb('0x7b'),{'UserId':Number(_0x328b1b[_0x25eb('0x49')][_0x25eb('0x6f')][_0x43a92e]),'WhatsappAccountId':Number(_0x328b1b['params']['id'])});}}else{socket[_0x25eb('0x77')]('userWhatsappAccount:remove',{'UserId':Number(_0x328b1b[_0x25eb('0x49')][_0x25eb('0x6f')]),'WhatsappAccountId':Number(_0x328b1b[_0x25eb('0x5b')]['id'])});}});}})[_0x25eb('0x22')](respondWithStatusCode(_0xb53092,null))[_0x25eb('0x2c')](handleError(_0xb53092,null));};exports['getAgents']=function(_0x292ba4,_0x579fb2,_0x26182f){var _0x258c9c={};var _0xd0b4={};var _0x512d3e;var _0x3090c9;return db[_0x25eb('0x43')][_0x25eb('0x69')]({'where':{'id':_0x292ba4[_0x25eb('0x5b')]['id']}})[_0x25eb('0x22')](handleEntityNotFound(_0x579fb2,null))[_0x25eb('0x22')](function(_0x40601b){if(_0x40601b){_0x512d3e=_0x40601b;_0xd0b4[_0x25eb('0x47')]=_['keys'](db[_0x25eb('0x7c')][_0x25eb('0x44')]);_0xd0b4['query']=_[_0x25eb('0x5c')](_0x292ba4[_0x25eb('0x49')]);_0xd0b4[_0x25eb('0x4a')]=_[_0x25eb('0x4b')](_0xd0b4[_0x25eb('0x47')],_0xd0b4[_0x25eb('0x49')]);_0x258c9c[_0x25eb('0x4c')]=_[_0x25eb('0x4b')](_0xd0b4[_0x25eb('0x47')],qs[_0x25eb('0x4d')](_0x292ba4['query'][_0x25eb('0x4d')]));_0x258c9c[_0x25eb('0x4c')]=_0x258c9c['attributes']['length']?_0x258c9c[_0x25eb('0x4c')]:_0xd0b4[_0x25eb('0x47')];_0x258c9c[_0x25eb('0x6c')]=qs['sort'](_0x292ba4[_0x25eb('0x49')][_0x25eb('0x50')]);_0x258c9c[_0x25eb('0x54')]=qs[_0x25eb('0x4a')](_['pick'](_0x292ba4[_0x25eb('0x49')],_0xd0b4[_0x25eb('0x4a')]));if(_0x292ba4['query'][_0x25eb('0x52')]){_0x258c9c[_0x25eb('0x54')]=_['merge'](_0x258c9c[_0x25eb('0x54')],{'$or':_[_0x25eb('0x48')](_0x258c9c[_0x25eb('0x4c')],function(_0x3acf07){var _0x19ccfa={};_0x19ccfa[_0x3acf07]={'$like':'%'+_0x292ba4[_0x25eb('0x49')]['filter']+'%'};return _0x19ccfa;})});}_0x258c9c=_[_0x25eb('0x53')]({},_0x258c9c,_0x292ba4['options']);return _0x512d3e[_0x25eb('0x7d')](_0x258c9c);}})['then'](function(_0x1a7f27){if(_0x1a7f27){_0x3090c9=_0x1a7f27[_0x25eb('0x4e')];if(!_0x292ba4[_0x25eb('0x49')]['hasOwnProperty'](_0x25eb('0x4f'))){_0x258c9c[_0x25eb('0x30')]=qs[_0x25eb('0x30')](_0x292ba4[_0x25eb('0x49')][_0x25eb('0x30')]);_0x258c9c['offset']=qs[_0x25eb('0x2f')](_0x292ba4[_0x25eb('0x49')][_0x25eb('0x2f')]);}return _0x512d3e[_0x25eb('0x7d')](_0x258c9c);}})[_0x25eb('0x22')](function(_0x3fa3bd){if(_0x3fa3bd){return _0x3fa3bd?{'count':_0x3090c9,'rows':_0x3fa3bd}:null;}})[_0x25eb('0x22')](respondWithResult(_0x579fb2,null))[_0x25eb('0x2c')](handleError(_0x579fb2,null));};exports[_0x25eb('0x7e')]=function(_0x597ebd,_0x2e8046,_0x353991){return db[_0x25eb('0x43')][_0x25eb('0x69')]({'where':{'id':_0x597ebd[_0x25eb('0x5b')]['id']}})[_0x25eb('0x22')](handleEntityNotFound(_0x2e8046,null))[_0x25eb('0x22')](function(_0x3034af){if(_0x3034af){return db[_0x25eb('0x7f')][_0x25eb('0x80')](function(_0x2877c2){return db['WhatsappApplication'][_0x25eb('0x3a')]({'where':{'WhatsappAccountId':_0x597ebd[_0x25eb('0x5b')]['id']},'transaction':_0x2877c2})['then'](function(_0x49c87c){var _0x12394c=_[_0x25eb('0x48')](_0x597ebd[_0x25eb('0x5f')],function(_0xe5d9b0){_0xe5d9b0[_0x25eb('0x67')]=_0x597ebd[_0x25eb('0x5b')]['id'];return _0xe5d9b0;});return db[_0x25eb('0x81')][_0x25eb('0x82')](_0x12394c,{'transaction':_0x2877c2});});})['then'](function(){return db[_0x25eb('0x81')][_0x25eb('0x83')]({'where':{'WhatsappAccountId':_0x597ebd['params']['id']},'order':_0x25eb('0x84')});});}})[_0x25eb('0x22')](respondWithResult(_0x2e8046,null))[_0x25eb('0x2c')](handleError(_0x2e8046,null));};exports[_0x25eb('0x85')]=function(_0x351ee2,_0x102b97,_0x43b6e9){var _0x1239c7={};var _0x52c4a3={};var _0x49c034;var _0x27a512;return db[_0x25eb('0x43')][_0x25eb('0x69')]({'where':{'id':_0x351ee2[_0x25eb('0x5b')]['id']}})[_0x25eb('0x22')](handleEntityNotFound(_0x102b97,null))[_0x25eb('0x22')](function(_0x165a5f){if(_0x165a5f){_0x49c034=_0x165a5f;_0x52c4a3[_0x25eb('0x47')]=_[_0x25eb('0x5c')](db[_0x25eb('0x81')][_0x25eb('0x44')]);_0x52c4a3[_0x25eb('0x49')]=_['keys'](_0x351ee2[_0x25eb('0x49')]);_0x52c4a3[_0x25eb('0x4a')]=_[_0x25eb('0x4b')](_0x52c4a3[_0x25eb('0x47')],_0x52c4a3[_0x25eb('0x49')]);_0x1239c7[_0x25eb('0x4c')]=_[_0x25eb('0x4b')](_0x52c4a3[_0x25eb('0x47')],qs[_0x25eb('0x4d')](_0x351ee2[_0x25eb('0x49')]['fields']));_0x1239c7[_0x25eb('0x4c')]=_0x1239c7['attributes']['length']?_0x1239c7[_0x25eb('0x4c')]:_0x52c4a3[_0x25eb('0x47')];_0x1239c7[_0x25eb('0x6c')]=qs[_0x25eb('0x50')](_0x351ee2[_0x25eb('0x49')][_0x25eb('0x50')]);_0x1239c7[_0x25eb('0x54')]=qs[_0x25eb('0x4a')](_[_0x25eb('0x51')](_0x351ee2[_0x25eb('0x49')],_0x52c4a3[_0x25eb('0x4a')]));if(_0x351ee2[_0x25eb('0x49')][_0x25eb('0x52')]){_0x1239c7[_0x25eb('0x54')]=_[_0x25eb('0x53')](_0x1239c7[_0x25eb('0x54')],{'$or':_[_0x25eb('0x48')](_0x1239c7[_0x25eb('0x4c')],function(_0x1a1fb1){var _0x20ac55={};_0x20ac55[_0x1a1fb1]={'$like':'%'+_0x351ee2[_0x25eb('0x49')][_0x25eb('0x52')]+'%'};return _0x20ac55;})});}_0x1239c7=_['merge']({},_0x1239c7,_0x351ee2[_0x25eb('0x56')]);return _0x49c034[_0x25eb('0x85')](_0x1239c7);}})[_0x25eb('0x22')](function(_0x2e256f){if(_0x2e256f){_0x27a512=_0x2e256f[_0x25eb('0x4e')];if(!_0x351ee2[_0x25eb('0x49')][_0x25eb('0x6b')](_0x25eb('0x4f'))){_0x1239c7[_0x25eb('0x30')]=qs[_0x25eb('0x30')](_0x351ee2['query']['limit']);_0x1239c7['offset']=qs['offset'](_0x351ee2[_0x25eb('0x49')]['offset']);}return _0x49c034['getApplications'](_0x1239c7);}})[_0x25eb('0x22')](function(_0x3f1ff1){if(_0x3f1ff1){return _0x3f1ff1?{'count':_0x27a512,'rows':_0x3f1ff1}:null;}})['then'](respondWithResult(_0x102b97,null))[_0x25eb('0x2c')](handleError(_0x102b97,null));};exports[_0x25eb('0x86')]=function(_0x1424d8,_0x35b6cd,_0x2b6735){var _0x36e0b2={'channel':_0x25eb('0x87')};var _0x4e53aa=[];var _0x4c44cd=[];var _0x2f34fe={};return db[_0x25eb('0x43')][_0x25eb('0x5d')]({'where':{'id':_0x1424d8[_0x25eb('0x5b')]['id']},'include':[{'model':db[_0x25eb('0x81')],'as':_0x25eb('0x88')}]})[_0x25eb('0x22')](handleEntityNotFound(_0x35b6cd,null))[_0x25eb('0x22')](function(_0x1b37dd){_0x36e0b2['account']=_0x1b37dd;_0x36e0b2[_0x25eb('0x89')]=_[_0x25eb('0x8a')](_0x1b37dd['Applications'],[_0x25eb('0x84')],[_0x25eb('0x8b')]);if(_0x36e0b2[_0x25eb('0x8c')]['Applications']){delete _0x36e0b2[_0x25eb('0x8c')][_0x25eb('0x88')];}return db[_0x25eb('0x8d')][_0x25eb('0x65')]();})['then'](function(_0xae6e79){if(!_0xae6e79){throw new db[(_0x25eb('0x8e'))]['ValidationError'](_0x25eb('0x8f'));}_0x4e53aa=_[_0x25eb('0x90')](_[_0x25eb('0x5c')](_0xae6e79),[_0x25eb('0x91'),_0x25eb('0x92')]);_0x4c44cd=_[_0x25eb('0x90')](_[_0x25eb('0x5c')](_0xae6e79),[_0x25eb('0x91'),_0x25eb('0x92'),_0x25eb('0x93'),'ListId']);_0x36e0b2[_0x25eb('0x5f')]={'mapKey':_0x25eb('0x94')};if(_0x36e0b2[_0x25eb('0x8c')][_0x25eb('0x45')]&&_0x36e0b2[_0x25eb('0x8c')]['type']===_0x25eb('0x95')){_0x36e0b2['body']['from']=_0x1424d8[_0x25eb('0x5f')][_0x25eb('0x96')][_0x25eb('0x97')]('whatsapp:','');_0x36e0b2[_0x25eb('0x5f')][_0x25eb('0x5f')]=_0x1424d8[_0x25eb('0x5f')][_0x25eb('0x98')];_0x36e0b2['body'][_0x25eb('0x99')]=_0x1424d8[_0x25eb('0x5f')][_0x25eb('0x9a')];}if(_0x36e0b2['body']['id']){delete _0x36e0b2[_0x25eb('0x5f')]['id'];}if(_['isNil'](_0x36e0b2[_0x25eb('0x5f')][_0x25eb('0x9b')])){throw new db['Sequelize'][(_0x25eb('0x9c'))](_0x25eb('0x9d'));}if(_['isNil'](_0x36e0b2[_0x25eb('0x5f')][_0x25eb('0x5f')])||_0x36e0b2[_0x25eb('0x5f')][_0x25eb('0x5f')]===''){throw new db['Sequelize'][(_0x25eb('0x9c'))](_0x25eb('0x9e'));}if(_[_0x25eb('0x9f')](_0x36e0b2[_0x25eb('0x5f')][_0x25eb('0xa0')])){throw new db['Sequelize'][(_0x25eb('0x9c'))](_0x25eb('0xa1')+_0x4c44cd);}if(!_[_0x25eb('0xa2')](_0x4c44cd,_0x36e0b2[_0x25eb('0x5f')]['mapKey'])){throw new db[(_0x25eb('0x8e'))]['ValidationError'](_0x25eb('0xa3')+_0x4c44cd);}_0x2f34fe[_0x36e0b2['body'][_0x25eb('0xa0')]]=_0x36e0b2['body']['from'];return db['CmList'][_0x25eb('0x5d')]({'where':{'id':_0x36e0b2[_0x25eb('0x8c')][_0x25eb('0xa4')]},'include':[{'model':db[_0x25eb('0x8d')],'as':_0x25eb('0xa5'),'where':_0x2f34fe,'limit':0x1,'order':[['updatedAt',_0x25eb('0xa6')]]}]});})[_0x25eb('0x22')](handleEntityNotFound(_0x35b6cd,null))[_0x25eb('0x22')](function(_0xa681ca){if(_0xa681ca){_0x36e0b2[_0x25eb('0xa7')]=_['omit'](_0xa681ca,[_0x25eb('0xa5')]);if(_0xa681ca[_0x25eb('0xa5')][_0x25eb('0x4e')]){return _0xa681ca['Contacts'][0x0];}var _0x3b3925=_['defaults'](_0x36e0b2[_0x25eb('0x5f')],{'firstName':_0x36e0b2[_0x25eb('0x5f')][_0x25eb('0x9b')],'ListId':_0xa681ca['id']});_0x3b3925[_0x36e0b2[_0x25eb('0x5f')][_0x25eb('0xa0')]]=_0x36e0b2[_0x25eb('0x5f')][_0x25eb('0x9b')];return db['CmContact'][_0x25eb('0x5e')](_0x3b3925,{'fields':_0x4e53aa,'raw':!![]});}})[_0x25eb('0x22')](handleEntityNotFound(_0x35b6cd,null))[_0x25eb('0x22')](function(_0x585ed7){if(_0x585ed7){_0x36e0b2[_0x25eb('0xa8')]=_0x585ed7;var _0x30b4cc={'ContactId':_0x585ed7['id'],'phone':_0x36e0b2[_0x25eb('0x5f')]['from'],'WhatsappAccountId':_0x1424d8[_0x25eb('0x5b')]['id']};var _0x4ced12={'ContactId':_0x585ed7['id'],'WhatsappAccountId':_0x1424d8['params']['id'],'closed':![]};return db[_0x25eb('0xa9')][_0x25eb('0x5d')]({'where':_0x4ced12})[_0x25eb('0x22')](function(_0x13484a){if(_0x13484a){return[_0x13484a,![]];}return db[_0x25eb('0xa9')][_0x25eb('0x5e')](_0x30b4cc)[_0x25eb('0x22')](function(_0x17bc27){return[_0x17bc27,!![]];});});}})[_0x25eb('0x76')](function(_0x56aa22,_0xcd8113){_0x36e0b2[_0x25eb('0xaa')]=_0x56aa22['get']({'plain':!![]});_0x36e0b2[_0x25eb('0xaa')]['created']=![];if(_0xcd8113){if(_0x36e0b2[_0x25eb('0x8c')]['autoclose']){_0x36e0b2[_0x25eb('0x89')][_0x25eb('0xab')]({'id':0x0,'priority':_0x36e0b2['applications'][_0x25eb('0x4e')]+0x1,'app':_0x25eb('0xac'),'appdata':_0x25eb('0xad'),'interval':_0x25eb('0xae')});}_0x36e0b2[_0x25eb('0xaa')][_0x25eb('0xaf')]=!![];}return db[_0x25eb('0xb0')][_0x25eb('0x5e')]({'phone':_0x36e0b2[_0x25eb('0x5f')][_0x25eb('0x9b')],'messageId':_0x36e0b2[_0x25eb('0x5f')][_0x25eb('0x99')],'body':_0x36e0b2[_0x25eb('0x5f')][_0x25eb('0x5f')],'WhatsappAccountId':_0x1424d8[_0x25eb('0x5b')]['id'],'WhatsappInteractionId':_0x56aa22['id'],'direction':'in','ContactId':_0x56aa22[_0x25eb('0xb1')],'AttachmentId':_0x36e0b2[_0x25eb('0x5f')][_0x25eb('0xb2')]});})[_0x25eb('0x22')](function(_0x2c086f){_0x36e0b2['message']=_0x2c086f;if(_0x36e0b2[_0x25eb('0xaa')]['UserId']){return db[_0x25eb('0x7c')]['find']({'attributes':['id',_0x25eb('0x3f')],'where':{'id':_0x36e0b2[_0x25eb('0xaa')][_0x25eb('0xb3')]}})['then'](function(_0x5b68c1){if(_0x5b68c1){_0x36e0b2['applications'][_0x25eb('0xb4')]({'id':0x0,'priority':0x0,'app':_0x25eb('0xb5'),'appdata':_0x5b68c1['name']+','+(_0x36e0b2[_0x25eb('0x8c')][_0x25eb('0xb6')]||0xa),'interval':_0x25eb('0xae')});}return respondWithRpcPromise(_0x25eb('0xb7'),_0x25eb('0xb8'),_0x36e0b2);});}return respondWithRpcPromise('Start',_0x25eb('0xb8'),_0x36e0b2);})[_0x25eb('0x22')](function(_0x280e1a){if(_0x280e1a){var _0x46518e=0xc8;var _0x1550fd='receiveMessage';logger[_0x25eb('0x2a')](_0x25eb('0x25'),_0x1550fd,_0x46518e,_0x25eb('0xb9'));logger[_0x25eb('0x24')](_0x25eb('0xba'),_0x1550fd,_0x46518e,_0x25eb('0xb9'),JSON[_0x25eb('0xbb')](_0x280e1a));if(_0x36e0b2[_0x25eb('0x8c')][_0x25eb('0x45')]===_0x25eb('0x95')){return _0x35b6cd['status'](_0x46518e)[_0x25eb('0x33')](_0x25eb('0xbc'),'text/xml')[_0x25eb('0xbd')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x35b6cd[_0x25eb('0x2e')](_0x46518e)[_0x25eb('0x35')](_0x280e1a);}}})[_0x25eb('0x2c')](handleError(_0x35b6cd,null));};exports['send']=function(_0x5819c2,_0x585a8a,_0x321c04){var _0x478002,_0x4469e7,_0x590a5c;if(_[_0x25eb('0x9f')](_0x5819c2[_0x25eb('0x5f')]['body'])||_0x5819c2[_0x25eb('0x5f')][_0x25eb('0x5f')]===''){throw new db['Sequelize']['ValidationError'](_0x25eb('0x9e'));}if(_[_0x25eb('0x9f')](_0x5819c2[_0x25eb('0x5f')]['to'])){throw new db[(_0x25eb('0x8e'))]['ValidationError'](_0x25eb('0xbe'));}_0x478002=_0x5819c2[_0x25eb('0x5f')]['to'];return db[_0x25eb('0x43')]['find']({'where':{'id':_0x5819c2[_0x25eb('0x5b')]['id']},'include':[{'model':db[_0x25eb('0xbf')],'as':'List','include':[{'model':db[_0x25eb('0x8d')],'as':_0x25eb('0xa5'),'where':{'mobile':_0x478002},'limit':0x1,'order':[[_0x25eb('0x92'),_0x25eb('0xa6')]]}]}]})[_0x25eb('0x22')](handleEntityNotFound(_0x585a8a,null))['then'](function(_0x5526fa){if(_0x5526fa&&_0x5526fa[_0x25eb('0xc0')]){_0x4469e7=_0x5526fa[_0x25eb('0x3b')]({'plain':!![]});if(_0x4469e7[_0x25eb('0xc0')]&&_0x4469e7[_0x25eb('0xc0')]['Contacts']['length']){return _0x4469e7[_0x25eb('0xc0')][_0x25eb('0xa5')][0x0];}return db['CmContact'][_0x25eb('0x5e')](_['defaults'](_0x5819c2[_0x25eb('0x5f')],{'firstName':_0x478002,'mobile':_0x478002,'phone':_0x478002,'ListId':_0x4469e7[_0x25eb('0xa4')]}));}})['then'](handleEntityNotFound(_0x585a8a,null))[_0x25eb('0x22')](function(_0x48b26d){if(_0x48b26d){_0x590a5c=_0x48b26d;return db[_0x25eb('0xa9')]['find']({'where':{'ContactId':_0x590a5c['id'],'closed':![],'WhatsappAccountId':_0x4469e7['id']}})[_0x25eb('0x22')](function(_0x2d7be6){if(_0x2d7be6){return[_0x2d7be6,![]];}return db['WhatsappInteraction'][_0x25eb('0x5e')]({'UserId':_0x5819c2[_0x25eb('0x60')]['id'],'ContactId':_0x590a5c['id'],'WhatsappAccountId':_0x4469e7['id'],'phone':_0x478002,'firstMsgDirection':_0x25eb('0xc1'),'Messages':[_[_0x25eb('0x53')](_0x5819c2[_0x25eb('0x5f')],{'read':![],'body':_0x5819c2[_0x25eb('0x5f')][_0x25eb('0x5f')],'phone':_0x478002,'WhatsappAccountId':_0x4469e7['id'],'UserId':_0x5819c2[_0x25eb('0x60')]['id'],'ContactId':_0x590a5c['id']})]},{'include':[{'model':db[_0x25eb('0xb0')],'as':_0x25eb('0xc2')}]})[_0x25eb('0x22')](function(_0x3fbd2a){return[_0x3fbd2a,!![]];});});}})[_0x25eb('0x76')](function(_0x22a60c,_0x42a595){if(_0x42a595){return _0x22a60c;}return db[_0x25eb('0xb0')][_0x25eb('0x5e')](_[_0x25eb('0x53')](_0x5819c2[_0x25eb('0x5f')],{'read':![],'body':_0x5819c2[_0x25eb('0x5f')][_0x25eb('0x5f')],'phone':_0x478002,'WhatsappAccountId':_0x4469e7['id'],'WhatsappInteractionId':_0x22a60c['id'],'UserId':_0x5819c2[_0x25eb('0x60')]['id'],'ContactId':_0x590a5c['id']}))[_0x25eb('0x22')](function(_0x121167){_0x22a60c[_0x25eb('0xc3')][_0x25eb('0xc2')]=[];_0x22a60c[_0x25eb('0xc3')][_0x25eb('0xc2')][_0x25eb('0xab')](_0x121167[_0x25eb('0xc3')]);return _0x22a60c;});})[_0x25eb('0x22')](respondWithResult(_0x585a8a,null))[_0x25eb('0x2c')](handleError(_0x585a8a,null));};
\ No newline at end of file
+var _0xaf59=['text/xml','to\x20is\x20mandatory','CmList','List','CmContact','out','Messages','dataValues','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','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','redis','defaults','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','client','request','then','info','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','destroy','WhatsappAccounts','UserProfileResource','stack','name','send','index','Pause','WhatsappAccount','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','pick','filter','merge','map','type','VIRTUAL','options','where','includeAll','include','findAll','rows','mandatoryDispositionPause','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','WhatsappAccountId','Disposition','getDispositions','hasOwnProperty','sort','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','addAgents','userWhatsappAccount:save','removeAgents','isArray','emit','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','WhatsappApplication','findAndCountAll','priority','getApplications','notify','whatsapp','Applications','account','orderBy','asc','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','mobile','twilio','from','From','replace','whatsapp:','Body','messageId','MessageSid','from\x20is\x20mandatory','isNil','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','Contacts','DESC','omit','contact','WhatsappInteraction','spread','interaction','created','applications','push','close','unmanaged','*,*,*,*','WhatsappMessage','ContactId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0xaf59,0x186));var _0x9af5=function(_0x13137e,_0x29c0f3){_0x13137e=_0x13137e-0x0;var _0x346261=_0xaf59[_0x13137e];return _0x346261;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9af5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9af5('0x1'));var rp=require(_0x9af5('0x2'));var moment=require(_0x9af5('0x3'));var BPromise=require(_0x9af5('0x4'));var Mustache=require(_0x9af5('0x5'));var util=require(_0x9af5('0x6'));var path=require(_0x9af5('0x7'));var sox=require('sox');var csv=require(_0x9af5('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9af5('0x9'));var _=require(_0x9af5('0xa'));var squel=require(_0x9af5('0xb'));var crypto=require(_0x9af5('0xc'));var jsforce=require(_0x9af5('0xd'));var deskjs=require(_0x9af5('0xe'));var toCsv=require(_0x9af5('0x8'));var querystring=require(_0x9af5('0xf'));var Papa=require(_0x9af5('0x10'));var Redis=require('ioredis');var authService=require(_0x9af5('0x11'));var qs=require(_0x9af5('0x12'));var as=require(_0x9af5('0x13'));var hardwareService=require(_0x9af5('0x14'));var logger=require(_0x9af5('0x15'))(_0x9af5('0x16'));var utils=require(_0x9af5('0x17'));var config=require(_0x9af5('0x18'));var licenseUtil=require(_0x9af5('0x19'));var db=require('../../mysqldb')['db'];config[_0x9af5('0x1a')]=_[_0x9af5('0x1b')](config[_0x9af5('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x9af5('0x1c'))(new Redis(config[_0x9af5('0x1a')]));require(_0x9af5('0x1d'))[_0x9af5('0x1e')](socket);var jayson=require(_0x9af5('0x1f'));var client=jayson[_0x9af5('0x20')]['http']({'port':0x232c});function respondWithRpcPromise(_0x303d0a,_0x19f0b7,_0x20b205,_0x4add7a){return new BPromise(function(_0xdbcbac,_0x118dda){var _0x4b68a8=_0x4add7a||client;return _0x4b68a8[_0x9af5('0x21')](_0x303d0a,_0x20b205)[_0x9af5('0x22')](function(_0x5b7d23){logger[_0x9af5('0x23')](_0x9af5('0x24'),_0x19f0b7,'request\x20sent');logger[_0x9af5('0x25')](_0x9af5('0x26'),_0x19f0b7,'request\x20sent',JSON[_0x9af5('0x27')](_0x5b7d23));if(_0x5b7d23[_0x9af5('0x28')]){if(_0x5b7d23[_0x9af5('0x28')]['code']===0x1f4){logger[_0x9af5('0x28')](_0x9af5('0x24'),_0x19f0b7,_0x5b7d23[_0x9af5('0x28')][_0x9af5('0x29')]);return _0x118dda(_0x5b7d23['error'][_0x9af5('0x29')]);}logger['error'](_0x9af5('0x24'),_0x19f0b7,_0x5b7d23[_0x9af5('0x28')]['message']);return _0xdbcbac(_0x5b7d23['error'][_0x9af5('0x29')]);}else{logger[_0x9af5('0x23')](_0x9af5('0x24'),_0x19f0b7,_0x9af5('0x2a'));_0xdbcbac(_0x5b7d23[_0x9af5('0x2b')][_0x9af5('0x29')]);}})[_0x9af5('0x2c')](function(_0x26a41b){logger[_0x9af5('0x28')]('WhatsappAccount,\x20%s,\x20%s',_0x19f0b7,_0x26a41b);_0x118dda(_0x26a41b);});});}function respondWithStatusCode(_0x57084e,_0x552a8d){_0x552a8d=_0x552a8d||0xcc;return function(_0x357061){if(_0x357061){return _0x57084e[_0x9af5('0x2d')](_0x552a8d);}return _0x57084e['status'](_0x552a8d)[_0x9af5('0x2e')]();};}function respondWithResult(_0x218dfe,_0x14a768){_0x14a768=_0x14a768||0xc8;return function(_0x22904b){if(_0x22904b){return _0x218dfe[_0x9af5('0x2f')](_0x14a768)['json'](_0x22904b);}};}function respondWithFilteredResult(_0x403d7c,_0x558449){return function(_0x255a5d){if(_0x255a5d){var _0x3e0c3b=typeof _0x558449[_0x9af5('0x30')]===_0x9af5('0x31')&&typeof _0x558449[_0x9af5('0x32')]===_0x9af5('0x31');var _0x463021=_0x255a5d[_0x9af5('0x33')];var _0x5d1e0f=_0x3e0c3b?0x0:_0x558449[_0x9af5('0x30')];var _0x1a763b=_0x3e0c3b?_0x255a5d[_0x9af5('0x33')]:_0x558449[_0x9af5('0x30')]+_0x558449[_0x9af5('0x32')];var _0x59df92;if(_0x1a763b>=_0x463021){_0x1a763b=_0x463021;_0x59df92=0xc8;}else{_0x59df92=0xce;}_0x403d7c[_0x9af5('0x2f')](_0x59df92);return _0x403d7c[_0x9af5('0x34')](_0x9af5('0x35'),_0x5d1e0f+'-'+_0x1a763b+'/'+_0x463021)[_0x9af5('0x36')](_0x255a5d);}return null;};}function patchUpdates(_0x69aaf4){return function(_0x55a3c6){try{jsonpatch[_0x9af5('0x37')](_0x55a3c6,_0x69aaf4,!![]);}catch(_0xedfe6e){return BPromise['reject'](_0xedfe6e);}return _0x55a3c6[_0x9af5('0x38')]();};}function saveUpdates(_0x3e516b,_0x21d369){return function(_0x3ba28e){if(_0x3ba28e){return _0x3ba28e[_0x9af5('0x39')](_0x3e516b)[_0x9af5('0x22')](function(_0x55b662){return _0x55b662;});}return null;};}function removeEntity(_0x213c04,_0x739e5c){return function(_0x1187e9){if(_0x1187e9){return _0x1187e9[_0x9af5('0x3a')]()['then'](function(){var _0x585819=_0x1187e9['get']({'plain':!![]});var _0x305595=_0x9af5('0x3b');return db[_0x9af5('0x3c')][_0x9af5('0x3a')]({'where':{'type':_0x305595,'resourceId':_0x585819['id']}})['then'](function(){return _0x1187e9;});})[_0x9af5('0x22')](function(){_0x213c04[_0x9af5('0x2f')](0xcc)[_0x9af5('0x2e')]();});}};}function handleEntityNotFound(_0x4aec5e,_0x158ada){return function(_0x172e59){if(!_0x172e59){_0x4aec5e[_0x9af5('0x2d')](0x194);}return _0x172e59;};}function handleError(_0x131cd7,_0x218c34){_0x218c34=_0x218c34||0x1f4;return function(_0xf96593){logger[_0x9af5('0x28')](_0xf96593[_0x9af5('0x3d')]);if(_0xf96593[_0x9af5('0x3e')]){delete _0xf96593[_0x9af5('0x3e')];}_0x131cd7[_0x9af5('0x2f')](_0x218c34)[_0x9af5('0x3f')](_0xf96593);};}exports[_0x9af5('0x40')]=function(_0x2cb8ac,_0x2061ee){var _0x274458={'include':[{'model':db[_0x9af5('0x41')],'as':'mandatoryDispositionPause'}]},_0x1a7f66={},_0x44edca={'count':0x0,'rows':[]};var _0x1a2387=_['map'](db[_0x9af5('0x42')][_0x9af5('0x43')],function(_0x318eed){return{'name':_0x318eed[_0x9af5('0x44')],'type':_0x318eed['type'][_0x9af5('0x45')]};});_0x1a7f66[_0x9af5('0x46')]=_['map'](_0x1a2387,_0x9af5('0x3e'));_0x1a7f66['query']=_[_0x9af5('0x47')](_0x2cb8ac[_0x9af5('0x48')]);_0x1a7f66[_0x9af5('0x49')]=_[_0x9af5('0x4a')](_0x1a7f66[_0x9af5('0x46')],_0x1a7f66[_0x9af5('0x48')]);_0x274458[_0x9af5('0x4b')]=_[_0x9af5('0x4a')](_0x1a7f66[_0x9af5('0x46')],qs[_0x9af5('0x4c')](_0x2cb8ac[_0x9af5('0x48')][_0x9af5('0x4c')]));_0x274458[_0x9af5('0x4b')]=_0x274458['attributes'][_0x9af5('0x4d')]?_0x274458[_0x9af5('0x4b')]:_0x1a7f66['model'];if(!_0x2cb8ac['query']['hasOwnProperty'](_0x9af5('0x4e'))){_0x274458[_0x9af5('0x32')]=qs[_0x9af5('0x32')](_0x2cb8ac['query'][_0x9af5('0x32')]);_0x274458['offset']=qs['offset'](_0x2cb8ac['query'][_0x9af5('0x30')]);}_0x274458[_0x9af5('0x4f')]=qs['sort'](_0x2cb8ac[_0x9af5('0x48')]['sort']);_0x274458['where']=qs[_0x9af5('0x49')](_[_0x9af5('0x50')](_0x2cb8ac[_0x9af5('0x48')],_0x1a7f66[_0x9af5('0x49')]),_0x1a2387);if(_0x2cb8ac['query'][_0x9af5('0x51')]){_0x274458['where']=_[_0x9af5('0x52')](_0x274458['where'],{'$or':_[_0x9af5('0x53')](_0x1a2387,function(_0x3f0438){if(_0x3f0438[_0x9af5('0x54')]!==_0x9af5('0x55')){var _0x202f6c={};_0x202f6c[_0x3f0438[_0x9af5('0x3e')]]={'$like':'%'+_0x2cb8ac[_0x9af5('0x48')][_0x9af5('0x51')]+'%'};return _0x202f6c;}})});}_0x274458=_['merge']({},_0x274458,_0x2cb8ac[_0x9af5('0x56')]);var _0x1a012d={'where':_0x274458[_0x9af5('0x57')]};return db[_0x9af5('0x42')][_0x9af5('0x33')](_0x1a012d)[_0x9af5('0x22')](function(_0x352934){_0x44edca[_0x9af5('0x33')]=_0x352934;if(_0x2cb8ac[_0x9af5('0x48')][_0x9af5('0x58')]){_0x274458[_0x9af5('0x59')]=[{'all':!![]}];}return db[_0x9af5('0x42')][_0x9af5('0x5a')](_0x274458);})[_0x9af5('0x22')](function(_0x4334ed){_0x44edca[_0x9af5('0x5b')]=_0x4334ed;return _0x44edca;})[_0x9af5('0x22')](respondWithFilteredResult(_0x2061ee,_0x274458))[_0x9af5('0x2c')](handleError(_0x2061ee,null));};exports['show']=function(_0x5edbe7,_0x19ed7f){var _0x2b7f9b={'raw':![],'where':{'id':_0x5edbe7['params']['id']},'include':[{'model':db[_0x9af5('0x41')],'as':_0x9af5('0x5c')}]},_0x500611={};_0x500611[_0x9af5('0x46')]=_['keys'](db[_0x9af5('0x42')][_0x9af5('0x43')]);_0x500611['query']=_['keys'](_0x5edbe7[_0x9af5('0x48')]);_0x500611[_0x9af5('0x49')]=_[_0x9af5('0x4a')](_0x500611[_0x9af5('0x46')],_0x500611[_0x9af5('0x48')]);_0x2b7f9b[_0x9af5('0x4b')]=_['intersection'](_0x500611[_0x9af5('0x46')],qs['fields'](_0x5edbe7[_0x9af5('0x48')]['fields']));_0x2b7f9b[_0x9af5('0x4b')]=_0x2b7f9b[_0x9af5('0x4b')]['length']?_0x2b7f9b[_0x9af5('0x4b')]:_0x500611['model'];if(_0x5edbe7[_0x9af5('0x48')]['includeAll']){_0x2b7f9b[_0x9af5('0x59')]=[{'all':!![]}];}_0x2b7f9b=_[_0x9af5('0x52')]({},_0x2b7f9b,_0x5edbe7['options']);return db[_0x9af5('0x42')]['find'](_0x2b7f9b)[_0x9af5('0x22')](handleEntityNotFound(_0x19ed7f,null))[_0x9af5('0x22')](respondWithResult(_0x19ed7f,null))[_0x9af5('0x2c')](handleError(_0x19ed7f,null));};exports['create']=function(_0x56ef0d,_0x42bb8f){return db['WhatsappAccount'][_0x9af5('0x5d')](_0x56ef0d[_0x9af5('0x5e')],{})['then'](function(_0xf1ba35){var _0x159a4c=_0x56ef0d[_0x9af5('0x5f')][_0x9af5('0x60')]({'plain':!![]});if(!_0x159a4c)throw new Error(_0x9af5('0x61'));if(_0x159a4c[_0x9af5('0x62')]===_0x9af5('0x5f')){var _0x58b91e=_0xf1ba35['get']({'plain':!![]});var _0x20da2a=_0x9af5('0x3b');return db['UserProfileSection']['find']({'where':{'name':_0x20da2a,'userProfileId':_0x159a4c[_0x9af5('0x63')]},'raw':!![]})['then'](function(_0xfce9aa){if(_0xfce9aa&&_0xfce9aa['autoAssociation']===0x0){return db[_0x9af5('0x3c')][_0x9af5('0x5d')]({'name':_0x58b91e['name'],'resourceId':_0x58b91e['id'],'type':_0xfce9aa[_0x9af5('0x3e')],'sectionId':_0xfce9aa['id']},{})[_0x9af5('0x22')](function(){return _0xf1ba35;});}else{return _0xf1ba35;}})[_0x9af5('0x2c')](function(_0x48d50f){logger[_0x9af5('0x28')](_0x9af5('0x64'),_0x48d50f);throw _0x48d50f;});}return _0xf1ba35;})[_0x9af5('0x22')](respondWithResult(_0x42bb8f,0xc9))[_0x9af5('0x2c')](handleError(_0x42bb8f,null));};exports[_0x9af5('0x39')]=function(_0x470fed,_0x10bb39){if(_0x470fed['body']['id']){delete _0x470fed[_0x9af5('0x5e')]['id'];}return db[_0x9af5('0x42')][_0x9af5('0x65')]({'where':{'id':_0x470fed[_0x9af5('0x66')]['id']},'include':[{'model':db[_0x9af5('0x41')],'as':_0x9af5('0x5c')}]})['then'](handleEntityNotFound(_0x10bb39,null))[_0x9af5('0x22')](saveUpdates(_0x470fed[_0x9af5('0x5e')],null))[_0x9af5('0x22')](respondWithResult(_0x10bb39,null))['catch'](handleError(_0x10bb39,null));};exports[_0x9af5('0x3a')]=function(_0x3fca29,_0x35a1ec){return db[_0x9af5('0x42')]['find']({'where':{'id':_0x3fca29[_0x9af5('0x66')]['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x35a1ec,null))[_0x9af5('0x22')](removeEntity(_0x35a1ec,null))[_0x9af5('0x2c')](handleError(_0x35a1ec,null));};exports['describe']=function(_0x1870d9,_0x2a2690){return db[_0x9af5('0x42')]['describe']()[_0x9af5('0x22')](respondWithResult(_0x2a2690,null))[_0x9af5('0x2c')](handleError(_0x2a2690,null));};exports['addDisposition']=function(_0x26f3a6,_0x1f2477,_0x553ffc){if(_0x26f3a6[_0x9af5('0x5e')]['id']){delete _0x26f3a6['body']['id'];}return db[_0x9af5('0x42')]['find']({'where':{'id':_0x26f3a6[_0x9af5('0x66')]['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x1f2477,null))[_0x9af5('0x22')](function(_0x48e376){if(_0x48e376){_0x26f3a6['body'][_0x9af5('0x67')]=_0x48e376['id'];return db[_0x9af5('0x68')][_0x9af5('0x5d')](_0x26f3a6[_0x9af5('0x5e')]);}})['then'](respondWithResult(_0x1f2477,null))[_0x9af5('0x2c')](handleError(_0x1f2477,null));};exports[_0x9af5('0x69')]=function(_0x320639,_0x62cc08,_0x35ec83){var _0x3fca8d={'raw':![],'where':{}};var _0x3afd89={};var _0x346473={'count':0x0,'rows':[]};return db['WhatsappAccount']['findOne']({'where':{'id':_0x320639[_0x9af5('0x66')]['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x62cc08,null))[_0x9af5('0x22')](function(_0x34d79e){if(_0x34d79e){_0x3afd89[_0x9af5('0x46')]=_[_0x9af5('0x47')](db[_0x9af5('0x68')][_0x9af5('0x43')]);_0x3afd89[_0x9af5('0x48')]=_[_0x9af5('0x47')](_0x320639[_0x9af5('0x48')]);_0x3afd89[_0x9af5('0x49')]=_[_0x9af5('0x4a')](_0x3afd89[_0x9af5('0x46')],_0x3afd89[_0x9af5('0x48')]);_0x3fca8d[_0x9af5('0x4b')]=_[_0x9af5('0x4a')](_0x3afd89[_0x9af5('0x46')],qs[_0x9af5('0x4c')](_0x320639[_0x9af5('0x48')][_0x9af5('0x4c')]));_0x3fca8d[_0x9af5('0x4b')]=_0x3fca8d[_0x9af5('0x4b')]['length']?_0x3fca8d[_0x9af5('0x4b')]:_0x3afd89[_0x9af5('0x46')];if(!_0x320639[_0x9af5('0x48')][_0x9af5('0x6a')]('nolimit')){_0x3fca8d[_0x9af5('0x32')]=qs[_0x9af5('0x32')](_0x320639[_0x9af5('0x48')][_0x9af5('0x32')]);_0x3fca8d[_0x9af5('0x30')]=qs['offset'](_0x320639[_0x9af5('0x48')][_0x9af5('0x30')]);}_0x3fca8d[_0x9af5('0x4f')]=qs[_0x9af5('0x6b')](_0x320639['query'][_0x9af5('0x6b')]);_0x3fca8d[_0x9af5('0x57')]=qs[_0x9af5('0x49')](_[_0x9af5('0x50')](_0x320639['query'],_0x3afd89['filters']));_0x3fca8d[_0x9af5('0x57')]['WhatsappAccountId']=_0x34d79e['id'];if(_0x320639[_0x9af5('0x48')][_0x9af5('0x51')]){_0x3fca8d['where']=_[_0x9af5('0x52')](_0x3fca8d[_0x9af5('0x57')],{'$or':_[_0x9af5('0x53')](_0x3fca8d[_0x9af5('0x4b')],function(_0x22d29b){var _0x5b3ee7={};_0x5b3ee7[_0x22d29b]={'$like':'%'+_0x320639['query'][_0x9af5('0x51')]+'%'};return _0x5b3ee7;})});}_0x3fca8d=_[_0x9af5('0x52')]({},_0x3fca8d,_0x320639['options']);return db['Disposition'][_0x9af5('0x33')]({'where':_0x3fca8d['where']})[_0x9af5('0x22')](function(_0x58e1ce){_0x346473[_0x9af5('0x33')]=_0x58e1ce;if(_0x320639[_0x9af5('0x48')][_0x9af5('0x58')]){_0x3fca8d[_0x9af5('0x59')]=[{'all':!![]}];}return db[_0x9af5('0x68')][_0x9af5('0x5a')](_0x3fca8d);})[_0x9af5('0x22')](function(_0x5e015d){_0x346473[_0x9af5('0x5b')]=_0x5e015d;return _0x346473;});}})[_0x9af5('0x22')](respondWithFilteredResult(_0x62cc08,_0x3fca8d))[_0x9af5('0x2c')](handleError(_0x62cc08,null));};exports[_0x9af5('0x6c')]=function(_0x129157,_0x4644ab,_0x13d899){return db[_0x9af5('0x42')][_0x9af5('0x65')]({'where':{'id':_0x129157[_0x9af5('0x66')]['id']}})['then'](handleEntityNotFound(_0x4644ab,null))[_0x9af5('0x22')](function(_0x51b91d){if(_0x51b91d){return _0x51b91d[_0x9af5('0x6c')](_0x129157[_0x9af5('0x48')][_0x9af5('0x6d')]);}})['then'](respondWithStatusCode(_0x4644ab,null))[_0x9af5('0x2c')](handleError(_0x4644ab,null));};exports[_0x9af5('0x6e')]=function(_0x30b6a8,_0x243174,_0x5f5412){if(_0x30b6a8[_0x9af5('0x5e')]['id']){delete _0x30b6a8[_0x9af5('0x5e')]['id'];}return db[_0x9af5('0x42')]['find']({'where':{'id':_0x30b6a8['params']['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x243174,null))[_0x9af5('0x22')](function(_0x1a2b07){if(_0x1a2b07){_0x30b6a8[_0x9af5('0x5e')][_0x9af5('0x67')]=_0x1a2b07['id'];return db[_0x9af5('0x6f')][_0x9af5('0x5d')](_0x30b6a8[_0x9af5('0x5e')]);}})[_0x9af5('0x22')](respondWithResult(_0x243174,null))[_0x9af5('0x2c')](handleError(_0x243174,null));};exports[_0x9af5('0x70')]=function(_0x48586a,_0x3cd003,_0x510ab4){var _0x405886={'raw':![],'where':{}};var _0x2a4704={};var _0x43e299={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x9af5('0x71')]({'where':{'id':_0x48586a['params']['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x3cd003,null))[_0x9af5('0x22')](function(_0x209232){if(_0x209232){_0x2a4704[_0x9af5('0x46')]=_[_0x9af5('0x47')](db[_0x9af5('0x6f')][_0x9af5('0x43')]);_0x2a4704[_0x9af5('0x48')]=_[_0x9af5('0x47')](_0x48586a[_0x9af5('0x48')]);_0x2a4704[_0x9af5('0x49')]=_[_0x9af5('0x4a')](_0x2a4704[_0x9af5('0x46')],_0x2a4704[_0x9af5('0x48')]);_0x405886[_0x9af5('0x4b')]=_[_0x9af5('0x4a')](_0x2a4704[_0x9af5('0x46')],qs[_0x9af5('0x4c')](_0x48586a[_0x9af5('0x48')][_0x9af5('0x4c')]));_0x405886[_0x9af5('0x4b')]=_0x405886[_0x9af5('0x4b')]['length']?_0x405886[_0x9af5('0x4b')]:_0x2a4704[_0x9af5('0x46')];if(!_0x48586a[_0x9af5('0x48')]['hasOwnProperty'](_0x9af5('0x4e'))){_0x405886[_0x9af5('0x32')]=qs[_0x9af5('0x32')](_0x48586a['query']['limit']);_0x405886[_0x9af5('0x30')]=qs[_0x9af5('0x30')](_0x48586a[_0x9af5('0x48')]['offset']);}_0x405886[_0x9af5('0x4f')]=qs[_0x9af5('0x6b')](_0x48586a['query'][_0x9af5('0x6b')]);_0x405886[_0x9af5('0x57')]=qs['filters'](_['pick'](_0x48586a['query'],_0x2a4704[_0x9af5('0x49')]));_0x405886[_0x9af5('0x57')]['WhatsappAccountId']=_0x209232['id'];if(_0x48586a[_0x9af5('0x48')][_0x9af5('0x51')]){_0x405886['where']=_[_0x9af5('0x52')](_0x405886['where'],{'$or':_[_0x9af5('0x53')](_0x405886[_0x9af5('0x4b')],function(_0x5c5a59){var _0x47b29e={};_0x47b29e[_0x5c5a59]={'$like':'%'+_0x48586a[_0x9af5('0x48')][_0x9af5('0x51')]+'%'};return _0x47b29e;})});}_0x405886=_[_0x9af5('0x52')]({},_0x405886,_0x48586a[_0x9af5('0x56')]);return db[_0x9af5('0x6f')][_0x9af5('0x33')]({'where':_0x405886[_0x9af5('0x57')]})['then'](function(_0x967950){_0x43e299[_0x9af5('0x33')]=_0x967950;if(_0x48586a['query']['includeAll']){_0x405886[_0x9af5('0x59')]=[{'all':!![]}];}return db['CannedAnswer'][_0x9af5('0x5a')](_0x405886);})[_0x9af5('0x22')](function(_0x46be19){_0x43e299[_0x9af5('0x5b')]=_0x46be19;return _0x43e299;});}})[_0x9af5('0x22')](respondWithFilteredResult(_0x3cd003,_0x405886))['catch'](handleError(_0x3cd003,null));};exports[_0x9af5('0x72')]=function(_0x453a2b,_0x1defac,_0x563786){return db[_0x9af5('0x42')][_0x9af5('0x65')]({'where':{'id':_0x453a2b['params']['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x1defac,null))['then'](function(_0xdca1e3){if(_0xdca1e3){return _0xdca1e3[_0x9af5('0x72')](_0x453a2b[_0x9af5('0x48')][_0x9af5('0x6d')]);}})[_0x9af5('0x22')](respondWithStatusCode(_0x1defac,null))[_0x9af5('0x2c')](handleError(_0x1defac,null));};exports[_0x9af5('0x73')]=function(_0x12f57e,_0x7403d2,_0x38214d){return db[_0x9af5('0x42')][_0x9af5('0x65')]({'where':{'id':_0x12f57e[_0x9af5('0x66')]['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x7403d2,null))[_0x9af5('0x22')](function(_0xfc0ede){if(_0xfc0ede){return _0xfc0ede[_0x9af5('0x73')](_0x12f57e[_0x9af5('0x5e')][_0x9af5('0x6d')],_['omit'](_0x12f57e['body'],['ids','id'])||{})['spread'](function(_0x4a0d7c){for(var _0x3bc5c4=0x0;_0x3bc5c4<_0x12f57e[_0x9af5('0x5e')][_0x9af5('0x6d')]['length'];_0x3bc5c4+=0x1){socket['emit'](_0x9af5('0x74'),{'UserId':Number(_0x12f57e['body']['ids'][_0x3bc5c4]),'WhatsappAccountId':Number(_0x12f57e[_0x9af5('0x66')]['id'])});}return _0x4a0d7c;});}})[_0x9af5('0x22')](respondWithResult(_0x7403d2,null))[_0x9af5('0x2c')](handleError(_0x7403d2,null));};exports['removeAgents']=function(_0x359361,_0x5e6884,_0x11b490){return db[_0x9af5('0x42')]['find']({'where':{'id':_0x359361[_0x9af5('0x66')]['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x5e6884,null))[_0x9af5('0x22')](function(_0x34843a){if(_0x34843a){return _0x34843a[_0x9af5('0x75')](_0x359361[_0x9af5('0x48')]['ids'])['then'](function(){if(_[_0x9af5('0x76')](_0x359361[_0x9af5('0x48')]['ids'])){for(var _0x3deb0b=0x0;_0x3deb0b<_0x359361[_0x9af5('0x48')][_0x9af5('0x6d')]['length'];_0x3deb0b+=0x1){socket[_0x9af5('0x77')](_0x9af5('0x78'),{'UserId':Number(_0x359361[_0x9af5('0x48')][_0x9af5('0x6d')][_0x3deb0b]),'WhatsappAccountId':Number(_0x359361[_0x9af5('0x66')]['id'])});}}else{socket[_0x9af5('0x77')]('userWhatsappAccount:remove',{'UserId':Number(_0x359361['query'][_0x9af5('0x6d')]),'WhatsappAccountId':Number(_0x359361['params']['id'])});}});}})[_0x9af5('0x22')](respondWithStatusCode(_0x5e6884,null))[_0x9af5('0x2c')](handleError(_0x5e6884,null));};exports[_0x9af5('0x79')]=function(_0x2ad4d3,_0x5ecf6d,_0xc48432){var _0x3f6b74={};var _0x193097={};var _0x3395c8;var _0x56411e;return db[_0x9af5('0x42')][_0x9af5('0x71')]({'where':{'id':_0x2ad4d3['params']['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x5ecf6d,null))[_0x9af5('0x22')](function(_0x562015){if(_0x562015){_0x3395c8=_0x562015;_0x193097['model']=_['keys'](db[_0x9af5('0x7a')][_0x9af5('0x43')]);_0x193097[_0x9af5('0x48')]=_[_0x9af5('0x47')](_0x2ad4d3['query']);_0x193097[_0x9af5('0x49')]=_[_0x9af5('0x4a')](_0x193097[_0x9af5('0x46')],_0x193097[_0x9af5('0x48')]);_0x3f6b74[_0x9af5('0x4b')]=_[_0x9af5('0x4a')](_0x193097[_0x9af5('0x46')],qs[_0x9af5('0x4c')](_0x2ad4d3[_0x9af5('0x48')][_0x9af5('0x4c')]));_0x3f6b74[_0x9af5('0x4b')]=_0x3f6b74[_0x9af5('0x4b')][_0x9af5('0x4d')]?_0x3f6b74['attributes']:_0x193097['model'];_0x3f6b74[_0x9af5('0x4f')]=qs['sort'](_0x2ad4d3[_0x9af5('0x48')]['sort']);_0x3f6b74[_0x9af5('0x57')]=qs['filters'](_[_0x9af5('0x50')](_0x2ad4d3[_0x9af5('0x48')],_0x193097[_0x9af5('0x49')]));if(_0x2ad4d3[_0x9af5('0x48')][_0x9af5('0x51')]){_0x3f6b74[_0x9af5('0x57')]=_[_0x9af5('0x52')](_0x3f6b74['where'],{'$or':_[_0x9af5('0x53')](_0x3f6b74[_0x9af5('0x4b')],function(_0x2c334e){var _0x1d2aa9={};_0x1d2aa9[_0x2c334e]={'$like':'%'+_0x2ad4d3[_0x9af5('0x48')]['filter']+'%'};return _0x1d2aa9;})});}_0x3f6b74=_[_0x9af5('0x52')]({},_0x3f6b74,_0x2ad4d3[_0x9af5('0x56')]);return _0x3395c8[_0x9af5('0x79')](_0x3f6b74);}})[_0x9af5('0x22')](function(_0x221377){if(_0x221377){_0x56411e=_0x221377[_0x9af5('0x4d')];if(!_0x2ad4d3['query'][_0x9af5('0x6a')](_0x9af5('0x4e'))){_0x3f6b74[_0x9af5('0x32')]=qs[_0x9af5('0x32')](_0x2ad4d3[_0x9af5('0x48')][_0x9af5('0x32')]);_0x3f6b74['offset']=qs['offset'](_0x2ad4d3['query']['offset']);}return _0x3395c8[_0x9af5('0x79')](_0x3f6b74);}})['then'](function(_0x4ab417){if(_0x4ab417){return _0x4ab417?{'count':_0x56411e,'rows':_0x4ab417}:null;}})[_0x9af5('0x22')](respondWithResult(_0x5ecf6d,null))[_0x9af5('0x2c')](handleError(_0x5ecf6d,null));};exports[_0x9af5('0x7b')]=function(_0x461cdf,_0x4d5b87,_0x32d8a6){return db[_0x9af5('0x42')][_0x9af5('0x71')]({'where':{'id':_0x461cdf[_0x9af5('0x66')]['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x4d5b87,null))[_0x9af5('0x22')](function(_0x1812fc){if(_0x1812fc){return db[_0x9af5('0x7c')][_0x9af5('0x7d')](function(_0x49d8f8){return db[_0x9af5('0x7e')][_0x9af5('0x3a')]({'where':{'WhatsappAccountId':_0x461cdf[_0x9af5('0x66')]['id']},'transaction':_0x49d8f8})[_0x9af5('0x22')](function(_0x1e6b7f){var _0xc2d1b=_[_0x9af5('0x53')](_0x461cdf[_0x9af5('0x5e')],function(_0x952c02){_0x952c02['WhatsappAccountId']=_0x461cdf['params']['id'];return _0x952c02;});return db[_0x9af5('0x7e')]['bulkCreate'](_0xc2d1b,{'transaction':_0x49d8f8});});})[_0x9af5('0x22')](function(){return db['WhatsappApplication'][_0x9af5('0x7f')]({'where':{'WhatsappAccountId':_0x461cdf['params']['id']},'order':_0x9af5('0x80')});});}})[_0x9af5('0x22')](respondWithResult(_0x4d5b87,null))[_0x9af5('0x2c')](handleError(_0x4d5b87,null));};exports[_0x9af5('0x81')]=function(_0x1a5623,_0x53d6a2,_0x34f263){var _0x24e8ca={};var _0x3bbac3={};var _0x2d427a;var _0x252f6f;return db['WhatsappAccount'][_0x9af5('0x71')]({'where':{'id':_0x1a5623[_0x9af5('0x66')]['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x53d6a2,null))[_0x9af5('0x22')](function(_0x3035db){if(_0x3035db){_0x2d427a=_0x3035db;_0x3bbac3[_0x9af5('0x46')]=_[_0x9af5('0x47')](db[_0x9af5('0x7e')][_0x9af5('0x43')]);_0x3bbac3['query']=_[_0x9af5('0x47')](_0x1a5623['query']);_0x3bbac3[_0x9af5('0x49')]=_['intersection'](_0x3bbac3[_0x9af5('0x46')],_0x3bbac3['query']);_0x24e8ca[_0x9af5('0x4b')]=_[_0x9af5('0x4a')](_0x3bbac3[_0x9af5('0x46')],qs[_0x9af5('0x4c')](_0x1a5623[_0x9af5('0x48')]['fields']));_0x24e8ca[_0x9af5('0x4b')]=_0x24e8ca[_0x9af5('0x4b')][_0x9af5('0x4d')]?_0x24e8ca[_0x9af5('0x4b')]:_0x3bbac3[_0x9af5('0x46')];_0x24e8ca[_0x9af5('0x4f')]=qs['sort'](_0x1a5623['query'][_0x9af5('0x6b')]);_0x24e8ca['where']=qs['filters'](_['pick'](_0x1a5623[_0x9af5('0x48')],_0x3bbac3['filters']));if(_0x1a5623[_0x9af5('0x48')][_0x9af5('0x51')]){_0x24e8ca[_0x9af5('0x57')]=_[_0x9af5('0x52')](_0x24e8ca[_0x9af5('0x57')],{'$or':_[_0x9af5('0x53')](_0x24e8ca[_0x9af5('0x4b')],function(_0x3d2898){var _0x660e77={};_0x660e77[_0x3d2898]={'$like':'%'+_0x1a5623['query']['filter']+'%'};return _0x660e77;})});}_0x24e8ca=_[_0x9af5('0x52')]({},_0x24e8ca,_0x1a5623[_0x9af5('0x56')]);return _0x2d427a[_0x9af5('0x81')](_0x24e8ca);}})[_0x9af5('0x22')](function(_0x2f7781){if(_0x2f7781){_0x252f6f=_0x2f7781['length'];if(!_0x1a5623['query'][_0x9af5('0x6a')](_0x9af5('0x4e'))){_0x24e8ca[_0x9af5('0x32')]=qs[_0x9af5('0x32')](_0x1a5623[_0x9af5('0x48')][_0x9af5('0x32')]);_0x24e8ca[_0x9af5('0x30')]=qs['offset'](_0x1a5623[_0x9af5('0x48')][_0x9af5('0x30')]);}return _0x2d427a[_0x9af5('0x81')](_0x24e8ca);}})[_0x9af5('0x22')](function(_0x4e7d60){if(_0x4e7d60){return _0x4e7d60?{'count':_0x252f6f,'rows':_0x4e7d60}:null;}})[_0x9af5('0x22')](respondWithResult(_0x53d6a2,null))[_0x9af5('0x2c')](handleError(_0x53d6a2,null));};exports[_0x9af5('0x82')]=function(_0x16d051,_0x32f323,_0x3fa5ba){var _0x4bce3e={'channel':_0x9af5('0x83')};var _0x1dcd20=[];var _0x5b7789=[];var _0x5df018={};return db[_0x9af5('0x42')][_0x9af5('0x65')]({'where':{'id':_0x16d051[_0x9af5('0x66')]['id']},'include':[{'model':db['WhatsappApplication'],'as':_0x9af5('0x84')}]})[_0x9af5('0x22')](handleEntityNotFound(_0x32f323,null))[_0x9af5('0x22')](function(_0x26835e){_0x4bce3e[_0x9af5('0x85')]=_0x26835e;_0x4bce3e['applications']=_[_0x9af5('0x86')](_0x26835e['Applications'],['priority'],[_0x9af5('0x87')]);if(_0x4bce3e[_0x9af5('0x85')][_0x9af5('0x84')]){delete _0x4bce3e[_0x9af5('0x85')]['Applications'];}return db['CmContact'][_0x9af5('0x88')]();})['then'](function(_0x208e7b){if(!_0x208e7b){throw new db[(_0x9af5('0x89'))][(_0x9af5('0x8a'))](_0x9af5('0x8b'));}_0x1dcd20=_[_0x9af5('0x8c')](_[_0x9af5('0x47')](_0x208e7b),[_0x9af5('0x8d'),_0x9af5('0x8e')]);_0x5b7789=_[_0x9af5('0x8c')](_[_0x9af5('0x47')](_0x208e7b),[_0x9af5('0x8d'),_0x9af5('0x8e'),'CompanyId',_0x9af5('0x8f')]);_0x4bce3e['body']={'mapKey':_0x9af5('0x90')};if(_0x4bce3e[_0x9af5('0x85')][_0x9af5('0x54')]&&_0x4bce3e['account'][_0x9af5('0x54')]===_0x9af5('0x91')){_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x92')]=_0x16d051[_0x9af5('0x5e')][_0x9af5('0x93')][_0x9af5('0x94')](_0x9af5('0x95'),'');_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x5e')]=_0x16d051['body'][_0x9af5('0x96')];_0x4bce3e['body'][_0x9af5('0x97')]=_0x16d051['body'][_0x9af5('0x98')];}if(_0x4bce3e[_0x9af5('0x5e')]['id']){delete _0x4bce3e['body']['id'];}if(_['isNil'](_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x92')])){throw new db[(_0x9af5('0x89'))][(_0x9af5('0x8a'))](_0x9af5('0x99'));}if(_[_0x9af5('0x9a')](_0x4bce3e['body'][_0x9af5('0x5e')])||_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x5e')]===''){throw new db['Sequelize'][(_0x9af5('0x8a'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x9b')])){throw new db['Sequelize']['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5b7789);}if(!_[_0x9af5('0x9c')](_0x5b7789,_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x9b')])){throw new db[(_0x9af5('0x89'))][(_0x9af5('0x8a'))](_0x9af5('0x9d')+_0x5b7789);}_0x5df018[_0x4bce3e[_0x9af5('0x5e')]['mapKey']]=_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x92')];return db['CmList']['find']({'where':{'id':_0x4bce3e[_0x9af5('0x85')]['ListId']},'include':[{'model':db['CmContact'],'as':_0x9af5('0x9e'),'where':_0x5df018,'limit':0x1,'order':[[_0x9af5('0x8e'),_0x9af5('0x9f')]]}]});})[_0x9af5('0x22')](handleEntityNotFound(_0x32f323,null))['then'](function(_0x5293ff){if(_0x5293ff){_0x4bce3e['list']=_[_0x9af5('0xa0')](_0x5293ff,[_0x9af5('0x9e')]);if(_0x5293ff['Contacts']['length']){return _0x5293ff[_0x9af5('0x9e')][0x0];}var _0x3ed850=_[_0x9af5('0x1b')](_0x4bce3e[_0x9af5('0x5e')],{'firstName':_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x92')],'ListId':_0x5293ff['id']});_0x3ed850[_0x4bce3e['body']['mapKey']]=_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x92')];return db['CmContact'][_0x9af5('0x5d')](_0x3ed850,{'fields':_0x1dcd20,'raw':!![]});}})[_0x9af5('0x22')](handleEntityNotFound(_0x32f323,null))['then'](function(_0xe8707d){if(_0xe8707d){_0x4bce3e[_0x9af5('0xa1')]=_0xe8707d;var _0x3e79af={'ContactId':_0xe8707d['id'],'phone':_0x4bce3e['body']['from'],'WhatsappAccountId':_0x16d051['params']['id']};var _0x112e40={'ContactId':_0xe8707d['id'],'WhatsappAccountId':_0x16d051[_0x9af5('0x66')]['id'],'closed':![]};return db['WhatsappInteraction']['find']({'where':_0x112e40})[_0x9af5('0x22')](function(_0x50e0c9){if(_0x50e0c9){return[_0x50e0c9,![]];}return db[_0x9af5('0xa2')][_0x9af5('0x5d')](_0x3e79af)['then'](function(_0x28344d){return[_0x28344d,!![]];});});}})[_0x9af5('0xa3')](function(_0x3650ab,_0x4cd789){_0x4bce3e[_0x9af5('0xa4')]=_0x3650ab[_0x9af5('0x60')]({'plain':!![]});_0x4bce3e[_0x9af5('0xa4')][_0x9af5('0xa5')]=![];if(_0x4cd789){if(_0x4bce3e[_0x9af5('0x85')]['autoclose']){_0x4bce3e[_0x9af5('0xa6')][_0x9af5('0xa7')]({'id':0x0,'priority':_0x4bce3e[_0x9af5('0xa6')][_0x9af5('0x4d')]+0x1,'app':_0x9af5('0xa8'),'appdata':_0x9af5('0xa9'),'interval':_0x9af5('0xaa')});}_0x4bce3e['interaction'][_0x9af5('0xa5')]=!![];}return db[_0x9af5('0xab')][_0x9af5('0x5d')]({'phone':_0x4bce3e['body'][_0x9af5('0x92')],'messageId':_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x97')],'body':_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x5e')],'WhatsappAccountId':_0x16d051[_0x9af5('0x66')]['id'],'WhatsappInteractionId':_0x3650ab['id'],'direction':'in','ContactId':_0x3650ab[_0x9af5('0xac')],'AttachmentId':_0x4bce3e['body']['AttachmentId']});})['then'](function(_0x33584a){_0x4bce3e[_0x9af5('0x29')]=_0x33584a;if(_0x4bce3e[_0x9af5('0xa4')][_0x9af5('0xad')]){return db[_0x9af5('0x7a')][_0x9af5('0x65')]({'attributes':['id',_0x9af5('0x3e')],'where':{'id':_0x4bce3e['interaction'][_0x9af5('0xad')]}})['then'](function(_0x2869fb){if(_0x2869fb){_0x4bce3e[_0x9af5('0xa6')][_0x9af5('0xae')]({'id':0x0,'priority':0x0,'app':_0x9af5('0xaf'),'appdata':_0x2869fb[_0x9af5('0x3e')]+','+(_0x4bce3e[_0x9af5('0x85')][_0x9af5('0xb0')]||0xa),'interval':_0x9af5('0xaa')});}return respondWithRpcPromise(_0x9af5('0xb1'),_0x9af5('0xb2'),_0x4bce3e);});}return respondWithRpcPromise('Start',_0x9af5('0xb2'),_0x4bce3e);})[_0x9af5('0x22')](function(_0x4db01c){if(_0x4db01c){var _0x59deb4=0xc8;var _0x339004=_0x9af5('0xb3');logger['info']('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x339004,_0x59deb4,_0x9af5('0xb4'));logger[_0x9af5('0x25')](_0x9af5('0xb5'),_0x339004,_0x59deb4,_0x9af5('0xb4'),JSON[_0x9af5('0x27')](_0x4db01c));if(_0x4bce3e['account'][_0x9af5('0x54')]===_0x9af5('0x91')){return _0x32f323['status'](_0x59deb4)[_0x9af5('0x34')](_0x9af5('0xb6'),_0x9af5('0xb7'))[_0x9af5('0x3f')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x32f323['status'](_0x59deb4)['json'](_0x4db01c);}}})[_0x9af5('0x2c')](handleError(_0x32f323,null));};exports[_0x9af5('0x3f')]=function(_0x2387f3,_0x2c6d05,_0x1021a4){var _0x523801,_0xa868ce,_0x392f30;if(_[_0x9af5('0x9a')](_0x2387f3['body'][_0x9af5('0x5e')])||_0x2387f3[_0x9af5('0x5e')][_0x9af5('0x5e')]===''){throw new db['Sequelize'][(_0x9af5('0x8a'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x9af5('0x9a')](_0x2387f3[_0x9af5('0x5e')]['to'])){throw new db[(_0x9af5('0x89'))][(_0x9af5('0x8a'))](_0x9af5('0xb8'));}_0x523801=_0x2387f3['body']['to'];return db[_0x9af5('0x42')][_0x9af5('0x65')]({'where':{'id':_0x2387f3[_0x9af5('0x66')]['id']},'include':[{'model':db[_0x9af5('0xb9')],'as':_0x9af5('0xba'),'include':[{'model':db[_0x9af5('0xbb')],'as':'Contacts','where':{'mobile':_0x523801},'limit':0x1,'order':[[_0x9af5('0x8e'),_0x9af5('0x9f')]]}]}]})[_0x9af5('0x22')](handleEntityNotFound(_0x2c6d05,null))['then'](function(_0x169ada){if(_0x169ada&&_0x169ada['List']){_0xa868ce=_0x169ada[_0x9af5('0x60')]({'plain':!![]});if(_0xa868ce['List']&&_0xa868ce[_0x9af5('0xba')][_0x9af5('0x9e')]['length']){return _0xa868ce[_0x9af5('0xba')]['Contacts'][0x0];}return db[_0x9af5('0xbb')][_0x9af5('0x5d')](_['defaults'](_0x2387f3[_0x9af5('0x5e')],{'firstName':_0x523801,'mobile':_0x523801,'phone':_0x523801,'ListId':_0xa868ce[_0x9af5('0x8f')]}));}})['then'](handleEntityNotFound(_0x2c6d05,null))[_0x9af5('0x22')](function(_0x5ca320){if(_0x5ca320){_0x392f30=_0x5ca320;return db['WhatsappInteraction']['find']({'where':{'ContactId':_0x392f30['id'],'closed':![],'WhatsappAccountId':_0xa868ce['id']}})['then'](function(_0x356c8c){if(_0x356c8c){return[_0x356c8c,![]];}return db['WhatsappInteraction']['create']({'UserId':_0x2387f3[_0x9af5('0x5f')]['id'],'ContactId':_0x392f30['id'],'WhatsappAccountId':_0xa868ce['id'],'phone':_0x523801,'firstMsgDirection':_0x9af5('0xbc'),'Messages':[_['merge'](_0x2387f3[_0x9af5('0x5e')],{'read':![],'body':_0x2387f3['body']['body'],'phone':_0x523801,'WhatsappAccountId':_0xa868ce['id'],'UserId':_0x2387f3[_0x9af5('0x5f')]['id'],'ContactId':_0x392f30['id']})]},{'include':[{'model':db[_0x9af5('0xab')],'as':_0x9af5('0xbd')}]})[_0x9af5('0x22')](function(_0x2fd54f){return[_0x2fd54f,!![]];});});}})[_0x9af5('0xa3')](function(_0x3f65a2,_0x122425){if(_0x122425){return _0x3f65a2;}return db[_0x9af5('0xab')][_0x9af5('0x5d')](_['merge'](_0x2387f3[_0x9af5('0x5e')],{'read':![],'body':_0x2387f3['body'][_0x9af5('0x5e')],'phone':_0x523801,'WhatsappAccountId':_0xa868ce['id'],'WhatsappInteractionId':_0x3f65a2['id'],'UserId':_0x2387f3[_0x9af5('0x5f')]['id'],'ContactId':_0x392f30['id']}))[_0x9af5('0x22')](function(_0x31d806){_0x3f65a2['dataValues']['Messages']=[];_0x3f65a2[_0x9af5('0xbe')]['Messages']['push'](_0x31d806[_0x9af5('0xbe')]);return _0x3f65a2;});})[_0x9af5('0x22')](respondWithResult(_0x2c6d05,null))[_0x9af5('0x2c')](handleError(_0x2c6d05,null));};
\ No newline at end of file
index 68fdd19..867cbff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89d9=['events','../../mysqldb','WhatsappAccount','setMaxListeners','save','update','remove','emit','hook','exports'];(function(_0x52b8ab,_0x360244){var _0x4a50fa=function(_0x2ef23a){while(--_0x2ef23a){_0x52b8ab['push'](_0x52b8ab['shift']());}};_0x4a50fa(++_0x360244);}(_0x89d9,0x154));var _0x989d=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x89d9[_0x17d9e3];return _0x14192d;};'use strict';var EventEmitter=require(_0x989d('0x0'));var WhatsappAccount=require(_0x989d('0x1'))['db'][_0x989d('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x989d('0x3')](0x0);var events={'afterCreate':_0x989d('0x4'),'afterUpdate':_0x989d('0x5'),'afterDestroy':_0x989d('0x6')};function emitEvent(_0x32d097){return function(_0x1da94e,_0xed4dd1,_0x3af036){WhatsappAccountEvents[_0x989d('0x7')](_0x32d097+':'+_0x1da94e['id'],_0x1da94e);WhatsappAccountEvents['emit'](_0x32d097,_0x1da94e);_0x3af036(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount[_0x989d('0x8')](e,emitEvent(event));}}module[_0x989d('0x9')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0x8a45=['exports','events','../../mysqldb','WhatsappAccount','setMaxListeners','save','update','remove'];(function(_0x5283ed,_0x4271a9){var _0x3c68c7=function(_0xe02c50){while(--_0xe02c50){_0x5283ed['push'](_0x5283ed['shift']());}};_0x3c68c7(++_0x4271a9);}(_0x8a45,0xc9));var _0x58a4=function(_0x1360c0,_0x50da6d){_0x1360c0=_0x1360c0-0x0;var _0x2777af=_0x8a45[_0x1360c0];return _0x2777af;};'use strict';var EventEmitter=require(_0x58a4('0x0'));var WhatsappAccount=require(_0x58a4('0x1'))['db'][_0x58a4('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x58a4('0x3')](0x0);var events={'afterCreate':_0x58a4('0x4'),'afterUpdate':_0x58a4('0x5'),'afterDestroy':_0x58a4('0x6')};function emitEvent(_0x11d908){return function(_0x13f29c,_0x5d9fff,_0x5b7b03){WhatsappAccountEvents['emit'](_0x11d908+':'+_0x13f29c['id'],_0x13f29c);WhatsappAccountEvents['emit'](_0x11d908,_0x13f29c);_0x5b7b03(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module[_0x58a4('0x7')]=WhatsappAccountEvents;
\ No newline at end of file
index 3d56c5a..5ab4f0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90a9=['whatsapp_accounts','lodash','util','api','bluebird','request-promise','rimraf','../../config/environment','./whatsappAccount.attributes','exports','define','WhatsappAccount'];(function(_0x298ed3,_0x4ab5e1){var _0x5aad28=function(_0x168687){while(--_0x168687){_0x298ed3['push'](_0x298ed3['shift']());}};_0x5aad28(++_0x4ab5e1);}(_0x90a9,0x18d));var _0x990a=function(_0x4f4854,_0x25ee11){_0x4f4854=_0x4f4854-0x0;var _0x1b8ceb=_0x90a9[_0x4f4854];return _0x1b8ceb;};'use strict';var _=require(_0x990a('0x0'));var util=require(_0x990a('0x1'));var logger=require('../../config/logger')(_0x990a('0x2'));var moment=require('moment');var BPromise=require(_0x990a('0x3'));var rp=require(_0x990a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x990a('0x5'));var config=require(_0x990a('0x6'));var attributes=require(_0x990a('0x7'));module[_0x990a('0x8')]=function(_0x41c208,_0x1d9b1f){return _0x41c208[_0x990a('0x9')](_0x990a('0xa'),attributes,{'tableName':_0x990a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb990=['bluebird','request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','define','whatsapp_accounts','lodash','../../config/logger'];(function(_0xb3b452,_0x582e8e){var _0x238983=function(_0x3bc866){while(--_0x3bc866){_0xb3b452['push'](_0xb3b452['shift']());}};_0x238983(++_0x582e8e);}(_0xb990,0x174));var _0x0b99=function(_0x542e8a,_0x47ccf7){_0x542e8a=_0x542e8a-0x0;var _0xc40770=_0xb990[_0x542e8a];return _0xc40770;};'use strict';var _=require(_0x0b99('0x0'));var util=require('util');var logger=require(_0x0b99('0x1'))('api');var moment=require('moment');var BPromise=require(_0x0b99('0x2'));var rp=require(_0x0b99('0x3'));var fs=require('fs');var path=require(_0x0b99('0x4'));var rimraf=require(_0x0b99('0x5'));var config=require(_0x0b99('0x6'));var attributes=require(_0x0b99('0x7'));module[_0x0b99('0x8')]=function(_0x4d788d,_0x444c5c){return _0x4d788d[_0x0b99('0x9')]('WhatsappAccount',attributes,{'tableName':_0x0b99('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 32f2cad..8b15a53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69e7=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','./whatsappAccount.socket','register','request','then','info','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','WhatsappAccount,\x20%s,\x20%s','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','map','include','model','attributes','lodash','util'];(function(_0x25bea7,_0x49ab45){var _0x175952=function(_0x56a0b5){while(--_0x56a0b5){_0x25bea7['push'](_0x25bea7['shift']());}};_0x175952(++_0x49ab45);}(_0x69e7,0x70));var _0x769e=function(_0x59dc02,_0x120477){_0x59dc02=_0x59dc02-0x0;var _0x556178=_0x69e7[_0x59dc02];return _0x556178;};'use strict';var _=require(_0x769e('0x0'));var util=require(_0x769e('0x1'));var moment=require(_0x769e('0x2'));var BPromise=require(_0x769e('0x3'));var rs=require(_0x769e('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x769e('0x5'))['db'];var utils=require(_0x769e('0x6'));var logger=require(_0x769e('0x7'))(_0x769e('0x8'));var config=require(_0x769e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x769e('0xa')][_0x769e('0xb')]({'port':0x232a});config[_0x769e('0xc')]=_[_0x769e('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x769e('0xe'))(new Redis(config['redis']));require(_0x769e('0xf'))[_0x769e('0x10')](socket);function respondWithRpcPromise(_0x26b5bd,_0x569406,_0x1d457c){return new BPromise(function(_0x1fc42d,_0x55f457){return client[_0x769e('0x11')](_0x26b5bd,_0x1d457c)[_0x769e('0x12')](function(_0x3600cd){logger[_0x769e('0x13')]('WhatsappAccount,\x20%s,\x20%s',_0x569406,_0x769e('0x14'));logger[_0x769e('0x15')](_0x769e('0x16'),_0x569406,_0x769e('0x14'),JSON[_0x769e('0x17')](_0x3600cd));if(_0x3600cd['error']){if(_0x3600cd['error']['code']===0x1f4){logger[_0x769e('0x18')](_0x769e('0x19'),_0x569406,_0x3600cd['error'][_0x769e('0x1a')]);return _0x55f457(_0x3600cd[_0x769e('0x18')]['message']);}logger[_0x769e('0x18')](_0x769e('0x19'),_0x569406,_0x3600cd[_0x769e('0x18')][_0x769e('0x1a')]);return _0x1fc42d(_0x3600cd[_0x769e('0x18')][_0x769e('0x1a')]);}else{logger[_0x769e('0x13')](_0x769e('0x19'),_0x569406,_0x769e('0x14'));_0x1fc42d(_0x3600cd[_0x769e('0x1b')][_0x769e('0x1a')]);}})[_0x769e('0x1c')](function(_0x18e21a){logger['error'](_0x769e('0x19'),_0x569406,_0x18e21a);_0x55f457(_0x18e21a);});});}exports[_0x769e('0x1d')]=function(_0x3c7cf4){var _0x19e16f=this;return new Promise(function(_0x287098,_0x18d60e){return db[_0x769e('0x1e')][_0x769e('0x1f')]({'raw':_0x3c7cf4[_0x769e('0x20')]?_0x3c7cf4[_0x769e('0x20')][_0x769e('0x21')]===undefined?!![]:![]:!![],'where':_0x3c7cf4[_0x769e('0x20')]?_0x3c7cf4[_0x769e('0x20')]['where']||null:null,'attributes':_0x3c7cf4[_0x769e('0x20')]?_0x3c7cf4['options']['attributes']||null:null,'include':_0x3c7cf4['options']?_0x3c7cf4['options']['include']?_[_0x769e('0x22')](_0x3c7cf4['options'][_0x769e('0x23')],function(_0x438c51){return{'model':db[_0x438c51[_0x769e('0x24')]],'as':_0x438c51['as'],'attributes':_0x438c51['attributes'],'include':_0x438c51['include']?_[_0x769e('0x22')](_0x438c51[_0x769e('0x23')],function(_0x3e68bd){return{'model':db[_0x3e68bd[_0x769e('0x24')]],'as':_0x3e68bd['as'],'attributes':_0x3e68bd['attributes'],'include':_0x3e68bd[_0x769e('0x23')]?_[_0x769e('0x22')](_0x3e68bd[_0x769e('0x23')],function(_0x2367f6){return{'model':db[_0x2367f6[_0x769e('0x24')]],'as':_0x2367f6['as'],'attributes':_0x2367f6[_0x769e('0x25')]};}):[]};}):[]};}):[]:[]})[_0x769e('0x12')](function(_0x2567b7){logger[_0x769e('0x13')](_0x769e('0x1d'),_0x3c7cf4);logger[_0x769e('0x15')](_0x769e('0x1d'),_0x3c7cf4,JSON[_0x769e('0x17')](_0x2567b7));_0x287098(_0x2567b7);})['catch'](function(_0x4bc861){logger[_0x769e('0x18')](_0x769e('0x1d'),_0x4bc861[_0x769e('0x1a')],_0x3c7cf4);_0x18d60e(_0x19e16f[_0x769e('0x18')](0x1f4,_0x4bc861[_0x769e('0x1a')]));});});};
\ No newline at end of file
+var _0x2be1=['defaults','localhost','socket.io-emitter','register','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','where','attributes','map','include','model','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x2be1,0xd3));var _0x12be=function(_0x27d8bc,_0x19e010){_0x27d8bc=_0x27d8bc-0x0;var _0x4b04cb=_0x2be1[_0x27d8bc];return _0x4b04cb;};'use strict';var _=require(_0x12be('0x0'));var util=require(_0x12be('0x1'));var moment=require(_0x12be('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x12be('0x3'));var db=require(_0x12be('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x12be('0x5'))(_0x12be('0x6'));var config=require(_0x12be('0x7'));var jayson=require(_0x12be('0x8'));var client=jayson[_0x12be('0x9')]['http']({'port':0x232a});config[_0x12be('0xa')]=_[_0x12be('0xb')](config[_0x12be('0xa')],{'host':_0x12be('0xc'),'port':0x18eb});var socket=require(_0x12be('0xd'))(new Redis(config[_0x12be('0xa')]));require('./whatsappAccount.socket')[_0x12be('0xe')](socket);function respondWithRpcPromise(_0x38e289,_0x3f1193,_0x3749c5){return new BPromise(function(_0x4e4efe,_0x55ae08){return client[_0x12be('0xf')](_0x38e289,_0x3749c5)[_0x12be('0x10')](function(_0x5a88f7){logger[_0x12be('0x11')](_0x12be('0x12'),_0x3f1193,_0x12be('0x13'));logger[_0x12be('0x14')](_0x12be('0x15'),_0x3f1193,_0x12be('0x13'),JSON[_0x12be('0x16')](_0x5a88f7));if(_0x5a88f7[_0x12be('0x17')]){if(_0x5a88f7[_0x12be('0x17')][_0x12be('0x18')]===0x1f4){logger[_0x12be('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x3f1193,_0x5a88f7[_0x12be('0x17')][_0x12be('0x19')]);return _0x55ae08(_0x5a88f7['error'][_0x12be('0x19')]);}logger[_0x12be('0x17')](_0x12be('0x12'),_0x3f1193,_0x5a88f7['error'][_0x12be('0x19')]);return _0x4e4efe(_0x5a88f7[_0x12be('0x17')]['message']);}else{logger[_0x12be('0x11')](_0x12be('0x12'),_0x3f1193,_0x12be('0x13'));_0x4e4efe(_0x5a88f7[_0x12be('0x1a')][_0x12be('0x19')]);}})[_0x12be('0x1b')](function(_0x2f4646){logger[_0x12be('0x17')](_0x12be('0x12'),_0x3f1193,_0x2f4646);_0x55ae08(_0x2f4646);});});}exports[_0x12be('0x1c')]=function(_0x37ede2){var _0x4f5002=this;return new Promise(function(_0xf0e5ba,_0x18d6ea){return db[_0x12be('0x1d')][_0x12be('0x1e')]({'raw':_0x37ede2[_0x12be('0x1f')]?_0x37ede2['options']['raw']===undefined?!![]:![]:!![],'where':_0x37ede2[_0x12be('0x1f')]?_0x37ede2[_0x12be('0x1f')][_0x12be('0x20')]||null:null,'attributes':_0x37ede2[_0x12be('0x1f')]?_0x37ede2[_0x12be('0x1f')][_0x12be('0x21')]||null:null,'include':_0x37ede2[_0x12be('0x1f')]?_0x37ede2[_0x12be('0x1f')]['include']?_[_0x12be('0x22')](_0x37ede2[_0x12be('0x1f')][_0x12be('0x23')],function(_0x34f7da){return{'model':db[_0x34f7da[_0x12be('0x24')]],'as':_0x34f7da['as'],'attributes':_0x34f7da[_0x12be('0x21')],'include':_0x34f7da[_0x12be('0x23')]?_[_0x12be('0x22')](_0x34f7da[_0x12be('0x23')],function(_0x444540){return{'model':db[_0x444540[_0x12be('0x24')]],'as':_0x444540['as'],'attributes':_0x444540[_0x12be('0x21')],'include':_0x444540[_0x12be('0x23')]?_[_0x12be('0x22')](_0x444540[_0x12be('0x23')],function(_0x4eda2a){return{'model':db[_0x4eda2a['model']],'as':_0x4eda2a['as'],'attributes':_0x4eda2a[_0x12be('0x21')]};}):[]};}):[]};}):[]:[]})[_0x12be('0x10')](function(_0x585b0a){logger[_0x12be('0x11')]('ShowWhatsappAccount',_0x37ede2);logger[_0x12be('0x14')](_0x12be('0x1c'),_0x37ede2,JSON[_0x12be('0x16')](_0x585b0a));_0xf0e5ba(_0x585b0a);})['catch'](function(_0x524328){logger[_0x12be('0x17')]('ShowWhatsappAccount',_0x524328['message'],_0x37ede2);_0x18d6ea(_0x4f5002['error'](0x1f4,_0x524328[_0x12be('0x19')]));});});};
\ No newline at end of file
index 363dce7..63a4140 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3635=['removeListener','length','whatsappAccount:','./whatsappAccount.events','save','remove','update','emit'];(function(_0x5c88c8,_0x2c04cf){var _0x7b15d5=function(_0x3435dd){while(--_0x3435dd){_0x5c88c8['push'](_0x5c88c8['shift']());}};_0x7b15d5(++_0x2c04cf);}(_0x3635,0x133));var _0x5363=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x3635[_0x273c39];return _0x46d6b5;};'use strict';var WhatsappAccountEvents=require(_0x5363('0x0'));var events=[_0x5363('0x1'),_0x5363('0x2'),_0x5363('0x3')];function createListener(_0x31445f,_0x33ed71){return function(_0x699dfe){_0x33ed71[_0x5363('0x4')](_0x31445f,_0x699dfe);};}function removeListener(_0x168c3f,_0x2354c0){return function(){WhatsappAccountEvents[_0x5363('0x5')](_0x168c3f,_0x2354c0);};}exports['register']=function(_0x2ac261){for(var _0x262604=0x0,_0x4d1ac5=events[_0x5363('0x6')];_0x262604<_0x4d1ac5;_0x262604++){var _0x48181c=events[_0x262604];var _0x301bf4=createListener(_0x5363('0x7')+_0x48181c,_0x2ac261);WhatsappAccountEvents['on'](_0x48181c,_0x301bf4);}};
\ No newline at end of file
+var _0xf38f=['register','length','whatsappAccount:','./whatsappAccount.events','save','update'];(function(_0x503eae,_0x616c31){var _0x48f80a=function(_0x1f278e){while(--_0x1f278e){_0x503eae['push'](_0x503eae['shift']());}};_0x48f80a(++_0x616c31);}(_0xf38f,0x75));var _0xff38=function(_0x4dc35f,_0x377c51){_0x4dc35f=_0x4dc35f-0x0;var _0x1f8820=_0xf38f[_0x4dc35f];return _0x1f8820;};'use strict';var WhatsappAccountEvents=require(_0xff38('0x0'));var events=[_0xff38('0x1'),'remove',_0xff38('0x2')];function createListener(_0x366658,_0x7fba38){return function(_0x44d412){_0x7fba38['emit'](_0x366658,_0x44d412);};}function removeListener(_0x5cfe25,_0x388775){return function(){WhatsappAccountEvents['removeListener'](_0x5cfe25,_0x388775);};}exports[_0xff38('0x3')]=function(_0xbb6e6d){for(var _0x37bf70=0x0,_0x343215=events[_0xff38('0x4')];_0x37bf70<_0x343215;_0x37bf70++){var _0x4e2733=events[_0x37bf70];var _0x344e83=createListener(_0xff38('0x5')+_0x4e2733,_0xbb6e6d);WhatsappAccountEvents['on'](_0x4e2733,_0x344e83);}};
\ No newline at end of file
index ec61bfe..518cd13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cd2=['update','destroy','exports','multer','util','path','Router','../../components/interaction/service','./whatsappApplication.controller','isAuthenticated','index','/:id','show','post','put'];(function(_0x5ee287,_0x49b6a1){var _0x2a1adf=function(_0x4df52e){while(--_0x4df52e){_0x5ee287['push'](_0x5ee287['shift']());}};_0x2a1adf(++_0x49b6a1);}(_0x2cd2,0x99));var _0x22cd=function(_0x27132e,_0x6dfb72){_0x27132e=_0x27132e-0x0;var _0x363cff=_0x2cd2[_0x27132e];return _0x363cff;};'use strict';var multer=require(_0x22cd('0x0'));var util=require(_0x22cd('0x1'));var path=require(_0x22cd('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x22cd('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x22cd('0x4'));var config=require('../../config/environment');var controller=require(_0x22cd('0x5'));router['get']('/',auth[_0x22cd('0x6')](),controller[_0x22cd('0x7')]);router['get'](_0x22cd('0x8'),auth['isAuthenticated'](),controller[_0x22cd('0x9')]);router[_0x22cd('0xa')]('/',auth[_0x22cd('0x6')](),controller['create']);router[_0x22cd('0xb')](_0x22cd('0x8'),auth[_0x22cd('0x6')](),controller[_0x22cd('0xc')]);router['delete']('/:id',auth[_0x22cd('0x6')](),controller[_0x22cd('0xd')]);module[_0x22cd('0xe')]=router;
\ No newline at end of file
+var _0x5dd7=['multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','put','update','exports'];(function(_0x2af2f9,_0x5bd215){var _0x527f4a=function(_0x2253f1){while(--_0x2253f1){_0x2af2f9['push'](_0x2af2f9['shift']());}};_0x527f4a(++_0x5bd215);}(_0x5dd7,0x13b));var _0x75dd=function(_0x4141df,_0x5df83f){_0x4141df=_0x4141df-0x0;var _0xe16a8b=_0x5dd7[_0x4141df];return _0xe16a8b;};'use strict';var multer=require(_0x75dd('0x0'));var util=require(_0x75dd('0x1'));var path=require('path');var timeout=require(_0x75dd('0x2'));var express=require(_0x75dd('0x3'));var router=express[_0x75dd('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x75dd('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x75dd('0x6'));var controller=require('./whatsappApplication.controller');router[_0x75dd('0x7')]('/',auth[_0x75dd('0x8')](),controller[_0x75dd('0x9')]);router['get'](_0x75dd('0xa'),auth['isAuthenticated'](),controller[_0x75dd('0xb')]);router['post']('/',auth[_0x75dd('0x8')](),controller['create']);router[_0x75dd('0xc')](_0x75dd('0xa'),auth[_0x75dd('0x8')](),controller[_0x75dd('0xd')]);router['delete'](_0x75dd('0xa'),auth[_0x75dd('0x8')](),controller['destroy']);module[_0x75dd('0xe')]=router;
\ No newline at end of file
index 146336e..1f6265e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf530=['noop','TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x1ebeea,_0x2f54f4){var _0x576465=function(_0x47fc77){while(--_0x47fc77){_0x1ebeea['push'](_0x1ebeea['shift']());}};_0x576465(++_0x2f54f4);}(_0xf530,0xff));var _0x0f53=function(_0x4366ac,_0x1b8fe6){_0x4366ac=_0x4366ac-0x0;var _0x2353a6=_0xf530[_0x4366ac];return _0x2353a6;};'use strict';var Sequelize=require(_0x0f53('0x0'));module[_0x0f53('0x1')]={'priority':{'type':Sequelize[_0x0f53('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x0f53('0x3')],'allowNull':![],'defaultValue':_0x0f53('0x4')},'appdata':{'type':Sequelize[_0x0f53('0x5')]()},'description':{'type':Sequelize[_0x0f53('0x3')]},'interval':{'type':Sequelize[_0x0f53('0x3')],'defaultValue':_0x0f53('0x6')}};
\ No newline at end of file
+var _0x1692=['noop','TEXT','*,*,*,*','sequelize','INTEGER','STRING'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0x1692,0xf3));var _0x2169=function(_0xce6e21,_0x161dc8){_0xce6e21=_0xce6e21-0x0;var _0x549a80=_0x1692[_0xce6e21];return _0x549a80;};'use strict';var Sequelize=require(_0x2169('0x0'));module['exports']={'priority':{'type':Sequelize[_0x2169('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x2169('0x2')],'allowNull':![],'defaultValue':_0x2169('0x3')},'appdata':{'type':Sequelize[_0x2169('0x4')]()},'description':{'type':Sequelize[_0x2169('0x2')]},'interval':{'type':Sequelize[_0x2169('0x2')],'defaultValue':_0x2169('0x5')}};
\ No newline at end of file
index c79ff57..9794ced 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7da=['update','body','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../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','save','then','destroy','error','stack','send','index','rawAttributes','fieldName','type','key','name','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','VIRTUAL','filter','WhatsappApplication','includeAll','include','findAll','rows','show','params','options','find','catch','create'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0xc7da,0xf2));var _0xac7d=function(_0x27575b,_0x20c815){_0x27575b=_0x27575b-0x0;var _0x19ee8c=_0xc7da[_0x27575b];return _0x19ee8c;};'use strict';var emlformat=require(_0xac7d('0x0'));var rimraf=require(_0xac7d('0x1'));var zipdir=require(_0xac7d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xac7d('0x3'));var moment=require(_0xac7d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xac7d('0x5'));var util=require(_0xac7d('0x6'));var path=require('path');var sox=require(_0xac7d('0x7'));var csv=require(_0xac7d('0x8'));var ejs=require(_0xac7d('0x9'));var fs=require('fs');var fs_extra=require(_0xac7d('0xa'));var _=require(_0xac7d('0xb'));var squel=require(_0xac7d('0xc'));var crypto=require('crypto');var jsforce=require(_0xac7d('0xd'));var deskjs=require(_0xac7d('0xe'));var toCsv=require(_0xac7d('0x8'));var querystring=require(_0xac7d('0xf'));var Papa=require(_0xac7d('0x10'));var Redis=require(_0xac7d('0x11'));var authService=require(_0xac7d('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xac7d('0x13'));var hardwareService=require(_0xac7d('0x14'));var logger=require(_0xac7d('0x15'))('api');var utils=require(_0xac7d('0x16'));var config=require(_0xac7d('0x17'));var licenseUtil=require(_0xac7d('0x18'));var db=require(_0xac7d('0x19'))['db'];function respondWithStatusCode(_0x5a44f6,_0xe5de7e){_0xe5de7e=_0xe5de7e||0xcc;return function(_0x2b70a4){if(_0x2b70a4){return _0x5a44f6[_0xac7d('0x1a')](_0xe5de7e);}return _0x5a44f6[_0xac7d('0x1b')](_0xe5de7e)[_0xac7d('0x1c')]();};}function respondWithResult(_0x5678d7,_0x39ba25){_0x39ba25=_0x39ba25||0xc8;return function(_0x5b94e9){if(_0x5b94e9){return _0x5678d7[_0xac7d('0x1b')](_0x39ba25)[_0xac7d('0x1d')](_0x5b94e9);}};}function respondWithFilteredResult(_0x34980f,_0x355209){return function(_0x533bac){if(_0x533bac){var _0x19e7ba=typeof _0x355209[_0xac7d('0x1e')]===_0xac7d('0x1f')&&typeof _0x355209[_0xac7d('0x20')]===_0xac7d('0x1f');var _0x48ac86=_0x533bac[_0xac7d('0x21')];var _0x3cb12d=_0x19e7ba?0x0:_0x355209['offset'];var _0x2e4790=_0x19e7ba?_0x533bac[_0xac7d('0x21')]:_0x355209[_0xac7d('0x1e')]+_0x355209[_0xac7d('0x20')];var _0x4a5325;if(_0x2e4790>=_0x48ac86){_0x2e4790=_0x48ac86;_0x4a5325=0xc8;}else{_0x4a5325=0xce;}_0x34980f[_0xac7d('0x1b')](_0x4a5325);return _0x34980f[_0xac7d('0x22')](_0xac7d('0x23'),_0x3cb12d+'-'+_0x2e4790+'/'+_0x48ac86)['json'](_0x533bac);}return null;};}function patchUpdates(_0xd42c40){return function(_0x4f4e4e){try{jsonpatch[_0xac7d('0x24')](_0x4f4e4e,_0xd42c40,!![]);}catch(_0x3eedf8){return BPromise[_0xac7d('0x25')](_0x3eedf8);}return _0x4f4e4e[_0xac7d('0x26')]();};}function saveUpdates(_0x321689,_0x365269){return function(_0x5a006e){if(_0x5a006e){return _0x5a006e['update'](_0x321689)[_0xac7d('0x27')](function(_0x6d2c50){return _0x6d2c50;});}return null;};}function removeEntity(_0x5098bb,_0x4282d7){return function(_0x3966dd){if(_0x3966dd){return _0x3966dd[_0xac7d('0x28')]()[_0xac7d('0x27')](function(){_0x5098bb[_0xac7d('0x1b')](0xcc)[_0xac7d('0x1c')]();});}};}function handleEntityNotFound(_0x200562,_0x3bb7dd){return function(_0x42e313){if(!_0x42e313){_0x200562[_0xac7d('0x1a')](0x194);}return _0x42e313;};}function handleError(_0x594d6e,_0x229ecd){_0x229ecd=_0x229ecd||0x1f4;return function(_0x3216cb){logger[_0xac7d('0x29')](_0x3216cb[_0xac7d('0x2a')]);if(_0x3216cb['name']){delete _0x3216cb['name'];}_0x594d6e['status'](_0x229ecd)[_0xac7d('0x2b')](_0x3216cb);};}exports[_0xac7d('0x2c')]=function(_0xac3f87,_0x5bd39b){var _0x51df23={},_0x506b88={},_0x4e2456={'count':0x0,'rows':[]};var _0x5e5f12=_['map'](db['WhatsappApplication'][_0xac7d('0x2d')],function(_0x1109b1){return{'name':_0x1109b1[_0xac7d('0x2e')],'type':_0x1109b1[_0xac7d('0x2f')][_0xac7d('0x30')]};});_0x506b88['model']=_['map'](_0x5e5f12,_0xac7d('0x31'));_0x506b88[_0xac7d('0x32')]=_[_0xac7d('0x33')](_0xac3f87[_0xac7d('0x32')]);_0x506b88[_0xac7d('0x34')]=_[_0xac7d('0x35')](_0x506b88[_0xac7d('0x36')],_0x506b88[_0xac7d('0x32')]);_0x51df23[_0xac7d('0x37')]=_[_0xac7d('0x35')](_0x506b88[_0xac7d('0x36')],qs[_0xac7d('0x38')](_0xac3f87[_0xac7d('0x32')][_0xac7d('0x38')]));_0x51df23[_0xac7d('0x37')]=_0x51df23[_0xac7d('0x37')]['length']?_0x51df23[_0xac7d('0x37')]:_0x506b88[_0xac7d('0x36')];if(!_0xac3f87[_0xac7d('0x32')][_0xac7d('0x39')](_0xac7d('0x3a'))){_0x51df23['limit']=qs[_0xac7d('0x20')](_0xac3f87['query']['limit']);_0x51df23[_0xac7d('0x1e')]=qs[_0xac7d('0x1e')](_0xac3f87[_0xac7d('0x32')][_0xac7d('0x1e')]);}_0x51df23[_0xac7d('0x3b')]=qs[_0xac7d('0x3c')](_0xac3f87[_0xac7d('0x32')][_0xac7d('0x3c')]);_0x51df23[_0xac7d('0x3d')]=qs[_0xac7d('0x34')](_[_0xac7d('0x3e')](_0xac3f87['query'],_0x506b88['filters']),_0x5e5f12);if(_0xac3f87[_0xac7d('0x32')]['filter']){_0x51df23[_0xac7d('0x3d')]=_[_0xac7d('0x3f')](_0x51df23[_0xac7d('0x3d')],{'$or':_[_0xac7d('0x40')](_0x5e5f12,function(_0x550b7b){if(_0x550b7b['type']!==_0xac7d('0x41')){var _0x38bcfa={};_0x38bcfa[_0x550b7b[_0xac7d('0x31')]]={'$like':'%'+_0xac3f87[_0xac7d('0x32')][_0xac7d('0x42')]+'%'};return _0x38bcfa;}})});}_0x51df23=_['merge']({},_0x51df23,_0xac3f87['options']);var _0x2fa792={'where':_0x51df23['where']};return db[_0xac7d('0x43')][_0xac7d('0x21')](_0x2fa792)[_0xac7d('0x27')](function(_0x4984bd){_0x4e2456[_0xac7d('0x21')]=_0x4984bd;if(_0xac3f87[_0xac7d('0x32')][_0xac7d('0x44')]){_0x51df23[_0xac7d('0x45')]=[{'all':!![]}];}return db[_0xac7d('0x43')][_0xac7d('0x46')](_0x51df23);})['then'](function(_0x4d4e6e){_0x4e2456[_0xac7d('0x47')]=_0x4d4e6e;return _0x4e2456;})[_0xac7d('0x27')](respondWithFilteredResult(_0x5bd39b,_0x51df23))['catch'](handleError(_0x5bd39b,null));};exports[_0xac7d('0x48')]=function(_0x14a658,_0x355647){var _0x5978ea={'raw':!![],'where':{'id':_0x14a658[_0xac7d('0x49')]['id']}},_0x5f3b48={};_0x5f3b48['model']=_[_0xac7d('0x33')](db[_0xac7d('0x43')][_0xac7d('0x2d')]);_0x5f3b48[_0xac7d('0x32')]=_[_0xac7d('0x33')](_0x14a658[_0xac7d('0x32')]);_0x5f3b48[_0xac7d('0x34')]=_[_0xac7d('0x35')](_0x5f3b48[_0xac7d('0x36')],_0x5f3b48[_0xac7d('0x32')]);_0x5978ea['attributes']=_[_0xac7d('0x35')](_0x5f3b48[_0xac7d('0x36')],qs[_0xac7d('0x38')](_0x14a658[_0xac7d('0x32')][_0xac7d('0x38')]));_0x5978ea[_0xac7d('0x37')]=_0x5978ea[_0xac7d('0x37')]['length']?_0x5978ea[_0xac7d('0x37')]:_0x5f3b48[_0xac7d('0x36')];if(_0x14a658['query'][_0xac7d('0x44')]){_0x5978ea[_0xac7d('0x45')]=[{'all':!![]}];}_0x5978ea=_[_0xac7d('0x3f')]({},_0x5978ea,_0x14a658[_0xac7d('0x4a')]);return db[_0xac7d('0x43')][_0xac7d('0x4b')](_0x5978ea)[_0xac7d('0x27')](handleEntityNotFound(_0x355647,null))['then'](respondWithResult(_0x355647,null))[_0xac7d('0x4c')](handleError(_0x355647,null));};exports[_0xac7d('0x4d')]=function(_0x59d07e,_0x2231dd){return db[_0xac7d('0x43')][_0xac7d('0x4d')](_0x59d07e['body'],{})[_0xac7d('0x27')](respondWithResult(_0x2231dd,0xc9))[_0xac7d('0x4c')](handleError(_0x2231dd,null));};exports[_0xac7d('0x4e')]=function(_0x302794,_0x57e0c2){if(_0x302794[_0xac7d('0x4f')]['id']){delete _0x302794[_0xac7d('0x4f')]['id'];}return db[_0xac7d('0x43')][_0xac7d('0x4b')]({'where':{'id':_0x302794[_0xac7d('0x49')]['id']}})['then'](handleEntityNotFound(_0x57e0c2,null))['then'](saveUpdates(_0x302794[_0xac7d('0x4f')],null))[_0xac7d('0x27')](respondWithResult(_0x57e0c2,null))[_0xac7d('0x4c')](handleError(_0x57e0c2,null));};exports['destroy']=function(_0x1c2fc0,_0x55d683){return db[_0xac7d('0x43')][_0xac7d('0x4b')]({'where':{'id':_0x1c2fc0[_0xac7d('0x49')]['id']}})[_0xac7d('0x27')](handleEntityNotFound(_0x55d683,null))[_0xac7d('0x27')](removeEntity(_0x55d683,null))[_0xac7d('0x4c')](handleError(_0x55d683,null));};
\ No newline at end of file
+var _0xa486=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../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','error','stack','name','send','index','map','WhatsappApplication','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','then','show','params','find','catch','create','body','update','destroy','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_0xa486,0x17d));var _0x6a48=function(_0x107bb6,_0x3e0072){_0x107bb6=_0x107bb6-0x0;var _0x45e430=_0xa486[_0x107bb6];return _0x45e430;};'use strict';var emlformat=require(_0x6a48('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6a48('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6a48('0x2'));var moment=require('moment');var BPromise=require(_0x6a48('0x3'));var Mustache=require(_0x6a48('0x4'));var util=require(_0x6a48('0x5'));var path=require(_0x6a48('0x6'));var sox=require(_0x6a48('0x7'));var csv=require(_0x6a48('0x8'));var ejs=require(_0x6a48('0x9'));var fs=require('fs');var fs_extra=require(_0x6a48('0xa'));var _=require(_0x6a48('0xb'));var squel=require(_0x6a48('0xc'));var crypto=require(_0x6a48('0xd'));var jsforce=require(_0x6a48('0xe'));var deskjs=require(_0x6a48('0xf'));var toCsv=require(_0x6a48('0x8'));var querystring=require(_0x6a48('0x10'));var Papa=require(_0x6a48('0x11'));var Redis=require('ioredis');var authService=require(_0x6a48('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x6a48('0x13'));var hardwareService=require(_0x6a48('0x14'));var logger=require(_0x6a48('0x15'))(_0x6a48('0x16'));var utils=require(_0x6a48('0x17'));var config=require(_0x6a48('0x18'));var licenseUtil=require(_0x6a48('0x19'));var db=require(_0x6a48('0x1a'))['db'];function respondWithStatusCode(_0x3f099a,_0x3c5ef9){_0x3c5ef9=_0x3c5ef9||0xcc;return function(_0x1ef5c7){if(_0x1ef5c7){return _0x3f099a[_0x6a48('0x1b')](_0x3c5ef9);}return _0x3f099a[_0x6a48('0x1c')](_0x3c5ef9)[_0x6a48('0x1d')]();};}function respondWithResult(_0x4636e5,_0x9909af){_0x9909af=_0x9909af||0xc8;return function(_0xcbcb4b){if(_0xcbcb4b){return _0x4636e5[_0x6a48('0x1c')](_0x9909af)[_0x6a48('0x1e')](_0xcbcb4b);}};}function respondWithFilteredResult(_0x43f5fa,_0x3315c1){return function(_0x10867e){if(_0x10867e){var _0x231930=typeof _0x3315c1[_0x6a48('0x1f')]===_0x6a48('0x20')&&typeof _0x3315c1[_0x6a48('0x21')]===_0x6a48('0x20');var _0x20cab5=_0x10867e['count'];var _0xab0913=_0x231930?0x0:_0x3315c1[_0x6a48('0x1f')];var _0x152280=_0x231930?_0x10867e[_0x6a48('0x22')]:_0x3315c1['offset']+_0x3315c1[_0x6a48('0x21')];var _0x43a80d;if(_0x152280>=_0x20cab5){_0x152280=_0x20cab5;_0x43a80d=0xc8;}else{_0x43a80d=0xce;}_0x43f5fa[_0x6a48('0x1c')](_0x43a80d);return _0x43f5fa['set'](_0x6a48('0x23'),_0xab0913+'-'+_0x152280+'/'+_0x20cab5)[_0x6a48('0x1e')](_0x10867e);}return null;};}function patchUpdates(_0x426272){return function(_0x56fc96){try{jsonpatch[_0x6a48('0x24')](_0x56fc96,_0x426272,!![]);}catch(_0x24c549){return BPromise[_0x6a48('0x25')](_0x24c549);}return _0x56fc96[_0x6a48('0x26')]();};}function saveUpdates(_0x4ee111,_0x1afaf3){return function(_0x230220){if(_0x230220){return _0x230220['update'](_0x4ee111)['then'](function(_0x11b488){return _0x11b488;});}return null;};}function removeEntity(_0x31ed88,_0x4cb5d0){return function(_0x2eae9f){if(_0x2eae9f){return _0x2eae9f['destroy']()['then'](function(){_0x31ed88['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2a14d5,_0x5eeef8){return function(_0x19594c){if(!_0x19594c){_0x2a14d5['sendStatus'](0x194);}return _0x19594c;};}function handleError(_0x5b1331,_0x483278){_0x483278=_0x483278||0x1f4;return function(_0x5d62a6){logger[_0x6a48('0x27')](_0x5d62a6[_0x6a48('0x28')]);if(_0x5d62a6[_0x6a48('0x29')]){delete _0x5d62a6[_0x6a48('0x29')];}_0x5b1331['status'](_0x483278)[_0x6a48('0x2a')](_0x5d62a6);};}exports[_0x6a48('0x2b')]=function(_0xf450b,_0x13fe57){var _0x5188e8={},_0x57522a={},_0x39f2ee={'count':0x0,'rows':[]};var _0xa75f3d=_[_0x6a48('0x2c')](db[_0x6a48('0x2d')][_0x6a48('0x2e')],function(_0x5b01a4){return{'name':_0x5b01a4[_0x6a48('0x2f')],'type':_0x5b01a4['type']['key']};});_0x57522a[_0x6a48('0x30')]=_[_0x6a48('0x2c')](_0xa75f3d,_0x6a48('0x29'));_0x57522a[_0x6a48('0x31')]=_[_0x6a48('0x32')](_0xf450b[_0x6a48('0x31')]);_0x57522a[_0x6a48('0x33')]=_[_0x6a48('0x34')](_0x57522a[_0x6a48('0x30')],_0x57522a[_0x6a48('0x31')]);_0x5188e8[_0x6a48('0x35')]=_[_0x6a48('0x34')](_0x57522a['model'],qs[_0x6a48('0x36')](_0xf450b[_0x6a48('0x31')][_0x6a48('0x36')]));_0x5188e8['attributes']=_0x5188e8[_0x6a48('0x35')]['length']?_0x5188e8[_0x6a48('0x35')]:_0x57522a['model'];if(!_0xf450b[_0x6a48('0x31')][_0x6a48('0x37')](_0x6a48('0x38'))){_0x5188e8['limit']=qs[_0x6a48('0x21')](_0xf450b[_0x6a48('0x31')]['limit']);_0x5188e8['offset']=qs[_0x6a48('0x1f')](_0xf450b[_0x6a48('0x31')][_0x6a48('0x1f')]);}_0x5188e8[_0x6a48('0x39')]=qs[_0x6a48('0x3a')](_0xf450b[_0x6a48('0x31')][_0x6a48('0x3a')]);_0x5188e8[_0x6a48('0x3b')]=qs['filters'](_[_0x6a48('0x3c')](_0xf450b[_0x6a48('0x31')],_0x57522a[_0x6a48('0x33')]),_0xa75f3d);if(_0xf450b[_0x6a48('0x31')][_0x6a48('0x3d')]){_0x5188e8[_0x6a48('0x3b')]=_[_0x6a48('0x3e')](_0x5188e8[_0x6a48('0x3b')],{'$or':_[_0x6a48('0x2c')](_0xa75f3d,function(_0x424a5b){if(_0x424a5b[_0x6a48('0x3f')]!==_0x6a48('0x40')){var _0x19244f={};_0x19244f[_0x424a5b[_0x6a48('0x29')]]={'$like':'%'+_0xf450b['query'][_0x6a48('0x3d')]+'%'};return _0x19244f;}})});}_0x5188e8=_[_0x6a48('0x3e')]({},_0x5188e8,_0xf450b['options']);var _0x3ac1d7={'where':_0x5188e8[_0x6a48('0x3b')]};return db[_0x6a48('0x2d')][_0x6a48('0x22')](_0x3ac1d7)['then'](function(_0x2ab146){_0x39f2ee[_0x6a48('0x22')]=_0x2ab146;if(_0xf450b[_0x6a48('0x31')][_0x6a48('0x41')]){_0x5188e8[_0x6a48('0x42')]=[{'all':!![]}];}return db[_0x6a48('0x2d')][_0x6a48('0x43')](_0x5188e8);})['then'](function(_0x5cbb47){_0x39f2ee[_0x6a48('0x44')]=_0x5cbb47;return _0x39f2ee;})[_0x6a48('0x45')](respondWithFilteredResult(_0x13fe57,_0x5188e8))['catch'](handleError(_0x13fe57,null));};exports[_0x6a48('0x46')]=function(_0x4399c0,_0x48d8ee){var _0x305878={'raw':!![],'where':{'id':_0x4399c0[_0x6a48('0x47')]['id']}},_0x2abea4={};_0x2abea4[_0x6a48('0x30')]=_[_0x6a48('0x32')](db['WhatsappApplication'][_0x6a48('0x2e')]);_0x2abea4['query']=_['keys'](_0x4399c0[_0x6a48('0x31')]);_0x2abea4['filters']=_[_0x6a48('0x34')](_0x2abea4['model'],_0x2abea4[_0x6a48('0x31')]);_0x305878[_0x6a48('0x35')]=_[_0x6a48('0x34')](_0x2abea4['model'],qs[_0x6a48('0x36')](_0x4399c0['query']['fields']));_0x305878['attributes']=_0x305878[_0x6a48('0x35')]['length']?_0x305878[_0x6a48('0x35')]:_0x2abea4[_0x6a48('0x30')];if(_0x4399c0[_0x6a48('0x31')][_0x6a48('0x41')]){_0x305878['include']=[{'all':!![]}];}_0x305878=_[_0x6a48('0x3e')]({},_0x305878,_0x4399c0['options']);return db[_0x6a48('0x2d')][_0x6a48('0x48')](_0x305878)['then'](handleEntityNotFound(_0x48d8ee,null))['then'](respondWithResult(_0x48d8ee,null))[_0x6a48('0x49')](handleError(_0x48d8ee,null));};exports[_0x6a48('0x4a')]=function(_0x5c91cf,_0x130ca0){return db[_0x6a48('0x2d')][_0x6a48('0x4a')](_0x5c91cf[_0x6a48('0x4b')],{})[_0x6a48('0x45')](respondWithResult(_0x130ca0,0xc9))[_0x6a48('0x49')](handleError(_0x130ca0,null));};exports[_0x6a48('0x4c')]=function(_0x4b3cc1,_0x3227db){if(_0x4b3cc1[_0x6a48('0x4b')]['id']){delete _0x4b3cc1['body']['id'];}return db[_0x6a48('0x2d')][_0x6a48('0x48')]({'where':{'id':_0x4b3cc1[_0x6a48('0x47')]['id']}})[_0x6a48('0x45')](handleEntityNotFound(_0x3227db,null))[_0x6a48('0x45')](saveUpdates(_0x4b3cc1['body'],null))[_0x6a48('0x45')](respondWithResult(_0x3227db,null))[_0x6a48('0x49')](handleError(_0x3227db,null));};exports[_0x6a48('0x4d')]=function(_0xc66694,_0x1243bc){return db['WhatsappApplication']['find']({'where':{'id':_0xc66694[_0x6a48('0x47')]['id']}})[_0x6a48('0x45')](handleEntityNotFound(_0x1243bc,null))[_0x6a48('0x45')](removeEntity(_0x1243bc,null))['catch'](handleError(_0x1243bc,null));};
\ No newline at end of file
index 0f1920f..68b8916 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5577=['utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappApplication.attributes','define','WhatsappApplication','whatsapp_applications'];(function(_0x1d26b2,_0x2b96e4){var _0x46f2dc=function(_0x2abead){while(--_0x2abead){_0x1d26b2['push'](_0x1d26b2['shift']());}};_0x46f2dc(++_0x2b96e4);}(_0x5577,0x1b4));var _0x7557=function(_0x10bf5d,_0x10a3a9){_0x10bf5d=_0x10bf5d-0x0;var _0x27f511=_0x5577[_0x10bf5d];return _0x27f511;};'use strict';var _=require(_0x7557('0x0'));var util=require('util');var logger=require(_0x7557('0x1'))(_0x7557('0x2'));var moment=require('moment');var BPromise=require(_0x7557('0x3'));var rp=require(_0x7557('0x4'));var fs=require('fs');var path=require(_0x7557('0x5'));var rimraf=require(_0x7557('0x6'));var config=require(_0x7557('0x7'));var attributes=require(_0x7557('0x8'));module['exports']=function(_0x7bb8c,_0x41a4a5){return _0x7bb8c[_0x7557('0x9')](_0x7557('0xa'),attributes,{'tableName':_0x7557('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7557('0xc'),'collate':_0x7557('0xd')});};
\ No newline at end of file
+var _0xa9b1=['path','exports','define','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x3ec501,_0xd2c312){var _0x5d8bc1=function(_0xf344d5){while(--_0xf344d5){_0x3ec501['push'](_0x3ec501['shift']());}};_0x5d8bc1(++_0xd2c312);}(_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 logger=require(_0x1a9b('0x0'))(_0x1a9b('0x1'));var moment=require(_0x1a9b('0x2'));var BPromise=require(_0x1a9b('0x3'));var rp=require(_0x1a9b('0x4'));var fs=require('fs');var path=require(_0x1a9b('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./whatsappApplication.attributes');module[_0x1a9b('0x6')]=function(_0x15861d,_0x1a78b6){return _0x15861d[_0x1a9b('0x7')](_0x1a9b('0x8'),attributes,{'tableName':_0x1a9b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1a9b('0xa'),'collate':_0x1a9b('0xb')});};
\ No newline at end of file
index dc384eb..35ec914 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['code','message','WhatsappApplication,\x20%s,\x20%s','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x33c8fc,_0x27aedf){var _0x58734a=function(_0x1f48c2){while(--_0x1f48c2){_0x33c8fc['push'](_0x33c8fc['shift']());}};_0x58734a(++_0x27aedf);}(_0x9bde,0xe1));var _0xe9bd=function(_0x2efc69,_0x34c870){_0x2efc69=_0x2efc69-0x0;var _0x564ef4=_0x9bde[_0x2efc69];return _0x564ef4;};'use strict';var _=require('lodash');var util=require(_0xe9bd('0x0'));var moment=require('moment');var BPromise=require(_0xe9bd('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe9bd('0x2'));var db=require(_0xe9bd('0x3'))['db'];var utils=require(_0xe9bd('0x4'));var logger=require(_0xe9bd('0x5'))(_0xe9bd('0x6'));var config=require(_0xe9bd('0x7'));var jayson=require(_0xe9bd('0x8'));var client=jayson['client'][_0xe9bd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5f18fe,_0x22a438,_0xa66ae2){return new BPromise(function(_0x2d5c75,_0x3ef9e3){return client[_0xe9bd('0xa')](_0x5f18fe,_0xa66ae2)[_0xe9bd('0xb')](function(_0x439abc){logger[_0xe9bd('0xc')]('WhatsappApplication,\x20%s,\x20%s',_0x22a438,'request\x20sent');logger[_0xe9bd('0xd')](_0xe9bd('0xe'),_0x22a438,_0xe9bd('0xf'),JSON['stringify'](_0x439abc));if(_0x439abc[_0xe9bd('0x10')]){if(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x11')]===0x1f4){logger[_0xe9bd('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0x22a438,_0x439abc[_0xe9bd('0x10')]['message']);return _0x3ef9e3(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}logger[_0xe9bd('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0x22a438,_0x439abc['error'][_0xe9bd('0x12')]);return _0x2d5c75(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}else{logger[_0xe9bd('0xc')](_0xe9bd('0x13'),_0x22a438,_0xe9bd('0xf'));_0x2d5c75(_0x439abc[_0xe9bd('0x14')]['message']);}})[_0xe9bd('0x15')](function(_0x464a1b){logger[_0xe9bd('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0x22a438,_0x464a1b);_0x3ef9e3(_0x464a1b);});});}
\ No newline at end of file
+var _0x5c12=['../../config/environment','client','http','request','then','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','error','message','info','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x4c98b9,_0x1ad11b){var _0x3a257a=function(_0x147857){while(--_0x147857){_0x4c98b9['push'](_0x4c98b9['shift']());}};_0x3a257a(++_0x1ad11b);}(_0x5c12,0x188));var _0x25c1=function(_0x3238ea,_0x91809d){_0x3238ea=_0x3238ea-0x0;var _0x4aaac2=_0x5c12[_0x3238ea];return _0x4aaac2;};'use strict';var _=require('lodash');var util=require(_0x25c1('0x0'));var moment=require(_0x25c1('0x1'));var BPromise=require('bluebird');var rs=require(_0x25c1('0x2'));var fs=require('fs');var Redis=require(_0x25c1('0x3'));var db=require(_0x25c1('0x4'))['db'];var utils=require(_0x25c1('0x5'));var logger=require(_0x25c1('0x6'))(_0x25c1('0x7'));var config=require(_0x25c1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x25c1('0x9')][_0x25c1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x382922,_0x4ab674,_0x5c69b1){return new BPromise(function(_0x24981c,_0x3b69ba){return client[_0x25c1('0xb')](_0x382922,_0x5c69b1)[_0x25c1('0xc')](function(_0xf8363f){logger['info'](_0x25c1('0xd'),_0x4ab674,_0x25c1('0xe'));logger[_0x25c1('0xf')](_0x25c1('0x10'),_0x4ab674,_0x25c1('0xe'),JSON['stringify'](_0xf8363f));if(_0xf8363f[_0x25c1('0x11')]){if(_0xf8363f[_0x25c1('0x11')]['code']===0x1f4){logger[_0x25c1('0x11')](_0x25c1('0xd'),_0x4ab674,_0xf8363f[_0x25c1('0x11')][_0x25c1('0x12')]);return _0x3b69ba(_0xf8363f['error']['message']);}logger['error']('WhatsappApplication,\x20%s,\x20%s',_0x4ab674,_0xf8363f[_0x25c1('0x11')][_0x25c1('0x12')]);return _0x24981c(_0xf8363f[_0x25c1('0x11')][_0x25c1('0x12')]);}else{logger[_0x25c1('0x13')]('WhatsappApplication,\x20%s,\x20%s',_0x4ab674,_0x25c1('0xe'));_0x24981c(_0xf8363f['result']['message']);}})['catch'](function(_0x284712){logger[_0x25c1('0x11')]('WhatsappApplication,\x20%s,\x20%s',_0x4ab674,_0x284712);_0x3b69ba(_0x284712);});});}
\ No newline at end of file
index 39dcf1e..b62d1b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c8f=['Router','fs-extra','../../components/auth/service','./whatsappInteraction.controller','get','isAuthenticated','index','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','whatsapp','whatsappinteraction:addtags','addTags','put','tracked','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','destroy','removeTags','exports','util'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x2c8f,0x192));var _0xf2c8=function(_0x3838a5,_0x1d986a){_0x3838a5=_0x3838a5-0x0;var _0x11181e=_0x2c8f[_0x3838a5];return _0x11181e;};'use strict';var multer=require('multer');var util=require(_0xf2c8('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf2c8('0x1')]();var fs_extra=require(_0xf2c8('0x2'));var auth=require(_0xf2c8('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf2c8('0x4'));router[_0xf2c8('0x5')]('/',auth[_0xf2c8('0x6')](),controller[_0xf2c8('0x7')]);router[_0xf2c8('0x5')]('/describe',auth[_0xf2c8('0x6')](),controller[_0xf2c8('0x8')]);router[_0xf2c8('0x5')](_0xf2c8('0x9'),auth[_0xf2c8('0x6')](),controller[_0xf2c8('0xa')]);router['get'](_0xf2c8('0xb'),auth[_0xf2c8('0x6')](),controller[_0xf2c8('0xc')]);router[_0xf2c8('0x5')](_0xf2c8('0xd'),auth[_0xf2c8('0x6')](),controller[_0xf2c8('0xe')]);router[_0xf2c8('0xf')]('/',auth['isAuthenticated'](),controller[_0xf2c8('0x10')]);router['post'](_0xf2c8('0xb'),auth[_0xf2c8('0x6')](),controller[_0xf2c8('0x11')]);router[_0xf2c8('0xf')](_0xf2c8('0x12'),auth[_0xf2c8('0x6')](),interaction['tracked'](_0xf2c8('0x13'),_0xf2c8('0x14')),controller[_0xf2c8('0x15')]);router[_0xf2c8('0x16')](_0xf2c8('0x9'),auth[_0xf2c8('0x6')](),interaction[_0xf2c8('0x17')]('whatsapp',_0xf2c8('0x18')),controller[_0xf2c8('0x19')]);router[_0xf2c8('0x1a')](_0xf2c8('0x9'),auth[_0xf2c8('0x6')](),interaction['tracked']('whatsapp',_0xf2c8('0x1b')),controller[_0xf2c8('0x1c')]);router[_0xf2c8('0x1a')](_0xf2c8('0x12'),auth['isAuthenticated'](),controller[_0xf2c8('0x1d')]);module[_0xf2c8('0x1e')]=router;
\ No newline at end of file
+var _0x5e0e=['whatsappinteraction:addtags','addTags','put','tracked','whatsappinteraction:update','delete','whatsappinteraction:destroy','removeTags','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','whatsapp'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x5e0e,0x89));var _0xe5e0=function(_0x36734a,_0xdd12e1){_0x36734a=_0x36734a-0x0;var _0x565da1=_0x5e0e[_0x36734a];return _0x565da1;};'use strict';var multer=require(_0xe5e0('0x0'));var util=require(_0xe5e0('0x1'));var path=require('path');var timeout=require(_0xe5e0('0x2'));var express=require(_0xe5e0('0x3'));var router=express[_0xe5e0('0x4')]();var fs_extra=require(_0xe5e0('0x5'));var auth=require(_0xe5e0('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xe5e0('0x7'));var controller=require('./whatsappInteraction.controller');router[_0xe5e0('0x8')]('/',auth[_0xe5e0('0x9')](),controller[_0xe5e0('0xa')]);router[_0xe5e0('0x8')](_0xe5e0('0xb'),auth[_0xe5e0('0x9')](),controller['describe']);router[_0xe5e0('0x8')](_0xe5e0('0xc'),auth['isAuthenticated'](),controller[_0xe5e0('0xd')]);router[_0xe5e0('0x8')](_0xe5e0('0xe'),auth[_0xe5e0('0x9')](),controller[_0xe5e0('0xf')]);router[_0xe5e0('0x8')](_0xe5e0('0x10'),auth[_0xe5e0('0x9')](),controller[_0xe5e0('0x11')]);router[_0xe5e0('0x12')]('/',auth[_0xe5e0('0x9')](),controller[_0xe5e0('0x13')]);router[_0xe5e0('0x12')]('/:id/messages',auth['isAuthenticated'](),controller[_0xe5e0('0x14')]);router[_0xe5e0('0x12')](_0xe5e0('0x15'),auth[_0xe5e0('0x9')](),interaction['tracked'](_0xe5e0('0x16'),_0xe5e0('0x17')),controller[_0xe5e0('0x18')]);router[_0xe5e0('0x19')](_0xe5e0('0xc'),auth[_0xe5e0('0x9')](),interaction[_0xe5e0('0x1a')](_0xe5e0('0x16'),_0xe5e0('0x1b')),controller['update']);router[_0xe5e0('0x1c')]('/:id',auth[_0xe5e0('0x9')](),interaction['tracked'](_0xe5e0('0x16'),_0xe5e0('0x1d')),controller['destroy']);router[_0xe5e0('0x1c')]('/:id/tags',auth[_0xe5e0('0x9')](),controller[_0xe5e0('0x1e')]);module[_0xe5e0('0x1f')]=router;
\ No newline at end of file
index 320ff23..9b33d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7de=['STRING','DATE','ENUM','out','BOOLEAN','sequelize','moment','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe7de,0x165));var _0xee7d=function(_0x8c0654,_0x2f7192){_0x8c0654=_0x8c0654-0x0;var _0x223a63=_0xe7de[_0x8c0654];return _0x223a63;};'use strict';var Sequelize=require(_0xee7d('0x0'));var moment=require(_0xee7d('0x1'));module[_0xee7d('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xee7d('0x3')]},'secondDisposition':{'type':Sequelize[_0xee7d('0x3')]},'thirdDisposition':{'type':Sequelize[_0xee7d('0x3')]},'note':{'type':Sequelize[_0xee7d('0x3')]},'phone':{'type':Sequelize[_0xee7d('0x3')]},'read1stAt':{'type':Sequelize[_0xee7d('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xee7d('0x5')]('in',_0xee7d('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xee7d('0x4')]},'lastMsgDirection':{'type':Sequelize[_0xee7d('0x5')]('in',_0xee7d('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xee7d('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5398=['ENUM','out','moment','exports','BOOLEAN','DATE','STRING'];(function(_0x2642cb,_0x4b917f){var _0xe6e41=function(_0x281676){while(--_0x281676){_0x2642cb['push'](_0x2642cb['shift']());}};_0xe6e41(++_0x4b917f);}(_0x5398,0xe2));var _0x8539=function(_0x9ab1e,_0x56edbc){_0x9ab1e=_0x9ab1e-0x0;var _0x45a421=_0x5398[_0x9ab1e];return _0x45a421;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x8539('0x0'));module[_0x8539('0x1')]={'closed':{'type':Sequelize[_0x8539('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8539('0x3')]},'disposition':{'type':Sequelize[_0x8539('0x4')]},'secondDisposition':{'type':Sequelize[_0x8539('0x4')]},'thirdDisposition':{'type':Sequelize[_0x8539('0x4')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x8539('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x8539('0x5')]('in',_0x8539('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x8539('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x8539('0x5')]('in',_0x8539('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 1eee824..1fd3361 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cbc=['read','`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','QueryTypes','SELECT','clone','order','contactName','DESC','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','role','sequelize','toString','keyBy','merge','WhatsappInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','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.firstName','Contact.firstName','c.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','Contact.fax','o.fullname','o.internal','Owner.internal','groupBy','all','rows','show','params','include','create','describe','addMessage','WhatsappMessage','ids','omit','getMessages','findOne','WhatsappInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','setTags','emit','download','root','server','tmp','join','files','attachments','transcript-%d-%s.zip','CmContact','lastName','Attachment','Messages','createdAt','direction','WhatsappAccount','get','Whatsapp','Account','Owner','N.A.','closed','closedAt','disposition','existsSync','createReadStream','pipe','createWriteStream','out','System','firstName','secret','renderFile','createPdfFromHTML','log','err','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','sendStatus','stack','name','Users','map','fullname','TagIds','Tags','forEach','push','catch','index','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','left_join','users','u.id\x20=\x20ui.UserId','whatsapp_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','whatsapp_accounts','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','`\x20=\x200','having','`\x20>\x200','Contact','operator','$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','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','keys','some','compact','isEmpty','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','concat','parse','$gte','$lte','\x20IS\x20NULL','\x20=\x20?'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x3cbc,0x151));var _0xc3cb=function(_0x36420e,_0x30383c){_0x36420e=_0x36420e-0x0;var _0x52b93c=_0x3cbc[_0x36420e];return _0x52b93c;};'use strict';var emlformat=require(_0xc3cb('0x0'));var rimraf=require(_0xc3cb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc3cb('0x2'));var rp=require(_0xc3cb('0x3'));var moment=require(_0xc3cb('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc3cb('0x5'));var path=require(_0xc3cb('0x6'));var sox=require(_0xc3cb('0x7'));var csv=require('to-csv');var ejs=require(_0xc3cb('0x8'));var fs=require('fs');var fs_extra=require(_0xc3cb('0x9'));var _=require(_0xc3cb('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc3cb('0xb'));var deskjs=require(_0xc3cb('0xc'));var toCsv=require(_0xc3cb('0xd'));var querystring=require('querystring');var Papa=require(_0xc3cb('0xe'));var Redis=require(_0xc3cb('0xf'));var authService=require(_0xc3cb('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xc3cb('0x11'));var pdf=require('../../components/export/pdf');var hardwareService=require('../../config/license/hardware');var logger=require(_0xc3cb('0x12'))(_0xc3cb('0x13'));var utils=require(_0xc3cb('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc3cb('0x15'))['db'];config[_0xc3cb('0x16')]=_[_0xc3cb('0x17')](config['redis'],{'host':_0xc3cb('0x18'),'port':0x18eb});var socket=require(_0xc3cb('0x19'))(new Redis(config[_0xc3cb('0x16')]));require('./whatsappInteraction.socket')[_0xc3cb('0x1a')](socket);function respondWithStatusCode(_0x58ca21,_0xc9da8f){_0xc9da8f=_0xc9da8f||0xcc;return function(_0x13b2dd){if(_0x13b2dd){return _0x58ca21['sendStatus'](_0xc9da8f);}return _0x58ca21[_0xc3cb('0x1b')](_0xc9da8f)[_0xc3cb('0x1c')]();};}function respondWithResult(_0x481e96,_0x1ad4f7){_0x1ad4f7=_0x1ad4f7||0xc8;return function(_0x124c79){if(_0x124c79){return _0x481e96['status'](_0x1ad4f7)['json'](_0x124c79);}};}function respondWithFilteredResult(_0x2ff386,_0x1d15d4){return function(_0x3eeb8c){if(_0x3eeb8c){var _0x1612ae=typeof _0x1d15d4[_0xc3cb('0x1d')]===_0xc3cb('0x1e')&&typeof _0x1d15d4[_0xc3cb('0x1f')]===_0xc3cb('0x1e');var _0xfcb49e=_0x3eeb8c[_0xc3cb('0x20')];var _0x288723=_0x1612ae?0x0:_0x1d15d4[_0xc3cb('0x1d')];var _0x29273b=_0x1612ae?_0x3eeb8c[_0xc3cb('0x20')]:_0x1d15d4[_0xc3cb('0x1d')]+_0x1d15d4[_0xc3cb('0x1f')];var _0x21add2;if(_0x29273b>=_0xfcb49e){_0x29273b=_0xfcb49e;_0x21add2=0xc8;}else{_0x21add2=0xce;}_0x2ff386[_0xc3cb('0x1b')](_0x21add2);return _0x2ff386[_0xc3cb('0x21')](_0xc3cb('0x22'),_0x288723+'-'+_0x29273b+'/'+_0xfcb49e)[_0xc3cb('0x23')](_0x3eeb8c);}return null;};}function patchUpdates(_0x4feda5){return function(_0x12942d){try{jsonpatch[_0xc3cb('0x24')](_0x12942d,_0x4feda5,!![]);}catch(_0x3cd070){return BPromise['reject'](_0x3cd070);}return _0x12942d[_0xc3cb('0x25')]();};}function saveUpdates(_0x593143,_0x51f21b){return function(_0x4f55a5){if(_0x4f55a5){return _0x4f55a5[_0xc3cb('0x26')](_0x593143)[_0xc3cb('0x27')](function(_0x38c6e9){return _0x38c6e9;});}return null;};}function removeEntity(_0x5456b0,_0x35278a){return function(_0x3fb21f){if(_0x3fb21f){return _0x3fb21f[_0xc3cb('0x28')]()[_0xc3cb('0x27')](function(){_0x5456b0[_0xc3cb('0x1b')](0xcc)[_0xc3cb('0x1c')]();});}};}function handleEntityNotFound(_0x46ce14,_0x489590){return function(_0x1610d2){if(!_0x1610d2){_0x46ce14[_0xc3cb('0x29')](0x194);}return _0x1610d2;};}function handleError(_0x34b415,_0x61d85e){_0x61d85e=_0x61d85e||0x1f4;return function(_0x416f46){logger['error'](_0x416f46[_0xc3cb('0x2a')]);if(_0x416f46[_0xc3cb('0x2b')]){delete _0x416f46[_0xc3cb('0x2b')];}_0x34b415[_0xc3cb('0x1b')](_0x61d85e)['send'](_0x416f46);};}function getInteractionUsers(_0x3f9194,_0x5e05b3){return new BPromise(function(_0x160a23,_0x35978c){try{if(_0x5e05b3[_0x3f9194['id']]){_0x3f9194[_0xc3cb('0x2c')]=_[_0xc3cb('0x2d')](_0x5e05b3[_0x3f9194['id']],function(_0x26f4e7){return{'id':_0x26f4e7['id'],'fullname':_0x26f4e7[_0xc3cb('0x2e')]};});}}catch(_0x556f8a){_0x35978c(_0x556f8a);}_0x160a23(_0x3f9194);});}function getInteractionTags(_0x38783f,_0x268a54){return new BPromise(function(_0xe7bdf2,_0x1a3623){try{if(_0x38783f[_0xc3cb('0x2f')]){_0x38783f[_0xc3cb('0x30')]=[];_0x38783f[_0xc3cb('0x2f')]['split'](',')[_0xc3cb('0x31')](function(_0x1ef39d){_0x38783f['Tags'][_0xc3cb('0x32')](_0x268a54[_0x1ef39d]);});}delete _0x38783f[_0xc3cb('0x2f')];}catch(_0x2446b9){_0x1a3623(_0x2446b9);}_0xe7bdf2(_0x38783f);});}function updateWhatsappInteraction(_0x4fa2ac,_0x5a7628,_0x59c7a1){return new BPromise(function(_0x2c7f5d,_0x25d10d){return getInteractionUsers(_0x4fa2ac,_0x59c7a1)[_0xc3cb('0x27')](function(_0x2281ed){return getInteractionTags(_0x2281ed,_0x5a7628);})['then'](function(_0x5c8c13){_0x2c7f5d(_0x5c8c13);})[_0xc3cb('0x33')](function(_0x4cc18b){_0x25d10d(_0x4cc18b);});});}exports[_0xc3cb('0x34')]=function(_0x45a13a,_0x5a6b19){var _0x206f3c={},_0x18623f={},_0x47fb1d={'count':0x0,'rows':[]};var _0x5e6f93=_[_0xc3cb('0x2d')](db['WhatsappInteraction'][_0xc3cb('0x35')],function(_0x2b40d7){return{'name':_0x2b40d7[_0xc3cb('0x36')],'type':_0x2b40d7[_0xc3cb('0x37')][_0xc3cb('0x38')]};});_0x18623f[_0xc3cb('0x39')]=_[_0xc3cb('0x2d')](_0x5e6f93,_0xc3cb('0x2b'));_0x18623f[_0xc3cb('0x3a')]=_['keys'](_0x45a13a[_0xc3cb('0x3a')]);_0x18623f[_0xc3cb('0x3b')]=_[_0xc3cb('0x3c')](_0x18623f[_0xc3cb('0x39')],_0x18623f[_0xc3cb('0x3a')]);_0x206f3c[_0xc3cb('0x3d')]=_[_0xc3cb('0x3c')](_0x18623f[_0xc3cb('0x39')],qs[_0xc3cb('0x3e')](_0x45a13a[_0xc3cb('0x3a')]['fields']));_0x206f3c[_0xc3cb('0x3d')]=_0x206f3c[_0xc3cb('0x3d')][_0xc3cb('0x3f')]?_0x206f3c['attributes']:_0x18623f[_0xc3cb('0x39')];if(!_0x45a13a[_0xc3cb('0x3a')][_0xc3cb('0x40')](_0xc3cb('0x41'))){_0x206f3c[_0xc3cb('0x1f')]=qs[_0xc3cb('0x1f')](_0x45a13a['query'][_0xc3cb('0x1f')]);_0x206f3c['offset']=qs['offset'](_0x45a13a[_0xc3cb('0x3a')][_0xc3cb('0x1d')]);}_0x206f3c['order']=qs['sort'](_0x45a13a['query'][_0xc3cb('0x42')]);_0x206f3c[_0xc3cb('0x43')]=qs['filters'](_[_0xc3cb('0x44')](_0x45a13a[_0xc3cb('0x3a')],_0x18623f[_0xc3cb('0x3b')]),_0x5e6f93);var _0x297fa1=[];var _0xf613ba=squel[_0xc3cb('0x45')]()['field']('id')[_0xc3cb('0x46')](_0xc3cb('0x2b'))['field'](_0xc3cb('0x47'))[_0xc3cb('0x48')](_0xc3cb('0x49'));var _0x3a998d=squel[_0xc3cb('0x45')]()[_0xc3cb('0x46')](_0xc3cb('0x4a'))[_0xc3cb('0x46')](_0xc3cb('0x4b'))[_0xc3cb('0x46')](_0xc3cb('0x4c'))['from'](_0xc3cb('0x4d'),'ui')[_0xc3cb('0x4e')](_0xc3cb('0x4f'),'u',_0xc3cb('0x50'));var _0x39a120=squel['select']()[_0xc3cb('0x48')](_0xc3cb('0x51'),'i')['left_join'](_0xc3cb('0x52'),'c',_0xc3cb('0x53'))[_0xc3cb('0x4e')]('users','o','o.id\x20=\x20i.UserId')[_0xc3cb('0x4e')](_0xc3cb('0x54'),'a','a.id\x20=\x20i.WhatsappAccountId')['left_join'](_0xc3cb('0x55'),'me',_0xc3cb('0x56'))[_0xc3cb('0x4e')]('whatsapp_interaction_has_tags','it',_0xc3cb('0x57'))[_0xc3cb('0x4e')]('tools_tags','t',_0xc3cb('0x58'));var _0x2a7d81=squel[_0xc3cb('0x59')]();var _0x13f99e=[];var _0x5c4c83=squel['expr']();var _0x297d4a;if(_0x45a13a[_0xc3cb('0x3a')][_0xc3cb('0x5a')]){_0x297d4a=as[_0xc3cb('0x5b')](_0x45a13a['query'][_0xc3cb('0x5a')]);var _0x16ec9e=_0x297d4a[_0xc3cb('0x5c')];for(var _0x18b22e=0x0;_0x18b22e<_0x297d4a['conditions'][_0xc3cb('0x3f')];_0x18b22e++){var _0x235a16=_0x297d4a[_0xc3cb('0x5d')][_0x18b22e];var _0x539f48='i';var _0x1686fe=_[_0xc3cb('0x5e')](_0x5e6f93,[_0xc3cb('0x2b'),_0x235a16[_0xc3cb('0x46')]]);if(!_0x1686fe){switch(_0x235a16[_0xc3cb('0x46')]){case _0xc3cb('0x5f'):if(_0x235a16[_0xc3cb('0x60')]==0x1){_0x39a120['having']('`'+_0x235a16[_0xc3cb('0x46')]+_0xc3cb('0x61'));}else{_0x39a120[_0xc3cb('0x62')]('`'+_0x235a16[_0xc3cb('0x46')]+_0xc3cb('0x63'));}break;case _0xc3cb('0x64'):if(_0x235a16[_0xc3cb('0x65')]===_0xc3cb('0x66')){if(_0x235a16[_0xc3cb('0x60')][_0xc3cb('0x67')]('\x20')[_0xc3cb('0x3f')]>0x1){_0x2a7d81[_0x16ec9e](_0xc3cb('0x68'),qs[_0xc3cb('0x69')](_0x235a16[_0xc3cb('0x60')]),null);}else{var _0x2f48a9='%'+_0x235a16[_0xc3cb('0x60')]+'%';_0x2a7d81[_0x16ec9e](_0xc3cb('0x6a'),_0x2f48a9,_0x2f48a9,_0x2f48a9);}}else{_0x1686fe=_[_0xc3cb('0x5e')](_0x5e6f93,[_0xc3cb('0x2b'),_0xc3cb('0x6b')]);_0x235a16[_0xc3cb('0x46')]=_0xc3cb('0x6b');_0x57bed1=as[_0xc3cb('0x6c')](_0x539f48,_0x1686fe[_0xc3cb('0x37')],_0x235a16);_0x2a7d81[_0x16ec9e](_0x57bed1[_0xc3cb('0x6d')],_0x57bed1[_0xc3cb('0x60')][_0xc3cb('0x6e')],_0x57bed1['value'][_0xc3cb('0x1c')]);}break;case _0xc3cb('0x6f'):var _0x4aa439=_0x235a16['value'][_0xc3cb('0x67')](',')[_0xc3cb('0x2d')](function(_0x1b0b24){return Number(_0x1b0b24);});_0x4aa439[_0xc3cb('0x31')](function(_0x196ef6){_0x5c4c83['or'](_0xc3cb('0x70'),'%,'+_0x196ef6+',%');});_0x13f99e=_['union'](_0x13f99e,_0x4aa439);break;case _0xc3cb('0x71'):if(_0x235a16[_0xc3cb('0x65')]===_0xc3cb('0x66')){_0x2a7d81[_0x16ec9e](_0xc3cb('0x72'),'%'+_0x235a16['value']+'%',null);}else{_0x1686fe=_[_0xc3cb('0x5e')](_0x5e6f93,[_0xc3cb('0x2b'),_0xc3cb('0x73')]);_0x235a16[_0xc3cb('0x46')]=_0xc3cb('0x73');_0x57bed1=as['buildExpression'](_0x539f48,_0x1686fe['type'],_0x235a16);_0x2a7d81[_0x16ec9e](_0x57bed1[_0xc3cb('0x6d')],_0x57bed1[_0xc3cb('0x60')][_0xc3cb('0x6e')],_0x57bed1[_0xc3cb('0x60')][_0xc3cb('0x1c')]);}break;case _0xc3cb('0x74'):_0x57bed1=as[_0xc3cb('0x6c')]('me',null,_0x235a16);_0x2a7d81[_0x16ec9e](_0x57bed1['text'],_0x57bed1['value'][_0xc3cb('0x6e')],_0x57bed1[_0xc3cb('0x60')]['end']);break;}}else{var _0x57bed1=as[_0xc3cb('0x6c')](_0x539f48,_0x1686fe['type'],_0x235a16);_0x2a7d81[_0x16ec9e](_0x57bed1[_0xc3cb('0x6d')],_0x57bed1[_0xc3cb('0x60')][_0xc3cb('0x6e')],_0x57bed1[_0xc3cb('0x60')][_0xc3cb('0x1c')]);}}}else{var _0x6bf8dd=_(_0x45a13a[_0xc3cb('0x3a')])[_0xc3cb('0x75')]()[_0xc3cb('0x2d')](function(_0x388a32){return _[_0xc3cb('0x76')](_0x5e6f93,[_0xc3cb('0x2b'),_0x388a32])?_0x388a32:undefined;})[_0xc3cb('0x77')]()[_0xc3cb('0x60')]();if(!_[_0xc3cb('0x78')](_0x6bf8dd)){_0x6bf8dd[_0xc3cb('0x31')](function(_0x3ad733){if(_0x3ad733===_0xc3cb('0x79')){_0x39a120[_0xc3cb('0x43')](_0xc3cb('0x7a'),[][_0xc3cb('0x7b')](_0x45a13a[_0xc3cb('0x3a')][_0x3ad733]));}else if(_0x3ad733==='createdAt'){var _0x265bbe=JSON[_0xc3cb('0x7c')](_0x45a13a[_0xc3cb('0x3a')][_0x3ad733])[_0xc3cb('0x7d')];var _0x171365=JSON[_0xc3cb('0x7c')](_0x45a13a[_0xc3cb('0x3a')][_0x3ad733])[_0xc3cb('0x7e')];_0x39a120[_0xc3cb('0x43')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x265bbe,_0x171365);}else{if(_0x45a13a['query'][_0x3ad733]==='null'){_0x39a120[_0xc3cb('0x43')]('i.'+_0x3ad733+_0xc3cb('0x7f'));}else{_0x39a120[_0xc3cb('0x43')]('i.'+_0x3ad733+_0xc3cb('0x80'),_0x45a13a['query'][_0x3ad733]);}}});}if(_0x45a13a[_0xc3cb('0x3a')][_0xc3cb('0x81')]){if(_0x45a13a[_0xc3cb('0x3a')][_0xc3cb('0x81')]==0x1){_0x39a120[_0xc3cb('0x62')](_0xc3cb('0x82'));}else{_0x39a120[_0xc3cb('0x62')]('`unreadMessages`\x20>\x200');}}if(_0x45a13a[_0xc3cb('0x3a')]['tag']){_0x13f99e=_[_0xc3cb('0x83')](_0x45a13a[_0xc3cb('0x3a')][_0xc3cb('0x84')])?_0x45a13a[_0xc3cb('0x3a')]['tag']:new Array(_0x45a13a[_0xc3cb('0x3a')][_0xc3cb('0x84')]);_0x13f99e[_0xc3cb('0x31')](function(_0x1d202e){_0x5c4c83['or'](_0xc3cb('0x70'),'%,'+_0x1d202e+',%');});}if(_0x45a13a[_0xc3cb('0x3a')][_0xc3cb('0x85')]){var _0x44e8b1=_0x45a13a[_0xc3cb('0x3a')][_0xc3cb('0x85')][_0xc3cb('0x86')]('\x5c','\x5c\x5c')[_0xc3cb('0x86')](/'/g,'\x27\x27');if(qs[_0xc3cb('0x87')](_0x44e8b1)){_0x2a7d81['or']('i.id\x20LIKE\x20?',_0x44e8b1+'%')['or'](_0xc3cb('0x88'),_0x44e8b1+'%');}else{_0x2a7d81['or'](_0xc3cb('0x89'),qs['getFullTextValue'](_0x44e8b1))['or'](_0xc3cb('0x8a'),_0x44e8b1+'%');}}}_0x39a120[_0xc3cb('0x43')](_0x2a7d81);_0x39a120[_0xc3cb('0x8b')](_0xc3cb('0x8c'));var _0x56d1a6={'type':db['Sequelize'][_0xc3cb('0x8d')][_0xc3cb('0x8e')],'raw':!![]};var _0x4c4ce5=_0x39a120[_0xc3cb('0x8f')]();_0x4c4ce5['field'](_0xc3cb('0x8c'));_0x4c4ce5[_0xc3cb('0x46')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');if(_0x206f3c[_0xc3cb('0x90')]){_0x206f3c[_0xc3cb('0x90')][_0xc3cb('0x31')](function(_0x5daf25){var _0x5b56e1=_0x5daf25[0x0]===_0xc3cb('0x91')?_0x5daf25[0x0]:'i.'+_0x5daf25[0x0];_0x39a120['order'](_0x5b56e1,_0x5daf25[0x1]===_0xc3cb('0x92')?![]:!![]);});}if(!_[_0xc3cb('0x78')](_0x13f99e)){_0x39a120['having'](_0x5c4c83);_0x4c4ce5[_0xc3cb('0x43')]('t.id\x20IN\x20?',_0x13f99e);}BPromise[_0xc3cb('0x93')]()[_0xc3cb('0x27')](function(){if(!_0x297d4a){if(_0x45a13a[_0xc3cb('0x3a')][_0xc3cb('0x79')])return;_0x4c4ce5['where'](_0xc3cb('0x94'));_0x39a120[_0xc3cb('0x43')](_0xc3cb('0x94'));return;}if(_0x45a13a[_0xc3cb('0x95')]['role']!==_0xc3cb('0x96'))return;return _0x45a13a[_0xc3cb('0x95')][_0xc3cb('0x97')]({'attributes':['id'],'raw':!![]})[_0xc3cb('0x27')](function(_0xeddf29){if(_[_0xc3cb('0x78')](_0xeddf29)){_0x4c4ce5[_0xc3cb('0x43')](_0xc3cb('0x98'));_0x39a120[_0xc3cb('0x43')](_0xc3cb('0x98'));}else{_0x4c4ce5[_0xc3cb('0x43')](_0xc3cb('0x7a'),_[_0xc3cb('0x2d')](_0xeddf29,'id'));_0x39a120['where'](_0xc3cb('0x7a'),_['map'](_0xeddf29,'id'));}});})[_0xc3cb('0x27')](function(){if(_0x45a13a[_0xc3cb('0x95')][_0xc3cb('0x99')]===_0xc3cb('0x96')&&!_0x297d4a&&!_0x45a13a[_0xc3cb('0x3a')]['WhatsappAccountId'])return[];return db[_0xc3cb('0x9a')]['query'](_0x4c4ce5[_0xc3cb('0x9b')](),_0x56d1a6);})[_0xc3cb('0x27')](function(_0x2f43f7){_0x47fb1d[_0xc3cb('0x20')]=_0x2f43f7[_0xc3cb('0x3f')];if(_0x47fb1d[_0xc3cb('0x20')]===0x0)return[];return db[_0xc3cb('0x9a')][_0xc3cb('0x3a')](_0xf613ba[_0xc3cb('0x9b')](),_0x56d1a6)['then'](function(_0x97682c){_0x297fa1=_[_0xc3cb('0x9c')](_0x97682c,'id');_0x56d1a6=_[_0xc3cb('0x9d')](_0x56d1a6,{'model':db[_0xc3cb('0x9e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x45a13a['query'][_0xc3cb('0x3e')]){_0x206f3c[_0xc3cb('0x3d')]['forEach'](function(_0x3f48d2){_0x39a120[_0xc3cb('0x46')]('i.'+_0x3f48d2);});}else{_0x39a120[_0xc3cb('0x46')](_0xc3cb('0x9f'),'unreadMessages');_0x39a120['field'](_0xc3cb('0xa0'),'Account.key');_0x39a120[_0xc3cb('0x46')](_0xc3cb('0xa1'),_0xc3cb('0xa2'));_0x39a120[_0xc3cb('0x46')](_0xc3cb('0xa3'),_0xc3cb('0x91'));_0x39a120['field'](_0xc3cb('0xa4'));_0x39a120['field'](_0xc3cb('0xa5'),_0xc3cb('0xa6'));_0x39a120[_0xc3cb('0x46')](_0xc3cb('0xa7'),'Contact.lastName');_0x39a120['field'](_0xc3cb('0xa8'),_0xc3cb('0xa9'));_0x39a120[_0xc3cb('0x46')](_0xc3cb('0xaa'),_0xc3cb('0xab'));_0x39a120[_0xc3cb('0x46')]('c.mobile',_0xc3cb('0xac'));_0x39a120[_0xc3cb('0x46')]('c.fax',_0xc3cb('0xad'));_0x39a120[_0xc3cb('0x46')](_0xc3cb('0xae'),'Owner.fullname');_0x39a120['field'](_0xc3cb('0xaf'),_0xc3cb('0xb0'));_0x39a120[_0xc3cb('0x46')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x206f3c['limit'])_0x39a120[_0xc3cb('0x1f')](_0x206f3c['limit']);if(_0x206f3c[_0xc3cb('0x1d')])_0x39a120[_0xc3cb('0x1d')](_0x206f3c[_0xc3cb('0x1d')]);return db[_0xc3cb('0x9a')]['query'](_0x39a120[_0xc3cb('0x9b')](),_0x56d1a6);})['then'](function(_0x204f15){if(_0x204f15[_0xc3cb('0x3f')]>0x0)_0x3a998d['where']('ui.WhatsappInteractionId\x20IN\x20?',_[_0xc3cb('0x2d')](_0x204f15,'id'));return db[_0xc3cb('0x9a')][_0xc3cb('0x3a')](_0x3a998d[_0xc3cb('0x9b')](),_0x56d1a6)[_0xc3cb('0x27')](function(_0x455c17){var _0x5b0758=_[_0xc3cb('0xb1')](_0x455c17,'WhatsappInteractionId');var _0x5f364e=[];_0x204f15[_0xc3cb('0x31')](function(_0x2f5ded){_0x5f364e['push'](updateWhatsappInteraction(_0x2f5ded,_0x297fa1,_0x5b0758));});return BPromise[_0xc3cb('0xb2')](_0x5f364e);});});})[_0xc3cb('0x27')](function(_0x393365){_0x47fb1d[_0xc3cb('0xb3')]=_0x393365;return _0x47fb1d;})['then'](respondWithFilteredResult(_0x5a6b19,_0x206f3c))[_0xc3cb('0x33')](handleError(_0x5a6b19,null));};exports[_0xc3cb('0xb4')]=function(_0x2fd4c0,_0xf62ee8){var _0x4121eb={'raw':![],'where':{'id':_0x2fd4c0[_0xc3cb('0xb5')]['id']}},_0x10ed42={};_0x10ed42[_0xc3cb('0x39')]=_['keys'](db['WhatsappInteraction']['rawAttributes']);_0x10ed42['query']=_[_0xc3cb('0x75')](_0x2fd4c0['query']);_0x10ed42[_0xc3cb('0x3b')]=_['intersection'](_0x10ed42[_0xc3cb('0x39')],_0x10ed42[_0xc3cb('0x3a')]);_0x4121eb[_0xc3cb('0x3d')]=_[_0xc3cb('0x3c')](_0x10ed42['model'],qs[_0xc3cb('0x3e')](_0x2fd4c0[_0xc3cb('0x3a')][_0xc3cb('0x3e')]));_0x4121eb['attributes']=_0x4121eb[_0xc3cb('0x3d')]['length']?_0x4121eb[_0xc3cb('0x3d')]:_0x10ed42[_0xc3cb('0x39')];if(_0x2fd4c0[_0xc3cb('0x3a')]['includeAll']){_0x4121eb[_0xc3cb('0xb6')]=[{'all':!![]}];}_0x4121eb=_[_0xc3cb('0x9d')]({},_0x4121eb,_0x2fd4c0['options']);return db[_0xc3cb('0x9e')]['find'](_0x4121eb)[_0xc3cb('0x27')](handleEntityNotFound(_0xf62ee8,null))[_0xc3cb('0x27')](respondWithResult(_0xf62ee8,null))[_0xc3cb('0x33')](handleError(_0xf62ee8,null));};exports[_0xc3cb('0xb7')]=function(_0x3bb720,_0x242405){return db[_0xc3cb('0x9e')]['create'](_0x3bb720[_0xc3cb('0x74')],{})['then'](respondWithResult(_0x242405,0xc9))[_0xc3cb('0x33')](handleError(_0x242405,null));};exports['update']=function(_0x4008de,_0x32544c){if(_0x4008de['body']['id']){delete _0x4008de[_0xc3cb('0x74')]['id'];}return db[_0xc3cb('0x9e')][_0xc3cb('0x5e')]({'where':{'id':_0x4008de[_0xc3cb('0xb5')]['id']}})['then'](handleEntityNotFound(_0x32544c,null))['then'](saveUpdates(_0x4008de['body'],null))[_0xc3cb('0x27')](respondWithResult(_0x32544c,null))[_0xc3cb('0x33')](handleError(_0x32544c,null));};exports['destroy']=function(_0x4ebe2f,_0x2cea1f){return db[_0xc3cb('0x9e')][_0xc3cb('0x5e')]({'where':{'id':_0x4ebe2f[_0xc3cb('0xb5')]['id']}})[_0xc3cb('0x27')](handleEntityNotFound(_0x2cea1f,null))['then'](removeEntity(_0x2cea1f,null))[_0xc3cb('0x33')](handleError(_0x2cea1f,null));};exports[_0xc3cb('0xb8')]=function(_0x5b0a27,_0x5b53a8){return db[_0xc3cb('0x9e')][_0xc3cb('0xb8')]()[_0xc3cb('0x27')](respondWithResult(_0x5b53a8,null))[_0xc3cb('0x33')](handleError(_0x5b53a8,null));};exports[_0xc3cb('0xb9')]=function(_0x16b878,_0x3ac0ca,_0x11e42f){return db[_0xc3cb('0xba')][_0xc3cb('0x5e')]({'where':{'id':_0x16b878[_0xc3cb('0xb5')]['id']}})['then'](handleEntityNotFound(_0x3ac0ca,null))[_0xc3cb('0x27')](function(_0x39d602){if(_0x39d602){return _0x39d602['addMessage'](_0x16b878[_0xc3cb('0x74')][_0xc3cb('0xbb')],_[_0xc3cb('0xbc')](_0x16b878[_0xc3cb('0x74')],[_0xc3cb('0xbb'),'id'])||{});}})['then'](respondWithResult(_0x3ac0ca,null))['catch'](handleError(_0x3ac0ca,null));};exports[_0xc3cb('0xbd')]=function(_0x30e672,_0x2fdabe,_0x1d8125){var _0x5f4010={'raw':![],'where':{}};var _0xdf19b6={};var _0x39b477={'count':0x0,'rows':[]};return db[_0xc3cb('0x9e')][_0xc3cb('0xbe')]({'where':{'id':_0x30e672[_0xc3cb('0xb5')]['id']}})[_0xc3cb('0x27')](handleEntityNotFound(_0x2fdabe,null))[_0xc3cb('0x27')](function(_0x3759c8){if(_0x3759c8){_0xdf19b6[_0xc3cb('0x39')]=_['keys'](db[_0xc3cb('0xba')][_0xc3cb('0x35')]);_0xdf19b6[_0xc3cb('0x3a')]=_[_0xc3cb('0x75')](_0x30e672['query']);_0xdf19b6[_0xc3cb('0x3b')]=_[_0xc3cb('0x3c')](_0xdf19b6[_0xc3cb('0x39')],_0xdf19b6[_0xc3cb('0x3a')]);_0x5f4010[_0xc3cb('0x3d')]=_[_0xc3cb('0x3c')](_0xdf19b6['model'],qs[_0xc3cb('0x3e')](_0x30e672[_0xc3cb('0x3a')][_0xc3cb('0x3e')]));_0x5f4010[_0xc3cb('0x3d')]=_0x5f4010[_0xc3cb('0x3d')][_0xc3cb('0x3f')]?_0x5f4010[_0xc3cb('0x3d')]:_0xdf19b6['model'];if(!_0x30e672['query'][_0xc3cb('0x40')](_0xc3cb('0x41'))){_0x5f4010[_0xc3cb('0x1f')]=qs[_0xc3cb('0x1f')](_0x30e672[_0xc3cb('0x3a')][_0xc3cb('0x1f')]);_0x5f4010[_0xc3cb('0x1d')]=qs[_0xc3cb('0x1d')](_0x30e672[_0xc3cb('0x3a')][_0xc3cb('0x1d')]);}_0x5f4010['order']=qs[_0xc3cb('0x42')](_0x30e672[_0xc3cb('0x3a')][_0xc3cb('0x42')]);_0x5f4010[_0xc3cb('0x43')]=qs['filters'](_[_0xc3cb('0x44')](_0x30e672[_0xc3cb('0x3a')],_0xdf19b6['filters']));_0x5f4010['where'][_0xc3cb('0xbf')]=_0x3759c8['id'];if(_0x30e672[_0xc3cb('0x3a')][_0xc3cb('0x85')]){_0x5f4010[_0xc3cb('0x43')]=_['merge'](_0x5f4010[_0xc3cb('0x43')],{'$or':_['map'](_0x5f4010[_0xc3cb('0x3d')],function(_0x1c6adb){var _0x26332d={};_0x26332d[_0x1c6adb]={'$like':'%'+_0x30e672['query'][_0xc3cb('0x85')]+'%'};return _0x26332d;})});}if(_0x30e672['query']['$gte']){var _0x5aa8fd=_0x30e672['query'][_0xc3cb('0x7d')]['split'](',');var _0x1f3abe={};_0x1f3abe[_0x5aa8fd[0x0]]={'$gte':moment(_0x5aa8fd[0x1])[_0xc3cb('0xc0')](_0xc3cb('0xc1'))};_0x5f4010[_0xc3cb('0x43')]=_[_0xc3cb('0x9d')](_0x5f4010[_0xc3cb('0x43')],_0x1f3abe);}_0x5f4010=_[_0xc3cb('0x9d')]({},_0x5f4010,_0x30e672['options']);return db[_0xc3cb('0xba')][_0xc3cb('0x20')]({'where':_0x5f4010[_0xc3cb('0x43')]})[_0xc3cb('0x27')](function(_0x4b37a1){_0x39b477[_0xc3cb('0x20')]=_0x4b37a1;if(_0x30e672[_0xc3cb('0x3a')]['includeAll']){_0x5f4010[_0xc3cb('0xb6')]=[{'all':!![]}];}return db[_0xc3cb('0xba')][_0xc3cb('0xc2')](_0x5f4010);})[_0xc3cb('0x27')](function(_0x3b2d1f){_0x39b477[_0xc3cb('0xb3')]=_0x3b2d1f;return _0x39b477;});}})[_0xc3cb('0x27')](respondWithFilteredResult(_0x2fdabe,_0x5f4010))[_0xc3cb('0x33')](handleError(_0x2fdabe,null));};exports[_0xc3cb('0xc3')]=function(_0x5bb563,_0x249e2d,_0x43f42){return db['WhatsappInteraction'][_0xc3cb('0x5e')]({'where':{'id':_0x5bb563[_0xc3cb('0xb5')]['id']}})['then'](handleEntityNotFound(_0x249e2d,null))[_0xc3cb('0x27')](function(_0x1c0e44){if(_0x1c0e44){return _0x1c0e44[_0xc3cb('0xc4')](_0x5bb563[_0xc3cb('0x74')][_0xc3cb('0xbb')],_['omit'](_0x5bb563[_0xc3cb('0x74')],[_0xc3cb('0xbb'),'id'])||{})['spread'](function(){return db['Tag']['findAll']({'attributes':['id','name','color'],'where':{'id':_0x5bb563[_0xc3cb('0x74')][_0xc3cb('0xbb')]}});})[_0xc3cb('0x27')](function(_0x3a602e){socket[_0xc3cb('0xc5')]('whatsappInteractionTags:save',{'id':Number(_0x5bb563[_0xc3cb('0xb5')]['id']),'tags':_0x3a602e||[]});return{'id':Number(_0x5bb563[_0xc3cb('0xb5')]['id']),'tags':_0x3a602e||[]};});}})[_0xc3cb('0x27')](respondWithResult(_0x249e2d,null))[_0xc3cb('0x33')](handleError(_0x249e2d,null));};exports['removeTags']=function(_0x5c2a2c,_0x5e8169,_0x50b505){return db[_0xc3cb('0x9e')][_0xc3cb('0x5e')]({'where':{'id':_0x5c2a2c['params']['id']}})[_0xc3cb('0x27')](handleEntityNotFound(_0x5e8169,null))[_0xc3cb('0x27')](function(_0x41f4c5){if(_0x41f4c5){return _0x41f4c5['removeTags'](_0x5c2a2c[_0xc3cb('0x3a')][_0xc3cb('0xbb')]);}})[_0xc3cb('0x27')](respondWithStatusCode(_0x5e8169,null))['catch'](handleError(_0x5e8169,null));};exports[_0xc3cb('0xc6')]=function(_0x52e13e,_0x22fd03){var _0x279f89=moment()['unix']()[_0xc3cb('0x9b')]();var _0x410106=path['join'](config[_0xc3cb('0xc7')],_0xc3cb('0xc8'),'files',_0xc3cb('0xc9'));var _0x3c55d6=path[_0xc3cb('0xca')](config[_0xc3cb('0xc7')],_0xc3cb('0xc8'),_0xc3cb('0xcb'),_0xc3cb('0xcc'));var _0x3d0238=path[_0xc3cb('0xca')](_0x410106,_0x279f89);var _0x1839d0=util[_0xc3cb('0xc0')](_0xc3cb('0xcd'),_0x52e13e['params']['id'],_0x279f89);var _0x3cae6a=path[_0xc3cb('0xca')](_0x410106,_0x1839d0);var _0x582d3f=[];_0x582d3f[_0xc3cb('0x32')]({'model':db[_0xc3cb('0x71')],'as':_0xc3cb('0x71'),'attributes':['id',_0xc3cb('0x2e')],'raw':!![]});_0x582d3f[_0xc3cb('0x32')]({'model':db[_0xc3cb('0xce')],'as':_0xc3cb('0x64'),'attributes':['id','firstName',_0xc3cb('0xcf')],'raw':!![]});if(_0x52e13e[_0xc3cb('0x3a')][_0xc3cb('0xcc')]){_0x582d3f[_0xc3cb('0x32')]({'model':db[_0xc3cb('0xd0')],'as':_0xc3cb('0xd0'),'raw':!![]});}var _0x1da21a=[{'model':db[_0xc3cb('0xba')],'as':_0xc3cb('0xd1'),'attributes':['id',_0xc3cb('0x74'),_0xc3cb('0xd2'),_0xc3cb('0xd3'),'secret',_0xc3cb('0x81')],'include':_0x582d3f}];_0x1da21a['push']({'model':db[_0xc3cb('0xd4')],'as':'Account','attributes':['id',_0xc3cb('0x2b')]});_0x1da21a[_0xc3cb('0x32')]({'model':db[_0xc3cb('0x71')],'as':'Owner','attributes':['id',_0xc3cb('0x2e')]});return db[_0xc3cb('0x9e')][_0xc3cb('0x5e')]({'where':{'id':_0x52e13e['params']['id']},'include':_0x1da21a})['then'](handleEntityNotFound(_0x22fd03,null))[_0xc3cb('0x27')](function(_0x2e5e99){if(_0x2e5e99){var _0xeb6b7e=_0x2e5e99[_0xc3cb('0xd5')]({'plain':!![]});fs['mkdirSync'](_0x3d0238);var _0x5bd104={'channel':_0xc3cb('0xd6'),'account':_0xeb6b7e[_0xc3cb('0xd7')][_0xc3cb('0x2b')],'agent':_0xeb6b7e[_0xc3cb('0xd8')]?_0xeb6b7e[_0xc3cb('0xd8')][_0xc3cb('0x2e')]:_0xc3cb('0xd9'),'createdAt':moment(_0xeb6b7e[_0xc3cb('0xd2')])['format'](_0xc3cb('0xc1'))[_0xc3cb('0x9b')](),'closedAt':_0xeb6b7e[_0xc3cb('0xda')]?moment(_0xeb6b7e[_0xc3cb('0xdb')])[_0xc3cb('0xc0')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0xeb6b7e[_0xc3cb('0xdc')],'messages':_(_0xeb6b7e[_0xc3cb('0xd1')])[_0xc3cb('0x85')]({'secret':![]})['map'](function(_0x1738e9){if(_0x1738e9['Attachment']){var _0x11e8e8=path[_0xc3cb('0xca')](_0x3c55d6,_0x1738e9[_0xc3cb('0xd0')]['basename']);if(fs[_0xc3cb('0xdd')](_0x11e8e8)){fs[_0xc3cb('0xde')](_0x11e8e8)[_0xc3cb('0xdf')](fs[_0xc3cb('0xe0')](path[_0xc3cb('0xca')](_0x3d0238,_0x1738e9[_0xc3cb('0xd0')]['basename'])));}}return{'date':moment(_0x1738e9['createdAt'])[_0xc3cb('0xc0')](_0xc3cb('0xc1'))[_0xc3cb('0x9b')](),'sender':_0x1738e9[_0xc3cb('0xd3')]===_0xc3cb('0xe1')?_0x1738e9['User']?_0x1738e9[_0xc3cb('0x71')][_0xc3cb('0x2e')]:_0xc3cb('0xe2'):_0x1738e9['Contact'][_0xc3cb('0xe3')]+(_0x1738e9['Contact'][_0xc3cb('0xcf')]?'\x20'+_0x1738e9['Contact']['lastName']:''),'body':_0x1738e9['Attachment']?_0x1738e9[_0xc3cb('0xd0')]['basename']:_0x1738e9[_0xc3cb('0x74')],'direction':_0x1738e9['direction']===_0xc3cb('0xe1')?'A':'C','secret':_0x1738e9[_0xc3cb('0xe4')],'read':_0x1738e9[_0xc3cb('0x81')],'attachment':_0x1738e9[_0xc3cb('0xd0')]};})[_0xc3cb('0x60')]()};return ejs[_0xc3cb('0xe5')](path[_0xc3cb('0xca')](config['root'],_0xc3cb('0xc8'),'views','downloadInteraction.ejs'),{'interaction':_0x5bd104})[_0xc3cb('0x27')](function(_0x17e88c){var _0x483155=path[_0xc3cb('0xca')](_0x3d0238,'transcript-'+_0xeb6b7e['id']+'-'+_0x279f89+'.pdf');var _0x4d0184={'path':_0x483155,'channel':_0xc3cb('0xd6'),'interactionId':_0xeb6b7e['id']};return pdf[_0xc3cb('0xe6')](_0x17e88c,_0x4d0184);})[_0xc3cb('0x27')](function(){return new BPromise(function(_0x280919,_0x49c664){zipdir(_0x3d0238,{'saveTo':_0x3cae6a},function(_0x29c9a4,_0x36da61){if(_0x29c9a4)return _0x49c664(_0x29c9a4);return _0x280919(_0x36da61);});})[_0xc3cb('0x27')](function(){return new BPromise(function(_0x3f5337,_0x1a3a7e){rimraf(_0x3d0238,function(_0x3a2505){if(_0x3a2505)_0x1a3a7e(_0x3a2505);return _0x3f5337();});});})[_0xc3cb('0x27')](function(){return _0x22fd03[_0xc3cb('0xc6')](_0x3cae6a,_0x1839d0,function(_0x4af319){if(_0x4af319){console[_0xc3cb('0xe7')](_0xc3cb('0xe8'),_0x4af319);}else{fs['unlinkSync'](_0x3cae6a);}});});});}else{return _0x22fd03['sendStatus'](0xc8);}})['catch'](handleError(_0x22fd03,null));};
\ No newline at end of file
+var _0xf712=['WhatsappInteraction','rawAttributes','key','model','name','keys','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','select','field','color','tools_tags','u.id','u.fullname','ui.WhatsappInteractionId','from','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','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','value','having','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','some','compact','isEmpty','concat','createdAt','$gte','parse','$lte','null','`unreadMessages`\x20=\x200','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\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','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','resolve','WhatsappAccountId','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.WhatsappAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','a.key','Account.key','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','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','groupBy','all','rows','show','params','include','options','create','body','describe','addMessage','omit','ids','getMessages','findOne','WhatsappMessage','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','addTags','spread','Tag','emit','whatsappInteractionTags:save','removeTags','download','join','server','tmp','root','files','attachments','User','lastName','Attachment','Messages','read','get','mkdirSync','Whatsapp','Account','Owner','N.A.','closed','closedAt','disposition','basename','existsSync','createReadStream','pipe','direction','out','System','secret','renderFile','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','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','defaults','localhost','socket.io-emitter','redis','./whatsappInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','error','stack','send','map','fullname','TagIds','Tags','split','forEach','push','catch','index'];(function(_0xce0a6c,_0x56139a){var _0x1186f6=function(_0x867bd6){while(--_0x867bd6){_0xce0a6c['push'](_0xce0a6c['shift']());}};_0x1186f6(++_0x56139a);}(_0xf712,0x19c));var _0x2f71=function(_0x433b0f,_0x16b3b1){_0x433b0f=_0x433b0f-0x0;var _0xa584a9=_0xf712[_0x433b0f];return _0xa584a9;};'use strict';var emlformat=require(_0x2f71('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2f71('0x1'));var jsonpatch=require(_0x2f71('0x2'));var rp=require(_0x2f71('0x3'));var moment=require(_0x2f71('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2f71('0x5'));var util=require(_0x2f71('0x6'));var path=require(_0x2f71('0x7'));var sox=require(_0x2f71('0x8'));var csv=require(_0x2f71('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2f71('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2f71('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x2f71('0xc'));var toCsv=require(_0x2f71('0x9'));var querystring=require(_0x2f71('0xd'));var Papa=require(_0x2f71('0xe'));var Redis=require(_0x2f71('0xf'));var authService=require(_0x2f71('0x10'));var qs=require(_0x2f71('0x11'));var as=require(_0x2f71('0x12'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0x2f71('0x13'));var logger=require(_0x2f71('0x14'))('api');var utils=require(_0x2f71('0x15'));var config=require(_0x2f71('0x16'));var licenseUtil=require(_0x2f71('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x2f71('0x18')](config['redis'],{'host':_0x2f71('0x19'),'port':0x18eb});var socket=require(_0x2f71('0x1a'))(new Redis(config[_0x2f71('0x1b')]));require(_0x2f71('0x1c'))[_0x2f71('0x1d')](socket);function respondWithStatusCode(_0x36aef6,_0x73d438){_0x73d438=_0x73d438||0xcc;return function(_0x3cae73){if(_0x3cae73){return _0x36aef6[_0x2f71('0x1e')](_0x73d438);}return _0x36aef6[_0x2f71('0x1f')](_0x73d438)[_0x2f71('0x20')]();};}function respondWithResult(_0x108b77,_0x573503){_0x573503=_0x573503||0xc8;return function(_0x44e5dc){if(_0x44e5dc){return _0x108b77[_0x2f71('0x1f')](_0x573503)[_0x2f71('0x21')](_0x44e5dc);}};}function respondWithFilteredResult(_0x460313,_0x1df66f){return function(_0x2f671e){if(_0x2f671e){var _0x57c8be=typeof _0x1df66f[_0x2f71('0x22')]===_0x2f71('0x23')&&typeof _0x1df66f[_0x2f71('0x24')]===_0x2f71('0x23');var _0x2584ce=_0x2f671e[_0x2f71('0x25')];var _0x9327e4=_0x57c8be?0x0:_0x1df66f[_0x2f71('0x22')];var _0x1f938b=_0x57c8be?_0x2f671e[_0x2f71('0x25')]:_0x1df66f[_0x2f71('0x22')]+_0x1df66f['limit'];var _0x2d30ba;if(_0x1f938b>=_0x2584ce){_0x1f938b=_0x2584ce;_0x2d30ba=0xc8;}else{_0x2d30ba=0xce;}_0x460313[_0x2f71('0x1f')](_0x2d30ba);return _0x460313[_0x2f71('0x26')]('Content-Range',_0x9327e4+'-'+_0x1f938b+'/'+_0x2584ce)['json'](_0x2f671e);}return null;};}function patchUpdates(_0x1652b0){return function(_0x4761c1){try{jsonpatch[_0x2f71('0x27')](_0x4761c1,_0x1652b0,!![]);}catch(_0x405d2f){return BPromise['reject'](_0x405d2f);}return _0x4761c1[_0x2f71('0x28')]();};}function saveUpdates(_0x1a2259,_0x5a4bdf){return function(_0x3bad7f){if(_0x3bad7f){return _0x3bad7f[_0x2f71('0x29')](_0x1a2259)[_0x2f71('0x2a')](function(_0x3b64a7){return _0x3b64a7;});}return null;};}function removeEntity(_0x234ecb,_0x17e2df){return function(_0x544f66){if(_0x544f66){return _0x544f66[_0x2f71('0x2b')]()[_0x2f71('0x2a')](function(){_0x234ecb[_0x2f71('0x1f')](0xcc)[_0x2f71('0x20')]();});}};}function handleEntityNotFound(_0x4da041,_0x2a0caf){return function(_0x29c719){if(!_0x29c719){_0x4da041[_0x2f71('0x1e')](0x194);}return _0x29c719;};}function handleError(_0x3f7118,_0x156488){_0x156488=_0x156488||0x1f4;return function(_0x205a51){logger[_0x2f71('0x2c')](_0x205a51[_0x2f71('0x2d')]);if(_0x205a51['name']){delete _0x205a51['name'];}_0x3f7118[_0x2f71('0x1f')](_0x156488)[_0x2f71('0x2e')](_0x205a51);};}function getInteractionUsers(_0x497587,_0x180057){return new BPromise(function(_0x2790fd,_0x4a67d5){try{if(_0x180057[_0x497587['id']]){_0x497587['Users']=_[_0x2f71('0x2f')](_0x180057[_0x497587['id']],function(_0x44aab8){return{'id':_0x44aab8['id'],'fullname':_0x44aab8[_0x2f71('0x30')]};});}}catch(_0x40e54a){_0x4a67d5(_0x40e54a);}_0x2790fd(_0x497587);});}function getInteractionTags(_0x5899dc,_0xab3924){return new BPromise(function(_0xc2af1e,_0x44d219){try{if(_0x5899dc[_0x2f71('0x31')]){_0x5899dc[_0x2f71('0x32')]=[];_0x5899dc[_0x2f71('0x31')][_0x2f71('0x33')](',')[_0x2f71('0x34')](function(_0x46dc91){_0x5899dc[_0x2f71('0x32')][_0x2f71('0x35')](_0xab3924[_0x46dc91]);});}delete _0x5899dc[_0x2f71('0x31')];}catch(_0x259615){_0x44d219(_0x259615);}_0xc2af1e(_0x5899dc);});}function updateWhatsappInteraction(_0xdc8940,_0x3e815f,_0xbb7c97){return new BPromise(function(_0x6b6975,_0x74e888){return getInteractionUsers(_0xdc8940,_0xbb7c97)[_0x2f71('0x2a')](function(_0x46ad88){return getInteractionTags(_0x46ad88,_0x3e815f);})[_0x2f71('0x2a')](function(_0x540e40){_0x6b6975(_0x540e40);})[_0x2f71('0x36')](function(_0x1c7ecd){_0x74e888(_0x1c7ecd);});});}exports[_0x2f71('0x37')]=function(_0x420b16,_0x1eddff){var _0x1fadd2={},_0x448a04={},_0x3f2bf9={'count':0x0,'rows':[]};var _0x3127cc=_[_0x2f71('0x2f')](db[_0x2f71('0x38')][_0x2f71('0x39')],function(_0x5e8021){return{'name':_0x5e8021['fieldName'],'type':_0x5e8021['type'][_0x2f71('0x3a')]};});_0x448a04[_0x2f71('0x3b')]=_[_0x2f71('0x2f')](_0x3127cc,_0x2f71('0x3c'));_0x448a04['query']=_[_0x2f71('0x3d')](_0x420b16['query']);_0x448a04['filters']=_[_0x2f71('0x3e')](_0x448a04['model'],_0x448a04[_0x2f71('0x3f')]);_0x1fadd2[_0x2f71('0x40')]=_[_0x2f71('0x3e')](_0x448a04['model'],qs[_0x2f71('0x41')](_0x420b16[_0x2f71('0x3f')][_0x2f71('0x41')]));_0x1fadd2[_0x2f71('0x40')]=_0x1fadd2['attributes'][_0x2f71('0x42')]?_0x1fadd2['attributes']:_0x448a04['model'];if(!_0x420b16[_0x2f71('0x3f')][_0x2f71('0x43')]('nolimit')){_0x1fadd2[_0x2f71('0x24')]=qs[_0x2f71('0x24')](_0x420b16[_0x2f71('0x3f')][_0x2f71('0x24')]);_0x1fadd2[_0x2f71('0x22')]=qs['offset'](_0x420b16['query'][_0x2f71('0x22')]);}_0x1fadd2[_0x2f71('0x44')]=qs[_0x2f71('0x45')](_0x420b16[_0x2f71('0x3f')][_0x2f71('0x45')]);_0x1fadd2[_0x2f71('0x46')]=qs[_0x2f71('0x47')](_[_0x2f71('0x48')](_0x420b16['query'],_0x448a04[_0x2f71('0x47')]),_0x3127cc);var _0x2709b1=[];var _0x31d17d=squel[_0x2f71('0x49')]()[_0x2f71('0x4a')]('id')[_0x2f71('0x4a')](_0x2f71('0x3c'))[_0x2f71('0x4a')](_0x2f71('0x4b'))['from'](_0x2f71('0x4c'));var _0x8b7e44=squel[_0x2f71('0x49')]()[_0x2f71('0x4a')](_0x2f71('0x4d'))[_0x2f71('0x4a')](_0x2f71('0x4e'))[_0x2f71('0x4a')](_0x2f71('0x4f'))[_0x2f71('0x50')](_0x2f71('0x51'),'ui')[_0x2f71('0x52')](_0x2f71('0x53'),'u','u.id\x20=\x20ui.UserId');var _0x408f57=squel[_0x2f71('0x49')]()['from'](_0x2f71('0x54'),'i')[_0x2f71('0x52')](_0x2f71('0x55'),'c',_0x2f71('0x56'))[_0x2f71('0x52')](_0x2f71('0x53'),'o',_0x2f71('0x57'))[_0x2f71('0x52')](_0x2f71('0x58'),'a',_0x2f71('0x59'))[_0x2f71('0x52')]('whatsapp_messages','me','me.WhatsappInteractionId\x20=\x20i.id')[_0x2f71('0x52')](_0x2f71('0x5a'),'it','it.WhatsappInteractionId\x20=\x20i.id')[_0x2f71('0x52')](_0x2f71('0x4c'),'t',_0x2f71('0x5b'));var _0x2b602b=squel[_0x2f71('0x5c')]();var _0x30397a=[];var _0x376474=squel[_0x2f71('0x5c')]();var _0x158ccf;if(_0x420b16[_0x2f71('0x3f')][_0x2f71('0x5d')]){_0x158ccf=as['parseSearch'](_0x420b16[_0x2f71('0x3f')][_0x2f71('0x5d')]);var _0x354978=_0x158ccf[_0x2f71('0x5e')];for(var _0x17e25e=0x0;_0x17e25e<_0x158ccf[_0x2f71('0x5f')][_0x2f71('0x42')];_0x17e25e++){var _0x568b30=_0x158ccf[_0x2f71('0x5f')][_0x17e25e];var _0x39a968='i';var _0x34551c=_[_0x2f71('0x60')](_0x3127cc,['name',_0x568b30['field']]);if(!_0x34551c){switch(_0x568b30[_0x2f71('0x4a')]){case'unreadMessages':if(_0x568b30[_0x2f71('0x61')]==0x1){_0x408f57[_0x2f71('0x62')]('`'+_0x568b30[_0x2f71('0x4a')]+'`\x20=\x200');}else{_0x408f57[_0x2f71('0x62')]('`'+_0x568b30[_0x2f71('0x4a')]+_0x2f71('0x63'));}break;case _0x2f71('0x64'):if(_0x568b30[_0x2f71('0x65')]===_0x2f71('0x66')){if(_0x568b30[_0x2f71('0x61')][_0x2f71('0x33')]('\x20')[_0x2f71('0x42')]>0x1){_0x2b602b[_0x354978](_0x2f71('0x67'),qs['getFullTextValue'](_0x568b30['value']),null);}else{var _0x5b366f='%'+_0x568b30[_0x2f71('0x61')]+'%';_0x2b602b[_0x354978](_0x2f71('0x68'),_0x5b366f,_0x5b366f,_0x5b366f);}}else{_0x34551c=_['find'](_0x3127cc,[_0x2f71('0x3c'),_0x2f71('0x69')]);_0x568b30[_0x2f71('0x4a')]=_0x2f71('0x69');_0x572d4f=as[_0x2f71('0x6a')](_0x39a968,_0x34551c[_0x2f71('0x6b')],_0x568b30);_0x2b602b[_0x354978](_0x572d4f[_0x2f71('0x6c')],_0x572d4f[_0x2f71('0x61')]['start'],_0x572d4f['value'][_0x2f71('0x20')]);}break;case'Tag':var _0x28d619=_0x568b30[_0x2f71('0x61')]['split'](',')[_0x2f71('0x2f')](function(_0x4174bc){return Number(_0x4174bc);});_0x28d619[_0x2f71('0x34')](function(_0x4d367a){_0x376474['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4d367a+',%');});_0x30397a=_[_0x2f71('0x6d')](_0x30397a,_0x28d619);break;case'User':if(_0x568b30[_0x2f71('0x65')]===_0x2f71('0x66')){_0x2b602b[_0x354978](_0x2f71('0x6e'),'%'+_0x568b30[_0x2f71('0x61')]+'%',null);}else{_0x34551c=_[_0x2f71('0x60')](_0x3127cc,[_0x2f71('0x3c'),_0x2f71('0x6f')]);_0x568b30['field']='UserId';_0x572d4f=as[_0x2f71('0x6a')](_0x39a968,_0x34551c[_0x2f71('0x6b')],_0x568b30);_0x2b602b[_0x354978](_0x572d4f[_0x2f71('0x6c')],_0x572d4f[_0x2f71('0x61')][_0x2f71('0x70')],_0x572d4f['value']['end']);}break;case'body':_0x572d4f=as[_0x2f71('0x6a')]('me',null,_0x568b30);_0x2b602b[_0x354978](_0x572d4f[_0x2f71('0x6c')],_0x572d4f[_0x2f71('0x61')]['start'],_0x572d4f[_0x2f71('0x61')][_0x2f71('0x20')]);break;}}else{var _0x572d4f=as[_0x2f71('0x6a')](_0x39a968,_0x34551c[_0x2f71('0x6b')],_0x568b30);_0x2b602b[_0x354978](_0x572d4f[_0x2f71('0x6c')],_0x572d4f['value'][_0x2f71('0x70')],_0x572d4f[_0x2f71('0x61')]['end']);}}}else{var _0x47e5d4=_(_0x420b16['query'])[_0x2f71('0x3d')]()[_0x2f71('0x2f')](function(_0x486db9){return _[_0x2f71('0x71')](_0x3127cc,[_0x2f71('0x3c'),_0x486db9])?_0x486db9:undefined;})[_0x2f71('0x72')]()['value']();if(!_[_0x2f71('0x73')](_0x47e5d4)){_0x47e5d4[_0x2f71('0x34')](function(_0x3e3880){if(_0x3e3880==='WhatsappAccountId'){_0x408f57[_0x2f71('0x46')]('i.WhatsappAccountId\x20IN\x20?',[][_0x2f71('0x74')](_0x420b16['query'][_0x3e3880]));}else if(_0x3e3880===_0x2f71('0x75')){var _0xe131a1=JSON['parse'](_0x420b16[_0x2f71('0x3f')][_0x3e3880])[_0x2f71('0x76')];var _0x2dd81b=JSON[_0x2f71('0x77')](_0x420b16[_0x2f71('0x3f')][_0x3e3880])[_0x2f71('0x78')];_0x408f57[_0x2f71('0x46')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0xe131a1,_0x2dd81b);}else{if(_0x420b16['query'][_0x3e3880]===_0x2f71('0x79')){_0x408f57[_0x2f71('0x46')]('i.'+_0x3e3880+'\x20IS\x20NULL');}else{_0x408f57['where']('i.'+_0x3e3880+'\x20=\x20?',_0x420b16['query'][_0x3e3880]);}}});}if(_0x420b16['query']['read']){if(_0x420b16[_0x2f71('0x3f')]['read']==0x1){_0x408f57[_0x2f71('0x62')](_0x2f71('0x7a'));}else{_0x408f57['having']('`unreadMessages`\x20>\x200');}}if(_0x420b16['query'][_0x2f71('0x7b')]){_0x30397a=_['isArray'](_0x420b16[_0x2f71('0x3f')][_0x2f71('0x7b')])?_0x420b16[_0x2f71('0x3f')]['tag']:new Array(_0x420b16[_0x2f71('0x3f')]['tag']);_0x30397a[_0x2f71('0x34')](function(_0x58fda8){_0x376474['or'](_0x2f71('0x7c'),'%,'+_0x58fda8+',%');});}if(_0x420b16['query'][_0x2f71('0x7d')]){var _0x2397cd=_0x420b16['query'][_0x2f71('0x7d')][_0x2f71('0x7e')]('\x5c','\x5c\x5c')[_0x2f71('0x7e')](/'/g,'\x27\x27');if(qs[_0x2f71('0x7f')](_0x2397cd)){_0x2b602b['or'](_0x2f71('0x80'),_0x2397cd+'%')['or']('i.phone\x20LIKE\x20?',_0x2397cd+'%');}else{_0x2b602b['or'](_0x2f71('0x81'),qs[_0x2f71('0x82')](_0x2397cd))['or'](_0x2f71('0x83'),_0x2397cd+'%');}}}_0x408f57[_0x2f71('0x46')](_0x2b602b);_0x408f57[_0x2f71('0x84')](_0x2f71('0x85'));var _0xa5b59e={'type':db[_0x2f71('0x86')][_0x2f71('0x87')][_0x2f71('0x88')],'raw':!![]};var _0x279eca=_0x408f57[_0x2f71('0x89')]();_0x279eca['field'](_0x2f71('0x85'));_0x279eca[_0x2f71('0x4a')](_0x2f71('0x8a'),_0x2f71('0x8b'));if(_0x1fadd2[_0x2f71('0x44')]){_0x1fadd2[_0x2f71('0x44')][_0x2f71('0x34')](function(_0x4b9a5d){var _0x1ef41d=_0x4b9a5d[0x0]===_0x2f71('0x8c')?_0x4b9a5d[0x0]:'i.'+_0x4b9a5d[0x0];_0x408f57[_0x2f71('0x44')](_0x1ef41d,_0x4b9a5d[0x1]===_0x2f71('0x8d')?![]:!![]);});}if(!_['isEmpty'](_0x30397a)){_0x408f57[_0x2f71('0x62')](_0x376474);_0x279eca['where']('t.id\x20IN\x20?',_0x30397a);}BPromise[_0x2f71('0x8e')]()[_0x2f71('0x2a')](function(){if(!_0x158ccf){if(_0x420b16['query'][_0x2f71('0x8f')])return;_0x279eca[_0x2f71('0x46')](_0x2f71('0x90'));_0x408f57[_0x2f71('0x46')](_0x2f71('0x90'));return;}if(_0x420b16[_0x2f71('0x91')][_0x2f71('0x92')]!==_0x2f71('0x93'))return;return _0x420b16[_0x2f71('0x91')]['getWhatsappAccounts']({'attributes':['id'],'raw':!![]})['then'](function(_0x7d59fd){if(_[_0x2f71('0x73')](_0x7d59fd)){_0x279eca['where'](_0x2f71('0x94'));_0x408f57[_0x2f71('0x46')](_0x2f71('0x94'));}else{_0x279eca[_0x2f71('0x46')]('i.WhatsappAccountId\x20IN\x20?',_['map'](_0x7d59fd,'id'));_0x408f57['where']('i.WhatsappAccountId\x20IN\x20?',_[_0x2f71('0x2f')](_0x7d59fd,'id'));}});})[_0x2f71('0x2a')](function(){if(_0x420b16[_0x2f71('0x91')]['role']===_0x2f71('0x93')&&!_0x158ccf&&!_0x420b16[_0x2f71('0x3f')][_0x2f71('0x8f')])return[];return db[_0x2f71('0x95')][_0x2f71('0x3f')](_0x279eca[_0x2f71('0x96')](),_0xa5b59e);})[_0x2f71('0x2a')](function(_0x3d2f7e){_0x3f2bf9[_0x2f71('0x25')]=_0x3d2f7e['length'];if(_0x3f2bf9['count']===0x0)return[];return db[_0x2f71('0x95')][_0x2f71('0x3f')](_0x31d17d[_0x2f71('0x96')](),_0xa5b59e)[_0x2f71('0x2a')](function(_0x509c38){_0x2709b1=_[_0x2f71('0x97')](_0x509c38,'id');_0xa5b59e=_[_0x2f71('0x98')](_0xa5b59e,{'model':db[_0x2f71('0x38')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x420b16['query']['fields']){_0x1fadd2['attributes']['forEach'](function(_0x3b2c32){_0x408f57[_0x2f71('0x4a')]('i.'+_0x3b2c32);});}else{_0x408f57[_0x2f71('0x4a')](_0x2f71('0x8a'),'unreadMessages');_0x408f57[_0x2f71('0x4a')](_0x2f71('0x99'),_0x2f71('0x9a'));_0x408f57[_0x2f71('0x4a')]('a.mandatoryDisposition',_0x2f71('0x9b'));_0x408f57['field'](_0x2f71('0x9c'),_0x2f71('0x8c'));_0x408f57[_0x2f71('0x4a')](_0x2f71('0x9d'));_0x408f57[_0x2f71('0x4a')](_0x2f71('0x9e'),'Contact.firstName');_0x408f57[_0x2f71('0x4a')](_0x2f71('0x9f'),_0x2f71('0xa0'));_0x408f57['field'](_0x2f71('0xa1'),_0x2f71('0xa2'));_0x408f57[_0x2f71('0x4a')](_0x2f71('0xa3'),_0x2f71('0xa4'));_0x408f57['field']('c.mobile',_0x2f71('0xa5'));_0x408f57[_0x2f71('0x4a')]('c.fax',_0x2f71('0xa6'));_0x408f57[_0x2f71('0x4a')](_0x2f71('0xa7'),_0x2f71('0xa8'));_0x408f57[_0x2f71('0x4a')]('o.internal',_0x2f71('0xa9'));_0x408f57['field'](_0x2f71('0xaa'),_0x2f71('0x31'));}if(_0x1fadd2[_0x2f71('0x24')])_0x408f57['limit'](_0x1fadd2['limit']);if(_0x1fadd2[_0x2f71('0x22')])_0x408f57[_0x2f71('0x22')](_0x1fadd2[_0x2f71('0x22')]);return db[_0x2f71('0x95')][_0x2f71('0x3f')](_0x408f57[_0x2f71('0x96')](),_0xa5b59e);})[_0x2f71('0x2a')](function(_0x58e435){if(_0x58e435[_0x2f71('0x42')]>0x0)_0x8b7e44[_0x2f71('0x46')](_0x2f71('0xab'),_[_0x2f71('0x2f')](_0x58e435,'id'));return db[_0x2f71('0x95')][_0x2f71('0x3f')](_0x8b7e44['toString'](),_0xa5b59e)[_0x2f71('0x2a')](function(_0x2f6441){var _0x4fb4f0=_[_0x2f71('0xac')](_0x2f6441,'WhatsappInteractionId');var _0x59db07=[];_0x58e435[_0x2f71('0x34')](function(_0xb9c19a){_0x59db07[_0x2f71('0x35')](updateWhatsappInteraction(_0xb9c19a,_0x2709b1,_0x4fb4f0));});return BPromise[_0x2f71('0xad')](_0x59db07);});});})[_0x2f71('0x2a')](function(_0x3e3a1e){_0x3f2bf9[_0x2f71('0xae')]=_0x3e3a1e;return _0x3f2bf9;})[_0x2f71('0x2a')](respondWithFilteredResult(_0x1eddff,_0x1fadd2))[_0x2f71('0x36')](handleError(_0x1eddff,null));};exports[_0x2f71('0xaf')]=function(_0x2b25d9,_0x22c355){var _0x3fa3ef={'raw':![],'where':{'id':_0x2b25d9[_0x2f71('0xb0')]['id']}},_0xd08d07={};_0xd08d07[_0x2f71('0x3b')]=_[_0x2f71('0x3d')](db[_0x2f71('0x38')][_0x2f71('0x39')]);_0xd08d07[_0x2f71('0x3f')]=_[_0x2f71('0x3d')](_0x2b25d9[_0x2f71('0x3f')]);_0xd08d07['filters']=_['intersection'](_0xd08d07[_0x2f71('0x3b')],_0xd08d07[_0x2f71('0x3f')]);_0x3fa3ef[_0x2f71('0x40')]=_[_0x2f71('0x3e')](_0xd08d07[_0x2f71('0x3b')],qs[_0x2f71('0x41')](_0x2b25d9[_0x2f71('0x3f')][_0x2f71('0x41')]));_0x3fa3ef[_0x2f71('0x40')]=_0x3fa3ef['attributes']['length']?_0x3fa3ef[_0x2f71('0x40')]:_0xd08d07[_0x2f71('0x3b')];if(_0x2b25d9[_0x2f71('0x3f')]['includeAll']){_0x3fa3ef[_0x2f71('0xb1')]=[{'all':!![]}];}_0x3fa3ef=_[_0x2f71('0x98')]({},_0x3fa3ef,_0x2b25d9[_0x2f71('0xb2')]);return db['WhatsappInteraction'][_0x2f71('0x60')](_0x3fa3ef)[_0x2f71('0x2a')](handleEntityNotFound(_0x22c355,null))[_0x2f71('0x2a')](respondWithResult(_0x22c355,null))[_0x2f71('0x36')](handleError(_0x22c355,null));};exports[_0x2f71('0xb3')]=function(_0x346b73,_0x57c49c){return db['WhatsappInteraction']['create'](_0x346b73[_0x2f71('0xb4')],{})[_0x2f71('0x2a')](respondWithResult(_0x57c49c,0xc9))[_0x2f71('0x36')](handleError(_0x57c49c,null));};exports[_0x2f71('0x29')]=function(_0x41ce9a,_0x39e78d){if(_0x41ce9a[_0x2f71('0xb4')]['id']){delete _0x41ce9a[_0x2f71('0xb4')]['id'];}return db[_0x2f71('0x38')][_0x2f71('0x60')]({'where':{'id':_0x41ce9a['params']['id']}})[_0x2f71('0x2a')](handleEntityNotFound(_0x39e78d,null))[_0x2f71('0x2a')](saveUpdates(_0x41ce9a[_0x2f71('0xb4')],null))['then'](respondWithResult(_0x39e78d,null))[_0x2f71('0x36')](handleError(_0x39e78d,null));};exports[_0x2f71('0x2b')]=function(_0x86542a,_0x5f2228){return db[_0x2f71('0x38')][_0x2f71('0x60')]({'where':{'id':_0x86542a[_0x2f71('0xb0')]['id']}})[_0x2f71('0x2a')](handleEntityNotFound(_0x5f2228,null))[_0x2f71('0x2a')](removeEntity(_0x5f2228,null))['catch'](handleError(_0x5f2228,null));};exports[_0x2f71('0xb5')]=function(_0x2de066,_0x47d7ca){return db[_0x2f71('0x38')]['describe']()[_0x2f71('0x2a')](respondWithResult(_0x47d7ca,null))[_0x2f71('0x36')](handleError(_0x47d7ca,null));};exports[_0x2f71('0xb6')]=function(_0x1fb3b7,_0x1eb6c4,_0x1cfad8){return db['WhatsappMessage'][_0x2f71('0x60')]({'where':{'id':_0x1fb3b7[_0x2f71('0xb0')]['id']}})[_0x2f71('0x2a')](handleEntityNotFound(_0x1eb6c4,null))[_0x2f71('0x2a')](function(_0x116ee0){if(_0x116ee0){return _0x116ee0['addMessage'](_0x1fb3b7[_0x2f71('0xb4')]['ids'],_[_0x2f71('0xb7')](_0x1fb3b7[_0x2f71('0xb4')],[_0x2f71('0xb8'),'id'])||{});}})[_0x2f71('0x2a')](respondWithResult(_0x1eb6c4,null))[_0x2f71('0x36')](handleError(_0x1eb6c4,null));};exports[_0x2f71('0xb9')]=function(_0x3b0032,_0x5e6cda,_0x4578be){var _0x5948a0={'raw':![],'where':{}};var _0x2693e6={};var _0x27e6ca={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0x2f71('0xba')]({'where':{'id':_0x3b0032[_0x2f71('0xb0')]['id']}})[_0x2f71('0x2a')](handleEntityNotFound(_0x5e6cda,null))[_0x2f71('0x2a')](function(_0x1caee5){if(_0x1caee5){_0x2693e6['model']=_[_0x2f71('0x3d')](db[_0x2f71('0xbb')][_0x2f71('0x39')]);_0x2693e6['query']=_[_0x2f71('0x3d')](_0x3b0032[_0x2f71('0x3f')]);_0x2693e6[_0x2f71('0x47')]=_[_0x2f71('0x3e')](_0x2693e6[_0x2f71('0x3b')],_0x2693e6[_0x2f71('0x3f')]);_0x5948a0[_0x2f71('0x40')]=_[_0x2f71('0x3e')](_0x2693e6['model'],qs[_0x2f71('0x41')](_0x3b0032[_0x2f71('0x3f')][_0x2f71('0x41')]));_0x5948a0['attributes']=_0x5948a0[_0x2f71('0x40')][_0x2f71('0x42')]?_0x5948a0['attributes']:_0x2693e6[_0x2f71('0x3b')];if(!_0x3b0032[_0x2f71('0x3f')][_0x2f71('0x43')]('nolimit')){_0x5948a0[_0x2f71('0x24')]=qs[_0x2f71('0x24')](_0x3b0032[_0x2f71('0x3f')]['limit']);_0x5948a0[_0x2f71('0x22')]=qs['offset'](_0x3b0032[_0x2f71('0x3f')][_0x2f71('0x22')]);}_0x5948a0[_0x2f71('0x44')]=qs[_0x2f71('0x45')](_0x3b0032[_0x2f71('0x3f')][_0x2f71('0x45')]);_0x5948a0['where']=qs[_0x2f71('0x47')](_[_0x2f71('0x48')](_0x3b0032[_0x2f71('0x3f')],_0x2693e6[_0x2f71('0x47')]));_0x5948a0['where']['WhatsappInteractionId']=_0x1caee5['id'];if(_0x3b0032['query']['filter']){_0x5948a0[_0x2f71('0x46')]=_['merge'](_0x5948a0[_0x2f71('0x46')],{'$or':_[_0x2f71('0x2f')](_0x5948a0[_0x2f71('0x40')],function(_0x46ed28){var _0x132475={};_0x132475[_0x46ed28]={'$like':'%'+_0x3b0032[_0x2f71('0x3f')][_0x2f71('0x7d')]+'%'};return _0x132475;})});}if(_0x3b0032[_0x2f71('0x3f')][_0x2f71('0x76')]){var _0x5a8a77=_0x3b0032[_0x2f71('0x3f')]['$gte']['split'](',');var _0x30e529={};_0x30e529[_0x5a8a77[0x0]]={'$gte':moment(_0x5a8a77[0x1])[_0x2f71('0xbc')](_0x2f71('0xbd'))};_0x5948a0[_0x2f71('0x46')]=_[_0x2f71('0x98')](_0x5948a0[_0x2f71('0x46')],_0x30e529);}_0x5948a0=_[_0x2f71('0x98')]({},_0x5948a0,_0x3b0032[_0x2f71('0xb2')]);return db[_0x2f71('0xbb')][_0x2f71('0x25')]({'where':_0x5948a0[_0x2f71('0x46')]})[_0x2f71('0x2a')](function(_0x4f6b3e){_0x27e6ca[_0x2f71('0x25')]=_0x4f6b3e;if(_0x3b0032['query'][_0x2f71('0xbe')]){_0x5948a0[_0x2f71('0xb1')]=[{'all':!![]}];}return db[_0x2f71('0xbb')]['findAll'](_0x5948a0);})['then'](function(_0x14a3c4){_0x27e6ca[_0x2f71('0xae')]=_0x14a3c4;return _0x27e6ca;});}})[_0x2f71('0x2a')](respondWithFilteredResult(_0x5e6cda,_0x5948a0))[_0x2f71('0x36')](handleError(_0x5e6cda,null));};exports[_0x2f71('0xbf')]=function(_0x2e0113,_0x3db01d,_0x3b5b7b){return db['WhatsappInteraction']['find']({'where':{'id':_0x2e0113[_0x2f71('0xb0')]['id']}})[_0x2f71('0x2a')](handleEntityNotFound(_0x3db01d,null))[_0x2f71('0x2a')](function(_0x1b0215){if(_0x1b0215){return _0x1b0215['setTags'](_0x2e0113[_0x2f71('0xb4')][_0x2f71('0xb8')],_[_0x2f71('0xb7')](_0x2e0113[_0x2f71('0xb4')],[_0x2f71('0xb8'),'id'])||{})[_0x2f71('0xc0')](function(){return db[_0x2f71('0xc1')]['findAll']({'attributes':['id',_0x2f71('0x3c'),_0x2f71('0x4b')],'where':{'id':_0x2e0113[_0x2f71('0xb4')]['ids']}});})['then'](function(_0x164738){socket[_0x2f71('0xc2')](_0x2f71('0xc3'),{'id':Number(_0x2e0113[_0x2f71('0xb0')]['id']),'tags':_0x164738||[]});return{'id':Number(_0x2e0113[_0x2f71('0xb0')]['id']),'tags':_0x164738||[]};});}})[_0x2f71('0x2a')](respondWithResult(_0x3db01d,null))['catch'](handleError(_0x3db01d,null));};exports[_0x2f71('0xc4')]=function(_0x5bf7e0,_0x53286f,_0x2daccb){return db[_0x2f71('0x38')][_0x2f71('0x60')]({'where':{'id':_0x5bf7e0[_0x2f71('0xb0')]['id']}})[_0x2f71('0x2a')](handleEntityNotFound(_0x53286f,null))[_0x2f71('0x2a')](function(_0x2e4107){if(_0x2e4107){return _0x2e4107[_0x2f71('0xc4')](_0x5bf7e0['query'][_0x2f71('0xb8')]);}})[_0x2f71('0x2a')](respondWithStatusCode(_0x53286f,null))[_0x2f71('0x36')](handleError(_0x53286f,null));};exports[_0x2f71('0xc5')]=function(_0x45a0bb,_0x1e83d4){var _0x56fa5f=moment()['unix']()[_0x2f71('0x96')]();var _0x4d2aac=path[_0x2f71('0xc6')](config['root'],_0x2f71('0xc7'),'files',_0x2f71('0xc8'));var _0xf2936f=path[_0x2f71('0xc6')](config[_0x2f71('0xc9')],_0x2f71('0xc7'),_0x2f71('0xca'),_0x2f71('0xcb'));var _0x46fbb=path[_0x2f71('0xc6')](_0x4d2aac,_0x56fa5f);var _0x374f63=util[_0x2f71('0xbc')]('transcript-%d-%s.zip',_0x45a0bb['params']['id'],_0x56fa5f);var _0x5c3fb4=path[_0x2f71('0xc6')](_0x4d2aac,_0x374f63);var _0x599484=[];_0x599484[_0x2f71('0x35')]({'model':db[_0x2f71('0xcc')],'as':_0x2f71('0xcc'),'attributes':['id',_0x2f71('0x30')],'raw':!![]});_0x599484[_0x2f71('0x35')]({'model':db['CmContact'],'as':_0x2f71('0x64'),'attributes':['id','firstName',_0x2f71('0xcd')],'raw':!![]});if(_0x45a0bb[_0x2f71('0x3f')]['attachments']){_0x599484[_0x2f71('0x35')]({'model':db['Attachment'],'as':_0x2f71('0xce'),'raw':!![]});}var _0x40d2b9=[{'model':db[_0x2f71('0xbb')],'as':_0x2f71('0xcf'),'attributes':['id',_0x2f71('0xb4'),'createdAt','direction','secret',_0x2f71('0xd0')],'include':_0x599484}];_0x40d2b9[_0x2f71('0x35')]({'model':db['WhatsappAccount'],'as':'Account','attributes':['id',_0x2f71('0x3c')]});_0x40d2b9[_0x2f71('0x35')]({'model':db[_0x2f71('0xcc')],'as':'Owner','attributes':['id',_0x2f71('0x30')]});return db['WhatsappInteraction'][_0x2f71('0x60')]({'where':{'id':_0x45a0bb[_0x2f71('0xb0')]['id']},'include':_0x40d2b9})[_0x2f71('0x2a')](handleEntityNotFound(_0x1e83d4,null))['then'](function(_0x5a6907){if(_0x5a6907){var _0x262ff2=_0x5a6907[_0x2f71('0xd1')]({'plain':!![]});fs[_0x2f71('0xd2')](_0x46fbb);var _0xeaeb3={'channel':_0x2f71('0xd3'),'account':_0x262ff2[_0x2f71('0xd4')]['name'],'agent':_0x262ff2[_0x2f71('0xd5')]?_0x262ff2[_0x2f71('0xd5')][_0x2f71('0x30')]:_0x2f71('0xd6'),'createdAt':moment(_0x262ff2[_0x2f71('0x75')])['format'](_0x2f71('0xbd'))[_0x2f71('0x96')](),'closedAt':_0x262ff2[_0x2f71('0xd7')]?moment(_0x262ff2[_0x2f71('0xd8')])[_0x2f71('0xbc')](_0x2f71('0xbd'))[_0x2f71('0x96')]():'','disposition':_0x262ff2[_0x2f71('0xd9')],'messages':_(_0x262ff2[_0x2f71('0xcf')])[_0x2f71('0x7d')]({'secret':![]})[_0x2f71('0x2f')](function(_0x781aa3){if(_0x781aa3[_0x2f71('0xce')]){var _0x188556=path[_0x2f71('0xc6')](_0xf2936f,_0x781aa3[_0x2f71('0xce')][_0x2f71('0xda')]);if(fs[_0x2f71('0xdb')](_0x188556)){fs[_0x2f71('0xdc')](_0x188556)[_0x2f71('0xdd')](fs['createWriteStream'](path[_0x2f71('0xc6')](_0x46fbb,_0x781aa3[_0x2f71('0xce')]['basename'])));}}return{'date':moment(_0x781aa3[_0x2f71('0x75')])[_0x2f71('0xbc')](_0x2f71('0xbd'))['toString'](),'sender':_0x781aa3[_0x2f71('0xde')]===_0x2f71('0xdf')?_0x781aa3[_0x2f71('0xcc')]?_0x781aa3['User'][_0x2f71('0x30')]:_0x2f71('0xe0'):_0x781aa3['Contact']['firstName']+(_0x781aa3[_0x2f71('0x64')][_0x2f71('0xcd')]?'\x20'+_0x781aa3[_0x2f71('0x64')]['lastName']:''),'body':_0x781aa3[_0x2f71('0xce')]?_0x781aa3[_0x2f71('0xce')]['basename']:_0x781aa3['body'],'direction':_0x781aa3['direction']===_0x2f71('0xdf')?'A':'C','secret':_0x781aa3[_0x2f71('0xe1')],'read':_0x781aa3['read'],'attachment':_0x781aa3[_0x2f71('0xce')]};})[_0x2f71('0x61')]()};return ejs[_0x2f71('0xe2')](path['join'](config['root'],_0x2f71('0xc7'),'views',_0x2f71('0xe3')),{'interaction':_0xeaeb3})['then'](function(_0x3447c4){var _0x9bcaf9=path[_0x2f71('0xc6')](_0x46fbb,_0x2f71('0xe4')+_0x262ff2['id']+'-'+_0x56fa5f+_0x2f71('0xe5'));var _0x374a31={'path':_0x9bcaf9,'channel':_0x2f71('0xd3'),'interactionId':_0x262ff2['id']};return pdf[_0x2f71('0xe6')](_0x3447c4,_0x374a31);})['then'](function(){return new BPromise(function(_0x8a238c,_0x2dd4e8){zipdir(_0x46fbb,{'saveTo':_0x5c3fb4},function(_0x212df0,_0x34a30c){if(_0x212df0)return _0x2dd4e8(_0x212df0);return _0x8a238c(_0x34a30c);});})['then'](function(){return new BPromise(function(_0x2cd83a,_0x114a2c){rimraf(_0x46fbb,function(_0x104df2){if(_0x104df2)_0x114a2c(_0x104df2);return _0x2cd83a();});});})[_0x2f71('0x2a')](function(){return _0x1e83d4['download'](_0x5c3fb4,_0x374f63,function(_0x111883){if(_0x111883){console[_0x2f71('0xe7')](_0x2f71('0xe8'),_0x111883);}else{fs[_0x2f71('0xe9')](_0x5c3fb4);}});});});}else{return _0x1e83d4['sendStatus'](0xc8);}})[_0x2f71('0x36')](handleError(_0x1e83d4,null));};
\ No newline at end of file
index a2fa44b..509409c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3451=['remove','getUsers','then','setDataValue','Users','unreadMessages','length','catch','hook','exports','events','../../mysqldb','WhatsappMessage','setMaxListeners','save','update'];(function(_0x349f41,_0x4ccfcf){var _0x4e7c4f=function(_0x3edc7b){while(--_0x3edc7b){_0x349f41['push'](_0x349f41['shift']());}};_0x4e7c4f(++_0x4ccfcf);}(_0x3451,0x19a));var _0x1345=function(_0x15c619,_0x3b226a){_0x15c619=_0x15c619-0x0;var _0x17f571=_0x3451[_0x15c619];return _0x17f571;};'use strict';var EventEmitter=require(_0x1345('0x0'));var WhatsappInteraction=require(_0x1345('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0x1345('0x1'))['db'][_0x1345('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x1345('0x3')](0x0);var events={'afterCreate':_0x1345('0x4'),'afterUpdate':_0x1345('0x5'),'afterDestroy':_0x1345('0x6')};function emitEvent(_0x2ec0e8){return function(_0x476ef9,_0x39a5f1,_0x30f76b){_0x476ef9[_0x1345('0x7')]({'attributes':['id'],'raw':!![]})[_0x1345('0x8')](function(_0x4b90dd){_0x476ef9[_0x1345('0x9')](_0x1345('0xa'),_0x4b90dd['map'](function(_0x3bc9c4){return{'id':_0x3bc9c4['id']};}));return WhatsappMessage['findAll']({'where':{'WhatsappInteractionId':_0x476ef9['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x3e04bc){_0x476ef9['setDataValue'](_0x1345('0xb'),_0x3e04bc[_0x1345('0xc')]);WhatsappInteractionEvents['emit'](_0x2ec0e8+':'+_0x476ef9['id'],_0x476ef9);WhatsappInteractionEvents['emit'](_0x2ec0e8,_0x476ef9);_0x30f76b(null);})[_0x1345('0xd')](_0x30f76b(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappInteraction[_0x1345('0xe')](e,emitEvent(event));}}module[_0x1345('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x402f=['then','map','findAll','setDataValue','unreadMessages','length','emit','events','WhatsappInteraction','setMaxListeners','save','update','getUsers'];(function(_0x7238b9,_0x165a54){var _0x4c0011=function(_0x2a9339){while(--_0x2a9339){_0x7238b9['push'](_0x7238b9['shift']());}};_0x4c0011(++_0x165a54);}(_0x402f,0x6f));var _0xf402=function(_0x1017a8,_0x3f5853){_0x1017a8=_0x1017a8-0x0;var _0x5a3009=_0x402f[_0x1017a8];return _0x5a3009;};'use strict';var EventEmitter=require(_0xf402('0x0'));var WhatsappInteraction=require('../../mysqldb')['db'][_0xf402('0x1')];var WhatsappMessage=require('../../mysqldb')['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xf402('0x2')](0x0);var events={'afterCreate':_0xf402('0x3'),'afterUpdate':_0xf402('0x4'),'afterDestroy':'remove'};function emitEvent(_0x246c5f){return function(_0x48771a,_0x20c2cc,_0x270766){_0x48771a[_0xf402('0x5')]({'attributes':['id'],'raw':!![]})[_0xf402('0x6')](function(_0xa1b27d){_0x48771a['setDataValue']('Users',_0xa1b27d[_0xf402('0x7')](function(_0x154bd3){return{'id':_0x154bd3['id']};}));return WhatsappMessage[_0xf402('0x8')]({'where':{'WhatsappInteractionId':_0x48771a['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf402('0x6')](function(_0x18c918){_0x48771a[_0xf402('0x9')](_0xf402('0xa'),_0x18c918[_0xf402('0xb')]);WhatsappInteractionEvents['emit'](_0x246c5f+':'+_0x48771a['id'],_0x48771a);WhatsappInteractionEvents[_0xf402('0xc')](_0x246c5f,_0x48771a);_0x270766(null);})['catch'](_0x270766(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappInteraction['hook'](e,emitEvent(event));}}module['exports']=WhatsappInteractionEvents;
\ No newline at end of file
index 46d617d..5d5ece6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb995=['exports','WhatsappInteraction','whatsapp_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','util','../../config/logger','api','request-promise','../../config/environment','./whatsappInteraction.attributes'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0xb995,0xe4));var _0x5b99=function(_0xee8b52,_0x215b7a){_0xee8b52=_0xee8b52-0x0;var _0xa34b74=_0xb995[_0xee8b52];return _0xa34b74;};'use strict';var _=require('lodash');var util=require(_0x5b99('0x0'));var logger=require(_0x5b99('0x1'))(_0x5b99('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5b99('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5b99('0x4'));var attributes=require(_0x5b99('0x5'));module[_0x5b99('0x6')]=function(_0x180c43,_0x500ffe){return _0x180c43['define'](_0x5b99('0x7'),attributes,{'tableName':_0x5b99('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x430dad,_0x5f1ba6,_0x5eedc9){if(_0x430dad[_0x5b99('0x9')]('closed')){_0x430dad[_0x5b99('0xa')]=moment()[_0x5b99('0xb')](_0x5b99('0xc'));}_0x5eedc9(null,_0x430dad);}}});};
\ No newline at end of file
+var _0x8669=['rimraf','../../config/environment','define','whatsapp_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','request-promise'];(function(_0x27f1ab,_0x53a02d){var _0x219132=function(_0x3c6018){while(--_0x3c6018){_0x27f1ab['push'](_0x27f1ab['shift']());}};_0x219132(++_0x53a02d);}(_0x8669,0x79));var _0x9866=function(_0x3f8412,_0x2c5b28){_0x3f8412=_0x3f8412-0x0;var _0x5296f5=_0x8669[_0x3f8412];return _0x5296f5;};'use strict';var _=require(_0x9866('0x0'));var util=require(_0x9866('0x1'));var logger=require(_0x9866('0x2'))(_0x9866('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9866('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9866('0x5'));var config=require(_0x9866('0x6'));var attributes=require('./whatsappInteraction.attributes');module['exports']=function(_0x5b8e41,_0x35e66d){return _0x5b8e41[_0x9866('0x7')]('WhatsappInteraction',attributes,{'tableName':_0x9866('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4cc7e7,_0x5442e7,_0x420a7e){if(_0x4cc7e7[_0x9866('0x9')](_0x9866('0xa'))){_0x4cc7e7[_0x9866('0xb')]=moment()[_0x9866('0xc')](_0x9866('0xd'));}_0x420a7e(null,_0x4cc7e7);}}});};
\ No newline at end of file
index fa4e832..55be6f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1bf=['AddTags','lodash','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','then','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','WhatsappInteraction','update','body','options','raw','where','attributes','limit','UpdateWhatsappInteraction','AddTagsToWhatsappInteraction','addTags','ids','omit'];(function(_0x2defb5,_0x1cda14){var _0x229c53=function(_0x5dd408){while(--_0x5dd408){_0x2defb5['push'](_0x2defb5['shift']());}};_0x229c53(++_0x1cda14);}(_0xc1bf,0x79));var _0xfc1b=function(_0x2aecb2,_0x343312){_0x2aecb2=_0x2aecb2-0x0;var _0x3ebb80=_0xc1bf[_0x2aecb2];return _0x3ebb80;};'use strict';var _=require(_0xfc1b('0x0'));var util=require('util');var moment=require(_0xfc1b('0x1'));var BPromise=require(_0xfc1b('0x2'));var rs=require(_0xfc1b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xfc1b('0x4'));var logger=require('../../config/logger')(_0xfc1b('0x5'));var config=require(_0xfc1b('0x6'));var jayson=require(_0xfc1b('0x7'));var client=jayson['client'][_0xfc1b('0x8')]({'port':0x232a});config[_0xfc1b('0x9')]=_[_0xfc1b('0xa')](config[_0xfc1b('0x9')],{'host':_0xfc1b('0xb'),'port':0x18eb});var socket=require(_0xfc1b('0xc'))(new Redis(config['redis']));require(_0xfc1b('0xd'))[_0xfc1b('0xe')](socket);function respondWithRpcPromise(_0x1ecf78,_0x396edc,_0x5794aa){return new BPromise(function(_0x356133,_0x427ab8){return client['request'](_0x1ecf78,_0x5794aa)[_0xfc1b('0xf')](function(_0x43dab2){logger['info'](_0xfc1b('0x10'),_0x396edc,_0xfc1b('0x11'));logger[_0xfc1b('0x12')]('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x396edc,'request\x20sent',JSON[_0xfc1b('0x13')](_0x43dab2));if(_0x43dab2[_0xfc1b('0x14')]){if(_0x43dab2[_0xfc1b('0x14')][_0xfc1b('0x15')]===0x1f4){logger[_0xfc1b('0x14')]('WhatsappInteraction,\x20%s,\x20%s',_0x396edc,_0x43dab2[_0xfc1b('0x14')][_0xfc1b('0x16')]);return _0x427ab8(_0x43dab2[_0xfc1b('0x14')]['message']);}logger['error'](_0xfc1b('0x10'),_0x396edc,_0x43dab2[_0xfc1b('0x14')][_0xfc1b('0x16')]);return _0x356133(_0x43dab2[_0xfc1b('0x14')][_0xfc1b('0x16')]);}else{logger[_0xfc1b('0x17')]('WhatsappInteraction,\x20%s,\x20%s',_0x396edc,_0xfc1b('0x11'));_0x356133(_0x43dab2[_0xfc1b('0x18')][_0xfc1b('0x16')]);}})[_0xfc1b('0x19')](function(_0x39816a){logger[_0xfc1b('0x14')]('WhatsappInteraction,\x20%s,\x20%s',_0x396edc,_0x39816a);_0x427ab8(_0x39816a);});});}exports['UpdateWhatsappInteraction']=function(_0x3e4d05){var _0x2797f9=this;return new Promise(function(_0x3cb63b,_0x3eba2d){return db[_0xfc1b('0x1a')][_0xfc1b('0x1b')](_0x3e4d05[_0xfc1b('0x1c')],{'raw':_0x3e4d05[_0xfc1b('0x1d')]?_0x3e4d05['options'][_0xfc1b('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3e4d05['options']?_0x3e4d05[_0xfc1b('0x1d')][_0xfc1b('0x1f')]||null:null,'attributes':_0x3e4d05['options']?_0x3e4d05['options'][_0xfc1b('0x20')]||null:null,'limit':_0x3e4d05['options']?_0x3e4d05[_0xfc1b('0x1d')][_0xfc1b('0x21')]||null:null})['then'](function(_0x3ad811){logger[_0xfc1b('0x17')](_0xfc1b('0x22'),_0x3e4d05);logger[_0xfc1b('0x12')](_0xfc1b('0x22'),_0x3e4d05,JSON[_0xfc1b('0x13')](_0x3ad811));_0x3cb63b(_0x3ad811);})[_0xfc1b('0x19')](function(_0x2486b7){logger['error'](_0xfc1b('0x22'),_0x2486b7['message'],_0x3e4d05);_0x3eba2d(_0x2797f9[_0xfc1b('0x14')](0x1f4,_0x2486b7[_0xfc1b('0x16')]));});});};exports[_0xfc1b('0x23')]=function(_0x4a0543){return new Promise(function(_0x3a328f,_0xdd1e23){return db[_0xfc1b('0x1a')]['find']({'where':_0x4a0543[_0xfc1b('0x1d')]?_0x4a0543[_0xfc1b('0x1d')][_0xfc1b('0x1f')]||null:null})[_0xfc1b('0xf')](function(_0x281d33){if(_0x281d33){return _0x281d33[_0xfc1b('0x24')](_0x4a0543[_0xfc1b('0x1c')][_0xfc1b('0x25')],_[_0xfc1b('0x26')](_0x4a0543[_0xfc1b('0x1c')],[_0xfc1b('0x25'),'id'])||{});}})['spread'](function(_0x1d5e32){logger[_0xfc1b('0x17')](_0xfc1b('0x27'),_0x4a0543);logger[_0xfc1b('0x12')](_0xfc1b('0x27'),_0x4a0543,JSON[_0xfc1b('0x13')](_0x1d5e32));_0x3a328f(_0x1d5e32);})['catch'](function(_0x27467f){logger[_0xfc1b('0x14')](_0xfc1b('0x27'),_0x27467f['message'],_0x4a0543);_0xdd1e23(_this[_0xfc1b('0x14')](0x1f4,_0x27467f['message']));});});};
\ No newline at end of file
+var _0x5385=['stringify','error','code','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','body','options','raw','where','attributes','limit','debug','AddTagsToWhatsappInteraction','find','ids','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./whatsappInteraction.socket','register','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','WhatsappInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x26a757,_0x3c452e){var _0x29eec1=function(_0x13dad0){while(--_0x13dad0){_0x26a757['push'](_0x26a757['shift']());}};_0x29eec1(++_0x3c452e);}(_0x5385,0x1d6));var _0x5538=function(_0x5508a9,_0x42f8b3){_0x5508a9=_0x5508a9-0x0;var _0x168cc7=_0x5385[_0x5508a9];return _0x168cc7;};'use strict';var _=require(_0x5538('0x0'));var util=require(_0x5538('0x1'));var moment=require(_0x5538('0x2'));var BPromise=require('bluebird');var rs=require(_0x5538('0x3'));var fs=require('fs');var Redis=require(_0x5538('0x4'));var db=require(_0x5538('0x5'))['db'];var utils=require(_0x5538('0x6'));var logger=require(_0x5538('0x7'))(_0x5538('0x8'));var config=require(_0x5538('0x9'));var jayson=require(_0x5538('0xa'));var client=jayson['client'][_0x5538('0xb')]({'port':0x232a});config[_0x5538('0xc')]=_[_0x5538('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5538('0xe'))(new Redis(config[_0x5538('0xc')]));require(_0x5538('0xf'))[_0x5538('0x10')](socket);function respondWithRpcPromise(_0x41cee1,_0x24252b,_0x311fb1){return new BPromise(function(_0x405cce,_0x582458){return client['request'](_0x41cee1,_0x311fb1)[_0x5538('0x11')](function(_0x29c0af){logger[_0x5538('0x12')](_0x5538('0x13'),_0x24252b,_0x5538('0x14'));logger['debug'](_0x5538('0x15'),_0x24252b,_0x5538('0x14'),JSON[_0x5538('0x16')](_0x29c0af));if(_0x29c0af[_0x5538('0x17')]){if(_0x29c0af['error'][_0x5538('0x18')]===0x1f4){logger[_0x5538('0x17')](_0x5538('0x13'),_0x24252b,_0x29c0af[_0x5538('0x17')][_0x5538('0x19')]);return _0x582458(_0x29c0af[_0x5538('0x17')]['message']);}logger[_0x5538('0x17')](_0x5538('0x13'),_0x24252b,_0x29c0af['error'][_0x5538('0x19')]);return _0x405cce(_0x29c0af[_0x5538('0x17')]['message']);}else{logger[_0x5538('0x12')](_0x5538('0x13'),_0x24252b,'request\x20sent');_0x405cce(_0x29c0af[_0x5538('0x1a')][_0x5538('0x19')]);}})[_0x5538('0x1b')](function(_0x1bbbda){logger[_0x5538('0x17')](_0x5538('0x13'),_0x24252b,_0x1bbbda);_0x582458(_0x1bbbda);});});}exports[_0x5538('0x1c')]=function(_0x1cd6bc){var _0xa45bdc=this;return new Promise(function(_0x37385d,_0x5e5b1f){return db[_0x5538('0x1d')]['update'](_0x1cd6bc[_0x5538('0x1e')],{'raw':_0x1cd6bc[_0x5538('0x1f')]?_0x1cd6bc[_0x5538('0x1f')][_0x5538('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1cd6bc[_0x5538('0x1f')]?_0x1cd6bc[_0x5538('0x1f')][_0x5538('0x21')]||null:null,'attributes':_0x1cd6bc[_0x5538('0x1f')]?_0x1cd6bc[_0x5538('0x1f')][_0x5538('0x22')]||null:null,'limit':_0x1cd6bc['options']?_0x1cd6bc[_0x5538('0x1f')][_0x5538('0x23')]||null:null})[_0x5538('0x11')](function(_0x5a4392){logger['info'](_0x5538('0x1c'),_0x1cd6bc);logger[_0x5538('0x24')](_0x5538('0x1c'),_0x1cd6bc,JSON[_0x5538('0x16')](_0x5a4392));_0x37385d(_0x5a4392);})['catch'](function(_0x416419){logger[_0x5538('0x17')](_0x5538('0x1c'),_0x416419[_0x5538('0x19')],_0x1cd6bc);_0x5e5b1f(_0xa45bdc[_0x5538('0x17')](0x1f4,_0x416419[_0x5538('0x19')]));});});};exports[_0x5538('0x25')]=function(_0x5006ce){return new Promise(function(_0x4f13b1,_0x7b0bf9){return db[_0x5538('0x1d')][_0x5538('0x26')]({'where':_0x5006ce['options']?_0x5006ce[_0x5538('0x1f')][_0x5538('0x21')]||null:null})[_0x5538('0x11')](function(_0x3697cf){if(_0x3697cf){return _0x3697cf['addTags'](_0x5006ce[_0x5538('0x1e')][_0x5538('0x27')],_['omit'](_0x5006ce[_0x5538('0x1e')],[_0x5538('0x27'),'id'])||{});}})['spread'](function(_0x3992b6){logger['info'](_0x5538('0x28'),_0x5006ce);logger[_0x5538('0x24')](_0x5538('0x28'),_0x5006ce,JSON[_0x5538('0x16')](_0x3992b6));_0x4f13b1(_0x3992b6);})[_0x5538('0x1b')](function(_0x177eac){logger['error'](_0x5538('0x28'),_0x177eac[_0x5538('0x19')],_0x5006ce);_0x7b0bf9(_this[_0x5538('0x17')](0x1f4,_0x177eac['message']));});});};
\ No newline at end of file
index 50ab0f1..5c3a3ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6014=['emit','removeListener','register','whatsappInteraction:','save','remove','update'];(function(_0x3de421,_0x1b6a9e){var _0x13a3b8=function(_0x28ddd4){while(--_0x28ddd4){_0x3de421['push'](_0x3de421['shift']());}};_0x13a3b8(++_0x1b6a9e);}(_0x6014,0x154));var _0x4601=function(_0x764874,_0x3ed544){_0x764874=_0x764874-0x0;var _0x29f9d5=_0x6014[_0x764874];return _0x29f9d5;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0x4601('0x0'),_0x4601('0x1'),_0x4601('0x2')];function createListener(_0x42fc27,_0x110855){return function(_0x13bed6){_0x110855[_0x4601('0x3')](_0x42fc27,_0x13bed6);};}function removeListener(_0x3863a5,_0x25c3f9){return function(){WhatsappInteractionEvents[_0x4601('0x4')](_0x3863a5,_0x25c3f9);};}exports[_0x4601('0x5')]=function(_0x53df1e){for(var _0x75f038=0x0,_0x5df1d5=events['length'];_0x75f038<_0x5df1d5;_0x75f038++){var _0xb617cf=events[_0x75f038];var _0x356a21=createListener(_0x4601('0x6')+_0xb617cf,_0x53df1e);WhatsappInteractionEvents['on'](_0xb617cf,_0x356a21);}};
\ No newline at end of file
+var _0xb4a6=['whatsappInteraction:','./whatsappInteraction.events','save','update','register','length'];(function(_0xe0fd39,_0x4f982c){var _0x40d4a4=function(_0x4f8a41){while(--_0x4f8a41){_0xe0fd39['push'](_0xe0fd39['shift']());}};_0x40d4a4(++_0x4f982c);}(_0xb4a6,0xeb));var _0x6b4a=function(_0x29e2ba,_0x1b171f){_0x29e2ba=_0x29e2ba-0x0;var _0x5c5920=_0xb4a6[_0x29e2ba];return _0x5c5920;};'use strict';var WhatsappInteractionEvents=require(_0x6b4a('0x0'));var events=[_0x6b4a('0x1'),'remove',_0x6b4a('0x2')];function createListener(_0x399854,_0x424205){return function(_0xc95811){_0x424205['emit'](_0x399854,_0xc95811);};}function removeListener(_0x1e8d22,_0x130eab){return function(){WhatsappInteractionEvents['removeListener'](_0x1e8d22,_0x130eab);};}exports[_0x6b4a('0x3')]=function(_0x3bd6b8){for(var _0xb0624=0x0,_0xa12560=events[_0x6b4a('0x4')];_0xb0624<_0xa12560;_0xb0624++){var _0x22a157=events[_0xb0624];var _0x59bf46=createListener(_0x6b4a('0x5')+_0x22a157,_0x3bd6b8);WhatsappInteractionEvents['on'](_0x22a157,_0x59bf46);}};
\ No newline at end of file
index 10c698f..9071f4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fdd=['/:id/reject','reject','delete','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','get','index','/describe','isAuthenticated','describe','/:id','show','post','tracked','/:id/status','status','put','update','accept'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0x9fdd,0x125));var _0xd9fd=function(_0x3fa333,_0xf656c1){_0x3fa333=_0x3fa333-0x0;var _0x122718=_0x9fdd[_0x3fa333];return _0x122718;};'use strict';var multer=require('multer');var util=require(_0xd9fd('0x0'));var path=require('path');var timeout=require(_0xd9fd('0x1'));var express=require(_0xd9fd('0x2'));var router=express[_0xd9fd('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xd9fd('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./whatsappMessage.controller');router[_0xd9fd('0x5')]('/',auth['isAuthenticated'](),controller[_0xd9fd('0x6')]);router[_0xd9fd('0x5')](_0xd9fd('0x7'),auth[_0xd9fd('0x8')](),controller[_0xd9fd('0x9')]);router[_0xd9fd('0x5')](_0xd9fd('0xa'),auth[_0xd9fd('0x8')](),controller[_0xd9fd('0xb')]);router[_0xd9fd('0xc')]('/',auth[_0xd9fd('0x8')](),interaction[_0xd9fd('0xd')]('whatsapp','whatsappmessage:create'),controller['create']);router['post'](_0xd9fd('0xe'),controller[_0xd9fd('0xf')]);router[_0xd9fd('0x10')](_0xd9fd('0xa'),auth['isAuthenticated'](),controller[_0xd9fd('0x11')]);router[_0xd9fd('0x10')]('/:id/accept',auth[_0xd9fd('0x8')](),controller[_0xd9fd('0x12')]);router[_0xd9fd('0x10')](_0xd9fd('0x13'),auth[_0xd9fd('0x8')](),controller[_0xd9fd('0x14')]);router[_0xd9fd('0x15')](_0xd9fd('0xa'),auth[_0xd9fd('0x8')](),controller[_0xd9fd('0x16')]);module[_0xd9fd('0x17')]=router;
\ No newline at end of file
+var _0x1146=['/:id/status','put','/:id','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','./whatsappMessage.controller','get','/describe','describe','isAuthenticated','whatsapp','whatsappmessage:create','create','post'];(function(_0x2c0a07,_0x56553b){var _0x515ba5=function(_0x384f1e){while(--_0x384f1e){_0x2c0a07['push'](_0x2c0a07['shift']());}};_0x515ba5(++_0x56553b);}(_0x1146,0xec));var _0x6114=function(_0x1fcd76,_0x14d9d3){_0x1fcd76=_0x1fcd76-0x0;var _0x3b11b4=_0x1146[_0x1fcd76];return _0x3b11b4;};'use strict';var multer=require(_0x6114('0x0'));var util=require(_0x6114('0x1'));var path=require(_0x6114('0x2'));var timeout=require(_0x6114('0x3'));var express=require(_0x6114('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6114('0x5'));router[_0x6114('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6114('0x6')](_0x6114('0x7'),auth['isAuthenticated'](),controller[_0x6114('0x8')]);router['get']('/:id',auth[_0x6114('0x9')](),controller['show']);router['post']('/',auth[_0x6114('0x9')](),interaction['tracked'](_0x6114('0xa'),_0x6114('0xb')),controller[_0x6114('0xc')]);router[_0x6114('0xd')](_0x6114('0xe'),controller['status']);router[_0x6114('0xf')](_0x6114('0x10'),auth[_0x6114('0x9')](),controller[_0x6114('0x11')]);router[_0x6114('0xf')](_0x6114('0x12'),auth[_0x6114('0x9')](),controller[_0x6114('0x13')]);router[_0x6114('0xf')](_0x6114('0x14'),auth['isAuthenticated'](),controller[_0x6114('0x15')]);router[_0x6114('0x16')](_0x6114('0x10'),auth[_0x6114('0x9')](),controller[_0x6114('0x17')]);module[_0x6114('0x18')]=router;
\ No newline at end of file
index 1174cfb..abf2443 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x871e=['DATE','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out','STRING'];(function(_0x2a2a7f,_0x533d20){var _0x349f84=function(_0x4eb6a6){while(--_0x4eb6a6){_0x2a2a7f['push'](_0x2a2a7f['shift']());}};_0x349f84(++_0x533d20);}(_0x871e,0x1ba));var _0xe871=function(_0x3478cf,_0x28f215){_0x3478cf=_0x3478cf-0x0;var _0x13e61b=_0x871e[_0x3478cf];return _0x13e61b;};'use strict';var Sequelize=require(_0xe871('0x0'));module[_0xe871('0x1')]={'body':{'type':Sequelize[_0xe871('0x2')](_0xe871('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xe871('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xe871('0x5')]('in',_0xe871('0x6')),'defaultValue':_0xe871('0x6'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0xe871('0x7')]},'readAt':{'type':Sequelize[_0xe871('0x8')]},'secret':{'type':Sequelize[_0xe871('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xe871('0x7')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xf273=['TEXT','medium','BOOLEAN','out','STRING','DATE','sequelize','exports'];(function(_0x46d0c9,_0x526bfa){var _0x174506=function(_0x654bc6){while(--_0x654bc6){_0x46d0c9['push'](_0x46d0c9['shift']());}};_0x174506(++_0x526bfa);}(_0xf273,0xce));var _0x3f27=function(_0x59518b,_0x1dfc5e){_0x59518b=_0x59518b-0x0;var _0x52671f=_0xf273[_0x59518b];return _0x52671f;};'use strict';var Sequelize=require(_0x3f27('0x0'));module[_0x3f27('0x1')]={'body':{'type':Sequelize[_0x3f27('0x2')](_0x3f27('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x3f27('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x3f27('0x5')),'defaultValue':_0x3f27('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x3f27('0x6')](0xbe)},'phone':{'type':Sequelize[_0x3f27('0x6')]},'readAt':{'type':Sequelize[_0x3f27('0x7')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0x3f27('0x6')]},'providerResponse':{'type':Sequelize[_0x3f27('0x2')]}};
\ No newline at end of file
index 6c6c285..4bb9798 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf757=['util','path','sox','to-csv','ejs','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./whatsappMessage.socket','register','jayson/promise','client','http','request','then','info','WhatsappMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','count','limit','set','Content-Range','apply','reject','update','destroy','name','send','index','map','WhatsappMessage','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','create','body','find','describe','accept','whatsapp','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','WhatsappInteraction','WhatsappInteractionId','read1stAt','format','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','whatsapp-interactions','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','User','event','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','twilio','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache'];(function(_0x3ee5bb,_0x2daa85){var _0x227483=function(_0x102717){while(--_0x102717){_0x3ee5bb['push'](_0x3ee5bb['shift']());}};_0x227483(++_0x2daa85);}(_0xf757,0x89));var _0x7f75=function(_0x173f10,_0x35db61){_0x173f10=_0x173f10-0x0;var _0x53142d=_0xf757[_0x173f10];return _0x53142d;};'use strict';var emlformat=require(_0x7f75('0x0'));var rimraf=require(_0x7f75('0x1'));var zipdir=require(_0x7f75('0x2'));var jsonpatch=require(_0x7f75('0x3'));var rp=require(_0x7f75('0x4'));var moment=require(_0x7f75('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x7f75('0x6'));var util=require(_0x7f75('0x7'));var path=require(_0x7f75('0x8'));var sox=require(_0x7f75('0x9'));var csv=require(_0x7f75('0xa'));var ejs=require(_0x7f75('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7f75('0xc'));var squel=require('squel');var crypto=require(_0x7f75('0xd'));var jsforce=require(_0x7f75('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7f75('0xf'));var Redis=require(_0x7f75('0x10'));var authService=require(_0x7f75('0x11'));var qs=require(_0x7f75('0x12'));var as=require(_0x7f75('0x13'));var hardwareService=require(_0x7f75('0x14'));var logger=require(_0x7f75('0x15'))('api');var utils=require(_0x7f75('0x16'));var config=require(_0x7f75('0x17'));var licenseUtil=require(_0x7f75('0x18'));var db=require(_0x7f75('0x19'))['db'];config[_0x7f75('0x1a')]=_['defaults'](config['redis'],{'host':_0x7f75('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x7f75('0x1c'))[_0x7f75('0x1d')](socket);var jayson=require(_0x7f75('0x1e'));var client=jayson[_0x7f75('0x1f')][_0x7f75('0x20')]({'port':0x232c});var client9002=jayson[_0x7f75('0x1f')][_0x7f75('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x238e1d,_0x34cc91,_0x335a8f,_0xe85d3c){return new BPromise(function(_0x534d98,_0x12b1c2){var _0x45fb73=_0xe85d3c||client;return _0x45fb73[_0x7f75('0x21')](_0x238e1d,_0x335a8f)[_0x7f75('0x22')](function(_0x2c8044){logger[_0x7f75('0x23')](_0x7f75('0x24'),_0x34cc91,'request\x20sent');logger[_0x7f75('0x25')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x34cc91,_0x7f75('0x26'),JSON[_0x7f75('0x27')](_0x2c8044));if(_0x2c8044['error']){if(_0x2c8044[_0x7f75('0x28')][_0x7f75('0x29')]===0x1f4){logger[_0x7f75('0x28')]('WhatsappMessage,\x20%s,\x20%s',_0x34cc91,_0x2c8044[_0x7f75('0x28')][_0x7f75('0x2a')]);return _0x12b1c2(_0x2c8044['error'][_0x7f75('0x2a')]);}logger[_0x7f75('0x28')]('WhatsappMessage,\x20%s,\x20%s',_0x34cc91,_0x2c8044[_0x7f75('0x28')][_0x7f75('0x2a')]);return _0x534d98(_0x2c8044['error'][_0x7f75('0x2a')]);}else{logger[_0x7f75('0x23')](_0x7f75('0x24'),_0x34cc91,'request\x20sent');_0x534d98(_0x2c8044[_0x7f75('0x2b')][_0x7f75('0x2a')]);}})[_0x7f75('0x2c')](function(_0x22cd00){logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x34cc91,_0x22cd00);_0x12b1c2(_0x22cd00);});});}function respondWithStatusCode(_0x354f77,_0x50f5a7){_0x50f5a7=_0x50f5a7||0xcc;return function(_0x28c695){if(_0x28c695){return _0x354f77[_0x7f75('0x2d')](_0x50f5a7);}return _0x354f77[_0x7f75('0x2e')](_0x50f5a7)[_0x7f75('0x2f')]();};}function respondWithResult(_0x1f100e,_0x501920){_0x501920=_0x501920||0xc8;return function(_0x247120){if(_0x247120){return _0x1f100e[_0x7f75('0x2e')](_0x501920)[_0x7f75('0x30')](_0x247120);}};}function respondWithFilteredResult(_0x140a03,_0x224352){return function(_0x288340){if(_0x288340){var _0xe397dd=typeof _0x224352[_0x7f75('0x31')]==='undefined'&&typeof _0x224352['limit']==='undefined';var _0xc67c30=_0x288340[_0x7f75('0x32')];var _0x2ee92d=_0xe397dd?0x0:_0x224352[_0x7f75('0x31')];var _0x45025c=_0xe397dd?_0x288340['count']:_0x224352[_0x7f75('0x31')]+_0x224352[_0x7f75('0x33')];var _0x16c553;if(_0x45025c>=_0xc67c30){_0x45025c=_0xc67c30;_0x16c553=0xc8;}else{_0x16c553=0xce;}_0x140a03[_0x7f75('0x2e')](_0x16c553);return _0x140a03[_0x7f75('0x34')](_0x7f75('0x35'),_0x2ee92d+'-'+_0x45025c+'/'+_0xc67c30)[_0x7f75('0x30')](_0x288340);}return null;};}function patchUpdates(_0xde3fa4){return function(_0x4feb04){try{jsonpatch[_0x7f75('0x36')](_0x4feb04,_0xde3fa4,!![]);}catch(_0x56cc62){return BPromise[_0x7f75('0x37')](_0x56cc62);}return _0x4feb04['save']();};}function saveUpdates(_0x5dd7e9,_0x1859a0){return function(_0x1c199d){if(_0x1c199d){return _0x1c199d[_0x7f75('0x38')](_0x5dd7e9)[_0x7f75('0x22')](function(_0x316535){return _0x316535;});}return null;};}function removeEntity(_0x1fc439,_0x59ce9f){return function(_0x45386d){if(_0x45386d){return _0x45386d[_0x7f75('0x39')]()[_0x7f75('0x22')](function(){_0x1fc439['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b6159,_0x4a6da2){return function(_0xbe7195){if(!_0xbe7195){_0x3b6159[_0x7f75('0x2d')](0x194);}return _0xbe7195;};}function handleError(_0x454397,_0x136e30){_0x136e30=_0x136e30||0x1f4;return function(_0x3b2796){logger[_0x7f75('0x28')](_0x3b2796['stack']);if(_0x3b2796[_0x7f75('0x3a')]){delete _0x3b2796[_0x7f75('0x3a')];}_0x454397['status'](_0x136e30)[_0x7f75('0x3b')](_0x3b2796);};}exports[_0x7f75('0x3c')]=function(_0x119780,_0x2d96d2){var _0x4f5942={},_0xc4c7b7={},_0x3decd5={'count':0x0,'rows':[]};var _0x473391=_[_0x7f75('0x3d')](db[_0x7f75('0x3e')]['rawAttributes'],function(_0x1e8bf6){return{'name':_0x1e8bf6['fieldName'],'type':_0x1e8bf6[_0x7f75('0x3f')][_0x7f75('0x40')]};});_0xc4c7b7[_0x7f75('0x41')]=_['map'](_0x473391,_0x7f75('0x3a'));_0xc4c7b7[_0x7f75('0x42')]=_[_0x7f75('0x43')](_0x119780[_0x7f75('0x42')]);_0xc4c7b7[_0x7f75('0x44')]=_[_0x7f75('0x45')](_0xc4c7b7[_0x7f75('0x41')],_0xc4c7b7[_0x7f75('0x42')]);_0x4f5942[_0x7f75('0x46')]=_[_0x7f75('0x45')](_0xc4c7b7[_0x7f75('0x41')],qs[_0x7f75('0x47')](_0x119780[_0x7f75('0x42')][_0x7f75('0x47')]));_0x4f5942['attributes']=_0x4f5942['attributes'][_0x7f75('0x48')]?_0x4f5942[_0x7f75('0x46')]:_0xc4c7b7[_0x7f75('0x41')];if(!_0x119780[_0x7f75('0x42')][_0x7f75('0x49')](_0x7f75('0x4a'))){_0x4f5942[_0x7f75('0x33')]=qs[_0x7f75('0x33')](_0x119780['query'][_0x7f75('0x33')]);_0x4f5942[_0x7f75('0x31')]=qs['offset'](_0x119780[_0x7f75('0x42')][_0x7f75('0x31')]);}_0x4f5942[_0x7f75('0x4b')]=qs[_0x7f75('0x4c')](_0x119780['query']['sort']);_0x4f5942[_0x7f75('0x4d')]=qs['filters'](_[_0x7f75('0x4e')](_0x119780[_0x7f75('0x42')],_0xc4c7b7[_0x7f75('0x44')]),_0x473391);if(_0x119780[_0x7f75('0x42')][_0x7f75('0x4f')]){_0x4f5942[_0x7f75('0x4d')]=_[_0x7f75('0x50')](_0x4f5942['where'],{'$or':_['map'](_0x473391,function(_0x93e148){if(_0x93e148[_0x7f75('0x3f')]!==_0x7f75('0x51')){var _0x5d8250={};_0x5d8250[_0x93e148[_0x7f75('0x3a')]]={'$like':'%'+_0x119780[_0x7f75('0x42')]['filter']+'%'};return _0x5d8250;}})});}_0x4f5942=_[_0x7f75('0x50')]({},_0x4f5942,_0x119780['options']);var _0x3a5f87={'where':_0x4f5942[_0x7f75('0x4d')]};return db['WhatsappMessage'][_0x7f75('0x32')](_0x3a5f87)[_0x7f75('0x22')](function(_0x1ccfe1){_0x3decd5[_0x7f75('0x32')]=_0x1ccfe1;if(_0x119780[_0x7f75('0x42')][_0x7f75('0x52')]){_0x4f5942[_0x7f75('0x53')]=[{'all':!![]}];}return db[_0x7f75('0x3e')][_0x7f75('0x54')](_0x4f5942);})['then'](function(_0x453945){_0x3decd5[_0x7f75('0x55')]=_0x453945;return _0x3decd5;})[_0x7f75('0x22')](respondWithFilteredResult(_0x2d96d2,_0x4f5942))[_0x7f75('0x2c')](handleError(_0x2d96d2,null));};exports[_0x7f75('0x56')]=function(_0x28ec2b,_0x307a4a){var _0x50af00={'raw':!![],'where':{'id':_0x28ec2b[_0x7f75('0x57')]['id']}},_0x15b121={};_0x15b121['model']=_[_0x7f75('0x43')](db['WhatsappMessage']['rawAttributes']);_0x15b121[_0x7f75('0x42')]=_[_0x7f75('0x43')](_0x28ec2b[_0x7f75('0x42')]);_0x15b121[_0x7f75('0x44')]=_[_0x7f75('0x45')](_0x15b121[_0x7f75('0x41')],_0x15b121[_0x7f75('0x42')]);_0x50af00[_0x7f75('0x46')]=_[_0x7f75('0x45')](_0x15b121[_0x7f75('0x41')],qs['fields'](_0x28ec2b[_0x7f75('0x42')][_0x7f75('0x47')]));_0x50af00[_0x7f75('0x46')]=_0x50af00[_0x7f75('0x46')][_0x7f75('0x48')]?_0x50af00[_0x7f75('0x46')]:_0x15b121[_0x7f75('0x41')];if(_0x28ec2b[_0x7f75('0x42')]['includeAll']){_0x50af00[_0x7f75('0x53')]=[{'all':!![]}];}_0x50af00=_[_0x7f75('0x50')]({},_0x50af00,_0x28ec2b['options']);return db[_0x7f75('0x3e')]['find'](_0x50af00)[_0x7f75('0x22')](handleEntityNotFound(_0x307a4a,null))[_0x7f75('0x22')](respondWithResult(_0x307a4a,null))[_0x7f75('0x2c')](handleError(_0x307a4a,null));};exports[_0x7f75('0x58')]=function(_0x3f00e0,_0x1025fe){return db[_0x7f75('0x3e')][_0x7f75('0x58')](_0x3f00e0[_0x7f75('0x59')],{})[_0x7f75('0x22')](respondWithResult(_0x1025fe,0xc9))[_0x7f75('0x2c')](handleError(_0x1025fe,null));};exports[_0x7f75('0x38')]=function(_0x5d0910,_0x21f1f2){if(_0x5d0910[_0x7f75('0x59')]['id']){delete _0x5d0910[_0x7f75('0x59')]['id'];}return db[_0x7f75('0x3e')][_0x7f75('0x5a')]({'where':{'id':_0x5d0910['params']['id']}})['then'](handleEntityNotFound(_0x21f1f2,null))[_0x7f75('0x22')](saveUpdates(_0x5d0910['body'],null))['then'](respondWithResult(_0x21f1f2,null))['catch'](handleError(_0x21f1f2,null));};exports[_0x7f75('0x39')]=function(_0xe9b4fa,_0x348bcf){return db[_0x7f75('0x3e')][_0x7f75('0x5a')]({'where':{'id':_0xe9b4fa[_0x7f75('0x57')]['id']}})[_0x7f75('0x22')](handleEntityNotFound(_0x348bcf,null))[_0x7f75('0x22')](removeEntity(_0x348bcf,null))[_0x7f75('0x2c')](handleError(_0x348bcf,null));};exports[_0x7f75('0x5b')]=function(_0x123b6c,_0x15700d){return db[_0x7f75('0x3e')]['describe']()[_0x7f75('0x22')](respondWithResult(_0x15700d,null))[_0x7f75('0x2c')](handleError(_0x15700d,null));};var interaction_log=require(_0x7f75('0x15'))('whatsapp-interactions');exports[_0x7f75('0x5c')]=function(_0x2621d6,_0x5a6b6b,_0xc0c0ee){var _0x38268f={'agent':{},'channel':_0x7f75('0x5d')};if(_0x2621d6[_0x7f75('0x59')]['id']){delete _0x2621d6['body']['id'];}_0x2621d6[_0x7f75('0x59')][_0x7f75('0x5e')]=!![];_0x2621d6[_0x7f75('0x59')][_0x7f75('0x5f')]=moment()['format'](_0x7f75('0x60'));_0x2621d6[_0x7f75('0x59')][_0x7f75('0x61')]=_0x2621d6[_0x7f75('0x59')][_0x7f75('0x61')]||_0x2621d6['user']['id'];_0x38268f[_0x7f75('0x62')]['id']=_0x2621d6[_0x7f75('0x59')][_0x7f75('0x61')];return db[_0x7f75('0x3e')]['find']({'where':{'id':_0x2621d6[_0x7f75('0x57')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5a6b6b,null))[_0x7f75('0x22')](saveUpdates(_0x2621d6[_0x7f75('0x59')],null))[_0x7f75('0x22')](function(_0x1daa30){if(_0x1daa30){_0x38268f[_0x7f75('0x2a')]=_0x1daa30[_0x7f75('0x63')]({'plain':!![]});return db[_0x7f75('0x64')]['find']({'where':{'id':_0x1daa30[_0x7f75('0x65')]}});}return null;})[_0x7f75('0x22')](handleEntityNotFound(_0x5a6b6b,null))[_0x7f75('0x22')](function(_0x349f21){if(_0x349f21){return _0x349f21[_0x7f75('0x38')]({'UserId':_0x2621d6['body'][_0x7f75('0x61')],'read1stAt':_['isNil'](_0x349f21[_0x7f75('0x66')])?moment()[_0x7f75('0x67')](_0x7f75('0x60')):undefined});}return null;})['then'](function(_0x4b1f2b){if(_0x4b1f2b){_0x38268f[_0x7f75('0x68')]=_0x4b1f2b[_0x7f75('0x63')]({'plain':!![]});interaction_log[_0x7f75('0x23')](_0x7f75('0x69'),_0x2621d6['user']['id'],_0x2621d6['user']['name'],_0x2621d6[_0x7f75('0x6a')]['role'],_0x38268f[_0x7f75('0x68')]['id'],_0x2621d6['body']?JSON[_0x7f75('0x27')](_0x2621d6[_0x7f75('0x59')]):_0x7f75('0x6b'));return respondWithRpcPromise(_0x7f75('0x6c'),_0x7f75('0x6d'),_0x38268f);}return null;})[_0x7f75('0x22')](function(_0x29dede){var _0x4cfb3d=_0x7f75('0x6e')+_0x29dede[_0x7f75('0x2a')][_0x7f75('0x6f')];return db['sequelize'][_0x7f75('0x42')](_0x4cfb3d,{'type':db[_0x7f75('0x70')][_0x7f75('0x71')][_0x7f75('0x72')],'raw':!![]})['then'](function(_0x185ef2){return _0x185ef2;});})[_0x7f75('0x22')](function(_0x54f1cf){if(_0x54f1cf){_0x38268f[_0x7f75('0x2a')][_0x7f75('0x73')]=_0x54f1cf[0x0];if(!_0x2621d6[_0x7f75('0x59')][_0x7f75('0x61')])return;return db['User'][_0x7f75('0x5a')]({'where':{'id':_0x2621d6[_0x7f75('0x59')]['UserId'],'role':_0x7f75('0x62')},'attributes':['id',_0x7f75('0x3a'),_0x7f75('0x74'),_0x7f75('0x75'),_0x7f75('0x76')],'raw':!![]});}return null;})[_0x7f75('0x22')](function(_0x15f584){if(!_0x15f584)return null;_0x38268f['message'][_0x7f75('0x62')]=_0x15f584;return _0x38268f;})[_0x7f75('0x22')](function(_0x4b11ce){if(_0x4b11ce){if(_0x2621d6[_0x7f75('0x59')][_0x7f75('0x77')]){_0x38268f[_0x7f75('0x2a')][_0x7f75('0x78')]=util[_0x7f75('0x67')](_0x7f75('0x79'),_0x2621d6[_0x7f75('0x6a')][_0x7f75('0x3a')]);_0x38268f[_0x7f75('0x2a')]['channel']=_0x38268f[_0x7f75('0x7a')];_0x38268f[_0x7f75('0x2a')][_0x7f75('0x7b')]=_0x38268f[_0x7f75('0x7a')];_0x38268f['message']['event']='accept';return respondWithRpcPromise(_0x7f75('0x7c'),'EventManager',{'event':_0x7f75('0x7d'),'message':_0x38268f[_0x7f75('0x2a')]},client9002)[_0x7f75('0x22')](function(){return _0x38268f;});}return _0x38268f;}return null;})[_0x7f75('0x22')](respondWithResult(_0x5a6b6b,null))['catch'](handleError(_0x5a6b6b,null));};var interaction_log=require('../../config/logger')(_0x7f75('0x7e'));exports['reject']=function(_0x10badf,_0x1fd86f,_0x5a5a7f){var _0x574476={'agent':{},'channel':'whatsapp'};if(_0x10badf[_0x7f75('0x59')]['id']){delete _0x10badf['body']['id'];}_0x10badf['body'][_0x7f75('0x61')]=_0x10badf['body'][_0x7f75('0x61')]||_0x10badf['user']['id'];_0x574476['agent']['id']=_0x10badf[_0x7f75('0x59')][_0x7f75('0x61')];return db[_0x7f75('0x3e')][_0x7f75('0x5a')]({'where':{'id':_0x10badf[_0x7f75('0x57')]['id'],'UserId':null}})[_0x7f75('0x22')](handleEntityNotFound(_0x1fd86f,null))[_0x7f75('0x22')](function(_0x51f91b){if(_0x51f91b){_0x574476[_0x7f75('0x2a')]=_0x51f91b[_0x7f75('0x63')]({'plain':!![]});return db[_0x7f75('0x64')][_0x7f75('0x5a')]({'where':{'id':_0x51f91b[_0x7f75('0x65')]}});}return null;})[_0x7f75('0x22')](handleEntityNotFound(_0x1fd86f,null))[_0x7f75('0x22')](function(_0x34f7ef){if(_0x34f7ef){_0x574476[_0x7f75('0x68')]=_0x34f7ef['get']({'plain':!![]});interaction_log[_0x7f75('0x23')](_0x7f75('0x7f'),_0x10badf[_0x7f75('0x6a')]['id'],_0x10badf[_0x7f75('0x6a')]['name'],_0x10badf['user'][_0x7f75('0x80')],_0x574476[_0x7f75('0x68')]['id'],_0x10badf[_0x7f75('0x59')]?JSON[_0x7f75('0x27')](_0x10badf['body']):_0x7f75('0x6b'));return respondWithRpcPromise(_0x7f75('0x81'),_0x7f75('0x82'),_0x574476);}return null;})[_0x7f75('0x22')](function(_0x407d4c){var _0x3485dc=_0x7f75('0x6e')+_0x407d4c[_0x7f75('0x2a')]['ContactId'];return db['sequelize'][_0x7f75('0x42')](_0x3485dc,{'type':db[_0x7f75('0x70')]['QueryTypes'][_0x7f75('0x72')],'raw':!![]})['then'](function(_0x5ddedf){return _0x5ddedf;});})['then'](function(_0x5f584a){if(_0x5f584a){_0x574476[_0x7f75('0x2a')][_0x7f75('0x73')]=_0x5f584a[0x0];if(!_0x10badf[_0x7f75('0x59')][_0x7f75('0x61')])return;return db[_0x7f75('0x83')][_0x7f75('0x5a')]({'where':{'id':_0x10badf[_0x7f75('0x59')][_0x7f75('0x61')],'role':_0x7f75('0x62')},'attributes':['id','name',_0x7f75('0x74'),_0x7f75('0x75'),'internal'],'raw':!![]});}return null;})[_0x7f75('0x22')](function(_0x1d112c){if(!_0x1d112c)return null;_0x574476[_0x7f75('0x2a')][_0x7f75('0x62')]=_0x1d112c;return _0x574476;})[_0x7f75('0x22')](function(_0x2389b8){if(_0x2389b8){_0x2389b8[_0x7f75('0x2a')][_0x7f75('0x78')]=util['format']('SIP/%s',_0x10badf[_0x7f75('0x6a')][_0x7f75('0x3a')]);_0x2389b8[_0x7f75('0x2a')]['channel']=_0x574476['channel'];_0x2389b8[_0x7f75('0x2a')][_0x7f75('0x7b')]=_0x574476['channel'];_0x2389b8[_0x7f75('0x2a')][_0x7f75('0x84')]=_0x7f75('0x37');respondWithRpcPromise(_0x7f75('0x7c'),'EventManager',{'event':_0x7f75('0x85'),'message':_0x2389b8[_0x7f75('0x2a')]},client9002);return _0x574476;}return null;})['then'](respondWithResult(_0x1fd86f,null))[_0x7f75('0x2c')](handleError(_0x1fd86f,null));};exports['status']=function(_0x40f605,_0x299909,_0x3cec6f){if(_0x40f605[_0x7f75('0x59')]['id']){delete _0x40f605[_0x7f75('0x59')]['id'];}var _0x8877ab;return db[_0x7f75('0x3e')][_0x7f75('0x5a')]({'where':{'id':_0x40f605[_0x7f75('0x57')]['id']}})[_0x7f75('0x22')](handleEntityNotFound(_0x299909,null))[_0x7f75('0x22')](function(_0x52ba66){if(_0x52ba66){_0x8877ab=_0x52ba66;return db[_0x7f75('0x86')]['find']({'where':{'id':_0x52ba66[_0x7f75('0x87')]}});}})[_0x7f75('0x22')](handleEntityNotFound(_0x299909,null))[_0x7f75('0x22')](function(_0x46df92){if(_0x46df92){logger['debug'](_0x7f75('0x88'),_0x7f75('0x2e'),_0x7f75('0x89'),_0x46df92['type'],util[_0x7f75('0x8a')](_0x40f605[_0x7f75('0x59')],{'showHidden':![],'depth':null}));switch(_0x46df92[_0x7f75('0x3f')]){case'twilio':if(_0x40f605[_0x7f75('0x59')]['MessageSid']&&_0x40f605[_0x7f75('0x59')][_0x7f75('0x8b')]===_0x8877ab[_0x7f75('0x8c')]&&_0x40f605[_0x7f75('0x59')][_0x7f75('0x8d')]&&_0x40f605['body'][_0x7f75('0x8d')]===_0x7f75('0x5e')){return _0x8877ab[_0x7f75('0x38')]({'read':!![]});}else{logger['error'](_0x7f75('0x8e'),_0x7f75('0x2e'),_0x7f75('0x8f'),util[_0x7f75('0x8a')](_0x40f605[_0x7f75('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x8877ab;}})['then'](respondWithResult(_0x299909,null))[_0x7f75('0x2c')](handleError(_0x299909,null));};
\ No newline at end of file
+var _0xed08=['http','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','json','offset','count','set','Content-Range','apply','reject','save','then','destroy','end','name','index','map','WhatsappMessage','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','rawAttributes','find','create','update','body','params','accept','whatsapp','read','YYYY-MM-DD\x20HH:mm:ss','UserId','get','WhatsappInteraction','WhatsappInteractionId','read1stAt','format','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','interface','SIP/%s','channel','event','EventManager','whatsapp-interactions','agent','rejectMessage','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','messageId','MessageStatus','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','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','../../mysqldb','redis','defaults','localhost','./whatsappMessage.socket','jayson/promise','client'];(function(_0xcdd118,_0x2d8214){var _0x17af4b=function(_0xa6a607){while(--_0xa6a607){_0xcdd118['push'](_0xcdd118['shift']());}};_0x17af4b(++_0x2d8214);}(_0xed08,0x67));var _0x8ed0=function(_0x1d5f47,_0x570261){_0x1d5f47=_0x1d5f47-0x0;var _0x5a68a8=_0xed08[_0x1d5f47];return _0x5a68a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8ed0('0x0'));var zipdir=require(_0x8ed0('0x1'));var jsonpatch=require(_0x8ed0('0x2'));var rp=require(_0x8ed0('0x3'));var moment=require(_0x8ed0('0x4'));var BPromise=require(_0x8ed0('0x5'));var Mustache=require(_0x8ed0('0x6'));var util=require(_0x8ed0('0x7'));var path=require(_0x8ed0('0x8'));var sox=require(_0x8ed0('0x9'));var csv=require(_0x8ed0('0xa'));var ejs=require(_0x8ed0('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8ed0('0xc'));var squel=require(_0x8ed0('0xd'));var crypto=require(_0x8ed0('0xe'));var jsforce=require(_0x8ed0('0xf'));var deskjs=require(_0x8ed0('0x10'));var toCsv=require(_0x8ed0('0xa'));var querystring=require(_0x8ed0('0x11'));var Papa=require('papaparse');var Redis=require(_0x8ed0('0x12'));var authService=require(_0x8ed0('0x13'));var qs=require(_0x8ed0('0x14'));var as=require(_0x8ed0('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8ed0('0x16'))(_0x8ed0('0x17'));var utils=require(_0x8ed0('0x18'));var config=require(_0x8ed0('0x19'));var licenseUtil=require(_0x8ed0('0x1a'));var db=require(_0x8ed0('0x1b'))['db'];config[_0x8ed0('0x1c')]=_[_0x8ed0('0x1d')](config[_0x8ed0('0x1c')],{'host':_0x8ed0('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8ed0('0x1c')]));require(_0x8ed0('0x1f'))['register'](socket);var jayson=require(_0x8ed0('0x20'));var client=jayson[_0x8ed0('0x21')]['http']({'port':0x232c});var client9002=jayson[_0x8ed0('0x21')][_0x8ed0('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x5eda69,_0x72bf7a,_0x280676,_0x48b5a7){return new BPromise(function(_0x2792c8,_0x42afeb){var _0xb255c=_0x48b5a7||client;return _0xb255c['request'](_0x5eda69,_0x280676)['then'](function(_0x5ef89c){logger[_0x8ed0('0x23')](_0x8ed0('0x24'),_0x72bf7a,_0x8ed0('0x25'));logger[_0x8ed0('0x26')](_0x8ed0('0x27'),_0x72bf7a,_0x8ed0('0x25'),JSON[_0x8ed0('0x28')](_0x5ef89c));if(_0x5ef89c[_0x8ed0('0x29')]){if(_0x5ef89c[_0x8ed0('0x29')]['code']===0x1f4){logger['error'](_0x8ed0('0x24'),_0x72bf7a,_0x5ef89c[_0x8ed0('0x29')]['message']);return _0x42afeb(_0x5ef89c[_0x8ed0('0x29')][_0x8ed0('0x2a')]);}logger[_0x8ed0('0x29')](_0x8ed0('0x24'),_0x72bf7a,_0x5ef89c['error'][_0x8ed0('0x2a')]);return _0x2792c8(_0x5ef89c[_0x8ed0('0x29')]['message']);}else{logger[_0x8ed0('0x23')](_0x8ed0('0x24'),_0x72bf7a,_0x8ed0('0x25'));_0x2792c8(_0x5ef89c[_0x8ed0('0x2b')][_0x8ed0('0x2a')]);}})[_0x8ed0('0x2c')](function(_0x551c91){logger['error'](_0x8ed0('0x24'),_0x72bf7a,_0x551c91);_0x42afeb(_0x551c91);});});}function respondWithStatusCode(_0x2674e9,_0x3a17d4){_0x3a17d4=_0x3a17d4||0xcc;return function(_0x158364){if(_0x158364){return _0x2674e9[_0x8ed0('0x2d')](_0x3a17d4);}return _0x2674e9[_0x8ed0('0x2e')](_0x3a17d4)['end']();};}function respondWithResult(_0xbfcca,_0x436e54){_0x436e54=_0x436e54||0xc8;return function(_0x4886f8){if(_0x4886f8){return _0xbfcca[_0x8ed0('0x2e')](_0x436e54)[_0x8ed0('0x2f')](_0x4886f8);}};}function respondWithFilteredResult(_0x29c986,_0x25617c){return function(_0x15eec2){if(_0x15eec2){var _0xec3bd2=typeof _0x25617c[_0x8ed0('0x30')]==='undefined'&&typeof _0x25617c['limit']==='undefined';var _0x5c2ff=_0x15eec2[_0x8ed0('0x31')];var _0x59a78a=_0xec3bd2?0x0:_0x25617c[_0x8ed0('0x30')];var _0x53c60c=_0xec3bd2?_0x15eec2[_0x8ed0('0x31')]:_0x25617c[_0x8ed0('0x30')]+_0x25617c['limit'];var _0x4a0c9e;if(_0x53c60c>=_0x5c2ff){_0x53c60c=_0x5c2ff;_0x4a0c9e=0xc8;}else{_0x4a0c9e=0xce;}_0x29c986[_0x8ed0('0x2e')](_0x4a0c9e);return _0x29c986[_0x8ed0('0x32')](_0x8ed0('0x33'),_0x59a78a+'-'+_0x53c60c+'/'+_0x5c2ff)['json'](_0x15eec2);}return null;};}function patchUpdates(_0x30aa44){return function(_0x4fa368){try{jsonpatch[_0x8ed0('0x34')](_0x4fa368,_0x30aa44,!![]);}catch(_0x2cca02){return BPromise[_0x8ed0('0x35')](_0x2cca02);}return _0x4fa368[_0x8ed0('0x36')]();};}function saveUpdates(_0x468683,_0x4a2fc0){return function(_0x27a3fb){if(_0x27a3fb){return _0x27a3fb['update'](_0x468683)[_0x8ed0('0x37')](function(_0x1c4642){return _0x1c4642;});}return null;};}function removeEntity(_0xa1483,_0x18b564){return function(_0x1cfd71){if(_0x1cfd71){return _0x1cfd71[_0x8ed0('0x38')]()[_0x8ed0('0x37')](function(){_0xa1483[_0x8ed0('0x2e')](0xcc)[_0x8ed0('0x39')]();});}};}function handleEntityNotFound(_0x152f3b,_0x1b7a94){return function(_0x15c206){if(!_0x15c206){_0x152f3b[_0x8ed0('0x2d')](0x194);}return _0x15c206;};}function handleError(_0x4b50d0,_0x3ddeb4){_0x3ddeb4=_0x3ddeb4||0x1f4;return function(_0x58b2b6){logger[_0x8ed0('0x29')](_0x58b2b6['stack']);if(_0x58b2b6[_0x8ed0('0x3a')]){delete _0x58b2b6[_0x8ed0('0x3a')];}_0x4b50d0[_0x8ed0('0x2e')](_0x3ddeb4)['send'](_0x58b2b6);};}exports[_0x8ed0('0x3b')]=function(_0xb58797,_0x19777e){var _0x573048={},_0x5847bd={},_0x399b1={'count':0x0,'rows':[]};var _0x2c155a=_[_0x8ed0('0x3c')](db[_0x8ed0('0x3d')]['rawAttributes'],function(_0x22257b){return{'name':_0x22257b['fieldName'],'type':_0x22257b[_0x8ed0('0x3e')][_0x8ed0('0x3f')]};});_0x5847bd['model']=_[_0x8ed0('0x3c')](_0x2c155a,_0x8ed0('0x3a'));_0x5847bd[_0x8ed0('0x40')]=_[_0x8ed0('0x41')](_0xb58797[_0x8ed0('0x40')]);_0x5847bd[_0x8ed0('0x42')]=_[_0x8ed0('0x43')](_0x5847bd['model'],_0x5847bd[_0x8ed0('0x40')]);_0x573048[_0x8ed0('0x44')]=_[_0x8ed0('0x43')](_0x5847bd[_0x8ed0('0x45')],qs[_0x8ed0('0x46')](_0xb58797[_0x8ed0('0x40')]['fields']));_0x573048[_0x8ed0('0x44')]=_0x573048[_0x8ed0('0x44')][_0x8ed0('0x47')]?_0x573048[_0x8ed0('0x44')]:_0x5847bd[_0x8ed0('0x45')];if(!_0xb58797[_0x8ed0('0x40')][_0x8ed0('0x48')](_0x8ed0('0x49'))){_0x573048[_0x8ed0('0x4a')]=qs[_0x8ed0('0x4a')](_0xb58797[_0x8ed0('0x40')][_0x8ed0('0x4a')]);_0x573048['offset']=qs[_0x8ed0('0x30')](_0xb58797['query'][_0x8ed0('0x30')]);}_0x573048[_0x8ed0('0x4b')]=qs['sort'](_0xb58797['query'][_0x8ed0('0x4c')]);_0x573048[_0x8ed0('0x4d')]=qs['filters'](_[_0x8ed0('0x4e')](_0xb58797[_0x8ed0('0x40')],_0x5847bd[_0x8ed0('0x42')]),_0x2c155a);if(_0xb58797[_0x8ed0('0x40')][_0x8ed0('0x4f')]){_0x573048[_0x8ed0('0x4d')]=_[_0x8ed0('0x50')](_0x573048['where'],{'$or':_[_0x8ed0('0x3c')](_0x2c155a,function(_0x3291dd){if(_0x3291dd[_0x8ed0('0x3e')]!==_0x8ed0('0x51')){var _0xf8851a={};_0xf8851a[_0x3291dd['name']]={'$like':'%'+_0xb58797[_0x8ed0('0x40')]['filter']+'%'};return _0xf8851a;}})});}_0x573048=_[_0x8ed0('0x50')]({},_0x573048,_0xb58797[_0x8ed0('0x52')]);var _0x3d8e4f={'where':_0x573048[_0x8ed0('0x4d')]};return db[_0x8ed0('0x3d')][_0x8ed0('0x31')](_0x3d8e4f)[_0x8ed0('0x37')](function(_0x484945){_0x399b1[_0x8ed0('0x31')]=_0x484945;if(_0xb58797[_0x8ed0('0x40')][_0x8ed0('0x53')]){_0x573048[_0x8ed0('0x54')]=[{'all':!![]}];}return db['WhatsappMessage'][_0x8ed0('0x55')](_0x573048);})['then'](function(_0x9d8e2){_0x399b1['rows']=_0x9d8e2;return _0x399b1;})[_0x8ed0('0x37')](respondWithFilteredResult(_0x19777e,_0x573048))['catch'](handleError(_0x19777e,null));};exports[_0x8ed0('0x56')]=function(_0x55f1d7,_0x62701d){var _0x566ceb={'raw':!![],'where':{'id':_0x55f1d7['params']['id']}},_0x43643f={};_0x43643f['model']=_[_0x8ed0('0x41')](db[_0x8ed0('0x3d')][_0x8ed0('0x57')]);_0x43643f[_0x8ed0('0x40')]=_[_0x8ed0('0x41')](_0x55f1d7[_0x8ed0('0x40')]);_0x43643f[_0x8ed0('0x42')]=_['intersection'](_0x43643f[_0x8ed0('0x45')],_0x43643f[_0x8ed0('0x40')]);_0x566ceb[_0x8ed0('0x44')]=_[_0x8ed0('0x43')](_0x43643f['model'],qs[_0x8ed0('0x46')](_0x55f1d7['query']['fields']));_0x566ceb[_0x8ed0('0x44')]=_0x566ceb[_0x8ed0('0x44')][_0x8ed0('0x47')]?_0x566ceb[_0x8ed0('0x44')]:_0x43643f[_0x8ed0('0x45')];if(_0x55f1d7[_0x8ed0('0x40')][_0x8ed0('0x53')]){_0x566ceb['include']=[{'all':!![]}];}_0x566ceb=_[_0x8ed0('0x50')]({},_0x566ceb,_0x55f1d7[_0x8ed0('0x52')]);return db['WhatsappMessage'][_0x8ed0('0x58')](_0x566ceb)[_0x8ed0('0x37')](handleEntityNotFound(_0x62701d,null))[_0x8ed0('0x37')](respondWithResult(_0x62701d,null))[_0x8ed0('0x2c')](handleError(_0x62701d,null));};exports[_0x8ed0('0x59')]=function(_0x410436,_0x3f90f4){return db[_0x8ed0('0x3d')][_0x8ed0('0x59')](_0x410436['body'],{})['then'](respondWithResult(_0x3f90f4,0xc9))[_0x8ed0('0x2c')](handleError(_0x3f90f4,null));};exports[_0x8ed0('0x5a')]=function(_0x2b9c32,_0x4183e4){if(_0x2b9c32[_0x8ed0('0x5b')]['id']){delete _0x2b9c32[_0x8ed0('0x5b')]['id'];}return db[_0x8ed0('0x3d')][_0x8ed0('0x58')]({'where':{'id':_0x2b9c32[_0x8ed0('0x5c')]['id']}})[_0x8ed0('0x37')](handleEntityNotFound(_0x4183e4,null))[_0x8ed0('0x37')](saveUpdates(_0x2b9c32[_0x8ed0('0x5b')],null))[_0x8ed0('0x37')](respondWithResult(_0x4183e4,null))[_0x8ed0('0x2c')](handleError(_0x4183e4,null));};exports[_0x8ed0('0x38')]=function(_0x3de2c9,_0x2b3865){return db['WhatsappMessage'][_0x8ed0('0x58')]({'where':{'id':_0x3de2c9['params']['id']}})[_0x8ed0('0x37')](handleEntityNotFound(_0x2b3865,null))[_0x8ed0('0x37')](removeEntity(_0x2b3865,null))[_0x8ed0('0x2c')](handleError(_0x2b3865,null));};exports['describe']=function(_0x421031,_0x5aa7c8){return db[_0x8ed0('0x3d')]['describe']()[_0x8ed0('0x37')](respondWithResult(_0x5aa7c8,null))[_0x8ed0('0x2c')](handleError(_0x5aa7c8,null));};var interaction_log=require(_0x8ed0('0x16'))('whatsapp-interactions');exports[_0x8ed0('0x5d')]=function(_0x1e610f,_0x2233e8,_0x3f5534){var _0x33e48d={'agent':{},'channel':_0x8ed0('0x5e')};if(_0x1e610f['body']['id']){delete _0x1e610f[_0x8ed0('0x5b')]['id'];}_0x1e610f[_0x8ed0('0x5b')][_0x8ed0('0x5f')]=!![];_0x1e610f[_0x8ed0('0x5b')]['readAt']=moment()['format'](_0x8ed0('0x60'));_0x1e610f[_0x8ed0('0x5b')]['UserId']=_0x1e610f['body'][_0x8ed0('0x61')]||_0x1e610f['user']['id'];_0x33e48d['agent']['id']=_0x1e610f['body'][_0x8ed0('0x61')];return db[_0x8ed0('0x3d')][_0x8ed0('0x58')]({'where':{'id':_0x1e610f[_0x8ed0('0x5c')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2233e8,null))[_0x8ed0('0x37')](saveUpdates(_0x1e610f[_0x8ed0('0x5b')],null))[_0x8ed0('0x37')](function(_0x20ea44){if(_0x20ea44){_0x33e48d[_0x8ed0('0x2a')]=_0x20ea44[_0x8ed0('0x62')]({'plain':!![]});return db[_0x8ed0('0x63')][_0x8ed0('0x58')]({'where':{'id':_0x20ea44[_0x8ed0('0x64')]}});}return null;})[_0x8ed0('0x37')](handleEntityNotFound(_0x2233e8,null))['then'](function(_0x22d82a){if(_0x22d82a){return _0x22d82a[_0x8ed0('0x5a')]({'UserId':_0x1e610f['body'][_0x8ed0('0x61')],'read1stAt':_['isNil'](_0x22d82a[_0x8ed0('0x65')])?moment()[_0x8ed0('0x66')](_0x8ed0('0x60')):undefined});}return null;})[_0x8ed0('0x37')](function(_0x380111){if(_0x380111){_0x33e48d[_0x8ed0('0x67')]=_0x380111[_0x8ed0('0x62')]({'plain':!![]});interaction_log[_0x8ed0('0x23')](_0x8ed0('0x68'),_0x1e610f[_0x8ed0('0x69')]['id'],_0x1e610f[_0x8ed0('0x69')][_0x8ed0('0x3a')],_0x1e610f[_0x8ed0('0x69')][_0x8ed0('0x6a')],_0x33e48d[_0x8ed0('0x67')]['id'],_0x1e610f[_0x8ed0('0x5b')]?JSON[_0x8ed0('0x28')](_0x1e610f['body']):_0x8ed0('0x6b'));return respondWithRpcPromise(_0x8ed0('0x6c'),_0x8ed0('0x6d'),_0x33e48d);}return null;})[_0x8ed0('0x37')](function(_0x114a95){var _0xa22330=_0x8ed0('0x6e')+_0x114a95[_0x8ed0('0x2a')]['ContactId'];return db[_0x8ed0('0x6f')][_0x8ed0('0x40')](_0xa22330,{'type':db[_0x8ed0('0x70')][_0x8ed0('0x71')][_0x8ed0('0x72')],'raw':!![]})[_0x8ed0('0x37')](function(_0x485d10){return _0x485d10;});})[_0x8ed0('0x37')](function(_0x7b4a8d){if(_0x7b4a8d){_0x33e48d[_0x8ed0('0x2a')][_0x8ed0('0x73')]=_0x7b4a8d[0x0];if(!_0x1e610f['body'][_0x8ed0('0x61')])return;return db[_0x8ed0('0x74')][_0x8ed0('0x58')]({'where':{'id':_0x1e610f[_0x8ed0('0x5b')][_0x8ed0('0x61')],'role':'agent'},'attributes':['id','name',_0x8ed0('0x75'),_0x8ed0('0x76'),_0x8ed0('0x77')],'raw':!![]});}return null;})[_0x8ed0('0x37')](function(_0x1d19ac){if(!_0x1d19ac)return null;_0x33e48d[_0x8ed0('0x2a')]['agent']=_0x1d19ac;return _0x33e48d;})[_0x8ed0('0x37')](function(_0xe82ab5){if(_0xe82ab5){if(_0x1e610f[_0x8ed0('0x5b')]['manual']){_0x33e48d[_0x8ed0('0x2a')][_0x8ed0('0x78')]=util[_0x8ed0('0x66')](_0x8ed0('0x79'),_0x1e610f[_0x8ed0('0x69')][_0x8ed0('0x3a')]);_0x33e48d['message'][_0x8ed0('0x7a')]=_0x33e48d[_0x8ed0('0x7a')];_0x33e48d[_0x8ed0('0x2a')][_0x8ed0('0x7b')]='accept';return respondWithRpcPromise(_0x8ed0('0x7c'),_0x8ed0('0x7c'),{'event':'acceptmessage','message':_0x33e48d[_0x8ed0('0x2a')]},client9002)['then'](function(){return _0x33e48d;});}return _0x33e48d;}return null;})[_0x8ed0('0x37')](respondWithResult(_0x2233e8,null))[_0x8ed0('0x2c')](handleError(_0x2233e8,null));};var interaction_log=require(_0x8ed0('0x16'))(_0x8ed0('0x7d'));exports['reject']=function(_0x445cd0,_0x2de749,_0x806161){var _0x889d9={'agent':{},'channel':_0x8ed0('0x5e')};if(_0x445cd0[_0x8ed0('0x5b')]['id']){delete _0x445cd0[_0x8ed0('0x5b')]['id'];}_0x445cd0['body'][_0x8ed0('0x61')]=_0x445cd0['body']['UserId']||_0x445cd0['user']['id'];_0x889d9[_0x8ed0('0x7e')]['id']=_0x445cd0[_0x8ed0('0x5b')][_0x8ed0('0x61')];return db[_0x8ed0('0x3d')][_0x8ed0('0x58')]({'where':{'id':_0x445cd0[_0x8ed0('0x5c')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2de749,null))[_0x8ed0('0x37')](function(_0x518235){if(_0x518235){_0x889d9[_0x8ed0('0x2a')]=_0x518235[_0x8ed0('0x62')]({'plain':!![]});return db['WhatsappInteraction'][_0x8ed0('0x58')]({'where':{'id':_0x518235[_0x8ed0('0x64')]}});}return null;})['then'](handleEntityNotFound(_0x2de749,null))['then'](function(_0x665b88){if(_0x665b88){_0x889d9[_0x8ed0('0x67')]=_0x665b88[_0x8ed0('0x62')]({'plain':!![]});interaction_log[_0x8ed0('0x23')]('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x445cd0[_0x8ed0('0x69')]['id'],_0x445cd0[_0x8ed0('0x69')][_0x8ed0('0x3a')],_0x445cd0[_0x8ed0('0x69')][_0x8ed0('0x6a')],_0x889d9[_0x8ed0('0x67')]['id'],_0x445cd0[_0x8ed0('0x5b')]?JSON['stringify'](_0x445cd0['body']):_0x8ed0('0x6b'));return respondWithRpcPromise('RejectMessage',_0x8ed0('0x7f'),_0x889d9);}return null;})[_0x8ed0('0x37')](function(_0x554613){var _0x1ff29a='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x554613[_0x8ed0('0x2a')]['ContactId'];return db[_0x8ed0('0x6f')][_0x8ed0('0x40')](_0x1ff29a,{'type':db[_0x8ed0('0x70')][_0x8ed0('0x71')][_0x8ed0('0x72')],'raw':!![]})[_0x8ed0('0x37')](function(_0x27b43c){return _0x27b43c;});})[_0x8ed0('0x37')](function(_0xb76d1b){if(_0xb76d1b){_0x889d9['message']['contact']=_0xb76d1b[0x0];if(!_0x445cd0[_0x8ed0('0x5b')][_0x8ed0('0x61')])return;return db['User'][_0x8ed0('0x58')]({'where':{'id':_0x445cd0[_0x8ed0('0x5b')][_0x8ed0('0x61')],'role':'agent'},'attributes':['id',_0x8ed0('0x3a'),'fullname',_0x8ed0('0x76'),_0x8ed0('0x77')],'raw':!![]});}return null;})[_0x8ed0('0x37')](function(_0x24779b){if(!_0x24779b)return null;_0x889d9['message']['agent']=_0x24779b;return _0x889d9;})[_0x8ed0('0x37')](function(_0x12c6b8){if(_0x12c6b8){_0x12c6b8[_0x8ed0('0x2a')][_0x8ed0('0x78')]=util['format'](_0x8ed0('0x79'),_0x445cd0['user'][_0x8ed0('0x3a')]);_0x12c6b8[_0x8ed0('0x2a')]['channel']=_0x889d9[_0x8ed0('0x7a')];_0x12c6b8[_0x8ed0('0x2a')][_0x8ed0('0x7b')]=_0x8ed0('0x35');respondWithRpcPromise(_0x8ed0('0x7c'),'EventManager',{'event':_0x8ed0('0x80'),'message':_0x12c6b8['message']},client9002);return _0x889d9;}return null;})['then'](respondWithResult(_0x2de749,null))['catch'](handleError(_0x2de749,null));};exports[_0x8ed0('0x2e')]=function(_0x2ac4dd,_0x182070,_0x17be8d){if(_0x2ac4dd[_0x8ed0('0x5b')]['id']){delete _0x2ac4dd['body']['id'];}var _0x170979;return db[_0x8ed0('0x3d')]['find']({'where':{'id':_0x2ac4dd[_0x8ed0('0x5c')]['id']}})[_0x8ed0('0x37')](handleEntityNotFound(_0x182070,null))[_0x8ed0('0x37')](function(_0x1bdd54){if(_0x1bdd54){_0x170979=_0x1bdd54;return db[_0x8ed0('0x81')][_0x8ed0('0x58')]({'where':{'id':_0x1bdd54[_0x8ed0('0x82')]}});}})[_0x8ed0('0x37')](handleEntityNotFound(_0x182070,null))[_0x8ed0('0x37')](function(_0x579437){if(_0x579437){logger[_0x8ed0('0x26')](_0x8ed0('0x83'),_0x8ed0('0x2e'),_0x8ed0('0x84'),_0x579437[_0x8ed0('0x3e')],util[_0x8ed0('0x85')](_0x2ac4dd[_0x8ed0('0x5b')],{'showHidden':![],'depth':null}));switch(_0x579437[_0x8ed0('0x3e')]){case _0x8ed0('0x86'):if(_0x2ac4dd[_0x8ed0('0x5b')]['MessageSid']&&_0x2ac4dd[_0x8ed0('0x5b')]['MessageSid']===_0x170979[_0x8ed0('0x87')]&&_0x2ac4dd[_0x8ed0('0x5b')][_0x8ed0('0x88')]&&_0x2ac4dd['body'][_0x8ed0('0x88')]===_0x8ed0('0x5f')){return _0x170979[_0x8ed0('0x5a')]({'read':!![]});}else{logger[_0x8ed0('0x29')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x8ed0('0x2e'),_0x8ed0('0x86'),util[_0x8ed0('0x85')](_0x2ac4dd[_0x8ed0('0x5b')],{'showHidden':![],'depth':null}));}break;}return _0x170979;}})['then'](respondWithResult(_0x182070,null))[_0x8ed0('0x2c')](handleError(_0x182070,null));};
\ No newline at end of file
index aec92b6..e63a161 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1be1=['WhatsappMessage','setMaxListeners','update','remove','emit','hook'];(function(_0xb17957,_0xb61eee){var _0x4bd78e=function(_0x3c0302){while(--_0x3c0302){_0xb17957['push'](_0xb17957['shift']());}};_0x4bd78e(++_0xb61eee);}(_0x1be1,0x192));var _0x11be=function(_0xa8c4a6,_0x45ae2e){_0xa8c4a6=_0xa8c4a6-0x0;var _0x4fc493=_0x1be1[_0xa8c4a6];return _0x4fc493;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require('../../mysqldb')['db'][_0x11be('0x0')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x11be('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x11be('0x2'),'afterDestroy':_0x11be('0x3')};function emitEvent(_0x200b2a){return function(_0x318d41,_0x504d3a,_0x3ce56d){WhatsappMessageEvents[_0x11be('0x4')](_0x200b2a+':'+_0x318d41['id'],_0x318d41);WhatsappMessageEvents[_0x11be('0x4')](_0x200b2a,_0x318d41);_0x3ce56d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappMessage[_0x11be('0x5')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0xb9a7=['emit','hasOwnProperty','hook','exports','../../mysqldb','update'];(function(_0x152745,_0x361670){var _0x49289b=function(_0x6934f0){while(--_0x6934f0){_0x152745['push'](_0x152745['shift']());}};_0x49289b(++_0x361670);}(_0xb9a7,0x112));var _0x7b9a=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0xb9a7[_0x11005e];return _0x29338f;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0x7b9a('0x0'))['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x7b9a('0x1'),'afterDestroy':'remove'};function emitEvent(_0x1396ec){return function(_0x40ef7d,_0x37b25b,_0x24cae3){WhatsappMessageEvents[_0x7b9a('0x2')](_0x1396ec+':'+_0x40ef7d['id'],_0x40ef7d);WhatsappMessageEvents[_0x7b9a('0x2')](_0x1396ec,_0x40ef7d);_0x24cae3(null);};}for(var e in events){if(events[_0x7b9a('0x3')](e)){var event=events[e];WhatsappMessage[_0x7b9a('0x4')](e,emitEvent(event));}}module[_0x7b9a('0x5')]=WhatsappMessageEvents;
\ No newline at end of file
index af57b8c..528369f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe235=['fti_whatsapp_messages','body','FULLTEXT','models','get','toLowerCase','out','isNil','UserId','WhatsappInteraction','findOne','update','createdAt','direction','catch','error','secret','WhatsappAccount','find','then','type','twilio','accountSid','authToken','phone','create','whatsapp:','/status?token=','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','inspect','afterCreate','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','request-promise','path','rimraf','exports','define','WhatsappMessage','whatsapp_messages','messageId'];(function(_0x20085d,_0x3f68ed){var _0x2ca87e=function(_0x1d0264){while(--_0x1d0264){_0x20085d['push'](_0x20085d['shift']());}};_0x2ca87e(++_0x3f68ed);}(_0xe235,0xe4));var _0x5e23=function(_0x4e6bd9,_0x3e5d9f){_0x4e6bd9=_0x4e6bd9-0x0;var _0x479e81=_0xe235[_0x4e6bd9];return _0x479e81;};'use strict';var _=require(_0x5e23('0x0'));var util=require(_0x5e23('0x1'));var logger=require(_0x5e23('0x2'))(_0x5e23('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5e23('0x4'));var fs=require('fs');var path=require(_0x5e23('0x5'));var rimraf=require(_0x5e23('0x6'));var config=require('../../config/environment');var attributes=require('./whatsappMessage.attributes');module[_0x5e23('0x7')]=function(_0x37c8a7,_0x1b49b2){return _0x37c8a7[_0x5e23('0x8')](_0x5e23('0x9'),attributes,{'tableName':_0x5e23('0xa'),'paranoid':![],'indexes':[{'name':_0x5e23('0xb'),'fields':[_0x5e23('0xb')]},{'name':_0x5e23('0xc'),'fields':[_0x5e23('0xd')],'type':_0x5e23('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2d801b,_0x4089ce,_0x2238b9){var _0x50c536=_0x37c8a7[_0x5e23('0xf')];var _0x42c9b7=_0x2d801b[_0x5e23('0x10')]({'plain':!![]});if(_0x42c9b7['direction'][_0x5e23('0x11')]()==='in'||_0x42c9b7['direction'][_0x5e23('0x11')]()===_0x5e23('0x12')&&!_0x42c9b7['secret']&&!_[_0x5e23('0x13')](_0x42c9b7[_0x5e23('0x14')])){_0x50c536[_0x5e23('0x15')][_0x5e23('0x16')]({'where':{'id':_0x42c9b7['WhatsappInteractionId']}})['then'](function(_0x301787){if(_0x301787){_0x301787[_0x5e23('0x17')]({'lastMsgAt':_0x42c9b7[_0x5e23('0x18')],'lastMsgDirection':_0x42c9b7[_0x5e23('0x19')][_0x5e23('0x11')]()});}})[_0x5e23('0x1a')](function(_0x3d7de6){console[_0x5e23('0x1b')](_0x3d7de6);});}if(_0x42c9b7[_0x5e23('0x19')]===_0x5e23('0x12')&&!_0x42c9b7[_0x5e23('0x1c')]){var _0x22fcc2;_0x50c536[_0x5e23('0x1d')][_0x5e23('0x1e')]({'where':{'id':_0x42c9b7['WhatsappAccountId']},'raw':!![]})[_0x5e23('0x1f')](function(_0x412725){_0x22fcc2=_0x412725;if(_0x22fcc2&&_0x22fcc2[_0x5e23('0x20')]){switch(_0x22fcc2['type']){case _0x5e23('0x21'):var _0xe56e2d=require(_0x5e23('0x21'));if(_0x22fcc2[_0x5e23('0x22')]&&_0x22fcc2[_0x5e23('0x23')]&&_0x22fcc2[_0x5e23('0x24')]){var _0x54b2cb=new _0xe56e2d(_0x22fcc2[_0x5e23('0x22')],_0x22fcc2[_0x5e23('0x23')]);_0x54b2cb['messages'][_0x5e23('0x25')]({'body':_0x42c9b7[_0x5e23('0xd')],'to':_0x5e23('0x26')+_0x42c9b7['phone'],'from':_0x5e23('0x26')+_0x22fcc2[_0x5e23('0x24')],'statusCallback':_0x22fcc2['remote']+'/api/whatsapp/messages/'+_0x42c9b7['id']+_0x5e23('0x27')+_0x22fcc2[_0x5e23('0x28')]})[_0x5e23('0x1f')](function(_0x53dd05){if(_0x53dd05[_0x5e23('0x29')]){return _0x2d801b['update']({'messageId':_0x53dd05[_0x5e23('0x29')]});}})[_0x5e23('0x1a')](function(_0xb953d8){logger['error'](_0x5e23('0x2a'),'afterCreate',_0x5e23('0x21'),util[_0x5e23('0x2b')](_0xb953d8,{'showHidden':![],'depth':null}));});}else{logger[_0x5e23('0x1b')](_0x5e23('0x2a'),_0x5e23('0x2c'),_0x5e23('0x21'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;}}})[_0x5e23('0x2d')](function(){_0x2238b9();});}else{_0x2238b9();}}},'charset':_0x5e23('0x2e'),'collate':_0x5e23('0x2f')});};
\ No newline at end of file
+var _0x307f=['isNil','findOne','WhatsappInteractionId','then','createdAt','toLowerCase','catch','WhatsappAccount','find','WhatsappAccountId','twilio','authToken','messages','create','body','phone','remote','/api/whatsapp/messages/','/status?token=','update','sid','error','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','path','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','FULLTEXT','models','direction','out','secret'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x307f,0x1af));var _0xf307=function(_0x216ac5,_0x216f6e){_0x216ac5=_0x216ac5-0x0;var _0x336118=_0x307f[_0x216ac5];return _0x336118;};'use strict';var _=require(_0xf307('0x0'));var util=require(_0xf307('0x1'));var logger=require(_0xf307('0x2'))(_0xf307('0x3'));var moment=require('moment');var BPromise=require(_0xf307('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf307('0x5'));var rimraf=require('rimraf');var config=require(_0xf307('0x6'));var attributes=require(_0xf307('0x7'));module[_0xf307('0x8')]=function(_0x33b49b,_0x5447f2){return _0x33b49b[_0xf307('0x9')](_0xf307('0xa'),attributes,{'tableName':_0xf307('0xb'),'paranoid':![],'indexes':[{'name':_0xf307('0xc'),'fields':[_0xf307('0xc')]},{'name':_0xf307('0xd'),'fields':['body'],'type':_0xf307('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1fdfbf,_0xf5d2de,_0x22568f){var _0x209a75=_0x33b49b[_0xf307('0xf')];var _0x555e9e=_0x1fdfbf['get']({'plain':!![]});if(_0x555e9e[_0xf307('0x10')]['toLowerCase']()==='in'||_0x555e9e[_0xf307('0x10')]['toLowerCase']()===_0xf307('0x11')&&!_0x555e9e[_0xf307('0x12')]&&!_[_0xf307('0x13')](_0x555e9e['UserId'])){_0x209a75['WhatsappInteraction'][_0xf307('0x14')]({'where':{'id':_0x555e9e[_0xf307('0x15')]}})[_0xf307('0x16')](function(_0xcd0537){if(_0xcd0537){_0xcd0537['update']({'lastMsgAt':_0x555e9e[_0xf307('0x17')],'lastMsgDirection':_0x555e9e[_0xf307('0x10')][_0xf307('0x18')]()});}})[_0xf307('0x19')](function(_0x596f00){console['error'](_0x596f00);});}if(_0x555e9e[_0xf307('0x10')]===_0xf307('0x11')&&!_0x555e9e[_0xf307('0x12')]){var _0x3257de;_0x209a75[_0xf307('0x1a')][_0xf307('0x1b')]({'where':{'id':_0x555e9e[_0xf307('0x1c')]},'raw':!![]})['then'](function(_0x4ca2de){_0x3257de=_0x4ca2de;if(_0x3257de&&_0x3257de['type']){switch(_0x3257de['type']){case _0xf307('0x1d'):var _0x24ede5=require('twilio');if(_0x3257de['accountSid']&&_0x3257de[_0xf307('0x1e')]&&_0x3257de['phone']){var _0x443bc9=new _0x24ede5(_0x3257de['accountSid'],_0x3257de[_0xf307('0x1e')]);_0x443bc9[_0xf307('0x1f')][_0xf307('0x20')]({'body':_0x555e9e[_0xf307('0x21')],'to':'whatsapp:'+_0x555e9e[_0xf307('0x22')],'from':'whatsapp:'+_0x3257de[_0xf307('0x22')],'statusCallback':_0x3257de[_0xf307('0x23')]+_0xf307('0x24')+_0x555e9e['id']+_0xf307('0x25')+_0x3257de['token']})[_0xf307('0x16')](function(_0x1ce3b0){if(_0x1ce3b0['sid']){return _0x1fdfbf[_0xf307('0x26')]({'messageId':_0x1ce3b0[_0xf307('0x27')]});}})['catch'](function(_0x46fa3f){logger[_0xf307('0x28')](_0xf307('0x29'),'afterCreate','twilio',util['inspect'](_0x46fa3f,{'showHidden':![],'depth':null}));});}else{logger[_0xf307('0x28')](_0xf307('0x29'),_0xf307('0x2a'),'twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;}}})['finally'](function(){_0x22568f();});}else{_0x22568f();}}},'charset':_0xf307('0x2b'),'collate':_0xf307('0x2c')});};
\ No newline at end of file
index de156f4..acf5276 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2524=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','socket.io-emitter','./whatsappMessage.socket','register','request','info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappMessage,\x20%s,\x20%s','message','result','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','then','lodash','util','moment'];(function(_0x4b15e9,_0x421fc6){var _0x547a45=function(_0x40d89e){while(--_0x40d89e){_0x4b15e9['push'](_0x4b15e9['shift']());}};_0x547a45(++_0x421fc6);}(_0x2524,0x115));var _0x4252=function(_0x4c92d8,_0x133996){_0x4c92d8=_0x4c92d8-0x0;var _0x42c0c9=_0x2524[_0x4c92d8];return _0x42c0c9;};'use strict';var _=require(_0x4252('0x0'));var util=require(_0x4252('0x1'));var moment=require(_0x4252('0x2'));var BPromise=require(_0x4252('0x3'));var rs=require(_0x4252('0x4'));var fs=require('fs');var Redis=require(_0x4252('0x5'));var db=require(_0x4252('0x6'))['db'];var utils=require(_0x4252('0x7'));var logger=require(_0x4252('0x8'))(_0x4252('0x9'));var config=require('../../config/environment');var jayson=require(_0x4252('0xa'));var client=jayson[_0x4252('0xb')]['http']({'port':0x232a});config[_0x4252('0xc')]=_[_0x4252('0xd')](config[_0x4252('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x4252('0xe'))(new Redis(config[_0x4252('0xc')]));require(_0x4252('0xf'))[_0x4252('0x10')](socket);function respondWithRpcPromise(_0x3db979,_0x1505d1,_0x26f897){return new BPromise(function(_0xff8ac4,_0x46d98f){return client[_0x4252('0x11')](_0x3db979,_0x26f897)['then'](function(_0x19bdff){logger[_0x4252('0x12')]('WhatsappMessage,\x20%s,\x20%s',_0x1505d1,_0x4252('0x13'));logger[_0x4252('0x14')](_0x4252('0x15'),_0x1505d1,_0x4252('0x13'),JSON[_0x4252('0x16')](_0x19bdff));if(_0x19bdff[_0x4252('0x17')]){if(_0x19bdff[_0x4252('0x17')][_0x4252('0x18')]===0x1f4){logger[_0x4252('0x17')](_0x4252('0x19'),_0x1505d1,_0x19bdff[_0x4252('0x17')][_0x4252('0x1a')]);return _0x46d98f(_0x19bdff['error'][_0x4252('0x1a')]);}logger[_0x4252('0x17')]('WhatsappMessage,\x20%s,\x20%s',_0x1505d1,_0x19bdff[_0x4252('0x17')][_0x4252('0x1a')]);return _0xff8ac4(_0x19bdff[_0x4252('0x17')]['message']);}else{logger[_0x4252('0x12')](_0x4252('0x19'),_0x1505d1,'request\x20sent');_0xff8ac4(_0x19bdff[_0x4252('0x1b')][_0x4252('0x1a')]);}})['catch'](function(_0x334b06){logger[_0x4252('0x17')](_0x4252('0x19'),_0x1505d1,_0x334b06);_0x46d98f(_0x334b06);});});}exports[_0x4252('0x1c')]=function(_0x5543bd){var _0x30fcf0=this;return new Promise(function(_0x29cb99,_0x298647){return db[_0x4252('0x1d')][_0x4252('0x1e')](_0x5543bd[_0x4252('0x1f')],{'raw':_0x5543bd[_0x4252('0x20')]?_0x5543bd['options'][_0x4252('0x21')]===undefined?!![]:![]:!![]})[_0x4252('0x22')](function(_0x2370ed){logger[_0x4252('0x12')](_0x4252('0x1c'),_0x5543bd);logger[_0x4252('0x14')]('CreateWhatsappMessage',_0x5543bd,JSON[_0x4252('0x16')](_0x2370ed));_0x29cb99(_0x2370ed);})['catch'](function(_0x25e4aa){logger[_0x4252('0x17')](_0x4252('0x1c'),_0x25e4aa[_0x4252('0x1a')],_0x5543bd);_0x298647(_0x30fcf0[_0x4252('0x17')](0x1f4,_0x25e4aa[_0x4252('0x1a')]));});});};
\ No newline at end of file
+var _0x4f22=['code','message','result','catch','WhatsappMessage','create','body','options','raw','CreateWhatsappMessage','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','WhatsappMessage,\x20%s,\x20%s','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x14d12d,_0x487352){var _0x53dd42=function(_0x2bca6d){while(--_0x2bca6d){_0x14d12d['push'](_0x14d12d['shift']());}};_0x53dd42(++_0x487352);}(_0x4f22,0x1f4));var _0x24f2=function(_0x5ab3c1,_0x2ac4a2){_0x5ab3c1=_0x5ab3c1-0x0;var _0x4ea129=_0x4f22[_0x5ab3c1];return _0x4ea129;};'use strict';var _=require(_0x24f2('0x0'));var util=require(_0x24f2('0x1'));var moment=require('moment');var BPromise=require(_0x24f2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x24f2('0x3'));var db=require(_0x24f2('0x4'))['db'];var utils=require(_0x24f2('0x5'));var logger=require(_0x24f2('0x6'))(_0x24f2('0x7'));var config=require('../../config/environment');var jayson=require(_0x24f2('0x8'));var client=jayson[_0x24f2('0x9')][_0x24f2('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x24f2('0xb')],{'host':_0x24f2('0xc'),'port':0x18eb});var socket=require(_0x24f2('0xd'))(new Redis(config['redis']));require(_0x24f2('0xe'))[_0x24f2('0xf')](socket);function respondWithRpcPromise(_0x5e2ae0,_0x194eac,_0x445791){return new BPromise(function(_0x5aac73,_0x3d7434){return client[_0x24f2('0x10')](_0x5e2ae0,_0x445791)[_0x24f2('0x11')](function(_0x4c6f4c){logger[_0x24f2('0x12')](_0x24f2('0x13'),_0x194eac,'request\x20sent');logger[_0x24f2('0x14')](_0x24f2('0x15'),_0x194eac,_0x24f2('0x16'),JSON[_0x24f2('0x17')](_0x4c6f4c));if(_0x4c6f4c[_0x24f2('0x18')]){if(_0x4c6f4c[_0x24f2('0x18')][_0x24f2('0x19')]===0x1f4){logger['error'](_0x24f2('0x13'),_0x194eac,_0x4c6f4c['error']['message']);return _0x3d7434(_0x4c6f4c['error'][_0x24f2('0x1a')]);}logger[_0x24f2('0x18')](_0x24f2('0x13'),_0x194eac,_0x4c6f4c[_0x24f2('0x18')][_0x24f2('0x1a')]);return _0x5aac73(_0x4c6f4c[_0x24f2('0x18')]['message']);}else{logger['info']('WhatsappMessage,\x20%s,\x20%s',_0x194eac,_0x24f2('0x16'));_0x5aac73(_0x4c6f4c[_0x24f2('0x1b')][_0x24f2('0x1a')]);}})[_0x24f2('0x1c')](function(_0x7dcca6){logger[_0x24f2('0x18')](_0x24f2('0x13'),_0x194eac,_0x7dcca6);_0x3d7434(_0x7dcca6);});});}exports['CreateWhatsappMessage']=function(_0x3e6773){var _0x2ee487=this;return new Promise(function(_0x36c8a9,_0x5e5c3f){return db[_0x24f2('0x1d')][_0x24f2('0x1e')](_0x3e6773[_0x24f2('0x1f')],{'raw':_0x3e6773[_0x24f2('0x20')]?_0x3e6773[_0x24f2('0x20')][_0x24f2('0x21')]===undefined?!![]:![]:!![]})[_0x24f2('0x11')](function(_0x51f6c4){logger[_0x24f2('0x12')]('CreateWhatsappMessage',_0x3e6773);logger[_0x24f2('0x14')](_0x24f2('0x22'),_0x3e6773,JSON[_0x24f2('0x17')](_0x51f6c4));_0x36c8a9(_0x51f6c4);})[_0x24f2('0x1c')](function(_0x16fc1a){logger['error'](_0x24f2('0x22'),_0x16fc1a[_0x24f2('0x1a')],_0x3e6773);_0x5e5c3f(_0x2ee487['error'](0x1f4,_0x16fc1a['message']));});});};
\ No newline at end of file
index 05c8340..b6346bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c5d=['remove','update','removeListener','register','length','whatsappMessage:','./whatsappMessage.events','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3c5d,0xce));var _0xd3c5=function(_0x577f2a,_0x562234){_0x577f2a=_0x577f2a-0x0;var _0x5ee433=_0x3c5d[_0x577f2a];return _0x5ee433;};'use strict';var WhatsappMessageEvents=require(_0xd3c5('0x0'));var events=[_0xd3c5('0x1'),_0xd3c5('0x2'),_0xd3c5('0x3')];function createListener(_0x2fec1e,_0x215946){return function(_0x89f406){_0x215946['emit'](_0x2fec1e,_0x89f406);};}function removeListener(_0x317cec,_0x5b25ab){return function(){WhatsappMessageEvents[_0xd3c5('0x4')](_0x317cec,_0x5b25ab);};}exports[_0xd3c5('0x5')]=function(_0xc219be){for(var _0xe017f6=0x0,_0x9fca40=events[_0xd3c5('0x6')];_0xe017f6<_0x9fca40;_0xe017f6++){var _0x1dd64b=events[_0xe017f6];var _0x36af5d=createListener(_0xd3c5('0x7')+_0x1dd64b,_0xc219be);WhatsappMessageEvents['on'](_0x1dd64b,_0x36af5d);}};
\ No newline at end of file
+var _0x9c21=['register','whatsappMessage:','./whatsappMessage.events','save','remove','emit'];(function(_0x4df1f5,_0x39c6d2){var _0x56585b=function(_0x287b6e){while(--_0x287b6e){_0x4df1f5['push'](_0x4df1f5['shift']());}};_0x56585b(++_0x39c6d2);}(_0x9c21,0x1b8));var _0x19c2=function(_0x260593,_0x2bdb5f){_0x260593=_0x260593-0x0;var _0x63c998=_0x9c21[_0x260593];return _0x63c998;};'use strict';var WhatsappMessageEvents=require(_0x19c2('0x0'));var events=[_0x19c2('0x1'),_0x19c2('0x2'),'update'];function createListener(_0x31b612,_0x61c0fc){return function(_0x4f6d67){_0x61c0fc[_0x19c2('0x3')](_0x31b612,_0x4f6d67);};}function removeListener(_0x3b2719,_0x31151d){return function(){WhatsappMessageEvents['removeListener'](_0x3b2719,_0x31151d);};}exports[_0x19c2('0x4')]=function(_0x26ba20){for(var _0x17b400=0x0,_0x1435e8=events['length'];_0x17b400<_0x1435e8;_0x17b400++){var _0x19c9aa=events[_0x17b400];var _0x42ca14=createListener(_0x19c2('0x5')+_0x19c9aa,_0x26ba20);WhatsappMessageEvents['on'](_0x19c9aa,_0x42ca14);}};
\ No newline at end of file
index 62fe690..a9bf903 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8dd=['Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','put','/:id','update','delete','destroy','removeTeams','exports','multer','connect-timeout','express'];(function(_0x21c2c8,_0x44257e){var _0x4dd745=function(_0x1b3196){while(--_0x1b3196){_0x21c2c8['push'](_0x21c2c8['shift']());}};_0x4dd745(++_0x44257e);}(_0xe8dd,0x183));var _0xde8d=function(_0x596271,_0x37f34b){_0x596271=_0x596271-0x0;var _0x543081=_0xe8dd[_0x596271];return _0x543081;};'use strict';var multer=require(_0xde8d('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xde8d('0x1'));var express=require(_0xde8d('0x2'));var router=express[_0xde8d('0x3')]();var fs_extra=require(_0xde8d('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xde8d('0x5'));var config=require(_0xde8d('0x6'));var controller=require(_0xde8d('0x7'));router[_0xde8d('0x8')]('/',auth[_0xde8d('0x9')](),controller[_0xde8d('0xa')]);router[_0xde8d('0x8')](_0xde8d('0xb'),auth[_0xde8d('0x9')](),controller[_0xde8d('0xc')]);router[_0xde8d('0x8')]('/:id',auth[_0xde8d('0x9')](),controller[_0xde8d('0xd')]);router[_0xde8d('0x8')](_0xde8d('0xe'),auth[_0xde8d('0x9')](),controller[_0xde8d('0xf')]);router[_0xde8d('0x8')](_0xde8d('0x10'),auth[_0xde8d('0x9')](),controller[_0xde8d('0x11')]);router['get'](_0xde8d('0x12'),auth['isAuthenticated'](),controller[_0xde8d('0x13')]);router['post']('/',auth[_0xde8d('0x9')](),controller['create']);router[_0xde8d('0x14')](_0xde8d('0x10'),auth[_0xde8d('0x9')](),controller[_0xde8d('0x15')]);router['post']('/:id/users',auth['isAuthenticated'](),controller[_0xde8d('0x16')]);router[_0xde8d('0x17')](_0xde8d('0x18'),auth[_0xde8d('0x9')](),controller[_0xde8d('0x19')]);router[_0xde8d('0x1a')](_0xde8d('0x18'),auth['isAuthenticated'](),controller[_0xde8d('0x1b')]);router[_0xde8d('0x1a')](_0xde8d('0x10'),auth[_0xde8d('0x9')](),controller[_0xde8d('0x1c')]);router[_0xde8d('0x1a')](_0xde8d('0x12'),auth[_0xde8d('0x9')](),controller['removeAgents']);module[_0xde8d('0x1d')]=router;
\ No newline at end of file
+var _0x7c35=['removeAgents','exports','multer','path','connect-timeout','express','../../components/interaction/service','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/members','/:id/teams','getTeams','getAgents','post','create','/:id/users','addAgents','put','update','delete','destroy'];(function(_0x1069f5,_0x51cc78){var _0x5c211d=function(_0x1d527f){while(--_0x1d527f){_0x1069f5['push'](_0x1069f5['shift']());}};_0x5c211d(++_0x51cc78);}(_0x7c35,0x13a));var _0x57c3=function(_0x3b50d1,_0x198f0a){_0x3b50d1=_0x3b50d1-0x0;var _0x5a8dcb=_0x7c35[_0x3b50d1];return _0x5a8dcb;};'use strict';var multer=require(_0x57c3('0x0'));var util=require('util');var path=require(_0x57c3('0x1'));var timeout=require(_0x57c3('0x2'));var express=require(_0x57c3('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x57c3('0x4'));var config=require('../../config/environment');var controller=require('./whatsappQueue.controller');router['get']('/',auth[_0x57c3('0x5')](),controller[_0x57c3('0x6')]);router[_0x57c3('0x7')](_0x57c3('0x8'),auth[_0x57c3('0x5')](),controller[_0x57c3('0x9')]);router[_0x57c3('0x7')](_0x57c3('0xa'),auth['isAuthenticated'](),controller[_0x57c3('0xb')]);router['get'](_0x57c3('0xc'),auth[_0x57c3('0x5')](),controller['getMembers']);router[_0x57c3('0x7')](_0x57c3('0xd'),auth['isAuthenticated'](),controller[_0x57c3('0xe')]);router['get']('/:id/users',auth[_0x57c3('0x5')](),controller[_0x57c3('0xf')]);router[_0x57c3('0x10')]('/',auth['isAuthenticated'](),controller[_0x57c3('0x11')]);router[_0x57c3('0x10')](_0x57c3('0xd'),auth[_0x57c3('0x5')](),controller['addTeams']);router[_0x57c3('0x10')](_0x57c3('0x12'),auth[_0x57c3('0x5')](),controller[_0x57c3('0x13')]);router[_0x57c3('0x14')](_0x57c3('0xa'),auth['isAuthenticated'](),controller[_0x57c3('0x15')]);router[_0x57c3('0x16')](_0x57c3('0xa'),auth[_0x57c3('0x5')](),controller[_0x57c3('0x17')]);router[_0x57c3('0x16')]('/:id/teams',auth[_0x57c3('0x5')](),controller['removeTeams']);router[_0x57c3('0x16')](_0x57c3('0x12'),auth[_0x57c3('0x5')](),controller[_0x57c3('0x18')]);module[_0x57c3('0x19')]=router;
\ No newline at end of file
index cc324e9..fc22ffe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc041=['roundrobin','STRING','sequelize','exports','name','ENUM','rrmemory','beepall'];(function(_0x11ebcc,_0x207ece){var _0xe41ebf=function(_0x40e9d0){while(--_0x40e9d0){_0x11ebcc['push'](_0x11ebcc['shift']());}};_0xe41ebf(++_0x207ece);}(_0xc041,0x1ea));var _0x1c04=function(_0x2bd0d7,_0x158fb3){_0x2bd0d7=_0x2bd0d7-0x0;var _0x3f3d78=_0xc041[_0x2bd0d7];return _0x3f3d78;};'use strict';var Sequelize=require(_0x1c04('0x0'));module[_0x1c04('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x1c04('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x1c04('0x3')](_0x1c04('0x4'),_0x1c04('0x5'),_0x1c04('0x6'))},'description':{'type':Sequelize[_0x1c04('0x7')]}};
\ No newline at end of file
+var _0x2137=['beepall','roundrobin','sequelize','exports','STRING','ENUM'];(function(_0x460358,_0x354877){var _0xdfdfa8=function(_0x4cc317){while(--_0x4cc317){_0x460358['push'](_0x460358['shift']());}};_0xdfdfa8(++_0x354877);}(_0x2137,0x134));var _0x7213=function(_0x29e2af,_0x15e2b1){_0x29e2af=_0x29e2af-0x0;var _0x1ea06a=_0x2137[_0x29e2af];return _0x1ea06a;};'use strict';var Sequelize=require(_0x7213('0x0'));module[_0x7213('0x1')]={'name':{'type':Sequelize[_0x7213('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7213('0x3')]('rrmemory',_0x7213('0x4'),_0x7213('0x5'))},'description':{'type':Sequelize[_0x7213('0x2')]}};
\ No newline at end of file
index 3072940..f690878 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7256=['update','then','destroy','get','WhatsappQueues','sendStatus','error','stack','name','send','index','WhatsappQueue','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','catch','params','keys','includeAll','find','body','user','role','userProfileId','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserWhatsappQueue','nolimit','WhatsappQueueId','User','findAndCountAll','UserId','agent','whatsappPause','updatedAt','createdAt','SIP','getTeams','Team','addTeams','Agents','voicePause','interface','flatMap','sequelize','each','findOrCreate','forEach','userWhatsappQueue:save','ids','select','field','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','transaction','removeTeams','isEmpty','removeAgents','emit','userWhatsappQueue:remove','addAgents','isArray','getAgents','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','lodash','crypto','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','./whatsappQueue.socket','register','end','status','json','undefined','limit','count','offset','save'];(function(_0x5d8018,_0x588592){var _0x151ac4=function(_0x548679){while(--_0x548679){_0x5d8018['push'](_0x5d8018['shift']());}};_0x151ac4(++_0x588592);}(_0x7256,0x65));var _0x6725=function(_0x2e25bf,_0x471204){_0x2e25bf=_0x2e25bf-0x0;var _0x3347da=_0x7256[_0x2e25bf];return _0x3347da;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6725('0x0'));var jsonpatch=require(_0x6725('0x1'));var rp=require(_0x6725('0x2'));var moment=require(_0x6725('0x3'));var BPromise=require(_0x6725('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x6725('0x5'));var sox=require(_0x6725('0x6'));var csv=require(_0x6725('0x7'));var ejs=require(_0x6725('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6725('0x9'));var squel=require('squel');var crypto=require(_0x6725('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6725('0x7'));var querystring=require('querystring');var Papa=require(_0x6725('0xb'));var Redis=require(_0x6725('0xc'));var authService=require(_0x6725('0xd'));var qs=require(_0x6725('0xe'));var as=require(_0x6725('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6725('0x10'))('api');var utils=require(_0x6725('0x11'));var config=require(_0x6725('0x12'));var licenseUtil=require(_0x6725('0x13'));var db=require(_0x6725('0x14'))['db'];config[_0x6725('0x15')]=_[_0x6725('0x16')](config[_0x6725('0x15')],{'host':_0x6725('0x17'),'port':0x18eb});var socket=require(_0x6725('0x18'))(new Redis(config[_0x6725('0x15')]));require(_0x6725('0x19'))[_0x6725('0x1a')](socket);function respondWithStatusCode(_0x3e7215,_0x525bb7){_0x525bb7=_0x525bb7||0xcc;return function(_0x38bc72){if(_0x38bc72){return _0x3e7215['sendStatus'](_0x525bb7);}return _0x3e7215['status'](_0x525bb7)[_0x6725('0x1b')]();};}function respondWithResult(_0x4fb83d,_0x177dfd){_0x177dfd=_0x177dfd||0xc8;return function(_0x5c1c9b){if(_0x5c1c9b){return _0x4fb83d[_0x6725('0x1c')](_0x177dfd)[_0x6725('0x1d')](_0x5c1c9b);}};}function respondWithFilteredResult(_0x1f07b0,_0x22aa63){return function(_0x574c10){if(_0x574c10){var _0x386df7=typeof _0x22aa63['offset']===_0x6725('0x1e')&&typeof _0x22aa63[_0x6725('0x1f')]===_0x6725('0x1e');var _0x77d176=_0x574c10[_0x6725('0x20')];var _0x420811=_0x386df7?0x0:_0x22aa63['offset'];var _0x391394=_0x386df7?_0x574c10[_0x6725('0x20')]:_0x22aa63[_0x6725('0x21')]+_0x22aa63[_0x6725('0x1f')];var _0xbb34bc;if(_0x391394>=_0x77d176){_0x391394=_0x77d176;_0xbb34bc=0xc8;}else{_0xbb34bc=0xce;}_0x1f07b0[_0x6725('0x1c')](_0xbb34bc);return _0x1f07b0['set']('Content-Range',_0x420811+'-'+_0x391394+'/'+_0x77d176)['json'](_0x574c10);}return null;};}function patchUpdates(_0x38a0d7){return function(_0xf5aa48){try{jsonpatch['apply'](_0xf5aa48,_0x38a0d7,!![]);}catch(_0x1583a9){return BPromise['reject'](_0x1583a9);}return _0xf5aa48[_0x6725('0x22')]();};}function saveUpdates(_0x2c8f07,_0x41c07a){return function(_0x306296){if(_0x306296){return _0x306296[_0x6725('0x23')](_0x2c8f07)[_0x6725('0x24')](function(_0x40ddd2){return _0x40ddd2;});}return null;};}function removeEntity(_0x36bdd9,_0x3002bb){return function(_0xb30a44){if(_0xb30a44){return _0xb30a44[_0x6725('0x25')]()[_0x6725('0x24')](function(){var _0x12638e=_0xb30a44[_0x6725('0x26')]({'plain':!![]});var _0x336a4f=_0x6725('0x27');return db['UserProfileResource'][_0x6725('0x25')]({'where':{'type':_0x336a4f,'resourceId':_0x12638e['id']}})[_0x6725('0x24')](function(){return _0xb30a44;});})[_0x6725('0x24')](function(){_0x36bdd9['status'](0xcc)[_0x6725('0x1b')]();});}};}function handleEntityNotFound(_0x6c7813,_0x1c0f79){return function(_0x44b10a){if(!_0x44b10a){_0x6c7813[_0x6725('0x28')](0x194);}return _0x44b10a;};}function handleError(_0x925ab9,_0x10d809){_0x10d809=_0x10d809||0x1f4;return function(_0x269155){logger[_0x6725('0x29')](_0x269155[_0x6725('0x2a')]);if(_0x269155['name']){delete _0x269155[_0x6725('0x2b')];}_0x925ab9[_0x6725('0x1c')](_0x10d809)[_0x6725('0x2c')](_0x269155);};}exports[_0x6725('0x2d')]=function(_0x295bda,_0x28d4ac){var _0xaedc12={},_0xd4972a={},_0x48f1db={'count':0x0,'rows':[]};var _0x259390=_['map'](db[_0x6725('0x2e')][_0x6725('0x2f')],function(_0x389bfe){return{'name':_0x389bfe[_0x6725('0x30')],'type':_0x389bfe[_0x6725('0x31')][_0x6725('0x32')]};});_0xd4972a[_0x6725('0x33')]=_[_0x6725('0x34')](_0x259390,_0x6725('0x2b'));_0xd4972a['query']=_['keys'](_0x295bda[_0x6725('0x35')]);_0xd4972a[_0x6725('0x36')]=_[_0x6725('0x37')](_0xd4972a[_0x6725('0x33')],_0xd4972a[_0x6725('0x35')]);_0xaedc12['attributes']=_[_0x6725('0x37')](_0xd4972a[_0x6725('0x33')],qs[_0x6725('0x38')](_0x295bda[_0x6725('0x35')]['fields']));_0xaedc12['attributes']=_0xaedc12[_0x6725('0x39')][_0x6725('0x3a')]?_0xaedc12[_0x6725('0x39')]:_0xd4972a[_0x6725('0x33')];if(!_0x295bda[_0x6725('0x35')][_0x6725('0x3b')]('nolimit')){_0xaedc12['limit']=qs['limit'](_0x295bda['query'][_0x6725('0x1f')]);_0xaedc12[_0x6725('0x21')]=qs[_0x6725('0x21')](_0x295bda[_0x6725('0x35')][_0x6725('0x21')]);}_0xaedc12[_0x6725('0x3c')]=qs[_0x6725('0x3d')](_0x295bda[_0x6725('0x35')][_0x6725('0x3d')]);_0xaedc12[_0x6725('0x3e')]=qs[_0x6725('0x36')](_[_0x6725('0x3f')](_0x295bda[_0x6725('0x35')],_0xd4972a[_0x6725('0x36')]),_0x259390);if(_0x295bda[_0x6725('0x35')][_0x6725('0x40')]){_0xaedc12[_0x6725('0x3e')]=_[_0x6725('0x41')](_0xaedc12[_0x6725('0x3e')],{'$or':_['map'](_0x259390,function(_0x173dc2){if(_0x173dc2[_0x6725('0x31')]!==_0x6725('0x42')){var _0x193917={};_0x193917[_0x173dc2[_0x6725('0x2b')]]={'$like':'%'+_0x295bda[_0x6725('0x35')][_0x6725('0x40')]+'%'};return _0x193917;}})});}_0xaedc12=_[_0x6725('0x41')]({},_0xaedc12,_0x295bda[_0x6725('0x43')]);var _0x6953d7={'where':_0xaedc12['where']};return db[_0x6725('0x2e')]['count'](_0x6953d7)['then'](function(_0x3c6784){_0x48f1db[_0x6725('0x20')]=_0x3c6784;if(_0x295bda[_0x6725('0x35')]['includeAll']){_0xaedc12[_0x6725('0x44')]=[{'all':!![]}];}return db[_0x6725('0x2e')][_0x6725('0x45')](_0xaedc12);})[_0x6725('0x24')](function(_0x1787d7){_0x48f1db['rows']=_0x1787d7;return _0x48f1db;})[_0x6725('0x24')](respondWithFilteredResult(_0x28d4ac,_0xaedc12))[_0x6725('0x46')](handleError(_0x28d4ac,null));};exports['show']=function(_0x391af2,_0x3947db){var _0x45df69={'raw':!![],'where':{'id':_0x391af2[_0x6725('0x47')]['id']}},_0x4f55e3={};_0x4f55e3[_0x6725('0x33')]=_[_0x6725('0x48')](db[_0x6725('0x2e')][_0x6725('0x2f')]);_0x4f55e3[_0x6725('0x35')]=_[_0x6725('0x48')](_0x391af2['query']);_0x4f55e3['filters']=_['intersection'](_0x4f55e3['model'],_0x4f55e3[_0x6725('0x35')]);_0x45df69['attributes']=_[_0x6725('0x37')](_0x4f55e3[_0x6725('0x33')],qs[_0x6725('0x38')](_0x391af2[_0x6725('0x35')]['fields']));_0x45df69[_0x6725('0x39')]=_0x45df69['attributes']['length']?_0x45df69['attributes']:_0x4f55e3['model'];if(_0x391af2[_0x6725('0x35')][_0x6725('0x49')]){_0x45df69['include']=[{'all':!![]}];}_0x45df69=_[_0x6725('0x41')]({},_0x45df69,_0x391af2[_0x6725('0x43')]);return db['WhatsappQueue'][_0x6725('0x4a')](_0x45df69)[_0x6725('0x24')](handleEntityNotFound(_0x3947db,null))['then'](respondWithResult(_0x3947db,null))['catch'](handleError(_0x3947db,null));};exports['create']=function(_0x1fcbc5,_0x5c05bc){return db[_0x6725('0x2e')]['create'](_0x1fcbc5[_0x6725('0x4b')],{})[_0x6725('0x24')](function(_0x1178ee){var _0xba700a=_0x1fcbc5[_0x6725('0x4c')]['get']({'plain':!![]});if(!_0xba700a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xba700a[_0x6725('0x4d')]===_0x6725('0x4c')){var _0x49ee12=_0x1178ee[_0x6725('0x26')]({'plain':!![]});var _0x5114c5=_0x6725('0x27');return db['UserProfileSection']['find']({'where':{'name':_0x5114c5,'userProfileId':_0xba700a[_0x6725('0x4e')]},'raw':!![]})[_0x6725('0x24')](function(_0x5e2047){if(_0x5e2047&&_0x5e2047['autoAssociation']===0x0){return db[_0x6725('0x4f')][_0x6725('0x50')]({'name':_0x49ee12[_0x6725('0x2b')],'resourceId':_0x49ee12['id'],'type':_0x5e2047[_0x6725('0x2b')],'sectionId':_0x5e2047['id']},{})[_0x6725('0x24')](function(){return _0x1178ee;});}else{return _0x1178ee;}})[_0x6725('0x46')](function(_0x476638){logger['error'](_0x6725('0x51'),_0x476638);throw _0x476638;});}return _0x1178ee;})[_0x6725('0x24')](respondWithResult(_0x5c05bc,0xc9))['catch'](handleError(_0x5c05bc,null));};exports[_0x6725('0x23')]=function(_0xbf96bc,_0xaedc11){if(_0xbf96bc[_0x6725('0x4b')]['id']){delete _0xbf96bc[_0x6725('0x4b')]['id'];}return db['WhatsappQueue'][_0x6725('0x4a')]({'where':{'id':_0xbf96bc[_0x6725('0x47')]['id']}})['then'](handleEntityNotFound(_0xaedc11,null))[_0x6725('0x24')](saveUpdates(_0xbf96bc[_0x6725('0x4b')],null))['then'](respondWithResult(_0xaedc11,null))['catch'](handleError(_0xaedc11,null));};exports[_0x6725('0x25')]=function(_0xfe920f,_0x1666b8){return db[_0x6725('0x2e')]['find']({'where':{'id':_0xfe920f[_0x6725('0x47')]['id']}})[_0x6725('0x24')](handleEntityNotFound(_0x1666b8,null))[_0x6725('0x24')](removeEntity(_0x1666b8,null))['catch'](handleError(_0x1666b8,null));};exports[_0x6725('0x52')]=function(_0x3735ea,_0x538a0c){return db[_0x6725('0x2e')][_0x6725('0x52')]()[_0x6725('0x24')](respondWithResult(_0x538a0c,null))['catch'](handleError(_0x538a0c,null));};exports[_0x6725('0x53')]=function(_0x157c13,_0xe5af56,_0x250e8a){var _0x29e36c={'raw':!![],'where':{}},_0x231f94={},_0x599037;return db[_0x6725('0x2e')][_0x6725('0x54')]({'where':{'id':_0x157c13[_0x6725('0x47')]['id']}})[_0x6725('0x24')](handleEntityNotFound(_0xe5af56,null))[_0x6725('0x24')](function(_0x5d7fec){if(_0x5d7fec){_0x599037=_0x5d7fec[_0x6725('0x26')]({'plain':!![]});_0x231f94[_0x6725('0x33')]=_[_0x6725('0x48')](db[_0x6725('0x55')][_0x6725('0x2f')]);_0x231f94[_0x6725('0x35')]=_[_0x6725('0x48')](_0x157c13[_0x6725('0x35')]);_0x231f94[_0x6725('0x36')]=_[_0x6725('0x37')](_0x231f94[_0x6725('0x33')],_0x231f94[_0x6725('0x35')]);_0x29e36c[_0x6725('0x39')]=_['intersection'](_0x231f94[_0x6725('0x33')],qs[_0x6725('0x38')](_0x157c13[_0x6725('0x35')]['fields']));_0x29e36c[_0x6725('0x39')]=_0x29e36c[_0x6725('0x39')][_0x6725('0x3a')]?_0x29e36c['attributes']:_0x231f94['model'];if(!_0x157c13[_0x6725('0x35')][_0x6725('0x3b')](_0x6725('0x56'))){_0x29e36c['limit']=qs[_0x6725('0x1f')](_0x157c13[_0x6725('0x35')]['limit']);_0x29e36c[_0x6725('0x21')]=qs[_0x6725('0x21')](_0x157c13['query']['offset']);}_0x29e36c[_0x6725('0x3c')]=qs['sort'](_0x157c13[_0x6725('0x35')][_0x6725('0x3d')]);_0x29e36c[_0x6725('0x3e')]=qs[_0x6725('0x36')](_[_0x6725('0x3f')](_0x157c13[_0x6725('0x35')],_0x231f94[_0x6725('0x36')]));_0x29e36c[_0x6725('0x3e')][_0x6725('0x57')]=_0x5d7fec['id'];if(_0x157c13[_0x6725('0x35')][_0x6725('0x40')]){_0x29e36c[_0x6725('0x3e')]=_['merge'](_0x29e36c[_0x6725('0x3e')],{'$or':_['map'](_0x29e36c[_0x6725('0x39')],function(_0x34a675){var _0x2d1ad7={};_0x2d1ad7[_0x34a675]={'$like':'%'+_0x157c13['query'][_0x6725('0x40')]+'%'};return _0x2d1ad7;})});}_0x29e36c=_[_0x6725('0x41')]({},_0x29e36c,_0x157c13[_0x6725('0x43')]);return db[_0x6725('0x55')]['findAll'](_0x29e36c);}})[_0x6725('0x24')](function(_0x26235e){if(_0x26235e){return db[_0x6725('0x58')][_0x6725('0x59')]({'where':{'id':_[_0x6725('0x34')](_0x26235e,_0x6725('0x5a')),'role':_0x6725('0x5b')},'attributes':['id',_0x6725('0x2b'),_0x6725('0x5c'),_0x6725('0x5d'),_0x6725('0x5e')]});}})[_0x6725('0x24')](function(_0x210a89){if(_0x210a89){return{'count':_0x210a89[_0x6725('0x20')],'rows':_[_0x6725('0x34')](_0x210a89['rows'],function(_0x530e20){return{'membername':_0x530e20[_0x6725('0x2b')],'UserId':_0x530e20['id'],'queue_name':_0x599037['name'],'WhatsappQueueId':_0x599037['id'],'interface':util['format']('%s/%s',_0x6725('0x5f'),_0x530e20[_0x6725('0x2b')]),'penalty':0x0,'paused':_0x530e20[_0x6725('0x5c')],'createdAt':_0x530e20[_0x6725('0x5e')],'updatedAt':_0x530e20[_0x6725('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0xe5af56,_0x29e36c))[_0x6725('0x46')](handleError(_0xe5af56,null));};exports[_0x6725('0x60')]=function(_0x2b55d4,_0x35bfcb,_0x58b807){var _0xfd7368={};var _0x22bcd2={};var _0x34dc18;var _0x3ccbf3;return db[_0x6725('0x2e')][_0x6725('0x54')]({'where':{'id':_0x2b55d4[_0x6725('0x47')]['id']}})[_0x6725('0x24')](handleEntityNotFound(_0x35bfcb,null))[_0x6725('0x24')](function(_0x2902fc){if(_0x2902fc){_0x34dc18=_0x2902fc;_0x22bcd2[_0x6725('0x33')]=_['keys'](db[_0x6725('0x61')][_0x6725('0x2f')]);_0x22bcd2[_0x6725('0x35')]=_[_0x6725('0x48')](_0x2b55d4[_0x6725('0x35')]);_0x22bcd2[_0x6725('0x36')]=_[_0x6725('0x37')](_0x22bcd2[_0x6725('0x33')],_0x22bcd2[_0x6725('0x35')]);_0xfd7368[_0x6725('0x39')]=_['intersection'](_0x22bcd2[_0x6725('0x33')],qs[_0x6725('0x38')](_0x2b55d4['query'][_0x6725('0x38')]));_0xfd7368[_0x6725('0x39')]=_0xfd7368['attributes'][_0x6725('0x3a')]?_0xfd7368[_0x6725('0x39')]:_0x22bcd2[_0x6725('0x33')];_0xfd7368[_0x6725('0x3c')]=qs[_0x6725('0x3d')](_0x2b55d4[_0x6725('0x35')][_0x6725('0x3d')]);_0xfd7368[_0x6725('0x3e')]=qs[_0x6725('0x36')](_[_0x6725('0x3f')](_0x2b55d4[_0x6725('0x35')],_0x22bcd2[_0x6725('0x36')]));if(_0x2b55d4['query'][_0x6725('0x40')]){_0xfd7368['where']=_['merge'](_0xfd7368[_0x6725('0x3e')],{'$or':_['map'](_0xfd7368['attributes'],function(_0xd8a346){var _0x4eafb1={};_0x4eafb1[_0xd8a346]={'$like':'%'+_0x2b55d4[_0x6725('0x35')][_0x6725('0x40')]+'%'};return _0x4eafb1;})});}_0xfd7368=_[_0x6725('0x41')]({},_0xfd7368,_0x2b55d4[_0x6725('0x43')]);return _0x34dc18['getTeams'](_0xfd7368);}})[_0x6725('0x24')](function(_0x2c68e1){if(_0x2c68e1){_0x3ccbf3=_0x2c68e1[_0x6725('0x3a')];if(!_0x2b55d4[_0x6725('0x35')]['hasOwnProperty'](_0x6725('0x56'))){_0xfd7368[_0x6725('0x1f')]=qs[_0x6725('0x1f')](_0x2b55d4[_0x6725('0x35')][_0x6725('0x1f')]);_0xfd7368[_0x6725('0x21')]=qs[_0x6725('0x21')](_0x2b55d4[_0x6725('0x35')][_0x6725('0x21')]);}return _0x34dc18[_0x6725('0x60')](_0xfd7368);}})[_0x6725('0x24')](function(_0x181198){if(_0x181198){return _0x181198?{'count':_0x3ccbf3,'rows':_0x181198}:null;}})[_0x6725('0x24')](respondWithResult(_0x35bfcb,null))[_0x6725('0x46')](handleError(_0x35bfcb,null));};exports[_0x6725('0x62')]=function(_0x31f5c5,_0x1b5310,_0xa098f7){var _0x10bf3d=_0x31f5c5[_0x6725('0x4b')]['ids'];return db['Team'][_0x6725('0x45')]({'where':{'id':_0x10bf3d},'attributes':['id'],'include':[{'model':db[_0x6725('0x58')],'as':_0x6725('0x63'),'attributes':['id',_0x6725('0x2b'),'online',_0x6725('0x64'),_0x6725('0x65')],'raw':!![]}]})[_0x6725('0x24')](function(_0x1eb978){if(_0x1eb978){var _0xb92c47=_[_0x6725('0x66')](_0x1eb978,function(_0xfcc9b5){var _0x12df50=_0xfcc9b5[_0x6725('0x26')]({'plain':!![]});return _0x12df50['Agents'];});return db[_0x6725('0x2e')][_0x6725('0x4a')]({'where':{'id':_0x31f5c5[_0x6725('0x47')]['id']}})['then'](function(_0x2707aa){return db[_0x6725('0x67')]['transaction'](function(_0x1e2b2c){return _0x2707aa['addTeams'](_0x10bf3d,{'transaction':_0x1e2b2c})[_0x6725('0x24')](function(){return BPromise[_0x6725('0x68')](_0xb92c47,function(_0x3bf60){return db['UserWhatsappQueue'][_0x6725('0x69')]({'where':{'UserId':_0x3bf60['id'],'WhatsappQueueId':_0x31f5c5[_0x6725('0x47')]['id']},'transaction':_0x1e2b2c});});})[_0x6725('0x24')](function(){_0xb92c47[_0x6725('0x6a')](function(_0x378d43){socket['emit'](_0x6725('0x6b'),{'UserId':_0x378d43['id'],'WhatsappQueueId':_0x2707aa['id']});});});});});}})[_0x6725('0x24')](respondWithStatusCode(_0x1b5310,null))[_0x6725('0x46')](handleError(_0x1b5310,null));};exports['removeTeams']=function(_0xbd8972,_0x47b0d9,_0x965b15){return db[_0x6725('0x61')][_0x6725('0x45')]({'where':{'id':_0xbd8972[_0x6725('0x35')][_0x6725('0x6c')]},'attributes':['id'],'include':[{'model':db[_0x6725('0x58')],'as':_0x6725('0x63'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x47b0d9,null))[_0x6725('0x24')](function(_0x4bdf8e){var _0x359e6d=_[_0x6725('0x34')](_0x4bdf8e,'id');var _0x5b5959=[];var _0x12e3d7=[];var _0x1f4fbc=squel[_0x6725('0x6d')]();_0x1f4fbc[_0x6725('0x6e')]('tq.TeamId')[_0x6725('0x6f')](_0x6725('0x70'),'tq')[_0x6725('0x71')](_0x6725('0x72'),'ut',_0x6725('0x73'))['where']('WhatsappQueueId\x20=\x20?',_0xbd8972[_0x6725('0x47')]['id']);for(var _0x2e8ecf=0x0;_0x2e8ecf<_0x4bdf8e[_0x6725('0x3a')];_0x2e8ecf+=0x1){let _0x49fb53=_0x4bdf8e[_0x2e8ecf];for(var _0x3610f0=0x0;_0x3610f0<_0x49fb53['Agents'][_0x6725('0x3a')];_0x3610f0+=0x1){let _0x23d204=_0x49fb53[_0x6725('0x63')][_0x3610f0];var _0x2364e4=_0x1f4fbc['clone']();_0x2364e4[_0x6725('0x3e')]('ut.UserId\x20=\x20?',_0x23d204['id']);_0x12e3d7[_0x6725('0x74')](db[_0x6725('0x67')][_0x6725('0x35')](_0x2364e4[_0x6725('0x75')](),{'type':db[_0x6725('0x67')][_0x6725('0x76')][_0x6725('0x77')]})[_0x6725('0x24')](function(_0x50117f){if(_0x50117f[_0x6725('0x3a')]===0x1){return _0x23d204['id'];}else{var _0x86da11=_[_0x6725('0x78')](_[_0x6725('0x34')](_0x50117f,_0x6725('0x79')),function(_0x10d88e){return _[_0x6725('0x7a')](_0x359e6d,_0x10d88e);});if(_0x86da11){return _0x23d204['id'];}}}));}}return BPromise[_0x6725('0x7b')](_0x12e3d7)[_0x6725('0x24')](function(_0x4ce90e){_0x5b5959=_(_0x5b5959)[_0x6725('0x7c')](_0x4ce90e)[_0x6725('0x7d')]()[_0x6725('0x7e')]();return db[_0x6725('0x2e')]['find']({'where':{'id':_0xbd8972[_0x6725('0x47')]['id']}})[_0x6725('0x24')](function(_0x47d835){return db[_0x6725('0x67')][_0x6725('0x7f')](function(_0x10539d){return _0x47d835[_0x6725('0x80')](_0xbd8972[_0x6725('0x35')][_0x6725('0x6c')],{'transaction':_0x10539d})['then'](function(){if(!_[_0x6725('0x81')](_0x5b5959)){return _0x47d835[_0x6725('0x82')](_0x5b5959,{'transaction':_0x10539d});}})['then'](function(){_0x5b5959[_0x6725('0x6a')](function(_0x45d92d){socket[_0x6725('0x83')](_0x6725('0x84'),{'UserId':_0x45d92d,'WhatsappQueueId':_0x47d835['id']});});});});});});})[_0x6725('0x24')](respondWithStatusCode(_0x47b0d9,null))[_0x6725('0x46')](handleError(_0x47b0d9,null));};exports[_0x6725('0x85')]=function(_0x11d7cb,_0x4f8eb6,_0x1e46f1){return db[_0x6725('0x2e')][_0x6725('0x4a')]({'where':{'id':_0x11d7cb['params']['id']}})[_0x6725('0x24')](handleEntityNotFound(_0x4f8eb6,null))['then'](function(_0x14e4ee){if(_0x14e4ee){return _0x14e4ee[_0x6725('0x85')](_0x11d7cb[_0x6725('0x4b')][_0x6725('0x6c')],_['omit'](_0x11d7cb[_0x6725('0x4b')],[_0x6725('0x6c'),'id'])||{})['spread'](function(_0xd43791){for(var _0x1caa2f=0x0;_0x1caa2f<_0x11d7cb[_0x6725('0x4b')][_0x6725('0x6c')]['length'];_0x1caa2f+=0x1){socket['emit']('userWhatsappQueue:save',{'UserId':Number(_0x11d7cb[_0x6725('0x4b')][_0x6725('0x6c')][_0x1caa2f]),'WhatsappQueueId':Number(_0x11d7cb[_0x6725('0x47')]['id'])});}return _0xd43791;});}})['then'](respondWithResult(_0x4f8eb6,null))['catch'](handleError(_0x4f8eb6,null));};exports[_0x6725('0x82')]=function(_0x4fe326,_0x51947b,_0x192539){return db[_0x6725('0x2e')][_0x6725('0x4a')]({'where':{'id':_0x4fe326['params']['id']}})[_0x6725('0x24')](handleEntityNotFound(_0x51947b,null))['then'](function(_0xecb69){if(_0xecb69){return _0xecb69[_0x6725('0x82')](_0x4fe326['query'][_0x6725('0x6c')])[_0x6725('0x24')](function(){if(_[_0x6725('0x86')](_0x4fe326['query']['ids'])){for(var _0x481d64=0x0;_0x481d64<_0x4fe326[_0x6725('0x35')][_0x6725('0x6c')]['length'];_0x481d64+=0x1){socket[_0x6725('0x83')](_0x6725('0x84'),{'UserId':Number(_0x4fe326[_0x6725('0x35')][_0x6725('0x6c')][_0x481d64]),'WhatsappQueueId':Number(_0x4fe326[_0x6725('0x47')]['id'])});}}else{socket[_0x6725('0x83')](_0x6725('0x84'),{'UserId':Number(_0x4fe326[_0x6725('0x35')]['ids']),'WhatsappQueueId':Number(_0x4fe326[_0x6725('0x47')]['id'])});}});}})[_0x6725('0x24')](respondWithStatusCode(_0x51947b,null))['catch'](handleError(_0x51947b,null));};exports[_0x6725('0x87')]=function(_0x18c194,_0x4c7472,_0x196857){var _0x4ebb2a={};var _0x11a240={};var _0x180278;var _0x246fdf;return db[_0x6725('0x2e')][_0x6725('0x54')]({'where':{'id':_0x18c194[_0x6725('0x47')]['id']}})[_0x6725('0x24')](handleEntityNotFound(_0x4c7472,null))['then'](function(_0x2539aa){if(_0x2539aa){_0x180278=_0x2539aa;_0x11a240[_0x6725('0x33')]=_[_0x6725('0x48')](db[_0x6725('0x58')]['rawAttributes']);_0x11a240[_0x6725('0x35')]=_['keys'](_0x18c194[_0x6725('0x35')]);_0x11a240[_0x6725('0x36')]=_['intersection'](_0x11a240[_0x6725('0x33')],_0x11a240[_0x6725('0x35')]);_0x4ebb2a[_0x6725('0x39')]=_[_0x6725('0x37')](_0x11a240['model'],qs[_0x6725('0x38')](_0x18c194['query'][_0x6725('0x38')]));_0x4ebb2a['attributes']=_0x4ebb2a[_0x6725('0x39')]['length']?_0x4ebb2a[_0x6725('0x39')]:_0x11a240[_0x6725('0x33')];_0x4ebb2a[_0x6725('0x3c')]=qs[_0x6725('0x3d')](_0x18c194[_0x6725('0x35')][_0x6725('0x3d')]);_0x4ebb2a[_0x6725('0x3e')]=qs[_0x6725('0x36')](_[_0x6725('0x3f')](_0x18c194[_0x6725('0x35')],_0x11a240[_0x6725('0x36')]));if(_0x18c194['query'][_0x6725('0x40')]){_0x4ebb2a[_0x6725('0x3e')]=_['merge'](_0x4ebb2a[_0x6725('0x3e')],{'$or':_[_0x6725('0x34')](_0x4ebb2a[_0x6725('0x39')],function(_0xdb743b){var _0x588efa={};_0x588efa[_0xdb743b]={'$like':'%'+_0x18c194[_0x6725('0x35')][_0x6725('0x40')]+'%'};return _0x588efa;})});}_0x4ebb2a=_[_0x6725('0x41')]({},_0x4ebb2a,_0x18c194[_0x6725('0x43')]);return _0x180278[_0x6725('0x87')](_0x4ebb2a);}})[_0x6725('0x24')](function(_0x396dbb){if(_0x396dbb){_0x246fdf=_0x396dbb[_0x6725('0x3a')];if(!_0x18c194[_0x6725('0x35')][_0x6725('0x3b')](_0x6725('0x56'))){_0x4ebb2a[_0x6725('0x1f')]=qs[_0x6725('0x1f')](_0x18c194[_0x6725('0x35')][_0x6725('0x1f')]);_0x4ebb2a[_0x6725('0x21')]=qs[_0x6725('0x21')](_0x18c194[_0x6725('0x35')][_0x6725('0x21')]);}return _0x180278[_0x6725('0x87')](_0x4ebb2a);}})[_0x6725('0x24')](function(_0x529f3d){if(_0x529f3d){return _0x529f3d?{'count':_0x246fdf,'rows':_0x529f3d}:null;}})[_0x6725('0x24')](respondWithResult(_0x4c7472,null))[_0x6725('0x46')](handleError(_0x4c7472,null));};
\ No newline at end of file
+var _0x4065=['findAll','User','voicePause','interface','flatMap','transaction','findOrCreate','forEach','emit','removeTeams','Agents','select','tq.TeamId','from','team_has_whatsapp_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','push','sequelize','toString','QueryTypes','TeamId','includes','all','union','compact','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread','userWhatsappQueue:save','isArray','getAgents','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./whatsappQueue.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','WhatsappQueues','UserProfileResource','destroy','error','stack','send','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','name','merge','WhatsappQueue','catch','params','keys','rawAttributes','includeAll','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','nolimit','WhatsappQueueId','UserWhatsappQueue','findAndCountAll','UserId','agent','whatsappPause','updatedAt','rows','format','SIP','createdAt','getTeams','Team','addTeams','ids'];(function(_0x3902c1,_0x1c9eb2){var _0x1266cc=function(_0x50c2c5){while(--_0x50c2c5){_0x3902c1['push'](_0x3902c1['shift']());}};_0x1266cc(++_0x1c9eb2);}(_0x4065,0x139));var _0x5406=function(_0x5b56d1,_0x1ea7d2){_0x5b56d1=_0x5b56d1-0x0;var _0x1c8ea2=_0x4065[_0x5b56d1];return _0x1c8ea2;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x5406('0x0'));var jsonpatch=require(_0x5406('0x1'));var rp=require(_0x5406('0x2'));var moment=require(_0x5406('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5406('0x4'));var util=require(_0x5406('0x5'));var path=require('path');var sox=require(_0x5406('0x6'));var csv=require(_0x5406('0x7'));var ejs=require(_0x5406('0x8'));var fs=require('fs');var fs_extra=require(_0x5406('0x9'));var _=require(_0x5406('0xa'));var squel=require(_0x5406('0xb'));var crypto=require(_0x5406('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5406('0xd'));var toCsv=require(_0x5406('0x7'));var querystring=require(_0x5406('0xe'));var Papa=require(_0x5406('0xf'));var Redis=require(_0x5406('0x10'));var authService=require(_0x5406('0x11'));var qs=require(_0x5406('0x12'));var as=require(_0x5406('0x13'));var hardwareService=require(_0x5406('0x14'));var logger=require(_0x5406('0x15'))(_0x5406('0x16'));var utils=require(_0x5406('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x5406('0x18'))['db'];config['redis']=_[_0x5406('0x19')](config['redis'],{'host':_0x5406('0x1a'),'port':0x18eb});var socket=require(_0x5406('0x1b'))(new Redis(config[_0x5406('0x1c')]));require(_0x5406('0x1d'))[_0x5406('0x1e')](socket);function respondWithStatusCode(_0x4fc6e7,_0x173cbe){_0x173cbe=_0x173cbe||0xcc;return function(_0x339f1b){if(_0x339f1b){return _0x4fc6e7[_0x5406('0x1f')](_0x173cbe);}return _0x4fc6e7[_0x5406('0x20')](_0x173cbe)[_0x5406('0x21')]();};}function respondWithResult(_0x25dae0,_0x3d8625){_0x3d8625=_0x3d8625||0xc8;return function(_0x22bb07){if(_0x22bb07){return _0x25dae0[_0x5406('0x20')](_0x3d8625)['json'](_0x22bb07);}};}function respondWithFilteredResult(_0x1c754b,_0x3392eb){return function(_0x27f99d){if(_0x27f99d){var _0x20871e=typeof _0x3392eb[_0x5406('0x22')]===_0x5406('0x23')&&typeof _0x3392eb[_0x5406('0x24')]===_0x5406('0x23');var _0x1a5229=_0x27f99d[_0x5406('0x25')];var _0x298d14=_0x20871e?0x0:_0x3392eb[_0x5406('0x22')];var _0x475bb8=_0x20871e?_0x27f99d['count']:_0x3392eb[_0x5406('0x22')]+_0x3392eb[_0x5406('0x24')];var _0x156146;if(_0x475bb8>=_0x1a5229){_0x475bb8=_0x1a5229;_0x156146=0xc8;}else{_0x156146=0xce;}_0x1c754b['status'](_0x156146);return _0x1c754b[_0x5406('0x26')]('Content-Range',_0x298d14+'-'+_0x475bb8+'/'+_0x1a5229)[_0x5406('0x27')](_0x27f99d);}return null;};}function patchUpdates(_0xf94bf3){return function(_0x4a2fb5){try{jsonpatch[_0x5406('0x28')](_0x4a2fb5,_0xf94bf3,!![]);}catch(_0xed2d6f){return BPromise[_0x5406('0x29')](_0xed2d6f);}return _0x4a2fb5[_0x5406('0x2a')]();};}function saveUpdates(_0x5069ca,_0x75e2a9){return function(_0x12f39e){if(_0x12f39e){return _0x12f39e[_0x5406('0x2b')](_0x5069ca)['then'](function(_0x467416){return _0x467416;});}return null;};}function removeEntity(_0x58bdc9,_0x4729b1){return function(_0x166c91){if(_0x166c91){return _0x166c91['destroy']()[_0x5406('0x2c')](function(){var _0x5f5041=_0x166c91['get']({'plain':!![]});var _0x4c3d4d=_0x5406('0x2d');return db[_0x5406('0x2e')][_0x5406('0x2f')]({'where':{'type':_0x4c3d4d,'resourceId':_0x5f5041['id']}})[_0x5406('0x2c')](function(){return _0x166c91;});})['then'](function(){_0x58bdc9['status'](0xcc)[_0x5406('0x21')]();});}};}function handleEntityNotFound(_0x460edf,_0x277696){return function(_0x1f9765){if(!_0x1f9765){_0x460edf['sendStatus'](0x194);}return _0x1f9765;};}function handleError(_0x38f43b,_0x27323f){_0x27323f=_0x27323f||0x1f4;return function(_0x46fbcc){logger[_0x5406('0x30')](_0x46fbcc[_0x5406('0x31')]);if(_0x46fbcc['name']){delete _0x46fbcc['name'];}_0x38f43b[_0x5406('0x20')](_0x27323f)[_0x5406('0x32')](_0x46fbcc);};}exports['index']=function(_0x42abed,_0x39ae54){var _0x142c09={},_0x17ed82={},_0x304bcb={'count':0x0,'rows':[]};var _0x4c3088=_['map'](db['WhatsappQueue']['rawAttributes'],function(_0x4ac1a4){return{'name':_0x4ac1a4[_0x5406('0x33')],'type':_0x4ac1a4[_0x5406('0x34')][_0x5406('0x35')]};});_0x17ed82[_0x5406('0x36')]=_[_0x5406('0x37')](_0x4c3088,'name');_0x17ed82[_0x5406('0x38')]=_['keys'](_0x42abed[_0x5406('0x38')]);_0x17ed82[_0x5406('0x39')]=_[_0x5406('0x3a')](_0x17ed82[_0x5406('0x36')],_0x17ed82[_0x5406('0x38')]);_0x142c09[_0x5406('0x3b')]=_[_0x5406('0x3a')](_0x17ed82[_0x5406('0x36')],qs[_0x5406('0x3c')](_0x42abed[_0x5406('0x38')][_0x5406('0x3c')]));_0x142c09[_0x5406('0x3b')]=_0x142c09[_0x5406('0x3b')][_0x5406('0x3d')]?_0x142c09[_0x5406('0x3b')]:_0x17ed82[_0x5406('0x36')];if(!_0x42abed[_0x5406('0x38')][_0x5406('0x3e')]('nolimit')){_0x142c09[_0x5406('0x24')]=qs[_0x5406('0x24')](_0x42abed['query'][_0x5406('0x24')]);_0x142c09[_0x5406('0x22')]=qs[_0x5406('0x22')](_0x42abed[_0x5406('0x38')]['offset']);}_0x142c09[_0x5406('0x3f')]=qs[_0x5406('0x40')](_0x42abed[_0x5406('0x38')][_0x5406('0x40')]);_0x142c09[_0x5406('0x41')]=qs['filters'](_[_0x5406('0x42')](_0x42abed['query'],_0x17ed82[_0x5406('0x39')]),_0x4c3088);if(_0x42abed['query'][_0x5406('0x43')]){_0x142c09[_0x5406('0x41')]=_['merge'](_0x142c09[_0x5406('0x41')],{'$or':_[_0x5406('0x37')](_0x4c3088,function(_0x57500c){if(_0x57500c[_0x5406('0x34')]!=='VIRTUAL'){var _0xb6d32d={};_0xb6d32d[_0x57500c[_0x5406('0x44')]]={'$like':'%'+_0x42abed[_0x5406('0x38')][_0x5406('0x43')]+'%'};return _0xb6d32d;}})});}_0x142c09=_[_0x5406('0x45')]({},_0x142c09,_0x42abed['options']);var _0x16aa71={'where':_0x142c09[_0x5406('0x41')]};return db[_0x5406('0x46')][_0x5406('0x25')](_0x16aa71)[_0x5406('0x2c')](function(_0x4ff11b){_0x304bcb['count']=_0x4ff11b;if(_0x42abed[_0x5406('0x38')]['includeAll']){_0x142c09['include']=[{'all':!![]}];}return db[_0x5406('0x46')]['findAll'](_0x142c09);})['then'](function(_0x587dc6){_0x304bcb['rows']=_0x587dc6;return _0x304bcb;})[_0x5406('0x2c')](respondWithFilteredResult(_0x39ae54,_0x142c09))[_0x5406('0x47')](handleError(_0x39ae54,null));};exports['show']=function(_0x321b1c,_0x4e796e){var _0x1866dd={'raw':!![],'where':{'id':_0x321b1c[_0x5406('0x48')]['id']}},_0x1a62ef={};_0x1a62ef[_0x5406('0x36')]=_[_0x5406('0x49')](db[_0x5406('0x46')][_0x5406('0x4a')]);_0x1a62ef[_0x5406('0x38')]=_[_0x5406('0x49')](_0x321b1c['query']);_0x1a62ef[_0x5406('0x39')]=_[_0x5406('0x3a')](_0x1a62ef[_0x5406('0x36')],_0x1a62ef[_0x5406('0x38')]);_0x1866dd[_0x5406('0x3b')]=_[_0x5406('0x3a')](_0x1a62ef[_0x5406('0x36')],qs[_0x5406('0x3c')](_0x321b1c[_0x5406('0x38')][_0x5406('0x3c')]));_0x1866dd['attributes']=_0x1866dd[_0x5406('0x3b')][_0x5406('0x3d')]?_0x1866dd[_0x5406('0x3b')]:_0x1a62ef[_0x5406('0x36')];if(_0x321b1c[_0x5406('0x38')][_0x5406('0x4b')]){_0x1866dd['include']=[{'all':!![]}];}_0x1866dd=_[_0x5406('0x45')]({},_0x1866dd,_0x321b1c[_0x5406('0x4c')]);return db['WhatsappQueue'][_0x5406('0x4d')](_0x1866dd)[_0x5406('0x2c')](handleEntityNotFound(_0x4e796e,null))[_0x5406('0x2c')](respondWithResult(_0x4e796e,null))[_0x5406('0x47')](handleError(_0x4e796e,null));};exports[_0x5406('0x4e')]=function(_0x4a0878,_0x472bff){return db[_0x5406('0x46')][_0x5406('0x4e')](_0x4a0878[_0x5406('0x4f')],{})[_0x5406('0x2c')](function(_0x37847c){var _0x53892e=_0x4a0878[_0x5406('0x50')][_0x5406('0x51')]({'plain':!![]});if(!_0x53892e)throw new Error(_0x5406('0x52'));if(_0x53892e['role']===_0x5406('0x50')){var _0x395a88=_0x37847c[_0x5406('0x51')]({'plain':!![]});var _0x9aa6fe='WhatsappQueues';return db[_0x5406('0x53')][_0x5406('0x4d')]({'where':{'name':_0x9aa6fe,'userProfileId':_0x53892e[_0x5406('0x54')]},'raw':!![]})[_0x5406('0x2c')](function(_0x340065){if(_0x340065&&_0x340065['autoAssociation']===0x0){return db[_0x5406('0x2e')][_0x5406('0x4e')]({'name':_0x395a88[_0x5406('0x44')],'resourceId':_0x395a88['id'],'type':_0x340065[_0x5406('0x44')],'sectionId':_0x340065['id']},{})['then'](function(){return _0x37847c;});}else{return _0x37847c;}})['catch'](function(_0xb40b49){logger[_0x5406('0x30')](_0x5406('0x55'),_0xb40b49);throw _0xb40b49;});}return _0x37847c;})[_0x5406('0x2c')](respondWithResult(_0x472bff,0xc9))['catch'](handleError(_0x472bff,null));};exports[_0x5406('0x2b')]=function(_0x277d01,_0x604d95){if(_0x277d01[_0x5406('0x4f')]['id']){delete _0x277d01[_0x5406('0x4f')]['id'];}return db[_0x5406('0x46')][_0x5406('0x4d')]({'where':{'id':_0x277d01['params']['id']}})[_0x5406('0x2c')](handleEntityNotFound(_0x604d95,null))[_0x5406('0x2c')](saveUpdates(_0x277d01['body'],null))['then'](respondWithResult(_0x604d95,null))['catch'](handleError(_0x604d95,null));};exports[_0x5406('0x2f')]=function(_0x30e02e,_0x59c5ee){return db[_0x5406('0x46')][_0x5406('0x4d')]({'where':{'id':_0x30e02e[_0x5406('0x48')]['id']}})[_0x5406('0x2c')](handleEntityNotFound(_0x59c5ee,null))[_0x5406('0x2c')](removeEntity(_0x59c5ee,null))['catch'](handleError(_0x59c5ee,null));};exports[_0x5406('0x56')]=function(_0x28a84f,_0x695018){return db[_0x5406('0x46')][_0x5406('0x56')]()[_0x5406('0x2c')](respondWithResult(_0x695018,null))[_0x5406('0x47')](handleError(_0x695018,null));};exports['getMembers']=function(_0x429bc2,_0x1cdf38,_0x3740f1){var _0x3d7ac2={'raw':!![],'where':{}},_0x54dc36={},_0x163b3d;return db[_0x5406('0x46')][_0x5406('0x57')]({'where':{'id':_0x429bc2[_0x5406('0x48')]['id']}})['then'](handleEntityNotFound(_0x1cdf38,null))[_0x5406('0x2c')](function(_0x71f13a){if(_0x71f13a){_0x163b3d=_0x71f13a[_0x5406('0x51')]({'plain':!![]});_0x54dc36[_0x5406('0x36')]=_['keys'](db['UserWhatsappQueue'][_0x5406('0x4a')]);_0x54dc36[_0x5406('0x38')]=_[_0x5406('0x49')](_0x429bc2[_0x5406('0x38')]);_0x54dc36[_0x5406('0x39')]=_[_0x5406('0x3a')](_0x54dc36['model'],_0x54dc36[_0x5406('0x38')]);_0x3d7ac2['attributes']=_[_0x5406('0x3a')](_0x54dc36[_0x5406('0x36')],qs[_0x5406('0x3c')](_0x429bc2[_0x5406('0x38')][_0x5406('0x3c')]));_0x3d7ac2[_0x5406('0x3b')]=_0x3d7ac2[_0x5406('0x3b')]['length']?_0x3d7ac2[_0x5406('0x3b')]:_0x54dc36[_0x5406('0x36')];if(!_0x429bc2[_0x5406('0x38')][_0x5406('0x3e')](_0x5406('0x58'))){_0x3d7ac2['limit']=qs['limit'](_0x429bc2['query'][_0x5406('0x24')]);_0x3d7ac2['offset']=qs['offset'](_0x429bc2[_0x5406('0x38')][_0x5406('0x22')]);}_0x3d7ac2['order']=qs[_0x5406('0x40')](_0x429bc2['query']['sort']);_0x3d7ac2['where']=qs[_0x5406('0x39')](_[_0x5406('0x42')](_0x429bc2[_0x5406('0x38')],_0x54dc36[_0x5406('0x39')]));_0x3d7ac2[_0x5406('0x41')][_0x5406('0x59')]=_0x71f13a['id'];if(_0x429bc2[_0x5406('0x38')][_0x5406('0x43')]){_0x3d7ac2['where']=_[_0x5406('0x45')](_0x3d7ac2[_0x5406('0x41')],{'$or':_[_0x5406('0x37')](_0x3d7ac2[_0x5406('0x3b')],function(_0x5da0fa){var _0x4d5a85={};_0x4d5a85[_0x5da0fa]={'$like':'%'+_0x429bc2[_0x5406('0x38')][_0x5406('0x43')]+'%'};return _0x4d5a85;})});}_0x3d7ac2=_[_0x5406('0x45')]({},_0x3d7ac2,_0x429bc2[_0x5406('0x4c')]);return db[_0x5406('0x5a')]['findAll'](_0x3d7ac2);}})['then'](function(_0x14b4fe){if(_0x14b4fe){return db['User'][_0x5406('0x5b')]({'where':{'id':_[_0x5406('0x37')](_0x14b4fe,_0x5406('0x5c')),'role':_0x5406('0x5d')},'attributes':['id',_0x5406('0x44'),_0x5406('0x5e'),_0x5406('0x5f'),'createdAt']});}})[_0x5406('0x2c')](function(_0x5a2f9){if(_0x5a2f9){return{'count':_0x5a2f9['count'],'rows':_[_0x5406('0x37')](_0x5a2f9[_0x5406('0x60')],function(_0x55f64f){return{'membername':_0x55f64f[_0x5406('0x44')],'UserId':_0x55f64f['id'],'queue_name':_0x163b3d['name'],'WhatsappQueueId':_0x163b3d['id'],'interface':util[_0x5406('0x61')]('%s/%s',_0x5406('0x62'),_0x55f64f[_0x5406('0x44')]),'penalty':0x0,'paused':_0x55f64f[_0x5406('0x5e')],'createdAt':_0x55f64f[_0x5406('0x63')],'updatedAt':_0x55f64f['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x5406('0x2c')](respondWithFilteredResult(_0x1cdf38,_0x3d7ac2))['catch'](handleError(_0x1cdf38,null));};exports[_0x5406('0x64')]=function(_0x59355a,_0x175aa0,_0x1f9b4b){var _0x347d43={};var _0x3d1020={};var _0x424658;var _0x26f216;return db['WhatsappQueue'][_0x5406('0x57')]({'where':{'id':_0x59355a[_0x5406('0x48')]['id']}})['then'](handleEntityNotFound(_0x175aa0,null))[_0x5406('0x2c')](function(_0x28d8ef){if(_0x28d8ef){_0x424658=_0x28d8ef;_0x3d1020[_0x5406('0x36')]=_[_0x5406('0x49')](db[_0x5406('0x65')][_0x5406('0x4a')]);_0x3d1020[_0x5406('0x38')]=_[_0x5406('0x49')](_0x59355a[_0x5406('0x38')]);_0x3d1020[_0x5406('0x39')]=_[_0x5406('0x3a')](_0x3d1020[_0x5406('0x36')],_0x3d1020['query']);_0x347d43[_0x5406('0x3b')]=_[_0x5406('0x3a')](_0x3d1020['model'],qs[_0x5406('0x3c')](_0x59355a[_0x5406('0x38')][_0x5406('0x3c')]));_0x347d43[_0x5406('0x3b')]=_0x347d43['attributes'][_0x5406('0x3d')]?_0x347d43[_0x5406('0x3b')]:_0x3d1020[_0x5406('0x36')];_0x347d43[_0x5406('0x3f')]=qs[_0x5406('0x40')](_0x59355a[_0x5406('0x38')][_0x5406('0x40')]);_0x347d43[_0x5406('0x41')]=qs[_0x5406('0x39')](_['pick'](_0x59355a['query'],_0x3d1020[_0x5406('0x39')]));if(_0x59355a[_0x5406('0x38')][_0x5406('0x43')]){_0x347d43[_0x5406('0x41')]=_[_0x5406('0x45')](_0x347d43[_0x5406('0x41')],{'$or':_[_0x5406('0x37')](_0x347d43[_0x5406('0x3b')],function(_0x28c548){var _0x32cca1={};_0x32cca1[_0x28c548]={'$like':'%'+_0x59355a['query'][_0x5406('0x43')]+'%'};return _0x32cca1;})});}_0x347d43=_[_0x5406('0x45')]({},_0x347d43,_0x59355a[_0x5406('0x4c')]);return _0x424658[_0x5406('0x64')](_0x347d43);}})['then'](function(_0x59b802){if(_0x59b802){_0x26f216=_0x59b802[_0x5406('0x3d')];if(!_0x59355a[_0x5406('0x38')]['hasOwnProperty'](_0x5406('0x58'))){_0x347d43[_0x5406('0x24')]=qs['limit'](_0x59355a['query'][_0x5406('0x24')]);_0x347d43[_0x5406('0x22')]=qs[_0x5406('0x22')](_0x59355a[_0x5406('0x38')][_0x5406('0x22')]);}return _0x424658['getTeams'](_0x347d43);}})[_0x5406('0x2c')](function(_0x21c465){if(_0x21c465){return _0x21c465?{'count':_0x26f216,'rows':_0x21c465}:null;}})[_0x5406('0x2c')](respondWithResult(_0x175aa0,null))['catch'](handleError(_0x175aa0,null));};exports[_0x5406('0x66')]=function(_0x470923,_0x2446ee,_0x44fddb){var _0x266ced=_0x470923['body'][_0x5406('0x67')];return db[_0x5406('0x65')][_0x5406('0x68')]({'where':{'id':_0x266ced},'attributes':['id'],'include':[{'model':db[_0x5406('0x69')],'as':'Agents','attributes':['id',_0x5406('0x44'),'online',_0x5406('0x6a'),_0x5406('0x6b')],'raw':!![]}]})['then'](function(_0x460a8c){if(_0x460a8c){var _0x364d56=_[_0x5406('0x6c')](_0x460a8c,function(_0xe26257){var _0x34ca56=_0xe26257['get']({'plain':!![]});return _0x34ca56['Agents'];});return db['WhatsappQueue'][_0x5406('0x4d')]({'where':{'id':_0x470923[_0x5406('0x48')]['id']}})[_0x5406('0x2c')](function(_0xc4eea0){return db['sequelize'][_0x5406('0x6d')](function(_0x3c6a34){return _0xc4eea0['addTeams'](_0x266ced,{'transaction':_0x3c6a34})[_0x5406('0x2c')](function(){return BPromise['each'](_0x364d56,function(_0x306dd4){return db['UserWhatsappQueue'][_0x5406('0x6e')]({'where':{'UserId':_0x306dd4['id'],'WhatsappQueueId':_0x470923[_0x5406('0x48')]['id']},'transaction':_0x3c6a34});});})['then'](function(){_0x364d56[_0x5406('0x6f')](function(_0x43df46){socket[_0x5406('0x70')]('userWhatsappQueue:save',{'UserId':_0x43df46['id'],'WhatsappQueueId':_0xc4eea0['id']});});});});});}})[_0x5406('0x2c')](respondWithStatusCode(_0x2446ee,null))['catch'](handleError(_0x2446ee,null));};exports[_0x5406('0x71')]=function(_0x42be45,_0x49a09c,_0x1ea7ec){return db[_0x5406('0x65')][_0x5406('0x68')]({'where':{'id':_0x42be45[_0x5406('0x38')][_0x5406('0x67')]},'attributes':['id'],'include':[{'model':db[_0x5406('0x69')],'as':_0x5406('0x72'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x49a09c,null))[_0x5406('0x2c')](function(_0xe847cd){var _0xc66cc5=_[_0x5406('0x37')](_0xe847cd,'id');var _0x52dd9c=[];var _0x292900=[];var _0x568f14=squel[_0x5406('0x73')]();_0x568f14['field'](_0x5406('0x74'))[_0x5406('0x75')](_0x5406('0x76'),'tq')['join'](_0x5406('0x77'),'ut',_0x5406('0x78'))[_0x5406('0x41')]('WhatsappQueueId\x20=\x20?',_0x42be45['params']['id']);for(var _0x474c0d=0x0;_0x474c0d<_0xe847cd[_0x5406('0x3d')];_0x474c0d+=0x1){let _0xdab5b1=_0xe847cd[_0x474c0d];for(var _0x3b46f7=0x0;_0x3b46f7<_0xdab5b1[_0x5406('0x72')][_0x5406('0x3d')];_0x3b46f7+=0x1){let _0x4e2c97=_0xdab5b1['Agents'][_0x3b46f7];var _0x28e2e2=_0x568f14[_0x5406('0x79')]();_0x28e2e2[_0x5406('0x41')]('ut.UserId\x20=\x20?',_0x4e2c97['id']);_0x292900[_0x5406('0x7a')](db[_0x5406('0x7b')][_0x5406('0x38')](_0x28e2e2[_0x5406('0x7c')](),{'type':db['sequelize'][_0x5406('0x7d')]['SELECT']})[_0x5406('0x2c')](function(_0x57afac){if(_0x57afac[_0x5406('0x3d')]===0x1){return _0x4e2c97['id'];}else{var _0x9bfd82=_['every'](_[_0x5406('0x37')](_0x57afac,_0x5406('0x7e')),function(_0x4cc1e5){return _[_0x5406('0x7f')](_0xc66cc5,_0x4cc1e5);});if(_0x9bfd82){return _0x4e2c97['id'];}}}));}}return BPromise[_0x5406('0x80')](_0x292900)['then'](function(_0x3f09c4){_0x52dd9c=_(_0x52dd9c)[_0x5406('0x81')](_0x3f09c4)[_0x5406('0x82')]()['value']();return db['WhatsappQueue']['find']({'where':{'id':_0x42be45['params']['id']}})[_0x5406('0x2c')](function(_0x5f361c){return db[_0x5406('0x7b')]['transaction'](function(_0x4ed23f){return _0x5f361c[_0x5406('0x71')](_0x42be45[_0x5406('0x38')][_0x5406('0x67')],{'transaction':_0x4ed23f})[_0x5406('0x2c')](function(){if(!_['isEmpty'](_0x52dd9c)){return _0x5f361c[_0x5406('0x83')](_0x52dd9c,{'transaction':_0x4ed23f});}})[_0x5406('0x2c')](function(){_0x52dd9c[_0x5406('0x6f')](function(_0x249185){socket[_0x5406('0x70')](_0x5406('0x84'),{'UserId':_0x249185,'WhatsappQueueId':_0x5f361c['id']});});});});});});})[_0x5406('0x2c')](respondWithStatusCode(_0x49a09c,null))['catch'](handleError(_0x49a09c,null));};exports[_0x5406('0x85')]=function(_0x5001f1,_0x271290,_0xa61219){return db['WhatsappQueue']['find']({'where':{'id':_0x5001f1['params']['id']}})[_0x5406('0x2c')](handleEntityNotFound(_0x271290,null))[_0x5406('0x2c')](function(_0x5332ed){if(_0x5332ed){return _0x5332ed[_0x5406('0x85')](_0x5001f1['body'][_0x5406('0x67')],_[_0x5406('0x86')](_0x5001f1['body'],[_0x5406('0x67'),'id'])||{})[_0x5406('0x87')](function(_0x18a93f){for(var _0x100391=0x0;_0x100391<_0x5001f1[_0x5406('0x4f')][_0x5406('0x67')]['length'];_0x100391+=0x1){socket[_0x5406('0x70')](_0x5406('0x88'),{'UserId':Number(_0x5001f1[_0x5406('0x4f')][_0x5406('0x67')][_0x100391]),'WhatsappQueueId':Number(_0x5001f1[_0x5406('0x48')]['id'])});}return _0x18a93f;});}})[_0x5406('0x2c')](respondWithResult(_0x271290,null))[_0x5406('0x47')](handleError(_0x271290,null));};exports[_0x5406('0x83')]=function(_0x4ef493,_0x1934c0,_0x3eb660){return db['WhatsappQueue'][_0x5406('0x4d')]({'where':{'id':_0x4ef493[_0x5406('0x48')]['id']}})['then'](handleEntityNotFound(_0x1934c0,null))['then'](function(_0x45718b){if(_0x45718b){return _0x45718b[_0x5406('0x83')](_0x4ef493[_0x5406('0x38')][_0x5406('0x67')])[_0x5406('0x2c')](function(){if(_[_0x5406('0x89')](_0x4ef493[_0x5406('0x38')][_0x5406('0x67')])){for(var _0x268ff8=0x0;_0x268ff8<_0x4ef493['query']['ids'][_0x5406('0x3d')];_0x268ff8+=0x1){socket[_0x5406('0x70')](_0x5406('0x84'),{'UserId':Number(_0x4ef493[_0x5406('0x38')][_0x5406('0x67')][_0x268ff8]),'WhatsappQueueId':Number(_0x4ef493['params']['id'])});}}else{socket[_0x5406('0x70')]('userWhatsappQueue:remove',{'UserId':Number(_0x4ef493[_0x5406('0x38')]['ids']),'WhatsappQueueId':Number(_0x4ef493[_0x5406('0x48')]['id'])});}});}})[_0x5406('0x2c')](respondWithStatusCode(_0x1934c0,null))[_0x5406('0x47')](handleError(_0x1934c0,null));};exports[_0x5406('0x8a')]=function(_0x4d5620,_0x4b74eb,_0x4e31fa){var _0x27b48c={};var _0x3bb740={};var _0x1b68de;var _0xa7fb47;return db[_0x5406('0x46')][_0x5406('0x57')]({'where':{'id':_0x4d5620[_0x5406('0x48')]['id']}})[_0x5406('0x2c')](handleEntityNotFound(_0x4b74eb,null))[_0x5406('0x2c')](function(_0x4c32d1){if(_0x4c32d1){_0x1b68de=_0x4c32d1;_0x3bb740['model']=_[_0x5406('0x49')](db[_0x5406('0x69')][_0x5406('0x4a')]);_0x3bb740['query']=_[_0x5406('0x49')](_0x4d5620[_0x5406('0x38')]);_0x3bb740[_0x5406('0x39')]=_[_0x5406('0x3a')](_0x3bb740['model'],_0x3bb740[_0x5406('0x38')]);_0x27b48c['attributes']=_['intersection'](_0x3bb740[_0x5406('0x36')],qs['fields'](_0x4d5620[_0x5406('0x38')][_0x5406('0x3c')]));_0x27b48c['attributes']=_0x27b48c[_0x5406('0x3b')]['length']?_0x27b48c[_0x5406('0x3b')]:_0x3bb740[_0x5406('0x36')];_0x27b48c[_0x5406('0x3f')]=qs[_0x5406('0x40')](_0x4d5620[_0x5406('0x38')][_0x5406('0x40')]);_0x27b48c[_0x5406('0x41')]=qs[_0x5406('0x39')](_[_0x5406('0x42')](_0x4d5620['query'],_0x3bb740[_0x5406('0x39')]));if(_0x4d5620[_0x5406('0x38')][_0x5406('0x43')]){_0x27b48c[_0x5406('0x41')]=_[_0x5406('0x45')](_0x27b48c['where'],{'$or':_[_0x5406('0x37')](_0x27b48c['attributes'],function(_0x4f99a1){var _0x26c2c7={};_0x26c2c7[_0x4f99a1]={'$like':'%'+_0x4d5620[_0x5406('0x38')][_0x5406('0x43')]+'%'};return _0x26c2c7;})});}_0x27b48c=_[_0x5406('0x45')]({},_0x27b48c,_0x4d5620[_0x5406('0x4c')]);return _0x1b68de[_0x5406('0x8a')](_0x27b48c);}})[_0x5406('0x2c')](function(_0x3ade4e){if(_0x3ade4e){_0xa7fb47=_0x3ade4e['length'];if(!_0x4d5620[_0x5406('0x38')][_0x5406('0x3e')](_0x5406('0x58'))){_0x27b48c['limit']=qs[_0x5406('0x24')](_0x4d5620[_0x5406('0x38')]['limit']);_0x27b48c[_0x5406('0x22')]=qs[_0x5406('0x22')](_0x4d5620[_0x5406('0x38')][_0x5406('0x22')]);}return _0x1b68de['getAgents'](_0x27b48c);}})[_0x5406('0x2c')](function(_0x57c657){if(_0x57c657){return _0x57c657?{'count':_0xa7fb47,'rows':_0x57c657}:null;}})[_0x5406('0x2c')](respondWithResult(_0x4b74eb,null))['catch'](handleError(_0x4b74eb,null));};
\ No newline at end of file
index a6ea01d..ba8cce3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70bd=['hook','exports','../../mysqldb','WhatsappQueue','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0xfabe85,_0x596b8a){var _0x545147=function(_0x2df9ea){while(--_0x2df9ea){_0xfabe85['push'](_0xfabe85['shift']());}};_0x545147(++_0x596b8a);}(_0x70bd,0x89));var _0xd70b=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0x70bd[_0x33032e];return _0x13316b;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0xd70b('0x0'))['db'][_0xd70b('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xd70b('0x2')](0x0);var events={'afterCreate':_0xd70b('0x3'),'afterUpdate':_0xd70b('0x4'),'afterDestroy':'remove'};function emitEvent(_0x5008be){return function(_0x4ae388,_0x1a18b4,_0x51b8ff){WhatsappQueueEvents[_0xd70b('0x5')](_0x5008be+':'+_0x4ae388['id'],_0x4ae388);WhatsappQueueEvents[_0xd70b('0x5')](_0x5008be,_0x4ae388);_0x51b8ff(null);};}for(var e in events){if(events[_0xd70b('0x6')](e)){var event=events[e];WhatsappQueue[_0xd70b('0x7')](e,emitEvent(event));}}module[_0xd70b('0x8')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x6337=['../../mysqldb','WhatsappQueue','save','remove','emit','hasOwnProperty','hook','events'];(function(_0x1f5fff,_0x3e99b4){var _0x167f6f=function(_0xba28fa){while(--_0xba28fa){_0x1f5fff['push'](_0x1f5fff['shift']());}};_0x167f6f(++_0x3e99b4);}(_0x6337,0xd7));var _0x7633=function(_0x2e1b3d,_0x43ea12){_0x2e1b3d=_0x2e1b3d-0x0;var _0x29f672=_0x6337[_0x2e1b3d];return _0x29f672;};'use strict';var EventEmitter=require(_0x7633('0x0'));var WhatsappQueue=require(_0x7633('0x1'))['db'][_0x7633('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7633('0x3'),'afterUpdate':'update','afterDestroy':_0x7633('0x4')};function emitEvent(_0x2d7104){return function(_0x2fcadb,_0x4ca32e,_0x4267ef){WhatsappQueueEvents[_0x7633('0x5')](_0x2d7104+':'+_0x2fcadb['id'],_0x2fcadb);WhatsappQueueEvents[_0x7633('0x5')](_0x2d7104,_0x2fcadb);_0x4267ef(null);};}for(var e in events){if(events[_0x7633('0x6')](e)){var event=events[e];WhatsappQueue[_0x7633('0x7')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
index 721b35d..d37b035 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc122=['path','rimraf','../../config/environment','./whatsappQueue.attributes','define','WhatsappQueue','whatsapp_queues','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0xce42b4,_0x4efbe0){var _0x333b85=function(_0x121a5e){while(--_0x121a5e){_0xce42b4['push'](_0xce42b4['shift']());}};_0x333b85(++_0x4efbe0);}(_0xc122,0x173));var _0x2c12=function(_0x7ad329,_0x131e93){_0x7ad329=_0x7ad329-0x0;var _0x5c6678=_0xc122[_0x7ad329];return _0x5c6678;};'use strict';var _=require(_0x2c12('0x0'));var util=require(_0x2c12('0x1'));var logger=require(_0x2c12('0x2'))(_0x2c12('0x3'));var moment=require(_0x2c12('0x4'));var BPromise=require(_0x2c12('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2c12('0x6'));var rimraf=require(_0x2c12('0x7'));var config=require(_0x2c12('0x8'));var attributes=require(_0x2c12('0x9'));module['exports']=function(_0x5cd844,_0x22fa5e){return _0x5cd844[_0x2c12('0xa')](_0x2c12('0xb'),attributes,{'tableName':_0x2c12('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0cd5=['./whatsappQueue.attributes','exports','define','WhatsappQueue','whatsapp_queues','lodash','../../config/logger','moment','bluebird','path'];(function(_0xee179f,_0x1e1c49){var _0x53b5f1=function(_0x2a4d29){while(--_0x2a4d29){_0xee179f['push'](_0xee179f['shift']());}};_0x53b5f1(++_0x1e1c49);}(_0x0cd5,0xc3));var _0x50cd=function(_0x3388d8,_0x256024){_0x3388d8=_0x3388d8-0x0;var _0x2bbe73=_0x0cd5[_0x3388d8];return _0x2bbe73;};'use strict';var _=require(_0x50cd('0x0'));var util=require('util');var logger=require(_0x50cd('0x1'))('api');var moment=require(_0x50cd('0x2'));var BPromise=require(_0x50cd('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x50cd('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x50cd('0x5'));module[_0x50cd('0x6')]=function(_0x1ac237,_0x228021){return _0x1ac237[_0x50cd('0x7')](_0x50cd('0x8'),attributes,{'tableName':_0x50cd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4ca6814..3c32cad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58cc=['bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./whatsappQueue.socket','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetWhatsappQueue','WhatsappQueue','raw','options','where','limit','include','map','attributes','model','catch','find','ShowWhatsappQueue','lodash','util','moment'];(function(_0x36ac89,_0x49dbf5){var _0x556d28=function(_0x50d7a2){while(--_0x50d7a2){_0x36ac89['push'](_0x36ac89['shift']());}};_0x556d28(++_0x49dbf5);}(_0x58cc,0x99));var _0xc58c=function(_0x50f392,_0x1d8441){_0x50f392=_0x50f392-0x0;var _0x5926f2=_0x58cc[_0x50f392];return _0x5926f2;};'use strict';var _=require(_0xc58c('0x0'));var util=require(_0xc58c('0x1'));var moment=require(_0xc58c('0x2'));var BPromise=require(_0xc58c('0x3'));var rs=require(_0xc58c('0x4'));var fs=require('fs');var Redis=require(_0xc58c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc58c('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xc58c('0x7'));var jayson=require(_0xc58c('0x8'));var client=jayson[_0xc58c('0x9')][_0xc58c('0xa')]({'port':0x232a});config[_0xc58c('0xb')]=_[_0xc58c('0xc')](config[_0xc58c('0xb')],{'host':_0xc58c('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xc58c('0xe'))['register'](socket);function respondWithRpcPromise(_0x1b1b4f,_0x321f22,_0xb2654e){return new BPromise(function(_0x123009,_0x3adc60){return client['request'](_0x1b1b4f,_0xb2654e)[_0xc58c('0xf')](function(_0x22689c){logger[_0xc58c('0x10')](_0xc58c('0x11'),_0x321f22,_0xc58c('0x12'));logger[_0xc58c('0x13')](_0xc58c('0x14'),_0x321f22,_0xc58c('0x12'),JSON[_0xc58c('0x15')](_0x22689c));if(_0x22689c[_0xc58c('0x16')]){if(_0x22689c['error'][_0xc58c('0x17')]===0x1f4){logger['error'](_0xc58c('0x11'),_0x321f22,_0x22689c[_0xc58c('0x16')][_0xc58c('0x18')]);return _0x3adc60(_0x22689c[_0xc58c('0x16')][_0xc58c('0x18')]);}logger[_0xc58c('0x16')](_0xc58c('0x11'),_0x321f22,_0x22689c[_0xc58c('0x16')]['message']);return _0x123009(_0x22689c['error']['message']);}else{logger[_0xc58c('0x10')](_0xc58c('0x11'),_0x321f22,_0xc58c('0x12'));_0x123009(_0x22689c[_0xc58c('0x19')][_0xc58c('0x18')]);}})['catch'](function(_0x27b5c9){logger[_0xc58c('0x16')]('WhatsappQueue,\x20%s,\x20%s',_0x321f22,_0x27b5c9);_0x3adc60(_0x27b5c9);});});}exports[_0xc58c('0x1a')]=function(_0x52ff9c){var _0x19fbb6=this;return new Promise(function(_0x5173c6,_0x430f12){return db[_0xc58c('0x1b')]['findAll']({'raw':_0x52ff9c['options']?_0x52ff9c['options'][_0xc58c('0x1c')]===undefined?!![]:![]:!![],'where':_0x52ff9c[_0xc58c('0x1d')]?_0x52ff9c[_0xc58c('0x1d')][_0xc58c('0x1e')]||null:null,'attributes':_0x52ff9c[_0xc58c('0x1d')]?_0x52ff9c[_0xc58c('0x1d')]['attributes']||null:null,'limit':_0x52ff9c['options']?_0x52ff9c[_0xc58c('0x1d')][_0xc58c('0x1f')]||null:null,'include':_0x52ff9c[_0xc58c('0x1d')]?_0x52ff9c[_0xc58c('0x1d')][_0xc58c('0x20')]?_[_0xc58c('0x21')](_0x52ff9c[_0xc58c('0x1d')][_0xc58c('0x20')],function(_0x157f6e){return{'model':db[_0x157f6e['model']],'as':_0x157f6e['as'],'attributes':_0x157f6e[_0xc58c('0x22')],'include':_0x157f6e[_0xc58c('0x20')]?_[_0xc58c('0x21')](_0x157f6e[_0xc58c('0x20')],function(_0x34cf44){return{'model':db[_0x34cf44[_0xc58c('0x23')]],'as':_0x34cf44['as'],'attributes':_0x34cf44[_0xc58c('0x22')],'include':_0x34cf44[_0xc58c('0x20')]?_[_0xc58c('0x21')](_0x34cf44[_0xc58c('0x20')],function(_0x4c354a){return{'model':db[_0x4c354a[_0xc58c('0x23')]],'as':_0x4c354a['as'],'attributes':_0x4c354a[_0xc58c('0x22')]};}):[]};}):[]};}):[]:[]})[_0xc58c('0xf')](function(_0x2fd4a4){logger[_0xc58c('0x10')](_0xc58c('0x1a'),_0x52ff9c);logger[_0xc58c('0x13')]('GetWhatsappQueue',_0x52ff9c,JSON[_0xc58c('0x15')](_0x2fd4a4));_0x5173c6(_0x2fd4a4);})[_0xc58c('0x24')](function(_0x152d13){logger[_0xc58c('0x16')](_0xc58c('0x1a'),_0x152d13[_0xc58c('0x18')],_0x52ff9c);_0x430f12(_0x19fbb6['error'](0x1f4,_0x152d13[_0xc58c('0x18')]));});});};exports['ShowWhatsappQueue']=function(_0x18642c){var _0xc35cdf=this;return new Promise(function(_0x545027,_0x3d8389){return db[_0xc58c('0x1b')][_0xc58c('0x25')]({'raw':_0x18642c[_0xc58c('0x1d')]?_0x18642c[_0xc58c('0x1d')][_0xc58c('0x1c')]===undefined?!![]:![]:!![],'where':_0x18642c[_0xc58c('0x1d')]?_0x18642c[_0xc58c('0x1d')][_0xc58c('0x1e')]||null:null,'attributes':_0x18642c[_0xc58c('0x1d')]?_0x18642c['options']['attributes']||null:null,'include':_0x18642c[_0xc58c('0x1d')]?_0x18642c[_0xc58c('0x1d')][_0xc58c('0x20')]?_[_0xc58c('0x21')](_0x18642c[_0xc58c('0x1d')][_0xc58c('0x20')],function(_0x39c4b6){return{'model':db[_0x39c4b6['model']],'as':_0x39c4b6['as'],'attributes':_0x39c4b6[_0xc58c('0x22')],'include':_0x39c4b6[_0xc58c('0x20')]?_['map'](_0x39c4b6['include'],function(_0x30812e){return{'model':db[_0x30812e[_0xc58c('0x23')]],'as':_0x30812e['as'],'attributes':_0x30812e['attributes'],'include':_0x30812e['include']?_[_0xc58c('0x21')](_0x30812e[_0xc58c('0x20')],function(_0x477fea){return{'model':db[_0x477fea['model']],'as':_0x477fea['as'],'attributes':_0x477fea['attributes']};}):[]};}):[]};}):[]:[]})[_0xc58c('0xf')](function(_0x94ec10){logger[_0xc58c('0x10')](_0xc58c('0x26'),_0x18642c);logger['debug'](_0xc58c('0x26'),_0x18642c,JSON[_0xc58c('0x15')](_0x94ec10));_0x545027(_0x94ec10);})['catch'](function(_0x27d186){logger[_0xc58c('0x16')](_0xc58c('0x26'),_0x27d186[_0xc58c('0x18')],_0x18642c);_0x3d8389(_0xc35cdf[_0xc58c('0x16')](0x1f4,_0x27d186[_0xc58c('0x18')]));});});};
\ No newline at end of file
+var _0xa14b=['where','attributes','limit','include','map','model','then','debug','find','ShowWhatsappQueue','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappQueue.socket','register','request','WhatsappQueue,\x20%s,\x20%s','request\x20sent','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','raw'];(function(_0x2d7842,_0x5e1932){var _0x35485d=function(_0x56843a){while(--_0x56843a){_0x2d7842['push'](_0x2d7842['shift']());}};_0x35485d(++_0x5e1932);}(_0xa14b,0xd7));var _0xba14=function(_0x396795,_0xaa9d18){_0x396795=_0x396795-0x0;var _0x2f8e87=_0xa14b[_0x396795];return _0x2f8e87;};'use strict';var _=require('lodash');var util=require(_0xba14('0x0'));var moment=require(_0xba14('0x1'));var BPromise=require(_0xba14('0x2'));var rs=require(_0xba14('0x3'));var fs=require('fs');var Redis=require(_0xba14('0x4'));var db=require(_0xba14('0x5'))['db'];var utils=require(_0xba14('0x6'));var logger=require(_0xba14('0x7'))('rpc');var config=require(_0xba14('0x8'));var jayson=require(_0xba14('0x9'));var client=jayson[_0xba14('0xa')][_0xba14('0xb')]({'port':0x232a});config[_0xba14('0xc')]=_['defaults'](config[_0xba14('0xc')],{'host':_0xba14('0xd'),'port':0x18eb});var socket=require(_0xba14('0xe'))(new Redis(config[_0xba14('0xc')]));require(_0xba14('0xf'))[_0xba14('0x10')](socket);function respondWithRpcPromise(_0x39280e,_0x6aaa43,_0x25f10e){return new BPromise(function(_0x3bdc8e,_0x15530c){return client[_0xba14('0x11')](_0x39280e,_0x25f10e)['then'](function(_0x201687){logger['info'](_0xba14('0x12'),_0x6aaa43,_0xba14('0x13'));logger['debug'](_0xba14('0x14'),_0x6aaa43,_0xba14('0x13'),JSON[_0xba14('0x15')](_0x201687));if(_0x201687[_0xba14('0x16')]){if(_0x201687[_0xba14('0x16')]['code']===0x1f4){logger['error'](_0xba14('0x12'),_0x6aaa43,_0x201687[_0xba14('0x16')][_0xba14('0x17')]);return _0x15530c(_0x201687[_0xba14('0x16')][_0xba14('0x17')]);}logger[_0xba14('0x16')](_0xba14('0x12'),_0x6aaa43,_0x201687['error'][_0xba14('0x17')]);return _0x3bdc8e(_0x201687[_0xba14('0x16')][_0xba14('0x17')]);}else{logger[_0xba14('0x18')]('WhatsappQueue,\x20%s,\x20%s',_0x6aaa43,_0xba14('0x13'));_0x3bdc8e(_0x201687['result']['message']);}})[_0xba14('0x19')](function(_0x246b2b){logger['error'](_0xba14('0x12'),_0x6aaa43,_0x246b2b);_0x15530c(_0x246b2b);});});}exports[_0xba14('0x1a')]=function(_0x53e200){var _0x543cab=this;return new Promise(function(_0x576591,_0x50e6eb){return db[_0xba14('0x1b')][_0xba14('0x1c')]({'raw':_0x53e200['options']?_0x53e200[_0xba14('0x1d')][_0xba14('0x1e')]===undefined?!![]:![]:!![],'where':_0x53e200['options']?_0x53e200[_0xba14('0x1d')][_0xba14('0x1f')]||null:null,'attributes':_0x53e200['options']?_0x53e200[_0xba14('0x1d')][_0xba14('0x20')]||null:null,'limit':_0x53e200['options']?_0x53e200[_0xba14('0x1d')][_0xba14('0x21')]||null:null,'include':_0x53e200[_0xba14('0x1d')]?_0x53e200['options'][_0xba14('0x22')]?_[_0xba14('0x23')](_0x53e200[_0xba14('0x1d')][_0xba14('0x22')],function(_0x25d414){return{'model':db[_0x25d414[_0xba14('0x24')]],'as':_0x25d414['as'],'attributes':_0x25d414['attributes'],'include':_0x25d414[_0xba14('0x22')]?_[_0xba14('0x23')](_0x25d414[_0xba14('0x22')],function(_0x5edd87){return{'model':db[_0x5edd87['model']],'as':_0x5edd87['as'],'attributes':_0x5edd87[_0xba14('0x20')],'include':_0x5edd87[_0xba14('0x22')]?_['map'](_0x5edd87[_0xba14('0x22')],function(_0x3d031a){return{'model':db[_0x3d031a['model']],'as':_0x3d031a['as'],'attributes':_0x3d031a[_0xba14('0x20')]};}):[]};}):[]};}):[]:[]})[_0xba14('0x25')](function(_0x17633c){logger['info'](_0xba14('0x1a'),_0x53e200);logger[_0xba14('0x26')](_0xba14('0x1a'),_0x53e200,JSON[_0xba14('0x15')](_0x17633c));_0x576591(_0x17633c);})['catch'](function(_0x24efd6){logger[_0xba14('0x16')](_0xba14('0x1a'),_0x24efd6['message'],_0x53e200);_0x50e6eb(_0x543cab[_0xba14('0x16')](0x1f4,_0x24efd6[_0xba14('0x17')]));});});};exports['ShowWhatsappQueue']=function(_0x3c974b){var _0x36212b=this;return new Promise(function(_0x2cd31c,_0x2f04d3){return db[_0xba14('0x1b')][_0xba14('0x27')]({'raw':_0x3c974b[_0xba14('0x1d')]?_0x3c974b[_0xba14('0x1d')][_0xba14('0x1e')]===undefined?!![]:![]:!![],'where':_0x3c974b[_0xba14('0x1d')]?_0x3c974b[_0xba14('0x1d')]['where']||null:null,'attributes':_0x3c974b[_0xba14('0x1d')]?_0x3c974b['options']['attributes']||null:null,'include':_0x3c974b['options']?_0x3c974b['options'][_0xba14('0x22')]?_[_0xba14('0x23')](_0x3c974b[_0xba14('0x1d')][_0xba14('0x22')],function(_0x12bb82){return{'model':db[_0x12bb82[_0xba14('0x24')]],'as':_0x12bb82['as'],'attributes':_0x12bb82[_0xba14('0x20')],'include':_0x12bb82[_0xba14('0x22')]?_[_0xba14('0x23')](_0x12bb82[_0xba14('0x22')],function(_0x2579c){return{'model':db[_0x2579c[_0xba14('0x24')]],'as':_0x2579c['as'],'attributes':_0x2579c[_0xba14('0x20')],'include':_0x2579c['include']?_[_0xba14('0x23')](_0x2579c[_0xba14('0x22')],function(_0x2b4075){return{'model':db[_0x2b4075['model']],'as':_0x2b4075['as'],'attributes':_0x2b4075[_0xba14('0x20')]};}):[]};}):[]};}):[]:[]})[_0xba14('0x25')](function(_0x445dd2){logger['info'](_0xba14('0x28'),_0x3c974b);logger[_0xba14('0x26')]('ShowWhatsappQueue',_0x3c974b,JSON['stringify'](_0x445dd2));_0x2cd31c(_0x445dd2);})[_0xba14('0x19')](function(_0x1ccfd0){logger['error'](_0xba14('0x28'),_0x1ccfd0[_0xba14('0x17')],_0x3c974b);_0x2f04d3(_0x36212b['error'](0x1f4,_0x1ccfd0[_0xba14('0x17')]));});});};
\ No newline at end of file
index 4056830..2e21687 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dd0=['remove','update','emit','removeListener','length','whatsappQueue:'];(function(_0x2958b1,_0x1a0a35){var _0x215069=function(_0x3c6035){while(--_0x3c6035){_0x2958b1['push'](_0x2958b1['shift']());}};_0x215069(++_0x1a0a35);}(_0x4dd0,0x162));var _0x04dd=function(_0x673978,_0x9bf98f){_0x673978=_0x673978-0x0;var _0x1d858b=_0x4dd0[_0x673978];return _0x1d858b;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=['save',_0x04dd('0x0'),_0x04dd('0x1')];function createListener(_0x4f80dd,_0x2d4516){return function(_0x31286b){_0x2d4516[_0x04dd('0x2')](_0x4f80dd,_0x31286b);};}function removeListener(_0x497359,_0xd7e133){return function(){WhatsappQueueEvents[_0x04dd('0x3')](_0x497359,_0xd7e133);};}exports['register']=function(_0x117d9e){for(var _0x5285cb=0x0,_0x19225f=events[_0x04dd('0x4')];_0x5285cb<_0x19225f;_0x5285cb++){var _0x2bd0b9=events[_0x5285cb];var _0x47ec72=createListener(_0x04dd('0x5')+_0x2bd0b9,_0x117d9e);WhatsappQueueEvents['on'](_0x2bd0b9,_0x47ec72);}};
\ No newline at end of file
+var _0x41ca=['length','./whatsappQueue.events','update','emit','removeListener','register'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x41ca,0x12d));var _0xa41c=function(_0xb7110b,_0x31b4fa){_0xb7110b=_0xb7110b-0x0;var _0x43bc78=_0x41ca[_0xb7110b];return _0x43bc78;};'use strict';var WhatsappQueueEvents=require(_0xa41c('0x0'));var events=['save','remove',_0xa41c('0x1')];function createListener(_0x5e6e5c,_0x23ad02){return function(_0x40a399){_0x23ad02[_0xa41c('0x2')](_0x5e6e5c,_0x40a399);};}function removeListener(_0x45cef5,_0x16e5bd){return function(){WhatsappQueueEvents[_0xa41c('0x3')](_0x45cef5,_0x16e5bd);};}exports[_0xa41c('0x4')]=function(_0x2380d8){for(var _0x478010=0x0,_0x4a4afc=events[_0xa41c('0x5')];_0x478010<_0x4a4afc;_0x478010++){var _0x28f785=events[_0x478010];var _0x3b9387=createListener('whatsappQueue:'+_0x28f785,_0x2380d8);WhatsappQueueEvents['on'](_0x28f785,_0x3b9387);}};
\ No newline at end of file
index 4f52bee..9f8939d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f84=['./whatsappQueueReport.controller','get','index','/describe','describe','isAuthenticated','show','post','/:id','update','delete','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x25d386,_0x108d0d){var _0x857f4a=function(_0x3eb98d){while(--_0x3eb98d){_0x25d386['push'](_0x25d386['shift']());}};_0x857f4a(++_0x108d0d);}(_0x4f84,0xdd));var _0x44f8=function(_0x1cd65a,_0x29fa8f){_0x1cd65a=_0x1cd65a-0x0;var _0xf93849=_0x4f84[_0x1cd65a];return _0xf93849;};'use strict';var multer=require(_0x44f8('0x0'));var util=require(_0x44f8('0x1'));var path=require('path');var timeout=require(_0x44f8('0x2'));var express=require(_0x44f8('0x3'));var router=express['Router']();var fs_extra=require(_0x44f8('0x4'));var auth=require(_0x44f8('0x5'));var interaction=require(_0x44f8('0x6'));var config=require('../../config/environment');var controller=require(_0x44f8('0x7'));router[_0x44f8('0x8')]('/',auth['isAuthenticated'](),controller[_0x44f8('0x9')]);router[_0x44f8('0x8')](_0x44f8('0xa'),auth['isAuthenticated'](),controller[_0x44f8('0xb')]);router['get']('/:id',auth[_0x44f8('0xc')](),controller[_0x44f8('0xd')]);router[_0x44f8('0xe')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x44f8('0xf'),auth['isAuthenticated'](),controller[_0x44f8('0x10')]);router[_0x44f8('0x11')](_0x44f8('0xf'),auth[_0x44f8('0xc')](),controller['destroy']);module[_0x44f8('0x12')]=router;
\ No newline at end of file
+var _0x637c=['connect-timeout','../../config/environment','get','isAuthenticated','index','describe','post','create','/:id','delete','destroy','exports','multer','path'];(function(_0x23bc99,_0x46e768){var _0x3031af=function(_0x2bdcbb){while(--_0x2bdcbb){_0x23bc99['push'](_0x23bc99['shift']());}};_0x3031af(++_0x46e768);}(_0x637c,0xa6));var _0xc637=function(_0xe3fc61,_0xa41db3){_0xe3fc61=_0xe3fc61-0x0;var _0x1a702a=_0x637c[_0xe3fc61];return _0x1a702a;};'use strict';var multer=require(_0xc637('0x0'));var util=require('util');var path=require(_0xc637('0x1'));var timeout=require(_0xc637('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xc637('0x3'));var controller=require('./whatsappQueueReport.controller');router[_0xc637('0x4')]('/',auth[_0xc637('0x5')](),controller[_0xc637('0x6')]);router[_0xc637('0x4')]('/describe',auth[_0xc637('0x5')](),controller[_0xc637('0x7')]);router[_0xc637('0x4')]('/:id',auth[_0xc637('0x5')](),controller['show']);router[_0xc637('0x8')]('/',auth['isAuthenticated'](),controller[_0xc637('0x9')]);router['put'](_0xc637('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xc637('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xc637('0xc')]);module[_0xc637('0xd')]=router;
\ No newline at end of file
index fc4be34..df1b6b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x4c42e9,_0xa58a1){var _0x34af6d=function(_0x3ba7a9){while(--_0x3ba7a9){_0x4c42e9['push'](_0x4c42e9['shift']());}};_0x34af6d(++_0xa58a1);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'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 _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x26313a,_0x5c97cb){var _0x550337=function(_0x16bfb1){while(--_0x16bfb1){_0x26313a['push'](_0x26313a['shift']());}};_0x550337(++_0x5c97cb);}(_0x7a54,0x106));var _0x47a5=function(_0x34929c,_0x4db117){_0x34929c=_0x34929c-0x0;var _0x3d139a=_0x7a54[_0x34929c];return _0x3d139a;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
index 9ef2bd6..3b03185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2cf=['body','destroy','describe','rimraf','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','lodash','squel','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','end','error','stack','name','index','WhatsappQueueReport','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','params'];(function(_0xffd26b,_0x1096f4){var _0x451f56=function(_0x3a97a1){while(--_0x3a97a1){_0xffd26b['push'](_0xffd26b['shift']());}};_0x451f56(++_0x1096f4);}(_0xe2cf,0x1a1));var _0xfe2c=function(_0x19ef32,_0x3b78ff){_0x19ef32=_0x19ef32-0x0;var _0x20034e=_0xe2cf[_0x19ef32];return _0x20034e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfe2c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfe2c('0x1'));var rp=require('request-promise');var moment=require(_0xfe2c('0x2'));var BPromise=require(_0xfe2c('0x3'));var Mustache=require(_0xfe2c('0x4'));var util=require(_0xfe2c('0x5'));var path=require('path');var sox=require(_0xfe2c('0x6'));var csv=require(_0xfe2c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfe2c('0x8'));var squel=require(_0xfe2c('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xfe2c('0xa'));var toCsv=require(_0xfe2c('0x7'));var querystring=require(_0xfe2c('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xfe2c('0xc'));var qs=require(_0xfe2c('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfe2c('0xe'));var logger=require(_0xfe2c('0xf'))(_0xfe2c('0x10'));var utils=require(_0xfe2c('0x11'));var config=require(_0xfe2c('0x12'));var licenseUtil=require(_0xfe2c('0x13'));var db=require(_0xfe2c('0x14'))['db'];function respondWithStatusCode(_0x4af8b7,_0x5e7389){_0x5e7389=_0x5e7389||0xcc;return function(_0x59ecf8){if(_0x59ecf8){return _0x4af8b7['sendStatus'](_0x5e7389);}return _0x4af8b7[_0xfe2c('0x15')](_0x5e7389)['end']();};}function respondWithResult(_0x5a6ad5,_0x38ba2c){_0x38ba2c=_0x38ba2c||0xc8;return function(_0x4d0a10){if(_0x4d0a10){return _0x5a6ad5[_0xfe2c('0x15')](_0x38ba2c)[_0xfe2c('0x16')](_0x4d0a10);}};}function respondWithFilteredResult(_0x522692,_0x5039cb){return function(_0x1a4684){if(_0x1a4684){var _0x3b3ebd=typeof _0x5039cb[_0xfe2c('0x17')]===_0xfe2c('0x18')&&typeof _0x5039cb['limit']===_0xfe2c('0x18');var _0x96a3a3=_0x1a4684[_0xfe2c('0x19')];var _0x23242b=_0x3b3ebd?0x0:_0x5039cb[_0xfe2c('0x17')];var _0x13f233=_0x3b3ebd?_0x1a4684['count']:_0x5039cb[_0xfe2c('0x17')]+_0x5039cb[_0xfe2c('0x1a')];var _0x1d7852;if(_0x13f233>=_0x96a3a3){_0x13f233=_0x96a3a3;_0x1d7852=0xc8;}else{_0x1d7852=0xce;}_0x522692[_0xfe2c('0x15')](_0x1d7852);return _0x522692['set'](_0xfe2c('0x1b'),_0x23242b+'-'+_0x13f233+'/'+_0x96a3a3)['json'](_0x1a4684);}return null;};}function patchUpdates(_0x4e9137){return function(_0x408f31){try{jsonpatch[_0xfe2c('0x1c')](_0x408f31,_0x4e9137,!![]);}catch(_0x4bf7c0){return BPromise[_0xfe2c('0x1d')](_0x4bf7c0);}return _0x408f31[_0xfe2c('0x1e')]();};}function saveUpdates(_0x5e609f,_0x1bd50e){return function(_0x5dd54b){if(_0x5dd54b){return _0x5dd54b[_0xfe2c('0x1f')](_0x5e609f)[_0xfe2c('0x20')](function(_0x8b5c0d){return _0x8b5c0d;});}return null;};}function removeEntity(_0x298819,_0x360928){return function(_0x2ee3b3){if(_0x2ee3b3){return _0x2ee3b3['destroy']()[_0xfe2c('0x20')](function(){_0x298819[_0xfe2c('0x15')](0xcc)[_0xfe2c('0x21')]();});}};}function handleEntityNotFound(_0x26448c,_0x3486b5){return function(_0x10afde){if(!_0x10afde){_0x26448c['sendStatus'](0x194);}return _0x10afde;};}function handleError(_0x205da8,_0x5e8abf){_0x5e8abf=_0x5e8abf||0x1f4;return function(_0x16daf3){logger[_0xfe2c('0x22')](_0x16daf3[_0xfe2c('0x23')]);if(_0x16daf3['name']){delete _0x16daf3[_0xfe2c('0x24')];}_0x205da8[_0xfe2c('0x15')](_0x5e8abf)['send'](_0x16daf3);};}exports[_0xfe2c('0x25')]=function(_0x1b6eb7,_0x3352e8){var _0x53a8c1={},_0x170026={},_0x1b7c91={'count':0x0,'rows':[]};var _0x55aed7=_['map'](db[_0xfe2c('0x26')][_0xfe2c('0x27')],function(_0x1a5e15){return{'name':_0x1a5e15[_0xfe2c('0x28')],'type':_0x1a5e15[_0xfe2c('0x29')]['key']};});_0x170026[_0xfe2c('0x2a')]=_[_0xfe2c('0x2b')](_0x55aed7,_0xfe2c('0x24'));_0x170026[_0xfe2c('0x2c')]=_[_0xfe2c('0x2d')](_0x1b6eb7[_0xfe2c('0x2c')]);_0x170026[_0xfe2c('0x2e')]=_[_0xfe2c('0x2f')](_0x170026[_0xfe2c('0x2a')],_0x170026[_0xfe2c('0x2c')]);_0x53a8c1[_0xfe2c('0x30')]=_[_0xfe2c('0x2f')](_0x170026['model'],qs[_0xfe2c('0x31')](_0x1b6eb7[_0xfe2c('0x2c')][_0xfe2c('0x31')]));_0x53a8c1['attributes']=_0x53a8c1[_0xfe2c('0x30')][_0xfe2c('0x32')]?_0x53a8c1['attributes']:_0x170026[_0xfe2c('0x2a')];if(!_0x1b6eb7[_0xfe2c('0x2c')][_0xfe2c('0x33')]('nolimit')){_0x53a8c1[_0xfe2c('0x1a')]=qs[_0xfe2c('0x1a')](_0x1b6eb7[_0xfe2c('0x2c')][_0xfe2c('0x1a')]);_0x53a8c1[_0xfe2c('0x17')]=qs[_0xfe2c('0x17')](_0x1b6eb7[_0xfe2c('0x2c')]['offset']);}_0x53a8c1['order']=qs[_0xfe2c('0x34')](_0x1b6eb7[_0xfe2c('0x2c')][_0xfe2c('0x34')]);_0x53a8c1[_0xfe2c('0x35')]=qs['filters'](_[_0xfe2c('0x36')](_0x1b6eb7['query'],_0x170026[_0xfe2c('0x2e')]),_0x55aed7);if(_0x1b6eb7[_0xfe2c('0x2c')]['filter']){_0x53a8c1[_0xfe2c('0x35')]=_['merge'](_0x53a8c1['where'],{'$or':_[_0xfe2c('0x2b')](_0x55aed7,function(_0x3d3b5e){if(_0x3d3b5e[_0xfe2c('0x29')]!==_0xfe2c('0x37')){var _0xae2808={};_0xae2808[_0x3d3b5e[_0xfe2c('0x24')]]={'$like':'%'+_0x1b6eb7[_0xfe2c('0x2c')][_0xfe2c('0x38')]+'%'};return _0xae2808;}})});}_0x53a8c1=_[_0xfe2c('0x39')]({},_0x53a8c1,_0x1b6eb7[_0xfe2c('0x3a')]);var _0x222335={'where':_0x53a8c1['where']};return db[_0xfe2c('0x26')][_0xfe2c('0x19')](_0x222335)[_0xfe2c('0x20')](function(_0x55ea45){_0x1b7c91['count']=_0x55ea45;if(_0x1b6eb7['query'][_0xfe2c('0x3b')]){_0x53a8c1[_0xfe2c('0x3c')]=[{'all':!![]}];}return db[_0xfe2c('0x26')][_0xfe2c('0x3d')](_0x53a8c1);})['then'](function(_0x1ed30b){_0x1b7c91[_0xfe2c('0x3e')]=_0x1ed30b;return _0x1b7c91;})[_0xfe2c('0x20')](respondWithFilteredResult(_0x3352e8,_0x53a8c1))[_0xfe2c('0x3f')](handleError(_0x3352e8,null));};exports[_0xfe2c('0x40')]=function(_0x48e361,_0x5a8d4e){var _0xeb04b9={'raw':!![],'where':{'id':_0x48e361[_0xfe2c('0x41')]['id']}},_0x6055dd={};_0x6055dd['model']=_['keys'](db[_0xfe2c('0x26')][_0xfe2c('0x27')]);_0x6055dd['query']=_[_0xfe2c('0x2d')](_0x48e361[_0xfe2c('0x2c')]);_0x6055dd[_0xfe2c('0x2e')]=_[_0xfe2c('0x2f')](_0x6055dd['model'],_0x6055dd[_0xfe2c('0x2c')]);_0xeb04b9[_0xfe2c('0x30')]=_[_0xfe2c('0x2f')](_0x6055dd[_0xfe2c('0x2a')],qs[_0xfe2c('0x31')](_0x48e361[_0xfe2c('0x2c')][_0xfe2c('0x31')]));_0xeb04b9[_0xfe2c('0x30')]=_0xeb04b9['attributes'][_0xfe2c('0x32')]?_0xeb04b9['attributes']:_0x6055dd[_0xfe2c('0x2a')];if(_0x48e361[_0xfe2c('0x2c')][_0xfe2c('0x3b')]){_0xeb04b9[_0xfe2c('0x3c')]=[{'all':!![]}];}_0xeb04b9=_['merge']({},_0xeb04b9,_0x48e361['options']);return db['WhatsappQueueReport']['find'](_0xeb04b9)['then'](handleEntityNotFound(_0x5a8d4e,null))[_0xfe2c('0x20')](respondWithResult(_0x5a8d4e,null))['catch'](handleError(_0x5a8d4e,null));};exports['create']=function(_0x22adee,_0x5d76be){return db[_0xfe2c('0x26')]['create'](_0x22adee[_0xfe2c('0x42')],{})[_0xfe2c('0x20')](respondWithResult(_0x5d76be,0xc9))[_0xfe2c('0x3f')](handleError(_0x5d76be,null));};exports[_0xfe2c('0x1f')]=function(_0x3cfda2,_0x57ad76){if(_0x3cfda2[_0xfe2c('0x42')]['id']){delete _0x3cfda2[_0xfe2c('0x42')]['id'];}return db[_0xfe2c('0x26')]['find']({'where':{'id':_0x3cfda2[_0xfe2c('0x41')]['id']}})[_0xfe2c('0x20')](handleEntityNotFound(_0x57ad76,null))['then'](saveUpdates(_0x3cfda2['body'],null))['then'](respondWithResult(_0x57ad76,null))[_0xfe2c('0x3f')](handleError(_0x57ad76,null));};exports[_0xfe2c('0x43')]=function(_0x47023e,_0x2e0012){return db[_0xfe2c('0x26')]['find']({'where':{'id':_0x47023e[_0xfe2c('0x41')]['id']}})[_0xfe2c('0x20')](handleEntityNotFound(_0x2e0012,null))[_0xfe2c('0x20')](removeEntity(_0x2e0012,null))['catch'](handleError(_0x2e0012,null));};exports['describe']=function(_0x3e7c9f,_0xa711b0){return db[_0xfe2c('0x26')][_0xfe2c('0x44')]()[_0xfe2c('0x20')](respondWithResult(_0xa711b0,null))[_0xfe2c('0x3f')](handleError(_0xa711b0,null));};
\ No newline at end of file
+var _0xda3f=['fields','nolimit','sort','filter','where','merge','type','VIRTUAL','options','WhatsappQueueReport','includeAll','include','findAll','rows','catch','params','rawAttributes','length','find','create','body','destroy','describe','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','map','key','model','query','keys','filters','intersection','attributes'];(function(_0x11bcdb,_0x4d9a3d){var _0x22521e=function(_0x52970f){while(--_0x52970f){_0x11bcdb['push'](_0x11bcdb['shift']());}};_0x22521e(++_0x4d9a3d);}(_0xda3f,0xec));var _0xfda3=function(_0x4d6488,_0x2ac6ad){_0x4d6488=_0x4d6488-0x0;var _0x3323dd=_0xda3f[_0x4d6488];return _0x3323dd;};'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['index']=function(_0x3c1549,_0x4101b1){var _0x301509={},_0x474992={},_0xe21ec6={'count':0x0,'rows':[]};var _0x3cfeb2=_[_0xfda3('0x28')](db['WhatsappQueueReport']['rawAttributes'],function(_0x3aef3c){return{'name':_0x3aef3c['fieldName'],'type':_0x3aef3c['type'][_0xfda3('0x29')]};});_0x474992[_0xfda3('0x2a')]=_[_0xfda3('0x28')](_0x3cfeb2,_0xfda3('0x26'));_0x474992[_0xfda3('0x2b')]=_[_0xfda3('0x2c')](_0x3c1549[_0xfda3('0x2b')]);_0x474992[_0xfda3('0x2d')]=_[_0xfda3('0x2e')](_0x474992['model'],_0x474992[_0xfda3('0x2b')]);_0x301509[_0xfda3('0x2f')]=_[_0xfda3('0x2e')](_0x474992[_0xfda3('0x2a')],qs[_0xfda3('0x30')](_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x30')]));_0x301509[_0xfda3('0x2f')]=_0x301509[_0xfda3('0x2f')]['length']?_0x301509['attributes']:_0x474992[_0xfda3('0x2a')];if(!_0x3c1549[_0xfda3('0x2b')]['hasOwnProperty'](_0xfda3('0x31'))){_0x301509[_0xfda3('0x1b')]=qs[_0xfda3('0x1b')](_0x3c1549['query'][_0xfda3('0x1b')]);_0x301509[_0xfda3('0x19')]=qs[_0xfda3('0x19')](_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x19')]);}_0x301509['order']=qs[_0xfda3('0x32')](_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x32')]);_0x301509['where']=qs[_0xfda3('0x2d')](_['pick'](_0x3c1549[_0xfda3('0x2b')],_0x474992[_0xfda3('0x2d')]),_0x3cfeb2);if(_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x33')]){_0x301509[_0xfda3('0x34')]=_[_0xfda3('0x35')](_0x301509[_0xfda3('0x34')],{'$or':_[_0xfda3('0x28')](_0x3cfeb2,function(_0x577be8){if(_0x577be8[_0xfda3('0x36')]!==_0xfda3('0x37')){var _0xd2dde0={};_0xd2dde0[_0x577be8[_0xfda3('0x26')]]={'$like':'%'+_0x3c1549['query'][_0xfda3('0x33')]+'%'};return _0xd2dde0;}})});}_0x301509=_[_0xfda3('0x35')]({},_0x301509,_0x3c1549[_0xfda3('0x38')]);var _0x5bad90={'where':_0x301509['where']};return db[_0xfda3('0x39')][_0xfda3('0x1c')](_0x5bad90)[_0xfda3('0x23')](function(_0x1aaa6c){_0xe21ec6[_0xfda3('0x1c')]=_0x1aaa6c;if(_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x3a')]){_0x301509[_0xfda3('0x3b')]=[{'all':!![]}];}return db[_0xfda3('0x39')][_0xfda3('0x3c')](_0x301509);})['then'](function(_0x27200f){_0xe21ec6[_0xfda3('0x3d')]=_0x27200f;return _0xe21ec6;})['then'](respondWithFilteredResult(_0x4101b1,_0x301509))[_0xfda3('0x3e')](handleError(_0x4101b1,null));};exports['show']=function(_0x51a314,_0x4e6886){var _0x2208bc={'raw':!![],'where':{'id':_0x51a314[_0xfda3('0x3f')]['id']}},_0x107fb1={};_0x107fb1[_0xfda3('0x2a')]=_['keys'](db[_0xfda3('0x39')][_0xfda3('0x40')]);_0x107fb1[_0xfda3('0x2b')]=_[_0xfda3('0x2c')](_0x51a314['query']);_0x107fb1[_0xfda3('0x2d')]=_[_0xfda3('0x2e')](_0x107fb1[_0xfda3('0x2a')],_0x107fb1['query']);_0x2208bc['attributes']=_[_0xfda3('0x2e')](_0x107fb1[_0xfda3('0x2a')],qs[_0xfda3('0x30')](_0x51a314[_0xfda3('0x2b')][_0xfda3('0x30')]));_0x2208bc[_0xfda3('0x2f')]=_0x2208bc[_0xfda3('0x2f')][_0xfda3('0x41')]?_0x2208bc[_0xfda3('0x2f')]:_0x107fb1[_0xfda3('0x2a')];if(_0x51a314[_0xfda3('0x2b')][_0xfda3('0x3a')]){_0x2208bc[_0xfda3('0x3b')]=[{'all':!![]}];}_0x2208bc=_[_0xfda3('0x35')]({},_0x2208bc,_0x51a314['options']);return db['WhatsappQueueReport'][_0xfda3('0x42')](_0x2208bc)[_0xfda3('0x23')](handleEntityNotFound(_0x4e6886,null))[_0xfda3('0x23')](respondWithResult(_0x4e6886,null))[_0xfda3('0x3e')](handleError(_0x4e6886,null));};exports[_0xfda3('0x43')]=function(_0x60a89d,_0x192133){return db[_0xfda3('0x39')][_0xfda3('0x43')](_0x60a89d[_0xfda3('0x44')],{})['then'](respondWithResult(_0x192133,0xc9))[_0xfda3('0x3e')](handleError(_0x192133,null));};exports[_0xfda3('0x22')]=function(_0x481356,_0x36aa3a){if(_0x481356[_0xfda3('0x44')]['id']){delete _0x481356['body']['id'];}return db[_0xfda3('0x39')][_0xfda3('0x42')]({'where':{'id':_0x481356[_0xfda3('0x3f')]['id']}})['then'](handleEntityNotFound(_0x36aa3a,null))[_0xfda3('0x23')](saveUpdates(_0x481356[_0xfda3('0x44')],null))[_0xfda3('0x23')](respondWithResult(_0x36aa3a,null))['catch'](handleError(_0x36aa3a,null));};exports[_0xfda3('0x45')]=function(_0x33565d,_0x2f54eb){return db[_0xfda3('0x39')][_0xfda3('0x42')]({'where':{'id':_0x33565d['params']['id']}})[_0xfda3('0x23')](handleEntityNotFound(_0x2f54eb,null))['then'](removeEntity(_0x2f54eb,null))[_0xfda3('0x3e')](handleError(_0x2f54eb,null));};exports['describe']=function(_0x1b5e89,_0x6447){return db[_0xfda3('0x39')][_0xfda3('0x46')]()['then'](respondWithResult(_0x6447,null))[_0xfda3('0x3e')](handleError(_0x6447,null));};
\ No newline at end of file
index ef902d4..601835c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e63=['api','bluebird','request-promise','../../config/environment','./whatsappQueueReport.attributes','exports','WhatsappQueueReport','uniqueid','util','../../config/logger'];(function(_0xfa2f68,_0x23836e){var _0x252d9a=function(_0x285e61){while(--_0x285e61){_0xfa2f68['push'](_0xfa2f68['shift']());}};_0x252d9a(++_0x23836e);}(_0x7e63,0x18e));var _0x37e6=function(_0x2101c7,_0x1a7352){_0x2101c7=_0x2101c7-0x0;var _0x3fce9d=_0x7e63[_0x2101c7];return _0x3fce9d;};'use strict';var _=require('lodash');var util=require(_0x37e6('0x0'));var logger=require(_0x37e6('0x1'))(_0x37e6('0x2'));var moment=require('moment');var BPromise=require(_0x37e6('0x3'));var rp=require(_0x37e6('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x37e6('0x5'));var attributes=require(_0x37e6('0x6'));module[_0x37e6('0x7')]=function(_0x385527,_0x1e5c62){return _0x385527['define'](_0x37e6('0x8'),attributes,{'tableName':'report_whatsapp_queue','paranoid':![],'indexes':[{'name':_0x37e6('0x9'),'fields':[_0x37e6('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8ccf=['../../config/environment','./whatsappQueueReport.attributes','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x26a169,_0x54f908){var _0x1f07a1=function(_0x344027){while(--_0x344027){_0x26a169['push'](_0x26a169['shift']());}};_0x1f07a1(++_0x54f908);}(_0x8ccf,0x6e));var _0xf8cc=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8ccf[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xf8cc('0x0'));var util=require('util');var logger=require(_0xf8cc('0x1'))(_0xf8cc('0x2'));var moment=require(_0xf8cc('0x3'));var BPromise=require('bluebird');var rp=require(_0xf8cc('0x4'));var fs=require('fs');var path=require(_0xf8cc('0x5'));var rimraf=require(_0xf8cc('0x6'));var config=require(_0xf8cc('0x7'));var attributes=require(_0xf8cc('0x8'));module['exports']=function(_0x2edcf4,_0x4daf31){return _0x2edcf4[_0xf8cc('0x9')](_0xf8cc('0xa'),attributes,{'tableName':_0xf8cc('0xb'),'paranoid':![],'indexes':[{'name':_0xf8cc('0xc'),'fields':[_0xf8cc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index fe98384..dd36ebd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67c2=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','UpdateWhatsappQueueReport','update','raw','where','lodash','util','randomstring'];(function(_0x48d9b1,_0x1428df){var _0x4d2c7a=function(_0x2f1c37){while(--_0x2f1c37){_0x48d9b1['push'](_0x48d9b1['shift']());}};_0x4d2c7a(++_0x1428df);}(_0x67c2,0xc3));var _0x267c=function(_0x3c35f4,_0x38643f){_0x3c35f4=_0x3c35f4-0x0;var _0x4c0555=_0x67c2[_0x3c35f4];return _0x4c0555;};'use strict';var _=require(_0x267c('0x0'));var util=require(_0x267c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x267c('0x2'));var fs=require('fs');var Redis=require(_0x267c('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x267c('0x4'));var logger=require(_0x267c('0x5'))(_0x267c('0x6'));var config=require(_0x267c('0x7'));var jayson=require(_0x267c('0x8'));var client=jayson[_0x267c('0x9')][_0x267c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x148ad4,_0x1dd804,_0x1e759f){return new BPromise(function(_0x4d11e9,_0x3c9691){return client[_0x267c('0xb')](_0x148ad4,_0x1e759f)[_0x267c('0xc')](function(_0x3fdb01){logger[_0x267c('0xd')](_0x267c('0xe'),_0x1dd804,_0x267c('0xf'));logger[_0x267c('0x10')](_0x267c('0x11'),_0x1dd804,_0x267c('0xf'),JSON[_0x267c('0x12')](_0x3fdb01));if(_0x3fdb01[_0x267c('0x13')]){if(_0x3fdb01['error'][_0x267c('0x14')]===0x1f4){logger[_0x267c('0x13')](_0x267c('0xe'),_0x1dd804,_0x3fdb01[_0x267c('0x13')][_0x267c('0x15')]);return _0x3c9691(_0x3fdb01['error'][_0x267c('0x15')]);}logger[_0x267c('0x13')](_0x267c('0xe'),_0x1dd804,_0x3fdb01[_0x267c('0x13')][_0x267c('0x15')]);return _0x4d11e9(_0x3fdb01[_0x267c('0x13')][_0x267c('0x15')]);}else{logger[_0x267c('0xd')]('WhatsappQueueReport,\x20%s,\x20%s',_0x1dd804,_0x267c('0xf'));_0x4d11e9(_0x3fdb01[_0x267c('0x16')][_0x267c('0x15')]);}})[_0x267c('0x17')](function(_0x41e525){logger[_0x267c('0x13')](_0x267c('0xe'),_0x1dd804,_0x41e525);_0x3c9691(_0x41e525);});});}exports[_0x267c('0x18')]=function(_0x3472bf){var _0x670bb=this;return new Promise(function(_0xdbb859,_0x487558){return db[_0x267c('0x19')][_0x267c('0x1a')](_0x3472bf[_0x267c('0x1b')],{'raw':_0x3472bf['options']?_0x3472bf[_0x267c('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0x267c('0xc')](function(_0x4c5c46){logger[_0x267c('0xd')]('CreateWhatsappQueueReport',_0x3472bf);logger[_0x267c('0x10')](_0x267c('0x18'),_0x3472bf,JSON[_0x267c('0x12')](_0x4c5c46));_0xdbb859(_0x4c5c46);})[_0x267c('0x17')](function(_0x58505f){logger['error']('CreateWhatsappQueueReport',_0x58505f[_0x267c('0x15')],_0x3472bf);_0x487558(_0x670bb['error'](0x1f4,_0x58505f['message']));});});};exports[_0x267c('0x1d')]=function(_0x1a1c52){var _0xbf2f0d=this;return new Promise(function(_0x3c6b62,_0x19541b){return db['WhatsappQueueReport'][_0x267c('0x1e')](_0x1a1c52['body'],{'raw':_0x1a1c52[_0x267c('0x1c')]?_0x1a1c52[_0x267c('0x1c')][_0x267c('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1a1c52[_0x267c('0x1c')]?_0x1a1c52[_0x267c('0x1c')][_0x267c('0x20')]||null:null,'attributes':_0x1a1c52['options']?_0x1a1c52[_0x267c('0x1c')]['attributes']||null:null,'limit':_0x1a1c52[_0x267c('0x1c')]?_0x1a1c52[_0x267c('0x1c')]['limit']||null:null})[_0x267c('0xc')](function(_0x53d6b4){logger[_0x267c('0xd')](_0x267c('0x1d'),_0x1a1c52);logger[_0x267c('0x10')](_0x267c('0x1d'),_0x1a1c52,JSON[_0x267c('0x12')](_0x53d6b4));_0x3c6b62(_0x53d6b4);})[_0x267c('0x17')](function(_0x7d111f){logger['error']('UpdateWhatsappQueueReport',_0x7d111f[_0x267c('0x15')],_0x1a1c52);_0x19541b(_0xbf2f0d[_0x267c('0x13')](0x1f4,_0x7d111f[_0x267c('0x15')]));});});};
\ No newline at end of file
+var _0xc94b=['request\x20sent','stringify','error','code','WhatsappQueueReport,\x20%s,\x20%s','message','result','CreateWhatsappQueueReport','WhatsappQueueReport','create','options','raw','then','UpdateWhatsappQueueReport','update','body','where','limit','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s'];(function(_0x2dda81,_0x5991dc){var _0x1ada21=function(_0x5ac7ff){while(--_0x5ac7ff){_0x2dda81['push'](_0x2dda81['shift']());}};_0x1ada21(++_0x5991dc);}(_0xc94b,0x7f));var _0xbc94=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0xc94b[_0x487b0c];return _0x1adbdc;};'use strict';var _=require(_0xbc94('0x0'));var util=require(_0xbc94('0x1'));var moment=require('moment');var BPromise=require(_0xbc94('0x2'));var rs=require(_0xbc94('0x3'));var fs=require('fs');var Redis=require(_0xbc94('0x4'));var db=require(_0xbc94('0x5'))['db'];var utils=require(_0xbc94('0x6'));var logger=require(_0xbc94('0x7'))(_0xbc94('0x8'));var config=require(_0xbc94('0x9'));var jayson=require(_0xbc94('0xa'));var client=jayson[_0xbc94('0xb')][_0xbc94('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x308d3c,_0x3bc497,_0x2eb8e5){return new BPromise(function(_0x1bcb33,_0x28f192){return client[_0xbc94('0xd')](_0x308d3c,_0x2eb8e5)['then'](function(_0x47b1c0){logger[_0xbc94('0xe')]('WhatsappQueueReport,\x20%s,\x20%s',_0x3bc497,'request\x20sent');logger[_0xbc94('0xf')](_0xbc94('0x10'),_0x3bc497,_0xbc94('0x11'),JSON[_0xbc94('0x12')](_0x47b1c0));if(_0x47b1c0[_0xbc94('0x13')]){if(_0x47b1c0[_0xbc94('0x13')][_0xbc94('0x14')]===0x1f4){logger[_0xbc94('0x13')](_0xbc94('0x15'),_0x3bc497,_0x47b1c0[_0xbc94('0x13')][_0xbc94('0x16')]);return _0x28f192(_0x47b1c0[_0xbc94('0x13')][_0xbc94('0x16')]);}logger[_0xbc94('0x13')]('WhatsappQueueReport,\x20%s,\x20%s',_0x3bc497,_0x47b1c0[_0xbc94('0x13')][_0xbc94('0x16')]);return _0x1bcb33(_0x47b1c0['error']['message']);}else{logger[_0xbc94('0xe')](_0xbc94('0x15'),_0x3bc497,'request\x20sent');_0x1bcb33(_0x47b1c0[_0xbc94('0x17')][_0xbc94('0x16')]);}})['catch'](function(_0x24b35d){logger[_0xbc94('0x13')](_0xbc94('0x15'),_0x3bc497,_0x24b35d);_0x28f192(_0x24b35d);});});}exports[_0xbc94('0x18')]=function(_0x4b2dad){var _0x16d10c=this;return new Promise(function(_0x1b9b12,_0x230134){return db[_0xbc94('0x19')][_0xbc94('0x1a')](_0x4b2dad['body'],{'raw':_0x4b2dad[_0xbc94('0x1b')]?_0x4b2dad[_0xbc94('0x1b')][_0xbc94('0x1c')]===undefined?!![]:![]:!![]})[_0xbc94('0x1d')](function(_0x1a0e68){logger[_0xbc94('0xe')](_0xbc94('0x18'),_0x4b2dad);logger[_0xbc94('0xf')](_0xbc94('0x18'),_0x4b2dad,JSON[_0xbc94('0x12')](_0x1a0e68));_0x1b9b12(_0x1a0e68);})['catch'](function(_0x2a88bb){logger[_0xbc94('0x13')](_0xbc94('0x18'),_0x2a88bb[_0xbc94('0x16')],_0x4b2dad);_0x230134(_0x16d10c[_0xbc94('0x13')](0x1f4,_0x2a88bb[_0xbc94('0x16')]));});});};exports[_0xbc94('0x1e')]=function(_0x4b317e){var _0x6bbc3=this;return new Promise(function(_0x364508,_0x498b38){return db['WhatsappQueueReport'][_0xbc94('0x1f')](_0x4b317e[_0xbc94('0x20')],{'raw':_0x4b317e['options']?_0x4b317e[_0xbc94('0x1b')][_0xbc94('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b317e['options']?_0x4b317e[_0xbc94('0x1b')][_0xbc94('0x21')]||null:null,'attributes':_0x4b317e[_0xbc94('0x1b')]?_0x4b317e[_0xbc94('0x1b')]['attributes']||null:null,'limit':_0x4b317e[_0xbc94('0x1b')]?_0x4b317e['options'][_0xbc94('0x22')]||null:null})['then'](function(_0x5e128e){logger[_0xbc94('0xe')](_0xbc94('0x1e'),_0x4b317e);logger['debug'](_0xbc94('0x1e'),_0x4b317e,JSON[_0xbc94('0x12')](_0x5e128e));_0x364508(_0x5e128e);})[_0xbc94('0x23')](function(_0x22363e){logger[_0xbc94('0x13')](_0xbc94('0x1e'),_0x22363e[_0xbc94('0x16')],_0x4b317e);_0x498b38(_0x6bbc3[_0xbc94('0x13')](0x1f4,_0x22363e[_0xbc94('0x16')]));});});};
\ No newline at end of file
index 2caff12..aac699b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd7c=['describe','show','post','put','/:id','delete','exports','multer','Router','../../components/auth/service','./whatsappTransferReport.controller','get','isAuthenticated'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xbd7c,0xe4));var _0xcbd7=function(_0x2e6061,_0x3e9cf7){_0x2e6061=_0x2e6061-0x0;var _0x15be36=_0xbd7c[_0x2e6061];return _0x15be36;};'use strict';var multer=require(_0xcbd7('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xcbd7('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xcbd7('0x2'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xcbd7('0x3'));router[_0xcbd7('0x4')]('/',auth[_0xcbd7('0x5')](),controller['index']);router['get']('/describe',auth[_0xcbd7('0x5')](),controller[_0xcbd7('0x6')]);router[_0xcbd7('0x4')]('/:id',auth['isAuthenticated'](),controller[_0xcbd7('0x7')]);router[_0xcbd7('0x8')]('/',auth[_0xcbd7('0x5')](),controller['create']);router[_0xcbd7('0x9')](_0xcbd7('0xa'),auth[_0xcbd7('0x5')](),controller['update']);router[_0xcbd7('0xb')](_0xcbd7('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0xcbd7('0xc')]=router;
\ No newline at end of file
+var _0xca95=['put','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/interaction/service','./whatsappTransferReport.controller','isAuthenticated','index','get','describe','/:id','post','create'];(function(_0xc67594,_0x25a6f3){var _0x2f9020=function(_0x24ff53){while(--_0x24ff53){_0xc67594['push'](_0xc67594['shift']());}};_0x2f9020(++_0x25a6f3);}(_0xca95,0x8c));var _0x5ca9=function(_0x5a0787,_0x584d2f){_0x5a0787=_0x5a0787-0x0;var _0x58d3c1=_0xca95[_0x5a0787];return _0x58d3c1;};'use strict';var multer=require(_0x5ca9('0x0'));var util=require('util');var path=require(_0x5ca9('0x1'));var timeout=require(_0x5ca9('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5ca9('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x5ca9('0x4'));var config=require('../../config/environment');var controller=require(_0x5ca9('0x5'));router['get']('/',auth[_0x5ca9('0x6')](),controller[_0x5ca9('0x7')]);router[_0x5ca9('0x8')]('/describe',auth[_0x5ca9('0x6')](),controller[_0x5ca9('0x9')]);router[_0x5ca9('0x8')](_0x5ca9('0xa'),auth[_0x5ca9('0x6')](),controller['show']);router[_0x5ca9('0xb')]('/',auth[_0x5ca9('0x6')](),controller[_0x5ca9('0xc')]);router[_0x5ca9('0xd')]('/:id',auth[_0x5ca9('0x6')](),controller['update']);router[_0x5ca9('0xe')]('/:id',auth[_0x5ca9('0x6')](),controller[_0x5ca9('0xf')]);module[_0x5ca9('0x10')]=router;
\ No newline at end of file
index 35d014d..354bb09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc87=['sequelize','ENUM','account','agent'];(function(_0x390c99,_0x23b746){var _0x1f0e63=function(_0x112d38){while(--_0x112d38){_0x390c99['push'](_0x390c99['shift']());}};_0x1f0e63(++_0x23b746);}(_0xbc87,0x144));var _0x7bc8=function(_0x502343,_0x4da115){_0x502343=_0x502343-0x0;var _0x5e6a21=_0xbc87[_0x502343];return _0x5e6a21;};'use strict';var Sequelize=require(_0x7bc8('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x7bc8('0x1')](_0x7bc8('0x2'),_0x7bc8('0x3'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0x4ffa=['queue','DATE','STRING','account','agent'];(function(_0x74892f,_0x1e981b){var _0x10ee61=function(_0x3c480a){while(--_0x3c480a){_0x74892f['push'](_0x74892f['shift']());}};_0x10ee61(++_0x1e981b);}(_0x4ffa,0x124));var _0xa4ff=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x4ffa[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xa4ff('0x0')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xa4ff('0x1'),_0xa4ff('0x2'),_0xa4ff('0x3')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xa4ff('0x4')]}};
\ No newline at end of file
index ea11abb..168b54a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dda=['error','stack','name','send','map','WhatsappTransferReport','rawAttributes','fieldName','type','key','query','keys','filters','model','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy'];(function(_0xb37f4,_0x32001d){var _0x16fde4=function(_0x1e0d6f){while(--_0x1e0d6f){_0xb37f4['push'](_0xb37f4['shift']());}};_0x16fde4(++_0x32001d);}(_0x3dda,0x1a7));var _0xa3dd=function(_0x58f555,_0x552ef2){_0x58f555=_0x58f555-0x0;var _0x4eb99b=_0x3dda[_0x58f555];return _0x4eb99b;};'use strict';var emlformat=require(_0xa3dd('0x0'));var rimraf=require(_0xa3dd('0x1'));var zipdir=require(_0xa3dd('0x2'));var jsonpatch=require(_0xa3dd('0x3'));var rp=require(_0xa3dd('0x4'));var moment=require(_0xa3dd('0x5'));var BPromise=require(_0xa3dd('0x6'));var Mustache=require('mustache');var util=require(_0xa3dd('0x7'));var path=require(_0xa3dd('0x8'));var sox=require(_0xa3dd('0x9'));var csv=require(_0xa3dd('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa3dd('0xb'));var _=require(_0xa3dd('0xc'));var squel=require(_0xa3dd('0xd'));var crypto=require(_0xa3dd('0xe'));var jsforce=require(_0xa3dd('0xf'));var deskjs=require(_0xa3dd('0x10'));var toCsv=require('to-csv');var querystring=require(_0xa3dd('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa3dd('0x12'));var qs=require(_0xa3dd('0x13'));var as=require(_0xa3dd('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa3dd('0x15'))(_0xa3dd('0x16'));var utils=require('../../config/utils');var config=require(_0xa3dd('0x17'));var licenseUtil=require(_0xa3dd('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3125ad,_0x16db6c){_0x16db6c=_0x16db6c||0xcc;return function(_0x9e4ba0){if(_0x9e4ba0){return _0x3125ad[_0xa3dd('0x19')](_0x16db6c);}return _0x3125ad[_0xa3dd('0x1a')](_0x16db6c)[_0xa3dd('0x1b')]();};}function respondWithResult(_0x2b09c6,_0x1791ed){_0x1791ed=_0x1791ed||0xc8;return function(_0x214bf3){if(_0x214bf3){return _0x2b09c6[_0xa3dd('0x1a')](_0x1791ed)['json'](_0x214bf3);}};}function respondWithFilteredResult(_0x4732a0,_0x373a75){return function(_0xffb667){if(_0xffb667){var _0x3e2b6c=typeof _0x373a75['offset']===_0xa3dd('0x1c')&&typeof _0x373a75['limit']===_0xa3dd('0x1c');var _0x2c6d9c=_0xffb667[_0xa3dd('0x1d')];var _0x48ea52=_0x3e2b6c?0x0:_0x373a75[_0xa3dd('0x1e')];var _0x1a1986=_0x3e2b6c?_0xffb667[_0xa3dd('0x1d')]:_0x373a75[_0xa3dd('0x1e')]+_0x373a75[_0xa3dd('0x1f')];var _0x4f4714;if(_0x1a1986>=_0x2c6d9c){_0x1a1986=_0x2c6d9c;_0x4f4714=0xc8;}else{_0x4f4714=0xce;}_0x4732a0[_0xa3dd('0x1a')](_0x4f4714);return _0x4732a0[_0xa3dd('0x20')](_0xa3dd('0x21'),_0x48ea52+'-'+_0x1a1986+'/'+_0x2c6d9c)['json'](_0xffb667);}return null;};}function patchUpdates(_0x19896a){return function(_0x5ed277){try{jsonpatch[_0xa3dd('0x22')](_0x5ed277,_0x19896a,!![]);}catch(_0x2136e8){return BPromise[_0xa3dd('0x23')](_0x2136e8);}return _0x5ed277[_0xa3dd('0x24')]();};}function saveUpdates(_0x2e806c,_0x2d457c){return function(_0x5b814a){if(_0x5b814a){return _0x5b814a['update'](_0x2e806c)[_0xa3dd('0x25')](function(_0xa25518){return _0xa25518;});}return null;};}function removeEntity(_0x82ba2a,_0x31675d){return function(_0x585700){if(_0x585700){return _0x585700[_0xa3dd('0x26')]()['then'](function(){_0x82ba2a[_0xa3dd('0x1a')](0xcc)[_0xa3dd('0x1b')]();});}};}function handleEntityNotFound(_0x308a91,_0x5a449b){return function(_0x5232a1){if(!_0x5232a1){_0x308a91[_0xa3dd('0x19')](0x194);}return _0x5232a1;};}function handleError(_0x1f9c18,_0x1db3ae){_0x1db3ae=_0x1db3ae||0x1f4;return function(_0xe4385){logger[_0xa3dd('0x27')](_0xe4385[_0xa3dd('0x28')]);if(_0xe4385['name']){delete _0xe4385[_0xa3dd('0x29')];}_0x1f9c18[_0xa3dd('0x1a')](_0x1db3ae)[_0xa3dd('0x2a')](_0xe4385);};}exports['index']=function(_0x3dd38a,_0x499e9a){var _0x17090c={},_0x28bf1d={},_0x40db92={'count':0x0,'rows':[]};var _0x54242f=_[_0xa3dd('0x2b')](db[_0xa3dd('0x2c')][_0xa3dd('0x2d')],function(_0x52d69b){return{'name':_0x52d69b[_0xa3dd('0x2e')],'type':_0x52d69b[_0xa3dd('0x2f')][_0xa3dd('0x30')]};});_0x28bf1d['model']=_['map'](_0x54242f,_0xa3dd('0x29'));_0x28bf1d[_0xa3dd('0x31')]=_[_0xa3dd('0x32')](_0x3dd38a[_0xa3dd('0x31')]);_0x28bf1d[_0xa3dd('0x33')]=_['intersection'](_0x28bf1d[_0xa3dd('0x34')],_0x28bf1d[_0xa3dd('0x31')]);_0x17090c['attributes']=_[_0xa3dd('0x35')](_0x28bf1d[_0xa3dd('0x34')],qs['fields'](_0x3dd38a[_0xa3dd('0x31')][_0xa3dd('0x36')]));_0x17090c[_0xa3dd('0x37')]=_0x17090c[_0xa3dd('0x37')][_0xa3dd('0x38')]?_0x17090c['attributes']:_0x28bf1d[_0xa3dd('0x34')];if(!_0x3dd38a['query']['hasOwnProperty'](_0xa3dd('0x39'))){_0x17090c['limit']=qs[_0xa3dd('0x1f')](_0x3dd38a[_0xa3dd('0x31')][_0xa3dd('0x1f')]);_0x17090c[_0xa3dd('0x1e')]=qs[_0xa3dd('0x1e')](_0x3dd38a['query']['offset']);}_0x17090c[_0xa3dd('0x3a')]=qs['sort'](_0x3dd38a[_0xa3dd('0x31')][_0xa3dd('0x3b')]);_0x17090c[_0xa3dd('0x3c')]=qs[_0xa3dd('0x33')](_[_0xa3dd('0x3d')](_0x3dd38a[_0xa3dd('0x31')],_0x28bf1d['filters']),_0x54242f);if(_0x3dd38a[_0xa3dd('0x31')][_0xa3dd('0x3e')]){_0x17090c['where']=_[_0xa3dd('0x3f')](_0x17090c['where'],{'$or':_['map'](_0x54242f,function(_0x32aa00){if(_0x32aa00['type']!==_0xa3dd('0x40')){var _0x1fd488={};_0x1fd488[_0x32aa00[_0xa3dd('0x29')]]={'$like':'%'+_0x3dd38a[_0xa3dd('0x31')]['filter']+'%'};return _0x1fd488;}})});}_0x17090c=_['merge']({},_0x17090c,_0x3dd38a[_0xa3dd('0x41')]);var _0xd9f2b1={'where':_0x17090c['where']};return db[_0xa3dd('0x2c')][_0xa3dd('0x1d')](_0xd9f2b1)[_0xa3dd('0x25')](function(_0x5b36c8){_0x40db92['count']=_0x5b36c8;if(_0x3dd38a[_0xa3dd('0x31')][_0xa3dd('0x42')]){_0x17090c[_0xa3dd('0x43')]=[{'all':!![]}];}return db['WhatsappTransferReport'][_0xa3dd('0x44')](_0x17090c);})[_0xa3dd('0x25')](function(_0x41c23b){_0x40db92[_0xa3dd('0x45')]=_0x41c23b;return _0x40db92;})[_0xa3dd('0x25')](respondWithFilteredResult(_0x499e9a,_0x17090c))[_0xa3dd('0x46')](handleError(_0x499e9a,null));};exports[_0xa3dd('0x47')]=function(_0x35e527,_0x597eec){var _0x448565={'raw':!![],'where':{'id':_0x35e527['params']['id']}},_0x5253cf={};_0x5253cf['model']=_[_0xa3dd('0x32')](db[_0xa3dd('0x2c')][_0xa3dd('0x2d')]);_0x5253cf['query']=_['keys'](_0x35e527[_0xa3dd('0x31')]);_0x5253cf[_0xa3dd('0x33')]=_[_0xa3dd('0x35')](_0x5253cf[_0xa3dd('0x34')],_0x5253cf['query']);_0x448565[_0xa3dd('0x37')]=_['intersection'](_0x5253cf[_0xa3dd('0x34')],qs[_0xa3dd('0x36')](_0x35e527['query']['fields']));_0x448565[_0xa3dd('0x37')]=_0x448565[_0xa3dd('0x37')]['length']?_0x448565[_0xa3dd('0x37')]:_0x5253cf[_0xa3dd('0x34')];if(_0x35e527[_0xa3dd('0x31')][_0xa3dd('0x42')]){_0x448565['include']=[{'all':!![]}];}_0x448565=_[_0xa3dd('0x3f')]({},_0x448565,_0x35e527[_0xa3dd('0x41')]);return db[_0xa3dd('0x2c')]['find'](_0x448565)['then'](handleEntityNotFound(_0x597eec,null))['then'](respondWithResult(_0x597eec,null))[_0xa3dd('0x46')](handleError(_0x597eec,null));};exports[_0xa3dd('0x48')]=function(_0x2a7ad9,_0x100191){return db[_0xa3dd('0x2c')]['create'](_0x2a7ad9[_0xa3dd('0x49')],{})[_0xa3dd('0x25')](respondWithResult(_0x100191,0xc9))[_0xa3dd('0x46')](handleError(_0x100191,null));};exports['update']=function(_0x7222d8,_0x5bd589){if(_0x7222d8[_0xa3dd('0x49')]['id']){delete _0x7222d8['body']['id'];}return db[_0xa3dd('0x2c')][_0xa3dd('0x4a')]({'where':{'id':_0x7222d8[_0xa3dd('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5bd589,null))[_0xa3dd('0x25')](saveUpdates(_0x7222d8[_0xa3dd('0x49')],null))[_0xa3dd('0x25')](respondWithResult(_0x5bd589,null))[_0xa3dd('0x46')](handleError(_0x5bd589,null));};exports['destroy']=function(_0x1cce5e,_0x2efba0){return db[_0xa3dd('0x2c')][_0xa3dd('0x4a')]({'where':{'id':_0x1cce5e[_0xa3dd('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2efba0,null))[_0xa3dd('0x25')](removeEntity(_0x2efba0,null))[_0xa3dd('0x46')](handleError(_0x2efba0,null));};exports[_0xa3dd('0x4c')]=function(_0x2bf991,_0x231f58){return db[_0xa3dd('0x2c')][_0xa3dd('0x4c')]()[_0xa3dd('0x25')](respondWithResult(_0x231f58,null))[_0xa3dd('0x46')](handleError(_0x231f58,null));};
\ No newline at end of file
+var _0x6e8b=['name','send','index','WhatsappTransferReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','map','options','include','findAll','rows','catch','params','includeAll','body','find','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','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','offset','undefined','limit','Content-Range','json','apply','save','update','then','destroy','end','error','stack'];(function(_0x744438,_0x3af742){var _0x28aaa4=function(_0x4dd5ae){while(--_0x4dd5ae){_0x744438['push'](_0x744438['shift']());}};_0x28aaa4(++_0x3af742);}(_0x6e8b,0x156));var _0xb6e8=function(_0x24c963,_0x5f32a4){_0x24c963=_0x24c963-0x0;var _0x32a0eb=_0x6e8b[_0x24c963];return _0x32a0eb;};'use strict';var emlformat=require(_0xb6e8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb6e8('0x1'));var jsonpatch=require(_0xb6e8('0x2'));var rp=require('request-promise');var moment=require(_0xb6e8('0x3'));var BPromise=require(_0xb6e8('0x4'));var Mustache=require(_0xb6e8('0x5'));var util=require(_0xb6e8('0x6'));var path=require(_0xb6e8('0x7'));var sox=require(_0xb6e8('0x8'));var csv=require(_0xb6e8('0x9'));var ejs=require(_0xb6e8('0xa'));var fs=require('fs');var fs_extra=require(_0xb6e8('0xb'));var _=require(_0xb6e8('0xc'));var squel=require(_0xb6e8('0xd'));var crypto=require(_0xb6e8('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xb6e8('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb6e8('0x10'));var Papa=require(_0xb6e8('0x11'));var Redis=require(_0xb6e8('0x12'));var authService=require(_0xb6e8('0x13'));var qs=require(_0xb6e8('0x14'));var as=require(_0xb6e8('0x15'));var hardwareService=require(_0xb6e8('0x16'));var logger=require(_0xb6e8('0x17'))(_0xb6e8('0x18'));var utils=require('../../config/utils');var config=require(_0xb6e8('0x19'));var licenseUtil=require(_0xb6e8('0x1a'));var db=require(_0xb6e8('0x1b'))['db'];function respondWithStatusCode(_0x4d694d,_0x437da8){_0x437da8=_0x437da8||0xcc;return function(_0xcd21be){if(_0xcd21be){return _0x4d694d[_0xb6e8('0x1c')](_0x437da8);}return _0x4d694d[_0xb6e8('0x1d')](_0x437da8)['end']();};}function respondWithResult(_0x4a7c90,_0x29b68d){_0x29b68d=_0x29b68d||0xc8;return function(_0x104f31){if(_0x104f31){return _0x4a7c90[_0xb6e8('0x1d')](_0x29b68d)['json'](_0x104f31);}};}function respondWithFilteredResult(_0x1da1df,_0x187a01){return function(_0x767b3){if(_0x767b3){var _0x5da63c=typeof _0x187a01[_0xb6e8('0x1e')]===_0xb6e8('0x1f')&&typeof _0x187a01['limit']===_0xb6e8('0x1f');var _0x3be6d7=_0x767b3['count'];var _0x2840e5=_0x5da63c?0x0:_0x187a01['offset'];var _0x2a9178=_0x5da63c?_0x767b3['count']:_0x187a01['offset']+_0x187a01[_0xb6e8('0x20')];var _0x281fe2;if(_0x2a9178>=_0x3be6d7){_0x2a9178=_0x3be6d7;_0x281fe2=0xc8;}else{_0x281fe2=0xce;}_0x1da1df[_0xb6e8('0x1d')](_0x281fe2);return _0x1da1df['set'](_0xb6e8('0x21'),_0x2840e5+'-'+_0x2a9178+'/'+_0x3be6d7)[_0xb6e8('0x22')](_0x767b3);}return null;};}function patchUpdates(_0x234345){return function(_0x403daf){try{jsonpatch[_0xb6e8('0x23')](_0x403daf,_0x234345,!![]);}catch(_0x3562ee){return BPromise['reject'](_0x3562ee);}return _0x403daf[_0xb6e8('0x24')]();};}function saveUpdates(_0xd41b65,_0x21e56c){return function(_0x436cb2){if(_0x436cb2){return _0x436cb2[_0xb6e8('0x25')](_0xd41b65)[_0xb6e8('0x26')](function(_0x4679da){return _0x4679da;});}return null;};}function removeEntity(_0x352550,_0x2bf98e){return function(_0x4cc93c){if(_0x4cc93c){return _0x4cc93c[_0xb6e8('0x27')]()[_0xb6e8('0x26')](function(){_0x352550[_0xb6e8('0x1d')](0xcc)[_0xb6e8('0x28')]();});}};}function handleEntityNotFound(_0x1ef13e,_0x2ab339){return function(_0x2d660f){if(!_0x2d660f){_0x1ef13e[_0xb6e8('0x1c')](0x194);}return _0x2d660f;};}function handleError(_0x521e0d,_0x2595d1){_0x2595d1=_0x2595d1||0x1f4;return function(_0x5c7faf){logger[_0xb6e8('0x29')](_0x5c7faf[_0xb6e8('0x2a')]);if(_0x5c7faf[_0xb6e8('0x2b')]){delete _0x5c7faf['name'];}_0x521e0d[_0xb6e8('0x1d')](_0x2595d1)[_0xb6e8('0x2c')](_0x5c7faf);};}exports[_0xb6e8('0x2d')]=function(_0x4f6962,_0x4c5a8d){var _0x2034eb={},_0x28637e={},_0x2b6ba1={'count':0x0,'rows':[]};var _0x2f9bfe=_['map'](db[_0xb6e8('0x2e')][_0xb6e8('0x2f')],function(_0x312e18){return{'name':_0x312e18[_0xb6e8('0x30')],'type':_0x312e18[_0xb6e8('0x31')][_0xb6e8('0x32')]};});_0x28637e[_0xb6e8('0x33')]=_['map'](_0x2f9bfe,_0xb6e8('0x2b'));_0x28637e[_0xb6e8('0x34')]=_[_0xb6e8('0x35')](_0x4f6962['query']);_0x28637e['filters']=_[_0xb6e8('0x36')](_0x28637e[_0xb6e8('0x33')],_0x28637e['query']);_0x2034eb[_0xb6e8('0x37')]=_['intersection'](_0x28637e[_0xb6e8('0x33')],qs[_0xb6e8('0x38')](_0x4f6962['query'][_0xb6e8('0x38')]));_0x2034eb[_0xb6e8('0x37')]=_0x2034eb['attributes'][_0xb6e8('0x39')]?_0x2034eb[_0xb6e8('0x37')]:_0x28637e[_0xb6e8('0x33')];if(!_0x4f6962[_0xb6e8('0x34')]['hasOwnProperty'](_0xb6e8('0x3a'))){_0x2034eb[_0xb6e8('0x20')]=qs['limit'](_0x4f6962['query'][_0xb6e8('0x20')]);_0x2034eb['offset']=qs[_0xb6e8('0x1e')](_0x4f6962[_0xb6e8('0x34')][_0xb6e8('0x1e')]);}_0x2034eb[_0xb6e8('0x3b')]=qs[_0xb6e8('0x3c')](_0x4f6962[_0xb6e8('0x34')][_0xb6e8('0x3c')]);_0x2034eb[_0xb6e8('0x3d')]=qs[_0xb6e8('0x3e')](_[_0xb6e8('0x3f')](_0x4f6962[_0xb6e8('0x34')],_0x28637e[_0xb6e8('0x3e')]),_0x2f9bfe);if(_0x4f6962['query'][_0xb6e8('0x40')]){_0x2034eb[_0xb6e8('0x3d')]=_[_0xb6e8('0x41')](_0x2034eb[_0xb6e8('0x3d')],{'$or':_[_0xb6e8('0x42')](_0x2f9bfe,function(_0xb8dfce){if(_0xb8dfce[_0xb6e8('0x31')]!=='VIRTUAL'){var _0x2e280c={};_0x2e280c[_0xb8dfce[_0xb6e8('0x2b')]]={'$like':'%'+_0x4f6962[_0xb6e8('0x34')][_0xb6e8('0x40')]+'%'};return _0x2e280c;}})});}_0x2034eb=_[_0xb6e8('0x41')]({},_0x2034eb,_0x4f6962[_0xb6e8('0x43')]);var _0x155a96={'where':_0x2034eb[_0xb6e8('0x3d')]};return db[_0xb6e8('0x2e')]['count'](_0x155a96)[_0xb6e8('0x26')](function(_0x20bda4){_0x2b6ba1['count']=_0x20bda4;if(_0x4f6962[_0xb6e8('0x34')]['includeAll']){_0x2034eb[_0xb6e8('0x44')]=[{'all':!![]}];}return db[_0xb6e8('0x2e')][_0xb6e8('0x45')](_0x2034eb);})[_0xb6e8('0x26')](function(_0x1b2ba6){_0x2b6ba1[_0xb6e8('0x46')]=_0x1b2ba6;return _0x2b6ba1;})[_0xb6e8('0x26')](respondWithFilteredResult(_0x4c5a8d,_0x2034eb))[_0xb6e8('0x47')](handleError(_0x4c5a8d,null));};exports['show']=function(_0x3fa6d1,_0x5eed4d){var _0x27e5fc={'raw':!![],'where':{'id':_0x3fa6d1[_0xb6e8('0x48')]['id']}},_0x2e54e0={};_0x2e54e0[_0xb6e8('0x33')]=_[_0xb6e8('0x35')](db[_0xb6e8('0x2e')][_0xb6e8('0x2f')]);_0x2e54e0[_0xb6e8('0x34')]=_[_0xb6e8('0x35')](_0x3fa6d1[_0xb6e8('0x34')]);_0x2e54e0[_0xb6e8('0x3e')]=_[_0xb6e8('0x36')](_0x2e54e0[_0xb6e8('0x33')],_0x2e54e0[_0xb6e8('0x34')]);_0x27e5fc[_0xb6e8('0x37')]=_[_0xb6e8('0x36')](_0x2e54e0[_0xb6e8('0x33')],qs[_0xb6e8('0x38')](_0x3fa6d1[_0xb6e8('0x34')][_0xb6e8('0x38')]));_0x27e5fc[_0xb6e8('0x37')]=_0x27e5fc[_0xb6e8('0x37')][_0xb6e8('0x39')]?_0x27e5fc[_0xb6e8('0x37')]:_0x2e54e0[_0xb6e8('0x33')];if(_0x3fa6d1[_0xb6e8('0x34')][_0xb6e8('0x49')]){_0x27e5fc[_0xb6e8('0x44')]=[{'all':!![]}];}_0x27e5fc=_[_0xb6e8('0x41')]({},_0x27e5fc,_0x3fa6d1[_0xb6e8('0x43')]);return db[_0xb6e8('0x2e')]['find'](_0x27e5fc)[_0xb6e8('0x26')](handleEntityNotFound(_0x5eed4d,null))[_0xb6e8('0x26')](respondWithResult(_0x5eed4d,null))['catch'](handleError(_0x5eed4d,null));};exports['create']=function(_0x17fb00,_0x32b086){return db[_0xb6e8('0x2e')]['create'](_0x17fb00[_0xb6e8('0x4a')],{})[_0xb6e8('0x26')](respondWithResult(_0x32b086,0xc9))[_0xb6e8('0x47')](handleError(_0x32b086,null));};exports[_0xb6e8('0x25')]=function(_0x4dc51f,_0x56a489){if(_0x4dc51f[_0xb6e8('0x4a')]['id']){delete _0x4dc51f[_0xb6e8('0x4a')]['id'];}return db[_0xb6e8('0x2e')][_0xb6e8('0x4b')]({'where':{'id':_0x4dc51f[_0xb6e8('0x48')]['id']}})[_0xb6e8('0x26')](handleEntityNotFound(_0x56a489,null))[_0xb6e8('0x26')](saveUpdates(_0x4dc51f['body'],null))[_0xb6e8('0x26')](respondWithResult(_0x56a489,null))[_0xb6e8('0x47')](handleError(_0x56a489,null));};exports[_0xb6e8('0x27')]=function(_0x5923ae,_0x571b95){return db[_0xb6e8('0x2e')][_0xb6e8('0x4b')]({'where':{'id':_0x5923ae[_0xb6e8('0x48')]['id']}})[_0xb6e8('0x26')](handleEntityNotFound(_0x571b95,null))[_0xb6e8('0x26')](removeEntity(_0x571b95,null))[_0xb6e8('0x47')](handleError(_0x571b95,null));};exports[_0xb6e8('0x4c')]=function(_0x3d9c19,_0x2278b2){return db['WhatsappTransferReport'][_0xb6e8('0x4c')]()[_0xb6e8('0x26')](respondWithResult(_0x2278b2,null))[_0xb6e8('0x47')](handleError(_0x2278b2,null));};
\ No newline at end of file
index 0ac7f04..03449dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa141=['uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','report_whatsapp_transfer'];(function(_0x56b663,_0x16fbd3){var _0x34b94=function(_0x452bc4){while(--_0x452bc4){_0x56b663['push'](_0x56b663['shift']());}};_0x34b94(++_0x16fbd3);}(_0xa141,0x88));var _0x1a14=function(_0x21d81b,_0x432738){_0x21d81b=_0x21d81b-0x0;var _0x33a021=_0xa141[_0x21d81b];return _0x33a021;};'use strict';var _=require('lodash');var util=require(_0x1a14('0x0'));var logger=require(_0x1a14('0x1'))(_0x1a14('0x2'));var moment=require(_0x1a14('0x3'));var BPromise=require(_0x1a14('0x4'));var rp=require(_0x1a14('0x5'));var fs=require('fs');var path=require(_0x1a14('0x6'));var rimraf=require(_0x1a14('0x7'));var config=require(_0x1a14('0x8'));var attributes=require(_0x1a14('0x9'));module[_0x1a14('0xa')]=function(_0x1c9056,_0x517acc){return _0x1c9056[_0x1a14('0xb')](_0x1a14('0xc'),attributes,{'tableName':_0x1a14('0xd'),'paranoid':![],'indexes':[{'name':_0x1a14('0xe'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4df5=['path','../../config/environment','./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x182fff,_0x568aee){var _0x1b4171=function(_0x212d46){while(--_0x212d46){_0x182fff['push'](_0x182fff['shift']());}};_0x1b4171(++_0x568aee);}(_0x4df5,0xad));var _0x54df=function(_0x2ad83c,_0x5495e){_0x2ad83c=_0x2ad83c-0x0;var _0x3062dd=_0x4df5[_0x2ad83c];return _0x3062dd;};'use strict';var _=require(_0x54df('0x0'));var util=require(_0x54df('0x1'));var logger=require(_0x54df('0x2'))(_0x54df('0x3'));var moment=require(_0x54df('0x4'));var BPromise=require(_0x54df('0x5'));var rp=require(_0x54df('0x6'));var fs=require('fs');var path=require(_0x54df('0x7'));var rimraf=require('rimraf');var config=require(_0x54df('0x8'));var attributes=require(_0x54df('0x9'));module[_0x54df('0xa')]=function(_0x40b71e,_0x362e42){return _0x40b71e[_0x54df('0xb')](_0x54df('0xc'),attributes,{'tableName':_0x54df('0xd'),'paranoid':![],'indexes':[{'name':_0x54df('0xe'),'fields':[_0x54df('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index da99398..4f5726a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x705f=['stringify','error','code','message','info','result','catch','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x40b0b9,_0x59cd60){var _0x28e0e2=function(_0x2b75c6){while(--_0x2b75c6){_0x40b0b9['push'](_0x40b0b9['shift']());}};_0x28e0e2(++_0x59cd60);}(_0x705f,0xd6));var _0xf705=function(_0x39e164,_0x2cb93b){_0x39e164=_0x39e164-0x0;var _0x13fa6b=_0x705f[_0x39e164];return _0x13fa6b;};'use strict';var _=require(_0xf705('0x0'));var util=require('util');var moment=require(_0xf705('0x1'));var BPromise=require('bluebird');var rs=require(_0xf705('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf705('0x3'))['db'];var utils=require(_0xf705('0x4'));var logger=require(_0xf705('0x5'))(_0xf705('0x6'));var config=require('../../config/environment');var jayson=require(_0xf705('0x7'));var client=jayson[_0xf705('0x8')][_0xf705('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x37b50c,_0x354332,_0x1d467e){return new BPromise(function(_0x386c7c,_0x57a8e3){return client[_0xf705('0xa')](_0x37b50c,_0x1d467e)[_0xf705('0xb')](function(_0x3d3736){logger['info'](_0xf705('0xc'),_0x354332,_0xf705('0xd'));logger[_0xf705('0xe')](_0xf705('0xf'),_0x354332,_0xf705('0xd'),JSON[_0xf705('0x10')](_0x3d3736));if(_0x3d3736[_0xf705('0x11')]){if(_0x3d3736[_0xf705('0x11')][_0xf705('0x12')]===0x1f4){logger[_0xf705('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x354332,_0x3d3736[_0xf705('0x11')]['message']);return _0x57a8e3(_0x3d3736[_0xf705('0x11')][_0xf705('0x13')]);}logger[_0xf705('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x354332,_0x3d3736[_0xf705('0x11')][_0xf705('0x13')]);return _0x386c7c(_0x3d3736['error'][_0xf705('0x13')]);}else{logger[_0xf705('0x14')](_0xf705('0xc'),_0x354332,_0xf705('0xd'));_0x386c7c(_0x3d3736[_0xf705('0x15')][_0xf705('0x13')]);}})[_0xf705('0x16')](function(_0xb64b3c){logger[_0xf705('0x11')](_0xf705('0xc'),_0x354332,_0xb64b3c);_0x57a8e3(_0xb64b3c);});});}
\ No newline at end of file
+var _0xef6d=['info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then'];(function(_0x1a4a06,_0x36a5c2){var _0x49ec08=function(_0x497f24){while(--_0x497f24){_0x1a4a06['push'](_0x1a4a06['shift']());}};_0x49ec08(++_0x36a5c2);}(_0xef6d,0xa4));var _0xdef6=function(_0x9562cd,_0x1f422f){_0x9562cd=_0x9562cd-0x0;var _0x10cef0=_0xef6d[_0x9562cd];return _0x10cef0;};'use strict';var _=require('lodash');var util=require(_0xdef6('0x0'));var moment=require(_0xdef6('0x1'));var BPromise=require(_0xdef6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdef6('0x3'));var db=require(_0xdef6('0x4'))['db'];var utils=require(_0xdef6('0x5'));var logger=require(_0xdef6('0x6'))(_0xdef6('0x7'));var config=require('../../config/environment');var jayson=require(_0xdef6('0x8'));var client=jayson[_0xdef6('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xd1295a,_0x51d962,_0x2d58e5){return new BPromise(function(_0x56eec3,_0x2de7ee){return client[_0xdef6('0xa')](_0xd1295a,_0x2d58e5)[_0xdef6('0xb')](function(_0x112626){logger[_0xdef6('0xc')](_0xdef6('0xd'),_0x51d962,_0xdef6('0xe'));logger['debug'](_0xdef6('0xf'),_0x51d962,_0xdef6('0xe'),JSON[_0xdef6('0x10')](_0x112626));if(_0x112626[_0xdef6('0x11')]){if(_0x112626[_0xdef6('0x11')][_0xdef6('0x12')]===0x1f4){logger[_0xdef6('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x51d962,_0x112626[_0xdef6('0x11')]['message']);return _0x2de7ee(_0x112626[_0xdef6('0x11')]['message']);}logger[_0xdef6('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x51d962,_0x112626['error'][_0xdef6('0x13')]);return _0x56eec3(_0x112626[_0xdef6('0x11')][_0xdef6('0x13')]);}else{logger['info'](_0xdef6('0xd'),_0x51d962,_0xdef6('0xe'));_0x56eec3(_0x112626[_0xdef6('0x14')][_0xdef6('0x13')]);}})[_0xdef6('0x15')](function(_0x234505){logger[_0xdef6('0x11')](_0xdef6('0xd'),_0x51d962,_0x234505);_0x2de7ee(_0x234505);});});}
\ No newline at end of file
index 4fbd3e8..50a15f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11c3=['online','join','Offline\x20apps:','status','name','None','seedDB','./config/seedDB','default','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./rpc','./config/environment','./config/pm2','./config/pm2/config','./config/schedule','sequelize','sync','then','listen','start','info','Online\x20apps:','map','filter'];(function(_0x450928,_0x35ce1b){var _0x1f9665=function(_0x34e376){while(--_0x34e376){_0x450928['push'](_0x450928['shift']());}};_0x1f9665(++_0x35ce1b);}(_0x11c3,0x186));var _0x311c=function(_0x33699b,_0x1cb86a){_0x33699b=_0x33699b-0x0;var _0x51c74d=_0x11c3[_0x33699b];return _0x51c74d;};'use strict';var _=require(_0x311c('0x0'));var mysqldb=require(_0x311c('0x1'));var rpc=require(_0x311c('0x2'));var config=require(_0x311c('0x3'));var logger=require('./config/logger')('app');var pm2=require(_0x311c('0x4'));var pm2Config=require(_0x311c('0x5'));var schedule=require(_0x311c('0x6'));var chat=require('./config/schedule/chat');var whatsapp=require('./config/schedule/whatsapp');var transcribe=require('./config/schedule/transcribe');function main(){return mysqldb['db'][_0x311c('0x7')][_0x311c('0x8')]()[_0x311c('0x9')](function(){return rpc[_0x311c('0xa')]();})[_0x311c('0x9')](function(_0x525aee){logger['info'](_0x525aee);return chat[_0x311c('0xb')]();})[_0x311c('0x9')](function(){return whatsapp[_0x311c('0xb')]();})['then'](function(){return schedule[_0x311c('0xb')]();})[_0x311c('0x9')](function(){return transcribe['start']();})[_0x311c('0x9')](function(_0x5b8912){logger[_0x311c('0xc')](_0x5b8912);return pm2['start'](pm2Config);})[_0x311c('0x9')](function(_0x4a338a){logger[_0x311c('0xc')](_0x311c('0xd'),_[_0x311c('0xe')](_[_0x311c('0xf')](_0x4a338a,{'status':_0x311c('0x10')}),'name')[_0x311c('0x11')]());logger[_0x311c('0xc')](_0x311c('0x12'),_[_0x311c('0xe')](_[_0x311c('0xf')](_0x4a338a,function(_0x3e31f5){return _0x3e31f5[_0x311c('0x13')]!=='online';}),_0x311c('0x14'))['join']()||_0x311c('0x15'));config[_0x311c('0x16')]&&require(_0x311c('0x17'))[_0x311c('0x18')]();require('./config/license')[_0x311c('0x18')]();})[_0x311c('0x19')](function(_0x4aab8a){logger[_0x311c('0x1a')](_0x311c('0x1b'),_0x4aab8a);process[_0x311c('0x1c')](0x1);});}main();
\ No newline at end of file
+var _0x7737=['catch','error','exit','lodash','./mysqldb','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','sequelize','sync','listen','info','start','then','map','filter','name','join','Offline\x20apps:','None','seedDB','./config/seedDB','default'];(function(_0x3116ce,_0x4741d6){var _0x2934cf=function(_0x3ad0d2){while(--_0x3ad0d2){_0x3116ce['push'](_0x3116ce['shift']());}};_0x2934cf(++_0x4741d6);}(_0x7737,0x1d3));var _0x7773=function(_0x1866ea,_0x547489){_0x1866ea=_0x1866ea-0x0;var _0x34f90a=_0x7737[_0x1866ea];return _0x34f90a;};'use strict';var _=require(_0x7773('0x0'));var mysqldb=require(_0x7773('0x1'));var rpc=require('./rpc');var config=require(_0x7773('0x2'));var logger=require(_0x7773('0x3'))(_0x7773('0x4'));var pm2=require(_0x7773('0x5'));var pm2Config=require(_0x7773('0x6'));var schedule=require(_0x7773('0x7'));var chat=require(_0x7773('0x8'));var whatsapp=require(_0x7773('0x9'));var transcribe=require(_0x7773('0xa'));function main(){return mysqldb['db'][_0x7773('0xb')][_0x7773('0xc')]()['then'](function(){return rpc[_0x7773('0xd')]();})['then'](function(_0x5b93c3){logger[_0x7773('0xe')](_0x5b93c3);return chat[_0x7773('0xf')]();})[_0x7773('0x10')](function(){return whatsapp[_0x7773('0xf')]();})[_0x7773('0x10')](function(){return schedule[_0x7773('0xf')]();})[_0x7773('0x10')](function(){return transcribe[_0x7773('0xf')]();})['then'](function(_0x358bfe){logger[_0x7773('0xe')](_0x358bfe);return pm2[_0x7773('0xf')](pm2Config);})[_0x7773('0x10')](function(_0x3d372c){logger['info']('Online\x20apps:',_[_0x7773('0x11')](_[_0x7773('0x12')](_0x3d372c,{'status':'online'}),_0x7773('0x13'))[_0x7773('0x14')]());logger['info'](_0x7773('0x15'),_['map'](_[_0x7773('0x12')](_0x3d372c,function(_0x17c52b){return _0x17c52b['status']!=='online';}),_0x7773('0x13'))['join']()||_0x7773('0x16'));config[_0x7773('0x17')]&&require(_0x7773('0x18'))[_0x7773('0x19')]();require('./config/license')[_0x7773('0x19')]();})[_0x7773('0x1a')](function(_0x34dcb7){logger[_0x7773('0x1b')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s',_0x34dcb7);process[_0x7773('0x1c')](0x1);});}main();
\ No newline at end of file
index 3aa0019..9159ee1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe467=['phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','interface','userProfileId','privacyEnabled','settingsEnabled','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','isChatInteractionAuthorized','isAuthenticated','ChatInteraction','findOne','params','closed','disposition','then','status','unmanaged','json','Unmanaged.','Forbidden.','use','headers','authorization','Basic','User','find','name','authenticate','pass','Wrong\x20credentials.','user','catch','startsWith','Bearer','query','apikey','getUuid','Setting','blockDuration','isEqual','apiKeyNonce','nonce','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','Unknown\x20authorization\x20format','User\x20not\x20found.','getLicense','update','Forbidden','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','regenerateApiKey','validatePasswordPattern','test','Sequelize','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~!@#$%^&-_=+[{]}.','decryptString','split','toLowerCase','format','updatePasswordsHistory','length','splice','unshift','encryptString','promisify','secret','payload','options','verify','randomBytes','floor','toString','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','bluebird','util','secrets','session','role','fullname','internal','email','userpic','permissions','md5secret','chatPause','mailPause','smsPause','openchannelPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','allowmessenger','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarEnableRecording','phoneBarEnableDtmfTone'];(function(_0x11efa2,_0x5b60ba){var _0x1b23bf=function(_0x1baece){while(--_0x1baece){_0x11efa2['push'](_0x11efa2['shift']());}};_0x1b23bf(++_0x5b60ba);}(_0xe467,0x1e1));var _0x7e46=function(_0x4a3898,_0x4c9853){_0x4a3898=_0x4a3898-0x0;var _0x25ceb0=_0xe467[_0x4a3898];return _0x25ceb0;};'use strict';var db=require(_0x7e46('0x0'))['db'];var config=require(_0x7e46('0x1'));var hardwareConf=require(_0x7e46('0x2'));var licenseUtil=require(_0x7e46('0x3'));var encryptor=require('../encryptor');var _=require(_0x7e46('0x4'));var jwt=require(_0x7e46('0x5'));var expressJwt=require(_0x7e46('0x6'));var compose=require(_0x7e46('0x7'));var basicAuth=require(_0x7e46('0x8'));var crypto=require(_0x7e46('0x9'));var BPromise=require(_0x7e46('0xa'));var util=require(_0x7e46('0xb'));var moment=require('moment');var validateJwt=expressJwt({'secret':config[_0x7e46('0xc')][_0x7e46('0xd')]});var userAttributes=['id',_0x7e46('0xe'),_0x7e46('0xf'),'name',_0x7e46('0x10'),_0x7e46('0x11'),_0x7e46('0x12'),_0x7e46('0x13'),_0x7e46('0x14'),'voicePause',_0x7e46('0x15'),_0x7e46('0x16'),'faxPause',_0x7e46('0x17'),_0x7e46('0x18'),_0x7e46('0x19'),_0x7e46('0x1a'),_0x7e46('0x1b'),_0x7e46('0x1c'),'crudPermissions',_0x7e46('0x1d'),'passwordResetAt',_0x7e46('0x1e'),_0x7e46('0x1f'),_0x7e46('0x20'),'phoneBarDnd',_0x7e46('0x21'),_0x7e46('0x22'),_0x7e46('0x23'),_0x7e46('0x24'),_0x7e46('0x25'),_0x7e46('0x26'),_0x7e46('0x27'),'hotdesk',_0x7e46('0x28'),_0x7e46('0x29'),_0x7e46('0x2a'),_0x7e46('0x2b'),'wssPort',_0x7e46('0x2c'),_0x7e46('0x2d'),_0x7e46('0x2e'),'ignorePauseForPreviewCalls','selectRecallMeCampaign'];exports[_0x7e46('0x2f')]=function(){return this[_0x7e46('0x30')](!![])['use'](function(_0x1b355a,_0xfaa7f9,_0x38c7b8){if(_0x1b355a['user']){_0x38c7b8();}else{return db[_0x7e46('0x31')][_0x7e46('0x32')]({'where':{'id':_0x1b355a[_0x7e46('0x33')]['id']},'attributes':['id',_0x7e46('0x34'),_0x7e46('0x35')],'raw':!![]})[_0x7e46('0x36')](function(_0x4da9c7){if(_0x4da9c7&&_0x4da9c7['closed']){return _0xfaa7f9[_0x7e46('0x37')](_0x4da9c7[_0x7e46('0x35')]===_0x7e46('0x38')?0x195:0x193)[_0x7e46('0x39')]({'message':_0x4da9c7[_0x7e46('0x35')]===_0x7e46('0x38')?_0x7e46('0x3a'):_0x7e46('0x3b')});}else{_0x38c7b8();}})['catch'](function(_0x2a5af4){_0x38c7b8(_0x2a5af4);});}});};exports[_0x7e46('0x30')]=function isAuthenticated(_0x1e93fe){return compose()[_0x7e46('0x3c')](function(_0x50abfe,_0x5ed1d9,_0x38be7c){var _0x385a22;if(_0x50abfe['headers']['authorization']){if(_['startsWith'](_0x50abfe[_0x7e46('0x3d')][_0x7e46('0x3e')],_0x7e46('0x3f'))){var _0x2ff04e=basicAuth(_0x50abfe);db[_0x7e46('0x40')][_0x7e46('0x41')]({'where':{'name':_0x2ff04e[_0x7e46('0x42')]}})[_0x7e46('0x36')](function(_0x440367){if(!_0x440367||!_0x440367[_0x7e46('0x43')](_0x2ff04e[_0x7e46('0x44')])){return _0x5ed1d9[_0x7e46('0x37')](0x191)[_0x7e46('0x39')]({'message':_0x7e46('0x45')});}_0x50abfe[_0x7e46('0x46')]={'id':_0x440367['id']};_0x38be7c();})[_0x7e46('0x47')](function(_0x306685){_0x38be7c(_0x306685);});}else if(_[_0x7e46('0x48')](_0x50abfe[_0x7e46('0x3d')][_0x7e46('0x3e')],_0x7e46('0x49'))){validateJwt(_0x50abfe,_0x5ed1d9,_0x38be7c);}else{if(_0x1e93fe){_0x38be7c();}else{return _0x5ed1d9[_0x7e46('0x37')](0x193)['json']({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x50abfe[_0x7e46('0x4a')][_0x7e46('0x4b')]){try{var _0x219272={'audience':hardwareConf[_0x7e46('0x4c')](),'issuer':hardwareConf[_0x7e46('0x4c')]()};verifyJwt(_0x50abfe[_0x7e46('0x4a')][_0x7e46('0x4b')],_0x219272)[_0x7e46('0x36')](function(_0x9df02f){return db[_0x7e46('0x40')][_0x7e46('0x41')]({'where':{'id':_0x9df02f['sub']}})[_0x7e46('0x36')](function(_0x1dcae6){_0x385a22=_0x1dcae6;return db[_0x7e46('0x4d')]['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x7e46('0x4e')],'raw':!![]});})[_0x7e46('0x36')](function(_0x11368c){if(!_0x385a22||!_[_0x7e46('0x4f')](_0x385a22[_0x7e46('0x50')],_0x9df02f[_0x7e46('0x51')])){return _0x5ed1d9[_0x7e46('0x37')](0x191)[_0x7e46('0x39')]({'message':'API\x20access\x20key\x20is\x20not\x20valid\x20anymore'});}if(_0x385a22[_0x7e46('0x52')]){return _0x5ed1d9[_0x7e46('0x37')](0x191)[_0x7e46('0x39')]({'message':_0x7e46('0x53')});}if(_0x385a22[_0x7e46('0x54')]){if(_0x11368c[_0x7e46('0x4e')]>0x0){if(moment(_0x385a22[_0x7e46('0x55')])[_0x7e46('0x56')](_0x11368c[_0x7e46('0x4e')],_0x7e46('0x57'))>moment()){return _0x5ed1d9[_0x7e46('0x37')](0x191)[_0x7e46('0x39')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x5ed1d9[_0x7e46('0x37')](0x191)[_0x7e46('0x39')]({'message':_0x7e46('0x53')});}}_0x50abfe['user']={'id':_0x385a22['id']};_0x38be7c();});})[_0x7e46('0x47')](function(){return _0x5ed1d9[_0x7e46('0x37')](0x191)[_0x7e46('0x39')]({'message':_0x7e46('0x53')});});}catch(_0x59032b){_0x38be7c(_0x59032b);}}else if(_0x1e93fe){_0x38be7c();}else{return _0x5ed1d9[_0x7e46('0x37')](0x193)[_0x7e46('0x39')]({'message':_0x7e46('0x58')});}})[_0x7e46('0x3c')](function(_0x24c598,_0xf75c55,_0x44a21f){if(_0x24c598[_0x7e46('0x46')]){db[_0x7e46('0x40')]['find']({'where':{'id':_0x24c598[_0x7e46('0x46')]['id']},'attributes':userAttributes})['then'](function(_0x1b2822){if(!_0x1b2822){return _0xf75c55[_0x7e46('0x37')](0x194)[_0x7e46('0x39')]({'message':_0x7e46('0x59')});}_0x24c598['user']=_0x1b2822;_0x44a21f();})['catch'](function(_0xcf1281){_0x44a21f(_0xcf1281);});}else if(_0x1e93fe){_0x44a21f();}else{return _0xf75c55['status'](0x194)['json']({'message':'User\x20object\x20not\x20found.'});}});};exports['canUpdate']=function canUpdate(){return compose()[_0x7e46('0x3c')](function(_0x20ab4d,_0x528a03,_0x5ac0a5){return licenseUtil[_0x7e46('0x5a')]()[_0x7e46('0x36')](function(_0x36774e){if(_0x36774e[_0x7e46('0x5b')]){_0x5ac0a5();}else{return _0x528a03[_0x7e46('0x37')](0x193)[_0x7e46('0x39')]({'message':_0x7e46('0x5c')});}})['catch'](function(_0x23fc34){_0x5ac0a5(_0x23fc34);});});};exports[_0x7e46('0x5d')]=function(_0x1291d7,_0x1fbade,_0x28549e){_0x1291d7[_0x7e46('0x5d')]=!![];return _0x28549e();};exports[_0x7e46('0x5e')]=function signToken(_0x1da7b9){return signJwt(_0x1da7b9);};exports[_0x7e46('0x5f')]=function(_0x54eafc,_0xf10437){if(!_0x54eafc[_0x7e46('0x46')]){return _0xf10437[_0x7e46('0x37')](0x194)[_0x7e46('0x39')]({'message':_0x7e46('0x60')});}var _0x444494={'payload':{'id':_0x54eafc[_0x7e46('0x46')]['id'],'role':_0x54eafc[_0x7e46('0x46')][_0x7e46('0xe')]},'options':{'expiresIn':0x15180}};return signJwt(_0x444494)['then'](function(_0x46967e){_0xf10437[_0x7e46('0x61')](_0x7e46('0x62'),_0x46967e);_0xf10437[_0x7e46('0x63')](_0x7e46('0x64'));})[_0x7e46('0x47')](function(_0x30b1d6){return _0xf10437[_0x7e46('0x37')](0x1f4)[_0x7e46('0x65')](_0x30b1d6);});};exports[_0x7e46('0x66')]=function(_0x131911){if(_[_0x7e46('0x67')](_0x131911[_0x7e46('0x50')])||_[_0x7e46('0x67')](_0x131911[_0x7e46('0x68')])){return null;}else{return createJwt(_0x131911);}};exports['generateApiKey']=function(_0x3ccd91){_0x3ccd91[_0x7e46('0x50')]=generateNonce();_0x3ccd91['apiKeyIat']=generateIssuedAt();return createJwt(_0x3ccd91);};exports[_0x7e46('0x69')]=function(_0x296413,_0x1171b8){var _0x14a800=_0x296413[_0x7e46('0x4a')][_0x7e46('0x4b')];if(_0x14a800){var _0x281db2={'nonce':_0x1171b8[_0x7e46('0x50')],'iat':_0x1171b8[_0x7e46('0x68')],'audience':hardwareConf[_0x7e46('0x4c')](),'issuer':hardwareConf[_0x7e46('0x4c')]()};return verifyJwt(_0x14a800,_0x281db2)['then'](function(){return generateApiKey(_0x1171b8);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0x7e46('0x6a')]=function(_0xd2f78f){var _0x567c0e=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x567c0e[_0x7e46('0x6b')](_0xd2f78f))throw new db[(_0x7e46('0x6c'))][(_0x7e46('0x6d'))](_0x7e46('0x6e'));return;};exports['validatePasswordHistory']=function(_0x1c2e52,_0x4a6dde,_0x1c9c54){var _0x42c668=encryptor[_0x7e46('0x6f')](_0x4a6dde)[_0x7e46('0x70')](',');for(var _0x40a6ab=0x0;_0x40a6ab<_0x1c9c54;_0x40a6ab++){if(!_0x42c668[_0x40a6ab])break;if(_0x1c2e52[_0x7e46('0x71')]()===_0x42c668[_0x40a6ab][_0x7e46('0x71')]()){var _0x720ac1=util[_0x7e46('0x72')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x1c9c54);if(_0x1c9c54===0x1){_0x720ac1='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db[(_0x7e46('0x6c'))][(_0x7e46('0x6d'))](_0x720ac1);}}return;};exports[_0x7e46('0x73')]=function(_0x4ed92f,_0x1718ab){var _0x4c0771=_0x1718ab?encryptor['decryptString'](_0x1718ab)['split'](','):[];if(_0x4c0771[_0x7e46('0x74')]===0x5){_0x4c0771[_0x7e46('0x75')](-0x1,0x1);}_0x4c0771[_0x7e46('0x76')](_0x4ed92f);return encryptor[_0x7e46('0x77')](_0x4c0771['join'](','));};function signJwt(_0x28f903){var _0x4a39e7=BPromise[_0x7e46('0x78')](jwt['sign'],{'context':jwt});var _0x4bf3db=_0x28f903[_0x7e46('0x79')]||config['secrets'][_0x7e46('0xd')];return new BPromise(function(_0x5111df,_0x1d4f97){_0x4a39e7(_0x28f903[_0x7e46('0x7a')],_0x4bf3db,_0x28f903[_0x7e46('0x7b')])[_0x7e46('0x36')](function(_0x59c646){_0x5111df(_0x59c646);})[_0x7e46('0x47')](function(_0x1024cc){_0x1d4f97(_0x1024cc);});});}function verifyJwt(_0x4808e3,_0x3c8e44,_0x4fa622){var _0x1b3ba1=BPromise[_0x7e46('0x78')](jwt[_0x7e46('0x7c')],{'context':jwt});var _0x2d21ea=_0x4fa622||config[_0x7e46('0xc')][_0x7e46('0xd')];return new BPromise(function(_0x29a221,_0x1905a3){_0x1b3ba1(_0x4808e3,_0x2d21ea,_0x3c8e44)['then'](function(_0x343f49){_0x29a221(_0x343f49);})[_0x7e46('0x47')](function(_0x4edc49){_0x1905a3(_0x4edc49);});});}function generateNonce(){return crypto[_0x7e46('0x7d')](0x10)['toString']('hex');}function generateIssuedAt(){return Math[_0x7e46('0x7e')](Date['now']()/0x3e8)[_0x7e46('0x7f')]();}function createJwt(_0x1a50bf){var _0x40a052={'payload':{'iat':_0x1a50bf['apiKeyIat'],'nonce':_0x1a50bf[_0x7e46('0x50')]},'options':{'algorithm':_0x7e46('0x80'),'subject':_0x1a50bf['id'][_0x7e46('0x7f')](),'issuer':hardwareConf[_0x7e46('0x4c')](),'audience':hardwareConf[_0x7e46('0x4c')]()}};return signJwt(_0x40a052)['then'](function(_0x5f001f){return{'iat':_0x1a50bf[_0x7e46('0x68')],'nonce':_0x1a50bf[_0x7e46('0x50')],'token':_0x5f001f};});}
\ No newline at end of file
+var _0x8375=['generateApiKey','apiKeyIat','regenerateApiKey','validatePasswordPattern','Sequelize','ValidationError','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','splice','unshift','encryptString','join','sign','secret','payload','options','promisify','verify','randomBytes','toString','floor','now','HS512','../../mysqldb','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','moment','secrets','session','role','fullname','name','internal','email','userpic','permissions','voicePause','chatPause','mailPause','smsPause','openchannelPause','pauseType','showWebBar','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','isChatInteractionAuthorized','use','user','ChatInteraction','findOne','params','closed','status','disposition','unmanaged','json','Unmanaged.','catch','isAuthenticated','headers','authorization','startsWith','User','authenticate','pass','Wrong\x20credentials.','Unknown\x20authorization\x20format','query','apikey','getUuid','find','sub','then','Setting','allowedLoginAttempts','blockDuration','isEqual','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','isMiddleware','signToken','setTokenCookie','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyNonce'];(function(_0x58e02c,_0x4f0eb0){var _0x46164e=function(_0x55225f){while(--_0x55225f){_0x58e02c['push'](_0x58e02c['shift']());}};_0x46164e(++_0x4f0eb0);}(_0x8375,0x123));var _0x5837=function(_0x4ecd18,_0x408619){_0x4ecd18=_0x4ecd18-0x0;var _0x20b919=_0x8375[_0x4ecd18];return _0x20b919;};'use strict';var db=require(_0x5837('0x0'))['db'];var config=require('../../config/environment');var hardwareConf=require(_0x5837('0x1'));var licenseUtil=require(_0x5837('0x2'));var encryptor=require(_0x5837('0x3'));var _=require(_0x5837('0x4'));var jwt=require(_0x5837('0x5'));var expressJwt=require(_0x5837('0x6'));var compose=require(_0x5837('0x7'));var basicAuth=require(_0x5837('0x8'));var crypto=require('crypto');var BPromise=require('bluebird');var util=require('util');var moment=require(_0x5837('0x9'));var validateJwt=expressJwt({'secret':config[_0x5837('0xa')][_0x5837('0xb')]});var userAttributes=['id',_0x5837('0xc'),_0x5837('0xd'),_0x5837('0xe'),_0x5837('0xf'),_0x5837('0x10'),_0x5837('0x11'),_0x5837('0x12'),'md5secret',_0x5837('0x13'),_0x5837('0x14'),_0x5837('0x15'),'faxPause',_0x5837('0x16'),_0x5837('0x17'),_0x5837('0x18'),_0x5837('0x19'),'lastLoginAt','lastPauseAt','crudPermissions',_0x5837('0x1a'),_0x5837('0x1b'),_0x5837('0x1c'),_0x5837('0x1d'),_0x5837('0x1e'),_0x5837('0x1f'),_0x5837('0x20'),_0x5837('0x21'),_0x5837('0x22'),'phoneBarExpires',_0x5837('0x23'),_0x5837('0x24'),_0x5837('0x25'),_0x5837('0x26'),_0x5837('0x27'),_0x5837('0x28'),_0x5837('0x29'),_0x5837('0x2a'),_0x5837('0x2b'),_0x5837('0x2c'),_0x5837('0x2d'),_0x5837('0x2e')];exports[_0x5837('0x2f')]=function(){return this['isAuthenticated'](!![])[_0x5837('0x30')](function(_0x3f1a29,_0xb6683d,_0x5811bd){if(_0x3f1a29[_0x5837('0x31')]){_0x5811bd();}else{return db[_0x5837('0x32')][_0x5837('0x33')]({'where':{'id':_0x3f1a29[_0x5837('0x34')]['id']},'attributes':['id',_0x5837('0x35'),'disposition'],'raw':!![]})['then'](function(_0x4d42d1){if(_0x4d42d1&&_0x4d42d1[_0x5837('0x35')]){return _0xb6683d[_0x5837('0x36')](_0x4d42d1[_0x5837('0x37')]===_0x5837('0x38')?0x195:0x193)[_0x5837('0x39')]({'message':_0x4d42d1[_0x5837('0x37')]===_0x5837('0x38')?_0x5837('0x3a'):'Forbidden.'});}else{_0x5811bd();}})[_0x5837('0x3b')](function(_0x527059){_0x5811bd(_0x527059);});}});};exports[_0x5837('0x3c')]=function isAuthenticated(_0x1ae4d6){return compose()[_0x5837('0x30')](function(_0x4b762c,_0x3df7bd,_0x32ad66){var _0x47a369;if(_0x4b762c[_0x5837('0x3d')][_0x5837('0x3e')]){if(_[_0x5837('0x3f')](_0x4b762c[_0x5837('0x3d')][_0x5837('0x3e')],'Basic')){var _0x57211e=basicAuth(_0x4b762c);db[_0x5837('0x40')]['find']({'where':{'name':_0x57211e[_0x5837('0xe')]}})['then'](function(_0x3cd0a6){if(!_0x3cd0a6||!_0x3cd0a6[_0x5837('0x41')](_0x57211e[_0x5837('0x42')])){return _0x3df7bd[_0x5837('0x36')](0x191)['json']({'message':_0x5837('0x43')});}_0x4b762c[_0x5837('0x31')]={'id':_0x3cd0a6['id']};_0x32ad66();})[_0x5837('0x3b')](function(_0x33f87e){_0x32ad66(_0x33f87e);});}else if(_[_0x5837('0x3f')](_0x4b762c[_0x5837('0x3d')][_0x5837('0x3e')],'Bearer')){validateJwt(_0x4b762c,_0x3df7bd,_0x32ad66);}else{if(_0x1ae4d6){_0x32ad66();}else{return _0x3df7bd['status'](0x193)[_0x5837('0x39')]({'message':_0x5837('0x44')});}}}else if(_0x4b762c[_0x5837('0x45')][_0x5837('0x46')]){try{var _0x249807={'audience':hardwareConf[_0x5837('0x47')](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x4b762c[_0x5837('0x45')][_0x5837('0x46')],_0x249807)['then'](function(_0x3a65b2){return db[_0x5837('0x40')][_0x5837('0x48')]({'where':{'id':_0x3a65b2[_0x5837('0x49')]}})[_0x5837('0x4a')](function(_0x5250ce){_0x47a369=_0x5250ce;return db[_0x5837('0x4b')][_0x5837('0x33')]({'where':{'id':0x1},'attributes':[_0x5837('0x4c'),_0x5837('0x4d')],'raw':!![]});})[_0x5837('0x4a')](function(_0x40e757){if(!_0x47a369||!_[_0x5837('0x4e')](_0x47a369['apiKeyNonce'],_0x3a65b2[_0x5837('0x4f')])){return _0x3df7bd['status'](0x191)[_0x5837('0x39')]({'message':_0x5837('0x50')});}if(_0x47a369[_0x5837('0x51')]){return _0x3df7bd[_0x5837('0x36')](0x191)['json']({'message':_0x5837('0x52')});}if(_0x47a369[_0x5837('0x53')]){if(_0x40e757[_0x5837('0x4d')]>0x0){if(moment(_0x47a369[_0x5837('0x54')])[_0x5837('0x55')](_0x40e757['blockDuration'],_0x5837('0x56'))>moment()){return _0x3df7bd['status'](0x191)[_0x5837('0x39')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x3df7bd[_0x5837('0x36')](0x191)['json']({'message':'Invalid\x20API\x20access\x20key'});}}_0x4b762c[_0x5837('0x31')]={'id':_0x47a369['id']};_0x32ad66();});})['catch'](function(){return _0x3df7bd[_0x5837('0x36')](0x191)[_0x5837('0x39')]({'message':'Invalid\x20API\x20access\x20key'});});}catch(_0x101a36){_0x32ad66(_0x101a36);}}else if(_0x1ae4d6){_0x32ad66();}else{return _0x3df7bd['status'](0x193)[_0x5837('0x39')]({'message':_0x5837('0x44')});}})[_0x5837('0x30')](function(_0x18d230,_0x3a0683,_0x54b006){if(_0x18d230[_0x5837('0x31')]){db[_0x5837('0x40')]['find']({'where':{'id':_0x18d230[_0x5837('0x31')]['id']},'attributes':userAttributes})[_0x5837('0x4a')](function(_0x472637){if(!_0x472637){return _0x3a0683[_0x5837('0x36')](0x194)[_0x5837('0x39')]({'message':_0x5837('0x57')});}_0x18d230[_0x5837('0x31')]=_0x472637;_0x54b006();})[_0x5837('0x3b')](function(_0x4a8ccd){_0x54b006(_0x4a8ccd);});}else if(_0x1ae4d6){_0x54b006();}else{return _0x3a0683['status'](0x194)['json']({'message':_0x5837('0x58')});}});};exports[_0x5837('0x59')]=function canUpdate(){return compose()[_0x5837('0x30')](function(_0x403bf4,_0x10575e,_0x53207d){return licenseUtil[_0x5837('0x5a')]()[_0x5837('0x4a')](function(_0x4237e7){if(_0x4237e7['update']){_0x53207d();}else{return _0x10575e[_0x5837('0x36')](0x193)['json']({'message':'Forbidden'});}})[_0x5837('0x3b')](function(_0x40deee){_0x53207d(_0x40deee);});});};exports[_0x5837('0x5b')]=function(_0x345a29,_0x458848,_0x580680){_0x345a29[_0x5837('0x5b')]=!![];return _0x580680();};exports[_0x5837('0x5c')]=function signToken(_0x47409f){return signJwt(_0x47409f);};exports[_0x5837('0x5d')]=function(_0x1645b8,_0x4b0779){if(!_0x1645b8[_0x5837('0x31')]){return _0x4b0779[_0x5837('0x36')](0x194)[_0x5837('0x39')]({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x43bc44={'payload':{'id':_0x1645b8[_0x5837('0x31')]['id'],'role':_0x1645b8[_0x5837('0x31')][_0x5837('0xc')]},'options':{'expiresIn':0x15180}};return signJwt(_0x43bc44)[_0x5837('0x4a')](function(_0xc6a92c){_0x4b0779[_0x5837('0x5e')](_0x5837('0x5f'),_0xc6a92c);_0x4b0779[_0x5837('0x60')](_0x5837('0x61'));})[_0x5837('0x3b')](function(_0x37cc9f){return _0x4b0779[_0x5837('0x36')](0x1f4)[_0x5837('0x62')](_0x37cc9f);});};exports[_0x5837('0x63')]=function(_0x406779){if(_[_0x5837('0x64')](_0x406779[_0x5837('0x65')])||_[_0x5837('0x64')](_0x406779['apiKeyIat'])){return null;}else{return createJwt(_0x406779);}};exports[_0x5837('0x66')]=function(_0x5ee78d){_0x5ee78d['apiKeyNonce']=generateNonce();_0x5ee78d[_0x5837('0x67')]=generateIssuedAt();return createJwt(_0x5ee78d);};exports[_0x5837('0x68')]=function(_0x552eec,_0x1558d9){var _0x1ad7fc=_0x552eec[_0x5837('0x45')]['apikey'];if(_0x1ad7fc){var _0x499ede={'nonce':_0x1558d9['apiKeyNonce'],'iat':_0x1558d9[_0x5837('0x67')],'audience':hardwareConf[_0x5837('0x47')](),'issuer':hardwareConf[_0x5837('0x47')]()};return verifyJwt(_0x1ad7fc,_0x499ede)[_0x5837('0x4a')](function(){return generateApiKey(_0x1558d9);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0x5837('0x69')]=function(_0x4de0a8){var _0x57525b=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x57525b['test'](_0x4de0a8))throw new db[(_0x5837('0x6a'))][(_0x5837('0x6b'))]('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[_0x5837('0x6c')]=function(_0x42bec0,_0x357218,_0x6542a1){var _0xed7441=encryptor[_0x5837('0x6d')](_0x357218)[_0x5837('0x6e')](',');for(var _0x52323a=0x0;_0x52323a<_0x6542a1;_0x52323a++){if(!_0xed7441[_0x52323a])break;if(_0x42bec0[_0x5837('0x6f')]()===_0xed7441[_0x52323a][_0x5837('0x6f')]()){var _0x4e4cae=util[_0x5837('0x70')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x6542a1);if(_0x6542a1===0x1){_0x4e4cae=_0x5837('0x71');}throw new db[(_0x5837('0x6a'))][(_0x5837('0x6b'))](_0x4e4cae);}}return;};exports[_0x5837('0x72')]=function(_0x4b0033,_0x399e37){var _0x40a9f4=_0x399e37?encryptor[_0x5837('0x6d')](_0x399e37)[_0x5837('0x6e')](','):[];if(_0x40a9f4[_0x5837('0x73')]===0x5){_0x40a9f4[_0x5837('0x74')](-0x1,0x1);}_0x40a9f4[_0x5837('0x75')](_0x4b0033);return encryptor[_0x5837('0x76')](_0x40a9f4[_0x5837('0x77')](','));};function signJwt(_0x28f5ef){var _0x3ff843=BPromise['promisify'](jwt[_0x5837('0x78')],{'context':jwt});var _0x1a4092=_0x28f5ef[_0x5837('0x79')]||config[_0x5837('0xa')][_0x5837('0xb')];return new BPromise(function(_0x401175,_0x37524c){_0x3ff843(_0x28f5ef[_0x5837('0x7a')],_0x1a4092,_0x28f5ef[_0x5837('0x7b')])['then'](function(_0x30243c){_0x401175(_0x30243c);})['catch'](function(_0x17292d){_0x37524c(_0x17292d);});});}function verifyJwt(_0xee55ac,_0x3e8872,_0x244a9a){var _0x2b8159=BPromise[_0x5837('0x7c')](jwt[_0x5837('0x7d')],{'context':jwt});var _0x493808=_0x244a9a||config['secrets']['session'];return new BPromise(function(_0x4c7b03,_0x35099f){_0x2b8159(_0xee55ac,_0x493808,_0x3e8872)['then'](function(_0xec465d){_0x4c7b03(_0xec465d);})[_0x5837('0x3b')](function(_0x11490d){_0x35099f(_0x11490d);});});}function generateNonce(){return crypto[_0x5837('0x7e')](0x10)[_0x5837('0x7f')]('hex');}function generateIssuedAt(){return Math[_0x5837('0x80')](Date[_0x5837('0x81')]()/0x3e8)['toString']();}function createJwt(_0x5a22e0){var _0x4d05f0={'payload':{'iat':_0x5a22e0[_0x5837('0x67')],'nonce':_0x5a22e0[_0x5837('0x65')]},'options':{'algorithm':_0x5837('0x82'),'subject':_0x5a22e0['id'][_0x5837('0x7f')](),'issuer':hardwareConf[_0x5837('0x47')](),'audience':hardwareConf[_0x5837('0x47')]()}};return signJwt(_0x4d05f0)['then'](function(_0x5d7b46){return{'iat':_0x5a22e0['apiKeyIat'],'nonce':_0x5a22e0[_0x5837('0x65')],'token':_0x5d7b46};});}
\ No newline at end of file
index 77d5763..9544aee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x653b=['close','decryptFile','createReadStream','createDecipher','unlink','encryptString','secret','utf8','base64','decryptString','bluebird','lodash','../../config/environment','app','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','getCiphers','hasOwnProperty','createWriteStream','createCipher','data','update','binary','write','end','final'];(function(_0x2e8775,_0x310049){var _0x4cbf35=function(_0x103483){while(--_0x103483){_0x2e8775['push'](_0x2e8775['shift']());}};_0x4cbf35(++_0x310049);}(_0x653b,0x15f));var _0xb653=function(_0x503e4e,_0x5e9fba){_0x503e4e=_0x503e4e-0x0;var _0x30e5fd=_0x653b[_0x503e4e];return _0x30e5fd;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0xb653('0x0'));var _=require(_0xb653('0x1'));var config=require(_0xb653('0x2'));var logger=require('../../config/logger')(_0xb653('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0xb653('0x4')][_0xb653('0x5')],'algorithm':_0xb653('0x6')};const fileOptions={'algorithm':_0xb653('0x7')};if(config[_0xb653('0x8')]&&config[_0xb653('0x8')][_0xb653('0x9')]){var isSupported=isAlgorithmSupported(config[_0xb653('0x8')]['algorithm']);if(isSupported){fileOptions[_0xb653('0x9')]=config[_0xb653('0x8')][_0xb653('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger['error'](config['encrypt']['algorithm'],_0xb653('0xa'),supportedAlgorithms);}}function isASupportedCipher(_0x4e0bd6){return AES_SUPPORTED_RX['test'](_0x4e0bd6);}function getSupportedCiphers(){return crypto[_0xb653('0xb')]()['filter'](isASupportedCipher);}function isAlgorithmSupported(_0x1f94ba){return getSupportedCiphers()['indexOf'](_0x1f94ba)>-0x1;}function combineOptions(_0x3951a7){var _0x1589d0={};for(var _0x3e833e in fileOptions){if(fileOptions[_0xb653('0xc')](_0x3e833e)){_0x1589d0[_0x3e833e]=fileOptions[_0x3e833e];}}if(_0x3951a7){for(var _0x2a3a66 in _0x3951a7){if(_0x3951a7[_0xb653('0xc')](_0x2a3a66)){_0x1589d0[_0x2a3a66]=_0x3951a7[_0x2a3a66];}}}return _0x1589d0;}exports['encryptFile']=function(_0x54c31b,_0x52a969,_0x284e64,_0x4ce84b){return new BPromise(function(_0x2e9608,_0x3e7e33){_0x4ce84b=combineOptions(_0x4ce84b);var _0x52bd99=new Buffer(_0x284e64);var _0x3dab24=fs['createReadStream'](_0x54c31b);var _0x55e289=fs[_0xb653('0xd')](_0x52a969);var _0x523437=crypto[_0xb653('0xe')](_0x4ce84b[_0xb653('0x9')],_0x52bd99);_0x3dab24['on'](_0xb653('0xf'),function(_0x15cd7a){var _0x46c52e=new Buffer(_0x523437[_0xb653('0x10')](_0x15cd7a),_0xb653('0x11'));_0x55e289[_0xb653('0x12')](_0x46c52e);});_0x3dab24['on'](_0xb653('0x13'),function(){try{var _0x4ea069=new Buffer(_0x523437[_0xb653('0x14')](_0xb653('0x11')),_0xb653('0x11'));_0x55e289['write'](_0x4ea069);_0x55e289['end']();_0x55e289['on'](_0xb653('0x15'),function(){return _0x2e9608(_0x52a969);});}catch(_0x9651a){fs['unlink'](_0x52a969);return _0x3e7e33(_0x9651a);}});});};exports[_0xb653('0x16')]=function(_0x33e393,_0x2eee39,_0x2642e0,_0x491fc1){return new BPromise(function(_0x4ffbce,_0x1586b4){_0x491fc1=combineOptions(_0x491fc1);var _0x360e81=new Buffer(_0x2642e0);var _0x249542=fs[_0xb653('0x17')](_0x33e393);var _0x5ca03a=fs['createWriteStream'](_0x2eee39);var _0xbdc0c5=crypto[_0xb653('0x18')](_0x491fc1[_0xb653('0x9')],_0x360e81);_0x249542['on']('data',function(_0x1bc795){var _0x14691b=new Buffer(_0xbdc0c5['update'](_0x1bc795),'binary');_0x5ca03a[_0xb653('0x12')](_0x14691b);});_0x249542['on']('end',function(){try{var _0x2ae15a=new Buffer(_0xbdc0c5[_0xb653('0x14')](_0xb653('0x11')),_0xb653('0x11'));_0x5ca03a[_0xb653('0x12')](_0x2ae15a);_0x5ca03a[_0xb653('0x13')]();_0x5ca03a['on'](_0xb653('0x15'),function(){return _0x4ffbce(_0x2eee39);});}catch(_0x4602af){fs[_0xb653('0x19')](_0x2eee39);return _0x1586b4(_0x4602af);}});});};exports[_0xb653('0x1a')]=function(_0x198cc4,_0x1336fb,_0x35eb09){var _0x4ceefe=_0x35eb09||stringOptions[_0xb653('0x9')];var _0x3109d1=_0x1336fb||stringOptions[_0xb653('0x1b')];var _0x2f1b12=crypto['createCipher'](_0x4ceefe,_0x3109d1);var _0x484704=_0x2f1b12[_0xb653('0x10')](_0x198cc4,_0xb653('0x1c'),_0xb653('0x1d'));_0x484704+=_0x2f1b12['final'](_0xb653('0x1d'));return _0x484704;};exports[_0xb653('0x1e')]=function(_0x14f7b5,_0x1ed02d,_0x483e62){var _0x441618=_0x483e62||stringOptions[_0xb653('0x9')];var _0x5308f5=_0x1ed02d||stringOptions['secret'];var _0x430abd=crypto[_0xb653('0x18')](_0x441618,_0x5308f5);var _0x54cca0=_0x430abd[_0xb653('0x10')](_0x14f7b5,_0xb653('0x1d'),_0xb653('0x1c'));_0x54cca0+=_0x430abd[_0xb653('0x14')](_0xb653('0x1c'));return _0x54cca0;};
\ No newline at end of file
+var _0x8c2b=['utf8','base64','createDecipher','crypto','bluebird','lodash','../../config/environment','app','session','aes-256-ctr','aes192','encrypt','algorithm','join','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createReadStream','createWriteStream','data','update','write','end','final','binary','close','decryptFile','unlink','secret','createCipher'];(function(_0x2fe647,_0x4478c5){var _0x3a59f8=function(_0x147073){while(--_0x147073){_0x2fe647['push'](_0x2fe647['shift']());}};_0x3a59f8(++_0x4478c5);}(_0x8c2b,0x12c));var _0xb8c2=function(_0x2e2c76,_0x377881){_0x2e2c76=_0x2e2c76-0x0;var _0x33481c=_0x8c2b[_0x2e2c76];return _0x33481c;};'use strict';var crypto=require(_0xb8c2('0x0'));var fs=require('fs');var BPromise=require(_0xb8c2('0x1'));var _=require(_0xb8c2('0x2'));var config=require(_0xb8c2('0x3'));var logger=require('../../config/logger')(_0xb8c2('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0xb8c2('0x5')],'algorithm':_0xb8c2('0x6')};const fileOptions={'algorithm':_0xb8c2('0x7')};if(config[_0xb8c2('0x8')]&&config[_0xb8c2('0x8')][_0xb8c2('0x9')]){var isSupported=isAlgorithmSupported(config[_0xb8c2('0x8')][_0xb8c2('0x9')]);if(isSupported){fileOptions[_0xb8c2('0x9')]=config[_0xb8c2('0x8')][_0xb8c2('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xb8c2('0xa')](',\x20');logger['error'](config[_0xb8c2('0x8')][_0xb8c2('0x9')],'is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:',supportedAlgorithms);}}function isASupportedCipher(_0x335e79){return AES_SUPPORTED_RX[_0xb8c2('0xb')](_0x335e79);}function getSupportedCiphers(){return crypto[_0xb8c2('0xc')]()[_0xb8c2('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0xce188){return getSupportedCiphers()[_0xb8c2('0xe')](_0xce188)>-0x1;}function combineOptions(_0x39fd3d){var _0x4101f3={};for(var _0x378432 in fileOptions){if(fileOptions[_0xb8c2('0xf')](_0x378432)){_0x4101f3[_0x378432]=fileOptions[_0x378432];}}if(_0x39fd3d){for(var _0x24bde2 in _0x39fd3d){if(_0x39fd3d['hasOwnProperty'](_0x24bde2)){_0x4101f3[_0x24bde2]=_0x39fd3d[_0x24bde2];}}}return _0x4101f3;}exports[_0xb8c2('0x10')]=function(_0x2ccfd,_0x4ca989,_0x15efda,_0x12e193){return new BPromise(function(_0x36962d,_0x5a5b0b){_0x12e193=combineOptions(_0x12e193);var _0x46b9c1=new Buffer(_0x15efda);var _0x4e46d0=fs[_0xb8c2('0x11')](_0x2ccfd);var _0x53f571=fs[_0xb8c2('0x12')](_0x4ca989);var _0x32c317=crypto['createCipher'](_0x12e193[_0xb8c2('0x9')],_0x46b9c1);_0x4e46d0['on'](_0xb8c2('0x13'),function(_0x4d94de){var _0x10e660=new Buffer(_0x32c317[_0xb8c2('0x14')](_0x4d94de),'binary');_0x53f571[_0xb8c2('0x15')](_0x10e660);});_0x4e46d0['on'](_0xb8c2('0x16'),function(){try{var _0x5a07ec=new Buffer(_0x32c317[_0xb8c2('0x17')](_0xb8c2('0x18')),_0xb8c2('0x18'));_0x53f571[_0xb8c2('0x15')](_0x5a07ec);_0x53f571[_0xb8c2('0x16')]();_0x53f571['on'](_0xb8c2('0x19'),function(){return _0x36962d(_0x4ca989);});}catch(_0x1fa254){fs['unlink'](_0x4ca989);return _0x5a5b0b(_0x1fa254);}});});};exports[_0xb8c2('0x1a')]=function(_0x580034,_0x4e56d9,_0x3f5e91,_0xde68e2){return new BPromise(function(_0x3d6f7d,_0x53ec0c){_0xde68e2=combineOptions(_0xde68e2);var _0x1489cb=new Buffer(_0x3f5e91);var _0x1080c6=fs[_0xb8c2('0x11')](_0x580034);var _0x258b24=fs[_0xb8c2('0x12')](_0x4e56d9);var _0x3933ed=crypto['createDecipher'](_0xde68e2['algorithm'],_0x1489cb);_0x1080c6['on'](_0xb8c2('0x13'),function(_0x461d19){var _0x5e678e=new Buffer(_0x3933ed[_0xb8c2('0x14')](_0x461d19),_0xb8c2('0x18'));_0x258b24['write'](_0x5e678e);});_0x1080c6['on'](_0xb8c2('0x16'),function(){try{var _0x53c63=new Buffer(_0x3933ed[_0xb8c2('0x17')](_0xb8c2('0x18')),_0xb8c2('0x18'));_0x258b24[_0xb8c2('0x15')](_0x53c63);_0x258b24[_0xb8c2('0x16')]();_0x258b24['on'](_0xb8c2('0x19'),function(){return _0x3d6f7d(_0x4e56d9);});}catch(_0x27311c){fs[_0xb8c2('0x1b')](_0x4e56d9);return _0x53ec0c(_0x27311c);}});});};exports['encryptString']=function(_0x53523d,_0xd91b7b,_0x218ef0){var _0x43fae4=_0x218ef0||stringOptions['algorithm'];var _0x18368a=_0xd91b7b||stringOptions[_0xb8c2('0x1c')];var _0x2f735b=crypto[_0xb8c2('0x1d')](_0x43fae4,_0x18368a);var _0x4e9b69=_0x2f735b[_0xb8c2('0x14')](_0x53523d,_0xb8c2('0x1e'),_0xb8c2('0x1f'));_0x4e9b69+=_0x2f735b[_0xb8c2('0x17')](_0xb8c2('0x1f'));return _0x4e9b69;};exports['decryptString']=function(_0x49ad85,_0x411ade,_0x1721d9){var _0x130b52=_0x1721d9||stringOptions[_0xb8c2('0x9')];var _0x565da9=_0x411ade||stringOptions[_0xb8c2('0x1c')];var _0x2e5d62=crypto[_0xb8c2('0x20')](_0x130b52,_0x565da9);var _0x51c933=_0x2e5d62['update'](_0x49ad85,_0xb8c2('0x1f'),_0xb8c2('0x1e'));_0x51c933+=_0x2e5d62[_0xb8c2('0x17')](_0xb8c2('0x1e'));return _0x51c933;};
\ No newline at end of file
index eba5993..cd323bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01c1=['%s.%s','csv','writeFileSync','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','CSV','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','exit','util','lodash','to-csv','bluebird','../../mysqldb','dbH','../../config/logger','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','find','split','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','length','range','isInteger','push','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','existsSync','join','mkdirSync','each','%s%d.%s'];(function(_0x8041e2,_0x5270c2){var _0x1b1296=function(_0x319489){while(--_0x319489){_0x8041e2['push'](_0x8041e2['shift']());}};_0x1b1296(++_0x5270c2);}(_0x01c1,0x154));var _0x101c=function(_0xd9dbcb,_0xa70945){_0xd9dbcb=_0xd9dbcb-0x0;var _0x26c872=_0x01c1[_0xd9dbcb];return _0x26c872;};'use strict';var util=require(_0x101c('0x0'));var path=require('path');var _=require(_0x101c('0x1'));var csv=require(_0x101c('0x2'));var fs=require('fs');var BPromise=require(_0x101c('0x3'));var zipdir=require('zip-dir');var rimraf=require('rimraf');var db=require(_0x101c('0x4'))['db'];var dbH=require(_0x101c('0x4'))[_0x101c('0x5')];var logger=require(_0x101c('0x6'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x101c('0x7')][0x2]);var QUERY=process[_0x101c('0x7')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x5655fc,_0x4eb0b3){var _0x60b0ef={'status':_0x5655fc};var _0x5b47fe={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4eb0b3){_0x60b0ef[_0x101c('0x8')]=_0x4eb0b3;}return db[_0x101c('0x9')][_0x101c('0xa')](_0x60b0ef,_0x5b47fe);}function main(){var _0x33ebdf=0x1388;var _0x427043;logger[_0x101c('0xb')](util[_0x101c('0xc')](_0x101c('0xd'),EXTRACTED_REPORT_ID,'CSV'));return db['Setting'][_0x101c('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x101c('0xf'),_0x101c('0x10')]})[_0x101c('0x11')](function(_0x15a840){if(_0x15a840){_0x427043=_0x15a840;_0x33ebdf=_0x427043[_0x101c('0x10')]||0x1388;}})[_0x101c('0x11')](function(){return dbH[_0x101c('0x12')][_0x101c('0x13')](util[_0x101c('0xc')](_0x101c('0x14'),QUERY),{'type':dbH['sequelize'][_0x101c('0x15')][_0x101c('0x16')]});})[_0x101c('0x11')](function(_0x4fa2aa){if(!_0x4fa2aa[0x0][_0x101c('0x17')]){return analyticExtractedReport(_0x101c('0x18'));}var _0x4951ff=[];var _0x29161a=0x0;if(_0x427043[_0x101c('0xf')]){if(_0x4fa2aa&&_0x4fa2aa[_0x101c('0x19')]){var _0x560b38=_[_0x101c('0x1a')](_0x4fa2aa[0x0]['num']/_0x33ebdf);var _0x25e7df=Number[_0x101c('0x1b')](_0x4fa2aa[0x0][_0x101c('0x17')]/_0x33ebdf)?_0x4fa2aa[0x0][_0x101c('0x17')]%_0x33ebdf:0x0;_0x560b38['forEach'](function(_0x367bc2){if(_0x367bc2>0x0){_0x29161a+=_0x33ebdf;}_0x4951ff[_0x101c('0x1c')](dbH[_0x101c('0x12')][_0x101c('0x13')](util[_0x101c('0xc')](_0x101c('0x1d'),QUERY,_0x33ebdf,_0x29161a),{'type':dbH[_0x101c('0x12')][_0x101c('0x15')][_0x101c('0x16')]}));});if(_0x25e7df>0x0){_0x29161a+=_0x33ebdf;_0x4951ff['push'](dbH[_0x101c('0x12')][_0x101c('0x13')](util[_0x101c('0xc')](_0x101c('0x1d'),QUERY,_0x25e7df,_0x29161a),{'type':dbH[_0x101c('0x12')][_0x101c('0x15')][_0x101c('0x16')]}));}}}else{_0x4951ff[_0x101c('0x1c')](dbH['sequelize'][_0x101c('0x13')](QUERY,{'type':dbH[_0x101c('0x12')][_0x101c('0x15')][_0x101c('0x16')]}));}var _0x3326e7=path['dirname'](PATH);var _0x2e8771=path[_0x101c('0x1e')](PATH,'.csv');var _0x3ab00d=_0x427043[_0x101c('0xf')]&&_0x4951ff[_0x101c('0x19')]>0x1;var _0x18ca6c=[];if(!fs[_0x101c('0x1f')](path[_0x101c('0x20')](_0x3326e7,_0x2e8771))&&_0x3ab00d){fs[_0x101c('0x21')](path['join'](_0x3326e7,_0x2e8771));}return BPromise[_0x101c('0x22')](_0x4951ff,function(_0xf5f959){_0x18ca6c['push'](_0xf5f959);})[_0x101c('0x11')](function(){for(var _0x2489bd=0x0;_0x2489bd<_0x18ca6c['length'];_0x2489bd+=0x1){var _0x2ae798;var _0x2d6fe9=_0x18ca6c[_0x2489bd];if(_0x3ab00d){_0x2ae798=path[_0x101c('0x20')](_0x3326e7,_0x2e8771,util['format'](_0x101c('0x23'),_0x2e8771,_0x2489bd,'csv'));}else{_0x2ae798=path['join'](_0x3326e7,util[_0x101c('0xc')](_0x101c('0x24'),_0x2e8771,_0x101c('0x25')));}fs[_0x101c('0x26')](_0x2ae798,csv(_0x2d6fe9));}})[_0x101c('0x11')](function(){if(_0x3ab00d){return new Promise(function(_0x3f86d2){zipdir(path[_0x101c('0x20')](_0x3326e7,_0x2e8771),{'saveTo':path[_0x101c('0x20')](_0x3326e7,util[_0x101c('0xc')](_0x101c('0x24'),_0x2e8771,'zip'))},function(_0x3d9616,_0xf02cc2){rimraf(path[_0x101c('0x20')](_0x3326e7,_0x2e8771),function(){});_0x3f86d2('zip\x20finished');});});}})[_0x101c('0x11')](function(){logger['info'](util[_0x101c('0xc')](_0x101c('0x27'),EXTRACTED_REPORT_ID,_0x101c('0x28')));return analyticExtractedReport(_0x101c('0x29'),_0x3ab00d?util[_0x101c('0xc')](_0x101c('0x24'),_0x2e8771,_0x3ab00d?'zip':_0x101c('0x25')):null);});})[_0x101c('0x2a')](function(_0x59ee6f){logger['info'](util['format'](_0x101c('0x2b'),EXTRACTED_REPORT_ID,_0x101c('0x28')),util[_0x101c('0x2c')](_0x59ee6f,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x101c('0x2d')](function(){process[_0x101c('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x97c1=['CSV','Setting','find','split','then','splitSizeCsv','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','SELECT','num','Empty','length','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','basename','.csv','existsSync','join','mkdirSync','each','%s%d.%s','csv','%s.%s','writeFileSync','Completed','zip','catch','inspect','Failed','finally','exit','util','path','to-csv','rimraf','../../mysqldb','dbH','../../config/logger','argv','savename','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format'];(function(_0x4b6804,_0x301b24){var _0x11b4f1=function(_0x31e66c){while(--_0x31e66c){_0x4b6804['push'](_0x4b6804['shift']());}};_0x11b4f1(++_0x301b24);}(_0x97c1,0xdf));var _0x197c=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x97c1[_0x57b54c];return _0x59cc19;};'use strict';var util=require(_0x197c('0x0'));var path=require(_0x197c('0x1'));var _=require('lodash');var csv=require(_0x197c('0x2'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require(_0x197c('0x3'));var db=require(_0x197c('0x4'))['db'];var dbH=require(_0x197c('0x4'))[_0x197c('0x5')];var logger=require(_0x197c('0x6'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x197c('0x7')][0x3];var PATH=process[_0x197c('0x7')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x60fab2,_0xfcee35){var _0x5cf5cb={'status':_0x60fab2};var _0x5d42c5={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xfcee35){_0x5cf5cb[_0x197c('0x8')]=_0xfcee35;}return db['AnalyticExtractedReport'][_0x197c('0x9')](_0x5cf5cb,_0x5d42c5);}function main(){var _0x3e83e6=0x1388;var _0x853d68;logger[_0x197c('0xa')](util['format'](_0x197c('0xb'),EXTRACTED_REPORT_ID,_0x197c('0xc')));return db[_0x197c('0xd')][_0x197c('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x197c('0xf'),'splitSizeCsv']})[_0x197c('0x10')](function(_0x668f8){if(_0x668f8){_0x853d68=_0x668f8;_0x3e83e6=_0x853d68[_0x197c('0x11')]||0x1388;}})[_0x197c('0x10')](function(){return dbH['sequelize'][_0x197c('0x12')](util[_0x197c('0x13')](_0x197c('0x14'),QUERY),{'type':dbH[_0x197c('0x15')][_0x197c('0x16')][_0x197c('0x17')]});})['then'](function(_0x5194c3){if(!_0x5194c3[0x0][_0x197c('0x18')]){return analyticExtractedReport(_0x197c('0x19'));}var _0x2083d4=[];var _0x24901f=0x0;var _0x33f8d3=!![];if(_0x5194c3&&_0x5194c3[_0x197c('0x1a')]){var _0x437050=_0x5194c3[0x0][_0x197c('0x18')]%(_0x24901f+_0x3e83e6);if(_0x853d68['split']){for(;_0x33f8d3;_0x24901f+=_0x3e83e6,_0x437050=_0x5194c3[0x0][_0x197c('0x18')]%(_0x24901f+_0x3e83e6)){if(_0x437050==0x0||_0x437050==_0x5194c3[0x0]['num']){_0x33f8d3=![];}_0x2083d4['push'](dbH[_0x197c('0x15')][_0x197c('0x12')](util[_0x197c('0x13')](_0x197c('0x1b'),QUERY,_0x3e83e6,_0x24901f),{'type':dbH['sequelize'][_0x197c('0x16')][_0x197c('0x17')]}));}}else{_0x2083d4[_0x197c('0x1c')](dbH['sequelize'][_0x197c('0x12')](QUERY,{'type':dbH[_0x197c('0x15')][_0x197c('0x16')][_0x197c('0x17')]}));}}var _0x46801c=path[_0x197c('0x1d')](PATH);var _0x362bbf=path[_0x197c('0x1e')](PATH,_0x197c('0x1f'));var _0x3dfb7b=_0x853d68[_0x197c('0xf')]&&_0x2083d4[_0x197c('0x1a')]>0x1;var _0x174942=[];if(!fs[_0x197c('0x20')](path[_0x197c('0x21')](_0x46801c,_0x362bbf))&&_0x3dfb7b){fs[_0x197c('0x22')](path['join'](_0x46801c,_0x362bbf));}return BPromise[_0x197c('0x23')](_0x2083d4,function(_0x2911dd){_0x174942[_0x197c('0x1c')](_0x2911dd);})['then'](function(){for(var _0x2c2952=0x0;_0x2c2952<_0x174942[_0x197c('0x1a')];_0x2c2952+=0x1){var _0x4c3337;var _0x5e7bc9=_0x174942[_0x2c2952];if(_0x3dfb7b){_0x4c3337=path[_0x197c('0x21')](_0x46801c,_0x362bbf,util['format'](_0x197c('0x24'),_0x362bbf,_0x2c2952,_0x197c('0x25')));}else{_0x4c3337=path[_0x197c('0x21')](_0x46801c,util[_0x197c('0x13')](_0x197c('0x26'),_0x362bbf,_0x197c('0x25')));}fs[_0x197c('0x27')](_0x4c3337,csv(_0x5e7bc9));}})[_0x197c('0x10')](function(){if(_0x3dfb7b){zipdir(path[_0x197c('0x21')](_0x46801c,_0x362bbf),{'saveTo':path['join'](_0x46801c,util['format']('%s.%s',_0x362bbf,'zip'))},function(_0x5f7425,_0x4c9256){});rimraf(path[_0x197c('0x21')](_0x46801c,_0x362bbf),function(){});}})[_0x197c('0x10')](function(){logger['info'](util[_0x197c('0x13')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x197c('0xc')));return analyticExtractedReport(_0x197c('0x28'),_0x3dfb7b?util[_0x197c('0x13')](_0x197c('0x26'),_0x362bbf,_0x3dfb7b?_0x197c('0x29'):_0x197c('0x25')):null);});})[_0x197c('0x2a')](function(_0x41d792){logger[_0x197c('0xa')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x197c('0xc')),util[_0x197c('0x2b')](_0x41d792,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x197c('0x2c'));})[_0x197c('0x2d')](function(){process[_0x197c('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
index 58f49fe..7b0745c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4de2=['savename','AnalyticExtractedReport','update','map','pick','toString','value','fill','length','auto','body','chunk','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','endDate','push','pageBreak','margin','footer','Arial','black','right','num','Empty','Setting','find','split','splitSizePdf','then','range','isInteger','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','dirname','basename','.pdf','existsSync','mkdirSync','join','each','flatten','createPdfKitDocument','%s%d.%s','pdf','all','%s.%s','zip','zip\x20finished','PDF','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','query','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','exit','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','YYYY-MM-DD','center','header','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','finish','error','createPdfFromHTML','path','lodash','moment','html-to-pdfmake','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a'];(function(_0x255d42,_0x3040ad){var _0x54df07=function(_0x458956){while(--_0x458956){_0x255d42['push'](_0x255d42['shift']());}};_0x54df07(++_0x3040ad);}(_0x4de2,0x1ab));var _0x24de=function(_0x2287c3,_0x2b34e2){_0x2287c3=_0x2287c3-0x0;var _0x448916=_0x4de2[_0x2287c3];return _0x448916;};'use strict';var _=require(_0x24de('0x0'));var fs=require('fs');var util=require('util');var path=require('path');var moment=require(_0x24de('0x1'));var htmlToPdfmake=require(_0x24de('0x2'));var PdfPrinter=require('pdfmake/src/printer');var zipdir=require('zip-dir');var rimraf=require(_0x24de('0x3'));var JSDOM=require(_0x24de('0x4'))[_0x24de('0x5')];var window=new JSDOM('')[_0x24de('0x6')];var BPromise=require(_0x24de('0x7'));var db=require(_0x24de('0x8'))['db'];var dbH=require(_0x24de('0x8'))[_0x24de('0x9')];var logger=require('../../config/logger')(_0x24de('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0x24de('0xb')][0x2]);var QUERY=process[_0x24de('0xb')][0x3];var PATH=process[_0x24de('0xb')][0x4];var NAME=process[_0x24de('0xb')][0x5];var FORMAT=_0x24de('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x192ee4,_0x479015){var _0x3df483={'status':_0x192ee4};var _0x4a37f4={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x479015){_0x3df483[_0x24de('0xd')]=_0x479015;}return db[_0x24de('0xe')][_0x24de('0xf')](_0x3df483,_0x4a37f4);}function getHeaders(_0x4eab15){return _[_0x24de('0x10')](_0x4eab15,function(_0x1eb5d6){return{'text':_0x1eb5d6,'style':'tableHeader'};});}function getRows(_0x4ea338,_0x30b232){return _['map'](_0x30b232,function(_0x22eecb){return _(_0x22eecb)[_0x24de('0x11')](_0x4ea338)['map'](function(_0x1b880f){return _0x1b880f?_[_0x24de('0x12')](_0x1b880f):'';})[_0x24de('0x13')]();});}function createTable(_0x2ab6f0,_0x136be7){var _0x359f05={'widths':_[_0x24de('0x14')](Array(_0x2ab6f0[_0x24de('0x15')]),0x91),'heights':function(_0xc736e7){return _0xc736e7===0x0?_0x24de('0x16'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x342c2e=getHeaders(_0x2ab6f0);_0x359f05['body']['push'](_0x342c2e);var _0x1b16d6=getRows(_0x2ab6f0,_0x136be7);_0x359f05['body']=_0x359f05[_0x24de('0x17')]['concat'](_0x1b16d6);return _0x359f05;}function createTables(_0x265537){var _0x22d58a=[];var _0xe86c2c=_[_0x24de('0x18')](Object['keys'](_0x265537[0x0]),0x5);_0xe86c2c[_0x24de('0x19')](function(_0x3b6649){_0x22d58a['push'](createTable(_0x3b6649,_0x265537));});return _0x22d58a;}function getPDFDocDefinition(_0x917357){var _0x173439=util[_0x24de('0x1a')](_0x24de('0x1b'),NAME,EXTRACTED_REPORT[_0x24de('0x1c')],moment(EXTRACTED_REPORT['startDate'])['format'](FORMAT),moment(EXTRACTED_REPORT[_0x24de('0x1d')])[_0x24de('0x1a')](FORMAT));var _0x5945a9=[];for(var _0x36682c=0x0;_0x36682c<_0x917357['length'];_0x36682c++){var _0x71ae6a=[];if(_0x36682c===0x0){_0x71ae6a[_0x24de('0x1e')]({'text':_0x173439,'style':'header'});}var _0x155686={'table':_0x917357[_0x36682c]};if(_0x36682c>0x0){_0x155686[_0x24de('0x1f')]='before';_0x155686[_0x24de('0x20')]=[0x0,0x46,0x0,0x0];}_0x71ae6a[_0x24de('0x1e')](_0x155686);_0x5945a9[_0x24de('0x1e')](_0x71ae6a);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x5945a9,'footer':function(_0x275fee,_0x1a5ef8){return{'text':_0x275fee[_0x24de('0x12')]()+'\x20/\x20'+_0x1a5ef8,'style':_0x24de('0x21')};},'defaultStyle':{'font':_0x24de('0x22')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x24de('0x23')},'footer':{'alignment':_0x24de('0x24'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x367378){var _0x30e91e=0x1388;var _0x5bd0d6;if(!_0x367378[0x0][_0x24de('0x25')]){return analyticExtractedReport(_0x24de('0x26'));}return db[_0x24de('0x27')][_0x24de('0x28')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x24de('0x29'),_0x24de('0x2a')]})['then'](function(_0x452193){if(_0x452193){_0x5bd0d6=_0x452193;_0x30e91e=_0x5bd0d6[_0x24de('0x2a')]||0x3e8;}})[_0x24de('0x2b')](function(){var _0x990c47=[];var _0x407f4d=0x0;if(_0x5bd0d6[_0x24de('0x29')]){if(_0x367378&&_0x367378[_0x24de('0x15')]){var _0x211290=_[_0x24de('0x2c')](_0x367378[0x0][_0x24de('0x25')]/_0x30e91e);var _0x25fe83=Number[_0x24de('0x2d')](_0x367378[0x0]['num']/_0x30e91e)?_0x367378[0x0][_0x24de('0x25')]%_0x30e91e:0x0;_0x211290[_0x24de('0x19')](function(_0x408bee){if(_0x408bee>0x0){_0x407f4d+=_0x30e91e;}_0x990c47[_0x24de('0x1e')](dbH[_0x24de('0x2e')]['query'](util[_0x24de('0x1a')](_0x24de('0x2f'),QUERY,_0x30e91e,_0x407f4d),{'type':dbH[_0x24de('0x2e')][_0x24de('0x30')][_0x24de('0x31')]}));});if(_0x25fe83>0x0){_0x407f4d+=_0x30e91e;_0x990c47['push'](dbH[_0x24de('0x2e')]['query'](util[_0x24de('0x1a')](_0x24de('0x2f'),QUERY,_0x25fe83,_0x407f4d),{'type':dbH[_0x24de('0x2e')][_0x24de('0x30')][_0x24de('0x31')]}));}}}else{_0x990c47[_0x24de('0x1e')](dbH[_0x24de('0x2e')]['query'](QUERY,{'type':dbH['sequelize'][_0x24de('0x30')][_0x24de('0x31')]}));}var _0x188057=path[_0x24de('0x32')](PATH);var _0x2c549a=path[_0x24de('0x33')](PATH,_0x24de('0x34'));var _0x23dd7b=_0x5bd0d6[_0x24de('0x29')]&&_0x990c47[_0x24de('0x15')]>0x1;var _0x5aafb2=[];if(!fs[_0x24de('0x35')](path['join'](_0x188057,_0x2c549a))&&_0x23dd7b){fs[_0x24de('0x36')](path[_0x24de('0x37')](_0x188057,_0x2c549a));}return BPromise[_0x24de('0x38')](_0x990c47,function(_0x20a97c){_0x5aafb2[_0x24de('0x1e')](_0x20a97c);})[_0x24de('0x2b')](function(){var _0x1e6799=[];for(var _0x50b90a=0x0;_0x50b90a<_0x5aafb2[_0x24de('0x15')];_0x50b90a+=0x1){var _0x2bf96d=_0x5aafb2[_0x50b90a];var _0x3feeeb=createTables(_[_0x24de('0x39')](_0x2bf96d));var _0x2a88a2;var _0x1f9975=getPDFDocDefinition(_0x3feeeb);var _0x313b3=getPDFPrinter();var _0x294cc4=_0x313b3[_0x24de('0x3a')](_0x1f9975);if(_0x23dd7b){_0x2a88a2=path['join'](_0x188057,_0x2c549a,util[_0x24de('0x1a')](_0x24de('0x3b'),_0x2c549a,_0x50b90a,_0x24de('0x3c')));}else{_0x2a88a2=path[_0x24de('0x37')](_0x188057,util[_0x24de('0x1a')]('%s.%s',_0x2c549a,_0x24de('0x3c')));}_0x1e6799['push'](writePDFDocument(_0x294cc4,_0x2a88a2));}return Promise[_0x24de('0x3d')](_0x1e6799);})[_0x24de('0x2b')](function(){if(_0x23dd7b){return new Promise(function(_0x4201e9){zipdir(path['join'](_0x188057,_0x2c549a),{'saveTo':path['join'](_0x188057,util[_0x24de('0x1a')](_0x24de('0x3e'),_0x2c549a,_0x24de('0x3f')))},function(){rimraf(path[_0x24de('0x37')](_0x188057,_0x2c549a),function(){});_0x4201e9(_0x24de('0x40'));});});}})['then'](function(){if(!_0x23dd7b)return;rimraf(path[_0x24de('0x37')](_0x188057,_0x2c549a),function(){});})['then'](function(){logger['info'](util[_0x24de('0x1a')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x24de('0x41')));return analyticExtractedReport('Completed',_0x23dd7b?util[_0x24de('0x1a')](_0x24de('0x3e'),_0x2c549a,_0x23dd7b?'zip':'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x24de('0x42')](util[_0x24de('0x1a')](_0x24de('0x43'),EXTRACTED_REPORT_ID,_0x24de('0x41')));return db[_0x24de('0xe')][_0x24de('0x44')]({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x4dd1f5){EXTRACTED_REPORT=_0x4dd1f5;return dbH['sequelize'][_0x24de('0x45')](util[_0x24de('0x1a')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x24de('0x2e')][_0x24de('0x30')]['SELECT']});})['then'](extractReport)[_0x24de('0x46')](function(_0x3922f5){logger[_0x24de('0x42')](util[_0x24de('0x1a')](_0x24de('0x47'),EXTRACTED_REPORT_ID,_0x24de('0x41')),util[_0x24de('0x48')](_0x3922f5,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x24de('0x49'));})['finally'](function(){process[_0x24de('0x4a')](EXIT_CODE);});}main();function getPDFPrinter(){var _0xbc97ed=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+_0x24de('0x4b'),'italics':__dirname+_0x24de('0x4c'),'bolditalics':__dirname+_0x24de('0x4d')}});return _0xbc97ed;}function getPDFDocDefinitionFromHTML(_0x521163,_0x4c0365){var _0x3baf2=util[_0x24de('0x1a')](_0x24de('0x4e'),_0x4c0365[_0x24de('0x4f')],_0x4c0365['interactionId']);var _0x339db5=moment()[_0x24de('0x1a')](_0x24de('0x50'))[_0x24de('0x12')]();var _0x4220cc=htmlToPdfmake(_0x521163,{'window':window,'tableAutoSize':!![]});return{'content':[_0x4220cc],'defaultStyle':{'font':_0x24de('0x22')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x24de('0x51'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x24de('0x51'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x24de('0x51')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0x24de('0x52')}];},'footer':function(_0x37bca5,_0x2bda26){return[{'text':util[_0x24de('0x1a')](_0x24de('0x53'),_0x3baf2,_0x37bca5,_0x2bda26,_0x339db5),'style':_0x24de('0x21')}];}};}function writePDFDocument(_0x356549,_0x4a685b){return new Promise(function(_0x7e34bd,_0x3f4b2b){var _0x47c0b2=_0x356549['pipe'](fs['createWriteStream'](_0x4a685b));_0x47c0b2['on'](_0x24de('0x54'),function(){_0x7e34bd(_0x24de('0x54'));});_0x47c0b2['on'](_0x24de('0x55'),function(_0x12b12b){_0x3f4b2b(_0x12b12b);});_0x356549['end']();});}exports[_0x24de('0x56')]=function(_0x18e74f,_0x5cfd40){var _0x3bee8d=getPDFPrinter();var _0x167973=getPDFDocDefinitionFromHTML(_0x18e74f,_0x5cfd40);var _0x394398=_0x3bee8d[_0x24de('0x3a')](_0x167973);return writePDFDocument(_0x394398,_0x5cfd40[_0x24de('0x57')])[_0x24de('0x46')](function(_0x77cc7a){throw _0x77cc7a;});};
\ No newline at end of file
+var _0xc427=['all','flatten','createPdfKitDocument','%s%d.%s','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','AnalyticExtractedReport','findOne','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','%s\x20#%d','YYYY-MM-DD','toString','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','createPdfFromHTML','lodash','path','moment','pdfmake/src/printer','zip-dir','jsdom','JSDOM','window','../../mysqldb','dbH','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','map','tableHeader','pick','fill','length','auto','body','push','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','header','pageBreak','before','margin','landscape','\x20/\x20','footer','Arial','black','num','dirname','basename','.pdf','join','%s.%s','pdf','Setting','find','split','splitSizePdf','then','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','QueryTypes','existsSync'];(function(_0x2fe7ff,_0xfb8494){var _0x10a92a=function(_0xed1049){while(--_0xed1049){_0x2fe7ff['push'](_0x2fe7ff['shift']());}};_0x10a92a(++_0xfb8494);}(_0xc427,0x179));var _0x7c42=function(_0x3c6113,_0x57d3fa){_0x3c6113=_0x3c6113-0x0;var _0x361b22=_0xc427[_0x3c6113];return _0x361b22;};'use strict';var _=require(_0x7c42('0x0'));var fs=require('fs');var util=require('util');var path=require(_0x7c42('0x1'));var moment=require(_0x7c42('0x2'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x7c42('0x3'));var zipdir=require(_0x7c42('0x4'));var rimraf=require('rimraf');var JSDOM=require(_0x7c42('0x5'))[_0x7c42('0x6')];var window=new JSDOM('')[_0x7c42('0x7')];var db=require(_0x7c42('0x8'))['db'];var dbH=require(_0x7c42('0x8'))[_0x7c42('0x9')];var logger=require('../../config/logger')(_0x7c42('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0x7c42('0xb')][0x2]);var QUERY=process[_0x7c42('0xb')][0x3];var PATH=process[_0x7c42('0xb')][0x4];var NAME=process[_0x7c42('0xb')][0x5];var FORMAT=_0x7c42('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x358708,_0xcfcf23){var _0x323e16={'status':_0x358708};var _0x28a7b8={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xcfcf23){_0x323e16[_0x7c42('0xd')]=_0xcfcf23;}return db['AnalyticExtractedReport']['update'](_0x323e16,_0x28a7b8);}function getHeaders(_0x4786a8){return _[_0x7c42('0xe')](_0x4786a8,function(_0x39e005){return{'text':_0x39e005,'style':_0x7c42('0xf')};});}function getRows(_0x5bf200,_0x8d181b){return _[_0x7c42('0xe')](_0x8d181b,function(_0x4f90d1){return _(_0x4f90d1)[_0x7c42('0x10')](_0x5bf200)[_0x7c42('0xe')](function(_0x39570e){return _0x39570e?_['toString'](_0x39570e):'';})['value']();});}function createTable(_0x2588e2,_0x1e65b3){var _0x18f8b6={'widths':_[_0x7c42('0x11')](Array(_0x2588e2[_0x7c42('0x12')]),0x91),'heights':function(_0x3d9cc3){return _0x3d9cc3===0x0?_0x7c42('0x13'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x4f53b9=getHeaders(_0x2588e2);_0x18f8b6[_0x7c42('0x14')][_0x7c42('0x15')](_0x4f53b9);var _0x4a3746=getRows(_0x2588e2,_0x1e65b3);_0x18f8b6[_0x7c42('0x14')]=_0x18f8b6['body'][_0x7c42('0x16')](_0x4a3746);return _0x18f8b6;}function createTables(_0x548c6f){var _0x384dac=[];var _0x38b304=_[_0x7c42('0x17')](Object[_0x7c42('0x18')](_0x548c6f[0x0]),0x5);_0x38b304[_0x7c42('0x19')](function(_0x32d3ac){_0x384dac[_0x7c42('0x15')](createTable(_0x32d3ac,_0x548c6f));});return _0x384dac;}function getPDFDocDefinition(_0x334589){var _0x2b9b2a=util[_0x7c42('0x1a')](_0x7c42('0x1b'),NAME,EXTRACTED_REPORT[_0x7c42('0x1c')],moment(EXTRACTED_REPORT[_0x7c42('0x1d')])[_0x7c42('0x1a')](FORMAT),moment(EXTRACTED_REPORT[_0x7c42('0x1e')])['format'](FORMAT));var _0x342525=[];for(var _0x11b462=0x0;_0x11b462<_0x334589[_0x7c42('0x12')];_0x11b462++){var _0x17a637=[];if(_0x11b462===0x0){_0x17a637[_0x7c42('0x15')]({'text':_0x2b9b2a,'style':_0x7c42('0x1f')});}var _0xda0b01={'table':_0x334589[_0x11b462]};if(_0x11b462>0x0){_0xda0b01[_0x7c42('0x20')]=_0x7c42('0x21');_0xda0b01[_0x7c42('0x22')]=[0x0,0x46,0x0,0x0];}_0x17a637[_0x7c42('0x15')](_0xda0b01);_0x342525[_0x7c42('0x15')](_0x17a637);}return{'pageSize':'A4','pageOrientation':_0x7c42('0x23'),'content':_0x342525,'footer':function(_0x35dc51,_0x592cad){return{'text':_0x35dc51['toString']()+_0x7c42('0x24')+_0x592cad,'style':_0x7c42('0x25')};},'defaultStyle':{'font':_0x7c42('0x26')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x7c42('0x27')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x454e04){var _0x227383=0x1388;var _0x558cd0;if(!_0x454e04[0x0][_0x7c42('0x28')]){return analyticExtractedReport('Empty');}var _0x1535a8=[];var _0x262ecc=0x0;var _0x2fa877=!![];var _0x54b25b=path[_0x7c42('0x29')](PATH);var _0x5bcf83=path[_0x7c42('0x2a')](PATH,_0x7c42('0x2b'));var _0x59f2e3=path[_0x7c42('0x2c')](_0x54b25b,util['format'](_0x7c42('0x2d'),_0x5bcf83,_0x7c42('0x2e')));var _0x3d2874=![];return db[_0x7c42('0x2f')][_0x7c42('0x30')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x7c42('0x31'),_0x7c42('0x32')]})[_0x7c42('0x33')](function(_0x355e48){if(_0x355e48){_0x558cd0=_0x355e48;_0x227383=_0x558cd0[_0x7c42('0x32')]||0x3e8;}})[_0x7c42('0x33')](function(){if(_0x454e04&&_0x454e04[_0x7c42('0x12')]){var _0x38cc40=_0x454e04[0x0]['num']%(_0x262ecc+_0x227383);if(_0x558cd0['split']){for(;_0x2fa877;_0x262ecc+=_0x227383,_0x38cc40=_0x454e04[0x0][_0x7c42('0x28')]%(_0x262ecc+_0x227383)){if(_0x38cc40==0x0||_0x38cc40==_0x454e04[0x0][_0x7c42('0x28')]){_0x2fa877=![];}_0x1535a8[_0x7c42('0x15')](dbH[_0x7c42('0x34')][_0x7c42('0x35')](util['format'](_0x7c42('0x36'),QUERY,_0x227383,_0x262ecc),{'type':dbH['sequelize']['QueryTypes'][_0x7c42('0x37')]}));}}else{_0x1535a8[_0x7c42('0x15')](dbH[_0x7c42('0x34')][_0x7c42('0x35')](QUERY,{'type':dbH[_0x7c42('0x34')][_0x7c42('0x38')]['SELECT']}));}}_0x3d2874=_0x558cd0['split']&&_0x1535a8['length']>0x1;if(!fs[_0x7c42('0x39')](path['join'](_0x54b25b,_0x5bcf83))&&_0x3d2874){fs['mkdirSync'](path[_0x7c42('0x2c')](_0x54b25b,_0x5bcf83));}return Promise[_0x7c42('0x3a')](_0x1535a8);})[_0x7c42('0x33')](function(_0x1c2d4e){return createTables(_[_0x7c42('0x3b')](_0x1c2d4e));})[_0x7c42('0x33')](function(_0x3765e0){var _0x294a9a=getPDFDocDefinition(_0x3765e0);var _0x125ce2=getPDFPrinter();var _0x67ac21=_0x125ce2[_0x7c42('0x3c')](_0x294a9a);if(_0x3d2874)_0x59f2e3=path['join'](_0x54b25b,_0x5bcf83,util[_0x7c42('0x1a')](_0x7c42('0x3d'),_0x5bcf83,index,_0x7c42('0x2e')));return writePDFDocument(_0x67ac21,_0x59f2e3);})[_0x7c42('0x33')](function(){if(!_0x3d2874)return;zipdir(path[_0x7c42('0x2c')](_0x54b25b,_0x5bcf83),{'saveTo':path[_0x7c42('0x2c')](_0x54b25b,util[_0x7c42('0x1a')](_0x7c42('0x2d'),_0x5bcf83,_0x7c42('0x3e')))},function(_0x412a1c){if(_0x412a1c)throw _0x412a1c;return;});})['then'](function(){if(!_0x3d2874)return;rimraf(path[_0x7c42('0x2c')](_0x54b25b,_0x5bcf83),function(){});})[_0x7c42('0x33')](function(){logger['info'](util['format'](_0x7c42('0x3f'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0x7c42('0x40'),_0x3d2874?util['format'](_0x7c42('0x2d'),_0x5bcf83,_0x3d2874?_0x7c42('0x3e'):_0x7c42('0x2e')):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x7c42('0x1a')](_0x7c42('0x41'),EXTRACTED_REPORT_ID,_0x7c42('0x42')));return db[_0x7c42('0x43')][_0x7c42('0x44')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x7c42('0x33')](function(_0x24ac48){EXTRACTED_REPORT=_0x24ac48;return dbH[_0x7c42('0x34')][_0x7c42('0x35')](util[_0x7c42('0x1a')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0x7c42('0x38')][_0x7c42('0x37')]});})[_0x7c42('0x33')](extractReport)[_0x7c42('0x45')](function(_0x23080d){logger['info'](util[_0x7c42('0x1a')](_0x7c42('0x46'),EXTRACTED_REPORT_ID,'PDF'),util['inspect'](_0x23080d,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0x7c42('0x47')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x5f0c3e=new PdfPrinter({'Arial':{'normal':__dirname+_0x7c42('0x48'),'bold':__dirname+_0x7c42('0x49'),'italics':__dirname+_0x7c42('0x4a'),'bolditalics':__dirname+'/fonts/arial-bold-italic.ttf'}});return _0x5f0c3e;}function getPDFDocDefinitionFromHTML(_0x2a5cb7,_0x4d2f8e){var _0x12a5b8=util[_0x7c42('0x1a')](_0x7c42('0x4b'),_0x4d2f8e['channel'],_0x4d2f8e['interactionId']);var _0x56825f=moment()['format'](_0x7c42('0x4c'))[_0x7c42('0x4d')]();var _0x3fbdd8=htmlToPdfmake(_0x2a5cb7,{'window':window,'tableAutoSize':!![]});return{'content':[_0x3fbdd8],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x7c42('0x4e'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x7c42('0x4e'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x7c42('0x4f'),'style':_0x7c42('0x1f')}];},'footer':function(_0x3f3acd,_0x3f8606){return[{'text':util[_0x7c42('0x1a')](_0x7c42('0x50'),_0x12a5b8,_0x3f3acd,_0x3f8606,_0x56825f),'style':'footer'}];}};}function writePDFDocument(_0x144bbf,_0x1e7b4f){return new Promise(function(_0x325645,_0x5d9afe){var _0x7bd278=_0x144bbf[_0x7c42('0x51')](fs[_0x7c42('0x52')](_0x1e7b4f));_0x7bd278['on'](_0x7c42('0x53'),function(){_0x325645(_0x7c42('0x53'));});_0x7bd278['on'](_0x7c42('0x54'),function(_0x29c2cc){_0x5d9afe(_0x29c2cc);});_0x144bbf[_0x7c42('0x55')]();});}exports[_0x7c42('0x56')]=function(_0x15b77d,_0x8ca5aa){var _0x54f49b=getPDFPrinter();var _0xa62954=getPDFDocDefinitionFromHTML(_0x15b77d,_0x8ca5aa);var _0x48e838=_0x54f49b['createPdfKitDocument'](_0xa62954);return writePDFDocument(_0x48e838,_0x8ca5aa[_0x7c42('0x1')])[_0x7c42('0x45')](function(_0x16c15c){throw _0x16c15c;});};
\ No newline at end of file
index 64d27e8..dfffe02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e44=['split','splitSizeXlsx','then','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','num','length','isInteger','push','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','dirname','basename','.xlsx','existsSync','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','writeFileSync','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','XLSX','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','util','path','lodash','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Setting'];(function(_0x25b2ba,_0xbb8274){var _0x2f000c=function(_0x380bae){while(--_0x380bae){_0x25b2ba['push'](_0x25b2ba['shift']());}};_0x2f000c(++_0xbb8274);}(_0x1e44,0xb3));var _0x41e4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1e44[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x41e4('0x0'));var path=require(_0x41e4('0x1'));var _=require(_0x41e4('0x2'));var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0x41e4('0x3'));var zipdir=require(_0x41e4('0x4'));var rimraf=require(_0x41e4('0x5'));var db=require(_0x41e4('0x6'))['db'];var dbH=require('../../mysqldb')[_0x41e4('0x7')];var logger=require(_0x41e4('0x8'))(_0x41e4('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x41e4('0xa')][0x2]);var QUERY=process[_0x41e4('0xa')][0x3];var PATH=process[_0x41e4('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x118c44,_0x2e6949){var _0x47c697={'status':_0x118c44};var _0x11a401={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2e6949){_0x47c697[_0x41e4('0xb')]=_0x2e6949;}return db[_0x41e4('0xc')][_0x41e4('0xd')](_0x47c697,_0x11a401);}function main(){var _0x1afa1c=0x1388;var _0x318431;logger[_0x41e4('0xe')](util[_0x41e4('0xf')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'XLSX'));return db[_0x41e4('0x10')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x41e4('0x11'),_0x41e4('0x12')]})[_0x41e4('0x13')](function(_0x3531ce){if(_0x3531ce){_0x318431=_0x3531ce;_0x1afa1c=_0x318431[_0x41e4('0x12')]||0x1388;}})[_0x41e4('0x13')](function(){return dbH[_0x41e4('0x14')]['query'](util['format'](_0x41e4('0x15'),QUERY),{'type':dbH['sequelize'][_0x41e4('0x16')]['SELECT']});})[_0x41e4('0x13')](function(_0x13d2e8){if(!_0x13d2e8[0x0][_0x41e4('0x17')]){return analyticExtractedReport('Empty');}var _0x41238a=[];var _0x2e9500=0x0;if(_0x318431['split']){if(_0x13d2e8&&_0x13d2e8[_0x41e4('0x18')]){var _0x56d8d1=_['range'](_0x13d2e8[0x0][_0x41e4('0x17')]/_0x1afa1c);var _0x260c63=Number[_0x41e4('0x19')](_0x13d2e8[0x0][_0x41e4('0x17')]/_0x1afa1c)?_0x13d2e8[0x0][_0x41e4('0x17')]%_0x1afa1c:0x0;_0x56d8d1['forEach'](function(_0x5a12f5){if(_0x5a12f5>0x0){_0x2e9500+=_0x1afa1c;}_0x41238a[_0x41e4('0x1a')](dbH[_0x41e4('0x14')][_0x41e4('0x1b')](util[_0x41e4('0xf')](_0x41e4('0x1c'),QUERY,_0x1afa1c,_0x2e9500),{'type':dbH[_0x41e4('0x14')][_0x41e4('0x16')][_0x41e4('0x1d')]}));});if(_0x260c63>0x0){_0x2e9500+=_0x1afa1c;_0x41238a['push'](dbH[_0x41e4('0x14')]['query'](util[_0x41e4('0xf')](_0x41e4('0x1c'),QUERY,_0x260c63,_0x2e9500),{'type':dbH[_0x41e4('0x14')][_0x41e4('0x16')][_0x41e4('0x1d')]}));}}}else{_0x41238a[_0x41e4('0x1a')](dbH['sequelize'][_0x41e4('0x1b')](QUERY,{'type':dbH['sequelize'][_0x41e4('0x16')][_0x41e4('0x1d')]}));}var _0x3d495f=path[_0x41e4('0x1e')](PATH);var _0x18fac9=path[_0x41e4('0x1f')](PATH,_0x41e4('0x20'));var _0xe9bc87=_0x318431[_0x41e4('0x11')]&&_0x41238a[_0x41e4('0x18')]>0x1;var _0x1a8b95=[];if(!fs[_0x41e4('0x21')](path[_0x41e4('0x22')](_0x3d495f,_0x18fac9))&&_0xe9bc87){fs[_0x41e4('0x23')](path[_0x41e4('0x22')](_0x3d495f,_0x18fac9));}return BPromise[_0x41e4('0x24')](_0x41238a,function(_0x91af05){_0x1a8b95[_0x41e4('0x1a')](_0x91af05);})[_0x41e4('0x13')](function(){for(var _0x3599c8=0x0;_0x3599c8<_0x1a8b95[_0x41e4('0x18')];_0x3599c8+=0x1){var _0x16fa1b;var _0x46ba7c=_0x1a8b95[_0x3599c8];if(_0xe9bc87){_0x16fa1b=path[_0x41e4('0x22')](_0x3d495f,_0x18fac9,util['format'](_0x41e4('0x25'),_0x18fac9,_0x3599c8,_0x41e4('0x26')));}else{_0x16fa1b=path[_0x41e4('0x22')](_0x3d495f,util[_0x41e4('0xf')](_0x41e4('0x27'),_0x18fac9,_0x41e4('0x26')));}fs[_0x41e4('0x28')](_0x16fa1b,json2xls(_0x46ba7c),'binary');}})[_0x41e4('0x13')](function(){if(_0xe9bc87){return new Promise(function(_0x31b1b8){zipdir(path[_0x41e4('0x22')](_0x3d495f,_0x18fac9),{'saveTo':path['join'](_0x3d495f,util[_0x41e4('0xf')](_0x41e4('0x27'),_0x18fac9,_0x41e4('0x29')))},function(_0x530fcd,_0x3148f8){rimraf(path[_0x41e4('0x22')](_0x3d495f,_0x18fac9),function(){});_0x31b1b8(_0x41e4('0x2a'));});});}})[_0x41e4('0x13')](function(){logger['info'](util[_0x41e4('0xf')](_0x41e4('0x2b'),EXTRACTED_REPORT_ID,_0x41e4('0x2c')));return analyticExtractedReport(_0x41e4('0x2d'),_0xe9bc87?util[_0x41e4('0xf')]('%s.%s',_0x18fac9,_0xe9bc87?_0x41e4('0x29'):_0x41e4('0x26')):null);});})[_0x41e4('0x2e')](function(_0x1357e4){logger['info'](util[_0x41e4('0xf')](_0x41e4('0x2f'),EXTRACTED_REPORT_ID,_0x41e4('0x2c')),util[_0x41e4('0x30')](_0x1357e4,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x25ca=['existsSync','mkdirSync','each','join','%s%d.%s','xlsx','writeFileSync','%s.%s','Completed','zip','catch','Failed','finally','exit','util','path','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','update','info','format','XLSX','Setting','find','split','splitSizeXlsx','then','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','length','push','query','%s\x20limit\x20%d\x20OFFSET\x20%d','basename'];(function(_0x197043,_0x3ebf47){var _0x233e33=function(_0x17bd0f){while(--_0x17bd0f){_0x197043['push'](_0x197043['shift']());}};_0x233e33(++_0x3ebf47);}(_0x25ca,0x68));var _0xa25c=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x25ca[_0x17d9e3];return _0x14192d;};'use strict';var util=require(_0xa25c('0x0'));var path=require(_0xa25c('0x1'));var _=require('lodash');var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0xa25c('0x2'));var zipdir=require(_0xa25c('0x3'));var rimraf=require(_0xa25c('0x4'));var db=require(_0xa25c('0x5'))['db'];var dbH=require('../../mysqldb')[_0xa25c('0x6')];var logger=require(_0xa25c('0x7'))(_0xa25c('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0xa25c('0x9')][0x2]);var QUERY=process[_0xa25c('0x9')][0x3];var PATH=process[_0xa25c('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x5a1ac2,_0x4261d2){var _0x20b873={'status':_0x5a1ac2};var _0x4255bf={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4261d2){_0x20b873[_0xa25c('0xa')]=_0x4261d2;}return db['AnalyticExtractedReport'][_0xa25c('0xb')](_0x20b873,_0x4255bf);}function main(){var _0x59dc06=0x1388;var _0x451c0c;logger[_0xa25c('0xc')](util[_0xa25c('0xd')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xa25c('0xe')));return db[_0xa25c('0xf')][_0xa25c('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xa25c('0x11'),'splitSizeXlsx']})['then'](function(_0x56d617){if(_0x56d617){_0x451c0c=_0x56d617;_0x59dc06=_0x451c0c[_0xa25c('0x12')]||0x1388;}})[_0xa25c('0x13')](function(){return dbH[_0xa25c('0x14')]['query'](util[_0xa25c('0xd')](_0xa25c('0x15'),QUERY),{'type':dbH[_0xa25c('0x14')][_0xa25c('0x16')][_0xa25c('0x17')]});})[_0xa25c('0x13')](function(_0x310e7d){if(!_0x310e7d[0x0][_0xa25c('0x18')]){return analyticExtractedReport(_0xa25c('0x19'));}var _0x185f2f=[];var _0x4e5623=0x0;var _0x4fef07=!![];if(_0x451c0c[_0xa25c('0x11')]){if(_0x310e7d&&_0x310e7d[_0xa25c('0x1a')]){var _0x341877=_0x310e7d[0x0]['num']%(_0x4e5623+_0x59dc06);for(;_0x4fef07;_0x4e5623+=_0x59dc06,_0x341877=_0x310e7d[0x0]['num']%(_0x4e5623+_0x59dc06)){if(_0x341877==0x0||_0x341877==_0x310e7d[0x0][_0xa25c('0x18')]){_0x4fef07=![];}_0x185f2f[_0xa25c('0x1b')](dbH[_0xa25c('0x14')][_0xa25c('0x1c')](util[_0xa25c('0xd')](_0xa25c('0x1d'),QUERY,_0x59dc06,_0x4e5623),{'type':dbH[_0xa25c('0x14')]['QueryTypes']['SELECT']}));}}}else{_0x185f2f[_0xa25c('0x1b')](dbH[_0xa25c('0x14')]['query'](QUERY,{'type':dbH[_0xa25c('0x14')][_0xa25c('0x16')][_0xa25c('0x17')]}));}var _0x4b917d=path['dirname'](PATH);var _0xc7892f=path[_0xa25c('0x1e')](PATH,'.xlsx');var _0x33ac51=_0x451c0c[_0xa25c('0x11')]&&_0x185f2f[_0xa25c('0x1a')]>0x1;var _0xc47b7e=[];if(!fs[_0xa25c('0x1f')](path['join'](_0x4b917d,_0xc7892f))&&_0x33ac51){fs[_0xa25c('0x20')](path['join'](_0x4b917d,_0xc7892f));}return BPromise[_0xa25c('0x21')](_0x185f2f,function(_0x2d94fc){_0xc47b7e[_0xa25c('0x1b')](_0x2d94fc);})[_0xa25c('0x13')](function(){for(var _0x2470e7=0x0;_0x2470e7<_0xc47b7e[_0xa25c('0x1a')];_0x2470e7+=0x1){var _0x49601c;var _0x17fa4c=_0xc47b7e[_0x2470e7];if(_0x33ac51){_0x49601c=path[_0xa25c('0x22')](_0x4b917d,_0xc7892f,util[_0xa25c('0xd')](_0xa25c('0x23'),_0xc7892f,_0x2470e7,_0xa25c('0x24')));}else{_0x49601c=path[_0xa25c('0x22')](_0x4b917d,util['format']('%s.%s',_0xc7892f,_0xa25c('0x24')));}fs[_0xa25c('0x25')](_0x49601c,json2xls(_0x17fa4c),'binary');}})[_0xa25c('0x13')](function(){if(_0x33ac51){zipdir(path[_0xa25c('0x22')](_0x4b917d,_0xc7892f),{'saveTo':path[_0xa25c('0x22')](_0x4b917d,util['format'](_0xa25c('0x26'),_0xc7892f,'zip'))},function(_0x4cd41a,_0x37d778){});rimraf(path['join'](_0x4b917d,_0xc7892f),function(){});}})['then'](function(){logger[_0xa25c('0xc')](util['format']('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xa25c('0xe')));return analyticExtractedReport(_0xa25c('0x27'),_0x33ac51?util[_0xa25c('0xd')]('%s.%s',_0xc7892f,_0x33ac51?_0xa25c('0x28'):'xlsx'):null);});})[_0xa25c('0x29')](function(_0x13480e){logger['info'](util[_0xa25c('0xd')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xa25c('0xe')),util['inspect'](_0x13480e,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xa25c('0x2a'));})[_0xa25c('0x2b')](function(){process[_0xa25c('0x2c')](EXIT_CODE);});}main();
\ No newline at end of file
index 3f66951..dc0585d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa572=['splice','GotoIfTime',',${EXTEN},','last','concat','transaction','destroy','bulkCreate','sortBy','catch','lodash','util','models','findAll','then','VoiceExtension','IntervalId','uniq','map','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','priority','extensions','extension','exten','push','Set','format','CDR(type)=%s','type','context','inbound','CDR(routeid)=','VoiceExtensionId','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','none','wav','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','intervals','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xa572,0x126));var _0x2a57=function(_0x2e4cbf,_0x8763d3){_0x2e4cbf=_0x2e4cbf-0x0;var _0x52840f=_0xa572[_0x2e4cbf];return _0x52840f;};'use strict';var _=require(_0x2a57('0x0'));var util=require(_0x2a57('0x1'));function rewrite(_0x50f925,_0x49d36a){var _0xcea397=this;return _0x50f925[_0x2a57('0x2')]['Interval'][_0x2a57('0x3')]({'raw':!![]})[_0x2a57('0x4')](function(_0x28831e){_0xcea397['intervals']=_0x28831e;return _0x50f925[_0x2a57('0x2')][_0x2a57('0x5')][_0x2a57('0x3')]({'where':{'IntervalId':_0x49d36a[_0x2a57('0x6')]},'raw':!![]});})['then'](function(_0x220839){return _0x50f925['models'][_0x2a57('0x5')][_0x2a57('0x3')]({'where':{'exten':{'$in':_[_0x2a57('0x7')](_[_0x2a57('0x8')](_0x220839,'exten'))}},'order':[{'raw':_0x2a57('0x9')}],'raw':!![]});})['then'](function(_0x554d2b){var _0x307ca0=_[_0x2a57('0xa')](_0x554d2b,{'priority':'1'});var _0x4d2a34=_[_0x2a57('0xa')](_0x554d2b,{'isApp':0x1});var _0x7f433e=_[_0x2a57('0xb')](_0x4d2a34,'exten');var _0x9b7bca=[_0x2a57('0xc'),_0x2a57('0xd')];var _0x328279=[];var _0x51802c=[];for(var _0x5654ac in _0x7f433e){if(_0x7f433e['hasOwnProperty'](_0x5654ac)){_0xcea397[_0x2a57('0xe')]=0x2;_0xcea397[_0x2a57('0xf')]=[];_0xcea397[_0x2a57('0x10')]=_['find'](_0x307ca0,{'exten':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x11')]});_0xcea397[_0x2a57('0xf')][_0x2a57('0x12')]({'type':_0x7f433e[_0x5654ac][0x0]['type'],'app':_0x2a57('0x13'),'appdata':util[_0x2a57('0x14')](_0x2a57('0x15'),_0x7f433e[_0x5654ac][0x0][_0x2a57('0x16')]),'context':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x17')],'exten':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x11')],'priority':_0xcea397[_0x2a57('0xe')]++,'VoiceExtensionId':_0x7f433e[_0x5654ac][0x0]['VoiceExtensionId']});if(_0x7f433e[_0x5654ac][0x0][_0x2a57('0x16')]===_0x2a57('0x18')){_0xcea397['extensions'][_0x2a57('0x12')]({'type':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x16')],'app':_0x2a57('0x13'),'appdata':_0x2a57('0x19')+_0x7f433e[_0x5654ac][0x0]['VoiceExtensionId'],'context':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x17')],'exten':_0x7f433e[_0x5654ac][0x0]['exten'],'priority':_0xcea397[_0x2a57('0xe')]++,'VoiceExtensionId':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x1a')]});}else if(_0x7f433e[_0x5654ac][0x0][_0x2a57('0x16')]===_0x2a57('0x1b')){if(_0xcea397['extension']){_0xcea397[_0x2a57('0xf')][_0x2a57('0x12')]({'type':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x16')],'app':_0x2a57('0x13'),'appdata':_0x2a57('0x1c')+(_0xcea397['extension'][_0x2a57('0x1d')]?_0x2a57('0x1e')+_0xcea397['extension'][_0x2a57('0x1d')]+'}':_0x2a57('0x1f')),'context':_0x7f433e[_0x5654ac][0x0]['context'],'exten':_0x7f433e[_0x5654ac][0x0]['exten'],'priority':_0xcea397['priority']++,'VoiceExtensionId':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x1a')]});}_0xcea397[_0x2a57('0xf')]['push']({'type':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x16')],'app':_0x2a57('0x13'),'appdata':_0x2a57('0x19')+_0x7f433e[_0x5654ac][0x0][_0x2a57('0x1a')],'context':_0x7f433e[_0x5654ac][0x0]['context'],'exten':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x11')],'priority':_0xcea397[_0x2a57('0xe')]++,'VoiceExtensionId':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x1a')]});var _0x40a245=_0xcea397[_0x2a57('0xe')]++;_0xcea397[_0x2a57('0xf')][_0x2a57('0x12')]({'type':_0x7f433e[_0x5654ac][0x0]['type'],'app':'ExecIf','appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x40a245+0x2)+'):Goto('+(_0x40a245+0x1)+')','context':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x17')],'exten':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x11')],'priority':_0x40a245,'VoiceExtensionId':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x1a')]});if(_0xcea397[_0x2a57('0x10')]){_0xcea397[_0x2a57('0xf')][_0x2a57('0x12')]({'type':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x16')],'app':_0x2a57('0x13'),'appdata':_0xcea397[_0x2a57('0x10')][_0x2a57('0x1d')]?_0x2a57('0x20')+_0xcea397[_0x2a57('0x10')][_0x2a57('0x1d')]+'}':_0x2a57('0x21'),'context':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x17')],'exten':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x11')],'priority':_0xcea397[_0x2a57('0xe')]++,'VoiceExtensionId':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x1a')]});}_0xcea397[_0x2a57('0xf')]['push']({'type':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x16')],'app':_0x2a57('0x13'),'appdata':_0x2a57('0x22')+_0x7f433e[_0x5654ac][0x0]['VoiceExtensionId'],'context':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x17')],'exten':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x11')],'priority':_0xcea397[_0x2a57('0xe')]++,'VoiceExtensionId':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x1a')]});if(_0xcea397['extension']&&_0xcea397[_0x2a57('0x10')][_0x2a57('0x23')](_0x2a57('0x24'))&&_0xcea397[_0x2a57('0x10')]['recordingFormat']!==_0x2a57('0x25')){_0xcea397[_0x2a57('0xf')][_0x2a57('0x12')]({'type':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x16')],'app':_0x2a57('0x13'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x17')],'exten':_0x7f433e[_0x5654ac][0x0]['exten'],'priority':_0xcea397[_0x2a57('0xe')]++,'VoiceExtensionId':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x1a')]});_0xcea397[_0x2a57('0xf')][_0x2a57('0x12')]({'type':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x16')],'app':_0x2a57('0x13'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0xcea397['extension'][_0x2a57('0x24')]||_0x2a57('0x26'),'context':_0x7f433e[_0x5654ac][0x0]['context'],'exten':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x11')],'priority':_0xcea397['priority']++,'VoiceExtensionId':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x1a')]});}}_0xcea397['extensions'][_0x2a57('0x12')]({'type':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x16')],'app':_0x2a57('0x13'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x17')],'exten':_0x7f433e[_0x5654ac][0x0]['exten'],'priority':_0xcea397[_0x2a57('0xe')]++,'VoiceExtensionId':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x1a')]});_0xcea397['extensions'][_0x2a57('0x12')]({'type':_0x7f433e[_0x5654ac][0x0]['type'],'app':_0x2a57('0x13'),'appdata':_0x2a57('0x27'),'context':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x17')],'exten':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x11')],'priority':_0xcea397['priority']++,'VoiceExtensionId':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x1a')]});_0xcea397['extensions'][_0x2a57('0x12')]({'type':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x16')],'app':_0x2a57('0x13'),'appdata':_0x2a57('0x28'),'context':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x17')],'exten':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x11')],'priority':_0xcea397[_0x2a57('0xe')]++,'VoiceExtensionId':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x1a')]});for(var _0x15ef60=0x0,_0x588200=0x0;_0x15ef60<_0x7f433e[_0x5654ac][_0x2a57('0x29')];_0x15ef60+=0x1,_0x588200=0x0){var _0x4ec48b=_0x7f433e[_0x5654ac][_0x15ef60];if(_0x4ec48b[_0x2a57('0x16')]){_0x4ec48b[_0x2a57('0x16')]=_0x4ec48b[_0x2a57('0x16')][_0x2a57('0x2a')]();}var _0x326eb8=[];var _0x55b33e=[];delete _0x4ec48b['id'];delete _0x4ec48b[_0x2a57('0x2b')];delete _0x4ec48b[_0x2a57('0x2c')];var _0x1a3c39=_0x4ec48b[_0x2a57('0x2d')]!==_0x2a57('0x2e')?[_0x4ec48b[_0x2a57('0x2d')]]:_0x4ec48b['IntervalId']?_[_0x2a57('0x8')](_[_0x2a57('0xa')](_0xcea397[_0x2a57('0x2f')],{'IntervalId':_0x4ec48b['IntervalId']}),'interval'):[];if(_0x4ec48b[_0x2a57('0x23')](_0x2a57('0x30'))){if(_0x4ec48b[_0x2a57('0x30')]&&_0x4ec48b['tag']!=='--'){_0x326eb8[_0x2a57('0x12')]({'type':_0x4ec48b[_0x2a57('0x16')],'app':_0x2a57('0x13'),'appdata':_0x2a57('0x31')+_0x4ec48b[_0x2a57('0x30')],'context':_0x4ec48b[_0x2a57('0x17')],'exten':_0x4ec48b['exten'],'priority':_0x1a3c39['length']+_0xcea397['priority']+_0x588200++,'VoiceExtensionId':_0x4ec48b[_0x2a57('0x1a')]});}}if(_0x4ec48b[_0x2a57('0x16')]===_0x2a57('0x1b')&&_0x4ec48b['hasOwnProperty'](_0x2a57('0x32'))){if(_0x4ec48b[_0x2a57('0x32')]){_0x326eb8[_0x2a57('0x12')]({'type':_0x4ec48b[_0x2a57('0x16')],'app':'ExecIf','appdata':_0x2a57('0x33')+_0x4ec48b['callerID']+')','context':_0x4ec48b[_0x2a57('0x17')],'exten':_0x4ec48b['exten'],'priority':_0x1a3c39[_0x2a57('0x29')]+_0xcea397[_0x2a57('0xe')]+_0x588200++,'VoiceExtensionId':_0x4ec48b[_0x2a57('0x1a')]});}else{_0x326eb8['push']({'type':_0x4ec48b[_0x2a57('0x16')],'app':_0x2a57('0x34'),'appdata':_0x2a57('0x35'),'context':_0x4ec48b[_0x2a57('0x17')],'exten':_0x4ec48b[_0x2a57('0x11')],'priority':_0x1a3c39['length']+_0xcea397[_0x2a57('0xe')]+_0x588200++,'VoiceExtensionId':_0x4ec48b[_0x2a57('0x1a')]});}}if(_0x4ec48b[_0x2a57('0x23')](_0x2a57('0x36'))){if(_0x9b7bca[_0x2a57('0x37')](_0x4ec48b[_0x2a57('0x38')][_0x2a57('0x2a')]())>=0x0&&_0x4ec48b[_0x2a57('0x39')]!=='custom'){if(_0x4ec48b[_0x2a57('0x36')]){_0x326eb8[_0x2a57('0x12')]({'type':_0x4ec48b['type'],'app':_0x2a57('0x34'),'appdata':_0x2a57('0x3a'),'context':_0x4ec48b['context'],'exten':_0x4ec48b[_0x2a57('0x11')],'priority':_0x1a3c39[_0x2a57('0x29')]+_0xcea397[_0x2a57('0xe')]+_0x588200++,'VoiceExtensionId':_0x4ec48b['VoiceExtensionId']});_0x326eb8[_0x2a57('0x12')]({'type':_0x4ec48b[_0x2a57('0x16')],'app':'Set','appdata':_0x2a57('0x3b'),'context':_0x4ec48b[_0x2a57('0x17')],'exten':_0x4ec48b['exten'],'priority':_0x1a3c39['length']+_0xcea397[_0x2a57('0xe')]+_0x588200++,'VoiceExtensionId':_0x4ec48b[_0x2a57('0x1a')]});}else{_0x326eb8[_0x2a57('0x12')]({'type':_0x4ec48b[_0x2a57('0x16')],'app':_0x2a57('0x34'),'appdata':_0x2a57('0x3c'),'context':_0x4ec48b[_0x2a57('0x17')],'exten':_0x4ec48b['exten'],'priority':_0x1a3c39[_0x2a57('0x29')]+_0xcea397[_0x2a57('0xe')]+_0x588200++,'VoiceExtensionId':_0x4ec48b[_0x2a57('0x1a')]});_0x326eb8[_0x2a57('0x12')]({'type':_0x4ec48b[_0x2a57('0x16')],'app':_0x2a57('0x13'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x4ec48b['context'],'exten':_0x4ec48b[_0x2a57('0x11')],'priority':_0x1a3c39[_0x2a57('0x29')]+_0xcea397[_0x2a57('0xe')]+_0x588200++,'VoiceExtensionId':_0x4ec48b[_0x2a57('0x1a')]});}}}for(var _0x3bd2fd=0x0;_0x3bd2fd<_0x1a3c39[_0x2a57('0x29')];_0x3bd2fd+=0x1){var _0x1e024d=_0xcea397[_0x2a57('0xe')]+_0x1a3c39[_0x2a57('0x29')];var _0x5ade53=_0x3bd2fd===_0x1a3c39['length']-0x1?_0xcea397[_0x2a57('0xe')]+_0x326eb8[_0x2a57('0x29')]+_0x55b33e[_0x2a57('0x29')]+0x2:_0xcea397[_0x2a57('0xe')]+_0x3bd2fd+0x1;_0x326eb8[_0x2a57('0x3d')](_0x3bd2fd,0x0,{'type':_0x4ec48b['type'],'app':_0x2a57('0x3e'),'appdata':_0x1a3c39[_0x3bd2fd]+'?'+_0x4ec48b[_0x2a57('0x17')]+',${EXTEN},'+_0x1e024d+':'+_0x4ec48b[_0x2a57('0x17')]+_0x2a57('0x3f')+_0x5ade53,'exten':_0x4ec48b[_0x2a57('0x11')],'context':_0x4ec48b[_0x2a57('0x17')],'priority':_0xcea397[_0x2a57('0xe')]+_0x3bd2fd,'VoiceExtensionId':_0x7f433e[_0x5654ac][0x0]['VoiceExtensionId']});}_0x4ec48b['priority']=_0x326eb8[_0x2a57('0x29')]?_[_0x2a57('0x40')](_0x326eb8)[_0x2a57('0xe')]+0x1:_0xcea397[_0x2a57('0xe')];_0xcea397[_0x2a57('0xe')]=(_0x55b33e['length']?_[_0x2a57('0x40')](_0x55b33e)[_0x2a57('0xe')]:_0x4ec48b[_0x2a57('0xe')])+0x1;_0xcea397[_0x2a57('0xf')]=_[_0x2a57('0x41')](_0xcea397['extensions'],_0x326eb8,[_0x4ec48b],_0x55b33e);}_0xcea397[_0x2a57('0xf')]['push']({'type':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x16')],'app':'Hangup','exten':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x11')],'context':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x17')],'priority':_0xcea397[_0x2a57('0xe')],'VoiceExtensionId':_0x7f433e[_0x5654ac][0x0][_0x2a57('0x1a')]});_0x328279['push'](_0x7f433e[_0x5654ac][0x0]['VoiceExtensionId']);_0x51802c=_[_0x2a57('0x41')](_0x51802c,_0xcea397['extensions']);}}return _0x50f925[_0x2a57('0x42')](function(_0x387d3b){return _0x50f925[_0x2a57('0x2')]['VoiceExtension'][_0x2a57('0x43')]({'where':{'VoiceExtensionId':{'$in':_0x328279}},'transaction':_0x387d3b})[_0x2a57('0x4')](function(_0x311fde){return _0x50f925['models']['VoiceExtension'][_0x2a57('0x44')](_[_0x2a57('0x45')](_0x51802c,_0x2a57('0xe')),{'transaction':_0x387d3b});});});})[_0x2a57('0x46')](function(_0x170ad5){console['error'](_0x170ad5);});}exports['rewrite']=rewrite;
\ No newline at end of file
+var _0x2ef4=['appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','GotoIfTime',',${EXTEN},','last','Hangup','concat','destroy','bulkCreate','sortBy','catch','error','util','models','findAll','then','intervals','VoiceExtension','IntervalId','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','playback','hasOwnProperty','priority','extension','find','push','Set','format','CDR(type)=%s','VoiceExtensionId','type','inbound','extensions','CDR(routeid)=','context','outbound','CDR(destination)=','cutdigits','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','createdAt','*,*,*,*','interval','CDR(tag)=','tag','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','app'];(function(_0xbb2e58,_0x1fe145){var _0x2f0d91=function(_0x331b3c){while(--_0x331b3c){_0xbb2e58['push'](_0xbb2e58['shift']());}};_0x2f0d91(++_0x1fe145);}(_0x2ef4,0xe5));var _0x42ef=function(_0x9afcc2,_0x5aa399){_0x9afcc2=_0x9afcc2-0x0;var _0x2b6f2f=_0x2ef4[_0x9afcc2];return _0x2b6f2f;};'use strict';var _=require('lodash');var util=require(_0x42ef('0x0'));function rewrite(_0x490a6d,_0x4bc54c){var _0x21065a=this;return _0x490a6d[_0x42ef('0x1')]['Interval'][_0x42ef('0x2')]({'raw':!![]})[_0x42ef('0x3')](function(_0x46db36){_0x21065a[_0x42ef('0x4')]=_0x46db36;return _0x490a6d[_0x42ef('0x1')][_0x42ef('0x5')][_0x42ef('0x2')]({'where':{'IntervalId':_0x4bc54c[_0x42ef('0x6')]},'raw':!![]});})[_0x42ef('0x3')](function(_0x368daa){return _0x490a6d[_0x42ef('0x1')][_0x42ef('0x5')][_0x42ef('0x2')]({'where':{'exten':{'$in':_[_0x42ef('0x7')](_[_0x42ef('0x8')](_0x368daa,_0x42ef('0x9')))}},'order':[{'raw':_0x42ef('0xa')}],'raw':!![]});})['then'](function(_0x237bf1){var _0x1b7391=_[_0x42ef('0xb')](_0x237bf1,{'priority':'1'});var _0x4e3fd9=_[_0x42ef('0xb')](_0x237bf1,{'isApp':0x1});var _0xfd29d4=_[_0x42ef('0xc')](_0x4e3fd9,_0x42ef('0x9'));var _0x364f62=['queue',_0x42ef('0xd')];var _0x33d00d=[];var _0x1140ec=[];for(var _0x510820 in _0xfd29d4){if(_0xfd29d4[_0x42ef('0xe')](_0x510820)){_0x21065a[_0x42ef('0xf')]=0x2;_0x21065a['extensions']=[];_0x21065a[_0x42ef('0x10')]=_[_0x42ef('0x11')](_0x1b7391,{'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')]});_0x21065a['extensions'][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0]['type'],'app':_0x42ef('0x13'),'appdata':util[_0x42ef('0x14')](_0x42ef('0x15'),_0xfd29d4[_0x510820][0x0]['type']),'context':_0xfd29d4[_0x510820][0x0]['context'],'exten':_0xfd29d4[_0x510820][0x0]['exten'],'priority':_0x21065a['priority']++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});if(_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')]===_0x42ef('0x18')){_0x21065a[_0x42ef('0x19')][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':_0x42ef('0x1a')+_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')],'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'priority':_0x21065a['priority']++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});}else if(_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')]===_0x42ef('0x1c')){if(_0x21065a[_0x42ef('0x10')]){_0x21065a['extensions'][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':_0x42ef('0x1d')+(_0x21065a[_0x42ef('0x10')]['cutdigits']?'${EXTEN:'+_0x21065a[_0x42ef('0x10')][_0x42ef('0x1e')]+'}':'${EXTEN}'),'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'priority':_0x21065a[_0x42ef('0xf')]++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});}_0x21065a[_0x42ef('0x19')][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':'CDR(routeid)='+_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')],'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'exten':_0xfd29d4[_0x510820][0x0]['exten'],'priority':_0x21065a['priority']++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});var _0x20afbc=_0x21065a[_0x42ef('0xf')]++;_0x21065a[_0x42ef('0x19')][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':_0x42ef('0x1f'),'appdata':_0x42ef('0x20')+(_0x20afbc+0x2)+'):Goto('+(_0x20afbc+0x1)+')','context':_0xfd29d4[_0x510820][0x0]['context'],'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'priority':_0x20afbc,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});if(_0x21065a[_0x42ef('0x10')]){_0x21065a[_0x42ef('0x19')][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':_0x21065a['extension'][_0x42ef('0x1e')]?_0x42ef('0x21')+_0x21065a[_0x42ef('0x10')]['cutdigits']+'}':_0x42ef('0x22'),'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'priority':_0x21065a['priority']++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});}_0x21065a[_0x42ef('0x19')]['push']({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':'Set','appdata':_0x42ef('0x23')+_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')],'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'priority':_0x21065a[_0x42ef('0xf')]++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});if(_0x21065a[_0x42ef('0x10')]&&_0x21065a[_0x42ef('0x10')][_0x42ef('0xe')](_0x42ef('0x24'))&&_0x21065a['extension'][_0x42ef('0x24')]!==_0x42ef('0x25')){_0x21065a[_0x42ef('0x19')][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':_0x42ef('0x26'),'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'exten':_0xfd29d4[_0x510820][0x0]['exten'],'priority':_0x21065a[_0x42ef('0xf')]++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0]['VoiceExtensionId']});_0x21065a[_0x42ef('0x19')][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':_0x42ef('0x27')+_0x21065a[_0x42ef('0x10')]['recordingFormat']||_0x42ef('0x28'),'context':_0xfd29d4[_0x510820][0x0]['context'],'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'priority':_0x21065a[_0x42ef('0xf')]++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});}}_0x21065a['extensions'][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':_0x42ef('0x29'),'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'exten':_0xfd29d4[_0x510820][0x0]['exten'],'priority':_0x21065a[_0x42ef('0xf')]++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0]['VoiceExtensionId']});_0x21065a[_0x42ef('0x19')][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0]['type'],'app':'Set','appdata':_0x42ef('0x2a'),'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'priority':_0x21065a[_0x42ef('0xf')]++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});_0x21065a['extensions']['push']({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':'Set','appdata':_0x42ef('0x2b'),'context':_0xfd29d4[_0x510820][0x0]['context'],'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'priority':_0x21065a[_0x42ef('0xf')]++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});for(var _0x2c1065=0x0,_0x57ac38=0x0;_0x2c1065<_0xfd29d4[_0x510820][_0x42ef('0x2c')];_0x2c1065+=0x1,_0x57ac38=0x0){var _0x154392=_0xfd29d4[_0x510820][_0x2c1065];if(_0x154392[_0x42ef('0x17')]){_0x154392[_0x42ef('0x17')]=_0x154392[_0x42ef('0x17')]['toLowerCase']();}var _0x3140b2=[];var _0x3d9330=[];delete _0x154392['id'];delete _0x154392[_0x42ef('0x2d')];delete _0x154392['updatedAt'];var _0x116f5e=_0x154392['interval']!==_0x42ef('0x2e')?[_0x154392[_0x42ef('0x2f')]]:_0x154392[_0x42ef('0x6')]?_[_0x42ef('0x8')](_[_0x42ef('0xb')](_0x21065a[_0x42ef('0x4')],{'IntervalId':_0x154392[_0x42ef('0x6')]}),'interval'):[];if(_0x154392[_0x42ef('0xe')]('tag')){if(_0x154392['tag']&&_0x154392['tag']!=='--'){_0x3140b2[_0x42ef('0x12')]({'type':_0x154392[_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':_0x42ef('0x30')+_0x154392[_0x42ef('0x31')],'context':_0x154392[_0x42ef('0x1b')],'exten':_0x154392[_0x42ef('0x9')],'priority':_0x116f5e[_0x42ef('0x2c')]+_0x21065a[_0x42ef('0xf')]+_0x57ac38++,'VoiceExtensionId':_0x154392[_0x42ef('0x16')]});}}if(_0x154392['type']===_0x42ef('0x1c')&&_0x154392[_0x42ef('0xe')](_0x42ef('0x32'))){if(_0x154392[_0x42ef('0x32')]){_0x3140b2[_0x42ef('0x12')]({'type':_0x154392['type'],'app':_0x42ef('0x1f'),'appdata':_0x42ef('0x33')+_0x154392['callerID']+')','context':_0x154392[_0x42ef('0x1b')],'exten':_0x154392[_0x42ef('0x9')],'priority':_0x116f5e[_0x42ef('0x2c')]+_0x21065a[_0x42ef('0xf')]+_0x57ac38++,'VoiceExtensionId':_0x154392['VoiceExtensionId']});}else{_0x3140b2[_0x42ef('0x12')]({'type':_0x154392[_0x42ef('0x17')],'app':_0x42ef('0x1f'),'appdata':_0x42ef('0x34'),'context':_0x154392[_0x42ef('0x1b')],'exten':_0x154392[_0x42ef('0x9')],'priority':_0x116f5e['length']+_0x21065a[_0x42ef('0xf')]+_0x57ac38++,'VoiceExtensionId':_0x154392['VoiceExtensionId']});}}if(_0x154392[_0x42ef('0xe')](_0x42ef('0x35'))){if(_0x364f62['indexOf'](_0x154392[_0x42ef('0x36')]['toLowerCase']())>=0x0&&_0x154392[_0x42ef('0x37')]!==_0x42ef('0x38')){if(_0x154392[_0x42ef('0x35')]){_0x3140b2['push']({'type':_0x154392[_0x42ef('0x17')],'app':_0x42ef('0x1f'),'appdata':_0x42ef('0x39'),'context':_0x154392['context'],'exten':_0x154392[_0x42ef('0x9')],'priority':_0x116f5e[_0x42ef('0x2c')]+_0x21065a[_0x42ef('0xf')]+_0x57ac38++,'VoiceExtensionId':_0x154392[_0x42ef('0x16')]});_0x3140b2[_0x42ef('0x12')]({'type':_0x154392[_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':_0x42ef('0x3a'),'context':_0x154392[_0x42ef('0x1b')],'exten':_0x154392[_0x42ef('0x9')],'priority':_0x116f5e[_0x42ef('0x2c')]+_0x21065a['priority']+_0x57ac38++,'VoiceExtensionId':_0x154392['VoiceExtensionId']});}else{_0x3140b2['push']({'type':_0x154392[_0x42ef('0x17')],'app':'ExecIf','appdata':_0x42ef('0x3b'),'context':_0x154392['context'],'exten':_0x154392[_0x42ef('0x9')],'priority':_0x116f5e[_0x42ef('0x2c')]+_0x21065a[_0x42ef('0xf')]+_0x57ac38++,'VoiceExtensionId':_0x154392['VoiceExtensionId']});_0x3140b2['push']({'type':_0x154392[_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x154392['context'],'exten':_0x154392[_0x42ef('0x9')],'priority':_0x116f5e[_0x42ef('0x2c')]+_0x21065a['priority']+_0x57ac38++,'VoiceExtensionId':_0x154392[_0x42ef('0x16')]});}}}for(var _0x5bf2b7=0x0;_0x5bf2b7<_0x116f5e['length'];_0x5bf2b7+=0x1){var _0x4f8e55=_0x21065a[_0x42ef('0xf')]+_0x116f5e[_0x42ef('0x2c')];var _0x2e777b=_0x5bf2b7===_0x116f5e[_0x42ef('0x2c')]-0x1?_0x21065a[_0x42ef('0xf')]+_0x3140b2[_0x42ef('0x2c')]+_0x3d9330['length']+0x2:_0x21065a[_0x42ef('0xf')]+_0x5bf2b7+0x1;_0x3140b2[_0x42ef('0x3c')](_0x5bf2b7,0x0,{'type':_0x154392[_0x42ef('0x17')],'app':_0x42ef('0x3d'),'appdata':_0x116f5e[_0x5bf2b7]+'?'+_0x154392[_0x42ef('0x1b')]+_0x42ef('0x3e')+_0x4f8e55+':'+_0x154392['context']+',${EXTEN},'+_0x2e777b,'exten':_0x154392['exten'],'context':_0x154392[_0x42ef('0x1b')],'priority':_0x21065a['priority']+_0x5bf2b7,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});}_0x154392['priority']=_0x3140b2[_0x42ef('0x2c')]?_['last'](_0x3140b2)[_0x42ef('0xf')]+0x1:_0x21065a[_0x42ef('0xf')];_0x21065a['priority']=(_0x3d9330[_0x42ef('0x2c')]?_[_0x42ef('0x3f')](_0x3d9330)['priority']:_0x154392[_0x42ef('0xf')])+0x1;_0x21065a[_0x42ef('0x19')]=_['concat'](_0x21065a[_0x42ef('0x19')],_0x3140b2,[_0x154392],_0x3d9330);}_0x21065a[_0x42ef('0x19')]['push']({'type':_0xfd29d4[_0x510820][0x0]['type'],'app':_0x42ef('0x40'),'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'priority':_0x21065a[_0x42ef('0xf')],'VoiceExtensionId':_0xfd29d4[_0x510820][0x0]['VoiceExtensionId']});_0x33d00d[_0x42ef('0x12')](_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]);_0x1140ec=_[_0x42ef('0x41')](_0x1140ec,_0x21065a[_0x42ef('0x19')]);}}return _0x490a6d['transaction'](function(_0x346d93){return _0x490a6d[_0x42ef('0x1')][_0x42ef('0x5')][_0x42ef('0x42')]({'where':{'VoiceExtensionId':{'$in':_0x33d00d}},'transaction':_0x346d93})[_0x42ef('0x3')](function(_0xb0ee4a){return _0x490a6d['models'][_0x42ef('0x5')][_0x42ef('0x43')](_[_0x42ef('0x44')](_0x1140ec,_0x42ef('0xf')),{'transaction':_0x346d93});});});})[_0x42ef('0x45')](function(_0x57a36d){console[_0x42ef('0x46')](_0x57a36d);});}exports['rewrite']=rewrite;
\ No newline at end of file
index 290c9ad..ed06e61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25ea=['get','dialCheckDuplicateType','query','VoiceQueueId','onlyIfOpen','sequelize','all','VoiceQueue','findAll','CmList','CampaignId','Campaign','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resolve','unlinkSync','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','defaults','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20socket_timestamp\x20parameter!','index','test','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','message','join','error','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','ListId','find','duplicate','Duplicate\x20Contact','CmContact','then','push','catch','stringify','cmContact','inspect','insert','into','cm_hopper','scheduledAt','ContactId','createdAt','select','field','toString','NOW()','updatedAt','from','cm_contacts','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','\x20=\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','calleridnum','cm_hopper_final','phone\x20NOT\x20IN\x20(?)','fromQuery','str','outbound','Lists'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x25ea,0x150));var _0xa25e=function(_0x40df5f,_0x8fd59f){_0x40df5f=_0x40df5f-0x0;var _0x1573f1=_0x25ea[_0x40df5f];return _0x1573f1;};'use strict';var BPromise=require(_0xa25e('0x0'));var util=require(_0xa25e('0x1'));var _=require(_0xa25e('0x2'));var fs=require('fs');var squel=require(_0xa25e('0x3'));var Papa=require('papaparse');var Redis=require('ioredis');var db=require(_0xa25e('0x4'))['db'];var config=require(_0xa25e('0x5'));var logger=require(_0xa25e('0x6'))(_0xa25e('0x7'));config[_0xa25e('0x8')]=_[_0xa25e('0x9')](config['redis'],{'host':_0xa25e('0xa'),'port':0x18eb});var socket=require(_0xa25e('0xb'))(new Redis(config[_0xa25e('0x8')]));require(_0xa25e('0xc'))[_0xa25e('0xd')](socket);try{if(!process[_0xa25e('0xe')][0x2]||process[_0xa25e('0xe')][0x2]===_0xa25e('0xf')||process[_0xa25e('0xe')][0x2]===_0xa25e('0x10')){throw new Error(_0xa25e('0x11'));}var FILEPATH=process[_0xa25e('0xe')][0x2];if(!process[_0xa25e('0xe')][0x3]||process[_0xa25e('0xe')][0x3]===_0xa25e('0xf')||process[_0xa25e('0xe')][0x3]===_0xa25e('0x10')||!process[_0xa25e('0xe')][0x4]||process[_0xa25e('0xe')][0x4]===_0xa25e('0xf')||process[_0xa25e('0xe')][0x4]===_0xa25e('0x10')){throw new Error(_0xa25e('0x12'));}var FIELDS=_[_0xa25e('0x13')](process[_0xa25e('0xe')][0x3]['split'](','),process[_0xa25e('0xe')][0x4][_0xa25e('0x14')](','));if(!process[_0xa25e('0xe')][0x5]||process['argv'][0x5]===_0xa25e('0xf')||process['argv'][0x5]===_0xa25e('0x10')){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process[_0xa25e('0xe')][0x5];var COMPANYID=process[_0xa25e('0xe')][0x6]&&process[_0xa25e('0xe')][0x6]!==_0xa25e('0xf')&&process[_0xa25e('0xe')][0x6]!==_0xa25e('0x10')?process[_0xa25e('0xe')][0x6]:null;var DUPLICATES=process[_0xa25e('0xe')][0x7]&&process['argv'][0x7]!==_0xa25e('0xf')&&process['argv'][0x7]!==_0xa25e('0x10')?process[_0xa25e('0xe')][0x7]:null;if(!process[_0xa25e('0xe')][0x8]||process[_0xa25e('0xe')][0x8]===_0xa25e('0xf')||process[_0xa25e('0xe')][0x8]===_0xa25e('0x10')){throw new Error(_0xa25e('0x15'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x16931f){logger['error'](_0x16931f);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(_0x38ff5f,_0x4cf5dc,_0x107960,_0x511d0e){var _0x18d640={'message':_0x4cf5dc};_0x18d640[_0x38ff5f]=!![];if(_0x107960){_0x18d640['contact']=_0x107960;}if(_0x511d0e){_0x18d640[_0xa25e('0x16')]=_0x511d0e;}return _0x18d640;}function isEmail(_0x334e20){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))*$/[_0xa25e('0x17')](_0x334e20);}function checkRow(_0x5d6b59,_0xc4be2d,_0x1362a2){return new BPromise(function(_0x123825,_0x5f25f9){if(_['isNil'](_0x5d6b59)){return _0x5f25f9(handleCheckRowError('error',_0xa25e('0x18'),null,_0x1362a2));}if(_0x5d6b59[_0xa25e('0x19')]&&_0x5d6b59[_0xa25e('0x19')][_0xa25e('0x1a')]){var _0x37bc55=_['map'](_0x5d6b59['errors'],_0xa25e('0x1b'))[_0xa25e('0x1c')](';');return _0x5f25f9(handleCheckRowError(_0xa25e('0x1d'),_0x37bc55,null,_0x1362a2));}var _0x3c55de={};for(var _0x5c3500 in FIELDS){if(FIELDS['hasOwnProperty'](_0x5c3500)&&FIELDS[_0x5c3500]){_0x3c55de[_0x5c3500]=_0x5d6b59[_0xa25e('0x1e')][0x0][FIELDS[_0x5c3500]]||_0x5d6b59[_0xa25e('0x1e')][0x0]['\ufeff'+FIELDS[_0x5c3500]];}}if(!_0x3c55de[_0xa25e('0x1f')]){return _0x5f25f9(handleCheckRowError(_0xa25e('0x1d'),_0xa25e('0x20'),null,_0x1362a2));}if(!_0x3c55de[_0xa25e('0x21')]){return _0x5f25f9(handleCheckRowError(_0xa25e('0x1d'),_0xa25e('0x22'),null,_0x1362a2));}if(_0x3c55de[_0xa25e('0x23')]){var _0x51debc=moment(_0x3c55de[_0xa25e('0x23')],_0xa25e('0x24'));if(!_0x51debc['isValid']()){return _0x5f25f9(handleCheckRowError('error',_0xa25e('0x25'),null,_0x1362a2));}}if(_0x3c55de['email']){if(!isEmail(_0x3c55de[_0xa25e('0x26')])){return _0x5f25f9(handleCheckRowError(_0xa25e('0x1d'),'email\x20format\x20is\x20not\x20valid!',null,_0x1362a2));}}_0x3c55de[_0xa25e('0x27')]=LISTID;_0x3c55de['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xa25e('0x1a')]&&_0xc4be2d){var _0x563313={};for(var _0x5ee357=0x0,_0x27bdaa=DUPLICATES[_0xa25e('0x1a')];_0x5ee357<_0x27bdaa;_0x5ee357+=0x1){_0x563313[DUPLICATES[_0x5ee357]]=_0x3c55de[DUPLICATES[_0x5ee357]];}var _0x5684ab=_[_0xa25e('0x28')](_0xc4be2d,_0x563313);if(_0x5684ab){return _0x5f25f9(handleCheckRowError(_0xa25e('0x29'),_0xa25e('0x2a'),_0x5684ab,_0x1362a2));}}return db[_0xa25e('0x2b')]['create'](_0x3c55de,{'raw':!![],'hooks':![],'fields':_['keys'](_0x3c55de)})[_0xa25e('0x2c')](function(_0x36e51c){if(DUPLICATES&&DUPLICATES[_0xa25e('0x1a')]&&_0xc4be2d){_0xc4be2d[_0xa25e('0x2d')](_['pick'](_0x3c55de,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x36e51c['id'];return _0x123825();})[_0xa25e('0x2e')](function(_0x25c8c8){return _0x5f25f9(handleCheckRowError(_0xa25e('0x1d'),'Error\x20while\x20creating\x20contact:\x20'+(_0x25c8c8['message']||JSON[_0xa25e('0x2f')](_0x25c8c8)),null,_0x1362a2));});});}function checkHopper(){function _0x29a83a(){return function(_0x1b07ec){logger[_0xa25e('0x1d')](_0xa25e('0x30'),'checkHopper',util[_0xa25e('0x31')](_0x1b07ec,{'showHidden':![],'depth':null}));};}var _0x4cabef=function(_0x2d6b87,_0xec933a){var _0x5c8b8f=squel[_0xa25e('0x32')]()[_0xa25e('0x33')](_0xa25e('0x34'))['fromQuery'](['phone',_0xa25e('0x35'),_0xa25e('0x36'),_0xa25e('0x27'),_0xec933a,_0xa25e('0x37'),'updatedAt'],squel[_0xa25e('0x38')]()[_0xa25e('0x39')](_0xa25e('0x21'),'phone')['field']('NOW()','scheduledAt')['field']('id',_0xa25e('0x36'))[_0xa25e('0x39')](LISTID[_0xa25e('0x3a')](),_0xa25e('0x27'))['field'](_0x2d6b87['id'][_0xa25e('0x3a')](),_0xec933a)[_0xa25e('0x39')](_0xa25e('0x3b'),_0xa25e('0x37'))[_0xa25e('0x39')](_0xa25e('0x3b'),_0xa25e('0x3c'))[_0xa25e('0x3d')](_0xa25e('0x3e'))[_0xa25e('0x3f')]('deletedAt\x20IS\x20NULL')[_0xa25e('0x3f')](_0xa25e('0x40'),LISTID[_0xa25e('0x3a')]())[_0xa25e('0x3f')](_0xa25e('0x41'))[_0xa25e('0x3f')]('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0xa25e('0x39')](_0xa25e('0x21'))[_0xa25e('0x3d')](_0xa25e('0x34'))[_0xa25e('0x3f')](_0xec933a+_0xa25e('0x42'),_0x2d6b87['id'][_0xa25e('0x3a')]())))['toString']();return _0x5c8b8f;};var _0x51f0e6=function(_0x44ad5d,_0x336b55){var _0x210c73=squel[_0xa25e('0x32')]()[_0xa25e('0x33')](_0xa25e('0x34'))['fromQuery'](['phone',_0xa25e('0x35'),'ContactId',_0xa25e('0x27'),_0x336b55,_0xa25e('0x37'),_0xa25e('0x3c')],squel[_0xa25e('0x38')]()['field']('phone',_0xa25e('0x21'))['field'](_0xa25e('0x3b'),'scheduledAt')[_0xa25e('0x39')]('id',_0xa25e('0x36'))[_0xa25e('0x39')](LISTID['toString'](),_0xa25e('0x27'))[_0xa25e('0x39')](_0x44ad5d['id']['toString'](),_0x336b55)[_0xa25e('0x39')](_0xa25e('0x3b'),'createdAt')[_0xa25e('0x39')](_0xa25e('0x3b'),_0xa25e('0x3c'))[_0xa25e('0x3d')]('cm_contacts')['where'](_0xa25e('0x43'))[_0xa25e('0x3f')]('ListId\x20=\x20?',LISTID['toString']())[_0xa25e('0x3f')](_0xa25e('0x44'),squel['str'](hopperContacts))[_0xa25e('0x3f')](_0xa25e('0x41'))[_0xa25e('0x3f')]('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0xa25e('0x39')](_0xa25e('0x45'))[_0xa25e('0x3d')](_0xa25e('0x46'))[_0xa25e('0x3f')](_0x336b55+_0xa25e('0x42'),_0x44ad5d['id'][_0xa25e('0x3a')]()))['where'](_0xa25e('0x47'),squel[_0xa25e('0x38')]()[_0xa25e('0x39')](_0xa25e('0x21'))[_0xa25e('0x3d')](_0xa25e('0x34'))[_0xa25e('0x3f')](_0x336b55+_0xa25e('0x42'),_0x44ad5d['id'][_0xa25e('0x3a')]())))['toString']();return _0x210c73;};function _0x151538(_0x1f2298,_0x4567da){var _0x1d83bb=squel['insert']()[_0xa25e('0x33')](_0xa25e('0x34'))['fromQuery'](['phone',_0xa25e('0x35'),_0xa25e('0x36'),_0xa25e('0x27'),_0x4567da,'createdAt','updatedAt'],squel[_0xa25e('0x38')]()[_0xa25e('0x39')](_0xa25e('0x21'),_0xa25e('0x21'))[_0xa25e('0x39')]('NOW()',_0xa25e('0x35'))[_0xa25e('0x39')]('id',_0xa25e('0x36'))[_0xa25e('0x39')](LISTID['toString'](),_0xa25e('0x27'))[_0xa25e('0x39')](_0x1f2298['id'][_0xa25e('0x3a')](),_0x4567da)[_0xa25e('0x39')](_0xa25e('0x3b'),_0xa25e('0x37'))[_0xa25e('0x39')](_0xa25e('0x3b'),_0xa25e('0x3c'))[_0xa25e('0x3d')](_0xa25e('0x3e'))['where']('deletedAt\x20IS\x20NULL')[_0xa25e('0x3f')](_0xa25e('0x40'),LISTID['toString']())[_0xa25e('0x3f')](_0xa25e('0x44'),squel['str'](hopperContacts))[_0xa25e('0x3f')]('phone\x20IS\x20NOT\x20NULL'))[_0xa25e('0x3a')]();return _0x1d83bb;}function _0x4b7b5c(_0x4fc752,_0x2ebb92){var _0x3c25ec=squel[_0xa25e('0x32')]()['into']('cm_hopper_black')[_0xa25e('0x48')]([_0xa25e('0x21'),_0xa25e('0x36'),_0xa25e('0x27'),_0x2ebb92,_0xa25e('0x37'),_0xa25e('0x3c')],squel[_0xa25e('0x38')]()['field'](_0xa25e('0x21'),_0xa25e('0x21'))[_0xa25e('0x39')]('id',_0xa25e('0x36'))['field'](LISTID[_0xa25e('0x3a')](),_0xa25e('0x27'))[_0xa25e('0x39')](_0x4fc752['id']['toString'](),_0x2ebb92)[_0xa25e('0x39')](_0xa25e('0x3b'),_0xa25e('0x37'))[_0xa25e('0x39')](_0xa25e('0x3b'),_0xa25e('0x3c'))[_0xa25e('0x3d')](_0xa25e('0x3e'))[_0xa25e('0x3f')](_0xa25e('0x43'))[_0xa25e('0x3f')](_0xa25e('0x40'),LISTID[_0xa25e('0x3a')]())[_0xa25e('0x3f')]('id\x20IN\x20?',squel[_0xa25e('0x49')](hopperContacts))[_0xa25e('0x3f')](_0xa25e('0x41')))[_0xa25e('0x3a')]();return _0x3c25ec;}return db['VoiceQueue']['findAll']({'where':{'type':_0xa25e('0x4a')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':_0xa25e('0x4b'),'where':{'id':LISTID}}]})[_0xa25e('0x2c')](function(_0x589953){var _0x149309=[];if(_0x589953){var _0x15c68a;for(var _0x14d680=0x0,_0x4ba303;_0x14d680<_0x589953[_0xa25e('0x1a')];_0x14d680+=0x1){_0x4ba303=_0x589953[_0x14d680][_0xa25e('0x4c')]({'plain':!![]});switch(_0x4ba303[_0xa25e('0x4d')]){case'always':_0x149309[_0xa25e('0x2d')](db['sequelize'][_0xa25e('0x4e')](_0x51f0e6(_0x4ba303,_0xa25e('0x4f')))[_0xa25e('0x2c')](function(){})['catch'](_0x29a83a()));break;case _0xa25e('0x50'):_0x149309[_0xa25e('0x2d')](db[_0xa25e('0x51')]['query'](_0x4cabef(_0x4ba303,'VoiceQueueId'))[_0xa25e('0x2c')](function(){})[_0xa25e('0x2e')](_0x29a83a()));break;default:_0x149309[_0xa25e('0x2d')](db['sequelize'][_0xa25e('0x4e')](_0x151538(_0x4ba303,_0xa25e('0x4f')))[_0xa25e('0x2c')](function(){})[_0xa25e('0x2e')](_0x29a83a()));}}}return _0x149309;})[_0xa25e('0x52')]()['then'](function(){return db[_0xa25e('0x53')][_0xa25e('0x54')]({'where':{'type':_0xa25e('0x4a')},'attributes':['id'],'include':[{'model':db[_0xa25e('0x55')],'as':'BlackLists','where':{'id':LISTID}}]})[_0xa25e('0x2c')](function(_0x128baa){var _0x6eb6c=[];if(_0x128baa){var _0x2261b3;for(var _0xb5a5c=0x0,_0x529136;_0xb5a5c<_0x128baa['length'];_0xb5a5c+=0x1){_0x529136=_0x128baa[_0xb5a5c][_0xa25e('0x4c')]({'plain':!![]});_0x6eb6c[_0xa25e('0x2d')](db[_0xa25e('0x51')][_0xa25e('0x4e')](_0x4b7b5c(_0x529136,_0xa25e('0x4f')))[_0xa25e('0x2c')](function(){})[_0xa25e('0x2e')](_0x29a83a()));}}return _0x6eb6c;})[_0xa25e('0x52')]();})[_0xa25e('0x2c')](function(){return db['Campaign'][_0xa25e('0x54')]({'attributes':['id',_0xa25e('0x4d')],'include':[{'model':db[_0xa25e('0x55')],'as':_0xa25e('0x4b'),'where':{'id':LISTID}}]})['then'](function(_0x5d1106){var _0x7dd5d9=[];if(_0x5d1106){for(var _0x539af0=0x0,_0x7bf1d2;_0x539af0<_0x5d1106[_0xa25e('0x1a')];_0x539af0+=0x1){_0x7bf1d2=_0x5d1106[_0x539af0][_0xa25e('0x4c')]({'plain':!![]});switch(_0x7bf1d2[_0xa25e('0x4d')]){case'always':_0x7dd5d9[_0xa25e('0x2d')](db[_0xa25e('0x51')][_0xa25e('0x4e')](_0x51f0e6(_0x7bf1d2,_0xa25e('0x56')))[_0xa25e('0x2c')](function(){})[_0xa25e('0x2e')](_0x29a83a()));break;case'onlyIfOpen':_0x7dd5d9[_0xa25e('0x2d')](db['sequelize'][_0xa25e('0x4e')](_0x4cabef(_0x7bf1d2,_0xa25e('0x56')))['then'](function(){})[_0xa25e('0x2e')](_0x29a83a()));break;default:_0x7dd5d9['push'](db[_0xa25e('0x51')][_0xa25e('0x4e')](_0x151538(_0x7bf1d2,'CampaignId'))[_0xa25e('0x2c')](function(){})[_0xa25e('0x2e')](_0x29a83a()));}}}return _0x7dd5d9;})[_0xa25e('0x52')]();})[_0xa25e('0x2c')](function(){return db[_0xa25e('0x57')][_0xa25e('0x54')]({'attributes':['id'],'include':[{'model':db['CmList'],'as':'BlackLists','where':{'id':LISTID}}]})[_0xa25e('0x2c')](function(_0x10510a){var _0x29d61e=[];if(_0x10510a){for(var _0x3b952e=0x0,_0x25700d;_0x3b952e<_0x10510a[_0xa25e('0x1a')];_0x3b952e+=0x1){_0x25700d=_0x10510a[_0x3b952e][_0xa25e('0x4c')]({'plain':!![]});_0x29d61e[_0xa25e('0x2d')](db[_0xa25e('0x51')][_0xa25e('0x4e')](_0x4b7b5c(_0x25700d,_0xa25e('0x56')))[_0xa25e('0x2c')](function(){})[_0xa25e('0x2e')](_0x29a83a()));}}return _0x29d61e;})[_0xa25e('0x52')]();})[_0xa25e('0x2e')](function(_0x9361ac){logger['error'](_0xa25e('0x58'),_0xa25e('0x59'),_0x9361ac[_0xa25e('0x1b')]);});}var processPromises=function(_0xe6703f){return BPromise[_0xa25e('0x52')](promises)[_0xa25e('0x2c')](function(_0x3834c2){})[_0xa25e('0x2e')](function(_0x293821){logger[_0xa25e('0x1d')](_0xa25e('0x5a'),JSON[_0xa25e('0x2f')](_0x293821));})[_0xa25e('0x5b')](function(){socket[_0xa25e('0x5c')](_0xa25e('0x5d')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0xe6703f){return _0xe6703f['resume']();}});};var endCsv=function(){return BPromise[_0xa25e('0x5e')]()[_0xa25e('0x2c')](function(){if(hopperContacts){return checkHopper();}})[_0xa25e('0x2c')](function(){socket['emit'](_0xa25e('0x5d')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xa25e('0x5f')](FILEPATH);}catch(_0x2825fd){logger['error']('Unable\x20to\x20delete\x20temp\x20file:',JSON[_0xa25e('0x2f')](_0x2825fd));}finally{process['exit'](0x0);}});};process['on']('SIGINT',function(){logger[_0xa25e('0x60')](_0xa25e('0x61'));endCsv();});function main(){return BPromise['resolve']()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xa25e('0x14')](',');return db[_0xa25e('0x2b')][_0xa25e('0x54')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xa25e('0x2c')](function(_0x4cbc00){var _0x36b770=fs[_0xa25e('0x62')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xa25e('0x63')](_0x36b770,{'header':!![],'skipEmptyLines':!![],'step':function(_0x3d098d,_0x3366cd){total+=0x1;var _0x41f537=total;promises[_0xa25e('0x2d')](checkRow(_0x3d098d,_0x4cbc00,_0x41f537)['then'](function(){success+=0x1;})['catch'](function(_0x2f9fdc){if(_0x2f9fdc[_0xa25e('0x1d')]){errors+=0x1;delete _0x2f9fdc['error'];}else if(_0x2f9fdc['duplicate']){duplicates+=0x1;delete _0x2f9fdc[_0xa25e('0x29')];}rows[_0xa25e('0x2d')](_0x2f9fdc);}));if(total%0xc8===0x0){_0x3366cd[_0xa25e('0x64')]();return processPromises(_0x3366cd);}},'complete':function(){return processPromises()[_0xa25e('0x2c')](function(){logger[_0xa25e('0x60')](_0xa25e('0x65'));endCsv();});},'error':function(_0x1adf3d,_0x7b4e8e){logger[_0xa25e('0x60')]('CSV\x20parse\x20error',JSON['stringify'](_0x1adf3d));endCsv();}});})[_0xa25e('0x2e')](function(_0x2a3c18){logger['error'](_0xa25e('0x66'),JSON['stringify'](_0x2a3c18));});}main();
\ No newline at end of file
+var _0x0150=['always','sequelize','query','VoiceQueueId','catch','VoiceQueue','BlackLists','all','Campaign','CampaignId','onlyIfOpen','Error\x20processing\x20rows\x20block:','emit','contact:csv_','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','duplicate','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','defaults','localhost','redis','register','argv','undefined','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','contact','index','test','isNil','error','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','join','data','firstName','phone','phone\x20not\x20specified!','birthDate','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','find','Duplicate\x20Contact','CmContact','keys','then','push','pick','Error\x20while\x20creating\x20contact:\x20','message','stringify','cmContact','checkHopper','insert','fromQuery','ContactId','createdAt','select','field','scheduledAt','toString','NOW()','updatedAt','from','cm_contacts','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','cm_hopper','\x20=\x20?','id\x20IN\x20?','cm_hopper_final','phone\x20NOT\x20IN\x20(?)','into','deletedAt\x20IS\x20NULL','str','findAll','outbound','dialCheckDuplicateType','CmList','get'];(function(_0xb87d55,_0x578ce1){var _0x1c31c8=function(_0x2c0c64){while(--_0x2c0c64){_0xb87d55['push'](_0xb87d55['shift']());}};_0x1c31c8(++_0x578ce1);}(_0x0150,0xf1));var _0x0015=function(_0x594488,_0x1ec47c){_0x594488=_0x594488-0x0;var _0x11e60b=_0x0150[_0x594488];return _0x11e60b;};'use strict';var BPromise=require(_0x0015('0x0'));var util=require(_0x0015('0x1'));var _=require(_0x0015('0x2'));var fs=require('fs');var squel=require('squel');var Papa=require(_0x0015('0x3'));var Redis=require(_0x0015('0x4'));var db=require(_0x0015('0x5'))['db'];var config=require(_0x0015('0x6'));var logger=require(_0x0015('0x7'))(_0x0015('0x8'));config['redis']=_[_0x0015('0x9')](config['redis'],{'host':_0x0015('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0015('0xb')]));require('../../../api/cmContact/cmContact.socket')[_0x0015('0xc')](socket);try{if(!process[_0x0015('0xd')][0x2]||process[_0x0015('0xd')][0x2]===_0x0015('0xe')||process[_0x0015('0xd')][0x2]===_0x0015('0xf')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0x0015('0xd')][0x2];if(!process[_0x0015('0xd')][0x3]||process['argv'][0x3]===_0x0015('0xe')||process[_0x0015('0xd')][0x3]===_0x0015('0xf')||!process[_0x0015('0xd')][0x4]||process[_0x0015('0xd')][0x4]===_0x0015('0xe')||process[_0x0015('0xd')][0x4]===_0x0015('0xf')){throw new Error(_0x0015('0x10'));}var FIELDS=_[_0x0015('0x11')](process[_0x0015('0xd')][0x3][_0x0015('0x12')](','),process[_0x0015('0xd')][0x4][_0x0015('0x12')](','));if(!process[_0x0015('0xd')][0x5]||process['argv'][0x5]===_0x0015('0xe')||process[_0x0015('0xd')][0x5]==='null'){throw new Error(_0x0015('0x13'));}var LISTID=process[_0x0015('0xd')][0x5];var COMPANYID=process[_0x0015('0xd')][0x6]&&process[_0x0015('0xd')][0x6]!==_0x0015('0xe')&&process[_0x0015('0xd')][0x6]!==_0x0015('0xf')?process[_0x0015('0xd')][0x6]:null;var DUPLICATES=process[_0x0015('0xd')][0x7]&&process['argv'][0x7]!==_0x0015('0xe')&&process['argv'][0x7]!=='null'?process['argv'][0x7]:null;if(!process[_0x0015('0xd')][0x8]||process[_0x0015('0xd')][0x8]===_0x0015('0xe')||process[_0x0015('0xd')][0x8]===_0x0015('0xf')){throw new Error(_0x0015('0x14'));}var SOCKET_TIMESTAMP=process[_0x0015('0xd')][0x8];}catch(_0x298cd9){logger['error'](_0x298cd9);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(_0x25f96c,_0x2f63e4,_0x563b5c,_0x57b74a){var _0x55f42b={'message':_0x2f63e4};_0x55f42b[_0x25f96c]=!![];if(_0x563b5c){_0x55f42b[_0x0015('0x15')]=_0x563b5c;}if(_0x57b74a){_0x55f42b[_0x0015('0x16')]=_0x57b74a;}return _0x55f42b;}function isEmail(_0x296074){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))*$/[_0x0015('0x17')](_0x296074);}function checkRow(_0x3eedab,_0x48792a,_0x47547c){return new BPromise(function(_0x553833,_0x539d60){if(_[_0x0015('0x18')](_0x3eedab)){return _0x539d60(handleCheckRowError(_0x0015('0x19'),_0x0015('0x1a'),null,_0x47547c));}if(_0x3eedab[_0x0015('0x1b')]&&_0x3eedab['errors'][_0x0015('0x1c')]){var _0x3fc7e8=_['map'](_0x3eedab[_0x0015('0x1b')],'message')[_0x0015('0x1d')](';');return _0x539d60(handleCheckRowError(_0x0015('0x19'),_0x3fc7e8,null,_0x47547c));}var _0x2c9912={};for(var _0x28ffa7 in FIELDS){if(FIELDS['hasOwnProperty'](_0x28ffa7)&&FIELDS[_0x28ffa7]){_0x2c9912[_0x28ffa7]=_0x3eedab[_0x0015('0x1e')][0x0][FIELDS[_0x28ffa7]]||_0x3eedab[_0x0015('0x1e')][0x0]['\ufeff'+FIELDS[_0x28ffa7]];}}if(!_0x2c9912[_0x0015('0x1f')]){return _0x539d60(handleCheckRowError(_0x0015('0x19'),'firstName\x20not\x20specified!',null,_0x47547c));}if(!_0x2c9912[_0x0015('0x20')]){return _0x539d60(handleCheckRowError(_0x0015('0x19'),_0x0015('0x21'),null,_0x47547c));}if(_0x2c9912[_0x0015('0x22')]){var _0x5bf116=moment(_0x2c9912['birthDate'],'YYYY-MM-DD');if(!_0x5bf116[_0x0015('0x23')]()){return _0x539d60(handleCheckRowError(_0x0015('0x19'),_0x0015('0x24'),null,_0x47547c));}}if(_0x2c9912[_0x0015('0x25')]){if(!isEmail(_0x2c9912[_0x0015('0x25')])){return _0x539d60(handleCheckRowError('error',_0x0015('0x26'),null,_0x47547c));}}_0x2c9912[_0x0015('0x27')]=LISTID;_0x2c9912['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x0015('0x1c')]&&_0x48792a){var _0x3835e9={};for(var _0x4bd132=0x0,_0x33cb14=DUPLICATES[_0x0015('0x1c')];_0x4bd132<_0x33cb14;_0x4bd132+=0x1){_0x3835e9[DUPLICATES[_0x4bd132]]=_0x2c9912[DUPLICATES[_0x4bd132]];}var _0x1e9037=_[_0x0015('0x28')](_0x48792a,_0x3835e9);if(_0x1e9037){return _0x539d60(handleCheckRowError('duplicate',_0x0015('0x29'),_0x1e9037,_0x47547c));}}return db[_0x0015('0x2a')]['create'](_0x2c9912,{'raw':!![],'hooks':![],'fields':_[_0x0015('0x2b')](_0x2c9912)})[_0x0015('0x2c')](function(_0x2b1af6){if(DUPLICATES&&DUPLICATES['length']&&_0x48792a){_0x48792a[_0x0015('0x2d')](_[_0x0015('0x2e')](_0x2c9912,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x2b1af6['id'];return _0x553833();})['catch'](function(_0x1303e7){return _0x539d60(handleCheckRowError(_0x0015('0x19'),_0x0015('0x2f')+(_0x1303e7[_0x0015('0x30')]||JSON[_0x0015('0x31')](_0x1303e7)),null,_0x47547c));});});}function checkHopper(){function _0x49183b(){return function(_0x30d103){logger[_0x0015('0x19')](_0x0015('0x32'),_0x0015('0x33'),util['inspect'](_0x30d103,{'showHidden':![],'depth':null}));};}var _0x134e05=function(_0x264f20,_0x362d5b){var _0x3e1989=squel[_0x0015('0x34')]()['into']('cm_hopper')[_0x0015('0x35')]([_0x0015('0x20'),'scheduledAt',_0x0015('0x36'),_0x0015('0x27'),_0x362d5b,_0x0015('0x37'),'updatedAt'],squel[_0x0015('0x38')]()[_0x0015('0x39')]('phone',_0x0015('0x20'))[_0x0015('0x39')]('NOW()',_0x0015('0x3a'))['field']('id',_0x0015('0x36'))['field'](LISTID['toString'](),'ListId')[_0x0015('0x39')](_0x264f20['id'][_0x0015('0x3b')](),_0x362d5b)[_0x0015('0x39')](_0x0015('0x3c'),_0x0015('0x37'))[_0x0015('0x39')]('NOW()',_0x0015('0x3d'))[_0x0015('0x3e')](_0x0015('0x3f'))[_0x0015('0x40')]('deletedAt\x20IS\x20NULL')['where'](_0x0015('0x41'),LISTID[_0x0015('0x3b')]())[_0x0015('0x40')](_0x0015('0x42'))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x0015('0x38')]()[_0x0015('0x39')](_0x0015('0x20'))[_0x0015('0x3e')](_0x0015('0x43'))[_0x0015('0x40')](_0x362d5b+_0x0015('0x44'),_0x264f20['id']['toString']())))['toString']();return _0x3e1989;};var _0x155403=function(_0x4789d7,_0x15abd1){var _0x3a75c7=squel['insert']()['into'](_0x0015('0x43'))[_0x0015('0x35')]([_0x0015('0x20'),'scheduledAt',_0x0015('0x36'),_0x0015('0x27'),_0x15abd1,'createdAt',_0x0015('0x3d')],squel[_0x0015('0x38')]()[_0x0015('0x39')](_0x0015('0x20'),_0x0015('0x20'))[_0x0015('0x39')](_0x0015('0x3c'),_0x0015('0x3a'))['field']('id',_0x0015('0x36'))[_0x0015('0x39')](LISTID[_0x0015('0x3b')](),'ListId')['field'](_0x4789d7['id'][_0x0015('0x3b')](),_0x15abd1)['field'](_0x0015('0x3c'),_0x0015('0x37'))[_0x0015('0x39')]('NOW()',_0x0015('0x3d'))['from'](_0x0015('0x3f'))[_0x0015('0x40')]('deletedAt\x20IS\x20NULL')[_0x0015('0x40')]('ListId\x20=\x20?',LISTID[_0x0015('0x3b')]())[_0x0015('0x40')](_0x0015('0x45'),squel['str'](hopperContacts))[_0x0015('0x40')](_0x0015('0x42'))[_0x0015('0x40')]('phone\x20NOT\x20IN\x20(?)',squel[_0x0015('0x38')]()[_0x0015('0x39')]('calleridnum')['from'](_0x0015('0x46'))[_0x0015('0x40')](_0x15abd1+_0x0015('0x44'),_0x4789d7['id']['toString']()))[_0x0015('0x40')](_0x0015('0x47'),squel[_0x0015('0x38')]()[_0x0015('0x39')](_0x0015('0x20'))[_0x0015('0x3e')](_0x0015('0x43'))[_0x0015('0x40')](_0x15abd1+_0x0015('0x44'),_0x4789d7['id']['toString']())))[_0x0015('0x3b')]();return _0x3a75c7;};function _0x4e3425(_0x9c04d2,_0x170e0b){var _0x1ff2cd=squel['insert']()[_0x0015('0x48')](_0x0015('0x43'))[_0x0015('0x35')]([_0x0015('0x20'),_0x0015('0x3a'),_0x0015('0x36'),'ListId',_0x170e0b,_0x0015('0x37'),_0x0015('0x3d')],squel['select']()['field'](_0x0015('0x20'),'phone')[_0x0015('0x39')]('NOW()',_0x0015('0x3a'))[_0x0015('0x39')]('id',_0x0015('0x36'))[_0x0015('0x39')](LISTID[_0x0015('0x3b')](),_0x0015('0x27'))[_0x0015('0x39')](_0x9c04d2['id'][_0x0015('0x3b')](),_0x170e0b)['field'](_0x0015('0x3c'),_0x0015('0x37'))[_0x0015('0x39')](_0x0015('0x3c'),_0x0015('0x3d'))[_0x0015('0x3e')](_0x0015('0x3f'))['where'](_0x0015('0x49'))[_0x0015('0x40')](_0x0015('0x41'),LISTID['toString']())['where'](_0x0015('0x45'),squel[_0x0015('0x4a')](hopperContacts))['where'](_0x0015('0x42')))['toString']();return _0x1ff2cd;}function _0x2c1f2d(_0x3b7e40,_0x1e54c7){var _0x4a8461=squel[_0x0015('0x34')]()[_0x0015('0x48')]('cm_hopper_black')['fromQuery'](['phone',_0x0015('0x36'),_0x0015('0x27'),_0x1e54c7,_0x0015('0x37'),'updatedAt'],squel[_0x0015('0x38')]()[_0x0015('0x39')](_0x0015('0x20'),_0x0015('0x20'))[_0x0015('0x39')]('id',_0x0015('0x36'))[_0x0015('0x39')](LISTID[_0x0015('0x3b')](),_0x0015('0x27'))[_0x0015('0x39')](_0x3b7e40['id'][_0x0015('0x3b')](),_0x1e54c7)[_0x0015('0x39')](_0x0015('0x3c'),_0x0015('0x37'))[_0x0015('0x39')]('NOW()',_0x0015('0x3d'))[_0x0015('0x3e')](_0x0015('0x3f'))[_0x0015('0x40')](_0x0015('0x49'))['where']('ListId\x20=\x20?',LISTID['toString']())['where'](_0x0015('0x45'),squel[_0x0015('0x4a')](hopperContacts))['where'](_0x0015('0x42')))[_0x0015('0x3b')]();return _0x4a8461;}return db['VoiceQueue'][_0x0015('0x4b')]({'where':{'type':_0x0015('0x4c')},'attributes':['id',_0x0015('0x4d')],'include':[{'model':db[_0x0015('0x4e')],'as':'Lists','where':{'id':LISTID}}]})[_0x0015('0x2c')](function(_0x64f439){var _0x5b47a8=[];if(_0x64f439){var _0x351941;for(var _0x45636c=0x0,_0x654991;_0x45636c<_0x64f439[_0x0015('0x1c')];_0x45636c+=0x1){_0x654991=_0x64f439[_0x45636c][_0x0015('0x4f')]({'plain':!![]});switch(_0x654991['dialCheckDuplicateType']){case _0x0015('0x50'):_0x5b47a8[_0x0015('0x2d')](db[_0x0015('0x51')][_0x0015('0x52')](_0x155403(_0x654991,_0x0015('0x53')))['then'](function(){})[_0x0015('0x54')](_0x49183b()));break;case'onlyIfOpen':_0x5b47a8[_0x0015('0x2d')](db[_0x0015('0x51')]['query'](_0x134e05(_0x654991,_0x0015('0x53')))['then'](function(){})[_0x0015('0x54')](_0x49183b()));break;default:_0x5b47a8[_0x0015('0x2d')](db['sequelize'][_0x0015('0x52')](_0x4e3425(_0x654991,_0x0015('0x53')))['then'](function(){})[_0x0015('0x54')](_0x49183b()));}}}return _0x5b47a8;})['all']()['then'](function(){return db[_0x0015('0x55')][_0x0015('0x4b')]({'where':{'type':_0x0015('0x4c')},'attributes':['id'],'include':[{'model':db[_0x0015('0x4e')],'as':_0x0015('0x56'),'where':{'id':LISTID}}]})[_0x0015('0x2c')](function(_0x530698){var _0x34a0de=[];if(_0x530698){var _0x10db70;for(var _0x2c272f=0x0,_0x391c0d;_0x2c272f<_0x530698[_0x0015('0x1c')];_0x2c272f+=0x1){_0x391c0d=_0x530698[_0x2c272f]['get']({'plain':!![]});_0x34a0de[_0x0015('0x2d')](db[_0x0015('0x51')]['query'](_0x2c1f2d(_0x391c0d,_0x0015('0x53')))[_0x0015('0x2c')](function(){})[_0x0015('0x54')](_0x49183b()));}}return _0x34a0de;})[_0x0015('0x57')]();})[_0x0015('0x2c')](function(){return db[_0x0015('0x58')][_0x0015('0x4b')]({'attributes':['id',_0x0015('0x4d')],'include':[{'model':db[_0x0015('0x4e')],'as':'Lists','where':{'id':LISTID}}]})[_0x0015('0x2c')](function(_0x56b066){var _0x1b563f=[];if(_0x56b066){for(var _0x257926=0x0,_0x153bbe;_0x257926<_0x56b066[_0x0015('0x1c')];_0x257926+=0x1){_0x153bbe=_0x56b066[_0x257926][_0x0015('0x4f')]({'plain':!![]});switch(_0x153bbe['dialCheckDuplicateType']){case _0x0015('0x50'):_0x1b563f['push'](db[_0x0015('0x51')][_0x0015('0x52')](_0x155403(_0x153bbe,_0x0015('0x59')))['then'](function(){})[_0x0015('0x54')](_0x49183b()));break;case _0x0015('0x5a'):_0x1b563f[_0x0015('0x2d')](db['sequelize'][_0x0015('0x52')](_0x134e05(_0x153bbe,'CampaignId'))[_0x0015('0x2c')](function(){})[_0x0015('0x54')](_0x49183b()));break;default:_0x1b563f[_0x0015('0x2d')](db[_0x0015('0x51')][_0x0015('0x52')](_0x4e3425(_0x153bbe,'CampaignId'))[_0x0015('0x2c')](function(){})[_0x0015('0x54')](_0x49183b()));}}}return _0x1b563f;})[_0x0015('0x57')]();})[_0x0015('0x2c')](function(){return db[_0x0015('0x58')]['findAll']({'attributes':['id'],'include':[{'model':db['CmList'],'as':_0x0015('0x56'),'where':{'id':LISTID}}]})[_0x0015('0x2c')](function(_0x2e23e4){var _0x225c14=[];if(_0x2e23e4){for(var _0x456710=0x0,_0xa13d3a;_0x456710<_0x2e23e4[_0x0015('0x1c')];_0x456710+=0x1){_0xa13d3a=_0x2e23e4[_0x456710]['get']({'plain':!![]});_0x225c14[_0x0015('0x2d')](db[_0x0015('0x51')][_0x0015('0x52')](_0x2c1f2d(_0xa13d3a,'CampaignId'))[_0x0015('0x2c')](function(){})[_0x0015('0x54')](_0x49183b()));}}return _0x225c14;})['all']();})[_0x0015('0x54')](function(_0x5677bb){logger[_0x0015('0x19')]('cmContact,\x20%s,\x20%s','generalCheckHopper',_0x5677bb[_0x0015('0x30')]);});}var processPromises=function(_0x9fd755){return BPromise[_0x0015('0x57')](promises)[_0x0015('0x2c')](function(_0x148cf2){})[_0x0015('0x54')](function(_0x23be25){logger['error'](_0x0015('0x5b'),JSON[_0x0015('0x31')](_0x23be25));})['finally'](function(){socket[_0x0015('0x5c')](_0x0015('0x5d')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x9fd755){return _0x9fd755['resume']();}});};var endCsv=function(){return BPromise[_0x0015('0x5e')]()['then'](function(){if(hopperContacts){return checkHopper();}})[_0x0015('0x2c')](function(){socket['emit'](_0x0015('0x5d')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x0015('0x5f')](FILEPATH);}catch(_0x2e9e91){logger[_0x0015('0x19')](_0x0015('0x60'),JSON['stringify'](_0x2e9e91));}finally{process[_0x0015('0x61')](0x0);}});};process['on']('SIGINT',function(){logger[_0x0015('0x62')](_0x0015('0x63'));endCsv();});function main(){return BPromise[_0x0015('0x5e')]()[_0x0015('0x2c')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x0015('0x12')](',');return db[_0x0015('0x2a')]['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x0015('0x2c')](function(_0x52680f){var _0x49b9d8=fs[_0x0015('0x64')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x0015('0x65')](_0x49b9d8,{'header':!![],'skipEmptyLines':!![],'step':function(_0x36330a,_0x12158c){total+=0x1;var _0x41f011=total;promises[_0x0015('0x2d')](checkRow(_0x36330a,_0x52680f,_0x41f011)['then'](function(){success+=0x1;})[_0x0015('0x54')](function(_0xb9c9cc){if(_0xb9c9cc[_0x0015('0x19')]){errors+=0x1;delete _0xb9c9cc['error'];}else if(_0xb9c9cc['duplicate']){duplicates+=0x1;delete _0xb9c9cc[_0x0015('0x66')];}rows['push'](_0xb9c9cc);}));if(total%0xc8===0x0){_0x12158c[_0x0015('0x67')]();return processPromises(_0x12158c);}},'complete':function(){return processPromises()[_0x0015('0x2c')](function(){logger[_0x0015('0x62')](_0x0015('0x68'));endCsv();});},'error':function(_0x3015de,_0x5ca64c){logger[_0x0015('0x62')](_0x0015('0x69'),JSON[_0x0015('0x31')](_0x3015de));endCsv();}});})[_0x0015('0x54')](function(_0x1c91ee){logger[_0x0015('0x19')](_0x0015('0x6a'),JSON[_0x0015('0x31')](_0x1c91ee));});}main();
\ No newline at end of file
index 9ea6eb2..7d8bd97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e0e=['../../../config/logger','import','redis','defaults','localhost','socket.io-emitter','format','test','select','field','from','join','.id\x20=\x20','where','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','fromQuery','phone','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','insert','cm_hopper_black','ListId\x20=\x20?','\x20=\x20?','concat','keys',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','min_id','group','error','message','errors','push','code','info','sequelize','query','send','start','binding','socket_timestamp','root','.csv','header','writeFileSync','createReadStream','data','length','rows','hasOwnProperty','trim','YYYY-MM-DD\x20HH:mm:ss','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','includes','agent\x20not\x20exists','email','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','appendFileSync','emit','contact:import:','Abort\x20parser','step','duplicates','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','CompanyId','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns_has_cm_lists','CampaignId','campaigns_has_cm_blacklists','campaigns','each','then','finish','affectedRows','unlink','exit','catch','complete','server/files/tmp','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','squel','../../../mysqldb','../../../config/environment'];(function(_0x5bc9c9,_0x12a67c){var _0x44a280=function(_0x177949){while(--_0x177949){_0x5bc9c9['push'](_0x5bc9c9['shift']());}};_0x44a280(++_0x12a67c);}(_0x6e0e,0x7e));var _0xe6e0=function(_0x4eb998,_0xed657e){_0x4eb998=_0x4eb998-0x0;var _0x119350=_0x6e0e[_0x4eb998];return _0x119350;};'use strict';var fs=require('fs');var path=require(_0xe6e0('0x0'));var _=require(_0xe6e0('0x1'));var Papa=require(_0xe6e0('0x2'));var util=require(_0xe6e0('0x3'));var BPromise=require(_0xe6e0('0x4'));var moment=require('moment');var squel=require(_0xe6e0('0x5'));var Redis=require('ioredis');var db=require(_0xe6e0('0x6'))['db'];var config=require(_0xe6e0('0x7'));var logger=require(_0xe6e0('0x8'))(_0xe6e0('0x9'));config[_0xe6e0('0xa')]=_[_0xe6e0('0xb')](config[_0xe6e0('0xa')],{'host':_0xe6e0('0xc'),'port':0x18eb});var socket=require(_0xe6e0('0xd'))(new Redis(config[_0xe6e0('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xe6e0('0xe')]('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0x48999b){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))*$/[_0xe6e0('0xf')](_0x48999b);}function selectNotIn(_0x41e194,_0x4c276e,_0x47bf1d,_0x373170,_0x3283e8){return squel[_0xe6e0('0x10')]()[_0xe6e0('0x11')]('phone')[_0xe6e0('0x12')](_0x373170)[_0xe6e0('0x13')](_0x4c276e,null,_0x4c276e+_0xe6e0('0x14')+_0x373170+'.'+_0x47bf1d)[_0xe6e0('0x15')](_0x373170+'.'+_0x47bf1d+'\x20=\x20'+_0x41e194+'.'+_0x47bf1d)['where'](_0x4c276e+'.dialCheckDuplicateType\x20IN\x20('+_0x3283e8[_0xe6e0('0x13')]()+')');}function insertCmHopper(_0x5a5eab,_0x466c77,_0xdd67b4,_0x289eac,_0x543c97){var _0x39ab88=[_0xe6e0('0x16'),_0xe6e0('0x17'),_0xe6e0('0x18'),_0xe6e0('0x19'),_0x466c77+'.'+_0x289eac,_0xe6e0('0x1a'),_0xe6e0('0x1b'),_0xe6e0('0x1c'),_0xe6e0('0x1d'),'\x22'+_0x543c97+'\x22'];return squel['insert']()[_0xe6e0('0x1e')](_0xe6e0('0x1f'))[_0xe6e0('0x20')]([_0xe6e0('0x21'),_0xe6e0('0x22'),_0xe6e0('0x23'),_0xe6e0('0x24'),_0x289eac,_0xe6e0('0x25'),_0xe6e0('0x26'),_0xe6e0('0x27'),_0xe6e0('0x28'),_0xe6e0('0x29')],squel[_0xe6e0('0x10')]()[_0xe6e0('0x2a')](_0x39ab88)[_0xe6e0('0x12')](_0x466c77)[_0xe6e0('0x13')](_0xe6e0('0x2b'),null,_0xe6e0('0x2c')+_0x466c77+_0xe6e0('0x2d'))[_0xe6e0('0x13')](_0xdd67b4,null,_0xdd67b4+_0xe6e0('0x14')+_0x466c77+'.'+_0x289eac)[_0xe6e0('0x15')](_0x466c77+_0xe6e0('0x2e'),_0x5a5eab)[_0xe6e0('0x15')](_0xe6e0('0x2f'),NOW)[_0xe6e0('0x15')](_0xe6e0('0x30'),selectNotIn(_0x466c77,_0xdd67b4,_0x289eac,'cm_hopper',[_0xe6e0('0x31'),_0xe6e0('0x32')]))[_0xe6e0('0x15')](_0xe6e0('0x30'),selectNotIn(_0x466c77,_0xdd67b4,_0x289eac,_0xe6e0('0x1f'),[_0xe6e0('0x31')])))[_0xe6e0('0x33')]();}function insertCmHopperBlack(_0x790ae8,_0x348668,_0x30990b,_0x27270c){var _0x1d7c5c=['cm_contacts.phone','cm_contacts.id','cm_contacts.ListId',_0x348668+'.'+_0x27270c,_0xe6e0('0x1a'),_0xe6e0('0x1b')];return squel[_0xe6e0('0x34')]()['into'](_0xe6e0('0x35'))[_0xe6e0('0x20')]([_0xe6e0('0x21'),_0xe6e0('0x23'),_0xe6e0('0x24'),_0x27270c,'createdAt',_0xe6e0('0x26')],squel[_0xe6e0('0x10')]()[_0xe6e0('0x2a')](_0x1d7c5c)[_0xe6e0('0x12')](_0x348668)[_0xe6e0('0x13')](_0xe6e0('0x2b'),null,'cm_contacts.ListId\x20=\x20'+_0x348668+_0xe6e0('0x2d'))[_0xe6e0('0x13')](_0x30990b,null,_0x30990b+_0xe6e0('0x14')+_0x348668+'.'+_0x27270c)[_0xe6e0('0x15')](_0x348668+_0xe6e0('0x2e'),_0x790ae8)[_0xe6e0('0x15')](_0xe6e0('0x2f'),NOW)[_0xe6e0('0x15')](_0xe6e0('0x30'),squel[_0xe6e0('0x10')]()[_0xe6e0('0x11')]('phone')['from'](_0xe6e0('0x35'))[_0xe6e0('0x15')](_0xe6e0('0x36'),_0x790ae8)['where'](_0x27270c+_0xe6e0('0x37'),_0x348668+'.'+_0x27270c)))['toString']();}function insertCmContact(_0x1e67f2,_0x592a62,_0x5f0964,_0x59993e){var _0x421478=_[_0xe6e0('0x38')](_[_0xe6e0('0x39')](_0x59993e),[_0xe6e0('0x24'),'CompanyId',_0xe6e0('0x25'),'updatedAt']);return squel[_0xe6e0('0x34')]()[_0xe6e0('0x1e')](_0xe6e0('0x2b'))[_0xe6e0('0x20')](_0x421478,squel[_0xe6e0('0x10')]()[_0xe6e0('0x2a')](_0x421478)[_0xe6e0('0x12')](_0x592a62)[_0xe6e0('0x15')]('('+_0x5f0964[_0xe6e0('0x13')](',')+_0xe6e0('0x3a'),squel[_0xe6e0('0x10')]()[_0xe6e0('0x2a')](_0x5f0964)['from']('cm_contacts')[_0xe6e0('0x15')](_0xe6e0('0x36'),_0x1e67f2)[_0xe6e0('0x15')](_0xe6e0('0x3b')))[_0xe6e0('0x15')](_0xe6e0('0x3c'),squel[_0xe6e0('0x10')]()[_0xe6e0('0x11')]('MIN(id)',_0xe6e0('0x3d'))[_0xe6e0('0x12')](_0x592a62)[_0xe6e0('0x3e')](_0x5f0964[_0xe6e0('0x13')](','))))[_0xe6e0('0x33')]();}function handleStop(){logger['info']('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x4447c6){logger[_0xe6e0('0x3f')](_0x4447c6[_0xe6e0('0x40')]);process['exit'](0x1);}function handleError(_0x21062d,_0xc43e35){stats[_0xe6e0('0x41')][_0xe6e0('0x42')]({'name':_0xc43e35[_0xe6e0('0x43')],'message':_0xc43e35['message'],'row':_0x21062d});}function handleQuery(_0x5e1628){logger[_0xe6e0('0x44')](_0x5e1628);return db[_0xe6e0('0x45')][_0xe6e0('0x46')](_0x5e1628)['spread'](function(_0x1de1d0){results[_0xe6e0('0x42')](_0x1de1d0);})['catch'](function(_0x431dff){logger[_0xe6e0('0x3f')](_0x431dff[_0xe6e0('0x40')]);});}function main(_0x12cc77,_0x484b78,_0x5635c5,_0x10d7c2){logger[_0xe6e0('0x44')]('main',_0x12cc77,JSON['stringify'](_0x484b78));process[_0xe6e0('0x47')](_0xe6e0('0x48'));var _0x44ec16=_0x484b78[_0xe6e0('0x49')];var _0x683ca2=_0x484b78[_0xe6e0('0x4a')];var _0x3a603f=path[_0xe6e0('0x13')](config[_0xe6e0('0x4b')],'server/files/tmp',_0x683ca2+_0xe6e0('0x4c'));var _0x54043d=_[_0xe6e0('0x39')](_0x44ec16)[_0xe6e0('0x13')]();logger[_0xe6e0('0x44')](_0xe6e0('0x4d'),_0x54043d);fs[_0xe6e0('0x4e')](_0x3a603f,_0x54043d+'\x0a');Papa['parse'](fs[_0xe6e0('0x4f')](_0x12cc77),{'header':!![],'skipEmptyLines':!![],'step':function(_0x5c2781,_0x331f6a){try{for(var _0x220e6e=0x0,_0x3d6292=[];_0x220e6e<_0x5c2781[_0xe6e0('0x50')][_0xe6e0('0x51')];_0x220e6e++){stats[_0xe6e0('0x52')]+=0x1;if(_0x5c2781[_0xe6e0('0x41')][_0x220e6e]){handleError(_0x5c2781[_0xe6e0('0x50')][_0x220e6e],_0x5c2781[_0xe6e0('0x41')][_0x220e6e]);}else{var _0x83ecd3=[];for(var _0x3bced9 in _0x44ec16){if(_0x44ec16[_0xe6e0('0x53')](_0x3bced9)){if(_0x5c2781[_0xe6e0('0x50')][_0x220e6e][_0x44ec16[_0x3bced9]]){var _0x18be8b=_[_0xe6e0('0x54')](_0x5c2781[_0xe6e0('0x50')][_0x220e6e][_0x44ec16[_0x3bced9]]['replace'](/"/g,'\x27'));switch(_0x3bced9){case _0xe6e0('0x22'):var _0x151dba=moment(_0x18be8b,_0xe6e0('0x55'),!![]);if(_0x151dba[_0xe6e0('0x56')]()){_0x3d6292[_0xe6e0('0x42')]('\x22'+_0x18be8b+'\x22');}else{_0x83ecd3[_0xe6e0('0x42')](_0xe6e0('0x57'));}break;case _0xe6e0('0x27'):var _0x5bbb28=parseInt(_0x18be8b);_0x18be8b=_[_0xe6e0('0x58')](_0x5bbb28)||_0x5bbb28<0x0||_0x5bbb28>0x4?_0x10d7c2?0x3:0x2:_0x5bbb28;_0x3d6292['push']('\x22'+_0x18be8b+'\x22');break;case'UserId':var _0x20ac6d=parseInt(_0x18be8b);if(_['isNumber'](_0x20ac6d)&&_[_0xe6e0('0x59')](_0x5635c5,_0x20ac6d)){_0x3d6292[_0xe6e0('0x42')]('\x22'+_0x20ac6d+'\x22');}else{_0x83ecd3[_0xe6e0('0x42')](_0xe6e0('0x5a'));}break;case _0xe6e0('0x5b'):if(isEmail(_0x18be8b)){_0x3d6292[_0xe6e0('0x42')]('\x22'+_0x18be8b+'\x22');}else{_0x83ecd3['push']('email\x20wrong\x20format');}break;case _0xe6e0('0x5c'):var _0x7ad7de=moment(_0x18be8b,_0xe6e0('0x5d'),!![]);if(_0x7ad7de[_0xe6e0('0x56')]()){_0x3d6292[_0xe6e0('0x42')]('\x22'+_0x18be8b+'\x22');}else{_0x83ecd3[_0xe6e0('0x42')](_0xe6e0('0x5e'));}break;default:_0x3d6292[_0xe6e0('0x42')]('\x22'+_0x18be8b+'\x22');}}else{switch(_0x3bced9){case _0xe6e0('0x5f'):case _0xe6e0('0x21'):_0x83ecd3[_0xe6e0('0x42')](_0x3bced9+'\x20not\x20specified');break;default:_0x3d6292[_0xe6e0('0x42')]('\x22\x22');}}}}if(_0x83ecd3[_0xe6e0('0x51')]){handleError(_0x5c2781[_0xe6e0('0x50')][_0x220e6e],{'code':'SystemRow','message':_0x83ecd3['join']()});}else{fs[_0xe6e0('0x60')](_0x3a603f,_0x3d6292[_0xe6e0('0x13')]()+'\x0a');}_0x3d6292=[];}if(!(stats[_0xe6e0('0x52')]%0xc8)){socket[_0xe6e0('0x61')](_0xe6e0('0x62')+_0x683ca2,stats);stats['errors']=[];}}if(stopped){logger[_0xe6e0('0x44')](_0xe6e0('0x63'));_0x331f6a['abort']();}}catch(_0x406370){handleError(_0x5c2781[_0xe6e0('0x50')][_0x220e6e],{'code':'SystemError','message':_0x406370[_0xe6e0('0x40')]});logger[_0xe6e0('0x3f')](_0xe6e0('0x64'),_0x406370[_0xe6e0('0x40')]);}},'complete':function(){try{var _0x2b31fc=[];var _0x2efdb4=_0xe6e0('0x2b');if(_0x484b78[_0xe6e0('0x65')]&&_0x484b78[_0xe6e0('0x65')][_0xe6e0('0x51')]){_0x2efdb4='cm_contacts_'+_0x683ca2;_0x2b31fc[_0xe6e0('0x42')](_0xe6e0('0x66')+_0x2efdb4+_0xe6e0('0x67'));}var _0x1a0cba=util[_0xe6e0('0xe')]('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',_0x3a603f,_0x2efdb4,_0x54043d,_0x484b78[_0xe6e0('0x24')],_0x484b78[_0xe6e0('0x68')]||null,NOW,NOW);if(_[_0xe6e0('0x69')](_0x44ec16[_0xe6e0('0x22')])){_0x1a0cba+=_0xe6e0('0x6a');}_0x2b31fc[_0xe6e0('0x42')](_0x1a0cba);if(_0x484b78[_0xe6e0('0x65')]&&_0x484b78[_0xe6e0('0x65')][_0xe6e0('0x51')]){_0x2b31fc[_0xe6e0('0x42')](insertCmContact(_0x484b78[_0xe6e0('0x24')],_0x2efdb4,_0x484b78[_0xe6e0('0x65')],_0x44ec16));_0x2b31fc[_0xe6e0('0x42')](_0xe6e0('0x6b')+_0x2efdb4+';');}_0x2b31fc[_0xe6e0('0x42')](insertCmHopper(_0x484b78[_0xe6e0('0x24')],_0xe6e0('0x6c'),_0xe6e0('0x6d'),_0xe6e0('0x6e'),_0x10d7c2));_0x2b31fc[_0xe6e0('0x42')](insertCmHopperBlack(_0x484b78[_0xe6e0('0x24')],_0xe6e0('0x6f'),'voice_queues',_0xe6e0('0x6e')));_0x2b31fc[_0xe6e0('0x42')](insertCmHopper(_0x484b78['ListId'],_0xe6e0('0x70'),'campaigns',_0xe6e0('0x71'),_0x10d7c2));_0x2b31fc[_0xe6e0('0x42')](insertCmHopperBlack(_0x484b78[_0xe6e0('0x24')],_0xe6e0('0x72'),_0xe6e0('0x73'),_0xe6e0('0x71')));BPromise[_0xe6e0('0x74')](_0x2b31fc,handleQuery)[_0xe6e0('0x75')](function(_0x4fe89f){stats[_0xe6e0('0x76')]=!![];stats[_0xe6e0('0x77')]=_0x484b78[_0xe6e0('0x65')]&&_0x484b78[_0xe6e0('0x65')]['length']?results[0x2][_0xe6e0('0x77')]:results[0x0][_0xe6e0('0x77')];socket['emit'](_0xe6e0('0x62')+_0x683ca2,stats);fs[_0xe6e0('0x78')](_0x12cc77);fs[_0xe6e0('0x78')](_0x3a603f);process[_0xe6e0('0x79')](0x0);})[_0xe6e0('0x7a')](function(_0x1f0fe4){logger[_0xe6e0('0x3f')](_0x1f0fe4[_0xe6e0('0x40')]);process[_0xe6e0('0x79')](0x1);});}catch(_0x41597c){logger[_0xe6e0('0x3f')](_0xe6e0('0x7b'),_0x41597c[_0xe6e0('0x40')]);process[_0xe6e0('0x79')](0x1);}},'error':function(_0x31854d,_0x3349b1,_0x347363,_0x7983b8){throw new Error(_0x7983b8);}});}function validate(){if(process['argv']&&process['argv'][_0xe6e0('0x51')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x2c1eb0=path[_0xe6e0('0x13')](config[_0xe6e0('0x4b')],_0xe6e0('0x7c'),process['argv'][0x2]);if(!fs[_0xe6e0('0x7d')](_0x2c1eb0)){throw new Error(_0xe6e0('0x7e'));}var _0x50b1c3={};try{_0x50b1c3=JSON['parse'](process['argv'][0x3]);if(!_0x50b1c3[_0xe6e0('0x49')]){throw new Error(_0xe6e0('0x7f'));}if(!_0x50b1c3[_0xe6e0('0x49')][_0xe6e0('0x21')]){throw new Error('phone\x20is\x20mandatory');}if(!_0x50b1c3[_0xe6e0('0x49')]['firstName']){throw new Error(_0xe6e0('0x80'));}var _0x1fe841=0x0;if(_0x50b1c3['binding']['UserId']){_0x1fe841=0x1;}if(!_0x50b1c3[_0xe6e0('0x24')]){throw new Error(_0xe6e0('0x81'));}}catch(_0x20481c){throw new Error('body\x20id\x20mandatory');}var _0x4682ab=[];try{_0x4682ab=_[_0xe6e0('0x82')](JSON['parse'](process['argv'][0x4]),'id');}catch(_0x39aab0){logger[_0xe6e0('0x44')](_0xe6e0('0x83'));}main(_0x2c1eb0,_0x50b1c3,_0x4682ab,_0x1fe841);}validate();process['on'](_0xe6e0('0x84'),handleStop);process['on'](_0xe6e0('0x85'),handleUncaughtException);
\ No newline at end of file
+var _0x6c8f=['cm_contacts_','\x20LIKE\x20cm_contacts;','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','VoiceQueueId','voice_queues_has_cm_blacklists','voice_queues','campaigns_has_cm_lists','campaigns','CampaignId','each','finish','affectedRows','contact:import:','unlink','exit','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','body\x20id\x20mandatory','map','SIGINT','lodash','papaparse','util','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','import','defaults','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','fromQuery','createdAt','updatedAt','priority','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','\x22always\x22','toString','insert','cm_hopper_black','ListId','\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','ListId\x20=\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','info','error','errors','push','code','query','spread','catch','message','stringify','send','start','binding','socket_timestamp','root','server/files/tmp','header','writeFileSync','parse','createReadStream','length','rows','data','scheduledat','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','appendFileSync','Abort\x20parser','abort','SystemError','step','duplicates'];(function(_0x4e6ae6,_0x49dba6){var _0x23c108=function(_0x1bc103){while(--_0x1bc103){_0x4e6ae6['push'](_0x4e6ae6['shift']());}};_0x23c108(++_0x49dba6);}(_0x6c8f,0xa1));var _0xf6c8=function(_0x109a1c,_0x873c2d){_0x109a1c=_0x109a1c-0x0;var _0x3bba3b=_0x6c8f[_0x109a1c];return _0x3bba3b;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0xf6c8('0x0'));var Papa=require(_0xf6c8('0x1'));var util=require(_0xf6c8('0x2'));var BPromise=require('bluebird');var moment=require(_0xf6c8('0x3'));var squel=require(_0xf6c8('0x4'));var Redis=require(_0xf6c8('0x5'));var db=require(_0xf6c8('0x6'))['db'];var config=require(_0xf6c8('0x7'));var logger=require(_0xf6c8('0x8'))(_0xf6c8('0x9'));config['redis']=_[_0xf6c8('0xa')](config[_0xf6c8('0xb')],{'host':_0xf6c8('0xc'),'port':0x18eb});var socket=require(_0xf6c8('0xd'))(new Redis(config[_0xf6c8('0xb')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xf6c8('0xe')](_0xf6c8('0xf'));function isEmail(_0x466051){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))*$/[_0xf6c8('0x10')](_0x466051);}function selectNotIn(_0x84f50b,_0x1bf4a0,_0xfa2abf,_0x4ec304,_0x33b712){return squel[_0xf6c8('0x11')]()[_0xf6c8('0x12')](_0xf6c8('0x13'))[_0xf6c8('0x14')](_0x4ec304)[_0xf6c8('0x15')](_0x1bf4a0,null,_0x1bf4a0+_0xf6c8('0x16')+_0x4ec304+'.'+_0xfa2abf)[_0xf6c8('0x17')](_0x4ec304+'.'+_0xfa2abf+_0xf6c8('0x18')+_0x84f50b+'.'+_0xfa2abf)[_0xf6c8('0x17')](_0x1bf4a0+'.dialCheckDuplicateType\x20IN\x20('+_0x33b712[_0xf6c8('0x15')]()+')');}function insertCmHopper(_0x43fc3c,_0x9d32a1,_0x175da3,_0x54fdcf,_0x2158ac){var _0x1d1a8a=[_0xf6c8('0x19'),_0xf6c8('0x1a'),_0xf6c8('0x1b'),_0xf6c8('0x1c'),_0x9d32a1+'.'+_0x54fdcf,_0xf6c8('0x1d'),_0xf6c8('0x1e'),_0xf6c8('0x1f'),_0xf6c8('0x20'),'\x22'+_0x2158ac+'\x22'];return squel['insert']()[_0xf6c8('0x21')](_0xf6c8('0x22'))[_0xf6c8('0x23')]([_0xf6c8('0x13'),'scheduledat','ContactId','ListId',_0x54fdcf,_0xf6c8('0x24'),_0xf6c8('0x25'),_0xf6c8('0x26'),_0xf6c8('0x27'),_0xf6c8('0x28')],squel[_0xf6c8('0x11')]()[_0xf6c8('0x29')](_0x1d1a8a)[_0xf6c8('0x14')](_0x9d32a1)[_0xf6c8('0x15')](_0xf6c8('0x2a'),null,_0xf6c8('0x2b')+_0x9d32a1+_0xf6c8('0x2c'))[_0xf6c8('0x15')](_0x175da3,null,_0x175da3+_0xf6c8('0x16')+_0x9d32a1+'.'+_0x54fdcf)['where'](_0x9d32a1+_0xf6c8('0x2d'),_0x43fc3c)[_0xf6c8('0x17')](_0xf6c8('0x2e'),NOW)['where'](_0xf6c8('0x2f'),selectNotIn(_0x9d32a1,_0x175da3,_0x54fdcf,_0xf6c8('0x22'),['\x22always\x22',_0xf6c8('0x30')]))[_0xf6c8('0x17')](_0xf6c8('0x2f'),selectNotIn(_0x9d32a1,_0x175da3,_0x54fdcf,_0xf6c8('0x22'),[_0xf6c8('0x31')])))[_0xf6c8('0x32')]();}function insertCmHopperBlack(_0xd3faad,_0x44da76,_0x405066,_0x5980dc){var _0x99d206=[_0xf6c8('0x19'),_0xf6c8('0x1b'),'cm_contacts.ListId',_0x44da76+'.'+_0x5980dc,_0xf6c8('0x1d'),'cm_contacts.updatedAt'];return squel[_0xf6c8('0x33')]()[_0xf6c8('0x21')](_0xf6c8('0x34'))['fromQuery'](['phone','ContactId',_0xf6c8('0x35'),_0x5980dc,'createdAt','updatedAt'],squel[_0xf6c8('0x11')]()[_0xf6c8('0x29')](_0x99d206)[_0xf6c8('0x14')](_0x44da76)[_0xf6c8('0x15')](_0xf6c8('0x2a'),null,_0xf6c8('0x2b')+_0x44da76+'.CmListId')['join'](_0x405066,null,_0x405066+_0xf6c8('0x16')+_0x44da76+'.'+_0x5980dc)[_0xf6c8('0x17')](_0x44da76+_0xf6c8('0x2d'),_0xd3faad)['where']('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0xf6c8('0x2f'),squel[_0xf6c8('0x11')]()[_0xf6c8('0x12')]('phone')[_0xf6c8('0x14')](_0xf6c8('0x34'))[_0xf6c8('0x17')]('ListId\x20=\x20?',_0xd3faad)[_0xf6c8('0x17')](_0x5980dc+_0xf6c8('0x36'),_0x44da76+'.'+_0x5980dc)))['toString']();}function insertCmContact(_0x46cd3d,_0x292046,_0x293366,_0x559a26){var _0x24e6b0=_[_0xf6c8('0x37')](_[_0xf6c8('0x38')](_0x559a26),['ListId',_0xf6c8('0x39'),_0xf6c8('0x24'),_0xf6c8('0x25')]);return squel[_0xf6c8('0x33')]()[_0xf6c8('0x21')]('cm_contacts')[_0xf6c8('0x23')](_0x24e6b0,squel[_0xf6c8('0x11')]()[_0xf6c8('0x29')](_0x24e6b0)[_0xf6c8('0x14')](_0x292046)[_0xf6c8('0x17')]('('+_0x293366['join'](',')+_0xf6c8('0x3a'),squel[_0xf6c8('0x11')]()['fields'](_0x293366)[_0xf6c8('0x14')](_0xf6c8('0x2a'))[_0xf6c8('0x17')](_0xf6c8('0x3b'),_0x46cd3d)[_0xf6c8('0x17')](_0xf6c8('0x3c')))[_0xf6c8('0x17')](_0xf6c8('0x3d'),squel[_0xf6c8('0x11')]()[_0xf6c8('0x12')](_0xf6c8('0x3e'),_0xf6c8('0x3f'))[_0xf6c8('0x14')](_0x292046)['group'](_0x293366['join'](','))))[_0xf6c8('0x32')]();}function handleStop(){logger[_0xf6c8('0x40')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x3cbd8c){logger[_0xf6c8('0x41')](_0x3cbd8c['message']);process['exit'](0x1);}function handleError(_0x1d25b9,_0x32ce87){stats[_0xf6c8('0x42')][_0xf6c8('0x43')]({'name':_0x32ce87[_0xf6c8('0x44')],'message':_0x32ce87['message'],'row':_0x1d25b9});}function handleQuery(_0x428a0b){logger[_0xf6c8('0x40')](_0x428a0b);return db['sequelize'][_0xf6c8('0x45')](_0x428a0b)[_0xf6c8('0x46')](function(_0x318b9a){results[_0xf6c8('0x43')](_0x318b9a);})[_0xf6c8('0x47')](function(_0x108087){logger['error'](_0x108087[_0xf6c8('0x48')]);});}function main(_0x26969d,_0x24e3a6,_0x1dbac6,_0x48d287){logger['info']('main',_0x26969d,JSON[_0xf6c8('0x49')](_0x24e3a6));process[_0xf6c8('0x4a')](_0xf6c8('0x4b'));var _0x4922de=_0x24e3a6[_0xf6c8('0x4c')];var _0xfcb413=_0x24e3a6[_0xf6c8('0x4d')];var _0x3660b4=path['join'](config[_0xf6c8('0x4e')],_0xf6c8('0x4f'),_0xfcb413+'.csv');var _0xfc2cb1=_[_0xf6c8('0x38')](_0x4922de)[_0xf6c8('0x15')]();logger[_0xf6c8('0x40')](_0xf6c8('0x50'),_0xfc2cb1);fs[_0xf6c8('0x51')](_0x3660b4,_0xfc2cb1+'\x0a');Papa[_0xf6c8('0x52')](fs[_0xf6c8('0x53')](_0x26969d),{'header':!![],'skipEmptyLines':!![],'step':function(_0x4579a9,_0x23076b){try{for(var _0x495083=0x0,_0xf30e8a=[];_0x495083<_0x4579a9['data'][_0xf6c8('0x54')];_0x495083++){stats[_0xf6c8('0x55')]+=0x1;if(_0x4579a9[_0xf6c8('0x42')][_0x495083]){handleError(_0x4579a9[_0xf6c8('0x56')][_0x495083],_0x4579a9[_0xf6c8('0x42')][_0x495083]);}else{var _0xf7750c=[];for(var _0x45afc4 in _0x4922de){if(_0x4922de['hasOwnProperty'](_0x45afc4)){if(_0x4579a9[_0xf6c8('0x56')][_0x495083][_0x4922de[_0x45afc4]]){var _0x5f3aae=_['trim'](_0x4579a9[_0xf6c8('0x56')][_0x495083][_0x4922de[_0x45afc4]]['replace'](/"/g,'\x27'));switch(_0x45afc4){case _0xf6c8('0x57'):var _0x19ad06=moment(_0x5f3aae,_0xf6c8('0xf'),!![]);if(_0x19ad06[_0xf6c8('0x58')]()){_0xf30e8a[_0xf6c8('0x43')]('\x22'+_0x5f3aae+'\x22');}else{_0xf7750c[_0xf6c8('0x43')](_0xf6c8('0x59'));}break;case _0xf6c8('0x26'):var _0x5bf246=parseInt(_0x5f3aae);_0x5f3aae=_[_0xf6c8('0x5a')](_0x5bf246)||_0x5bf246<0x0||_0x5bf246>0x4?_0x48d287?0x3:0x2:_0x5bf246;_0xf30e8a[_0xf6c8('0x43')]('\x22'+_0x5f3aae+'\x22');break;case _0xf6c8('0x27'):var _0x3e66bb=parseInt(_0x5f3aae);if(_[_0xf6c8('0x5b')](_0x3e66bb)&&_[_0xf6c8('0x5c')](_0x1dbac6,_0x3e66bb)){_0xf30e8a['push']('\x22'+_0x3e66bb+'\x22');}else{_0xf7750c['push'](_0xf6c8('0x5d'));}break;case _0xf6c8('0x5e'):if(isEmail(_0x5f3aae)){_0xf30e8a[_0xf6c8('0x43')]('\x22'+_0x5f3aae+'\x22');}else{_0xf7750c['push'](_0xf6c8('0x5f'));}break;case _0xf6c8('0x60'):var _0x4864c9=moment(_0x5f3aae,'YYYY-MM-DD',!![]);if(_0x4864c9[_0xf6c8('0x58')]()){_0xf30e8a[_0xf6c8('0x43')]('\x22'+_0x5f3aae+'\x22');}else{_0xf7750c['push'](_0xf6c8('0x61'));}break;default:_0xf30e8a[_0xf6c8('0x43')]('\x22'+_0x5f3aae+'\x22');}}else{switch(_0x45afc4){case _0xf6c8('0x62'):case _0xf6c8('0x13'):_0xf7750c['push'](_0x45afc4+_0xf6c8('0x63'));break;default:_0xf30e8a['push']('\x22\x22');}}}}if(_0xf7750c[_0xf6c8('0x54')]){handleError(_0x4579a9[_0xf6c8('0x56')][_0x495083],{'code':_0xf6c8('0x64'),'message':_0xf7750c['join']()});}else{fs[_0xf6c8('0x65')](_0x3660b4,_0xf30e8a[_0xf6c8('0x15')]()+'\x0a');}_0xf30e8a=[];}if(!(stats[_0xf6c8('0x55')]%0xc8)){socket['emit']('contact:import:'+_0xfcb413,stats);stats[_0xf6c8('0x42')]=[];}}if(stopped){logger['info'](_0xf6c8('0x66'));_0x23076b[_0xf6c8('0x67')]();}}catch(_0x1874d0){handleError(_0x4579a9[_0xf6c8('0x56')][_0x495083],{'code':_0xf6c8('0x68'),'message':_0x1874d0[_0xf6c8('0x48')]});logger[_0xf6c8('0x41')](_0xf6c8('0x69'),_0x1874d0[_0xf6c8('0x48')]);}},'complete':function(){try{var _0x1f9da8=[];var _0x284ac3=_0xf6c8('0x2a');if(_0x24e3a6[_0xf6c8('0x6a')]&&_0x24e3a6[_0xf6c8('0x6a')][_0xf6c8('0x54')]){_0x284ac3=_0xf6c8('0x6b')+_0xfcb413;_0x1f9da8['push']('CREATE\x20TABLE\x20'+_0x284ac3+_0xf6c8('0x6c'));}var _0x2a85bb=util[_0xf6c8('0xe')]('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',_0x3660b4,_0x284ac3,_0xfc2cb1,_0x24e3a6[_0xf6c8('0x35')],_0x24e3a6[_0xf6c8('0x39')]||null,NOW,NOW);if(_[_0xf6c8('0x6d')](_0x4922de[_0xf6c8('0x57')])){_0x2a85bb+=_0xf6c8('0x6e');}_0x1f9da8[_0xf6c8('0x43')](_0x2a85bb);if(_0x24e3a6[_0xf6c8('0x6a')]&&_0x24e3a6[_0xf6c8('0x6a')][_0xf6c8('0x54')]){_0x1f9da8[_0xf6c8('0x43')](insertCmContact(_0x24e3a6[_0xf6c8('0x35')],_0x284ac3,_0x24e3a6[_0xf6c8('0x6a')],_0x4922de));_0x1f9da8[_0xf6c8('0x43')](_0xf6c8('0x6f')+_0x284ac3+';');}_0x1f9da8[_0xf6c8('0x43')](insertCmHopper(_0x24e3a6[_0xf6c8('0x35')],_0xf6c8('0x70'),'voice_queues',_0xf6c8('0x71'),_0x48d287));_0x1f9da8['push'](insertCmHopperBlack(_0x24e3a6[_0xf6c8('0x35')],_0xf6c8('0x72'),_0xf6c8('0x73'),'VoiceQueueId'));_0x1f9da8[_0xf6c8('0x43')](insertCmHopper(_0x24e3a6[_0xf6c8('0x35')],_0xf6c8('0x74'),_0xf6c8('0x75'),_0xf6c8('0x76'),_0x48d287));_0x1f9da8[_0xf6c8('0x43')](insertCmHopperBlack(_0x24e3a6[_0xf6c8('0x35')],'campaigns_has_cm_blacklists',_0xf6c8('0x75'),_0xf6c8('0x76')));BPromise[_0xf6c8('0x77')](_0x1f9da8,handleQuery)['then'](function(_0x172f18){stats[_0xf6c8('0x78')]=!![];stats[_0xf6c8('0x79')]=_0x24e3a6['duplicates']&&_0x24e3a6[_0xf6c8('0x6a')][_0xf6c8('0x54')]?results[0x2]['affectedRows']:results[0x0]['affectedRows'];socket['emit'](_0xf6c8('0x7a')+_0xfcb413,stats);fs[_0xf6c8('0x7b')](_0x26969d);fs[_0xf6c8('0x7b')](_0x3660b4);process['exit'](0x0);})[_0xf6c8('0x47')](function(_0x4e6cae){logger[_0xf6c8('0x41')](_0x4e6cae['message']);process[_0xf6c8('0x7c')](0x1);});}catch(_0x8d9545){logger[_0xf6c8('0x41')]('complete',_0x8d9545[_0xf6c8('0x48')]);process[_0xf6c8('0x7c')](0x1);}},'error':function(_0x1fa2ad,_0x9d60b2,_0x5db156,_0x1e786){throw new Error(_0x1e786);}});}function validate(){if(process[_0xf6c8('0x7d')]&&process['argv'][_0xf6c8('0x54')]<0x4){throw new Error(_0xf6c8('0x7e'));}var _0x321ff3=path[_0xf6c8('0x15')](config['root'],'server/files/tmp',process[_0xf6c8('0x7d')][0x2]);if(!fs[_0xf6c8('0x7f')](_0x321ff3)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x33b96b={};try{_0x33b96b=JSON['parse'](process[_0xf6c8('0x7d')][0x3]);if(!_0x33b96b['binding']){throw new Error(_0xf6c8('0x80'));}if(!_0x33b96b[_0xf6c8('0x4c')][_0xf6c8('0x13')]){throw new Error(_0xf6c8('0x81'));}if(!_0x33b96b['binding'][_0xf6c8('0x62')]){throw new Error(_0xf6c8('0x82'));}var _0x1921ee=0x0;if(_0x33b96b[_0xf6c8('0x4c')][_0xf6c8('0x27')]){_0x1921ee=0x1;}if(!_0x33b96b[_0xf6c8('0x35')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x1e0919){throw new Error(_0xf6c8('0x83'));}var _0x4eb592=[];try{_0x4eb592=_[_0xf6c8('0x84')](JSON[_0xf6c8('0x52')](process[_0xf6c8('0x7d')][0x4]),'id');}catch(_0x103499){logger[_0xf6c8('0x40')]('No\x20agent\x20available');}main(_0x321ff3,_0x33b96b,_0x4eb592,_0x1921ee);}validate();process['on'](_0xf6c8('0x85'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
index 7ba00c2..491ed08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fe9=['Duration','duration','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','inbound','push','variable','queue','calleridnum','Outbound\x20Call','destcalleridnum','getDescriptions','voice','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','talktime','outbound','starttime','Answer\x20Time','answertime'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1fe9,0xe0));var _0x91fe=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x1fe9[_0x19950b];return _0x3c6b41;};'use strict';exports[_0x91fe('0x0')]=function(_0x163e15,_0x2fa5f2){var _0x1526f5=[{'type':_0x91fe('0x1'),'content':_0x91fe('0x2'),'variableName':null}];switch(_0x163e15[_0x91fe('0x3')]()){case'voice':switch(_0x2fa5f2[_0x91fe('0x3')]()){case _0x91fe('0x4'):_0x1526f5[_0x91fe('0x5')]({'type':_0x91fe('0x6'),'content':'','variableName':_0x91fe('0x7')});_0x1526f5['push']({'type':_0x91fe('0x6'),'content':'','variableName':_0x91fe('0x8')});break;case'outbound':_0x1526f5[_0x91fe('0x5')]({'type':_0x91fe('0x1'),'content':_0x91fe('0x9'),'variableName':null});_0x1526f5[_0x91fe('0x5')]({'type':'variable','content':'','variableName':_0x91fe('0xa')});break;}}return _0x1526f5;};exports[_0x91fe('0xb')]=function(_0x30c1fa,_0xceced0){var _0x5eeaf0=[];switch(_0x30c1fa[_0x91fe('0x3')]()){case _0x91fe('0xc'):switch(_0xceced0[_0x91fe('0x3')]()){case _0x91fe('0x4'):_0x5eeaf0=[{'type':_0x91fe('0x1'),'content':_0x91fe('0xd'),'key':null,'keyType':null,'variableName':null},{'type':_0x91fe('0xe'),'content':'','key':_0x91fe('0xf'),'keyType':'variable','variableName':_0x91fe('0x8')},{'type':_0x91fe('0xe'),'content':'','key':_0x91fe('0x10'),'keyType':_0x91fe('0x6'),'variableName':_0x91fe('0x11')},{'type':_0x91fe('0xe'),'content':'','key':_0x91fe('0x12'),'keyType':_0x91fe('0x6'),'variableName':_0x91fe('0x13')},{'type':_0x91fe('0xe'),'content':'','key':_0x91fe('0x14'),'keyType':_0x91fe('0x6'),'variableName':_0x91fe('0x7')},{'type':_0x91fe('0xe'),'content':'','key':_0x91fe('0x15'),'keyType':_0x91fe('0x6'),'variableName':_0x91fe('0x16')},{'type':_0x91fe('0xe'),'content':'','key':_0x91fe('0x17'),'keyType':_0x91fe('0x6'),'variableName':_0x91fe('0x18')},{'type':_0x91fe('0x1'),'content':_0x91fe('0x19'),'key':null,'keyType':null,'variableName':null},{'type':_0x91fe('0xe'),'content':'','key':_0x91fe('0x1a'),'keyType':'variable','variableName':_0x91fe('0x1b')},{'type':_0x91fe('0xe'),'content':'','key':'Agent\x20Number','keyType':_0x91fe('0x6'),'variableName':'destcalleridnum'},{'type':_0x91fe('0x1'),'content':_0x91fe('0x1c'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x91fe('0x1d'),'keyType':_0x91fe('0x6'),'variableName':_0x91fe('0x18')},{'type':_0x91fe('0xe'),'content':'','key':_0x91fe('0x1e'),'keyType':_0x91fe('0x6'),'variableName':'agentconnectAt'},{'type':_0x91fe('0xe'),'content':'','key':_0x91fe('0x1f'),'keyType':'variable','variableName':_0x91fe('0x20')},{'type':_0x91fe('0xe'),'content':'','key':_0x91fe('0x21'),'keyType':_0x91fe('0x6'),'variableName':_0x91fe('0x22')},{'type':'keyValue','content':'','key':'Talk\x20Time','keyType':_0x91fe('0x6'),'variableName':_0x91fe('0x23')}];break;case _0x91fe('0x24'):_0x5eeaf0=[{'type':_0x91fe('0x1'),'content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0x91fe('0xe'),'content':'','key':'Called\x20Number','keyType':_0x91fe('0x6'),'keyContent':'','variableName':_0x91fe('0xa')},{'type':_0x91fe('0xe'),'content':'','key':'Member\x20Name','keyType':_0x91fe('0x6'),'keyContent':'','variableName':'membername'},{'type':_0x91fe('0xe'),'content':'','key':'UniqueId','keyType':_0x91fe('0x6'),'keyContent':'','variableName':_0x91fe('0x16')},{'type':_0x91fe('0xe'),'content':'','key':_0x91fe('0x17'),'keyType':_0x91fe('0x6'),'keyContent':'','variableName':_0x91fe('0x25')},{'type':_0x91fe('0x1'),'content':_0x91fe('0x1c')},{'type':'keyValue','content':'','key':_0x91fe('0x26'),'keyType':'variable','keyContent':'','variableName':_0x91fe('0x27')},{'type':'keyValue','content':'','key':'Complete\x20Time','keyType':_0x91fe('0x6'),'keyContent':'','variableName':'endtime'},{'type':'keyValue','content':'','key':_0x91fe('0x28'),'keyType':_0x91fe('0x6'),'keyContent':'','variableName':_0x91fe('0x29')},{'type':'keyValue','content':'','key':_0x91fe('0x2a'),'keyType':_0x91fe('0x6'),'keyContent':'','variableName':_0x91fe('0x2b')}];break;}}return _0x5eeaf0;};
\ No newline at end of file
+var _0xb523=['agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','Agent\x20Number','Agent\x20Ring','agentconnectAt','agentcompleteAt','Hold\x20Time','holdtime','Member\x20Name','membername','starttime','Complete\x20Time','Duration','duration','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','voice','push','variable','calleridnum','outbound','Outbound\x20Call','destcalleridnum','getDescriptions','inbound','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','Call\x20To','destexten','queue','UniqueId','uniqueid','Date'];(function(_0x581cc4,_0x1fe5c9){var _0x7d30bf=function(_0x6dc4dc){while(--_0x6dc4dc){_0x581cc4['push'](_0x581cc4['shift']());}};_0x7d30bf(++_0x1fe5c9);}(_0xb523,0x89));var _0x3b52=function(_0x26d7cd,_0x32f791){_0x26d7cd=_0x26d7cd-0x0;var _0x55e65f=_0xb523[_0x26d7cd];return _0x55e65f;};'use strict';exports[_0x3b52('0x0')]=function(_0x2b6411,_0x8b7a7a){var _0x572b53=[{'type':_0x3b52('0x1'),'content':_0x3b52('0x2'),'variableName':null}];switch(_0x2b6411[_0x3b52('0x3')]()){case _0x3b52('0x4'):switch(_0x8b7a7a[_0x3b52('0x3')]()){case'inbound':_0x572b53[_0x3b52('0x5')]({'type':_0x3b52('0x6'),'content':'','variableName':'queue'});_0x572b53[_0x3b52('0x5')]({'type':_0x3b52('0x6'),'content':'','variableName':_0x3b52('0x7')});break;case _0x3b52('0x8'):_0x572b53[_0x3b52('0x5')]({'type':'string','content':_0x3b52('0x9'),'variableName':null});_0x572b53['push']({'type':_0x3b52('0x6'),'content':'','variableName':_0x3b52('0xa')});break;}}return _0x572b53;};exports[_0x3b52('0xb')]=function(_0x5a0d24,_0x239b37){var _0x1c90f4=[];switch(_0x5a0d24[_0x3b52('0x3')]()){case _0x3b52('0x4'):switch(_0x239b37[_0x3b52('0x3')]()){case _0x3b52('0xc'):_0x1c90f4=[{'type':_0x3b52('0x1'),'content':_0x3b52('0xd'),'key':null,'keyType':null,'variableName':null},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0xf'),'keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x7')},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x10'),'keyType':_0x3b52('0x6'),'variableName':'calleridname'},{'type':'keyValue','content':'','key':_0x3b52('0x11'),'keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x12')},{'type':_0x3b52('0xe'),'content':'','key':'Queue','keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x13')},{'type':'keyValue','content':'','key':_0x3b52('0x14'),'keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x15')},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x16'),'keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x17')},{'type':_0x3b52('0x1'),'content':_0x3b52('0x18'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x3b52('0x19'),'keyType':_0x3b52('0x6'),'variableName':'destcalleridname'},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x1a'),'keyType':_0x3b52('0x6'),'variableName':_0x3b52('0xa')},{'type':_0x3b52('0x1'),'content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x1b'),'keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x17')},{'type':_0x3b52('0xe'),'content':'','key':'Agent\x20Connect','keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x1c')},{'type':'keyValue','content':'','key':'Agent\x20Complete','keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x1d')},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x1e'),'keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x1f')},{'type':'keyValue','content':'','key':'Talk\x20Time','keyType':_0x3b52('0x6'),'variableName':'talktime'}];break;case _0x3b52('0x8'):_0x1c90f4=[{'type':_0x3b52('0x1'),'content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0x3b52('0xe'),'content':'','key':'Called\x20Number','keyType':_0x3b52('0x6'),'keyContent':'','variableName':_0x3b52('0xa')},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x20'),'keyType':'variable','keyContent':'','variableName':_0x3b52('0x21')},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x14'),'keyType':'variable','keyContent':'','variableName':_0x3b52('0x15')},{'type':_0x3b52('0xe'),'content':'','key':'Date','keyType':_0x3b52('0x6'),'keyContent':'','variableName':_0x3b52('0x22')},{'type':_0x3b52('0x1'),'content':'***\x20Time\x20Info\x20***'},{'type':_0x3b52('0xe'),'content':'','key':'Answer\x20Time','keyType':_0x3b52('0x6'),'keyContent':'','variableName':'answertime'},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x23'),'keyType':_0x3b52('0x6'),'keyContent':'','variableName':'endtime'},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x24'),'keyType':'variable','keyContent':'','variableName':_0x3b52('0x25')},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x26'),'keyType':_0x3b52('0x6'),'keyContent':'','variableName':_0x3b52('0x27')}];break;}}return _0x1c90f4;};
\ No newline at end of file
index 5b602e2..c2397ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x100d=['name','role','null','Interaction','findOne','then','update','info','catch','error','tracked','query','clone','body','omit','phone','fax','mobile','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','InteractionId','upperFirst','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase'];(function(_0x44ef56,_0x4069fc){var _0x36ce3a=function(_0x590b9a){while(--_0x590b9a){_0x44ef56['push'](_0x44ef56['shift']());}};_0x36ce3a(++_0x4069fc);}(_0x100d,0x96));var _0xd100=function(_0x2f588e,_0x5eb7f6){_0x2f588e=_0x2f588e-0x0;var _0x21e1da=_0x100d[_0x2f588e];return _0x21e1da;};'use strict';var _=require(_0xd100('0x0'));var db=require(_0xd100('0x1'))['db'];var loggers={'openchannel':require(_0xd100('0x2'))(_0xd100('0x3')),'mail':require(_0xd100('0x2'))(_0xd100('0x4')),'fax':require(_0xd100('0x2'))(_0xd100('0x5')),'sms':require(_0xd100('0x2'))(_0xd100('0x6')),'chat':require(_0xd100('0x2'))(_0xd100('0x7')),'whatsapp':require('../../config/logger')(_0xd100('0x8'))};function getInteractionId(_0x54b0ca,_0x435c00,_0x263ca0){if(_0x54b0ca&&_0x54b0ca[_['upperFirst'](_0x263ca0)+_0xd100('0x9')]){return _0x54b0ca[_[_0xd100('0xa')](_0x263ca0)+_0xd100('0x9')];}else if(_0x54b0ca&&_0x54b0ca['id']){return _0x54b0ca['id'];}else if(_0x435c00&&_0x435c00['id']){return _0x435c00['id'];}else{return _0xd100('0xb');}}function log(_0x3ecd9c,_0x2f952d,_0xdd6f3c,_0x3e0bb0,_0xb0cbbc,_0xec5002){loggers[_0xb0cbbc[_0xd100('0xc')]()][_0x3ecd9c](_0xd100('0xd'),_0xec5002[_0xd100('0xe')](),_0x2f952d?_0x2f952d['id']:null,_0x2f952d?_0x2f952d[_0xd100('0xf')]:null,_0x2f952d?_0x2f952d[_0xd100('0x10')]:null,getInteractionId(_0xdd6f3c,_0x3e0bb0,_0xb0cbbc),_0xdd6f3c?JSON['stringify'](_0xdd6f3c):_0xd100('0x11'));}function updateUser(_0x4153b5,_0xb0147c,_0x4b584c,_0x1ab915,_0x389470){db[_[_0xd100('0xa')](_0x1ab915)+_0xd100('0x12')][_0xd100('0x13')]({'where':{'id':getInteractionId(_0xb0147c,_0x4b584c,_0x1ab915)}})[_0xd100('0x14')](function(_0x4dcbd4){if(_0x4dcbd4){return _0x4dcbd4[_0xd100('0x15')]({'UserId':_0x4153b5?_0x4153b5['id']:null});}})[_0xd100('0x14')](function(_0xe1d73){if(_0xe1d73){log(_0xd100('0x16'),_0x4153b5,_0xb0147c,_0x4b584c,_0x1ab915,_0x389470);}})[_0xd100('0x17')](function(){log(_0xd100('0x18'),_0x4153b5,_0xb0147c,_0x4b584c,_0x1ab915,_0x389470);});}exports[_0xd100('0x19')]=function(_0x5a5627,_0x30e8d5){return function(_0x5c141a,_0x298b26,_0x4e8924){var _0xb04cc=_0x5c141a['user'];var _0x10f2e9={};var _0x182b90=_0x5c141a[_0xd100('0x1a')];if(_0x10f2e9){_0x10f2e9=_[_0xd100('0x1b')](_0x5c141a[_0xd100('0x1c')]);_0x10f2e9=_[_0xd100('0x1d')](_0x10f2e9,[_0xd100('0x1c'),'html',_0xd100('0x1e'),_0xd100('0x1f'),_0xd100('0x20')]);}updateUser(_0xb04cc,_0x10f2e9,_0x182b90,_0x5a5627,_0x30e8d5);_0x4e8924(null);};};
\ No newline at end of file
+var _0x4f3a=['upperFirst','InteractionId','unknown','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','role','null','Interaction','findOne','update','then','info','catch','user','clone','omit','body','html','phone','mobile','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','sms-interactions','chat-interactions','whatsapp-interactions'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4f3a,0xe0));var _0xa4f3=function(_0x2e04ef,_0x31a596){_0x2e04ef=_0x2e04ef-0x0;var _0x5722b0=_0x4f3a[_0x2e04ef];return _0x5722b0;};'use strict';var _=require(_0xa4f3('0x0'));var db=require(_0xa4f3('0x1'))['db'];var loggers={'openchannel':require(_0xa4f3('0x2'))(_0xa4f3('0x3')),'mail':require(_0xa4f3('0x2'))(_0xa4f3('0x4')),'fax':require(_0xa4f3('0x2'))('fax-interactions'),'sms':require('../../config/logger')(_0xa4f3('0x5')),'chat':require(_0xa4f3('0x2'))(_0xa4f3('0x6')),'whatsapp':require(_0xa4f3('0x2'))(_0xa4f3('0x7'))};function getInteractionId(_0x56d300,_0x28d02d,_0xa6ce6e){if(_0x56d300&&_0x56d300[_['upperFirst'](_0xa6ce6e)+'InteractionId']){return _0x56d300[_[_0xa4f3('0x8')](_0xa6ce6e)+_0xa4f3('0x9')];}else if(_0x56d300&&_0x56d300['id']){return _0x56d300['id'];}else if(_0x28d02d&&_0x28d02d['id']){return _0x28d02d['id'];}else{return _0xa4f3('0xa');}}function log(_0x4aa35d,_0x43c60e,_0x24fe76,_0x4b8167,_0x39bbee,_0x1c8d5f){loggers[_0x39bbee['toLowerCase']()][_0x4aa35d](_0xa4f3('0xb'),_0x1c8d5f[_0xa4f3('0xc')](),_0x43c60e?_0x43c60e['id']:null,_0x43c60e?_0x43c60e[_0xa4f3('0xd')]:null,_0x43c60e?_0x43c60e[_0xa4f3('0xe')]:null,getInteractionId(_0x24fe76,_0x4b8167,_0x39bbee),_0x24fe76?JSON['stringify'](_0x24fe76):_0xa4f3('0xf'));}function updateUser(_0x55b0c1,_0x40bb76,_0x5305bb,_0x2ba61a,_0x1b38cd){db[_[_0xa4f3('0x8')](_0x2ba61a)+_0xa4f3('0x10')][_0xa4f3('0x11')]({'where':{'id':getInteractionId(_0x40bb76,_0x5305bb,_0x2ba61a)}})['then'](function(_0x4296a0){if(_0x4296a0){return _0x4296a0[_0xa4f3('0x12')]({'UserId':_0x55b0c1?_0x55b0c1['id']:null});}})[_0xa4f3('0x13')](function(_0x58c28d){if(_0x58c28d){log(_0xa4f3('0x14'),_0x55b0c1,_0x40bb76,_0x5305bb,_0x2ba61a,_0x1b38cd);}})[_0xa4f3('0x15')](function(){log('error',_0x55b0c1,_0x40bb76,_0x5305bb,_0x2ba61a,_0x1b38cd);});}exports['tracked']=function(_0x42f61d,_0x222aef){return function(_0x37ccd3,_0x26bc9a,_0x23f266){var _0x32b107=_0x37ccd3[_0xa4f3('0x16')];var _0xafd7b0={};var _0x1d8648=_0x37ccd3['query'];if(_0xafd7b0){_0xafd7b0=_[_0xa4f3('0x17')](_0x37ccd3['body']);_0xafd7b0=_[_0xa4f3('0x18')](_0xafd7b0,[_0xa4f3('0x19'),_0xa4f3('0x1a'),_0xa4f3('0x1b'),'fax',_0xa4f3('0x1c')]);}updateUser(_0x32b107,_0xafd7b0,_0x1d8648,_0x42f61d,_0x222aef);_0x23f266(null);};};
\ No newline at end of file
index ac02ff5..41bd206 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90db=['aes-256-ctr','format','update','utf8','final','parse','hasOwnProperty','License','findOne','then','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','admin','user','crypto','util','composable-middleware','data1','license','split'];(function(_0x4135bd,_0x163b65){var _0x37e1d0=function(_0x4dc758){while(--_0x4dc758){_0x4135bd['push'](_0x4135bd['shift']());}};_0x37e1d0(++_0x163b65);}(_0x90db,0x1f4));var _0xb90d=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0x90db[_0x513aa5];return _0x1a1a7c;};'use strict';var crypto=require(_0xb90d('0x0'));var util=require(_0xb90d('0x1'));var compose=require(_0xb90d('0x2'));var db=require('../../mysqldb')['db'];var config=require('../../config/environment');function getValueFromLicense(_0xdcab26,_0x18bdd6){if(_0xdcab26&&_0x18bdd6){if(_0x18bdd6[_0xb90d('0x3')]&&_0x18bdd6[_0xb90d('0x4')]){var _0x59375b=_0x18bdd6[_0xb90d('0x3')];var _0x14138b=_0x18bdd6['license'];var _0x3610f3=_0x59375b[_0xb90d('0x5')]('-')[0x4];var _0xebfc29=_0x59375b['split']('-')[0x0];var _0x2ab1c4=crypto['createDecipher'](_0xb90d('0x6'),util[_0xb90d('0x7')]('%s:%s:%s',_0x3610f3,_0x59375b,_0xebfc29));var _0x3774fe=_0x2ab1c4[_0xb90d('0x8')](_0x14138b,'base64',_0xb90d('0x9'));_0x3774fe+=_0x2ab1c4[_0xb90d('0xa')](_0xb90d('0x9'));var _0x873c90=JSON[_0xb90d('0xb')](_0x3774fe);return _0x873c90[_0xb90d('0xc')](_0xdcab26)?_0x873c90[_0xdcab26]:null;}}return null;}function isLimit(_0x27046f,_0x481750,_0x1bb8ca,_0x519039){var _0x3ae25b=_0x481750;return compose()['use'](function(_0x1413a0,_0x27a4e9,_0x453fdc){return db[_0xb90d('0xd')][_0xb90d('0xe')]({'where':{'id':0x1},'raw':!![]})[_0xb90d('0xf')](function(_0x1ba9fe){var _0x406a22=getValueFromLicense(_0x27046f,_0x1ba9fe);return _0x406a22?_0x406a22:_0x3ae25b;})['then'](function(_0xe44da){_0x3ae25b=_0xe44da;return _0x1bb8ca['count'](_0x519039);})[_0xb90d('0xf')](function(_0x1b95b0){if(_0x1b95b0>=_0x3ae25b){return _0x27a4e9['status'](0x193)[_0xb90d('0x10')]({'message':util['format'](_0xb90d('0x11'),_0x27046f)});}_0x453fdc();})[_0xb90d('0x12')](function(_0x1085b5){_0x453fdc(_0x1085b5);});});}function isUserLimit(){return isLimit(_0xb90d('0x13'),0x1,db['User'],{'where':{'$or':[{'role':_0xb90d('0x14')},{'role':_0xb90d('0x15')}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
+var _0xaf66=['createDecipher','aes-256-ctr','%s:%s:%s','update','base64','utf8','parse','hasOwnProperty','use','License','findOne','then','status','format','catch','users','User','admin','isUserLimit','crypto','composable-middleware','../../mysqldb','../../config/environment','license','data1','split'];(function(_0x493491,_0x54a910){var _0x5ee1e6=function(_0x30f898){while(--_0x30f898){_0x493491['push'](_0x493491['shift']());}};_0x5ee1e6(++_0x54a910);}(_0xaf66,0x17f));var _0x6af6=function(_0x9d639c,_0x524dbe){_0x9d639c=_0x9d639c-0x0;var _0x1671de=_0xaf66[_0x9d639c];return _0x1671de;};'use strict';var crypto=require(_0x6af6('0x0'));var util=require('util');var compose=require(_0x6af6('0x1'));var db=require(_0x6af6('0x2'))['db'];var config=require(_0x6af6('0x3'));function getValueFromLicense(_0x27d846,_0x396f9d){if(_0x27d846&&_0x396f9d){if(_0x396f9d['data1']&&_0x396f9d[_0x6af6('0x4')]){var _0x545fcc=_0x396f9d[_0x6af6('0x5')];var _0xd9a2b5=_0x396f9d['license'];var _0x3a760c=_0x545fcc[_0x6af6('0x6')]('-')[0x4];var _0x59b0e5=_0x545fcc[_0x6af6('0x6')]('-')[0x0];var _0x4708d7=crypto[_0x6af6('0x7')](_0x6af6('0x8'),util['format'](_0x6af6('0x9'),_0x3a760c,_0x545fcc,_0x59b0e5));var _0x55d315=_0x4708d7[_0x6af6('0xa')](_0xd9a2b5,_0x6af6('0xb'),'utf8');_0x55d315+=_0x4708d7['final'](_0x6af6('0xc'));var _0x3ff671=JSON[_0x6af6('0xd')](_0x55d315);return _0x3ff671[_0x6af6('0xe')](_0x27d846)?_0x3ff671[_0x27d846]:null;}}return null;}function isLimit(_0x3cf2ec,_0x246751,_0x58e30a,_0x191c2e){var _0x53690c=_0x246751;return compose()[_0x6af6('0xf')](function(_0x23217a,_0x53987f,_0x279dfd){return db[_0x6af6('0x10')][_0x6af6('0x11')]({'where':{'id':0x1},'raw':!![]})[_0x6af6('0x12')](function(_0x2d2c0a){var _0x59be42=getValueFromLicense(_0x3cf2ec,_0x2d2c0a);return _0x59be42?_0x59be42:_0x53690c;})[_0x6af6('0x12')](function(_0x589452){_0x53690c=_0x589452;return _0x58e30a['count'](_0x191c2e);})[_0x6af6('0x12')](function(_0xbb02a7){if(_0xbb02a7>=_0x53690c){return _0x53987f[_0x6af6('0x13')](0x193)['json']({'message':util[_0x6af6('0x14')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x3cf2ec)});}_0x279dfd();})[_0x6af6('0x15')](function(_0xb3bd8f){_0x279dfd(_0xb3bd8f);});});}function isUserLimit(){return isLimit(_0x6af6('0x16'),0x1,db[_0x6af6('0x17')],{'where':{'$or':[{'role':_0x6af6('0x18')},{'role':'user'}]}});}exports[_0x6af6('0x19')]=isUserLimit;
\ No newline at end of file
index 395e6c5..ffa03a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa6d=['$endsWith','LIKE\x20?','$lt','<\x20?','<=\x20?','$gte','>=\x20?','start','$substring','pop','format','utcOffset','hours','minutes','lodash','moment','sqlOperator','startsWith','[$or]','and','replace','[$and]','split','length','slice','forEach','shift','match','filter','indexOf','map','conditions','push','DATE','operator','$eq','$between','value','includes','$gt','$lte','add','days','castTo','text','CAST(','\x20AS\x20','field','$ne','$notIn','\x20OR\x20','$in','IN\x20?','=\x20?','$startsWith'];(function(_0x2e43d6,_0x2b07b5){var _0x2179f1=function(_0x563700){while(--_0x563700){_0x2e43d6['push'](_0x2e43d6['shift']());}};_0x2179f1(++_0x2b07b5);}(_0xfa6d,0xb3));var _0xdfa6=function(_0x37f2e9,_0x56f1cb){_0x37f2e9=_0x37f2e9-0x0;var _0xed5979=_0xfa6d[_0x37f2e9];return _0xed5979;};'use strict';var _=require(_0xdfa6('0x0'));var moment=require(_0xdfa6('0x1'));exports['parseSearch']=function(_0x2c64b2){var _0x882380={'conditions':[]};_0x882380[_0xdfa6('0x2')]=_[_0xdfa6('0x3')](_0x2c64b2,_0xdfa6('0x4'))?'or':_0xdfa6('0x5');var _0x4c3973=_0x2c64b2[_0xdfa6('0x6')](_0xdfa6('0x7'),'')[_0xdfa6('0x6')](_0xdfa6('0x4'),'')[_0xdfa6('0x8')]('||');for(var _0x18d2e6=0x0;_0x18d2e6<_0x4c3973[_0xdfa6('0x9')];_0x18d2e6++){var _0x152563=_0x4c3973[_0x18d2e6][_0xdfa6('0x8')](':=');var _0x5c09b4=_0x152563[0x0];var _0x5ca6a8=_0x152563[_0xdfa6('0xa')](0x1);_0x5ca6a8[_0xdfa6('0xb')](function(_0x8f9367){var _0x1a95c8=_0x8f9367[_0xdfa6('0x8')]('[')[_0xdfa6('0xc')]();var _0x54d1ee=_0x8f9367[_0xdfa6('0xd')](/\[(.*?)\]/g);_0x54d1ee[_0xdfa6('0xb')](function(_0x2cc8bd){var _0x4d8d15=_0x2cc8bd[_0xdfa6('0x8')]('[')[_0xdfa6('0xe')](function(_0x193575){return _0x193575[_0xdfa6('0xf')](']')>-0x1;})[_0xdfa6('0x10')](function(_0x26e02a){return _0x26e02a[_0xdfa6('0x8')](']')[0x0];})[0x0];_0x882380[_0xdfa6('0x11')][_0xdfa6('0x12')]({'field':_0x5c09b4,'operator':_0x1a95c8,'value':_0x4d8d15});});});}return _0x882380;};exports['buildExpression']=function(_0x1df8ef,_0x339b0d,_0x16cc94){var _0x1f427d={};if(_0x339b0d===_0xdfa6('0x13')){if(_0x16cc94[_0xdfa6('0x14')]===_0xdfa6('0x15')){_0x16cc94[_0xdfa6('0x14')]=_0xdfa6('0x16');_0x16cc94['value']+=','+_0x16cc94[_0xdfa6('0x17')];}else if(_[_0xdfa6('0x18')]([_0xdfa6('0x19'),_0xdfa6('0x1a')],_0x16cc94[_0xdfa6('0x14')])){_0x16cc94[_0xdfa6('0x17')]=moment(_0x16cc94[_0xdfa6('0x17')])[_0xdfa6('0x1b')](0x1,_0xdfa6('0x1c'))['format']('YYYY-MM-DD');}}if(_0x16cc94[_0xdfa6('0x1d')]){_0x339b0d=_0x16cc94['castTo'];_0x1f427d[_0xdfa6('0x1e')]=_0xdfa6('0x1f')+_0x1df8ef+'.'+_0x16cc94['field']+_0xdfa6('0x20')+_0x16cc94[_0xdfa6('0x1d')]+')\x20'+parseOperator(_0x16cc94['operator']);}else{_0x1f427d['text']=_0x1df8ef+'.'+_0x16cc94[_0xdfa6('0x21')]+'\x20'+parseOperator(_0x16cc94[_0xdfa6('0x14')]);}if(_['includes']([_0xdfa6('0x22'),_0xdfa6('0x23')],_0x16cc94[_0xdfa6('0x14')]))_0x1f427d[_0xdfa6('0x1e')]='('+_0x1f427d[_0xdfa6('0x1e')]+_0xdfa6('0x24')+_0x1df8ef+'.'+_0x16cc94['field']+'\x20IS\x20NULL)';_0x1f427d['value']=parseValue(_0x339b0d,_0x16cc94['operator'],_0x16cc94[_0xdfa6('0x17')]);return _0x1f427d;};function parseOperator(_0x2eb9bd){var _0x12407b;switch(_0x2eb9bd){case _0xdfa6('0x25'):_0x12407b=_0xdfa6('0x26');break;case _0xdfa6('0x23'):_0x12407b='NOT\x20IN\x20?';break;case _0xdfa6('0x15'):_0x12407b=_0xdfa6('0x27');break;case _0xdfa6('0x22'):_0x12407b='<>\x20?';break;case'$substring':case _0xdfa6('0x28'):case _0xdfa6('0x29'):_0x12407b=_0xdfa6('0x2a');break;case _0xdfa6('0x2b'):_0x12407b=_0xdfa6('0x2c');break;case'$gt':_0x12407b='>\x20?';break;case'$lte':_0x12407b=_0xdfa6('0x2d');break;case _0xdfa6('0x2e'):_0x12407b=_0xdfa6('0x2f');break;case _0xdfa6('0x16'):_0x12407b='BETWEEN\x20?\x20AND\x20?';break;}return _0x12407b;}function parseValue(_0x176d98,_0x5351db,_0x1c0ac8){var _0x419c98={'start':undefined,'end':undefined};switch(_0x5351db){case _0xdfa6('0x25'):case _0xdfa6('0x23'):_0x419c98[_0xdfa6('0x30')]=_0x1c0ac8[_0xdfa6('0x8')](',');break;case _0xdfa6('0x31'):_0x419c98[_0xdfa6('0x30')]='%'+_0x1c0ac8+'%';break;case _0xdfa6('0x28'):_0x419c98['start']=_0x1c0ac8+'%';break;case'$endsWith':_0x419c98[_0xdfa6('0x30')]='%'+_0x1c0ac8;break;case _0xdfa6('0x16'):var _0x4e8655=_0x1c0ac8[_0xdfa6('0x8')](',');var _0x1c0ac8=_0x4e8655[_0xdfa6('0xc')]();var _0x5bd829=_0x4e8655[_0xdfa6('0x32')]();if(_0x176d98===_0xdfa6('0x13')){_0x1c0ac8=moment(_0x1c0ac8)['utcOffset'](0x0,!![])[_0xdfa6('0x33')]();_0x5bd829=moment(_0x5bd829)[_0xdfa6('0x34')](0x0,!![])[_0xdfa6('0x1b')](0x17,_0xdfa6('0x35'))[_0xdfa6('0x1b')](0x3b,_0xdfa6('0x36'))['add'](0x3b,'seconds')['format']();}_0x419c98={'start':_0x1c0ac8,'end':_0x5bd829};break;default:_0x419c98[_0xdfa6('0x30')]=_0x1c0ac8;break;}return _0x419c98;}
\ No newline at end of file
+var _0x8111=['$startsWith','$lt','>\x20?','<=\x20?','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','$endsWith','DATE','utcOffset','hours','seconds','lodash','moment','parseSearch','sqlOperator','startsWith','[$or]','replace','[$and]','length','split','slice','forEach','shift','match','filter','indexOf','map','conditions','push','buildExpression','operator','$eq','$between','value','includes','$gt','$lte','add','days','format','YYYY-MM-DD','castTo','text','field','\x20AS\x20','$ne','$notIn','\x20OR\x20','$in','NOT\x20IN\x20?','<>\x20?','$substring'];(function(_0x1bc69a,_0x14d370){var _0x435b42=function(_0x40944e){while(--_0x40944e){_0x1bc69a['push'](_0x1bc69a['shift']());}};_0x435b42(++_0x14d370);}(_0x8111,0x1f2));var _0x1811=function(_0x31fddf,_0x27fffb){_0x31fddf=_0x31fddf-0x0;var _0xe6b624=_0x8111[_0x31fddf];return _0xe6b624;};'use strict';var _=require(_0x1811('0x0'));var moment=require(_0x1811('0x1'));exports[_0x1811('0x2')]=function(_0x447341){var _0x422ef9={'conditions':[]};_0x422ef9[_0x1811('0x3')]=_[_0x1811('0x4')](_0x447341,_0x1811('0x5'))?'or':'and';var _0x492f31=_0x447341[_0x1811('0x6')](_0x1811('0x7'),'')[_0x1811('0x6')](_0x1811('0x5'),'')['split']('||');for(var _0x2726af=0x0;_0x2726af<_0x492f31[_0x1811('0x8')];_0x2726af++){var _0x4b3e55=_0x492f31[_0x2726af][_0x1811('0x9')](':=');var _0x575d43=_0x4b3e55[0x0];var _0x5a2ff6=_0x4b3e55[_0x1811('0xa')](0x1);_0x5a2ff6[_0x1811('0xb')](function(_0x4b51f4){var _0x435451=_0x4b51f4[_0x1811('0x9')]('[')[_0x1811('0xc')]();var _0x10543c=_0x4b51f4[_0x1811('0xd')](/\[(.*?)\]/g);_0x10543c['forEach'](function(_0x573464){var _0x12c1ee=_0x573464[_0x1811('0x9')]('[')[_0x1811('0xe')](function(_0x385705){return _0x385705[_0x1811('0xf')](']')>-0x1;})[_0x1811('0x10')](function(_0x30fc96){return _0x30fc96[_0x1811('0x9')](']')[0x0];})[0x0];_0x422ef9[_0x1811('0x11')][_0x1811('0x12')]({'field':_0x575d43,'operator':_0x435451,'value':_0x12c1ee});});});}return _0x422ef9;};exports[_0x1811('0x13')]=function(_0x541ee0,_0x5e5540,_0x54d9b7){var _0x107f4c={};if(_0x5e5540==='DATE'){if(_0x54d9b7[_0x1811('0x14')]===_0x1811('0x15')){_0x54d9b7[_0x1811('0x14')]=_0x1811('0x16');_0x54d9b7[_0x1811('0x17')]+=','+_0x54d9b7[_0x1811('0x17')];}else if(_[_0x1811('0x18')]([_0x1811('0x19'),_0x1811('0x1a')],_0x54d9b7['operator'])){_0x54d9b7[_0x1811('0x17')]=moment(_0x54d9b7[_0x1811('0x17')])[_0x1811('0x1b')](0x1,_0x1811('0x1c'))[_0x1811('0x1d')](_0x1811('0x1e'));}}if(_0x54d9b7['castTo']){_0x5e5540=_0x54d9b7[_0x1811('0x1f')];_0x107f4c[_0x1811('0x20')]='CAST('+_0x541ee0+'.'+_0x54d9b7[_0x1811('0x21')]+_0x1811('0x22')+_0x54d9b7[_0x1811('0x1f')]+')\x20'+parseOperator(_0x54d9b7[_0x1811('0x14')]);}else{_0x107f4c[_0x1811('0x20')]=_0x541ee0+'.'+_0x54d9b7[_0x1811('0x21')]+'\x20'+parseOperator(_0x54d9b7['operator']);}if(_['includes']([_0x1811('0x23'),_0x1811('0x24')],_0x54d9b7['operator']))_0x107f4c['text']='('+_0x107f4c['text']+_0x1811('0x25')+_0x541ee0+'.'+_0x54d9b7[_0x1811('0x21')]+'\x20IS\x20NULL)';_0x107f4c[_0x1811('0x17')]=parseValue(_0x5e5540,_0x54d9b7[_0x1811('0x14')],_0x54d9b7[_0x1811('0x17')]);return _0x107f4c;};function parseOperator(_0x577662){var _0x169a8c;switch(_0x577662){case _0x1811('0x26'):_0x169a8c='IN\x20?';break;case _0x1811('0x24'):_0x169a8c=_0x1811('0x27');break;case _0x1811('0x15'):_0x169a8c='=\x20?';break;case _0x1811('0x23'):_0x169a8c=_0x1811('0x28');break;case _0x1811('0x29'):case _0x1811('0x2a'):case'$endsWith':_0x169a8c='LIKE\x20?';break;case _0x1811('0x2b'):_0x169a8c='<\x20?';break;case'$gt':_0x169a8c=_0x1811('0x2c');break;case _0x1811('0x1a'):_0x169a8c=_0x1811('0x2d');break;case'$gte':_0x169a8c=_0x1811('0x2e');break;case _0x1811('0x16'):_0x169a8c=_0x1811('0x2f');break;}return _0x169a8c;}function parseValue(_0xea6cbe,_0x131ddb,_0x42d4a5){var _0x35b761={'start':undefined,'end':undefined};switch(_0x131ddb){case _0x1811('0x26'):case _0x1811('0x24'):_0x35b761[_0x1811('0x30')]=_0x42d4a5[_0x1811('0x9')](',');break;case _0x1811('0x29'):_0x35b761[_0x1811('0x30')]='%'+_0x42d4a5+'%';break;case _0x1811('0x2a'):_0x35b761['start']=_0x42d4a5+'%';break;case _0x1811('0x31'):_0x35b761['start']='%'+_0x42d4a5;break;case _0x1811('0x16'):var _0x4977d6=_0x42d4a5[_0x1811('0x9')](',');var _0x42d4a5=_0x4977d6['shift']();var _0x238f8c=_0x4977d6['pop']();if(_0xea6cbe===_0x1811('0x32')){_0x42d4a5=moment(_0x42d4a5)[_0x1811('0x33')](0x0,!![])[_0x1811('0x1d')]();_0x238f8c=moment(_0x238f8c)[_0x1811('0x33')](0x0,!![])['add'](0x17,_0x1811('0x34'))[_0x1811('0x1b')](0x3b,'minutes')[_0x1811('0x1b')](0x3b,_0x1811('0x35'))[_0x1811('0x1d')]();}_0x35b761={'start':_0x42d4a5,'end':_0x238f8c};break;default:_0x35b761['start']=_0x42d4a5;break;}return _0x35b761;}
\ No newline at end of file
index 326e61e..bfe0e08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x679e=['where','merge','VIRTUAL','lower','options','lodash','sequelize','moment','keys','includes','parse','fields','split','filters','isEmpty','forOwn','find','type','isPlainObject','utc','format','$lte','YYYY-MM-DD','subtract','name','uniqueid','isArray','limit','offset','sort','map','indexOf','priority','cast','col','substr','DESC','ASC','omit','length','isString','unset','isNumeric','match','isEmail','forEach','replace','join','getOptions','query','$id','model','attributes','hasOwnProperty','nolimit','order','pick','filter'];(function(_0x5cabfd,_0x5dea47){var _0x4bc06c=function(_0x4a2fea){while(--_0x4a2fea){_0x5cabfd['push'](_0x5cabfd['shift']());}};_0x4bc06c(++_0x5dea47);}(_0x679e,0xb3));var _0xe679=function(_0x3c862a,_0x3ab0e1){_0x3c862a=_0x3c862a-0x0;var _0x18c83b=_0x679e[_0x3c862a];return _0x18c83b;};'use strict';var _=require(_0xe679('0x0'));var sequelize=require(_0xe679('0x1'));var moment=require(_0xe679('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x517595){var _0x4037d5=['ne'];try{var _0x8f4170=JSON['parse'](_0x517595);var _0x1543c4=Object[_0xe679('0x3')](_0x8f4170)[0x0];return _0x4037d5[_0xe679('0x4')](_0x1543c4);}catch(_0x39d129){return![];}}function getOperatorValue(_0x5b1ed1){var _0x536766=JSON[_0xe679('0x5')](_0x5b1ed1);var _0x2d7415=Object[_0xe679('0x3')](_0x536766)[0x0];var _0x3a4df0=_0x536766[_0x2d7415];return{['$'+_0x2d7415]:_0x3a4df0};}exports[_0xe679('0x6')]=function(_0x4c9abc){var _0x135990=null;if(_0x4c9abc){_0x135990=_0x4c9abc[_0xe679('0x7')](',');}return _0x135990;};exports[_0xe679('0x8')]=function(_0x2da70f,_0x5127d9){var _0x2f50c0={};if(!_[_0xe679('0x9')](_0x2da70f)){_[_0xe679('0xa')](_0x2da70f,function(_0x486fc7,_0x323254){try{if(_0x5127d9){var _0x450aec=_[_0xe679('0xb')](_0x5127d9,{'name':_0x323254})||{};if(hasSequelizeOperator(_0x486fc7)){_0x2f50c0[_0x323254]=getOperatorValue(_0x486fc7);}else if(_0x450aec[_0xe679('0xc')]==='DATE'&&_[_0xe679('0xd')](_0x486fc7)){var _0x4fe2a2=JSON[_0xe679('0x5')](_0x486fc7);var _0xb547e8={'$gte':moment(moment(_0x4fe2a2['$gte'])['format']('YYYY-MM-DD'))[_0xe679('0xe')]()[_0xe679('0xf')](),'$lte':moment(moment(_0x4fe2a2[_0xe679('0x10')])[_0xe679('0xf')](_0xe679('0x11')))[_0xe679('0xe')]()[_0xe679('0x12')](0x1,'s')[_0xe679('0xf')]()};_0x2f50c0[_0x323254]=_0xb547e8;}else if(_0x450aec[_0xe679('0x13')]===_0xe679('0x14')){_0x2f50c0[_0x323254]=_0x486fc7;}else{_0x2f50c0[_0x323254]=_[_0xe679('0x15')](_0x486fc7)?_0x486fc7:JSON[_0xe679('0x5')](_0x486fc7);}}else{_0x2f50c0[_0x323254]=_[_0xe679('0x15')](_0x486fc7)?_0x486fc7:JSON[_0xe679('0x5')](_0x486fc7);}}catch(_0x4a4e99){_0x2f50c0[_0x323254]=_0x486fc7[_0xe679('0x7')](',');}});}return _0x2f50c0;};exports[_0xe679('0x16')]=function(_0x1fe5ad){_0x1fe5ad=parseInt(_0x1fe5ad,0xa);if(!_0x1fe5ad||_0x1fe5ad<0x0){_0x1fe5ad=LIMIT_VALUE;}return _0x1fe5ad;};exports[_0xe679('0x17')]=function(_0xe3ddd2){_0xe3ddd2=parseInt(_0xe3ddd2,0xa);if(!_0xe3ddd2||_0xe3ddd2<0x0){_0xe3ddd2=0x0;}return _0xe3ddd2;};exports[_0xe679('0x18')]=function(_0x155ca7){var _0xcfe65f,_0x575b75=null;if(_0x155ca7){_0xcfe65f=_0x155ca7[_0xe679('0x7')](',');_0x575b75=_[_0xe679('0x19')](_0xcfe65f,function(_0x47cf07){if(_0x47cf07[_0xe679('0x1a')]('-')===0x0){return[_0x47cf07===_0xe679('0x1b')?sequelize[_0xe679('0x1c')](sequelize[_0xe679('0x1d')]('priority'),'unsigned'):_0x47cf07[_0xe679('0x1e')](0x1),_0xe679('0x1f')];}else{return[_0x47cf07===_0xe679('0x1b')?sequelize[_0xe679('0x1c')](sequelize[_0xe679('0x1d')](_0xe679('0x1b')),'unsigned'):_0x47cf07,_0xe679('0x20')];}});}return _0x575b75;};exports[_0xe679('0x21')]=function(_0x1f0e9d,_0x6883be){if(_[_0xe679('0x9')](_0x1f0e9d)){return _0x1f0e9d;}if(_[_0xe679('0x15')](_0x1f0e9d)){for(var _0x32106e=0x0;_0x32106e<_0x1f0e9d[_0xe679('0x22')];_0x32106e+=0x1){_0x1f0e9d[_0x32106e]=this[_0xe679('0x21')](_0x1f0e9d[_0x32106e],_0x6883be);}return _0x1f0e9d;}if(!_['isObject'](_0x1f0e9d)){return _0x1f0e9d;}if(_[_0xe679('0x23')](_0x6883be)){_0x6883be=[_0x6883be];}if(!_[_0xe679('0x15')](_0x6883be)){return _0x1f0e9d;}for(var _0x471e94=0x0;_0x471e94<_0x6883be[_0xe679('0x22')];_0x471e94+=0x1){_[_0xe679('0x24')](_0x1f0e9d,_0x6883be[_0x471e94]);}for(var _0x4456bd in _0x1f0e9d){if(_0x1f0e9d['hasOwnProperty'](_0x4456bd)){_0x1f0e9d[_0x4456bd]=this[_0xe679('0x21')](_0x1f0e9d[_0x4456bd],_0x6883be);}}return _0x1f0e9d;};exports[_0xe679('0x25')]=function(_0x1cfbc2){return _0x1cfbc2[_0xe679('0x26')](RegExp('^[+]?[0-9]*$'))?!![]:![];};exports[_0xe679('0x27')]=function(_0x304ebe){return _0x304ebe['match'](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x321ffa){var _0x44aef4=[];_0x321ffa[_0xe679('0x7')](/[ ,]+/)[_0xe679('0x28')](function(_0x2a732f){_0x2a732f=_0x2a732f[_0xe679('0x29')](/([^:]")"+/g,'$1');_0x2a732f='+'+_0x2a732f+'*';if(_0x2a732f[_0xe679('0x4')]('@'))_0x2a732f='\x22'+_0x2a732f+'\x22';_0x44aef4['push'](_0x2a732f);});return _0x44aef4[_0xe679('0x2a')]('\x20');};exports[_0xe679('0x2b')]=function(_0x172a33,_0x5b7550,_0x4de9b3){var _0x53f04d={},_0x378e4b={};if(_0x5b7550[_0xe679('0x2c')][_0xe679('0x2d')]){_0x5b7550[_0xe679('0x2c')]['id']=_0x5b7550['query'][_0xe679('0x2d')];delete _0x5b7550[_0xe679('0x2c')][_0xe679('0x2d')];}_0x53f04d[_0xe679('0x2e')]=_['map'](_0x172a33,'name');_0x53f04d[_0xe679('0x2c')]=_['keys'](_0x5b7550['query']);_0x53f04d['filters']=_['intersection'](_0x53f04d[_0xe679('0x2e')],_0x53f04d[_0xe679('0x2c')]);_0x378e4b[_0xe679('0x2f')]=_['intersection'](_0x53f04d[_0xe679('0x2e')],this[_0xe679('0x6')](_0x5b7550[_0xe679('0x2c')]['fields']));_0x378e4b[_0xe679('0x2f')]=_0x378e4b['attributes'][_0xe679('0x22')]?_0x378e4b[_0xe679('0x2f')]:_0x53f04d[_0xe679('0x2e')];if(!_0x5b7550[_0xe679('0x2c')][_0xe679('0x30')](_0xe679('0x31'))){_0x378e4b[_0xe679('0x16')]=this['limit'](_0x5b7550[_0xe679('0x2c')][_0xe679('0x16')]);_0x378e4b[_0xe679('0x17')]=this[_0xe679('0x17')](_0x5b7550[_0xe679('0x2c')]['offset']);}_0x378e4b[_0xe679('0x32')]=this['sort'](_0x5b7550[_0xe679('0x2c')][_0xe679('0x18')]);_0x378e4b['where']=this['filters'](_[_0xe679('0x33')](_0x5b7550[_0xe679('0x2c')],_0x53f04d[_0xe679('0x8')]),_0x172a33);if(_0x5b7550[_0xe679('0x2c')][_0xe679('0x34')]){_0x378e4b[_0xe679('0x35')]=_[_0xe679('0x36')](_0x378e4b[_0xe679('0x35')],{'$or':_[_0xe679('0x19')](_0x172a33,function(_0x429973){if(_0x429973[_0xe679('0xc')]!==_0xe679('0x37')){if(_0x4de9b3){return sequelize[_0xe679('0x35')](sequelize['fn']('lower',sequelize[_0xe679('0x1d')](_0x429973[_0xe679('0x13')])),{'$like':sequelize['fn'](_0xe679('0x38'),'%'+_0x5b7550[_0xe679('0x2c')][_0xe679('0x34')]+'%')});}else{var _0x3b63a3={};_0x3b63a3[_0x429973['name']]={'$like':'%'+_0x5b7550['query'][_0xe679('0x34')]+'%'};return _0x3b63a3;}}})});}_0x378e4b=_[_0xe679('0x36')]({},_0x378e4b,_0x5b7550[_0xe679('0x39')]);return _0x378e4b;};
\ No newline at end of file
+var _0xe2ad=['isObject','isString','unset','hasOwnProperty','match','forEach','replace','join','getOptions','query','$id','model','map','keys','intersection','attributes','nolimit','limit','order','where','pick','filter','merge','lower','lodash','includes','fields','filters','isEmpty','forOwn','find','type','isPlainObject','parse','format','YYYY-MM-DD','utc','$lte','subtract','name','isArray','split','offset','sort','indexOf','priority','cast','col','unsigned','substr','DESC','ASC','omit','length'];(function(_0x8c7a26,_0x3dc4a6){var _0xddbbd6=function(_0x2f4433){while(--_0x2f4433){_0x8c7a26['push'](_0x8c7a26['shift']());}};_0xddbbd6(++_0x3dc4a6);}(_0xe2ad,0xba));var _0xde2a=function(_0x30e618,_0x8b2127){_0x30e618=_0x30e618-0x0;var _0x2d5393=_0xe2ad[_0x30e618];return _0x2d5393;};'use strict';var _=require(_0xde2a('0x0'));var sequelize=require('sequelize');var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x38a0cd){var _0x251cb2=['ne'];try{var _0x33ab3b=JSON['parse'](_0x38a0cd);var _0x33a453=Object['keys'](_0x33ab3b)[0x0];return _0x251cb2[_0xde2a('0x1')](_0x33a453);}catch(_0x11921c){return![];}}function getOperatorValue(_0x3718d9){var _0x228b2a=JSON['parse'](_0x3718d9);var _0x575748=Object['keys'](_0x228b2a)[0x0];var _0x445878=_0x228b2a[_0x575748];return{['$'+_0x575748]:_0x445878};}exports[_0xde2a('0x2')]=function(_0x52a490){var _0x2bb314=null;if(_0x52a490){_0x2bb314=_0x52a490['split'](',');}return _0x2bb314;};exports[_0xde2a('0x3')]=function(_0x3093c4,_0x7e0493){var _0x22de93={};if(!_[_0xde2a('0x4')](_0x3093c4)){_[_0xde2a('0x5')](_0x3093c4,function(_0x159c6d,_0xacf219){try{if(_0x7e0493){var _0x198029=_[_0xde2a('0x6')](_0x7e0493,{'name':_0xacf219})||{};if(hasSequelizeOperator(_0x159c6d)){_0x22de93[_0xacf219]=getOperatorValue(_0x159c6d);}else if(_0x198029[_0xde2a('0x7')]==='DATE'&&_[_0xde2a('0x8')](_0x159c6d)){var _0x5e83c9=JSON[_0xde2a('0x9')](_0x159c6d);var _0x24d154={'$gte':moment(moment(_0x5e83c9['$gte'])[_0xde2a('0xa')](_0xde2a('0xb')))[_0xde2a('0xc')]()['format'](),'$lte':moment(moment(_0x5e83c9[_0xde2a('0xd')])[_0xde2a('0xa')](_0xde2a('0xb')))[_0xde2a('0xc')]()[_0xde2a('0xe')](0x1,'s')[_0xde2a('0xa')]()};_0x22de93[_0xacf219]=_0x24d154;}else if(_0x198029[_0xde2a('0xf')]==='uniqueid'){_0x22de93[_0xacf219]=_0x159c6d;}else{_0x22de93[_0xacf219]=_['isArray'](_0x159c6d)?_0x159c6d:JSON[_0xde2a('0x9')](_0x159c6d);}}else{_0x22de93[_0xacf219]=_[_0xde2a('0x10')](_0x159c6d)?_0x159c6d:JSON[_0xde2a('0x9')](_0x159c6d);}}catch(_0x21ebbf){_0x22de93[_0xacf219]=_0x159c6d[_0xde2a('0x11')](',');}});}return _0x22de93;};exports['limit']=function(_0x26f5a8){_0x26f5a8=parseInt(_0x26f5a8,0xa);if(!_0x26f5a8||_0x26f5a8<0x0){_0x26f5a8=LIMIT_VALUE;}return _0x26f5a8;};exports[_0xde2a('0x12')]=function(_0x11d3be){_0x11d3be=parseInt(_0x11d3be,0xa);if(!_0x11d3be||_0x11d3be<0x0){_0x11d3be=0x0;}return _0x11d3be;};exports[_0xde2a('0x13')]=function(_0x1c3a07){var _0x2879f7,_0x5be6e9=null;if(_0x1c3a07){_0x2879f7=_0x1c3a07[_0xde2a('0x11')](',');_0x5be6e9=_['map'](_0x2879f7,function(_0x43114f){if(_0x43114f[_0xde2a('0x14')]('-')===0x0){return[_0x43114f===_0xde2a('0x15')?sequelize[_0xde2a('0x16')](sequelize[_0xde2a('0x17')](_0xde2a('0x15')),_0xde2a('0x18')):_0x43114f[_0xde2a('0x19')](0x1),_0xde2a('0x1a')];}else{return[_0x43114f===_0xde2a('0x15')?sequelize[_0xde2a('0x16')](sequelize[_0xde2a('0x17')]('priority'),'unsigned'):_0x43114f,_0xde2a('0x1b')];}});}return _0x5be6e9;};exports[_0xde2a('0x1c')]=function(_0x3df752,_0x40f142){if(_[_0xde2a('0x4')](_0x3df752)){return _0x3df752;}if(_['isArray'](_0x3df752)){for(var _0x58cd0f=0x0;_0x58cd0f<_0x3df752[_0xde2a('0x1d')];_0x58cd0f+=0x1){_0x3df752[_0x58cd0f]=this[_0xde2a('0x1c')](_0x3df752[_0x58cd0f],_0x40f142);}return _0x3df752;}if(!_[_0xde2a('0x1e')](_0x3df752)){return _0x3df752;}if(_[_0xde2a('0x1f')](_0x40f142)){_0x40f142=[_0x40f142];}if(!_[_0xde2a('0x10')](_0x40f142)){return _0x3df752;}for(var _0x37d49f=0x0;_0x37d49f<_0x40f142[_0xde2a('0x1d')];_0x37d49f+=0x1){_[_0xde2a('0x20')](_0x3df752,_0x40f142[_0x37d49f]);}for(var _0x578f0f in _0x3df752){if(_0x3df752[_0xde2a('0x21')](_0x578f0f)){_0x3df752[_0x578f0f]=this[_0xde2a('0x1c')](_0x3df752[_0x578f0f],_0x40f142);}}return _0x3df752;};exports['isNumeric']=function(_0x54bd33){return _0x54bd33['match'](RegExp('^[+]?[0-9]*$'))?!![]:![];};exports['isEmail']=function(_0x2d2801){return _0x2d2801[_0xde2a('0x22')](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x4318b7){var _0x271b0e=[];_0x4318b7[_0xde2a('0x11')](/[ ,]+/)[_0xde2a('0x23')](function(_0x3b87cb){_0x3b87cb=_0x3b87cb[_0xde2a('0x24')](/([^:]")"+/g,'$1');_0x3b87cb='+'+_0x3b87cb+'*';if(_0x3b87cb['includes']('@'))_0x3b87cb='\x22'+_0x3b87cb+'\x22';_0x271b0e['push'](_0x3b87cb);});return _0x271b0e[_0xde2a('0x25')]('\x20');};exports[_0xde2a('0x26')]=function(_0x3e0d91,_0x14fadc,_0x11f519){var _0x2ca022={},_0x408cbf={};if(_0x14fadc[_0xde2a('0x27')][_0xde2a('0x28')]){_0x14fadc[_0xde2a('0x27')]['id']=_0x14fadc[_0xde2a('0x27')][_0xde2a('0x28')];delete _0x14fadc['query']['$id'];}_0x2ca022[_0xde2a('0x29')]=_[_0xde2a('0x2a')](_0x3e0d91,_0xde2a('0xf'));_0x2ca022['query']=_[_0xde2a('0x2b')](_0x14fadc['query']);_0x2ca022[_0xde2a('0x3')]=_[_0xde2a('0x2c')](_0x2ca022[_0xde2a('0x29')],_0x2ca022[_0xde2a('0x27')]);_0x408cbf[_0xde2a('0x2d')]=_[_0xde2a('0x2c')](_0x2ca022[_0xde2a('0x29')],this[_0xde2a('0x2')](_0x14fadc['query'][_0xde2a('0x2')]));_0x408cbf[_0xde2a('0x2d')]=_0x408cbf[_0xde2a('0x2d')][_0xde2a('0x1d')]?_0x408cbf[_0xde2a('0x2d')]:_0x2ca022['model'];if(!_0x14fadc[_0xde2a('0x27')]['hasOwnProperty'](_0xde2a('0x2e'))){_0x408cbf[_0xde2a('0x2f')]=this[_0xde2a('0x2f')](_0x14fadc[_0xde2a('0x27')][_0xde2a('0x2f')]);_0x408cbf[_0xde2a('0x12')]=this[_0xde2a('0x12')](_0x14fadc[_0xde2a('0x27')][_0xde2a('0x12')]);}_0x408cbf[_0xde2a('0x30')]=this[_0xde2a('0x13')](_0x14fadc[_0xde2a('0x27')][_0xde2a('0x13')]);_0x408cbf[_0xde2a('0x31')]=this[_0xde2a('0x3')](_[_0xde2a('0x32')](_0x14fadc[_0xde2a('0x27')],_0x2ca022[_0xde2a('0x3')]),_0x3e0d91);if(_0x14fadc[_0xde2a('0x27')][_0xde2a('0x33')]){_0x408cbf[_0xde2a('0x31')]=_[_0xde2a('0x34')](_0x408cbf['where'],{'$or':_['map'](_0x3e0d91,function(_0x350150){if(_0x350150['type']!=='VIRTUAL'){if(_0x11f519){return sequelize[_0xde2a('0x31')](sequelize['fn'](_0xde2a('0x35'),sequelize[_0xde2a('0x17')](_0x350150[_0xde2a('0xf')])),{'$like':sequelize['fn']('lower','%'+_0x14fadc[_0xde2a('0x27')]['filter']+'%')});}else{var _0x477425={};_0x477425[_0x350150[_0xde2a('0xf')]]={'$like':'%'+_0x14fadc[_0xde2a('0x27')][_0xde2a('0x33')]+'%'};return _0x477425;}}})});}_0x408cbf=_[_0xde2a('0x34')]({},_0x408cbf,_0x14fadc['options']);return _0x408cbf;};
\ No newline at end of file
index 6a4c0e9..a0b2d7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf89=['env','production','set','appPath','test','root','client','use','json\x20replacer','views','engine','html','ejs','renderFile','view\x20engine','urlencoded','50mb','json','initialize','serve-favicon','method-override','errorhandler','cors','moment','./environment','../mysqldb','get'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xcf89,0x18d));var _0x9cf8=function(_0xe0ec3a,_0x849d10){_0xe0ec3a=_0xe0ec3a-0x0;var _0x15462b=_0xcf89[_0xe0ec3a];return _0x15462b;};'use strict';var express=require('express');var favicon=require(_0x9cf8('0x0'));var bodyParser=require('body-parser');var methodOverride=require(_0x9cf8('0x1'));var cookieParser=require('cookie-parser');var errorHandler=require(_0x9cf8('0x2'));var path=require('path');var passport=require('passport');var cors=require(_0x9cf8('0x3'));var moment=require(_0x9cf8('0x4'));var config=require(_0x9cf8('0x5'));var db=require(_0x9cf8('0x6'))['db'];exports['default']=function(_0x1c9a91){var _0x214553=_0x1c9a91[_0x9cf8('0x7')](_0x9cf8('0x8'));if(_0x214553===_0x9cf8('0x9')){_0x1c9a91[_0x9cf8('0xa')](_0x9cf8('0xb'),path['join'](config['root'],'public'));}if(_0x214553==='development'||_0x214553===_0x9cf8('0xc')){_0x1c9a91[_0x9cf8('0xa')](_0x9cf8('0xb'),path['join'](config[_0x9cf8('0xd')],_0x9cf8('0xe')));_0x1c9a91[_0x9cf8('0xf')](errorHandler());}_0x1c9a91[_0x9cf8('0xa')](_0x9cf8('0x10'),function(_0x284312,_0xd3ed6a){if(this[_0x284312]instanceof Date){_0xd3ed6a=this[_0x284312]['toISOString']()['split']('.')[0x0]+'Z';}return _0xd3ed6a;});_0x1c9a91[_0x9cf8('0xf')](express['static'](_0x1c9a91['get'](_0x9cf8('0xb'))));_0x1c9a91[_0x9cf8('0xa')](_0x9cf8('0x11'),config[_0x9cf8('0xd')]+'/server/views');_0x1c9a91[_0x9cf8('0x12')](_0x9cf8('0x13'),require(_0x9cf8('0x14'))[_0x9cf8('0x15')]);_0x1c9a91[_0x9cf8('0xa')](_0x9cf8('0x16'),_0x9cf8('0x13'));_0x1c9a91[_0x9cf8('0xf')](bodyParser[_0x9cf8('0x17')]({'limit':_0x9cf8('0x18'),'extended':!![]}));_0x1c9a91[_0x9cf8('0xf')](bodyParser[_0x9cf8('0x19')]({'limit':_0x9cf8('0x18')}));_0x1c9a91[_0x9cf8('0xf')](cors());_0x1c9a91['use'](methodOverride());_0x1c9a91[_0x9cf8('0xf')](cookieParser());_0x1c9a91[_0x9cf8('0xf')](passport[_0x9cf8('0x1a')]());};
\ No newline at end of file
+var _0xec44=['default','get','production','set','join','public','development','test','appPath','json\x20replacer','split','use','static','root','engine','html','ejs','view\x20engine','urlencoded','50mb','initialize','express','serve-favicon','body-parser','cookie-parser','errorhandler','path','passport','cors','moment','./environment','../mysqldb'];(function(_0x53a34c,_0x25cffd){var _0x3dda74=function(_0x559ccd){while(--_0x559ccd){_0x53a34c['push'](_0x53a34c['shift']());}};_0x3dda74(++_0x25cffd);}(_0xec44,0x135));var _0x4ec4=function(_0x5d30b4,_0x199248){_0x5d30b4=_0x5d30b4-0x0;var _0x1acfb8=_0xec44[_0x5d30b4];return _0x1acfb8;};'use strict';var express=require(_0x4ec4('0x0'));var favicon=require(_0x4ec4('0x1'));var bodyParser=require(_0x4ec4('0x2'));var methodOverride=require('method-override');var cookieParser=require(_0x4ec4('0x3'));var errorHandler=require(_0x4ec4('0x4'));var path=require(_0x4ec4('0x5'));var passport=require(_0x4ec4('0x6'));var cors=require(_0x4ec4('0x7'));var moment=require(_0x4ec4('0x8'));var config=require(_0x4ec4('0x9'));var db=require(_0x4ec4('0xa'))['db'];exports[_0x4ec4('0xb')]=function(_0x44fd52){var _0x30412f=_0x44fd52[_0x4ec4('0xc')]('env');if(_0x30412f===_0x4ec4('0xd')){_0x44fd52[_0x4ec4('0xe')]('appPath',path[_0x4ec4('0xf')](config['root'],_0x4ec4('0x10')));}if(_0x30412f===_0x4ec4('0x11')||_0x30412f===_0x4ec4('0x12')){_0x44fd52[_0x4ec4('0xe')](_0x4ec4('0x13'),path[_0x4ec4('0xf')](config['root'],'client'));_0x44fd52['use'](errorHandler());}_0x44fd52[_0x4ec4('0xe')](_0x4ec4('0x14'),function(_0x3be9ed,_0x1dcdab){if(this[_0x3be9ed]instanceof Date){_0x1dcdab=this[_0x3be9ed]['toISOString']()[_0x4ec4('0x15')]('.')[0x0]+'Z';}return _0x1dcdab;});_0x44fd52[_0x4ec4('0x16')](express[_0x4ec4('0x17')](_0x44fd52[_0x4ec4('0xc')](_0x4ec4('0x13'))));_0x44fd52[_0x4ec4('0xe')]('views',config[_0x4ec4('0x18')]+'/server/views');_0x44fd52[_0x4ec4('0x19')](_0x4ec4('0x1a'),require(_0x4ec4('0x1b'))['renderFile']);_0x44fd52[_0x4ec4('0xe')](_0x4ec4('0x1c'),_0x4ec4('0x1a'));_0x44fd52[_0x4ec4('0x16')](bodyParser[_0x4ec4('0x1d')]({'limit':'50mb','extended':!![]}));_0x44fd52[_0x4ec4('0x16')](bodyParser['json']({'limit':_0x4ec4('0x1e')}));_0x44fd52[_0x4ec4('0x16')](cors());_0x44fd52[_0x4ec4('0x16')](methodOverride());_0x44fd52[_0x4ec4('0x16')](cookieParser());_0x44fd52[_0x4ec4('0x16')](passport[_0x4ec4('0x1f')]());};
\ No newline at end of file
index fbce39d..1c8c359 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x273b=['hex','getUuid','platform','licenseToken','test','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','macAddress','ipAddress','substring','crypto','bimedia-machine-uuid','child_process','execSync','../environment','networkInterfaces','orderBy','keys','length','filter','family','IPv4','internal','mac','00:00:00:00:00:00','address','127.0.0.1','cpus','map','model','join','createHash','update','digest'];(function(_0x2c3255,_0x4e00ae){var _0x282aba=function(_0x5721d5){while(--_0x5721d5){_0x2c3255['push'](_0x2c3255['shift']());}};_0x282aba(++_0x4e00ae);}(_0x273b,0x110));var _0xb273=function(_0x517a7f,_0x5193e6){_0x517a7f=_0x517a7f-0x0;var _0x4aa25f=_0x273b[_0x517a7f];return _0x4aa25f;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0xb273('0x0'));var machine=require(_0xb273('0x1'));var exec=require(_0xb273('0x2'))[_0xb273('0x3')];var config=require(_0xb273('0x4'));function getInterfaces(){var _0x57b97e=[];var _0x12846c=os[_0xb273('0x5')]();var _0xb0f582=_[_0xb273('0x6')](_[_0xb273('0x7')](_0x12846c));for(var _0x4a60e3=0x0;_0x4a60e3<_0xb0f582[_0xb273('0x8')];_0x4a60e3++){var _0x2c4d05=_0x12846c[_0xb0f582[_0x4a60e3]][_0xb273('0x9')](function(_0x210a30){return _0x210a30[_0xb273('0xa')]===_0xb273('0xb')&&_0x210a30[_0xb273('0xc')]===![];});_0x57b97e=_0x57b97e['concat'](_0x2c4d05);}return _0x57b97e;}function getFirstInterface(){var _0x5d48f7=_['head'](getInterfaces());return{'macAddress':_0x5d48f7&&_0x5d48f7[_0xb273('0xd')]?_0x5d48f7[_0xb273('0xd')]:_0xb273('0xe'),'ipAddress':_0x5d48f7&&_0x5d48f7[_0xb273('0xf')]?_0x5d48f7['address']:_0xb273('0x10')};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x2897a0=_[_0xb273('0x6')](os[_0xb273('0x11')]()[_0xb273('0x12')](function(_0x163935){return _0x163935[_0xb273('0x13')];}))[_0xb273('0x14')](':');return crypto[_0xb273('0x15')]('md5')[_0xb273('0x16')](_0x2897a0)[_0xb273('0x17')](_0xb273('0x18'));}exports[_0xb273('0x19')]=function(){var _0x1851a7=os[_0xb273('0x1a')]();var _0x2b0323=/[0-9a-f-]{36}/;if(config[_0xb273('0x1b')]&&_0x2b0323[_0xb273('0x1c')](config[_0xb273('0x1b')])){return config[_0xb273('0x1b')];}else if(_0x1851a7===_0xb273('0x1d')){return exec(_0xb273('0x1e'),{'encoding':_0xb273('0x1f')})[_0xb273('0x20')]('\x0d\x0a','');}else{var _0x4d1ee8=getFirstInterface();var _0x4b28cb=getCPUhash();var _0x242779=_0x4b28cb+'|'+os[_0xb273('0x21')]()+'|'+_0x4d1ee8[_0xb273('0x22')]+'|'+_0x4d1ee8[_0xb273('0x23')];var _0xe65ed0=crypto[_0xb273('0x15')]('md5')[_0xb273('0x16')](_0x242779)[_0xb273('0x17')](_0xb273('0x18'));return _0xe65ed0[_0xb273('0x24')](0x0,0x8)+'-'+_0xe65ed0[_0xb273('0x24')](0x8,0xc)+'-'+_0xe65ed0[_0xb273('0x24')](0xc,0x10)+'-'+_0xe65ed0[_0xb273('0x24')](0x10,0x14)+'-'+_0xe65ed0['substring'](0x14);}};
\ No newline at end of file
+var _0x79bd=['substring','lodash','bimedia-machine-uuid','../environment','networkInterfaces','orderBy','filter','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','getFirstInterface','map','model','join','createHash','digest','getUuid','platform','licenseToken','win32','dmidecode\x20--string\x20system-uuid','replace','hostname','macAddress','ipAddress','md5','update','hex'];(function(_0x3a99f4,_0x2a81c1){var _0xea0b42=function(_0x41f533){while(--_0x41f533){_0x3a99f4['push'](_0x3a99f4['shift']());}};_0xea0b42(++_0x2a81c1);}(_0x79bd,0x161));var _0xd79b=function(_0xe22030,_0x1e4ce4){_0xe22030=_0xe22030-0x0;var _0x5ebe09=_0x79bd[_0xe22030];return _0x5ebe09;};'use strict';var _=require(_0xd79b('0x0'));var os=require('os');var crypto=require('crypto');var machine=require(_0xd79b('0x1'));var exec=require('child_process')['execSync'];var config=require(_0xd79b('0x2'));function getInterfaces(){var _0x15f5b0=[];var _0x5c6bb2=os[_0xd79b('0x3')]();var _0x4e3dbe=_[_0xd79b('0x4')](_['keys'](_0x5c6bb2));for(var _0x58bc72=0x0;_0x58bc72<_0x4e3dbe['length'];_0x58bc72++){var _0x12c143=_0x5c6bb2[_0x4e3dbe[_0x58bc72]][_0xd79b('0x5')](function(_0xde7d67){return _0xde7d67['family']===_0xd79b('0x6')&&_0xde7d67[_0xd79b('0x7')]===![];});_0x15f5b0=_0x15f5b0[_0xd79b('0x8')](_0x12c143);}return _0x15f5b0;}function getFirstInterface(){var _0x3c84b7=_[_0xd79b('0x9')](getInterfaces());return{'macAddress':_0x3c84b7&&_0x3c84b7[_0xd79b('0xa')]?_0x3c84b7[_0xd79b('0xa')]:_0xd79b('0xb'),'ipAddress':_0x3c84b7&&_0x3c84b7[_0xd79b('0xc')]?_0x3c84b7[_0xd79b('0xc')]:'127.0.0.1'};}exports[_0xd79b('0xd')]=getFirstInterface;function getCPUhash(){var _0x3582ad=_[_0xd79b('0x4')](os['cpus']()[_0xd79b('0xe')](function(_0x3c0586){return _0x3c0586[_0xd79b('0xf')];}))[_0xd79b('0x10')](':');return crypto[_0xd79b('0x11')]('md5')['update'](_0x3582ad)[_0xd79b('0x12')]('hex');}exports[_0xd79b('0x13')]=function(){var _0x5af689=os[_0xd79b('0x14')]();var _0x48e3e4=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x48e3e4['test'](config['licenseToken'])){return config[_0xd79b('0x15')];}else if(_0x5af689===_0xd79b('0x16')){return exec(_0xd79b('0x17'),{'encoding':'utf8'})[_0xd79b('0x18')]('\x0d\x0a','');}else{var _0x35c33c=getFirstInterface();var _0x5dbfad=getCPUhash();var _0xc5df7=_0x5dbfad+'|'+os[_0xd79b('0x19')]()+'|'+_0x35c33c[_0xd79b('0x1a')]+'|'+_0x35c33c[_0xd79b('0x1b')];var _0x5a1e07=crypto[_0xd79b('0x11')](_0xd79b('0x1c'))[_0xd79b('0x1d')](_0xc5df7)[_0xd79b('0x12')](_0xd79b('0x1e'));return _0x5a1e07['substring'](0x0,0x8)+'-'+_0x5a1e07[_0xd79b('0x1f')](0x8,0xc)+'-'+_0x5a1e07['substring'](0xc,0x10)+'-'+_0x5a1e07[_0xd79b('0x1f')](0x10,0x14)+'-'+_0x5a1e07['substring'](0x14);}};
\ No newline at end of file
index a2dc101..f272cb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3532=['findOrCreate','error','message','default','util','moment','request-promise','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','../logger','license','https://www.xcallymotion.com','%s/api/servers/%s/check?version=%s','exports','format','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','get','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','update','Disabled','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','encryptString','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','YYYY-MM-DD\x20HH:mm','finally','getUuid','License'];(function(_0x58cc02,_0x4c161b){var _0x53d407=function(_0x4d93ce){while(--_0x4d93ce){_0x58cc02['push'](_0x58cc02['shift']());}};_0x53d407(++_0x4c161b);}(_0x3532,0x1d2));var _0x2353=function(_0x2ca715,_0xd65037){_0x2ca715=_0x2ca715-0x0;var _0x437753=_0x3532[_0x2ca715];return _0x437753;};'use strict';var util=require(_0x2353('0x0'));var moment=require(_0x2353('0x1'));var rp=require(_0x2353('0x2'));var BPromise=require(_0x2353('0x3'));var pkginfo=require(_0x2353('0x4'))(module,_0x2353('0x5'));var db=require(_0x2353('0x6'))['db'];var encryptor=require(_0x2353('0x7'));var hardware=require('./hardware');var logger=require(_0x2353('0x8'))(_0x2353('0x9'));var HOST=_0x2353('0xa');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x3a987f){return new BPromise(function(_0x1d6b0b,_0x18fd0b){var _0x1a9314=util['format'](_0x2353('0xb'),HOST,_0x3a987f,module[_0x2353('0xc')][_0x2353('0x5')]);if(oldToken){_0x1a9314=util[_0x2353('0xd')](_0x2353('0xe'),HOST,_0x3a987f,module[_0x2353('0xc')][_0x2353('0x5')],oldToken);}var _0x22844c={'uri':_0x1a9314,'method':_0x2353('0xf'),'timeout':0xea60,'json':!![]};return rp(_0x22844c)[_0x2353('0x10')](function(_0x5e513a){_0x1d6b0b(_0x5e513a);})[_0x2353('0x11')](function(_0x47e05e){_0x18fd0b(_0x47e05e);});});}function manageLicense(_0x55fef0,_0x781bf6){var _0x97408c=_0x781bf6[_0x2353('0x12')]({'plain':!![]});if(!isOldTokenSent&&_0x97408c[_0x2353('0x13')]!==_0x55fef0&&!_0x97408c[_0x2353('0x14')]){oldToken=_0x97408c[_0x2353('0x13')];}httpRequest(_0x55fef0)[_0x2353('0x10')](function(_0x5d11e2){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x5d11e2[_0x2353('0x15')]){isOldTokenSent=![];if(!_0x97408c['license']&&_0x97408c[_0x2353('0x9')]!=_0x5d11e2[_0x2353('0x9')]||_0x97408c[_0x2353('0x9')]&&_0x97408c[_0x2353('0x14')]){logger[_0x2353('0x16')](_0x2353('0x17'));}if(_0x97408c['license']&&!_0x97408c[_0x2353('0x14')]&&_0x97408c['license']!=_0x5d11e2[_0x2353('0x9')]){logger[_0x2353('0x16')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x97408c[_0x2353('0x9')]&&!_0x97408c[_0x2353('0x14')]&&_0x97408c[_0x2353('0x9')]==_0x5d11e2[_0x2353('0x9')]){return _0x781bf6;}return _0x781bf6[_0x2353('0x18')]({'data1':_0x55fef0,'data2':null,'license':_0x5d11e2[_0x2353('0x9')]});}else{if(_0x5d11e2['license']||_0x97408c[_0x2353('0x9')]){if(!_0x97408c[_0x2353('0x14')]){if(_0x97408c[_0x2353('0x13')]==_0x55fef0){GRAY_PERIOD_REASON=_0x2353('0x19');logger['info']('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON=_0x2353('0x1a');logger[_0x2353('0x16')](_0x2353('0x1b'),_0x97408c['data1'],_0x55fef0);}logger[_0x2353('0x16')](_0x2353('0x1c'),GRAY_PERIOD_REASON['toUpperCase'](),moment()[_0x2353('0xd')]('YYYY-MM-DD\x20HH:mm'));return _0x781bf6['update']({'data2':encryptor[_0x2353('0x1d')](moment()[_0x2353('0xd')]('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()[_0x2353('0x1e')](encryptor[_0x2353('0x1f')](_0x97408c[_0x2353('0x14')]),_0x2353('0x20'))>DAYS){logger[_0x2353('0x16')](_0x2353('0x21'),moment()[_0x2353('0xd')](_0x2353('0x22')));isOldTokenSent=![];return _0x781bf6['update']({'data1':_0x55fef0,'data2':null,'license':null});}}}else{if(_0x97408c['data1']!=_0x55fef0){logger['info'](_0x2353('0x1b'),_0x97408c[_0x2353('0x13')],_0x55fef0);return _0x781bf6[_0x2353('0x18')]({'data1':_0x55fef0,'data2':null,'license':null});}}}return _0x781bf6;})['then'](function(_0x776805){_0x781bf6=_0x776805;})[_0x2353('0x11')](function(_0x5d3847){logger['error'](_0x5d3847['message']);})[_0x2353('0x23')](function(){setTimeout(function(){manageLicense(hardware[_0x2353('0x24')](),_0x781bf6);},TIME);});}function defaultLicense(){var _0x4335b3=hardware[_0x2353('0x24')]();if(_0x4335b3){return db[_0x2353('0x25')][_0x2353('0x26')]({'where':{'id':0x1},'defaults':{'data1':_0x4335b3}})['spread'](function(_0x224974,_0x5f2aac){logger[_0x2353('0x16')]('SERVICE\x20LICENSE\x20STARTED\x20%s',_0x4335b3);manageLicense(_0x4335b3,_0x224974);})[_0x2353('0x11')](function(_0x101287){logger[_0x2353('0x27')](_0x101287[_0x2353('0x28')]);});}}exports[_0x2353('0x29')]=defaultLicense;
\ No newline at end of file
+var _0x6611=['bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware','../logger','license','%s/api/servers/%s/check?version=%s','%s/api/servers/%s/check?version=%s&oldtoken=%s','exports','then','get','data1','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','format','YYYY-MM-DD\x20HH:mm','update','encryptString','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','catch','error','message','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','request-promise'];(function(_0x26f518,_0x5a6c2d){var _0x3666d=function(_0x38ef7f){while(--_0x38ef7f){_0x26f518['push'](_0x26f518['shift']());}};_0x3666d(++_0x5a6c2d);}(_0x6611,0x1e9));var _0x1661=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x6611[_0x19e35c];return _0x3e1fe8;};'use strict';var util=require(_0x1661('0x0'));var moment=require(_0x1661('0x1'));var rp=require(_0x1661('0x2'));var BPromise=require(_0x1661('0x3'));var pkginfo=require(_0x1661('0x4'))(module,_0x1661('0x5'));var db=require(_0x1661('0x6'))['db'];var encryptor=require(_0x1661('0x7'));var hardware=require(_0x1661('0x8'));var logger=require(_0x1661('0x9'))(_0x1661('0xa'));var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x5edd02){return new BPromise(function(_0xd6a6c4,_0x396344){var _0xb9c66f=util['format'](_0x1661('0xb'),HOST,_0x5edd02,module['exports'][_0x1661('0x5')]);if(oldToken){_0xb9c66f=util['format'](_0x1661('0xc'),HOST,_0x5edd02,module[_0x1661('0xd')]['version'],oldToken);}var _0x363a9f={'uri':_0xb9c66f,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x363a9f)[_0x1661('0xe')](function(_0x1b308c){_0xd6a6c4(_0x1b308c);})['catch'](function(_0x1a4b61){_0x396344(_0x1a4b61);});});}function manageLicense(_0x42b280,_0x134ecb){var _0x267614=_0x134ecb[_0x1661('0xf')]({'plain':!![]});if(!isOldTokenSent&&_0x267614[_0x1661('0x10')]!==_0x42b280&&!_0x267614[_0x1661('0x11')]){oldToken=_0x267614[_0x1661('0x10')];}httpRequest(_0x42b280)['then'](function(_0x1223ba){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x1223ba['active']){isOldTokenSent=![];if(!_0x267614[_0x1661('0xa')]&&_0x267614[_0x1661('0xa')]!=_0x1223ba[_0x1661('0xa')]||_0x267614['license']&&_0x267614[_0x1661('0x11')]){logger[_0x1661('0x12')](_0x1661('0x13'));}if(_0x267614[_0x1661('0xa')]&&!_0x267614['data2']&&_0x267614[_0x1661('0xa')]!=_0x1223ba[_0x1661('0xa')]){logger[_0x1661('0x12')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x267614[_0x1661('0xa')]&&!_0x267614[_0x1661('0x11')]&&_0x267614['license']==_0x1223ba[_0x1661('0xa')]){return _0x134ecb;}return _0x134ecb['update']({'data1':_0x42b280,'data2':null,'license':_0x1223ba[_0x1661('0xa')]});}else{if(_0x1223ba['license']||_0x267614[_0x1661('0xa')]){if(!_0x267614['data2']){if(_0x267614[_0x1661('0x10')]==_0x42b280){GRAY_PERIOD_REASON='Disabled';logger['info'](_0x1661('0x14'));}else{GRAY_PERIOD_REASON=_0x1661('0x15');logger['info']('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x267614[_0x1661('0x10')],_0x42b280);}logger[_0x1661('0x12')](_0x1661('0x16'),GRAY_PERIOD_REASON['toUpperCase'](),moment()[_0x1661('0x17')](_0x1661('0x18')));return _0x134ecb[_0x1661('0x19')]({'data2':encryptor[_0x1661('0x1a')](moment()['format'](_0x1661('0x18')))});}else{if(moment()[_0x1661('0x1b')](encryptor[_0x1661('0x1c')](_0x267614[_0x1661('0x11')]),_0x1661('0x1d'))>DAYS){logger['info'](_0x1661('0x1e'),moment()[_0x1661('0x17')](_0x1661('0x18')));isOldTokenSent=![];return _0x134ecb[_0x1661('0x19')]({'data1':_0x42b280,'data2':null,'license':null});}}}else{if(_0x267614[_0x1661('0x10')]!=_0x42b280){logger[_0x1661('0x12')](_0x1661('0x1f'),_0x267614['data1'],_0x42b280);return _0x134ecb[_0x1661('0x19')]({'data1':_0x42b280,'data2':null,'license':null});}}}return _0x134ecb;})[_0x1661('0xe')](function(_0x2be36b){_0x134ecb=_0x2be36b;})[_0x1661('0x20')](function(_0xd1f871){logger[_0x1661('0x21')](_0xd1f871[_0x1661('0x22')]);})['finally'](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x134ecb);},TIME);});}function defaultLicense(){var _0x38dc43=hardware[_0x1661('0x23')]();if(_0x38dc43){return db[_0x1661('0x24')][_0x1661('0x25')]({'where':{'id':0x1},'defaults':{'data1':_0x38dc43}})[_0x1661('0x26')](function(_0x340425,_0x1e6898){logger['info'](_0x1661('0x27'),_0x38dc43);manageLicense(_0x38dc43,_0x340425);})[_0x1661('0x20')](function(_0x483afe){logger[_0x1661('0x21')](_0x483afe[_0x1661('0x22')]);});}}exports[_0x1661('0x28')]=defaultLicense;
\ No newline at end of file
index e0c040a..e7c7b14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x253b=['message','role','COUNT','sequelize','col','count','admin','telephone','users','telephones','forEach','user','pick','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','lodash','moment','./hardware','../../components/encryptor','../../mysqldb','Demo\x20license','getUuid','2027-01-01T00:00:00.000Z','Breaking\x20license','defaults','then','catch','uuid','license','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','decryptString','format','parse','demo','machineUuid','gray','deadline','grayReason','changed','data1'];(function(_0xddb482,_0x4f1fe5){var _0x1b9ccf=function(_0x281363){while(--_0x281363){_0xddb482['push'](_0xddb482['shift']());}};_0x1b9ccf(++_0x4f1fe5);}(_0x253b,0x167));var _0xb253=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x253b[_0x20a584];return _0x4b41a8;};'use strict';var util=require('util');var _=require(_0xb253('0x0'));var moment=require(_0xb253('0x1'));var BPromise=require('bluebird');var hardware=require(_0xb253('0x2'));var encryptor=require(_0xb253('0x3'));var db=require(_0xb253('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':_0xb253('0x5'),'machineUuid':hardware[_0xb253('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xb253('0x7'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xb253('0x8'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x3f5365){return new BPromise(function(_0x1d9138,_0x3b59e3){return db['License']['find'](_[_0xb253('0x9')](_0x3f5365,{'raw':!![],'where':{'id':0x1}}))[_0xb253('0xa')](function(_0x235ef6){return checkLicense(_0x235ef6,null);})[_0xb253('0xa')](function(_0x29a8f8){_0x1d9138(_0x29a8f8);return;})[_0xb253('0xb')](function(_0x4d3e2e){_0x3b59e3(_0x4d3e2e);});});}function checkLicense(_0x15adb2,_0x58bbd7){if(!_0x15adb2){demoLicense[_0xb253('0xc')]=_0x15adb2['data1'];return demoLicense;}try{var _0x29d290=_0x58bbd7||_0x15adb2[_0xb253('0xd')];if(_[_0xb253('0xe')](_0x29d290)){throw new Error(_0xb253('0xf'));}var _0x4f707b=_0x15adb2['data1'];var _0x318dae=_0x15adb2[_0xb253('0x10')];var _0x1a6efe=_0x4f707b[_0xb253('0x11')]('-')[0x4];var _0x2227ea=_0x4f707b[_0xb253('0x11')]('-')[0x0];var _0x521ce7=encryptor[_0xb253('0x12')](_0x29d290,util[_0xb253('0x13')]('%s:%s:%s',_0x1a6efe,_0x4f707b,_0x2227ea));var _0x42aea6=JSON[_0xb253('0x14')](_0x521ce7);_0x42aea6[_0xb253('0x15')]=![];_0x42aea6[_0xb253('0xc')]=_0x4f707b;_0x42aea6[_0xb253('0x16')]=hardware[_0xb253('0x6')]();if(_0x318dae){var _0x22fe6d=encryptor[_0xb253('0x12')](_0x318dae);_0x42aea6[_0xb253('0x17')]=_0x22fe6d;_0x42aea6[_0xb253('0x18')]=moment(_0x22fe6d)['add'](0x7,'days')[_0xb253('0x13')]();_0x42aea6[_0xb253('0x19')]=_0x42aea6[_0xb253('0xc')]!=_0x42aea6[_0xb253('0x16')]?_0xb253('0x1a'):'disabled';}return _0x42aea6;}catch(_0x2c8f31){breakingLicense[_0xb253('0xc')]=_0x15adb2[_0xb253('0x1b')];breakingLicense[_0xb253('0x1c')]=_0x2c8f31['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0xcaf84,_0x584c14){getLicense()[_0xb253('0xa')](function(_0x4f6019){return db['User']['findAll']({'attributes':[_0xb253('0x1d'),[db['sequelize']['fn'](_0xb253('0x1e'),db[_0xb253('0x1f')][_0xb253('0x20')](_0xb253('0x1d'))),_0xb253('0x21')]],'group':_0xb253('0x1d'),'where':{'role':{'$or':[_0xb253('0x22'),'user',_0xb253('0x23')]}},'raw':!![]})[_0xb253('0xa')](function(_0x57ba8a){var _0x10e4ce={'user':_0x4f6019[_0xb253('0x24')]||0x0,'telephone':_0x4f6019[_0xb253('0x25')]||0x0};_0x57ba8a[_0xb253('0x26')](function(_0x40e1d9){var _0x5291c4=_0x40e1d9['role']===_0xb253('0x22')?_0xb253('0x27'):_0x40e1d9['role'];_0x10e4ce[_0x5291c4]-=_0x40e1d9[_0xb253('0x21')];if(_0x10e4ce[_0x5291c4]<0x0)_0x10e4ce[_0x5291c4]=0x0;});_0xcaf84(_0x10e4ce);return;});})[_0xb253('0xb')](function(_0x538123){_0x584c14(_0x538123);});});}function checkUserLimits(_0x3873df){return new BPromise(function(_0x1876c5,_0x17a99c){getLimits()[_0xb253('0xa')](function(_0x4c84d2){var _0x1b9bc1=_[_0xb253('0x28')](_['countBy'](_0x3873df,'role'),[_0xb253('0x22'),_0xb253('0x27'),_0xb253('0x23')]);var _0x19cc5c=(_0x1b9bc1[_0xb253('0x22')]||0x0)+(_0x1b9bc1[_0xb253('0x27')]||0x0);var _0x109812=_0x1b9bc1[_0xb253('0x23')]||0x0;if(_0x19cc5c>_0x4c84d2['user'])return _0x17a99c(_0xb253('0x29'));if(_0x109812>_0x4c84d2[_0xb253('0x23')])return _0x17a99c(_0xb253('0x2a'));return _0x1876c5();})[_0xb253('0xb')](function(_0x2a44fa){_0x17a99c(_0x2a44fa);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x80a3=['getUuid','Breaking\x20license','License','find','defaults','then','catch','data1','data2','split','decryptString','format','%s:%s:%s','parse','demo','uuid','gray','deadline','add','days','grayReason','disabled','message','User','findAll','role','sequelize','COUNT','user','telephone','users','telephones','forEach','admin','count','pick','countBy','License\x20limit\x20reached\x20for\x20telephones','exports','lodash','moment','bluebird','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x80a3,0x162));var _0x380a=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0x80a3[_0x2b5eae];return _0x5f3ac9;};'use strict';var util=require('util');var _=require(_0x380a('0x0'));var moment=require(_0x380a('0x1'));var BPromise=require(_0x380a('0x2'));var hardware=require('./hardware');var encryptor=require(_0x380a('0x3'));var db=require(_0x380a('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x380a('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware[_0x380a('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x380a('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x380a('0x7'),'machineUuid':hardware[_0x380a('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x1a0d90){return new BPromise(function(_0x57a4d2,_0x4f98de){return db[_0x380a('0x8')][_0x380a('0x9')](_[_0x380a('0xa')](_0x1a0d90,{'raw':!![],'where':{'id':0x1}}))[_0x380a('0xb')](function(_0x25258d){return checkLicense(_0x25258d,null);})[_0x380a('0xb')](function(_0x4a27da){_0x57a4d2(_0x4a27da);return;})[_0x380a('0xc')](function(_0xebd4ea){_0x4f98de(_0xebd4ea);});});}function checkLicense(_0x562ba2,_0x5bfbf1){if(!_0x562ba2){demoLicense['uuid']=_0x562ba2[_0x380a('0xd')];return demoLicense;}try{var _0x231b39=_0x5bfbf1||_0x562ba2['license'];if(_['isEmpty'](_0x231b39)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x39b880=_0x562ba2['data1'];var _0xd5d9ec=_0x562ba2[_0x380a('0xe')];var _0x1dbbf3=_0x39b880[_0x380a('0xf')]('-')[0x4];var _0x34f20c=_0x39b880[_0x380a('0xf')]('-')[0x0];var _0x10cf58=encryptor[_0x380a('0x10')](_0x231b39,util[_0x380a('0x11')](_0x380a('0x12'),_0x1dbbf3,_0x39b880,_0x34f20c));var _0x20a93a=JSON[_0x380a('0x13')](_0x10cf58);_0x20a93a[_0x380a('0x14')]=![];_0x20a93a[_0x380a('0x15')]=_0x39b880;_0x20a93a['machineUuid']=hardware['getUuid']();if(_0xd5d9ec){var _0x52a354=encryptor[_0x380a('0x10')](_0xd5d9ec);_0x20a93a[_0x380a('0x16')]=_0x52a354;_0x20a93a[_0x380a('0x17')]=moment(_0x52a354)[_0x380a('0x18')](0x7,_0x380a('0x19'))[_0x380a('0x11')]();_0x20a93a[_0x380a('0x1a')]=_0x20a93a['uuid']!=_0x20a93a['machineUuid']?'changed':_0x380a('0x1b');}return _0x20a93a;}catch(_0x25196a){breakingLicense[_0x380a('0x15')]=_0x562ba2[_0x380a('0xd')];breakingLicense[_0x380a('0x1c')]=_0x25196a[_0x380a('0x1c')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x5a2545,_0x133dfc){getLicense()['then'](function(_0x5e7192){return db[_0x380a('0x1d')][_0x380a('0x1e')]({'attributes':[_0x380a('0x1f'),[db[_0x380a('0x20')]['fn'](_0x380a('0x21'),db['sequelize']['col'](_0x380a('0x1f'))),'count']],'group':'role','where':{'role':{'$or':['admin',_0x380a('0x22'),_0x380a('0x23')]}},'raw':!![]})[_0x380a('0xb')](function(_0x38c068){var _0x251d05={'user':_0x5e7192[_0x380a('0x24')]||0x0,'telephone':_0x5e7192[_0x380a('0x25')]||0x0};_0x38c068[_0x380a('0x26')](function(_0x2f89dd){var _0x4a3df8=_0x2f89dd[_0x380a('0x1f')]===_0x380a('0x27')?_0x380a('0x22'):_0x2f89dd[_0x380a('0x1f')];_0x251d05[_0x4a3df8]-=_0x2f89dd[_0x380a('0x28')];if(_0x251d05[_0x4a3df8]<0x0)_0x251d05[_0x4a3df8]=0x0;});_0x5a2545(_0x251d05);return;});})[_0x380a('0xc')](function(_0x3776d6){_0x133dfc(_0x3776d6);});});}function checkUserLimits(_0x224d9b){return new BPromise(function(_0x202484,_0x23e8b7){getLimits()['then'](function(_0x2b0fac){var _0x56cb81=_[_0x380a('0x29')](_[_0x380a('0x2a')](_0x224d9b,'role'),[_0x380a('0x27'),_0x380a('0x22'),_0x380a('0x23')]);var _0x5d2919=(_0x56cb81[_0x380a('0x27')]||0x0)+(_0x56cb81[_0x380a('0x22')]||0x0);var _0x25e440=_0x56cb81['telephone']||0x0;if(_0x5d2919>_0x2b0fac[_0x380a('0x22')])return _0x23e8b7('License\x20limit\x20reached\x20for\x20users');if(_0x25e440>_0x2b0fac[_0x380a('0x23')])return _0x23e8b7(_0x380a('0x2b'));return _0x202484();})[_0x380a('0xc')](function(_0x47668d){_0x23e8b7(_0x47668d);});});}module[_0x380a('0x2c')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 25b6dbe..487efa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84a0=['myappanuglar-secret','app-id','exports','http://localhost:9000'];(function(_0x5f2114,_0x110c13){var _0x4db720=function(_0x421af8){while(--_0x421af8){_0x5f2114['push'](_0x5f2114['shift']());}};_0x4db720(++_0x110c13);}(_0x84a0,0x66));var _0x084a=function(_0x41491a,_0x134077){_0x41491a=_0x41491a-0x0;var _0x40da87=_0x84a0[_0x41491a];return _0x40da87;};'use strict';module[_0x084a('0x0')]={'DOMAIN':_0x084a('0x1'),'SESSION_SECRET':_0x084a('0x2'),'GOOGLE_ID':_0x084a('0x3'),'GOOGLE_SECRET':'secret','DEBUG':''};
\ No newline at end of file
+var _0x57ca=['http://localhost:9000','myappanuglar-secret','secret'];(function(_0x3edb26,_0x9613b4){var _0x4ad9f5=function(_0x5cb828){while(--_0x5cb828){_0x3edb26['push'](_0x3edb26['shift']());}};_0x4ad9f5(++_0x9613b4);}(_0x57ca,0x108));var _0xa57c=function(_0x48e96d,_0x3d5176){_0x48e96d=_0x48e96d-0x0;var _0x29e974=_0x57ca[_0x48e96d];return _0x29e974;};'use strict';module['exports']={'DOMAIN':_0xa57c('0x0'),'SESSION_SECRET':_0xa57c('0x1'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':_0xa57c('0x2'),'DEBUG':''};
\ No newline at end of file
index 22c0576..924ffd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c0d=['error','transports','info','Console','env','debugLevel','moment','path','INFO','log','xcally','format','message','replace','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','Logger','File'];(function(_0x89e61d,_0x5a2f4a){var _0x5f0971=function(_0x3e4813){while(--_0x3e4813){_0x89e61d['push'](_0x89e61d['shift']());}};_0x5f0971(++_0x5a2f4a);}(_0x4c0d,0x1aa));var _0xd4c0=function(_0x8f69b,_0x5a9adc){_0x8f69b=_0x8f69b-0x0;var _0x2b3a0b=_0x4c0d[_0x8f69b];return _0x2b3a0b;};'use strict';var moment=require(_0xd4c0('0x0'));var winston=require('winston');var util=require('util');var path=require(_0xd4c0('0x1'));var debugLevel=_0xd4c0('0x2');function filename(_0x365caa,_0x1eb916){return path['join']('/var',_0xd4c0('0x3'),_0xd4c0('0x4'),util[_0xd4c0('0x5')]('%s-%s.log',_0x365caa,_0x1eb916));}function formatter(_0xfc3a1f,_0x490445){_0x490445[_0xd4c0('0x6')]=_0x490445[_0xd4c0('0x6')][_0xd4c0('0x7')](/@@{/g,'{{{')[_0xd4c0('0x7')](/}@@/g,_0xd4c0('0x8'))[_0xd4c0('0x7')](/@{/g,'{{')[_0xd4c0('0x7')](/}@/g,'}}');return util[_0xd4c0('0x5')](_0xd4c0('0x9'),moment()[_0xd4c0('0x5')](_0xd4c0('0xa')),_0x490445[_0xd4c0('0xb')][_0xd4c0('0xc')](),_0xfc3a1f,_0x490445[_0xd4c0('0x6')]);}module['exports']=function(_0x40dda3){return new winston[(_0xd4c0('0xd'))]({'transports':[new winston['transports'][(_0xd4c0('0xe'))]({'name':util['format']('%s-%s',_0x40dda3,_0xd4c0('0xf')),'filename':filename(_0x40dda3,_0xd4c0('0xf')),'level':_0xd4c0('0xf'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x239b19){return formatter(_0x40dda3,_0x239b19);}}),new winston[(_0xd4c0('0x10'))]['File']({'name':util['format']('%s-%s',_0x40dda3,'info'),'filename':filename(_0x40dda3,'info'),'level':_0xd4c0('0x11'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x71ecc0){return formatter(_0x40dda3,_0x71ecc0);}}),new winston[(_0xd4c0('0x10'))][(_0xd4c0('0x12'))]({'level':process[_0xd4c0('0x13')][_0xd4c0('0x14')]||debugLevel,'json':![],'formatter':function(_0x6eaa66){return formatter(_0x40dda3,_0x6eaa66);}})]});};
\ No newline at end of file
+var _0xd3b4=['%s-%s','error','info','env','debugLevel','moment','path','INFO','/var','xcally','format','%s-%s.log','message','replace','{{{','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','exports','Logger','transports','File'];(function(_0x3c1ea7,_0x2f557b){var _0x4bf890=function(_0x23f800){while(--_0x23f800){_0x3c1ea7['push'](_0x3c1ea7['shift']());}};_0x4bf890(++_0x2f557b);}(_0xd3b4,0x1e9));var _0x4d3b=function(_0x4b870f,_0x1850e5){_0x4b870f=_0x4b870f-0x0;var _0x5579b5=_0xd3b4[_0x4b870f];return _0x5579b5;};'use strict';var moment=require(_0x4d3b('0x0'));var winston=require('winston');var util=require('util');var path=require(_0x4d3b('0x1'));var debugLevel=_0x4d3b('0x2');function filename(_0x2179fc,_0x17b005){return path['join'](_0x4d3b('0x3'),'log',_0x4d3b('0x4'),util[_0x4d3b('0x5')](_0x4d3b('0x6'),_0x2179fc,_0x17b005));}function formatter(_0x338d10,_0xe4511c){_0xe4511c[_0x4d3b('0x7')]=_0xe4511c[_0x4d3b('0x7')][_0x4d3b('0x8')](/@@{/g,_0x4d3b('0x9'))[_0x4d3b('0x8')](/}@@/g,'}}}')[_0x4d3b('0x8')](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0x4d3b('0x5')]('[%s]\x20[%s]\x20%s\x20-\x20%s',moment()[_0x4d3b('0x5')](_0x4d3b('0xa')),_0xe4511c[_0x4d3b('0xb')][_0x4d3b('0xc')](),_0x338d10,_0xe4511c[_0x4d3b('0x7')]);}module[_0x4d3b('0xd')]=function(_0x3c6824){return new winston[(_0x4d3b('0xe'))]({'transports':[new winston[(_0x4d3b('0xf'))][(_0x4d3b('0x10'))]({'name':util[_0x4d3b('0x5')](_0x4d3b('0x11'),_0x3c6824,'error'),'filename':filename(_0x3c6824,_0x4d3b('0x12')),'level':_0x4d3b('0x12'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x2f5fa0){return formatter(_0x3c6824,_0x2f5fa0);}}),new winston[(_0x4d3b('0xf'))][(_0x4d3b('0x10'))]({'name':util[_0x4d3b('0x5')](_0x4d3b('0x11'),_0x3c6824,_0x4d3b('0x13')),'filename':filename(_0x3c6824,_0x4d3b('0x13')),'level':_0x4d3b('0x13'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x531d57){return formatter(_0x3c6824,_0x531d57);}}),new winston[(_0x4d3b('0xf'))]['Console']({'level':process[_0x4d3b('0x14')][_0x4d3b('0x15')]||debugLevel,'json':![],'formatter':function(_0x15cc17){return formatter(_0x3c6824,_0x15cc17);}})]});};
\ No newline at end of file
index 1c4ca31..7bd9b43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54bd=['../../services/routing/index.js','../../services/xdr/index.js','exports','express','../../services/express/index.js','ami','join','../../services/ami/index.js','agi','../../services/agi/index.js','../../services/email/index.js'];(function(_0x22d72b,_0x112e6d){var _0x35f65f=function(_0x23d67f){while(--_0x23d67f){_0x22d72b['push'](_0x22d72b['shift']());}};_0x35f65f(++_0x112e6d);}(_0x54bd,0x7c));var _0xd54b=function(_0x4e4566,_0x5b62dc){_0x4e4566=_0x4e4566-0x0;var _0x2875a2=_0x54bd[_0x4e4566];return _0x2875a2;};'use strict';var path=require('path');var os=require('os');var config={'apps':[{'name':_0xd54b('0x0'),'script':path['join'](__dirname,_0xd54b('0x1'))},{'name':_0xd54b('0x2'),'script':path[_0xd54b('0x3')](__dirname,_0xd54b('0x4'))},{'name':_0xd54b('0x5'),'script':path[_0xd54b('0x3')](__dirname,_0xd54b('0x6'))},{'name':'email','script':path[_0xd54b('0x3')](__dirname,_0xd54b('0x7'))},{'name':'routing','script':path[_0xd54b('0x3')](__dirname,_0xd54b('0x8'))},{'name':'xdr','script':path[_0xd54b('0x3')](__dirname,_0xd54b('0x9'))}]};module[_0xd54b('0xa')]=config;
\ No newline at end of file
+var _0xf0f7=['path','express','join','../../services/express/index.js','agi','../../services/agi/index.js','../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports'];(function(_0xcd6e31,_0x1d781a){var _0x4944a2=function(_0x5a2e22){while(--_0x5a2e22){_0xcd6e31['push'](_0xcd6e31['shift']());}};_0x4944a2(++_0x1d781a);}(_0xf0f7,0xd8));var _0x7f0f=function(_0x178d50,_0x459f67){_0x178d50=_0x178d50-0x0;var _0x221f9c=_0xf0f7[_0x178d50];return _0x221f9c;};'use strict';var path=require(_0x7f0f('0x0'));var os=require('os');var config={'apps':[{'name':_0x7f0f('0x1'),'script':path[_0x7f0f('0x2')](__dirname,_0x7f0f('0x3'))},{'name':'ami','script':path[_0x7f0f('0x2')](__dirname,'../../services/ami/index.js')},{'name':_0x7f0f('0x4'),'script':path[_0x7f0f('0x2')](__dirname,_0x7f0f('0x5'))},{'name':'email','script':path['join'](__dirname,_0x7f0f('0x6'))},{'name':_0x7f0f('0x7'),'script':path[_0x7f0f('0x2')](__dirname,_0x7f0f('0x8'))},{'name':_0x7f0f('0x9'),'script':path[_0x7f0f('0x2')](__dirname,_0x7f0f('0xa'))}]};module[_0x7f0f('0xb')]=config;
\ No newline at end of file
index 458c662..4df1bb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b67=['describe','delete','dump','saved','pm2','./config','connect','connected','start','then','stop','disconnect','restart','list'];(function(_0x4fa66c,_0x51f9a3){var _0x9b192b=function(_0x5a930f){while(--_0x5a930f){_0x4fa66c['push'](_0x4fa66c['shift']());}};_0x9b192b(++_0x51f9a3);}(_0x5b67,0x1c4));var _0x75b6=function(_0x456ab5,_0x115536){_0x456ab5=_0x456ab5-0x0;var _0x19f4b1=_0x5b67[_0x456ab5];return _0x19f4b1;};'use strict';var pm2=require(_0x75b6('0x0'));var BPromise=require('bluebird');var config=require(_0x75b6('0x1'));function connect(){return new BPromise(function(_0x5e46c2,_0x335d40){return pm2[_0x75b6('0x2')](function(_0x34f20d){if(_0x34f20d){return _0x335d40(_0x34f20d);}return _0x5e46c2(_0x75b6('0x3'));});});};exports[_0x75b6('0x4')]=function(_0x5ccaae){return connect()[_0x75b6('0x5')](function(){return new BPromise(function(_0x271b18,_0x51cce3){return pm2[_0x75b6('0x4')](_0x5ccaae,function(_0x48eabb,_0x45ece4){if(_0x48eabb){return _0x51cce3(_0x48eabb);}pm2['disconnect']();return _0x271b18(_0x45ece4);});});});};exports['stop']=function(_0xf10c12){return connect()['then'](function(){return new BPromise(function(_0x193516,_0x3778dd){return pm2[_0x75b6('0x6')](_0xf10c12,function(_0x1b444f,_0x248728){if(_0x1b444f){return _0x3778dd(_0x1b444f);}pm2[_0x75b6('0x7')]();return _0x193516(_0x248728);});});});};exports[_0x75b6('0x8')]=function(_0x1c7d46){return connect()[_0x75b6('0x5')](function(){return new BPromise(function(_0x33c923,_0x239a90){return pm2[_0x75b6('0x8')](_0x1c7d46,function(_0x16692f,_0x47c551){if(_0x16692f){return _0x239a90(_0x16692f);}pm2[_0x75b6('0x7')]();return _0x33c923(_0x47c551);});});});};exports[_0x75b6('0x9')]=function(){return connect()['then'](function(){return new BPromise(function(_0x510c9b,_0x540d3b){return pm2[_0x75b6('0x9')](function(_0x43f99f,_0x58cf82){if(_0x43f99f){return _0x540d3b(_0x43f99f);}pm2[_0x75b6('0x7')]();return _0x510c9b(_0x58cf82);});});});};exports['describe']=function(_0x34e230){return connect()['then'](function(){return new BPromise(function(_0x34b4af,_0x2472bc){return pm2[_0x75b6('0xa')](_0x34e230,function(_0x44ec01,_0x1d51b3){if(_0x44ec01){return _0x2472bc(_0x44ec01);}pm2['disconnect']();return _0x34b4af(_0x1d51b3);});});});};exports[_0x75b6('0xb')]=function(_0x2ded5b){return connect()['then'](function(){return new BPromise(function(_0x59e133,_0x95f8ec){return pm2['delete'](_0x2ded5b,function(_0x32e827,_0x14383d){if(_0x32e827){return _0x95f8ec(_0x32e827);}pm2[_0x75b6('0x7')]();return _0x59e133(_0x14383d);});});});};exports[_0x75b6('0xc')]=function(){return connect()['then'](function(){return new BPromise(function(_0xfbf671,_0x3982c3){return pm2[_0x75b6('0xc')](function(_0x3de014){if(_0x3de014){return _0x3982c3(_0x3de014);}return _0xfbf671(_0x75b6('0xd'));});});});};
\ No newline at end of file
+var _0xe7de=['pm2','./config','connected','start','then','stop','restart','list','disconnect','describe','delete','dump','saved'];(function(_0x4ae309,_0x41b608){var _0x15a908=function(_0x26b8fb){while(--_0x26b8fb){_0x4ae309['push'](_0x4ae309['shift']());}};_0x15a908(++_0x41b608);}(_0xe7de,0x1d4));var _0xee7d=function(_0x539cbb,_0x482835){_0x539cbb=_0x539cbb-0x0;var _0xf15aa2=_0xe7de[_0x539cbb];return _0xf15aa2;};'use strict';var pm2=require(_0xee7d('0x0'));var BPromise=require('bluebird');var config=require(_0xee7d('0x1'));function connect(){return new BPromise(function(_0x3c5b58,_0x71abcd){return pm2['connect'](function(_0x33e310){if(_0x33e310){return _0x71abcd(_0x33e310);}return _0x3c5b58(_0xee7d('0x2'));});});};exports[_0xee7d('0x3')]=function(_0x4bdcfc){return connect()[_0xee7d('0x4')](function(){return new BPromise(function(_0x3424e2,_0x31bb43){return pm2[_0xee7d('0x3')](_0x4bdcfc,function(_0x304677,_0x4c1034){if(_0x304677){return _0x31bb43(_0x304677);}pm2['disconnect']();return _0x3424e2(_0x4c1034);});});});};exports[_0xee7d('0x5')]=function(_0x2b1793){return connect()['then'](function(){return new BPromise(function(_0x1695b6,_0x477cfa){return pm2[_0xee7d('0x5')](_0x2b1793,function(_0x203fa0,_0x53da3f){if(_0x203fa0){return _0x477cfa(_0x203fa0);}pm2['disconnect']();return _0x1695b6(_0x53da3f);});});});};exports['restart']=function(_0x2e97e1){return connect()[_0xee7d('0x4')](function(){return new BPromise(function(_0x216b66,_0x5895e2){return pm2[_0xee7d('0x6')](_0x2e97e1,function(_0x596fa8,_0x26cbca){if(_0x596fa8){return _0x5895e2(_0x596fa8);}pm2['disconnect']();return _0x216b66(_0x26cbca);});});});};exports[_0xee7d('0x7')]=function(){return connect()[_0xee7d('0x4')](function(){return new BPromise(function(_0xeaf12a,_0x2966d0){return pm2[_0xee7d('0x7')](function(_0x21e3ce,_0xab9cf9){if(_0x21e3ce){return _0x2966d0(_0x21e3ce);}pm2[_0xee7d('0x8')]();return _0xeaf12a(_0xab9cf9);});});});};exports[_0xee7d('0x9')]=function(_0x271c08){return connect()[_0xee7d('0x4')](function(){return new BPromise(function(_0x534dc4,_0xbdf6b){return pm2[_0xee7d('0x9')](_0x271c08,function(_0x1286d5,_0x185992){if(_0x1286d5){return _0xbdf6b(_0x1286d5);}pm2[_0xee7d('0x8')]();return _0x534dc4(_0x185992);});});});};exports['delete']=function(_0x1f2055){return connect()[_0xee7d('0x4')](function(){return new BPromise(function(_0x2209ec,_0x1d92b7){return pm2[_0xee7d('0xa')](_0x1f2055,function(_0x261bff,_0xd14d8b){if(_0x261bff){return _0x1d92b7(_0x261bff);}pm2[_0xee7d('0x8')]();return _0x2209ec(_0xd14d8b);});});});};exports[_0xee7d('0xb')]=function(){return connect()[_0xee7d('0x4')](function(){return new BPromise(function(_0x20f051,_0x1bd4f2){return pm2[_0xee7d('0xb')](function(_0x503fbf){if(_0x503fbf){return _0x1bd4f2(_0x503fbf);}return _0x20f051(_0xee7d('0xc'));});});});};
\ No newline at end of file
index 7315690..8a4f034 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafe9=['schedule','redis','localhost','socket.io-emitter','Setting','then','chatTimeout','ChatInteraction','lastMsgAt','map','info','[CHAT]\x20Interactions\x20to\x20close:','update','system','timeout','format','length','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','lodash','ioredis','../../mysqldb','../logger'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xafe9,0x176));var _0x9afe=function(_0x26ac51,_0x57ca49){_0x26ac51=_0x26ac51-0x0;var _0x585ffb=_0xafe9[_0x26ac51];return _0x585ffb;};'use strict';var _=require(_0x9afe('0x0'));var moment=require('moment');var Redis=require(_0x9afe('0x1'));var util=require('util');var config=require('../../config/environment');var db=require(_0x9afe('0x2'))['db'];var logger=require(_0x9afe('0x3'))(_0x9afe('0x4'));config[_0x9afe('0x5')]=_['defaults'](config[_0x9afe('0x5')],{'host':_0x9afe('0x6'),'port':0x18eb});var io=require(_0x9afe('0x7'))(new Redis(config[_0x9afe('0x5')]));function closeInteractions(){var _0x1ad680=0x0;var _0x10f38a=[];return db[_0x9afe('0x8')]['find']({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})[_0x9afe('0x9')](function(_0x39149d){_0x1ad680=_0x39149d[_0x9afe('0xa')];if(_0x1ad680){return db[_0x9afe('0xb')]['findAll']({'raw':!![],'attributes':['id',_0x9afe('0xc')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0x39149d[_0x9afe('0xa')],'minutes')}}});}else{return[];}})[_0x9afe('0x9')](function(_0x539ad9){if(_0x539ad9&&_0x539ad9['length']){_0x10f38a=_[_0x9afe('0xd')](_0x539ad9||[],'id');logger[_0x9afe('0xe')](_0x9afe('0xf'),_0x10f38a['join']());return db['ChatInteraction'][_0x9afe('0x10')]({'closeReason':_0x9afe('0x11'),'disposition':_0x9afe('0x12'),'closed':!![],'closedAt':moment()[_0x9afe('0x13')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x10f38a}});}})[_0x9afe('0x9')](function(){if(_0x10f38a&&_0x10f38a[_0x9afe('0x14')]){logger[_0x9afe('0xe')](_0x9afe('0x15'),_0x10f38a['join']());for(var _0x394955=0x0;_0x394955<_0x10f38a[_0x9afe('0x14')];_0x394955++){io[_0x9afe('0x16')](_0x9afe('0x17'),{'id':_0x10f38a[_0x394955],'closed':!![]});}}})[_0x9afe('0x18')](function(_0x54dd5e){logger[_0x9afe('0x19')](_0x9afe('0x1a'),_0x54dd5e?util['inspect'](_0x54dd5e,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x9aa1=['Setting','ChatInteraction','findAll','subtract','minutes','then','length','map','info','join','update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','moment','ioredis','util','../logger','schedule','redis','defaults','localhost','socket.io-emitter'];(function(_0x1dd9db,_0x59646b){var _0xc0bb61=function(_0x58fae5){while(--_0x58fae5){_0x1dd9db['push'](_0x1dd9db['shift']());}};_0xc0bb61(++_0x59646b);}(_0x9aa1,0x141));var _0x19aa=function(_0x5dd511,_0x375d07){_0x5dd511=_0x5dd511-0x0;var _0x128597=_0x9aa1[_0x5dd511];return _0x128597;};'use strict';var _=require('lodash');var moment=require(_0x19aa('0x0'));var Redis=require(_0x19aa('0x1'));var util=require(_0x19aa('0x2'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var logger=require(_0x19aa('0x3'))(_0x19aa('0x4'));config[_0x19aa('0x5')]=_[_0x19aa('0x6')](config[_0x19aa('0x5')],{'host':_0x19aa('0x7'),'port':0x18eb});var io=require(_0x19aa('0x8'))(new Redis(config[_0x19aa('0x5')]));function closeInteractions(){var _0x174581=0x0;var _0xc2e7ff=[];return db[_0x19aa('0x9')]['find']({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})['then'](function(_0x1ba6d8){_0x174581=_0x1ba6d8['chatTimeout'];if(_0x174581){return db[_0x19aa('0xa')][_0x19aa('0xb')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x19aa('0xc')](_0x1ba6d8['chatTimeout'],_0x19aa('0xd'))}}});}else{return[];}})[_0x19aa('0xe')](function(_0xf6c3f2){if(_0xf6c3f2&&_0xf6c3f2[_0x19aa('0xf')]){_0xc2e7ff=_[_0x19aa('0x10')](_0xf6c3f2||[],'id');logger[_0x19aa('0x11')]('[CHAT]\x20Interactions\x20to\x20close:',_0xc2e7ff[_0x19aa('0x12')]());return db[_0x19aa('0xa')][_0x19aa('0x13')]({'closeReason':'system','disposition':_0x19aa('0x14'),'closed':!![],'closedAt':moment()[_0x19aa('0x15')](_0x19aa('0x16'))},{'where':{'id':_0xc2e7ff}});}})[_0x19aa('0xe')](function(){if(_0xc2e7ff&&_0xc2e7ff[_0x19aa('0xf')]){logger[_0x19aa('0x11')](_0x19aa('0x17'),_0xc2e7ff['join']());for(var _0x4fb491=0x0;_0x4fb491<_0xc2e7ff[_0x19aa('0xf')];_0x4fb491++){io[_0x19aa('0x18')](_0x19aa('0x19'),{'id':_0xc2e7ff[_0x4fb491],'closed':!![]});}}})['catch'](function(_0x2626f8){logger[_0x19aa('0x1a')](_0x19aa('0x1b'),_0x2626f8?util[_0x19aa('0x1c')](_0x2626f8,{'showHidden':![],'depth':null}):'');});}exports[_0x19aa('0x1d')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index ec30bdf..c894f01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d5c=['savename','%s.%s','extname','zip','existsSync','status','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','Sent','sendIfEmpty','then','email\x20sent','error','data','isNil','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','catch','CustomReportId','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','map','toString','difference','intersection','length','exists','deleteJob','delete\x20cron','toRun','index','my\x20id','run\x20job','cron','active','isBetween','start','add\x20cron','stop\x20cron','startAt','endAt','update','update\x20cron','stop','util','path','lodash','cron-job-manager','jayson/promise','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','secure','authentication','auth','user','pass','format','name','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports'];(function(_0x3f41a9,_0x28e9f7){var _0x2086b2=function(_0x4dc599){while(--_0x4dc599){_0x3f41a9['push'](_0x3f41a9['shift']());}};_0x2086b2(++_0x28e9f7);}(_0x0d5c,0xe8));var _0xc0d5=function(_0x43dc7e,_0x49a390){_0x43dc7e=_0x43dc7e-0x0;var _0x21e12d=_0x0d5c[_0x43dc7e];return _0x21e12d;};'use strict';var fs=require('fs');var util=require(_0xc0d5('0x0'));var path=require(_0xc0d5('0x1'));var _=require(_0xc0d5('0x2'));var moment=require('moment');var CronJobManager=require(_0xc0d5('0x3'));var jayson=require(_0xc0d5('0x4'));var BPromise=require('bluebird');var logger=require(_0xc0d5('0x5'))(_0xc0d5('0x6'));var db=require(_0xc0d5('0x7'))['db'];var analyticCustomReportController=require(_0xc0d5('0x8'));var analyticDefaultReportController=require(_0xc0d5('0x9'));var client=jayson[_0xc0d5('0xa')][_0xc0d5('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x19a41e,_0x5c8279){return function(){logger[_0xc0d5('0xc')](_0xc0d5('0xd'),_0x19a41e[_0xc0d5('0xe')]);var _0x5a1e25=!![];var _0x147a59={'tls':{'rejectUnauthorized':![]}};if(_0x19a41e[_0xc0d5('0xf')][_0xc0d5('0x10')][_0xc0d5('0x11')]){_0x147a59[_0xc0d5('0x11')]=_0x19a41e[_0xc0d5('0xf')][_0xc0d5('0x10')]['service'];}else{_0x147a59[_0xc0d5('0x12')]=_0x19a41e[_0xc0d5('0xf')]['Smtp'][_0xc0d5('0x12')];_0x147a59['port']=_0x19a41e[_0xc0d5('0xf')][_0xc0d5('0x10')]['port'];_0x147a59['secure']=_0x19a41e[_0xc0d5('0xf')][_0xc0d5('0x10')][_0xc0d5('0x13')];}if(_0x19a41e[_0xc0d5('0xf')][_0xc0d5('0x10')][_0xc0d5('0x14')]){_0x147a59[_0xc0d5('0x15')]={'user':_0x19a41e[_0xc0d5('0xf')]['Smtp'][_0xc0d5('0x16')],'pass':_0x19a41e['MailAccount'][_0xc0d5('0x10')][_0xc0d5('0x17')]};}var _0x4c792f={'account':_0x147a59,'message':{'from':util[_0xc0d5('0x18')]('\x22%s\x22\x20<%s>',_0x19a41e[_0xc0d5('0xf')][_0xc0d5('0x19')],_0x19a41e['MailAccount'][_0xc0d5('0xe')]||_0x19a41e[_0xc0d5('0xf')][_0xc0d5('0x10')]['user']),'to':_0x19a41e[_0xc0d5('0xe')],'cc':_0x19a41e['cc'],'bcc':_0x19a41e[_0xc0d5('0x1a')],'subject':util[_0xc0d5('0x18')](_0xc0d5('0x1b'),_0x5c8279['name'],_0x19a41e[_0xc0d5('0x1c')],_0x19a41e[_0xc0d5('0x1d')])}};var _0x727c55=path[_0xc0d5('0x1e')](__dirname,_0xc0d5('0x1f'));var _0x60c1ff=_0x5c8279[_0xc0d5('0x20')];var _0x3f648b=util['format'](_0xc0d5('0x21'),path['basename'](_0x5c8279[_0xc0d5('0x20')],path[_0xc0d5('0x22')](_0x5c8279[_0xc0d5('0x20')])),_0xc0d5('0x23'));var _0x204a56=path['join'](_0x727c55,_0x60c1ff);var _0x366324=path[_0xc0d5('0x1e')](_0x727c55,_0x3f648b);if(fs[_0xc0d5('0x24')](_0x204a56)){_0x5c8279[_0xc0d5('0x25')]='Sent';_0x4c792f[_0xc0d5('0x26')][_0xc0d5('0x27')]=[{'filename':_0x60c1ff,'path':_0x204a56}];_0x4c792f['message'][_0xc0d5('0x28')]=util['format'](_0xc0d5('0x29'),JSON[_0xc0d5('0x2a')](_0x5c8279,null,0x2));}else if(fs[_0xc0d5('0x24')](_0x366324)){_0x5c8279[_0xc0d5('0x25')]=_0xc0d5('0x2b');_0x4c792f['message'][_0xc0d5('0x27')]=[{'filename':_0x3f648b,'path':_0x366324}];}else{_0x4c792f[_0xc0d5('0x26')]['text']='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x19a41e[_0xc0d5('0x2c')]){_0x5a1e25=![];logger[_0xc0d5('0xc')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x5a1e25){return client['request']('SendMail',_0x4c792f)[_0xc0d5('0x2d')](function(_0x470125){if(_0x470125['error']){return logger['error']('error\x20mail',JSON[_0xc0d5('0x2a')](_0x470125));}return logger[_0xc0d5('0xc')](_0xc0d5('0x2e'));})['catch'](function(_0xf49887){return logger['error']('error\x20mail',JSON[_0xc0d5('0x2a')](_0xf49887));});}};}function handleError(){return function(_0xc36ff8){return logger[_0xc0d5('0x2f')](JSON[_0xc0d5('0x2a')](_0xc36ff8));};}function handleResult(_0x4c50cb){return function(_0x4246a6){logger['info'](_0xc0d5('0x30'),JSON['stringify'](_0x4246a6));if(_0x4c50cb[_0xc0d5('0xf')]&&_0x4c50cb[_0xc0d5('0xf')][_0xc0d5('0x10')]&&!_[_0xc0d5('0x31')](_0x4c50cb[_0xc0d5('0xe')])){setTimeout(handleSendEmail(_0x4c50cb,_0x4246a6),0x3c*0x3e8);}};}function handleJob(_0x35e2a9){return function(){try{if(_[_0xc0d5('0x31')](_0x35e2a9[_0xc0d5('0x1c')])){return logger[_0xc0d5('0xc')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0xc0d5('0x31')](_0x35e2a9['subtractUnit'])){return logger['info']('subtractUnit\x20null\x20or\x20undefined');}var _0x2136f7={'startDate':moment()[_0xc0d5('0x32')](_0x35e2a9['subtractNumber'],_0x35e2a9[_0xc0d5('0x1d')])[_0xc0d5('0x18')](_0xc0d5('0x33')),'endDate':moment()[_0xc0d5('0x18')](_0xc0d5('0x33')),'type':_0xc0d5('0x34'),'output':_0x35e2a9[_0xc0d5('0x35')],'name':_0x35e2a9['name']};if(!_[_0xc0d5('0x31')](_0x35e2a9[_0xc0d5('0x36')])){logger[_0xc0d5('0xc')](_0xc0d5('0x37'),_0x35e2a9[_0xc0d5('0x36')]);return analyticDefaultReportController[_0xc0d5('0x38')]({'id':_0x35e2a9[_0xc0d5('0x36')]},_0x2136f7)[_0xc0d5('0x2d')](handleResult(_0x35e2a9))[_0xc0d5('0x39')](handleError());}if(!_[_0xc0d5('0x31')](_0x35e2a9[_0xc0d5('0x3a')])){logger[_0xc0d5('0xc')]('exec\x20custom\x20report\x20id:%s',_0x35e2a9['CustomReportId']);return analyticCustomReportController[_0xc0d5('0x38')]({'id':_0x35e2a9[_0xc0d5('0x3a')]},_0x2136f7)[_0xc0d5('0x2d')](handleResult(_0x35e2a9))['catch'](handleError());}}catch(_0x374199){logger[_0xc0d5('0x2f')](JSON['stringify'](_0x374199));}return logger[_0xc0d5('0xc')](_0xc0d5('0x3b'));};}function getJobs(_0x1892dd){var _0x4c2660={};if(_0x1892dd){_0x4c2660['id']=_0x1892dd;}return db[_0xc0d5('0x3c')][_0xc0d5('0x3d')]({'where':_0x4c2660,'include':[{'model':db[_0xc0d5('0xf')],'attributes':['id',_0xc0d5('0x19'),_0xc0d5('0xe')],'include':[{'model':db[_0xc0d5('0x3e')],'as':'Smtp'}]}]})[_0xc0d5('0x2d')](function(_0x4bd5f7){var _0x59cc51=_[_0xc0d5('0x3f')](manager[_0xc0d5('0x40')]);var _0x5c0c49=_[_0xc0d5('0x41')](_0x4bd5f7,function(_0x1471f6){return _0x1471f6['id'][_0xc0d5('0x42')]();});var _0x5142b5=_['keyBy'](_0x4bd5f7,function(_0x1ebea9){return _0x1ebea9['id'][_0xc0d5('0x42')]();});var _0x36bd34=_0x1892dd?_0x5c0c49:_[_0xc0d5('0x43')](_0x5c0c49,_0x59cc51);var _0x1922d7=_[_0xc0d5('0x44')](_0x5c0c49,_0x59cc51);var _0x5e28e0=_[_0xc0d5('0x43')](_0x59cc51,_0x5c0c49);var _0x3b8faf;var _0x490e45;for(_0x3b8faf=0x0;_0x3b8faf<_0x5e28e0[_0xc0d5('0x45')]&&!_0x1892dd;_0x3b8faf+=0x1){_0x490e45=_0x5e28e0[_0x3b8faf][_0xc0d5('0x42')]();if(manager[_0xc0d5('0x46')](_0x490e45)){manager['stop'](_0x490e45);manager[_0xc0d5('0x47')](_0x490e45);logger['info'](_0xc0d5('0x48'),_0x490e45);}}logger['info'](_0xc0d5('0x49'),JSON['stringify'](_0x36bd34));for(_0x3b8faf=0x0;_0x3b8faf<_0x36bd34[_0xc0d5('0x45')];_0x3b8faf+=0x1){_0x490e45=_0x36bd34[_0x3b8faf][_0xc0d5('0x42')]();logger[_0xc0d5('0xc')](_0xc0d5('0x4a'),_0x490e45);if(_0x1892dd){logger[_0xc0d5('0xc')](_0xc0d5('0x4b'),_0x1892dd);logger[_0xc0d5('0xc')](JSON[_0xc0d5('0x2a')](_0x5142b5[_0x490e45]));BPromise['resolve']()[_0xc0d5('0x2d')](handleJob(_0x5142b5[_0x490e45]));logger['info'](_0xc0d5('0x4c'),_0x5142b5[_0x490e45]['name'],_0x5142b5[_0x490e45]['cron']);}else if(_0x5142b5[_0x490e45][_0xc0d5('0x4d')]&&_0x5142b5[_0x490e45][_0xc0d5('0x4e')]&&moment()[_0xc0d5('0x4f')](_0x5142b5[_0x490e45]['startAt'],_0x5142b5[_0x490e45]['endAt'])){manager['add'](_0x490e45,_0x5142b5[_0x490e45][_0xc0d5('0x4d')],handleJob(_0x5142b5[_0x490e45]));manager[_0xc0d5('0x50')](_0x490e45);logger[_0xc0d5('0xc')](_0xc0d5('0x51'),_0x5142b5[_0x490e45][_0xc0d5('0x19')],_0x5142b5[_0x490e45]['cron']);}else if(manager[_0xc0d5('0x46')](_0x490e45)){manager['stop'](_0x490e45);manager[_0xc0d5('0x47')](_0x490e45);logger[_0xc0d5('0xc')](_0xc0d5('0x52'),_0x5142b5[_0x490e45][_0xc0d5('0x19')],_0x5142b5[_0x490e45][_0xc0d5('0x4d')]);}}for(_0x3b8faf=0x0,_0x490e45;_0x3b8faf<_0x1922d7[_0xc0d5('0x45')]&&!_0x1892dd;_0x3b8faf+=0x1){_0x490e45=_0x1922d7[_0x3b8faf][_0xc0d5('0x42')]();if(manager[_0xc0d5('0x46')](_0x490e45)){if(_0x5142b5[_0x490e45][_0xc0d5('0x4d')]&&_0x5142b5[_0x490e45]['active']&&moment()[_0xc0d5('0x4f')](_0x5142b5[_0x490e45][_0xc0d5('0x53')],_0x5142b5[_0x490e45][_0xc0d5('0x54')])){manager[_0xc0d5('0x55')](_0x490e45,_0x5142b5[_0x490e45][_0xc0d5('0x4d')],handleJob(_0x5142b5[_0x490e45]));logger[_0xc0d5('0xc')](_0xc0d5('0x56'),_0x5142b5[_0x490e45][_0xc0d5('0x19')],_0x5142b5[_0x490e45][_0xc0d5('0x4d')]);}else{manager[_0xc0d5('0x57')](_0x490e45);manager[_0xc0d5('0x47')](_0x490e45);logger[_0xc0d5('0xc')](_0xc0d5('0x52'),_0x5142b5[_0x490e45]['name'],_0x5142b5[_0x490e45][_0xc0d5('0x4d')]);}}}})[_0xc0d5('0x39')](function(_0x343e36){logger[_0xc0d5('0x2f')](JSON[_0xc0d5('0x2a')](_0x343e36));});}exports['run']=function(_0x5e4763){return getJobs(_0x5e4763);};exports[_0xc0d5('0x50')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xd3e2=['../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','Smtp','service','host','port','secure','MailAccount','authentication','auth','pass','\x22%s\x22\x20<%s>','name','email','bcc','format','subtractUnit','join','../../files/reports','savename','%s.%s','basename','status','Sent','attachments','message','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','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','stringify','subtractNumber','isNil','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','catch','CustomReportId','exec\x20custom\x20report\x20id:%s','runReport','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','map','toString','keyBy','difference','intersection','length','stop','deleteJob','toRun','index','my\x20id','resolve','cron','isBetween','startAt','endAt','add','start','add\x20cron','exists','stop\x20cron','update','update\x20cron','run','util','path','moment','cron-job-manager','jayson/promise','bluebird'];(function(_0x1bb146,_0x45f4c1){var _0x1f5d84=function(_0x1232ea){while(--_0x1232ea){_0x1bb146['push'](_0x1bb146['shift']());}};_0x1f5d84(++_0x45f4c1);}(_0xd3e2,0xb0));var _0x2d3e=function(_0x58af1b,_0x2ea123){_0x58af1b=_0x58af1b-0x0;var _0x383999=_0xd3e2[_0x58af1b];return _0x383999;};'use strict';var fs=require('fs');var util=require(_0x2d3e('0x0'));var path=require(_0x2d3e('0x1'));var _=require('lodash');var moment=require(_0x2d3e('0x2'));var CronJobManager=require(_0x2d3e('0x3'));var jayson=require(_0x2d3e('0x4'));var BPromise=require(_0x2d3e('0x5'));var logger=require(_0x2d3e('0x6'))(_0x2d3e('0x7'));var db=require(_0x2d3e('0x8'))['db'];var analyticCustomReportController=require(_0x2d3e('0x9'));var analyticDefaultReportController=require(_0x2d3e('0xa'));var client=jayson['client'][_0x2d3e('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x20ed1a,_0x45b453){return function(){logger[_0x2d3e('0xc')](_0x2d3e('0xd'),_0x20ed1a['email']);var _0x387bae=!![];var _0x152678={'tls':{'rejectUnauthorized':![]}};if(_0x20ed1a['MailAccount'][_0x2d3e('0xe')][_0x2d3e('0xf')]){_0x152678['service']=_0x20ed1a['MailAccount'][_0x2d3e('0xe')][_0x2d3e('0xf')];}else{_0x152678['host']=_0x20ed1a['MailAccount']['Smtp'][_0x2d3e('0x10')];_0x152678[_0x2d3e('0x11')]=_0x20ed1a['MailAccount']['Smtp'][_0x2d3e('0x11')];_0x152678[_0x2d3e('0x12')]=_0x20ed1a[_0x2d3e('0x13')][_0x2d3e('0xe')][_0x2d3e('0x12')];}if(_0x20ed1a[_0x2d3e('0x13')][_0x2d3e('0xe')][_0x2d3e('0x14')]){_0x152678[_0x2d3e('0x15')]={'user':_0x20ed1a[_0x2d3e('0x13')][_0x2d3e('0xe')]['user'],'pass':_0x20ed1a[_0x2d3e('0x13')][_0x2d3e('0xe')][_0x2d3e('0x16')]};}var _0x3a93e5={'account':_0x152678,'message':{'from':util['format'](_0x2d3e('0x17'),_0x20ed1a['MailAccount'][_0x2d3e('0x18')],_0x20ed1a['MailAccount'][_0x2d3e('0x19')]||_0x20ed1a[_0x2d3e('0x13')]['Smtp']['user']),'to':_0x20ed1a[_0x2d3e('0x19')],'cc':_0x20ed1a['cc'],'bcc':_0x20ed1a[_0x2d3e('0x1a')],'subject':util[_0x2d3e('0x1b')]('Report\x20%s\x20last\x20%s\x20%s',_0x45b453[_0x2d3e('0x18')],_0x20ed1a['subtractNumber'],_0x20ed1a[_0x2d3e('0x1c')])}};var _0x12b5ad=path[_0x2d3e('0x1d')](__dirname,_0x2d3e('0x1e'));var _0x1d28eb=_0x45b453[_0x2d3e('0x1f')];var _0x11bc4c=util[_0x2d3e('0x1b')](_0x2d3e('0x20'),path[_0x2d3e('0x21')](_0x45b453[_0x2d3e('0x1f')],path['extname'](_0x45b453[_0x2d3e('0x1f')])),'zip');var _0x19f424=path['join'](_0x12b5ad,_0x1d28eb);var _0x46b191=path[_0x2d3e('0x1d')](_0x12b5ad,_0x11bc4c);if(fs['existsSync'](_0x19f424)){_0x45b453[_0x2d3e('0x22')]=_0x2d3e('0x23');_0x3a93e5['message'][_0x2d3e('0x24')]=[{'filename':_0x1d28eb,'path':_0x19f424}];_0x3a93e5[_0x2d3e('0x25')][_0x2d3e('0x26')]=util['format'](_0x2d3e('0x27'),JSON['stringify'](_0x45b453,null,0x2));}else if(fs[_0x2d3e('0x28')](_0x46b191)){_0x45b453[_0x2d3e('0x22')]=_0x2d3e('0x23');_0x3a93e5['message'][_0x2d3e('0x24')]=[{'filename':_0x11bc4c,'path':_0x46b191}];}else{_0x3a93e5[_0x2d3e('0x25')][_0x2d3e('0x26')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x20ed1a[_0x2d3e('0x29')]){_0x387bae=![];logger[_0x2d3e('0xc')](_0x2d3e('0x2a'));}}if(_0x387bae){return client[_0x2d3e('0x2b')](_0x2d3e('0x2c'),_0x3a93e5)[_0x2d3e('0x2d')](function(_0x515c55){if(_0x515c55[_0x2d3e('0x2e')]){return logger[_0x2d3e('0x2e')](_0x2d3e('0x2f'),JSON['stringify'](_0x515c55));}return logger[_0x2d3e('0xc')](_0x2d3e('0x30'));})['catch'](function(_0x12c45b){return logger[_0x2d3e('0x2e')](_0x2d3e('0x2f'),JSON[_0x2d3e('0x31')](_0x12c45b));});}};}function handleError(){return function(_0x1ba3b0){return logger[_0x2d3e('0x2e')](JSON[_0x2d3e('0x31')](_0x1ba3b0));};}function handleResult(_0x1b2010){return function(_0x1a498d){logger[_0x2d3e('0xc')]('data',JSON['stringify'](_0x1a498d));if(_0x1b2010[_0x2d3e('0x13')]&&_0x1b2010[_0x2d3e('0x13')]['Smtp']&&!_['isNil'](_0x1b2010[_0x2d3e('0x19')])){setTimeout(handleSendEmail(_0x1b2010,_0x1a498d),0x3c*0x3e8);}};}function handleJob(_0xcac9){return function(){try{if(_['isNil'](_0xcac9[_0x2d3e('0x32')])){return logger[_0x2d3e('0xc')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0x2d3e('0x33')](_0xcac9[_0x2d3e('0x1c')])){return logger[_0x2d3e('0xc')]('subtractUnit\x20null\x20or\x20undefined');}var _0x35e51d={'startDate':moment()[_0x2d3e('0x34')](_0xcac9[_0x2d3e('0x32')],_0xcac9[_0x2d3e('0x1c')])[_0x2d3e('0x1b')](_0x2d3e('0x35')),'endDate':moment()[_0x2d3e('0x1b')](_0x2d3e('0x35')),'type':'scheduled','output':_0xcac9[_0x2d3e('0x36')],'name':_0xcac9[_0x2d3e('0x18')]};if(!_[_0x2d3e('0x33')](_0xcac9[_0x2d3e('0x37')])){logger[_0x2d3e('0xc')](_0x2d3e('0x38'),_0xcac9['DefaultReportId']);return analyticDefaultReportController['runReport']({'id':_0xcac9[_0x2d3e('0x37')]},_0x35e51d)[_0x2d3e('0x2d')](handleResult(_0xcac9))[_0x2d3e('0x39')](handleError());}if(!_[_0x2d3e('0x33')](_0xcac9[_0x2d3e('0x3a')])){logger['info'](_0x2d3e('0x3b'),_0xcac9['CustomReportId']);return analyticCustomReportController[_0x2d3e('0x3c')]({'id':_0xcac9[_0x2d3e('0x3a')]},_0x35e51d)[_0x2d3e('0x2d')](handleResult(_0xcac9))[_0x2d3e('0x39')](handleError());}}catch(_0x17dfcb){logger[_0x2d3e('0x2e')](JSON[_0x2d3e('0x31')](_0x17dfcb));}return logger[_0x2d3e('0xc')](_0x2d3e('0x3d'));};}function getJobs(_0x1197e1){var _0x385a85={};if(_0x1197e1){_0x385a85['id']=_0x1197e1;}return db[_0x2d3e('0x3e')][_0x2d3e('0x3f')]({'where':_0x385a85,'include':[{'model':db[_0x2d3e('0x13')],'attributes':['id','name',_0x2d3e('0x19')],'include':[{'model':db[_0x2d3e('0x40')],'as':_0x2d3e('0xe')}]}]})[_0x2d3e('0x2d')](function(_0xaa4413){var _0x4190b0=_[_0x2d3e('0x41')](manager[_0x2d3e('0x42')]);var _0x546f33=_[_0x2d3e('0x43')](_0xaa4413,function(_0x6dcad7){return _0x6dcad7['id'][_0x2d3e('0x44')]();});var _0x189ad3=_[_0x2d3e('0x45')](_0xaa4413,function(_0x457db3){return _0x457db3['id'][_0x2d3e('0x44')]();});var _0x534429=_0x1197e1?_0x546f33:_[_0x2d3e('0x46')](_0x546f33,_0x4190b0);var _0x396c7e=_[_0x2d3e('0x47')](_0x546f33,_0x4190b0);var _0x569bcc=_[_0x2d3e('0x46')](_0x4190b0,_0x546f33);var _0xffd17b;var _0x43634a;for(_0xffd17b=0x0;_0xffd17b<_0x569bcc[_0x2d3e('0x48')]&&!_0x1197e1;_0xffd17b+=0x1){_0x43634a=_0x569bcc[_0xffd17b]['toString']();if(manager['exists'](_0x43634a)){manager[_0x2d3e('0x49')](_0x43634a);manager[_0x2d3e('0x4a')](_0x43634a);logger[_0x2d3e('0xc')]('delete\x20cron',_0x43634a);}}logger['info'](_0x2d3e('0x4b'),JSON[_0x2d3e('0x31')](_0x534429));for(_0xffd17b=0x0;_0xffd17b<_0x534429[_0x2d3e('0x48')];_0xffd17b+=0x1){_0x43634a=_0x534429[_0xffd17b]['toString']();logger[_0x2d3e('0xc')](_0x2d3e('0x4c'),_0x43634a);if(_0x1197e1){logger['info'](_0x2d3e('0x4d'),_0x1197e1);logger[_0x2d3e('0xc')](JSON[_0x2d3e('0x31')](_0x189ad3[_0x43634a]));BPromise[_0x2d3e('0x4e')]()[_0x2d3e('0x2d')](handleJob(_0x189ad3[_0x43634a]));logger['info']('run\x20job',_0x189ad3[_0x43634a][_0x2d3e('0x18')],_0x189ad3[_0x43634a][_0x2d3e('0x4f')]);}else if(_0x189ad3[_0x43634a][_0x2d3e('0x4f')]&&_0x189ad3[_0x43634a]['active']&&moment()[_0x2d3e('0x50')](_0x189ad3[_0x43634a][_0x2d3e('0x51')],_0x189ad3[_0x43634a][_0x2d3e('0x52')])){manager[_0x2d3e('0x53')](_0x43634a,_0x189ad3[_0x43634a][_0x2d3e('0x4f')],handleJob(_0x189ad3[_0x43634a]));manager[_0x2d3e('0x54')](_0x43634a);logger[_0x2d3e('0xc')](_0x2d3e('0x55'),_0x189ad3[_0x43634a][_0x2d3e('0x18')],_0x189ad3[_0x43634a][_0x2d3e('0x4f')]);}else if(manager[_0x2d3e('0x56')](_0x43634a)){manager[_0x2d3e('0x49')](_0x43634a);manager[_0x2d3e('0x4a')](_0x43634a);logger[_0x2d3e('0xc')](_0x2d3e('0x57'),_0x189ad3[_0x43634a][_0x2d3e('0x18')],_0x189ad3[_0x43634a][_0x2d3e('0x4f')]);}}for(_0xffd17b=0x0,_0x43634a;_0xffd17b<_0x396c7e[_0x2d3e('0x48')]&&!_0x1197e1;_0xffd17b+=0x1){_0x43634a=_0x396c7e[_0xffd17b][_0x2d3e('0x44')]();if(manager[_0x2d3e('0x56')](_0x43634a)){if(_0x189ad3[_0x43634a]['cron']&&_0x189ad3[_0x43634a]['active']&&moment()[_0x2d3e('0x50')](_0x189ad3[_0x43634a][_0x2d3e('0x51')],_0x189ad3[_0x43634a][_0x2d3e('0x52')])){manager[_0x2d3e('0x58')](_0x43634a,_0x189ad3[_0x43634a]['cron'],handleJob(_0x189ad3[_0x43634a]));logger['info'](_0x2d3e('0x59'),_0x189ad3[_0x43634a][_0x2d3e('0x18')],_0x189ad3[_0x43634a][_0x2d3e('0x4f')]);}else{manager['stop'](_0x43634a);manager[_0x2d3e('0x4a')](_0x43634a);logger[_0x2d3e('0xc')](_0x2d3e('0x57'),_0x189ad3[_0x43634a][_0x2d3e('0x18')],_0x189ad3[_0x43634a][_0x2d3e('0x4f')]);}}}})['catch'](function(_0x5b9e36){logger[_0x2d3e('0x2e')](JSON[_0x2d3e('0x31')](_0x5b9e36));});}exports[_0x2d3e('0x5a')]=function(_0x3d046e){return getJobs(_0x3d046e);};exports[_0x2d3e('0x54')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 8447f51..520303d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefe2=['start','lodash','aws-sdk','util','bluebird','../../config/logger','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data2','transcribeName','then','info','fileText','TranscriptionJob','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','data1','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','SentimentScore','Positive','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentimentRegion','Sentiment','name','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','transcribe','transcribeRegion','transcribeAccountId','forEach','push','all','SequelizeValidationError'];(function(_0x360fc0,_0x131d38){var _0x23e8a1=function(_0x3fd3fb){while(--_0x3fd3fb){_0x360fc0['push'](_0x360fc0['shift']());}};_0x23e8a1(++_0x131d38);}(_0xefe2,0xd9));var _0x2efe=function(_0x4c18c4,_0x583c72){_0x4c18c4=_0x4c18c4-0x0;var _0x435fb8=_0xefe2[_0x4c18c4];return _0x435fb8;};var _=require(_0x2efe('0x0'));var AWS=require(_0x2efe('0x1'));var rp=require('request-promise');var util=require(_0x2efe('0x2'));var BPromise=require(_0x2efe('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0x2efe('0x4'))('transcribe');function getTranscriptionJob(_0x470efc,_0x4553a6,_0x2d3c97,_0x300cb7){return new Promise(function(_0x3a7cd3,_0x570264){var _0xabb4e3=new AWS[(_0x2efe('0x5'))]({'accessKeyId':_0x4553a6,'secretAccessKey':_0x470efc,'region':_0x2d3c97});_0xabb4e3[_0x2efe('0x6')]({'TranscriptionJobName':_0x300cb7},function(_0x14cd14,_0x5f0008){if(_0x14cd14){return _0x570264(_0x14cd14);}else{return _0x3a7cd3(_0x5f0008);}});});}function sentiment(_0x163c06,_0x37ebdd,_0x3a8f02,_0x54c846,_0x498eb4){return new Promise(function(_0x28f5c9,_0x5a17d3){var _0x58ba63=new AWS[(_0x2efe('0x7'))]({'accessKeyId':_0x37ebdd,'secretAccessKey':_0x163c06,'region':_0x3a8f02});_0x58ba63[_0x2efe('0x8')]({'Text':_0x54c846,'LanguageCode':_0x498eb4[_0x2efe('0x9')](0x0,0x2)},function(_0x22e98f,_0xea35bb){if(_0x22e98f){return _0x5a17d3(_0x22e98f);}else{return _0x28f5c9(_0xea35bb);}});});}function checkTranscribeJob(_0x32fda9,_0x39a93b,_0x250023){var _0x41039a;return new BPromise(function(_0x3c8910,_0x4cd723){logger['info'](util[_0x2efe('0xa')](_0x2efe('0xb'),_0x32fda9['id'],_0x32fda9['transcribeName']));return getTranscriptionJob(_0x250023['data1'],_0x250023[_0x2efe('0xc')],_0x39a93b['transcribeRegion'],_0x32fda9[_0x2efe('0xd')])[_0x2efe('0xe')](function(_0x51cbf3){logger[_0x2efe('0xf')](util[_0x2efe('0xa')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x32fda9['id'],_0x32fda9[_0x2efe('0xd')],_0x51cbf3['TranscriptionJob']['TranscriptionJobStatus']));if(!_0x32fda9[_0x2efe('0x10')]){switch(_0x51cbf3[_0x2efe('0x11')][_0x2efe('0x12')]){case _0x2efe('0x13'):var _0x40fa2e={'transcribeStatus':_0x51cbf3[_0x2efe('0x11')][_0x2efe('0x12')],'fileUri':_0x51cbf3[_0x2efe('0x11')][_0x2efe('0x14')][_0x2efe('0x15')]};logger[_0x2efe('0xf')](util[_0x2efe('0xa')]('[RECORDING:%d]\x20Get\x20transcript',_0x32fda9['id']));return rp({'uri':_0x51cbf3[_0x2efe('0x11')]['Transcript'][_0x2efe('0x15')],'json':!![]})[_0x2efe('0xe')](function(_0x30ed16){logger['info'](util[_0x2efe('0xa')](_0x2efe('0x16'),_0x32fda9['id']));if(_0x30ed16&&_0x30ed16['results']&&_0x30ed16[_0x2efe('0x17')][_0x2efe('0x18')]&&_0x30ed16[_0x2efe('0x17')][_0x2efe('0x18')][_0x2efe('0x19')]){_0x40fa2e[_0x2efe('0x10')]='';for(var _0x2a9b20=0x0;_0x2a9b20<_0x30ed16[_0x2efe('0x17')][_0x2efe('0x18')][_0x2efe('0x19')];_0x2a9b20++){_0x40fa2e[_0x2efe('0x10')]+=_0x30ed16[_0x2efe('0x17')][_0x2efe('0x18')][_0x2a9b20][_0x2efe('0x1a')]+'';}}return _0x32fda9['update'](_0x40fa2e);})[_0x2efe('0xe')](function(){logger[_0x2efe('0xf')](util[_0x2efe('0xa')](_0x2efe('0x1b'),_0x32fda9['id']));if(!_0x32fda9[_0x2efe('0x1c')]){throw new db[(_0x2efe('0x1d'))][(_0x2efe('0x1e'))](_0x2efe('0x1f'));}if(!_0x39a93b[_0x2efe('0x20')]||!_0x39a93b[_0x2efe('0x21')]||!_0x39a93b['sentimentRegion']||!_0x39a93b[_0x2efe('0x22')]||!_0x39a93b[_0x2efe('0x23')]){throw new db[(_0x2efe('0x1d'))][(_0x2efe('0x1e'))](_0x2efe('0x24'));}if(!_0x40fa2e['fileText']){throw new Error(_0x2efe('0x25'));}if(_0x39a93b[_0x2efe('0x21')]===_0x250023['id']){return _0x250023;}else{return db[_0x2efe('0x26')][_0x2efe('0x27')]({'where':{'id':_settings[_0x2efe('0x21')]}});}})[_0x2efe('0xe')](function(_0x1d88a6){if(!_0x1d88a6){throw new db[(_0x2efe('0x1d'))][(_0x2efe('0x1e'))](_0x2efe('0x28'));}if(!_0x1d88a6['data1']||!_0x1d88a6[_0x2efe('0xc')]){throw new db[(_0x2efe('0x1d'))][(_0x2efe('0x1e'))](_0x2efe('0x29'));}_0x41039a=_0x1d88a6;logger[_0x2efe('0xf')](util[_0x2efe('0xa')](_0x2efe('0x2a'),_0x32fda9['id']));return sentiment(_0x41039a[_0x2efe('0x2b')],_0x41039a[_0x2efe('0xc')],_0x39a93b['sentimentRegion'],_0x40fa2e[_0x2efe('0x10')],_0x39a93b[_0x2efe('0x22')]);})['then'](function(_0x50a412){logger['info'](util[_0x2efe('0xa')](_0x2efe('0x2c'),_0x32fda9['id']));return _0x32fda9[_0x2efe('0x2d')]({'sentiment':_0x50a412['Sentiment'],'sPositive':_0x50a412[_0x2efe('0x2e')][_0x2efe('0x2f')],'sNegative':_0x50a412[_0x2efe('0x2e')]['Negative'],'sMixed':_0x50a412['SentimentScore'][_0x2efe('0x30')],'sNeutral':_0x50a412['SentimentScore'][_0x2efe('0x31')]});})[_0x2efe('0xe')](function(){logger[_0x2efe('0xf')](util['format'](_0x2efe('0x1b'),_0x32fda9['id']));_0x3c8910();});case _0x2efe('0x32'):return _0x32fda9[_0x2efe('0x2d')]({'transcribeStatus':_0x2efe('0x32'),'failureReason':_0x51cbf3[_0x2efe('0x11')][_0x2efe('0x33')]})[_0x2efe('0xe')](function(){logger['info'](util[_0x2efe('0xa')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x32fda9['id']));_0x3c8910();});default:logger[_0x2efe('0xf')](util[_0x2efe('0xa')](_0x2efe('0x34'),_0x32fda9['id']));break;}}else{return BPromise[_0x2efe('0x35')]()[_0x2efe('0xe')](function(){if(!_0x32fda9['tempSentiment']){throw new db[(_0x2efe('0x1d'))][(_0x2efe('0x1e'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x39a93b[_0x2efe('0x20')]||!_0x39a93b[_0x2efe('0x21')]||!_0x39a93b['sentimentRegion']||!_0x39a93b[_0x2efe('0x22')]||!_0x39a93b[_0x2efe('0x23')]){throw new db[(_0x2efe('0x1d'))][(_0x2efe('0x1e'))](_0x2efe('0x24'));}if(!_0x32fda9[_0x2efe('0x10')]){throw new Error(_0x2efe('0x25'));}if(_0x39a93b[_0x2efe('0x21')]===_0x250023['id']){return _0x250023;}else{return db[_0x2efe('0x26')][_0x2efe('0x27')]({'where':{'id':_settings[_0x2efe('0x21')]}});}})[_0x2efe('0xe')](function(_0x1c9032){if(!_0x1c9032){throw new db[(_0x2efe('0x1d'))][(_0x2efe('0x1e'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x1c9032[_0x2efe('0x2b')]||!_0x1c9032[_0x2efe('0xc')]){throw new db[(_0x2efe('0x1d'))][(_0x2efe('0x1e'))](_0x2efe('0x29'));}_0x41039a=_0x1c9032;logger[_0x2efe('0xf')](util[_0x2efe('0xa')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x32fda9['id']));return sentiment(_0x41039a[_0x2efe('0x2b')],_0x41039a[_0x2efe('0xc')],_0x39a93b[_0x2efe('0x36')],_0x32fda9[_0x2efe('0x10')],_0x39a93b[_0x2efe('0x22')]);})['then'](function(_0xa22b48){logger[_0x2efe('0xf')](util[_0x2efe('0xa')](_0x2efe('0x2c'),_0x32fda9['id']));return _0x32fda9[_0x2efe('0x2d')]({'sentiment':_0xa22b48[_0x2efe('0x37')],'sPositive':_0xa22b48[_0x2efe('0x2e')][_0x2efe('0x2f')],'sNegative':_0xa22b48[_0x2efe('0x2e')]['Negative'],'sMixed':_0xa22b48['SentimentScore']['Mixed'],'sNeutral':_0xa22b48[_0x2efe('0x2e')][_0x2efe('0x31')],'transcribeStatus':'COMPLETED'});})[_0x2efe('0xe')](function(){logger['info'](util['format'](_0x2efe('0x1b'),_0x32fda9['id']));_0x3c8910();});}})['catch'](function(_0x1e3000){if(_0x1e3000){if(!_0x1e3000[_0x2efe('0x38')]||_0x1e3000[_0x2efe('0x38')]!=='SequelizeValidationError'){logger[_0x2efe('0x39')](util[_0x2efe('0xa')](_0x2efe('0x3a'),_0x32fda9['id']),util[_0x2efe('0x3b')](_0x1e3000,{'showHidden':![],'depth':null}));}}_0x3c8910();});});}function checkTranscribe(){var _0x4afa37;var _0x26886b;var _0x9a5118;return db['VoiceRecording'][_0x2efe('0x3c')]({'where':{'transcribeStatus':_0x2efe('0x3d')}})[_0x2efe('0xe')](function(_0x3a78f5){if(!_0x3a78f5||!_0x3a78f5[_0x2efe('0x19')]){throw new db['Sequelize'][(_0x2efe('0x1e'))](_0x2efe('0x3e'));}_0x4afa37=_0x3a78f5;return db[_0x2efe('0x3f')]['findOne']({'where':{'id':0x1}});})[_0x2efe('0xe')](function(_0x3fe2c0){if(!_0x3fe2c0){throw new db[(_0x2efe('0x1d'))][(_0x2efe('0x1e'))]('Settings\x20not\x20available');}_0x26886b=_0x3fe2c0;if(!_0x26886b[_0x2efe('0x40')]||!_0x26886b['transcribeAccountId']||!_0x26886b[_0x2efe('0x41')]||!_0x26886b[_0x2efe('0x22')]||!_0x26886b[_0x2efe('0x23')]){throw new db['Sequelize']['ValidationError']('Transcribe\x20not\x20configured');}return db[_0x2efe('0x26')]['findOne']({'where':{'id':_0x26886b[_0x2efe('0x42')]}});})['then'](function(_0x327a10){if(!_0x327a10){throw new db[(_0x2efe('0x1d'))][(_0x2efe('0x1e'))](_0x2efe('0x28'));}if(!_0x327a10[_0x2efe('0x2b')]||!_0x327a10[_0x2efe('0xc')]){throw new db[(_0x2efe('0x1d'))]['ValidationError'](_0x2efe('0x29'));}_0x9a5118=_0x327a10;var _0x3b1da4=[];_0x4afa37[_0x2efe('0x43')](function(_0x41d1b0){_0x3b1da4[_0x2efe('0x44')](checkTranscribeJob(_0x41d1b0,_0x26886b,_0x9a5118));});return BPromise[_0x2efe('0x45')](_0x3b1da4);})['catch'](function(_0x4659ce){if(_0x4659ce){if(!_0x4659ce[_0x2efe('0x38')]||_0x4659ce[_0x2efe('0x38')]!==_0x2efe('0x46')){logger[_0x2efe('0x39')](util['inspect'](_0x4659ce,{'showHidden':![],'depth':null}));}}});}exports[_0x2efe('0x47')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x0647=['error','lodash','request-promise','util','bluebird','../../mysqldb','../../config/logger','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeRegion','transcribeName','then','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','transcripts','length','transcript','update','ValidationError','sentiment','sentimentAccountId','language','bucket','Sequelize','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Negative','Mixed','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','Sentiment\x20Analysis\x20not\x20requested','data2','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','catch','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','Setting','Settings\x20not\x20available','transcribe','Transcribe\x20not\x20configured','transcribeAccountId','push'];(function(_0x1a5b8f,_0x4efdc4){var _0x261922=function(_0x1de731){while(--_0x1de731){_0x1a5b8f['push'](_0x1a5b8f['shift']());}};_0x261922(++_0x4efdc4);}(_0x0647,0xd0));var _0x7064=function(_0x1ae5ab,_0xc5d441){_0x1ae5ab=_0x1ae5ab-0x0;var _0x1ce001=_0x0647[_0x1ae5ab];return _0x1ce001;};var _=require(_0x7064('0x0'));var AWS=require('aws-sdk');var rp=require(_0x7064('0x1'));var util=require(_0x7064('0x2'));var BPromise=require(_0x7064('0x3'));var db=require(_0x7064('0x4'))['db'];var logger=require(_0x7064('0x5'))('transcribe');function getTranscriptionJob(_0x58b306,_0x313dce,_0x34b4d5,_0x31f6a6){return new Promise(function(_0x44b1bb,_0x2b6f9b){var _0x1101e4=new AWS['TranscribeService']({'accessKeyId':_0x313dce,'secretAccessKey':_0x58b306,'region':_0x34b4d5});_0x1101e4['getTranscriptionJob']({'TranscriptionJobName':_0x31f6a6},function(_0x1c85b1,_0x39b7e3){if(_0x1c85b1){return _0x2b6f9b(_0x1c85b1);}else{return _0x44b1bb(_0x39b7e3);}});});}function sentiment(_0x79229e,_0x5c6f0d,_0x38c195,_0x3f3bdd,_0x5f4ba5){return new Promise(function(_0xd2aec9,_0x1465bd){var _0x3fc84f=new AWS['Comprehend']({'accessKeyId':_0x5c6f0d,'secretAccessKey':_0x79229e,'region':_0x38c195});_0x3fc84f[_0x7064('0x6')]({'Text':_0x3f3bdd,'LanguageCode':_0x5f4ba5[_0x7064('0x7')](0x0,0x2)},function(_0x7b702a,_0x6acdd9){if(_0x7b702a){return _0x1465bd(_0x7b702a);}else{return _0xd2aec9(_0x6acdd9);}});});}function checkTranscribeJob(_0x549684,_0x303dcd,_0x4151b6){var _0x268a94;return new BPromise(function(_0x44dcbe,_0x16c9c3){logger[_0x7064('0x8')](util[_0x7064('0x9')](_0x7064('0xa'),_0x549684['id'],_0x549684['transcribeName']));return getTranscriptionJob(_0x4151b6['data1'],_0x4151b6['data2'],_0x303dcd[_0x7064('0xb')],_0x549684[_0x7064('0xc')])[_0x7064('0xd')](function(_0x4b39db){logger[_0x7064('0x8')](util[_0x7064('0x9')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x549684['id'],_0x549684[_0x7064('0xc')],_0x4b39db[_0x7064('0xe')][_0x7064('0xf')]));if(!_0x549684[_0x7064('0x10')]){switch(_0x4b39db[_0x7064('0xe')][_0x7064('0xf')]){case _0x7064('0x11'):var _0x3e8d73={'transcribeStatus':_0x4b39db[_0x7064('0xe')][_0x7064('0xf')],'fileUri':_0x4b39db[_0x7064('0xe')][_0x7064('0x12')][_0x7064('0x13')]};logger['info'](util[_0x7064('0x9')](_0x7064('0x14'),_0x549684['id']));return rp({'uri':_0x4b39db[_0x7064('0xe')][_0x7064('0x12')]['TranscriptFileUri'],'json':!![]})[_0x7064('0xd')](function(_0x51ae69){logger[_0x7064('0x8')](util[_0x7064('0x9')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x549684['id']));if(_0x51ae69&&_0x51ae69[_0x7064('0x15')]&&_0x51ae69[_0x7064('0x15')][_0x7064('0x16')]&&_0x51ae69[_0x7064('0x15')][_0x7064('0x16')]['length']){_0x3e8d73['fileText']='';for(var _0x33f470=0x0;_0x33f470<_0x51ae69['results'][_0x7064('0x16')][_0x7064('0x17')];_0x33f470++){_0x3e8d73[_0x7064('0x10')]+=_0x51ae69['results'][_0x7064('0x16')][_0x33f470][_0x7064('0x18')]+'';}}return _0x549684[_0x7064('0x19')](_0x3e8d73);})[_0x7064('0xd')](function(){logger[_0x7064('0x8')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x549684['id']));if(!_0x549684['tempSentiment']){throw new db['Sequelize'][(_0x7064('0x1a'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x303dcd[_0x7064('0x1b')]||!_0x303dcd[_0x7064('0x1c')]||!_0x303dcd['sentimentRegion']||!_0x303dcd[_0x7064('0x1d')]||!_0x303dcd[_0x7064('0x1e')]){throw new db[(_0x7064('0x1f'))][(_0x7064('0x1a'))](_0x7064('0x20'));}if(!_0x3e8d73['fileText']){throw new Error(_0x7064('0x21'));}if(_0x303dcd[_0x7064('0x1c')]===_0x4151b6['id']){return _0x4151b6;}else{return db[_0x7064('0x22')][_0x7064('0x23')]({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x4deef5){if(!_0x4deef5){throw new db[(_0x7064('0x1f'))]['ValidationError'](_0x7064('0x24'));}if(!_0x4deef5[_0x7064('0x25')]||!_0x4deef5['data2']){throw new db[(_0x7064('0x1f'))][(_0x7064('0x1a'))](_0x7064('0x26'));}_0x268a94=_0x4deef5;logger[_0x7064('0x8')](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x549684['id']));return sentiment(_0x268a94[_0x7064('0x25')],_0x268a94['data2'],_0x303dcd[_0x7064('0x27')],_0x3e8d73[_0x7064('0x10')],_0x303dcd[_0x7064('0x1d')]);})['then'](function(_0x181435){logger[_0x7064('0x8')](util[_0x7064('0x9')](_0x7064('0x28'),_0x549684['id']));return _0x549684['update']({'sentiment':_0x181435['Sentiment'],'sPositive':_0x181435[_0x7064('0x29')][_0x7064('0x2a')],'sNegative':_0x181435['SentimentScore'][_0x7064('0x2b')],'sMixed':_0x181435[_0x7064('0x29')][_0x7064('0x2c')],'sNeutral':_0x181435[_0x7064('0x29')][_0x7064('0x2d')]});})[_0x7064('0xd')](function(){logger[_0x7064('0x8')](util[_0x7064('0x9')](_0x7064('0x2e'),_0x549684['id']));_0x44dcbe();});case _0x7064('0x2f'):return _0x549684[_0x7064('0x19')]({'transcribeStatus':'FAILED','failureReason':_0x4b39db[_0x7064('0xe')][_0x7064('0x30')]})[_0x7064('0xd')](function(){logger[_0x7064('0x8')](util[_0x7064('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x549684['id']));_0x44dcbe();});default:logger[_0x7064('0x8')](util[_0x7064('0x9')](_0x7064('0x31'),_0x549684['id']));break;}}else{return BPromise[_0x7064('0x32')]()[_0x7064('0xd')](function(){if(!_0x549684[_0x7064('0x33')]){throw new db['Sequelize'][(_0x7064('0x1a'))](_0x7064('0x34'));}if(!_0x303dcd['sentiment']||!_0x303dcd[_0x7064('0x1c')]||!_0x303dcd[_0x7064('0x27')]||!_0x303dcd[_0x7064('0x1d')]||!_0x303dcd[_0x7064('0x1e')]){throw new db[(_0x7064('0x1f'))][(_0x7064('0x1a'))](_0x7064('0x20'));}if(!_0x549684[_0x7064('0x10')]){throw new Error(_0x7064('0x21'));}if(_0x303dcd[_0x7064('0x1c')]===_0x4151b6['id']){return _0x4151b6;}else{return db[_0x7064('0x22')][_0x7064('0x23')]({'where':{'id':_settings[_0x7064('0x1c')]}});}})['then'](function(_0x20e465){if(!_0x20e465){throw new db[(_0x7064('0x1f'))]['ValidationError'](_0x7064('0x24'));}if(!_0x20e465[_0x7064('0x25')]||!_0x20e465[_0x7064('0x35')]){throw new db[(_0x7064('0x1f'))][(_0x7064('0x1a'))](_0x7064('0x26'));}_0x268a94=_0x20e465;logger['info'](util['format'](_0x7064('0x36'),_0x549684['id']));return sentiment(_0x268a94[_0x7064('0x25')],_0x268a94['data2'],_0x303dcd[_0x7064('0x27')],_0x549684[_0x7064('0x10')],_0x303dcd['language']);})[_0x7064('0xd')](function(_0x48127d){logger['info'](util['format'](_0x7064('0x28'),_0x549684['id']));return _0x549684[_0x7064('0x19')]({'sentiment':_0x48127d['Sentiment'],'sPositive':_0x48127d[_0x7064('0x29')][_0x7064('0x2a')],'sNegative':_0x48127d['SentimentScore'][_0x7064('0x2b')],'sMixed':_0x48127d[_0x7064('0x29')]['Mixed'],'sNeutral':_0x48127d[_0x7064('0x29')][_0x7064('0x2d')],'transcribeStatus':_0x7064('0x11')});})['then'](function(){logger['info'](util[_0x7064('0x9')](_0x7064('0x2e'),_0x549684['id']));_0x44dcbe();});}})[_0x7064('0x37')](function(_0xf77b74){if(_0xf77b74){if(!_0xf77b74[_0x7064('0x38')]||_0xf77b74[_0x7064('0x38')]!==_0x7064('0x39')){logger['error'](util['format'](_0x7064('0x3a'),_0x549684['id']),util[_0x7064('0x3b')](_0xf77b74,{'showHidden':![],'depth':null}));}}_0x44dcbe();});});}function checkTranscribe(){var _0x37cad7;var _0x39d9ad;var _0x1db6f7;return db[_0x7064('0x3c')][_0x7064('0x3d')]({'where':{'transcribeStatus':'IN_PROGRESS'}})['then'](function(_0x5f2278){if(!_0x5f2278||!_0x5f2278['length']){throw new db['Sequelize']['ValidationError']('No\x20transcribe\x20job\x20to\x20check');}_0x37cad7=_0x5f2278;return db[_0x7064('0x3e')]['findOne']({'where':{'id':0x1}});})[_0x7064('0xd')](function(_0x249e43){if(!_0x249e43){throw new db[(_0x7064('0x1f'))][(_0x7064('0x1a'))](_0x7064('0x3f'));}_0x39d9ad=_0x249e43;if(!_0x39d9ad[_0x7064('0x40')]||!_0x39d9ad['transcribeAccountId']||!_0x39d9ad['transcribeRegion']||!_0x39d9ad['language']||!_0x39d9ad[_0x7064('0x1e')]){throw new db[(_0x7064('0x1f'))]['ValidationError'](_0x7064('0x41'));}return db[_0x7064('0x22')][_0x7064('0x23')]({'where':{'id':_0x39d9ad[_0x7064('0x42')]}});})[_0x7064('0xd')](function(_0x4f7e16){if(!_0x4f7e16){throw new db['Sequelize']['ValidationError'](_0x7064('0x24'));}if(!_0x4f7e16['data1']||!_0x4f7e16[_0x7064('0x35')]){throw new db[(_0x7064('0x1f'))][(_0x7064('0x1a'))](_0x7064('0x26'));}_0x1db6f7=_0x4f7e16;var _0x3c73a6=[];_0x37cad7['forEach'](function(_0x53f09f){_0x3c73a6[_0x7064('0x43')](checkTranscribeJob(_0x53f09f,_0x39d9ad,_0x1db6f7));});return BPromise['all'](_0x3c73a6);})[_0x7064('0x37')](function(_0x5a876f){if(_0x5a876f){if(!_0x5a876f[_0x7064('0x38')]||_0x5a876f[_0x7064('0x38')]!==_0x7064('0x39')){logger[_0x7064('0x44')](util['inspect'](_0x5a876f,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 56f1b81..64ed206 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d56=['socket.io-emitter','findAll','lastMsgAt','subtract','hours','length','map','info','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','then','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','join','emit','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','../logger','schedule','redis','defaults','localhost'];(function(_0x555b2a,_0x4992ec){var _0x42a79f=function(_0x1441cf){while(--_0x1441cf){_0x555b2a['push'](_0x555b2a['shift']());}};_0x42a79f(++_0x4992ec);}(_0x0d56,0x6c));var _0x60d5=function(_0x1389e3,_0x2ed4bd){_0x1389e3=_0x1389e3-0x0;var _0x3f6873=_0x0d56[_0x1389e3];return _0x3f6873;};'use strict';var _=require(_0x60d5('0x0'));var moment=require(_0x60d5('0x1'));var Redis=require(_0x60d5('0x2'));var util=require('util');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var logger=require(_0x60d5('0x3'))(_0x60d5('0x4'));config[_0x60d5('0x5')]=_[_0x60d5('0x6')](config[_0x60d5('0x5')],{'host':_0x60d5('0x7'),'port':0x18eb});var io=require(_0x60d5('0x8'))(new Redis(config[_0x60d5('0x5')]));function closeInteractions(){var _0x3b4f74=[];return db['WhatsappInteraction'][_0x60d5('0x9')]({'raw':!![],'attributes':['id',_0x60d5('0xa')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x60d5('0xb')](0x18,_0x60d5('0xc'))}}})['then'](function(_0x30fb23){if(_0x30fb23&&_0x30fb23[_0x60d5('0xd')]){_0x3b4f74=_[_0x60d5('0xe')](_0x30fb23||[],'id');logger[_0x60d5('0xf')]('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x3b4f74['join']());return db['WhatsappInteraction']['update']({'closeReason':_0x60d5('0x10'),'disposition':_0x60d5('0x11'),'closed':!![],'closedAt':moment()[_0x60d5('0x12')](_0x60d5('0x13'))},{'where':{'id':_0x3b4f74}});}})[_0x60d5('0x14')](function(){if(_0x3b4f74&&_0x3b4f74[_0x60d5('0xd')]){logger['info'](_0x60d5('0x15'),_0x3b4f74[_0x60d5('0x16')]());for(var _0x2a8452=0x0;_0x2a8452<_0x3b4f74[_0x60d5('0xd')];_0x2a8452++){io[_0x60d5('0x17')]('whatsappInteraction:update',{'id':_0x3b4f74[_0x2a8452],'closed':!![]});}}})[_0x60d5('0x18')](function(_0x47cea6){logger[_0x60d5('0x19')](_0x60d5('0x1a'),_0x47cea6?util[_0x60d5('0x1b')](_0x47cea6,{'showHidden':![],'depth':null}):'');});}exports[_0x60d5('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x7ea4=['timeout','YYYY-MM-DD\x20HH:mm:ss','then','length','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','ioredis','util','../../config/environment','../logger','redis','localhost','WhatsappInteraction','lastMsgAt','subtract','map','info','join','update'];(function(_0x3c4cae,_0x4f2faf){var _0x2011e7=function(_0x40ffa8){while(--_0x40ffa8){_0x3c4cae['push'](_0x3c4cae['shift']());}};_0x2011e7(++_0x4f2faf);}(_0x7ea4,0x178));var _0x47ea=function(_0x258919,_0x1754e6){_0x258919=_0x258919-0x0;var _0xfbd68b=_0x7ea4[_0x258919];return _0xfbd68b;};'use strict';var _=require(_0x47ea('0x0'));var moment=require('moment');var Redis=require(_0x47ea('0x1'));var util=require(_0x47ea('0x2'));var config=require(_0x47ea('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0x47ea('0x4'))('schedule');config[_0x47ea('0x5')]=_['defaults'](config['redis'],{'host':_0x47ea('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x47ea('0x5')]));function closeInteractions(){var _0x5a9d19=[];return db[_0x47ea('0x7')]['findAll']({'raw':!![],'attributes':['id',_0x47ea('0x8')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x47ea('0x9')](0x18,'hours')}}})['then'](function(_0x32f169){if(_0x32f169&&_0x32f169['length']){_0x5a9d19=_[_0x47ea('0xa')](_0x32f169||[],'id');logger[_0x47ea('0xb')]('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x5a9d19[_0x47ea('0xc')]());return db[_0x47ea('0x7')][_0x47ea('0xd')]({'closeReason':'system','disposition':_0x47ea('0xe'),'closed':!![],'closedAt':moment()['format'](_0x47ea('0xf'))},{'where':{'id':_0x5a9d19}});}})[_0x47ea('0x10')](function(){if(_0x5a9d19&&_0x5a9d19[_0x47ea('0x11')]){logger[_0x47ea('0xb')](_0x47ea('0x12'),_0x5a9d19[_0x47ea('0xc')]());for(var _0x43cfdc=0x0;_0x43cfdc<_0x5a9d19[_0x47ea('0x11')];_0x43cfdc++){io[_0x47ea('0x13')](_0x47ea('0x14'),{'id':_0x5a9d19[_0x43cfdc],'closed':!![]});}}})[_0x47ea('0x15')](function(_0x5da3da){logger[_0x47ea('0x16')](_0x47ea('0x17'),_0x5da3da?util[_0x47ea('0x18')](_0x5da3da,{'showHidden':![],'depth':null}):'');});}exports[_0x47ea('0x19')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index a9d5ea5..696fda8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bfc=['innocenzo.biondo','@xcally.com','now','CmContact','bulkCreate','then','CmHopper','destroy','log','hopper1','finished\x20populating','hopper2','catch','util','../mysqldb','push','Innocenzo','Biondo'];(function(_0x259706,_0x2937c9){var _0x1524a8=function(_0x29fac1){while(--_0x29fac1){_0x259706['push'](_0x259706['shift']());}};_0x1524a8(++_0x2937c9);}(_0x7bfc,0x9d));var _0xc7bf=function(_0x34a1f1,_0x57747d){_0x34a1f1=_0x34a1f1-0x0;var _0x5a546f=_0x7bfc[_0x34a1f1];return _0x5a546f;};'use strict';var util=require(_0xc7bf('0x0'));var db=require(_0xc7bf('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xc7bf('0x2')]({'id':i,'firstName':_0xc7bf('0x3')+i,'lastName':_0xc7bf('0x4')+i,'phone':0xf879fb460+i,'email':_0xc7bf('0x5')+i+_0xc7bf('0x6')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xc7bf('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xc7bf('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xc7bf('0x7')](),'updatedAt':Date[_0xc7bf('0x7')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':_0xc7bf('0x3')+i,'lastName':_0xc7bf('0x4')+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0xc7bf('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xc7bf('0x2')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0xc7bf('0x7')]()});}db[_0xc7bf('0x8')]['destroy']({'where':{}})['then'](function(){return db[_0xc7bf('0x8')][_0xc7bf('0x9')](contacts);})[_0xc7bf('0xa')](function(){console['log']('finished\x20populating','contacts1');return db[_0xc7bf('0xb')][_0xc7bf('0xc')]({'where':{}});})[_0xc7bf('0xa')](function(){return db[_0xc7bf('0xb')][_0xc7bf('0x9')](hopper);})[_0xc7bf('0xa')](function(){console[_0xc7bf('0xd')]('finished\x20populating',_0xc7bf('0xe'));return db[_0xc7bf('0x8')][_0xc7bf('0x9')](contacts2);})[_0xc7bf('0xa')](function(){console['log'](_0xc7bf('0xf'),'contacts2');return db[_0xc7bf('0xb')]['bulkCreate'](hopper2);})['then'](function(){console['log']('finished\x20populating',_0xc7bf('0x10'));})[_0xc7bf('0x11')](function(_0x3659b9){console[_0xc7bf('0xd')](_0x3659b9);});
\ No newline at end of file
+var _0x7cf8=['push','Innocenzo','Biondo','@xcally.com','now','innocenzo.biondo','CmContact','bulkCreate','then','log','finished\x20populating','contacts1','CmHopper','destroy','hopper1','contacts2','hopper2','catch','../mysqldb'];(function(_0x23b998,_0x2dae86){var _0x304dc2=function(_0x3807f0){while(--_0x3807f0){_0x23b998['push'](_0x23b998['shift']());}};_0x304dc2(++_0x2dae86);}(_0x7cf8,0x155));var _0x87cf=function(_0x2e40a2,_0x5d720f){_0x2e40a2=_0x2e40a2-0x0;var _0x38510a=_0x7cf8[_0x2e40a2];return _0x38510a;};'use strict';var util=require('util');var db=require(_0x87cf('0x0'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x87cf('0x1')]({'id':i,'firstName':_0x87cf('0x2')+i,'lastName':_0x87cf('0x3')+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0x87cf('0x4')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x87cf('0x1')]({'id':i,'active':![],'scheduledat':Date[_0x87cf('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x87cf('0x5')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x87cf('0x3')+i,'phone':0xf879fb460+i,'email':_0x87cf('0x6')+i+_0x87cf('0x4')});}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[_0x87cf('0x5')](),'updatedAt':Date[_0x87cf('0x5')]()});}db[_0x87cf('0x7')]['destroy']({'where':{}})['then'](function(){return db[_0x87cf('0x7')][_0x87cf('0x8')](contacts);})[_0x87cf('0x9')](function(){console[_0x87cf('0xa')](_0x87cf('0xb'),_0x87cf('0xc'));return db[_0x87cf('0xd')][_0x87cf('0xe')]({'where':{}});})[_0x87cf('0x9')](function(){return db[_0x87cf('0xd')][_0x87cf('0x8')](hopper);})[_0x87cf('0x9')](function(){console['log'](_0x87cf('0xb'),_0x87cf('0xf'));return db[_0x87cf('0x7')][_0x87cf('0x8')](contacts2);})[_0x87cf('0x9')](function(){console[_0x87cf('0xa')](_0x87cf('0xb'),_0x87cf('0x10'));return db[_0x87cf('0xd')]['bulkCreate'](hopper2);})[_0x87cf('0x9')](function(){console['log'](_0x87cf('0xb'),_0x87cf('0x11'));})[_0x87cf('0x12')](function(_0x37cf4d){console[_0x87cf('0xa')](_0x37cf4d);});
\ No newline at end of file
index 0aaa08d..aa36db4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e3e=['yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','User','bulkCreate','then','add\x20user','catch','log','util','format','agent','%s%s','%s%s@xcally.com','friend','udp','wss','ulaw'];(function(_0x1f236e,_0x1d6e98){var _0x55a487=function(_0x2cd5f7){while(--_0x2cd5f7){_0x1f236e['push'](_0x1f236e['shift']());}};_0x55a487(++_0x1d6e98);}(_0x9e3e,0x1ef));var _0xe9e3=function(_0x17516a,_0x2824c1){_0x17516a=_0x17516a-0x0;var _0x22e61f=_0x9e3e[_0x17516a];return _0x22e61f;};'use strict';var util=require(_0xe9e3('0x0'));var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util[_0xe9e3('0x1')]('%s%s',_0xe9e3('0x2'),i),'fullname':util['format'](_0xe9e3('0x3'),_0xe9e3('0x2'),i),'email':util['format'](_0xe9e3('0x4'),_0xe9e3('0x2'),i),'role':_0xe9e3('0x2'),'password':'password','internal':0xfa0+i,'type':_0xe9e3('0x5'),'transport':[_0xe9e3('0x6'),'ws',_0xe9e3('0x7')],'disallow':['all'],'allow':[_0xe9e3('0x8')],'defaultuser':util['format'](_0xe9e3('0x3'),_0xe9e3('0x2'),i),'encryption':_0xe9e3('0x9'),'avpf':_0xe9e3('0x9'),'force_avp':_0xe9e3('0x9'),'icesupport':_0xe9e3('0x9'),'dtlsenable':_0xe9e3('0x9'),'dtlsverify':'no','dtlscertfile':_0xe9e3('0xa'),'dtlsprivatekey':_0xe9e3('0xb'),'dtlssetup':'actpass','callerid':util['format']('\x22%s\x22\x20<%s>',util[_0xe9e3('0x1')](_0xe9e3('0x3'),_0xe9e3('0x2'),i),0xfa0+i)});}db[_0xe9e3('0xc')][_0xe9e3('0xd')](users)[_0xe9e3('0xe')](function(){console['log'](_0xe9e3('0xf'));})[_0xe9e3('0x10')](function(_0xc63cdf){console[_0xe9e3('0x11')](_0xc63cdf);});
\ No newline at end of file
+var _0xd9a9=['password','udp','wss','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','then','add\x20user','catch','log','util','../mysqldb','push','format','%s%s','agent','%s%s@xcally.com'];(function(_0x9307ea,_0x38968a){var _0x295554=function(_0x342dcf){while(--_0x342dcf){_0x9307ea['push'](_0x9307ea['shift']());}};_0x295554(++_0x38968a);}(_0xd9a9,0x11f));var _0x9d9a=function(_0x54331b,_0x1524f3){_0x54331b=_0x54331b-0x0;var _0x57a6ae=_0xd9a9[_0x54331b];return _0x57a6ae;};'use strict';var util=require(_0x9d9a('0x0'));var db=require(_0x9d9a('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x9d9a('0x2')]({'name':util[_0x9d9a('0x3')](_0x9d9a('0x4'),_0x9d9a('0x5'),i),'fullname':util[_0x9d9a('0x3')](_0x9d9a('0x4'),_0x9d9a('0x5'),i),'email':util[_0x9d9a('0x3')](_0x9d9a('0x6'),'agent',i),'role':_0x9d9a('0x5'),'password':_0x9d9a('0x7'),'internal':0xfa0+i,'type':'friend','transport':[_0x9d9a('0x8'),'ws',_0x9d9a('0x9')],'disallow':['all'],'allow':['ulaw'],'defaultuser':util[_0x9d9a('0x3')](_0x9d9a('0x4'),_0x9d9a('0x5'),i),'encryption':_0x9d9a('0xa'),'avpf':'yes','force_avp':_0x9d9a('0xa'),'icesupport':_0x9d9a('0xa'),'dtlsenable':_0x9d9a('0xa'),'dtlsverify':'no','dtlscertfile':_0x9d9a('0xb'),'dtlsprivatekey':_0x9d9a('0xc'),'dtlssetup':_0x9d9a('0xd'),'callerid':util[_0x9d9a('0x3')](_0x9d9a('0xe'),util[_0x9d9a('0x3')](_0x9d9a('0x4'),_0x9d9a('0x5'),i),0xfa0+i)});}db[_0x9d9a('0xf')][_0x9d9a('0x10')](users)[_0x9d9a('0x11')](function(){console['log'](_0x9d9a('0x12'));})[_0x9d9a('0x13')](function(_0x252ac8){console[_0x9d9a('0x14')](_0x252ac8);});
\ No newline at end of file
index a3e0304..efce2ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd65f=['removeWhatsappInteractions','catch','join','default','setMaxListeners','request','remoteAddress','connection','remotePort','connectedAt','log','SocketIO\x20','address','disconnect','DISCONNECTED','CONNECTED','util','../mysqldb','./environment','name','Agents','role','telephone','agent','type','UserProfileSection','findOne','then','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','Telephones','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','Campaign','format','%s:queue:%s','user:%s','handshake','query','User','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','voice:outbound','hasOwnProperty','include','push','VoiceQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','ChatQueue','MailQueues','voice:inbound','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getOpenchannelQueues','all','length','voice','fax','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','emit','MailInteractions','removeMailInteractions','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions'];(function(_0x5e3562,_0x89b7b7){var _0x1a1b3b=function(_0x1047a2){while(--_0x1047a2){_0x5e3562['push'](_0x5e3562['shift']());}};_0x1a1b3b(++_0x89b7b7);}(_0xd65f,0x198));var _0xfd65=function(_0x37dd9d,_0x317c54){_0x37dd9d=_0x37dd9d-0x0;var _0x33ec83=_0xd65f[_0x37dd9d];return _0x33ec83;};'use strict';var _=require('lodash');var util=require(_0xfd65('0x0'));var BPromise=require('bluebird');var db=require(_0xfd65('0x1'))['db'];var config=require(_0xfd65('0x2'));var queryQueues={'attributes':['id',_0xfd65('0x3')],'include':[{'as':_0xfd65('0x4'),'model':db['User'],'attributes':['id',_0xfd65('0x3'),_0xfd65('0x5')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0xfd65('0x6')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0xfd65('0x3')],'where':{'role':_0xfd65('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xfd65('0x3'),_0xfd65('0x8')],'where':{'type':'ivr'}};function getAssociatedResources(_0x1bba87,_0x195b6e,_0x53d92a){return db[_0xfd65('0x9')][_0xfd65('0xa')]({'where':{'name':_0x1bba87,'userProfileId':_0x195b6e},'raw':!![]})[_0xfd65('0xb')](function(_0x4cccb6){if(_0x4cccb6){if(_0x4cccb6['autoAssociation']){switch(_0x1bba87){case _0xfd65('0xc'):case _0xfd65('0xd'):case _0xfd65('0xe'):case _0xfd65('0xf'):case'MailQueues':case _0xfd65('0x10'):case _0xfd65('0x11'):return db[_0x53d92a]['findAll'](queryQueues);case _0xfd65('0x12'):return db[_0x53d92a][_0xfd65('0x13')](queryTelephones);case _0xfd65('0x14'):return db[_0x53d92a]['findAll'](queryTrunks);case _0xfd65('0x15'):return db[_0x53d92a]['findAll'](queryCampaigns);}}else{return db[_0xfd65('0x16')]['findAll']({'attributes':[_0xfd65('0x17')],'where':{'sectionId':_0x4cccb6['id']},'raw':!![]})[_0xfd65('0xb')](function(_0x3f469d){if(_0x3f469d){var _0x21a2dc={'where':{'id':_[_0xfd65('0x18')](_0x3f469d,_0xfd65('0x17'))},'raw':!![]};switch(_0x53d92a){case'User':_0x21a2dc[_0xfd65('0x19')][_0xfd65('0x5')]='telephone';break;case _0xfd65('0x1a'):_0x21a2dc[_0xfd65('0x19')]['type']='ivr';break;}return db[_0x53d92a][_0xfd65('0x13')](_0x21a2dc);}else{return[];}});}}else{return[];}})[_0xfd65('0xb')](function(_0x42ba90){return _0x42ba90;});}function joinOrLeaveQueues(_0x4d5f85,_0x41561e,_0x13e773,_0x278d91){_0x4d5f85[_0x41561e](util[_0xfd65('0x1b')](_0xfd65('0x1c'),_0x13e773,_0x278d91[_0xfd65('0x3')]));if(_0x278d91[_0xfd65('0x4')]){for(var _0x3f6c5c=0x0;_0x3f6c5c<_0x278d91[_0xfd65('0x4')]['length'];_0x3f6c5c+=0x1){_0x4d5f85[_0x41561e](util[_0xfd65('0x1b')](_0xfd65('0x1d'),_0x278d91[_0xfd65('0x4')][_0x3f6c5c][_0xfd65('0x3')]));}}}function joinOrLeave(_0x52e2a1,_0x4042d8,_0x53551c){var _0x279d4d;if(_0x52e2a1[_0xfd65('0x1e')][_0xfd65('0x1f')]['id']){db[_0xfd65('0x20')][_0xfd65('0x21')]({'attributes':['id',_0xfd65('0x3'),_0xfd65('0x5'),_0xfd65('0x22')],'where':{'id':_0x52e2a1[_0xfd65('0x1e')]['query']['id']},'include':[{'model':db[_0xfd65('0x23')],'as':_0xfd65('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xfd65('0x25')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xfd65('0x26')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xfd65('0x27')],'as':_0xfd65('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0xfd65('0x29')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xfd65('0xb')](function(_0x5de6d4){if(_0x5de6d4){_0x279d4d=_0x5de6d4;_0x52e2a1[_0x4042d8](util[_0xfd65('0x1b')]('user:%s',_0x5de6d4['name']));var _0xaf85fd=[];switch(_0x5de6d4['role']){case'admin':_0x52e2a1[_0x4042d8]('voice:inbound');_0x52e2a1[_0x4042d8](_0xfd65('0x2a'));if(queryQueues[_0xfd65('0x2b')](_0xfd65('0x2c'))){delete queryQueues[_0xfd65('0x2c')];}_0xaf85fd[_0xfd65('0x2d')](db[_0xfd65('0x2e')][_0xfd65('0x13')](queryQueues));_0xaf85fd[_0xfd65('0x2d')](db['ChatQueue']['findAll'](queryQueues));_0xaf85fd[_0xfd65('0x2d')](db[_0xfd65('0x2f')][_0xfd65('0x13')](queryQueues));_0xaf85fd[_0xfd65('0x2d')](db[_0xfd65('0x30')][_0xfd65('0x13')](queryQueues));_0xaf85fd[_0xfd65('0x2d')](db[_0xfd65('0x31')][_0xfd65('0x13')](queryQueues));_0xaf85fd[_0xfd65('0x2d')](db[_0xfd65('0x32')][_0xfd65('0x13')](queryQueues));_0xaf85fd[_0xfd65('0x2d')](db[_0xfd65('0x33')][_0xfd65('0x13')](queryQueues));_0xaf85fd[_0xfd65('0x2d')](db[_0xfd65('0x20')][_0xfd65('0x13')](queryTelephones));_0xaf85fd[_0xfd65('0x2d')](db[_0xfd65('0x34')]['findAll'](queryTrunks));_0xaf85fd[_0xfd65('0x2d')](db[_0xfd65('0x1a')]['findAll'](queryCampaigns));_0xaf85fd[_0xfd65('0x2d')](db[_0xfd65('0x20')][_0xfd65('0x13')](queryAgents));break;case _0xfd65('0x35'):_0x52e2a1[_0x4042d8]('voice:inbound');_0x52e2a1[_0x4042d8](_0xfd65('0x2a'));_0xaf85fd['push'](getAssociatedResources(_0xfd65('0xc'),_0x5de6d4[_0xfd65('0x22')],_0xfd65('0x2e')));_0xaf85fd[_0xfd65('0x2d')](getAssociatedResources(_0xfd65('0xd'),_0x5de6d4[_0xfd65('0x22')],_0xfd65('0x36')));_0xaf85fd[_0xfd65('0x2d')](getAssociatedResources(_0xfd65('0xe'),_0x5de6d4[_0xfd65('0x22')],_0xfd65('0x2f')));_0xaf85fd[_0xfd65('0x2d')](getAssociatedResources('SmsQueues',_0x5de6d4[_0xfd65('0x22')],_0xfd65('0x30')));_0xaf85fd[_0xfd65('0x2d')](getAssociatedResources(_0xfd65('0x37'),_0x5de6d4[_0xfd65('0x22')],_0xfd65('0x31')));_0xaf85fd[_0xfd65('0x2d')](getAssociatedResources('OpenchannelQueues',_0x5de6d4[_0xfd65('0x22')],'OpenchannelQueue'));_0xaf85fd['push'](getAssociatedResources('WhatsappQueues',_0x5de6d4[_0xfd65('0x22')],_0xfd65('0x33')));_0xaf85fd['push'](getAssociatedResources(_0xfd65('0x12'),_0x5de6d4[_0xfd65('0x22')],'User'));_0xaf85fd['push'](getAssociatedResources(_0xfd65('0x14'),_0x5de6d4[_0xfd65('0x22')],'Trunk'));_0xaf85fd[_0xfd65('0x2d')](getAssociatedResources('IvrCampaigns',_0x5de6d4[_0xfd65('0x22')],'Campaign'));_0xaf85fd['push'](db[_0xfd65('0x20')][_0xfd65('0x13')](queryAgents));break;case'agent':_0x52e2a1[_0x4042d8](_0xfd65('0x38'));_0x52e2a1[_0x4042d8]('voice:outbound');_0xaf85fd['push'](_0x5de6d4[_0xfd65('0x39')]({'attributes':['id',_0xfd65('0x3')]}));_0xaf85fd[_0xfd65('0x2d')](_0x5de6d4[_0xfd65('0x3a')]({'attributes':['id',_0xfd65('0x3')]}));_0xaf85fd['push'](_0x5de6d4[_0xfd65('0x3b')]({'attributes':['id',_0xfd65('0x3')]}));_0xaf85fd[_0xfd65('0x2d')](_0x5de6d4[_0xfd65('0x3c')]({'attributes':['id',_0xfd65('0x3')]}));_0xaf85fd[_0xfd65('0x2d')](_0x5de6d4['getMailQueues']({'attributes':['id','name']}));_0xaf85fd[_0xfd65('0x2d')](_0x5de6d4[_0xfd65('0x3d')]({'attributes':['id',_0xfd65('0x3')]}));_0xaf85fd[_0xfd65('0x2d')](_0x5de6d4['getWhatsappQueues']({'attributes':['id',_0xfd65('0x3')]}));break;}return BPromise[_0xfd65('0x3e')](_0xaf85fd);}})[_0xfd65('0xb')](function(_0x128f60){if(_0x128f60&&_0x128f60['length']){for(var _0x5cd3fe=0x0;_0x5cd3fe<_0x128f60[_0xfd65('0x3f')];_0x5cd3fe+=0x1){for(var _0x58df0c=0x0;_0x58df0c<_0x128f60[_0x5cd3fe][_0xfd65('0x3f')];_0x58df0c+=0x1){switch(_0x5cd3fe){case 0x0:joinOrLeaveQueues(_0x52e2a1,_0x4042d8,_0xfd65('0x40'),_0x128f60[_0x5cd3fe][_0x58df0c]);break;case 0x1:joinOrLeaveQueues(_0x52e2a1,_0x4042d8,'chat',_0x128f60[_0x5cd3fe][_0x58df0c]);break;case 0x2:joinOrLeaveQueues(_0x52e2a1,_0x4042d8,_0xfd65('0x41'),_0x128f60[_0x5cd3fe][_0x58df0c]);break;case 0x3:joinOrLeaveQueues(_0x52e2a1,_0x4042d8,'sms',_0x128f60[_0x5cd3fe][_0x58df0c]);break;case 0x4:joinOrLeaveQueues(_0x52e2a1,_0x4042d8,_0xfd65('0x42'),_0x128f60[_0x5cd3fe][_0x58df0c]);break;case 0x5:joinOrLeaveQueues(_0x52e2a1,_0x4042d8,_0xfd65('0x43'),_0x128f60[_0x5cd3fe][_0x58df0c]);break;case 0x6:joinOrLeaveQueues(_0x52e2a1,_0x4042d8,_0xfd65('0x44'),_0x128f60[_0x5cd3fe][_0x58df0c]);break;case 0x7:if(_0x279d4d[_0xfd65('0x5')]!==_0xfd65('0x7'))_0x52e2a1[_0x4042d8](util[_0xfd65('0x1b')](_0xfd65('0x45'),_0x128f60[_0x5cd3fe][_0x58df0c][_0xfd65('0x3')]));break;case 0x8:if(_0x279d4d[_0xfd65('0x5')]!==_0xfd65('0x7'))_0x52e2a1[_0x4042d8](util[_0xfd65('0x1b')](_0xfd65('0x46'),_0x128f60[_0x5cd3fe][_0x58df0c][_0xfd65('0x3')]));break;case 0x9:if(_0x279d4d[_0xfd65('0x5')]!==_0xfd65('0x7'))_0x52e2a1[_0x4042d8](util[_0xfd65('0x1b')](_0xfd65('0x47'),_0x128f60[_0x5cd3fe][_0x58df0c][_0xfd65('0x8')],_0x128f60[_0x5cd3fe][_0x58df0c][_0xfd65('0x3')]));break;case 0xa:_0x52e2a1[_0x4042d8](util[_0xfd65('0x1b')](_0xfd65('0x1d'),_0x128f60[_0x5cd3fe][_0x58df0c][_0xfd65('0x3')]));break;}}}}})[_0xfd65('0xb')](function(){if(_0x4042d8===_0xfd65('0x48')){var _0xf1a4f2=_[_0xfd65('0x18')](_0x279d4d['ChatInteractions'],'id');return _0x279d4d['removeChatInteractions'](_0xf1a4f2)[_0xfd65('0xb')](function(){for(var _0x139a2d=0x0;_0x139a2d<_0xf1a4f2[_0xfd65('0x3f')];_0x139a2d+=0x1){_0x53551c[_0xfd65('0x49')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0xf1a4f2[_0x139a2d]),'UserId':Number(_0x279d4d['id'])});}});}})['then'](function(){if(_0x4042d8===_0xfd65('0x48')){var _0x549638=_['map'](_0x279d4d[_0xfd65('0x4a')],'id');return _0x279d4d[_0xfd65('0x4b')](_0x549638)[_0xfd65('0xb')](function(){for(var _0x550885=0x0;_0x550885<_0x549638[_0xfd65('0x3f')];_0x550885+=0x1){_0x53551c[_0xfd65('0x49')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x549638[_0x550885]),'UserId':Number(_0x279d4d['id'])});}});}})[_0xfd65('0xb')](function(){if(_0x4042d8===_0xfd65('0x48')){var _0x4fbe68=_[_0xfd65('0x18')](_0x279d4d[_0xfd65('0x4c')],'id');return _0x279d4d[_0xfd65('0x4d')](_0x4fbe68)[_0xfd65('0xb')](function(){for(var _0x4a17e8=0x0;_0x4a17e8<_0x4fbe68[_0xfd65('0x3f')];_0x4a17e8+=0x1){_0x53551c[_0xfd65('0x49')](_0xfd65('0x4e'),{'FaxInteractionId':Number(_0x4fbe68[_0x4a17e8]),'UserId':Number(_0x279d4d['id'])});}});}})[_0xfd65('0xb')](function(){if(_0x4042d8===_0xfd65('0x48')){var _0x3b6d68=_[_0xfd65('0x18')](_0x279d4d['SmsInteractions'],'id');return _0x279d4d['removeSmsInteractions'](_0x3b6d68)['then'](function(){for(var _0x192027=0x0;_0x192027<_0x3b6d68[_0xfd65('0x3f')];_0x192027+=0x1){_0x53551c[_0xfd65('0x49')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x3b6d68[_0x192027]),'UserId':Number(_0x279d4d['id'])});}});}})[_0xfd65('0xb')](function(){if(_0x4042d8==='leave'){var _0xb2e6ba=_[_0xfd65('0x18')](_0x279d4d[_0xfd65('0x28')],'id');return _0x279d4d[_0xfd65('0x4f')](_0xb2e6ba)[_0xfd65('0xb')](function(){for(var _0x567cbc=0x0;_0x567cbc<_0xb2e6ba['length'];_0x567cbc+=0x1){_0x53551c[_0xfd65('0x49')](_0xfd65('0x50'),{'OpenchannelInteractionId':Number(_0xb2e6ba[_0x567cbc]),'UserId':Number(_0x279d4d['id'])});}});}})['then'](function(){if(_0x4042d8===_0xfd65('0x48')){var _0x58ffc1=_[_0xfd65('0x18')](_0x279d4d[_0xfd65('0x51')],'id');return _0x279d4d[_0xfd65('0x52')](_0x58ffc1)[_0xfd65('0xb')](function(){for(var _0x2d9a27=0x0;_0x2d9a27<_0x58ffc1[_0xfd65('0x3f')];_0x2d9a27+=0x1){_0x53551c['emit']('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x58ffc1[_0x2d9a27]),'UserId':Number(_0x279d4d['id'])});}});}})[_0xfd65('0x53')](function(_0xabf4c){_0x52e2a1['log'](_0xabf4c);});}}function onDisconnect(_0x1359c5,_0x3e5e51){joinOrLeave(_0x1359c5,_0xfd65('0x48'),_0x3e5e51);}function onConnect(_0xeeac33){joinOrLeave(_0xeeac33,_0xfd65('0x54'));}exports[_0xfd65('0x55')]=function(_0x2c4304){_0x2c4304['on']('connection',function(_0x277c21){_0x277c21[_0xfd65('0x56')](0x0);_0x277c21['address']=_0x277c21[_0xfd65('0x57')]['connection'][_0xfd65('0x58')]+':'+_0x277c21[_0xfd65('0x57')][_0xfd65('0x59')][_0xfd65('0x5a')];_0x277c21[_0xfd65('0x5b')]=new Date();_0x277c21[_0xfd65('0x5c')]=function(_0x5e5d24){console[_0xfd65('0x5c')](_0xfd65('0x5d')+_0x277c21['nsp'][_0xfd65('0x3')]+'['+_0x277c21[_0xfd65('0x5e')]+']',_0x5e5d24);};_0x277c21['on'](_0xfd65('0x5f'),function(){onDisconnect(_0x277c21,_0x2c4304);_0x277c21[_0xfd65('0x5c')](_0xfd65('0x60'));});onConnect(_0x277c21);_0x277c21['log'](_0xfd65('0x61'));});};
\ No newline at end of file
+var _0xa5d7=['handshake','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','SmsQueue','OpenchannelQueue','WhatsappQueue','user','FaxQueue','MailQueue','Trunks','Trunk','IvrCampaigns','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','length','voice','fax','sms','openchannel','telephone:%s','type','emit','user_has_chat_interactions:remove','leave','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','join','default','request','connection','remotePort','log','nsp','address','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','name','User','role','telephone','agent','ivr','UserProfileSection','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','UserProfileResource','resourceId','map','where','Campaign','format','%s:queue:%s','Agents','user:%s','query','find','userProfileId'];(function(_0x2bdcbe,_0x2f74d6){var _0x13dfff=function(_0x33cdf7){while(--_0x33cdf7){_0x2bdcbe['push'](_0x2bdcbe['shift']());}};_0x13dfff(++_0x2f74d6);}(_0xa5d7,0x1c3));var _0x7a5d=function(_0x4c6e90,_0x3bee60){_0x4c6e90=_0x4c6e90-0x0;var _0x567165=_0xa5d7[_0x4c6e90];return _0x567165;};'use strict';var _=require(_0x7a5d('0x0'));var util=require(_0x7a5d('0x1'));var BPromise=require(_0x7a5d('0x2'));var db=require(_0x7a5d('0x3'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x7a5d('0x4')],'include':[{'as':'Agents','model':db[_0x7a5d('0x5')],'attributes':['id','name',_0x7a5d('0x6')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x7a5d('0x4')],'where':{'role':_0x7a5d('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x7a5d('0x4')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x7a5d('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x7a5d('0x4'),'type'],'where':{'type':_0x7a5d('0x9')}};function getAssociatedResources(_0x5d793f,_0x42b9ed,_0x1057e5){return db[_0x7a5d('0xa')]['findOne']({'where':{'name':_0x5d793f,'userProfileId':_0x42b9ed},'raw':!![]})[_0x7a5d('0xb')](function(_0x8f88a8){if(_0x8f88a8){if(_0x8f88a8[_0x7a5d('0xc')]){switch(_0x5d793f){case _0x7a5d('0xd'):case _0x7a5d('0xe'):case _0x7a5d('0xf'):case _0x7a5d('0x10'):case _0x7a5d('0x11'):case _0x7a5d('0x12'):case _0x7a5d('0x13'):return db[_0x1057e5][_0x7a5d('0x14')](queryQueues);case _0x7a5d('0x15'):return db[_0x1057e5]['findAll'](queryTelephones);case'Trunks':return db[_0x1057e5][_0x7a5d('0x14')](queryTrunks);case'IvrCampaigns':return db[_0x1057e5][_0x7a5d('0x14')](queryCampaigns);}}else{return db[_0x7a5d('0x16')][_0x7a5d('0x14')]({'attributes':[_0x7a5d('0x17')],'where':{'sectionId':_0x8f88a8['id']},'raw':!![]})[_0x7a5d('0xb')](function(_0x342f63){if(_0x342f63){var _0x50070a={'where':{'id':_[_0x7a5d('0x18')](_0x342f63,_0x7a5d('0x17'))},'raw':!![]};switch(_0x1057e5){case _0x7a5d('0x5'):_0x50070a[_0x7a5d('0x19')][_0x7a5d('0x6')]='telephone';break;case _0x7a5d('0x1a'):_0x50070a[_0x7a5d('0x19')]['type']='ivr';break;}return db[_0x1057e5][_0x7a5d('0x14')](_0x50070a);}else{return[];}});}}else{return[];}})[_0x7a5d('0xb')](function(_0x55fac7){return _0x55fac7;});}function joinOrLeaveQueues(_0x1dea47,_0x4a02f2,_0x1fd82e,_0x4a0d27){_0x1dea47[_0x4a02f2](util[_0x7a5d('0x1b')](_0x7a5d('0x1c'),_0x1fd82e,_0x4a0d27['name']));if(_0x4a0d27[_0x7a5d('0x1d')]){for(var _0x4faec5=0x0;_0x4faec5<_0x4a0d27[_0x7a5d('0x1d')]['length'];_0x4faec5+=0x1){_0x1dea47[_0x4a02f2](util['format'](_0x7a5d('0x1e'),_0x4a0d27[_0x7a5d('0x1d')][_0x4faec5][_0x7a5d('0x4')]));}}}function joinOrLeave(_0x48da22,_0x7b8ce1,_0x45377a){var _0x1bd069;if(_0x48da22['handshake'][_0x7a5d('0x1f')]['id']){db['User'][_0x7a5d('0x20')]({'attributes':['id',_0x7a5d('0x4'),_0x7a5d('0x6'),_0x7a5d('0x21')],'where':{'id':_0x48da22[_0x7a5d('0x22')][_0x7a5d('0x1f')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x7a5d('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x7a5d('0x24')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x7a5d('0x25')],'as':_0x7a5d('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x7a5d('0x27')],'as':_0x7a5d('0x28'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x7a5d('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x7a5d('0x2a')],'as':_0x7a5d('0x2b'),'attributes':['id'],'raw':!![]}]})[_0x7a5d('0xb')](function(_0x3975){if(_0x3975){_0x1bd069=_0x3975;_0x48da22[_0x7b8ce1](util[_0x7a5d('0x1b')](_0x7a5d('0x1e'),_0x3975[_0x7a5d('0x4')]));var _0x586e77=[];switch(_0x3975[_0x7a5d('0x6')]){case _0x7a5d('0x2c'):_0x48da22[_0x7b8ce1](_0x7a5d('0x2d'));_0x48da22[_0x7b8ce1](_0x7a5d('0x2e'));if(queryQueues[_0x7a5d('0x2f')](_0x7a5d('0x30'))){delete queryQueues[_0x7a5d('0x30')];}_0x586e77[_0x7a5d('0x31')](db[_0x7a5d('0x32')][_0x7a5d('0x14')](queryQueues));_0x586e77[_0x7a5d('0x31')](db[_0x7a5d('0x33')][_0x7a5d('0x14')](queryQueues));_0x586e77[_0x7a5d('0x31')](db['FaxQueue'][_0x7a5d('0x14')](queryQueues));_0x586e77['push'](db[_0x7a5d('0x34')][_0x7a5d('0x14')](queryQueues));_0x586e77[_0x7a5d('0x31')](db['MailQueue'][_0x7a5d('0x14')](queryQueues));_0x586e77[_0x7a5d('0x31')](db[_0x7a5d('0x35')][_0x7a5d('0x14')](queryQueues));_0x586e77['push'](db[_0x7a5d('0x36')][_0x7a5d('0x14')](queryQueues));_0x586e77[_0x7a5d('0x31')](db[_0x7a5d('0x5')][_0x7a5d('0x14')](queryTelephones));_0x586e77[_0x7a5d('0x31')](db['Trunk'][_0x7a5d('0x14')](queryTrunks));_0x586e77[_0x7a5d('0x31')](db[_0x7a5d('0x1a')]['findAll'](queryCampaigns));_0x586e77[_0x7a5d('0x31')](db[_0x7a5d('0x5')][_0x7a5d('0x14')](queryAgents));break;case _0x7a5d('0x37'):_0x48da22[_0x7b8ce1](_0x7a5d('0x2d'));_0x48da22[_0x7b8ce1](_0x7a5d('0x2e'));_0x586e77[_0x7a5d('0x31')](getAssociatedResources(_0x7a5d('0xd'),_0x3975[_0x7a5d('0x21')],_0x7a5d('0x32')));_0x586e77[_0x7a5d('0x31')](getAssociatedResources(_0x7a5d('0xe'),_0x3975[_0x7a5d('0x21')],_0x7a5d('0x33')));_0x586e77['push'](getAssociatedResources(_0x7a5d('0xf'),_0x3975[_0x7a5d('0x21')],_0x7a5d('0x38')));_0x586e77[_0x7a5d('0x31')](getAssociatedResources(_0x7a5d('0x10'),_0x3975[_0x7a5d('0x21')],_0x7a5d('0x34')));_0x586e77[_0x7a5d('0x31')](getAssociatedResources(_0x7a5d('0x11'),_0x3975['userProfileId'],_0x7a5d('0x39')));_0x586e77['push'](getAssociatedResources(_0x7a5d('0x12'),_0x3975['userProfileId'],_0x7a5d('0x35')));_0x586e77[_0x7a5d('0x31')](getAssociatedResources(_0x7a5d('0x13'),_0x3975['userProfileId'],_0x7a5d('0x36')));_0x586e77['push'](getAssociatedResources('Telephones',_0x3975[_0x7a5d('0x21')],_0x7a5d('0x5')));_0x586e77['push'](getAssociatedResources(_0x7a5d('0x3a'),_0x3975[_0x7a5d('0x21')],_0x7a5d('0x3b')));_0x586e77['push'](getAssociatedResources(_0x7a5d('0x3c'),_0x3975[_0x7a5d('0x21')],'Campaign'));_0x586e77[_0x7a5d('0x31')](db[_0x7a5d('0x5')][_0x7a5d('0x14')](queryAgents));break;case _0x7a5d('0x8'):_0x48da22[_0x7b8ce1](_0x7a5d('0x2d'));_0x48da22[_0x7b8ce1](_0x7a5d('0x2e'));_0x586e77[_0x7a5d('0x31')](_0x3975['getVoiceQueues']({'attributes':['id',_0x7a5d('0x4')]}));_0x586e77[_0x7a5d('0x31')](_0x3975[_0x7a5d('0x3d')]({'attributes':['id',_0x7a5d('0x4')]}));_0x586e77[_0x7a5d('0x31')](_0x3975[_0x7a5d('0x3e')]({'attributes':['id',_0x7a5d('0x4')]}));_0x586e77[_0x7a5d('0x31')](_0x3975[_0x7a5d('0x3f')]({'attributes':['id','name']}));_0x586e77[_0x7a5d('0x31')](_0x3975[_0x7a5d('0x40')]({'attributes':['id',_0x7a5d('0x4')]}));_0x586e77[_0x7a5d('0x31')](_0x3975[_0x7a5d('0x41')]({'attributes':['id',_0x7a5d('0x4')]}));_0x586e77['push'](_0x3975[_0x7a5d('0x42')]({'attributes':['id',_0x7a5d('0x4')]}));break;}return BPromise[_0x7a5d('0x43')](_0x586e77);}})['then'](function(_0x15ca33){if(_0x15ca33&&_0x15ca33[_0x7a5d('0x44')]){for(var _0x5095a8=0x0;_0x5095a8<_0x15ca33[_0x7a5d('0x44')];_0x5095a8+=0x1){for(var _0x3d0a2f=0x0;_0x3d0a2f<_0x15ca33[_0x5095a8]['length'];_0x3d0a2f+=0x1){switch(_0x5095a8){case 0x0:joinOrLeaveQueues(_0x48da22,_0x7b8ce1,_0x7a5d('0x45'),_0x15ca33[_0x5095a8][_0x3d0a2f]);break;case 0x1:joinOrLeaveQueues(_0x48da22,_0x7b8ce1,'chat',_0x15ca33[_0x5095a8][_0x3d0a2f]);break;case 0x2:joinOrLeaveQueues(_0x48da22,_0x7b8ce1,_0x7a5d('0x46'),_0x15ca33[_0x5095a8][_0x3d0a2f]);break;case 0x3:joinOrLeaveQueues(_0x48da22,_0x7b8ce1,_0x7a5d('0x47'),_0x15ca33[_0x5095a8][_0x3d0a2f]);break;case 0x4:joinOrLeaveQueues(_0x48da22,_0x7b8ce1,'mail',_0x15ca33[_0x5095a8][_0x3d0a2f]);break;case 0x5:joinOrLeaveQueues(_0x48da22,_0x7b8ce1,_0x7a5d('0x48'),_0x15ca33[_0x5095a8][_0x3d0a2f]);break;case 0x6:joinOrLeaveQueues(_0x48da22,_0x7b8ce1,'whatsapp',_0x15ca33[_0x5095a8][_0x3d0a2f]);break;case 0x7:if(_0x1bd069[_0x7a5d('0x6')]!==_0x7a5d('0x8'))_0x48da22[_0x7b8ce1](util[_0x7a5d('0x1b')](_0x7a5d('0x49'),_0x15ca33[_0x5095a8][_0x3d0a2f][_0x7a5d('0x4')]));break;case 0x8:if(_0x1bd069[_0x7a5d('0x6')]!==_0x7a5d('0x8'))_0x48da22[_0x7b8ce1](util[_0x7a5d('0x1b')]('trunk:%s',_0x15ca33[_0x5095a8][_0x3d0a2f][_0x7a5d('0x4')]));break;case 0x9:if(_0x1bd069[_0x7a5d('0x6')]!==_0x7a5d('0x8'))_0x48da22[_0x7b8ce1](util[_0x7a5d('0x1b')]('campaign:%s:%s',_0x15ca33[_0x5095a8][_0x3d0a2f][_0x7a5d('0x4a')],_0x15ca33[_0x5095a8][_0x3d0a2f][_0x7a5d('0x4')]));break;case 0xa:_0x48da22[_0x7b8ce1](util[_0x7a5d('0x1b')](_0x7a5d('0x1e'),_0x15ca33[_0x5095a8][_0x3d0a2f]['name']));break;}}}}})[_0x7a5d('0xb')](function(){if(_0x7b8ce1==='leave'){var _0x1bea47=_[_0x7a5d('0x18')](_0x1bd069['ChatInteractions'],'id');return _0x1bd069['removeChatInteractions'](_0x1bea47)[_0x7a5d('0xb')](function(){for(var _0x1ded06=0x0;_0x1ded06<_0x1bea47[_0x7a5d('0x44')];_0x1ded06+=0x1){_0x45377a[_0x7a5d('0x4b')](_0x7a5d('0x4c'),{'ChatInteractionId':Number(_0x1bea47[_0x1ded06]),'UserId':Number(_0x1bd069['id'])});}});}})['then'](function(){if(_0x7b8ce1===_0x7a5d('0x4d')){var _0x5d0262=_[_0x7a5d('0x18')](_0x1bd069[_0x7a5d('0x4e')],'id');return _0x1bd069[_0x7a5d('0x4f')](_0x5d0262)[_0x7a5d('0xb')](function(){for(var _0x13f598=0x0;_0x13f598<_0x5d0262[_0x7a5d('0x44')];_0x13f598+=0x1){_0x45377a[_0x7a5d('0x4b')](_0x7a5d('0x50'),{'MailInteractionId':Number(_0x5d0262[_0x13f598]),'UserId':Number(_0x1bd069['id'])});}});}})['then'](function(){if(_0x7b8ce1==='leave'){var _0x3863ef=_[_0x7a5d('0x18')](_0x1bd069['FaxInteractions'],'id');return _0x1bd069[_0x7a5d('0x51')](_0x3863ef)[_0x7a5d('0xb')](function(){for(var _0x410e26=0x0;_0x410e26<_0x3863ef[_0x7a5d('0x44')];_0x410e26+=0x1){_0x45377a[_0x7a5d('0x4b')](_0x7a5d('0x52'),{'FaxInteractionId':Number(_0x3863ef[_0x410e26]),'UserId':Number(_0x1bd069['id'])});}});}})['then'](function(){if(_0x7b8ce1===_0x7a5d('0x4d')){var _0xc05cda=_['map'](_0x1bd069[_0x7a5d('0x28')],'id');return _0x1bd069[_0x7a5d('0x53')](_0xc05cda)['then'](function(){for(var _0x290459=0x0;_0x290459<_0xc05cda['length'];_0x290459+=0x1){_0x45377a['emit']('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0xc05cda[_0x290459]),'UserId':Number(_0x1bd069['id'])});}});}})[_0x7a5d('0xb')](function(){if(_0x7b8ce1===_0x7a5d('0x4d')){var _0x413f68=_['map'](_0x1bd069[_0x7a5d('0x29')],'id');return _0x1bd069[_0x7a5d('0x54')](_0x413f68)[_0x7a5d('0xb')](function(){for(var _0x3a9cd6=0x0;_0x3a9cd6<_0x413f68['length'];_0x3a9cd6+=0x1){_0x45377a['emit'](_0x7a5d('0x55'),{'OpenchannelInteractionId':Number(_0x413f68[_0x3a9cd6]),'UserId':Number(_0x1bd069['id'])});}});}})[_0x7a5d('0xb')](function(){if(_0x7b8ce1===_0x7a5d('0x4d')){var _0x3eb989=_[_0x7a5d('0x18')](_0x1bd069[_0x7a5d('0x2b')],'id');return _0x1bd069['removeWhatsappInteractions'](_0x3eb989)[_0x7a5d('0xb')](function(){for(var _0x34d739=0x0;_0x34d739<_0x3eb989[_0x7a5d('0x44')];_0x34d739+=0x1){_0x45377a[_0x7a5d('0x4b')](_0x7a5d('0x56'),{'WhatsappInteractionId':Number(_0x3eb989[_0x34d739]),'UserId':Number(_0x1bd069['id'])});}});}})['catch'](function(_0x2e0d1e){_0x48da22['log'](_0x2e0d1e);});}}function onDisconnect(_0x2907e7,_0x50b91e){joinOrLeave(_0x2907e7,'leave',_0x50b91e);}function onConnect(_0x44f1ce){joinOrLeave(_0x44f1ce,_0x7a5d('0x57'));}exports[_0x7a5d('0x58')]=function(_0x6cb78f){_0x6cb78f['on']('connection',function(_0x29c236){_0x29c236['setMaxListeners'](0x0);_0x29c236['address']=_0x29c236[_0x7a5d('0x59')][_0x7a5d('0x5a')]['remoteAddress']+':'+_0x29c236[_0x7a5d('0x59')]['connection'][_0x7a5d('0x5b')];_0x29c236['connectedAt']=new Date();_0x29c236['log']=function(_0x59cdbb){console[_0x7a5d('0x5c')]('SocketIO\x20'+_0x29c236[_0x7a5d('0x5d')][_0x7a5d('0x4')]+'['+_0x29c236[_0x7a5d('0x5e')]+']',_0x59cdbb);};_0x29c236['on']('disconnect',function(){onDisconnect(_0x29c236,_0x6cb78f);_0x29c236[_0x7a5d('0x5c')](_0x7a5d('0x5f'));});onConnect(_0x29c236);_0x29c236[_0x7a5d('0x5c')](_0x7a5d('0x60'));});};
\ No newline at end of file
index d94dd42..664f9d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb405=['client','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','ChatMessage','newmessage','Sms','SmsInteraction','closedinteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','Openchannel','OpenchannelInteraction','OpenchannelMessage','EventManager','then','info','Trigger,\x20%s','error','code','catch','channel','motionChannel','event','direction','undefined','ContactId','sequelize','query','SELECT','contact','UserId','find','name','fullname','email','internal','agent','incomingmessage','AfterCreateMessage','outgoingmessage','get','opened','Sequelize','QueryTypes','changed','closed','substatus','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','interface','format','AfterUpdate','default','hasOwnProperty','model','hook','callback','toLowerCase','condition','../../mysqldb','jayson/promise','../logger','triggers'];(function(_0x476ce7,_0x1efa94){var _0x52c863=function(_0x4bca9c){while(--_0x4bca9c){_0x476ce7['push'](_0x476ce7['shift']());}};_0x52c863(++_0x1efa94);}(_0xb405,0xd7));var _0x5b40=function(_0x40e6d9,_0x1de144){_0x40e6d9=_0x40e6d9-0x0;var _0x3cf573=_0xb405[_0x40e6d9];return _0x3cf573;};'use strict';var util=require('util');var db=require(_0x5b40('0x0'))['db'];var jayson=require(_0x5b40('0x1'));var logger=require(_0x5b40('0x2'))(_0x5b40('0x3'));var client=jayson[_0x5b40('0x4')][_0x5b40('0x5')]({'port':0x232a});var triggers=[{'channel':_0x5b40('0x6'),'model':_0x5b40('0x7'),'event':_0x5b40('0x8'),'condition':_0x5b40('0x9'),'callback':afterCreate},{'channel':_0x5b40('0x6'),'model':_0x5b40('0x7'),'event':_0x5b40('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x5b40('0x6'),'model':_0x5b40('0xb'),'event':_0x5b40('0x8'),'condition':_0x5b40('0xc'),'callback':afterCreateMessage},{'channel':_0x5b40('0xd'),'model':_0x5b40('0xe'),'event':_0x5b40('0x8'),'condition':_0x5b40('0x9'),'callback':afterCreate},{'channel':_0x5b40('0xd'),'model':_0x5b40('0xe'),'event':_0x5b40('0xa'),'condition':_0x5b40('0xf'),'callback':afterUpdate},{'channel':'Sms','model':_0x5b40('0x10'),'event':_0x5b40('0x8'),'condition':_0x5b40('0xc'),'callback':afterCreateMessage},{'channel':_0x5b40('0x11'),'model':_0x5b40('0x12'),'event':'afterCreate','condition':_0x5b40('0x9'),'callback':afterCreate},{'channel':_0x5b40('0x11'),'model':_0x5b40('0x12'),'event':_0x5b40('0xa'),'condition':_0x5b40('0xf'),'callback':afterUpdate},{'channel':'Whatsapp','model':_0x5b40('0x13'),'event':'afterCreate','condition':_0x5b40('0xc'),'callback':afterCreateMessage},{'channel':_0x5b40('0x14'),'model':_0x5b40('0x15'),'event':_0x5b40('0x8'),'condition':_0x5b40('0x9'),'callback':afterCreate},{'channel':_0x5b40('0x14'),'model':_0x5b40('0x15'),'event':_0x5b40('0xa'),'condition':_0x5b40('0xf'),'callback':afterUpdate},{'channel':_0x5b40('0x14'),'model':_0x5b40('0x16'),'event':_0x5b40('0x8'),'condition':_0x5b40('0xc'),'callback':afterCreateMessage},{'channel':_0x5b40('0x17'),'model':_0x5b40('0x18'),'event':_0x5b40('0x8'),'condition':_0x5b40('0x9'),'callback':afterCreate},{'channel':_0x5b40('0x17'),'model':_0x5b40('0x18'),'event':_0x5b40('0xa'),'condition':_0x5b40('0xf'),'callback':afterUpdate},{'channel':'Mail','model':'MailMessage','event':_0x5b40('0x8'),'condition':_0x5b40('0xc'),'callback':afterCreateMessage},{'channel':_0x5b40('0x19'),'model':'OpenchannelInteraction','event':_0x5b40('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x5b40('0x19'),'model':_0x5b40('0x1a'),'event':_0x5b40('0xa'),'condition':_0x5b40('0xf'),'callback':afterUpdate},{'channel':'Openchannel','model':_0x5b40('0x1b'),'event':_0x5b40('0x8'),'condition':_0x5b40('0xc'),'callback':afterCreateMessage}];function request(_0x6e3e79){return client['request'](_0x5b40('0x1c'),_0x6e3e79)[_0x5b40('0x1d')](function(_0x24dfcb){logger[_0x5b40('0x1e')](_0x5b40('0x1f'),_0x5b40('0x1c'),_0x24dfcb);if(_0x24dfcb[_0x5b40('0x20')]){if(_0x24dfcb[_0x5b40('0x20')][_0x5b40('0x21')]===0x1f4){logger[_0x5b40('0x20')](_0x5b40('0x1f'),_0x5b40('0x1c'),_0x24dfcb['error']);}}})[_0x5b40('0x22')](function(_0x353bbe){logger[_0x5b40('0x20')](_0x5b40('0x1f'),_0x5b40('0x1c'),_0x353bbe);});}function afterCreateMessage(_0x56862b){return function(_0x3a58ac){_0x3a58ac=_0x3a58ac['get']({'plain':!![]});_0x3a58ac[_0x5b40('0x23')]=_0x56862b;_0x3a58ac[_0x5b40('0x24')]=_0x56862b;_0x3a58ac[_0x5b40('0x25')]=_0x3a58ac[_0x5b40('0x26')];Promise['resolve']()[_0x5b40('0x1d')](function(){if(typeof _0x3a58ac['ContactId']===_0x5b40('0x27'))return null;var _0x393b47='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3a58ac[_0x5b40('0x28')];return db[_0x5b40('0x29')][_0x5b40('0x2a')](_0x393b47,{'type':db['Sequelize']['QueryTypes'][_0x5b40('0x2b')],'raw':!![]});})[_0x5b40('0x1d')](function(_0x394861){if(_0x394861){_0x3a58ac[_0x5b40('0x2c')]=_0x394861[0x0];}if(_0x3a58ac[_0x5b40('0x2d')]){return db['User'][_0x5b40('0x2e')]({'where':{'id':_0x3a58ac[_0x5b40('0x2d')]},'attributes':['id',_0x5b40('0x2f'),_0x5b40('0x30'),_0x5b40('0x31'),_0x5b40('0x32')],'raw':!![]})[_0x5b40('0x1d')](function(_0x18e89a){_0x3a58ac['interface']=util['format']('SIP/%s',_0x18e89a[_0x5b40('0x2f')]);_0x3a58ac[_0x5b40('0x23')]=_0x56862b;_0x3a58ac[_0x5b40('0x33')]=_0x18e89a;return request({'event':_0x5b40('0x34'),'message':_0x3a58ac});})[_0x5b40('0x22')](function(_0x1edb4d){logger[_0x5b40('0x20')]('Trigger,\x20%s',_0x5b40('0x35'),_0x1edb4d);});}else{return request({'event':_0x5b40('0x36'),'message':_0x3a58ac});}});};}function afterCreate(_0x124856,_0x3c5a8d){return function(_0xbce208){_0xbce208=_0xbce208[_0x5b40('0x37')]({'plain':!![]});_0xbce208[_0x5b40('0x23')]=_0x124856;_0xbce208[_0x5b40('0x24')]=_0x124856;_0xbce208[_0x5b40('0x25')]=_0x5b40('0x38');var _0x4c9ee1='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xbce208[_0x5b40('0x28')];return db[_0x5b40('0x29')]['query'](_0x4c9ee1,{'type':db[_0x5b40('0x39')][_0x5b40('0x3a')][_0x5b40('0x2b')],'raw':!![]})[_0x5b40('0x1d')](function(_0x530841){return _0x530841;})[_0x5b40('0x1d')](function(_0x59c47e){if(_0x59c47e){_0xbce208[_0x5b40('0x2c')]=_0x59c47e[0x0];}return request({'event':_0x3c5a8d,'message':_0xbce208});});};}function afterUpdate(_0x52d738){return function(_0x1cd6c2){var _0x25f491=_0x1cd6c2[_0x5b40('0x3b')](_0x5b40('0x3c'))&&_0x1cd6c2[_0x5b40('0x3c')];var _0x4be671=_0x1cd6c2[_0x5b40('0x3b')](_0x5b40('0x3d'));if(_0x25f491||_0x4be671){var _0x491eac=_0x25f491?'closedinteraction':_0x5b40('0x3d');var _0x7624b3=_0x1cd6c2[_0x5b40('0x37')]({'plain':!![]});_0x7624b3[_0x5b40('0x23')]=_0x52d738;_0x7624b3[_0x5b40('0x24')]=_0x52d738;_0x7624b3[_0x5b40('0x25')]=_0x25f491?'closed':_0x5b40('0x3d');var _0x58dfeb=_0x5b40('0x3e')+_0x7624b3[_0x5b40('0x28')];return db[_0x5b40('0x29')][_0x5b40('0x2a')](_0x58dfeb,{'type':db[_0x5b40('0x39')][_0x5b40('0x3a')]['SELECT'],'raw':!![]})[_0x5b40('0x1d')](function(_0x1baee0){if(_0x1baee0){_0x7624b3[_0x5b40('0x2c')]=_0x1baee0[0x0];}if(_0x7624b3[_0x5b40('0x2d')]){return db['User']['find']({'where':{'id':_0x7624b3[_0x5b40('0x2d')]},'attributes':['id',_0x5b40('0x2f'),'fullname',_0x5b40('0x31'),_0x5b40('0x32')],'raw':!![]})[_0x5b40('0x1d')](function(_0x293c57){_0x7624b3[_0x5b40('0x3f')]=util[_0x5b40('0x40')]('SIP/%s',_0x293c57['name']);_0x7624b3[_0x5b40('0x33')]=_0x293c57;return request({'event':_0x491eac,'message':_0x7624b3});})[_0x5b40('0x22')](function(_0x33ea96){logger[_0x5b40('0x20')](_0x5b40('0x1f'),_0x5b40('0x41'),_0x33ea96);});}else{return request({'event':_0x491eac,'message':_0x7624b3});}});}};}exports[_0x5b40('0x42')]=function(){for(var _0x20e872=0x0;_0x20e872<triggers['length'];_0x20e872+=0x1){if(db[_0x5b40('0x43')](triggers[_0x20e872][_0x5b40('0x44')])){db[triggers[_0x20e872]['model']][_0x5b40('0x45')](triggers[_0x20e872][_0x5b40('0x25')],triggers[_0x20e872][_0x5b40('0x46')](triggers[_0x20e872]['channel'][_0x5b40('0x47')](),triggers[_0x20e872][_0x5b40('0x48')]));}}};
\ No newline at end of file
+var _0xb77b=['ChatInteraction','afterUpdate','ChatMessage','newmessage','Sms','SmsInteraction','Whatsapp','WhatsappInteraction','closedinteraction','WhatsappMessage','Fax','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','Trigger,\x20%s','error','code','catch','get','channel','event','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','query','Sequelize','SELECT','UserId','find','name','fullname','internal','interface','format','agent','incomingmessage','outgoingmessage','opened','QueryTypes','contact','changed','closed','User','SIP/%s','default','length','hasOwnProperty','model','hook','toLowerCase','condition','jayson/promise','../logger','triggers','lodash','http','Chat','afterCreate','newinteraction'];(function(_0x451b5d,_0x2dd0e2){var _0x333e9=function(_0x15bf16){while(--_0x15bf16){_0x451b5d['push'](_0x451b5d['shift']());}};_0x333e9(++_0x2dd0e2);}(_0xb77b,0x184));var _0xbb77=function(_0x186ac3,_0x445715){_0x186ac3=_0x186ac3-0x0;var _0x23c7ad=_0xb77b[_0x186ac3];return _0x23c7ad;};'use strict';var util=require('util');var db=require('../../mysqldb')['db'];var jayson=require(_0xbb77('0x0'));var logger=require(_0xbb77('0x1'))(_0xbb77('0x2'));var _=require(_0xbb77('0x3'));var client=jayson['client'][_0xbb77('0x4')]({'port':0x232a});var triggers=[{'channel':_0xbb77('0x5'),'model':'ChatInteraction','event':_0xbb77('0x6'),'condition':_0xbb77('0x7'),'callback':afterCreate},{'channel':_0xbb77('0x5'),'model':_0xbb77('0x8'),'event':_0xbb77('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xbb77('0x5'),'model':_0xbb77('0xa'),'event':_0xbb77('0x6'),'condition':_0xbb77('0xb'),'callback':afterCreateMessage},{'channel':_0xbb77('0xc'),'model':_0xbb77('0xd'),'event':_0xbb77('0x6'),'condition':_0xbb77('0x7'),'callback':afterCreate},{'channel':_0xbb77('0xc'),'model':_0xbb77('0xd'),'event':_0xbb77('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Sms','model':'SmsMessage','event':_0xbb77('0x6'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xbb77('0xe'),'model':_0xbb77('0xf'),'event':_0xbb77('0x6'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xbb77('0xe'),'model':_0xbb77('0xf'),'event':_0xbb77('0x9'),'condition':_0xbb77('0x10'),'callback':afterUpdate},{'channel':_0xbb77('0xe'),'model':_0xbb77('0x11'),'event':_0xbb77('0x6'),'condition':_0xbb77('0xb'),'callback':afterCreateMessage},{'channel':'Fax','model':'FaxInteraction','event':_0xbb77('0x6'),'condition':_0xbb77('0x7'),'callback':afterCreate},{'channel':_0xbb77('0x12'),'model':'FaxInteraction','event':_0xbb77('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xbb77('0x12'),'model':'FaxMessage','event':_0xbb77('0x6'),'condition':_0xbb77('0xb'),'callback':afterCreateMessage},{'channel':'Mail','model':'MailInteraction','event':'afterCreate','condition':_0xbb77('0x7'),'callback':afterCreate},{'channel':_0xbb77('0x13'),'model':_0xbb77('0x14'),'event':_0xbb77('0x9'),'condition':_0xbb77('0x10'),'callback':afterUpdate},{'channel':_0xbb77('0x13'),'model':_0xbb77('0x15'),'event':_0xbb77('0x6'),'condition':_0xbb77('0xb'),'callback':afterCreateMessage},{'channel':_0xbb77('0x16'),'model':_0xbb77('0x17'),'event':_0xbb77('0x6'),'condition':_0xbb77('0x7'),'callback':afterCreate},{'channel':_0xbb77('0x16'),'model':_0xbb77('0x17'),'event':'afterUpdate','condition':_0xbb77('0x10'),'callback':afterUpdate},{'channel':_0xbb77('0x16'),'model':_0xbb77('0x18'),'event':_0xbb77('0x6'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x2b3704){return client[_0xbb77('0x19')](_0xbb77('0x1a'),_0x2b3704)[_0xbb77('0x1b')](function(_0x233303){logger['info'](_0xbb77('0x1c'),_0xbb77('0x1a'),_0x233303);if(_0x233303[_0xbb77('0x1d')]){if(_0x233303[_0xbb77('0x1d')][_0xbb77('0x1e')]===0x1f4){logger[_0xbb77('0x1d')](_0xbb77('0x1c'),_0xbb77('0x1a'),_0x233303[_0xbb77('0x1d')]);}}})[_0xbb77('0x1f')](function(_0x45b6ac){logger[_0xbb77('0x1d')](_0xbb77('0x1c'),_0xbb77('0x1a'),_0x45b6ac);});}function afterCreateMessage(_0x1f73cb,_0x6901bb){return function(_0x47bf63,_0x2e983f){_0x47bf63=_0x47bf63[_0xbb77('0x20')]({'plain':!![]});_0x47bf63[_0xbb77('0x21')]=_0x1f73cb;_0x47bf63[_0xbb77('0x22')]=_0x47bf63[_0xbb77('0x23')];var _0x2d383e=_0xbb77('0x24')+_0x47bf63[_0xbb77('0x25')];return db[_0xbb77('0x26')][_0xbb77('0x27')](_0x2d383e,{'type':db[_0xbb77('0x28')]['QueryTypes'][_0xbb77('0x29')],'raw':!![]})[_0xbb77('0x1b')](function(_0x52c6d5){return _0x52c6d5;})[_0xbb77('0x1b')](function(_0x958223){if(_0x958223){_0x47bf63['contact']=_0x958223[0x0];}if(_0x47bf63[_0xbb77('0x2a')]){return db['User'][_0xbb77('0x2b')]({'where':{'id':_0x47bf63['UserId']},'attributes':['id',_0xbb77('0x2c'),_0xbb77('0x2d'),'email',_0xbb77('0x2e')],'raw':!![]})[_0xbb77('0x1b')](function(_0x4e7b9f){_0x47bf63[_0xbb77('0x2f')]=util[_0xbb77('0x30')]('SIP/%s',_0x4e7b9f[_0xbb77('0x2c')]);_0x47bf63[_0xbb77('0x21')]=_0x1f73cb;_0x47bf63[_0xbb77('0x31')]=_0x4e7b9f;return request({'event':_0xbb77('0x32'),'message':_0x47bf63});})[_0xbb77('0x1f')](function(_0x36132a){console[_0xbb77('0x1d')](_0x36132a);});}else{return request({'event':_0xbb77('0x33'),'message':_0x47bf63});}});};}function afterCreate(_0x28c964,_0x2eedac){return function(_0x135763,_0x4abb14){_0x135763=_0x135763['get']({'plain':!![]});_0x135763[_0xbb77('0x21')]=_0x28c964;_0x135763[_0xbb77('0x22')]=_0xbb77('0x34');var _0x232381=_0xbb77('0x24')+_0x135763['ContactId'];return db['sequelize'][_0xbb77('0x27')](_0x232381,{'type':db[_0xbb77('0x28')][_0xbb77('0x35')][_0xbb77('0x29')],'raw':!![]})['then'](function(_0x12ab89){return _0x12ab89;})[_0xbb77('0x1b')](function(_0x48062b){if(_0x48062b){_0x135763[_0xbb77('0x36')]=_0x48062b[0x0];}return request({'event':_0x2eedac,'message':_0x135763});});};}function afterUpdate(_0x4a08dd,_0x520b4d){return function(_0x4a7c0a,_0xf6f979){if(_0x4a7c0a[_0xbb77('0x37')](_0xbb77('0x38'))&&_0x4a7c0a[_0xbb77('0x38')]){_0x4a7c0a=_0x4a7c0a[_0xbb77('0x20')]({'plain':!![]});_0x4a7c0a[_0xbb77('0x21')]=_0x4a08dd;_0x4a7c0a[_0xbb77('0x22')]=_0xbb77('0x38');var _0xe62c81='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4a7c0a['ContactId'];return db[_0xbb77('0x26')][_0xbb77('0x27')](_0xe62c81,{'type':db[_0xbb77('0x28')][_0xbb77('0x35')][_0xbb77('0x29')],'raw':!![]})[_0xbb77('0x1b')](function(_0x205861){return _0x205861;})['then'](function(_0x13ac7a){if(_0x13ac7a){_0x4a7c0a[_0xbb77('0x36')]=_0x13ac7a[0x0];}if(_0x4a7c0a['UserId']){return db[_0xbb77('0x39')][_0xbb77('0x2b')]({'where':{'id':_0x4a7c0a[_0xbb77('0x2a')]},'attributes':['id','name',_0xbb77('0x2d'),'email',_0xbb77('0x2e')],'raw':!![]})['then'](function(_0xf4bb0a){_0x4a7c0a[_0xbb77('0x2f')]=util[_0xbb77('0x30')](_0xbb77('0x3a'),_0xf4bb0a[_0xbb77('0x2c')]);_0x4a7c0a[_0xbb77('0x31')]=_0xf4bb0a;return request({'event':_0x520b4d,'message':_0x4a7c0a});})[_0xbb77('0x1f')](function(_0x3531c4){console[_0xbb77('0x1d')](_0x3531c4);});}else{return request({'event':_0x520b4d,'message':_0x4a7c0a});}});}};}exports[_0xbb77('0x3b')]=function(){for(var _0xb38fc1=0x0;_0xb38fc1<triggers[_0xbb77('0x3c')];_0xb38fc1+=0x1){if(db[_0xbb77('0x3d')](triggers[_0xb38fc1][_0xbb77('0x3e')])){db[triggers[_0xb38fc1][_0xbb77('0x3e')]][_0xbb77('0x3f')](triggers[_0xb38fc1][_0xbb77('0x22')],triggers[_0xb38fc1]['callback'](triggers[_0xb38fc1][_0xbb77('0x21')][_0xbb77('0x40')](),triggers[_0xb38fc1][_0xbb77('0x41')]));}}};
\ No newline at end of file
index 808cd48..239255f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cde=['openchannel','includes','clearBlockUser','isUndefined','updateAttributes','role','User','agent','then','getLicense','agents','catch','lodash','bluebird','../mysqldb','voice','mail','chat','fax','sms','whatsapp'];(function(_0x276221,_0x378da4){var _0x4fa716=function(_0x4dd561){while(--_0x4dd561){_0x276221['push'](_0x276221['shift']());}};_0x4fa716(++_0x378da4);}(_0x7cde,0x132));var _0xe7cd=function(_0x1e4590,_0x5cb8fa){_0x1e4590=_0x1e4590-0x0;var _0x22941a=_0x7cde[_0x1e4590];return _0x22941a;};'use strict';var _=require(_0xe7cd('0x0'));var BPromise=require(_0xe7cd('0x1'));var db=require(_0xe7cd('0x2'))['db'];var util=require('./license/util');var channels=[_0xe7cd('0x3'),_0xe7cd('0x4'),_0xe7cd('0x5'),_0xe7cd('0x6'),_0xe7cd('0x7'),_0xe7cd('0x8'),_0xe7cd('0x9')];exports['getChannels']=function(){return channels;};exports['isValidChannel']=function(_0xdea2ce){_0xdea2ce=_0xdea2ce['toLowerCase']();return _[_0xe7cd('0xa')](channels,_0xdea2ce);};exports[_0xe7cd('0xb')]=function(_0x2c9de6,_0x2df0a8,_0xf8f072,_0x2b75d7){var _0x440fb3={'loginAttempts':_0x2df0a8,'blocked':_0xf8f072};if(!_[_0xe7cd('0xc')](_0x2b75d7)){_0x440fb3['blockedAt']=_0x2b75d7;}return _0x2c9de6[_0xe7cd('0xd')](_0x440fb3);};exports['getLicense']=function(_0x55bbf1){return new BPromise(function(_0x14c978,_0x2f63ca){var _0x432fb6=0x0;if(_0x55bbf1[_0xe7cd('0xe')]!=='agent'){_0x14c978(_0x55bbf1);}db[_0xe7cd('0xf')]['count']({'where':{'role':_0xe7cd('0x10'),'online':!![],'id':{'$ne':_0x55bbf1['id']}}})[_0xe7cd('0x11')](function(_0x426c04){_0x432fb6=_0x426c04;return util[_0xe7cd('0x12')]();})[_0xe7cd('0x11')](function(_0xfdf3d9){if(_0xfdf3d9&&_0xfdf3d9[_0xe7cd('0x13')]&&_0x432fb6>=_0xfdf3d9[_0xe7cd('0x13')]){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x14c978(_0x55bbf1);})[_0xe7cd('0x14')](function(_0x23ba1b){_0x2f63ca(_0x23ba1b);});});};
\ No newline at end of file
+var _0xf806=['count','agent','then','agents','Maximum\x20login\x20has\x20been\x20reached','lodash','bluebird','../mysqldb','./license/util','voice','fax','sms','whatsapp','openchannel','includes','blockedAt','updateAttributes','getLicense','role','User'];(function(_0x19a201,_0x4c3ac1){var _0x5487f1=function(_0x4ee933){while(--_0x4ee933){_0x19a201['push'](_0x19a201['shift']());}};_0x5487f1(++_0x4c3ac1);}(_0xf806,0x16d));var _0x6f80=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf806[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x6f80('0x0'));var BPromise=require(_0x6f80('0x1'));var db=require(_0x6f80('0x2'))['db'];var util=require(_0x6f80('0x3'));var channels=[_0x6f80('0x4'),'mail','chat',_0x6f80('0x5'),_0x6f80('0x6'),_0x6f80('0x7'),_0x6f80('0x8')];exports['getChannels']=function(){return channels;};exports['isValidChannel']=function(_0x249a08){_0x249a08=_0x249a08['toLowerCase']();return _[_0x6f80('0x9')](channels,_0x249a08);};exports['clearBlockUser']=function(_0x553f63,_0x187834,_0x7744d9,_0x162534){var _0x26f1da={'loginAttempts':_0x187834,'blocked':_0x7744d9};if(!_['isUndefined'](_0x162534)){_0x26f1da[_0x6f80('0xa')]=_0x162534;}return _0x553f63[_0x6f80('0xb')](_0x26f1da);};exports[_0x6f80('0xc')]=function(_0x52d910){return new BPromise(function(_0x39d89e,_0xdbdcc6){var _0x503187=0x0;if(_0x52d910[_0x6f80('0xd')]!=='agent'){_0x39d89e(_0x52d910);}db[_0x6f80('0xe')][_0x6f80('0xf')]({'where':{'role':_0x6f80('0x10'),'online':!![],'id':{'$ne':_0x52d910['id']}}})[_0x6f80('0x11')](function(_0x5a9541){_0x503187=_0x5a9541;return util[_0x6f80('0xc')]();})['then'](function(_0x42b787){if(_0x42b787&&_0x42b787[_0x6f80('0x12')]&&_0x503187>=_0x42b787['agents']){throw Error(_0x6f80('0x13'));}_0x39d89e(_0x52d910);})['catch'](function(_0x401687){_0xdbdcc6(_0x401687);});});};
\ No newline at end of file
index 81265d7..2bcca8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80e2=['status','exports','404'];(function(_0x4b291e,_0x330c8a){var _0x17b3a2=function(_0x3cddfa){while(--_0x3cddfa){_0x4b291e['push'](_0x4b291e['shift']());}};_0x17b3a2(++_0x330c8a);}(_0x80e2,0xfd));var _0x280e=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0x80e2[_0x3b0731];return _0x4204d7;};'use strict';module[_0x280e('0x0')][0x194]=function pageNotFound(_0x3859f2,_0x21236a){var _0x5030a7=_0x280e('0x1');var _0xd8c6e1=0x194;var _0x988380={'status':_0xd8c6e1};_0x21236a[_0x280e('0x2')](_0x988380[_0x280e('0x2')]);_0x21236a['render'](_0x5030a7,{},function(_0x386a16,_0x121d4c){if(_0x386a16){return _0x21236a[_0x280e('0x2')](_0x988380[_0x280e('0x2')])['json'](_0x988380);}_0x21236a['send'](_0x121d4c);});};
\ No newline at end of file
+var _0x9fdc=['send','404','status','render','json'];(function(_0x560f07,_0x16b417){var _0x49a714=function(_0x2815ec){while(--_0x2815ec){_0x560f07['push'](_0x560f07['shift']());}};_0x49a714(++_0x16b417);}(_0x9fdc,0xce));var _0xc9fd=function(_0x5c3ae9,_0x450f9a){_0x5c3ae9=_0x5c3ae9-0x0;var _0x3f5950=_0x9fdc[_0x5c3ae9];return _0x3f5950;};'use strict';module['exports'][0x194]=function pageNotFound(_0x27b3ae,_0x559275){var _0x29e177=_0xc9fd('0x0');var _0x3c6a83=0x194;var _0x5a31b9={'status':_0x3c6a83};_0x559275[_0xc9fd('0x1')](_0x5a31b9[_0xc9fd('0x1')]);_0x559275[_0xc9fd('0x2')](_0x29e177,{},function(_0x493379,_0x31be0b){if(_0x493379){return _0x559275[_0xc9fd('0x1')](_0x5a31b9['status'])[_0xc9fd('0x3')](_0x5a31b9);}_0x559275[_0xc9fd('0x4')](_0x31be0b);});};
\ No newline at end of file
diff --git a/server/migrations/2.5.35.js b/server/migrations/2.5.35.js
deleted file mode 100644 (file)
index f7d42ec..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-'use strict';\r
-\r
-var BPromise = require('bluebird');\r
-var util = require('util');\r
-\r
-var logger = require('../config/logger')('migration');\r
-\r
-var Sequence = function() {};\r
-\r
-Sequence.prototype.enqueue = function(fn) {\r
-  this.tail = this.tail ? this.tail.finally(fn) : fn();\r
-};\r
-\r
-var Migration = function(queryInterface) {\r
-  this.queryInterface = queryInterface;\r
-  this.sequence = new Sequence();\r
-};\r
-\r
-Migration.prototype.changeColumn = function(table, column, type) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .changeColumn(table, column, type)\r
-      .then(function() {\r
-        logger.info('Changed column %s in table %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.addColumn = function(table, column, type) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .addColumn(table, column, type)\r
-      .then(function() {\r
-        logger.info('Added column %s to %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.dropTable = function(table) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .dropTable(table, {\r
-        force: true\r
-      })\r
-      .then(function() {\r
-        logger.info('table dropped %s', table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.addIndex = function(table, column, indexName) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .addIndex(table, column, {\r
-        indexName: indexName\r
-      })\r
-      .then(function() {\r
-        logger.info('addIndex %s %s %s', table, column.join(','), indexName);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.removeIndex = function(table, indexName) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .removeIndex(table, indexName)\r
-      .then(function() {\r
-        logger.info('removeIndex %s %s', table, indexName);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.query = function(sql) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface.sequelize\r
-      .query(sql)\r
-      .then(function() {\r
-        logger.info('query %s', sql);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.removeColumn = function(table, column) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .removeColumn(table, column)\r
-      .then(function() {\r
-        logger.info('Removed column %s from %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(\r
-          util.inspect(err, {\r
-            showHidden: false,\r
-            depth: null\r
-          })\r
-        );\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .renameColumn(table, oldColumn, newColumn)\r
-      .then(function() {\r
-        logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(\r
-          util.inspect(err, {\r
-            showHidden: false,\r
-            depth: null\r
-          })\r
-        );\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.final = function(resolve) {\r
-  this.sequence.enqueue(function() {\r
-    return resolve();\r
-  });\r
-};\r
-\r
-module.exports = {\r
-  up: function(queryInterface, Sequelize) {\r
-    return new BPromise(function(resolve) {\r
-      var migration = new Migration(queryInterface);\r
-\r
-      // START FINAL\r
-      migration.final(resolve);\r
-      // END FINAL\r
-    });\r
-  },\r
-\r
-  down: function(queryInterface, Sequelize) {\r
-    // var migration = new Migration(queryInterface);\r
-  }\r
-};
\ No newline at end of file
diff --git a/server/migrations/2.5.36.js b/server/migrations/2.5.36.js
deleted file mode 100644 (file)
index e3fb3ea..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-'use strict';\r
-\r
-var BPromise = require('bluebird');\r
-var util = require('util');\r
-\r
-var logger = require('../config/logger')('migration');\r
-\r
-var Sequence = function() {};\r
-\r
-Sequence.prototype.enqueue = function(fn) {\r
-  this.tail = this.tail ? this.tail.finally(fn) : fn();\r
-};\r
-\r
-var Migration = function(queryInterface) {\r
-  this.queryInterface = queryInterface;\r
-  this.sequence = new Sequence();\r
-};\r
-\r
-Migration.prototype.changeColumn = function(table, column, type) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .changeColumn(table, column, type)\r
-      .then(function() {\r
-        logger.info('Changed column %s in table %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.addColumn = function(table, column, type) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .addColumn(table, column, type)\r
-      .then(function() {\r
-        logger.info('Added column %s to %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.dropTable = function(table) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .dropTable(table, {\r
-        force: true\r
-      })\r
-      .then(function() {\r
-        logger.info('table dropped %s', table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.addIndex = function(table, column, indexName) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .addIndex(table, column, {\r
-        indexName: indexName\r
-      })\r
-      .then(function() {\r
-        logger.info('addIndex %s %s %s', table, column.join(','), indexName);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.removeIndex = function(table, indexName) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .removeIndex(table, indexName)\r
-      .then(function() {\r
-        logger.info('removeIndex %s %s', table, indexName);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.query = function(sql) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface.sequelize\r
-      .query(sql)\r
-      .then(function() {\r
-        logger.info('query %s', sql);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.removeColumn = function(table, column) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .removeColumn(table, column)\r
-      .then(function() {\r
-        logger.info('Removed column %s from %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(\r
-          util.inspect(err, {\r
-            showHidden: false,\r
-            depth: null\r
-          })\r
-        );\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .renameColumn(table, oldColumn, newColumn)\r
-      .then(function() {\r
-        logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(\r
-          util.inspect(err, {\r
-            showHidden: false,\r
-            depth: null\r
-          })\r
-        );\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.final = function(resolve) {\r
-  this.sequence.enqueue(function() {\r
-    return resolve();\r
-  });\r
-};\r
-\r
-module.exports = {\r
-  up: function(queryInterface, Sequelize) {\r
-    return new BPromise(function(resolve) {\r
-      var migration = new Migration(queryInterface);\r
-\r
-      // START users\r
-      migration.addColumn('users', 'ignorePauseForPreviewCalls', {\r
-        type: Sequelize.BOOLEAN,\r
-        defaultValue: false\r
-      });\r
-\r
-      migration.addColumn('users', 'selectRecallMeCampaign', {\r
-        type: Sequelize.BOOLEAN,\r
-        defaultValue: false\r
-      });\r
-      // END users\r
-\r
-      // START voice_queues\r
-      migration.addColumn('voice_queues', 'dialPreviewAutoRecallMe', {\r
-        type: Sequelize.BOOLEAN,\r
-        defaultValue: true\r
-      });\r
-      // END voice_queues\r
-\r
-      // START FINAL\r
-      migration.final(resolve);\r
-      // END FINAL\r
-    });\r
-  },\r
-\r
-  down: function(queryInterface, Sequelize) {\r
-    // var migration = new Migration(queryInterface);\r
-  }\r
-};
\ No newline at end of file
index c29e672..a65a775 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9348=['VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','WhatsappAccount','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','cascade','UserId','hasMany','Recordings','UserVoiceQueueRt','VoiceExtension','HopperFinals','HopperHistory','ReportAgentPreview','OpenchannelInteraction','OpenchannelInteractions','ChatInteractions','SmsInteractions','MailInteractions','WhatsappInteractions','SenderId','belongsTo','belongsToMany','ChatGroup','chat_group_has_users','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_teams','user_has_chat_interactions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','VoiceQueue','VoicePrefixes','ChatQueues','FaxQueues','UserSmsQueue','OpenchannelQueue','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueue','WhatsappQueues','UserWhatsappQueue','ChatWebsites','user_has_chat_websites','FaxAccounts','MailAccount','user_has_mail_accounts','OpenchannelAccounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','SquareProjects','user_has_square_projects','VoiceChanSpy','SpiedAgents','ChanSpyId','VoiceContext','Applications','Sounds','moh_has_sounds','VoiceQueueId','Hoppers','CmHopperBlack','JscriptySessionReport','JscriptySessions','Trunk','TrunkBackup','TrunkBackupId','Interval','IntervalId','mandatoryDispositionPause','voice_queues_has_cm_lists','Agents','Team','BlackLists','voice_queues_has_cm_blacklists','ScreenRecording','Messages','mailboxuser','mailbox','VoiceCallReport','QueueCalls','uniqueid','AgentReports','ContactId','MailAccountId','hasOne','Imap','Smtp','Dispositions','Answers','List','ListId','TemplateId','mandatoryDispositionPauseId','MailInteractionId','Owner','mail_interaction_has_tags','ThroughTags','Users','user_has_mail_interactions','Attachment','Contact','Interaction','Account','ChatWebsiteId','restrict','TagId','Items','FaxAccountId','Interactions','FaxMessage','user_has_fax_accounts','fax_interaction_has_tags','Tags','FaxInteractionId','AttachmentId','SmsAccountId','sms_interaction_has_tags','SmsInteractionId','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','user_has_openchannel_accounts','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','team_has_openchannel_queues','Teams','ProactiveActions','Agent','ChatQueue','Queue','ChatQueueId','Website','chat_interaction_has_tags','ChatInteractionId','Attachments','UserChatQueue','team_has_chat_queues','ChatGroupId','ChatProactiveAction','CompanyId','HopperHistories','FaxInteractions','Company','cm_contact_has_tags','CampaignId','OwnerId','OneAll','AutomationAllId','Any','AutomationAnyId','Actions','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','Mohs','AllConditions','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','Fields','AnalyticMetric','MetricId','SalesforceAccount','Configurations','AccountId','Subjects','SubjectId','SalesforceField','Descriptions','DescriptionId','FieldId','Subject','Description','Field','Variable','int_desk_configuration_has_tags','VariableId','int_zendesk_configuration_has_tags','FreshdeskConfiguration','VtigerAccount','VtigerConfiguration','ServicenowAccount','FromId','ToId','JscriptyQuestionReport','SessionId','JscriptyAnswerReport','JscriptyProject','ProjectId','VoiceQueues','MailQueues','team_has_fax_queues','SmsQueues','team_has_whatsapp_queues','HopperBlacks','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','ChatOfflineMessageId','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToAgent','ToMailQueueId','FromChatWebsiteId','FromUserId','ToQueue','ToChatWebsiteId','ToAccount','FaxTransferReport','FromFaxAccountId','ToFaxQueueId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','Extensions','userProfileId','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappMessage','user_has_whatsapp_accounts','WhatsappInteractionId','whatsapp_interaction_has_tags','user_has_whatsapp_interactions','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','../config/environment','sequelize','lodash','jstz','determine','defaultsDeep','xcall','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8_general_ci','sequelizeHistory','utf8','database','username','password','options','User','import','../api/user/user.model','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.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','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','MailInteraction','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','../api/faxMessage/faxMessage.model','FaxQueue','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelMessage','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','../api/chatQueue/chatQueue.model','../api/chatGroup/chatGroup.model','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','../api/reportAgentPreview/reportAgentPreview.model','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','Tag','../api/tag/tag.model','Template','../api/template/template.model','Trigger','../api/trigger/trigger.model','../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','../api/analyticExtractedReport/analyticExtractedReport.model','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../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','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','../api/team/team.model','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','CmList','../api/cmList/cmList.model'];(function(_0x301b50,_0x278398){var _0x48469c=function(_0xa8be95){while(--_0xa8be95){_0x301b50['push'](_0x301b50['shift']());}};_0x48469c(++_0x278398);}(_0x9348,0x10d));var _0x8934=function(_0x5b0e9a,_0x11ee61){_0x5b0e9a=_0x5b0e9a-0x0;var _0x3b72b7=_0x9348[_0x5b0e9a];return _0x3b72b7;};'use strict';var config=require(_0x8934('0x0'));var Sequelize=require(_0x8934('0x1'));var _=require(_0x8934('0x2'));var jstz=require(_0x8934('0x3'));var timezone=jstz[_0x8934('0x4')]();config['sequelize']=_[_0x8934('0x5')](config[_0x8934('0x1')],{'database':'motion2','username':_0x8934('0x6'),'password':_0x8934('0x7'),'options':{'host':_0x8934('0x8'),'port':0xcea,'dialect':_0x8934('0x9'),'dialectOptions':{'charset':_0x8934('0xa')},'logging':![],'timezone':timezone[_0x8934('0xb')](),'define':{'charset':'utf8','collate':_0x8934('0xc')}}});config[_0x8934('0xd')]=_[_0x8934('0x5')](config['sequelizeHistory'],{'database':'motion2','username':'xcall','password':'xC@LL1234','options':{'host':_0x8934('0x8'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x8934('0xa')},'logging':![],'timezone':timezone[_0x8934('0xb')](),'define':{'charset':_0x8934('0xe'),'collate':_0x8934('0xc')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x8934('0x1')][_0x8934('0xf')],config[_0x8934('0x1')][_0x8934('0x10')],config['sequelize'][_0x8934('0x11')],config[_0x8934('0x1')][_0x8934('0x12')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x8934('0xd')][_0x8934('0xf')],config[_0x8934('0xd')]['username'],config[_0x8934('0xd')][_0x8934('0x11')],config[_0x8934('0xd')][_0x8934('0x12')])};db[_0x8934('0x13')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x15'));db['VoiceChanSpy']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x16'));db['VoiceContext']=db['sequelize']['import'](_0x8934('0x17'));db['VoiceExtension']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x18'));db[_0x8934('0x19')]=db[_0x8934('0x1')]['import'](_0x8934('0x1a'));db['VoiceQueue']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x1b'));db[_0x8934('0x1c')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x1d'));db['ScreenRecording']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x1e'));db[_0x8934('0x1f')]=db[_0x8934('0x1')]['import'](_0x8934('0x20'));db[_0x8934('0x21')]=db[_0x8934('0x1')]['import'](_0x8934('0x22'));db['VoiceCallReport']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x23'));db['VoiceDialReport']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x24'));db[_0x8934('0x25')]=db['sequelize'][_0x8934('0x14')](_0x8934('0x26'));db[_0x8934('0x27')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x28'));db[_0x8934('0x29')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x2a'));db['Trunk']=db[_0x8934('0x1')][_0x8934('0x14')]('../api/trunk/trunk.model');db[_0x8934('0x2b')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x2c'));db['UserVoiceQueueRt']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x2d'));db[_0x8934('0x2e')]=db[_0x8934('0x1')]['import'](_0x8934('0x2f'));db['UserChatQueue']=db['sequelize'][_0x8934('0x14')](_0x8934('0x30'));db[_0x8934('0x31')]=db[_0x8934('0x1')]['import'](_0x8934('0x32'));db[_0x8934('0x33')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x34'));db['UserSmsQueue']=db[_0x8934('0x1')][_0x8934('0x14')]('../api/userSmsQueue/userSmsQueue.model');db['UserOpenchannelQueue']=db[_0x8934('0x1')][_0x8934('0x14')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db['UserWhatsappQueue']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x35'));db[_0x8934('0x36')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x37'));db[_0x8934('0x38')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x39'));db['MailAccount']=db[_0x8934('0x1')][_0x8934('0x14')]('../api/mailAccount/mailAccount.model');db[_0x8934('0x3a')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x3b'));db[_0x8934('0x3c')]=db['sequelize']['import']('../api/mailSubstatus/mailSubstatus.model');db[_0x8934('0x3d')]=db[_0x8934('0x1')][_0x8934('0x14')]('../api/mailInteraction/mailInteraction.model');db[_0x8934('0x3e')]=db['sequelize']['import'](_0x8934('0x3f'));db[_0x8934('0x40')]=db['sequelize']['import'](_0x8934('0x41'));db[_0x8934('0x42')]=db[_0x8934('0x1')]['import'](_0x8934('0x43'));db['Dashboard']=db[_0x8934('0x1')]['import'](_0x8934('0x44'));db[_0x8934('0x45')]=db[_0x8934('0x1')]['import'](_0x8934('0x46'));db[_0x8934('0x47')]=db[_0x8934('0x1')][_0x8934('0x14')]('../api/faxAccount/faxAccount.model');db[_0x8934('0x48')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x49'));db[_0x8934('0x4a')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x4b'));db['FaxMessage']=db['sequelize']['import'](_0x8934('0x4c'));db[_0x8934('0x4d')]=db['sequelize'][_0x8934('0x14')]('../api/faxQueue/faxQueue.model');db[_0x8934('0x4e')]=db[_0x8934('0x1')]['import'](_0x8934('0x4f'));db[_0x8934('0x50')]=db[_0x8934('0x1')][_0x8934('0x14')]('../api/smsAccount/smsAccount.model');db[_0x8934('0x51')]=db[_0x8934('0x1')]['import'](_0x8934('0x52'));db[_0x8934('0x53')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x54'));db[_0x8934('0x55')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x56'));db[_0x8934('0x57')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x58'));db[_0x8934('0x59')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x5a'));db[_0x8934('0x5b')]=db['sequelize'][_0x8934('0x14')](_0x8934('0x5c'));db['OpenchannelInteraction']=db['sequelize']['import']('../api/openchannelInteraction/openchannelInteraction.model');db[_0x8934('0x5d')]=db[_0x8934('0x1')][_0x8934('0x14')]('../api/openchannelMessage/openchannelMessage.model');db['OpenchannelQueue']=db[_0x8934('0x1')]['import']('../api/openchannelQueue/openchannelQueue.model');db[_0x8934('0x5e')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x5f'));db[_0x8934('0x60')]=db[_0x8934('0x1')][_0x8934('0x14')]('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x8934('0x61')]=db['sequelize'][_0x8934('0x14')](_0x8934('0x62'));db[_0x8934('0x63')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x64'));db[_0x8934('0x65')]=db[_0x8934('0x1')]['import'](_0x8934('0x66'));db[_0x8934('0x67')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x68'));db['ChatQueue']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x69'));db['ChatGroup']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x6a'));db['ChatProactiveAction']=db['sequelize']['import'](_0x8934('0x6b'));db[_0x8934('0x6c')]=db[_0x8934('0x1')]['import'](_0x8934('0x6d'));db[_0x8934('0x6e')]=db['sequelize']['import'](_0x8934('0x6f'));db[_0x8934('0x70')]=db[_0x8934('0x1')][_0x8934('0x14')]('../api/cmHopper/cmHopper.model');db['CmHopperBlack']=db['sequelize']['import'](_0x8934('0x71'));db[_0x8934('0x72')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x73'));db[_0x8934('0x74')]=db['sequelize'][_0x8934('0x14')](_0x8934('0x75'));db['ReportAgentPreview']=db[_0x8934('0x1')]['import'](_0x8934('0x76'));db['CmCustomField']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x77'));db[_0x8934('0x78')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x79'));db['Automation']=db['sequelize'][_0x8934('0x14')](_0x8934('0x7a'));db[_0x8934('0x7b')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x7c'));db[_0x8934('0x7d')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x7e'));db[_0x8934('0x7f')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x80'));db['Interval']=db['sequelize'][_0x8934('0x14')](_0x8934('0x81'));db[_0x8934('0x82')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x83'));db[_0x8934('0x84')]=db['sequelize'][_0x8934('0x14')](_0x8934('0x85'));db['VoiceQueuesLog']=db[_0x8934('0x1')]['import'](_0x8934('0x86'));db[_0x8934('0x87')]=db[_0x8934('0x1')]['import'](_0x8934('0x88'));db[_0x8934('0x89')]=db['sequelize'][_0x8934('0x14')]('../api/sound/sound.model');db[_0x8934('0x8a')]=db['sequelize'][_0x8934('0x14')](_0x8934('0x8b'));db[_0x8934('0x8c')]=db['sequelize'][_0x8934('0x14')](_0x8934('0x8d'));db[_0x8934('0x8e')]=db[_0x8934('0x1')]['import'](_0x8934('0x8f'));db['Variable']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x90'));db[_0x8934('0x91')]=db['sequelize'][_0x8934('0x14')](_0x8934('0x92'));db[_0x8934('0x93')]=db['sequelize'][_0x8934('0x14')](_0x8934('0x94'));db[_0x8934('0x95')]=db['sequelize']['import'](_0x8934('0x96'));db[_0x8934('0x97')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x98'));db[_0x8934('0x99')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x9a'));db['AnalyticMetric']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x9b'));db[_0x8934('0x9c')]=db[_0x8934('0x1')]['import'](_0x8934('0x9d'));db[_0x8934('0x9e')]=db['sequelize'][_0x8934('0x14')]('../api/analyticTreeReport/analyticTreeReport.model');db['SalesforceAccount']=db['sequelize'][_0x8934('0x14')](_0x8934('0x9f'));db[_0x8934('0xa0')]=db['sequelize'][_0x8934('0x14')](_0x8934('0xa1'));db['SalesforceField']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xa2'));db[_0x8934('0xa3')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xa4'));db[_0x8934('0xa5')]=db[_0x8934('0x1')][_0x8934('0x14')]('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db[_0x8934('0xa6')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xa7'));db[_0x8934('0xa8')]=db[_0x8934('0x1')][_0x8934('0x14')]('../api/intDeskAccount/intDeskAccount.model');db[_0x8934('0xa9')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xaa'));db[_0x8934('0xab')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xac'));db[_0x8934('0xad')]=db['sequelize']['import'](_0x8934('0xae'));db[_0x8934('0xaf')]=db['sequelize'][_0x8934('0x14')](_0x8934('0xb0'));db[_0x8934('0xb1')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xb2'));db[_0x8934('0xb3')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xb4'));db[_0x8934('0xb5')]=db['sequelize'][_0x8934('0x14')](_0x8934('0xb6'));db[_0x8934('0xb7')]=db['sequelize'][_0x8934('0x14')]('../api/intZendeskField/intZendeskField.model');db[_0x8934('0xb8')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xb9'));db['FreshdeskConfiguration']=db['sequelize'][_0x8934('0x14')]('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db[_0x8934('0xba')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xbb'));db['VtigerAccount']=db[_0x8934('0x1')]['import']('../api/intVtigerAccount/intVtigerAccount.model');db['VtigerConfiguration']=db['sequelize'][_0x8934('0x14')](_0x8934('0xbc'));db[_0x8934('0xbd')]=db[_0x8934('0x1')][_0x8934('0x14')]('../api/intVtigerField/intVtigerField.model');db['ServicenowAccount']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xbe'));db[_0x8934('0xbf')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xc0'));db[_0x8934('0xc1')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xc2'));db[_0x8934('0xc3')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xc4'));db[_0x8934('0xc5')]=db['sequelize']['import'](_0x8934('0xc6'));db[_0x8934('0xc7')]=db['sequelize'][_0x8934('0x14')](_0x8934('0xc8'));db[_0x8934('0xc9')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xca'));db[_0x8934('0xcb')]=db['sequelize'][_0x8934('0x14')]('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db[_0x8934('0xcc')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xcd'));db['Integration']=db[_0x8934('0x1')]['import']('../api/integration/integration.model');db[_0x8934('0xce')]=db[_0x8934('0x1')]['import']('../api/network/network.model');db[_0x8934('0xcf')]=db['sequelize'][_0x8934('0x14')](_0x8934('0xd0'));db[_0x8934('0xd1')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xd2'));db['JscriptyAnswerReport']=db[_0x8934('0x1')][_0x8934('0x14')]('../api/jscriptyAnswerReport/jscriptyAnswerReport.model');db['JscriptyQuestionReport']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xd3'));db['JscriptySessionReport']=db['sequelize'][_0x8934('0x14')]('../api/jscriptySessionReport/jscriptySessionReport.model');db[_0x8934('0xd4')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xd5'));db[_0x8934('0xd6')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xd7'));db['SquareDetailsReport']=db[_0x8934('0x1')][_0x8934('0x14')]('../api/squareReportDetail/squareReportDetail.model');db['JscriptyProject']=db[_0x8934('0x1')]['import'](_0x8934('0xd8'));db[_0x8934('0xd9')]=db['sequelize'][_0x8934('0x14')](_0x8934('0xda'));db[_0x8934('0xdb')]=db[_0x8934('0x1')]['import'](_0x8934('0xdc'));db[_0x8934('0xdd')]=db[_0x8934('0x1')][_0x8934('0x14')]('../api/squareProject/squareProject.model');db[_0x8934('0xde')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xdf'));db[_0x8934('0xe0')]=db[_0x8934('0x1')]['import'](_0x8934('0xe1'));db['Team']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xe2'));db['License']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xe3'));db[_0x8934('0xe4')]=db['sequelize'][_0x8934('0x14')](_0x8934('0xe5'));db[_0x8934('0xe6')]=db['sequelize']['import']('../api/migration/migration.model');db['Attachment']=db[_0x8934('0x1')][_0x8934('0x14')]('../api/attachment/attachment.model');db['Plugin']=db['sequelize'][_0x8934('0x14')](_0x8934('0xe7'));db[_0x8934('0xe8')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xe9'));db[_0x8934('0xea')]=db[_0x8934('0x1')]['import'](_0x8934('0xeb'));db['FaxTransferReport']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xec'));db[_0x8934('0xed')]=db['sequelize'][_0x8934('0x14')](_0x8934('0xee'));db[_0x8934('0xef')]=db[_0x8934('0x1')][_0x8934('0x14')]('../api/smsTransferReport/smsTransferReport.model');db[_0x8934('0xf0')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xf1'));db[_0x8934('0xf2')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xf3'));db[_0x8934('0xf4')]=db['sequelize'][_0x8934('0x14')](_0x8934('0xf5'));db[_0x8934('0xf6')]=db['sequelize'][_0x8934('0x14')](_0x8934('0xf7'));db[_0x8934('0xf8')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xf9'));db[_0x8934('0xfa')]=db[_0x8934('0x1')]['import']('../api/userNotification/userNotification.model');db[_0x8934('0xfb')]=db[_0x8934('0x1')]['import']('../api/whatsappAccount/whatsappAccount.model');db[_0x8934('0xfc')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0xfd'));db[_0x8934('0xfe')]=db[_0x8934('0x1')]['import'](_0x8934('0xff'));db['WhatsappMessage']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x100'));db[_0x8934('0x101')]=db['sequelize'][_0x8934('0x14')](_0x8934('0x102'));db[_0x8934('0x103')]=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x104'));db['WhatsappQueue']=db['sequelize'][_0x8934('0x14')]('../api/whatsappQueue/whatsappQueue.model');db['CloudProvider']=db[_0x8934('0x1')][_0x8934('0x14')](_0x8934('0x105'));db[_0x8934('0x106')]=db[_0x8934('0x1')]['import'](_0x8934('0x107'));db[_0x8934('0x108')]=db['sequelize'][_0x8934('0x14')](_0x8934('0x109'));db[_0x8934('0x10a')]=db[_0x8934('0x1')]['import'](_0x8934('0x10b'));db['User']['hasOne'](db[_0x8934('0x1f')],{'as':'VoiceMail','onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x10d')});db[_0x8934('0x13')][_0x8934('0x10e')](db[_0x8934('0x1c')],{'as':_0x8934('0x10f'),'foreignKey':_0x8934('0x10d')});db[_0x8934('0x13')][_0x8934('0x10e')](db[_0x8934('0x110')],{'as':'VoiceQueuesRt','foreignKey':'UserId'});db[_0x8934('0x13')][_0x8934('0x10e')](db[_0x8934('0x111')],{'as':'Extensions','onDelete':_0x8934('0x10c'),'hooks':!![]});db['User'][_0x8934('0x10e')](db['CmHopperFinal'],{'as':_0x8934('0x112'),'foreignKey':'UserId'});db['User']['hasMany'](db[_0x8934('0x74')],{'as':_0x8934('0x113'),'foreignKey':_0x8934('0x10d')});db['User']['hasMany'](db[_0x8934('0x114')],{'as':_0x8934('0x114'),'foreignKey':_0x8934('0x10d')});db[_0x8934('0x13')]['hasMany'](db[_0x8934('0x115')],{'as':_0x8934('0x116'),'foreignKey':'UserId'});db[_0x8934('0x13')][_0x8934('0x10e')](db['ChatInteraction'],{'as':_0x8934('0x117'),'foreignKey':_0x8934('0x10d')});db['User'][_0x8934('0x10e')](db['SmsInteraction'],{'as':_0x8934('0x118'),'foreignKey':_0x8934('0x10d')});db['User'][_0x8934('0x10e')](db['FaxInteraction'],{'as':'FaxInteractions','foreignKey':_0x8934('0x10d')});db[_0x8934('0x13')][_0x8934('0x10e')](db[_0x8934('0x3d')],{'as':_0x8934('0x119'),'foreignKey':_0x8934('0x10d')});db[_0x8934('0x13')]['hasMany'](db[_0x8934('0xfe')],{'as':_0x8934('0x11a'),'foreignKey':_0x8934('0x10d')});db['User'][_0x8934('0x10e')](db[_0x8934('0xfa')],{'as':'UserNotifications','foreignKey':_0x8934('0x11b')});db[_0x8934('0x13')][_0x8934('0x11c')](db[_0x8934('0xf4')],{'as':_0x8934('0xf4'),'foreignKey':'userProfileId'});db[_0x8934('0x13')][_0x8934('0x11d')](db[_0x8934('0x11e')],{'as':'Groups','through':_0x8934('0x11f')});db[_0x8934('0x13')][_0x8934('0x11d')](db[_0x8934('0x6e')],{'as':_0x8934('0x120'),'through':_0x8934('0x121')});db[_0x8934('0x13')][_0x8934('0x11d')](db[_0x8934('0xf0')],{'as':_0x8934('0x122'),'through':_0x8934('0x123')});db[_0x8934('0x13')]['belongsToMany'](db['Team'],{'through':_0x8934('0x124')});db[_0x8934('0x13')]['belongsToMany'](db['MailInteraction'],{'as':_0x8934('0x119'),'through':'user_has_mail_interactions'});db[_0x8934('0x13')][_0x8934('0x11d')](db[_0x8934('0x63')],{'as':'ChatInteractions','through':_0x8934('0x125')});db[_0x8934('0x13')][_0x8934('0x11d')](db['FaxInteraction'],{'as':'FaxInteractions','through':_0x8934('0x126')});db[_0x8934('0x13')][_0x8934('0x11d')](db[_0x8934('0x53')],{'as':_0x8934('0x118'),'through':_0x8934('0x127')});db[_0x8934('0x13')][_0x8934('0x11d')](db[_0x8934('0x115')],{'as':_0x8934('0x116'),'through':_0x8934('0x128')});db['User']['belongsToMany'](db[_0x8934('0xfe')],{'as':_0x8934('0x11a'),'through':'user_has_whatsapp_interactions'});db[_0x8934('0x13')][_0x8934('0x11d')](db[_0x8934('0x129')],{'as':'VoiceQueues','through':_0x8934('0x2e'),'required':![]});db[_0x8934('0x13')][_0x8934('0x11d')](db[_0x8934('0xf2')],{'as':_0x8934('0x12a'),'through':'UserVoicePrefix','required':![]});db['User']['belongsToMany'](db[_0x8934('0x3a')],{'as':'MailQueues','through':_0x8934('0x31'),'required':![]});db[_0x8934('0x13')][_0x8934('0x11d')](db['ChatQueue'],{'as':_0x8934('0x12b'),'through':'UserChatQueue','required':![],'hooks':!![]});db[_0x8934('0x13')][_0x8934('0x11d')](db['FaxQueue'],{'as':_0x8934('0x12c'),'through':_0x8934('0x33'),'required':![]});db[_0x8934('0x13')][_0x8934('0x11d')](db[_0x8934('0x57')],{'as':'SmsQueues','through':_0x8934('0x12d'),'required':![]});db[_0x8934('0x13')][_0x8934('0x11d')](db[_0x8934('0x12e')],{'as':_0x8934('0x12f'),'through':_0x8934('0x130'),'required':![]});db[_0x8934('0x13')][_0x8934('0x11d')](db[_0x8934('0x131')],{'as':_0x8934('0x132'),'through':_0x8934('0x133'),'required':![]});db[_0x8934('0x13')][_0x8934('0x11d')](db[_0x8934('0xf0')],{'through':_0x8934('0x123')});db[_0x8934('0x13')][_0x8934('0x11d')](db[_0x8934('0x5e')],{'as':_0x8934('0x134'),'through':_0x8934('0x135')});db[_0x8934('0x13')][_0x8934('0x11d')](db[_0x8934('0x47')],{'as':_0x8934('0x136'),'through':'user_has_fax_accounts'});db[_0x8934('0x13')]['belongsToMany'](db[_0x8934('0x137')],{'as':'MailAccounts','through':_0x8934('0x138')});db[_0x8934('0x13')]['belongsToMany'](db[_0x8934('0x59')],{'as':_0x8934('0x139'),'through':'user_has_openchannel_accounts'});db[_0x8934('0x13')]['belongsToMany'](db[_0x8934('0x50')],{'as':_0x8934('0x13a'),'through':_0x8934('0x13b')});db[_0x8934('0x13')][_0x8934('0x11d')](db['WhatsappAccount'],{'as':_0x8934('0x13c'),'through':'user_has_whatsapp_accounts'});db[_0x8934('0x13')]['belongsToMany'](db[_0x8934('0xdd')],{'as':_0x8934('0x13d'),'through':_0x8934('0x13e')});db[_0x8934('0x13f')][_0x8934('0x10e')](db[_0x8934('0x111')],{'as':_0x8934('0x140'),'onDelete':'cascade','foreignKey':_0x8934('0x141')});db[_0x8934('0x142')]['hasMany'](db[_0x8934('0x111')],{'onDelete':_0x8934('0x10c')});db[_0x8934('0x111')]['hasMany'](db[_0x8934('0x111')],{'as':_0x8934('0x143'),'onDelete':'cascade'});db[_0x8934('0x19')][_0x8934('0x11d')](db[_0x8934('0x89')],{'as':_0x8934('0x144'),'through':_0x8934('0x145')});db[_0x8934('0x129')][_0x8934('0x10e')](db['UserVoiceQueueRt'],{'as':'Members','foreignKey':_0x8934('0x146')});db[_0x8934('0x129')][_0x8934('0x10e')](db[_0x8934('0x70')],{'as':_0x8934('0x147'),'foreignKey':_0x8934('0x146')});db[_0x8934('0x129')][_0x8934('0x10e')](db[_0x8934('0x72')],{'as':_0x8934('0x112'),'foreignKey':_0x8934('0x146')});db['VoiceQueue']['hasMany'](db['CmHopperHistory'],{'as':'HopperHistories','foreignKey':_0x8934('0x146')});db['VoiceQueue'][_0x8934('0x10e')](db[_0x8934('0x114')],{'as':_0x8934('0x114'),'foreignKey':'VoiceQueueId'});db['VoiceQueue']['hasMany'](db[_0x8934('0x148')],{'as':'HopperBlacks','foreignKey':_0x8934('0x146')});db['VoiceQueue'][_0x8934('0x10e')](db[_0x8934('0x149')],{'as':_0x8934('0x14a'),'foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0x8934('0x11c')](db[_0x8934('0x14b')],{'as':_0x8934('0x14b'),'foreignKey':'TrunkId'});db[_0x8934('0x129')][_0x8934('0x11c')](db[_0x8934('0x14b')],{'as':_0x8934('0x14c'),'foreignKey':_0x8934('0x14d')});db[_0x8934('0x129')]['belongsTo'](db['Interval'],{'as':_0x8934('0x14e'),'foreignKey':_0x8934('0x14f')});db[_0x8934('0x129')][_0x8934('0x11c')](db[_0x8934('0x82')],{'as':_0x8934('0x150'),'foreignKey':'mandatoryDispositionPauseId'});db['VoiceQueue'][_0x8934('0x11d')](db[_0x8934('0xf0')],{'as':_0x8934('0x122'),'through':_0x8934('0x151')});db['VoiceQueue'][_0x8934('0x11d')](db[_0x8934('0x13')],{'as':_0x8934('0x152'),'through':_0x8934('0x2e')});db[_0x8934('0x129')][_0x8934('0x11d')](db[_0x8934('0x153')],{'as':'Teams','through':'TeamVoiceQueue'});db['VoiceQueue'][_0x8934('0x11d')](db[_0x8934('0xf0')],{'as':_0x8934('0x154'),'through':_0x8934('0x155')});db[_0x8934('0x1c')][_0x8934('0x11c')](db[_0x8934('0x13')],{'as':_0x8934('0x13'),'foreignKey':_0x8934('0x10d')});db[_0x8934('0x156')][_0x8934('0x11c')](db[_0x8934('0x13')],{'as':_0x8934('0x13'),'foreignKey':_0x8934('0x10d')});db[_0x8934('0x1f')]['hasMany'](db[_0x8934('0x21')],{'as':_0x8934('0x157'),'onDelete':'cascade','foreignKey':_0x8934('0x158'),'sourceKey':_0x8934('0x159')});db[_0x8934('0x21')][_0x8934('0x11c')](db[_0x8934('0x1f')],{'foreignKey':'mailboxuser','targetKey':'mailbox'});db[_0x8934('0x15a')][_0x8934('0x10e')](db['VoiceQueueReport'],{'as':_0x8934('0x15b'),'foreignKey':_0x8934('0x15c'),'constraints':![]});db[_0x8934('0x15a')][_0x8934('0x10e')](db['VoiceAgentReport'],{'as':_0x8934('0x15d'),'foreignKey':'uniqueid','constraints':![]});db[_0x8934('0x15a')]['belongsTo'](db[_0x8934('0x13')],{'as':_0x8934('0x13'),'foreignKey':_0x8934('0x10d')});db[_0x8934('0x15a')][_0x8934('0x11c')](db[_0x8934('0x6e')],{'as':'Contact','foreignKey':_0x8934('0x15e')});db['MailServerIn'][_0x8934('0x11c')](db['MailAccount'],{'as':_0x8934('0x137'),'foreignKey':_0x8934('0x15f')});db['MailServerOut'][_0x8934('0x11c')](db[_0x8934('0x137')],{'as':_0x8934('0x137'),'foreignKey':_0x8934('0x15f')});db['MailAccount'][_0x8934('0x160')](db[_0x8934('0x36')],{'as':_0x8934('0x161'),'onDelete':_0x8934('0x10c')});db['MailAccount'][_0x8934('0x160')](db[_0x8934('0x38')],{'as':_0x8934('0x162'),'onDelete':_0x8934('0x10c')});db[_0x8934('0x137')][_0x8934('0x10e')](db[_0x8934('0x7d')],{'as':_0x8934('0x163'),'foreignKey':_0x8934('0x15f'),'onDelete':_0x8934('0x10c')});db[_0x8934('0x137')][_0x8934('0x10e')](db[_0x8934('0x7b')],{'as':_0x8934('0x164'),'foreignKey':_0x8934('0x15f')});db['MailAccount'][_0x8934('0x10e')](db[_0x8934('0x3e')],{'as':_0x8934('0x157'),'foreignKey':_0x8934('0x15f')});db[_0x8934('0x137')][_0x8934('0x10e')](db[_0x8934('0x3d')],{'as':'Interactions'});db[_0x8934('0x137')]['hasMany'](db[_0x8934('0x40')],{'as':'Applications'});db[_0x8934('0x137')][_0x8934('0x11c')](db[_0x8934('0xf0')],{'as':_0x8934('0x165'),'foreignKey':_0x8934('0x166')});db[_0x8934('0x137')][_0x8934('0x11c')](db[_0x8934('0x8c')],{'as':'Template','foreignKey':_0x8934('0x167')});db[_0x8934('0x137')][_0x8934('0x11c')](db['Pause'],{'as':_0x8934('0x150'),'foreignKey':_0x8934('0x168')});db[_0x8934('0x137')][_0x8934('0x11d')](db['User'],{'as':_0x8934('0x152'),'through':_0x8934('0x138')});db[_0x8934('0x3a')][_0x8934('0x11d')](db[_0x8934('0x13')],{'as':_0x8934('0x152'),'through':_0x8934('0x31')});db[_0x8934('0x3a')][_0x8934('0x11d')](db[_0x8934('0x153')],{'through':'team_has_mail_queues','as':'Teams'});db[_0x8934('0x3d')][_0x8934('0x10e')](db[_0x8934('0x3e')],{'as':_0x8934('0x157'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x169')});db[_0x8934('0x3d')][_0x8934('0x11c')](db[_0x8934('0x137')],{'as':'Account','foreignKey':'MailAccountId'});db[_0x8934('0x3d')][_0x8934('0x11c')](db['CmContact'],{'as':'Contact','foreignKey':_0x8934('0x15e')});db[_0x8934('0x3d')][_0x8934('0x11c')](db[_0x8934('0x13')],{'as':_0x8934('0x16a'),'foreignKey':_0x8934('0x10d')});db['MailInteraction'][_0x8934('0x11d')](db[_0x8934('0x8a')],{'through':_0x8934('0x16b'),'as':'Tags'});db[_0x8934('0x3d')][_0x8934('0x11d')](db[_0x8934('0x8a')],{'through':_0x8934('0x16b'),'as':_0x8934('0x16c')});db[_0x8934('0x3d')][_0x8934('0x11d')](db['User'],{'as':_0x8934('0x16d'),'through':_0x8934('0x16e'),'foreignKey':_0x8934('0x169')});db['MailMessage']['hasMany'](db[_0x8934('0x16f')],{'as':'Attachments','onDelete':'cascade'});db[_0x8934('0x3e')]['belongsTo'](db[_0x8934('0x13')],{'as':_0x8934('0x13')});db[_0x8934('0x3e')][_0x8934('0x11c')](db[_0x8934('0x6e')],{'onDelete':_0x8934('0x10c'),'as':_0x8934('0x170')});db[_0x8934('0x3e')][_0x8934('0x11c')](db[_0x8934('0x3d')],{'as':_0x8934('0x171'),'foreignKey':_0x8934('0x169')});db[_0x8934('0x3e')][_0x8934('0x11c')](db[_0x8934('0x137')],{'as':_0x8934('0x172'),'foreignKey':_0x8934('0x15f')});db['MailMessage']['belongsTo'](db[_0x8934('0x5e')],{'as':_0x8934('0x5e'),'foreignKey':_0x8934('0x173')});db[_0x8934('0x3e')]['belongsTo'](db[_0x8934('0x67')],{'as':_0x8934('0x67'),'foreignKey':'ChatOfflineMessageId'});db[_0x8934('0x40')][_0x8934('0x11c')](db[_0x8934('0x13')],{'onDelete':_0x8934('0x174')});db[_0x8934('0x40')][_0x8934('0x11c')](db[_0x8934('0x3a')],{'onDelete':_0x8934('0x174')});db[_0x8934('0x40')][_0x8934('0x11c')](db['MailAccount'],{'onDelete':_0x8934('0x174')});db['MailApplication'][_0x8934('0x11c')](db[_0x8934('0x14e')],{'onDelete':_0x8934('0x174'),'foreignKey':_0x8934('0x14f')});db[_0x8934('0x40')][_0x8934('0x11c')](db['Tag'],{'onDelete':_0x8934('0x174'),'foreignKey':_0x8934('0x175')});db[_0x8934('0x42')]['belongsTo'](db[_0x8934('0x137')],{});db[_0x8934('0x42')]['belongsTo'](db[_0x8934('0xf0')],{'as':_0x8934('0x165'),'foreignKey':_0x8934('0x166')});db[_0x8934('0x42')]['belongsTo'](db[_0x8934('0x6e')],{'as':_0x8934('0x170'),'foreignKey':_0x8934('0x15e')});db[_0x8934('0x42')][_0x8934('0x11c')](db[_0x8934('0x3d')],{});db[_0x8934('0x42')][_0x8934('0x11c')](db['MailMessage'],{});db['MailQueueReport'][_0x8934('0x11c')](db[_0x8934('0x13')],{});db[_0x8934('0x42')][_0x8934('0x11c')](db[_0x8934('0x3a')],{});db['Dashboard']['hasMany'](db['DashboardItem'],{'as':_0x8934('0x176'),'onDelete':_0x8934('0x10c')});db[_0x8934('0x47')][_0x8934('0x10e')](db[_0x8934('0x7d')],{'as':_0x8934('0x163'),'foreignKey':_0x8934('0x177'),'onDelete':_0x8934('0x10c')});db[_0x8934('0x47')]['hasMany'](db[_0x8934('0x7b')],{'as':'Answers','foreignKey':_0x8934('0x177')});db[_0x8934('0x47')]['hasMany'](db[_0x8934('0x4a')],{'as':_0x8934('0x178')});db[_0x8934('0x47')][_0x8934('0x10e')](db[_0x8934('0x48')],{'as':_0x8934('0x143')});db[_0x8934('0x47')][_0x8934('0x10e')](db[_0x8934('0x111')],{'as':'Exntensions','onDelete':_0x8934('0x10c')});db[_0x8934('0x47')][_0x8934('0x10e')](db[_0x8934('0x179')],{'as':'Messages'});db[_0x8934('0x47')][_0x8934('0x11c')](db[_0x8934('0x14b')],{'as':_0x8934('0x14b')});db[_0x8934('0x47')][_0x8934('0x11c')](db[_0x8934('0xf0')],{'as':'List','foreignKey':_0x8934('0x166')});db['FaxAccount'][_0x8934('0x11c')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x8934('0x168')});db[_0x8934('0x47')][_0x8934('0x11d')](db['User'],{'as':_0x8934('0x152'),'through':_0x8934('0x17a')});db[_0x8934('0x48')][_0x8934('0x11c')](db[_0x8934('0x13')],{'onDelete':'restrict'});db[_0x8934('0x48')][_0x8934('0x11c')](db[_0x8934('0x4d')],{'onDelete':_0x8934('0x174')});db['FaxApplication']['belongsTo'](db[_0x8934('0x47')],{'onDelete':_0x8934('0x174')});db[_0x8934('0x48')][_0x8934('0x11c')](db[_0x8934('0x8a')],{'onDelete':_0x8934('0x174'),'foreignKey':'TagId'});db[_0x8934('0x4a')][_0x8934('0x10e')](db[_0x8934('0x179')],{'as':_0x8934('0x157'),'onDelete':_0x8934('0x10c'),'foreignKey':'FaxInteractionId'});db[_0x8934('0x4a')]['belongsTo'](db['FaxAccount'],{'as':_0x8934('0x172'),'foreignKey':_0x8934('0x177')});db['FaxInteraction'][_0x8934('0x11c')](db['CmContact'],{'as':_0x8934('0x170'),'foreignKey':_0x8934('0x15e')});db[_0x8934('0x4a')]['belongsTo'](db[_0x8934('0x13')],{'as':_0x8934('0x16a'),'foreignKey':_0x8934('0x10d')});db[_0x8934('0x4a')][_0x8934('0x11d')](db['Tag'],{'through':_0x8934('0x17b'),'as':_0x8934('0x17c')});db[_0x8934('0x4a')][_0x8934('0x11d')](db['Tag'],{'through':'fax_interaction_has_tags','as':_0x8934('0x16c')});db[_0x8934('0x4a')]['belongsToMany'](db['User'],{'as':_0x8934('0x16d'),'through':_0x8934('0x126'),'foreignKey':'FaxInteractionId'});db['FaxMessage'][_0x8934('0x11c')](db[_0x8934('0x13')],{'onDelete':_0x8934('0x10c'),'as':_0x8934('0x13')});db[_0x8934('0x179')][_0x8934('0x11c')](db[_0x8934('0x4a')],{'as':_0x8934('0x171'),'foreignKey':_0x8934('0x17d')});db[_0x8934('0x179')][_0x8934('0x11c')](db['CmContact'],{'onDelete':_0x8934('0x10c'),'as':_0x8934('0x170')});db[_0x8934('0x179')][_0x8934('0x11c')](db[_0x8934('0x16f')],{'as':_0x8934('0x16f'),'foreignKey':_0x8934('0x17e')});db[_0x8934('0x179')][_0x8934('0x11c')](db[_0x8934('0x47')],{'as':_0x8934('0x172'),'foreignKey':'FaxAccountId'});db[_0x8934('0x4d')]['belongsToMany'](db[_0x8934('0x13')],{'as':_0x8934('0x152'),'through':_0x8934('0x33')});db[_0x8934('0x4d')][_0x8934('0x11d')](db['Team'],{'through':'team_has_fax_queues','as':'Teams'});db[_0x8934('0x4e')][_0x8934('0x11c')](db['FaxAccount'],{});db[_0x8934('0x4e')][_0x8934('0x11c')](db[_0x8934('0xf0')],{'as':_0x8934('0x165'),'foreignKey':_0x8934('0x166')});db[_0x8934('0x4e')][_0x8934('0x11c')](db[_0x8934('0x6e')],{'as':_0x8934('0x170'),'foreignKey':_0x8934('0x15e')});db[_0x8934('0x4e')]['belongsTo'](db[_0x8934('0x4a')],{});db[_0x8934('0x4e')][_0x8934('0x11c')](db['FaxMessage'],{});db[_0x8934('0x4e')]['belongsTo'](db['User'],{});db[_0x8934('0x4e')][_0x8934('0x11c')](db['FaxQueue'],{});db[_0x8934('0x50')][_0x8934('0x10e')](db[_0x8934('0x7d')],{'as':'Dispositions','foreignKey':_0x8934('0x17f'),'onDelete':_0x8934('0x10c')});db[_0x8934('0x50')][_0x8934('0x10e')](db['CannedAnswer'],{'as':_0x8934('0x164'),'foreignKey':_0x8934('0x17f')});db[_0x8934('0x50')]['hasMany'](db[_0x8934('0x55')],{'as':'Messages','foreignKey':_0x8934('0x17f')});db[_0x8934('0x50')]['hasMany'](db[_0x8934('0x53')],{'as':_0x8934('0x178')});db[_0x8934('0x50')][_0x8934('0x10e')](db[_0x8934('0x51')],{'as':'Applications'});db[_0x8934('0x50')]['belongsTo'](db[_0x8934('0xf0')],{'as':_0x8934('0x165'),'foreignKey':_0x8934('0x166')});db['SmsAccount'][_0x8934('0x11c')](db['Pause'],{'as':_0x8934('0x150'),'foreignKey':_0x8934('0x168')});db[_0x8934('0x50')]['belongsToMany'](db[_0x8934('0x13')],{'as':_0x8934('0x152'),'through':_0x8934('0x13b')});db['SmsApplication'][_0x8934('0x11c')](db[_0x8934('0x13')],{'onDelete':'restrict'});db[_0x8934('0x51')][_0x8934('0x11c')](db[_0x8934('0x57')],{'onDelete':_0x8934('0x174')});db[_0x8934('0x51')][_0x8934('0x11c')](db[_0x8934('0x50')],{'onDelete':_0x8934('0x174')});db[_0x8934('0x51')][_0x8934('0x11c')](db[_0x8934('0x14e')],{'onDelete':_0x8934('0x174'),'foreignKey':'IntervalId'});db[_0x8934('0x51')][_0x8934('0x11c')](db[_0x8934('0x8a')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x8934('0x53')][_0x8934('0x10e')](db[_0x8934('0x55')],{'as':_0x8934('0x157'),'onDelete':_0x8934('0x10c'),'foreignKey':'SmsInteractionId'});db[_0x8934('0x53')]['belongsTo'](db[_0x8934('0x50')],{'as':_0x8934('0x172'),'foreignKey':_0x8934('0x17f')});db[_0x8934('0x53')][_0x8934('0x11c')](db[_0x8934('0x6e')],{'as':_0x8934('0x170'),'foreignKey':_0x8934('0x15e')});db[_0x8934('0x53')][_0x8934('0x11c')](db[_0x8934('0x13')],{'as':_0x8934('0x16a'),'foreignKey':_0x8934('0x10d')});db[_0x8934('0x53')][_0x8934('0x11d')](db[_0x8934('0x8a')],{'through':_0x8934('0x180'),'as':'Tags'});db[_0x8934('0x53')][_0x8934('0x11d')](db[_0x8934('0x8a')],{'through':_0x8934('0x180'),'as':_0x8934('0x16c')});db[_0x8934('0x53')][_0x8934('0x11d')](db['User'],{'as':_0x8934('0x16d'),'through':_0x8934('0x127'),'foreignKey':_0x8934('0x181')});db[_0x8934('0x55')]['belongsTo'](db[_0x8934('0x13')],{'as':_0x8934('0x13')});db[_0x8934('0x55')][_0x8934('0x11c')](db['CmContact'],{'onDelete':'cascade','as':_0x8934('0x170')});db[_0x8934('0x55')]['belongsTo'](db[_0x8934('0x53')],{'onDelete':_0x8934('0x10c'),'as':'Interaction','foreignKey':'SmsInteractionId'});db[_0x8934('0x55')][_0x8934('0x11c')](db[_0x8934('0x50')],{'as':'Account','foreignKey':_0x8934('0x17f')});db[_0x8934('0x57')]['belongsToMany'](db[_0x8934('0x13')],{'as':_0x8934('0x152'),'through':_0x8934('0x12d'),'foreignKey':_0x8934('0x182')});db['SmsQueue'][_0x8934('0x11d')](db[_0x8934('0x153')],{'through':_0x8934('0x183'),'as':'Teams'});db[_0x8934('0x59')][_0x8934('0x10e')](db[_0x8934('0x7d')],{'as':_0x8934('0x163'),'foreignKey':'OpenchannelAccountId','onDelete':'cascade'});db['OpenchannelAccount']['hasMany'](db[_0x8934('0x7b')],{'as':_0x8934('0x164'),'foreignKey':_0x8934('0x184')});db[_0x8934('0x59')][_0x8934('0x10e')](db[_0x8934('0x115')],{'as':_0x8934('0x178'),'foreignKey':_0x8934('0x184')});db['OpenchannelAccount'][_0x8934('0x10e')](db[_0x8934('0x5d')],{'as':'Messages','foreignKey':'OpenchannelAccountId'});db[_0x8934('0x59')][_0x8934('0x10e')](db[_0x8934('0x5b')],{'as':'Applications','foreignKey':_0x8934('0x184')});db['OpenchannelAccount']['belongsTo'](db[_0x8934('0xf0')],{'as':'List','foreignKey':'ListId'});db[_0x8934('0x59')][_0x8934('0x11c')](db['Pause'],{'as':_0x8934('0x150'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x8934('0x59')][_0x8934('0x11d')](db[_0x8934('0x13')],{'as':'Agents','through':_0x8934('0x185')});db[_0x8934('0x5b')][_0x8934('0x11c')](db[_0x8934('0x13')],{'onDelete':'restrict'});db['OpenchannelApplication'][_0x8934('0x11c')](db[_0x8934('0x12e')],{'onDelete':_0x8934('0x174'),'foreignKey':_0x8934('0x186')});db[_0x8934('0x5b')]['belongsTo'](db['OpenchannelAccount'],{'onDelete':'restrict','foreignKey':_0x8934('0x184')});db[_0x8934('0x5b')][_0x8934('0x11c')](db[_0x8934('0x14e')],{'onDelete':_0x8934('0x174'),'foreignKey':_0x8934('0x14f')});db[_0x8934('0x5b')][_0x8934('0x11c')](db['Tag'],{'onDelete':_0x8934('0x174'),'foreignKey':'TagId'});db['OpenchannelInteraction']['hasMany'](db['OpenchannelMessage'],{'as':_0x8934('0x157'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x187')});db['OpenchannelInteraction'][_0x8934('0x11c')](db[_0x8934('0x59')],{'as':_0x8934('0x172'),'foreignKey':_0x8934('0x184')});db[_0x8934('0x115')][_0x8934('0x11c')](db[_0x8934('0x6e')],{'as':_0x8934('0x170'),'foreignKey':_0x8934('0x15e')});db[_0x8934('0x115')][_0x8934('0x11c')](db[_0x8934('0x13')],{'as':_0x8934('0x16a'),'foreignKey':'UserId'});db[_0x8934('0x115')][_0x8934('0x11d')](db[_0x8934('0x8a')],{'through':_0x8934('0x188'),'as':_0x8934('0x17c')});db[_0x8934('0x115')][_0x8934('0x11d')](db[_0x8934('0x8a')],{'through':_0x8934('0x188'),'as':_0x8934('0x16c')});db[_0x8934('0x115')][_0x8934('0x11d')](db[_0x8934('0x13')],{'as':_0x8934('0x16d'),'through':'user_has_openchannel_interactions','foreignKey':'OpenchannelInteractionId'});db['OpenchannelMessage'][_0x8934('0x11c')](db[_0x8934('0x13')],{'onDelete':'cascade','as':'User'});db[_0x8934('0x5d')][_0x8934('0x11c')](db[_0x8934('0x6e')],{'onDelete':_0x8934('0x10c'),'as':_0x8934('0x170')});db['OpenchannelMessage'][_0x8934('0x11c')](db['OpenchannelInteraction'],{'onDelete':_0x8934('0x10c'),'as':_0x8934('0x171'),'foreignKey':_0x8934('0x187')});db[_0x8934('0x5d')]['belongsTo'](db[_0x8934('0x16f')],{'as':_0x8934('0x16f'),'foreignKey':_0x8934('0x17e')});db[_0x8934('0x5d')]['belongsTo'](db[_0x8934('0x59')],{'as':'Account','foreignKey':_0x8934('0x184')});db['OpenchannelQueue'][_0x8934('0x11d')](db[_0x8934('0x13')],{'as':_0x8934('0x152'),'through':_0x8934('0x130'),'foreignKey':_0x8934('0x186')});db[_0x8934('0x12e')]['belongsToMany'](db[_0x8934('0x153')],{'through':_0x8934('0x189'),'as':_0x8934('0x18a')});db[_0x8934('0x5e')][_0x8934('0x10e')](db[_0x8934('0x7d')],{'as':_0x8934('0x163'),'foreignKey':_0x8934('0x173'),'onDelete':_0x8934('0x10c')});db[_0x8934('0x5e')][_0x8934('0x10e')](db[_0x8934('0x7b')],{'as':_0x8934('0x164'),'foreignKey':_0x8934('0x173')});db[_0x8934('0x5e')][_0x8934('0x10e')](db['ChatProactiveAction'],{'as':_0x8934('0x18b')});db[_0x8934('0x5e')][_0x8934('0x10e')](db[_0x8934('0x63')],{'as':_0x8934('0x178')});db[_0x8934('0x5e')][_0x8934('0x10e')](db['ChatApplication'],{'as':'Applications'});db['ChatWebsite'][_0x8934('0x10e')](db['ChatMessage'],{'as':'Messages'});db[_0x8934('0x5e')]['belongsTo'](db[_0x8934('0xf0')],{'as':_0x8934('0x165'),'foreignKey':_0x8934('0x166')});db[_0x8934('0x5e')]['belongsTo'](db[_0x8934('0x14e')],{'as':_0x8934('0x14e'),'foreignKey':_0x8934('0x14f')});db['ChatWebsite'][_0x8934('0x11c')](db['MailAccount'],{'as':'MailAccount','foreignKey':_0x8934('0x15f')});db[_0x8934('0x5e')]['belongsTo'](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x8934('0x168')});db['ChatWebsite'][_0x8934('0x11d')](db['User'],{'as':_0x8934('0x152'),'through':_0x8934('0x135')});db[_0x8934('0x60')][_0x8934('0x11c')](db[_0x8934('0x59')],{});db[_0x8934('0x60')]['belongsTo'](db['CmList'],{'as':_0x8934('0x165'),'foreignKey':_0x8934('0x166')});db[_0x8934('0x60')][_0x8934('0x11c')](db[_0x8934('0x6e')],{'as':_0x8934('0x170'),'foreignKey':'ContactId'});db[_0x8934('0x60')]['belongsTo'](db[_0x8934('0x115')],{});db[_0x8934('0x60')][_0x8934('0x11c')](db[_0x8934('0x5d')],{});db['OpenchannelQueueReport']['belongsTo'](db['User'],{});db[_0x8934('0x60')][_0x8934('0x11c')](db[_0x8934('0x12e')],{});db[_0x8934('0x61')][_0x8934('0x11c')](db[_0x8934('0x13')],{'as':_0x8934('0x18c'),'foreignKey':_0x8934('0x10d'),'onDelete':'restrict'});db[_0x8934('0x61')][_0x8934('0x11c')](db[_0x8934('0x18d')],{'as':_0x8934('0x18e'),'foreignKey':_0x8934('0x18f'),'onDelete':_0x8934('0x174')});db[_0x8934('0x61')][_0x8934('0x11c')](db[_0x8934('0x5e')],{'as':_0x8934('0x190'),'foreignKey':_0x8934('0x173'),'onDelete':_0x8934('0x174')});db['ChatApplication'][_0x8934('0x11c')](db[_0x8934('0x8a')],{'onDelete':'restrict','foreignKey':_0x8934('0x175')});db['ChatInteraction'][_0x8934('0x10e')](db[_0x8934('0x65')],{'as':_0x8934('0x157'),'onDelete':'cascade','foreignKey':'ChatInteractionId'});db[_0x8934('0x63')][_0x8934('0x11c')](db['ChatWebsite'],{'as':_0x8934('0x172'),'foreignKey':_0x8934('0x173')});db[_0x8934('0x63')][_0x8934('0x11c')](db[_0x8934('0x6e')],{'as':_0x8934('0x170'),'foreignKey':_0x8934('0x15e')});db[_0x8934('0x63')]['belongsTo'](db['User'],{'as':_0x8934('0x16a'),'foreignKey':'UserId'});db['ChatInteraction'][_0x8934('0x11d')](db[_0x8934('0x8a')],{'through':_0x8934('0x191'),'as':_0x8934('0x17c')});db[_0x8934('0x63')][_0x8934('0x11d')](db[_0x8934('0x8a')],{'through':_0x8934('0x191'),'as':_0x8934('0x16c')});db[_0x8934('0x63')][_0x8934('0x11d')](db['User'],{'as':_0x8934('0x16d'),'through':_0x8934('0x125'),'foreignKey':_0x8934('0x192')});db[_0x8934('0x65')]['belongsTo'](db[_0x8934('0x13')],{'onDelete':_0x8934('0x10c'),'as':_0x8934('0x13')});db[_0x8934('0x65')][_0x8934('0x11c')](db['CmContact'],{'onDelete':_0x8934('0x10c'),'as':_0x8934('0x170'),'foreignKey':_0x8934('0x15e')});db[_0x8934('0x65')][_0x8934('0x11c')](db[_0x8934('0x63')],{'onDelete':'cascade','as':'Interaction','foreignKey':'ChatInteractionId'});db[_0x8934('0x65')][_0x8934('0x11c')](db['Attachment'],{'as':'Attachment','foreignKey':'AttachmentId'});db['ChatMessage'][_0x8934('0x11c')](db[_0x8934('0x5e')],{'as':'Account','foreignKey':_0x8934('0x173')});db[_0x8934('0x67')]['hasMany'](db[_0x8934('0x16f')],{'as':_0x8934('0x193'),'foreignKey':'ChatOfflineMessageId','onDelete':_0x8934('0x10c'),'hooks':!![]});db[_0x8934('0x67')][_0x8934('0x11c')](db[_0x8934('0x6e')],{'onDelete':_0x8934('0x10c'),'as':'Contact','foreignKey':_0x8934('0x15e')});db[_0x8934('0x67')][_0x8934('0x11c')](db[_0x8934('0x5e')],{'as':_0x8934('0x172'),'foreignKey':_0x8934('0x173')});db[_0x8934('0x18d')]['belongsToMany'](db[_0x8934('0x13')],{'as':'Agents','through':_0x8934('0x194'),'hooks':!![]});db[_0x8934('0x18d')][_0x8934('0x11d')](db[_0x8934('0x153')],{'through':_0x8934('0x195'),'as':_0x8934('0x18a')});db[_0x8934('0x11e')]['hasMany'](db[_0x8934('0xd1')],{'as':_0x8934('0x157'),'foreignKey':_0x8934('0x196'),'onDelete':_0x8934('0x10c')});db[_0x8934('0x11e')][_0x8934('0x11d')](db[_0x8934('0x13')],{'as':'Members','through':'chat_group_has_users'});db[_0x8934('0x197')][_0x8934('0x11c')](db[_0x8934('0x5e')],{'as':'Website','foreignKey':_0x8934('0x173')});db['CmCompany'][_0x8934('0x10e')](db[_0x8934('0x6e')],{'as':_0x8934('0x120'),'foreignKey':_0x8934('0x198')});db[_0x8934('0x6e')][_0x8934('0x10e')](db[_0x8934('0x70')],{'as':'Hoppers','foreignKey':_0x8934('0x15e')});db['CmContact'][_0x8934('0x10e')](db[_0x8934('0x72')],{'as':_0x8934('0x112'),'foreignKey':'ContactId'});db['CmContact']['hasMany'](db['CmHopperHistory'],{'as':_0x8934('0x199'),'foreignKey':_0x8934('0x15e')});db[_0x8934('0x6e')][_0x8934('0x10e')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0x8934('0x15e')});db[_0x8934('0x6e')]['hasMany'](db[_0x8934('0x149')],{'as':_0x8934('0x14a'),'foreignKey':'ContactId'});db[_0x8934('0x6e')][_0x8934('0x10e')](db['OpenchannelInteraction'],{'as':'OpenchannelInteractions','foreignKey':_0x8934('0x15e'),'onDelete':_0x8934('0x174')});db[_0x8934('0x6e')][_0x8934('0x10e')](db[_0x8934('0x63')],{'as':_0x8934('0x117'),'foreignKey':_0x8934('0x15e'),'onDelete':'restrict'});db[_0x8934('0x6e')][_0x8934('0x10e')](db[_0x8934('0x53')],{'as':'SmsInteractions','foreignKey':'ContactId','onDelete':'restrict'});db[_0x8934('0x6e')][_0x8934('0x10e')](db[_0x8934('0x4a')],{'as':_0x8934('0x19a'),'foreignKey':_0x8934('0x15e'),'onDelete':_0x8934('0x174')});db[_0x8934('0x6e')][_0x8934('0x10e')](db[_0x8934('0x3d')],{'as':_0x8934('0x119'),'foreignKey':_0x8934('0x15e'),'onDelete':_0x8934('0x174')});db[_0x8934('0x6e')][_0x8934('0x11c')](db[_0x8934('0x6c')],{'as':_0x8934('0x19b'),'foreignKey':_0x8934('0x198')});db[_0x8934('0x6e')][_0x8934('0x11c')](db[_0x8934('0xf0')],{'as':_0x8934('0x165'),'foreignKey':_0x8934('0x166'),'onDelete':_0x8934('0x10c')});db[_0x8934('0x6e')][_0x8934('0x11d')](db[_0x8934('0x13')],{'as':_0x8934('0x16d'),'through':_0x8934('0x121')});db[_0x8934('0x6e')][_0x8934('0x11d')](db[_0x8934('0x8a')],{'as':_0x8934('0x17c'),'through':_0x8934('0x19c')});db[_0x8934('0x6e')]['belongsToMany'](db[_0x8934('0x8a')],{'through':_0x8934('0x19c'),'as':_0x8934('0x16c')});db[_0x8934('0x70')][_0x8934('0x11c')](db[_0x8934('0x6e')],{'as':'Contact','foreignKey':_0x8934('0x15e'),'onDelete':_0x8934('0x10c')});db['CmHopper'][_0x8934('0x11c')](db['CmList'],{'as':_0x8934('0x165'),'foreignKey':_0x8934('0x166'),'onDelete':_0x8934('0x10c')});db[_0x8934('0x70')][_0x8934('0x11c')](db[_0x8934('0x13')],{'as':_0x8934('0x18c'),'foreignKey':'UserId'});db[_0x8934('0x70')][_0x8934('0x11c')](db['VoiceQueue'],{'as':'Queue','foreignKey':_0x8934('0x146'),'onDelete':_0x8934('0x10c')});db[_0x8934('0x70')][_0x8934('0x11c')](db[_0x8934('0xe4')],{'as':_0x8934('0xe4'),'foreignKey':_0x8934('0x19d'),'onDelete':_0x8934('0x10c')});db[_0x8934('0x70')][_0x8934('0x11c')](db[_0x8934('0x13')],{'as':'Owner','foreignKey':_0x8934('0x19e')});db[_0x8934('0x148')][_0x8934('0x11c')](db[_0x8934('0x6e')],{'as':_0x8934('0x170'),'foreignKey':_0x8934('0x15e'),'onDelete':_0x8934('0x10c')});db[_0x8934('0x148')][_0x8934('0x11c')](db[_0x8934('0xf0')],{'as':_0x8934('0x165'),'foreignKey':_0x8934('0x166'),'onDelete':'cascade'});db[_0x8934('0x148')][_0x8934('0x11c')](db[_0x8934('0x129')],{'as':_0x8934('0x18e'),'foreignKey':_0x8934('0x146'),'onDelete':_0x8934('0x10c')});db['CmHopperBlack'][_0x8934('0x11c')](db['Campaign'],{'as':_0x8934('0xe4'),'foreignKey':'CampaignId','onDelete':_0x8934('0x10c')});db['Automation']['hasMany'](db['Condition'],{'as':{'plural':'All','singular':_0x8934('0x19f')},'foreignKey':_0x8934('0x1a0'),'onDelete':_0x8934('0x10c'),'hooks':!![]});db['Automation'][_0x8934('0x10e')](db[_0x8934('0x7f')],{'as':{'plural':_0x8934('0x1a1'),'singular':'OneAny'},'foreignKey':_0x8934('0x1a2'),'onDelete':'cascade','hooks':!![]});db['Automation'][_0x8934('0x10e')](db[_0x8934('0x78')],{'as':_0x8934('0x1a3'),'foreignKey':'AutomationId','onDelete':_0x8934('0x10c'),'hooks':!![]});db[_0x8934('0x7d')]['hasMany'](db[_0x8934('0x7d')],{'as':_0x8934('0x163'),'foreignKey':_0x8934('0x1a4'),'onDelete':_0x8934('0x10c')});db[_0x8934('0x14e')]['hasMany'](db[_0x8934('0x14e')],{'as':_0x8934('0x1a5'),'foreignKey':_0x8934('0x14f'),'onDelete':'cascade','hooks':!![],'required':![]});db[_0x8934('0x14e')][_0x8934('0x10e')](db[_0x8934('0x111')],{'as':'Extensions','foreignKey':_0x8934('0x14f'),'onDelete':'restrict'});db['Interval'][_0x8934('0x10e')](db[_0x8934('0x40')],{'as':_0x8934('0x1a6'),'foreignKey':'IntervalId'});db[_0x8934('0x14e')][_0x8934('0x10e')](db[_0x8934('0x61')],{'as':_0x8934('0x1a7'),'foreignKey':'IntervalId'});db[_0x8934('0x14e')][_0x8934('0x10e')](db['FaxApplication'],{'as':_0x8934('0x1a8'),'foreignKey':_0x8934('0x14f')});db[_0x8934('0x14e')][_0x8934('0x10e')](db[_0x8934('0x51')],{'as':_0x8934('0x1a9'),'foreignKey':_0x8934('0x14f')});db[_0x8934('0x87')]['belongsTo'](db[_0x8934('0x137')],{});db[_0x8934('0x87')][_0x8934('0x11c')](db[_0x8934('0x97')],{'foreignKey':_0x8934('0x1aa')});db['Schedule'][_0x8934('0x11c')](db[_0x8934('0x95')],{'foreignKey':_0x8934('0x1ab')});db['Sound'][_0x8934('0x11d')](db[_0x8934('0x19')],{'as':_0x8934('0x1ac'),'through':_0x8934('0x145'),'onDelete':_0x8934('0x174')});db['Tag'][_0x8934('0x11d')](db[_0x8934('0x6e')],{'through':_0x8934('0x19c')});db[_0x8934('0x8a')][_0x8934('0x11d')](db[_0x8934('0x63')],{'through':_0x8934('0x191')});db['Tag'][_0x8934('0x11d')](db[_0x8934('0x3d')],{'through':_0x8934('0x16b')});db['Tag'][_0x8934('0x11d')](db[_0x8934('0x53')],{'through':'sms_interaction_has_tags'});db[_0x8934('0x8a')][_0x8934('0x11d')](db[_0x8934('0x4a')],{'through':_0x8934('0x17b')});db[_0x8934('0x8a')][_0x8934('0x11d')](db[_0x8934('0x115')],{'through':_0x8934('0x188')});db[_0x8934('0x8a')]['belongsToMany'](db[_0x8934('0xfe')],{'through':'whatsapp_interaction_has_tags'});db[_0x8934('0x8e')][_0x8934('0x10e')](db[_0x8934('0x7f')],{'as':{'plural':_0x8934('0x1ad'),'singular':'AllCondition'},'foreignKey':_0x8934('0x1ae'),'onDelete':'cascade','hooks':!![]});db[_0x8934('0x8e')][_0x8934('0x10e')](db[_0x8934('0x7f')],{'as':{'plural':_0x8934('0x1af'),'singular':_0x8934('0x1b0')},'foreignKey':_0x8934('0x1b1'),'onDelete':_0x8934('0x10c'),'hooks':!![]});db[_0x8934('0x8e')][_0x8934('0x10e')](db['Action'],{'as':_0x8934('0x1a3'),'foreignKey':_0x8934('0x1b2'),'onDelete':_0x8934('0x10c'),'hooks':!![]});db[_0x8934('0x95')][_0x8934('0x10e')](db['AnalyticFieldReport'],{'as':_0x8934('0x1b3'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1ab'),'hooks':!![]});db[_0x8934('0x97')]['hasMany'](db['AnalyticFieldReport'],{'as':_0x8934('0x1b3'),'onDelete':'cascade','foreignKey':'DefaultReportId'});db[_0x8934('0x1b4')][_0x8934('0x10e')](db[_0x8934('0x9c')],{'as':_0x8934('0x1b3'),'onDelete':_0x8934('0x10c'),'foreignKey':'MetricId'});db[_0x8934('0x9c')][_0x8934('0x11c')](db[_0x8934('0x1b4')],{'foreignKey':_0x8934('0x1b5')});db[_0x8934('0x1b6')][_0x8934('0x10e')](db[_0x8934('0xa0')],{'as':_0x8934('0x1b7'),'onDelete':'cascade','foreignKey':_0x8934('0x1b8')});db[_0x8934('0xa0')][_0x8934('0x10e')](db['SalesforceField'],{'as':_0x8934('0x1b9'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1ba')});db[_0x8934('0xa0')][_0x8934('0x10e')](db[_0x8934('0x1bb')],{'as':_0x8934('0x1bc'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1bd')});db[_0x8934('0xa0')][_0x8934('0x10e')](db[_0x8934('0x1bb')],{'as':'Fields','onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1be')});db['SalesforceConfiguration'][_0x8934('0x11c')](db[_0x8934('0x1b6')],{'as':'Account','foreignKey':_0x8934('0x1b8')});db[_0x8934('0x1bb')]['hasMany'](db[_0x8934('0x1bb')],{'as':_0x8934('0x1bf'),'foreignKey':_0x8934('0x1ba')});db[_0x8934('0x1bb')][_0x8934('0x10e')](db[_0x8934('0x1bb')],{'as':_0x8934('0x1c0'),'foreignKey':_0x8934('0x1bd')});db[_0x8934('0x1bb')]['hasMany'](db['SalesforceField'],{'as':_0x8934('0x1c1'),'foreignKey':_0x8934('0x1be')});db[_0x8934('0x1bb')]['belongsTo'](db[_0x8934('0x1c2')],{'as':'Variable','foreignKey':'VariableId'});db['SugarcrmAccount'][_0x8934('0x10e')](db[_0x8934('0xa5')],{'as':'Configurations','onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1b8')});db['SugarcrmConfiguration'][_0x8934('0x10e')](db['SugarcrmField'],{'as':'Subjects','onDelete':'cascade','foreignKey':'SubjectId'});db[_0x8934('0xa5')][_0x8934('0x10e')](db['SugarcrmField'],{'as':'Descriptions','onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1bd')});db[_0x8934('0xa5')][_0x8934('0x10e')](db[_0x8934('0xa6')],{'as':_0x8934('0x1b3'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1be')});db[_0x8934('0xa5')][_0x8934('0x11c')](db[_0x8934('0xa3')],{'as':_0x8934('0x172'),'foreignKey':_0x8934('0x1b8')});db['SugarcrmField'][_0x8934('0x10e')](db[_0x8934('0xa6')],{'as':_0x8934('0x1bf'),'foreignKey':_0x8934('0x1ba')});db['SugarcrmField'][_0x8934('0x10e')](db[_0x8934('0xa6')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x8934('0xa6')][_0x8934('0x10e')](db[_0x8934('0xa6')],{'as':'Field','foreignKey':_0x8934('0x1be')});db[_0x8934('0xa6')]['belongsTo'](db[_0x8934('0x1c2')],{'as':_0x8934('0x1c2'),'foreignKey':'VariableId'});db['DeskAccount']['hasMany'](db[_0x8934('0xa9')],{'as':_0x8934('0x1b7'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1b8')});db[_0x8934('0xa9')][_0x8934('0x10e')](db[_0x8934('0xab')],{'as':_0x8934('0x1b9'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1ba')});db[_0x8934('0xa9')]['hasMany'](db[_0x8934('0xab')],{'as':_0x8934('0x1bc'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1bd')});db[_0x8934('0xa9')][_0x8934('0x10e')](db[_0x8934('0xab')],{'as':_0x8934('0x1b3'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1be')});db[_0x8934('0xa9')][_0x8934('0x11c')](db[_0x8934('0xa8')],{'as':_0x8934('0x172'),'foreignKey':_0x8934('0x1b8')});db[_0x8934('0xa9')][_0x8934('0x11d')](db[_0x8934('0x8a')],{'through':_0x8934('0x1c3')});db[_0x8934('0xab')][_0x8934('0x10e')](db[_0x8934('0xab')],{'as':_0x8934('0x1bf'),'foreignKey':_0x8934('0x1ba')});db[_0x8934('0xab')][_0x8934('0x10e')](db['DeskField'],{'as':_0x8934('0x1c0'),'foreignKey':_0x8934('0x1bd')});db[_0x8934('0xab')][_0x8934('0x10e')](db[_0x8934('0xab')],{'as':_0x8934('0x1c1'),'foreignKey':'FieldId'});db[_0x8934('0xab')][_0x8934('0x11c')](db[_0x8934('0x1c2')],{'as':_0x8934('0x1c2'),'foreignKey':_0x8934('0x1c4')});db[_0x8934('0xad')][_0x8934('0x10e')](db[_0x8934('0xaf')],{'as':_0x8934('0x1b7'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1b8')});db['ZohoConfiguration'][_0x8934('0x10e')](db[_0x8934('0xb1')],{'as':_0x8934('0x1b9'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1ba')});db['ZohoConfiguration'][_0x8934('0x10e')](db[_0x8934('0xb1')],{'as':'Descriptions','onDelete':_0x8934('0x10c'),'foreignKey':'DescriptionId'});db[_0x8934('0xaf')][_0x8934('0x10e')](db[_0x8934('0xb1')],{'as':'Fields','onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1be')});db[_0x8934('0xaf')][_0x8934('0x11c')](db[_0x8934('0xad')],{'as':_0x8934('0x172'),'foreignKey':'AccountId'});db[_0x8934('0xb1')][_0x8934('0x10e')](db[_0x8934('0xb1')],{'as':_0x8934('0x1bf'),'foreignKey':_0x8934('0x1ba')});db[_0x8934('0xb1')]['hasMany'](db[_0x8934('0xb1')],{'as':_0x8934('0x1c0'),'foreignKey':_0x8934('0x1bd')});db[_0x8934('0xb1')][_0x8934('0x10e')](db['ZohoField'],{'as':_0x8934('0x1c1'),'foreignKey':_0x8934('0x1be')});db['ZohoField'][_0x8934('0x11c')](db['Variable'],{'as':_0x8934('0x1c2'),'foreignKey':_0x8934('0x1c4')});db[_0x8934('0xb3')][_0x8934('0x10e')](db[_0x8934('0xb5')],{'as':_0x8934('0x1b7'),'onDelete':'cascade','foreignKey':_0x8934('0x1b8')});db[_0x8934('0xb5')]['hasMany'](db[_0x8934('0xb7')],{'as':_0x8934('0x1b9'),'foreignKey':_0x8934('0x1ba')});db['ZendeskConfiguration'][_0x8934('0x10e')](db[_0x8934('0xb7')],{'as':'Descriptions','foreignKey':_0x8934('0x1bd')});db[_0x8934('0xb5')][_0x8934('0x10e')](db[_0x8934('0xb7')],{'as':_0x8934('0x1b3'),'foreignKey':_0x8934('0x1be')});db[_0x8934('0xb5')][_0x8934('0x11c')](db[_0x8934('0xb3')],{'as':_0x8934('0x172'),'foreignKey':_0x8934('0x1b8')});db[_0x8934('0xb5')][_0x8934('0x11d')](db[_0x8934('0x8a')],{'through':_0x8934('0x1c5')});db[_0x8934('0xb7')][_0x8934('0x10e')](db[_0x8934('0xb7')],{'as':_0x8934('0x1bf'),'foreignKey':_0x8934('0x1ba')});db[_0x8934('0xb7')][_0x8934('0x10e')](db['ZendeskField'],{'as':_0x8934('0x1c0'),'foreignKey':_0x8934('0x1bd')});db[_0x8934('0xb7')]['hasMany'](db[_0x8934('0xb7')],{'as':_0x8934('0x1c1'),'foreignKey':'FieldId'});db['ZendeskField']['belongsTo'](db[_0x8934('0x1c2')],{'as':_0x8934('0x1c2'),'foreignKey':_0x8934('0x1c4')});db['FreshdeskAccount'][_0x8934('0x10e')](db[_0x8934('0x1c6')],{'as':_0x8934('0x1b7'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1b8')});db[_0x8934('0x1c6')]['hasMany'](db['FreshdeskField'],{'as':_0x8934('0x1b9'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1ba')});db[_0x8934('0x1c6')][_0x8934('0x10e')](db[_0x8934('0xba')],{'as':_0x8934('0x1bc'),'onDelete':'cascade','foreignKey':_0x8934('0x1bd')});db[_0x8934('0x1c6')][_0x8934('0x10e')](db['FreshdeskField'],{'as':_0x8934('0x1b3'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1be')});db[_0x8934('0x1c6')][_0x8934('0x11c')](db[_0x8934('0xb8')],{'as':_0x8934('0x172'),'foreignKey':'AccountId'});db[_0x8934('0x1c6')][_0x8934('0x11d')](db[_0x8934('0x8a')],{'through':'int_freshdesk_configuration_has_tags'});db[_0x8934('0xba')][_0x8934('0x10e')](db[_0x8934('0xba')],{'as':_0x8934('0x1bf'),'foreignKey':_0x8934('0x1ba')});db[_0x8934('0xba')]['hasMany'](db[_0x8934('0xba')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x8934('0xba')][_0x8934('0x10e')](db[_0x8934('0xba')],{'as':'Field','foreignKey':_0x8934('0x1be')});db['FreshdeskField']['belongsTo'](db[_0x8934('0x1c2')],{'as':_0x8934('0x1c2'),'foreignKey':'VariableId'});db[_0x8934('0x1c7')][_0x8934('0x10e')](db[_0x8934('0x1c8')],{'as':_0x8934('0x1b7'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1b8')});db[_0x8934('0x1c8')][_0x8934('0x10e')](db['VtigerField'],{'as':_0x8934('0x1b9'),'foreignKey':_0x8934('0x1ba')});db[_0x8934('0x1c8')][_0x8934('0x10e')](db[_0x8934('0xbd')],{'as':_0x8934('0x1bc'),'foreignKey':'DescriptionId'});db['VtigerConfiguration'][_0x8934('0x10e')](db[_0x8934('0xbd')],{'as':_0x8934('0x1b3'),'foreignKey':_0x8934('0x1be')});db[_0x8934('0x1c8')][_0x8934('0x11c')](db[_0x8934('0x1c7')],{'as':'Account','foreignKey':'AccountId'});db[_0x8934('0xbd')]['hasMany'](db[_0x8934('0xbd')],{'as':_0x8934('0x1bf'),'foreignKey':_0x8934('0x1ba')});db[_0x8934('0xbd')]['hasMany'](db[_0x8934('0xbd')],{'as':_0x8934('0x1c0'),'foreignKey':_0x8934('0x1bd')});db[_0x8934('0xbd')]['hasMany'](db[_0x8934('0xbd')],{'as':'Field','foreignKey':_0x8934('0x1be')});db[_0x8934('0xbd')][_0x8934('0x11c')](db[_0x8934('0x1c2')],{'as':_0x8934('0x1c2'),'foreignKey':_0x8934('0x1c4')});db[_0x8934('0x1c9')][_0x8934('0x10e')](db[_0x8934('0xbf')],{'as':'Configurations','onDelete':_0x8934('0x10c'),'foreignKey':'AccountId'});db[_0x8934('0xbf')][_0x8934('0x10e')](db[_0x8934('0xc1')],{'as':_0x8934('0x1b9'),'foreignKey':_0x8934('0x1ba')});db[_0x8934('0xbf')][_0x8934('0x10e')](db['ServicenowField'],{'as':_0x8934('0x1bc'),'foreignKey':_0x8934('0x1bd')});db[_0x8934('0xbf')][_0x8934('0x10e')](db[_0x8934('0xc1')],{'as':_0x8934('0x1b3'),'foreignKey':_0x8934('0x1be')});db[_0x8934('0xbf')][_0x8934('0x11c')](db[_0x8934('0x1c9')],{'as':_0x8934('0x172'),'foreignKey':_0x8934('0x1b8')});db[_0x8934('0xc1')]['hasMany'](db['ServicenowField'],{'as':_0x8934('0x1bf'),'foreignKey':'SubjectId'});db['ServicenowField'][_0x8934('0x10e')](db['ServicenowField'],{'as':'Description','foreignKey':_0x8934('0x1bd')});db[_0x8934('0xc1')][_0x8934('0x10e')](db['ServicenowField'],{'as':_0x8934('0x1c1'),'foreignKey':_0x8934('0x1be')});db[_0x8934('0xc1')][_0x8934('0x11c')](db['Variable'],{'as':_0x8934('0x1c2'),'foreignKey':'VariableId'});db['Dynamics365Account'][_0x8934('0x10e')](db[_0x8934('0xc5')],{'as':_0x8934('0x1b7'),'onDelete':'cascade','foreignKey':_0x8934('0x1b8')});db[_0x8934('0xc5')]['hasMany'](db['Dynamics365Field'],{'as':'Subjects','onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1ba')});db[_0x8934('0xc5')][_0x8934('0x10e')](db[_0x8934('0xc7')],{'as':_0x8934('0x1bc'),'onDelete':'cascade','foreignKey':_0x8934('0x1bd')});db['Dynamics365Configuration'][_0x8934('0x10e')](db[_0x8934('0xc7')],{'as':_0x8934('0x1b3'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1be')});db[_0x8934('0xc5')][_0x8934('0x11c')](db['Dynamics365Account'],{'as':_0x8934('0x172'),'foreignKey':_0x8934('0x1b8')});db[_0x8934('0xc7')]['hasMany'](db['Dynamics365Field'],{'as':_0x8934('0x1bf'),'foreignKey':_0x8934('0x1ba')});db['Dynamics365Field'][_0x8934('0x10e')](db['Dynamics365Field'],{'as':'Description','foreignKey':_0x8934('0x1bd')});db['Dynamics365Field']['hasMany'](db[_0x8934('0xc7')],{'as':'Field','foreignKey':_0x8934('0x1be')});db['Dynamics365Field'][_0x8934('0x11c')](db[_0x8934('0x1c2')],{'as':_0x8934('0x1c2'),'foreignKey':'VariableId'});db['FreshsalesAccount'][_0x8934('0x10e')](db[_0x8934('0xcb')],{'as':_0x8934('0x1b7'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1b8')});db['FreshsalesConfiguration'][_0x8934('0x10e')](db['FreshsalesField'],{'as':_0x8934('0x1b9'),'foreignKey':_0x8934('0x1ba')});db[_0x8934('0xcb')][_0x8934('0x10e')](db[_0x8934('0xcc')],{'as':_0x8934('0x1bc'),'foreignKey':_0x8934('0x1bd')});db['FreshsalesConfiguration'][_0x8934('0x10e')](db[_0x8934('0xcc')],{'as':'Fields','foreignKey':'FieldId'});db[_0x8934('0xcb')][_0x8934('0x11c')](db[_0x8934('0xc9')],{'as':_0x8934('0x172'),'foreignKey':_0x8934('0x1b8')});db[_0x8934('0xcc')][_0x8934('0x10e')](db['FreshsalesField'],{'as':_0x8934('0x1bf'),'foreignKey':_0x8934('0x1ba')});db['FreshsalesField'][_0x8934('0x10e')](db['FreshsalesField'],{'as':'Description','foreignKey':_0x8934('0x1bd')});db[_0x8934('0xcc')][_0x8934('0x10e')](db['FreshsalesField'],{'as':_0x8934('0x1c1'),'foreignKey':_0x8934('0x1be')});db['FreshsalesField'][_0x8934('0x11c')](db[_0x8934('0x1c2')],{'as':_0x8934('0x1c2'),'foreignKey':_0x8934('0x1c4')});db[_0x8934('0xcf')][_0x8934('0x11c')](db['ChatWebsite'],{});db[_0x8934('0xcf')]['belongsTo'](db[_0x8934('0xf0')],{'as':'List','foreignKey':_0x8934('0x166')});db['ChatQueueReport'][_0x8934('0x11c')](db[_0x8934('0x6e')],{'as':_0x8934('0x170'),'foreignKey':'ContactId'});db[_0x8934('0xcf')]['belongsTo'](db[_0x8934('0x63')],{});db[_0x8934('0xcf')][_0x8934('0x11c')](db[_0x8934('0x65')],{});db['ChatQueueReport'][_0x8934('0x11c')](db['User'],{});db[_0x8934('0xcf')][_0x8934('0x11c')](db['ChatQueue'],{});db[_0x8934('0xd1')][_0x8934('0x11c')](db[_0x8934('0x13')],{'onDelete':'cascade','foreignKey':_0x8934('0x1ca')});db['ChatInternalMessage'][_0x8934('0x11c')](db[_0x8934('0x13')],{'onDelete':'cascade','foreignKey':_0x8934('0x1cb')});db[_0x8934('0x149')][_0x8934('0x10e')](db[_0x8934('0x1cc')],{'foreignKey':_0x8934('0x1cd'),'onDelete':_0x8934('0x10c')});db['JscriptySessionReport']['hasMany'](db[_0x8934('0x1ce')],{'foreignKey':'SessionId','onDelete':_0x8934('0x10c')});db[_0x8934('0xd4')][_0x8934('0x11c')](db['SmsAccount'],{});db['SmsQueueReport'][_0x8934('0x11c')](db['CmList'],{'as':'List','foreignKey':_0x8934('0x166')});db[_0x8934('0xd4')][_0x8934('0x11c')](db['CmContact'],{'as':_0x8934('0x170'),'foreignKey':_0x8934('0x15e')});db['SmsQueueReport'][_0x8934('0x11c')](db[_0x8934('0x53')],{});db[_0x8934('0xd4')]['belongsTo'](db['SmsMessage'],{});db[_0x8934('0xd4')]['belongsTo'](db['User'],{});db['SmsQueueReport']['belongsTo'](db[_0x8934('0x57')],{});db[_0x8934('0x1cf')][_0x8934('0x10e')](db[_0x8934('0x149')],{'foreignKey':_0x8934('0x1d0')});db['JscriptyProject'][_0x8934('0x10e')](db['JscriptyQuestionReport'],{'foreignKey':_0x8934('0x1d0')});db[_0x8934('0x1cf')][_0x8934('0x10e')](db['JscriptyAnswerReport'],{'foreignKey':_0x8934('0x1d0')});db[_0x8934('0xdd')][_0x8934('0x11d')](db[_0x8934('0x13')],{'as':_0x8934('0x16d'),'through':_0x8934('0x13e')});db['Team'][_0x8934('0x11d')](db[_0x8934('0x13')],{'as':_0x8934('0x152'),'through':_0x8934('0x124')});db[_0x8934('0x153')]['belongsToMany'](db[_0x8934('0x129')],{'through':_0x8934('0x106'),'as':_0x8934('0x1d1')});db['Team'][_0x8934('0x11d')](db[_0x8934('0x3a')],{'through':'team_has_mail_queues','as':_0x8934('0x1d2')});db['Team'][_0x8934('0x11d')](db['ChatQueue'],{'through':_0x8934('0x195'),'as':_0x8934('0x12b')});db[_0x8934('0x153')]['belongsToMany'](db[_0x8934('0x4d')],{'through':_0x8934('0x1d3'),'as':_0x8934('0x12c')});db[_0x8934('0x153')]['belongsToMany'](db[_0x8934('0x57')],{'through':'team_has_sms_queues','as':_0x8934('0x1d4')});db[_0x8934('0x153')]['belongsToMany'](db[_0x8934('0x12e')],{'through':'team_has_openchannel_queues','as':_0x8934('0x12f')});db[_0x8934('0x153')][_0x8934('0x11d')](db[_0x8934('0x131')],{'through':_0x8934('0x1d5'),'as':_0x8934('0x132')});db[_0x8934('0x153')][_0x8934('0x11d')](db[_0x8934('0xf2')],{'through':_0x8934('0x108'),'as':_0x8934('0x12a')});db[_0x8934('0xe4')][_0x8934('0x10e')](db['CmHopper'],{'as':_0x8934('0x147'),'foreignKey':'CampaignId'});db['Campaign'][_0x8934('0x10e')](db[_0x8934('0x72')],{'as':_0x8934('0x112'),'foreignKey':_0x8934('0x19d')});db[_0x8934('0xe4')][_0x8934('0x10e')](db['CmHopperHistory'],{'as':_0x8934('0x199'),'foreignKey':'CampaignId'});db[_0x8934('0xe4')][_0x8934('0x10e')](db[_0x8934('0x148')],{'as':_0x8934('0x1d6'),'foreignKey':'CampaignId'});db[_0x8934('0xe4')]['belongsTo'](db['Trunk'],{'as':_0x8934('0x14b'),'foreignKey':'TrunkId'});db['Campaign'][_0x8934('0x11c')](db[_0x8934('0x14b')],{'as':_0x8934('0x14c'),'foreignKey':_0x8934('0x14d')});db[_0x8934('0xe4')][_0x8934('0x11c')](db[_0x8934('0x14e')],{'as':_0x8934('0x14e'),'foreignKey':_0x8934('0x14f')});db['Campaign'][_0x8934('0x11c')](db['SquareProject'],{'as':'SquareProject','foreignKey':_0x8934('0x1d7')});db[_0x8934('0xe4')][_0x8934('0x11d')](db['CmList'],{'as':_0x8934('0x122'),'through':_0x8934('0x1d8')});db[_0x8934('0xe4')][_0x8934('0x11d')](db[_0x8934('0xf0')],{'as':_0x8934('0x154'),'through':_0x8934('0x1d9')});db[_0x8934('0x16f')][_0x8934('0x11c')](db[_0x8934('0x67')],{'as':_0x8934('0x67'),'foreignKey':_0x8934('0x1da')});db['MailTransferReport'][_0x8934('0x11c')](db[_0x8934('0x3e')],{});db[_0x8934('0xe8')][_0x8934('0x11c')](db['MailInteraction'],{});db[_0x8934('0xe8')]['belongsTo'](db[_0x8934('0x137')],{'foreignKey':_0x8934('0x1db'),'as':_0x8934('0x1dc')});db['MailTransferReport'][_0x8934('0x11c')](db[_0x8934('0x13')],{'foreignKey':'FromUserId','as':_0x8934('0x1dd')});db[_0x8934('0xe8')][_0x8934('0x11c')](db[_0x8934('0x13')],{'foreignKey':_0x8934('0x1de'),'as':_0x8934('0x1df')});db[_0x8934('0xe8')][_0x8934('0x11c')](db['MailQueue'],{'foreignKey':_0x8934('0x1e0'),'as':'ToQueue'});db[_0x8934('0xe8')]['belongsTo'](db[_0x8934('0x137')],{'foreignKey':'ToMailAccountId','as':'ToAccount'});db['ChatTransferReport'][_0x8934('0x11c')](db[_0x8934('0x65')],{});db['ChatTransferReport']['belongsTo'](db['ChatInteraction'],{});db['ChatTransferReport'][_0x8934('0x11c')](db['ChatWebsite'],{'foreignKey':_0x8934('0x1e1'),'as':_0x8934('0x1dc')});db['ChatTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x8934('0x1e2'),'as':_0x8934('0x1dd')});db['ChatTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x8934('0x1de'),'as':'ToAgent'});db['ChatTransferReport']['belongsTo'](db[_0x8934('0x18d')],{'foreignKey':'ToChatQueueId','as':_0x8934('0x1e3')});db['ChatTransferReport'][_0x8934('0x11c')](db[_0x8934('0x5e')],{'foreignKey':_0x8934('0x1e4'),'as':_0x8934('0x1e5')});db[_0x8934('0x1e6')][_0x8934('0x11c')](db[_0x8934('0x179')],{});db['FaxTransferReport'][_0x8934('0x11c')](db['FaxInteraction'],{});db[_0x8934('0x1e6')][_0x8934('0x11c')](db[_0x8934('0x47')],{'foreignKey':_0x8934('0x1e7'),'as':_0x8934('0x1dc')});db[_0x8934('0x1e6')]['belongsTo'](db[_0x8934('0x13')],{'foreignKey':_0x8934('0x1e2'),'as':_0x8934('0x1dd')});db[_0x8934('0x1e6')][_0x8934('0x11c')](db['User'],{'foreignKey':_0x8934('0x1de'),'as':_0x8934('0x1df')});db['FaxTransferReport'][_0x8934('0x11c')](db['FaxQueue'],{'foreignKey':_0x8934('0x1e8'),'as':_0x8934('0x1e3')});db[_0x8934('0x1e6')][_0x8934('0x11c')](db[_0x8934('0x47')],{'foreignKey':_0x8934('0x1e9'),'as':'ToAccount'});db[_0x8934('0xed')][_0x8934('0x11c')](db[_0x8934('0x5d')],{});db['OpenchannelTransferReport'][_0x8934('0x11c')](db[_0x8934('0x115')],{});db[_0x8934('0xed')][_0x8934('0x11c')](db[_0x8934('0x59')],{'foreignKey':_0x8934('0x1ea'),'as':_0x8934('0x1dc')});db[_0x8934('0xed')][_0x8934('0x11c')](db[_0x8934('0x13')],{'foreignKey':_0x8934('0x1e2'),'as':_0x8934('0x1dd')});db[_0x8934('0xed')]['belongsTo'](db[_0x8934('0x13')],{'foreignKey':_0x8934('0x1de'),'as':_0x8934('0x1df')});db[_0x8934('0xed')][_0x8934('0x11c')](db[_0x8934('0x12e')],{'foreignKey':_0x8934('0x1eb'),'as':_0x8934('0x1e3')});db['OpenchannelTransferReport'][_0x8934('0x11c')](db['OpenchannelAccount'],{'foreignKey':'ToOpenchannelAccountId','as':_0x8934('0x1e5')});db[_0x8934('0xef')][_0x8934('0x11c')](db['SmsMessage'],{});db['SmsTransferReport'][_0x8934('0x11c')](db['SmsInteraction'],{});db['SmsTransferReport']['belongsTo'](db[_0x8934('0x50')],{'foreignKey':_0x8934('0x1ec'),'as':_0x8934('0x1dc')});db['SmsTransferReport'][_0x8934('0x11c')](db[_0x8934('0x13')],{'foreignKey':'FromUserId','as':_0x8934('0x1dd')});db[_0x8934('0xef')][_0x8934('0x11c')](db['User'],{'foreignKey':'ToUserId','as':_0x8934('0x1df')});db[_0x8934('0xef')]['belongsTo'](db[_0x8934('0x57')],{'foreignKey':_0x8934('0x1ed'),'as':_0x8934('0x1e3')});db[_0x8934('0xef')]['belongsTo'](db[_0x8934('0x50')],{'foreignKey':_0x8934('0x1ee'),'as':_0x8934('0x1e5')});db['CmList'][_0x8934('0x10e')](db[_0x8934('0x7d')],{'as':_0x8934('0x163'),'foreignKey':_0x8934('0x166'),'onDelete':'cascade'});db[_0x8934('0xf0')][_0x8934('0x10e')](db['CmCustomField'],{'as':_0x8934('0x1ef'),'foreignKey':_0x8934('0x166')});db[_0x8934('0xf0')][_0x8934('0x10e')](db[_0x8934('0x6e')],{'as':_0x8934('0x120'),'onDelete':'cascade','foreignKey':'ListId'});db[_0x8934('0xf0')][_0x8934('0x10e')](db[_0x8934('0x72')],{'as':_0x8934('0x112'),'foreignKey':_0x8934('0x166')});db[_0x8934('0xf0')][_0x8934('0x10e')](db[_0x8934('0x74')],{'as':_0x8934('0x113'),'foreignKey':_0x8934('0x166')});db[_0x8934('0xf0')][_0x8934('0x10e')](db[_0x8934('0x114')],{'as':_0x8934('0x114'),'foreignKey':_0x8934('0x166')});db[_0x8934('0xf0')][_0x8934('0x11d')](db['VoiceQueue'],{'as':'Queues','through':_0x8934('0x151')});db[_0x8934('0xf0')][_0x8934('0x11d')](db['User'],{'as':_0x8934('0x152'),'through':_0x8934('0x123')});db[_0x8934('0xf2')]['hasMany'](db[_0x8934('0x111')],{'as':_0x8934('0x1f0'),'onDelete':_0x8934('0x10c')});db[_0x8934('0xf2')][_0x8934('0x11d')](db['User'],{'as':_0x8934('0x152'),'through':_0x8934('0x10a')});db[_0x8934('0xf2')][_0x8934('0x11d')](db['Team'],{'through':'TeamVoicePrefix','as':_0x8934('0x18a')});db[_0x8934('0xf4')][_0x8934('0x10e')](db['User'],{'as':'Users','foreignKey':_0x8934('0x1f1')});db['UserProfile']['hasMany'](db[_0x8934('0xf6')],{'as':_0x8934('0x1f2'),'foreignKey':_0x8934('0x1f1'),'onDelete':'cascade'});db['UserProfileSection']['hasMany'](db[_0x8934('0xf8')],{'as':_0x8934('0x1f3'),'foreignKey':_0x8934('0x1f4'),'onDelete':_0x8934('0x10c')});db[_0x8934('0xfb')][_0x8934('0x10e')](db[_0x8934('0x7d')],{'as':_0x8934('0x163'),'foreignKey':_0x8934('0x1f5'),'onDelete':_0x8934('0x10c')});db[_0x8934('0xfb')][_0x8934('0x10e')](db[_0x8934('0x7b')],{'as':_0x8934('0x164'),'foreignKey':_0x8934('0x1f5')});db[_0x8934('0xfb')]['hasMany'](db[_0x8934('0x1f6')],{'as':_0x8934('0x157'),'foreignKey':'WhatsappAccountId'});db['WhatsappAccount'][_0x8934('0x10e')](db['WhatsappInteraction'],{'as':_0x8934('0x178')});db[_0x8934('0xfb')][_0x8934('0x10e')](db[_0x8934('0xfc')],{'as':_0x8934('0x143')});db[_0x8934('0xfb')][_0x8934('0x11c')](db[_0x8934('0xf0')],{'as':'List','foreignKey':_0x8934('0x166')});db['WhatsappAccount'][_0x8934('0x11c')](db[_0x8934('0x82')],{'as':_0x8934('0x150'),'foreignKey':_0x8934('0x168')});db[_0x8934('0xfb')][_0x8934('0x11d')](db[_0x8934('0x13')],{'as':_0x8934('0x152'),'through':_0x8934('0x1f7')});db['WhatsappApplication'][_0x8934('0x11c')](db['User'],{'onDelete':_0x8934('0x174')});db[_0x8934('0xfc')]['belongsTo'](db[_0x8934('0x131')],{'onDelete':'restrict'});db['WhatsappApplication'][_0x8934('0x11c')](db[_0x8934('0xfb')],{'onDelete':_0x8934('0x174')});db[_0x8934('0xfc')][_0x8934('0x11c')](db[_0x8934('0x14e')],{'onDelete':_0x8934('0x174'),'foreignKey':'IntervalId'});db[_0x8934('0xfc')][_0x8934('0x11c')](db['Tag'],{'onDelete':_0x8934('0x174'),'foreignKey':_0x8934('0x175')});db[_0x8934('0xfe')][_0x8934('0x10e')](db[_0x8934('0x1f6')],{'as':_0x8934('0x157'),'onDelete':_0x8934('0x10c'),'foreignKey':_0x8934('0x1f8')});db[_0x8934('0xfe')][_0x8934('0x11c')](db['WhatsappAccount'],{'as':_0x8934('0x172'),'foreignKey':'WhatsappAccountId'});db['WhatsappInteraction'][_0x8934('0x11c')](db[_0x8934('0x6e')],{'as':_0x8934('0x170'),'foreignKey':'ContactId'});db[_0x8934('0xfe')][_0x8934('0x11c')](db['User'],{'as':_0x8934('0x16a'),'foreignKey':_0x8934('0x10d')});db[_0x8934('0xfe')]['belongsToMany'](db[_0x8934('0x8a')],{'through':_0x8934('0x1f9'),'as':_0x8934('0x17c')});db['WhatsappInteraction']['belongsToMany'](db['Tag'],{'through':_0x8934('0x1f9'),'as':_0x8934('0x16c')});db[_0x8934('0xfe')][_0x8934('0x11d')](db[_0x8934('0x13')],{'as':_0x8934('0x16d'),'through':_0x8934('0x1fa'),'foreignKey':_0x8934('0x1f8')});db[_0x8934('0x1f6')][_0x8934('0x11c')](db[_0x8934('0x13')],{'as':'User'});db[_0x8934('0x1f6')][_0x8934('0x11c')](db[_0x8934('0x6e')],{'onDelete':'cascade','as':_0x8934('0x170')});db[_0x8934('0x1f6')][_0x8934('0x11c')](db['WhatsappInteraction'],{'onDelete':_0x8934('0x10c'),'as':'Interaction','foreignKey':_0x8934('0x1f8')});db['WhatsappMessage'][_0x8934('0x11c')](db[_0x8934('0xfb')],{'as':_0x8934('0x172'),'foreignKey':_0x8934('0x1f5')});db['WhatsappQueueReport'][_0x8934('0x11c')](db['WhatsappAccount'],{});db[_0x8934('0x101')]['belongsTo'](db[_0x8934('0xf0')],{'as':_0x8934('0x165'),'foreignKey':_0x8934('0x166')});db['WhatsappQueueReport']['belongsTo'](db['CmContact'],{'as':_0x8934('0x170'),'foreignKey':_0x8934('0x15e')});db[_0x8934('0x101')][_0x8934('0x11c')](db[_0x8934('0xfe')],{});db[_0x8934('0x101')]['belongsTo'](db[_0x8934('0x131')],{});db[_0x8934('0x101')][_0x8934('0x11c')](db['WhatsappMessage'],{});db[_0x8934('0x101')][_0x8934('0x11c')](db[_0x8934('0x13')],{});db[_0x8934('0x103')][_0x8934('0x11c')](db[_0x8934('0x1f6')],{});db[_0x8934('0x103')]['belongsTo'](db['WhatsappInteraction'],{});db[_0x8934('0x103')][_0x8934('0x11c')](db['WhatsappAccount'],{'foreignKey':_0x8934('0x1fb'),'as':'FromAccount'});db[_0x8934('0x103')][_0x8934('0x11c')](db['WhatsappAccount'],{'foreignKey':_0x8934('0x1fc'),'as':_0x8934('0x1e5')});db[_0x8934('0x103')][_0x8934('0x11c')](db['WhatsappQueue'],{'foreignKey':_0x8934('0x1fd'),'as':_0x8934('0x1e3')});db[_0x8934('0x103')][_0x8934('0x11c')](db[_0x8934('0x13')],{'foreignKey':_0x8934('0x1e2'),'as':'FromAgent'});db[_0x8934('0x103')]['belongsTo'](db[_0x8934('0x13')],{'foreignKey':_0x8934('0x1de'),'as':_0x8934('0x1df')});db[_0x8934('0x131')][_0x8934('0x11d')](db[_0x8934('0x13')],{'as':_0x8934('0x152'),'through':_0x8934('0x133'),'foreignKey':_0x8934('0x1fe')});db[_0x8934('0x131')]['belongsToMany'](db['Team'],{'through':_0x8934('0x1d5'),'as':_0x8934('0x18a')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0xb447=['user_has_openchannel_interactions','OpenchannelQueueId','team_has_openchannel_queues','ProactiveActions','ChatMessage','user_has_chat_websites','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','ChatGroupId','CompanyId','Hoppers','JscriptySessionReport','OpenchannelInteractions','Company','cm_contact_has_tags','Campaign','CampaignId','All','OneAll','AutomationAllId','Any','AutomationAnyId','Actions','AutomationId','ParentId','Intervals','MailApplications','SmsApplications','Mohs','sms_interaction_has_tags','AllConditions','AllCondition','TriggerAllId','AnyCondition','TriggerAnyId','TriggerId','Fields','CustomReportId','MetricId','AccountId','SubjectId','Descriptions','FieldId','Subject','Field','VariableId','Configurations','SugarcrmField','Subjects','DescriptionId','DeskField','Description','VtigerAccount','VtigerField','ServicenowAccount','ServicenowConfiguration','Dynamics365Configuration','FreshsalesConfiguration','FromId','ToId','SessionId','SmsQueueReport','ProjectId','team_has_fax_queues','FaxQueues','OpenchannelQueues','team_has_whatsapp_queues','WhatsappQueues','HopperBlacks','TrunkBackup','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromUserId','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','FromChatWebsiteId','FromAgent','ToUserId','ToChatQueueId','ToChatWebsiteId','ToAccount','FromFaxAccountId','ToFaxQueueId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','Queues','VoicePrefix','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappAccount','WhatsappInteractionId','whatsapp_interaction_has_tags','user_has_whatsapp_interactions','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','exports','../config/environment','sequelize','jstz','determine','defaultsDeep','motion2','xcall','xC@LL1234','mysql','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','database','password','options','username','User','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','VoiceDialReport','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','MemberReport','../api/memberReport/memberReport.model','Trunk','VoiceTransferReport','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','../api/userSmsQueue/userSmsQueue.model','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/mailServerIn/mailServerIn.model','MailServerOut','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','../api/faxAccount/faxAccount.model','../api/faxApplication/faxApplication.model','FaxInteraction','FaxMessage','FaxQueue','../api/faxQueue/faxQueue.model','SmsAccount','../api/smsApplication/smsApplication.model','SmsInteraction','SmsMessage','../api/smsMessage/smsMessage.model','../api/smsQueue/smsQueue.model','OpenchannelAccount','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','../api/chatMessage/chatMessage.model','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','ReportAgentPreview','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','VoiceQueuesLog','Schedule','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','Template','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','AnalyticTreeReport','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../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','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','../api/intServicenowAccount/intServicenowAccount.model','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','../api/jscriptySessionReport/jscriptySessionReport.model','../api/smsQueueReport/smsQueueReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','../api/voicePrefix/voicePrefix.model','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','../api/userProfileResource/userProfileResource.model','../api/userNotification/userNotification.model','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','hasOne','VoiceMail','UserId','hasMany','Recordings','UserVoiceQueueRt','Extensions','HopperFinals','HopperHistory','ChatInteractions','SmsInteractions','FaxInteractions','WhatsappInteraction','UserNotifications','SenderId','belongsTo','UserProfile','userProfileId','belongsToMany','Groups','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','CmList','Lists','cm_user_has_lists','user_has_teams','MailInteractions','user_has_mail_interactions','user_has_chat_interactions','user_has_fax_interactions','user_has_sms_interactions','WhatsappInteractions','VoiceQueue','UserVoiceQueue','MailQueues','ChatQueues','UserFaxQueue','SmsQueue','SmsQueues','UserSmsQueue','UserOpenchannelQueue','VoicePrefixes','user_has_voice_prefixes','ChatWebsites','FaxAccount','user_has_mail_accounts','OpenchannelAccounts','SmsAccounts','user_has_sms_accounts','user_has_whatsapp_accounts','user_has_square_projects','SpiedAgents','ChanSpyId','VoiceContext','cascade','Sounds','moh_has_sounds','Members','VoiceQueueId','HopperHistories','JscriptySessions','TrunkId','TrunkBackupId','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','Teams','BlackLists','voice_queues_has_cm_blacklists','ScreenRecording','mailboxuser','mailbox','uniqueid','AgentReports','Contact','ContactId','MailServerIn','MailAccountId','Imap','Dispositions','Messages','Interactions','ListId','MailInteractionId','Account','Owner','mail_interaction_has_tags','ThroughTags','Users','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessage','ChatOfflineMessageId','restrict','TagId','List','Dashboard','Items','FaxAccountId','Answers','FaxApplication','Applications','Exntensions','user_has_fax_accounts','FaxInteractionId','fax_interaction_has_tags','AttachmentId','FaxQueueReport','SmsAccountId','SmsApplication','SmsInteractionId','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','user_has_openchannel_accounts','OpenchannelInteractionId','openchannel_interaction_has_tags','Tags'];(function(_0x381b5c,_0x1ac364){var _0x56d4c9=function(_0xb3a005){while(--_0xb3a005){_0x381b5c['push'](_0x381b5c['shift']());}};_0x56d4c9(++_0x1ac364);}(_0xb447,0x73));var _0x7b44=function(_0x2ea143,_0x321631){_0x2ea143=_0x2ea143-0x0;var _0x20c848=_0xb447[_0x2ea143];return _0x20c848;};'use strict';var config=require(_0x7b44('0x0'));var Sequelize=require(_0x7b44('0x1'));var _=require('lodash');var jstz=require(_0x7b44('0x2'));var timezone=jstz[_0x7b44('0x3')]();config[_0x7b44('0x1')]=_[_0x7b44('0x4')](config[_0x7b44('0x1')],{'database':_0x7b44('0x5'),'username':_0x7b44('0x6'),'password':_0x7b44('0x7'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x7b44('0x8'),'dialectOptions':{'charset':_0x7b44('0x9')},'logging':![],'timezone':timezone[_0x7b44('0xa')](),'define':{'charset':_0x7b44('0xb'),'collate':_0x7b44('0xc')}}});config['sequelizeHistory']=_[_0x7b44('0x4')](config[_0x7b44('0xd')],{'database':_0x7b44('0x5'),'username':_0x7b44('0x6'),'password':_0x7b44('0x7'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x7b44('0x8'),'dialectOptions':{'charset':_0x7b44('0x9')},'logging':![],'timezone':timezone[_0x7b44('0xa')](),'define':{'charset':_0x7b44('0xb'),'collate':_0x7b44('0xc')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x7b44('0x1')][_0x7b44('0xe')],config[_0x7b44('0x1')]['username'],config[_0x7b44('0x1')][_0x7b44('0xf')],config['sequelize'][_0x7b44('0x10')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x7b44('0xd')][_0x7b44('0xe')],config[_0x7b44('0xd')][_0x7b44('0x11')],config[_0x7b44('0xd')][_0x7b44('0xf')],config[_0x7b44('0xd')]['options'])};db[_0x7b44('0x12')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x14'));db[_0x7b44('0x15')]=db[_0x7b44('0x1')]['import'](_0x7b44('0x16'));db['VoiceContext']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x17'));db[_0x7b44('0x18')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x19'));db[_0x7b44('0x1a')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x1b'));db['VoiceQueue']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x1c'));db[_0x7b44('0x1d')]=db[_0x7b44('0x1')]['import']('../api/voiceRecording/voiceRecording.model');db['ScreenRecording']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x1e'));db['VoiceMail']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x1f'));db[_0x7b44('0x20')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x21'));db[_0x7b44('0x22')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/voiceCallReport/voiceCallReport.model');db[_0x7b44('0x23')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/voiceDialReport/voiceDialReport.model');db[_0x7b44('0x24')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x25'));db[_0x7b44('0x26')]=db['sequelize']['import']('../api/voiceQueueReport/voiceQueueReport.model');db[_0x7b44('0x27')]=db['sequelize']['import'](_0x7b44('0x28'));db[_0x7b44('0x29')]=db['sequelize'][_0x7b44('0x13')]('../api/trunk/trunk.model');db[_0x7b44('0x2a')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/voiceTransferReport/voiceTransferReport.model');db['UserVoiceQueueRt']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x2b'));db['UserVoiceQueue']=db[_0x7b44('0x1')]['import']('../api/userVoiceQueue/userVoiceQueue.model');db[_0x7b44('0x2c')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x2d'));db[_0x7b44('0x2e')]=db[_0x7b44('0x1')]['import'](_0x7b44('0x2f'));db['UserFaxQueue']=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/userFaxQueue/userFaxQueue.model');db['UserSmsQueue']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x30'));db['UserOpenchannelQueue']=db[_0x7b44('0x1')]['import'](_0x7b44('0x31'));db[_0x7b44('0x32')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/userWhatsappQueue/userWhatsappQueue.model');db['MailServerIn']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x33'));db[_0x7b44('0x34')]=db[_0x7b44('0x1')]['import']('../api/mailServerOut/mailServerOut.model');db[_0x7b44('0x35')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x36'));db[_0x7b44('0x37')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/mailQueue/mailQueue.model');db[_0x7b44('0x38')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x39'));db[_0x7b44('0x3a')]=db[_0x7b44('0x1')]['import'](_0x7b44('0x3b'));db[_0x7b44('0x3c')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x3d'));db[_0x7b44('0x3e')]=db['sequelize']['import'](_0x7b44('0x3f'));db[_0x7b44('0x40')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x41'));db['Dashboard']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x42'));db[_0x7b44('0x43')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x44'));db['FaxAccount']=db['sequelize']['import'](_0x7b44('0x45'));db['FaxApplication']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x46'));db[_0x7b44('0x47')]=db['sequelize'][_0x7b44('0x13')]('../api/faxInteraction/faxInteraction.model');db[_0x7b44('0x48')]=db[_0x7b44('0x1')]['import']('../api/faxMessage/faxMessage.model');db[_0x7b44('0x49')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x4a'));db['FaxQueueReport']=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/faxQueueReport/faxQueueReport.model');db[_0x7b44('0x4b')]=db[_0x7b44('0x1')]['import']('../api/smsAccount/smsAccount.model');db['SmsApplication']=db[_0x7b44('0x1')]['import'](_0x7b44('0x4c'));db[_0x7b44('0x4d')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/smsInteraction/smsInteraction.model');db[_0x7b44('0x4e')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x4f'));db['SmsQueue']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x50'));db[_0x7b44('0x51')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/openchannelAccount/openchannelAccount.model');db[_0x7b44('0x52')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x53'));db[_0x7b44('0x54')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x55'));db[_0x7b44('0x56')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x57'));db[_0x7b44('0x58')]=db[_0x7b44('0x1')]['import'](_0x7b44('0x59'));db[_0x7b44('0x5a')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x5b'));db[_0x7b44('0x5c')]=db['sequelize']['import'](_0x7b44('0x5d'));db[_0x7b44('0x5e')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x5f'));db[_0x7b44('0x60')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x61'));db['ChatMessage']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x62'));db['ChatOfflineMessage']=db[_0x7b44('0x1')]['import'](_0x7b44('0x63'));db[_0x7b44('0x64')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/chatQueue/chatQueue.model');db[_0x7b44('0x65')]=db[_0x7b44('0x1')]['import'](_0x7b44('0x66'));db[_0x7b44('0x67')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x68'));db[_0x7b44('0x69')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x6a'));db['CmContact']=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/cmContact/cmContact.model');db[_0x7b44('0x6b')]=db[_0x7b44('0x1')]['import'](_0x7b44('0x6c'));db[_0x7b44('0x6d')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x6e'));db[_0x7b44('0x6f')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x70'));db[_0x7b44('0x71')]=db['sequelize'][_0x7b44('0x13')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x7b44('0x72')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/reportAgentPreview/reportAgentPreview.model');db[_0x7b44('0x73')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x74'));db[_0x7b44('0x75')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x76'));db[_0x7b44('0x77')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x78'));db[_0x7b44('0x79')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x7a'));db[_0x7b44('0x7b')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x7c'));db[_0x7b44('0x7d')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x7e'));db[_0x7b44('0x7f')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x80'));db[_0x7b44('0x81')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x82'));db[_0x7b44('0x83')]=db[_0x7b44('0x1')]['import']('../api/cdr/cdr.model');db[_0x7b44('0x84')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/voiceQueuesLog/voiceQueuesLog.model');db[_0x7b44('0x85')]=db['sequelize']['import']('../api/schedule/schedule.model');db[_0x7b44('0x86')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x87'));db[_0x7b44('0x88')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x89'));db[_0x7b44('0x8a')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x8b'));db[_0x7b44('0x8c')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x8d'));db[_0x7b44('0x8e')]=db[_0x7b44('0x1')]['import']('../api/variable/variable.model');db[_0x7b44('0x8f')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x90'));db[_0x7b44('0x91')]=db[_0x7b44('0x1')]['import'](_0x7b44('0x92'));db[_0x7b44('0x93')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x94'));db[_0x7b44('0x95')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/analyticDefaultReport/analyticDefaultReport.model');db[_0x7b44('0x96')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x97'));db[_0x7b44('0x98')]=db['sequelize']['import']('../api/analyticMetric/analyticMetric.model');db[_0x7b44('0x99')]=db['sequelize'][_0x7b44('0x13')]('../api/analyticFieldReport/analyticFieldReport.model');db[_0x7b44('0x9a')]=db['sequelize'][_0x7b44('0x13')]('../api/analyticTreeReport/analyticTreeReport.model');db[_0x7b44('0x9b')]=db[_0x7b44('0x1')]['import'](_0x7b44('0x9c'));db[_0x7b44('0x9d')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x9e'));db[_0x7b44('0x9f')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/intSalesforceField/intSalesforceField.model');db[_0x7b44('0xa0')]=db[_0x7b44('0x1')]['import'](_0x7b44('0xa1'));db[_0x7b44('0xa2')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xa3'));db['SugarcrmField']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0xa4'));db[_0x7b44('0xa5')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xa6'));db[_0x7b44('0xa7')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xa8'));db['DeskField']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xa9'));db[_0x7b44('0xaa')]=db[_0x7b44('0x1')]['import'](_0x7b44('0xab'));db[_0x7b44('0xac')]=db['sequelize']['import'](_0x7b44('0xad'));db[_0x7b44('0xae')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xaf'));db[_0x7b44('0xb0')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0xb1'));db[_0x7b44('0xb2')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/intZendeskConfiguration/intZendeskConfiguration.model');db[_0x7b44('0xb3')]=db[_0x7b44('0x1')]['import'](_0x7b44('0xb4'));db[_0x7b44('0xb5')]=db[_0x7b44('0x1')]['import']('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0x7b44('0xb6')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xb7'));db[_0x7b44('0xb8')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/intFreshdeskField/intFreshdeskField.model');db['VtigerAccount']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xb9'));db[_0x7b44('0xba')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xbb'));db['VtigerField']=db['sequelize'][_0x7b44('0x13')]('../api/intVtigerField/intVtigerField.model');db['ServicenowAccount']=db['sequelize']['import'](_0x7b44('0xbc'));db['ServicenowConfiguration']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xbd'));db[_0x7b44('0xbe')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0xbf'));db[_0x7b44('0xc0')]=db['sequelize'][_0x7b44('0x13')]('../api/intDynamics365Account/intDynamics365Account.model');db['Dynamics365Configuration']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xc1'));db[_0x7b44('0xc2')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xc3'));db[_0x7b44('0xc4')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xc5'));db['FreshsalesConfiguration']=db[_0x7b44('0x1')]['import'](_0x7b44('0xc6'));db[_0x7b44('0xc7')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0xc8'));db['Integration']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x90'));db['Network']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xc9'));db[_0x7b44('0xca')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xcb'));db[_0x7b44('0xcc')]=db['sequelize']['import'](_0x7b44('0xcd'));db[_0x7b44('0xce')]=db['sequelize']['import'](_0x7b44('0xcf'));db[_0x7b44('0xd0')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xd1'));db['JscriptySessionReport']=db[_0x7b44('0x1')]['import'](_0x7b44('0xd2'));db['SmsQueueReport']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xd3'));db['SquareReport']=db[_0x7b44('0x1')]['import']('../api/squareReport/squareReport.model');db[_0x7b44('0xd4')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0xd5'));db[_0x7b44('0xd6')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xd7'));db['Setting']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xd8'));db[_0x7b44('0xd9')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xda'));db[_0x7b44('0xdb')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xdc'));db[_0x7b44('0xdd')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xde'));db['SquareMessage']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xdf'));db[_0x7b44('0xe0')]=db[_0x7b44('0x1')]['import'](_0x7b44('0xe1'));db[_0x7b44('0xe2')]=db[_0x7b44('0x1')]['import'](_0x7b44('0xe3'));db['Campaign']=db['sequelize']['import'](_0x7b44('0xe4'));db[_0x7b44('0xe5')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xe6'));db[_0x7b44('0xe7')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xe8'));db[_0x7b44('0xe9')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xea'));db['MailTransferReport']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xeb'));db[_0x7b44('0xec')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xed'));db[_0x7b44('0xee')]=db[_0x7b44('0x1')]['import']('../api/faxTransferReport/faxTransferReport.model');db[_0x7b44('0xef')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xf0'));db[_0x7b44('0xf1')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xf2'));db['CmList']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0xf3'));db['VoicePrefix']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0xf4'));db['UserProfile']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xf5'));db[_0x7b44('0xf6')]=db[_0x7b44('0x1')]['import'](_0x7b44('0xf7'));db['UserProfileResource']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xf8'));db['UserNotification']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xf9'));db['WhatsappAccount']=db[_0x7b44('0x1')]['import'](_0x7b44('0xfa'));db[_0x7b44('0xfb')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/whatsappApplication/whatsappApplication.model');db['WhatsappInteraction']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xfc'));db[_0x7b44('0xfd')]=db[_0x7b44('0x1')]['import']('../api/whatsappMessage/whatsappMessage.model');db[_0x7b44('0xfe')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xff'));db[_0x7b44('0x100')]=db[_0x7b44('0x1')]['import']('../api/whatsappTransferReport/whatsappTransferReport.model');db[_0x7b44('0x101')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x102'));db[_0x7b44('0x103')]=db['sequelize']['import'](_0x7b44('0x104'));db[_0x7b44('0x105')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/teamVoiceQueue/teamVoiceQueue.model');db['User'][_0x7b44('0x106')](db[_0x7b44('0x107')],{'as':_0x7b44('0x107'),'onDelete':'cascade','foreignKey':_0x7b44('0x108')});db[_0x7b44('0x12')][_0x7b44('0x109')](db[_0x7b44('0x1d')],{'as':_0x7b44('0x10a'),'foreignKey':_0x7b44('0x108')});db[_0x7b44('0x12')][_0x7b44('0x109')](db[_0x7b44('0x10b')],{'as':'VoiceQueuesRt','foreignKey':_0x7b44('0x108')});db[_0x7b44('0x12')][_0x7b44('0x109')](db[_0x7b44('0x18')],{'as':_0x7b44('0x10c'),'onDelete':'cascade','hooks':!![]});db['User']['hasMany'](db['CmHopperFinal'],{'as':_0x7b44('0x10d'),'foreignKey':'UserId'});db[_0x7b44('0x12')][_0x7b44('0x109')](db[_0x7b44('0x71')],{'as':_0x7b44('0x10e'),'foreignKey':'UserId'});db['User']['hasMany'](db[_0x7b44('0x72')],{'as':_0x7b44('0x72'),'foreignKey':_0x7b44('0x108')});db['User'][_0x7b44('0x109')](db['OpenchannelInteraction'],{'as':'OpenchannelInteractions','foreignKey':'UserId'});db['User'][_0x7b44('0x109')](db[_0x7b44('0x60')],{'as':_0x7b44('0x10f'),'foreignKey':_0x7b44('0x108')});db[_0x7b44('0x12')]['hasMany'](db['SmsInteraction'],{'as':_0x7b44('0x110'),'foreignKey':'UserId'});db['User'][_0x7b44('0x109')](db[_0x7b44('0x47')],{'as':_0x7b44('0x111'),'foreignKey':_0x7b44('0x108')});db[_0x7b44('0x12')][_0x7b44('0x109')](db[_0x7b44('0x3a')],{'as':'MailInteractions','foreignKey':_0x7b44('0x108')});db['User'][_0x7b44('0x109')](db[_0x7b44('0x112')],{'as':'WhatsappInteractions','foreignKey':_0x7b44('0x108')});db[_0x7b44('0x12')][_0x7b44('0x109')](db['UserNotification'],{'as':_0x7b44('0x113'),'foreignKey':_0x7b44('0x114')});db['User'][_0x7b44('0x115')](db[_0x7b44('0x116')],{'as':_0x7b44('0x116'),'foreignKey':_0x7b44('0x117')});db['User'][_0x7b44('0x118')](db[_0x7b44('0x65')],{'as':_0x7b44('0x119'),'through':_0x7b44('0x11a')});db[_0x7b44('0x12')][_0x7b44('0x118')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x11c'),'through':_0x7b44('0x11d')});db['User']['belongsToMany'](db[_0x7b44('0x11e')],{'as':_0x7b44('0x11f'),'through':_0x7b44('0x120')});db['User'][_0x7b44('0x118')](db[_0x7b44('0xe0')],{'through':_0x7b44('0x121')});db['User'][_0x7b44('0x118')](db[_0x7b44('0x3a')],{'as':_0x7b44('0x122'),'through':_0x7b44('0x123')});db[_0x7b44('0x12')][_0x7b44('0x118')](db[_0x7b44('0x60')],{'as':_0x7b44('0x10f'),'through':_0x7b44('0x124')});db['User'][_0x7b44('0x118')](db[_0x7b44('0x47')],{'as':_0x7b44('0x111'),'through':_0x7b44('0x125')});db[_0x7b44('0x12')][_0x7b44('0x118')](db['SmsInteraction'],{'as':'SmsInteractions','through':_0x7b44('0x126')});db['User'][_0x7b44('0x118')](db['OpenchannelInteraction'],{'as':'OpenchannelInteractions','through':'user_has_openchannel_interactions'});db[_0x7b44('0x12')][_0x7b44('0x118')](db[_0x7b44('0x112')],{'as':_0x7b44('0x127'),'through':'user_has_whatsapp_interactions'});db['User'][_0x7b44('0x118')](db[_0x7b44('0x128')],{'as':'VoiceQueues','through':_0x7b44('0x129'),'required':![]});db[_0x7b44('0x12')][_0x7b44('0x118')](db[_0x7b44('0x37')],{'as':_0x7b44('0x12a'),'through':_0x7b44('0x2e'),'required':![]});db[_0x7b44('0x12')][_0x7b44('0x118')](db[_0x7b44('0x64')],{'as':_0x7b44('0x12b'),'through':_0x7b44('0x2c'),'required':![],'hooks':!![]});db[_0x7b44('0x12')][_0x7b44('0x118')](db[_0x7b44('0x49')],{'as':'FaxQueues','through':_0x7b44('0x12c'),'required':![]});db['User'][_0x7b44('0x118')](db[_0x7b44('0x12d')],{'as':_0x7b44('0x12e'),'through':_0x7b44('0x12f'),'required':![]});db['User'][_0x7b44('0x118')](db[_0x7b44('0x58')],{'as':'OpenchannelQueues','through':_0x7b44('0x130'),'required':![]});db[_0x7b44('0x12')][_0x7b44('0x118')](db[_0x7b44('0x101')],{'as':'WhatsappQueues','through':_0x7b44('0x32'),'required':![]});db[_0x7b44('0x12')]['belongsToMany'](db[_0x7b44('0x11e')],{'through':'cm_user_has_lists'});db[_0x7b44('0x12')][_0x7b44('0x118')](db['VoicePrefix'],{'as':_0x7b44('0x131'),'through':_0x7b44('0x132'),'required':![]});db[_0x7b44('0x12')][_0x7b44('0x118')](db['ChatWebsite'],{'as':_0x7b44('0x133'),'through':'user_has_chat_websites'});db[_0x7b44('0x12')]['belongsToMany'](db[_0x7b44('0x134')],{'as':'FaxAccounts','through':'user_has_fax_accounts'});db[_0x7b44('0x12')][_0x7b44('0x118')](db['MailAccount'],{'as':'MailAccounts','through':_0x7b44('0x135')});db['User'][_0x7b44('0x118')](db[_0x7b44('0x51')],{'as':_0x7b44('0x136'),'through':'user_has_openchannel_accounts'});db[_0x7b44('0x12')]['belongsToMany'](db['SmsAccount'],{'as':_0x7b44('0x137'),'through':_0x7b44('0x138')});db['User'][_0x7b44('0x118')](db['WhatsappAccount'],{'as':'WhatsappAccounts','through':_0x7b44('0x139')});db[_0x7b44('0x12')]['belongsToMany'](db[_0x7b44('0xdb')],{'as':'SquareProjects','through':_0x7b44('0x13a')});db['VoiceChanSpy']['hasMany'](db[_0x7b44('0x18')],{'as':_0x7b44('0x13b'),'onDelete':'cascade','foreignKey':_0x7b44('0x13c')});db[_0x7b44('0x13d')]['hasMany'](db[_0x7b44('0x18')],{'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x18')][_0x7b44('0x109')](db[_0x7b44('0x18')],{'as':'Applications','onDelete':_0x7b44('0x13e')});db['VoiceMusicOnHold'][_0x7b44('0x118')](db[_0x7b44('0x86')],{'as':_0x7b44('0x13f'),'through':_0x7b44('0x140')});db[_0x7b44('0x128')][_0x7b44('0x109')](db[_0x7b44('0x10b')],{'as':_0x7b44('0x141'),'foreignKey':_0x7b44('0x142')});db[_0x7b44('0x128')]['hasMany'](db[_0x7b44('0x6b')],{'as':'Hoppers','foreignKey':_0x7b44('0x142')});db['VoiceQueue'][_0x7b44('0x109')](db[_0x7b44('0x6f')],{'as':'HopperFinals','foreignKey':_0x7b44('0x142')});db['VoiceQueue'][_0x7b44('0x109')](db[_0x7b44('0x71')],{'as':_0x7b44('0x143'),'foreignKey':'VoiceQueueId'});db['VoiceQueue']['hasMany'](db[_0x7b44('0x72')],{'as':_0x7b44('0x72'),'foreignKey':_0x7b44('0x142')});db[_0x7b44('0x128')][_0x7b44('0x109')](db[_0x7b44('0x6d')],{'as':'HopperBlacks','foreignKey':_0x7b44('0x142')});db[_0x7b44('0x128')][_0x7b44('0x109')](db['JscriptySessionReport'],{'as':_0x7b44('0x144'),'foreignKey':'VoiceQueueId'});db[_0x7b44('0x128')][_0x7b44('0x115')](db[_0x7b44('0x29')],{'as':_0x7b44('0x29'),'foreignKey':_0x7b44('0x145')});db['VoiceQueue'][_0x7b44('0x115')](db['Trunk'],{'as':'TrunkBackup','foreignKey':_0x7b44('0x146')});db['VoiceQueue'][_0x7b44('0x115')](db[_0x7b44('0x7f')],{'as':_0x7b44('0x7f'),'foreignKey':_0x7b44('0x147')});db[_0x7b44('0x128')][_0x7b44('0x115')](db[_0x7b44('0x81')],{'as':_0x7b44('0x148'),'foreignKey':_0x7b44('0x149')});db[_0x7b44('0x128')][_0x7b44('0x118')](db[_0x7b44('0x11e')],{'as':'Lists','through':_0x7b44('0x14a')});db[_0x7b44('0x128')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':'UserVoiceQueue'});db[_0x7b44('0x128')][_0x7b44('0x118')](db['Team'],{'as':_0x7b44('0x14c'),'through':'TeamVoiceQueue'});db[_0x7b44('0x128')][_0x7b44('0x118')](db[_0x7b44('0x11e')],{'as':_0x7b44('0x14d'),'through':_0x7b44('0x14e')});db['VoiceRecording'][_0x7b44('0x115')](db[_0x7b44('0x12')],{'as':'User','foreignKey':_0x7b44('0x108')});db[_0x7b44('0x14f')]['belongsTo'](db['User'],{'as':'User','foreignKey':_0x7b44('0x108')});db[_0x7b44('0x107')]['hasMany'](db['VoiceMailMessage'],{'as':'Messages','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x150'),'sourceKey':_0x7b44('0x151')});db[_0x7b44('0x20')][_0x7b44('0x115')](db['VoiceMail'],{'foreignKey':'mailboxuser','targetKey':_0x7b44('0x151')});db[_0x7b44('0x22')]['hasMany'](db['VoiceQueueReport'],{'as':'QueueCalls','foreignKey':_0x7b44('0x152'),'constraints':![]});db[_0x7b44('0x22')][_0x7b44('0x109')](db[_0x7b44('0x24')],{'as':_0x7b44('0x153'),'foreignKey':'uniqueid','constraints':![]});db[_0x7b44('0x22')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'as':_0x7b44('0x12'),'foreignKey':_0x7b44('0x108')});db['VoiceCallReport'][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x156')][_0x7b44('0x115')](db[_0x7b44('0x35')],{'as':_0x7b44('0x35'),'foreignKey':'MailAccountId'});db[_0x7b44('0x34')][_0x7b44('0x115')](db[_0x7b44('0x35')],{'as':'MailAccount','foreignKey':_0x7b44('0x157')});db[_0x7b44('0x35')][_0x7b44('0x106')](db[_0x7b44('0x156')],{'as':_0x7b44('0x158'),'onDelete':'cascade'});db['MailAccount'][_0x7b44('0x106')](db[_0x7b44('0x34')],{'as':'Smtp','onDelete':_0x7b44('0x13e')});db['MailAccount'][_0x7b44('0x109')](db['Disposition'],{'as':_0x7b44('0x159'),'foreignKey':'MailAccountId','onDelete':_0x7b44('0x13e')});db[_0x7b44('0x35')][_0x7b44('0x109')](db[_0x7b44('0x79')],{'as':'Answers','foreignKey':_0x7b44('0x157')});db[_0x7b44('0x35')][_0x7b44('0x109')](db[_0x7b44('0x3c')],{'as':_0x7b44('0x15a'),'foreignKey':_0x7b44('0x157')});db[_0x7b44('0x35')][_0x7b44('0x109')](db[_0x7b44('0x3a')],{'as':_0x7b44('0x15b')});db[_0x7b44('0x35')][_0x7b44('0x109')](db[_0x7b44('0x3e')],{'as':'Applications'});db[_0x7b44('0x35')][_0x7b44('0x115')](db[_0x7b44('0x11e')],{'as':'List','foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x35')][_0x7b44('0x115')](db[_0x7b44('0x8a')],{'as':_0x7b44('0x8a'),'foreignKey':'TemplateId'});db[_0x7b44('0x35')][_0x7b44('0x115')](db[_0x7b44('0x81')],{'as':_0x7b44('0x148'),'foreignKey':_0x7b44('0x149')});db[_0x7b44('0x35')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x135')});db['MailQueue']['belongsToMany'](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x2e')});db[_0x7b44('0x37')][_0x7b44('0x118')](db[_0x7b44('0xe0')],{'through':'team_has_mail_queues','as':_0x7b44('0x14c')});db[_0x7b44('0x3a')][_0x7b44('0x109')](db['MailMessage'],{'as':_0x7b44('0x15a'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x15d')});db[_0x7b44('0x3a')][_0x7b44('0x115')](db[_0x7b44('0x35')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x157')});db[_0x7b44('0x3a')][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x154'),'foreignKey':'ContactId'});db[_0x7b44('0x3a')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'as':_0x7b44('0x15f'),'foreignKey':'UserId'});db[_0x7b44('0x3a')][_0x7b44('0x118')](db['Tag'],{'through':'mail_interaction_has_tags','as':'Tags'});db[_0x7b44('0x3a')][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':_0x7b44('0x160'),'as':_0x7b44('0x161')});db[_0x7b44('0x3a')][_0x7b44('0x118')](db['User'],{'as':_0x7b44('0x162'),'through':'user_has_mail_interactions','foreignKey':_0x7b44('0x15d')});db[_0x7b44('0x3c')][_0x7b44('0x109')](db['Attachment'],{'as':_0x7b44('0x163'),'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x3c')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'as':'User'});db['MailMessage'][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'onDelete':'cascade','as':'Contact'});db['MailMessage'][_0x7b44('0x115')](db[_0x7b44('0x3a')],{'as':_0x7b44('0x164'),'foreignKey':_0x7b44('0x15d')});db[_0x7b44('0x3c')][_0x7b44('0x115')](db['MailAccount'],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x157')});db[_0x7b44('0x3c')]['belongsTo'](db[_0x7b44('0x5a')],{'as':_0x7b44('0x5a'),'foreignKey':_0x7b44('0x165')});db[_0x7b44('0x3c')][_0x7b44('0x115')](db[_0x7b44('0x166')],{'as':_0x7b44('0x166'),'foreignKey':_0x7b44('0x167')});db[_0x7b44('0x3e')][_0x7b44('0x115')](db['User'],{'onDelete':_0x7b44('0x168')});db['MailApplication']['belongsTo'](db[_0x7b44('0x37')],{'onDelete':_0x7b44('0x168')});db[_0x7b44('0x3e')][_0x7b44('0x115')](db[_0x7b44('0x35')],{'onDelete':_0x7b44('0x168')});db['MailApplication'][_0x7b44('0x115')](db[_0x7b44('0x7f')],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x147')});db['MailApplication'][_0x7b44('0x115')](db[_0x7b44('0x88')],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x169')});db[_0x7b44('0x40')]['belongsTo'](db[_0x7b44('0x35')],{});db['MailQueueReport'][_0x7b44('0x115')](db[_0x7b44('0x11e')],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c')});db['MailQueueReport'][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db['MailQueueReport'][_0x7b44('0x115')](db[_0x7b44('0x3a')],{});db[_0x7b44('0x40')][_0x7b44('0x115')](db[_0x7b44('0x3c')],{});db[_0x7b44('0x40')][_0x7b44('0x115')](db[_0x7b44('0x12')],{});db['MailQueueReport'][_0x7b44('0x115')](db[_0x7b44('0x37')],{});db[_0x7b44('0x16b')]['hasMany'](db['DashboardItem'],{'as':_0x7b44('0x16c'),'onDelete':'cascade'});db[_0x7b44('0x134')][_0x7b44('0x109')](db[_0x7b44('0x7b')],{'as':'Dispositions','foreignKey':_0x7b44('0x16d'),'onDelete':'cascade'});db[_0x7b44('0x134')][_0x7b44('0x109')](db[_0x7b44('0x79')],{'as':_0x7b44('0x16e'),'foreignKey':_0x7b44('0x16d')});db[_0x7b44('0x134')][_0x7b44('0x109')](db['FaxInteraction'],{'as':_0x7b44('0x15b')});db[_0x7b44('0x134')][_0x7b44('0x109')](db[_0x7b44('0x16f')],{'as':_0x7b44('0x170')});db[_0x7b44('0x134')][_0x7b44('0x109')](db[_0x7b44('0x18')],{'as':_0x7b44('0x171'),'onDelete':_0x7b44('0x13e')});db['FaxAccount'][_0x7b44('0x109')](db['FaxMessage'],{'as':_0x7b44('0x15a')});db['FaxAccount'][_0x7b44('0x115')](db[_0x7b44('0x29')],{'as':_0x7b44('0x29')});db[_0x7b44('0x134')]['belongsTo'](db[_0x7b44('0x11e')],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x134')][_0x7b44('0x115')](db['Pause'],{'as':_0x7b44('0x148'),'foreignKey':_0x7b44('0x149')});db[_0x7b44('0x134')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':'Agents','through':_0x7b44('0x172')});db[_0x7b44('0x16f')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'onDelete':_0x7b44('0x168')});db[_0x7b44('0x16f')][_0x7b44('0x115')](db['FaxQueue'],{'onDelete':_0x7b44('0x168')});db[_0x7b44('0x16f')][_0x7b44('0x115')](db[_0x7b44('0x134')],{'onDelete':_0x7b44('0x168')});db['FaxApplication'][_0x7b44('0x115')](db[_0x7b44('0x88')],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x169')});db['FaxInteraction']['hasMany'](db[_0x7b44('0x48')],{'as':_0x7b44('0x15a'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x173')});db[_0x7b44('0x47')]['belongsTo'](db[_0x7b44('0x134')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x16d')});db[_0x7b44('0x47')][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x154'),'foreignKey':'ContactId'});db[_0x7b44('0x47')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'as':_0x7b44('0x15f'),'foreignKey':'UserId'});db[_0x7b44('0x47')][_0x7b44('0x118')](db['Tag'],{'through':_0x7b44('0x174'),'as':'Tags'});db[_0x7b44('0x47')]['belongsToMany'](db[_0x7b44('0x88')],{'through':_0x7b44('0x174'),'as':_0x7b44('0x161')});db['FaxInteraction'][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x162'),'through':_0x7b44('0x125'),'foreignKey':_0x7b44('0x173')});db[_0x7b44('0x48')]['belongsTo'](db[_0x7b44('0x12')],{'onDelete':_0x7b44('0x13e'),'as':'User'});db[_0x7b44('0x48')]['belongsTo'](db[_0x7b44('0x47')],{'as':'Interaction','foreignKey':_0x7b44('0x173')});db[_0x7b44('0x48')][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'onDelete':_0x7b44('0x13e'),'as':_0x7b44('0x154')});db[_0x7b44('0x48')]['belongsTo'](db['Attachment'],{'as':'Attachment','foreignKey':_0x7b44('0x175')});db[_0x7b44('0x48')]['belongsTo'](db[_0x7b44('0x134')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x16d')});db[_0x7b44('0x49')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':'Agents','through':_0x7b44('0x12c')});db[_0x7b44('0x49')][_0x7b44('0x118')](db[_0x7b44('0xe0')],{'through':'team_has_fax_queues','as':_0x7b44('0x14c')});db[_0x7b44('0x176')][_0x7b44('0x115')](db[_0x7b44('0x134')],{});db[_0x7b44('0x176')][_0x7b44('0x115')](db[_0x7b44('0x11e')],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c')});db['FaxQueueReport'][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db['FaxQueueReport'][_0x7b44('0x115')](db['FaxInteraction'],{});db['FaxQueueReport'][_0x7b44('0x115')](db['FaxMessage'],{});db[_0x7b44('0x176')][_0x7b44('0x115')](db[_0x7b44('0x12')],{});db[_0x7b44('0x176')][_0x7b44('0x115')](db[_0x7b44('0x49')],{});db['SmsAccount'][_0x7b44('0x109')](db['Disposition'],{'as':'Dispositions','foreignKey':_0x7b44('0x177'),'onDelete':_0x7b44('0x13e')});db['SmsAccount'][_0x7b44('0x109')](db[_0x7b44('0x79')],{'as':_0x7b44('0x16e'),'foreignKey':_0x7b44('0x177')});db['SmsAccount']['hasMany'](db['SmsMessage'],{'as':_0x7b44('0x15a'),'foreignKey':'SmsAccountId'});db[_0x7b44('0x4b')][_0x7b44('0x109')](db['SmsInteraction'],{'as':_0x7b44('0x15b')});db[_0x7b44('0x4b')][_0x7b44('0x109')](db[_0x7b44('0x178')],{'as':_0x7b44('0x170')});db[_0x7b44('0x4b')][_0x7b44('0x115')](db[_0x7b44('0x11e')],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x4b')][_0x7b44('0x115')](db[_0x7b44('0x81')],{'as':_0x7b44('0x148'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x7b44('0x4b')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x138')});db[_0x7b44('0x178')][_0x7b44('0x115')](db['User'],{'onDelete':_0x7b44('0x168')});db[_0x7b44('0x178')]['belongsTo'](db[_0x7b44('0x12d')],{'onDelete':_0x7b44('0x168')});db['SmsApplication'][_0x7b44('0x115')](db[_0x7b44('0x4b')],{'onDelete':_0x7b44('0x168')});db['SmsApplication'][_0x7b44('0x115')](db[_0x7b44('0x7f')],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x147')});db[_0x7b44('0x178')][_0x7b44('0x115')](db[_0x7b44('0x88')],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x169')});db[_0x7b44('0x4d')]['hasMany'](db[_0x7b44('0x4e')],{'as':_0x7b44('0x15a'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x179')});db['SmsInteraction']['belongsTo'](db[_0x7b44('0x4b')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x177')});db[_0x7b44('0x4d')][_0x7b44('0x115')](db['CmContact'],{'as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x4d')]['belongsTo'](db[_0x7b44('0x12')],{'as':'Owner','foreignKey':_0x7b44('0x108')});db[_0x7b44('0x4d')][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':'sms_interaction_has_tags','as':'Tags'});db['SmsInteraction'][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':'sms_interaction_has_tags','as':_0x7b44('0x161')});db[_0x7b44('0x4d')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x162'),'through':_0x7b44('0x126'),'foreignKey':_0x7b44('0x179')});db[_0x7b44('0x4e')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'as':_0x7b44('0x12')});db['SmsMessage'][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'onDelete':'cascade','as':'Contact'});db[_0x7b44('0x4e')][_0x7b44('0x115')](db[_0x7b44('0x4d')],{'onDelete':'cascade','as':_0x7b44('0x164'),'foreignKey':_0x7b44('0x179')});db[_0x7b44('0x4e')][_0x7b44('0x115')](db[_0x7b44('0x4b')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x177')});db[_0x7b44('0x12d')]['belongsToMany'](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x12f'),'foreignKey':_0x7b44('0x17a')});db[_0x7b44('0x12d')]['belongsToMany'](db[_0x7b44('0xe0')],{'through':_0x7b44('0x17b'),'as':_0x7b44('0x14c')});db[_0x7b44('0x51')][_0x7b44('0x109')](db[_0x7b44('0x7b')],{'as':_0x7b44('0x159'),'foreignKey':_0x7b44('0x17c'),'onDelete':'cascade'});db[_0x7b44('0x51')][_0x7b44('0x109')](db[_0x7b44('0x79')],{'as':_0x7b44('0x16e'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x7b44('0x109')](db[_0x7b44('0x54')],{'as':_0x7b44('0x15b'),'foreignKey':_0x7b44('0x17c')});db[_0x7b44('0x51')][_0x7b44('0x109')](db[_0x7b44('0x56')],{'as':_0x7b44('0x15a'),'foreignKey':_0x7b44('0x17c')});db['OpenchannelAccount'][_0x7b44('0x109')](db[_0x7b44('0x52')],{'as':'Applications','foreignKey':'OpenchannelAccountId'});db[_0x7b44('0x51')]['belongsTo'](db[_0x7b44('0x11e')],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x51')][_0x7b44('0x115')](db['Pause'],{'as':_0x7b44('0x148'),'foreignKey':_0x7b44('0x149')});db[_0x7b44('0x51')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x17d')});db[_0x7b44('0x52')]['belongsTo'](db[_0x7b44('0x12')],{'onDelete':'restrict'});db['OpenchannelApplication'][_0x7b44('0x115')](db[_0x7b44('0x58')],{'onDelete':'restrict','foreignKey':'OpenchannelQueueId'});db[_0x7b44('0x52')][_0x7b44('0x115')](db['OpenchannelAccount'],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x17c')});db[_0x7b44('0x52')][_0x7b44('0x115')](db[_0x7b44('0x7f')],{'onDelete':'restrict','foreignKey':_0x7b44('0x147')});db[_0x7b44('0x52')]['belongsTo'](db['Tag'],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x169')});db['OpenchannelInteraction'][_0x7b44('0x109')](db[_0x7b44('0x56')],{'as':_0x7b44('0x15a'),'onDelete':'cascade','foreignKey':_0x7b44('0x17e')});db[_0x7b44('0x54')][_0x7b44('0x115')](db[_0x7b44('0x51')],{'as':'Account','foreignKey':_0x7b44('0x17c')});db[_0x7b44('0x54')][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x54')]['belongsTo'](db['User'],{'as':_0x7b44('0x15f'),'foreignKey':'UserId'});db['OpenchannelInteraction'][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':_0x7b44('0x17f'),'as':_0x7b44('0x180')});db[_0x7b44('0x54')][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':_0x7b44('0x17f'),'as':_0x7b44('0x161')});db[_0x7b44('0x54')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x162'),'through':_0x7b44('0x181'),'foreignKey':_0x7b44('0x17e')});db['OpenchannelMessage'][_0x7b44('0x115')](db['User'],{'onDelete':_0x7b44('0x13e'),'as':'User'});db['OpenchannelMessage'][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'onDelete':'cascade','as':'Contact'});db[_0x7b44('0x56')][_0x7b44('0x115')](db[_0x7b44('0x54')],{'onDelete':_0x7b44('0x13e'),'as':_0x7b44('0x164'),'foreignKey':_0x7b44('0x17e')});db[_0x7b44('0x56')][_0x7b44('0x115')](db[_0x7b44('0xe7')],{'as':_0x7b44('0xe7'),'foreignKey':'AttachmentId'});db[_0x7b44('0x56')]['belongsTo'](db[_0x7b44('0x51')],{'as':'Account','foreignKey':'OpenchannelAccountId'});db[_0x7b44('0x58')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':'UserOpenchannelQueue','foreignKey':_0x7b44('0x182')});db[_0x7b44('0x58')][_0x7b44('0x118')](db[_0x7b44('0xe0')],{'through':_0x7b44('0x183'),'as':_0x7b44('0x14c')});db[_0x7b44('0x5a')][_0x7b44('0x109')](db[_0x7b44('0x7b')],{'as':'Dispositions','foreignKey':_0x7b44('0x165'),'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x5a')][_0x7b44('0x109')](db[_0x7b44('0x79')],{'as':_0x7b44('0x16e'),'foreignKey':_0x7b44('0x165')});db[_0x7b44('0x5a')][_0x7b44('0x109')](db[_0x7b44('0x67')],{'as':_0x7b44('0x184')});db['ChatWebsite'][_0x7b44('0x109')](db[_0x7b44('0x60')],{'as':_0x7b44('0x15b')});db['ChatWebsite'][_0x7b44('0x109')](db['ChatApplication'],{'as':_0x7b44('0x170')});db[_0x7b44('0x5a')]['hasMany'](db[_0x7b44('0x185')],{'as':_0x7b44('0x15a')});db['ChatWebsite'][_0x7b44('0x115')](db['CmList'],{'as':_0x7b44('0x16a'),'foreignKey':'ListId'});db[_0x7b44('0x5a')][_0x7b44('0x115')](db[_0x7b44('0x7f')],{'as':_0x7b44('0x7f'),'foreignKey':_0x7b44('0x147')});db[_0x7b44('0x5a')][_0x7b44('0x115')](db[_0x7b44('0x35')],{'as':_0x7b44('0x35'),'foreignKey':'MailAccountId'});db[_0x7b44('0x5a')][_0x7b44('0x115')](db[_0x7b44('0x81')],{'as':'mandatoryDispositionPause','foreignKey':_0x7b44('0x149')});db['ChatWebsite']['belongsToMany'](db[_0x7b44('0x12')],{'as':'Agents','through':_0x7b44('0x186')});db['OpenchannelQueueReport'][_0x7b44('0x115')](db[_0x7b44('0x51')],{});db[_0x7b44('0x5c')][_0x7b44('0x115')](db[_0x7b44('0x11e')],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x5c')]['belongsTo'](db[_0x7b44('0x11b')],{'as':_0x7b44('0x154'),'foreignKey':'ContactId'});db[_0x7b44('0x5c')][_0x7b44('0x115')](db[_0x7b44('0x54')],{});db['OpenchannelQueueReport']['belongsTo'](db['OpenchannelMessage'],{});db[_0x7b44('0x5c')]['belongsTo'](db[_0x7b44('0x12')],{});db[_0x7b44('0x5c')][_0x7b44('0x115')](db[_0x7b44('0x58')],{});db[_0x7b44('0x5e')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'as':_0x7b44('0x187'),'foreignKey':_0x7b44('0x108'),'onDelete':_0x7b44('0x168')});db[_0x7b44('0x5e')][_0x7b44('0x115')](db[_0x7b44('0x64')],{'as':_0x7b44('0x188'),'foreignKey':_0x7b44('0x189'),'onDelete':'restrict'});db[_0x7b44('0x5e')][_0x7b44('0x115')](db[_0x7b44('0x5a')],{'as':_0x7b44('0x18a'),'foreignKey':'ChatWebsiteId','onDelete':_0x7b44('0x168')});db[_0x7b44('0x5e')][_0x7b44('0x115')](db[_0x7b44('0x88')],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x169')});db[_0x7b44('0x60')][_0x7b44('0x109')](db[_0x7b44('0x185')],{'as':_0x7b44('0x15a'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x18b')});db['ChatInteraction'][_0x7b44('0x115')](db[_0x7b44('0x5a')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x165')});db[_0x7b44('0x60')][_0x7b44('0x115')](db['CmContact'],{'as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db['ChatInteraction'][_0x7b44('0x115')](db['User'],{'as':_0x7b44('0x15f'),'foreignKey':_0x7b44('0x108')});db['ChatInteraction']['belongsToMany'](db['Tag'],{'through':_0x7b44('0x18c'),'as':_0x7b44('0x180')});db[_0x7b44('0x60')][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':_0x7b44('0x18c'),'as':_0x7b44('0x161')});db['ChatInteraction']['belongsToMany'](db[_0x7b44('0x12')],{'as':_0x7b44('0x162'),'through':'user_has_chat_interactions','foreignKey':_0x7b44('0x18b')});db[_0x7b44('0x185')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'onDelete':_0x7b44('0x13e'),'as':_0x7b44('0x12')});db[_0x7b44('0x185')][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'onDelete':_0x7b44('0x13e'),'as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x185')][_0x7b44('0x115')](db[_0x7b44('0x60')],{'onDelete':_0x7b44('0x13e'),'as':_0x7b44('0x164'),'foreignKey':_0x7b44('0x18b')});db[_0x7b44('0x185')]['belongsTo'](db[_0x7b44('0xe7')],{'as':_0x7b44('0xe7'),'foreignKey':_0x7b44('0x175')});db['ChatMessage'][_0x7b44('0x115')](db['ChatWebsite'],{'as':'Account','foreignKey':'ChatWebsiteId'});db['ChatOfflineMessage'][_0x7b44('0x109')](db[_0x7b44('0xe7')],{'as':_0x7b44('0x163'),'foreignKey':_0x7b44('0x167'),'onDelete':_0x7b44('0x13e'),'hooks':!![]});db[_0x7b44('0x166')]['belongsTo'](db['CmContact'],{'onDelete':'cascade','as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x166')][_0x7b44('0x115')](db[_0x7b44('0x5a')],{'as':_0x7b44('0x15e'),'foreignKey':'ChatWebsiteId'});db['ChatQueue'][_0x7b44('0x118')](db['User'],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x2c'),'hooks':!![]});db[_0x7b44('0x64')]['belongsToMany'](db[_0x7b44('0xe0')],{'through':'team_has_chat_queues','as':'Teams'});db[_0x7b44('0x65')][_0x7b44('0x109')](db[_0x7b44('0xcc')],{'as':'Messages','foreignKey':_0x7b44('0x18d'),'onDelete':'cascade'});db[_0x7b44('0x65')]['belongsToMany'](db['User'],{'as':'Members','through':'chat_group_has_users'});db[_0x7b44('0x67')][_0x7b44('0x115')](db[_0x7b44('0x5a')],{'as':_0x7b44('0x18a'),'foreignKey':_0x7b44('0x165')});db[_0x7b44('0x69')][_0x7b44('0x109')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x11c'),'foreignKey':_0x7b44('0x18e')});db[_0x7b44('0x11b')]['hasMany'](db[_0x7b44('0x6b')],{'as':_0x7b44('0x18f'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x11b')][_0x7b44('0x109')](db[_0x7b44('0x6f')],{'as':'HopperFinals','foreignKey':_0x7b44('0x155')});db['CmContact'][_0x7b44('0x109')](db['CmHopperHistory'],{'as':_0x7b44('0x143'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x11b')][_0x7b44('0x109')](db[_0x7b44('0x72')],{'as':_0x7b44('0x72'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x11b')][_0x7b44('0x109')](db[_0x7b44('0x190')],{'as':'JscriptySessions','foreignKey':_0x7b44('0x155')});db[_0x7b44('0x11b')][_0x7b44('0x109')](db[_0x7b44('0x54')],{'as':_0x7b44('0x191'),'foreignKey':_0x7b44('0x155'),'onDelete':_0x7b44('0x168')});db['CmContact'][_0x7b44('0x109')](db[_0x7b44('0x60')],{'as':'ChatInteractions','foreignKey':_0x7b44('0x155'),'onDelete':_0x7b44('0x168')});db['CmContact'][_0x7b44('0x109')](db[_0x7b44('0x4d')],{'as':_0x7b44('0x110'),'foreignKey':'ContactId','onDelete':_0x7b44('0x168')});db[_0x7b44('0x11b')][_0x7b44('0x109')](db[_0x7b44('0x47')],{'as':_0x7b44('0x111'),'foreignKey':'ContactId','onDelete':_0x7b44('0x168')});db['CmContact'][_0x7b44('0x109')](db[_0x7b44('0x3a')],{'as':_0x7b44('0x122'),'foreignKey':'ContactId','onDelete':_0x7b44('0x168')});db[_0x7b44('0x11b')][_0x7b44('0x115')](db[_0x7b44('0x69')],{'as':_0x7b44('0x192'),'foreignKey':_0x7b44('0x18e')});db[_0x7b44('0x11b')][_0x7b44('0x115')](db['CmList'],{'as':'List','foreignKey':'ListId','onDelete':_0x7b44('0x13e')});db['CmContact'][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x162'),'through':_0x7b44('0x11d')});db['CmContact']['belongsToMany'](db[_0x7b44('0x88')],{'as':_0x7b44('0x180'),'through':_0x7b44('0x193')});db[_0x7b44('0x11b')][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':_0x7b44('0x193'),'as':_0x7b44('0x161')});db[_0x7b44('0x6b')]['belongsTo'](db[_0x7b44('0x11b')],{'as':'Contact','foreignKey':_0x7b44('0x155'),'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x6b')][_0x7b44('0x115')](db[_0x7b44('0x11e')],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c'),'onDelete':_0x7b44('0x13e')});db['CmHopper']['belongsTo'](db[_0x7b44('0x12')],{'as':'Agent','foreignKey':_0x7b44('0x108')});db[_0x7b44('0x6b')]['belongsTo'](db[_0x7b44('0x128')],{'as':_0x7b44('0x188'),'foreignKey':'VoiceQueueId','onDelete':_0x7b44('0x13e')});db[_0x7b44('0x6b')][_0x7b44('0x115')](db[_0x7b44('0x194')],{'as':'Campaign','foreignKey':'CampaignId','onDelete':_0x7b44('0x13e')});db[_0x7b44('0x6b')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'as':_0x7b44('0x15f'),'foreignKey':'OwnerId'});db[_0x7b44('0x6d')][_0x7b44('0x115')](db['CmContact'],{'as':_0x7b44('0x154'),'foreignKey':'ContactId','onDelete':_0x7b44('0x13e')});db[_0x7b44('0x6d')][_0x7b44('0x115')](db['CmList'],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c'),'onDelete':_0x7b44('0x13e')});db['CmHopperBlack']['belongsTo'](db['VoiceQueue'],{'as':_0x7b44('0x188'),'foreignKey':_0x7b44('0x142'),'onDelete':_0x7b44('0x13e')});db['CmHopperBlack'][_0x7b44('0x115')](db[_0x7b44('0x194')],{'as':_0x7b44('0x194'),'foreignKey':_0x7b44('0x195'),'onDelete':'cascade'});db[_0x7b44('0x77')]['hasMany'](db['Condition'],{'as':{'plural':_0x7b44('0x196'),'singular':_0x7b44('0x197')},'foreignKey':_0x7b44('0x198'),'onDelete':_0x7b44('0x13e'),'hooks':!![]});db[_0x7b44('0x77')][_0x7b44('0x109')](db[_0x7b44('0x7d')],{'as':{'plural':_0x7b44('0x199'),'singular':'OneAny'},'foreignKey':_0x7b44('0x19a'),'onDelete':_0x7b44('0x13e'),'hooks':!![]});db[_0x7b44('0x77')][_0x7b44('0x109')](db[_0x7b44('0x75')],{'as':_0x7b44('0x19b'),'foreignKey':_0x7b44('0x19c'),'onDelete':_0x7b44('0x13e'),'hooks':!![]});db[_0x7b44('0x7b')][_0x7b44('0x109')](db[_0x7b44('0x7b')],{'as':_0x7b44('0x159'),'foreignKey':_0x7b44('0x19d'),'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x7f')]['hasMany'](db[_0x7b44('0x7f')],{'as':_0x7b44('0x19e'),'foreignKey':'IntervalId','onDelete':'cascade','hooks':!![],'required':![]});db[_0x7b44('0x7f')][_0x7b44('0x109')](db[_0x7b44('0x18')],{'as':_0x7b44('0x10c'),'foreignKey':_0x7b44('0x147'),'onDelete':_0x7b44('0x168')});db[_0x7b44('0x7f')][_0x7b44('0x109')](db[_0x7b44('0x3e')],{'as':_0x7b44('0x19f'),'foreignKey':_0x7b44('0x147')});db[_0x7b44('0x7f')][_0x7b44('0x109')](db[_0x7b44('0x5e')],{'as':'ChatApplications','foreignKey':_0x7b44('0x147')});db[_0x7b44('0x7f')][_0x7b44('0x109')](db[_0x7b44('0x16f')],{'as':'FaxApplications','foreignKey':_0x7b44('0x147')});db['Interval'][_0x7b44('0x109')](db[_0x7b44('0x178')],{'as':_0x7b44('0x1a0'),'foreignKey':_0x7b44('0x147')});db[_0x7b44('0x85')][_0x7b44('0x115')](db['MailAccount'],{});db['Schedule']['belongsTo'](db[_0x7b44('0x95')],{'foreignKey':'DefaultReportId'});db['Schedule'][_0x7b44('0x115')](db[_0x7b44('0x93')],{'foreignKey':'CustomReportId'});db[_0x7b44('0x86')]['belongsToMany'](db[_0x7b44('0x1a')],{'as':_0x7b44('0x1a1'),'through':'moh_has_sounds','onDelete':'restrict'});db[_0x7b44('0x88')][_0x7b44('0x118')](db[_0x7b44('0x11b')],{'through':'cm_contact_has_tags'});db['Tag'][_0x7b44('0x118')](db[_0x7b44('0x60')],{'through':_0x7b44('0x18c')});db[_0x7b44('0x88')]['belongsToMany'](db[_0x7b44('0x3a')],{'through':_0x7b44('0x160')});db[_0x7b44('0x88')][_0x7b44('0x118')](db['SmsInteraction'],{'through':_0x7b44('0x1a2')});db['Tag'][_0x7b44('0x118')](db['FaxInteraction'],{'through':_0x7b44('0x174')});db['Tag'][_0x7b44('0x118')](db[_0x7b44('0x54')],{'through':_0x7b44('0x17f')});db[_0x7b44('0x88')]['belongsToMany'](db['WhatsappInteraction'],{'through':'whatsapp_interaction_has_tags'});db[_0x7b44('0x8c')][_0x7b44('0x109')](db[_0x7b44('0x7d')],{'as':{'plural':_0x7b44('0x1a3'),'singular':_0x7b44('0x1a4')},'foreignKey':_0x7b44('0x1a5'),'onDelete':_0x7b44('0x13e'),'hooks':!![]});db[_0x7b44('0x8c')][_0x7b44('0x109')](db[_0x7b44('0x7d')],{'as':{'plural':'AnyConditions','singular':_0x7b44('0x1a6')},'foreignKey':_0x7b44('0x1a7'),'onDelete':_0x7b44('0x13e'),'hooks':!![]});db[_0x7b44('0x8c')][_0x7b44('0x109')](db[_0x7b44('0x75')],{'as':_0x7b44('0x19b'),'foreignKey':_0x7b44('0x1a8'),'onDelete':'cascade','hooks':!![]});db['AnalyticCustomReport'][_0x7b44('0x109')](db[_0x7b44('0x99')],{'as':_0x7b44('0x1a9'),'onDelete':'cascade','foreignKey':_0x7b44('0x1aa'),'hooks':!![]});db[_0x7b44('0x95')][_0x7b44('0x109')](db[_0x7b44('0x99')],{'as':_0x7b44('0x1a9'),'onDelete':_0x7b44('0x13e'),'foreignKey':'DefaultReportId'});db[_0x7b44('0x98')][_0x7b44('0x109')](db[_0x7b44('0x99')],{'as':_0x7b44('0x1a9'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ab')});db[_0x7b44('0x99')][_0x7b44('0x115')](db[_0x7b44('0x98')],{'foreignKey':_0x7b44('0x1ab')});db[_0x7b44('0x9b')][_0x7b44('0x109')](db[_0x7b44('0x9d')],{'as':'Configurations','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0x9d')][_0x7b44('0x109')](db['SalesforceField'],{'as':'Subjects','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ad')});db[_0x7b44('0x9d')][_0x7b44('0x109')](db[_0x7b44('0x9f')],{'as':_0x7b44('0x1ae'),'onDelete':_0x7b44('0x13e'),'foreignKey':'DescriptionId'});db[_0x7b44('0x9d')][_0x7b44('0x109')](db[_0x7b44('0x9f')],{'as':_0x7b44('0x1a9'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1af')});db['SalesforceConfiguration'][_0x7b44('0x115')](db['SalesforceAccount'],{'as':'Account','foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0x9f')][_0x7b44('0x109')](db['SalesforceField'],{'as':_0x7b44('0x1b0'),'foreignKey':'SubjectId'});db[_0x7b44('0x9f')][_0x7b44('0x109')](db['SalesforceField'],{'as':'Description','foreignKey':'DescriptionId'});db[_0x7b44('0x9f')]['hasMany'](db[_0x7b44('0x9f')],{'as':_0x7b44('0x1b1'),'foreignKey':'FieldId'});db['SalesforceField']['belongsTo'](db[_0x7b44('0x8e')],{'as':_0x7b44('0x8e'),'foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0xa0')][_0x7b44('0x109')](db[_0x7b44('0xa2')],{'as':_0x7b44('0x1b3'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0xa2')][_0x7b44('0x109')](db[_0x7b44('0x1b4')],{'as':_0x7b44('0x1b5'),'onDelete':'cascade','foreignKey':_0x7b44('0x1ad')});db[_0x7b44('0xa2')][_0x7b44('0x109')](db['SugarcrmField'],{'as':_0x7b44('0x1ae'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1b6')});db['SugarcrmConfiguration'][_0x7b44('0x109')](db[_0x7b44('0x1b4')],{'as':_0x7b44('0x1a9'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0xa2')]['belongsTo'](db[_0x7b44('0xa0')],{'as':'Account','foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0x1b4')][_0x7b44('0x109')](db[_0x7b44('0x1b4')],{'as':_0x7b44('0x1b0'),'foreignKey':_0x7b44('0x1ad')});db['SugarcrmField']['hasMany'](db['SugarcrmField'],{'as':'Description','foreignKey':'DescriptionId'});db['SugarcrmField'][_0x7b44('0x109')](db[_0x7b44('0x1b4')],{'as':_0x7b44('0x1b1'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0x1b4')]['belongsTo'](db[_0x7b44('0x8e')],{'as':_0x7b44('0x8e'),'foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0xa5')][_0x7b44('0x109')](db[_0x7b44('0xa7')],{'as':'Configurations','onDelete':_0x7b44('0x13e'),'foreignKey':'AccountId'});db[_0x7b44('0xa7')][_0x7b44('0x109')](db['DeskField'],{'as':_0x7b44('0x1b5'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ad')});db[_0x7b44('0xa7')]['hasMany'](db[_0x7b44('0x1b7')],{'as':_0x7b44('0x1ae'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xa7')][_0x7b44('0x109')](db['DeskField'],{'as':'Fields','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0xa7')][_0x7b44('0x115')](db['DeskAccount'],{'as':_0x7b44('0x15e'),'foreignKey':'AccountId'});db[_0x7b44('0xa7')][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':'int_desk_configuration_has_tags'});db[_0x7b44('0x1b7')][_0x7b44('0x109')](db[_0x7b44('0x1b7')],{'as':_0x7b44('0x1b0'),'foreignKey':_0x7b44('0x1ad')});db[_0x7b44('0x1b7')][_0x7b44('0x109')](db[_0x7b44('0x1b7')],{'as':_0x7b44('0x1b8'),'foreignKey':_0x7b44('0x1b6')});db['DeskField']['hasMany'](db[_0x7b44('0x1b7')],{'as':_0x7b44('0x1b1'),'foreignKey':_0x7b44('0x1af')});db['DeskField'][_0x7b44('0x115')](db[_0x7b44('0x8e')],{'as':_0x7b44('0x8e'),'foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0xaa')][_0x7b44('0x109')](db[_0x7b44('0xac')],{'as':_0x7b44('0x1b3'),'onDelete':'cascade','foreignKey':_0x7b44('0x1ac')});db['ZohoConfiguration'][_0x7b44('0x109')](db[_0x7b44('0xae')],{'as':_0x7b44('0x1b5'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ad')});db['ZohoConfiguration']['hasMany'](db['ZohoField'],{'as':_0x7b44('0x1ae'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xac')][_0x7b44('0x109')](db[_0x7b44('0xae')],{'as':_0x7b44('0x1a9'),'onDelete':'cascade','foreignKey':'FieldId'});db[_0x7b44('0xac')][_0x7b44('0x115')](db[_0x7b44('0xaa')],{'as':'Account','foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0xae')]['hasMany'](db[_0x7b44('0xae')],{'as':_0x7b44('0x1b0'),'foreignKey':_0x7b44('0x1ad')});db['ZohoField']['hasMany'](db[_0x7b44('0xae')],{'as':_0x7b44('0x1b8'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xae')][_0x7b44('0x109')](db[_0x7b44('0xae')],{'as':_0x7b44('0x1b1'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0xae')][_0x7b44('0x115')](db[_0x7b44('0x8e')],{'as':_0x7b44('0x8e'),'foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0xb0')][_0x7b44('0x109')](db[_0x7b44('0xb2')],{'as':'Configurations','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0xb2')]['hasMany'](db['ZendeskField'],{'as':_0x7b44('0x1b5'),'foreignKey':_0x7b44('0x1ad')});db['ZendeskConfiguration'][_0x7b44('0x109')](db[_0x7b44('0xb3')],{'as':_0x7b44('0x1ae'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xb2')][_0x7b44('0x109')](db['ZendeskField'],{'as':'Fields','foreignKey':_0x7b44('0x1af')});db['ZendeskConfiguration'][_0x7b44('0x115')](db[_0x7b44('0xb0')],{'as':'Account','foreignKey':_0x7b44('0x1ac')});db['ZendeskConfiguration'][_0x7b44('0x118')](db['Tag'],{'through':'int_zendesk_configuration_has_tags'});db[_0x7b44('0xb3')][_0x7b44('0x109')](db[_0x7b44('0xb3')],{'as':'Subject','foreignKey':_0x7b44('0x1ad')});db['ZendeskField'][_0x7b44('0x109')](db['ZendeskField'],{'as':'Description','foreignKey':'DescriptionId'});db['ZendeskField'][_0x7b44('0x109')](db['ZendeskField'],{'as':_0x7b44('0x1b1'),'foreignKey':'FieldId'});db[_0x7b44('0xb3')][_0x7b44('0x115')](db[_0x7b44('0x8e')],{'as':'Variable','foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0xb5')][_0x7b44('0x109')](db['FreshdeskConfiguration'],{'as':_0x7b44('0x1b3'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0xb6')][_0x7b44('0x109')](db['FreshdeskField'],{'as':_0x7b44('0x1b5'),'onDelete':'cascade','foreignKey':_0x7b44('0x1ad')});db[_0x7b44('0xb6')][_0x7b44('0x109')](db[_0x7b44('0xb8')],{'as':'Descriptions','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xb6')][_0x7b44('0x109')](db['FreshdeskField'],{'as':_0x7b44('0x1a9'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1af')});db['FreshdeskConfiguration'][_0x7b44('0x115')](db[_0x7b44('0xb5')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0xb6')][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':'int_freshdesk_configuration_has_tags'});db[_0x7b44('0xb8')]['hasMany'](db[_0x7b44('0xb8')],{'as':_0x7b44('0x1b0'),'foreignKey':'SubjectId'});db[_0x7b44('0xb8')]['hasMany'](db[_0x7b44('0xb8')],{'as':_0x7b44('0x1b8'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xb8')]['hasMany'](db[_0x7b44('0xb8')],{'as':_0x7b44('0x1b1'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0xb8')][_0x7b44('0x115')](db[_0x7b44('0x8e')],{'as':_0x7b44('0x8e'),'foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0x1b9')][_0x7b44('0x109')](db[_0x7b44('0xba')],{'as':_0x7b44('0x1b3'),'onDelete':'cascade','foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0xba')]['hasMany'](db[_0x7b44('0x1ba')],{'as':'Subjects','foreignKey':_0x7b44('0x1ad')});db[_0x7b44('0xba')][_0x7b44('0x109')](db[_0x7b44('0x1ba')],{'as':'Descriptions','foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xba')][_0x7b44('0x109')](db[_0x7b44('0x1ba')],{'as':_0x7b44('0x1a9'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0xba')][_0x7b44('0x115')](db['VtigerAccount'],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0x1ba')][_0x7b44('0x109')](db[_0x7b44('0x1ba')],{'as':_0x7b44('0x1b0'),'foreignKey':_0x7b44('0x1ad')});db[_0x7b44('0x1ba')][_0x7b44('0x109')](db['VtigerField'],{'as':_0x7b44('0x1b8'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0x1ba')][_0x7b44('0x109')](db[_0x7b44('0x1ba')],{'as':_0x7b44('0x1b1'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0x1ba')][_0x7b44('0x115')](db[_0x7b44('0x8e')],{'as':'Variable','foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0x1bb')][_0x7b44('0x109')](db['ServicenowConfiguration'],{'as':'Configurations','onDelete':_0x7b44('0x13e'),'foreignKey':'AccountId'});db['ServicenowConfiguration'][_0x7b44('0x109')](db['ServicenowField'],{'as':'Subjects','foreignKey':_0x7b44('0x1ad')});db['ServicenowConfiguration'][_0x7b44('0x109')](db[_0x7b44('0xbe')],{'as':_0x7b44('0x1ae'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0x1bc')][_0x7b44('0x109')](db[_0x7b44('0xbe')],{'as':_0x7b44('0x1a9'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0x1bc')]['belongsTo'](db[_0x7b44('0x1bb')],{'as':'Account','foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0xbe')][_0x7b44('0x109')](db[_0x7b44('0xbe')],{'as':_0x7b44('0x1b0'),'foreignKey':'SubjectId'});db[_0x7b44('0xbe')]['hasMany'](db['ServicenowField'],{'as':'Description','foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xbe')][_0x7b44('0x109')](db['ServicenowField'],{'as':_0x7b44('0x1b1'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0xbe')][_0x7b44('0x115')](db[_0x7b44('0x8e')],{'as':_0x7b44('0x8e'),'foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0xc0')]['hasMany'](db['Dynamics365Configuration'],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0x1bd')][_0x7b44('0x109')](db[_0x7b44('0xc2')],{'as':_0x7b44('0x1b5'),'onDelete':'cascade','foreignKey':_0x7b44('0x1ad')});db['Dynamics365Configuration']['hasMany'](db[_0x7b44('0xc2')],{'as':_0x7b44('0x1ae'),'onDelete':'cascade','foreignKey':_0x7b44('0x1b6')});db['Dynamics365Configuration']['hasMany'](db[_0x7b44('0xc2')],{'as':'Fields','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0x1bd')]['belongsTo'](db['Dynamics365Account'],{'as':'Account','foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0xc2')][_0x7b44('0x109')](db[_0x7b44('0xc2')],{'as':_0x7b44('0x1b0'),'foreignKey':_0x7b44('0x1ad')});db['Dynamics365Field'][_0x7b44('0x109')](db[_0x7b44('0xc2')],{'as':_0x7b44('0x1b8'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xc2')]['hasMany'](db[_0x7b44('0xc2')],{'as':_0x7b44('0x1b1'),'foreignKey':'FieldId'});db[_0x7b44('0xc2')][_0x7b44('0x115')](db[_0x7b44('0x8e')],{'as':_0x7b44('0x8e'),'foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0xc4')][_0x7b44('0x109')](db[_0x7b44('0x1be')],{'as':'Configurations','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ac')});db['FreshsalesConfiguration']['hasMany'](db[_0x7b44('0xc7')],{'as':'Subjects','foreignKey':_0x7b44('0x1ad')});db['FreshsalesConfiguration']['hasMany'](db[_0x7b44('0xc7')],{'as':_0x7b44('0x1ae'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0x1be')]['hasMany'](db[_0x7b44('0xc7')],{'as':_0x7b44('0x1a9'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0x1be')][_0x7b44('0x115')](db[_0x7b44('0xc4')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x1ac')});db['FreshsalesField']['hasMany'](db[_0x7b44('0xc7')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x7b44('0xc7')][_0x7b44('0x109')](db[_0x7b44('0xc7')],{'as':_0x7b44('0x1b8'),'foreignKey':'DescriptionId'});db[_0x7b44('0xc7')][_0x7b44('0x109')](db[_0x7b44('0xc7')],{'as':_0x7b44('0x1b1'),'foreignKey':_0x7b44('0x1af')});db['FreshsalesField'][_0x7b44('0x115')](db['Variable'],{'as':_0x7b44('0x8e'),'foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0xca')][_0x7b44('0x115')](db['ChatWebsite'],{});db[_0x7b44('0xca')]['belongsTo'](db['CmList'],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c')});db[_0x7b44('0xca')]['belongsTo'](db[_0x7b44('0x11b')],{'as':'Contact','foreignKey':_0x7b44('0x155')});db[_0x7b44('0xca')][_0x7b44('0x115')](db['ChatInteraction'],{});db[_0x7b44('0xca')][_0x7b44('0x115')](db[_0x7b44('0x185')],{});db[_0x7b44('0xca')][_0x7b44('0x115')](db[_0x7b44('0x12')],{});db[_0x7b44('0xca')][_0x7b44('0x115')](db['ChatQueue'],{});db[_0x7b44('0xcc')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'onDelete':'cascade','foreignKey':_0x7b44('0x1bf')});db[_0x7b44('0xcc')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1c0')});db[_0x7b44('0x190')][_0x7b44('0x109')](db['JscriptyQuestionReport'],{'foreignKey':_0x7b44('0x1c1'),'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x190')][_0x7b44('0x109')](db[_0x7b44('0xce')],{'foreignKey':'SessionId','onDelete':_0x7b44('0x13e')});db[_0x7b44('0x1c2')][_0x7b44('0x115')](db[_0x7b44('0x4b')],{});db[_0x7b44('0x1c2')]['belongsTo'](db[_0x7b44('0x11e')],{'as':'List','foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x1c2')][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x1c2')]['belongsTo'](db[_0x7b44('0x4d')],{});db[_0x7b44('0x1c2')]['belongsTo'](db[_0x7b44('0x4e')],{});db[_0x7b44('0x1c2')][_0x7b44('0x115')](db[_0x7b44('0x12')],{});db[_0x7b44('0x1c2')][_0x7b44('0x115')](db['SmsQueue'],{});db[_0x7b44('0xd6')]['hasMany'](db[_0x7b44('0x190')],{'foreignKey':_0x7b44('0x1c3')});db['JscriptyProject'][_0x7b44('0x109')](db[_0x7b44('0xd0')],{'foreignKey':_0x7b44('0x1c3')});db['JscriptyProject'][_0x7b44('0x109')](db['JscriptyAnswerReport'],{'foreignKey':_0x7b44('0x1c3')});db[_0x7b44('0xdb')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':'Users','through':_0x7b44('0x13a')});db[_0x7b44('0xe0')][_0x7b44('0x118')](db['User'],{'as':_0x7b44('0x14b'),'through':'user_has_teams'});db['Team']['belongsToMany'](db[_0x7b44('0x128')],{'through':_0x7b44('0x105'),'as':'VoiceQueues'});db[_0x7b44('0xe0')][_0x7b44('0x118')](db[_0x7b44('0x37')],{'through':'team_has_mail_queues','as':_0x7b44('0x12a')});db[_0x7b44('0xe0')][_0x7b44('0x118')](db[_0x7b44('0x64')],{'through':'team_has_chat_queues','as':_0x7b44('0x12b')});db[_0x7b44('0xe0')]['belongsToMany'](db['FaxQueue'],{'through':_0x7b44('0x1c4'),'as':_0x7b44('0x1c5')});db[_0x7b44('0xe0')][_0x7b44('0x118')](db[_0x7b44('0x12d')],{'through':_0x7b44('0x17b'),'as':_0x7b44('0x12e')});db[_0x7b44('0xe0')][_0x7b44('0x118')](db[_0x7b44('0x58')],{'through':_0x7b44('0x183'),'as':_0x7b44('0x1c6')});db[_0x7b44('0xe0')][_0x7b44('0x118')](db[_0x7b44('0x101')],{'through':_0x7b44('0x1c7'),'as':_0x7b44('0x1c8')});db['Campaign']['hasMany'](db['CmHopper'],{'as':_0x7b44('0x18f'),'foreignKey':_0x7b44('0x195')});db['Campaign'][_0x7b44('0x109')](db['CmHopperFinal'],{'as':_0x7b44('0x10d'),'foreignKey':'CampaignId'});db[_0x7b44('0x194')][_0x7b44('0x109')](db[_0x7b44('0x71')],{'as':_0x7b44('0x143'),'foreignKey':_0x7b44('0x195')});db[_0x7b44('0x194')]['hasMany'](db[_0x7b44('0x6d')],{'as':_0x7b44('0x1c9'),'foreignKey':_0x7b44('0x195')});db[_0x7b44('0x194')]['belongsTo'](db[_0x7b44('0x29')],{'as':_0x7b44('0x29'),'foreignKey':_0x7b44('0x145')});db[_0x7b44('0x194')]['belongsTo'](db[_0x7b44('0x29')],{'as':_0x7b44('0x1ca'),'foreignKey':_0x7b44('0x146')});db[_0x7b44('0x194')][_0x7b44('0x115')](db[_0x7b44('0x7f')],{'as':'Interval','foreignKey':'IntervalId'});db[_0x7b44('0x194')][_0x7b44('0x115')](db[_0x7b44('0xdb')],{'as':_0x7b44('0xdb'),'foreignKey':_0x7b44('0x1cb')});db[_0x7b44('0x194')][_0x7b44('0x118')](db[_0x7b44('0x11e')],{'as':'Lists','through':_0x7b44('0x1cc')});db[_0x7b44('0x194')][_0x7b44('0x118')](db[_0x7b44('0x11e')],{'as':_0x7b44('0x14d'),'through':_0x7b44('0x1cd')});db[_0x7b44('0xe7')][_0x7b44('0x115')](db[_0x7b44('0x166')],{'as':_0x7b44('0x166'),'foreignKey':'ChatOfflineMessageId'});db[_0x7b44('0x1ce')][_0x7b44('0x115')](db[_0x7b44('0x3c')],{});db[_0x7b44('0x1ce')][_0x7b44('0x115')](db['MailInteraction'],{});db[_0x7b44('0x1ce')][_0x7b44('0x115')](db[_0x7b44('0x35')],{'foreignKey':_0x7b44('0x1cf'),'as':_0x7b44('0x1d0')});db[_0x7b44('0x1ce')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'foreignKey':_0x7b44('0x1d1'),'as':'FromAgent'});db[_0x7b44('0x1ce')]['belongsTo'](db[_0x7b44('0x12')],{'foreignKey':'ToUserId','as':_0x7b44('0x1d2')});db[_0x7b44('0x1ce')][_0x7b44('0x115')](db[_0x7b44('0x37')],{'foreignKey':_0x7b44('0x1d3'),'as':_0x7b44('0x1d4')});db['MailTransferReport']['belongsTo'](db[_0x7b44('0x35')],{'foreignKey':_0x7b44('0x1d5'),'as':'ToAccount'});db[_0x7b44('0xec')][_0x7b44('0x115')](db[_0x7b44('0x185')],{});db[_0x7b44('0xec')]['belongsTo'](db['ChatInteraction'],{});db['ChatTransferReport'][_0x7b44('0x115')](db[_0x7b44('0x5a')],{'foreignKey':_0x7b44('0x1d6'),'as':_0x7b44('0x1d0')});db[_0x7b44('0xec')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'foreignKey':_0x7b44('0x1d1'),'as':_0x7b44('0x1d7')});db['ChatTransferReport'][_0x7b44('0x115')](db[_0x7b44('0x12')],{'foreignKey':_0x7b44('0x1d8'),'as':_0x7b44('0x1d2')});db[_0x7b44('0xec')]['belongsTo'](db[_0x7b44('0x64')],{'foreignKey':_0x7b44('0x1d9'),'as':_0x7b44('0x1d4')});db[_0x7b44('0xec')]['belongsTo'](db[_0x7b44('0x5a')],{'foreignKey':_0x7b44('0x1da'),'as':_0x7b44('0x1db')});db['FaxTransferReport'][_0x7b44('0x115')](db['FaxMessage'],{});db[_0x7b44('0xee')][_0x7b44('0x115')](db[_0x7b44('0x47')],{});db[_0x7b44('0xee')][_0x7b44('0x115')](db[_0x7b44('0x134')],{'foreignKey':_0x7b44('0x1dc'),'as':_0x7b44('0x1d0')});db[_0x7b44('0xee')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'foreignKey':_0x7b44('0x1d1'),'as':_0x7b44('0x1d7')});db['FaxTransferReport']['belongsTo'](db[_0x7b44('0x12')],{'foreignKey':_0x7b44('0x1d8'),'as':_0x7b44('0x1d2')});db[_0x7b44('0xee')][_0x7b44('0x115')](db[_0x7b44('0x49')],{'foreignKey':_0x7b44('0x1dd'),'as':_0x7b44('0x1d4')});db[_0x7b44('0xee')][_0x7b44('0x115')](db['FaxAccount'],{'foreignKey':_0x7b44('0x1de'),'as':_0x7b44('0x1db')});db[_0x7b44('0xef')]['belongsTo'](db[_0x7b44('0x56')],{});db['OpenchannelTransferReport'][_0x7b44('0x115')](db[_0x7b44('0x54')],{});db[_0x7b44('0xef')][_0x7b44('0x115')](db[_0x7b44('0x51')],{'foreignKey':_0x7b44('0x1df'),'as':'FromAccount'});db[_0x7b44('0xef')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'foreignKey':'FromUserId','as':_0x7b44('0x1d7')});db['OpenchannelTransferReport']['belongsTo'](db[_0x7b44('0x12')],{'foreignKey':_0x7b44('0x1d8'),'as':_0x7b44('0x1d2')});db[_0x7b44('0xef')][_0x7b44('0x115')](db[_0x7b44('0x58')],{'foreignKey':_0x7b44('0x1e0'),'as':_0x7b44('0x1d4')});db[_0x7b44('0xef')][_0x7b44('0x115')](db[_0x7b44('0x51')],{'foreignKey':_0x7b44('0x1e1'),'as':_0x7b44('0x1db')});db[_0x7b44('0xf1')][_0x7b44('0x115')](db[_0x7b44('0x4e')],{});db[_0x7b44('0xf1')][_0x7b44('0x115')](db[_0x7b44('0x4d')],{});db[_0x7b44('0xf1')]['belongsTo'](db[_0x7b44('0x4b')],{'foreignKey':_0x7b44('0x1e2'),'as':_0x7b44('0x1d0')});db[_0x7b44('0xf1')][_0x7b44('0x115')](db['User'],{'foreignKey':_0x7b44('0x1d1'),'as':_0x7b44('0x1d7')});db[_0x7b44('0xf1')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'foreignKey':_0x7b44('0x1d8'),'as':_0x7b44('0x1d2')});db[_0x7b44('0xf1')][_0x7b44('0x115')](db[_0x7b44('0x12d')],{'foreignKey':_0x7b44('0x1e3'),'as':'ToQueue'});db[_0x7b44('0xf1')][_0x7b44('0x115')](db[_0x7b44('0x4b')],{'foreignKey':_0x7b44('0x1e4'),'as':_0x7b44('0x1db')});db[_0x7b44('0x11e')][_0x7b44('0x109')](db[_0x7b44('0x7b')],{'as':'Dispositions','foreignKey':_0x7b44('0x15c'),'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x11e')][_0x7b44('0x109')](db[_0x7b44('0x73')],{'as':_0x7b44('0x1e5'),'foreignKey':'ListId'});db['CmList']['hasMany'](db['CmContact'],{'as':'Contacts','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x11e')][_0x7b44('0x109')](db[_0x7b44('0x6f')],{'as':_0x7b44('0x10d'),'foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x11e')][_0x7b44('0x109')](db[_0x7b44('0x71')],{'as':_0x7b44('0x10e'),'foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x11e')][_0x7b44('0x109')](db[_0x7b44('0x72')],{'as':_0x7b44('0x72'),'foreignKey':_0x7b44('0x15c')});db['CmList'][_0x7b44('0x118')](db[_0x7b44('0x128')],{'as':_0x7b44('0x1e6'),'through':_0x7b44('0x14a')});db['CmList'][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':'cm_user_has_lists'});db[_0x7b44('0x1e7')][_0x7b44('0x109')](db['VoiceExtension'],{'as':_0x7b44('0x10c'),'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x1e7')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x132')});db[_0x7b44('0x116')][_0x7b44('0x109')](db['User'],{'as':'Users','foreignKey':_0x7b44('0x117')});db[_0x7b44('0x116')][_0x7b44('0x109')](db[_0x7b44('0xf6')],{'as':_0x7b44('0x1e8'),'foreignKey':_0x7b44('0x117'),'onDelete':'cascade'});db['UserProfileSection'][_0x7b44('0x109')](db['UserProfileResource'],{'as':_0x7b44('0x1e9'),'foreignKey':_0x7b44('0x1ea'),'onDelete':_0x7b44('0x13e')});db['WhatsappAccount'][_0x7b44('0x109')](db[_0x7b44('0x7b')],{'as':'Dispositions','foreignKey':_0x7b44('0x1eb'),'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x1ec')][_0x7b44('0x109')](db[_0x7b44('0x79')],{'as':_0x7b44('0x16e'),'foreignKey':_0x7b44('0x1eb')});db[_0x7b44('0x1ec')][_0x7b44('0x109')](db[_0x7b44('0xfd')],{'as':_0x7b44('0x15a'),'foreignKey':_0x7b44('0x1eb')});db[_0x7b44('0x1ec')]['hasMany'](db[_0x7b44('0x112')],{'as':_0x7b44('0x15b')});db[_0x7b44('0x1ec')][_0x7b44('0x109')](db[_0x7b44('0xfb')],{'as':_0x7b44('0x170')});db['WhatsappAccount']['belongsTo'](db[_0x7b44('0x11e')],{'as':'List','foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x1ec')][_0x7b44('0x115')](db['Pause'],{'as':_0x7b44('0x148'),'foreignKey':_0x7b44('0x149')});db[_0x7b44('0x1ec')]['belongsToMany'](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x139')});db[_0x7b44('0xfb')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'onDelete':_0x7b44('0x168')});db[_0x7b44('0xfb')]['belongsTo'](db['WhatsappQueue'],{'onDelete':_0x7b44('0x168')});db['WhatsappApplication'][_0x7b44('0x115')](db[_0x7b44('0x1ec')],{'onDelete':_0x7b44('0x168')});db[_0x7b44('0xfb')]['belongsTo'](db['Interval'],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x147')});db[_0x7b44('0xfb')][_0x7b44('0x115')](db['Tag'],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x169')});db[_0x7b44('0x112')][_0x7b44('0x109')](db[_0x7b44('0xfd')],{'as':'Messages','onDelete':'cascade','foreignKey':_0x7b44('0x1ed')});db[_0x7b44('0x112')][_0x7b44('0x115')](db[_0x7b44('0x1ec')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x1eb')});db[_0x7b44('0x112')][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':'Contact','foreignKey':_0x7b44('0x155')});db[_0x7b44('0x112')][_0x7b44('0x115')](db['User'],{'as':_0x7b44('0x15f'),'foreignKey':_0x7b44('0x108')});db[_0x7b44('0x112')][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':_0x7b44('0x1ee'),'as':_0x7b44('0x180')});db['WhatsappInteraction'][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':'whatsapp_interaction_has_tags','as':_0x7b44('0x161')});db[_0x7b44('0x112')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x162'),'through':_0x7b44('0x1ef'),'foreignKey':'WhatsappInteractionId'});db['WhatsappMessage']['belongsTo'](db[_0x7b44('0x12')],{'as':_0x7b44('0x12')});db[_0x7b44('0xfd')]['belongsTo'](db['CmContact'],{'onDelete':'cascade','as':_0x7b44('0x154')});db[_0x7b44('0xfd')][_0x7b44('0x115')](db[_0x7b44('0x112')],{'onDelete':_0x7b44('0x13e'),'as':_0x7b44('0x164'),'foreignKey':'WhatsappInteractionId'});db[_0x7b44('0xfd')][_0x7b44('0x115')](db['WhatsappAccount'],{'as':'Account','foreignKey':_0x7b44('0x1eb')});db[_0x7b44('0xfe')][_0x7b44('0x115')](db[_0x7b44('0x1ec')],{});db[_0x7b44('0xfe')][_0x7b44('0x115')](db[_0x7b44('0x11e')],{'as':_0x7b44('0x16a'),'foreignKey':'ListId'});db['WhatsappQueueReport'][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':'Contact','foreignKey':_0x7b44('0x155')});db[_0x7b44('0xfe')][_0x7b44('0x115')](db[_0x7b44('0x112')],{});db[_0x7b44('0xfe')][_0x7b44('0x115')](db[_0x7b44('0x101')],{});db[_0x7b44('0xfe')]['belongsTo'](db[_0x7b44('0xfd')],{});db['WhatsappQueueReport'][_0x7b44('0x115')](db[_0x7b44('0x12')],{});db[_0x7b44('0x100')]['belongsTo'](db['WhatsappMessage'],{});db['WhatsappTransferReport'][_0x7b44('0x115')](db[_0x7b44('0x112')],{});db[_0x7b44('0x100')][_0x7b44('0x115')](db[_0x7b44('0x1ec')],{'foreignKey':_0x7b44('0x1f0'),'as':_0x7b44('0x1d0')});db[_0x7b44('0x100')][_0x7b44('0x115')](db[_0x7b44('0x1ec')],{'foreignKey':_0x7b44('0x1f1'),'as':_0x7b44('0x1db')});db[_0x7b44('0x100')]['belongsTo'](db['WhatsappQueue'],{'foreignKey':_0x7b44('0x1f2'),'as':_0x7b44('0x1d4')});db[_0x7b44('0x100')]['belongsTo'](db[_0x7b44('0x12')],{'foreignKey':_0x7b44('0x1d1'),'as':_0x7b44('0x1d7')});db['WhatsappTransferReport'][_0x7b44('0x115')](db[_0x7b44('0x12')],{'foreignKey':'ToUserId','as':_0x7b44('0x1d2')});db[_0x7b44('0x101')]['belongsToMany'](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x32'),'foreignKey':'WhatsappQueueId'});db['WhatsappQueue'][_0x7b44('0x118')](db[_0x7b44('0xe0')],{'through':_0x7b44('0x1c7'),'as':'Teams'});module[_0x7b44('0x1f3')]={'db':db,'dbH':dbH};
\ No newline at end of file
index 7b965f6..17bfb29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7c4=['./api/pause','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','./api/sound','/api/tags','./api/tag','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','/api/integrations/zoho/configurations','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','/api/integrations/zendesk/configurations','/api/integrations/zendesk/fields','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','/api/integrations/vtiger/accounts','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','/api/square/details/reports','/api/jscripty/projects','./api/jscriptyProject','./api/setting','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareMessage','./api/team','/api/license','./api/license','/api/campaigns','/api/migrations','./api/migration','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','/api/cm/lists','/api/voice/prefixes','./api/userProfile','/api/userProfile/sections','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','/api/whatsapp/accounts','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/messages','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','/api/auth/local','/api/auth/google','/api/jira','./api/jira','/api/rpc','./api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','/api/webbar','./api/webbar','/apidoc','static','join','/www','/demo','/snippet','snippet','3.0.0','/plugins','root','/:url(api|auth|components|app|bower_components|assets)/*','get','route','resolve','appPath','/index.html','newPassword','apiKey','lastName','street','phone','email','clientId','code','accessKey','tenantId','token','channelSecret','accessToken','accessTokenSecret','consumerKey','consumerSecret','membername','calleridname','exten','clientEmail','accesskeyid','secretaccesskey','key','accountSid','localstationid','dsn','secret','registry','isPlainObject','isArray','length','isString','replace','@@{','}@@','lodash','path','express','util','./errors','./config/environment','./config/logger','./safe-template','default','isEmpty','body','\x20body=%s','format','method','headers','x-forwarded-for','url','statusCode','responseTime','user','name','role','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','connection','remoteAddress','device','agent_id','agent_name','test','/api/users','use','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','/api/voice/extensions','./api/voiceExtension','./api/voiceMusicOnHold','./api/voiceQueue','/api/voice/recordings','/api/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMail','./api/voiceMailMessage','/api/voice/calls/reports','/api/voice/dials/reports','./api/voiceDialReport','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','/api/trunks','./api/trunk','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','./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/chatProactiveAction','/api/cm/companies','./api/cmCompany','./api/cmContact','/api/cm/hopper','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','./api/action','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval'];(function(_0x1db256,_0x3fae20){var _0x406653=function(_0x916ef0){while(--_0x916ef0){_0x1db256['push'](_0x1db256['shift']());}};_0x406653(++_0x3fae20);}(_0xf7c4,0xc2));var _0x4f7c=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xf7c4[_0x1caf6a];return _0x1bf493;};'use strict';var _=require(_0x4f7c('0x0'));var path=require(_0x4f7c('0x1'));var express=require(_0x4f7c('0x2'));var ewinston=require('express-winston');var util=require(_0x4f7c('0x3'));var errors=require(_0x4f7c('0x4'));var config=require(_0x4f7c('0x5'));var logger=require(_0x4f7c('0x6'))('api');var authLogger=require(_0x4f7c('0x6'))('auth');var safeTemplate=require(_0x4f7c('0x7'))['safeTemplate'];exports[_0x4f7c('0x8')]=function(_0x16818e){_0x16818e['use'](ewinston['logger']({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x1915bc,_0x2359e3){var _0x296c2f='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_[_0x4f7c('0x9')](_0x1915bc[_0x4f7c('0xa')])){_0x296c2f+=_0x4f7c('0xb');var _0x5557fb=_0x1915bc[_0x4f7c('0xa')];maskSensitiveData(_0x5557fb);}return safeTemplate(util[_0x4f7c('0xc')](_0x296c2f,_0x1915bc[_0x4f7c('0xd')],_0x1915bc[_0x4f7c('0xe')][_0x4f7c('0xf')]?_0x1915bc[_0x4f7c('0xe')][_0x4f7c('0xf')]:_0x1915bc['connection']['remoteAddress']||_0x1915bc['ip'],_0x1915bc[_0x4f7c('0x10')],_0x2359e3[_0x4f7c('0x11')],_0x2359e3[_0x4f7c('0x12')],_0x1915bc[_0x4f7c('0x13')]?_0x1915bc[_0x4f7c('0x13')]['id']:null,_0x1915bc[_0x4f7c('0x13')]?_0x1915bc['user'][_0x4f7c('0x14')]:null,_0x1915bc[_0x4f7c('0x13')]?_0x1915bc[_0x4f7c('0x13')][_0x4f7c('0x15')]:null,_0x5557fb?util['inspect'](_0x5557fb,![],null):''));}}));_0x16818e['use'](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x267b4f,_0xa06cba){var _0xe3e493=_0x4f7c('0x16');if(_0x267b4f['body']&&_0x267b4f[_0x4f7c('0xa')]['device']&&_0x267b4f[_0x4f7c('0xa')]['agent_id']){_0xe3e493=_0x4f7c('0x17');}return util[_0x4f7c('0xc')](_0xe3e493,_0x267b4f[_0x4f7c('0xd')],_0x267b4f[_0x4f7c('0xe')]['x-forwarded-for']?_0x267b4f[_0x4f7c('0xe')]['x-forwarded-for']:_0x267b4f[_0x4f7c('0x18')][_0x4f7c('0x19')]||_0x267b4f['ip'],_0x267b4f[_0x4f7c('0x10')],_0xa06cba[_0x4f7c('0x11')],_0xa06cba[_0x4f7c('0x12')],_0x267b4f[_0x4f7c('0x13')]?_0x267b4f[_0x4f7c('0x13')]['id']:null,_0x267b4f[_0x4f7c('0x13')]?_0x267b4f[_0x4f7c('0x13')]['name']:null,_0x267b4f[_0x4f7c('0x13')]?_0x267b4f[_0x4f7c('0x13')][_0x4f7c('0x15')]:null,_0x267b4f[_0x4f7c('0xa')]&&_0x267b4f['body']['device']?_0x267b4f['body'][_0x4f7c('0x1a')]:'other',_0x267b4f['body']&&_0x267b4f[_0x4f7c('0xa')][_0x4f7c('0x1b')]?_0x267b4f[_0x4f7c('0xa')][_0x4f7c('0x1b')]:'',_0x267b4f['body']&&_0x267b4f[_0x4f7c('0xa')]['agent_name']?_0x267b4f[_0x4f7c('0xa')][_0x4f7c('0x1c')]:'');},'ignoreRoute':function(_0x11c95f){var _0x2835e6=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x2835e6[_0x4f7c('0x1d')](_0x11c95f[_0x4f7c('0x10')]);}}));_0x16818e['use'](_0x4f7c('0x1e'),require('./api/user'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x20'),require(_0x4f7c('0x21')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x22'),require('./api/voiceContext'));_0x16818e['use'](_0x4f7c('0x23'),require(_0x4f7c('0x24')));_0x16818e[_0x4f7c('0x1f')]('/api/voice/mohs',require(_0x4f7c('0x25')));_0x16818e[_0x4f7c('0x1f')]('/api/voice/queues',require(_0x4f7c('0x26')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x27'),require('./api/voiceRecording'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x28'),require(_0x4f7c('0x29')));_0x16818e['use'](_0x4f7c('0x2a'),require(_0x4f7c('0x2b')));_0x16818e[_0x4f7c('0x1f')]('/api/voice/mails/messages',require(_0x4f7c('0x2c')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x2d'),require('./api/voiceCallReport'));_0x16818e['use'](_0x4f7c('0x2e'),require(_0x4f7c('0x2f')));_0x16818e[_0x4f7c('0x1f')]('/api/voice/agents/reports',require(_0x4f7c('0x30')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x31'),require(_0x4f7c('0x32')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x33'),require('./api/memberReport'));_0x16818e['use'](_0x4f7c('0x34'),require(_0x4f7c('0x35')));_0x16818e['use']('/api/voice/transfers/reports',require('./api/voiceTransferReport'));_0x16818e[_0x4f7c('0x1f')]('/api/mail/out_servers',require(_0x4f7c('0x36')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x37'),require(_0x4f7c('0x38')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x39'),require(_0x4f7c('0x3a')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x3b'),require(_0x4f7c('0x3c')));_0x16818e[_0x4f7c('0x1f')]('/api/mail/interactions',require(_0x4f7c('0x3d')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x3e'),require(_0x4f7c('0x3f')));_0x16818e['use'](_0x4f7c('0x40'),require(_0x4f7c('0x41')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x42'),require(_0x4f7c('0x43')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x44'),require('./api/dashboard'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x45'),require(_0x4f7c('0x46')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x47'),require(_0x4f7c('0x48')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x49'),require(_0x4f7c('0x4a')));_0x16818e[_0x4f7c('0x1f')]('/api/fax/interactions',require(_0x4f7c('0x4b')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x4c'),require(_0x4f7c('0x4d')));_0x16818e['use'](_0x4f7c('0x4e'),require('./api/faxQueue'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x4f'),require(_0x4f7c('0x50')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x51'),require(_0x4f7c('0x52')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x53'),require(_0x4f7c('0x54')));_0x16818e[_0x4f7c('0x1f')]('/api/sms/interactions',require(_0x4f7c('0x55')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x56'),require(_0x4f7c('0x57')));_0x16818e[_0x4f7c('0x1f')]('/api/sms/queues',require('./api/smsQueue'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x58'),require(_0x4f7c('0x59')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x5a'),require('./api/openchannelApplication'));_0x16818e[_0x4f7c('0x1f')]('/api/openchannel/interactions',require(_0x4f7c('0x5b')));_0x16818e['use'](_0x4f7c('0x5c'),require(_0x4f7c('0x5d')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x5e'),require(_0x4f7c('0x5f')));_0x16818e['use'](_0x4f7c('0x60'),require(_0x4f7c('0x61')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x62'),require(_0x4f7c('0x63')));_0x16818e[_0x4f7c('0x1f')]('/api/chat/applications',require(_0x4f7c('0x64')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x65'),require(_0x4f7c('0x66')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x67'),require(_0x4f7c('0x68')));_0x16818e[_0x4f7c('0x1f')]('/api/chat/offline_messages',require(_0x4f7c('0x69')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x6a'),require(_0x4f7c('0x6b')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x6c'),require(_0x4f7c('0x6d')));_0x16818e[_0x4f7c('0x1f')]('/api/chat/proactive_actions',require(_0x4f7c('0x6e')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x6f'),require(_0x4f7c('0x70')));_0x16818e[_0x4f7c('0x1f')]('/api/cm/contacts',require(_0x4f7c('0x71')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x72'),require('./api/cmHopper'));_0x16818e[_0x4f7c('0x1f')]('/api/cm/hopper_black',require(_0x4f7c('0x73')));_0x16818e['use'](_0x4f7c('0x74'),require('./api/cmHopperFinal'));_0x16818e[_0x4f7c('0x1f')]('/api/cm/hopper_history',require(_0x4f7c('0x75')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x76'),require(_0x4f7c('0x77')));_0x16818e[_0x4f7c('0x1f')]('/api/actions',require(_0x4f7c('0x78')));_0x16818e['use']('/api/automations',require(_0x4f7c('0x79')));_0x16818e['use'](_0x4f7c('0x7a'),require(_0x4f7c('0x7b')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x7c'),require(_0x4f7c('0x7d')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x7e'),require(_0x4f7c('0x7f')));_0x16818e['use'](_0x4f7c('0x80'),require(_0x4f7c('0x81')));_0x16818e['use']('/api/pauses',require(_0x4f7c('0x82')));_0x16818e['use']('/api/cdr',require('./api/cdr'));_0x16818e['use'](_0x4f7c('0x83'),require(_0x4f7c('0x84')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x85'),require(_0x4f7c('0x86')));_0x16818e[_0x4f7c('0x1f')]('/api/sounds',require(_0x4f7c('0x87')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x88'),require(_0x4f7c('0x89')));_0x16818e['use'](_0x4f7c('0x8a'),require(_0x4f7c('0x8b')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x8c'),require(_0x4f7c('0x8d')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x8e'),require('./api/variable'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x8f'),require(_0x4f7c('0x90')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x91'),require(_0x4f7c('0x92')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x93'),require(_0x4f7c('0x94')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x95'),require(_0x4f7c('0x96')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x97'),require(_0x4f7c('0x98')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x99'),require(_0x4f7c('0x9a')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x9b'),require(_0x4f7c('0x9c')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x9d'),require(_0x4f7c('0x9e')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x9f'),require('./api/intSalesforceAccount'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xa0'),require(_0x4f7c('0xa1')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xa2'),require(_0x4f7c('0xa3')));_0x16818e[_0x4f7c('0x1f')]('/api/integrations/sugarcrm/accounts',require(_0x4f7c('0xa4')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xa5'),require(_0x4f7c('0xa6')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xa7'),require(_0x4f7c('0xa8')));_0x16818e['use']('/api/integrations/desk/accounts',require(_0x4f7c('0xa9')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xaa'),require(_0x4f7c('0xab')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xac'),require(_0x4f7c('0xad')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xae'),require('./api/intZohoAccount'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xaf'),require('./api/intZohoConfiguration'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xb0'),require(_0x4f7c('0xb1')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xb2'),require('./api/intZendeskAccount'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xb3'),require('./api/intZendeskConfiguration'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xb4'),require('./api/intZendeskField'));_0x16818e[_0x4f7c('0x1f')]('/api/integrations/freshdesk/accounts',require(_0x4f7c('0xb5')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xb6'),require(_0x4f7c('0xb7')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xb8'),require('./api/intFreshdeskField'));_0x16818e['use'](_0x4f7c('0xb9'),require('./api/intVtigerAccount'));_0x16818e[_0x4f7c('0x1f')]('/api/integrations/vtiger/configurations',require(_0x4f7c('0xba')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xbb'),require(_0x4f7c('0xbc')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xbd'),require(_0x4f7c('0xbe')));_0x16818e[_0x4f7c('0x1f')]('/api/integrations/servicenow/configurations',require(_0x4f7c('0xbf')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xc0'),require(_0x4f7c('0xc1')));_0x16818e[_0x4f7c('0x1f')]('/api/integrations/dynamics365/accounts',require(_0x4f7c('0xc2')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xc3'),require(_0x4f7c('0xc4')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xc5'),require(_0x4f7c('0xc6')));_0x16818e['use']('/api/integrations/freshsales/accounts',require(_0x4f7c('0xc7')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xc8'),require(_0x4f7c('0xc9')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xca'),require(_0x4f7c('0xcb')));_0x16818e[_0x4f7c('0x1f')]('/api/networks',require(_0x4f7c('0xcc')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xcd'),require(_0x4f7c('0xce')));_0x16818e['use'](_0x4f7c('0xcf'),require(_0x4f7c('0xd0')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xd1'),require('./api/jscriptyAnswerReport'));_0x16818e['use'](_0x4f7c('0xd2'),require(_0x4f7c('0xd3')));_0x16818e[_0x4f7c('0x1f')]('/api/jscripty/sessions/reports',require(_0x4f7c('0xd4')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xd5'),require(_0x4f7c('0xd6')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xd7'),require('./api/squareReport'));_0x16818e['use'](_0x4f7c('0xd8'),require('./api/squareReportDetail'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xd9'),require(_0x4f7c('0xda')));_0x16818e[_0x4f7c('0x1f')]('/api/settings',require(_0x4f7c('0xdb')));_0x16818e[_0x4f7c('0x1f')]('/api/square/odbc',require('./api/squareOdbc'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xdc'),require(_0x4f7c('0xdd')));_0x16818e['use'](_0x4f7c('0xde'),require('./api/squareRecording'));_0x16818e['use']('/api/square/messages',require(_0x4f7c('0xdf')));_0x16818e['use']('/api/teams',require(_0x4f7c('0xe0')));_0x16818e['use'](_0x4f7c('0xe1'),require(_0x4f7c('0xe2')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xe3'),require('./api/campaign'));_0x16818e['use'](_0x4f7c('0xe4'),require(_0x4f7c('0xe5')));_0x16818e[_0x4f7c('0x1f')]('/api/attachments',require(_0x4f7c('0xe6')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xe7'),require(_0x4f7c('0xe8')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xe9'),require(_0x4f7c('0xea')));_0x16818e['use'](_0x4f7c('0xeb'),require(_0x4f7c('0xec')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xed'),require('./api/faxTransferReport'));_0x16818e['use']('/api/openchannel/reports/transfer',require(_0x4f7c('0xee')));_0x16818e['use'](_0x4f7c('0xef'),require('./api/smsTransferReport'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xf0'),require('./api/cmList'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xf1'),require('./api/voicePrefix'));_0x16818e[_0x4f7c('0x1f')]('/api/userProfiles',require(_0x4f7c('0xf2')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xf3'),require('./api/userProfileSection'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xf4'),require(_0x4f7c('0xf5')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xf6'),require('./api/userNotification'));_0x16818e['use'](_0x4f7c('0xf7'),require('./api/whatsappAccount'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xf8'),require(_0x4f7c('0xf9')));_0x16818e[_0x4f7c('0x1f')]('/api/whatsapp/interactions',require('./api/whatsappInteraction'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xfa'),require('./api/whatsappMessage'));_0x16818e['use'](_0x4f7c('0xfb'),require(_0x4f7c('0xfc')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xfd'),require(_0x4f7c('0xfe')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0xff'),require(_0x4f7c('0x100')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x101'),require(_0x4f7c('0x102')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x103'),require('./api/realtime'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x104'),require('./api/authLocal'));_0x16818e['use'](_0x4f7c('0x105'),require('./api/authGoogle'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x106'),require(_0x4f7c('0x107')));_0x16818e['use'](_0x4f7c('0x108'),require(_0x4f7c('0x109')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x10a'),require(_0x4f7c('0x10b')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x10c'),require(_0x4f7c('0x10d')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x10e'),require('./api/pm2'));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x10f'),require(_0x4f7c('0x110')));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x111'),express[_0x4f7c('0x112')](path[_0x4f7c('0x113')](config['root'],_0x4f7c('0x111'))));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x114'),express[_0x4f7c('0x112')](path[_0x4f7c('0x113')](config['root'],'/www')));_0x16818e['use'](_0x4f7c('0x115'),express[_0x4f7c('0x112')](path['join'](config['root'],_0x4f7c('0x115'))));_0x16818e['use'](_0x4f7c('0x116'),express[_0x4f7c('0x112')](path['join'](config['root'],_0x4f7c('0x117'),_0x4f7c('0x118'))));_0x16818e[_0x4f7c('0x1f')](_0x4f7c('0x119'),express[_0x4f7c('0x112')](path[_0x4f7c('0x113')](config[_0x4f7c('0x11a')],'/server/files/plugins')));_0x16818e['route'](_0x4f7c('0x11b'))[_0x4f7c('0x11c')](errors[0x194]);_0x16818e[_0x4f7c('0x11d')]('/*')[_0x4f7c('0x11c')](function(_0x2c80da,_0x27a29e){_0x27a29e['sendFile'](path[_0x4f7c('0x11e')](_0x16818e[_0x4f7c('0x11c')](_0x4f7c('0x11f'))+_0x4f7c('0x120')));});};var sensitiveFields=['username','password',_0x4f7c('0x121'),_0x4f7c('0x122'),'firstName',_0x4f7c('0x123'),_0x4f7c('0x124'),_0x4f7c('0x125'),'mobile','fax',_0x4f7c('0x126'),_0x4f7c('0x127'),'clientSecret','securityToken',_0x4f7c('0x128'),_0x4f7c('0x129'),_0x4f7c('0x12a'),_0x4f7c('0x12b'),_0x4f7c('0x12c'),_0x4f7c('0x12d'),_0x4f7c('0x12e'),'authToken',_0x4f7c('0x12f'),_0x4f7c('0x130'),_0x4f7c('0x131'),_0x4f7c('0x132'),'calleridnum',_0x4f7c('0x133'),'vidaooApiKey',_0x4f7c('0x134'),'privateKey',_0x4f7c('0x135'),_0x4f7c('0x136'),_0x4f7c('0x137'),_0x4f7c('0x13'),'pass',_0x4f7c('0x138'),_0x4f7c('0x139'),_0x4f7c('0x13a'),_0x4f7c('0x13b'),_0x4f7c('0x13c'),'oldPassword'];function maskSensitiveData(_0x41dce8){var _0x156aa9=/(?!^)[\s\S](?!$)/g;if(!_[_0x4f7c('0x13d')](_0x41dce8))return;for(var _0x1eac69 in _0x41dce8){if(_[_0x4f7c('0x13e')](_0x41dce8[_0x1eac69])){for(var _0x442225=0x0;_0x442225<_0x41dce8[_0x1eac69][_0x4f7c('0x13f')];_0x442225++){maskSensitiveData(_0x41dce8[_0x1eac69][_0x442225]);}}else if(_[_0x4f7c('0x13d')](_0x41dce8[_0x1eac69])){maskSensitiveData(_0x41dce8[_0x1eac69]);}else if(_[_0x4f7c('0x140')](_0x41dce8[_0x1eac69])){_0x41dce8[_0x1eac69]=_0x41dce8[_0x1eac69][_0x4f7c('0x141')](/{{{/g,_0x4f7c('0x142'))[_0x4f7c('0x141')](/}}}/g,_0x4f7c('0x143'))[_0x4f7c('0x141')](/{{/g,'@{')[_0x4f7c('0x141')](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x1eac69)){_0x41dce8[_0x1eac69]=_0x41dce8[_0x1eac69][_0x4f7c('0x141')](_0x156aa9,'*');}}}}
\ No newline at end of file
+var _0xa2c5=['route','/:url(api|auth|components|app|bower_components|assets)/*','get','resolve','appPath','/index.html','username','password','newPassword','apiKey','firstName','lastName','street','phone','mobile','fax','clientId','clientSecret','accessKey','tenantId','token','channelSecret','accessToken','authToken','consumerKey','membername','calleridname','vidaooApiKey','clientEmail','privateKey','accesskeyid','secretaccesskey','accountSid','dsn','secret','registry','oldPassword','isPlainObject','isArray','replace','}@@','includes','lodash','path','express','express-winston','./errors','./config/logger','api','auth','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','\x20body=%s','body','method','headers','x-forwarded-for','connection','url','statusCode','responseTime','user','role','inspect','device','agent_id','name','other','agent_name','/api/users','./api/user','/api/voice/contexts','./api/voiceContext','./api/voiceExtension','/api/voice/queues','/api/voice/recordings','./api/voiceRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','/api/mail/out_servers','./api/mailServerOut','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','/api/mail/messages','./api/mailMessage','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','/api/dashboards/items','./api/dashboardItem','/api/fax/applications','./api/faxApplication','/api/fax/messages','./api/faxMessage','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','./api/openchannelApplication','/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/chatApplication','/api/chat/messages','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/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/cmCustomField','/api/automations','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','./api/interval','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','./api/sound','./api/tag','/api/templates','./api/template','/api/triggers','./api/trigger','/api/integrations','./api/integration','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intDeskAccount','./api/intDeskConfiguration','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','./api/intZohoConfiguration','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','./api/intZendeskField','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerField','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intFreshsalesAccount','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','/api/migrations','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','./api/smsTransferReport','/api/cm/lists','./api/cmList','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','/api/userProfile/resources','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/jira','./api/jira','/api/rpc','./api/rpc','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','/apidoc','static','join','root','/demo','snippet','3.0.0','/plugins','/server/files/plugins'];(function(_0x16a1a2,_0x3e3497){var _0x4c6b52=function(_0x23cc6b){while(--_0x23cc6b){_0x16a1a2['push'](_0x16a1a2['shift']());}};_0x4c6b52(++_0x3e3497);}(_0xa2c5,0x16a));var _0x5a2c=function(_0x172747,_0x1732bd){_0x172747=_0x172747-0x0;var _0x509692=_0xa2c5[_0x172747];return _0x509692;};'use strict';var _=require(_0x5a2c('0x0'));var path=require(_0x5a2c('0x1'));var express=require(_0x5a2c('0x2'));var ewinston=require(_0x5a2c('0x3'));var util=require('util');var errors=require(_0x5a2c('0x4'));var config=require('./config/environment');var logger=require(_0x5a2c('0x5'))(_0x5a2c('0x6'));var authLogger=require(_0x5a2c('0x5'))(_0x5a2c('0x7'));exports['default']=function(_0x287906){_0x287906[_0x5a2c('0x8')](ewinston[_0x5a2c('0x9')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x7916a6,_0x981bcf){var _0x4507e2=_0x5a2c('0xa');if(!_[_0x5a2c('0xb')](_0x7916a6['body'])){_0x4507e2+=_0x5a2c('0xc');var _0x200e55=_0x7916a6[_0x5a2c('0xd')];maskSensitiveData(_0x200e55);}return util['format'](_0x4507e2,_0x7916a6[_0x5a2c('0xe')],_0x7916a6[_0x5a2c('0xf')]['x-forwarded-for']?_0x7916a6[_0x5a2c('0xf')][_0x5a2c('0x10')]:_0x7916a6[_0x5a2c('0x11')]['remoteAddress']||_0x7916a6['ip'],_0x7916a6[_0x5a2c('0x12')],_0x981bcf[_0x5a2c('0x13')],_0x981bcf[_0x5a2c('0x14')],_0x7916a6['user']?_0x7916a6[_0x5a2c('0x15')]['id']:null,_0x7916a6[_0x5a2c('0x15')]?_0x7916a6['user']['name']:null,_0x7916a6[_0x5a2c('0x15')]?_0x7916a6['user'][_0x5a2c('0x16')]:null,_0x200e55?util[_0x5a2c('0x17')](_0x200e55,![],null):'');}}));_0x287906[_0x5a2c('0x8')](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x4d1f29,_0x1c4932){var _0x188866='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x4d1f29['body']&&_0x4d1f29[_0x5a2c('0xd')][_0x5a2c('0x18')]&&_0x4d1f29[_0x5a2c('0xd')][_0x5a2c('0x19')]){_0x188866='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util['format'](_0x188866,_0x4d1f29[_0x5a2c('0xe')],_0x4d1f29[_0x5a2c('0xf')][_0x5a2c('0x10')]?_0x4d1f29[_0x5a2c('0xf')][_0x5a2c('0x10')]:_0x4d1f29[_0x5a2c('0x11')]['remoteAddress']||_0x4d1f29['ip'],_0x4d1f29[_0x5a2c('0x12')],_0x1c4932[_0x5a2c('0x13')],_0x1c4932[_0x5a2c('0x14')],_0x4d1f29[_0x5a2c('0x15')]?_0x4d1f29[_0x5a2c('0x15')]['id']:null,_0x4d1f29[_0x5a2c('0x15')]?_0x4d1f29[_0x5a2c('0x15')][_0x5a2c('0x1a')]:null,_0x4d1f29['user']?_0x4d1f29['user']['role']:null,_0x4d1f29[_0x5a2c('0xd')]&&_0x4d1f29[_0x5a2c('0xd')][_0x5a2c('0x18')]?_0x4d1f29['body']['device']:_0x5a2c('0x1b'),_0x4d1f29[_0x5a2c('0xd')]&&_0x4d1f29[_0x5a2c('0xd')][_0x5a2c('0x19')]?_0x4d1f29[_0x5a2c('0xd')][_0x5a2c('0x19')]:'',_0x4d1f29[_0x5a2c('0xd')]&&_0x4d1f29[_0x5a2c('0xd')]['agent_name']?_0x4d1f29[_0x5a2c('0xd')][_0x5a2c('0x1c')]:'');},'ignoreRoute':function(_0x2550fc){var _0x39d794=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x39d794['test'](_0x2550fc[_0x5a2c('0x12')]);}}));_0x287906['use'](_0x5a2c('0x1d'),require(_0x5a2c('0x1e')));_0x287906[_0x5a2c('0x8')]('/api/voice/chanspy',require('./api/voiceChanSpy'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x1f'),require(_0x5a2c('0x20')));_0x287906[_0x5a2c('0x8')]('/api/voice/extensions',require(_0x5a2c('0x21')));_0x287906[_0x5a2c('0x8')]('/api/voice/mohs',require('./api/voiceMusicOnHold'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x22'),require('./api/voiceQueue'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x23'),require(_0x5a2c('0x24')));_0x287906[_0x5a2c('0x8')]('/api/screen/recordings',require('./api/screenRecording'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x25'),require(_0x5a2c('0x26')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x27'),require(_0x5a2c('0x28')));_0x287906['use'](_0x5a2c('0x29'),require(_0x5a2c('0x2a')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x2b'),require(_0x5a2c('0x2c')));_0x287906[_0x5a2c('0x8')]('/api/voice/agents/reports',require('./api/voiceAgentReport'));_0x287906[_0x5a2c('0x8')]('/api/voice/queues/reports',require(_0x5a2c('0x2d')));_0x287906['use'](_0x5a2c('0x2e'),require(_0x5a2c('0x2f')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x30'),require(_0x5a2c('0x31')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x32'),require('./api/voiceTransferReport'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x33'),require(_0x5a2c('0x34')));_0x287906[_0x5a2c('0x8')]('/api/mail/accounts',require('./api/mailAccount'));_0x287906[_0x5a2c('0x8')]('/api/mail/queues',require(_0x5a2c('0x35')));_0x287906['use'](_0x5a2c('0x36'),require(_0x5a2c('0x37')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x38'),require('./api/mailInteraction'));_0x287906['use'](_0x5a2c('0x39'),require(_0x5a2c('0x3a')));_0x287906[_0x5a2c('0x8')]('/api/mail/applications',require(_0x5a2c('0x3b')));_0x287906['use'](_0x5a2c('0x3c'),require(_0x5a2c('0x3d')));_0x287906['use'](_0x5a2c('0x3e'),require('./api/dashboard'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x3f'),require(_0x5a2c('0x40')));_0x287906['use']('/api/fax/accounts',require('./api/faxAccount'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x41'),require(_0x5a2c('0x42')));_0x287906[_0x5a2c('0x8')]('/api/fax/interactions',require('./api/faxInteraction'));_0x287906['use'](_0x5a2c('0x43'),require(_0x5a2c('0x44')));_0x287906[_0x5a2c('0x8')]('/api/fax/queues',require(_0x5a2c('0x45')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x46'),require(_0x5a2c('0x47')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x48'),require('./api/smsAccount'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x49'),require(_0x5a2c('0x4a')));_0x287906['use'](_0x5a2c('0x4b'),require(_0x5a2c('0x4c')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x4d'),require(_0x5a2c('0x4e')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x4f'),require(_0x5a2c('0x50')));_0x287906['use'](_0x5a2c('0x51'),require(_0x5a2c('0x52')));_0x287906[_0x5a2c('0x8')]('/api/openchannel/applications',require(_0x5a2c('0x53')));_0x287906['use'](_0x5a2c('0x54'),require('./api/openchannelInteraction'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x55'),require(_0x5a2c('0x56')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x57'),require(_0x5a2c('0x58')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x59'),require(_0x5a2c('0x5a')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x5b'),require(_0x5a2c('0x5c')));_0x287906['use']('/api/chat/applications',require(_0x5a2c('0x5d')));_0x287906[_0x5a2c('0x8')]('/api/chat/interactions',require('./api/chatInteraction'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x5e'),require('./api/chatMessage'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x5f'),require(_0x5a2c('0x60')));_0x287906['use'](_0x5a2c('0x61'),require(_0x5a2c('0x62')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x63'),require(_0x5a2c('0x64')));_0x287906[_0x5a2c('0x8')]('/api/chat/proactive_actions',require(_0x5a2c('0x65')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x66'),require(_0x5a2c('0x67')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x68'),require(_0x5a2c('0x69')));_0x287906['use'](_0x5a2c('0x6a'),require(_0x5a2c('0x6b')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x6c'),require(_0x5a2c('0x6d')));_0x287906['use'](_0x5a2c('0x6e'),require(_0x5a2c('0x6f')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x70'),require(_0x5a2c('0x71')));_0x287906[_0x5a2c('0x8')]('/api/cm/custom_fields',require(_0x5a2c('0x72')));_0x287906[_0x5a2c('0x8')]('/api/actions',require('./api/action'));_0x287906['use'](_0x5a2c('0x73'),require('./api/automation'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x74'),require(_0x5a2c('0x75')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x76'),require(_0x5a2c('0x77')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x78'),require(_0x5a2c('0x79')));_0x287906[_0x5a2c('0x8')]('/api/intervals',require(_0x5a2c('0x7a')));_0x287906[_0x5a2c('0x8')]('/api/pauses',require(_0x5a2c('0x7b')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x7c'),require(_0x5a2c('0x7d')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x7e'),require(_0x5a2c('0x7f')));_0x287906[_0x5a2c('0x8')]('/api/schedules',require('./api/schedule'));_0x287906[_0x5a2c('0x8')]('/api/sounds',require(_0x5a2c('0x80')));_0x287906[_0x5a2c('0x8')]('/api/tags',require(_0x5a2c('0x81')));_0x287906['use'](_0x5a2c('0x82'),require(_0x5a2c('0x83')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x84'),require(_0x5a2c('0x85')));_0x287906[_0x5a2c('0x8')]('/api/variables',require('./api/variable'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x86'),require(_0x5a2c('0x87')));_0x287906[_0x5a2c('0x8')]('/api/integrations/reports',require(_0x5a2c('0x88')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x89'),require(_0x5a2c('0x8a')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x8b'),require(_0x5a2c('0x8c')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x8d'),require(_0x5a2c('0x8e')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x8f'),require(_0x5a2c('0x90')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x91'),require(_0x5a2c('0x92')));_0x287906['use'](_0x5a2c('0x93'),require(_0x5a2c('0x94')));_0x287906[_0x5a2c('0x8')]('/api/integrations/salesforce/accounts',require('./api/intSalesforceAccount'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x95'),require(_0x5a2c('0x96')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x97'),require('./api/intSalesforceField'));_0x287906['use'](_0x5a2c('0x98'),require(_0x5a2c('0x99')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x9a'),require(_0x5a2c('0x9b')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x9c'),require('./api/intSugarcrmField'));_0x287906['use']('/api/integrations/desk/accounts',require(_0x5a2c('0x9d')));_0x287906[_0x5a2c('0x8')]('/api/integrations/desk/configurations',require(_0x5a2c('0x9e')));_0x287906[_0x5a2c('0x8')]('/api/integrations/desk/fields',require(_0x5a2c('0x9f')));_0x287906['use'](_0x5a2c('0xa0'),require(_0x5a2c('0xa1')));_0x287906[_0x5a2c('0x8')]('/api/integrations/zoho/configurations',require(_0x5a2c('0xa2')));_0x287906[_0x5a2c('0x8')]('/api/integrations/zoho/fields',require(_0x5a2c('0xa3')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xa4'),require(_0x5a2c('0xa5')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xa6'),require(_0x5a2c('0xa7')));_0x287906[_0x5a2c('0x8')]('/api/integrations/zendesk/fields',require(_0x5a2c('0xa8')));_0x287906[_0x5a2c('0x8')]('/api/integrations/freshdesk/accounts',require(_0x5a2c('0xa9')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xaa'),require('./api/intFreshdeskConfiguration'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xab'),require(_0x5a2c('0xac')));_0x287906['use'](_0x5a2c('0xad'),require(_0x5a2c('0xae')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xaf'),require('./api/intVtigerConfiguration'));_0x287906[_0x5a2c('0x8')]('/api/integrations/vtiger/fields',require(_0x5a2c('0xb0')));_0x287906['use']('/api/integrations/servicenow/accounts',require(_0x5a2c('0xb1')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xb2'),require(_0x5a2c('0xb3')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xb4'),require(_0x5a2c('0xb5')));_0x287906[_0x5a2c('0x8')]('/api/integrations/dynamics365/accounts',require(_0x5a2c('0xb6')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xb7'),require(_0x5a2c('0xb8')));_0x287906['use'](_0x5a2c('0xb9'),require('./api/intDynamics365Field'));_0x287906[_0x5a2c('0x8')]('/api/integrations/freshsales/accounts',require(_0x5a2c('0xba')));_0x287906[_0x5a2c('0x8')]('/api/integrations/freshsales/configurations',require(_0x5a2c('0xbb')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xbc'),require(_0x5a2c('0xbd')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xbe'),require('./api/network'));_0x287906['use']('/api/chat/reports/queue',require('./api/chatQueueReport'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xbf'),require(_0x5a2c('0xc0')));_0x287906[_0x5a2c('0x8')]('/api/jscripty/answers/reports',require('./api/jscriptyAnswerReport'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xc1'),require(_0x5a2c('0xc2')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xc3'),require(_0x5a2c('0xc4')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xc5'),require(_0x5a2c('0xc6')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xc7'),require(_0x5a2c('0xc8')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xc9'),require(_0x5a2c('0xca')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xcb'),require(_0x5a2c('0xcc')));_0x287906['use'](_0x5a2c('0xcd'),require('./api/setting'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xce'),require(_0x5a2c('0xcf')));_0x287906['use'](_0x5a2c('0xd0'),require(_0x5a2c('0xd1')));_0x287906['use'](_0x5a2c('0xd2'),require(_0x5a2c('0xd3')));_0x287906['use'](_0x5a2c('0xd4'),require(_0x5a2c('0xd5')));_0x287906['use'](_0x5a2c('0xd6'),require(_0x5a2c('0xd7')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xd8'),require(_0x5a2c('0xd9')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xda'),require('./api/campaign'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xdb'),require('./api/migration'));_0x287906[_0x5a2c('0x8')]('/api/attachments',require(_0x5a2c('0xdc')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xdd'),require(_0x5a2c('0xde')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xdf'),require(_0x5a2c('0xe0')));_0x287906[_0x5a2c('0x8')]('/api/chat/reports/transfer',require(_0x5a2c('0xe1')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xe2'),require(_0x5a2c('0xe3')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xe4'),require(_0x5a2c('0xe5')));_0x287906['use']('/api/sms/reports/transfer',require(_0x5a2c('0xe6')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xe7'),require(_0x5a2c('0xe8')));_0x287906[_0x5a2c('0x8')]('/api/voice/prefixes',require(_0x5a2c('0xe9')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xea'),require(_0x5a2c('0xeb')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xec'),require('./api/userProfileSection'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xed'),require('./api/userProfileResource'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xee'),require(_0x5a2c('0xef')));_0x287906['use'](_0x5a2c('0xf0'),require(_0x5a2c('0xf1')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xf2'),require(_0x5a2c('0xf3')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xf4'),require('./api/whatsappInteraction'));_0x287906['use'](_0x5a2c('0xf5'),require(_0x5a2c('0xf6')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xf7'),require(_0x5a2c('0xf8')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xf9'),require(_0x5a2c('0xfa')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xfb'),require(_0x5a2c('0xfc')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xfd'),require(_0x5a2c('0xfe')));_0x287906[_0x5a2c('0x8')]('/api/realtime',require('./api/realtime'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xff'),require(_0x5a2c('0x100')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x101'),require(_0x5a2c('0x102')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x103'),require(_0x5a2c('0x104')));_0x287906['use'](_0x5a2c('0x105'),require(_0x5a2c('0x106')));_0x287906['use']('/api/version',require(_0x5a2c('0x107')));_0x287906['use'](_0x5a2c('0x108'),require(_0x5a2c('0x109')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x10a'),require(_0x5a2c('0x10b')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x10c'),require('./api/webbar'));_0x287906['use'](_0x5a2c('0x10d'),express[_0x5a2c('0x10e')](path[_0x5a2c('0x10f')](config['root'],_0x5a2c('0x10d'))));_0x287906[_0x5a2c('0x8')]('/www',express[_0x5a2c('0x10e')](path[_0x5a2c('0x10f')](config[_0x5a2c('0x110')],'/www')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x111'),express['static'](path['join'](config['root'],_0x5a2c('0x111'))));_0x287906['use']('/snippet',express[_0x5a2c('0x10e')](path[_0x5a2c('0x10f')](config['root'],_0x5a2c('0x112'),_0x5a2c('0x113'))));_0x287906['use'](_0x5a2c('0x114'),express[_0x5a2c('0x10e')](path[_0x5a2c('0x10f')](config[_0x5a2c('0x110')],_0x5a2c('0x115'))));_0x287906[_0x5a2c('0x116')](_0x5a2c('0x117'))['get'](errors[0x194]);_0x287906[_0x5a2c('0x116')]('/*')[_0x5a2c('0x118')](function(_0xe29a96,_0x175c42){_0x175c42['sendFile'](path[_0x5a2c('0x119')](_0x287906['get'](_0x5a2c('0x11a'))+_0x5a2c('0x11b')));});};var sensitiveFields=[_0x5a2c('0x11c'),_0x5a2c('0x11d'),_0x5a2c('0x11e'),_0x5a2c('0x11f'),_0x5a2c('0x120'),_0x5a2c('0x121'),_0x5a2c('0x122'),_0x5a2c('0x123'),_0x5a2c('0x124'),_0x5a2c('0x125'),'email',_0x5a2c('0x126'),_0x5a2c('0x127'),'securityToken','code',_0x5a2c('0x128'),_0x5a2c('0x129'),_0x5a2c('0x12a'),_0x5a2c('0x12b'),_0x5a2c('0x12c'),'accessTokenSecret',_0x5a2c('0x12d'),_0x5a2c('0x12e'),'consumerSecret',_0x5a2c('0x12f'),_0x5a2c('0x130'),'calleridnum','exten',_0x5a2c('0x131'),_0x5a2c('0x132'),_0x5a2c('0x133'),_0x5a2c('0x134'),_0x5a2c('0x135'),'key',_0x5a2c('0x15'),'pass',_0x5a2c('0x136'),'localstationid',_0x5a2c('0x137'),_0x5a2c('0x138'),_0x5a2c('0x139'),_0x5a2c('0x13a')];function maskSensitiveData(_0x37a93b){var _0x1f58fc=/(?!^)[\s\S](?!$)/g;if(!_[_0x5a2c('0x13b')](_0x37a93b))return;for(var _0x7adb51 in _0x37a93b){if(_[_0x5a2c('0x13c')](_0x37a93b[_0x7adb51])){for(var _0x347f41=0x0;_0x347f41<_0x37a93b[_0x7adb51]['length'];_0x347f41++){maskSensitiveData(_0x37a93b[_0x7adb51][_0x347f41]);}}else if(_[_0x5a2c('0x13b')](_0x37a93b[_0x7adb51])){maskSensitiveData(_0x37a93b[_0x7adb51]);}else if(_['isString'](_0x37a93b[_0x7adb51])){_0x37a93b[_0x7adb51]=_0x37a93b[_0x7adb51][_0x5a2c('0x13d')](/{{{/g,'@@{')[_0x5a2c('0x13d')](/}}}/g,_0x5a2c('0x13e'))[_0x5a2c('0x13d')](/{{/g,'@{')[_0x5a2c('0x13d')](/}}/g,'}@');if(_[_0x5a2c('0x13f')](sensitiveFields,_0x7adb51)){_0x37a93b[_0x7adb51]=_0x37a93b[_0x7adb51]['replace'](_0x1f58fc,'*');}}}}
\ No newline at end of file
index 8df73df..3171294 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86ce=['../api/voiceTransferReport/voiceTransferReport.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/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/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/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/template/template.rpc','../api/intDeskAccount/intDeskAccount.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/chatQueueReport/chatQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','localhost','../config/triggers','RPC\x20listening\x20on\x20','jayson/promise','bluebird','lodash','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/trunk/trunk.rpc'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x86ce,0x1dd));var _0xe86c=function(_0x11ce46,_0x7a1715){_0x11ce46=_0x11ce46-0x0;var _0x272001=_0x86ce[_0x11ce46];return _0x272001;};'use strict';var jayson=require(_0xe86c('0x0'));var BPromise=require(_0xe86c('0x1'));var _=require(_0xe86c('0x2'));var config=require('../config/environment');exports[_0xe86c('0x3')]=function(){return new BPromise(function(_0xb04807,_0x24e1ab){var _0x1e8a1e={};_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x5')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x6')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x7')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require('../api/voiceRecording/voiceRecording.rpc'));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x8')));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x9')));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0xa')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0xb')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require('../api/memberReport/memberReport.rpc'));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0xc')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0xd')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0xe')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0xf')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x10')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x11')));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x12')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x13')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x14')));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x15')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x16')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require('../api/faxApplication/faxApplication.rpc'));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x17')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x18')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x19')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x1a')));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x1b')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x1c')));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x1d')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x1e')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x1e8a1e=_['merge'](_0x1e8a1e,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x1f')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x20')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x21')));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x22')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x23')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x24')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x25')));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x26')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require('../api/cmHopperBlack/cmHopperBlack.rpc'));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x27')));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x28')));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x29')));_0x1e8a1e=_['merge'](_0x1e8a1e,require('../api/pause/pause.rpc'));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require('../api/sound/sound.rpc'));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x2a')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require('../api/trigger/trigger.rpc'));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require('../api/variable/variable.rpc'));_0x1e8a1e=_['merge'](_0x1e8a1e,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x1e8a1e=_['merge'](_0x1e8a1e,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x2b')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require('../api/intZohoAccount/intZohoAccount.rpc'));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x2c')));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x2d')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x2e')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x2f')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x30')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x31')));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x32')));_0x1e8a1e=_['merge'](_0x1e8a1e,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x33')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x34')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x35')));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x36')));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x37')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require('../api/squareRecording/squareRecording.rpc'));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require('../api/squareMessage/squareMessage.rpc'));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x38')));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x39')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x3a')));_0x1e8a1e=_['merge'](_0x1e8a1e,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x3b')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x3c')));_0x1e8a1e=_[_0xe86c('0x4')](_0x1e8a1e,require(_0xe86c('0x3d')));_0x1e8a1e=_['merge'](_0x1e8a1e,require(_0xe86c('0x3e')));var _0x5743c5=jayson[_0xe86c('0x3f')](_0x1e8a1e)[_0xe86c('0x40')]();var _0x3759a4=config[_0xe86c('0x41')][_0xe86c('0x42')]||config[_0xe86c('0x42')]+0x1;var _0x5b45b7=config[_0xe86c('0x41')]['ip']||_0xe86c('0x43');_0x5743c5['on']('error',function(_0x13ddcf){return _0x24e1ab(_0x13ddcf);});_0x5743c5['listen'](_0x3759a4,_0x5b45b7,function(){console['log']('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x5b45b7,_0x3759a4);require(_0xe86c('0x44'))['default']();return _0xb04807(_0xe86c('0x45')+_0x5b45b7+':'+_0x3759a4);});});};
\ No newline at end of file
+var _0xf143=['../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.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/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','localhost','error','log','RPC\x20listening\x20on\x20','jayson/promise','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xf143,0x15d));var _0x3f14=function(_0x4ce3a4,_0x3d5950){_0x4ce3a4=_0x4ce3a4-0x0;var _0x199899=_0xf143[_0x4ce3a4];return _0x199899;};'use strict';var jayson=require(_0x3f14('0x0'));var BPromise=require('bluebird');var _=require(_0x3f14('0x1'));var config=require(_0x3f14('0x2'));exports[_0x3f14('0x3')]=function(){return new BPromise(function(_0x39b184,_0x4f3bb0){var _0x7c350d={};_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x5')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x6')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/voiceQueue/voiceQueue.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/voiceRecording/voiceRecording.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x7')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x8')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x9')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0xa')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0xb')));_0x7c350d=_['merge'](_0x7c350d,require('../api/trunk/trunk.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0xc')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0xd')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0xe')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/mailQueue/mailQueue.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0xf')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/mailMessage/mailMessage.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/mailApplication/mailApplication.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x10')));_0x7c350d=_['merge'](_0x7c350d,require('../api/faxAccount/faxAccount.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/faxApplication/faxApplication.rpc'));_0x7c350d=_['merge'](_0x7c350d,require('../api/faxInteraction/faxInteraction.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x11')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/faxQueue/faxQueue.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x12')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x13')));_0x7c350d=_['merge'](_0x7c350d,require('../api/smsInteraction/smsInteraction.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x14')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x15')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x16')));_0x7c350d=_['merge'](_0x7c350d,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x7c350d=_['merge'](_0x7c350d,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x17')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x18')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/chatInteraction/chatInteraction.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x19')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x1a')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x1b')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x1c')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x1d')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x1e')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x1f')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x20')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/pause/pause.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x21')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x22')));_0x7c350d=_['merge'](_0x7c350d,require('../api/trigger/trigger.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/variable/variable.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x23')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x24')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x25')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x26')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x27')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x28')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x29')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x2a')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x2b')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x2c')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x2d')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x2e')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x2f')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x30')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x31')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x32')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x33')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x34')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x35')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x36')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x37')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x38')));var _0x2dcb7f=jayson[_0x3f14('0x39')](_0x7c350d)[_0x3f14('0x3a')]();var _0x26df21=config[_0x3f14('0x3b')][_0x3f14('0x3c')]||config[_0x3f14('0x3c')]+0x1;var _0x22526a=config[_0x3f14('0x3b')]['ip']||_0x3f14('0x3d');_0x2dcb7f['on'](_0x3f14('0x3e'),function(_0x5129fc){return _0x4f3bb0(_0x5129fc);});_0x2dcb7f[_0x3f14('0x3')](_0x26df21,_0x22526a,function(){console[_0x3f14('0x3f')]('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x22526a,_0x26df21);require('../config/triggers')['default']();return _0x39b184(_0x3f14('0x40')+_0x22526a+':'+_0x26df21);});});};
\ No newline at end of file
diff --git a/server/safe-template.js b/server/safe-template.js
deleted file mode 100644 (file)
index bed8d02..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0xd7d1=['isArray','map','isPlainObject','keys','exports','safeTemplate','lodash','{\x20{\x20','\x20}\x20}','string','replace'];(function(_0x2cc3ad,_0x2dd1f1){var _0x5488e0=function(_0x2da5e0){while(--_0x2da5e0){_0x2cc3ad['push'](_0x2cc3ad['shift']());}};_0x5488e0(++_0x2dd1f1);}(_0xd7d1,0x1b3));var _0x1d7d=function(_0x388b75,_0x2c0c8b){_0x388b75=_0x388b75-0x0;var _0x37a4d9=_0xd7d1[_0x388b75];return _0x37a4d9;};var _=require(_0x1d7d('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x23f73c){return _0x23f73c==='{{'?_0x1d7d('0x1'):_0x1d7d('0x2');}function safeTemplate(_0x1d1926){var _0x3c3a27=_0x1d1926;if(typeof _0x1d1926===_0x1d7d('0x3')){_0x3c3a27=_0x1d1926[_0x1d7d('0x4')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x1d7d('0x5')](_0x1d1926)){_0x3c3a27=_0x1d1926[_0x1d7d('0x6')](function(_0x3c0839){return safeTemplate(_0x3c0839);});}else if(_[_0x1d7d('0x7')](_0x1d1926)){_0x3c3a27=Object[_0x1d7d('0x8')](_0x1d1926)['reduce'](function(_0x462ef8,_0x1aa456){_0x462ef8[_0x1aa456]=safeTemplate(_0x1d1926[_0x1aa456]);return _0x462ef8;},{});}return _0x3c3a27;}module[_0x1d7d('0x9')][_0x1d7d('0xa')]=safeTemplate;
\ No newline at end of file
index 38b6e42..11c9574 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfae=['noop','NO\x20MESSAGE','format','EXEC\x20%s\x20%s','join','setContext','setExtension','setPriority','SET\x20PRIORITY\x20%s','HANGUP','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','SAY\x20NUMBER\x20%s\x20%s','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','streamFile','agi','AGI','wait','exec','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','lodash','EventEmitter','./reply','call','setEncoding','utf8','setTimeout','headers','emit','ready','line','hangup','search','520\x20End\x20of\x20proper','function','substring','no\x20code','replace','result=','indexOf','substr','startsWith','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','write','inherits','prototype','sendRequest','sync','ANSWER','getData','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s'];(function(_0x353a17,_0x3b5229){var _0x4ba206=function(_0x3af2e2){while(--_0x3af2e2){_0x353a17['push'](_0x353a17['shift']());}};_0x4ba206(++_0x3b5229);}(_0xdfae,0x18d));var _0xedfa=function(_0x569fef,_0x49c37a){_0x569fef=_0x569fef-0x0;var _0x11f20b=_0xdfae[_0x569fef];return _0x11f20b;};'use strict';var util=require('util');var _=require(_0xedfa('0x0'));var EventEmitter=require('events')[_0xedfa('0x1')];var AGIReply=require(_0xedfa('0x2'));var AGIError=require('./error');function AGIChannel(_0x503712){var _0x4e681d=this,_0x1e2767=new AGIReply(),_0x3db3ed=![],_0x449807={};EventEmitter[_0xedfa('0x3')](_0x4e681d);_0x503712[_0xedfa('0x4')](_0xedfa('0x5'));_0x503712[_0xedfa('0x6')](0x8*0x3c*0x3c*0x3e8);_0x1e2767[_0xedfa('0x4')](_0xedfa('0x5'));_0x1e2767['on'](_0xedfa('0x7'),function(_0x414e4a){for(var _0x1a79c0 in _0x414e4a){_0x4e681d[_0x1a79c0]=_0x414e4a[_0x1a79c0];}_0x4e681d[_0xedfa('0x8')](_0xedfa('0x9'));});_0x1e2767['on'](_0xedfa('0xa'),function(_0x51aab6){if(_0x51aab6['toLowerCase']()==_0xedfa('0xb')){_0x4e681d[_0xedfa('0x8')]('hangup');return;}if(_0x51aab6['substring'](0x0,0xb)=='520-Invalid'){_0x3db3ed=!![];}if(_0x3db3ed){_0x449807['rx']+=_0x51aab6+'\x0a';if(_0x51aab6[_0xedfa('0xc')](_0xedfa('0xd'))!=-0x1){_0x3db3ed=![];}}else{_0x449807['rx']=_0x51aab6;}if(_0x3db3ed){return;}if(typeof _0x449807['cb']==_0xedfa('0xe')){var _0x18b321=_0x449807['rx'][_0xedfa('0xf')](0x0,0x3),_0x2e88bb=null,_0x376f47=null;_0x18b321=parseInt(_0x18b321);if(isNaN(_0x18b321)){_0x449807['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xedfa('0x10')});return;}if(_0x18b321!=0xc8){_0x449807['cb'](null,{'code':_0x18b321,'result':-0x1,'extra':'KO'});return;}_0x2e88bb=_0x449807['rx'][_0xedfa('0xf')](0x4)[_0xedfa('0x11')](_0xedfa('0x12'),'');if(_0x2e88bb[_0xedfa('0x13')]('\x20')!=-0x1){_0x2e88bb=_0x2e88bb[_0xedfa('0x14')](0x0,_0x2e88bb[_0xedfa('0x13')]('\x20'));}if(_[_0xedfa('0x15')](_0x2e88bb,'-1')){_0x2e88bb=parseInt(_0x2e88bb);}_0x376f47=_0x449807['rx']['split']('\x20');if(_0x376f47[_0xedfa('0x16')]==0x3){_0x376f47=_0x376f47[0x2]['substring'](0x1,_0x376f47[0x2]['length']-0x1);}else if(_0x376f47[_0xedfa('0x16')]>0x3){var _0x1dbb09=/\((.+)\)/;var _0x4da870=_0x449807['rx'][_0xedfa('0x17')](_0x1dbb09);if(_0x4da870){_0x376f47=_0x4da870[0x1];}else{_0x376f47=null;}}else{_0x376f47=null;}_0x449807['cb'](null,{'code':_0x18b321,'result':_0x2e88bb,'extra':_0x376f47});}});_0x503712['on'](_0xedfa('0x18'),function(_0x491776){_0x4e681d[_0xedfa('0x8')](_0xedfa('0x18'),new AGIError(_0xedfa('0x19'),_0x491776[_0xedfa('0x1a')]));});_0x503712['on'](_0xedfa('0x1b'),function(){_0x4e681d[_0xedfa('0x8')](_0xedfa('0x1b'),new AGIError(_0xedfa('0x1c')));});_0x503712['on']('timeout',function(){_0x4e681d[_0xedfa('0x8')](_0xedfa('0x1d'),new AGIError(_0xedfa('0x1e')));_0x503712[_0xedfa('0x1f')]();});_0x503712[_0xedfa('0x20')](_0x1e2767);this['command']=function(_0x28791,_0x3f11d3){var _0x28791=_0x28791||'',_0x3f11d3=typeof _0x3f11d3==_0xedfa('0xe')?_0x3f11d3:new Function();_0x449807={'tx':_0x28791,'rx':'','cb':_0x3f11d3};_0x503712[_0xedfa('0x21')](_0x28791+'\x0a');},this[_0xedfa('0x1b')]=function(){_0x503712['destroy']();};}util[_0xedfa('0x22')](AGIChannel,EventEmitter);AGIChannel[_0xedfa('0x23')][_0xedfa('0x24')]=function(_0x210ce1){return this['command'][_0xedfa('0x25')](this,_0x210ce1);};AGIChannel[_0xedfa('0x23')]['answer']=function(){return this[_0xedfa('0x24')](_0xedfa('0x26'));};AGIChannel[_0xedfa('0x23')][_0xedfa('0x27')]=function(_0x9afa91,_0x51d997,_0x50ea69){_0x9afa91=_0x9afa91===undefined?'beep':_0x9afa91;_0x51d997=_0x51d997===undefined?'5':_0x51d997;_0x50ea69=_0x50ea69===undefined?'1':_0x50ea69;return this[_0xedfa('0x24')](util['format'](_0xedfa('0x28'),_0x9afa91,_0x51d997*0x3e8,_0x50ea69));};AGIChannel[_0xedfa('0x23')][_0xedfa('0x29')]=function(_0x5294a8){_0x5294a8=_0x5294a8||_0xedfa('0x2a');return this[_0xedfa('0x24')](util[_0xedfa('0x2b')]('VERBOSE\x20\x22%s\x22',_0x5294a8));};AGIChannel[_0xedfa('0x23')]['exec']=function(_0x1016f0,_0x325031){if(_['isArray'](_0x325031)){return this[_0xedfa('0x24')](util[_0xedfa('0x2b')](_0xedfa('0x2c'),_0x1016f0,_0x325031[_0xedfa('0x2d')](',')));}return this[_0xedfa('0x24')](util['format'](_0xedfa('0x2c'),_0x1016f0,_0x325031));};AGIChannel['prototype'][_0xedfa('0x2e')]=function(_0x37895b){return this[_0xedfa('0x24')](util[_0xedfa('0x2b')]('SET\x20CONTEXT\x20%s',_0x37895b));};AGIChannel['prototype'][_0xedfa('0x2f')]=function(_0x30c0b2){return this[_0xedfa('0x24')](util[_0xedfa('0x2b')]('SET\x20EXTENSION\x20%s',_0x30c0b2));};AGIChannel[_0xedfa('0x23')][_0xedfa('0x30')]=function(_0x47b64e){return this[_0xedfa('0x24')](util['format'](_0xedfa('0x31'),_0x47b64e));};AGIChannel['prototype']['hangup']=function(){return this[_0xedfa('0x24')](_0xedfa('0x32'));};AGIChannel[_0xedfa('0x23')]['setVariable']=function(_0x4a0cef,_0x22851f){var _0x5ac0b2=_[_0xedfa('0x33')](_0x22851f)||_[_0xedfa('0x34')](_0x22851f)?_0x22851f[_0xedfa('0x35')]():_0x22851f;return this[_0xedfa('0x24')](util[_0xedfa('0x2b')](_0xedfa('0x36'),_0x4a0cef,_0x5ac0b2?_0x5ac0b2[_0xedfa('0x35')]()[_0xedfa('0x11')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype']['sayNumber']=function(_0x51fb6c,_0x493aed){return this[_0xedfa('0x24')](util[_0xedfa('0x2b')](_0xedfa('0x37'),_0x51fb6c,_0x493aed));};AGIChannel['prototype']['sayDigits']=function(_0x5d115e,_0x1b086b){return this['sendRequest'](util[_0xedfa('0x2b')](_0xedfa('0x38'),_0x5d115e,_0x1b086b));};AGIChannel[_0xedfa('0x23')][_0xedfa('0x39')]=function(_0xa1eeee,_0x39671e){return this[_0xedfa('0x24')](util['format'](_0xedfa('0x3a'),_0xa1eeee,_0x39671e));};AGIChannel[_0xedfa('0x23')][_0xedfa('0x3b')]=function(_0x1379d6,_0x42deb0,_0x3d363f){_0x42deb0=_0x42deb0||this[_0xedfa('0x3c')];_0x3d363f=_0x3d363f||0x1;this['setContext'](_0x1379d6);this['setExtension'](_0x42deb0);this[_0xedfa('0x30')](_0x3d363f);return this[_0xedfa('0x29')](util[_0xedfa('0x2b')](_0xedfa('0x3d'),_0x1379d6,_0x42deb0,_0x3d363f));};AGIChannel[_0xedfa('0x23')][_0xedfa('0x3e')]=function(_0x579906){return this[_0xedfa('0x24')](util['format'](_0xedfa('0x3f'),_0x579906));};AGIChannel[_0xedfa('0x23')]['recordFile']=function(_0x5a2cc7,_0x1d4023,_0x2943a9,_0x3389b9,_0x2d8aac,_0x403467){_0x1d4023=_0x1d4023||'wav';_0x2943a9=_0x2943a9||'';_0x3389b9=_0x3389b9===undefined?-0x1:_0x3389b9==='-1'?-0x1:_0x3389b9*0x3e8;_0x2d8aac=_0x2d8aac===undefined?'':'s='+_0x2d8aac;_0x403467=_0x403467?'BEEP':'';return this[_0xedfa('0x24')](util['format']('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x5a2cc7,_0x1d4023,_0x2943a9,_0x3389b9,_0x403467,_0x2d8aac));};AGIChannel[_0xedfa('0x23')][_0xedfa('0x40')]=function(_0x127582,_0x19c384){_0x19c384=_0x19c384||'';return this[_0xedfa('0x24')](util[_0xedfa('0x2b')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x127582,_0x19c384));};AGIChannel[_0xedfa('0x23')][_0xedfa('0x41')]=function(_0x5cafbb){return this['exec'](_0xedfa('0x42'),_0x5cafbb);};AGIChannel[_0xedfa('0x23')][_0xedfa('0x43')]=function(_0xb50dff){return this[_0xedfa('0x44')](_0xedfa('0x45'),_0xb50dff);};AGIChannel['prototype'][_0xedfa('0x18')]=function(_0x509e28,_0x27b480){this[_0xedfa('0x29')](util['format'](_0xedfa('0x46'),_0x509e28['id'],_0x509e28[_0xedfa('0x47')],_0x27b480));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xedfa('0x48')]=AGIChannel;
\ No newline at end of file
+var _0x67da=['function','no\x20code','replace','result=','indexOf','substr','startsWith','split','length','match','error','code','close','emit','E_AGI_SOCKET_CLOSE','timeout','destroy','command','write','inherits','sendRequest','sync','prototype','answer','getData','noop','NO\x20MESSAGE','format','isArray','EXEC\x20%s\x20%s','join','setExtension','setPriority','SET\x20PRIORITY\x20%s','setVariable','isBoolean','toString','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','setContext','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','exec','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','EventEmitter','./reply','./error','call','setEncoding','utf8','setTimeout','headers','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper'];(function(_0x4138d7,_0xa5adf1){var _0x2ab7db=function(_0x431c28){while(--_0x431c28){_0x4138d7['push'](_0x4138d7['shift']());}};_0x2ab7db(++_0xa5adf1);}(_0x67da,0x15f));var _0xa67d=function(_0x416ef5,_0x194348){_0x416ef5=_0x416ef5-0x0;var _0x3620a6=_0x67da[_0x416ef5];return _0x3620a6;};'use strict';var util=require(_0xa67d('0x0'));var _=require('lodash');var EventEmitter=require('events')[_0xa67d('0x1')];var AGIReply=require(_0xa67d('0x2'));var AGIError=require(_0xa67d('0x3'));function AGIChannel(_0x1b0a52){var _0x17fe0c=this,_0x3ad677=new AGIReply(),_0x313d2e=![],_0x25ab6d={};EventEmitter[_0xa67d('0x4')](_0x17fe0c);_0x1b0a52[_0xa67d('0x5')](_0xa67d('0x6'));_0x1b0a52[_0xa67d('0x7')](0x8*0x3c*0x3c*0x3e8);_0x3ad677['setEncoding'](_0xa67d('0x6'));_0x3ad677['on'](_0xa67d('0x8'),function(_0x59255d){for(var _0x19c871 in _0x59255d){_0x17fe0c[_0x19c871]=_0x59255d[_0x19c871];}_0x17fe0c['emit']('ready');});_0x3ad677['on']('line',function(_0x23e48f){if(_0x23e48f['toLowerCase']()=='hangup'){_0x17fe0c['emit'](_0xa67d('0x9'));return;}if(_0x23e48f[_0xa67d('0xa')](0x0,0xb)==_0xa67d('0xb')){_0x313d2e=!![];}if(_0x313d2e){_0x25ab6d['rx']+=_0x23e48f+'\x0a';if(_0x23e48f[_0xa67d('0xc')](_0xa67d('0xd'))!=-0x1){_0x313d2e=![];}}else{_0x25ab6d['rx']=_0x23e48f;}if(_0x313d2e){return;}if(typeof _0x25ab6d['cb']==_0xa67d('0xe')){var _0x6f5cb6=_0x25ab6d['rx']['substring'](0x0,0x3),_0x353a27=null,_0x37a264=null;_0x6f5cb6=parseInt(_0x6f5cb6);if(isNaN(_0x6f5cb6)){_0x25ab6d['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xa67d('0xf')});return;}if(_0x6f5cb6!=0xc8){_0x25ab6d['cb'](null,{'code':_0x6f5cb6,'result':-0x1,'extra':'KO'});return;}_0x353a27=_0x25ab6d['rx'][_0xa67d('0xa')](0x4)[_0xa67d('0x10')](_0xa67d('0x11'),'');if(_0x353a27[_0xa67d('0x12')]('\x20')!=-0x1){_0x353a27=_0x353a27[_0xa67d('0x13')](0x0,_0x353a27[_0xa67d('0x12')]('\x20'));}if(_[_0xa67d('0x14')](_0x353a27,'-1')){_0x353a27=parseInt(_0x353a27);}_0x37a264=_0x25ab6d['rx'][_0xa67d('0x15')]('\x20');if(_0x37a264['length']==0x3){_0x37a264=_0x37a264[0x2]['substring'](0x1,_0x37a264[0x2][_0xa67d('0x16')]-0x1);}else if(_0x37a264[_0xa67d('0x16')]>0x3){var _0x491851=/\((.+)\)/;var _0x1ebf71=_0x25ab6d['rx'][_0xa67d('0x17')](_0x491851);if(_0x1ebf71){_0x37a264=_0x1ebf71[0x1];}else{_0x37a264=null;}}else{_0x37a264=null;}_0x25ab6d['cb'](null,{'code':_0x6f5cb6,'result':_0x353a27,'extra':_0x37a264});}});_0x1b0a52['on'](_0xa67d('0x18'),function(_0x4d3cc1){_0x17fe0c['emit'](_0xa67d('0x18'),new AGIError('E_AGI_SOCKET_ERROR',_0x4d3cc1[_0xa67d('0x19')]));});_0x1b0a52['on'](_0xa67d('0x1a'),function(){_0x17fe0c[_0xa67d('0x1b')](_0xa67d('0x1a'),new AGIError(_0xa67d('0x1c')));});_0x1b0a52['on'](_0xa67d('0x1d'),function(){_0x17fe0c['emit'](_0xa67d('0x1d'),new AGIError('E_AGI_SOCKET_TIMEOUT'));_0x1b0a52[_0xa67d('0x1e')]();});_0x1b0a52['pipe'](_0x3ad677);this[_0xa67d('0x1f')]=function(_0x3a8d41,_0x1e4d06){var _0x3a8d41=_0x3a8d41||'',_0x1e4d06=typeof _0x1e4d06==_0xa67d('0xe')?_0x1e4d06:new Function();_0x25ab6d={'tx':_0x3a8d41,'rx':'','cb':_0x1e4d06};_0x1b0a52[_0xa67d('0x20')](_0x3a8d41+'\x0a');},this['close']=function(){_0x1b0a52[_0xa67d('0x1e')]();};}util[_0xa67d('0x21')](AGIChannel,EventEmitter);AGIChannel['prototype'][_0xa67d('0x22')]=function(_0x1bf8c1){return this[_0xa67d('0x1f')][_0xa67d('0x23')](this,_0x1bf8c1);};AGIChannel[_0xa67d('0x24')][_0xa67d('0x25')]=function(){return this[_0xa67d('0x22')]('ANSWER');};AGIChannel['prototype'][_0xa67d('0x26')]=function(_0x154474,_0x24e822,_0x47b082){_0x154474=_0x154474===undefined?'beep':_0x154474;_0x24e822=_0x24e822===undefined?'5':_0x24e822;_0x47b082=_0x47b082===undefined?'1':_0x47b082;return this[_0xa67d('0x22')](util['format']('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x154474,_0x24e822*0x3e8,_0x47b082));};AGIChannel[_0xa67d('0x24')][_0xa67d('0x27')]=function(_0x51e5db){_0x51e5db=_0x51e5db||_0xa67d('0x28');return this[_0xa67d('0x22')](util[_0xa67d('0x29')]('VERBOSE\x20\x22%s\x22',_0x51e5db));};AGIChannel[_0xa67d('0x24')]['exec']=function(_0x30e3eb,_0x47586d){if(_[_0xa67d('0x2a')](_0x47586d)){return this['sendRequest'](util['format'](_0xa67d('0x2b'),_0x30e3eb,_0x47586d[_0xa67d('0x2c')](',')));}return this[_0xa67d('0x22')](util[_0xa67d('0x29')](_0xa67d('0x2b'),_0x30e3eb,_0x47586d));};AGIChannel[_0xa67d('0x24')]['setContext']=function(_0x1e7009){return this[_0xa67d('0x22')](util['format']('SET\x20CONTEXT\x20%s',_0x1e7009));};AGIChannel[_0xa67d('0x24')][_0xa67d('0x2d')]=function(_0x48df0d){return this[_0xa67d('0x22')](util[_0xa67d('0x29')]('SET\x20EXTENSION\x20%s',_0x48df0d));};AGIChannel[_0xa67d('0x24')][_0xa67d('0x2e')]=function(_0x47f454){return this[_0xa67d('0x22')](util[_0xa67d('0x29')](_0xa67d('0x2f'),_0x47f454));};AGIChannel['prototype'][_0xa67d('0x9')]=function(){return this[_0xa67d('0x22')]('HANGUP');};AGIChannel[_0xa67d('0x24')][_0xa67d('0x30')]=function(_0x13ba80,_0x356229){var _0x4d5e85=_[_0xa67d('0x31')](_0x356229)||_['isNumber'](_0x356229)?_0x356229['toString']():_0x356229;return this[_0xa67d('0x22')](util[_0xa67d('0x29')]('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x13ba80,_0x4d5e85?_0x4d5e85[_0xa67d('0x32')]()[_0xa67d('0x10')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xa67d('0x24')]['sayNumber']=function(_0x2e92a1,_0xc2e9ad){return this['sendRequest'](util[_0xa67d('0x29')](_0xa67d('0x33'),_0x2e92a1,_0xc2e9ad));};AGIChannel['prototype'][_0xa67d('0x34')]=function(_0x455476,_0xb6b85f){return this[_0xa67d('0x22')](util[_0xa67d('0x29')](_0xa67d('0x35'),_0x455476,_0xb6b85f));};AGIChannel[_0xa67d('0x24')][_0xa67d('0x36')]=function(_0x21bbd2,_0x161936){return this['sendRequest'](util[_0xa67d('0x29')](_0xa67d('0x37'),_0x21bbd2,_0x161936));};AGIChannel[_0xa67d('0x24')][_0xa67d('0x38')]=function(_0x7fc7be,_0x2a9b7d,_0x25b6a0){_0x2a9b7d=_0x2a9b7d||this[_0xa67d('0x39')];_0x25b6a0=_0x25b6a0||0x1;this[_0xa67d('0x3a')](_0x7fc7be);this[_0xa67d('0x2d')](_0x2a9b7d);this[_0xa67d('0x2e')](_0x25b6a0);return this[_0xa67d('0x27')](util['format']('GOTO\x20%s\x20%s\x20%s',_0x7fc7be,_0x2a9b7d,_0x25b6a0));};AGIChannel[_0xa67d('0x24')][_0xa67d('0x3b')]=function(_0x369293){return this[_0xa67d('0x22')](util[_0xa67d('0x29')](_0xa67d('0x3c'),_0x369293));};AGIChannel[_0xa67d('0x24')][_0xa67d('0x3d')]=function(_0xa1c44,_0x334816,_0x46317d,_0x3ac677,_0x41d54d,_0x67b63f){_0x334816=_0x334816||_0xa67d('0x3e');_0x46317d=_0x46317d||'';_0x3ac677=_0x3ac677===undefined?-0x1:_0x3ac677==='-1'?-0x1:_0x3ac677*0x3e8;_0x41d54d=_0x41d54d===undefined?'':'s='+_0x41d54d;_0x67b63f=_0x67b63f?_0xa67d('0x3f'):'';return this[_0xa67d('0x22')](util[_0xa67d('0x29')](_0xa67d('0x40'),_0xa1c44,_0x334816,_0x46317d,_0x3ac677,_0x67b63f,_0x41d54d));};AGIChannel[_0xa67d('0x24')]['streamFile']=function(_0x396a62,_0x4e4d20){_0x4e4d20=_0x4e4d20||'';return this[_0xa67d('0x22')](util[_0xa67d('0x29')](_0xa67d('0x41'),_0x396a62,_0x4e4d20));};AGIChannel[_0xa67d('0x24')][_0xa67d('0x42')]=function(_0x4d4e3d){return this['exec'](_0xa67d('0x43'),_0x4d4e3d);};AGIChannel[_0xa67d('0x24')]['wait']=function(_0x20b427){return this[_0xa67d('0x44')](_0xa67d('0x45'),_0x20b427);};AGIChannel['prototype']['error']=function(_0x212712,_0x1cabea){this[_0xa67d('0x27')](util[_0xa67d('0x29')](_0xa67d('0x46'),_0x212712['id'],_0x212712[_0xa67d('0x47')],_0x1cabea));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xa67d('0x48')]=AGIChannel;
\ No newline at end of file
index 322fcd4..4247450 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a5c=['Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','E_AGI_UNDEFINED','push','format','message','name','exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.'];(function(_0x5e13ff,_0x185b85){var _0x2ee25a=function(_0x5cef2a){while(--_0x5cef2a){_0x5e13ff['push'](_0x5e13ff['shift']());}};_0x2ee25a(++_0x185b85);}(_0x9a5c,0x129));var _0xc9a5=function(_0xcbb309,_0x427aa9){_0xcbb309=_0xcbb309-0x0;var _0x679e5f=_0x9a5c[_0xcbb309];return _0x679e5f;};'use strict';var util=require(_0xc9a5('0x0'));var error={'E_AGI_UNDEFINED':_0xc9a5('0x1'),'E_AGI_ARGUMENT_PORT':_0xc9a5('0x2'),'E_AGI_SERVER_ERROR':_0xc9a5('0x3'),'E_AGI_SERVER_CLOSE':'Server\x20closed.','E_AGI_SERVER_MAXCONNECTION':_0xc9a5('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0xc9a5('0x5'),'E_AGI_SOCKET_ERROR':_0xc9a5('0x6'),'E_AGI_SOCKET_CLOSE':_0xc9a5('0x7'),'E_AGI_SOCKET_TIMEOUT':_0xc9a5('0x8'),'E_AGI_COMMAND_EMPTY':_0xc9a5('0x9'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0xdb4b6c){var _0xdb4b6c=_0xdb4b6c||null,_0x702f9b=_0x702f9b||[],_0x1825f8=0x1,_0x1d61b8='';if(!error[_0xdb4b6c]){_0xdb4b6c=_0xc9a5('0xa');}_0x702f9b[_0xc9a5('0xb')](error[_0xdb4b6c]);while(arguments[_0x1825f8]){_0x702f9b[_0xc9a5('0xb')](arguments[_0x1825f8]);_0x1825f8++;}_0x1d61b8=util[_0xc9a5('0xc')]['apply'](util,_0x702f9b);this[_0xc9a5('0xd')]=_0x1d61b8;this[_0xc9a5('0xe')]=_0xdb4b6c;}module[_0xc9a5('0xf')]=AGIError;
\ No newline at end of file
+var _0x7f26=['apply','message','name','exports','util','Undefined\x20error.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0x7f26,0x144));var _0x67f2=function(_0x2e88d4,_0x1ff29f){_0x2e88d4=_0x2e88d4-0x0;var _0x5372c9=_0x7f26[_0x2e88d4];return _0x5372c9;};'use strict';var util=require(_0x67f2('0x0'));var error={'E_AGI_UNDEFINED':_0x67f2('0x1'),'E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':_0x67f2('0x2'),'E_AGI_SERVER_CLOSE':_0x67f2('0x3'),'E_AGI_SERVER_MAXCONNECTION':_0x67f2('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0x67f2('0x5'),'E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':'Socket\x20closed.','E_AGI_SOCKET_TIMEOUT':_0x67f2('0x6'),'E_AGI_COMMAND_EMPTY':_0x67f2('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0x67f2('0x8')};function AGIError(_0x226b4e){var _0x226b4e=_0x226b4e||null,_0x348bb4=_0x348bb4||[],_0x5870e6=0x1,_0x3c3151='';if(!error[_0x226b4e]){_0x226b4e=_0x67f2('0x9');}_0x348bb4[_0x67f2('0xa')](error[_0x226b4e]);while(arguments[_0x5870e6]){_0x348bb4[_0x67f2('0xa')](arguments[_0x5870e6]);_0x5870e6++;}_0x3c3151=util[_0x67f2('0xb')][_0x67f2('0xc')](util,_0x348bb4);this[_0x67f2('0xd')]=_0x3c3151;this[_0x67f2('0xe')]=_0x226b4e;}module[_0x67f2('0xf')]=AGIError;
\ No newline at end of file
index 6c4cacc..f7ef63e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b52=['numberOfEdges','prototype','addVertex','addEdge','push','size','relations','getVertex','traverseBFS','info','no\x20vertex\x20found','length','no\x20edge/s\x20available','condition','split','agicommand','vswitch','target','default','default\x20on\x20switch\x20not\x20found','includes','condition\x20not\x20found','exports','lodash','../../../config/logger','menu','getdigits','getsecretdigits','vertices','edges'];(function(_0x20d713,_0x955578){var _0xc4f054=function(_0x93dec6){while(--_0x93dec6){_0x20d713['push'](_0x20d713['shift']());}};_0xc4f054(++_0x955578);}(_0x5b52,0xad));var _0x25b5=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x5b52[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x25b5('0x0'));var logger=require(_0x25b5('0x1'))('agi');var verticesWithRetry=[_0x25b5('0x2'),_0x25b5('0x3'),_0x25b5('0x4')];var Graph=function(){this[_0x25b5('0x5')]={};this[_0x25b5('0x6')]={};this[_0x25b5('0x7')]=0x0;};Graph[_0x25b5('0x8')][_0x25b5('0x9')]=function(_0x479c53){this[_0x25b5('0x5')][_0x479c53['id']]=_0x479c53;this['edges'][_0x479c53['id']]=[];};Graph[_0x25b5('0x8')][_0x25b5('0xa')]=function(_0x3b9c0e,_0x2651ac,_0x126fde){this[_0x25b5('0x6')][_0x3b9c0e][_0x25b5('0xb')]({'target':_0x2651ac,'condition':_0x126fde});this[_0x25b5('0x7')]+=0x1;};Graph[_0x25b5('0x8')][_0x25b5('0xc')]=function(){return _[_0x25b5('0xc')](this[_0x25b5('0x5')]);};Graph[_0x25b5('0x8')][_0x25b5('0xd')]=function(){return this['numberOfEdges'];};Graph['prototype'][_0x25b5('0xe')]=function(_0xeb147e){return this[_0x25b5('0x5')][_0xeb147e];};Graph[_0x25b5('0x8')][_0x25b5('0xf')]=function(_0x26745f,_0x5f1ede){if(!this[_0x25b5('0x5')][_0x26745f]){return logger[_0x25b5('0x10')](_0x25b5('0x11'));}var _0x359c9b=_0x5f1ede(this[_0x25b5('0x5')][_0x26745f]);if(!_0x359c9b){return logger['info']('stop\x20traverse');}if(this[_0x25b5('0x6')][_0x26745f][_0x25b5('0x12')]===0x0){return logger[_0x25b5('0x10')](_0x25b5('0x13'));}for(var _0x2ca757=0x0,_0x50e6d4=[],_0x2a5a6a=![];_0x2ca757<this[_0x25b5('0x6')][_0x26745f][_0x25b5('0x12')];_0x2ca757+=0x1){if(this[_0x25b5('0x6')][_0x26745f][_0x2ca757][_0x25b5('0x14')]){_0x50e6d4=this['edges'][_0x26745f][_0x2ca757][_0x25b5('0x14')][_0x25b5('0x15')](',');for(var _0x4dd8b1=0x0;_0x4dd8b1<_0x50e6d4[_0x25b5('0x12')];_0x4dd8b1+=0x1){if(this['vertices'][_0x26745f][_0x25b5('0x16')]===_0x25b5('0x17')&&_0x50e6d4[_0x4dd8b1]==='-'){_0x2a5a6a=this[_0x25b5('0x6')][_0x26745f][_0x2ca757][_0x25b5('0x18')];logger[_0x25b5('0x10')](_0x25b5('0x19'),_0x50e6d4[_0x4dd8b1],this['edges'][_0x26745f][_0x2ca757][_0x25b5('0x18')]);}else if(this[_0x25b5('0x5')][_0x26745f][_0x25b5('0x16')]==='menu'&&_0x50e6d4[_0x4dd8b1]==='i'){_0x2a5a6a=this['edges'][_0x26745f][_0x2ca757]['target'];logger[_0x25b5('0x10')]('invalid',_0x50e6d4[_0x4dd8b1],this['edges'][_0x26745f][_0x2ca757][_0x25b5('0x18')]);}if(_0x50e6d4[_0x4dd8b1]===_0x359c9b){return this[_0x25b5('0xf')](this[_0x25b5('0x6')][_0x26745f][_0x2ca757][_0x25b5('0x18')],_0x5f1ede);}}}else{return this[_0x25b5('0xf')](this[_0x25b5('0x6')][_0x26745f][_0x2ca757][_0x25b5('0x18')],_0x5f1ede);}}if(_0x50e6d4[_0x25b5('0x12')]){if(this[_0x25b5('0x5')][_0x26745f][_0x25b5('0x16')]===_0x25b5('0x17')){if(_0x2a5a6a){return this[_0x25b5('0xf')](_0x2a5a6a,_0x5f1ede);}return logger[_0x25b5('0x10')](_0x25b5('0x1a'));}else if(_[_0x25b5('0x1b')](verticesWithRetry,this['vertices'][_0x26745f][_0x25b5('0x16')])){if(_0x359c9b==='-'){return logger[_0x25b5('0x10')]('max\x20retry\x20reach');}if(_0x2a5a6a&&_0x359c9b!=='t'){return this['traverseBFS'](_0x2a5a6a,_0x5f1ede);}return this[_0x25b5('0xf')](_0x26745f,_0x5f1ede);}return logger[_0x25b5('0x10')](_0x25b5('0x1c'));}};module[_0x25b5('0x1d')]=Graph;
\ No newline at end of file
+var _0x53e6=['traverseBFS','no\x20vertex\x20found','info','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','agicommand','target','default','invalid','vswitch','default\x20on\x20switch\x20not\x20found','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','getdigits','getsecretdigits','vertices','edges','prototype','push','size','relations','numberOfEdges','getVertex'];(function(_0xe36c7d,_0x1962c8){var _0x3485e4=function(_0x298422){while(--_0x298422){_0xe36c7d['push'](_0xe36c7d['shift']());}};_0x3485e4(++_0x1962c8);}(_0x53e6,0xbf));var _0x653e=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x53e6[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x653e('0x0'));var logger=require(_0x653e('0x1'))('agi');var verticesWithRetry=['menu',_0x653e('0x2'),_0x653e('0x3')];var Graph=function(){this[_0x653e('0x4')]={};this[_0x653e('0x5')]={};this['numberOfEdges']=0x0;};Graph[_0x653e('0x6')]['addVertex']=function(_0x9e8c48){this[_0x653e('0x4')][_0x9e8c48['id']]=_0x9e8c48;this[_0x653e('0x5')][_0x9e8c48['id']]=[];};Graph[_0x653e('0x6')]['addEdge']=function(_0x2fb2b1,_0x50ca67,_0x3954fe){this[_0x653e('0x5')][_0x2fb2b1][_0x653e('0x7')]({'target':_0x50ca67,'condition':_0x3954fe});this['numberOfEdges']+=0x1;};Graph[_0x653e('0x6')]['size']=function(){return _[_0x653e('0x8')](this['vertices']);};Graph[_0x653e('0x6')][_0x653e('0x9')]=function(){return this[_0x653e('0xa')];};Graph['prototype'][_0x653e('0xb')]=function(_0x19a661){return this[_0x653e('0x4')][_0x19a661];};Graph[_0x653e('0x6')][_0x653e('0xc')]=function(_0x15e781,_0x1d7a5a){if(!this[_0x653e('0x4')][_0x15e781]){return logger['info'](_0x653e('0xd'));}var _0x281efa=_0x1d7a5a(this['vertices'][_0x15e781]);if(!_0x281efa){return logger[_0x653e('0xe')](_0x653e('0xf'));}if(this[_0x653e('0x5')][_0x15e781][_0x653e('0x10')]===0x0){return logger[_0x653e('0xe')](_0x653e('0x11'));}for(var _0x21c959=0x0,_0x4ac05d=[],_0x120d49=![];_0x21c959<this[_0x653e('0x5')][_0x15e781][_0x653e('0x10')];_0x21c959+=0x1){if(this[_0x653e('0x5')][_0x15e781][_0x21c959][_0x653e('0x12')]){_0x4ac05d=this[_0x653e('0x5')][_0x15e781][_0x21c959][_0x653e('0x12')][_0x653e('0x13')](',');for(var _0x53832b=0x0;_0x53832b<_0x4ac05d[_0x653e('0x10')];_0x53832b+=0x1){if(this[_0x653e('0x4')][_0x15e781][_0x653e('0x14')]==='vswitch'&&_0x4ac05d[_0x53832b]==='-'){_0x120d49=this[_0x653e('0x5')][_0x15e781][_0x21c959][_0x653e('0x15')];logger[_0x653e('0xe')](_0x653e('0x16'),_0x4ac05d[_0x53832b],this[_0x653e('0x5')][_0x15e781][_0x21c959][_0x653e('0x15')]);}else if(this[_0x653e('0x4')][_0x15e781][_0x653e('0x14')]==='menu'&&_0x4ac05d[_0x53832b]==='i'){_0x120d49=this['edges'][_0x15e781][_0x21c959][_0x653e('0x15')];logger[_0x653e('0xe')](_0x653e('0x17'),_0x4ac05d[_0x53832b],this[_0x653e('0x5')][_0x15e781][_0x21c959][_0x653e('0x15')]);}if(_0x4ac05d[_0x53832b]===_0x281efa){return this[_0x653e('0xc')](this['edges'][_0x15e781][_0x21c959][_0x653e('0x15')],_0x1d7a5a);}}}else{return this[_0x653e('0xc')](this[_0x653e('0x5')][_0x15e781][_0x21c959][_0x653e('0x15')],_0x1d7a5a);}}if(_0x4ac05d[_0x653e('0x10')]){if(this[_0x653e('0x4')][_0x15e781]['agicommand']===_0x653e('0x18')){if(_0x120d49){return this[_0x653e('0xc')](_0x120d49,_0x1d7a5a);}return logger[_0x653e('0xe')](_0x653e('0x19'));}else if(_['includes'](verticesWithRetry,this['vertices'][_0x15e781][_0x653e('0x14')])){if(_0x281efa==='-'){return logger[_0x653e('0xe')](_0x653e('0x1a'));}if(_0x120d49&&_0x281efa!=='t'){return this[_0x653e('0xc')](_0x120d49,_0x1d7a5a);}return this[_0x653e('0xc')](_0x15e781,_0x1d7a5a);}return logger[_0x653e('0xe')](_0x653e('0x1b'));}};module[_0x653e('0x1c')]=Graph;
\ No newline at end of file
index 2372aaa..1433604 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5322=['stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','hangup','production','debug','YYYY-MM-DD\x20HH:mm:ss','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','start','clear','agicommand','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','code','response','isUndefined','result','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','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','close','Project\x20%s\x20not\x20found','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','./server','listening','xml2json','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','nextTick','error','stack','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','message','[%s]\x20%s','name','[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','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','root','hasOwnProperty','maxRetry','retry','addVertex','omit','isArray','length','source','then','catch','createSquareReport','indexOf','agi_','substring','inspect','variables'];(function(_0x12c45d,_0x97707a){var _0x4f2a58=function(_0x1a2c78){while(--_0x1a2c78){_0x12c45d['push'](_0x12c45d['shift']());}};_0x4f2a58(++_0x97707a);}(_0x5322,0x166));var _0x2532=function(_0x330141,_0x1dd290){_0x330141=_0x330141-0x0;var _0x1b68a2=_0x5322[_0x330141];return _0x1b68a2;};'use strict';var parser=require(_0x2532('0x0'));var _=require('lodash');var syncho=require('syncho');var util=require('util');var moment=require(_0x2532('0x1'));var config=require(_0x2532('0x2'));var logger=require(_0x2532('0x3'))(_0x2532('0x4'));var utilLicense=require(_0x2532('0x5'));var rpc=require(_0x2532('0x6'));var mailRpc=require(_0x2532('0x7'));var Graph=require(_0x2532('0x8'));var Vertices=require(_0x2532('0x9'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x2532('0x4')]=_['defaults'](config[_0x2532('0x4')],{'ip':'127.0.0.1','port':0x11dd});function connectionHandler(_0x298c94){process[_0x2532('0xa')](function(){syncho(function(){try{setChannelVariables(_0x298c94);agiHandler(_0x298c94);}catch(_0x2a6cd9){logger[_0x2532('0xb')](_0x2a6cd9[_0x2532('0xc')]);}});});}function listeningHandler(){console['log'](_0x2532('0xd'),config[_0x2532('0x4')][_0x2532('0xe')]);logger[_0x2532('0xf')](util[_0x2532('0x10')](_0x2532('0x11'),config[_0x2532('0x4')]['ip'],config[_0x2532('0x4')]['port']));}function errorHandler(_0x154057){if(_0x154057&&_0x154057['name']&&_0x154057[_0x2532('0x12')]){logger[_0x2532('0xb')](util['format'](_0x2532('0x13'),_0x154057[_0x2532('0x14')],_0x154057[_0x2532('0x12')]));}else{logger['error'](util['format']('[ERROR]\x20%s',_0x154057[_0x2532('0xc')]));}}function closeHandler(){logger[_0x2532('0xf')](util[_0x2532('0x10')](_0x2532('0x15'),this[_0x2532('0x16')],this[_0x2532('0x17')],this[_0x2532('0x18')],this[_0x2532('0x19')],this[_0x2532('0x1a')]));try{createSquareReport(this);}catch(_0x1b74f0){logger[_0x2532('0xb')](_0x1b74f0[_0x2532('0xc')]);}}function timeoutHandler(){logger[_0x2532('0xf')](util[_0x2532('0x10')](_0x2532('0x1b'),this['arg_1'],this[_0x2532('0x17')],this[_0x2532('0x18')],this[_0x2532('0x19')],this[_0x2532('0x1a')]));}function hangupHandler(){logger[_0x2532('0xf')](util[_0x2532('0x10')](_0x2532('0x1c'),this[_0x2532('0x16')],this['calleridname'],this[_0x2532('0x18')],this[_0x2532('0x19')],this[_0x2532('0x1a')]));this[_0x2532('0x1d')]=!![];}function getRoot(_0xadff03){return parser['toJson'](_0xadff03,{'object':!![]})['mxGraphModel'][_0x2532('0x1e')];}function addVertex(_0x4a19c6,_0x3ff095,_0x1c5bf3){_0x3ff095['agicommand']=_0x1c5bf3;if(_0x3ff095[_0x2532('0x1f')]('retry')){_0x3ff095[_0x2532('0x20')]=parseInt(_0x3ff095[_0x2532('0x21')],0xa);}_0x4a19c6[_0x2532('0x22')](_[_0x2532('0x23')](_0x3ff095,'mxCell'));}function initGraph(_0x3583c1,_0x2b4b0c){var _0xa7b7e3=new Graph();for(var _0x21cfd1 in _0x3583c1){if(_0x3583c1[_0x2532('0x1f')](_0x21cfd1)){if(_[_0x2532('0x24')](_0x3583c1[_0x21cfd1])){for(var _0x5d5c3f=0x0;_0x5d5c3f<_0x3583c1[_0x21cfd1][_0x2532('0x25')];_0x5d5c3f+=0x1){addVertex(_0xa7b7e3,_0x3583c1[_0x21cfd1][_0x5d5c3f],_0x21cfd1);}}else{addVertex(_0xa7b7e3,_0x3583c1[_0x21cfd1],_0x21cfd1);}}}for(var _0x58880a=0x0;_0x58880a<_0x2b4b0c['length'];_0x58880a+=0x1){if(_0x2b4b0c[_0x58880a][_0x2532('0x26')]&&_0x2b4b0c[_0x58880a]['target']){_0xa7b7e3['addEdge'](_0x2b4b0c[_0x58880a]['source'],_0x2b4b0c[_0x58880a]['target'],_0x2b4b0c[_0x58880a]['value']);}}return _0xa7b7e3;}function getSquareProject(_0x3def7d,_0x1257df){rpc['getSquareProject'](_0x3def7d)[_0x2532('0x27')](function(_0x46855c){_0x1257df(null,_0x46855c);})[_0x2532('0x28')](function(_0x251c33){_0x1257df(null,_0x251c33);});}function createSquareReport(_0x205f62,_0x366843){rpc[_0x2532('0x29')](_0x205f62)[_0x2532('0x27')](function(_0x3fdce3){if(_0x366843){_0x366843(null,_0x3fdce3);}})[_0x2532('0x28')](function(_0x2207cb){if(_0x366843){_0x366843(null,_0x2207cb);}});}function setChannelVariables(_0x5eb93e){for(var _0x133a9e in _0x5eb93e){if(_0x5eb93e[_0x2532('0x1f')](_0x133a9e)){if(_0x133a9e[_0x2532('0x2a')](_0x2532('0x2b'))===0x0){_0x5eb93e[_0x133a9e[_0x2532('0x2c')](0x4)]=_0x5eb93e[_0x133a9e];delete _0x5eb93e[_0x133a9e];}}}}function getLogFromObject(_0x47d6d0){return util[_0x2532('0x2d')](_0x47d6d0,{'showHidden':![],'depth':null});}function agiHandler(_0x3aff4f){var _0x42bb87,_0x46dda1,_0x59b887,_0x28563e,_0x40c2b9;logger['debug'](_0x2532('0x2e'),JSON[_0x2532('0x2f')](_0x3aff4f,null,0x2));logger['info'](util['format'](_0x2532('0x30'),_0x3aff4f[_0x2532('0x16')],_0x3aff4f[_0x2532('0x17')],_0x3aff4f[_0x2532('0x18')],_0x3aff4f[_0x2532('0x19')],_0x3aff4f[_0x2532('0x1a')]));_0x3aff4f['on'](_0x2532('0xb'),errorHandler);_0x3aff4f['on']('close',closeHandler);_0x3aff4f['on']('timeout',timeoutHandler);_0x3aff4f[_0x2532('0x1d')]=![];_0x3aff4f['on'](_0x2532('0x31'),hangupHandler);var _0x3f1138=getSquareProject['sync'](null,_0x3aff4f[_0x2532('0x16')]);if(_0x3f1138){if(_0x3f1138[_0x2532('0x32')]){_0x42bb87=getRoot(_0x3f1138[_0x2532('0x32')]);if(_0x42bb87&&_0x42bb87['start']){logger[_0x2532('0x33')](_0x2532('0x1e'),JSON[_0x2532('0x2f')](_0x42bb87,null,0x2));_0x3aff4f['joinAt']=moment()[_0x2532('0x10')](_0x2532('0x34'));_0x46dda1=initGraph(_['omit'](_0x42bb87,'mxCell'),_0x42bb87[_0x2532('0x35')]);_0x59b887=new Vertices(_0x3aff4f,rpc,mailRpc);logger['info'](util[_0x2532('0x10')](_0x2532('0x36'),_0x3aff4f[_0x2532('0x16')],_0x3aff4f['calleridname'],_0x3aff4f[_0x2532('0x18')],_0x3aff4f[_0x2532('0x19')],_0x3aff4f['uniqueid']));_0x46dda1[_0x2532('0x37')](_0x42bb87[_0x2532('0x38')]['id'],function(_0x1feb0e){try{_0x1feb0e=_0x59b887[_0x2532('0x39')](_0x1feb0e);logger['debug']('vertex',JSON[_0x2532('0x2f')](_0x1feb0e,null,0x2));if(_0x1feb0e[_0x2532('0x3a')]==='gotoc'){logger['info'](_0x2532('0x3b'));_0x3aff4f[_0x2532('0x3c')]=_0x1feb0e['context']||_0x3aff4f['context'];_0x3aff4f[_0x2532('0x3d')]=_0x1feb0e[_0x2532('0x3d')];_0x3aff4f[_0x2532('0x3e')]=_0x1feb0e['priority']?_0x1feb0e[_0x2532('0x3e')]-0x1:0x1;return null;}else if(_0x1feb0e&&_0x59b887[_0x1feb0e[_0x2532('0x3a')]]){_0x40c2b9=_0x59b887[_0x1feb0e[_0x2532('0x3a')]](_0x1feb0e);logger[_0x2532('0xf')]('response',JSON['stringify'](_0x40c2b9,null,0x2));if(_0x40c2b9&&_0x40c2b9[_0x2532('0x3f')]===AGI_CODE_SUCCESS&&_0x40c2b9['result']!==AGI_RESULT_ERROR&&!_0x3aff4f['evtHangup']){logger['debug'](_0x2532('0x40'),getLogFromObject(_0x40c2b9));return _[_0x2532('0x41')](_0x40c2b9[_0x2532('0x42')])?null:_0x40c2b9['result']['toString']();}else{logger[_0x2532('0xb')](_0x2532('0x40'),getLogFromObject(_0x40c2b9));return null;}}else{logger['error'](_0x2532('0x43'));return null;}}catch(_0x2a1072){logger[_0x2532('0xb')](_0x2a1072[_0x2532('0xc')]);return null;}});if(_0x42bb87[_0x2532('0x44')]){logger['info'](util['format'](_0x2532('0x45'),_0x3aff4f['arg_1'],_0x3aff4f['calleridname'],_0x3aff4f['callerid'],_0x3aff4f[_0x2532('0x19')],_0x3aff4f[_0x2532('0x1a')]));_0x46dda1[_0x2532('0x37')](_0x42bb87[_0x2532('0x44')]['id'],function(_0x4c1815){try{_0x4c1815=_0x59b887[_0x2532('0x39')](_0x4c1815);logger[_0x2532('0x33')]('vertex',JSON['stringify'](_0x4c1815,null,0x2));if(_0x4c1815&&_0x59b887[_0x4c1815[_0x2532('0x3a')]]){_0x40c2b9=_0x59b887[_0x4c1815[_0x2532('0x3a')]](_0x4c1815);if(_0x40c2b9){logger[_0x2532('0x33')](_0x2532('0x40'),getLogFromObject(_0x40c2b9));return _['isUndefined'](_0x40c2b9[_0x2532('0x42')])?null:_0x40c2b9[_0x2532('0x42')]['toString']();}else{logger['error'](_0x2532('0x40'),getLogFromObject(_0x40c2b9));return null;}}else{logger[_0x2532('0xb')](_0x2532('0x43'));return null;}}catch(_0x260901){logger[_0x2532('0xb')](_0x260901['stack']);return null;}});}logger[_0x2532('0xf')](util[_0x2532('0x10')](_0x2532('0x46'),_0x3aff4f['arg_1'],_0x3aff4f[_0x2532('0x17')],_0x3aff4f[_0x2532('0x18')],_0x3aff4f[_0x2532('0x19')],_0x3aff4f[_0x2532('0x1a')]));logger[_0x2532('0xf')](util[_0x2532('0x10')](_0x2532('0x47'),_0x3aff4f[_0x2532('0x3c')],_0x3aff4f[_0x2532('0x3d')],parseInt(_0x3aff4f[_0x2532('0x3e')],0xa)+0x1));_0x3aff4f[_0x2532('0x48')](_0x3aff4f[_0x2532('0x3c')],_0x3aff4f[_0x2532('0x3d')],parseInt(_0x3aff4f[_0x2532('0x3e')],0xa)+0x1);_0x3aff4f[_0x2532('0x49')]();}}else{logger['error'](util['format']('Project\x20%s\x20not\x20published',_0x3aff4f[_0x2532('0x16')]));_0x3aff4f['continueAt'](_0x3aff4f[_0x2532('0x3c')],_0x3aff4f[_0x2532('0x3d')],parseInt(_0x3aff4f['priority'],0xa)+0x1);_0x3aff4f['close']();}}else{logger[_0x2532('0xb')](util[_0x2532('0x10')](_0x2532('0x4a'),_0x3aff4f[_0x2532('0x16')]));_0x3aff4f[_0x2532('0x48')](_0x3aff4f[_0x2532('0x3c')],_0x3aff4f[_0x2532('0x3d')],parseInt(_0x3aff4f[_0x2532('0x3e')],0xa)+0x1);_0x3aff4f[_0x2532('0x49')]();}}function main(){var _0x5e6ea8;return utilLicense['getLicense']()[_0x2532('0x27')](function(_0xb5688){if(_0xb5688){if(_0xb5688['voice']){if(_0xb5688['callysquare']&&_0xb5688[_0x2532('0x4b')]>0x0){logger[_0x2532('0xf')](util[_0x2532('0x10')](_0x2532('0x4c'),_0xb5688[_0x2532('0x4b')]));_0x5e6ea8=_0xb5688[_0x2532('0x4b')];}else{logger[_0x2532('0xf')](_0x2532('0x4d'));}}else{logger[_0x2532('0xf')](_0x2532('0x4e'));_0x5e6ea8=-0x1;}}})[_0x2532('0x28')](function(_0x6be0a2){logger[_0x2532('0xb')]('[LICENSE]',_0x6be0a2['stack']);})['finally'](function(){var _0x4b3f2f=require(_0x2532('0x4f'))(config[_0x2532('0x4')]['port'],config[_0x2532('0x4')]['ip'],_0x5e6ea8);_0x4b3f2f['on'](_0x2532('0xb'),errorHandler);_0x4b3f2f['on'](_0x2532('0x50'),listeningHandler);_0x4b3f2f['on']('connection',connectionHandler);_0x4b3f2f['on']('close',closeHandler);});}main();
\ No newline at end of file
+var _0x5ddb=['[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','production','start','joinAt','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','context','extension','priority','code','result','response','isUndefined','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','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20found','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','./server','listening','connection','xml2json','syncho','util','../../config/logger','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','agi','defaults','127.0.0.1','nextTick','error','stack','log','port','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','format','[%s]\x20%s','[ERROR]\x20%s','info','[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','[HANGUP]\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','omit','mxCell','isArray','length','source','target','addEdge','value','getSquareProject','then','catch','createSquareReport','indexOf','substring','inspect','debug','variables','stringify'];(function(_0x58ad56,_0x495cc7){var _0xcd8ac9=function(_0x43266c){while(--_0x43266c){_0x58ad56['push'](_0x58ad56['shift']());}};_0xcd8ac9(++_0x495cc7);}(_0x5ddb,0x1ee));var _0xb5dd=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x5ddb[_0x465028];return _0xb783d4;};'use strict';var parser=require(_0xb5dd('0x0'));var _=require('lodash');var syncho=require(_0xb5dd('0x1'));var util=require(_0xb5dd('0x2'));var moment=require('moment');var config=require('../../config/environment');var logger=require(_0xb5dd('0x3'))('agi');var utilLicense=require(_0xb5dd('0x4'));var rpc=require(_0xb5dd('0x5'));var mailRpc=require(_0xb5dd('0x6'));var Graph=require(_0xb5dd('0x7'));var Vertices=require(_0xb5dd('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xb5dd('0x9')]=_[_0xb5dd('0xa')](config['agi'],{'ip':_0xb5dd('0xb'),'port':0x11dd});function connectionHandler(_0x313561){process[_0xb5dd('0xc')](function(){syncho(function(){try{setChannelVariables(_0x313561);agiHandler(_0x313561);}catch(_0x47b565){logger[_0xb5dd('0xd')](_0x47b565[_0xb5dd('0xe')]);}});});}function listeningHandler(){console[_0xb5dd('0xf')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config['agi'][_0xb5dd('0x10')]);logger['info'](util['format'](_0xb5dd('0x11'),config[_0xb5dd('0x9')]['ip'],config[_0xb5dd('0x9')][_0xb5dd('0x10')]));}function errorHandler(_0x14cb4a){if(_0x14cb4a&&_0x14cb4a[_0xb5dd('0x12')]&&_0x14cb4a[_0xb5dd('0x13')]){logger[_0xb5dd('0xd')](util[_0xb5dd('0x14')](_0xb5dd('0x15'),_0x14cb4a[_0xb5dd('0x12')],_0x14cb4a['message']));}else{logger[_0xb5dd('0xd')](util[_0xb5dd('0x14')](_0xb5dd('0x16'),_0x14cb4a[_0xb5dd('0xe')]));}}function closeHandler(){logger[_0xb5dd('0x17')](util[_0xb5dd('0x14')](_0xb5dd('0x18'),this[_0xb5dd('0x19')],this[_0xb5dd('0x1a')],this[_0xb5dd('0x1b')],this[_0xb5dd('0x1c')],this[_0xb5dd('0x1d')]));try{createSquareReport(this);}catch(_0x273d5a){logger['error'](_0x273d5a[_0xb5dd('0xe')]);}}function timeoutHandler(){logger['info'](util[_0xb5dd('0x14')](_0xb5dd('0x1e'),this[_0xb5dd('0x19')],this[_0xb5dd('0x1a')],this[_0xb5dd('0x1b')],this[_0xb5dd('0x1c')],this[_0xb5dd('0x1d')]));}function hangupHandler(){logger[_0xb5dd('0x17')](util['format'](_0xb5dd('0x1f'),this['arg_1'],this[_0xb5dd('0x1a')],this['callerid'],this[_0xb5dd('0x1c')],this['uniqueid']));this[_0xb5dd('0x20')]=!![];}function getRoot(_0x42287c){return parser[_0xb5dd('0x21')](_0x42287c,{'object':!![]})[_0xb5dd('0x22')][_0xb5dd('0x23')];}function addVertex(_0x389fd6,_0x417c94,_0x4332f3){_0x417c94[_0xb5dd('0x24')]=_0x4332f3;if(_0x417c94[_0xb5dd('0x25')](_0xb5dd('0x26'))){_0x417c94[_0xb5dd('0x27')]=parseInt(_0x417c94['retry'],0xa);}_0x389fd6['addVertex'](_[_0xb5dd('0x28')](_0x417c94,_0xb5dd('0x29')));}function initGraph(_0xfaebcb,_0x17c900){var _0x40b099=new Graph();for(var _0x423718 in _0xfaebcb){if(_0xfaebcb[_0xb5dd('0x25')](_0x423718)){if(_[_0xb5dd('0x2a')](_0xfaebcb[_0x423718])){for(var _0x3ae1f8=0x0;_0x3ae1f8<_0xfaebcb[_0x423718][_0xb5dd('0x2b')];_0x3ae1f8+=0x1){addVertex(_0x40b099,_0xfaebcb[_0x423718][_0x3ae1f8],_0x423718);}}else{addVertex(_0x40b099,_0xfaebcb[_0x423718],_0x423718);}}}for(var _0xc4d670=0x0;_0xc4d670<_0x17c900['length'];_0xc4d670+=0x1){if(_0x17c900[_0xc4d670][_0xb5dd('0x2c')]&&_0x17c900[_0xc4d670][_0xb5dd('0x2d')]){_0x40b099[_0xb5dd('0x2e')](_0x17c900[_0xc4d670][_0xb5dd('0x2c')],_0x17c900[_0xc4d670][_0xb5dd('0x2d')],_0x17c900[_0xc4d670][_0xb5dd('0x2f')]);}}return _0x40b099;}function getSquareProject(_0x390218,_0x41033f){rpc[_0xb5dd('0x30')](_0x390218)[_0xb5dd('0x31')](function(_0x34a54f){_0x41033f(null,_0x34a54f);})[_0xb5dd('0x32')](function(_0x4e96f4){_0x41033f(null,_0x4e96f4);});}function createSquareReport(_0xae46b2,_0x5d8a70){rpc[_0xb5dd('0x33')](_0xae46b2)[_0xb5dd('0x31')](function(_0x1d2f28){if(_0x5d8a70){_0x5d8a70(null,_0x1d2f28);}})[_0xb5dd('0x32')](function(_0x186210){if(_0x5d8a70){_0x5d8a70(null,_0x186210);}});}function setChannelVariables(_0x47ddaa){for(var _0x56e2dd in _0x47ddaa){if(_0x47ddaa[_0xb5dd('0x25')](_0x56e2dd)){if(_0x56e2dd[_0xb5dd('0x34')]('agi_')===0x0){_0x47ddaa[_0x56e2dd[_0xb5dd('0x35')](0x4)]=_0x47ddaa[_0x56e2dd];delete _0x47ddaa[_0x56e2dd];}}}}function getLogFromObject(_0xfe830){return util[_0xb5dd('0x36')](_0xfe830,{'showHidden':![],'depth':null});}function agiHandler(_0x573f52){var _0x4b9231,_0x18b2b7,_0x104545,_0x283cb7,_0x1ebcb8;logger[_0xb5dd('0x37')](_0xb5dd('0x38'),JSON[_0xb5dd('0x39')](_0x573f52,null,0x2));logger[_0xb5dd('0x17')](util[_0xb5dd('0x14')](_0xb5dd('0x3a'),_0x573f52['arg_1'],_0x573f52['calleridname'],_0x573f52[_0xb5dd('0x1b')],_0x573f52[_0xb5dd('0x1c')],_0x573f52[_0xb5dd('0x1d')]));_0x573f52['on']('error',errorHandler);_0x573f52['on'](_0xb5dd('0x3b'),closeHandler);_0x573f52['on'](_0xb5dd('0x3c'),timeoutHandler);_0x573f52[_0xb5dd('0x20')]=![];_0x573f52['on'](_0xb5dd('0x3d'),hangupHandler);var _0x185a28=getSquareProject['sync'](null,_0x573f52[_0xb5dd('0x19')]);if(_0x185a28){if(_0x185a28['production']){_0x4b9231=getRoot(_0x185a28[_0xb5dd('0x3e')]);if(_0x4b9231&&_0x4b9231[_0xb5dd('0x3f')]){logger[_0xb5dd('0x37')](_0xb5dd('0x23'),JSON[_0xb5dd('0x39')](_0x4b9231,null,0x2));_0x573f52[_0xb5dd('0x40')]=moment()[_0xb5dd('0x14')](_0xb5dd('0x41'));_0x18b2b7=initGraph(_['omit'](_0x4b9231,'mxCell'),_0x4b9231[_0xb5dd('0x29')]);_0x104545=new Vertices(_0x573f52,rpc,mailRpc);logger[_0xb5dd('0x17')](util[_0xb5dd('0x14')](_0xb5dd('0x42'),_0x573f52['arg_1'],_0x573f52[_0xb5dd('0x1a')],_0x573f52['callerid'],_0x573f52[_0xb5dd('0x1c')],_0x573f52[_0xb5dd('0x1d')]));_0x18b2b7[_0xb5dd('0x43')](_0x4b9231['start']['id'],function(_0x413236){try{_0x413236=_0x104545[_0xb5dd('0x44')](_0x413236);logger['debug'](_0xb5dd('0x45'),JSON[_0xb5dd('0x39')](_0x413236,null,0x2));if(_0x413236[_0xb5dd('0x24')]===_0xb5dd('0x46')){logger[_0xb5dd('0x17')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x573f52[_0xb5dd('0x47')]=_0x413236[_0xb5dd('0x47')]||_0x573f52['context'];_0x573f52[_0xb5dd('0x48')]=_0x413236[_0xb5dd('0x48')];_0x573f52[_0xb5dd('0x49')]=_0x413236[_0xb5dd('0x49')]?_0x413236[_0xb5dd('0x49')]-0x1:0x1;return null;}else if(_0x413236&&_0x104545[_0x413236[_0xb5dd('0x24')]]){_0x1ebcb8=_0x104545[_0x413236[_0xb5dd('0x24')]](_0x413236);logger[_0xb5dd('0x17')]('response',JSON[_0xb5dd('0x39')](_0x1ebcb8,null,0x2));if(_0x1ebcb8&&_0x1ebcb8[_0xb5dd('0x4a')]===AGI_CODE_SUCCESS&&_0x1ebcb8[_0xb5dd('0x4b')]!==AGI_RESULT_ERROR&&!_0x573f52[_0xb5dd('0x20')]){logger['debug'](_0xb5dd('0x4c'),getLogFromObject(_0x1ebcb8));return _[_0xb5dd('0x4d')](_0x1ebcb8[_0xb5dd('0x4b')])?null:_0x1ebcb8[_0xb5dd('0x4b')][_0xb5dd('0x4e')]();}else{logger[_0xb5dd('0xd')](_0xb5dd('0x4c'),getLogFromObject(_0x1ebcb8));return null;}}else{logger[_0xb5dd('0xd')](_0xb5dd('0x4f'));return null;}}catch(_0xf55e8b){logger[_0xb5dd('0xd')](_0xf55e8b['stack']);return null;}});if(_0x4b9231[_0xb5dd('0x50')]){logger['info'](util[_0xb5dd('0x14')](_0xb5dd('0x51'),_0x573f52[_0xb5dd('0x19')],_0x573f52[_0xb5dd('0x1a')],_0x573f52[_0xb5dd('0x1b')],_0x573f52[_0xb5dd('0x1c')],_0x573f52[_0xb5dd('0x1d')]));_0x18b2b7[_0xb5dd('0x43')](_0x4b9231['finally']['id'],function(_0x299d66){try{_0x299d66=_0x104545['clear'](_0x299d66);logger[_0xb5dd('0x37')](_0xb5dd('0x45'),JSON[_0xb5dd('0x39')](_0x299d66,null,0x2));if(_0x299d66&&_0x104545[_0x299d66[_0xb5dd('0x24')]]){_0x1ebcb8=_0x104545[_0x299d66[_0xb5dd('0x24')]](_0x299d66);if(_0x1ebcb8){logger[_0xb5dd('0x37')](_0xb5dd('0x4c'),getLogFromObject(_0x1ebcb8));return _[_0xb5dd('0x4d')](_0x1ebcb8[_0xb5dd('0x4b')])?null:_0x1ebcb8[_0xb5dd('0x4b')]['toString']();}else{logger['error']('response',getLogFromObject(_0x1ebcb8));return null;}}else{logger['error'](_0xb5dd('0x4f'));return null;}}catch(_0x33670d){logger[_0xb5dd('0xd')](_0x33670d[_0xb5dd('0xe')]);return null;}});}logger[_0xb5dd('0x17')](util[_0xb5dd('0x14')](_0xb5dd('0x52'),_0x573f52[_0xb5dd('0x19')],_0x573f52[_0xb5dd('0x1a')],_0x573f52[_0xb5dd('0x1b')],_0x573f52[_0xb5dd('0x1c')],_0x573f52[_0xb5dd('0x1d')]));logger[_0xb5dd('0x17')](util[_0xb5dd('0x14')](_0xb5dd('0x53'),_0x573f52[_0xb5dd('0x47')],_0x573f52[_0xb5dd('0x48')],parseInt(_0x573f52[_0xb5dd('0x49')],0xa)+0x1));_0x573f52[_0xb5dd('0x54')](_0x573f52[_0xb5dd('0x47')],_0x573f52['extension'],parseInt(_0x573f52[_0xb5dd('0x49')],0xa)+0x1);_0x573f52[_0xb5dd('0x3b')]();}}else{logger[_0xb5dd('0xd')](util[_0xb5dd('0x14')]('Project\x20%s\x20not\x20published',_0x573f52['arg_1']));_0x573f52[_0xb5dd('0x54')](_0x573f52[_0xb5dd('0x47')],_0x573f52[_0xb5dd('0x48')],parseInt(_0x573f52[_0xb5dd('0x49')],0xa)+0x1);_0x573f52[_0xb5dd('0x3b')]();}}else{logger['error'](util['format'](_0xb5dd('0x55'),_0x573f52[_0xb5dd('0x19')]));_0x573f52[_0xb5dd('0x54')](_0x573f52[_0xb5dd('0x47')],_0x573f52['extension'],parseInt(_0x573f52[_0xb5dd('0x49')],0xa)+0x1);_0x573f52[_0xb5dd('0x3b')]();}}function main(){var _0xbf8b31;return utilLicense['getLicense']()[_0xb5dd('0x31')](function(_0xf9ec03){if(_0xf9ec03){if(_0xf9ec03['voice']){if(_0xf9ec03[_0xb5dd('0x56')]&&_0xf9ec03[_0xb5dd('0x56')]>0x0){logger[_0xb5dd('0x17')](util['format']('[LICENSE]\x20CHANNELS:\x20%s',_0xf9ec03[_0xb5dd('0x56')]));_0xbf8b31=_0xf9ec03[_0xb5dd('0x56')];}else{logger[_0xb5dd('0x17')](_0xb5dd('0x57'));}}else{logger['info'](_0xb5dd('0x58'));_0xbf8b31=-0x1;}}})[_0xb5dd('0x32')](function(_0x11c856){logger['error']('[LICENSE]',_0x11c856[_0xb5dd('0xe')]);})[_0xb5dd('0x50')](function(){var _0x230a94=require(_0xb5dd('0x59'))(config[_0xb5dd('0x9')][_0xb5dd('0x10')],config[_0xb5dd('0x9')]['ip'],_0xbf8b31);_0x230a94['on']('error',errorHandler);_0x230a94['on'](_0xb5dd('0x5a'),listeningHandler);_0x230a94['on'](_0xb5dd('0x5b'),connectionHandler);_0x230a94['on'](_0xb5dd('0x3b'),closeHandler);});}main();
\ No newline at end of file
index b47c52f..0fb82ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01be=['SendMail','bluebird','client','http','then','error','catch','sendMailMessage'];(function(_0x41e431,_0x3b88c9){var _0x28b356=function(_0x2d26f3){while(--_0x2d26f3){_0x41e431['push'](_0x41e431['shift']());}};_0x28b356(++_0x3b88c9);}(_0x01be,0xe1));var _0xe01b=function(_0x10e2a3,_0x449277){_0x10e2a3=_0x10e2a3-0x0;var _0x130f6b=_0x01be[_0x10e2a3];return _0x130f6b;};'use strict';var BPromise=require(_0xe01b('0x0'));var jayson=require('jayson/promise');var client=jayson[_0xe01b('0x1')][_0xe01b('0x2')]({'port':0x232b});function request(_0x319323,_0x356366){return new BPromise(function(_0x4b80f6,_0x7a6d6c){return client['request'](_0x319323,_0x356366)[_0xe01b('0x3')](function(_0x349a71){if(_0x349a71[_0xe01b('0x4')]){return _0x7a6d6c(_0x349a71[_0xe01b('0x4')]['message']);}else{return _0x4b80f6(_0x349a71['result']);}})[_0xe01b('0x5')](function(_0x1ed2c9){return _0x7a6d6c(_0x1ed2c9);});});}exports[_0xe01b('0x6')]=function(_0x35c417,_0x51db8d){return request(_0xe01b('0x7'),{'account':_0x35c417,'message':_0x51db8d});};
\ No newline at end of file
+var _0x63a3=['result','catch','bluebird','jayson/promise','http','request','then','error','message'];(function(_0x4bc4ab,_0x2c1bad){var _0x368014=function(_0x179c12){while(--_0x179c12){_0x4bc4ab['push'](_0x4bc4ab['shift']());}};_0x368014(++_0x2c1bad);}(_0x63a3,0x1a0));var _0x363a=function(_0x454165,_0x1f3e74){_0x454165=_0x454165-0x0;var _0x56db53=_0x63a3[_0x454165];return _0x56db53;};'use strict';var BPromise=require(_0x363a('0x0'));var jayson=require(_0x363a('0x1'));var client=jayson['client'][_0x363a('0x2')]({'port':0x232b});function request(_0x2ae8a9,_0x164895){return new BPromise(function(_0x51b369,_0x2d898c){return client[_0x363a('0x3')](_0x2ae8a9,_0x164895)[_0x363a('0x4')](function(_0x3f068a){if(_0x3f068a[_0x363a('0x5')]){return _0x2d898c(_0x3f068a[_0x363a('0x5')][_0x363a('0x6')]);}else{return _0x51b369(_0x3f068a[_0x363a('0x7')]);}})[_0x363a('0x8')](function(_0x1c82c4){return _0x2d898c(_0x1c82c4);});});}exports['sendMailMessage']=function(_0x26067c,_0x295732){return request('SendMail',{'account':_0x26067c,'message':_0x295732});};
\ No newline at end of file
index 43d046c..f4c3884 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0662=['_inBody','prototype','_transform','\x0d\x0a\x0d\x0a','toString','indexOf','substring','length','slice','trim','emit','headers','exports','stream','Transform','call','_localBuffer'];(function(_0x47cb7a,_0x2d7782){var _0x55243a=function(_0xa8014f){while(--_0xa8014f){_0x47cb7a['push'](_0x47cb7a['shift']());}};_0x55243a(++_0x2d7782);}(_0x0662,0x1a5));var _0x2066=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0x0662[_0x5c351c];return _0x26f3b3;};'use strict';var util=require('util');var Transform=require(_0x2066('0x0'))[_0x2066('0x1')];function AGIReply(_0x32520e){Transform[_0x2066('0x2')](this,_0x32520e);this[_0x2066('0x3')]='';this[_0x2066('0x4')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x2066('0x5')][_0x2066('0x6')]=function(_0x11f3c7,_0x4bd38b,_0x17f7a4){var _0x107026='\x0a',_0x18c345=['\x0a\x0a',_0x2066('0x7')],_0x392b93=-0x1,_0x327ab7=-0x1,_0x165f89='',_0x5f0248=0x0,_0x41dfbd='',_0x3476cc='';this['_localBuffer']+=_0x11f3c7[_0x2066('0x8')]();_0x41dfbd=this[_0x2066('0x3')];if(!this[_0x2066('0x4')]){_0x5f0248=0x0;while(_0x18c345[_0x5f0248]){while((_0x327ab7=_0x41dfbd[_0x2066('0x9')](_0x18c345[_0x5f0248]))!=-0x1){_0x165f89=_0x18c345[_0x5f0248];_0x3476cc=_0x41dfbd[_0x2066('0xa')](0x0,_0x327ab7);_0x41dfbd=_0x41dfbd[_0x2066('0xa')](_0x327ab7+_0x165f89[_0x2066('0xb')]);var _0x5b84ba=_0x3476cc['split'](_0x107026),_0x49ca9a=0x0,_0x1dbaa5={},_0x486958='',_0x969f3f='',_0xc01fb5=-0x1;while(_0x5b84ba[_0x49ca9a]){_0xc01fb5=_0x5b84ba[_0x49ca9a][_0x2066('0x9')](':');if(_0xc01fb5!=-0x1){_0x486958=_0x5b84ba[_0x49ca9a][_0x2066('0xc')](0x0,_0xc01fb5)['trim']();_0x969f3f=_0x5b84ba[_0x49ca9a]['slice'](_0xc01fb5+0x1)[_0x2066('0xd')]();if(_0x486958[_0x2066('0xb')]>0x0){_0x1dbaa5[_0x486958]=_0x969f3f;}}else{}_0x49ca9a++;}this[_0x2066('0xe')](_0x2066('0xf'),_0x1dbaa5);this[_0x2066('0x4')]=!![];}_0x5f0248++;}this[_0x2066('0x3')]=_0x41dfbd;}else{while((_0x392b93=_0x41dfbd[_0x2066('0x9')](_0x107026))!=-0x1){_0x3476cc=_0x41dfbd[_0x2066('0xa')](0x0,_0x392b93);this[_0x2066('0xe')]('line',_0x3476cc);_0x41dfbd=_0x41dfbd[_0x2066('0xa')](_0x392b93+_0x107026[_0x2066('0xb')]);}this[_0x2066('0x3')]=_0x41dfbd;}_0x17f7a4();};module[_0x2066('0x10')]=AGIReply;
\ No newline at end of file
+var _0x9b40=['split','slice','trim','length','emit','headers','stream','call','_localBuffer','_inBody','_transform','\x0d\x0a\x0d\x0a','toString','indexOf','substring'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x9b40,0xf6));var _0x09b4=function(_0x1d834f,_0x174bbf){_0x1d834f=_0x1d834f-0x0;var _0x594ae9=_0x9b40[_0x1d834f];return _0x594ae9;};'use strict';var util=require('util');var Transform=require(_0x09b4('0x0'))['Transform'];function AGIReply(_0x259436){Transform[_0x09b4('0x1')](this,_0x259436);this[_0x09b4('0x2')]='';this[_0x09b4('0x3')]=![];}util['inherits'](AGIReply,Transform);AGIReply['prototype'][_0x09b4('0x4')]=function(_0x555c6d,_0x4d76a8,_0x20e14b){var _0x535359='\x0a',_0x15422d=['\x0a\x0a',_0x09b4('0x5')],_0x4b3ae0=-0x1,_0x518411=-0x1,_0x1a78ef='',_0x288612=0x0,_0x257be2='',_0x2c4a33='';this[_0x09b4('0x2')]+=_0x555c6d[_0x09b4('0x6')]();_0x257be2=this[_0x09b4('0x2')];if(!this[_0x09b4('0x3')]){_0x288612=0x0;while(_0x15422d[_0x288612]){while((_0x518411=_0x257be2[_0x09b4('0x7')](_0x15422d[_0x288612]))!=-0x1){_0x1a78ef=_0x15422d[_0x288612];_0x2c4a33=_0x257be2[_0x09b4('0x8')](0x0,_0x518411);_0x257be2=_0x257be2['substring'](_0x518411+_0x1a78ef['length']);var _0x198cd5=_0x2c4a33[_0x09b4('0x9')](_0x535359),_0x34d42b=0x0,_0x2d4a32={},_0x4561f6='',_0x1ac28f='',_0x29961b=-0x1;while(_0x198cd5[_0x34d42b]){_0x29961b=_0x198cd5[_0x34d42b][_0x09b4('0x7')](':');if(_0x29961b!=-0x1){_0x4561f6=_0x198cd5[_0x34d42b][_0x09b4('0xa')](0x0,_0x29961b)[_0x09b4('0xb')]();_0x1ac28f=_0x198cd5[_0x34d42b][_0x09b4('0xa')](_0x29961b+0x1)[_0x09b4('0xb')]();if(_0x4561f6[_0x09b4('0xc')]>0x0){_0x2d4a32[_0x4561f6]=_0x1ac28f;}}else{}_0x34d42b++;}this[_0x09b4('0xd')](_0x09b4('0xe'),_0x2d4a32);this['_inBody']=!![];}_0x288612++;}this[_0x09b4('0x2')]=_0x257be2;}else{while((_0x4b3ae0=_0x257be2[_0x09b4('0x7')](_0x535359))!=-0x1){_0x2c4a33=_0x257be2[_0x09b4('0x8')](0x0,_0x4b3ae0);this[_0x09b4('0xd')]('line',_0x2c4a33);_0x257be2=_0x257be2['substring'](_0x4b3ae0+_0x535359['length']);}this[_0x09b4('0x2')]=_0x257be2;}_0x20e14b();};module['exports']=AGIReply;
\ No newline at end of file
index f55bb2c..fceb90b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x630b=['createSquareRecording','CreateSquareRecording','createSquareMessage','createCmContact','ShowCmHopper','phone','ListId','CreateCmContact','ShowPause','agentLogin','LoginUser','PauseUser','agentUnpause','UnpauseUser','agentLogout','LogoutUser','bluebird','moment','util','client','http','request','then','error','message','result','catch','getSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','name','email','ShowSquareProject','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','ShowUser','getTrunkById','ShowTrunk','ShowSound','save_name','getIntervalById','Interval','Intervals','getSmsAccountById','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','merge','arg_1','arg_2','format'];(function(_0x4a055e,_0x59b80a){var _0x328a29=function(_0x232e08){while(--_0x232e08){_0x4a055e['push'](_0x4a055e['shift']());}};_0x328a29(++_0x59b80a);}(_0x630b,0x13c));var _0xb630=function(_0x5aee5f,_0x48d9bf){_0x5aee5f=_0x5aee5f-0x0;var _0x35e30f=_0x630b[_0x5aee5f];return _0x35e30f;};'use strict';var BPromise=require(_0xb630('0x0'));var moment=require(_0xb630('0x1'));var _=require('lodash');var util=require(_0xb630('0x2'));var jayson=require('jayson/promise');var client=jayson[_0xb630('0x3')][_0xb630('0x4')]({'port':0x2329});function request(_0x4baa90,_0x5a8098){return new BPromise(function(_0x16cffc,_0xf193dc){return client[_0xb630('0x5')](_0x4baa90,_0x5a8098)[_0xb630('0x6')](function(_0x279e2c){if(_0x279e2c[_0xb630('0x7')]){return _0xf193dc(_0x279e2c[_0xb630('0x7')][_0xb630('0x8')]);}else{return _0x16cffc(_0x279e2c[_0xb630('0x9')]);}})[_0xb630('0xa')](function(_0x4c1d6a){return _0xf193dc(_0x4c1d6a);});});}exports[_0xb630('0xb')]=function(_0x710d50){return request('ShowSquareProject',{'options':{'raw':![],'where':{'name':_0x710d50},'attributes':[_0xb630('0xc')]}});};exports[_0xb630('0xd')]=function(_0x533b94){return request(_0xb630('0xe'),{'options':{'raw':![],'where':{'id':_0x533b94},'include':[{'model':_0xb630('0xf'),'as':_0xb630('0x10')}],'attributes':['id',_0xb630('0x11'),_0xb630('0x12')]}});};exports['getSquareProjectById']=function(_0x1adfec){return request(_0xb630('0x13'),{'options':{'where':{'id':_0x1adfec},'attributes':[_0xb630('0x11')]}});};exports[_0xb630('0x14')]=function(_0x5f0aea){return request(_0xb630('0x15'),{'options':{'where':{'id':_0x5f0aea},'attributes':[_0xb630('0x11')]}});};exports[_0xb630('0x16')]=function(_0xc89d3a){return request(_0xb630('0x17'),{'options':{'where':{'id':_0xc89d3a},'attributes':[_0xb630('0x11')]}});};exports[_0xb630('0x18')]=function(_0x169ac9){return request(_0xb630('0x19'),{'options':{'where':{'id':_0x169ac9},'attributes':['dsn']}});};exports['getUserById']=function(_0x2d62fd){return request(_0xb630('0x1a'),{'options':{'where':{'id':_0x2d62fd},'attributes':[_0xb630('0x11')]}});};exports[_0xb630('0x1b')]=function(_0x6420ef){return request(_0xb630('0x1c'),{'options':{'where':{'id':_0x6420ef},'attributes':[_0xb630('0x11')]}});};exports['getSoundById']=function(_0x100152){return request(_0xb630('0x1d'),{'options':{'where':{'id':_0x100152},'attributes':[_0xb630('0x1e')]}});};exports[_0xb630('0x1f')]=function(_0x1d246c){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x1d246c},'include':[{'model':_0xb630('0x20'),'as':_0xb630('0x21')}]}});};exports[_0xb630('0x22')]=function(_0x4a0249){return request('ShowSmsAccount',{'options':{'where':{'id':_0x4a0249},'attributes':['id','name']}});};exports[_0xb630('0x23')]=function(_0x2e21a9){return request(_0xb630('0x24'),{'body':_0x2e21a9});};exports[_0xb630('0x25')]=function(_0x20d034){return request(_0xb630('0x26'),{'body':_0x20d034});};exports[_0xb630('0x27')]=function(_0x331dee){return request('CreateSquareReport',{'body':_[_0xb630('0x28')](_0x331dee,{'project_name':_0x331dee[_0xb630('0x29')],'prev_project_name':_0x331dee[_0xb630('0x2a')]||'','is_subproject':_0x331dee[_0xb630('0x2a')]?!![]:![],'leaveAt':moment()[_0xb630('0x2b')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0xb630('0x2c')]=function(_0x2b6063){return request(_0xb630('0x2d'),{'body':_0x2b6063});};exports[_0xb630('0x2e')]=function(_0x4ff7e4){return request('CreateSquareMessage',{'body':_0x4ff7e4});};exports[_0xb630('0x2f')]=function(_0xe02b00){return request(_0xb630('0x30'),{'options':{'raw':![],'where':{'phone':_0xe02b00[_0xb630('0x31')],'ListId':_0xe02b00[_0xb630('0x32')]}}})['then'](function(_0x1be030){if(_0x1be030){return _0x1be030;}return request(_0xb630('0x33'),{'body':_0xe02b00});});};exports['getPauseById']=function(_0x3e67ed){return request(_0xb630('0x34'),{'options':{'where':{'id':_0x3e67ed},'attributes':[_0xb630('0x11')]}});};exports[_0xb630('0x35')]=function(_0x2e9fa6,_0x2a0c72){return request(_0xb630('0x36'),{'body':{'interface':_0x2a0c72},'options':{'where':_0x2e9fa6}});};exports['agentPause']=function(_0x4758af,_0x1f67ff,_0x6879fe){return request(_0xb630('0x37'),{'body':{'type':_0x1f67ff,'uniqueid':_0x6879fe},'options':{'where':_0x4758af}});};exports[_0xb630('0x38')]=function(_0x152bd0){return request(_0xb630('0x39'),{'body':{},'options':{'where':_0x152bd0}});};exports[_0xb630('0x3a')]=function(_0x4cd627){return request(_0xb630('0x3b'),{'body':{},'options':{'where':_0x4cd627}});};
\ No newline at end of file
+var _0x38e7=['client','http','request','then','error','message','result','catch','getSquareProject','ShowSquareProject','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','getVoiceQueueById','ShowVoiceQueue','name','getVariableById','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','getTrunkById','ShowTrunk','ShowSound','save_name','ShowInterval','Intervals','getSmsAccountById','ShowSmsAccount','CreateSmsMessage','createSquareDetailsReport','CreateSquareReport','merge','arg_2','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','phone','getPauseById','agentLogin','LoginUser','agentUnpause','UnpauseUser','bluebird','moment','lodash','util','jayson/promise'];(function(_0x5f2caf,_0x23a3dd){var _0x29ed10=function(_0x2fe9c2){while(--_0x2fe9c2){_0x5f2caf['push'](_0x5f2caf['shift']());}};_0x29ed10(++_0x23a3dd);}(_0x38e7,0x97));var _0x738e=function(_0x7ad123,_0xeeeef3){_0x7ad123=_0x7ad123-0x0;var _0x37d073=_0x38e7[_0x7ad123];return _0x37d073;};'use strict';var BPromise=require(_0x738e('0x0'));var moment=require(_0x738e('0x1'));var _=require(_0x738e('0x2'));var util=require(_0x738e('0x3'));var jayson=require(_0x738e('0x4'));var client=jayson[_0x738e('0x5')][_0x738e('0x6')]({'port':0x2329});function request(_0x5b68a0,_0x20582c){return new BPromise(function(_0x1c5c9f,_0x5705c6){return client[_0x738e('0x7')](_0x5b68a0,_0x20582c)[_0x738e('0x8')](function(_0x44d4a3){if(_0x44d4a3[_0x738e('0x9')]){return _0x5705c6(_0x44d4a3[_0x738e('0x9')][_0x738e('0xa')]);}else{return _0x1c5c9f(_0x44d4a3[_0x738e('0xb')]);}})[_0x738e('0xc')](function(_0x5dae94){return _0x5705c6(_0x5dae94);});});}exports[_0x738e('0xd')]=function(_0x57d292){return request(_0x738e('0xe'),{'options':{'raw':![],'where':{'name':_0x57d292},'attributes':['production']}});};exports[_0x738e('0xf')]=function(_0x3dc739){return request(_0x738e('0x10'),{'options':{'raw':![],'where':{'id':_0x3dc739},'include':[{'model':_0x738e('0x11'),'as':_0x738e('0x12')}],'attributes':['id','name','email']}});};exports['getSquareProjectById']=function(_0xd47ce5){return request(_0x738e('0xe'),{'options':{'where':{'id':_0xd47ce5},'attributes':['name']}});};exports[_0x738e('0x13')]=function(_0x1afae0){return request(_0x738e('0x14'),{'options':{'where':{'id':_0x1afae0},'attributes':[_0x738e('0x15')]}});};exports[_0x738e('0x16')]=function(_0x5c932f){return request('ShowVariable',{'options':{'where':{'id':_0x5c932f},'attributes':[_0x738e('0x15')]}});};exports[_0x738e('0x17')]=function(_0x370b99){return request(_0x738e('0x18'),{'options':{'where':{'id':_0x370b99},'attributes':[_0x738e('0x19')]}});};exports[_0x738e('0x1a')]=function(_0x23895f){return request('ShowUser',{'options':{'where':{'id':_0x23895f},'attributes':[_0x738e('0x15')]}});};exports[_0x738e('0x1b')]=function(_0x5bbeb1){return request(_0x738e('0x1c'),{'options':{'where':{'id':_0x5bbeb1},'attributes':[_0x738e('0x15')]}});};exports['getSoundById']=function(_0x3d1495){return request(_0x738e('0x1d'),{'options':{'where':{'id':_0x3d1495},'attributes':[_0x738e('0x1e')]}});};exports['getIntervalById']=function(_0x136395){return request(_0x738e('0x1f'),{'options':{'raw':![],'where':{'id':_0x136395},'include':[{'model':'Interval','as':_0x738e('0x20')}]}});};exports[_0x738e('0x21')]=function(_0x44a761){return request(_0x738e('0x22'),{'options':{'where':{'id':_0x44a761},'attributes':['id',_0x738e('0x15')]}});};exports['createSmsMessage']=function(_0xf8f9f1){return request(_0x738e('0x23'),{'body':_0xf8f9f1});};exports[_0x738e('0x24')]=function(_0x4b981){return request('CreateSquareDetailsReport',{'body':_0x4b981});};exports['createSquareReport']=function(_0x24ed40){return request(_0x738e('0x25'),{'body':_[_0x738e('0x26')](_0x24ed40,{'project_name':_0x24ed40['arg_1'],'prev_project_name':_0x24ed40[_0x738e('0x27')]||'','is_subproject':_0x24ed40[_0x738e('0x27')]?!![]:![],'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0x738e('0x28')]=function(_0x5e349e){return request(_0x738e('0x29'),{'body':_0x5e349e});};exports[_0x738e('0x2a')]=function(_0x4cedb2){return request(_0x738e('0x2b'),{'body':_0x4cedb2});};exports[_0x738e('0x2c')]=function(_0x4d783a){return request(_0x738e('0x2d'),{'options':{'raw':![],'where':{'phone':_0x4d783a[_0x738e('0x2e')],'ListId':_0x4d783a['ListId']}}})['then'](function(_0x3c6fac){if(_0x3c6fac){return _0x3c6fac;}return request('CreateCmContact',{'body':_0x4d783a});});};exports[_0x738e('0x2f')]=function(_0x3189ea){return request('ShowPause',{'options':{'where':{'id':_0x3189ea},'attributes':[_0x738e('0x15')]}});};exports[_0x738e('0x30')]=function(_0x2ba101,_0x316a6f){return request(_0x738e('0x31'),{'body':{'interface':_0x316a6f},'options':{'where':_0x2ba101}});};exports['agentPause']=function(_0x18b71b,_0x1e2854,_0x56afd5){return request('PauseUser',{'body':{'type':_0x1e2854,'uniqueid':_0x56afd5},'options':{'where':_0x18b71b}});};exports[_0x738e('0x32')]=function(_0x35e0c3){return request(_0x738e('0x33'),{'body':{},'options':{'where':_0x35e0c3}});};exports['agentLogout']=function(_0x5b2700){return request('LogoutUser',{'body':{},'options':{'where':_0x5b2700}});};
\ No newline at end of file
index 5249e75..bb8a234 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2ad=['./lex'];(function(_0x496415,_0x2e81f8){var _0x24c713=function(_0x208882){while(--_0x208882){_0x496415['push'](_0x496415['shift']());}};_0x24c713(++_0x2e81f8);}(_0xb2ad,0x16d));var _0xdb2a=function(_0x3903d0,_0xdd38ef){_0x3903d0=_0x3903d0-0x0;var _0x33315f=_0xb2ad[_0x3903d0];return _0x33315f;};var polly=require('./polly');var lex=require(_0xdb2a('0x0'));module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0xecb2=['./polly'];(function(_0x58afd5,_0x534a48){var _0x3e503b=function(_0x27ba44){while(--_0x27ba44){_0x58afd5['push'](_0x58afd5['shift']());}};_0x3e503b(++_0x534a48);}(_0xecb2,0xf6));var _0x2ecb=function(_0x21b4c3,_0x514e81){_0x21b4c3=_0x21b4c3-0x0;var _0x297faf=_0xecb2[_0x21b4c3];return _0x297faf;};var polly=require(_0x2ecb('0x0'));var lex=require('./lex');module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
index 22669c0..b7da79c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b5=['exports','./lib/api'];(function(_0x575287,_0x43013e){var _0x29a740=function(_0x4050f9){while(--_0x4050f9){_0x575287['push'](_0x575287['shift']());}};_0x29a740(++_0x43013e);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x48a96f,_0x530059){_0x48a96f=_0x48a96f-0x0;var _0x3ff3ef=_0xe5b5[_0x48a96f];return _0x3ff3ef;};'use strict';var lex=require(_0x5e5b('0x0'));module[_0x5e5b('0x1')]=function(_0x418c87,_0x3b3efd,_0x208070,_0x4263e,_0x33e813,_0x3dc763){return lex(_0x418c87,_0x3b3efd,_0x208070,_0x4263e,_0x33e813,_0x3dc763);};
\ No newline at end of file
+var _0xb7e7=['./lib/api'];(function(_0x14a802,_0x1e804d){var _0x1b8000=function(_0x216586){while(--_0x216586){_0x14a802['push'](_0x14a802['shift']());}};_0x1b8000(++_0x1e804d);}(_0xb7e7,0x121));var _0x7b7e=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xb7e7[_0x13d07a];return _0x5ee0ee;};'use strict';var lex=require(_0x7b7e('0x0'));module['exports']=function(_0x40e269,_0x518dc6,_0x1b7cc7,_0x54a37f,_0x3f5804,_0x556d68){return lex(_0x40e269,_0x518dc6,_0x1b7cc7,_0x54a37f,_0x3f5804,_0x556d68);};
\ No newline at end of file
index b3cf325..e2a24ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x167b96,_0x373fe3){var _0x27e5b8=function(_0x18b0ab){while(--_0x18b0ab){_0x167b96['push'](_0x167b96['shift']());}};_0x27e5b8(++_0x373fe3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'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(_0x4251f5,_0x4252f0){var _0x210692=function(_0xa3bee0){while(--_0xa3bee0){_0x4251f5['push'](_0x4251f5['shift']());}};_0x210692(++_0x4252f0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xa9e0[_0x484e36];return _0xafc85d;};'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 b91e56b..ea121ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d5=['exports'];(function(_0x2fc393,_0x29fa81){var _0x3cbfe6=function(_0x1a0cdf){while(--_0x1a0cdf){_0x2fc393['push'](_0x2fc393['shift']());}};_0x3cbfe6(++_0x29fa81);}(_0xd6d5,0x155));var _0x5d6d=function(_0x5c78d9,_0x2736c7){_0x5c78d9=_0x5c78d9-0x0;var _0x69ae1f=_0xd6d5[_0x5c78d9];return _0x69ae1f;};'use strict';var polly=require('./lib/api');module[_0x5d6d('0x0')]=function(_0x59855a,_0x37fd83,_0x47fd0d,_0x5ea006,_0x7bf489,_0x95eef8,_0x2e121a){return polly(_0x59855a,_0x37fd83,_0x47fd0d,_0x5ea006,_0x7bf489,_0x95eef8,_0x2e121a);};
\ No newline at end of file
+var _0xb212=['./lib/api','exports'];(function(_0x1203f,_0x554bbc){var _0x365f0a=function(_0x3531d0){while(--_0x3531d0){_0x1203f['push'](_0x1203f['shift']());}};_0x365f0a(++_0x554bbc);}(_0xb212,0x1f4));var _0x2b21=function(_0x3bfebf,_0x90c13e){_0x3bfebf=_0x3bfebf-0x0;var _0x5c221e=_0xb212[_0x3bfebf];return _0x5c221e;};'use strict';var polly=require(_0x2b21('0x0'));module[_0x2b21('0x1')]=function(_0x1d7cea,_0x4455b7,_0x3c0f56,_0xe1808,_0x34e70f,_0x2f6ef1,_0x2ec931){return polly(_0x1d7cea,_0x4455b7,_0x3c0f56,_0xe1808,_0x34e70f,_0x2f6ef1,_0x2ec931);};
\ No newline at end of file
index 3ce6aa9..7081f69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5752=['AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','mp3','path','bluebird','aws-sdk'];(function(_0x2105a0,_0x6d47f3){var _0x4683f9=function(_0x5380c2){while(--_0x5380c2){_0x2105a0['push'](_0x2105a0['shift']());}};_0x4683f9(++_0x6d47f3);}(_0x5752,0x93));var _0x2575=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0x5752[_0x3b0731];return _0x4204d7;};'use strict';var fs=require('fs');var path=require(_0x2575('0x0'));var BPromise=require(_0x2575('0x1'));var rs=require('randomstring');var AWS=require(_0x2575('0x2'));function pollyResult(_0x541be9,_0x3132bd,_0x4a4c20){return new BPromise(function(_0x4cecb2,_0x1b5eec){_0x541be9['synthesizeSpeech'](_0x3132bd,function(_0x28633e,_0x6f9ce4){if(_0x28633e){_0x1b5eec(_0x28633e);}else if(_0x6f9ce4){if(_0x6f9ce4[_0x2575('0x3')]instanceof Buffer){fs[_0x2575('0x4')](_0x4a4c20,_0x6f9ce4[_0x2575('0x3')],function(_0x78c10d){if(_0x78c10d){_0x1b5eec(_0x78c10d);}else{_0x4cecb2();}});}else{_0x1b5eec(new Error(_0x2575('0x5')));}}else{_0x1b5eec(new Error(_0x2575('0x6')));}});});}module[_0x2575('0x7')]=function(_0x78dbd6,_0x11f0ae,_0x4e2a59,_0x1c02cc,_0x38049e,_0x68eb08,_0x36a1dc){var _0xfc7069=new AWS[(_0x2575('0x8'))]({'accessKeyId':_0x78dbd6,'secretAccessKey':_0x11f0ae,'region':_0x4e2a59});var _0x4ebedd={'Text':_0x38049e,'TextType':_0x68eb08||'text','OutputFormat':_0x2575('0x9'),'VoiceId':_0x1c02cc};return pollyResult(_0xfc7069,_0x4ebedd,_0x36a1dc);};
\ No newline at end of file
+var _0x785a=['synthesizeSpeech','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','mp3','path','bluebird','randomstring','aws-sdk'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0x785a,0x1ca));var _0xa785=function(_0x1f9ec0,_0x13598c){_0x1f9ec0=_0x1f9ec0-0x0;var _0x2a26aa=_0x785a[_0x1f9ec0];return _0x2a26aa;};'use strict';var fs=require('fs');var path=require(_0xa785('0x0'));var BPromise=require(_0xa785('0x1'));var rs=require(_0xa785('0x2'));var AWS=require(_0xa785('0x3'));function pollyResult(_0x4cddfb,_0x4991ad,_0x2447cb){return new BPromise(function(_0x348420,_0x317e0f){_0x4cddfb[_0xa785('0x4')](_0x4991ad,function(_0x3228f3,_0x42c674){if(_0x3228f3){_0x317e0f(_0x3228f3);}else if(_0x42c674){if(_0x42c674[_0xa785('0x5')]instanceof Buffer){fs['writeFile'](_0x2447cb,_0x42c674[_0xa785('0x5')],function(_0x5d0a03){if(_0x5d0a03){_0x317e0f(_0x5d0a03);}else{_0x348420();}});}else{_0x317e0f(new Error(_0xa785('0x6')));}}else{_0x317e0f(new Error(_0xa785('0x7')));}});});}module[_0xa785('0x8')]=function(_0x40acfd,_0x43725a,_0x9dff78,_0xdab4a0,_0x19d70a,_0x2b33fa,_0x14c334){var _0x76c7b2=new AWS[(_0xa785('0x9'))]({'accessKeyId':_0x40acfd,'secretAccessKey':_0x43725a,'region':_0x9dff78});var _0x1e5df6={'Text':_0x19d70a,'TextType':_0x2b33fa||'text','OutputFormat':_0xa785('0xa'),'VoiceId':_0xdab4a0};return pollyResult(_0x76c7b2,_0x1e5df6,_0x14c334);};
\ No newline at end of file
index 8796b85..acef8fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30c0=['exports','./lib/api'];(function(_0x5ee68c,_0x2b453b){var _0x2f1720=function(_0x3aeb4a){while(--_0x3aeb4a){_0x5ee68c['push'](_0x5ee68c['shift']());}};_0x2f1720(++_0x2b453b);}(_0x30c0,0x69));var _0x030c=function(_0x4292c0,_0x505859){_0x4292c0=_0x4292c0-0x0;var _0x59650b=_0x30c0[_0x4292c0];return _0x59650b;};'use strict';var asr=require(_0x030c('0x0'));module[_0x030c('0x1')]=function(_0x2de563,_0x213148,_0x44bf4b,_0x7fc677){return asr(_0x2de563,_0x213148,_0x44bf4b);};
\ No newline at end of file
+var _0xf9ff=['exports'];(function(_0x327550,_0x4aa662){var _0x4e554c=function(_0x3d1387){while(--_0x3d1387){_0x327550['push'](_0x327550['shift']());}};_0x4e554c(++_0x4aa662);}(_0xf9ff,0x15a));var _0xff9f=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0xf9ff[_0x18ab2a];return _0x16dcee;};'use strict';var asr=require('./lib/api');module[_0xff9f('0x0')]=function(_0x18665e,_0xb327bc,_0x93d9d,_0x546ac5){return asr(_0x18665e,_0xb327bc,_0x93d9d);};
\ No newline at end of file
index d8d5dca..7989fd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9221=['toString','base64','/v1/speech:recognize?key=','LINEAR16','bluebird','https://speech.googleapis.com','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string'];(function(_0x11ec69,_0xfc16af){var _0x189466=function(_0x15a793){while(--_0x15a793){_0x11ec69['push'](_0x11ec69['shift']());}};_0x189466(++_0xfc16af);}(_0x9221,0x64));var _0x1922=function(_0x25f743,_0x765664){_0x25f743=_0x25f743-0x0;var _0x2ba165=_0x9221[_0x25f743];return _0x2ba165;};'use strict';var url=require('url');var BPromise=require(_0x1922('0x0'));var fs=require('fs');var host=_0x1922('0x1');module['exports']=function(_0x23df25,_0x1099ca,_0x5f14f2){return new BPromise(function(_0x309b6b,_0x43c8a3){var _0x459eee;if(typeof _0x23df25!==_0x1922('0x2')||_0x23df25[_0x1922('0x3')]===0x0){return _0x43c8a3(_0x1922('0x4'));}if(typeof _0x1099ca!==_0x1922('0x2')||_0x1099ca['length']===0x0){return _0x43c8a3(_0x1922('0x5'));}if(typeof _0x5f14f2!==_0x1922('0x6')&&(typeof _0x5f14f2!==_0x1922('0x2')||_0x5f14f2['length']===0x0)){return _0x43c8a3(_0x1922('0x7'));}try{_0x459eee=fs['readFileSync'](_0x23df25)[_0x1922('0x8')](_0x1922('0x9'));}catch(_0x1082d8){return _0x43c8a3(_0x1082d8);}return _0x309b6b({'method':'POST','uri':host+_0x1922('0xa')+_0x1099ca,'body':{'config':{'encoding':_0x1922('0xb'),'sampleRateHertz':'8000','languageCode':_0x5f14f2},'audio':{'content':_0x459eee}},'json':!![]});});};
\ No newline at end of file
+var _0x87ae=['toString','POST','/v1/speech:recognize?key=','LINEAR16','8000','https://speech.googleapis.com','string','length','key\x20should\x20be\x20a\x20string','readFileSync'];(function(_0xb74004,_0x461b4e){var _0x2f6741=function(_0xa54b8b){while(--_0xa54b8b){_0xb74004['push'](_0xb74004['shift']());}};_0x2f6741(++_0x461b4e);}(_0x87ae,0xf5));var _0xe87a=function(_0x1e1965,_0x55785c){_0x1e1965=_0x1e1965-0x0;var _0x1a2e96=_0x87ae[_0x1e1965];return _0x1a2e96;};'use strict';var url=require('url');var BPromise=require('bluebird');var fs=require('fs');var host=_0xe87a('0x0');module['exports']=function(_0x4ab66a,_0x2241d2,_0x44fc79){return new BPromise(function(_0x404a0a,_0x5a55b8){var _0x28899c;if(typeof _0x4ab66a!==_0xe87a('0x1')||_0x4ab66a[_0xe87a('0x2')]===0x0){return _0x5a55b8('filepath\x20should\x20be\x20a\x20string');}if(typeof _0x2241d2!=='string'||_0x2241d2[_0xe87a('0x2')]===0x0){return _0x5a55b8(_0xe87a('0x3'));}if(typeof _0x44fc79!=='undefined'&&(typeof _0x44fc79!==_0xe87a('0x1')||_0x44fc79[_0xe87a('0x2')]===0x0)){return _0x5a55b8('lang\x20should\x20be\x20a\x20string');}try{_0x28899c=fs[_0xe87a('0x4')](_0x4ab66a)[_0xe87a('0x5')]('base64');}catch(_0x18cf9d){return _0x5a55b8(_0x18cf9d);}return _0x404a0a({'method':_0xe87a('0x6'),'uri':host+_0xe87a('0x7')+_0x2241d2,'body':{'config':{'encoding':_0xe87a('0x8'),'sampleRateHertz':_0xe87a('0x9'),'languageCode':_0x44fc79},'audio':{'content':_0x28899c}},'json':!![]});});};
\ No newline at end of file
index 31e873c..226eccf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65eb=['exports','./asr'];(function(_0x6221ec,_0x5857ed){var _0x21880f=function(_0x3469ab){while(--_0x3469ab){_0x6221ec['push'](_0x6221ec['shift']());}};_0x21880f(++_0x5857ed);}(_0x65eb,0xd1));var _0xb65e=function(_0x425aff,_0x3ba514){_0x425aff=_0x425aff-0x0;var _0x5a6883=_0x65eb[_0x425aff];return _0x5a6883;};var asr=require(_0xb65e('0x0'));module[_0xb65e('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x8030=['./asr','exports'];(function(_0x535b4a,_0x567c6d){var _0x4cf604=function(_0x17706e){while(--_0x17706e){_0x535b4a['push'](_0x535b4a['shift']());}};_0x4cf604(++_0x567c6d);}(_0x8030,0xc4));var _0x0803=function(_0x356d25,_0x47f04e){_0x356d25=_0x356d25-0x0;var _0x68ba84=_0x8030[_0x356d25];return _0x68ba84;};var asr=require(_0x0803('0x0'));module[_0x0803('0x1')]={'asr':asr};
\ No newline at end of file
index 4516d90..02c3ad4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326a=['split','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','text:synthesize','POST','from','audioContent','writeFile','chmodSync','777','unlink','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','f.req=','stringify','jQ1olc','null','generic','slice','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','parse\x20response\x20failed:\x0a','goggleTTS\x20path','googleASR','asr','uri','alternatives','transcript','results','map','confidence','join','googleASR\x20transcription','googleASR\x20confidence','catch','message','googleDialogflow','result','source','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','metadata','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','queryResult','allRequiredParamsPresent','fields','diagnosticInfo','boolValue','fulfillmentText','intent','name','displayName','responseId','intentDetectionConfidence','tildeASR','polly','awsLex','lex','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','.mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','https','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','util','./aws','./sestek','./tilde','agi','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','get','statusCode','\x20failed,\x20status\x20code\x20=\x20','statusMessage','request\x20to\x20','createWriteStream','finish','info','finish\x20download\x20file','close','error','download\x20error','pipe','data','end','transcode','wav','error\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','then'];(function(_0x34843e,_0x4c4224){var _0x598f7f=function(_0x12a44c){while(--_0x12a44c){_0x34843e['push'](_0x34843e['shift']());}};_0x598f7f(++_0x4c4224);}(_0x326a,0xeb));var _0xa326=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x326a[_0x13d07a];return _0x5ee0ee;};'use strict';var apiai=require(_0xa326('0x0'));var BPromise=require(_0xa326('0x1'));var dialogflow=require(_0xa326('0x2'));var fs=require('fs');var http=require(_0xa326('0x3'));var https=require(_0xa326('0x4'));var md5=require('md5');var path=require(_0xa326('0x5'));var querystring=require(_0xa326('0x6'));var rp=require(_0xa326('0x7'));var rs=require(_0xa326('0x8'));var sox=require(_0xa326('0x9'));var tts=require(_0xa326('0xa'));var urlParse=require(_0xa326('0xb'))[_0xa326('0xc')];var util=require(_0xa326('0xd'));var aws=require(_0xa326('0xe'));var google=require('./google');var sestek=require(_0xa326('0xf'));var tilde=require(_0xa326('0x10'));var logger=require('../../../config/logger')(_0xa326('0x11'));var ISPEECH_API=_0xa326('0x12');function downloadFile(_0x40b431,_0xe0eed5){return new BPromise(function(_0x3ef865,_0x3140cc){var _0x21112b=urlParse(_0x40b431);var _0x1a2cd7=_0x21112b[_0xa326('0x13')]===_0xa326('0x14')?https:http;var _0x278ec0={'host':_0x21112b[_0xa326('0x15')],'path':_0x21112b[_0xa326('0x5')],'headers':{'user-agent':_0xa326('0x16')}};_0x1a2cd7[_0xa326('0x17')](_0x278ec0,function(_0x609670){if(_0x609670[_0xa326('0x18')]!==0xc8){logger['error']('request\x20to\x20'+_0x40b431+_0xa326('0x19')+_0x609670[_0xa326('0x18')]+'\x20('+_0x609670[_0xa326('0x1a')]+')');_0x3140cc(new Error(_0xa326('0x1b')+_0x40b431+_0xa326('0x19')+_0x609670['statusCode']+'\x20('+_0x609670[_0xa326('0x1a')]+')'));return;}var _0x443e04=fs[_0xa326('0x1c')](_0xe0eed5);_0x443e04['on'](_0xa326('0x1d'),function(){logger[_0xa326('0x1e')](_0xa326('0x1f'));_0x443e04[_0xa326('0x20')](_0x3ef865);});_0x443e04['on'](_0xa326('0x21'),function(_0x187e36){fs['unlink'](_0xe0eed5);logger[_0xa326('0x21')](_0xa326('0x22'),_0x187e36);_0x3140cc(_0x187e36);});_0x609670[_0xa326('0x23')](_0x443e04);})['on']('error',function(_0x1fba6a){logger[_0xa326('0x21')](_0x1fba6a);_0x3140cc(_0x1fba6a);})['end']();});}function uploadFile(_0xb512b1){return new BPromise(function(_0x5964ae,_0x362e47){var _0x2f3bb4=urlParse(_0xb512b1);var _0x50b826=_0x2f3bb4['protocol']===_0xa326('0x14')?https:http;var _0x4568c3={'host':_0x2f3bb4[_0xa326('0x15')],'path':_0x2f3bb4[_0xa326('0x5')],'headers':{'user-agent':'WHAT_EVER'}};_0x50b826['get'](_0x4568c3,function(_0x2213b0){if(_0x2213b0[_0xa326('0x18')]!==0xc8){_0x362e47(new Error(_0xa326('0x1b')+_0xb512b1+'\x20failed,\x20status\x20code\x20=\x20'+_0x2213b0['statusCode']+'\x20('+_0x2213b0[_0xa326('0x1a')]+')'));return;}var _0x3df36c='';_0x2213b0['on'](_0xa326('0x24'),function(_0x30515d){_0x3df36c+=_0x30515d;});_0x2213b0['on'](_0xa326('0x25'),function(){_0x5964ae(_0x3df36c);});})['on']('error',function(_0x49c270){_0x362e47(_0x49c270);})[_0xa326('0x25')]();});}function convertFile(_0x16bc84,_0x217150){return new BPromise(function(_0x5cd9cf,_0x804d1d){var _0x585b15=sox[_0xa326('0x26')](_0x16bc84,_0x217150,{'sampleRate':0x1f40,'format':_0xa326('0x27'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x585b15['on']('error',function(_0x2993c0){logger[_0xa326('0x21')](_0xa326('0x28'),_0x2993c0);_0x804d1d(_0x2993c0);});_0x585b15['on'](_0xa326('0x25'),function(){logger['info']('finish\x20to\x20convert');_0x5cd9cf();});_0x585b15[_0xa326('0x29')]();});}function base64Decode(_0x31e46b,_0xc46aed){var _0x41a96f=path[_0xa326('0x2a')](__dirname,_0xa326('0x2b'),rs[_0xa326('0x2c')](0x4)+_0xa326('0x2d'));fs[_0xa326('0x2e')](_0x41a96f,_0x31e46b,_0xa326('0x2f'));return convertFile(_0x41a96f,_0xc46aed)[_0xa326('0x30')](function(){try{fs['unlink'](_0x41a96f);fs['chmodSync'](_0xc46aed,'777');}catch(_0x57cd13){logger[_0xa326('0x21')](_0x57cd13);}return _0xc46aed[_0xa326('0x31')]('.')[0x0];});}function base64Encode(_0xd4d712){var _0x3af30d=fs['readFileSync'](_0xd4d712);return new Buffer(_0x3af30d)['toString']('base64');}exports[_0xa326('0x32')]=function(_0x1a0d2f,_0x498f77,_0x566fcd,_0x367e45,_0x3a735d,_0x438adb){var _0x3e0131,_0x3dc8a5;var _0x6b8c47=_0xa326('0x33');var _0x2fd3a4=_0xa326('0x34')+_0x1a0d2f;var _0x3adf9b={};if(_0x498f77===_0xa326('0x35')){_0x3adf9b['input']={'ssml':_0x566fcd};}else{_0x3adf9b[_0xa326('0x36')]={'text':_0x566fcd};};_0x3adf9b[_0xa326('0x37')]={'languageCode':_0x367e45,'ssmlGender':_0x3a735d};_0x3adf9b[_0xa326('0x38')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x5535c8={'url':_0x6b8c47+_0xa326('0x39')+_0x2fd3a4,'method':_0xa326('0x3a'),'json':!![],'body':_0x3adf9b};return rp(_0x5535c8)[_0xa326('0x30')](function(_0x12eaa9){return new BPromise(function(_0x46f7bd,_0x388665){_0x3e0131=path[_0xa326('0x2a')](__dirname,_0xa326('0x2b'),rs[_0xa326('0x2c')](0x4)+'.mp3');var _0x449895=Buffer[_0xa326('0x3b')](_0x12eaa9[_0xa326('0x3c')],_0xa326('0x2f'));return fs[_0xa326('0x3d')](_0x3e0131,_0x449895,function(_0x31d05b){_0x388665(_0x31d05b);},function(_0xb26472){fs[_0xa326('0x3e')](_0x3e0131,_0xa326('0x3f'));_0x46f7bd(_0xb26472);});});})['then'](function(_0xc80452){_0x3dc8a5=path[_0xa326('0x2a')](__dirname,_0xa326('0x2b'),rs[_0xa326('0x2c')](0x4)+_0xa326('0x2d'));return convertFile(_0x3e0131,_0x3dc8a5);})[_0xa326('0x30')](function(){try{fs[_0xa326('0x40')](_0x3e0131);fs[_0xa326('0x3e')](_0x3dc8a5,_0xa326('0x3f'));}catch(_0x16beea){logger[_0xa326('0x21')](_0x16beea);}logger[_0xa326('0x1e')](_0xa326('0x41'),_0x3dc8a5[_0xa326('0x31')]('.')[0x0]);return _0x3dc8a5[_0xa326('0x31')]('.')[0x0];});};exports[_0xa326('0x42')]=function(_0x5df59e,_0x3ad50b){var _0x5abcbd=_0xa326('0x43');var _0x121980,_0x57d3dd;var _0x3d6660;var _0xb78e8b={'encoding':_0xa326('0x44'),'method':'POST','timeout':0x2710,'url':_0x5abcbd,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0xa326('0x45')+encodeURIComponent(JSON[_0xa326('0x46')]([[[_0xa326('0x47'),JSON[_0xa326('0x46')]([_0x5df59e,_0x3ad50b||'en',![],_0xa326('0x48')]),null,_0xa326('0x49')]]]))};return rp(_0xb78e8b)['then'](function(_0x2139bb){try{_0x3d6660=eval(_0x2139bb[_0xa326('0x4a')](0x5))[0x0][0x2];}catch(_0x4ba83d){throw new Error('parse\x20response\x20failed:\x0a'+_0x2139bb[_0xa326('0x24')]);}if(!_0x3d6660){if(_0x5df59e[_0xa326('0x4b')]>0xc8){throw new Error(_0xa326('0x4c'));}else{throw new Error(_0xa326('0x4d')+_0x3ad50b+_0xa326('0x4e'));}}try{_0x3d6660=eval(_0x3d6660)[0x0];}catch(_0x6c774f){throw new Error(_0xa326('0x4f')+res[_0xa326('0x24')]);}const _0x2d30c8=_0x3d6660;_0x121980=path[_0xa326('0x2a')](__dirname,_0xa326('0x2b'),rs[_0xa326('0x2c')](0x4)+'.mp3');fs[_0xa326('0x2e')](_0x121980,_0x3d6660,{'encoding':'base64'});_0x57d3dd=path['resolve'](__dirname,_0xa326('0x2b'),rs[_0xa326('0x2c')](0x4)+_0xa326('0x2d'));return convertFile(_0x121980,_0x57d3dd);})[_0xa326('0x30')](function(){try{fs['unlink'](_0x121980);fs[_0xa326('0x3e')](_0x57d3dd,_0xa326('0x3f'));}catch(_0x596a50){logger[_0xa326('0x21')](_0x596a50);}logger['info'](_0xa326('0x50'),_0x57d3dd[_0xa326('0x31')]('.')[0x0]);return _0x57d3dd['split']('.')[0x0];});};exports[_0xa326('0x51')]=function(_0x158dda,_0x23ae9e,_0x15598f){return google[_0xa326('0x52')](_0x158dda,_0x23ae9e,_0x15598f)[_0xa326('0x30')](function(_0x4aaf51){logger[_0xa326('0x1e')](_0x4aaf51[_0xa326('0x53')]);return rp(_0x4aaf51);})[_0xa326('0x30')](function(_0x4befa3){var _0x143815='';var _0x349aca=0x0;try{fs[_0xa326('0x40')](_0x158dda);}catch(_0x18d478){logger[_0xa326('0x21')](_0x18d478);}if(_0x4befa3&&_0x4befa3['results']){_0x143815=_0x4befa3['results']['map'](function(_0x5c4cfc){return _0x5c4cfc&&_0x5c4cfc[_0xa326('0x54')][0x0]&&_0x5c4cfc[_0xa326('0x54')][0x0][_0xa326('0x55')]?_0x5c4cfc[_0xa326('0x54')][0x0]['transcript']:'';})['join']('\x0a');_0x349aca=_0x4befa3[_0xa326('0x56')][_0xa326('0x57')](function(_0x1fbd4b){return _0x1fbd4b&&_0x1fbd4b['alternatives'][0x0]&&_0x1fbd4b['alternatives'][0x0][_0xa326('0x58')]?_0x1fbd4b[_0xa326('0x54')][0x0]['confidence']:0x0;})[_0xa326('0x59')]('\x0a');}logger['info'](_0xa326('0x5a'),_0x143815);logger[_0xa326('0x1e')](_0xa326('0x5b'),_0x349aca);return{'transcript':_0x143815,'confidence':_0x349aca};})[_0xa326('0x5c')](function(_0x1483a6){logger['error']('[%s]\x20%s:%s',_0x1483a6[_0xa326('0x18')],_0x1483a6['name'],_0x1483a6[_0xa326('0x5d')]);});};exports[_0xa326('0x5e')]=function(_0x27aa0c,_0x18a2e8,_0x33098a,_0x438a78){var _0x34a62b=apiai(_0x18a2e8,{'language':_0x438a78||'en'});return _0x34a62b['textRequest'](_0x33098a,{'sessionId':md5(_0x27aa0c)})[_0xa326('0x30')](function(_0x70c095){logger[_0xa326('0x1e')](JSON[_0xa326('0x46')](_0x70c095));return{'source':_0x70c095[_0xa326('0x5f')][_0xa326('0x60')],'resolvedQuery':_0x70c095[_0xa326('0x5f')][_0xa326('0x61')],'action':_0x70c095[_0xa326('0x5f')][_0xa326('0x62')],'actionIncomplete':_0x70c095[_0xa326('0x5f')][_0xa326('0x63')],'speech':_0x70c095[_0xa326('0x5f')][_0xa326('0x64')][_0xa326('0x65')],'score':_0x70c095[_0xa326('0x5f')][_0xa326('0x66')],'statusCode':_0x70c095[_0xa326('0x67')]['code'],'endConversation':_0x70c095['result'][_0xa326('0x68')]['endConversation']||![],'isFallbackIntent':_0x70c095[_0xa326('0x5f')][_0xa326('0x68')][_0xa326('0x69')]};});};exports['googleDialogflowV2']=function(_0x4459d1,_0x5b167b,_0x18fb2f,_0x1ef789,_0x43cd0e,_0x2a69e2){var _0x2a75e6=_0x1ef789[_0xa326('0x6a')](/\\n/g,'\x0a');var _0x41fcb1={'credentials':{'private_key':_0x2a75e6,'client_email':_0x18fb2f}};var _0xc5c393=new dialogflow[(_0xa326('0x6b'))](_0x41fcb1);var _0x37fc30=_0xc5c393[_0xa326('0x6c')](_0x5b167b,md5(_0x4459d1));var _0x718df2={'session':_0x37fc30,'queryInput':{'text':{'text':_0x43cd0e,'languageCode':_0x2a69e2}}};return _0xc5c393[_0xa326('0x6d')](_0x718df2)[_0xa326('0x30')](function(_0x2317f9){if(_0x2317f9&&_0x2317f9[_0xa326('0x4b')]){logger[_0xa326('0x1e')]('Dialogflow\x20V2\x20response:',JSON[_0xa326('0x46')](_0x2317f9));var _0x117ad2=_0x2317f9[0x0];if(_0x117ad2){var _0x39bddd={'action':_0x117ad2[_0xa326('0x6e')][_0xa326('0x62')],'allRequiredParamsPresent':_0x117ad2['queryResult'][_0xa326('0x6f')],'endConversation':_0x117ad2[_0xa326('0x6e')]['diagnosticInfo']&&_0x117ad2[_0xa326('0x6e')]['diagnosticInfo'][_0xa326('0x70')]?_0x117ad2['queryResult'][_0xa326('0x71')][_0xa326('0x70')]['end_conversation'][_0xa326('0x72')]:![],'fulfillmentText':_0x117ad2[_0xa326('0x6e')][_0xa326('0x73')],'intentName':_0x117ad2[_0xa326('0x6e')][_0xa326('0x74')][_0xa326('0x75')],'intentDisplayName':_0x117ad2[_0xa326('0x6e')][_0xa326('0x74')][_0xa326('0x76')],'isFallbackIntent':_0x117ad2['queryResult'][_0xa326('0x74')]['isFallback'],'languageCode':_0x117ad2[_0xa326('0x6e')]['languageCode'],'queryText':_0x117ad2[_0xa326('0x6e')]['queryText'],'responseId':_0x117ad2[_0xa326('0x77')],'score':_0x117ad2[_0xa326('0x6e')][_0xa326('0x78')],'speech':_0x117ad2[_0xa326('0x6e')][_0xa326('0x73')],'providerResponse':JSON[_0xa326('0x46')](_0x2317f9)};return _0x39bddd;}}});};exports[_0xa326('0x79')]=function(_0x4cbb4d,_0x3b6544,_0x58ebe5,_0xdb34ab){return tilde[_0xa326('0x52')](_0x4cbb4d,_0x3b6544,_0x58ebe5,_0xdb34ab)[_0xa326('0x30')](function(_0xacaf18){try{fs[_0xa326('0x40')](_0x4cbb4d);}catch(_0x3406a6){logger[_0xa326('0x21')](_0x3406a6);}logger[_0xa326('0x1e')]('Tilde\x20ASR\x20transcription',_0xacaf18[_0xa326('0x55')]);logger[_0xa326('0x1e')]('Tilde\x20ASR\x20confidence',_0xacaf18[_0xa326('0x58')]);return _0xacaf18;});};exports['awsPolly']=function(_0x27b79c,_0x336371,_0x3696a0,_0x1a0d32,_0x26cfb8,_0x263678){var _0x26b232=path[_0xa326('0x2a')](__dirname,_0xa326('0x2b'),rs[_0xa326('0x2c')](0x4)+'.mp3');var _0x55672e;return aws[_0xa326('0x7a')](_0x27b79c,_0x336371,_0x3696a0,_0x1a0d32,_0x26cfb8,_0x263678,_0x26b232)['then'](function(){_0x55672e=path[_0xa326('0x2a')](__dirname,_0xa326('0x2b'),rs['generate'](0x4)+'.wav');return convertFile(_0x26b232,_0x55672e);})[_0xa326('0x30')](function(){try{fs['unlink'](_0x26b232);fs[_0xa326('0x3e')](_0x55672e,_0xa326('0x3f'));}catch(_0x467e67){logger['error'](_0x467e67);}return _0x55672e['split']('.')[0x0];});};exports[_0xa326('0x7b')]=function(_0x27295f,_0x2ad811,_0x3a70f3,_0x22319f,_0x2ac301,_0x2de056){return aws[_0xa326('0x7c')](_0x27295f,_0x2ad811,_0x3a70f3,_0x22319f,_0x2ac301,_0x2de056)[_0xa326('0x30')](function(_0x254c30){logger[_0xa326('0x1e')](JSON[_0xa326('0x46')](_0x254c30));return _0x254c30;});};exports['ispeechTTS']=function(_0x341f91,_0x5eec22,_0x5655aa,_0x418274){var _0x31ba01=util[_0xa326('0x7d')](_0xa326('0x7e'),ISPEECH_API,_0x341f91,encodeURIComponent(_0x5eec22),_0x5655aa,_0x418274);var _0x539022=path[_0xa326('0x2a')](__dirname,_0xa326('0x2b'),rs[_0xa326('0x2c')](0x4)+_0xa326('0x7f'));var _0x4b8714;return downloadFile(_0x31ba01,_0x539022)[_0xa326('0x30')](function(){_0x4b8714=path[_0xa326('0x2a')](__dirname,_0xa326('0x2b'),rs[_0xa326('0x2c')](0x4)+_0xa326('0x2d'));return convertFile(_0x539022,_0x4b8714);})[_0xa326('0x30')](function(){try{fs[_0xa326('0x40')](_0x539022);fs[_0xa326('0x3e')](_0x4b8714,_0xa326('0x3f'));}catch(_0x30403d){logger[_0xa326('0x21')](_0x30403d);}return _0x4b8714[_0xa326('0x31')]('.')[0x0];});};exports[_0xa326('0x80')]=function(_0x3f8c9c,_0x3216cb,_0x34be38,_0x5e7446){var _0x1e4ff1=util['format'](_0xa326('0x81'),ISPEECH_API,_0x3216cb,_0x34be38,base64Encode(_0x3f8c9c),_0x5e7446?util['format'](_0xa326('0x82'),encodeURIComponent(_0x5e7446)):_0xa326('0x83'));return uploadFile(_0x1e4ff1)[_0xa326('0x30')](function(_0x1fbe29){return querystring[_0xa326('0xc')](_0x1fbe29);});};exports[_0xa326('0x84')]=function(_0x338402,_0x1ec5ab){return sestek[_0xa326('0x85')](_0x338402,_0x1ec5ab)[_0xa326('0x30')](function(_0x54e801){logger[_0xa326('0x1e')](JSON[_0xa326('0x46')](_0x54e801));var _0x432986={'speech':_0x54e801[_0xa326('0x86')],'action':_0x54e801[_0xa326('0x87')]?_0x54e801['channelData'][_0xa326('0x88')]:undefined,'actiondata':_0x54e801['channelData']?_0x54e801[_0xa326('0x87')][_0xa326('0x89')]:undefined};if(_0x54e801[_0xa326('0x87')]&&_0x54e801['channelData'][_0xa326('0x8a')]){return base64Decode(_0x54e801[_0xa326('0x87')][_0xa326('0x8a')][_0xa326('0x8b')],path[_0xa326('0x2a')](__dirname,_0xa326('0x2b'),rs[_0xa326('0x2c')](0x4)+_0xa326('0x2d')))[_0xa326('0x30')](function(_0xd7839b){_0x432986[_0xa326('0x8c')]=_0xd7839b;return _0x432986;});}return _0x432986;});};exports[_0xa326('0x8d')]=function(){return __dirname;};
\ No newline at end of file
+var _0x01c0=['audiofile','apiai-promise','https','md5','querystring','request-promise','google-tts-api','url','parse','util','./aws','./google','./sestek','./tilde','agi','https://api.ispeech.org/api/rest','host','path','get','statusCode','\x20failed,\x20status\x20code\x20=\x20','statusMessage','request\x20to\x20','finish','info','finish\x20download\x20file','error','unlink','end','https:','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','split','readFileSync','toString','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','text:synthesize','POST','.mp3','from','writeFile','777','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','f.req=','stringify','jQ1olc','generic','parse\x20response\x20failed:\x0a','data','length','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','goggleTTS\x20path','uri','results','alternatives','transcript','join','map','confidence','googleASR\x20transcription','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','score','status','metadata','endConversation','isFallbackIntent','replace','SessionsClient','sessionPath','queryResult','diagnosticInfo','fields','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','ispeechTTS','format','model=%s','freeform=3','sestekNDA','text','channelData','CustomAction','AudioFromTts','Data'];(function(_0x317725,_0x1bd734){var _0x1e08cb=function(_0x42d51c){while(--_0x42d51c){_0x317725['push'](_0x317725['shift']());}};_0x1e08cb(++_0x1bd734);}(_0x01c0,0x7b));var _0x001c=function(_0x28aea5,_0x3bb12e){_0x28aea5=_0x28aea5-0x0;var _0x6a55f9=_0x01c0[_0x28aea5];return _0x6a55f9;};'use strict';var apiai=require(_0x001c('0x0'));var BPromise=require('bluebird');var dialogflow=require('dialogflow');var fs=require('fs');var http=require('http');var https=require(_0x001c('0x1'));var md5=require(_0x001c('0x2'));var path=require('path');var querystring=require(_0x001c('0x3'));var rp=require(_0x001c('0x4'));var rs=require('randomstring');var sox=require('sox');var tts=require(_0x001c('0x5'));var urlParse=require(_0x001c('0x6'))[_0x001c('0x7')];var util=require(_0x001c('0x8'));var aws=require(_0x001c('0x9'));var google=require(_0x001c('0xa'));var sestek=require(_0x001c('0xb'));var tilde=require(_0x001c('0xc'));var logger=require('../../../config/logger')(_0x001c('0xd'));var ISPEECH_API=_0x001c('0xe');function downloadFile(_0x2b63fa,_0x2d98be){return new BPromise(function(_0x3e6bd9,_0x4d48ae){var _0x234a5e=urlParse(_0x2b63fa);var _0x6c4756=_0x234a5e['protocol']==='https:'?https:http;var _0x40a733={'host':_0x234a5e[_0x001c('0xf')],'path':_0x234a5e[_0x001c('0x10')],'headers':{'user-agent':'WHAT_EVER'}};_0x6c4756[_0x001c('0x11')](_0x40a733,function(_0x3b6b83){if(_0x3b6b83[_0x001c('0x12')]!==0xc8){logger['error']('request\x20to\x20'+_0x2b63fa+_0x001c('0x13')+_0x3b6b83[_0x001c('0x12')]+'\x20('+_0x3b6b83[_0x001c('0x14')]+')');_0x4d48ae(new Error(_0x001c('0x15')+_0x2b63fa+_0x001c('0x13')+_0x3b6b83[_0x001c('0x12')]+'\x20('+_0x3b6b83[_0x001c('0x14')]+')'));return;}var _0x542765=fs['createWriteStream'](_0x2d98be);_0x542765['on'](_0x001c('0x16'),function(){logger[_0x001c('0x17')](_0x001c('0x18'));_0x542765['close'](_0x3e6bd9);});_0x542765['on'](_0x001c('0x19'),function(_0x2c3692){fs[_0x001c('0x1a')](_0x2d98be);logger[_0x001c('0x19')]('download\x20error',_0x2c3692);_0x4d48ae(_0x2c3692);});_0x3b6b83['pipe'](_0x542765);})['on']('error',function(_0xb4e72c){logger[_0x001c('0x19')](_0xb4e72c);_0x4d48ae(_0xb4e72c);})[_0x001c('0x1b')]();});}function uploadFile(_0x56c9bf){return new BPromise(function(_0xd2bb5e,_0x25ee31){var _0x4d6f96=urlParse(_0x56c9bf);var _0x815bc4=_0x4d6f96['protocol']===_0x001c('0x1c')?https:http;var _0x4c17fd={'host':_0x4d6f96[_0x001c('0xf')],'path':_0x4d6f96[_0x001c('0x10')],'headers':{'user-agent':'WHAT_EVER'}};_0x815bc4['get'](_0x4c17fd,function(_0x1a2720){if(_0x1a2720['statusCode']!==0xc8){_0x25ee31(new Error(_0x001c('0x15')+_0x56c9bf+_0x001c('0x13')+_0x1a2720['statusCode']+'\x20('+_0x1a2720[_0x001c('0x14')]+')'));return;}var _0x1e6e81='';_0x1a2720['on']('data',function(_0x3d582d){_0x1e6e81+=_0x3d582d;});_0x1a2720['on'](_0x001c('0x1b'),function(){_0xd2bb5e(_0x1e6e81);});})['on']('error',function(_0x28557f){_0x25ee31(_0x28557f);})[_0x001c('0x1b')]();});}function convertFile(_0x2cb5c9,_0x1cde92){return new BPromise(function(_0x3ec405,_0xbdb315){var _0x4bbe43=sox['transcode'](_0x2cb5c9,_0x1cde92,{'sampleRate':0x1f40,'format':_0x001c('0x1d'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x4bbe43['on']('error',function(_0x12eb5b){logger['error'](_0x001c('0x1e'),_0x12eb5b);_0xbdb315(_0x12eb5b);});_0x4bbe43['on'](_0x001c('0x1b'),function(){logger['info'](_0x001c('0x1f'));_0x3ec405();});_0x4bbe43[_0x001c('0x20')]();});}function base64Decode(_0x4cbb9f,_0x5d5e94){var _0x602a61=path[_0x001c('0x21')](__dirname,_0x001c('0x22'),rs[_0x001c('0x23')](0x4)+_0x001c('0x24'));fs[_0x001c('0x25')](_0x602a61,_0x4cbb9f,_0x001c('0x26'));return convertFile(_0x602a61,_0x5d5e94)[_0x001c('0x27')](function(){try{fs['unlink'](_0x602a61);fs[_0x001c('0x28')](_0x5d5e94,'777');}catch(_0x3691dd){logger[_0x001c('0x19')](_0x3691dd);}return _0x5d5e94[_0x001c('0x29')]('.')[0x0];});}function base64Encode(_0x5796fb){var _0x16e007=fs[_0x001c('0x2a')](_0x5796fb);return new Buffer(_0x16e007)[_0x001c('0x2b')](_0x001c('0x26'));}exports['googleCloudTTS']=function(_0x26866b,_0x32a5f8,_0x2eac82,_0x4adbe0,_0x55aa6b,_0xf073bd){var _0x4d2837,_0x14c253;var _0x4a5360=_0x001c('0x2c');var _0x51e0f8=_0x001c('0x2d')+_0x26866b;var _0x38ab66={};if(_0x32a5f8===_0x001c('0x2e')){_0x38ab66[_0x001c('0x2f')]={'ssml':_0x2eac82};}else{_0x38ab66[_0x001c('0x2f')]={'text':_0x2eac82};};_0x38ab66[_0x001c('0x30')]={'languageCode':_0x4adbe0,'ssmlGender':_0x55aa6b};_0x38ab66[_0x001c('0x31')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x45620a={'url':_0x4a5360+_0x001c('0x32')+_0x51e0f8,'method':_0x001c('0x33'),'json':!![],'body':_0x38ab66};return rp(_0x45620a)[_0x001c('0x27')](function(_0x20580e){return new BPromise(function(_0x2b5803,_0x419863){_0x4d2837=path[_0x001c('0x21')](__dirname,_0x001c('0x22'),rs[_0x001c('0x23')](0x4)+_0x001c('0x34'));var _0x5766d7=Buffer[_0x001c('0x35')](_0x20580e['audioContent'],_0x001c('0x26'));return fs[_0x001c('0x36')](_0x4d2837,_0x5766d7,function(_0x10faee){_0x419863(_0x10faee);},function(_0x3cdf15){fs['chmodSync'](_0x4d2837,_0x001c('0x37'));_0x2b5803(_0x3cdf15);});});})['then'](function(_0x146923){_0x14c253=path[_0x001c('0x21')](__dirname,_0x001c('0x22'),rs[_0x001c('0x23')](0x4)+_0x001c('0x24'));return convertFile(_0x4d2837,_0x14c253);})['then'](function(){try{fs[_0x001c('0x1a')](_0x4d2837);fs[_0x001c('0x28')](_0x14c253,_0x001c('0x37'));}catch(_0x51a6ca){logger[_0x001c('0x19')](_0x51a6ca);}logger[_0x001c('0x17')](_0x001c('0x38'),_0x14c253[_0x001c('0x29')]('.')[0x0]);return _0x14c253[_0x001c('0x29')]('.')[0x0];});};exports[_0x001c('0x39')]=function(_0x2e9f59,_0x495945){var _0x3679b1=_0x001c('0x3a');var _0x394c7e,_0x4ce3df;var _0xda8acc;var _0x2b0d1a={'encoding':'utf8','method':_0x001c('0x33'),'timeout':0x2710,'url':_0x3679b1,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0x001c('0x3b')+encodeURIComponent(JSON[_0x001c('0x3c')]([[[_0x001c('0x3d'),JSON[_0x001c('0x3c')]([_0x2e9f59,_0x495945||'en',![],'null']),null,_0x001c('0x3e')]]]))};return rp(_0x2b0d1a)[_0x001c('0x27')](function(_0x2e5ed4){try{_0xda8acc=eval(_0x2e5ed4['slice'](0x5))[0x0][0x2];}catch(_0x212a5c){throw new Error(_0x001c('0x3f')+_0x2e5ed4[_0x001c('0x40')]);}if(!_0xda8acc){if(_0x2e9f59[_0x001c('0x41')]>0xc8){throw new Error(_0x001c('0x42'));}else{throw new Error('lang\x20\x22'+_0x495945+_0x001c('0x43'));}}try{_0xda8acc=eval(_0xda8acc)[0x0];}catch(_0x12c92e){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x001c('0x40')]);}const _0x5f3e5b=_0xda8acc;_0x394c7e=path['resolve'](__dirname,_0x001c('0x22'),rs['generate'](0x4)+_0x001c('0x34'));fs[_0x001c('0x25')](_0x394c7e,_0xda8acc,{'encoding':_0x001c('0x26')});_0x4ce3df=path[_0x001c('0x21')](__dirname,'tmp',rs[_0x001c('0x23')](0x4)+_0x001c('0x24'));return convertFile(_0x394c7e,_0x4ce3df);})[_0x001c('0x27')](function(){try{fs['unlink'](_0x394c7e);fs['chmodSync'](_0x4ce3df,_0x001c('0x37'));}catch(_0x1aff47){logger['error'](_0x1aff47);}logger['info'](_0x001c('0x44'),_0x4ce3df[_0x001c('0x29')]('.')[0x0]);return _0x4ce3df['split']('.')[0x0];});};exports['googleASR']=function(_0x183b8b,_0x5c1c9e,_0x4b1dbf){return google['asr'](_0x183b8b,_0x5c1c9e,_0x4b1dbf)[_0x001c('0x27')](function(_0x54c25f){logger[_0x001c('0x17')](_0x54c25f[_0x001c('0x45')]);return rp(_0x54c25f);})['then'](function(_0x49b8f9){var _0x531fb2='';var _0x25f91f=0x0;try{fs[_0x001c('0x1a')](_0x183b8b);}catch(_0xdf195){logger[_0x001c('0x19')](_0xdf195);}if(_0x49b8f9&&_0x49b8f9[_0x001c('0x46')]){_0x531fb2=_0x49b8f9[_0x001c('0x46')]['map'](function(_0x153e3a){return _0x153e3a&&_0x153e3a[_0x001c('0x47')][0x0]&&_0x153e3a[_0x001c('0x47')][0x0]['transcript']?_0x153e3a['alternatives'][0x0][_0x001c('0x48')]:'';})[_0x001c('0x49')]('\x0a');_0x25f91f=_0x49b8f9[_0x001c('0x46')][_0x001c('0x4a')](function(_0x53b831){return _0x53b831&&_0x53b831['alternatives'][0x0]&&_0x53b831['alternatives'][0x0]['confidence']?_0x53b831['alternatives'][0x0][_0x001c('0x4b')]:0x0;})['join']('\x0a');}logger[_0x001c('0x17')](_0x001c('0x4c'),_0x531fb2);logger[_0x001c('0x17')]('googleASR\x20confidence',_0x25f91f);return{'transcript':_0x531fb2,'confidence':_0x25f91f};})[_0x001c('0x4d')](function(_0x333245){logger['error'](_0x001c('0x4e'),_0x333245['statusCode'],_0x333245[_0x001c('0x4f')],_0x333245[_0x001c('0x50')]);});};exports[_0x001c('0x51')]=function(_0x3b594f,_0x316233,_0x4a2e09,_0x350155){var _0x218c54=apiai(_0x316233,{'language':_0x350155||'en'});return _0x218c54[_0x001c('0x52')](_0x4a2e09,{'sessionId':md5(_0x3b594f)})[_0x001c('0x27')](function(_0x3186b4){logger['info'](JSON['stringify'](_0x3186b4));return{'source':_0x3186b4[_0x001c('0x53')][_0x001c('0x54')],'resolvedQuery':_0x3186b4['result'][_0x001c('0x55')],'action':_0x3186b4['result'][_0x001c('0x56')],'actionIncomplete':_0x3186b4[_0x001c('0x53')][_0x001c('0x57')],'speech':_0x3186b4[_0x001c('0x53')]['fulfillment']['speech'],'score':_0x3186b4[_0x001c('0x53')][_0x001c('0x58')],'statusCode':_0x3186b4[_0x001c('0x59')]['code'],'endConversation':_0x3186b4[_0x001c('0x53')][_0x001c('0x5a')][_0x001c('0x5b')]||![],'isFallbackIntent':_0x3186b4[_0x001c('0x53')]['metadata'][_0x001c('0x5c')]};});};exports['googleDialogflowV2']=function(_0x34efb7,_0x5d34b4,_0x535c88,_0x57f9a2,_0x3def99,_0x327def){var _0x38062a=_0x57f9a2[_0x001c('0x5d')](/\\n/g,'\x0a');var _0x18af64={'credentials':{'private_key':_0x38062a,'client_email':_0x535c88}};var _0x28fd2a=new dialogflow[(_0x001c('0x5e'))](_0x18af64);var _0xbdcbaf=_0x28fd2a[_0x001c('0x5f')](_0x5d34b4,md5(_0x34efb7));var _0x1161d8={'session':_0xbdcbaf,'queryInput':{'text':{'text':_0x3def99,'languageCode':_0x327def}}};return _0x28fd2a['detectIntent'](_0x1161d8)['then'](function(_0x1cab7d){if(_0x1cab7d&&_0x1cab7d['length']){logger['info']('Dialogflow\x20V2\x20response:',JSON[_0x001c('0x3c')](_0x1cab7d));var _0x504a28=_0x1cab7d[0x0];if(_0x504a28){var _0x5d3ee5={'action':_0x504a28[_0x001c('0x60')][_0x001c('0x56')],'allRequiredParamsPresent':_0x504a28[_0x001c('0x60')]['allRequiredParamsPresent'],'endConversation':_0x504a28[_0x001c('0x60')][_0x001c('0x61')]&&_0x504a28[_0x001c('0x60')]['diagnosticInfo'][_0x001c('0x62')]?_0x504a28[_0x001c('0x60')][_0x001c('0x61')][_0x001c('0x62')]['end_conversation'][_0x001c('0x63')]:![],'fulfillmentText':_0x504a28[_0x001c('0x60')][_0x001c('0x64')],'intentName':_0x504a28[_0x001c('0x60')][_0x001c('0x65')]['name'],'intentDisplayName':_0x504a28['queryResult']['intent'][_0x001c('0x66')],'isFallbackIntent':_0x504a28[_0x001c('0x60')][_0x001c('0x65')][_0x001c('0x67')],'languageCode':_0x504a28['queryResult'][_0x001c('0x68')],'queryText':_0x504a28[_0x001c('0x60')]['queryText'],'responseId':_0x504a28['responseId'],'score':_0x504a28[_0x001c('0x60')]['intentDetectionConfidence'],'speech':_0x504a28[_0x001c('0x60')][_0x001c('0x64')],'providerResponse':JSON[_0x001c('0x3c')](_0x1cab7d)};return _0x5d3ee5;}}});};exports[_0x001c('0x69')]=function(_0x40346f,_0x49f9e7,_0x5edbf8,_0x3f2ad4){return tilde['asr'](_0x40346f,_0x49f9e7,_0x5edbf8,_0x3f2ad4)[_0x001c('0x27')](function(_0x38da21){try{fs[_0x001c('0x1a')](_0x40346f);}catch(_0x2c5f49){logger[_0x001c('0x19')](_0x2c5f49);}logger['info'](_0x001c('0x6a'),_0x38da21[_0x001c('0x48')]);logger[_0x001c('0x17')](_0x001c('0x6b'),_0x38da21[_0x001c('0x4b')]);return _0x38da21;});};exports[_0x001c('0x6c')]=function(_0x179901,_0x78bc38,_0x56807d,_0x139325,_0x140c00,_0x13b6ff){var _0x7b4a71=path['resolve'](__dirname,_0x001c('0x22'),rs[_0x001c('0x23')](0x4)+_0x001c('0x34'));var _0x370973;return aws[_0x001c('0x6d')](_0x179901,_0x78bc38,_0x56807d,_0x139325,_0x140c00,_0x13b6ff,_0x7b4a71)[_0x001c('0x27')](function(){_0x370973=path[_0x001c('0x21')](__dirname,_0x001c('0x22'),rs[_0x001c('0x23')](0x4)+_0x001c('0x24'));return convertFile(_0x7b4a71,_0x370973);})[_0x001c('0x27')](function(){try{fs['unlink'](_0x7b4a71);fs[_0x001c('0x28')](_0x370973,_0x001c('0x37'));}catch(_0x381795){logger['error'](_0x381795);}return _0x370973['split']('.')[0x0];});};exports[_0x001c('0x6e')]=function(_0x396d68,_0xfc713d,_0x32794f,_0x416d53,_0x541bcb,_0x3a87e8){return aws['lex'](_0x396d68,_0xfc713d,_0x32794f,_0x416d53,_0x541bcb,_0x3a87e8)[_0x001c('0x27')](function(_0x3e658f){logger[_0x001c('0x17')](JSON[_0x001c('0x3c')](_0x3e658f));return _0x3e658f;});};exports[_0x001c('0x6f')]=function(_0x8b5e53,_0x5ad524,_0x40a1b7,_0x4bd6d9){var _0x356ed0=util[_0x001c('0x70')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x8b5e53,encodeURIComponent(_0x5ad524),_0x40a1b7,_0x4bd6d9);var _0x4c8136=path[_0x001c('0x21')](__dirname,_0x001c('0x22'),rs[_0x001c('0x23')](0x4)+_0x001c('0x34'));var _0x18ceaa;return downloadFile(_0x356ed0,_0x4c8136)[_0x001c('0x27')](function(){_0x18ceaa=path['resolve'](__dirname,_0x001c('0x22'),rs[_0x001c('0x23')](0x4)+_0x001c('0x24'));return convertFile(_0x4c8136,_0x18ceaa);})[_0x001c('0x27')](function(){try{fs[_0x001c('0x1a')](_0x4c8136);fs['chmodSync'](_0x18ceaa,_0x001c('0x37'));}catch(_0x2307bf){logger[_0x001c('0x19')](_0x2307bf);}return _0x18ceaa[_0x001c('0x29')]('.')[0x0];});};exports['ispeechASR']=function(_0x57019f,_0x5c220a,_0x34e8d6,_0x4f9050){var _0x4a3237=util[_0x001c('0x70')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x5c220a,_0x34e8d6,base64Encode(_0x57019f),_0x4f9050?util[_0x001c('0x70')](_0x001c('0x71'),encodeURIComponent(_0x4f9050)):_0x001c('0x72'));return uploadFile(_0x4a3237)[_0x001c('0x27')](function(_0x1a5bb5){return querystring[_0x001c('0x7')](_0x1a5bb5);});};exports[_0x001c('0x73')]=function(_0x4fd8df,_0x2f1fe5){return sestek['nda'](_0x4fd8df,_0x2f1fe5)[_0x001c('0x27')](function(_0x6489e2){logger[_0x001c('0x17')](JSON[_0x001c('0x3c')](_0x6489e2));var _0x34d255={'speech':_0x6489e2[_0x001c('0x74')],'action':_0x6489e2[_0x001c('0x75')]?_0x6489e2[_0x001c('0x75')][_0x001c('0x76')]:undefined,'actiondata':_0x6489e2[_0x001c('0x75')]?_0x6489e2[_0x001c('0x75')]['CustomActionData']:undefined};if(_0x6489e2[_0x001c('0x75')]&&_0x6489e2[_0x001c('0x75')][_0x001c('0x77')]){return base64Decode(_0x6489e2[_0x001c('0x75')][_0x001c('0x77')][_0x001c('0x78')],path[_0x001c('0x21')](__dirname,_0x001c('0x22'),rs[_0x001c('0x23')](0x4)+_0x001c('0x24')))[_0x001c('0x27')](function(_0x494797){_0x34d255[_0x001c('0x79')]=_0x494797;return _0x34d255;});}return _0x34d255;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
index 826975a..a92defa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c31=['./nda'];(function(_0x57f57d,_0x395f3c){var _0x37a743=function(_0x5e91c0){while(--_0x5e91c0){_0x57f57d['push'](_0x57f57d['shift']());}};_0x37a743(++_0x395f3c);}(_0x8c31,0x12c));var _0x18c3=function(_0x1e8952,_0x1536c2){_0x1e8952=_0x1e8952-0x0;var _0x3c24dd=_0x8c31[_0x1e8952];return _0x3c24dd;};var nda=require(_0x18c3('0x0'));module['exports']={'nda':nda};
\ No newline at end of file
+var _0x5959=['exports'];(function(_0x31dde9,_0x12e816){var _0x1fbf2d=function(_0x1d1bf6){while(--_0x1d1bf6){_0x31dde9['push'](_0x31dde9['shift']());}};_0x1fbf2d(++_0x12e816);}(_0x5959,0x11b));var _0x9595=function(_0x41159b,_0x18ae88){_0x41159b=_0x41159b-0x0;var _0x5bea4e=_0x5959[_0x41159b];return _0x5bea4e;};var nda=require('./nda');module[_0x9595('0x0')]={'nda':nda};
\ No newline at end of file
index 37a3cf7..4b578c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40b5=['channelData','CustomAction','custom_action','custom_action_data','CustomActionData','info','stringify','request-promise','url','../../../../../config/logger','agi','exports','POST','resolve','ndauth_url','/token','password','then','message','uniqueid','dnid','extension','Bearer\x20','access_token','project','body','ProjectName','ndagenerate_audio','AudioOutputSettings'];(function(_0x23c3f4,_0x24f0b3){var _0x82f0f1=function(_0x1071d6){while(--_0x1071d6){_0x23c3f4['push'](_0x23c3f4['shift']());}};_0x82f0f1(++_0x24f0b3);}(_0x40b5,0x1d7));var _0x540b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x40b5[_0x3dd15e];return _0x231fd0;};'use strict';var rp=require(_0x540b('0x0'));var url=require(_0x540b('0x1'));var logger=require(_0x540b('0x2'))(_0x540b('0x3'));module[_0x540b('0x4')]=function(_0x273ac6,_0x424c68){var _0x4bfe55={'method':_0x540b('0x5'),'uri':url[_0x540b('0x6')](_0x424c68[_0x540b('0x7')],_0x540b('0x8')),'form':{'grant_type':_0x540b('0x9'),'username':_0x424c68['username'],'password':_0x424c68[_0x540b('0x9')]},'json':!![]};return rp(_0x4bfe55)[_0x540b('0xa')](function(_0x316ab7){var _0x5aeb5f={'method':'POST','uri':url[_0x540b('0x6')](_0x424c68['ndassistant_url'],'/api/NaturalDialogAssistant/v1/Run'),'body':{'type':_0x424c68['ndaactivity_type']||_0x540b('0xb'),'channelId':'Nda','conversation':{'id':_0x273ac6[_0x540b('0xc')]},'from':{'id':_0x273ac6['callerid'],'name':_0x273ac6['calleridname']},'recipient':{'id':_0x273ac6[_0x540b('0xd')],'name':_0x273ac6[_0x540b('0xe')]},'text':_0x424c68['text'],'channelData':{}},'headers':{'Authorization':_0x540b('0xf')+_0x316ab7[_0x540b('0x10')]},'json':!![]};if(_0x424c68[_0x540b('0x11')]){_0x5aeb5f[_0x540b('0x12')]['channelData'][_0x540b('0x13')]=_0x424c68[_0x540b('0x11')];}if(_0x424c68[_0x540b('0x14')]=='1'){_0x5aeb5f[_0x540b('0x12')]['channelData'][_0x540b('0x15')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0x424c68['custom_action']){_0x5aeb5f[_0x540b('0x12')][_0x540b('0x16')][_0x540b('0x17')]=_0x424c68[_0x540b('0x18')];if(_0x424c68[_0x540b('0x19')]){_0x5aeb5f['body'][_0x540b('0x16')][_0x540b('0x1a')]=_0x424c68[_0x540b('0x19')];}}logger[_0x540b('0x1b')](JSON[_0x540b('0x1c')](_0x5aeb5f));return rp(_0x5aeb5f);});};
\ No newline at end of file
+var _0x7341=['body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','CustomActionData','stringify','../../../../../config/logger','exports','POST','resolve','ndauth_url','/token','password','username','then','ndaactivity_type','message','Nda','uniqueid','callerid','calleridname','dnid','extension','text','Bearer\x20','project'];(function(_0x127dd9,_0x2da436){var _0x277545=function(_0x54a67b){while(--_0x54a67b){_0x127dd9['push'](_0x127dd9['shift']());}};_0x277545(++_0x2da436);}(_0x7341,0xe4));var _0x1734=function(_0x1b73f2,_0x355c9d){_0x1b73f2=_0x1b73f2-0x0;var _0xb37dbc=_0x7341[_0x1b73f2];return _0xb37dbc;};'use strict';var rp=require('request-promise');var url=require('url');var logger=require(_0x1734('0x0'))('agi');module[_0x1734('0x1')]=function(_0x36397c,_0x47c889){var _0x3bf99a={'method':_0x1734('0x2'),'uri':url[_0x1734('0x3')](_0x47c889[_0x1734('0x4')],_0x1734('0x5')),'form':{'grant_type':_0x1734('0x6'),'username':_0x47c889[_0x1734('0x7')],'password':_0x47c889['password']},'json':!![]};return rp(_0x3bf99a)[_0x1734('0x8')](function(_0x2c223d){var _0x45c529={'method':'POST','uri':url[_0x1734('0x3')](_0x47c889['ndassistant_url'],'/api/NaturalDialogAssistant/v1/Run'),'body':{'type':_0x47c889[_0x1734('0x9')]||_0x1734('0xa'),'channelId':_0x1734('0xb'),'conversation':{'id':_0x36397c[_0x1734('0xc')]},'from':{'id':_0x36397c[_0x1734('0xd')],'name':_0x36397c[_0x1734('0xe')]},'recipient':{'id':_0x36397c[_0x1734('0xf')],'name':_0x36397c[_0x1734('0x10')]},'text':_0x47c889[_0x1734('0x11')],'channelData':{}},'headers':{'Authorization':_0x1734('0x12')+_0x2c223d['access_token']},'json':!![]};if(_0x47c889[_0x1734('0x13')]){_0x45c529[_0x1734('0x14')][_0x1734('0x15')][_0x1734('0x16')]=_0x47c889[_0x1734('0x13')];}if(_0x47c889[_0x1734('0x17')]=='1'){_0x45c529[_0x1734('0x14')][_0x1734('0x15')][_0x1734('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x1734('0x19')};}if(_0x47c889[_0x1734('0x1a')]){_0x45c529[_0x1734('0x14')][_0x1734('0x15')][_0x1734('0x1b')]=_0x47c889[_0x1734('0x1a')];if(_0x47c889[_0x1734('0x1c')]){_0x45c529[_0x1734('0x14')][_0x1734('0x15')][_0x1734('0x1d')]=_0x47c889['custom_action_data'];}}logger['info'](JSON[_0x1734('0x1e')](_0x45c529));return rp(_0x45c529);});};
\ No newline at end of file
index 519869e..fb16c8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x585d=['exports'];(function(_0x56f13c,_0x1ddde3){var _0x28888a=function(_0x5971a3){while(--_0x5971a3){_0x56f13c['push'](_0x56f13c['shift']());}};_0x28888a(++_0x1ddde3);}(_0x585d,0x76));var _0xd585=function(_0x192847,_0x5b458){_0x192847=_0x192847-0x0;var _0x169716=_0x585d[_0x192847];return _0x169716;};'use strict';var asr=require('./lib/api');module[_0xd585('0x0')]=function(_0x5bad4b,_0x327e16,_0x386608,_0x1f4f71){return asr(_0x5bad4b,_0x327e16,_0x386608,_0x1f4f71);};
\ No newline at end of file
+var _0x10e0=['./lib/api','exports'];(function(_0x41c77d,_0x3199a1){var _0x4e10f1=function(_0x1fd748){while(--_0x1fd748){_0x41c77d['push'](_0x41c77d['shift']());}};_0x4e10f1(++_0x3199a1);}(_0x10e0,0x19e));var _0x010e=function(_0x45493c,_0x39478b){_0x45493c=_0x45493c-0x0;var _0xe89240=_0x10e0[_0x45493c];return _0xe89240;};'use strict';var asr=require(_0x010e('0x0'));module[_0x010e('0x1')]=function(_0x5bfc55,_0xb48e3d,_0x194f28,_0x34c62f){return asr(_0x5bfc55,_0xb48e3d,_0x194f28,_0x34c62f);};
\ No newline at end of file
index 4d72dbe..94cee6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd956=['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.','error','Close\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','bluebird','lodash','crypto','../../../../../../config/logger','Tilde\x20URI','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','hex','info','unix','send','stringify','createReadStream','close','EOS','Tilde\x20ASR\x20send\x20error','terminate','parse','result','final','Tilde\x20ASR\x20hypoteses','hypotheses'];(function(_0x3c97ea,_0x553e28){var _0x4c09b3=function(_0x5f78f6){while(--_0x5f78f6){_0x3c97ea['push'](_0x3c97ea['shift']());}};_0x4c09b3(++_0x553e28);}(_0xd956,0x10f));var _0x6d95=function(_0x1875c9,_0x2f9a53){_0x1875c9=_0x1875c9-0x0;var _0x7d9618=_0xd956[_0x1875c9];return _0x7d9618;};'use strict';var BPromise=require(_0x6d95('0x0'));var _=require(_0x6d95('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require('moment');var crypto=require(_0x6d95('0x2'));var logger=require(_0x6d95('0x3'))('agi');module['exports']=function(_0x20fd13,_0x192542,_0x3e2673,_0x296cfa){return new BPromise(function(_0x3b2d97,_0x1a55e6){logger['info'](_0x6d95('0x4'),_0x296cfa||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x254f3d=new WebSocket(_0x296cfa||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x55b139='';var _0x2b0b4b='0';var _0x3a0125='1';var _0x5d2780=_0x6d95('0x5');function _0x5893bb(_0x57974a){var _0x391603=crypto[_0x6d95('0x6')](_0x6d95('0x7'));_0x391603[_0x6d95('0x8')](_0x57974a);return _0x391603[_0x6d95('0x9')](_0x6d95('0xa'));}function _0x344b9a(){try{logger[_0x6d95('0xb')]('Open\x20Tilde\x20ASR\x20socket');var _0x11b2c9=moment()[_0x6d95('0xc')]();var _0x58f376=_0x5893bb(_0x11b2c9+_0x192542+_0x3e2673);_0x254f3d[_0x6d95('0xd')](JSON[_0x6d95('0xe')]({'appID':_0x192542,'timestamp':_0x11b2c9,'appKey':_0x58f376}));var _0x414010=fs[_0x6d95('0xf')](_0x20fd13);_0x414010['on']('data',function(_0x436925){_0x254f3d['send'](_0x436925);});_0x414010['on'](_0x6d95('0x10'),function(){_0x254f3d['send'](_0x6d95('0x11'));});}catch(_0x2f102d){logger['error'](_0x6d95('0x12'),JSON['stringify'](_0x2f102d));_0x254f3d[_0x6d95('0x13')]();}}function _0x1623b9(_0x33b4f1){try{if(_0x33b4f1){var _0x1c779b=JSON[_0x6d95('0x14')](_0x33b4f1);switch(_0x1c779b['status']){case 0x0:if(_0x1c779b['result']){if(_0x1c779b[_0x6d95('0x15')][_0x6d95('0x16')]){logger[_0x6d95('0xb')](_0x6d95('0x17'),JSON[_0x6d95('0xe')](_0x1c779b[_0x6d95('0x15')][_0x6d95('0x18')]));_0x55b139=_0x1c779b[_0x6d95('0x15')][_0x6d95('0x18')][0x0][_0x6d95('0x19')];_0x2b0b4b=_0x1c779b[_0x6d95('0x15')]['hypotheses'][0x0]['likelihood'];_0x3a0125='0';_0x5d2780=_0x6d95('0x1a');_0x254f3d[_0x6d95('0x13')]();}}break;case 0x1:logger[_0x6d95('0xb')](_0x6d95('0x5'));_0x3a0125='1';_0x5d2780='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger[_0x6d95('0xb')](_0x6d95('0x1b'));_0x3a0125='2';_0x5d2780=_0x6d95('0x1b');break;case 0x9:logger['info'](_0x6d95('0x1c'));_0x3a0125='9';_0x5d2780=_0x6d95('0x1c');break;case 0xa:logger[_0x6d95('0xb')](_0x6d95('0x1d'));_0x3a0125='10';_0x5d2780=_0x6d95('0x1d');break;case 0xb:logger[_0x6d95('0xb')](_0x6d95('0x1e'));_0x3a0125='11';_0x5d2780=_0x6d95('0x1e');}}}catch(_0x39f1b1){logger[_0x6d95('0x1f')]('Tilde\x20ASR\x20parse\x20error',JSON[_0x6d95('0xe')](_0x39f1b1));_0x254f3d[_0x6d95('0x13')]();}}function _0x2dd7ef(){logger['info'](_0x6d95('0x20'));_0x3b2d97({'transcript':_0x55b139,'confidence':_0x2b0b4b,'status':_0x3a0125,'status_message':_0x5d2780});}function _0x5b5af6(_0x4f3349){logger[_0x6d95('0x1f')]('Error\x20Tilde\x20ASR\x20socket');if(!_[_0x6d95('0x21')](_0x4f3349)){logger['error'](_[_0x6d95('0x22')](_0x4f3349)?JSON[_0x6d95('0xe')](_0x4f3349):_0x4f3349);}}_0x254f3d['on'](_0x6d95('0x23'),_0x344b9a);_0x254f3d['on'](_0x6d95('0x24'),_0x1623b9);_0x254f3d['on'](_0x6d95('0x10'),_0x2dd7ef);_0x254f3d['on'](_0x6d95('0x1f'),_0x5b5af6);});};
\ No newline at end of file
+var _0xf70b=['info','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','digest','Open\x20Tilde\x20ASR\x20socket','unix','stringify','createReadStream','send','close','EOS','error','Tilde\x20ASR\x20send\x20error','parse','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','terminate','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.','Close\x20Tilde\x20ASR\x20socket','isNil','isObject','message','bluebird','lodash','moment','crypto','agi','exports'];(function(_0xc633cd,_0x50d58d){var _0x29cd38=function(_0x3395bd){while(--_0x3395bd){_0xc633cd['push'](_0xc633cd['shift']());}};_0x29cd38(++_0x50d58d);}(_0xf70b,0x142));var _0xbf70=function(_0xf44a4f,_0x35f32c){_0xf44a4f=_0xf44a4f-0x0;var _0x255f0c=_0xf70b[_0xf44a4f];return _0x255f0c;};'use strict';var BPromise=require(_0xbf70('0x0'));var _=require(_0xbf70('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xbf70('0x2'));var crypto=require(_0xbf70('0x3'));var logger=require('../../../../../../config/logger')(_0xbf70('0x4'));module[_0xbf70('0x5')]=function(_0x1d01f3,_0x1f8693,_0x211719,_0x3ab25a){return new BPromise(function(_0x18b65a,_0x40980f){logger[_0xbf70('0x6')](_0xbf70('0x7'),_0x3ab25a||_0xbf70('0x8'));var _0x160fe9=new WebSocket(_0x3ab25a||_0xbf70('0x8'),{'perMessageDeflate':![]});var _0x2d99d3='';var _0x381819='0';var _0x1252f9='1';var _0x568d0=_0xbf70('0x9');function _0x2911c9(_0x3296d7){var _0x46db11=crypto[_0xbf70('0xa')](_0xbf70('0xb'));_0x46db11[_0xbf70('0xc')](_0x3296d7);return _0x46db11[_0xbf70('0xd')]('hex');}function _0xfd2e18(){try{logger[_0xbf70('0x6')](_0xbf70('0xe'));var _0x5d439c=moment()[_0xbf70('0xf')]();var _0x550235=_0x2911c9(_0x5d439c+_0x1f8693+_0x211719);_0x160fe9['send'](JSON[_0xbf70('0x10')]({'appID':_0x1f8693,'timestamp':_0x5d439c,'appKey':_0x550235}));var _0x240a4e=fs[_0xbf70('0x11')](_0x1d01f3);_0x240a4e['on']('data',function(_0x207e46){_0x160fe9[_0xbf70('0x12')](_0x207e46);});_0x240a4e['on'](_0xbf70('0x13'),function(){_0x160fe9[_0xbf70('0x12')](_0xbf70('0x14'));});}catch(_0x2afc35){logger[_0xbf70('0x15')](_0xbf70('0x16'),JSON['stringify'](_0x2afc35));_0x160fe9['terminate']();}}function _0x2a6e0e(_0x14d3cf){try{if(_0x14d3cf){var _0x517f62=JSON[_0xbf70('0x17')](_0x14d3cf);switch(_0x517f62[_0xbf70('0x18')]){case 0x0:if(_0x517f62[_0xbf70('0x19')]){if(_0x517f62['result'][_0xbf70('0x1a')]){logger[_0xbf70('0x6')](_0xbf70('0x1b'),JSON[_0xbf70('0x10')](_0x517f62['result'][_0xbf70('0x1c')]));_0x2d99d3=_0x517f62['result'][_0xbf70('0x1c')][0x0][_0xbf70('0x1d')];_0x381819=_0x517f62['result'][_0xbf70('0x1c')][0x0][_0xbf70('0x1e')];_0x1252f9='0';_0x568d0=_0xbf70('0x1f');_0x160fe9[_0xbf70('0x20')]();}}break;case 0x1:logger[_0xbf70('0x6')](_0xbf70('0x9'));_0x1252f9='1';_0x568d0='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger[_0xbf70('0x6')](_0xbf70('0x21'));_0x1252f9='2';_0x568d0='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0xbf70('0x6')]('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0x1252f9='9';_0x568d0=_0xbf70('0x22');break;case 0xa:logger[_0xbf70('0x6')]('Authentication\x20failed.');_0x1252f9='10';_0x568d0=_0xbf70('0x23');break;case 0xb:logger[_0xbf70('0x6')](_0xbf70('0x24'));_0x1252f9='11';_0x568d0=_0xbf70('0x24');}}}catch(_0x438a59){logger['error']('Tilde\x20ASR\x20parse\x20error',JSON['stringify'](_0x438a59));_0x160fe9['terminate']();}}function _0x5218b7(){logger[_0xbf70('0x6')](_0xbf70('0x25'));_0x18b65a({'transcript':_0x2d99d3,'confidence':_0x381819,'status':_0x1252f9,'status_message':_0x568d0});}function _0x3e4879(_0x55a4f1){logger[_0xbf70('0x15')]('Error\x20Tilde\x20ASR\x20socket');if(!_[_0xbf70('0x26')](_0x55a4f1)){logger['error'](_[_0xbf70('0x27')](_0x55a4f1)?JSON[_0xbf70('0x10')](_0x55a4f1):_0x55a4f1);}}_0x160fe9['on']('open',_0xfd2e18);_0x160fe9['on'](_0xbf70('0x28'),_0x2a6e0e);_0x160fe9['on'](_0xbf70('0x13'),_0x5218b7);_0x160fe9['on'](_0xbf70('0x15'),_0x3e4879);});};
\ No newline at end of file
index be883a7..77f76fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c69=['./asr'];(function(_0x3c3270,_0x957d68){var _0xfa136=function(_0x3ce463){while(--_0x3ce463){_0x3c3270['push'](_0x3c3270['shift']());}};_0xfa136(++_0x957d68);}(_0x8c69,0xcd));var _0x98c6=function(_0x4d6e3a,_0x40aaec){_0x4d6e3a=_0x4d6e3a-0x0;var _0x3b93f5=_0x8c69[_0x4d6e3a];return _0x3b93f5;};var asr=require(_0x98c6('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
+var _0x90ce=['exports'];(function(_0xf7ff4,_0x543a19){var _0x554e6a=function(_0x4b8192){while(--_0x4b8192){_0xf7ff4['push'](_0xf7ff4['shift']());}};_0x554e6a(++_0x543a19);}(_0x90ce,0x1ae));var _0xe90c=function(_0x564821,_0x4d037e){_0x564821=_0x564821-0x0;var _0x2b604d=_0x90ce[_0x564821];return _0x2b604d;};var asr=require('./asr');module[_0xe90c('0x0')]={'asr':asr};
\ No newline at end of file
index 2dba1a5..4276392 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd0b=['inherits','exports','util','net','EventEmitter','./channel','127.0.0.1','call','emit','error','createServer','listen','listening','connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','code','E_AGI_SERVER_CLOSE','nextTick'];(function(_0x5bbe39,_0x1b67e3){var _0x5c0a1d=function(_0x510b1a){while(--_0x510b1a){_0x5bbe39['push'](_0x5bbe39['shift']());}};_0x5c0a1d(++_0x1b67e3);}(_0xcd0b,0xde));var _0xbcd0=function(_0x4c7118,_0x1f8973){_0x4c7118=_0x4c7118-0x0;var _0x4298cb=_0xcd0b[_0x4c7118];return _0x4298cb;};'use strict';var util=require(_0xbcd0('0x0'));var net=require(_0xbcd0('0x1'));var EventEmitter=require('events')[_0xbcd0('0x2')];var AGIError=require('./error');var AGIChannel=require(_0xbcd0('0x3'));var AGIServer=function(_0x10b5be,_0x28389b,_0x43a84e){var _0x2aad18=this,_0x10b5be=_0x10b5be||0x11dd,_0x28389b=_0x28389b||_0xbcd0('0x4'),_0xdb936d=null,_0x1b84e0=0x0;EventEmitter[_0xbcd0('0x5')](_0x2aad18);function _0x149434(){if(!_0x10b5be){_0x2aad18[_0xbcd0('0x6')](_0xbcd0('0x7'),new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0xdb936d=net[_0xbcd0('0x8')]();_0xdb936d[_0xbcd0('0x9')](_0x10b5be,_0x28389b);_0xdb936d['on']('listening',function(){_0x2aad18[_0xbcd0('0x6')](_0xbcd0('0xa'));});_0xdb936d['on'](_0xbcd0('0xb'),function(_0x5eff5a){_0xdb936d[_0xbcd0('0xc')](function(_0x25ebf0,_0x20e50f){if(_0x25ebf0){_0x2aad18[_0xbcd0('0x6')](_0xbcd0('0x7'),new AGIError(_0xbcd0('0xd'),_0x25ebf0));}else if(_0x43a84e&&_0x43a84e<0x0){_0x2aad18[_0xbcd0('0x6')](_0xbcd0('0x7'),new AGIError(_0xbcd0('0xe')));_0x5eff5a[_0xbcd0('0xf')]();}else if(_0x43a84e&&_0x43a84e>0x0&&_0x43a84e<_0x20e50f){_0x1b84e0+=0x1;_0x2aad18[_0xbcd0('0x6')](_0xbcd0('0x7'),new AGIError(_0xbcd0('0x10'),_0x1b84e0));_0x5eff5a['destroy']();}else{var _0x7e6d72=new AGIChannel(_0x5eff5a);_0x7e6d72['on']('ready',function(){_0x2aad18[_0xbcd0('0x6')](_0xbcd0('0xb'),_0x7e6d72);});}});});_0xdb936d['on'](_0xbcd0('0x7'),function(_0x40d0c4){_0x2aad18[_0xbcd0('0x6')](_0xbcd0('0x7'),new AGIError('E_AGI_SERVER_ERROR',_0x40d0c4[_0xbcd0('0x11')]));});_0xdb936d['on']('close',function(){_0x2aad18[_0xbcd0('0x6')]('close',new AGIError(_0xbcd0('0x12')));});}process[_0xbcd0('0x13')](function(){_0x149434();});};util[_0xbcd0('0x14')](AGIServer,EventEmitter);module[_0xbcd0('0x15')]=function(_0x534e74,_0x477c3c,_0xa5a640){return new AGIServer(_0x534e74,_0x477c3c,_0xa5a640);};
\ No newline at end of file
+var _0xa988=['E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','connection','code','close','nextTick','inherits','exports','util','net','EventEmitter','./error','./channel','call','emit','error','E_AGI_ARGUMENT_PORT','createServer','listen','listening'];(function(_0x475c65,_0x5c1a59){var _0x24e281=function(_0x9d980){while(--_0x9d980){_0x475c65['push'](_0x475c65['shift']());}};_0x24e281(++_0x5c1a59);}(_0xa988,0x11a));var _0x8a98=function(_0x1312a2,_0x21d2ea){_0x1312a2=_0x1312a2-0x0;var _0x43ea4f=_0xa988[_0x1312a2];return _0x43ea4f;};'use strict';var util=require(_0x8a98('0x0'));var net=require(_0x8a98('0x1'));var EventEmitter=require('events')[_0x8a98('0x2')];var AGIError=require(_0x8a98('0x3'));var AGIChannel=require(_0x8a98('0x4'));var AGIServer=function(_0x54c035,_0x2a5266,_0x228a0c){var _0x2d0bd0=this,_0x54c035=_0x54c035||0x11dd,_0x2a5266=_0x2a5266||'127.0.0.1',_0x1c1ce7=null,_0x1dda2f=0x0;EventEmitter[_0x8a98('0x5')](_0x2d0bd0);function _0x2dcd9e(){if(!_0x54c035){_0x2d0bd0[_0x8a98('0x6')](_0x8a98('0x7'),new AGIError(_0x8a98('0x8')));return![];}_0x1c1ce7=net[_0x8a98('0x9')]();_0x1c1ce7[_0x8a98('0xa')](_0x54c035,_0x2a5266);_0x1c1ce7['on']('listening',function(){_0x2d0bd0[_0x8a98('0x6')](_0x8a98('0xb'));});_0x1c1ce7['on']('connection',function(_0x536570){_0x1c1ce7['getConnections'](function(_0x1e6620,_0x356562){if(_0x1e6620){_0x2d0bd0['emit'](_0x8a98('0x7'),new AGIError(_0x8a98('0xc'),_0x1e6620));}else if(_0x228a0c&&_0x228a0c<0x0){_0x2d0bd0[_0x8a98('0x6')]('error',new AGIError(_0x8a98('0xd')));_0x536570[_0x8a98('0xe')]();}else if(_0x228a0c&&_0x228a0c>0x0&&_0x228a0c<_0x356562){_0x1dda2f+=0x1;_0x2d0bd0[_0x8a98('0x6')](_0x8a98('0x7'),new AGIError('E_AGI_SERVER_MAXCONNECTION',_0x1dda2f));_0x536570[_0x8a98('0xe')]();}else{var _0x42b86f=new AGIChannel(_0x536570);_0x42b86f['on']('ready',function(){_0x2d0bd0[_0x8a98('0x6')](_0x8a98('0xf'),_0x42b86f);});}});});_0x1c1ce7['on'](_0x8a98('0x7'),function(_0x4f4927){_0x2d0bd0[_0x8a98('0x6')](_0x8a98('0x7'),new AGIError(_0x8a98('0xc'),_0x4f4927[_0x8a98('0x10')]));});_0x1c1ce7['on'](_0x8a98('0x11'),function(){_0x2d0bd0[_0x8a98('0x6')](_0x8a98('0x11'),new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x8a98('0x12')](function(){_0x2dcd9e();});};util[_0x8a98('0x13')](AGIServer,EventEmitter);module[_0x8a98('0x14')]=function(_0x3ec562,_0x43a4e7,_0x50a1eb){return new AGIServer(_0x3ec562,_0x43a4e7,_0x50a1eb);};
\ No newline at end of file
index 5e0ac43..bcf5e72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4910=['tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','VOICEMAIL','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','replaceAll','join','exports','path','util','lodash','odbc','randomstring','moment','mustache','request-promise','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','menu','getdigits','getsecretdigits','channel','mailRpc','prototype','getVariable','rpc','getVariableById','then','name','getVoiceQueue','getVoiceQueueById','catch','getSquareProject','getSquareProjectById','getSquareOdbc','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundById','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','IntervalId','map','Intervals','getSoundPath','format','getQueryOdbc','open','error','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','createSquareRecording','callerid','calleridname','context','priority','accountcode','dnid','arg_1','file','createSquareMessage','createCmContact','isEmpty','isNil','random','lastName','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','shellCommand','trim','googleCloudTTS','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','MP3','googleTTS','google_tts_language','restAPI','url','timeout','number','POST','PUT','method','body','parse','rawBody','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','sync','render','headers','stringify','statusMessage','statusCode','message','options','googleDialogflow','dialogflow_language','googleDialogflowV2','sestekNDA','key','speed','ispeechASR','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','Amy','aws_text_type','awsLex','googleASR','google_asr_language','tildeASR','uri','clear','includes','agicommand','clone','hasOwnProperty','isString','replaceAllVariables','recursiveNodeIndex','isPlainObject','isArray','length','saveRestApiResult','%s.%s','setVariable','replaceObjectAllVariables','split','extra','getAndSetVariable','retry','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','no\x20text\x20configured','exec','result','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','label','grammar','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','Enter\x20in\x20ANSWER\x20(%s)\x20block','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','add','delay','minutes','noop','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','MRCPSynth','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','no\x20grammar\x20configured','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','RECOG_INSTANCE()','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\x20query\x20configured','replace','query:\x20%s','variable_id','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20found','DIAL','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','Trying\x20Dialogflow:\x20%s','speech','out','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','dialogflowV2_project_id','no\x20project_id\x20configured','client_email','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','bot','Trying\x20DialogflowV2:\x20%s','DIALOGFLOW_%s','dialogflowV2','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','no\x20username\x20configured','password','no\x20password\x20configured','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','toUpperCase','audiofile','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','trunk_id','no\x20trunk\x20selected','finally','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','no\x20file\x20audio\x20found','no\x20variable\x20selected\x20for\x20the\x20result','getData','response','maxdigit','test','mindigit','hiddendigitspos','first','substr','generate','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','GOAL\x20%s','goalname','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','aws\x20Polly\x20is\x20unreachable','awslex','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','Amazon\x20Lex\x20is\x20unreachable','googleasr','wav','%s/recordings/%s','beep','NOBEEP','recordFile','google\x20%s\x20file\x20created','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','appid','no\x20appid\x20configured','appsecret','no\x20appsecret\x20configured','intKey','tilde\x20%s\x20file\x20created','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','extension','Enter\x20in\x20GOTOIF\x20(%s)\x20block','no\x20condition\x20configured','condition','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','interval_id','no\x20interval\x20configured','IFTIME(%s?true:false)','true','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','no\x20key\x20configured','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeechTTS','ispeech\x20TTS\x20is\x20unreachable','login','findBy','no\x20find\x20by\x20configured','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','file_id','no\x20file\x20audio\x20selected','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','Enter\x20in\x20PAUSE\x20(%s)\x20block','FIND\x20AGENT\x20%s\x20BY\x20%s','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','toLowerCase','macro','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s/recordings/%s.%s','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','Response:','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','getMailAccount','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','user','bcc','subject','service','host','port','secure','authentication','template_id','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','START\x20CALLY\x20SQUARE','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','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','apiKey','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s'];(function(_0x33ec80,_0x2f867b){var _0x1877d9=function(_0x50748a){while(--_0x50748a){_0x33ec80['push'](_0x33ec80['shift']());}};_0x1877d9(++_0x2f867b);}(_0x4910,0x1d9));var _0x0491=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x4910[_0x502c7d];return _0x30b7ed;};'use strict';var fs=require('fs');var path=require(_0x0491('0x0'));var util=require(_0x0491('0x1'));var _=require(_0x0491('0x2'));var sh=require('shelljs');var odbc=require(_0x0491('0x3'))();var rs=require(_0x0491('0x4'));var moment=require(_0x0491('0x5'));var Mustache=require(_0x0491('0x6'));var rp=require(_0x0491('0x7'));var logger=require('../../config/logger')(_0x0491('0x8'));var config=require(_0x0491('0x9'));var scripts=require(_0x0491('0xa'));var FILES_PATH=_0x0491('0xb');var recursiveMapAttributes=[_0x0491('0xc'),'rawBody'];var verticesWithRetry=[_0x0491('0xd'),_0x0491('0xe'),_0x0491('0xf')];var AGIVertices=function(_0x3ab727,_0x3d7f0b,_0x4822d5){this[_0x0491('0x10')]=_0x3ab727;this['rpc']=_0x3d7f0b;this[_0x0491('0x11')]=_0x4822d5;};AGIVertices[_0x0491('0x12')][_0x0491('0x13')]=function(_0x108308,_0x3b8318){this[_0x0491('0x14')][_0x0491('0x15')](_0x108308)[_0x0491('0x16')](function(_0x29feb6){_0x3b8318(null,_0x29feb6?_0x29feb6[_0x0491('0x17')]:![]);})['catch'](function(_0x9e022){_0x3b8318(_0x9e022);});};AGIVertices['prototype'][_0x0491('0x18')]=function(_0x5d32fa,_0x4bbd03){this[_0x0491('0x14')][_0x0491('0x19')](_0x5d32fa)[_0x0491('0x16')](function(_0x2f1a37){_0x4bbd03(null,_0x2f1a37?_0x2f1a37[_0x0491('0x17')]:![]);})[_0x0491('0x1a')](function(_0x7972b9){_0x4bbd03(_0x7972b9);});};AGIVertices[_0x0491('0x12')][_0x0491('0x1b')]=function(_0x1411a6,_0x527415){this[_0x0491('0x14')][_0x0491('0x1c')](_0x1411a6)[_0x0491('0x16')](function(_0x31bc2c){_0x527415(null,_0x31bc2c?_0x31bc2c[_0x0491('0x17')]:![]);})[_0x0491('0x1a')](function(_0x4ba009){_0x527415(_0x4ba009);});};AGIVertices[_0x0491('0x12')][_0x0491('0x1d')]=function(_0x4e94f8,_0x54be7f){this[_0x0491('0x14')]['getSquareOdbcById'](_0x4e94f8)[_0x0491('0x16')](function(_0x431782){_0x54be7f(null,_0x431782?_0x431782['dsn']:![]);})[_0x0491('0x1a')](function(_0x22776d){_0x54be7f(_0x22776d);});};AGIVertices[_0x0491('0x12')][_0x0491('0x1e')]=function(_0x56cb4a,_0x23146d){this[_0x0491('0x14')][_0x0491('0x1f')](_0x56cb4a)['then'](function(_0x1498c2){_0x23146d(null,_0x1498c2?_0x1498c2[_0x0491('0x17')]:![]);})[_0x0491('0x1a')](function(_0x1934a0){_0x23146d(_0x1934a0);});};AGIVertices[_0x0491('0x12')][_0x0491('0x20')]=function(_0x207ff9,_0x4ab232){this[_0x0491('0x14')][_0x0491('0x21')](_0x207ff9)[_0x0491('0x16')](function(_0x93bc14){_0x4ab232(null,_0x93bc14?_0x93bc14[_0x0491('0x17')]:![]);})['catch'](function(_0x12ebdb){_0x4ab232(_0x12ebdb);});};AGIVertices[_0x0491('0x12')][_0x0491('0x22')]=function(_0x2d13c4,_0xe0e31e){var _0xae6fc6=this;this[_0x0491('0x14')][_0x0491('0x23')](_0x2d13c4)[_0x0491('0x16')](function(_0x15b80d){_0xe0e31e(null,_0x15b80d?_0xae6fc6['getSoundPath'](_0x15b80d['save_name']):![]);})['catch'](function(_0x5e6e30){_0xe0e31e(_0x5e6e30);});};AGIVertices[_0x0491('0x12')]['getMailAccount']=function(_0x46d432,_0xb82361){this[_0x0491('0x14')][_0x0491('0x24')](_0x46d432)[_0x0491('0x16')](function(_0x18278b){_0xb82361(null,_0x18278b?_0x18278b:![]);})[_0x0491('0x1a')](function(_0x49206a){_0xb82361(_0x49206a);});};AGIVertices[_0x0491('0x12')][_0x0491('0x25')]=function(_0x9b11c2,_0x5cb278,_0x4c2a8e){this['mailRpc']['sendMailMessage'](_0x9b11c2,_0x5cb278)[_0x0491('0x16')](function(){_0x4c2a8e(null);})['catch'](function(_0x2ad8b2){_0x4c2a8e(_0x2ad8b2);});};AGIVertices[_0x0491('0x12')][_0x0491('0x26')]=function(_0x42cebd,_0x250faf){this[_0x0491('0x14')][_0x0491('0x27')](_0x42cebd)[_0x0491('0x16')](function(_0x551b48){if(_0x551b48){if(_0x551b48[_0x0491('0x28')]){_0x250faf(null,[_0x551b48['interval']]);}else{_0x250faf(null,_[_0x0491('0x29')](_0x551b48[_0x0491('0x2a')],'interval'));}}else{_0x250faf(null,![]);}})[_0x0491('0x1a')](function(_0x5a946c){_0x250faf(_0x5a946c);});};AGIVertices[_0x0491('0x12')][_0x0491('0x2b')]=function(_0x404b74){return util[_0x0491('0x2c')]('%s/sounds/converted/%s',FILES_PATH,_0x404b74);};AGIVertices['prototype'][_0x0491('0x2d')]=function(_0x23379f,_0x2b21ee,_0x5a7507){odbc[_0x0491('0x2e')](_0x23379f,function(_0x528d7e){if(_0x528d7e){logger[_0x0491('0x2f')]('Error\x20getting\x20ODBC\x20connection\x20%s',_0x528d7e);_0x5a7507(_0x528d7e);}else{logger[_0x0491('0x30')](_0x0491('0x31'));odbc[_0x0491('0x32')](_0x2b21ee,function(_0x5c15c9,_0x4c42ec){if(_0x5c15c9){logger[_0x0491('0x30')](_0x0491('0x33'),_0x2b21ee);_0x5a7507(_0x5c15c9);}else{logger[_0x0491('0x30')]('Query\x20executed\x20correctly\x20%s',_0x2b21ee);odbc['close'](function(_0x360ec3){if(_0x360ec3){logger[_0x0491('0x2f')](_0x0491('0x34'),_0x360ec3);}_0x5a7507(null,_0x4c42ec);});}});}});};AGIVertices[_0x0491('0x12')][_0x0491('0x35')]=function(_0x2f0e31,_0x36c305){this['rpc'][_0x0491('0x36')](_0x2f0e31)[_0x0491('0x16')](function(_0x5207b0){_0x36c305(null,_0x5207b0?_0x5207b0:![]);})[_0x0491('0x1a')](function(_0x2e7566){_0x36c305(_0x2e7566);});};AGIVertices[_0x0491('0x12')][_0x0491('0x37')]=function(_0x13ddaa,_0x4aef48){this[_0x0491('0x14')][_0x0491('0x37')](_0x13ddaa)[_0x0491('0x16')](function(_0x42ec0e){_0x4aef48(null,_0x42ec0e);})[_0x0491('0x1a')](function(_0x6ef0a0){_0x4aef48(_0x6ef0a0);});};AGIVertices[_0x0491('0x12')][_0x0491('0x38')]=function(_0x20ead0,_0x20adae,_0x443544){this[_0x0491('0x14')]['createSquareDetailsReport']({'uniqueid':this['channel'][_0x0491('0x39')],'node':_0x20ead0['label'],'application':_0x20ead0['agicommand'],'data':_0x20adae||null,'project_name':this['channel']['arg_1'],'callerid':this[_0x0491('0x10')]['callerid']})[_0x0491('0x16')](function(_0x1ee25f){if(_0x443544){_0x443544(null,_0x1ee25f);}})[_0x0491('0x1a')](function(_0x4e06e1){if(_0x443544){_0x443544(_0x4e06e1);}});};AGIVertices[_0x0491('0x12')]['createSquareRecording']=function(_0x12fd5d,_0x52da6b,_0x16597e,_0x1f445e){this[_0x0491('0x14')][_0x0491('0x3a')]({'uniqueid':this[_0x0491('0x10')][_0x0491('0x39')],'callerid':this[_0x0491('0x10')][_0x0491('0x3b')],'calleridname':this[_0x0491('0x10')][_0x0491('0x3c')],'context':this[_0x0491('0x10')][_0x0491('0x3d')],'extension':this[_0x0491('0x10')]['extension'],'priority':this[_0x0491('0x10')][_0x0491('0x3e')],'accountcode':this[_0x0491('0x10')][_0x0491('0x3f')],'dnid':this[_0x0491('0x10')][_0x0491('0x40')],'projectName':this['channel'][_0x0491('0x41')],'saveName':_0x52da6b,'filename':_0x12fd5d[_0x0491('0x42')]||_0x52da6b,'savePath':_0x16597e})[_0x0491('0x16')](function(_0x290ed4){_0x1f445e(null,_0x290ed4);})['catch'](function(_0x5b4a87){_0x1f445e(_0x5b4a87);});};AGIVertices[_0x0491('0x12')][_0x0491('0x43')]=function(_0x2bd49a,_0x563c4f,_0x6dd643,_0x584f74,_0x129f9c){this['rpc'][_0x0491('0x43')]({'uniqueid':this[_0x0491('0x10')][_0x0491('0x39')],'body':_0x2bd49a,'direction':_0x563c4f,'providerName':_0x6dd643,'providerResponse':_0x584f74})[_0x0491('0x16')](function(_0x3c114a){if(_0x129f9c){_0x129f9c(null,_0x3c114a);}})['catch'](function(_0x217c52){if(_0x129f9c){_0x129f9c(_0x217c52);}});};AGIVertices['prototype']['createCmContact']=function(_0x35c242,_0x294cce){this[_0x0491('0x14')][_0x0491('0x44')]({'firstName':_[_0x0491('0x45')](_0x35c242[_0x0491('0x17')])||_[_0x0491('0x46')](_0x35c242[_0x0491('0x17')])?'callback_'+Math[_0x0491('0x47')]():_0x35c242[_0x0491('0x17')],'lastName':_[_0x0491('0x45')](_0x35c242[_0x0491('0x48')])||_[_0x0491('0x46')](_0x35c242['lastName'])?null:_0x35c242[_0x0491('0x48')],'phone':_0x35c242[_0x0491('0x49')],'ListId':_0x35c242[_0x0491('0x4a')],'scheduledat':_0x35c242[_0x0491('0x4b')],'callbackUniqueid':this[_0x0491('0x10')][_0x0491('0x39')],'tags':_0x0491('0x4c'),'description':_0x0491('0x4d')+_0x35c242['scheduledAt'][_0x0491('0x4e')](),'priority':_0x35c242[_0x0491('0x4f')]})[_0x0491('0x16')](function(_0x34b0da){_0x294cce(null,_0x34b0da);})[_0x0491('0x1a')](function(_0x112f8b){_0x294cce(_0x112f8b);});};AGIVertices[_0x0491('0x12')][_0x0491('0x50')]=function(_0x20cb2c,_0x5aea06){this[_0x0491('0x14')][_0x0491('0x51')](_0x20cb2c)[_0x0491('0x16')](function(_0x260d06){_0x5aea06(null,_0x260d06?_0x260d06['name']:![]);})['catch'](function(_0x547de3){_0x5aea06(_0x547de3);});};AGIVertices[_0x0491('0x12')][_0x0491('0x52')]=function(_0x55f888,_0x472b68,_0x475602){var _0x4bb695={'role':_0x0491('0x53')};_0x4bb695[_0x55f888]=this[_0x0491('0x10')][_0x0491('0x3b')];this[_0x0491('0x14')][_0x0491('0x52')](_0x4bb695,_0x472b68,this['channel'][_0x0491('0x39')])['then'](function(_0x4ea662){_0x475602(null,_[_0x0491('0x46')](_0x4ea662)?![]:!![]);})[_0x0491('0x1a')](function(_0x8bdff8){logger['error'](_0x8bdff8);_0x475602(null,![]);});};AGIVertices[_0x0491('0x12')][_0x0491('0x54')]=function(_0x52e5e0,_0x1b439e){var _0x4c97b={'role':_0x0491('0x53')};_0x4c97b[_0x52e5e0]=this[_0x0491('0x10')][_0x0491('0x3b')];this[_0x0491('0x14')][_0x0491('0x54')](_0x4c97b)['then'](function(_0x5df966){_0x1b439e(null,_[_0x0491('0x46')](_0x5df966)?![]:!![]);})[_0x0491('0x1a')](function(_0x4ae7eb){logger[_0x0491('0x2f')](_0x4ae7eb);_0x1b439e(null,![]);});};AGIVertices[_0x0491('0x12')][_0x0491('0x55')]=function(_0x3f41b1,_0x35d2a6){var _0x430e37={'role':'agent'};_0x430e37[_0x3f41b1]=this[_0x0491('0x10')][_0x0491('0x3b')];this[_0x0491('0x14')][_0x0491('0x55')](_0x430e37)['then'](function(_0x34e2f6){_0x35d2a6(null,_[_0x0491('0x46')](_0x34e2f6)?![]:!![]);})[_0x0491('0x1a')](function(_0x1359ef){logger['error'](_0x1359ef);_0x35d2a6(null,![]);});};AGIVertices[_0x0491('0x12')][_0x0491('0x56')]=function(_0x2652d9,_0x2b3cf9){var _0x1fe684={'role':'agent'};_0x1fe684[_0x2652d9]=this['channel']['callerid'];var _0x32ed58=_0x2652d9!=_0x0491('0x57')?util[_0x0491('0x2c')](_0x0491('0x58'),_0x0491('0x59'),this[_0x0491('0x10')][_0x0491('0x3b')]):undefined;this['rpc'][_0x0491('0x56')](_0x1fe684,_0x32ed58)['then'](function(_0x1f49dc){_0x2b3cf9(null,_[_0x0491('0x46')](_0x1f49dc)?![]:!![]);})[_0x0491('0x1a')](function(_0xe4af61){logger[_0x0491('0x2f')](_0xe4af61);_0x2b3cf9(null,![]);});};AGIVertices['prototype'][_0x0491('0x5a')]=function(_0xbcdac4,_0x508e7d){sh['exec'](_[_0x0491('0x5b')](_0xbcdac4),function(_0x162e1d,_0x544d84){var _0x1cf948=_0x544d84['replace'](/(\r\n|\n|\r)/gm,'');_0x508e7d(null,_0x1cf948);});};AGIVertices[_0x0491('0x12')][_0x0491('0x5c')]=function(_0x3117da,_0xd5aed4){scripts[_0x0491('0x5c')](_0x3117da['apiKey'],_0x3117da[_0x0491('0x5d')]||_0x0491('0x5e'),_0x3117da[_0x0491('0x5e')],_0x3117da[_0x0491('0x5f')]||_0x0491('0x60'),_0x3117da[_0x0491('0x61')]||_0x0491('0x62'),_0x3117da[_0x0491('0x63')]||_0x0491('0x64'))[_0x0491('0x16')](function(_0xc3fe99){_0xd5aed4(null,_0xc3fe99);})[_0x0491('0x1a')](function(_0x492d88){_0xd5aed4(_0x492d88);});};AGIVertices[_0x0491('0x12')][_0x0491('0x65')]=function(_0x4669bc,_0x29fb0){scripts[_0x0491('0x65')](_0x4669bc[_0x0491('0x5e')],_0x4669bc[_0x0491('0x66')]||'en',0x1)[_0x0491('0x16')](function(_0x1a0536){_0x29fb0(null,_0x1a0536);})['catch'](function(_0x361252){_0x29fb0(_0x361252);});};AGIVertices[_0x0491('0x12')][_0x0491('0x67')]=function(_0x227d7c,_0x449d4f){var _0x3c6491={'uri':_0x227d7c[_0x0491('0x68')],'method':_0x227d7c['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x227d7c[_0x0491('0x69')])===_0x0491('0x6a')&&parseInt(_0x227d7c[_0x0491('0x69')])>=0x1?parseInt(_0x227d7c[_0x0491('0x69')])*0x3e8:0x5*0x3e8};if(_['includes']([_0x0491('0x6b'),_0x0491('0x6c')],_0x3c6491[_0x0491('0x6d')]['toUpperCase']())){try{_0x3c6491[_0x0491('0x6e')]=_0x227d7c['rawBody']?JSON[_0x0491('0x6f')](_0x227d7c[_0x0491('0x70')]):{};}catch(_0x393aa5){logger[_0x0491('0x2f')](_0x0491('0x71'),_0x393aa5);}}try{_0x3c6491['headers']=_0x227d7c['rawHeaders']?JSON['parse'](_0x227d7c['rawHeaders']):{};}catch(_0x2ff034){logger['error'](_0x0491('0x72'),_0x2ff034);}if(_0x227d7c['computedVariables']){try{var _0x80cee7=require(_0x227d7c['computedVariables'])[_0x0491('0x73')](this,_0x3c6491);_0x3c6491['uri']=Mustache[_0x0491('0x74')](_0x227d7c[_0x0491('0x68')],_0x80cee7,{},['$$','$$']);if(_0x3c6491[_0x0491('0x75')]){_0x3c6491[_0x0491('0x75')]=JSON['parse'](Mustache[_0x0491('0x74')](JSON[_0x0491('0x76')](_0x3c6491[_0x0491('0x75')]),_0x80cee7,{},['$$','$$']));}if(_0x3c6491['body']){_0x3c6491[_0x0491('0x6e')]=JSON[_0x0491('0x6f')](Mustache[_0x0491('0x74')](JSON[_0x0491('0x76')](_0x3c6491[_0x0491('0x6e')]),_0x80cee7,{},['$$','$$']));}}catch(_0x4dac50){logger[_0x0491('0x2f')]('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0x4dac50);}}rp(_0x3c6491)[_0x0491('0x16')](function(_0x46b627){var _0x2eeb61={'statusCode':_0x46b627['statusCode']||0xc8,'statusMessage':_0x46b627[_0x0491('0x77')]||'OK','headers':_0x46b627[_0x0491('0x75')]||{},'body':_0x46b627[_0x0491('0x6e')]||{}};_0x449d4f(null,_0x2eeb61);})[_0x0491('0x1a')](function(_0x43cf03){var _0x14ded9={'statusCode':_0x43cf03[_0x0491('0x78')]||0x1f4,'statusMessage':_0x43cf03[_0x0491('0x79')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x43cf03[_0x0491('0x7a')][_0x0491('0x75')]||{},'body':_0x43cf03['options'][_0x0491('0x6e')]||{}};_0x449d4f(null,_0x14ded9);});};AGIVertices['prototype']['googleDialogflow']=function(_0x48d967,_0x469733){scripts[_0x0491('0x7b')](this[_0x0491('0x10')][_0x0491('0x39')],_0x48d967['key'],_0x48d967['text'],_0x48d967[_0x0491('0x7c')]||'en')[_0x0491('0x16')](function(_0x2dbef8){_0x469733(null,_0x2dbef8);})[_0x0491('0x1a')](function(_0x148359){_0x469733(_0x148359);});};AGIVertices['prototype'][_0x0491('0x7d')]=function(_0xf52e3b,_0x4733bf){scripts[_0x0491('0x7d')](this[_0x0491('0x10')][_0x0491('0x39')],_0xf52e3b['dialogflowV2_project_id'],_0xf52e3b['client_email'],_0xf52e3b['private_key'],_0xf52e3b['text'],_0xf52e3b['dialogflowV2_language']||'en')[_0x0491('0x16')](function(_0x33e3c5){_0x4733bf(null,_0x33e3c5);})[_0x0491('0x1a')](function(_0x4cf2b8){_0x4733bf(_0x4cf2b8);});};AGIVertices[_0x0491('0x12')][_0x0491('0x7e')]=function(_0x3bd19d,_0x2540bd){scripts[_0x0491('0x7e')](this['channel'],_0x3bd19d)['then'](function(_0x48254f){_0x2540bd(null,_0x48254f);})[_0x0491('0x1a')](function(_0x541e6f){_0x2540bd(_0x541e6f);});};AGIVertices[_0x0491('0x12')]['ispeechTTS']=function(_0x57f0d9,_0x1b7241){scripts['ispeechTTS'](_0x57f0d9[_0x0491('0x7f')],_0x57f0d9[_0x0491('0x5e')],_0x57f0d9['ispeech_tts_language']||'en-US',_0x57f0d9[_0x0491('0x80')])[_0x0491('0x16')](function(_0x4b80e0){_0x1b7241(null,_0x4b80e0);})[_0x0491('0x1a')](function(_0x5aa88e){_0x1b7241(_0x5aa88e);});};AGIVertices['prototype'][_0x0491('0x81')]=function(_0x330ccd,_0x59fe17,_0xde2860){scripts['ispeechASR'](_0x59fe17,_0x330ccd[_0x0491('0x7f')],_0x330ccd['ispeech_asr_language']||_0x0491('0x60'),this[_0x0491('0x82')](_0x330ccd[_0x0491('0x83')])?_0x330ccd[_0x0491('0x83')]:undefined)[_0x0491('0x16')](function(_0x2f9755){_0xde2860(null,_0x2f9755);})[_0x0491('0x1a')](function(_0x58a384){_0xde2860(_0x58a384);});};AGIVertices[_0x0491('0x12')][_0x0491('0x84')]=function(_0x3f7374,_0x5a1deb){scripts['awsPolly'](_0x3f7374[_0x0491('0x85')],_0x3f7374[_0x0491('0x86')],_0x3f7374['aws_polly_region'],_0x3f7374['aws_polly_voice']||_0x0491('0x87'),_0x3f7374['text'],_0x3f7374[_0x0491('0x88')]||_0x0491('0x5e'))['then'](function(_0x2c4dc3){_0x5a1deb(null,_0x2c4dc3);})[_0x0491('0x1a')](function(_0x3ae15f){_0x5a1deb(_0x3ae15f);});};AGIVertices[_0x0491('0x12')][_0x0491('0x89')]=function(_0x1648ab,_0x58613d){scripts[_0x0491('0x89')](this[_0x0491('0x10')][_0x0491('0x39')],_0x1648ab[_0x0491('0x85')],_0x1648ab[_0x0491('0x86')],_0x1648ab['aws_lex_region'],_0x1648ab[_0x0491('0x5e')],_0x1648ab['aws_bot_name'])[_0x0491('0x16')](function(_0x1a1f74){_0x58613d(null,_0x1a1f74);})[_0x0491('0x1a')](function(_0x2a7d5f){_0x58613d(_0x2a7d5f);});};AGIVertices[_0x0491('0x12')][_0x0491('0x8a')]=function(_0x324d32,_0xa64ba6,_0x1c772e){scripts[_0x0491('0x8a')](_0xa64ba6,_0x324d32[_0x0491('0x7f')],_0x324d32[_0x0491('0x8b')]||_0x0491('0x60'))['then'](function(_0x274a33){_0x1c772e(null,_0x274a33);})['catch'](function(_0x1feb2d){_0x1c772e(_0x1feb2d);});};AGIVertices['prototype']['tildeASR']=function(_0x3bf5d4,_0x29b28b,_0x10fb5f){scripts[_0x0491('0x8c')](_0x29b28b,_0x3bf5d4['appid'],_0x3bf5d4['appsecret'],_0x3bf5d4[_0x0491('0x8d')])[_0x0491('0x16')](function(_0x32cc17){_0x10fb5f(null,_0x32cc17);})[_0x0491('0x1a')](function(_0xc15227){_0x10fb5f(_0xc15227);});};AGIVertices[_0x0491('0x12')][_0x0491('0x8e')]=function(_0x30ab30){var _0x50638a=_[_0x0491('0x8f')](verticesWithRetry,_0x30ab30[_0x0491('0x90')])?_0x30ab30:_[_0x0491('0x91')](_0x30ab30);for(var _0x441da8 in _0x50638a){if(_0x50638a[_0x0491('0x92')](_0x441da8)){if(_0x50638a[_0x441da8]&&_[_0x0491('0x93')](_0x50638a[_0x441da8])){if(_[_0x0491('0x8f')](recursiveMapAttributes,_0x441da8)){_0x50638a[_0x441da8]=this['replaceObjectAllVariables'](_0x50638a[_0x441da8]);}else{_0x50638a[_0x441da8]=this[_0x0491('0x94')](_0x50638a[_0x441da8]);}}}}return _0x50638a;};AGIVertices['prototype'][_0x0491('0x95')]=function(_0x5c4919){for(var _0x1cba5d in _0x5c4919){if(_0x5c4919[_0x0491('0x92')](_0x1cba5d)){if(_[_0x0491('0x96')](_0x5c4919[_0x1cba5d])){this[_0x0491('0x95')](_0x5c4919[_0x1cba5d]);}else if(_[_0x0491('0x97')](_0x5c4919[_0x1cba5d])){for(var _0x7af3ee=0x0;_0x7af3ee<_0x5c4919[_0x1cba5d][_0x0491('0x98')];_0x7af3ee++){this[_0x0491('0x95')](_0x5c4919[_0x1cba5d][_0x7af3ee]);}}else if(_[_0x0491('0x93')](_0x5c4919[_0x1cba5d])){_0x5c4919[_0x1cba5d]=this[_0x0491('0x94')](_0x5c4919[_0x1cba5d]);}}}};AGIVertices['prototype'][_0x0491('0x99')]=function(_0xd33ea5,_0x2e023f){for(var _0x403345 in _0xd33ea5){if(_0xd33ea5[_0x0491('0x92')](_0x403345)){if(_[_0x0491('0x96')](_0xd33ea5[_0x403345])){if(!_[_0x0491('0x45')](_0xd33ea5[_0x403345])){this[_0x0491('0x99')](_0xd33ea5[_0x403345],util[_0x0491('0x2c')](_0x0491('0x9a'),_0x2e023f,_0x403345));}}else if(_['isArray'](_0xd33ea5[_0x403345])){for(var _0x4a9c5e=0x0;_0x4a9c5e<_0xd33ea5[_0x403345][_0x0491('0x98')];_0x4a9c5e++){this['saveRestApiResult'](_0xd33ea5[_0x403345][_0x4a9c5e],util[_0x0491('0x2c')](_0x0491('0x9a'),_0x2e023f,_0x403345+'['+_0x4a9c5e+']'));}}else{if(!_['isNil'](_0xd33ea5[_0x403345])){this[_0x0491('0x10')][_0x0491('0x9b')](util['format'](_0x0491('0x9a'),_0x2e023f,_0x403345),_0xd33ea5[_0x403345]);}}}}};AGIVertices[_0x0491('0x12')][_0x0491('0x9c')]=function(_0x1021f){try{var _0x386d8c=JSON['parse'](_0x1021f);this[_0x0491('0x95')](_0x386d8c);return JSON[_0x0491('0x76')](_0x386d8c);}catch(_0x29e43b){return this[_0x0491('0x94')](_0x1021f);}};AGIVertices['prototype'][_0x0491('0x94')]=function(_0x589aa7){var _0x52578a=_0x589aa7[_0x0491('0x9d')]('{');for(var _0x5df075=0x1;_0x5df075<_0x52578a[_0x0491('0x98')];_0x5df075+=0x1){var _0x556284=_0x52578a[_0x5df075][_0x0491('0x9d')]('}');if(_0x556284[_0x0491('0x98')]>0x1){_0x589aa7=_0x589aa7['replaceAll']('{'+_0x556284[0x0]+'}',this[_0x0491('0x10')]['getVariable'](_0x556284[0x0])[_0x0491('0x9e')]||_0x556284[0x0]);}}if(_0x52578a['length']===0x1){return _0x589aa7[_0x0491('0x4e')]();}return this['replaceAllVariables'](_0x589aa7);};AGIVertices[_0x0491('0x12')][_0x0491('0x9f')]=function(_0x143deb,_0x5ab06a){var _0x23204f=this[_0x0491('0x10')][_0x0491('0x13')](_0x143deb);if(_0x23204f['result']===-0x1){return _0x23204f;}logger['info'](util[_0x0491('0x2c')]('The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s',_0x5ab06a,_0x23204f[_0x0491('0x9e')]));return this[_0x0491('0x10')][_0x0491('0x9b')](_0x5ab06a,_0x23204f[_0x0491('0x9e')]);};AGIVertices[_0x0491('0x12')]['isConfigured']=function(_0x386a30){return _0x386a30&&_0x386a30!=='0'&&_0x386a30!=='-1'&&_0x386a30!=='';};AGIVertices['prototype']['maxRetry']=function(_0x255329){this[_0x0491('0x38')][_0x0491('0x73')](this,_0x255329,'-');_0x255329[_0x0491('0xa0')]=_0x255329[_0x0491('0xa1')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x0491('0x12')][_0x0491('0xa2')]=function(_0x210cfe){logger['info'](util['format'](_0x0491('0xa3'),_0x210cfe['label']));if(!this[_0x0491('0x82')](_0x210cfe['text'])){return this[_0x0491('0x10')]['noop'](_0x0491('0xa4'));}var _0x462bba='\x22'+_0x210cfe[_0x0491('0x5e')]+'\x22';if(this['isConfigured'](_0x210cfe[_0x0491('0x7a')])){_0x462bba+=','+_0x210cfe[_0x0491('0x7a')];}var _0x637a69=this['channel'][_0x0491('0xa5')]('MRCPSynth',_0x462bba);if(_0x637a69[_0x0491('0xa6')]===-0x1){return _0x637a69;}return this[_0x0491('0x10')]['noop'](util[_0x0491('0x2c')](_0x0491('0xa7'),_0x462bba));};AGIVertices[_0x0491('0x12')][_0x0491('0xa8')]=function(_0x7e1344){logger['info'](util['format'](_0x0491('0xa9'),_0x7e1344[_0x0491('0xaa')]));if(!this['isConfigured'](_0x7e1344[_0x0491('0xab')])){return this[_0x0491('0x10')]['noop']('no\x20grammar\x20configured');}var _0x137b4b=_0x7e1344[_0x0491('0xab')];if(this[_0x0491('0x82')](_0x7e1344[_0x0491('0x7a')])){_0x137b4b+=','+_0x7e1344[_0x0491('0x7a')];}var _0x5830ec=this['channel'][_0x0491('0xa5')](_0x0491('0xac'),_0x137b4b);if(_0x5830ec[_0x0491('0xa6')]===-0x1){return _0x5830ec;}var _0x22b0f5=this[_0x0491('0x9f')](_0x0491('0xad'),_0x0491('0xae'));if(_0x22b0f5[_0x0491('0xa6')]===-0x1){return _0x22b0f5;}var _0x5cb71a=this['getAndSetVariable'](_0x0491('0xaf'),_0x0491('0xb0'));if(_0x5cb71a[_0x0491('0xa6')]===-0x1){return _0x5cb71a;}var _0x541036=this[_0x0491('0x9f')]('RECOG_INSTANCE()',_0x0491('0xb1'));if(_0x541036['result']===-0x1){return _0x541036;}return this[_0x0491('0x10')]['noop'](util[_0x0491('0x2c')](_0x0491('0xb2'),_0x137b4b));};AGIVertices[_0x0491('0x12')][_0x0491('0x8')]=function(_0x57bcf7){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0xb3'),_0x57bcf7[_0x0491('0xaa')]));return this[_0x0491('0x10')][_0x0491('0x8')]([_0x57bcf7[_0x0491('0xb4')],_0x57bcf7['args']]);};AGIVertices[_0x0491('0x12')]['answer']=function(_0x19788d){logger['info'](util[_0x0491('0x2c')](_0x0491('0xb5'),_0x19788d[_0x0491('0xaa')]));if(this[_0x0491('0x82')](_0x19788d[_0x0491('0x69')])){logger[_0x0491('0x30')](util[_0x0491('0x2c')]('Wait\x20%s\x20seconds\x20before\x20answer',_0x19788d[_0x0491('0x69')]));var _0x27b0b3=this[_0x0491('0x10')]['wait'](_0x19788d[_0x0491('0x69')]);if(_0x27b0b3[_0x0491('0xa6')]===-0x1){return _0x27b0b3;}}return this[_0x0491('0x10')]['answer']();};AGIVertices[_0x0491('0x12')][_0x0491('0x4c')]=function(_0x11b0b7){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0xb6'),_0x11b0b7[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0x11b0b7['list_id'])){return this['channel'][_0x0491('0x2f')](_0x11b0b7,_0x0491('0xb7'));}_0x11b0b7['scheduledAt']=moment();if(this[_0x0491('0x82')](_0x11b0b7['delay'])){_0x11b0b7[_0x0491('0x4b')]=moment()[_0x0491('0xb8')](_0x11b0b7[_0x0491('0xb9')],_0x0491('0xba'));}if(!this[_0x0491('0x82')](_0x11b0b7[_0x0491('0x4f')])){_0x11b0b7[_0x0491('0x4f')]=0x2;}this['createCmContact']['sync'](this,_0x11b0b7);return this[_0x0491('0x10')][_0x0491('0xbb')](util['format'](_0x0491('0xbc'),_0x11b0b7['phone'],_0x11b0b7[_0x0491('0x4a')],_0x11b0b7[_0x0491('0x4b')]));};AGIVertices['prototype'][_0x0491('0xbd')]=function(_0x21a34f){logger['info'](util[_0x0491('0x2c')](_0x0491('0xbe'),_0x21a34f['label']));var _0x5065b2=this['channel']['exec'](_0x21a34f[_0x0491('0xbf')],_0x21a34f[_0x0491('0x7a')]);if(_0x5065b2[_0x0491('0xa6')]===-0x1){return _0x5065b2;}return this[_0x0491('0x10')][_0x0491('0xbb')](util['format'](_0x0491('0xc0'),_0x21a34f[_0x0491('0xbf')],_0x21a34f[_0x0491('0x7a')]));};AGIVertices[_0x0491('0x12')][_0x0491('0xc1')]=function(_0xa2ade2){logger['info'](util['format']('Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block',_0xa2ade2[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0xa2ade2[_0x0491('0x5e')])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0xa4'));}var _0x30b555='\x22'+_0xa2ade2['text']+'\x22';if(this[_0x0491('0x82')](_0xa2ade2['options'])){_0x30b555+=','+_0xa2ade2['options'];}var _0x2fe3ff=this['channel'][_0x0491('0xa5')](_0x0491('0xc2'),_0x30b555);if(_0x2fe3ff[_0x0491('0xa6')]===-0x1){return _0x2fe3ff;}return this['channel'][_0x0491('0xbb')](util[_0x0491('0x2c')]('Executed\x20command\x20MRCPSynth\x20%s',_0x30b555));};AGIVertices[_0x0491('0x12')][_0x0491('0xc3')]=function(_0xc71362){logger[_0x0491('0x30')](util['format'](_0x0491('0xc4'),_0xc71362[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0xc71362[_0x0491('0x5e')])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0xa4'));}var _0x189224='\x22'+_0xc71362[_0x0491('0x5e')]+'\x22';if(this[_0x0491('0x82')](_0xc71362['options'])){_0x189224+=','+_0xc71362[_0x0491('0x7a')];}var _0x4f8d2e=this[_0x0491('0x10')][_0x0491('0xa5')](_0x0491('0xc2'),_0x189224);if(_0x4f8d2e[_0x0491('0xa6')]===-0x1){return _0x4f8d2e;}return this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')]('Executed\x20command\x20MRCPSynth\x20%s',_0x189224));};AGIVertices['prototype'][_0x0491('0xc5')]=function(_0x43cf16){logger[_0x0491('0x30')](util['format'](_0x0491('0xc6'),_0x43cf16[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0x43cf16['grammar'])){return this['channel'][_0x0491('0xbb')](_0x0491('0xc7'));}var _0x5ae0d6=_0x43cf16['grammar'];if(this['isConfigured'](_0x43cf16[_0x0491('0x7a')])){_0x5ae0d6+=','+_0x43cf16[_0x0491('0x7a')];}var _0x198cf4=this[_0x0491('0x10')][_0x0491('0xa5')](_0x0491('0xac'),_0x5ae0d6);if(_0x198cf4[_0x0491('0xa6')]===-0x1){return _0x198cf4;}var _0x257d9f=this[_0x0491('0x9f')]('RECOG_CONFIDENCE()',_0x0491('0xc8'));if(_0x257d9f[_0x0491('0xa6')]===-0x1){return _0x257d9f;}var _0x24f413=this[_0x0491('0x9f')](_0x0491('0xaf'),_0x0491('0xc9'));if(_0x24f413[_0x0491('0xa6')]===-0x1){return _0x24f413;}var _0x457656=this['getAndSetVariable'](_0x0491('0xca'),_0x0491('0xcb'));if(_0x457656[_0x0491('0xa6')]===-0x1){return _0x457656;}return this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0xb2'),_0x5ae0d6));};AGIVertices[_0x0491('0x12')][_0x0491('0xcc')]=function(_0x120e6b){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0xcd'),_0x120e6b[_0x0491('0xaa')]));if(!this['isConfigured'](_0x120e6b[_0x0491('0xab')])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0xc7'));}var _0x314aee=_0x120e6b[_0x0491('0xab')];if(this['isConfigured'](_0x120e6b['options'])){_0x314aee+=','+_0x120e6b['options'];}var _0x501552=this[_0x0491('0x10')][_0x0491('0xa5')]('MRCPRecog',_0x314aee);if(_0x501552[_0x0491('0xa6')]===-0x1){return _0x501552;}var _0x566b12=this['getAndSetVariable'](_0x0491('0xad'),_0x0491('0xce'));if(_0x566b12['result']===-0x1){return _0x566b12;}var _0x4eabd2=this[_0x0491('0x9f')](_0x0491('0xaf'),_0x0491('0xcf'));if(_0x4eabd2[_0x0491('0xa6')]===-0x1){return _0x4eabd2;}var _0xf9643a=this[_0x0491('0x9f')](_0x0491('0xca'),'SESTEK_ASR_INSTANCE');if(_0xf9643a[_0x0491('0xa6')]===-0x1){return _0xf9643a;}return this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0xb2'),_0x314aee));};AGIVertices['prototype'][_0x0491('0xd0')]=function(_0x3f14bb){logger['info'](util['format'](_0x0491('0xd1'),_0x3f14bb[_0x0491('0xaa')]));if(!this['isConfigured'](_0x3f14bb['odbc_id'])){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x3f14bb,'no\x20database\x20selected');}var _0x46fd93=this[_0x0491('0x1d')]['sync'](this,_0x3f14bb[_0x0491('0xd2')]);if(!_0x46fd93){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x3f14bb,'no\x20odbc\x20database\x20found');}if(!this['isConfigured'](_0x3f14bb[_0x0491('0x32')])){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x3f14bb,_0x0491('0xd3'));}var _0xf33227=_0x3f14bb[_0x0491('0x32')][_0x0491('0xd4')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0xd5'),_0xf33227));var _0x999bb2=this[_0x0491('0x2d')]['sync'](this,_0x46fd93,_0xf33227);this[_0x0491('0x38')][_0x0491('0x73')](this,_0x3f14bb,_0xf33227);if(!this[_0x0491('0x82')](_0x3f14bb[_0x0491('0xd6')])){return this['channel'][_0x0491('0xbb')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x2fa48c=this[_0x0491('0x13')][_0x0491('0x73')](this,_0x3f14bb[_0x0491('0xd6')]);if(!_0x2fa48c){return this['channel'][_0x0491('0x2f')](_0x3f14bb,_0x0491('0xd7'));}var _0x2ffe5f=this;_0x999bb2[_0x0491('0xd8')](function(_0x4f7beb,_0x224ab6){Object[_0x0491('0xd9')](_0x4f7beb)['forEach'](function(_0x3b40a3){_0x2ffe5f[_0x0491('0x10')][_0x0491('0x9b')](util[_0x0491('0x2c')](_0x0491('0xda'),_0x2fa48c,_0x224ab6,_0x3b40a3),_0x4f7beb[_0x3b40a3]);});});this[_0x0491('0x10')][_0x0491('0x9b')](util[_0x0491('0x2c')](_0x0491('0xdb'),_0x2fa48c),_0x999bb2['length']);return this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0xdc'),_0x2fa48c));};AGIVertices[_0x0491('0x12')]['dial']=function(_0x1053de){logger[_0x0491('0xdd')](util[_0x0491('0x2c')](_0x0491('0xde'),_0x1053de['label']));if(!this[_0x0491('0x82')](_0x1053de[_0x0491('0xdf')])){return this['channel'][_0x0491('0x2f')](_0x1053de,'no\x20user\x20selected');}var _0x572237=this[_0x0491('0x1e')][_0x0491('0x73')](this,_0x1053de['sip_id']);if(!_0x572237){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x1053de,_0x0491('0xe0'));}var _0x5768e7=this[_0x0491('0x10')][_0x0491('0xa5')](_0x0491('0xe1'),[util[_0x0491('0x2c')](_0x0491('0xe2'),_0x572237),_0x1053de[_0x0491('0x69')],_0x1053de[_0x0491('0xe3')],_0x1053de[_0x0491('0x68')]]);if(_0x5768e7[_0x0491('0xa6')]===-0x1){return _0x5768e7;}return this[_0x0491('0x10')]['noop'](util[_0x0491('0x2c')](_0x0491('0xe4'),'DIAL'));};AGIVertices[_0x0491('0x12')][_0x0491('0xe5')]=function(_0x44e04c){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0xe6'),_0x44e04c[_0x0491('0xaa')]));if(!this['isConfigured'](_0x44e04c[_0x0491('0x7f')])){return this[_0x0491('0x10')][_0x0491('0xbb')]('no\x20key\x20configured');}if(!this[_0x0491('0x82')](_0x44e04c[_0x0491('0x5e')])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0xa4'));}this[_0x0491('0x10')]['bot']=!![];this[_0x0491('0x38')](_0x44e04c);this[_0x0491('0x43')](_0x44e04c[_0x0491('0x5e')],'in','','');this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0xe7'),_0x44e04c[_0x0491('0x5e')]));var _0x1e6064=this['googleDialogflow'][_0x0491('0x73')](this,_0x44e04c);if(_0x1e6064){for(var _0x3a5c9c in _0x1e6064){if(_0x1e6064['hasOwnProperty'](_0x3a5c9c)){this[_0x0491('0x10')][_0x0491('0x9b')](util[_0x0491('0x2c')]('DIALOGFLOW_%s',_0x3a5c9c['toUpperCase']()),_0x1e6064[_0x3a5c9c]);}}this[_0x0491('0x43')](_0x1e6064[_0x0491('0xe8')],_0x0491('0xe9'),_0x0491('0xe5'),'');return this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')]('Dialogflow\x20Result\x20%s',_0x1e6064[_0x0491('0xe8')]));}return this[_0x0491('0x10')][_0x0491('0x2f')](_0x44e04c,'Dialogflow\x20is\x20unreachable');};AGIVertices[_0x0491('0x12')]['dialogflowV2']=function(_0x592581){logger['info'](util[_0x0491('0x2c')](_0x0491('0xea'),_0x592581[_0x0491('0xaa')]));if(!this['isConfigured'](_0x592581[_0x0491('0xeb')])){return this[_0x0491('0x10')]['noop'](_0x0491('0xec'));}if(!this[_0x0491('0x82')](_0x592581[_0x0491('0xed')])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0xee'));}if(!this['isConfigured'](_0x592581['private_key'])){return this['channel'][_0x0491('0xbb')](_0x0491('0xef'));}if(!this[_0x0491('0x82')](_0x592581['dialogflowV2_language'])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0xf0'));}if(!this[_0x0491('0x82')](_0x592581[_0x0491('0x5e')])){return this['channel']['noop'](_0x0491('0xa4'));}this[_0x0491('0x10')][_0x0491('0xf1')]=!![];this['createSquareDetailsReport'](_0x592581);this['createSquareMessage'](_0x592581['text'],'in','','');this[_0x0491('0x10')][_0x0491('0xbb')](util['format'](_0x0491('0xf2'),_0x592581[_0x0491('0x5e')]));var _0x36f1f9=this['googleDialogflowV2'][_0x0491('0x73')](this,_0x592581);if(_0x36f1f9){for(var _0x520330 in _0x36f1f9){if(_0x36f1f9[_0x0491('0x92')](_0x520330)){if(_0x520330!=='providerResponse'){this[_0x0491('0x10')][_0x0491('0x9b')](util[_0x0491('0x2c')](_0x0491('0xf3'),_0x520330['toUpperCase']()),_0x36f1f9[_0x520330]);}}}this[_0x0491('0x43')](_0x36f1f9[_0x0491('0xe8')],_0x0491('0xe9'),_0x0491('0xf4'),_0x36f1f9[_0x0491('0xf5')]);return this[_0x0491('0x10')]['noop'](util[_0x0491('0x2c')](_0x0491('0xf6'),_0x36f1f9[_0x0491('0xe8')]));}return this[_0x0491('0x10')]['error'](_0x592581,_0x0491('0xf7'));};AGIVertices[_0x0491('0x12')]['sesteknda']=function(_0x40f992){logger['info'](util[_0x0491('0x2c')]('Enter\x20in\x20SESTEKNDA\x20(%s)\x20block',_0x40f992['label']));if(!this['isConfigured'](_0x40f992['ndauth_url'])){return this['channel']['noop']('no\x20ndauth\x20url\x20configured');}if(!this[_0x0491('0x82')](_0x40f992['username'])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0xf8'));}if(!this[_0x0491('0x82')](_0x40f992[_0x0491('0xf9')])){return this[_0x0491('0x10')]['noop'](_0x0491('0xfa'));}if(!this[_0x0491('0x82')](_0x40f992['ndassistant_url'])){return this[_0x0491('0x10')]['noop']('no\x20text\x20configured');}this[_0x0491('0x10')]['bot']=!![];this[_0x0491('0x38')](_0x40f992);this['createSquareMessage'](_0x40f992[_0x0491('0x5e')],'in','','');this['channel'][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0xfb'),_0x40f992[_0x0491('0x5e')]));var _0x52ca12=this[_0x0491('0x7e')]['sync'](this,_0x40f992);if(_0x52ca12){for(var _0x306b1d in _0x52ca12){if(_0x52ca12['hasOwnProperty'](_0x306b1d)){this['channel'][_0x0491('0x9b')](util[_0x0491('0x2c')](_0x0491('0xfc'),_0x306b1d[_0x0491('0xfd')]()),_0x52ca12[_0x306b1d]);}}this[_0x0491('0x43')](_0x52ca12['speech'],_0x0491('0xe9'),'sesteknda','');if(_0x52ca12['audiofile']){this[_0x0491('0x10')]['noop'](util[_0x0491('0x2c')]('Sestek\x20NDA\x20%s\x20file\x20created',_0x52ca12[_0x0491('0xfe')]));var _0x16c6e1=this[_0x0491('0x10')][_0x0491('0xff')](_0x52ca12['audiofile']);try{fs[_0x0491('0x100')](_0x52ca12[_0x0491('0xfe')]+_0x0491('0x101'));}catch(_0x287715){logger[_0x0491('0x2f')](_0x287715);}return _0x16c6e1;}else{return this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0x102'),_0x52ca12[_0x0491('0xe8')]));}}return this['channel'][_0x0491('0x2f')](_0x40f992,_0x0491('0x103'));};AGIVertices[_0x0491('0x12')][_0x0491('0x104')]=function(_0x422728){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x105'),_0x422728['label']));return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0x104'));};AGIVertices['prototype'][_0x0491('0x106')]=function(_0x217275){logger[_0x0491('0x30')](util[_0x0491('0x2c')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x217275[_0x0491('0xaa')]));var _0x495fdd='';if(_0x217275[_0x0491('0x107')]){if(!this[_0x0491('0x82')](_0x217275['trunk_id'])){return this['channel'][_0x0491('0x2f')](_0x217275,_0x0491('0x108'));}else{var _0x21246b=parseInt(_0x217275[_0x0491('0x107')],0xa);if(isNaN(_0x21246b)){_0x495fdd=_0x217275['trunk_id'];}else{_0x495fdd=this[_0x0491('0x20')]['sync'](this,_0x217275[_0x0491('0x107')]);if(!_0x495fdd){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x217275,'no\x20trunk\x20found');}}}}else if(_0x217275['trunk_name']){_0x495fdd=_0x217275['trunk_name'];}else{return this['channel'][_0x0491('0x2f')](_0x217275,_0x0491('0x108'));}var _0x40d68c=this[_0x0491('0x10')][_0x0491('0xa5')](_0x0491('0xe1'),[util[_0x0491('0x2c')]('SIP/%s/%s',_0x495fdd,_0x217275[_0x0491('0x49')]),_0x217275[_0x0491('0x69')],_0x217275['opts'],_0x217275[_0x0491('0x68')]]);if(_0x40d68c[_0x0491('0xa6')]===-0x1){return _0x40d68c;}return this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0xe4'),_0x0491('0xe1')));};AGIVertices[_0x0491('0x12')][_0x0491('0x109')]=function(_0x3e87a6){logger[_0x0491('0x30')](util[_0x0491('0x2c')]('Enter\x20in\x20FINALLY\x20(%s)\x20block',_0x3e87a6[_0x0491('0xaa')]));return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0x109'));};AGIVertices[_0x0491('0x12')][_0x0491('0xe')]=function(_0x134225){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x10a'),_0x134225['label']));if(_0x134225[_0x0491('0xa0')]===0x0){return this[_0x0491('0xa1')](_0x134225);}_0x134225[_0x0491('0xa0')]-=0x1;if(!this[_0x0491('0x82')](_0x134225['file_id'])){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x134225,'no\x20file\x20audio\x20selected');}var _0x40930d=this[_0x0491('0x22')][_0x0491('0x73')](this,_0x134225['file_id']);if(!_0x40930d){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x134225,_0x0491('0x10b'));}if(!this[_0x0491('0x82')](_0x134225[_0x0491('0xd6')])){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x0491('0x10c'));}var _0x3605c7=this['channel'][_0x0491('0x10d')](_0x40930d,_0x134225[_0x0491('0x10e')],_0x134225[_0x0491('0x10f')]);var _0x333096=_0x3605c7[_0x0491('0xa6')]?_0x3605c7['result'][_0x0491('0x4e')]():'';logger['info'](_0x0491('0x110'),JSON[_0x0491('0x76')](_0x3605c7));if(_0x3605c7[_0x0491('0xa6')]===-0x1){this['createSquareDetailsReport'][_0x0491('0x73')](this,_0x134225,_0x333096);return _0x3605c7;}else if(_0x3605c7[_0x0491('0x9e')]===_0x0491('0x69')){_0x3605c7[_0x0491('0xa6')]=_0x333096[_0x0491('0x98')]>=parseInt(_0x134225[_0x0491('0x111')])?'x':'i';}else{_0x3605c7[_0x0491('0xa6')]=_0x333096[_0x0491('0x98')]>=parseInt(_0x134225['mindigit'])&&_0x333096[_0x0491('0x98')]<=parseInt(_0x134225[_0x0491('0x10f')])?'x':'i';}var _0x415683=this[_0x0491('0x13')][_0x0491('0x73')](this,_0x134225['variable_id']);if(!_0x415683){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x134225,_0x0491('0xd7'));}this[_0x0491('0x10')]['setVariable'](_0x415683,_0x333096);if(this['isConfigured'](_0x134225['hiddendigitsnum'])){var _0x25163f=parseInt(_0x134225['hiddendigitsnum'],0xa);var _0x2205ca=rs['generate']({'charset':'*','length':_0x25163f});var _0x266687=_0x333096[_0x0491('0x98')];if(_0x266687>0x0){if(_0x266687>_0x25163f){this['createSquareDetailsReport'][_0x0491('0x73')](this,_0x134225,_0x134225[_0x0491('0x112')]===_0x0491('0x113')?_0x2205ca+_0x333096[_0x0491('0x114')](_0x25163f):_0x333096[_0x0491('0x114')](0x0,_0x266687-_0x25163f)+_0x2205ca);}else{this[_0x0491('0x38')][_0x0491('0x73')](this,_0x134225,rs[_0x0491('0x115')]({'charset':'*','length':_0x266687}));}}else{this['createSquareDetailsReport'][_0x0491('0x73')](this,_0x134225,'');}}else{this[_0x0491('0x38')][_0x0491('0x73')](this,_0x134225,_0x333096);}return _0x3605c7;};AGIVertices[_0x0491('0x12')][_0x0491('0xf')]=function(_0x460b8){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x116'),_0x460b8[_0x0491('0xaa')]));return this[_0x0491('0xe')](_0x460b8);};AGIVertices[_0x0491('0x12')][_0x0491('0x117')]=function(_0xd06196){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x118'),_0xd06196['label']));this[_0x0491('0x38')][_0x0491('0x73')](this,_0xd06196,_0xd06196['goalname']);return this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0x119'),_0xd06196[_0x0491('0x11a')]));};AGIVertices[_0x0491('0x12')][_0x0491('0x11b')]=function(_0x44d22a){logger[_0x0491('0x30')](util['format'](_0x0491('0x11c'),_0x44d22a[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0x44d22a[_0x0491('0x85')])||!this[_0x0491('0x82')](_0x44d22a['aws_secret_access_key'])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0x11d'));}if(!this[_0x0491('0x82')](_0x44d22a[_0x0491('0x5e')])){return this[_0x0491('0x10')][_0x0491('0xbb')]('no\x20text\x20configured');}this['channel'][_0x0491('0xbb')](util['format']('Trying\x20aws\x20Polly\x20%s',_0x44d22a[_0x0491('0x5e')]));var _0x4446b8=this[_0x0491('0x84')][_0x0491('0x73')](this,_0x44d22a);if(_0x4446b8){this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')]('aws\x20Polly\x20%s\x20file\x20created',_0x4446b8));var _0x5d8560=this[_0x0491('0x10')][_0x0491('0xff')](_0x4446b8);try{fs['unlink'](_0x4446b8+_0x0491('0x101'));}catch(_0xffa9e5){logger[_0x0491('0x2f')](_0xffa9e5);}return _0x5d8560;}return this[_0x0491('0x10')][_0x0491('0x2f')](_0x44d22a,_0x0491('0x11e'));};AGIVertices[_0x0491('0x12')][_0x0491('0x11f')]=function(_0x4b70a2){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x120'),_0x4b70a2[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0x4b70a2['aws_access_key_id'])||!this[_0x0491('0x82')](_0x4b70a2[_0x0491('0x86')])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0x11d'));}if(!this[_0x0491('0x82')](_0x4b70a2[_0x0491('0x121')])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0x122'));}if(!this['isConfigured'](_0x4b70a2['text'])){return this['channel'][_0x0491('0xbb')](_0x0491('0xa4'));}this[_0x0491('0x10')][_0x0491('0xf1')]=!![];this[_0x0491('0x38')](_0x4b70a2);this[_0x0491('0x43')](_0x4b70a2['text'],'in','','');this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0x123'),_0x4b70a2[_0x0491('0x5e')]));var _0x1b02c1=this[_0x0491('0x89')]['sync'](this,_0x4b70a2);if(_0x1b02c1){for(var _0x27a74f in _0x1b02c1){if(_0x1b02c1[_0x0491('0x92')](_0x27a74f)&&_[_0x0491('0x93')](_0x1b02c1[_0x27a74f])){this[_0x0491('0x10')]['setVariable'](util['format'](_0x0491('0x124'),_0x27a74f['toUpperCase']()),_0x1b02c1[_0x27a74f]);}}if(_['isNil'](_0x1b02c1[_0x0491('0x79')])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0x125'));}else{this[_0x0491('0x43')](_0x1b02c1[_0x0491('0x79')],'out',_0x0491('0x126'),'');return this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0x127'),_0x1b02c1[_0x0491('0x79')]));}}return this['channel'][_0x0491('0x2f')](_0x4b70a2,_0x0491('0x128'));};AGIVertices['prototype'][_0x0491('0x129')]=function(_0x314f26){logger[_0x0491('0x30')](util['format']('Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s',_0x314f26[_0x0491('0xaa')],_0x314f26[_0x0491('0x69')]));if(!this['isConfigured'](_0x314f26[_0x0491('0x7f')])){return this['channel'][_0x0491('0xbb')]('no\x20key\x20configured');}var _0x3ccc29=_0x0491('0x12a');var _0x376c13=util[_0x0491('0x2c')](_0x0491('0x12b'),FILES_PATH,rs[_0x0491('0x115')](0x4));var _0x177924=util[_0x0491('0x2c')](_0x0491('0x9a'),_0x376c13,_0x3ccc29);var _0xd86529=!![];if(_0x314f26[_0x0491('0x12c')]===_0x0491('0x12d')){_0xd86529=![];}var _0x1a6312=this[_0x0491('0x10')][_0x0491('0x12e')](_0x376c13,_0x3ccc29,_0x314f26['intKey'],_0x314f26[_0x0491('0x69')],undefined,_0xd86529);if(_0x1a6312['result']!==-0x1){this['channel'][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0x12f'),_0x177924));var _0x38af8b=this['googleASR'][_0x0491('0x73')](this,_0x314f26,_0x177924);if(_0x38af8b){for(var _0x437a22 in _0x38af8b){if(_0x38af8b[_0x0491('0x92')](_0x437a22)){this[_0x0491('0x10')][_0x0491('0x9b')](util[_0x0491('0x2c')]('GOOGLE_ASR_%s',_0x437a22[_0x0491('0xfd')]()),_0x38af8b[_0x437a22]);}}return this['channel']['noop'](util[_0x0491('0x2c')](_0x0491('0x130'),JSON[_0x0491('0x76')](_0x38af8b)));}}return _0x1a6312;};AGIVertices[_0x0491('0x12')]['tildeasr']=function(_0x402cf1){logger['info'](util[_0x0491('0x2c')](_0x0491('0x131'),_0x402cf1[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0x402cf1[_0x0491('0x132')])){return this[_0x0491('0x10')]['noop'](_0x0491('0x133'));}if(!this[_0x0491('0x82')](_0x402cf1[_0x0491('0x134')])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0x135'));}var _0x5e6079=_0x0491('0x12a');var _0x16bbb9=util[_0x0491('0x2c')](_0x0491('0x12b'),FILES_PATH,rs[_0x0491('0x115')](0x4));var _0x4d48a9=util['format'](_0x0491('0x9a'),_0x16bbb9,_0x5e6079);var _0x5ae2c7=!![];if(_0x402cf1[_0x0491('0x12c')]===_0x0491('0x12d')){_0x5ae2c7=![];}var _0x38e64c=this['channel'][_0x0491('0x12e')](_0x16bbb9,_0x5e6079,_0x402cf1[_0x0491('0x136')],_0x402cf1['timeout'],undefined,_0x5ae2c7);if(_0x38e64c['result']!==-0x1){this['channel'][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0x137'),_0x4d48a9));var _0x503587=this[_0x0491('0x8c')][_0x0491('0x73')](this,_0x402cf1,_0x4d48a9);if(_0x503587){for(var _0x2377fe in _0x503587){if(_0x503587[_0x0491('0x92')](_0x2377fe)){this[_0x0491('0x10')][_0x0491('0x9b')](util[_0x0491('0x2c')]('TILDE_ASR_%s',_0x2377fe['toUpperCase']()),_0x503587[_0x2377fe]);}}return this['channel'][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0x138'),JSON[_0x0491('0x76')](_0x503587)));}}return _0x38e64c;};AGIVertices[_0x0491('0x12')][_0x0491('0x139')]=function(_0x1c1e5a){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x13a'),_0x1c1e5a['label']));return this[_0x0491('0x10')][_0x0491('0x13b')](_0x1c1e5a[_0x0491('0x3d')],_0x1c1e5a[_0x0491('0x13c')],_0x1c1e5a[_0x0491('0x3e')]);};AGIVertices[_0x0491('0x12')]['gotoif']=function(_0x154175){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x13d'),_0x154175[_0x0491('0xaa')]));if(!this['isConfigured'](_0x154175['condition'])){return this['channel']['error'](_0x154175,_0x0491('0x13e'));}try{var _0x4bfd1f=eval(_0x154175[_0x0491('0x13f')])?'true':_0x0491('0x140');this['channel']['noop'](util[_0x0491('0x2c')](_0x0491('0x141'),_0x154175[_0x0491('0x13f')],_0x4bfd1f));return{'code':0xc8,'result':_0x4bfd1f};}catch(_0x59dad4){return{'code':0xc8,'result':_0x0491('0x140')};}};AGIVertices[_0x0491('0x12')][_0x0491('0x142')]=function(_0x17c4fa){logger[_0x0491('0x30')](util[_0x0491('0x2c')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x17c4fa[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0x17c4fa[_0x0491('0x143')])){return this[_0x0491('0x10')]['error'](_0x17c4fa,_0x0491('0x144'));}var _0x32cbb0=this[_0x0491('0x26')][_0x0491('0x73')](this,_0x17c4fa[_0x0491('0x143')]);if(!_0x32cbb0){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x17c4fa,'no\x20intervals\x20found');}for(var _0x1191ac=0x0;_0x1191ac<_0x32cbb0[_0x0491('0x98')];_0x1191ac+=0x1){var _0xa664e9=this[_0x0491('0x10')]['getVariable'](util[_0x0491('0x2c')](_0x0491('0x145'),_0x32cbb0[_0x1191ac]));if(_0xa664e9[_0x0491('0xa6')]===-0x1){return _0xa664e9;}logger['info'](util['format']('IFTIME\x20%s\x20%s',_0x32cbb0[_0x1191ac],_0xa664e9[_0x0491('0x9e')]));if(_0xa664e9[_0x0491('0x9e')]===_0x0491('0x146')){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x147'),_0x32cbb0[_0x1191ac],_0x0491('0x146')));this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0x147'),_0x32cbb0[_0x1191ac],_0x0491('0x146')));return{'code':0xc8,'result':'true'};}else{logger[_0x0491('0x30')](util['format']('IFTIME\x20%s\x20%s',_0x32cbb0[_0x1191ac],_0x0491('0x140')));this['channel'][_0x0491('0xbb')](util['format']('IFTIME\x20%s\x20%s',_0x32cbb0[_0x1191ac],_0x0491('0x140')));}}return{'code':0xc8,'result':_0x0491('0x140')};};AGIVertices[_0x0491('0x12')][_0x0491('0x148')]=function(_0x2c5bf3){logger['info'](util[_0x0491('0x2c')](_0x0491('0x149'),_0x2c5bf3[_0x0491('0xaa')]));return this[_0x0491('0x10')][_0x0491('0x148')]();};AGIVertices['prototype'][_0x0491('0x14a')]=function(_0x46d306){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x14b'),_0x46d306[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0x46d306[_0x0491('0x7f')])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0x14c'));}var _0x47e5e1=_0x0491('0x12a');var _0x4012bf=util[_0x0491('0x2c')]('%s/recordings/%s',FILES_PATH,rs[_0x0491('0x115')](0x4));var _0x4d1f67=util[_0x0491('0x2c')]('%s.%s',_0x4012bf,_0x47e5e1);var _0x5ea176=!![];if(_0x46d306[_0x0491('0x12c')]==='NOBEEP'){_0x5ea176=![];}var _0x4470a3=this['channel'][_0x0491('0x12e')](_0x4012bf,_0x47e5e1,_0x46d306[_0x0491('0x136')],_0x46d306[_0x0491('0x69')],undefined,_0x5ea176);if(_0x4470a3['result']!==-0x1){this[_0x0491('0x10')][_0x0491('0xbb')](util['format'](_0x0491('0x14d'),_0x4d1f67));var _0x5c514e=this['ispeechASR'][_0x0491('0x73')](this,_0x46d306,_0x4d1f67);if(_0x5c514e){for(var _0xa6b390 in _0x5c514e){if(_0x5c514e['hasOwnProperty'](_0xa6b390)){this[_0x0491('0x10')][_0x0491('0x9b')](util['format'](_0x0491('0x14e'),_0xa6b390[_0x0491('0xfd')]()),_0x5c514e[_0xa6b390]);}}return this['channel'][_0x0491('0xbb')](util['format']('IspeechASR\x20Result\x20%s',JSON[_0x0491('0x76')](_0x5c514e)));}}return _0x4470a3;};AGIVertices[_0x0491('0x12')][_0x0491('0x14f')]=function(_0x4c8993){logger['info'](util[_0x0491('0x2c')](_0x0491('0x150'),_0x4c8993[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0x4c8993[_0x0491('0x7f')])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0x14c'));}if(!this['isConfigured'](_0x4c8993[_0x0491('0x5e')])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0xa4'));}this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0x151'),_0x4c8993[_0x0491('0x5e')]));var _0x3e371e=this[_0x0491('0x152')]['sync'](this,_0x4c8993);if(_0x3e371e){this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')]('ispeech\x20%s\x20file\x20created',_0x3e371e));var _0x2e88f8=this[_0x0491('0x10')][_0x0491('0xff')](_0x3e371e,_0x4c8993['intKey']);try{fs['unlink'](_0x3e371e+_0x0491('0x101'));}catch(_0x402779){logger[_0x0491('0x2f')](_0x402779);}return _0x2e88f8;}return this['channel'][_0x0491('0x2f')](_0x4c8993,_0x0491('0x153'));};AGIVertices[_0x0491('0x12')][_0x0491('0x154')]=function(_0x370e29){logger[_0x0491('0x30')](util[_0x0491('0x2c')]('Enter\x20in\x20LOGIN\x20(%s)\x20block',_0x370e29['label']));if(!this[_0x0491('0x82')](_0x370e29[_0x0491('0x155')])){return this['channel'][_0x0491('0x2f')](_0x370e29,_0x0491('0x156'));}logger['info'](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x0491('0x10')][_0x0491('0x3b')],_0x370e29[_0x0491('0x155')]));var _0x57a4ed=this[_0x0491('0x56')][_0x0491('0x73')](this,_0x370e29[_0x0491('0x155')]);if(_0x57a4ed){logger['info'](util[_0x0491('0x2c')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x0491('0x10')][_0x0491('0x3b')],_0x370e29[_0x0491('0x155')]));this['channel']['noop'](util[_0x0491('0x2c')](_0x0491('0x157'),this['channel'][_0x0491('0x3b')],_0x370e29[_0x0491('0x155')]));return{'code':0xc8,'result':_0x0491('0x158')};}else{logger['info'](util[_0x0491('0x2c')](_0x0491('0x159'),this[_0x0491('0x10')]['callerid'],_0x370e29[_0x0491('0x155')]));this[_0x0491('0x10')]['noop'](util[_0x0491('0x2c')](_0x0491('0x159'),this[_0x0491('0x10')][_0x0491('0x3b')],_0x370e29[_0x0491('0x155')]));return{'code':0xc8,'result':_0x0491('0x15a')};}};AGIVertices[_0x0491('0x12')][_0x0491('0x15b')]=function(_0x49d86f){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x15c'),_0x49d86f['label']));if(!this['isConfigured'](_0x49d86f['findBy'])){return this['channel'][_0x0491('0x2f')](_0x49d86f,'no\x20find\x20by\x20configured');}logger['info'](util[_0x0491('0x2c')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x0491('0x10')]['callerid'],_0x49d86f[_0x0491('0x155')]));var _0x495468=this['agentLogout'][_0x0491('0x73')](this,_0x49d86f[_0x0491('0x155')]);if(_0x495468){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x157'),this[_0x0491('0x10')][_0x0491('0x3b')],_0x49d86f['findBy']));this['channel']['noop'](util[_0x0491('0x2c')](_0x0491('0x157'),this['channel']['callerid'],_0x49d86f[_0x0491('0x155')]));return{'code':0xc8,'result':_0x0491('0x158')};}else{logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x159'),this[_0x0491('0x10')][_0x0491('0x3b')],_0x49d86f['findBy']));this[_0x0491('0x10')]['noop'](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x0491('0x10')][_0x0491('0x3b')],_0x49d86f[_0x0491('0x155')]));return{'code':0xc8,'result':_0x0491('0x15a')};}};AGIVertices['prototype'][_0x0491('0x15d')]=function(_0x401dab){logger[_0x0491('0x30')](util['format'](_0x0491('0x15e'),_0x401dab[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0x401dab[_0x0491('0x15f')])){return this['channel'][_0x0491('0x2f')](_0x401dab,'no\x20operation\x20configured');}this[_0x0491('0x10')]['noop'](util[_0x0491('0x2c')]('math\x20%s',_0x401dab[_0x0491('0x15f')]));var _0x4d7379=eval(_0x401dab[_0x0491('0x15f')]);if(!this[_0x0491('0x82')](_0x401dab[_0x0491('0xd6')])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0x10c'));}var _0x3990c8=this[_0x0491('0x13')]['sync'](this,_0x401dab[_0x0491('0xd6')]);if(!_0x3990c8){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x401dab,_0x0491('0xd7'));}if(_[_0x0491('0x97')](_0x4d7379)){var _0x3ae45c=this;_0x4d7379[_0x0491('0xd8')](function(_0xa95421,_0x5de345){_0x3ae45c[_0x0491('0x10')][_0x0491('0x9b')](util[_0x0491('0x2c')](_0x0491('0x160'),_0x3990c8,_0x5de345),_0xa95421);});return this['channel'][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0x161'),_0x3990c8));}else{return this['channel']['setVariable'](_0x3990c8,_0x4d7379);}};AGIVertices[_0x0491('0x12')]['menu']=function(_0x2ddf26){logger[_0x0491('0x30')](util['format'](_0x0491('0x162'),_0x2ddf26[_0x0491('0xaa')]));if(_0x2ddf26[_0x0491('0xa0')]===0x0){return this['maxRetry'](_0x2ddf26);}_0x2ddf26[_0x0491('0xa0')]-=0x1;if(!this[_0x0491('0x82')](_0x2ddf26[_0x0491('0x163')])){return this[_0x0491('0x10')]['error'](_0x2ddf26,_0x0491('0x164'));}var _0x84a8e9=this[_0x0491('0x22')][_0x0491('0x73')](this,_0x2ddf26[_0x0491('0x163')]);if(!_0x84a8e9){return this[_0x0491('0x10')]['error'](_0x2ddf26,_0x0491('0x10b'));}var _0x2110e5=this[_0x0491('0x10')][_0x0491('0x10d')](_0x84a8e9,_0x2ddf26['response'],_0x2ddf26[_0x0491('0x165')]);var _0xf74f3e=_0x2110e5[_0x0491('0xa6')];if(_0x2110e5[_0x0491('0xa6')]===-0x1){this['createSquareDetailsReport'][_0x0491('0x73')](this,_0x2ddf26,'-1');return _0x2110e5;}else if(_0x2110e5['extra']===_0x0491('0x69')){_0x2110e5[_0x0491('0xa6')]=_0x2110e5[_0x0491('0xa6')][_0x0491('0x98')]>0x0?_0x2110e5[_0x0491('0xa6')]:'t';}else if(_[_0x0491('0x45')](_0x2110e5[_0x0491('0xa6')])){_0x2110e5[_0x0491('0xa6')]='#';_0xf74f3e='#';}if(!this[_0x0491('0x82')](_0x2ddf26['variable_id'])){this['channel']['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x558c90=this['getVariable'][_0x0491('0x73')](this,_0x2ddf26['variable_id']);if(!_0x558c90){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x2ddf26,_0x0491('0xd7'));}this[_0x0491('0x10')][_0x0491('0x9b')](_0x558c90,_0xf74f3e);}this[_0x0491('0x38')][_0x0491('0x73')](this,_0x2ddf26,_0xf74f3e);return _0x2110e5;};AGIVertices['prototype']['noop']=function(_0x5a627c){logger['info'](util['format'](_0x0491('0x166'),_0x5a627c[_0x0491('0xaa')]));return this[_0x0491('0x10')]['noop'](_0x5a627c[_0x0491('0x167')]||_0x5a627c[_0x0491('0xaa')]);};AGIVertices[_0x0491('0x12')]['pause']=function(_0x5e3e29){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x168'),_0x5e3e29[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0x5e3e29[_0x0491('0x155')])){return this[_0x0491('0x10')]['error'](_0x5e3e29,'no\x20find\x20by\x20configured');}logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x169'),this[_0x0491('0x10')][_0x0491('0x3b')],_0x5e3e29[_0x0491('0x155')]));var _0x565a72=this[_0x0491('0x50')][_0x0491('0x73')](this,_0x5e3e29['pause_id']);var _0x59c057=this[_0x0491('0x52')][_0x0491('0x73')](this,_0x5e3e29[_0x0491('0x155')],_0x565a72);if(_0x59c057){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x157'),this[_0x0491('0x10')]['callerid'],_0x5e3e29[_0x0491('0x155')]));this['channel']['noop'](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x0491('0x10')][_0x0491('0x3b')],_0x5e3e29[_0x0491('0x155')]));return{'code':0xc8,'result':_0x0491('0x158')};}else{logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x159'),this[_0x0491('0x10')][_0x0491('0x3b')],_0x5e3e29['findBy']));this[_0x0491('0x10')]['noop'](util[_0x0491('0x2c')](_0x0491('0x157'),this[_0x0491('0x10')][_0x0491('0x3b')],_0x5e3e29[_0x0491('0x155')]));return{'code':0xc8,'result':_0x0491('0x15a')};}};AGIVertices['prototype'][_0x0491('0x16a')]=function(_0x1b164c){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x16b'),_0x1b164c['label']));if(!this[_0x0491('0x82')](_0x1b164c['file_id'])){return this['channel'][_0x0491('0x2f')](_0x1b164c,_0x0491('0x164'));}var _0xee3127=this[_0x0491('0x22')][_0x0491('0x73')](this,_0x1b164c['file_id']);if(!_0xee3127){return this[_0x0491('0x10')]['error'](_0x1b164c,'no\x20file\x20audio\x20found');}var _0xd76413=this[_0x0491('0x10')][_0x0491('0xa5')](_0x0491('0x16c'),[_0xee3127,_0x1b164c[_0x0491('0xe3')]]);if(_0xd76413['result']===-0x1){return _0xd76413;}return this['channel'][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0xc0'),_0x0491('0x16c'),_0xee3127));};AGIVertices[_0x0491('0x12')][_0x0491('0x16d')]=function(_0x5e01c4){logger[_0x0491('0x30')](util[_0x0491('0x2c')]('Enter\x20in\x20QUEUE\x20(%s)\x20block',_0x5e01c4[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0x5e01c4[_0x0491('0x16e')])){return this[_0x0491('0x10')]['error'](_0x5e01c4,_0x0491('0x16f'));}var _0x1aa5e6='';var _0x4ba708=parseInt(_0x5e01c4['queue_id'],0xa);if(isNaN(_0x4ba708)){_0x1aa5e6=_0x5e01c4[_0x0491('0x16e')];}else{_0x1aa5e6=this['getVoiceQueue'][_0x0491('0x73')](this,_0x5e01c4[_0x0491('0x16e')]);if(!_0x1aa5e6){return this['channel'][_0x0491('0x2f')](_0x5e01c4,_0x0491('0x170'));}}var _0x10d60a='';if(this[_0x0491('0x82')](_0x5e01c4[_0x0491('0x163')])){var _0x1f496f=this[_0x0491('0x22')][_0x0491('0x73')](this,_0x5e01c4[_0x0491('0x163')]);if(_0x1f496f){_0x10d60a=_0x1f496f;}}this[_0x0491('0x38')]['sync'](this,_0x5e01c4,_0x1aa5e6);if(_0x5e01c4[_0x0491('0xe3')]['indexOf']('x')<0x0){_0x5e01c4[_0x0491('0xe3')]+='x';}if(_0x5e01c4[_0x0491('0xe3')][_0x0491('0x171')]('X')<0x0){_0x5e01c4[_0x0491('0xe3')]+='X';}this[_0x0491('0x10')][_0x0491('0x9b')]('XMCS-QUEUE',_0x1aa5e6?_0x1aa5e6[_0x0491('0x172')]():'');var _0x208fec=this[_0x0491('0x10')][_0x0491('0xa5')]('QUEUE',[_0x1aa5e6,_0x5e01c4[_0x0491('0xe3')],_0x5e01c4['url'],_0x10d60a,_0x5e01c4['timeout'],_0x5e01c4[_0x0491('0x8')],_0x5e01c4[_0x0491('0x173')],_0x5e01c4[_0x0491('0x174')],'',_0x5e01c4[_0x0491('0x175')]]);if(_0x208fec[_0x0491('0xa6')]===-0x1){return _0x208fec;}return this['channel']['noop'](util[_0x0491('0x2c')](_0x0491('0xc0'),'QUEUE',_0x1aa5e6));};AGIVertices[_0x0491('0x12')][_0x0491('0x176')]=function(_0x2a421f){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x177'),_0x2a421f['label']));var _0x210e13=_0x2a421f[_0x0491('0x178')]||'wav';var _0x55cd87=util[_0x0491('0x2c')]('%s_%s',this[_0x0491('0x10')][_0x0491('0x39')],rs[_0x0491('0x115')](0x5));var _0x35c787=util[_0x0491('0x2c')](_0x0491('0x179'),FILES_PATH,_0x55cd87,_0x210e13);var _0x4c9916=util['format'](_0x0491('0x12b'),FILES_PATH,_0x55cd87);this[_0x0491('0x3a')][_0x0491('0x73')](this,_0x2a421f,_0x55cd87,_0x35c787);this[_0x0491('0x10')]['setVariable']('RECORDING_SAVENAME',_0x55cd87);logger[_0x0491('0x30')](_0x0491('0x17a'),_0x4c9916,_0x210e13,_0x2a421f[_0x0491('0x17b')],_0x2a421f['timeout']);return this[_0x0491('0x10')][_0x0491('0x12e')](_0x4c9916,_0x210e13,_0x2a421f[_0x0491('0x17b')],_0x2a421f[_0x0491('0x69')],undefined,!![]);};AGIVertices['prototype'][_0x0491('0x17c')]=function(_0xa38c26){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x17d'),_0xa38c26[_0x0491('0xaa')]));if(!this['isConfigured'](_0xa38c26[_0x0491('0x68')])){return this[_0x0491('0x10')][_0x0491('0xbb')]('no\x20url\x20configured');}var _0x202b75=this[_0x0491('0x67')]['sync'](this,_0xa38c26);logger['info'](util[_0x0491('0x2c')](_0x0491('0x17e'),util['inspect'](_0x202b75,{'showHidden':![],'depth':null})));if(!this[_0x0491('0x82')](_0xa38c26['variable_id'])){return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0x17f'));}var _0x156d37=this[_0x0491('0x13')][_0x0491('0x73')](this,_0xa38c26[_0x0491('0xd6')]);if(!_0x156d37){return this[_0x0491('0x10')][_0x0491('0x2f')](_0xa38c26,_0x0491('0xd7'));}this[_0x0491('0x10')][_0x0491('0x9b')](util['format']('%s_STATUS_CODE',_0x156d37),_0x202b75['statusCode']?_0x202b75[_0x0491('0x78')]:'200');this[_0x0491('0x10')]['setVariable'](util[_0x0491('0x2c')](_0x0491('0x180'),_0x156d37),_0x202b75[_0x0491('0x77')]?_0x202b75[_0x0491('0x77')]:'OK');if(_0x202b75[_0x0491('0x6e')]){try{this['saveRestApiResult'](_0x202b75['body'],_0x156d37);}catch(_0x46906d){logger[_0x0491('0x2f')](util['format'](_0x0491('0x181'),_0x156d37));}}return this['channel'][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0xdc'),_0x156d37));};AGIVertices[_0x0491('0x12')][_0x0491('0x182')]=function(_0x2a332b){logger[_0x0491('0x30')](util['format'](_0x0491('0x183'),_0x2a332b[_0x0491('0xaa')]));return this[_0x0491('0x10')][_0x0491('0x184')](_0x2a332b[_0x0491('0x185')]['replace'](/\s+/g,''),_0x2a332b[_0x0491('0x17b')]);};AGIVertices['prototype']['saynumber']=function(_0xb65f1c){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x186'),_0xb65f1c[_0x0491('0xaa')]));return this[_0x0491('0x10')][_0x0491('0x187')](_0xb65f1c['number'][_0x0491('0xd4')](/\s+/g,''),_0xb65f1c[_0x0491('0x17b')]);};AGIVertices['prototype']['sayphonetic']=function(_0x40c579){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x188'),_0x40c579[_0x0491('0xaa')]));return this[_0x0491('0x10')][_0x0491('0x189')](_0x40c579['text'],_0x40c579['escape_digits']);};AGIVertices[_0x0491('0x12')][_0x0491('0x18a')]=function(_0x5258f6){logger[_0x0491('0x30')](util['format'](_0x0491('0x18b'),_0x5258f6['label']));if(!this[_0x0491('0x82')](_0x5258f6[_0x0491('0x18c')])){return this[_0x0491('0x10')][_0x0491('0xbb')]('no\x20mail\x20account\x20configured');}var _0x541ff0=this[_0x0491('0x18d')]['sync'](this,_0x5258f6[_0x0491('0x18c')]);if(!_0x541ff0||!_0x541ff0[_0x0491('0x18e')]){return this[_0x0491('0x10')]['error'](_0x5258f6,_0x0491('0x18f'));}var _0xb7a62={'from':util[_0x0491('0x2c')](_0x0491('0x190'),_0x541ff0[_0x0491('0x17')],_0x541ff0[_0x0491('0x191')]||_0x541ff0[_0x0491('0x18e')][_0x0491('0x192')]),'to':_0x5258f6['to']||'','cc':_0x5258f6['cc']||'','bcc':_0x5258f6[_0x0491('0x193')]||'','subject':_0x5258f6[_0x0491('0x194')],'html':_0x5258f6['text'],'text':_0x5258f6[_0x0491('0x5e')]};var _0x1d7f0b={'tls':{'rejectUnauthorized':![]}};if(_0x541ff0[_0x0491('0x18e')][_0x0491('0x195')]){_0x1d7f0b[_0x0491('0x195')]=_0x541ff0[_0x0491('0x18e')][_0x0491('0x195')];}else{_0x1d7f0b[_0x0491('0x196')]=_0x541ff0[_0x0491('0x18e')][_0x0491('0x196')];_0x1d7f0b[_0x0491('0x197')]=_0x541ff0['Smtp'][_0x0491('0x197')];_0x1d7f0b['secure']=_0x541ff0[_0x0491('0x18e')][_0x0491('0x198')];}if(_0x541ff0['Smtp'][_0x0491('0x199')]){_0x1d7f0b['auth']={'user':_0x541ff0[_0x0491('0x18e')][_0x0491('0x192')],'pass':_0x541ff0[_0x0491('0x18e')]['pass']};}if(this[_0x0491('0x82')](_0x5258f6[_0x0491('0x19a')])){}logger[_0x0491('0xdd')]('sendMail\x20message',JSON[_0x0491('0x76')](_0xb7a62));this[_0x0491('0x38')][_0x0491('0x73')](this,_0x5258f6,_0x5258f6[_0x0491('0x18c')]);this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')]('Trying\x20SendMail\x20with\x20account\x20%s',_0x541ff0[_0x0491('0x17')]));this[_0x0491('0x25')]['sync'](this,_0x1d7f0b,_0xb7a62);return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0x19b'));};AGIVertices[_0x0491('0x12')][_0x0491('0x19c')]=function(_0x3bc27f){logger[_0x0491('0x30')](util[_0x0491('0x2c')]('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x3bc27f[_0x0491('0xaa')]));return this[_0x0491('0x10')][_0x0491('0xbb')]('SENDFAX\x20block\x20not\x20implemented');};AGIVertices[_0x0491('0x12')][_0x0491('0x19d')]=function(_0x564cc1){logger[_0x0491('0x30')](util['format'](_0x0491('0x19e'),_0x564cc1[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0x564cc1[_0x0491('0x19f')])){return this[_0x0491('0x10')]['noop'](_0x0491('0x1a0'));}var _0x11c361=this['getSmsAccount'][_0x0491('0x73')](this,_0x564cc1['sms_account_id']);if(!_0x11c361){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x564cc1,_0x0491('0x1a1'));}var _0x240234={'body':_0x564cc1[_0x0491('0x1a2')],'phone':_0x564cc1['to']||'','SmsAccountId':_0x11c361['id']};logger[_0x0491('0xdd')](_0x0491('0x1a3'),JSON[_0x0491('0x76')](_0x240234));this[_0x0491('0x38')][_0x0491('0x73')](this,_0x564cc1,_0x564cc1[_0x0491('0x19f')]);this[_0x0491('0x10')]['noop'](util['format']('Trying\x20SendSMS\x20with\x20account\x20%s',_0x11c361['name']));this[_0x0491('0x37')][_0x0491('0x73')](this,_0x240234);return this[_0x0491('0x10')][_0x0491('0xbb')](_0x0491('0x1a4'));};AGIVertices[_0x0491('0x12')][_0x0491('0x1a5')]=function(_0x161f17){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x1a6'),_0x161f17[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0x161f17[_0x0491('0xd6')])){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x161f17,_0x0491('0x1a7'));}var _0x4458dd=this['getVariable']['sync'](this,_0x161f17[_0x0491('0xd6')]);if(!_0x4458dd){return this[_0x0491('0x10')]['error'](_0x161f17,_0x0491('0xd7'));}return this['channel']['setVariable'](_0x4458dd,_0x161f17[_0x0491('0x1a8')]);};AGIVertices[_0x0491('0x12')][_0x0491('0x1a9')]=function(_0x16359a){logger[_0x0491('0x30')](util[_0x0491('0x2c')]('Enter\x20in\x20START\x20(%s)\x20block',_0x16359a[_0x0491('0xaa')]));this[_0x0491('0x10')]['noop'](_0x0491('0x1aa'));if(_0x16359a['answer']===_0x0491('0x1ab')){this['channel'][_0x0491('0xbb')](_0x0491('0x1ac'));return this['channel']['answer']();}return this['channel'][_0x0491('0xbb')](_0x0491('0x1ad'));};AGIVertices[_0x0491('0x12')][_0x0491('0x1ae')]=function(_0x3bdc89){logger[_0x0491('0x30')](util['format'](_0x0491('0x1af'),_0x3bdc89[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0x3bdc89[_0x0491('0x1b0')])){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x3bdc89,_0x0491('0x1b1'));}var _0x1d04e4=this[_0x0491('0x1b')]['sync'](this,_0x3bdc89[_0x0491('0x1b0')]);if(!this[_0x0491('0x82')](_0x1d04e4)){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x3bdc89,util[_0x0491('0x2c')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x3bdc89['project_id']));}if(_0x1d04e4===this['channel']['arg_1']){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x3bdc89,_0x0491('0x1b2'));}this[_0x0491('0x38')][_0x0491('0x73')](this,_0x3bdc89,_0x1d04e4);var _0x5499ca=this[_0x0491('0x10')][_0x0491('0xa5')](_0x0491('0x1b3'),util[_0x0491('0x2c')]('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0x0491('0x8')]['host']||'127.0.0.1',_0x1d04e4,this['channel'][_0x0491('0x41')]));if(_0x5499ca[_0x0491('0xa6')]===-0x1){return _0x5499ca;}return this[_0x0491('0x10')][_0x0491('0xbb')](util['format'](_0x0491('0xc0'),'AGI',_0x1d04e4));};AGIVertices[_0x0491('0x12')][_0x0491('0x1b4')]=function(_0x4d7e93){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x1b5'),_0x4d7e93['label']));var _0x4224cf=this[_0x0491('0x5a')]['sync'](this,_0x4d7e93['command']);this[_0x0491('0x38')][_0x0491('0x73')](this,_0x4d7e93,_0x4d7e93[_0x0491('0xb4')]);if(this[_0x0491('0x82')](_0x4d7e93[_0x0491('0xd6')])){var _0x282c50=this[_0x0491('0x13')][_0x0491('0x73')](this,_0x4d7e93[_0x0491('0xd6')]);if(_0x282c50){this[_0x0491('0x10')][_0x0491('0x9b')](_0x282c50,_0x4224cf);return this[_0x0491('0x10')]['noop'](util[_0x0491('0x2c')](_0x0491('0x1b6'),_0x4d7e93['command'],_0x282c50));}}return this[_0x0491('0x10')]['noop'](util[_0x0491('0x2c')](_0x0491('0x1b7'),_0x4d7e93[_0x0491('0xb4')]));};AGIVertices['prototype'][_0x0491('0x1b8')]=function(_0x3e7c80){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x1b9'),_0x3e7c80['label']));_0x3e7c80[_0x0491('0x5e')]=_0x3e7c80['text']['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x0491('0x82')](_0x3e7c80[_0x0491('0x1ba')])){return this[_0x0491('0x10')]['noop'](_0x0491('0x1bb'));}if(!this[_0x0491('0x82')](_0x3e7c80[_0x0491('0x5e')])){return this['channel']['noop'](_0x0491('0xa4'));}this['channel'][_0x0491('0xbb')](util['format'](_0x0491('0x1bc'),_0x3e7c80[_0x0491('0x5e')]));var _0x8dc0f2=this[_0x0491('0x5c')][_0x0491('0x73')](this,_0x3e7c80);if(_0x8dc0f2){this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')]('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0x8dc0f2));var _0x2c164b=this['channel'][_0x0491('0xff')](_0x8dc0f2);try{fs[_0x0491('0x100')](_0x8dc0f2+_0x0491('0x101'));}catch(_0x4b9fff){logger['error'](_0x4b9fff);}return _0x2c164b;}return this[_0x0491('0x10')][_0x0491('0x2f')](_0x3e7c80,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices['prototype'][_0x0491('0x1bd')]=function(_0x3582cb){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x1be'),_0x3582cb[_0x0491('0xaa')]));_0x3582cb[_0x0491('0x5e')]=_0x3582cb[_0x0491('0x5e')][_0x0491('0xd4')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x0491('0x82')](_0x3582cb[_0x0491('0x5e')])){return this['channel'][_0x0491('0xbb')](_0x0491('0xa4'));}this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0x1bf'),_0x3582cb[_0x0491('0x5e')]));var _0x20e5f2=this[_0x0491('0x65')]['sync'](this,_0x3582cb);if(_0x20e5f2){this['channel'][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0x1c0'),_0x20e5f2));var _0x4bcb2b=this[_0x0491('0x10')]['streamFile'](_0x20e5f2);try{fs[_0x0491('0x100')](_0x20e5f2+_0x0491('0x101'));}catch(_0x44ec10){logger[_0x0491('0x2f')](_0x44ec10);}return _0x4bcb2b;}return this[_0x0491('0x10')][_0x0491('0x2f')](_0x3582cb,_0x0491('0x1c1'));};AGIVertices[_0x0491('0x12')][_0x0491('0x1c2')]=function(_0x3a79ee){logger['info'](util[_0x0491('0x2c')](_0x0491('0x1c3'),_0x3a79ee[_0x0491('0xaa')]));if(!this[_0x0491('0x82')](_0x3a79ee[_0x0491('0x155')])){return this[_0x0491('0x10')]['error'](_0x3a79ee,_0x0491('0x156'));}logger[_0x0491('0x30')](util[_0x0491('0x2c')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x0491('0x10')]['callerid'],_0x3a79ee[_0x0491('0x155')]));var _0x4f2b79=this[_0x0491('0x54')][_0x0491('0x73')](this,_0x3a79ee[_0x0491('0x155')]);if(_0x4f2b79){logger[_0x0491('0x30')](util[_0x0491('0x2c')](_0x0491('0x157'),this[_0x0491('0x10')][_0x0491('0x3b')],_0x3a79ee[_0x0491('0x155')]));this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')]('AGENT\x20%s\x20FOUND\x20BY',this['channel']['callerid'],_0x3a79ee['findBy']));return{'code':0xc8,'result':_0x0491('0x158')};}else{logger['info'](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x0491('0x10')][_0x0491('0x3b')],_0x3a79ee[_0x0491('0x155')]));this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0x159'),this[_0x0491('0x10')][_0x0491('0x3b')],_0x3a79ee['findBy']));return{'code':0xc8,'result':_0x0491('0x15a')};}};AGIVertices[_0x0491('0x12')][_0x0491('0x1c4')]=function(_0xe9711f){logger['info'](util[_0x0491('0x2c')]('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0xe9711f[_0x0491('0xaa')]));var _0x56a55e=this['channel'][_0x0491('0xa5')]('VOICEMAIL',[_0xe9711f['mailbox'],_0xe9711f[_0x0491('0x7a')]]);if(_0x56a55e[_0x0491('0xa6')]===-0x1){return _0x56a55e;}return this[_0x0491('0x10')][_0x0491('0xbb')](util[_0x0491('0x2c')](_0x0491('0xc0'),_0x0491('0x1c5'),_0xe9711f['mailbox']));};AGIVertices[_0x0491('0x12')][_0x0491('0x1c6')]=function(_0x23054d){logger[_0x0491('0x30')](util['format'](_0x0491('0x1c7'),_0x23054d[_0x0491('0xaa')]));if(!this['isConfigured'](_0x23054d['variable_id'])){return this[_0x0491('0x10')][_0x0491('0x2f')](_0x23054d,_0x0491('0x1a7'));}var _0x42ef76=this['getVariable'][_0x0491('0x73')](this,_0x23054d[_0x0491('0xd6')]);if(!_0x42ef76){return this['channel'][_0x0491('0x2f')](_0x23054d,_0x0491('0xd7'));}var _0x3783e7=this[_0x0491('0x10')][_0x0491('0x13')](_0x42ef76);return{'code':0xc8,'result':_0x3783e7[_0x0491('0x9e')]?_0x3783e7[_0x0491('0x9e')]:'-'};};String[_0x0491('0x12')][_0x0491('0x1c8')]=function(_0x37e68f,_0x29d9af){return this[_0x0491('0x9d')](_0x37e68f)[_0x0491('0x1c9')](_0x29d9af);};module[_0x0491('0x1ca')]=AGIVertices;
\ No newline at end of file
+var _0xe033=['MALE','MP3','googleTTS','restAPI','url','method','timeout','number','includes','POST','PUT','toUpperCase','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','computedVariables','sync','render','body','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','googleDialogflowV2','dialogflowV2_project_id','client_email','sestekNDA','ispeechTTS','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_polly_region','Amy','awsLex','aws_secret_access_key','aws_lex_region','aws_bot_name','googleASR','tildeASR','appid','appsecret','uri','clear','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','isPlainObject','recursiveNodeIndex','length','saveRestApiResult','isArray','%s.%s','setVariable','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','exec','noop','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','Wait\x20%s\x20seconds\x20before\x20answer','wait','answer','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','add','minutes','callback_priority','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','phone','custom_app','application','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','no\x20text\x20configured','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','MRCPSynth','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','LUMENVOX_ASR_TRANSCRIPT','Executed\x20command\x20MRCPRecog\x20%s','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','database','odbc_id','no\x20database\x20selected','getSquareOdbc','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20found','DIAL','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','no\x20project_id\x20configured','no\x20client_email\x20configured','private_key','no\x20private_key\x20configured','dialogflowV2_language','no\x20anguage\x20configured','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','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','trunk_id','no\x20trunk\x20selected','trunk_name','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','getdigits','file_id','getData','response','maxdigit','test','mindigit','hiddendigitsnum','generate','hiddendigitspos','substr','getsecretdigits','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','GOAL\x20%s','goalname','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','beep','NOBEEP','recordFile','intKey','GOOGLE_ASR_%s','tildeasr','no\x20appid\x20configured','no\x20appsecret\x20configured','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20intervals\x20found','IFTIME\x20%s\x20%s','true','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','%s/recordings/%s','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','findBy','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','logout','no\x20find\x20by\x20configured','failure','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','no\x20file\x20audio\x20found','Enter\x20in\x20NOOP\x20(%s)\x20block','output','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','no\x20file\x20audio\x20selected','Executed\x20command\x20%s\x20%s','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','position','record','%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','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','saynumber','sayNumber','sayphonetic','sendMail','no\x20mail\x20account\x20configured','account_id','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','bcc','service','host','port','secure','authentication','auth','pass','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','no\x20sms\x20account\x20found','sendSMS\x20message','sms_account_id','Trying\x20SendSMS\x20with\x20account\x20%s','no\x20variable\x20selected','start','START\x20CALLY\x20SQUARE','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','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','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','apiKey','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','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','exports','path','util','lodash','shelljs','randomstring','mustache','request-promise','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','channel','rpc','mailRpc','prototype','getVariable','getVariableById','name','catch','getVoiceQueue','getVoiceQueueById','then','getSquareProjectById','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','IntervalId','interval','format','%s/sounds/converted/%s','getQueryOdbc','open','error','info','ODBC\x20connection\x20successfully','query','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','priority','accountcode','dnid','file','createSquareMessage','uniqueid','createCmContact','isEmpty','callback_','random','lastName','isNil','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','getPause','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','shellCommand','trim','replace','googleCloudTTS','text','languageCode','en-US'];(function(_0x3c8402,_0x39fc11){var _0xdc50a5=function(_0x5ef939){while(--_0x5ef939){_0x3c8402['push'](_0x3c8402['shift']());}};_0xdc50a5(++_0x39fc11);}(_0xe033,0x161));var _0x3e03=function(_0x29518c,_0x575377){_0x29518c=_0x29518c-0x0;var _0x1cbb29=_0xe033[_0x29518c];return _0x1cbb29;};'use strict';var fs=require('fs');var path=require(_0x3e03('0x0'));var util=require(_0x3e03('0x1'));var _=require(_0x3e03('0x2'));var sh=require(_0x3e03('0x3'));var odbc=require('odbc')();var rs=require(_0x3e03('0x4'));var moment=require('moment');var Mustache=require(_0x3e03('0x5'));var rp=require(_0x3e03('0x6'));var logger=require('../../config/logger')(_0x3e03('0x7'));var config=require(_0x3e03('0x8'));var scripts=require(_0x3e03('0x9'));var FILES_PATH=_0x3e03('0xa');var recursiveMapAttributes=[_0x3e03('0xb'),_0x3e03('0xc')];var verticesWithRetry=[_0x3e03('0xd'),'getdigits','getsecretdigits'];var AGIVertices=function(_0x2d4c9f,_0x4542f7,_0x17eb1a){this[_0x3e03('0xe')]=_0x2d4c9f;this[_0x3e03('0xf')]=_0x4542f7;this[_0x3e03('0x10')]=_0x17eb1a;};AGIVertices[_0x3e03('0x11')][_0x3e03('0x12')]=function(_0x39a545,_0x524eb8){this[_0x3e03('0xf')][_0x3e03('0x13')](_0x39a545)['then'](function(_0x13e56c){_0x524eb8(null,_0x13e56c?_0x13e56c[_0x3e03('0x14')]:![]);})[_0x3e03('0x15')](function(_0x335cab){_0x524eb8(_0x335cab);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x16')]=function(_0x145dac,_0x1830f4){this[_0x3e03('0xf')][_0x3e03('0x17')](_0x145dac)[_0x3e03('0x18')](function(_0x5f499a){_0x1830f4(null,_0x5f499a?_0x5f499a[_0x3e03('0x14')]:![]);})[_0x3e03('0x15')](function(_0x3c8c24){_0x1830f4(_0x3c8c24);});};AGIVertices[_0x3e03('0x11')]['getSquareProject']=function(_0x5400ca,_0x22a22d){this[_0x3e03('0xf')][_0x3e03('0x19')](_0x5400ca)[_0x3e03('0x18')](function(_0x34f4c5){_0x22a22d(null,_0x34f4c5?_0x34f4c5[_0x3e03('0x14')]:![]);})[_0x3e03('0x15')](function(_0x487dcd){_0x22a22d(_0x487dcd);});};AGIVertices[_0x3e03('0x11')]['getSquareOdbc']=function(_0x5a0544,_0x213f66){this[_0x3e03('0xf')][_0x3e03('0x1a')](_0x5a0544)[_0x3e03('0x18')](function(_0x39733e){_0x213f66(null,_0x39733e?_0x39733e[_0x3e03('0x1b')]:![]);})['catch'](function(_0x32a312){_0x213f66(_0x32a312);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x1c')]=function(_0x42df10,_0x50e929){this['rpc'][_0x3e03('0x1d')](_0x42df10)[_0x3e03('0x18')](function(_0x148f4a){_0x50e929(null,_0x148f4a?_0x148f4a[_0x3e03('0x14')]:![]);})[_0x3e03('0x15')](function(_0x3df493){_0x50e929(_0x3df493);});};AGIVertices['prototype'][_0x3e03('0x1e')]=function(_0x3cae21,_0x2df34){this['rpc'][_0x3e03('0x1f')](_0x3cae21)[_0x3e03('0x18')](function(_0xbe5328){_0x2df34(null,_0xbe5328?_0xbe5328[_0x3e03('0x14')]:![]);})['catch'](function(_0x6af631){_0x2df34(_0x6af631);});};AGIVertices['prototype'][_0x3e03('0x20')]=function(_0x712650,_0xda8cd2){var _0x89a75b=this;this[_0x3e03('0xf')]['getSoundById'](_0x712650)[_0x3e03('0x18')](function(_0x4ca8f4){_0xda8cd2(null,_0x4ca8f4?_0x89a75b[_0x3e03('0x21')](_0x4ca8f4[_0x3e03('0x22')]):![]);})['catch'](function(_0x5acbda){_0xda8cd2(_0x5acbda);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x23')]=function(_0x35b018,_0x47f1bf){this['rpc'][_0x3e03('0x24')](_0x35b018)['then'](function(_0x466e81){_0x47f1bf(null,_0x466e81?_0x466e81:![]);})['catch'](function(_0x52e197){_0x47f1bf(_0x52e197);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x25')]=function(_0x25e116,_0x288f99,_0x113b8a){this['mailRpc']['sendMailMessage'](_0x25e116,_0x288f99)[_0x3e03('0x18')](function(){_0x113b8a(null);})[_0x3e03('0x15')](function(_0x3e37b1){_0x113b8a(_0x3e37b1);});};AGIVertices['prototype'][_0x3e03('0x26')]=function(_0x98f22f,_0x55d3a9){this[_0x3e03('0xf')]['getIntervalById'](_0x98f22f)[_0x3e03('0x18')](function(_0x29695d){if(_0x29695d){if(_0x29695d[_0x3e03('0x27')]){_0x55d3a9(null,[_0x29695d[_0x3e03('0x28')]]);}else{_0x55d3a9(null,_['map'](_0x29695d['Intervals'],_0x3e03('0x28')));}}else{_0x55d3a9(null,![]);}})[_0x3e03('0x15')](function(_0x2cf190){_0x55d3a9(_0x2cf190);});};AGIVertices['prototype'][_0x3e03('0x21')]=function(_0x4130a2){return util[_0x3e03('0x29')](_0x3e03('0x2a'),FILES_PATH,_0x4130a2);};AGIVertices[_0x3e03('0x11')][_0x3e03('0x2b')]=function(_0x344872,_0x393acd,_0x3dcfc8){odbc[_0x3e03('0x2c')](_0x344872,function(_0x391ea8){if(_0x391ea8){logger[_0x3e03('0x2d')]('Error\x20getting\x20ODBC\x20connection\x20%s',_0x391ea8);_0x3dcfc8(_0x391ea8);}else{logger[_0x3e03('0x2e')](_0x3e03('0x2f'));odbc[_0x3e03('0x30')](_0x393acd,function(_0x3afc9a,_0x43efed){if(_0x3afc9a){logger[_0x3e03('0x2e')]('Error\x20executing\x20query\x20%s',_0x393acd);_0x3dcfc8(_0x3afc9a);}else{logger[_0x3e03('0x2e')](_0x3e03('0x31'),_0x393acd);odbc[_0x3e03('0x32')](function(_0x2ce2c7){if(_0x2ce2c7){logger[_0x3e03('0x2d')](_0x3e03('0x33'),_0x2ce2c7);}_0x3dcfc8(null,_0x43efed);});}});}});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x34')]=function(_0x1f194e,_0x171f15){this[_0x3e03('0xf')][_0x3e03('0x35')](_0x1f194e)[_0x3e03('0x18')](function(_0x25c68b){_0x171f15(null,_0x25c68b?_0x25c68b:![]);})[_0x3e03('0x15')](function(_0x32e002){_0x171f15(_0x32e002);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x36')]=function(_0x548cde,_0x2b78b2){this['rpc'][_0x3e03('0x36')](_0x548cde)['then'](function(_0x1037c6){_0x2b78b2(null,_0x1037c6);})['catch'](function(_0x4e382b){_0x2b78b2(_0x4e382b);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x37')]=function(_0x4445d0,_0x5b38aa,_0x26c5df){this['rpc']['createSquareDetailsReport']({'uniqueid':this[_0x3e03('0xe')]['uniqueid'],'node':_0x4445d0[_0x3e03('0x38')],'application':_0x4445d0[_0x3e03('0x39')],'data':_0x5b38aa||null,'project_name':this[_0x3e03('0xe')][_0x3e03('0x3a')],'callerid':this[_0x3e03('0xe')][_0x3e03('0x3b')]})[_0x3e03('0x18')](function(_0x23b2c1){if(_0x26c5df){_0x26c5df(null,_0x23b2c1);}})[_0x3e03('0x15')](function(_0x4ac512){if(_0x26c5df){_0x26c5df(_0x4ac512);}});};AGIVertices['prototype'][_0x3e03('0x3c')]=function(_0x7c8de5,_0x19f534,_0x7e6cae,_0x428257){this[_0x3e03('0xf')]['createSquareRecording']({'uniqueid':this[_0x3e03('0xe')]['uniqueid'],'callerid':this[_0x3e03('0xe')][_0x3e03('0x3b')],'calleridname':this[_0x3e03('0xe')][_0x3e03('0x3d')],'context':this[_0x3e03('0xe')][_0x3e03('0x3e')],'extension':this[_0x3e03('0xe')]['extension'],'priority':this['channel'][_0x3e03('0x3f')],'accountcode':this[_0x3e03('0xe')][_0x3e03('0x40')],'dnid':this[_0x3e03('0xe')][_0x3e03('0x41')],'projectName':this[_0x3e03('0xe')][_0x3e03('0x3a')],'saveName':_0x19f534,'filename':_0x7c8de5[_0x3e03('0x42')]||_0x19f534,'savePath':_0x7e6cae})[_0x3e03('0x18')](function(_0x561a5b){_0x428257(null,_0x561a5b);})[_0x3e03('0x15')](function(_0x5b7d05){_0x428257(_0x5b7d05);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x43')]=function(_0x2583d4,_0x5b5e64,_0x1214c4,_0xafbb11,_0xfc2552){this['rpc'][_0x3e03('0x43')]({'uniqueid':this[_0x3e03('0xe')][_0x3e03('0x44')],'body':_0x2583d4,'direction':_0x5b5e64,'providerName':_0x1214c4,'providerResponse':_0xafbb11})[_0x3e03('0x18')](function(_0x318bb4){if(_0xfc2552){_0xfc2552(null,_0x318bb4);}})[_0x3e03('0x15')](function(_0x40a8ab){if(_0xfc2552){_0xfc2552(_0x40a8ab);}});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x45')]=function(_0x274b7f,_0x1ff7ea){this[_0x3e03('0xf')]['createCmContact']({'firstName':_[_0x3e03('0x46')](_0x274b7f[_0x3e03('0x14')])||_['isNil'](_0x274b7f[_0x3e03('0x14')])?_0x3e03('0x47')+Math[_0x3e03('0x48')]():_0x274b7f[_0x3e03('0x14')],'lastName':_['isEmpty'](_0x274b7f[_0x3e03('0x49')])||_[_0x3e03('0x4a')](_0x274b7f[_0x3e03('0x49')])?null:_0x274b7f['lastName'],'phone':_0x274b7f['phone'],'ListId':_0x274b7f[_0x3e03('0x4b')],'scheduledat':_0x274b7f[_0x3e03('0x4c')],'callbackUniqueid':this[_0x3e03('0xe')][_0x3e03('0x44')],'tags':_0x3e03('0x4d'),'description':_0x3e03('0x4e')+_0x274b7f[_0x3e03('0x4c')][_0x3e03('0x4f')](),'priority':_0x274b7f['callback_priority']})[_0x3e03('0x18')](function(_0x300daa){_0x1ff7ea(null,_0x300daa);})[_0x3e03('0x15')](function(_0x259ef0){_0x1ff7ea(_0x259ef0);});};AGIVertices['prototype'][_0x3e03('0x50')]=function(_0x297c84,_0x1e7b16){this[_0x3e03('0xf')]['getPauseById'](_0x297c84)[_0x3e03('0x18')](function(_0x35943c){_0x1e7b16(null,_0x35943c?_0x35943c[_0x3e03('0x14')]:![]);})['catch'](function(_0x2e8577){_0x1e7b16(_0x2e8577);});};AGIVertices['prototype'][_0x3e03('0x51')]=function(_0x22814d,_0x530bd5,_0x60cbf5){var _0x12850a={'role':_0x3e03('0x52')};_0x12850a[_0x22814d]=this[_0x3e03('0xe')][_0x3e03('0x3b')];this[_0x3e03('0xf')]['agentPause'](_0x12850a,_0x530bd5,this[_0x3e03('0xe')][_0x3e03('0x44')])[_0x3e03('0x18')](function(_0x4a4710){_0x60cbf5(null,_['isNil'](_0x4a4710)?![]:!![]);})[_0x3e03('0x15')](function(_0x36397e){logger[_0x3e03('0x2d')](_0x36397e);_0x60cbf5(null,![]);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x53')]=function(_0x46cb16,_0x3cc42f){var _0x16084d={'role':'agent'};_0x16084d[_0x46cb16]=this[_0x3e03('0xe')][_0x3e03('0x3b')];this[_0x3e03('0xf')][_0x3e03('0x53')](_0x16084d)[_0x3e03('0x18')](function(_0x35763b){_0x3cc42f(null,_['isNil'](_0x35763b)?![]:!![]);})[_0x3e03('0x15')](function(_0x3ffd13){logger[_0x3e03('0x2d')](_0x3ffd13);_0x3cc42f(null,![]);});};AGIVertices['prototype'][_0x3e03('0x54')]=function(_0x1b5a1e,_0x417fb6){var _0x4b390a={'role':'agent'};_0x4b390a[_0x1b5a1e]=this[_0x3e03('0xe')]['callerid'];this[_0x3e03('0xf')][_0x3e03('0x54')](_0x4b390a)[_0x3e03('0x18')](function(_0x5000af){_0x417fb6(null,_[_0x3e03('0x4a')](_0x5000af)?![]:!![]);})[_0x3e03('0x15')](function(_0x59f635){logger[_0x3e03('0x2d')](_0x59f635);_0x417fb6(null,![]);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x55')]=function(_0x1b9369,_0x134604){var _0x245084={'role':'agent'};_0x245084[_0x1b9369]=this[_0x3e03('0xe')]['callerid'];var _0x35b079=_0x1b9369!=_0x3e03('0x56')?util[_0x3e03('0x29')](_0x3e03('0x57'),_0x3e03('0x58'),this[_0x3e03('0xe')][_0x3e03('0x3b')]):undefined;this[_0x3e03('0xf')][_0x3e03('0x55')](_0x245084,_0x35b079)[_0x3e03('0x18')](function(_0x502e8a){_0x134604(null,_['isNil'](_0x502e8a)?![]:!![]);})[_0x3e03('0x15')](function(_0x9890f9){logger['error'](_0x9890f9);_0x134604(null,![]);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x59')]=function(_0x1a6584,_0x50e117){sh['exec'](_[_0x3e03('0x5a')](_0x1a6584),function(_0x671703,_0x3acce1){var _0x4de9c7=_0x3acce1[_0x3e03('0x5b')](/(\r\n|\n|\r)/gm,'');_0x50e117(null,_0x4de9c7);});};AGIVertices['prototype']['googleCloudTTS']=function(_0x4fa108,_0xe0cbf7){scripts[_0x3e03('0x5c')](_0x4fa108['apiKey'],_0x4fa108['google_cloud_tts_text_type']||'text',_0x4fa108[_0x3e03('0x5d')],_0x4fa108[_0x3e03('0x5e')]||_0x3e03('0x5f'),_0x4fa108['ssmlGender']||_0x3e03('0x60'),_0x4fa108['audioEncoding']||_0x3e03('0x61'))[_0x3e03('0x18')](function(_0x4f730f){_0xe0cbf7(null,_0x4f730f);})[_0x3e03('0x15')](function(_0x102212){_0xe0cbf7(_0x102212);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x62')]=function(_0x1d9e68,_0x5f1b35){scripts['googleTTS'](_0x1d9e68[_0x3e03('0x5d')],_0x1d9e68['google_tts_language']||'en',0x1)[_0x3e03('0x18')](function(_0xadc73e){_0x5f1b35(null,_0xadc73e);})[_0x3e03('0x15')](function(_0x227a21){_0x5f1b35(_0x227a21);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x63')]=function(_0x150808,_0x63177c){var _0x3f5012={'uri':_0x150808[_0x3e03('0x64')],'method':_0x150808[_0x3e03('0x65')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x150808[_0x3e03('0x66')])===_0x3e03('0x67')&&parseInt(_0x150808['timeout'])>=0x1?parseInt(_0x150808['timeout'])*0x3e8:0x5*0x3e8};if(_[_0x3e03('0x68')]([_0x3e03('0x69'),_0x3e03('0x6a')],_0x3f5012[_0x3e03('0x65')][_0x3e03('0x6b')]())){try{_0x3f5012['body']=_0x150808[_0x3e03('0xc')]?JSON[_0x3e03('0x6c')](_0x150808[_0x3e03('0xc')]):{};}catch(_0x1116da){logger['error'](_0x3e03('0x6d'),_0x1116da);}}try{_0x3f5012[_0x3e03('0x6e')]=_0x150808[_0x3e03('0xb')]?JSON[_0x3e03('0x6c')](_0x150808['rawHeaders']):{};}catch(_0xb11238){logger[_0x3e03('0x2d')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0xb11238);}if(_0x150808[_0x3e03('0x6f')]){try{var _0x5ed00c=require(_0x150808[_0x3e03('0x6f')])[_0x3e03('0x70')](this,_0x3f5012);_0x3f5012['uri']=Mustache[_0x3e03('0x71')](_0x150808['url'],_0x5ed00c,{},['$$','$$']);if(_0x3f5012[_0x3e03('0x6e')]){_0x3f5012[_0x3e03('0x6e')]=JSON[_0x3e03('0x6c')](Mustache[_0x3e03('0x71')](JSON['stringify'](_0x3f5012[_0x3e03('0x6e')]),_0x5ed00c,{},['$$','$$']));}if(_0x3f5012[_0x3e03('0x72')]){_0x3f5012[_0x3e03('0x72')]=JSON[_0x3e03('0x6c')](Mustache[_0x3e03('0x71')](JSON[_0x3e03('0x73')](_0x3f5012['body']),_0x5ed00c,{},['$$','$$']));}}catch(_0x2e3b58){logger[_0x3e03('0x2d')](_0x3e03('0x74'),_0x2e3b58);}}rp(_0x3f5012)[_0x3e03('0x18')](function(_0xf1ffef){var _0x5ccd45={'statusCode':_0xf1ffef[_0x3e03('0x75')]||0xc8,'statusMessage':_0xf1ffef[_0x3e03('0x76')]||'OK','headers':_0xf1ffef[_0x3e03('0x6e')]||{},'body':_0xf1ffef[_0x3e03('0x72')]||{}};_0x63177c(null,_0x5ccd45);})[_0x3e03('0x15')](function(_0xbe04b8){var _0x23f965={'statusCode':_0xbe04b8[_0x3e03('0x75')]||0x1f4,'statusMessage':_0xbe04b8[_0x3e03('0x77')]||_0x3e03('0x78'),'headers':_0xbe04b8[_0x3e03('0x79')]['headers']||{},'body':_0xbe04b8[_0x3e03('0x79')][_0x3e03('0x72')]||{}};_0x63177c(null,_0x23f965);});};AGIVertices['prototype'][_0x3e03('0x7a')]=function(_0x40197e,_0x34f4e7){scripts[_0x3e03('0x7a')](this[_0x3e03('0xe')][_0x3e03('0x44')],_0x40197e[_0x3e03('0x7b')],_0x40197e[_0x3e03('0x5d')],_0x40197e['dialogflow_language']||'en')['then'](function(_0x47d24d){_0x34f4e7(null,_0x47d24d);})[_0x3e03('0x15')](function(_0x5c26c8){_0x34f4e7(_0x5c26c8);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x7c')]=function(_0x2dc7b3,_0x170096){scripts[_0x3e03('0x7c')](this[_0x3e03('0xe')][_0x3e03('0x44')],_0x2dc7b3[_0x3e03('0x7d')],_0x2dc7b3[_0x3e03('0x7e')],_0x2dc7b3['private_key'],_0x2dc7b3[_0x3e03('0x5d')],_0x2dc7b3['dialogflowV2_language']||'en')['then'](function(_0x4b5d39){_0x170096(null,_0x4b5d39);})[_0x3e03('0x15')](function(_0x4aa752){_0x170096(_0x4aa752);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x7f')]=function(_0x239c0b,_0x40dcd1){scripts[_0x3e03('0x7f')](this[_0x3e03('0xe')],_0x239c0b)['then'](function(_0x1a33b3){_0x40dcd1(null,_0x1a33b3);})[_0x3e03('0x15')](function(_0x34bdf3){_0x40dcd1(_0x34bdf3);});};AGIVertices[_0x3e03('0x11')]['ispeechTTS']=function(_0xaaf026,_0x55bfaa){scripts[_0x3e03('0x80')](_0xaaf026[_0x3e03('0x7b')],_0xaaf026[_0x3e03('0x5d')],_0xaaf026['ispeech_tts_language']||'en-US',_0xaaf026['speed'])[_0x3e03('0x18')](function(_0x100ba9){_0x55bfaa(null,_0x100ba9);})['catch'](function(_0x499ac0){_0x55bfaa(_0x499ac0);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x81')]=function(_0x11fe90,_0x2d97db,_0x10b021){scripts[_0x3e03('0x81')](_0x2d97db,_0x11fe90['key'],_0x11fe90[_0x3e03('0x82')]||'en-US',this[_0x3e03('0x83')](_0x11fe90[_0x3e03('0x84')])?_0x11fe90[_0x3e03('0x84')]:undefined)['then'](function(_0x274f74){_0x10b021(null,_0x274f74);})['catch'](function(_0x271b5d){_0x10b021(_0x271b5d);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x85')]=function(_0x3f987d,_0x39f0a1){scripts[_0x3e03('0x85')](_0x3f987d[_0x3e03('0x86')],_0x3f987d['aws_secret_access_key'],_0x3f987d[_0x3e03('0x87')],_0x3f987d['aws_polly_voice']||_0x3e03('0x88'),_0x3f987d[_0x3e03('0x5d')],_0x3f987d['aws_text_type']||_0x3e03('0x5d'))[_0x3e03('0x18')](function(_0x42da12){_0x39f0a1(null,_0x42da12);})[_0x3e03('0x15')](function(_0x14b1cd){_0x39f0a1(_0x14b1cd);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x89')]=function(_0x36b119,_0x1293ae){scripts['awsLex'](this[_0x3e03('0xe')][_0x3e03('0x44')],_0x36b119[_0x3e03('0x86')],_0x36b119[_0x3e03('0x8a')],_0x36b119[_0x3e03('0x8b')],_0x36b119[_0x3e03('0x5d')],_0x36b119[_0x3e03('0x8c')])[_0x3e03('0x18')](function(_0x558241){_0x1293ae(null,_0x558241);})['catch'](function(_0x1c2c3f){_0x1293ae(_0x1c2c3f);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x8d')]=function(_0x2d7ed1,_0x4f03e5,_0x1be073){scripts[_0x3e03('0x8d')](_0x4f03e5,_0x2d7ed1[_0x3e03('0x7b')],_0x2d7ed1['google_asr_language']||_0x3e03('0x5f'))['then'](function(_0x2c8471){_0x1be073(null,_0x2c8471);})[_0x3e03('0x15')](function(_0x4ae61f){_0x1be073(_0x4ae61f);});};AGIVertices['prototype']['tildeASR']=function(_0x5f239f,_0x476dfb,_0x14467d){scripts[_0x3e03('0x8e')](_0x476dfb,_0x5f239f[_0x3e03('0x8f')],_0x5f239f[_0x3e03('0x90')],_0x5f239f[_0x3e03('0x91')])[_0x3e03('0x18')](function(_0xce35e1){_0x14467d(null,_0xce35e1);})[_0x3e03('0x15')](function(_0xd84d5b){_0x14467d(_0xd84d5b);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x92')]=function(_0x2a05ce){var _0x145528=_[_0x3e03('0x68')](verticesWithRetry,_0x2a05ce['agicommand'])?_0x2a05ce:_[_0x3e03('0x93')](_0x2a05ce);for(var _0x3c425d in _0x145528){if(_0x145528[_0x3e03('0x94')](_0x3c425d)){if(_0x145528[_0x3c425d]&&_[_0x3e03('0x95')](_0x145528[_0x3c425d])){if(_[_0x3e03('0x68')](recursiveMapAttributes,_0x3c425d)){_0x145528[_0x3c425d]=this[_0x3e03('0x96')](_0x145528[_0x3c425d]);}else{_0x145528[_0x3c425d]=this[_0x3e03('0x97')](_0x145528[_0x3c425d]);}}}}return _0x145528;};AGIVertices[_0x3e03('0x11')]['recursiveNodeIndex']=function(_0x5193d1){for(var _0x29fb3b in _0x5193d1){if(_0x5193d1[_0x3e03('0x94')](_0x29fb3b)){if(_[_0x3e03('0x98')](_0x5193d1[_0x29fb3b])){this[_0x3e03('0x99')](_0x5193d1[_0x29fb3b]);}else if(_['isArray'](_0x5193d1[_0x29fb3b])){for(var _0x569b3f=0x0;_0x569b3f<_0x5193d1[_0x29fb3b][_0x3e03('0x9a')];_0x569b3f++){this[_0x3e03('0x99')](_0x5193d1[_0x29fb3b][_0x569b3f]);}}else if(_[_0x3e03('0x95')](_0x5193d1[_0x29fb3b])){_0x5193d1[_0x29fb3b]=this[_0x3e03('0x97')](_0x5193d1[_0x29fb3b]);}}}};AGIVertices[_0x3e03('0x11')][_0x3e03('0x9b')]=function(_0x50d3ce,_0x5b4144){for(var _0x5f362b in _0x50d3ce){if(_0x50d3ce[_0x3e03('0x94')](_0x5f362b)){if(_[_0x3e03('0x98')](_0x50d3ce[_0x5f362b])){if(!_['isEmpty'](_0x50d3ce[_0x5f362b])){this['saveRestApiResult'](_0x50d3ce[_0x5f362b],util[_0x3e03('0x29')]('%s.%s',_0x5b4144,_0x5f362b));}}else if(_[_0x3e03('0x9c')](_0x50d3ce[_0x5f362b])){for(var _0x260ca6=0x0;_0x260ca6<_0x50d3ce[_0x5f362b][_0x3e03('0x9a')];_0x260ca6++){this[_0x3e03('0x9b')](_0x50d3ce[_0x5f362b][_0x260ca6],util[_0x3e03('0x29')](_0x3e03('0x9d'),_0x5b4144,_0x5f362b+'['+_0x260ca6+']'));}}else{if(!_[_0x3e03('0x4a')](_0x50d3ce[_0x5f362b])){this['channel'][_0x3e03('0x9e')](util['format']('%s.%s',_0x5b4144,_0x5f362b),_0x50d3ce[_0x5f362b]);}}}}};AGIVertices[_0x3e03('0x11')][_0x3e03('0x96')]=function(_0x1df022){try{var _0x1b27f5=JSON['parse'](_0x1df022);this['recursiveNodeIndex'](_0x1b27f5);return JSON[_0x3e03('0x73')](_0x1b27f5);}catch(_0xc9db26){return this['replaceAllVariables'](_0x1df022);}};AGIVertices['prototype'][_0x3e03('0x97')]=function(_0x2c9f86){var _0x121937=_0x2c9f86['split']('{');for(var _0x487acf=0x1;_0x487acf<_0x121937['length'];_0x487acf+=0x1){var _0x1a574f=_0x121937[_0x487acf][_0x3e03('0x9f')]('}');if(_0x1a574f['length']>0x1){_0x2c9f86=_0x2c9f86[_0x3e03('0xa0')]('{'+_0x1a574f[0x0]+'}',this['channel']['getVariable'](_0x1a574f[0x0])[_0x3e03('0xa1')]||_0x1a574f[0x0]);}}if(_0x121937[_0x3e03('0x9a')]===0x1){return _0x2c9f86[_0x3e03('0x4f')]();}return this[_0x3e03('0x97')](_0x2c9f86);};AGIVertices['prototype'][_0x3e03('0xa2')]=function(_0x25c4c0,_0x23c05e){var _0x4cbe4e=this['channel'][_0x3e03('0x12')](_0x25c4c0);if(_0x4cbe4e[_0x3e03('0xa3')]===-0x1){return _0x4cbe4e;}logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0xa4'),_0x23c05e,_0x4cbe4e[_0x3e03('0xa1')]));return this[_0x3e03('0xe')][_0x3e03('0x9e')](_0x23c05e,_0x4cbe4e['extra']);};AGIVertices['prototype'][_0x3e03('0x83')]=function(_0x547592){return _0x547592&&_0x547592!=='0'&&_0x547592!=='-1'&&_0x547592!=='';};AGIVertices['prototype'][_0x3e03('0xa5')]=function(_0x7ceea1){this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x7ceea1,'-');_0x7ceea1[_0x3e03('0xa6')]=_0x7ceea1[_0x3e03('0xa5')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x3e03('0x11')][_0x3e03('0xa7')]=function(_0x2dbf2b){logger['info'](util[_0x3e03('0x29')](_0x3e03('0xa8'),_0x2dbf2b[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x2dbf2b['text'])){return this[_0x3e03('0xe')]['noop']('no\x20text\x20configured');}var _0x316b67='\x22'+_0x2dbf2b[_0x3e03('0x5d')]+'\x22';if(this[_0x3e03('0x83')](_0x2dbf2b[_0x3e03('0x79')])){_0x316b67+=','+_0x2dbf2b[_0x3e03('0x79')];}var _0x253813=this[_0x3e03('0xe')][_0x3e03('0xa9')]('MRCPSynth',_0x316b67);if(_0x253813['result']===-0x1){return _0x253813;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0xab'),_0x316b67));};AGIVertices[_0x3e03('0x11')][_0x3e03('0xac')]=function(_0x45a296){logger[_0x3e03('0x2e')](util['format'](_0x3e03('0xad'),_0x45a296[_0x3e03('0x38')]));if(!this['isConfigured'](_0x45a296[_0x3e03('0xae')])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0xaf'));}var _0x53ae54=_0x45a296[_0x3e03('0xae')];if(this[_0x3e03('0x83')](_0x45a296[_0x3e03('0x79')])){_0x53ae54+=','+_0x45a296[_0x3e03('0x79')];}var _0x2cfb87=this[_0x3e03('0xe')]['exec'](_0x3e03('0xb0'),_0x53ae54);if(_0x2cfb87['result']===-0x1){return _0x2cfb87;}var _0x47b51c=this[_0x3e03('0xa2')](_0x3e03('0xb1'),_0x3e03('0xb2'));if(_0x47b51c[_0x3e03('0xa3')]===-0x1){return _0x47b51c;}var _0x398b1f=this[_0x3e03('0xa2')]('RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT');if(_0x398b1f['result']===-0x1){return _0x398b1f;}var _0x7dd20f=this[_0x3e03('0xa2')](_0x3e03('0xb3'),_0x3e03('0xb4'));if(_0x7dd20f[_0x3e03('0xa3')]===-0x1){return _0x7dd20f;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')]('Executed\x20command\x20MRCPRecog\x20%s',_0x53ae54));};AGIVertices[_0x3e03('0x11')][_0x3e03('0x7')]=function(_0x37565f){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0xb5'),_0x37565f[_0x3e03('0x38')]));return this['channel'][_0x3e03('0x7')]([_0x37565f[_0x3e03('0xb6')],_0x37565f[_0x3e03('0xb7')]]);};AGIVertices[_0x3e03('0x11')]['answer']=function(_0x398865){logger['info'](util['format']('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x398865['label']));if(this[_0x3e03('0x83')](_0x398865[_0x3e03('0x66')])){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0xb8'),_0x398865[_0x3e03('0x66')]));var _0x32bfca=this[_0x3e03('0xe')][_0x3e03('0xb9')](_0x398865[_0x3e03('0x66')]);if(_0x32bfca[_0x3e03('0xa3')]===-0x1){return _0x32bfca;}}return this[_0x3e03('0xe')][_0x3e03('0xba')]();};AGIVertices[_0x3e03('0x11')]['callback']=function(_0x3f4162){logger['info'](util[_0x3e03('0x29')](_0x3e03('0xbb'),_0x3f4162[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x3f4162['list_id'])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x3f4162,_0x3e03('0xbc'));}_0x3f4162['scheduledAt']=moment();if(this[_0x3e03('0x83')](_0x3f4162['delay'])){_0x3f4162['scheduledAt']=moment()[_0x3e03('0xbd')](_0x3f4162['delay'],_0x3e03('0xbe'));}if(!this[_0x3e03('0x83')](_0x3f4162[_0x3e03('0xbf')])){_0x3f4162[_0x3e03('0xbf')]=0x2;}this[_0x3e03('0x45')][_0x3e03('0x70')](this,_0x3f4162);return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0xc0'),_0x3f4162[_0x3e03('0xc1')],_0x3f4162[_0x3e03('0x4b')],_0x3f4162[_0x3e03('0x4c')]));};AGIVertices[_0x3e03('0x11')][_0x3e03('0xc2')]=function(_0x17e9a8){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x17e9a8[_0x3e03('0x38')]));var _0x14137a=this[_0x3e03('0xe')][_0x3e03('0xa9')](_0x17e9a8[_0x3e03('0xc3')],_0x17e9a8[_0x3e03('0x79')]);if(_0x14137a[_0x3e03('0xa3')]===-0x1){return _0x14137a;}return this['channel']['noop'](util[_0x3e03('0x29')]('Executed\x20command\x20%s\x20%s',_0x17e9a8[_0x3e03('0xc3')],_0x17e9a8[_0x3e03('0x79')]));};AGIVertices[_0x3e03('0x11')]['lumenvoxtts']=function(_0x225ae2){logger['info'](util[_0x3e03('0x29')](_0x3e03('0xc4'),_0x225ae2[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x225ae2['text'])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0xc5'));}var _0x4a65a9='\x22'+_0x225ae2[_0x3e03('0x5d')]+'\x22';if(this[_0x3e03('0x83')](_0x225ae2[_0x3e03('0x79')])){_0x4a65a9+=','+_0x225ae2[_0x3e03('0x79')];}var _0x5a67fa=this['channel'][_0x3e03('0xa9')]('MRCPSynth',_0x4a65a9);if(_0x5a67fa[_0x3e03('0xa3')]===-0x1){return _0x5a67fa;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')]('Executed\x20command\x20MRCPSynth\x20%s',_0x4a65a9));};AGIVertices[_0x3e03('0x11')][_0x3e03('0xc6')]=function(_0xdc1e8d){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0xc7'),_0xdc1e8d[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0xdc1e8d[_0x3e03('0x5d')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0xc5'));}var _0x5eb4ec='\x22'+_0xdc1e8d[_0x3e03('0x5d')]+'\x22';if(this[_0x3e03('0x83')](_0xdc1e8d[_0x3e03('0x79')])){_0x5eb4ec+=','+_0xdc1e8d[_0x3e03('0x79')];}var _0x4a14f7=this[_0x3e03('0xe')]['exec'](_0x3e03('0xc8'),_0x5eb4ec);if(_0x4a14f7[_0x3e03('0xa3')]===-0x1){return _0x4a14f7;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0xab'),_0x5eb4ec));};AGIVertices['prototype']['lumenvoxasr']=function(_0x42b20d){logger['info'](util['format']('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x42b20d[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x42b20d[_0x3e03('0xae')])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0xaf'));}var _0x23a9e7=_0x42b20d[_0x3e03('0xae')];if(this[_0x3e03('0x83')](_0x42b20d[_0x3e03('0x79')])){_0x23a9e7+=','+_0x42b20d['options'];}var _0x38a19c=this[_0x3e03('0xe')][_0x3e03('0xa9')](_0x3e03('0xb0'),_0x23a9e7);if(_0x38a19c['result']===-0x1){return _0x38a19c;}var _0x30764b=this['getAndSetVariable'](_0x3e03('0xb1'),_0x3e03('0xc9'));if(_0x30764b[_0x3e03('0xa3')]===-0x1){return _0x30764b;}var _0x566629=this['getAndSetVariable'](_0x3e03('0xca'),_0x3e03('0xcb'));if(_0x566629[_0x3e03('0xa3')]===-0x1){return _0x566629;}var _0xbae8be=this[_0x3e03('0xa2')](_0x3e03('0xb3'),'LUMENVOX_ASR_INSTANCE');if(_0xbae8be['result']===-0x1){return _0xbae8be;}return this[_0x3e03('0xe')]['noop'](util[_0x3e03('0x29')](_0x3e03('0xcc'),_0x23a9e7));};AGIVertices[_0x3e03('0x11')][_0x3e03('0xcd')]=function(_0x5e34d7){logger['info'](util[_0x3e03('0x29')](_0x3e03('0xce'),_0x5e34d7[_0x3e03('0x38')]));if(!this['isConfigured'](_0x5e34d7[_0x3e03('0xae')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0xaf'));}var _0x33c30e=_0x5e34d7['grammar'];if(this[_0x3e03('0x83')](_0x5e34d7[_0x3e03('0x79')])){_0x33c30e+=','+_0x5e34d7[_0x3e03('0x79')];}var _0x6b4083=this[_0x3e03('0xe')][_0x3e03('0xa9')]('MRCPRecog',_0x33c30e);if(_0x6b4083[_0x3e03('0xa3')]===-0x1){return _0x6b4083;}var _0x8126b3=this['getAndSetVariable'](_0x3e03('0xb1'),_0x3e03('0xcf'));if(_0x8126b3[_0x3e03('0xa3')]===-0x1){return _0x8126b3;}var _0x30a856=this[_0x3e03('0xa2')]('RECOG_INPUT()',_0x3e03('0xd0'));if(_0x30a856[_0x3e03('0xa3')]===-0x1){return _0x30a856;}var _0x1d23b2=this[_0x3e03('0xa2')](_0x3e03('0xb3'),'SESTEK_ASR_INSTANCE');if(_0x1d23b2[_0x3e03('0xa3')]===-0x1){return _0x1d23b2;}return this['channel'][_0x3e03('0xaa')](util['format'](_0x3e03('0xcc'),_0x33c30e));};AGIVertices[_0x3e03('0x11')][_0x3e03('0xd1')]=function(_0x19e099){logger['info'](util[_0x3e03('0x29')]('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x19e099[_0x3e03('0x38')]));if(!this['isConfigured'](_0x19e099[_0x3e03('0xd2')])){return this[_0x3e03('0xe')]['error'](_0x19e099,_0x3e03('0xd3'));}var _0x2c0658=this[_0x3e03('0xd4')][_0x3e03('0x70')](this,_0x19e099[_0x3e03('0xd2')]);if(!_0x2c0658){return this['channel'][_0x3e03('0x2d')](_0x19e099,_0x3e03('0xd5'));}if(!this['isConfigured'](_0x19e099[_0x3e03('0x30')])){return this['channel'][_0x3e03('0x2d')](_0x19e099,_0x3e03('0xd6'));}var _0x21fb62=_0x19e099[_0x3e03('0x30')][_0x3e03('0x5b')](/(\r\n|\n|\r)/gm,'\x20');this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0xd7'),_0x21fb62));var _0x283beb=this[_0x3e03('0x2b')][_0x3e03('0x70')](this,_0x2c0658,_0x21fb62);this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x19e099,_0x21fb62);if(!this[_0x3e03('0x83')](_0x19e099[_0x3e03('0xd8')])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0xd9'));}var _0x18a7b6=this[_0x3e03('0x12')]['sync'](this,_0x19e099[_0x3e03('0xd8')]);if(!_0x18a7b6){return this['channel'][_0x3e03('0x2d')](_0x19e099,_0x3e03('0xda'));}var _0x267e83=this;_0x283beb[_0x3e03('0xdb')](function(_0x190997,_0x58fee8){Object[_0x3e03('0xdc')](_0x190997)['forEach'](function(_0x336b57){_0x267e83['channel'][_0x3e03('0x9e')](util[_0x3e03('0x29')](_0x3e03('0xdd'),_0x18a7b6,_0x58fee8,_0x336b57),_0x190997[_0x336b57]);});});this[_0x3e03('0xe')][_0x3e03('0x9e')](util[_0x3e03('0x29')](_0x3e03('0xde'),_0x18a7b6),_0x283beb[_0x3e03('0x9a')]);return this[_0x3e03('0xe')][_0x3e03('0xaa')](util['format'](_0x3e03('0xdf'),_0x18a7b6));};AGIVertices[_0x3e03('0x11')][_0x3e03('0xe0')]=function(_0x5d786c){logger[_0x3e03('0xe1')](util[_0x3e03('0x29')](_0x3e03('0xe2'),_0x5d786c[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x5d786c[_0x3e03('0xe3')])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x5d786c,'no\x20user\x20selected');}var _0x4415aa=this[_0x3e03('0x1c')][_0x3e03('0x70')](this,_0x5d786c[_0x3e03('0xe3')]);if(!_0x4415aa){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x5d786c,_0x3e03('0xe4'));}var _0x577102=this[_0x3e03('0xe')][_0x3e03('0xa9')](_0x3e03('0xe5'),[util['format'](_0x3e03('0xe6'),_0x4415aa),_0x5d786c[_0x3e03('0x66')],_0x5d786c[_0x3e03('0xe7')],_0x5d786c[_0x3e03('0x64')]]);if(_0x577102[_0x3e03('0xa3')]===-0x1){return _0x577102;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util['format'](_0x3e03('0xe8'),'DIAL'));};AGIVertices[_0x3e03('0x11')][_0x3e03('0xe9')]=function(_0x3c78de){logger[_0x3e03('0x2e')](util['format'](_0x3e03('0xea'),_0x3c78de[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x3c78de[_0x3e03('0x7b')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0xeb'));}if(!this[_0x3e03('0x83')](_0x3c78de[_0x3e03('0x5d')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')]('no\x20text\x20configured');}this['channel'][_0x3e03('0xec')]=!![];this[_0x3e03('0x37')](_0x3c78de);this[_0x3e03('0x43')](_0x3c78de[_0x3e03('0x5d')],'in','','');this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0xed'),_0x3c78de[_0x3e03('0x5d')]));var _0x286b9d=this[_0x3e03('0x7a')][_0x3e03('0x70')](this,_0x3c78de);if(_0x286b9d){for(var _0x7d3291 in _0x286b9d){if(_0x286b9d['hasOwnProperty'](_0x7d3291)){this['channel'][_0x3e03('0x9e')](util['format'](_0x3e03('0xee'),_0x7d3291[_0x3e03('0x6b')]()),_0x286b9d[_0x7d3291]);}}this[_0x3e03('0x43')](_0x286b9d[_0x3e03('0xef')],_0x3e03('0xf0'),_0x3e03('0xe9'),'');return this['channel'][_0x3e03('0xaa')](util[_0x3e03('0x29')]('Dialogflow\x20Result\x20%s',_0x286b9d[_0x3e03('0xef')]));}return this[_0x3e03('0xe')]['error'](_0x3c78de,'Dialogflow\x20is\x20unreachable');};AGIVertices['prototype']['dialogflowV2']=function(_0x66e0e9){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x66e0e9[_0x3e03('0x38')]));if(!this['isConfigured'](_0x66e0e9['dialogflowV2_project_id'])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0xf1'));}if(!this[_0x3e03('0x83')](_0x66e0e9[_0x3e03('0x7e')])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0xf2'));}if(!this[_0x3e03('0x83')](_0x66e0e9[_0x3e03('0xf3')])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0xf4'));}if(!this['isConfigured'](_0x66e0e9[_0x3e03('0xf5')])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0xf6'));}if(!this[_0x3e03('0x83')](_0x66e0e9[_0x3e03('0x5d')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')]('no\x20text\x20configured');}this[_0x3e03('0xe')][_0x3e03('0xec')]=!![];this[_0x3e03('0x37')](_0x66e0e9);this[_0x3e03('0x43')](_0x66e0e9['text'],'in','','');this[_0x3e03('0xe')][_0x3e03('0xaa')](util['format'](_0x3e03('0xf7'),_0x66e0e9[_0x3e03('0x5d')]));var _0x4f78c1=this[_0x3e03('0x7c')][_0x3e03('0x70')](this,_0x66e0e9);if(_0x4f78c1){for(var _0x143127 in _0x4f78c1){if(_0x4f78c1[_0x3e03('0x94')](_0x143127)){if(_0x143127!==_0x3e03('0xf8')){this[_0x3e03('0xe')][_0x3e03('0x9e')](util[_0x3e03('0x29')]('DIALOGFLOW_%s',_0x143127[_0x3e03('0x6b')]()),_0x4f78c1[_0x143127]);}}}this[_0x3e03('0x43')](_0x4f78c1[_0x3e03('0xef')],_0x3e03('0xf0'),'dialogflowV2',_0x4f78c1[_0x3e03('0xf8')]);return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0xf9'),_0x4f78c1['speech']));}return this['channel'][_0x3e03('0x2d')](_0x66e0e9,_0x3e03('0xfa'));};AGIVertices[_0x3e03('0x11')][_0x3e03('0xfb')]=function(_0x2a7800){logger['info'](util[_0x3e03('0x29')](_0x3e03('0xfc'),_0x2a7800[_0x3e03('0x38')]));if(!this['isConfigured'](_0x2a7800[_0x3e03('0xfd')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0xfe'));}if(!this['isConfigured'](_0x2a7800[_0x3e03('0xff')])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0x100'));}if(!this[_0x3e03('0x83')](_0x2a7800[_0x3e03('0x101')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0x102'));}if(!this[_0x3e03('0x83')](_0x2a7800[_0x3e03('0x103')])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0xc5'));}this[_0x3e03('0xe')]['bot']=!![];this['createSquareDetailsReport'](_0x2a7800);this[_0x3e03('0x43')](_0x2a7800[_0x3e03('0x5d')],'in','','');this[_0x3e03('0xe')]['noop'](util['format'](_0x3e03('0x104'),_0x2a7800[_0x3e03('0x5d')]));var _0x531534=this[_0x3e03('0x7f')][_0x3e03('0x70')](this,_0x2a7800);if(_0x531534){for(var _0x34e9c in _0x531534){if(_0x531534[_0x3e03('0x94')](_0x34e9c)){this[_0x3e03('0xe')][_0x3e03('0x9e')](util[_0x3e03('0x29')](_0x3e03('0x105'),_0x34e9c[_0x3e03('0x6b')]()),_0x531534[_0x34e9c]);}}this[_0x3e03('0x43')](_0x531534[_0x3e03('0xef')],'out',_0x3e03('0xfb'),'');if(_0x531534['audiofile']){this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x106'),_0x531534['audiofile']));var _0x52888b=this[_0x3e03('0xe')][_0x3e03('0x107')](_0x531534['audiofile']);try{fs[_0x3e03('0x108')](_0x531534['audiofile']+_0x3e03('0x109'));}catch(_0x50cb87){logger[_0x3e03('0x2d')](_0x50cb87);}return _0x52888b;}else{return this['channel']['noop'](util[_0x3e03('0x29')](_0x3e03('0x10a'),_0x531534['speech']));}}return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x2a7800,_0x3e03('0x10b'));};AGIVertices[_0x3e03('0x11')][_0x3e03('0x10c')]=function(_0x4b5c4c){logger['info'](util[_0x3e03('0x29')]('Enter\x20in\x20END\x20(%s)\x20block',_0x4b5c4c['label']));return this[_0x3e03('0xe')][_0x3e03('0xaa')]('end');};AGIVertices[_0x3e03('0x11')]['ext_dial']=function(_0x1584eb){logger['info'](util['format']('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x1584eb[_0x3e03('0x38')]));var _0x216db9='';if(_0x1584eb[_0x3e03('0x10d')]){if(!this[_0x3e03('0x83')](_0x1584eb['trunk_id'])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x1584eb,_0x3e03('0x10e'));}else{var _0x599363=parseInt(_0x1584eb[_0x3e03('0x10d')],0xa);if(isNaN(_0x599363)){_0x216db9=_0x1584eb[_0x3e03('0x10d')];}else{_0x216db9=this[_0x3e03('0x1e')][_0x3e03('0x70')](this,_0x1584eb['trunk_id']);if(!_0x216db9){return this['channel']['error'](_0x1584eb,'no\x20trunk\x20found');}}}}else if(_0x1584eb[_0x3e03('0x10f')]){_0x216db9=_0x1584eb[_0x3e03('0x10f')];}else{return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x1584eb,'no\x20trunk\x20selected');}var _0x45b1c8=this['channel'][_0x3e03('0xa9')](_0x3e03('0xe5'),[util[_0x3e03('0x29')]('SIP/%s/%s',_0x216db9,_0x1584eb[_0x3e03('0xc1')]),_0x1584eb[_0x3e03('0x66')],_0x1584eb[_0x3e03('0xe7')],_0x1584eb[_0x3e03('0x64')]]);if(_0x45b1c8['result']===-0x1){return _0x45b1c8;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0xe8'),_0x3e03('0xe5')));};AGIVertices[_0x3e03('0x11')][_0x3e03('0x110')]=function(_0x41edec){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x111'),_0x41edec[_0x3e03('0x38')]));return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0x110'));};AGIVertices['prototype'][_0x3e03('0x112')]=function(_0x47ab32){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x47ab32[_0x3e03('0x38')]));if(_0x47ab32[_0x3e03('0xa6')]===0x0){return this[_0x3e03('0xa5')](_0x47ab32);}_0x47ab32['retry']-=0x1;if(!this[_0x3e03('0x83')](_0x47ab32[_0x3e03('0x113')])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x47ab32,'no\x20file\x20audio\x20selected');}var _0x210998=this[_0x3e03('0x20')][_0x3e03('0x70')](this,_0x47ab32[_0x3e03('0x113')]);if(!_0x210998){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x47ab32,'no\x20file\x20audio\x20found');}if(!this['isConfigured'](_0x47ab32[_0x3e03('0xd8')])){return this[_0x3e03('0xe')][_0x3e03('0x2d')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x4f3e93=this['channel'][_0x3e03('0x114')](_0x210998,_0x47ab32[_0x3e03('0x115')],_0x47ab32[_0x3e03('0x116')]);var _0x3ffdf9=_0x4f3e93[_0x3e03('0xa3')]?_0x4f3e93[_0x3e03('0xa3')][_0x3e03('0x4f')]():'';logger[_0x3e03('0x2e')](_0x3e03('0x117'),JSON[_0x3e03('0x73')](_0x4f3e93));if(_0x4f3e93[_0x3e03('0xa3')]===-0x1){this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x47ab32,_0x3ffdf9);return _0x4f3e93;}else if(_0x4f3e93['extra']==='timeout'){_0x4f3e93[_0x3e03('0xa3')]=_0x3ffdf9['length']>=parseInt(_0x47ab32['mindigit'])?'x':'i';}else{_0x4f3e93[_0x3e03('0xa3')]=_0x3ffdf9[_0x3e03('0x9a')]>=parseInt(_0x47ab32[_0x3e03('0x118')])&&_0x3ffdf9[_0x3e03('0x9a')]<=parseInt(_0x47ab32[_0x3e03('0x116')])?'x':'i';}var _0x4427d3=this[_0x3e03('0x12')][_0x3e03('0x70')](this,_0x47ab32[_0x3e03('0xd8')]);if(!_0x4427d3){return this[_0x3e03('0xe')]['error'](_0x47ab32,'no\x20variable\x20found');}this['channel'][_0x3e03('0x9e')](_0x4427d3,_0x3ffdf9);if(this['isConfigured'](_0x47ab32[_0x3e03('0x119')])){var _0x46de93=parseInt(_0x47ab32['hiddendigitsnum'],0xa);var _0x347bd1=rs[_0x3e03('0x11a')]({'charset':'*','length':_0x46de93});var _0x17d84e=_0x3ffdf9[_0x3e03('0x9a')];if(_0x17d84e>0x0){if(_0x17d84e>_0x46de93){this['createSquareDetailsReport']['sync'](this,_0x47ab32,_0x47ab32[_0x3e03('0x11b')]==='first'?_0x347bd1+_0x3ffdf9[_0x3e03('0x11c')](_0x46de93):_0x3ffdf9[_0x3e03('0x11c')](0x0,_0x17d84e-_0x46de93)+_0x347bd1);}else{this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x47ab32,rs['generate']({'charset':'*','length':_0x17d84e}));}}else{this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x47ab32,'');}}else{this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x47ab32,_0x3ffdf9);}return _0x4f3e93;};AGIVertices['prototype'][_0x3e03('0x11d')]=function(_0x1895bc){logger['info'](util['format']('Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block',_0x1895bc[_0x3e03('0x38')]));return this[_0x3e03('0x112')](_0x1895bc);};AGIVertices[_0x3e03('0x11')][_0x3e03('0x11e')]=function(_0x4c8bf8){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x11f'),_0x4c8bf8[_0x3e03('0x38')]));this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x4c8bf8,_0x4c8bf8['goalname']);return this[_0x3e03('0xe')][_0x3e03('0xaa')](util['format'](_0x3e03('0x120'),_0x4c8bf8[_0x3e03('0x121')]));};AGIVertices[_0x3e03('0x11')]['awspolly']=function(_0x1b2e8d){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x122'),_0x1b2e8d[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x1b2e8d[_0x3e03('0x86')])||!this[_0x3e03('0x83')](_0x1b2e8d[_0x3e03('0x8a')])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0x123'));}if(!this['isConfigured'](_0x1b2e8d[_0x3e03('0x5d')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')]('no\x20text\x20configured');}this['channel'][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x124'),_0x1b2e8d[_0x3e03('0x5d')]));var _0x299919=this['awsPolly'][_0x3e03('0x70')](this,_0x1b2e8d);if(_0x299919){this[_0x3e03('0xe')][_0x3e03('0xaa')](util['format'](_0x3e03('0x125'),_0x299919));var _0x2d20e2=this[_0x3e03('0xe')][_0x3e03('0x107')](_0x299919);try{fs[_0x3e03('0x108')](_0x299919+_0x3e03('0x109'));}catch(_0x19d006){logger[_0x3e03('0x2d')](_0x19d006);}return _0x2d20e2;}return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x1b2e8d,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x3e03('0x11')][_0x3e03('0x126')]=function(_0x472c6f){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x127'),_0x472c6f[_0x3e03('0x38')]));if(!this['isConfigured'](_0x472c6f[_0x3e03('0x86')])||!this[_0x3e03('0x83')](_0x472c6f['aws_secret_access_key'])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0x123'));}if(!this[_0x3e03('0x83')](_0x472c6f['aws_bot_name'])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0x128'));}if(!this['isConfigured'](_0x472c6f[_0x3e03('0x5d')])){return this['channel']['noop']('no\x20text\x20configured');}this['channel'][_0x3e03('0xec')]=!![];this[_0x3e03('0x37')](_0x472c6f);this[_0x3e03('0x43')](_0x472c6f[_0x3e03('0x5d')],'in','','');this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x129'),_0x472c6f[_0x3e03('0x5d')]));var _0x384a20=this[_0x3e03('0x89')]['sync'](this,_0x472c6f);if(_0x384a20){for(var _0x51ffb0 in _0x384a20){if(_0x384a20[_0x3e03('0x94')](_0x51ffb0)&&_[_0x3e03('0x95')](_0x384a20[_0x51ffb0])){this[_0x3e03('0xe')][_0x3e03('0x9e')](util['format']('AWS_LEX_%s',_0x51ffb0[_0x3e03('0x6b')]()),_0x384a20[_0x51ffb0]);}}if(_[_0x3e03('0x4a')](_0x384a20[_0x3e03('0x77')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')]('Amazon\x20Lex\x20ready\x20for\x20fulfillment');}else{this[_0x3e03('0x43')](_0x384a20[_0x3e03('0x77')],_0x3e03('0xf0'),_0x3e03('0x12a'),'');return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x12b'),_0x384a20[_0x3e03('0x77')]));}}return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x472c6f,_0x3e03('0x12c'));};AGIVertices['prototype'][_0x3e03('0x12d')]=function(_0x141254){logger['info'](util[_0x3e03('0x29')](_0x3e03('0x12e'),_0x141254[_0x3e03('0x38')],_0x141254[_0x3e03('0x66')]));if(!this[_0x3e03('0x83')](_0x141254[_0x3e03('0x7b')])){return this['channel'][_0x3e03('0xaa')]('no\x20key\x20configured');}var _0x420e53=_0x3e03('0x12f');var _0x1443cd=util['format']('%s/recordings/%s',FILES_PATH,rs[_0x3e03('0x11a')](0x4));var _0x5aa30e=util[_0x3e03('0x29')]('%s.%s',_0x1443cd,_0x420e53);var _0x3c0ae=!![];if(_0x141254[_0x3e03('0x130')]===_0x3e03('0x131')){_0x3c0ae=![];}var _0x5a77d3=this[_0x3e03('0xe')][_0x3e03('0x132')](_0x1443cd,_0x420e53,_0x141254[_0x3e03('0x133')],_0x141254[_0x3e03('0x66')],undefined,_0x3c0ae);if(_0x5a77d3[_0x3e03('0xa3')]!==-0x1){this['channel'][_0x3e03('0xaa')](util[_0x3e03('0x29')]('google\x20%s\x20file\x20created',_0x5aa30e));var _0x26a9c0=this[_0x3e03('0x8d')][_0x3e03('0x70')](this,_0x141254,_0x5aa30e);if(_0x26a9c0){for(var _0x22ec6b in _0x26a9c0){if(_0x26a9c0[_0x3e03('0x94')](_0x22ec6b)){this[_0x3e03('0xe')][_0x3e03('0x9e')](util[_0x3e03('0x29')](_0x3e03('0x134'),_0x22ec6b[_0x3e03('0x6b')]()),_0x26a9c0[_0x22ec6b]);}}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')]('GoogleASR\x20Result\x20%s',JSON['stringify'](_0x26a9c0)));}}return _0x5a77d3;};AGIVertices['prototype'][_0x3e03('0x135')]=function(_0x4aca82){logger['info'](util[_0x3e03('0x29')]('Enter\x20in\x20TILDEASR\x20(%s)\x20block',_0x4aca82[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x4aca82['appid'])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0x136'));}if(!this[_0x3e03('0x83')](_0x4aca82[_0x3e03('0x90')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0x137'));}var _0x201a36=_0x3e03('0x12f');var _0x322adf=util['format']('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x4857ca=util[_0x3e03('0x29')](_0x3e03('0x9d'),_0x322adf,_0x201a36);var _0x22c3fe=!![];if(_0x4aca82['beep']===_0x3e03('0x131')){_0x22c3fe=![];}var _0x5e4f04=this[_0x3e03('0xe')][_0x3e03('0x132')](_0x322adf,_0x201a36,_0x4aca82['intKey'],_0x4aca82[_0x3e03('0x66')],undefined,_0x22c3fe);if(_0x5e4f04[_0x3e03('0xa3')]!==-0x1){this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x138'),_0x4857ca));var _0x34667f=this[_0x3e03('0x8e')]['sync'](this,_0x4aca82,_0x4857ca);if(_0x34667f){for(var _0x194a2e in _0x34667f){if(_0x34667f[_0x3e03('0x94')](_0x194a2e)){this['channel'][_0x3e03('0x9e')](util[_0x3e03('0x29')](_0x3e03('0x139'),_0x194a2e[_0x3e03('0x6b')]()),_0x34667f[_0x194a2e]);}}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x13a'),JSON[_0x3e03('0x73')](_0x34667f)));}}return _0x5e4f04;};AGIVertices[_0x3e03('0x11')]['gotoc']=function(_0x5c879b){logger['info'](util['format'](_0x3e03('0x13b'),_0x5c879b[_0x3e03('0x38')]));return this[_0x3e03('0xe')][_0x3e03('0x13c')](_0x5c879b['context'],_0x5c879b['extension'],_0x5c879b[_0x3e03('0x3f')]);};AGIVertices['prototype'][_0x3e03('0x13d')]=function(_0x3c8e7d){logger['info'](util[_0x3e03('0x29')](_0x3e03('0x13e'),_0x3c8e7d['label']));if(!this['isConfigured'](_0x3c8e7d[_0x3e03('0x13f')])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x3c8e7d,_0x3e03('0x140'));}try{var _0x4e02eb=eval(_0x3c8e7d[_0x3e03('0x13f')])?'true':_0x3e03('0x141');this['channel']['noop'](util[_0x3e03('0x29')](_0x3e03('0x142'),_0x3c8e7d[_0x3e03('0x13f')],_0x4e02eb));return{'code':0xc8,'result':_0x4e02eb};}catch(_0x303c72){return{'code':0xc8,'result':'false'};}};AGIVertices[_0x3e03('0x11')][_0x3e03('0x143')]=function(_0xd88c20){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x144'),_0xd88c20[_0x3e03('0x38')]));if(!this['isConfigured'](_0xd88c20['interval_id'])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0xd88c20,'no\x20interval\x20configured');}var _0x441fd6=this[_0x3e03('0x26')][_0x3e03('0x70')](this,_0xd88c20[_0x3e03('0x145')]);if(!_0x441fd6){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0xd88c20,_0x3e03('0x146'));}for(var _0x61a3e3=0x0;_0x61a3e3<_0x441fd6[_0x3e03('0x9a')];_0x61a3e3+=0x1){var _0x56b9e6=this['channel']['getVariable'](util[_0x3e03('0x29')]('IFTIME(%s?true:false)',_0x441fd6[_0x61a3e3]));if(_0x56b9e6[_0x3e03('0xa3')]===-0x1){return _0x56b9e6;}logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x147'),_0x441fd6[_0x61a3e3],_0x56b9e6[_0x3e03('0xa1')]));if(_0x56b9e6[_0x3e03('0xa1')]===_0x3e03('0x148')){logger['info'](util['format'](_0x3e03('0x147'),_0x441fd6[_0x61a3e3],_0x3e03('0x148')));this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x147'),_0x441fd6[_0x61a3e3],_0x3e03('0x148')));return{'code':0xc8,'result':_0x3e03('0x148')};}else{logger['info'](util[_0x3e03('0x29')]('IFTIME\x20%s\x20%s',_0x441fd6[_0x61a3e3],_0x3e03('0x141')));this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')]('IFTIME\x20%s\x20%s',_0x441fd6[_0x61a3e3],'false'));}}return{'code':0xc8,'result':_0x3e03('0x141')};};AGIVertices[_0x3e03('0x11')][_0x3e03('0x149')]=function(_0x383287){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x14a'),_0x383287[_0x3e03('0x38')]));return this[_0x3e03('0xe')]['hangup']();};AGIVertices[_0x3e03('0x11')]['ispeechasr']=function(_0x59314d){logger['info'](util['format'](_0x3e03('0x14b'),_0x59314d[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x59314d['key'])){return this['channel'][_0x3e03('0xaa')]('no\x20key\x20configured');}var _0x58d0b5=_0x3e03('0x12f');var _0x1f9876=util['format'](_0x3e03('0x14c'),FILES_PATH,rs['generate'](0x4));var _0x9cb7f8=util[_0x3e03('0x29')](_0x3e03('0x9d'),_0x1f9876,_0x58d0b5);var _0x1b5aa8=!![];if(_0x59314d[_0x3e03('0x130')]===_0x3e03('0x131')){_0x1b5aa8=![];}var _0x139603=this[_0x3e03('0xe')]['recordFile'](_0x1f9876,_0x58d0b5,_0x59314d[_0x3e03('0x133')],_0x59314d[_0x3e03('0x66')],undefined,_0x1b5aa8);if(_0x139603[_0x3e03('0xa3')]!==-0x1){this['channel']['noop'](util['format'](_0x3e03('0x14d'),_0x9cb7f8));var _0x58aa11=this[_0x3e03('0x81')][_0x3e03('0x70')](this,_0x59314d,_0x9cb7f8);if(_0x58aa11){for(var _0x5b2c2e in _0x58aa11){if(_0x58aa11['hasOwnProperty'](_0x5b2c2e)){this[_0x3e03('0xe')][_0x3e03('0x9e')](util['format']('ISPEECH_ASR_%s',_0x5b2c2e[_0x3e03('0x6b')]()),_0x58aa11[_0x5b2c2e]);}}return this[_0x3e03('0xe')]['noop'](util['format'](_0x3e03('0x14e'),JSON[_0x3e03('0x73')](_0x58aa11)));}}return _0x139603;};AGIVertices[_0x3e03('0x11')]['ispeechtts']=function(_0x3313be){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x14f'),_0x3313be[_0x3e03('0x38')]));if(!this['isConfigured'](_0x3313be[_0x3e03('0x7b')])){return this[_0x3e03('0xe')]['noop']('no\x20key\x20configured');}if(!this[_0x3e03('0x83')](_0x3313be[_0x3e03('0x5d')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0xc5'));}this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x150'),_0x3313be['text']));var _0x166ced=this[_0x3e03('0x80')][_0x3e03('0x70')](this,_0x3313be);if(_0x166ced){this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x14d'),_0x166ced));var _0x285598=this['channel'][_0x3e03('0x107')](_0x166ced,_0x3313be['intKey']);try{fs[_0x3e03('0x108')](_0x166ced+_0x3e03('0x109'));}catch(_0x4a47ac){logger['error'](_0x4a47ac);}return _0x285598;}return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x3313be,_0x3e03('0x151'));};AGIVertices[_0x3e03('0x11')][_0x3e03('0x152')]=function(_0x51e1ae){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('Enter\x20in\x20LOGIN\x20(%s)\x20block',_0x51e1ae['label']));if(!this[_0x3e03('0x83')](_0x51e1ae[_0x3e03('0x153')])){return this[_0x3e03('0xe')]['error'](_0x51e1ae,'no\x20find\x20by\x20configured');}logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x154'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x51e1ae['findBy']));var _0x3b77b1=this['agentLogin'][_0x3e03('0x70')](this,_0x51e1ae[_0x3e03('0x153')]);if(_0x3b77b1){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x155'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x51e1ae[_0x3e03('0x153')]));this[_0x3e03('0xe')][_0x3e03('0xaa')](util['format'](_0x3e03('0x155'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x51e1ae['findBy']));return{'code':0xc8,'result':_0x3e03('0x156')};}else{logger['info'](util[_0x3e03('0x29')](_0x3e03('0x157'),this['channel']['callerid'],_0x51e1ae[_0x3e03('0x153')]));this['channel'][_0x3e03('0xaa')](util[_0x3e03('0x29')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x51e1ae[_0x3e03('0x153')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x3e03('0x11')][_0x3e03('0x158')]=function(_0x3ec1dd){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x3ec1dd[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x3ec1dd['findBy'])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x3ec1dd,_0x3e03('0x159'));}logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x154'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x3ec1dd[_0x3e03('0x153')]));var _0x1b8938=this['agentLogout'][_0x3e03('0x70')](this,_0x3ec1dd['findBy']);if(_0x1b8938){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x155'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x3ec1dd[_0x3e03('0x153')]));this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x155'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x3ec1dd[_0x3e03('0x153')]));return{'code':0xc8,'result':_0x3e03('0x156')};}else{logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x157'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x3ec1dd[_0x3e03('0x153')]));this[_0x3e03('0xe')]['noop'](util[_0x3e03('0x29')](_0x3e03('0x157'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x3ec1dd[_0x3e03('0x153')]));return{'code':0xc8,'result':_0x3e03('0x15a')};}};AGIVertices[_0x3e03('0x11')][_0x3e03('0x15b')]=function(_0x4e7f24){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x15c'),_0x4e7f24[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x4e7f24[_0x3e03('0x15d')])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x4e7f24,'no\x20operation\x20configured');}this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x15e'),_0x4e7f24['operation']));var _0x5cb6ab=eval(_0x4e7f24[_0x3e03('0x15d')]);if(!this[_0x3e03('0x83')](_0x4e7f24[_0x3e03('0xd8')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0xd9'));}var _0x50141a=this[_0x3e03('0x12')][_0x3e03('0x70')](this,_0x4e7f24[_0x3e03('0xd8')]);if(!_0x50141a){return this[_0x3e03('0xe')]['error'](_0x4e7f24,_0x3e03('0xda'));}if(_['isArray'](_0x5cb6ab)){var _0x4506eb=this;_0x5cb6ab[_0x3e03('0xdb')](function(_0x4cb6dc,_0x18dfeb){_0x4506eb[_0x3e03('0xe')][_0x3e03('0x9e')](util[_0x3e03('0x29')](_0x3e03('0x15f'),_0x50141a,_0x18dfeb),_0x4cb6dc);});return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x160'),_0x50141a));}else{return this[_0x3e03('0xe')][_0x3e03('0x9e')](_0x50141a,_0x5cb6ab);}};AGIVertices['prototype'][_0x3e03('0xd')]=function(_0x2e3596){logger['info'](util[_0x3e03('0x29')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x2e3596[_0x3e03('0x38')]));if(_0x2e3596['retry']===0x0){return this[_0x3e03('0xa5')](_0x2e3596);}_0x2e3596[_0x3e03('0xa6')]-=0x1;if(!this['isConfigured'](_0x2e3596[_0x3e03('0x113')])){return this['channel']['error'](_0x2e3596,'no\x20file\x20audio\x20selected');}var _0x3470f9=this[_0x3e03('0x20')][_0x3e03('0x70')](this,_0x2e3596[_0x3e03('0x113')]);if(!_0x3470f9){return this['channel'][_0x3e03('0x2d')](_0x2e3596,_0x3e03('0x161'));}var _0x31e9e7=this[_0x3e03('0xe')]['getData'](_0x3470f9,_0x2e3596[_0x3e03('0x115')],_0x2e3596['digit']);var _0x16a8ec=_0x31e9e7[_0x3e03('0xa3')];if(_0x31e9e7[_0x3e03('0xa3')]===-0x1){this['createSquareDetailsReport']['sync'](this,_0x2e3596,'-1');return _0x31e9e7;}else if(_0x31e9e7[_0x3e03('0xa1')]===_0x3e03('0x66')){_0x31e9e7['result']=_0x31e9e7['result']['length']>0x0?_0x31e9e7[_0x3e03('0xa3')]:'t';}else if(_['isEmpty'](_0x31e9e7[_0x3e03('0xa3')])){_0x31e9e7[_0x3e03('0xa3')]='#';_0x16a8ec='#';}if(!this[_0x3e03('0x83')](_0x2e3596[_0x3e03('0xd8')])){this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0xd9'));}else{var _0x56cf5a=this[_0x3e03('0x12')]['sync'](this,_0x2e3596[_0x3e03('0xd8')]);if(!_0x56cf5a){return this[_0x3e03('0xe')]['error'](_0x2e3596,_0x3e03('0xda'));}this['channel'][_0x3e03('0x9e')](_0x56cf5a,_0x16a8ec);}this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x2e3596,_0x16a8ec);return _0x31e9e7;};AGIVertices['prototype']['noop']=function(_0x239e80){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x162'),_0x239e80[_0x3e03('0x38')]));return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x239e80[_0x3e03('0x163')]||_0x239e80[_0x3e03('0x38')]);};AGIVertices[_0x3e03('0x11')]['pause']=function(_0x11ea70){logger['info'](util['format'](_0x3e03('0x164'),_0x11ea70['label']));if(!this['isConfigured'](_0x11ea70[_0x3e03('0x153')])){return this[_0x3e03('0xe')]['error'](_0x11ea70,_0x3e03('0x159'));}logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x11ea70[_0x3e03('0x153')]));var _0x2bb4ba=this[_0x3e03('0x50')][_0x3e03('0x70')](this,_0x11ea70[_0x3e03('0x165')]);var _0x1ce7d5=this[_0x3e03('0x51')][_0x3e03('0x70')](this,_0x11ea70['findBy'],_0x2bb4ba);if(_0x1ce7d5){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x11ea70[_0x3e03('0x153')]));this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x155'),this['channel'][_0x3e03('0x3b')],_0x11ea70[_0x3e03('0x153')]));return{'code':0xc8,'result':_0x3e03('0x156')};}else{logger['info'](util[_0x3e03('0x29')](_0x3e03('0x157'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x11ea70[_0x3e03('0x153')]));this['channel'][_0x3e03('0xaa')](util['format'](_0x3e03('0x155'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x11ea70[_0x3e03('0x153')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x3e03('0x11')][_0x3e03('0x166')]=function(_0x14023c){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x167'),_0x14023c[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x14023c[_0x3e03('0x113')])){return this[_0x3e03('0xe')]['error'](_0x14023c,_0x3e03('0x168'));}var _0x13aa4b=this[_0x3e03('0x20')]['sync'](this,_0x14023c[_0x3e03('0x113')]);if(!_0x13aa4b){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x14023c,_0x3e03('0x161'));}var _0x5c5c38=this[_0x3e03('0xe')]['exec']('PLAYBACK',[_0x13aa4b,_0x14023c[_0x3e03('0xe7')]]);if(_0x5c5c38[_0x3e03('0xa3')]===-0x1){return _0x5c5c38;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x169'),_0x3e03('0x16a'),_0x13aa4b));};AGIVertices[_0x3e03('0x11')][_0x3e03('0x16b')]=function(_0xf5961){logger['info'](util['format'](_0x3e03('0x16c'),_0xf5961[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0xf5961[_0x3e03('0x16d')])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0xf5961,_0x3e03('0x16e'));}var _0x1b7618='';var _0x1670ad=parseInt(_0xf5961[_0x3e03('0x16d')],0xa);if(isNaN(_0x1670ad)){_0x1b7618=_0xf5961[_0x3e03('0x16d')];}else{_0x1b7618=this[_0x3e03('0x16')]['sync'](this,_0xf5961['queue_id']);if(!_0x1b7618){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0xf5961,'no\x20queue\x20found');}}var _0x3256ca='';if(this[_0x3e03('0x83')](_0xf5961[_0x3e03('0x113')])){var _0x2bec98=this[_0x3e03('0x20')][_0x3e03('0x70')](this,_0xf5961[_0x3e03('0x113')]);if(_0x2bec98){_0x3256ca=_0x2bec98;}}this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0xf5961,_0x1b7618);if(_0xf5961[_0x3e03('0xe7')]['indexOf']('x')<0x0){_0xf5961['opts']+='x';}if(_0xf5961[_0x3e03('0xe7')][_0x3e03('0x16f')]('X')<0x0){_0xf5961['opts']+='X';}this['channel'][_0x3e03('0x9e')](_0x3e03('0x170'),_0x1b7618?_0x1b7618[_0x3e03('0x171')]():'');var _0x40d137=this[_0x3e03('0xe')][_0x3e03('0xa9')](_0x3e03('0x172'),[_0x1b7618,_0xf5961[_0x3e03('0xe7')],_0xf5961[_0x3e03('0x64')],_0x3256ca,_0xf5961[_0x3e03('0x66')],_0xf5961[_0x3e03('0x7')],_0xf5961[_0x3e03('0x173')],_0xf5961['gosub'],'',_0xf5961[_0x3e03('0x174')]]);if(_0x40d137[_0x3e03('0xa3')]===-0x1){return _0x40d137;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x169'),_0x3e03('0x172'),_0x1b7618));};AGIVertices[_0x3e03('0x11')][_0x3e03('0x175')]=function(_0x356582){logger['info'](util[_0x3e03('0x29')]('Enter\x20in\x20RECORD\x20(%s)\x20block',_0x356582[_0x3e03('0x38')]));var _0x2b1a03=_0x356582['recordingFormat']||'wav';var _0x5dbfe3=util['format'](_0x3e03('0x176'),this[_0x3e03('0xe')]['uniqueid'],rs[_0x3e03('0x11a')](0x5));var _0xef04cb=util[_0x3e03('0x29')](_0x3e03('0x177'),FILES_PATH,_0x5dbfe3,_0x2b1a03);var _0x1e1e35=util[_0x3e03('0x29')]('%s/recordings/%s',FILES_PATH,_0x5dbfe3);this[_0x3e03('0x3c')][_0x3e03('0x70')](this,_0x356582,_0x5dbfe3,_0xef04cb);this['channel'][_0x3e03('0x9e')](_0x3e03('0x178'),_0x5dbfe3);logger[_0x3e03('0x2e')](_0x3e03('0x179'),_0x1e1e35,_0x2b1a03,_0x356582[_0x3e03('0x17a')],_0x356582['timeout']);return this[_0x3e03('0xe')][_0x3e03('0x132')](_0x1e1e35,_0x2b1a03,_0x356582[_0x3e03('0x17a')],_0x356582[_0x3e03('0x66')],undefined,!![]);};AGIVertices[_0x3e03('0x11')]['restapi']=function(_0x43e870){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x17b'),_0x43e870[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x43e870['url'])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0x17c'));}var _0x300523=this[_0x3e03('0x63')][_0x3e03('0x70')](this,_0x43e870);logger['info'](util[_0x3e03('0x29')]('Response:',util['inspect'](_0x300523,{'showHidden':![],'depth':null})));if(!this[_0x3e03('0x83')](_0x43e870[_0x3e03('0xd8')])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0x17d'));}var _0x1919bd=this['getVariable'][_0x3e03('0x70')](this,_0x43e870[_0x3e03('0xd8')]);if(!_0x1919bd){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x43e870,_0x3e03('0xda'));}this[_0x3e03('0xe')][_0x3e03('0x9e')](util[_0x3e03('0x29')](_0x3e03('0x17e'),_0x1919bd),_0x300523[_0x3e03('0x75')]?_0x300523[_0x3e03('0x75')]:_0x3e03('0x17f'));this[_0x3e03('0xe')]['setVariable'](util['format'](_0x3e03('0x180'),_0x1919bd),_0x300523[_0x3e03('0x76')]?_0x300523[_0x3e03('0x76')]:'OK');if(_0x300523[_0x3e03('0x72')]){try{this[_0x3e03('0x9b')](_0x300523['body'],_0x1919bd);}catch(_0x3658fc){logger[_0x3e03('0x2d')](util[_0x3e03('0x29')]('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x1919bd));}}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')]('variable\x20%s\x20set',_0x1919bd));};AGIVertices[_0x3e03('0x11')]['saydigits']=function(_0x2e61c9){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x181'),_0x2e61c9[_0x3e03('0x38')]));return this[_0x3e03('0xe')]['sayDigits'](_0x2e61c9['digits'][_0x3e03('0x5b')](/\s+/g,''),_0x2e61c9[_0x3e03('0x17a')]);};AGIVertices[_0x3e03('0x11')][_0x3e03('0x182')]=function(_0xbb4164){logger['info'](util[_0x3e03('0x29')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0xbb4164[_0x3e03('0x38')]));return this[_0x3e03('0xe')][_0x3e03('0x183')](_0xbb4164[_0x3e03('0x67')]['replace'](/\s+/g,''),_0xbb4164[_0x3e03('0x17a')]);};AGIVertices[_0x3e03('0x11')][_0x3e03('0x184')]=function(_0x4765df){logger['info'](util[_0x3e03('0x29')]('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x4765df[_0x3e03('0x38')]));return this[_0x3e03('0xe')]['sayPhonetic'](_0x4765df[_0x3e03('0x5d')],_0x4765df[_0x3e03('0x17a')]);};AGIVertices[_0x3e03('0x11')][_0x3e03('0x185')]=function(_0x59eae3){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x59eae3['label']));if(!this[_0x3e03('0x83')](_0x59eae3['account_id'])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0x186'));}var _0x3a4006=this[_0x3e03('0x23')]['sync'](this,_0x59eae3[_0x3e03('0x187')]);if(!_0x3a4006||!_0x3a4006[_0x3e03('0x188')]){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x59eae3,_0x3e03('0x189'));}var _0x4d4bc2={'from':util[_0x3e03('0x29')](_0x3e03('0x18a'),_0x3a4006['name'],_0x3a4006[_0x3e03('0x18b')]||_0x3a4006[_0x3e03('0x188')]['user']),'to':_0x59eae3['to']||'','cc':_0x59eae3['cc']||'','bcc':_0x59eae3[_0x3e03('0x18c')]||'','subject':_0x59eae3['subject'],'html':_0x59eae3[_0x3e03('0x5d')],'text':_0x59eae3[_0x3e03('0x5d')]};var _0x20057a={'tls':{'rejectUnauthorized':![]}};if(_0x3a4006[_0x3e03('0x188')][_0x3e03('0x18d')]){_0x20057a[_0x3e03('0x18d')]=_0x3a4006['Smtp'][_0x3e03('0x18d')];}else{_0x20057a[_0x3e03('0x18e')]=_0x3a4006[_0x3e03('0x188')][_0x3e03('0x18e')];_0x20057a[_0x3e03('0x18f')]=_0x3a4006[_0x3e03('0x188')][_0x3e03('0x18f')];_0x20057a[_0x3e03('0x190')]=_0x3a4006[_0x3e03('0x188')][_0x3e03('0x190')];}if(_0x3a4006[_0x3e03('0x188')][_0x3e03('0x191')]){_0x20057a[_0x3e03('0x192')]={'user':_0x3a4006['Smtp']['user'],'pass':_0x3a4006[_0x3e03('0x188')][_0x3e03('0x193')]};}if(this['isConfigured'](_0x59eae3['template_id'])){}logger[_0x3e03('0xe1')](_0x3e03('0x194'),JSON[_0x3e03('0x73')](_0x4d4bc2));this[_0x3e03('0x37')]['sync'](this,_0x59eae3,_0x59eae3[_0x3e03('0x187')]);this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x195'),_0x3a4006[_0x3e03('0x14')]));this[_0x3e03('0x25')][_0x3e03('0x70')](this,_0x20057a,_0x4d4bc2);return this['channel'][_0x3e03('0xaa')]('Mail\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0x3e03('0x11')][_0x3e03('0x196')]=function(_0x1eaeda){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x197'),_0x1eaeda['label']));return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0x198'));};AGIVertices[_0x3e03('0x11')][_0x3e03('0x199')]=function(_0x53949d){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x19a'),_0x53949d[_0x3e03('0x38')]));if(!this['isConfigured'](_0x53949d['sms_account_id'])){return this[_0x3e03('0xe')][_0x3e03('0xaa')]('no\x20sms\x20account\x20configured');}var _0x469ada=this[_0x3e03('0x34')][_0x3e03('0x70')](this,_0x53949d['sms_account_id']);if(!_0x469ada){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x53949d,_0x3e03('0x19b'));}var _0x52ce38={'body':_0x53949d['sms_text'],'phone':_0x53949d['to']||'','SmsAccountId':_0x469ada['id']};logger[_0x3e03('0xe1')](_0x3e03('0x19c'),JSON[_0x3e03('0x73')](_0x52ce38));this[_0x3e03('0x37')]['sync'](this,_0x53949d,_0x53949d[_0x3e03('0x19d')]);this[_0x3e03('0xe')]['noop'](util[_0x3e03('0x29')](_0x3e03('0x19e'),_0x469ada[_0x3e03('0x14')]));this[_0x3e03('0x36')][_0x3e03('0x70')](this,_0x52ce38);return this[_0x3e03('0xe')][_0x3e03('0xaa')]('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0x3e03('0x11')]['set']=function(_0x1c6f72){logger[_0x3e03('0x2e')](util['format']('Enter\x20in\x20SET\x20(%s)\x20block',_0x1c6f72[_0x3e03('0x38')]));if(!this['isConfigured'](_0x1c6f72[_0x3e03('0xd8')])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x1c6f72,_0x3e03('0x19f'));}var _0x15717b=this[_0x3e03('0x12')][_0x3e03('0x70')](this,_0x1c6f72[_0x3e03('0xd8')]);if(!_0x15717b){return this['channel'][_0x3e03('0x2d')](_0x1c6f72,'no\x20variable\x20found');}return this[_0x3e03('0xe')][_0x3e03('0x9e')](_0x15717b,_0x1c6f72['variable_value']);};AGIVertices[_0x3e03('0x11')][_0x3e03('0x1a0')]=function(_0x5598ec){logger[_0x3e03('0x2e')](util['format']('Enter\x20in\x20START\x20(%s)\x20block',_0x5598ec['label']));this[_0x3e03('0xe')]['noop'](_0x3e03('0x1a1'));if(_0x5598ec[_0x3e03('0xba')]===_0x3e03('0x1a2')){this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0x1a3'));return this[_0x3e03('0xe')][_0x3e03('0xba')]();}return this['channel']['noop'](_0x3e03('0x1a4'));};AGIVertices['prototype'][_0x3e03('0x1a5')]=function(_0x23c1b0){logger['info'](util[_0x3e03('0x29')](_0x3e03('0x1a6'),_0x23c1b0[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x23c1b0[_0x3e03('0x1a7')])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x23c1b0,_0x3e03('0x1a8'));}var _0x9379bf=this['getSquareProject'][_0x3e03('0x70')](this,_0x23c1b0[_0x3e03('0x1a7')]);if(!this[_0x3e03('0x83')](_0x9379bf)){return this['channel'][_0x3e03('0x2d')](_0x23c1b0,util['format'](_0x3e03('0x1a9'),_0x23c1b0[_0x3e03('0x1a7')]));}if(_0x9379bf===this[_0x3e03('0xe')][_0x3e03('0x3a')]){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x23c1b0,_0x3e03('0x1aa'));}this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x23c1b0,_0x9379bf);var _0x5ae182=this['channel'][_0x3e03('0xa9')](_0x3e03('0x1ab'),util[_0x3e03('0x29')](_0x3e03('0x1ac'),config['agi'][_0x3e03('0x18e')]||'127.0.0.1',_0x9379bf,this[_0x3e03('0xe')][_0x3e03('0x3a')]));if(_0x5ae182['result']===-0x1){return _0x5ae182;}return this[_0x3e03('0xe')]['noop'](util[_0x3e03('0x29')](_0x3e03('0x169'),_0x3e03('0x1ab'),_0x9379bf));};AGIVertices[_0x3e03('0x11')]['system']=function(_0x1768ce){logger[_0x3e03('0x2e')](util['format']('Enter\x20in\x20SYSTEM\x20(%s)\x20block',_0x1768ce['label']));var _0x366c36=this['shellCommand'][_0x3e03('0x70')](this,_0x1768ce['command']);this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x1768ce,_0x1768ce[_0x3e03('0xb6')]);if(this[_0x3e03('0x83')](_0x1768ce[_0x3e03('0xd8')])){var _0x532849=this[_0x3e03('0x12')][_0x3e03('0x70')](this,_0x1768ce[_0x3e03('0xd8')]);if(_0x532849){this[_0x3e03('0xe')][_0x3e03('0x9e')](_0x532849,_0x366c36);return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x1768ce[_0x3e03('0xb6')],_0x532849));}}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')]('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x1768ce[_0x3e03('0xb6')]));};AGIVertices['prototype'][_0x3e03('0x1ad')]=function(_0x350c45){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x1ae'),_0x350c45['label']));_0x350c45[_0x3e03('0x5d')]=_0x350c45[_0x3e03('0x5d')][_0x3e03('0x5b')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x3e03('0x83')](_0x350c45[_0x3e03('0x1af')])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0x1b0'));}if(!this['isConfigured'](_0x350c45[_0x3e03('0x5d')])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0xc5'));}this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x1b1'),_0x350c45['text']));var _0x4d08c8=this[_0x3e03('0x5c')][_0x3e03('0x70')](this,_0x350c45);if(_0x4d08c8){this[_0x3e03('0xe')]['noop'](util['format'](_0x3e03('0x1b2'),_0x4d08c8));var _0x6e4a12=this[_0x3e03('0xe')][_0x3e03('0x107')](_0x4d08c8);try{fs[_0x3e03('0x108')](_0x4d08c8+_0x3e03('0x109'));}catch(_0x343daf){logger[_0x3e03('0x2d')](_0x343daf);}return _0x6e4a12;}return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x350c45,_0x3e03('0x1b3'));};AGIVertices['prototype'][_0x3e03('0x1b4')]=function(_0x126784){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x1b5'),_0x126784[_0x3e03('0x38')]));_0x126784[_0x3e03('0x5d')]=_0x126784[_0x3e03('0x5d')][_0x3e03('0x5b')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x3e03('0x83')](_0x126784[_0x3e03('0x5d')])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0xc5'));}this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x1b6'),_0x126784[_0x3e03('0x5d')]));var _0x2fccab=this[_0x3e03('0x62')][_0x3e03('0x70')](this,_0x126784);if(_0x2fccab){this[_0x3e03('0xe')][_0x3e03('0xaa')](util['format'](_0x3e03('0x1b7'),_0x2fccab));var _0x3f1bb4=this[_0x3e03('0xe')][_0x3e03('0x107')](_0x2fccab);try{fs[_0x3e03('0x108')](_0x2fccab+'.wav');}catch(_0x309fe2){logger[_0x3e03('0x2d')](_0x309fe2);}return _0x3f1bb4;}return this['channel'][_0x3e03('0x2d')](_0x126784,_0x3e03('0x1b8'));};AGIVertices[_0x3e03('0x11')][_0x3e03('0x1b9')]=function(_0x3ef2f9){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x1ba'),_0x3ef2f9[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x3ef2f9[_0x3e03('0x153')])){return this['channel'][_0x3e03('0x2d')](_0x3ef2f9,'no\x20find\x20by\x20configured');}logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x154'),this['channel'][_0x3e03('0x3b')],_0x3ef2f9['findBy']));var _0x26f661=this['agentUnpause'][_0x3e03('0x70')](this,_0x3ef2f9[_0x3e03('0x153')]);if(_0x26f661){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x155'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x3ef2f9[_0x3e03('0x153')]));this[_0x3e03('0xe')][_0x3e03('0xaa')](util['format'](_0x3e03('0x155'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x3ef2f9[_0x3e03('0x153')]));return{'code':0xc8,'result':_0x3e03('0x156')};}else{logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x157'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x3ef2f9[_0x3e03('0x153')]));this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0x3e03('0x3b')],_0x3ef2f9[_0x3e03('0x153')]));return{'code':0xc8,'result':_0x3e03('0x15a')};}};AGIVertices[_0x3e03('0x11')][_0x3e03('0x1bb')]=function(_0x263f47){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0x263f47[_0x3e03('0x38')]));var _0x4feb50=this[_0x3e03('0xe')][_0x3e03('0xa9')](_0x3e03('0x1bc'),[_0x263f47[_0x3e03('0x1bd')],_0x263f47['options']]);if(_0x4feb50['result']===-0x1){return _0x4feb50;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x169'),_0x3e03('0x1bc'),_0x263f47[_0x3e03('0x1bd')]));};AGIVertices['prototype'][_0x3e03('0x1be')]=function(_0x44a83e){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x1bf'),_0x44a83e[_0x3e03('0x38')]));if(!this['isConfigured'](_0x44a83e[_0x3e03('0xd8')])){return this['channel'][_0x3e03('0x2d')](_0x44a83e,_0x3e03('0x19f'));}var _0x195c7f=this['getVariable']['sync'](this,_0x44a83e[_0x3e03('0xd8')]);if(!_0x195c7f){return this['channel'][_0x3e03('0x2d')](_0x44a83e,_0x3e03('0xda'));}var _0x288717=this[_0x3e03('0xe')][_0x3e03('0x12')](_0x195c7f);return{'code':0xc8,'result':_0x288717['extra']?_0x288717[_0x3e03('0xa1')]:'-'};};String[_0x3e03('0x11')][_0x3e03('0xa0')]=function(_0x39c090,_0x1aa99d){return this[_0x3e03('0x9f')](_0x39c090)['join'](_0x1aa99d);};module[_0x3e03('0x1c0')]=AGIVertices;
\ No newline at end of file
index 3fa36c7..9b988d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8783=['mandatoryDisposition','name','mandatoryDispositionPause','Action','QueuePause','then','getAgent','info','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','error','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','interface','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','[ACW][syncAgentRingNoAnswer]\x20%s','util','lodash','moment','../ami','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','bind','hanguprequest','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','queue','ACW'];(function(_0x42bb6d,_0x412255){var _0x1db89b=function(_0x5da43a){while(--_0x5da43a){_0x42bb6d['push'](_0x42bb6d['shift']());}};_0x1db89b(++_0x412255);}(_0x8783,0x179));var _0x3878=function(_0x54743f,_0xe3fe93){_0x54743f=_0x54743f-0x0;var _0x29f6b0=_0x8783[_0x54743f];return _0x29f6b0;};'use strict';var util=require(_0x3878('0x0'));var _=require(_0x3878('0x1'));var moment=require(_0x3878('0x2'));var ami=require(_0x3878('0x3'));var logger=require('../../../config/logger')(_0x3878('0x4'));var RpcUser=require(_0x3878('0x5'));var RpcVoiceAgentReport=require(_0x3878('0x6'));function Acw(_0x2476cd){this[_0x3878('0x7')]=_0x2476cd['voiceQueues'];this[_0x3878('0x8')]=_0x2476cd[_0x3878('0x8')];this[_0x3878('0x9')]=_0x2476cd['timers'];this[_0x3878('0xa')]={};ami['on'](_0x3878('0xb'),this['syncAgentConnect'][_0x3878('0xc')](this));ami['on'](_0x3878('0xd'),this['syncHangupRequest'][_0x3878('0xc')](this));ami['on']('hangup',this[_0x3878('0xe')][_0x3878('0xc')](this));ami['on'](_0x3878('0xf'),this[_0x3878('0x10')][_0x3878('0xc')](this));ami['on'](_0x3878('0x11'),this[_0x3878('0x12')][_0x3878('0xc')](this));ami['on']('blindtransfer',this[_0x3878('0x13')]['bind'](this));ami['on'](_0x3878('0x14'),this['syncAgentConnectPreview'][_0x3878('0xc')](this));}function getDiff(_0x26d80a){var _0x193bcd=moment()[_0x3878('0x15')](0x0);var _0x26f57f=moment(_0x26d80a)['milliseconds'](0x0);return _0x193bcd[_0x3878('0x16')](_0x26f57f,_0x3878('0x17'));}Acw[_0x3878('0x18')][_0x3878('0x19')]=function(_0x58e4da){try{var _0x3ba457=this;var _0x5e6090=this[_0x3878('0xa')][_0x58e4da]['interface'];var _0x2293e2=this[_0x3878('0xa')][_0x58e4da][_0x3878('0x1a')];var _0x27f20c=this[_0x3878('0x7')][_0x2293e2];var _0x407226=![];var _0x468b58=_0x3878('0x1b');if(_0x27f20c[_0x3878('0x1c')]){if(_0x27f20c['mandatoryDispositionPause'][_0x3878('0x1d')]){_0x407226=!![];_0x468b58=_0x27f20c[_0x3878('0x1e')][_0x3878('0x1d')];}}ami[_0x3878('0x1f')]({'action':_0x3878('0x20'),'interface':_0x5e6090,'paused':!![],'reason':_0x468b58})[_0x3878('0x21')](function(_0x52a38e){if(_0x3ba457[_0x3878('0x8')][_0x5e6090]){return RpcUser[_0x3878('0x22')](_0x3ba457[_0x3878('0x8')][_0x5e6090]['id'])[_0x3878('0x21')](function(_0x2fc865){if(_0x2fc865&&!_0x2fc865['voicePause']){logger[_0x3878('0x23')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x58e4da,_0x5e6090,_0x2293e2);var _0x3fefdf=_0x3ba457[_0x3878('0xa')][_0x58e4da][_0x3878('0x24')]&&_0x3ba457[_0x3878('0xa')][_0x58e4da][_0x3878('0x25')]?_0x3ba457['channels'][_0x58e4da][_0x3878('0x25')]:_0x58e4da;return RpcUser[_0x3878('0x26')](_0x3ba457[_0x3878('0x8')][_0x5e6090],_0x468b58,_0x3fefdf)[_0x3878('0x21')](function(_0x21d2ba){if(!_0x407226){_0x3ba457['timers'][_0x5e6090]={};logger['info'](_0x3878('0x27'),_0x58e4da,_0x3ba457[_0x3878('0x7')][_0x2293e2][_0x3878('0x28')],_0x5e6090,_0x2293e2);_0x3ba457[_0x3878('0x9')][_0x5e6090][_0x3878('0x29')]=setTimeout(_0x3ba457[_0x3878('0x2a')][_0x3878('0xc')](_0x3ba457,_0x5e6090),_0x3ba457['voiceQueues'][_0x2293e2][_0x3878('0x28')]*0x3e8);_0x3ba457['timers'][_0x5e6090][_0x3878('0x2b')]=moment()[_0x3878('0x2c')](_0x3878('0x2d'));_0x3ba457['timers'][_0x5e6090][_0x3878('0x2e')]=_0x58e4da;_0x3ba457[_0x3878('0x9')][_0x5e6090][_0x3878('0x1a')]=_0x2293e2;_0x3ba457['timers'][_0x5e6090][_0x3878('0x2f')]=function(){var _0x25f7f8=getDiff(_0x3ba457[_0x3878('0x9')][_0x5e6090][_0x3878('0x2b')]);clearTimeout(_0x3ba457[_0x3878('0x9')][_0x5e6090][_0x3878('0x29')]);_0x3ba457[_0x3878('0x9')][_0x5e6090]['timer']=![];RpcVoiceAgentReport[_0x3878('0x30')]({'acwtime':_0x25f7f8},_0x3ba457[_0x3878('0x9')][_0x5e6090][_0x3878('0x2e')],_0x5e6090)[_0x3878('0x21')](function(_0x2fc9c1){logger[_0x3878('0x23')](_0x3878('0x31'),_0x58e4da,_0x25f7f8,_0x2fc9c1);})[_0x3878('0x32')](function(_0x1b16fb){logger['error'](_0x3878('0x33'),_0x58e4da,_0x1b16fb);});delete _0x3ba457['timers'][_0x5e6090];};}});}else{logger[_0x3878('0x23')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x58e4da,_0x5e6090,_0x2293e2);}});}})[_0x3878('0x32')](function(_0x304ae9){logger['error'](_0x3878('0x27'),_0x58e4da,_0x3ba457[_0x3878('0x7')][_0x2293e2][_0x3878('0x28')],_0x5e6090,_0x2293e2);})['finally'](function(){delete _0x3ba457[_0x3878('0xa')][_0x58e4da];});}catch(_0x48f592){logger[_0x3878('0x34')]('[ACW][START]\x20%s',_0x48f592[_0x3878('0x35')]);}};Acw[_0x3878('0x18')][_0x3878('0x2a')]=function(_0x272126){try{var _0x477348=this;if(_0x477348[_0x3878('0x9')][_0x272126]){_0x477348['timers'][_0x272126][_0x3878('0x29')]=![];var _0x5de717=_0x477348['timers'][_0x272126][_0x3878('0x2e')];var _0x5ac62d=_0x477348[_0x3878('0x9')][_0x272126][_0x3878('0x1a')];var _0x519c2f=_0x477348[_0x3878('0x7')][_0x5ac62d]['acwTimeout'];logger[_0x3878('0x23')](_0x3878('0x36'),_0x5de717,_0x272126);RpcUser[_0x3878('0x37')](this['agents'][_0x272126]);RpcVoiceAgentReport[_0x3878('0x30')]({'acwtime':_0x519c2f,'agentacw':!![]},_0x5de717,_0x272126)['then'](function(_0x5ab552){logger[_0x3878('0x23')](_0x3878('0x31'),_0x5de717,_0x519c2f,_0x5ab552);})[_0x3878('0x32')](function(_0x16ebb0){logger[_0x3878('0x34')](_0x3878('0x33'),_0x5de717,_0x16ebb0);});}else{logger[_0x3878('0x34')](_0x3878('0x38'),_0x272126);if(_0x477348[_0x3878('0x9')]){logger[_0x3878('0x23')](_0x3878('0x39'),JSON[_0x3878('0x3a')](_0x477348[_0x3878('0x9')]));}}}catch(_0x15fc47){logger[_0x3878('0x34')](_0x3878('0x3b'),_0x15fc47[_0x3878('0x35')]);}};Acw[_0x3878('0x18')]['syncAgentConnect']=function(_0x142d43){try{if(this['voiceQueues'][_0x142d43['queue']]&&(this['voiceQueues'][_0x142d43[_0x3878('0x1a')]][_0x3878('0x4')]||this[_0x3878('0x7')][_0x142d43[_0x3878('0x1a')]][_0x3878('0x1c')])){if(this[_0x3878('0x8')][_0x142d43[_0x3878('0x3c')]]){this[_0x3878('0xa')][_0x142d43['uniqueid']]={'queue':_0x142d43[_0x3878('0x1a')],'interface':_0x142d43[_0x3878('0x3c')],'destlinkedid':_0x142d43[_0x3878('0x25')]};}}}catch(_0x3e00f3){logger[_0x3878('0x34')](_0x3878('0x3d'),_0x3e00f3[_0x3878('0x35')]);}};Acw[_0x3878('0x18')][_0x3878('0x3e')]=function(_0x545daa){try{if(this[_0x3878('0x7')][_0x545daa[_0x3878('0x1a')]]&&(this['voiceQueues'][_0x545daa[_0x3878('0x1a')]][_0x3878('0x4')]||this[_0x3878('0x7')][_0x545daa[_0x3878('0x1a')]][_0x3878('0x1c')])){if(this[_0x3878('0x8')][_0x545daa[_0x3878('0x3c')]]){this[_0x3878('0xa')][_0x545daa[_0x3878('0x2e')]]={'queue':_0x545daa[_0x3878('0x1a')],'interface':_0x545daa[_0x3878('0x3c')]};}}}catch(_0x442dfd){logger[_0x3878('0x34')](_0x3878('0x3f'),_0x442dfd[_0x3878('0x35')]);}};Acw['prototype'][_0x3878('0x40')]=function(_0x2c3709){try{if(this[_0x3878('0xa')][_0x2c3709['uniqueid']]&&_[_0x3878('0x41')](this[_0x3878('0xa')][_0x2c3709['uniqueid']][_0x3878('0x24')])){logger[_0x3878('0x23')](_0x3878('0x42'),_0x2c3709[_0x3878('0x2e')]);this[_0x3878('0x19')](_0x2c3709[_0x3878('0x2e')]);}else if(this[_0x3878('0xa')][_0x2c3709[_0x3878('0x43')]]&&_[_0x3878('0x41')](this['channels'][_0x2c3709[_0x3878('0x43')]][_0x3878('0x24')])){logger['info'](_0x3878('0x44'),_0x2c3709[_0x3878('0x43')]);this[_0x3878('0x19')](_0x2c3709[_0x3878('0x43')]);}}catch(_0xbfe241){logger['error'](_0x3878('0x45'),_0xbfe241[_0x3878('0x35')]);}};Acw[_0x3878('0x18')][_0x3878('0xe')]=function(_0x44d56){try{if(this[_0x3878('0xa')][_0x44d56['uniqueid']]&&this[_0x3878('0xa')][_0x44d56[_0x3878('0x2e')]][_0x3878('0x24')]){logger[_0x3878('0x23')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x44d56[_0x3878('0x2e')]);this[_0x3878('0x19')](_0x44d56[_0x3878('0x2e')]);}else if(this[_0x3878('0xa')][_0x44d56['linkedid']]&&this[_0x3878('0xa')][_0x44d56['linkedid']][_0x3878('0x24')]){logger['info'](_0x3878('0x46'),_0x44d56['linkedid']);this[_0x3878('0x19')](_0x44d56['linkedid']);}}catch(_0x1d3fd9){logger[_0x3878('0x34')]('[ACW][syncHangup]\x20%s',_0x1d3fd9[_0x3878('0x35')]);}};Acw[_0x3878('0x18')][_0x3878('0x12')]=function(_0x53fab4){try{if(!_[_0x3878('0x47')](this[_0x3878('0xa')][_0x53fab4[_0x3878('0x48')]])){this[_0x3878('0x19')](_0x53fab4[_0x3878('0x48')]);if(this['channels'][_0x53fab4['secondtransfereruniqueid']]){this[_0x3878('0xa')][_0x53fab4[_0x3878('0x49')]][_0x3878('0x24')]=!![];this[_0x3878('0xa')][_0x53fab4[_0x3878('0x4a')]]=this['channels'][_0x53fab4[_0x3878('0x49')]];delete this['channels'][_0x53fab4[_0x3878('0x49')]];}}else if(!_[_0x3878('0x47')](this['channels'][_0x53fab4['transfertargetuniqueid']])){this[_0x3878('0x19')](_0x53fab4[_0x3878('0x4a')]);if(this[_0x3878('0xa')][_0x53fab4[_0x3878('0x4b')]]){this['channels'][_0x53fab4[_0x3878('0x4b')]][_0x3878('0x24')]=!![];this[_0x3878('0xa')][_0x53fab4[_0x3878('0x48')]]=this[_0x3878('0xa')][_0x53fab4[_0x3878('0x4b')]];delete this[_0x3878('0xa')][_0x53fab4['origtransfereruniqueid']];}}}catch(_0x4b613e){logger[_0x3878('0x34')]('[ACW][syncAttendedTransfer]\x20%s',_0x4b613e[_0x3878('0x35')]);}};Acw['prototype'][_0x3878('0x13')]=function(_0x3ff6ac){try{if(this[_0x3878('0xa')][_0x3ff6ac[_0x3878('0x4c')]]){logger['info'](_0x3878('0x4d'),JSON['stringify'](_0x3ff6ac['transfereruniqueid']));this[_0x3878('0x19')](_0x3ff6ac[_0x3878('0x4c')]);}else if(this[_0x3878('0xa')][_0x3ff6ac['transfererlinkedid']]){logger[_0x3878('0x23')](_0x3878('0x4e'),JSON[_0x3878('0x3a')](_0x3ff6ac['transfererlinkedid']));this['startAcw'](_0x3ff6ac[_0x3878('0x4f')]);}}catch(_0x591663){logger[_0x3878('0x34')]('[ACW][syncBlindTransfer]\x20%s',_0x591663[_0x3878('0x35')]);}};Acw['prototype'][_0x3878('0x10')]=function(_0x914565){try{if(this['voiceQueues'][_0x914565[_0x3878('0x1a')]]&&this[_0x3878('0x7')][_0x914565['queue']]['autopause']==='all'){if(this[_0x3878('0x8')][_0x914565['interface']]){logger['info']('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x914565[_0x3878('0x2e')],_0x914565[_0x3878('0x3c')],_0x914565[_0x3878('0x1a')]);return RpcUser['savePause'](this['agents'][_0x914565[_0x3878('0x3c')]],'Auto-Pause',_0x914565[_0x3878('0x2e')]);}}}catch(_0x108fa6){logger[_0x3878('0x34')](_0x3878('0x50'),_0x108fa6['message']);}};module['exports']=Acw;
\ No newline at end of file
+var _0xc982=['getAgent','voicePause','info','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','timer','acwTimeout','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','finally','[ACW][START]\x20%s','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','message','mandatoryDisposition','interface','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','exports','util','lodash','moment','../ami','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','hanguprequest','syncHangupRequest','bind','syncHangup','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','queue','ACW','mandatoryDispositionPause','name','Action','QueuePause','then'];(function(_0x4f1869,_0x3946d2){var _0x5a0d6d=function(_0x51dcd2){while(--_0x51dcd2){_0x4f1869['push'](_0x4f1869['shift']());}};_0x5a0d6d(++_0x3946d2);}(_0xc982,0x195));var _0x2c98=function(_0x32a554,_0x37ad7b){_0x32a554=_0x32a554-0x0;var _0x5ce71c=_0xc982[_0x32a554];return _0x5ce71c;};'use strict';var util=require(_0x2c98('0x0'));var _=require(_0x2c98('0x1'));var moment=require(_0x2c98('0x2'));var ami=require(_0x2c98('0x3'));var logger=require(_0x2c98('0x4'))(_0x2c98('0x5'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x2c98('0x6'));function Acw(_0x579cc0){this['voiceQueues']=_0x579cc0[_0x2c98('0x7')];this[_0x2c98('0x8')]=_0x579cc0['agents'];this['timers']=_0x579cc0[_0x2c98('0x9')];this[_0x2c98('0xa')]={};ami['on'](_0x2c98('0xb'),this[_0x2c98('0xc')]['bind'](this));ami['on'](_0x2c98('0xd'),this[_0x2c98('0xe')][_0x2c98('0xf')](this));ami['on']('hangup',this[_0x2c98('0x10')]['bind'](this));ami['on']('agentringnoanswer',this[_0x2c98('0x11')][_0x2c98('0xf')](this));ami['on'](_0x2c98('0x12'),this[_0x2c98('0x13')][_0x2c98('0xf')](this));ami['on'](_0x2c98('0x14'),this['syncBlindTransfer'][_0x2c98('0xf')](this));ami['on'](_0x2c98('0x15'),this[_0x2c98('0x16')][_0x2c98('0xf')](this));}function getDiff(_0x5e7f26){var _0xfb5bbe=moment()[_0x2c98('0x17')](0x0);var _0x5e7861=moment(_0x5e7f26)[_0x2c98('0x17')](0x0);return _0xfb5bbe[_0x2c98('0x18')](_0x5e7861,_0x2c98('0x19'));}Acw[_0x2c98('0x1a')][_0x2c98('0x1b')]=function(_0x5c2abf){try{var _0x2de299=this;var _0x49693b=this[_0x2c98('0xa')][_0x5c2abf]['interface'];var _0x13422c=this[_0x2c98('0xa')][_0x5c2abf][_0x2c98('0x1c')];var _0x15b40c=this[_0x2c98('0x7')][_0x13422c];var _0x2ec553=![];var _0x1d6876=_0x2c98('0x1d');if(_0x15b40c['mandatoryDisposition']){if(_0x15b40c[_0x2c98('0x1e')][_0x2c98('0x1f')]){_0x2ec553=!![];_0x1d6876=_0x15b40c[_0x2c98('0x1e')]['name'];}}ami[_0x2c98('0x20')]({'action':_0x2c98('0x21'),'interface':_0x49693b,'paused':!![],'reason':_0x1d6876})[_0x2c98('0x22')](function(_0x17a08f){if(_0x2de299['agents'][_0x49693b]){return RpcUser[_0x2c98('0x23')](_0x2de299[_0x2c98('0x8')][_0x49693b]['id'])[_0x2c98('0x22')](function(_0x472b5f){if(_0x472b5f&&!_0x472b5f[_0x2c98('0x24')]){logger[_0x2c98('0x25')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x5c2abf,_0x49693b,_0x13422c);var _0x3f8a8f=_0x2de299[_0x2c98('0xa')][_0x5c2abf][_0x2c98('0x26')]&&_0x2de299[_0x2c98('0xa')][_0x5c2abf][_0x2c98('0x27')]?_0x2de299[_0x2c98('0xa')][_0x5c2abf][_0x2c98('0x27')]:_0x5c2abf;return RpcUser[_0x2c98('0x28')](_0x2de299[_0x2c98('0x8')][_0x49693b],_0x1d6876,_0x3f8a8f)['then'](function(_0x479734){if(!_0x2ec553){_0x2de299[_0x2c98('0x9')][_0x49693b]={};logger[_0x2c98('0x25')](_0x2c98('0x29'),_0x5c2abf,_0x2de299[_0x2c98('0x7')][_0x13422c]['acwTimeout'],_0x49693b,_0x13422c);_0x2de299[_0x2c98('0x9')][_0x49693b][_0x2c98('0x2a')]=setTimeout(_0x2de299['stopAcw']['bind'](_0x2de299,_0x49693b),_0x2de299[_0x2c98('0x7')][_0x13422c][_0x2c98('0x2b')]*0x3e8);_0x2de299[_0x2c98('0x9')][_0x49693b][_0x2c98('0x2c')]=moment()['format'](_0x2c98('0x2d'));_0x2de299[_0x2c98('0x9')][_0x49693b][_0x2c98('0x2e')]=_0x5c2abf;_0x2de299[_0x2c98('0x9')][_0x49693b][_0x2c98('0x1c')]=_0x13422c;_0x2de299[_0x2c98('0x9')][_0x49693b][_0x2c98('0x2f')]=function(){var _0xabaa0f=getDiff(_0x2de299[_0x2c98('0x9')][_0x49693b]['lastPauseAt']);clearTimeout(_0x2de299[_0x2c98('0x9')][_0x49693b][_0x2c98('0x2a')]);_0x2de299[_0x2c98('0x9')][_0x49693b][_0x2c98('0x2a')]=![];RpcVoiceAgentReport[_0x2c98('0x30')]({'acwtime':_0xabaa0f},_0x2de299['timers'][_0x49693b]['uniqueid'],_0x49693b)[_0x2c98('0x22')](function(_0x1c3a14){logger['info'](_0x2c98('0x31'),_0x5c2abf,_0xabaa0f,_0x1c3a14);})[_0x2c98('0x32')](function(_0x4bb027){logger['error'](_0x2c98('0x33'),_0x5c2abf,_0x4bb027);});delete _0x2de299['timers'][_0x49693b];};}});}else{logger['info'](_0x2c98('0x34'),_0x5c2abf,_0x49693b,_0x13422c);}});}})[_0x2c98('0x32')](function(_0x1483b5){logger[_0x2c98('0x35')](_0x2c98('0x29'),_0x5c2abf,_0x2de299[_0x2c98('0x7')][_0x13422c][_0x2c98('0x2b')],_0x49693b,_0x13422c);})[_0x2c98('0x36')](function(){delete _0x2de299[_0x2c98('0xa')][_0x5c2abf];});}catch(_0x41843a){logger[_0x2c98('0x35')](_0x2c98('0x37'),_0x41843a['message']);}};Acw[_0x2c98('0x1a')]['stopAcw']=function(_0x1310f6){try{var _0x3a4558=this;if(_0x3a4558['timers'][_0x1310f6]){_0x3a4558[_0x2c98('0x9')][_0x1310f6]['timer']=![];var _0x45d82b=_0x3a4558['timers'][_0x1310f6][_0x2c98('0x2e')];var _0x3f8a52=_0x3a4558[_0x2c98('0x9')][_0x1310f6][_0x2c98('0x1c')];var _0x378158=_0x3a4558[_0x2c98('0x7')][_0x3f8a52][_0x2c98('0x2b')];logger[_0x2c98('0x25')]('[%s][TIMER][STOP][AGENT:%s]',_0x45d82b,_0x1310f6);RpcUser[_0x2c98('0x38')](this['agents'][_0x1310f6]);RpcVoiceAgentReport[_0x2c98('0x30')]({'acwtime':_0x378158,'agentacw':!![]},_0x45d82b,_0x1310f6)['then'](function(_0x23513c){logger[_0x2c98('0x25')](_0x2c98('0x31'),_0x45d82b,_0x378158,_0x23513c);})[_0x2c98('0x32')](function(_0x5b38e9){logger[_0x2c98('0x35')](_0x2c98('0x33'),_0x45d82b,_0x5b38e9);});}else{logger[_0x2c98('0x35')](_0x2c98('0x39'),_0x1310f6);if(_0x3a4558[_0x2c98('0x9')]){logger[_0x2c98('0x25')](_0x2c98('0x3a'),JSON[_0x2c98('0x3b')](_0x3a4558['timers']));}}}catch(_0x7ae511){logger[_0x2c98('0x35')](_0x2c98('0x3c'),_0x7ae511[_0x2c98('0x3d')]);}};Acw[_0x2c98('0x1a')][_0x2c98('0xc')]=function(_0x5a05d6){try{if(this[_0x2c98('0x7')][_0x5a05d6[_0x2c98('0x1c')]]&&(this[_0x2c98('0x7')][_0x5a05d6['queue']][_0x2c98('0x5')]||this[_0x2c98('0x7')][_0x5a05d6[_0x2c98('0x1c')]][_0x2c98('0x3e')])){if(this[_0x2c98('0x8')][_0x5a05d6[_0x2c98('0x3f')]]){this[_0x2c98('0xa')][_0x5a05d6['uniqueid']]={'queue':_0x5a05d6[_0x2c98('0x1c')],'interface':_0x5a05d6[_0x2c98('0x3f')],'destlinkedid':_0x5a05d6[_0x2c98('0x27')]};}}}catch(_0x5619b0){logger['error'](_0x2c98('0x40'),_0x5619b0['message']);}};Acw['prototype']['syncAgentConnectPreview']=function(_0x5c491c){try{if(this['voiceQueues'][_0x5c491c[_0x2c98('0x1c')]]&&(this[_0x2c98('0x7')][_0x5c491c['queue']][_0x2c98('0x5')]||this[_0x2c98('0x7')][_0x5c491c[_0x2c98('0x1c')]][_0x2c98('0x3e')])){if(this[_0x2c98('0x8')][_0x5c491c[_0x2c98('0x3f')]]){this[_0x2c98('0xa')][_0x5c491c[_0x2c98('0x2e')]]={'queue':_0x5c491c[_0x2c98('0x1c')],'interface':_0x5c491c[_0x2c98('0x3f')]};}}}catch(_0x133661){logger[_0x2c98('0x35')](_0x2c98('0x41'),_0x133661['message']);}};Acw['prototype'][_0x2c98('0xe')]=function(_0x4d9a26){try{if(this['channels'][_0x4d9a26[_0x2c98('0x2e')]]&&_[_0x2c98('0x42')](this['channels'][_0x4d9a26[_0x2c98('0x2e')]][_0x2c98('0x26')])){logger[_0x2c98('0x25')]('[%s][HANGUP:UNIQUEID]',_0x4d9a26[_0x2c98('0x2e')]);this['startAcw'](_0x4d9a26[_0x2c98('0x2e')]);}else if(this[_0x2c98('0xa')][_0x4d9a26[_0x2c98('0x43')]]&&_[_0x2c98('0x42')](this[_0x2c98('0xa')][_0x4d9a26[_0x2c98('0x43')]]['attended'])){logger['info'](_0x2c98('0x44'),_0x4d9a26[_0x2c98('0x43')]);this[_0x2c98('0x1b')](_0x4d9a26[_0x2c98('0x43')]);}}catch(_0x4fcf49){logger[_0x2c98('0x35')]('[ACW][syncHangupRequest]\x20%s',_0x4fcf49[_0x2c98('0x3d')]);}};Acw[_0x2c98('0x1a')][_0x2c98('0x10')]=function(_0x49b03a){try{if(this[_0x2c98('0xa')][_0x49b03a[_0x2c98('0x2e')]]&&this[_0x2c98('0xa')][_0x49b03a['uniqueid']][_0x2c98('0x26')]){logger['info'](_0x2c98('0x45'),_0x49b03a['uniqueid']);this[_0x2c98('0x1b')](_0x49b03a['uniqueid']);}else if(this[_0x2c98('0xa')][_0x49b03a[_0x2c98('0x43')]]&&this['channels'][_0x49b03a[_0x2c98('0x43')]][_0x2c98('0x26')]){logger[_0x2c98('0x25')](_0x2c98('0x46'),_0x49b03a[_0x2c98('0x43')]);this[_0x2c98('0x1b')](_0x49b03a[_0x2c98('0x43')]);}}catch(_0x3dc3e9){logger['error'](_0x2c98('0x47'),_0x3dc3e9['message']);}};Acw[_0x2c98('0x1a')][_0x2c98('0x13')]=function(_0x9aae98){try{if(!_[_0x2c98('0x48')](this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x49')]])){this[_0x2c98('0x1b')](_0x9aae98[_0x2c98('0x49')]);if(this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x4a')]]){this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x4a')]][_0x2c98('0x26')]=!![];this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x4b')]]=this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x4a')]];delete this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x4a')]];}}else if(!_[_0x2c98('0x48')](this['channels'][_0x9aae98[_0x2c98('0x4b')]])){this[_0x2c98('0x1b')](_0x9aae98['transfertargetuniqueid']);if(this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x4c')]]){this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x4c')]]['attended']=!![];this[_0x2c98('0xa')][_0x9aae98['transfereeuniqueid']]=this['channels'][_0x9aae98['origtransfereruniqueid']];delete this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x4c')]];}}}catch(_0x5c9af8){logger[_0x2c98('0x35')](_0x2c98('0x4d'),_0x5c9af8[_0x2c98('0x3d')]);}};Acw[_0x2c98('0x1a')][_0x2c98('0x4e')]=function(_0x1ba0bc){try{if(this[_0x2c98('0xa')][_0x1ba0bc[_0x2c98('0x4f')]]){logger['info'](_0x2c98('0x50'),JSON[_0x2c98('0x3b')](_0x1ba0bc[_0x2c98('0x4f')]));this[_0x2c98('0x1b')](_0x1ba0bc[_0x2c98('0x4f')]);}else if(this[_0x2c98('0xa')][_0x1ba0bc[_0x2c98('0x51')]]){logger[_0x2c98('0x25')](_0x2c98('0x52'),JSON['stringify'](_0x1ba0bc[_0x2c98('0x51')]));this['startAcw'](_0x1ba0bc['transfererlinkedid']);}}catch(_0x3395f6){logger['error'](_0x2c98('0x53'),_0x3395f6[_0x2c98('0x3d')]);}};Acw[_0x2c98('0x1a')][_0x2c98('0x11')]=function(_0x193721){try{if(this[_0x2c98('0x7')][_0x193721[_0x2c98('0x1c')]]&&this[_0x2c98('0x7')][_0x193721[_0x2c98('0x1c')]]['autopause']===_0x2c98('0x54')){if(this['agents'][_0x193721[_0x2c98('0x3f')]]){logger[_0x2c98('0x25')](_0x2c98('0x55'),_0x193721[_0x2c98('0x2e')],_0x193721[_0x2c98('0x3f')],_0x193721[_0x2c98('0x1c')]);return RpcUser[_0x2c98('0x28')](this[_0x2c98('0x8')][_0x193721[_0x2c98('0x3f')]],_0x2c98('0x56'),_0x193721[_0x2c98('0x2e')]);}}}catch(_0x24a618){logger[_0x2c98('0x35')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x24a618[_0x2c98('0x3d')]);}};module[_0x2c98('0x57')]=Acw;
\ No newline at end of file
index 9c321f8..f90c0b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','once','connect','shutdown','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','[ami.js][fullybooted]','close','exports','bluebird','moment','ami','../../config/environment','asterisk','port','password','Action','promisify','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','username','inspect','actionSipShowRegistry','actionDeviceStateList'];(function(_0xa03e76,_0xaee3a6){var _0x4132be=function(_0x14d8b4){while(--_0x14d8b4){_0xa03e76['push'](_0xa03e76['shift']());}};_0x4132be(++_0xaee3a6);}(_0x757a,0xde));var _0xa757=function(_0x37ede2,_0x2a8a66){_0x37ede2=_0x37ede2-0x0;var _0x578835=_0x757a[_0x37ede2];return _0x578835;};'use strict';var Manager=require('asterisk-manager');var BPromise=require(_0xa757('0x0'));var moment=require(_0xa757('0x1'));var util=require('util');var _=require('lodash');var logger=require('../../config/logger')(_0xa757('0x2'));var config=require(_0xa757('0x3'));var ami=new Manager(config[_0xa757('0x4')][_0xa757('0x5')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')]['username'],config[_0xa757('0x4')][_0xa757('0x6')],!![]);ami['keepConnected']();ami[_0xa757('0x7')]=BPromise[_0xa757('0x8')](ami[_0xa757('0x9')]);function error(_0x1a95ee){logger[_0xa757('0xa')](util['format'](_0xa757('0xb'),config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')],util[_0xa757('0xd')](_0x1a95ee,![],null)));}function close(){logger['error'](util['format']('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config['asterisk']['username'],config[_0xa757('0x4')]['ip'],config['asterisk']['port']));}ami[_0xa757('0xe')]=function(){return function(){return ami['Action']({'action':'sipshowregistry'});};};ami[_0xa757('0xf')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x10')});};};ami[_0xa757('0x11')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x12')});};};ami[_0xa757('0x13')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x14')});};};ami[_0xa757('0x15')]=function(){return function(){return ami['Action']({'action':_0xa757('0x16')});};};function connect(_0x44eab8){logger[_0xa757('0x17')](util['format']('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')]));ami[_0xa757('0x18')]('error',error);ami[_0xa757('0x18')]('close',close);}ami['on'](_0xa757('0x19'),connect);ami['on'](_0xa757('0x1a'),function(_0x14014c){logger[_0xa757('0x17')](util['format']('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')],util[_0xa757('0xd')](_0x14014c,![],null)));});ami['on'](_0xa757('0x1b'),function(_0x21f1af){logger[_0xa757('0x17')](util['format'](_0xa757('0x1c'),config['asterisk'][_0xa757('0xc')],config['asterisk']['ip'],config[_0xa757('0x4')][_0xa757('0x5')]));return BPromise[_0xa757('0x1d')]()['then'](ami[_0xa757('0xe')]())[_0xa757('0x1e')](ami[_0xa757('0xf')]())[_0xa757('0x1e')](ami['actionSipPeerStatus']())[_0xa757('0x1e')](ami['actionQueueSummary']())['then'](ami['actionCoreShowChannels']())['catch'](function(_0xfdf69d){logger['error'](_0xa757('0x1f'),util[_0xa757('0xd')](_0xfdf69d,{'showHidden':![],'depth':null}));});});ami['once'](_0xa757('0xa'),error);ami['once'](_0xa757('0x20'),close);module[_0xa757('0x21')]=ami;
\ No newline at end of file
+var _0xae45=['coreshowchannels','info','format','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','then','actionSipShowRegistry','catch','log','exports','asterisk-manager','bluebird','moment','lodash','../../config/logger','../../config/environment','port','asterisk','username','password','keepConnected','Action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels'];(function(_0xa230f4,_0xaf03da){var _0x481ac1=function(_0x2a7127){while(--_0x2a7127){_0xa230f4['push'](_0xa230f4['shift']());}};_0x481ac1(++_0xaf03da);}(_0xae45,0xd2));var _0x5ae4=function(_0x36fad6,_0x5d35d3){_0x36fad6=_0x36fad6-0x0;var _0x3ae71e=_0xae45[_0x36fad6];return _0x3ae71e;};'use strict';var Manager=require(_0x5ae4('0x0'));var BPromise=require(_0x5ae4('0x1'));var moment=require(_0x5ae4('0x2'));var util=require('util');var _=require(_0x5ae4('0x3'));var logger=require(_0x5ae4('0x4'))('ami');var config=require(_0x5ae4('0x5'));var ami=new Manager(config['asterisk'][_0x5ae4('0x6')],config[_0x5ae4('0x7')]['ip'],config[_0x5ae4('0x7')][_0x5ae4('0x8')],config[_0x5ae4('0x7')][_0x5ae4('0x9')],!![]);ami[_0x5ae4('0xa')]();ami[_0x5ae4('0xb')]=BPromise['promisify'](ami['action']);function error(_0x55c032){logger[_0x5ae4('0xc')](util['format'](_0x5ae4('0xd'),config[_0x5ae4('0x7')]['username'],config[_0x5ae4('0x7')]['ip'],config['asterisk'][_0x5ae4('0x6')],util[_0x5ae4('0xe')](_0x55c032,![],null)));}function close(){logger[_0x5ae4('0xc')](util['format'](_0x5ae4('0xf'),config['asterisk'][_0x5ae4('0x8')],config[_0x5ae4('0x7')]['ip'],config['asterisk'][_0x5ae4('0x6')]));}ami['actionSipShowRegistry']=function(){return function(){return ami['Action']({'action':_0x5ae4('0x10')});};};ami[_0x5ae4('0x11')]=function(){return function(){return ami[_0x5ae4('0xb')]({'action':_0x5ae4('0x12')});};};ami[_0x5ae4('0x13')]=function(){return function(){return ami[_0x5ae4('0xb')]({'action':_0x5ae4('0x14')});};};ami[_0x5ae4('0x15')]=function(){return function(){return ami['Action']({'action':_0x5ae4('0x16')});};};ami[_0x5ae4('0x17')]=function(){return function(){return ami[_0x5ae4('0xb')]({'action':_0x5ae4('0x18')});};};function connect(_0x4e33d7){logger[_0x5ae4('0x19')](util[_0x5ae4('0x1a')](_0x5ae4('0x1b'),config['asterisk'][_0x5ae4('0x8')],config['asterisk']['ip'],config['asterisk'][_0x5ae4('0x6')]));ami[_0x5ae4('0x1c')](_0x5ae4('0xc'),error);ami[_0x5ae4('0x1c')](_0x5ae4('0x1d'),close);}ami['on']('connect',connect);ami['on'](_0x5ae4('0x1e'),function(_0x5ec248){logger[_0x5ae4('0x19')](util[_0x5ae4('0x1a')](_0x5ae4('0x1f'),config[_0x5ae4('0x7')][_0x5ae4('0x8')],config[_0x5ae4('0x7')]['ip'],config[_0x5ae4('0x7')]['port'],util[_0x5ae4('0xe')](_0x5ec248,![],null)));});ami['on'](_0x5ae4('0x20'),function(_0xd6bf8a){logger[_0x5ae4('0x19')](util[_0x5ae4('0x1a')](_0x5ae4('0x21'),config[_0x5ae4('0x7')]['username'],config[_0x5ae4('0x7')]['ip'],config[_0x5ae4('0x7')][_0x5ae4('0x6')]));return BPromise['resolve']()[_0x5ae4('0x22')](ami[_0x5ae4('0x23')]())[_0x5ae4('0x22')](ami['actionDeviceStateList']())['then'](ami['actionSipPeerStatus']())['then'](ami[_0x5ae4('0x15')]())[_0x5ae4('0x22')](ami[_0x5ae4('0x17')]())[_0x5ae4('0x24')](function(_0x329763){console[_0x5ae4('0x25')](_0x329763);});});ami['once'](_0x5ae4('0xc'),error);ami['once'](_0x5ae4('0x1d'),close);module[_0x5ae4('0x26')]=ami;
\ No newline at end of file
index 3aa351c..2fc213f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['catch','exports','jayson/promise','bluebird','ami','client','http','rpc','memberReport','error','message','result'];(function(_0x4a489f,_0x5402ab){var _0x4a4137=function(_0x4e35f3){while(--_0x4e35f3){_0x4a489f['push'](_0x4a489f['shift']());}};_0x4a4137(++_0x5402ab);}(_0xb43b,0x1b2));var _0xbb43=function(_0x5a91cd,_0x204f30){_0x5a91cd=_0x5a91cd-0x0;var _0x42b641=_0xb43b[_0x5a91cd];return _0x42b641;};'use strict';var jayson=require(_0xbb43('0x0'));var BPromise=require(_0xbb43('0x1'));var logger=require('../../config/logger')(_0xbb43('0x2'));var client=jayson[_0xbb43('0x3')][_0xbb43('0x4')]({'port':0x2329});client['Request']=function(_0x131e9e,_0x41aff6){return new BPromise(function(_0x351254,_0x16432a){return client['request'](_0x131e9e,_0x41aff6)['then'](function(_0x378df5){logger['debug'](_0xbb43('0x5'),_0xbb43('0x6'),_0x131e9e,_0x41aff6,_0x378df5);if(_0x378df5[_0xbb43('0x7')]){logger[_0xbb43('0x7')](_0xbb43('0x5'),'memberReport',_0x131e9e,_0x378df5[_0xbb43('0x7')][_0xbb43('0x8')],_0x41aff6);return _0x16432a(_0x378df5['error'][_0xbb43('0x8')]);}else{return _0x351254(_0x378df5[_0xbb43('0x9')]);}})[_0xbb43('0xa')](function(_0x5e3611){logger[_0xbb43('0x7')](_0xbb43('0x5'),'memberReport',_0x131e9e,_0x5e3611,_0x41aff6);return _0x16432a(_0x5e3611);});});};module[_0xbb43('0xb')]=client;
\ No newline at end of file
+var _0x9bde=['message','result','catch','exports','bluebird','ami','http','Request','request','debug','rpc','memberReport','error'];(function(_0x28e71a,_0x4405bd){var _0x268fed=function(_0x404197){while(--_0x404197){_0x28e71a['push'](_0x28e71a['shift']());}};_0x268fed(++_0x4405bd);}(_0x9bde,0xe1));var _0xe9bd=function(_0x276feb,_0x1319aa){_0x276feb=_0x276feb-0x0;var _0x6b8f15=_0x9bde[_0x276feb];return _0x6b8f15;};'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 e8045fa..1d95697 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12b2=['lodash','moment','isNil','string','name','Contact','phone','lastName','queue','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','CampaignId','idHopper','ContactFirstName','firstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','voiceQueue','dialCutDigit','substring','exports'];(function(_0x4c4037,_0x15054b){var _0x357862=function(_0x480015){while(--_0x480015){_0x4c4037['push'](_0x4c4037['shift']());}};_0x357862(++_0x15054b);}(_0x12b2,0x11f));var _0x212b=function(_0x3210da,_0x1f2a03){_0x3210da=_0x3210da-0x0;var _0x42a7a3=_0x12b2[_0x3210da];return _0x42a7a3;};'use strict';var util=require('util');var _=require(_0x212b('0x0'));var moment=require(_0x212b('0x1'));function checkNameSurname(_0x31832b,_0x185199,_0x164ed4){var _0x1ca224='';if(!_[_0x212b('0x2')](_0x185199)&&_0x212b('0x3')===typeof _0x185199){_0x1ca224+=_0x185199;}if(!_[_0x212b('0x2')](_0x164ed4)&&_0x212b('0x3')===typeof _0x164ed4){_0x1ca224+='\x20'+_0x164ed4;}if(_0x1ca224!==''){return _0x1ca224;}return _0x31832b;}function Action(_0x3960bb,_0x48cb18,_0xbcfcc9){this['voiceQueue']=_0x3960bb;this['uniqueid']=_0xbcfcc9||undefined;this[_0x212b('0x4')]=checkNameSurname(_0x48cb18[_0x212b('0x5')][_0x212b('0x6')],_0x48cb18[_0x212b('0x5')]['firstName'],_0x48cb18[_0x212b('0x5')][_0x212b('0x7')]);this['number']=_0x48cb18[_0x212b('0x5')]['phone'];this[_0x212b('0x8')]=_0x3960bb[_0x212b('0x4')];this['active']=_0x48cb18['active']||![];this['type']=_0x3960bb['type'];this['dialQueueTimeout']=_0x3960bb[_0x212b('0x9')]||0x3;this[_0x212b('0xa')]=_0x48cb18['scheduledat'];this['countbusyretry']=_0x48cb18[_0x212b('0xb')];this['countcongestionretry']=_0x48cb18[_0x212b('0xc')];this['countnoanswerretry']=_0x48cb18[_0x212b('0xd')];this[_0x212b('0xe')]=_0x48cb18[_0x212b('0xe')];this[_0x212b('0xf')]=_0x48cb18[_0x212b('0xf')];this[_0x212b('0x10')]=_0x48cb18[_0x212b('0x10')];this['countmachineretry']=_0x48cb18[_0x212b('0x11')];this[_0x212b('0x12')]=_0x48cb18[_0x212b('0x12')];this[_0x212b('0x13')]=_0x48cb18[_0x212b('0x13')];this[_0x212b('0x14')]=_0x48cb18[_0x212b('0x14')];this['UserId']=_0x48cb18[_0x212b('0x15')];this['VoiceQueueId']=_0x48cb18['VoiceQueueId'];this[_0x212b('0x16')]=_0x48cb18[_0x212b('0x16')];this[_0x212b('0x17')]=_0x48cb18['id'];this[_0x212b('0x18')]=_0x48cb18[_0x212b('0x5')][_0x212b('0x19')]||'';this[_0x212b('0x1a')]=moment()[_0x212b('0x1b')](_0x212b('0x1c'));this[_0x212b('0x1d')]=_0x48cb18[_0x212b('0x1d')];this[_0x212b('0x1e')]=_0x48cb18[_0x212b('0x1e')];this[_0x212b('0x1f')]=_0x48cb18[_0x212b('0x1f')];this[_0x212b('0x20')]=_0x48cb18['recallme'];this[_0x212b('0x21')]='';this[_0x212b('0x22')]='';}Action[_0x212b('0x23')][_0x212b('0x24')]=function(){return util[_0x212b('0x1b')]('\x22%s\x22\x20<%s>',this[_0x212b('0x4')],this[_0x212b('0x25')][_0x212b('0x26')]>0x0?this['number'][_0x212b('0x27')](this['voiceQueue']['dialCutDigit']):this['number']);};Action['prototype']['getQueue']=function(){return this[_0x212b('0x8')];};module[_0x212b('0x28')]=Action;
\ No newline at end of file
+var _0x582d=['lodash','isNil','string','voiceQueue','uniqueid','name','Contact','phone','firstName','lastName','number','queue','active','type','scheduledat','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','VoiceQueueId','CampaignId','ContactFirstName','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','format','\x22%s\x22\x20<%s>','dialCutDigit','substring','exports','util'];(function(_0x7e2eb0,_0x17cd58){var _0xd92de4=function(_0x5d005b){while(--_0x5d005b){_0x7e2eb0['push'](_0x7e2eb0['shift']());}};_0xd92de4(++_0x17cd58);}(_0x582d,0xc7));var _0xd582=function(_0x57be43,_0x1d0a70){_0x57be43=_0x57be43-0x0;var _0x33fb63=_0x582d[_0x57be43];return _0x33fb63;};'use strict';var util=require(_0xd582('0x0'));var _=require(_0xd582('0x1'));var moment=require('moment');function checkNameSurname(_0x14f9f7,_0x51535b,_0x5817f4){var _0x230f43='';if(!_[_0xd582('0x2')](_0x51535b)&&_0xd582('0x3')===typeof _0x51535b){_0x230f43+=_0x51535b;}if(!_[_0xd582('0x2')](_0x5817f4)&&_0xd582('0x3')===typeof _0x5817f4){_0x230f43+='\x20'+_0x5817f4;}if(_0x230f43!==''){return _0x230f43;}return _0x14f9f7;}function Action(_0x2b1c8e,_0x5d8dbe,_0xcc92e){this[_0xd582('0x4')]=_0x2b1c8e;this[_0xd582('0x5')]=_0xcc92e||undefined;this[_0xd582('0x6')]=checkNameSurname(_0x5d8dbe[_0xd582('0x7')][_0xd582('0x8')],_0x5d8dbe[_0xd582('0x7')][_0xd582('0x9')],_0x5d8dbe[_0xd582('0x7')][_0xd582('0xa')]);this[_0xd582('0xb')]=_0x5d8dbe[_0xd582('0x7')][_0xd582('0x8')];this[_0xd582('0xc')]=_0x2b1c8e['name'];this[_0xd582('0xd')]=_0x5d8dbe['active']||![];this['type']=_0x2b1c8e[_0xd582('0xe')];this['dialQueueTimeout']=_0x2b1c8e['dialQueueTimeout']||0x3;this[_0xd582('0xf')]=_0x5d8dbe['scheduledat'];this['countbusyretry']=_0x5d8dbe[_0xd582('0x10')];this['countcongestionretry']=_0x5d8dbe['countcongestionretry'];this[_0xd582('0x11')]=_0x5d8dbe['countnoanswerretry'];this[_0xd582('0x12')]=_0x5d8dbe['countnosuchnumberretry'];this[_0xd582('0x13')]=_0x5d8dbe[_0xd582('0x13')];this[_0xd582('0x14')]=_0x5d8dbe[_0xd582('0x14')];this[_0xd582('0x15')]=_0x5d8dbe[_0xd582('0x15')];this[_0xd582('0x16')]=_0x5d8dbe['countagentrejectretry'];this[_0xd582('0x17')]=_0x5d8dbe[_0xd582('0x17')];this[_0xd582('0x18')]=_0x5d8dbe[_0xd582('0x18')];this['UserId']=_0x5d8dbe['UserId'];this[_0xd582('0x19')]=_0x5d8dbe[_0xd582('0x19')];this['CampaignId']=_0x5d8dbe[_0xd582('0x1a')];this['idHopper']=_0x5d8dbe['id'];this[_0xd582('0x1b')]=_0x5d8dbe['Contact']['firstName']||'';this['starttime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['callback']=_0x5d8dbe[_0xd582('0x1c')];this[_0xd582('0x1d')]=_0x5d8dbe[_0xd582('0x1d')];this[_0xd582('0x1e')]=_0x5d8dbe['callbackat'];this[_0xd582('0x1f')]=_0x5d8dbe[_0xd582('0x1f')];this[_0xd582('0x20')]='';this[_0xd582('0x21')]='';}Action[_0xd582('0x22')]['getCaller']=function(){return util[_0xd582('0x23')](_0xd582('0x24'),this[_0xd582('0x6')],this[_0xd582('0x4')][_0xd582('0x25')]>0x0?this[_0xd582('0xb')][_0xd582('0x26')](this['voiceQueue'][_0xd582('0x25')]):this[_0xd582('0xb')]);};Action[_0xd582('0x22')]['getQueue']=function(){return this[_0xd582('0xc')];};module[_0xd582('0x27')]=Action;
\ No newline at end of file
index c0c9798..5654f27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x680e=['talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','util','lodash','milliseconds','diff','seconds','state','statedesc','Answer','scheduledat','type','queue','countcongestionretry','countnoanswerretry','countglobal','countbusyretry','countnosuchnumberretry','countmachineretry','countagentrejectretry','countdropretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','number','starttime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime','responsetime'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x680e,0xc1));var _0xe680=function(_0xe36eb9,_0x2bd62e){_0xe36eb9=_0xe36eb9-0x0;var _0x405ad5=_0x680e[_0xe36eb9];return _0x405ad5;};'use strict';var util=require(_0xe680('0x0'));var _=require(_0xe680('0x1'));var moment=require('moment');function getSeconds(_0x10da0b,_0x52a4dc){var _0x55fac3=moment(_0x10da0b)[_0xe680('0x2')](0x0);var _0x3c6c04=moment(_0x52a4dc)[_0xe680('0x2')](0x0);return _0x55fac3[_0xe680('0x3')](_0x3c6c04,_0xe680('0x4'));}function AgentComplete(_0x58665b,_0xf59359){this[_0xe680('0x5')]=0x4;this[_0xe680('0x6')]=_0xe680('0x7');this[_0xe680('0x8')]=_0x58665b['scheduledat'];this[_0xe680('0x9')]=_0x58665b['type'];this['campaigntype']=_0x58665b[_0xe680('0x9')]==='outbound'?_0xe680('0xa'):_0x58665b[_0xe680('0x9')];this['countbusyretry']=_0x58665b['countbusyretry'];this['countcongestionretry']=_0x58665b[_0xe680('0xb')];this['countnoanswerretry']=_0x58665b[_0xe680('0xc')];this[_0xe680('0xd')]=_0x58665b[_0xe680('0xe')]+_0x58665b[_0xe680('0xb')]+_0x58665b['countnoanswerretry']+_0x58665b[_0xe680('0xf')]+_0x58665b['countdropretry']+_0x58665b['countabandonedretry']+_0x58665b[_0xe680('0x10')]+_0x58665b[_0xe680('0x11')];this[_0xe680('0xf')]=_0x58665b[_0xe680('0xf')];this[_0xe680('0x12')]=_0x58665b[_0xe680('0x12')];this['countabandonedretry']=_0x58665b[_0xe680('0x13')];this[_0xe680('0x10')]=_0x58665b[_0xe680('0x10')];this[_0xe680('0x11')]=_0x58665b['countagentrejectretry'];this[_0xe680('0x14')]=_0xf59359[_0xe680('0x14')];this[_0xe680('0x15')]=_0x58665b[_0xe680('0x16')];this[_0xe680('0x17')]=_0x58665b[_0xe680('0x18')];this[_0xe680('0x19')]=_0x58665b['starttime'];this['responsetime']=_0x58665b['responsetime'];this[_0xe680('0x1a')]=_0x58665b[_0xe680('0x1a')];this[_0xe680('0x1b')]=moment()[_0xe680('0x1c')](_0xe680('0x1d'));this['ringtime']=getSeconds(_0x58665b['responsetime'],_0x58665b[_0xe680('0x19')]);this[_0xe680('0x1e')]=getSeconds(_0x58665b['answertime'],_0x58665b[_0xe680('0x1f')]);this[_0xe680('0x20')]=getSeconds(this[_0xe680('0x1b')],_0x58665b[_0xe680('0x1a')]);this[_0xe680('0xa')]=_0xf59359[_0xe680('0xa')];this[_0xe680('0x21')]=_0xf59359['membername'];this['reason']=_0xf59359[_0xe680('0x22')];this[_0xe680('0x23')]=_0x58665b['callback'];this['callbackuniqueid']=_0x58665b[_0xe680('0x24')];this[_0xe680('0x25')]=_0x58665b[_0xe680('0x25')];this[_0xe680('0x26')]=_0x58665b[_0xe680('0x26')];this['ContactId']=_0x58665b[_0xe680('0x27')];this['ListId']=_0x58665b[_0xe680('0x28')];this[_0xe680('0x29')]=_0x58665b['UserId'];this[_0xe680('0x2a')]=_0x58665b['VoiceQueueId'];this[_0xe680('0x2b')]=_0x58665b[_0xe680('0x2b')];this['originatecalleridnum']=_0x58665b[_0xe680('0x2c')]||'';this['originatecalleridname']=_0x58665b['originatecalleridname']||'';}module['exports']=AgentComplete;
\ No newline at end of file
+var _0x4e26=['talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','moment','milliseconds','seconds','state','statedesc','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','number','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime'];(function(_0x5f2b6c,_0x4d0534){var _0x42437b=function(_0x3182c8){while(--_0x3182c8){_0x5f2b6c['push'](_0x5f2b6c['shift']());}};_0x42437b(++_0x4d0534);}(_0x4e26,0x149));var _0x64e2=function(_0xb0c53e,_0x41c2a3){_0xb0c53e=_0xb0c53e-0x0;var _0x121b26=_0x4e26[_0xb0c53e];return _0x121b26;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x64e2('0x0'));function getSeconds(_0x2c7d89,_0x4f1960){var _0x497c05=moment(_0x2c7d89)[_0x64e2('0x1')](0x0);var _0x4b3c49=moment(_0x4f1960)['milliseconds'](0x0);return _0x497c05['diff'](_0x4b3c49,_0x64e2('0x2'));}function AgentComplete(_0x188aa6,_0x47521b){this[_0x64e2('0x3')]=0x4;this[_0x64e2('0x4')]='Answer';this[_0x64e2('0x5')]=_0x188aa6[_0x64e2('0x5')];this[_0x64e2('0x6')]=_0x188aa6[_0x64e2('0x6')];this[_0x64e2('0x7')]=_0x188aa6[_0x64e2('0x6')]===_0x64e2('0x8')?_0x64e2('0x9'):_0x188aa6[_0x64e2('0x6')];this['countbusyretry']=_0x188aa6[_0x64e2('0xa')];this[_0x64e2('0xb')]=_0x188aa6[_0x64e2('0xb')];this[_0x64e2('0xc')]=_0x188aa6[_0x64e2('0xc')];this[_0x64e2('0xd')]=_0x188aa6['countbusyretry']+_0x188aa6[_0x64e2('0xb')]+_0x188aa6[_0x64e2('0xc')]+_0x188aa6[_0x64e2('0xe')]+_0x188aa6[_0x64e2('0xf')]+_0x188aa6[_0x64e2('0x10')]+_0x188aa6[_0x64e2('0x11')]+_0x188aa6[_0x64e2('0x12')];this[_0x64e2('0xe')]=_0x188aa6[_0x64e2('0xe')];this[_0x64e2('0xf')]=_0x188aa6['countdropretry'];this['countabandonedretry']=_0x188aa6['countabandonedretry'];this[_0x64e2('0x11')]=_0x188aa6[_0x64e2('0x11')];this[_0x64e2('0x12')]=_0x188aa6[_0x64e2('0x12')];this[_0x64e2('0x13')]=_0x47521b[_0x64e2('0x13')];this[_0x64e2('0x14')]=_0x188aa6[_0x64e2('0x15')];this['calleridnum']=_0x188aa6[_0x64e2('0x16')];this[_0x64e2('0x17')]=_0x188aa6[_0x64e2('0x17')];this[_0x64e2('0x18')]=_0x188aa6[_0x64e2('0x18')];this[_0x64e2('0x19')]=_0x188aa6[_0x64e2('0x19')];this[_0x64e2('0x1a')]=moment()[_0x64e2('0x1b')](_0x64e2('0x1c'));this[_0x64e2('0x1d')]=getSeconds(_0x188aa6[_0x64e2('0x18')],_0x188aa6['starttime']);this[_0x64e2('0x1e')]=getSeconds(_0x188aa6['answertime'],_0x188aa6[_0x64e2('0x18')]);this[_0x64e2('0x1f')]=getSeconds(this[_0x64e2('0x1a')],_0x188aa6['answertime']);this['queue']=_0x47521b[_0x64e2('0x9')];this[_0x64e2('0x20')]=_0x47521b[_0x64e2('0x20')];this[_0x64e2('0x21')]=_0x47521b['reason'];this[_0x64e2('0x22')]=_0x188aa6[_0x64e2('0x22')];this[_0x64e2('0x23')]=_0x188aa6[_0x64e2('0x23')];this[_0x64e2('0x24')]=_0x188aa6[_0x64e2('0x24')];this['recallme']=_0x188aa6[_0x64e2('0x25')];this[_0x64e2('0x26')]=_0x188aa6[_0x64e2('0x26')];this[_0x64e2('0x27')]=_0x188aa6[_0x64e2('0x27')];this[_0x64e2('0x28')]=_0x188aa6['UserId'];this[_0x64e2('0x29')]=_0x188aa6[_0x64e2('0x29')];this[_0x64e2('0x2a')]=_0x188aa6[_0x64e2('0x2a')];this[_0x64e2('0x2b')]=_0x188aa6[_0x64e2('0x2b')]||'';this[_0x64e2('0x2c')]=_0x188aa6[_0x64e2('0x2c')]||'';}module['exports']=AgentComplete;
\ No newline at end of file
index 0d87aaa..db25c7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','queue','countcongestionretry','countnoanswerretry','countglobal','countbusyretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','calleridname','responsetime','talktime','callbackat','recallme','ContactId','ListId','VoiceQueueId','CampaignId'];(function(_0x285a14,_0x394a27){var _0x3430cc=function(_0x46d2d7){while(--_0x46d2d7){_0x285a14['push'](_0x285a14['shift']());}};_0x3430cc(++_0x394a27);}(_0x008c,0x188));var _0xc008=function(_0x5d9be4,_0x5df4b6){_0x5d9be4=_0x5d9be4-0x0;var _0x44650b=_0x008c[_0x5d9be4];return _0x44650b;};'use strict';var util=require(_0xc008('0x0'));var _=require(_0xc008('0x1'));var moment=require(_0xc008('0x2'));function getSeconds(_0xae17af,_0x1d119a){var _0x544fdf=moment(_0xae17af)[_0xc008('0x3')](0x0);var _0x47063f=moment(_0x1d119a)[_0xc008('0x3')](0x0);return _0x544fdf[_0xc008('0x4')](_0x47063f,_0xc008('0x5'));}function Final(_0x1679e0){this[_0xc008('0x6')]=_0x1679e0[_0xc008('0x6')];this[_0xc008('0x7')]=_0x1679e0['scheduledat'];this[_0xc008('0x8')]=_0x1679e0['type'];this[_0xc008('0x9')]=_0x1679e0['type']==='outbound'?_0xc008('0xa'):_0x1679e0[_0xc008('0x8')];this['countbusyretry']=_0x1679e0['countbusyretry'];this['countcongestionretry']=_0x1679e0[_0xc008('0xb')];this[_0xc008('0xc')]=_0x1679e0['countnoanswerretry'];this[_0xc008('0xd')]=_0x1679e0[_0xc008('0xe')]+_0x1679e0[_0xc008('0xb')]+_0x1679e0[_0xc008('0xc')]+_0x1679e0[_0xc008('0xf')]+_0x1679e0[_0xc008('0x10')]+_0x1679e0[_0xc008('0x11')]+_0x1679e0['countmachineretry']+_0x1679e0['countagentrejectretry'];this[_0xc008('0xf')]=_0x1679e0['countnosuchnumberretry'];this[_0xc008('0x10')]=_0x1679e0[_0xc008('0x10')];this[_0xc008('0x11')]=_0x1679e0[_0xc008('0x11')];this[_0xc008('0x12')]=_0x1679e0['countmachineretry'];this['countagentrejectretry']=_0x1679e0['countagentrejectretry'];this[_0xc008('0xa')]=_0x1679e0[_0xc008('0xa')];this[_0xc008('0x13')]=_0x1679e0[_0xc008('0x13')];this['calleridnum']=_0x1679e0['calleridnum'];this['starttime']=_0x1679e0['starttime'];this[_0xc008('0x14')]=_0x1679e0[_0xc008('0x14')];this['endtime']=_0x1679e0[_0xc008('0x14')];this['ringtime']=_0x1679e0['ringtime']||0x0;this['holdtime']=_0x1679e0['holdtime']||0x0;this[_0xc008('0x15')]=_0x1679e0['talktime']||0x0;this['callback']=_0x1679e0['callback'];this['callbackuniqueid']=_0x1679e0['callbackuniqueid'];this[_0xc008('0x16')]=_0x1679e0[_0xc008('0x16')];this[_0xc008('0x17')]=_0x1679e0[_0xc008('0x17')];this[_0xc008('0x18')]=_0x1679e0[_0xc008('0x18')];this['ListId']=_0x1679e0[_0xc008('0x19')];this['UserId']=_0x1679e0['UserId'];this[_0xc008('0x1a')]=_0x1679e0[_0xc008('0x1a')];this[_0xc008('0x1b')]=_0x1679e0[_0xc008('0x1b')];this['originatecalleridnum']=_0x1679e0['originatecalleridnum']||'';this['originatecalleridname']=_0x1679e0[_0xc008('0x1c')]||'';}module[_0xc008('0x1d')]=Final;
\ No newline at end of file
+var _0x919e=['CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countagentrejectretry','countabandonedretry','countmachineretry','calleridname','calleridnum','responsetime','endtime','holdtime','talktime','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId'];(function(_0x10d456,_0x2b4359){var _0x3cf281=function(_0x13572f){while(--_0x13572f){_0x10d456['push'](_0x10d456['shift']());}};_0x3cf281(++_0x2b4359);}(_0x919e,0x1d7));var _0xe919=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x919e[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xe919('0x0'));var _=require(_0xe919('0x1'));var moment=require(_0xe919('0x2'));function getSeconds(_0x5d7d06,_0x115b01){var _0x55cc54=moment(_0x5d7d06)['milliseconds'](0x0);var _0x455cff=moment(_0x115b01)[_0xe919('0x3')](0x0);return _0x55cc54[_0xe919('0x4')](_0x455cff,_0xe919('0x5'));}function Final(_0x2171e9){this[_0xe919('0x6')]=_0x2171e9[_0xe919('0x6')];this['scheduledat']=_0x2171e9[_0xe919('0x7')];this[_0xe919('0x8')]=_0x2171e9['type'];this[_0xe919('0x9')]=_0x2171e9['type']===_0xe919('0xa')?_0xe919('0xb'):_0x2171e9[_0xe919('0x8')];this['countbusyretry']=_0x2171e9[_0xe919('0xc')];this[_0xe919('0xd')]=_0x2171e9[_0xe919('0xd')];this['countnoanswerretry']=_0x2171e9[_0xe919('0xe')];this['countglobal']=_0x2171e9['countbusyretry']+_0x2171e9['countcongestionretry']+_0x2171e9[_0xe919('0xe')]+_0x2171e9[_0xe919('0xf')]+_0x2171e9[_0xe919('0x10')]+_0x2171e9['countabandonedretry']+_0x2171e9['countmachineretry']+_0x2171e9[_0xe919('0x11')];this[_0xe919('0xf')]=_0x2171e9['countnosuchnumberretry'];this[_0xe919('0x10')]=_0x2171e9[_0xe919('0x10')];this[_0xe919('0x12')]=_0x2171e9[_0xe919('0x12')];this[_0xe919('0x13')]=_0x2171e9[_0xe919('0x13')];this[_0xe919('0x11')]=_0x2171e9['countagentrejectretry'];this[_0xe919('0xb')]=_0x2171e9['queue'];this['calleridname']=_0x2171e9[_0xe919('0x14')];this[_0xe919('0x15')]=_0x2171e9['calleridnum'];this['starttime']=_0x2171e9['starttime'];this[_0xe919('0x16')]=_0x2171e9[_0xe919('0x16')];this[_0xe919('0x17')]=_0x2171e9[_0xe919('0x16')];this['ringtime']=_0x2171e9['ringtime']||0x0;this[_0xe919('0x18')]=_0x2171e9[_0xe919('0x18')]||0x0;this[_0xe919('0x19')]=_0x2171e9[_0xe919('0x19')]||0x0;this['callback']=_0x2171e9[_0xe919('0x1a')];this[_0xe919('0x1b')]=_0x2171e9['callbackuniqueid'];this['callbackat']=_0x2171e9[_0xe919('0x1c')];this['recallme']=_0x2171e9['recallme'];this[_0xe919('0x1d')]=_0x2171e9[_0xe919('0x1d')];this['ListId']=_0x2171e9[_0xe919('0x1e')];this[_0xe919('0x1f')]=_0x2171e9[_0xe919('0x1f')];this[_0xe919('0x20')]=_0x2171e9['VoiceQueueId'];this[_0xe919('0x21')]=_0x2171e9[_0xe919('0x21')];this[_0xe919('0x22')]=_0x2171e9['originatecalleridnum']||'';this[_0xe919('0x23')]=_0x2171e9[_0xe919('0x23')]||'';}module['exports']=Final;
\ No newline at end of file
index 51431ee..eac11df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2afc=['number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','membername','IVR','reason','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','CampaignId','util','moment','milliseconds','diff','seconds','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countagentrejectretry','countdropretry','countabandonedretry','countmachineretry','uniqueid','calleridname','name'];(function(_0x18e52b,_0x1fae35){var _0x3d3062=function(_0x133b14){while(--_0x133b14){_0x18e52b['push'](_0x18e52b['shift']());}};_0x3d3062(++_0x1fae35);}(_0x2afc,0x64));var _0xc2af=function(_0x2ae8ce,_0x2a5a1f){_0x2ae8ce=_0x2ae8ce-0x0;var _0x4bf686=_0x2afc[_0x2ae8ce];return _0x4bf686;};'use strict';var util=require(_0xc2af('0x0'));var _=require('lodash');var moment=require(_0xc2af('0x1'));function getSeconds(_0x1ac9fa,_0x276728){var _0x49e2ad=moment(_0x1ac9fa)['milliseconds'](0x0);var _0x2c40b2=moment(_0x276728)[_0xc2af('0x2')](0x0);return _0x49e2ad[_0xc2af('0x3')](_0x2c40b2,_0xc2af('0x4'));}function Hangup(_0x4b9346,_0x43e299){this['state']=0x4;this['statedesc']=_0xc2af('0x5');this[_0xc2af('0x6')]=_0x4b9346[_0xc2af('0x6')];this[_0xc2af('0x7')]=_0x4b9346['type'];this[_0xc2af('0x8')]=_0x4b9346[_0xc2af('0x7')]===_0xc2af('0x9')?_0xc2af('0xa'):_0x4b9346[_0xc2af('0x7')];this[_0xc2af('0xb')]=_0x4b9346['countbusyretry'];this['countcongestionretry']=_0x4b9346[_0xc2af('0xc')];this[_0xc2af('0xd')]=_0x4b9346[_0xc2af('0xd')];this[_0xc2af('0xe')]=_0x4b9346[_0xc2af('0xb')]+_0x4b9346['countcongestionretry']+_0x4b9346['countnoanswerretry']+_0x4b9346[_0xc2af('0xf')]+_0x4b9346['countdropretry']+_0x4b9346['countabandonedretry']+_0x4b9346['countmachineretry']+_0x4b9346[_0xc2af('0x10')];this[_0xc2af('0xf')]=_0x4b9346[_0xc2af('0xf')];this[_0xc2af('0x11')]=_0x4b9346[_0xc2af('0x11')];this[_0xc2af('0x12')]=_0x4b9346['countabandonedretry'];this['countmachineretry']=_0x4b9346[_0xc2af('0x13')];this[_0xc2af('0x10')]=_0x4b9346[_0xc2af('0x10')];this['uniqueid']=_0x43e299[_0xc2af('0x14')];this[_0xc2af('0x15')]=_0x4b9346[_0xc2af('0x16')];this['calleridnum']=_0x4b9346[_0xc2af('0x17')];this[_0xc2af('0x18')]=_0x4b9346[_0xc2af('0x18')];this[_0xc2af('0x19')]=_0x4b9346['responsetime'];this[_0xc2af('0x1a')]=moment()[_0xc2af('0x1b')](_0xc2af('0x1c'));this['ringtime']=getSeconds(_0x4b9346[_0xc2af('0x19')],_0x4b9346['starttime']);this[_0xc2af('0x1d')]=0x0;this[_0xc2af('0x1e')]=getSeconds(this[_0xc2af('0x1a')],_0x4b9346[_0xc2af('0x19')]);this[_0xc2af('0xa')]=_0x4b9346[_0xc2af('0xa')];this[_0xc2af('0x1f')]=_0xc2af('0x20');this[_0xc2af('0x21')]=_0x43e299['cause-txt'];this[_0xc2af('0x22')]=_0x4b9346[_0xc2af('0x22')];this['callbackuniqueid']=_0x4b9346[_0xc2af('0x23')];this['callbackat']=_0x4b9346['callbackat'];this['recallme']=_0x4b9346[_0xc2af('0x24')];this[_0xc2af('0x25')]=_0x4b9346[_0xc2af('0x25')];this[_0xc2af('0x26')]=_0x4b9346['ListId'];this[_0xc2af('0x27')]=_0x4b9346['UserId'];this['VoiceQueueId']=_0x4b9346['VoiceQueueId'];this[_0xc2af('0x28')]=_0x4b9346['CampaignId'];}module['exports']=Hangup;
\ No newline at end of file
+var _0xb069=['callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','milliseconds','diff','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countdropretry','countagentrejectretry','uniqueid','calleridname','number','starttime','responsetime','endtime','format','ringtime','holdtime','talktime','reason','cause-txt','callback','callbackuniqueid'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb069,0xdf));var _0x9b06=function(_0x1f3843,_0x523c5b){_0x1f3843=_0x1f3843-0x0;var _0x5a63ef=_0xb069[_0x1f3843];return _0x5a63ef;};'use strict';var util=require(_0x9b06('0x0'));var _=require(_0x9b06('0x1'));var moment=require('moment');function getSeconds(_0x17b56d,_0x3786d5){var _0x3f1d66=moment(_0x17b56d)[_0x9b06('0x2')](0x0);var _0x3707c4=moment(_0x3786d5)[_0x9b06('0x2')](0x0);return _0x3f1d66[_0x9b06('0x3')](_0x3707c4,'seconds');}function Hangup(_0x419b09,_0x4000c6){this[_0x9b06('0x4')]=0x4;this[_0x9b06('0x5')]=_0x9b06('0x6');this[_0x9b06('0x7')]=_0x419b09['scheduledat'];this[_0x9b06('0x8')]=_0x419b09[_0x9b06('0x8')];this[_0x9b06('0x9')]=_0x419b09[_0x9b06('0x8')]===_0x9b06('0xa')?_0x9b06('0xb'):_0x419b09[_0x9b06('0x8')];this[_0x9b06('0xc')]=_0x419b09[_0x9b06('0xc')];this['countcongestionretry']=_0x419b09[_0x9b06('0xd')];this[_0x9b06('0xe')]=_0x419b09[_0x9b06('0xe')];this[_0x9b06('0xf')]=_0x419b09['countbusyretry']+_0x419b09[_0x9b06('0xd')]+_0x419b09[_0x9b06('0xe')]+_0x419b09[_0x9b06('0x10')]+_0x419b09['countdropretry']+_0x419b09[_0x9b06('0x11')]+_0x419b09[_0x9b06('0x12')]+_0x419b09['countagentrejectretry'];this[_0x9b06('0x10')]=_0x419b09['countnosuchnumberretry'];this[_0x9b06('0x13')]=_0x419b09[_0x9b06('0x13')];this[_0x9b06('0x11')]=_0x419b09['countabandonedretry'];this['countmachineretry']=_0x419b09['countmachineretry'];this[_0x9b06('0x14')]=_0x419b09[_0x9b06('0x14')];this[_0x9b06('0x15')]=_0x4000c6[_0x9b06('0x15')];this[_0x9b06('0x16')]=_0x419b09['name'];this['calleridnum']=_0x419b09[_0x9b06('0x17')];this[_0x9b06('0x18')]=_0x419b09[_0x9b06('0x18')];this[_0x9b06('0x19')]=_0x419b09[_0x9b06('0x19')];this[_0x9b06('0x1a')]=moment()[_0x9b06('0x1b')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x9b06('0x1c')]=getSeconds(_0x419b09[_0x9b06('0x19')],_0x419b09[_0x9b06('0x18')]);this[_0x9b06('0x1d')]=0x0;this[_0x9b06('0x1e')]=getSeconds(this[_0x9b06('0x1a')],_0x419b09[_0x9b06('0x19')]);this['queue']=_0x419b09[_0x9b06('0xb')];this['membername']='IVR';this[_0x9b06('0x1f')]=_0x4000c6[_0x9b06('0x20')];this[_0x9b06('0x21')]=_0x419b09[_0x9b06('0x21')];this[_0x9b06('0x22')]=_0x419b09['callbackuniqueid'];this['callbackat']=_0x419b09[_0x9b06('0x23')];this[_0x9b06('0x24')]=_0x419b09[_0x9b06('0x24')];this[_0x9b06('0x25')]=_0x419b09[_0x9b06('0x25')];this[_0x9b06('0x26')]=_0x419b09[_0x9b06('0x26')];this[_0x9b06('0x27')]=_0x419b09['UserId'];this[_0x9b06('0x28')]=_0x419b09[_0x9b06('0x28')];this[_0x9b06('0x29')]=_0x419b09[_0x9b06('0x29')];}module[_0x9b06('0x2a')]=Hangup;
\ No newline at end of file
index f18fc78..9d52ea5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1694=['uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridnum','number','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','diff','seconds'];(function(_0x30a6b6,_0x5e34a){var _0xdb400c=function(_0x5dfa0a){while(--_0x5dfa0a){_0x30a6b6['push'](_0x30a6b6['shift']());}};_0xdb400c(++_0x5e34a);}(_0x1694,0x163));var _0x4169=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0x1694[_0x4709c0];return _0x13348b;};'use strict';var util=require(_0x4169('0x0'));var _=require(_0x4169('0x1'));var moment=require(_0x4169('0x2'));function getSeconds(_0x1cc03e,_0x18db89){var _0x11d3f4=moment(_0x1cc03e)['milliseconds'](0x0);var _0x4f106e=moment(_0x18db89)['milliseconds'](0x0);return _0x11d3f4[_0x4169('0x3')](_0x4f106e,_0x4169('0x4'));}function History(_0x225855){this[_0x4169('0x5')]=_0x225855[_0x4169('0x5')];this[_0x4169('0x6')]=_0x225855[_0x4169('0x6')]||undefined;this['type']=_0x225855[_0x4169('0x7')];this[_0x4169('0x8')]=_0x225855[_0x4169('0x7')]===_0x4169('0x9')?_0x4169('0xa'):_0x225855[_0x4169('0x7')];this[_0x4169('0xb')]=_0x225855['countbusyretry'];this[_0x4169('0xc')]=_0x225855[_0x4169('0xc')];this[_0x4169('0xd')]=_0x225855[_0x4169('0xd')];this[_0x4169('0xe')]=_0x225855[_0x4169('0xb')]+_0x225855[_0x4169('0xc')]+_0x225855['countnoanswerretry']+_0x225855[_0x4169('0xf')]+_0x225855[_0x4169('0x10')]+_0x225855[_0x4169('0x11')]+_0x225855[_0x4169('0x12')]+_0x225855[_0x4169('0x13')];this[_0x4169('0xf')]=_0x225855[_0x4169('0xf')];this[_0x4169('0x10')]=_0x225855['countdropretry'];this[_0x4169('0x11')]=_0x225855[_0x4169('0x11')];this['countmachineretry']=_0x225855[_0x4169('0x12')];this[_0x4169('0x13')]=_0x225855['countagentrejectretry'];this[_0x4169('0xa')]=_0x225855[_0x4169('0xa')];this['calleridname']=_0x225855['name'];this[_0x4169('0x14')]=_0x225855[_0x4169('0x15')];this[_0x4169('0x16')]=_0x225855[_0x4169('0x16')];this[_0x4169('0x17')]=_0x225855[_0x4169('0x17')];this[_0x4169('0x18')]=_0x225855['responsetime'];this[_0x4169('0x19')]=getSeconds(_0x225855[_0x4169('0x17')],_0x225855[_0x4169('0x16')]);this[_0x4169('0x1a')]=0x0;this[_0x4169('0x1b')]=0x0;this[_0x4169('0x1c')]=_0x225855['callback'];this[_0x4169('0x1d')]=_0x225855[_0x4169('0x1d')];this[_0x4169('0x1e')]=_0x225855['callbackat'];this[_0x4169('0x1f')]=_0x225855[_0x4169('0x1f')];this[_0x4169('0x20')]=_0x225855['ContactId'];this['ListId']=_0x225855[_0x4169('0x21')];this[_0x4169('0x22')]=_0x225855[_0x4169('0x22')];this[_0x4169('0x23')]=_0x225855['VoiceQueueId'];this[_0x4169('0x24')]=_0x225855[_0x4169('0x24')];this[_0x4169('0x25')]=_0x225855['originatecalleridnum']||'';this[_0x4169('0x26')]=_0x225855[_0x4169('0x26')]||'';}module[_0x4169('0x27')]=History;
\ No newline at end of file
+var _0xdc80=['scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','name','calleridnum','number','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','uniqueid'];(function(_0x42f009,_0x5e27b1){var _0x22a1e0=function(_0x297993){while(--_0x297993){_0x42f009['push'](_0x42f009['shift']());}};_0x22a1e0(++_0x5e27b1);}(_0xdc80,0x10b));var _0x0dc8=function(_0x35f7f5,_0x4e2ee1){_0x35f7f5=_0x35f7f5-0x0;var _0x5567a4=_0xdc80[_0x35f7f5];return _0x5567a4;};'use strict';var util=require(_0x0dc8('0x0'));var _=require(_0x0dc8('0x1'));var moment=require(_0x0dc8('0x2'));function getSeconds(_0x55da78,_0x595d45){var _0x3cced9=moment(_0x55da78)[_0x0dc8('0x3')](0x0);var _0x349f48=moment(_0x595d45)[_0x0dc8('0x3')](0x0);return _0x3cced9[_0x0dc8('0x4')](_0x349f48,'seconds');}function History(_0x42030b){this['uniqueid']=_0x42030b[_0x0dc8('0x5')];this[_0x0dc8('0x6')]=_0x42030b[_0x0dc8('0x6')]||undefined;this[_0x0dc8('0x7')]=_0x42030b[_0x0dc8('0x7')];this[_0x0dc8('0x8')]=_0x42030b[_0x0dc8('0x7')]===_0x0dc8('0x9')?_0x0dc8('0xa'):_0x42030b['type'];this[_0x0dc8('0xb')]=_0x42030b[_0x0dc8('0xb')];this[_0x0dc8('0xc')]=_0x42030b['countcongestionretry'];this[_0x0dc8('0xd')]=_0x42030b[_0x0dc8('0xd')];this['countglobal']=_0x42030b[_0x0dc8('0xb')]+_0x42030b['countcongestionretry']+_0x42030b[_0x0dc8('0xd')]+_0x42030b[_0x0dc8('0xe')]+_0x42030b[_0x0dc8('0xf')]+_0x42030b[_0x0dc8('0x10')]+_0x42030b[_0x0dc8('0x11')]+_0x42030b[_0x0dc8('0x12')];this['countnosuchnumberretry']=_0x42030b['countnosuchnumberretry'];this[_0x0dc8('0xf')]=_0x42030b[_0x0dc8('0xf')];this['countabandonedretry']=_0x42030b['countabandonedretry'];this['countmachineretry']=_0x42030b[_0x0dc8('0x11')];this['countagentrejectretry']=_0x42030b[_0x0dc8('0x12')];this[_0x0dc8('0xa')]=_0x42030b[_0x0dc8('0xa')];this['calleridname']=_0x42030b[_0x0dc8('0x13')];this[_0x0dc8('0x14')]=_0x42030b[_0x0dc8('0x15')];this[_0x0dc8('0x16')]=_0x42030b[_0x0dc8('0x16')];this['responsetime']=_0x42030b[_0x0dc8('0x17')];this[_0x0dc8('0x18')]=_0x42030b[_0x0dc8('0x17')];this[_0x0dc8('0x19')]=getSeconds(_0x42030b[_0x0dc8('0x17')],_0x42030b[_0x0dc8('0x16')]);this[_0x0dc8('0x1a')]=0x0;this[_0x0dc8('0x1b')]=0x0;this[_0x0dc8('0x1c')]=_0x42030b['callback'];this['callbackuniqueid']=_0x42030b[_0x0dc8('0x1d')];this['callbackat']=_0x42030b[_0x0dc8('0x1e')];this[_0x0dc8('0x1f')]=_0x42030b[_0x0dc8('0x1f')];this[_0x0dc8('0x20')]=_0x42030b[_0x0dc8('0x20')];this[_0x0dc8('0x21')]=_0x42030b[_0x0dc8('0x21')];this[_0x0dc8('0x22')]=_0x42030b[_0x0dc8('0x22')];this['VoiceQueueId']=_0x42030b[_0x0dc8('0x23')];this[_0x0dc8('0x24')]=_0x42030b[_0x0dc8('0x24')];this['originatecalleridnum']=_0x42030b[_0x0dc8('0x25')]||'';this[_0x0dc8('0x26')]=_0x42030b[_0x0dc8('0x26')]||'';}module['exports']=History;
\ No newline at end of file
index 386c538..58d95e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a55=['getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[updateOriginated]\x20object\x20originated\x20is\x20negative','loggerHandler','emptyContact','notFound','saveInDb','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','isSuccess','isTrunkReachable','SIP/%s','reachable','unmonitored','syncVarSet','uniqueId','uniqueid','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','HangupInAMD','membername','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','MACHINE','Machine','AMD','countmachineretry','[syncAgentComplete][createHistory][0]','countbusyretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','rescheduleContact','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countglobal','add','dialMachineRetryFrequency','minutes','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','dialQueueProject','AnswerAGI','AGI','[syncHangupIvr]','Unknow','reason','agent','agiafterat','dialAgiAfterHangupAgent','[syncAgentComplete]','syncAgentConnect','answertime','[syncAgentComplete][createHistory]','[syncQueueCallerAbandon]\x20[Drop]','syncQueueCallerAbandon','droptime','responsetime','dialQueueTimeout','dropreason','dialQueueProject2','queueCallerAbandonCreateState','countdropretry','dialDropRetryFrequency','[rescheduleContact][Drop]','endtime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','CALLEREXIT','Abandoned','[syncAgentComplete][createHistory][11]','channel','actions','actionid','stateinterface','locked','push','idHopper','paused','[unlockQueueStatus][undefined]','queueStatusComplete','[booked][unlockQueueStatus]','pick','run','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','[booked][RR]','contactAgent-idHopper:\x20','[Catch][Preview][syncQueueStatusComplete]','[booked][RR][finaly]','Agent:\x20','[booked][unlock]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','syncCampaigns','checkIsTrunkReachable','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','Failure','\x20Intervals\x20is\x20empty\x20','timezones','\x20Timezone\x20unknow\x20','Action','command','iftime\x20%s,%s','interval','content','indexOf','true','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','Timezone:\x20','checkDialMethod','dialMethod','progressive','handlePower','power','dialPowerLevel','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','dialGlobalInterval','dialTimezone','checkIfTimeIntervals','[syncQueueSummary]','[syncCampaigns]','\x5cw{0,','pow','replace','match','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','ACTIVE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDTOTALANALYSISTIME','XMD-AMDBETWEENWORDSSILENCE','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','tags','updatedAt','%s%s','XMD-','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','originatecalleridname','SIP/%s/%s%s','dialPrefix','dialCutDigit','substring','from-sip','[originateError]:\x20%s','OriginateError','getQueue','response','callProgressDetecting','[callProgressDetecting]\x20','countcongestionretry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','evt\x20is\x20undefine','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','checkRetriveMax','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','[syncAgentComplete][createHistory][5]','custom:agentcongestion','congestion','reason\x208\x20congestion','reason\x2011\x20abandoned','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','[syncAgentComplete][createHistory][?]','Global','Success','[moveContactManagedDialer][0]','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','erlangCalls','predictiveIntervalHitRate','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','predictiveIntervalErlangCallsDroppedCalls','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at',')\x20are\x20less\x20than\x20threshold\x20(','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(','busyFactor','[getDataPredictive]','check\x20failure','loggedIn','outboundQueuePauses','abandonmentRate','[CatchErlangB]','agentBusyFactor','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','[booked][checkContactBlack][else]','Queue:\x20','[unlockOriginate][syncQueueStatusComplete]','scheduledat','dialRecallMeTimeout','Agent','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','floor','dialLimitQueue','not_inuse','RUNNING','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','--------\x20Drop\x20Rate\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','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','p\x20=\x20','interval\x20=\x20','----\x20Agent\x20Busy\x20Factor\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','util','bluebird','uuid','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','syncQueueSummary','redis','defaults','localhost','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./final','./agentComplete','./queueCallerAbandon','env','XCALLY_IP_AGI','rrmemory','roundrobin','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','contactsId','optionPredictive','startProgressive','ivrOriginated','queueBooked','agentconnect','bind','syncOriginateResponse','agentcomplete','syncAgentComplete','syncHangup','newexten','syncNewExten','varset','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','isUndefined','message','AGENTS_NOT_LOGGED','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','name','Intervals','\x20INTERVAL_IS_NULL','isEmpty','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','emit','type','outbound','strategy','answered','pTalking','sumBillable','sumHoldTime','talking','unmanaged','abandoned','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','active','callerid','voice:queue:%s','voice_queue:save','ivr','format','campaign:ivr:%s','campaign:save','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','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---------','erlangCallToSecond','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','stack','length','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','AVAILABLE_CONTACTS_FINISHED','sendMessageOneNotActive','waiting','available','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','statedesc','starttime','clearZombieChannels','[uniqueid]','[actions]','undefined','isNil','status','No\x20such\x20channel','[Dialer][checkChannel]','updateOriginated','queue','[Dialer][checkChannel][ivr]','countReScheduled','resolve','catch','[countReScheduled]\x20','then','checkIsBlackList','checkIsBlackListIvr','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','[rescheduleContact]\x20','unlockContact','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20'];(function(_0x242487,_0x41cbe7){var _0x288378=function(_0x5255c4){while(--_0x5255c4){_0x242487['push'](_0x242487['shift']());}};_0x288378(++_0x41cbe7);}(_0x6a55,0x154));var _0x56a5=function(_0x89a001,_0x3a9a8c){_0x89a001=_0x89a001-0x0;var _0x5f3ec2=_0x6a55[_0x89a001];return _0x5f3ec2;};'use strict';var util=require(_0x56a5('0x0'));var _=require('lodash');var BPromise=require(_0x56a5('0x1'));var uuid=require(_0x56a5('0x2'));var moment=require('moment');var rr=require('rr');var md5=require(_0x56a5('0x3'));var Redis=require(_0x56a5('0x4'));var ut=require(_0x56a5('0x5'));var config=require(_0x56a5('0x6'));var logger=require(_0x56a5('0x7'))(_0x56a5('0x8'));var loggerBooked=require(_0x56a5('0x7'))(_0x56a5('0x9'));var loggerPredictive=require(_0x56a5('0x7'))(_0x56a5('0xa'));var loggerPredictiveCalls=require(_0x56a5('0x7'))(_0x56a5('0xb'));var loggerSyncQueueSummary=require(_0x56a5('0x7'))(_0x56a5('0xc'));var ami=require('../ami');config[_0x56a5('0xd')]=_[_0x56a5('0xe')](config['redis'],{'host':_0x56a5('0xf'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var cmHopper=require(_0x56a5('0x10'));var cmHopperHistory=require(_0x56a5('0x11'));var cmHopperBlack=require(_0x56a5('0x12'));var voiceQueueRt=require(_0x56a5('0x13'));var Action=require(_0x56a5('0x14'));var History=require(_0x56a5('0x15'));var Final=require(_0x56a5('0x16'));var AgentComplete=require(_0x56a5('0x17'));var QueueCallerAbandon=require(_0x56a5('0x18'));var Hangup=require('./hangup');var ipAgi=process[_0x56a5('0x19')][_0x56a5('0x1a')]||'127.0.0.1';var strategy={'rrmemory':_0x56a5('0x1b'),'roundrobin':_0x56a5('0x1c')};var Sequence=function(){};Sequence[_0x56a5('0x1d')][_0x56a5('0x1e')]=function(_0x5690fb){this[_0x56a5('0x1f')]=this[_0x56a5('0x1f')]?this[_0x56a5('0x1f')][_0x56a5('0x20')](_0x5690fb):_0x5690fb();};function Dialer(_0x1e06c9,_0x354284){this[_0x56a5('0x21')]=new Sequence();this[_0x56a5('0x22')]=_0x354284;this[_0x56a5('0x23')]=_0x1e06c9['voiceQueues'];this['campaigns']=_0x1e06c9[_0x56a5('0x24')];this['agents']=_0x1e06c9[_0x56a5('0x25')];this[_0x56a5('0x26')]=_0x1e06c9[_0x56a5('0x26')];this[_0x56a5('0x27')]=config[_0x56a5('0x27')]||0x2;this['channels']={};this['actions']={};this[_0x56a5('0x28')]={};this['uniqueId']={};this[_0x56a5('0x29')]={};this['startPredictive']={};this[_0x56a5('0x2a')]={};this[_0x56a5('0x2b')]={};this[_0x56a5('0x2c')]={};this['queueBookedRR']={};ami['on'](_0x56a5('0x2d'),this['syncAgentConnect'][_0x56a5('0x2e')](this));ami['on']('queuecallerabandon',this['syncQueueCallerAbandon'][_0x56a5('0x2e')](this));ami['on']('originateresponse',this[_0x56a5('0x2f')]['bind'](this));ami['on'](_0x56a5('0x30'),this[_0x56a5('0x31')][_0x56a5('0x2e')](this));ami['on']('custom:queuesummary',this[_0x56a5('0xc')][_0x56a5('0x2e')](this));ami['on']('hangup',this[_0x56a5('0x32')][_0x56a5('0x2e')](this));ami['on'](_0x56a5('0x33'),this[_0x56a5('0x34')][_0x56a5('0x2e')](this));ami['on'](_0x56a5('0x35'),this['syncVarSet'][_0x56a5('0x2e')](this));ami['on']('queuemember',this[_0x56a5('0x36')][_0x56a5('0x2e')](this));ami['on'](_0x56a5('0x37'),this[_0x56a5('0x38')][_0x56a5('0x2e')](this));this[_0x56a5('0x39')]();this['loopClearZombieChannels']();}function isNotNull(_0x1ee1d7){return _0x1ee1d7!==null&&!_[_0x56a5('0x3a')](_0x1ee1d7);}function checkIsLoggedIn(_0x2e431c,_0x5036cc){return function(){if(_0x5036cc<=0x0){_0x2e431c[_0x56a5('0x3b')]=_0x56a5('0x3c');throw _0x2e431c['name']+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0x45c51d){return _0x45c51d;}function checkIsActive(_0xa18865,_0xace165){return function(){if(!isActive(_0xace165)){_0xa18865['message']=_0x56a5('0x3d');throw _0xa18865['name']+_0x56a5('0x3e');}};}function checkInterval(_0x26f514){return function(){if(!isNotNull(_0x26f514[_0x56a5('0x3f')])){_0x26f514[_0x56a5('0x3b')]=_0x56a5('0x40');throw _0x26f514[_0x56a5('0x41')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_0x26f514['Interval'][_0x56a5('0x42')])){_0x26f514[_0x56a5('0x3b')]='INTERVAL_IS_NULL';throw _0x26f514[_0x56a5('0x41')]+_0x56a5('0x43');}if(!isNotNull(_[_0x56a5('0x44')](_0x26f514['Interval'][_0x56a5('0x42')]))){_0x26f514[_0x56a5('0x3b')]=_0x56a5('0x40');throw _0x26f514[_0x56a5('0x41')]+_0x56a5('0x43');}};}function msgResponse(_0x41db6d,_0x4e2fdf,_0x101765){return{'action':_0x41db6d,'response':_0x4e2fdf,'message':_0x101765,'stack':_0x101765};}function myreject(_0x615365){return function(_0x5213fb){return _0x615365(msgResponse(_0x56a5('0x45'),_0x56a5('0x46'),JSON[_0x56a5('0x47')](_0x5213fb)));};}function getSeconds(_0x3cf10d,_0x4cf524){var _0x34bb40=moment(_0x3cf10d)[_0x56a5('0x48')](0x0);var _0x3174bd=moment(_0x4cf524)[_0x56a5('0x48')](0x0);return _0x34bb40[_0x56a5('0x49')](_0x3174bd,_0x56a5('0x4a'));}function emit(_0x47a8fe,_0x47b8e0,_0x17d647){io['to'](_0x47a8fe)[_0x56a5('0x4b')](_0x47b8e0,_0x17d647);}function emitVoiceQueueSummary(_0x268f9c){if(_0x268f9c[_0x56a5('0x4c')]===_0x56a5('0x4d')){var _0x41bd0b={'id':_0x268f9c['id'],'name':_0x268f9c['name'],'strategy':_0x268f9c[_0x56a5('0x4e')],'answered':_0x268f9c[_0x56a5('0x4f')],'available':_0x268f9c['available'],'loggedIn':_0x268f9c['loggedIn'],'pTalking':_0x268f9c[_0x56a5('0x50')],'sumBillable':_0x268f9c[_0x56a5('0x51')],'sumDuration':_0x268f9c['sumDuration'],'sumHoldTime':_0x268f9c[_0x56a5('0x52')]||0x0,'talking':_0x268f9c[_0x56a5('0x53')],'total':_0x268f9c['total'],'type':_0x268f9c[_0x56a5('0x4c')],'unmanaged':_0x268f9c[_0x56a5('0x54')],'abandoned':_0x268f9c[_0x56a5('0x55')],'waiting':_0x268f9c['waiting'],'loggedInDb':_0x268f9c[_0x56a5('0x56')],'dialActive':_0x268f9c[_0x56a5('0x57')],'dialMethod':_0x268f9c['dialMethod'],'dialOriginateCallerIdName':_0x268f9c[_0x56a5('0x58')],'dialOriginateCallerIdNumber':_0x268f9c['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x268f9c[_0x56a5('0x59')],'dialPrefix':_0x268f9c['dialPrefix'],'outboundAnswerAgiCallsDay':_0x268f9c[_0x56a5('0x5a')],'outboundAnswerCallsDay':_0x268f9c[_0x56a5('0x5b')],'outboundBlacklistCallsDay':_0x268f9c[_0x56a5('0x5c')],'outboundBusyCallsDay':_0x268f9c['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x268f9c[_0x56a5('0x5d')],'outboundDropCallsDayACS':_0x268f9c['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x268f9c[_0x56a5('0x5e')],'outboundDropCallsDayTimeout':_0x268f9c[_0x56a5('0x5f')],'outboundNoAnswerCallsDay':_0x268f9c[_0x56a5('0x60')],'outboundNoSuchCallsDay':_0x268f9c[_0x56a5('0x61')],'outboundOriginateFailureCallsDay':_0x268f9c[_0x56a5('0x62')],'outboundReCallsDay':_0x268f9c[_0x56a5('0x63')],'outboundRejectCallsDay':_0x268f9c[_0x56a5('0x64')],'outboundUnknownCallsDay':_0x268f9c[_0x56a5('0x65')],'predictiveIntervalAnsweredCalls':_0x268f9c['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x268f9c[_0x56a5('0x66')],'predictiveIntervalAvgTalktime':_0x268f9c[_0x56a5('0x67')],'predictiveIntervalDroppedCallsCallersExit':_0x268f9c['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x268f9c[_0x56a5('0x68')],'predictiveIntervalErlangCalls':_0x268f9c[_0x56a5('0x69')],'predictiveIntervalErlangCallsDroppedCalls':_0x268f9c['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x268f9c['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x268f9c[_0x56a5('0x6a')],'predictiveIntervalPauses':_0x268f9c[_0x56a5('0x6b')],'predictiveIntervalAvailable':_0x268f9c[_0x56a5('0x6c')],'predictiveIntervalTotalCalls':_0x268f9c[_0x56a5('0x6d')],'message':_0x268f9c[_0x56a5('0x3b')],'originated':_0x268f9c[_0x56a5('0x6e')],'erlangCalls':_0x268f9c['erlangCalls'],'erlangCallToSecond':_0x268f9c['erlangCallToSecond'],'erlangAbandonmentRate':_0x268f9c[_0x56a5('0x6f')],'erlangBusyFactor':_0x268f9c[_0x56a5('0x70')],'startPredictive':_0x268f9c[_0x56a5('0x71')],'startProgressive':_0x268f9c['startProgressive']};if(_0x268f9c[_0x56a5('0x72')]){_0x41bd0b['Trunk']={'id':_0x268f9c[_0x56a5('0x72')]['id'],'name':_0x268f9c[_0x56a5('0x72')][_0x56a5('0x41')],'active':_0x268f9c[_0x56a5('0x72')][_0x56a5('0x73')],'callerid':_0x268f9c[_0x56a5('0x72')][_0x56a5('0x74')]};}if(_0x268f9c[_0x56a5('0x3f')]){_0x41bd0b[_0x56a5('0x3f')]={'id':_0x268f9c['Interval']['id'],'name':_0x268f9c[_0x56a5('0x3f')][_0x56a5('0x41')]};}var _0x5a8ba3=md5(JSON[_0x56a5('0x47')](_0x41bd0b));if(_0x268f9c[_0x56a5('0x3')]!==_0x5a8ba3){_0x268f9c[_0x56a5('0x3')]=_0x5a8ba3;emit(util['format'](_0x56a5('0x75'),_0x41bd0b[_0x56a5('0x41')]),_0x56a5('0x76'),_0x41bd0b);}}}function emitCampaignSummary(_0x5348e4){if(_0x5348e4[_0x56a5('0x4c')]===_0x56a5('0x77')){emit(util[_0x56a5('0x78')](_0x56a5('0x79'),_0x5348e4[_0x56a5('0x41')]),_0x56a5('0x7a'),_0x5348e4);}}function checkGetDataPredictive(_0x2a4ca4){if(isNotNull(_0x2a4ca4)&&!_[_0x56a5('0x44')](_0x2a4ca4)){loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x7c'));loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x7d'),_0x2a4ca4[_0x56a5('0x6d')]);loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x7e'),_0x2a4ca4[_0x56a5('0x7f')]);loggerPredictive['info']('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2a4ca4[_0x56a5('0x68')]);loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x80'),_0x2a4ca4[_0x56a5('0x81')]);loggerPredictive['info'](_0x56a5('0x82'),_0x2a4ca4[_0x56a5('0x66')]);loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x83'),_0x2a4ca4[_0x56a5('0x67')]);loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x84'));if(_0x2a4ca4[_0x56a5('0x6d')]>0x0){if(!_[_0x56a5('0x3a')](_0x2a4ca4[_0x56a5('0x67')])&&_0x2a4ca4[_0x56a5('0x67')]>0x0){return!![];}loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x85'));if(!_[_0x56a5('0x3a')](_0x2a4ca4[_0x56a5('0x66')])&&_0x2a4ca4[_0x56a5('0x66')]>0x0){return!![];}loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x86'));}else{loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x87'));}}else{loggerPredictive['info'](_0x56a5('0x88'));}return![];}function mergeDataErlangB(_0x18adc3){return function(_0x4015d5){loggerPredictive['info'](_0x56a5('0x89'));loggerPredictive[_0x56a5('0x7b')]('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4015d5['erlangCalls']);loggerPredictive[_0x56a5('0x7b')]('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4015d5[_0x56a5('0x8a')]);loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x8b'),_0x4015d5[_0x56a5('0x6f')]);loggerPredictive['info']('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4015d5[_0x56a5('0x70')]);loggerPredictive[_0x56a5('0x7b')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4015d5['erlangAbandonmentRate']);loggerPredictive[_0x56a5('0x7b')]('---------------------------');_[_0x56a5('0x8c')](_0x18adc3,_0x4015d5);};}function getDiff(_0x2ee5d0){var _0x44de02=moment()[_0x56a5('0x48')](0x0);var _0x56a85f=moment(_0x2ee5d0)['milliseconds'](0x0);return _0x44de02[_0x56a5('0x49')](_0x56a85f,'seconds');}function ifInterval(_0x4a3157,_0x577204){if(_['isUndefined'](_0x577204)){return![];}return getDiff(_0x577204)<_0x4a3157*0x3c;}function freeVariablesPredictive(_0x3a66fa){if(isNotNull(_0x3a66fa)){if(!_['isUndefined'](_0x3a66fa[_0x56a5('0x2a')])){_0x3a66fa[_0x56a5('0x2a')]=undefined;loggerPredictive[_0x56a5('0x7b')](_0x3a66fa[_0x56a5('0x41')],_0x56a5('0x8d'));}if(!_[_0x56a5('0x3a')](_0x3a66fa[_0x56a5('0x71')])){_0x3a66fa[_0x56a5('0x71')]=undefined;loggerPredictive['info'](_0x3a66fa[_0x56a5('0x41')],_0x56a5('0x8e'));}if(!_['isUndefined'](_0x3a66fa[_0x56a5('0x8f')])){clearInterval(_0x3a66fa[_0x56a5('0x8f')]);_0x3a66fa['handlePredictive']=undefined;loggerPredictive[_0x56a5('0x7b')](_0x3a66fa['name'],_0x56a5('0x90'));}}}function erlangb(_0x250a47,_0x16440d){if(_0x16440d===0x0){return 0x0;}var _0x411473=0x1;for(var _0x34d441=0x1;_0x34d441<=_0x16440d;_0x34d441+=0x1){_0x411473=0x1+_0x411473*_0x34d441/_0x250a47;}return 0x1/_0x411473;}function isVoiceQueueOutbound(_0x5e2245){return _0x5e2245===_0x56a5('0x4d');}function isNotPreview(_0x27bee8){return _0x27bee8!=='preview';}function isCampaignIvr(_0x24fddf){return _0x24fddf===_0x56a5('0x77');}function getCallerId(_0x4dc051,_0x3a5901,_0x264e00){if(!_[_0x56a5('0x3a')](_0x264e00)&&typeof _0x264e00===_0x56a5('0x91')&&!_[_0x56a5('0x44')](_0x264e00)){if(!_[_0x56a5('0x3a')](_0x3a5901)&&typeof _0x3a5901===_0x56a5('0x91')&&!_[_0x56a5('0x44')](_0x3a5901)){return util[_0x56a5('0x78')](_0x56a5('0x92'),_0x3a5901,_0x264e00);}return util[_0x56a5('0x78')](_0x56a5('0x92'),_0x264e00,_0x264e00);}if(!_[_0x56a5('0x3a')](_0x4dc051)&&typeof _0x4dc051===_0x56a5('0x91')&&!_['isEmpty'](_0x4dc051)){return _0x4dc051;}return _0x56a5('0x93');}function loggerCatchQueueSummary(_0x14eb3e,_0x2b9239){return function(_0x3fad6c){freeVariablesPredictive(_0x2b9239);emitVoiceQueueSummary(_0x2b9239);emitCampaignSummary(_0x2b9239);loggerSyncQueueSummary[_0x56a5('0x94')](_0x14eb3e,util[_0x56a5('0x95')](_0x3fad6c,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x422612,_0x5edeaf){return function(_0x101f95){loggerPredictive[_0x56a5('0x94')](_0x5edeaf[_0x56a5('0x41')],_0x422612);loggerPredictive[_0x56a5('0x94')](_0x101f95[_0x56a5('0x96')]);freeVariablesPredictive(_0x5edeaf);};}function loggerCatch(_0x3c1d94){return function(_0xb759a6){logger[_0x56a5('0x94')](_0x3c1d94,util[_0x56a5('0x95')](_0xb759a6,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x4d3f44){return _0x4d3f44&&!_[_0x56a5('0x3a')](_0x4d3f44)&&_0x4d3f44[_0x56a5('0x97')]>0x0;}function decremetOriginate(_0x2a6a58){if(!_['isUndefined'](_0x2a6a58)&&_0x2a6a58!==null){if(typeof _0x2a6a58[_0x56a5('0x6e')]!=='undefined'){if(_0x2a6a58[_0x56a5('0x6e')]>0x0){_0x2a6a58[_0x56a5('0x6e')]-=0x1;}else{logger[_0x56a5('0x94')](_0x56a5('0x98'));}}}else{logger[_0x56a5('0x94')](_0x56a5('0x99'));}}function checkContactLowerLimitOriginate(_0x483ff2,_0x409a3e,_0x5a57e0){if(_0x409a3e>_0x5a57e0){for(var _0x179e84=0x0;_0x179e84<_0x409a3e-_0x5a57e0;_0x179e84+=0x1){decremetOriginate(_0x483ff2);}}}function loggerGetContactDialer(_0x15d493,_0x4726fd,_0x3cc751){return function(_0x20c61d){checkContactLowerLimitOriginate(_0x4726fd,_0x3cc751,0x0);logger['error'](_0x15d493,util[_0x56a5('0x95')](_0x20c61d,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x5dde3a){return function(_0x140e29){if(isNotNull(_0x140e29)&&isNotNull(_0x140e29[0x0])){if(_0x140e29[0x0][_0x56a5('0x9a')]>0x0){_0x5dde3a[_0x56a5('0x3b')]=_0x56a5('0x9b');logger[_0x56a5('0x7b')](_0x56a5('0x9c')+_0x5dde3a[_0x56a5('0x41')],_0x140e29[0x0]['contactsRescheduled'],_0x56a5('0x9d'));}else{_0x5dde3a[_0x56a5('0x3b')]=_0x56a5('0x9e');logger['info']('[getContactDialer2][Empty]'+_0x5dde3a[_0x56a5('0x41')]);}}};}function notSendMessagesQueue(_0x4f29ef){if(_0x4f29ef[_0x56a5('0x9f')]){freeVariablesPredictive(_0x4f29ef);if(_0x4f29ef['originated']===0x0&&_0x4f29ef[_0x56a5('0x53')]===0x0&&_0x4f29ef[_0x56a5('0xa0')]===0x0&&(_0x4f29ef['pTalking']||0x0)===0x0){_0x4f29ef[_0x56a5('0x9f')]=![];_0x4f29ef[_0x56a5('0xa1')]=0x0;_0x4f29ef[_0x56a5('0x3b')]='NOT_ACTIVE';loggerSyncQueueSummary[_0x56a5('0x94')](_0x56a5('0xa2'),_0x4f29ef[_0x56a5('0x41')],_0x56a5('0xa3'));}else{_0x4f29ef[_0x56a5('0x3b')]=_0x56a5('0xa4');loggerSyncQueueSummary[_0x56a5('0x94')](_0x56a5('0xa2'),_0x4f29ef[_0x56a5('0x41')],_0x56a5('0xa5'));}emitVoiceQueueSummary(_0x4f29ef);}}function notSendMessagesCampaign(_0x12d5c9){if(_0x12d5c9[_0x56a5('0x9f')]){if(_0x12d5c9['originated']===0x0){_0x12d5c9[_0x56a5('0x9f')]=![];_0x12d5c9[_0x56a5('0x3b')]=_0x56a5('0x3d');loggerSyncQueueSummary['error'](_0x56a5('0xa6'),_0x12d5c9[_0x56a5('0x41')],'is\x20not\x20active');}else{_0x12d5c9[_0x56a5('0x3b')]=_0x56a5('0xa4');loggerSyncQueueSummary['error']('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x12d5c9[_0x56a5('0x41')],_0x56a5('0xa5'));}emitCampaignSummary(_0x12d5c9);}}function createObjHistory(_0x3f7475,_0xd5723f,_0x7b6f4f,_0x227a87,_0x2f6c33){_0x3f7475['message']=_0x7b6f4f;var _0x3897e6=new Action(_0x3f7475,_0xd5723f);var _0x4f3680=new History(_0x3897e6);_0x4f3680[_0x56a5('0xa7')]=_0x227a87;_0x4f3680[_0x56a5('0xa8')]=_0x2f6c33;_0x4f3680['endtime']=_0x3897e6[_0x56a5('0xa9')];return _0x4f3680;}Dialer[_0x56a5('0x1d')]['loopClearZombieChannels']=function(){var _0x3521d0=this;setInterval(function(){_0x3521d0[_0x56a5('0xaa')](_0x3521d0['uniqueId'],_0x56a5('0xab'));_0x3521d0[_0x56a5('0xaa')](_0x3521d0['actions'],_0x56a5('0xac'));},0x32c8);};Dialer[_0x56a5('0x1d')]['clearZombieChannels']=function(_0x4d8136,_0x1e51fc){var _0x49bdb2=this;for(var _0x794ab2 in _0x4d8136){if(typeof _0x4d8136[_0x794ab2]!==_0x56a5('0xad')){this['sequence'][_0x56a5('0x1e')](function(){if(!_[_0x56a5('0xae')](_0x4d8136[_0x794ab2])){return ami['Action']({'action':_0x56a5('0xaf'),'channel':_0x4d8136[_0x794ab2]['channel']})['catch'](function(_0x2885f6){if(_0x2885f6[_0x56a5('0x3b')]===_0x56a5('0xb0')){setTimeout(function(){if(_0x4d8136[_0x794ab2]&&_0x4d8136[_0x794ab2][_0x56a5('0x4c')]!=='ivr'){_0x49bdb2['updateOriginated'](_0x49bdb2['voiceQueues'][_0x4d8136[_0x794ab2]['queue']]);logger[_0x56a5('0x94')](_0x56a5('0xb1'),_0x1e51fc,_0x794ab2,_0x4d8136[_0x794ab2]['queue']);delete _0x4d8136[_0x794ab2];}if(_0x4d8136[_0x794ab2]&&_0x4d8136[_0x794ab2][_0x56a5('0x4c')]==='ivr'){_0x49bdb2[_0x56a5('0xb2')](_0x49bdb2[_0x56a5('0x24')][_0x4d8136[_0x794ab2][_0x56a5('0xb3')]]);logger['error'](_0x56a5('0xb4'),_0x1e51fc,_0x794ab2,_0x4d8136[_0x794ab2][_0x56a5('0xb3')]);delete _0x4d8136[_0x794ab2];}},0x2328);}});}});}}};Dialer['prototype'][_0x56a5('0xb5')]=function(_0x2ce30c){return BPromise[_0x56a5('0xb6')]()['then'](cmHopper['countReScheduled'](_0x2ce30c))[_0x56a5('0xb7')](loggerCatch(_0x56a5('0xb8')));};Dialer['prototype']['checkIsBlackList']=function(_0x1b882){return BPromise[_0x56a5('0xb6')]()[_0x56a5('0xb9')](cmHopperBlack[_0x56a5('0xba')](_0x1b882))['catch'](loggerCatch('[checkIsBlackList]\x20'));};Dialer[_0x56a5('0x1d')][_0x56a5('0xbb')]=function(_0x14a7d5){return BPromise['resolve']()[_0x56a5('0xb9')](cmHopperBlack[_0x56a5('0xbb')](_0x14a7d5))['catch'](loggerCatch('[checkIsBlackListIvr]\x20'));};Dialer[_0x56a5('0x1d')][_0x56a5('0xbc')]=function(_0x57aa25){return BPromise[_0x56a5('0xb6')]()['then'](cmHopperHistory[_0x56a5('0xbd')](_0x57aa25))[_0x56a5('0xb7')](loggerCatch(_0x56a5('0xbe')));};Dialer[_0x56a5('0x1d')]['rescheduleContact']=function(_0x21cc03){return BPromise[_0x56a5('0xb6')]()[_0x56a5('0xb9')](cmHopper['rescheduleContact'](_0x21cc03))[_0x56a5('0xb7')](loggerCatch(_0x56a5('0xbf')));};Dialer[_0x56a5('0x1d')][_0x56a5('0xc0')]=function(_0x47e549,_0x100721,_0x512d6d){return BPromise[_0x56a5('0xb6')]()[_0x56a5('0xb9')](cmHopper[_0x56a5('0xc0')](_0x47e549,_0x100721,_0x512d6d))[_0x56a5('0xb7')](loggerCatch('[unlockContact]\x20'));};Dialer[_0x56a5('0x1d')][_0x56a5('0xc1')]=function(_0x3eb857,_0x5b7ffd,_0x1e7285,_0x3e2a84,_0x37ff59){return BPromise['resolve']()['then'](cmHopper[_0x56a5('0xc1')](_0x3eb857,_0x5b7ffd,_0x1e7285,_0x3e2a84))['catch'](function(_0x4c6080){_0x37ff59[_0x56a5('0xc2')]-=_0x1e7285;_0x37ff59[_0x56a5('0xc2')]=_0x37ff59[_0x56a5('0xc2')]>0x0?_0x37ff59[_0x56a5('0xc2')]:0x0;loggerCatch(_0x56a5('0xc3'))(_0x4c6080);});};Dialer[_0x56a5('0x1d')][_0x56a5('0xc4')]=function(_0x124748,_0x2674c7,_0x387954,_0x492132){return BPromise[_0x56a5('0xb6')]()['then'](cmHopper[_0x56a5('0xc4')](_0x124748,_0x2674c7,_0x387954))[_0x56a5('0xb7')](function(_0x3183b8){_0x492132[_0x56a5('0xc2')]-=_0x2674c7;_0x492132['temp']=_0x492132[_0x56a5('0xc2')]>0x0?_0x492132[_0x56a5('0xc2')]:0x0;loggerCatch(_0x56a5('0xc5'))(_0x3183b8);});};Dialer[_0x56a5('0x1d')][_0x56a5('0xc6')]=function(_0x554aa2){return BPromise['resolve']()['then'](voiceQueueRt[_0x56a5('0xc6')](_0x554aa2))['catch'](loggerCatch(_0x56a5('0xc7')));};Dialer['prototype']['moveContactManagedDialer']=function(_0x9e8f39){return BPromise[_0x56a5('0xb6')]()[_0x56a5('0xb9')](cmHopper[_0x56a5('0xc8')](_0x9e8f39))['catch'](loggerCatch(_0x56a5('0xc9')));};Dialer[_0x56a5('0x1d')][_0x56a5('0xca')]=function(_0x222480){return BPromise[_0x56a5('0xb6')]()[_0x56a5('0xb9')](cmHopperHistory[_0x56a5('0xca')](_0x222480))[_0x56a5('0xb7')](loggerCatch('[createHistory]\x20'));};Dialer[_0x56a5('0x1d')][_0x56a5('0xb2')]=function(_0x14daa3){if(!_['isUndefined'](_0x14daa3)&&_0x14daa3!==null){if(typeof _0x14daa3[_0x56a5('0x6e')]!==_0x56a5('0xad')){if(_0x14daa3[_0x56a5('0x6e')]>0x0){_0x14daa3[_0x56a5('0x6e')]-=0x1;}else{logger['error'](_0x56a5('0xcb'));}}}else{logger['error']('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer['prototype'][_0x56a5('0xcc')]=function(_0xfd0f19,_0xa79de4){var _0x593a39=this;return function(_0x2d6e66){_0x593a39[_0x56a5('0xb2')](_0xa79de4);logger[_0x56a5('0x94')](_0xfd0f19,util[_0x56a5('0x95')](_0x2d6e66,{'showHidden':![],'depth':null}));};};Dialer[_0x56a5('0x1d')][_0x56a5('0xcd')]=function(_0x31e5d2,_0x2f6543,_0x5b122e){var _0x4f8447={'state':0x19,'statedesc':_0x56a5('0xce')};this['updateOriginated'](_0x2f6543);this[_0x56a5('0xcf')](_[_0x56a5('0x8c')](_0x4f8447,_['pick'](_0x5b122e,[_0x56a5('0xd0'),_0x56a5('0xd1'),_0x56a5('0xd2'),_0x56a5('0xd3'),_0x56a5('0xd4')])),_0x56a5('0xd5'),'[emptyContact]');logger[_0x56a5('0x94')](_0x31e5d2);};Dialer['prototype'][_0x56a5('0xd6')]=function(_0x496cf4){return _0x496cf4==='Success';};Dialer[_0x56a5('0x1d')][_0x56a5('0xd7')]=function(_0x1a00fe){return!_[_0x56a5('0x3a')](_0x1a00fe)&&_0x1a00fe&&!_['isUndefined'](_0x1a00fe[_0x56a5('0x41')])&&!_[_0x56a5('0x3a')](_0x1a00fe[_0x56a5('0x73')])&&_0x1a00fe[_0x56a5('0x73')]&&(this[_0x56a5('0x26')][util[_0x56a5('0x78')](_0x56a5('0xd8'),_0x1a00fe['name'])]['status']===_0x56a5('0xd9')||this['trunks'][util[_0x56a5('0x78')](_0x56a5('0xd8'),_0x1a00fe[_0x56a5('0x41')])][_0x56a5('0xaf')]===_0x56a5('0xda'));};Dialer[_0x56a5('0x1d')][_0x56a5('0xcf')]=function(_0x3463df,_0x409300,_0x526b6b){this[_0x56a5('0xca')](_0x3463df)[_0x56a5('0xb7')](loggerCatch(_0x409300));this[_0x56a5('0xc8')](_0x3463df)[_0x56a5('0xb7')](loggerCatch(_0x526b6b));};Dialer[_0x56a5('0x1d')][_0x56a5('0xdb')]=function(_0x4dcac0){var _0x2490e7=this[_0x56a5('0xdc')][_0x4dcac0[_0x56a5('0xdd')]];var _0x1e43d3;if(!_[_0x56a5('0xae')](_0x4dcac0)&&!_[_0x56a5('0xae')](_0x4dcac0[_0x56a5('0xde')])&&!_[_0x56a5('0xae')](_0x4dcac0[_0x56a5('0xde')][_0x56a5('0xdf')])&&_0x4dcac0[_0x56a5('0xe0')]===_0x56a5('0xe1')&&_0x2490e7){if(_0x2490e7[_0x56a5('0x4c')]!==_0x56a5('0x77')&&this[_0x56a5('0x23')][_0x2490e7['queue']][_0x56a5('0xe2')]&&_0x4dcac0[_0x56a5('0xe3')]===_0x56a5('0xe4')){delete this['uniqueId'][_0x4dcac0[_0x56a5('0xdd')]];this['updateOriginated'](this[_0x56a5('0x23')][_0x2490e7['queue']]);this[_0x56a5('0x23')][_0x2490e7[_0x56a5('0xb3')]][_0x56a5('0x5b')]+=0x1;this[_0x56a5('0x23')][_0x2490e7[_0x56a5('0xb3')]][_0x56a5('0x5a')]+=0x1;_0x1e43d3=new Hangup(_0x2490e7,_0x4dcac0);_0x1e43d3[_0x56a5('0xa7')]=0x12;_0x1e43d3[_0x56a5('0xa8')]=_0x56a5('0xe5');_0x1e43d3[_0x56a5('0xe6')]='AMD';ami[_0x56a5('0x4b')](_0x56a5('0xe7'),ut[_0x56a5('0xe8')](_0x1e43d3,_0x56a5('0xe9')));this[_0x56a5('0xcf')](_0x1e43d3,_0x56a5('0xea'),'[syncHangupInAMD]');}if(_0x2490e7[_0x56a5('0x4c')]!==_0x56a5('0x77')&&this[_0x56a5('0x23')][_0x2490e7[_0x56a5('0xb3')]][_0x56a5('0xe2')]&&_0x4dcac0['value']===_0x56a5('0xeb')){var _0x2943fb=this;return new BPromise(function(_0x16cbed,_0x4df64c){delete _0x2943fb['uniqueId'][_0x4dcac0[_0x56a5('0xdd')]];_0x2943fb[_0x56a5('0xb2')](_0x2943fb[_0x56a5('0x23')][_0x2490e7[_0x56a5('0xb3')]]);_0x2943fb[_0x56a5('0x23')][_0x2490e7[_0x56a5('0xb3')]][_0x56a5('0x5b')]+=0x1;_0x2943fb[_0x56a5('0x23')][_0x2490e7['queue']][_0x56a5('0x5a')]+=0x1;var _0x24b579=_0x2943fb['voiceQueues'][_0x2490e7[_0x56a5('0xb3')]];var _0x5532aa=new Hangup(_0x2490e7,_0x4dcac0);_0x5532aa[_0x56a5('0xa7')]=0x13;_0x5532aa['statedesc']=_0x56a5('0xec');_0x5532aa[_0x56a5('0xe6')]=_0x56a5('0xed');_0x5532aa[_0x56a5('0xee')]+=0x1;_0x5532aa['countglobal']+=0x1;_0x5532aa[_0x56a5('0xe9')]=!![];ami[_0x56a5('0x4b')](_0x56a5('0xe7'),ut[_0x56a5('0xe8')](_0x5532aa,_0x56a5('0xe9')));_0x2943fb[_0x56a5('0xca')](_0x5532aa)['catch'](loggerCatch(_0x56a5('0xef')));if(_0x5532aa[_0x56a5('0xf0')]+_0x5532aa['countcongestionretry']+_0x5532aa[_0x56a5('0xf1')]+_0x5532aa[_0x56a5('0xf2')]+_0x5532aa['countdropretry']+_0x5532aa[_0x56a5('0xf3')]+_0x5532aa[_0x56a5('0xee')]+_0x5532aa[_0x56a5('0xf4')]>=_0x24b579[_0x56a5('0xf5')]){_0x2943fb[_0x56a5('0xf6')](_0x5532aa,_0x16cbed,_0x4df64c,_0x56a5('0xf7'));}else{if(_0x5532aa['countmachineretry']>=_0x24b579[_0x56a5('0xf8')]){_0x2943fb[_0x56a5('0xf9')](_0x5532aa,_0x16cbed,_0x4df64c,_0x56a5('0xfa'));}else{_0x2943fb[_0x56a5('0xfb')]({'active':![],'countmachineretry':_0x5532aa[_0x56a5('0xee')],'scheduledat':moment()['add'](_0x24b579['dialMachineRetryFrequency'],'minutes')[_0x56a5('0x78')](_0x56a5('0xfc')),'ContactId':_0x5532aa[_0x56a5('0xd0')],'ListId':_0x5532aa[_0x56a5('0xd1')],'VoiceQueueId':_0x5532aa[_0x56a5('0xd3')]||undefined,'CampaignId':_0x5532aa[_0x56a5('0xd4')]||undefined})[_0x56a5('0xb7')](loggerCatch(_0x56a5('0xfd')));_0x16cbed({'reschedule':0x1});}}});}if(_0x2490e7[_0x56a5('0x4c')]===_0x56a5('0x77')&&this[_0x56a5('0x24')][_0x2490e7[_0x56a5('0xb3')]][_0x56a5('0xe2')]&&_0x4dcac0[_0x56a5('0xe3')]===_0x56a5('0xe4')){delete this[_0x56a5('0xdc')][_0x4dcac0['uniqueid']];this['updateOriginated'](this[_0x56a5('0x24')][_0x2490e7['queue']]);_0x1e43d3=new Hangup(_0x2490e7,_0x4dcac0);_0x1e43d3[_0x56a5('0xa7')]=0x12;_0x1e43d3[_0x56a5('0xa8')]=_0x56a5('0xe5');_0x1e43d3['membername']=_0x56a5('0xed');ami[_0x56a5('0x4b')](_0x56a5('0xe7'),ut[_0x56a5('0xe8')](_0x1e43d3,'amd'));this['saveInDb'](_0x1e43d3,_0x56a5('0xfe'),_0x56a5('0xff'));}if(_0x2490e7['type']===_0x56a5('0x77')&&this[_0x56a5('0x24')][_0x2490e7[_0x56a5('0xb3')]][_0x56a5('0xe2')]&&_0x4dcac0[_0x56a5('0xe3')]===_0x56a5('0xeb')){var _0x2943fb=this;return new BPromise(function(_0xa8476,_0x968d2){delete _0x2943fb[_0x56a5('0xdc')][_0x4dcac0[_0x56a5('0xdd')]];_0x2943fb['updateOriginated'](_0x2943fb[_0x56a5('0x24')][_0x2490e7['queue']]);_0x2943fb[_0x56a5('0x24')][_0x2490e7[_0x56a5('0xb3')]][_0x56a5('0x5b')]+=0x1;_0x2943fb['campaigns'][_0x2490e7[_0x56a5('0xb3')]]['outboundAnswerAgiCallsDay']+=0x1;var _0x362186=_0x2943fb[_0x56a5('0x24')][_0x2490e7[_0x56a5('0xb3')]];var _0x335c20=new Hangup(_0x2490e7,_0x4dcac0);_0x335c20[_0x56a5('0xa7')]=0x13;_0x335c20[_0x56a5('0xa8')]='Machine';_0x335c20[_0x56a5('0xe6')]='AMD';_0x335c20['countmachineretry']+=0x1;_0x335c20[_0x56a5('0x100')]+=0x1;_0x335c20[_0x56a5('0xe9')]=!![];ami[_0x56a5('0x4b')]('custom:amd',ut[_0x56a5('0xe8')](_0x335c20,_0x56a5('0xe9')));_0x2943fb[_0x56a5('0xca')](_0x335c20)[_0x56a5('0xb7')](loggerCatch(_0x56a5('0xef')));if(_0x335c20[_0x56a5('0xf0')]+_0x335c20['countcongestionretry']+_0x335c20[_0x56a5('0xf1')]+_0x335c20[_0x56a5('0xf2')]+_0x335c20['countdropretry']+_0x335c20[_0x56a5('0xf3')]+_0x335c20['countmachineretry']+_0x335c20[_0x56a5('0xf4')]>=_0x362186[_0x56a5('0xf5')]){_0x2943fb[_0x56a5('0xf6')](_0x335c20,_0xa8476,_0x968d2,_0x56a5('0xf7'));}else{if(_0x335c20[_0x56a5('0xee')]>=_0x362186['dialMachineMaxRetry']){_0x2943fb[_0x56a5('0xf9')](_0x335c20,_0xa8476,_0x968d2,'reason\x2019\x20machine....');}else{_0x2943fb[_0x56a5('0xfb')]({'active':![],'countmachineretry':_0x335c20[_0x56a5('0xee')],'scheduledat':moment()[_0x56a5('0x101')](_0x362186[_0x56a5('0x102')],_0x56a5('0x103'))[_0x56a5('0x78')](_0x56a5('0xfc')),'ContactId':_0x335c20[_0x56a5('0xd0')],'ListId':_0x335c20['ListId'],'VoiceQueueId':_0x335c20[_0x56a5('0xd3')]||undefined,'CampaignId':_0x335c20[_0x56a5('0xd4')]||undefined})['catch'](loggerCatch(_0x56a5('0xfd')));_0xa8476({'reschedule':0x1});}}});}}};Dialer[_0x56a5('0x1d')][_0x56a5('0x32')]=function(_0x55e22c){var _0x159aef=this[_0x56a5('0xdc')][_0x55e22c[_0x56a5('0xdd')]];var _0x215ab9=this;var _0x405548;if(_0x159aef&&_0x159aef['type']===_0x56a5('0x77')){delete this[_0x56a5('0xdc')][_0x55e22c[_0x56a5('0xdd')]];this[_0x56a5('0xb2')](this['campaigns'][_0x159aef[_0x56a5('0xb3')]]);this[_0x56a5('0x24')][_0x159aef[_0x56a5('0xb3')]][_0x56a5('0x104')]+=0x1;_0x405548=new Hangup(_0x159aef,_0x55e22c);this[_0x56a5('0xca')](_0x405548)['catch'](loggerCatch(_0x56a5('0x105')));this[_0x56a5('0xc8')](_0x405548)[_0x56a5('0xb7')](loggerCatch('[syncHangupIvr]'));}if(_0x159aef&&_0x159aef[_0x56a5('0x4c')]!==_0x56a5('0x77')&&isNotNull(this[_0x56a5('0x23')][_0x159aef['queue']][_0x56a5('0x106')])){delete this[_0x56a5('0xdc')][_0x55e22c['uniqueid']];this[_0x56a5('0xb2')](this[_0x56a5('0x23')][_0x159aef['queue']]);this['voiceQueues'][_0x159aef[_0x56a5('0xb3')]][_0x56a5('0x5b')]+=0x1;this[_0x56a5('0x23')][_0x159aef[_0x56a5('0xb3')]][_0x56a5('0x5a')]+=0x1;_0x405548=new Hangup(_0x159aef,_0x55e22c);_0x405548[_0x56a5('0xa7')]=0x10;_0x405548[_0x56a5('0xa8')]=_0x56a5('0x107');_0x405548[_0x56a5('0xe6')]=_0x56a5('0x108');this['createHistory'](_0x405548)[_0x56a5('0xb7')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0x56a5('0xc8')](_0x405548)[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x109')));}if(_0x159aef&&_0x159aef['type']!==_0x56a5('0x77')&&!isNotNull(this[_0x56a5('0x23')][_0x159aef['queue']][_0x56a5('0x106')])){delete this[_0x56a5('0xdc')][_0x55e22c[_0x56a5('0xdd')]];this[_0x56a5('0xb2')](this[_0x56a5('0x23')][_0x159aef['queue']]);this[_0x56a5('0x23')][_0x159aef[_0x56a5('0xb3')]][_0x56a5('0x65')]+=0x1;_0x405548=new Hangup(_0x159aef,_0x55e22c);_0x405548[_0x56a5('0xa7')]=0xc;_0x405548[_0x56a5('0xa8')]=_0x55e22c['cause-txt'];_0x405548[_0x56a5('0xe6')]=_0x56a5('0x10a');this[_0x56a5('0xca')](_0x405548)[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x105')));this[_0x56a5('0xc8')](_0x405548)[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x109')));}};Dialer[_0x56a5('0x1d')][_0x56a5('0x31')]=function(_0x95b8d0){var _0x29f9e4=this[_0x56a5('0xdc')][_0x95b8d0[_0x56a5('0xdd')]];var _0x533547=this;if(this['voiceQueues'][_0x95b8d0['queue']]){if(_0x29f9e4&&_0x29f9e4[_0x56a5('0x4c')]!==_0x56a5('0x77')){delete this[_0x56a5('0xdc')][_0x95b8d0[_0x56a5('0xdd')]];this['voiceQueues'][_0x95b8d0[_0x56a5('0xb3')]][_0x56a5('0x5b')]+=0x1;var _0x4c7faa=new AgentComplete(_0x29f9e4,_0x95b8d0);if(_0x95b8d0[_0x56a5('0x10b')]===_0x56a5('0x10c')){_0x4c7faa[_0x56a5('0x10d')]=this['voiceQueues'][_0x95b8d0[_0x56a5('0xb3')]]['dialQueueProject2']&&this[_0x56a5('0x23')][_0x95b8d0[_0x56a5('0xb3')]][_0x56a5('0x10e')]?moment()[_0x56a5('0x78')](_0x56a5('0xfc')):undefined;}this['createHistory'](_0x4c7faa)[_0x56a5('0xb7')](loggerCatch('[syncAgentComplete][createHistory]'));this[_0x56a5('0xc8')](_0x4c7faa)[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x10f')));}}};Dialer[_0x56a5('0x1d')][_0x56a5('0x110')]=function(_0x73eb28){if(this[_0x56a5('0x23')][_0x73eb28['queue']]){if(this['uniqueId'][_0x73eb28[_0x56a5('0xdd')]]&&this[_0x56a5('0xdc')][_0x73eb28[_0x56a5('0xdd')]][_0x56a5('0x4c')]!==_0x56a5('0x77')){this[_0x56a5('0xb2')](this[_0x56a5('0x23')][_0x73eb28[_0x56a5('0xb3')]]);this[_0x56a5('0xdc')][_0x73eb28[_0x56a5('0xdd')]][_0x56a5('0x111')]=moment()[_0x56a5('0x78')](_0x56a5('0xfc'));}}};Dialer[_0x56a5('0x1d')]['queueCallerAbandonCreateState']=function(_0x505118){this[_0x56a5('0xca')](_0x505118)['catch'](loggerCatch(_0x56a5('0x112')));this[_0x56a5('0xc8')](_0x505118)[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x113')));};Dialer[_0x56a5('0x1d')][_0x56a5('0x114')]=function(_0x37ca0c){var _0x417e2c=this[_0x56a5('0xdc')][_0x37ca0c['uniqueid']];var _0x2a6897=this;if(this[_0x56a5('0x23')][_0x37ca0c['queue']]){if(_0x417e2c&&_0x417e2c['type']!=='ivr'){delete this[_0x56a5('0xdc')][_0x37ca0c[_0x56a5('0xdd')]];this[_0x56a5('0xb2')](this[_0x56a5('0x23')][_0x37ca0c['queue']]);_0x417e2c[_0x56a5('0x115')]=moment()[_0x56a5('0x78')](_0x56a5('0xfc'));var _0x174636=new QueueCallerAbandon(_0x417e2c,_0x37ca0c);if(getSeconds(_0x417e2c['droptime'],_0x417e2c[_0x56a5('0x116')])>=_0x417e2c[_0x56a5('0x117')]){this['voiceQueues'][_0x37ca0c[_0x56a5('0xb3')]][_0x56a5('0x68')]+=0x1;this['voiceQueues'][_0x37ca0c['queue']][_0x56a5('0x5f')]+=0x1;this[_0x56a5('0x23')][_0x37ca0c[_0x56a5('0xb3')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x174636['state']=0xa;_0x174636[_0x56a5('0xa8')]='Drop';_0x174636[_0x56a5('0x118')]='TIMEOUT';_0x174636['agiafterat']=this[_0x56a5('0x23')][_0x37ca0c[_0x56a5('0xb3')]][_0x56a5('0x119')]?moment()[_0x56a5('0x78')](_0x56a5('0xfc')):undefined;_0x174636['countdropretry']+=0x1;_0x174636[_0x56a5('0x100')]+=0x1;if(_0x174636['countdropretry']>=this[_0x56a5('0x23')][_0x37ca0c[_0x56a5('0xb3')]]['dialDropMaxRetry']){this[_0x56a5('0x11a')](_0x174636);}else{this['rescheduleContact']({'active':![],'countdropretry':_0x174636[_0x56a5('0x11b')],'scheduledat':moment()['add'](this[_0x56a5('0x23')][_0x37ca0c[_0x56a5('0xb3')]][_0x56a5('0x11c')],'minutes')[_0x56a5('0x78')](_0x56a5('0xfc')),'ContactId':_0x417e2c[_0x56a5('0xd0')],'ListId':_0x417e2c['ListId'],'VoiceQueueId':_0x417e2c[_0x56a5('0xd3')]||undefined,'CampaignId':_0x417e2c[_0x56a5('0xd4')]||undefined})[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x11d')));var _0x4c0d92=new History(_0x174636);_0x4c0d92[_0x56a5('0xa7')]=0xa;_0x4c0d92[_0x56a5('0xa8')]='Drop';_0x4c0d92[_0x56a5('0xa9')]=moment()[_0x56a5('0x78')]('YYYY-MM-DD\x20HH:mm:ss');_0x4c0d92[_0x56a5('0x11e')]=_0x4c0d92[_0x56a5('0xa9')];_0x4c0d92[_0x56a5('0x11f')]=_0x174636[_0x56a5('0x11f')];_0x4c0d92['calleridnum']=_0x174636[_0x56a5('0x120')];this['createHistory'](_0x4c0d92)['catch'](loggerCatch(_0x56a5('0x121')));}}else{this[_0x56a5('0x23')][_0x37ca0c[_0x56a5('0xb3')]]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this[_0x56a5('0x23')][_0x37ca0c[_0x56a5('0xb3')]]['outboundDropCallsDayCallersExit']+=0x1;_0x174636['state']=0xb;_0x174636[_0x56a5('0xa8')]='Abandoned';_0x174636[_0x56a5('0x118')]=_0x56a5('0x122');_0x174636['countabandonedretry']+=0x1;_0x174636[_0x56a5('0x100')]+=0x1;if(_0x174636[_0x56a5('0xf3')]>=this[_0x56a5('0x23')][_0x37ca0c[_0x56a5('0xb3')]]['dialAbandonedMaxRetry']){this['queueCallerAbandonCreateState'](_0x174636);}else{this[_0x56a5('0xfb')]({'active':![],'countabandonedretry':_0x174636[_0x56a5('0xf3')],'scheduledat':moment()['add'](this[_0x56a5('0x23')][_0x37ca0c[_0x56a5('0xb3')]]['dialAbandonedRetryFrequency'],_0x56a5('0x103'))['format'](_0x56a5('0xfc')),'ContactId':_0x417e2c[_0x56a5('0xd0')],'ListId':_0x417e2c[_0x56a5('0xd1')],'VoiceQueueId':_0x417e2c[_0x56a5('0xd3')]||undefined,'CampaignId':_0x417e2c[_0x56a5('0xd4')]||undefined})[_0x56a5('0xb7')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x4c0d92=new History(_0x174636);_0x4c0d92[_0x56a5('0xa7')]=0xb;_0x4c0d92[_0x56a5('0xa8')]=_0x56a5('0x123');_0x4c0d92[_0x56a5('0xa9')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x4c0d92['endtime']=_0x4c0d92[_0x56a5('0xa9')];_0x4c0d92[_0x56a5('0x11f')]=_0x174636[_0x56a5('0x11f')];_0x4c0d92['calleridnum']=_0x174636[_0x56a5('0x120')];this[_0x56a5('0xca')](_0x4c0d92)[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x124')));}}}}};Dialer[_0x56a5('0x1d')][_0x56a5('0x34')]=function(_0x2eb22e){if(this['actions'][_0x2eb22e[_0x56a5('0xdd')]]){this['actions'][_0x2eb22e[_0x56a5('0xdd')]][_0x56a5('0x125')]=_0x2eb22e[_0x56a5('0x125')];}if(this[_0x56a5('0xdc')][_0x2eb22e['uniqueid']]){this[_0x56a5('0xdc')][_0x2eb22e[_0x56a5('0xdd')]][_0x56a5('0x125')]=_0x2eb22e[_0x56a5('0x125')];}};Dialer[_0x56a5('0x1d')][_0x56a5('0x36')]=function(_0x296ce6){if(strategy[this['voiceQueues'][this[_0x56a5('0x126')][_0x296ce6['actionid']][_0x56a5('0xb3')]][_0x56a5('0x4e')]]===_0x56a5('0x1c')){if(this[_0x56a5('0x126')][_0x296ce6[_0x56a5('0x127')]]&&_['isNil'](this[_0x56a5('0x126')][_0x296ce6[_0x56a5('0x127')]]['locked'])&&_0x296ce6['status']==='1'&&_0x296ce6['paused']==='0'){if(this[_0x56a5('0x25')][_0x296ce6[_0x56a5('0x128')]]){if(!this['agents'][_0x296ce6['stateinterface']][_0x56a5('0x129')]){this[_0x56a5('0x25')][_0x296ce6[_0x56a5('0x128')]]['locked']=!![];this[_0x56a5('0x126')][_0x296ce6['actionid']][_0x56a5('0x129')]=!![];this[_0x56a5('0x126')][_0x296ce6[_0x56a5('0x127')]]['stateinterface']=_0x296ce6[_0x56a5('0x128')];}}}}else if((strategy[this[_0x56a5('0x23')][this['actions'][_0x296ce6[_0x56a5('0x127')]][_0x56a5('0xb3')]][_0x56a5('0x4e')]]||'rrmemory')===_0x56a5('0x1b')){if(this['actions'][_0x296ce6['actionid']]){if(this[_0x56a5('0x25')][_0x296ce6[_0x56a5('0x128')]]){this[_0x56a5('0x126')][_0x296ce6[_0x56a5('0x127')]][_0x56a5('0x128')]=_0x296ce6['stateinterface'];if(_['isNil'](this[_0x56a5('0x2c')][this[_0x56a5('0x126')][_0x296ce6[_0x56a5('0x127')]][_0x56a5('0xb3')]])){this['queueBooked'][this[_0x56a5('0x126')][_0x296ce6[_0x56a5('0x127')]][_0x56a5('0xb3')]]=[];}this[_0x56a5('0x2c')][this[_0x56a5('0x126')][_0x296ce6['actionid']][_0x56a5('0xb3')]][_0x56a5('0x12a')](_[_0x56a5('0x8c')](_['pick'](this[_0x56a5('0x126')][_0x296ce6[_0x56a5('0x127')]],[_0x56a5('0x12b'),_0x56a5('0x128')]),{'status':_0x296ce6['status'],'paused':_0x296ce6[_0x56a5('0x12c')]}));}}}};function unlockQueueStatus(_0xaee6f0,_0x41cc69){setTimeout(function(){if(_[_0x56a5('0x3a')](_0xaee6f0['queueStatusComplete'])){loggerBooked[_0x56a5('0x94')](_0x56a5('0x12d'),_0x41cc69);}_0xaee6f0[_0x56a5('0x12e')]=!![];loggerBooked[_0x56a5('0x7b')](_0x56a5('0x12f'),_0x41cc69,JSON[_0x56a5('0x47')](_[_0x56a5('0x130')](_0xaee6f0,[_0x56a5('0x41'),_0x56a5('0x12e')])));},0x1f3);}Dialer[_0x56a5('0x1d')][_0x56a5('0x38')]=function(_0x21e2ef){var _0x3a3bad=this;var _0x50d411=_0x3a3bad[_0x56a5('0x23')][_0x3a3bad[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]];if(strategy[this[_0x56a5('0x23')][this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]][_0x56a5('0x4e')]]===_0x56a5('0x1c')){if(this[_0x56a5('0x126')][_0x21e2ef['actionid']]&&this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0x128')]){this[_0x56a5('0x22')][_0x56a5('0x131')](this[_0x56a5('0x126')][_0x21e2ef['actionid']][_0x56a5('0x12b')],this['actions'][_0x21e2ef['actionid']][_0x56a5('0x128')])[_0x56a5('0xb7')](function(_0x2e8c7d){logger[_0x56a5('0x94')]('[Catch][Preview][syncQueueStatusComplete]',util[_0x56a5('0x95')](_0x2e8c7d,{'showHidden':![],'depth':null}));})['finally'](function(){_0x3a3bad['updateOriginated'](_0x3a3bad[_0x56a5('0x23')][_0x3a3bad[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]]);_0x3a3bad[_0x56a5('0x25')][_0x3a3bad[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0x128')]][_0x56a5('0x129')]=![];delete _0x3a3bad['actions'][_0x21e2ef[_0x56a5('0x127')]];unlockQueueStatus(_0x50d411);});}else{this[_0x56a5('0xb2')](this[_0x56a5('0x23')][this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xd0')],'ListId':this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xd1')],'VoiceQueueId':this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xd3')]||undefined,'CampaignId':this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xd4')]||undefined})[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x132')));delete this[_0x56a5('0x126')][_0x21e2ef['actionid']];unlockQueueStatus(_0x50d411);}}else if((strategy[this['voiceQueues'][this[_0x56a5('0x126')][_0x21e2ef['actionid']][_0x56a5('0xb3')]]['strategy']]||_0x56a5('0x1b'))===_0x56a5('0x1b')){var _0x3a0efa;if(this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]]&&!_[_0x56a5('0x44')](this['queueBooked'][this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]])){if(this[_0x56a5('0x133')][_0x3a3bad[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]]){this[_0x56a5('0x133')][_0x3a3bad[_0x56a5('0x126')][_0x21e2ef['actionid']][_0x56a5('0xb3')]]=this[_0x56a5('0x133')][this['actions'][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]]?this[_0x56a5('0x133')][this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]]:this[_0x56a5('0x2c')][this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]]['queue']]?this['queueBooked'][this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]][_0x56a5('0x134')]||0x0:0x0;}this[_0x56a5('0x2c')][this[_0x56a5('0x126')][_0x21e2ef['actionid']][_0x56a5('0xb3')]][_0x56a5('0x134')]=this[_0x56a5('0x133')][this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]];for(var _0x4305ca=0x0;_0x4305ca<this[_0x56a5('0x2c')][this['actions'][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]]['length'];_0x4305ca+=0x1){_0x3a0efa=rr(this[_0x56a5('0x2c')][this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]]);this[_0x56a5('0x133')][_0x3a3bad[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]]=this[_0x56a5('0x2c')][this[_0x56a5('0x126')][_0x21e2ef['actionid']][_0x56a5('0xb3')]][_0x56a5('0x134')];if(_0x3a0efa['status']==='1'&&_0x3a0efa[_0x56a5('0x12c')]==='0'){break;}}if(!_[_0x56a5('0xae')](_0x3a0efa)){this[_0x56a5('0x25')][_0x3a0efa[_0x56a5('0x128')]][_0x56a5('0x135')]=_[_0x56a5('0x3a')](this[_0x56a5('0x25')][_0x3a0efa[_0x56a5('0x128')]]['unlockRR'])?!![]:this[_0x56a5('0x25')][_0x3a0efa[_0x56a5('0x128')]]['unlockRR'];}loggerBooked[_0x56a5('0x7b')](_0x56a5('0x136'),_0x21e2ef[_0x56a5('0x127')],'Agent:\x20',JSON[_0x56a5('0x47')](_[_0x56a5('0x130')](this[_0x56a5('0x25')][_0x3a0efa['stateinterface']],[_0x56a5('0x41'),_0x56a5('0x135')])),_0x56a5('0x137'),JSON[_0x56a5('0x47')](_0x3a0efa[_0x56a5('0x12b')]));if(!_[_0x56a5('0xae')](_0x3a0efa)&&_0x3a0efa['status']==='1'&&_0x3a0efa['paused']==='0'&&this[_0x56a5('0x25')][_0x3a0efa[_0x56a5('0x128')]][_0x56a5('0x135')]){this['agents'][_0x3a0efa['stateinterface']][_0x56a5('0x135')]=![];this[_0x56a5('0x2c')][_0x3a3bad[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]]=[];this['preview']['run'](_0x3a0efa[_0x56a5('0x12b')],_0x3a0efa[_0x56a5('0x128')])[_0x56a5('0xb7')](function(_0xa6ef24){logger[_0x56a5('0x94')](_0x56a5('0x138'),util['inspect'](_0xa6ef24,{'showHidden':![],'depth':null}));})[_0x56a5('0x20')](function(){_0x3a3bad[_0x56a5('0xb2')](_0x3a3bad['voiceQueues'][_0x3a3bad[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]]);setTimeout(function(){_0x3a3bad[_0x56a5('0x25')][_0x3a0efa[_0x56a5('0x128')]][_0x56a5('0x135')]=!![];loggerBooked[_0x56a5('0x7b')](_0x56a5('0x139'),_0x21e2ef['actionid'],_0x56a5('0x13a'),JSON['stringify'](_[_0x56a5('0x130')](_0x3a3bad[_0x56a5('0x25')][_0x3a0efa[_0x56a5('0x128')]],[_0x56a5('0x41'),_0x56a5('0x135')])),_0x56a5('0x137'),JSON[_0x56a5('0x47')](_0x3a0efa[_0x56a5('0x12b')]));},0xc7);delete _0x3a3bad['actions'][_0x21e2ef[_0x56a5('0x127')]];unlockQueueStatus(_0x50d411,_0x21e2ef[_0x56a5('0x127')]);});}else{loggerBooked['info'](_0x56a5('0x13b'));this['updateOriginated'](this['voiceQueues'][this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]]);this[_0x56a5('0xfb')]({'active':![],'ContactId':this['actions'][_0x21e2ef['actionid']]['ContactId'],'ListId':this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xd1')],'VoiceQueueId':this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xd3')]||undefined,'CampaignId':this[_0x56a5('0x126')][_0x21e2ef['actionid']]['CampaignId']||undefined})[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x132')));delete this['actions'][_0x21e2ef[_0x56a5('0x127')]];unlockQueueStatus(_0x50d411);}}else{loggerBooked[_0x56a5('0x7b')]('[booked][unlock2]');this[_0x56a5('0xb2')](this[_0x56a5('0x23')][this['actions'][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]]);this[_0x56a5('0xfb')]({'active':![],'ContactId':this['actions'][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xd0')],'ListId':this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xd1')],'VoiceQueueId':this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xd3')]||undefined,'CampaignId':this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xd4')]||undefined})[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x13c')));delete this['actions'][_0x21e2ef[_0x56a5('0x127')]];unlockQueueStatus(_0x50d411);}}else{loggerBooked[_0x56a5('0x7b')](_0x56a5('0x13d'));this[_0x56a5('0xb2')](this[_0x56a5('0x23')][this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xb3')]]);this[_0x56a5('0xfb')]({'active':![],'ContactId':this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xd0')],'ListId':this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xd1')],'VoiceQueueId':this[_0x56a5('0x126')][_0x21e2ef[_0x56a5('0x127')]][_0x56a5('0xd3')]||undefined,'CampaignId':this[_0x56a5('0x126')][_0x21e2ef['actionid']][_0x56a5('0xd4')]||undefined})[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x13e')));delete this['actions'][_0x21e2ef[_0x56a5('0x127')]];unlockQueueStatus(_0x50d411);}};Dialer[_0x56a5('0x1d')][_0x56a5('0x39')]=function(){var _0x50b001=this;setInterval(function(){_0x50b001[_0x56a5('0x13f')]();},0x3e8);};Dialer[_0x56a5('0x1d')][_0x56a5('0x140')]=function(_0x3ae19f){var _0x2abf67=this;return function(){if(!_0x2abf67[_0x56a5('0xd7')](_0x3ae19f[_0x56a5('0x72')])){if(!_0x2abf67[_0x56a5('0xd7')](_0x3ae19f['TrunkBackup'])){_0x3ae19f[_0x56a5('0x3b')]='TRUNK_IS_NOT_REACHABLE';throw _0x3ae19f[_0x56a5('0x41')]+_0x56a5('0x141');}}};};Dialer['prototype'][_0x56a5('0x142')]=function(_0x59e379,_0x497f40,_0xe720ea,_0x17c763){var _0x1bf1ac=this;return function(){var _0x3e5337=!![];return _0x1bf1ac['ifTime'](_0x59e379,_0x497f40,_0xe720ea,_0x17c763,_0x3e5337);};};Dialer['prototype']['checkIfTimeIntervals']=function(_0x14e8c7,_0x2ad461,_0x42ff2c,_0x4bafcd){var _0x34dfff=this;return function(){var _0x19868b=![];return _0x34dfff[_0x56a5('0x143')](_0x14e8c7[_0x56a5('0x42')],_0x2ad461,_0x42ff2c,_0x4bafcd,_0x19868b);};};Dialer['prototype'][_0x56a5('0x143')]=function(_0x273bf7,_0x17332b,_0x503aae,_0x53f251,_0x8ebd69){var _0x541492=[];return new BPromise(function(_0x54ba64,_0x9123f1){if(!isNotNull(_0x273bf7)){_0x53f251['message']=_0x56a5('0x40');return _0x9123f1(msgResponse(_0x56a5('0x143'),_0x56a5('0x144'),_0x503aae+'\x20Intervals\x20is\x20null\x20'));}if(_[_0x56a5('0x44')](_0x273bf7)){_0x53f251[_0x56a5('0x3b')]='INTERVAL_IS_EMPTY';return _0x9123f1(msgResponse('ifTime','Failure',_0x503aae+_0x56a5('0x145')));}if(_0x17332b&&_[_0x56a5('0x3a')](config[_0x56a5('0x146')][_0x17332b])){_0x53f251[_0x56a5('0x3b')]='TIMEZONE_UNKNOW';return _0x9123f1(msgResponse(_0x56a5('0x143'),_0x56a5('0x144'),_0x503aae+_0x56a5('0x147')+_0x17332b));}if(_['isArray'](_0x273bf7)){for(var _0x328ea6=0x0;_0x328ea6<_0x273bf7[_0x56a5('0x97')];_0x328ea6+=0x1){_0x541492[_0x56a5('0x12a')](ami[_0x56a5('0x148')]({'action':_0x56a5('0x149'),'command':util[_0x56a5('0x78')](_0x56a5('0x14a'),_0x273bf7[_0x328ea6][_0x56a5('0x14b')],!_[_0x56a5('0x3a')](config[_0x56a5('0x146')][_0x17332b])?_0x17332b:'')})[_0x56a5('0xb9')](function(_0x38c223){return _0x38c223[_0x56a5('0x14c')][_0x56a5('0x14d')](_0x56a5('0x14e'))>=0x0;})[_0x56a5('0xb7')](myreject(_0x9123f1)));}}else{_0x541492['push'](ami['Action']({'action':_0x56a5('0x149'),'command':util[_0x56a5('0x78')](_0x56a5('0x14a'),_0x273bf7,!_[_0x56a5('0x3a')](config[_0x56a5('0x146')][_0x17332b])?_0x17332b:'')})[_0x56a5('0xb9')](function(_0x2189e7){return _0x2189e7[_0x56a5('0x14c')][_0x56a5('0x14d')](_0x56a5('0x14e'))>=0x0;})[_0x56a5('0xb7')](myreject(_0x9123f1)));}BPromise[_0x56a5('0x14f')](_0x541492)[_0x56a5('0xb9')](function(_0x508abb){var _0x4b94a4=_[_0x56a5('0x150')](_0x508abb);if(_0x4b94a4){return _0x54ba64(_0x4b94a4);}else{_0x53f251[_0x56a5('0x3b')]=_0x8ebd69?_0x56a5('0x151'):_0x56a5('0x152');return _0x9123f1(msgResponse(_0x56a5('0x153'),_0x56a5('0x144'),_0x56a5('0x154')+_0x8ebd69+'\x20'+_0x503aae+'\x20Interval\x20is\x20overtime:\x20'+util['inspect'](_0x273bf7,{'showHidden':![],'depth':null})+_0x56a5('0x155')+_0x17332b));}})[_0x56a5('0xb7')](function(_0x532d8f){return _0x9123f1(msgResponse('ifTime',_0x56a5('0x144'),JSON['stringify'](_0x532d8f)));});});};Dialer[_0x56a5('0x1d')][_0x56a5('0x156')]=function(_0x468c52){var _0x2e5e10=this;return function(){switch(_0x468c52[_0x56a5('0x157')]){case _0x56a5('0x158'):freeVariablesPredictive(_0x468c52);_0x2e5e10[_0x56a5('0x159')](_0x468c52,0x1);break;case _0x56a5('0x15a'):freeVariablesPredictive(_0x468c52);_0x2e5e10['handlePower'](_0x468c52,_0x468c52[_0x56a5('0x15b')]);break;case _0x56a5('0xa'):_0x2e5e10[_0x56a5('0xa')](_0x468c52);break;case _0x56a5('0x9'):freeVariablesPredictive(_0x468c52);_0x2e5e10[_0x56a5('0x159')](_0x468c52,0x1);break;default:freeVariablesPredictive(_0x468c52);logger[_0x56a5('0x94')](_0x56a5('0x15c'),_0x468c52['name'],_0x56a5('0x15d'));}};};Dialer['prototype'][_0x56a5('0x15e')]=function(_0x568a8b){var _0x2502e5=this;return function(){_0x2502e5[_0x56a5('0x15f')](_0x568a8b);};};Dialer[_0x56a5('0x1d')][_0x56a5('0xc')]=function(_0x353425){var _0x1ee78b=this;if(isNotPreview(_0x353425['dialMethod'])){if(isVoiceQueueOutbound(_0x353425[_0x56a5('0x4c')])&&isActive(_0x353425[_0x56a5('0x57')])){_0x353425[_0x56a5('0x9f')]=!![];BPromise['resolve']()['then'](checkIsLoggedIn(_0x353425,_0x353425['loggedIn']))['then'](checkIsActive(_0x353425,_0x353425[_0x56a5('0x57')]))[_0x56a5('0xb9')](checkInterval(_0x353425))['then'](_0x1ee78b[_0x56a5('0x140')](_0x353425))[_0x56a5('0xb9')](_0x1ee78b[_0x56a5('0x142')](_0x353425[_0x56a5('0x160')],_0x353425[_0x56a5('0x161')],_0x353425[_0x56a5('0x41')],_0x353425))[_0x56a5('0xb9')](_0x1ee78b[_0x56a5('0x162')](_0x353425[_0x56a5('0x3f')],_0x353425['dialTimezone'],_0x353425[_0x56a5('0x41')],_0x353425))[_0x56a5('0xb9')](_0x1ee78b['checkDialMethod'](_0x353425))['catch'](loggerCatchQueueSummary(_0x56a5('0x163'),_0x353425));}else{notSendMessagesQueue(_0x353425);}}else{freeVariablesPredictive(_0x353425);}};Dialer[_0x56a5('0x1d')][_0x56a5('0x13f')]=function(){var _0xf163ac=this;var _0x57c608;for(var _0x8ad163 in this[_0x56a5('0x24')]){if(typeof this[_0x56a5('0x24')][_0x8ad163]!=='undefined'){_0x57c608=this[_0x56a5('0x24')][_0x8ad163];if(isCampaignIvr(_0x57c608[_0x56a5('0x4c')])&&isActive(_0x57c608[_0x56a5('0x73')])){_0x57c608[_0x56a5('0x9f')]=!![];BPromise[_0x56a5('0xb6')]()[_0x56a5('0xb9')](checkIsActive(_0x57c608,_0x57c608[_0x56a5('0x73')]))[_0x56a5('0xb9')](checkInterval(_0x57c608))[_0x56a5('0xb9')](_0xf163ac['checkIsTrunkReachable'](_0x57c608))[_0x56a5('0xb9')](_0xf163ac[_0x56a5('0x142')](_0x57c608[_0x56a5('0x160')],_0x57c608[_0x56a5('0x161')],_0x57c608['name'],_0x57c608))[_0x56a5('0xb9')](_0xf163ac[_0x56a5('0x162')](_0x57c608[_0x56a5('0x3f')],_0x57c608[_0x56a5('0x161')],_0x57c608['name'],_0x57c608))['then'](_0xf163ac[_0x56a5('0x15e')](_0x57c608))[_0x56a5('0xb7')](loggerCatchQueueSummary(_0x56a5('0x164'),_0x57c608));}else{notSendMessagesCampaign(_0x57c608);}}}};function getCallerIdRandom(_0x9fd019,_0x548512){var _0x329294;var _0x355254;var _0x3917e5;if(_0x548512<=0x0){_0x548512=0x1;}_0x329294=new RegExp(_0x56a5('0x165')+_0x548512+'}$');_0x355254=Math[_0x56a5('0x166')](0xa,_0x548512-0x1);_0x3917e5=Math[_0x56a5('0x166')](0xa,_0x548512)-0x1;return util['format']('%s',_[_0x56a5('0x167')](_0x9fd019,_0x329294,_['random'](_0x355254,_0x3917e5)));}function extractCalleridName(_0x3e0266){var _0x475737=_0x3e0266[_0x56a5('0x168')](/"(.*?)"/);return _0x475737?_0x475737[0x1]:_0x3e0266;}function extractCalleridNumber(_0xcb2264){var _0x2eff75=_0xcb2264['match'](/<(.*?)>/);return _0x2eff75?_0x2eff75[0x1]:_0xcb2264;}Dialer[_0x56a5('0x1d')][_0x56a5('0x169')]=function(_0x5a29b5,_0x5e5d26){var _0xdde13c=this;var _0x30559a=uuid['v4']();this[_0x56a5('0x126')][_0x30559a]=new Action(_0x5a29b5,_0x5e5d26,_0x30559a);return new BPromise(function(_0x1785bb,_0x4c9cd5){if(_[_0x56a5('0x3a')](_0x5a29b5)&&typeof _0x5a29b5!==_0x56a5('0x16a')){return _0x4c9cd5(msgResponse(_0x56a5('0x16b'),_0x56a5('0x144'),_0x56a5('0x16c')));}if(_[_0x56a5('0x3a')](_0x5e5d26[_0x56a5('0x16d')][_0x56a5('0x16e')])||_0x5e5d26[_0x56a5('0x16d')][_0x56a5('0x16e')]===null){return _0x4c9cd5(msgResponse(_0x56a5('0x16b'),'Failure',_0x56a5('0x16f')));}var _0x249105={'XMD-CALLERID':_0xdde13c[_0x56a5('0x126')][_0x30559a][_0x56a5('0x170')](),'XMD-AGI':_0x5a29b5[_0x56a5('0x106')]?util[_0x56a5('0x78')](_0x56a5('0x171'),ipAgi,_0x5a29b5[_0x56a5('0x106')]):_0x56a5('0x172'),'XMD-AGIAFTER':_0x5a29b5['dialQueueProject2']?util[_0x56a5('0x78')](_0x56a5('0x171'),ipAgi,_0x5a29b5[_0x56a5('0x119')]):_0x56a5('0x172'),'XMD-QUEUE':_0x5a29b5[_0x56a5('0x4c')]===_0x56a5('0x4d')?util['format'](_0x56a5('0x173'),_0x5a29b5['name'],_0x5a29b5[_0x56a5('0x174')]||'',_0x5a29b5['dialAgiAfterHangupAgent']?'c':'',_0x5a29b5[_0x56a5('0x117')]||0x3):_0x56a5('0x172'),'XMD-CONTACTID':_0x5e5d26['ContactId'],'XMD-CDRTYPE':_0x56a5('0x8'),'CALLERID(all)':_0xdde13c[_0x56a5('0x126')][_0x30559a][_0x56a5('0x170')](),'XMD-AMD':_0x5a29b5[_0x56a5('0xe2')]?_0x56a5('0x175'):'NONE','XMD-DESTINATION':_0x56a5('0xe1')};if(_0x5a29b5[_0x56a5('0xe2')]){_0x249105['XMD-AMDINITIALSILENCE']=_0x5a29b5[_0x56a5('0x176')]||0x9c4;_0x249105[_0x56a5('0x177')]=_0x5a29b5[_0x56a5('0x178')]||0x5dc;_0x249105['XMD-AMDAFTERGREETINGSILENCE']=_0x5a29b5['dialAMDAfterGreetingSilence']||0x320;_0x249105[_0x56a5('0x179')]=_0x5a29b5['dialAMDTotalAnalysisTime']||0x1388;_0x249105['XMD-AMDMINWORDLENGTH']=_0x5a29b5['dialAMDMinWordLength']||0x64;_0x249105[_0x56a5('0x17a')]=_0x5a29b5['dialAMDBetweenWordsSilence']||0x32;_0x249105['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x5a29b5[_0x56a5('0x17b')]||0x3;_0x249105[_0x56a5('0x17c')]=_0x5a29b5['dialAMDSilenceThreshold']||0x100;_0x249105[_0x56a5('0x17d')]=_0x5a29b5[_0x56a5('0x17e')]||0x1388;}if(_0x5a29b5[_0x56a5('0x4c')]==='outbound'){_0x249105[_0x56a5('0x17f')]=_0x5e5d26['VoiceQueueId'];}else{_0x249105[_0x56a5('0x180')]=_0x5e5d26[_0x56a5('0xd4')];}for(var _0xe1c9b3 in _0x5e5d26['Contact']){if(typeof _0x5e5d26[_0x56a5('0x16d')][_0xe1c9b3]!==_0x56a5('0xad')){if(isNotNull(_0x5e5d26['Contact'][_0xe1c9b3])&&_0xe1c9b3!=='id'&&_0xe1c9b3!==_0x56a5('0x181')&&_0xe1c9b3!=='createdAt'&&_0xe1c9b3!==_0x56a5('0x182')){_0x249105[util[_0x56a5('0x78')](_0x56a5('0x183'),_0x56a5('0x184'),_['toUpper'](_0xe1c9b3))]=_0x5e5d26[_0x56a5('0x16d')][_0xe1c9b3];}}}var _0x5b62e7=_0xdde13c[_0x56a5('0xd7')](_0x5a29b5[_0x56a5('0x72')])?getCallerId(_0x5a29b5[_0x56a5('0x72')][_0x56a5('0x74')],_0x5a29b5['dialOriginateCallerIdName'],_0x5a29b5['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x5a29b5['dialOriginateCallerIdNumber'],_0x5a29b5[_0x56a5('0x185')]):_0x5a29b5[_0x56a5('0x186')]):getCallerId(_[_0x56a5('0xae')](_0x5a29b5[_0x56a5('0x187')])?_0x5a29b5['Trunk'][_0x56a5('0x74')]:_0x5a29b5[_0x56a5('0x187')][_0x56a5('0x74')],_0x5a29b5[_0x56a5('0x58')],_0x5a29b5[_0x56a5('0x185')]>0x0?getCallerIdRandom(_0x5a29b5[_0x56a5('0x186')],_0x5a29b5[_0x56a5('0x185')]):_0x5a29b5[_0x56a5('0x186')]);if(_0x5b62e7){_0x249105[_0x56a5('0x188')]=_0xdde13c[_0x56a5('0x126')][_0x30559a][_0x56a5('0x189')]=extractCalleridName(_0x5b62e7);_0x249105['XMD-ORIGINATECALLERIDNUM']=_0xdde13c[_0x56a5('0x126')][_0x30559a]['originatecalleridnum']=extractCalleridNumber(_0x5b62e7);}return ami[_0x56a5('0x148')]({'actionid':_0x30559a,'action':_0x56a5('0x16b'),'channel':_0xdde13c[_0x56a5('0xd7')](_0x5a29b5[_0x56a5('0x72')])?util[_0x56a5('0x78')](_0x56a5('0x18a'),_0x5a29b5[_0x56a5('0x72')][_0x56a5('0x41')],isNotNull(_0x5a29b5[_0x56a5('0x18b')])?_0x5a29b5[_0x56a5('0x18b')]['trim']()||'':'',_0x5a29b5[_0x56a5('0x18c')]>0x0?_0x5e5d26[_0x56a5('0x16d')][_0x56a5('0x16e')][_0x56a5('0x18d')](_0x5a29b5[_0x56a5('0x18c')]):_0x5e5d26[_0x56a5('0x16d')][_0x56a5('0x16e')]):util['format']('SIP/%s/%s%s',_[_0x56a5('0xae')](_0x5a29b5[_0x56a5('0x187')])?_0x5a29b5['Trunk'][_0x56a5('0x41')]:_0x5a29b5[_0x56a5('0x187')]['name'],isNotNull(_0x5a29b5[_0x56a5('0x18b')])?_0x5a29b5[_0x56a5('0x18b')]['trim']()||'':'',_0x5a29b5[_0x56a5('0x18c')]>0x0?_0x5e5d26[_0x56a5('0x16d')][_0x56a5('0x16e')][_0x56a5('0x18d')](_0x5a29b5['dialCutDigit']):_0x5e5d26[_0x56a5('0x16d')][_0x56a5('0x16e')]),'callerid':_0x5b62e7,'Exten':_0x56a5('0xe1'),'Context':_0x56a5('0x18e'),'Priority':'1','variable':_0x249105,'timeout':(_0x5a29b5[_0x56a5('0x59')]||0x1e)*0x3e8,'async':!![],'channelid':_0x30559a})['then'](function(_0x1531cc){return _0x1785bb(_0x1531cc);})[_0x56a5('0xb7')](function(_0x2edabf){_0x5a29b5['outboundOriginateFailureCallsDay']+=0x1;var _0x281d30=new History(_0xdde13c[_0x56a5('0x126')][_0x30559a]);logger[_0x56a5('0x94')](util[_0x56a5('0x78')](_0x56a5('0x18f'),JSON[_0x56a5('0x47')](_0x2edabf)));_0x281d30['state']=0xe;_0x281d30[_0x56a5('0xa8')]=_0x56a5('0x190');_0x281d30[_0x56a5('0xa9')]=moment()[_0x56a5('0x78')](_0x56a5('0xfc'));_0x281d30[_0x56a5('0x11e')]=_0x281d30[_0x56a5('0xa9')];_0xdde13c[_0x56a5('0xca')](_0x281d30)['catch'](loggerCatch('[originate][error]'));_0xdde13c[_0x56a5('0xc8')](_0x281d30)[_0x56a5('0xb7')](loggerCatch('[originate][error]'))[_0x56a5('0x20')](function(){delete _0xdde13c[_0x56a5('0x126')][_0x30559a];return _0x4c9cd5(msgResponse('originate',_0x56a5('0x46'),'originate\x20action\x20Error'));});});});};Dialer[_0x56a5('0x1d')]['syncOriginateResponse']=function(_0x57c417){var _0x450ca4=this[_0x56a5('0x126')][_0x57c417[_0x56a5('0x127')]];if(_0x450ca4){delete this[_0x56a5('0x126')][_0x57c417['actionid']];_0x450ca4[_0x56a5('0x116')]=moment()[_0x56a5('0x78')](_0x56a5('0xfc'));var _0x53ae14=_0x450ca4[_0x56a5('0x4c')]==='ivr'?this[_0x56a5('0x24')][_0x450ca4['queue']]:this[_0x56a5('0x23')][_0x450ca4[_0x56a5('0x191')]()];if(!this[_0x56a5('0xd6')](_0x57c417[_0x56a5('0x192')])){this[_0x56a5('0xb2')](_0x53ae14);return this[_0x56a5('0x193')](_0x450ca4,_0x53ae14,_0x57c417)['catch'](loggerCatch(_0x56a5('0x194')));}this['uniqueId'][_0x57c417[_0x56a5('0xdd')]]=_0x450ca4;}};Dialer[_0x56a5('0x1d')]['checkRetriveMax']=function(_0x122a3f,_0x10f4e1,_0x3ebf85){var _0x4377d6=new History(_0x10f4e1);if(_0x4377d6[_0x56a5('0xf0')]+_0x4377d6[_0x56a5('0x195')]+_0x4377d6[_0x56a5('0xf1')]+_0x4377d6[_0x56a5('0xf2')]+_0x4377d6[_0x56a5('0x11b')]+_0x4377d6[_0x56a5('0xf3')]+_0x4377d6[_0x56a5('0xee')]+_0x4377d6[_0x56a5('0xf4')]>=_0x3ebf85[_0x56a5('0xf5')]-0x1){return!![];}switch(_0x122a3f){case 0x3:if(_0x4377d6['countnoanswerretry']>=_0x3ebf85[_0x56a5('0x196')]-0x1){return!![];}this[_0x56a5('0xfb')]({'active':![],'countnoanswerretry':_0x4377d6['countnoanswerretry']+=0x1,'scheduledat':moment()['add'](_0x3ebf85[_0x56a5('0x197')],'minutes')[_0x56a5('0x78')](_0x56a5('0xfc')),'ContactId':_0x4377d6['ContactId'],'ListId':_0x4377d6[_0x56a5('0xd1')],'VoiceQueueId':_0x4377d6[_0x56a5('0xd3')]||undefined,'CampaignId':_0x4377d6[_0x56a5('0xd4')]||undefined})[_0x56a5('0xb7')](loggerCatch('[rescheduleContact][NoAnswer]'));break;case 0x5:if(_0x4377d6['countbusyretry']>=_0x3ebf85[_0x56a5('0x198')]-0x1){return!![];}this[_0x56a5('0xfb')]({'active':![],'countbusyretry':_0x4377d6['countbusyretry']+=0x1,'scheduledat':moment()[_0x56a5('0x101')](_0x3ebf85[_0x56a5('0x199')],_0x56a5('0x103'))[_0x56a5('0x78')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4377d6[_0x56a5('0xd0')],'ListId':_0x4377d6['ListId'],'VoiceQueueId':_0x4377d6[_0x56a5('0xd3')]||undefined,'CampaignId':_0x4377d6[_0x56a5('0xd4')]||undefined})[_0x56a5('0xb7')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x4377d6[_0x56a5('0x195')]>=_0x3ebf85[_0x56a5('0x19a')]-0x1){return!![];}this[_0x56a5('0xfb')]({'active':![],'countcongestionretry':_0x4377d6[_0x56a5('0x195')]+=0x1,'scheduledat':moment()['add'](_0x3ebf85[_0x56a5('0x19b')],_0x56a5('0x103'))[_0x56a5('0x78')](_0x56a5('0xfc')),'ContactId':_0x4377d6[_0x56a5('0xd0')],'ListId':_0x4377d6[_0x56a5('0xd1')],'VoiceQueueId':_0x4377d6[_0x56a5('0xd3')]||undefined,'CampaignId':_0x4377d6['CampaignId']||undefined})[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x19c')));break;case 0x0:if(_0x4377d6['countnosuchnumberretry']>=_0x3ebf85[_0x56a5('0x19d')]-0x1){return!![];}else{this[_0x56a5('0xfb')]({'active':![],'countnosuchnumberretry':_0x4377d6['countnosuchnumberretry']+=0x1,'scheduledat':moment()[_0x56a5('0x101')](_0x3ebf85[_0x56a5('0x19e')],_0x56a5('0x103'))[_0x56a5('0x78')](_0x56a5('0xfc')),'ContactId':_0x4377d6[_0x56a5('0xd0')],'ListId':_0x4377d6['ListId'],'VoiceQueueId':_0x4377d6[_0x56a5('0xd3')]||undefined,'CampaignId':_0x4377d6[_0x56a5('0xd4')]||undefined})[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x19f')));}break;case 0xa:if(_0x4377d6['countdropretry']>=_0x3ebf85[_0x56a5('0x1a0')]-0x1){return!![];}this[_0x56a5('0xfb')]({'active':![],'countdropretry':_0x4377d6[_0x56a5('0x11b')]+=0x1,'scheduledat':moment()[_0x56a5('0x101')](_0x3ebf85['dialDropRetryFrequency'],_0x56a5('0x103'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4377d6[_0x56a5('0xd0')],'ListId':_0x4377d6[_0x56a5('0xd1')],'VoiceQueueId':_0x4377d6[_0x56a5('0xd3')]||undefined,'CampaignId':_0x4377d6['CampaignId']||undefined})['catch'](loggerCatch(_0x56a5('0x11d')));break;case 0xb:if(_0x4377d6['countabandonedretry']>=_0x3ebf85[_0x56a5('0x1a1')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x4377d6[_0x56a5('0xf3')]+=0x1,'scheduledat':moment()[_0x56a5('0x101')](_0x3ebf85[_0x56a5('0x1a2')],_0x56a5('0x103'))[_0x56a5('0x78')](_0x56a5('0xfc')),'ContactId':_0x4377d6[_0x56a5('0xd0')],'ListId':_0x4377d6[_0x56a5('0xd1')],'VoiceQueueId':_0x4377d6[_0x56a5('0xd3')]||undefined,'CampaignId':_0x4377d6[_0x56a5('0xd4')]||undefined})[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x1a3')));break;case 0x13:if(_0x4377d6[_0x56a5('0xee')]>=_0x3ebf85[_0x56a5('0xf8')]-0x1){return!![];}this[_0x56a5('0xfb')]({'active':![],'countmachineretry':_0x4377d6['countmachineretry']+=0x1,'scheduledat':moment()[_0x56a5('0x101')](_0x3ebf85[_0x56a5('0x102')],_0x56a5('0x103'))['format'](_0x56a5('0xfc')),'ContactId':_0x4377d6[_0x56a5('0xd0')],'ListId':_0x4377d6['ListId'],'VoiceQueueId':_0x4377d6[_0x56a5('0xd3')]||undefined,'CampaignId':_0x4377d6[_0x56a5('0xd4')]||undefined})[_0x56a5('0xb7')](loggerCatch(_0x56a5('0xfd')));break;case 0x14:if(_0x4377d6[_0x56a5('0xf4')]>=_0x3ebf85[_0x56a5('0x1a4')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countagentrejectretry':_0x4377d6[_0x56a5('0xf4')]+=0x1,'scheduledat':moment()[_0x56a5('0x101')](_0x3ebf85[_0x56a5('0x1a5')],'minutes')['format'](_0x56a5('0xfc')),'ContactId':_0x4377d6[_0x56a5('0xd0')],'ListId':_0x4377d6[_0x56a5('0xd1')],'VoiceQueueId':_0x4377d6[_0x56a5('0xd3')]||undefined,'CampaignId':_0x4377d6['CampaignId']||undefined})[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x1a6')));break;default:return!![];}};Dialer[_0x56a5('0x1d')][_0x56a5('0x193')]=function(_0x568086,_0x299dac,_0x21ad80){var _0x2f87a7=this;var _0xba81a=new History(_0x568086);return new BPromise(function(_0xc8e50d,_0x5a50f1){if(_[_0x56a5('0x3a')](_0x299dac)&&typeof _0x299dac!==_0x56a5('0x16a')){return _0x5a50f1(msgResponse(_0x56a5('0x1a7'),_0x56a5('0x144'),'entity\x20is\x20undefine'));}if(_['isUndefined'](_0x21ad80)&&typeof _0x21ad80!==_0x56a5('0x16a')){return _0x5a50f1(msgResponse(_0x56a5('0x1a7'),_0x56a5('0x144'),_0x56a5('0x1a8')));}switch(_0x21ad80[_0x56a5('0x10b')]){case'0':_0x299dac[_0x56a5('0x61')]+=0x1;_0xba81a[_0x56a5('0xa7')]=0x0;_0xba81a[_0x56a5('0xa8')]=_0x56a5('0x1a9');_0xba81a[_0x56a5('0xf2')]+=0x1;_0xba81a[_0x56a5('0x100')]+=0x1;ami[_0x56a5('0x4b')](_0x56a5('0x1aa'),ut[_0x56a5('0xe8')](_0x568086,_0x56a5('0x1ab')));_0x2f87a7[_0x56a5('0xca')](_0xba81a)[_0x56a5('0xb7')](loggerCatch(_0x56a5('0xef')));if(_0x2f87a7[_0x56a5('0x1ac')](0x0,_0x568086,_0x299dac)){if(_0xba81a[_0x56a5('0xf2')]>=_0x299dac[_0x56a5('0x19d')]){_0x2f87a7[_0x56a5('0xf9')](_0xba81a,_0xc8e50d,_0x5a50f1,_0x56a5('0x1ad'));}else{_0x2f87a7[_0x56a5('0xf6')](_0xba81a,_0xc8e50d,_0x5a50f1,_0x56a5('0x1ad'));}}break;case'3':_0x299dac[_0x56a5('0x60')]+=0x1;_0xba81a['state']=0x3;_0xba81a['statedesc']=_0x56a5('0x1ae');_0xba81a['countnoanswerretry']+=0x1;_0xba81a[_0x56a5('0x100')]+=0x1;ami['emit'](_0x56a5('0x1af'),ut['buildObj'](_0x568086,_0x56a5('0x1b0')));_0x2f87a7['createHistory'](_0xba81a)[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x1b1')));if(_0x2f87a7[_0x56a5('0x1ac')](0x3,_0x568086,_0x299dac)){if(_0xba81a['countnoanswerretry']>=_0x299dac[_0x56a5('0x196')]){_0x2f87a7[_0x56a5('0xf9')](_0xba81a,_0xc8e50d,_0x5a50f1,_0x56a5('0x1b2'));}else{_0x2f87a7[_0x56a5('0xf6')](_0xba81a,_0xc8e50d,_0x5a50f1,_0x56a5('0x1b2'));}}break;case'5':_0x299dac[_0x56a5('0x1b3')]+=0x1;_0xba81a[_0x56a5('0xa7')]=0x5;_0xba81a[_0x56a5('0xa8')]=_0x56a5('0x1b4');_0xba81a[_0x56a5('0xf0')]+=0x1;_0xba81a['countglobal']+=0x1;ami[_0x56a5('0x4b')](_0x56a5('0x1b5'),ut[_0x56a5('0xe8')](_0x568086,'busy'));_0x2f87a7[_0x56a5('0xca')](_0xba81a)['catch'](loggerCatch(_0x56a5('0x1b6')));if(_0x2f87a7[_0x56a5('0x1ac')](0x5,_0x568086,_0x299dac)){if(_0xba81a['countbusyretry']>=_0x299dac[_0x56a5('0x198')]){_0x2f87a7[_0x56a5('0xf9')](_0xba81a,_0xc8e50d,_0x5a50f1,'reason\x205\x20busy');}else{_0x2f87a7[_0x56a5('0xf6')](_0xba81a,_0xc8e50d,_0x5a50f1,'reason\x205\x20busy');}}break;case'8':_0x299dac[_0x56a5('0x5d')]+=0x1;_0xba81a[_0x56a5('0xa7')]=0x8;_0xba81a[_0x56a5('0xa8')]='Congestion';_0xba81a[_0x56a5('0x195')]+=0x1;_0xba81a[_0x56a5('0x100')]+=0x1;ami[_0x56a5('0x4b')](_0x56a5('0x1b7'),ut[_0x56a5('0xe8')](_0x568086,_0x56a5('0x1b8')));_0x2f87a7[_0x56a5('0xca')](_0xba81a)[_0x56a5('0xb7')](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x2f87a7['checkRetriveMax'](0x8,_0x568086,_0x299dac)){if(_0xba81a[_0x56a5('0x195')]>=_0x299dac[_0x56a5('0x19a')]){_0x2f87a7[_0x56a5('0xf9')](_0xba81a,_0xc8e50d,_0x5a50f1,_0x56a5('0x1b9'));}else{_0x2f87a7[_0x56a5('0xf6')](_0xba81a,_0xc8e50d,_0x5a50f1,'reason\x208\x20congestion');}}break;case'11':_0x299dac['outboundAbandonedCallsDay']+=0x1;_0xba81a[_0x56a5('0xa7')]=0xb;_0xba81a[_0x56a5('0xa8')]='Abandoned';_0xba81a[_0x56a5('0xf3')]+=0x1;_0xba81a[_0x56a5('0x100')]+=0x1;_0x2f87a7['createHistory'](_0xba81a)[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x124')));if(_0x2f87a7[_0x56a5('0x1ac')](0xb,_0x568086,_0x299dac)){if(_0xba81a[_0x56a5('0xf3')]>=_0x299dac[_0x56a5('0x1a1')]){_0x2f87a7[_0x56a5('0xf9')](_0xba81a,_0xc8e50d,_0x5a50f1,_0x56a5('0x1ba'));}else{_0x2f87a7[_0x56a5('0xf6')](_0xba81a,_0xc8e50d,_0x5a50f1,_0x56a5('0x1ba'));}}break;case'20':_0x299dac[_0x56a5('0x64')]+=0x1;_0xba81a[_0x56a5('0xa7')]=0x14;_0xba81a['statedesc']='AgentReject';_0xba81a['countagentrejectretry']+=0x1;_0xba81a['countglobal']+=0x1;ami[_0x56a5('0x4b')](_0x56a5('0x1bb'),ut[_0x56a5('0xe8')](_0x568086,_0x56a5('0x1bc')));_0x2f87a7[_0x56a5('0xca')](_0xba81a)[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x1bd')));if(_0x2f87a7[_0x56a5('0x1ac')](0x14,_0x568086,_0x299dac)){if(_0xba81a[_0x56a5('0xf4')]>=_0x299dac[_0x56a5('0x1a4')]){_0x2f87a7['createStateFinal'](_0xba81a,_0xc8e50d,_0x5a50f1,'reason\x2020\x20agentreject');}else{_0x2f87a7[_0x56a5('0xf6')](_0xba81a,_0xc8e50d,_0x5a50f1,'reason\x2020\x20agentreject');}}break;default:_0x299dac[_0x56a5('0x65')]+=0x1;_0xba81a[_0x56a5('0xa7')]=0xc;_0xba81a[_0x56a5('0xa8')]=_0x21ad80[_0x56a5('0x10b')];_0x2f87a7[_0x56a5('0xca')](_0xba81a)[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x1be')));if(_0x2f87a7[_0x56a5('0x1ac')](_0x21ad80[_0x56a5('0x10b')],_0x568086,_0x299dac)){if(_0xba81a[_0x56a5('0xf0')]+_0xba81a[_0x56a5('0x195')]+_0xba81a[_0x56a5('0xf1')]+_0xba81a[_0x56a5('0xf2')]+_0xba81a[_0x56a5('0x11b')]+_0xba81a[_0x56a5('0xf3')]+_0xba81a[_0x56a5('0xee')]+_0xba81a[_0x56a5('0xf4')]>=_0x299dac[_0x56a5('0xf5')]){_0x2f87a7[_0x56a5('0xf6')](_0xba81a,_0xc8e50d,_0x5a50f1,_0x21ad80[_0x56a5('0x10b')]);}else{_0x2f87a7[_0x56a5('0xf9')](_0xba81a,_0xc8e50d,_0x5a50f1,_0x21ad80[_0x56a5('0x10b')]);}}}});};Dialer['prototype'][_0x56a5('0xf6')]=function(_0x264edd,_0xee4927,_0x39f38c,_0x394f74){var _0xbca7bf=new Final(_0x264edd);_0xbca7bf[_0x56a5('0xa7')]=0xf;_0xbca7bf[_0x56a5('0xa8')]=_0x56a5('0x1bf');this[_0x56a5('0xf9')](_0xbca7bf,_0xee4927,_0x39f38c,_0x394f74);};Dialer['prototype'][_0x56a5('0xf9')]=function(_0x2666d9,_0x40db9c,_0x375336,_0x155bd5){this[_0x56a5('0xc8')](_0x2666d9)[_0x56a5('0xb9')](function(){return _0x40db9c(msgResponse(_0x56a5('0x1a7'),_0x56a5('0x1c0'),_0x155bd5));})[_0x56a5('0xb7')](function(){return _0x375336(msgResponse(_0x56a5('0x1c1'),_0x56a5('0x144'),'contact\x20not\x20moved'));});};Dialer[_0x56a5('0x1d')][_0x56a5('0xa')]=function(_0x42adaa){var _0x9ead90=_0x42adaa[_0x56a5('0x1c2')]/0x64;var _0x35cedb=_0x42adaa[_0x56a5('0x5f')]/(_0x42adaa[_0x56a5('0x5f')]+_0x42adaa[_0x56a5('0x5b')]);var _0x52d2f1=Math[_0x56a5('0x1c3')](_0x42adaa[_0x56a5('0x6c')]*(_0x42adaa[_0x56a5('0x1c4')]/0x64));var _0x5bec6a=Math[_0x56a5('0x1c3')](_0x42adaa[_0x56a5('0x6c')]*(_0x42adaa[_0x56a5('0x1c5')]/0x64));var _0x31f4bc=_0x42adaa['available']+_0x42adaa['talking'];var _0x3a10af=Math['floor'](_0x42adaa[_0x56a5('0x1c6')]*_0x42adaa[_0x56a5('0x6f')]*_0x42adaa[_0x56a5('0x1c7')]*_0x42adaa[_0x56a5('0x6a')]);if(_[_0x56a5('0x3a')](_0x42adaa['startProgressive'])){if(!_['isUndefined'](_0x42adaa[_0x56a5('0x71')])){_0x42adaa[_0x56a5('0x71')]=undefined;loggerPredictive['error'](_0x56a5('0x1c8'),_0x56a5('0x1c9'));}if(!_[_0x56a5('0x3a')](_0x42adaa['handlePredictive'])){loggerPredictive[_0x56a5('0x94')](_0x56a5('0x1c8'),_0x56a5('0x1ca'));clearInterval(_0x42adaa[_0x56a5('0x8f')]);_0x42adaa[_0x56a5('0x8f')]=undefined;}_0x42adaa[_0x56a5('0x2a')]=moment()[_0x56a5('0x78')](_0x56a5('0xfc'));loggerPredictive[_0x56a5('0x7b')](_0x42adaa[_0x56a5('0x41')],'collection\x20data\x20in\x20progressive\x20at',_0x42adaa[_0x56a5('0x2a')]);this[_0x56a5('0x159')](_0x42adaa,0x1);}else if(ifInterval(_0x42adaa[_0x56a5('0x1cb')],_0x42adaa[_0x56a5('0x2a')])){this['handlePower'](_0x42adaa,0x1);loggerPredictiveCalls[_0x56a5('0x7b')](_0x56a5('0x1cc'),_0x42adaa[_0x56a5('0x2a')],_0x42adaa['name']);_0x42adaa[_0x56a5('0x1c6')]=0x0;_0x42adaa[_0x56a5('0x1cd')]=0x0;}else if(_0x9ead90<_0x35cedb&&_0x42adaa['dialPredictiveOptimization']===_0x56a5('0x1ce')){freeVariablesPredictive(_0x42adaa);loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x1cf'),_0x56a5('0x1d0'),_0x35cedb,_0x56a5('0x2a'),_0x42adaa[_0x56a5('0x41')]);}else if(_0x3a10af<_0x42adaa[_0x56a5('0x1cd')]&&_0x42adaa[_0x56a5('0x1d1')]===_0x56a5('0x1ce')){freeVariablesPredictive(_0x42adaa);loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x1d2'),'Max\x20Drop\x20',_0x3a10af,_0x56a5('0x1d3'),_0x42adaa[_0x56a5('0x1cd')],'startProgressive',_0x42adaa[_0x56a5('0x41')]);}else if(!ifInterval(_0x42adaa[_0x56a5('0x1cb')],_0x42adaa[_0x56a5('0x2a')])&&_[_0x56a5('0x3a')](_0x42adaa[_0x56a5('0x71')])&&!_[_0x56a5('0x3a')](_0x42adaa[_0x56a5('0x2a')])){_0x42adaa['startPredictive']=moment()[_0x56a5('0x78')](_0x56a5('0xfc'));loggerPredictive[_0x56a5('0x7b')](_0x42adaa['name'],_0x56a5('0x1d4'),_0x42adaa[_0x56a5('0x71')]);this[_0x56a5('0xbc')](_0x42adaa[_0x56a5('0x1cb')])[_0x56a5('0xb9')](this[_0x56a5('0x1d5')](_0x42adaa))[_0x56a5('0xb9')](mergeDataErlangB(_0x42adaa))[_0x56a5('0xb9')](this[_0x56a5('0x1d6')](_0x42adaa))['catch'](loggerCatchPredictive(_0x56a5('0x1d7'),_0x42adaa));}else if(!ifInterval(_0x42adaa[_0x56a5('0x1cb')],_0x42adaa[_0x56a5('0x71')])){_0x42adaa[_0x56a5('0x1cd')]=0x0;_0x42adaa[_0x56a5('0x71')]=moment()[_0x56a5('0x78')](_0x56a5('0xfc'));loggerPredictive[_0x56a5('0x7b')](_0x42adaa[_0x56a5('0x41')],_0x56a5('0x1d8'),_0x42adaa[_0x56a5('0x71')]);clearInterval(_0x42adaa[_0x56a5('0x8f')]);_0x42adaa[_0x56a5('0x8f')]=undefined;this['averageHandleTime'](_0x42adaa[_0x56a5('0x1cb')])[_0x56a5('0xb9')](this['getDataPredictive'](_0x42adaa))[_0x56a5('0xb9')](mergeDataErlangB(_0x42adaa))[_0x56a5('0xb9')](this['startMethodPredictive'](_0x42adaa))[_0x56a5('0xb7')](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x42adaa));}else if(_0x42adaa[_0x56a5('0x6c')]&&_0x31f4bc<_0x42adaa[_0x56a5('0x6c')]-_0x5bec6a){freeVariablesPredictive(_0x42adaa);loggerPredictive['info'](_0x42adaa[_0x56a5('0x41')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x31f4bc,_0x56a5('0x1d9'),_0x42adaa['predictiveIntervalAvailable'],'-',_0x5bec6a,'=',_0x42adaa[_0x56a5('0x6c')]-_0x5bec6a,')');}else if(_0x42adaa['predictiveIntervalAvailable']&&_0x31f4bc>_0x42adaa[_0x56a5('0x6c')]+_0x52d2f1){freeVariablesPredictive(_0x42adaa);loggerPredictive['info'](_0x42adaa['name'],_0x56a5('0x1da'),_0x31f4bc,')\x20are\x20more\x20than\x20threshold\x20(',_0x42adaa[_0x56a5('0x6c')],'+',_0x52d2f1,'=',_0x42adaa[_0x56a5('0x6c')]+_0x52d2f1,')');}};Dialer[_0x56a5('0x1d')]['getDataPredictive']=function(_0x2622d0){var _0x429933=this;return function(_0x21b11b){return new BPromise(function(_0x9b5b48,_0x3f4f63){_[_0x56a5('0x8c')](_0x2622d0,_0x21b11b[0x0]);if(checkGetDataPredictive(_0x21b11b[0x0])){var _0xbba608=_0x2622d0[_0x56a5('0x6c')]=_0x2622d0[_0x56a5('0x53')]+_0x2622d0[_0x56a5('0xa1')];var _0x11b92a=_0x2622d0[_0x56a5('0x1cb')]*0x3c;var _0x3dd93e=_0x21b11b[0x0][_0x56a5('0x67')]+_0x21b11b[0x0][_0x56a5('0x66')];var _0x3c54c2=(_0x21b11b[0x0][_0x56a5('0x7f')]+_0x21b11b[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x21b11b[0x0][_0x56a5('0x81')])/_0x21b11b[0x0]['predictiveIntervalTotalCalls'];_0x2622d0[_0x56a5('0x1c7')]=_0x3c54c2>0x0?_0x3c54c2:0x1;switch(_0x2622d0[_0x56a5('0x1d1')]){case _0x56a5('0x1ce'):var _0x341756=_0x2622d0[_0x56a5('0x1c2')]/0x64;return _0x429933['abandonmentRate'](_0xbba608,_0x11b92a,_0x3dd93e,_0x3c54c2,_0x341756)[_0x56a5('0xb9')](function(_0xee3db8){return _0x9b5b48(_0xee3db8);});case'agentBusyFactor':var _0x5788d4=_0x2622d0[_0x56a5('0x1c2')]/0x64;return _0x429933[_0x56a5('0x1db')](_0xbba608,_0x11b92a,_0x3dd93e,_0x3c54c2,_0x5788d4)[_0x56a5('0xb9')](function(_0x3f579e){return _0x9b5b48(_0x3f579e);});default:return _0x3f4f63(msgResponse(_0x56a5('0x1dc'),_0x56a5('0x144'),'Unknown\x20Predictive'));}}else{return _0x3f4f63(msgResponse(_0x56a5('0x1dc'),_0x56a5('0x144'),_0x56a5('0x1dd')));}});};};Dialer[_0x56a5('0x1d')]['getDataPredictiveOld']=function(_0x1bc90f){var _0x365e28=this;return function(_0x9ea4){return new BPromise(function(_0x446571,_0x3e1624){_[_0x56a5('0x8c')](_0x1bc90f,_0x9ea4[0x0]);if(checkGetDataPredictive(_0x9ea4[0x0])){loggerPredictive[_0x56a5('0x7b')](JSON[_0x56a5('0x47')](_0x9ea4[0x0]));if(_0x1bc90f[_0x56a5('0x1d1')]===_0x56a5('0x1ce')){return _0x365e28['getVoiceQueueRtPauses'](_0x1bc90f['id'])['then'](function(_0x156e41){var _0x10efbf=_0x1bc90f[_0x56a5('0x1de')]-_0x156e41[0x0][_0x56a5('0x1df')];var _0x477075=_0x1bc90f['dialPredictiveInterval']*0x3c;var _0x5661d1=_0x9ea4[0x0][_0x56a5('0x67')]+_0x9ea4[0x0][_0x56a5('0x66')];var _0xc33422=(_0x9ea4[0x0]['predictiveIntervalAnsweredCalls']+_0x9ea4[0x0][_0x56a5('0x68')]+_0x9ea4[0x0][_0x56a5('0x81')])/_0x9ea4[0x0][_0x56a5('0x6d')];var _0x696f14=_0x1bc90f[_0x56a5('0x1c2')]/0x64;_0x1bc90f[_0x56a5('0x6b')]=_0x156e41[0x0][_0x56a5('0x1df')]||0x0;_0x1bc90f[_0x56a5('0x1c7')]=_0xc33422>0x0?_0xc33422:0x1;return _0x365e28[_0x56a5('0x1e0')](_0x10efbf,_0x477075,_0x5661d1,_0xc33422,_0x696f14);})[_0x56a5('0xb9')](function(_0x4fe578){return _0x446571(_0x4fe578);})[_0x56a5('0xb7')](function(_0x130e1e){return _0x3e1624(msgResponse(_0x56a5('0x1e1'),_0x56a5('0x144'),JSON[_0x56a5('0x47')](_0x130e1e)));});}if(_0x1bc90f[_0x56a5('0x1d1')]===_0x56a5('0x1e2')){return _0x365e28[_0x56a5('0xc6')](_0x1bc90f['id'])[_0x56a5('0xb9')](function(_0x462f3f){var _0x5b9c48=_0x1bc90f[_0x56a5('0x1de')]-_0x462f3f[0x0]['outboundQueuePauses'];var _0x231482=_0x1bc90f['dialPredictiveInterval']*0x3c;var _0x27fa50=_0x9ea4[0x0]['predictiveIntervalAvgTalktime']+_0x9ea4[0x0][_0x56a5('0x66')];var _0x271c26=(_0x9ea4[0x0][_0x56a5('0x7f')]+_0x9ea4[0x0][_0x56a5('0x68')]+_0x9ea4[0x0][_0x56a5('0x81')])/_0x9ea4[0x0]['predictiveIntervalTotalCalls'];var _0x5e328b=_0x1bc90f[_0x56a5('0x1c2')]/0x64;_0x1bc90f['predictiveIntervalPauses']=_0x462f3f[0x0][_0x56a5('0x1df')]||0x0;_0x1bc90f[_0x56a5('0x1c7')]=_0x271c26>0x0?_0x271c26:0x1;return _0x365e28[_0x56a5('0x1db')](_0x5b9c48,_0x231482,_0x27fa50,_0x271c26,_0x5e328b);})[_0x56a5('0xb9')](function(_0x53fab7){return _0x446571(_0x53fab7);})[_0x56a5('0xb7')](function(_0x342bfb){return _0x3e1624(msgResponse('[CatchErlangB]',_0x56a5('0x144'),JSON[_0x56a5('0x47')](_0x342bfb)));});}}else{return _0x3e1624(msgResponse(_0x56a5('0x1dc'),'Failure',_0x56a5('0x1dd')));}});};};Dialer[_0x56a5('0x1d')][_0x56a5('0x1d6')]=function(_0x2bcc7c){var _0x444d4d=this;return function(){var _0x1ffd76=0x0;var _0x351c7e=Math['floor'](_0x2bcc7c[_0x56a5('0x8a')]*0x3e8);if(_0x351c7e>0x0){_0x351c7e=_0x351c7e<0x64?0x64:_0x351c7e;loggerPredictive['info'](_0x2bcc7c[_0x56a5('0x41')],_0x56a5('0x1e3'),_0x351c7e,_0x56a5('0x48'));_0x2bcc7c[_0x56a5('0x8f')]=setInterval(function(){_0x444d4d[_0x56a5('0x8f')](_0x2bcc7c);loggerPredictiveCalls['info'](_0x56a5('0x1e4'),_0x1ffd76+=0x1);},_0x351c7e);}else{loggerPredictive[_0x56a5('0x7b')](_0x2bcc7c[_0x56a5('0x41')],_0x56a5('0x1e5'));}};};Dialer['prototype'][_0x56a5('0x1e6')]=function(_0x5e9755,_0x3d35bc){var _0x47cfef=this;return function(_0x5f3394){if(_['isEmpty'](_0x5f3394)){if(_[_0x56a5('0xae')](_0x3d35bc[_0x56a5('0xd2')])||!_0x3d35bc[_0x56a5('0x1e7')]){if(_0x5e9755[_0x56a5('0x157')]===_0x56a5('0x9')){_0x5e9755[_0x56a5('0x12e')]=_['isUndefined'](_0x5e9755[_0x56a5('0x12e')])?!![]:_0x5e9755[_0x56a5('0x12e')];var _0x2d8f89=uuid['v4']();_0x47cfef['actions'][_0x2d8f89]=new Action(_0x5e9755,_0x3d35bc,_0x2d8f89);loggerBooked[_0x56a5('0x7b')](_0x56a5('0x1e8'),_0x2d8f89,_0x56a5('0x1e9'),JSON[_0x56a5('0x47')](_0x5e9755[_0x56a5('0x12e')]),'Queue:\x20',_0x5e9755[_0x56a5('0x41')]);if(_0x5e9755[_0x56a5('0x12e')]){_0x5e9755[_0x56a5('0x12e')]=![];_0x47cfef[_0x56a5('0x2c')][_0x47cfef[_0x56a5('0x126')][_0x2d8f89][_0x56a5('0xb3')]]=[];ami[_0x56a5('0x148')]({'actionid':_0x2d8f89,'action':'queuestatus','queue':_0x5e9755['name']})[_0x56a5('0xb7')](function(){_0x47cfef[_0x56a5('0xb2')](_0x5e9755);_0x47cfef[_0x56a5('0xfb')]({'active':![],'ContactId':_0x47cfef[_0x56a5('0x126')][_0x2d8f89][_0x56a5('0xd0')],'ListId':_0x47cfef[_0x56a5('0x126')][_0x2d8f89][_0x56a5('0xd1')],'VoiceQueueId':_0x47cfef['actions'][_0x2d8f89][_0x56a5('0xd3')]||undefined,'CampaignId':_0x47cfef[_0x56a5('0x126')][_0x2d8f89][_0x56a5('0xd4')]||undefined})[_0x56a5('0xb7')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x47cfef[_0x56a5('0x126')][_0x2d8f89];});}else{loggerBooked[_0x56a5('0x7b')](_0x56a5('0x1ea'),JSON['stringify'](_0x5e9755['queueStatusComplete']),_0x56a5('0x1eb'),_0x5e9755['name']);_0x47cfef[_0x56a5('0xb2')](_0x5e9755);_0x47cfef[_0x56a5('0xfb')]({'active':![],'ContactId':_0x47cfef[_0x56a5('0x126')][_0x2d8f89]['ContactId'],'ListId':_0x47cfef[_0x56a5('0x126')][_0x2d8f89]['ListId'],'VoiceQueueId':_0x47cfef[_0x56a5('0x126')][_0x2d8f89][_0x56a5('0xd3')]||undefined,'CampaignId':_0x47cfef[_0x56a5('0x126')][_0x2d8f89][_0x56a5('0xd4')]||undefined})[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x1ec')));delete _0x47cfef[_0x56a5('0x126')][_0x2d8f89];}}else{return _0x47cfef[_0x56a5('0x169')](_0x5e9755,_0x3d35bc);}}else{if(getDiff(_0x3d35bc[_0x56a5('0x1ed')])<_0x5e9755[_0x56a5('0x1ee')]*0x3c){if(_0x3d35bc['Agent']&&!_0x3d35bc[_0x56a5('0x1ef')][_0x56a5('0x1f0')]){_0x47cfef[_0x56a5('0x22')][_0x56a5('0x131')](_0x3d35bc['id'])[_0x56a5('0x20')](function(){_0x47cfef['updateOriginated'](_0x5e9755);});}else{_0x47cfef[_0x56a5('0xc0')]({'active':![]},_0x3d35bc['id'],0x1)[_0x56a5('0x20')](function(){_0x47cfef[_0x56a5('0xb2')](_0x5e9755);});}}else{_0x5e9755[_0x56a5('0x63')]+=0x1;_0x47cfef[_0x56a5('0xb2')](_0x5e9755);if(_0x5e9755[_0x56a5('0x1f1')]){_0x47cfef['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x3d35bc['ContactId'],'ListId':_0x3d35bc['ListId'],'VoiceQueueId':_0x3d35bc['VoiceQueueId']||undefined,'CampaignId':_0x3d35bc[_0x56a5('0xd4')]||undefined})[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x1f2')));_0x47cfef[_0x56a5('0xca')](createObjHistory(_0x5e9755,_0x3d35bc,_0x56a5('0x1f3'),0x17,_0x56a5('0x1f4')))[_0x56a5('0xb7')](loggerCatch(_0x56a5('0x1f5')));}else{_0x47cfef[_0x56a5('0xcf')](createObjHistory(_0x5e9755,_0x3d35bc,'RECALLFAILEDTIMEOUT',0x16,'RecallFailedTimeout'),_0x56a5('0x1f6'),_0x56a5('0x1f7'));}}}}else{_0x5e9755[_0x56a5('0x5c')]+=0x1;_0x47cfef[_0x56a5('0xcf')](createObjHistory(_0x5e9755,_0x3d35bc,_0x56a5('0x1f8'),0xd,_0x56a5('0x1f9')),_0x56a5('0x1fa'),'[Originate][MoveBlacklist]');throw _0x56a5('0x1fb');}};};Dialer['prototype'][_0x56a5('0x15f')]=function(_0x577e42){var _0x27e880=this;var _0x1da3bf=_0x577e42[_0x56a5('0x1fc')]-_0x577e42[_0x56a5('0x6e')]-_0x577e42[_0x56a5('0xc2')];emitCampaignSummary(_0x577e42);if(_0x1da3bf>0x0){if(_0x1da3bf>this[_0x56a5('0x27')]){_0x1da3bf=this[_0x56a5('0x27')];}_0x577e42['temp']+=_0x1da3bf;this[_0x56a5('0xc4')](_0x577e42['id'],_0x1da3bf,_0x577e42[_0x56a5('0x1fd')],_0x577e42)['then'](function(_0x2b35fc){_0x577e42[_0x56a5('0xc2')]-=_0x1da3bf;_0x577e42[_0x56a5('0xc2')]=_0x577e42[_0x56a5('0xc2')]>0x0?_0x577e42['temp']:0x0;if(!checkContactEmpty(_0x2b35fc)){_0x577e42[_0x56a5('0x3b')]=_0x56a5('0x9e');logger[_0x56a5('0x7b')](_0x56a5('0x1fe')+_0x577e42[_0x56a5('0x41')]);}else{_0x577e42[_0x56a5('0x6e')]+=_0x2b35fc[_0x56a5('0x97')];_0x577e42['message']='RUNNING';for(var _0x2a7ceb=0x0;_0x2a7ceb<_0x2b35fc[_0x56a5('0x97')];_0x2a7ceb+=0x1){_0x577e42['ivrTotalCallsDays']+=0x1;if(_[_0x56a5('0xae')](_0x2b35fc[_0x2a7ceb])||_[_0x56a5('0xae')](_0x2b35fc[_0x2a7ceb]['Contact'])||_[_0x56a5('0xae')](_0x2b35fc[_0x2a7ceb]['Contact'][_0x56a5('0x16e')])){_0x27e880[_0x56a5('0xcd')](_0x56a5('0x1ff'),_0x577e42,_0x2b35fc[_0x2a7ceb]);}else{_0x27e880['checkIsBlackListIvr'](_[_0x56a5('0x130')](_0x2b35fc[_0x2a7ceb],[_0x56a5('0xd4'),_0x56a5('0x200')]))['then'](_0x27e880[_0x56a5('0x1e6')](_0x577e42,_0x2b35fc[_0x2a7ceb]))[_0x56a5('0xb7')](_0x27e880[_0x56a5('0xcc')](_0x56a5('0x201'),_0x577e42));}}}})[_0x56a5('0xb7')](loggerGetContactDialer(_0x56a5('0x202'),_0x577e42,_0x1da3bf));}};Dialer[_0x56a5('0x1d')][_0x56a5('0x159')]=function(_0x21127a,_0x280aa9){var _0x3a2dde=this;var _0xca7ef2=[];var _0x3f9137=_0x280aa9>=0x1?_0x280aa9:0x1;if(_0x21127a[_0x56a5('0x157')]===_0x56a5('0x9')){_0x3f9137=0x1;}var _0x5a3009=Math[_0x56a5('0x203')](_0x21127a[_0x56a5('0xa1')]*_0x3f9137)-_0x21127a['originated']-_0x21127a['temp'];emitVoiceQueueSummary(_0x21127a);if(_0x21127a[_0x56a5('0x204')]>0x0){var _0x499c77=_0x21127a['dialLimitQueue']-_0x21127a['originated']-_0x21127a[_0x56a5('0x53')]-_0x21127a[_0x56a5('0xc2')]-_0x21127a['pTalking'];if(_0x5a3009>_0x499c77){_0x5a3009=_0x499c77;}}if(_0x5a3009>0x0){if(_0x21127a[_0x56a5('0x157')]===_0x56a5('0x9')){_0x5a3009=0x1;}if(_0x5a3009>this[_0x56a5('0x27')]){_0x5a3009=this[_0x56a5('0x27')];}_0x21127a[_0x56a5('0xc2')]+=_0x5a3009;for(var _0x16ea42 in this[_0x56a5('0x25')]){if(typeof this[_0x56a5('0x25')][_0x16ea42]!==_0x56a5('0xad')){if(this[_0x56a5('0x25')][_0x16ea42]['state']===_0x56a5('0x205')&&this[_0x56a5('0x25')][_0x16ea42]['status']===_0x56a5('0xd9')){_0xca7ef2['push'](this['agents'][_0x16ea42]['id']);}}}this[_0x56a5('0xc1')](_0x21127a['id'],_0xca7ef2,_0x5a3009,_0x21127a[_0x56a5('0x1fd')],_0x21127a)[_0x56a5('0xb9')](function(_0x3b9618){_0x21127a[_0x56a5('0xc2')]-=_0x5a3009;_0x21127a[_0x56a5('0xc2')]=_0x21127a[_0x56a5('0xc2')]>0x0?_0x21127a[_0x56a5('0xc2')]:0x0;if(!checkContactEmpty(_0x3b9618)){_0x3a2dde[_0x56a5('0xb5')](_0x21127a)[_0x56a5('0xb9')](sendMessageReschedule(_0x21127a))[_0x56a5('0xb7')](loggerCatch('[countReScheduled]\x20'));}else{_0x21127a['originated']+=_0x3b9618[_0x56a5('0x97')];_0x21127a['message']=_0x21127a[_0x56a5('0x157')]==='booked'?_0x56a5('0x175'):_0x56a5('0x206');for(var _0xc4b4de=0x0;_0xc4b4de<_0x3b9618['length'];_0xc4b4de+=0x1){if(_[_0x56a5('0xae')](_0x3b9618[_0xc4b4de])||_['isNil'](_0x3b9618[_0xc4b4de][_0x56a5('0x16d')])||_['isNil'](_0x3b9618[_0xc4b4de][_0x56a5('0x16d')][_0x56a5('0x16e')])){_0x3a2dde[_0x56a5('0xcd')]('[actionOriginate]\x20',_0x21127a,_0x3b9618[_0xc4b4de]);}else{_0x3a2dde[_0x56a5('0xba')](_[_0x56a5('0x130')](_0x3b9618[_0xc4b4de],[_0x56a5('0xd3'),_0x56a5('0x200')]))[_0x56a5('0xb9')](_0x3a2dde[_0x56a5('0x1e6')](_0x21127a,_0x3b9618[_0xc4b4de]))['catch'](_0x3a2dde[_0x56a5('0xcc')](_0x56a5('0x1ff'),_0x21127a));}}}})[_0x56a5('0xb7')](loggerGetContactDialer(_0x56a5('0x207'),_0x21127a,_0x5a3009));}};Dialer[_0x56a5('0x1d')][_0x56a5('0x8f')]=function(_0x324d33){if(_0x324d33[_0x56a5('0x204')]>0x0){var _0x42d242=_0x324d33[_0x56a5('0x204')]-_0x324d33[_0x56a5('0x6e')]-_0x324d33['talking'];if(_0x42d242>0x0){this[_0x56a5('0x208')](_0x324d33);}else{loggerPredictiveCalls[_0x56a5('0x7b')](_0x56a5('0x209'));}}else{this['tryOriginatePredictive'](_0x324d33);}};Dialer[_0x56a5('0x1d')][_0x56a5('0x208')]=function(_0x453418){var _0x5ab34c=this;var _0x291f7b=[];_0x453418[_0x56a5('0x6e')]+=0x1;for(var _0x45f968 in this[_0x56a5('0x25')]){if(typeof this[_0x56a5('0x25')][_0x45f968]!==_0x56a5('0xad')){if(this[_0x56a5('0x25')][_0x45f968]['state']===_0x56a5('0x205')&&this[_0x56a5('0x25')][_0x45f968][_0x56a5('0xaf')]===_0x56a5('0xd9')){_0x291f7b['push'](this[_0x56a5('0x25')][_0x45f968]['id']);}}}this[_0x56a5('0xc1')](_0x453418['id'],_0x291f7b,0x1,_0x453418[_0x56a5('0x1fd')],_0x453418)[_0x56a5('0xb9')](function(_0x5812c5){if(!checkContactEmpty(_0x5812c5)){checkContactLowerLimitOriginate(_0x453418,0x1,0x0);_0x5ab34c[_0x56a5('0xb5')](_0x453418)[_0x56a5('0xb9')](sendMessageReschedule(_0x453418))[_0x56a5('0xb7')](loggerCatch(_0x56a5('0xb8')));}else{_0x453418[_0x56a5('0x3b')]=_0x56a5('0x206');if(_['isNil'](_0x5812c5[0x0])||_[_0x56a5('0xae')](_0x5812c5[0x0][_0x56a5('0x16d')])||_[_0x56a5('0xae')](_0x5812c5[0x0][_0x56a5('0x16d')][_0x56a5('0x16e')])){_0x5ab34c[_0x56a5('0xcd')](_0x56a5('0x1ff'),_0x453418,_0x5812c5[0x0]);}else{_0x5ab34c['checkIsBlackList'](_[_0x56a5('0x130')](_0x5812c5[0x0],[_0x56a5('0xd3'),'Contact.phone']))['then'](_0x5ab34c[_0x56a5('0x1e6')](_0x453418,_0x5812c5[0x0]))[_0x56a5('0xb7')](_0x5ab34c['loggerHandler'](_0x56a5('0x20a'),_0x453418));}}})[_0x56a5('0xb7')](loggerGetContactDialer('[getContactDialerPredictive]',_0x453418,0x1));emitVoiceQueueSummary(_0x453418);};Dialer[_0x56a5('0x1d')][_0x56a5('0x1e0')]=function(_0x164758,_0x553685,_0x520362,_0x244637,_0x4ba1ed,_0x4b52de){loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x20b'));loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x20c'),_0x164758);loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x20d'),_0x553685);loggerPredictive[_0x56a5('0x7b')]('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',_0x520362);loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x20e'),_0x244637);loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x20f'),_0x4ba1ed);loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x84'));return new BPromise(function(_0x574c6c,_0x2de6ca){if(_0x164758<=0x0||isNaN(_0x164758)){return _0x2de6ca(msgResponse(_0x56a5('0x210'),_0x56a5('0x46'),_0x56a5('0x211')+_0x164758));}if(_0x520362<=0x0||isNaN(_0x520362)){return _0x2de6ca(msgResponse('[abandonmentRate]',_0x56a5('0x46'),_0x56a5('0x212')+_0x520362));}if(_0x244637<=0x0||isNaN(_0x244637)){return _0x2de6ca(msgResponse(_0x56a5('0x210'),_0x56a5('0x46'),_0x56a5('0x213')+_0x244637));}if(_0x553685<=0x0||isNaN(_0x553685)){return _0x2de6ca(msgResponse('[abandonmentRate]',_0x56a5('0x46'),_0x56a5('0x214')+_0x553685));}if(_0x4ba1ed<=0x0||isNaN(_0x4ba1ed)){return _0x2de6ca(msgResponse('[abandonmentRate]',_0x56a5('0x46'),'Amax\x20=\x20'+_0x4ba1ed));}_0x4b52de=_0x4b52de||0x0;var _0x22ed7b=0x1/_0x520362;var _0x5b35f1=0x0;var _0x3a4849=0x0;var _0x40bd15=0x0;var _0x4c1690=0x0;for(var _0x89ee4=0x0;_0x40bd15<_0x4ba1ed;_0x89ee4+=0x1){_0x3a4849=_0x89ee4/_0x553685;_0x5b35f1=(_0x244637*_0x3a4849+_0x4b52de)/_0x22ed7b;_0x40bd15=erlangb(_0x5b35f1,_0x164758);_0x4c1690=_0x5b35f1/_0x164758*(0x1-erlangb(_0x5b35f1,_0x164758));}return _0x574c6c({'erlangCalls':_0x89ee4,'erlangCallToSecond':_0x553685/_0x89ee4,'erlangAbandonmentRate':_0x40bd15,'erlangBusyFactor':_0x4c1690});});};Dialer[_0x56a5('0x1d')][_0x56a5('0x1db')]=function(_0x1e5fa3,_0x413b1f,_0x527cb0,_0x3f75ea,_0x5472f4,_0x19907e){loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x215'));loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x20c'),_0x1e5fa3);loggerPredictive['info']('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x413b1f);loggerPredictive['info'](_0x56a5('0x216'),_0x527cb0);loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x20e'),_0x3f75ea);loggerPredictive[_0x56a5('0x7b')](_0x56a5('0x217'),_0x5472f4);loggerPredictive[_0x56a5('0x7b')]('---------------------------');return new BPromise(function(_0x35b66b,_0x55da06){if(_0x1e5fa3<=0x0||isNaN(_0x1e5fa3)){return _0x55da06(msgResponse(_0x56a5('0x218'),_0x56a5('0x46'),_0x56a5('0x211')+_0x1e5fa3));}if(_0x527cb0<=0x0||isNaN(_0x527cb0)){return _0x55da06(msgResponse(_0x56a5('0x218'),_0x56a5('0x46'),_0x56a5('0x212')+_0x527cb0));}if(_0x3f75ea<=0x0||isNaN(_0x3f75ea)){return _0x55da06(msgResponse(_0x56a5('0x218'),_0x56a5('0x46'),_0x56a5('0x213')+_0x3f75ea));}if(_0x413b1f<=0x0||isNaN(_0x413b1f)){return _0x55da06(msgResponse(_0x56a5('0x218'),_0x56a5('0x46'),_0x56a5('0x214')+_0x413b1f));}if(_0x5472f4<=0x0||isNaN(_0x5472f4)){return _0x55da06(msgResponse(_0x56a5('0x218'),_0x56a5('0x46'),_0x56a5('0x219')+_0x5472f4));}_0x19907e=_0x19907e||0x0;var _0x1c47b8=0x1/_0x527cb0;var _0x882094=0x0;var _0x1f02cd=0x0;var _0x2d50d7=0x0;var _0x277c11=0x0;for(var _0x13c5d3=0x0;_0x277c11<_0x5472f4;_0x13c5d3+=0x1){_0x1f02cd=_0x13c5d3/_0x413b1f;_0x882094=(_0x3f75ea*_0x1f02cd+_0x19907e)/_0x1c47b8;_0x2d50d7=erlangb(_0x882094,_0x1e5fa3);_0x277c11=_0x882094/_0x1e5fa3*(0x1-erlangb(_0x882094,_0x1e5fa3));}return _0x35b66b({'erlangCalls':_0x13c5d3,'erlangCallToSecond':_0x413b1f/_0x13c5d3,'erlangAbandonmentRate':_0x2d50d7,'erlangBusyFactor':_0x277c11});});};module['exports']=Dialer;
\ No newline at end of file
+var _0xb7fc=['message','AGENTS_NOT_LOGGED','name','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','Intervals','\x20INTERVAL_IS_NULL','[ifTime][Action]','Error','stringify','milliseconds','diff','emit','type','outbound','strategy','answered','available','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','abandoned','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalTotalCalls','originated','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','callerid','format','voice:queue:%s','voice_queue:save','campaign:ivr:%s','campaign:save','info','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','predictiveIntervalAnsweredCalls','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','isUndefined','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','erlangCalls','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','clearing\x20variable\x20start\x20progressive','startPredictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','ivr','string','isEmpty','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','stack','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','sendMessageOneNotActive','waiting','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','statedesc','starttime','clearZombieChannels','uniqueId','actions','[actions]','Action','status','channel','No\x20such\x20channel','[Dialer][checkChannel]','updateOriginated','queue','resolve','then','countReScheduled','catch','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','unlockContact','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','saveInDb','merge','pick','ContactId','UserId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','SIP/%s','reachable','isNil','variable','exten','xcally-motion-dialer','value','HANGUP','outboundAnswerAgiCallsDay','HangupInAMD','membername','AMD','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','dialAMDActive','MACHINE','uniqueid','Machine','countmachineretry','countglobal','custom:amd','buildObj','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','rescheduleContact','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','ListId','VoiceQueueId','CampaignId','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','[syncAgentComplete][createHistory][0]','countdropretry','dialGlobalMaxRetry','ivrAnswerCallsDay','[syncHangupIvr]','AnswerAGI','AGI','[syncHangupIvr][createHistory]','cause-txt','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','dropreason','TIMEOUT','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','calleridname','calleridnum','Abandoned','CALLEREXIT','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','actionid','locked','paused','stateinterface','queueBooked','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','syncQueueStatusComplete','run','_rr','unlockRR','[booked][RR]','Agent:\x20','[Catch][Preview][syncQueueStatusComplete]','[booked][RR][finaly]','contactAgent-idHopper:\x20','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','loopCampaigns','checkIsTrunkReachable','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ifTime','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','length','command','iftime\x20%s,%s','interval','indexOf','true','push','content','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','checkDialMethod','progressive','handlePower','predictive','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','loggedIn','checkIfTime','dialGlobalInterval','dialTimezone','[syncQueueSummary]','syncCampaigns','checkIfTimeIntervals','[syncCampaigns]','pow','replace','random','match','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','dialQueueProject','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','XMD-AMDINITIALSILENCE','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','dialAMDMinWordLength','XMD-AMDSILENCETHRESHOLD','dialAMDMaximumWordLength','XMD-CAMPAIGNID','tags','createdAt','updatedAt','toUpper','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','trim','substring','dialCutDigit','from-sip','dialOriginateTimeout','[originateError]:\x20%s','OriginateError','endtime','[originate][error]','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyRetryFrequency','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialAgentRejectMaxRetry','[rescheduleContact][AgentReject]','entity\x20is\x20undefine','[callProgressDetecting]','evt\x20is\x20undefine','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','dialBusyMaxRetry','reason\x205\x20busy','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','dialCongestionMaxRetry','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','outboundUnknownCallsDay','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','round','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','floor','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','predictiveIntervalErlangCallsDroppedCalls','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','recalculate\x20predictive\x20at','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','dialPredictiveOptimizationPercentage','abandonmentRate','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','agentBusyFactor','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','Blacklist','[Originate][MoveBlacklist]','inBlackList','limitCalls','AVAILABLE_CONTACTS_FINISHED','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','dialOrderByScheduledAt','ACTIVE','[handlePredictive][limitChannel]','tryOriginatePredictive','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\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','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','p\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Interval:\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','uuid','moment','md5','../../../config/environment/','../../../config/logger','dialer','booked','predictiveCalls','../ami','redis','localhost','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','contactsId','startProgressive','ivrOriginated','queueBookedRR','agentconnect','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','hangup','syncHangup','newexten','syncNewExten','syncVarSet','queuemember','queuestatuscomplete','loopClearZombieChannels'];(function(_0x2b577a,_0x27caa3){var _0x4fb56e=function(_0x2879ef){while(--_0x2879ef){_0x2b577a['push'](_0x2b577a['shift']());}};_0x4fb56e(++_0x27caa3);}(_0xb7fc,0x1e3));var _0xcb7f=function(_0x6aa32f,_0x3820f7){_0x6aa32f=_0x6aa32f-0x0;var _0x52bfee=_0xb7fc[_0x6aa32f];return _0x52bfee;};'use strict';var util=require(_0xcb7f('0x0'));var _=require('lodash');var BPromise=require('bluebird');var uuid=require(_0xcb7f('0x1'));var moment=require(_0xcb7f('0x2'));var rr=require('rr');var md5=require(_0xcb7f('0x3'));var Redis=require('ioredis');var ut=require('../preview/util/util');var config=require(_0xcb7f('0x4'));var logger=require(_0xcb7f('0x5'))(_0xcb7f('0x6'));var loggerBooked=require(_0xcb7f('0x5'))(_0xcb7f('0x7'));var loggerPredictive=require(_0xcb7f('0x5'))('predictive');var loggerPredictiveCalls=require(_0xcb7f('0x5'))(_0xcb7f('0x8'));var loggerSyncQueueSummary=require(_0xcb7f('0x5'))('syncQueueSummary');var ami=require(_0xcb7f('0x9'));config[_0xcb7f('0xa')]=_['defaults'](config[_0xcb7f('0xa')],{'host':_0xcb7f('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xcb7f('0xa')]));var cmHopper=require(_0xcb7f('0xc'));var cmHopperHistory=require(_0xcb7f('0xd'));var cmHopperBlack=require(_0xcb7f('0xe'));var voiceQueueRt=require(_0xcb7f('0xf'));var Action=require('./action');var History=require('./history');var Final=require(_0xcb7f('0x10'));var AgentComplete=require(_0xcb7f('0x11'));var QueueCallerAbandon=require(_0xcb7f('0x12'));var Hangup=require(_0xcb7f('0x13'));var ipAgi=process[_0xcb7f('0x14')][_0xcb7f('0x15')]||_0xcb7f('0x16');var strategy={'rrmemory':_0xcb7f('0x17'),'roundrobin':_0xcb7f('0x18')};var Sequence=function(){};Sequence[_0xcb7f('0x19')][_0xcb7f('0x1a')]=function(_0x35a3b7){this[_0xcb7f('0x1b')]=this[_0xcb7f('0x1b')]?this[_0xcb7f('0x1b')][_0xcb7f('0x1c')](_0x35a3b7):_0x35a3b7();};function Dialer(_0x17e54f,_0x3fb85d){this[_0xcb7f('0x1d')]=new Sequence();this[_0xcb7f('0x1e')]=_0x3fb85d;this[_0xcb7f('0x1f')]=_0x17e54f[_0xcb7f('0x1f')];this['campaigns']=_0x17e54f[_0xcb7f('0x20')];this[_0xcb7f('0x21')]=_0x17e54f['agents'];this['trunks']=_0x17e54f[_0xcb7f('0x22')];this[_0xcb7f('0x23')]=config[_0xcb7f('0x23')]||0x2;this['channels']={};this['actions']={};this[_0xcb7f('0x24')]={};this['uniqueId']={};this['optionPredictive']={};this['startPredictive']={};this[_0xcb7f('0x25')]={};this[_0xcb7f('0x26')]={};this['queueBooked']={};this[_0xcb7f('0x27')]={};ami['on'](_0xcb7f('0x28'),this[_0xcb7f('0x29')][_0xcb7f('0x2a')](this));ami['on'](_0xcb7f('0x2b'),this[_0xcb7f('0x2c')]['bind'](this));ami['on']('originateresponse',this[_0xcb7f('0x2d')][_0xcb7f('0x2a')](this));ami['on'](_0xcb7f('0x2e'),this[_0xcb7f('0x2f')][_0xcb7f('0x2a')](this));ami['on'](_0xcb7f('0x30'),this['syncQueueSummary'][_0xcb7f('0x2a')](this));ami['on'](_0xcb7f('0x31'),this[_0xcb7f('0x32')]['bind'](this));ami['on'](_0xcb7f('0x33'),this[_0xcb7f('0x34')][_0xcb7f('0x2a')](this));ami['on']('varset',this[_0xcb7f('0x35')]['bind'](this));ami['on'](_0xcb7f('0x36'),this['syncQueueMember'][_0xcb7f('0x2a')](this));ami['on'](_0xcb7f('0x37'),this['syncQueueStatusComplete'][_0xcb7f('0x2a')](this));this['loopCampaigns']();this[_0xcb7f('0x38')]();}function isNotNull(_0xff7b82){return _0xff7b82!==null&&!_['isUndefined'](_0xff7b82);}function checkIsLoggedIn(_0x193bcd,_0x3c1f97){return function(){if(_0x3c1f97<=0x0){_0x193bcd[_0xcb7f('0x39')]=_0xcb7f('0x3a');throw _0x193bcd[_0xcb7f('0x3b')]+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0x8a149e){return _0x8a149e;}function checkIsActive(_0x534226,_0x3cec8f){return function(){if(!isActive(_0x3cec8f)){_0x534226[_0xcb7f('0x39')]=_0xcb7f('0x3c');throw _0x534226[_0xcb7f('0x3b')]+_0xcb7f('0x3d');}};}function checkInterval(_0x280571){return function(){if(!isNotNull(_0x280571[_0xcb7f('0x3e')])){_0x280571['message']=_0xcb7f('0x3f');throw _0x280571[_0xcb7f('0x3b')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_0x280571[_0xcb7f('0x3e')][_0xcb7f('0x40')])){_0x280571[_0xcb7f('0x39')]=_0xcb7f('0x3f');throw _0x280571['name']+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_['isEmpty'](_0x280571['Interval'][_0xcb7f('0x40')]))){_0x280571[_0xcb7f('0x39')]=_0xcb7f('0x3f');throw _0x280571[_0xcb7f('0x3b')]+_0xcb7f('0x41');}};}function msgResponse(_0x2c1771,_0x5f1037,_0x419f49){return{'action':_0x2c1771,'response':_0x5f1037,'message':_0x419f49,'stack':_0x419f49};}function myreject(_0x248293){return function(_0x15c528){return _0x248293(msgResponse(_0xcb7f('0x42'),_0xcb7f('0x43'),JSON[_0xcb7f('0x44')](_0x15c528)));};}function getSeconds(_0x3216f7,_0x2e1bd0){var _0x4b95c0=moment(_0x3216f7)[_0xcb7f('0x45')](0x0);var _0x153ca4=moment(_0x2e1bd0)['milliseconds'](0x0);return _0x4b95c0[_0xcb7f('0x46')](_0x153ca4,'seconds');}function emit(_0x1359ed,_0x20e8de,_0x275106){io['to'](_0x1359ed)[_0xcb7f('0x47')](_0x20e8de,_0x275106);}function emitVoiceQueueSummary(_0x3752d4){if(_0x3752d4[_0xcb7f('0x48')]===_0xcb7f('0x49')){var _0x2fd553={'id':_0x3752d4['id'],'name':_0x3752d4['name'],'strategy':_0x3752d4[_0xcb7f('0x4a')],'answered':_0x3752d4[_0xcb7f('0x4b')],'available':_0x3752d4[_0xcb7f('0x4c')],'loggedIn':_0x3752d4['loggedIn'],'pTalking':_0x3752d4[_0xcb7f('0x4d')],'sumBillable':_0x3752d4[_0xcb7f('0x4e')],'sumDuration':_0x3752d4[_0xcb7f('0x4f')],'sumHoldTime':_0x3752d4[_0xcb7f('0x50')]||0x0,'talking':_0x3752d4[_0xcb7f('0x51')],'total':_0x3752d4[_0xcb7f('0x52')],'type':_0x3752d4[_0xcb7f('0x48')],'unmanaged':_0x3752d4['unmanaged'],'abandoned':_0x3752d4[_0xcb7f('0x53')],'waiting':_0x3752d4['waiting'],'loggedInDb':_0x3752d4['loggedInDb'],'dialActive':_0x3752d4[_0xcb7f('0x54')],'dialMethod':_0x3752d4[_0xcb7f('0x55')],'dialOriginateCallerIdName':_0x3752d4[_0xcb7f('0x56')],'dialOriginateCallerIdNumber':_0x3752d4[_0xcb7f('0x57')],'dialOriginateTimeout':_0x3752d4['dialOriginateTimeout'],'dialPrefix':_0x3752d4[_0xcb7f('0x58')],'outboundAnswerAgiCallsDay':_0x3752d4['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x3752d4[_0xcb7f('0x59')],'outboundBlacklistCallsDay':_0x3752d4[_0xcb7f('0x5a')],'outboundBusyCallsDay':_0x3752d4[_0xcb7f('0x5b')],'outboundCongestionCallsDay':_0x3752d4[_0xcb7f('0x5c')],'outboundDropCallsDayACS':_0x3752d4[_0xcb7f('0x5d')],'outboundDropCallsDayCallersExit':_0x3752d4[_0xcb7f('0x5e')],'outboundDropCallsDayTimeout':_0x3752d4[_0xcb7f('0x5f')],'outboundNoAnswerCallsDay':_0x3752d4['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x3752d4[_0xcb7f('0x60')],'outboundOriginateFailureCallsDay':_0x3752d4[_0xcb7f('0x61')],'outboundReCallsDay':_0x3752d4[_0xcb7f('0x62')],'outboundRejectCallsDay':_0x3752d4['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x3752d4['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x3752d4['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x3752d4[_0xcb7f('0x63')],'predictiveIntervalAvgTalktime':_0x3752d4[_0xcb7f('0x64')],'predictiveIntervalDroppedCallsCallersExit':_0x3752d4[_0xcb7f('0x65')],'predictiveIntervalDroppedCallsTimeout':_0x3752d4[_0xcb7f('0x66')],'predictiveIntervalErlangCalls':_0x3752d4[_0xcb7f('0x67')],'predictiveIntervalErlangCallsDroppedCalls':_0x3752d4['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x3752d4[_0xcb7f('0x68')],'predictiveIntervalMultiplicativeFactor':_0x3752d4['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x3752d4[_0xcb7f('0x69')],'predictiveIntervalAvailable':_0x3752d4['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x3752d4[_0xcb7f('0x6a')],'message':_0x3752d4['message'],'originated':_0x3752d4[_0xcb7f('0x6b')],'erlangCalls':_0x3752d4['erlangCalls'],'erlangCallToSecond':_0x3752d4[_0xcb7f('0x6c')],'erlangAbandonmentRate':_0x3752d4[_0xcb7f('0x6d')],'erlangBusyFactor':_0x3752d4[_0xcb7f('0x6e')],'startPredictive':_0x3752d4['startPredictive'],'startProgressive':_0x3752d4['startProgressive']};if(_0x3752d4[_0xcb7f('0x6f')]){_0x2fd553[_0xcb7f('0x6f')]={'id':_0x3752d4[_0xcb7f('0x6f')]['id'],'name':_0x3752d4[_0xcb7f('0x6f')][_0xcb7f('0x3b')],'active':_0x3752d4[_0xcb7f('0x6f')][_0xcb7f('0x70')],'callerid':_0x3752d4[_0xcb7f('0x6f')][_0xcb7f('0x71')]};}if(_0x3752d4[_0xcb7f('0x3e')]){_0x2fd553[_0xcb7f('0x3e')]={'id':_0x3752d4[_0xcb7f('0x3e')]['id'],'name':_0x3752d4[_0xcb7f('0x3e')][_0xcb7f('0x3b')]};}var _0x5076df=md5(JSON['stringify'](_0x2fd553));if(_0x3752d4[_0xcb7f('0x3')]!==_0x5076df){_0x3752d4['md5']=_0x5076df;emit(util[_0xcb7f('0x72')](_0xcb7f('0x73'),_0x2fd553[_0xcb7f('0x3b')]),_0xcb7f('0x74'),_0x2fd553);}}}function emitCampaignSummary(_0x53ab05){if(_0x53ab05['type']==='ivr'){emit(util[_0xcb7f('0x72')](_0xcb7f('0x75'),_0x53ab05[_0xcb7f('0x3b')]),_0xcb7f('0x76'),_0x53ab05);}}function checkGetDataPredictive(_0x3cd8b2){if(isNotNull(_0x3cd8b2)&&!_['isEmpty'](_0x3cd8b2)){loggerPredictive[_0xcb7f('0x77')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x78'),_0x3cd8b2[_0xcb7f('0x6a')]);loggerPredictive['info'](_0xcb7f('0x79'),_0x3cd8b2[_0xcb7f('0x7a')]);loggerPredictive[_0xcb7f('0x77')]('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3cd8b2[_0xcb7f('0x66')]);loggerPredictive['info'](_0xcb7f('0x7b'),_0x3cd8b2[_0xcb7f('0x65')]);loggerPredictive['info'](_0xcb7f('0x7c'),_0x3cd8b2[_0xcb7f('0x63')]);loggerPredictive[_0xcb7f('0x77')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3cd8b2[_0xcb7f('0x64')]);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x7d'));if(_0x3cd8b2[_0xcb7f('0x6a')]>0x0){if(!_['isUndefined'](_0x3cd8b2[_0xcb7f('0x64')])&&_0x3cd8b2[_0xcb7f('0x64')]>0x0){return!![];}loggerPredictive['info'](_0xcb7f('0x7e'));if(!_[_0xcb7f('0x7f')](_0x3cd8b2['predictiveIntervalAvgHoldtime'])&&_0x3cd8b2[_0xcb7f('0x63')]>0x0){return!![];}loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x80'));}else{loggerPredictive[_0xcb7f('0x77')]('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive['info'](_0xcb7f('0x81'));}return![];}function mergeDataErlangB(_0x598d24){return function(_0x1e4b36){loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x82'));loggerPredictive['info']('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1e4b36[_0xcb7f('0x83')]);loggerPredictive[_0xcb7f('0x77')]('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1e4b36[_0xcb7f('0x6c')]);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x84'),_0x1e4b36[_0xcb7f('0x6d')]);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x85'),_0x1e4b36[_0xcb7f('0x6e')]);loggerPredictive[_0xcb7f('0x77')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1e4b36[_0xcb7f('0x6d')]);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x7d'));_['merge'](_0x598d24,_0x1e4b36);};}function getDiff(_0xef6df7){var _0x11242b=moment()[_0xcb7f('0x45')](0x0);var _0x57e088=moment(_0xef6df7)['milliseconds'](0x0);return _0x11242b[_0xcb7f('0x46')](_0x57e088,'seconds');}function ifInterval(_0x135b58,_0x10932f){if(_[_0xcb7f('0x7f')](_0x10932f)){return![];}return getDiff(_0x10932f)<_0x135b58*0x3c;}function freeVariablesPredictive(_0x5e8fa4){if(isNotNull(_0x5e8fa4)){if(!_['isUndefined'](_0x5e8fa4['startProgressive'])){_0x5e8fa4[_0xcb7f('0x25')]=undefined;loggerPredictive[_0xcb7f('0x77')](_0x5e8fa4[_0xcb7f('0x3b')],_0xcb7f('0x86'));}if(!_[_0xcb7f('0x7f')](_0x5e8fa4[_0xcb7f('0x87')])){_0x5e8fa4[_0xcb7f('0x87')]=undefined;loggerPredictive['info'](_0x5e8fa4['name'],'clearing\x20variable\x20start\x20predictive');}if(!_[_0xcb7f('0x7f')](_0x5e8fa4['handlePredictive'])){clearInterval(_0x5e8fa4[_0xcb7f('0x88')]);_0x5e8fa4[_0xcb7f('0x88')]=undefined;loggerPredictive[_0xcb7f('0x77')](_0x5e8fa4[_0xcb7f('0x3b')],_0xcb7f('0x89'));}}}function erlangb(_0x112cb6,_0x489fdc){if(_0x489fdc===0x0){return 0x0;}var _0xfd4133=0x1;for(var _0x476744=0x1;_0x476744<=_0x489fdc;_0x476744+=0x1){_0xfd4133=0x1+_0xfd4133*_0x476744/_0x112cb6;}return 0x1/_0xfd4133;}function isVoiceQueueOutbound(_0x41ab03){return _0x41ab03===_0xcb7f('0x49');}function isNotPreview(_0x5c4348){return _0x5c4348!==_0xcb7f('0x1e');}function isCampaignIvr(_0x2b7de9){return _0x2b7de9===_0xcb7f('0x8a');}function getCallerId(_0x13f865,_0x48ad26,_0x4bd028){if(!_['isUndefined'](_0x4bd028)&&typeof _0x4bd028===_0xcb7f('0x8b')&&!_[_0xcb7f('0x8c')](_0x4bd028)){if(!_[_0xcb7f('0x7f')](_0x48ad26)&&typeof _0x48ad26===_0xcb7f('0x8b')&&!_['isEmpty'](_0x48ad26)){return util['format'](_0xcb7f('0x8d'),_0x48ad26,_0x4bd028);}return util[_0xcb7f('0x72')](_0xcb7f('0x8d'),_0x4bd028,_0x4bd028);}if(!_['isUndefined'](_0x13f865)&&typeof _0x13f865==='string'&&!_[_0xcb7f('0x8c')](_0x13f865)){return _0x13f865;}return _0xcb7f('0x8e');}function loggerCatchQueueSummary(_0x4034ec,_0x12fd89){return function(_0x4b9572){freeVariablesPredictive(_0x12fd89);emitVoiceQueueSummary(_0x12fd89);emitCampaignSummary(_0x12fd89);loggerSyncQueueSummary[_0xcb7f('0x8f')](_0x4034ec,util[_0xcb7f('0x90')](_0x4b9572,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x18f014,_0x3e08bf){return function(_0x587fdd){loggerPredictive[_0xcb7f('0x8f')](_0x3e08bf['name'],_0x18f014);loggerPredictive[_0xcb7f('0x8f')](_0x587fdd[_0xcb7f('0x91')]);freeVariablesPredictive(_0x3e08bf);};}function loggerCatch(_0x2bcb12){return function(_0x52eb2e){logger['error'](_0x2bcb12,util[_0xcb7f('0x90')](_0x52eb2e,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x37018c){return _0x37018c&&!_[_0xcb7f('0x7f')](_0x37018c)&&_0x37018c['length']>0x0;}function decremetOriginate(_0x422f4a){if(!_[_0xcb7f('0x7f')](_0x422f4a)&&_0x422f4a!==null){if(typeof _0x422f4a[_0xcb7f('0x6b')]!==_0xcb7f('0x92')){if(_0x422f4a[_0xcb7f('0x6b')]>0x0){_0x422f4a['originated']-=0x1;}else{logger[_0xcb7f('0x8f')](_0xcb7f('0x93'));}}}else{logger['error'](_0xcb7f('0x94'));}}function checkContactLowerLimitOriginate(_0x2ea768,_0xe7b99d,_0x2ba827){if(_0xe7b99d>_0x2ba827){for(var _0x56832f=0x0;_0x56832f<_0xe7b99d-_0x2ba827;_0x56832f+=0x1){decremetOriginate(_0x2ea768);}}}function loggerGetContactDialer(_0x358d03,_0x2936cf,_0x4511ae){return function(_0x43bd79){checkContactLowerLimitOriginate(_0x2936cf,_0x4511ae,0x0);logger[_0xcb7f('0x8f')](_0x358d03,util[_0xcb7f('0x90')](_0x43bd79,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x8f0972){return function(_0xa13d39){if(isNotNull(_0xa13d39)&&isNotNull(_0xa13d39[0x0])){if(_0xa13d39[0x0][_0xcb7f('0x95')]>0x0){_0x8f0972[_0xcb7f('0x39')]=_0xcb7f('0x96');logger[_0xcb7f('0x77')](_0xcb7f('0x97')+_0x8f0972[_0xcb7f('0x3b')],_0xa13d39[0x0][_0xcb7f('0x95')],_0xcb7f('0x98'));}else{_0x8f0972[_0xcb7f('0x39')]='AVAILABLE_CONTACTS_FINISHED';logger[_0xcb7f('0x77')]('[getContactDialer2][Empty]'+_0x8f0972['name']);}}};}function notSendMessagesQueue(_0x11b86b){if(_0x11b86b[_0xcb7f('0x99')]){freeVariablesPredictive(_0x11b86b);if(_0x11b86b['originated']===0x0&&_0x11b86b[_0xcb7f('0x51')]===0x0&&_0x11b86b[_0xcb7f('0x9a')]===0x0&&(_0x11b86b[_0xcb7f('0x4d')]||0x0)===0x0){_0x11b86b['sendMessageOneNotActive']=![];_0x11b86b['available']=0x0;_0x11b86b[_0xcb7f('0x39')]=_0xcb7f('0x3c');loggerSyncQueueSummary['error'](_0xcb7f('0x9b'),_0x11b86b[_0xcb7f('0x3b')],_0xcb7f('0x9c'));}else{_0x11b86b[_0xcb7f('0x39')]=_0xcb7f('0x9d');loggerSyncQueueSummary['error']('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x11b86b[_0xcb7f('0x3b')],_0xcb7f('0x9e'));}emitVoiceQueueSummary(_0x11b86b);}}function notSendMessagesCampaign(_0x42fa16){if(_0x42fa16[_0xcb7f('0x99')]){if(_0x42fa16[_0xcb7f('0x6b')]===0x0){_0x42fa16[_0xcb7f('0x99')]=![];_0x42fa16[_0xcb7f('0x39')]=_0xcb7f('0x3c');loggerSyncQueueSummary['error']('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x42fa16[_0xcb7f('0x3b')],_0xcb7f('0x9c'));}else{_0x42fa16['message']=_0xcb7f('0x9d');loggerSyncQueueSummary[_0xcb7f('0x8f')](_0xcb7f('0x9f'),_0x42fa16[_0xcb7f('0x3b')],_0xcb7f('0x9e'));}emitCampaignSummary(_0x42fa16);}}function createObjHistory(_0x8d5d13,_0x12f6c9,_0x19d459,_0x76b9ed,_0x563129){_0x8d5d13[_0xcb7f('0x39')]=_0x19d459;var _0x568e49=new Action(_0x8d5d13,_0x12f6c9);var _0x437703=new History(_0x568e49);_0x437703[_0xcb7f('0xa0')]=_0x76b9ed;_0x437703[_0xcb7f('0xa1')]=_0x563129;_0x437703['endtime']=_0x568e49[_0xcb7f('0xa2')];return _0x437703;}Dialer['prototype']['loopClearZombieChannels']=function(){var _0x531ef3=this;setInterval(function(){_0x531ef3[_0xcb7f('0xa3')](_0x531ef3[_0xcb7f('0xa4')],'[uniqueid]');_0x531ef3[_0xcb7f('0xa3')](_0x531ef3[_0xcb7f('0xa5')],_0xcb7f('0xa6'));},0x32c8);};Dialer['prototype']['clearZombieChannels']=function(_0x43c4e6,_0xf4cf0e){var _0x46e002=this;for(var _0x10b25a in _0x43c4e6){if(typeof _0x43c4e6[_0x10b25a]!==_0xcb7f('0x92')){this[_0xcb7f('0x1d')][_0xcb7f('0x1a')](function(){if(!_['isNil'](_0x43c4e6[_0x10b25a])){return ami[_0xcb7f('0xa7')]({'action':_0xcb7f('0xa8'),'channel':_0x43c4e6[_0x10b25a][_0xcb7f('0xa9')]})['catch'](function(_0x17a07d){if(_0x17a07d[_0xcb7f('0x39')]===_0xcb7f('0xaa')){setTimeout(function(){if(_0x43c4e6[_0x10b25a]&&_0x43c4e6[_0x10b25a][_0xcb7f('0x48')]!==_0xcb7f('0x8a')){_0x46e002['updateOriginated'](_0x46e002[_0xcb7f('0x1f')][_0x43c4e6[_0x10b25a]['queue']]);logger[_0xcb7f('0x8f')](_0xcb7f('0xab'),_0xf4cf0e,_0x10b25a,_0x43c4e6[_0x10b25a]['queue']);delete _0x43c4e6[_0x10b25a];}if(_0x43c4e6[_0x10b25a]&&_0x43c4e6[_0x10b25a][_0xcb7f('0x48')]===_0xcb7f('0x8a')){_0x46e002[_0xcb7f('0xac')](_0x46e002['campaigns'][_0x43c4e6[_0x10b25a][_0xcb7f('0xad')]]);logger[_0xcb7f('0x8f')]('[Dialer][checkChannel][ivr]',_0xf4cf0e,_0x10b25a,_0x43c4e6[_0x10b25a][_0xcb7f('0xad')]);delete _0x43c4e6[_0x10b25a];}},0x2328);}});}});}}};Dialer['prototype']['countReScheduled']=function(_0xb396a4){return BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](cmHopper[_0xcb7f('0xb0')](_0xb396a4))[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xb2')));};Dialer[_0xcb7f('0x19')][_0xcb7f('0xb3')]=function(_0x173c98){return BPromise['resolve']()[_0xcb7f('0xaf')](cmHopperBlack[_0xcb7f('0xb3')](_0x173c98))['catch'](loggerCatch(_0xcb7f('0xb4')));};Dialer[_0xcb7f('0x19')][_0xcb7f('0xb5')]=function(_0x43a40f){return BPromise['resolve']()['then'](cmHopperBlack[_0xcb7f('0xb5')](_0x43a40f))[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xb6')));};Dialer[_0xcb7f('0x19')][_0xcb7f('0xb7')]=function(_0x319425){return BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](cmHopperHistory[_0xcb7f('0xb8')](_0x319425))[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xb9')));};Dialer[_0xcb7f('0x19')]['rescheduleContact']=function(_0x5ae61b){return BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](cmHopper['rescheduleContact'](_0x5ae61b))['catch'](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0xcb7f('0x19')]['unlockContact']=function(_0x408924,_0x586064,_0xd2a0b6){return BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](cmHopper[_0xcb7f('0xba')](_0x408924,_0x586064,_0xd2a0b6))[_0xcb7f('0xb1')](loggerCatch('[unlockContact]\x20'));};Dialer['prototype']['getContactDialer']=function(_0x116a77,_0x326f80,_0x122ed7,_0x1c73fe,_0x38d0f8){return BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](cmHopper[_0xcb7f('0xbb')](_0x116a77,_0x326f80,_0x122ed7,_0x1c73fe))[_0xcb7f('0xb1')](function(_0x355de5){_0x38d0f8['temp']-=_0x122ed7;_0x38d0f8[_0xcb7f('0xbc')]=_0x38d0f8[_0xcb7f('0xbc')]>0x0?_0x38d0f8[_0xcb7f('0xbc')]:0x0;loggerCatch(_0xcb7f('0xbd'))(_0x355de5);});};Dialer['prototype'][_0xcb7f('0xbe')]=function(_0x42b13d,_0x1c89ca,_0x3aefa0,_0x2052bd){return BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](cmHopper[_0xcb7f('0xbe')](_0x42b13d,_0x1c89ca,_0x3aefa0))[_0xcb7f('0xb1')](function(_0x2d4647){_0x2052bd['temp']-=_0x1c89ca;_0x2052bd['temp']=_0x2052bd['temp']>0x0?_0x2052bd[_0xcb7f('0xbc')]:0x0;loggerCatch(_0xcb7f('0xbf'))(_0x2d4647);});};Dialer[_0xcb7f('0x19')]['getVoiceQueueRtPauses']=function(_0x28dca7){return BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](voiceQueueRt['getVoiceQueueRtPauses'](_0x28dca7))[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xc0')));};Dialer[_0xcb7f('0x19')][_0xcb7f('0xc1')]=function(_0x7abd21){return BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](cmHopper[_0xcb7f('0xc1')](_0x7abd21))[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xc2')));};Dialer['prototype'][_0xcb7f('0xc3')]=function(_0x2e6abe){return BPromise[_0xcb7f('0xae')]()['then'](cmHopperHistory[_0xcb7f('0xc3')](_0x2e6abe))[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xc4')));};Dialer[_0xcb7f('0x19')][_0xcb7f('0xac')]=function(_0x43f3e9){if(!_[_0xcb7f('0x7f')](_0x43f3e9)&&_0x43f3e9!==null){if(typeof _0x43f3e9[_0xcb7f('0x6b')]!==_0xcb7f('0x92')){if(_0x43f3e9[_0xcb7f('0x6b')]>0x0){_0x43f3e9[_0xcb7f('0x6b')]-=0x1;}else{logger[_0xcb7f('0x8f')](_0xcb7f('0xc5'));}}}else{logger[_0xcb7f('0x8f')](_0xcb7f('0xc6'));}};Dialer[_0xcb7f('0x19')][_0xcb7f('0xc7')]=function(_0x423211,_0x54528a){var _0x2d1881=this;return function(_0x277ea8){_0x2d1881['updateOriginated'](_0x54528a);logger[_0xcb7f('0x8f')](_0x423211,util[_0xcb7f('0x90')](_0x277ea8,{'showHidden':![],'depth':null}));};};Dialer[_0xcb7f('0x19')][_0xcb7f('0xc8')]=function(_0x5e2ea2,_0x1e9d95,_0x3bbc8f){var _0x562f76={'state':0x19,'statedesc':_0xcb7f('0xc9')};this[_0xcb7f('0xac')](_0x1e9d95);this[_0xcb7f('0xca')](_[_0xcb7f('0xcb')](_0x562f76,_[_0xcb7f('0xcc')](_0x3bbc8f,[_0xcb7f('0xcd'),'ListId',_0xcb7f('0xce'),'VoiceQueueId','CampaignId'])),_0xcb7f('0xcf'),_0xcb7f('0xd0'));logger[_0xcb7f('0x8f')](_0x5e2ea2);};Dialer['prototype'][_0xcb7f('0xd1')]=function(_0x13d894){return _0x13d894===_0xcb7f('0xd2');};Dialer[_0xcb7f('0x19')]['isTrunkReachable']=function(_0x24ef04){return!_[_0xcb7f('0x7f')](_0x24ef04)&&_0x24ef04&&!_[_0xcb7f('0x7f')](_0x24ef04[_0xcb7f('0x3b')])&&!_[_0xcb7f('0x7f')](_0x24ef04[_0xcb7f('0x70')])&&_0x24ef04[_0xcb7f('0x70')]&&(this['trunks'][util[_0xcb7f('0x72')](_0xcb7f('0xd3'),_0x24ef04[_0xcb7f('0x3b')])][_0xcb7f('0xa8')]===_0xcb7f('0xd4')||this[_0xcb7f('0x22')][util[_0xcb7f('0x72')](_0xcb7f('0xd3'),_0x24ef04[_0xcb7f('0x3b')])]['status']==='unmonitored');};Dialer[_0xcb7f('0x19')][_0xcb7f('0xca')]=function(_0x469469,_0x951c9d,_0x4353aa){this[_0xcb7f('0xc3')](_0x469469)[_0xcb7f('0xb1')](loggerCatch(_0x951c9d));this[_0xcb7f('0xc1')](_0x469469)['catch'](loggerCatch(_0x4353aa));};Dialer[_0xcb7f('0x19')]['syncVarSet']=function(_0x1616b5){var _0x2ff001=this[_0xcb7f('0xa4')][_0x1616b5['uniqueid']];var _0x23e3d6;if(!_[_0xcb7f('0xd5')](_0x1616b5)&&!_[_0xcb7f('0xd5')](_0x1616b5[_0xcb7f('0xd6')])&&!_[_0xcb7f('0xd5')](_0x1616b5['variable']['amdstatus'])&&_0x1616b5[_0xcb7f('0xd7')]===_0xcb7f('0xd8')&&_0x2ff001){if(_0x2ff001[_0xcb7f('0x48')]!==_0xcb7f('0x8a')&&this[_0xcb7f('0x1f')][_0x2ff001['queue']]['dialAMDActive']&&_0x1616b5[_0xcb7f('0xd9')]===_0xcb7f('0xda')){delete this[_0xcb7f('0xa4')][_0x1616b5['uniqueid']];this[_0xcb7f('0xac')](this['voiceQueues'][_0x2ff001[_0xcb7f('0xad')]]);this['voiceQueues'][_0x2ff001[_0xcb7f('0xad')]]['outboundAnswerCallsDay']+=0x1;this['voiceQueues'][_0x2ff001[_0xcb7f('0xad')]][_0xcb7f('0xdb')]+=0x1;_0x23e3d6=new Hangup(_0x2ff001,_0x1616b5);_0x23e3d6[_0xcb7f('0xa0')]=0x12;_0x23e3d6[_0xcb7f('0xa1')]=_0xcb7f('0xdc');_0x23e3d6[_0xcb7f('0xdd')]=_0xcb7f('0xde');ami[_0xcb7f('0x47')]('custom:amd',ut['buildObj'](_0x23e3d6,_0xcb7f('0xdf')));this['saveInDb'](_0x23e3d6,_0xcb7f('0xe0'),_0xcb7f('0xe1'));}if(_0x2ff001[_0xcb7f('0x48')]!==_0xcb7f('0x8a')&&this[_0xcb7f('0x1f')][_0x2ff001['queue']][_0xcb7f('0xe2')]&&_0x1616b5[_0xcb7f('0xd9')]===_0xcb7f('0xe3')){var _0x42440b=this;return new BPromise(function(_0x2a6fb1,_0x2b5ce3){delete _0x42440b[_0xcb7f('0xa4')][_0x1616b5[_0xcb7f('0xe4')]];_0x42440b[_0xcb7f('0xac')](_0x42440b[_0xcb7f('0x1f')][_0x2ff001[_0xcb7f('0xad')]]);_0x42440b[_0xcb7f('0x1f')][_0x2ff001[_0xcb7f('0xad')]][_0xcb7f('0x59')]+=0x1;_0x42440b[_0xcb7f('0x1f')][_0x2ff001['queue']]['outboundAnswerAgiCallsDay']+=0x1;var _0x31c42d=_0x42440b[_0xcb7f('0x1f')][_0x2ff001['queue']];var _0xf73996=new Hangup(_0x2ff001,_0x1616b5);_0xf73996['state']=0x13;_0xf73996[_0xcb7f('0xa1')]=_0xcb7f('0xe5');_0xf73996['membername']=_0xcb7f('0xde');_0xf73996[_0xcb7f('0xe6')]+=0x1;_0xf73996[_0xcb7f('0xe7')]+=0x1;_0xf73996['amd']=!![];ami[_0xcb7f('0x47')](_0xcb7f('0xe8'),ut[_0xcb7f('0xe9')](_0xf73996,'amd'));_0x42440b[_0xcb7f('0xc3')](_0xf73996)['catch'](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0xf73996[_0xcb7f('0xea')]+_0xf73996[_0xcb7f('0xeb')]+_0xf73996[_0xcb7f('0xec')]+_0xf73996[_0xcb7f('0xed')]+_0xf73996['countdropretry']+_0xf73996[_0xcb7f('0xee')]+_0xf73996[_0xcb7f('0xe6')]+_0xf73996[_0xcb7f('0xef')]>=_0x31c42d['dialGlobalMaxRetry']){_0x42440b[_0xcb7f('0xf0')](_0xf73996,_0x2a6fb1,_0x2b5ce3,_0xcb7f('0xf1'));}else{if(_0xf73996[_0xcb7f('0xe6')]>=_0x31c42d[_0xcb7f('0xf2')]){_0x42440b[_0xcb7f('0xf3')](_0xf73996,_0x2a6fb1,_0x2b5ce3,_0xcb7f('0xf4'));}else{_0x42440b[_0xcb7f('0xf5')]({'active':![],'countmachineretry':_0xf73996['countmachineretry'],'scheduledat':moment()[_0xcb7f('0xf6')](_0x31c42d[_0xcb7f('0xf7')],_0xcb7f('0xf8'))[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0xf73996[_0xcb7f('0xcd')],'ListId':_0xf73996[_0xcb7f('0xfa')],'VoiceQueueId':_0xf73996[_0xcb7f('0xfb')]||undefined,'CampaignId':_0xf73996[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xfd')));_0x2a6fb1({'reschedule':0x1});}}});}if(_0x2ff001['type']===_0xcb7f('0x8a')&&this[_0xcb7f('0x20')][_0x2ff001[_0xcb7f('0xad')]][_0xcb7f('0xe2')]&&_0x1616b5[_0xcb7f('0xd9')]===_0xcb7f('0xda')){delete this['uniqueId'][_0x1616b5[_0xcb7f('0xe4')]];this[_0xcb7f('0xac')](this[_0xcb7f('0x20')][_0x2ff001[_0xcb7f('0xad')]]);_0x23e3d6=new Hangup(_0x2ff001,_0x1616b5);_0x23e3d6[_0xcb7f('0xa0')]=0x12;_0x23e3d6[_0xcb7f('0xa1')]='HangupInAMD';_0x23e3d6[_0xcb7f('0xdd')]='AMD';ami[_0xcb7f('0x47')](_0xcb7f('0xe8'),ut['buildObj'](_0x23e3d6,_0xcb7f('0xdf')));this['saveInDb'](_0x23e3d6,_0xcb7f('0xfe'),_0xcb7f('0xff'));}if(_0x2ff001[_0xcb7f('0x48')]===_0xcb7f('0x8a')&&this['campaigns'][_0x2ff001[_0xcb7f('0xad')]]['dialAMDActive']&&_0x1616b5['value']==='MACHINE'){var _0x42440b=this;return new BPromise(function(_0x684ec1,_0x3f4064){delete _0x42440b[_0xcb7f('0xa4')][_0x1616b5[_0xcb7f('0xe4')]];_0x42440b['updateOriginated'](_0x42440b['campaigns'][_0x2ff001[_0xcb7f('0xad')]]);_0x42440b['campaigns'][_0x2ff001['queue']][_0xcb7f('0x59')]+=0x1;_0x42440b[_0xcb7f('0x20')][_0x2ff001[_0xcb7f('0xad')]][_0xcb7f('0xdb')]+=0x1;var _0xcc7be7=_0x42440b['campaigns'][_0x2ff001['queue']];var _0x1cf0a3=new Hangup(_0x2ff001,_0x1616b5);_0x1cf0a3[_0xcb7f('0xa0')]=0x13;_0x1cf0a3[_0xcb7f('0xa1')]=_0xcb7f('0xe5');_0x1cf0a3['membername']=_0xcb7f('0xde');_0x1cf0a3[_0xcb7f('0xe6')]+=0x1;_0x1cf0a3[_0xcb7f('0xe7')]+=0x1;_0x1cf0a3[_0xcb7f('0xdf')]=!![];ami[_0xcb7f('0x47')](_0xcb7f('0xe8'),ut['buildObj'](_0x1cf0a3,_0xcb7f('0xdf')));_0x42440b[_0xcb7f('0xc3')](_0x1cf0a3)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x100')));if(_0x1cf0a3[_0xcb7f('0xea')]+_0x1cf0a3[_0xcb7f('0xeb')]+_0x1cf0a3['countnoanswerretry']+_0x1cf0a3[_0xcb7f('0xed')]+_0x1cf0a3[_0xcb7f('0x101')]+_0x1cf0a3[_0xcb7f('0xee')]+_0x1cf0a3['countmachineretry']+_0x1cf0a3[_0xcb7f('0xef')]>=_0xcc7be7[_0xcb7f('0x102')]){_0x42440b[_0xcb7f('0xf0')](_0x1cf0a3,_0x684ec1,_0x3f4064,_0xcb7f('0xf1'));}else{if(_0x1cf0a3[_0xcb7f('0xe6')]>=_0xcc7be7[_0xcb7f('0xf2')]){_0x42440b['createStateFinal'](_0x1cf0a3,_0x684ec1,_0x3f4064,_0xcb7f('0xf4'));}else{_0x42440b[_0xcb7f('0xf5')]({'active':![],'countmachineretry':_0x1cf0a3[_0xcb7f('0xe6')],'scheduledat':moment()['add'](_0xcc7be7[_0xcb7f('0xf7')],_0xcb7f('0xf8'))[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0x1cf0a3[_0xcb7f('0xcd')],'ListId':_0x1cf0a3[_0xcb7f('0xfa')],'VoiceQueueId':_0x1cf0a3['VoiceQueueId']||undefined,'CampaignId':_0x1cf0a3[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xfd')));_0x684ec1({'reschedule':0x1});}}});}}};Dialer[_0xcb7f('0x19')][_0xcb7f('0x32')]=function(_0x37bc10){var _0x199c4c=this[_0xcb7f('0xa4')][_0x37bc10[_0xcb7f('0xe4')]];var _0x29c2e0=this;var _0x266a4b;if(_0x199c4c&&_0x199c4c[_0xcb7f('0x48')]===_0xcb7f('0x8a')){delete this['uniqueId'][_0x37bc10['uniqueid']];this[_0xcb7f('0xac')](this[_0xcb7f('0x20')][_0x199c4c[_0xcb7f('0xad')]]);this[_0xcb7f('0x20')][_0x199c4c['queue']][_0xcb7f('0x103')]+=0x1;_0x266a4b=new Hangup(_0x199c4c,_0x37bc10);this[_0xcb7f('0xc3')](_0x266a4b)[_0xcb7f('0xb1')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0xcb7f('0xc1')](_0x266a4b)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x104')));}if(_0x199c4c&&_0x199c4c[_0xcb7f('0x48')]!==_0xcb7f('0x8a')&&isNotNull(this[_0xcb7f('0x1f')][_0x199c4c['queue']]['dialQueueProject'])){delete this[_0xcb7f('0xa4')][_0x37bc10[_0xcb7f('0xe4')]];this[_0xcb7f('0xac')](this['voiceQueues'][_0x199c4c[_0xcb7f('0xad')]]);this[_0xcb7f('0x1f')][_0x199c4c[_0xcb7f('0xad')]][_0xcb7f('0x59')]+=0x1;this['voiceQueues'][_0x199c4c[_0xcb7f('0xad')]]['outboundAnswerAgiCallsDay']+=0x1;_0x266a4b=new Hangup(_0x199c4c,_0x37bc10);_0x266a4b[_0xcb7f('0xa0')]=0x10;_0x266a4b[_0xcb7f('0xa1')]=_0xcb7f('0x105');_0x266a4b['membername']=_0xcb7f('0x106');this[_0xcb7f('0xc3')](_0x266a4b)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x107')));this[_0xcb7f('0xc1')](_0x266a4b)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x104')));}if(_0x199c4c&&_0x199c4c[_0xcb7f('0x48')]!==_0xcb7f('0x8a')&&!isNotNull(this[_0xcb7f('0x1f')][_0x199c4c[_0xcb7f('0xad')]]['dialQueueProject'])){delete this[_0xcb7f('0xa4')][_0x37bc10['uniqueid']];this[_0xcb7f('0xac')](this[_0xcb7f('0x1f')][_0x199c4c['queue']]);this['voiceQueues'][_0x199c4c[_0xcb7f('0xad')]]['outboundUnknownCallsDay']+=0x1;_0x266a4b=new Hangup(_0x199c4c,_0x37bc10);_0x266a4b[_0xcb7f('0xa0')]=0xc;_0x266a4b[_0xcb7f('0xa1')]=_0x37bc10[_0xcb7f('0x108')];_0x266a4b[_0xcb7f('0xdd')]='Unknow';this[_0xcb7f('0xc3')](_0x266a4b)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x107')));this['moveContactManagedDialer'](_0x266a4b)['catch'](loggerCatch(_0xcb7f('0x104')));}};Dialer[_0xcb7f('0x19')]['syncAgentComplete']=function(_0x5bfd12){var _0x45ac3f=this[_0xcb7f('0xa4')][_0x5bfd12[_0xcb7f('0xe4')]];var _0x48bad2=this;if(this['voiceQueues'][_0x5bfd12['queue']]){if(_0x45ac3f&&_0x45ac3f['type']!==_0xcb7f('0x8a')){delete this[_0xcb7f('0xa4')][_0x5bfd12[_0xcb7f('0xe4')]];this['voiceQueues'][_0x5bfd12['queue']][_0xcb7f('0x59')]+=0x1;var _0x269862=new AgentComplete(_0x45ac3f,_0x5bfd12);if(_0x5bfd12[_0xcb7f('0x109')]===_0xcb7f('0x10a')){_0x269862[_0xcb7f('0x10b')]=this[_0xcb7f('0x1f')][_0x5bfd12[_0xcb7f('0xad')]][_0xcb7f('0x10c')]&&this[_0xcb7f('0x1f')][_0x5bfd12['queue']][_0xcb7f('0x10d')]?moment()['format'](_0xcb7f('0xf9')):undefined;}this['createHistory'](_0x269862)['catch'](loggerCatch(_0xcb7f('0x10e')));this[_0xcb7f('0xc1')](_0x269862)['catch'](loggerCatch(_0xcb7f('0x10f')));}}};Dialer[_0xcb7f('0x19')][_0xcb7f('0x29')]=function(_0x3eab8f){if(this['voiceQueues'][_0x3eab8f[_0xcb7f('0xad')]]){if(this[_0xcb7f('0xa4')][_0x3eab8f[_0xcb7f('0xe4')]]&&this[_0xcb7f('0xa4')][_0x3eab8f[_0xcb7f('0xe4')]][_0xcb7f('0x48')]!==_0xcb7f('0x8a')){this['updateOriginated'](this[_0xcb7f('0x1f')][_0x3eab8f[_0xcb7f('0xad')]]);this[_0xcb7f('0xa4')][_0x3eab8f[_0xcb7f('0xe4')]]['answertime']=moment()['format'](_0xcb7f('0xf9'));}}};Dialer['prototype'][_0xcb7f('0x110')]=function(_0x351d95){this[_0xcb7f('0xc3')](_0x351d95)[_0xcb7f('0xb1')](loggerCatch('[syncAgentComplete][createHistory]'));this[_0xcb7f('0xc1')](_0x351d95)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x111')));};Dialer['prototype'][_0xcb7f('0x2c')]=function(_0x3e1105){var _0x5e12e2=this[_0xcb7f('0xa4')][_0x3e1105[_0xcb7f('0xe4')]];var _0x1e5ea0=this;if(this[_0xcb7f('0x1f')][_0x3e1105['queue']]){if(_0x5e12e2&&_0x5e12e2[_0xcb7f('0x48')]!==_0xcb7f('0x8a')){delete this[_0xcb7f('0xa4')][_0x3e1105[_0xcb7f('0xe4')]];this['updateOriginated'](this[_0xcb7f('0x1f')][_0x3e1105['queue']]);_0x5e12e2['droptime']=moment()[_0xcb7f('0x72')](_0xcb7f('0xf9'));var _0x447fad=new QueueCallerAbandon(_0x5e12e2,_0x3e1105);if(getSeconds(_0x5e12e2[_0xcb7f('0x112')],_0x5e12e2[_0xcb7f('0x113')])>=_0x5e12e2[_0xcb7f('0x114')]){this[_0xcb7f('0x1f')][_0x3e1105[_0xcb7f('0xad')]]['predictiveIntervalDroppedCallsTimeout']+=0x1;this['voiceQueues'][_0x3e1105[_0xcb7f('0xad')]][_0xcb7f('0x5f')]+=0x1;this[_0xcb7f('0x1f')][_0x3e1105[_0xcb7f('0xad')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x447fad[_0xcb7f('0xa0')]=0xa;_0x447fad[_0xcb7f('0xa1')]='Drop';_0x447fad[_0xcb7f('0x115')]=_0xcb7f('0x116');_0x447fad[_0xcb7f('0x10b')]=this[_0xcb7f('0x1f')][_0x3e1105['queue']][_0xcb7f('0x10c')]?moment()['format'](_0xcb7f('0xf9')):undefined;_0x447fad['countdropretry']+=0x1;_0x447fad[_0xcb7f('0xe7')]+=0x1;if(_0x447fad[_0xcb7f('0x101')]>=this[_0xcb7f('0x1f')][_0x3e1105['queue']][_0xcb7f('0x117')]){this[_0xcb7f('0x110')](_0x447fad);}else{this['rescheduleContact']({'active':![],'countdropretry':_0x447fad['countdropretry'],'scheduledat':moment()[_0xcb7f('0xf6')](this['voiceQueues'][_0x3e1105[_0xcb7f('0xad')]][_0xcb7f('0x118')],_0xcb7f('0xf8'))[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0x5e12e2[_0xcb7f('0xcd')],'ListId':_0x5e12e2[_0xcb7f('0xfa')],'VoiceQueueId':_0x5e12e2[_0xcb7f('0xfb')]||undefined,'CampaignId':_0x5e12e2[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x119')));var _0x1e659e=new History(_0x447fad);_0x1e659e[_0xcb7f('0xa0')]=0xa;_0x1e659e['statedesc']='Drop';_0x1e659e[_0xcb7f('0xa2')]=moment()[_0xcb7f('0x72')]('YYYY-MM-DD\x20HH:mm:ss');_0x1e659e['endtime']=_0x1e659e['starttime'];_0x1e659e[_0xcb7f('0x11a')]=_0x447fad['calleridname'];_0x1e659e['calleridnum']=_0x447fad[_0xcb7f('0x11b')];this[_0xcb7f('0xc3')](_0x1e659e)['catch'](loggerCatch('[syncAgentComplete][createHistory][10]'));}}else{this['voiceQueues'][_0x3e1105[_0xcb7f('0xad')]][_0xcb7f('0x65')]+=0x1;this[_0xcb7f('0x1f')][_0x3e1105[_0xcb7f('0xad')]][_0xcb7f('0x5e')]+=0x1;_0x447fad[_0xcb7f('0xa0')]=0xb;_0x447fad[_0xcb7f('0xa1')]=_0xcb7f('0x11c');_0x447fad[_0xcb7f('0x115')]=_0xcb7f('0x11d');_0x447fad[_0xcb7f('0xee')]+=0x1;_0x447fad['countglobal']+=0x1;if(_0x447fad[_0xcb7f('0xee')]>=this[_0xcb7f('0x1f')][_0x3e1105[_0xcb7f('0xad')]][_0xcb7f('0x11e')]){this['queueCallerAbandonCreateState'](_0x447fad);}else{this[_0xcb7f('0xf5')]({'active':![],'countabandonedretry':_0x447fad['countabandonedretry'],'scheduledat':moment()[_0xcb7f('0xf6')](this[_0xcb7f('0x1f')][_0x3e1105['queue']][_0xcb7f('0x11f')],'minutes')[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0x5e12e2[_0xcb7f('0xcd')],'ListId':_0x5e12e2[_0xcb7f('0xfa')],'VoiceQueueId':_0x5e12e2[_0xcb7f('0xfb')]||undefined,'CampaignId':_0x5e12e2[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x120')));var _0x1e659e=new History(_0x447fad);_0x1e659e['state']=0xb;_0x1e659e['statedesc']='Abandoned';_0x1e659e['starttime']=moment()[_0xcb7f('0x72')](_0xcb7f('0xf9'));_0x1e659e['endtime']=_0x1e659e[_0xcb7f('0xa2')];_0x1e659e[_0xcb7f('0x11a')]=_0x447fad['calleridname'];_0x1e659e['calleridnum']=_0x447fad[_0xcb7f('0x11b')];this[_0xcb7f('0xc3')](_0x1e659e)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x121')));}}}}};Dialer['prototype'][_0xcb7f('0x34')]=function(_0x5e73da){if(this[_0xcb7f('0xa5')][_0x5e73da[_0xcb7f('0xe4')]]){this['actions'][_0x5e73da[_0xcb7f('0xe4')]][_0xcb7f('0xa9')]=_0x5e73da[_0xcb7f('0xa9')];}if(this['uniqueId'][_0x5e73da[_0xcb7f('0xe4')]]){this[_0xcb7f('0xa4')][_0x5e73da[_0xcb7f('0xe4')]][_0xcb7f('0xa9')]=_0x5e73da[_0xcb7f('0xa9')];}};Dialer[_0xcb7f('0x19')]['syncQueueMember']=function(_0x4dd575){if(strategy[this[_0xcb7f('0x1f')][this[_0xcb7f('0xa5')][_0x4dd575['actionid']]['queue']][_0xcb7f('0x4a')]]===_0xcb7f('0x18')){if(this['actions'][_0x4dd575[_0xcb7f('0x122')]]&&_['isNil'](this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]][_0xcb7f('0x123')])&&_0x4dd575[_0xcb7f('0xa8')]==='1'&&_0x4dd575[_0xcb7f('0x124')]==='0'){if(this[_0xcb7f('0x21')][_0x4dd575['stateinterface']]){if(!this['agents'][_0x4dd575[_0xcb7f('0x125')]][_0xcb7f('0x123')]){this['agents'][_0x4dd575[_0xcb7f('0x125')]][_0xcb7f('0x123')]=!![];this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]][_0xcb7f('0x123')]=!![];this['actions'][_0x4dd575[_0xcb7f('0x122')]][_0xcb7f('0x125')]=_0x4dd575[_0xcb7f('0x125')];}}}}else if((strategy[this['voiceQueues'][this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]][_0xcb7f('0xad')]]['strategy']]||'rrmemory')===_0xcb7f('0x17')){if(this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]]){if(this[_0xcb7f('0x21')][_0x4dd575['stateinterface']]){this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]]['stateinterface']=_0x4dd575['stateinterface'];if(_[_0xcb7f('0xd5')](this['queueBooked'][this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]][_0xcb7f('0xad')]])){this[_0xcb7f('0x126')][this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]]['queue']]=[];}this['queueBooked'][this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]][_0xcb7f('0xad')]]['push'](_[_0xcb7f('0xcb')](_['pick'](this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]],[_0xcb7f('0x127'),_0xcb7f('0x125')]),{'status':_0x4dd575[_0xcb7f('0xa8')],'paused':_0x4dd575[_0xcb7f('0x124')]}));}}}};function unlockQueueStatus(_0x5a0dea,_0x1559a9){setTimeout(function(){if(_[_0xcb7f('0x7f')](_0x5a0dea[_0xcb7f('0x128')])){loggerBooked[_0xcb7f('0x8f')](_0xcb7f('0x129'),_0x1559a9);}_0x5a0dea[_0xcb7f('0x128')]=!![];loggerBooked[_0xcb7f('0x77')](_0xcb7f('0x12a'),_0x1559a9,JSON['stringify'](_[_0xcb7f('0xcc')](_0x5a0dea,[_0xcb7f('0x3b'),_0xcb7f('0x128')])));},0x1f3);}Dialer['prototype'][_0xcb7f('0x12b')]=function(_0x41f1e9){var _0x5ed196=this;var _0x3a28c5=_0x5ed196[_0xcb7f('0x1f')][_0x5ed196[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]];if(strategy[this[_0xcb7f('0x1f')][this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]][_0xcb7f('0x4a')]]===_0xcb7f('0x18')){if(this[_0xcb7f('0xa5')][_0x41f1e9['actionid']]&&this['actions'][_0x41f1e9[_0xcb7f('0x122')]]['stateinterface']){this['preview'][_0xcb7f('0x12c')](this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0x127')],this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]]['stateinterface'])[_0xcb7f('0xb1')](function(_0x2eea49){logger[_0xcb7f('0x8f')]('[Catch][Preview][syncQueueStatusComplete]',util['inspect'](_0x2eea49,{'showHidden':![],'depth':null}));})[_0xcb7f('0x1c')](function(){_0x5ed196[_0xcb7f('0xac')](_0x5ed196[_0xcb7f('0x1f')][_0x5ed196[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]);_0x5ed196[_0xcb7f('0x21')][_0x5ed196[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0x125')]][_0xcb7f('0x123')]=![];delete _0x5ed196[_0xcb7f('0xa5')][_0x41f1e9['actionid']];unlockQueueStatus(_0x3a28c5);});}else{this[_0xcb7f('0xac')](this[_0xcb7f('0x1f')][this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]);this[_0xcb7f('0xf5')]({'active':![],'ContactId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xcd')],'ListId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xfa')],'VoiceQueueId':this[_0xcb7f('0xa5')][_0x41f1e9['actionid']]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this['actions'][_0x41f1e9['actionid']];unlockQueueStatus(_0x3a28c5);}}else if((strategy[this['voiceQueues'][this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]['strategy']]||_0xcb7f('0x17'))===_0xcb7f('0x17')){var _0x355e45;if(this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]]&&!_[_0xcb7f('0x8c')](this[_0xcb7f('0x126')][this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]])){if(this[_0xcb7f('0x27')][_0x5ed196[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]]['queue']]){this['queueBookedRR'][_0x5ed196['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]=this[_0xcb7f('0x27')][this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]?this[_0xcb7f('0x27')][this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]:this[_0xcb7f('0x126')][this[_0xcb7f('0xa5')][_0x41f1e9['actionid']][_0xcb7f('0xad')]]?this[_0xcb7f('0x126')][this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]][_0xcb7f('0x12d')]||0x0:0x0;}this[_0xcb7f('0x126')][this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]][_0xcb7f('0x12d')]=this[_0xcb7f('0x27')][this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]];for(var _0x567d0a=0x0;_0x567d0a<this[_0xcb7f('0x126')][this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]['length'];_0x567d0a+=0x1){_0x355e45=rr(this['queueBooked'][this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]);this[_0xcb7f('0x27')][_0x5ed196['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]=this[_0xcb7f('0x126')][this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]][_0xcb7f('0x12d')];if(_0x355e45[_0xcb7f('0xa8')]==='1'&&_0x355e45[_0xcb7f('0x124')]==='0'){break;}}if(!_[_0xcb7f('0xd5')](_0x355e45)){this[_0xcb7f('0x21')][_0x355e45[_0xcb7f('0x125')]][_0xcb7f('0x12e')]=_[_0xcb7f('0x7f')](this[_0xcb7f('0x21')][_0x355e45[_0xcb7f('0x125')]]['unlockRR'])?!![]:this[_0xcb7f('0x21')][_0x355e45[_0xcb7f('0x125')]][_0xcb7f('0x12e')];}loggerBooked[_0xcb7f('0x77')](_0xcb7f('0x12f'),_0x41f1e9[_0xcb7f('0x122')],_0xcb7f('0x130'),JSON['stringify'](_[_0xcb7f('0xcc')](this[_0xcb7f('0x21')][_0x355e45['stateinterface']],[_0xcb7f('0x3b'),_0xcb7f('0x12e')])),'contactAgent-idHopper:\x20',JSON['stringify'](_0x355e45[_0xcb7f('0x127')]));if(!_[_0xcb7f('0xd5')](_0x355e45)&&_0x355e45[_0xcb7f('0xa8')]==='1'&&_0x355e45['paused']==='0'&&this['agents'][_0x355e45['stateinterface']][_0xcb7f('0x12e')]){this[_0xcb7f('0x21')][_0x355e45['stateinterface']][_0xcb7f('0x12e')]=![];this[_0xcb7f('0x126')][_0x5ed196[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]=[];this[_0xcb7f('0x1e')][_0xcb7f('0x12c')](_0x355e45[_0xcb7f('0x127')],_0x355e45['stateinterface'])[_0xcb7f('0xb1')](function(_0x5b74c6){logger['error'](_0xcb7f('0x131'),util[_0xcb7f('0x90')](_0x5b74c6,{'showHidden':![],'depth':null}));})[_0xcb7f('0x1c')](function(){_0x5ed196['updateOriginated'](_0x5ed196[_0xcb7f('0x1f')][_0x5ed196[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]);setTimeout(function(){_0x5ed196[_0xcb7f('0x21')][_0x355e45[_0xcb7f('0x125')]]['unlockRR']=!![];loggerBooked[_0xcb7f('0x77')](_0xcb7f('0x132'),_0x41f1e9[_0xcb7f('0x122')],'Agent:\x20',JSON['stringify'](_[_0xcb7f('0xcc')](_0x5ed196[_0xcb7f('0x21')][_0x355e45[_0xcb7f('0x125')]],[_0xcb7f('0x3b'),'unlockRR'])),_0xcb7f('0x133'),JSON[_0xcb7f('0x44')](_0x355e45[_0xcb7f('0x127')]));},0xc7);delete _0x5ed196[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]];unlockQueueStatus(_0x3a28c5,_0x41f1e9[_0xcb7f('0x122')]);});}else{loggerBooked['info']('[booked][unlock]');this['updateOriginated'](this[_0xcb7f('0x1f')][this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]);this[_0xcb7f('0xf5')]({'active':![],'ContactId':this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xcd')],'ListId':this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xfa')],'VoiceQueueId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xfb')]||undefined,'CampaignId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this['actions'][_0x41f1e9[_0xcb7f('0x122')]];unlockQueueStatus(_0x3a28c5);}}else{loggerBooked['info'](_0xcb7f('0x134'));this['updateOriginated'](this[_0xcb7f('0x1f')][this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]);this[_0xcb7f('0xf5')]({'active':![],'ContactId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xcd')],'ListId':this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xfa')],'VoiceQueueId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]]['CampaignId']||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x135')));delete this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]];unlockQueueStatus(_0x3a28c5);}}else{loggerBooked[_0xcb7f('0x77')](_0xcb7f('0x136'));this['updateOriginated'](this[_0xcb7f('0x1f')][this[_0xcb7f('0xa5')][_0x41f1e9['actionid']]['queue']]);this[_0xcb7f('0xf5')]({'active':![],'ContactId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]]['ContactId'],'ListId':this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xfa')],'VoiceQueueId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xfb')]||undefined,'CampaignId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]]['CampaignId']||undefined})[_0xcb7f('0xb1')](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]];unlockQueueStatus(_0x3a28c5);}};Dialer[_0xcb7f('0x19')][_0xcb7f('0x137')]=function(){var _0x388e94=this;setInterval(function(){_0x388e94['syncCampaigns']();},0x3e8);};Dialer[_0xcb7f('0x19')][_0xcb7f('0x138')]=function(_0x53561b){var _0x1967af=this;return function(){if(!_0x1967af[_0xcb7f('0x139')](_0x53561b[_0xcb7f('0x6f')])){if(!_0x1967af[_0xcb7f('0x139')](_0x53561b[_0xcb7f('0x13a')])){_0x53561b['message']=_0xcb7f('0x13b');throw _0x53561b[_0xcb7f('0x3b')]+'\x20trunk\x20is\x20not\x20reachable';}}};};Dialer[_0xcb7f('0x19')]['checkIfTime']=function(_0x213576,_0x294e1f,_0x2a7f25,_0x201295){var _0x5b6030=this;return function(){var _0x448ed5=!![];return _0x5b6030[_0xcb7f('0x13c')](_0x213576,_0x294e1f,_0x2a7f25,_0x201295,_0x448ed5);};};Dialer[_0xcb7f('0x19')]['checkIfTimeIntervals']=function(_0x42442b,_0x207f5d,_0x1b839b,_0x5ed440){var _0x25cad6=this;return function(){var _0x2823bf=![];return _0x25cad6[_0xcb7f('0x13c')](_0x42442b[_0xcb7f('0x40')],_0x207f5d,_0x1b839b,_0x5ed440,_0x2823bf);};};Dialer[_0xcb7f('0x19')][_0xcb7f('0x13c')]=function(_0x2735b1,_0x2b68aa,_0x284fd0,_0x3e9a25,_0x5bcaf7){var _0x1934ad=[];return new BPromise(function(_0x42da8f,_0x1dd563){if(!isNotNull(_0x2735b1)){_0x3e9a25[_0xcb7f('0x39')]=_0xcb7f('0x3f');return _0x1dd563(msgResponse(_0xcb7f('0x13c'),_0xcb7f('0x13d'),_0x284fd0+_0xcb7f('0x13e')));}if(_[_0xcb7f('0x8c')](_0x2735b1)){_0x3e9a25[_0xcb7f('0x39')]=_0xcb7f('0x13f');return _0x1dd563(msgResponse(_0xcb7f('0x13c'),_0xcb7f('0x13d'),_0x284fd0+_0xcb7f('0x140')));}if(_0x2b68aa&&_['isUndefined'](config[_0xcb7f('0x141')][_0x2b68aa])){_0x3e9a25[_0xcb7f('0x39')]=_0xcb7f('0x142');return _0x1dd563(msgResponse(_0xcb7f('0x13c'),_0xcb7f('0x13d'),_0x284fd0+_0xcb7f('0x143')+_0x2b68aa));}if(_[_0xcb7f('0x144')](_0x2735b1)){for(var _0xeb8536=0x0;_0xeb8536<_0x2735b1[_0xcb7f('0x145')];_0xeb8536+=0x1){_0x1934ad['push'](ami[_0xcb7f('0xa7')]({'action':_0xcb7f('0x146'),'command':util[_0xcb7f('0x72')](_0xcb7f('0x147'),_0x2735b1[_0xeb8536][_0xcb7f('0x148')],!_['isUndefined'](config[_0xcb7f('0x141')][_0x2b68aa])?_0x2b68aa:'')})[_0xcb7f('0xaf')](function(_0x5dad0f){return _0x5dad0f['content'][_0xcb7f('0x149')](_0xcb7f('0x14a'))>=0x0;})[_0xcb7f('0xb1')](myreject(_0x1dd563)));}}else{_0x1934ad[_0xcb7f('0x14b')](ami['Action']({'action':_0xcb7f('0x146'),'command':util[_0xcb7f('0x72')](_0xcb7f('0x147'),_0x2735b1,!_[_0xcb7f('0x7f')](config[_0xcb7f('0x141')][_0x2b68aa])?_0x2b68aa:'')})[_0xcb7f('0xaf')](function(_0x310dbe){return _0x310dbe[_0xcb7f('0x14c')]['indexOf']('true')>=0x0;})[_0xcb7f('0xb1')](myreject(_0x1dd563)));}BPromise[_0xcb7f('0x14d')](_0x1934ad)[_0xcb7f('0xaf')](function(_0xa298ba){var _0x5cbe15=_[_0xcb7f('0x14e')](_0xa298ba);if(_0x5cbe15){return _0x42da8f(_0x5cbe15);}else{_0x3e9a25[_0xcb7f('0x39')]=_0x5bcaf7?_0xcb7f('0x14f'):_0xcb7f('0x150');return _0x1dd563(msgResponse(_0xcb7f('0x151'),_0xcb7f('0x13d'),'Global:\x20'+_0x5bcaf7+'\x20'+_0x284fd0+_0xcb7f('0x152')+util['inspect'](_0x2735b1,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x2b68aa));}})['catch'](function(_0x38484f){return _0x1dd563(msgResponse(_0xcb7f('0x13c'),'Failure',JSON['stringify'](_0x38484f)));});});};Dialer['prototype'][_0xcb7f('0x153')]=function(_0x40cd3f){var _0x13a220=this;return function(){switch(_0x40cd3f[_0xcb7f('0x55')]){case _0xcb7f('0x154'):freeVariablesPredictive(_0x40cd3f);_0x13a220[_0xcb7f('0x155')](_0x40cd3f,0x1);break;case'power':freeVariablesPredictive(_0x40cd3f);_0x13a220[_0xcb7f('0x155')](_0x40cd3f,_0x40cd3f['dialPowerLevel']);break;case _0xcb7f('0x156'):_0x13a220['predictive'](_0x40cd3f);break;case _0xcb7f('0x7'):freeVariablesPredictive(_0x40cd3f);_0x13a220[_0xcb7f('0x155')](_0x40cd3f,0x1);break;default:freeVariablesPredictive(_0x40cd3f);logger[_0xcb7f('0x8f')](_0xcb7f('0x157'),_0x40cd3f[_0xcb7f('0x3b')],_0xcb7f('0x158'));}};};Dialer[_0xcb7f('0x19')][_0xcb7f('0x159')]=function(_0x77370f){var _0x331a0b=this;return function(){_0x331a0b[_0xcb7f('0x15a')](_0x77370f);};};Dialer['prototype']['syncQueueSummary']=function(_0x10dde0){var _0x3282a7=this;if(isNotPreview(_0x10dde0['dialMethod'])){if(isVoiceQueueOutbound(_0x10dde0[_0xcb7f('0x48')])&&isActive(_0x10dde0[_0xcb7f('0x54')])){_0x10dde0[_0xcb7f('0x99')]=!![];BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](checkIsLoggedIn(_0x10dde0,_0x10dde0[_0xcb7f('0x15b')]))['then'](checkIsActive(_0x10dde0,_0x10dde0['dialActive']))[_0xcb7f('0xaf')](checkInterval(_0x10dde0))['then'](_0x3282a7[_0xcb7f('0x138')](_0x10dde0))[_0xcb7f('0xaf')](_0x3282a7[_0xcb7f('0x15c')](_0x10dde0[_0xcb7f('0x15d')],_0x10dde0[_0xcb7f('0x15e')],_0x10dde0[_0xcb7f('0x3b')],_0x10dde0))[_0xcb7f('0xaf')](_0x3282a7['checkIfTimeIntervals'](_0x10dde0[_0xcb7f('0x3e')],_0x10dde0[_0xcb7f('0x15e')],_0x10dde0[_0xcb7f('0x3b')],_0x10dde0))['then'](_0x3282a7['checkDialMethod'](_0x10dde0))['catch'](loggerCatchQueueSummary(_0xcb7f('0x15f'),_0x10dde0));}else{notSendMessagesQueue(_0x10dde0);}}else{freeVariablesPredictive(_0x10dde0);}};Dialer[_0xcb7f('0x19')][_0xcb7f('0x160')]=function(){var _0x36521f=this;var _0x5b4f20;for(var _0x3c41f3 in this[_0xcb7f('0x20')]){if(typeof this[_0xcb7f('0x20')][_0x3c41f3]!==_0xcb7f('0x92')){_0x5b4f20=this[_0xcb7f('0x20')][_0x3c41f3];if(isCampaignIvr(_0x5b4f20[_0xcb7f('0x48')])&&isActive(_0x5b4f20[_0xcb7f('0x70')])){_0x5b4f20[_0xcb7f('0x99')]=!![];BPromise['resolve']()[_0xcb7f('0xaf')](checkIsActive(_0x5b4f20,_0x5b4f20[_0xcb7f('0x70')]))['then'](checkInterval(_0x5b4f20))[_0xcb7f('0xaf')](_0x36521f[_0xcb7f('0x138')](_0x5b4f20))[_0xcb7f('0xaf')](_0x36521f[_0xcb7f('0x15c')](_0x5b4f20['dialGlobalInterval'],_0x5b4f20[_0xcb7f('0x15e')],_0x5b4f20[_0xcb7f('0x3b')],_0x5b4f20))['then'](_0x36521f[_0xcb7f('0x161')](_0x5b4f20['Interval'],_0x5b4f20[_0xcb7f('0x15e')],_0x5b4f20['name'],_0x5b4f20))[_0xcb7f('0xaf')](_0x36521f[_0xcb7f('0x159')](_0x5b4f20))[_0xcb7f('0xb1')](loggerCatchQueueSummary(_0xcb7f('0x162'),_0x5b4f20));}else{notSendMessagesCampaign(_0x5b4f20);}}}};function getCallerIdRandom(_0x13faba,_0x191d32){var _0x5622b4;var _0x1d72ac;var _0x26db47;if(_0x191d32<=0x0){_0x191d32=0x1;}_0x5622b4=new RegExp('\x5cw{0,'+_0x191d32+'}$');_0x1d72ac=Math[_0xcb7f('0x163')](0xa,_0x191d32-0x1);_0x26db47=Math['pow'](0xa,_0x191d32)-0x1;return util[_0xcb7f('0x72')]('%s',_[_0xcb7f('0x164')](_0x13faba,_0x5622b4,_[_0xcb7f('0x165')](_0x1d72ac,_0x26db47)));}function extractCalleridName(_0x47bb9e){var _0xb0b76b=_0x47bb9e[_0xcb7f('0x166')](/"(.*?)"/);return _0xb0b76b?_0xb0b76b[0x1]:_0x47bb9e;}function extractCalleridNumber(_0x20820e){var _0x512a9a=_0x20820e[_0xcb7f('0x166')](/<(.*?)>/);return _0x512a9a?_0x512a9a[0x1]:_0x20820e;}Dialer['prototype'][_0xcb7f('0x167')]=function(_0x28e1ff,_0x47c4f4){var _0x27c464=this;var _0x2280b=uuid['v4']();this[_0xcb7f('0xa5')][_0x2280b]=new Action(_0x28e1ff,_0x47c4f4,_0x2280b);return new BPromise(function(_0x3fc57b,_0x52aa3a){if(_[_0xcb7f('0x7f')](_0x28e1ff)&&typeof _0x28e1ff!==_0xcb7f('0x168')){return _0x52aa3a(msgResponse(_0xcb7f('0x169'),_0xcb7f('0x13d'),_0xcb7f('0x16a')));}if(_[_0xcb7f('0x7f')](_0x47c4f4[_0xcb7f('0x16b')]['phone'])||_0x47c4f4[_0xcb7f('0x16b')][_0xcb7f('0x16c')]===null){return _0x52aa3a(msgResponse(_0xcb7f('0x169'),_0xcb7f('0x13d'),_0xcb7f('0x16d')));}var _0x445768={'XMD-CALLERID':_0x27c464[_0xcb7f('0xa5')][_0x2280b][_0xcb7f('0x16e')](),'XMD-AGI':_0x28e1ff['dialQueueProject']?util[_0xcb7f('0x72')](_0xcb7f('0x16f'),ipAgi,_0x28e1ff[_0xcb7f('0x170')]):_0xcb7f('0x171'),'XMD-AGIAFTER':_0x28e1ff[_0xcb7f('0x10c')]?util[_0xcb7f('0x72')]('\x22agi://%s/square,%s\x22',ipAgi,_0x28e1ff[_0xcb7f('0x10c')]):'NONE','XMD-QUEUE':_0x28e1ff[_0xcb7f('0x48')]===_0xcb7f('0x49')?util['format'](_0xcb7f('0x172'),_0x28e1ff[_0xcb7f('0x3b')],_0x28e1ff[_0xcb7f('0x173')]||'',_0x28e1ff[_0xcb7f('0x10d')]?'c':'',_0x28e1ff[_0xcb7f('0x114')]||0x3):_0xcb7f('0x171'),'XMD-CONTACTID':_0x47c4f4[_0xcb7f('0xcd')],'XMD-CDRTYPE':_0xcb7f('0x6'),'CALLERID(all)':_0x27c464[_0xcb7f('0xa5')][_0x2280b][_0xcb7f('0x16e')](),'XMD-AMD':_0x28e1ff['dialAMDActive']?'ACTIVE':_0xcb7f('0x171'),'XMD-DESTINATION':_0xcb7f('0xd8')};if(_0x28e1ff['dialAMDActive']){_0x445768[_0xcb7f('0x174')]=_0x28e1ff['dialAMDInitialSilence']||0x9c4;_0x445768[_0xcb7f('0x175')]=_0x28e1ff[_0xcb7f('0x176')]||0x5dc;_0x445768[_0xcb7f('0x177')]=_0x28e1ff[_0xcb7f('0x178')]||0x320;_0x445768[_0xcb7f('0x179')]=_0x28e1ff[_0xcb7f('0x17a')]||0x1388;_0x445768['XMD-AMDMINWORDLENGTH']=_0x28e1ff[_0xcb7f('0x17b')]||0x64;_0x445768['XMD-AMDBETWEENWORDSSILENCE']=_0x28e1ff['dialAMDBetweenWordsSilence']||0x32;_0x445768['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x28e1ff['dialAMDMaximumNumberOfWords']||0x3;_0x445768[_0xcb7f('0x17c')]=_0x28e1ff['dialAMDSilenceThreshold']||0x100;_0x445768['XMD-AMDMAXIMUMWORDLENGTH']=_0x28e1ff[_0xcb7f('0x17d')]||0x1388;}if(_0x28e1ff[_0xcb7f('0x48')]===_0xcb7f('0x49')){_0x445768['XMD-VOICEQUEUEID']=_0x47c4f4[_0xcb7f('0xfb')];}else{_0x445768[_0xcb7f('0x17e')]=_0x47c4f4[_0xcb7f('0xfc')];}for(var _0xf9e7f in _0x47c4f4[_0xcb7f('0x16b')]){if(typeof _0x47c4f4['Contact'][_0xf9e7f]!=='undefined'){if(isNotNull(_0x47c4f4[_0xcb7f('0x16b')][_0xf9e7f])&&_0xf9e7f!=='id'&&_0xf9e7f!==_0xcb7f('0x17f')&&_0xf9e7f!==_0xcb7f('0x180')&&_0xf9e7f!==_0xcb7f('0x181')){_0x445768[util[_0xcb7f('0x72')]('%s%s','XMD-',_[_0xcb7f('0x182')](_0xf9e7f))]=_0x47c4f4[_0xcb7f('0x16b')][_0xf9e7f];}}}var _0x48fb53=_0x27c464[_0xcb7f('0x139')](_0x28e1ff['Trunk'])?getCallerId(_0x28e1ff[_0xcb7f('0x6f')][_0xcb7f('0x71')],_0x28e1ff[_0xcb7f('0x56')],_0x28e1ff[_0xcb7f('0x183')]>0x0?getCallerIdRandom(_0x28e1ff[_0xcb7f('0x57')],_0x28e1ff[_0xcb7f('0x183')]):_0x28e1ff[_0xcb7f('0x57')]):getCallerId(_[_0xcb7f('0xd5')](_0x28e1ff[_0xcb7f('0x13a')])?_0x28e1ff[_0xcb7f('0x6f')][_0xcb7f('0x71')]:_0x28e1ff[_0xcb7f('0x13a')][_0xcb7f('0x71')],_0x28e1ff['dialOriginateCallerIdName'],_0x28e1ff['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x28e1ff[_0xcb7f('0x57')],_0x28e1ff[_0xcb7f('0x183')]):_0x28e1ff['dialOriginateCallerIdNumber']);if(_0x48fb53){_0x445768[_0xcb7f('0x184')]=_0x27c464[_0xcb7f('0xa5')][_0x2280b][_0xcb7f('0x185')]=extractCalleridName(_0x48fb53);_0x445768[_0xcb7f('0x186')]=_0x27c464['actions'][_0x2280b][_0xcb7f('0x187')]=extractCalleridNumber(_0x48fb53);}return ami[_0xcb7f('0xa7')]({'actionid':_0x2280b,'action':_0xcb7f('0x169'),'channel':_0x27c464['isTrunkReachable'](_0x28e1ff[_0xcb7f('0x6f')])?util[_0xcb7f('0x72')](_0xcb7f('0x188'),_0x28e1ff[_0xcb7f('0x6f')][_0xcb7f('0x3b')],isNotNull(_0x28e1ff[_0xcb7f('0x58')])?_0x28e1ff[_0xcb7f('0x58')][_0xcb7f('0x189')]()||'':'',_0x28e1ff['dialCutDigit']>0x0?_0x47c4f4['Contact'][_0xcb7f('0x16c')][_0xcb7f('0x18a')](_0x28e1ff[_0xcb7f('0x18b')]):_0x47c4f4[_0xcb7f('0x16b')]['phone']):util[_0xcb7f('0x72')](_0xcb7f('0x188'),_[_0xcb7f('0xd5')](_0x28e1ff[_0xcb7f('0x13a')])?_0x28e1ff[_0xcb7f('0x6f')][_0xcb7f('0x3b')]:_0x28e1ff[_0xcb7f('0x13a')][_0xcb7f('0x3b')],isNotNull(_0x28e1ff[_0xcb7f('0x58')])?_0x28e1ff['dialPrefix'][_0xcb7f('0x189')]()||'':'',_0x28e1ff['dialCutDigit']>0x0?_0x47c4f4[_0xcb7f('0x16b')]['phone']['substring'](_0x28e1ff[_0xcb7f('0x18b')]):_0x47c4f4[_0xcb7f('0x16b')]['phone']),'callerid':_0x48fb53,'Exten':_0xcb7f('0xd8'),'Context':_0xcb7f('0x18c'),'Priority':'1','variable':_0x445768,'timeout':(_0x28e1ff[_0xcb7f('0x18d')]||0x1e)*0x3e8,'async':!![],'channelid':_0x2280b})[_0xcb7f('0xaf')](function(_0x48490b){return _0x3fc57b(_0x48490b);})['catch'](function(_0x1df1fb){_0x28e1ff['outboundOriginateFailureCallsDay']+=0x1;var _0x1143f0=new History(_0x27c464[_0xcb7f('0xa5')][_0x2280b]);logger[_0xcb7f('0x8f')](util['format'](_0xcb7f('0x18e'),JSON['stringify'](_0x1df1fb)));_0x1143f0[_0xcb7f('0xa0')]=0xe;_0x1143f0['statedesc']=_0xcb7f('0x18f');_0x1143f0[_0xcb7f('0xa2')]=moment()['format'](_0xcb7f('0xf9'));_0x1143f0[_0xcb7f('0x190')]=_0x1143f0[_0xcb7f('0xa2')];_0x27c464['createHistory'](_0x1143f0)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x191')));_0x27c464[_0xcb7f('0xc1')](_0x1143f0)[_0xcb7f('0xb1')](loggerCatch('[originate][error]'))[_0xcb7f('0x1c')](function(){delete _0x27c464[_0xcb7f('0xa5')][_0x2280b];return _0x52aa3a(msgResponse(_0xcb7f('0x169'),_0xcb7f('0x43'),'originate\x20action\x20Error'));});});});};Dialer[_0xcb7f('0x19')]['syncOriginateResponse']=function(_0x29a078){var _0x105ff2=this[_0xcb7f('0xa5')][_0x29a078[_0xcb7f('0x122')]];if(_0x105ff2){delete this[_0xcb7f('0xa5')][_0x29a078[_0xcb7f('0x122')]];_0x105ff2['responsetime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x59cfe7=_0x105ff2[_0xcb7f('0x48')]===_0xcb7f('0x8a')?this[_0xcb7f('0x20')][_0x105ff2[_0xcb7f('0xad')]]:this[_0xcb7f('0x1f')][_0x105ff2['getQueue']()];if(!this[_0xcb7f('0xd1')](_0x29a078[_0xcb7f('0x192')])){this['updateOriginated'](_0x59cfe7);return this[_0xcb7f('0x193')](_0x105ff2,_0x59cfe7,_0x29a078)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x194')));}this[_0xcb7f('0xa4')][_0x29a078[_0xcb7f('0xe4')]]=_0x105ff2;}};Dialer['prototype'][_0xcb7f('0x195')]=function(_0x5e06ee,_0x5176a2,_0x446d3f){var _0x3150c8=new History(_0x5176a2);if(_0x3150c8[_0xcb7f('0xea')]+_0x3150c8[_0xcb7f('0xeb')]+_0x3150c8[_0xcb7f('0xec')]+_0x3150c8[_0xcb7f('0xed')]+_0x3150c8[_0xcb7f('0x101')]+_0x3150c8[_0xcb7f('0xee')]+_0x3150c8[_0xcb7f('0xe6')]+_0x3150c8[_0xcb7f('0xef')]>=_0x446d3f[_0xcb7f('0x102')]-0x1){return!![];}switch(_0x5e06ee){case 0x3:if(_0x3150c8['countnoanswerretry']>=_0x446d3f[_0xcb7f('0x196')]-0x1){return!![];}this[_0xcb7f('0xf5')]({'active':![],'countnoanswerretry':_0x3150c8[_0xcb7f('0xec')]+=0x1,'scheduledat':moment()[_0xcb7f('0xf6')](_0x446d3f[_0xcb7f('0x197')],'minutes')['format'](_0xcb7f('0xf9')),'ContactId':_0x3150c8['ContactId'],'ListId':_0x3150c8['ListId'],'VoiceQueueId':_0x3150c8[_0xcb7f('0xfb')]||undefined,'CampaignId':_0x3150c8[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x198')));break;case 0x5:if(_0x3150c8[_0xcb7f('0xea')]>=_0x446d3f['dialBusyMaxRetry']-0x1){return!![];}this[_0xcb7f('0xf5')]({'active':![],'countbusyretry':_0x3150c8[_0xcb7f('0xea')]+=0x1,'scheduledat':moment()[_0xcb7f('0xf6')](_0x446d3f[_0xcb7f('0x199')],'minutes')[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0x3150c8[_0xcb7f('0xcd')],'ListId':_0x3150c8[_0xcb7f('0xfa')],'VoiceQueueId':_0x3150c8['VoiceQueueId']||undefined,'CampaignId':_0x3150c8[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x3150c8['countcongestionretry']>=_0x446d3f['dialCongestionMaxRetry']-0x1){return!![];}this[_0xcb7f('0xf5')]({'active':![],'countcongestionretry':_0x3150c8[_0xcb7f('0xeb')]+=0x1,'scheduledat':moment()[_0xcb7f('0xf6')](_0x446d3f[_0xcb7f('0x19a')],_0xcb7f('0xf8'))[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0x3150c8[_0xcb7f('0xcd')],'ListId':_0x3150c8[_0xcb7f('0xfa')],'VoiceQueueId':_0x3150c8[_0xcb7f('0xfb')]||undefined,'CampaignId':_0x3150c8['CampaignId']||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x19b')));break;case 0x0:if(_0x3150c8[_0xcb7f('0xed')]>=_0x446d3f[_0xcb7f('0x19c')]-0x1){return!![];}else{this[_0xcb7f('0xf5')]({'active':![],'countnosuchnumberretry':_0x3150c8['countnosuchnumberretry']+=0x1,'scheduledat':moment()[_0xcb7f('0xf6')](_0x446d3f[_0xcb7f('0x19d')],_0xcb7f('0xf8'))[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0x3150c8['ContactId'],'ListId':_0x3150c8[_0xcb7f('0xfa')],'VoiceQueueId':_0x3150c8[_0xcb7f('0xfb')]||undefined,'CampaignId':_0x3150c8[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch('[rescheduleContact][NoSuchNumber]'));}break;case 0xa:if(_0x3150c8['countdropretry']>=_0x446d3f[_0xcb7f('0x117')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countdropretry':_0x3150c8[_0xcb7f('0x101')]+=0x1,'scheduledat':moment()[_0xcb7f('0xf6')](_0x446d3f[_0xcb7f('0x118')],_0xcb7f('0xf8'))[_0xcb7f('0x72')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x3150c8[_0xcb7f('0xcd')],'ListId':_0x3150c8['ListId'],'VoiceQueueId':_0x3150c8[_0xcb7f('0xfb')]||undefined,'CampaignId':_0x3150c8['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x3150c8['countabandonedretry']>=_0x446d3f['dialAbandonedMaxRetry']-0x1){return!![];}this[_0xcb7f('0xf5')]({'active':![],'countabandonedretry':_0x3150c8[_0xcb7f('0xee')]+=0x1,'scheduledat':moment()[_0xcb7f('0xf6')](_0x446d3f[_0xcb7f('0x11f')],'minutes')[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0x3150c8[_0xcb7f('0xcd')],'ListId':_0x3150c8['ListId'],'VoiceQueueId':_0x3150c8['VoiceQueueId']||undefined,'CampaignId':_0x3150c8['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x3150c8['countmachineretry']>=_0x446d3f[_0xcb7f('0xf2')]-0x1){return!![];}this[_0xcb7f('0xf5')]({'active':![],'countmachineretry':_0x3150c8[_0xcb7f('0xe6')]+=0x1,'scheduledat':moment()['add'](_0x446d3f[_0xcb7f('0xf7')],_0xcb7f('0xf8'))[_0xcb7f('0x72')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x3150c8[_0xcb7f('0xcd')],'ListId':_0x3150c8['ListId'],'VoiceQueueId':_0x3150c8[_0xcb7f('0xfb')]||undefined,'CampaignId':_0x3150c8[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xfd')));break;case 0x14:if(_0x3150c8['countagentrejectretry']>=_0x446d3f[_0xcb7f('0x19e')]-0x1){return!![];}this[_0xcb7f('0xf5')]({'active':![],'countagentrejectretry':_0x3150c8[_0xcb7f('0xef')]+=0x1,'scheduledat':moment()[_0xcb7f('0xf6')](_0x446d3f['dialAgentRejectRetryFrequency'],'minutes')[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0x3150c8['ContactId'],'ListId':_0x3150c8['ListId'],'VoiceQueueId':_0x3150c8['VoiceQueueId']||undefined,'CampaignId':_0x3150c8[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x19f')));break;default:return!![];}};Dialer[_0xcb7f('0x19')][_0xcb7f('0x193')]=function(_0x88edda,_0x310c8f,_0x5c6802){var _0x176c20=this;var _0x4a6a70=new History(_0x88edda);return new BPromise(function(_0x31b11a,_0xdc89c1){if(_[_0xcb7f('0x7f')](_0x310c8f)&&typeof _0x310c8f!==_0xcb7f('0x168')){return _0xdc89c1(msgResponse('[callProgressDetecting]',_0xcb7f('0x13d'),_0xcb7f('0x1a0')));}if(_[_0xcb7f('0x7f')](_0x5c6802)&&typeof _0x5c6802!==_0xcb7f('0x168')){return _0xdc89c1(msgResponse(_0xcb7f('0x1a1'),_0xcb7f('0x13d'),_0xcb7f('0x1a2')));}switch(_0x5c6802[_0xcb7f('0x109')]){case'0':_0x310c8f[_0xcb7f('0x60')]+=0x1;_0x4a6a70['state']=0x0;_0x4a6a70['statedesc']='NoSuchNumber';_0x4a6a70[_0xcb7f('0xed')]+=0x1;_0x4a6a70[_0xcb7f('0xe7')]+=0x1;ami[_0xcb7f('0x47')](_0xcb7f('0x1a3'),ut[_0xcb7f('0xe9')](_0x88edda,_0xcb7f('0x1a4')));_0x176c20[_0xcb7f('0xc3')](_0x4a6a70)[_0xcb7f('0xb1')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x176c20[_0xcb7f('0x195')](0x0,_0x88edda,_0x310c8f)){if(_0x4a6a70[_0xcb7f('0xed')]>=_0x310c8f[_0xcb7f('0x19c')]){_0x176c20[_0xcb7f('0xf3')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1a5'));}else{_0x176c20['stateGlobal'](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1a5'));}}break;case'3':_0x310c8f[_0xcb7f('0x1a6')]+=0x1;_0x4a6a70[_0xcb7f('0xa0')]=0x3;_0x4a6a70[_0xcb7f('0xa1')]='NoAnswer';_0x4a6a70[_0xcb7f('0xec')]+=0x1;_0x4a6a70[_0xcb7f('0xe7')]+=0x1;ami[_0xcb7f('0x47')](_0xcb7f('0x1a7'),ut[_0xcb7f('0xe9')](_0x88edda,_0xcb7f('0x1a8')));_0x176c20[_0xcb7f('0xc3')](_0x4a6a70)['catch'](loggerCatch(_0xcb7f('0x1a9')));if(_0x176c20['checkRetriveMax'](0x3,_0x88edda,_0x310c8f)){if(_0x4a6a70[_0xcb7f('0xec')]>=_0x310c8f['dialNoAnswerMaxRetry']){_0x176c20[_0xcb7f('0xf3')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1aa'));}else{_0x176c20[_0xcb7f('0xf0')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1aa'));}}break;case'5':_0x310c8f[_0xcb7f('0x5b')]+=0x1;_0x4a6a70[_0xcb7f('0xa0')]=0x5;_0x4a6a70[_0xcb7f('0xa1')]=_0xcb7f('0x1ab');_0x4a6a70[_0xcb7f('0xea')]+=0x1;_0x4a6a70[_0xcb7f('0xe7')]+=0x1;ami[_0xcb7f('0x47')](_0xcb7f('0x1ac'),ut[_0xcb7f('0xe9')](_0x88edda,_0xcb7f('0x1ad')));_0x176c20[_0xcb7f('0xc3')](_0x4a6a70)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x1ae')));if(_0x176c20['checkRetriveMax'](0x5,_0x88edda,_0x310c8f)){if(_0x4a6a70[_0xcb7f('0xea')]>=_0x310c8f[_0xcb7f('0x1af')]){_0x176c20[_0xcb7f('0xf3')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1b0'));}else{_0x176c20[_0xcb7f('0xf0')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1b0'));}}break;case'8':_0x310c8f['outboundCongestionCallsDay']+=0x1;_0x4a6a70[_0xcb7f('0xa0')]=0x8;_0x4a6a70[_0xcb7f('0xa1')]='Congestion';_0x4a6a70[_0xcb7f('0xeb')]+=0x1;_0x4a6a70[_0xcb7f('0xe7')]+=0x1;ami[_0xcb7f('0x47')](_0xcb7f('0x1b1'),ut[_0xcb7f('0xe9')](_0x88edda,_0xcb7f('0x1b2')));_0x176c20[_0xcb7f('0xc3')](_0x4a6a70)['catch'](loggerCatch(_0xcb7f('0x1b3')));if(_0x176c20[_0xcb7f('0x195')](0x8,_0x88edda,_0x310c8f)){if(_0x4a6a70[_0xcb7f('0xeb')]>=_0x310c8f[_0xcb7f('0x1b4')]){_0x176c20[_0xcb7f('0xf3')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1b5'));}else{_0x176c20[_0xcb7f('0xf0')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1b5'));}}break;case'11':_0x310c8f[_0xcb7f('0x1b6')]+=0x1;_0x4a6a70[_0xcb7f('0xa0')]=0xb;_0x4a6a70[_0xcb7f('0xa1')]='Abandoned';_0x4a6a70['countabandonedretry']+=0x1;_0x4a6a70[_0xcb7f('0xe7')]+=0x1;_0x176c20['createHistory'](_0x4a6a70)[_0xcb7f('0xb1')](loggerCatch('[syncAgentComplete][createHistory][11]'));if(_0x176c20['checkRetriveMax'](0xb,_0x88edda,_0x310c8f)){if(_0x4a6a70[_0xcb7f('0xee')]>=_0x310c8f[_0xcb7f('0x11e')]){_0x176c20[_0xcb7f('0xf3')](_0x4a6a70,_0x31b11a,_0xdc89c1,'reason\x2011\x20abandoned');}else{_0x176c20['stateGlobal'](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1b7'));}}break;case'20':_0x310c8f[_0xcb7f('0x1b8')]+=0x1;_0x4a6a70[_0xcb7f('0xa0')]=0x14;_0x4a6a70['statedesc']=_0xcb7f('0x1b9');_0x4a6a70[_0xcb7f('0xef')]+=0x1;_0x4a6a70[_0xcb7f('0xe7')]+=0x1;ami[_0xcb7f('0x47')]('custom:agentreject',ut['buildObj'](_0x88edda,_0xcb7f('0x1ba')));_0x176c20['createHistory'](_0x4a6a70)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x1bb')));if(_0x176c20[_0xcb7f('0x195')](0x14,_0x88edda,_0x310c8f)){if(_0x4a6a70[_0xcb7f('0xef')]>=_0x310c8f['dialAgentRejectMaxRetry']){_0x176c20[_0xcb7f('0xf3')](_0x4a6a70,_0x31b11a,_0xdc89c1,'reason\x2020\x20agentreject');}else{_0x176c20[_0xcb7f('0xf0')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1bc'));}}break;default:_0x310c8f[_0xcb7f('0x1bd')]+=0x1;_0x4a6a70['state']=0xc;_0x4a6a70[_0xcb7f('0xa1')]=_0x5c6802[_0xcb7f('0x109')];_0x176c20['createHistory'](_0x4a6a70)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x1be')));if(_0x176c20[_0xcb7f('0x195')](_0x5c6802[_0xcb7f('0x109')],_0x88edda,_0x310c8f)){if(_0x4a6a70['countbusyretry']+_0x4a6a70['countcongestionretry']+_0x4a6a70[_0xcb7f('0xec')]+_0x4a6a70[_0xcb7f('0xed')]+_0x4a6a70[_0xcb7f('0x101')]+_0x4a6a70['countabandonedretry']+_0x4a6a70[_0xcb7f('0xe6')]+_0x4a6a70['countagentrejectretry']>=_0x310c8f[_0xcb7f('0x102')]){_0x176c20[_0xcb7f('0xf0')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0x5c6802[_0xcb7f('0x109')]);}else{_0x176c20[_0xcb7f('0xf3')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0x5c6802[_0xcb7f('0x109')]);}}}});};Dialer[_0xcb7f('0x19')]['stateGlobal']=function(_0x5ddf67,_0x277083,_0x53aaa9,_0x55a9bf){var _0x11f96d=new Final(_0x5ddf67);_0x11f96d[_0xcb7f('0xa0')]=0xf;_0x11f96d[_0xcb7f('0xa1')]=_0xcb7f('0x1bf');this[_0xcb7f('0xf3')](_0x11f96d,_0x277083,_0x53aaa9,_0x55a9bf);};Dialer[_0xcb7f('0x19')]['createStateFinal']=function(_0x1a7e7b,_0x321b93,_0x34d0b8,_0x3fd82e){this[_0xcb7f('0xc1')](_0x1a7e7b)[_0xcb7f('0xaf')](function(){return _0x321b93(msgResponse(_0xcb7f('0x1a1'),'Success',_0x3fd82e));})['catch'](function(){return _0x34d0b8(msgResponse(_0xcb7f('0x1c0'),_0xcb7f('0x13d'),_0xcb7f('0x1c1')));});};Dialer['prototype'][_0xcb7f('0x156')]=function(_0x281c4b){var _0x520b7f=_0x281c4b['dialPredictiveOptimizationPercentage']/0x64;var _0x58797f=_0x281c4b['outboundDropCallsDayTimeout']/(_0x281c4b[_0xcb7f('0x5f')]+_0x281c4b[_0xcb7f('0x59')]);var _0x25f70f=Math[_0xcb7f('0x1c2')](_0x281c4b[_0xcb7f('0x1c3')]*(_0x281c4b[_0xcb7f('0x1c4')]/0x64));var _0x2830d6=Math['round'](_0x281c4b['predictiveIntervalAvailable']*(_0x281c4b[_0xcb7f('0x1c5')]/0x64));var _0x270127=_0x281c4b[_0xcb7f('0x4c')]+_0x281c4b[_0xcb7f('0x51')];var _0x29bf42=Math[_0xcb7f('0x1c6')](_0x281c4b['erlangCalls']*_0x281c4b['erlangAbandonmentRate']*_0x281c4b[_0xcb7f('0x68')]*_0x281c4b[_0xcb7f('0x1c7')]);if(_[_0xcb7f('0x7f')](_0x281c4b[_0xcb7f('0x25')])){if(!_['isUndefined'](_0x281c4b[_0xcb7f('0x87')])){_0x281c4b[_0xcb7f('0x87')]=undefined;loggerPredictive[_0xcb7f('0x8f')](_0xcb7f('0x1c8'),_0xcb7f('0x1c9'));}if(!_['isUndefined'](_0x281c4b['handlePredictive'])){loggerPredictive[_0xcb7f('0x8f')](_0xcb7f('0x1c8'),_0xcb7f('0x1ca'));clearInterval(_0x281c4b[_0xcb7f('0x88')]);_0x281c4b[_0xcb7f('0x88')]=undefined;}_0x281c4b[_0xcb7f('0x25')]=moment()[_0xcb7f('0x72')](_0xcb7f('0xf9'));loggerPredictive['info'](_0x281c4b[_0xcb7f('0x3b')],'collection\x20data\x20in\x20progressive\x20at',_0x281c4b['startProgressive']);this[_0xcb7f('0x155')](_0x281c4b,0x1);}else if(ifInterval(_0x281c4b[_0xcb7f('0x1cb')],_0x281c4b['startProgressive'])){this[_0xcb7f('0x155')](_0x281c4b,0x1);loggerPredictiveCalls[_0xcb7f('0x77')](_0xcb7f('0x1cc'),_0x281c4b['startProgressive'],_0x281c4b['name']);_0x281c4b['erlangCalls']=0x0;_0x281c4b[_0xcb7f('0x1cd')]=0x0;}else if(_0x520b7f<_0x58797f&&_0x281c4b[_0xcb7f('0x1ce')]==='dropRate'){freeVariablesPredictive(_0x281c4b);loggerPredictive['info'](_0xcb7f('0x1cf'),_0xcb7f('0x1d0'),_0x58797f,_0xcb7f('0x25'),_0x281c4b['name']);}else if(_0x29bf42<_0x281c4b[_0xcb7f('0x1cd')]&&_0x281c4b[_0xcb7f('0x1ce')]===_0xcb7f('0x1d1')){freeVariablesPredictive(_0x281c4b);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x1d2'),_0xcb7f('0x1d3'),_0x29bf42,_0xcb7f('0x1d4'),_0x281c4b[_0xcb7f('0x1cd')],'startProgressive',_0x281c4b[_0xcb7f('0x3b')]);}else if(!ifInterval(_0x281c4b['dialPredictiveInterval'],_0x281c4b[_0xcb7f('0x25')])&&_[_0xcb7f('0x7f')](_0x281c4b['startPredictive'])&&!_[_0xcb7f('0x7f')](_0x281c4b[_0xcb7f('0x25')])){_0x281c4b[_0xcb7f('0x87')]=moment()['format'](_0xcb7f('0xf9'));loggerPredictive[_0xcb7f('0x77')](_0x281c4b[_0xcb7f('0x3b')],_0xcb7f('0x1d5'),_0x281c4b[_0xcb7f('0x87')]);this['averageHandleTime'](_0x281c4b[_0xcb7f('0x1cb')])['then'](this[_0xcb7f('0x1d6')](_0x281c4b))[_0xcb7f('0xaf')](mergeDataErlangB(_0x281c4b))[_0xcb7f('0xaf')](this[_0xcb7f('0x1d7')](_0x281c4b))[_0xcb7f('0xb1')](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x281c4b));}else if(!ifInterval(_0x281c4b[_0xcb7f('0x1cb')],_0x281c4b['startPredictive'])){_0x281c4b[_0xcb7f('0x1cd')]=0x0;_0x281c4b[_0xcb7f('0x87')]=moment()[_0xcb7f('0x72')](_0xcb7f('0xf9'));loggerPredictive[_0xcb7f('0x77')](_0x281c4b[_0xcb7f('0x3b')],_0xcb7f('0x1d8'),_0x281c4b[_0xcb7f('0x87')]);clearInterval(_0x281c4b[_0xcb7f('0x88')]);_0x281c4b['handlePredictive']=undefined;this[_0xcb7f('0xb7')](_0x281c4b[_0xcb7f('0x1cb')])['then'](this['getDataPredictive'](_0x281c4b))[_0xcb7f('0xaf')](mergeDataErlangB(_0x281c4b))[_0xcb7f('0xaf')](this[_0xcb7f('0x1d7')](_0x281c4b))[_0xcb7f('0xb1')](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x281c4b));}else if(_0x281c4b[_0xcb7f('0x1c3')]&&_0x270127<_0x281c4b[_0xcb7f('0x1c3')]-_0x2830d6){freeVariablesPredictive(_0x281c4b);loggerPredictive['info'](_0x281c4b[_0xcb7f('0x3b')],_0xcb7f('0x1d9'),_0x270127,')\x20are\x20less\x20than\x20threshold\x20(',_0x281c4b[_0xcb7f('0x1c3')],'-',_0x2830d6,'=',_0x281c4b[_0xcb7f('0x1c3')]-_0x2830d6,')');}else if(_0x281c4b['predictiveIntervalAvailable']&&_0x270127>_0x281c4b[_0xcb7f('0x1c3')]+_0x25f70f){freeVariablesPredictive(_0x281c4b);loggerPredictive[_0xcb7f('0x77')](_0x281c4b['name'],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x270127,_0xcb7f('0x1da'),_0x281c4b[_0xcb7f('0x1c3')],'+',_0x25f70f,'=',_0x281c4b[_0xcb7f('0x1c3')]+_0x25f70f,')');}};Dialer[_0xcb7f('0x19')][_0xcb7f('0x1d6')]=function(_0x4f90ba){var _0x4b0237=this;return function(_0x118215){return new BPromise(function(_0x3c716e,_0x19ec13){_[_0xcb7f('0xcb')](_0x4f90ba,_0x118215[0x0]);if(checkGetDataPredictive(_0x118215[0x0])){var _0x2ee680=_0x4f90ba['predictiveIntervalAvailable']=_0x4f90ba['talking']+_0x4f90ba['available'];var _0x103e55=_0x4f90ba[_0xcb7f('0x1cb')]*0x3c;var _0x34b056=_0x118215[0x0][_0xcb7f('0x64')]+_0x118215[0x0][_0xcb7f('0x63')];var _0x3b1b56=(_0x118215[0x0][_0xcb7f('0x7a')]+_0x118215[0x0][_0xcb7f('0x66')]+_0x118215[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x118215[0x0][_0xcb7f('0x6a')];_0x4f90ba[_0xcb7f('0x68')]=_0x3b1b56>0x0?_0x3b1b56:0x1;switch(_0x4f90ba[_0xcb7f('0x1ce')]){case _0xcb7f('0x1d1'):var _0x72eb26=_0x4f90ba[_0xcb7f('0x1db')]/0x64;return _0x4b0237[_0xcb7f('0x1dc')](_0x2ee680,_0x103e55,_0x34b056,_0x3b1b56,_0x72eb26)[_0xcb7f('0xaf')](function(_0x33197e){return _0x3c716e(_0x33197e);});case'agentBusyFactor':var _0x3524a3=_0x4f90ba[_0xcb7f('0x1db')]/0x64;return _0x4b0237[_0xcb7f('0x1dd')](_0x2ee680,_0x103e55,_0x34b056,_0x3b1b56,_0x3524a3)[_0xcb7f('0xaf')](function(_0x2f6ddf){return _0x3c716e(_0x2f6ddf);});default:return _0x19ec13(msgResponse(_0xcb7f('0x1de'),'Failure',_0xcb7f('0x1df')));}}else{return _0x19ec13(msgResponse(_0xcb7f('0x1de'),'Failure',_0xcb7f('0x1e0')));}});};};Dialer[_0xcb7f('0x19')][_0xcb7f('0x1e1')]=function(_0x5a983c){var _0x534f8e=this;return function(_0x34355f){return new BPromise(function(_0x5c7e4d,_0x223b06){_['merge'](_0x5a983c,_0x34355f[0x0]);if(checkGetDataPredictive(_0x34355f[0x0])){loggerPredictive[_0xcb7f('0x77')](JSON['stringify'](_0x34355f[0x0]));if(_0x5a983c[_0xcb7f('0x1ce')]===_0xcb7f('0x1d1')){return _0x534f8e['getVoiceQueueRtPauses'](_0x5a983c['id'])[_0xcb7f('0xaf')](function(_0x4a08f5){var _0x3b97a0=_0x5a983c[_0xcb7f('0x15b')]-_0x4a08f5[0x0][_0xcb7f('0x1e2')];var _0x20d22d=_0x5a983c[_0xcb7f('0x1cb')]*0x3c;var _0x226562=_0x34355f[0x0][_0xcb7f('0x64')]+_0x34355f[0x0][_0xcb7f('0x63')];var _0x5704ca=(_0x34355f[0x0][_0xcb7f('0x7a')]+_0x34355f[0x0][_0xcb7f('0x66')]+_0x34355f[0x0][_0xcb7f('0x65')])/_0x34355f[0x0][_0xcb7f('0x6a')];var _0x5293d0=_0x5a983c[_0xcb7f('0x1db')]/0x64;_0x5a983c[_0xcb7f('0x69')]=_0x4a08f5[0x0][_0xcb7f('0x1e2')]||0x0;_0x5a983c[_0xcb7f('0x68')]=_0x5704ca>0x0?_0x5704ca:0x1;return _0x534f8e[_0xcb7f('0x1dc')](_0x3b97a0,_0x20d22d,_0x226562,_0x5704ca,_0x5293d0);})[_0xcb7f('0xaf')](function(_0x34f056){return _0x5c7e4d(_0x34f056);})['catch'](function(_0x31b95a){return _0x223b06(msgResponse(_0xcb7f('0x1e3'),_0xcb7f('0x13d'),JSON[_0xcb7f('0x44')](_0x31b95a)));});}if(_0x5a983c[_0xcb7f('0x1ce')]===_0xcb7f('0x1e4')){return _0x534f8e['getVoiceQueueRtPauses'](_0x5a983c['id'])[_0xcb7f('0xaf')](function(_0x2d4414){var _0xc4a91e=_0x5a983c['loggedIn']-_0x2d4414[0x0][_0xcb7f('0x1e2')];var _0x407a7c=_0x5a983c['dialPredictiveInterval']*0x3c;var _0x1f5f89=_0x34355f[0x0][_0xcb7f('0x64')]+_0x34355f[0x0]['predictiveIntervalAvgHoldtime'];var _0x46f5ba=(_0x34355f[0x0][_0xcb7f('0x7a')]+_0x34355f[0x0][_0xcb7f('0x66')]+_0x34355f[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x34355f[0x0][_0xcb7f('0x6a')];var _0x4e72d2=_0x5a983c[_0xcb7f('0x1db')]/0x64;_0x5a983c[_0xcb7f('0x69')]=_0x2d4414[0x0][_0xcb7f('0x1e2')]||0x0;_0x5a983c[_0xcb7f('0x68')]=_0x46f5ba>0x0?_0x46f5ba:0x1;return _0x534f8e[_0xcb7f('0x1dd')](_0xc4a91e,_0x407a7c,_0x1f5f89,_0x46f5ba,_0x4e72d2);})['then'](function(_0x4db54f){return _0x5c7e4d(_0x4db54f);})['catch'](function(_0x2ccbfd){return _0x223b06(msgResponse(_0xcb7f('0x1e3'),_0xcb7f('0x13d'),JSON[_0xcb7f('0x44')](_0x2ccbfd)));});}}else{return _0x223b06(msgResponse(_0xcb7f('0x1de'),_0xcb7f('0x13d'),_0xcb7f('0x1e0')));}});};};Dialer['prototype'][_0xcb7f('0x1d7')]=function(_0x160918){var _0x3a5e85=this;return function(){var _0x195d39=0x0;var _0x464daa=Math[_0xcb7f('0x1c6')](_0x160918[_0xcb7f('0x6c')]*0x3e8);if(_0x464daa>0x0){_0x464daa=_0x464daa<0x64?0x64:_0x464daa;loggerPredictive[_0xcb7f('0x77')](_0x160918[_0xcb7f('0x3b')],_0xcb7f('0x1e5'),_0x464daa,_0xcb7f('0x45'));_0x160918[_0xcb7f('0x88')]=setInterval(function(){_0x3a5e85[_0xcb7f('0x88')](_0x160918);loggerPredictiveCalls[_0xcb7f('0x77')]('[handlePredictive]',_0x195d39+=0x1);},_0x464daa);}else{loggerPredictive[_0xcb7f('0x77')](_0x160918[_0xcb7f('0x3b')],_0xcb7f('0x1e6'));}};};Dialer['prototype'][_0xcb7f('0x1e7')]=function(_0x5c4430,_0x1900ad){var _0x3f2e35=this;return function(_0x5b0229){if(_[_0xcb7f('0x8c')](_0x5b0229)){if(_[_0xcb7f('0xd5')](_0x1900ad[_0xcb7f('0xce')])||!_0x1900ad[_0xcb7f('0x1e8')]){if(_0x5c4430['dialMethod']===_0xcb7f('0x7')){_0x5c4430[_0xcb7f('0x128')]=_[_0xcb7f('0x7f')](_0x5c4430[_0xcb7f('0x128')])?!![]:_0x5c4430[_0xcb7f('0x128')];var _0x80d124=uuid['v4']();_0x3f2e35[_0xcb7f('0xa5')][_0x80d124]=new Action(_0x5c4430,_0x1900ad,_0x80d124);loggerBooked[_0xcb7f('0x77')](_0xcb7f('0x1e9'),_0x80d124,_0xcb7f('0x1ea'),JSON['stringify'](_0x5c4430[_0xcb7f('0x128')]),_0xcb7f('0x1eb'),_0x5c4430[_0xcb7f('0x3b')]);if(_0x5c4430[_0xcb7f('0x128')]){_0x5c4430[_0xcb7f('0x128')]=![];_0x3f2e35[_0xcb7f('0x126')][_0x3f2e35['actions'][_0x80d124]['queue']]=[];ami[_0xcb7f('0xa7')]({'actionid':_0x80d124,'action':_0xcb7f('0x1ec'),'queue':_0x5c4430[_0xcb7f('0x3b')]})['catch'](function(){_0x3f2e35[_0xcb7f('0xac')](_0x5c4430);_0x3f2e35[_0xcb7f('0xf5')]({'active':![],'ContactId':_0x3f2e35['actions'][_0x80d124]['ContactId'],'ListId':_0x3f2e35[_0xcb7f('0xa5')][_0x80d124]['ListId'],'VoiceQueueId':_0x3f2e35[_0xcb7f('0xa5')][_0x80d124][_0xcb7f('0xfb')]||undefined,'CampaignId':_0x3f2e35[_0xcb7f('0xa5')][_0x80d124][_0xcb7f('0xfc')]||undefined})['catch'](loggerCatch(_0xcb7f('0x1ed')));delete _0x3f2e35[_0xcb7f('0xa5')][_0x80d124];});}else{loggerBooked[_0xcb7f('0x77')](_0xcb7f('0x1ee'),JSON[_0xcb7f('0x44')](_0x5c4430['queueStatusComplete']),_0xcb7f('0x1eb'),_0x5c4430[_0xcb7f('0x3b')]);_0x3f2e35[_0xcb7f('0xac')](_0x5c4430);_0x3f2e35[_0xcb7f('0xf5')]({'active':![],'ContactId':_0x3f2e35[_0xcb7f('0xa5')][_0x80d124]['ContactId'],'ListId':_0x3f2e35[_0xcb7f('0xa5')][_0x80d124]['ListId'],'VoiceQueueId':_0x3f2e35[_0xcb7f('0xa5')][_0x80d124][_0xcb7f('0xfb')]||undefined,'CampaignId':_0x3f2e35['actions'][_0x80d124]['CampaignId']||undefined})['catch'](loggerCatch(_0xcb7f('0x1ed')));delete _0x3f2e35[_0xcb7f('0xa5')][_0x80d124];}}else{return _0x3f2e35[_0xcb7f('0x167')](_0x5c4430,_0x1900ad);}}else{if(getDiff(_0x1900ad['scheduledat'])<_0x5c4430['dialRecallMeTimeout']*0x3c){if(_0x1900ad['Agent']&&!_0x1900ad['Agent'][_0xcb7f('0x1ef')]){_0x3f2e35[_0xcb7f('0x1e')][_0xcb7f('0x12c')](_0x1900ad['id'])['finally'](function(){_0x3f2e35[_0xcb7f('0xac')](_0x5c4430);});}else{_0x3f2e35['unlockContact']({'active':![]},_0x1900ad['id'],0x1)[_0xcb7f('0x1c')](function(){_0x3f2e35[_0xcb7f('0xac')](_0x5c4430);});}}else{_0x5c4430[_0xcb7f('0x62')]+=0x1;_0x3f2e35[_0xcb7f('0xac')](_0x5c4430);if(_0x5c4430[_0xcb7f('0x1f0')]){_0x3f2e35[_0xcb7f('0xf5')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x1900ad[_0xcb7f('0xcd')],'ListId':_0x1900ad[_0xcb7f('0xfa')],'VoiceQueueId':_0x1900ad[_0xcb7f('0xfb')]||undefined,'CampaignId':_0x1900ad[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x1f1')));_0x3f2e35['createHistory'](createObjHistory(_0x5c4430,_0x1900ad,_0xcb7f('0x1f2'),0x17,_0xcb7f('0x1f3')))['catch'](loggerCatch(_0xcb7f('0x1f4')));}else{_0x3f2e35[_0xcb7f('0xca')](createObjHistory(_0x5c4430,_0x1900ad,_0xcb7f('0x1f5'),0x16,'RecallFailedTimeout'),_0xcb7f('0x1f6'),_0xcb7f('0x1f7'));}}}}else{_0x5c4430['outboundBlacklistCallsDay']+=0x1;_0x3f2e35['saveInDb'](createObjHistory(_0x5c4430,_0x1900ad,'BLACKLIST',0xd,_0xcb7f('0x1f8')),'[Originate][historyBlacklist]',_0xcb7f('0x1f9'));throw _0xcb7f('0x1fa');}};};Dialer[_0xcb7f('0x19')][_0xcb7f('0x15a')]=function(_0x25f212){var _0xb484f4=this;var _0xc07301=_0x25f212[_0xcb7f('0x1fb')]-_0x25f212[_0xcb7f('0x6b')]-_0x25f212[_0xcb7f('0xbc')];emitCampaignSummary(_0x25f212);if(_0xc07301>0x0){if(_0xc07301>this['maxNumberOriginate']){_0xc07301=this[_0xcb7f('0x23')];}_0x25f212[_0xcb7f('0xbc')]+=_0xc07301;this['getContactDialerIvr'](_0x25f212['id'],_0xc07301,_0x25f212['dialOrderByScheduledAt'],_0x25f212)['then'](function(_0x30beeb){_0x25f212['temp']-=_0xc07301;_0x25f212[_0xcb7f('0xbc')]=_0x25f212[_0xcb7f('0xbc')]>0x0?_0x25f212[_0xcb7f('0xbc')]:0x0;if(!checkContactEmpty(_0x30beeb)){_0x25f212[_0xcb7f('0x39')]=_0xcb7f('0x1fc');logger[_0xcb7f('0x77')](_0xcb7f('0x1fd')+_0x25f212[_0xcb7f('0x3b')]);}else{_0x25f212['originated']+=_0x30beeb[_0xcb7f('0x145')];_0x25f212['message']=_0xcb7f('0x1fe');for(var _0x43294d=0x0;_0x43294d<_0x30beeb[_0xcb7f('0x145')];_0x43294d+=0x1){_0x25f212[_0xcb7f('0x1ff')]+=0x1;if(_['isNil'](_0x30beeb[_0x43294d])||_['isNil'](_0x30beeb[_0x43294d]['Contact'])||_['isNil'](_0x30beeb[_0x43294d][_0xcb7f('0x16b')][_0xcb7f('0x16c')])){_0xb484f4[_0xcb7f('0xc8')](_0xcb7f('0x200'),_0x25f212,_0x30beeb[_0x43294d]);}else{_0xb484f4[_0xcb7f('0xb5')](_[_0xcb7f('0xcc')](_0x30beeb[_0x43294d],[_0xcb7f('0xfc'),_0xcb7f('0x201')]))['then'](_0xb484f4[_0xcb7f('0x1e7')](_0x25f212,_0x30beeb[_0x43294d]))['catch'](_0xb484f4[_0xcb7f('0xc7')](_0xcb7f('0x202'),_0x25f212));}}}})[_0xcb7f('0xb1')](loggerGetContactDialer(_0xcb7f('0x203'),_0x25f212,_0xc07301));}};Dialer[_0xcb7f('0x19')][_0xcb7f('0x155')]=function(_0x2a8b40,_0x312332){var _0x4f9514=this;var _0x57f1da=[];var _0x3566db=_0x312332>=0x1?_0x312332:0x1;if(_0x2a8b40['dialMethod']===_0xcb7f('0x7')){_0x3566db=0x1;}var _0xcf2cf=Math[_0xcb7f('0x1c6')](_0x2a8b40['available']*_0x3566db)-_0x2a8b40[_0xcb7f('0x6b')]-_0x2a8b40['temp'];emitVoiceQueueSummary(_0x2a8b40);if(_0x2a8b40['dialLimitQueue']>0x0){var _0x3d0312=_0x2a8b40[_0xcb7f('0x204')]-_0x2a8b40['originated']-_0x2a8b40[_0xcb7f('0x51')]-_0x2a8b40[_0xcb7f('0xbc')]-_0x2a8b40[_0xcb7f('0x4d')];if(_0xcf2cf>_0x3d0312){_0xcf2cf=_0x3d0312;}}if(_0xcf2cf>0x0){if(_0x2a8b40[_0xcb7f('0x55')]===_0xcb7f('0x7')){_0xcf2cf=0x1;}if(_0xcf2cf>this['maxNumberOriginate']){_0xcf2cf=this[_0xcb7f('0x23')];}_0x2a8b40[_0xcb7f('0xbc')]+=_0xcf2cf;for(var _0x1d8553 in this[_0xcb7f('0x21')]){if(typeof this[_0xcb7f('0x21')][_0x1d8553]!==_0xcb7f('0x92')){if(this[_0xcb7f('0x21')][_0x1d8553][_0xcb7f('0xa0')]===_0xcb7f('0x205')&&this[_0xcb7f('0x21')][_0x1d8553]['status']==='reachable'){_0x57f1da[_0xcb7f('0x14b')](this['agents'][_0x1d8553]['id']);}}}this['getContactDialer'](_0x2a8b40['id'],_0x57f1da,_0xcf2cf,_0x2a8b40[_0xcb7f('0x206')],_0x2a8b40)[_0xcb7f('0xaf')](function(_0x3cb92b){_0x2a8b40['temp']-=_0xcf2cf;_0x2a8b40['temp']=_0x2a8b40[_0xcb7f('0xbc')]>0x0?_0x2a8b40[_0xcb7f('0xbc')]:0x0;if(!checkContactEmpty(_0x3cb92b)){_0x4f9514['countReScheduled'](_0x2a8b40)[_0xcb7f('0xaf')](sendMessageReschedule(_0x2a8b40))[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xb2')));}else{_0x2a8b40['originated']+=_0x3cb92b['length'];_0x2a8b40['message']=_0x2a8b40[_0xcb7f('0x55')]===_0xcb7f('0x7')?_0xcb7f('0x207'):_0xcb7f('0x1fe');for(var _0xcadf46=0x0;_0xcadf46<_0x3cb92b[_0xcb7f('0x145')];_0xcadf46+=0x1){if(_[_0xcb7f('0xd5')](_0x3cb92b[_0xcadf46])||_[_0xcb7f('0xd5')](_0x3cb92b[_0xcadf46][_0xcb7f('0x16b')])||_['isNil'](_0x3cb92b[_0xcadf46]['Contact'][_0xcb7f('0x16c')])){_0x4f9514['emptyContact'](_0xcb7f('0x200'),_0x2a8b40,_0x3cb92b[_0xcadf46]);}else{_0x4f9514[_0xcb7f('0xb3')](_[_0xcb7f('0xcc')](_0x3cb92b[_0xcadf46],[_0xcb7f('0xfb'),'Contact.phone']))[_0xcb7f('0xaf')](_0x4f9514[_0xcb7f('0x1e7')](_0x2a8b40,_0x3cb92b[_0xcadf46]))[_0xcb7f('0xb1')](_0x4f9514['loggerHandler'](_0xcb7f('0x200'),_0x2a8b40));}}}})[_0xcb7f('0xb1')](loggerGetContactDialer('[getContactDialer2]',_0x2a8b40,_0xcf2cf));}};Dialer[_0xcb7f('0x19')][_0xcb7f('0x88')]=function(_0x1a3b4f){if(_0x1a3b4f['dialLimitQueue']>0x0){var _0x57bf97=_0x1a3b4f[_0xcb7f('0x204')]-_0x1a3b4f[_0xcb7f('0x6b')]-_0x1a3b4f[_0xcb7f('0x51')];if(_0x57bf97>0x0){this['tryOriginatePredictive'](_0x1a3b4f);}else{loggerPredictiveCalls['info'](_0xcb7f('0x208'));}}else{this[_0xcb7f('0x209')](_0x1a3b4f);}};Dialer[_0xcb7f('0x19')]['tryOriginatePredictive']=function(_0x2d8a24){var _0x1b55df=this;var _0x28c1ea=[];_0x2d8a24[_0xcb7f('0x6b')]+=0x1;for(var _0x14b637 in this['agents']){if(typeof this[_0xcb7f('0x21')][_0x14b637]!==_0xcb7f('0x92')){if(this[_0xcb7f('0x21')][_0x14b637][_0xcb7f('0xa0')]==='not_inuse'&&this['agents'][_0x14b637][_0xcb7f('0xa8')]===_0xcb7f('0xd4')){_0x28c1ea[_0xcb7f('0x14b')](this[_0xcb7f('0x21')][_0x14b637]['id']);}}}this[_0xcb7f('0xbb')](_0x2d8a24['id'],_0x28c1ea,0x1,_0x2d8a24[_0xcb7f('0x206')],_0x2d8a24)['then'](function(_0x5f4de8){if(!checkContactEmpty(_0x5f4de8)){checkContactLowerLimitOriginate(_0x2d8a24,0x1,0x0);_0x1b55df[_0xcb7f('0xb0')](_0x2d8a24)[_0xcb7f('0xaf')](sendMessageReschedule(_0x2d8a24))[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xb2')));}else{_0x2d8a24[_0xcb7f('0x39')]=_0xcb7f('0x1fe');if(_['isNil'](_0x5f4de8[0x0])||_['isNil'](_0x5f4de8[0x0][_0xcb7f('0x16b')])||_[_0xcb7f('0xd5')](_0x5f4de8[0x0][_0xcb7f('0x16b')]['phone'])){_0x1b55df['emptyContact'](_0xcb7f('0x200'),_0x2d8a24,_0x5f4de8[0x0]);}else{_0x1b55df[_0xcb7f('0xb3')](_[_0xcb7f('0xcc')](_0x5f4de8[0x0],[_0xcb7f('0xfb'),_0xcb7f('0x201')]))[_0xcb7f('0xaf')](_0x1b55df[_0xcb7f('0x1e7')](_0x2d8a24,_0x5f4de8[0x0]))[_0xcb7f('0xb1')](_0x1b55df[_0xcb7f('0xc7')](_0xcb7f('0x20a'),_0x2d8a24));}}})[_0xcb7f('0xb1')](loggerGetContactDialer(_0xcb7f('0x20b'),_0x2d8a24,0x1));emitVoiceQueueSummary(_0x2d8a24);};Dialer['prototype'][_0xcb7f('0x1dc')]=function(_0x4356a7,_0x5576de,_0x3cc4b5,_0x390c49,_0x3a5bb4,_0x570eec){loggerPredictive['info'](_0xcb7f('0x20c'));loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x20d'),_0x4356a7);loggerPredictive['info']('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5576de);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x20e'),_0x3cc4b5);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x20f'),_0x390c49);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x210'),_0x3a5bb4);loggerPredictive[_0xcb7f('0x77')]('---------------------------');return new BPromise(function(_0x472878,_0x42a99d){if(_0x4356a7<=0x0||isNaN(_0x4356a7)){return _0x42a99d(msgResponse(_0xcb7f('0x211'),_0xcb7f('0x43'),_0xcb7f('0x212')+_0x4356a7));}if(_0x3cc4b5<=0x0||isNaN(_0x3cc4b5)){return _0x42a99d(msgResponse('[abandonmentRate]',_0xcb7f('0x43'),_0xcb7f('0x213')+_0x3cc4b5));}if(_0x390c49<=0x0||isNaN(_0x390c49)){return _0x42a99d(msgResponse(_0xcb7f('0x211'),_0xcb7f('0x43'),_0xcb7f('0x214')+_0x390c49));}if(_0x5576de<=0x0||isNaN(_0x5576de)){return _0x42a99d(msgResponse(_0xcb7f('0x211'),_0xcb7f('0x43'),'interval\x20=\x20'+_0x5576de));}if(_0x3a5bb4<=0x0||isNaN(_0x3a5bb4)){return _0x42a99d(msgResponse('[abandonmentRate]',_0xcb7f('0x43'),_0xcb7f('0x215')+_0x3a5bb4));}_0x570eec=_0x570eec||0x0;var _0x27ef04=0x1/_0x3cc4b5;var _0x394d66=0x0;var _0x1ac9e6=0x0;var _0x5bdbed=0x0;var _0x2a9d40=0x0;for(var _0x2009a3=0x0;_0x5bdbed<_0x3a5bb4;_0x2009a3+=0x1){_0x1ac9e6=_0x2009a3/_0x5576de;_0x394d66=(_0x390c49*_0x1ac9e6+_0x570eec)/_0x27ef04;_0x5bdbed=erlangb(_0x394d66,_0x4356a7);_0x2a9d40=_0x394d66/_0x4356a7*(0x1-erlangb(_0x394d66,_0x4356a7));}return _0x472878({'erlangCalls':_0x2009a3,'erlangCallToSecond':_0x5576de/_0x2009a3,'erlangAbandonmentRate':_0x5bdbed,'erlangBusyFactor':_0x2a9d40});});};Dialer[_0xcb7f('0x19')][_0xcb7f('0x1dd')]=function(_0x1cae02,_0x5f0028,_0xa3e24c,_0x3e02a0,_0x2d3bb6,_0x3851ac){loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x216'));loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x20d'),_0x1cae02);loggerPredictive['info'](_0xcb7f('0x217'),_0x5f0028);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x20e'),_0xa3e24c);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x20f'),_0x3e02a0);loggerPredictive['info'](_0xcb7f('0x218'),_0x2d3bb6);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x7d'));return new BPromise(function(_0x46834e,_0x199f67){if(_0x1cae02<=0x0||isNaN(_0x1cae02)){return _0x199f67(msgResponse(_0xcb7f('0x219'),_0xcb7f('0x43'),_0xcb7f('0x212')+_0x1cae02));}if(_0xa3e24c<=0x0||isNaN(_0xa3e24c)){return _0x199f67(msgResponse(_0xcb7f('0x219'),_0xcb7f('0x43'),_0xcb7f('0x213')+_0xa3e24c));}if(_0x3e02a0<=0x0||isNaN(_0x3e02a0)){return _0x199f67(msgResponse(_0xcb7f('0x219'),_0xcb7f('0x43'),_0xcb7f('0x214')+_0x3e02a0));}if(_0x5f0028<=0x0||isNaN(_0x5f0028)){return _0x199f67(msgResponse('[busyFactor]',_0xcb7f('0x43'),'interval\x20=\x20'+_0x5f0028));}if(_0x2d3bb6<=0x0||isNaN(_0x2d3bb6)){return _0x199f67(msgResponse(_0xcb7f('0x219'),_0xcb7f('0x43'),_0xcb7f('0x21a')+_0x2d3bb6));}_0x3851ac=_0x3851ac||0x0;var _0x46ab84=0x1/_0xa3e24c;var _0xa5ab5d=0x0;var _0x102b04=0x0;var _0x43e6cd=0x0;var _0x31a95f=0x0;for(var _0x92e5ed=0x0;_0x31a95f<_0x2d3bb6;_0x92e5ed+=0x1){_0x102b04=_0x92e5ed/_0x5f0028;_0xa5ab5d=(_0x3e02a0*_0x102b04+_0x3851ac)/_0x46ab84;_0x43e6cd=erlangb(_0xa5ab5d,_0x1cae02);_0x31a95f=_0xa5ab5d/_0x1cae02*(0x1-erlangb(_0xa5ab5d,_0x1cae02));}return _0x46834e({'erlangCalls':_0x92e5ed,'erlangCallToSecond':_0x5f0028/_0x92e5ed,'erlangAbandonmentRate':_0x43e6cd,'erlangBusyFactor':_0x31a95f});});};module[_0xcb7f('0x21b')]=Dialer;
\ No newline at end of file
index ffc9c17..dbdd8e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef5b=['CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','moment','milliseconds','diff','seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','droptime','ringtime','holdtime','connectedlinename','reason','callback','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId'];(function(_0x3e3613,_0x24ccc9){var _0xe4828c=function(_0x2c5b67){while(--_0x2c5b67){_0x3e3613['push'](_0x3e3613['shift']());}};_0xe4828c(++_0x24ccc9);}(_0xef5b,0xfa));var _0xbef5=function(_0x44b7f6,_0x2daf7e){_0x44b7f6=_0x44b7f6-0x0;var _0x2f14ad=_0xef5b[_0x44b7f6];return _0x2f14ad;};'use strict';var util=require('util');var _=require(_0xbef5('0x0'));var moment=require(_0xbef5('0x1'));function getSeconds(_0x305f56,_0x401d70){var _0x5a5710=moment(_0x305f56)[_0xbef5('0x2')](0x0);var _0x5343b0=moment(_0x401d70)[_0xbef5('0x2')](0x0);return _0x5a5710[_0xbef5('0x3')](_0x5343b0,_0xbef5('0x4'));}function QueueCallerAbandon(_0x4e5c03,_0x32cf9a){this[_0xbef5('0x5')]=_0x4e5c03[_0xbef5('0x5')];this[_0xbef5('0x6')]=_0x4e5c03['type'];this[_0xbef5('0x7')]=_0x4e5c03[_0xbef5('0x6')]===_0xbef5('0x8')?_0xbef5('0x9'):_0x4e5c03[_0xbef5('0x6')];this['countbusyretry']=_0x4e5c03[_0xbef5('0xa')];this[_0xbef5('0xb')]=_0x4e5c03[_0xbef5('0xb')];this[_0xbef5('0xc')]=_0x4e5c03[_0xbef5('0xc')];this[_0xbef5('0xd')]=_0x4e5c03[_0xbef5('0xa')]+_0x4e5c03[_0xbef5('0xb')]+_0x4e5c03[_0xbef5('0xc')]+_0x4e5c03[_0xbef5('0xe')]+_0x4e5c03[_0xbef5('0xf')]+_0x4e5c03['countabandonedretry']+_0x4e5c03[_0xbef5('0x10')]+_0x4e5c03[_0xbef5('0x11')];this[_0xbef5('0xe')]=_0x4e5c03[_0xbef5('0xe')];this[_0xbef5('0xf')]=_0x4e5c03[_0xbef5('0xf')];this['countabandonedretry']=_0x4e5c03[_0xbef5('0x12')];this[_0xbef5('0x10')]=_0x4e5c03[_0xbef5('0x10')];this[_0xbef5('0x11')]=_0x4e5c03['countagentrejectretry'];this['uniqueid']=_0x32cf9a[_0xbef5('0x13')];this[_0xbef5('0x14')]=_0x4e5c03[_0xbef5('0x15')];this[_0xbef5('0x16')]=_0x4e5c03['number'];this[_0xbef5('0x17')]=_0x4e5c03['starttime'];this[_0xbef5('0x18')]=_0x4e5c03[_0xbef5('0x18')];this[_0xbef5('0x19')]=_0x4e5c03[_0xbef5('0x19')];this['endtime']=this[_0xbef5('0x19')];this[_0xbef5('0x1a')]=getSeconds(_0x4e5c03['responsetime'],_0x4e5c03[_0xbef5('0x17')]);this[_0xbef5('0x1b')]=getSeconds(this[_0xbef5('0x19')],_0x4e5c03['responsetime']);this['talktime']=0x0;this['queue']=_0x32cf9a['queue'];this['membername']=_0x32cf9a[_0xbef5('0x1c')];this[_0xbef5('0x1d')]=_0x32cf9a[_0xbef5('0x1d')];this[_0xbef5('0x1e')]=_0x4e5c03['callback'];this['callbackuniqueid']=_0x4e5c03['callbackuniqueid'];this[_0xbef5('0x1f')]=_0x4e5c03['callbackat'];this['recallme']=_0x4e5c03[_0xbef5('0x20')];this[_0xbef5('0x21')]=_0x4e5c03[_0xbef5('0x21')];this[_0xbef5('0x22')]=_0x4e5c03[_0xbef5('0x22')];this['UserId']=_0x4e5c03[_0xbef5('0x23')];this[_0xbef5('0x24')]=_0x4e5c03[_0xbef5('0x24')];this[_0xbef5('0x25')]=_0x4e5c03[_0xbef5('0x25')];this[_0xbef5('0x26')]=_0x4e5c03[_0xbef5('0x26')]||'';this[_0xbef5('0x27')]=_0x4e5c03[_0xbef5('0x27')]||'';}module[_0xbef5('0x28')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x076d=['name','calleridnum','starttime','responsetime','endtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','util','moment','diff','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname'];(function(_0x46ba36,_0x3a8f01){var _0x3fc678=function(_0x322b07){while(--_0x322b07){_0x46ba36['push'](_0x46ba36['shift']());}};_0x3fc678(++_0x3a8f01);}(_0x076d,0x1a9));var _0xd076=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x076d[_0x13d07a];return _0x5ee0ee;};'use strict';var util=require(_0xd076('0x0'));var _=require('lodash');var moment=require(_0xd076('0x1'));function getSeconds(_0x12a151,_0x2de4a3){var _0x4f19cc=moment(_0x12a151)['milliseconds'](0x0);var _0x3fa508=moment(_0x2de4a3)['milliseconds'](0x0);return _0x4f19cc[_0xd076('0x2')](_0x3fa508,'seconds');}function QueueCallerAbandon(_0x8e6cbc,_0x162bef){this[_0xd076('0x3')]=_0x8e6cbc[_0xd076('0x3')];this[_0xd076('0x4')]=_0x8e6cbc[_0xd076('0x4')];this[_0xd076('0x5')]=_0x8e6cbc[_0xd076('0x4')]===_0xd076('0x6')?_0xd076('0x7'):_0x8e6cbc[_0xd076('0x4')];this[_0xd076('0x8')]=_0x8e6cbc[_0xd076('0x8')];this[_0xd076('0x9')]=_0x8e6cbc[_0xd076('0x9')];this[_0xd076('0xa')]=_0x8e6cbc[_0xd076('0xa')];this[_0xd076('0xb')]=_0x8e6cbc[_0xd076('0x8')]+_0x8e6cbc[_0xd076('0x9')]+_0x8e6cbc[_0xd076('0xa')]+_0x8e6cbc[_0xd076('0xc')]+_0x8e6cbc[_0xd076('0xd')]+_0x8e6cbc[_0xd076('0xe')]+_0x8e6cbc[_0xd076('0xf')]+_0x8e6cbc['countagentrejectretry'];this['countnosuchnumberretry']=_0x8e6cbc['countnosuchnumberretry'];this['countdropretry']=_0x8e6cbc[_0xd076('0xd')];this[_0xd076('0xe')]=_0x8e6cbc[_0xd076('0xe')];this[_0xd076('0xf')]=_0x8e6cbc['countmachineretry'];this[_0xd076('0x10')]=_0x8e6cbc[_0xd076('0x10')];this[_0xd076('0x11')]=_0x162bef[_0xd076('0x11')];this[_0xd076('0x12')]=_0x8e6cbc[_0xd076('0x13')];this[_0xd076('0x14')]=_0x8e6cbc['number'];this[_0xd076('0x15')]=_0x8e6cbc['starttime'];this['responsetime']=_0x8e6cbc[_0xd076('0x16')];this['droptime']=_0x8e6cbc['droptime'];this[_0xd076('0x17')]=this['droptime'];this['ringtime']=getSeconds(_0x8e6cbc[_0xd076('0x16')],_0x8e6cbc[_0xd076('0x15')]);this['holdtime']=getSeconds(this['droptime'],_0x8e6cbc[_0xd076('0x16')]);this[_0xd076('0x18')]=0x0;this['queue']=_0x162bef['queue'];this[_0xd076('0x19')]=_0x162bef['connectedlinename'];this[_0xd076('0x1a')]=_0x162bef[_0xd076('0x1a')];this[_0xd076('0x1b')]=_0x8e6cbc[_0xd076('0x1b')];this[_0xd076('0x1c')]=_0x8e6cbc['callbackuniqueid'];this[_0xd076('0x1d')]=_0x8e6cbc['callbackat'];this[_0xd076('0x1e')]=_0x8e6cbc[_0xd076('0x1e')];this[_0xd076('0x1f')]=_0x8e6cbc[_0xd076('0x1f')];this[_0xd076('0x20')]=_0x8e6cbc['ListId'];this[_0xd076('0x21')]=_0x8e6cbc['UserId'];this['VoiceQueueId']=_0x8e6cbc[_0xd076('0x22')];this['CampaignId']=_0x8e6cbc['CampaignId'];this[_0xd076('0x23')]=_0x8e6cbc[_0xd076('0x23')]||'';this[_0xd076('0x24')]=_0x8e6cbc['originatecalleridname']||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
index a21de3a..e5a775c 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(_0x4d1093,_0x3152fe){var _0x3741f6=function(_0x3cd400){while(--_0x3cd400){_0x4d1093['push'](_0x4d1093['shift']());}};_0x3741f6(++_0x3152fe);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa9e0[_0x1b828b];return _0x98da1a;};'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(_0x3eecfd,_0x3048ed){var _0x452838=function(_0x1a5dbf){while(--_0x1a5dbf){_0x3eecfd['push'](_0x3eecfd['shift']());}};_0x452838(++_0x3048ed);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'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 0dabd29..a7d793e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd914=['dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','execOriginate','addVariables','isTrunkReachable','isNil','active','format','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','Trunk\x20not\x20working','Empty\x20Fax','Empty\x20path','Is\x20Valid','exports','util','lodash','uuid','moment','path','tiff2pdf','./util/gs','../../../config/logger','../ami','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','syncVarSet','bind','newstate','syncNewState','newexten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','originateresponse','syncOriginateResponse','prototype','context','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','channelstate','channelstatedesc','variable','operation','status','filename','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','create','parse','.pdf','application/pdf','then','notify','catch','error','\x20receiveFax\x20','stringify','merge','pick','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','[Fax][Message][NoUpdate2]','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','SUCCESS','SENDING\x20FAILED:\x20','faxstatusstring','SENDING\x20FAILED','send','FaxAccountId','[Fax][execOriginate][success]','message','Fax\x20received','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','isValid','Trunk\x20Reachable','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','execute','%s/%s.tif'];(function(_0x52a730,_0x12865f){var _0x1e110f=function(_0x16f0c8){while(--_0x16f0c8){_0x52a730['push'](_0x52a730['shift']());}};_0x1e110f(++_0x12865f);}(_0xd914,0x17f));var _0x4d91=function(_0x3cb30b,_0x504b3e){_0x3cb30b=_0x3cb30b-0x0;var _0x2ca717=_0xd914[_0x3cb30b];return _0x2ca717;};'use strict';var util=require(_0x4d91('0x0'));var _=require(_0x4d91('0x1'));var BPromise=require('bluebird');var uuid=require(_0x4d91('0x2'));var moment=require(_0x4d91('0x3'));var path=require(_0x4d91('0x4'));var tiff2pdf=require(_0x4d91('0x5'));var gs=require(_0x4d91('0x6'));var logger=require(_0x4d91('0x7'))('fax');var ami=require(_0x4d91('0x8'));var rpcDb=require('./rpcDb');var Channel=require(_0x4d91('0x9'));var ut=require(_0x4d91('0xa'));var Action=require(_0x4d91('0xb'));var faxAccount=require(_0x4d91('0xc'));var attachment=require(_0x4d91('0xd'));var faxMessage=require(_0x4d91('0xe'));function Fax(_0x3016c0){this[_0x4d91('0xf')]={};this['faxAccounts']=_0x3016c0[_0x4d91('0x10')];this[_0x4d91('0x11')]=_0x3016c0[_0x4d91('0x11')];this[_0x4d91('0x12')]={};ami['on'](_0x4d91('0x13'),this[_0x4d91('0x14')]['bind'](this));ami['on']('varset',this[_0x4d91('0x15')][_0x4d91('0x16')](this));ami['on'](_0x4d91('0x17'),this[_0x4d91('0x18')][_0x4d91('0x16')](this));ami['on'](_0x4d91('0x19'),this['syncNewExten']['bind'](this));ami['on'](_0x4d91('0x1a'),this[_0x4d91('0x1b')][_0x4d91('0x16')](this));ami['on'](_0x4d91('0x1c'),this[_0x4d91('0x1d')][_0x4d91('0x16')](this));ami['on'](_0x4d91('0x1e'),this['syncHangup'][_0x4d91('0x16')](this));ami['on'](_0x4d91('0x1f'),this[_0x4d91('0x20')][_0x4d91('0x16')](this));}Fax[_0x4d91('0x21')]['syncNewchannel']=function(_0x1241a1){if(_0x1241a1[_0x4d91('0x22')]===_0x4d91('0x23')){for(var _0x44b9a7 in this['faxAccounts']){if(this[_0x4d91('0x10')][_0x4d91('0x24')](_0x44b9a7)){if(_0x1241a1[_0x4d91('0x25')]===this['faxAccounts'][_0x44b9a7][_0x4d91('0x26')]){this[_0x4d91('0xf')][_0x1241a1[_0x4d91('0x27')]]={};this[_0x4d91('0xf')][_0x1241a1[_0x4d91('0x27')]][_0x4d91('0x28')]=_0x1241a1[_0x4d91('0x28')];this[_0x4d91('0xf')][_0x1241a1[_0x4d91('0x27')]]['id']=this[_0x4d91('0x10')][_0x44b9a7]['id'];this['channels'][_0x1241a1[_0x4d91('0x27')]]['name']=this['faxAccounts'][_0x44b9a7][_0x4d91('0x29')];logger[_0x4d91('0x2a')](_0x1241a1[_0x4d91('0x27')],_0x4d91('0x2b'));}}}}if(this[_0x4d91('0x12')][_0x1241a1[_0x4d91('0x27')]]){this[_0x4d91('0xf')][_0x1241a1[_0x4d91('0x27')]]={};this['channels'][_0x1241a1['uniqueid']][_0x4d91('0x28')]=_0x1241a1[_0x4d91('0x28')];logger[_0x4d91('0x2a')](_0x1241a1[_0x4d91('0x27')],_0x4d91('0x2b'));}};Fax[_0x4d91('0x21')][_0x4d91('0x15')]=function(_0x560966){if(this[_0x4d91('0xf')][_0x560966[_0x4d91('0x27')]]){for(var _0x12ac74 in _0x560966['variable']){if(_0x560966['variable'][_0x4d91('0x24')](_0x12ac74)){this[_0x4d91('0xf')][_0x560966['uniqueid']][_0x12ac74]=_0x560966['value'];}}}};Fax[_0x4d91('0x21')][_0x4d91('0x18')]=function(_0x43371e){if(this[_0x4d91('0xf')][_0x43371e['uniqueid']]){this[_0x4d91('0xf')][_0x43371e[_0x4d91('0x27')]][_0x4d91('0x2c')]=_0x43371e[_0x4d91('0x2c')];this[_0x4d91('0xf')][_0x43371e[_0x4d91('0x27')]][_0x4d91('0x2d')]=_0x43371e['channelstatedesc'];}};Fax[_0x4d91('0x21')]['syncNewExten']=function(_0x4ad7bf){if(this[_0x4d91('0xf')][_0x4ad7bf[_0x4d91('0x27')]]){for(var _0x4f95f0 in _0x4ad7bf[_0x4d91('0x2e')]){if(_0x4ad7bf[_0x4d91('0x2e')][_0x4d91('0x24')](_0x4f95f0)){this[_0x4d91('0xf')][_0x4ad7bf[_0x4d91('0x27')]][_0x4f95f0]=_0x4ad7bf['value'];}}}};Fax[_0x4d91('0x21')][_0x4d91('0x1b')]=function(_0x36d7e0){if(this[_0x4d91('0xf')][_0x36d7e0[_0x4d91('0x27')]]){this[_0x4d91('0xf')][_0x36d7e0['uniqueid']][_0x4d91('0x2f')]=_0x36d7e0[_0x4d91('0x2f')];this['channels'][_0x36d7e0[_0x4d91('0x27')]][_0x4d91('0x30')]=_0x36d7e0[_0x4d91('0x30')];this['channels'][_0x36d7e0[_0x4d91('0x27')]][_0x4d91('0x26')]=_0x36d7e0[_0x4d91('0x26')];this[_0x4d91('0xf')][_0x36d7e0['uniqueid']][_0x4d91('0x31')]=_0x36d7e0[_0x4d91('0x31')];logger[_0x4d91('0x2a')](_0x36d7e0[_0x4d91('0x27')],'\x20syncFaxStatus\x20');}};Fax['prototype'][_0x4d91('0x1d')]=function(_0x3dac76){var _0x524052=this;if(this[_0x4d91('0xf')][_0x3dac76[_0x4d91('0x27')]]){var _0x197ea6=this[_0x4d91('0xf')][_0x3dac76['uniqueid']]['id'];this[_0x4d91('0xf')][_0x3dac76[_0x4d91('0x27')]]['remotestationid']=_0x3dac76[_0x4d91('0x32')];this['channels'][_0x3dac76[_0x4d91('0x27')]]['pagestransferred']=_0x3dac76[_0x4d91('0x33')];this['channels'][_0x3dac76[_0x4d91('0x27')]][_0x4d91('0x26')]=_0x3dac76[_0x4d91('0x26')];this[_0x4d91('0xf')][_0x3dac76['uniqueid']]['resolution']=_0x3dac76[_0x4d91('0x34')];this['channels'][_0x3dac76[_0x4d91('0x27')]][_0x4d91('0x35')]=_0x3dac76['transferrate'];this[_0x4d91('0xf')][_0x3dac76[_0x4d91('0x27')]][_0x4d91('0x31')]=_0x3dac76[_0x4d91('0x31')];this[_0x4d91('0xf')][_0x3dac76[_0x4d91('0x27')]][_0x4d91('0x36')]=_0x3dac76['calleridnum'];if(this[_0x4d91('0xf')][_0x3dac76['uniqueid']][_0x4d91('0x33')]>0x0){tiff2pdf(_0x3dac76[_0x4d91('0x31')],_0x4d91('0x37'),function(_0x2483c4){logger[_0x4d91('0x2a')](_0x3dac76[_0x4d91('0x27')],'\x20result\x20conversion\x20file\x20',_0x2483c4['message']);attachment[_0x4d91('0x38')]({'name':path[_0x4d91('0x39')](_0x3dac76['filename'])[_0x4d91('0x29')],'basename':path[_0x4d91('0x39')](_0x3dac76[_0x4d91('0x31')])[_0x4d91('0x29')]+_0x4d91('0x3a'),'type':_0x4d91('0x3b')})[_0x4d91('0x3c')](function(_0x971da4){faxAccount[_0x4d91('0x3d')](_0x197ea6,{'from':_0x3dac76['calleridnum'],'mapKey':'fax','body':path[_0x4d91('0x39')](_0x3dac76['filename'])[_0x4d91('0x29')]+_0x4d91('0x3a'),'AttachmentId':_0x971da4['id']})[_0x4d91('0x3e')](function(_0x10b1bb){logger['error'](_0x3dac76[_0x4d91('0x27')],'\x20notify\x20',JSON['stringify'](_0x10b1bb));});})[_0x4d91('0x3e')](function(_0xfd7c52){logger[_0x4d91('0x3f')](_0x3dac76[_0x4d91('0x27')],_0x4d91('0x40'),JSON[_0x4d91('0x41')](_0xfd7c52));});});}logger['info'](_0x3dac76[_0x4d91('0x27')],_0x4d91('0x40'));}};Fax[_0x4d91('0x21')][_0x4d91('0x20')]=function(_0x106e5b){if(this[_0x4d91('0x12')][_0x106e5b[_0x4d91('0x27')]]){_[_0x4d91('0x42')](this[_0x4d91('0xf')][_0x106e5b[_0x4d91('0x27')]],_[_0x4d91('0x43')](_0x106e5b,['response',_0x4d91('0x44')]));}};function updateStatus(_0x5a5c03){if(_0x5a5c03[_0x4d91('0x45')]){faxMessage[_0x4d91('0x46')](_0x5a5c03[_0x4d91('0x45')],{'failMessage':_0x4d91('0x47')})[_0x4d91('0x3c')](function(_0x3edc43){ut[_0x4d91('0x48')](_0x4d91('0x49'),_0x3edc43);})['catch'](function(_0x63f708){ut[_0x4d91('0x48')](_0x4d91('0x4a'),_0x63f708);});}else{ut[_0x4d91('0x48')](_0x4d91('0x4b'));}}Fax[_0x4d91('0x21')][_0x4d91('0x4c')]=function(_0x4aae23,_0x392cc3,_0x2159e4){var _0x413b25=this;var _0x4382ff={};if(_0x392cc3){_0x4382ff={'read':_0x392cc3};}else{_0x4382ff={'failMessage':_0x2159e4};}if(this[_0x4d91('0x12')][_0x4aae23][_0x4d91('0x45')]){faxMessage[_0x4d91('0x46')](this[_0x4d91('0x12')][_0x4aae23][_0x4d91('0x45')],_0x4382ff)[_0x4d91('0x3c')](function(_0x8339dd){ut[_0x4d91('0x48')](_0x4d91('0x4d'),_0x8339dd);})[_0x4d91('0x3e')](function(_0x3e9154){ut[_0x4d91('0x48')](_0x4d91('0x4e'),_0x3e9154);})['finally'](function(){delete _0x413b25['channels'][_0x4aae23];delete _0x413b25['actions'][_0x4aae23];});}else{ut[_0x4d91('0x48')](_0x4d91('0x4f'));delete this[_0x4d91('0xf')][_0x4aae23];delete this['actions'][_0x4aae23];}};Fax[_0x4d91('0x21')][_0x4d91('0x50')]=function(_0x3985f3){var _0x4ac087=this;if(this['channels'][_0x3985f3['uniqueid']]){if(this[_0x4d91('0x12')][_0x3985f3[_0x4d91('0x27')]]){this[_0x4d91('0xf')][_0x3985f3[_0x4d91('0x27')]]['id']=this[_0x4d91('0x12')][_0x3985f3['uniqueid']]['id'];this[_0x4d91('0xf')][_0x3985f3[_0x4d91('0x27')]]['name']=this['actions'][_0x3985f3[_0x4d91('0x27')]]['name'];}logger[_0x4d91('0x2a')](_0x3985f3[_0x4d91('0x27')],this[_0x4d91('0x12')][_0x3985f3['uniqueid']]?_0x4d91('0x51'):_0x4d91('0x52'),JSON[_0x4d91('0x41')](this[_0x4d91('0xf')][_0x3985f3[_0x4d91('0x27')]]));if(this[_0x4d91('0x12')][_0x3985f3[_0x4d91('0x27')]]){if(this['channels'][_0x3985f3['uniqueid']]['faxpages']>0x0&&this['channels'][_0x3985f3[_0x4d91('0x27')]][_0x4d91('0x1a')]===_0x4d91('0x53')){this['updateStatus'](_0x3985f3[_0x4d91('0x27')],!![]);}else{this['updateStatus'](_0x3985f3[_0x4d91('0x27')],![],this[_0x4d91('0xf')][_0x3985f3['uniqueid']]['faxstatusstring']?_0x4d91('0x54')+this[_0x4d91('0xf')][_0x3985f3[_0x4d91('0x27')]][_0x4d91('0x55')]:_0x4d91('0x56'));}}}};Fax[_0x4d91('0x21')][_0x4d91('0x57')]=function(_0x42e550){var _0xd384a9=this;return new BPromise(function(_0xd660b3,_0x5bfb08){_0xd384a9['execOriginate'](_0x42e550,_0xd384a9[_0x4d91('0x10')][_0x42e550[_0x4d91('0x58')]])[_0x4d91('0x3c')](function(_0x13281d){ut[_0x4d91('0x48')](_0x4d91('0x59'),_0x13281d);_0xd660b3(ut[_0x4d91('0x5a')](_0x4d91('0x5b')));})[_0x4d91('0x3e')](function(_0x564885){ut['logger']('[Fax][execOriginate][failure]',_0x564885);updateStatus(_0x42e550);_0x5bfb08(ut['message'](_0x4d91('0x5c')));});});};Fax[_0x4d91('0x21')][_0x4d91('0x5d')]=function(_0x12f7de){var _0x8565e3=this;return new BPromise(function(_0x12fa2e,_0x37710b){var _0xa1b6e5=_0x8565e3[_0x4d91('0x5e')](_0x8565e3[_0x4d91('0x10')][_0x12f7de[_0x4d91('0x58')]][_0x4d91('0x5f')],_0x12f7de);if(_0xa1b6e5[_0x4d91('0x60')]){_0x12fa2e(ut[_0x4d91('0x5a')](_0x4d91('0x61')));}else{_0x37710b(ut[_0x4d91('0x5a')](_0xa1b6e5[_0x4d91('0x5a')]));}});};function originate(_0x5b3a38,_0x4062c6,_0x1be4b1){return new BPromise(function(_0xc4ef10,_0x2e2105){if(_0x1be4b1){var _0x1cad5b=util['format'](_0x4d91('0x62'),path[_0x4d91('0x39')](_0x5b3a38['path'])[_0x4d91('0x29')],_0x5b3a38[_0x4d91('0x4')]);gs[_0x4d91('0x63')](_0x1cad5b)[_0x4d91('0x3c')](function(){_0x5b3a38[_0x4d91('0x4')]=util['format'](_0x4d91('0x64'),path[_0x4d91('0x39')](_0x5b3a38['path'])[_0x4d91('0x65')],path[_0x4d91('0x39')](_0x5b3a38[_0x4d91('0x4')])['name']);_0x4062c6[_0x4d91('0x66')]=_0x5b3a38[_0x4d91('0x4')];ut[_0x4d91('0x48')](_0x4d91('0x67'),'');ami[_0x4d91('0x68')](ut[_0x4d91('0x69')](_0x5b3a38,_0x4062c6))[_0x4d91('0x3c')](function(_0x4fcc58){_0xc4ef10(_0x4fcc58);})[_0x4d91('0x3e')](function(_0x2e014b){_0x2e2105(_0x2e014b);});})['catch'](function(_0x221e44){_0x2e2105(_0x221e44);});}else{ami['Action'](ut['variablesAction'](_0x5b3a38,_0x4062c6))[_0x4d91('0x3c')](function(_0x4b19e2){_0xc4ef10(_0x4b19e2);})[_0x4d91('0x3e')](function(_0x1a4a33){_0x2e2105(_0x1a4a33);});}});}Fax[_0x4d91('0x21')][_0x4d91('0x6a')]=function(_0x10211f,_0x3fa0e0){var _0x17e61c=this;return new BPromise(function(_0x497f84,_0x485da1){var _0x1c27e7=uuid['v4']();var _0x431223=ut[_0x4d91('0x6b')](_0x10211f,_0x3fa0e0);_0x17e61c[_0x4d91('0x12')][_0x1c27e7]=new Action(_0x1c27e7,_0x3fa0e0,_0x10211f);var _0x1e3838=_0x17e61c['actions'][_0x1c27e7];if(path['parse'](_0x10211f[_0x4d91('0x4')])['ext']==='.pdf'){originate(_0x1e3838,_0x431223,!![])[_0x4d91('0x3c')](function(_0x54fea8){_0x497f84(_0x54fea8);})['catch'](function(_0x216c33){_0x485da1(_0x216c33);});}else{originate(_0x1e3838,_0x431223,![])[_0x4d91('0x3c')](function(_0x1987fa){_0x497f84(_0x1987fa);})['catch'](function(_0x5028c5){_0x485da1(_0x5028c5);});}});};Fax['prototype'][_0x4d91('0x6c')]=function(_0x8d84f3){return!_[_0x4d91('0x6d')](_0x8d84f3)&&!_[_0x4d91('0x6d')](_0x8d84f3[_0x4d91('0x29')])&&!_[_0x4d91('0x6d')](_0x8d84f3[_0x4d91('0x6e')])&&_0x8d84f3[_0x4d91('0x6e')]&&!_[_0x4d91('0x6d')](this['trunks'][util[_0x4d91('0x6f')]('SIP/%s',_0x8d84f3['name'])])&&!_[_0x4d91('0x6d')](this[_0x4d91('0x11')][util[_0x4d91('0x6f')](_0x4d91('0x70'),_0x8d84f3['name'])][_0x4d91('0x30')])&&(this[_0x4d91('0x11')][util[_0x4d91('0x6f')](_0x4d91('0x70'),_0x8d84f3[_0x4d91('0x29')])][_0x4d91('0x30')]===_0x4d91('0x71')||this['trunks'][util[_0x4d91('0x6f')](_0x4d91('0x70'),_0x8d84f3[_0x4d91('0x29')])]['status']===_0x4d91('0x72'));};Fax[_0x4d91('0x21')][_0x4d91('0x5e')]=function(_0x2f4796,_0xb3688a){if(!this[_0x4d91('0x6c')](_0x2f4796)){ut['logger'](_0x4d91('0x73'),_['isNil'](_0x2f4796)?'':_0x2f4796[_0x4d91('0x29')]+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':_0x4d91('0x74')};}if(_[_0x4d91('0x6d')](_0xb3688a['fax'])){ut['logger']('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0x4d91('0x41')](_0xb3688a));return{'isValid':![],'message':_0x4d91('0x75')};}if(_[_0x4d91('0x6d')](_0xb3688a[_0x4d91('0x4')])){ut[_0x4d91('0x48')]('[Fax][checkTrunk][Empty\x20path]',JSON['stringify'](_0xb3688a));return{'isValid':![],'message':_0x4d91('0x76')};}return{'isValid':!![],'message':_0x4d91('0x77')};};module[_0x4d91('0x78')]=Fax;
\ No newline at end of file
+var _0xa94f=['trunks','actions','newchannel','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','syncOriginateResponse','prototype','syncNewchannel','context','from-voip-provider','localstationid','uniqueid','channel','name','\x20syncNewchannel\x20','info','variable','hasOwnProperty','channelstate','channelstatedesc','operation','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','then','error','stringify','catch','\x20receiveFax\x20','merge','pick','response','reason','update','AttachmentId','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','faxpages','faxstatusstring','SENDING\x20FAILED','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','isValid','Trunk\x20Reachable','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','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','format','SIP/%s','status','reachable','\x20Trunk\x20is\x20not\x20active','[Fax][checkTrunk][Empty\x20Fax]','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','bluebird','moment','path','tiff2pdf','../../../config/logger','fax','../ami','./rpcDb','./util/util','./action','../rpc/faxAccount','../rpc/attachment','channels','faxAccounts'];(function(_0x5495ec,_0x4202c5){var _0x30813e=function(_0x33466d){while(--_0x33466d){_0x5495ec['push'](_0x5495ec['shift']());}};_0x30813e(++_0x4202c5);}(_0xa94f,0x1c0));var _0xfa94=function(_0x4609c2,_0x1256c9){_0x4609c2=_0x4609c2-0x0;var _0x559388=_0xa94f[_0x4609c2];return _0x559388;};'use strict';var util=require(_0xfa94('0x0'));var _=require(_0xfa94('0x1'));var BPromise=require(_0xfa94('0x2'));var uuid=require('uuid');var moment=require(_0xfa94('0x3'));var path=require(_0xfa94('0x4'));var tiff2pdf=require(_0xfa94('0x5'));var gs=require('./util/gs');var logger=require(_0xfa94('0x6'))(_0xfa94('0x7'));var ami=require(_0xfa94('0x8'));var rpcDb=require(_0xfa94('0x9'));var Channel=require('./channel');var ut=require(_0xfa94('0xa'));var Action=require(_0xfa94('0xb'));var faxAccount=require(_0xfa94('0xc'));var attachment=require(_0xfa94('0xd'));var faxMessage=require('../rpc/faxMessage');function Fax(_0x3ce23f){this[_0xfa94('0xe')]={};this[_0xfa94('0xf')]=_0x3ce23f['faxAccounts'];this[_0xfa94('0x10')]=_0x3ce23f[_0xfa94('0x10')];this[_0xfa94('0x11')]={};ami['on'](_0xfa94('0x12'),this['syncNewchannel'][_0xfa94('0x13')](this));ami['on'](_0xfa94('0x14'),this[_0xfa94('0x15')][_0xfa94('0x13')](this));ami['on'](_0xfa94('0x16'),this[_0xfa94('0x17')][_0xfa94('0x13')](this));ami['on'](_0xfa94('0x18'),this[_0xfa94('0x19')][_0xfa94('0x13')](this));ami['on'](_0xfa94('0x1a'),this[_0xfa94('0x1b')][_0xfa94('0x13')](this));ami['on'](_0xfa94('0x1c'),this[_0xfa94('0x1d')][_0xfa94('0x13')](this));ami['on'](_0xfa94('0x1e'),this[_0xfa94('0x1f')][_0xfa94('0x13')](this));ami['on']('originateresponse',this[_0xfa94('0x20')][_0xfa94('0x13')](this));}Fax[_0xfa94('0x21')][_0xfa94('0x22')]=function(_0x293a2c){if(_0x293a2c[_0xfa94('0x23')]===_0xfa94('0x24')){for(var _0x3be543 in this['faxAccounts']){if(this[_0xfa94('0xf')]['hasOwnProperty'](_0x3be543)){if(_0x293a2c['exten']===this[_0xfa94('0xf')][_0x3be543][_0xfa94('0x25')]){this[_0xfa94('0xe')][_0x293a2c[_0xfa94('0x26')]]={};this[_0xfa94('0xe')][_0x293a2c[_0xfa94('0x26')]][_0xfa94('0x27')]=_0x293a2c[_0xfa94('0x27')];this[_0xfa94('0xe')][_0x293a2c['uniqueid']]['id']=this['faxAccounts'][_0x3be543]['id'];this['channels'][_0x293a2c[_0xfa94('0x26')]][_0xfa94('0x28')]=this[_0xfa94('0xf')][_0x3be543]['name'];logger['info'](_0x293a2c[_0xfa94('0x26')],_0xfa94('0x29'));}}}}if(this[_0xfa94('0x11')][_0x293a2c[_0xfa94('0x26')]]){this[_0xfa94('0xe')][_0x293a2c[_0xfa94('0x26')]]={};this[_0xfa94('0xe')][_0x293a2c[_0xfa94('0x26')]][_0xfa94('0x27')]=_0x293a2c[_0xfa94('0x27')];logger[_0xfa94('0x2a')](_0x293a2c['uniqueid'],'\x20syncNewchannel\x20');}};Fax['prototype'][_0xfa94('0x15')]=function(_0x381e47){if(this['channels'][_0x381e47[_0xfa94('0x26')]]){for(var _0x20fa30 in _0x381e47[_0xfa94('0x2b')]){if(_0x381e47[_0xfa94('0x2b')][_0xfa94('0x2c')](_0x20fa30)){this[_0xfa94('0xe')][_0x381e47[_0xfa94('0x26')]][_0x20fa30]=_0x381e47['value'];}}}};Fax[_0xfa94('0x21')][_0xfa94('0x17')]=function(_0x308707){if(this['channels'][_0x308707[_0xfa94('0x26')]]){this[_0xfa94('0xe')][_0x308707[_0xfa94('0x26')]][_0xfa94('0x2d')]=_0x308707[_0xfa94('0x2d')];this['channels'][_0x308707[_0xfa94('0x26')]][_0xfa94('0x2e')]=_0x308707['channelstatedesc'];}};Fax['prototype'][_0xfa94('0x19')]=function(_0x39b40b){if(this['channels'][_0x39b40b[_0xfa94('0x26')]]){for(var _0x3d9265 in _0x39b40b['variable']){if(_0x39b40b[_0xfa94('0x2b')]['hasOwnProperty'](_0x3d9265)){this[_0xfa94('0xe')][_0x39b40b[_0xfa94('0x26')]][_0x3d9265]=_0x39b40b['value'];}}}};Fax['prototype'][_0xfa94('0x1b')]=function(_0x3c5cde){if(this[_0xfa94('0xe')][_0x3c5cde[_0xfa94('0x26')]]){this[_0xfa94('0xe')][_0x3c5cde[_0xfa94('0x26')]][_0xfa94('0x2f')]=_0x3c5cde['operation'];this[_0xfa94('0xe')][_0x3c5cde[_0xfa94('0x26')]]['status']=_0x3c5cde['status'];this['channels'][_0x3c5cde[_0xfa94('0x26')]]['localstationid']=_0x3c5cde[_0xfa94('0x25')];this['channels'][_0x3c5cde['uniqueid']][_0xfa94('0x30')]=_0x3c5cde[_0xfa94('0x30')];logger[_0xfa94('0x2a')](_0x3c5cde[_0xfa94('0x26')],_0xfa94('0x31'));}};Fax[_0xfa94('0x21')][_0xfa94('0x1d')]=function(_0x49c233){var _0x1b95e1=this;if(this[_0xfa94('0xe')][_0x49c233[_0xfa94('0x26')]]){var _0xbc953d=this[_0xfa94('0xe')][_0x49c233[_0xfa94('0x26')]]['id'];this[_0xfa94('0xe')][_0x49c233[_0xfa94('0x26')]][_0xfa94('0x32')]=_0x49c233[_0xfa94('0x32')];this[_0xfa94('0xe')][_0x49c233[_0xfa94('0x26')]][_0xfa94('0x33')]=_0x49c233[_0xfa94('0x33')];this['channels'][_0x49c233[_0xfa94('0x26')]][_0xfa94('0x25')]=_0x49c233[_0xfa94('0x25')];this['channels'][_0x49c233[_0xfa94('0x26')]][_0xfa94('0x34')]=_0x49c233[_0xfa94('0x34')];this['channels'][_0x49c233[_0xfa94('0x26')]][_0xfa94('0x35')]=_0x49c233['transferrate'];this[_0xfa94('0xe')][_0x49c233[_0xfa94('0x26')]][_0xfa94('0x30')]=_0x49c233[_0xfa94('0x30')];this[_0xfa94('0xe')][_0x49c233[_0xfa94('0x26')]]['calleridnum']=_0x49c233[_0xfa94('0x36')];if(this[_0xfa94('0xe')][_0x49c233['uniqueid']][_0xfa94('0x33')]>0x0){tiff2pdf(_0x49c233[_0xfa94('0x30')],_0xfa94('0x37'),function(_0x5e1cc7){logger['info'](_0x49c233[_0xfa94('0x26')],_0xfa94('0x38'),_0x5e1cc7[_0xfa94('0x39')]);attachment[_0xfa94('0x3a')]({'name':path[_0xfa94('0x3b')](_0x49c233[_0xfa94('0x30')])[_0xfa94('0x28')],'basename':path[_0xfa94('0x3b')](_0x49c233[_0xfa94('0x30')])[_0xfa94('0x28')]+_0xfa94('0x3c'),'type':'application/pdf'})[_0xfa94('0x3d')](function(_0x139acf){faxAccount['notify'](_0xbc953d,{'from':_0x49c233[_0xfa94('0x36')],'mapKey':_0xfa94('0x7'),'body':path[_0xfa94('0x3b')](_0x49c233[_0xfa94('0x30')])[_0xfa94('0x28')]+_0xfa94('0x3c'),'AttachmentId':_0x139acf['id']})['catch'](function(_0x2380bf){logger[_0xfa94('0x3e')](_0x49c233[_0xfa94('0x26')],'\x20notify\x20',JSON[_0xfa94('0x3f')](_0x2380bf));});})[_0xfa94('0x40')](function(_0x20495f){logger['error'](_0x49c233['uniqueid'],_0xfa94('0x41'),JSON[_0xfa94('0x3f')](_0x20495f));});});}logger[_0xfa94('0x2a')](_0x49c233['uniqueid'],_0xfa94('0x41'));}};Fax[_0xfa94('0x21')][_0xfa94('0x20')]=function(_0x8fbb87){if(this[_0xfa94('0x11')][_0x8fbb87[_0xfa94('0x26')]]){_[_0xfa94('0x42')](this[_0xfa94('0xe')][_0x8fbb87[_0xfa94('0x26')]],_[_0xfa94('0x43')](_0x8fbb87,[_0xfa94('0x44'),_0xfa94('0x45')]));}};function updateStatus(_0x3cc066){if(_0x3cc066['AttachmentId']){faxMessage[_0xfa94('0x46')](_0x3cc066[_0xfa94('0x47')],{'failMessage':_0xfa94('0x48')})['then'](function(_0x3faa88){ut[_0xfa94('0x49')](_0xfa94('0x4a'),_0x3faa88);})[_0xfa94('0x40')](function(_0x555497){ut['logger'](_0xfa94('0x4b'),_0x555497);});}else{ut[_0xfa94('0x49')](_0xfa94('0x4c'));}}Fax[_0xfa94('0x21')][_0xfa94('0x4d')]=function(_0x69a692,_0x33aef0,_0x3a79fd){var _0xeef1ac=this;var _0x11471f={};if(_0x33aef0){_0x11471f={'read':_0x33aef0};}else{_0x11471f={'failMessage':_0x3a79fd};}if(this[_0xfa94('0x11')][_0x69a692]['AttachmentId']){faxMessage[_0xfa94('0x46')](this[_0xfa94('0x11')][_0x69a692][_0xfa94('0x47')],_0x11471f)[_0xfa94('0x3d')](function(_0x26dc39){ut[_0xfa94('0x49')]('[Fax][Message][Updated]',_0x26dc39);})[_0xfa94('0x40')](function(_0x18b18a){ut['logger']('[Fax][Message][NoUpdate1]',_0x18b18a);})['finally'](function(){delete _0xeef1ac[_0xfa94('0xe')][_0x69a692];delete _0xeef1ac[_0xfa94('0x11')][_0x69a692];});}else{ut['logger'](_0xfa94('0x4e'));delete this[_0xfa94('0xe')][_0x69a692];delete this['actions'][_0x69a692];}};Fax[_0xfa94('0x21')][_0xfa94('0x1f')]=function(_0x3e5d2a){var _0x36470e=this;if(this[_0xfa94('0xe')][_0x3e5d2a[_0xfa94('0x26')]]){if(this[_0xfa94('0x11')][_0x3e5d2a[_0xfa94('0x26')]]){this[_0xfa94('0xe')][_0x3e5d2a[_0xfa94('0x26')]]['id']=this[_0xfa94('0x11')][_0x3e5d2a[_0xfa94('0x26')]]['id'];this[_0xfa94('0xe')][_0x3e5d2a[_0xfa94('0x26')]][_0xfa94('0x28')]=this[_0xfa94('0x11')][_0x3e5d2a[_0xfa94('0x26')]][_0xfa94('0x28')];}logger[_0xfa94('0x2a')](_0x3e5d2a[_0xfa94('0x26')],this[_0xfa94('0x11')][_0x3e5d2a['uniqueid']]?_0xfa94('0x4f'):'\x20hangup\x20faxRiceive\x20',JSON[_0xfa94('0x3f')](this[_0xfa94('0xe')][_0x3e5d2a[_0xfa94('0x26')]]));if(this[_0xfa94('0x11')][_0x3e5d2a[_0xfa94('0x26')]]){if(this['channels'][_0x3e5d2a[_0xfa94('0x26')]][_0xfa94('0x50')]>0x0&&this[_0xfa94('0xe')][_0x3e5d2a[_0xfa94('0x26')]]['faxstatus']==='SUCCESS'){this[_0xfa94('0x4d')](_0x3e5d2a['uniqueid'],!![]);}else{this['updateStatus'](_0x3e5d2a[_0xfa94('0x26')],![],this['channels'][_0x3e5d2a[_0xfa94('0x26')]][_0xfa94('0x51')]?'SENDING\x20FAILED:\x20'+this[_0xfa94('0xe')][_0x3e5d2a[_0xfa94('0x26')]][_0xfa94('0x51')]:_0xfa94('0x52'));}}}};Fax[_0xfa94('0x21')][_0xfa94('0x53')]=function(_0x19375a){var _0x52050f=this;return new BPromise(function(_0x5010a4,_0x3994b7){_0x52050f[_0xfa94('0x54')](_0x19375a,_0x52050f['faxAccounts'][_0x19375a[_0xfa94('0x55')]])[_0xfa94('0x3d')](function(_0x2df7c5){ut['logger'](_0xfa94('0x56'),_0x2df7c5);_0x5010a4(ut['message'](_0xfa94('0x57')));})[_0xfa94('0x40')](function(_0x17f9a3){ut[_0xfa94('0x49')](_0xfa94('0x58'),_0x17f9a3);updateStatus(_0x19375a);_0x3994b7(ut[_0xfa94('0x39')](_0xfa94('0x59')));});});};Fax[_0xfa94('0x21')][_0xfa94('0x5a')]=function(_0x4b589b){var _0x5ae47b=this;return new BPromise(function(_0x43b238,_0x27c094){var _0x533b5e=_0x5ae47b[_0xfa94('0x5b')](_0x5ae47b[_0xfa94('0xf')][_0x4b589b[_0xfa94('0x55')]][_0xfa94('0x5c')],_0x4b589b);if(_0x533b5e[_0xfa94('0x5d')]){_0x43b238(ut['message'](_0xfa94('0x5e')));}else{_0x27c094(ut[_0xfa94('0x39')](_0x533b5e[_0xfa94('0x39')]));}});};function originate(_0x1a79b0,_0x37e2cb,_0x5bc2e6){return new BPromise(function(_0x42cddc,_0x2a8908){if(_0x5bc2e6){var _0x53f4c1=util['format'](_0xfa94('0x5f'),path['parse'](_0x1a79b0['path'])[_0xfa94('0x28')],_0x1a79b0[_0xfa94('0x4')]);gs['execute'](_0x53f4c1)[_0xfa94('0x3d')](function(){_0x1a79b0[_0xfa94('0x4')]=util['format']('%s/%s.tif',path[_0xfa94('0x3b')](_0x1a79b0[_0xfa94('0x4')])[_0xfa94('0x60')],path[_0xfa94('0x3b')](_0x1a79b0['path'])[_0xfa94('0x28')]);_0x37e2cb[_0xfa94('0x61')]=_0x1a79b0[_0xfa94('0x4')];ut[_0xfa94('0x49')](_0xfa94('0x62'),'');ami[_0xfa94('0x63')](ut[_0xfa94('0x64')](_0x1a79b0,_0x37e2cb))[_0xfa94('0x3d')](function(_0xa05c91){_0x42cddc(_0xa05c91);})[_0xfa94('0x40')](function(_0x3f29bc){_0x2a8908(_0x3f29bc);});})[_0xfa94('0x40')](function(_0x467747){_0x2a8908(_0x467747);});}else{ami[_0xfa94('0x63')](ut[_0xfa94('0x64')](_0x1a79b0,_0x37e2cb))['then'](function(_0xa92245){_0x42cddc(_0xa92245);})[_0xfa94('0x40')](function(_0x489540){_0x2a8908(_0x489540);});}});}Fax[_0xfa94('0x21')][_0xfa94('0x54')]=function(_0x371459,_0x52e2c1){var _0x289ec8=this;return new BPromise(function(_0x423525,_0x436750){var _0xb25a26=uuid['v4']();var _0x3ad384=ut[_0xfa94('0x65')](_0x371459,_0x52e2c1);_0x289ec8[_0xfa94('0x11')][_0xb25a26]=new Action(_0xb25a26,_0x52e2c1,_0x371459);var _0x5a21d8=_0x289ec8[_0xfa94('0x11')][_0xb25a26];if(path[_0xfa94('0x3b')](_0x371459[_0xfa94('0x4')])[_0xfa94('0x66')]===_0xfa94('0x3c')){originate(_0x5a21d8,_0x3ad384,!![])[_0xfa94('0x3d')](function(_0x34999c){_0x423525(_0x34999c);})[_0xfa94('0x40')](function(_0x2624d5){_0x436750(_0x2624d5);});}else{originate(_0x5a21d8,_0x3ad384,![])['then'](function(_0x4bc441){_0x423525(_0x4bc441);})[_0xfa94('0x40')](function(_0x50907e){_0x436750(_0x50907e);});}});};Fax['prototype'][_0xfa94('0x67')]=function(_0x928e90){return!_[_0xfa94('0x68')](_0x928e90)&&!_[_0xfa94('0x68')](_0x928e90[_0xfa94('0x28')])&&!_[_0xfa94('0x68')](_0x928e90[_0xfa94('0x69')])&&_0x928e90[_0xfa94('0x69')]&&!_[_0xfa94('0x68')](this[_0xfa94('0x10')][util[_0xfa94('0x6a')](_0xfa94('0x6b'),_0x928e90[_0xfa94('0x28')])])&&!_['isNil'](this[_0xfa94('0x10')][util[_0xfa94('0x6a')](_0xfa94('0x6b'),_0x928e90[_0xfa94('0x28')])][_0xfa94('0x6c')])&&(this[_0xfa94('0x10')][util[_0xfa94('0x6a')](_0xfa94('0x6b'),_0x928e90[_0xfa94('0x28')])][_0xfa94('0x6c')]===_0xfa94('0x6d')||this[_0xfa94('0x10')][util[_0xfa94('0x6a')]('SIP/%s',_0x928e90[_0xfa94('0x28')])][_0xfa94('0x6c')]==='unmonitored');};Fax[_0xfa94('0x21')][_0xfa94('0x5b')]=function(_0x431304,_0x483788){if(!this['isTrunkReachable'](_0x431304)){ut[_0xfa94('0x49')]('[Fax][checkTrunk][Trunk\x20not\x20work]',_[_0xfa94('0x68')](_0x431304)?'':_0x431304[_0xfa94('0x28')]+_0xfa94('0x6e'));return{'isValid':![],'message':'Trunk\x20not\x20working'};}if(_[_0xfa94('0x68')](_0x483788[_0xfa94('0x7')])){ut[_0xfa94('0x49')](_0xfa94('0x6f'),JSON[_0xfa94('0x3f')](_0x483788));return{'isValid':![],'message':'Empty\x20Fax'};}if(_[_0xfa94('0x68')](_0x483788['path'])){ut[_0xfa94('0x49')](_0xfa94('0x70'),JSON[_0xfa94('0x3f')](_0x483788));return{'isValid':![],'message':_0xfa94('0x71')};}return{'isValid':!![],'message':_0xfa94('0x72')};};module[_0xfa94('0x73')]=Fax;
\ No newline at end of file
index 16c55a4..1e3c506 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2314=['notify','then','[Notify]\x20','../../../config/logger','preview','../rpc/faxAccount','error','inspect'];(function(_0x44ca6e,_0x5e2c91){var _0x2edab2=function(_0x3afa91){while(--_0x3afa91){_0x44ca6e['push'](_0x44ca6e['shift']());}};_0x2edab2(++_0x5e2c91);}(_0x2314,0x14b));var _0x4231=function(_0x1cb0b4,_0x1fd48d){_0x1cb0b4=_0x1cb0b4-0x0;var _0x525b60=_0x2314[_0x1cb0b4];return _0x525b60;};'use strict';var util=require('util');var BPromise=require('bluebird');var logger=require(_0x4231('0x0'))(_0x4231('0x1'));var _=require('lodash');var faxAccount=require(_0x4231('0x2'));function loggerCatch(_0x1be334){return function(_0x294096){logger[_0x4231('0x3')](_0x1be334,util[_0x4231('0x4')](_0x294096,{'showHidden':![],'depth':null}));};}exports[_0x4231('0x5')]=function(_0x5cb5e5,_0x13626e){return BPromise['resolve']()[_0x4231('0x6')](faxAccount['notify'](_0x5cb5e5,_0x13626e))['catch'](loggerCatch(_0x4231('0x7')));};
\ No newline at end of file
+var _0x34f2=['preview','../rpc/faxAccount','error','notify','then','[Notify]\x20','util','bluebird','../../../config/logger'];(function(_0x201e71,_0x29404b){var _0x4cf709=function(_0x2860da){while(--_0x2860da){_0x201e71['push'](_0x201e71['shift']());}};_0x4cf709(++_0x29404b);}(_0x34f2,0x138));var _0x234f=function(_0x55e06a,_0x54a122){_0x55e06a=_0x55e06a-0x0;var _0x1b4863=_0x34f2[_0x55e06a];return _0x1b4863;};'use strict';var util=require(_0x234f('0x0'));var BPromise=require(_0x234f('0x1'));var logger=require(_0x234f('0x2'))(_0x234f('0x3'));var _=require('lodash');var faxAccount=require(_0x234f('0x4'));function loggerCatch(_0x127a33){return function(_0x43e597){logger[_0x234f('0x5')](_0x127a33,util['inspect'](_0x43e597,{'showHidden':![],'depth':null}));};}exports[_0x234f('0x6')]=function(_0x196bc4,_0x26bcd2){return BPromise['resolve']()[_0x234f('0x7')](faxAccount[_0x234f('0x6')](_0x196bc4,_0x26bcd2))['catch'](loggerCatch(_0x234f('0x8')));};
\ No newline at end of file
index 1299403..8547565 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0919=['fax','bluebird','exec','execute','info','Exec\x20gs','../../../../config/logger'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x0919,0x11e));var _0x9091=function(_0x3128f7,_0x5ec08a){_0x3128f7=_0x3128f7-0x0;var _0x5ce976=_0x0919[_0x3128f7];return _0x5ce976;};'use strict';var util=require('util');var logger=require(_0x9091('0x0'))(_0x9091('0x1'));var BPromise=require(_0x9091('0x2'));var exec=require('child_process')[_0x9091('0x3')];exports[_0x9091('0x4')]=function(_0x519dea){return new BPromise(function(_0x557f51,_0x4cb890){exec(_0x519dea,function(_0x2ea227,_0x32cb19,_0x5e3643){logger[_0x9091('0x5')]('Exec\x20gs',_0x32cb19);if(_0x2ea227){logger['info'](_0x9091('0x6'),'\x20Error\x20:',util['inspect'](_0x2ea227,{'showHidden':![],'depth':null}),_0x32cb19,_0x5e3643);_0x4cb890(_0x2ea227);}_0x557f51(_0x32cb19);});});};
\ No newline at end of file
+var _0xf7a9=['\x20Error\x20:','util','../../../../config/logger','execute','info','Exec\x20gs'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xf7a9,0x151));var _0x9f7a=function(_0x2fcc6f,_0xb2ba92){_0x2fcc6f=_0x2fcc6f-0x0;var _0x4bc961=_0xf7a9[_0x2fcc6f];return _0x4bc961;};'use strict';var util=require(_0x9f7a('0x0'));var logger=require(_0x9f7a('0x1'))('fax');var BPromise=require('bluebird');var exec=require('child_process')['exec'];exports[_0x9f7a('0x2')]=function(_0x67b8d2){return new BPromise(function(_0x591452,_0x3fc967){exec(_0x67b8d2,function(_0x5193,_0x181517,_0x78e002){logger[_0x9f7a('0x3')]('Exec\x20gs',_0x181517);if(_0x5193){logger['info'](_0x9f7a('0x4'),_0x9f7a('0x5'),util['inspect'](_0x5193,{'showHidden':![],'depth':null}),_0x181517,_0x78e002);_0x3fc967(_0x5193);}_0x591452(_0x181517);});});};
\ No newline at end of file
index a20d0ee..18c4d0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x726e=['addVariables','ecm','minrate','maxrate','format','\x22%s\x22','modem','gateway','path','variablesAction','uniqueid','originate','channel','xcally-motion-fax','\x22%s\x22\x20<%s>','headerinfo','util','moment','../../../../config/logger','fax','message','info'];(function(_0x17406a,_0x1e2320){var _0x1501ff=function(_0x4b075a){while(--_0x4b075a){_0x17406a['push'](_0x17406a['shift']());}};_0x1501ff(++_0x1e2320);}(_0x726e,0x186));var _0xe726=function(_0x5512be,_0x29ae28){_0x5512be=_0x5512be-0x0;var _0x218dc3=_0x726e[_0x5512be];return _0x218dc3;};'use strict';var util=require(_0xe726('0x0'));var _=require('lodash');var moment=require(_0xe726('0x1'));var logger=require(_0xe726('0x2'))(_0xe726('0x3'));exports[_0xe726('0x4')]=function(_0x341728){return{'message':_0x341728};};exports['logger']=function(_0x5c7787,_0xac16e5){logger[_0xe726('0x5')](_0x5c7787,util['inspect'](_0xac16e5,{'showHidden':![],'depth':null}));};exports[_0xe726('0x6')]=function(_0x382794,_0x172abf){var _0x2c6640={'XMF-ECM':_0x172abf[_0xe726('0x7')],'XMF-HEADERINFO':_0x172abf['headerinfo'],'XMF-MINRATE':_0x172abf[_0xe726('0x8')],'XMF-MAXRATE':_0x172abf[_0xe726('0x9')],'XMF-MODEM':util[_0xe726('0xa')](_0xe726('0xb'),_0x172abf[_0xe726('0xc')]),'XMF-GATEWAY':_0x172abf[_0xe726('0xd')],'XMF-FAXDETECT':_0x172abf['faxdetect'],'XMF-T38TIMEOUT':_0x172abf['t38timeout'],'XMF-LOCALSTATIONID':_0x172abf['localstationid'],'XMF-PATH':_0x382794[_0xe726('0xe')]};return _0x2c6640;};exports[_0xe726('0xf')]=function(_0x40e9af,_0xaa6184){return{'actionid':_0x40e9af[_0xe726('0x10')],'action':_0xe726('0x11'),'channel':_0x40e9af[_0xe726('0x12')],'Exten':_0xe726('0x13'),'Context':'from-sip','Priority':'1','callerid':util[_0xe726('0xa')](_0xe726('0x14'),_0x40e9af[_0xe726('0x15')]?_0x40e9af[_0xe726('0x15')]:'',_0x40e9af['localstationid']),'variable':_0xaa6184,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x40e9af[_0xe726('0x10')]};};
\ No newline at end of file
+var _0x40b6=['originate','channel','xcally-motion-fax','from-sip','format','\x22%s\x22\x20<%s>','util','moment','fax','message','logger','info','ecm','headerinfo','minrate','maxrate','modem','gateway','faxdetect','t38timeout','localstationid','path','variablesAction','uniqueid'];(function(_0x500c02,_0x17afde){var _0x1a1efd=function(_0xa52f03){while(--_0xa52f03){_0x500c02['push'](_0x500c02['shift']());}};_0x1a1efd(++_0x17afde);}(_0x40b6,0x19e));var _0x640b=function(_0x305c31,_0x466b17){_0x305c31=_0x305c31-0x0;var _0x17f39f=_0x40b6[_0x305c31];return _0x17f39f;};'use strict';var util=require(_0x640b('0x0'));var _=require('lodash');var moment=require(_0x640b('0x1'));var logger=require('../../../../config/logger')(_0x640b('0x2'));exports[_0x640b('0x3')]=function(_0x3bbf94){return{'message':_0x3bbf94};};exports[_0x640b('0x4')]=function(_0x492282,_0x379be8){logger[_0x640b('0x5')](_0x492282,util['inspect'](_0x379be8,{'showHidden':![],'depth':null}));};exports['addVariables']=function(_0x157825,_0x2da542){var _0x995086={'XMF-ECM':_0x2da542[_0x640b('0x6')],'XMF-HEADERINFO':_0x2da542[_0x640b('0x7')],'XMF-MINRATE':_0x2da542[_0x640b('0x8')],'XMF-MAXRATE':_0x2da542[_0x640b('0x9')],'XMF-MODEM':util['format']('\x22%s\x22',_0x2da542[_0x640b('0xa')]),'XMF-GATEWAY':_0x2da542[_0x640b('0xb')],'XMF-FAXDETECT':_0x2da542[_0x640b('0xc')],'XMF-T38TIMEOUT':_0x2da542[_0x640b('0xd')],'XMF-LOCALSTATIONID':_0x2da542[_0x640b('0xe')],'XMF-PATH':_0x157825[_0x640b('0xf')]};return _0x995086;};exports[_0x640b('0x10')]=function(_0x53e659,_0x496571){return{'actionid':_0x53e659[_0x640b('0x11')],'action':_0x640b('0x12'),'channel':_0x53e659[_0x640b('0x13')],'Exten':_0x640b('0x14'),'Context':_0x640b('0x15'),'Priority':'1','callerid':util[_0x640b('0x16')](_0x640b('0x17'),_0x53e659[_0x640b('0x7')]?_0x53e659['headerinfo']:'',_0x53e659[_0x640b('0xe')]),'variable':_0x496571,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x53e659[_0x640b('0x11')]};};
\ No newline at end of file
index b1e9b75..0bca66b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0895=['initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','catch','error','[index.js][initParams]','inspect','listen','sync','./server','./realtime','./report','./acw','./trigger','./preview','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/campaign','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/dynamics365','ami','get','hour','resolve','then','getAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','getTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','initCampaigns','getVoiceExtensions','initVoiceExtensions','initFaxAccounts','initVoiceQueueReports','getVoiceQueueHopperHistory'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0x0895,0x119));var _0x5089=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0895[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require('bluebird');var util=require('util');var moment=require('moment');var server=require(_0x5089('0x0'));var Realtime=require(_0x5089('0x1'));var Report=require(_0x5089('0x2'));var Acw=require(_0x5089('0x3'));var Trigger=require(_0x5089('0x4'));var Dialer=require('./dialer');var Preview=require(_0x5089('0x5'));var Fax=require('./fax');var user=require(_0x5089('0x6'));var voiceQueue=require(_0x5089('0x7'));var voiceQueueReport=require(_0x5089('0x8'));var voiceCallReport=require(_0x5089('0x9'));var trunk=require(_0x5089('0xa'));var trigger=require(_0x5089('0xb'));var template=require(_0x5089('0xc'));var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0x5089('0xd'));var voiceExtension=require('./rpc/voiceExtension');var faxAccount=require('./rpc/faxAccount');var zendesk=require(_0x5089('0xe'));var salesforce=require(_0x5089('0xf'));var sugarcrm=require('./rpc/integrations/sugarcrm');var freshdesk=require(_0x5089('0x10'));var desk=require(_0x5089('0x11'));var zoho=require('./rpc/integrations/zoho');var vtiger=require('./rpc/integrations/vtiger');var freshsales=require('./rpc/integrations/freshsales');var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0x5089('0x12'));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('../../config/logger')(_0x5089('0x13'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x5089('0x14')]('hour')===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x5089('0x14')](_0x5089('0x15'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x5089('0x16')]()[_0x5089('0x17')](user[_0x5089('0x18')]())[_0x5089('0x17')](realtime['initAgents']())[_0x5089('0x17')](user[_0x5089('0x19')]())[_0x5089('0x17')](realtime[_0x5089('0x1a')]())[_0x5089('0x17')](trunk[_0x5089('0x1b')]())[_0x5089('0x17')](realtime[_0x5089('0x1c')]())[_0x5089('0x17')](voiceQueue[_0x5089('0x1d')]())[_0x5089('0x17')](realtime[_0x5089('0x1e')]())[_0x5089('0x17')](trigger[_0x5089('0x1f')]())[_0x5089('0x17')](realtime[_0x5089('0x20')]())[_0x5089('0x17')](template[_0x5089('0x21')]())[_0x5089('0x17')](realtime['initTemplates']())[_0x5089('0x17')](zendesk[_0x5089('0x22')]())[_0x5089('0x17')](realtime[_0x5089('0x23')]())[_0x5089('0x17')](salesforce[_0x5089('0x24')]())[_0x5089('0x17')](realtime[_0x5089('0x25')]())[_0x5089('0x17')](sugarcrm[_0x5089('0x26')]())['then'](realtime[_0x5089('0x27')]())['then'](freshdesk[_0x5089('0x28')]())['then'](realtime[_0x5089('0x29')]())[_0x5089('0x17')](desk[_0x5089('0x2a')]())[_0x5089('0x17')](realtime[_0x5089('0x2b')]())[_0x5089('0x17')](zoho['getZohoAccounts']())[_0x5089('0x17')](realtime[_0x5089('0x2c')]())[_0x5089('0x17')](vtiger[_0x5089('0x2d')]())[_0x5089('0x17')](realtime[_0x5089('0x2e')]())[_0x5089('0x17')](freshsales[_0x5089('0x2f')]())[_0x5089('0x17')](realtime[_0x5089('0x30')]())[_0x5089('0x17')](servicenow[_0x5089('0x31')]())[_0x5089('0x17')](realtime[_0x5089('0x32')]())['then'](dynamics365[_0x5089('0x33')]())['then'](realtime[_0x5089('0x34')]())[_0x5089('0x17')](campaign['getCampaigns']())['then'](realtime[_0x5089('0x35')]())['then'](voiceExtension[_0x5089('0x36')]())['then'](realtime[_0x5089('0x37')]())['then'](faxAccount['getFaxAccounts']())['then'](realtime[_0x5089('0x38')]())['then'](function(){return realtime;});}function initParams(){return BPromise[_0x5089('0x16')]()['then'](voiceQueueReport['getVoiceQueueReports']())[_0x5089('0x17')](realtime[_0x5089('0x39')]())[_0x5089('0x17')](cmHopperHistory[_0x5089('0x3a')]())[_0x5089('0x17')](realtime[_0x5089('0x3b')]())[_0x5089('0x17')](cmHopperHistory[_0x5089('0x3c')]())['then'](realtime[_0x5089('0x3d')]())[_0x5089('0x17')](voiceCallReport['getVoiceCallReports']())[_0x5089('0x17')](realtime['initVoiceCallReports']())[_0x5089('0x3e')](function(_0x33eb4b){logger[_0x5089('0x3f')](_0x5089('0x40'),util[_0x5089('0x41')](_0x33eb4b,{'showHidden':![],'depth':null}));});}function main(){return server[_0x5089('0x42')](realtime,preview,fax)[_0x5089('0x17')](function(_0x26b943){return initRealtime();})[_0x5089('0x17')](function(){return initParams();})[_0x5089('0x17')](function(){report[_0x5089('0x43')]();setInterval(initRealtime,0x1388);})['catch'](function(_0x51b6d9){logger[_0x5089('0x3f')]('[index.js][main]',util[_0x5089('0x41')](_0x51b6d9,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0x9586=['then','initAgents','getTelephones','initTelephones','getTrunks','initVoiceQueues','getTriggers','initTriggers','initTemplates','getZendeskAccounts','initZendeskAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','log','sync','bluebird','util','moment','./server','./realtime','./report','./trigger','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/zoho','./rpc/integrations/freshsales','./rpc/integrations/servicenow','get','hour','resolve','getAgents'];(function(_0x3d826e,_0x424f45){var _0x3971f6=function(_0x13c6b1){while(--_0x13c6b1){_0x3d826e['push'](_0x3d826e['shift']());}};_0x3971f6(++_0x424f45);}(_0x9586,0x137));var _0x6958=function(_0x215075,_0x5bd05f){_0x215075=_0x215075-0x0;var _0x5cba52=_0x9586[_0x215075];return _0x5cba52;};'use strict';var BPromise=require(_0x6958('0x0'));var util=require(_0x6958('0x1'));var moment=require(_0x6958('0x2'));var server=require(_0x6958('0x3'));var Realtime=require(_0x6958('0x4'));var Report=require(_0x6958('0x5'));var Acw=require('./acw');var Trigger=require(_0x6958('0x6'));var Dialer=require('./dialer');var Preview=require(_0x6958('0x7'));var Fax=require(_0x6958('0x8'));var user=require(_0x6958('0x9'));var voiceQueue=require(_0x6958('0xa'));var voiceQueueReport=require(_0x6958('0xb'));var voiceCallReport=require(_0x6958('0xc'));var trunk=require(_0x6958('0xd'));var trigger=require(_0x6958('0xe'));var template=require(_0x6958('0xf'));var cmHopperHistory=require(_0x6958('0x10'));var campaign=require(_0x6958('0x11'));var voiceExtension=require(_0x6958('0x12'));var faxAccount=require('./rpc/faxAccount');var zendesk=require('./rpc/integrations/zendesk');var salesforce=require(_0x6958('0x13'));var sugarcrm=require(_0x6958('0x14'));var freshdesk=require(_0x6958('0x15'));var desk=require('./rpc/integrations/desk');var zoho=require(_0x6958('0x16'));var vtiger=require('./rpc/integrations/vtiger');var freshsales=require(_0x6958('0x17'));var servicenow=require(_0x6958('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 isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x6958('0x19')](_0x6958('0x1a'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x6958('0x19')](_0x6958('0x1a'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x6958('0x1b')]()['then'](user[_0x6958('0x1c')]())[_0x6958('0x1d')](realtime[_0x6958('0x1e')]())[_0x6958('0x1d')](user[_0x6958('0x1f')]())['then'](realtime[_0x6958('0x20')]())[_0x6958('0x1d')](trunk[_0x6958('0x21')]())['then'](realtime['initTrunks']())['then'](voiceQueue['getVoiceQueues']())[_0x6958('0x1d')](realtime[_0x6958('0x22')]())[_0x6958('0x1d')](trigger[_0x6958('0x23')]())[_0x6958('0x1d')](realtime[_0x6958('0x24')]())[_0x6958('0x1d')](template['getTemplates']())['then'](realtime[_0x6958('0x25')]())['then'](zendesk[_0x6958('0x26')]())[_0x6958('0x1d')](realtime[_0x6958('0x27')]())[_0x6958('0x1d')](salesforce['getSalesforceAccounts']())['then'](realtime[_0x6958('0x28')]())[_0x6958('0x1d')](sugarcrm[_0x6958('0x29')]())[_0x6958('0x1d')](realtime[_0x6958('0x2a')]())['then'](freshdesk['getFreshdeskAccounts']())[_0x6958('0x1d')](realtime[_0x6958('0x2b')]())['then'](desk[_0x6958('0x2c')]())[_0x6958('0x1d')](realtime[_0x6958('0x2d')]())[_0x6958('0x1d')](zoho['getZohoAccounts']())[_0x6958('0x1d')](realtime['initZohoAccounts']())['then'](vtiger[_0x6958('0x2e')]())[_0x6958('0x1d')](realtime[_0x6958('0x2f')]())[_0x6958('0x1d')](freshsales[_0x6958('0x30')]())[_0x6958('0x1d')](realtime[_0x6958('0x31')]())[_0x6958('0x1d')](servicenow[_0x6958('0x32')]())[_0x6958('0x1d')](realtime['initServicenowAccounts']())[_0x6958('0x1d')](dynamics365[_0x6958('0x33')]())[_0x6958('0x1d')](realtime[_0x6958('0x34')]())[_0x6958('0x1d')](campaign[_0x6958('0x35')]())['then'](realtime[_0x6958('0x36')]())['then'](voiceExtension[_0x6958('0x37')]())[_0x6958('0x1d')](realtime[_0x6958('0x38')]())[_0x6958('0x1d')](faxAccount[_0x6958('0x39')]())[_0x6958('0x1d')](realtime[_0x6958('0x3a')]())[_0x6958('0x1d')](function(){return realtime;});}function initParams(){return BPromise[_0x6958('0x1b')]()[_0x6958('0x1d')](voiceQueueReport[_0x6958('0x3b')]())['then'](realtime['initVoiceQueueReports']())['then'](cmHopperHistory[_0x6958('0x3c')]())[_0x6958('0x1d')](realtime[_0x6958('0x3d')]())[_0x6958('0x1d')](cmHopperHistory['getCampaignHopperHistory']())['then'](realtime[_0x6958('0x3e')]())[_0x6958('0x1d')](voiceCallReport[_0x6958('0x3f')]())[_0x6958('0x1d')](realtime[_0x6958('0x40')]())['then'](function(_0x1d60b5){})[_0x6958('0x41')](function(_0x5ebc0b){console[_0x6958('0x42')](_0x5ebc0b);});}function main(){return server['listen'](realtime,preview,fax)[_0x6958('0x1d')](function(_0xb53dd1){return initRealtime();})[_0x6958('0x1d')](function(){return initParams();})[_0x6958('0x1d')](function(){report[_0x6958('0x43')]();setInterval(initRealtime,0x1388);})[_0x6958('0x41')](function(_0x11eaed){console[_0x6958('0x42')](_0x11eaed);});}main();
\ No newline at end of file
index 07a2660..1a133c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['phone','mobile','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','onhold','prototype','updateStatusRealtime','state','toLowerCase','idle','inuse','talking','statePause','toNumber','interface','format','user:%s','user:save','emit','user:presence','exports','util','moment','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','email','accountcode','fullname','unknown','status'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0xedd9,0xfc));var _0x9edd=function(_0x9f9ed5,_0x56f438){_0x9f9ed5=_0x9f9ed5-0x0;var _0xbc71e3=_0xedd9[_0x9f9ed5];return _0xbc71e3;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var moment=require(_0x9edd('0x1'));var md5=require(_0x9edd('0x2'));var Redis=require(_0x9edd('0x3'));var config=require(_0x9edd('0x4'));config[_0x9edd('0x5')]=_[_0x9edd('0x6')](config[_0x9edd('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x9edd('0x7'))(new Redis(config[_0x9edd('0x5')]));function Agent(_0x268f9e){this['id']=_0x268f9e['id']||0x0;this[_0x9edd('0x8')]=_0x268f9e['name']||'';this[_0x9edd('0x9')]=_0x268f9e['email']||'';this[_0x9edd('0xa')]=_0x268f9e[_0x9edd('0xa')]||'';this[_0x9edd('0xb')]=_0x268f9e[_0x9edd('0xb')]||'';this['state']=_0x9edd('0xc');this['stateTime']=0x0;this[_0x9edd('0xd')]=_0x9edd('0xc');this['address']='';this[_0x9edd('0xe')]='';this[_0x9edd('0xf')]='';this['interface']='';this[_0x9edd('0x10')]=_0x268f9e[_0x9edd('0x10')]||![];this[_0x9edd('0x11')]=_0x9edd('0xc');this[_0x9edd('0x12')]=0x0;this[_0x9edd('0x13')]='';this[_0x9edd('0x14')]='';this[_0x9edd('0x15')]=![];this['local']=![];this[_0x9edd('0x2')]='';}Agent[_0x9edd('0x16')][_0x9edd('0x17')]=function(_0x4d9a7){var _0x13b6b6;if(_0x4d9a7&&_0x4d9a7[_0x9edd('0x18')]){_0x13b6b6=_0x4d9a7[_0x9edd('0x18')][_0x9edd('0x19')]();switch(_0x13b6b6){case'not_inuse':_0x13b6b6=_0x9edd('0x1a');break;case _0x9edd('0x1b'):_0x13b6b6=_0x9edd('0x1c');break;}}if(_0x13b6b6&&this['voiceStatus']!==_0x13b6b6||_0x4d9a7[_0x9edd('0x1d')]){this[_0x9edd('0x12')]=_[_0x9edd('0x1e')](moment()['format']('x'));}if(_0x13b6b6){this[_0x9edd('0x11')]=_0x13b6b6;}var _0x5d879c={'id':this['id'],'name':this[_0x9edd('0x8')],'email':this[_0x9edd('0x9')],'accountcode':this['accountcode'],'fullname':this['fullname'],'state':this[_0x9edd('0x18')],'stateTime':this['stateTime'],'status':this[_0x9edd('0xd')],'address':this['address'],'online':this['online'],'voiceStatus':this[_0x9edd('0x11')],'voiceStatusTime':this[_0x9edd('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this[_0x9edd('0x1f')],'onhold':this[_0x9edd('0x15')]};var _0x477878=md5(JSON['stringify'](_0x5d879c));if(this[_0x9edd('0x2')]!==_0x477878){this[_0x9edd('0x2')]=_0x477878;io['to'](util[_0x9edd('0x20')](_0x9edd('0x21'),_0x5d879c[_0x9edd('0x8')]))['emit'](_0x9edd('0x22'),_0x5d879c);io[_0x9edd('0x23')](_0x9edd('0x24'),_0x5d879c);}};module[_0x9edd('0x25')]=Agent;
\ No newline at end of file
+var _0xcb91=['name','email','accountcode','fullname','unknown','stateTime','status','address','mobile','interface','online','voiceStatus','voiceStatusQueue','onhold','local','updateStatusRealtime','state','idle','inuse','talking','statePause','voiceStatusTime','toNumber','voiceStatusCallerIdNumber','stringify','format','emit','user:presence','exports','moment','md5','ioredis','../../../config/environment','defaults','redis','socket.io-emitter'];(function(_0x499b1e,_0xe7fbe3){var _0x4ab288=function(_0x112796){while(--_0x112796){_0x499b1e['push'](_0x499b1e['shift']());}};_0x4ab288(++_0xe7fbe3);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4d6ac0,_0x201628){_0x4d6ac0=_0x4d6ac0-0x0;var _0x5296c4=_0xcb91[_0x4d6ac0];return _0x5296c4;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var md5=require(_0x1cb9('0x1'));var Redis=require(_0x1cb9('0x2'));var config=require(_0x1cb9('0x3'));config['redis']=_[_0x1cb9('0x4')](config[_0x1cb9('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x1cb9('0x6'))(new Redis(config[_0x1cb9('0x5')]));function Agent(_0x53ffbd){this['id']=_0x53ffbd['id']||0x0;this[_0x1cb9('0x7')]=_0x53ffbd[_0x1cb9('0x7')]||'';this['email']=_0x53ffbd[_0x1cb9('0x8')]||'';this[_0x1cb9('0x9')]=_0x53ffbd['accountcode']||'';this[_0x1cb9('0xa')]=_0x53ffbd['fullname']||'';this['state']=_0x1cb9('0xb');this[_0x1cb9('0xc')]=0x0;this[_0x1cb9('0xd')]=_0x1cb9('0xb');this[_0x1cb9('0xe')]='';this['phone']='';this[_0x1cb9('0xf')]='';this[_0x1cb9('0x10')]='';this[_0x1cb9('0x11')]=_0x53ffbd[_0x1cb9('0x11')]||![];this[_0x1cb9('0x12')]='unknown';this['voiceStatusTime']=0x0;this['voiceStatusCallerIdNumber']='';this[_0x1cb9('0x13')]='';this[_0x1cb9('0x14')]=![];this[_0x1cb9('0x15')]=![];this[_0x1cb9('0x1')]='';}Agent['prototype'][_0x1cb9('0x16')]=function(_0x6ef389){var _0x1b3cd7;if(_0x6ef389&&_0x6ef389[_0x1cb9('0x17')]){_0x1b3cd7=_0x6ef389[_0x1cb9('0x17')]['toLowerCase']();switch(_0x1b3cd7){case'not_inuse':_0x1b3cd7=_0x1cb9('0x18');break;case _0x1cb9('0x19'):_0x1b3cd7=_0x1cb9('0x1a');break;}}if(_0x1b3cd7&&this[_0x1cb9('0x12')]!==_0x1b3cd7||_0x6ef389[_0x1cb9('0x1b')]){this[_0x1cb9('0x1c')]=_[_0x1cb9('0x1d')](moment()['format']('x'));}if(_0x1b3cd7){this['voiceStatus']=_0x1b3cd7;}var _0x1b2fa6={'id':this['id'],'name':this[_0x1cb9('0x7')],'email':this[_0x1cb9('0x8')],'accountcode':this[_0x1cb9('0x9')],'fullname':this[_0x1cb9('0xa')],'state':this[_0x1cb9('0x17')],'stateTime':this[_0x1cb9('0xc')],'status':this['status'],'address':this['address'],'online':this[_0x1cb9('0x11')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0x1cb9('0x1c')],'voiceStatusCallerIdNumber':this[_0x1cb9('0x1e')],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this['interface'],'onhold':this[_0x1cb9('0x14')]};var _0x325637=md5(JSON[_0x1cb9('0x1f')](_0x1b2fa6));if(this[_0x1cb9('0x1')]!==_0x325637){this[_0x1cb9('0x1')]=_0x325637;io['to'](util[_0x1cb9('0x20')]('user:%s',_0x1b2fa6['name']))[_0x1cb9('0x21')]('user:save',_0x1b2fa6);io[_0x1cb9('0x21')](_0x1cb9('0x22'),_0x1b2fa6);}};module[_0x1cb9('0x23')]=Agent;
\ No newline at end of file
index 17c6e80..18e9324 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67e4=['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','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','name','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x67e4,0x1d4));var _0x467e=function(_0x19d350,_0x3c843f){_0x19d350=_0x19d350-0x0;var _0x3bfc8d=_0x67e4[_0x19d350];return _0x3bfc8d;};'use strict';function Campaign(_0x214893){this['id']=_0x214893['id']||0x0;this['name']=_0x214893['name']||'';this[_0x467e('0x0')]=_0x214893[_0x467e('0x0')]||_0x467e('0x1');this[_0x467e('0x2')]=0x0;this[_0x467e('0x3')]=0x0;this[_0x467e('0x4')]=0x0;this[_0x467e('0x5')]=0x0;this[_0x467e('0x6')]='';this[_0x467e('0x7')]=!![];this[_0x467e('0x8')]=_0x214893['active'];this['limitCalls']=_0x214893[_0x467e('0x9')];this[_0x467e('0xa')]=_0x214893['dialTimezone']||null;this[_0x467e('0xb')]=_0x214893['dialGlobalInterval']?_0x214893[_0x467e('0xb')]:null;this[_0x467e('0xc')]=_0x214893[_0x467e('0xc')];this[_0x467e('0xd')]=_0x214893['dialOriginateCallerIdNumber'];this[_0x467e('0xe')]=_0x214893['dialOriginateTimeout']||0x1e;this[_0x467e('0xf')]=_0x214893[_0x467e('0xf')];this[_0x467e('0x10')]=_0x214893['dialCongestionRetryFrequency'];this['dialBusyMaxRetry']=_0x214893[_0x467e('0x11')];this[_0x467e('0x12')]=_0x214893[_0x467e('0x12')];this['dialNoAnswerMaxRetry']=_0x214893[_0x467e('0x13')];this['dialNoAnswerRetryFrequency']=_0x214893[_0x467e('0x14')];this[_0x467e('0x15')]=_0x214893[_0x467e('0x15')];this[_0x467e('0x16')]=_0x214893[_0x467e('0x16')]||0x3;this[_0x467e('0x17')]=_0x214893['dialNoSuchNumberRetryFrequency']||0x96;this[_0x467e('0x18')]=_0x214893['dialDropMaxRetry']||0x3;this['dialDropRetryFrequency']=_0x214893[_0x467e('0x19')]||0x96;this[_0x467e('0x1a')]=_0x214893[_0x467e('0x1a')]||0x3;this[_0x467e('0x1b')]=_0x214893['dialAbandonedRetryFrequency']||0x96;this['dialMachineMaxRetry']=_0x214893['dialMachineMaxRetry']||0x3;this['dialMachineRetryFrequency']=_0x214893[_0x467e('0x1c')]||0x96;this[_0x467e('0x1d')]=_0x214893[_0x467e('0x1d')]||0x3;this[_0x467e('0x1e')]=_0x214893[_0x467e('0x1e')]||0x96;this[_0x467e('0x1f')]=_0x214893['dialOrderByScheduledAt']||_0x467e('0x20');this['dialPrefix']=_0x214893[_0x467e('0x21')]||undefined;this[_0x467e('0x22')]=_0x214893[_0x467e('0x22')]||undefined;this[_0x467e('0x23')]=_0x214893[_0x467e('0x23')]||undefined;this[_0x467e('0x24')]=_0x214893[_0x467e('0x24')]?_0x214893[_0x467e('0x24')]:undefined;this[_0x467e('0x25')]=_0x214893[_0x467e('0x25')]?_0x214893[_0x467e('0x25')]:undefined;this[_0x467e('0x26')]=_0x214893[_0x467e('0x26')]?_0x214893[_0x467e('0x26')]:undefined;this[_0x467e('0x27')]=_0x214893['SquareProject']?_0x214893[_0x467e('0x27')]:undefined;this[_0x467e('0x28')]=_0x214893[_0x467e('0x27')]?_0x214893[_0x467e('0x27')][_0x467e('0x29')]:undefined;this[_0x467e('0x2a')]=_0x214893[_0x467e('0x2a')]||![];this[_0x467e('0x2b')]=_0x214893[_0x467e('0x2b')];this['dialAMDGreeting']=_0x214893[_0x467e('0x2c')];this[_0x467e('0x2d')]=_0x214893[_0x467e('0x2d')];this[_0x467e('0x2e')]=_0x214893[_0x467e('0x2e')];this['dialAMDMinWordLength']=_0x214893[_0x467e('0x2f')];this['dialAMDBetweenWordsSilence']=_0x214893[_0x467e('0x30')];this[_0x467e('0x31')]=_0x214893['dialAMDMaximumNumberOfWords'];this[_0x467e('0x32')]=_0x214893[_0x467e('0x32')];this[_0x467e('0x33')]=_0x214893[_0x467e('0x33')];}module['exports']=Campaign;
\ No newline at end of file
+var _0xfe17=['Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','originated','ivrAnswerCallsDay','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialCutDigit','TrunkBackup'];(function(_0x4a30f1,_0x2e75a8){var _0x1e0a09=function(_0xfc5f54){while(--_0xfc5f54){_0x4a30f1['push'](_0x4a30f1['shift']());}};_0x1e0a09(++_0x2e75a8);}(_0xfe17,0x104));var _0x7fe1=function(_0x249adc,_0x4c4317){_0x249adc=_0x249adc-0x0;var _0x6971c4=_0xfe17[_0x249adc];return _0x6971c4;};'use strict';function Campaign(_0x5bd9a4){this['id']=_0x5bd9a4['id']||0x0;this[_0x7fe1('0x0')]=_0x5bd9a4[_0x7fe1('0x0')]||'';this[_0x7fe1('0x1')]=_0x5bd9a4[_0x7fe1('0x1')]||'campaign';this[_0x7fe1('0x2')]=0x0;this['temp']=0x0;this[_0x7fe1('0x3')]=0x0;this['ivrTotalCallsDays']=0x0;this[_0x7fe1('0x4')]='';this[_0x7fe1('0x5')]=!![];this[_0x7fe1('0x6')]=_0x5bd9a4[_0x7fe1('0x6')];this[_0x7fe1('0x7')]=_0x5bd9a4[_0x7fe1('0x7')];this['dialTimezone']=_0x5bd9a4[_0x7fe1('0x8')]||null;this[_0x7fe1('0x9')]=_0x5bd9a4[_0x7fe1('0x9')]?_0x5bd9a4[_0x7fe1('0x9')]:null;this['dialOriginateCallerIdName']=_0x5bd9a4[_0x7fe1('0xa')];this[_0x7fe1('0xb')]=_0x5bd9a4[_0x7fe1('0xb')];this[_0x7fe1('0xc')]=_0x5bd9a4[_0x7fe1('0xc')]||0x1e;this[_0x7fe1('0xd')]=_0x5bd9a4[_0x7fe1('0xd')];this[_0x7fe1('0xe')]=_0x5bd9a4[_0x7fe1('0xe')];this[_0x7fe1('0xf')]=_0x5bd9a4[_0x7fe1('0xf')];this['dialBusyRetryFrequency']=_0x5bd9a4[_0x7fe1('0x10')];this['dialNoAnswerMaxRetry']=_0x5bd9a4[_0x7fe1('0x11')];this[_0x7fe1('0x12')]=_0x5bd9a4[_0x7fe1('0x12')];this['dialGlobalMaxRetry']=_0x5bd9a4['dialGlobalMaxRetry'];this['dialNoSuchNumberMaxRetry']=_0x5bd9a4[_0x7fe1('0x13')]||0x3;this[_0x7fe1('0x14')]=_0x5bd9a4[_0x7fe1('0x14')]||0x96;this[_0x7fe1('0x15')]=_0x5bd9a4[_0x7fe1('0x15')]||0x3;this['dialDropRetryFrequency']=_0x5bd9a4[_0x7fe1('0x16')]||0x96;this[_0x7fe1('0x17')]=_0x5bd9a4['dialAbandonedMaxRetry']||0x3;this[_0x7fe1('0x18')]=_0x5bd9a4[_0x7fe1('0x18')]||0x96;this[_0x7fe1('0x19')]=_0x5bd9a4[_0x7fe1('0x19')]||0x3;this[_0x7fe1('0x1a')]=_0x5bd9a4[_0x7fe1('0x1a')]||0x96;this['dialAgentRejectMaxRetry']=_0x5bd9a4[_0x7fe1('0x1b')]||0x3;this[_0x7fe1('0x1c')]=_0x5bd9a4[_0x7fe1('0x1c')]||0x96;this[_0x7fe1('0x1d')]=_0x5bd9a4['dialOrderByScheduledAt']||_0x7fe1('0x1e');this[_0x7fe1('0x1f')]=_0x5bd9a4[_0x7fe1('0x1f')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x5bd9a4['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x7fe1('0x20')]=_0x5bd9a4[_0x7fe1('0x20')]||undefined;this[_0x7fe1('0x21')]=_0x5bd9a4[_0x7fe1('0x21')]?_0x5bd9a4['TrunkBackup']:undefined;this['Trunk']=_0x5bd9a4[_0x7fe1('0x22')]?_0x5bd9a4[_0x7fe1('0x22')]:undefined;this[_0x7fe1('0x23')]=_0x5bd9a4['Interval']?_0x5bd9a4['Interval']:undefined;this[_0x7fe1('0x24')]=_0x5bd9a4[_0x7fe1('0x24')]?_0x5bd9a4[_0x7fe1('0x24')]:undefined;this[_0x7fe1('0x25')]=_0x5bd9a4['SquareProject']?_0x5bd9a4['SquareProject'][_0x7fe1('0x0')]:undefined;this[_0x7fe1('0x26')]=_0x5bd9a4[_0x7fe1('0x26')]||![];this[_0x7fe1('0x27')]=_0x5bd9a4[_0x7fe1('0x27')];this['dialAMDGreeting']=_0x5bd9a4[_0x7fe1('0x28')];this[_0x7fe1('0x29')]=_0x5bd9a4[_0x7fe1('0x29')];this[_0x7fe1('0x2a')]=_0x5bd9a4[_0x7fe1('0x2a')];this[_0x7fe1('0x2b')]=_0x5bd9a4[_0x7fe1('0x2b')];this[_0x7fe1('0x2c')]=_0x5bd9a4[_0x7fe1('0x2c')];this['dialAMDMaximumNumberOfWords']=_0x5bd9a4[_0x7fe1('0x2d')];this[_0x7fe1('0x2e')]=_0x5bd9a4[_0x7fe1('0x2e')];this[_0x7fe1('0x2f')]=_0x5bd9a4[_0x7fe1('0x2f')];}module[_0x7fe1('0x30')]=Campaign;
\ No newline at end of file
index a03f033..3fafd01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb396=['tag','queue','transferType','mohtime','starttime','channel','destinationchannel','calleridnum','connectedlinenum','connectedlinename','accountcode','context','uniqueid','linkedid','answered','endtime','lastapplication','lastdata','duration','billableseconds','holdtime','type'];(function(_0x2fc012,_0x503e5b){var _0x2891f9=function(_0x295f5e){while(--_0x295f5e){_0x2fc012['push'](_0x2fc012['shift']());}};_0x2891f9(++_0x503e5b);}(_0xb396,0x1e8));var _0x6b39=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xb396[_0xa464c9];return _0x3d73c4;};'use strict';function Channel(){this[_0x6b39('0x0')]=null;this[_0x6b39('0x1')]='';this[_0x6b39('0x2')]='';this[_0x6b39('0x3')]=0x0;this['calleridname']='';this[_0x6b39('0x4')]=undefined;this[_0x6b39('0x5')]=undefined;this[_0x6b39('0x6')]=0x0;this[_0x6b39('0x7')]='';this[_0x6b39('0x8')]=0x0;this[_0x6b39('0x9')]=0x0;this['exten']=0x0;this[_0x6b39('0xa')]=![];this['answertime']=null;this[_0x6b39('0xb')]=null;this['unmanaged']=![];this['abandoned']=![];this[_0x6b39('0xc')]='';this[_0x6b39('0xd')]='';this[_0x6b39('0xe')]=0x0;this[_0x6b39('0xf')]=0x0;this[_0x6b39('0x10')]=0x0;this[_0x6b39('0x11')]=null;this[_0x6b39('0x12')]=null;this['disposition']=null;this['monitor']=![];this['monitorFilename']=null;this[_0x6b39('0x13')]=null;this['monitors']=[];this['transfercalleridnum']=undefined;this['transferconnectedlinenum']=undefined;this[_0x6b39('0x14')]=undefined;this[_0x6b39('0x15')]=0x0;}module['exports']=Channel;
\ No newline at end of file
+var _0xe367=['mohtime','starttime','channel','destinationchannel','connectedlinenum','connectedlinename','context','uniqueid','linkedid','answered','answertime','endtime','unmanaged','abandoned','lastapplication','lastdata','duration','billableseconds','holdtime','type','tag','disposition','monitor','queue','monitors','transfercalleridnum','transferconnectedlinenum'];(function(_0x2bf1d6,_0x410efd){var _0x1be08a=function(_0x39c3a2){while(--_0x39c3a2){_0x2bf1d6['push'](_0x2bf1d6['shift']());}};_0x1be08a(++_0x410efd);}(_0xe367,0x10f));var _0x7e36=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xe367[_0x46698a];return _0x356db0;};'use strict';function Channel(){this[_0x7e36('0x0')]=null;this[_0x7e36('0x1')]='';this[_0x7e36('0x2')]='';this['calleridnum']=0x0;this['calleridname']='';this[_0x7e36('0x3')]=undefined;this[_0x7e36('0x4')]=undefined;this['accountcode']=0x0;this[_0x7e36('0x5')]='';this[_0x7e36('0x6')]=0x0;this[_0x7e36('0x7')]=0x0;this['exten']=0x0;this[_0x7e36('0x8')]=![];this[_0x7e36('0x9')]=null;this[_0x7e36('0xa')]=null;this[_0x7e36('0xb')]=![];this[_0x7e36('0xc')]=![];this[_0x7e36('0xd')]='';this[_0x7e36('0xe')]='';this[_0x7e36('0xf')]=0x0;this[_0x7e36('0x10')]=0x0;this[_0x7e36('0x11')]=0x0;this[_0x7e36('0x12')]=null;this[_0x7e36('0x13')]=null;this[_0x7e36('0x14')]=null;this[_0x7e36('0x15')]=![];this['monitorFilename']=null;this[_0x7e36('0x16')]=null;this[_0x7e36('0x17')]=[];this[_0x7e36('0x18')]=undefined;this[_0x7e36('0x19')]=undefined;this['transferType']=undefined;this[_0x7e36('0x1a')]=0x0;}module['exports']=Channel;
\ No newline at end of file
index 11cfdc6..e8a9601 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e00=['consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','exports','name','username','remoteUri','authType','password'];(function(_0x39765d,_0x2ea9a0){var _0x3d9c7f=function(_0x1f9190){while(--_0x1f9190){_0x39765d['push'](_0x39765d['shift']());}};_0x3d9c7f(++_0x2ea9a0);}(_0x4e00,0xa4));var _0x04e0=function(_0xbcad1e,_0x268a96){_0xbcad1e=_0xbcad1e-0x0;var _0x3ccf3d=_0x4e00[_0xbcad1e];return _0x3ccf3d;};'use strict';function DeskAccount(_0x2003ed){this['id']=_0x2003ed['id']||0x0;this[_0x04e0('0x0')]=_0x2003ed['name']||'';this[_0x04e0('0x1')]=_0x2003ed[_0x04e0('0x1')]||'';this[_0x04e0('0x2')]=_0x2003ed[_0x04e0('0x2')]||'';this[_0x04e0('0x3')]=_0x2003ed['authType']||'';this[_0x04e0('0x4')]=_0x2003ed[_0x04e0('0x4')]||'';this[_0x04e0('0x5')]=_0x2003ed['consumerKey']||'';this[_0x04e0('0x6')]=_0x2003ed[_0x04e0('0x6')]||'';this['token']=_0x2003ed[_0x04e0('0x7')]||'';this[_0x04e0('0x8')]=_0x2003ed[_0x04e0('0x8')]||'';this['type']=_0x2003ed[_0x04e0('0x9')]||'';this[_0x04e0('0xa')]=_0x2003ed[_0x04e0('0xa')]||'';this[_0x04e0('0xb')]=_0x2003ed[_0x04e0('0xb')]||{};}module[_0x04e0('0xc')]=DeskAccount;
\ No newline at end of file
+var _0x3560=['name','remoteUri','authType','password','consumerKey','consumerSecret','tokenSecret','type','serverUrl','Configurations','exports'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x3560,0x16b));var _0x0356=function(_0x35181c,_0x82694a){_0x35181c=_0x35181c-0x0;var _0xe14bf9=_0x3560[_0x35181c];return _0xe14bf9;};'use strict';function DeskAccount(_0x26a0e8){this['id']=_0x26a0e8['id']||0x0;this[_0x0356('0x0')]=_0x26a0e8['name']||'';this['username']=_0x26a0e8['username']||'';this[_0x0356('0x1')]=_0x26a0e8[_0x0356('0x1')]||'';this[_0x0356('0x2')]=_0x26a0e8[_0x0356('0x2')]||'';this[_0x0356('0x3')]=_0x26a0e8[_0x0356('0x3')]||'';this[_0x0356('0x4')]=_0x26a0e8[_0x0356('0x4')]||'';this[_0x0356('0x5')]=_0x26a0e8[_0x0356('0x5')]||'';this['token']=_0x26a0e8['token']||'';this[_0x0356('0x6')]=_0x26a0e8[_0x0356('0x6')]||'';this[_0x0356('0x7')]=_0x26a0e8['type']||'';this['serverUrl']=_0x26a0e8[_0x0356('0x8')]||'';this[_0x0356('0x9')]=_0x26a0e8['Configurations']||{};}module[_0x0356('0xa')]=DeskAccount;
\ No newline at end of file
index 2c02b0b..1531e13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa571=['Configurations','exports','name','username','password','tenantId','clientId','clientSecret','serverUrl'];(function(_0x333ebb,_0x36693a){var _0x1d8f86=function(_0x31b6f5){while(--_0x31b6f5){_0x333ebb['push'](_0x333ebb['shift']());}};_0x1d8f86(++_0x36693a);}(_0xa571,0x107));var _0x1a57=function(_0x3daf63,_0x25528a){_0x3daf63=_0x3daf63-0x0;var _0x558174=_0xa571[_0x3daf63];return _0x558174;};'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
+var _0xa74f=['name','password','remoteUri','tenantId','clientSecret','serverUrl','Configurations'];(function(_0x119280,_0x439c3e){var _0x481797=function(_0x4265cb){while(--_0x4265cb){_0x119280['push'](_0x119280['shift']());}};_0x481797(++_0x439c3e);}(_0xa74f,0x9a));var _0xfa74=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0xa74f[_0x5a3cf0];return _0x5a64ee;};'use strict';function Dynamics365Account(_0x4607a1){this['id']=_0x4607a1['id']||0x0;this['name']=_0x4607a1[_0xfa74('0x0')]||'';this['username']=_0x4607a1['username']||'';this[_0xfa74('0x1')]=_0x4607a1[_0xfa74('0x1')]||'';this[_0xfa74('0x2')]=_0x4607a1[_0xfa74('0x2')]||'';this['tenantId']=_0x4607a1[_0xfa74('0x3')]||'';this['clientId']=_0x4607a1['clientId']||'';this[_0xfa74('0x4')]=_0x4607a1[_0xfa74('0x4')]||{};this[_0xfa74('0x5')]=_0x4607a1[_0xfa74('0x5')]||'';this[_0xfa74('0x6')]=_0x4607a1[_0xfa74('0x6')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
index da0c1a6..bb58a49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf54e=['modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate'];(function(_0x114964,_0x45378a){var _0x4beee1=function(_0x12a257){while(--_0x12a257){_0x114964['push'](_0x114964['shift']());}};_0x4beee1(++_0x45378a);}(_0xf54e,0xf5));var _0xef54=function(_0x28fbe3,_0x4ac6f8){_0x28fbe3=_0x28fbe3-0x0;var _0x45db6a=_0xf54e[_0x28fbe3];return _0x45db6a;};'use strict';function FaxAccount(_0x5a2f02){this['id']=_0x5a2f02['id']||0x0;this[_0xef54('0x0')]=_0x5a2f02[_0xef54('0x0')]||'';this[_0xef54('0x1')]=_0x5a2f02['description'];this[_0xef54('0x2')]=_0x5a2f02[_0xef54('0x2')];this['headerinfo']=_0x5a2f02[_0xef54('0x3')];this[_0xef54('0x4')]=_0x5a2f02[_0xef54('0x4')];this[_0xef54('0x5')]=_0x5a2f02[_0xef54('0x5')]||0x960;this[_0xef54('0x6')]=_0x5a2f02[_0xef54('0x6')]||0x3840;this[_0xef54('0x7')]=_0x5a2f02[_0xef54('0x7')]||_0xef54('0x8');this[_0xef54('0x9')]=_0x5a2f02[_0xef54('0x9')]||'no';this[_0xef54('0xa')]=_0x5a2f02[_0xef54('0xa')]||'no';this[_0xef54('0xb')]=_0x5a2f02[_0xef54('0xb')]||0x1388;this[_0xef54('0xc')]=_0x5a2f02[_0xef54('0xc')]||_0xef54('0xd');this[_0xef54('0xe')]=_0x5a2f02[_0xef54('0xe')]?_0x5a2f02[_0xef54('0xe')]:undefined;this[_0xef54('0xf')]=_0x5a2f02[_0xef54('0xf')];this[_0xef54('0x10')]=_0x5a2f02[_0xef54('0x10')];}module[_0xef54('0x11')]=FaxAccount;
\ No newline at end of file
+var _0xbda7=['headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','SIP','Trunk','ListId','key','exports','name','description','ecm'];(function(_0x20510f,_0x5f1d61){var _0x421a5c=function(_0x5d088f){while(--_0x5d088f){_0x20510f['push'](_0x20510f['shift']());}};_0x421a5c(++_0x5f1d61);}(_0xbda7,0x1a6));var _0x7bda=function(_0x584c57,_0x5d5e1c){_0x584c57=_0x584c57-0x0;var _0x3083dc=_0xbda7[_0x584c57];return _0x3083dc;};'use strict';function FaxAccount(_0x556ffc){this['id']=_0x556ffc['id']||0x0;this[_0x7bda('0x0')]=_0x556ffc[_0x7bda('0x0')]||'';this['description']=_0x556ffc[_0x7bda('0x1')];this[_0x7bda('0x2')]=_0x556ffc[_0x7bda('0x2')];this[_0x7bda('0x3')]=_0x556ffc[_0x7bda('0x3')];this[_0x7bda('0x4')]=_0x556ffc[_0x7bda('0x4')];this[_0x7bda('0x5')]=_0x556ffc[_0x7bda('0x5')]||0x960;this[_0x7bda('0x6')]=_0x556ffc[_0x7bda('0x6')]||0x3840;this[_0x7bda('0x7')]=_0x556ffc[_0x7bda('0x7')]||_0x7bda('0x8');this[_0x7bda('0x9')]=_0x556ffc['gateway']||'no';this[_0x7bda('0xa')]=_0x556ffc[_0x7bda('0xa')]||'no';this[_0x7bda('0xb')]=_0x556ffc['t38timeout']||0x1388;this['tech']=_0x556ffc['tech']||_0x7bda('0xc');this[_0x7bda('0xd')]=_0x556ffc[_0x7bda('0xd')]?_0x556ffc[_0x7bda('0xd')]:undefined;this[_0x7bda('0xe')]=_0x556ffc[_0x7bda('0xe')];this[_0x7bda('0xf')]=_0x556ffc['key'];}module[_0x7bda('0x10')]=FaxAccount;
\ No newline at end of file
index bb2abd4..d404c18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebee=['serverUrl','Configurations','exports','name','username','apiKey','token','remoteUri'];(function(_0x1005ba,_0x16a6c1){var _0x2dd247=function(_0x5efc72){while(--_0x5efc72){_0x1005ba['push'](_0x1005ba['shift']());}};_0x2dd247(++_0x16a6c1);}(_0xebee,0x12b));var _0xeebe=function(_0x344b71,_0x97dea2){_0x344b71=_0x344b71-0x0;var _0x1123d4=_0xebee[_0x344b71];return _0x1123d4;};'use strict';function FreshdeskAccount(_0x5a30ed){this['id']=_0x5a30ed['id']||0x0;this['name']=_0x5a30ed[_0xeebe('0x0')]||'';this[_0xeebe('0x1')]=_0x5a30ed[_0xeebe('0x1')]||'';this[_0xeebe('0x2')]=_0x5a30ed[_0xeebe('0x3')]||'';this[_0xeebe('0x4')]=_0x5a30ed[_0xeebe('0x4')]||'';this[_0xeebe('0x5')]=_0x5a30ed[_0xeebe('0x5')]||'';this[_0xeebe('0x6')]=_0x5a30ed[_0xeebe('0x6')]||{};}module[_0xeebe('0x7')]=FreshdeskAccount;
\ No newline at end of file
+var _0xc46c=['name','username','serverUrl','Configurations','exports'];(function(_0x54368a,_0x251b63){var _0x3a9bb3=function(_0x133e40){while(--_0x133e40){_0x54368a['push'](_0x54368a['shift']());}};_0x3a9bb3(++_0x251b63);}(_0xc46c,0x140));var _0xcc46=function(_0x3cba93,_0x5c2fd8){_0x3cba93=_0x3cba93-0x0;var _0x4a2991=_0xc46c[_0x3cba93];return _0x4a2991;};'use strict';function FreshdeskAccount(_0x446c66){this['id']=_0x446c66['id']||0x0;this[_0xcc46('0x0')]=_0x446c66[_0xcc46('0x0')]||'';this[_0xcc46('0x1')]=_0x446c66[_0xcc46('0x1')]||'';this['apiKey']=_0x446c66['token']||'';this['remoteUri']=_0x446c66['remoteUri']||'';this[_0xcc46('0x2')]=_0x446c66[_0xcc46('0x2')]||'';this[_0xcc46('0x3')]=_0x446c66['Configurations']||{};}module[_0xcc46('0x4')]=FreshdeskAccount;
\ No newline at end of file
index be5653e..8cd779a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x933c=['remoteUri','serverUrl','Configurations','name','username'];(function(_0x390556,_0x5b64bd){var _0x11868e=function(_0x51bf69){while(--_0x51bf69){_0x390556['push'](_0x390556['shift']());}};_0x11868e(++_0x5b64bd);}(_0x933c,0x99));var _0xc933=function(_0x1981ca,_0x2650f9){_0x1981ca=_0x1981ca-0x0;var _0x8f5b6e=_0x933c[_0x1981ca];return _0x8f5b6e;};'use strict';function FreshsalesAccount(_0x4239b0){this['id']=_0x4239b0['id']||0x0;this[_0xc933('0x0')]=_0x4239b0[_0xc933('0x0')]||'';this[_0xc933('0x1')]=_0x4239b0[_0xc933('0x1')]||'';this['apiKey']=_0x4239b0['token']||'';this[_0xc933('0x2')]=_0x4239b0[_0xc933('0x2')]||'';this[_0xc933('0x3')]=_0x4239b0[_0xc933('0x3')]||'';this[_0xc933('0x4')]=_0x4239b0[_0xc933('0x4')]||{};}module['exports']=FreshsalesAccount;
\ No newline at end of file
+var _0x82f5=['exports','name','username','remoteUri','serverUrl','Configurations'];(function(_0x111557,_0x4671f4){var _0xc99165=function(_0x24fbac){while(--_0x24fbac){_0x111557['push'](_0x111557['shift']());}};_0xc99165(++_0x4671f4);}(_0x82f5,0x15d));var _0x582f=function(_0x494ba4,_0x489c85){_0x494ba4=_0x494ba4-0x0;var _0x3bc3be=_0x82f5[_0x494ba4];return _0x3bc3be;};'use strict';function FreshsalesAccount(_0x3da79e){this['id']=_0x3da79e['id']||0x0;this[_0x582f('0x0')]=_0x3da79e[_0x582f('0x0')]||'';this[_0x582f('0x1')]=_0x3da79e[_0x582f('0x1')]||'';this['apiKey']=_0x3da79e['token']||'';this[_0x582f('0x2')]=_0x3da79e[_0x582f('0x2')]||'';this[_0x582f('0x3')]=_0x3da79e[_0x582f('0x3')]||'';this[_0x582f('0x4')]=_0x3da79e[_0x582f('0x4')]||{};}module[_0x582f('0x5')]=FreshsalesAccount;
\ No newline at end of file
index 4aa4ef4..b5e6250 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6736=['motionChannel','voice','mohtime','variables','inbound','uniqueid','calleridnum','calleridname','queuecallerjoinAt','queuecallerleaveAt','position','queuecallerabandon','queuecallerabandonAt','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum','connectedlinename','accountcode','context','exten','priority','assigned','lastAssignedTo'];(function(_0x5759c0,_0x2c12bf){var _0x579449=function(_0xa60512){while(--_0xa60512){_0x5759c0['push'](_0x5759c0['shift']());}};_0x579449(++_0x2c12bf);}(_0x6736,0x13c));var _0x6673=function(_0x2a8738,_0x42e50e){_0x2a8738=_0x2a8738-0x0;var _0x4f6388=_0x6736[_0x2a8738];return _0x4f6388;};'use strict';function QueueReport(){this['type']=_0x6673('0x0');this[_0x6673('0x1')]='';this[_0x6673('0x2')]='';this[_0x6673('0x3')]='';this['queue']='';this[_0x6673('0x4')]=null;this[_0x6673('0x5')]=null;this[_0x6673('0x6')]=0x1;this['count']=0x1;this[_0x6673('0x7')]=![];this[_0x6673('0x8')]=null;this['queuecallercomplete']=![];this[_0x6673('0x9')]=null;this[_0x6673('0xa')]=![];this[_0x6673('0xb')]=null;this[_0x6673('0xc')]=0x1;this[_0x6673('0xd')]='';this[_0x6673('0xe')]='';this[_0x6673('0xf')]='';this[_0x6673('0x10')]='';this[_0x6673('0x11')]='';this[_0x6673('0x12')]='';this[_0x6673('0x13')]='';this['holdtime']=0x0;this[_0x6673('0x14')]=![];this[_0x6673('0x15')]='';this[_0x6673('0x16')]=_0x6673('0x17');this[_0x6673('0x18')]=0x0;this[_0x6673('0x19')]={};}module['exports']=QueueReport;
\ No newline at end of file
+var _0x896e=['queue','queuecallerjoinAt','queuecallerleaveAt','position','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinename','context','holdtime','lastAssignedTo','mohtime','variables','type','inbound','uniqueid','calleridnum','calleridname'];(function(_0x10df18,_0x13338c){var _0x1f9a1d=function(_0x3157f4){while(--_0x3157f4){_0x10df18['push'](_0x10df18['shift']());}};_0x1f9a1d(++_0x13338c);}(_0x896e,0x182));var _0xe896=function(_0xadb995,_0x335c7a){_0xadb995=_0xadb995-0x0;var _0x4f9d65=_0x896e[_0xadb995];return _0x4f9d65;};'use strict';function QueueReport(){this[_0xe896('0x0')]=_0xe896('0x1');this[_0xe896('0x2')]='';this[_0xe896('0x3')]='';this[_0xe896('0x4')]='';this[_0xe896('0x5')]='';this[_0xe896('0x6')]=null;this[_0xe896('0x7')]=null;this[_0xe896('0x8')]=0x1;this['count']=0x1;this[_0xe896('0x9')]=![];this[_0xe896('0xa')]=null;this[_0xe896('0xb')]=![];this[_0xe896('0xc')]=null;this[_0xe896('0xd')]=![];this[_0xe896('0xe')]=null;this[_0xe896('0xf')]=0x1;this[_0xe896('0x10')]='';this['connectedlinenum']='';this[_0xe896('0x11')]='';this['accountcode']='';this[_0xe896('0x12')]='';this['exten']='';this['priority']='';this[_0xe896('0x13')]=0x0;this['assigned']=![];this[_0xe896('0x14')]='';this[_0xe896('0x15')]=0x0;this[_0xe896('0x16')]={};}module['exports']=QueueReport;
\ No newline at end of file
index d20d3fd..4716712 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6f3=['remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports','name','username'];(function(_0xaa642b,_0x27908f){var _0x3b5c99=function(_0x5461f6){while(--_0x5461f6){_0xaa642b['push'](_0xaa642b['shift']());}};_0x3b5c99(++_0x27908f);}(_0xb6f3,0x12a));var _0x3b6f=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xb6f3[_0x4e676e];return _0x336a3c;};'use strict';function SalesforceAccount(_0x3117b0){this['id']=_0x3117b0['id']||0x0;this['name']=_0x3117b0[_0x3b6f('0x0')]||'';this[_0x3b6f('0x1')]=_0x3117b0[_0x3b6f('0x1')]||'';this[_0x3b6f('0x2')]=_0x3117b0[_0x3b6f('0x2')]||'';this[_0x3b6f('0x3')]=_0x3117b0[_0x3b6f('0x3')]||'';this[_0x3b6f('0x4')]=_0x3117b0['clientId']||'';this[_0x3b6f('0x5')]=_0x3117b0[_0x3b6f('0x5')]||'';this[_0x3b6f('0x6')]=_0x3117b0[_0x3b6f('0x6')]||'';this[_0x3b6f('0x7')]=_0x3117b0[_0x3b6f('0x7')]||_0x3b6f('0x8');this[_0x3b6f('0x9')]=_0x3117b0[_0x3b6f('0x9')]||'';this['Configurations']=_0x3117b0[_0x3b6f('0xa')]||{};}module[_0x3b6f('0xb')]=SalesforceAccount;
\ No newline at end of file
+var _0xf452=['name','username','remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports'];(function(_0x298f5e,_0x37899c){var _0x268a22=function(_0x54dec1){while(--_0x54dec1){_0x298f5e['push'](_0x298f5e['shift']());}};_0x268a22(++_0x37899c);}(_0xf452,0x144));var _0x2f45=function(_0x3114d1,_0x2654ab){_0x3114d1=_0x3114d1-0x0;var _0x2d9b52=_0xf452[_0x3114d1];return _0x2d9b52;};'use strict';function SalesforceAccount(_0x344b6a){this['id']=_0x344b6a['id']||0x0;this[_0x2f45('0x0')]=_0x344b6a[_0x2f45('0x0')]||'';this['username']=_0x344b6a[_0x2f45('0x1')]||'';this['remoteUri']=_0x344b6a[_0x2f45('0x2')]||'';this[_0x2f45('0x3')]=_0x344b6a[_0x2f45('0x3')]||'';this[_0x2f45('0x4')]=_0x344b6a['clientId']||'';this['clientSecret']=_0x344b6a[_0x2f45('0x5')]||'';this[_0x2f45('0x6')]=_0x344b6a[_0x2f45('0x6')]||'';this[_0x2f45('0x7')]=_0x344b6a[_0x2f45('0x7')]||_0x2f45('0x8');this[_0x2f45('0x9')]=_0x344b6a[_0x2f45('0x9')]||'';this[_0x2f45('0xa')]=_0x344b6a[_0x2f45('0xa')]||{};}module[_0x2f45('0xb')]=SalesforceAccount;
\ No newline at end of file
index 695ed58..8284cdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38b0=['exports','name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x4cc171,_0x3fc611){var _0x5ed5c7=function(_0x40b9c2){while(--_0x40b9c2){_0x4cc171['push'](_0x4cc171['shift']());}};_0x5ed5c7(++_0x3fc611);}(_0x38b0,0x1c1));var _0x038b=function(_0x32f6b9,_0x2d4aa9){_0x32f6b9=_0x32f6b9-0x0;var _0x267d52=_0x38b0[_0x32f6b9];return _0x267d52;};'use strict';function ServicenowAccount(_0x45d1ad){this['id']=_0x45d1ad['id']||0x0;this[_0x038b('0x0')]=_0x45d1ad[_0x038b('0x0')]||'';this[_0x038b('0x1')]=_0x45d1ad[_0x038b('0x1')]||'';this['password']=_0x45d1ad[_0x038b('0x2')]||'';this[_0x038b('0x3')]=_0x45d1ad[_0x038b('0x3')]||'';this[_0x038b('0x4')]=_0x45d1ad['serverUrl']||'';this[_0x038b('0x5')]=_0x45d1ad[_0x038b('0x5')]||{};}module[_0x038b('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0x9020=['serverUrl','Configurations','exports','name','username'];(function(_0x2a54df,_0x5528d5){var _0x1ae08e=function(_0x4f3a65){while(--_0x4f3a65){_0x2a54df['push'](_0x2a54df['shift']());}};_0x1ae08e(++_0x5528d5);}(_0x9020,0x189));var _0x0902=function(_0x41fd33,_0x3d3796){_0x41fd33=_0x41fd33-0x0;var _0x2b0deb=_0x9020[_0x41fd33];return _0x2b0deb;};'use strict';function ServicenowAccount(_0x5092e8){this['id']=_0x5092e8['id']||0x0;this[_0x0902('0x0')]=_0x5092e8[_0x0902('0x0')]||'';this[_0x0902('0x1')]=_0x5092e8[_0x0902('0x1')]||'';this['password']=_0x5092e8['password']||'';this['remoteUri']=_0x5092e8['remoteUri']||'';this[_0x0902('0x2')]=_0x5092e8['serverUrl']||'';this['Configurations']=_0x5092e8[_0x0902('0x3')]||{};}module[_0x0902('0x4')]=ServicenowAccount;
\ No newline at end of file
index cfee2c0..78636be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb504=['username','password','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x1843e0,_0x44ad3e){var _0x2a1dba=function(_0x21df8b){while(--_0x21df8b){_0x1843e0['push'](_0x1843e0['shift']());}};_0x2a1dba(++_0x44ad3e);}(_0xb504,0x1e9));var _0x4b50=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xb504[_0x5b644e];return _0x49c6bf;};'use strict';function SugarcrmAccount(_0x228291){this['id']=_0x228291['id']||0x0;this[_0x4b50('0x0')]=_0x228291['name']||'';this['username']=_0x228291[_0x4b50('0x1')]||'';this[_0x4b50('0x2')]=_0x228291['password']||'';this[_0x4b50('0x3')]=_0x228291[_0x4b50('0x3')]||'';this[_0x4b50('0x4')]=_0x228291[_0x4b50('0x4')]||'';this[_0x4b50('0x5')]=_0x228291[_0x4b50('0x5')]||{};}module[_0x4b50('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0x09f1=['username','password','remoteUri','serverUrl','Configurations','name'];(function(_0x1b41f3,_0x4ee423){var _0x3931ad=function(_0x1abd35){while(--_0x1abd35){_0x1b41f3['push'](_0x1b41f3['shift']());}};_0x3931ad(++_0x4ee423);}(_0x09f1,0xbf));var _0x109f=function(_0x21a837,_0x3cbe55){_0x21a837=_0x21a837-0x0;var _0xfeca5b=_0x09f1[_0x21a837];return _0xfeca5b;};'use strict';function SugarcrmAccount(_0x3eaa2d){this['id']=_0x3eaa2d['id']||0x0;this[_0x109f('0x0')]=_0x3eaa2d['name']||'';this[_0x109f('0x1')]=_0x3eaa2d[_0x109f('0x1')]||'';this[_0x109f('0x2')]=_0x3eaa2d[_0x109f('0x2')]||'';this[_0x109f('0x3')]=_0x3eaa2d[_0x109f('0x3')]||'';this[_0x109f('0x4')]=_0x3eaa2d[_0x109f('0x4')]||'';this[_0x109f('0x5')]=_0x3eaa2d[_0x109f('0x5')]||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
index c54578c..28db4f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b37=['address','exports','name','accountcode','unknown','stateTime','status'];(function(_0x16a248,_0x304916){var _0x2704a3=function(_0x1e7b37){while(--_0x1e7b37){_0x16a248['push'](_0x16a248['shift']());}};_0x2704a3(++_0x304916);}(_0x0b37,0x1d7));var _0x70b3=function(_0x3dc994,_0x3acf97){_0x3dc994=_0x3dc994-0x0;var _0x3e6f68=_0x0b37[_0x3dc994];return _0x3e6f68;};'use strict';function Telephone(_0x6bdeb0){this['id']=_0x6bdeb0['id']||0x0;this[_0x70b3('0x0')]=_0x6bdeb0[_0x70b3('0x0')]||'';this[_0x70b3('0x1')]=_0x6bdeb0[_0x70b3('0x1')]||'';this['state']=_0x70b3('0x2');this[_0x70b3('0x3')]=0x0;this[_0x70b3('0x4')]=_0x70b3('0x2');this[_0x70b3('0x5')]='';}module[_0x70b3('0x6')]=Telephone;
\ No newline at end of file
+var _0x18a9=['state','unknown','stateTime','status','address','exports','name','accountcode'];(function(_0x1dc0fa,_0x123f42){var _0x364d3d=function(_0x1d59ae){while(--_0x1d59ae){_0x1dc0fa['push'](_0x1dc0fa['shift']());}};_0x364d3d(++_0x123f42);}(_0x18a9,0x17e));var _0x918a=function(_0x18a220,_0x41ddc1){_0x18a220=_0x18a220-0x0;var _0x4da55d=_0x18a9[_0x18a220];return _0x4da55d;};'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
index ccf4725..13fd41b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','html'];(function(_0x40ab20,_0x2dcc02){var _0x4bfa72=function(_0x5ae23c){while(--_0x5ae23c){_0x40ab20['push'](_0x40ab20['shift']());}};_0x4bfa72(++_0x2dcc02);}(_0xb10b,0x12a));var _0xbb10=function(_0xf7058b,_0x22c9b7){_0xf7058b=_0xf7058b-0x0;var _0x24cbf0=_0xb10b[_0xf7058b];return _0x24cbf0;};'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
+var _0xa9e0=['exports','name'];(function(_0xd80eaa,_0x3698b3){var _0x35ecc9=function(_0x14f493){while(--_0x14f493){_0xd80eaa['push'](_0xd80eaa['shift']());}};_0x35ecc9(++_0x3698b3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'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
index 6f204c9..7b670e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['Actions','exports','name','channel','voice','status','AllConditions','AnyConditions'];(function(_0x5ce8b9,_0x5cded8){var _0xe34be0=function(_0xe3d4e5){while(--_0xe3d4e5){_0x5ce8b9['push'](_0x5ce8b9['shift']());}};_0xe34be0(++_0x5cded8);}(_0xbaf0,0x12a));var _0x0baf=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xbaf0[_0x501510];return _0x1e6ee5;};'use strict';function Trigger(_0x61caa9){this['id']=_0x61caa9['id']||0x0;this[_0x0baf('0x0')]=_0x61caa9[_0x0baf('0x0')]||'';this[_0x0baf('0x1')]=_0x61caa9[_0x0baf('0x1')]||_0x0baf('0x2');this[_0x0baf('0x3')]=_0x61caa9['status']||![];this[_0x0baf('0x4')]=_0x61caa9[_0x0baf('0x4')]||[];this[_0x0baf('0x5')]=_0x61caa9[_0x0baf('0x5')]||[];this[_0x0baf('0x6')]=_0x61caa9[_0x0baf('0x6')]||[];}module[_0x0baf('0x7')]=Trigger;
\ No newline at end of file
+var _0x4fc2=['name','channel','voice','status','AllConditions','AnyConditions','Actions'];(function(_0x29cf89,_0x10ce1f){var _0x34ac61=function(_0x5b29c2){while(--_0x5b29c2){_0x29cf89['push'](_0x29cf89['shift']());}};_0x34ac61(++_0x10ce1f);}(_0x4fc2,0x111));var _0x24fc=function(_0x5ac4b6,_0x4d9360){_0x5ac4b6=_0x5ac4b6-0x0;var _0x29ced8=_0x4fc2[_0x5ac4b6];return _0x29ced8;};'use strict';function Trigger(_0x5ea3ab){this['id']=_0x5ea3ab['id']||0x0;this[_0x24fc('0x0')]=_0x5ea3ab[_0x24fc('0x0')]||'';this[_0x24fc('0x1')]=_0x5ea3ab['channel']||_0x24fc('0x2');this[_0x24fc('0x3')]=_0x5ea3ab[_0x24fc('0x3')]||![];this['AllConditions']=_0x5ea3ab[_0x24fc('0x4')]||[];this[_0x24fc('0x5')]=_0x5ea3ab['AnyConditions']||[];this[_0x24fc('0x6')]=_0x5ea3ab[_0x24fc('0x6')]||[];}module['exports']=Trigger;
\ No newline at end of file
index e7dfed8..ffd494a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc81c=['domainport','refresh','stateRegistry','defaultuser','active','name','state','unknown','status','registry','indexOf','port'];(function(_0xd687d3,_0x1e3a3c){var _0x341ada=function(_0x402fb0){while(--_0x402fb0){_0xd687d3['push'](_0xd687d3['shift']());}};_0x341ada(++_0x1e3a3c);}(_0xc81c,0x100));var _0xcc81=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0xc81c[_0x2d7f0e];return _0x110b07;};'use strict';function Trunk(_0xaf62b1){this['id']=_0xaf62b1['id']||0x0;this[_0xcc81('0x0')]=_0xaf62b1['active']||![];this[_0xcc81('0x1')]=_0xaf62b1[_0xcc81('0x1')]||'';this[_0xcc81('0x2')]=_0xcc81('0x3');this['stateTime']=0x0;this[_0xcc81('0x4')]='unknown';this[_0xcc81('0x5')]=_0xaf62b1[_0xcc81('0x5')]&&_0xaf62b1[_0xcc81('0x5')][_0xcc81('0x6')](':')?_0xaf62b1['registry']['split'](':')[0x0]:'';this['host']='';this[_0xcc81('0x7')]='';this['domain']='';this[_0xcc81('0x8')]='';this[_0xcc81('0x9')]='';this[_0xcc81('0xa')]=_0xcc81('0x3');this['registrationtime']='';this['address']='';this[_0xcc81('0xb')]=_0xaf62b1[_0xcc81('0xb')]||'';}module['exports']=Trunk;
\ No newline at end of file
+var _0x6160=['domainport','refresh','stateRegistry','registrationtime','address','defaultuser','active','state','unknown','stateTime','registry','indexOf','domain'];(function(_0x1e4483,_0x12d73e){var _0x2ab5be=function(_0x4cb35c){while(--_0x4cb35c){_0x1e4483['push'](_0x1e4483['shift']());}};_0x2ab5be(++_0x12d73e);}(_0x6160,0xa2));var _0x0616=function(_0x19e3e0,_0x3a36b8){_0x19e3e0=_0x19e3e0-0x0;var _0x403225=_0x6160[_0x19e3e0];return _0x403225;};'use strict';function Trunk(_0x5575d3){this['id']=_0x5575d3['id']||0x0;this['active']=_0x5575d3[_0x0616('0x0')]||![];this['name']=_0x5575d3['name']||'';this[_0x0616('0x1')]=_0x0616('0x2');this[_0x0616('0x3')]=0x0;this['status']=_0x0616('0x2');this[_0x0616('0x4')]=_0x5575d3[_0x0616('0x4')]&&_0x5575d3[_0x0616('0x4')][_0x0616('0x5')](':')?_0x5575d3[_0x0616('0x4')]['split'](':')[0x0]:'';this['host']='';this['port']='';this[_0x0616('0x6')]='';this[_0x0616('0x7')]='';this[_0x0616('0x8')]='';this[_0x0616('0x9')]=_0x0616('0x2');this[_0x0616('0xa')]='';this[_0x0616('0xb')]='';this[_0x0616('0xc')]=_0x5575d3['defaultuser']||'';}module['exports']=Trunk;
\ No newline at end of file
index 84099ed..d8171e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6711=['exports','exten','recordingFormat','mandatoryDisposition'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x6711,0x1e5));var _0x1671=function(_0x13e8d9,_0x15a757){_0x13e8d9=_0x13e8d9-0x0;var _0x283357=_0x6711[_0x13e8d9];return _0x283357;};'use strict';function voiceExtension(_0x5b17d3){this['id']=_0x5b17d3['id']||0x0;this[_0x1671('0x0')]=_0x5b17d3[_0x1671('0x0')]||'';this[_0x1671('0x1')]=_0x5b17d3['recordingFormat']||'none';this[_0x1671('0x2')]=_0x5b17d3[_0x1671('0x2')]||![];}module[_0x1671('0x3')]=voiceExtension;
\ No newline at end of file
+var _0xd6b1=['none','exten','recordingFormat'];(function(_0x1a9aa8,_0x5abdc9){var _0x5940cf=function(_0x231cc2){while(--_0x231cc2){_0x1a9aa8['push'](_0x1a9aa8['shift']());}};_0x5940cf(++_0x5abdc9);}(_0xd6b1,0xa9));var _0x1d6b=function(_0x348d9e,_0x217584){_0x348d9e=_0x348d9e-0x0;var _0x2d8936=_0xd6b1[_0x348d9e];return _0x2d8936;};'use strict';function voiceExtension(_0x47b3cb){this['id']=_0x47b3cb['id']||0x0;this[_0x1d6b('0x0')]=_0x47b3cb[_0x1d6b('0x0')]||'';this[_0x1d6b('0x1')]=_0x47b3cb[_0x1d6b('0x1')]||_0x1d6b('0x2');this['mandatoryDisposition']=_0x47b3cb['mandatoryDisposition']||![];}module['exports']=voiceExtension;
\ No newline at end of file
index add009f..86b5f16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c3a=['dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalHitRate','erlangCallToSecond','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','busy','invalid','unavailable','ringing','ringinuse','wav','wav49','rrmemory','roundrobin','name','monitor_format','type','waiting','talking','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','available','acw','acwTimeout','autopause','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry'];(function(_0x41c892,_0x362270){var _0x52d365=function(_0x3c8097){while(--_0x3c8097){_0x41c892['push'](_0x41c892['shift']());}};_0x52d365(++_0x362270);}(_0x7c3a,0x1ad));var _0xa7c3=function(_0x3dc68d,_0x1c1951){_0x3dc68d=_0x3dc68d-0x0;var _0xdf7f94=_0x7c3a[_0x3dc68d];return _0xdf7f94;};'use strict';var statusDesc=[_0xa7c3('0x0'),_0xa7c3('0x1'),'inuse',_0xa7c3('0x2'),_0xa7c3('0x3'),_0xa7c3('0x4'),_0xa7c3('0x5'),_0xa7c3('0x6'),'onhold'];var monitorFormat={'wav':_0xa7c3('0x7'),'wav49':_0xa7c3('0x8'),'gsm':'gsm'};var strategy={'rrmemory':_0xa7c3('0x9'),'roundrobin':_0xa7c3('0xa')};function VoiceQueue(_0x34c7b3){this['id']=_0x34c7b3['id']||0x0;this[_0xa7c3('0xb')]=_0x34c7b3['name']||'';this[_0xa7c3('0xc')]=_0x34c7b3['monitor_format']||'';this[_0xa7c3('0xd')]=_0x34c7b3['type']||'inbound';this[_0xa7c3('0xe')]=0x0;this[_0xa7c3('0xf')]=0x0;this['total']=0x0;this[_0xa7c3('0x10')]=0x0;this[_0xa7c3('0x11')]=0x0;this[_0xa7c3('0x12')]=0x0;this[_0xa7c3('0x13')]=0x0;this[_0xa7c3('0x14')]=0x0;this[_0xa7c3('0x15')]=0x0;this['loggedIn']=0x0;this[_0xa7c3('0x16')]=0x0;this[_0xa7c3('0x17')]=_0x34c7b3['acw']||![];this[_0xa7c3('0x18')]=_0x34c7b3[_0xa7c3('0x18')]||0xa;this[_0xa7c3('0x19')]=_0x34c7b3[_0xa7c3('0x19')]||'no';this['sendMessageOneNotActive']=!![];this[_0xa7c3('0x1a')]='';this[_0xa7c3('0x1b')]=0x0;this[_0xa7c3('0x1c')]=0x0;this[_0xa7c3('0x1d')]=_0x34c7b3[_0xa7c3('0x1d')]||null;this['dialGlobalInterval']=_0x34c7b3['dialGlobalInterval']?_0x34c7b3[_0xa7c3('0x1e')]:null;this[_0xa7c3('0x1f')]=_0x34c7b3['dialActive'];this['dialMethod']=_0x34c7b3[_0xa7c3('0x20')]||'progressive';this['dialLimitChannel']=_0x34c7b3[_0xa7c3('0x21')]||0x0;this[_0xa7c3('0x22')]=_0x34c7b3[_0xa7c3('0x22')]||0x0;this['dialPowerLevel']=_0x34c7b3[_0xa7c3('0x23')]||0x1;this[_0xa7c3('0x24')]=_0x34c7b3[_0xa7c3('0x24')]||_0xa7c3('0x25');this[_0xa7c3('0x26')]=_0x34c7b3[_0xa7c3('0x26')]||0.03;this[_0xa7c3('0x27')]=_0x34c7b3[_0xa7c3('0x27')]||0x258;this[_0xa7c3('0x28')]=_0x34c7b3[_0xa7c3('0x28')]||_0xa7c3('0x29');this['dialOriginateCallerIdNumber']=_0x34c7b3[_0xa7c3('0x2a')]||'anonymous';this[_0xa7c3('0x2b')]=_0x34c7b3[_0xa7c3('0x2b')]||0x1e;this[_0xa7c3('0x2c')]=_0x34c7b3[_0xa7c3('0x2c')]||_0xa7c3('0x2d');this[_0xa7c3('0x2e')]=_0x34c7b3['dialQueueTimeout']||0x3;this[_0xa7c3('0x2f')]=_0x34c7b3[_0xa7c3('0x2f')]||undefined;this[_0xa7c3('0x30')]=_0x34c7b3['dialCongestionMaxRetry']||0x3;this[_0xa7c3('0x31')]=_0x34c7b3[_0xa7c3('0x31')]||0x96;this[_0xa7c3('0x32')]=_0x34c7b3[_0xa7c3('0x32')]||0x3;this[_0xa7c3('0x33')]=_0x34c7b3[_0xa7c3('0x33')]||0x96;this[_0xa7c3('0x34')]=_0x34c7b3[_0xa7c3('0x34')]||0x3;this[_0xa7c3('0x35')]=_0x34c7b3[_0xa7c3('0x35')]||0x96;this['dialNoSuchNumberMaxRetry']=_0x34c7b3[_0xa7c3('0x36')]||0x3;this[_0xa7c3('0x37')]=_0x34c7b3['dialNoSuchNumberRetryFrequency']||0x96;this[_0xa7c3('0x38')]=_0x34c7b3['dialDropMaxRetry']||0x3;this['dialDropRetryFrequency']=_0x34c7b3[_0xa7c3('0x39')]||0x96;this[_0xa7c3('0x3a')]=_0x34c7b3[_0xa7c3('0x3a')]||0x3;this[_0xa7c3('0x3b')]=_0x34c7b3[_0xa7c3('0x3b')]||0x96;this[_0xa7c3('0x3c')]=_0x34c7b3['dialMachineMaxRetry']||0x3;this['dialMachineRetryFrequency']=_0x34c7b3[_0xa7c3('0x3d')]||0x96;this['dialAgentRejectMaxRetry']=_0x34c7b3['dialAgentRejectMaxRetry']||0x3;this[_0xa7c3('0x3e')]=_0x34c7b3['dialAgentRejectRetryFrequency']||0x96;this[_0xa7c3('0x3f')]=_0x34c7b3[_0xa7c3('0x3f')]||0x4;this[_0xa7c3('0x40')]=_0x34c7b3['Trunk']?_0x34c7b3[_0xa7c3('0x40')]:undefined;this[_0xa7c3('0x41')]=_0x34c7b3[_0xa7c3('0x41')]?_0x34c7b3['TrunkBackup']:undefined;this[_0xa7c3('0x42')]=_0x34c7b3['dialPrefix']||undefined;this[_0xa7c3('0x43')]=_0x34c7b3[_0xa7c3('0x43')]?_0x34c7b3[_0xa7c3('0x43')]:undefined;this[_0xa7c3('0x44')]=_0x34c7b3[_0xa7c3('0x44')]||_0xa7c3('0x45');this[_0xa7c3('0x46')]=_0x34c7b3['dialRandomLastDigitCallerIdNumber']||undefined;this[_0xa7c3('0x47')]=_0x34c7b3[_0xa7c3('0x47')]||undefined;this[_0xa7c3('0x48')]=strategy[_0x34c7b3[_0xa7c3('0x48')]]||_0xa7c3('0x9');this['queueStatusComplete']=!![];this['dialAMDActive']=_0x34c7b3[_0xa7c3('0x49')]||![];this[_0xa7c3('0x4a')]=_0x34c7b3[_0xa7c3('0x4a')];this[_0xa7c3('0x4b')]=_0x34c7b3[_0xa7c3('0x4b')];this[_0xa7c3('0x4c')]=_0x34c7b3['dialAMDAfterGreetingSilence'];this[_0xa7c3('0x4d')]=_0x34c7b3[_0xa7c3('0x4d')];this[_0xa7c3('0x4e')]=_0x34c7b3[_0xa7c3('0x4e')];this[_0xa7c3('0x4f')]=_0x34c7b3[_0xa7c3('0x4f')];this[_0xa7c3('0x50')]=_0x34c7b3[_0xa7c3('0x50')];this[_0xa7c3('0x51')]=_0x34c7b3[_0xa7c3('0x51')];this[_0xa7c3('0x52')]=_0x34c7b3[_0xa7c3('0x52')];this[_0xa7c3('0x53')]=0x0;this[_0xa7c3('0x54')]=0x0;this[_0xa7c3('0x55')]=_0x34c7b3[_0xa7c3('0x55')];this[_0xa7c3('0x56')]=0x0;this[_0xa7c3('0x57')]=0x0;this[_0xa7c3('0x58')]=0x0;this[_0xa7c3('0x59')]=0x0;this[_0xa7c3('0x5a')]=0x0;this[_0xa7c3('0x5b')]=0x0;this[_0xa7c3('0x5c')]=0x0;this[_0xa7c3('0x5d')]=0x0;this['outboundOriginateFailureCallsDay']=0x0;this[_0xa7c3('0x5e')]=0x0;this[_0xa7c3('0x5f')]=0x0;this[_0xa7c3('0x60')]=0x0;this[_0xa7c3('0x61')]=0x0;this['outboundAbandonedDay']=0x0;this[_0xa7c3('0x62')]=undefined;this[_0xa7c3('0x63')]=undefined;this[_0xa7c3('0x64')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0xa7c3('0x65')]=0x0;this[_0xa7c3('0x66')]=0x0;this[_0xa7c3('0x67')]=0x0;this[_0xa7c3('0x68')]=0x0;this['predictiveIntervalAvgHoldtime']=0x0;this[_0xa7c3('0x69')]=0x0;this[_0xa7c3('0x6a')]=0x0;this[_0xa7c3('0x6b')]=0x0;this['predictiveIntervalMaxThreshold']=_0x34c7b3[_0xa7c3('0x6c')]||0x14;this['predictiveIntervalMinThreshold']=_0x34c7b3[_0xa7c3('0x6c')]||0xa;this[_0xa7c3('0x6d')]=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0xa7c3('0x6e')]=0x1;this['erlangCalls']=0x0;this[_0xa7c3('0x6f')]=0x0;this['erlangAbandonmentRate']=0x0;this['erlangBusyFactor']=0x0;this['dialRecallMeTimeout']=_0x34c7b3[_0xa7c3('0x70')]||0x1e;this[_0xa7c3('0x71')]=_0x34c7b3[_0xa7c3('0x71')]||![];this[_0xa7c3('0x72')]=!!_0x34c7b3[_0xa7c3('0x72')]||![];this[_0xa7c3('0x73')]=_0x34c7b3[_0xa7c3('0x73')]||undefined;this[_0xa7c3('0x74')]=_0x34c7b3['dialAgiAfterHangupClient']||![];this['dialAgiAfterHangupAgent']=_0x34c7b3[_0xa7c3('0x75')]||![];this[_0xa7c3('0xc')]=monitorFormat[_0x34c7b3['monitor_format']]?monitorFormat[_0x34c7b3['monitor_format']]:undefined;this[_0xa7c3('0x76')]=_0x34c7b3[_0xa7c3('0x76')]||![];this[_0xa7c3('0x77')]=_0x34c7b3[_0xa7c3('0x77')]?_0x34c7b3[_0xa7c3('0x77')]:undefined;}module[_0xa7c3('0x78')]=VoiceQueue;
\ No newline at end of file
+var _0xc808=['startPredictive','handlePredictive','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','inuse','invalid','unavailable','ringing','ringinuse','onhold','wav','wav49','gsm','rrmemory','roundrobin','name','monitor_format','type','inbound','waiting','talking','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','anonymous','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','timeout','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundReCallsDay','outboundAbandonedDay','startProgressive'];(function(_0x58965a,_0x2e71db){var _0x254efc=function(_0xf14fb4){while(--_0xf14fb4){_0x58965a['push'](_0x58965a['shift']());}};_0x254efc(++_0x2e71db);}(_0xc808,0x97));var _0x8c80=function(_0xb24a3e,_0x4a3594){_0xb24a3e=_0xb24a3e-0x0;var _0x4038d7=_0xc808[_0xb24a3e];return _0x4038d7;};'use strict';var statusDesc=[_0x8c80('0x0'),_0x8c80('0x1'),_0x8c80('0x2'),'busy',_0x8c80('0x3'),_0x8c80('0x4'),_0x8c80('0x5'),_0x8c80('0x6'),_0x8c80('0x7')];var monitorFormat={'wav':_0x8c80('0x8'),'wav49':_0x8c80('0x9'),'gsm':_0x8c80('0xa')};var strategy={'rrmemory':_0x8c80('0xb'),'roundrobin':_0x8c80('0xc')};function VoiceQueue(_0x532fd8){this['id']=_0x532fd8['id']||0x0;this['name']=_0x532fd8[_0x8c80('0xd')]||'';this['monitor_format']=_0x532fd8[_0x8c80('0xe')]||'';this[_0x8c80('0xf')]=_0x532fd8['type']||_0x8c80('0x10');this[_0x8c80('0x11')]=0x0;this[_0x8c80('0x12')]=0x0;this[_0x8c80('0x13')]=0x0;this[_0x8c80('0x14')]=0x0;this[_0x8c80('0x15')]=0x0;this[_0x8c80('0x16')]=0x0;this[_0x8c80('0x17')]=0x0;this[_0x8c80('0x18')]=0x0;this[_0x8c80('0x19')]=0x0;this[_0x8c80('0x1a')]=0x0;this[_0x8c80('0x1b')]=0x0;this[_0x8c80('0x1c')]=_0x532fd8[_0x8c80('0x1c')]||![];this['acwTimeout']=_0x532fd8[_0x8c80('0x1d')]||0xa;this['autopause']=_0x532fd8[_0x8c80('0x1e')]||'no';this[_0x8c80('0x1f')]=!![];this[_0x8c80('0x20')]='';this['originated']=0x0;this['temp']=0x0;this[_0x8c80('0x21')]=_0x532fd8[_0x8c80('0x21')]||null;this[_0x8c80('0x22')]=_0x532fd8[_0x8c80('0x22')]?_0x532fd8[_0x8c80('0x22')]:null;this['dialActive']=_0x532fd8[_0x8c80('0x23')];this[_0x8c80('0x24')]=_0x532fd8['dialMethod']||_0x8c80('0x25');this['dialLimitChannel']=_0x532fd8[_0x8c80('0x26')]||0x0;this[_0x8c80('0x27')]=_0x532fd8[_0x8c80('0x27')]||0x0;this[_0x8c80('0x28')]=_0x532fd8[_0x8c80('0x28')]||0x1;this['dialPredictiveOptimization']=_0x532fd8[_0x8c80('0x29')]||_0x8c80('0x2a');this[_0x8c80('0x2b')]=_0x532fd8[_0x8c80('0x2b')]||0.03;this[_0x8c80('0x2c')]=_0x532fd8[_0x8c80('0x2c')]||0x258;this[_0x8c80('0x2d')]=_0x532fd8['dialOriginateCallerIdName']||'anonymous';this[_0x8c80('0x2e')]=_0x532fd8[_0x8c80('0x2e')]||_0x8c80('0x2f');this[_0x8c80('0x30')]=_0x532fd8[_0x8c80('0x30')]||0x1e;this['dialQueueOptions']=_0x532fd8[_0x8c80('0x31')]||_0x8c80('0x32');this['dialQueueTimeout']=_0x532fd8['dialQueueTimeout']||0x3;this[_0x8c80('0x33')]=_0x532fd8[_0x8c80('0x33')]||undefined;this[_0x8c80('0x34')]=_0x532fd8[_0x8c80('0x34')]||0x3;this[_0x8c80('0x35')]=_0x532fd8[_0x8c80('0x35')]||0x96;this[_0x8c80('0x36')]=_0x532fd8[_0x8c80('0x36')]||0x3;this[_0x8c80('0x37')]=_0x532fd8[_0x8c80('0x37')]||0x96;this['dialNoAnswerMaxRetry']=_0x532fd8[_0x8c80('0x38')]||0x3;this[_0x8c80('0x39')]=_0x532fd8[_0x8c80('0x39')]||0x96;this[_0x8c80('0x3a')]=_0x532fd8['dialNoSuchNumberMaxRetry']||0x3;this[_0x8c80('0x3b')]=_0x532fd8['dialNoSuchNumberRetryFrequency']||0x96;this[_0x8c80('0x3c')]=_0x532fd8[_0x8c80('0x3c')]||0x3;this['dialDropRetryFrequency']=_0x532fd8['dialDropRetryFrequency']||0x96;this['dialAbandonedMaxRetry']=_0x532fd8['dialAbandonedMaxRetry']||0x3;this['dialAbandonedRetryFrequency']=_0x532fd8['dialAbandonedRetryFrequency']||0x96;this[_0x8c80('0x3d')]=_0x532fd8[_0x8c80('0x3d')]||0x3;this[_0x8c80('0x3e')]=_0x532fd8[_0x8c80('0x3e')]||0x96;this['dialAgentRejectMaxRetry']=_0x532fd8[_0x8c80('0x3f')]||0x3;this[_0x8c80('0x40')]=_0x532fd8[_0x8c80('0x40')]||0x96;this['dialGlobalMaxRetry']=_0x532fd8[_0x8c80('0x41')]||0x4;this['Trunk']=_0x532fd8[_0x8c80('0x42')]?_0x532fd8[_0x8c80('0x42')]:undefined;this['TrunkBackup']=_0x532fd8[_0x8c80('0x43')]?_0x532fd8[_0x8c80('0x43')]:undefined;this[_0x8c80('0x44')]=_0x532fd8[_0x8c80('0x44')]||undefined;this[_0x8c80('0x45')]=_0x532fd8['Interval']?_0x532fd8[_0x8c80('0x45')]:undefined;this[_0x8c80('0x46')]=_0x532fd8['dialOrderByScheduledAt']||_0x8c80('0x47');this['dialRandomLastDigitCallerIdNumber']=_0x532fd8['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x8c80('0x48')]=_0x532fd8[_0x8c80('0x48')]||undefined;this['strategy']=strategy[_0x532fd8[_0x8c80('0x49')]]||_0x8c80('0xb');this['queueStatusComplete']=!![];this['dialAMDActive']=_0x532fd8[_0x8c80('0x4a')]||![];this[_0x8c80('0x4b')]=_0x532fd8['dialAMDInitialSilence'];this['dialAMDGreeting']=_0x532fd8[_0x8c80('0x4c')];this[_0x8c80('0x4d')]=_0x532fd8[_0x8c80('0x4d')];this['dialAMDTotalAnalysisTime']=_0x532fd8[_0x8c80('0x4e')];this[_0x8c80('0x4f')]=_0x532fd8[_0x8c80('0x4f')];this['dialAMDBetweenWordsSilence']=_0x532fd8[_0x8c80('0x50')];this['dialAMDMaximumNumberOfWords']=_0x532fd8[_0x8c80('0x51')];this['dialAMDSilenceThreshold']=_0x532fd8[_0x8c80('0x52')];this[_0x8c80('0x53')]=_0x532fd8[_0x8c80('0x53')];this[_0x8c80('0x54')]=0x0;this['pTalking']=0x0;this[_0x8c80('0x55')]=_0x532fd8[_0x8c80('0x55')];this['outboundAnswerCallsDay']=0x0;this[_0x8c80('0x56')]=0x0;this[_0x8c80('0x57')]=0x0;this[_0x8c80('0x58')]=0x0;this[_0x8c80('0x59')]=0x0;this[_0x8c80('0x5a')]=0x0;this[_0x8c80('0x5b')]=0x0;this[_0x8c80('0x5c')]=0x0;this[_0x8c80('0x5d')]=0x0;this[_0x8c80('0x5e')]=0x0;this[_0x8c80('0x5f')]=0x0;this['outboundDropCallsDayACS']=0x0;this[_0x8c80('0x60')]=0x0;this[_0x8c80('0x61')]=0x0;this[_0x8c80('0x62')]=undefined;this[_0x8c80('0x63')]=undefined;this[_0x8c80('0x64')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0x8c80('0x65')]=0x0;this[_0x8c80('0x66')]=0x0;this[_0x8c80('0x67')]=0x0;this[_0x8c80('0x68')]=0x0;this[_0x8c80('0x69')]=0x0;this[_0x8c80('0x6a')]=0x0;this[_0x8c80('0x6b')]=0x0;this[_0x8c80('0x6c')]=0x0;this[_0x8c80('0x6d')]=_0x532fd8[_0x8c80('0x6e')]||0x14;this['predictiveIntervalMinThreshold']=_0x532fd8[_0x8c80('0x6e')]||0xa;this[_0x8c80('0x6f')]=0x0;this[_0x8c80('0x70')]=0x0;this[_0x8c80('0x71')]=0x1;this[_0x8c80('0x72')]=0x0;this[_0x8c80('0x73')]=0x0;this[_0x8c80('0x74')]=0x0;this['erlangBusyFactor']=0x0;this[_0x8c80('0x75')]=_0x532fd8[_0x8c80('0x75')]||0x1e;this[_0x8c80('0x76')]=_0x532fd8['dialRecallInQueue']||![];this[_0x8c80('0x77')]=_0x532fd8[_0x8c80('0x77')]||undefined;this[_0x8c80('0x78')]=_0x532fd8[_0x8c80('0x78')]||![];this['dialAgiAfterHangupAgent']=_0x532fd8[_0x8c80('0x79')]||![];this[_0x8c80('0xe')]=monitorFormat[_0x532fd8[_0x8c80('0xe')]]?monitorFormat[_0x532fd8['monitor_format']]:undefined;this[_0x8c80('0x7a')]=_0x532fd8[_0x8c80('0x7a')]||![];this[_0x8c80('0x7b')]=_0x532fd8[_0x8c80('0x7b')]?_0x532fd8[_0x8c80('0x7b')]:undefined;}module[_0x8c80('0x7c')]=VoiceQueue;
\ No newline at end of file
index 469cfcb..b58f94a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x802e=['Configurations','exports','name','username','accessKey','remoteUri','serverUrl'];(function(_0x251d9c,_0x580977){var _0x16ae64=function(_0x4d3b53){while(--_0x4d3b53){_0x251d9c['push'](_0x251d9c['shift']());}};_0x16ae64(++_0x580977);}(_0x802e,0x9c));var _0xe802=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x802e[_0x42245d];return _0x4b211a;};'use strict';function VtigerAccount(_0xf21430){this['id']=_0xf21430['id']||0x0;this[_0xe802('0x0')]=_0xf21430[_0xe802('0x0')]||'';this[_0xe802('0x1')]=_0xf21430[_0xe802('0x1')]||'';this[_0xe802('0x2')]=_0xf21430['accessKey']||'';this[_0xe802('0x3')]=_0xf21430['remoteUri']||'';this[_0xe802('0x4')]=_0xf21430['serverUrl']||'';this[_0xe802('0x5')]=_0xf21430[_0xe802('0x5')]||{};}module[_0xe802('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0x61d4=['remoteUri','serverUrl','Configurations','exports','name','username','accessKey'];(function(_0x116f4f,_0x494975){var _0x4d5afa=function(_0x4c2608){while(--_0x4c2608){_0x116f4f['push'](_0x116f4f['shift']());}};_0x4d5afa(++_0x494975);}(_0x61d4,0xb3));var _0x461d=function(_0x37d1dd,_0x328b44){_0x37d1dd=_0x37d1dd-0x0;var _0x49539d=_0x61d4[_0x37d1dd];return _0x49539d;};'use strict';function VtigerAccount(_0x29b6c2){this['id']=_0x29b6c2['id']||0x0;this[_0x461d('0x0')]=_0x29b6c2['name']||'';this['username']=_0x29b6c2[_0x461d('0x1')]||'';this[_0x461d('0x2')]=_0x29b6c2[_0x461d('0x2')]||'';this[_0x461d('0x3')]=_0x29b6c2[_0x461d('0x3')]||'';this[_0x461d('0x4')]=_0x29b6c2[_0x461d('0x4')]||'';this[_0x461d('0x5')]=_0x29b6c2[_0x461d('0x5')]||{};}module[_0x461d('0x6')]=VtigerAccount;
\ No newline at end of file
index c540e31..261b633 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc4a=['type','integrationTab','serverUrl','Configurations','exports','name','username','password','token','remoteUri','authType'];(function(_0x5a2d6e,_0x3d3a47){var _0x30ff59=function(_0x2b5e6a){while(--_0x2b5e6a){_0x5a2d6e['push'](_0x5a2d6e['shift']());}};_0x30ff59(++_0x3d3a47);}(_0xdc4a,0x12e));var _0xadc4=function(_0x4492b2,_0x12a264){_0x4492b2=_0x4492b2-0x0;var _0x7940c4=_0xdc4a[_0x4492b2];return _0x7940c4;};'use strict';function ZendeskAccount(_0x9056e8){this['id']=_0x9056e8['id']||0x0;this[_0xadc4('0x0')]=_0x9056e8['name']||'';this[_0xadc4('0x1')]=_0x9056e8[_0xadc4('0x1')]||'';this['password']=_0x9056e8[_0xadc4('0x2')]||'';this[_0xadc4('0x3')]=_0x9056e8[_0xadc4('0x3')]||'';this[_0xadc4('0x4')]=_0x9056e8['remoteUri']||'';this[_0xadc4('0x5')]=_0x9056e8[_0xadc4('0x5')]||'';this[_0xadc4('0x6')]=_0x9056e8[_0xadc4('0x6')]||_0xadc4('0x7');this[_0xadc4('0x8')]=_0x9056e8[_0xadc4('0x8')]||'';this[_0xadc4('0x9')]=_0x9056e8['Configurations']||{};}module[_0xadc4('0xa')]=ZendeskAccount;
\ No newline at end of file
+var _0xce8e=['token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','exports','name','username','password'];(function(_0x5560f6,_0x225f9c){var _0x25d4ef=function(_0xa642c0){while(--_0xa642c0){_0x5560f6['push'](_0x5560f6['shift']());}};_0x25d4ef(++_0x225f9c);}(_0xce8e,0x1cb));var _0xece8=function(_0x4720cc,_0x630261){_0x4720cc=_0x4720cc-0x0;var _0x36d9c5=_0xce8e[_0x4720cc];return _0x36d9c5;};'use strict';function ZendeskAccount(_0x3c1708){this['id']=_0x3c1708['id']||0x0;this[_0xece8('0x0')]=_0x3c1708[_0xece8('0x0')]||'';this[_0xece8('0x1')]=_0x3c1708['username']||'';this[_0xece8('0x2')]=_0x3c1708['password']||'';this[_0xece8('0x3')]=_0x3c1708['token']||'';this[_0xece8('0x4')]=_0x3c1708[_0xece8('0x4')]||'';this[_0xece8('0x5')]=_0x3c1708[_0xece8('0x5')]||'';this['type']=_0x3c1708[_0xece8('0x6')]||_0xece8('0x7');this[_0xece8('0x8')]=_0x3c1708[_0xece8('0x8')]||'';this[_0xece8('0x9')]=_0x3c1708[_0xece8('0x9')]||{};}module[_0xece8('0xa')]=ZendeskAccount;
\ No newline at end of file
index 897b20d..6f59ec8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd08=['serverUrl','code','refreshToken','Configurations','exports','name','description','host','zone','clientId','clientSecret'];(function(_0x27286e,_0x4dad54){var _0x27bb73=function(_0x24fc27){while(--_0x24fc27){_0x27286e['push'](_0x27286e['shift']());}};_0x27bb73(++_0x4dad54);}(_0xfd08,0x19c));var _0x8fd0=function(_0x1d1963,_0x32cc0e){_0x1d1963=_0x1d1963-0x0;var _0x3f58bb=_0xfd08[_0x1d1963];return _0x3f58bb;};'use strict';function ZohoAccount(_0x348f57){this['id']=_0x348f57['id']||0x0;this[_0x8fd0('0x0')]=_0x348f57[_0x8fd0('0x0')]||'';this['description']=_0x348f57[_0x8fd0('0x1')]||'';this[_0x8fd0('0x2')]=_0x348f57[_0x8fd0('0x2')]||'';this[_0x8fd0('0x3')]=_0x348f57[_0x8fd0('0x3')]||'';this[_0x8fd0('0x4')]=_0x348f57['clientId']||'';this[_0x8fd0('0x5')]=_0x348f57[_0x8fd0('0x5')]||'';this['serverUrl']=_0x348f57[_0x8fd0('0x6')]||'';this[_0x8fd0('0x7')]=_0x348f57[_0x8fd0('0x7')]||'';this['refreshToken']=_0x348f57[_0x8fd0('0x8')]||'';this[_0x8fd0('0x9')]=_0x348f57[_0x8fd0('0x9')]||{};}module[_0x8fd0('0xa')]=ZohoAccount;
\ No newline at end of file
+var _0x1000=['clientSecret','serverUrl','code','refreshToken','Configurations','exports','name','description','host','zone','clientId'];(function(_0x7775d8,_0x19e68a){var _0x302073=function(_0x1bbf2a){while(--_0x1bbf2a){_0x7775d8['push'](_0x7775d8['shift']());}};_0x302073(++_0x19e68a);}(_0x1000,0x119));var _0x0100=function(_0x57757a,_0x3d28da){_0x57757a=_0x57757a-0x0;var _0x37c352=_0x1000[_0x57757a];return _0x37c352;};'use strict';function ZohoAccount(_0x3712e7){this['id']=_0x3712e7['id']||0x0;this[_0x0100('0x0')]=_0x3712e7[_0x0100('0x0')]||'';this[_0x0100('0x1')]=_0x3712e7['description']||'';this[_0x0100('0x2')]=_0x3712e7['host']||'';this[_0x0100('0x3')]=_0x3712e7[_0x0100('0x3')]||'';this[_0x0100('0x4')]=_0x3712e7[_0x0100('0x4')]||'';this[_0x0100('0x5')]=_0x3712e7['clientSecret']||'';this[_0x0100('0x6')]=_0x3712e7[_0x0100('0x6')]||'';this[_0x0100('0x7')]=_0x3712e7[_0x0100('0x7')]||'';this[_0x0100('0x8')]=_0x3712e7[_0x0100('0x8')]||'';this['Configurations']=_0x3712e7[_0x0100('0x9')]||{};}module[_0x0100('0xa')]=ZohoAccount;
\ No newline at end of file
index 4e64c6a..72938f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa248=['uniqueid','idContact','queue','name','type','dialAnswer','membername','Agent','channelAgent','format','SIP/%s','Contact','phone','firstName','lastName','active','calleridnum','scheduledat','countcongestionretry','countnoanswerretry','countglobal','countbusyretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','calleridname','number','exports','util','moment','isNil','string'];(function(_0x288d17,_0xb1bf09){var _0x5936a9=function(_0x2e6fb9){while(--_0x2e6fb9){_0x288d17['push'](_0x288d17['shift']());}};_0x5936a9(++_0xb1bf09);}(_0xa248,0x89));var _0x8a24=function(_0x117f9d,_0x3bb5d4){_0x117f9d=_0x117f9d-0x0;var _0x355f9a=_0xa248[_0x117f9d];return _0x355f9a;};'use strict';var util=require(_0x8a24('0x0'));var _=require('lodash');var moment=require(_0x8a24('0x1'));function checkNameSurname(_0x486a51,_0x2a0b78,_0x4593b9){var _0x33f52c='';if(!_[_0x8a24('0x2')](_0x2a0b78)&&'string'===typeof _0x2a0b78){_0x33f52c+=_0x2a0b78;}if(!_[_0x8a24('0x2')](_0x4593b9)&&_0x8a24('0x3')===typeof _0x4593b9){_0x33f52c+='\x20'+_0x4593b9;}if(_0x33f52c!==''){return _0x33f52c;}return _0x486a51;}function Action(_0x3c6518,_0x547f00,_0x3c3dbb,_0x17f782,_0x3042ca){this[_0x8a24('0x4')]=_0x3c3dbb||undefined;this[_0x8a24('0x5')]=_0x3c6518['id'];this[_0x8a24('0x6')]=_0x547f00[_0x8a24('0x7')];this[_0x8a24('0x8')]=_0x547f00[_0x8a24('0x8')];this['campaigntype']='queue';this[_0x8a24('0x9')]=![];this[_0x8a24('0xa')]=_[_0x8a24('0x2')](_0x3c6518[_0x8a24('0xb')])?undefined:_0x3c6518[_0x8a24('0xb')]['name'];this[_0x8a24('0xc')]=this[_0x8a24('0xa')]?util[_0x8a24('0xd')](_0x8a24('0xe'),this[_0x8a24('0xa')]):_0x17f782||undefined;this['calleridname']=checkNameSurname(_0x3c6518[_0x8a24('0xf')][_0x8a24('0x10')],_0x3c6518['Contact'][_0x8a24('0x11')],_0x3c6518['Contact'][_0x8a24('0x12')]);this[_0x8a24('0x13')]=_0x3c6518['active']||![];this[_0x8a24('0x14')]=_0x3c6518[_0x8a24('0xf')][_0x8a24('0x10')];this['scheduledat']=_0x3c6518[_0x8a24('0x15')];this['countbusyretry']=_0x3c6518['countbusyretry']||0x0;this[_0x8a24('0x16')]=_0x3c6518[_0x8a24('0x16')]||0x0;this[_0x8a24('0x17')]=_0x3c6518['countnoanswerretry']||0x0;this[_0x8a24('0x18')]=(_0x3c6518[_0x8a24('0x19')]||0x0)+(_0x3c6518[_0x8a24('0x16')]||0x0)+(_0x3c6518[_0x8a24('0x17')]||0x0)+(_0x3c6518[_0x8a24('0x1a')]||0x0)+(_0x3c6518[_0x8a24('0x1b')]||0x0)+(_0x3c6518[_0x8a24('0x1c')]||0x0)+(_0x3c6518['countmachineretry']||0x0)+(_0x3c6518[_0x8a24('0x1d')]||0x0);this[_0x8a24('0x1a')]=_0x3c6518[_0x8a24('0x1a')]||0x0;this[_0x8a24('0x1b')]=_0x3c6518[_0x8a24('0x1b')]||0x0;this['countabandonedretry']=_0x3c6518[_0x8a24('0x1c')]||0x0;this[_0x8a24('0x1e')]=_0x3c6518[_0x8a24('0x1e')]||0x0;this[_0x8a24('0x1d')]=_0x3c6518['countagentrejectretry']||0x0;this['callback']=_0x3c6518[_0x8a24('0x1f')];this[_0x8a24('0x20')]=_0x3c6518['callbackuniqueid'];this[_0x8a24('0x21')]=_0x3c6518[_0x8a24('0x21')];this['recallme']=_0x3c6518[_0x8a24('0x22')];this[_0x8a24('0x23')]=_0x3c6518[_0x8a24('0x23')];this[_0x8a24('0x24')]=_0x3c6518[_0x8a24('0x24')];this[_0x8a24('0x25')]=_[_0x8a24('0x2')](_0x3c6518[_0x8a24('0xb')])?_0x3c6518[_0x8a24('0x25')]:_0x3c6518[_0x8a24('0xb')]['id'];this[_0x8a24('0x26')]=_0x3c6518[_0x8a24('0x26')];this[_0x8a24('0x27')]='';this[_0x8a24('0x28')]='';}Action[_0x8a24('0x29')][_0x8a24('0x2a')]=function(){return util[_0x8a24('0xd')](_0x8a24('0x2b'),this[_0x8a24('0x2c')],this[_0x8a24('0x2d')]);};module[_0x8a24('0x2e')]=Action;
\ No newline at end of file
+var _0x5340=['Contact','phone','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','originatecalleridnum','prototype','getCaller','exports','util','lodash','moment','isNil','string','uniqueid','idContact','queue','name','type','campaigntype','dialAnswer','membername','Agent','format','SIP/%s','calleridname'];(function(_0x5eaa0b,_0x433b2f){var _0x28b295=function(_0x5e4f6d){while(--_0x5e4f6d){_0x5eaa0b['push'](_0x5eaa0b['shift']());}};_0x28b295(++_0x433b2f);}(_0x5340,0x1f3));var _0x0534=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5340[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x0534('0x0'));var _=require(_0x0534('0x1'));var moment=require(_0x0534('0x2'));function checkNameSurname(_0x45ed41,_0x2d57c7,_0xdde9e7){var _0x393681='';if(!_[_0x0534('0x3')](_0x2d57c7)&&_0x0534('0x4')===typeof _0x2d57c7){_0x393681+=_0x2d57c7;}if(!_[_0x0534('0x3')](_0xdde9e7)&&_0x0534('0x4')===typeof _0xdde9e7){_0x393681+='\x20'+_0xdde9e7;}if(_0x393681!==''){return _0x393681;}return _0x45ed41;}function Action(_0x536333,_0x4bee44,_0xec9ba3,_0x5b7ccc,_0x5ec657){this[_0x0534('0x5')]=_0xec9ba3||undefined;this[_0x0534('0x6')]=_0x536333['id'];this[_0x0534('0x7')]=_0x4bee44[_0x0534('0x8')];this[_0x0534('0x9')]=_0x4bee44[_0x0534('0x9')];this[_0x0534('0xa')]=_0x0534('0x7');this[_0x0534('0xb')]=![];this[_0x0534('0xc')]=_[_0x0534('0x3')](_0x536333[_0x0534('0xd')])?undefined:_0x536333[_0x0534('0xd')][_0x0534('0x8')];this['channelAgent']=this[_0x0534('0xc')]?util[_0x0534('0xe')](_0x0534('0xf'),this[_0x0534('0xc')]):_0x5b7ccc||undefined;this[_0x0534('0x10')]=checkNameSurname(_0x536333[_0x0534('0x11')][_0x0534('0x12')],_0x536333[_0x0534('0x11')]['firstName'],_0x536333[_0x0534('0x11')][_0x0534('0x13')]);this[_0x0534('0x14')]=_0x536333[_0x0534('0x14')]||![];this[_0x0534('0x15')]=_0x536333[_0x0534('0x11')]['phone'];this[_0x0534('0x16')]=_0x536333[_0x0534('0x16')];this['countbusyretry']=_0x536333[_0x0534('0x17')]||0x0;this[_0x0534('0x18')]=_0x536333[_0x0534('0x18')]||0x0;this['countnoanswerretry']=_0x536333[_0x0534('0x19')]||0x0;this[_0x0534('0x1a')]=(_0x536333[_0x0534('0x17')]||0x0)+(_0x536333[_0x0534('0x18')]||0x0)+(_0x536333[_0x0534('0x19')]||0x0)+(_0x536333[_0x0534('0x1b')]||0x0)+(_0x536333[_0x0534('0x1c')]||0x0)+(_0x536333[_0x0534('0x1d')]||0x0)+(_0x536333['countmachineretry']||0x0)+(_0x536333[_0x0534('0x1e')]||0x0);this[_0x0534('0x1b')]=_0x536333['countnosuchnumberretry']||0x0;this['countdropretry']=_0x536333[_0x0534('0x1c')]||0x0;this[_0x0534('0x1d')]=_0x536333[_0x0534('0x1d')]||0x0;this[_0x0534('0x1f')]=_0x536333[_0x0534('0x1f')]||0x0;this[_0x0534('0x1e')]=_0x536333[_0x0534('0x1e')]||0x0;this['callback']=_0x536333[_0x0534('0x20')];this['callbackuniqueid']=_0x536333[_0x0534('0x21')];this[_0x0534('0x22')]=_0x536333[_0x0534('0x22')];this[_0x0534('0x23')]=_0x536333[_0x0534('0x23')];this[_0x0534('0x24')]=_0x536333[_0x0534('0x24')];this['ListId']=_0x536333[_0x0534('0x25')];this[_0x0534('0x26')]=_['isNil'](_0x536333['Agent'])?_0x536333[_0x0534('0x26')]:_0x536333['Agent']['id'];this['VoiceQueueId']=_0x536333['VoiceQueueId'];this[_0x0534('0x27')]='';this['originatecalleridname']='';}Action[_0x0534('0x28')][_0x0534('0x29')]=function(){return util[_0x0534('0xe')]('\x22%s\x22\x20<%s>',this['calleridname'],this['number']);};module[_0x0534('0x2a')]=Action;
\ No newline at end of file
index 2f0f28c..26a3ed1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bae=['syncHangup','bind','syncHangupRequest','syncNewExten','attendedtransfer','syncAttendedTransfer','blindtransfer','loopCampaigns','campaignsPreview','emit','type','outbound','name','strategy','answered','available','loggedIn','pTalking','sumBillable','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','startPredictive','startProgressive','Trunk','active','callerid','Interval','stringify','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','format','voice:queue:%s','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','\x20is\x20disactive','syncCampaigns','hasOwnProperty','booked','clearZombieChannels','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','[clearZombieChannels][talking]','Queue','queue','pTalking:\x20','dialAnswer','pick','contactId','VoiceQueueId','ListId','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][Preview]','size','agentReadyId','then','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','[RecallMe]','logger2','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','buildObj','[callProgressDetectingCustomer][logNoSuch]','totalGlobal','dialGlobalMaxRetry','cloneAction','Global','dialNoSuchNumberMaxRetry','[callProgressDetectingCustomer][logNoSuchGlobal]','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','linkedid','ANSWER','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentconnect','connect','acw','buildAcw','custom:agentcomplete','complete','total','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumDuration','[syncHangup][talking][decrement]','BUSY','outboundBusyCallsDay','countbusyretry','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','dialBusyRetryFrequency','NOANSWER','outboundNoAnswerCallsDay','NoAnswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','countnoanswerretry','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','CANCEL','AgentReject','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','dialAgentRejectMaxRetry','[callProgressDetectingCustomer][logAgentReject]','countagentrejectretry','dialAgentRejectRetryFrequency','ABANDONED','outboundAbandonedCallsDay','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','originated:\x20','object','isUndefined','reason','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','logAgent','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','isNil','Contact','Contact\x20is\x20undefined','lookAgent','isEmpty','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','unmonitored','execRun','unlock','unlockContact','recallme','validateContact','checkIsBlackList','Contact.phone','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[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','Is\x20Valid','SIP/%s/%s%s','dialCutDigit','phone','substring','trim','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','merge','Action','variablesAction','[originated][increment]','OriginateError','syncOriginateResponse','actionid','logLookAgent','clone','responsetime','isFailure','response','idContact','custom:agentringnoanswer','rejected','callProgressDetectingAgent','Answer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','[syncHangup][talking][cause]','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','syncDialEnd','destlinkedid','destuniqueid','variables','filterKey','keys','variable','addVariable','value','error','inspect','transfererlinkedid','bluebird','uuid','md5','../../../config/environment','../../../config/logger','preview','actionPreview','../ami','./rpcDb','./action','./util/util','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','hangup'];(function(_0x22377a,_0x3397cb){var _0x36f105=function(_0x2174cc){while(--_0x2174cc){_0x22377a['push'](_0x22377a['shift']());}};_0x36f105(++_0x3397cb);}(_0x7bae,0x13b));var _0xe7ba=function(_0x266618,_0x18f637){_0x266618=_0x266618-0x0;var _0x54dbf5=_0x7bae[_0x266618];return _0x54dbf5;};'use strict';var util=require('util');var _=require('lodash');var BPromise=require(_0xe7ba('0x0'));var uuid=require(_0xe7ba('0x1'));var moment=require('moment');var md5=require(_0xe7ba('0x2'));var Redis=require('ioredis');var config=require(_0xe7ba('0x3'));var logger=require(_0xe7ba('0x4'))(_0xe7ba('0x5'));var loggerAction=require(_0xe7ba('0x4'))(_0xe7ba('0x6'));var ami=require(_0xe7ba('0x7'));var rpcDb=require(_0xe7ba('0x8'));var Action=require(_0xe7ba('0x9'));var ut=require(_0xe7ba('0xa'));config[_0xe7ba('0xb')]=_[_0xe7ba('0xc')](config[_0xe7ba('0xb')],{'host':_0xe7ba('0xd'),'port':0x18eb});var io=require(_0xe7ba('0xe'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0xe7ba('0xf')][_0xe7ba('0x10')]=function(_0x375ebb){this[_0xe7ba('0x11')]=this[_0xe7ba('0x11')]?this[_0xe7ba('0x11')][_0xe7ba('0x12')](_0x375ebb):_0x375ebb();};function Preview(_0x448bcc){this[_0xe7ba('0x13')]=new Sequence();this['campaignsPreview']=_0x448bcc[_0xe7ba('0x14')];this['trunks']=_0x448bcc[_0xe7ba('0x15')];this[_0xe7ba('0x16')]={};this[_0xe7ba('0x17')]=_0x448bcc[_0xe7ba('0x17')];this[_0xe7ba('0x18')]=0x0;ami['on'](_0xe7ba('0x19'),this['syncOriginateResponse']['bind'](this));ami['on'](_0xe7ba('0x1a'),this[_0xe7ba('0x1b')][_0xe7ba('0x1c')](this));ami['on']('hanguprequest',this[_0xe7ba('0x1d')]['bind'](this));ami['on']('dialend',this['syncDialEnd'][_0xe7ba('0x1c')](this));ami['on']('newexten',this[_0xe7ba('0x1e')]['bind'](this));ami['on']('varset',this['syncVarSet'][_0xe7ba('0x1c')](this));ami['on'](_0xe7ba('0x1f'),this[_0xe7ba('0x20')][_0xe7ba('0x1c')](this));ami['on'](_0xe7ba('0x21'),this['syncBlindTransfer'][_0xe7ba('0x1c')](this));this[_0xe7ba('0x22')](this[_0xe7ba('0x23')]);}function emit(_0x136ec6,_0x4aaf35,_0x1076c5){io['to'](_0x136ec6)[_0xe7ba('0x24')](_0x4aaf35,_0x1076c5);}function emitCampaignPreview(_0x5a158f){if(_0x5a158f[_0xe7ba('0x25')]===_0xe7ba('0x26')){var _0x27c882={'id':_0x5a158f['id'],'name':_0x5a158f[_0xe7ba('0x27')],'strategy':_0x5a158f[_0xe7ba('0x28')],'answered':_0x5a158f[_0xe7ba('0x29')],'available':_0x5a158f[_0xe7ba('0x2a')],'loggedIn':_0x5a158f[_0xe7ba('0x2b')],'pTalking':_0x5a158f[_0xe7ba('0x2c')],'sumBillable':_0x5a158f[_0xe7ba('0x2d')],'sumDuration':_0x5a158f['sumDuration'],'sumHoldTime':_0x5a158f['sumHoldTime']||0x0,'talking':_0x5a158f['talking'],'total':_0x5a158f['total'],'type':_0x5a158f[_0xe7ba('0x25')],'unmanaged':_0x5a158f['unmanaged'],'abandoned':_0x5a158f['abandoned'],'waiting':_0x5a158f['waiting'],'loggedInDb':_0x5a158f[_0xe7ba('0x2e')],'dialActive':_0x5a158f[_0xe7ba('0x2f')],'dialMethod':_0x5a158f[_0xe7ba('0x30')],'dialOriginateCallerIdName':_0x5a158f[_0xe7ba('0x31')],'dialOriginateCallerIdNumber':_0x5a158f[_0xe7ba('0x32')],'dialOriginateTimeout':_0x5a158f[_0xe7ba('0x33')],'dialPrefix':_0x5a158f[_0xe7ba('0x34')],'outboundAnswerAgiCallsDay':_0x5a158f[_0xe7ba('0x35')],'outboundAnswerCallsDay':_0x5a158f['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x5a158f[_0xe7ba('0x36')],'outboundBusyCallsDay':_0x5a158f['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x5a158f[_0xe7ba('0x37')],'outboundDropCallsDayACS':_0x5a158f[_0xe7ba('0x38')],'outboundDropCallsDayCallersExit':_0x5a158f[_0xe7ba('0x39')],'outboundDropCallsDayTimeout':_0x5a158f['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x5a158f['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x5a158f[_0xe7ba('0x3a')],'outboundOriginateFailureCallsDay':_0x5a158f[_0xe7ba('0x3b')],'outboundReCallsDay':_0x5a158f[_0xe7ba('0x3c')],'outboundRejectCallsDay':_0x5a158f[_0xe7ba('0x3d')],'outboundUnknownCallsDay':_0x5a158f[_0xe7ba('0x3e')],'outboundAbandonedCallsDay':_0x5a158f['outboundAbandonedCallsDay'],'predictiveIntervalAnsweredCalls':_0x5a158f[_0xe7ba('0x3f')],'predictiveIntervalAvgHoldtime':_0x5a158f[_0xe7ba('0x40')],'predictiveIntervalAvgTalktime':_0x5a158f['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x5a158f[_0xe7ba('0x41')],'predictiveIntervalDroppedCallsTimeout':_0x5a158f['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x5a158f['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x5a158f[_0xe7ba('0x42')],'predictiveIntervalHitRate':_0x5a158f[_0xe7ba('0x43')],'predictiveIntervalMultiplicativeFactor':_0x5a158f[_0xe7ba('0x44')],'predictiveIntervalPauses':_0x5a158f['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x5a158f[_0xe7ba('0x45')],'predictiveIntervalTotalCalls':_0x5a158f['predictiveIntervalTotalCalls'],'message':_0x5a158f[_0xe7ba('0x46')],'originated':_0x5a158f[_0xe7ba('0x47')],'erlangCalls':_0x5a158f[_0xe7ba('0x48')],'erlangCallToSecond':_0x5a158f[_0xe7ba('0x49')],'erlangAbandonmentRate':_0x5a158f[_0xe7ba('0x4a')],'erlangBusyFactor':_0x5a158f['erlangBusyFactor'],'startPredictive':_0x5a158f[_0xe7ba('0x4b')],'startProgressive':_0x5a158f[_0xe7ba('0x4c')]};if(_0x5a158f['Trunk']){_0x27c882[_0xe7ba('0x4d')]={'id':_0x5a158f[_0xe7ba('0x4d')]['id'],'name':_0x5a158f[_0xe7ba('0x4d')]['name'],'active':_0x5a158f[_0xe7ba('0x4d')][_0xe7ba('0x4e')],'callerid':_0x5a158f['Trunk'][_0xe7ba('0x4f')]};}if(_0x5a158f[_0xe7ba('0x50')]){_0x27c882[_0xe7ba('0x50')]={'id':_0x5a158f['Interval']['id'],'name':_0x5a158f[_0xe7ba('0x50')][_0xe7ba('0x27')]};}var _0x575f4b=md5(JSON[_0xe7ba('0x51')](_0x27c882));if(_0x5a158f[_0xe7ba('0x2')]!==_0x575f4b){_0x5a158f[_0xe7ba('0x2')]=_0x575f4b;emit(util['format']('voice:queue:%s',_0x27c882[_0xe7ba('0x27')]),_0xe7ba('0x52'),_0x27c882);}}}function emitVoiceQueueChannelRemove(_0x58d2a){logger[_0xe7ba('0x53')](_0xe7ba('0x54'),JSON['stringify'](_0x58d2a));emit(util[_0xe7ba('0x55')](_0xe7ba('0x56'),_0x58d2a[_0xe7ba('0x27')]),_0xe7ba('0x57'),_0x58d2a);io['emit'](_0xe7ba('0x58'),_0x58d2a);}function notSendMessagesQueue(_0x1b7f18){if(_0x1b7f18[_0xe7ba('0x59')]){if(_0x1b7f18[_0xe7ba('0x47')]===0x0&&_0x1b7f18[_0xe7ba('0x2c')]===0x0){_0x1b7f18[_0xe7ba('0x59')]=![];_0x1b7f18[_0xe7ba('0x2a')]=0x0;_0x1b7f18['paused']=0x0;_0x1b7f18[_0xe7ba('0x46')]=_0xe7ba('0x5a');ut[_0xe7ba('0x5b')](_0xe7ba('0x5c'),_0x1b7f18[_0xe7ba('0x27')]+_0xe7ba('0x5d'));}else{_0x1b7f18[_0xe7ba('0x46')]=_0xe7ba('0x5e');ut[_0xe7ba('0x5b')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x1b7f18[_0xe7ba('0x27')]+_0xe7ba('0x5f'));}emitCampaignPreview(_0x1b7f18);}}Preview['prototype']['loopCampaigns']=function(){var _0x32053d=this;setInterval(function(){_0x32053d[_0xe7ba('0x60')]();},0x7cf);};Preview[_0xe7ba('0xf')]['syncCampaigns']=function(){var _0x249e1d=this[_0xe7ba('0x23')];this[_0xe7ba('0x18')]+=0x1;for(var _0x12770d in _0x249e1d){if(_0x249e1d[_0xe7ba('0x61')](_0x12770d)&&(_0x249e1d[_0x12770d]['dialMethod']===_0xe7ba('0x5')||_0x249e1d[_0x12770d]['dialMethod']===_0xe7ba('0x62'))&&_0x249e1d[_0x12770d][_0xe7ba('0x25')]===_0xe7ba('0x26')){if(this[_0xe7ba('0x18')]>0x7){this[_0xe7ba('0x18')]=0x0;this[_0xe7ba('0x63')]();}}if(_0x249e1d[_0xe7ba('0x61')](_0x12770d)&&_0x249e1d[_0x12770d][_0xe7ba('0x30')]==='preview'&&_0x249e1d[_0x12770d][_0xe7ba('0x25')]===_0xe7ba('0x26')){if(_0x249e1d[_0x12770d][_0xe7ba('0x2f')]){this[_0xe7ba('0x64')](_0x249e1d[_0x12770d]);if(_0x249e1d[_0x12770d][_0xe7ba('0x65')])this[_0xe7ba('0x66')](_0x249e1d[_0x12770d]);}else{notSendMessagesQueue(_0x249e1d[_0x12770d]);}}}};Preview[_0xe7ba('0xf')][_0xe7ba('0x67')]=function(_0x45f49a){var _0x46c456=this;this['sequence'][_0xe7ba('0x10')](function(){if(!_['isNil'](_0x46c456[_0xe7ba('0x16')][_0x45f49a])){loggerAction[_0xe7ba('0x53')](_0xe7ba('0x68'),_0x45f49a,_0xe7ba('0x69'),_0x46c456[_0xe7ba('0x16')][_0x45f49a][_0xe7ba('0x6a')],'originated:\x20',JSON[_0xe7ba('0x51')](_0x46c456[_0xe7ba('0x23')][_0x46c456[_0xe7ba('0x16')][_0x45f49a][_0xe7ba('0x6a')]][_0xe7ba('0x47')]),_0xe7ba('0x6b'),JSON[_0xe7ba('0x51')](_0x46c456[_0xe7ba('0x23')][_0x46c456[_0xe7ba('0x16')][_0x45f49a][_0xe7ba('0x6a')]][_0xe7ba('0x2c')]),JSON['stringify'](_0x46c456[_0xe7ba('0x16')][_0x45f49a][_0xe7ba('0x6c')]),JSON[_0xe7ba('0x51')](_[_0xe7ba('0x6d')](_0x46c456[_0xe7ba('0x16')][_0x45f49a],[_0xe7ba('0x6e'),'UserId',_0xe7ba('0x6f'),_0xe7ba('0x70')])));return ami['Action']({'action':_0xe7ba('0x71'),'channel':_0x46c456[_0xe7ba('0x16')][_0x45f49a][_0xe7ba('0x72')]})[_0xe7ba('0x73')](function(_0x4cc4e9){if(_0x4cc4e9['message']===_0xe7ba('0x74')){setTimeout(function(){if(_0x46c456[_0xe7ba('0x16')][_0x45f49a]){ut[_0xe7ba('0x75')](_0x46c456['campaignsPreview'][_0x46c456[_0xe7ba('0x16')][_0x45f49a][_0xe7ba('0x6a')]],_0xe7ba('0x76'));if(_0x46c456[_0xe7ba('0x16')][_0x45f49a][_0xe7ba('0x6c')]===!![]){ut[_0xe7ba('0x77')](_0x46c456[_0xe7ba('0x23')][_0x46c456['actions'][_0x45f49a][_0xe7ba('0x6a')]],_0xe7ba('0x76'));ut[_0xe7ba('0x78')]('[Dialer][checkChannel][pTalking][Preview]'+_0x45f49a,_0x46c456[_0xe7ba('0x16')][_0x45f49a][_0xe7ba('0x6a')]);}ut['loggerError'](_0xe7ba('0x79')+_0x45f49a,_0x46c456[_0xe7ba('0x16')][_0x45f49a]['queue']);delete _0x46c456[_0xe7ba('0x16')][_0x45f49a];}},0x2328);}});}});};Preview['prototype'][_0xe7ba('0x63')]=function(){var _0x2a8317=this;loggerAction[_0xe7ba('0x53')]('[action]',_[_0xe7ba('0x7a')](this[_0xe7ba('0x16')]));for(var _0x314549 in this[_0xe7ba('0x16')]){if(_0x2a8317[_0xe7ba('0x16')]['hasOwnProperty'](_0x314549)){_0x2a8317[_0xe7ba('0x67')](_0x314549);}}};Preview[_0xe7ba('0xf')][_0xe7ba('0x66')]=function(_0x19159c){var _0x435dee=this;rpcDb['getContactRecallMe'](_0x19159c['id'],ut[_0xe7ba('0x7b')](this[_0xe7ba('0x17')]))[_0xe7ba('0x7c')](function(_0x41dbf2){if(!_['isNil'](_0x41dbf2)){for(var _0x3e31c1=0x0;_0x3e31c1<_0x41dbf2[_0xe7ba('0x7d')];_0x3e31c1+=0x1){if(ut[_0xe7ba('0x7e')](_0x41dbf2[_0x3e31c1][_0xe7ba('0x7f')])<_0x19159c[_0xe7ba('0x80')]*0x3c){if(_0x41dbf2[_0x3e31c1][_0xe7ba('0x81')]&&!_0x41dbf2[_0x3e31c1]['Agent'][_0xe7ba('0x82')]){_0x435dee[_0xe7ba('0x83')](_0x41dbf2[_0x3e31c1]['id'])[_0xe7ba('0x7c')](ut['logger2'](_0xe7ba('0x84')))[_0xe7ba('0x73')](ut[_0xe7ba('0x85')](_0xe7ba('0x84')));}else{rpcDb[_0xe7ba('0x86')](_0x41dbf2[_0x3e31c1]['id']);}}else{var _0x162d7f=new Action(_0x41dbf2[_0x3e31c1],_0x19159c);_0x162d7f[_0xe7ba('0x87')]=moment()[_0xe7ba('0x55')](_0xe7ba('0x88'));_0x19159c[_0xe7ba('0x3c')]+=0x1;ut[_0xe7ba('0x89')](_0x162d7f,0x17,_0xe7ba('0x8a'));if(_0x19159c['dialRecallInQueue']){rpcDb[_0xe7ba('0x8b')](ut[_0xe7ba('0x8c')](_0x41dbf2[_0x3e31c1]));rpcDb[_0xe7ba('0x8d')](_0x162d7f,'[HistoryDialRecallInQueue][historyCatch]');}else{ut[_0xe7ba('0x89')](_0x162d7f,0x16,'RecallFailedTimeout');rpcDb[_0xe7ba('0x8d')](_0x162d7f,_0xe7ba('0x8e'));rpcDb[_0xe7ba('0x8f')](_0x162d7f,'[HistoryRecallClose]');}}}}})['catch'](ut[_0xe7ba('0x85')](_0xe7ba('0x90')));};Preview[_0xe7ba('0xf')]['setMessage']=function(_0x3ba4fd){_0x3ba4fd[_0xe7ba('0x59')]=!![];if(ut[_0xe7ba('0x91')](_0x3ba4fd[_0xe7ba('0x2b')])){_0x3ba4fd[_0xe7ba('0x46')]='AGENTS_NOT_LOGGED';}else if(!ut[_0xe7ba('0x92')](_0x3ba4fd[_0xe7ba('0x2f')])){_0x3ba4fd[_0xe7ba('0x46')]='NOT_ACTIVE';}else if(!this[_0xe7ba('0x93')](_0x3ba4fd[_0xe7ba('0x4d')])){if(!this[_0xe7ba('0x93')](_0x3ba4fd[_0xe7ba('0x94')])){_0x3ba4fd[_0xe7ba('0x46')]=_0xe7ba('0x95');}else{_0x3ba4fd[_0xe7ba('0x46')]=_0xe7ba('0x96');}}else{_0x3ba4fd[_0xe7ba('0x46')]=_0xe7ba('0x96');}emitCampaignPreview(_0x3ba4fd);};Preview['prototype'][_0xe7ba('0x97')]=function(_0x2ee567,_0x344d29,_0xa6da9e){var _0x4d8773=this;var _0x4c0d12=this[_0xe7ba('0x16')][_0x344d29];var _0x3c2b1c=this[_0xe7ba('0x23')][_0x4c0d12['queue']];var _0x53ebd1;if(_0x3c2b1c){switch(_0xa6da9e){case'1':_0x3c2b1c['outboundNoSuchCallsDay']+=0x1;_0x4c0d12[_0xe7ba('0x98')]+=0x1;_0x4c0d12[_0xe7ba('0x99')]=ut['totalGlobal'](_0x4c0d12);ut[_0xe7ba('0x89')](_0x4c0d12,0x0,'NoSuchNumber');ami[_0xe7ba('0x24')]('custom:agentnosuchnumber',ut[_0xe7ba('0x9a')](_0x4c0d12,'nosuchnumber'));rpcDb['createCustomerHistory'](_0x4c0d12,_0xe7ba('0x9b'));if(ut[_0xe7ba('0x9c')](_0x4c0d12)>=_0x3c2b1c[_0xe7ba('0x9d')]){_0x53ebd1=ut[_0xe7ba('0x9e')](_0x4c0d12,0xf,_0xe7ba('0x9f'));rpcDb[_0xe7ba('0x8f')](_0x53ebd1,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x4c0d12['countnosuchnumberretry']>=_0x3c2b1c[_0xe7ba('0xa0')]){rpcDb[_0xe7ba('0x8f')](_0x4c0d12,_0xe7ba('0xa1'));}else{rpcDb[_0xe7ba('0xa2')](ut[_0xe7ba('0xa3')](_0x4c0d12,_0xe7ba('0x98'),_0x3c2b1c[_0xe7ba('0xa4')]),_0x4c0d12[_0xe7ba('0xa5')],_0x4c0d12[_0xe7ba('0xa6')]);}}delete this[_0xe7ba('0x16')][_0x2ee567[_0xe7ba('0xa7')]];break;case _0xe7ba('0xa8'):var _0x2022e2=moment()[_0xe7ba('0x55')](_0xe7ba('0x88'));_0x4c0d12['responsetime']=_0x2022e2;_0x4c0d12[_0xe7ba('0xa9')]=_0x2022e2;_0x4c0d12[_0xe7ba('0x6c')]=!![];_0x3c2b1c[_0xe7ba('0x2c')]+=0x1;logger[_0xe7ba('0x53')](_0xe7ba('0xaa'),_0x4c0d12[_0xe7ba('0xab')],_0xe7ba('0xac'),_0x3c2b1c[_0xe7ba('0x27')],_0xe7ba('0x6b'),_0x3c2b1c[_0xe7ba('0x2c')]);ami[_0xe7ba('0x24')](_0xe7ba('0xad'),ut['buildObj'](_0x4c0d12,_0xe7ba('0xae'),this['campaignsPreview'][_0x4c0d12[_0xe7ba('0x6a')]]));if(_0x3c2b1c[_0xe7ba('0xaf')]){ami[_0xe7ba('0x24')]('custom:agentConnectPreview',ut[_0xe7ba('0xb0')](_0x4c0d12));}break;case'16':ami[_0xe7ba('0x24')](_0xe7ba('0xb1'),ut[_0xe7ba('0x9a')](_0x4c0d12,'complete',this[_0xe7ba('0x23')][_0x4c0d12[_0xe7ba('0x6a')]]));emitVoiceQueueChannelRemove(ut[_0xe7ba('0x9a')](_0x4c0d12,_0xe7ba('0xb2')));_0x3c2b1c['outboundAnswerCallsDay']+=0x1;_0x3c2b1c[_0xe7ba('0xb3')]+=0x1;_0x3c2b1c[_0xe7ba('0x29')]+=0x1;ut[_0xe7ba('0x77')](_0x3c2b1c,_0xe7ba('0xb4'));_0x4c0d12[_0xe7ba('0x99')]=ut['totalGlobal'](_0x4c0d12);ut['logCustomer'](_0x4c0d12,0x4,'Answer');rpcDb[_0xe7ba('0x8d')](_0x4c0d12,_0xe7ba('0xb5'));rpcDb[_0xe7ba('0x8f')](_0x4c0d12,_0xe7ba('0xb6'));rpcDb[_0xe7ba('0xb7')](_0x4c0d12);_0x3c2b1c[_0xe7ba('0xb8')]+=_0x4c0d12['talktime'];_0x3c2b1c[_0xe7ba('0x2d')]+=_0x4c0d12['talktime'];logger[_0xe7ba('0x53')](_0xe7ba('0xb9'),_0x4c0d12[_0xe7ba('0xab')],_0xe7ba('0xac'),_0x3c2b1c[_0xe7ba('0x27')],_0xe7ba('0x6b'),_0x3c2b1c['pTalking']);delete this[_0xe7ba('0x16')][_0x2ee567[_0xe7ba('0xa7')]];break;case _0xe7ba('0xba'):_0x3c2b1c[_0xe7ba('0xbb')]+=0x1;_0x4c0d12[_0xe7ba('0xbc')]+=0x1;_0x4c0d12['countglobal']=ut[_0xe7ba('0x9c')](_0x4c0d12);ut['logCustomer'](_0x4c0d12,0x5,_0xe7ba('0xbd'));ami[_0xe7ba('0x24')](_0xe7ba('0xbe'),ut[_0xe7ba('0x9a')](_0x4c0d12,_0xe7ba('0xbf')));rpcDb[_0xe7ba('0x8d')](_0x4c0d12,_0xe7ba('0xc0'));if(ut[_0xe7ba('0x9c')](_0x4c0d12)>=_0x3c2b1c[_0xe7ba('0x9d')]){_0x53ebd1=ut[_0xe7ba('0x9e')](_0x4c0d12,0xf,_0xe7ba('0x9f'));rpcDb[_0xe7ba('0x8f')](_0x53ebd1,_0xe7ba('0xc1'));}else{if(_0x4c0d12[_0xe7ba('0xbc')]>=_0x3c2b1c[_0xe7ba('0xc2')]){rpcDb[_0xe7ba('0x8f')](_0x4c0d12,_0xe7ba('0xc0'));}else{rpcDb[_0xe7ba('0xa2')](ut[_0xe7ba('0xa3')](_0x4c0d12,_0xe7ba('0xbc'),_0x3c2b1c[_0xe7ba('0xc3')]),_0x4c0d12[_0xe7ba('0xa5')],_0x4c0d12[_0xe7ba('0xa6')]);}}break;case _0xe7ba('0xc4'):_0x3c2b1c[_0xe7ba('0xc5')]+=0x1;_0x4c0d12['countnoanswerretry']+=0x1;_0x4c0d12['countglobal']=ut['totalGlobal'](_0x4c0d12);ut[_0xe7ba('0x89')](_0x4c0d12,0x3,_0xe7ba('0xc6'));ami['emit']('custom:agentnoanswer',ut[_0xe7ba('0x9a')](_0x4c0d12,_0xe7ba('0xc7')));rpcDb['createCustomerHistory'](_0x4c0d12,_0xe7ba('0xc8'));if(ut['totalGlobal'](_0x4c0d12)>=_0x3c2b1c['dialGlobalMaxRetry']){_0x53ebd1=ut['cloneAction'](_0x4c0d12,0xf,_0xe7ba('0x9f'));rpcDb[_0xe7ba('0x8f')](_0x53ebd1,_0xe7ba('0xc9'));}else{if(_0x4c0d12[_0xe7ba('0xca')]>=_0x3c2b1c['dialNoAnswerMaxRetry']){rpcDb[_0xe7ba('0x8f')](_0x4c0d12,_0xe7ba('0xc8'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x4c0d12,_0xe7ba('0xca'),_0x3c2b1c[_0xe7ba('0xcb')]),_0x4c0d12[_0xe7ba('0xa5')],_0x4c0d12[_0xe7ba('0xa6')]);}}break;case _0xe7ba('0xcc'):_0x3c2b1c['outboundCongestionCallsDay']+=0x1;_0x4c0d12[_0xe7ba('0xcd')]+=0x1;_0x4c0d12[_0xe7ba('0x99')]=ut[_0xe7ba('0x9c')](_0x4c0d12);ut[_0xe7ba('0x89')](_0x4c0d12,0x8,_0xe7ba('0xce'));ami[_0xe7ba('0x24')](_0xe7ba('0xcf'),ut[_0xe7ba('0x9a')](_0x4c0d12,_0xe7ba('0xd0')));rpcDb[_0xe7ba('0x8d')](_0x4c0d12,_0xe7ba('0xd1'));if(ut[_0xe7ba('0x9c')](_0x4c0d12)>=_0x3c2b1c[_0xe7ba('0x9d')]){_0x53ebd1=ut[_0xe7ba('0x9e')](_0x4c0d12,0xf,_0xe7ba('0x9f'));rpcDb[_0xe7ba('0x8f')](_0x53ebd1,_0xe7ba('0xd2'));}else{if(_0x4c0d12[_0xe7ba('0xcd')]>=_0x3c2b1c[_0xe7ba('0xd3')]){rpcDb[_0xe7ba('0x8f')](_0x4c0d12,_0xe7ba('0xd1'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x4c0d12,'countcongestionretry',_0x3c2b1c[_0xe7ba('0xc3')]),_0x4c0d12[_0xe7ba('0xa5')],_0x4c0d12[_0xe7ba('0xa6')]);}}break;case _0xe7ba('0xd4'):_0x3c2b1c[_0xe7ba('0x3d')]+=0x1;_0x4c0d12['countagentrejectretry']+=0x1;_0x4c0d12['countglobal']=ut[_0xe7ba('0x9c')](_0x4c0d12);ut['logCustomer'](_0x4c0d12,0x14,_0xe7ba('0xd5'));ami[_0xe7ba('0x24')](_0xe7ba('0xd6'),ut[_0xe7ba('0x9a')](_0x4c0d12,_0xe7ba('0xd7')));rpcDb[_0xe7ba('0x8d')](_0x4c0d12,_0xe7ba('0xd8'));if(ut[_0xe7ba('0x9c')](_0x4c0d12)>=_0x3c2b1c['dialGlobalMaxRetry']){_0x53ebd1=ut[_0xe7ba('0x9e')](_0x4c0d12,0x14,_0xe7ba('0xd5'));rpcDb[_0xe7ba('0x8f')](_0x53ebd1,'[callProgressDetectingCustomer][logAgentReject]');}else{if(_0x4c0d12['countagentrejectretry']>=_0x3c2b1c[_0xe7ba('0xd9')]){rpcDb[_0xe7ba('0x8f')](_0x4c0d12,_0xe7ba('0xda'));}else{rpcDb[_0xe7ba('0xa2')](ut['scheduledAt'](_0x4c0d12,_0xe7ba('0xdb'),_0x3c2b1c[_0xe7ba('0xdc')]),_0x4c0d12[_0xe7ba('0xa5')],_0x4c0d12[_0xe7ba('0xa6')]);}}break;case _0xe7ba('0xdd'):_0x3c2b1c[_0xe7ba('0xde')]+=0x1;_0x4c0d12[_0xe7ba('0xdf')]+=0x1;_0x4c0d12[_0xe7ba('0x99')]=ut[_0xe7ba('0x9c')](_0x4c0d12);ut[_0xe7ba('0x89')](_0x4c0d12,0xb,_0xe7ba('0xe0'));rpcDb[_0xe7ba('0x8d')](_0x4c0d12,_0xe7ba('0xe1'));if(ut[_0xe7ba('0x9c')](_0x4c0d12)>=_0x3c2b1c[_0xe7ba('0x9d')]){_0x53ebd1=ut[_0xe7ba('0x9e')](_0x4c0d12,0xf,'Global');rpcDb['createCustomerFinal'](_0x53ebd1,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x4c0d12[_0xe7ba('0xe2')]>=_0x3c2b1c[_0xe7ba('0xe3')]){rpcDb[_0xe7ba('0x8f')](_0x4c0d12,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb['rescheduleContact'](ut[_0xe7ba('0xa3')](_0x4c0d12,_0xe7ba('0xdf'),_0x3c2b1c[_0xe7ba('0xe4')]),_0x4c0d12[_0xe7ba('0xa5')],_0x4c0d12[_0xe7ba('0xa6')]);}}break;case'18':_0x3c2b1c[_0xe7ba('0x3e')]+=0x1;_0x4c0d12[_0xe7ba('0xe5')]+=0x1;_0x4c0d12['countglobal']=ut[_0xe7ba('0x9c')](_0x4c0d12);ut[_0xe7ba('0x89')](_0x4c0d12,0x12,_0x2ee567[_0xe7ba('0xe6')]||_0x2ee567[_0xe7ba('0xe7')]);ami['emit'](_0xe7ba('0xe8'),ut['buildObj'](_0x4c0d12,_0xe7ba('0xe9')));rpcDb[_0xe7ba('0x8d')](_0x4c0d12,_0xe7ba('0xea'));if(ut[_0xe7ba('0x9c')](_0x4c0d12)>=_0x3c2b1c[_0xe7ba('0x9d')]){_0x53ebd1=ut[_0xe7ba('0x9e')](_0x4c0d12,0xf,_0xe7ba('0x9f'));rpcDb[_0xe7ba('0x8f')](_0x53ebd1,_0xe7ba('0xea'));}else{rpcDb[_0xe7ba('0x8f')](_0x4c0d12,_0xe7ba('0xea'));}delete this[_0xe7ba('0x16')][_0x2ee567[_0xe7ba('0xa7')]];break;case'19':_0x3c2b1c['outboundUnknownCallsDay']+=0x1;_0x4c0d12[_0xe7ba('0x99')]=ut[_0xe7ba('0x9c')](_0x4c0d12);ut[_0xe7ba('0x89')](_0x4c0d12,0x13,_0x2ee567[_0xe7ba('0xe6')]||_0x2ee567['dialstatus']);ami[_0xe7ba('0x24')]('custom:amd',ut['buildObj'](_0x4c0d12,_0xe7ba('0xe9')));rpcDb[_0xe7ba('0x8d')](_0x4c0d12,_0xe7ba('0xeb'));if(ut[_0xe7ba('0x9c')](_0x4c0d12)>=_0x3c2b1c[_0xe7ba('0x9d')]){_0x53ebd1=ut[_0xe7ba('0x9e')](_0x4c0d12,0xf,_0xe7ba('0x9f'));rpcDb[_0xe7ba('0x8f')](_0x53ebd1,'[callProgressDetectingCustomer][machine]');}else{rpcDb[_0xe7ba('0x8f')](_0x4c0d12,_0xe7ba('0xeb'));}delete this['actions'][_0x2ee567[_0xe7ba('0xa7')]];break;default:if(_0x4c0d12[_0xe7ba('0x6c')]){ut[_0xe7ba('0x77')](_0x3c2b1c,_0xe7ba('0xec'));ut[_0xe7ba('0x78')](_0xe7ba('0xed')+_0x3c2b1c[_0xe7ba('0x27')],_0x2ee567);}_0x3c2b1c[_0xe7ba('0x3e')]+=0x1;_0x4c0d12['countglobal']=ut[_0xe7ba('0x9c')](_0x4c0d12);ut[_0xe7ba('0x89')](_0x4c0d12,0xc,_0x2ee567[_0xe7ba('0xe6')]||_0x2ee567[_0xe7ba('0xe7')]);rpcDb[_0xe7ba('0x8d')](_0x4c0d12,_0xe7ba('0xee'));if(ut[_0xe7ba('0x9c')](_0x4c0d12)>=_0x3c2b1c[_0xe7ba('0x9d')]){_0x53ebd1=ut[_0xe7ba('0x9e')](_0x4c0d12,0xf,_0xe7ba('0x9f'));rpcDb[_0xe7ba('0x8f')](_0x53ebd1,_0xe7ba('0xef'));}else{rpcDb[_0xe7ba('0x8f')](_0x4c0d12,_0xe7ba('0xef'));}delete this[_0xe7ba('0x16')][_0x2ee567[_0xe7ba('0xa7')]];}if(!(_0x4c0d12[_0xe7ba('0x6c')]&&_0xa6da9e==='16')){ut[_0xe7ba('0x75')](_0x3c2b1c,_0xe7ba('0xf0'));logger['info']('[originated][decrement][callProgressDetectingCustomer]',_0x4c0d12[_0xe7ba('0xab')],_0xe7ba('0xac'),_0x3c2b1c[_0xe7ba('0x27')],_0xe7ba('0xf1'),_0x3c2b1c[_0xe7ba('0x47')]);}if(_0xa6da9e!==_0xe7ba('0xa8')){delete this['actions'][_0x2ee567[_0xe7ba('0xa7')]];delete this[_0xe7ba('0x16')][_0x2ee567['destlinkedid']];}}};Preview['prototype']['callProgressDetectingAgent']=function(_0x2e1e57,_0xc70e27,_0xe43ddc){if(_['isUndefined'](_0xc70e27)&&_0xe7ba('0xf2')!==typeof _0xc70e27){return;}if(_[_0xe7ba('0xf3')](_0xe43ddc)&&_0xe7ba('0xf2')!==typeof _0xe43ddc){return;}switch(_0xe43ddc[_0xe7ba('0xf4')]){case'0':ut['logAgent'](_0x2e1e57,0x0,'NoSuchNumber');rpcDb['createAgentHistory'](_0x2e1e57,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut['logAgent'](_0x2e1e57,0x3,_0xe7ba('0xc6'));rpcDb[_0xe7ba('0xf5')](_0x2e1e57,_0xe7ba('0xf6'));break;case'5':ut['logAgent'](_0x2e1e57,0x5,'Busy');rpcDb['createAgentHistory'](_0x2e1e57,_0xe7ba('0xf7'));break;case'8':ut[_0xe7ba('0xf8')](_0x2e1e57,0x8,'Congestion');rpcDb['createAgentHistory'](_0x2e1e57,_0xe7ba('0xf9'));break;case'22':ut[_0xe7ba('0xf8')](_0x2e1e57,0x16,_0xe7ba('0xfa'));rpcDb[_0xe7ba('0xf5')](_0x2e1e57,_0xe7ba('0xfb'));break;default:ut[_0xe7ba('0xf8')](_0x2e1e57,0xc,_0xe43ddc[_0xe7ba('0xf4')]);rpcDb[_0xe7ba('0xf5')](_0x2e1e57,'[callProgressDetectingAgent][logCongestion]');}ut[_0xe7ba('0x75')](_0xc70e27,_0xe7ba('0xfc'));logger['info'](_0xe7ba('0xfd'),_0x2e1e57[_0xe7ba('0xab')],_0xe7ba('0xac'),_0xc70e27[_0xe7ba('0x27')],_0xe7ba('0xf1'),_0xc70e27['originated']);delete this['actions'][_0x2e1e57[_0xe7ba('0xab')]];};Preview['prototype'][_0xe7ba('0xfe')]=function(_0x5b8b21,_0x2cda32,_0x24ce3b,_0x5b2b3f,_0x1ae52f){var _0xe6617d=this;return new BPromise(function(_0x4407e0,_0x277b8a){if(_[_0xe7ba('0xff')](_0x2cda32)||_[_0xe7ba('0xff')](_0x2cda32[_0xe7ba('0x100')])||_['isNil'](_0x2cda32[_0xe7ba('0x100')]['phone'])||_[_0xe7ba('0xff')](_0x2cda32[_0xe7ba('0x6f')])){_0x277b8a(ut[_0xe7ba('0x46')](_0xe7ba('0x101'),_0x5b2b3f,_0x1ae52f));return;}var _0x1e8329=uuid['v4']();var _0x29f8f3=_0xe6617d['campaignsPreview'][_0x2cda32[_0xe7ba('0x69')][_0xe7ba('0x27')]];var _0x57e899=_0x24ce3b?_0xe6617d[_0xe7ba('0x17')][_0x24ce3b]['id']:undefined;_0xe6617d[_0xe7ba('0x16')][_0x1e8329]=new Action(_0x2cda32,_0x29f8f3,_0x1e8329,_0x24ce3b,_0x57e899);var _0x4a2b36=_0xe6617d[_0xe7ba('0x16')][_0x1e8329];_0x4a2b36[_0xe7ba('0xa5')]=_0x5b2b3f;_0x4a2b36[_0xe7ba('0xa6')]=_0x1ae52f;_0x4a2b36[_0xe7ba('0x102')]=_0x24ce3b;if(_[_0xe7ba('0x103')](_0x5b8b21)){_0xe6617d[_0xe7ba('0x104')](_0x4a2b36,_0x29f8f3,_0x2cda32,_0x24ce3b)[_0xe7ba('0x7c')](function(_0x4ebfa6){logger[_0xe7ba('0x53')](_0xe7ba('0x105'),_0xe7ba('0x106')+_0x4a2b36[_0xe7ba('0x6a')]+_0xe7ba('0x107')+_0x4a2b36['idContact'],JSON['stringify'](_0x4ebfa6));ami[_0xe7ba('0x24')](_0xe7ba('0x108'),ut['buildObj'](_0x4a2b36,_0xe7ba('0x109'),_0xe6617d[_0xe7ba('0x23')][_0x4a2b36[_0xe7ba('0x6a')]]));_0x4407e0(ut['message']('Calling'));})[_0xe7ba('0x73')](function(_0x277684){ut[_0xe7ba('0x5b')](_0xe7ba('0x10a'),_0x277684);_0x277b8a(ut[_0xe7ba('0x46')](_0xe7ba('0x10b'),_0x5b2b3f,_0x1ae52f));});}else{_0x29f8f3[_0xe7ba('0x36')]+=0x1;ut[_0xe7ba('0x10c')](_0x4a2b36);rpcDb[_0xe7ba('0x10d')](_0x4a2b36,_0xe7ba('0x10e'));delete _0xe6617d[_0xe7ba('0x16')][_0x1e8329];_0x277b8a(ut[_0xe7ba('0x46')](_0xe7ba('0x10f'),_0x5b2b3f,_0x1ae52f));}});};Preview['prototype'][_0xe7ba('0x93')]=function(_0x12de23){return!_[_0xe7ba('0xff')](_0x12de23)&&!_['isNil'](_0x12de23['name'])&&!_[_0xe7ba('0xff')](_0x12de23[_0xe7ba('0x4e')])&&_0x12de23[_0xe7ba('0x4e')]&&!_['isNil'](this[_0xe7ba('0x15')][util[_0xe7ba('0x55')]('SIP/%s',_0x12de23[_0xe7ba('0x27')])])&&!_[_0xe7ba('0xff')](this[_0xe7ba('0x15')][util[_0xe7ba('0x55')](_0xe7ba('0x110'),_0x12de23[_0xe7ba('0x27')])][_0xe7ba('0x71')])&&(this[_0xe7ba('0x15')][util[_0xe7ba('0x55')](_0xe7ba('0x110'),_0x12de23[_0xe7ba('0x27')])][_0xe7ba('0x71')]==='reachable'||this['trunks'][util[_0xe7ba('0x55')]('SIP/%s',_0x12de23['name'])][_0xe7ba('0x71')]===_0xe7ba('0x111'));};Preview[_0xe7ba('0xf')]['run']=function(_0x15b29c,_0x3a78a1){var _0x3b8c03=this;return new BPromise(function(_0x2e9c2e,_0x1f563b){_0x3b8c03[_0xe7ba('0x112')](_0x15b29c,_0x3a78a1)['then'](function(_0x1bdb1e){_0x2e9c2e(_[_0xe7ba('0x6d')](_0x1bdb1e,[_0xe7ba('0x46')]));})[_0xe7ba('0x73')](function(_0x52aa36){if(_0x52aa36[_0xe7ba('0x113')]){rpcDb[_0xe7ba('0x114')](_0x15b29c);}if(_0x52aa36[_0xe7ba('0x4e')]){rpcDb[_0xe7ba('0x86')](_0x15b29c);}_0x1f563b(_[_0xe7ba('0x6d')](_0x52aa36,[_0xe7ba('0x46')]));});});};Preview[_0xe7ba('0xf')][_0xe7ba('0x112')]=function(_0x3e574c,_0x4d094d){var _0x1cb032=this;return new BPromise(function(_0x51f37f,_0x14f746){var _0xcbd1b9,_0x1f8c9e;rpcDb['getContactPreview'](_0x3e574c)[_0xe7ba('0x7c')](function(_0x27ce76){if(!_[_0xe7ba('0xff')](_0x27ce76[0x0])){_0x1f8c9e=_0x27ce76[0x0][_0xe7ba('0x115')]?![]:!![];_0xcbd1b9=_0x27ce76[0x0][_0xe7ba('0x115')]?!![]:![];_0xcbd1b9=_0x4d094d?!![]:_0xcbd1b9;}var _0x1db4a2=_0x1cb032[_0xe7ba('0x116')](_0x27ce76);if(_0x1db4a2['isValid']){rpcDb[_0xe7ba('0x117')](_['pick'](_0x27ce76[0x0],[_0xe7ba('0x6f'),_0xe7ba('0x118')]))[_0xe7ba('0x7c')](function(_0x5e8020){_0x1cb032[_0xe7ba('0xfe')](_0x5e8020,_0x27ce76[0x0],_0x4d094d,_0x1f8c9e,_0xcbd1b9)[_0xe7ba('0x7c')](function(_0x26dc8e){_0x51f37f(_0x26dc8e);})[_0xe7ba('0x73')](function(_0x400502){_0x14f746(_0x400502);});})[_0xe7ba('0x73')](function(_0x5b19c){ut[_0xe7ba('0x5b')]('[Preview][checkIsBlackList]',_0x5b19c);_0x14f746(ut[_0xe7ba('0x46')](_0xe7ba('0x119'),_0x1f8c9e,_0xcbd1b9));});}else{_0x14f746(ut[_0xe7ba('0x46')](_0x1db4a2[_0xe7ba('0x46')],_0x1f8c9e,_0xcbd1b9));}})[_0xe7ba('0x73')](function(_0x209e82){ut['logger'](_0xe7ba('0x11a'),_0x209e82);_0x14f746(ut[_0xe7ba('0x46')](_0xe7ba('0x119'),![],!![]));});});};Preview['prototype'][_0xe7ba('0x116')]=function(_0x1ccb79){if(_[_0xe7ba('0xff')](_0x1ccb79)||_[_0xe7ba('0x103')](_0x1ccb79)||!_[_0xe7ba('0xff')](_0x1ccb79[0x0][_0xe7ba('0x81')])&&_[_0xe7ba('0xff')](_0x1ccb79[0x0]['Agent'][_0xe7ba('0x27')])){ut[_0xe7ba('0x5b')](_0xe7ba('0x11b'),_0x1ccb79);return{'isValid':![],'message':_0xe7ba('0x11c')};}var _0x365a82=this['campaignsPreview'][_0x1ccb79[0x0][_0xe7ba('0x69')][_0xe7ba('0x27')]];_0x365a82[_0xe7ba('0x46')]='ACTIVE';if(_['isNil'](_0x365a82)){ut[_0xe7ba('0x5b')]('[Preview][validateContact][Empty\x20Campaign]',_0x365a82);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this[_0xe7ba('0x93')](_0x365a82[_0xe7ba('0x4d')])){ut[_0xe7ba('0x5b')](_0xe7ba('0x11d'),_0xe7ba('0x11e')+_0x365a82[_0xe7ba('0x27')]+_0xe7ba('0x11f'));if(!this[_0xe7ba('0x93')](_0x365a82[_0xe7ba('0x94')])){ut[_0xe7ba('0x5b')](_0xe7ba('0x11d'),_0x365a82[_0xe7ba('0x27')]+_0xe7ba('0x120'));return{'isValid':![],'message':_0xe7ba('0x121')};}}if(!ut[_0xe7ba('0x92')](_0x365a82[_0xe7ba('0x2f')])){ut['logger'](_0xe7ba('0x122'),_0x365a82[_0xe7ba('0x27')]+_0xe7ba('0x123'));return{'isValid':![],'message':'campaign\x20Name:\x20'+_0x365a82[_0xe7ba('0x27')]+_0xe7ba('0x123')};}return{'isValid':!![],'message':_0xe7ba('0x124')};};Preview[_0xe7ba('0xf')][_0xe7ba('0x104')]=function(_0xa7f651,_0x1bbb94,_0x4bc357,_0x3fc744){var _0xc8d663=this;return new BPromise(function(_0x516116,_0x37a435){var _0x252280=_0xa7f651[_0xe7ba('0xab')];var _0xc32668=_0xc8d663['isTrunkReachable'](_0x1bbb94['Trunk'])?util[_0xe7ba('0x55')](_0xe7ba('0x125'),_0x1bbb94[_0xe7ba('0x4d')]['name'],_[_0xe7ba('0xff')](_0x1bbb94[_0xe7ba('0x34')])?'':_0x1bbb94[_0xe7ba('0x34')]['trim']()||'',_0x1bbb94[_0xe7ba('0x126')]>0x0?_0x4bc357[_0xe7ba('0x100')][_0xe7ba('0x127')][_0xe7ba('0x128')](_0x1bbb94[_0xe7ba('0x126')]):_0x4bc357[_0xe7ba('0x100')]['phone']):util[_0xe7ba('0x55')]('SIP/%s/%s%s',_[_0xe7ba('0xff')](_0x1bbb94['TrunkBackup'])?_0x1bbb94['Trunk'][_0xe7ba('0x27')]:_0x1bbb94[_0xe7ba('0x94')][_0xe7ba('0x27')],_['isNil'](_0x1bbb94['dialPrefix'])?'':_0x1bbb94[_0xe7ba('0x34')][_0xe7ba('0x129')]()||'',_0x1bbb94[_0xe7ba('0x126')]>0x0?_0x4bc357[_0xe7ba('0x100')][_0xe7ba('0x127')]['substring'](_0x1bbb94[_0xe7ba('0x126')]):_0x4bc357['Contact'][_0xe7ba('0x127')]);var _0x28bc82=_0xc8d663[_0xe7ba('0x93')](_0x1bbb94[_0xe7ba('0x4d')])?ut[_0xe7ba('0x12a')](_0x1bbb94[_0xe7ba('0x4d')][_0xe7ba('0x4f')],_0x1bbb94[_0xe7ba('0x31')],_0x1bbb94[_0xe7ba('0x12b')]>0x0?ut[_0xe7ba('0x12c')](_0x1bbb94['dialOriginateCallerIdNumber'],_0x1bbb94[_0xe7ba('0x12b')]):_0x1bbb94['dialOriginateCallerIdNumber']):ut[_0xe7ba('0x12a')](_[_0xe7ba('0xff')](_0x1bbb94[_0xe7ba('0x94')])?_0x1bbb94[_0xe7ba('0x4d')]['callerid']:_0x1bbb94[_0xe7ba('0x94')]['callerid'],_0x1bbb94[_0xe7ba('0x31')],_0x1bbb94[_0xe7ba('0x12b')]>0x0?ut['getCallerIdRandom'](_0x1bbb94[_0xe7ba('0x32')],_0x1bbb94[_0xe7ba('0x12b')]):_0x1bbb94['dialOriginateCallerIdNumber']);if(_0x28bc82){_0xa7f651[_0xe7ba('0x12d')]=ut[_0xe7ba('0x12e')](_0x28bc82);_0xa7f651[_0xe7ba('0x12f')]=ut[_0xe7ba('0x130')](_0x28bc82);}var _0x2b2514=ut['addVariables'](_0x1bbb94,_0x4bc357,_0xc32668,_0x28bc82,_0x252280,_0xa7f651);_[_0xe7ba('0x131')](_0xa7f651,ut['toLowerVariables'](_0x2b2514));_0xa7f651[_0xe7ba('0x87')]=moment()[_0xe7ba('0x55')](_0xe7ba('0x88'));ami[_0xe7ba('0x132')](ut[_0xe7ba('0x133')](_0xa7f651,_0x1bbb94,_0x2b2514,_0xa7f651['activeContact'],_0x3fc744))['then'](function(_0x4bc56b){_0x1bbb94['originated']+=0x1;logger[_0xe7ba('0x53')](_0xe7ba('0x134'),_0x252280,_0xe7ba('0xac'),_0x1bbb94[_0xe7ba('0x27')],'originated:\x20',_0x1bbb94[_0xe7ba('0x47')]);_0x516116(_0x4bc56b);})[_0xe7ba('0x73')](function(_0x2edc34){ut['logAgent'](_0xa7f651,0xe,_0xe7ba('0x135'));rpcDb['createAgentHistory'](_0xa7f651,'[originateFailure][logOriginateFailure]');_0x37a435(_0x2edc34);});});};Preview[_0xe7ba('0xf')][_0xe7ba('0x1e')]=function(_0x161590){if(this[_0xe7ba('0x16')][_0x161590[_0xe7ba('0xa7')]]){this[_0xe7ba('0x16')][_0x161590[_0xe7ba('0xa7')]][_0xe7ba('0x72')]=_0x161590['channel'];}};Preview['prototype'][_0xe7ba('0x136')]=function(_0x408e65){var _0x1af296=this;var _0x4b4349=this[_0xe7ba('0x16')][_0x408e65[_0xe7ba('0x137')]];if(_0x4b4349){if(_0x4b4349['lookAgent']&&this[_0xe7ba('0x17')][_0x4b4349['lookAgent']]){ut[_0xe7ba('0x138')](_0x4b4349,this[_0xe7ba('0x17')][_0x4b4349[_0xe7ba('0x102')]]['name'],this[_0xe7ba('0x17')][_0x4b4349[_0xe7ba('0x102')]]['id']);}var _0x33649f=_[_0xe7ba('0x139')](_0x4b4349);_0x33649f[_0xe7ba('0x13a')]=moment()[_0xe7ba('0x55')](_0xe7ba('0x88'));var _0x26421c=_0x1af296[_0xe7ba('0x23')][_0x4b4349['queue']];if(ut[_0xe7ba('0x13b')](_0x408e65[_0xe7ba('0x13c')])){if(_0x4b4349[_0xe7ba('0xa5')]){rpcDb[_0xe7ba('0x114')](_0x4b4349[_0xe7ba('0x13d')]);}if(_0x4b4349[_0xe7ba('0xa6')]){rpcDb['disableContact'](_0x4b4349[_0xe7ba('0x13d')]);}ami['emit'](_0xe7ba('0x13e'),ut[_0xe7ba('0x9a')](_0x4b4349,_0xe7ba('0x13f'),this[_0xe7ba('0x23')][_0x4b4349['queue']]));this[_0xe7ba('0x140')](_0x33649f,_0x26421c,_0x408e65);}else{_0x4b4349['starttime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');ut['logAgent'](_0x33649f,0x4,_0xe7ba('0x141'));rpcDb['createAgentHistory'](_0x33649f,_0xe7ba('0x142'));}}};Preview['prototype'][_0xe7ba('0x1b')]=function(_0x32c6b1){var _0x84157f=this;var _0xbc8cca=this[_0xe7ba('0x16')][_0x32c6b1[_0xe7ba('0xa7')]];var _0x59e67a;if(_0xbc8cca){_0x59e67a=this[_0xe7ba('0x23')][_0xbc8cca[_0xe7ba('0x6a')]];logger[_0xe7ba('0x53')](_0xe7ba('0x143'),_0x32c6b1[_0xe7ba('0xa7')],_0xe7ba('0xac'),_0x59e67a[_0xe7ba('0x27')],_0xe7ba('0x6b'),_0x59e67a[_0xe7ba('0x2c')]);}if(this[_0xe7ba('0x16')][_0x32c6b1['linkedid']]&&_0x32c6b1[_0xe7ba('0xa7')]!==_0x32c6b1['uniqueid']){if(_0x32c6b1[_0xe7ba('0x144')]==='16'&&this[_0xe7ba('0x16')][_0x32c6b1['linkedid']][_0xe7ba('0x6c')]){this[_0xe7ba('0x97')](_0x32c6b1,_0x32c6b1[_0xe7ba('0xa7')],_0x32c6b1[_0xe7ba('0x144')]);}else if(this[_0xe7ba('0x16')][_0x32c6b1['linkedid']][_0xe7ba('0x6c')]){logger[_0xe7ba('0x53')](_0xe7ba('0x145'),_0x32c6b1[_0xe7ba('0xa7')],_0x32c6b1[_0xe7ba('0x144')],_0xe7ba('0xac'),_0x59e67a[_0xe7ba('0x27')],_0xe7ba('0x6b'),_0x59e67a[_0xe7ba('0x2c')]);this[_0xe7ba('0x97')](_0x32c6b1,_0x32c6b1['linkedid'],_0x32c6b1['cause']);}}else if(_0xbc8cca&&_['isNil'](_0xbc8cca['statedesc'])&&_0x59e67a[_0xe7ba('0x146')]&&_0x32c6b1['linkedid']===_0x32c6b1['uniqueid']&&_[_0xe7ba('0xff')](_0x32c6b1['reason'])&&_0x32c6b1['cause']==='16'&&_0x32c6b1[_0xe7ba('0x147')]==='6'&&_['isUndefined'](_0xbc8cca[_0xe7ba('0x148')])){if(_0xbc8cca['unlockAgent']){rpcDb[_0xe7ba('0x114')](_0xbc8cca['idContact']);}if(_0xbc8cca[_0xe7ba('0xa6')]){rpcDb[_0xe7ba('0x86')](_0xbc8cca[_0xe7ba('0x13d')]);}_0x32c6b1['reason']='22';this[_0xe7ba('0x140')](_0xbc8cca,_0x59e67a,_0x32c6b1);}else if(_0xbc8cca&&_0xbc8cca[_0xe7ba('0x148')]){if(_0x32c6b1[_0xe7ba('0x144')]==='16'&&this['actions'][_0x32c6b1[_0xe7ba('0xa7')]][_0xe7ba('0x6c')]){logger['info'](_0xe7ba('0x149'),_0x32c6b1[_0xe7ba('0xa7')],_0x32c6b1[_0xe7ba('0x144')],'\x20Queue',_0x59e67a['name'],_0xe7ba('0x6b'),_0x59e67a[_0xe7ba('0x2c')]);this[_0xe7ba('0x97')](_0x32c6b1,_0x32c6b1[_0xe7ba('0xa7')],_0x32c6b1[_0xe7ba('0x144')]);}else if(this[_0xe7ba('0x16')][_0x32c6b1[_0xe7ba('0xa7')]][_0xe7ba('0x6c')]){logger[_0xe7ba('0x53')](_0xe7ba('0x145'),_0x32c6b1[_0xe7ba('0xa7')],_0x32c6b1[_0xe7ba('0x144')],'\x20Queue',_0x59e67a[_0xe7ba('0x27')],_0xe7ba('0x6b'),_0x59e67a[_0xe7ba('0x2c')]);this[_0xe7ba('0x97')](_0x32c6b1,_0x32c6b1[_0xe7ba('0xa7')],_0x32c6b1[_0xe7ba('0x144')]);}}};Preview[_0xe7ba('0xf')][_0xe7ba('0x14a')]=function(_0x52433a){if(this[_0xe7ba('0x16')][_0x52433a[_0xe7ba('0x14b')]]&&_0x52433a[_0xe7ba('0x14b')]!==_0x52433a[_0xe7ba('0x14c')]){this[_0xe7ba('0x97')](_0x52433a,_0x52433a[_0xe7ba('0x14b')],_0x52433a[_0xe7ba('0xe7')]);}};Preview[_0xe7ba('0xf')]['syncHangupRequest']=function(_0x35c32e){if(this[_0xe7ba('0x16')][_0x35c32e[_0xe7ba('0xa7')]]&&_0x35c32e[_0xe7ba('0xa7')]!==_0x35c32e['uniqueid']&&!this[_0xe7ba('0x16')][_0x35c32e[_0xe7ba('0xa7')]][_0xe7ba('0x6c')]){if(_0x35c32e[_0xe7ba('0x144')]==='1'){this['callProgressDetectingCustomer'](_0x35c32e,_0x35c32e['linkedid'],_0x35c32e[_0xe7ba('0x144')]);}}};Preview[_0xe7ba('0xf')]['addVariable']=function(_0x9471fb,_0x44d2f1,_0x121d5e){if(this[_0xe7ba('0x16')][_0x9471fb]){if(_[_0xe7ba('0xff')](this[_0xe7ba('0x16')][_0x9471fb]['variables'])){this[_0xe7ba('0x16')][_0x9471fb][_0xe7ba('0x14d')]={};}this[_0xe7ba('0x16')][_0x9471fb]['variables'][_0x44d2f1]=_0x121d5e;}};Preview[_0xe7ba('0xf')]['syncVarSet']=function(_0x39f1ce){try{if(!_[_0xe7ba('0xff')](_0x39f1ce)){if(ut[_0xe7ba('0x14e')](_[_0xe7ba('0x14f')](_0x39f1ce[_0xe7ba('0x150')])[0x0])){this[_0xe7ba('0x151')](_0x39f1ce[_0xe7ba('0xab')],_[_0xe7ba('0x14f')](_0x39f1ce['variable'])[0x0],_0x39f1ce[_0xe7ba('0x152')]);}}}catch(_0x435266){logger[_0xe7ba('0x153')]('[syncVarSet][Preview]',util[_0xe7ba('0x154')](_0x435266,{'showHidden':![],'depth':null}));}};Preview[_0xe7ba('0xf')][_0xe7ba('0x20')]=function(_0x35ff64){if(_0x35ff64){if(this['actions'][_0x35ff64['transfertargetlinkedid']]){this[_0xe7ba('0x16')][_0x35ff64['transfertargetlinkedid']]['transfer']=!![];}}};Preview[_0xe7ba('0xf')]['syncBlindTransfer']=function(_0x32aef0){if(_0x32aef0){if(this['actions'][_0x32aef0[_0xe7ba('0x155')]]){this['actions'][_0x32aef0[_0xe7ba('0x155')]][_0xe7ba('0x148')]=!![];}}};module['exports']=Preview;
\ No newline at end of file
+var _0xea4e=['[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','destlinkedid','isUndefined','object','reason','logAgent','createAgentHistory','NoAnswer','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','checkInBlack','Contact','Contact\x20is\x20undefined','lookAgent','isEmpty','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','Calling','[Preview][execCall][failure]','Call\x20failed','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','status','reachable','unmonitored','execRun','pick','unlockContact','recallme','validateContact','isValid','checkIsBlackList','Contact.phone','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','execCall','SIP/%s/%s%s','trim','dialCutDigit','phone','substring','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','getCallerId','extractCalleridName','originatecalleridnum','extractCalleridNumber','merge','toLowerVariables','Action','variablesAction','channelAgent','destconnectedlinenum','calleridnum','user:%s','user:agentconnect','actionid','logLookAgent','clone','response','idContact','custom:agentringnoanswer','callProgressDetectingAgent','Answer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','transfer','[syncHangup][talking][transfer]','destuniqueid','addVariable','variables','syncVarSet','keys','variable','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','util','bluebird','uuid','moment','ioredis','../../../config/logger','preview','actionPreview','./rpcDb','./action','./util/util','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','agents','originateresponse','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','dialend','syncDialEnd','newexten','syncNewExten','varset','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','name','strategy','loggedIn','sumDuration','sumHoldTime','talking','total','unmanaged','waiting','loggedInDb','dialActive','dialOriginateCallerIdName','dialPrefix','outboundAnswerAgiCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','message','originated','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','stringify','md5','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice:queue:%s','voice_queue_channel:remove','sendMessageOneNotActive','pTalking','available','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','syncCampaigns','clockClearZombieChannels','hasOwnProperty','dialMethod','booked','clearZombieChannels','recallMe','isNil','actions','Queue','queue','originated:\x20','dialAnswer','contactId','UserId','VoiceQueueId','ListId','channel','catch','updateOriginated','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','clearZombieChannel','agentReadyId','then','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','dialRecallInQueue','createBody','createCustomerHistory','logCustomer','RecallFailedTimeout','[getContactRecallMe]','setMessage','IsNotLoggedIn','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','NoSuchNumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','totalGlobal','dialGlobalMaxRetry','cloneAction','Global','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','ANSWER','format','responsetime','uniqueid','custom:agentconnect','connect','acw','custom:agentConnectPreview','complete','outboundAnswerCallsDay','answered','decrementTalkink','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','sumBillable','\x20Queue','pTalking:\x20','linkedid','BUSY','countbusyretry','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','dialBusyRetryFrequency','outboundNoAnswerCallsDay','countnoanswerretry','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','activeContact','CONGESTION','countcongestionretry','Congestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','countagentrejectretry','AgentReject','agentreject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedMaxRety','dialAbandonedRetryFrequency','countmachineretry','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','cause-txt','[callProgressDetectingCustomer][machine]','[Dialer][decrementTalkink][no\x20Hangup][Preview]'];(function(_0xa92559,_0x1d2e45){var _0x502df8=function(_0x3321db){while(--_0x3321db){_0xa92559['push'](_0xa92559['shift']());}};_0x502df8(++_0x1d2e45);}(_0xea4e,0x1bc));var _0xeea4=function(_0x29638f,_0x5dfb8a){_0x29638f=_0x29638f-0x0;var _0x4c2121=_0xea4e[_0x29638f];return _0x4c2121;};'use strict';var util=require(_0xeea4('0x0'));var _=require('lodash');var BPromise=require(_0xeea4('0x1'));var uuid=require(_0xeea4('0x2'));var moment=require(_0xeea4('0x3'));var md5=require('md5');var Redis=require(_0xeea4('0x4'));var config=require('../../../config/environment');var logger=require(_0xeea4('0x5'))(_0xeea4('0x6'));var loggerAction=require(_0xeea4('0x5'))(_0xeea4('0x7'));var ami=require('../ami');var rpcDb=require(_0xeea4('0x8'));var Action=require(_0xeea4('0x9'));var ut=require(_0xeea4('0xa'));config[_0xeea4('0xb')]=_[_0xeea4('0xc')](config['redis'],{'host':_0xeea4('0xd'),'port':0x18eb});var io=require(_0xeea4('0xe'))(new Redis(config[_0xeea4('0xb')]));var Sequence=function(){};Sequence[_0xeea4('0xf')][_0xeea4('0x10')]=function(_0x4fe53e){this['tail']=this[_0xeea4('0x11')]?this[_0xeea4('0x11')][_0xeea4('0x12')](_0x4fe53e):_0x4fe53e();};function Preview(_0x4eb2b4){this[_0xeea4('0x13')]=new Sequence();this[_0xeea4('0x14')]=_0x4eb2b4[_0xeea4('0x15')];this[_0xeea4('0x16')]=_0x4eb2b4[_0xeea4('0x16')];this['actions']={};this['agents']=_0x4eb2b4[_0xeea4('0x17')];this['clockClearZombieChannels']=0x0;ami['on'](_0xeea4('0x18'),this[_0xeea4('0x19')][_0xeea4('0x1a')](this));ami['on'](_0xeea4('0x1b'),this[_0xeea4('0x1c')]['bind'](this));ami['on'](_0xeea4('0x1d'),this['syncHangupRequest']['bind'](this));ami['on'](_0xeea4('0x1e'),this[_0xeea4('0x1f')]['bind'](this));ami['on'](_0xeea4('0x20'),this[_0xeea4('0x21')][_0xeea4('0x1a')](this));ami['on'](_0xeea4('0x22'),this['syncVarSet'][_0xeea4('0x1a')](this));ami['on'](_0xeea4('0x23'),this[_0xeea4('0x24')][_0xeea4('0x1a')](this));ami['on'](_0xeea4('0x25'),this[_0xeea4('0x26')][_0xeea4('0x1a')](this));this[_0xeea4('0x27')](this[_0xeea4('0x14')]);}function emit(_0x2e0239,_0x1a7d9a,_0x12d772){io['to'](_0x2e0239)[_0xeea4('0x28')](_0x1a7d9a,_0x12d772);}function emitCampaignPreview(_0x41da6d){if(_0x41da6d[_0xeea4('0x29')]===_0xeea4('0x2a')){var _0x12d061={'id':_0x41da6d['id'],'name':_0x41da6d[_0xeea4('0x2b')],'strategy':_0x41da6d[_0xeea4('0x2c')],'answered':_0x41da6d['answered'],'available':_0x41da6d['available'],'loggedIn':_0x41da6d[_0xeea4('0x2d')],'pTalking':_0x41da6d['pTalking'],'sumBillable':_0x41da6d['sumBillable'],'sumDuration':_0x41da6d[_0xeea4('0x2e')],'sumHoldTime':_0x41da6d[_0xeea4('0x2f')]||0x0,'talking':_0x41da6d[_0xeea4('0x30')],'total':_0x41da6d[_0xeea4('0x31')],'type':_0x41da6d['type'],'unmanaged':_0x41da6d[_0xeea4('0x32')],'abandoned':_0x41da6d['abandoned'],'waiting':_0x41da6d[_0xeea4('0x33')],'loggedInDb':_0x41da6d[_0xeea4('0x34')],'dialActive':_0x41da6d[_0xeea4('0x35')],'dialMethod':_0x41da6d['dialMethod'],'dialOriginateCallerIdName':_0x41da6d[_0xeea4('0x36')],'dialOriginateCallerIdNumber':_0x41da6d['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x41da6d['dialOriginateTimeout'],'dialPrefix':_0x41da6d[_0xeea4('0x37')],'outboundAnswerAgiCallsDay':_0x41da6d[_0xeea4('0x38')],'outboundAnswerCallsDay':_0x41da6d['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x41da6d[_0xeea4('0x39')],'outboundBusyCallsDay':_0x41da6d[_0xeea4('0x3a')],'outboundCongestionCallsDay':_0x41da6d[_0xeea4('0x3b')],'outboundDropCallsDayACS':_0x41da6d[_0xeea4('0x3c')],'outboundDropCallsDayCallersExit':_0x41da6d[_0xeea4('0x3d')],'outboundDropCallsDayTimeout':_0x41da6d[_0xeea4('0x3e')],'outboundNoAnswerCallsDay':_0x41da6d['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x41da6d[_0xeea4('0x3f')],'outboundOriginateFailureCallsDay':_0x41da6d[_0xeea4('0x40')],'outboundReCallsDay':_0x41da6d[_0xeea4('0x41')],'outboundRejectCallsDay':_0x41da6d[_0xeea4('0x42')],'outboundUnknownCallsDay':_0x41da6d[_0xeea4('0x43')],'outboundAbandonedCallsDay':_0x41da6d[_0xeea4('0x44')],'predictiveIntervalAnsweredCalls':_0x41da6d[_0xeea4('0x45')],'predictiveIntervalAvgHoldtime':_0x41da6d[_0xeea4('0x46')],'predictiveIntervalAvgTalktime':_0x41da6d[_0xeea4('0x47')],'predictiveIntervalDroppedCallsCallersExit':_0x41da6d[_0xeea4('0x48')],'predictiveIntervalDroppedCallsTimeout':_0x41da6d[_0xeea4('0x49')],'predictiveIntervalErlangCalls':_0x41da6d[_0xeea4('0x4a')],'predictiveIntervalErlangCallsDroppedCalls':_0x41da6d['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x41da6d['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x41da6d[_0xeea4('0x4b')],'predictiveIntervalPauses':_0x41da6d['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x41da6d[_0xeea4('0x4c')],'predictiveIntervalTotalCalls':_0x41da6d['predictiveIntervalTotalCalls'],'message':_0x41da6d[_0xeea4('0x4d')],'originated':_0x41da6d[_0xeea4('0x4e')],'erlangCalls':_0x41da6d['erlangCalls'],'erlangCallToSecond':_0x41da6d[_0xeea4('0x4f')],'erlangAbandonmentRate':_0x41da6d[_0xeea4('0x50')],'erlangBusyFactor':_0x41da6d[_0xeea4('0x51')],'startPredictive':_0x41da6d[_0xeea4('0x52')],'startProgressive':_0x41da6d[_0xeea4('0x53')]};if(_0x41da6d[_0xeea4('0x54')]){_0x12d061[_0xeea4('0x54')]={'id':_0x41da6d[_0xeea4('0x54')]['id'],'name':_0x41da6d[_0xeea4('0x54')][_0xeea4('0x2b')],'active':_0x41da6d[_0xeea4('0x54')][_0xeea4('0x55')],'callerid':_0x41da6d['Trunk'][_0xeea4('0x56')]};}if(_0x41da6d[_0xeea4('0x57')]){_0x12d061[_0xeea4('0x57')]={'id':_0x41da6d[_0xeea4('0x57')]['id'],'name':_0x41da6d[_0xeea4('0x57')][_0xeea4('0x2b')]};}var _0x4120f9=md5(JSON[_0xeea4('0x58')](_0x12d061));if(_0x41da6d['md5']!==_0x4120f9){_0x41da6d[_0xeea4('0x59')]=_0x4120f9;emit(util['format']('voice:queue:%s',_0x12d061[_0xeea4('0x2b')]),_0xeea4('0x5a'),_0x12d061);}}}function emitVoiceQueueChannelRemove(_0x4fba43){logger[_0xeea4('0x5b')](_0xeea4('0x5c'),JSON[_0xeea4('0x58')](_0x4fba43));emit(util['format'](_0xeea4('0x5d'),_0x4fba43[_0xeea4('0x2b')]),_0xeea4('0x5e'),_0x4fba43);io[_0xeea4('0x28')]('voice_queue_presence:remove',_0x4fba43);}function notSendMessagesQueue(_0x43ec5c){if(_0x43ec5c[_0xeea4('0x5f')]){if(_0x43ec5c[_0xeea4('0x4e')]===0x0&&_0x43ec5c[_0xeea4('0x60')]===0x0){_0x43ec5c[_0xeea4('0x5f')]=![];_0x43ec5c[_0xeea4('0x61')]=0x0;_0x43ec5c['paused']=0x0;_0x43ec5c[_0xeea4('0x4d')]=_0xeea4('0x62');ut[_0xeea4('0x63')](_0xeea4('0x64'),_0x43ec5c[_0xeea4('0x2b')]+'\x20is\x20not\x20active');}else{_0x43ec5c['message']=_0xeea4('0x65');ut[_0xeea4('0x63')](_0xeea4('0x64'),_0x43ec5c[_0xeea4('0x2b')]+'\x20is\x20disactive');}emitCampaignPreview(_0x43ec5c);}}Preview[_0xeea4('0xf')][_0xeea4('0x27')]=function(){var _0x1c1eb0=this;setInterval(function(){_0x1c1eb0[_0xeea4('0x66')]();},0x7cf);};Preview[_0xeea4('0xf')]['syncCampaigns']=function(){var _0x223797=this[_0xeea4('0x14')];this[_0xeea4('0x67')]+=0x1;for(var _0x178c67 in _0x223797){if(_0x223797[_0xeea4('0x68')](_0x178c67)&&(_0x223797[_0x178c67][_0xeea4('0x69')]===_0xeea4('0x6')||_0x223797[_0x178c67][_0xeea4('0x69')]===_0xeea4('0x6a'))&&_0x223797[_0x178c67][_0xeea4('0x29')]===_0xeea4('0x2a')){if(this['clockClearZombieChannels']>0x7){this[_0xeea4('0x67')]=0x0;this[_0xeea4('0x6b')]();}}if(_0x223797[_0xeea4('0x68')](_0x178c67)&&_0x223797[_0x178c67][_0xeea4('0x69')]===_0xeea4('0x6')&&_0x223797[_0x178c67][_0xeea4('0x29')]===_0xeea4('0x2a')){if(_0x223797[_0x178c67][_0xeea4('0x35')]){this['setMessage'](_0x223797[_0x178c67]);this[_0xeea4('0x6c')](_0x223797[_0x178c67]);}else{notSendMessagesQueue(_0x223797[_0x178c67]);}}}};Preview['prototype']['clearZombieChannel']=function(_0x18c974){var _0x160459=this;this[_0xeea4('0x13')]['enqueue'](function(){if(!_[_0xeea4('0x6d')](_0x160459[_0xeea4('0x6e')][_0x18c974])){loggerAction[_0xeea4('0x5b')]('[clearZombieChannels][talking]',_0x18c974,_0xeea4('0x6f'),_0x160459[_0xeea4('0x6e')][_0x18c974][_0xeea4('0x70')],_0xeea4('0x71'),JSON['stringify'](_0x160459[_0xeea4('0x14')][_0x160459[_0xeea4('0x6e')][_0x18c974][_0xeea4('0x70')]]['originated']),'pTalking:\x20',JSON['stringify'](_0x160459[_0xeea4('0x14')][_0x160459[_0xeea4('0x6e')][_0x18c974][_0xeea4('0x70')]][_0xeea4('0x60')]),JSON['stringify'](_0x160459[_0xeea4('0x6e')][_0x18c974][_0xeea4('0x72')]),JSON[_0xeea4('0x58')](_['pick'](_0x160459['actions'][_0x18c974],[_0xeea4('0x73'),_0xeea4('0x74'),_0xeea4('0x75'),_0xeea4('0x76')])));return ami['Action']({'action':'status','channel':_0x160459[_0xeea4('0x6e')][_0x18c974][_0xeea4('0x77')]})[_0xeea4('0x78')](function(_0x27ca6f){if(_0x27ca6f[_0xeea4('0x4d')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x160459[_0xeea4('0x6e')][_0x18c974]){ut[_0xeea4('0x79')](_0x160459[_0xeea4('0x14')][_0x160459[_0xeea4('0x6e')][_0x18c974][_0xeea4('0x70')]],'[clearZombieChannel]');if(_0x160459[_0xeea4('0x6e')][_0x18c974][_0xeea4('0x72')]===!![]){ut['decrementTalkink'](_0x160459[_0xeea4('0x14')][_0x160459['actions'][_0x18c974][_0xeea4('0x70')]],_0xeea4('0x7a'));ut[_0xeea4('0x7b')](_0xeea4('0x7c')+_0x18c974,_0x160459[_0xeea4('0x6e')][_0x18c974][_0xeea4('0x70')]);}ut[_0xeea4('0x7b')](_0xeea4('0x7d')+_0x18c974,_0x160459['actions'][_0x18c974][_0xeea4('0x70')]);delete _0x160459['actions'][_0x18c974];}},0x2328);}});}});};Preview[_0xeea4('0xf')][_0xeea4('0x6b')]=function(){var _0x1bd40e=this;loggerAction[_0xeea4('0x5b')](_0xeea4('0x7e'),_[_0xeea4('0x7f')](this[_0xeea4('0x6e')]));for(var _0x4cf861 in this[_0xeea4('0x6e')]){if(_0x1bd40e[_0xeea4('0x6e')]['hasOwnProperty'](_0x4cf861)){_0x1bd40e[_0xeea4('0x80')](_0x4cf861);}}};Preview[_0xeea4('0xf')][_0xeea4('0x6c')]=function(_0x1b3092){var _0x1efc91=this;rpcDb['getContactRecallMe'](_0x1b3092['id'],ut[_0xeea4('0x81')](this[_0xeea4('0x17')]))[_0xeea4('0x82')](function(_0x399a9a){if(!_[_0xeea4('0x6d')](_0x399a9a)){for(var _0x37797a=0x0;_0x37797a<_0x399a9a[_0xeea4('0x83')];_0x37797a+=0x1){if(ut[_0xeea4('0x84')](_0x399a9a[_0x37797a][_0xeea4('0x85')])<_0x1b3092[_0xeea4('0x86')]*0x3c){if(_0x399a9a[_0x37797a][_0xeea4('0x87')]&&!_0x399a9a[_0x37797a][_0xeea4('0x87')][_0xeea4('0x88')]){_0x1efc91['run'](_0x399a9a[_0x37797a]['id'])[_0xeea4('0x82')](ut[_0xeea4('0x89')](_0xeea4('0x8a')))[_0xeea4('0x78')](ut[_0xeea4('0x89')](_0xeea4('0x8a')));}else{rpcDb[_0xeea4('0x8b')](_0x399a9a[_0x37797a]['id']);}}else{var _0x5453fe=new Action(_0x399a9a[_0x37797a],_0x1b3092);_0x5453fe[_0xeea4('0x8c')]=moment()['format'](_0xeea4('0x8d'));_0x1b3092[_0xeea4('0x41')]+=0x1;ut['logCustomer'](_0x5453fe,0x17,'RecallInQueue');if(_0x1b3092[_0xeea4('0x8e')]){rpcDb['rescheduleContactInQueue'](ut[_0xeea4('0x8f')](_0x399a9a[_0x37797a]));rpcDb[_0xeea4('0x90')](_0x5453fe,'[HistoryDialRecallInQueue][historyCatch]');}else{ut[_0xeea4('0x91')](_0x5453fe,0x16,_0xeea4('0x92'));rpcDb['createCustomerHistory'](_0x5453fe,'[HistoryRecallClose]');rpcDb['createCustomerFinal'](_0x5453fe,'[HistoryRecallClose]');}}}}})[_0xeea4('0x78')](ut[_0xeea4('0x89')](_0xeea4('0x93')));};Preview['prototype'][_0xeea4('0x94')]=function(_0x48b9a9){_0x48b9a9['sendMessageOneNotActive']=!![];if(ut[_0xeea4('0x95')](_0x48b9a9[_0xeea4('0x2d')])){_0x48b9a9[_0xeea4('0x4d')]=_0xeea4('0x96');}else if(!ut[_0xeea4('0x97')](_0x48b9a9[_0xeea4('0x35')])){_0x48b9a9[_0xeea4('0x4d')]='NOT_ACTIVE';}else if(!this[_0xeea4('0x98')](_0x48b9a9[_0xeea4('0x54')])){if(!this[_0xeea4('0x98')](_0x48b9a9[_0xeea4('0x99')])){_0x48b9a9[_0xeea4('0x4d')]=_0xeea4('0x9a');}else{_0x48b9a9[_0xeea4('0x4d')]=_0xeea4('0x9b');}}else{_0x48b9a9['message']='ACTIVE';}emitCampaignPreview(_0x48b9a9);};Preview['prototype'][_0xeea4('0x9c')]=function(_0x1abee1,_0x39bb98,_0x151e4d){var _0x999ccb=this;var _0x4b26c2=this[_0xeea4('0x6e')][_0x39bb98];var _0x193ec2=this[_0xeea4('0x14')][_0x4b26c2[_0xeea4('0x70')]];var _0x4e5f9b;if(_0x193ec2){switch(_0x151e4d){case'1':_0x193ec2[_0xeea4('0x3f')]+=0x1;_0x4b26c2[_0xeea4('0x9d')]+=0x1;_0x4b26c2[_0xeea4('0x9e')]=ut['totalGlobal'](_0x4b26c2);ut['logCustomer'](_0x4b26c2,0x0,_0xeea4('0x9f'));ami[_0xeea4('0x28')]('custom:agentnosuchnumber',ut[_0xeea4('0xa0')](_0x4b26c2,_0xeea4('0xa1')));rpcDb['createCustomerHistory'](_0x4b26c2,_0xeea4('0xa2'));if(ut[_0xeea4('0xa3')](_0x4b26c2)>=_0x193ec2[_0xeea4('0xa4')]){_0x4e5f9b=ut[_0xeea4('0xa5')](_0x4b26c2,0xf,_0xeea4('0xa6'));rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xa8'));}else{if(_0x4b26c2[_0xeea4('0x9d')]>=_0x193ec2[_0xeea4('0xa9')]){rpcDb[_0xeea4('0xa7')](_0x4b26c2,_0xeea4('0xa8'));}else{rpcDb[_0xeea4('0xaa')](ut[_0xeea4('0xab')](_0x4b26c2,_0xeea4('0x9d'),_0x193ec2[_0xeea4('0xac')]),_0x4b26c2[_0xeea4('0xad')],_0x4b26c2['activeContact']);}}delete this['actions'][_0x1abee1['linkedid']];break;case _0xeea4('0xae'):var _0x3fad4d=moment()[_0xeea4('0xaf')](_0xeea4('0x8d'));_0x4b26c2[_0xeea4('0xb0')]=_0x3fad4d;_0x4b26c2['answertime']=_0x3fad4d;_0x4b26c2[_0xeea4('0x72')]=!![];_0x193ec2[_0xeea4('0x60')]+=0x1;logger[_0xeea4('0x5b')]('[syncHangup][talking][increment]',_0x4b26c2[_0xeea4('0xb1')],'\x20Queue',_0x193ec2['name'],'pTalking:\x20',_0x193ec2[_0xeea4('0x60')]);ami[_0xeea4('0x28')](_0xeea4('0xb2'),ut[_0xeea4('0xa0')](_0x4b26c2,_0xeea4('0xb3'),this[_0xeea4('0x14')][_0x4b26c2[_0xeea4('0x70')]]));if(_0x193ec2[_0xeea4('0xb4')]){ami[_0xeea4('0x28')](_0xeea4('0xb5'),ut['buildAcw'](_0x4b26c2));}break;case'16':ami[_0xeea4('0x28')]('custom:agentcomplete',ut[_0xeea4('0xa0')](_0x4b26c2,_0xeea4('0xb6'),this[_0xeea4('0x14')][_0x4b26c2[_0xeea4('0x70')]]));emitVoiceQueueChannelRemove(ut[_0xeea4('0xa0')](_0x4b26c2,_0xeea4('0xb6')));_0x193ec2[_0xeea4('0xb7')]+=0x1;_0x193ec2['total']+=0x1;_0x193ec2[_0xeea4('0xb8')]+=0x1;ut[_0xeea4('0xb9')](_0x193ec2,_0xeea4('0xba'));_0x4b26c2[_0xeea4('0x9e')]=ut[_0xeea4('0xa3')](_0x4b26c2);ut['logCustomer'](_0x4b26c2,0x4,'Answer');rpcDb['createCustomerHistory'](_0x4b26c2,_0xeea4('0xbb'));rpcDb[_0xeea4('0xa7')](_0x4b26c2,_0xeea4('0xbc'));rpcDb[_0xeea4('0xbd')](_0x4b26c2);_0x193ec2[_0xeea4('0x2e')]+=_0x4b26c2[_0xeea4('0xbe')];_0x193ec2[_0xeea4('0xbf')]+=_0x4b26c2[_0xeea4('0xbe')];logger[_0xeea4('0x5b')]('[syncHangup][talking][decrement]',_0x4b26c2['uniqueid'],_0xeea4('0xc0'),_0x193ec2[_0xeea4('0x2b')],_0xeea4('0xc1'),_0x193ec2[_0xeea4('0x60')]);delete this[_0xeea4('0x6e')][_0x1abee1[_0xeea4('0xc2')]];break;case _0xeea4('0xc3'):_0x193ec2['outboundBusyCallsDay']+=0x1;_0x4b26c2[_0xeea4('0xc4')]+=0x1;_0x4b26c2['countglobal']=ut[_0xeea4('0xa3')](_0x4b26c2);ut[_0xeea4('0x91')](_0x4b26c2,0x5,_0xeea4('0xc5'));ami[_0xeea4('0x28')](_0xeea4('0xc6'),ut['buildObj'](_0x4b26c2,_0xeea4('0xc7')));rpcDb[_0xeea4('0x90')](_0x4b26c2,_0xeea4('0xc8'));if(ut[_0xeea4('0xa3')](_0x4b26c2)>=_0x193ec2[_0xeea4('0xa4')]){_0x4e5f9b=ut[_0xeea4('0xa5')](_0x4b26c2,0xf,_0xeea4('0xa6'));rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xc9'));}else{if(_0x4b26c2[_0xeea4('0xc4')]>=_0x193ec2[_0xeea4('0xca')]){rpcDb[_0xeea4('0xa7')](_0x4b26c2,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb[_0xeea4('0xaa')](ut[_0xeea4('0xab')](_0x4b26c2,'countbusyretry',_0x193ec2[_0xeea4('0xcb')]),_0x4b26c2[_0xeea4('0xad')],_0x4b26c2['activeContact']);}}break;case'NOANSWER':_0x193ec2[_0xeea4('0xcc')]+=0x1;_0x4b26c2[_0xeea4('0xcd')]+=0x1;_0x4b26c2['countglobal']=ut[_0xeea4('0xa3')](_0x4b26c2);ut[_0xeea4('0x91')](_0x4b26c2,0x3,'NoAnswer');ami['emit'](_0xeea4('0xce'),ut[_0xeea4('0xa0')](_0x4b26c2,'noanswer'));rpcDb[_0xeea4('0x90')](_0x4b26c2,_0xeea4('0xcf'));if(ut[_0xeea4('0xa3')](_0x4b26c2)>=_0x193ec2[_0xeea4('0xa4')]){_0x4e5f9b=ut[_0xeea4('0xa5')](_0x4b26c2,0xf,_0xeea4('0xa6'));rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xd0'));}else{if(_0x4b26c2[_0xeea4('0xcd')]>=_0x193ec2[_0xeea4('0xd1')]){rpcDb['createCustomerFinal'](_0x4b26c2,_0xeea4('0xcf'));}else{rpcDb[_0xeea4('0xaa')](ut['scheduledAt'](_0x4b26c2,_0xeea4('0xcd'),_0x193ec2['dialNoAnswerRetryFrequency']),_0x4b26c2['unlockAgent'],_0x4b26c2[_0xeea4('0xd2')]);}}break;case _0xeea4('0xd3'):_0x193ec2[_0xeea4('0x3b')]+=0x1;_0x4b26c2[_0xeea4('0xd4')]+=0x1;_0x4b26c2[_0xeea4('0x9e')]=ut['totalGlobal'](_0x4b26c2);ut[_0xeea4('0x91')](_0x4b26c2,0x8,_0xeea4('0xd5'));ami['emit']('custom:agentcongestion',ut[_0xeea4('0xa0')](_0x4b26c2,_0xeea4('0xd6')));rpcDb[_0xeea4('0x90')](_0x4b26c2,_0xeea4('0xd7'));if(ut[_0xeea4('0xa3')](_0x4b26c2)>=_0x193ec2[_0xeea4('0xa4')]){_0x4e5f9b=ut[_0xeea4('0xa5')](_0x4b26c2,0xf,_0xeea4('0xa6'));rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xd8'));}else{if(_0x4b26c2[_0xeea4('0xd4')]>=_0x193ec2[_0xeea4('0xd9')]){rpcDb[_0xeea4('0xa7')](_0x4b26c2,_0xeea4('0xd7'));}else{rpcDb['rescheduleContact'](ut[_0xeea4('0xab')](_0x4b26c2,_0xeea4('0xd4'),_0x193ec2['dialBusyRetryFrequency']),_0x4b26c2['unlockAgent'],_0x4b26c2['activeContact']);}}break;case'CANCEL':_0x193ec2[_0xeea4('0x42')]+=0x1;_0x4b26c2[_0xeea4('0xda')]+=0x1;_0x4b26c2[_0xeea4('0x9e')]=ut[_0xeea4('0xa3')](_0x4b26c2);ut[_0xeea4('0x91')](_0x4b26c2,0x14,_0xeea4('0xdb'));ami['emit']('custom:agentreject',ut[_0xeea4('0xa0')](_0x4b26c2,_0xeea4('0xdc')));rpcDb[_0xeea4('0x90')](_0x4b26c2,'[syncHangupRequest][logAgentReject]');if(ut[_0xeea4('0xa3')](_0x4b26c2)>=_0x193ec2[_0xeea4('0xa4')]){_0x4e5f9b=ut[_0xeea4('0xa5')](_0x4b26c2,0x14,'AgentReject');rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xdd'));}else{if(_0x4b26c2[_0xeea4('0xda')]>=_0x193ec2[_0xeea4('0xde')]){rpcDb[_0xeea4('0xa7')](_0x4b26c2,'[callProgressDetectingCustomer][logAgentReject]');}else{rpcDb[_0xeea4('0xaa')](ut[_0xeea4('0xab')](_0x4b26c2,_0xeea4('0xda'),_0x193ec2[_0xeea4('0xdf')]),_0x4b26c2[_0xeea4('0xad')],_0x4b26c2[_0xeea4('0xd2')]);}}break;case _0xeea4('0xe0'):_0x193ec2[_0xeea4('0x44')]+=0x1;_0x4b26c2[_0xeea4('0xe1')]+=0x1;_0x4b26c2[_0xeea4('0x9e')]=ut[_0xeea4('0xa3')](_0x4b26c2);ut[_0xeea4('0x91')](_0x4b26c2,0xb,_0xeea4('0xe2'));rpcDb['createCustomerHistory'](_0x4b26c2,_0xeea4('0xe3'));if(ut['totalGlobal'](_0x4b26c2)>=_0x193ec2[_0xeea4('0xa4')]){_0x4e5f9b=ut[_0xeea4('0xa5')](_0x4b26c2,0xf,_0xeea4('0xa6'));rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xe3'));}else{if(_0x4b26c2['countabandonedetry']>=_0x193ec2[_0xeea4('0xe4')]){rpcDb[_0xeea4('0xa7')](_0x4b26c2,_0xeea4('0xe3'));}else{rpcDb[_0xeea4('0xaa')](ut[_0xeea4('0xab')](_0x4b26c2,_0xeea4('0xe1'),_0x193ec2[_0xeea4('0xe5')]),_0x4b26c2['unlockAgent'],_0x4b26c2['activeContact']);}}break;case'18':_0x193ec2[_0xeea4('0x43')]+=0x1;_0x4b26c2[_0xeea4('0xe6')]+=0x1;_0x4b26c2[_0xeea4('0x9e')]=ut[_0xeea4('0xa3')](_0x4b26c2);ut['logCustomer'](_0x4b26c2,0x12,_0x1abee1['cause-txt']||_0x1abee1[_0xeea4('0xe7')]);ami[_0xeea4('0x28')](_0xeea4('0xe8'),ut[_0xeea4('0xa0')](_0x4b26c2,_0xeea4('0xe9')));rpcDb['createCustomerHistory'](_0x4b26c2,_0xeea4('0xea'));if(ut[_0xeea4('0xa3')](_0x4b26c2)>=_0x193ec2[_0xeea4('0xa4')]){_0x4e5f9b=ut['cloneAction'](_0x4b26c2,0xf,_0xeea4('0xa6'));rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xea'));}else{rpcDb[_0xeea4('0xa7')](_0x4b26c2,'[callProgressDetectingCustomer][hangupInAMD]');}delete this[_0xeea4('0x6e')][_0x1abee1['linkedid']];break;case'19':_0x193ec2['outboundUnknownCallsDay']+=0x1;_0x4b26c2[_0xeea4('0x9e')]=ut[_0xeea4('0xa3')](_0x4b26c2);ut[_0xeea4('0x91')](_0x4b26c2,0x13,_0x1abee1[_0xeea4('0xeb')]||_0x1abee1[_0xeea4('0xe7')]);ami['emit'](_0xeea4('0xe8'),ut['buildObj'](_0x4b26c2,'amd'));rpcDb['createCustomerHistory'](_0x4b26c2,_0xeea4('0xec'));if(ut[_0xeea4('0xa3')](_0x4b26c2)>=_0x193ec2[_0xeea4('0xa4')]){_0x4e5f9b=ut[_0xeea4('0xa5')](_0x4b26c2,0xf,_0xeea4('0xa6'));rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xec'));}else{rpcDb[_0xeea4('0xa7')](_0x4b26c2,_0xeea4('0xec'));}delete this[_0xeea4('0x6e')][_0x1abee1[_0xeea4('0xc2')]];break;default:if(_0x4b26c2[_0xeea4('0x72')]){ut[_0xeea4('0xb9')](_0x193ec2,'[default]');ut['loggerError'](_0xeea4('0xed')+_0x193ec2[_0xeea4('0x2b')],_0x1abee1);}_0x193ec2[_0xeea4('0x43')]+=0x1;_0x4b26c2['countglobal']=ut[_0xeea4('0xa3')](_0x4b26c2);ut['logCustomer'](_0x4b26c2,0xc,_0x1abee1[_0xeea4('0xeb')]||_0x1abee1[_0xeea4('0xe7')]);rpcDb[_0xeea4('0x90')](_0x4b26c2,_0xeea4('0xee'));if(ut[_0xeea4('0xa3')](_0x4b26c2)>=_0x193ec2['dialGlobalMaxRetry']){_0x4e5f9b=ut['cloneAction'](_0x4b26c2,0xf,'Global');rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xef'));}else{rpcDb[_0xeea4('0xa7')](_0x4b26c2,_0xeea4('0xef'));}delete this[_0xeea4('0x6e')][_0x1abee1['linkedid']];}if(!(_0x4b26c2[_0xeea4('0x72')]&&_0x151e4d==='16')){ut[_0xeea4('0x79')](_0x193ec2,_0xeea4('0xf0'));logger[_0xeea4('0x5b')]('[originated][decrement][callProgressDetectingCustomer]',_0x4b26c2['uniqueid'],_0xeea4('0xc0'),_0x193ec2['name'],_0xeea4('0x71'),_0x193ec2[_0xeea4('0x4e')]);}if(_0x151e4d!=='ANSWER'){delete this[_0xeea4('0x6e')][_0x1abee1[_0xeea4('0xc2')]];delete this['actions'][_0x1abee1[_0xeea4('0xf1')]];}}};Preview[_0xeea4('0xf')]['callProgressDetectingAgent']=function(_0xff0655,_0xb5d74c,_0x1321a5){if(_[_0xeea4('0xf2')](_0xb5d74c)&&_0xeea4('0xf3')!==typeof _0xb5d74c){return;}if(_[_0xeea4('0xf2')](_0x1321a5)&&_0xeea4('0xf3')!==typeof _0x1321a5){return;}switch(_0x1321a5[_0xeea4('0xf4')]){case'0':ut[_0xeea4('0xf5')](_0xff0655,0x0,'NoSuchNumber');rpcDb[_0xeea4('0xf6')](_0xff0655,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut[_0xeea4('0xf5')](_0xff0655,0x3,_0xeea4('0xf7'));rpcDb['createAgentHistory'](_0xff0655,_0xeea4('0xf8'));break;case'5':ut[_0xeea4('0xf5')](_0xff0655,0x5,'Busy');rpcDb[_0xeea4('0xf6')](_0xff0655,_0xeea4('0xf9'));break;case'8':ut[_0xeea4('0xf5')](_0xff0655,0x8,_0xeea4('0xd5'));rpcDb[_0xeea4('0xf6')](_0xff0655,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut['logAgent'](_0xff0655,0x16,_0xeea4('0xfa'));rpcDb[_0xeea4('0xf6')](_0xff0655,_0xeea4('0xfb'));break;default:ut['logAgent'](_0xff0655,0xc,_0x1321a5[_0xeea4('0xf4')]);rpcDb[_0xeea4('0xf6')](_0xff0655,'[callProgressDetectingAgent][logCongestion]');}ut['updateOriginated'](_0xb5d74c,_0xeea4('0xfc'));logger[_0xeea4('0x5b')]('[originated][decrement][callProgressDetectingAgent]',_0xff0655[_0xeea4('0xb1')],_0xeea4('0xc0'),_0xb5d74c['name'],_0xeea4('0x71'),_0xb5d74c[_0xeea4('0x4e')]);delete this['actions'][_0xff0655[_0xeea4('0xb1')]];};Preview[_0xeea4('0xf')][_0xeea4('0xfd')]=function(_0x3fa161,_0x347956,_0x1b8a27,_0x3f80d2,_0x4a51cc){var _0x301d65=this;return new BPromise(function(_0x3b85ba,_0x3bc774){if(_[_0xeea4('0x6d')](_0x347956)||_[_0xeea4('0x6d')](_0x347956['Contact'])||_[_0xeea4('0x6d')](_0x347956[_0xeea4('0xfe')]['phone'])||_[_0xeea4('0x6d')](_0x347956[_0xeea4('0x75')])){_0x3bc774(ut[_0xeea4('0x4d')](_0xeea4('0xff'),_0x3f80d2,_0x4a51cc));return;}var _0x72e284=uuid['v4']();var _0x50f038=_0x301d65[_0xeea4('0x14')][_0x347956['Queue'][_0xeea4('0x2b')]];var _0x137ca1=_0x1b8a27?_0x301d65['agents'][_0x1b8a27]['id']:undefined;_0x301d65[_0xeea4('0x6e')][_0x72e284]=new Action(_0x347956,_0x50f038,_0x72e284,_0x1b8a27,_0x137ca1);var _0x58d4cc=_0x301d65['actions'][_0x72e284];_0x58d4cc[_0xeea4('0xad')]=_0x3f80d2;_0x58d4cc[_0xeea4('0xd2')]=_0x4a51cc;_0x58d4cc[_0xeea4('0x100')]=_0x1b8a27;if(_[_0xeea4('0x101')](_0x3fa161)){_0x301d65['execCall'](_0x58d4cc,_0x50f038,_0x347956,_0x1b8a27)[_0xeea4('0x82')](function(_0x3ce3c8){logger[_0xeea4('0x5b')](_0xeea4('0x102'),_0xeea4('0x103')+_0x58d4cc[_0xeea4('0x70')]+_0xeea4('0x104')+_0x58d4cc['idContact'],JSON[_0xeea4('0x58')](_0x3ce3c8));ami['emit']('custom:agentcalled',ut[_0xeea4('0xa0')](_0x58d4cc,'called',_0x301d65[_0xeea4('0x14')][_0x58d4cc[_0xeea4('0x70')]]));_0x3b85ba(ut[_0xeea4('0x4d')](_0xeea4('0x105')));})[_0xeea4('0x78')](function(_0x25bc91){ut[_0xeea4('0x63')](_0xeea4('0x106'),_0x25bc91);_0x3bc774(ut[_0xeea4('0x4d')](_0xeea4('0x107'),_0x3f80d2,_0x4a51cc));});}else{_0x50f038[_0xeea4('0x39')]+=0x1;ut['logBlacklist'](_0x58d4cc);rpcDb[_0xeea4('0x108')](_0x58d4cc,_0xeea4('0x109'));delete _0x301d65['actions'][_0x72e284];_0x3bc774(ut[_0xeea4('0x4d')](_0xeea4('0x10a'),_0x3f80d2,_0x4a51cc));}});};Preview[_0xeea4('0xf')][_0xeea4('0x98')]=function(_0x1a8969){return!_[_0xeea4('0x6d')](_0x1a8969)&&!_[_0xeea4('0x6d')](_0x1a8969[_0xeea4('0x2b')])&&!_[_0xeea4('0x6d')](_0x1a8969[_0xeea4('0x55')])&&_0x1a8969[_0xeea4('0x55')]&&!_[_0xeea4('0x6d')](this[_0xeea4('0x16')][util[_0xeea4('0xaf')](_0xeea4('0x10b'),_0x1a8969['name'])])&&!_['isNil'](this[_0xeea4('0x16')][util[_0xeea4('0xaf')](_0xeea4('0x10b'),_0x1a8969['name'])][_0xeea4('0x10c')])&&(this['trunks'][util[_0xeea4('0xaf')]('SIP/%s',_0x1a8969[_0xeea4('0x2b')])][_0xeea4('0x10c')]===_0xeea4('0x10d')||this[_0xeea4('0x16')][util[_0xeea4('0xaf')](_0xeea4('0x10b'),_0x1a8969[_0xeea4('0x2b')])]['status']===_0xeea4('0x10e'));};Preview[_0xeea4('0xf')]['run']=function(_0x13d4cf,_0x5b9c32){var _0x2068b6=this;return new BPromise(function(_0x17ea58,_0x20b037){_0x2068b6[_0xeea4('0x10f')](_0x13d4cf,_0x5b9c32)[_0xeea4('0x82')](function(_0x2a67c4){_0x17ea58(_[_0xeea4('0x110')](_0x2a67c4,[_0xeea4('0x4d')]));})[_0xeea4('0x78')](function(_0x4d79fe){if(_0x4d79fe['unlock']){rpcDb[_0xeea4('0x111')](_0x13d4cf);}if(_0x4d79fe[_0xeea4('0x55')]){rpcDb[_0xeea4('0x8b')](_0x13d4cf);}_0x20b037(_[_0xeea4('0x110')](_0x4d79fe,[_0xeea4('0x4d')]));});});};Preview[_0xeea4('0xf')]['execRun']=function(_0x53b22d,_0x4016f5){var _0x324510=this;return new BPromise(function(_0x38bff2,_0x4086f5){var _0x17e10a,_0x3648da;rpcDb['getContactPreview'](_0x53b22d)[_0xeea4('0x82')](function(_0x580c29){if(!_[_0xeea4('0x6d')](_0x580c29[0x0])){_0x3648da=_0x580c29[0x0][_0xeea4('0x112')]?![]:!![];_0x17e10a=_0x580c29[0x0]['recallme']?!![]:![];_0x17e10a=_0x4016f5?!![]:_0x17e10a;}var _0xf813c8=_0x324510[_0xeea4('0x113')](_0x580c29);if(_0xf813c8[_0xeea4('0x114')]){rpcDb[_0xeea4('0x115')](_[_0xeea4('0x110')](_0x580c29[0x0],[_0xeea4('0x75'),_0xeea4('0x116')]))[_0xeea4('0x82')](function(_0x2688f9){_0x324510[_0xeea4('0xfd')](_0x2688f9,_0x580c29[0x0],_0x4016f5,_0x3648da,_0x17e10a)['then'](function(_0x1526be){_0x38bff2(_0x1526be);})[_0xeea4('0x78')](function(_0x5af5a3){_0x4086f5(_0x5af5a3);});})[_0xeea4('0x78')](function(_0x12d42e){ut['logger'](_0xeea4('0x117'),_0x12d42e);_0x4086f5(ut['message'](_0xeea4('0x118'),_0x3648da,_0x17e10a));});}else{_0x4086f5(ut[_0xeea4('0x4d')](_0xf813c8[_0xeea4('0x4d')],_0x3648da,_0x17e10a));}})[_0xeea4('0x78')](function(_0x15fea9){ut[_0xeea4('0x63')](_0xeea4('0x119'),_0x15fea9);_0x4086f5(ut[_0xeea4('0x4d')](_0xeea4('0x118'),![],!![]));});});};Preview['prototype'][_0xeea4('0x113')]=function(_0x1c073b){if(_[_0xeea4('0x6d')](_0x1c073b)||_[_0xeea4('0x101')](_0x1c073b)||!_[_0xeea4('0x6d')](_0x1c073b[0x0][_0xeea4('0x87')])&&_[_0xeea4('0x6d')](_0x1c073b[0x0][_0xeea4('0x87')][_0xeea4('0x2b')])){ut[_0xeea4('0x63')](_0xeea4('0x11a'),_0x1c073b);return{'isValid':![],'message':_0xeea4('0x11b')};}var _0x3b5073=this[_0xeea4('0x14')][_0x1c073b[0x0]['Queue'][_0xeea4('0x2b')]];_0x3b5073[_0xeea4('0x4d')]=_0xeea4('0x9b');if(_[_0xeea4('0x6d')](_0x3b5073)){ut[_0xeea4('0x63')](_0xeea4('0x11c'),_0x3b5073);return{'isValid':![],'message':_0xeea4('0x11d')};}if(!this[_0xeea4('0x98')](_0x3b5073[_0xeea4('0x54')])){ut[_0xeea4('0x63')](_0xeea4('0x11e'),_0xeea4('0x11f')+_0x3b5073[_0xeea4('0x2b')]+'\x20Trunk\x20is\x20not\x20active');if(!this['isTrunkReachable'](_0x3b5073['TrunkBackup'])){ut['logger'](_0xeea4('0x11e'),_0x3b5073[_0xeea4('0x2b')]+_0xeea4('0x120'));return{'isValid':![],'message':_0xeea4('0x121')};}}if(!ut[_0xeea4('0x97')](_0x3b5073[_0xeea4('0x35')])){ut[_0xeea4('0x63')](_0xeea4('0x122'),_0x3b5073['name']+_0xeea4('0x123'));return{'isValid':![],'message':_0xeea4('0x11f')+_0x3b5073['name']+_0xeea4('0x123')};}return{'isValid':!![],'message':_0xeea4('0x124')};};Preview['prototype'][_0xeea4('0x125')]=function(_0x597146,_0x1d8a16,_0xcd9440,_0xcfae1e){var _0xc85717=this;return new BPromise(function(_0x46841a,_0x4405bf){var _0x35dd9b=_0x597146[_0xeea4('0xb1')];var _0x380c57=_0xc85717[_0xeea4('0x98')](_0x1d8a16[_0xeea4('0x54')])?util[_0xeea4('0xaf')](_0xeea4('0x126'),_0x1d8a16[_0xeea4('0x54')]['name'],_['isNil'](_0x1d8a16[_0xeea4('0x37')])?'':_0x1d8a16[_0xeea4('0x37')][_0xeea4('0x127')]()||'',_0x1d8a16[_0xeea4('0x128')]>0x0?_0xcd9440['Contact']['phone']['substring'](_0x1d8a16['dialCutDigit']):_0xcd9440[_0xeea4('0xfe')][_0xeea4('0x129')]):util['format'](_0xeea4('0x126'),_[_0xeea4('0x6d')](_0x1d8a16[_0xeea4('0x99')])?_0x1d8a16[_0xeea4('0x54')][_0xeea4('0x2b')]:_0x1d8a16[_0xeea4('0x99')]['name'],_['isNil'](_0x1d8a16[_0xeea4('0x37')])?'':_0x1d8a16[_0xeea4('0x37')][_0xeea4('0x127')]()||'',_0x1d8a16[_0xeea4('0x128')]>0x0?_0xcd9440['Contact'][_0xeea4('0x129')][_0xeea4('0x12a')](_0x1d8a16['dialCutDigit']):_0xcd9440[_0xeea4('0xfe')][_0xeea4('0x129')]);var _0x3026cd=_0xc85717['isTrunkReachable'](_0x1d8a16[_0xeea4('0x54')])?ut['getCallerId'](_0x1d8a16[_0xeea4('0x54')][_0xeea4('0x56')],_0x1d8a16[_0xeea4('0x36')],_0x1d8a16[_0xeea4('0x12b')]>0x0?ut[_0xeea4('0x12c')](_0x1d8a16[_0xeea4('0x12d')],_0x1d8a16[_0xeea4('0x12b')]):_0x1d8a16[_0xeea4('0x12d')]):ut[_0xeea4('0x12e')](_[_0xeea4('0x6d')](_0x1d8a16[_0xeea4('0x99')])?_0x1d8a16[_0xeea4('0x54')]['callerid']:_0x1d8a16[_0xeea4('0x99')]['callerid'],_0x1d8a16[_0xeea4('0x36')],_0x1d8a16[_0xeea4('0x12b')]>0x0?ut['getCallerIdRandom'](_0x1d8a16[_0xeea4('0x12d')],_0x1d8a16[_0xeea4('0x12b')]):_0x1d8a16[_0xeea4('0x12d')]);if(_0x3026cd){_0x597146['originatecalleridname']=ut[_0xeea4('0x12f')](_0x3026cd);_0x597146[_0xeea4('0x130')]=ut[_0xeea4('0x131')](_0x3026cd);}var _0xc9f0f5=ut['addVariables'](_0x1d8a16,_0xcd9440,_0x380c57,_0x3026cd,_0x35dd9b,_0x597146);_[_0xeea4('0x132')](_0x597146,ut[_0xeea4('0x133')](_0xc9f0f5));_0x597146[_0xeea4('0x8c')]=moment()[_0xeea4('0xaf')](_0xeea4('0x8d'));ami[_0xeea4('0x134')](ut[_0xeea4('0x135')](_0x597146,_0x1d8a16,_0xc9f0f5,_0x597146['activeContact'],_0xcfae1e))[_0xeea4('0x82')](function(_0x5a31e9){var _0x400d32=_0x597146[_0xeea4('0x136')];if(!_[_0xeea4('0x6d')](_0x400d32)){if(!_['isNil'](_0xc85717[_0xeea4('0x17')][_0x400d32])){_0xc85717[_0xeea4('0x17')][_0x400d32][_0xeea4('0x137')]=_0x597146[_0xeea4('0x138')];emit(util[_0xeea4('0xaf')](_0xeea4('0x139'),_0xc85717['agents'][_0x400d32][_0xeea4('0x2b')]),_0xeea4('0x13a'),{'destaccountcode':_0xc85717[_0xeea4('0x17')][_0x400d32]['accountcode'],'destconnectedlinenum':_0x597146[_0xeea4('0x138')]});}}_0x1d8a16[_0xeea4('0x4e')]+=0x1;logger[_0xeea4('0x5b')]('[originated][increment]',_0x35dd9b,_0xeea4('0xc0'),_0x1d8a16[_0xeea4('0x2b')],_0xeea4('0x71'),_0x1d8a16['originated']);_0x46841a(_0x5a31e9);})[_0xeea4('0x78')](function(_0x2753ee){ut['logAgent'](_0x597146,0xe,'OriginateError');rpcDb['createAgentHistory'](_0x597146,'[originateFailure][logOriginateFailure]');_0x4405bf(_0x2753ee);});});};Preview[_0xeea4('0xf')][_0xeea4('0x21')]=function(_0x1bcb4b){if(this[_0xeea4('0x6e')][_0x1bcb4b['linkedid']]){this[_0xeea4('0x6e')][_0x1bcb4b[_0xeea4('0xc2')]][_0xeea4('0x77')]=_0x1bcb4b['channel'];}};Preview[_0xeea4('0xf')][_0xeea4('0x19')]=function(_0x2f5fe1){var _0x27e1ef=this;var _0x46fac9=this['actions'][_0x2f5fe1[_0xeea4('0x13b')]];if(_0x46fac9){if(_0x46fac9['lookAgent']&&this[_0xeea4('0x17')][_0x46fac9[_0xeea4('0x100')]]){ut[_0xeea4('0x13c')](_0x46fac9,this['agents'][_0x46fac9[_0xeea4('0x100')]][_0xeea4('0x2b')],this[_0xeea4('0x17')][_0x46fac9['lookAgent']]['id']);}var _0x2bec21=_[_0xeea4('0x13d')](_0x46fac9);_0x2bec21[_0xeea4('0xb0')]=moment()[_0xeea4('0xaf')](_0xeea4('0x8d'));var _0x553f76=_0x27e1ef[_0xeea4('0x14')][_0x46fac9['queue']];if(ut['isFailure'](_0x2f5fe1[_0xeea4('0x13e')])){if(_0x46fac9[_0xeea4('0xad')]){rpcDb['unlockContact'](_0x46fac9['idContact']);}if(_0x46fac9[_0xeea4('0xd2')]){rpcDb[_0xeea4('0x8b')](_0x46fac9[_0xeea4('0x13f')]);}ami['emit'](_0xeea4('0x140'),ut[_0xeea4('0xa0')](_0x46fac9,'rejected',this[_0xeea4('0x14')][_0x46fac9[_0xeea4('0x70')]]));this[_0xeea4('0x141')](_0x2bec21,_0x553f76,_0x2f5fe1);}else{_0x46fac9[_0xeea4('0x8c')]=moment()[_0xeea4('0xaf')](_0xeea4('0x8d'));ut['logAgent'](_0x2bec21,0x4,_0xeea4('0x142'));rpcDb['createAgentHistory'](_0x2bec21,_0xeea4('0x143'));}}};Preview[_0xeea4('0xf')][_0xeea4('0x1c')]=function(_0x3a5d3b){var _0x3542bc=this;var _0x287b68=this[_0xeea4('0x6e')][_0x3a5d3b[_0xeea4('0xc2')]];var _0x229f70;if(_0x287b68){_0x229f70=this[_0xeea4('0x14')][_0x287b68[_0xeea4('0x70')]];logger[_0xeea4('0x5b')](_0xeea4('0x144'),_0x3a5d3b[_0xeea4('0xc2')],'\x20Queue',_0x229f70[_0xeea4('0x2b')],_0xeea4('0xc1'),_0x229f70[_0xeea4('0x60')]);}if(this[_0xeea4('0x6e')][_0x3a5d3b[_0xeea4('0xc2')]]&&_0x3a5d3b[_0xeea4('0xc2')]!==_0x3a5d3b[_0xeea4('0xb1')]){if(_0x3a5d3b[_0xeea4('0x145')]==='16'&&this[_0xeea4('0x6e')][_0x3a5d3b['linkedid']]['dialAnswer']){this[_0xeea4('0x9c')](_0x3a5d3b,_0x3a5d3b[_0xeea4('0xc2')],_0x3a5d3b[_0xeea4('0x145')]);}else if(this[_0xeea4('0x6e')][_0x3a5d3b[_0xeea4('0xc2')]]['dialAnswer']){logger[_0xeea4('0x5b')](_0xeea4('0x146'),_0x3a5d3b[_0xeea4('0xc2')],_0x3a5d3b[_0xeea4('0x145')],_0xeea4('0xc0'),_0x229f70['name'],'pTalking:\x20',_0x229f70[_0xeea4('0x60')]);this[_0xeea4('0x9c')](_0x3a5d3b,_0x3a5d3b[_0xeea4('0xc2')],_0x3a5d3b[_0xeea4('0x145')]);}}else if(_0x287b68&&_['isNil'](_0x287b68[_0xeea4('0x147')])&&_0x229f70['dialQueueProject']&&_0x3a5d3b[_0xeea4('0xc2')]===_0x3a5d3b[_0xeea4('0xb1')]&&_[_0xeea4('0x6d')](_0x3a5d3b[_0xeea4('0xf4')])&&_0x3a5d3b['cause']==='16'&&_0x3a5d3b['channelstate']==='6'&&_[_0xeea4('0xf2')](_0x287b68[_0xeea4('0x148')])){if(_0x287b68['unlockAgent']){rpcDb[_0xeea4('0x111')](_0x287b68[_0xeea4('0x13f')]);}if(_0x287b68[_0xeea4('0xd2')]){rpcDb['disableContact'](_0x287b68[_0xeea4('0x13f')]);}_0x3a5d3b['reason']='22';this[_0xeea4('0x141')](_0x287b68,_0x229f70,_0x3a5d3b);}else if(_0x287b68&&_0x287b68[_0xeea4('0x148')]){if(_0x3a5d3b['cause']==='16'&&this[_0xeea4('0x6e')][_0x3a5d3b[_0xeea4('0xc2')]][_0xeea4('0x72')]){logger[_0xeea4('0x5b')](_0xeea4('0x149'),_0x3a5d3b[_0xeea4('0xc2')],_0x3a5d3b[_0xeea4('0x145')],_0xeea4('0xc0'),_0x229f70[_0xeea4('0x2b')],_0xeea4('0xc1'),_0x229f70[_0xeea4('0x60')]);this[_0xeea4('0x9c')](_0x3a5d3b,_0x3a5d3b['linkedid'],_0x3a5d3b[_0xeea4('0x145')]);}else if(this['actions'][_0x3a5d3b[_0xeea4('0xc2')]][_0xeea4('0x72')]){logger[_0xeea4('0x5b')]('[syncHangup][talking][cause]',_0x3a5d3b['linkedid'],_0x3a5d3b[_0xeea4('0x145')],'\x20Queue',_0x229f70[_0xeea4('0x2b')],_0xeea4('0xc1'),_0x229f70[_0xeea4('0x60')]);this[_0xeea4('0x9c')](_0x3a5d3b,_0x3a5d3b[_0xeea4('0xc2')],_0x3a5d3b[_0xeea4('0x145')]);}}};Preview[_0xeea4('0xf')]['syncDialEnd']=function(_0xb845b7){if(this[_0xeea4('0x6e')][_0xb845b7[_0xeea4('0xf1')]]&&_0xb845b7[_0xeea4('0xf1')]!==_0xb845b7[_0xeea4('0x14a')]){this[_0xeea4('0x9c')](_0xb845b7,_0xb845b7[_0xeea4('0xf1')],_0xb845b7['dialstatus']);}};Preview[_0xeea4('0xf')]['syncHangupRequest']=function(_0xcac187){if(this[_0xeea4('0x6e')][_0xcac187['linkedid']]&&_0xcac187['linkedid']!==_0xcac187[_0xeea4('0xb1')]&&!this[_0xeea4('0x6e')][_0xcac187[_0xeea4('0xc2')]][_0xeea4('0x72')]){if(_0xcac187[_0xeea4('0x145')]==='1'){this[_0xeea4('0x9c')](_0xcac187,_0xcac187[_0xeea4('0xc2')],_0xcac187['cause']);}}};Preview['prototype'][_0xeea4('0x14b')]=function(_0x372e10,_0x68866b,_0x58dc54){if(this[_0xeea4('0x6e')][_0x372e10]){if(_['isNil'](this['actions'][_0x372e10][_0xeea4('0x14c')])){this[_0xeea4('0x6e')][_0x372e10][_0xeea4('0x14c')]={};}this['actions'][_0x372e10][_0xeea4('0x14c')][_0x68866b]=_0x58dc54;}};Preview[_0xeea4('0xf')][_0xeea4('0x14d')]=function(_0x3ed0f3){try{if(!_['isNil'](_0x3ed0f3)){if(ut['filterKey'](_[_0xeea4('0x14e')](_0x3ed0f3['variable'])[0x0])){this[_0xeea4('0x14b')](_0x3ed0f3['uniqueid'],_[_0xeea4('0x14e')](_0x3ed0f3[_0xeea4('0x14f')])[0x0],_0x3ed0f3['value']);}}}catch(_0x4c0271){logger[_0xeea4('0x150')](_0xeea4('0x151'),util[_0xeea4('0x152')](_0x4c0271,{'showHidden':![],'depth':null}));}};Preview[_0xeea4('0xf')][_0xeea4('0x24')]=function(_0x4a200a){if(_0x4a200a){if(this[_0xeea4('0x6e')][_0x4a200a[_0xeea4('0x153')]]){this[_0xeea4('0x6e')][_0x4a200a[_0xeea4('0x153')]][_0xeea4('0x148')]=!![];}}};Preview['prototype'][_0xeea4('0x26')]=function(_0x5e4c87){if(_0x5e4c87){if(this[_0xeea4('0x6e')][_0x5e4c87[_0xeea4('0x154')]]){this[_0xeea4('0x6e')][_0x5e4c87[_0xeea4('0x154')]][_0xeea4('0x148')]=!![];}}};module['exports']=Preview;
\ No newline at end of file
index 4670fc5..114f16b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa7d=['[GetContactRecallMe]\x20','../../../config/logger','preview','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','then','createHistory','catch','[createHistory]\x20','resolve','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','connectedlinename','membername','context','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaa7d,0x105));var _0xdaa7=function(_0x163040,_0x38a58c){_0x163040=_0x163040-0x0;var _0x364667=_0xaa7d[_0x163040];return _0x364667;};'use strict';var util=require('util');var BPromise=require('bluebird');var logger=require(_0xdaa7('0x0'))(_0xdaa7('0x1'));var _=require('lodash');var cmHopper=require('../rpc/cmHopper');var cmHopperFinal=require('../rpc/cmHopperFinal');var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0xdaa7('0x2'));var voiceQueueRt=require(_0xdaa7('0x3'));var agentReportPreview=require(_0xdaa7('0x4'));var voiceQueueReport=require(_0xdaa7('0x5'));function loggerCatch(_0xe55c74){return function(_0x12e3ee){logger[_0xdaa7('0x6')](_0xe55c74,util[_0xdaa7('0x7')](_0x12e3ee,{'showHidden':![],'depth':null}));};}function create(_0x63685f){return BPromise['resolve']()[_0xdaa7('0x8')](cmHopperHistory[_0xdaa7('0x9')](_0x63685f))[_0xdaa7('0xa')](loggerCatch(_0xdaa7('0xb')));}function createAgent(_0x194c3f){return BPromise[_0xdaa7('0xc')]()['then'](agentReportPreview[_0xdaa7('0x9')](_0x194c3f))[_0xdaa7('0xa')](loggerCatch(_0xdaa7('0xb')));}function moveContact(_0x4ac65b){return BPromise[_0xdaa7('0xc')]()[_0xdaa7('0x8')](cmHopper['moveContactManagedDialer'](_0x4ac65b,!![]))[_0xdaa7('0xa')](loggerCatch(_0xdaa7('0xd')));}exports[_0xdaa7('0xe')]=function(_0x4fdde6){return BPromise[_0xdaa7('0xc')]()[_0xdaa7('0x8')](cmHopperBlack[_0xdaa7('0xe')](_0x4fdde6))[_0xdaa7('0xa')](loggerCatch(_0xdaa7('0xf')));};exports[_0xdaa7('0x10')]=function(_0x2c9ea3){return BPromise[_0xdaa7('0xc')]()[_0xdaa7('0x8')](cmHopper[_0xdaa7('0x10')](_0x2c9ea3))['catch'](loggerCatch(_0xdaa7('0x11')));};exports[_0xdaa7('0x9')]=function(_0x33cb72,_0x523d31){create(_0x33cb72)[_0xdaa7('0xa')](loggerCatch(_0x523d31));moveContact(_0x33cb72)[_0xdaa7('0xa')](loggerCatch(_0x523d31));};exports[_0xdaa7('0x12')]=function(_0x26ddad,_0x5e9078){createAgent(_0x26ddad)[_0xdaa7('0xa')](loggerCatch(_0x5e9078));};exports['createCustomerHistory']=function(_0x3e1041,_0x8434a4){create(_0x3e1041)[_0xdaa7('0xa')](loggerCatch(_0x8434a4));};exports[_0xdaa7('0x13')]=function(_0x3ff7e,_0x59e13f){moveContact(_0x3ff7e)[_0xdaa7('0xa')](loggerCatch(_0x59e13f));};exports[_0xdaa7('0x14')]=function(_0x5add8a,_0x4f8087,_0x4e32bf){if(_0x4f8087){_0x5add8a[_0xdaa7('0x15')]=null;}if(_0x4e32bf){_0x5add8a[_0xdaa7('0x16')]=![];}return BPromise['resolve']()['then'](cmHopper['rescheduleContact'](_0x5add8a))[_0xdaa7('0xa')](loggerCatch(_0xdaa7('0x17')));};exports[_0xdaa7('0x18')]=function(_0x3c10d0){return BPromise[_0xdaa7('0xc')]()[_0xdaa7('0x8')](cmHopper[_0xdaa7('0x18')](_0x3c10d0))[_0xdaa7('0xa')](loggerCatch(_0xdaa7('0x19')));};exports[_0xdaa7('0x1a')]=function(_0x475ad5){return BPromise[_0xdaa7('0xc')]()[_0xdaa7('0x8')](cmHopper['unlockContact']({'UserId':null},_0x475ad5,0x1))[_0xdaa7('0xa')](loggerCatch(_0xdaa7('0x1b')));};exports[_0xdaa7('0x1c')]=function(_0x1c10cf){return BPromise[_0xdaa7('0xc')]()[_0xdaa7('0x8')](cmHopper['unlockContact']({'active':![]},_0x1c10cf,0x1))[_0xdaa7('0xa')](loggerCatch(_0xdaa7('0x1d')));};exports[_0xdaa7('0x1e')]=function(_0x51a06a){var _0xf5a2e2={};_0xf5a2e2[_0xdaa7('0x1f')]=_0x51a06a[_0xdaa7('0x1f')];_0xf5a2e2['uniqueid']=_0x51a06a[_0xdaa7('0x20')];_0xf5a2e2[_0xdaa7('0x21')]=_0x51a06a['calleridnum'];_0xf5a2e2[_0xdaa7('0x22')]=_0x51a06a['calleridname'];_0xf5a2e2[_0xdaa7('0x23')]=_0x51a06a['queue'];_0xf5a2e2[_0xdaa7('0x24')]=_0x51a06a[_0xdaa7('0x25')];_0xf5a2e2['queuecallerleaveAt']=_0x51a06a['answertime'];_0xf5a2e2['queuecallercomplete']=0x1;_0xf5a2e2['queuecallercompleteAt']=_0x51a06a['endtime'];_0xf5a2e2[_0xdaa7('0x26')]=_0x51a06a[_0xdaa7('0x27')];_0xf5a2e2[_0xdaa7('0x28')]='from-sip';_0xf5a2e2[_0xdaa7('0x29')]=_0xdaa7('0x2a');_0xf5a2e2[_0xdaa7('0x2b')]=0x0;_0xf5a2e2[_0xdaa7('0x2c')]=0x1;_0xf5a2e2[_0xdaa7('0x2d')]=_0x51a06a[_0xdaa7('0x27')];_0xf5a2e2[_0xdaa7('0x2e')]=_0xdaa7('0x2f');return BPromise['resolve']()[_0xdaa7('0x8')](voiceQueueReport[_0xdaa7('0x30')](_0xf5a2e2))[_0xdaa7('0xa')](loggerCatch(_0xdaa7('0x31')));};exports[_0xdaa7('0x32')]=function(_0x5aa0ed,_0x49e973){return BPromise['resolve']()[_0xdaa7('0x8')](cmHopper[_0xdaa7('0x32')](_0x5aa0ed,_0x49e973))[_0xdaa7('0xa')](loggerCatch(_0xdaa7('0x33')));};exports['rescheduleContactInQueue']=function(_0x4765f2){return BPromise[_0xdaa7('0xc')]()[_0xdaa7('0x8')](cmHopper['rescheduleContact'](_0x4765f2,!![],!![]))[_0xdaa7('0xa')](loggerCatch('[rescheduleContactInQueue]\x20'));};
\ No newline at end of file
+var _0x1eea=['queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','[GetContactRecallMe]\x20','util','bluebird','../../../config/logger','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','error','inspect','catch','[createHistory]\x20','resolve','createHistory','then','moveContactManagedDialer','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','countReScheduled','[countReScheduled]\x20','unlockContact','disableContact','[activeContact]\x20','type','uniqueid','calleridnum','calleridname','queuecallerjoinAt','queuecallerleaveAt'];(function(_0xf192ae,_0x8e001c){var _0x24d40a=function(_0xc7ed96){while(--_0xc7ed96){_0xf192ae['push'](_0xf192ae['shift']());}};_0x24d40a(++_0x8e001c);}(_0x1eea,0x1b8));var _0xa1ee=function(_0x495b5b,_0x3e70e0){_0x495b5b=_0x495b5b-0x0;var _0x157dd2=_0x1eea[_0x495b5b];return _0x157dd2;};'use strict';var util=require(_0xa1ee('0x0'));var BPromise=require(_0xa1ee('0x1'));var logger=require(_0xa1ee('0x2'))('preview');var _=require('lodash');var cmHopper=require(_0xa1ee('0x3'));var cmHopperFinal=require(_0xa1ee('0x4'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0xa1ee('0x5'));var voiceQueueRt=require(_0xa1ee('0x6'));var agentReportPreview=require(_0xa1ee('0x7'));var voiceQueueReport=require('../rpc/voiceQueueReport');function loggerCatch(_0x4d48cb){return function(_0x47f72d){logger[_0xa1ee('0x8')](_0x4d48cb,util[_0xa1ee('0x9')](_0x47f72d,{'showHidden':![],'depth':null}));};}function create(_0x2fc835){return BPromise['resolve']()['then'](cmHopperHistory['createHistory'](_0x2fc835))[_0xa1ee('0xa')](loggerCatch(_0xa1ee('0xb')));}function createAgent(_0x4adfe9){return BPromise[_0xa1ee('0xc')]()['then'](agentReportPreview[_0xa1ee('0xd')](_0x4adfe9))[_0xa1ee('0xa')](loggerCatch(_0xa1ee('0xb')));}function moveContact(_0x52ad65){return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopper[_0xa1ee('0xf')](_0x52ad65,!![]))['catch'](loggerCatch('[moveContactManagedDialer]\x20'));}exports[_0xa1ee('0x10')]=function(_0x3df4f6){return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopperBlack['checkIsBlackList'](_0x3df4f6))['catch'](loggerCatch(_0xa1ee('0x11')));};exports[_0xa1ee('0x12')]=function(_0xc66492){return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopper[_0xa1ee('0x12')](_0xc66492))['catch'](loggerCatch(_0xa1ee('0x13')));};exports[_0xa1ee('0xd')]=function(_0x478bb4,_0x1d065c){create(_0x478bb4)[_0xa1ee('0xa')](loggerCatch(_0x1d065c));moveContact(_0x478bb4)[_0xa1ee('0xa')](loggerCatch(_0x1d065c));};exports[_0xa1ee('0x14')]=function(_0x54c459,_0x23a293){createAgent(_0x54c459)['catch'](loggerCatch(_0x23a293));};exports[_0xa1ee('0x15')]=function(_0x402ca5,_0x55901b){create(_0x402ca5)[_0xa1ee('0xa')](loggerCatch(_0x55901b));};exports[_0xa1ee('0x16')]=function(_0x5dc4ae,_0x2bd7bb){moveContact(_0x5dc4ae)[_0xa1ee('0xa')](loggerCatch(_0x2bd7bb));};exports[_0xa1ee('0x17')]=function(_0x30d538,_0x3ad7fc,_0x244e23){if(_0x3ad7fc){_0x30d538[_0xa1ee('0x18')]=null;}if(_0x244e23){_0x30d538[_0xa1ee('0x19')]=![];}return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopper[_0xa1ee('0x17')](_0x30d538))['catch'](loggerCatch('[rescheduleContact]\x20'));};exports[_0xa1ee('0x1a')]=function(_0x3bf8e0){return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopper[_0xa1ee('0x1a')](_0x3bf8e0))[_0xa1ee('0xa')](loggerCatch(_0xa1ee('0x1b')));};exports[_0xa1ee('0x1c')]=function(_0x520545){return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopper[_0xa1ee('0x1c')]({'UserId':null},_0x520545,0x1))[_0xa1ee('0xa')](loggerCatch('[unlockContact]\x20'));};exports[_0xa1ee('0x1d')]=function(_0x49993b){return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopper[_0xa1ee('0x1c')]({'active':![]},_0x49993b,0x1))['catch'](loggerCatch(_0xa1ee('0x1e')));};exports['crateCustomerReportQueue']=function(_0x1e01d4){var _0x2f7a99={};_0x2f7a99[_0xa1ee('0x1f')]=_0x1e01d4[_0xa1ee('0x1f')];_0x2f7a99[_0xa1ee('0x20')]=_0x1e01d4[_0xa1ee('0x20')];_0x2f7a99['calleridnum']=_0x1e01d4[_0xa1ee('0x21')];_0x2f7a99[_0xa1ee('0x22')]=_0x1e01d4[_0xa1ee('0x22')];_0x2f7a99['queue']=_0x1e01d4['queue'];_0x2f7a99[_0xa1ee('0x23')]=_0x1e01d4['answertime'];_0x2f7a99[_0xa1ee('0x24')]=_0x1e01d4['answertime'];_0x2f7a99['queuecallercomplete']=0x1;_0x2f7a99[_0xa1ee('0x25')]=_0x1e01d4[_0xa1ee('0x26')];_0x2f7a99[_0xa1ee('0x27')]=_0x1e01d4[_0xa1ee('0x28')];_0x2f7a99[_0xa1ee('0x29')]=_0xa1ee('0x2a');_0x2f7a99[_0xa1ee('0x2b')]=_0xa1ee('0x2c');_0x2f7a99[_0xa1ee('0x2d')]=0x0;_0x2f7a99[_0xa1ee('0x2e')]=0x1;_0x2f7a99[_0xa1ee('0x2f')]=_0x1e01d4['membername'];_0x2f7a99[_0xa1ee('0x30')]=_0xa1ee('0x31');return BPromise[_0xa1ee('0xc')]()['then'](voiceQueueReport[_0xa1ee('0x32')](_0x2f7a99))[_0xa1ee('0xa')](loggerCatch(_0xa1ee('0x33')));};exports['getContactRecallMe']=function(_0x25c283,_0x50a5ac){return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopper['getContactRecallMe'](_0x25c283,_0x50a5ac))[_0xa1ee('0xa')](loggerCatch(_0xa1ee('0x34')));};exports['rescheduleContactInQueue']=function(_0x11233e){return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopper[_0xa1ee('0x17')](_0x11233e,!![],!![]))[_0xa1ee('0xa')](loggerCatch('[rescheduleContactInQueue]\x20'));};
\ No newline at end of file
index e918cd0..d9cd63d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64ed=['monitor_format','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','Contact','hasOwnProperty','isNil','tags','createdAt','updatedAt','XMD-','toUpper','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','Blacklist','starttime','responsetime','endtime','ringtime','UserId','logCustomer','answertime','isFailure','Failure','variablesAction','RECALL','BOOKED','uniqueid','originate','channelAgent','from-sip','totalGlobal','countbusyretry','countcongestionretry','countagentrejectretry','countnosuchnumberretry','clone','Global','scheduledAt','active','scheduledat','add','minutes','ListId','pTalking','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj','queue','interface','motionChannel','voice','mandatoryDisposition','buildAcw','agentReadyId','not_inuse','status','reachable','getDiff','createBody','CampaignId','idContact','type','campaigntype','dialAnswer','membername','countnoanswerretry','countglobal','callbackuniqueid','callbackat','recallme','sipcallid','xmd-queue','xmd-phone','xmd-listid','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosjitter','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','random','extractCalleridName','match','extractCalleridNumber','util','lodash','moment','../../../../config/logger','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','seconds','error','inspect','logger','loggerError','logger2','info','message','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','addVariables','Queue','name','calleridnum','ContactId','dialer','VoiceQueueId','\x22rtTxX%s%s\x22','dialQueueProject2'];(function(_0x387c65,_0x2fd251){var _0x4d24b7=function(_0x58e055){while(--_0x58e055){_0x387c65['push'](_0x387c65['shift']());}};_0x4d24b7(++_0x2fd251);}(_0x64ed,0xf9));var _0xd64e=function(_0x59147c,_0x17e6de){_0x59147c=_0x59147c-0x0;var _0x2f484d=_0x64ed[_0x59147c];return _0x2f484d;};'use strict';var util=require(_0xd64e('0x0'));var _=require(_0xd64e('0x1'));var moment=require(_0xd64e('0x2'));var logger=require(_0xd64e('0x3'))('preview');var ipAgi=process['env'][_0xd64e('0x4')]||_0xd64e('0x5');function getSeconds(_0xacaa06,_0x30b3a2){var _0x5b9fbd=moment(_0xacaa06)[_0xd64e('0x6')](0x0);var _0x1b55a6=moment(_0x30b3a2)['milliseconds'](0x0);return _0x5b9fbd[_0xd64e('0x7')](_0x1b55a6,_0xd64e('0x8'));}exports['loggerCatch']=function(_0x269ae5){return function(_0x2ee046){logger[_0xd64e('0x9')](_0x269ae5,util[_0xd64e('0xa')](_0x2ee046,{'showHidden':![],'depth':null}));};};exports[_0xd64e('0xb')]=function(_0x3fb776,_0x2be583){logger['info'](_0x3fb776,util[_0xd64e('0xa')](_0x2be583,{'showHidden':![],'depth':null}));};exports[_0xd64e('0xc')]=function(_0x426be0,_0xe017){logger[_0xd64e('0x9')](_0x426be0,util['inspect'](_0xe017,{'showHidden':![],'depth':null}));};exports[_0xd64e('0xd')]=function(_0x12c313){return function(_0x3ab445){logger[_0xd64e('0xe')](_0x12c313,util['inspect'](_0x3ab445,{'showHidden':![],'depth':null}));};};exports[_0xd64e('0xf')]=function(_0x47663b,_0x5db46b,_0x7557c9){return{'message':_0x47663b,'unlock':_0x5db46b,'active':_0x7557c9};};exports[_0xd64e('0x10')]=function(_0x1bc4ca,_0x2fa4f3,_0x54a8f2){if(!_[_0xd64e('0x11')](_0x54a8f2)&&_0xd64e('0x12')===typeof _0x54a8f2&&!_[_0xd64e('0x13')](_0x54a8f2)){if(!_[_0xd64e('0x11')](_0x2fa4f3)&&_0xd64e('0x12')===typeof _0x2fa4f3&&!_[_0xd64e('0x13')](_0x2fa4f3)){return util[_0xd64e('0x14')](_0xd64e('0x15'),_0x2fa4f3,_0x54a8f2);}return util[_0xd64e('0x14')](_0xd64e('0x15'),_0x54a8f2,_0x54a8f2);}if(!_[_0xd64e('0x11')](_0x1bc4ca)&&'string'===typeof _0x1bc4ca&&!_[_0xd64e('0x13')](_0x1bc4ca)){return _0x1bc4ca;}return _0xd64e('0x16');};exports[_0xd64e('0x17')]=function(_0xc58ee0){if(_['isNil'](_0xc58ee0)){return![];}return _0xc58ee0;};exports[_0xd64e('0x18')]=function(_0x2998ba,_0x2ba11d,_0x301028,_0x5d8cbd,_0x5e7484,_0x315050){var _0x47a13f={'XMD-QUEUE':_0x2ba11d[_0xd64e('0x19')]?_0x2ba11d['Queue'][_0xd64e('0x1a')]:'','XMD-CALLERID':_0x5d8cbd,'XMD-CALLERID-PREVIEW':_0x315050?util['format'](_0xd64e('0x15'),_0x315050['calleridname'],_0x315050[_0xd64e('0x1b')]):_0x5d8cbd,'XMD-DIALID':_0x5e7484,'XMD-CONTACTID':_0x2ba11d[_0xd64e('0x1c')],'XMD-CDRTYPE':_0xd64e('0x1d'),'CALLERID(all)':_0x5d8cbd,'XMD-VOICEQUEUEID':_0x2ba11d[_0xd64e('0x1e')],'XMD-DIALCHANNEL':_0x301028,'XMD-DIALTIMEOUT':_0x2998ba['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util[_0xd64e('0x14')](_0xd64e('0x1f'),_0x2998ba[_0xd64e('0x20')]?'g':'',_[_0xd64e('0x13')](_0x2998ba[_0xd64e('0x21')])?'':'U(xcally-mixmonitor-context)'),'XMD-DIALURL':_0x2998ba[_0xd64e('0x22')]||'','XMD-AGI':_0x2998ba[_0xd64e('0x23')]?util['format'](_0xd64e('0x24'),ipAgi,_0x2998ba[_0xd64e('0x23')]):_0xd64e('0x25'),'XMD-AGIAFTER':_0x2998ba['dialQueueProject2']?util[_0xd64e('0x14')](_0xd64e('0x24'),ipAgi,_0x2998ba['dialQueueProject2']):_0xd64e('0x25'),'XMD-ORIGINATECALLERIDNUM':_0x315050?_0x315050['originatecalleridnum']:'','XMD-ORIGINATECALLERIDNAME':_0x315050?_0x315050['originatecalleridname']:'','XMD-DESTINATION':_0xd64e('0x26'),'SIPADDHEADER':_0xd64e('0x27')};if(!_[_0xd64e('0x13')](_0x2998ba[_0xd64e('0x21')])){_0x47a13f[util[_0xd64e('0x14')]('%s',_0xd64e('0x28'))]=_0x2998ba[_0xd64e('0x21')];_0x47a13f[util[_0xd64e('0x14')]('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x5e7484;}if(_0x2ba11d&&_0x2ba11d[_0xd64e('0x29')]){for(var _0x2f9dfc in _0x2ba11d[_0xd64e('0x29')]){if(_0x2ba11d[_0xd64e('0x29')][_0xd64e('0x2a')](_0x2f9dfc)){if(!_[_0xd64e('0x2b')](_0x2ba11d[_0xd64e('0x29')][_0x2f9dfc])&&_0x2f9dfc!=='id'&&_0x2f9dfc!==_0xd64e('0x2c')&&_0x2f9dfc!==_0xd64e('0x2d')&&_0x2f9dfc!==_0xd64e('0x2e')){_0x47a13f[util[_0xd64e('0x14')]('%s%s',_0xd64e('0x2f'),_[_0xd64e('0x30')](_0x2f9dfc))]=_0x2ba11d['Contact'][_0x2f9dfc];}}}}return _0x47a13f;};exports[_0xd64e('0x31')]=function(_0x4544df){var _0x5a52ff={};for(var _0x317192 in _0x4544df){if(_0x4544df['hasOwnProperty'](_0x317192)){_0x5a52ff[util[_0xd64e('0x14')]('%s',_[_0xd64e('0x32')](_0x317192))]=_0x4544df[_0x317192];}}return{'variables':_0x5a52ff};};exports[_0xd64e('0x33')]=function(_0x59cbcb,_0x11f3dd){if(!_[_0xd64e('0x2b')](_0x59cbcb)){if(_0x59cbcb['hasOwnProperty'](_0xd64e('0x34'))){if(_0x59cbcb[_0xd64e('0x34')]>0x0){_0x59cbcb[_0xd64e('0x34')]-=0x1;}else{logger[_0xd64e('0x9')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x11f3dd);}}}else{logger[_0xd64e('0x9')](_0xd64e('0x35'),_0x11f3dd);}};exports[_0xd64e('0x36')]=function(_0x2c8f95){var _0x46f198=moment()['format'](_0xd64e('0x37'));_0x2c8f95[_0xd64e('0x38')]=0xd;_0x2c8f95['statedesc']=_0xd64e('0x39');_0x2c8f95[_0xd64e('0x3a')]=_0x46f198;_0x2c8f95[_0xd64e('0x3b')]=_0x46f198;_0x2c8f95[_0xd64e('0x3c')]=_0x46f198;};exports['logAgent']=function(_0x4b6e14,_0x582ffa,_0x387c48){var _0x3f1c27=moment()['format'](_0xd64e('0x37'));_0x4b6e14[_0xd64e('0x38')]=_0x582ffa;_0x4b6e14['statedesc']=_0x387c48;_0x4b6e14[_0xd64e('0x3b')]=_0x3f1c27;_0x4b6e14[_0xd64e('0x3d')]=getSeconds(_0x4b6e14['responsetime'],_0x4b6e14[_0xd64e('0x3a')]);};exports['logLookAgent']=function(_0x1468ef,_0x2b1464,_0x2cf262){_0x1468ef['membername']=_0x2b1464;_0x1468ef[_0xd64e('0x3e')]=_0x2cf262;};exports[_0xd64e('0x3f')]=function(_0x4a4548,_0x36ced1,_0x1cdc58){var _0x2a6ee9=moment()[_0xd64e('0x14')](_0xd64e('0x37'));_0x4a4548[_0xd64e('0x38')]=_0x36ced1;_0x4a4548['statedesc']=_0x1cdc58;_0x4a4548[_0xd64e('0x3b')]=_0x4a4548[_0xd64e('0x3b')]?_0x4a4548[_0xd64e('0x3b')]:_0x2a6ee9;_0x4a4548['endtime']=_0x4a4548['endtime']?_0x4a4548['endtime']:_0x2a6ee9;_0x4a4548['ringtime']=getSeconds(_0x4a4548[_0xd64e('0x3b')]||0x0,_0x4a4548[_0xd64e('0x3a')]||0x0);_0x4a4548['talktime']=_0x4a4548[_0xd64e('0x40')]?getSeconds(_0x4a4548[_0xd64e('0x3c')],_0x4a4548[_0xd64e('0x40')]):0x0;};exports[_0xd64e('0x41')]=function(_0x4b5581){return _0x4b5581===_0xd64e('0x42');};exports[_0xd64e('0x43')]=function(_0x4a2d7b,_0x21c1d3,_0x9c3950,_0x134141,_0x27f940){var _0x5b3883=_0x134141?_0xd64e('0x44'):_0x4a2d7b['calleridname'];_0x5b3883=_0x27f940?_0xd64e('0x45'):_0x5b3883;return{'actionid':_0x4a2d7b[_0xd64e('0x46')],'action':_0xd64e('0x47'),'channel':_0x4a2d7b[_0xd64e('0x48')],'callerid':util[_0xd64e('0x14')](_0xd64e('0x15'),_0x5b3883,_0x4a2d7b[_0xd64e('0x1b')]),'Exten':_0xd64e('0x26'),'Context':_0xd64e('0x49'),'Priority':'1','variable':_0x9c3950,'timeout':(_0x21c1d3['timeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x4a2d7b[_0xd64e('0x46')]};};exports[_0xd64e('0x4a')]=function(_0x423b9d){return _0x423b9d[_0xd64e('0x4b')]+_0x423b9d[_0xd64e('0x4c')]+_0x423b9d['countnoanswerretry']+_0x423b9d[_0xd64e('0x4d')]+_0x423b9d[_0xd64e('0x4e')];};exports['cloneAction']=function(_0x596b51){var _0x4c4392=_[_0xd64e('0x4f')](_0x596b51);_0x4c4392[_0xd64e('0x38')]=0xf;_0x4c4392['statedesc']=_0xd64e('0x50');return _0x4c4392;};exports[_0xd64e('0x51')]=function(_0x459979,_0x23e893,_0x27aeea){var _0x529b56={};_0x529b56[_0x23e893]=_0x459979[_0x23e893];_0x529b56[_0xd64e('0x52')]=![];_0x529b56[_0xd64e('0x53')]=moment()[_0xd64e('0x54')](_0x27aeea,_0xd64e('0x55'))[_0xd64e('0x14')](_0xd64e('0x37'));_0x529b56[_0xd64e('0x1c')]=_0x459979['ContactId'];_0x529b56['ListId']=_0x459979[_0xd64e('0x56')];_0x529b56[_0xd64e('0x1e')]=_0x459979[_0xd64e('0x1e')]||undefined;return _0x529b56;};exports['decrementTalkink']=function(_0x1d4e7b,_0x47fd41){if(!_[_0xd64e('0x2b')](_0x1d4e7b)){if(_0x1d4e7b[_0xd64e('0x57')]>0x0){_0x1d4e7b[_0xd64e('0x57')]-=0x1;}else{logger['error'](_0x47fd41,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger['error'](_0x47fd41,_0xd64e('0x58'));}};exports[_0xd64e('0x59')]=function(_0x3b4d2b){if(_0x3b4d2b<=0x0){return!![];}return![];};exports[_0xd64e('0x5a')]=function(_0x34fc8f,_0x538665,_0x100e15){_0x34fc8f['lastevent']=_0x538665;_0x34fc8f[_0xd64e('0x1a')]=_0x34fc8f[_0xd64e('0x5b')];_0x34fc8f[_0xd64e('0x5c')]=_0x34fc8f['channelAgent'];_0x34fc8f[_0xd64e('0x5d')]=_0xd64e('0x5e');if(_0x100e15){_0x34fc8f[_0xd64e('0x5f')]=_0x100e15[_0xd64e('0x5f')];}return _0x34fc8f;};exports[_0xd64e('0x60')]=function(_0x317381){var _0x51643f={};_0x51643f[_0xd64e('0x5b')]=_0x317381[_0xd64e('0x5b')];_0x51643f[_0xd64e('0x5c')]=_0x317381[_0xd64e('0x48')];_0x51643f['uniqueid']=_0x317381[_0xd64e('0x46')];return _0x51643f;};exports[_0xd64e('0x61')]=function(_0x1f3fdd){var _0x298d01=[];for(var _0x3ddf99 in _0x1f3fdd){if(_0x1f3fdd['hasOwnProperty'](_0x3ddf99)){if(!_[_0xd64e('0x2b')](_0x1f3fdd[_0x3ddf99])&&_0x1f3fdd[_0x3ddf99][_0xd64e('0x38')]===_0xd64e('0x62')&&_0x1f3fdd[_0x3ddf99][_0xd64e('0x63')]===_0xd64e('0x64')){_0x298d01['push'](_0x1f3fdd[_0x3ddf99]['id']);}}}return _0x298d01;};exports[_0xd64e('0x65')]=function(_0x1e4212){var _0x48f1b9=moment()['milliseconds'](0x0);var _0x113bb8=moment(_0x1e4212)['milliseconds'](0x0);return _0x48f1b9[_0xd64e('0x7')](_0x113bb8,_0xd64e('0x8'));};exports[_0xd64e('0x66')]=function(_0x5df037){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x5df037[_0xd64e('0x1c')],'ListId':_0x5df037['ListId'],'VoiceQueueId':_0x5df037[_0xd64e('0x1e')]||undefined,'CampaignId':_0x5df037[_0xd64e('0x67')]||undefined};};exports['filterKey']=function(_0x130895){if(_0x130895==='uniqueid'||_0x130895===_0xd64e('0x68')||_0x130895==='queue'||_0x130895===_0xd64e('0x69')||_0x130895===_0xd64e('0x6a')||_0x130895===_0xd64e('0x6b')||_0x130895===_0xd64e('0x6c')||_0x130895===_0xd64e('0x48')||_0x130895==='calleridname'||_0x130895==='active'||_0x130895===_0xd64e('0x1b')||_0x130895==='scheduledat'||_0x130895===_0xd64e('0x4b')||_0x130895==='countcongestionretry'||_0x130895===_0xd64e('0x6d')||_0x130895===_0xd64e('0x6e')||_0x130895==='callback'||_0x130895===_0xd64e('0x6f')||_0x130895===_0xd64e('0x70')||_0x130895===_0xd64e('0x71')||_0x130895===_0xd64e('0x1c')||_0x130895==='ListId'||_0x130895===_0xd64e('0x3e')||_0x130895===_0xd64e('0x1e')||_0x130895===_0xd64e('0x72')||_0x130895==='xmd-voicequeueid'||_0x130895===_0xd64e('0x73')||_0x130895===_0xd64e('0x74')||_0x130895===_0xd64e('0x75')||_0x130895==='xmd-dialurl'||_0x130895==='xmd-dialtimeout'||_0x130895===_0xd64e('0x76')||_0x130895===_0xd64e('0x77')||_0x130895===_0xd64e('0x78')||_0x130895===_0xd64e('0x79')||_0x130895===_0xd64e('0x7a')||_0x130895==='xmd-callerid'||_0x130895===_0xd64e('0x7b')||_0x130895===_0xd64e('0x7c')||_0x130895===_0xd64e('0x7d')||_0x130895===_0xd64e('0x7e')||_0x130895==='rtpaudioqosjitter'||_0x130895===_0xd64e('0x7f')||_0x130895===_0xd64e('0x80')||_0x130895==='rtpaudioqoslossbridged'||_0x130895===_0xd64e('0x81')||_0x130895===_0xd64e('0x82')||_0x130895===_0xd64e('0x7d')||_0x130895==='rtpaudioqosbridged'||_0x130895===_0xd64e('0x83')||_0x130895===_0xd64e('0x7f')||_0x130895===_0xd64e('0x80')||_0x130895==='rtpaudioqoslossbridged'||_0x130895==='rtpaudioqosrtt'||_0x130895===_0xd64e('0x82')||_0x130895===_0xd64e('0x84')||_0x130895===_0xd64e('0x85')||_0x130895===_0xd64e('0x38')||_0x130895==='statedesc'){return![];}return!![];};exports[_0xd64e('0x86')]=function(_0xe252c6,_0x5c99b4){var _0x30851a,_0x73e6ed,_0x1edd67;if(_0x5c99b4<=0x0){_0x5c99b4=0x1;}_0x30851a=new RegExp(_0xd64e('0x87')+_0x5c99b4+'}$');_0x73e6ed=Math['pow'](0xa,_0x5c99b4-0x1);_0x1edd67=Math[_0xd64e('0x88')](0xa,_0x5c99b4)-0x1;return util[_0xd64e('0x14')]('%s',_['replace'](_0xe252c6,_0x30851a,_[_0xd64e('0x89')](_0x73e6ed,_0x1edd67)));};exports[_0xd64e('0x8a')]=function(_0x1c05b2){var _0x450e5e=_0x1c05b2[_0xd64e('0x8b')](/"(.*?)"/);return _0x450e5e?_0x450e5e[0x1]:_0x1c05b2;};exports[_0xd64e('0x8c')]=function(_0x40090f){var _0x325908=_0x40090f[_0xd64e('0x8b')](/<(.*?)>/);return _0x325908?_0x325908[0x1]:_0x40090f;};
\ No newline at end of file
+var _0x96e9=['updatedAt','%s%s','XMD-','toUpper','toLowerVariables','hasOwnProperty','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','Blacklist','responsetime','logAgent','state','statedesc','ringtime','starttime','logLookAgent','membername','logCustomer','YYYY-MM-DD\x20HH:mm:ss','endtime','answertime','isFailure','Failure','variablesAction','RECALL','calleridname','uniqueid','originate','channelAgent','from-sip','timeout','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','Global','scheduledat','add','minutes','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj','lastevent','name','queue','interface','mandatoryDisposition','status','push','getDiff','createBody','CampaignId','filterKey','idContact','campaigntype','callbackuniqueid','callbackat','UserId','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','replace','extractCalleridName','match','extractCalleridNumber','util','lodash','moment','../../../../config/logger','env','127.0.0.1','milliseconds','diff','seconds','error','logger','inspect','loggerError','logger2','message','getCallerId','isUndefined','string','isEmpty','\x22%s\x22\x20<%s>','format','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','calleridnum','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','dialQueueProject2','originatecalleridnum','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','tags'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x96e9,0x17a));var _0x996e=function(_0x5ca9dd,_0x1666ad){_0x5ca9dd=_0x5ca9dd-0x0;var _0x5ce32b=_0x96e9[_0x5ca9dd];return _0x5ce32b;};'use strict';var util=require(_0x996e('0x0'));var _=require(_0x996e('0x1'));var moment=require(_0x996e('0x2'));var logger=require(_0x996e('0x3'))('preview');var ipAgi=process[_0x996e('0x4')]['XCALLY_IP_AGI']||_0x996e('0x5');function getSeconds(_0x1f9a4f,_0x58e662){var _0x5dc1b7=moment(_0x1f9a4f)[_0x996e('0x6')](0x0);var _0x376115=moment(_0x58e662)[_0x996e('0x6')](0x0);return _0x5dc1b7[_0x996e('0x7')](_0x376115,_0x996e('0x8'));}exports['loggerCatch']=function(_0x2e0ca5){return function(_0x99611d){logger[_0x996e('0x9')](_0x2e0ca5,util['inspect'](_0x99611d,{'showHidden':![],'depth':null}));};};exports[_0x996e('0xa')]=function(_0x550346,_0x2bffda){logger['info'](_0x550346,util[_0x996e('0xb')](_0x2bffda,{'showHidden':![],'depth':null}));};exports[_0x996e('0xc')]=function(_0x510243,_0x23572a){logger['error'](_0x510243,util[_0x996e('0xb')](_0x23572a,{'showHidden':![],'depth':null}));};exports[_0x996e('0xd')]=function(_0x41f02c){return function(_0x1f47f8){logger['info'](_0x41f02c,util[_0x996e('0xb')](_0x1f47f8,{'showHidden':![],'depth':null}));};};exports[_0x996e('0xe')]=function(_0x26d151,_0x30fb8e,_0x4441c6){return{'message':_0x26d151,'unlock':_0x30fb8e,'active':_0x4441c6};};exports[_0x996e('0xf')]=function(_0x2024c5,_0x4b9840,_0x4e9b63){if(!_[_0x996e('0x10')](_0x4e9b63)&&_0x996e('0x11')===typeof _0x4e9b63&&!_[_0x996e('0x12')](_0x4e9b63)){if(!_[_0x996e('0x10')](_0x4b9840)&&_0x996e('0x11')===typeof _0x4b9840&&!_['isEmpty'](_0x4b9840)){return util['format'](_0x996e('0x13'),_0x4b9840,_0x4e9b63);}return util[_0x996e('0x14')](_0x996e('0x13'),_0x4e9b63,_0x4e9b63);}if(!_['isUndefined'](_0x2024c5)&&_0x996e('0x11')===typeof _0x2024c5&&!_['isEmpty'](_0x2024c5)){return _0x2024c5;}return _0x996e('0x15');};exports[_0x996e('0x16')]=function(_0x44b7c4){if(_[_0x996e('0x17')](_0x44b7c4)){return![];}return _0x44b7c4;};exports[_0x996e('0x18')]=function(_0x457409,_0x1be6ec,_0x9a215d,_0x5a2ea7,_0x487526,_0x299d8c){var _0x456b7f={'XMD-QUEUE':_0x1be6ec[_0x996e('0x19')]?_0x1be6ec[_0x996e('0x19')]['name']:'','XMD-CALLERID':_0x5a2ea7,'XMD-CALLERID-PREVIEW':_0x299d8c?util[_0x996e('0x14')](_0x996e('0x13'),_0x299d8c['calleridname'],_0x299d8c[_0x996e('0x1a')]):_0x5a2ea7,'XMD-DIALID':_0x487526,'XMD-CONTACTID':_0x1be6ec[_0x996e('0x1b')],'XMD-CDRTYPE':_0x996e('0x1c'),'CALLERID(all)':_0x5a2ea7,'XMD-VOICEQUEUEID':_0x1be6ec[_0x996e('0x1d')],'XMD-DIALCHANNEL':_0x9a215d,'XMD-DIALTIMEOUT':_0x457409[_0x996e('0x1e')]||0x1e,'XMD-DIALOPTIONS':util[_0x996e('0x14')]('\x22rtTxX%s%s\x22',_0x457409['dialQueueProject2']?'g':'',_[_0x996e('0x12')](_0x457409[_0x996e('0x1f')])?'':_0x996e('0x20')),'XMD-DIALURL':_0x457409[_0x996e('0x21')]||'','XMD-AGI':_0x457409[_0x996e('0x22')]?util[_0x996e('0x14')](_0x996e('0x23'),ipAgi,_0x457409[_0x996e('0x22')]):_0x996e('0x24'),'XMD-AGIAFTER':_0x457409['dialQueueProject2']?util[_0x996e('0x14')]('\x22agi://%s/square,%s\x22',ipAgi,_0x457409[_0x996e('0x25')]):_0x996e('0x24'),'XMD-ORIGINATECALLERIDNUM':_0x299d8c?_0x299d8c[_0x996e('0x26')]:'','XMD-ORIGINATECALLERIDNAME':_0x299d8c?_0x299d8c[_0x996e('0x27')]:'','XMD-DESTINATION':_0x996e('0x28')};if(!_[_0x996e('0x12')](_0x457409[_0x996e('0x1f')])){_0x456b7f[util[_0x996e('0x14')]('%s',_0x996e('0x29'))]=_0x457409[_0x996e('0x1f')];_0x456b7f[util['format']('%s',_0x996e('0x2a'))]=_0x487526;}if(_0x1be6ec&&_0x1be6ec['Contact']){for(var _0xe23e8c in _0x1be6ec[_0x996e('0x2b')]){if(_0x1be6ec[_0x996e('0x2b')]['hasOwnProperty'](_0xe23e8c)){if(!_[_0x996e('0x17')](_0x1be6ec['Contact'][_0xe23e8c])&&_0xe23e8c!=='id'&&_0xe23e8c!==_0x996e('0x2c')&&_0xe23e8c!=='createdAt'&&_0xe23e8c!==_0x996e('0x2d')){_0x456b7f[util[_0x996e('0x14')](_0x996e('0x2e'),_0x996e('0x2f'),_[_0x996e('0x30')](_0xe23e8c))]=_0x1be6ec[_0x996e('0x2b')][_0xe23e8c];}}}}return _0x456b7f;};exports[_0x996e('0x31')]=function(_0x38aa42){var _0x1ba37f={};for(var _0x1ec9b9 in _0x38aa42){if(_0x38aa42[_0x996e('0x32')](_0x1ec9b9)){_0x1ba37f[util[_0x996e('0x14')]('%s',_['toLower'](_0x1ec9b9))]=_0x38aa42[_0x1ec9b9];}}return{'variables':_0x1ba37f};};exports['updateOriginated']=function(_0x3bd039,_0x4c8ac9){if(!_[_0x996e('0x17')](_0x3bd039)){if(_0x3bd039[_0x996e('0x32')]('originated')){if(_0x3bd039[_0x996e('0x33')]>0x0){_0x3bd039['originated']-=0x1;}else{logger['error'](_0x996e('0x34'),_0x4c8ac9);}}}else{logger[_0x996e('0x9')](_0x996e('0x35'),_0x4c8ac9);}};exports[_0x996e('0x36')]=function(_0x228a25){var _0x598207=moment()[_0x996e('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x228a25['state']=0xd;_0x228a25['statedesc']=_0x996e('0x37');_0x228a25['starttime']=_0x598207;_0x228a25[_0x996e('0x38')]=_0x598207;_0x228a25['endtime']=_0x598207;};exports[_0x996e('0x39')]=function(_0x5054c8,_0x2c420a,_0x1c44a8){var _0xc3943e=moment()[_0x996e('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x5054c8[_0x996e('0x3a')]=_0x2c420a;_0x5054c8[_0x996e('0x3b')]=_0x1c44a8;_0x5054c8['responsetime']=_0xc3943e;_0x5054c8[_0x996e('0x3c')]=getSeconds(_0x5054c8['responsetime'],_0x5054c8[_0x996e('0x3d')]);};exports[_0x996e('0x3e')]=function(_0x387671,_0x491b79,_0x343046){_0x387671[_0x996e('0x3f')]=_0x491b79;_0x387671['UserId']=_0x343046;};exports[_0x996e('0x40')]=function(_0x41a117,_0x520a3e,_0x4d4726){var _0x19ed93=moment()[_0x996e('0x14')](_0x996e('0x41'));_0x41a117[_0x996e('0x3a')]=_0x520a3e;_0x41a117['statedesc']=_0x4d4726;_0x41a117[_0x996e('0x38')]=_0x41a117[_0x996e('0x38')]?_0x41a117['responsetime']:_0x19ed93;_0x41a117[_0x996e('0x42')]=_0x41a117[_0x996e('0x42')]?_0x41a117[_0x996e('0x42')]:_0x19ed93;_0x41a117[_0x996e('0x3c')]=getSeconds(_0x41a117[_0x996e('0x38')]||0x0,_0x41a117[_0x996e('0x3d')]||0x0);_0x41a117['talktime']=_0x41a117[_0x996e('0x43')]?getSeconds(_0x41a117['endtime'],_0x41a117[_0x996e('0x43')]):0x0;};exports[_0x996e('0x44')]=function(_0x324dc9){return _0x324dc9===_0x996e('0x45');};exports[_0x996e('0x46')]=function(_0x58c672,_0x2952c9,_0x245165,_0x7f32fe,_0x516113){var _0xc9dfc3=_0x7f32fe?_0x996e('0x47'):_0x58c672[_0x996e('0x48')];_0xc9dfc3=_0x516113?'BOOKED':_0xc9dfc3;return{'actionid':_0x58c672[_0x996e('0x49')],'action':_0x996e('0x4a'),'channel':_0x58c672[_0x996e('0x4b')],'callerid':util['format'](_0x996e('0x13'),_0xc9dfc3,_0x58c672[_0x996e('0x1a')]),'Exten':_0x996e('0x28'),'Context':_0x996e('0x4c'),'Priority':'1','variable':_0x245165,'timeout':(_0x2952c9[_0x996e('0x4d')]||0x1e)*0x3e8,'async':!![],'channelid':_0x58c672[_0x996e('0x49')]};};exports['totalGlobal']=function(_0x259d4f){return _0x259d4f[_0x996e('0x4e')]+_0x259d4f[_0x996e('0x4f')]+_0x259d4f[_0x996e('0x50')]+_0x259d4f[_0x996e('0x51')]+_0x259d4f[_0x996e('0x52')];};exports[_0x996e('0x53')]=function(_0x5108c3){var _0x3f6b81=_[_0x996e('0x54')](_0x5108c3);_0x3f6b81[_0x996e('0x3a')]=0xf;_0x3f6b81[_0x996e('0x3b')]=_0x996e('0x55');return _0x3f6b81;};exports['scheduledAt']=function(_0x42904b,_0x51b675,_0x43e287){var _0x3b4186={};_0x3b4186[_0x51b675]=_0x42904b[_0x51b675];_0x3b4186['active']=![];_0x3b4186[_0x996e('0x56')]=moment()[_0x996e('0x57')](_0x43e287,_0x996e('0x58'))[_0x996e('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x3b4186['ContactId']=_0x42904b[_0x996e('0x1b')];_0x3b4186['ListId']=_0x42904b[_0x996e('0x59')];_0x3b4186['VoiceQueueId']=_0x42904b[_0x996e('0x1d')]||undefined;return _0x3b4186;};exports[_0x996e('0x5a')]=function(_0x14560d,_0x330fd6){if(!_[_0x996e('0x17')](_0x14560d)){if(_0x14560d[_0x996e('0x5b')]>0x0){_0x14560d['pTalking']-=0x1;}else{logger[_0x996e('0x9')](_0x330fd6,_0x996e('0x5c'));}}else{logger['error'](_0x330fd6,_0x996e('0x5d'));}};exports[_0x996e('0x5e')]=function(_0x3136da){if(_0x3136da<=0x0){return!![];}return![];};exports[_0x996e('0x5f')]=function(_0x279df0,_0x25711f,_0x2e0581){_0x279df0[_0x996e('0x60')]=_0x25711f;_0x279df0[_0x996e('0x61')]=_0x279df0[_0x996e('0x62')];_0x279df0[_0x996e('0x63')]=_0x279df0[_0x996e('0x4b')];if(_0x2e0581){_0x279df0[_0x996e('0x64')]=_0x2e0581[_0x996e('0x64')];}return _0x279df0;};exports['buildAcw']=function(_0x52b8e9){var _0x17a663={};_0x17a663['queue']=_0x52b8e9[_0x996e('0x62')];_0x17a663[_0x996e('0x63')]=_0x52b8e9[_0x996e('0x4b')];_0x17a663[_0x996e('0x49')]=_0x52b8e9[_0x996e('0x49')];return _0x17a663;};exports['agentReadyId']=function(_0x36a337){var _0x5b85ee=[];for(var _0xedabdc in _0x36a337){if(_0x36a337[_0x996e('0x32')](_0xedabdc)){if(!_[_0x996e('0x17')](_0x36a337[_0xedabdc])&&_0x36a337[_0xedabdc]['state']==='not_inuse'&&_0x36a337[_0xedabdc][_0x996e('0x65')]==='reachable'){_0x5b85ee[_0x996e('0x66')](_0x36a337[_0xedabdc]['id']);}}}return _0x5b85ee;};exports[_0x996e('0x67')]=function(_0x24fd43){var _0x15b75b=moment()['milliseconds'](0x0);var _0x4b6127=moment(_0x24fd43)[_0x996e('0x6')](0x0);return _0x15b75b[_0x996e('0x7')](_0x4b6127,_0x996e('0x8'));};exports[_0x996e('0x68')]=function(_0x2cef37){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x2cef37['ContactId'],'ListId':_0x2cef37[_0x996e('0x59')],'VoiceQueueId':_0x2cef37[_0x996e('0x1d')]||undefined,'CampaignId':_0x2cef37[_0x996e('0x69')]||undefined};};exports[_0x996e('0x6a')]=function(_0x4f8770){if(_0x4f8770===_0x996e('0x49')||_0x4f8770===_0x996e('0x6b')||_0x4f8770===_0x996e('0x62')||_0x4f8770==='type'||_0x4f8770===_0x996e('0x6c')||_0x4f8770==='dialAnswer'||_0x4f8770===_0x996e('0x3f')||_0x4f8770===_0x996e('0x4b')||_0x4f8770===_0x996e('0x48')||_0x4f8770==='active'||_0x4f8770==='calleridnum'||_0x4f8770===_0x996e('0x56')||_0x4f8770===_0x996e('0x4e')||_0x4f8770===_0x996e('0x4f')||_0x4f8770===_0x996e('0x50')||_0x4f8770==='countglobal'||_0x4f8770==='callback'||_0x4f8770===_0x996e('0x6d')||_0x4f8770===_0x996e('0x6e')||_0x4f8770==='recallme'||_0x4f8770===_0x996e('0x1b')||_0x4f8770===_0x996e('0x59')||_0x4f8770===_0x996e('0x6f')||_0x4f8770===_0x996e('0x1d')||_0x4f8770===_0x996e('0x70')||_0x4f8770===_0x996e('0x71')||_0x4f8770===_0x996e('0x72')||_0x4f8770===_0x996e('0x73')||_0x4f8770===_0x996e('0x74')||_0x4f8770===_0x996e('0x75')||_0x4f8770===_0x996e('0x76')||_0x4f8770===_0x996e('0x77')||_0x4f8770===_0x996e('0x78')||_0x4f8770==='xmd-dialchannel'||_0x4f8770===_0x996e('0x79')||_0x4f8770===_0x996e('0x7a')||_0x4f8770===_0x996e('0x7b')||_0x4f8770===_0x996e('0x7c')||_0x4f8770===_0x996e('0x7d')||_0x4f8770===_0x996e('0x7e')||_0x4f8770===_0x996e('0x7f')||_0x4f8770===_0x996e('0x80')||_0x4f8770===_0x996e('0x81')||_0x4f8770===_0x996e('0x82')||_0x4f8770===_0x996e('0x83')||_0x4f8770===_0x996e('0x84')||_0x4f8770==='rtpaudioqosrttbridged'||_0x4f8770==='rtpaudioqos'||_0x4f8770==='rtpaudioqosbridged'||_0x4f8770===_0x996e('0x80')||_0x4f8770===_0x996e('0x81')||_0x4f8770===_0x996e('0x82')||_0x4f8770===_0x996e('0x83')||_0x4f8770===_0x996e('0x84')||_0x4f8770==='rtpaudioqosrttbridged'||_0x4f8770===_0x996e('0x85')||_0x4f8770===_0x996e('0x86')||_0x4f8770===_0x996e('0x3a')||_0x4f8770===_0x996e('0x3b')){return![];}return!![];};exports[_0x996e('0x87')]=function(_0x43fd6f,_0xb2c3bf){var _0x130913,_0x5ec5ed,_0x431a9c;if(_0xb2c3bf<=0x0){_0xb2c3bf=0x1;}_0x130913=new RegExp(_0x996e('0x88')+_0xb2c3bf+'}$');_0x5ec5ed=Math['pow'](0xa,_0xb2c3bf-0x1);_0x431a9c=Math['pow'](0xa,_0xb2c3bf)-0x1;return util[_0x996e('0x14')]('%s',_[_0x996e('0x89')](_0x43fd6f,_0x130913,_['random'](_0x5ec5ed,_0x431a9c)));};exports[_0x996e('0x8a')]=function(_0x5079ad){var _0x262d42=_0x5079ad[_0x996e('0x8b')](/"(.*?)"/);return _0x262d42?_0x262d42[0x1]:_0x5079ad;};exports[_0x996e('0x8c')]=function(_0x1e09e5){var _0x5e44e2=_0x1e09e5[_0x996e('0x8b')](/<(.*?)>/);return _0x5e44e2?_0x5e44e2[0x1]:_0x1e09e5;};
\ No newline at end of file
index df2c116..3fb7d61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb93=['string','number','boolean','queueremove','reload','voicequeuechannel','voicequeuechannelredirect','queueadd'];(function(_0x2c6256,_0x404ccf){var _0x4db857=function(_0x40bb9f){while(--_0x40bb9f){_0x2c6256['push'](_0x2c6256['shift']());}};_0x4db857(++_0x404ccf);}(_0xfb93,0x11f));var _0x3fb9=function(_0x3e754a,_0x6d4db5){_0x3e754a=_0x3e754a-0x0;var _0x12325b=_0xfb93[_0x3e754a];return _0x12325b;};'use strict';exports[_0x3fb9('0x0')]={'queue':{'type':_0x3fb9('0x1'),'required':!![]},'interface':{'type':_0x3fb9('0x1'),'required':!![]},'membername':{'type':_0x3fb9('0x1'),'required':!![]},'penalty':{'type':_0x3fb9('0x2'),'required':![]},'paused':{'type':_0x3fb9('0x3'),'required':![]}};exports[_0x3fb9('0x4')]={'queue':{'type':_0x3fb9('0x1'),'required':!![]},'interface':{'type':'string','required':!![]}};exports['queuepause']={'interface':{'type':'string','required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0x3fb9('0x1'),'required':![]}};exports[_0x3fb9('0x5')]={'module':{'type':_0x3fb9('0x1'),'required':![]}};exports[_0x3fb9('0x6')]={'uniqueid':{'type':_0x3fb9('0x1'),'required':!![]}};exports['voicechannel']={'uniqueid':{'type':_0x3fb9('0x1'),'required':!![]},'filename':{'type':_0x3fb9('0x1')},'format':{'type':_0x3fb9('0x1')},'mixmonitorid':{'type':_0x3fb9('0x1')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0x3fb9('0x1'),'required':!![]}};exports[_0x3fb9('0x7')]={'uniqueid':{'type':_0x3fb9('0x1'),'required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':_0x3fb9('0x1')}};
\ No newline at end of file
+var _0xb198=['string','boolean','queueremove','queuepause','voicequeuechannel','voicequeuechannelredirect','queueadd'];(function(_0x179d86,_0x139c2c){var _0x437ec7=function(_0x6fc453){while(--_0x6fc453){_0x179d86['push'](_0x179d86['shift']());}};_0x437ec7(++_0x139c2c);}(_0xb198,0x110));var _0x8b19=function(_0x59e27a,_0x5b404e){_0x59e27a=_0x59e27a-0x0;var _0x3b452f=_0xb198[_0x59e27a];return _0x3b452f;};'use strict';exports[_0x8b19('0x0')]={'queue':{'type':_0x8b19('0x1'),'required':!![]},'interface':{'type':_0x8b19('0x1'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':_0x8b19('0x2'),'required':![]}};exports[_0x8b19('0x3')]={'queue':{'type':_0x8b19('0x1'),'required':!![]},'interface':{'type':_0x8b19('0x1'),'required':!![]}};exports[_0x8b19('0x4')]={'interface':{'type':_0x8b19('0x1'),'required':!![]},'paused':{'type':_0x8b19('0x2')},'reason':{'type':_0x8b19('0x1'),'required':![]}};exports['reload']={'module':{'type':_0x8b19('0x1'),'required':![]}};exports[_0x8b19('0x5')]={'uniqueid':{'type':_0x8b19('0x1'),'required':!![]}};exports['voicechannel']={'uniqueid':{'type':_0x8b19('0x1'),'required':!![]},'filename':{'type':_0x8b19('0x1')},'format':{'type':_0x8b19('0x1')},'mixmonitorid':{'type':_0x8b19('0x1')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0x8b19('0x1'),'required':!![]}};exports[_0x8b19('0x6')]={'uniqueid':{'type':_0x8b19('0x1'),'required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':_0x8b19('0x1')}};
\ No newline at end of file
index 2adfdba..d021214 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27c0=['voiceExtensions','initCampaignHopperHistory','initFaxAccounts','faxAccounts','bluebird','util','lodash','moment','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/freshsalesAccount','../model/faxAccount','agents','telephones','trunks','triggers','campaigns','outbound','queueChannels','outboundChannels','timers','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','mapKeys','hasOwnProperty','format','SIP/%s','total','answered','sumHoldTime','sumDuration','sumBillable','isEmpty','unmanaged','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','initAgents','length','isNil','interface','isUndefined','initTelephones','name','mergeFromDatabase','initTrunks','initVoiceQueues','voiceQueues','initTemplates','templates','initZendeskAccounts','initSalesforceAccounts','freshdeskAccounts','initZohoAccounts','initDeskAccounts','deskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','uniqueid','queue','queuecallerexit','queuecallerabandon','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerexitAt','diff','queuecallercomplete','initVoiceCallReports','duration','billableseconds','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions'];(function(_0x5a8aaf,_0x1c9717){var _0x2e66fb=function(_0x28c09f){while(--_0x28c09f){_0x5a8aaf['push'](_0x5a8aaf['shift']());}};_0x2e66fb(++_0x1c9717);}(_0x27c0,0x1bc));var _0x027c=function(_0x207f41,_0x2bf362){_0x207f41=_0x207f41-0x0;var _0x22ff4b=_0x27c0[_0x207f41];return _0x22ff4b;};'use strict';var BPromise=require(_0x027c('0x0'));var util=require(_0x027c('0x1'));var _=require(_0x027c('0x2'));var moment=require(_0x027c('0x3'));var Agent=require(_0x027c('0x4'));var Telephone=require(_0x027c('0x5'));var Trunk=require(_0x027c('0x6'));var VoiceQueue=require(_0x027c('0x7'));var Trigger=require(_0x027c('0x8'));var Template=require('../model/template');var Campaign=require(_0x027c('0x9'));var VoiceExtension=require(_0x027c('0xa'));var ZendeskAccount=require(_0x027c('0xb'));var SalesforceAccount=require(_0x027c('0xc'));var FreshdeskAccount=require(_0x027c('0xd'));var SugarcrmAccount=require(_0x027c('0xe'));var ZohoAccount=require(_0x027c('0xf'));var DeskAccount=require(_0x027c('0x10'));var VtigerAccount=require(_0x027c('0x11'));var ServicenowAccount=require(_0x027c('0x12'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0x027c('0x13'));var FaxAccount=require(_0x027c('0x14'));var Realtime=function(){this[_0x027c('0x15')]={};this[_0x027c('0x16')]={};this[_0x027c('0x17')]={};this['voiceQueues']={};this[_0x027c('0x18')]={};this[_0x027c('0x19')]={};this['templates']={};this[_0x027c('0x1a')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this['channels']={};this[_0x027c('0x1b')]={};this[_0x027c('0x1c')]={};this[_0x027c('0x1d')]={};this['settings']={};this[_0x027c('0x1e')]={};this[_0x027c('0x1f')]={};this[_0x027c('0x20')]={};this['freshdeskAccounts']={};this[_0x027c('0x21')]={};this['deskAccounts']={};this[_0x027c('0x22')]={};this[_0x027c('0x23')]={};this[_0x027c('0x24')]={};this[_0x027c('0x25')]={};this['faxAccounts']={};};function freeIsNotKey(_0x34d328,_0x318674,_0x2b2d72){var _0x1b0f9c=_[_0x027c('0x26')](_0x34d328,function(_0x528314,_0x2702d5){return _0x528314[_0x2b2d72];});for(var _0xf2476c in _0x318674){if(_0x318674[_0x027c('0x27')](_0xf2476c)){if(!_0x1b0f9c[_0xf2476c]){delete _0x318674[_0xf2476c];}}}}function freeIsNotKeySip(_0x38aea3,_0x1b95f4){var _0x2f43bd=_['mapKeys'](_0x38aea3,function(_0x236d04,_0x471509){return util[_0x027c('0x28')](_0x027c('0x29'),_0x236d04['name']);});for(var _0x7835e5 in _0x1b95f4){if(_0x1b95f4[_0x027c('0x27')](_0x7835e5)){if(!_0x2f43bd[_0x7835e5]){delete _0x1b95f4[_0x7835e5];}}}}function freeIsNotKeyAgent(_0x47c8d4,_0x493db0){var _0x5ba47e=_['mapKeys'](_0x47c8d4,function(_0x22f73a,_0x3e24b4){var _0xe5e710=_['isNil'](_0x22f73a['interface'])?util[_0x027c('0x28')](_0x027c('0x29'),_0x22f73a['name']):_0x22f73a['interface'];return _0xe5e710;});for(var _0x5470eb in _0x493db0){if(_0x493db0[_0x027c('0x27')](_0x5470eb)){if(!_0x5ba47e[_0x5470eb]){delete _0x493db0[_0x5470eb];}}}}function clearVoiceCallReports(_0x545203){_0x545203[_0x027c('0x2a')]=0x0;_0x545203[_0x027c('0x2b')]=0x0;_0x545203[_0x027c('0x2c')]=0x0;_0x545203[_0x027c('0x2d')]=0x0;_0x545203[_0x027c('0x2e')]=0x0;}function clearCampaigns(_0x362b51){if(!_['isEmpty'](_0x362b51)){for(var _0x589e9e in _0x362b51){if(_0x362b51[_0x027c('0x27')](_0x589e9e)){_0x362b51[_0x589e9e]['ivrTotalCallsDays']=0x0;_0x362b51[_0x589e9e]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0x565577){if(!_[_0x027c('0x2f')](_0x565577)){for(var _0x1ace89 in _0x565577){if(_0x565577['hasOwnProperty'](_0x1ace89)){_0x565577[_0x1ace89]['total']=0x0;_0x565577[_0x1ace89][_0x027c('0x2b')]=0x0;_0x565577[_0x1ace89][_0x027c('0x30')]=0x0;_0x565577[_0x1ace89]['abandoned']=0x0;_0x565577[_0x1ace89][_0x027c('0x2c')]=0x0;_0x565577[_0x1ace89]['sumDuration']=0x0;_0x565577[_0x1ace89][_0x027c('0x2e')]=0x0;_0x565577[_0x1ace89][_0x027c('0x31')]=0x0;_0x565577[_0x1ace89]['outboundNoAnswerCallsDay']=0x0;_0x565577[_0x1ace89][_0x027c('0x32')]=0x0;_0x565577[_0x1ace89][_0x027c('0x33')]=0x0;_0x565577[_0x1ace89]['outboundNoSuchCallsDay']=0x0;_0x565577[_0x1ace89][_0x027c('0x34')]=0x0;_0x565577[_0x1ace89][_0x027c('0x35')]=0x0;_0x565577[_0x1ace89][_0x027c('0x36')]=0x0;_0x565577[_0x1ace89][_0x027c('0x37')]=0x0;_0x565577[_0x1ace89][_0x027c('0x38')]=0x0;_0x565577[_0x1ace89][_0x027c('0x39')]=0x0;_0x565577[_0x1ace89][_0x027c('0x3a')]=0x0;_0x565577[_0x1ace89][_0x027c('0x31')]=0x0;_0x565577[_0x1ace89][_0x027c('0x3b')]=0x0;_0x565577[_0x1ace89][_0x027c('0x3c')]=!![];}}}}Realtime['prototype']['mergeFromDatabase']=function(_0x46ea4f,_0x19c415){for(var _0x1cf33d in _0x19c415){if(_0x46ea4f[_0x027c('0x27')](_0x1cf33d)){_0x46ea4f[_0x1cf33d]=_0x19c415[_0x1cf33d];}}};Realtime[_0x027c('0x3d')][_0x027c('0x3e')]=function(){var _0x10bcdf=this;return function(_0xd01a13){if(_0xd01a13){freeIsNotKeyAgent(_0xd01a13,_0x10bcdf['agents']);for(var _0x20ab68=0x0,_0x40f0e4={},_0x39f8f1={};_0x20ab68<_0xd01a13[_0x027c('0x3f')];_0x20ab68+=0x1){_0x40f0e4=_0xd01a13[_0x20ab68];var _0x2413bb=_[_0x027c('0x40')](_0x40f0e4[_0x027c('0x41')])?util['format'](_0x027c('0x29'),_0x40f0e4['name']):_0x40f0e4[_0x027c('0x41')];if(_[_0x027c('0x42')](_0x10bcdf['agents'][_0x2413bb])){_0x10bcdf[_0x027c('0x15')][_0x2413bb]=new Agent(_0x40f0e4);}else{_0x10bcdf['mergeFromDatabase'](_0x10bcdf[_0x027c('0x15')][_0x2413bb],_0x40f0e4);}}}return _0x10bcdf[_0x027c('0x15')];};};Realtime[_0x027c('0x3d')][_0x027c('0x43')]=function(){var _0x36c145=this;return function(_0x126241){if(_0x126241){freeIsNotKeySip(_0x126241,_0x36c145[_0x027c('0x16')]);for(var _0xc6eeb6=0x0,_0x1f2775={},_0x5d406b={};_0xc6eeb6<_0x126241[_0x027c('0x3f')];_0xc6eeb6+=0x1){_0x1f2775=_0x126241[_0xc6eeb6];if(_[_0x027c('0x42')](_0x36c145[_0x027c('0x16')][util[_0x027c('0x28')](_0x027c('0x29'),_0x1f2775[_0x027c('0x44')])])){_0x36c145[_0x027c('0x16')][util[_0x027c('0x28')](_0x027c('0x29'),_0x1f2775['name'])]=new Telephone(_0x1f2775);}else{_0x36c145[_0x027c('0x45')](_0x36c145[_0x027c('0x16')][util[_0x027c('0x28')](_0x027c('0x29'),_0x1f2775[_0x027c('0x44')])],_0x1f2775);}}}return _0x36c145[_0x027c('0x16')];};};Realtime['prototype'][_0x027c('0x46')]=function(){var _0x12c87d=this;return function(_0x474f87){if(_0x474f87){freeIsNotKeySip(_0x474f87,_0x12c87d['trunks']);for(var _0x58ea51=0x0,_0x1847cc={},_0x1b8784={};_0x58ea51<_0x474f87[_0x027c('0x3f')];_0x58ea51+=0x1){_0x1847cc=_0x474f87[_0x58ea51];if(_[_0x027c('0x42')](_0x12c87d[_0x027c('0x17')][util[_0x027c('0x28')](_0x027c('0x29'),_0x1847cc[_0x027c('0x44')])])){_0x12c87d[_0x027c('0x17')][util[_0x027c('0x28')]('SIP/%s',_0x1847cc[_0x027c('0x44')])]=new Trunk(_0x1847cc);}else{_0x12c87d[_0x027c('0x45')](_0x12c87d[_0x027c('0x17')][util[_0x027c('0x28')](_0x027c('0x29'),_0x1847cc['name'])],_0x1847cc);}}}return _0x12c87d[_0x027c('0x17')];};};Realtime[_0x027c('0x3d')][_0x027c('0x47')]=function(){var _0x5b3811=this;return function(_0x23c3a8){if(_0x23c3a8){freeIsNotKey(_0x23c3a8,_0x5b3811['voiceQueues'],_0x027c('0x44'));for(var _0x4a4577=0x0,_0x5e83c9={},_0x4d3821={};_0x4a4577<_0x23c3a8['length'];_0x4a4577+=0x1){_0x5e83c9=_0x23c3a8[_0x4a4577];if(_['isUndefined'](_0x5b3811[_0x027c('0x48')][_0x5e83c9[_0x027c('0x44')]])){_0x5b3811['voiceQueues'][_0x5e83c9[_0x027c('0x44')]]=new VoiceQueue(_0x5e83c9);}else{_0x5b3811[_0x027c('0x45')](_0x5b3811[_0x027c('0x48')][_0x5e83c9[_0x027c('0x44')]],_0x5e83c9);}}}return _0x5b3811['voiceQueues'];};};Realtime['prototype']['initTriggers']=function(){var _0x1cdfc7=this;return function(_0x3d7402){if(_0x3d7402){freeIsNotKey(_0x3d7402,_0x1cdfc7[_0x027c('0x18')],'id');for(var _0x328ae1=0x0,_0x32daea={},_0x28ac29={};_0x328ae1<_0x3d7402[_0x027c('0x3f')];_0x328ae1+=0x1){_0x32daea=_0x3d7402[_0x328ae1];if(_['isUndefined'](_0x1cdfc7[_0x027c('0x18')][_0x32daea['id']])){_0x1cdfc7['triggers'][_0x32daea['id']]=new Trigger(_0x32daea);}else{_0x1cdfc7[_0x027c('0x45')](_0x1cdfc7[_0x027c('0x18')][_0x32daea['id']],_0x32daea);}}}return _0x1cdfc7['triggers'];};};Realtime[_0x027c('0x3d')][_0x027c('0x49')]=function(){var _0x13083c=this;return function(_0x48ac2b){if(_0x48ac2b){freeIsNotKey(_0x48ac2b,_0x13083c[_0x027c('0x4a')],'id');for(var _0x13fff6=0x0,_0x34951b={},_0x39d66a={};_0x13fff6<_0x48ac2b['length'];_0x13fff6+=0x1){_0x34951b=_0x48ac2b[_0x13fff6];if(_[_0x027c('0x42')](_0x13083c[_0x027c('0x4a')][_0x34951b['id']])){_0x13083c['templates'][_0x34951b['id']]=new Template(_0x34951b);}else{_0x13083c[_0x027c('0x45')](_0x13083c[_0x027c('0x4a')][_0x34951b['id']],_0x34951b);}}}return _0x13083c['templates'];};};Realtime[_0x027c('0x3d')][_0x027c('0x4b')]=function(){var _0x41a206=this;return function(_0x4f20b7){if(_0x4f20b7){freeIsNotKey(_0x4f20b7,_0x41a206['zendeskAccounts'],'id');for(var _0xeacb3c=0x0,_0x355fd3={},_0x38e929={};_0xeacb3c<_0x4f20b7[_0x027c('0x3f')];_0xeacb3c+=0x1){_0x355fd3=_0x4f20b7[_0xeacb3c];if(_[_0x027c('0x42')](_0x41a206[_0x027c('0x1e')][_0x355fd3['id']])){_0x41a206['zendeskAccounts'][_0x355fd3['id']]=new ZendeskAccount(_0x355fd3);}else{_0x41a206[_0x027c('0x45')](_0x41a206[_0x027c('0x1e')][_0x355fd3['id']],_0x355fd3);}}}return _0x41a206[_0x027c('0x1e')];};};Realtime[_0x027c('0x3d')][_0x027c('0x4c')]=function(){var _0x2f53d9=this;return function(_0xf8df0){if(_0xf8df0){freeIsNotKey(_0xf8df0,_0x2f53d9['salesforceAccounts'],'id');for(var _0x45aac3=0x0,_0x5a5902={},_0x7dbee={};_0x45aac3<_0xf8df0[_0x027c('0x3f')];_0x45aac3+=0x1){_0x5a5902=_0xf8df0[_0x45aac3];if(_['isUndefined'](_0x2f53d9[_0x027c('0x1f')][_0x5a5902['id']])){_0x2f53d9[_0x027c('0x1f')][_0x5a5902['id']]=new SalesforceAccount(_0x5a5902);}else{_0x2f53d9[_0x027c('0x45')](_0x2f53d9[_0x027c('0x1f')][_0x5a5902['id']],_0x5a5902);}}}return _0x2f53d9['salesforceAccounts'];};};Realtime[_0x027c('0x3d')]['initFreshdeskAccounts']=function(){var _0x3a68f9=this;return function(_0x3331ff){if(_0x3331ff){freeIsNotKey(_0x3331ff,_0x3a68f9['freshdeskAccounts'],'id');for(var _0xc7396c=0x0,_0x344c13={},_0x17695c={};_0xc7396c<_0x3331ff[_0x027c('0x3f')];_0xc7396c+=0x1){_0x344c13=_0x3331ff[_0xc7396c];if(_['isUndefined'](_0x3a68f9['freshdeskAccounts'][_0x344c13['id']])){_0x3a68f9[_0x027c('0x4d')][_0x344c13['id']]=new FreshdeskAccount(_0x344c13);}else{_0x3a68f9[_0x027c('0x45')](_0x3a68f9[_0x027c('0x4d')][_0x344c13['id']],_0x344c13);}}}return _0x3a68f9[_0x027c('0x4d')];};};Realtime['prototype'][_0x027c('0x4e')]=function(){var _0x537e6c=this;return function(_0x46fe19){if(_0x46fe19){freeIsNotKey(_0x46fe19,_0x537e6c[_0x027c('0x21')],'id');for(var _0x404528=0x0,_0x3907c1={},_0x34cc83={};_0x404528<_0x46fe19[_0x027c('0x3f')];_0x404528+=0x1){_0x3907c1=_0x46fe19[_0x404528];if(_[_0x027c('0x42')](_0x537e6c[_0x027c('0x21')][_0x3907c1['id']])){_0x537e6c[_0x027c('0x21')][_0x3907c1['id']]=new ZohoAccount(_0x3907c1);}else{_0x537e6c['mergeFromDatabase'](_0x537e6c['zohoAccounts'][_0x3907c1['id']],_0x3907c1);}}}return _0x537e6c[_0x027c('0x21')];};};Realtime[_0x027c('0x3d')][_0x027c('0x4f')]=function(){var _0x53d9fd=this;return function(_0x506a5e){if(_0x506a5e){freeIsNotKey(_0x506a5e,_0x53d9fd[_0x027c('0x50')],'id');for(var _0x498ad2=0x0,_0x2e2999={},_0x1a9bb5={};_0x498ad2<_0x506a5e[_0x027c('0x3f')];_0x498ad2+=0x1){_0x2e2999=_0x506a5e[_0x498ad2];if(_['isUndefined'](_0x53d9fd[_0x027c('0x50')][_0x2e2999['id']])){_0x53d9fd[_0x027c('0x50')][_0x2e2999['id']]=new DeskAccount(_0x2e2999);}else{_0x53d9fd[_0x027c('0x45')](_0x53d9fd['deskAccounts'][_0x2e2999['id']],_0x2e2999);}}}return _0x53d9fd['deskAccounts'];};};Realtime['prototype'][_0x027c('0x51')]=function(){var _0x281478=this;return function(_0x1cc657){if(_0x1cc657){freeIsNotKey(_0x1cc657,_0x281478[_0x027c('0x20')],'id');for(var _0x484612=0x0,_0x50b067={},_0x266f68={};_0x484612<_0x1cc657[_0x027c('0x3f')];_0x484612+=0x1){_0x50b067=_0x1cc657[_0x484612];if(_[_0x027c('0x42')](_0x281478[_0x027c('0x20')][_0x50b067['id']])){_0x281478['sugarcrmAccounts'][_0x50b067['id']]=new SugarcrmAccount(_0x50b067);}else{_0x281478[_0x027c('0x45')](_0x281478[_0x027c('0x20')][_0x50b067['id']],_0x50b067);}}}return _0x281478[_0x027c('0x20')];};};Realtime[_0x027c('0x3d')][_0x027c('0x52')]=function(){var _0x453330=this;return function(_0xed9b60){if(_0xed9b60){freeIsNotKey(_0xed9b60,_0x453330[_0x027c('0x22')],'id');for(var _0xd8f939=0x0,_0x62201a={},_0xfb90ad={};_0xd8f939<_0xed9b60[_0x027c('0x3f')];_0xd8f939+=0x1){_0x62201a=_0xed9b60[_0xd8f939];if(_[_0x027c('0x42')](_0x453330[_0x027c('0x22')][_0x62201a['id']])){_0x453330['vtigerAccounts'][_0x62201a['id']]=new VtigerAccount(_0x62201a);}else{_0x453330[_0x027c('0x45')](_0x453330['vtigerAccounts'][_0x62201a['id']],_0x62201a);}}}return _0x453330[_0x027c('0x22')];};};Realtime[_0x027c('0x3d')][_0x027c('0x53')]=function(){var _0x21a34e=this;return function(_0x2818aa){if(_0x2818aa){freeIsNotKey(_0x2818aa,_0x21a34e[_0x027c('0x23')],'id');for(var _0x267bfd=0x0,_0x5663eb={},_0x4449a9={};_0x267bfd<_0x2818aa[_0x027c('0x3f')];_0x267bfd+=0x1){_0x5663eb=_0x2818aa[_0x267bfd];if(_[_0x027c('0x42')](_0x21a34e[_0x027c('0x23')][_0x5663eb['id']])){_0x21a34e[_0x027c('0x23')][_0x5663eb['id']]=new ServicenowAccount(_0x5663eb);}else{_0x21a34e[_0x027c('0x45')](_0x21a34e['servicenowAccounts'][_0x5663eb['id']],_0x5663eb);}}}return _0x21a34e[_0x027c('0x23')];};};Realtime[_0x027c('0x3d')][_0x027c('0x54')]=function(){var _0x2b75a4=this;return function(_0x2f0095){if(_0x2f0095){freeIsNotKey(_0x2f0095,_0x2b75a4[_0x027c('0x24')],'id');for(var _0x24677c=0x0,_0x3d8fd1={},_0x1f6dab={};_0x24677c<_0x2f0095[_0x027c('0x3f')];_0x24677c+=0x1){_0x3d8fd1=_0x2f0095[_0x24677c];if(_[_0x027c('0x42')](_0x2b75a4[_0x027c('0x24')][_0x3d8fd1['id']])){_0x2b75a4[_0x027c('0x24')][_0x3d8fd1['id']]=new Dynamics365Account(_0x3d8fd1);}else{_0x2b75a4[_0x027c('0x45')](_0x2b75a4['dynamics365Accounts'][_0x3d8fd1['id']],_0x3d8fd1);}}}return _0x2b75a4[_0x027c('0x24')];};};Realtime['prototype'][_0x027c('0x55')]=function(){var _0x13fb36=this;return function(_0xde7975){if(_0xde7975){freeIsNotKey(_0xde7975,_0x13fb36[_0x027c('0x25')],'id');for(var _0x977632=0x0,_0x182dbf={},_0x3236eb={};_0x977632<_0xde7975['length'];_0x977632+=0x1){_0x182dbf=_0xde7975[_0x977632];if(_[_0x027c('0x42')](_0x13fb36[_0x027c('0x25')][_0x182dbf['id']])){_0x13fb36[_0x027c('0x25')][_0x182dbf['id']]=new FreshsalesAccount(_0x182dbf);}else{_0x13fb36[_0x027c('0x45')](_0x13fb36[_0x027c('0x25')][_0x182dbf['id']],_0x182dbf);}}}return _0x13fb36[_0x027c('0x25')];};};Realtime[_0x027c('0x3d')][_0x027c('0x56')]=function(){var _0x456db9=this;return function(_0x5576da){for(var _0x306521=0x0;_0x306521<_0x5576da[_0x027c('0x3f')];_0x306521+=0x1){_[_0x027c('0x57')](_0x456db9[_0x027c('0x48')][_0x5576da[_0x306521]['name']],_0x5576da[_0x306521]);}return _0x456db9[_0x027c('0x48')];};};Realtime['prototype'][_0x027c('0x58')]=function(){var _0x43b1a1=this;return function(_0x4c64ec){clearVoiceQueues(_0x43b1a1['voiceQueues']);if(_0x4c64ec){_0x4c64ec=_['groupBy'](_0x4c64ec,_0x027c('0x59'));for(var _0x1de61f in _0x4c64ec){if(_0x4c64ec['hasOwnProperty'](_0x1de61f)){var _0x4fdf3c={};for(var _0x56f2d7=0x0;_0x56f2d7<_0x4c64ec[_0x1de61f][_0x027c('0x3f')];_0x56f2d7+=0x1){var _0x4f771b=_0x4c64ec[_0x1de61f][_0x56f2d7][_0x027c('0x5a')];if(_0x43b1a1[_0x027c('0x48')][_0x4f771b]){if(_0x4c64ec[_0x1de61f][_0x56f2d7][_0x027c('0x5b')]){_0x43b1a1['voiceQueues'][_0x4f771b][_0x027c('0x30')]+=0x1;}if(_0x4c64ec[_0x1de61f][_0x56f2d7][_0x027c('0x5c')]){_0x43b1a1[_0x027c('0x48')][_0x4f771b]['abandoned']+=0x1;}_0x43b1a1[_0x027c('0x48')][_0x4f771b][_0x027c('0x2c')]+=moment(_0x4c64ec[_0x1de61f][_0x56f2d7]['queuecallerleaveAt'])['diff'](moment(_0x4c64ec[_0x1de61f][_0x56f2d7][_0x027c('0x5d')]),_0x027c('0x5e'))||0x0;if(_0x56f2d7===_0x4c64ec[_0x1de61f][_0x027c('0x3f')]-0x1){_0x43b1a1['voiceQueues'][_0x4f771b]['sumDuration']+=moment(_0x4c64ec[_0x1de61f][_0x56f2d7][_0x027c('0x5f')]||_0x4c64ec[_0x1de61f][_0x56f2d7]['queuecallerabandonAt']||_0x4c64ec[_0x1de61f][_0x56f2d7][_0x027c('0x60')])[_0x027c('0x61')](moment(_0x4c64ec[_0x1de61f][_0x56f2d7][_0x027c('0x5d')]),_0x027c('0x5e'))||0x0;_0x43b1a1[_0x027c('0x48')][_0x4f771b][_0x027c('0x2a')]+=0x1;if(_0x4c64ec[_0x1de61f][_0x56f2d7][_0x027c('0x62')]){_0x43b1a1[_0x027c('0x48')][_0x4f771b][_0x027c('0x2b')]+=0x1;_0x43b1a1[_0x027c('0x48')][_0x4f771b][_0x027c('0x2e')]+=moment(_0x4c64ec[_0x1de61f][_0x56f2d7][_0x027c('0x5f')])['diff'](moment(_0x4c64ec[_0x1de61f][_0x56f2d7]['queuecallerleaveAt']),_0x027c('0x5e'))||0x0;}}else{_0x43b1a1['voiceQueues'][_0x4f771b][_0x027c('0x2d')]+=_0x43b1a1[_0x027c('0x48')][_0x4f771b][_0x027c('0x2c')]||0x0;}}}}}}return _0x43b1a1[_0x027c('0x48')];};};Realtime['prototype'][_0x027c('0x63')]=function(){var _0x11abfc=this;return function(_0x1cbeef){clearVoiceCallReports(_0x11abfc[_0x027c('0x1a')]);if(_0x1cbeef){for(var _0x59ada8=0x0;_0x59ada8<_0x1cbeef['length'];_0x59ada8+=0x1){_0x11abfc[_0x027c('0x1a')]['total']+=0x1;_0x11abfc[_0x027c('0x1a')][_0x027c('0x2d')]+=_0x1cbeef[_0x59ada8][_0x027c('0x64')];if(_0x1cbeef[_0x59ada8]['disposition']==='ANSWERED'){_0x11abfc['outbound'][_0x027c('0x2b')]+=0x1;_0x11abfc['outbound']['sumHoldTime']+=_0x1cbeef[_0x59ada8][_0x027c('0x64')]-_0x1cbeef[_0x59ada8][_0x027c('0x65')]||0x0;_0x11abfc[_0x027c('0x1a')][_0x027c('0x2e')]+=_0x1cbeef[_0x59ada8][_0x027c('0x65')];}}}return _0x11abfc[_0x027c('0x1a')];};};Realtime[_0x027c('0x3d')][_0x027c('0x66')]=function(){var _0x277e27=this;return function(_0xccf4a7){if(_0xccf4a7){freeIsNotKey(_0xccf4a7,_0x277e27[_0x027c('0x19')],_0x027c('0x44'));for(var _0x1e9922=0x0,_0x2652c9={};_0x1e9922<_0xccf4a7[_0x027c('0x3f')];_0x1e9922+=0x1){_0x2652c9=_0xccf4a7[_0x1e9922];if(_[_0x027c('0x42')](_0x277e27[_0x027c('0x19')][_0x2652c9[_0x027c('0x44')]])){_0x277e27[_0x027c('0x19')][_0x2652c9[_0x027c('0x44')]]=new Campaign(_0x2652c9);}else{_0x277e27['mergeFromDatabase'](_0x277e27[_0x027c('0x19')][_0x2652c9['name']],_0x2652c9);_0x277e27[_0x027c('0x19')][_0x2652c9[_0x027c('0x44')]][_0x027c('0x67')]=_0x2652c9[_0x027c('0x68')]?_0x2652c9[_0x027c('0x68')][_0x027c('0x44')]:undefined;}}}return _0x277e27[_0x027c('0x19')];};};Realtime[_0x027c('0x3d')][_0x027c('0x69')]=function(){var _0x3c8868=this;return function(_0x40dc7f){if(_0x40dc7f){freeIsNotKey(_0x40dc7f,_0x3c8868['voiceExtensions'],'id');for(var _0x341096=0x0,_0x464a4d={};_0x341096<_0x40dc7f['length'];_0x341096+=0x1){_0x464a4d=_0x40dc7f[_0x341096];if(_['isUndefined'](_0x3c8868[_0x027c('0x6a')][_0x464a4d['id']])){_0x3c8868['voiceExtensions'][_0x464a4d['id']]=new VoiceExtension(_0x464a4d);}else{_0x3c8868[_0x027c('0x45')](_0x3c8868[_0x027c('0x6a')][_0x464a4d['id']],_0x464a4d);}}}return _0x3c8868[_0x027c('0x6a')];};};Realtime[_0x027c('0x3d')][_0x027c('0x6b')]=function(){var _0x273a28=this;return function(_0x5243f0){clearCampaigns(_0x273a28[_0x027c('0x19')]);for(var _0x44a78b=0x0;_0x44a78b<_0x5243f0[_0x027c('0x3f')];_0x44a78b+=0x1){_[_0x027c('0x57')](_0x273a28['campaigns'][_0x5243f0[_0x44a78b][_0x027c('0x44')]],_0x5243f0[_0x44a78b]);}return _0x273a28[_0x027c('0x19')];};};Realtime[_0x027c('0x3d')][_0x027c('0x6c')]=function(){var _0x134b5b=this;return function(_0x122674){if(_0x122674){freeIsNotKey(_0x122674,_0x134b5b[_0x027c('0x6d')],'id');for(var _0x3794c7=0x0,_0x420e88={},_0x497b12={};_0x3794c7<_0x122674[_0x027c('0x3f')];_0x3794c7+=0x1){_0x420e88=_0x122674[_0x3794c7];if(_['isUndefined'](_0x134b5b[_0x027c('0x6d')][_0x420e88['id']])){_0x134b5b[_0x027c('0x6d')][_0x420e88['id']]=new FaxAccount(_0x420e88);}else{_0x134b5b['mergeFromDatabase'](_0x134b5b['faxAccounts'][_0x420e88['id']],_0x420e88);}}}return _0x134b5b[_0x027c('0x6d')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0x3843=['queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','total','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','initCampaigns','dialQueueProject','SquareProject','initCampaignHopperHistory','merge','initFaxAccounts','exports','bluebird','lodash','moment','../model/telephone','../model/trunk','../model/voiceQueue','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/freshsalesAccount','telephones','trunks','voiceQueues','triggers','campaigns','templates','outbound','voiceExtensions','channels','queueChannels','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','deskAccounts','servicenowAccounts','dynamics365Accounts','faxAccounts','hasOwnProperty','mapKeys','format','SIP/%s','name','isNil','interface','answered','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','unmanaged','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','prototype','length','isUndefined','agents','mergeFromDatabase','initVoiceQueues','initTriggers','initFreshdeskAccounts','initZohoAccounts','zohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','vtigerAccounts','initDynamics365Accounts','freshsalesAccounts','groupBy','uniqueid','queue','queuecallerexit'];(function(_0x261b8a,_0x553ec4){var _0x3455e8=function(_0xdf10d4){while(--_0xdf10d4){_0x261b8a['push'](_0x261b8a['shift']());}};_0x3455e8(++_0x553ec4);}(_0x3843,0x13b));var _0x3384=function(_0x8a4cc1,_0x44e867){_0x8a4cc1=_0x8a4cc1-0x0;var _0x45fab9=_0x3843[_0x8a4cc1];return _0x45fab9;};'use strict';var BPromise=require(_0x3384('0x0'));var util=require('util');var _=require(_0x3384('0x1'));var moment=require(_0x3384('0x2'));var Agent=require('../model/agent');var Telephone=require(_0x3384('0x3'));var Trunk=require(_0x3384('0x4'));var VoiceQueue=require(_0x3384('0x5'));var Trigger=require('../model/trigger');var Template=require(_0x3384('0x6'));var Campaign=require(_0x3384('0x7'));var VoiceExtension=require(_0x3384('0x8'));var ZendeskAccount=require(_0x3384('0x9'));var SalesforceAccount=require(_0x3384('0xa'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x3384('0xb'));var DeskAccount=require(_0x3384('0xc'));var VtigerAccount=require(_0x3384('0xd'));var ServicenowAccount=require(_0x3384('0xe'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0x3384('0xf'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this['agents']={};this[_0x3384('0x10')]={};this[_0x3384('0x11')]={};this[_0x3384('0x12')]={};this[_0x3384('0x13')]={};this[_0x3384('0x14')]={};this[_0x3384('0x15')]={};this[_0x3384('0x16')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x3384('0x17')]={};this[_0x3384('0x18')]={};this[_0x3384('0x19')]={};this['outboundChannels']={};this['timers']={};this[_0x3384('0x1a')]={};this[_0x3384('0x1b')]={};this[_0x3384('0x1c')]={};this[_0x3384('0x1d')]={};this[_0x3384('0x1e')]={};this['zohoAccounts']={};this[_0x3384('0x1f')]={};this['vtigerAccounts']={};this[_0x3384('0x20')]={};this[_0x3384('0x21')]={};this['freshsalesAccounts']={};this[_0x3384('0x22')]={};};function freeIsNotKey(_0x9d003c,_0x11e90d,_0x2c60a2){var _0x57443c=_['mapKeys'](_0x9d003c,function(_0xf82e3,_0x55478c){return _0xf82e3[_0x2c60a2];});for(var _0xf62915 in _0x11e90d){if(_0x11e90d[_0x3384('0x23')](_0xf62915)){if(!_0x57443c[_0xf62915]){delete _0x11e90d[_0xf62915];}}}}function freeIsNotKeySip(_0x5b0d89,_0x4bb20d){var _0x504daf=_[_0x3384('0x24')](_0x5b0d89,function(_0x3e6942,_0x1ac8e8){return util[_0x3384('0x25')](_0x3384('0x26'),_0x3e6942[_0x3384('0x27')]);});for(var _0x27c5b3 in _0x4bb20d){if(_0x4bb20d['hasOwnProperty'](_0x27c5b3)){if(!_0x504daf[_0x27c5b3]){delete _0x4bb20d[_0x27c5b3];}}}}function freeIsNotKeyAgent(_0x51e547,_0x36ded3){var _0xaca5b1=_['mapKeys'](_0x51e547,function(_0x4ce06c,_0x414ebf){var _0x308f2=_[_0x3384('0x28')](_0x4ce06c[_0x3384('0x29')])?util[_0x3384('0x25')](_0x3384('0x26'),_0x4ce06c[_0x3384('0x27')]):_0x4ce06c[_0x3384('0x29')];return _0x308f2;});for(var _0x82be20 in _0x36ded3){if(_0x36ded3[_0x3384('0x23')](_0x82be20)){if(!_0xaca5b1[_0x82be20]){delete _0x36ded3[_0x82be20];}}}}function clearVoiceCallReports(_0xd7ffa0){_0xd7ffa0['total']=0x0;_0xd7ffa0[_0x3384('0x2a')]=0x0;_0xd7ffa0[_0x3384('0x2b')]=0x0;_0xd7ffa0[_0x3384('0x2c')]=0x0;_0xd7ffa0[_0x3384('0x2d')]=0x0;}function clearCampaigns(_0x832910){if(!_[_0x3384('0x2e')](_0x832910)){for(var _0x2e5622 in _0x832910){if(_0x832910[_0x3384('0x23')](_0x2e5622)){_0x832910[_0x2e5622][_0x3384('0x2f')]=0x0;_0x832910[_0x2e5622]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0x5a73c1){if(!_[_0x3384('0x2e')](_0x5a73c1)){for(var _0x3a4ec3 in _0x5a73c1){if(_0x5a73c1['hasOwnProperty'](_0x3a4ec3)){_0x5a73c1[_0x3a4ec3]['total']=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x2a')]=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x30')]=0x0;_0x5a73c1[_0x3a4ec3]['abandoned']=0x0;_0x5a73c1[_0x3a4ec3]['sumHoldTime']=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x2c')]=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x2d')]=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x31')]=0x0;_0x5a73c1[_0x3a4ec3]['outboundNoAnswerCallsDay']=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x32')]=0x0;_0x5a73c1[_0x3a4ec3]['outboundCongestionCallsDay']=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x33')]=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x34')]=0x0;_0x5a73c1[_0x3a4ec3]['outboundDropCallsDayTimeout']=0x0;_0x5a73c1[_0x3a4ec3]['outboundDropCallsDayCallersExit']=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x35')]=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x36')]=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x37')]=0x0;_0x5a73c1[_0x3a4ec3]['outboundReCallsDay']=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x31')]=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x38')]=0x0;_0x5a73c1[_0x3a4ec3]['queueStatusComplete']=!![];}}}}Realtime[_0x3384('0x39')]['mergeFromDatabase']=function(_0x171dfe,_0x59cbcf){for(var _0x3c5ce9 in _0x59cbcf){if(_0x171dfe['hasOwnProperty'](_0x3c5ce9)){_0x171dfe[_0x3c5ce9]=_0x59cbcf[_0x3c5ce9];}}};Realtime['prototype']['initAgents']=function(){var _0x1bc546=this;return function(_0x186402){if(_0x186402){freeIsNotKeyAgent(_0x186402,_0x1bc546['agents']);for(var _0x58f2ba=0x0,_0xe7c0d9={},_0x822a87={};_0x58f2ba<_0x186402[_0x3384('0x3a')];_0x58f2ba+=0x1){_0xe7c0d9=_0x186402[_0x58f2ba];var _0x2e8324=_[_0x3384('0x28')](_0xe7c0d9[_0x3384('0x29')])?util[_0x3384('0x25')](_0x3384('0x26'),_0xe7c0d9[_0x3384('0x27')]):_0xe7c0d9['interface'];if(_[_0x3384('0x3b')](_0x1bc546[_0x3384('0x3c')][_0x2e8324])){_0x1bc546['agents'][_0x2e8324]=new Agent(_0xe7c0d9);}else{_0x1bc546[_0x3384('0x3d')](_0x1bc546['agents'][_0x2e8324],_0xe7c0d9);}}}return _0x1bc546[_0x3384('0x3c')];};};Realtime[_0x3384('0x39')]['initTelephones']=function(){var _0x241149=this;return function(_0x165b20){if(_0x165b20){freeIsNotKeySip(_0x165b20,_0x241149[_0x3384('0x10')]);for(var _0x2ac9a9=0x0,_0x29dd8b={},_0x38bccb={};_0x2ac9a9<_0x165b20[_0x3384('0x3a')];_0x2ac9a9+=0x1){_0x29dd8b=_0x165b20[_0x2ac9a9];if(_[_0x3384('0x3b')](_0x241149[_0x3384('0x10')][util[_0x3384('0x25')](_0x3384('0x26'),_0x29dd8b[_0x3384('0x27')])])){_0x241149[_0x3384('0x10')][util['format']('SIP/%s',_0x29dd8b[_0x3384('0x27')])]=new Telephone(_0x29dd8b);}else{_0x241149[_0x3384('0x3d')](_0x241149['telephones'][util[_0x3384('0x25')]('SIP/%s',_0x29dd8b[_0x3384('0x27')])],_0x29dd8b);}}}return _0x241149['telephones'];};};Realtime['prototype']['initTrunks']=function(){var _0x539763=this;return function(_0x5252bb){if(_0x5252bb){freeIsNotKeySip(_0x5252bb,_0x539763['trunks']);for(var _0x47c8e1=0x0,_0x1708dc={},_0x12c33e={};_0x47c8e1<_0x5252bb[_0x3384('0x3a')];_0x47c8e1+=0x1){_0x1708dc=_0x5252bb[_0x47c8e1];if(_[_0x3384('0x3b')](_0x539763['trunks'][util[_0x3384('0x25')]('SIP/%s',_0x1708dc[_0x3384('0x27')])])){_0x539763[_0x3384('0x11')][util['format'](_0x3384('0x26'),_0x1708dc[_0x3384('0x27')])]=new Trunk(_0x1708dc);}else{_0x539763[_0x3384('0x3d')](_0x539763[_0x3384('0x11')][util[_0x3384('0x25')](_0x3384('0x26'),_0x1708dc['name'])],_0x1708dc);}}}return _0x539763[_0x3384('0x11')];};};Realtime[_0x3384('0x39')][_0x3384('0x3e')]=function(){var _0x5c6a4b=this;return function(_0x3127c2){if(_0x3127c2){freeIsNotKey(_0x3127c2,_0x5c6a4b['voiceQueues'],'name');for(var _0x46fb33=0x0,_0xd82341={},_0x18a99e={};_0x46fb33<_0x3127c2[_0x3384('0x3a')];_0x46fb33+=0x1){_0xd82341=_0x3127c2[_0x46fb33];if(_[_0x3384('0x3b')](_0x5c6a4b['voiceQueues'][_0xd82341[_0x3384('0x27')]])){_0x5c6a4b[_0x3384('0x12')][_0xd82341[_0x3384('0x27')]]=new VoiceQueue(_0xd82341);}else{_0x5c6a4b[_0x3384('0x3d')](_0x5c6a4b[_0x3384('0x12')][_0xd82341[_0x3384('0x27')]],_0xd82341);}}}return _0x5c6a4b[_0x3384('0x12')];};};Realtime[_0x3384('0x39')][_0x3384('0x3f')]=function(){var _0x201704=this;return function(_0x298634){if(_0x298634){freeIsNotKey(_0x298634,_0x201704[_0x3384('0x13')],'id');for(var _0x3644a5=0x0,_0x43fc57={},_0x395b52={};_0x3644a5<_0x298634[_0x3384('0x3a')];_0x3644a5+=0x1){_0x43fc57=_0x298634[_0x3644a5];if(_[_0x3384('0x3b')](_0x201704['triggers'][_0x43fc57['id']])){_0x201704[_0x3384('0x13')][_0x43fc57['id']]=new Trigger(_0x43fc57);}else{_0x201704[_0x3384('0x3d')](_0x201704[_0x3384('0x13')][_0x43fc57['id']],_0x43fc57);}}}return _0x201704[_0x3384('0x13')];};};Realtime[_0x3384('0x39')]['initTemplates']=function(){var _0x1602c4=this;return function(_0x3213da){if(_0x3213da){freeIsNotKey(_0x3213da,_0x1602c4[_0x3384('0x15')],'id');for(var _0x2c7946=0x0,_0x76d89e={},_0x4e4989={};_0x2c7946<_0x3213da[_0x3384('0x3a')];_0x2c7946+=0x1){_0x76d89e=_0x3213da[_0x2c7946];if(_[_0x3384('0x3b')](_0x1602c4['templates'][_0x76d89e['id']])){_0x1602c4[_0x3384('0x15')][_0x76d89e['id']]=new Template(_0x76d89e);}else{_0x1602c4[_0x3384('0x3d')](_0x1602c4[_0x3384('0x15')][_0x76d89e['id']],_0x76d89e);}}}return _0x1602c4[_0x3384('0x15')];};};Realtime['prototype']['initZendeskAccounts']=function(){var _0x2a7696=this;return function(_0x288c9a){if(_0x288c9a){freeIsNotKey(_0x288c9a,_0x2a7696[_0x3384('0x1b')],'id');for(var _0x3da069=0x0,_0x22202d={},_0x454230={};_0x3da069<_0x288c9a[_0x3384('0x3a')];_0x3da069+=0x1){_0x22202d=_0x288c9a[_0x3da069];if(_[_0x3384('0x3b')](_0x2a7696[_0x3384('0x1b')][_0x22202d['id']])){_0x2a7696[_0x3384('0x1b')][_0x22202d['id']]=new ZendeskAccount(_0x22202d);}else{_0x2a7696['mergeFromDatabase'](_0x2a7696[_0x3384('0x1b')][_0x22202d['id']],_0x22202d);}}}return _0x2a7696[_0x3384('0x1b')];};};Realtime['prototype']['initSalesforceAccounts']=function(){var _0xcffe23=this;return function(_0x1c4803){if(_0x1c4803){freeIsNotKey(_0x1c4803,_0xcffe23[_0x3384('0x1c')],'id');for(var _0x4d9048=0x0,_0x4a49d8={},_0x4bfa74={};_0x4d9048<_0x1c4803[_0x3384('0x3a')];_0x4d9048+=0x1){_0x4a49d8=_0x1c4803[_0x4d9048];if(_[_0x3384('0x3b')](_0xcffe23['salesforceAccounts'][_0x4a49d8['id']])){_0xcffe23[_0x3384('0x1c')][_0x4a49d8['id']]=new SalesforceAccount(_0x4a49d8);}else{_0xcffe23[_0x3384('0x3d')](_0xcffe23[_0x3384('0x1c')][_0x4a49d8['id']],_0x4a49d8);}}}return _0xcffe23[_0x3384('0x1c')];};};Realtime[_0x3384('0x39')][_0x3384('0x40')]=function(){var _0x46b76b=this;return function(_0x5b93d6){if(_0x5b93d6){freeIsNotKey(_0x5b93d6,_0x46b76b[_0x3384('0x1e')],'id');for(var _0x25719a=0x0,_0x373183={},_0x558b0f={};_0x25719a<_0x5b93d6['length'];_0x25719a+=0x1){_0x373183=_0x5b93d6[_0x25719a];if(_[_0x3384('0x3b')](_0x46b76b[_0x3384('0x1e')][_0x373183['id']])){_0x46b76b[_0x3384('0x1e')][_0x373183['id']]=new FreshdeskAccount(_0x373183);}else{_0x46b76b[_0x3384('0x3d')](_0x46b76b['freshdeskAccounts'][_0x373183['id']],_0x373183);}}}return _0x46b76b[_0x3384('0x1e')];};};Realtime[_0x3384('0x39')][_0x3384('0x41')]=function(){var _0x1d9453=this;return function(_0x3138d3){if(_0x3138d3){freeIsNotKey(_0x3138d3,_0x1d9453[_0x3384('0x42')],'id');for(var _0x1c7e80=0x0,_0x8ffd9e={},_0x5d6e31={};_0x1c7e80<_0x3138d3[_0x3384('0x3a')];_0x1c7e80+=0x1){_0x8ffd9e=_0x3138d3[_0x1c7e80];if(_[_0x3384('0x3b')](_0x1d9453[_0x3384('0x42')][_0x8ffd9e['id']])){_0x1d9453[_0x3384('0x42')][_0x8ffd9e['id']]=new ZohoAccount(_0x8ffd9e);}else{_0x1d9453[_0x3384('0x3d')](_0x1d9453[_0x3384('0x42')][_0x8ffd9e['id']],_0x8ffd9e);}}}return _0x1d9453['zohoAccounts'];};};Realtime[_0x3384('0x39')][_0x3384('0x43')]=function(){var _0x4bb151=this;return function(_0x32a25a){if(_0x32a25a){freeIsNotKey(_0x32a25a,_0x4bb151['deskAccounts'],'id');for(var _0x4e7fd3=0x0,_0x345df0={},_0x4afc8a={};_0x4e7fd3<_0x32a25a[_0x3384('0x3a')];_0x4e7fd3+=0x1){_0x345df0=_0x32a25a[_0x4e7fd3];if(_[_0x3384('0x3b')](_0x4bb151['deskAccounts'][_0x345df0['id']])){_0x4bb151[_0x3384('0x1f')][_0x345df0['id']]=new DeskAccount(_0x345df0);}else{_0x4bb151[_0x3384('0x3d')](_0x4bb151[_0x3384('0x1f')][_0x345df0['id']],_0x345df0);}}}return _0x4bb151[_0x3384('0x1f')];};};Realtime[_0x3384('0x39')][_0x3384('0x44')]=function(){var _0xa4b8cb=this;return function(_0x91dd0f){if(_0x91dd0f){freeIsNotKey(_0x91dd0f,_0xa4b8cb['sugarcrmAccounts'],'id');for(var _0x49c398=0x0,_0x5c3e27={},_0x168346={};_0x49c398<_0x91dd0f['length'];_0x49c398+=0x1){_0x5c3e27=_0x91dd0f[_0x49c398];if(_[_0x3384('0x3b')](_0xa4b8cb['sugarcrmAccounts'][_0x5c3e27['id']])){_0xa4b8cb['sugarcrmAccounts'][_0x5c3e27['id']]=new SugarcrmAccount(_0x5c3e27);}else{_0xa4b8cb['mergeFromDatabase'](_0xa4b8cb[_0x3384('0x1d')][_0x5c3e27['id']],_0x5c3e27);}}}return _0xa4b8cb[_0x3384('0x1d')];};};Realtime[_0x3384('0x39')][_0x3384('0x45')]=function(){var _0x2ba339=this;return function(_0x23a042){if(_0x23a042){freeIsNotKey(_0x23a042,_0x2ba339[_0x3384('0x46')],'id');for(var _0x4acfe6=0x0,_0x144ce4={},_0x349c39={};_0x4acfe6<_0x23a042[_0x3384('0x3a')];_0x4acfe6+=0x1){_0x144ce4=_0x23a042[_0x4acfe6];if(_['isUndefined'](_0x2ba339['vtigerAccounts'][_0x144ce4['id']])){_0x2ba339[_0x3384('0x46')][_0x144ce4['id']]=new VtigerAccount(_0x144ce4);}else{_0x2ba339['mergeFromDatabase'](_0x2ba339[_0x3384('0x46')][_0x144ce4['id']],_0x144ce4);}}}return _0x2ba339['vtigerAccounts'];};};Realtime[_0x3384('0x39')]['initServicenowAccounts']=function(){var _0x3c6c6d=this;return function(_0x412ce3){if(_0x412ce3){freeIsNotKey(_0x412ce3,_0x3c6c6d[_0x3384('0x20')],'id');for(var _0x2b430e=0x0,_0x22bb4b={},_0x3ff12d={};_0x2b430e<_0x412ce3[_0x3384('0x3a')];_0x2b430e+=0x1){_0x22bb4b=_0x412ce3[_0x2b430e];if(_['isUndefined'](_0x3c6c6d[_0x3384('0x20')][_0x22bb4b['id']])){_0x3c6c6d['servicenowAccounts'][_0x22bb4b['id']]=new ServicenowAccount(_0x22bb4b);}else{_0x3c6c6d[_0x3384('0x3d')](_0x3c6c6d[_0x3384('0x20')][_0x22bb4b['id']],_0x22bb4b);}}}return _0x3c6c6d[_0x3384('0x20')];};};Realtime[_0x3384('0x39')][_0x3384('0x47')]=function(){var _0x5b12d4=this;return function(_0x35bb99){if(_0x35bb99){freeIsNotKey(_0x35bb99,_0x5b12d4[_0x3384('0x21')],'id');for(var _0x344c53=0x0,_0x23baa={},_0x1562bb={};_0x344c53<_0x35bb99[_0x3384('0x3a')];_0x344c53+=0x1){_0x23baa=_0x35bb99[_0x344c53];if(_[_0x3384('0x3b')](_0x5b12d4['dynamics365Accounts'][_0x23baa['id']])){_0x5b12d4['dynamics365Accounts'][_0x23baa['id']]=new Dynamics365Account(_0x23baa);}else{_0x5b12d4[_0x3384('0x3d')](_0x5b12d4[_0x3384('0x21')][_0x23baa['id']],_0x23baa);}}}return _0x5b12d4[_0x3384('0x21')];};};Realtime[_0x3384('0x39')]['initFreshsalesAccounts']=function(){var _0x366fb4=this;return function(_0x5f78ff){if(_0x5f78ff){freeIsNotKey(_0x5f78ff,_0x366fb4[_0x3384('0x48')],'id');for(var _0xc4fa75=0x0,_0x449863={},_0x340b54={};_0xc4fa75<_0x5f78ff[_0x3384('0x3a')];_0xc4fa75+=0x1){_0x449863=_0x5f78ff[_0xc4fa75];if(_[_0x3384('0x3b')](_0x366fb4[_0x3384('0x48')][_0x449863['id']])){_0x366fb4[_0x3384('0x48')][_0x449863['id']]=new FreshsalesAccount(_0x449863);}else{_0x366fb4[_0x3384('0x3d')](_0x366fb4[_0x3384('0x48')][_0x449863['id']],_0x449863);}}}return _0x366fb4[_0x3384('0x48')];};};Realtime[_0x3384('0x39')]['initVoiceQueueHopperHistory']=function(){var _0x5a4706=this;return function(_0x88edd9){for(var _0x1e834a=0x0;_0x1e834a<_0x88edd9[_0x3384('0x3a')];_0x1e834a+=0x1){_['merge'](_0x5a4706[_0x3384('0x12')][_0x88edd9[_0x1e834a]['name']],_0x88edd9[_0x1e834a]);}return _0x5a4706[_0x3384('0x12')];};};Realtime['prototype']['initVoiceQueueReports']=function(){var _0x427eaa=this;return function(_0xdc78d3){clearVoiceQueues(_0x427eaa[_0x3384('0x12')]);if(_0xdc78d3){_0xdc78d3=_[_0x3384('0x49')](_0xdc78d3,_0x3384('0x4a'));for(var _0x317656 in _0xdc78d3){if(_0xdc78d3[_0x3384('0x23')](_0x317656)){var _0x539a1f={};for(var _0xe0e16a=0x0;_0xe0e16a<_0xdc78d3[_0x317656][_0x3384('0x3a')];_0xe0e16a+=0x1){var _0x12a15b=_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x4b')];if(_0x427eaa[_0x3384('0x12')][_0x12a15b]){if(_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x4c')]){_0x427eaa[_0x3384('0x12')][_0x12a15b][_0x3384('0x30')]+=0x1;}if(_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x4d')]){_0x427eaa['voiceQueues'][_0x12a15b]['abandoned']+=0x1;}_0x427eaa[_0x3384('0x12')][_0x12a15b][_0x3384('0x2b')]+=moment(_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x4e')])[_0x3384('0x4f')](moment(_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x50')]),_0x3384('0x51'))||0x0;if(_0xe0e16a===_0xdc78d3[_0x317656][_0x3384('0x3a')]-0x1){_0x427eaa[_0x3384('0x12')][_0x12a15b]['sumDuration']+=moment(_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x52')]||_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x53')]||_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x54')])['diff'](moment(_0xdc78d3[_0x317656][_0xe0e16a]['queuecallerjoinAt']),_0x3384('0x51'))||0x0;_0x427eaa['voiceQueues'][_0x12a15b][_0x3384('0x55')]+=0x1;if(_0xdc78d3[_0x317656][_0xe0e16a]['queuecallercomplete']){_0x427eaa['voiceQueues'][_0x12a15b]['answered']+=0x1;_0x427eaa[_0x3384('0x12')][_0x12a15b]['sumBillable']+=moment(_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x52')])[_0x3384('0x4f')](moment(_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x4e')]),_0x3384('0x51'))||0x0;}}else{_0x427eaa[_0x3384('0x12')][_0x12a15b]['sumDuration']+=_0x427eaa['voiceQueues'][_0x12a15b][_0x3384('0x2b')]||0x0;}}}}}}return _0x427eaa[_0x3384('0x12')];};};Realtime[_0x3384('0x39')][_0x3384('0x56')]=function(){var _0x101ce3=this;return function(_0x4d72f2){clearVoiceCallReports(_0x101ce3['outbound']);if(_0x4d72f2){for(var _0x3b1fd5=0x0;_0x3b1fd5<_0x4d72f2[_0x3384('0x3a')];_0x3b1fd5+=0x1){_0x101ce3[_0x3384('0x16')][_0x3384('0x55')]+=0x1;_0x101ce3[_0x3384('0x16')][_0x3384('0x2c')]+=_0x4d72f2[_0x3b1fd5][_0x3384('0x57')];if(_0x4d72f2[_0x3b1fd5][_0x3384('0x58')]===_0x3384('0x59')){_0x101ce3[_0x3384('0x16')][_0x3384('0x2a')]+=0x1;_0x101ce3['outbound'][_0x3384('0x2b')]+=_0x4d72f2[_0x3b1fd5]['duration']-_0x4d72f2[_0x3b1fd5][_0x3384('0x5a')]||0x0;_0x101ce3[_0x3384('0x16')][_0x3384('0x2d')]+=_0x4d72f2[_0x3b1fd5][_0x3384('0x5a')];}}}return _0x101ce3['outbound'];};};Realtime[_0x3384('0x39')][_0x3384('0x5b')]=function(){var _0x457280=this;return function(_0x4ffa3f){if(_0x4ffa3f){freeIsNotKey(_0x4ffa3f,_0x457280[_0x3384('0x14')],_0x3384('0x27'));for(var _0x437d57=0x0,_0x527bd3={};_0x437d57<_0x4ffa3f[_0x3384('0x3a')];_0x437d57+=0x1){_0x527bd3=_0x4ffa3f[_0x437d57];if(_['isUndefined'](_0x457280[_0x3384('0x14')][_0x527bd3[_0x3384('0x27')]])){_0x457280[_0x3384('0x14')][_0x527bd3['name']]=new Campaign(_0x527bd3);}else{_0x457280[_0x3384('0x3d')](_0x457280['campaigns'][_0x527bd3[_0x3384('0x27')]],_0x527bd3);_0x457280[_0x3384('0x14')][_0x527bd3[_0x3384('0x27')]][_0x3384('0x5c')]=_0x527bd3[_0x3384('0x5d')]?_0x527bd3[_0x3384('0x5d')][_0x3384('0x27')]:undefined;}}}return _0x457280[_0x3384('0x14')];};};Realtime[_0x3384('0x39')]['initVoiceExtensions']=function(){var _0x4abaf4=this;return function(_0x1d7f01){if(_0x1d7f01){freeIsNotKey(_0x1d7f01,_0x4abaf4[_0x3384('0x17')],'id');for(var _0x2b38ba=0x0,_0x4200a1={};_0x2b38ba<_0x1d7f01[_0x3384('0x3a')];_0x2b38ba+=0x1){_0x4200a1=_0x1d7f01[_0x2b38ba];if(_[_0x3384('0x3b')](_0x4abaf4[_0x3384('0x17')][_0x4200a1['id']])){_0x4abaf4[_0x3384('0x17')][_0x4200a1['id']]=new VoiceExtension(_0x4200a1);}else{_0x4abaf4[_0x3384('0x3d')](_0x4abaf4[_0x3384('0x17')][_0x4200a1['id']],_0x4200a1);}}}return _0x4abaf4[_0x3384('0x17')];};};Realtime[_0x3384('0x39')][_0x3384('0x5e')]=function(){var _0x400a7e=this;return function(_0x43f84d){clearCampaigns(_0x400a7e['campaigns']);for(var _0x4d139c=0x0;_0x4d139c<_0x43f84d[_0x3384('0x3a')];_0x4d139c+=0x1){_[_0x3384('0x5f')](_0x400a7e[_0x3384('0x14')][_0x43f84d[_0x4d139c]['name']],_0x43f84d[_0x4d139c]);}return _0x400a7e['campaigns'];};};Realtime[_0x3384('0x39')][_0x3384('0x60')]=function(){var _0x5c5387=this;return function(_0x1254e1){if(_0x1254e1){freeIsNotKey(_0x1254e1,_0x5c5387['faxAccounts'],'id');for(var _0x4baf7b=0x0,_0x176bb0={},_0x4aa0d4={};_0x4baf7b<_0x1254e1[_0x3384('0x3a')];_0x4baf7b+=0x1){_0x176bb0=_0x1254e1[_0x4baf7b];if(_[_0x3384('0x3b')](_0x5c5387[_0x3384('0x22')][_0x176bb0['id']])){_0x5c5387[_0x3384('0x22')][_0x176bb0['id']]=new FaxAccount(_0x176bb0);}else{_0x5c5387[_0x3384('0x3d')](_0x5c5387['faxAccounts'][_0x176bb0['id']],_0x176bb0);}}}return _0x5c5387['faxAccounts'];};};module[_0x3384('0x61')]=Realtime;
\ No newline at end of file
index 493861b..cf5a7bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5305=['realtime','agents','telephones','prototype','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','find','accountcode','name','isNil','interface','format','SIP/%s','length','findAgent','connectedlinenum','assigned','lastAssignedTo','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','create','match','destination','exten','type','dialer','queue','lastdata','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','originatecalleridnum','channel','destinationchannel','calleridnum','disposition','ANSWERED','calleridname','transfers','uniqueid','monitor','monitors','monitorFilename','filename','createdAt','connectedlinename','xcally-motion-dialer','voiceAgentReport','forEach','voiceDialReport','startsWith','Local','substring','phone','indexOf','membername','transfererlinkedid','exports','moment','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./userReport'];(function(_0x3fb174,_0xcb266f){var _0x4ac336=function(_0x3a4d47){while(--_0x3a4d47){_0x3fb174['push'](_0x3fb174['shift']());}};_0x4ac336(++_0xcb266f);}(_0x5305,0xe7));var _0x5530=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x5305[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require('lodash');var moment=require(_0x5530('0x0'));var util=require('util');var config=require(_0x5530('0x1'));var ami=require(_0x5530('0x2'));var RpcVoiceAgentReport=require(_0x5530('0x3'));var RpcVoiceCallReport=require(_0x5530('0x4'));var RpcVoiceDialReport=require(_0x5530('0x5'));var RpcMemberReport=require(_0x5530('0x6'));var RpcVoiceQueueReport=require(_0x5530('0x7'));var RpcVoiceRecording=require(_0x5530('0x8'));var RpcVoiceTransferReport=require(_0x5530('0x9'));var VoiceQueueReport=require(_0x5530('0xa'));var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require('./voiceDialReport');var UserReport=require(_0x5530('0xb'));function Report(_0x17044d){this[_0x5530('0xc')]=_0x17044d;this[_0x5530('0xd')]=_0x17044d[_0x5530('0xd')];this['telephones']=_0x17044d[_0x5530('0xe')];}Report[_0x5530('0xf')]['sync']=function(_0x1937af){var _0x1e2243=new VoiceQueueReport(this['realtime']);var _0x2284cd=new VoiceAgentReport(this['realtime']);var _0xf03820=new VoiceDialReport(this['realtime']);var _0x108d87=new VoiceCallReport(this[_0x5530('0xc')]);var _0x4e17d9=new UserReport(this[_0x5530('0xc')]);if(config['xdr']&&config['xdr'][_0x5530('0x10')]){ami['on'](_0x5530('0x11'),this[_0x5530('0x12')][_0x5530('0x13')](this));ami['on'](_0x5530('0x14'),this[_0x5530('0x15')]['bind'](this));ami['on']('custom:voiceAgentReport',this['voiceAgentReport']['bind'](this));ami['on'](_0x5530('0x16'),this['voiceDialReport'][_0x5530('0x13')](this));ami['on'](_0x5530('0x17'),this[_0x5530('0x18')][_0x5530('0x13')](this));ami['on'](_0x5530('0x19'),this[_0x5530('0x1a')][_0x5530('0x13')](this));}};Report['prototype']['findAgent']=function(_0xa2db9d){var _0x181b1b;_0x181b1b=_[_0x5530('0x1b')](this['agents'],function(_0x22227f){return _0x22227f[_0x5530('0x1c')]==_0xa2db9d||_0x22227f[_0x5530('0x1d')]==_0xa2db9d;});if(_[_0x5530('0x1e')](_0x181b1b)){var _0x17d3aa=_[_0x5530('0x1b')](this['telephones'],function(_0xde9c9){return _0xde9c9[_0x5530('0x1c')]==_0xa2db9d||_0xde9c9['name']==_0xa2db9d;});if(_0x17d3aa){_0x181b1b=_[_0x5530('0x1b')](this['agents'],function(_0x5a3b82){return _0x5a3b82[_0x5530('0x1f')]==util[_0x5530('0x20')](_0x5530('0x21'),_0x17d3aa[_0x5530('0x1d')]);});}}return _0x181b1b;};Report[_0x5530('0xf')]['voiceQueueReport']=function(_0x5f1d35){for(var _0x557fa6=0x0;_0x557fa6<_0x5f1d35[_0x5530('0x22')];_0x557fa6+=0x1){var _0x193c2c=this[_0x5530('0x23')](_0x5f1d35[_0x557fa6][_0x5530('0x24')]);if(_0x193c2c){_0x5f1d35[_0x557fa6]['accountcode']=_0x193c2c[_0x5530('0x1c')];_0x5f1d35[_0x557fa6][_0x5530('0x25')]=!![];_0x5f1d35[_0x557fa6][_0x5530('0x26')]=_0x193c2c[_0x5530('0x1d')];_0x5f1d35[_0x557fa6][_0x5530('0x1f')]=_['isNil'](_0x193c2c[_0x5530('0x1f')])?util[_0x5530('0x20')](_0x5530('0x21'),_0x193c2c['name']):_0x193c2c[_0x5530('0x1f')];if(_0x5f1d35[_0x557fa6]['queuecallercomplete']){_0x5f1d35[_0x557fa6][_0x5530('0x27')]=moment()['format'](_0x5530('0x28'));}if(_0x5f1d35[_0x557fa6]['queuecallerexit']){_0x5f1d35[_0x557fa6]['queuecallerexitAt']=moment()[_0x5530('0x20')](_0x5530('0x28'));}RpcMemberReport[_0x5530('0x12')](_0x5f1d35[_0x557fa6]);}RpcVoiceQueueReport[_0x5530('0x29')](_0x5f1d35[_0x557fa6]);}};function extractCalleridNumber(_0x5c493f){var _0x48c31c=_0x5c493f[_0x5530('0x2a')](/<(.*?)>/);return _0x48c31c?_0x48c31c[0x1]:_0x5c493f;}Report[_0x5530('0xf')][_0x5530('0x15')]=function(_0x47d80e){_0x47d80e[_0x5530('0x2b')]=_0x47d80e[_0x5530('0x2b')]||_0x47d80e[_0x5530('0x2c')];if(_0x47d80e[_0x5530('0x2d')]==_0x5530('0x2e')){_0x47d80e['lastapplication']=_0x5530('0x2f');_0x47d80e[_0x5530('0x30')]=_0x47d80e['queue'];if(_0x47d80e['context']==_0x5530('0x31')){_0x47d80e[_0x5530('0x1c')]='';_0x47d80e[_0x5530('0x2b')]=extractCalleridNumber(_0x47d80e[_0x5530('0x32')]);}else if(_0x47d80e['context']==_0x5530('0x33')){if(_0x47d80e[_0x5530('0x2b')]==_0x5530('0x34')){_0x47d80e[_0x5530('0x2b')]=extractCalleridNumber(_0x47d80e[_0x5530('0x35')]);_0x47d80e['calleridnum']=_0x47d80e[_0x5530('0x36')];_0x47d80e['destinationchannel']=[_0x47d80e['channel'],_0x47d80e[_0x5530('0x37')]=_0x47d80e[_0x5530('0x38')]][0x0];_0x47d80e[_0x5530('0x32')]=_0x47d80e[_0x5530('0x35')];}else{_0x47d80e[_0x5530('0x2b')]=_0x47d80e[_0x5530('0x39')];_0x47d80e[_0x5530('0x39')]=_0x47d80e[_0x5530('0x36')];if(_0x47d80e[_0x5530('0x3a')]==_0x5530('0x3b')){_0x47d80e[_0x5530('0x1c')]=_0x47d80e[_0x5530('0x24')];}else{_0x47d80e['accountcode']='';}}}}else{_0x47d80e[_0x5530('0x32')]=util[_0x5530('0x20')]('\x22%s\x22\x20<%s>',_0x47d80e[_0x5530('0x3c')],_0x47d80e[_0x5530('0x39')]);}if(RpcVoiceTransferReport[_0x5530('0x3d')][_0x47d80e['linkedid']]){var _0x4ac577=RpcVoiceTransferReport['transfers'][_0x47d80e['linkedid']];_0x4ac577['transfereelinkedid']=_0x47d80e[_0x5530('0x3e')];RpcVoiceTransferReport[_0x5530('0x18')](_0x4ac577);delete RpcVoiceTransferReport[_0x5530('0x3d')][_0x47d80e['linkedid']];}RpcVoiceCallReport['create'](_0x47d80e);if(_0x47d80e[_0x5530('0x3f')]){for(var _0x4c5a3c=0x0;_0x4c5a3c<_0x47d80e[_0x5530('0x40')]['length'];_0x4c5a3c+=0x1){_0x47d80e[_0x5530('0x41')]=_0x47d80e[_0x5530('0x40')][_0x4c5a3c][_0x5530('0x42')];_0x47d80e[_0x5530('0x43')]=_0x47d80e['monitors'][_0x4c5a3c][_0x5530('0x43')];if(_0x47d80e[_0x5530('0x2c')]=='xcally-motion-preview'){_0x47d80e[_0x5530('0x39')]=_0x47d80e['connectedlinenum'];_0x47d80e[_0x5530('0x3c')]=_0x47d80e['connectedlinename'];_0x47d80e[_0x5530('0x24')]=_0x47d80e[_0x5530('0x1c')];_0x47d80e[_0x5530('0x44')]=_0x47d80e['membername'];_0x47d80e[_0x5530('0x2c')]=_0x47d80e['originatecalleridnum'];}else if(_0x47d80e[_0x5530('0x2c')]==_0x5530('0x45')){_0x47d80e[_0x5530('0x39')]=_0x47d80e[_0x5530('0x2b')];_0x47d80e['exten']=_0x47d80e[_0x5530('0x36')];}RpcVoiceRecording[_0x5530('0x29')](_0x47d80e);}}};Report[_0x5530('0xf')][_0x5530('0x46')]=function(_0x278b4a){if(_['isArray'](_0x278b4a)){_0x278b4a[_0x5530('0x47')](function(_0x5c4ff3){RpcVoiceAgentReport[_0x5530('0x29')](_0x5c4ff3);});}else{RpcVoiceAgentReport['create'](_0x278b4a);}};Report[_0x5530('0xf')][_0x5530('0x48')]=function(_0x3719af){RpcVoiceDialReport[_0x5530('0x29')](_0x3719af);var _0x441a6e;var _0x4e6145;var _0x3aa774=_0x3719af['channel'];if(_[_0x5530('0x49')](_0x3aa774,_0x5530('0x4a'))){_0x4e6145=_0x3aa774[_0x5530('0x4b')](_0x3aa774['indexOf']('/')+0x1,_0x3aa774['indexOf']('@'));_0x441a6e=_[_0x5530('0x1b')](this[_0x5530('0xd')],function(_0x503f60){return _0x503f60['mobile']==_0x4e6145||_0x503f60[_0x5530('0x4c')]==_0x4e6145||_0x503f60[_0x5530('0x1c')]==_0x4e6145;});}else{_0x4e6145=_0x3aa774[_0x5530('0x4b')](_0x3aa774[_0x5530('0x4d')]('/')+0x1,_0x3aa774['lastIndexOf']('-'));_0x441a6e=this[_0x5530('0x23')](_0x4e6145);}if(_0x441a6e){_0x3719af[_0x5530('0x1f')]=_[_0x5530('0x1e')](_0x441a6e[_0x5530('0x1f')])?util[_0x5530('0x20')](_0x5530('0x21'),_0x441a6e[_0x5530('0x1d')]):_0x441a6e[_0x5530('0x1f')];_0x3719af[_0x5530('0x4e')]=_0x441a6e[_0x5530('0x1d')];_0x3719af[_0x5530('0x1c')]=_0x441a6e[_0x5530('0x1c')];RpcMemberReport[_0x5530('0x48')](_0x3719af);}};Report[_0x5530('0xf')]['blindTransfer']=function(_0x444144){RpcVoiceTransferReport[_0x5530('0x3d')][_0x444144[_0x5530('0x4f')]]=_0x444144;};Report[_0x5530('0xf')][_0x5530('0x1a')]=function(_0x3d1d05){RpcVoiceTransferReport[_0x5530('0x1a')](_0x3d1d05);};module[_0x5530('0x50')]=Report;
\ No newline at end of file
+var _0x8f76=['xcally-motion-preview','calleridpreview','originatecalleridnum','channel','destinationchannel','calleridnum','disposition','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','create','monitor','monitors','monitorFilename','filename','createdAt','connectedlinename','membername','xcally-motion-dialer','voiceAgentReport','voiceDialReport','Local','substring','mobile','phone','indexOf','lastIndexOf','transfererlinkedid','exports','lodash','moment','util','../../../config/environment','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceAgentReport','./voiceDialReport','./userReport','agents','telephones','prototype','sync','realtime','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','voiceCallReport','custom:voiceAgentReport','custom:voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','accountcode','name','isNil','interface','SIP/%s','length','assigned','lastAssignedTo','format','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','match','destination','exten','dialer','queue','context','from-voip-provider','callerid'];(function(_0x4e8bf2,_0x2e6a5a){var _0x4df9a9=function(_0x272475){while(--_0x272475){_0x4e8bf2['push'](_0x4e8bf2['shift']());}};_0x4df9a9(++_0x2e6a5a);}(_0x8f76,0xcb));var _0x68f7=function(_0x3da832,_0x2133f1){_0x3da832=_0x3da832-0x0;var _0xe602f2=_0x8f76[_0x3da832];return _0xe602f2;};'use strict';var _=require(_0x68f7('0x0'));var moment=require(_0x68f7('0x1'));var util=require(_0x68f7('0x2'));var config=require(_0x68f7('0x3'));var ami=require('../ami');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0x68f7('0x4'));var RpcVoiceDialReport=require(_0x68f7('0x5'));var RpcMemberReport=require(_0x68f7('0x6'));var RpcVoiceQueueReport=require(_0x68f7('0x7'));var RpcVoiceRecording=require(_0x68f7('0x8'));var RpcVoiceTransferReport=require(_0x68f7('0x9'));var VoiceQueueReport=require(_0x68f7('0xa'));var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require(_0x68f7('0xb'));var VoiceDialReport=require(_0x68f7('0xc'));var UserReport=require(_0x68f7('0xd'));function Report(_0x4059b9){this['realtime']=_0x4059b9;this[_0x68f7('0xe')]=_0x4059b9[_0x68f7('0xe')];this['telephones']=_0x4059b9[_0x68f7('0xf')];}Report[_0x68f7('0x10')][_0x68f7('0x11')]=function(_0x434218){var _0x31b8a0=new VoiceQueueReport(this[_0x68f7('0x12')]);var _0x373df3=new VoiceAgentReport(this['realtime']);var _0xe21e0e=new VoiceDialReport(this[_0x68f7('0x12')]);var _0x433ac9=new VoiceCallReport(this[_0x68f7('0x12')]);var _0xd3c3f6=new UserReport(this['realtime']);if(config[_0x68f7('0x13')]&&config[_0x68f7('0x13')][_0x68f7('0x14')]){ami['on'](_0x68f7('0x15'),this[_0x68f7('0x16')][_0x68f7('0x17')](this));ami['on']('custom:voiceCallReport',this[_0x68f7('0x18')][_0x68f7('0x17')](this));ami['on'](_0x68f7('0x19'),this['voiceAgentReport'][_0x68f7('0x17')](this));ami['on'](_0x68f7('0x1a'),this['voiceDialReport']['bind'](this));ami['on'](_0x68f7('0x1b'),this[_0x68f7('0x1c')]['bind'](this));ami['on'](_0x68f7('0x1d'),this[_0x68f7('0x1e')][_0x68f7('0x17')](this));}};Report[_0x68f7('0x10')][_0x68f7('0x1f')]=function(_0x33860f){var _0x318358;_0x318358=_[_0x68f7('0x20')](this[_0x68f7('0xe')],function(_0x3afdb3){return _0x3afdb3[_0x68f7('0x21')]==_0x33860f||_0x3afdb3[_0x68f7('0x22')]==_0x33860f;});if(_[_0x68f7('0x23')](_0x318358)){var _0x25f8f1=_[_0x68f7('0x20')](this['telephones'],function(_0x4ac462){return _0x4ac462[_0x68f7('0x21')]==_0x33860f||_0x4ac462[_0x68f7('0x22')]==_0x33860f;});if(_0x25f8f1){_0x318358=_[_0x68f7('0x20')](this[_0x68f7('0xe')],function(_0x4ccaff){return _0x4ccaff[_0x68f7('0x24')]==util['format'](_0x68f7('0x25'),_0x25f8f1[_0x68f7('0x22')]);});}}return _0x318358;};Report[_0x68f7('0x10')]['voiceQueueReport']=function(_0x4560b9){for(var _0x571295=0x0;_0x571295<_0x4560b9[_0x68f7('0x26')];_0x571295+=0x1){var _0x436091=this[_0x68f7('0x1f')](_0x4560b9[_0x571295]['connectedlinenum']);if(_0x436091){_0x4560b9[_0x571295][_0x68f7('0x21')]=_0x436091[_0x68f7('0x21')];_0x4560b9[_0x571295][_0x68f7('0x27')]=!![];_0x4560b9[_0x571295][_0x68f7('0x28')]=_0x436091[_0x68f7('0x22')];_0x4560b9[_0x571295][_0x68f7('0x24')]=_['isNil'](_0x436091['interface'])?util[_0x68f7('0x29')](_0x68f7('0x25'),_0x436091['name']):_0x436091[_0x68f7('0x24')];if(_0x4560b9[_0x571295]['queuecallercomplete']){_0x4560b9[_0x571295]['queuecallercompleteAt']=moment()['format'](_0x68f7('0x2a'));}if(_0x4560b9[_0x571295][_0x68f7('0x2b')]){_0x4560b9[_0x571295]['queuecallerexitAt']=moment()['format'](_0x68f7('0x2a'));}RpcMemberReport[_0x68f7('0x16')](_0x4560b9[_0x571295]);}RpcVoiceQueueReport['create'](_0x4560b9[_0x571295]);}};function extractCalleridNumber(_0x36dc87){var _0x43e1cb=_0x36dc87[_0x68f7('0x2c')](/<(.*?)>/);return _0x43e1cb?_0x43e1cb[0x1]:_0x36dc87;}Report[_0x68f7('0x10')]['voiceCallReport']=function(_0x2a00a5){_0x2a00a5[_0x68f7('0x2d')]=_0x2a00a5[_0x68f7('0x2d')]||_0x2a00a5[_0x68f7('0x2e')];if(_0x2a00a5['type']==_0x68f7('0x2f')){_0x2a00a5['lastapplication']=_0x68f7('0x30');_0x2a00a5['lastdata']=_0x2a00a5[_0x68f7('0x30')];if(_0x2a00a5[_0x68f7('0x31')]==_0x68f7('0x32')){_0x2a00a5[_0x68f7('0x21')]='';_0x2a00a5[_0x68f7('0x2d')]=extractCalleridNumber(_0x2a00a5[_0x68f7('0x33')]);}else if(_0x2a00a5[_0x68f7('0x31')]=='from-sip'){if(_0x2a00a5[_0x68f7('0x2d')]==_0x68f7('0x34')){_0x2a00a5[_0x68f7('0x2d')]=extractCalleridNumber(_0x2a00a5[_0x68f7('0x35')]);_0x2a00a5['calleridnum']=_0x2a00a5[_0x68f7('0x36')];_0x2a00a5['destinationchannel']=[_0x2a00a5[_0x68f7('0x37')],_0x2a00a5[_0x68f7('0x37')]=_0x2a00a5[_0x68f7('0x38')]][0x0];_0x2a00a5[_0x68f7('0x33')]=_0x2a00a5[_0x68f7('0x35')];}else{_0x2a00a5['destination']=_0x2a00a5[_0x68f7('0x39')];_0x2a00a5[_0x68f7('0x39')]=_0x2a00a5['originatecalleridnum'];if(_0x2a00a5[_0x68f7('0x3a')]=='ANSWERED'){_0x2a00a5[_0x68f7('0x21')]=_0x2a00a5[_0x68f7('0x3b')];}else{_0x2a00a5[_0x68f7('0x21')]='';}}}}else{_0x2a00a5[_0x68f7('0x33')]=util['format'](_0x68f7('0x3c'),_0x2a00a5[_0x68f7('0x3d')],_0x2a00a5['calleridnum']);}if(RpcVoiceTransferReport[_0x68f7('0x3e')][_0x2a00a5[_0x68f7('0x3f')]]){var _0x23b686=RpcVoiceTransferReport[_0x68f7('0x3e')][_0x2a00a5[_0x68f7('0x3f')]];_0x23b686[_0x68f7('0x40')]=_0x2a00a5[_0x68f7('0x41')];RpcVoiceTransferReport[_0x68f7('0x1c')](_0x23b686);delete RpcVoiceTransferReport[_0x68f7('0x3e')][_0x2a00a5['linkedid']];}RpcVoiceCallReport[_0x68f7('0x42')](_0x2a00a5);if(_0x2a00a5[_0x68f7('0x43')]){for(var _0x148bd7=0x0;_0x148bd7<_0x2a00a5[_0x68f7('0x44')][_0x68f7('0x26')];_0x148bd7+=0x1){_0x2a00a5[_0x68f7('0x45')]=_0x2a00a5[_0x68f7('0x44')][_0x148bd7][_0x68f7('0x46')];_0x2a00a5[_0x68f7('0x47')]=_0x2a00a5[_0x68f7('0x44')][_0x148bd7][_0x68f7('0x47')];if(_0x2a00a5['exten']==_0x68f7('0x34')){_0x2a00a5[_0x68f7('0x39')]=_0x2a00a5['connectedlinenum'];_0x2a00a5[_0x68f7('0x3d')]=_0x2a00a5[_0x68f7('0x48')];_0x2a00a5['connectedlinenum']=_0x2a00a5[_0x68f7('0x21')];_0x2a00a5[_0x68f7('0x48')]=_0x2a00a5[_0x68f7('0x49')];_0x2a00a5[_0x68f7('0x2e')]=_0x2a00a5[_0x68f7('0x36')];}else if(_0x2a00a5[_0x68f7('0x2e')]==_0x68f7('0x4a')){_0x2a00a5[_0x68f7('0x39')]=_0x2a00a5[_0x68f7('0x2d')];_0x2a00a5['exten']=_0x2a00a5[_0x68f7('0x36')];}RpcVoiceRecording[_0x68f7('0x42')](_0x2a00a5);}}};Report[_0x68f7('0x10')][_0x68f7('0x4b')]=function(_0x2e9bd4){if(_['isArray'](_0x2e9bd4)){_0x2e9bd4['forEach'](function(_0x43bdd1){RpcVoiceAgentReport[_0x68f7('0x42')](_0x43bdd1);});}else{RpcVoiceAgentReport[_0x68f7('0x42')](_0x2e9bd4);}};Report[_0x68f7('0x10')][_0x68f7('0x4c')]=function(_0x579b28){RpcVoiceDialReport[_0x68f7('0x42')](_0x579b28);var _0x39e136;var _0x59774c;var _0x11fab1=_0x579b28[_0x68f7('0x37')];if(_['startsWith'](_0x11fab1,_0x68f7('0x4d'))){_0x59774c=_0x11fab1[_0x68f7('0x4e')](_0x11fab1['indexOf']('/')+0x1,_0x11fab1['indexOf']('@'));_0x39e136=_[_0x68f7('0x20')](this[_0x68f7('0xe')],function(_0x123612){return _0x123612[_0x68f7('0x4f')]==_0x59774c||_0x123612[_0x68f7('0x50')]==_0x59774c||_0x123612[_0x68f7('0x21')]==_0x59774c;});}else{_0x59774c=_0x11fab1[_0x68f7('0x4e')](_0x11fab1[_0x68f7('0x51')]('/')+0x1,_0x11fab1[_0x68f7('0x52')]('-'));_0x39e136=this[_0x68f7('0x1f')](_0x59774c);}if(_0x39e136){_0x579b28[_0x68f7('0x24')]=_[_0x68f7('0x23')](_0x39e136[_0x68f7('0x24')])?util[_0x68f7('0x29')]('SIP/%s',_0x39e136['name']):_0x39e136[_0x68f7('0x24')];_0x579b28['membername']=_0x39e136[_0x68f7('0x22')];_0x579b28[_0x68f7('0x21')]=_0x39e136[_0x68f7('0x21')];RpcMemberReport[_0x68f7('0x4c')](_0x579b28);}};Report['prototype'][_0x68f7('0x1c')]=function(_0x27f323){RpcVoiceTransferReport[_0x68f7('0x3e')][_0x27f323[_0x68f7('0x53')]]=_0x27f323;};Report[_0x68f7('0x10')][_0x68f7('0x1e')]=function(_0xbe8e29){RpcVoiceTransferReport['attendedTransfer'](_0xbe8e29);};module[_0x68f7('0x54')]=Report;
\ No newline at end of file
index fd04281..535e3df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce89=['omit','actionid','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','[userReport][registry]','syncDeviceState','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','Local','substring','indexOf','mobile','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s','status','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','then','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isUndefined','emit','isNotNull','info','username','state','find','trunks','stateRegistry','merge'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xce89,0x1aa));var _0x9ce8=function(_0xe81823,_0x324f10){_0xe81823=_0xe81823-0x0;var _0x5314dd=_0xce89[_0xe81823];return _0x5314dd;};'use strict';var _=require(_0x9ce8('0x0'));var moment=require(_0x9ce8('0x1'));var util=require(_0x9ce8('0x2'));var Redis=require(_0x9ce8('0x3'));var BPromise=require('bluebird');var config=require(_0x9ce8('0x4'));var logger=require(_0x9ce8('0x5'))(_0x9ce8('0x6'));var ami=require(_0x9ce8('0x7'));config['redis']=_['defaults'](config[_0x9ce8('0x8')],{'host':_0x9ce8('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function UserReport(_0x2f9a38){this['trunks']=_0x2f9a38['trunks'];this[_0x9ce8('0xa')]=_0x2f9a38[_0x9ce8('0xa')];this[_0x9ce8('0xb')]=_0x2f9a38[_0x9ce8('0xb')];ami['on'](_0x9ce8('0xc'),this[_0x9ce8('0xd')][_0x9ce8('0xe')](this));ami['on'](_0x9ce8('0xf'),this['syncRegistry']['bind'](this));ami['on'](_0x9ce8('0x10'),this['syncDeviceState'][_0x9ce8('0xe')](this));ami['on'](_0x9ce8('0x11'),this[_0x9ce8('0x12')][_0x9ce8('0xe')](this));return this[_0x9ce8('0x13')]();}function showSipRegistrations(){Promise[_0x9ce8('0x14')]()['then'](ami[_0x9ce8('0x15')]())[_0x9ce8('0x16')](function(_0x2893d9){logger[_0x9ce8('0x17')](_0x9ce8('0x18'),util[_0x9ce8('0x19')](_0x2893d9,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0x9ce8('0x1a')](ami[_0x9ce8('0x1b')]())['catch'](function(_0x3d166c){logger[_0x9ce8('0x17')](_0x9ce8('0x1c'),util['inspect'](_0x3d166c,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x9ce8('0x14')]()[_0x9ce8('0x1a')](ami[_0x9ce8('0x1d')]())[_0x9ce8('0x16')](function(_0x55e697){logger[_0x9ce8('0x17')](_0x9ce8('0x1e'),util[_0x9ce8('0x19')](_0x55e697,{'showHidden':![],'depth':null}));});}UserReport[_0x9ce8('0x1f')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0x9ce8('0x14')]()['then'](showSipRegistrations())[_0x9ce8('0x1a')](listDeviceStates())[_0x9ce8('0x1a')](showPeersStatus());},0x32c8);};UserReport['prototype']['isNotNull']=function(_0x1a3d2a){return _0x1a3d2a!==null&&!_[_0x9ce8('0x20')](_0x1a3d2a);};UserReport[_0x9ce8('0x1f')]['emit']=function(_0x2315b4,_0x3868fe,_0x48acf3){io['to'](_0x2315b4)[_0x9ce8('0x21')](_0x3868fe,_0x48acf3);};UserReport[_0x9ce8('0x1f')]['syncRegistry']=function(_0x45fd99){try{if(this[_0x9ce8('0x22')](_0x45fd99)){logger[_0x9ce8('0x23')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x45fd99[_0x9ce8('0x24')],_0x45fd99[_0x9ce8('0x25')]);logger['debug']('[userReport][registry]',util[_0x9ce8('0x19')](_0x45fd99,{'showHidden':![],'depth':null}));var _0x594a90=_[_0x9ce8('0x26')](this[_0x9ce8('0x27')],{'defaultuser':_0x45fd99['username']});if(_0x594a90){_0x45fd99[_0x9ce8('0x28')]=_0x45fd99['state'];_[_0x9ce8('0x29')](_0x594a90,_[_0x9ce8('0x2a')](_0x45fd99,['event',_0x9ce8('0x2b'),_0x9ce8('0x24'),_0x9ce8('0x25')]));logger[_0x9ce8('0x2c')](_0x9ce8('0x2d'),util[_0x9ce8('0x19')](_0x594a90,{'showHidden':![],'depth':null}));this['emit'](util[_0x9ce8('0x2e')](_0x9ce8('0x2f'),_0x594a90[_0x9ce8('0x30')]),'trunk:save',_0x594a90);}}}catch(_0xac87be){logger[_0x9ce8('0x17')](_0x9ce8('0x31'),util['inspect'](_0xac87be,{'showHidden':![],'depth':null}));}};UserReport[_0x9ce8('0x1f')][_0x9ce8('0x32')]=function(_0x41622d){try{if(this['isNotNull'](_0x41622d)){logger['info'](_0x9ce8('0x33'),_0x41622d[_0x9ce8('0x34')],_0x41622d[_0x9ce8('0x25')]);logger['debug'](_0x9ce8('0x35'),util['inspect'](_0x41622d,{'showHidden':![],'depth':null}));if(this[_0x9ce8('0xa')][_0x41622d[_0x9ce8('0x34')]]){if(!this['agents'][_0x41622d[_0x9ce8('0x34')]][_0x9ce8('0x36')]||_0x41622d['state'][_0x9ce8('0x37')]()==_0x9ce8('0x38')){this[_0x9ce8('0xa')][_0x41622d[_0x9ce8('0x34')]][_0x9ce8('0x36')]=![];if(this[_0x9ce8('0xa')][_0x41622d['device']][_0x9ce8('0x25')]!==_0x41622d['state'][_0x9ce8('0x37')]()){this['agents'][_0x41622d[_0x9ce8('0x34')]][_0x9ce8('0x39')]=_[_0x9ce8('0x3a')](moment()[_0x9ce8('0x2e')]('x'));}this[_0x9ce8('0xa')][_0x41622d[_0x9ce8('0x34')]][_0x9ce8('0x25')]=_0x41622d[_0x9ce8('0x25')][_0x9ce8('0x37')]();this[_0x9ce8('0xa')][_0x41622d[_0x9ce8('0x34')]][_0x9ce8('0x3b')](_0x41622d);}}else if(this[_0x9ce8('0xb')][_0x41622d[_0x9ce8('0x34')]]){if(this[_0x9ce8('0xb')][_0x41622d['device']]['state']!==_0x41622d[_0x9ce8('0x25')][_0x9ce8('0x37')]()){this[_0x9ce8('0xb')][_0x41622d['device']][_0x9ce8('0x39')]=_['toNumber'](moment()['format']('x'));}this[_0x9ce8('0xb')][_0x41622d[_0x9ce8('0x34')]][_0x9ce8('0x25')]=_0x41622d['state'][_0x9ce8('0x37')]();logger[_0x9ce8('0x2c')](_0x9ce8('0x3c'),util['inspect'](this['telephones'][_0x41622d['device']],{'showHidden':![],'depth':null}));this['emit'](util[_0x9ce8('0x2e')]('telephone:%s',this[_0x9ce8('0xb')][_0x41622d['device']][_0x9ce8('0x30')]),_0x9ce8('0x3d'),this[_0x9ce8('0xb')][_0x41622d['device']]);}else if(this[_0x9ce8('0x27')][_0x41622d[_0x9ce8('0x34')]]){if(this[_0x9ce8('0x27')][_0x41622d[_0x9ce8('0x34')]][_0x9ce8('0x25')]!==_0x41622d['state'][_0x9ce8('0x37')]()){this[_0x9ce8('0x27')][_0x41622d[_0x9ce8('0x34')]]['stateTime']=_[_0x9ce8('0x3a')](moment()[_0x9ce8('0x2e')]('x'));}this['trunks'][_0x41622d['device']][_0x9ce8('0x25')]=_0x41622d[_0x9ce8('0x25')][_0x9ce8('0x37')]();logger[_0x9ce8('0x2c')](_0x9ce8('0x3e'),util['inspect'](this[_0x9ce8('0x27')][_0x41622d['device']],{'showHidden':![],'depth':null}));this[_0x9ce8('0x21')](util[_0x9ce8('0x2e')](_0x9ce8('0x2f'),this[_0x9ce8('0x27')][_0x41622d[_0x9ce8('0x34')]][_0x9ce8('0x30')]),_0x9ce8('0x3f'),this[_0x9ce8('0x27')][_0x41622d['device']]);}else if(_['startsWith'](_0x41622d[_0x9ce8('0x34')],_0x9ce8('0x40'))){var _0xa07fc0=_0x41622d[_0x9ce8('0x34')];var _0x59ceaa=_0xa07fc0[_0x9ce8('0x41')](_0xa07fc0[_0x9ce8('0x42')]('/')+0x1,_0xa07fc0[_0x9ce8('0x42')]('@'));var _0x535082=_['find'](this[_0x9ce8('0xa')],function(_0x25c0bf){return _0x25c0bf[_0x9ce8('0x43')]==_0x59ceaa||_0x25c0bf[_0x9ce8('0x44')]==_0x59ceaa||_0x25c0bf[_0x9ce8('0x45')]==_0x59ceaa;});if(_0x535082){if(_0x535082['state']!==_0x41622d['state'][_0x9ce8('0x37')]()){_0x535082[_0x9ce8('0x39')]=_[_0x9ce8('0x3a')](moment()[_0x9ce8('0x2e')]('x'));}_0x535082[_0x9ce8('0x25')]=_0x41622d['state'][_0x9ce8('0x37')]();_0x535082[_0x9ce8('0x36')]=!![];_0x535082[_0x9ce8('0x3b')](_0x41622d);}}}}catch(_0x88459e){logger[_0x9ce8('0x17')](_0x9ce8('0x35'),util[_0x9ce8('0x19')](_0x88459e,{'showHidden':![],'depth':null}));}};UserReport[_0x9ce8('0x1f')][_0x9ce8('0x12')]=function(_0x434ebf){try{if(this['isNotNull'](_0x434ebf)&&this[_0x9ce8('0x22')](_0x434ebf[_0x9ce8('0x11')])){logger[_0x9ce8('0x23')](_0x9ce8('0x46'),_0x434ebf[_0x9ce8('0x47')],_0x434ebf[_0x9ce8('0x48')],_0x434ebf['peerstatus']);logger[_0x9ce8('0x2c')](_0x9ce8('0x49'),util[_0x9ce8('0x19')](_0x434ebf,{'showHidden':![],'depth':null}));if(this[_0x9ce8('0xa')][_0x434ebf[_0x9ce8('0x47')]]){if(!this[_0x9ce8('0xa')][_0x434ebf[_0x9ce8('0x47')]][_0x9ce8('0x36')]||_0x434ebf[_0x9ce8('0x11')][_0x9ce8('0x37')]()=='registered'){this[_0x9ce8('0xa')][_0x434ebf[_0x9ce8('0x47')]][_0x9ce8('0x36')]=![];this[_0x9ce8('0xa')][_0x434ebf['peer']]['status']=_0x434ebf[_0x9ce8('0x11')][_0x9ce8('0x37')]();this[_0x9ce8('0xa')][_0x434ebf[_0x9ce8('0x47')]]['address']=_0x434ebf[_0x9ce8('0x48')];this[_0x9ce8('0xa')][_0x434ebf[_0x9ce8('0x47')]][_0x9ce8('0x3b')](_0x434ebf);}}else if(this[_0x9ce8('0xb')][_0x434ebf['peer']]){this['telephones'][_0x434ebf[_0x9ce8('0x47')]]['status']=_0x434ebf[_0x9ce8('0x11')][_0x9ce8('0x37')]();this[_0x9ce8('0xb')][_0x434ebf[_0x9ce8('0x47')]][_0x9ce8('0x48')]=_0x434ebf[_0x9ce8('0x48')];logger[_0x9ce8('0x2c')](_0x9ce8('0x4a'),util[_0x9ce8('0x19')](this[_0x9ce8('0xb')][_0x434ebf['peer']],{'showHidden':![],'depth':null}));this[_0x9ce8('0x21')](util[_0x9ce8('0x2e')](_0x9ce8('0x4b'),this[_0x9ce8('0xb')][_0x434ebf[_0x9ce8('0x47')]][_0x9ce8('0x30')]),'telephone:save',this[_0x9ce8('0xb')][_0x434ebf[_0x9ce8('0x47')]]);}else if(this[_0x9ce8('0x27')][_0x434ebf[_0x9ce8('0x47')]]){this[_0x9ce8('0x27')][_0x434ebf[_0x9ce8('0x47')]][_0x9ce8('0x4c')]=_0x434ebf['peerstatus'][_0x9ce8('0x37')]();this[_0x9ce8('0x27')][_0x434ebf[_0x9ce8('0x47')]][_0x9ce8('0x48')]=_0x434ebf[_0x9ce8('0x48')];logger[_0x9ce8('0x2c')](_0x9ce8('0x4d'),util['inspect'](this[_0x9ce8('0x27')][_0x434ebf[_0x9ce8('0x47')]],{'showHidden':![],'depth':null}));this[_0x9ce8('0x21')](util[_0x9ce8('0x2e')](_0x9ce8('0x2f'),this[_0x9ce8('0x27')][_0x434ebf[_0x9ce8('0x47')]][_0x9ce8('0x30')]),'trunk:save',this['trunks'][_0x434ebf[_0x9ce8('0x47')]]);}}}catch(_0x467f36){logger[_0x9ce8('0x17')](_0x9ce8('0x49'),util['inspect'](_0x467f36,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;
\ No newline at end of file
+var _0xc280=['socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','devicestatechange','syncDeviceState','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','inspect','syncRealtimeShow','prototype','isNotNull','isUndefined','emit','info','username','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','actionid','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','[userReport][devicestatechange]','device','toLowerCase','inuse','local','stateTime','toNumber','format','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','substring','indexOf','mobile','phone','syncPeerStatus','peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','registered','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','moment','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost'];(function(_0x19d07e,_0x290d42){var _0x5492e7=function(_0x5a3a4f){while(--_0x5a3a4f){_0x19d07e['push'](_0x19d07e['shift']());}};_0x5492e7(++_0x290d42);}(_0xc280,0x1b9));var _0x0c28=function(_0x2538b5,_0x24b676){_0x2538b5=_0x2538b5-0x0;var _0x49cc47=_0xc280[_0x2538b5];return _0x49cc47;};'use strict';var _=require('lodash');var moment=require(_0x0c28('0x0'));var util=require('util');var Redis=require(_0x0c28('0x1'));var BPromise=require('bluebird');var config=require(_0x0c28('0x2'));var logger=require(_0x0c28('0x3'))(_0x0c28('0x4'));var ami=require(_0x0c28('0x5'));config[_0x0c28('0x6')]=_[_0x0c28('0x7')](config[_0x0c28('0x6')],{'host':_0x0c28('0x8'),'port':0x18eb});var io=require(_0x0c28('0x9'))(new Redis(config['redis']));function UserReport(_0x31f447){this[_0x0c28('0xa')]=_0x31f447[_0x0c28('0xa')];this[_0x0c28('0xb')]=_0x31f447['agents'];this['telephones']=_0x31f447[_0x0c28('0xc')];ami['on'](_0x0c28('0xd'),this[_0x0c28('0xe')][_0x0c28('0xf')](this));ami['on']('registry',this[_0x0c28('0xe')][_0x0c28('0xf')](this));ami['on'](_0x0c28('0x10'),this[_0x0c28('0x11')][_0x0c28('0xf')](this));ami['on']('peerstatus',this['syncPeerStatus']['bind'](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0x0c28('0x12')]()[_0x0c28('0x13')](ami[_0x0c28('0x14')]())[_0x0c28('0x15')](function(_0x555ce2){logger[_0x0c28('0x16')](_0x0c28('0x17'),util['inspect'](_0x555ce2,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x0c28('0x12')]()['then'](ami[_0x0c28('0x18')]())[_0x0c28('0x15')](function(_0x4dd8df){logger[_0x0c28('0x16')](_0x0c28('0x19'),util['inspect'](_0x4dd8df,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x0c28('0x12')]()[_0x0c28('0x13')](ami[_0x0c28('0x1a')]())[_0x0c28('0x15')](function(_0xea7d77){logger[_0x0c28('0x16')](_0x0c28('0x1b'),util[_0x0c28('0x1c')](_0xea7d77,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x0c28('0x1d')]=function(){setInterval(function(){BPromise[_0x0c28('0x12')]()[_0x0c28('0x13')](showSipRegistrations())[_0x0c28('0x13')](listDeviceStates())[_0x0c28('0x13')](showPeersStatus());},0x32c8);};UserReport[_0x0c28('0x1e')][_0x0c28('0x1f')]=function(_0x300b25){return _0x300b25!==null&&!_[_0x0c28('0x20')](_0x300b25);};UserReport['prototype'][_0x0c28('0x21')]=function(_0x3b3912,_0x3bccd4,_0x4a4a10){io['to'](_0x3b3912)[_0x0c28('0x21')](_0x3bccd4,_0x4a4a10);};UserReport[_0x0c28('0x1e')][_0x0c28('0xe')]=function(_0x322230){try{if(this[_0x0c28('0x1f')](_0x322230)){logger[_0x0c28('0x22')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x322230[_0x0c28('0x23')],_0x322230[_0x0c28('0x24')]);logger[_0x0c28('0x25')](_0x0c28('0x26'),util[_0x0c28('0x1c')](_0x322230,{'showHidden':![],'depth':null}));var _0x3cf46b=_[_0x0c28('0x27')](this[_0x0c28('0xa')],{'defaultuser':_0x322230['username']});if(_0x3cf46b){_0x322230[_0x0c28('0x28')]=_0x322230[_0x0c28('0x24')];_[_0x0c28('0x29')](_0x3cf46b,_[_0x0c28('0x2a')](_0x322230,['event',_0x0c28('0x2b'),_0x0c28('0x23'),_0x0c28('0x24')]));logger[_0x0c28('0x25')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util['inspect'](_0x3cf46b,{'showHidden':![],'depth':null}));this[_0x0c28('0x21')](util['format'](_0x0c28('0x2c'),_0x3cf46b[_0x0c28('0x2d')]),_0x0c28('0x2e'),_0x3cf46b);}}}catch(_0x4c08ab){logger[_0x0c28('0x16')](_0x0c28('0x26'),util[_0x0c28('0x1c')](_0x4c08ab,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x0c28('0x11')]=function(_0x2dc7c9){try{if(this[_0x0c28('0x1f')](_0x2dc7c9)){logger[_0x0c28('0x22')](_0x0c28('0x2f'),_0x2dc7c9['device'],_0x2dc7c9['state']);logger[_0x0c28('0x25')](_0x0c28('0x30'),util[_0x0c28('0x1c')](_0x2dc7c9,{'showHidden':![],'depth':null}));if(this[_0x0c28('0xb')][_0x2dc7c9[_0x0c28('0x31')]]){if(!this[_0x0c28('0xb')][_0x2dc7c9[_0x0c28('0x31')]]['local']||_0x2dc7c9[_0x0c28('0x24')][_0x0c28('0x32')]()==_0x0c28('0x33')){this[_0x0c28('0xb')][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x34')]=![];if(this[_0x0c28('0xb')][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x24')]!==_0x2dc7c9['state'][_0x0c28('0x32')]()){this[_0x0c28('0xb')][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x35')]=_[_0x0c28('0x36')](moment()[_0x0c28('0x37')]('x'));}this['agents'][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x24')]=_0x2dc7c9[_0x0c28('0x24')]['toLowerCase']();this[_0x0c28('0xb')][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x38')](_0x2dc7c9);}}else if(this[_0x0c28('0xc')][_0x2dc7c9[_0x0c28('0x31')]]){if(this['telephones'][_0x2dc7c9['device']][_0x0c28('0x24')]!==_0x2dc7c9[_0x0c28('0x24')][_0x0c28('0x32')]()){this['telephones'][_0x2dc7c9['device']]['stateTime']=_[_0x0c28('0x36')](moment()[_0x0c28('0x37')]('x'));}this[_0x0c28('0xc')][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x24')]=_0x2dc7c9[_0x0c28('0x24')]['toLowerCase']();logger[_0x0c28('0x25')](_0x0c28('0x39'),util['inspect'](this[_0x0c28('0xc')][_0x2dc7c9[_0x0c28('0x31')]],{'showHidden':![],'depth':null}));this[_0x0c28('0x21')](util[_0x0c28('0x37')](_0x0c28('0x3a'),this[_0x0c28('0xc')][_0x2dc7c9[_0x0c28('0x31')]]['name']),_0x0c28('0x3b'),this[_0x0c28('0xc')][_0x2dc7c9[_0x0c28('0x31')]]);}else if(this[_0x0c28('0xa')][_0x2dc7c9[_0x0c28('0x31')]]){if(this['trunks'][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x24')]!==_0x2dc7c9[_0x0c28('0x24')]['toLowerCase']()){this[_0x0c28('0xa')][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x35')]=_[_0x0c28('0x36')](moment()[_0x0c28('0x37')]('x'));}this[_0x0c28('0xa')][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x24')]=_0x2dc7c9['state'][_0x0c28('0x32')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0x0c28('0xa')][_0x2dc7c9['device']],{'showHidden':![],'depth':null}));this[_0x0c28('0x21')](util[_0x0c28('0x37')]('trunk:%s',this['trunks'][_0x2dc7c9['device']][_0x0c28('0x2d')]),_0x0c28('0x2e'),this['trunks'][_0x2dc7c9[_0x0c28('0x31')]]);}else if(_['startsWith'](_0x2dc7c9[_0x0c28('0x31')],'Local')){var _0x34af22=_0x2dc7c9[_0x0c28('0x31')];var _0xf529e6=_0x34af22[_0x0c28('0x3c')](_0x34af22[_0x0c28('0x3d')]('/')+0x1,_0x34af22[_0x0c28('0x3d')]('@'));var _0x1f5d46=_['find'](this[_0x0c28('0xb')],function(_0x21c442){return _0x21c442[_0x0c28('0x3e')]==_0xf529e6||_0x21c442[_0x0c28('0x3f')]==_0xf529e6||_0x21c442['accountcode']==_0xf529e6;});if(_0x1f5d46){if(_0x1f5d46['state']!==_0x2dc7c9[_0x0c28('0x24')][_0x0c28('0x32')]()){_0x1f5d46[_0x0c28('0x35')]=_[_0x0c28('0x36')](moment()[_0x0c28('0x37')]('x'));}_0x1f5d46[_0x0c28('0x24')]=_0x2dc7c9[_0x0c28('0x24')]['toLowerCase']();_0x1f5d46[_0x0c28('0x34')]=!![];_0x1f5d46[_0x0c28('0x38')](_0x2dc7c9);}}}}catch(_0x3726d2){logger['error'](_0x0c28('0x30'),util[_0x0c28('0x1c')](_0x3726d2,{'showHidden':![],'depth':null}));}};UserReport[_0x0c28('0x1e')][_0x0c28('0x40')]=function(_0xfbfe6c){try{if(this[_0x0c28('0x1f')](_0xfbfe6c)&&this[_0x0c28('0x1f')](_0xfbfe6c[_0x0c28('0x41')])){logger[_0x0c28('0x22')](_0x0c28('0x42'),_0xfbfe6c[_0x0c28('0x43')],_0xfbfe6c['address'],_0xfbfe6c[_0x0c28('0x41')]);logger[_0x0c28('0x25')](_0x0c28('0x44'),util[_0x0c28('0x1c')](_0xfbfe6c,{'showHidden':![],'depth':null}));if(this[_0x0c28('0xb')][_0xfbfe6c[_0x0c28('0x43')]]){if(!this[_0x0c28('0xb')][_0xfbfe6c[_0x0c28('0x43')]][_0x0c28('0x34')]||_0xfbfe6c['peerstatus'][_0x0c28('0x32')]()==_0x0c28('0x45')){this['agents'][_0xfbfe6c['peer']]['local']=![];this[_0x0c28('0xb')][_0xfbfe6c['peer']][_0x0c28('0x46')]=_0xfbfe6c['peerstatus'][_0x0c28('0x32')]();this['agents'][_0xfbfe6c[_0x0c28('0x43')]][_0x0c28('0x47')]=_0xfbfe6c[_0x0c28('0x47')];this[_0x0c28('0xb')][_0xfbfe6c[_0x0c28('0x43')]]['updateStatusRealtime'](_0xfbfe6c);}}else if(this[_0x0c28('0xc')][_0xfbfe6c['peer']]){this[_0x0c28('0xc')][_0xfbfe6c[_0x0c28('0x43')]]['status']=_0xfbfe6c[_0x0c28('0x41')][_0x0c28('0x32')]();this['telephones'][_0xfbfe6c[_0x0c28('0x43')]][_0x0c28('0x47')]=_0xfbfe6c[_0x0c28('0x47')];logger[_0x0c28('0x25')](_0x0c28('0x48'),util[_0x0c28('0x1c')](this[_0x0c28('0xc')][_0xfbfe6c[_0x0c28('0x43')]],{'showHidden':![],'depth':null}));this[_0x0c28('0x21')](util['format']('telephone:%s',this[_0x0c28('0xc')][_0xfbfe6c[_0x0c28('0x43')]][_0x0c28('0x2d')]),_0x0c28('0x3b'),this['telephones'][_0xfbfe6c[_0x0c28('0x43')]]);}else if(this[_0x0c28('0xa')][_0xfbfe6c[_0x0c28('0x43')]]){this[_0x0c28('0xa')][_0xfbfe6c[_0x0c28('0x43')]][_0x0c28('0x46')]=_0xfbfe6c[_0x0c28('0x41')][_0x0c28('0x32')]();this[_0x0c28('0xa')][_0xfbfe6c[_0x0c28('0x43')]][_0x0c28('0x47')]=_0xfbfe6c[_0x0c28('0x47')];logger[_0x0c28('0x25')](_0x0c28('0x49'),util[_0x0c28('0x1c')](this[_0x0c28('0xa')][_0xfbfe6c[_0x0c28('0x43')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x0c28('0x37')](_0x0c28('0x2c'),this[_0x0c28('0xa')][_0xfbfe6c['peer']][_0x0c28('0x2d')]),_0x0c28('0x2e'),this['trunks'][_0xfbfe6c[_0x0c28('0x43')]]);}}}catch(_0x2457f9){logger[_0x0c28('0x16')](_0x0c28('0x44'),util[_0x0c28('0x1c')](_0x2457f9,{'showHidden':![],'depth':null}));}};module[_0x0c28('0x4a')]=UserReport;
\ No newline at end of file
index ad63e66..b7f6b9e 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(_0xd5ff0a,_0x5e233f){var _0x3babd7=function(_0x527d35){while(--_0x527d35){_0xd5ff0a['push'](_0xd5ff0a['shift']());}};_0x3babd7(++_0x5e233f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xa9e0[_0x32d457];return _0x338386;};'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=['redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart','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','merge','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','voiceChannels','routealias','interface','pick','destconnectedlinenum','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:%s','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answered_elsewhere','[%s][voiceAgentReport][agentconnect]','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','error','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','agentringnoanswer','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','reason','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','agent','talktime','acw','acwtime','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user: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','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','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:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]','lodash','moment','util','../../../config/logger','../ami'];(function(_0x5c63fd,_0x155693){var _0x26a248=function(_0x5e9964){while(--_0x5e9964){_0x5c63fd['push'](_0x5c63fd['shift']());}};_0x26a248(++_0x155693);}(_0xa9e0,0x123));var _0x0a9e=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xa9e0[_0x30ae5e];return _0x1f2e93;};'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')]]};}_[_0x0a9e('0x2c')](this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]);logger['debug'](_0x0a9e('0x32'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x33')]('user:%s',_0x155cce[_0x0a9e('0x21')]),'user:called',this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]);}}catch(_0x3f3d41){logger['error'](_0x0a9e('0x34'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x3f3d41,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncAgentConnect']=function(_0x54135e){try{if(this[_0x0a9e('0x1e')](_0x54135e)){if(this['channels'][_0x54135e[_0x0a9e('0x26')]]){logger[_0x0a9e('0x23')](_0x0a9e('0x35'),_0x54135e[_0x0a9e('0x26')],util['inspect'](_0x54135e,{'showHidden':![],'depth':null}));for(var _0x31916f in this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]]){if(this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x31916f)){if(_0x54135e[_0x0a9e('0x22')]===_0x31916f){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x54135e[_0x0a9e('0x26')],_0x54135e[_0x0a9e('0x21')],_0x54135e['destuniqueid']);this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x37')]=moment()[_0x0a9e('0x33')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x38')]=_0x54135e['connectedlinename'];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x39')]=_0x54135e['connectedlinenum'];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3a')]=_0x54135e[_0x0a9e('0x3a')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3b')]=_0x54135e[_0x0a9e('0x3b')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3c')]=_0x54135e[_0x0a9e('0x3c')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3d')]='connect';if(this['voiceChannels'][this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x26')]]){var _0x315881=this[_0x0a9e('0x3e')][this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x26')]][_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3f')]=_0x315881;_0x54135e['routealias']=_0x315881;}_[_0x0a9e('0x2c')](this[_0x0a9e('0xa')][_0x54135e[_0x0a9e('0x40')]],_[_0x0a9e('0x41')](_0x54135e,[_0x0a9e('0x28'),_0x0a9e('0x42'),_0x0a9e('0x3f')]));logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:',_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x43'),this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')](_0x0a9e('0x44'),_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x33')](_0x0a9e('0x45'),_0x54135e[_0x0a9e('0x21')]),_0x0a9e('0x46'),this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x54135e[_0x0a9e('0x22')]]);}else if(!this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['agentringnoanswer']&&!this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')](_0x0a9e('0x47'),_0x54135e[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x21')],_0x31916f);this['channels'][_0x54135e['uniqueid']][_0x31916f]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x48')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['answeredelsewheredestinationuniqueid']=_0x54135e[_0x0a9e('0x22')];this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f]['answeredelsewheremembername']=_0x54135e[_0x0a9e('0x21')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f]['lastevent']=_0x0a9e('0x49');this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['reason']=_0x0a9e('0x49');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentansweredelsewhere',this['channels'][_0x54135e['uniqueid']][_0x31916f]);}}}}}}catch(_0x2da03c){logger['error'](_0x0a9e('0x4a'),_0x54135e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2da03c,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x4b')]=function(_0x272738){try{if(this[_0x0a9e('0x1e')](_0x272738)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x272738[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x272738,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']]){logger[_0x0a9e('0x20')](_0x0a9e('0x4c'),_0x272738['uniqueid'],_0x272738[_0x0a9e('0x21')],_0x272738['destuniqueid']);this[_0x0a9e('0x8')][_0x272738['uniqueid']][_0x272738['destuniqueid']]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x272738['uniqueid']][_0x272738[_0x0a9e('0x22')]][_0x0a9e('0x48')]=moment()[_0x0a9e('0x33')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']][_0x0a9e('0x3d')]='rejected';this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738[_0x0a9e('0x22')]]['reason']=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4e'),_0x272738[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x4f'),this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738[_0x0a9e('0x22')]]);}}}catch(_0x4d4a35){logger[_0x0a9e('0x50')](_0x0a9e('0x51'),_0x272738[_0x0a9e('0x26')],util['inspect'](_0x4d4a35,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncQueueCallerAbandon']=function(_0x5211e3){try{if(this[_0x0a9e('0x1e')](_0x5211e3)){logger[_0x0a9e('0x23')](_0x0a9e('0x52'),_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x5211e3,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]]){for(var _0x54a37d in this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x54a37d)&&!this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x53')]&&!this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x54'),_0x5211e3[_0x0a9e('0x26')],this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x21')],_0x54a37d);this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x53')]=!![];this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x48')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x3d')]=_0x0a9e('0x55');this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x56')]=_0x0a9e('0x55');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x5211e3['uniqueid']][_0x54a37d],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentqueuecallerabandon',this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d]);}}}}}catch(_0x4c46c1){logger[_0x0a9e('0x50')](_0x0a9e('0x57'),_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c46c1,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x13')]=function(_0x2e9552){try{if(this[_0x0a9e('0x1e')](_0x2e9552)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2e9552,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]]){for(var _0x4abc8f in this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x4abc8f)){if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x37')]&&!this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')](_0x0a9e('0x58'),_0x2e9552[_0x0a9e('0x26')],this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x21')],_0x4abc8f);this[_0x0a9e('0x8')][_0x2e9552['uniqueid']][_0x4abc8f][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x59')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]['lastevent']=_0x0a9e('0x5a');this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x56')]=_0x2e9552['reason']==_0x0a9e('0x5b')?_0x0a9e('0x5c'):_0x2e9552[_0x0a9e('0x56')];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x5d')]=_0x2e9552[_0x0a9e('0x5d')];if(this['voiceQueues'][_0x2e9552[_0x0a9e('0x28')]]&&this[_0x0a9e('0x9')][_0x2e9552[_0x0a9e('0x28')]][_0x0a9e('0x5e')]){this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x5f')]=this['voiceQueues'][_0x2e9552[_0x0a9e('0x28')]]['acwTimeout'];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x60')]=!![];}this[_0x0a9e('0xa')][_0x2e9552['interface']]=_['omit'](this[_0x0a9e('0xa')][_0x2e9552[_0x0a9e('0x40')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')](_0x0a9e('0x61'),_0x2e9552['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x2e9552['uniqueid']][_0x4abc8f],{'showHidden':![],'depth':null}));ami['emit']('custom:agentcomplete',this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]);logger[_0x0a9e('0x23')](_0x0a9e('0x62'),_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f],{'showHidden':![],'depth':null}));this['emit'](util[_0x0a9e('0x33')](_0x0a9e('0x45'),_0x2e9552[_0x0a9e('0x21')]),_0x0a9e('0x63'),this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]);}}}}}}catch(_0x32f761){logger[_0x0a9e('0x50')]('[%s][voiceAgentReport][agentcomplete]',_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x32f761,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x255e49){try{if(this[_0x0a9e('0x1e')](_0x255e49)){logger[_0x0a9e('0x23')](_0x0a9e('0x64'),_0x255e49['uniqueid'],util[_0x0a9e('0x25')](_0x255e49,{'showHidden':![],'depth':null}));this[_0x0a9e('0x65')](_0x255e49['uniqueid'],_[_0x0a9e('0x66')](_0x255e49[_0x0a9e('0x67')])[0x0],_0x255e49[_0x0a9e('0x68')]);if(this['channels'][_0x255e49[_0x0a9e('0x26')]]){for(var _0x52ec10 in this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x52ec10)){logger[_0x0a9e('0x20')](_0x0a9e('0x69'),_0x255e49[_0x0a9e('0x26')],_0x52ec10,_['keys'](_0x255e49[_0x0a9e('0x67')])[0x0],_0x255e49[_0x0a9e('0x68')]);if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')])){this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')]=this[_0x0a9e('0xb')][_0x255e49['uniqueid']];}}}}}catch(_0xc81b64){logger[_0x0a9e('0x50')](_0x0a9e('0x6a'),_0x255e49[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xc81b64,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x65')]=function(_0x1756c7,_0x5ce99d,_0x23b447){var _0x5e725e=[_0x0a9e('0x6b'),_0x0a9e('0x6c'),_0x0a9e('0x6d'),_0x0a9e('0x6e'),'rtpaudioqosloss',_0x0a9e('0x6f'),'rtpaudioqosrtt',_0x0a9e('0x70'),_0x0a9e('0x71'),'sipuri',_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),'memberdynamic','memberinterface',_0x0a9e('0x75'),_0x0a9e('0x21'),_0x0a9e('0x76'),_0x0a9e('0x77')];if(!_[_0x0a9e('0x78')](_0x5ce99d)&&!_[_0x0a9e('0x79')](_0x5e725e,_0x5ce99d)){if(_[_0x0a9e('0x1f')](this[_0x0a9e('0xb')][_0x1756c7])){this[_0x0a9e('0xb')][_0x1756c7]={};}this['variables'][_0x1756c7][_0x5ce99d]=_0x23b447;}};VoiceAgentReport[_0x0a9e('0x1c')]['syncHangup']=function(_0x287324){try{if(this[_0x0a9e('0x1e')](_0x287324)){logger[_0x0a9e('0x23')](_0x0a9e('0x7a'),_0x287324[_0x0a9e('0x26')],util['inspect'](_0x287324,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]){for(var _0x2791c5 in this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]){if(this['channels'][_0x287324['uniqueid']][_0x0a9e('0x36')](_0x2791c5)){if(this['channels'][_0x287324[_0x0a9e('0x26')]][_0x2791c5][_0x0a9e('0x56')]==_0x0a9e('0x5b')&&this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]][_0x2791c5][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x287324[_0x0a9e('0x26')],_0x2791c5);this['channels'][_0x287324[_0x0a9e('0x26')]][_0x2791c5]['agentcompleteAt']=moment()[_0x0a9e('0x33')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger['debug'](_0x0a9e('0x7b'),_0x287324[_0x0a9e('0x26')],util['inspect'](_[_0x0a9e('0x7c')](this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x7d'),_['values'](this['channels'][_0x287324[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]];}if(this[_0x0a9e('0xb')][_0x287324[_0x0a9e('0x26')]]){delete this['variables'][_0x287324[_0x0a9e('0x26')]];}}}catch(_0xadce3d){logger['error'](_0x0a9e('0x7e'),_0x287324[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xadce3d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x7f')]=function(_0x23b39e){try{if(this[_0x0a9e('0x1e')](_0x23b39e)){logger[_0x0a9e('0x23')](_0x0a9e('0x80'),_0x23b39e[_0x0a9e('0x26')],util['inspect'](_0x23b39e,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]]){for(var _0x2ada60 in this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]]){if(this['channels'][_0x23b39e['transfereeuniqueid']][_0x0a9e('0x36')](_0x2ada60)){if(_0x23b39e[_0x0a9e('0x82')]===_0x2ada60){logger[_0x0a9e('0x20')](_0x0a9e('0x83'),_0x23b39e[_0x0a9e('0x26')],this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x21')],_0x2ada60);var _0x3450ae=moment();this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x23b39e['transfereeuniqueid']][_0x2ada60][_0x0a9e('0x59')]=moment()[_0x0a9e('0x33')](_0x0a9e('0x27'));this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60]['lastevent']=_0x0a9e('0x5a');this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x56')]=_0x0a9e('0x5b');this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x5d')]=_0x3450ae[_0x0a9e('0x84')](this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x37')],_0x0a9e('0x85'));}}}}if(this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x86')]]){var _0x248368=this['channels'][_0x23b39e['secondtransfereruniqueid']];this[_0x0a9e('0x8')][_0x23b39e['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]];this['channels'][_0x23b39e[_0x0a9e('0x81')]]=_0x248368;}}}catch(_0xe2b083){logger[_0x0a9e('0x50')](_0x0a9e('0x87'),_0x23b39e['uniqueid'],util[_0x0a9e('0x25')](_0xe2b083,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1b')]=function(_0x34a791){try{if(this['isNotNull'](_0x34a791)){logger[_0x0a9e('0x23')](_0x0a9e('0x88'),_0x34a791[_0x0a9e('0x26')],util['inspect'](_0x34a791,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]]){for(var _0x17b29d in this['channels'][_0x34a791[_0x0a9e('0x81')]]){if(this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x0a9e('0x36')](_0x17b29d)){if(_0x34a791[_0x0a9e('0x89')]===_0x17b29d){logger['info'](_0x0a9e('0x8a'),_0x34a791[_0x0a9e('0x26')],this['channels'][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x21')],_0x17b29d);var _0x1f6f1c=moment();this['channels'][_0x34a791['transfereeuniqueid']][_0x17b29d]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d]['agentcompleteAt']=_0x1f6f1c;this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x3d')]='complete';this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x56')]=_0x0a9e('0x5b');this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x5d')]=_0x1f6f1c[_0x0a9e('0x84')](this[_0x0a9e('0x8')][_0x34a791['transfereeuniqueid']][_0x17b29d][_0x0a9e('0x37')],'seconds');}}}}}}catch(_0x138cf5){logger[_0x0a9e('0x50')](_0x0a9e('0x8b'),_0x34a791[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x138cf5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncMusicOnHoldStart']=function(_0x1a0314){var _0x33da81='';try{if(this[_0x0a9e('0x1e')](_0x1a0314)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x1a0314[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1a0314,{'showHidden':![],'depth':null}));if(_0x1a0314[_0x0a9e('0x8c')]){_0x33da81=_0x1a0314[_0x0a9e('0x8c')][_0x0a9e('0x8d')](0x0,_0x1a0314[_0x0a9e('0x8c')][_0x0a9e('0x8e')]('-'));if(this[_0x0a9e('0xa')][_0x33da81]){logger[_0x0a9e('0x20')](_0x0a9e('0x8f'),_0x1a0314['uniqueid'],_0x33da81);this[_0x0a9e('0xa')][_0x33da81][_0x0a9e('0x90')]=!![];}}}}catch(_0x2ff265){logger[_0x0a9e('0x50')](_0x0a9e('0x91'),_0x1a0314[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2ff265,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncMusicOnHoldStop']=function(_0x3b581c){var _0xd2391='';try{if(this[_0x0a9e('0x1e')](_0x3b581c)){logger['debug'](_0x0a9e('0x92'),_0x3b581c[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x3b581c,{'showHidden':![],'depth':null}));if(_0x3b581c[_0x0a9e('0x8c')]){_0xd2391=_0x3b581c[_0x0a9e('0x8c')][_0x0a9e('0x8d')](0x0,_0x3b581c[_0x0a9e('0x8c')][_0x0a9e('0x8e')]('-'));if(this[_0x0a9e('0xa')][_0xd2391]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x3b581c[_0x0a9e('0x26')],_0xd2391);this[_0x0a9e('0xa')][_0xd2391][_0x0a9e('0x90')]=![];}}}}catch(_0x3db98f){logger[_0x0a9e('0x50')](_0x0a9e('0x93'),_0x3b581c['uniqueid'],util[_0x0a9e('0x25')](_0x3db98f,{'showHidden':![],'depth':null}));}};module['exports']=VoiceAgentReport;
\ No newline at end of file
index 4f4620e..7eac85f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1651=['newcallerid','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','isNotNull','isUndefined','prototype','emit','syncNewCallerId','calleridnum','[%s][voiceCallReport][newcallerid]\x20event:','uniqueid','linkedid','merge','pick','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','user:%s','name','accountcode','[%s][voiceCallReport][newcallerid]','inspect','debug','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','context','starttime','YYYY-MM-DD\x20HH:mm:ss','toNumber','channelstate','user:agentconnect','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','disposition','includes','lastapplication','cdr(','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridname','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','diff','connectedlinename','destinationchannel','UserId','membername','routealias','queue','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','replace','.wav49','monitorFilename','find','isNil','syncVarSet','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','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','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcalluniqueid','parse','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','holdtime','omit','user:agentcomplete','keys','length','then','undefined','isEmpty','monitors','getSettings','stopRecordingOnTransfer','Action','StopMixMonitor','catch','event','BlindTransfer','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','some','origtransfererlinkedid','outbound','routeid','transferType','ATTENDED','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','BLIND','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','syncMusicOnHoldStop','[%s][voiceCallReport][musiconholdstop]\x20event:','milliseconds','mohtime','[%s][voiceCallReport][musiconholdstop]','exports','lodash','moment','path','../../../config/environment','../../../config/logger','ami','../model/channel','set','agi','dial','FAILED','NO\x20ANSWER','ANSWERED','redis','defaults','socket.io-emitter','channels','agents','blindTransfers','syncNewExten','bind','newexten','newchannel','syncNewChannel','syncNewState','varset','hangup','syncHangup'];(function(_0x2b93df,_0x18440c){var _0x1f66d6=function(_0x47ff29){while(--_0x47ff29){_0x2b93df['push'](_0x2b93df['shift']());}};_0x1f66d6(++_0x18440c);}(_0x1651,0x16c));var _0x1165=function(_0x26a598,_0x5a225c){_0x26a598=_0x26a598-0x0;var _0x10c022=_0x1651[_0x26a598];return _0x10c022;};'use strict';var _=require(_0x1165('0x0'));var moment=require(_0x1165('0x1'));var util=require('util');var path=require(_0x1165('0x2'));var Redis=require('ioredis');var config=require(_0x1165('0x3'));var logger=require(_0x1165('0x4'))(_0x1165('0x5'));var ami=require('../ami');var Channel=require(_0x1165('0x6'));var RpcSetting=require('../rpc/setting');var applications=[_0x1165('0x7'),'queue',_0x1165('0x8'),_0x1165('0x9'),'playback','voicemail'];var dispositions=['NO\x20ANSWER',_0x1165('0xa'),'FAILED',_0x1165('0xb'),_0x1165('0xb'),_0x1165('0xb'),_0x1165('0xc'),'BUSY',_0x1165('0xa'),_0x1165('0xa'),'FAILED'];config[_0x1165('0xd')]=_[_0x1165('0xe')](config[_0x1165('0xd')],{'host':'localhost','port':0x18eb});var io=require(_0x1165('0xf'))(new Redis(config[_0x1165('0xd')]));function VoiceCallReport(_0xfce2e2){this[_0x1165('0x10')]=_0xfce2e2['channels'];this[_0x1165('0x11')]=_0xfce2e2[_0x1165('0x11')];this[_0x1165('0x12')]={};ami['on']('coreshowchannel',this[_0x1165('0x13')][_0x1165('0x14')](this));ami['on'](_0x1165('0x15'),this[_0x1165('0x13')]['bind'](this));ami['on'](_0x1165('0x16'),this[_0x1165('0x17')][_0x1165('0x14')](this));ami['on']('newstate',this[_0x1165('0x18')][_0x1165('0x14')](this));ami['on'](_0x1165('0x19'),this['syncVarSet'][_0x1165('0x14')](this));ami['on'](_0x1165('0x1a'),this[_0x1165('0x1b')][_0x1165('0x14')](this));ami['on'](_0x1165('0x1c'),this['syncNewCallerId'][_0x1165('0x14')](this));ami['on'](_0x1165('0x1d'),this[_0x1165('0x1e')][_0x1165('0x14')](this));ami['on'](_0x1165('0x1f'),this[_0x1165('0x20')][_0x1165('0x14')](this));ami['on'](_0x1165('0x21'),this[_0x1165('0x22')][_0x1165('0x14')](this));ami['on'](_0x1165('0x23'),this['syncMusicOnHoldStop'][_0x1165('0x14')](this));try{logger[_0x1165('0x24')](_0x1165('0x25'));ami[_0x1165('0x26')]();}catch(_0x5ba261){logger[_0x1165('0x27')](_0x1165('0x28'),util['inspect'](_0x5ba261,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype'][_0x1165('0x29')]=function(_0x36eb7a){return _0x36eb7a!==null&&!_[_0x1165('0x2a')](_0x36eb7a);};VoiceCallReport[_0x1165('0x2b')][_0x1165('0x2c')]=function(_0x318b77,_0x162f3d,_0x568962){io['to'](_0x318b77)[_0x1165('0x2c')](_0x162f3d,_0x568962);};VoiceCallReport['prototype'][_0x1165('0x2d')]=function(_0x41497c){try{if(this[_0x1165('0x29')](_0x41497c)){logger[_0x1165('0x24')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x41497c['uniqueid'],_0x41497c['calleridname'],_0x41497c[_0x1165('0x2e')]);logger['debug'](_0x1165('0x2f'),_0x41497c['uniqueid'],util['inspect'](_0x41497c,{'showHidden':![],'depth':null}));if(_0x41497c[_0x1165('0x30')]===_0x41497c[_0x1165('0x31')]){if(!_[_0x1165('0x2a')](this[_0x1165('0x10')][_0x41497c[_0x1165('0x30')]])){_[_0x1165('0x32')](this[_0x1165('0x10')][_0x41497c['uniqueid']],_[_0x1165('0x33')](_0x41497c,_['keys'](this[_0x1165('0x10')][_0x41497c[_0x1165('0x30')]])));}}if(_0x41497c['context']===_0x1165('0x34')){if(this[_0x1165('0x11')][_0x41497c[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]]){if(_0x41497c[_0x1165('0x37')]==_0x1165('0x38')){this[_0x1165('0x11')][_0x41497c[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]][_0x1165('0x39')]=_0x41497c[_0x1165('0x3a')];this[_0x1165('0x2c')](util[_0x1165('0x3b')](_0x1165('0x3c'),this['agents'][_0x41497c[_0x1165('0x35')]['split']('-')[0x0]][_0x1165('0x3d')]),'user:agentconnect',{'destaccountcode':this[_0x1165('0x11')][_0x41497c[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]][_0x1165('0x3e')],'destconnectedlinenum':_0x41497c[_0x1165('0x3a')]});}}}}}catch(_0x43df07){logger[_0x1165('0x27')](_0x1165('0x3f'),_0x41497c[_0x1165('0x30')],util[_0x1165('0x40')](_0x43df07,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x1165('0x17')]=function(_0xca358e){try{if(this[_0x1165('0x29')](_0xca358e)){logger[_0x1165('0x41')]('[%s][voiceCallReport][newchannel]\x20event:',_0xca358e['uniqueid'],util[_0x1165('0x40')](_0xca358e,{'showHidden':![],'depth':null}));if(_0xca358e[_0x1165('0x30')]===_0xca358e[_0x1165('0x31')]&&_0xca358e['channel']!=_0x1165('0x42')){if(_[_0x1165('0x2a')](this[_0x1165('0x10')][_0xca358e[_0x1165('0x30')]])){logger[_0x1165('0x24')](_0x1165('0x43'),_0xca358e['uniqueid'],_0xca358e[_0x1165('0x44')],_0xca358e['exten']);this[_0x1165('0x10')][_0xca358e[_0x1165('0x30')]]=new Channel();this[_0x1165('0x10')][_0xca358e[_0x1165('0x30')]][_0x1165('0x45')]=moment()[_0x1165('0x3b')](_0x1165('0x46'));this['channels'][_0xca358e[_0x1165('0x30')]]['disposition']=dispositions[_[_0x1165('0x47')](_0xca358e[_0x1165('0x48')])];_[_0x1165('0x32')](this[_0x1165('0x10')][_0xca358e[_0x1165('0x30')]],_[_0x1165('0x33')](_0xca358e,_['keys'](this[_0x1165('0x10')][_0xca358e[_0x1165('0x30')]])));if(_0xca358e[_0x1165('0x44')]==='from-sip'){if(this['agents'][_0xca358e[_0x1165('0x35')]['split']('-')[0x0]]){if(_[_0x1165('0x2a')](this[_0x1165('0x11')][_0xca358e[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]][_0x1165('0x39')])){this[_0x1165('0x11')][_0xca358e[_0x1165('0x35')]['split']('-')[0x0]][_0x1165('0x39')]=_0xca358e[_0x1165('0x37')];logger[_0x1165('0x41')]('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0xca358e[_0x1165('0x30')],util[_0x1165('0x40')]({'id':this[_0x1165('0x11')][_0xca358e[_0x1165('0x35')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0x1165('0x11')][_0xca358e[_0x1165('0x35')]['split']('-')[0x0]][_0x1165('0x3e')],'destconnectedlinenum':_0xca358e['exten']},{'showHidden':![],'depth':null}));this['emit'](util[_0x1165('0x3b')]('user:%s',this[_0x1165('0x11')][_0xca358e[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]][_0x1165('0x3d')]),_0x1165('0x49'),{'id':this[_0x1165('0x11')][_0xca358e[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]]['id'],'destaccountcode':this[_0x1165('0x11')][_0xca358e[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]][_0x1165('0x3e')],'destconnectedlinenum':_0xca358e[_0x1165('0x37')]});}}}}}}}catch(_0x16dbd8){logger[_0x1165('0x27')]('[%s][voiceCallReport][newchannel]',_0xca358e[_0x1165('0x30')],util['inspect'](_0x16dbd8,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x1165('0x2b')][_0x1165('0x13')]=function(_0x3a88ea){try{if(this[_0x1165('0x29')](_0x3a88ea)){logger[_0x1165('0x41')](_0x1165('0x4a'),_0x3a88ea['uniqueid'],util[_0x1165('0x40')](_0x3a88ea,{'showHidden':![],'depth':null}));if(_0x3a88ea['uniqueid']===_0x3a88ea[_0x1165('0x31')]&&_0x3a88ea[_0x1165('0x37')]!='h'&&_0x3a88ea[_0x1165('0x35')]!=_0x1165('0x42')){_0x3a88ea[_0x1165('0x4b')]=_0x3a88ea[_0x1165('0x4b')][_0x1165('0x4c')]();_0x3a88ea[_0x1165('0x4d')]=_0x3a88ea[_0x1165('0x4e')]&&_0x3a88ea[_0x1165('0x4e')]['startsWith'](_0x1165('0x4f'))?_0x3a88ea[_0x1165('0x4e')]:(_0x3a88ea[_0x1165('0x4e')]||_0x3a88ea[_0x1165('0x4d')])[_0x1165('0x4c')]();logger['info'](_0x1165('0x50'),_0x3a88ea[_0x1165('0x30')],_0x3a88ea[_0x1165('0x4b')],_0x3a88ea[_0x1165('0x4d')]);if(_['isUndefined'](this[_0x1165('0x10')][_0x3a88ea[_0x1165('0x30')]])){this['channels'][_0x3a88ea[_0x1165('0x30')]]=new Channel();this[_0x1165('0x10')][_0x3a88ea['uniqueid']]['starttime']=_0x3a88ea[_0x1165('0x51')]?moment()[_0x1165('0x52')](moment[_0x1165('0x51')](_0x3a88ea[_0x1165('0x51')])[_0x1165('0x53')](),_0x1165('0x53'))[_0x1165('0x3b')]('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0x1165('0x3b')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x3a88ea[_0x1165('0x30')]][_0x1165('0x54')]=_0x1165('0xb');}_[_0x1165('0x32')](this['channels'][_0x3a88ea['uniqueid']],_[_0x1165('0x33')](_0x3a88ea,_['keys'](this['channels'][_0x3a88ea['uniqueid']])));if(_[_0x1165('0x55')](applications,_0x3a88ea[_0x1165('0x4b')])){this[_0x1165('0x10')][_0x3a88ea[_0x1165('0x30')]][_0x1165('0x56')]=_0x3a88ea[_0x1165('0x4b')];this[_0x1165('0x10')][_0x3a88ea[_0x1165('0x30')]]['lastdata']=_0x3a88ea[_0x1165('0x4d')];if(_0x3a88ea[_0x1165('0x4b')]===_0x1165('0x7')&&_['startsWith'](_0x3a88ea['applicationdata'][_0x1165('0x4c')](),_0x1165('0x57'))){var _0x1cd5b9=_0x3a88ea['applicationdata']['split']('=');var _0x3ff99f=_0x1cd5b9[0x0][_0x1165('0x4c')]()['match'](/cdr\((.*)\)/);if(_0x3ff99f){this[_0x1165('0x10')][_0x3a88ea['uniqueid']][_0x3ff99f[0x1]]=_0x1cd5b9[0x1];}}else if(_0x3a88ea[_0x1165('0x4b')]==='queue'){this['channels'][_0x3a88ea[_0x1165('0x30')]]['queue']=_0x3a88ea[_0x1165('0x4d')][_0x1165('0x36')](',')[0x0];}}}}}catch(_0x59833b){logger['error'](_0x1165('0x58'),_0x3a88ea['uniqueid'],util['inspect'](_0x59833b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x1165('0x2b')][_0x1165('0x18')]=function(_0x562df1){try{if(this[_0x1165('0x29')](_0x562df1)){logger[_0x1165('0x24')](_0x1165('0x59'),_0x562df1[_0x1165('0x30')],_0x562df1[_0x1165('0x31')],_0x562df1[_0x1165('0x5a')],_0x562df1[_0x1165('0x2e')]);logger['debug'](_0x1165('0x5b'),_0x562df1['uniqueid'],util[_0x1165('0x40')](_0x562df1,{'showHidden':![],'depth':null}));if(_0x562df1[_0x1165('0x30')]!==_0x562df1['linkedid']){if(this[_0x1165('0x10')][_0x562df1[_0x1165('0x31')]]){if(_0x562df1[_0x1165('0x48')]==='6'){if(!this[_0x1165('0x10')][_0x562df1[_0x1165('0x31')]]['answered']){var _0x2dbce5=moment();this['channels'][_0x562df1[_0x1165('0x31')]][_0x1165('0x5c')]=!![];this[_0x1165('0x10')][_0x562df1['linkedid']][_0x1165('0x5d')]=_0x2dbce5[_0x1165('0x3b')](_0x1165('0x46'));if(this['channels'][_0x562df1['linkedid']][_0x1165('0x45')]){this[_0x1165('0x10')][_0x562df1['linkedid']]['holdtime']=_0x2dbce5[_0x1165('0x5e')](this['channels'][_0x562df1[_0x1165('0x31')]][_0x1165('0x45')],_0x1165('0x53'));}}this[_0x1165('0x10')][_0x562df1[_0x1165('0x31')]][_0x1165('0x31')]=_0x562df1[_0x1165('0x30')];if(_0x562df1[_0x1165('0x2e')]!=='xcally-motion-preview'){this[_0x1165('0x10')][_0x562df1[_0x1165('0x31')]]['connectedlinenum']=_0x562df1[_0x1165('0x2e')];}this['channels'][_0x562df1[_0x1165('0x31')]][_0x1165('0x5f')]=_0x562df1['calleridname'];this[_0x1165('0x10')][_0x562df1[_0x1165('0x31')]][_0x1165('0x60')]=_0x562df1[_0x1165('0x35')];this[_0x1165('0x10')][_0x562df1[_0x1165('0x31')]]['disposition']=dispositions[_[_0x1165('0x47')](_0x562df1[_0x1165('0x48')])];if(this[_0x1165('0x11')][_0x562df1[_0x1165('0x35')]['split']('-')[0x0]]){this['channels'][_0x562df1[_0x1165('0x31')]][_0x1165('0x61')]=this[_0x1165('0x11')][_0x562df1[_0x1165('0x35')]['split']('-')[0x0]]['id'];this[_0x1165('0x10')][_0x562df1['linkedid']][_0x1165('0x62')]=this[_0x1165('0x11')][_0x562df1[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]][_0x1165('0x3d')];}}}}else{if(this[_0x1165('0x10')][_0x562df1[_0x1165('0x30')]]){if(_0x562df1[_0x1165('0x48')]==='6'){if(this[_0x1165('0x11')][_0x562df1[_0x1165('0x35')]['split']('-')[0x0]]){this[_0x1165('0x10')][_0x562df1['uniqueid']][_0x1165('0x61')]=this[_0x1165('0x11')][_0x562df1[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]]['id'];this[_0x1165('0x10')][_0x562df1[_0x1165('0x30')]]['membername']=this[_0x1165('0x11')][_0x562df1[_0x1165('0x35')]['split']('-')[0x0]][_0x1165('0x3d')];}}}}if(_0x562df1['channelstate']==='6'&&_0x562df1[_0x1165('0x44')]===_0x1165('0x34')){if(this[_0x1165('0x11')][_0x562df1[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]]){this[_0x1165('0x11')][_0x562df1[_0x1165('0x35')]['split']('-')[0x0]][_0x1165('0x39')]=_0x562df1[_0x1165('0x37')];var _0x18ea33,_0x4ed9d7;if(this[_0x1165('0x10')][_0x562df1[_0x1165('0x30')]]){_0x18ea33=this[_0x1165('0x10')][_0x562df1['uniqueid']][_0x1165('0x63')];_0x4ed9d7=this[_0x1165('0x10')][_0x562df1[_0x1165('0x30')]][_0x1165('0x64')];}else if(this[_0x1165('0x10')][_0x562df1[_0x1165('0x31')]]){_0x18ea33=this[_0x1165('0x10')][_0x562df1['linkedid']][_0x1165('0x63')];_0x4ed9d7=this['channels'][_0x562df1[_0x1165('0x31')]]['queue'];}logger['debug'](_0x1165('0x65'),_0x562df1[_0x1165('0x30')],util['inspect']({'id':this[_0x1165('0x11')][_0x562df1[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]]['id'],'destaccountcode':this[_0x1165('0x11')][_0x562df1['channel'][_0x1165('0x36')]('-')[0x0]][_0x1165('0x3e')],'destconnectedlinenum':_0x562df1['exten'],'routealias':_0x18ea33,'queue':_0x4ed9d7||undefined},{'showHidden':![],'depth':null}));this[_0x1165('0x2c')](util[_0x1165('0x3b')](_0x1165('0x3c'),this[_0x1165('0x11')][_0x562df1[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]][_0x1165('0x3d')]),_0x1165('0x49'),{'id':this['agents'][_0x562df1[_0x1165('0x35')]['split']('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0x1165('0x11')][_0x562df1['channel'][_0x1165('0x36')]('-')[0x0]][_0x1165('0x3e')],'destconnectedlinenum':_0x562df1[_0x1165('0x37')],'routealias':_0x18ea33,'queue':_0x4ed9d7||undefined});}}}}catch(_0x38ee50){logger[_0x1165('0x27')](_0x1165('0x66'),_0x562df1[_0x1165('0x30')],util[_0x1165('0x40')](_0x38ee50,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x1165('0x2b')][_0x1165('0x67')]=function(_0xff419a,_0x2ee375){try{if(this[_0x1165('0x10')][_0xff419a]){logger[_0x1165('0x24')](_0x1165('0x68'),_0xff419a,_0x2ee375);this[_0x1165('0x10')][_0xff419a][_0x1165('0x69')]=!![];if(_[_0x1165('0x6a')](_0x2ee375,'.wav49')){_0x2ee375=_0x2ee375[_0x1165('0x6b')](_0x1165('0x6c'),'.WAV');}this['channels'][_0xff419a][_0x1165('0x6d')]=_0x2ee375;var _0x340562=_[_0x1165('0x6e')](this[_0x1165('0x10')][_0xff419a]['monitors'],{'filename':_0x2ee375});if(_[_0x1165('0x6f')](_0x340562)){this[_0x1165('0x10')][_0xff419a]['monitors']['push']({'filename':_0x2ee375,'createdAt':moment()[_0x1165('0x3b')](_0x1165('0x46')),'mixmonitorid':'','status':'rec'});}}}catch(_0x249e7c){logger[_0x1165('0x27')]('[%s][voiceCallReport][mixMonitorFilename]',_0xff419a,util[_0x1165('0x40')](_0x249e7c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x1165('0x2b')][_0x1165('0x70')]=function(_0x4a6710){try{if(this[_0x1165('0x29')](_0x4a6710)){logger[_0x1165('0x41')](_0x1165('0x71'),_0x4a6710[_0x1165('0x30')],util[_0x1165('0x40')](_0x4a6710,{'showHidden':![],'depth':null}));if(this[_0x1165('0x10')][_0x4a6710[_0x1165('0x30')]]&&_0x4a6710[_0x1165('0x35')]!=_0x1165('0x42')){if(this[_0x1165('0x29')](_0x4a6710[_0x1165('0x72')])){if(this[_0x1165('0x29')](_0x4a6710[_0x1165('0x72')][_0x1165('0x73')])){logger[_0x1165('0x24')](_0x1165('0x74'),_0x4a6710['uniqueid'],_0x4a6710[_0x1165('0x75')]);this['syncMixMonitorFilename'](_0x4a6710[_0x1165('0x30')],_0x4a6710[_0x1165('0x75')]);}else if(this['isNotNull'](_0x4a6710[_0x1165('0x72')]['xmd-phone'])){logger['info'](_0x1165('0x76'),_0x4a6710['uniqueid'],_0x4a6710[_0x1165('0x75')]);this['channels'][_0x4a6710[_0x1165('0x30')]][_0x1165('0x2e')]=_0x4a6710[_0x1165('0x75')];}else if(this[_0x1165('0x29')](_0x4a6710['variable'][_0x1165('0x77')])){logger['info'](_0x1165('0x78'),_0x4a6710['uniqueid'],_0x4a6710[_0x1165('0x75')]);this[_0x1165('0x10')][_0x4a6710[_0x1165('0x30')]][_0x1165('0x79')]=_0x4a6710[_0x1165('0x75')];}else if(this[_0x1165('0x29')](_0x4a6710[_0x1165('0x72')][_0x1165('0x7a')])){logger[_0x1165('0x24')](_0x1165('0x7b'),_0x4a6710[_0x1165('0x30')],_0x4a6710[_0x1165('0x75')]);this[_0x1165('0x10')][_0x4a6710[_0x1165('0x30')]][_0x1165('0x7c')]=_0x4a6710[_0x1165('0x75')];}else if(this[_0x1165('0x29')](_0x4a6710['variable'][_0x1165('0x7d')])){logger['info'](_0x1165('0x7e'),_0x4a6710[_0x1165('0x30')],_0x4a6710[_0x1165('0x75')][_0x1165('0x36')](',')[0x0]);this[_0x1165('0x10')][_0x4a6710[_0x1165('0x30')]][_0x1165('0x64')]=_0x4a6710[_0x1165('0x75')][_0x1165('0x36')](',')[0x0];}else if(this['isNotNull'](_0x4a6710[_0x1165('0x72')][_0x1165('0x7f')])){logger[_0x1165('0x24')](_0x1165('0x80'),_0x4a6710['uniqueid'],_0x4a6710[_0x1165('0x75')]);this[_0x1165('0x10')][_0x4a6710[_0x1165('0x30')]][_0x1165('0x81')]=_0x4a6710[_0x1165('0x75')];}else if(this[_0x1165('0x29')](_0x4a6710['variable'][_0x1165('0x82')])){logger['info'](_0x1165('0x83'),_0x4a6710['uniqueid'],_0x4a6710['value']);this[_0x1165('0x10')][_0x4a6710[_0x1165('0x30')]]['destination']=_0x4a6710[_0x1165('0x75')];}else if(this[_0x1165('0x29')](_0x4a6710['variable'][_0x1165('0x84')])){logger[_0x1165('0x24')](_0x1165('0x85'),_0x4a6710[_0x1165('0x30')],_0x4a6710[_0x1165('0x75')]);this[_0x1165('0x10')][_0x4a6710['uniqueid']]['calleridpreview']=_0x4a6710[_0x1165('0x75')];}else if(this[_0x1165('0x29')](_0x4a6710[_0x1165('0x72')][_0x1165('0x86')])){logger[_0x1165('0x24')](_0x1165('0x87'),_0x4a6710[_0x1165('0x30')],_0x4a6710[_0x1165('0x75')]);this[_0x1165('0x10')][_0x4a6710['uniqueid']][_0x1165('0x64')]=_0x4a6710[_0x1165('0x75')];}else if(this[_0x1165('0x29')](_0x4a6710[_0x1165('0x72')]['sipcallid'])){logger['info']('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x4a6710[_0x1165('0x30')],_0x4a6710[_0x1165('0x75')]);this['channels'][_0x4a6710[_0x1165('0x30')]][_0x1165('0x88')]=_0x4a6710[_0x1165('0x75')];}}}else if(this[_0x1165('0x29')](_0x4a6710['variable'][_0x1165('0x73')])){if(_0x4a6710[_0x1165('0x75')]){var _0x31cfd7=path[_0x1165('0x89')](_0x4a6710[_0x1165('0x75')])[_0x1165('0x3d')];logger[_0x1165('0x24')](_0x1165('0x74'),_0x31cfd7,_0x4a6710['value']);this[_0x1165('0x67')](_0x31cfd7,_0x4a6710[_0x1165('0x75')]);}}else if(this['channels'][_0x4a6710['linkedid']]){if(this[_0x1165('0x29')](_0x4a6710[_0x1165('0x72')])){if(this[_0x1165('0x29')](_0x4a6710['variable'][_0x1165('0x8a')])){logger[_0x1165('0x24')](_0x1165('0x8b'),_0x4a6710[_0x1165('0x31')],_0x4a6710[_0x1165('0x75')]);this[_0x1165('0x10')][_0x4a6710['linkedid']]['sipcalllinkedid']=_0x4a6710[_0x1165('0x75')];}}}}}catch(_0x4701be){logger['error']('[%s][voiceCallReport][varset]',_0x4a6710[_0x1165('0x30')],util[_0x1165('0x40')](_0x4701be,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x1165('0x2b')]['syncHangup']=function(_0x498caf){try{if(this['isNotNull'](_0x498caf)){logger[_0x1165('0x41')](_0x1165('0x8c'),_0x498caf[_0x1165('0x30')],util[_0x1165('0x40')](_0x498caf,{'showHidden':![],'depth':null}));if(this['channels'][_0x498caf[_0x1165('0x30')]]){logger[_0x1165('0x24')](_0x1165('0x8d'),_0x498caf[_0x1165('0x30')],_0x498caf[_0x1165('0x8e')]);var _0x3a1f2d=moment();this[_0x1165('0x10')][_0x498caf[_0x1165('0x30')]][_0x1165('0x8f')]=_0x3a1f2d['format'](_0x1165('0x46'));this[_0x1165('0x10')][_0x498caf[_0x1165('0x30')]]['duration']=_0x3a1f2d[_0x1165('0x5e')](this[_0x1165('0x10')][_0x498caf['uniqueid']]['starttime'],_0x1165('0x53'));if(this[_0x1165('0x10')][_0x498caf['uniqueid']][_0x1165('0x5c')]){this[_0x1165('0x10')][_0x498caf[_0x1165('0x30')]][_0x1165('0x90')]=_0x3a1f2d[_0x1165('0x5e')](this['channels'][_0x498caf[_0x1165('0x30')]][_0x1165('0x5d')],_0x1165('0x53'));this[_0x1165('0x10')][_0x498caf[_0x1165('0x30')]][_0x1165('0x91')]=this[_0x1165('0x10')][_0x498caf['uniqueid']][_0x1165('0x51')]-this[_0x1165('0x10')][_0x498caf[_0x1165('0x30')]][_0x1165('0x90')];}if(_0x498caf[_0x1165('0x44')]===_0x1165('0x34')){if(this[_0x1165('0x11')][_0x498caf['channel'][_0x1165('0x36')]('-')[0x0]]){this[_0x1165('0x11')][_0x498caf[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]]=_[_0x1165('0x92')](this[_0x1165('0x11')][_0x498caf[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]],[_0x1165('0x39')]);logger['debug']('[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:',_0x498caf[_0x1165('0x30')],util[_0x1165('0x40')]({'id':this[_0x1165('0x11')][_0x498caf[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]]['id'],'destaccountcode':this[_0x1165('0x11')][_0x498caf[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this[_0x1165('0x2c')](util[_0x1165('0x3b')]('user:%s',this[_0x1165('0x11')][_0x498caf[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]]['name']),_0x1165('0x93'),{'id':this[_0x1165('0x11')][_0x498caf[_0x1165('0x35')][_0x1165('0x36')]('-')[0x0]]['id'],'destaccountcode':this[_0x1165('0x11')][_0x498caf['channel'][_0x1165('0x36')]('-')[0x0]][_0x1165('0x3e')]});for(var _0x56fba6=0x0;_0x56fba6<Object[_0x1165('0x94')](this[_0x1165('0x11')])[_0x1165('0x95')];_0x56fba6++){var _0xb56764=Object[_0x1165('0x94')](this[_0x1165('0x11')])[_0x56fba6];var _0x2f28f8=this[_0x1165('0x11')][_0xb56764];if(_0x2f28f8[_0x1165('0x3e')]===Number(_0x498caf['connectedlinenum'])){this['emit'](util[_0x1165('0x3b')]('user:%s',_0x2f28f8[_0x1165('0x3d')]),_0x1165('0x93'),{'id':_0x2f28f8['id'],'destaccountcode':_0x2f28f8[_0x1165('0x3e')]});break;}}}}var _0xe3611c=this;Promise['resolve']()[_0x1165('0x96')](function(){var _0x4897d7=_0xe3611c['channels'][_0x498caf[_0x1165('0x30')]];if(typeof _0x4897d7['transferType']===_0x1165('0x97'))return;if(_[_0x1165('0x98')](_0x4897d7[_0x1165('0x99')]))return;return RpcSetting[_0x1165('0x9a')]()[_0x1165('0x96')](function(_0x1d2339){if(!_0x1d2339[_0x1165('0x9b')])return;return Promise['resolve']()[_0x1165('0x96')](function(){return ami[_0x1165('0x9c')]({'action':_0x1165('0x9d'),'channel':_0x4897d7[_0x1165('0x35')]})['catch'](function(){});})[_0x1165('0x96')](function(){return ami[_0x1165('0x9c')]({'action':_0x1165('0x9d'),'channel':_0x4897d7['destinationchannel']})[_0x1165('0x9e')](function(){})['finally'](function(){var _0x189b87=_0xe3611c[_0x1165('0x11')][_0x4897d7['destinationchannel']['split']('-')[0x0]];if(!_0x189b87)return;io[_0x1165('0x2c')]('webbar:stopmonitors',{'agentId':_0x189b87['id'],'uniqueid':_0x4897d7[_0x1165('0x30')]});});});});})[_0x1165('0x96')](function(){if(_0x498caf[_0x1165('0x9f')]===_0x1165('0xa0')){_0xe3611c[_0x1165('0x12')][_0x498caf[_0x1165('0x30')]]=_0xe3611c[_0x1165('0x10')][_0x498caf[_0x1165('0x30')]];}else{if(_0xe3611c[_0x1165('0x10')][_0x498caf[_0x1165('0x30')]]['type']==='outbound'&&_0xe3611c[_0x1165('0x12')][_0x498caf[_0x1165('0x30')]]){_0xe3611c[_0x1165('0x10')][_0x498caf[_0x1165('0x30')]][_0x1165('0x30')]=[_0xe3611c['channels'][_0x498caf[_0x1165('0x30')]][_0x1165('0x31')],_0xe3611c[_0x1165('0x10')][_0x498caf[_0x1165('0x30')]][_0x1165('0x31')]=_0xe3611c[_0x1165('0x10')][_0x498caf[_0x1165('0x30')]][_0x1165('0x30')]][0x0];delete _0xe3611c['blindTransfers'][_0x498caf[_0x1165('0x30')]];}}logger[_0x1165('0x41')]('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x498caf[_0x1165('0x30')],util['inspect'](_0xe3611c['channels'][_0x498caf[_0x1165('0x30')]],{'showHidden':![],'depth':null}));ami['emit'](_0x1165('0xa1'),_0xe3611c[_0x1165('0x10')][_0x498caf[_0x1165('0x30')]]);delete _0xe3611c['channels'][_0x498caf[_0x1165('0x30')]];});}}}catch(_0x11d3a9){logger[_0x1165('0x27')](_0x1165('0xa2'),_0x498caf[_0x1165('0x30')],util[_0x1165('0x40')](_0x11d3a9,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x1165('0x1e')]=function(_0x3159b0){try{if(this[_0x1165('0x29')](_0x3159b0)){logger[_0x1165('0x24')](_0x1165('0xa3'),_0x3159b0[_0x1165('0x30')],_0x3159b0[_0x1165('0xa4')],_0x3159b0[_0x1165('0xa5')]);logger['debug'](_0x1165('0xa6'),_0x3159b0['uniqueid'],util['inspect'](_0x3159b0,{'showHidden':![],'depth':null}));var _0x3c3587;if(this[_0x1165('0x10')][_0x3159b0[_0x1165('0xa7')]]){this['channels'][_0x3159b0[_0x1165('0xa7')]][_0x1165('0xa8')]=_0x3159b0[_0x1165('0xa4')];this['channels'][_0x3159b0['transfereeuniqueid']][_0x1165('0xa9')]=_0x3159b0[_0x1165('0xa5')];if(this['channels'][_0x3159b0[_0x1165('0xaa')]]){_0x3c3587=this[_0x1165('0x10')][_0x3159b0['secondtransfereruniqueid']];this['channels'][_0x3159b0['secondtransfereruniqueid']]=this[_0x1165('0x10')][_0x3159b0[_0x1165('0xa7')]];this[_0x1165('0x10')][_0x3159b0[_0x1165('0xa7')]]=_0x3c3587;}}else if(this[_0x1165('0x10')][_0x3159b0[_0x1165('0xab')]]){this[_0x1165('0x10')][_0x3159b0['transfertargetuniqueid']][_0x1165('0xa8')]=_0x3159b0[_0x1165('0xa4')];this[_0x1165('0x10')][_0x3159b0[_0x1165('0xab')]]['transferconnectedlinenum']=_0x3159b0['transfertargetcalleridnum'];if(this['channels'][_0x3159b0['origtransfereruniqueid']]){_0x3c3587=this['channels'][_0x3159b0[_0x1165('0xac')]];this[_0x1165('0x10')][_0x3159b0[_0x1165('0xac')]]=this['channels'][_0x3159b0[_0x1165('0xab')]];this[_0x1165('0x10')][_0x3159b0[_0x1165('0xab')]]=_0x3c3587;}}if((this[_0x1165('0x10')][_0x3159b0[_0x1165('0xac')]]||this[_0x1165('0x10')][_0x3159b0['origtransfererlinkedid']])&&this[_0x1165('0x10')][_0x3159b0[_0x1165('0xaa')]]){var _0x519a32=_[_0x1165('0xad')]([this[_0x1165('0x10')][_0x3159b0[_0x1165('0xac')]],this['channels'][_0x3159b0[_0x1165('0xae')]],this[_0x1165('0x10')][_0x3159b0['secondtransfereruniqueid']]],function(_0xcce0cb){return _0xcce0cb&&_0xcce0cb[_0x1165('0x7c')]===_0x1165('0xaf')&&_0xcce0cb[_0x1165('0xb0')];});if(_0x519a32){if(this['channels'][_0x3159b0[_0x1165('0xac')]])this[_0x1165('0x10')][_0x3159b0[_0x1165('0xac')]][_0x1165('0xb1')]=_0x1165('0xb2');if(this[_0x1165('0x10')][_0x3159b0[_0x1165('0xae')]])this[_0x1165('0x10')][_0x3159b0['origtransfererlinkedid']]['transferType']=_0x1165('0xb2');this[_0x1165('0x10')][_0x3159b0['secondtransfereruniqueid']][_0x1165('0xb1')]=_0x1165('0xb2');}}}}catch(_0x6f5aed){logger[_0x1165('0x27')](_0x1165('0xb3'),_0x3159b0[_0x1165('0x30')],util[_0x1165('0x40')](_0x6f5aed,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x1165('0x2b')][_0x1165('0x20')]=function(_0x3ee63b){try{if(this[_0x1165('0x29')](_0x3ee63b)){logger[_0x1165('0x24')](_0x1165('0xb4'),_0x3ee63b[_0x1165('0x30')],_0x3ee63b[_0x1165('0xb5')],_0x3ee63b[_0x1165('0xb6')]);logger[_0x1165('0x41')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0x3ee63b[_0x1165('0x30')],util[_0x1165('0x40')](_0x3ee63b,{'showHidden':![],'depth':null}));if(this[_0x1165('0x10')][_0x3ee63b['transfereeuniqueid']]){this[_0x1165('0x10')][_0x3ee63b[_0x1165('0xa7')]][_0x1165('0xa8')]=_0x3ee63b[_0x1165('0xb5')];this[_0x1165('0x10')][_0x3ee63b[_0x1165('0xa7')]][_0x1165('0xa9')]=_0x3ee63b[_0x1165('0xb6')];this['channels'][_0x3ee63b[_0x1165('0xa7')]][_0x1165('0xb1')]=_0x1165('0xb7');this[_0x1165('0x1b')]({'event':_0x1165('0xa0'),'uniqueid':_0x3ee63b[_0x1165('0xa7')],'context':_0x3ee63b[_0x1165('0x44')],'channel':_0x3ee63b['transfererchannel']});}else{this[_0x1165('0x10')][_0x3ee63b[_0x1165('0xb8')]][_0x1165('0xb1')]=_0x1165('0xb7');}}}catch(_0x913376){logger['error'](_0x1165('0xb9'),_0x3ee63b[_0x1165('0x30')],util[_0x1165('0x40')](_0x913376,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x1165('0x2b')][_0x1165('0x22')]=function(_0x397b27){try{if(this[_0x1165('0x29')](_0x397b27)){logger['debug'](_0x1165('0xba'),_0x397b27[_0x1165('0x30')],util['inspect'](_0x397b27,{'showHidden':![],'depth':null}));if(this[_0x1165('0x10')][_0x397b27[_0x1165('0x30')]]){if(!_[_0x1165('0x6f')](this['channels'][_0x397b27['uniqueid']][_0x1165('0x5d')])){this[_0x1165('0x10')][_0x397b27[_0x1165('0x30')]][_0x1165('0xbb')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger[_0x1165('0x24')](_0x1165('0xbc'),_0x397b27[_0x1165('0x30')],this['channels'][_0x397b27[_0x1165('0x30')]]['mohstarttime']);}}}}catch(_0x395c5d){logger[_0x1165('0x27')](_0x1165('0xbd'),_0x397b27[_0x1165('0x30')],util[_0x1165('0x40')](_0x395c5d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x1165('0x2b')][_0x1165('0xbe')]=function(_0x3ba72e){try{if(this[_0x1165('0x29')](_0x3ba72e)){logger[_0x1165('0x41')](_0x1165('0xbf'),_0x3ba72e[_0x1165('0x30')],util[_0x1165('0x40')](_0x3ba72e,{'showHidden':![],'depth':null}));if(this[_0x1165('0x10')][_0x3ba72e['uniqueid']]){if(!_[_0x1165('0x6f')](this[_0x1165('0x10')][_0x3ba72e[_0x1165('0x30')]][_0x1165('0xbb')])){this['channels'][_0x3ba72e[_0x1165('0x30')]]['mohtime']+=moment()[_0x1165('0xc0')](0x0)['diff'](this['channels'][_0x3ba72e[_0x1165('0x30')]][_0x1165('0xbb')],_0x1165('0x53'));logger['info']('[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s',_0x3ba72e['uniqueid'],this[_0x1165('0x10')][_0x3ba72e[_0x1165('0x30')]][_0x1165('0xc1')]);delete this[_0x1165('0x10')][_0x3ba72e['uniqueid']]['mohstarttime'];}}}}catch(_0x1bc576){logger[_0x1165('0x27')](_0x1165('0xc2'),_0x3ba72e['uniqueid'],util[_0x1165('0x40')](_0x1bc576,{'showHidden':![],'depth':null}));}};module[_0x1165('0xc3')]=VoiceCallReport;
\ No newline at end of file
+var _0xb6bd=['user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','destconnectedlinenum','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newexten]\x20event:','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','application','subtract','duration','seconds','includes','lastapplication','lastdata','cdr(','match','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','connectedlinename','destinationchannel','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','syncMixMonitorFilename','monitor','endsWith','.wav49','monitorFilename','monitors','isNil','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','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','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','sipcallid','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','diff','billableseconds','holdtime','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','then','transferType','isEmpty','getSettings','resolve','Action','StopMixMonitor','catch','finally','event','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','syncAttendedTransfer','origtransferercalleridnum','transfertargetcalleridnum','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','ATTENDED','[%s][voiceCallReport][attendedtransfer]','syncBlindTransfer','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','BlindTransfer','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','mohtime','exports','bluebird','moment','util','path','ioredis','../../../config/environment','ami','../ami','../model/channel','../rpc/setting','unknown','not_inuse','busy','ringing','ringinuse','onhold','set','queue','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','BUSY','redis','defaults','localhost','channels','agents','blindTransfers','syncNewExten','bind','newchannel','syncNewChannel','syncNewState','varset','syncVarSet','hangup','syncHangup','newcallerid','syncNewCallerId','musiconholdstart','syncMusicOnHoldStart','syncMusicOnHoldStop','info','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','isNotNull','isUndefined','prototype','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','linkedid','merge','pick','keys','context','from-sip','split','exten','xcally-motion-preview','channel','connectedlinenum','format','user:%s','name'];(function(_0x1987dd,_0x336072){var _0x147d83=function(_0x5c603c){while(--_0x5c603c){_0x1987dd['push'](_0x1987dd['shift']());}};_0x147d83(++_0x336072);}(_0xb6bd,0x80));var _0xdb6b=function(_0x541733,_0x3f23a5){_0x541733=_0x541733-0x0;var _0x572194=_0xb6bd[_0x541733];return _0x572194;};'use strict';var BPromise=require(_0xdb6b('0x0'));var _=require('lodash');var moment=require(_0xdb6b('0x1'));var util=require(_0xdb6b('0x2'));var path=require(_0xdb6b('0x3'));var Redis=require(_0xdb6b('0x4'));var config=require(_0xdb6b('0x5'));var logger=require('../../../config/logger')(_0xdb6b('0x6'));var ami=require(_0xdb6b('0x7'));var Channel=require(_0xdb6b('0x8'));var RpcSetting=require(_0xdb6b('0x9'));var statusDesc=[_0xdb6b('0xa'),_0xdb6b('0xb'),'inuse',_0xdb6b('0xc'),'invalid','unavailable',_0xdb6b('0xd'),_0xdb6b('0xe'),_0xdb6b('0xf')];var applications=[_0xdb6b('0x10'),_0xdb6b('0x11'),_0xdb6b('0x12'),_0xdb6b('0x13'),_0xdb6b('0x14'),_0xdb6b('0x15')];var dispositions=[_0xdb6b('0x16'),_0xdb6b('0x17'),'FAILED','NO\x20ANSWER','NO\x20ANSWER',_0xdb6b('0x16'),'ANSWERED',_0xdb6b('0x18'),_0xdb6b('0x17'),_0xdb6b('0x17'),_0xdb6b('0x17')];var actions={};config[_0xdb6b('0x19')]=_[_0xdb6b('0x1a')](config[_0xdb6b('0x19')],{'host':_0xdb6b('0x1b'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xdb6b('0x19')]));function VoiceCallReport(_0x25a226){this['channels']=_0x25a226[_0xdb6b('0x1c')];this[_0xdb6b('0x1d')]=_0x25a226['agents'];this[_0xdb6b('0x1e')]={};ami['on']('coreshowchannel',this[_0xdb6b('0x1f')][_0xdb6b('0x20')](this));ami['on']('newexten',this['syncNewExten'][_0xdb6b('0x20')](this));ami['on'](_0xdb6b('0x21'),this[_0xdb6b('0x22')]['bind'](this));ami['on']('newstate',this[_0xdb6b('0x23')][_0xdb6b('0x20')](this));ami['on'](_0xdb6b('0x24'),this[_0xdb6b('0x25')][_0xdb6b('0x20')](this));ami['on'](_0xdb6b('0x26'),this[_0xdb6b('0x27')]['bind'](this));ami['on'](_0xdb6b('0x28'),this[_0xdb6b('0x29')][_0xdb6b('0x20')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0xdb6b('0x20')](this));ami['on']('blindtransfer',this['syncBlindTransfer']['bind'](this));ami['on'](_0xdb6b('0x2a'),this[_0xdb6b('0x2b')][_0xdb6b('0x20')](this));ami['on']('musiconholdstop',this[_0xdb6b('0x2c')][_0xdb6b('0x20')](this));try{logger[_0xdb6b('0x2d')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0xdb6b('0x2e')]();}catch(_0x5d803f){logger[_0xdb6b('0x2f')](_0xdb6b('0x30'),util[_0xdb6b('0x31')](_0x5d803f,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype'][_0xdb6b('0x32')]=function(_0x354d24){return _0x354d24!==null&&!_[_0xdb6b('0x33')](_0x354d24);};VoiceCallReport[_0xdb6b('0x34')][_0xdb6b('0x35')]=function(_0x5bb38c,_0x10d871,_0x1d1de6){io['to'](_0x5bb38c)[_0xdb6b('0x35')](_0x10d871,_0x1d1de6);};VoiceCallReport[_0xdb6b('0x34')][_0xdb6b('0x29')]=function(_0x1d6546){try{if(this[_0xdb6b('0x32')](_0x1d6546)){logger[_0xdb6b('0x2d')](_0xdb6b('0x36'),_0x1d6546[_0xdb6b('0x37')],_0x1d6546[_0xdb6b('0x38')],_0x1d6546[_0xdb6b('0x39')]);logger[_0xdb6b('0x3a')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x1d6546['uniqueid'],util[_0xdb6b('0x31')](_0x1d6546,{'showHidden':![],'depth':null}));if(_0x1d6546[_0xdb6b('0x37')]===_0x1d6546[_0xdb6b('0x3b')]){if(!_[_0xdb6b('0x33')](this[_0xdb6b('0x1c')][_0x1d6546['uniqueid']])){_[_0xdb6b('0x3c')](this['channels'][_0x1d6546[_0xdb6b('0x37')]],_[_0xdb6b('0x3d')](_0x1d6546,_[_0xdb6b('0x3e')](this[_0xdb6b('0x1c')][_0x1d6546['uniqueid']])));}}if(_0x1d6546[_0xdb6b('0x3f')]===_0xdb6b('0x40')){if(this[_0xdb6b('0x1d')][_0x1d6546['channel'][_0xdb6b('0x41')]('-')[0x0]]){if(_0x1d6546[_0xdb6b('0x42')]==_0xdb6b('0x43')){this[_0xdb6b('0x1d')][_0x1d6546[_0xdb6b('0x44')]['split']('-')[0x0]]['destconnectedlinenum']=_0x1d6546[_0xdb6b('0x45')];this['emit'](util[_0xdb6b('0x46')](_0xdb6b('0x47'),this[_0xdb6b('0x1d')][_0x1d6546[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]][_0xdb6b('0x48')]),_0xdb6b('0x49'),{'destaccountcode':this[_0xdb6b('0x1d')][_0x1d6546[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]][_0xdb6b('0x4a')],'destconnectedlinenum':_0x1d6546[_0xdb6b('0x45')]});}}}}}catch(_0x827401){logger[_0xdb6b('0x2f')](_0xdb6b('0x4b'),_0x1d6546[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x827401,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')][_0xdb6b('0x22')]=function(_0x104c26){try{if(this[_0xdb6b('0x32')](_0x104c26)){logger[_0xdb6b('0x3a')](_0xdb6b('0x4c'),_0x104c26[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x104c26,{'showHidden':![],'depth':null}));if(_0x104c26['uniqueid']===_0x104c26[_0xdb6b('0x3b')]&&_0x104c26[_0xdb6b('0x44')]!=_0xdb6b('0x4d')){if(_['isUndefined'](this[_0xdb6b('0x1c')][_0x104c26[_0xdb6b('0x37')]])){logger[_0xdb6b('0x2d')](_0xdb6b('0x4e'),_0x104c26[_0xdb6b('0x37')],_0x104c26[_0xdb6b('0x3f')],_0x104c26[_0xdb6b('0x42')]);this[_0xdb6b('0x1c')][_0x104c26[_0xdb6b('0x37')]]=new Channel();this['channels'][_0x104c26[_0xdb6b('0x37')]][_0xdb6b('0x4f')]=moment()[_0xdb6b('0x46')](_0xdb6b('0x50'));this[_0xdb6b('0x1c')][_0x104c26[_0xdb6b('0x37')]][_0xdb6b('0x51')]=dispositions[_[_0xdb6b('0x52')](_0x104c26[_0xdb6b('0x53')])];_[_0xdb6b('0x3c')](this[_0xdb6b('0x1c')][_0x104c26[_0xdb6b('0x37')]],_[_0xdb6b('0x3d')](_0x104c26,_[_0xdb6b('0x3e')](this[_0xdb6b('0x1c')][_0x104c26['uniqueid']])));if(_0x104c26['context']==='from-sip'){if(this[_0xdb6b('0x1d')][_0x104c26[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]){if(_[_0xdb6b('0x33')](this[_0xdb6b('0x1d')][_0x104c26[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]][_0xdb6b('0x54')])){this[_0xdb6b('0x1d')][_0x104c26[_0xdb6b('0x44')]['split']('-')[0x0]]['destconnectedlinenum']=_0x104c26['exten'];logger[_0xdb6b('0x3a')](_0xdb6b('0x55'),_0x104c26[_0xdb6b('0x37')],util[_0xdb6b('0x31')]({'destaccountcode':this[_0xdb6b('0x1d')][_0x104c26['channel'][_0xdb6b('0x41')]('-')[0x0]][_0xdb6b('0x4a')],'destconnectedlinenum':_0x104c26[_0xdb6b('0x42')]},{'showHidden':![],'depth':null}));this[_0xdb6b('0x35')](util[_0xdb6b('0x46')]('user:%s',this[_0xdb6b('0x1d')][_0x104c26[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]][_0xdb6b('0x48')]),'user:agentconnect',{'destaccountcode':this[_0xdb6b('0x1d')][_0x104c26[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]][_0xdb6b('0x4a')],'destconnectedlinenum':_0x104c26[_0xdb6b('0x42')]});}}}}}}}catch(_0x2f5780){logger['error']('[%s][voiceCallReport][newchannel]',_0x104c26[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x2f5780,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')]['syncNewExten']=function(_0x9c39ae){try{if(this[_0xdb6b('0x32')](_0x9c39ae)){logger[_0xdb6b('0x3a')](_0xdb6b('0x56'),_0x9c39ae[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x9c39ae,{'showHidden':![],'depth':null}));if(_0x9c39ae[_0xdb6b('0x37')]===_0x9c39ae['linkedid']&&_0x9c39ae['exten']!='h'&&_0x9c39ae[_0xdb6b('0x44')]!=_0xdb6b('0x4d')){_0x9c39ae['application']=_0x9c39ae['application'][_0xdb6b('0x57')]();_0x9c39ae[_0xdb6b('0x58')]=_0x9c39ae[_0xdb6b('0x59')]&&_0x9c39ae['appdata'][_0xdb6b('0x5a')](_0xdb6b('0x5b'))?_0x9c39ae['appdata']:(_0x9c39ae[_0xdb6b('0x59')]||_0x9c39ae[_0xdb6b('0x58')])['toLowerCase']();logger[_0xdb6b('0x2d')](_0xdb6b('0x5c'),_0x9c39ae['uniqueid'],_0x9c39ae[_0xdb6b('0x5d')],_0x9c39ae[_0xdb6b('0x58')]);if(_[_0xdb6b('0x33')](this[_0xdb6b('0x1c')][_0x9c39ae[_0xdb6b('0x37')]])){this[_0xdb6b('0x1c')][_0x9c39ae[_0xdb6b('0x37')]]=new Channel();this[_0xdb6b('0x1c')][_0x9c39ae[_0xdb6b('0x37')]]['starttime']=_0x9c39ae['duration']?moment()[_0xdb6b('0x5e')](moment[_0xdb6b('0x5f')](_0x9c39ae[_0xdb6b('0x5f')])[_0xdb6b('0x60')](),_0xdb6b('0x60'))['format']('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0xdb6b('0x46')](_0xdb6b('0x50'));this[_0xdb6b('0x1c')][_0x9c39ae[_0xdb6b('0x37')]]['disposition']=_0xdb6b('0x16');}_[_0xdb6b('0x3c')](this[_0xdb6b('0x1c')][_0x9c39ae[_0xdb6b('0x37')]],_['pick'](_0x9c39ae,_[_0xdb6b('0x3e')](this['channels'][_0x9c39ae[_0xdb6b('0x37')]])));if(_[_0xdb6b('0x61')](applications,_0x9c39ae['application'])){this[_0xdb6b('0x1c')][_0x9c39ae[_0xdb6b('0x37')]][_0xdb6b('0x62')]=_0x9c39ae['application'];this['channels'][_0x9c39ae[_0xdb6b('0x37')]][_0xdb6b('0x63')]=_0x9c39ae['applicationdata'];if(_0x9c39ae[_0xdb6b('0x5d')]==='set'&&_['startsWith'](_0x9c39ae['applicationdata'][_0xdb6b('0x57')](),_0xdb6b('0x64'))){var _0x238f10=_0x9c39ae[_0xdb6b('0x58')][_0xdb6b('0x41')]('=');var _0x547899=_0x238f10[0x0][_0xdb6b('0x57')]()[_0xdb6b('0x65')](/cdr\((.*)\)/);if(_0x547899){this[_0xdb6b('0x1c')][_0x9c39ae[_0xdb6b('0x37')]][_0x547899[0x1]]=_0x238f10[0x1];}}else if(_0x9c39ae[_0xdb6b('0x5d')]===_0xdb6b('0x11')){this['channels'][_0x9c39ae[_0xdb6b('0x37')]][_0xdb6b('0x11')]=_0x9c39ae[_0xdb6b('0x58')][_0xdb6b('0x41')](',')[0x0];}}}}}catch(_0x2c0e24){logger[_0xdb6b('0x2f')](_0xdb6b('0x66'),_0x9c39ae['uniqueid'],util[_0xdb6b('0x31')](_0x2c0e24,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')][_0xdb6b('0x23')]=function(_0x547674){try{if(this[_0xdb6b('0x32')](_0x547674)){logger[_0xdb6b('0x2d')](_0xdb6b('0x67'),_0x547674[_0xdb6b('0x37')],_0x547674[_0xdb6b('0x3b')],_0x547674[_0xdb6b('0x38')],_0x547674['calleridnum']);logger[_0xdb6b('0x3a')](_0xdb6b('0x68'),_0x547674[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x547674,{'showHidden':![],'depth':null}));if(_0x547674[_0xdb6b('0x37')]!==_0x547674[_0xdb6b('0x3b')]){if(this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x3b')]]){if(_0x547674['channelstate']==='6'){if(!this[_0xdb6b('0x1c')][_0x547674['linkedid']][_0xdb6b('0x69')]){var _0x61eeb8=moment();this['channels'][_0x547674[_0xdb6b('0x3b')]][_0xdb6b('0x69')]=!![];this['channels'][_0x547674['linkedid']][_0xdb6b('0x6a')]=_0x61eeb8[_0xdb6b('0x46')](_0xdb6b('0x50'));if(this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x3b')]][_0xdb6b('0x4f')]){this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x3b')]]['holdtime']=_0x61eeb8['diff'](this[_0xdb6b('0x1c')][_0x547674['linkedid']]['starttime'],_0xdb6b('0x60'));}}this[_0xdb6b('0x1c')][_0x547674['linkedid']][_0xdb6b('0x3b')]=_0x547674[_0xdb6b('0x37')];if(_0x547674[_0xdb6b('0x39')]!==_0xdb6b('0x43')){this['channels'][_0x547674[_0xdb6b('0x3b')]][_0xdb6b('0x45')]=_0x547674['calleridnum'];}this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x3b')]][_0xdb6b('0x6b')]=_0x547674[_0xdb6b('0x38')];this[_0xdb6b('0x1c')][_0x547674['linkedid']][_0xdb6b('0x6c')]=_0x547674[_0xdb6b('0x44')];this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x3b')]][_0xdb6b('0x51')]=dispositions[_[_0xdb6b('0x52')](_0x547674[_0xdb6b('0x53')])];if(this[_0xdb6b('0x1d')][_0x547674[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]){this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x3b')]][_0xdb6b('0x6d')]=this[_0xdb6b('0x1d')][_0x547674['channel'][_0xdb6b('0x41')]('-')[0x0]]['id'];this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x3b')]][_0xdb6b('0x6e')]=this[_0xdb6b('0x1d')][_0x547674['channel'][_0xdb6b('0x41')]('-')[0x0]]['name'];}}}}else{if(this[_0xdb6b('0x1c')][_0x547674['uniqueid']]){if(_0x547674[_0xdb6b('0x53')]==='6'){if(this[_0xdb6b('0x1d')][_0x547674[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]){this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x37')]][_0xdb6b('0x6d')]=this['agents'][_0x547674[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]['id'];this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x37')]][_0xdb6b('0x6e')]=this[_0xdb6b('0x1d')][_0x547674[_0xdb6b('0x44')]['split']('-')[0x0]][_0xdb6b('0x48')];}}}}if(_0x547674[_0xdb6b('0x53')]==='6'&&_0x547674[_0xdb6b('0x3f')]==='from-sip'){if(this[_0xdb6b('0x1d')][_0x547674['channel'][_0xdb6b('0x41')]('-')[0x0]]){this['agents'][_0x547674[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]['destconnectedlinenum']=_0x547674[_0xdb6b('0x42')];var _0x3aecca;if(this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x37')]])_0x3aecca=this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x37')]][_0xdb6b('0x6f')];else if(this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x3b')]])_0x3aecca=this[_0xdb6b('0x1c')][_0x547674['linkedid']][_0xdb6b('0x6f')];logger[_0xdb6b('0x3a')](_0xdb6b('0x70'),_0x547674[_0xdb6b('0x37')],util[_0xdb6b('0x31')]({'destaccountcode':this[_0xdb6b('0x1d')][_0x547674[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x547674[_0xdb6b('0x42')],'routealias':_0x3aecca},{'showHidden':![],'depth':null}));this['emit'](util[_0xdb6b('0x46')]('user:%s',this[_0xdb6b('0x1d')][_0x547674[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]['name']),_0xdb6b('0x49'),{'destaccountcode':this[_0xdb6b('0x1d')][_0x547674[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]][_0xdb6b('0x4a')],'destconnectedlinenum':_0x547674[_0xdb6b('0x42')],'routealias':_0x3aecca});}}}}catch(_0x319142){logger[_0xdb6b('0x2f')]('[%s][voiceCallReport][newstate]',_0x547674[_0xdb6b('0x37')],util['inspect'](_0x319142,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')][_0xdb6b('0x71')]=function(_0x4e07e0,_0x5aba0f){try{if(this[_0xdb6b('0x1c')][_0x4e07e0]){logger[_0xdb6b('0x2d')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x4e07e0,_0x5aba0f);this[_0xdb6b('0x1c')][_0x4e07e0][_0xdb6b('0x72')]=!![];if(_[_0xdb6b('0x73')](_0x5aba0f,_0xdb6b('0x74'))){_0x5aba0f=_0x5aba0f['replace'](_0xdb6b('0x74'),'.WAV');}this[_0xdb6b('0x1c')][_0x4e07e0][_0xdb6b('0x75')]=_0x5aba0f;var _0x16798a=_['find'](this['channels'][_0x4e07e0][_0xdb6b('0x76')],{'filename':_0x5aba0f});if(_[_0xdb6b('0x77')](_0x16798a)){this[_0xdb6b('0x1c')][_0x4e07e0][_0xdb6b('0x76')]['push']({'filename':_0x5aba0f,'createdAt':moment()[_0xdb6b('0x46')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':'','status':_0xdb6b('0x78')});}}}catch(_0x30bbfa){logger[_0xdb6b('0x2f')](_0xdb6b('0x79'),_0x4e07e0,util[_0xdb6b('0x31')](_0x30bbfa,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')][_0xdb6b('0x25')]=function(_0xa23876){try{if(this['isNotNull'](_0xa23876)){logger[_0xdb6b('0x3a')](_0xdb6b('0x7a'),_0xa23876[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0xa23876,{'showHidden':![],'depth':null}));if(this[_0xdb6b('0x1c')][_0xa23876[_0xdb6b('0x37')]]&&_0xa23876[_0xdb6b('0x44')]!=_0xdb6b('0x4d')){if(this[_0xdb6b('0x32')](_0xa23876[_0xdb6b('0x7b')])){if(this['isNotNull'](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x7c')])){logger[_0xdb6b('0x2d')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0xa23876['uniqueid'],_0xa23876[_0xdb6b('0x7d')]);this['syncMixMonitorFilename'](_0xa23876['uniqueid'],_0xa23876[_0xdb6b('0x7d')]);}else if(this[_0xdb6b('0x32')](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x7e')])){logger[_0xdb6b('0x2d')](_0xdb6b('0x7f'),_0xa23876[_0xdb6b('0x37')],_0xa23876[_0xdb6b('0x7d')]);this[_0xdb6b('0x1c')][_0xa23876[_0xdb6b('0x37')]][_0xdb6b('0x39')]=_0xa23876['value'];}else if(this[_0xdb6b('0x32')](_0xa23876['variable']['xmd-callerid'])){logger['info'](_0xdb6b('0x80'),_0xa23876[_0xdb6b('0x37')],_0xa23876[_0xdb6b('0x7d')]);this[_0xdb6b('0x1c')][_0xa23876[_0xdb6b('0x37')]][_0xdb6b('0x81')]=_0xa23876[_0xdb6b('0x7d')];}else if(this['isNotNull'](_0xa23876['variable'][_0xdb6b('0x82')])){logger[_0xdb6b('0x2d')](_0xdb6b('0x83'),_0xa23876[_0xdb6b('0x37')],_0xa23876[_0xdb6b('0x7d')]);this['channels'][_0xa23876[_0xdb6b('0x37')]][_0xdb6b('0x84')]=_0xa23876[_0xdb6b('0x7d')];}else if(this[_0xdb6b('0x32')](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x85')])){logger[_0xdb6b('0x2d')](_0xdb6b('0x86'),_0xa23876['uniqueid'],_0xa23876[_0xdb6b('0x7d')][_0xdb6b('0x41')](',')[0x0]);this['channels'][_0xa23876[_0xdb6b('0x37')]]['queue']=_0xa23876[_0xdb6b('0x7d')][_0xdb6b('0x41')](',')[0x0];}else if(this[_0xdb6b('0x32')](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x87')])){logger[_0xdb6b('0x2d')](_0xdb6b('0x88'),_0xa23876[_0xdb6b('0x37')],_0xa23876[_0xdb6b('0x7d')]);this[_0xdb6b('0x1c')][_0xa23876['uniqueid']][_0xdb6b('0x89')]=_0xa23876[_0xdb6b('0x7d')];}else if(this[_0xdb6b('0x32')](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x8a')])){logger['info'](_0xdb6b('0x8b'),_0xa23876[_0xdb6b('0x37')],_0xa23876[_0xdb6b('0x7d')]);this[_0xdb6b('0x1c')][_0xa23876[_0xdb6b('0x37')]][_0xdb6b('0x8c')]=_0xa23876[_0xdb6b('0x7d')];}else if(this[_0xdb6b('0x32')](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x8d')])){logger[_0xdb6b('0x2d')](_0xdb6b('0x8e'),_0xa23876[_0xdb6b('0x37')],_0xa23876[_0xdb6b('0x7d')]);this[_0xdb6b('0x1c')][_0xa23876[_0xdb6b('0x37')]][_0xdb6b('0x8f')]=_0xa23876[_0xdb6b('0x7d')];}else if(this[_0xdb6b('0x32')](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x90')])){logger[_0xdb6b('0x2d')]('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0xa23876[_0xdb6b('0x37')],_0xa23876['value']);this[_0xdb6b('0x1c')][_0xa23876[_0xdb6b('0x37')]][_0xdb6b('0x11')]=_0xa23876[_0xdb6b('0x7d')];}else if(this[_0xdb6b('0x32')](_0xa23876['variable']['sipcallid'])){logger[_0xdb6b('0x2d')](_0xdb6b('0x91'),_0xa23876[_0xdb6b('0x37')],_0xa23876['value']);this['channels'][_0xa23876[_0xdb6b('0x37')]][_0xdb6b('0x92')]=_0xa23876[_0xdb6b('0x7d')];}}}else if(this[_0xdb6b('0x32')](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x7c')])){if(_0xa23876[_0xdb6b('0x7d')]){var _0x568945=path[_0xdb6b('0x93')](_0xa23876[_0xdb6b('0x7d')])[_0xdb6b('0x48')];logger['info'](_0xdb6b('0x94'),_0x568945,_0xa23876[_0xdb6b('0x7d')]);this['syncMixMonitorFilename'](_0x568945,_0xa23876[_0xdb6b('0x7d')]);}}else if(this[_0xdb6b('0x1c')][_0xa23876[_0xdb6b('0x3b')]]){if(this['isNotNull'](_0xa23876['variable'])){if(this['isNotNull'](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x95')])){logger[_0xdb6b('0x2d')](_0xdb6b('0x91'),_0xa23876['linkedid'],_0xa23876[_0xdb6b('0x7d')]);this[_0xdb6b('0x1c')][_0xa23876[_0xdb6b('0x3b')]]['sipcalllinkedid']=_0xa23876[_0xdb6b('0x7d')];}}}}}catch(_0x25ae29){logger[_0xdb6b('0x2f')]('[%s][voiceCallReport][varset]',_0xa23876[_0xdb6b('0x37')],util['inspect'](_0x25ae29,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')]['syncHangup']=function(_0x248c82){try{if(this[_0xdb6b('0x32')](_0x248c82)){logger[_0xdb6b('0x3a')](_0xdb6b('0x96'),_0x248c82[_0xdb6b('0x37')],util['inspect'](_0x248c82,{'showHidden':![],'depth':null}));if(this[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]]){logger[_0xdb6b('0x2d')](_0xdb6b('0x97'),_0x248c82[_0xdb6b('0x37')],_0x248c82[_0xdb6b('0x98')]);var _0x52d27e=moment();this[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]]['endtime']=_0x52d27e['format'](_0xdb6b('0x50'));this[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]]['duration']=_0x52d27e[_0xdb6b('0x99')](this[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]][_0xdb6b('0x4f')],'seconds');if(this[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]]['answered']){this['channels'][_0x248c82[_0xdb6b('0x37')]][_0xdb6b('0x9a')]=_0x52d27e[_0xdb6b('0x99')](this[_0xdb6b('0x1c')][_0x248c82['uniqueid']][_0xdb6b('0x6a')],_0xdb6b('0x60'));this['channels'][_0x248c82[_0xdb6b('0x37')]][_0xdb6b('0x9b')]=this[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]]['duration']-this[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]]['billableseconds'];}if(_0x248c82[_0xdb6b('0x3f')]==='from-sip'){if(this['agents'][_0x248c82[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]){this[_0xdb6b('0x1d')][_0x248c82[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]=_[_0xdb6b('0x9c')](this[_0xdb6b('0x1d')][_0x248c82[_0xdb6b('0x44')]['split']('-')[0x0]],[_0xdb6b('0x54')]);logger[_0xdb6b('0x3a')](_0xdb6b('0x9d'),_0x248c82[_0xdb6b('0x37')],util[_0xdb6b('0x31')]({'id':this[_0xdb6b('0x1d')][_0x248c82[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]['id'],'destaccountcode':this[_0xdb6b('0x1d')][_0x248c82[_0xdb6b('0x44')]['split']('-')[0x0]][_0xdb6b('0x4a')]},{'showHidden':![],'depth':null}));this[_0xdb6b('0x35')](util[_0xdb6b('0x46')](_0xdb6b('0x47'),this[_0xdb6b('0x1d')][_0x248c82[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]['name']),'user:agentcomplete',{'id':this[_0xdb6b('0x1d')][_0x248c82[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]['id'],'destaccountcode':this[_0xdb6b('0x1d')][_0x248c82[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]][_0xdb6b('0x4a')]});}}var _0x9805fe=this;Promise['resolve']()[_0xdb6b('0x9e')](function(){var _0x5dc365=_0x9805fe['channels'][_0x248c82[_0xdb6b('0x37')]];if(typeof _0x5dc365[_0xdb6b('0x9f')]==='undefined')return;if(_[_0xdb6b('0xa0')](_0x5dc365['monitors']))return;return RpcSetting[_0xdb6b('0xa1')]()[_0xdb6b('0x9e')](function(_0x136c00){if(!_0x136c00['stopRecordingOnTransfer'])return;return Promise[_0xdb6b('0xa2')]()['then'](function(){return ami[_0xdb6b('0xa3')]({'action':_0xdb6b('0xa4'),'channel':_0x5dc365[_0xdb6b('0x44')]})[_0xdb6b('0xa5')](function(){});})[_0xdb6b('0x9e')](function(){return ami[_0xdb6b('0xa3')]({'action':'StopMixMonitor','channel':_0x5dc365[_0xdb6b('0x6c')]})['catch'](function(){})[_0xdb6b('0xa6')](function(){var _0x17fe8c=_0x9805fe[_0xdb6b('0x1d')][_0x5dc365['destinationchannel'][_0xdb6b('0x41')]('-')[0x0]];if(!_0x17fe8c)return;io[_0xdb6b('0x35')]('webbar:stopmonitors',{'agentId':_0x17fe8c['id'],'uniqueid':_0x5dc365['uniqueid']});});});});})['then'](function(){if(_0x248c82[_0xdb6b('0xa7')]==='BlindTransfer'){_0x9805fe['blindTransfers'][_0x248c82[_0xdb6b('0x37')]]=_0x9805fe[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]];}else{if(_0x9805fe['channels'][_0x248c82['uniqueid']][_0xdb6b('0x84')]===_0xdb6b('0xa8')&&_0x9805fe['blindTransfers'][_0x248c82[_0xdb6b('0x37')]]){_0x9805fe[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]][_0xdb6b('0x37')]=[_0x9805fe[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]][_0xdb6b('0x3b')],_0x9805fe[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]]['linkedid']=_0x9805fe[_0xdb6b('0x1c')][_0x248c82['uniqueid']][_0xdb6b('0x37')]][0x0];delete _0x9805fe[_0xdb6b('0x1e')][_0x248c82[_0xdb6b('0x37')]];}}logger[_0xdb6b('0x3a')](_0xdb6b('0xa9'),_0x248c82[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x9805fe[_0xdb6b('0x1c')][_0x248c82['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xdb6b('0x35')](_0xdb6b('0xaa'),_0x9805fe['channels'][_0x248c82[_0xdb6b('0x37')]]);delete _0x9805fe[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]];});}}}catch(_0x796634){logger['error'](_0xdb6b('0xab'),_0x248c82[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x796634,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')][_0xdb6b('0xac')]=function(_0x7c533f){try{if(this['isNotNull'](_0x7c533f)){logger[_0xdb6b('0x2d')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x7c533f['uniqueid'],_0x7c533f[_0xdb6b('0xad')],_0x7c533f[_0xdb6b('0xae')]);logger['debug']('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x7c533f[_0xdb6b('0x37')],util['inspect'](_0x7c533f,{'showHidden':![],'depth':null}));if(this['channels'][_0x7c533f[_0xdb6b('0xaf')]]){this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xaf')]][_0xdb6b('0xb0')]=_0x7c533f[_0xdb6b('0xad')];this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xaf')]][_0xdb6b('0xb1')]=_0x7c533f[_0xdb6b('0xae')];if(this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb2')]]){var _0x51fcd9=this['channels'][_0x7c533f[_0xdb6b('0xb2')]];this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb2')]]=this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xaf')]];this['channels'][_0x7c533f[_0xdb6b('0xaf')]]=_0x51fcd9;}}else if(this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb3')]]){this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb3')]][_0xdb6b('0xb0')]=_0x7c533f[_0xdb6b('0xad')];this[_0xdb6b('0x1c')][_0x7c533f['transfertargetuniqueid']][_0xdb6b('0xb1')]=_0x7c533f[_0xdb6b('0xae')];if(this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb4')]]){var _0x51fcd9=this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb4')]];this[_0xdb6b('0x1c')][_0x7c533f['origtransfereruniqueid']]=this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb3')]];this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb3')]]=_0x51fcd9;}}if((this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb4')]]||this['channels'][_0x7c533f[_0xdb6b('0xb5')]])&&this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb2')]]){var _0x53c571=_['some']([this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb4')]],this['channels'][_0x7c533f[_0xdb6b('0xb5')]],this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb2')]]],function(_0x5c14bd){return _0x5c14bd&&_0x5c14bd['type']===_0xdb6b('0xa8')&&_0x5c14bd['routeid'];});if(_0x53c571){if(this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb4')]])this[_0xdb6b('0x1c')][_0x7c533f['origtransfereruniqueid']][_0xdb6b('0x9f')]=_0xdb6b('0xb6');if(this[_0xdb6b('0x1c')][_0x7c533f['origtransfererlinkedid']])this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb5')]][_0xdb6b('0x9f')]=_0xdb6b('0xb6');this['channels'][_0x7c533f[_0xdb6b('0xb2')]][_0xdb6b('0x9f')]=_0xdb6b('0xb6');}}}}catch(_0x5ebfef){logger[_0xdb6b('0x2f')](_0xdb6b('0xb7'),_0x7c533f[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x5ebfef,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')][_0xdb6b('0xb8')]=function(_0x196cff){try{if(this[_0xdb6b('0x32')](_0x196cff)){logger[_0xdb6b('0x2d')](_0xdb6b('0xb9'),_0x196cff[_0xdb6b('0x37')],_0x196cff[_0xdb6b('0xba')],_0x196cff[_0xdb6b('0xbb')]);logger[_0xdb6b('0x3a')](_0xdb6b('0xbc'),_0x196cff[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x196cff,{'showHidden':![],'depth':null}));if(this[_0xdb6b('0x1c')][_0x196cff[_0xdb6b('0xaf')]]){this['channels'][_0x196cff[_0xdb6b('0xaf')]]['transfercalleridnum']=_0x196cff[_0xdb6b('0xba')];this['channels'][_0x196cff[_0xdb6b('0xaf')]][_0xdb6b('0xb1')]=_0x196cff[_0xdb6b('0xbb')];this[_0xdb6b('0x1c')][_0x196cff[_0xdb6b('0xaf')]][_0xdb6b('0x9f')]=_0xdb6b('0xbd');this['syncHangup']({'event':_0xdb6b('0xbe'),'uniqueid':_0x196cff[_0xdb6b('0xaf')],'context':_0x196cff[_0xdb6b('0x3f')],'channel':_0x196cff['transfererchannel']});}else{this[_0xdb6b('0x1c')][_0x196cff[_0xdb6b('0xbf')]][_0xdb6b('0x9f')]=_0xdb6b('0xbd');}}}catch(_0x1bed77){logger[_0xdb6b('0x2f')](_0xdb6b('0xc0'),_0x196cff[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x1bed77,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xdb6b('0x2b')]=function(_0x15e862){try{if(this['isNotNull'](_0x15e862)){logger[_0xdb6b('0x3a')](_0xdb6b('0xc1'),_0x15e862[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x15e862,{'showHidden':![],'depth':null}));if(this[_0xdb6b('0x1c')][_0x15e862[_0xdb6b('0x37')]]){if(!_[_0xdb6b('0x77')](this['channels'][_0x15e862[_0xdb6b('0x37')]][_0xdb6b('0x6a')])){this[_0xdb6b('0x1c')][_0x15e862['uniqueid']][_0xdb6b('0xc2')]=moment()[_0xdb6b('0x46')](_0xdb6b('0x50'));logger['info']('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x15e862[_0xdb6b('0x37')],this[_0xdb6b('0x1c')][_0x15e862['uniqueid']]['mohstarttime']);}}}}catch(_0x3a31d6){logger[_0xdb6b('0x2f')](_0xdb6b('0xc3'),_0x15e862['uniqueid'],util[_0xdb6b('0x31')](_0x3a31d6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')]['syncMusicOnHoldStop']=function(_0xc96dc5){try{if(this[_0xdb6b('0x32')](_0xc96dc5)){logger['debug'](_0xdb6b('0xc4'),_0xc96dc5[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0xc96dc5,{'showHidden':![],'depth':null}));if(this['channels'][_0xc96dc5[_0xdb6b('0x37')]]){if(!_[_0xdb6b('0x77')](this[_0xdb6b('0x1c')][_0xc96dc5[_0xdb6b('0x37')]][_0xdb6b('0xc2')])){this[_0xdb6b('0x1c')][_0xc96dc5['uniqueid']]['mohtime']+=moment()[_0xdb6b('0xc5')](0x0)[_0xdb6b('0x99')](this[_0xdb6b('0x1c')][_0xc96dc5[_0xdb6b('0x37')]][_0xdb6b('0xc2')],_0xdb6b('0x60'));logger[_0xdb6b('0x2d')](_0xdb6b('0xc6'),_0xc96dc5[_0xdb6b('0x37')],this[_0xdb6b('0x1c')][_0xc96dc5['uniqueid']][_0xdb6b('0xc7')]);delete this[_0xdb6b('0x1c')][_0xc96dc5[_0xdb6b('0x37')]][_0xdb6b('0xc2')];}}}}catch(_0x5e2ddd){logger[_0xdb6b('0x2f')]('[%s][voiceCallReport][musiconholdstop]',_0xc96dc5['uniqueid'],util[_0xdb6b('0x31')](_0x5e2ddd,{'showHidden':![],'depth':null}));}};module[_0xdb6b('0xc8')]=VoiceCallReport;
\ No newline at end of file
index aaf0c2e..cf10b04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde4a=['sumBillable','billableseconds','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','linkedid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','startsWith','cdr(','match','[%s][voiceDialReport][newexten]','lodash','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','dialend','syncDialEnd','bind','syncVarSet','newexten','syncNewExten','syncHangup','isNotNull','isUndefined','prototype','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','YYYY-MM-DD\x20HH:mm:ss','substring','channel','lastIndexOf','omit','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','format','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:','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','variable','value','outboundrouteid','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','keys','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','memberdynamic','memberinterface','memberlastcall','membername','memberrealtime','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','endtime','duration','diff','starttime','seconds','total','answered','holdtime','sumHoldTime'];(function(_0x503adc,_0x12badb){var _0x2c596a=function(_0x336f2c){while(--_0x336f2c){_0x503adc['push'](_0x503adc['shift']());}};_0x2c596a(++_0x12badb);}(_0xde4a,0x1e6));var _0xade4=function(_0x2d8640,_0x28bd0a){_0x2d8640=_0x2d8640-0x0;var _0xa620eb=_0xde4a[_0x2d8640];return _0xa620eb;};'use strict';var _=require(_0xade4('0x0'));var moment=require('moment');var util=require('util');var Redis=require(_0xade4('0x1'));var config=require(_0xade4('0x2'));var logger=require('../../../config/logger')('ami');var ami=require('../ami');config[_0xade4('0x3')]=_[_0xade4('0x4')](config[_0xade4('0x3')],{'host':_0xade4('0x5'),'port':0x18eb});var io=require(_0xade4('0x6'))(new Redis(config['redis']));function VoiceDialReport(_0x48ceac){this[_0xade4('0x7')]=_0x48ceac[_0xade4('0x8')];this[_0xade4('0x9')]=_0x48ceac['outbound'];this[_0xade4('0xa')]={};this[_0xade4('0xb')]={};ami['on'](_0xade4('0xc'),this['syncDialBegin']['bind'](this));ami['on'](_0xade4('0xd'),this[_0xade4('0xe')][_0xade4('0xf')](this));ami['on']('varset',this[_0xade4('0x10')][_0xade4('0xf')](this));ami['on'](_0xade4('0x11'),this[_0xade4('0x12')][_0xade4('0xf')](this));ami['on']('hangup',this[_0xade4('0x13')][_0xade4('0xf')](this));}VoiceDialReport['prototype'][_0xade4('0x14')]=function(_0x48d22c){return _0x48d22c!==null&&!_[_0xade4('0x15')](_0x48d22c);};VoiceDialReport[_0xade4('0x16')][_0xade4('0x17')]=function(_0x50ca75,_0x580591,_0x27fc5a){io['to'](_0x50ca75)[_0xade4('0x17')](_0x580591,_0x27fc5a);};VoiceDialReport[_0xade4('0x16')]['syncDialBegin']=function(_0x86149c){try{if(this[_0xade4('0x14')](_0x86149c)){logger[_0xade4('0x18')](_0xade4('0x19'),_0x86149c[_0xade4('0x1a')],util[_0xade4('0x1b')](_0x86149c,{'showHidden':![],'depth':null}));if(this['channels'][_0x86149c[_0xade4('0x1a')]]){_[_0xade4('0x1c')](this[_0xade4('0x7')][_0x86149c[_0xade4('0x1a')]],{'starttime':moment()['format'](_0xade4('0x1d')),'lastevent':'called','interface':_0x86149c['channel'][_0xade4('0x1e')](0x0,_0x86149c['channel']['lastIndexOf']('-')),'membername':_0x86149c[_0xade4('0x1f')][_0xade4('0x1e')](_0x86149c['channel'][_0xade4('0x20')]('/')+0x1,_0x86149c[_0xade4('0x1f')][_0xade4('0x20')]('-'))},_[_0xade4('0x21')](_0x86149c,['event','privilege']));logger[_0xade4('0x22')](_0xade4('0x23'),_0x86149c[_0xade4('0x1a')],this[_0xade4('0x7')][_0x86149c['uniqueid']]['membername'],this[_0xade4('0x7')][_0x86149c[_0xade4('0x1a')]][_0xade4('0x24')]);logger[_0xade4('0x18')](_0xade4('0x25'),_0x86149c['uniqueid'],util['inspect'](this[_0xade4('0x7')][_0x86149c[_0xade4('0x1a')]],{'showHidden':![],'depth':null}));if(this[_0xade4('0xa')][_0x86149c['uniqueid']])_[_0xade4('0x1c')](this[_0xade4('0x7')][_0x86149c[_0xade4('0x1a')]],this[_0xade4('0xa')][_0x86149c[_0xade4('0x1a')]]);this[_0xade4('0x17')](_0xade4('0x26'),_0xade4('0x27'),this['channels'][_0x86149c['uniqueid']]);logger[_0xade4('0x18')](_0xade4('0x28'),_0x86149c['uniqueid'],util[_0xade4('0x1b')](this['channels'][_0x86149c['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xade4('0x17')](_0xade4('0x29'),this['channels'][_0x86149c[_0xade4('0x1a')]]);}}}catch(_0x144d4f){logger[_0xade4('0x2a')](_0xade4('0x2b'),_0x86149c[_0xade4('0x1a')],util[_0xade4('0x1b')](_0x144d4f,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncDialEnd']=function(_0x3d4a96){try{if(this[_0xade4('0x14')](_0x3d4a96)){logger['debug'](_0xade4('0x2c'),_0x3d4a96[_0xade4('0x1a')],util['inspect'](_0x3d4a96,{'showHidden':![],'depth':null}));if(this[_0xade4('0x7')][_0x3d4a96[_0xade4('0x1a')]]){this[_0xade4('0x7')][_0x3d4a96['uniqueid']][_0xade4('0x2d')]=_0x3d4a96[_0xade4('0x2d')];if(_0x3d4a96[_0xade4('0x2d')]===_0xade4('0x2e')){this[_0xade4('0x7')][_0x3d4a96[_0xade4('0x1a')]][_0xade4('0x2f')]=_0x3d4a96[_0xade4('0x2f')];this[_0xade4('0x7')][_0x3d4a96[_0xade4('0x1a')]]['connectedlinename']=_0x3d4a96[_0xade4('0x30')];this['channels'][_0x3d4a96[_0xade4('0x1a')]][_0xade4('0x31')]=moment()[_0xade4('0x32')](_0xade4('0x1d'));this[_0xade4('0x7')][_0x3d4a96['uniqueid']][_0xade4('0x33')]=_0xade4('0x34');logger[_0xade4('0x22')](_0xade4('0x35'),_0x3d4a96[_0xade4('0x1a')],_0x3d4a96[_0xade4('0x1f')]['substring'](_0x3d4a96[_0xade4('0x1f')][_0xade4('0x20')]('/')+0x1,_0x3d4a96['channel'][_0xade4('0x20')]('-')));logger[_0xade4('0x18')](_0xade4('0x36'),_0x3d4a96[_0xade4('0x1a')],util[_0xade4('0x1b')](this[_0xade4('0x7')][_0x3d4a96[_0xade4('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xade4('0x17')](_0xade4('0x37'),this[_0xade4('0x7')][_0x3d4a96[_0xade4('0x1a')]]);}logger[_0xade4('0x18')](_0xade4('0x38'),_0x3d4a96['uniqueid'],util[_0xade4('0x1b')](this['channels'][_0x3d4a96[_0xade4('0x1a')]],{'showHidden':![],'depth':null}));this['emit'](_0xade4('0x26'),_0xade4('0x27'),this[_0xade4('0x7')][_0x3d4a96[_0xade4('0x1a')]]);}}}catch(_0x9db7f7){logger[_0xade4('0x2a')](_0xade4('0x39'),_0x3d4a96[_0xade4('0x1a')],util[_0xade4('0x1b')](_0x9db7f7,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xade4('0x16')][_0xade4('0x10')]=function(_0x5a4b11){try{if(this[_0xade4('0x14')](_0x5a4b11)){logger[_0xade4('0x18')](_0xade4('0x3a'),_0x5a4b11['uniqueid'],util[_0xade4('0x1b')](_0x5a4b11,{'showHidden':![],'depth':null}));this[_0xade4('0x3b')](_0x5a4b11[_0xade4('0x1a')],_['keys'](_0x5a4b11[_0xade4('0x3c')])[0x0],_0x5a4b11[_0xade4('0x3d')]);if(this[_0xade4('0x14')](_0x5a4b11[_0xade4('0x3c')])&&this[_0xade4('0x14')](_0x5a4b11['variable'][_0xade4('0x3e')])){if(_['isUndefined'](this[_0xade4('0x7')][_0x5a4b11[_0xade4('0x1a')]])){this[_0xade4('0x7')][_0x5a4b11[_0xade4('0x1a')]]={'routeId':_0x5a4b11['value'],'variables':this[_0xade4('0xb')][_0x5a4b11['uniqueid']],'motionChannel':'voice'};logger['info'](_0xade4('0x3f'),_0x5a4b11[_0xade4('0x1a')],_0x5a4b11[_0xade4('0x3c')][_0xade4('0x3e')],_[_0xade4('0x40')](_0x5a4b11[_0xade4('0x3c')])[0x0],_0x5a4b11[_0xade4('0x3d')]);logger[_0xade4('0x18')](_0xade4('0x41'),_0x5a4b11[_0xade4('0x1a')],util['inspect'](this[_0xade4('0x7')][_0x5a4b11[_0xade4('0x1a')]],{'showHidden':![],'depth':null}));this[_0xade4('0x17')](_0xade4('0x26'),'voice_outbound_channel:save',this[_0xade4('0x7')][_0x5a4b11[_0xade4('0x1a')]]);}}}}catch(_0x48bbaa){logger[_0xade4('0x2a')](_0xade4('0x42'),_0x5a4b11[_0xade4('0x1a')],util['inspect'](_0x48bbaa,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xade4('0x16')][_0xade4('0x3b')]=function(_0x2a1937,_0x379ea3,_0x507f2a){var _0x435038=[_0xade4('0x43'),'rtpaudioqosbridged',_0xade4('0x44'),_0xade4('0x45'),_0xade4('0x46'),_0xade4('0x47'),_0xade4('0x48'),_0xade4('0x49'),_0xade4('0x4a'),_0xade4('0x4b'),_0xade4('0x4c'),'bridgepvtcallid','membercalls',_0xade4('0x4d'),_0xade4('0x4e'),_0xade4('0x4f'),_0xade4('0x50'),'memberpenalty',_0xade4('0x51')];if(!_['isNil'](_0x379ea3)&&!_[_0xade4('0x52')](_0x435038,_0x379ea3)){if(_[_0xade4('0x15')](this[_0xade4('0xb')][_0x2a1937])){this[_0xade4('0xb')][_0x2a1937]={};}this[_0xade4('0xb')][_0x2a1937][_0x379ea3]=_0x507f2a;}};VoiceDialReport[_0xade4('0x16')]['syncHangup']=function(_0x24809d){try{if(this['isNotNull'](_0x24809d)){logger[_0xade4('0x18')](_0xade4('0x53'),_0x24809d[_0xade4('0x1a')],util[_0xade4('0x1b')](_0x24809d,{'showHidden':![],'depth':null}));if(this['channels'][_0x24809d[_0xade4('0x1a')]]){logger[_0xade4('0x22')](_0xade4('0x54'),_0x24809d[_0xade4('0x1a')],_0x24809d['cause-txt']);this[_0xade4('0x7')][_0x24809d[_0xade4('0x1a')]][_0xade4('0x55')]=moment()[_0xade4('0x32')](_0xade4('0x1d'));this[_0xade4('0x7')][_0x24809d[_0xade4('0x1a')]][_0xade4('0x56')]=moment(this[_0xade4('0x7')][_0x24809d['uniqueid']][_0xade4('0x55')])[_0xade4('0x57')](this[_0xade4('0x7')][_0x24809d[_0xade4('0x1a')]][_0xade4('0x58')],_0xade4('0x59'));this['channels'][_0x24809d[_0xade4('0x1a')]][_0xade4('0x33')]='complete';this[_0xade4('0x9')][_0xade4('0x5a')]+=0x1;if(this['channels'][_0x24809d[_0xade4('0x1a')]][_0xade4('0x31')]){this[_0xade4('0x9')][_0xade4('0x5b')]+=0x1;this['channels'][_0x24809d[_0xade4('0x1a')]][_0xade4('0x5c')]=moment(this['channels'][_0x24809d['uniqueid']][_0xade4('0x31')])[_0xade4('0x57')](this[_0xade4('0x7')][_0x24809d[_0xade4('0x1a')]][_0xade4('0x58')],'seconds');this[_0xade4('0x7')][_0x24809d[_0xade4('0x1a')]]['billableseconds']=moment(this[_0xade4('0x7')][_0x24809d['uniqueid']][_0xade4('0x55')])[_0xade4('0x57')](this[_0xade4('0x7')][_0x24809d[_0xade4('0x1a')]][_0xade4('0x31')],_0xade4('0x59'));this[_0xade4('0x9')][_0xade4('0x5d')]+=this[_0xade4('0x7')][_0x24809d['uniqueid']][_0xade4('0x5c')]||0x0;this[_0xade4('0x9')][_0xade4('0x5e')]+=this[_0xade4('0x7')][_0x24809d[_0xade4('0x1a')]][_0xade4('0x5f')];}this[_0xade4('0x9')]['sumDuration']+=this[_0xade4('0x7')][_0x24809d[_0xade4('0x1a')]][_0xade4('0x56')];logger['debug'](_0xade4('0x60'),_0x24809d[_0xade4('0x1a')],util[_0xade4('0x1b')](this['channels'][_0x24809d[_0xade4('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xade4('0x17')](_0xade4('0x61'),this[_0xade4('0x7')][_0x24809d[_0xade4('0x1a')]]);logger[_0xade4('0x18')](_0xade4('0x62'),_0x24809d[_0xade4('0x1a')],util[_0xade4('0x1b')](this[_0xade4('0x7')][_0x24809d[_0xade4('0x1a')]],{'showHidden':![],'depth':null}));ami['emit'](_0xade4('0x63'),this[_0xade4('0x7')][_0x24809d[_0xade4('0x1a')]]);logger[_0xade4('0x18')](_0xade4('0x64'),_0x24809d['uniqueid'],util[_0xade4('0x1b')](this[_0xade4('0x7')][_0x24809d[_0xade4('0x1a')]],{'showHidden':![],'depth':null}));this[_0xade4('0x17')](_0xade4('0x26'),_0xade4('0x65'),this['outbound']);logger['info'](_0xade4('0x66'),JSON[_0xade4('0x67')](this['channels'][_0x24809d[_0xade4('0x1a')]]));logger[_0xade4('0x18')](_0xade4('0x68'),_0x24809d['uniqueid'],util[_0xade4('0x1b')](this[_0xade4('0x7')][_0x24809d['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0xade4('0x26'),'voice_outbound_channel:remove',this[_0xade4('0x7')][_0x24809d['uniqueid']]);delete this[_0xade4('0x7')][_0x24809d['uniqueid']];}else if(this['channels'][_0x24809d['linkedid']]){this[_0xade4('0x7')][_0x24809d[_0xade4('0x69')]][_0xade4('0x1a')]=this[_0xade4('0x7')][_0x24809d[_0xade4('0x69')]]['destuniqueid'];}if(this['variables'][_0x24809d['uniqueid']]){delete this[_0xade4('0xb')][_0x24809d[_0xade4('0x1a')]];}}}catch(_0x42071a){logger[_0xade4('0x2a')](_0xade4('0x6a'),_0x24809d[_0xade4('0x1a')],util[_0xade4('0x1b')](_0x42071a,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xade4('0x16')][_0xade4('0x12')]=function(_0x34ef6e){try{if(this[_0xade4('0x14')](_0x34ef6e)){logger[_0xade4('0x18')](_0xade4('0x6b'),_0x34ef6e[_0xade4('0x1a')],util[_0xade4('0x1b')](_0x34ef6e,{'showHidden':![],'depth':null}));if(_0x34ef6e[_0xade4('0x6c')][_0xade4('0x6d')]()===_0xade4('0x6e')){_0x34ef6e[_0xade4('0x6f')]=(_0x34ef6e['appdata']||_0x34ef6e[_0xade4('0x6f')])[_0xade4('0x6d')]();if(_[_0xade4('0x70')](_0x34ef6e[_0xade4('0x6f')],_0xade4('0x71'))){if(_[_0xade4('0x15')](this[_0xade4('0xa')][_0x34ef6e[_0xade4('0x1a')]]))this[_0xade4('0xa')][_0x34ef6e[_0xade4('0x1a')]]={};logger[_0xade4('0x22')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x34ef6e[_0xade4('0x1a')],_0x34ef6e[_0xade4('0x6c')],_0x34ef6e[_0xade4('0x6f')]);var _0x2c2937=_0x34ef6e['applicationdata']['split']('=');var _0x55e9ea=_0x2c2937[0x0][_0xade4('0x72')](/cdr\((.*)\)/);if(_0x55e9ea)this['applications'][_0x34ef6e['uniqueid']][_0x55e9ea[0x1]]=_0x2c2937[0x1];}}}}catch(_0x3b6524){logger['error'](_0xade4('0x73'),_0x34ef6e[_0xade4('0x1a')],util[_0xade4('0x1b')](_0x3b6524,{'showHidden':![],'depth':null}));}};module['exports']=VoiceDialReport;
\ No newline at end of file
+var _0x7a85=['memberdynamic','memberinterface','memberlastcall','memberpenalty','isNil','includes','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','endtime','format','duration','starttime','seconds','lastevent','complete','total','answered','holdtime','answertime','sumHoldTime','sumBillable','billableseconds','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','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][newexten]\x20event:','application','applicationdata','appdata','startsWith','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','match','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','bind','dialend','varset','newexten','syncNewExten','syncHangup','prototype','isNotNull','isUndefined','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','privilege','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','debug','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','emit','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','syncDialEnd','dialstatus','connectedlinename','info','[%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','syncVarSet','[%s][voiceDialReport][varset]\x20event:','addVariable','variable','outboundrouteid','value','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','keys','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls'];(function(_0x3878bd,_0x51e3e5){var _0x359e60=function(_0xe70276){while(--_0xe70276){_0x3878bd['push'](_0x3878bd['shift']());}};_0x359e60(++_0x51e3e5);}(_0x7a85,0x17b));var _0x57a8=function(_0x5ba04e,_0x4fddc1){_0x5ba04e=_0x5ba04e-0x0;var _0x471a10=_0x7a85[_0x5ba04e];return _0x471a10;};'use strict';var _=require('lodash');var moment=require(_0x57a8('0x0'));var util=require(_0x57a8('0x1'));var Redis=require(_0x57a8('0x2'));var config=require(_0x57a8('0x3'));var logger=require(_0x57a8('0x4'))(_0x57a8('0x5'));var ami=require(_0x57a8('0x6'));config[_0x57a8('0x7')]=_[_0x57a8('0x8')](config[_0x57a8('0x7')],{'host':_0x57a8('0x9'),'port':0x18eb});var io=require(_0x57a8('0xa'))(new Redis(config[_0x57a8('0x7')]));function VoiceDialReport(_0x2456ed){this[_0x57a8('0xb')]=_0x2456ed[_0x57a8('0xc')];this[_0x57a8('0xd')]=_0x2456ed[_0x57a8('0xd')];this[_0x57a8('0xe')]={};this[_0x57a8('0xf')]={};ami['on'](_0x57a8('0x10'),this[_0x57a8('0x11')][_0x57a8('0x12')](this));ami['on'](_0x57a8('0x13'),this['syncDialEnd'][_0x57a8('0x12')](this));ami['on'](_0x57a8('0x14'),this['syncVarSet']['bind'](this));ami['on'](_0x57a8('0x15'),this[_0x57a8('0x16')]['bind'](this));ami['on']('hangup',this[_0x57a8('0x17')][_0x57a8('0x12')](this));}VoiceDialReport[_0x57a8('0x18')][_0x57a8('0x19')]=function(_0x3dcd30){return _0x3dcd30!==null&&!_[_0x57a8('0x1a')](_0x3dcd30);};VoiceDialReport['prototype']['emit']=function(_0x3086c2,_0x15c56d,_0xb6021a){io['to'](_0x3086c2)['emit'](_0x15c56d,_0xb6021a);};VoiceDialReport['prototype'][_0x57a8('0x11')]=function(_0x410008){try{if(this[_0x57a8('0x19')](_0x410008)){logger['debug'](_0x57a8('0x1b'),_0x410008[_0x57a8('0x1c')],util[_0x57a8('0x1d')](_0x410008,{'showHidden':![],'depth':null}));if(this['channels'][_0x410008['uniqueid']]){_[_0x57a8('0x1e')](this[_0x57a8('0xb')][_0x410008[_0x57a8('0x1c')]],{'starttime':moment()['format'](_0x57a8('0x1f')),'lastevent':_0x57a8('0x20'),'interface':_0x410008[_0x57a8('0x21')][_0x57a8('0x22')](0x0,_0x410008['channel'][_0x57a8('0x23')]('-')),'membername':_0x410008[_0x57a8('0x21')][_0x57a8('0x22')](_0x410008[_0x57a8('0x21')][_0x57a8('0x23')]('/')+0x1,_0x410008[_0x57a8('0x21')][_0x57a8('0x23')]('-'))},_[_0x57a8('0x24')](_0x410008,['event',_0x57a8('0x25')]));logger['info'](_0x57a8('0x26'),_0x410008[_0x57a8('0x1c')],this[_0x57a8('0xb')][_0x410008['uniqueid']][_0x57a8('0x27')],this[_0x57a8('0xb')][_0x410008[_0x57a8('0x1c')]]['interface']);logger[_0x57a8('0x28')](_0x57a8('0x29'),_0x410008[_0x57a8('0x1c')],util[_0x57a8('0x1d')](this[_0x57a8('0xb')][_0x410008[_0x57a8('0x1c')]],{'showHidden':![],'depth':null}));if(this['applications'][_0x410008[_0x57a8('0x1c')]])_[_0x57a8('0x1e')](this[_0x57a8('0xb')][_0x410008['uniqueid']],this['applications'][_0x410008[_0x57a8('0x1c')]]);this[_0x57a8('0x2a')]('voice:outbound',_0x57a8('0x2b'),this[_0x57a8('0xb')][_0x410008[_0x57a8('0x1c')]]);logger[_0x57a8('0x28')](_0x57a8('0x2c'),_0x410008['uniqueid'],util[_0x57a8('0x1d')](this[_0x57a8('0xb')][_0x410008[_0x57a8('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x57a8('0x2a')](_0x57a8('0x2d'),this[_0x57a8('0xb')][_0x410008['uniqueid']]);}}}catch(_0x376f86){logger[_0x57a8('0x2e')](_0x57a8('0x2f'),_0x410008['uniqueid'],util[_0x57a8('0x1d')](_0x376f86,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x57a8('0x18')][_0x57a8('0x30')]=function(_0x3bc795){try{if(this[_0x57a8('0x19')](_0x3bc795)){logger[_0x57a8('0x28')]('[%s][voiceDialReport][dialend]\x20event:',_0x3bc795[_0x57a8('0x1c')],util[_0x57a8('0x1d')](_0x3bc795,{'showHidden':![],'depth':null}));if(this[_0x57a8('0xb')][_0x3bc795[_0x57a8('0x1c')]]){this['channels'][_0x3bc795['uniqueid']]['dialstatus']=_0x3bc795['dialstatus'];if(_0x3bc795[_0x57a8('0x31')]==='ANSWER'){this['channels'][_0x3bc795[_0x57a8('0x1c')]]['connectedlinenum']=_0x3bc795['connectedlinenum'];this[_0x57a8('0xb')][_0x3bc795[_0x57a8('0x1c')]][_0x57a8('0x32')]=_0x3bc795[_0x57a8('0x32')];this[_0x57a8('0xb')][_0x3bc795[_0x57a8('0x1c')]]['answertime']=moment()['format'](_0x57a8('0x1f'));this['channels'][_0x3bc795['uniqueid']]['lastevent']='connect';logger[_0x57a8('0x33')](_0x57a8('0x34'),_0x3bc795[_0x57a8('0x1c')],_0x3bc795[_0x57a8('0x21')]['substring'](_0x3bc795[_0x57a8('0x21')][_0x57a8('0x23')]('/')+0x1,_0x3bc795[_0x57a8('0x21')][_0x57a8('0x23')]('-')));logger[_0x57a8('0x28')](_0x57a8('0x35'),_0x3bc795[_0x57a8('0x1c')],util['inspect'](this['channels'][_0x3bc795['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x57a8('0x2a')](_0x57a8('0x36'),this[_0x57a8('0xb')][_0x3bc795[_0x57a8('0x1c')]]);}logger[_0x57a8('0x28')](_0x57a8('0x37'),_0x3bc795[_0x57a8('0x1c')],util[_0x57a8('0x1d')](this[_0x57a8('0xb')][_0x3bc795['uniqueid']],{'showHidden':![],'depth':null}));this[_0x57a8('0x2a')](_0x57a8('0x38'),_0x57a8('0x2b'),this[_0x57a8('0xb')][_0x3bc795[_0x57a8('0x1c')]]);}}}catch(_0x5a6489){logger['error']('[%s][voiceDialReport][dialend]',_0x3bc795[_0x57a8('0x1c')],util['inspect'](_0x5a6489,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x57a8('0x18')][_0x57a8('0x39')]=function(_0xf30967){try{if(this[_0x57a8('0x19')](_0xf30967)){logger[_0x57a8('0x28')](_0x57a8('0x3a'),_0xf30967[_0x57a8('0x1c')],util['inspect'](_0xf30967,{'showHidden':![],'depth':null}));this[_0x57a8('0x3b')](_0xf30967[_0x57a8('0x1c')],_['keys'](_0xf30967['variable'])[0x0],_0xf30967['value']);if(this[_0x57a8('0x19')](_0xf30967['variable'])&&this[_0x57a8('0x19')](_0xf30967[_0x57a8('0x3c')][_0x57a8('0x3d')])){if(_[_0x57a8('0x1a')](this['channels'][_0xf30967['uniqueid']])){this[_0x57a8('0xb')][_0xf30967[_0x57a8('0x1c')]]={'routeId':_0xf30967[_0x57a8('0x3e')],'variables':this[_0x57a8('0xf')][_0xf30967[_0x57a8('0x1c')]]};logger[_0x57a8('0x33')](_0x57a8('0x3f'),_0xf30967[_0x57a8('0x1c')],_0xf30967['variable'][_0x57a8('0x3d')],_[_0x57a8('0x40')](_0xf30967['variable'])[0x0],_0xf30967['value']);logger[_0x57a8('0x28')](_0x57a8('0x41'),_0xf30967['uniqueid'],util[_0x57a8('0x1d')](this[_0x57a8('0xb')][_0xf30967[_0x57a8('0x1c')]],{'showHidden':![],'depth':null}));this[_0x57a8('0x2a')](_0x57a8('0x38'),_0x57a8('0x2b'),this[_0x57a8('0xb')][_0xf30967[_0x57a8('0x1c')]]);}}}}catch(_0x3cdf14){logger['error'](_0x57a8('0x42'),_0xf30967['uniqueid'],util[_0x57a8('0x1d')](_0x3cdf14,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x57a8('0x18')][_0x57a8('0x3b')]=function(_0x1d78df,_0x28e550,_0x4d073b){var _0x624ca1=[_0x57a8('0x43'),_0x57a8('0x44'),_0x57a8('0x45'),_0x57a8('0x46'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0x57a8('0x47'),_0x57a8('0x48'),_0x57a8('0x49'),'sipuri',_0x57a8('0x4a'),_0x57a8('0x4b'),_0x57a8('0x4c'),_0x57a8('0x4d'),_0x57a8('0x4e'),_0x57a8('0x4f'),_0x57a8('0x27'),_0x57a8('0x50'),'memberrealtime'];if(!_[_0x57a8('0x51')](_0x28e550)&&!_[_0x57a8('0x52')](_0x624ca1,_0x28e550)){if(_[_0x57a8('0x1a')](this[_0x57a8('0xf')][_0x1d78df])){this['variables'][_0x1d78df]={};}this[_0x57a8('0xf')][_0x1d78df][_0x28e550]=_0x4d073b;}};VoiceDialReport[_0x57a8('0x18')][_0x57a8('0x17')]=function(_0x4f6eb3){try{if(this['isNotNull'](_0x4f6eb3)){logger['debug']('[%s][voiceDialReport][hangup]\x20event:',_0x4f6eb3['uniqueid'],util[_0x57a8('0x1d')](_0x4f6eb3,{'showHidden':![],'depth':null}));if(this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]]){logger[_0x57a8('0x33')](_0x57a8('0x53'),_0x4f6eb3[_0x57a8('0x1c')],_0x4f6eb3['cause-txt']);this[_0x57a8('0xb')][_0x4f6eb3['uniqueid']][_0x57a8('0x54')]=moment()[_0x57a8('0x55')](_0x57a8('0x1f'));this['channels'][_0x4f6eb3[_0x57a8('0x1c')]][_0x57a8('0x56')]=moment(this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]][_0x57a8('0x54')])['diff'](this['channels'][_0x4f6eb3['uniqueid']][_0x57a8('0x57')],_0x57a8('0x58'));this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]][_0x57a8('0x59')]=_0x57a8('0x5a');this[_0x57a8('0xd')][_0x57a8('0x5b')]+=0x1;if(this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]]['answertime']){this[_0x57a8('0xd')][_0x57a8('0x5c')]+=0x1;this[_0x57a8('0xb')][_0x4f6eb3['uniqueid']][_0x57a8('0x5d')]=moment(this[_0x57a8('0xb')][_0x4f6eb3['uniqueid']][_0x57a8('0x5e')])['diff'](this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]][_0x57a8('0x57')],'seconds');this['channels'][_0x4f6eb3[_0x57a8('0x1c')]]['billableseconds']=moment(this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]][_0x57a8('0x54')])['diff'](this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]][_0x57a8('0x5e')],_0x57a8('0x58'));this['outbound'][_0x57a8('0x5f')]+=this['channels'][_0x4f6eb3[_0x57a8('0x1c')]][_0x57a8('0x5d')]||0x0;this['outbound'][_0x57a8('0x60')]+=this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]][_0x57a8('0x61')];}this[_0x57a8('0xd')]['sumDuration']+=this[_0x57a8('0xb')][_0x4f6eb3['uniqueid']][_0x57a8('0x56')];logger['debug'](_0x57a8('0x62'),_0x4f6eb3['uniqueid'],util[_0x57a8('0x1d')](this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]],{'showHidden':![],'depth':null}));ami['emit'](_0x57a8('0x63'),this['channels'][_0x4f6eb3[_0x57a8('0x1c')]]);logger[_0x57a8('0x28')](_0x57a8('0x64'),_0x4f6eb3['uniqueid'],util[_0x57a8('0x1d')](this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x57a8('0x2a')](_0x57a8('0x65'),this['channels'][_0x4f6eb3[_0x57a8('0x1c')]]);logger[_0x57a8('0x28')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x4f6eb3[_0x57a8('0x1c')],util[_0x57a8('0x1d')](this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]],{'showHidden':![],'depth':null}));this[_0x57a8('0x2a')](_0x57a8('0x38'),_0x57a8('0x66'),this[_0x57a8('0xd')]);logger[_0x57a8('0x33')](_0x57a8('0x67'),JSON[_0x57a8('0x68')](this[_0x57a8('0xb')][_0x4f6eb3['uniqueid']]));logger['debug'](_0x57a8('0x69'),_0x4f6eb3[_0x57a8('0x1c')],util['inspect'](this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]],{'showHidden':![],'depth':null}));this[_0x57a8('0x2a')](_0x57a8('0x38'),'voice_outbound_channel:remove',this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]]);delete this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]];}else if(this[_0x57a8('0xb')][_0x4f6eb3['linkedid']]){this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x6a')]][_0x57a8('0x1c')]=this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x6a')]]['destuniqueid'];}if(this[_0x57a8('0xf')][_0x4f6eb3[_0x57a8('0x1c')]]){delete this[_0x57a8('0xf')][_0x4f6eb3[_0x57a8('0x1c')]];}}}catch(_0x20b644){logger[_0x57a8('0x2e')]('[%s][voiceDialReport][hangup]',_0x4f6eb3[_0x57a8('0x1c')],util[_0x57a8('0x1d')](_0x20b644,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x57a8('0x18')][_0x57a8('0x16')]=function(_0x16390c){try{if(this[_0x57a8('0x19')](_0x16390c)){logger[_0x57a8('0x28')](_0x57a8('0x6b'),_0x16390c['uniqueid'],util[_0x57a8('0x1d')](_0x16390c,{'showHidden':![],'depth':null}));if(_0x16390c[_0x57a8('0x6c')]['toLowerCase']()==='set'){_0x16390c[_0x57a8('0x6d')]=(_0x16390c[_0x57a8('0x6e')]||_0x16390c['applicationdata'])['toLowerCase']();if(_[_0x57a8('0x6f')](_0x16390c[_0x57a8('0x6d')],'cdr(')){if(_[_0x57a8('0x1a')](this[_0x57a8('0xe')][_0x16390c['uniqueid']]))this['applications'][_0x16390c[_0x57a8('0x1c')]]={};logger[_0x57a8('0x33')](_0x57a8('0x70'),_0x16390c['uniqueid'],_0x16390c[_0x57a8('0x6c')],_0x16390c[_0x57a8('0x6d')]);var _0x2d3bc9=_0x16390c[_0x57a8('0x6d')]['split']('=');var _0x484271=_0x2d3bc9[0x0][_0x57a8('0x71')](/cdr\((.*)\)/);if(_0x484271)this[_0x57a8('0xe')][_0x16390c[_0x57a8('0x1c')]][_0x484271[0x1]]=_0x2d3bc9[0x1];}}}}catch(_0xc5c828){logger[_0x57a8('0x2e')]('[%s][voiceDialReport][newexten]',_0x16390c[_0x57a8('0x1c')],util[_0x57a8('0x1d')](_0xc5c828,{'showHidden':![],'depth':null}));}};module['exports']=VoiceDialReport;
\ No newline at end of file
index 34707bd..44098e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x353b=['membercalls','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','includes','[%s][voiceQueueReport][hangup]','sumHoldTime','diff','length','milliseconds','custom:queuecallerunmanaged','lastevent','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','mohtime','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','queueReports','agents','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','bind','queuesummarycomplete','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','varset','hangup','syncHangup','fullybooted','syncFullyBooted','newexten','syncNewExten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','loopQueueSummary','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','unlockRR','clearZombieChannels','channels','switch','sequence','isNil','Action','status','channel','message','No\x20such\x20channel','inspect','error','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','clearQueueReport','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_channel:remove','type','answered','available','loggedIn','sumBillable','sumDuration','total','unmanaged','abandoned','Trunk','active','Interval','stringify','[voiceQueueReport][','voice_queue:save','isNotNull','isUndefined','queues','catch','[voiceQueueReport][queues]','then','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20event:','info','callers','toNumber','loggedin','emitVoiceQueueSummary','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','inbound','queuecallerjoinAt','position','count','routealias','merge','pick','keys','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','emitVoiceQueueChannelRemove','syncQueueCallerLeave','[%s][voiceQueueReport][queuecallerleave]','last','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','assigned','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','local/','linkedid','queuecallerexit','add','seconds','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][agentcomplete]','syncVarSet','addVariable','variable','value','queuestatus','CONTINUE','TIMEOUT','timeout','queuecallerleaveAt','custom:timeout','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','[%s][voiceQueueReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepeer','bridgepvtcallid'];(function(_0x235ea3,_0x78ecf3){var _0x45489b=function(_0x11a735){while(--_0x11a735){_0x235ea3['push'](_0x235ea3['shift']());}};_0x45489b(++_0x78ecf3);}(_0x353b,0x131));var _0xb353=function(_0x1abd98,_0x4efa0b){_0x1abd98=_0x1abd98-0x0;var _0x547194=_0x353b[_0x1abd98];return _0x547194;};'use strict';var _=require(_0xb353('0x0'));var moment=require(_0xb353('0x1'));var util=require(_0xb353('0x2'));var md5=require(_0xb353('0x3'));var Redis=require('ioredis');var config=require(_0xb353('0x4'));var logger=require(_0xb353('0x5'))(_0xb353('0x6'));var ami=require(_0xb353('0x7'));var QueueReport=require(_0xb353('0x8'));config[_0xb353('0x9')]=_[_0xb353('0xa')](config['redis'],{'host':_0xb353('0xb'),'port':0x18eb});var io=require(_0xb353('0xc'))(new Redis(config[_0xb353('0x9')]));var Sequence=function(){};Sequence[_0xb353('0xd')][_0xb353('0xe')]=function(_0x11e679){this[_0xb353('0xf')]=this[_0xb353('0xf')]?this[_0xb353('0xf')]['finally'](_0x11e679):_0x11e679();};function VoiceQueueReport(_0x19b84e){this['sequence']=new Sequence();this[_0xb353('0x10')]={};this[_0xb353('0x11')]=_0x19b84e['agents'];this['channels']=_0x19b84e[_0xb353('0x12')];this['voiceQueues']=_0x19b84e[_0xb353('0x13')];this[_0xb353('0x14')]=!![];this[_0xb353('0x15')]=_0x19b84e['campaigns'];this[_0xb353('0x16')]={};ami['on'](_0xb353('0x17'),this[_0xb353('0x18')][_0xb353('0x19')](this));ami['on'](_0xb353('0x1a'),this[_0xb353('0x1b')][_0xb353('0x19')](this));ami['on'](_0xb353('0x1c'),this[_0xb353('0x1d')][_0xb353('0x19')](this));ami['on'](_0xb353('0x1e'),this[_0xb353('0x1f')][_0xb353('0x19')](this));ami['on'](_0xb353('0x20'),this['syncQueueCallerLeave']['bind'](this));ami['on'](_0xb353('0x21'),this[_0xb353('0x22')][_0xb353('0x19')](this));ami['on'](_0xb353('0x23'),this[_0xb353('0x24')][_0xb353('0x19')](this));ami['on'](_0xb353('0x25'),this['syncVarSet'][_0xb353('0x19')](this));ami['on'](_0xb353('0x26'),this[_0xb353('0x27')]['bind'](this));ami['on'](_0xb353('0x28'),this[_0xb353('0x29')][_0xb353('0x19')](this));ami['on'](_0xb353('0x2a'),this[_0xb353('0x2b')][_0xb353('0x19')](this));ami['on'](_0xb353('0x2c'),this[_0xb353('0x2d')][_0xb353('0x19')](this));ami['on'](_0xb353('0x2e'),this[_0xb353('0x2f')]['bind'](this));ami['on'](_0xb353('0x30'),this[_0xb353('0x31')][_0xb353('0x19')](this));ami['on']('blindtransfer',this[_0xb353('0x32')][_0xb353('0x19')](this));this[_0xb353('0x33')]();this['loopQueueShow']();}function clearChannels(_0x25d142){if(!_[_0xb353('0x34')](_0x25d142)){for(var _0x4b6db7 in _0x25d142){if(_0x25d142[_0xb353('0x35')](_0x4b6db7)){delete _0x25d142[_0x4b6db7];}}}}function clearCampaigns(_0x21b138){if(!_[_0xb353('0x34')](_0x21b138)){for(var _0x35d774 in _0x21b138){if(_0x21b138[_0xb353('0x35')](_0x35d774)){_0x21b138[_0x35d774][_0xb353('0x36')]=0x0;}}}}function clearVoiceQueues(_0x3ac03a){if(!_[_0xb353('0x34')](_0x3ac03a)){for(var _0xa4cc69 in _0x3ac03a){if(_0x3ac03a[_0xb353('0x35')](_0xa4cc69)){_0x3ac03a[_0xa4cc69]['originated']=0x0;_0x3ac03a[_0xa4cc69][_0xb353('0x37')]=0x0;_0x3ac03a[_0xa4cc69][_0xb353('0x38')]=0x0;_0x3ac03a[_0xa4cc69][_0xb353('0x39')]=0x0;_0x3ac03a[_0xa4cc69]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x2cbafd){if(!_[_0xb353('0x34')](_0x2cbafd)){for(var _0x2d9c9c in _0x2cbafd){if(_0x2cbafd[_0xb353('0x35')](_0x2d9c9c)){_0x2cbafd[_0x2d9c9c][_0xb353('0x3a')]=!![];}}}}VoiceQueueReport[_0xb353('0xd')][_0xb353('0x3b')]=function(){var _0x195e30=this;for(var _0xe9de8d in this[_0xb353('0x3c')]){if(this[_0xb353('0x3c')]['hasOwnProperty'](_0xe9de8d)&&!this[_0xb353('0x3c')][_0xe9de8d][_0xb353('0x3d')]){this[_0xb353('0x3e')]['enqueue'](function(){if(!_[_0xb353('0x3f')](_0x195e30[_0xb353('0x3c')][_0xe9de8d])){return ami[_0xb353('0x40')]({'action':_0xb353('0x41'),'channel':_0x195e30[_0xb353('0x3c')][_0xe9de8d][_0xb353('0x42')]})['catch'](function(_0x2b682d){if(_0x2b682d[_0xb353('0x43')]===_0xb353('0x44')){setTimeout(function(){if(_0x195e30['channels'][_0xe9de8d]){delete _0x195e30[_0xb353('0x3c')][_0xe9de8d];logger['error']('[%s][voiceQueueReport][checkChannel]',_0xe9de8d,util[_0xb353('0x45')](_0x2b682d,{'showHidden':![],'depth':null}));}if(_0x195e30['queueReports'][_0xe9de8d]){delete _0x195e30[_0xb353('0x10')][_0xe9de8d];logger[_0xb353('0x46')](_0xb353('0x47'),_0xe9de8d,util[_0xb353('0x45')](_0x2b682d,{'showHidden':![],'depth':null}));}if(_0x195e30[_0xb353('0x16')][_0xe9de8d]){delete _0x195e30[_0xb353('0x16')][_0xe9de8d];logger[_0xb353('0x46')](_0xb353('0x48'),_0xe9de8d,util[_0xb353('0x45')](_0x2b682d,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0xb353('0xd')][_0xb353('0x29')]=function(){logger['error']('[FullyBooted]\x20clear\x20realtime');clearChannels(this[_0xb353('0x3c')]);this[_0xb353('0x49')](this['queueReports']);clearAgentBooked(this['agents']);clearVoiceQueues(this[_0xb353('0x13')]);clearCampaigns(this[_0xb353('0x15')]);};VoiceQueueReport['prototype'][_0xb353('0x49')]=function(_0x517083){var _0x16710c=this;if(!_['isEmpty'](_0x517083)){for(var _0x348349 in _0x517083){if(_0x517083[_0xb353('0x35')](_0x348349)){_0x16710c['emitVoiceQueueChannelRemove'](_0x517083[_0x348349],_0xb353('0x4a'));delete _0x517083[_0x348349];}}}};VoiceQueueReport[_0xb353('0xd')][_0xb353('0x4b')]=function(_0x3e1598,_0x9763ce,_0x5df54e){io['to'](_0x3e1598)['emit'](_0x9763ce,_0x5df54e);};VoiceQueueReport[_0xb353('0xd')][_0xb353('0x4c')]=function(_0x1a5a1d,_0x44aa43){logger[_0xb353('0x4d')](_0xb353('0x4e')+_0x44aa43+_0xb353('0x4f'),_0x1a5a1d[_0xb353('0x50')],util['inspect'](_0x1a5a1d,{'showHidden':![],'depth':null}));this[_0xb353('0x4b')](util[_0xb353('0x51')](_0xb353('0x52'),_0x1a5a1d[_0xb353('0x53')]),_0xb353('0x54'),_0x1a5a1d);io['emit'](_0xb353('0x55'),_0x1a5a1d);};VoiceQueueReport['prototype']['emitVoiceQueueChannelRemove']=function(_0x2f85ae,_0x9d6b99){logger[_0xb353('0x4d')]('[%s][voiceQueueReport]['+_0x9d6b99+_0xb353('0x56'),_0x2f85ae[_0xb353('0x50')],util[_0xb353('0x45')](_0x2f85ae,{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xb353('0x52'),_0x2f85ae[_0xb353('0x53')]),_0xb353('0x57'),_0x2f85ae);io[_0xb353('0x4b')]('voice_queue_presence:remove',_0x2f85ae);};VoiceQueueReport[_0xb353('0xd')]['emitVoiceQueueSummary']=function(_0x4e3b93,_0x4de99e){if(_0x4e3b93[_0xb353('0x58')]==='inbound'){var _0x4d558f={'id':_0x4e3b93['id'],'name':_0x4e3b93[_0xb353('0x53')],'strategy':_0x4e3b93['strategy'],'answered':_0x4e3b93[_0xb353('0x59')],'available':_0x4e3b93[_0xb353('0x5a')],'loggedIn':_0x4e3b93[_0xb353('0x5b')],'pTalking':_0x4e3b93['pTalking'],'sumBillable':_0x4e3b93[_0xb353('0x5c')],'sumDuration':_0x4e3b93[_0xb353('0x5d')],'sumHoldTime':_0x4e3b93['sumHoldTime']||0x0,'talking':_0x4e3b93[_0xb353('0x37')],'total':_0x4e3b93[_0xb353('0x5e')],'type':_0x4e3b93['type'],'unmanaged':_0x4e3b93[_0xb353('0x5f')],'abandoned':_0x4e3b93[_0xb353('0x60')],'waiting':_0x4e3b93[_0xb353('0x39')]};if(_0x4e3b93[_0xb353('0x61')]){_0x4d558f[_0xb353('0x61')]={'id':_0x4e3b93[_0xb353('0x61')]['id'],'name':_0x4e3b93[_0xb353('0x61')][_0xb353('0x53')],'active':_0x4e3b93[_0xb353('0x61')][_0xb353('0x62')],'callerid':_0x4e3b93[_0xb353('0x61')]['callerid']};}if(_0x4e3b93[_0xb353('0x63')]){_0x4d558f[_0xb353('0x63')]={'id':_0x4e3b93[_0xb353('0x63')]['id'],'name':_0x4e3b93[_0xb353('0x63')][_0xb353('0x53')]};}var _0xf6d62a=md5(JSON[_0xb353('0x64')](_0x4d558f));if(_0x4e3b93[_0xb353('0x3')]!==_0xf6d62a){_0x4e3b93[_0xb353('0x3')]=_0xf6d62a;logger[_0xb353('0x4d')](_0xb353('0x65')+_0x4de99e+']\x20sending\x20voice_queue:save\x20event:',util[_0xb353('0x45')](_0x4d558f,{'showHidden':![],'depth':null}));this[_0xb353('0x4b')](util[_0xb353('0x51')](_0xb353('0x52'),_0x4d558f[_0xb353('0x53')]),_0xb353('0x66'),_0x4d558f);}}};VoiceQueueReport[_0xb353('0xd')][_0xb353('0x67')]=function(_0x41ceca){return _0x41ceca!==null&&!_[_0xb353('0x68')](_0x41ceca);};VoiceQueueReport['prototype']['loopQueueShow']=function(){var _0x21f476=this;setInterval(function(){_0x21f476[_0xb353('0x3b')]();ami[_0xb353('0x40')]({'action':_0xb353('0x69')})[_0xb353('0x6a')](function(_0x18764c){logger[_0xb353('0x46')](_0xb353('0x6b'),util['inspect'](_0x18764c,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0xb353('0xd')][_0xb353('0x33')]=function(){var _0x3c374f=this;setInterval(function(){if(_0x3c374f[_0xb353('0x14')]){return ami['Action']({'action':_0xb353('0x17')})[_0xb353('0x6c')](function(_0x500a18){_0x3c374f['flagQueueSummary']=![];})[_0xb353('0x6a')](function(_0x4516b6){logger[_0xb353('0x46')](_0xb353('0x6d'),util['inspect'](_0x4516b6,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0xb353('0xd')]['syncQueueSummary']=function(_0x416ca8){try{if(this['isNotNull'](_0x416ca8)&&this[_0xb353('0x67')](_0x416ca8[_0xb353('0x6e')])){logger['debug'](_0xb353('0x6f'),util[_0xb353('0x45')](_0x416ca8,{'showHidden':![],'depth':null}));if(this[_0xb353('0x13')][_0x416ca8[_0xb353('0x6e')]]){logger[_0xb353('0x70')]('[voiceQueueReport][queuesummary]\x20name:%s',_0x416ca8[_0xb353('0x6e')]);var _0xade770=_['countBy'](this[_0xb353('0x3c')],_0xb353('0x6e'))[_0x416ca8['queue']]||0x0;var _0x18928e=_0xade770-_0x416ca8[_0xb353('0x71')];if(this[_0xb353('0x13')][_0x416ca8[_0xb353('0x6e')]][_0xb353('0x39')]!==_['toNumber'](_0x416ca8[_0xb353('0x71')])||this[_0xb353('0x13')][_0x416ca8['queue']]['loggedIn']!==_[_0xb353('0x72')](_0x416ca8[_0xb353('0x73')])||this[_0xb353('0x13')][_0x416ca8[_0xb353('0x6e')]][_0xb353('0x5a')]!==_[_0xb353('0x72')](_0x416ca8[_0xb353('0x5a')])||this[_0xb353('0x13')][_0x416ca8[_0xb353('0x6e')]][_0xb353('0x37')]!==_0x18928e){this[_0xb353('0x13')][_0x416ca8[_0xb353('0x6e')]][_0xb353('0x39')]=_['toNumber'](_0x416ca8[_0xb353('0x71')]);this[_0xb353('0x13')][_0x416ca8['queue']][_0xb353('0x5b')]=_['toNumber'](_0x416ca8[_0xb353('0x73')]);this[_0xb353('0x13')][_0x416ca8[_0xb353('0x6e')]][_0xb353('0x5a')]=_[_0xb353('0x72')](_0x416ca8[_0xb353('0x5a')]);this[_0xb353('0x13')][_0x416ca8['queue']][_0xb353('0x37')]=_0x18928e>0x0?_0x18928e:0x0;this[_0xb353('0x13')][_0x416ca8[_0xb353('0x6e')]]['talking']=this['voiceQueues'][_0x416ca8[_0xb353('0x6e')]][_0xb353('0x37')]>_[_0xb353('0x72')](_0x416ca8[_0xb353('0x73')])?_[_0xb353('0x72')](_0x416ca8[_0xb353('0x73')]):this[_0xb353('0x13')][_0x416ca8[_0xb353('0x6e')]][_0xb353('0x37')];this[_0xb353('0x74')](this[_0xb353('0x13')][_0x416ca8[_0xb353('0x6e')]],_0xb353('0x17'));}logger[_0xb353('0x4d')](_0xb353('0x75'),util[_0xb353('0x45')](this[_0xb353('0x13')][_0x416ca8['queue']],{'showHidden':![],'depth':null}));ami[_0xb353('0x4b')](_0xb353('0x76'),this['voiceQueues'][_0x416ca8['queue']]);}}}catch(_0x3236ae){logger[_0xb353('0x46')]('[voiceQueueReport][queuesummary]',util[_0xb353('0x45')](_0x3236ae,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb353('0xd')][_0xb353('0x1b')]=function(_0x320275){logger[_0xb353('0x4d')](_0xb353('0x77'),util[_0xb353('0x45')](_0x320275,{'showHidden':![],'depth':null}));this[_0xb353('0x14')]=!![];};VoiceQueueReport[_0xb353('0xd')][_0xb353('0x1d')]=function(_0x401318){try{if(this[_0xb353('0x67')](_0x401318)){logger[_0xb353('0x4d')](_0xb353('0x78'),_0x401318[_0xb353('0x50')],util[_0xb353('0x45')](_0x401318,{'showHidden':![],'depth':null}));if(_[_0xb353('0x68')](this[_0xb353('0x10')][_0x401318['uniqueid']]))this[_0xb353('0x10')][_0x401318[_0xb353('0x50')]]=[];if(_['isUndefined'](this['channels'][_0x401318['uniqueid']]))this[_0xb353('0x3c')][_0x401318[_0xb353('0x50')]]={};var _0x5c0ac2=new QueueReport();_0x5c0ac2['name']=_0x401318[_0xb353('0x6e')];_0x5c0ac2[_0xb353('0x58')]=this[_0xb353('0x13')][_0x5c0ac2['name']]&&this[_0xb353('0x13')][_0x5c0ac2[_0xb353('0x53')]]['type']?this[_0xb353('0x13')][_0x5c0ac2[_0xb353('0x53')]][_0xb353('0x58')]||'inbound':_0xb353('0x79');_0x5c0ac2[_0xb353('0x6e')]=_0x401318[_0xb353('0x6e')];_0x5c0ac2[_0xb353('0x7a')]=moment()[_0xb353('0x51')]('YYYY-MM-DD\x20HH:mm:ss');_0x5c0ac2[_0xb353('0x7b')]=_0x401318[_0xb353('0x7b')];_0x5c0ac2['count']=_0x401318[_0xb353('0x7c')];_0x5c0ac2['uniqueid']=_0x401318[_0xb353('0x50')];_0x5c0ac2[_0xb353('0x7d')]=this[_0xb353('0x3c')][_0x401318[_0xb353('0x50')]][_0xb353('0x7d')];logger['info']('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x5c0ac2[_0xb353('0x53')],_0x5c0ac2[_0xb353('0x58')]);_[_0xb353('0x7e')](_0x5c0ac2,_[_0xb353('0x7f')](_0x401318,_[_0xb353('0x80')](_0x5c0ac2)));this[_0xb353('0x10')][_0x401318[_0xb353('0x50')]]['push'](_0x5c0ac2);this['channels'][_0x401318[_0xb353('0x50')]]=_0x5c0ac2;this[_0xb353('0x4c')](_0x5c0ac2,_0xb353('0x1c'));}}catch(_0x4c12f6){logger['error']('[%s][voiceQueueReport][queuecallerjoin]',_0x401318[_0xb353('0x50')],util['inspect'](_0x4c12f6,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb353('0xd')][_0xb353('0x1f')]=function(_0x6e3ffd){try{if(this['isNotNull'](_0x6e3ffd)){logger[_0xb353('0x4d')]('[%s][voiceQueueReport][queuecallerabandon]',_0x6e3ffd['uniqueid'],util[_0xb353('0x45')](_0x6e3ffd,{'showHidden':![],'depth':null}));if(this[_0xb353('0x10')][_0x6e3ffd[_0xb353('0x50')]]){var _0x5192b7=_['last'](this[_0xb353('0x10')][_0x6e3ffd[_0xb353('0x50')]]);_0x5192b7[_0xb353('0x81')]=![];_0x5192b7[_0xb353('0x82')]=null;_0x5192b7[_0xb353('0x83')]=_0x6e3ffd[_0xb353('0x83')];_0x5192b7['originalposition']=_0x6e3ffd[_0xb353('0x84')];_0x5192b7[_0xb353('0x1e')]=!![];_0x5192b7[_0xb353('0x85')]=moment()['format'](_0xb353('0x86'));_0x5192b7[_0xb353('0x87')]=_0xb353('0x88');_0x5192b7[_0xb353('0x89')]=null;logger[_0xb353('0x70')](_0xb353('0x8a'),_0x5192b7[_0xb353('0x53')],_0x5192b7[_0xb353('0x58')]);this[_0xb353('0x3c')][_0x6e3ffd[_0xb353('0x50')]]=_0x5192b7;this[_0xb353('0x8b')](_0x5192b7,_0xb353('0x1e'));}}}catch(_0xea6b0f){logger[_0xb353('0x46')]('[%s][voiceQueueReport][queuecallerabandon]',_0x6e3ffd[_0xb353('0x50')],util[_0xb353('0x45')](_0xea6b0f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb353('0xd')][_0xb353('0x8c')]=function(_0x51cfa7){try{if(this['isNotNull'](_0x51cfa7)){logger['debug'](_0xb353('0x8d'),_0x51cfa7[_0xb353('0x50')],util['inspect'](_0x51cfa7,{'showHidden':![],'depth':null}));if(this[_0xb353('0x10')][_0x51cfa7[_0xb353('0x50')]]){var _0x5e442d=_[_0xb353('0x8e')](this['queueReports'][_0x51cfa7[_0xb353('0x50')]]);_0x5e442d['queuecallerleaveAt']=moment()[_0xb353('0x51')](_0xb353('0x86'));_0x5e442d['connectedlinenum']=_0x51cfa7[_0xb353('0x8f')];_0x5e442d[_0xb353('0x90')]=_0x51cfa7[_0xb353('0x90')];logger[_0xb353('0x70')](_0xb353('0x91'),_0x5e442d[_0xb353('0x53')],_0x5e442d[_0xb353('0x58')],_0x51cfa7[_0xb353('0x8f')],_0x51cfa7[_0xb353('0x90')]);this[_0xb353('0x3c')][_0x51cfa7[_0xb353('0x50')]]=_0x5e442d;this[_0xb353('0x4c')](_0x5e442d,_0xb353('0x20'));}}}catch(_0x4b3e3b){logger[_0xb353('0x46')](_0xb353('0x8d'),_0x51cfa7[_0xb353('0x50')],util[_0xb353('0x45')](_0x4b3e3b,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAgentConnect']=function(_0x31d8c0){try{if(this[_0xb353('0x67')](_0x31d8c0)){logger[_0xb353('0x4d')](_0xb353('0x92'),_0x31d8c0['uniqueid'],util[_0xb353('0x45')](_0x31d8c0,{'showHidden':![],'depth':null}));if(this[_0xb353('0x10')][_0x31d8c0[_0xb353('0x50')]]){var _0x5e8543=_[_0xb353('0x8e')](this[_0xb353('0x10')][_0x31d8c0[_0xb353('0x50')]]);_0x5e8543[_0xb353('0x81')]=!![];_0x5e8543[_0xb353('0x87')]=_0xb353('0x93');logger[_0xb353('0x70')](_0xb353('0x94'),_0x5e8543['name'],_0x5e8543['type']);}}}catch(_0x39fbeb){logger[_0xb353('0x46')](_0xb353('0x92'),_0x31d8c0['uniqueid'],util['inspect'](_0x39fbeb,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb353('0xd')][_0xb353('0x22')]=function(_0x1f6712){try{if(this[_0xb353('0x67')](_0x1f6712)){logger[_0xb353('0x4d')]('[%s][voiceQueueReport][agentcomplete]',_0x1f6712[_0xb353('0x50')],util[_0xb353('0x45')](_0x1f6712,{'showHidden':![],'depth':null}));if(this[_0xb353('0x10')][_0x1f6712[_0xb353('0x50')]]){var _0x2351eb=_[_0xb353('0x8e')](this[_0xb353('0x10')][_0x1f6712[_0xb353('0x50')]]);_0x2351eb[_0xb353('0x1e')]=![];_0x2351eb['queuecallerabandonAt']=null;_0x2351eb[_0xb353('0x95')]=!![];_0x2351eb[_0xb353('0x89')]=_0x1f6712['membername'];_0x2351eb[_0xb353('0x83')]=_0x1f6712[_0xb353('0x83')];_0x2351eb[_0xb353('0x81')]=!![];_0x2351eb['queuecallerexit']=![];_0x2351eb[_0xb353('0x96')]=null;if(!_0x2351eb[_0xb353('0x97')]){if(_0x1f6712[_0xb353('0x98')]==_0xb353('0x97')){_0x2351eb['queuecallerexitreason']=_0xb353('0x99');logger[_0xb353('0x70')](_0xb353('0x9a'),_0x2351eb[_0xb353('0x53')],_0x2351eb['type']);}else{if(_[_0xb353('0x9b')](_0x1f6712[_0xb353('0x42')]['toLowerCase'](),_0xb353('0x9c'))){if(this[_0xb353('0x10')][_0x1f6712[_0xb353('0x9d')]]){var _0x57c9b6=_['last'](this[_0xb353('0x10')][_0x1f6712[_0xb353('0x9d')]]);_0x57c9b6[_0xb353('0x81')]=![];_0x57c9b6[_0xb353('0x9e')]=!![];_0x57c9b6['queuecallerexitAt']=moment(_0x2351eb[_0xb353('0x7a')])[_0xb353('0x9f')](_0x1f6712['holdtime'],_0xb353('0xa0'))['format'](_0xb353('0x86'));_0x57c9b6[_0xb353('0x87')]=_0xb353('0xa1');_0x57c9b6[_0xb353('0x97')]=!![];_0x57c9b6[_0xb353('0xa2')]=_0xb353('0xa3');_0x57c9b6[_0xb353('0xa4')]=_0x1f6712[_0xb353('0xa5')];_0x57c9b6[_0xb353('0xa6')]=_0x1f6712[_0xb353('0x50')];logger['info'](_0xb353('0xa7'),_0x57c9b6[_0xb353('0x53')],_0x57c9b6[_0xb353('0x58')]);var _0x4d46ba=this['queueReports'][_0x1f6712[_0xb353('0x9d')]];this[_0xb353('0x10')][_0x1f6712[_0xb353('0x9d')]]=this['queueReports'][_0x1f6712[_0xb353('0x50')]];this[_0xb353('0x10')][_0x1f6712['uniqueid']]=_0x4d46ba;}}else{_0x2351eb[_0xb353('0x87')]=_0xb353('0xa8')+_0x1f6712[_0xb353('0x98')][_0xb353('0xa9')]();logger[_0xb353('0x70')](_0xb353('0xaa'),_0x2351eb[_0xb353('0x53')],_0x2351eb[_0xb353('0x58')],_0x2351eb[_0xb353('0x87')]);}}}this[_0xb353('0x3c')][_0x1f6712[_0xb353('0x50')]]=_0x2351eb;this['emitVoiceQueueChannelRemove'](_0x2351eb,_0xb353('0x21'));}}}catch(_0x1b11f8){logger[_0xb353('0x46')](_0xb353('0xab'),_0x1f6712[_0xb353('0x50')],util[_0xb353('0x45')](_0x1b11f8,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xb353('0xac')]=function(_0x1e6613){try{if(this['isNotNull'](_0x1e6613)){logger[_0xb353('0x4d')]('[%s][voiceQueueReport][varset]',_0x1e6613[_0xb353('0x50')],util['inspect'](_0x1e6613,{'showHidden':![],'depth':null}));this[_0xb353('0xad')](_0x1e6613[_0xb353('0x50')],_['keys'](_0x1e6613[_0xb353('0xae')])[0x0],_0x1e6613[_0xb353('0xaf')]);if(this[_0xb353('0x10')][_0x1e6613['uniqueid']]){var _0x91da2a=_[_0xb353('0x8e')](this[_0xb353('0x10')][_0x1e6613[_0xb353('0x50')]]);if(_0x91da2a){if(this[_0xb353('0x67')](_0x1e6613['variable'])&&this['isNotNull'](_0x1e6613[_0xb353('0xae')][_0xb353('0xb0')])){switch(_0x1e6613[_0xb353('0xaf')]){case _0xb353('0xb1'):_0x91da2a[_0xb353('0x9e')]=![];_0x91da2a[_0xb353('0x96')]=null;break;case _0xb353('0xb2'):_0x91da2a['lastevent']=_0xb353('0xb3');_0x91da2a[_0xb353('0x9e')]=!![];_0x91da2a[_0xb353('0x96')]=moment()[_0xb353('0x51')](_0xb353('0x86'));_0x91da2a[_0xb353('0xb4')]=moment()[_0xb353('0x51')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0xb353('0x4d')]('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0x1e6613[_0xb353('0x50')],util[_0xb353('0x45')](_0x91da2a,{'showHidden':![],'depth':null}));ami[_0xb353('0x4b')](_0xb353('0xb5'),_0x91da2a);break;default:_0x91da2a[_0xb353('0x9e')]=!![];_0x91da2a[_0xb353('0x96')]=moment()[_0xb353('0x51')]('YYYY-MM-DD\x20HH:mm:ss');_0x91da2a[_0xb353('0xb4')]=moment()[_0xb353('0x51')](_0xb353('0x86'));}_0x91da2a['queuecallerabandon']=![];_0x91da2a[_0xb353('0x85')]=null;_0x91da2a[_0xb353('0x87')]=_0x1e6613[_0xb353('0xaf')];this[_0xb353('0x3c')][_0x1e6613['uniqueid']]=_0x91da2a;this['emitVoiceQueueChannelRemove'](_0x91da2a,_0xb353('0x25'));}else if(this[_0xb353('0x67')](_0x1e6613['variable'])&&this[_0xb353('0x67')](_0x1e6613[_0xb353('0xae')][_0xb353('0xb6')])){if(!_0x91da2a[_0xb353('0x1e')]){_0x91da2a[_0xb353('0x9e')]=!![];_0x91da2a['queuecallerexitAt']=moment()[_0xb353('0x51')](_0xb353('0x86'));_0x91da2a[_0xb353('0x87')]=_0xb353('0xb7');_0x91da2a['queuecallerleaveAt']=moment()[_0xb353('0x51')](_0xb353('0x86'));this['channels'][_0x1e6613[_0xb353('0x50')]]=_0x91da2a;}}logger[_0xb353('0x70')](_0xb353('0xb8'),_0x1e6613['uniqueid'],_0x91da2a[_0xb353('0x53')],_0x91da2a['type'],_[_0xb353('0x80')](_0x1e6613[_0xb353('0xae')])[0x0],_0x1e6613[_0xb353('0xaf')]);_0x91da2a[_0xb353('0x16')]=this[_0xb353('0x16')][_0x1e6613['uniqueid']];}}}}catch(_0x46df2a){logger[_0xb353('0x46')](_0xb353('0xb9'),_0x1e6613['uniqueid'],util['inspect'](_0x46df2a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb353('0xd')][_0xb353('0xad')]=function(_0x186ffb,_0x44d6d5,_0x23d47e){var _0xa4f01e=[_0xb353('0xba'),_0xb353('0xbb'),_0xb353('0xbc'),_0xb353('0xbd'),_0xb353('0xbe'),_0xb353('0xbf'),_0xb353('0xc0'),_0xb353('0xc1'),'sipcallid',_0xb353('0xc2'),_0xb353('0xc3'),_0xb353('0xc4'),_0xb353('0xc5'),_0xb353('0xc6'),_0xb353('0xc7'),_0xb353('0xc8'),_0xb353('0xc9'),_0xb353('0xca'),_0xb353('0xcb')];if(!_[_0xb353('0x3f')](_0x44d6d5)&&!_[_0xb353('0xcc')](_0xa4f01e,_0x44d6d5)){if(_[_0xb353('0x68')](this['variables'][_0x186ffb])){this[_0xb353('0x16')][_0x186ffb]={};}this[_0xb353('0x16')][_0x186ffb][_0x44d6d5]=_0x23d47e;}};VoiceQueueReport[_0xb353('0xd')][_0xb353('0x27')]=function(_0x4581f6){try{if(this[_0xb353('0x67')](_0x4581f6)){logger['debug'](_0xb353('0xcd'),_0x4581f6[_0xb353('0x50')],util['inspect'](_0x4581f6,{'showHidden':![],'depth':null}));if(this[_0xb353('0x10')][_0x4581f6[_0xb353('0x50')]]){for(var _0x6e8050=0x0,_0x3f8e15={};_0x6e8050<this[_0xb353('0x10')][_0x4581f6[_0xb353('0x50')]]['length'];_0x6e8050+=0x1){_0x3f8e15=this['queueReports'][_0x4581f6['uniqueid']][_0x6e8050];if(this[_0xb353('0x13')][_0x3f8e15['queue']]){if(_0x3f8e15['queuecallerexit']&&_0x3f8e15[_0xb353('0x97')]!=!![]){this[_0xb353('0x13')][_0x3f8e15[_0xb353('0x6e')]][_0xb353('0x5f')]+=0x1;}if(_0x3f8e15['queuecallerabandon']){this[_0xb353('0x13')][_0x3f8e15['queue']]['abandoned']+=0x1;}this[_0xb353('0x13')][_0x3f8e15[_0xb353('0x6e')]][_0xb353('0xce')]+=moment(_0x3f8e15[_0xb353('0xb4')])[_0xb353('0xcf')](_0x3f8e15[_0xb353('0x7a')],_0xb353('0xa0'))||0x0;if(_0x6e8050===this[_0xb353('0x10')][_0x4581f6['uniqueid']][_0xb353('0xd0')]-0x1){this[_0xb353('0x13')][_0x3f8e15[_0xb353('0x6e')]][_0xb353('0x5d')]+=moment()[_0xb353('0xd1')](0x0)['diff'](_0x3f8e15[_0xb353('0x7a')],'seconds');this[_0xb353('0x13')][_0x3f8e15['queue']][_0xb353('0x5e')]+=0x1;if(_0x3f8e15[_0xb353('0x81')]){this[_0xb353('0x13')][_0x3f8e15[_0xb353('0x6e')]][_0xb353('0x59')]+=0x1;this['voiceQueues'][_0x3f8e15['queue']][_0xb353('0x5c')]+=moment()['milliseconds'](0x0)[_0xb353('0xcf')](_0x3f8e15[_0xb353('0xb4')],'seconds');_0x3f8e15[_0xb353('0x82')]=moment()[_0xb353('0x51')](_0xb353('0x86'));_0x3f8e15[_0xb353('0x9e')]=![];_0x3f8e15[_0xb353('0x96')]=null;}if(_0x3f8e15[_0xb353('0x9e')]&&_0x3f8e15[_0xb353('0x97')]!=!![]){_0x3f8e15['lastevent']=_0xb353('0x5f');logger[_0xb353('0x4d')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0x4581f6['uniqueid'],util['inspect'](_0x3f8e15,{'showHidden':![],'depth':null}));ami[_0xb353('0x4b')](_0xb353('0xd2'),_0x3f8e15);}if(_0x3f8e15[_0xb353('0x1e')]){_0x3f8e15[_0xb353('0xd3')]='abandoned';logger['debug'](_0xb353('0xd4'),_0x4581f6[_0xb353('0x50')],util['inspect'](_0x3f8e15,{'showHidden':![],'depth':null}));ami[_0xb353('0x4b')](_0xb353('0xd5'),_0x3f8e15);}}else{this[_0xb353('0x13')][_0x3f8e15[_0xb353('0x6e')]][_0xb353('0x5d')]+=this[_0xb353('0x13')][_0x3f8e15[_0xb353('0x6e')]][_0xb353('0xce')];}logger[_0xb353('0x70')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x4581f6[_0xb353('0x50')],_0x3f8e15[_0xb353('0x53')],_0x3f8e15[_0xb353('0x58')],_0x4581f6[_0xb353('0xd6')]);this['channels'][_0x4581f6['uniqueid']]=_0x3f8e15;this[_0xb353('0x8b')](_0x3f8e15,_0xb353('0x26'));this[_0xb353('0x74')](this['voiceQueues'][_0x3f8e15[_0xb353('0x6e')]],_0xb353('0x26'));}}logger[_0xb353('0x4d')](_0xb353('0xd7'),_0x4581f6['uniqueid'],util[_0xb353('0x45')](this['queueReports'][_0x4581f6[_0xb353('0x50')]],{'showHidden':![],'depth':null}));ami[_0xb353('0x4b')]('custom:voiceQueueReport',this[_0xb353('0x10')][_0x4581f6['uniqueid']]);delete this['queueReports'][_0x4581f6[_0xb353('0x50')]];delete this[_0xb353('0x3c')][_0x4581f6[_0xb353('0x50')]];}if(this[_0xb353('0x16')][_0x4581f6[_0xb353('0x50')]]){delete this[_0xb353('0x16')][_0x4581f6[_0xb353('0x50')]];}}}catch(_0xcfde2b){logger['error'](_0xb353('0xcd'),_0x4581f6[_0xb353('0x50')],util[_0xb353('0x45')](_0xcfde2b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb353('0xd')][_0xb353('0x31')]=function(_0x584b01){try{if(this[_0xb353('0x67')](_0x584b01)){logger[_0xb353('0x4d')](_0xb353('0xd8'),_0x584b01[_0xb353('0x50')],util[_0xb353('0x45')](_0x584b01,{'showHidden':![],'depth':null}));var _0x59518e;if(this[_0xb353('0x10')][_0x584b01[_0xb353('0xd9')]]){_0x59518e=_[_0xb353('0x8e')](this[_0xb353('0x10')][_0x584b01['transfereeuniqueid']]);_0x59518e[_0xb353('0xa4')]=_0x584b01[_0xb353('0xda')];_0x59518e[_0xb353('0xa6')]=_0x584b01[_0xb353('0xdb')];_0x59518e[_0xb353('0x87')]=_0xb353('0xdc');_0x59518e[_0xb353('0x97')]=!![];_0x59518e[_0xb353('0xa2')]=_0xb353('0xdd');if(this[_0xb353('0x10')][_0x584b01['secondtransfereruniqueid']]){var _0x55cc17=this[_0xb353('0x10')][_0x584b01[_0xb353('0xdb')]];this[_0xb353('0x10')][_0x584b01[_0xb353('0xdb')]]=this[_0xb353('0x10')][_0x584b01['transfereeuniqueid']];this[_0xb353('0x10')][_0x584b01['transfereeuniqueid']]=_0x55cc17;var _0x45034e=_[_0xb353('0x8e')](this[_0xb353('0x10')][_0x584b01[_0xb353('0xd9')]]);_0x45034e['switch']=!![];}logger[_0xb353('0x70')](_0xb353('0xde'),_0x584b01[_0xb353('0x50')],_0x59518e[_0xb353('0x53')],_0x59518e[_0xb353('0x58')],_0x59518e['transferexten'],_0x59518e[_0xb353('0xa6')]);}else if(this[_0xb353('0x10')][_0x584b01[_0xb353('0xdf')]]){_0x59518e=_[_0xb353('0x8e')](this[_0xb353('0x10')][_0x584b01[_0xb353('0xdf')]]);_0x59518e['transferexten']=_0x584b01[_0xb353('0xe0')];_0x59518e[_0xb353('0xa6')]=_0x584b01[_0xb353('0xe1')];_0x59518e[_0xb353('0x87')]=_0xb353('0xdc');_0x59518e[_0xb353('0x97')]=!![];_0x59518e[_0xb353('0xa2')]=_0xb353('0xdd');if(this[_0xb353('0x10')][_0x584b01[_0xb353('0xe1')]]){var _0x55cc17=this[_0xb353('0x10')][_0x584b01[_0xb353('0xe1')]];this['queueReports'][_0x584b01[_0xb353('0xe1')]]=this[_0xb353('0x10')][_0x584b01['transfertargetuniqueid']];this['queueReports'][_0x584b01[_0xb353('0xdf')]]=_0x55cc17;var _0x45034e=_['last'](this[_0xb353('0x10')][_0x584b01[_0xb353('0xdf')]]);_0x45034e[_0xb353('0x3d')]=!![];}logger['info'](_0xb353('0xde'),_0x584b01['uniqueid'],_0x59518e['name'],_0x59518e['type'],_0x59518e['transferexten'],_0x59518e[_0xb353('0xa6')]);}}}catch(_0x54c87c){logger[_0xb353('0x46')]('[%s][voiceQueueReport][attendedtransfer]',_0x584b01[_0xb353('0x50')],util[_0xb353('0x45')](_0x54c87c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb353('0xd')][_0xb353('0x32')]=function(_0x4610ef){try{if(this[_0xb353('0x67')](_0x4610ef)){logger['debug'](_0xb353('0xe2'),_0x4610ef[_0xb353('0x50')],util[_0xb353('0x45')](_0x4610ef,{'showHidden':![],'depth':null}));if(this[_0xb353('0x10')][_0x4610ef[_0xb353('0xd9')]]){var _0x498cf4=_['last'](this['queueReports'][_0x4610ef[_0xb353('0xd9')]]);_0x498cf4[_0xb353('0x87')]=_0xb353('0xe3');_0x498cf4[_0xb353('0x97')]=!![];_0x498cf4[_0xb353('0xa2')]=_0xb353('0xe4');_0x498cf4[_0xb353('0xa4')]=_0x4610ef[_0xb353('0xe5')];_0x498cf4[_0xb353('0xa6')]=_0x4610ef['transfereeuniqueid'];logger[_0xb353('0x70')](_0xb353('0xe6'),_0x4610ef[_0xb353('0x50')],_0x498cf4['name'],_0x498cf4[_0xb353('0x58')],_0x498cf4[_0xb353('0xa4')],_0x498cf4[_0xb353('0xa6')]);this['syncHangup']({'event':_0xb353('0xe7'),'uniqueid':_0x4610ef[_0xb353('0xd9')],'context':_0x4610ef[_0xb353('0xe8')],'channel':_0x4610ef[_0xb353('0xe9')]});}}}catch(_0x4a6c96){logger[_0xb353('0x46')](_0xb353('0xe2'),_0x4610ef[_0xb353('0x50')],util[_0xb353('0x45')](_0x4a6c96,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStart']=function(_0x211598){try{if(this[_0xb353('0x67')](_0x211598)){logger[_0xb353('0x4d')](_0xb353('0xea'),_0x211598[_0xb353('0x50')],util[_0xb353('0x45')](_0x211598,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x211598[_0xb353('0x50')]]){var _0x4c59cb=_[_0xb353('0x8e')](this['queueReports'][_0x211598[_0xb353('0x50')]]);if(!_[_0xb353('0x3f')](_0x4c59cb['queuecallerleaveAt'])){_0x4c59cb[_0xb353('0xeb')]=moment()[_0xb353('0x51')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0xb353('0x70')]('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x211598[_0xb353('0x50')],_0x4c59cb['mohstarttime']);}}}}catch(_0x5b2c62){logger[_0xb353('0x46')](_0xb353('0xea'),_0x211598[_0xb353('0x50')],util[_0xb353('0x45')](_0x5b2c62,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xb353('0x2f')]=function(_0x3375d4){try{if(this[_0xb353('0x67')](_0x3375d4)){logger['debug']('[%s][voiceQueueReport][musiconholdstop]',_0x3375d4[_0xb353('0x50')],util[_0xb353('0x45')](_0x3375d4,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3375d4['uniqueid']]){var _0x20b56d=_[_0xb353('0x8e')](this['queueReports'][_0x3375d4[_0xb353('0x50')]]);if(!_[_0xb353('0x3f')](_0x20b56d[_0xb353('0xeb')])){_0x20b56d['mohtime']+=moment()['milliseconds'](0x0)[_0xb353('0xcf')](_0x20b56d[_0xb353('0xeb')],_0xb353('0xa0'));logger[_0xb353('0x70')]('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0x3375d4[_0xb353('0x50')],_0x20b56d[_0xb353('0xec')]);delete _0x20b56d[_0xb353('0xeb')];}}}}catch(_0x8fca8a){logger['error'](_0xb353('0xed'),_0x3375d4[_0xb353('0x50')],util[_0xb353('0x45')](_0x8fca8a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xb353('0xd')]['syncNewExten']=function(_0x5b87d4){try{if(this['isNotNull'](_0x5b87d4)){logger[_0xb353('0x4d')](_0xb353('0xee'),_0x5b87d4[_0xb353('0x50')],util['inspect'](_0x5b87d4,{'showHidden':![],'depth':null}));if(_0x5b87d4[_0xb353('0xef')][_0xb353('0xf0')]()===_0xb353('0xf1')){_0x5b87d4[_0xb353('0xf2')]=_0x5b87d4[_0xb353('0xf3')]&&_0x5b87d4['appdata'][_0xb353('0x9b')](_0xb353('0xf4'))?_0x5b87d4[_0xb353('0xf3')]:(_0x5b87d4['appdata']||_0x5b87d4['applicationdata'])['toLowerCase']();if(_[_0xb353('0x9b')](_0x5b87d4['applicationdata']['toLowerCase'](),_0xb353('0xf5'))){logger[_0xb353('0x70')](_0xb353('0xf6'),_0x5b87d4[_0xb353('0x50')],_0x5b87d4[_0xb353('0xef')],_0x5b87d4[_0xb353('0xf2')]);if(_['isUndefined'](this[_0xb353('0x3c')][_0x5b87d4[_0xb353('0x50')]]))this[_0xb353('0x3c')][_0x5b87d4['uniqueid']]={};var _0x1aeeb8=_0x5b87d4[_0xb353('0xf2')][_0xb353('0xf7')]('=');var _0x50f258=_0x1aeeb8[0x0][_0xb353('0xf0')]()[_0xb353('0xf8')](/cdr\((.*)\)/);if(_0x50f258)this[_0xb353('0x3c')][_0x5b87d4[_0xb353('0x50')]][_0x50f258[0x1]]=_0x1aeeb8[0x1];}}}}catch(_0x456fd6){logger[_0xb353('0x46')](_0xb353('0xf9'),_0x5b87d4[_0xb353('0x50')],util[_0xb353('0x45')](_0x456fd6,{'showHidden':![],'depth':null}));}};module[_0xb353('0xfa')]=VoiceQueueReport;
\ No newline at end of file
+var _0x4899=['queuecallercompleteAt','originalposition','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','syncAgentComplete','[%s][voiceQueueReport][agentcomplete]','assigned','membername','holdtime','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','channel','local/','linkedid','queuecallerexit','queuecallerexitAt','seconds','FORWARDTRANSFER','transfertype','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','addVariable','keys','value','variable','queuestatus','CONTINUE','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','varset','queueposition','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','[%s][voiceQueueReport][varset]','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','membercalls','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceQueueReport][hangup]','length','diff','[%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','hangup','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfereruniqueid','ATTENDEDTRANSFER','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohtime','milliseconds','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','util','ioredis','../../../config/logger','ami','../ami','../model/queueReport','redis','localhost','socket.io-emitter','tail','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','syncQueueSummary','bind','queuesummarycomplete','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','agentconnect','syncAgentConnect','syncVarSet','fullybooted','syncFullyBooted','newexten','syncNewExten','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','pTalking','unlockRR','prototype','clearZombieChannels','switch','enqueue','Action','status','catch','message','No\x20such\x20channel','[%s][voiceQueueReport][checkChannel]','inspect','error','variables','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','voice_queue_channel:save','voice_queue_presence:save','name','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','strategy','answered','available','loggedIn','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','Trunk','callerid','Interval','stringify','md5','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','queues','[voiceQueueReport][queues]','queuesummary','then','queue','[voiceQueueReport][queuesummary]\x20event:','[voiceQueueReport][queuesummary]\x20name:%s','callers','waiting','toNumber','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','[voiceQueueReport][queuesummary]','syncQueueSummaryComplete','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','inbound','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','info','merge','pick','push','queuecallerjoin','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete'];(function(_0xc7e695,_0x5290fa){var _0x3a4ff0=function(_0xa21d6e){while(--_0xa21d6e){_0xc7e695['push'](_0xc7e695['shift']());}};_0x3a4ff0(++_0x5290fa);}(_0x4899,0x74));var _0x9489=function(_0x5ec43c,_0x343ebf){_0x5ec43c=_0x5ec43c-0x0;var _0x858b24=_0x4899[_0x5ec43c];return _0x858b24;};'use strict';var _=require(_0x9489('0x0'));var moment=require('moment');var util=require(_0x9489('0x1'));var md5=require('md5');var Redis=require(_0x9489('0x2'));var config=require('../../../config/environment');var logger=require(_0x9489('0x3'))(_0x9489('0x4'));var ami=require(_0x9489('0x5'));var QueueReport=require(_0x9489('0x6'));config[_0x9489('0x7')]=_['defaults'](config[_0x9489('0x7')],{'host':_0x9489('0x8'),'port':0x18eb});var io=require(_0x9489('0x9'))(new Redis(config[_0x9489('0x7')]));var Sequence=function(){};Sequence['prototype']['enqueue']=function(_0x1379eb){this['tail']=this[_0x9489('0xa')]?this[_0x9489('0xa')]['finally'](_0x1379eb):_0x1379eb();};function VoiceQueueReport(_0x1dac7c){this[_0x9489('0xb')]=new Sequence();this[_0x9489('0xc')]={};this[_0x9489('0xd')]=_0x1dac7c[_0x9489('0xd')];this[_0x9489('0xe')]=_0x1dac7c[_0x9489('0xf')];this[_0x9489('0x10')]=_0x1dac7c['voiceQueues'];this[_0x9489('0x11')]=!![];this[_0x9489('0x12')]=_0x1dac7c[_0x9489('0x12')];this['variables']={};ami['on']('queuesummary',this[_0x9489('0x13')][_0x9489('0x14')](this));ami['on'](_0x9489('0x15'),this['syncQueueSummaryComplete'][_0x9489('0x14')](this));ami['on']('queuecallerjoin',this[_0x9489('0x16')]['bind'](this));ami['on'](_0x9489('0x17'),this[_0x9489('0x18')][_0x9489('0x14')](this));ami['on'](_0x9489('0x19'),this[_0x9489('0x1a')]['bind'](this));ami['on'](_0x9489('0x1b'),this['syncAgentComplete']['bind'](this));ami['on'](_0x9489('0x1c'),this[_0x9489('0x1d')][_0x9489('0x14')](this));ami['on']('varset',this[_0x9489('0x1e')][_0x9489('0x14')](this));ami['on']('hangup',this['syncHangup'][_0x9489('0x14')](this));ami['on'](_0x9489('0x1f'),this[_0x9489('0x20')][_0x9489('0x14')](this));ami['on'](_0x9489('0x21'),this[_0x9489('0x22')][_0x9489('0x14')](this));ami['on']('musiconholdstart',this[_0x9489('0x23')][_0x9489('0x14')](this));ami['on'](_0x9489('0x24'),this['syncMusicOnHoldStop'][_0x9489('0x14')](this));ami['on'](_0x9489('0x25'),this[_0x9489('0x26')][_0x9489('0x14')](this));ami['on'](_0x9489('0x27'),this[_0x9489('0x28')]['bind'](this));this[_0x9489('0x29')]();this[_0x9489('0x2a')]();}function clearChannels(_0x4186dd){if(!_[_0x9489('0x2b')](_0x4186dd)){for(var _0x2daed4 in _0x4186dd){if(_0x4186dd[_0x9489('0x2c')](_0x2daed4)){delete _0x4186dd[_0x2daed4];}}}}function clearCampaigns(_0x21ea0a){if(!_[_0x9489('0x2b')](_0x21ea0a)){for(var _0xd92a57 in _0x21ea0a){if(_0x21ea0a[_0x9489('0x2c')](_0xd92a57)){_0x21ea0a[_0xd92a57][_0x9489('0x2d')]=0x0;}}}}function clearVoiceQueues(_0x2f54e7){if(!_[_0x9489('0x2b')](_0x2f54e7)){for(var _0x263b01 in _0x2f54e7){if(_0x2f54e7[_0x9489('0x2c')](_0x263b01)){_0x2f54e7[_0x263b01][_0x9489('0x2d')]=0x0;_0x2f54e7[_0x263b01]['talking']=0x0;_0x2f54e7[_0x263b01][_0x9489('0x2e')]=0x0;_0x2f54e7[_0x263b01]['waiting']=0x0;_0x2f54e7[_0x263b01]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x4bc3ce){if(!_[_0x9489('0x2b')](_0x4bc3ce)){for(var _0x13fc88 in _0x4bc3ce){if(_0x4bc3ce['hasOwnProperty'](_0x13fc88)){_0x4bc3ce[_0x13fc88][_0x9489('0x2f')]=!![];}}}}VoiceQueueReport[_0x9489('0x30')][_0x9489('0x31')]=function(){var _0x4f1bad=this;for(var _0x590f2b in this[_0x9489('0xe')]){if(this['channels'][_0x9489('0x2c')](_0x590f2b)&&!this[_0x9489('0xe')][_0x590f2b][_0x9489('0x32')]){this[_0x9489('0xb')][_0x9489('0x33')](function(){if(!_['isNil'](_0x4f1bad['channels'][_0x590f2b])){return ami[_0x9489('0x34')]({'action':_0x9489('0x35'),'channel':_0x4f1bad[_0x9489('0xe')][_0x590f2b]['channel']})[_0x9489('0x36')](function(_0x4fb9a8){if(_0x4fb9a8[_0x9489('0x37')]===_0x9489('0x38')){setTimeout(function(){if(_0x4f1bad[_0x9489('0xe')][_0x590f2b]){delete _0x4f1bad[_0x9489('0xe')][_0x590f2b];logger['error'](_0x9489('0x39'),_0x590f2b,util[_0x9489('0x3a')](_0x4fb9a8,{'showHidden':![],'depth':null}));}if(_0x4f1bad[_0x9489('0xc')][_0x590f2b]){delete _0x4f1bad['queueReports'][_0x590f2b];logger[_0x9489('0x3b')]('[%s][voiceQueueReport][checkQueueReport]',_0x590f2b,util[_0x9489('0x3a')](_0x4fb9a8,{'showHidden':![],'depth':null}));}if(_0x4f1bad[_0x9489('0x3c')][_0x590f2b]){delete _0x4f1bad['variables'][_0x590f2b];logger[_0x9489('0x3b')](_0x9489('0x3d'),_0x590f2b,util[_0x9489('0x3a')](_0x4fb9a8,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0x9489('0x20')]=function(){logger[_0x9489('0x3b')](_0x9489('0x3e'));clearChannels(this[_0x9489('0xe')]);this[_0x9489('0x3f')](this[_0x9489('0xc')]);clearAgentBooked(this[_0x9489('0xd')]);clearVoiceQueues(this[_0x9489('0x10')]);clearCampaigns(this[_0x9489('0x12')]);};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x3f')]=function(_0x21cab9){var _0x3131fe=this;if(!_[_0x9489('0x2b')](_0x21cab9)){for(var _0xe8830e in _0x21cab9){if(_0x21cab9[_0x9489('0x2c')](_0xe8830e)){_0x3131fe[_0x9489('0x40')](_0x21cab9[_0xe8830e],_0x9489('0x41'));delete _0x21cab9[_0xe8830e];}}}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x42')]=function(_0x1bcdb8,_0x13a508,_0x536cfb){io['to'](_0x1bcdb8)['emit'](_0x13a508,_0x536cfb);};VoiceQueueReport['prototype'][_0x9489('0x43')]=function(_0x28d721,_0x18272e){logger[_0x9489('0x44')](_0x9489('0x45')+_0x18272e+_0x9489('0x46'),_0x28d721[_0x9489('0x47')],util[_0x9489('0x3a')](_0x28d721,{'showHidden':![],'depth':null}));this[_0x9489('0x42')](util[_0x9489('0x48')](_0x9489('0x49'),_0x28d721['name']),_0x9489('0x4a'),_0x28d721);io[_0x9489('0x42')](_0x9489('0x4b'),_0x28d721);};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x40')]=function(_0x3977ab,_0xe0714d){logger[_0x9489('0x44')](_0x9489('0x45')+_0xe0714d+']\x20sending\x20voice_queue_channel:remove\x20event:',_0x3977ab[_0x9489('0x47')],util[_0x9489('0x3a')](_0x3977ab,{'showHidden':![],'depth':null}));this[_0x9489('0x42')](util[_0x9489('0x48')](_0x9489('0x49'),_0x3977ab[_0x9489('0x4c')]),_0x9489('0x4d'),_0x3977ab);io['emit'](_0x9489('0x4e'),_0x3977ab);};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x4f')]=function(_0x400d04,_0x1cb015){if(_0x400d04[_0x9489('0x50')]==='inbound'){var _0x4f0235={'id':_0x400d04['id'],'name':_0x400d04['name'],'strategy':_0x400d04[_0x9489('0x51')],'answered':_0x400d04[_0x9489('0x52')],'available':_0x400d04[_0x9489('0x53')],'loggedIn':_0x400d04[_0x9489('0x54')],'pTalking':_0x400d04[_0x9489('0x2e')],'sumBillable':_0x400d04[_0x9489('0x55')],'sumDuration':_0x400d04[_0x9489('0x56')],'sumHoldTime':_0x400d04[_0x9489('0x57')]||0x0,'talking':_0x400d04[_0x9489('0x58')],'total':_0x400d04[_0x9489('0x59')],'type':_0x400d04[_0x9489('0x50')],'unmanaged':_0x400d04[_0x9489('0x5a')],'abandoned':_0x400d04[_0x9489('0x5b')],'waiting':_0x400d04['waiting']};if(_0x400d04[_0x9489('0x5c')]){_0x4f0235[_0x9489('0x5c')]={'id':_0x400d04[_0x9489('0x5c')]['id'],'name':_0x400d04[_0x9489('0x5c')][_0x9489('0x4c')],'active':_0x400d04['Trunk']['active'],'callerid':_0x400d04[_0x9489('0x5c')][_0x9489('0x5d')]};}if(_0x400d04[_0x9489('0x5e')]){_0x4f0235[_0x9489('0x5e')]={'id':_0x400d04[_0x9489('0x5e')]['id'],'name':_0x400d04[_0x9489('0x5e')][_0x9489('0x4c')]};}var _0x2ee0cd=md5(JSON[_0x9489('0x5f')](_0x4f0235));if(_0x400d04[_0x9489('0x60')]!==_0x2ee0cd){_0x400d04[_0x9489('0x60')]=_0x2ee0cd;logger[_0x9489('0x44')](_0x9489('0x61')+_0x1cb015+_0x9489('0x62'),util[_0x9489('0x3a')](_0x4f0235,{'showHidden':![],'depth':null}));this[_0x9489('0x42')](util[_0x9489('0x48')](_0x9489('0x49'),_0x4f0235[_0x9489('0x4c')]),_0x9489('0x63'),_0x4f0235);}}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x64')]=function(_0x1d7c21){return _0x1d7c21!==null&&!_[_0x9489('0x65')](_0x1d7c21);};VoiceQueueReport[_0x9489('0x30')]['loopQueueShow']=function(){var _0x24a965=this;setInterval(function(){_0x24a965[_0x9489('0x31')]();ami[_0x9489('0x34')]({'action':_0x9489('0x66')})[_0x9489('0x36')](function(_0x41331a){logger[_0x9489('0x3b')](_0x9489('0x67'),util['inspect'](_0x41331a,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0x9489('0x29')]=function(){var _0x512b4c=this;setInterval(function(){if(_0x512b4c[_0x9489('0x11')]){return ami['Action']({'action':_0x9489('0x68')})[_0x9489('0x69')](function(_0x450f2e){_0x512b4c[_0x9489('0x11')]=![];})[_0x9489('0x36')](function(_0x4cf21a){logger['error']('[voiceQueueReport][queuesummary]',util['inspect'](_0x4cf21a,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0x9489('0x13')]=function(_0x5d8390){try{if(this[_0x9489('0x64')](_0x5d8390)&&this[_0x9489('0x64')](_0x5d8390[_0x9489('0x6a')])){logger[_0x9489('0x44')](_0x9489('0x6b'),util[_0x9489('0x3a')](_0x5d8390,{'showHidden':![],'depth':null}));if(this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]]){logger['info'](_0x9489('0x6c'),_0x5d8390['queue']);var _0x111707=_['countBy'](this['channels'],_0x9489('0x6a'))[_0x5d8390[_0x9489('0x6a')]]||0x0;var _0x45b0b6=_0x111707-_0x5d8390[_0x9489('0x6d')];if(this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]][_0x9489('0x6e')]!==_[_0x9489('0x6f')](_0x5d8390[_0x9489('0x6d')])||this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]][_0x9489('0x54')]!==_[_0x9489('0x6f')](_0x5d8390['loggedin'])||this[_0x9489('0x10')][_0x5d8390['queue']]['available']!==_[_0x9489('0x6f')](_0x5d8390[_0x9489('0x53')])||this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]][_0x9489('0x58')]!==_0x45b0b6){this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]][_0x9489('0x6e')]=_[_0x9489('0x6f')](_0x5d8390[_0x9489('0x6d')]);this[_0x9489('0x10')][_0x5d8390['queue']][_0x9489('0x54')]=_[_0x9489('0x6f')](_0x5d8390[_0x9489('0x70')]);this['voiceQueues'][_0x5d8390[_0x9489('0x6a')]][_0x9489('0x53')]=_[_0x9489('0x6f')](_0x5d8390[_0x9489('0x53')]);this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]][_0x9489('0x58')]=_0x45b0b6>0x0?_0x45b0b6:0x0;this[_0x9489('0x10')][_0x5d8390['queue']]['talking']=this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]][_0x9489('0x58')]>_[_0x9489('0x6f')](_0x5d8390['loggedin'])?_[_0x9489('0x6f')](_0x5d8390[_0x9489('0x70')]):this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]][_0x9489('0x58')];this[_0x9489('0x4f')](this['voiceQueues'][_0x5d8390[_0x9489('0x6a')]],_0x9489('0x68'));}logger[_0x9489('0x44')](_0x9489('0x71'),util[_0x9489('0x3a')](this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]],{'showHidden':![],'depth':null}));ami[_0x9489('0x42')]('custom:queuesummary',this['voiceQueues'][_0x5d8390[_0x9489('0x6a')]]);}}}catch(_0x7ca6aa){logger['error'](_0x9489('0x72'),util[_0x9489('0x3a')](_0x7ca6aa,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x73')]=function(_0xba33dd){logger[_0x9489('0x44')](_0x9489('0x74'),util[_0x9489('0x3a')](_0xba33dd,{'showHidden':![],'depth':null}));this[_0x9489('0x11')]=!![];};VoiceQueueReport[_0x9489('0x30')]['syncQueueCallerJoin']=function(_0x1f0aae){try{if(this[_0x9489('0x64')](_0x1f0aae)){logger[_0x9489('0x44')](_0x9489('0x75'),_0x1f0aae[_0x9489('0x47')],util['inspect'](_0x1f0aae,{'showHidden':![],'depth':null}));if(_[_0x9489('0x65')](this['queueReports'][_0x1f0aae[_0x9489('0x47')]]))this[_0x9489('0xc')][_0x1f0aae['uniqueid']]=[];if(_[_0x9489('0x65')](this['channels'][_0x1f0aae[_0x9489('0x47')]]))this[_0x9489('0xe')][_0x1f0aae['uniqueid']]={};var _0x432705=new QueueReport();_0x432705[_0x9489('0x4c')]=_0x1f0aae[_0x9489('0x6a')];_0x432705['type']=this[_0x9489('0x10')][_0x432705[_0x9489('0x4c')]]&&this[_0x9489('0x10')][_0x432705['name']][_0x9489('0x50')]?this['voiceQueues'][_0x432705[_0x9489('0x4c')]][_0x9489('0x50')]||_0x9489('0x76'):_0x9489('0x76');_0x432705['queue']=_0x1f0aae[_0x9489('0x6a')];_0x432705[_0x9489('0x77')]=moment()[_0x9489('0x48')](_0x9489('0x78'));_0x432705[_0x9489('0x79')]=_0x1f0aae[_0x9489('0x79')];_0x432705[_0x9489('0x7a')]=_0x1f0aae[_0x9489('0x7a')];_0x432705[_0x9489('0x47')]=_0x1f0aae['uniqueid'];_0x432705[_0x9489('0x7b')]=this[_0x9489('0xe')][_0x1f0aae[_0x9489('0x47')]]['routealias'];logger[_0x9489('0x7c')]('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x432705['name'],_0x432705[_0x9489('0x50')]);_[_0x9489('0x7d')](_0x432705,_[_0x9489('0x7e')](_0x1f0aae,_['keys'](_0x432705)));this[_0x9489('0xc')][_0x1f0aae['uniqueid']][_0x9489('0x7f')](_0x432705);this[_0x9489('0xe')][_0x1f0aae[_0x9489('0x47')]]=_0x432705;this[_0x9489('0x43')](_0x432705,_0x9489('0x80'));}}catch(_0x171515){logger[_0x9489('0x3b')]('[%s][voiceQueueReport][queuecallerjoin]',_0x1f0aae[_0x9489('0x47')],util[_0x9489('0x3a')](_0x171515,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x18')]=function(_0x3d8fec){try{if(this[_0x9489('0x64')](_0x3d8fec)){logger[_0x9489('0x44')](_0x9489('0x81'),_0x3d8fec['uniqueid'],util['inspect'](_0x3d8fec,{'showHidden':![],'depth':null}));if(this[_0x9489('0xc')][_0x3d8fec[_0x9489('0x47')]]){var _0x39a7b4=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x3d8fec[_0x9489('0x47')]]);_0x39a7b4[_0x9489('0x83')]=![];_0x39a7b4[_0x9489('0x84')]=null;_0x39a7b4['holdtime']=_0x3d8fec['holdtime'];_0x39a7b4['originalposition']=_0x3d8fec[_0x9489('0x85')];_0x39a7b4['queuecallerabandon']=!![];_0x39a7b4[_0x9489('0x86')]=moment()[_0x9489('0x48')](_0x9489('0x78'));_0x39a7b4[_0x9489('0x87')]=_0x9489('0x88');_0x39a7b4[_0x9489('0x89')]=null;logger['info'](_0x9489('0x8a'),_0x39a7b4['name'],_0x39a7b4[_0x9489('0x50')]);this[_0x9489('0xe')][_0x3d8fec[_0x9489('0x47')]]=_0x39a7b4;this['emitVoiceQueueChannelRemove'](_0x39a7b4,_0x9489('0x17'));}}}catch(_0x1cb55b){logger[_0x9489('0x3b')](_0x9489('0x81'),_0x3d8fec[_0x9489('0x47')],util[_0x9489('0x3a')](_0x1cb55b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x1a')]=function(_0x28b047){try{if(this[_0x9489('0x64')](_0x28b047)){logger[_0x9489('0x44')](_0x9489('0x8b'),_0x28b047[_0x9489('0x47')],util[_0x9489('0x3a')](_0x28b047,{'showHidden':![],'depth':null}));if(this[_0x9489('0xc')][_0x28b047[_0x9489('0x47')]]){var _0x37920e=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x28b047[_0x9489('0x47')]]);_0x37920e[_0x9489('0x8c')]=moment()['format'](_0x9489('0x78'));_0x37920e[_0x9489('0x8d')]=_0x28b047['connectedlinenum'];_0x37920e[_0x9489('0x8e')]=_0x28b047['connectedlinename'];logger[_0x9489('0x7c')](_0x9489('0x8f'),_0x37920e['name'],_0x37920e[_0x9489('0x50')],_0x28b047[_0x9489('0x8d')],_0x28b047[_0x9489('0x8e')]);this['channels'][_0x28b047[_0x9489('0x47')]]=_0x37920e;this[_0x9489('0x43')](_0x37920e,_0x9489('0x19'));}}}catch(_0x2d14fe){logger[_0x9489('0x3b')](_0x9489('0x8b'),_0x28b047[_0x9489('0x47')],util[_0x9489('0x3a')](_0x2d14fe,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x1d')]=function(_0x2dbf80){try{if(this[_0x9489('0x64')](_0x2dbf80)){logger[_0x9489('0x44')](_0x9489('0x90'),_0x2dbf80[_0x9489('0x47')],util[_0x9489('0x3a')](_0x2dbf80,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2dbf80['uniqueid']]){var _0x5293f8=_['last'](this[_0x9489('0xc')][_0x2dbf80[_0x9489('0x47')]]);_0x5293f8[_0x9489('0x83')]=!![];_0x5293f8[_0x9489('0x87')]=_0x9489('0x91');logger['info'](_0x9489('0x92'),_0x5293f8[_0x9489('0x4c')],_0x5293f8[_0x9489('0x50')]);}}}catch(_0x599998){logger['error'](_0x9489('0x90'),_0x2dbf80[_0x9489('0x47')],util[_0x9489('0x3a')](_0x599998,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x9489('0x93')]=function(_0x13039e){try{if(this[_0x9489('0x64')](_0x13039e)){logger[_0x9489('0x44')](_0x9489('0x94'),_0x13039e['uniqueid'],util[_0x9489('0x3a')](_0x13039e,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x13039e[_0x9489('0x47')]]){var _0x372766=_['last'](this[_0x9489('0xc')][_0x13039e['uniqueid']]);_0x372766[_0x9489('0x17')]=![];_0x372766[_0x9489('0x86')]=null;_0x372766[_0x9489('0x95')]=!![];_0x372766[_0x9489('0x89')]=_0x13039e[_0x9489('0x96')];_0x372766[_0x9489('0x97')]=_0x13039e[_0x9489('0x97')];_0x372766['queuecallercomplete']=!![];_0x372766['queuecallerexit']=![];_0x372766['queuecallerexitAt']=null;if(!_0x372766[_0x9489('0x98')]){if(_0x13039e[_0x9489('0x99')]==_0x9489('0x98')){_0x372766[_0x9489('0x87')]=_0x9489('0x9a');logger['info'](_0x9489('0x9b'),_0x372766[_0x9489('0x4c')],_0x372766[_0x9489('0x50')]);}else{if(_[_0x9489('0x9c')](_0x13039e[_0x9489('0x9d')]['toLowerCase'](),_0x9489('0x9e'))){if(this[_0x9489('0xc')][_0x13039e[_0x9489('0x9f')]]){var _0x2f504a=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x13039e[_0x9489('0x9f')]]);_0x2f504a[_0x9489('0x83')]=![];_0x2f504a[_0x9489('0xa0')]=!![];_0x2f504a[_0x9489('0xa1')]=moment(_0x372766[_0x9489('0x77')])['add'](_0x13039e[_0x9489('0x97')],_0x9489('0xa2'))[_0x9489('0x48')]('YYYY-MM-DD\x20HH:mm:ss');_0x2f504a['queuecallerexitreason']=_0x9489('0xa3');_0x2f504a[_0x9489('0x98')]=!![];_0x2f504a[_0x9489('0xa4')]='FORWARD';_0x2f504a[_0x9489('0xa5')]=_0x13039e[_0x9489('0xa6')];_0x2f504a[_0x9489('0xa7')]=_0x13039e[_0x9489('0x47')];logger[_0x9489('0x7c')](_0x9489('0xa8'),_0x2f504a[_0x9489('0x4c')],_0x2f504a[_0x9489('0x50')]);var _0x217033=this[_0x9489('0xc')][_0x13039e[_0x9489('0x9f')]];this[_0x9489('0xc')][_0x13039e[_0x9489('0x9f')]]=this[_0x9489('0xc')][_0x13039e[_0x9489('0x47')]];this[_0x9489('0xc')][_0x13039e['uniqueid']]=_0x217033;}}else{_0x372766[_0x9489('0x87')]=_0x9489('0xa9')+_0x13039e['reason'][_0x9489('0xaa')]();logger[_0x9489('0x7c')](_0x9489('0xab'),_0x372766[_0x9489('0x4c')],_0x372766['type'],_0x372766[_0x9489('0x87')]);}}}this[_0x9489('0xe')][_0x13039e[_0x9489('0x47')]]=_0x372766;this[_0x9489('0x40')](_0x372766,_0x9489('0x1b'));}}}catch(_0x3c73e6){logger[_0x9489('0x3b')](_0x9489('0x94'),_0x13039e[_0x9489('0x47')],util[_0x9489('0x3a')](_0x3c73e6,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x1e')]=function(_0x35df2a){try{if(this[_0x9489('0x64')](_0x35df2a)){logger[_0x9489('0x44')]('[%s][voiceQueueReport][varset]',_0x35df2a[_0x9489('0x47')],util[_0x9489('0x3a')](_0x35df2a,{'showHidden':![],'depth':null}));this[_0x9489('0xac')](_0x35df2a['uniqueid'],_[_0x9489('0xad')](_0x35df2a['variable'])[0x0],_0x35df2a[_0x9489('0xae')]);if(this[_0x9489('0xc')][_0x35df2a['uniqueid']]){var _0x52fb68=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x35df2a[_0x9489('0x47')]]);if(_0x52fb68){if(this[_0x9489('0x64')](_0x35df2a[_0x9489('0xaf')])&&this[_0x9489('0x64')](_0x35df2a['variable'][_0x9489('0xb0')])){switch(_0x35df2a[_0x9489('0xae')]){case _0x9489('0xb1'):_0x52fb68[_0x9489('0xa0')]=![];_0x52fb68[_0x9489('0xa1')]=null;break;case _0x9489('0xb2'):_0x52fb68[_0x9489('0xb3')]=_0x9489('0xb4');_0x52fb68[_0x9489('0xa0')]=!![];_0x52fb68[_0x9489('0xa1')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x52fb68[_0x9489('0x8c')]=moment()[_0x9489('0x48')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x9489('0x44')](_0x9489('0xb5'),_0x35df2a['uniqueid'],util[_0x9489('0x3a')](_0x52fb68,{'showHidden':![],'depth':null}));ami[_0x9489('0x42')](_0x9489('0xb6'),_0x52fb68);break;default:_0x52fb68[_0x9489('0xa0')]=!![];_0x52fb68[_0x9489('0xa1')]=moment()['format'](_0x9489('0x78'));_0x52fb68[_0x9489('0x8c')]=moment()[_0x9489('0x48')](_0x9489('0x78'));}_0x52fb68[_0x9489('0x17')]=![];_0x52fb68['queuecallerabandonAt']=null;_0x52fb68[_0x9489('0x87')]=_0x35df2a[_0x9489('0xae')];this[_0x9489('0xe')][_0x35df2a[_0x9489('0x47')]]=_0x52fb68;this['emitVoiceQueueChannelRemove'](_0x52fb68,_0x9489('0xb7'));}else if(this[_0x9489('0x64')](_0x35df2a[_0x9489('0xaf')])&&this[_0x9489('0x64')](_0x35df2a[_0x9489('0xaf')][_0x9489('0xb8')])){if(!_0x52fb68[_0x9489('0x17')]){_0x52fb68['queuecallerexit']=!![];_0x52fb68[_0x9489('0xa1')]=moment()[_0x9489('0x48')](_0x9489('0x78'));_0x52fb68[_0x9489('0x87')]='EXITWITHKEY';_0x52fb68[_0x9489('0x8c')]=moment()['format'](_0x9489('0x78'));this[_0x9489('0xe')][_0x35df2a['uniqueid']]=_0x52fb68;}}logger[_0x9489('0x7c')](_0x9489('0xb9'),_0x35df2a[_0x9489('0x47')],_0x52fb68['name'],_0x52fb68[_0x9489('0x50')],_[_0x9489('0xad')](_0x35df2a[_0x9489('0xaf')])[0x0],_0x35df2a['value']);_0x52fb68[_0x9489('0x3c')]=this[_0x9489('0x3c')][_0x35df2a[_0x9489('0x47')]];}}}}catch(_0x1d9f23){logger[_0x9489('0x3b')](_0x9489('0xba'),_0x35df2a['uniqueid'],util[_0x9489('0x3a')](_0x1d9f23,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9489('0x30')]['addVariable']=function(_0x3f6e5a,_0x4bbe42,_0x2afdb7){var _0x438adc=['rtpaudioqos',_0x9489('0xbb'),_0x9489('0xbc'),_0x9489('0xbd'),_0x9489('0xbe'),_0x9489('0xbf'),_0x9489('0xc0'),_0x9489('0xc1'),_0x9489('0xc2'),'sipuri',_0x9489('0xc3'),'bridgepvtcallid',_0x9489('0xc4'),'memberdynamic',_0x9489('0xc5'),'memberlastcall','membername',_0x9489('0xc6'),_0x9489('0xc7')];if(!_[_0x9489('0xc8')](_0x4bbe42)&&!_[_0x9489('0xc9')](_0x438adc,_0x4bbe42)){if(_[_0x9489('0x65')](this[_0x9489('0x3c')][_0x3f6e5a])){this['variables'][_0x3f6e5a]={};}this[_0x9489('0x3c')][_0x3f6e5a][_0x4bbe42]=_0x2afdb7;}};VoiceQueueReport[_0x9489('0x30')]['syncHangup']=function(_0x11cd38){try{if(this['isNotNull'](_0x11cd38)){logger[_0x9489('0x44')](_0x9489('0xca'),_0x11cd38[_0x9489('0x47')],util['inspect'](_0x11cd38,{'showHidden':![],'depth':null}));if(this[_0x9489('0xc')][_0x11cd38[_0x9489('0x47')]]){for(var _0x3356f3=0x0,_0x11d19a={};_0x3356f3<this['queueReports'][_0x11cd38['uniqueid']][_0x9489('0xcb')];_0x3356f3+=0x1){_0x11d19a=this[_0x9489('0xc')][_0x11cd38[_0x9489('0x47')]][_0x3356f3];if(this[_0x9489('0x10')][_0x11d19a[_0x9489('0x6a')]]){if(_0x11d19a['queuecallerexit']&&_0x11d19a[_0x9489('0x98')]!=!![]){this[_0x9489('0x10')][_0x11d19a[_0x9489('0x6a')]]['unmanaged']+=0x1;}if(_0x11d19a[_0x9489('0x17')]){this[_0x9489('0x10')][_0x11d19a['queue']][_0x9489('0x5b')]+=0x1;}this[_0x9489('0x10')][_0x11d19a['queue']][_0x9489('0x57')]+=moment(_0x11d19a[_0x9489('0x8c')])[_0x9489('0xcc')](_0x11d19a[_0x9489('0x77')],_0x9489('0xa2'))||0x0;if(_0x3356f3===this['queueReports'][_0x11cd38[_0x9489('0x47')]][_0x9489('0xcb')]-0x1){this['voiceQueues'][_0x11d19a['queue']][_0x9489('0x56')]+=moment()['milliseconds'](0x0)[_0x9489('0xcc')](_0x11d19a['queuecallerjoinAt'],_0x9489('0xa2'));this[_0x9489('0x10')][_0x11d19a[_0x9489('0x6a')]]['total']+=0x1;if(_0x11d19a['queuecallercomplete']){this[_0x9489('0x10')][_0x11d19a[_0x9489('0x6a')]][_0x9489('0x52')]+=0x1;this['voiceQueues'][_0x11d19a['queue']]['sumBillable']+=moment()['milliseconds'](0x0)[_0x9489('0xcc')](_0x11d19a['queuecallerleaveAt'],'seconds');_0x11d19a[_0x9489('0x84')]=moment()[_0x9489('0x48')](_0x9489('0x78'));_0x11d19a[_0x9489('0xa0')]=![];_0x11d19a[_0x9489('0xa1')]=null;}if(_0x11d19a['queuecallerexit']&&_0x11d19a['transfer']!=!![]){_0x11d19a[_0x9489('0xb3')]=_0x9489('0x5a');logger[_0x9489('0x44')](_0x9489('0xcd'),_0x11cd38[_0x9489('0x47')],util[_0x9489('0x3a')](_0x11d19a,{'showHidden':![],'depth':null}));ami['emit'](_0x9489('0xce'),_0x11d19a);}if(_0x11d19a[_0x9489('0x17')]){_0x11d19a[_0x9489('0xb3')]=_0x9489('0x5b');logger[_0x9489('0x44')](_0x9489('0xcf'),_0x11cd38[_0x9489('0x47')],util[_0x9489('0x3a')](_0x11d19a,{'showHidden':![],'depth':null}));ami['emit'](_0x9489('0xd0'),_0x11d19a);}}else{this[_0x9489('0x10')][_0x11d19a[_0x9489('0x6a')]][_0x9489('0x56')]+=this[_0x9489('0x10')][_0x11d19a[_0x9489('0x6a')]][_0x9489('0x57')];}logger[_0x9489('0x7c')](_0x9489('0xd1'),_0x11cd38[_0x9489('0x47')],_0x11d19a[_0x9489('0x4c')],_0x11d19a[_0x9489('0x50')],_0x11cd38[_0x9489('0xd2')]);this[_0x9489('0xe')][_0x11cd38[_0x9489('0x47')]]=_0x11d19a;this[_0x9489('0x40')](_0x11d19a,_0x9489('0xd3'));this['emitVoiceQueueSummary'](this[_0x9489('0x10')][_0x11d19a[_0x9489('0x6a')]],_0x9489('0xd3'));}}logger[_0x9489('0x44')]('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0x11cd38['uniqueid'],util['inspect'](this[_0x9489('0xc')][_0x11cd38['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x9489('0x42')]('custom:voiceQueueReport',this[_0x9489('0xc')][_0x11cd38[_0x9489('0x47')]]);delete this[_0x9489('0xc')][_0x11cd38[_0x9489('0x47')]];delete this[_0x9489('0xe')][_0x11cd38[_0x9489('0x47')]];}if(this['variables'][_0x11cd38[_0x9489('0x47')]]){delete this[_0x9489('0x3c')][_0x11cd38[_0x9489('0x47')]];}}}catch(_0xcdc71){logger[_0x9489('0x3b')]('[%s][voiceQueueReport][hangup]',_0x11cd38[_0x9489('0x47')],util[_0x9489('0x3a')](_0xcdc71,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x26')]=function(_0x8759a9){try{if(this['isNotNull'](_0x8759a9)){logger['debug'](_0x9489('0xd4'),_0x8759a9[_0x9489('0x47')],util[_0x9489('0x3a')](_0x8759a9,{'showHidden':![],'depth':null}));var _0x3cdb3b;if(this[_0x9489('0xc')][_0x8759a9[_0x9489('0xd5')]]){_0x3cdb3b=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x8759a9[_0x9489('0xd5')]]);_0x3cdb3b['transferexten']=_0x8759a9[_0x9489('0xd6')];_0x3cdb3b[_0x9489('0xa7')]=_0x8759a9[_0x9489('0xd7')];_0x3cdb3b['queuecallerexitreason']='ATTENDEDTRANSFER';_0x3cdb3b[_0x9489('0x98')]=!![];_0x3cdb3b['transfertype']=_0x9489('0xd8');if(this[_0x9489('0xc')][_0x8759a9[_0x9489('0xd7')]]){var _0x3307c9=this[_0x9489('0xc')][_0x8759a9['secondtransfereruniqueid']];this['queueReports'][_0x8759a9[_0x9489('0xd7')]]=this['queueReports'][_0x8759a9[_0x9489('0xd5')]];this[_0x9489('0xc')][_0x8759a9['transfereeuniqueid']]=_0x3307c9;var _0x395d91=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x8759a9[_0x9489('0xd5')]]);_0x395d91[_0x9489('0x32')]=!![];}logger[_0x9489('0x7c')](_0x9489('0xd9'),_0x8759a9[_0x9489('0x47')],_0x3cdb3b[_0x9489('0x4c')],_0x3cdb3b['type'],_0x3cdb3b[_0x9489('0xa5')],_0x3cdb3b[_0x9489('0xa7')]);}else if(this[_0x9489('0xc')][_0x8759a9[_0x9489('0xda')]]){_0x3cdb3b=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x8759a9['transfertargetuniqueid']]);_0x3cdb3b[_0x9489('0xa5')]=_0x8759a9['origtransfererexten'];_0x3cdb3b['transferuniqueid']=_0x8759a9[_0x9489('0xdb')];_0x3cdb3b[_0x9489('0x87')]=_0x9489('0xdc');_0x3cdb3b[_0x9489('0x98')]=!![];_0x3cdb3b[_0x9489('0xa4')]='ATTENDED';if(this[_0x9489('0xc')][_0x8759a9['origtransfereruniqueid']]){var _0x3307c9=this[_0x9489('0xc')][_0x8759a9[_0x9489('0xdb')]];this[_0x9489('0xc')][_0x8759a9[_0x9489('0xdb')]]=this[_0x9489('0xc')][_0x8759a9['transfertargetuniqueid']];this[_0x9489('0xc')][_0x8759a9[_0x9489('0xda')]]=_0x3307c9;var _0x395d91=_['last'](this[_0x9489('0xc')][_0x8759a9[_0x9489('0xda')]]);_0x395d91[_0x9489('0x32')]=!![];}logger[_0x9489('0x7c')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x8759a9[_0x9489('0x47')],_0x3cdb3b['name'],_0x3cdb3b['type'],_0x3cdb3b[_0x9489('0xa5')],_0x3cdb3b[_0x9489('0xa7')]);}}}catch(_0x2b7525){logger['error'](_0x9489('0xd4'),_0x8759a9['uniqueid'],util[_0x9489('0x3a')](_0x2b7525,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x28')]=function(_0x1948ed){try{if(this[_0x9489('0x64')](_0x1948ed)){logger[_0x9489('0x44')](_0x9489('0xdd'),_0x1948ed[_0x9489('0x47')],util['inspect'](_0x1948ed,{'showHidden':![],'depth':null}));if(this[_0x9489('0xc')][_0x1948ed[_0x9489('0xd5')]]){var _0x13140c=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x1948ed[_0x9489('0xd5')]]);_0x13140c['queuecallerexitreason']=_0x9489('0xde');_0x13140c['transfer']=!![];_0x13140c[_0x9489('0xa4')]='BLIND';_0x13140c[_0x9489('0xa5')]=_0x1948ed[_0x9489('0xdf')];_0x13140c[_0x9489('0xa7')]=_0x1948ed[_0x9489('0xd5')];logger['info'](_0x9489('0xe0'),_0x1948ed[_0x9489('0x47')],_0x13140c['name'],_0x13140c['type'],_0x13140c[_0x9489('0xa5')],_0x13140c[_0x9489('0xa7')]);this['syncHangup']({'event':_0x9489('0xe1'),'uniqueid':_0x1948ed[_0x9489('0xd5')],'context':_0x1948ed[_0x9489('0xe2')],'channel':_0x1948ed[_0x9489('0xe3')]});}}}catch(_0x3322d2){logger[_0x9489('0x3b')](_0x9489('0xdd'),_0x1948ed[_0x9489('0x47')],util['inspect'](_0x3322d2,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x9489('0x23')]=function(_0x6d9316){try{if(this[_0x9489('0x64')](_0x6d9316)){logger['debug'](_0x9489('0xe4'),_0x6d9316[_0x9489('0x47')],util[_0x9489('0x3a')](_0x6d9316,{'showHidden':![],'depth':null}));if(this[_0x9489('0xc')][_0x6d9316[_0x9489('0x47')]]){var _0x3d63f4=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x6d9316[_0x9489('0x47')]]);if(!_[_0x9489('0xc8')](_0x3d63f4[_0x9489('0x8c')])){_0x3d63f4[_0x9489('0xe5')]=moment()[_0x9489('0x48')](_0x9489('0x78'));logger[_0x9489('0x7c')](_0x9489('0xe6'),_0x6d9316[_0x9489('0x47')],_0x3d63f4[_0x9489('0xe5')]);}}}}catch(_0x3f0abb){logger[_0x9489('0x3b')](_0x9489('0xe4'),_0x6d9316[_0x9489('0x47')],util['inspect'](_0x3f0abb,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStop']=function(_0x14b9ac){try{if(this[_0x9489('0x64')](_0x14b9ac)){logger[_0x9489('0x44')]('[%s][voiceQueueReport][musiconholdstop]',_0x14b9ac[_0x9489('0x47')],util[_0x9489('0x3a')](_0x14b9ac,{'showHidden':![],'depth':null}));if(this[_0x9489('0xc')][_0x14b9ac[_0x9489('0x47')]]){var _0x151724=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x14b9ac[_0x9489('0x47')]]);if(!_['isNil'](_0x151724['mohstarttime'])){_0x151724[_0x9489('0xe7')]+=moment()[_0x9489('0xe8')](0x0)[_0x9489('0xcc')](_0x151724[_0x9489('0xe5')],_0x9489('0xa2'));logger[_0x9489('0x7c')](_0x9489('0xe9'),_0x14b9ac['uniqueid'],_0x151724['mohtime']);delete _0x151724[_0x9489('0xe5')];}}}}catch(_0x3734ef){logger[_0x9489('0x3b')](_0x9489('0xea'),_0x14b9ac[_0x9489('0x47')],util[_0x9489('0x3a')](_0x3734ef,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x9489('0x22')]=function(_0x1d7e38){try{if(this[_0x9489('0x64')](_0x1d7e38)){logger['debug'](_0x9489('0xeb'),_0x1d7e38[_0x9489('0x47')],util['inspect'](_0x1d7e38,{'showHidden':![],'depth':null}));if(_0x1d7e38[_0x9489('0xec')][_0x9489('0xed')]()===_0x9489('0xee')){_0x1d7e38[_0x9489('0xef')]=_0x1d7e38[_0x9489('0xf0')]&&_0x1d7e38['appdata'][_0x9489('0x9c')](_0x9489('0xf1'))?_0x1d7e38[_0x9489('0xf0')]:(_0x1d7e38[_0x9489('0xf0')]||_0x1d7e38[_0x9489('0xef')])['toLowerCase']();if(_[_0x9489('0x9c')](_0x1d7e38['applicationdata']['toLowerCase'](),_0x9489('0xf2'))){logger[_0x9489('0x7c')](_0x9489('0xf3'),_0x1d7e38[_0x9489('0x47')],_0x1d7e38[_0x9489('0xec')],_0x1d7e38['applicationdata']);if(_[_0x9489('0x65')](this['channels'][_0x1d7e38[_0x9489('0x47')]]))this[_0x9489('0xe')][_0x1d7e38[_0x9489('0x47')]]={};var _0x5512af=_0x1d7e38[_0x9489('0xef')][_0x9489('0xf4')]('=');var _0x55b5b8=_0x5512af[0x0][_0x9489('0xed')]()[_0x9489('0xf5')](/cdr\((.*)\)/);if(_0x55b5b8)this[_0x9489('0xe')][_0x1d7e38['uniqueid']][_0x55b5b8[0x1]]=_0x5512af[0x1];}}}}catch(_0x52d88f){logger[_0x9489('0x3b')](_0x9489('0xf6'),_0x1d7e38[_0x9489('0x47')],util[_0x9489('0x3a')](_0x52d88f,{'showHidden':![],'depth':null}));}};module[_0x9489('0xf7')]=VoiceQueueReport;
\ No newline at end of file
index ee2d609..314b4cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3110=['CreateReportAgentPreview','../client','createHistory','campaign','queue','Request'];(function(_0xa1d428,_0x8e5200){var _0x1d9eab=function(_0x45ce97){while(--_0x45ce97){_0xa1d428['push'](_0xa1d428['shift']());}};_0x1d9eab(++_0x8e5200);}(_0x3110,0x1e1));var _0x0311=function(_0x21d29f,_0x433e8d){_0x21d29f=_0x21d29f-0x0;var _0x284e8c=_0x3110[_0x21d29f];return _0x284e8c;};'use strict';var client=require(_0x0311('0x0'));exports[_0x0311('0x1')]=function(_0x93b7f9){return function(){_0x93b7f9[_0x0311('0x2')]=_0x93b7f9[_0x0311('0x3')];return client[_0x0311('0x4')](_0x0311('0x5'),{'body':_0x93b7f9,'log':_0x0311('0x5')});};};
\ No newline at end of file
+var _0x19bf=['createHistory','Request','../client'];(function(_0x19f584,_0x546719){var _0x2ab2ba=function(_0x285b63){while(--_0x285b63){_0x19f584['push'](_0x19f584['shift']());}};_0x2ab2ba(++_0x546719);}(_0x19bf,0x104));var _0xf19b=function(_0x248ef1,_0x191eaa){_0x248ef1=_0x248ef1-0x0;var _0x816a25=_0x19bf[_0x248ef1];return _0x816a25;};'use strict';var client=require(_0xf19b('0x0'));exports[_0xf19b('0x1')]=function(_0x26eab7){return function(){_0x26eab7['campaign']=_0x26eab7['queue'];return client[_0xf19b('0x2')]('CreateReportAgentPreview',{'body':_0x26eab7,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
index 07b63b3..ea505f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x112a=['CreateAttachment','../client','create','Request'];(function(_0x51f50c,_0x2ece67){var _0x3614e3=function(_0x5665f3){while(--_0x5665f3){_0x51f50c['push'](_0x51f50c['shift']());}};_0x3614e3(++_0x2ece67);}(_0x112a,0x115));var _0xa112=function(_0x255706,_0x2d9a67){_0x255706=_0x255706-0x0;var _0x4be098=_0x112a[_0x255706];return _0x4be098;};'use strict';var client=require(_0xa112('0x0'));exports[_0xa112('0x1')]=function(_0xe30bf4){return client[_0xa112('0x2')](_0xa112('0x3'),{'body':_0xe30bf4,'log':_0xa112('0x3')});};
\ No newline at end of file
+var _0x0176=['CreateAttachment','../client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0176,0x14f));var _0x6017=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x0176[_0x122ef9];return _0x42fba0;};'use strict';var client=require(_0x6017('0x0'));exports['create']=function(_0x518240){return client['Request'](_0x6017('0x1'),{'body':_0x518240,'log':'CreateAttachment'});};
\ No newline at end of file
index 8bc6801..59d1aaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['Interval','interval','SquareProject','getCampaign','getCampaigns','Request','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','TrunkBackup','callerid'];(function(_0x577de2,_0x4b7d70){var _0x185fd4=function(_0x4651d0){while(--_0x4651d0){_0x577de2['push'](_0x577de2['shift']());}};_0x185fd4(++_0x4b7d70);}(_0x1261,0x144));var _0x1126=function(_0x1ac0dd,_0x5a1e5f){_0x1ac0dd=_0x1ac0dd-0x0;var _0x31fc81=_0x1261[_0x1ac0dd];return _0x31fc81;};'use strict';var client=require('../client');exports[_0x1126('0x0')]=function(){return function(){return client[_0x1126('0x1')](_0x1126('0x2'),{'options':{'raw':![],'attributes':['id',_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x1126('0xa'),_0x1126('0xb'),'dialNoAnswerMaxRetry',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'dialDropRetryFrequency',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'dialMachineRetryFrequency',_0x1126('0x14'),'dialAgentRejectRetryFrequency','dialTimezone',_0x1126('0x15'),'dialAMDActive',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'dialOrderByScheduledAt','dialPrefix',_0x1126('0x1f'),_0x1126('0x20')],'include':[{'model':_0x1126('0x21'),'as':'Trunk','attributes':['id',_0x1126('0x3'),'callerid',_0x1126('0x5')]},{'model':_0x1126('0x21'),'as':_0x1126('0x22'),'attributes':['id','name',_0x1126('0x23'),_0x1126('0x5')]},{'model':'Interval','as':'Interval','attributes':['id',_0x1126('0x3')],'include':[{'model':_0x1126('0x24'),'as':'Intervals','attributes':['id','name',_0x1126('0x25')]}]},{'model':'SquareProject','as':_0x1126('0x26'),'attributes':['id',_0x1126('0x3')]}]},'log':_0x1126('0x27')});};};
\ No newline at end of file
+var _0x1261=['Interval','interval','SquareProject','getCampaign','getCampaigns','Request','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','TrunkBackup','callerid'];(function(_0xd136c7,_0x25a52d){var _0x14e1c9=function(_0x33370d){while(--_0x33370d){_0xd136c7['push'](_0xd136c7['shift']());}};_0x14e1c9(++_0x25a52d);}(_0x1261,0x144));var _0x1126=function(_0x22d667,_0x4ab6f6){_0x22d667=_0x22d667-0x0;var _0xc8eba0=_0x1261[_0x22d667];return _0xc8eba0;};'use strict';var client=require('../client');exports[_0x1126('0x0')]=function(){return function(){return client[_0x1126('0x1')](_0x1126('0x2'),{'options':{'raw':![],'attributes':['id',_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x1126('0xa'),_0x1126('0xb'),'dialNoAnswerMaxRetry',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'dialDropRetryFrequency',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'dialMachineRetryFrequency',_0x1126('0x14'),'dialAgentRejectRetryFrequency','dialTimezone',_0x1126('0x15'),'dialAMDActive',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'dialOrderByScheduledAt','dialPrefix',_0x1126('0x1f'),_0x1126('0x20')],'include':[{'model':_0x1126('0x21'),'as':'Trunk','attributes':['id',_0x1126('0x3'),'callerid',_0x1126('0x5')]},{'model':_0x1126('0x21'),'as':_0x1126('0x22'),'attributes':['id','name',_0x1126('0x23'),_0x1126('0x5')]},{'model':'Interval','as':'Interval','attributes':['id',_0x1126('0x3')],'include':[{'model':_0x1126('0x24'),'as':'Intervals','attributes':['id','name',_0x1126('0x25')]}]},{'model':'SquareProject','as':_0x1126('0x26'),'attributes':['id',_0x1126('0x3')]}]},'log':_0x1126('0x27')});};};
\ No newline at end of file
index 6d634d9..74b886b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0db8=['GetCmContact','../client','CreateCmContact','getContacts','Request'];(function(_0x40b421,_0xc4fe32){var _0x41f435=function(_0x56748d){while(--_0x56748d){_0x40b421['push'](_0x40b421['shift']());}};_0x41f435(++_0xc4fe32);}(_0x0db8,0xba));var _0x80db=function(_0x573cb8,_0x71c6b4){_0x573cb8=_0x573cb8-0x0;var _0x1beb47=_0x0db8[_0x573cb8];return _0x1beb47;};'use strict';var client=require(_0x80db('0x0'));exports['createContact']=function(_0x19a921){return function(){return client['Request'](_0x80db('0x1'),{'body':_0x19a921,'log':'CreateCmContact'});};};exports[_0x80db('0x2')]=function(_0x46a044){return function(){return client[_0x80db('0x3')](_0x80db('0x4'),{'options':_0x46a044,'log':'GetCmContact'});};};
\ No newline at end of file
+var _0xb546=['GetCmContact','createContact','Request','getContacts'];(function(_0x1921cf,_0x1010ce){var _0x1d886b=function(_0x2e74fb){while(--_0x2e74fb){_0x1921cf['push'](_0x1921cf['shift']());}};_0x1d886b(++_0x1010ce);}(_0xb546,0x1ed));var _0x6b54=function(_0x395b58,_0x23518d){_0x395b58=_0x395b58-0x0;var _0x43c80a=_0xb546[_0x395b58];return _0x43c80a;};'use strict';var client=require('../client');exports[_0x6b54('0x0')]=function(_0x4ab6c7){return function(){return client[_0x6b54('0x1')]('CreateCmContact',{'body':_0x4ab6c7,'log':'CreateCmContact'});};};exports[_0x6b54('0x2')]=function(_0x3a265c){return function(){return client[_0x6b54('0x1')](_0x6b54('0x3'),{'options':_0x3a265c,'log':'GetCmContact'});};};
\ No newline at end of file
index 732d120..b7730a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc575=['GetCmHopper','CmContact','Contact','getCmHopper','UpdateCmHopper','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','VoiceQueueId','DestroyCmHopper','getContactDialer','GetContactDialer','DESC','scheduledat','getContactDialerIvr','format','priority','ASC','moveContactManagedDialer','campaign','queue','ContactId','ListId','CampaignId','MoveContactManagedDialer','CountReScheduled','countReScheduled','getContactPreview','Agent','VoiceQueue','Queue','name','unlockContact','getContactRecallMe','GetContactRecallMe','voicePause','db.CmHopper.UserId','../client','moment','Request'];(function(_0x40bffc,_0x3a45d7){var _0x3007e9=function(_0x4c8fda){while(--_0x4c8fda){_0x40bffc['push'](_0x40bffc['shift']());}};_0x3007e9(++_0x3a45d7);}(_0xc575,0x10e));var _0x5c57=function(_0x3d9dc2,_0x4d0f69){_0x3d9dc2=_0x3d9dc2-0x0;var _0x9f75a0=_0xc575[_0x3d9dc2];return _0x9f75a0;};'use strict';var client=require(_0x5c57('0x0'));var moment=require(_0x5c57('0x1'));var _=require('lodash');exports['getContacts']=function(_0x16aa1e,_0x2cdbae){return function(){return client[_0x5c57('0x2')](_0x5c57('0x3'),{'options':{'where':{'VoiceQueueId':_0x16aa1e},'include':[{'model':_0x5c57('0x4'),'as':_0x5c57('0x5')}],'limit':_0x2cdbae,'raw':![]},'log':_0x5c57('0x6')});};};exports['updateContacts']=function(_0x114eed,_0x4d5a0a,_0x1cdec7){return function(){return client['Request'](_0x5c57('0x7'),{'body':_0x114eed,'options':{'where':{'VoiceQueueId':_0x4d5a0a,'scheduledat':{'$lte':moment()['format'](_0x5c57('0x8'))}},'limit':_0x1cdec7},'log':'UpdateCmHopper'});};};exports[_0x5c57('0x9')]=function(_0x5cb32f){return function(){return client['Request'](_0x5c57('0x7'),{'body':_0x5cb32f,'options':{'where':{'ContactId':_0x5cb32f['ContactId'],'ListId':_0x5cb32f['ListId'],'VoiceQueueId':_0x5cb32f[_0x5c57('0xa')],'CampaignId':_0x5cb32f['CampaignId']}},'log':_0x5c57('0x9')});};};exports['destroyContact']=function(_0x41bd86,_0x9564e,_0x414678){return function(){return client[_0x5c57('0x2')](_0x5c57('0xb'),{'options':{'where':{'VoiceQueueId':_0x41bd86,'ListId':_0x9564e,'ContactId':_0x414678}},'log':_0x5c57('0xb')});};};exports[_0x5c57('0xc')]=function(_0x320171,_0x58d4a4,_0x1b8e4d,_0x288288){return function(){return client[_0x5c57('0x2')](_0x5c57('0xd'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x320171,'active':![],'scheduledat':{'$lte':moment()['format'](_0x5c57('0x8'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x58d4a4}}]},'order':[['priority',_0x5c57('0xe')],[_0x5c57('0xf'),_0x288288],['id','ASC']],'raw':!![],'limit':_0x1b8e4d},'log':_0x5c57('0xd')});};};exports[_0x5c57('0x10')]=function(_0x4132e7,_0x3b7e40,_0x2020b7){return function(){return client[_0x5c57('0x2')](_0x5c57('0xd'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x4132e7,'active':![],'scheduledat':{'$lte':moment()[_0x5c57('0x11')](_0x5c57('0x8'))}},'include':[{'model':_0x5c57('0x4'),'as':_0x5c57('0x5')}],'order':[[_0x5c57('0x12'),_0x5c57('0xe')],['scheduledat',_0x2020b7],['id',_0x5c57('0x13')]],'raw':!![],'limit':_0x3b7e40},'log':'GetContactDialerIvr'});};};exports[_0x5c57('0x14')]=function(_0x56f48e,_0x1d05ea){return function(){_0x56f48e[_0x5c57('0x15')]=_0x56f48e[_0x5c57('0x16')];return client[_0x5c57('0x2')]('MoveContactManagedDialer',{'body':_0x56f48e,'options':{'where':{'ContactId':_0x56f48e[_0x5c57('0x17')],'ListId':_0x56f48e[_0x5c57('0x18')],'VoiceQueueId':_0x56f48e[_0x5c57('0xa')],'CampaignId':_0x56f48e[_0x5c57('0x19')],'active':_0x1d05ea?undefined:!![]}},'log':_0x5c57('0x1a')});};};exports['countReScheduled']=function(_0x343dd9){return function(){return client['Request'](_0x5c57('0x1b'),{'options':{'where':{'VoiceQueueId':_0x343dd9['id']?_0x343dd9['id']||null:null}},'log':_0x5c57('0x1c')});};};exports[_0x5c57('0x1d')]=function(_0x4046c8){return function(){return client['Request']('GetCmHopperPreview',{'options':{'where':{'id':_0x4046c8},'include':[{'model':_0x5c57('0x4'),'as':'Contact'},{'model':'User','as':_0x5c57('0x1e'),'attributes':['id','name']},{'model':_0x5c57('0x1f'),'as':_0x5c57('0x20'),'attributes':['id',_0x5c57('0x21')]}],'raw':!![]},'log':'getCmHopper'});};};exports[_0x5c57('0x22')]=function(_0xcae928,_0x4302f0,_0x4589b6){return function(){return client[_0x5c57('0x2')]('UpdateCmHopper',{'body':_0xcae928,'options':{'where':{'id':_0x4302f0},'limit':_0x4589b6},'log':_0x5c57('0x7')});};};exports[_0x5c57('0x23')]=function(_0x29815b,_0x2b47c6){return function(){return client[_0x5c57('0x2')](_0x5c57('0x24'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x29815b,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x5c57('0x11')](_0x5c57('0x8'))},'UserId':{'$in':_0x2b47c6}},'order':[[_0x5c57('0x12'),_0x5c57('0xe')],[_0x5c57('0xf'),_0x5c57('0xe')],['id','ASC']],'include':[{'model':_0x5c57('0x4'),'as':_0x5c57('0x5')},{'model':'User','as':_0x5c57('0x1e'),'attributes':['id','name',_0x5c57('0x25')]}],'group':_0x5c57('0x26'),'raw':!![]},'log':_0x5c57('0xd')});};};
\ No newline at end of file
+var _0x858c=['GetCmHopperPreview','User','Agent','name','VoiceQueue','Queue','unlockContact','getContactRecallMe','GetContactRecallMe','voicePause','db.CmHopper.UserId','../client','moment','lodash','getContacts','GetCmHopper','CmContact','Contact','getCmHopper','updateContacts','Request','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','priority','DESC','scheduledat','GetContactDialer','getContactDialerIvr','ASC','GetContactDialerIvr','moveContactManagedDialer','queue','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview'];(function(_0x3cb30b,_0x504b3e){var _0x2ca717=function(_0x32a3d9){while(--_0x32a3d9){_0x3cb30b['push'](_0x3cb30b['shift']());}};_0x2ca717(++_0x504b3e);}(_0x858c,0xe7));var _0xc858=function(_0x16a889,_0xed3b66){_0x16a889=_0x16a889-0x0;var _0x38c98b=_0x858c[_0x16a889];return _0x38c98b;};'use strict';var client=require(_0xc858('0x0'));var moment=require(_0xc858('0x1'));var _=require(_0xc858('0x2'));exports[_0xc858('0x3')]=function(_0x262b00,_0x10016b){return function(){return client['Request'](_0xc858('0x4'),{'options':{'where':{'VoiceQueueId':_0x262b00},'include':[{'model':_0xc858('0x5'),'as':_0xc858('0x6')}],'limit':_0x10016b,'raw':![]},'log':_0xc858('0x7')});};};exports[_0xc858('0x8')]=function(_0x10bd96,_0x37173e,_0x37f0e9){return function(){return client[_0xc858('0x9')](_0xc858('0xa'),{'body':_0x10bd96,'options':{'where':{'VoiceQueueId':_0x37173e,'scheduledat':{'$lte':moment()[_0xc858('0xb')](_0xc858('0xc'))}},'limit':_0x37f0e9},'log':'UpdateCmHopper'});};};exports[_0xc858('0xd')]=function(_0xc07a98){return function(){return client[_0xc858('0x9')](_0xc858('0xa'),{'body':_0xc07a98,'options':{'where':{'ContactId':_0xc07a98[_0xc858('0xe')],'ListId':_0xc07a98[_0xc858('0xf')],'VoiceQueueId':_0xc07a98[_0xc858('0x10')],'CampaignId':_0xc07a98[_0xc858('0x11')]}},'log':_0xc858('0xd')});};};exports[_0xc858('0x12')]=function(_0x2d0978,_0x3d4e28,_0xcb14f3){return function(){return client[_0xc858('0x9')](_0xc858('0x13'),{'options':{'where':{'VoiceQueueId':_0x2d0978,'ListId':_0x3d4e28,'ContactId':_0xcb14f3}},'log':_0xc858('0x13')});};};exports['getContactDialer']=function(_0x5e3eb8,_0x5ca6e5,_0x350fac,_0x335bfe){return function(){return client['Request']('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x5e3eb8,'active':![],'scheduledat':{'$lte':moment()[_0xc858('0xb')]('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x5ca6e5}}]},'order':[[_0xc858('0x14'),_0xc858('0x15')],[_0xc858('0x16'),_0x335bfe],['id','ASC']],'raw':!![],'limit':_0x350fac},'log':_0xc858('0x17')});};};exports[_0xc858('0x18')]=function(_0x5cb81b,_0x4a5475,_0x1609d){return function(){return client[_0xc858('0x9')](_0xc858('0x17'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x5cb81b,'active':![],'scheduledat':{'$lte':moment()[_0xc858('0xb')]('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':_0xc858('0x5'),'as':_0xc858('0x6')}],'order':[[_0xc858('0x14'),_0xc858('0x15')],['scheduledat',_0x1609d],['id',_0xc858('0x19')]],'raw':!![],'limit':_0x4a5475},'log':_0xc858('0x1a')});};};exports[_0xc858('0x1b')]=function(_0x5c363d,_0x37be8a){return function(){_0x5c363d['campaign']=_0x5c363d[_0xc858('0x1c')];return client[_0xc858('0x9')](_0xc858('0x1d'),{'body':_0x5c363d,'options':{'where':{'ContactId':_0x5c363d[_0xc858('0xe')],'ListId':_0x5c363d[_0xc858('0xf')],'VoiceQueueId':_0x5c363d[_0xc858('0x10')],'CampaignId':_0x5c363d['CampaignId'],'active':_0x37be8a?undefined:!![]}},'log':_0xc858('0x1d')});};};exports[_0xc858('0x1e')]=function(_0x4d7f46){return function(){return client[_0xc858('0x9')](_0xc858('0x1f'),{'options':{'where':{'VoiceQueueId':_0x4d7f46['id']?_0x4d7f46['id']||null:null}},'log':_0xc858('0x1e')});};};exports[_0xc858('0x20')]=function(_0x44d3ce){return function(){return client[_0xc858('0x9')](_0xc858('0x21'),{'options':{'where':{'id':_0x44d3ce},'include':[{'model':_0xc858('0x5'),'as':_0xc858('0x6')},{'model':_0xc858('0x22'),'as':_0xc858('0x23'),'attributes':['id',_0xc858('0x24')]},{'model':_0xc858('0x25'),'as':_0xc858('0x26'),'attributes':['id','name']}],'raw':!![]},'log':_0xc858('0x7')});};};exports[_0xc858('0x27')]=function(_0x152164,_0x1af73f,_0x694cba){return function(){return client[_0xc858('0x9')]('UpdateCmHopper',{'body':_0x152164,'options':{'where':{'id':_0x1af73f},'limit':_0x694cba},'log':'UpdateCmHopper'});};};exports[_0xc858('0x28')]=function(_0x36e8f9,_0xf13668){return function(){return client[_0xc858('0x9')](_0xc858('0x29'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x36e8f9,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xc858('0xb')](_0xc858('0xc'))},'UserId':{'$in':_0xf13668}},'order':[[_0xc858('0x14'),'DESC'],['scheduledat',_0xc858('0x15')],['id',_0xc858('0x19')]],'include':[{'model':_0xc858('0x5'),'as':_0xc858('0x6')},{'model':'User','as':_0xc858('0x23'),'attributes':['id',_0xc858('0x24'),_0xc858('0x2a')]}],'group':_0xc858('0x2b'),'raw':!![]},'log':_0xc858('0x17')});};};
\ No newline at end of file
index c760fd1..18c3721 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf2f=['Contact','phone','checkIsBlackListIvr','CampaignId','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','GetCmHopperBlack'];(function(_0x30eaee,_0x5b02b5){var _0x4ee347=function(_0x5b293e){while(--_0x5b293e){_0x30eaee['push'](_0x30eaee['shift']());}};_0x4ee347(++_0x5b02b5);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x4593d7,_0x32ccb6){_0x4593d7=_0x4593d7-0x0;var _0x118060=_0xcf2f[_0x4593d7];return _0x118060;};'use strict';var client=require(_0xfcf2('0x0'));exports[_0xfcf2('0x1')]=function(_0xe6b3a5){return function(){return client[_0xfcf2('0x2')](_0xfcf2('0x3'),{'options':{'where':{'VoiceQueueId':_0xe6b3a5['VoiceQueueId'],'phone':_0xe6b3a5[_0xfcf2('0x4')][_0xfcf2('0x5')]},'raw':![]},'log':_0xfcf2('0x3')});};};exports[_0xfcf2('0x6')]=function(_0x179e60){return function(){return client[_0xfcf2('0x2')](_0xfcf2('0x3'),{'options':{'where':{'CampaignId':_0x179e60[_0xfcf2('0x7')],'phone':_0x179e60[_0xfcf2('0x4')][_0xfcf2('0x5')]},'raw':![]},'log':_0xfcf2('0x8')});};};
\ No newline at end of file
+var _0x0abf=['GetCmHopperBlackIvr','../client','Request','Contact','GetCmHopperBlack','checkIsBlackListIvr','CampaignId'];(function(_0x3c44c9,_0x5c2931){var _0x30eafe=function(_0x105fde){while(--_0x105fde){_0x3c44c9['push'](_0x3c44c9['shift']());}};_0x30eafe(++_0x5c2931);}(_0x0abf,0xe8));var _0xf0ab=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x0abf[_0x6c993a];return _0x27f547;};'use strict';var client=require(_0xf0ab('0x0'));exports['checkIsBlackList']=function(_0x4698fb){return function(){return client[_0xf0ab('0x1')]('GetCmHopperBlack',{'options':{'where':{'VoiceQueueId':_0x4698fb['VoiceQueueId'],'phone':_0x4698fb[_0xf0ab('0x2')]['phone']},'raw':![]},'log':_0xf0ab('0x3')});};};exports[_0xf0ab('0x4')]=function(_0x2efe43){return function(){return client[_0xf0ab('0x1')](_0xf0ab('0x3'),{'options':{'where':{'CampaignId':_0x2efe43[_0xf0ab('0x5')],'phone':_0x2efe43[_0xf0ab('0x2')]['phone']},'raw':![]},'log':_0xf0ab('0x6')});};};
\ No newline at end of file
index 65dba3b..ee77596 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59c5=['campaign','queue','Request','CreateCmHopperFinal','createContact'];(function(_0x52c9af,_0x423aa6){var _0x2ac55b=function(_0x1d1ac3){while(--_0x1d1ac3){_0x52c9af['push'](_0x52c9af['shift']());}};_0x2ac55b(++_0x423aa6);}(_0x59c5,0xd6));var _0x559c=function(_0x303e31,_0x68fc86){_0x303e31=_0x303e31-0x0;var _0x196956=_0x59c5[_0x303e31];return _0x196956;};'use strict';var client=require('../client');exports[_0x559c('0x0')]=function(_0xeb472c){return function(){_0xeb472c[_0x559c('0x1')]=_0xeb472c[_0x559c('0x2')];return client[_0x559c('0x3')](_0x559c('0x4'),{'body':_0xeb472c,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
+var _0xdc2c=['createContact','campaign','queue','CreateCmHopperFinal','../client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdc2c,0x95));var _0xcdc2=function(_0x4f034b,_0x4ae230){_0x4f034b=_0x4f034b-0x0;var _0xac374c=_0xdc2c[_0x4f034b];return _0xac374c;};'use strict';var client=require(_0xcdc2('0x0'));exports[_0xcdc2('0x1')]=function(_0x3b5852){return function(){_0x3b5852[_0xcdc2('0x2')]=_0x3b5852[_0xcdc2('0x3')];return client['Request']('CreateCmHopperFinal',{'body':_0x3b5852,'log':_0xcdc2('0x4')});};};
\ No newline at end of file
index fb87cd7..2222aa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb61b=['CreateCmHopperHistory','avgHandleTime','AvgHandleTime','minutes','YYYY-MM-DD\x20HH:mm:ss','format','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','endOf','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','moment','queue','Request'];(function(_0x57d6c3,_0x5ac8b8){var _0x4c101c=function(_0x445ef6){while(--_0x445ef6){_0x57d6c3['push'](_0x57d6c3['shift']());}};_0x4c101c(++_0x5ac8b8);}(_0xb61b,0xf9));var _0xbb61=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xb61b[_0x2dafbe];return _0x58a45a;};'use strict';var client=require('../client');var moment=require(_0xbb61('0x0'));exports['createHistory']=function(_0x532a01){return function(){_0x532a01['campaign']=_0x532a01[_0xbb61('0x1')];return client[_0xbb61('0x2')](_0xbb61('0x3'),{'body':_0x532a01,'log':_0xbb61('0x3')});};};exports[_0xbb61('0x4')]=function(_0x2e5d99){return function(){return client[_0xbb61('0x2')](_0xbb61('0x5'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x2e5d99,_0xbb61('0x6'))['format'](_0xbb61('0x7')),moment()[_0xbb61('0x8')](_0xbb61('0x7'))]}},'raw':![]},'log':_0xbb61('0x9')});};};exports[_0xbb61('0xa')]=function(_0x31aeaf){return function(){return client[_0xbb61('0x2')](_0xbb61('0xb'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xbb61('0xc')](_0xbb61('0xd'))['format'](_0xbb61('0x7')),moment()[_0xbb61('0xe')](_0xbb61('0xd'))[_0xbb61('0x8')](_0xbb61('0x7'))]},'campaigntype':_0xbb61('0x1')},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports[_0xbb61('0xf')]=function(_0x3c6afd){return function(){return client[_0xbb61('0x2')](_0xbb61('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xbb61('0xc')]('day')[_0xbb61('0x8')](_0xbb61('0x7')),moment()['endOf']('day')[_0xbb61('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0xbb61('0x11')},'raw':![]},'log':_0xbb61('0x10')});};};
\ No newline at end of file
+var _0xbb82=['campaign','queue','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','format','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','YYYY-MM-DD\x20HH:mm:ss','getCampaignHopperHistory','GetCampaignHopperHistory','endOf','ivr','../client','createHistory'];(function(_0x17cc6c,_0x22514f){var _0x2e1672=function(_0x1c2011){while(--_0x1c2011){_0x17cc6c['push'](_0x17cc6c['shift']());}};_0x2e1672(++_0x22514f);}(_0xbb82,0x12a));var _0x2bb8=function(_0x2e6dbf,_0x57dd06){_0x2e6dbf=_0x2e6dbf-0x0;var _0x2680e5=_0xbb82[_0x2e6dbf];return _0x2680e5;};'use strict';var client=require(_0x2bb8('0x0'));var moment=require('moment');exports[_0x2bb8('0x1')]=function(_0x5ac77a){return function(){_0x5ac77a[_0x2bb8('0x2')]=_0x5ac77a[_0x2bb8('0x3')];return client[_0x2bb8('0x4')](_0x2bb8('0x5'),{'body':_0x5ac77a,'log':_0x2bb8('0x5')});};};exports[_0x2bb8('0x6')]=function(_0x46a684){return function(){return client[_0x2bb8('0x4')](_0x2bb8('0x7'),{'options':{'where':{'endtime':{'$between':[moment()[_0x2bb8('0x8')](_0x46a684,'minutes')[_0x2bb8('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x2bb8('0x9')]('YYYY-MM-DD\x20HH:mm:ss')]}},'raw':![]},'log':_0x2bb8('0xa')});};};exports[_0x2bb8('0xb')]=function(_0x31ad6e){return function(){return client[_0x2bb8('0x4')](_0x2bb8('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x2bb8('0xd')](_0x2bb8('0xe'))[_0x2bb8('0x9')](_0x2bb8('0xf')),moment()['endOf'](_0x2bb8('0xe'))['format']('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x2bb8('0x3')},'raw':![]},'log':_0x2bb8('0xc')});};};exports[_0x2bb8('0x10')]=function(_0x16c10c){return function(){return client['Request'](_0x2bb8('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x2bb8('0xd')](_0x2bb8('0xe'))[_0x2bb8('0x9')](_0x2bb8('0xf')),moment()[_0x2bb8('0x12')](_0x2bb8('0xe'))[_0x2bb8('0x9')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x2bb8('0x13')},'raw':![]},'log':_0x2bb8('0x11')});};};
\ No newline at end of file
index ac65e40..5be80e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc00b=['name','ecm','headerinfo','localstationid','minrate','modem','faxdetect','tech','TrunkId','ListId','key','Trunk','callerid','getFaxAccount','notify','Request','NotifyFaxAccount','../client'];(function(_0x33d594,_0x437cb2){var _0x427c2f=function(_0xa75f14){while(--_0xa75f14){_0x33d594['push'](_0x33d594['shift']());}};_0x427c2f(++_0x437cb2);}(_0xc00b,0x1e5));var _0xbc00=function(_0x26e424,_0xfcf210){_0x26e424=_0x26e424-0x0;var _0x2c81d6=_0xc00b[_0x26e424];return _0x2c81d6;};'use strict';var client=require(_0xbc00('0x0'));exports['getFaxAccounts']=function(){return function(){return client['Request']('GetFaxAccount',{'options':{'raw':![],'attributes':['id',_0xbc00('0x1'),'description',_0xbc00('0x2'),_0xbc00('0x3'),_0xbc00('0x4'),_0xbc00('0x5'),'maxrate',_0xbc00('0x6'),'gateway',_0xbc00('0x7'),'t38timeout',_0xbc00('0x8'),_0xbc00('0x9'),_0xbc00('0xa'),_0xbc00('0xb')],'include':[{'model':_0xbc00('0xc'),'as':_0xbc00('0xc'),'attributes':['id','name',_0xbc00('0xd'),'active']}]},'log':_0xbc00('0xe')});};};exports[_0xbc00('0xf')]=function(_0x1e577f,_0x52706d){return client[_0xbc00('0x10')]('NotifyFaxAccount',{'account':{'id':_0x1e577f},'body':_0x52706d,'log':_0xbc00('0x11')});};
\ No newline at end of file
+var _0x16a2=['name','headerinfo','localstationid','minrate','maxrate','faxdetect','t38timeout','tech','ListId','key','Trunk','active','getFaxAccount','NotifyFaxAccount','../client','getFaxAccounts','Request','GetFaxAccount'];(function(_0x3e2f39,_0x52276d){var _0x1f915c=function(_0x2bbf27){while(--_0x2bbf27){_0x3e2f39['push'](_0x3e2f39['shift']());}};_0x1f915c(++_0x52276d);}(_0x16a2,0x1d0));var _0x216a=function(_0x870b62,_0x2143f9){_0x870b62=_0x870b62-0x0;var _0x2dcb39=_0x16a2[_0x870b62];return _0x2dcb39;};'use strict';var client=require(_0x216a('0x0'));exports[_0x216a('0x1')]=function(){return function(){return client[_0x216a('0x2')](_0x216a('0x3'),{'options':{'raw':![],'attributes':['id',_0x216a('0x4'),'description','ecm',_0x216a('0x5'),_0x216a('0x6'),_0x216a('0x7'),_0x216a('0x8'),'modem','gateway',_0x216a('0x9'),_0x216a('0xa'),_0x216a('0xb'),'TrunkId',_0x216a('0xc'),_0x216a('0xd')],'include':[{'model':_0x216a('0xe'),'as':_0x216a('0xe'),'attributes':['id','name','callerid',_0x216a('0xf')]}]},'log':_0x216a('0x10')});};};exports['notify']=function(_0x1af4e7,_0x329d32){return client[_0x216a('0x2')](_0x216a('0x11'),{'account':{'id':_0x1af4e7},'body':_0x329d32,'log':_0x216a('0x11')});};
\ No newline at end of file
index e67313d..7dbac16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6aa=['update','Request','UpdateFaxMessage','../client'];(function(_0x39cd3c,_0xa21102){var _0x47a0ae=function(_0x330b05){while(--_0x330b05){_0x39cd3c['push'](_0x39cd3c['shift']());}};_0x47a0ae(++_0xa21102);}(_0xe6aa,0x153));var _0xae6a=function(_0x3e155f,_0x586a3a){_0x3e155f=_0x3e155f-0x0;var _0x31ab06=_0xe6aa[_0x3e155f];return _0x31ab06;};'use strict';var client=require(_0xae6a('0x0'));exports[_0xae6a('0x1')]=function(_0x4f930b,_0x164b23){return client[_0xae6a('0x2')](_0xae6a('0x3'),{'body':_0x164b23,'options':{'where':{'AttachmentId':_0x4f930b}},'log':_0xae6a('0x3')});};
\ No newline at end of file
+var _0xbdfd=['UpdateFaxMessage','../client','update'];(function(_0x18252c,_0x98bf84){var _0x1369cb=function(_0x4b61f9){while(--_0x4b61f9){_0x18252c['push'](_0x18252c['shift']());}};_0x1369cb(++_0x98bf84);}(_0xbdfd,0x160));var _0xdbdf=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xbdfd[_0x321bb2];return _0x9c12ed;};'use strict';var client=require(_0xdbdf('0x0'));exports[_0xdbdf('0x1')]=function(_0x1fe4cb,_0x590e88){return client['Request']('UpdateFaxMessage',{'body':_0x590e88,'options':{'where':{'AttachmentId':_0x1fe4cb}},'log':_0xdbdf('0x2')});};
\ No newline at end of file
index e9b7516..cde32a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea1d=['Fields','nameField','Tags','Request','GetDeskAccount','name','username','password','type','serverUrl','Configurations','DeskField','Subjects','content','variableName','Variable','Descriptions','keyType','keyContent'];(function(_0x14f5c3,_0x1e3047){var _0x2ea070=function(_0x1c8cd4){while(--_0x1c8cd4){_0x14f5c3['push'](_0x14f5c3['shift']());}};_0x2ea070(++_0x1e3047);}(_0xea1d,0xae));var _0xdea1=function(_0x59bf78,_0x4f9959){_0x59bf78=_0x59bf78-0x0;var _0x112778=_0xea1d[_0x59bf78];return _0x112778;};'use strict';var client=require('../../client');exports['getDeskAccounts']=function(){return function(_0x1440c0){return client[_0xdea1('0x0')](_0xdea1('0x1'),{'options':{'raw':![],'attributes':['id',_0xdea1('0x2'),'description',_0xdea1('0x3'),_0xdea1('0x4'),'remoteUri','authType',_0xdea1('0x5'),_0xdea1('0x6')],'include':[{'model':'DeskConfiguration','as':_0xdea1('0x7'),'attributes':['id',_0xdea1('0x2')],'include':[{'model':_0xdea1('0x8'),'as':_0xdea1('0x9'),'attributes':['id',_0xdea1('0x5'),_0xdea1('0xa'),_0xdea1('0xb')],'include':[{'model':_0xdea1('0xc'),'as':'Variable','attributes':['id',_0xdea1('0x2')]}]},{'model':_0xdea1('0x8'),'as':_0xdea1('0xd'),'attributes':['id',_0xdea1('0x5'),'content','key',_0xdea1('0xe'),_0xdea1('0xf'),_0xdea1('0xb')],'include':[{'model':_0xdea1('0xc'),'as':_0xdea1('0xc'),'attributes':['id','name']}]},{'model':_0xdea1('0x8'),'as':_0xdea1('0x10'),'attributes':['id',_0xdea1('0x5'),'content','idField',_0xdea1('0x11'),'customField',_0xdea1('0xb')],'include':[{'model':'Variable','as':_0xdea1('0xc'),'attributes':['id',_0xdea1('0x2')]}]},{'model':'Tag','as':_0xdea1('0x12'),'attributes':['id','name']}]}]},'log':_0xdea1('0x1')});};};
\ No newline at end of file
+var _0x46d7=['Tags','../../client','getDeskAccounts','Request','GetDeskAccount','description','username','password','remoteUri','authType','type','serverUrl','DeskConfiguration','name','Subjects','content','variableName','Variable','DeskField','key','keyType','keyContent','idField','nameField','Tag'];(function(_0xbb4382,_0x11d0c9){var _0x49bee1=function(_0x22e00a){while(--_0x22e00a){_0xbb4382['push'](_0xbb4382['shift']());}};_0x49bee1(++_0x11d0c9);}(_0x46d7,0x97));var _0x746d=function(_0x28cb6e,_0x34d9f7){_0x28cb6e=_0x28cb6e-0x0;var _0x2b4119=_0x46d7[_0x28cb6e];return _0x2b4119;};'use strict';var client=require(_0x746d('0x0'));exports[_0x746d('0x1')]=function(){return function(_0x46ab35){return client[_0x746d('0x2')](_0x746d('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x746d('0x4'),_0x746d('0x5'),_0x746d('0x6'),_0x746d('0x7'),_0x746d('0x8'),_0x746d('0x9'),_0x746d('0xa')],'include':[{'model':_0x746d('0xb'),'as':'Configurations','attributes':['id',_0x746d('0xc')],'include':[{'model':'DeskField','as':_0x746d('0xd'),'attributes':['id',_0x746d('0x9'),_0x746d('0xe'),_0x746d('0xf')],'include':[{'model':_0x746d('0x10'),'as':_0x746d('0x10'),'attributes':['id',_0x746d('0xc')]}]},{'model':_0x746d('0x11'),'as':'Descriptions','attributes':['id',_0x746d('0x9'),_0x746d('0xe'),_0x746d('0x12'),_0x746d('0x13'),_0x746d('0x14'),_0x746d('0xf')],'include':[{'model':_0x746d('0x10'),'as':'Variable','attributes':['id','name']}]},{'model':_0x746d('0x11'),'as':'Fields','attributes':['id','type',_0x746d('0xe'),_0x746d('0x15'),_0x746d('0x16'),'customField',_0x746d('0xf')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0x746d('0x17'),'as':_0x746d('0x18'),'attributes':['id',_0x746d('0xc')]}]}]},'log':'GetDeskAccount'});};};
\ No newline at end of file
index 9476f6a..042b6a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f82=['Request','GetDynamics365Account','name','username','password','remoteUri','tenantId','clientId','clientSecret','description','ticketType','Dynamics365Field','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','idField','nameField','customField','../../client','getDynamics365Accounts'];(function(_0x56dd59,_0x116a82){var _0x1815cb=function(_0x144314){while(--_0x144314){_0x56dd59['push'](_0x56dd59['shift']());}};_0x1815cb(++_0x116a82);}(_0x8f82,0x80));var _0x28f8=function(_0x3f34aa,_0x571717){_0x3f34aa=_0x3f34aa-0x0;var _0x283488=_0x8f82[_0x3f34aa];return _0x283488;};'use strict';var client=require(_0x28f8('0x0'));exports[_0x28f8('0x1')]=function(){return function(_0x3f14e7){return client[_0x28f8('0x2')](_0x28f8('0x3'),{'options':{'raw':![],'attributes':['id',_0x28f8('0x4'),_0x28f8('0x5'),_0x28f8('0x6'),_0x28f8('0x7'),_0x28f8('0x8'),_0x28f8('0x9'),_0x28f8('0xa'),'serverUrl',_0x28f8('0xb')],'include':[{'model':'Dynamics365Configuration','as':'Configurations','attributes':['id','name',_0x28f8('0xc')],'include':[{'model':_0x28f8('0xd'),'as':_0x28f8('0xe'),'attributes':['id',_0x28f8('0xf'),_0x28f8('0x10'),_0x28f8('0x11')],'include':[{'model':_0x28f8('0x12'),'as':_0x28f8('0x12'),'attributes':['id',_0x28f8('0x4')]}]},{'model':_0x28f8('0xd'),'as':_0x28f8('0x13'),'attributes':['id',_0x28f8('0xf'),_0x28f8('0x10'),_0x28f8('0x14'),_0x28f8('0x15'),_0x28f8('0x16'),_0x28f8('0x11')],'include':[{'model':_0x28f8('0x12'),'as':_0x28f8('0x12'),'attributes':['id',_0x28f8('0x4')]}]},{'model':'Dynamics365Field','as':'Fields','attributes':['id',_0x28f8('0xf'),'content',_0x28f8('0x17'),_0x28f8('0x18'),_0x28f8('0x19'),'variableName'],'include':[{'model':_0x28f8('0x12'),'as':_0x28f8('0x12'),'attributes':['id',_0x28f8('0x4')]}]}]}]},'log':_0x28f8('0x3')});};};
\ No newline at end of file
+var _0x47c2=['name','Subjects','content','variableName','Variable','Descriptions','key','keyType','Dynamics365Field','Fields','type','idField','customField','Request','GetDynamics365Account','username','remoteUri','tenantId','serverUrl','description','Dynamics365Configuration','Configurations'];(function(_0x4af062,_0x56e9fb){var _0x5f570d=function(_0x4f1f2e){while(--_0x4f1f2e){_0x4af062['push'](_0x4af062['shift']());}};_0x5f570d(++_0x56e9fb);}(_0x47c2,0x65));var _0x247c=function(_0x5d9987,_0x3c9d0c){_0x5d9987=_0x5d9987-0x0;var _0x4eb5a4=_0x47c2[_0x5d9987];return _0x4eb5a4;};'use strict';var client=require('../../client');exports['getDynamics365Accounts']=function(){return function(_0xc3fef5){return client[_0x247c('0x0')](_0x247c('0x1'),{'options':{'raw':![],'attributes':['id','name',_0x247c('0x2'),'password',_0x247c('0x3'),_0x247c('0x4'),'clientId','clientSecret',_0x247c('0x5'),_0x247c('0x6')],'include':[{'model':_0x247c('0x7'),'as':_0x247c('0x8'),'attributes':['id',_0x247c('0x9'),'ticketType'],'include':[{'model':'Dynamics365Field','as':_0x247c('0xa'),'attributes':['id','type',_0x247c('0xb'),_0x247c('0xc')],'include':[{'model':'Variable','as':_0x247c('0xd'),'attributes':['id','name']}]},{'model':'Dynamics365Field','as':_0x247c('0xe'),'attributes':['id','type','content',_0x247c('0xf'),_0x247c('0x10'),'keyContent',_0x247c('0xc')],'include':[{'model':_0x247c('0xd'),'as':_0x247c('0xd'),'attributes':['id',_0x247c('0x9')]}]},{'model':_0x247c('0x11'),'as':_0x247c('0x12'),'attributes':['id',_0x247c('0x13'),_0x247c('0xb'),_0x247c('0x14'),'nameField',_0x247c('0x15'),_0x247c('0xc')],'include':[{'model':_0x247c('0xd'),'as':_0x247c('0xd'),'attributes':['id',_0x247c('0x9')]}]}]}]},'log':_0x247c('0x1')});};};
\ No newline at end of file
index 44d93dc..5efcfd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4639=['FreshdeskField','content','variableName','Variable','Descriptions','type','key','keyType','keyContent','Fields','idField','nameField','customField','../../client','Request','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','Configurations'];(function(_0x2555d0,_0x4150a6){var _0x3bb486=function(_0x1eb89f){while(--_0x1eb89f){_0x2555d0['push'](_0x2555d0['shift']());}};_0x3bb486(++_0x4150a6);}(_0x4639,0x115));var _0x9463=function(_0x37c006,_0x1f647a){_0x37c006=_0x37c006-0x0;var _0x3f306e=_0x4639[_0x37c006];return _0x3f306e;};'use strict';var client=require(_0x9463('0x0'));exports['getFreshdeskAccounts']=function(){return function(_0x5ea32f){return client[_0x9463('0x1')](_0x9463('0x2'),{'options':{'raw':![],'attributes':['id',_0x9463('0x3'),_0x9463('0x4'),_0x9463('0x5'),_0x9463('0x6'),_0x9463('0x7')],'include':[{'model':'FreshdeskConfiguration','as':_0x9463('0x8'),'attributes':['id',_0x9463('0x3')],'include':[{'model':'Tag','attributes':['id','name']},{'model':_0x9463('0x9'),'as':'Subjects','attributes':['id','type',_0x9463('0xa'),_0x9463('0xb')],'include':[{'model':_0x9463('0xc'),'as':'Variable','attributes':['id',_0x9463('0x3')]}]},{'model':_0x9463('0x9'),'as':_0x9463('0xd'),'attributes':['id',_0x9463('0xe'),_0x9463('0xa'),_0x9463('0xf'),_0x9463('0x10'),_0x9463('0x11'),_0x9463('0xb')],'include':[{'model':_0x9463('0xc'),'as':_0x9463('0xc'),'attributes':['id',_0x9463('0x3')]}]},{'model':_0x9463('0x9'),'as':_0x9463('0x12'),'attributes':['id',_0x9463('0xe'),_0x9463('0xa'),_0x9463('0x13'),_0x9463('0x14'),_0x9463('0x15'),'variableName'],'include':[{'model':_0x9463('0xc'),'as':'Variable','attributes':['id',_0x9463('0x3')]}]}]}]},'log':_0x9463('0x2')});};};
\ No newline at end of file
+var _0x515d=['key','keyType','keyContent','Fields','idField','nameField','customField','getFreshdeskAccounts','Request','GetFreshdeskAccount','name','username','apiKey','remoteUri','FreshdeskConfiguration','Tag','FreshdeskField','Subjects','type','variableName','Variable','Descriptions','content'];(function(_0x586f08,_0x1bd1ef){var _0x5d9ddb=function(_0x59dc21){while(--_0x59dc21){_0x586f08['push'](_0x586f08['shift']());}};_0x5d9ddb(++_0x1bd1ef);}(_0x515d,0x104));var _0xd515=function(_0x4c4531,_0x3ea416){_0x4c4531=_0x4c4531-0x0;var _0x57fea7=_0x515d[_0x4c4531];return _0x57fea7;};'use strict';var client=require('../../client');exports[_0xd515('0x0')]=function(){return function(_0x28ae67){return client[_0xd515('0x1')](_0xd515('0x2'),{'options':{'raw':![],'attributes':['id',_0xd515('0x3'),_0xd515('0x4'),_0xd515('0x5'),_0xd515('0x6'),'serverUrl'],'include':[{'model':_0xd515('0x7'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0xd515('0x8'),'attributes':['id',_0xd515('0x3')]},{'model':_0xd515('0x9'),'as':_0xd515('0xa'),'attributes':['id',_0xd515('0xb'),'content',_0xd515('0xc')],'include':[{'model':_0xd515('0xd'),'as':_0xd515('0xd'),'attributes':['id',_0xd515('0x3')]}]},{'model':_0xd515('0x9'),'as':_0xd515('0xe'),'attributes':['id','type',_0xd515('0xf'),_0xd515('0x10'),_0xd515('0x11'),_0xd515('0x12'),'variableName'],'include':[{'model':_0xd515('0xd'),'as':_0xd515('0xd'),'attributes':['id',_0xd515('0x3')]}]},{'model':_0xd515('0x9'),'as':_0xd515('0x13'),'attributes':['id',_0xd515('0xb'),_0xd515('0xf'),_0xd515('0x14'),_0xd515('0x15'),_0xd515('0x16'),_0xd515('0xc')],'include':[{'model':_0xd515('0xd'),'as':_0xd515('0xd'),'attributes':['id','name']}]}]}]},'log':_0xd515('0x2')});};};
\ No newline at end of file
index 03683ff..f2172e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1224=['type','content','variableName','Variable','Descriptions','key','keyType','keyContent','GetFreshsalesccount','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','apiKey','remoteUri','serverUrl','Configurations','FreshsalesField','Subjects'];(function(_0x37e845,_0x219f9f){var _0x59e55b=function(_0x5dc6c8){while(--_0x5dc6c8){_0x37e845['push'](_0x37e845['shift']());}};_0x59e55b(++_0x219f9f);}(_0x1224,0x10d));var _0x4122=function(_0x23d2a0,_0x516174){_0x23d2a0=_0x23d2a0-0x0;var _0x409e80=_0x1224[_0x23d2a0];return _0x409e80;};'use strict';var client=require(_0x4122('0x0'));exports[_0x4122('0x1')]=function(){return function(_0x23c391){return client[_0x4122('0x2')](_0x4122('0x3'),{'options':{'raw':![],'attributes':['id',_0x4122('0x4'),'username',_0x4122('0x5'),_0x4122('0x6'),_0x4122('0x7')],'include':[{'model':'FreshsalesConfiguration','as':_0x4122('0x8'),'attributes':['id',_0x4122('0x4')],'include':[{'model':_0x4122('0x9'),'as':_0x4122('0xa'),'attributes':['id',_0x4122('0xb'),_0x4122('0xc'),_0x4122('0xd')],'include':[{'model':_0x4122('0xe'),'as':_0x4122('0xe'),'attributes':['id',_0x4122('0x4')]}]},{'model':_0x4122('0x9'),'as':_0x4122('0xf'),'attributes':['id',_0x4122('0xb'),_0x4122('0xc'),_0x4122('0x10'),_0x4122('0x11'),_0x4122('0x12'),_0x4122('0xd')],'include':[{'model':_0x4122('0xe'),'as':_0x4122('0xe'),'attributes':['id',_0x4122('0x4')]}]}]}]},'log':_0x4122('0x13')});};};
\ No newline at end of file
+var _0xe714=['GetFreshsalesAccount','name','apiKey','serverUrl','FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','content','variableName','Variable','Descriptions','type','key','keyType','keyContent','GetFreshsalesccount','../../client','Request'];(function(_0x45cb89,_0x99520e){var _0x5948c1=function(_0x4c81c3){while(--_0x4c81c3){_0x45cb89['push'](_0x45cb89['shift']());}};_0x5948c1(++_0x99520e);}(_0xe714,0xe2));var _0x4e71=function(_0x49b2c3,_0x1b3f10){_0x49b2c3=_0x49b2c3-0x0;var _0x219683=_0xe714[_0x49b2c3];return _0x219683;};'use strict';var client=require(_0x4e71('0x0'));exports['getFreshsalesAccounts']=function(){return function(_0x36da97){return client[_0x4e71('0x1')](_0x4e71('0x2'),{'options':{'raw':![],'attributes':['id',_0x4e71('0x3'),'username',_0x4e71('0x4'),'remoteUri',_0x4e71('0x5')],'include':[{'model':_0x4e71('0x6'),'as':_0x4e71('0x7'),'attributes':['id',_0x4e71('0x3')],'include':[{'model':_0x4e71('0x8'),'as':_0x4e71('0x9'),'attributes':['id','type',_0x4e71('0xa'),_0x4e71('0xb')],'include':[{'model':_0x4e71('0xc'),'as':'Variable','attributes':['id',_0x4e71('0x3')]}]},{'model':'FreshsalesField','as':_0x4e71('0xd'),'attributes':['id',_0x4e71('0xe'),_0x4e71('0xa'),_0x4e71('0xf'),_0x4e71('0x10'),_0x4e71('0x11'),_0x4e71('0xb')],'include':[{'model':_0x4e71('0xc'),'as':'Variable','attributes':['id',_0x4e71('0x3')]}]}]}]},'log':_0x4e71('0x12')});};};
\ No newline at end of file
index 8d9c19f..18c708d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30d6=['serverUrl','SalesforceConfiguration','Configurations','ticketType','leadId','additionalSearchAccount','additionalSearchContact','SalesforceField','Subjects','Variable','Descriptions','Fields','../../client','getSalesforceAccounts','Request','name','username','password','clientSecret','securityToken'];(function(_0x262f54,_0x32cfb7){var _0x3afec0=function(_0x505dc9){while(--_0x505dc9){_0x262f54['push'](_0x262f54['shift']());}};_0x3afec0(++_0x32cfb7);}(_0x30d6,0x1b0));var _0x630d=function(_0x1cd037,_0x4d368f){_0x1cd037=_0x1cd037-0x0;var _0x51f3b8=_0x30d6[_0x1cd037];return _0x51f3b8;};'use strict';var client=require(_0x630d('0x0'));exports[_0x630d('0x1')]=function(){return function(_0x5a1a5d){return client[_0x630d('0x2')]('GetSalesforceAccount',{'options':{'raw':![],'attributes':['id',_0x630d('0x3'),_0x630d('0x4'),_0x630d('0x5'),'remoteUri','clientId',_0x630d('0x6'),_0x630d('0x7'),_0x630d('0x8'),'type'],'include':[{'model':_0x630d('0x9'),'as':_0x630d('0xa'),'attributes':['id',_0x630d('0x3'),'moduleSearch','moduleCreate',_0x630d('0xb'),_0x630d('0xc'),_0x630d('0xd'),_0x630d('0xe'),'additionalSearchLead'],'include':[{'model':_0x630d('0xf'),'as':_0x630d('0x10'),'include':[{'model':_0x630d('0x11'),'as':_0x630d('0x11'),'attributes':['id',_0x630d('0x3')]}]},{'model':_0x630d('0xf'),'as':_0x630d('0x12'),'include':[{'model':_0x630d('0x11'),'as':_0x630d('0x11'),'attributes':['id',_0x630d('0x3')]}]},{'model':'SalesforceField','as':_0x630d('0x13'),'include':[{'model':'Variable','as':_0x630d('0x11'),'attributes':['id',_0x630d('0x3')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
+var _0xceed=['GetSalesforceAccount','name','username','password','remoteUri','clientId','clientSecret','securityToken','type','SalesforceConfiguration','Configurations','moduleSearch','ticketType','leadId','additionalSearchContact','additionalSearchLead','SalesforceField','Variable','../../client','Request'];(function(_0xcfb0a5,_0x488528){var _0x422714=function(_0x329fcc){while(--_0x329fcc){_0xcfb0a5['push'](_0xcfb0a5['shift']());}};_0x422714(++_0x488528);}(_0xceed,0x76));var _0xdcee=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0xceed[_0x164eca];return _0x2ce562;};'use strict';var client=require(_0xdcee('0x0'));exports['getSalesforceAccounts']=function(){return function(_0x3957d5){return client[_0xdcee('0x1')](_0xdcee('0x2'),{'options':{'raw':![],'attributes':['id',_0xdcee('0x3'),_0xdcee('0x4'),_0xdcee('0x5'),_0xdcee('0x6'),_0xdcee('0x7'),_0xdcee('0x8'),_0xdcee('0x9'),'serverUrl',_0xdcee('0xa')],'include':[{'model':_0xdcee('0xb'),'as':_0xdcee('0xc'),'attributes':['id','name',_0xdcee('0xd'),'moduleCreate',_0xdcee('0xe'),_0xdcee('0xf'),'additionalSearchAccount',_0xdcee('0x10'),_0xdcee('0x11')],'include':[{'model':_0xdcee('0x12'),'as':'Subjects','include':[{'model':'Variable','as':_0xdcee('0x13'),'attributes':['id',_0xdcee('0x3')]}]},{'model':_0xdcee('0x12'),'as':'Descriptions','include':[{'model':_0xdcee('0x13'),'as':_0xdcee('0x13'),'attributes':['id',_0xdcee('0x3')]}]},{'model':'SalesforceField','as':'Fields','include':[{'model':_0xdcee('0x13'),'as':'Variable','attributes':['id',_0xdcee('0x3')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
index 4b8d34e..7ffaf0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['variableName','GetServicenowkAccount','../../client','Request','GetServicenowAccount','name','description','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','ServicenowField','Subjects','type','Variable','Descriptions','key','keyContent','content','idField','nameField'];(function(_0xc9df8b,_0x21744d){var _0x35ca5d=function(_0x120ce3){while(--_0x120ce3){_0xc9df8b['push'](_0xc9df8b['shift']());}};_0x35ca5d(++_0x21744d);}(_0x326f,0xd1));var _0xf326=function(_0x853bb9,_0x373749){_0x853bb9=_0x853bb9-0x0;var _0x140bd3=_0x326f[_0x853bb9];return _0x140bd3;};'use strict';var client=require(_0xf326('0x0'));exports['getServicenowAccounts']=function(){return function(_0x5452cc){return client[_0xf326('0x1')](_0xf326('0x2'),{'options':{'raw':![],'attributes':['id',_0xf326('0x3'),_0xf326('0x4'),_0xf326('0x5'),_0xf326('0x6'),_0xf326('0x7'),_0xf326('0x8'),_0xf326('0x9')],'include':[{'model':_0xf326('0xa'),'as':'Configurations','attributes':['id',_0xf326('0x3')],'include':[{'model':_0xf326('0xb'),'as':_0xf326('0xc'),'attributes':['id',_0xf326('0xd'),'content','variableName'],'include':[{'model':'Variable','as':_0xf326('0xe'),'attributes':['id',_0xf326('0x3')]}]},{'model':_0xf326('0xb'),'as':_0xf326('0xf'),'attributes':['id',_0xf326('0xd'),'content',_0xf326('0x10'),'keyType',_0xf326('0x11'),'variableName'],'include':[{'model':_0xf326('0xe'),'as':'Variable','attributes':['id',_0xf326('0x3')]}]},{'model':_0xf326('0xb'),'as':'Fields','attributes':['id',_0xf326('0xd'),_0xf326('0x12'),_0xf326('0x13'),_0xf326('0x14'),'customField',_0xf326('0x15')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xf326('0x3')]}]}]}]},'log':_0xf326('0x16')});};};
\ No newline at end of file
+var _0x524e=['name','description','username','password','email','remoteUri','serverUrl','Configurations','ServicenowField','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','nameField','Request','GetServicenowAccount'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x524e,0x15e));var _0xe524=function(_0x34bd83,_0x25497e){_0x34bd83=_0x34bd83-0x0;var _0x54f2c3=_0x524e[_0x34bd83];return _0x54f2c3;};'use strict';var client=require('../../client');exports['getServicenowAccounts']=function(){return function(_0x353d8a){return client[_0xe524('0x0')](_0xe524('0x1'),{'options':{'raw':![],'attributes':['id',_0xe524('0x2'),_0xe524('0x3'),_0xe524('0x4'),_0xe524('0x5'),_0xe524('0x6'),_0xe524('0x7'),_0xe524('0x8')],'include':[{'model':'ServicenowConfiguration','as':_0xe524('0x9'),'attributes':['id',_0xe524('0x2')],'include':[{'model':_0xe524('0xa'),'as':'Subjects','attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0xd')],'include':[{'model':_0xe524('0xe'),'as':_0xe524('0xe'),'attributes':['id',_0xe524('0x2')]}]},{'model':_0xe524('0xa'),'as':_0xe524('0xf'),'attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0x10'),_0xe524('0x11'),_0xe524('0x12'),_0xe524('0xd')],'include':[{'model':_0xe524('0xe'),'as':_0xe524('0xe'),'attributes':['id','name']}]},{'model':'ServicenowField','as':_0xe524('0x13'),'attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0x14'),_0xe524('0x15'),'customField',_0xe524('0xd')],'include':[{'model':'Variable','as':_0xe524('0xe'),'attributes':['id',_0xe524('0x2')]}]}]}]},'log':'GetServicenowkAccount'});};};
\ No newline at end of file
index 634548c..08bc471 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66fa=['password','remoteUri','serverUrl','SugarcrmField','Subjects','type','content','Variable','Descriptions','keyType','keyContent','Fields','customField','../../client','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username'];(function(_0x183fdb,_0x288b39){var _0x1c2e04=function(_0x17b84f){while(--_0x17b84f){_0x183fdb['push'](_0x183fdb['shift']());}};_0x1c2e04(++_0x288b39);}(_0x66fa,0x117));var _0xa66f=function(_0x1a8ce5,_0x2cf16a){_0x1a8ce5=_0x1a8ce5-0x0;var _0x2ea359=_0x66fa[_0x1a8ce5];return _0x2ea359;};'use strict';var client=require(_0xa66f('0x0'));exports[_0xa66f('0x1')]=function(){return function(_0x52947a){return client[_0xa66f('0x2')](_0xa66f('0x3'),{'options':{'raw':![],'attributes':['id',_0xa66f('0x4'),_0xa66f('0x5'),_0xa66f('0x6'),_0xa66f('0x7'),_0xa66f('0x8')],'include':[{'model':'SugarcrmConfiguration','as':'Configurations','attributes':['id',_0xa66f('0x4')],'include':[{'model':_0xa66f('0x9'),'as':_0xa66f('0xa'),'attributes':['id',_0xa66f('0xb'),_0xa66f('0xc'),'variableName'],'include':[{'model':_0xa66f('0xd'),'as':'Variable','attributes':['id',_0xa66f('0x4')]}]},{'model':'SugarcrmField','as':_0xa66f('0xe'),'attributes':['id','type','content','key',_0xa66f('0xf'),_0xa66f('0x10'),'variableName'],'include':[{'model':_0xa66f('0xd'),'as':'Variable','attributes':['id',_0xa66f('0x4')]}]},{'model':'SugarcrmField','as':_0xa66f('0x11'),'attributes':['id',_0xa66f('0xb'),_0xa66f('0xc'),'idField','nameField',_0xa66f('0x12'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xa66f('0x4')]}]}]}]},'log':_0xa66f('0x3')});};};
\ No newline at end of file
+var _0x14a0=['variableName','key','keyContent','Variable','SugarcrmField','Fields','idField','nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','SugarcrmConfiguration','Configurations','type','content'];(function(_0x1d558c,_0x1e497c){var _0x15767d=function(_0x26326d){while(--_0x26326d){_0x1d558c['push'](_0x1d558c['shift']());}};_0x15767d(++_0x1e497c);}(_0x14a0,0x8e));var _0x014a=function(_0x11d161,_0x34e5b8){_0x11d161=_0x11d161-0x0;var _0x17eaec=_0x14a0[_0x11d161];return _0x17eaec;};'use strict';var client=require('../../client');exports[_0x014a('0x0')]=function(){return function(_0x451138){return client[_0x014a('0x1')](_0x014a('0x2'),{'options':{'raw':![],'attributes':['id',_0x014a('0x3'),_0x014a('0x4'),_0x014a('0x5'),'remoteUri','serverUrl'],'include':[{'model':_0x014a('0x6'),'as':_0x014a('0x7'),'attributes':['id',_0x014a('0x3')],'include':[{'model':'SugarcrmField','as':'Subjects','attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x014a('0x3')]}]},{'model':'SugarcrmField','as':'Descriptions','attributes':['id','type','content',_0x014a('0xb'),'keyType',_0x014a('0xc'),_0x014a('0xa')],'include':[{'model':'Variable','as':_0x014a('0xd'),'attributes':['id',_0x014a('0x3')]}]},{'model':_0x014a('0xe'),'as':_0x014a('0xf'),'attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0x10'),_0x014a('0x11'),_0x014a('0x12'),_0x014a('0xa')],'include':[{'model':_0x014a('0xd'),'as':_0x014a('0xd'),'attributes':['id','name']}]}]}]},'log':_0x014a('0x2')});};};
\ No newline at end of file
index cc380d4..32c4813 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb846=['content','Variable','Descriptions','key','variableName','Fields','idField','customField','../../client','GetVtigerAccount','name','description','accessKey','serverUrl','VtigerConfiguration','VtigerField','Subjects','type'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xb846,0xe0));var _0x6b84=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xb846[_0x21a9d9];return _0x46adce;};'use strict';var client=require(_0x6b84('0x0'));exports['getVtigerAccounts']=function(){return function(_0x3f4e08){return client['Request'](_0x6b84('0x1'),{'options':{'raw':![],'attributes':['id',_0x6b84('0x2'),_0x6b84('0x3'),'username',_0x6b84('0x4'),'remoteUri',_0x6b84('0x5')],'include':[{'model':_0x6b84('0x6'),'as':'Configurations','attributes':['id',_0x6b84('0x2')],'include':[{'model':_0x6b84('0x7'),'as':_0x6b84('0x8'),'attributes':['id',_0x6b84('0x9'),_0x6b84('0xa'),'variableName'],'include':[{'model':'Variable','as':_0x6b84('0xb'),'attributes':['id',_0x6b84('0x2')]}]},{'model':_0x6b84('0x7'),'as':_0x6b84('0xc'),'attributes':['id',_0x6b84('0x9'),_0x6b84('0xa'),_0x6b84('0xd'),'keyType','keyContent',_0x6b84('0xe')],'include':[{'model':_0x6b84('0xb'),'as':'Variable','attributes':['id',_0x6b84('0x2')]}]},{'model':'VtigerField','as':_0x6b84('0xf'),'attributes':['id',_0x6b84('0x9'),_0x6b84('0xa'),_0x6b84('0x10'),'nameField',_0x6b84('0x11'),_0x6b84('0xe')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x6b84('0x2')]}]}]}]},'log':_0x6b84('0x1')});};};
\ No newline at end of file
+var _0xf3bf=['serverUrl','VtigerConfiguration','Configurations','name','Subjects','type','content','variableName','Variable','VtigerField','Descriptions','keyContent','Fields','idField','nameField','customField','../../client','getVtigerAccounts','Request','GetVtigerAccount','username','accessKey'];(function(_0x837dad,_0x1d9098){var _0x1d62d3=function(_0x40b7c1){while(--_0x40b7c1){_0x837dad['push'](_0x837dad['shift']());}};_0x1d62d3(++_0x1d9098);}(_0xf3bf,0x19c));var _0xff3b=function(_0x5ee4c8,_0x311023){_0x5ee4c8=_0x5ee4c8-0x0;var _0x4a8fa9=_0xf3bf[_0x5ee4c8];return _0x4a8fa9;};'use strict';var client=require(_0xff3b('0x0'));exports[_0xff3b('0x1')]=function(){return function(_0x4c93af){return client[_0xff3b('0x2')](_0xff3b('0x3'),{'options':{'raw':![],'attributes':['id','name','description',_0xff3b('0x4'),_0xff3b('0x5'),'remoteUri',_0xff3b('0x6')],'include':[{'model':_0xff3b('0x7'),'as':_0xff3b('0x8'),'attributes':['id',_0xff3b('0x9')],'include':[{'model':'VtigerField','as':_0xff3b('0xa'),'attributes':['id',_0xff3b('0xb'),_0xff3b('0xc'),_0xff3b('0xd')],'include':[{'model':_0xff3b('0xe'),'as':_0xff3b('0xe'),'attributes':['id',_0xff3b('0x9')]}]},{'model':_0xff3b('0xf'),'as':_0xff3b('0x10'),'attributes':['id',_0xff3b('0xb'),_0xff3b('0xc'),'key','keyType',_0xff3b('0x11'),_0xff3b('0xd')],'include':[{'model':_0xff3b('0xe'),'as':_0xff3b('0xe'),'attributes':['id',_0xff3b('0x9')]}]},{'model':_0xff3b('0xf'),'as':_0xff3b('0x12'),'attributes':['id','type',_0xff3b('0xc'),_0xff3b('0x13'),_0xff3b('0x14'),_0xff3b('0x15'),_0xff3b('0xd')],'include':[{'model':_0xff3b('0xe'),'as':_0xff3b('0xe'),'attributes':['id',_0xff3b('0x9')]}]}]}]},'log':_0xff3b('0x3')});};};
\ No newline at end of file
index c73b50b..a518a6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9af6=['username','password','token','authType','type','Configurations','ZendeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','nameField','customField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name'];(function(_0x3b0afc,_0xc12d7){var _0x82c35c=function(_0xe20ec){while(--_0xe20ec){_0x3b0afc['push'](_0x3b0afc['shift']());}};_0x82c35c(++_0xc12d7);}(_0x9af6,0x11b));var _0x69af=function(_0x247270,_0x3cb3b5){_0x247270=_0x247270-0x0;var _0x4d49a3=_0x9af6[_0x247270];return _0x4d49a3;};'use strict';var client=require(_0x69af('0x0'));exports[_0x69af('0x1')]=function(){return function(_0x143e12){return client[_0x69af('0x2')](_0x69af('0x3'),{'options':{'raw':![],'attributes':['id',_0x69af('0x4'),_0x69af('0x5'),_0x69af('0x6'),_0x69af('0x7'),'remoteUri',_0x69af('0x8'),'serverUrl',_0x69af('0x9')],'include':[{'model':'ZendeskConfiguration','as':_0x69af('0xa'),'attributes':['id',_0x69af('0x4')],'include':[{'model':'Tag','attributes':['id',_0x69af('0x4')]},{'model':_0x69af('0xb'),'as':_0x69af('0xc'),'attributes':['id',_0x69af('0x9'),_0x69af('0xd'),_0x69af('0xe')],'include':[{'model':_0x69af('0xf'),'as':_0x69af('0xf'),'attributes':['id',_0x69af('0x4')]}]},{'model':_0x69af('0xb'),'as':_0x69af('0x10'),'attributes':['id',_0x69af('0x9'),_0x69af('0xd'),_0x69af('0x11'),_0x69af('0x12'),_0x69af('0x13'),_0x69af('0xe')],'include':[{'model':_0x69af('0xf'),'as':'Variable','attributes':['id',_0x69af('0x4')]}]},{'model':'ZendeskField','as':_0x69af('0x14'),'attributes':['id',_0x69af('0x9'),'content',_0x69af('0x15'),_0x69af('0x16'),_0x69af('0x17'),_0x69af('0xe')],'include':[{'model':_0x69af('0xf'),'as':'Variable','attributes':['id',_0x69af('0x4')]}]}]}]},'log':_0x69af('0x3')});};};
\ No newline at end of file
+var _0xb353=['nameField','customField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','username','token','remoteUri','authType','serverUrl','Configurations','Tag','ZendeskField','Subjects','content','variableName','Variable','Descriptions','type','key','keyContent','Fields'];(function(_0x4f11cb,_0x14e174){var _0x491488=function(_0x2904a9){while(--_0x2904a9){_0x4f11cb['push'](_0x4f11cb['shift']());}};_0x491488(++_0x14e174);}(_0xb353,0x7a));var _0x3b35=function(_0x5582d4,_0x2ea415){_0x5582d4=_0x5582d4-0x0;var _0x2bf5b2=_0xb353[_0x5582d4];return _0x2bf5b2;};'use strict';var client=require(_0x3b35('0x0'));exports[_0x3b35('0x1')]=function(){return function(_0x50081f){return client[_0x3b35('0x2')](_0x3b35('0x3'),{'options':{'raw':![],'attributes':['id',_0x3b35('0x4'),_0x3b35('0x5'),'password',_0x3b35('0x6'),_0x3b35('0x7'),_0x3b35('0x8'),_0x3b35('0x9'),'type'],'include':[{'model':'ZendeskConfiguration','as':_0x3b35('0xa'),'attributes':['id','name'],'include':[{'model':_0x3b35('0xb'),'attributes':['id',_0x3b35('0x4')]},{'model':_0x3b35('0xc'),'as':_0x3b35('0xd'),'attributes':['id','type',_0x3b35('0xe'),_0x3b35('0xf')],'include':[{'model':_0x3b35('0x10'),'as':_0x3b35('0x10'),'attributes':['id','name']}]},{'model':_0x3b35('0xc'),'as':_0x3b35('0x11'),'attributes':['id',_0x3b35('0x12'),_0x3b35('0xe'),_0x3b35('0x13'),'keyType',_0x3b35('0x14'),_0x3b35('0xf')],'include':[{'model':_0x3b35('0x10'),'as':'Variable','attributes':['id',_0x3b35('0x4')]}]},{'model':_0x3b35('0xc'),'as':_0x3b35('0x15'),'attributes':['id',_0x3b35('0x12'),_0x3b35('0xe'),'idField',_0x3b35('0x16'),_0x3b35('0x17'),_0x3b35('0xf')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x3b35('0x4')]}]}]}]},'log':_0x3b35('0x3')});};};
\ No newline at end of file
index 3cd8609..01d0cc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c1a=['Variable','ZohoField','Descriptions','key','keyContent','variableName','customField','GetZohoAccount','../../client','getZohoAccounts','Request','name','description','zone','clientId','serverUrl','refreshToken','ZohoConfiguration','moduleCreate','moduleSearch','Subjects','type','content'];(function(_0x1bd985,_0x4e3b7d){var _0x52df6a=function(_0x178ad0){while(--_0x178ad0){_0x1bd985['push'](_0x1bd985['shift']());}};_0x52df6a(++_0x4e3b7d);}(_0x7c1a,0x92));var _0xa7c1=function(_0xb541d2,_0x26d2f5){_0xb541d2=_0xb541d2-0x0;var _0x153c13=_0x7c1a[_0xb541d2];return _0x153c13;};'use strict';var client=require(_0xa7c1('0x0'));exports[_0xa7c1('0x1')]=function(){return function(_0x1e68d5){return client[_0xa7c1('0x2')]('GetZohoAccount',{'options':{'raw':![],'attributes':['id',_0xa7c1('0x3'),_0xa7c1('0x4'),'host',_0xa7c1('0x5'),_0xa7c1('0x6'),'clientSecret',_0xa7c1('0x7'),'code',_0xa7c1('0x8')],'include':[{'model':_0xa7c1('0x9'),'as':'Configurations','attributes':['id',_0xa7c1('0x3'),_0xa7c1('0xa'),_0xa7c1('0xb'),_0xa7c1('0x4')],'include':[{'model':'ZohoField','as':_0xa7c1('0xc'),'attributes':['id',_0xa7c1('0xd'),_0xa7c1('0xe'),'variableName'],'include':[{'model':_0xa7c1('0xf'),'as':'Variable','attributes':['id',_0xa7c1('0x3')]}]},{'model':_0xa7c1('0x10'),'as':_0xa7c1('0x11'),'attributes':['id','type',_0xa7c1('0xe'),_0xa7c1('0x12'),'keyType',_0xa7c1('0x13'),_0xa7c1('0x14')],'include':[{'model':_0xa7c1('0xf'),'as':'Variable','attributes':['id',_0xa7c1('0x3')]}]},{'model':_0xa7c1('0x10'),'as':'Fields','attributes':['id',_0xa7c1('0xd'),_0xa7c1('0xe'),'idField','nameField',_0xa7c1('0x15'),_0xa7c1('0x14')],'include':[{'model':_0xa7c1('0xf'),'as':'Variable','attributes':['id',_0xa7c1('0x3')]}]}]}]},'log':_0xa7c1('0x16')});};};
\ No newline at end of file
+var _0x8aac=['getZohoAccounts','Request','GetZohoAccount','name','description','host','zone','clientId','serverUrl','code','refreshToken','ZohoConfiguration','moduleCreate','moduleSearch','ZohoField','type','content','variableName','Variable','Descriptions','key','keyContent','Fields','idField','nameField','customField','../../client'];(function(_0x1041dc,_0x5b7bbd){var _0x5eea8a=function(_0x5cf4df){while(--_0x5cf4df){_0x1041dc['push'](_0x1041dc['shift']());}};_0x5eea8a(++_0x5b7bbd);}(_0x8aac,0xd7));var _0xc8aa=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8aac[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xc8aa('0x0'));exports[_0xc8aa('0x1')]=function(){return function(_0x4bea00){return client[_0xc8aa('0x2')](_0xc8aa('0x3'),{'options':{'raw':![],'attributes':['id',_0xc8aa('0x4'),_0xc8aa('0x5'),_0xc8aa('0x6'),_0xc8aa('0x7'),_0xc8aa('0x8'),'clientSecret',_0xc8aa('0x9'),_0xc8aa('0xa'),_0xc8aa('0xb')],'include':[{'model':_0xc8aa('0xc'),'as':'Configurations','attributes':['id',_0xc8aa('0x4'),_0xc8aa('0xd'),_0xc8aa('0xe'),_0xc8aa('0x5')],'include':[{'model':_0xc8aa('0xf'),'as':'Subjects','attributes':['id',_0xc8aa('0x10'),_0xc8aa('0x11'),_0xc8aa('0x12')],'include':[{'model':_0xc8aa('0x13'),'as':_0xc8aa('0x13'),'attributes':['id','name']}]},{'model':'ZohoField','as':_0xc8aa('0x14'),'attributes':['id',_0xc8aa('0x10'),_0xc8aa('0x11'),_0xc8aa('0x15'),'keyType',_0xc8aa('0x16'),_0xc8aa('0x12')],'include':[{'model':_0xc8aa('0x13'),'as':_0xc8aa('0x13'),'attributes':['id',_0xc8aa('0x4')]}]},{'model':_0xc8aa('0xf'),'as':_0xc8aa('0x17'),'attributes':['id',_0xc8aa('0x10'),_0xc8aa('0x11'),_0xc8aa('0x18'),_0xc8aa('0x19'),_0xc8aa('0x1a'),'variableName'],'include':[{'model':'Variable','as':_0xc8aa('0x13'),'attributes':['id','name']}]}]}]},'log':_0xc8aa('0x3')});};};
\ No newline at end of file
index 6b953f2..4af2ce7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc333=['format','SIP/%s','TALKING','queuecallerleaveAt','diff','seconds','inbound','agent','accountcode','uniqueid','CreateMemberReport','voiceDialReport','Request','membername','endtime','starttime','outbound','exten','dialstring','toNumber','lodash','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','voice','lastAssignedTo','isNil','interface'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0xc333,0x148));var _0x3c33=function(_0x411c7d,_0x54e8e9){_0x411c7d=_0x411c7d-0x0;var _0x2faa28=_0xc333[_0x411c7d];return _0x2faa28;};'use strict';var moment=require('moment');var _=require(_0x3c33('0x0'));var util=require('util');var client=require('../client');exports[_0x3c33('0x1')]=function(_0x41eb02){var _0x393d54=_0x41eb02[_0x3c33('0x2')]||_0x41eb02[_0x3c33('0x3')];return client['Request']('CreateMemberReport',{'body':{'channel':_0x3c33('0x4'),'membername':_0x41eb02[_0x3c33('0x5')],'interface':_[_0x3c33('0x6')](_0x41eb02[_0x3c33('0x7')])?util[_0x3c33('0x8')](_0x3c33('0x9'),_0x41eb02['lastAssignedTo']):_0x41eb02['interface'],'type':_0x3c33('0xa'),'enterAt':_0x41eb02[_0x3c33('0xb')],'exitAt':_0x393d54,'duration':moment(_0x393d54)[_0x3c33('0xc')](_0x41eb02['queuecallerleaveAt'],_0x3c33('0xd')),'data1':_0x3c33('0xe'),'data2':_0x41eb02['calleridnum'],'data3':_0x41eb02['exten'],'data4':null,'data5':_0x41eb02['queue'],'role':_0x3c33('0xf'),'internal':_0x41eb02[_0x3c33('0x10')]?_['toNumber'](_0x41eb02['accountcode']):undefined,'uniqueid':_0x41eb02[_0x3c33('0x11')]},'log':_0x3c33('0x12')});};exports[_0x3c33('0x13')]=function(_0x10af5a){return client[_0x3c33('0x14')](_0x3c33('0x12'),{'body':{'channel':_0x3c33('0x4'),'membername':_0x10af5a[_0x3c33('0x15')],'interface':_0x10af5a['interface'],'type':_0x3c33('0xa'),'enterAt':_0x10af5a['starttime'],'exitAt':_0x10af5a[_0x3c33('0x16')],'duration':moment(_0x10af5a[_0x3c33('0x16')])[_0x3c33('0xc')](_0x10af5a[_0x3c33('0x17')],_0x3c33('0xd'))>=0x0?moment(_0x10af5a[_0x3c33('0x16')])[_0x3c33('0xc')](_0x10af5a[_0x3c33('0x17')],'seconds'):null,'data1':_0x3c33('0x18'),'data2':_0x10af5a['accountcode'],'data3':_0x10af5a[_0x3c33('0x19')],'data4':_0x10af5a[_0x3c33('0x1a')]||null,'role':'agent','internal':_0x10af5a[_0x3c33('0x10')]?_[_0x3c33('0x1b')](_0x10af5a['accountcode']):undefined,'uniqueid':_0x10af5a[_0x3c33('0x11')]},'log':_0x3c33('0x12')});};
\ No newline at end of file
+var _0xd6bd=['diff','seconds','inbound','calleridnum','exten','queue','agent','accountcode','uniqueid','voice','membername','starttime','endtime','outbound','dialstring','lodash','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','lastAssignedTo','isNil','format','SIP/%s','interface','TALKING','queuecallerleaveAt'];(function(_0x1eff1a,_0x5d05a9){var _0x478b4b=function(_0x480e04){while(--_0x480e04){_0x1eff1a['push'](_0x1eff1a['shift']());}};_0x478b4b(++_0x5d05a9);}(_0xd6bd,0xda));var _0xdd6b=function(_0x3ab987,_0x3af3a4){_0x3ab987=_0x3ab987-0x0;var _0x32ca1a=_0xd6bd[_0x3ab987];return _0x32ca1a;};'use strict';var moment=require('moment');var _=require(_0xdd6b('0x0'));var util=require('util');var client=require(_0xdd6b('0x1'));exports[_0xdd6b('0x2')]=function(_0x4558bb){var _0xc4225f=_0x4558bb[_0xdd6b('0x3')]||_0x4558bb[_0xdd6b('0x4')];return client[_0xdd6b('0x5')](_0xdd6b('0x6'),{'body':{'channel':'voice','membername':_0x4558bb[_0xdd6b('0x7')],'interface':_[_0xdd6b('0x8')](_0x4558bb['interface'])?util[_0xdd6b('0x9')](_0xdd6b('0xa'),_0x4558bb['lastAssignedTo']):_0x4558bb[_0xdd6b('0xb')],'type':_0xdd6b('0xc'),'enterAt':_0x4558bb[_0xdd6b('0xd')],'exitAt':_0xc4225f,'duration':moment(_0xc4225f)[_0xdd6b('0xe')](_0x4558bb[_0xdd6b('0xd')],_0xdd6b('0xf')),'data1':_0xdd6b('0x10'),'data2':_0x4558bb[_0xdd6b('0x11')],'data3':_0x4558bb[_0xdd6b('0x12')],'data4':null,'data5':_0x4558bb[_0xdd6b('0x13')],'role':_0xdd6b('0x14'),'internal':_0x4558bb['accountcode']?_['toNumber'](_0x4558bb[_0xdd6b('0x15')]):undefined,'uniqueid':_0x4558bb[_0xdd6b('0x16')]},'log':_0xdd6b('0x6')});};exports['voiceDialReport']=function(_0x4d963c){return client[_0xdd6b('0x5')](_0xdd6b('0x6'),{'body':{'channel':_0xdd6b('0x17'),'membername':_0x4d963c[_0xdd6b('0x18')],'interface':_0x4d963c['interface'],'type':_0xdd6b('0xc'),'enterAt':_0x4d963c[_0xdd6b('0x19')],'exitAt':_0x4d963c[_0xdd6b('0x1a')],'duration':moment(_0x4d963c[_0xdd6b('0x1a')])[_0xdd6b('0xe')](_0x4d963c[_0xdd6b('0x19')],_0xdd6b('0xf'))>=0x0?moment(_0x4d963c[_0xdd6b('0x1a')])['diff'](_0x4d963c[_0xdd6b('0x19')],_0xdd6b('0xf')):null,'data1':_0xdd6b('0x1b'),'data2':_0x4d963c[_0xdd6b('0x15')],'data3':_0x4d963c[_0xdd6b('0x12')],'data4':_0x4d963c[_0xdd6b('0x1c')]||null,'role':'agent','internal':_0x4d963c['accountcode']?_['toNumber'](_0x4d963c[_0xdd6b('0x15')]):undefined,'uniqueid':_0x4d963c[_0xdd6b('0x16')]},'log':_0xdd6b('0x6')});};
\ No newline at end of file
index 4b23453..a6361b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c50=['getSettings','Request','ShowSetting','GetSettings','../client'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x6c50,0xa4));var _0x06c5=function(_0x58f7ca,_0x226aa9){_0x58f7ca=_0x58f7ca-0x0;var _0x35b1e8=_0x6c50[_0x58f7ca];return _0x35b1e8;};'use strict';var client=require(_0x06c5('0x0'));exports[_0x06c5('0x1')]=function(){return client[_0x06c5('0x2')](_0x06c5('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer']},'log':_0x06c5('0x4')});};
\ No newline at end of file
+var _0x0f88=['getSettings','Request','ShowSetting','stopRecordingOnTransfer','GetSettings','../client'];(function(_0x35a99b,_0x119351){var _0x29f08d=function(_0x48777b){while(--_0x48777b){_0x35a99b['push'](_0x35a99b['shift']());}};_0x29f08d(++_0x119351);}(_0x0f88,0x1d9));var _0x80f8=function(_0x108de9,_0x59c896){_0x108de9=_0x108de9-0x0;var _0x3038af=_0x0f88[_0x108de9];return _0x3038af;};'use strict';var client=require(_0x80f8('0x0'));exports[_0x80f8('0x1')]=function(){return client[_0x80f8('0x2')](_0x80f8('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x80f8('0x4')]},'log':_0x80f8('0x5')});};
\ No newline at end of file
index 007e40e..15d94e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52f1=['Request','GetTemplate','html','../client','getTemplates'];(function(_0x34eae4,_0x5b1714){var _0x305021=function(_0x2ff862){while(--_0x2ff862){_0x34eae4['push'](_0x34eae4['shift']());}};_0x305021(++_0x5b1714);}(_0x52f1,0x1ed));var _0x152f=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x52f1[_0x19e35c];return _0x3e1fe8;};'use strict';var client=require(_0x152f('0x0'));exports[_0x152f('0x1')]=function(_0x342cb4){return function(_0x2c64bc){return client[_0x152f('0x2')](_0x152f('0x3'),{'options':{'raw':!![],'attributes':['id','name',_0x152f('0x4')]},'log':'GetTemplate'});};};
\ No newline at end of file
+var _0x9443=['GetTemplate','name','html','../client','getTemplates','Request'];(function(_0x338f73,_0x1945c8){var _0x163fdf=function(_0x4cd033){while(--_0x4cd033){_0x338f73['push'](_0x338f73['shift']());}};_0x163fdf(++_0x1945c8);}(_0x9443,0xc3));var _0x3944=function(_0xf44d98,_0x12a472){_0xf44d98=_0xf44d98-0x0;var _0x5ebb04=_0x9443[_0xf44d98];return _0x5ebb04;};'use strict';var client=require(_0x3944('0x0'));exports[_0x3944('0x1')]=function(_0x4926cb){return function(_0x5c74e0){return client[_0x3944('0x2')](_0x3944('0x3'),{'options':{'raw':!![],'attributes':['id',_0x3944('0x4'),_0x3944('0x5')]},'log':_0x3944('0x3')});};};
\ No newline at end of file
index 57660d5..56b6dee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbeb2=['value','AnyConditions','Action','Actions','action','data1','data3','data4','data5','data6','GetTrigger','../client','getTriggers','Request','name','channel','status','Condition','AllConditions','field','operator'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xbeb2,0x170));var _0x2beb=function(_0x416e20,_0x2b8748){_0x416e20=_0x416e20-0x0;var _0x25adb2=_0xbeb2[_0x416e20];return _0x25adb2;};'use strict';var client=require(_0x2beb('0x0'));exports[_0x2beb('0x1')]=function(_0x399404){return function(_0x20e459){return client[_0x2beb('0x2')]('GetTrigger',{'options':{'raw':![],'attributes':['id',_0x2beb('0x3'),_0x2beb('0x4'),_0x2beb('0x5')],'include':[{'model':_0x2beb('0x6'),'as':_0x2beb('0x7'),'attributes':['id',_0x2beb('0x8'),_0x2beb('0x9'),_0x2beb('0xa')]},{'model':_0x2beb('0x6'),'as':_0x2beb('0xb'),'attributes':['id',_0x2beb('0x8'),_0x2beb('0x9'),_0x2beb('0xa')]},{'model':_0x2beb('0xc'),'as':_0x2beb('0xd'),'attributes':['id',_0x2beb('0xe'),_0x2beb('0xf'),'data2',_0x2beb('0x10'),_0x2beb('0x11'),_0x2beb('0x12'),_0x2beb('0x13'),'data7']}]},'log':_0x2beb('0x14')});};};
\ No newline at end of file
+var _0xb03f=['action','data1','data2','data3','data5','data6','data7','../client','getTriggers','GetTrigger','channel','status','Condition','AllConditions','field','operator','value','Action','Actions'];(function(_0x51921f,_0x42bde0){var _0x41743a=function(_0x27105d){while(--_0x27105d){_0x51921f['push'](_0x51921f['shift']());}};_0x41743a(++_0x42bde0);}(_0xb03f,0x15d));var _0xfb03=function(_0x27e321,_0x222eb5){_0x27e321=_0x27e321-0x0;var _0x19ac6c=_0xb03f[_0x27e321];return _0x19ac6c;};'use strict';var client=require(_0xfb03('0x0'));exports[_0xfb03('0x1')]=function(_0x4ec8e6){return function(_0x2e711a){return client['Request'](_0xfb03('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xfb03('0x3'),_0xfb03('0x4')],'include':[{'model':_0xfb03('0x5'),'as':_0xfb03('0x6'),'attributes':['id',_0xfb03('0x7'),_0xfb03('0x8'),_0xfb03('0x9')]},{'model':'Condition','as':'AnyConditions','attributes':['id',_0xfb03('0x7'),'operator',_0xfb03('0x9')]},{'model':_0xfb03('0xa'),'as':_0xfb03('0xb'),'attributes':['id',_0xfb03('0xc'),_0xfb03('0xd'),_0xfb03('0xe'),_0xfb03('0xf'),'data4',_0xfb03('0x10'),_0xfb03('0x11'),_0xfb03('0x12')]}]},'log':_0xfb03('0x2')});};};
\ No newline at end of file
index 2bad2b1..2ccb52e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46df=['../client','Request','GetTrunk','defaultuser'];(function(_0x30a31e,_0x31f766){var _0x170879=function(_0x313ee7){while(--_0x313ee7){_0x30a31e['push'](_0x30a31e['shift']());}};_0x170879(++_0x31f766);}(_0x46df,0x1e0));var _0xf46d=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x46df[_0x311c35];return _0x5cc50c;};'use strict';var client=require(_0xf46d('0x0'));exports['getTrunks']=function(_0x4a4f1d){return function(_0x376a25){return client[_0xf46d('0x1')](_0xf46d('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name','registry',_0xf46d('0x3')]},'log':'GetTrunk'});};};
\ No newline at end of file
+var _0xea63=['GetTrunk','defaultuser','getTrunks','Request'];(function(_0x1e09f8,_0x22ca66){var _0xb1724b=function(_0x2f4890){while(--_0x2f4890){_0x1e09f8['push'](_0x1e09f8['shift']());}};_0xb1724b(++_0x22ca66);}(_0xea63,0x1d6));var _0x3ea6=function(_0x41c9a0,_0x828703){_0x41c9a0=_0x41c9a0-0x0;var _0x3f39cd=_0xea63[_0x41c9a0];return _0x3f39cd;};'use strict';var client=require('../client');exports[_0x3ea6('0x0')]=function(_0x3ace54){return function(_0x2e97e6){return client[_0x3ea6('0x1')](_0x3ea6('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name','registry',_0x3ea6('0x3')]},'log':_0x3ea6('0x2')});};};
\ No newline at end of file
index 9204b67..5e01615 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['agent','lastPauseAt','interface','../client','getAgents','Request','name','accountcode','fullname','online','lastLoginAt','pauseType','voicePause','phone','mobile','getTelephones','telephone','internal','savePause','PauseUser','saveUnpause','UnpauseUser','getAgent','ShowUser'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'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'),'email',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'lastPauseAt',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'interface']},'log':'getAgents'});};};exports[_0x0a9e('0xc')]=function(){return function(){return client['Request']('GetUser',{'options':{'raw':!![],'where':{'role':_0x0a9e('0xd')},'attributes':['id',_0x0a9e('0x3'),_0x0a9e('0x4'),_0x0a9e('0xe')]},'log':_0x0a9e('0xc')});};};exports[_0x0a9e('0xf')]=function(_0x4a4c56,_0x50dfb2,_0x527cdd){return client['Request'](_0x0a9e('0x10'),{'body':{'type':_0x50dfb2,'uniqueid':_0x527cdd},'options':{'where':{'id':_0x4a4c56['id']}},'log':_0x0a9e('0xf')});};exports[_0x0a9e('0x11')]=function(_0x26d672){return client[_0x0a9e('0x2')](_0x0a9e('0x12'),{'body':{},'options':{'where':{'id':_0x26d672['id']}},'log':'savePause'});};exports[_0x0a9e('0x13')]=function(_0x239b12){return client[_0x0a9e('0x2')](_0x0a9e('0x14'),{'options':{'raw':![],'where':{'role':_0x0a9e('0x15'),'id':_0x239b12},'attributes':['id',_0x0a9e('0x3'),'email',_0x0a9e('0x4'),'fullname',_0x0a9e('0x6'),'lastLoginAt',_0x0a9e('0x8'),_0x0a9e('0x16'),'voicePause',_0x0a9e('0x17')]},'log':'getAgent'});};
\ No newline at end of file
+var _0xe706=['internal','savePause','PauseUser','saveUnpause','UnpauseUser','ShowUser','getAgent','../client','getAgents','Request','agent','name','email','accountcode','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','GetUser','telephone'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xe706,0xa3));var _0x6e70=function(_0x13f3af,_0x2ac326){_0x13f3af=_0x13f3af-0x0;var _0xda3c9f=_0xe706[_0x13f3af];return _0xda3c9f;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':_0x6e70('0x3')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x5'),_0x6e70('0x6'),_0x6e70('0x7'),_0x6e70('0x8'),_0x6e70('0x9'),_0x6e70('0xa'),_0x6e70('0xb'),_0x6e70('0xc'),_0x6e70('0xd'),_0x6e70('0xe'),_0x6e70('0xf')]},'log':_0x6e70('0x1')});};};exports[_0x6e70('0x10')]=function(){return function(){return client[_0x6e70('0x2')](_0x6e70('0x11'),{'options':{'raw':!![],'where':{'role':_0x6e70('0x12')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x6'),_0x6e70('0x13')]},'log':_0x6e70('0x10')});};};exports[_0x6e70('0x14')]=function(_0x4600f9,_0x5b3d07,_0x47f6b2){return client[_0x6e70('0x2')](_0x6e70('0x15'),{'body':{'type':_0x5b3d07,'uniqueid':_0x47f6b2},'options':{'where':{'id':_0x4600f9['id']}},'log':_0x6e70('0x14')});};exports[_0x6e70('0x16')]=function(_0x3b38f3){return client[_0x6e70('0x2')](_0x6e70('0x17'),{'body':{},'options':{'where':{'id':_0x3b38f3['id']}},'log':_0x6e70('0x14')});};exports['getAgent']=function(_0x52737e){return client['Request'](_0x6e70('0x18'),{'options':{'raw':![],'where':{'role':'agent','id':_0x52737e},'attributes':['id','name',_0x6e70('0x5'),_0x6e70('0x6'),'fullname',_0x6e70('0x8'),'lastLoginAt',_0x6e70('0xa'),_0x6e70('0xb'),'voicePause','interface']},'log':_0x6e70('0x19')});};
\ No newline at end of file
index 5248fa3..0ab405b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca82=['../client','Request','CreateVoiceAgentReport','UpdateVoiceAgentReport'];(function(_0x3c7868,_0x532e1c){var _0x52e74=function(_0x5b668){while(--_0x5b668){_0x3c7868['push'](_0x3c7868['shift']());}};_0x52e74(++_0x532e1c);}(_0xca82,0x188));var _0x2ca8=function(_0x3d6135,_0x256136){_0x3d6135=_0x3d6135-0x0;var _0x16f3c1=_0xca82[_0x3d6135];return _0x16f3c1;};'use strict';var client=require(_0x2ca8('0x0'));exports['create']=function(_0x1528d3){return client[_0x2ca8('0x1')](_0x2ca8('0x2'),{'body':_0x1528d3,'log':'CreateVoiceAgentReport'});};exports['update']=function(_0x447f6a,_0x3410c1,_0x175260){return client[_0x2ca8('0x1')]('UpdateVoiceAgentReport',{'body':_0x447f6a,'options':{'where':{'uniqueid':_0x3410c1,'interface':_0x175260,'agentcomplete':!![]}},'log':_0x2ca8('0x3')});};
\ No newline at end of file
+var _0xf62f=['CreateVoiceAgentReport','update','UpdateVoiceAgentReport','create','Request'];(function(_0x59b24b,_0xbefa2a){var _0x57b354=function(_0x5bd561){while(--_0x5bd561){_0x59b24b['push'](_0x59b24b['shift']());}};_0x57b354(++_0xbefa2a);}(_0xf62f,0xee));var _0xff62=function(_0x46a36c,_0x1c5f41){_0x46a36c=_0x46a36c-0x0;var _0x1c6796=_0xf62f[_0x46a36c];return _0x1c6796;};'use strict';var client=require('../client');exports[_0xff62('0x0')]=function(_0x24a683){return client[_0xff62('0x1')](_0xff62('0x2'),{'body':_0x24a683,'log':'CreateVoiceAgentReport'});};exports[_0xff62('0x3')]=function(_0x43edda,_0x8fb264,_0x141117){return client['Request'](_0xff62('0x4'),{'body':_0x43edda,'options':{'where':{'uniqueid':_0x8fb264,'interface':_0x141117,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
index c7facb5..7f4d263 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21cd=['billableseconds','GetVoiceCallReports','moment','lodash','../client','create','CreateVoiceCallReport','calleridnum','context','callerid','DOCUMENTATION','getVoiceCallReports','Request','GetVoiceCallReport','outbound','startOf','format','endOf','day','YYYY-MM-DD\x20HH:mm:ss','type'];(function(_0x5f5267,_0x467a47){var _0x52542b=function(_0x2d9463){while(--_0x2d9463){_0x5f5267['push'](_0x5f5267['shift']());}};_0x52542b(++_0x467a47);}(_0x21cd,0x128));var _0xd21c=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x21cd[_0x19950b];return _0x3c6b41;};'use strict';var moment=require(_0xd21c('0x0'));var util=require('util');var _=require(_0xd21c('0x1'));var client=require(_0xd21c('0x2'));exports[_0xd21c('0x3')]=function(_0x4309f9){return client['Request'](_0xd21c('0x4'),{'body':_['merge'](_0x4309f9,{'source':_0x4309f9[_0xd21c('0x5')],'destinationcontext':_0x4309f9[_0xd21c('0x6')],'callerid':_0x4309f9[_0xd21c('0x7')],'amaflags':_0xd21c('0x8')}),'log':_0xd21c('0x4')});};exports[_0xd21c('0x9')]=function(){return function(){return client[_0xd21c('0xa')](_0xd21c('0xb'),{'options':{'where':{'type':[_0xd21c('0xc')],'createdAt':{'$between':[moment()[_0xd21c('0xd')]('day')[_0xd21c('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xd21c('0xf')](_0xd21c('0x10'))[_0xd21c('0xe')](_0xd21c('0x11'))]}},'attributes':[_0xd21c('0x12'),'disposition','duration',_0xd21c('0x13')]},'log':_0xd21c('0x14')});};};
\ No newline at end of file
+var _0x3351=['moment','../client','Request','CreateVoiceCallReport','callerid','DOCUMENTATION','GetVoiceCallReport','outbound','YYYY-MM-DD\x20HH:mm:ss','format','type','duration','GetVoiceCallReports'];(function(_0x2eb897,_0x5ac819){var _0x2b019f=function(_0x4588ee){while(--_0x4588ee){_0x2eb897['push'](_0x2eb897['shift']());}};_0x2b019f(++_0x5ac819);}(_0x3351,0x1ee));var _0x1335=function(_0xdc37a1,_0x53ebb9){_0xdc37a1=_0xdc37a1-0x0;var _0x99b4fe=_0x3351[_0xdc37a1];return _0x99b4fe;};'use strict';var moment=require(_0x1335('0x0'));var util=require('util');var _=require('lodash');var client=require(_0x1335('0x1'));exports['create']=function(_0x5ee8e2){return client[_0x1335('0x2')](_0x1335('0x3'),{'body':_['merge'](_0x5ee8e2,{'source':_0x5ee8e2['calleridnum'],'destinationcontext':_0x5ee8e2['context'],'callerid':_0x5ee8e2[_0x1335('0x4')],'amaflags':_0x1335('0x5')}),'log':_0x1335('0x3')});};exports['getVoiceCallReports']=function(){return function(){return client[_0x1335('0x2')](_0x1335('0x6'),{'options':{'where':{'type':[_0x1335('0x7')],'createdAt':{'$between':[moment()['startOf']('day')['format'](_0x1335('0x8')),moment()['endOf']('day')[_0x1335('0x9')](_0x1335('0x8'))]}},'attributes':[_0x1335('0xa'),'disposition',_0x1335('0xb'),'billableseconds']},'log':_0x1335('0xc')});};};
\ No newline at end of file
index 7079926..96e03c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4080=['create','Request','CreateVoiceDialReport','../client'];(function(_0x4bfbd5,_0x687a2){var _0x4b66bc=function(_0x58a518){while(--_0x58a518){_0x4bfbd5['push'](_0x4bfbd5['shift']());}};_0x4b66bc(++_0x687a2);}(_0x4080,0x1c7));var _0x0408=function(_0x5c7525,_0x39490f){_0x5c7525=_0x5c7525-0x0;var _0x2e2ec8=_0x4080[_0x5c7525];return _0x2e2ec8;};'use strict';var client=require(_0x0408('0x0'));exports[_0x0408('0x1')]=function(_0x444ac9){return client[_0x0408('0x2')]('CreateVoiceDialReport',{'body':_0x444ac9,'log':_0x0408('0x3')});};
\ No newline at end of file
+var _0xa083=['../client','create','Request','CreateVoiceDialReport'];(function(_0x1a5b29,_0x2362bb){var _0x56e90f=function(_0x325388){while(--_0x325388){_0x1a5b29['push'](_0x1a5b29['shift']());}};_0x56e90f(++_0x2362bb);}(_0xa083,0x118));var _0x3a08=function(_0x889fa4,_0x874af8){_0x889fa4=_0x889fa4-0x0;var _0x59d9d3=_0xa083[_0x889fa4];return _0x59d9d3;};'use strict';var client=require(_0x3a08('0x0'));exports[_0x3a08('0x1')]=function(_0x68ca47){return client[_0x3a08('0x2')]('CreateVoiceDialReport',{'body':_0x68ca47,'log':_0x3a08('0x3')});};
\ No newline at end of file
index b520ea1..22185a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb53=['recordingFormat','../client','getVoiceExtensions','Request','GetVoiceExtension','exten'];(function(_0x453d8b,_0x3c3e28){var _0x5a23c1=function(_0x3eeb22){while(--_0x3eeb22){_0x453d8b['push'](_0x453d8b['shift']());}};_0x5a23c1(++_0x3c3e28);}(_0xbb53,0x121));var _0x3bb5=function(_0x21ecf5,_0xf4a39){_0x21ecf5=_0x21ecf5-0x0;var _0xbe05cd=_0xbb53[_0x21ecf5];return _0xbe05cd;};'use strict';var client=require(_0x3bb5('0x0'));exports[_0x3bb5('0x1')]=function(){return function(){return client[_0x3bb5('0x2')](_0x3bb5('0x3'),{'options':{'raw':!![],'attributes':['id',_0x3bb5('0x4'),_0x3bb5('0x5')],'where':{'VoiceExtensionId':null}},'log':_0x3bb5('0x1')});};};
\ No newline at end of file
+var _0x6f7a=['../client','getVoiceExtensions','Request','GetVoiceExtension','recordingFormat'];(function(_0x44a6b5,_0xd22640){var _0xe91626=function(_0xe29cb0){while(--_0xe29cb0){_0x44a6b5['push'](_0x44a6b5['shift']());}};_0xe91626(++_0xd22640);}(_0x6f7a,0x1ae));var _0xa6f7=function(_0xbf797,_0x2f08b8){_0xbf797=_0xbf797-0x0;var _0x349812=_0x6f7a[_0xbf797];return _0x349812;};'use strict';var client=require(_0xa6f7('0x0'));exports[_0xa6f7('0x1')]=function(){return function(){return client[_0xa6f7('0x2')](_0xa6f7('0x3'),{'options':{'raw':!![],'attributes':['id','exten',_0xa6f7('0x4')],'where':{'VoiceExtensionId':null}},'log':_0xa6f7('0x1')});};};
\ No newline at end of file
index 4e10bc2..d807a33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0a=['dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialPrefix','dialCheckDuplicateType','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','Trunk','callerid','active','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','../client','getVoiceQueues','Request','name','acw','autopause','monitor_format','type','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout'];(function(_0x447c82,_0x407de3){var _0x5429aa=function(_0x5b5415){while(--_0x5b5415){_0x447c82['push'](_0x447c82['shift']());}};_0x5429aa(++_0x407de3);}(_0x8d0a,0x172));var _0xa8d0=function(_0x123600,_0x59b5be){_0x123600=_0x123600-0x0;var _0x4c5f49=_0x8d0a[_0x123600];return _0x4c5f49;};'use strict';var client=require(_0xa8d0('0x0'));exports[_0xa8d0('0x1')]=function(){return function(){return client[_0xa8d0('0x2')]('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0xa8d0('0x3'),_0xa8d0('0x4'),'acwTimeout',_0xa8d0('0x5'),_0xa8d0('0x6'),_0xa8d0('0x7'),'dialActive',_0xa8d0('0x8'),_0xa8d0('0x9'),_0xa8d0('0xa'),_0xa8d0('0xb'),_0xa8d0('0xc'),_0xa8d0('0xd'),_0xa8d0('0xe'),_0xa8d0('0xf'),_0xa8d0('0x10'),_0xa8d0('0x11'),_0xa8d0('0x12'),_0xa8d0('0x13'),_0xa8d0('0x14'),_0xa8d0('0x15'),_0xa8d0('0x16'),_0xa8d0('0x17'),_0xa8d0('0x18'),_0xa8d0('0x19'),_0xa8d0('0x1a'),_0xa8d0('0x1b'),'dialTimezone','dialGlobalInterval',_0xa8d0('0x1c'),_0xa8d0('0x1d'),'dialAMDActive','dialAMDInitialSilence',_0xa8d0('0x1e'),_0xa8d0('0x1f'),_0xa8d0('0x20'),_0xa8d0('0x21'),_0xa8d0('0x22'),_0xa8d0('0x23'),_0xa8d0('0x24'),_0xa8d0('0x25'),_0xa8d0('0x26'),_0xa8d0('0x27'),_0xa8d0('0x28'),'dialOrderByScheduledAt',_0xa8d0('0x29'),_0xa8d0('0x2a'),'dialQueueProject2',_0xa8d0('0x6'),_0xa8d0('0x2b'),_0xa8d0('0x2c'),_0xa8d0('0x2d'),_0xa8d0('0x2e'),'dialNoSuchNumberRetryFrequency',_0xa8d0('0x2f'),_0xa8d0('0x30'),_0xa8d0('0x31'),_0xa8d0('0x32'),_0xa8d0('0x33'),_0xa8d0('0x34'),_0xa8d0('0x35'),'dialAgentRejectRetryFrequency',_0xa8d0('0x36'),_0xa8d0('0x37'),_0xa8d0('0x38'),_0xa8d0('0x39')],'include':[{'model':'Trunk','as':_0xa8d0('0x3a'),'attributes':['id',_0xa8d0('0x3'),_0xa8d0('0x3b'),_0xa8d0('0x3c')]},{'model':'Pause','as':_0xa8d0('0x3d'),'attributes':['id',_0xa8d0('0x3')]},{'model':_0xa8d0('0x3a'),'as':_0xa8d0('0x3e'),'attributes':['id','name',_0xa8d0('0x3b'),_0xa8d0('0x3c')]},{'model':_0xa8d0('0x3f'),'as':'Interval','attributes':['id',_0xa8d0('0x3')],'include':[{'model':'Interval','as':_0xa8d0('0x40'),'attributes':['id',_0xa8d0('0x3'),'interval']}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
+var _0x8709=['dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialQueueProject2','dialNoSuchNumberMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','Trunk','name','callerid','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','GetVoiceQueue','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialPowerLevel','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','timeout','dialRecallMeTimeout'];(function(_0x554b7c,_0x4353fb){var _0x564008=function(_0x5782db){while(--_0x5782db){_0x554b7c['push'](_0x554b7c['shift']());}};_0x564008(++_0x4353fb);}(_0x8709,0xc4));var _0x9870=function(_0x3f47dc,_0x450bae){_0x3f47dc=_0x3f47dc-0x0;var _0x291362=_0x8709[_0x3f47dc];return _0x291362;};'use strict';var client=require(_0x9870('0x0'));exports[_0x9870('0x1')]=function(){return function(){return client['Request'](_0x9870('0x2'),{'options':{'raw':![],'attributes':['id','name','acw','acwTimeout','autopause',_0x9870('0x3'),_0x9870('0x4'),_0x9870('0x5'),_0x9870('0x6'),_0x9870('0x7'),'dialLimitQueue',_0x9870('0x8'),'dialPredictiveOptimization',_0x9870('0x9'),_0x9870('0xa'),'dialOriginateCallerIdName','dialOriginateCallerIdNumber',_0x9870('0xb'),_0x9870('0xc'),_0x9870('0xd'),_0x9870('0xe'),_0x9870('0xf'),_0x9870('0x10'),_0x9870('0x11'),_0x9870('0x12'),_0x9870('0x13'),_0x9870('0x14'),_0x9870('0x15'),_0x9870('0x16'),_0x9870('0x17'),_0x9870('0x18'),_0x9870('0x19'),_0x9870('0x1a'),_0x9870('0x1b'),_0x9870('0x1c'),_0x9870('0x1d'),_0x9870('0x1e'),_0x9870('0x1f'),'dialAMDBetweenWordsSilence',_0x9870('0x20'),_0x9870('0x21'),'dialAMDMaximumWordLength',_0x9870('0x22'),_0x9870('0x23'),_0x9870('0x24'),_0x9870('0x25'),_0x9870('0x26'),'dialAgiAfterHangupClient',_0x9870('0x27'),'monitor_format','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit',_0x9870('0x28'),'dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0x9870('0x29'),_0x9870('0x2a'),'dialAbandonedRetryFrequency',_0x9870('0x2b'),_0x9870('0x2c'),_0x9870('0x2d'),_0x9870('0x2e'),_0x9870('0x2f'),_0x9870('0x30'),'dialPredictiveIntervalMinThreshold'],'include':[{'model':_0x9870('0x31'),'as':_0x9870('0x31'),'attributes':['id',_0x9870('0x32'),_0x9870('0x33'),'active']},{'model':_0x9870('0x34'),'as':_0x9870('0x35'),'attributes':['id',_0x9870('0x32')]},{'model':_0x9870('0x31'),'as':_0x9870('0x36'),'attributes':['id',_0x9870('0x32'),_0x9870('0x33'),'active']},{'model':_0x9870('0x37'),'as':_0x9870('0x37'),'attributes':['id','name'],'include':[{'model':'Interval','as':_0x9870('0x38'),'attributes':['id',_0x9870('0x32'),_0x9870('0x39')]}]}]},'log':_0x9870('0x1')});};};
\ No newline at end of file
index 23e9951..e6e1410 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(_0x4b53b1,_0x163b74){var _0xe2ef79=function(_0xfa6955){while(--_0xfa6955){_0x4b53b1['push'](_0x4b53b1['shift']());}};_0xe2ef79(++_0x163b74);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'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(_0x3208ce,_0x458a95){var _0x27482a=function(_0x419eb2){while(--_0x419eb2){_0x3208ce['push'](_0x3208ce['shift']());}};_0x27482a(++_0x458a95);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'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 0548d63..e0c9ce0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d63=['GetVoiceQueueRtPauses','../client','getVoiceQueueRtPauses','Request'];(function(_0x2d49a8,_0x5b217b){var _0x1a650f=function(_0x2331f1){while(--_0x2331f1){_0x2d49a8['push'](_0x2d49a8['shift']());}};_0x1a650f(++_0x5b217b);}(_0x9d63,0xad));var _0x39d6=function(_0x541ea6,_0x51cab6){_0x541ea6=_0x541ea6-0x0;var _0x3c3e84=_0x9d63[_0x541ea6];return _0x3c3e84;};'use strict';var client=require(_0x39d6('0x0'));exports[_0x39d6('0x1')]=function(_0x4953e3){return function(){return client[_0x39d6('0x2')](_0x39d6('0x3'),{'options':{'where':{'VoiceQueueId':_0x4953e3,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
+var _0x93c1=['../client','GetVoiceQueueRtPauses','getVoiceQueueRtPauses'];(function(_0x1a9e9e,_0x4e02c0){var _0x461061=function(_0x595613){while(--_0x595613){_0x1a9e9e['push'](_0x1a9e9e['shift']());}};_0x461061(++_0x4e02c0);}(_0x93c1,0x105));var _0x193c=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0x93c1[_0x68ee8b];return _0x5148f7;};'use strict';var client=require(_0x193c('0x0'));exports['getVoiceQueueRtPauses']=function(_0x5b31dc){return function(){return client['Request'](_0x193c('0x1'),{'options':{'where':{'VoiceQueueId':_0x5b31dc,'paused':!![]},'raw':!![]},'log':_0x193c('0x2')});};};
\ No newline at end of file
index 6a2e33e..5db6851 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x409acf,_0x3ace63){var _0x558884=function(_0x485583){while(--_0x485583){_0x409acf['push'](_0x409acf['shift']());}};_0x558884(++_0x3ace63);}(_0x7a54,0x106));var _0x47a5=function(_0x169a2f,_0x1724f3){_0x169a2f=_0x169a2f-0x0;var _0x37cd99=_0x7a54[_0x169a2f];return _0x37cd99;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
+var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x414d5a,_0x47a337){var _0x4d1164=function(_0x53e02c){while(--_0x53e02c){_0x414d5a['push'](_0x414d5a['shift']());}};_0x4d1164(++_0x47a337);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'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 ee0c3b6..90f4da0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd644=['transfertargetconnectedlinename','transfertargetcontext','transfertargetexten','origtransferercontext','origtransfererexten','attended','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridname','transfererconnectedlinenum','transfereraccountcode','transferercontext','transfererlinkedid','transfereechannel','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','extension','blind','attendedTransfer','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransferercontext','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd644,0x1b3));var _0x4d64=function(_0x833619,_0x3470e){_0x833619=_0x833619-0x0;var _0x293afb=_0xd644[_0x833619];return _0x293afb;};'use strict';var client=require(_0x4d64('0x0'));exports[_0x4d64('0x1')]={};exports[_0x4d64('0x2')]=function(_0x53e40e){return client[_0x4d64('0x3')](_0x4d64('0x4'),{'body':{'result':_0x53e40e[_0x4d64('0x5')],'transfererchannel':_0x53e40e[_0x4d64('0x6')],'transferercalleridnum':_0x53e40e['transferercalleridnum'],'transferercalleridname':_0x53e40e[_0x4d64('0x7')],'transfererconnectedlinenum':_0x53e40e[_0x4d64('0x8')],'transfererconnectedlinename':_0x53e40e['transfererconnectedlinename'],'transfereraccountcode':_0x53e40e[_0x4d64('0x9')],'transferercontext':_0x53e40e[_0x4d64('0xa')],'transfererexten':_0x53e40e['transfererexten'],'transfererlinkedid':_0x53e40e[_0x4d64('0xb')],'transfereechannel':_0x53e40e[_0x4d64('0xc')],'transfereecalleridnum':_0x53e40e['transfereecalleridnum'],'transfereecalleridname':_0x53e40e[_0x4d64('0xd')],'transfereeconnectedlinenum':_0x53e40e[_0x4d64('0xe')],'transfereeconnectedlinename':_0x53e40e[_0x4d64('0xf')],'transfereeaccountcode':_0x53e40e[_0x4d64('0x10')],'transfereecontext':_0x53e40e[_0x4d64('0x11')],'transfereeexten':_0x53e40e[_0x4d64('0x12')],'transfereelinkedid':_0x53e40e[_0x4d64('0x13')],'isexternal':_0x53e40e[_0x4d64('0x14')],'context':_0x53e40e[_0x4d64('0x15')],'extension':_0x53e40e[_0x4d64('0x16')],'type':_0x4d64('0x17')},'log':'CreateVoiceTransferReport'});};exports[_0x4d64('0x18')]=function(_0x474a78){return client[_0x4d64('0x3')]('CreateVoiceTransferReport',{'body':{'result':_0x474a78[_0x4d64('0x5')],'transfererchannel':_0x474a78[_0x4d64('0x19')],'transferercalleridnum':_0x474a78['origtransferercalleridnum'],'transferercalleridname':_0x474a78[_0x4d64('0x1a')],'transfererconnectedlinenum':_0x474a78[_0x4d64('0x1b')],'transfererconnectedlinename':_0x474a78[_0x4d64('0x1c')],'transfereraccountcode':_0x474a78['origtransfereraccountcode'],'transferercontext':_0x474a78[_0x4d64('0x1d')],'transfererexten':_0x474a78['secondtransfererexten'],'transfererlinkedid':_0x474a78['origtransfererlinkedid'],'transfereechannel':_0x474a78[_0x4d64('0x1e')],'transfereecalleridnum':_0x474a78[_0x4d64('0x1f')],'transfereecalleridname':_0x474a78[_0x4d64('0x20')],'transfereeconnectedlinenum':_0x474a78['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x474a78[_0x4d64('0x21')],'transfereeaccountcode':_0x474a78['transfertargetaccountcode'],'transfereecontext':_0x474a78[_0x4d64('0x22')],'transfereeexten':_0x474a78[_0x4d64('0x23')],'transfereelinkedid':_0x474a78['transfertargetlinkedid'],'isexternal':_0x474a78[_0x4d64('0x14')],'context':_0x474a78[_0x4d64('0x24')],'extension':_0x474a78[_0x4d64('0x25')],'type':_0x4d64('0x26')},'log':_0x4d64('0x4')});};
\ No newline at end of file
+var _0x6f14=['transfertargetchannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transferercalleridnum','transferercalleridname','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','extension','attendedTransfer','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x6f14,0xfa));var _0x46f1=function(_0x4470c0,_0x5b9cd1){_0x4470c0=_0x4470c0-0x0;var _0x2c079a=_0x6f14[_0x4470c0];return _0x2c079a;};'use strict';var client=require(_0x46f1('0x0'));exports[_0x46f1('0x1')]={};exports[_0x46f1('0x2')]=function(_0x920717){return client[_0x46f1('0x3')](_0x46f1('0x4'),{'body':{'result':_0x920717[_0x46f1('0x5')],'transfererchannel':_0x920717['transfererchannel'],'transferercalleridnum':_0x920717[_0x46f1('0x6')],'transferercalleridname':_0x920717[_0x46f1('0x7')],'transfererconnectedlinenum':_0x920717['transfererconnectedlinenum'],'transfererconnectedlinename':_0x920717[_0x46f1('0x8')],'transfereraccountcode':_0x920717[_0x46f1('0x9')],'transferercontext':_0x920717[_0x46f1('0xa')],'transfererexten':_0x920717['transfererexten'],'transfererlinkedid':_0x920717[_0x46f1('0xb')],'transfereechannel':_0x920717[_0x46f1('0xc')],'transfereecalleridnum':_0x920717[_0x46f1('0xd')],'transfereecalleridname':_0x920717['transfereecalleridname'],'transfereeconnectedlinenum':_0x920717[_0x46f1('0xe')],'transfereeconnectedlinename':_0x920717[_0x46f1('0xf')],'transfereeaccountcode':_0x920717[_0x46f1('0x10')],'transfereecontext':_0x920717[_0x46f1('0x11')],'transfereeexten':_0x920717[_0x46f1('0x12')],'transfereelinkedid':_0x920717[_0x46f1('0x13')],'isexternal':_0x920717[_0x46f1('0x14')],'context':_0x920717[_0x46f1('0x15')],'extension':_0x920717[_0x46f1('0x16')],'type':'blind'},'log':_0x46f1('0x4')});};exports[_0x46f1('0x17')]=function(_0x67b140){return client[_0x46f1('0x3')]('CreateVoiceTransferReport',{'body':{'result':_0x67b140[_0x46f1('0x5')],'transfererchannel':_0x67b140[_0x46f1('0x18')],'transferercalleridnum':_0x67b140['origtransferercalleridnum'],'transferercalleridname':_0x67b140[_0x46f1('0x19')],'transfererconnectedlinenum':_0x67b140[_0x46f1('0x1a')],'transfererconnectedlinename':_0x67b140[_0x46f1('0x1b')],'transfereraccountcode':_0x67b140['origtransfereraccountcode'],'transferercontext':_0x67b140[_0x46f1('0x1c')],'transfererexten':_0x67b140[_0x46f1('0x1d')],'transfererlinkedid':_0x67b140['origtransfererlinkedid'],'transfereechannel':_0x67b140[_0x46f1('0x1e')],'transfereecalleridnum':_0x67b140['transfertargetcalleridnum'],'transfereecalleridname':_0x67b140[_0x46f1('0x1f')],'transfereeconnectedlinenum':_0x67b140[_0x46f1('0x20')],'transfereeconnectedlinename':_0x67b140['transfertargetconnectedlinename'],'transfereeaccountcode':_0x67b140[_0x46f1('0x21')],'transfereecontext':_0x67b140[_0x46f1('0x22')],'transfereeexten':_0x67b140[_0x46f1('0x23')],'transfereelinkedid':_0x67b140[_0x46f1('0x24')],'isexternal':_0x67b140[_0x46f1('0x14')],'context':_0x67b140[_0x46f1('0x25')],'extension':_0x67b140[_0x46f1('0x26')],'type':_0x46f1('0x27')},'log':_0x46f1('0x4')});};
\ No newline at end of file
index 217447a..881cd35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bd3=['loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','type','unmanaged','loggedInDb','outbound','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','active','callerid','Interval','length','find','undefined','voicechannel','map','uniqueid','%s.%s','MixMonitor','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','push','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','status','MixMonitor\x20Success','channels','resolve','channel','destinationchannel','StopMixMonitor','stop','wav','StopMixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','values','voicequeuechannel','queueChannels','voicequeuechannelhangup','voicequeuechannelredirect','Redirect','exten','context','telephones','trunks','outboundChannels','run','Event\x20name\x20mandatory','emit','custom:','event','faxAccounts','send','checkAfterSend','server','http','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','jayson/promise','validate','../properties','../ami','listen','format','%s/%s','SIP','timers','timer','agents','pause','QueuePause','isConnected','error','asterisk','username','pick','keys','module','action','Reload','Action','then','message','catch','ami\x20disconnected','join','command','content','voiceQueues','hasOwnProperty','name','strategy','available'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0x4bd3,0x174));var _0x34bd=function(_0x30fd82,_0x54c496){_0x30fd82=_0x30fd82-0x0;var _0x2a6457=_0x4bd3[_0x30fd82];return _0x2a6457;};'use strict';var _=require(_0x34bd('0x0'));var util=require('util');var jayson=require(_0x34bd('0x1'));var schema=require(_0x34bd('0x2'));var BPromise=require('bluebird');var moment=require('moment');var config=require('../../../config/environment');var properties=require(_0x34bd('0x3'));var ami=require(_0x34bd('0x4'));exports[_0x34bd('0x5')]=function(_0x5846f3,_0x2133c5,_0x2a15a2){return new BPromise(function(_0x5c2a7a,_0x3e8744){var _0x213716={'QueuePause':function(_0x51a4d7){return new Promise(function(_0xd600e1,_0x76de8d){var _0x3260ff=util[_0x34bd('0x6')](_0x34bd('0x7'),_0x34bd('0x8'),_0x51a4d7['name']);if(_0x5846f3[_0x34bd('0x9')]&&_0x5846f3[_0x34bd('0x9')][_0x3260ff]&&_0x5846f3[_0x34bd('0x9')][_0x3260ff][_0x34bd('0xa')]){_0x5846f3['timers'][_0x3260ff]['updateAcw']();}if(_0x5846f3[_0x34bd('0xb')][_0x3260ff]){_0x5846f3['agents'][_0x3260ff]['updateStatusRealtime']({'statePause':_0x51a4d7[_0x34bd('0xc')]?!![]:![]});}_0xd600e1({'code':0xc8,'message':_0x34bd('0xd')});});},'Reload':function(_0x282af4){var _0x1d627d=this;return new Promise(function(_0x2ee180,_0x14cd37){if(ami[_0x34bd('0xe')]()==![]){return _0x14cd37(_0x1d627d[_0x34bd('0xf')](0x1f4,[config[_0x34bd('0x10')]['ip'],config['asterisk'][_0x34bd('0x11')],'ami\x20disconnected']['join']('\x20')));}_0x282af4=_[_0x34bd('0x12')](_0x282af4,_[_0x34bd('0x13')](properties[_0x34bd('0x14')]));_0x282af4[_0x34bd('0x15')]=_0x34bd('0x16');return ami[_0x34bd('0x17')](_0x282af4)[_0x34bd('0x18')](function(_0x1c12e8){_0x2ee180({'code':0xc8,'message':_0x1c12e8[_0x34bd('0x19')]});})[_0x34bd('0x1a')](function(_0x4b5ebb){_0x14cd37(_0x1d627d['error'](0x1f5,_0x4b5ebb[_0x34bd('0x19')]));});});},'Command':function(_0x324f7d){var _0x265e70=this;return new Promise(function(_0x220666,_0x3976e4){if(ami[_0x34bd('0xe')]()==![]){return _0x3976e4(_0x265e70[_0x34bd('0xf')](0x1f4,[config[_0x34bd('0x10')]['ip'],config[_0x34bd('0x10')]['username'],_0x34bd('0x1b')][_0x34bd('0x1c')]('\x20')));}_0x324f7d=_[_0x34bd('0x12')](_0x324f7d,_0x34bd('0x1d'));_0x324f7d[_0x34bd('0x15')]='Command';return ami['Action'](_0x324f7d)['then'](function(_0x4edf84){_0x220666({'code':0xc8,'message':_0x4edf84[_0x34bd('0x1e')]});})['catch'](function(_0x10fc4b){_0x3976e4(_0x265e70[_0x34bd('0xf')](0x1f5,_0x10fc4b[_0x34bd('0x19')]));});});},'VoiceQueues':function(_0x5c3c85){return new Promise(function(_0x41bffd,_0x14479a){var _0x4f0dff=[];for(var _0x457006 in _0x5846f3['voiceQueues']){if(_0x5846f3[_0x34bd('0x1f')][_0x34bd('0x20')](_0x457006)){var _0x264c94=_0x5846f3[_0x34bd('0x1f')][_0x457006];var _0x56baf7={'id':_0x264c94['id'],'name':_0x264c94[_0x34bd('0x21')],'strategy':_0x264c94[_0x34bd('0x22')],'answered':_0x264c94['answered'],'available':_0x264c94[_0x34bd('0x23')],'loggedIn':_0x264c94[_0x34bd('0x24')],'pTalking':_0x264c94[_0x34bd('0x25')],'sumBillable':_0x264c94[_0x34bd('0x26')],'sumDuration':_0x264c94[_0x34bd('0x27')],'sumHoldTime':_0x264c94[_0x34bd('0x28')]||0x0,'talking':_0x264c94[_0x34bd('0x29')],'total':_0x264c94['total'],'type':_0x264c94[_0x34bd('0x2a')],'unmanaged':_0x264c94[_0x34bd('0x2b')],'abandoned':_0x264c94['abandoned'],'waiting':_0x264c94['waiting'],'loggedInDb':_0x264c94[_0x34bd('0x2c')]};if(_0x264c94[_0x34bd('0x2a')]===_0x34bd('0x2d')){_0x56baf7['dialActive']=_0x264c94['dialActive'];_0x56baf7[_0x34bd('0x2e')]=_0x264c94[_0x34bd('0x2e')];_0x56baf7[_0x34bd('0x2f')]=_0x264c94[_0x34bd('0x2f')];_0x56baf7['dialOriginateCallerIdNumber']=_0x264c94[_0x34bd('0x30')];_0x56baf7[_0x34bd('0x31')]=_0x264c94[_0x34bd('0x31')];_0x56baf7[_0x34bd('0x32')]=_0x264c94[_0x34bd('0x32')];_0x56baf7[_0x34bd('0x33')]=_0x264c94['temp'];_0x56baf7[_0x34bd('0x34')]=_0x264c94['outboundAnswerAgiCallsDay'];_0x56baf7[_0x34bd('0x35')]=_0x264c94[_0x34bd('0x35')];_0x56baf7[_0x34bd('0x36')]=_0x264c94['outboundBlacklistCallsDay'];_0x56baf7[_0x34bd('0x37')]=_0x264c94[_0x34bd('0x37')];_0x56baf7['outboundCongestionCallsDay']=_0x264c94[_0x34bd('0x38')];_0x56baf7[_0x34bd('0x39')]=_0x264c94[_0x34bd('0x39')];_0x56baf7['outboundDropCallsDayCallersExit']=_0x264c94[_0x34bd('0x3a')];_0x56baf7[_0x34bd('0x3b')]=_0x264c94['outboundDropCallsDayTimeout'];_0x56baf7[_0x34bd('0x3c')]=_0x264c94[_0x34bd('0x3c')];_0x56baf7[_0x34bd('0x3d')]=_0x264c94[_0x34bd('0x3d')];_0x56baf7[_0x34bd('0x3e')]=_0x264c94[_0x34bd('0x3e')];_0x56baf7['outboundReCallsDay']=_0x264c94['outboundReCallsDay'];_0x56baf7['outboundRejectCallsDay']=_0x264c94[_0x34bd('0x3f')];_0x56baf7[_0x34bd('0x40')]=_0x264c94['outboundUnknownCallsDay'];_0x56baf7['predictiveIntervalAnsweredCalls']=_0x264c94[_0x34bd('0x41')];_0x56baf7['predictiveIntervalAvgHoldtime']=_0x264c94['predictiveIntervalAvgHoldtime'];_0x56baf7[_0x34bd('0x42')]=_0x264c94[_0x34bd('0x42')];_0x56baf7[_0x34bd('0x43')]=_0x264c94[_0x34bd('0x43')];_0x56baf7[_0x34bd('0x44')]=_0x264c94['predictiveIntervalDroppedCallsTimeout'];_0x56baf7['predictiveIntervalErlangCalls']=_0x264c94[_0x34bd('0x45')];_0x56baf7['predictiveIntervalErlangCallsDroppedCalls']=_0x264c94[_0x34bd('0x46')];_0x56baf7[_0x34bd('0x47')]=_0x264c94[_0x34bd('0x47')];_0x56baf7[_0x34bd('0x48')]=_0x264c94[_0x34bd('0x48')];_0x56baf7['predictiveIntervalPauses']=_0x264c94[_0x34bd('0x49')];_0x56baf7[_0x34bd('0x4a')]=_0x264c94[_0x34bd('0x4a')];_0x56baf7[_0x34bd('0x4b')]=_0x264c94['predictiveIntervalTotalCalls'];_0x56baf7[_0x34bd('0x19')]=_0x264c94['message'];_0x56baf7[_0x34bd('0x4c')]=_0x264c94[_0x34bd('0x4c')];_0x56baf7['erlangCalls']=_0x264c94[_0x34bd('0x4d')];_0x56baf7['erlangCallToSecond']=_0x264c94[_0x34bd('0x4e')];_0x56baf7[_0x34bd('0x4f')]=_0x264c94[_0x34bd('0x4f')];_0x56baf7[_0x34bd('0x50')]=_0x264c94[_0x34bd('0x50')];_0x56baf7[_0x34bd('0x51')]=_0x264c94[_0x34bd('0x51')];_0x56baf7['startProgressive']=_0x264c94['startProgressive'];}if(_0x264c94['Trunk']){_0x56baf7[_0x34bd('0x52')]={'id':_0x264c94[_0x34bd('0x52')]['id'],'name':_0x264c94[_0x34bd('0x52')][_0x34bd('0x21')],'active':_0x264c94['Trunk'][_0x34bd('0x53')],'callerid':_0x264c94[_0x34bd('0x52')][_0x34bd('0x54')]};}if(_0x264c94[_0x34bd('0x55')]){_0x56baf7[_0x34bd('0x55')]={'id':_0x264c94['Interval']['id'],'name':_0x264c94[_0x34bd('0x55')]['name']};}_0x4f0dff['push'](_0x56baf7);}}_0x41bffd({'count':_0x4f0dff[_0x34bd('0x56')],'rows':_0x4f0dff});});},'UpdateVoiceQueue':function(_0x53a114){return new Promise(function(_0x8474fb,_0x293457){var _0x18d71e=_[_0x34bd('0x57')](_0x5846f3[_0x34bd('0x1f')],{'id':parseInt(_0x53a114['id'])});var _0x5b061a=_['omit'](_0x53a114,['id']);if(_0x18d71e){for(var _0x33e8e8 in _0x5b061a){if(typeof _0x5b061a[_0x33e8e8]!=='undefined'&&typeof _0x18d71e[_0x33e8e8]!==_0x34bd('0x58')){_0x18d71e[_0x33e8e8]=_0x5b061a[_0x33e8e8];}}_0x8474fb(_0x18d71e);}else{_0x293457();}});},'VoiceChannels':function(_0x223adb){return new Promise(function(_0x23b29,_0x540b04){var _0x4ad00c=_['values'](_0x5846f3['channels']);_0x23b29({'count':_0x4ad00c[_0x34bd('0x56')],'rows':_0x4ad00c});});},'VoiceChannelMixMonitor':function(_0x510c27){var _0x21d2ea=this;return new Promise(function(_0x5c0f86,_0x24033f){if(ami[_0x34bd('0xe')]()==![]){return _0x24033f(_0x21d2ea[_0x34bd('0xf')](0x1f4,[config[_0x34bd('0x10')]['ip'],config[_0x34bd('0x10')]['username'],_0x34bd('0x1b')][_0x34bd('0x1c')]('\x20')));}var _0x1f4d0b=schema(properties[_0x34bd('0x59')])[_0x34bd('0x2')](_0x510c27);if(_0x1f4d0b['length']>0x0){return _0x24033f(_0x21d2ea[_0x34bd('0xf')](0x1f4,_[_0x34bd('0x5a')](_0x1f4d0b,'message')[_0x34bd('0x1c')](',\x20')));}var _0x1a935e=_['find'](_0x5846f3['channels'],{'uniqueid':_0x510c27[_0x34bd('0x5b')]});if(_0x1a935e&&_0x1a935e['channel']){var _0x499642=util[_0x34bd('0x6')](_0x34bd('0x5c'),_0x510c27['filename']||_0x510c27['uniqueid'],_0x510c27['format']||'wav');return ami[_0x34bd('0x17')]({'action':_0x34bd('0x5d'),'channel':_0x1a935e['channel'],'file':_0x499642,'options':'ai(mixmonitorid)'})['then'](function(_0x477fd4){var _0x7df072=_['find'](_0x1a935e[_0x34bd('0x5e')],{'filename':_0x34bd('0x5f')+_0x499642[_0x34bd('0x60')]()});if(_[_0x34bd('0x61')](_0x7df072)){_0x1a935e[_0x34bd('0x5e')][_0x34bd('0x62')]({'filename':'/var/spool/asterisk/monitor/'+_0x499642[_0x34bd('0x60')](),'createdAt':moment()[_0x34bd('0x6')](_0x34bd('0x63')),'mixmonitorid':_0x477fd4[_0x34bd('0x64')],'status':'rec'});}else{_0x7df072[_0x34bd('0x64')]=_0x477fd4['mixmonitorid'];_0x7df072[_0x34bd('0x65')]='rec';}_0x5c0f86({'code':0xc8,'message':[_0x510c27[_0x34bd('0x5b')],_0x34bd('0x66'),_0x477fd4[_0x34bd('0x64')]][_0x34bd('0x1c')]('\x20'),'mixmonitorid':_0x477fd4[_0x34bd('0x64')]});})[_0x34bd('0x1a')](function(_0x6db4ba){_0x24033f(_0x21d2ea[_0x34bd('0xf')](0x1f5,[_0x510c27[_0x34bd('0x5b')],_0x6db4ba[_0x34bd('0x19')][_0x34bd('0x60')]()]['join']('\x20')));});}else{return _0x24033f(_0x21d2ea[_0x34bd('0xf')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceChannelStopMixMonitor':function(_0x15fea7){var _0x4f2091=this;return new Promise(function(_0x3fc297,_0x50ed7f){if(ami[_0x34bd('0xe')]()==![]){return _0x50ed7f(_0x4f2091[_0x34bd('0xf')](0x1f4,[config[_0x34bd('0x10')]['ip'],config[_0x34bd('0x10')][_0x34bd('0x11')],_0x34bd('0x1b')][_0x34bd('0x1c')]('\x20')));}var _0xeffa5d=schema(properties[_0x34bd('0x59')])[_0x34bd('0x2')](_0x15fea7);if(_0xeffa5d[_0x34bd('0x56')]>0x0){return _0x50ed7f(_0x4f2091[_0x34bd('0xf')](0x1f4,_[_0x34bd('0x5a')](_0xeffa5d,_0x34bd('0x19'))[_0x34bd('0x1c')](',\x20')));}var _0x4a0c28=_['find'](_0x5846f3[_0x34bd('0x67')],{'uniqueid':_0x15fea7[_0x34bd('0x5b')]});if(_0x4a0c28){return BPromise[_0x34bd('0x68')]()[_0x34bd('0x18')](function(){if(_0x4a0c28[_0x34bd('0x69')]){return ami['Action']({'action':'StopMixMonitor','channel':_0x4a0c28['channel'],'mixmonitorid':_0x15fea7['mixmonitorid']})[_0x34bd('0x1a')](function(_0x19fde8){});}})['then'](function(){if(_0x4a0c28[_0x34bd('0x6a')]){return ami[_0x34bd('0x17')]({'action':_0x34bd('0x6b'),'channel':_0x4a0c28['destinationchannel'],'mixmonitorid':_0x15fea7[_0x34bd('0x64')]})[_0x34bd('0x1a')](function(_0x2fac2a){});}})[_0x34bd('0x18')](function(_0x1d8e0f){var _0x26e763=_[_0x34bd('0x57')](_0x4a0c28[_0x34bd('0x5e')],{'mixmonitorid':_0x15fea7['mixmonitorid']});if(_0x26e763){_0x26e763['status']=_0x34bd('0x6c');}})['then'](function(){var _0x2959aa=util[_0x34bd('0x6')](_0x34bd('0x5c'),_0x15fea7['filename']||_0x15fea7['uniqueid'],_0x15fea7[_0x34bd('0x6')]||_0x34bd('0x6d'));var _0x3c2e61=_['find'](_0x4a0c28['monitors'],{'filename':_0x34bd('0x5f')+_0x2959aa[_0x34bd('0x60')]()});if(_0x3c2e61){_0x3c2e61[_0x34bd('0x65')]=_0x34bd('0x6c');}})[_0x34bd('0x18')](function(){_0x3fc297({'code':0xc8,'message':[_0x15fea7[_0x34bd('0x5b')],_0x34bd('0x6e')][_0x34bd('0x1c')]('\x20')});})[_0x34bd('0x1a')](function(_0x4f397f){_0x50ed7f(_0x4f2091['error'](0x1f5,[_0x15fea7[_0x34bd('0x5b')],_0x4f397f['message'][_0x34bd('0x60')]()][_0x34bd('0x1c')]('\x20')));});}else{return _0x50ed7f(_0x4f2091[_0x34bd('0xf')](0x1f5,_0x34bd('0x6f')));}});},'VoiceQueuesChannels':function(_0x4a5e55){return new Promise(function(_0x50ae2e,_0x3d60fa){var _0x2273af=_[_0x34bd('0x70')](_0x5846f3['queueChannels']);_0x50ae2e({'count':_0x2273af[_0x34bd('0x56')],'rows':_0x2273af});});},'VoiceQueuesChannel':function(_0x4832d5){var _0x3ec753=this;return new Promise(function(_0x35d9be,_0x171a14){var _0x55876d=schema(properties[_0x34bd('0x71')])['validate'](_0x4832d5);if(_0x55876d['length']>0x0){return _0x171a14(_0x3ec753[_0x34bd('0xf')](0x1f4,_[_0x34bd('0x5a')](_0x55876d,_0x34bd('0x19'))['join'](',\x20')));}var _0x3f909d=_[_0x34bd('0x57')](_0x5846f3[_0x34bd('0x72')],{'uniqueid':_0x4832d5['uniqueid']});if(_0x3f909d){_0x35d9be(_0x3f909d);}else{return _0x171a14(_0x3ec753[_0x34bd('0xf')](0x1f5,_0x34bd('0x6f')));}});},'VoiceQueuesChannelHangup':function(_0x385ab3){var _0x44fc41=this;return new Promise(function(_0x19ad93,_0xbb9b5d){if(ami[_0x34bd('0xe')]()==![]){return _0xbb9b5d(_0x44fc41[_0x34bd('0xf')](0x1f4,[config[_0x34bd('0x10')]['ip'],config[_0x34bd('0x10')][_0x34bd('0x11')],'ami\x20disconnected'][_0x34bd('0x1c')]('\x20')));}var _0x507806=schema(properties[_0x34bd('0x73')])['validate'](_0x385ab3);if(_0x507806[_0x34bd('0x56')]>0x0){return _0xbb9b5d(_0x44fc41[_0x34bd('0xf')](0x1f4,_[_0x34bd('0x5a')](_0x507806,_0x34bd('0x19'))[_0x34bd('0x1c')](',\x20')));}var _0x4556ce=_[_0x34bd('0x57')](_0x5846f3[_0x34bd('0x72')],{'uniqueid':_0x385ab3[_0x34bd('0x5b')]});if(_0x4556ce&&_0x4556ce[_0x34bd('0x69')]){return ami['Action']({'action':'Hangup','channel':_0x4556ce[_0x34bd('0x69')]})[_0x34bd('0x18')](function(_0xfc56a3){_0x19ad93({'code':0xc8,'message':[_0x385ab3['uniqueid'],_0xfc56a3['message']['toLowerCase']()][_0x34bd('0x1c')]('\x20')});})[_0x34bd('0x1a')](function(_0x438458){_0xbb9b5d(_0x44fc41[_0x34bd('0xf')](0x1f5,[_0x385ab3[_0x34bd('0x5b')],_0x438458['message'][_0x34bd('0x60')]()]['join']('\x20')));});}else{return _0xbb9b5d(_0x44fc41[_0x34bd('0xf')](0x1f5,_0x34bd('0x6f')));}});},'VoiceQueuesChannelRedirect':function(_0x500a25){var _0x36ebad=this;return new Promise(function(_0x5df452,_0x242093){if(ami['isConnected']()==![]){return _0x242093(_0x36ebad[_0x34bd('0xf')](0x1f4,[config['asterisk']['ip'],config[_0x34bd('0x10')][_0x34bd('0x11')],_0x34bd('0x1b')][_0x34bd('0x1c')]('\x20')));}var _0x2de8a0=schema(properties[_0x34bd('0x74')])[_0x34bd('0x2')](_0x500a25);if(_0x2de8a0[_0x34bd('0x56')]>0x0){return _0x242093(_0x36ebad['error'](0x1f4,_[_0x34bd('0x5a')](_0x2de8a0,_0x34bd('0x19'))[_0x34bd('0x1c')](',\x20')));}var _0x49d395=_['find'](_0x5846f3['queueChannels'],{'uniqueid':_0x500a25[_0x34bd('0x5b')]});if(_0x49d395&&_0x49d395[_0x34bd('0x69')]){return ami['Action']({'action':_0x34bd('0x75'),'channel':_0x49d395['channel'],'exten':_0x500a25[_0x34bd('0x76')],'context':_0x500a25[_0x34bd('0x77')]||_0x49d395[_0x34bd('0x77')],'priority':0x1})['then'](function(_0x474c2f){_0x5df452({'code':0xc8,'message':[_0x500a25['uniqueid'],_0x474c2f[_0x34bd('0x19')][_0x34bd('0x60')]()][_0x34bd('0x1c')]('\x20')});})[_0x34bd('0x1a')](function(_0x1fe8cc){_0x242093(_0x36ebad[_0x34bd('0xf')](0x1f5,[_0x500a25[_0x34bd('0x5b')],_0x1fe8cc[_0x34bd('0x19')][_0x34bd('0x60')]()][_0x34bd('0x1c')]('\x20')));});}else{return _0x242093(_0x36ebad[_0x34bd('0xf')](0x1f5,_0x34bd('0x6f')));}});},'Agents':function(_0x44c5d4){return new Promise(function(_0x48d9b9,_0x59c473){var _0x2c1b4f=_[_0x34bd('0x70')](_0x5846f3[_0x34bd('0xb')]);_0x48d9b9({'count':_0x2c1b4f[_0x34bd('0x56')],'rows':_0x2c1b4f});});},'Telephones':function(_0x36aca5){return new Promise(function(_0x49455c,_0x1799dd){var _0x1d4259=_[_0x34bd('0x70')](_0x5846f3[_0x34bd('0x78')]);_0x49455c({'count':_0x1d4259['length'],'rows':_0x1d4259});});},'Trunks':function(_0x2b838a){return new Promise(function(_0x572ac2,_0x5e329b){var _0x49ba99=_['values'](_0x5846f3[_0x34bd('0x79')]);_0x572ac2({'count':_0x49ba99[_0x34bd('0x56')],'rows':_0x49ba99});});},'OutboundChannels':function(_0x6ec278){return new Promise(function(_0x5c8e2e,_0x326888){var _0x21588f=_[_0x34bd('0x70')](_0x5846f3[_0x34bd('0x7a')]);_0x5c8e2e({'count':_0x21588f[_0x34bd('0x56')],'rows':_0x21588f});});},'Outbound':function(_0x1353b0){return new Promise(function(_0x4624fc,_0x5b0585){_0x4624fc(_0x5846f3[_0x34bd('0x2d')]);});},'Campaigns':function(_0x4456c5){return new Promise(function(_0x4451ef,_0x4be22a){var _0x5403fa=_[_0x34bd('0x70')](_0x5846f3['campaigns']);_0x4451ef({'count':_0x5403fa[_0x34bd('0x56')],'rows':_0x5403fa});});},'VoiceQueuesPreview':function(_0x384905){var _0x2e2ba1=this;return new Promise(function(_0x9f4df7,_0x22aa49){_0x2133c5[_0x34bd('0x7b')](_0x384905['id'])[_0x34bd('0x18')](function(_0xf45fee){_0x9f4df7({'code':0xc8,'message':_0xf45fee['message']});})[_0x34bd('0x1a')](function(_0x1ae798){_0x22aa49(_0x2e2ba1[_0x34bd('0xf')](0x1f4,_0x1ae798['message']));});});},'EventManager':function(_0x2b56eb){var _0x4022a0=this;return new Promise(function(_0xca91e2,_0x4502e6){if(!_0x2b56eb['event']){return _0x4502e6(_0x4022a0[_0x34bd('0xf')](0x1f4,_0x34bd('0x7c')));}ami[_0x34bd('0x7d')](_0x34bd('0x7e')+_0x2b56eb[_0x34bd('0x7f')],_0x2b56eb[_0x34bd('0x19')]);_0xca91e2({'code':0xc8,'message':_0x2b56eb});});},'FaxAccounts':function(_0x1203fc){return new Promise(function(_0x193f37,_0x15651a){var _0x3b95f6=_['values'](_0x5846f3[_0x34bd('0x80')]);_0x193f37({'count':_0x3b95f6[_0x34bd('0x56')],'rows':_0x3b95f6});});},'SendFax':function(_0x19d537){var _0x1e9839=this;return new Promise(function(_0x2f7caf,_0x38752d){_0x2a15a2[_0x34bd('0x81')](_0x19d537)[_0x34bd('0x18')](function(_0x199390){_0x2f7caf({'code':0xc8,'message':_0x199390[_0x34bd('0x19')]});})[_0x34bd('0x1a')](function(_0x1d735f){_0x38752d(_0x1e9839[_0x34bd('0xf')](0x1f4,_0x1d735f[_0x34bd('0x19')]));});});},'CheckAfterSend':function(_0x47a050){var _0x70c6a9=this;return new Promise(function(_0x545d68,_0x45ae98){_0x2a15a2[_0x34bd('0x82')](_0x47a050)[_0x34bd('0x18')](function(_0x24d607){_0x545d68({'code':0xc8,'message':_0x24d607[_0x34bd('0x19')]});})[_0x34bd('0x1a')](function(_0x334c57){_0x45ae98(_0x70c6a9[_0x34bd('0xf')](0x1f4,_0x334c57['message']));});});}};var _0x285f8a=jayson[_0x34bd('0x83')](_0x213716)[_0x34bd('0x84')]();_0x285f8a['on']('error',function(_0x4519eb){return _0x3e8744(_0x4519eb);});_0x285f8a[_0x34bd('0x5')](0x232a,_0x34bd('0x85'),function(){console[_0x34bd('0x86')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x5c2a7a(_0x34bd('0x87')+0x232a);});});};
\ No newline at end of file
+var _0x13f5=['predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','Interval','push','length','find','undefined','channels','uniqueid','channel','format','%s.%s','filename','wav','MixMonitor','ai(mixmonitorid)','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','voicechannel','map','resolve','StopMixMonitor','catch','destinationchannel','monitors','stop','StopMixMonitor\x20Success','values','queueChannels','voicequeuechannel','exten','context','telephones','outbound','campaigns','run','emit','event','faxAccounts','send','checkAfterSend','server','http','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','validate','moment','../ami','listen','%s/%s','SIP','name','timers','timer','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','join','keys','module','action','Reload','Action','message','ami\x20disconnected','command','Command','then','voiceQueues','answered','available','pTalking','sumHoldTime','talking','total','type','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate'];(function(_0x35ebc0,_0x5f13bc){var _0x208196=function(_0x5cf3c2){while(--_0x5cf3c2){_0x35ebc0['push'](_0x35ebc0['shift']());}};_0x208196(++_0x5f13bc);}(_0x13f5,0xc3));var _0x513f=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x13f5[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x513f('0x0'));var util=require(_0x513f('0x1'));var jayson=require(_0x513f('0x2'));var schema=require(_0x513f('0x3'));var BPromise=require('bluebird');var moment=require(_0x513f('0x4'));var config=require('../../../config/environment');var properties=require('../properties');var ami=require(_0x513f('0x5'));exports[_0x513f('0x6')]=function(_0x3a9531,_0x3a6320,_0x8d019b){return new BPromise(function(_0x579681,_0x2be368){var _0x6e5b15={'QueuePause':function(_0x2c75a3){return new Promise(function(_0x42951f,_0x1975b5){var _0x4755cb=util['format'](_0x513f('0x7'),_0x513f('0x8'),_0x2c75a3[_0x513f('0x9')]);if(_0x3a9531[_0x513f('0xa')]&&_0x3a9531[_0x513f('0xa')][_0x4755cb]&&_0x3a9531['timers'][_0x4755cb][_0x513f('0xb')]){_0x3a9531[_0x513f('0xa')][_0x4755cb]['updateAcw']();}if(_0x3a9531[_0x513f('0xc')][_0x4755cb]){_0x3a9531[_0x513f('0xc')][_0x4755cb][_0x513f('0xd')]({'statePause':_0x2c75a3[_0x513f('0xe')]?!![]:![]});}_0x42951f({'code':0xc8,'message':_0x513f('0xf')});});},'Reload':function(_0xfb8469){var _0x2a0e99=this;return new Promise(function(_0x265cd7,_0x23153b){if(ami[_0x513f('0x10')]()==![]){return _0x23153b(_0x2a0e99[_0x513f('0x11')](0x1f4,[config[_0x513f('0x12')]['ip'],config[_0x513f('0x12')][_0x513f('0x13')],'ami\x20disconnected'][_0x513f('0x14')]('\x20')));}_0xfb8469=_['pick'](_0xfb8469,_[_0x513f('0x15')](properties[_0x513f('0x16')]));_0xfb8469[_0x513f('0x17')]=_0x513f('0x18');return ami[_0x513f('0x19')](_0xfb8469)['then'](function(_0x4e7dd3){_0x265cd7({'code':0xc8,'message':_0x4e7dd3[_0x513f('0x1a')]});})['catch'](function(_0x186121){_0x23153b(_0x2a0e99['error'](0x1f5,_0x186121[_0x513f('0x1a')]));});});},'Command':function(_0x1d4462){var _0x511ae0=this;return new Promise(function(_0x2a461f,_0x37ccea){if(ami[_0x513f('0x10')]()==![]){return _0x37ccea(_0x511ae0[_0x513f('0x11')](0x1f4,[config[_0x513f('0x12')]['ip'],config[_0x513f('0x12')]['username'],_0x513f('0x1b')][_0x513f('0x14')]('\x20')));}_0x1d4462=_['pick'](_0x1d4462,_0x513f('0x1c'));_0x1d4462[_0x513f('0x17')]=_0x513f('0x1d');return ami[_0x513f('0x19')](_0x1d4462)[_0x513f('0x1e')](function(_0x1eb0f4){_0x2a461f({'code':0xc8,'message':_0x1eb0f4['content']});})['catch'](function(_0x59de20){_0x37ccea(_0x511ae0[_0x513f('0x11')](0x1f5,_0x59de20[_0x513f('0x1a')]));});});},'VoiceQueues':function(_0xc3fa6f){return new Promise(function(_0x1069d4,_0x2191d4){var _0xabb40b=[];for(var _0x1624d2 in _0x3a9531[_0x513f('0x1f')]){if(_0x3a9531[_0x513f('0x1f')]['hasOwnProperty'](_0x1624d2)){var _0x509e63=_0x3a9531[_0x513f('0x1f')][_0x1624d2];var _0x27136f={'id':_0x509e63['id'],'name':_0x509e63[_0x513f('0x9')],'strategy':_0x509e63['strategy'],'answered':_0x509e63[_0x513f('0x20')],'available':_0x509e63[_0x513f('0x21')],'loggedIn':_0x509e63['loggedIn'],'pTalking':_0x509e63[_0x513f('0x22')],'sumBillable':_0x509e63['sumBillable'],'sumDuration':_0x509e63['sumDuration'],'sumHoldTime':_0x509e63[_0x513f('0x23')]||0x0,'talking':_0x509e63[_0x513f('0x24')],'total':_0x509e63[_0x513f('0x25')],'type':_0x509e63[_0x513f('0x26')],'unmanaged':_0x509e63['unmanaged'],'abandoned':_0x509e63[_0x513f('0x27')],'waiting':_0x509e63[_0x513f('0x28')],'loggedInDb':_0x509e63[_0x513f('0x29')]};if(_0x509e63[_0x513f('0x26')]==='outbound'){_0x27136f[_0x513f('0x2a')]=_0x509e63[_0x513f('0x2a')];_0x27136f[_0x513f('0x2b')]=_0x509e63[_0x513f('0x2b')];_0x27136f[_0x513f('0x2c')]=_0x509e63[_0x513f('0x2c')];_0x27136f['dialOriginateCallerIdNumber']=_0x509e63['dialOriginateCallerIdNumber'];_0x27136f[_0x513f('0x2d')]=_0x509e63[_0x513f('0x2d')];_0x27136f['dialPrefix']=_0x509e63['dialPrefix'];_0x27136f[_0x513f('0x2e')]=_0x509e63[_0x513f('0x2e')];_0x27136f[_0x513f('0x2f')]=_0x509e63['outboundAnswerAgiCallsDay'];_0x27136f[_0x513f('0x30')]=_0x509e63[_0x513f('0x30')];_0x27136f['outboundBlacklistCallsDay']=_0x509e63[_0x513f('0x31')];_0x27136f[_0x513f('0x32')]=_0x509e63[_0x513f('0x32')];_0x27136f[_0x513f('0x33')]=_0x509e63[_0x513f('0x33')];_0x27136f[_0x513f('0x34')]=_0x509e63[_0x513f('0x34')];_0x27136f[_0x513f('0x35')]=_0x509e63[_0x513f('0x35')];_0x27136f['outboundDropCallsDayTimeout']=_0x509e63[_0x513f('0x36')];_0x27136f['outboundNoAnswerCallsDay']=_0x509e63['outboundNoAnswerCallsDay'];_0x27136f[_0x513f('0x37')]=_0x509e63['outboundNoSuchCallsDay'];_0x27136f[_0x513f('0x38')]=_0x509e63[_0x513f('0x38')];_0x27136f['outboundReCallsDay']=_0x509e63[_0x513f('0x39')];_0x27136f['outboundRejectCallsDay']=_0x509e63['outboundRejectCallsDay'];_0x27136f[_0x513f('0x3a')]=_0x509e63[_0x513f('0x3a')];_0x27136f[_0x513f('0x3b')]=_0x509e63[_0x513f('0x3b')];_0x27136f[_0x513f('0x3c')]=_0x509e63['predictiveIntervalAvgHoldtime'];_0x27136f[_0x513f('0x3d')]=_0x509e63[_0x513f('0x3d')];_0x27136f['predictiveIntervalDroppedCallsCallersExit']=_0x509e63[_0x513f('0x3e')];_0x27136f[_0x513f('0x3f')]=_0x509e63[_0x513f('0x3f')];_0x27136f[_0x513f('0x40')]=_0x509e63[_0x513f('0x40')];_0x27136f['predictiveIntervalErlangCallsDroppedCalls']=_0x509e63[_0x513f('0x41')];_0x27136f[_0x513f('0x42')]=_0x509e63[_0x513f('0x42')];_0x27136f[_0x513f('0x43')]=_0x509e63['predictiveIntervalMultiplicativeFactor'];_0x27136f['predictiveIntervalPauses']=_0x509e63[_0x513f('0x44')];_0x27136f[_0x513f('0x45')]=_0x509e63[_0x513f('0x45')];_0x27136f[_0x513f('0x46')]=_0x509e63['predictiveIntervalTotalCalls'];_0x27136f['message']=_0x509e63[_0x513f('0x1a')];_0x27136f[_0x513f('0x47')]=_0x509e63[_0x513f('0x47')];_0x27136f[_0x513f('0x48')]=_0x509e63[_0x513f('0x48')];_0x27136f['erlangCallToSecond']=_0x509e63[_0x513f('0x49')];_0x27136f[_0x513f('0x4a')]=_0x509e63[_0x513f('0x4a')];_0x27136f['erlangBusyFactor']=_0x509e63[_0x513f('0x4b')];_0x27136f[_0x513f('0x4c')]=_0x509e63['startPredictive'];_0x27136f[_0x513f('0x4d')]=_0x509e63[_0x513f('0x4d')];}if(_0x509e63[_0x513f('0x4e')]){_0x27136f[_0x513f('0x4e')]={'id':_0x509e63[_0x513f('0x4e')]['id'],'name':_0x509e63['Trunk'][_0x513f('0x9')],'active':_0x509e63[_0x513f('0x4e')][_0x513f('0x4f')],'callerid':_0x509e63[_0x513f('0x4e')]['callerid']};}if(_0x509e63['Interval']){_0x27136f[_0x513f('0x50')]={'id':_0x509e63[_0x513f('0x50')]['id'],'name':_0x509e63[_0x513f('0x50')][_0x513f('0x9')]};}_0xabb40b[_0x513f('0x51')](_0x27136f);}}_0x1069d4({'count':_0xabb40b[_0x513f('0x52')],'rows':_0xabb40b});});},'UpdateVoiceQueue':function(_0x25b71b){return new Promise(function(_0x5a8988,_0x3dc022){var _0xa06dcb=_[_0x513f('0x53')](_0x3a9531['voiceQueues'],{'id':parseInt(_0x25b71b['id'])});var _0x1f21d2=_['omit'](_0x25b71b,['id']);if(_0xa06dcb){for(var _0x45263f in _0x1f21d2){if(typeof _0x1f21d2[_0x45263f]!=='undefined'&&typeof _0xa06dcb[_0x45263f]!==_0x513f('0x54')){_0xa06dcb[_0x45263f]=_0x1f21d2[_0x45263f];}}_0x5a8988(_0xa06dcb);}else{_0x3dc022();}});},'VoiceChannels':function(_0x4d2489){return new Promise(function(_0x202fa4,_0x43be3e){var _0x5e1076=_['values'](_0x3a9531[_0x513f('0x55')]);_0x202fa4({'count':_0x5e1076['length'],'rows':_0x5e1076});});},'VoiceChannelMixMonitor':function(_0x3495b2){var _0x216cb4=this;return new Promise(function(_0x52af64,_0x236ae6){if(ami[_0x513f('0x10')]()==![]){return _0x236ae6(_0x216cb4['error'](0x1f4,[config[_0x513f('0x12')]['ip'],config[_0x513f('0x12')]['username'],_0x513f('0x1b')]['join']('\x20')));}var _0x1a3d47=schema(properties['voicechannel'])[_0x513f('0x3')](_0x3495b2);if(_0x1a3d47['length']>0x0){return _0x236ae6(_0x216cb4[_0x513f('0x11')](0x1f4,_['map'](_0x1a3d47,_0x513f('0x1a'))['join'](',\x20')));}var _0xd7cf8=_['find'](_0x3a9531['channels'],{'uniqueid':_0x3495b2[_0x513f('0x56')]});if(_0xd7cf8&&_0xd7cf8[_0x513f('0x57')]){var _0x4a3b48=util[_0x513f('0x58')](_0x513f('0x59'),_0x3495b2[_0x513f('0x5a')]||_0x3495b2['uniqueid'],_0x3495b2[_0x513f('0x58')]||_0x513f('0x5b'));return ami[_0x513f('0x19')]({'action':_0x513f('0x5c'),'channel':_0xd7cf8['channel'],'file':_0x4a3b48,'options':_0x513f('0x5d')})[_0x513f('0x1e')](function(_0x4e8fe1){var _0x3d8649=_[_0x513f('0x53')](_0xd7cf8['monitors'],{'filename':_0x513f('0x5e')+_0x4a3b48[_0x513f('0x5f')]()});if(_['isNil'](_0x3d8649)){_0xd7cf8['monitors']['push']({'filename':_0x513f('0x5e')+_0x4a3b48['toLowerCase'](),'createdAt':moment()['format'](_0x513f('0x60')),'mixmonitorid':_0x4e8fe1[_0x513f('0x61')],'status':_0x513f('0x62')});}else{_0x3d8649[_0x513f('0x61')]=_0x4e8fe1[_0x513f('0x61')];_0x3d8649[_0x513f('0x63')]=_0x513f('0x62');}_0x52af64({'code':0xc8,'message':[_0x3495b2['uniqueid'],_0x513f('0x64'),_0x4e8fe1[_0x513f('0x61')]][_0x513f('0x14')]('\x20'),'mixmonitorid':_0x4e8fe1['mixmonitorid']});})['catch'](function(_0x1b273b){_0x236ae6(_0x216cb4[_0x513f('0x11')](0x1f5,[_0x3495b2[_0x513f('0x56')],_0x1b273b[_0x513f('0x1a')][_0x513f('0x5f')]()]['join']('\x20')));});}else{return _0x236ae6(_0x216cb4[_0x513f('0x11')](0x1f5,_0x513f('0x65')));}});},'VoiceChannelStopMixMonitor':function(_0x13b307){var _0xbbd05e=this;return new Promise(function(_0x17e9e1,_0x4dc7e8){if(ami['isConnected']()==![]){return _0x4dc7e8(_0xbbd05e[_0x513f('0x11')](0x1f4,[config[_0x513f('0x12')]['ip'],config[_0x513f('0x12')][_0x513f('0x13')],_0x513f('0x1b')]['join']('\x20')));}var _0x265cd9=schema(properties[_0x513f('0x66')])['validate'](_0x13b307);if(_0x265cd9[_0x513f('0x52')]>0x0){return _0x4dc7e8(_0xbbd05e[_0x513f('0x11')](0x1f4,_[_0x513f('0x67')](_0x265cd9,_0x513f('0x1a'))[_0x513f('0x14')](',\x20')));}var _0x5cedfb=_['find'](_0x3a9531[_0x513f('0x55')],{'uniqueid':_0x13b307[_0x513f('0x56')]});if(_0x5cedfb){return BPromise[_0x513f('0x68')]()[_0x513f('0x1e')](function(){if(_0x5cedfb[_0x513f('0x57')]){return ami[_0x513f('0x19')]({'action':_0x513f('0x69'),'channel':_0x5cedfb[_0x513f('0x57')],'mixmonitorid':_0x13b307[_0x513f('0x61')]})[_0x513f('0x6a')](function(_0x38b746){});}})[_0x513f('0x1e')](function(){if(_0x5cedfb[_0x513f('0x6b')]){return ami[_0x513f('0x19')]({'action':_0x513f('0x69'),'channel':_0x5cedfb[_0x513f('0x6b')],'mixmonitorid':_0x13b307[_0x513f('0x61')]})[_0x513f('0x6a')](function(_0x4a6122){});}})[_0x513f('0x1e')](function(_0xfaa42f){var _0x31ef24=_[_0x513f('0x53')](_0x5cedfb['monitors'],{'mixmonitorid':_0x13b307[_0x513f('0x61')]});if(_0x31ef24){_0x31ef24[_0x513f('0x63')]='stop';}})[_0x513f('0x1e')](function(){var _0x2c238b=util['format']('%s.%s',_0x13b307[_0x513f('0x5a')]||_0x13b307['uniqueid'],_0x13b307[_0x513f('0x58')]||'wav');var _0x20ee10=_[_0x513f('0x53')](_0x5cedfb[_0x513f('0x6c')],{'filename':_0x513f('0x5e')+_0x2c238b[_0x513f('0x5f')]()});if(_0x20ee10){_0x20ee10['status']=_0x513f('0x6d');}})['then'](function(){_0x17e9e1({'code':0xc8,'message':[_0x13b307[_0x513f('0x56')],_0x513f('0x6e')]['join']('\x20')});})[_0x513f('0x6a')](function(_0x13352b){_0x4dc7e8(_0xbbd05e[_0x513f('0x11')](0x1f5,[_0x13b307[_0x513f('0x56')],_0x13352b['message']['toLowerCase']()][_0x513f('0x14')]('\x20')));});}else{return _0x4dc7e8(_0xbbd05e['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(_0x2f025b){return new Promise(function(_0x5c2352,_0x235daa){var _0x3d8012=_[_0x513f('0x6f')](_0x3a9531[_0x513f('0x70')]);_0x5c2352({'count':_0x3d8012[_0x513f('0x52')],'rows':_0x3d8012});});},'VoiceQueuesChannel':function(_0x1fdb84){var _0x1c56e4=this;return new Promise(function(_0x23cf6c,_0x4e6af3){var _0x135337=schema(properties[_0x513f('0x71')])[_0x513f('0x3')](_0x1fdb84);if(_0x135337[_0x513f('0x52')]>0x0){return _0x4e6af3(_0x1c56e4['error'](0x1f4,_[_0x513f('0x67')](_0x135337,_0x513f('0x1a'))[_0x513f('0x14')](',\x20')));}var _0x17de07=_[_0x513f('0x53')](_0x3a9531[_0x513f('0x70')],{'uniqueid':_0x1fdb84[_0x513f('0x56')]});if(_0x17de07){_0x23cf6c(_0x17de07);}else{return _0x4e6af3(_0x1c56e4[_0x513f('0x11')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelHangup':function(_0x2be7cc){var _0x167620=this;return new Promise(function(_0x1eb9af,_0x33c93b){if(ami['isConnected']()==![]){return _0x33c93b(_0x167620[_0x513f('0x11')](0x1f4,[config[_0x513f('0x12')]['ip'],config[_0x513f('0x12')][_0x513f('0x13')],_0x513f('0x1b')][_0x513f('0x14')]('\x20')));}var _0x29e93e=schema(properties['voicequeuechannelhangup'])['validate'](_0x2be7cc);if(_0x29e93e[_0x513f('0x52')]>0x0){return _0x33c93b(_0x167620['error'](0x1f4,_[_0x513f('0x67')](_0x29e93e,_0x513f('0x1a'))[_0x513f('0x14')](',\x20')));}var _0xfdf4b2=_[_0x513f('0x53')](_0x3a9531[_0x513f('0x70')],{'uniqueid':_0x2be7cc[_0x513f('0x56')]});if(_0xfdf4b2&&_0xfdf4b2[_0x513f('0x57')]){return ami[_0x513f('0x19')]({'action':'Hangup','channel':_0xfdf4b2[_0x513f('0x57')]})[_0x513f('0x1e')](function(_0x2a30e7){_0x1eb9af({'code':0xc8,'message':[_0x2be7cc[_0x513f('0x56')],_0x2a30e7[_0x513f('0x1a')][_0x513f('0x5f')]()][_0x513f('0x14')]('\x20')});})['catch'](function(_0x183894){_0x33c93b(_0x167620[_0x513f('0x11')](0x1f5,[_0x2be7cc[_0x513f('0x56')],_0x183894[_0x513f('0x1a')][_0x513f('0x5f')]()][_0x513f('0x14')]('\x20')));});}else{return _0x33c93b(_0x167620[_0x513f('0x11')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x5d570e){var _0x218d01=this;return new Promise(function(_0x471969,_0x42f6f2){if(ami['isConnected']()==![]){return _0x42f6f2(_0x218d01['error'](0x1f4,[config[_0x513f('0x12')]['ip'],config[_0x513f('0x12')]['username'],_0x513f('0x1b')][_0x513f('0x14')]('\x20')));}var _0x4ca855=schema(properties['voicequeuechannelredirect'])[_0x513f('0x3')](_0x5d570e);if(_0x4ca855['length']>0x0){return _0x42f6f2(_0x218d01[_0x513f('0x11')](0x1f4,_[_0x513f('0x67')](_0x4ca855,_0x513f('0x1a'))[_0x513f('0x14')](',\x20')));}var _0x46e1ea=_[_0x513f('0x53')](_0x3a9531[_0x513f('0x70')],{'uniqueid':_0x5d570e[_0x513f('0x56')]});if(_0x46e1ea&&_0x46e1ea[_0x513f('0x57')]){return ami[_0x513f('0x19')]({'action':'Redirect','channel':_0x46e1ea['channel'],'exten':_0x5d570e[_0x513f('0x72')],'context':_0x5d570e[_0x513f('0x73')]||_0x46e1ea[_0x513f('0x73')],'priority':0x1})[_0x513f('0x1e')](function(_0x5f3307){_0x471969({'code':0xc8,'message':[_0x5d570e[_0x513f('0x56')],_0x5f3307['message']['toLowerCase']()][_0x513f('0x14')]('\x20')});})[_0x513f('0x6a')](function(_0x573dc8){_0x42f6f2(_0x218d01[_0x513f('0x11')](0x1f5,[_0x5d570e[_0x513f('0x56')],_0x573dc8[_0x513f('0x1a')][_0x513f('0x5f')]()][_0x513f('0x14')]('\x20')));});}else{return _0x42f6f2(_0x218d01[_0x513f('0x11')](0x1f5,_0x513f('0x65')));}});},'Agents':function(_0xf66559){return new Promise(function(_0x334569,_0x46bd24){var _0x1f5eab=_['values'](_0x3a9531[_0x513f('0xc')]);_0x334569({'count':_0x1f5eab[_0x513f('0x52')],'rows':_0x1f5eab});});},'Telephones':function(_0x2b8579){return new Promise(function(_0x5d9981,_0x4b420d){var _0xc6403a=_['values'](_0x3a9531[_0x513f('0x74')]);_0x5d9981({'count':_0xc6403a['length'],'rows':_0xc6403a});});},'Trunks':function(_0x285f0c){return new Promise(function(_0x57f9a9,_0x51c5b9){var _0x335d82=_['values'](_0x3a9531['trunks']);_0x57f9a9({'count':_0x335d82['length'],'rows':_0x335d82});});},'OutboundChannels':function(_0x58f4e7){return new Promise(function(_0x3c81c5,_0x1788cc){var _0x58f6fb=_[_0x513f('0x6f')](_0x3a9531['outboundChannels']);_0x3c81c5({'count':_0x58f6fb['length'],'rows':_0x58f6fb});});},'Outbound':function(_0x5f3368){return new Promise(function(_0x3aee80,_0x4b7351){_0x3aee80(_0x3a9531[_0x513f('0x75')]);});},'Campaigns':function(_0x22675c){return new Promise(function(_0x5289f8,_0xb7657f){var _0x2cfac4=_[_0x513f('0x6f')](_0x3a9531[_0x513f('0x76')]);_0x5289f8({'count':_0x2cfac4[_0x513f('0x52')],'rows':_0x2cfac4});});},'VoiceQueuesPreview':function(_0x491a06){var _0x3a8797=this;return new Promise(function(_0x58918c,_0x5bc9cf){_0x3a6320[_0x513f('0x77')](_0x491a06['id'])[_0x513f('0x1e')](function(_0xa08bac){_0x58918c({'code':0xc8,'message':_0xa08bac[_0x513f('0x1a')]});})['catch'](function(_0x11aafc){_0x5bc9cf(_0x3a8797[_0x513f('0x11')](0x1f4,_0x11aafc['message']));});});},'EventManager':function(_0x3075f2){var _0xa64988=this;return new Promise(function(_0x1b0f54,_0x251911){if(!_0x3075f2['event']){return _0x251911(_0xa64988[_0x513f('0x11')](0x1f4,'Event\x20name\x20mandatory'));}ami[_0x513f('0x78')]('custom:'+_0x3075f2[_0x513f('0x79')],_0x3075f2[_0x513f('0x1a')]);_0x1b0f54({'code':0xc8,'message':_0x3075f2});});},'FaxAccounts':function(_0x7b6de1){return new Promise(function(_0x40d7ba,_0x20b2f5){var _0x791c0a=_[_0x513f('0x6f')](_0x3a9531[_0x513f('0x7a')]);_0x40d7ba({'count':_0x791c0a[_0x513f('0x52')],'rows':_0x791c0a});});},'SendFax':function(_0x21bae1){var _0x4735e9=this;return new Promise(function(_0x3eae3d,_0x5dd87c){_0x8d019b[_0x513f('0x7b')](_0x21bae1)[_0x513f('0x1e')](function(_0x4efad6){_0x3eae3d({'code':0xc8,'message':_0x4efad6[_0x513f('0x1a')]});})[_0x513f('0x6a')](function(_0x10671f){_0x5dd87c(_0x4735e9[_0x513f('0x11')](0x1f4,_0x10671f[_0x513f('0x1a')]));});});},'CheckAfterSend':function(_0x1d91fc){var _0x5d558a=this;return new Promise(function(_0x162786,_0xd42fe0){_0x8d019b[_0x513f('0x7c')](_0x1d91fc)[_0x513f('0x1e')](function(_0x2834a2){_0x162786({'code':0xc8,'message':_0x2834a2[_0x513f('0x1a')]});})[_0x513f('0x6a')](function(_0x42267c){_0xd42fe0(_0x5d558a[_0x513f('0x11')](0x1f4,_0x42267c[_0x513f('0x1a')]));});});}};var _0x46b4b8=jayson[_0x513f('0x7d')](_0x6e5b15)[_0x513f('0x7e')]();_0x46b4b8['on'](_0x513f('0x11'),function(_0x220ff4){return _0x2be368(_0x220ff4);});_0x46b4b8[_0x513f('0x6')](0x232a,_0x513f('0x7f'),function(){console[_0x513f('0x80')](_0x513f('0x81'),0x232a);return _0x579681(_0x513f('0x82')+0x232a);});});};
\ No newline at end of file
index 295a281..a9676dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d17=['ListId','data3','split','$or','destcalleridnum','calleridnum','phone','mobile','fax','createdAt','scheduledAt','updatedAt','union','isEmpty','info','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','routeId','firstName','calleridname','<unknown>','Unknown','destcalleridname','resolve','createContact','then','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','push','format','user:%s','trigger:%s','action','merge','length','lodash','bluebird','util','../../../../config/environment','trigger','../../rpc/cmContact','defaults','localhost','redis','[CM][%s][%s]','stringify','emit','data1','data2','isNil','data5','xmd-contactid'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2d17,0x17e));var _0x72d1=function(_0x4a32a4,_0x3bbe72){_0x4a32a4=_0x4a32a4-0x0;var _0x1c07f3=_0x2d17[_0x4a32a4];return _0x1c07f3;};'use strict';var _=require(_0x72d1('0x0'));var BPromise=require(_0x72d1('0x1'));var Redis=require('ioredis');var util=require(_0x72d1('0x2'));var config=require(_0x72d1('0x3'));var logger=require('../../../../config/logger')(_0x72d1('0x4'));var cmContactRpc=require(_0x72d1('0x5'));config['redis']=_[_0x72d1('0x6')](config['redis'],{'host':_0x72d1('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x72d1('0x8')]));function emit(_0x239d1f,_0x5b40a9,_0x477264,_0x422f5a,_0x19e248){logger['info'](_0x72d1('0x9'),_0x239d1f,_0x5b40a9['id'],_0x477264,_0x422f5a,JSON[_0x72d1('0xa')](_0x19e248));io['to'](_0x477264)[_0x72d1('0xb')](_0x422f5a,_0x19e248);}exports['exec']=function(_0x1d7520,_0x3a35c6,_0x45eb4a,_0x14a41e){var _0x3cb9c2,_0x3916f2;var _0x2bfe66={};var _0x14ef98=Number(_0x45eb4a[_0x72d1('0xc')]);var _0x2f5a78=_0x45eb4a['data2']?Boolean(Number(_0x45eb4a[_0x72d1('0xd')])):![];var _0x37017c;var _0x4c1038=![];if(!_[_0x72d1('0xe')](_0x45eb4a[_0x72d1('0xf')])){if(_0x45eb4a[_0x72d1('0xf')]=='1')_0x4c1038=!![];}if(!_0x4c1038){if(_0x14a41e[_0x72d1('0x10')]){_0x2bfe66['id']=_0x14a41e[_0x72d1('0x10')];}}if(!_0x2bfe66['id']){_0x2bfe66[_0x72d1('0x11')]=_0x14ef98;_0x37017c=_0x45eb4a[_0x72d1('0x12')]&&_0x45eb4a[_0x72d1('0x12')]!=='0'?_0x45eb4a[_0x72d1('0x12')][_0x72d1('0x13')](','):['phone'];_0x2bfe66[_0x72d1('0x14')]=_['map'](_0x37017c,function(_0x3885b2){var _0x2c9851={};_0x2c9851[_0x3885b2]=_0x14a41e['routeId']?_0x14a41e[_0x72d1('0x15')]:_0x14a41e[_0x72d1('0x16')];return _0x2c9851;});}var _0x1ca18d=['id','firstName','lastName',_0x72d1('0x17'),_0x72d1('0x18'),_0x72d1('0x19'),_0x72d1('0x11'),_0x72d1('0x1a'),_0x72d1('0x1b'),_0x72d1('0x1c')];var _0x5c7982=_[_0x72d1('0x1d')](_0x1ca18d,_0x37017c);BPromise['resolve']()['then'](cmContactRpc['getContacts']({'attributes':_0x5c7982,'where':_0x2bfe66}))['then'](function(_0x445985){_0x3916f2=_0x445985;if(!_[_0x72d1('0x1e')](_0x3916f2)){if(_0x3916f2['length']===0x1){_0x3cb9c2=_0x3916f2[0x0];logger[_0x72d1('0x1f')](_0x72d1('0x20'),_0x14a41e[_0x72d1('0x21')],_0x3a35c6['id'],_0x3cb9c2['id']);}else{logger[_0x72d1('0x1f')](_0x72d1('0x22'),_0x14a41e['uniqueid'],_0x3a35c6['id'],_['map'](_0x3916f2,'id')[_0x72d1('0x23')](','));}return;}else{logger[_0x72d1('0x1f')](_0x72d1('0x24'),_0x14a41e[_0x72d1('0x21')],_0x3a35c6['id']);var _0xdf6a69={'ListId':_0x14ef98};var _0x33d530=_0x45eb4a[_0x72d1('0x25')]&&_0x45eb4a['data4']!=='0'?_0x45eb4a['data4']:_0x72d1('0x17');if(_0x2f5a78){logger['info'](_0x72d1('0x26'),_0x14a41e[_0x72d1('0x21')],_0x3a35c6['id']);_0xdf6a69[_0x33d530]=_[_0x72d1('0xe')](_0x14a41e['routeId'])?_0x14a41e[_0x72d1('0x16')]:_0x14a41e['destcalleridnum'];if(_[_0x72d1('0xe')](_0x14a41e[_0x72d1('0x27')])){_0xdf6a69[_0x72d1('0x28')]=_0x14a41e[_0x72d1('0x29')]&&_0x14a41e['calleridname']!==_0x72d1('0x2a')?_0x14a41e['calleridname']:_0x72d1('0x2b');}else{_0xdf6a69[_0x72d1('0x28')]=_0x14a41e['destcalleridname']&&_0x14a41e[_0x72d1('0x2c')]!==_0x72d1('0x2a')?_0x14a41e[_0x72d1('0x2c')]:_0x72d1('0x2b');}return BPromise[_0x72d1('0x2d')]()['then'](cmContactRpc[_0x72d1('0x2e')](_0xdf6a69))[_0x72d1('0x2f')](function(_0x9efc2f){_0x3cb9c2=_0x9efc2f;_0x3916f2['push'](_0x9efc2f);if(_0x3cb9c2){logger[_0x72d1('0x1f')](_0x72d1('0x30'),_0x14a41e['uniqueid'],_0x3a35c6['id'],_0x3cb9c2['id']);}return;});}else{logger[_0x72d1('0x1f')](_0x72d1('0x31'),_0x14a41e[_0x72d1('0x21')],_0x3a35c6['id']);_0xdf6a69[_0x33d530]=_['isNil'](_0x14a41e[_0x72d1('0x27')])?_0x14a41e['calleridnum']:_0x14a41e[_0x72d1('0x15')];if(_[_0x72d1('0xe')](_0x14a41e[_0x72d1('0x27')])){_0xdf6a69[_0x72d1('0x28')]=_0x14a41e[_0x72d1('0x29')]&&_0x14a41e[_0x72d1('0x29')]!==_0x72d1('0x2a')?_0x14a41e[_0x72d1('0x29')]:_0x72d1('0x2b');}else{_0xdf6a69[_0x72d1('0x28')]=_0x14a41e[_0x72d1('0x2c')]&&_0x14a41e['destcalleridname']!==_0x72d1('0x2a')?_0x14a41e[_0x72d1('0x2c')]:_0x72d1('0x2b');}_0x3cb9c2=_0xdf6a69;_0x3916f2[_0x72d1('0x32')](_0xdf6a69);return;}}})['then'](function(){if(_0x1d7520){emit(_0x14a41e[_0x72d1('0x21')],_0x3a35c6,util[_0x72d1('0x33')](_0x72d1('0x34'),_0x1d7520['name']),util[_0x72d1('0x33')](_0x72d1('0x35'),_0x45eb4a[_0x72d1('0x36')]['toLowerCase']()),{'evt':_[_0x72d1('0x37')](_0x14a41e,{'autoCreate':_0x2f5a78}),'contact':_0x3cb9c2===undefined?{}:_0x3cb9c2,'contacts':_0x3916f2[_0x72d1('0x38')]===0x0?undefined:_0x3916f2});}});};
\ No newline at end of file
+var _0x515e=['lastName','mobile','fax','createdAt','resolve','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','isNil','routeId','calleridname','<unknown>','Unknown','destcalleridname','createContact','[CM][%s][%s]\x20Contact\x20created:%s','format','user:%s','trigger:%s','toLowerCase','merge','lodash','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','socket.io-emitter','info','[CM][%s][%s]','emit','exec','data1','data2','xmd-contactid','ListId','data3','split','phone','$or','map','destcalleridnum','calleridnum','firstName'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x515e,0x1d4));var _0xe515=function(_0x4b4638,_0xe99cda){_0x4b4638=_0x4b4638-0x0;var _0x59e92b=_0x515e[_0x4b4638];return _0x59e92b;};'use strict';var _=require(_0xe515('0x0'));var BPromise=require('bluebird');var Redis=require(_0xe515('0x1'));var util=require(_0xe515('0x2'));var config=require(_0xe515('0x3'));var logger=require(_0xe515('0x4'))(_0xe515('0x5'));var cmContactRpc=require(_0xe515('0x6'));config[_0xe515('0x7')]=_[_0xe515('0x8')](config['redis'],{'host':_0xe515('0x9'),'port':0x18eb});var io=require(_0xe515('0xa'))(new Redis(config[_0xe515('0x7')]));function emit(_0x4948fb,_0x3de219,_0x57b55d,_0x3e03e0,_0x4fbf51){logger[_0xe515('0xb')](_0xe515('0xc'),_0x4948fb,_0x3de219['id'],_0x57b55d,_0x3e03e0,JSON['stringify'](_0x4fbf51));io['to'](_0x57b55d)[_0xe515('0xd')](_0x3e03e0,_0x4fbf51);}exports[_0xe515('0xe')]=function(_0x218c91,_0x4ab8f3,_0x1c57a2,_0x2dc514){var _0x5a8f3,_0x989b83;var _0x250fbf={};var _0x4c400e=Number(_0x1c57a2[_0xe515('0xf')]);var _0x47c616=_0x1c57a2['data2']?Boolean(Number(_0x1c57a2[_0xe515('0x10')])):![];var _0x269899;if(_0x2dc514[_0xe515('0x11')]){_0x250fbf['id']=_0x2dc514[_0xe515('0x11')];}if(!_0x250fbf['id']){_0x250fbf[_0xe515('0x12')]=_0x4c400e;_0x269899=_0x1c57a2[_0xe515('0x13')]&&_0x1c57a2[_0xe515('0x13')]!=='0'?_0x1c57a2[_0xe515('0x13')][_0xe515('0x14')](','):[_0xe515('0x15')];_0x250fbf[_0xe515('0x16')]=_[_0xe515('0x17')](_0x269899,function(_0x2c522d){var _0x29ad93={};_0x29ad93[_0x2c522d]=_0x2dc514['routeId']?_0x2dc514[_0xe515('0x18')]:_0x2dc514[_0xe515('0x19')];return _0x29ad93;});}var _0x337608=['id',_0xe515('0x1a'),_0xe515('0x1b'),_0xe515('0x15'),_0xe515('0x1c'),_0xe515('0x1d'),_0xe515('0x12'),_0xe515('0x1e'),'scheduledAt','updatedAt'];var _0x3b31b1=_['union'](_0x337608,_0x269899);BPromise[_0xe515('0x1f')]()[_0xe515('0x20')](cmContactRpc[_0xe515('0x21')]({'attributes':_0x3b31b1,'where':_0x250fbf}))[_0xe515('0x20')](function(_0x3c937c){_0x989b83=_0x3c937c;if(!_[_0xe515('0x22')](_0x989b83)){if(_0x989b83[_0xe515('0x23')]===0x1){_0x5a8f3=_0x989b83[0x0];logger[_0xe515('0xb')](_0xe515('0x24'),_0x2dc514[_0xe515('0x25')],_0x4ab8f3['id'],_0x5a8f3['id']);}else{logger[_0xe515('0xb')](_0xe515('0x26'),_0x2dc514[_0xe515('0x25')],_0x4ab8f3['id'],_['map'](_0x989b83,'id')['join'](','));}return;}else{logger[_0xe515('0xb')](_0xe515('0x27'),_0x2dc514[_0xe515('0x25')],_0x4ab8f3['id']);var _0x3daeea={'ListId':_0x4c400e};var _0x1404e4=_0x1c57a2['data4']&&_0x1c57a2[_0xe515('0x28')]!=='0'?_0x1c57a2[_0xe515('0x28')]:_0xe515('0x15');if(_0x47c616){logger[_0xe515('0xb')](_0xe515('0x29'),_0x2dc514[_0xe515('0x25')],_0x4ab8f3['id']);_0x3daeea[_0x1404e4]=_[_0xe515('0x2a')](_0x2dc514[_0xe515('0x2b')])?_0x2dc514[_0xe515('0x19')]:_0x2dc514[_0xe515('0x18')];if(_[_0xe515('0x2a')](_0x2dc514[_0xe515('0x2b')])){_0x3daeea[_0xe515('0x1a')]=_0x2dc514[_0xe515('0x2c')]&&_0x2dc514[_0xe515('0x2c')]!==_0xe515('0x2d')?_0x2dc514[_0xe515('0x2c')]:_0xe515('0x2e');}else{_0x3daeea[_0xe515('0x1a')]=_0x2dc514[_0xe515('0x2f')]&&_0x2dc514[_0xe515('0x2f')]!==_0xe515('0x2d')?_0x2dc514[_0xe515('0x2f')]:_0xe515('0x2e');}return BPromise['resolve']()[_0xe515('0x20')](cmContactRpc[_0xe515('0x30')](_0x3daeea))['then'](function(_0x1dfb9e){_0x5a8f3=_0x1dfb9e;_0x989b83['push'](_0x1dfb9e);if(_0x5a8f3){logger[_0xe515('0xb')](_0xe515('0x31'),_0x2dc514[_0xe515('0x25')],_0x4ab8f3['id'],_0x5a8f3['id']);}return;});}else{logger[_0xe515('0xb')]('[CM][%s][%s]\x20Autocreate\x20disabled',_0x2dc514[_0xe515('0x25')],_0x4ab8f3['id']);_0x3daeea[_0x1404e4]=_['isNil'](_0x2dc514['routeId'])?_0x2dc514[_0xe515('0x19')]:_0x2dc514[_0xe515('0x18')];if(_[_0xe515('0x2a')](_0x2dc514[_0xe515('0x2b')])){_0x3daeea['firstName']=_0x2dc514['calleridname']&&_0x2dc514[_0xe515('0x2c')]!==_0xe515('0x2d')?_0x2dc514[_0xe515('0x2c')]:_0xe515('0x2e');}else{_0x3daeea['firstName']=_0x2dc514['destcalleridname']&&_0x2dc514[_0xe515('0x2f')]!==_0xe515('0x2d')?_0x2dc514[_0xe515('0x2f')]:_0xe515('0x2e');}_0x5a8f3=_0x3daeea;_0x989b83['push'](_0x3daeea);return;}}})['then'](function(){if(_0x218c91){emit(_0x2dc514[_0xe515('0x25')],_0x4ab8f3,util[_0xe515('0x32')](_0xe515('0x33'),_0x218c91['name']),util['format'](_0xe515('0x34'),_0x1c57a2['action'][_0xe515('0x35')]()),{'evt':_[_0xe515('0x36')](_0x2dc514,{'autoCreate':_0x47c616}),'contact':_0x5a8f3===undefined?{}:_0x5a8f3,'contacts':_0x989b83['length']===0x0?undefined:_0x989b83});}});};
\ No newline at end of file
index 3eea7da..b1c544d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7795=['interface','hasOwnProperty','checkTrigger','variables','Actions','length','action','toLowerCase','contactmanager','motionbar','browser','popup','TemplateId','data2','html','buildUri','isNil','data3','data4','location','uriLocation','windowWidth','800','600','winApplication','winArguments','render','format','name','trigger:%s:%s','data1','jscripty','trigger:%s','merge','user:%s','exec','integration','queue','routeId','urlforward','query','search','replace','AllConditions','every','checkConditions','channel','AnyConditions','some','field','account','ChatWebsiteId','operator','value','AccountId','upperFirst','interaction','event','agent','membername','lastevent','substatus','exports','lodash','ioredis','./urlforward','./script','../../../config/environment','trigger','defaults','redis','localhost','socket.io-emitter','url','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','bind','custom:agentconnect','syncCustomEvent','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','emit','info','prototype','motionChannel','undefined','voice','checkTriggers'];(function(_0x3bdc31,_0x539236){var _0x2a0a26=function(_0x5cefb1){while(--_0x5cefb1){_0x3bdc31['push'](_0x3bdc31['shift']());}};_0x2a0a26(++_0x539236);}(_0x7795,0x1a4));var _0x5779=function(_0x2dc744,_0x1fd483){_0x2dc744=_0x2dc744-0x0;var _0x57542d=_0x7795[_0x2dc744];return _0x57542d;};'use strict';var util=require('util');var _=require(_0x5779('0x0'));var url=require('url');var Mustache=require('mustache');var Redis=require(_0x5779('0x1'));var urlforward=require(_0x5779('0x2'));var integration=require('./integration');var cmContact=require('./cmContact');var script=require(_0x5779('0x3'));var config=require(_0x5779('0x4'));var logger=require('../../../config/logger')(_0x5779('0x5'));var ami=require('../ami');config['redis']=_[_0x5779('0x6')](config[_0x5779('0x7')],{'host':_0x5779('0x8'),'port':0x18eb});var io=require(_0x5779('0x9'))(new Redis(config[_0x5779('0x7')]));var operators={'equals':function(_0x550de9,_0x1862d5){return _0x550de9==_0x1862d5;},'not_equals':function(_0x45ac33,_0x551950){return _0x45ac33!=_0x551950;}};var barAndWebActions=['popup',_0x5779('0xa'),_0x5779('0xb')];function Trigger(_0x1721eb){this[_0x5779('0xc')]=_0x1721eb[_0x5779('0xc')];this[_0x5779('0xd')]=_0x1721eb[_0x5779('0xd')];this['voiceQueues']=_0x1721eb[_0x5779('0xe')];this['templates']=_0x1721eb[_0x5779('0xf')];this['voiceExtensions']=_0x1721eb[_0x5779('0x10')];this[_0x5779('0x11')]=_0x1721eb[_0x5779('0x11')];this['freshdeskAccounts']=_0x1721eb[_0x5779('0x12')];this['salesforceAccounts']=_0x1721eb[_0x5779('0x13')];this[_0x5779('0x14')]=_0x1721eb[_0x5779('0x14')];this['zohoAccounts']=_0x1721eb[_0x5779('0x15')];this[_0x5779('0x16')]=_0x1721eb['deskAccounts'];this[_0x5779('0x17')]=_0x1721eb[_0x5779('0x17')];this['servicenowAccounts']=_0x1721eb['servicenowAccounts'];this['dynamics365Accounts']=_0x1721eb[_0x5779('0x18')];this[_0x5779('0x19')]=_0x1721eb['freshsalesAccounts'];this[_0x5779('0x1a')]={'zendesk':this[_0x5779('0x11')],'salesforce':this[_0x5779('0x13')],'freshdesk':this[_0x5779('0x12')],'sugarcrm':this[_0x5779('0x14')],'zoho':this[_0x5779('0x15')],'desk':this[_0x5779('0x16')],'vtiger':this[_0x5779('0x17')],'dynamics365':this[_0x5779('0x18')],'freshsales':this['freshsalesAccounts'],'servicenow':this['servicenowAccounts']};ami['on'](_0x5779('0x1b'),this['syncCustomEvent'][_0x5779('0x1c')](this));ami['on'](_0x5779('0x1d'),this[_0x5779('0x1e')][_0x5779('0x1c')](this));ami['on'](_0x5779('0x1f'),this[_0x5779('0x1e')][_0x5779('0x1c')](this));ami['on'](_0x5779('0x20'),this['syncCustomEvent'][_0x5779('0x1c')](this));ami['on'](_0x5779('0x21'),this[_0x5779('0x1e')][_0x5779('0x1c')](this));ami['on'](_0x5779('0x22'),this[_0x5779('0x1e')][_0x5779('0x1c')](this));ami['on'](_0x5779('0x23'),this[_0x5779('0x1e')]['bind'](this));ami['on'](_0x5779('0x24'),this[_0x5779('0x1e')][_0x5779('0x1c')](this));ami['on']('custom:agentreject',this['syncCustomEvent']['bind'](this));ami['on']('custom:amd',this[_0x5779('0x1e')]['bind'](this));ami['on'](_0x5779('0x25'),this['syncCustomEvent'][_0x5779('0x1c')](this));ami['on'](_0x5779('0x26'),this[_0x5779('0x1e')]['bind'](this));ami['on'](_0x5779('0x27'),this[_0x5779('0x28')][_0x5779('0x1c')](this));ami['on'](_0x5779('0x29'),this[_0x5779('0x28')][_0x5779('0x1c')](this));ami['on'](_0x5779('0x2a'),this[_0x5779('0x28')]['bind'](this));ami['on'](_0x5779('0x2b'),this['syncCustomEvent'][_0x5779('0x1c')](this));ami['on']('custom:closedinteraction',this[_0x5779('0x1e')][_0x5779('0x1c')](this));ami['on'](_0x5779('0x2c'),this[_0x5779('0x1e')][_0x5779('0x1c')](this));ami['on'](_0x5779('0x2d'),this[_0x5779('0x1e')][_0x5779('0x1c')](this));ami['on'](_0x5779('0x2e'),this[_0x5779('0x1e')][_0x5779('0x1c')](this));ami['on'](_0x5779('0x2f'),this[_0x5779('0x1e')][_0x5779('0x1c')](this));ami['on'](_0x5779('0x30'),this[_0x5779('0x1e')][_0x5779('0x1c')](this));}Trigger['prototype'][_0x5779('0x31')]=function(_0x5db9ae,_0x107e74,_0x5cd1d2){logger[_0x5779('0x32')](_0x5db9ae,_0x107e74,JSON['stringify'](_0x5cd1d2));io['to'](_0x5db9ae)[_0x5779('0x31')](_0x107e74,_0x5cd1d2);};Trigger[_0x5779('0x33')][_0x5779('0x1e')]=function(_0x4dd784){var _0x4c8e2f=_['clone'](_0x4dd784);if(typeof _0x4c8e2f[_0x5779('0x34')]===_0x5779('0x35')){_0x4c8e2f['motionChannel']=_0x5779('0x36');}this[_0x5779('0x37')](_0x4c8e2f);};Trigger[_0x5779('0x33')]['syncAgentDial']=function(_0x5a18c3){if(this[_0x5779('0xd')][_0x5a18c3[_0x5779('0x38')]]){this['syncCustomEvent'](_0x5a18c3);}};Trigger[_0x5779('0x33')]['checkTriggers']=function(_0x521a3a){var _0x4cfc54;for(var _0x47f863 in this[_0x5779('0xc')]){if(this[_0x5779('0xc')][_0x5779('0x39')](_0x47f863)){if(this[_0x5779('0xc')][_0x47f863]['status']){_0x4cfc54=this[_0x5779('0x3a')](this[_0x5779('0xc')][_0x47f863],_0x521a3a);if(_0x4cfc54){_['merge'](_0x521a3a,_0x521a3a[_0x5779('0x3b')]);for(var _0x33fa76=0x0,_0x3dfe29,_0x249365,_0x10f588;_0x33fa76<this['triggers'][_0x47f863][_0x5779('0x3c')][_0x5779('0x3d')];_0x33fa76+=0x1){_0x3dfe29=this[_0x5779('0xc')][_0x47f863][_0x5779('0x3c')][_0x33fa76];if(this[_0x5779('0xd')][_0x521a3a[_0x5779('0x38')]]){switch(_0x3dfe29[_0x5779('0x3e')][_0x5779('0x3f')]()){case _0x5779('0x40'):break;case _0x5779('0x41'):case _0x5779('0x42'):var _0x4ef5b1={};switch(barAndWebActions[_0x3dfe29['data1']]){case _0x5779('0x43'):_0x4ef5b1[_0x5779('0x44')]=_0x3dfe29[_0x5779('0x45')];_0x4ef5b1['html']=this[_0x5779('0xf')][_0x3dfe29[_0x5779('0x45')]]?Mustache['render'](this[_0x5779('0xf')][_0x3dfe29['data2']][_0x5779('0x46')],_0x521a3a):'template\x20not\x20found';break;case _0x5779('0xa'):_0x4ef5b1['uri']=this[_0x5779('0x47')](_0x3dfe29[_0x5779('0x45')],_0x521a3a,_[_0x5779('0x48')](_0x3dfe29[_0x5779('0x49')])?!![]:parseInt(_0x3dfe29[_0x5779('0x49')],0xa));if(_[_0x5779('0x48')](_0x3dfe29[_0x5779('0x4a')])){_0x4ef5b1[_0x5779('0x4b')]='0';}else{_0x4ef5b1[_0x5779('0x4c')]=_0x3dfe29[_0x5779('0x4a')];_0x4ef5b1[_0x5779('0x4d')]=_['isNil'](_0x3dfe29['data5'])?_0x5779('0x4e'):_0x3dfe29['data5'];_0x4ef5b1['windowHeight']=_['isNil'](_0x3dfe29['data6'])?_0x5779('0x4f'):_0x3dfe29['data6'];}break;case _0x5779('0xb'):_0x4ef5b1[_0x5779('0x50')]=_0x3dfe29['data2']?Mustache['render'](_0x3dfe29[_0x5779('0x45')],_0x521a3a):'';_0x4ef5b1[_0x5779('0x51')]=_0x3dfe29['data3']?Mustache[_0x5779('0x52')](_0x3dfe29[_0x5779('0x49')],_0x521a3a):'';break;}this[_0x5779('0x31')](util[_0x5779('0x53')]('user:%s',this[_0x5779('0xd')][_0x521a3a['interface']][_0x5779('0x54')]),util[_0x5779('0x53')](_0x5779('0x55'),_0x3dfe29[_0x5779('0x3e')][_0x5779('0x3f')](),barAndWebActions[_0x3dfe29[_0x5779('0x56')]]),_['merge'](_0x4ef5b1,_0x521a3a));break;case _0x5779('0x57'):this[_0x5779('0x31')](util[_0x5779('0x53')]('user:%s',this['agents'][_0x521a3a['interface']][_0x5779('0x54')]),util[_0x5779('0x53')](_0x5779('0x58'),_0x3dfe29[_0x5779('0x3e')]['toLowerCase']()),_[_0x5779('0x59')]({'ProjectId':parseInt(_0x3dfe29[_0x5779('0x56')],0xa)},_0x521a3a));break;default:this[_0x5779('0x31')](util['format'](_0x5779('0x5a'),this[_0x5779('0xd')][_0x521a3a[_0x5779('0x38')]][_0x5779('0x54')]),util['format'](_0x5779('0x58'),_0x3dfe29[_0x5779('0x3e')]['toLowerCase']()),_[_0x5779('0x59')]({},_0x3dfe29,_0x521a3a));}}switch(_0x3dfe29[_0x5779('0x3e')][_0x5779('0x3f')]()){case _0x5779('0x40'):cmContact[_0x5779('0x5b')](this[_0x5779('0xd')][_0x521a3a['interface']],this[_0x5779('0xc')][_0x47f863],_0x3dfe29,_0x521a3a);break;case _0x5779('0x5c'):integration[_0x5779('0x5b')](_0x3dfe29,_0x521a3a,this[_0x5779('0x1a')],this[_0x5779('0xd')][_0x521a3a[_0x5779('0x38')]],this[_0x5779('0xe')][_0x521a3a[_0x5779('0x5d')]],this[_0x5779('0x10')][_0x521a3a[_0x5779('0x5e')]]);break;case _0x5779('0x5f'):urlforward[_0x5779('0x5b')](_0x3dfe29,_0x521a3a);break;case'script':script[_0x5779('0x5b')](_0x3dfe29,_0x521a3a);break;}}}}}}};Trigger[_0x5779('0x33')][_0x5779('0x47')]=function(_0x252e0a,_0x869836,_0x478656){var _0x57d59c=url['parse'](Mustache['render'](_0x252e0a,_0x869836),!![]);if(_0x478656){_['merge'](_0x57d59c[_0x5779('0x60')],_0x869836);}delete _0x57d59c[_0x5779('0x61')];var _0x5a2d6a=url['format'](_0x57d59c);_0x5a2d6a=_0x5a2d6a[_0x5779('0x62')](/\/\?/g,'?');return _0x5a2d6a;};Trigger[_0x5779('0x33')][_0x5779('0x3a')]=function(_0x28590f,_0x20f53d){var _0x344a58=!![];var _0x289e04=!![];var _0x5c2863=![];if(_0x28590f['channel']===_0x20f53d[_0x5779('0x34')]){_0x5c2863=!![];}if(_0x28590f[_0x5779('0x63')][_0x5779('0x3d')]){_0x344a58=_[_0x5779('0x64')](_0x28590f['AllConditions'],this[_0x5779('0x65')](_0x20f53d,_0x28590f[_0x5779('0x66')]));}if(_0x28590f[_0x5779('0x67')][_0x5779('0x3d')]){_0x289e04=_[_0x5779('0x68')](_0x28590f['AnyConditions'],this[_0x5779('0x65')](_0x20f53d,_0x28590f[_0x5779('0x66')]));}return _0x5c2863&&_0x344a58&&_0x289e04;};Trigger[_0x5779('0x33')]['checkConditions']=function(_0x588550,_0x581726){return function(_0x58a0e3){switch(_0x58a0e3[_0x5779('0x69')]){case _0x5779('0x6a'):if(_0x588550[_0x5779('0x66')]===_0x581726){if(_0x581726==='chat'){return _0x588550[_0x5779('0x6b')]?operators[_0x58a0e3[_0x5779('0x6c')]](Number(_0x58a0e3[_0x5779('0x6d')]),_0x588550[_0x5779('0x6b')]):![];}else{return _0x588550[_['upperFirst'](_0x581726)+_0x5779('0x6e')]?operators[_0x58a0e3['operator']](Number(_0x58a0e3[_0x5779('0x6d')]),_0x588550[_[_0x5779('0x6f')](_0x581726)+_0x5779('0x6e')]):![];}}break;case _0x5779('0x70'):case'message':if(_0x588550['channel']===_0x581726){return _0x588550[_0x5779('0x71')]?operators[_0x58a0e3[_0x5779('0x6c')]](_0x58a0e3['value'],_0x588550[_0x5779('0x71')]):![];}break;case _0x5779('0x5d'):return _0x588550[_0x5779('0x5d')]?operators[_0x58a0e3[_0x5779('0x6c')]](_0x58a0e3[_0x5779('0x6d')],_0x588550[_0x5779('0x5d')]):![];case _0x5779('0x72'):return _0x588550[_0x5779('0x73')]?operators[_0x58a0e3[_0x5779('0x6c')]](_0x58a0e3[_0x5779('0x6d')],_0x588550['membername']):![];case _0x5779('0x74'):return _0x588550[_0x5779('0x74')]?operators[_0x58a0e3['operator']](_0x58a0e3[_0x5779('0x6d')],_0x588550[_0x5779('0x74')]):![];case'routeId':return _0x588550['routeId']?operators[_0x58a0e3['operator']](_0x58a0e3['value'],_0x588550[_0x5779('0x5e')]):![];case'mailSubstatus':return typeof _0x588550[_0x5779('0x75')]!==_0x5779('0x35')?operators[_0x58a0e3[_0x5779('0x6c')]](_0x58a0e3[_0x5779('0x6d')],_0x588550[_0x5779('0x75')]):![];}return![];};};module[_0x5779('0x76')]=Trigger;
\ No newline at end of file
+var _0xa2c9=['exports','lodash','url','mustache','./urlforward','./integration','./cmContact','../../../config/environment','trigger','../ami','localhost','socket.io-emitter','redis','popup','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','syncCustomEvent','bind','custom:agentconnect','custom:agentcomplete','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:newinteraction','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','emit','info','stringify','clone','checkTriggers','prototype','interface','hasOwnProperty','status','checkTrigger','merge','variables','Actions','length','motionbar','data1','TemplateId','data2','html','render','template\x20not\x20found','uri','data3','isNil','data4','location','uriLocation','windowWidth','data5','600','data6','winApplication','winArguments','format','trigger:%s:%s','toLowerCase','jscripty','name','trigger:%s','action','user:%s','contactmanager','exec','integration','buildUri','parse','replace','AllConditions','every','checkConditions','AnyConditions','channel','field','operator','upperFirst','AccountId','interaction','message','value','event','queue','agent','membername','lastevent','routeId'];(function(_0x47b138,_0x4e555e){var _0x3056a6=function(_0x22f085){while(--_0x22f085){_0x47b138['push'](_0x47b138['shift']());}};_0x3056a6(++_0x4e555e);}(_0xa2c9,0x157));var _0x9a2c=function(_0x195d11,_0x48e825){_0x195d11=_0x195d11-0x0;var _0x68b13e=_0xa2c9[_0x195d11];return _0x68b13e;};'use strict';var util=require('util');var _=require(_0x9a2c('0x0'));var url=require(_0x9a2c('0x1'));var Mustache=require(_0x9a2c('0x2'));var Redis=require('ioredis');var urlforward=require(_0x9a2c('0x3'));var integration=require(_0x9a2c('0x4'));var cmContact=require(_0x9a2c('0x5'));var script=require('./script');var config=require(_0x9a2c('0x6'));var logger=require('../../../config/logger')(_0x9a2c('0x7'));var ami=require(_0x9a2c('0x8'));config['redis']=_['defaults'](config['redis'],{'host':_0x9a2c('0x9'),'port':0x18eb});var io=require(_0x9a2c('0xa'))(new Redis(config[_0x9a2c('0xb')]));var operators={'equals':function(_0x311f4f,_0x28d0f9){return _0x311f4f==_0x28d0f9;},'not_equals':function(_0x3faad0,_0x3ce41c){return _0x3faad0!=_0x3ce41c;}};var barAndWebActions=[_0x9a2c('0xc'),'url',_0x9a2c('0xd')];function Trigger(_0x1989ca){this[_0x9a2c('0xe')]=_0x1989ca[_0x9a2c('0xe')];this[_0x9a2c('0xf')]=_0x1989ca[_0x9a2c('0xf')];this[_0x9a2c('0x10')]=_0x1989ca['voiceQueues'];this[_0x9a2c('0x11')]=_0x1989ca[_0x9a2c('0x11')];this[_0x9a2c('0x12')]=_0x1989ca[_0x9a2c('0x12')];this[_0x9a2c('0x13')]=_0x1989ca['zendeskAccounts'];this['freshdeskAccounts']=_0x1989ca[_0x9a2c('0x14')];this[_0x9a2c('0x15')]=_0x1989ca[_0x9a2c('0x15')];this[_0x9a2c('0x16')]=_0x1989ca[_0x9a2c('0x16')];this[_0x9a2c('0x17')]=_0x1989ca['zohoAccounts'];this[_0x9a2c('0x18')]=_0x1989ca[_0x9a2c('0x18')];this[_0x9a2c('0x19')]=_0x1989ca['vtigerAccounts'];this[_0x9a2c('0x1a')]=_0x1989ca[_0x9a2c('0x1a')];this[_0x9a2c('0x1b')]=_0x1989ca[_0x9a2c('0x1b')];this[_0x9a2c('0x1c')]=_0x1989ca['freshsalesAccounts'];this[_0x9a2c('0x1d')]={'zendesk':this[_0x9a2c('0x13')],'salesforce':this[_0x9a2c('0x15')],'freshdesk':this[_0x9a2c('0x14')],'sugarcrm':this[_0x9a2c('0x16')],'zoho':this[_0x9a2c('0x17')],'desk':this['deskAccounts'],'vtiger':this[_0x9a2c('0x19')],'dynamics365':this[_0x9a2c('0x1b')],'freshsales':this[_0x9a2c('0x1c')],'servicenow':this[_0x9a2c('0x1a')]};ami['on']('custom:agentcalled',this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x20'),this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on']('custom:agentringnoanswer',this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x21'),this['syncCustomEvent']['bind'](this));ami['on']('custom:agentnosuchnumber',this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on']('custom:agentnoanswer',this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x22'),this[_0x9a2c('0x1e')]['bind'](this));ami['on'](_0x9a2c('0x23'),this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x24'),this['syncCustomEvent'][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x25'),this['syncCustomEvent'][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x26'),this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x27'),this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x28'),this[_0x9a2c('0x29')]['bind'](this));ami['on'](_0x9a2c('0x2a'),this['syncAgentDial'][_0x9a2c('0x1f')](this));ami['on']('custom:dialend',this[_0x9a2c('0x29')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x2b'),this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on']('custom:closedinteraction',this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x2c'),this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x2d'),this['syncCustomEvent'][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x2e'),this[_0x9a2c('0x1e')]['bind'](this));ami['on'](_0x9a2c('0x2f'),this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));}Trigger['prototype'][_0x9a2c('0x30')]=function(_0x325560,_0x1f31dc,_0x1659c0){logger[_0x9a2c('0x31')](_0x325560,_0x1f31dc,JSON[_0x9a2c('0x32')](_0x1659c0));io['to'](_0x325560)['emit'](_0x1f31dc,_0x1659c0);};Trigger['prototype'][_0x9a2c('0x1e')]=function(_0x4eb4fa){var _0x3d9cb5=_[_0x9a2c('0x33')](_0x4eb4fa);this[_0x9a2c('0x34')](_0x3d9cb5);};Trigger[_0x9a2c('0x35')][_0x9a2c('0x29')]=function(_0xc6a4bc){if(this[_0x9a2c('0xf')][_0xc6a4bc[_0x9a2c('0x36')]]){this[_0x9a2c('0x1e')](_0xc6a4bc);}};Trigger[_0x9a2c('0x35')]['checkTriggers']=function(_0x476098){var _0x5275e4;for(var _0x211b4f in this['triggers']){if(this[_0x9a2c('0xe')][_0x9a2c('0x37')](_0x211b4f)){if(this[_0x9a2c('0xe')][_0x211b4f][_0x9a2c('0x38')]){_0x5275e4=this[_0x9a2c('0x39')](this['triggers'][_0x211b4f],_0x476098);if(_0x5275e4){_[_0x9a2c('0x3a')](_0x476098,_0x476098[_0x9a2c('0x3b')]);for(var _0x3f40e4=0x0,_0x4be620,_0x510167,_0x5025d4;_0x3f40e4<this[_0x9a2c('0xe')][_0x211b4f][_0x9a2c('0x3c')][_0x9a2c('0x3d')];_0x3f40e4+=0x1){_0x4be620=this['triggers'][_0x211b4f][_0x9a2c('0x3c')][_0x3f40e4];if(this['agents'][_0x476098[_0x9a2c('0x36')]]){switch(_0x4be620['action']['toLowerCase']()){case'contactmanager':break;case _0x9a2c('0x3e'):case'browser':var _0x5434c2={};switch(barAndWebActions[_0x4be620[_0x9a2c('0x3f')]]){case _0x9a2c('0xc'):_0x5434c2[_0x9a2c('0x40')]=_0x4be620[_0x9a2c('0x41')];_0x5434c2[_0x9a2c('0x42')]=this['templates'][_0x4be620[_0x9a2c('0x41')]]?Mustache[_0x9a2c('0x43')](this[_0x9a2c('0x11')][_0x4be620['data2']][_0x9a2c('0x42')],_0x476098):_0x9a2c('0x44');break;case _0x9a2c('0x1'):_0x5434c2[_0x9a2c('0x45')]=this['buildUri'](_0x4be620[_0x9a2c('0x41')],_0x476098,_['isNil'](_0x4be620[_0x9a2c('0x46')])?!![]:parseInt(_0x4be620['data3'],0xa));if(_[_0x9a2c('0x47')](_0x4be620[_0x9a2c('0x48')])){_0x5434c2[_0x9a2c('0x49')]='0';}else{_0x5434c2[_0x9a2c('0x4a')]=_0x4be620[_0x9a2c('0x48')];_0x5434c2[_0x9a2c('0x4b')]=_[_0x9a2c('0x47')](_0x4be620[_0x9a2c('0x4c')])?'800':_0x4be620[_0x9a2c('0x4c')];_0x5434c2['windowHeight']=_[_0x9a2c('0x47')](_0x4be620['data6'])?_0x9a2c('0x4d'):_0x4be620[_0x9a2c('0x4e')];}break;case _0x9a2c('0xd'):_0x5434c2[_0x9a2c('0x4f')]=_0x4be620['data2']?Mustache[_0x9a2c('0x43')](_0x4be620[_0x9a2c('0x41')],_0x476098):'';_0x5434c2[_0x9a2c('0x50')]=_0x4be620['data3']?Mustache[_0x9a2c('0x43')](_0x4be620['data3'],_0x476098):'';break;}this[_0x9a2c('0x30')](util[_0x9a2c('0x51')]('user:%s',this[_0x9a2c('0xf')][_0x476098[_0x9a2c('0x36')]]['name']),util[_0x9a2c('0x51')](_0x9a2c('0x52'),_0x4be620['action'][_0x9a2c('0x53')](),barAndWebActions[_0x4be620[_0x9a2c('0x3f')]]),_['merge'](_0x5434c2,_0x476098));break;case _0x9a2c('0x54'):this[_0x9a2c('0x30')](util[_0x9a2c('0x51')]('user:%s',this[_0x9a2c('0xf')][_0x476098[_0x9a2c('0x36')]][_0x9a2c('0x55')]),util[_0x9a2c('0x51')](_0x9a2c('0x56'),_0x4be620[_0x9a2c('0x57')][_0x9a2c('0x53')]()),_[_0x9a2c('0x3a')]({'ProjectId':parseInt(_0x4be620['data1'],0xa)},_0x476098));break;default:this['emit'](util[_0x9a2c('0x51')](_0x9a2c('0x58'),this[_0x9a2c('0xf')][_0x476098[_0x9a2c('0x36')]][_0x9a2c('0x55')]),util[_0x9a2c('0x51')]('trigger:%s',_0x4be620['action'][_0x9a2c('0x53')]()),_[_0x9a2c('0x3a')]({},_0x4be620,_0x476098));}}switch(_0x4be620['action'][_0x9a2c('0x53')]()){case _0x9a2c('0x59'):cmContact[_0x9a2c('0x5a')](this[_0x9a2c('0xf')][_0x476098[_0x9a2c('0x36')]],this[_0x9a2c('0xe')][_0x211b4f],_0x4be620,_0x476098);break;case _0x9a2c('0x5b'):integration['exec'](_0x4be620,_0x476098,this[_0x9a2c('0x1d')],this[_0x9a2c('0xf')][_0x476098['interface']],this[_0x9a2c('0x10')][_0x476098['queue']],this[_0x9a2c('0x12')][_0x476098['routeId']]);break;case'urlforward':urlforward[_0x9a2c('0x5a')](_0x4be620,_0x476098);break;case'script':script['exec'](_0x4be620,_0x476098);break;}}}}}}};Trigger['prototype'][_0x9a2c('0x5c')]=function(_0x593e20,_0x2e79bc,_0x5e78b1){var _0x1f6c5c=url[_0x9a2c('0x5d')](Mustache['render'](_0x593e20,_0x2e79bc),!![]);if(_0x5e78b1){_[_0x9a2c('0x3a')](_0x1f6c5c['query'],_0x2e79bc);}delete _0x1f6c5c['search'];var _0x2f0d0f=url['format'](_0x1f6c5c);_0x2f0d0f=_0x2f0d0f[_0x9a2c('0x5e')](/\/\?/g,'?');return _0x2f0d0f;};Trigger[_0x9a2c('0x35')][_0x9a2c('0x39')]=function(_0x2919d3,_0x1fa685){var _0x4e7984=!![],_0x53c30b=!![];if(_0x2919d3[_0x9a2c('0x5f')][_0x9a2c('0x3d')]){_0x4e7984=_[_0x9a2c('0x60')](_0x2919d3['AllConditions'],this[_0x9a2c('0x61')](_0x1fa685,_0x2919d3['channel']));}if(_0x2919d3[_0x9a2c('0x62')]['length']){_0x53c30b=_['some'](_0x2919d3[_0x9a2c('0x62')],this[_0x9a2c('0x61')](_0x1fa685,_0x2919d3[_0x9a2c('0x63')]));}return _0x4e7984&&_0x53c30b;};Trigger[_0x9a2c('0x35')][_0x9a2c('0x61')]=function(_0x386cd6,_0x5645d7){return function(_0x4e9742){switch(_0x4e9742[_0x9a2c('0x64')]){case'account':if(_0x386cd6[_0x9a2c('0x63')]===_0x5645d7){if(_0x5645d7==='chat'){return _0x386cd6['ChatWebsiteId']?operators[_0x4e9742[_0x9a2c('0x65')]](Number(_0x4e9742['value']),_0x386cd6['ChatWebsiteId']):![];}else{return _0x386cd6[_[_0x9a2c('0x66')](_0x5645d7)+_0x9a2c('0x67')]?operators[_0x4e9742['operator']](Number(_0x4e9742['value']),_0x386cd6[_[_0x9a2c('0x66')](_0x5645d7)+'AccountId']):![];}}break;case _0x9a2c('0x68'):case _0x9a2c('0x69'):if(_0x386cd6[_0x9a2c('0x63')]===_0x5645d7){return _0x386cd6['event']?operators[_0x4e9742[_0x9a2c('0x65')]](_0x4e9742[_0x9a2c('0x6a')],_0x386cd6[_0x9a2c('0x6b')]):![];}break;case'queue':return _0x386cd6['queue']?operators[_0x4e9742[_0x9a2c('0x65')]](_0x4e9742[_0x9a2c('0x6a')],_0x386cd6[_0x9a2c('0x6c')]):![];case _0x9a2c('0x6d'):return _0x386cd6[_0x9a2c('0x6e')]?operators[_0x4e9742[_0x9a2c('0x65')]](_0x4e9742[_0x9a2c('0x6a')],_0x386cd6[_0x9a2c('0x6e')]):![];case _0x9a2c('0x6f'):return _0x386cd6['lastevent']?operators[_0x4e9742['operator']](_0x4e9742[_0x9a2c('0x6a')],_0x386cd6['lastevent']):![];case _0x9a2c('0x70'):return _0x386cd6['routeId']?operators[_0x4e9742[_0x9a2c('0x65')]](_0x4e9742[_0x9a2c('0x6a')],_0x386cd6['routeId']):![];}return![];};};module[_0x9a2c('0x71')]=Trigger;
\ No newline at end of file
index 714aa9c..8b07ed6 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(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x5fc3,0xa8));var _0x35fc=function(_0xc8db6b,_0x320abd){_0xc8db6b=_0xc8db6b-0x0;var _0x12cb81=_0x5fc3[_0xc8db6b];return _0x12cb81;};'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 _0x814b=['calleridname','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','desk','redis','defaults','localhost','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','then','total_entries','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug','[HTTP]','%s:%s','authType','token','username','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','length','string','nameField','toLowerCase','content','picklist','idField','customField','custom_fields','type','variableName','customVariable','Variable','name','priority','merge','getString','Subjects','xCALLY','CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','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','catch','error','stringify','recordingFormat','none','[OUTBOUND]','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','unmanaged','lastevent'];(function(_0x557572,_0x3772f2){var _0x143817=function(_0x3d9d64){while(--_0x3d9d64){_0x557572['push'](_0x557572['shift']());}};_0x143817(++_0x3772f2);}(_0x814b,0x1a2));var _0xb814=function(_0x3a081b,_0x516437){_0x3a081b=_0x3a081b-0x0;var _0xb166c4=_0x814b[_0x3a081b];return _0xb166c4;};'use strict';var _=require(_0xb814('0x0'));var rp=require(_0xb814('0x1'));var md5=require(_0xb814('0x2'));var util=require(_0xb814('0x3'));var Redis=require(_0xb814('0x4'));var intUtil=require(_0xb814('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb814('0x6'))(_0xb814('0x7'));config[_0xb814('0x8')]=_[_0xb814('0x9')](config[_0xb814('0x8')],{'host':_0xb814('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb814('0x8')]));function emit(_0x2e6272,_0x5c8539,_0x271af9){io['to'](_0x2e6272)[_0xb814('0xb')](_0x5c8539,_0x271af9);}var headers={'Content-Type':_0xb814('0xc'),'Accept':_0xb814('0xc')};function getUser(_0x1fea33,_0x21d4a5){if(intUtil[_0xb814('0xd')](_0x21d4a5)===!![]){logger[_0xb814('0xe')](_0xb814('0xf'),_0x21d4a5);return request({'uri':util[_0xb814('0x10')](_0xb814('0x11'),_0x1fea33['remoteUri'])})[_0xb814('0x12')](function(_0x56278f){if(_0x56278f[_0xb814('0x13')]){return _[_0xb814('0x14')](_0x56278f[_0xb814('0x15')][_0xb814('0x16')],{'email':_0x21d4a5});}})[_0xb814('0x12')](function(_0x3bde14){if(_0x3bde14){logger[_0xb814('0xe')](_0xb814('0x17'));return _0x3bde14;}else{logger[_0xb814('0xe')](_0xb814('0x18'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}});}else{logger[_0xb814('0xe')](_0xb814('0x1b'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}}function request(_0x125ce2){logger[_0xb814('0x1c')](_0xb814('0x1d'),JSON['stringify'](_0x125ce2));return rp(_[_0xb814('0x9')](_0x125ce2,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x270598){var _0xfac75b;if(_0x270598['authType']==='basic'){_0xfac75b=util['format'](_0xb814('0x1e'),_0x270598['username'],_0x270598['password']);}else if(_0x270598[_0xb814('0x1f')]===_0xb814('0x20')){_0xfac75b=util[_0xb814('0x10')]('%s/token:%s',_0x270598[_0xb814('0x21')],_0x270598['token']);}return util[_0xb814('0x10')](_0xb814('0x22'),new Buffer(_0xfac75b)[_0xb814('0x23')](_0xb814('0x24')));}function getEndUser(_0x27352e,_0x2bd039,_0x1f5d40){logger['info'](_0xb814('0x25'),_0x1f5d40);return request({'uri':util['format'](_0xb814('0x26'),_0x27352e[_0xb814('0x1a')]),'qs':{'phone':_0x1f5d40}})[_0xb814('0x12')](function(_0x208927){if(_0x208927[_0xb814('0x13')]){logger[_0xb814('0xe')](_0xb814('0x27'));return _0x208927['_embedded'][_0xb814('0x16')][0x0];}else{logger[_0xb814('0xe')](_0xb814('0x28'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x29'),_0x27352e[_0xb814('0x1a')]),'method':_0xb814('0x2a'),'body':{'first_name':_0x2bd039,'title':_0x2bd039,'phone_numbers':[{'type':_0xb814('0x2b'),'value':_0x1f5d40}]}});}});}function getTags(_0x5a6291,_0x271aa8){var _0x328a08=[];if(_0x5a6291&&_0x5a6291['length']>0x0){_0x328a08=_[_0xb814('0x2c')](_0x5a6291,_0x271aa8);}return _0x328a08;}function getCustomFields(_0x37d24d,_0x530744){var _0x499f22=[];var _0x20577b={'custom_fields':{}};if(_0x37d24d[_0xb814('0x2d')]>0x0){_['forEach'](_0x37d24d,function(_0x338a28){if(_['includes']([_0xb814('0x2e'),'picklist'],_0x338a28['type'])&&_0x338a28[_0xb814('0x2f')]&&!_0x338a28['customField']){_0x20577b[_0x338a28[_0xb814('0x2f')][_0xb814('0x30')]()]=_0x338a28[_0xb814('0x31')]['toString']();}else if(_['includes']([_0xb814('0x2e'),_0xb814('0x32')],_0x338a28['type'])&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x338a28[_0xb814('0x31')][_0xb814('0x23')]();}else if(_0x338a28[_0xb814('0x36')]==='variable'&&_0x338a28[_0xb814('0x37')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x530744[_0x338a28[_0xb814('0x37')]]&&(_0x20577b[_0xb814('0x35')][_0x338a28['idField']]=_0x530744[_0x338a28[_0xb814('0x37')]]['toString']());}else if(_0x338a28[_0xb814('0x36')]===_0xb814('0x38')&&_0x338a28[_0xb814('0x39')]&&_0x338a28['Variable'][_0xb814('0x3a')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28['customField']){_0x530744[_0x338a28[_0xb814('0x39')][_0xb814('0x3a')][_0xb814('0x30')]()]&&(_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x530744[_0x338a28[_0xb814('0x39')]['name'][_0xb814('0x30')]()]['toString']());}});}if(_0x20577b[_0xb814('0x3b')]){_0x20577b['priority']=Number(_0x20577b[_0xb814('0x3b')]);}return _0x20577b;}function getTicket(_0x4b9233,_0x2f8a2e,_0x26675a,_0x54a7fb,_0x4d308a){logger['info']('Creating\x20new\x20ticket...');var _0x17549e=_[_0xb814('0x3c')]({'subject':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x3e')],_0x4d308a,'\x20'),'type':'phone','status':'new','labels':[_0xb814('0x3f'),'Motion',_0xb814('0x40')][_0xb814('0x41')](getTags(_0x54a7fb[_0xb814('0x42')],_0xb814('0x3a'))),'description':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x43')],_0x4d308a,'\x0a'),'_links':{'assigned_user':{'href':util[_0xb814('0x10')](_0xb814('0x44'),_0x2f8a2e['id']),'class':_0xb814('0x45')}},'message':{'direction':'in','body':intUtil['getString'](_0x54a7fb['Descriptions'],_0x4d308a,'\x0a')}},getCustomFields(_0x54a7fb['Fields'],_0x4d308a));return request({'uri':util[_0xb814('0x10')]('%s/customers/%d/cases',_0x4b9233[_0xb814('0x1a')],_0x26675a['id']),'method':'POST','body':_0x17549e});}exports[_0xb814('0x46')]=function(_0x44ff56,_0x9ef639,_0x2e97cc,_0x4fae23,_0x30fc57,_0x15f01a){var _0x2b23c7,_0x22cf27;_0x15f01a[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x15f01a['remoteUri']);_0x15f01a[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x15f01a[_0xb814('0x48')]);if(_0x30fc57&&_0x30fc57[_0xb814('0x49')]){logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x4b'));_0x9ef639['recordingURL']=util['format'](_0xb814('0x4c'),_0x15f01a[_0xb814('0x48')],_0x9ef639[_0xb814('0x4d')],md5(_0x9ef639[_0xb814('0x4d')]));}else{_0x9ef639[_0xb814('0x4e')]='';}headers[_0xb814('0x4f')]=getAuth(_0x15f01a);return getUser(_0x15f01a,_0x4fae23[_0xb814('0x50')])[_0xb814('0x12')](function(_0x2eb9b6){_0x2b23c7=_0x2eb9b6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x2b23c7['id']);return getEndUser(_0x15f01a,_0x9ef639['calleridname'],_0x9ef639[_0xb814('0x52')]);})[_0xb814('0x12')](function(_0x4a76bb){_0x22cf27=_0x4a76bb;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x22cf27['id']);return getTicket(_0x15f01a,_0x2b23c7,_0x22cf27,_0x2e97cc,_0x9ef639);})[_0xb814('0x12')](function(_0x37866f){if(_0x37866f){logger[_0xb814('0xe')](_0xb814('0x53'));logger[_0xb814('0xe')](_0xb814('0x54'),_0x37866f['id']);switch(_0x15f01a[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0x37866f['id']});break;case _0xb814('0x58'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x5a'),{'uri':util['format'](_0xb814('0x5b'),_0x37866f['id'])});break;default:logger['error'](_0xb814('0x4a'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x3cf8f8){console['error'](_0x3cf8f8);logger[_0xb814('0x5d')](_0xb814('0x4a'),JSON[_0xb814('0x5e')](_0x3cf8f8));});};exports['outbound']=function(_0x3da050,_0x5f0e58,_0x13bdcf,_0x158893,_0x4aed78,_0x39952d,_0x4a3f84){var _0x539be7,_0x3b9709;_0x39952d[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x39952d['remoteUri']);_0x39952d[_0xb814('0x48')]=intUtil['stripTrailingSlash'](_0x39952d[_0xb814('0x48')]);if(_0x4a3f84&&_0x4a3f84[_0xb814('0x5f')]&&_0x4a3f84['recordingFormat']!==_0xb814('0x60')){logger['info'](_0xb814('0x61'),_0xb814('0x4b'));_0x5f0e58[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x39952d[_0xb814('0x48')],_0x5f0e58[_0xb814('0x4d')],md5(_0x5f0e58[_0xb814('0x4d')]));}headers['Authorization']=getAuth(_0x39952d);return getUser(_0x39952d,_0x158893[_0xb814('0x50')])[_0xb814('0x12')](function(_0x5d71d5){_0x539be7=_0x5d71d5;logger[_0xb814('0xe')](_0xb814('0x51'),_0x539be7['id']);return getEndUser(_0x39952d,_0x5f0e58['destcalleridname'],_0x5f0e58[_0xb814('0x62')]);})['then'](function(_0x48362c){_0x3b9709=_0x48362c;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x3b9709['id']);return getTicket(_0x39952d,_0x539be7,_0x3b9709,_0x13bdcf,_0x5f0e58);})[_0xb814('0x12')](function(_0xd1cd8b){if(_0xd1cd8b){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')]('The\x20Ticket\x20ID\x20is:',_0xd1cd8b['id']);switch(_0x39952d[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x63'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0xd1cd8b['id']});break;case'newTab':logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),'trigger:browser:url',{'uri':util[_0xb814('0x10')]('%s/agent/tickets/%s',_0x39952d[_0xb814('0x1a')],_0xd1cd8b['id'])});break;default:logger[_0xb814('0x5d')](_0xb814('0x61'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x579351){logger[_0xb814('0x5d')]('[OUTBOUND]',JSON[_0xb814('0x5e')](_0x579351));});};exports[_0xb814('0x64')]=function(_0xa03cd2,_0x1b024f,_0x3377d4,_0x167d82,_0x143518,_0x4d44e3){var _0x44088d,_0x51ca51;_0x4d44e3[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x1a')]);_0x4d44e3[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x48')]);if(_0x143518&&_0x143518['monitor_format']){logger[_0xb814('0xe')]('['+_0x1b024f[_0xb814('0x65')]['toUpperCase']()+']',_0xb814('0x4b'));_0x1b024f[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x4d44e3[_0xb814('0x48')],_0x1b024f['uniqueid'],md5(_0x1b024f[_0xb814('0x4d')]));}else{_0x1b024f['recordingURL']='';}headers[_0xb814('0x4f')]=getAuth(_0x4d44e3);return getUser(_0x4d44e3)[_0xb814('0x12')](function(_0x2645f6){_0x44088d=_0x2645f6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x44088d['id']);return getEndUser(_0x4d44e3,_0x1b024f[_0xb814('0x66')],_0x1b024f['calleridnum']);})['then'](function(_0x5d064b){_0x51ca51=_0x5d064b;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x51ca51['id']);return getTicket(_0x4d44e3,_0x44088d,_0x51ca51,_0x3377d4,_0x1b024f);})[_0xb814('0x12')](function(_0x1d3954){if(_0x1d3954){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')](_0xb814('0x54'),_0x1d3954['id']);}})[_0xb814('0x5c')](function(_0x5aabbe){logger[_0xb814('0x5d')]('['+_0x1b024f[_0xb814('0x65')][_0xb814('0x67')]()+']',JSON[_0xb814('0x5e')](_0x5aabbe));});};
\ No newline at end of file
index ec99f23..2c4c630 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b0a=['internalemailaddress','isdisabled',']\x20Agent\x20found\x20','systemuserid','userId','info','toLowerCase','destcalleridnum','calleridnum','contacts','/systemusers(','headers','lastIndexOf','enduserId','outbound','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','telephone1','contactid','forEach','includes','type','nameField','idField','substring','indexOf','content','incident','incidents','getString','Subjects','Descriptions','/contacts(','Fields','ticketType','phonecall','callDirection','queue','odata-entityid','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','serverUrl','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','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','name',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','bluebird','request-promise','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','POST','clientId','remoteUri','username','password','clientSecret','catch','error','toUpperCase','message','then','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','validateEmail','email','userEmail','length'];(function(_0x29f9a6,_0x42a4e2){var _0x444451=function(_0x4e028c){while(--_0x4e028c){_0x29f9a6['push'](_0x29f9a6['shift']());}};_0x444451(++_0x42a4e2);}(_0x7b0a,0x10b));var _0xa7b0=function(_0x5f3d7d,_0x1bdf90){_0x5f3d7d=_0x5f3d7d-0x0;var _0x54fcfc=_0x7b0a[_0x5f3d7d];return _0x54fcfc;};'use strict';var _=require(_0xa7b0('0x0'));var BPromise=require(_0xa7b0('0x1'));var rp=require(_0xa7b0('0x2'));var util=require('util');var intUtil=require(_0xa7b0('0x3'));var md5=require(_0xa7b0('0x4'));var Redis=require(_0xa7b0('0x5'));var logger=require(_0xa7b0('0x6'))(_0xa7b0('0x7'));var config=require(_0xa7b0('0x8'));config[_0xa7b0('0x9')]=_[_0xa7b0('0xa')](config[_0xa7b0('0x9')],{'host':_0xa7b0('0xb'),'port':0x18eb});var io=require(_0xa7b0('0xc'))(new Redis(config[_0xa7b0('0x9')]));function getAuthToken(_0x4f3890,_0x472f7b,_0x3fc7c9){var _0x1d28a8={'method':_0xa7b0('0xd'),'uri':_0x472f7b,'form':{'client_id':_0x4f3890[_0xa7b0('0xe')],'resource':_0x4f3890[_0xa7b0('0xf')],'username':_0x4f3890[_0xa7b0('0x10')],'password':_0x4f3890[_0xa7b0('0x11')],'grant_type':_0xa7b0('0x11'),'client_secret':_0x4f3890[_0xa7b0('0x12')]},'json':!![]};return rp(_0x1d28a8)['then'](function(_0x3e26e4){return _0x3e26e4['access_token'];})[_0xa7b0('0x13')](function(_0x145873){logger[_0xa7b0('0x14')]('['+[_0x3fc7c9[_0xa7b0('0x15')]()]+']\x20Wrong\x20credentials!');return _0x145873[_0xa7b0('0x16')];});}function getUser(_0x4f95ee,_0x6b3f72,_0x32ab5f,_0x2b137d,_0x4bef89,_0xd3005f){return new BPromise(function(_0x22eaac,_0x37996f){return getAuthToken(_0x6b3f72,_0x2b137d,_0xd3005f)[_0xa7b0('0x17')](function(_0x5d5d4e){var _0x319692={'method':_0xa7b0('0x18'),'uri':_0x4bef89+_0xa7b0('0x19'),'headers':{'Authorization':_0xa7b0('0x1a')+_0x5d5d4e,'OData-Version':_0xa7b0('0x1b')},'json':!![]};return rp(_0x319692);})[_0xa7b0('0x17')](function(_0xcd279e){var _0x1c9efc=_0xcd279e[_0xa7b0('0x1c')];var _0x5b2d64=![];var _0x163f31=null;if(!_['isNil'](_0x32ab5f)){if(intUtil[_0xa7b0('0x1d')](_0x32ab5f[_0xa7b0('0x1e')])){_0x4f95ee[_0xa7b0('0x1f')]=_0x32ab5f['email'];for(_0x163f31=0x0;_0x163f31<_0x1c9efc[_0xa7b0('0x20')];_0x163f31++){if(_0x1c9efc[_0x163f31][_0xa7b0('0x21')]===_0x32ab5f[_0xa7b0('0x1e')]&&!_0x1c9efc[_0x163f31][_0xa7b0('0x22')]){_0x5b2d64=!![];logger['info']('['+[_0xd3005f[_0xa7b0('0x15')]()]+_0xa7b0('0x23')+_0x1c9efc[_0x163f31][_0xa7b0('0x24')]+'!');_0x4f95ee[_0xa7b0('0x25')]=_0x1c9efc[_0x163f31][_0xa7b0('0x24')];}}}}if(!_0x5b2d64){logger[_0xa7b0('0x26')]('['+[_0xd3005f[_0xa7b0('0x15')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x4f95ee[_0xa7b0('0x1f')]=_0x6b3f72[_0xa7b0('0x10')];for(_0x163f31=0x0;_0x163f31<_0x1c9efc['length'];_0x163f31++){if(_0x1c9efc[_0x163f31]['internalemailaddress']===_0x6b3f72['username']){_0x4f95ee['userId']=_0x1c9efc[_0x163f31]['systemuserid'];}}}_0x22eaac(_0x4f95ee);})['catch'](function(_0x57f70b){_0x37996f(_0x57f70b[_0xa7b0('0x16')]);});});}function createEndUser(_0x37e63c,_0x18a599,_0x21da59,_0x5cc75d,_0x1d4af3,_0x4f1565){return new BPromise(function(_0x313537,_0x16a91c){return getAuthToken(_0x18a599,_0x21da59,_0x4f1565)['then'](function(_0x4ca90e){var _0x46f8c3=_0x4f1565[_0xa7b0('0x27')]()==='outbound'?_0x1d4af3[_0xa7b0('0x28')]:_0x1d4af3[_0xa7b0('0x29')];var _0x4b7526={'method':'POST','uri':_0x5cc75d+_0xa7b0('0x2a'),'body':{'telephone1':_0x46f8c3,'fullname':_0x46f8c3,'firstname':_0x46f8c3,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xa7b0('0x2b')+_0x37e63c[_0xa7b0('0x25')]+')'},'headers':{'Authorization':_0xa7b0('0x1a')+_0x4ca90e,'OData-Version':_0xa7b0('0x1b')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x4b7526);})[_0xa7b0('0x17')](function(_0x5e7598){var _0x137eac=_0x5e7598[_0xa7b0('0x2c')]['odata-entityid'];var _0x2680af=_0x137eac['substring'](_0x137eac[_0xa7b0('0x2d')]('(')+0x1,_0x137eac['lastIndexOf'](')'));_0x37e63c[_0xa7b0('0x2e')]=_0x2680af;_0x313537(_0x37e63c);})[_0xa7b0('0x13')](function(_0x7188c9){_0x16a91c(_0x7188c9[_0xa7b0('0x16')]);});});}function getEndUser(_0xcadac,_0x24a9ac,_0x490edb,_0x2598bd,_0x5e2fc7,_0x5ed72b){return new BPromise(function(_0x329619,_0x536ffd){var _0x5ecc1c=_0x5ed72b[_0xa7b0('0x27')]()===_0xa7b0('0x2f')?_0x5e2fc7[_0xa7b0('0x28')]:_0x5e2fc7[_0xa7b0('0x29')];return getAuthToken(_0x24a9ac,_0x490edb,_0x5ed72b)[_0xa7b0('0x17')](function(_0x3e167c){var _0x2cf8d0={'method':_0xa7b0('0x18'),'uri':_0x2598bd+_0xa7b0('0x30')+_0x5ecc1c[_0xa7b0('0x31')]('+',_0xa7b0('0x32'))+'\x27','headers':{'Authorization':_0xa7b0('0x1a')+_0x3e167c,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x2cf8d0);})['then'](function(_0x58222d){var _0x2b2ec1=null;if(_0x58222d){var _0x586f58=_0x58222d['value'];var _0x419e6f=![];for(_0x2b2ec1=0x0;_0x2b2ec1<_0x586f58['length'];_0x2b2ec1++){if(_0x586f58[_0x2b2ec1][_0xa7b0('0x33')]===_0x5ecc1c){_0x419e6f=!![];_0xcadac['enduserId']=_0x586f58[_0x2b2ec1][_0xa7b0('0x34')];}}if(_0x419e6f){_0x329619(_0xcadac);}else{return createEndUser(_0xcadac,_0x24a9ac,_0x490edb,_0x2598bd,_0x5e2fc7,_0x5ed72b)[_0xa7b0('0x17')](function(_0x5454ae){logger['info']('['+[_0x5ed72b[_0xa7b0('0x15')]()]+']\x20Enduser\x20created!',_0x5454ae['enduserId']);_0x329619(_0x5454ae);});}}else{return createEndUser(_0xcadac,_0x24a9ac,_0x490edb,_0x2598bd,_0x5e2fc7,_0x5ed72b)[_0xa7b0('0x17')](function(_0x4f6900){logger['info']('['+[_0x5ed72b['toUpperCase']()]+']\x20Enduser\x20Created!',_0x4f6900[_0xa7b0('0x2e')]);_0x329619(_0x4f6900);});}});});}function getCustomFields(_0xbc6e04,_0x2cb17e,_0x173a8e){var _0x48aefc={};if(_0xbc6e04[_0xa7b0('0x20')]>0x0){_[_0xa7b0('0x35')](_0xbc6e04,function(_0x10ba4f){if(_[_0xa7b0('0x36')](['string','picklist'],_0x10ba4f[_0xa7b0('0x37')])&&_0x10ba4f[_0xa7b0('0x38')]&&!_0x10ba4f['customField']){var _0x88c0d6=_0x10ba4f[_0xa7b0('0x39')][_0xa7b0('0x27')]();var _0x1de506=_0x88c0d6[_0xa7b0('0x3a')](0x0,_0x88c0d6[_0xa7b0('0x3b')]('_'));var _0x2fc0f2=_0x88c0d6[_0xa7b0('0x3a')](_0x88c0d6['indexOf']('_')+0x1);if(_0x1de506===_0x173a8e){_0x48aefc[_0x2fc0f2]=_0x10ba4f[_0xa7b0('0x3c')];}}});}return _0x48aefc;}function getTicket(_0x583785,_0x224322,_0x71ce76,_0x36fb96,_0x23c018,_0xb79924,_0x1a969d){return new BPromise(function(_0x23f5b7,_0x30086e){var _0x520977;return getAuthToken(_0x224322,_0x71ce76,_0x1a969d)['then'](function(_0x45d503){if(_0xb79924['ticketType']===_0xa7b0('0x3d')){_0x520977={'method':_0xa7b0('0xd'),'uri':_0x36fb96+_0xa7b0('0x3e'),'body':Object['assign']({},{'title':intUtil[_0xa7b0('0x3f')](_0xb79924[_0xa7b0('0x40')],_0x23c018,'\x20'),'description':intUtil[_0xa7b0('0x3f')](_0xb79924[_0xa7b0('0x41')],_0x23c018,'\x0a'),'customerid_contact@odata.bind':_0xa7b0('0x42')+_0x583785[_0xa7b0('0x2e')]+')','ownerid@odata.bind':'/systemusers('+_0x583785[_0xa7b0('0x25')]+')','caseorigincode':'1'},getCustomFields(_0xb79924[_0xa7b0('0x43')],_0x23c018,_0xb79924[_0xa7b0('0x44')])),'headers':{'Authorization':'Bearer\x20'+_0x45d503,'OData-Version':_0xa7b0('0x1b')},'json':!![],'resolveWithFullResponse':!![]};}if(_0xb79924[_0xa7b0('0x44')]===_0xa7b0('0x45')){_0x520977={'method':'POST','uri':_0x36fb96+'phonecalls','body':Object['assign']({},{'subject':intUtil[_0xa7b0('0x3f')](_0xb79924[_0xa7b0('0x40')],_0x23c018,'\x20'),'phonenumber':String(_0x23c018[_0xa7b0('0x29')]),'description':intUtil['getString'](_0xb79924[_0xa7b0('0x41')],_0x23c018,'\x0a'),'regardingobjectid_contact@odata.bind':_0xa7b0('0x42')+_0x583785[_0xa7b0('0x2e')]+')','ownerid@odata.bind':_0xa7b0('0x2b')+_0x583785[_0xa7b0('0x25')]+')','directioncode':_0x583785[_0xa7b0('0x46')]===_0xa7b0('0x47')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xa7b0('0x2b')+_0x583785['userId']+')','participationtypemask':_0x583785[_0xa7b0('0x46')]===_0xa7b0('0x47')?0x2:0x1},{'partyid_contact@odata.bind':_0xa7b0('0x42')+_0x583785[_0xa7b0('0x2e')]+')','participationtypemask':_0x583785[_0xa7b0('0x46')]===_0xa7b0('0x47')?0x1:0x2}]},getCustomFields(_0xb79924[_0xa7b0('0x43')],_0x23c018,_0xb79924['ticketType'])),'headers':{'Authorization':_0xa7b0('0x1a')+_0x45d503,'OData-Version':_0xa7b0('0x1b')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x520977);})[_0xa7b0('0x17')](function(_0x285c1f){var _0x438898=_0x285c1f['headers'][_0xa7b0('0x48')];var _0x45b48d=_0x438898[_0xa7b0('0x3a')](_0x438898[_0xa7b0('0x2d')]('(')+0x1,_0x438898[_0xa7b0('0x2d')](')'));_0x583785[_0xa7b0('0x49')]=_0x45b48d;_0x23f5b7(_0x583785);})['catch'](function(_0x3d8505){_0x30086e(_0x3d8505[_0xa7b0('0x16')]);});});}function emit(_0x150580,_0x43aeee,_0x34d327,_0x3f99a3){var _0x19044f={'uri':util[_0xa7b0('0x4a')](_0xa7b0('0x4b'),_0x150580,_0x34d327,_0x3f99a3)};io['to'](util['format'](_0xa7b0('0x4c'),_0x43aeee))[_0xa7b0('0x4d')](_0xa7b0('0x4e'),_0x19044f);}exports['cs']=function(_0x15f337,_0x391067,_0x1f13b6,_0x3cae5a,_0x5cb0c0,_0x22e84c,_0x3d36d2,_0x1a2ad7){var _0x2e5790={};_0x22e84c[_0xa7b0('0xf')]=intUtil['stripTrailingSlash'](_0x22e84c['remoteUri']);_0x22e84c[_0xa7b0('0x4f')]=intUtil[_0xa7b0('0x50')](_0x22e84c['serverUrl']);_0x2e5790[_0xa7b0('0x46')]=_0x1a2ad7===_0xa7b0('0x47')||_0x1a2ad7===_0xa7b0('0x51')?_0xa7b0('0x47'):_0xa7b0('0x2f');var _0x465385=util[_0xa7b0('0x4a')](_0xa7b0('0x52'),_0x22e84c[_0xa7b0('0xf')]);var _0x3c5933=util['format'](_0xa7b0('0x53'),_0x22e84c[_0xa7b0('0x54')]);var _0x1ca1aa=util[_0xa7b0('0x4a')](_0xa7b0('0x55'),_0x22e84c[_0xa7b0('0x4f')],_0x391067[_0xa7b0('0x56')],md5(_0x391067['uniqueid']));if(_0x5cb0c0&&_0x5cb0c0['monitor_format']){logger[_0xa7b0('0x26')](_0xa7b0('0x57'),_0xa7b0('0x58'));_0x391067['recordingURL']=_0x1ca1aa;}else if(_0x3d36d2&&_0x3d36d2[_0xa7b0('0x59')]&&_0x3d36d2['recordingFormat']!==_0xa7b0('0x5a')){logger[_0xa7b0('0x26')](_0xa7b0('0x5b'),_0xa7b0('0x58'));_0x391067[_0xa7b0('0x5c')]=_0x1ca1aa;}else{_0x391067[_0xa7b0('0x5c')]='';}return getUser(_0x2e5790,_0x22e84c,_0x3cae5a,_0x3c5933,_0x465385,_0x1a2ad7)['then'](function(_0x200feb){logger['info']('['+_0x1a2ad7[_0xa7b0('0x15')]()+']\x20The\x20User\x20ID\x20is:',_0x200feb[_0xa7b0('0x25')]);logger[_0xa7b0('0x26')]('['+_0x1a2ad7[_0xa7b0('0x15')]()+_0xa7b0('0x5d'),_0x200feb['userEmail']);return getEndUser(_0x200feb,_0x22e84c,_0x3c5933,_0x465385,_0x391067,_0x1a2ad7);})[_0xa7b0('0x17')](function(_0x5b7956){logger[_0xa7b0('0x26')]('['+_0x1a2ad7['toUpperCase']()+_0xa7b0('0x5e'),_0x5b7956['enduserId']);logger[_0xa7b0('0x26')]('['+_0x1a2ad7[_0xa7b0('0x15')]()+_0xa7b0('0x5f'),_0x391067['calleridnum']);return getTicket(_0x5b7956,_0x22e84c,_0x3c5933,_0x465385,_0x391067,_0x1f13b6,_0x1a2ad7);})[_0xa7b0('0x17')](function(_0x4b6722){logger[_0xa7b0('0x26')](util['format']('['+_0x1a2ad7[_0xa7b0('0x15')]()+_0xa7b0('0x60'),_0x1f13b6[_0xa7b0('0x44')],_0x4b6722[_0xa7b0('0x49')]));logger[_0xa7b0('0x26')](util['format']('['+_0x1a2ad7[_0xa7b0('0x15')]()+_0xa7b0('0x61'),_0x1a2ad7));if(_0x1a2ad7!==_0xa7b0('0x51')){logger[_0xa7b0('0x26')]('['+_0x1a2ad7['toUpperCase']()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x22e84c[_0xa7b0('0xf')],_0x3cae5a[_0xa7b0('0x62')],_0x1f13b6[_0xa7b0('0x44')],_0x4b6722['ticketId']);}})['catch'](function(_0x2389bb){logger['error']('['+_0x1a2ad7[_0xa7b0('0x15')]()+_0xa7b0('0x63'),util['inspect'](_0x2389bb,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xf1db=['Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','bluebird','request-promise','./util','dynamics365','../../../../config/environment','redis','defaults','localhost','POST','clientId','remoteUri','username','password','clientSecret','access_token','catch',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','then','value','isNil','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','toUpperCase','systemuserid','info','userId','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','headers','odata-entityid','substring','lastIndexOf','enduserId','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','telephone1','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','includes','string','picklist','customField','idField','indexOf','content','ticketType','incident','incidents','assign','getString','Fields','phonecall','phonecalls','Subjects','Descriptions','/contacts(','/systemusers(','callDirection','queue','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','[QUEUE]'];(function(_0x263fe7,_0x268e6d){var _0x5837b1=function(_0x3c07e2){while(--_0x3c07e2){_0x263fe7['push'](_0x263fe7['shift']());}};_0x5837b1(++_0x268e6d);}(_0xf1db,0x191));var _0xbf1d=function(_0x332616,_0x5c8b9b){_0x332616=_0x332616-0x0;var _0x4f3037=_0xf1db[_0x332616];return _0x4f3037;};'use strict';var _=require(_0xbf1d('0x0'));var BPromise=require(_0xbf1d('0x1'));var rp=require(_0xbf1d('0x2'));var util=require('util');var intUtil=require(_0xbf1d('0x3'));var md5=require('md5');var Redis=require('ioredis');var logger=require('../../../../config/logger')(_0xbf1d('0x4'));var config=require(_0xbf1d('0x5'));config[_0xbf1d('0x6')]=_[_0xbf1d('0x7')](config[_0xbf1d('0x6')],{'host':_0xbf1d('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xbf1d('0x6')]));function getAuthToken(_0x21a3b0,_0xe21792,_0x4f3f7d){var _0x29e9ec={'method':_0xbf1d('0x9'),'uri':_0xe21792,'form':{'client_id':_0x21a3b0[_0xbf1d('0xa')],'resource':_0x21a3b0[_0xbf1d('0xb')],'username':_0x21a3b0[_0xbf1d('0xc')],'password':_0x21a3b0[_0xbf1d('0xd')],'grant_type':_0xbf1d('0xd'),'client_secret':_0x21a3b0[_0xbf1d('0xe')]},'json':!![]};return rp(_0x29e9ec)['then'](function(_0x11dca3){return _0x11dca3[_0xbf1d('0xf')];})[_0xbf1d('0x10')](function(_0x5356cf){logger['error']('['+[_0x4f3f7d['toUpperCase']()]+_0xbf1d('0x11'));return _0x5356cf[_0xbf1d('0x12')];});}function getUser(_0x3cc619,_0x29c406,_0x367588,_0x51a2f2,_0x378057,_0xf83201){return new BPromise(function(_0x5aefd9,_0x24033d){return getAuthToken(_0x29c406,_0x51a2f2,_0xf83201)['then'](function(_0x2daa9a){var _0x4c946c={'method':_0xbf1d('0x13'),'uri':_0x378057+_0xbf1d('0x14'),'headers':{'Authorization':_0xbf1d('0x15')+_0x2daa9a,'OData-Version':_0xbf1d('0x16')},'json':!![]};return rp(_0x4c946c);})[_0xbf1d('0x17')](function(_0x31c312){var _0x4c1e75=_0x31c312[_0xbf1d('0x18')];var _0x278670=![];var _0x1ef973=null;if(!_[_0xbf1d('0x19')](_0x367588)){if(intUtil[_0xbf1d('0x1a')](_0x367588[_0xbf1d('0x1b')])){_0x3cc619[_0xbf1d('0x1c')]=_0x367588[_0xbf1d('0x1b')];for(_0x1ef973=0x0;_0x1ef973<_0x4c1e75[_0xbf1d('0x1d')];_0x1ef973++){if(_0x4c1e75[_0x1ef973][_0xbf1d('0x1e')]===_0x367588[_0xbf1d('0x1b')]&&!_0x4c1e75[_0x1ef973][_0xbf1d('0x1f')]){_0x278670=!![];logger['info']('['+[_0xf83201[_0xbf1d('0x20')]()]+']\x20Agent\x20found\x20'+_0x4c1e75[_0x1ef973][_0xbf1d('0x21')]+'!');_0x3cc619['userId']=_0x4c1e75[_0x1ef973][_0xbf1d('0x21')];}}}}if(!_0x278670){logger[_0xbf1d('0x22')]('['+[_0xf83201['toUpperCase']()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x3cc619[_0xbf1d('0x1c')]=_0x29c406['username'];for(_0x1ef973=0x0;_0x1ef973<_0x4c1e75[_0xbf1d('0x1d')];_0x1ef973++){if(_0x4c1e75[_0x1ef973][_0xbf1d('0x1e')]===_0x29c406[_0xbf1d('0xc')]){_0x3cc619[_0xbf1d('0x23')]=_0x4c1e75[_0x1ef973][_0xbf1d('0x21')];}}}_0x5aefd9(_0x3cc619);})[_0xbf1d('0x10')](function(_0x4e8a80){_0x24033d(_0x4e8a80['message']);});});}function createEndUser(_0x21ae4e,_0x2e67b9,_0x4de06e,_0x41f511,_0x5adc6e,_0x2702aa){return new BPromise(function(_0x1eb1a5,_0x185957){return getAuthToken(_0x2e67b9,_0x4de06e,_0x2702aa)[_0xbf1d('0x17')](function(_0x1d0bc5){var _0x9ab988=_0x2702aa[_0xbf1d('0x24')]()===_0xbf1d('0x25')?_0x5adc6e[_0xbf1d('0x26')]:_0x5adc6e[_0xbf1d('0x27')];var _0x45e0e1={'method':_0xbf1d('0x9'),'uri':_0x41f511+_0xbf1d('0x28'),'body':{'telephone1':_0x9ab988,'fullname':_0x9ab988,'firstname':_0x9ab988,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x21ae4e[_0xbf1d('0x23')]+')'},'headers':{'Authorization':_0xbf1d('0x15')+_0x1d0bc5,'OData-Version':_0xbf1d('0x16')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x45e0e1);})['then'](function(_0x3e59e0){var _0x4927f5=_0x3e59e0[_0xbf1d('0x29')][_0xbf1d('0x2a')];var _0x5bd4c8=_0x4927f5[_0xbf1d('0x2b')](_0x4927f5[_0xbf1d('0x2c')]('(')+0x1,_0x4927f5[_0xbf1d('0x2c')](')'));_0x21ae4e[_0xbf1d('0x2d')]=_0x5bd4c8;_0x1eb1a5(_0x21ae4e);})['catch'](function(_0x418b6b){_0x185957(_0x418b6b[_0xbf1d('0x12')]);});});}function getEndUser(_0x1ff70f,_0x41e5b7,_0x131656,_0x3bda5a,_0x1b96c7,_0x41ec42){return new BPromise(function(_0x2dd923,_0x534644){var _0x413706=_0x41ec42[_0xbf1d('0x24')]()==='outbound'?_0x1b96c7[_0xbf1d('0x26')]:_0x1b96c7['calleridnum'];return getAuthToken(_0x41e5b7,_0x131656,_0x41ec42)[_0xbf1d('0x17')](function(_0x17d551){var _0x5e0966={'method':_0xbf1d('0x13'),'uri':_0x3bda5a+_0xbf1d('0x2e')+_0x413706[_0xbf1d('0x2f')]('+',_0xbf1d('0x30'))+'\x27','headers':{'Authorization':_0xbf1d('0x15')+_0x17d551,'If-None-Match':null,'OData-Version':_0xbf1d('0x16')},'json':!![]};return rp(_0x5e0966);})[_0xbf1d('0x17')](function(_0x4b0621){var _0x1b280a=null;if(_0x4b0621){var _0x5b4d98=_0x4b0621['value'];var _0x3f2319=![];for(_0x1b280a=0x0;_0x1b280a<_0x5b4d98[_0xbf1d('0x1d')];_0x1b280a++){if(_0x5b4d98[_0x1b280a][_0xbf1d('0x31')]===_0x413706){_0x3f2319=!![];_0x1ff70f[_0xbf1d('0x2d')]=_0x5b4d98[_0x1b280a][_0xbf1d('0x32')];}}if(_0x3f2319){_0x2dd923(_0x1ff70f);}else{return createEndUser(_0x1ff70f,_0x41e5b7,_0x131656,_0x3bda5a,_0x1b96c7,_0x41ec42)[_0xbf1d('0x17')](function(_0x5a8a48){logger['info']('['+[_0x41ec42['toUpperCase']()]+_0xbf1d('0x33'),_0x5a8a48['enduserId']);_0x2dd923(_0x5a8a48);});}}else{return createEndUser(_0x1ff70f,_0x41e5b7,_0x131656,_0x3bda5a,_0x1b96c7,_0x41ec42)[_0xbf1d('0x17')](function(_0x25b620){logger['info']('['+[_0x41ec42['toUpperCase']()]+_0xbf1d('0x34'),_0x25b620[_0xbf1d('0x2d')]);_0x2dd923(_0x25b620);});}});});}function getCustomFields(_0x5f13e9,_0x2e8657,_0xe213a6){var _0x524b48={};if(_0x5f13e9[_0xbf1d('0x1d')]>0x0){_['forEach'](_0x5f13e9,function(_0x2baaf0){if(_[_0xbf1d('0x35')]([_0xbf1d('0x36'),_0xbf1d('0x37')],_0x2baaf0['type'])&&_0x2baaf0['nameField']&&!_0x2baaf0[_0xbf1d('0x38')]){var _0x469287=_0x2baaf0[_0xbf1d('0x39')][_0xbf1d('0x24')]();var _0x31a8c3=_0x469287['substring'](0x0,_0x469287[_0xbf1d('0x3a')]('_'));var _0x1d58db=_0x469287[_0xbf1d('0x2b')](_0x469287['indexOf']('_')+0x1);if(_0x31a8c3===_0xe213a6){_0x524b48[_0x1d58db]=_0x2baaf0[_0xbf1d('0x3b')];}}});}return _0x524b48;}function getTicket(_0x57b43a,_0x22be30,_0xcb61fe,_0x5c5018,_0x2d1db7,_0x5d48f4,_0x4afde6){return new BPromise(function(_0x3bc604,_0x157460){var _0x3d83f5;return getAuthToken(_0x22be30,_0xcb61fe,_0x4afde6)[_0xbf1d('0x17')](function(_0x44179c){if(_0x5d48f4[_0xbf1d('0x3c')]===_0xbf1d('0x3d')){_0x3d83f5={'method':_0xbf1d('0x9'),'uri':_0x5c5018+_0xbf1d('0x3e'),'body':Object[_0xbf1d('0x3f')]({},{'title':intUtil[_0xbf1d('0x40')](_0x5d48f4['Subjects'],_0x2d1db7,'\x20'),'description':intUtil[_0xbf1d('0x40')](_0x5d48f4['Descriptions'],_0x2d1db7,'\x0a'),'customerid_contact@odata.bind':'/contacts('+_0x57b43a[_0xbf1d('0x2d')]+')','ownerid@odata.bind':'/systemusers('+_0x57b43a[_0xbf1d('0x23')]+')','caseorigincode':'1'},getCustomFields(_0x5d48f4[_0xbf1d('0x41')],_0x2d1db7,_0x5d48f4[_0xbf1d('0x3c')])),'headers':{'Authorization':_0xbf1d('0x15')+_0x44179c,'OData-Version':_0xbf1d('0x16')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x5d48f4[_0xbf1d('0x3c')]===_0xbf1d('0x42')){_0x3d83f5={'method':_0xbf1d('0x9'),'uri':_0x5c5018+_0xbf1d('0x43'),'body':Object[_0xbf1d('0x3f')]({},{'subject':intUtil[_0xbf1d('0x40')](_0x5d48f4[_0xbf1d('0x44')],_0x2d1db7,'\x20'),'phonenumber':String(_0x2d1db7[_0xbf1d('0x27')]),'description':intUtil[_0xbf1d('0x40')](_0x5d48f4[_0xbf1d('0x45')],_0x2d1db7,'\x0a'),'regardingobjectid_contact@odata.bind':_0xbf1d('0x46')+_0x57b43a[_0xbf1d('0x2d')]+')','ownerid@odata.bind':_0xbf1d('0x47')+_0x57b43a['userId']+')','directioncode':_0x57b43a[_0xbf1d('0x48')]===_0xbf1d('0x49')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xbf1d('0x47')+_0x57b43a[_0xbf1d('0x23')]+')','participationtypemask':_0x57b43a[_0xbf1d('0x48')]==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0xbf1d('0x46')+_0x57b43a[_0xbf1d('0x2d')]+')','participationtypemask':_0x57b43a[_0xbf1d('0x48')]===_0xbf1d('0x49')?0x1:0x2}]},getCustomFields(_0x5d48f4['Fields'],_0x2d1db7,_0x5d48f4[_0xbf1d('0x3c')])),'headers':{'Authorization':_0xbf1d('0x15')+_0x44179c,'OData-Version':_0xbf1d('0x16')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x3d83f5);})[_0xbf1d('0x17')](function(_0x57b639){var _0x466f60=_0x57b639['headers'][_0xbf1d('0x2a')];var _0x4f3bdd=_0x466f60[_0xbf1d('0x2b')](_0x466f60[_0xbf1d('0x2c')]('(')+0x1,_0x466f60[_0xbf1d('0x2c')](')'));_0x57b43a[_0xbf1d('0x4a')]=_0x4f3bdd;_0x3bc604(_0x57b43a);})[_0xbf1d('0x10')](function(_0x164cb8){_0x157460(_0x164cb8['message']);});});}function emit(_0x218585,_0x46eb6e,_0x2fbe1e,_0x1de1ee){var _0x2e3039={'uri':util[_0xbf1d('0x4b')](_0xbf1d('0x4c'),_0x218585,_0x2fbe1e,_0x1de1ee)};io['to'](util[_0xbf1d('0x4b')]('user:%s',_0x46eb6e))[_0xbf1d('0x4d')](_0xbf1d('0x4e'),_0x2e3039);}exports['cs']=function(_0x575b30,_0xf0e398,_0x518859,_0x31b5de,_0x1bfe47,_0x5c1299,_0x729bc7,_0x34f14d){var _0x130f0e={};_0x5c1299[_0xbf1d('0xb')]=intUtil[_0xbf1d('0x4f')](_0x5c1299['remoteUri']);_0x5c1299[_0xbf1d('0x50')]=intUtil[_0xbf1d('0x4f')](_0x5c1299[_0xbf1d('0x50')]);_0x130f0e[_0xbf1d('0x48')]=_0x34f14d==='queue'||_0x34f14d==='unmanaged'?_0xbf1d('0x49'):'outbound';var _0x5eb7c1=util[_0xbf1d('0x4b')](_0xbf1d('0x51'),_0x5c1299[_0xbf1d('0xb')]);var _0x2e041f=util[_0xbf1d('0x4b')](_0xbf1d('0x52'),_0x5c1299['tenantId']);var _0x1f0e8c=util[_0xbf1d('0x4b')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5c1299['serverUrl'],_0xf0e398['uniqueid'],md5(_0xf0e398['uniqueid']));if(_0x1bfe47&&_0x1bfe47['monitor_format']){logger[_0xbf1d('0x22')](_0xbf1d('0x53'),_0xbf1d('0x54'));_0xf0e398['recordingURL']=_0x1f0e8c;}else if(_0x729bc7&&_0x729bc7['recordingFormat']&&_0x729bc7[_0xbf1d('0x55')]!==_0xbf1d('0x56')){logger[_0xbf1d('0x22')](_0xbf1d('0x57'),_0xbf1d('0x54'));_0xf0e398[_0xbf1d('0x58')]=_0x1f0e8c;}else{_0xf0e398['recordingURL']='';}return getUser(_0x130f0e,_0x5c1299,_0x31b5de,_0x2e041f,_0x5eb7c1,_0x34f14d)[_0xbf1d('0x17')](function(_0x10f801){logger[_0xbf1d('0x22')]('['+_0x34f14d[_0xbf1d('0x20')]()+']\x20The\x20User\x20ID\x20is:',_0x10f801[_0xbf1d('0x23')]);logger[_0xbf1d('0x22')]('['+_0x34f14d[_0xbf1d('0x20')]()+']\x20The\x20User\x20email\x20is:',_0x10f801[_0xbf1d('0x1c')]);return getEndUser(_0x10f801,_0x5c1299,_0x2e041f,_0x5eb7c1,_0xf0e398,_0x34f14d);})[_0xbf1d('0x17')](function(_0x2abc5f){logger[_0xbf1d('0x22')]('['+_0x34f14d['toUpperCase']()+_0xbf1d('0x59'),_0x2abc5f[_0xbf1d('0x2d')]);logger[_0xbf1d('0x22')]('['+_0x34f14d['toUpperCase']()+']\x20The\x20Enduser\x20phone\x20is:',_0xf0e398['calleridnum']);return getTicket(_0x2abc5f,_0x5c1299,_0x2e041f,_0x5eb7c1,_0xf0e398,_0x518859,_0x34f14d);})[_0xbf1d('0x17')](function(_0x59042a){logger[_0xbf1d('0x22')](util['format']('['+_0x34f14d['toUpperCase']()+_0xbf1d('0x5a'),_0x518859[_0xbf1d('0x3c')],_0x59042a[_0xbf1d('0x4a')]));logger[_0xbf1d('0x22')](util['format']('['+_0x34f14d[_0xbf1d('0x20')]()+_0xbf1d('0x5b'),_0x34f14d));if(_0x34f14d!==_0xbf1d('0x5c')){logger[_0xbf1d('0x22')]('['+_0x34f14d[_0xbf1d('0x20')]()+']',_0xbf1d('0x5d'));emit(_0x5c1299['remoteUri'],_0x31b5de[_0xbf1d('0x5e')],_0x518859[_0xbf1d('0x3c')],_0x59042a['ticketId']);}})['catch'](function(_0x35c3d3){logger[_0xbf1d('0x5f')]('['+_0x34f14d[_0xbf1d('0x20')]()+_0xbf1d('0x60'),util['inspect'](_0x35c3d3,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index a3de40a..e58940e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6486=['GET','map','string','picklist','type','nameField','toLowerCase','includes','idField','push','content','variable','customField','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','The\x20User\x20ID\x20is:','calleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','outbound','recordingFormat','none','uniqueid','destcalleridname','The\x20Ticket\x20ID\x20is:','[OUTBOUND]','error','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','Caller\x20-\x20%s','calleridname','getString','Descriptions','<br>','Tags','name','Fields','custom_fields','value','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','format','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify'];(function(_0x220f3f,_0x11c540){var _0x1f170e=function(_0x2c0ec9){while(--_0x2c0ec9){_0x220f3f['push'](_0x220f3f['shift']());}};_0x1f170e(++_0x11c540);}(_0x6486,0x1a0));var _0x6648=function(_0x136345,_0x4aebb7){_0x136345=_0x136345-0x0;var _0x269516=_0x6486[_0x136345];return _0x269516;};'use strict';var _=require(_0x6648('0x0'));var rp=require(_0x6648('0x1'));var md5=require(_0x6648('0x2'));var util=require(_0x6648('0x3'));var Redis=require(_0x6648('0x4'));var intUtil=require(_0x6648('0x5'));var config=require('../../../../config/environment');var logger=require(_0x6648('0x6'))(_0x6648('0x7'));config[_0x6648('0x8')]=_[_0x6648('0x9')](config[_0x6648('0x8')],{'host':_0x6648('0xa'),'port':0x18eb});var io=require(_0x6648('0xb'))(new Redis(config['redis']));var headers={'Content-Type':'application/json','Accept':_0x6648('0xc')};function emit(_0x47df6f,_0x1aea7b,_0xabbacd){io['to'](_0x47df6f)[_0x6648('0xd')](_0x1aea7b,_0xabbacd);}function getTicket(_0x3bd736,_0x2b9268,_0xc8cac3,_0x4d8ef3,_0x1e2022){logger[_0x6648('0xe')](_0x6648('0xf'));var _0xaf26b4=_[_0x6648('0x10')]({'responder_id':_0x2b9268['id'],'requester_id':_0xc8cac3['id'],'name':util['format'](_0x6648('0x11'),_0x1e2022[_0x6648('0x12')]),'phone':_0x1e2022['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x6648('0x13')](_0x4d8ef3['Subjects'],_0x1e2022,'\x20'),'description':intUtil[_0x6648('0x13')](_0x4d8ef3[_0x6648('0x14')],_0x1e2022,_0x6648('0x15')),'tags':getTags(_0x4d8ef3[_0x6648('0x16')],_0x6648('0x17'))},getCustomFields(_0x4d8ef3[_0x6648('0x18')],_0x1e2022));_0xaf26b4['custom_fields']=_['mapValues'](_['keyBy'](_0xaf26b4[_0x6648('0x19')],'id'),_0x6648('0x1a'));return request({'uri':util['format'](_0x6648('0x1b'),_0x3bd736[_0x6648('0x1c')]),'method':_0x6648('0x1d'),'body':_0xaf26b4})[_0x6648('0x1e')](function(_0x1b025a){logger[_0x6648('0xe')](_0x6648('0x1f'));return _0x1b025a;});}function getUser(_0x240b9b,_0x24be3c){if(intUtil['validateEmail'](_0x24be3c)){return request({'uri':util[_0x6648('0x20')]('%s/api/v2/agents',_0x240b9b['remoteUri']),'qs':{'email':_0x24be3c}})[_0x6648('0x1e')](function(_0x363966){if(_0x363966[_0x6648('0x21')]){logger[_0x6648('0xe')](_0x6648('0x22'));return _[_0x6648('0x23')](_0x363966,function(_0x4ef6b8){return _0x4ef6b8[_0x6648('0x24')][_0x6648('0x25')]===_0x24be3c;});}else{logger[_0x6648('0xe')](_0x6648('0x26'));return request({'uri':util['format'](_0x6648('0x27'),_0x240b9b[_0x6648('0x1c')])})[_0x6648('0x1e')](function(_0x250d73){logger['info']('Admin\x20account\x20selected.');return _0x250d73;});}});}else{logger[_0x6648('0xe')](_0x6648('0x28'));return request({'uri':util['format'](_0x6648('0x27'),_0x240b9b[_0x6648('0x1c')])})['then'](function(_0x593e00){logger[_0x6648('0xe')](_0x6648('0x29'));return _0x593e00;});}}function getEndUser(_0x381556,_0x5a0c26,_0x78658d){logger['info'](_0x6648('0x2a'),_0x78658d);return request({'uri':util['format']('%s/api/v2/contacts',_0x381556['remoteUri']),'qs':{'phone':_0x78658d}})[_0x6648('0x1e')](function(_0x3efac7){if(_0x3efac7[_0x6648('0x21')]){logger[_0x6648('0xe')](_0x6648('0x2b'));return _[_0x6648('0x23')](_0x3efac7,{'phone':_0x78658d});}else{logger['info'](_0x6648('0x2c'));return request({'uri':util['format'](_0x6648('0x2d'),_0x381556['remoteUri']),'method':_0x6648('0x1d'),'body':{'name':_0x5a0c26,'phone':_0x78658d}})[_0x6648('0x1e')](function(_0x2b9b01){logger['info'](_0x6648('0x2e'));return _0x2b9b01;});}});}function getAuth(_0x33fee7){return util[_0x6648('0x20')](_0x6648('0x2f'),new Buffer(_0x33fee7[_0x6648('0x30')]+':X')[_0x6648('0x31')](_0x6648('0x32')));}function request(_0x4e579f){logger[_0x6648('0x33')](_0x6648('0x34'),JSON[_0x6648('0x35')](_0x4e579f));return rp(_[_0x6648('0x9')](_0x4e579f,{'method':_0x6648('0x36'),'headers':headers,'json':!![]}));}function getTags(_0x29dce5,_0x36d383){var _0x27020e=[];if(_0x29dce5&&_0x29dce5[_0x6648('0x21')]>0x0){_0x27020e=_[_0x6648('0x37')](_0x29dce5,_0x36d383);}return _0x27020e;}function getCustomFields(_0x3be62a,_0x573a60){var _0x521f74=[];var _0x2842a5={'custom_fields':[]};if(_0x3be62a[_0x6648('0x21')]>0x0){_['forEach'](_0x3be62a,function(_0x5d6cb3){if(_['includes']([_0x6648('0x38'),_0x6648('0x39')],_0x5d6cb3[_0x6648('0x3a')])&&_0x5d6cb3[_0x6648('0x3b')]&&!_0x5d6cb3['customField']){_0x2842a5[_0x5d6cb3[_0x6648('0x3b')][_0x6648('0x3c')]()]=_0x5d6cb3['content'][_0x6648('0x31')]();}else if(_[_0x6648('0x3d')](['string',_0x6648('0x39')],_0x5d6cb3[_0x6648('0x3a')])&&_0x5d6cb3[_0x6648('0x3e')]&&_0x5d6cb3['customField']){_0x2842a5[_0x6648('0x19')][_0x6648('0x3f')]({'id':_0x5d6cb3['idField'],'value':_0x5d6cb3[_0x6648('0x40')][_0x6648('0x31')]()});}else if(_0x5d6cb3['type']===_0x6648('0x41')&&_0x5d6cb3['variableName']&&_0x5d6cb3[_0x6648('0x3e')]&&_0x5d6cb3[_0x6648('0x42')]){_0x573a60[_0x5d6cb3['variableName']]&&_0x2842a5[_0x6648('0x19')][_0x6648('0x3f')]({'id':_0x5d6cb3[_0x6648('0x3e')],'value':_0x573a60[_0x5d6cb3['variableName']][_0x6648('0x31')]()});}else if(_0x5d6cb3[_0x6648('0x3a')]===_0x6648('0x43')&&_0x5d6cb3[_0x6648('0x44')]&&_0x5d6cb3[_0x6648('0x44')][_0x6648('0x17')]&&_0x5d6cb3[_0x6648('0x3e')]&&_0x5d6cb3[_0x6648('0x42')]){_0x573a60[_0x5d6cb3['Variable']['name']['toLowerCase']()]&&_0x2842a5[_0x6648('0x19')][_0x6648('0x3f')]({'id':_0x5d6cb3['idField'],'value':_0x573a60[_0x5d6cb3[_0x6648('0x44')][_0x6648('0x17')][_0x6648('0x3c')]()][_0x6648('0x31')]()});}});}return _0x2842a5;}exports['queue']=function(_0xae1bbb,_0x1a7c6b,_0x540168,_0x50b7a0,_0x118b48,_0x36dbab){var _0x35cc0f,_0x3bc6bd;_0x36dbab[_0x6648('0x1c')]=intUtil[_0x6648('0x45')](_0x36dbab[_0x6648('0x1c')]);_0x36dbab[_0x6648('0x46')]=intUtil[_0x6648('0x45')](_0x36dbab[_0x6648('0x46')]);if(_0x118b48&&_0x118b48[_0x6648('0x47')]){logger[_0x6648('0xe')](_0x6648('0x48'),_0x6648('0x49'));_0x1a7c6b[_0x6648('0x4a')]=util['format'](_0x6648('0x4b'),_0x36dbab[_0x6648('0x46')],_0x1a7c6b['uniqueid'],md5(_0x1a7c6b['uniqueid']));}else{_0x1a7c6b[_0x6648('0x4a')]='';}headers[_0x6648('0x4c')]=getAuth(_0x36dbab);return getUser(_0x36dbab,_0x50b7a0[_0x6648('0x25')])[_0x6648('0x1e')](function(_0x288421){_0x35cc0f=_0x288421;logger['info'](_0x6648('0x4d'),_0x35cc0f['id']);return getEndUser(_0x36dbab,_0x1a7c6b[_0x6648('0x12')],_0x1a7c6b[_0x6648('0x4e')]);})['then'](function(_0x55bc95){_0x3bc6bd=_0x55bc95;logger[_0x6648('0xe')]('The\x20Enduser\x20ID\x20is:',_0x3bc6bd['id']);return getTicket(_0x36dbab,_0x35cc0f,_0x3bc6bd,_0x540168,_0x1a7c6b);})['then'](function(_0x452c6e){if(_0x452c6e&&_0x452c6e['id']){logger[_0x6648('0xe')](_0x6648('0x1f'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x452c6e['id']);logger[_0x6648('0xe')](_0x6648('0x48'),_0x6648('0x4f'));emit(util['format'](_0x6648('0x50'),_0x50b7a0['name']),_0x6648('0x51'),{'uri':util[_0x6648('0x20')](_0x6648('0x52'),_0x36dbab[_0x6648('0x1c')],_0x452c6e['id'])});}})[_0x6648('0x53')](function(_0x159314){logger['error'](_0x6648('0x48'),JSON['stringify'](_0x159314));});};exports[_0x6648('0x54')]=function(_0x679fab,_0x2695ef,_0x6301ba,_0x39cc6f,_0x278ab2,_0x2ae2e3,_0x27032e){var _0x1db9c8,_0x22ab8f;_0x2ae2e3['remoteUri']=intUtil['stripTrailingSlash'](_0x2ae2e3['remoteUri']);_0x2ae2e3[_0x6648('0x46')]=intUtil['stripTrailingSlash'](_0x2ae2e3['serverUrl']);if(_0x27032e&&_0x27032e[_0x6648('0x55')]&&_0x27032e[_0x6648('0x55')]!==_0x6648('0x56')){logger['info']('[OUTBOUND]',_0x6648('0x49'));_0x2695ef['recordingURL']=util[_0x6648('0x20')](_0x6648('0x4b'),_0x2ae2e3[_0x6648('0x46')],_0x2695ef[_0x6648('0x57')],md5(_0x2695ef[_0x6648('0x57')]));}headers[_0x6648('0x4c')]=getAuth(_0x2ae2e3);return getUser(_0x2ae2e3,_0x39cc6f[_0x6648('0x25')])[_0x6648('0x1e')](function(_0x55491d){_0x1db9c8=_0x55491d;logger['info'](_0x6648('0x4d'),_0x1db9c8['id']);return getEndUser(_0x2ae2e3,_0x2695ef[_0x6648('0x58')],_0x2695ef['destcalleridnum']);})[_0x6648('0x1e')](function(_0x3139a1){_0x22ab8f=_0x3139a1;logger[_0x6648('0xe')]('The\x20Enduser\x20ID\x20is:',_0x22ab8f['id']);return getTicket(_0x2ae2e3,_0x1db9c8,_0x22ab8f,_0x6301ba,_0x2695ef);})[_0x6648('0x1e')](function(_0x44a502){if(_0x44a502&&_0x44a502['id']){logger[_0x6648('0xe')](_0x6648('0x1f'));logger['info'](_0x6648('0x59'),_0x44a502['id']);logger[_0x6648('0xe')](_0x6648('0x5a'),_0x6648('0x4f'));emit(util[_0x6648('0x20')](_0x6648('0x50'),_0x39cc6f['name']),_0x6648('0x51'),{'uri':util[_0x6648('0x20')](_0x6648('0x52'),_0x2ae2e3['remoteUri'],_0x44a502['id'])});}})['catch'](function(_0x5bd4e2){logger[_0x6648('0x5b')]('[OUTBOUND]',JSON[_0x6648('0x35')](_0x5bd4e2));});};exports['unmanaged']=function(_0x13e58e,_0x5a2835,_0x29b7da,_0x287ec6,_0x1b2197,_0x3aa341){var _0x26ad28,_0x226833;_0x3aa341[_0x6648('0x1c')]=intUtil[_0x6648('0x45')](_0x3aa341[_0x6648('0x1c')]);_0x3aa341['serverUrl']=intUtil[_0x6648('0x45')](_0x3aa341[_0x6648('0x46')]);if(_0x1b2197&&_0x1b2197['monitor_format']){logger[_0x6648('0xe')]('['+_0x5a2835[_0x6648('0x5c')][_0x6648('0x5d')]()+']',_0x6648('0x49'));_0x5a2835[_0x6648('0x4a')]=util[_0x6648('0x20')](_0x6648('0x4b'),_0x3aa341[_0x6648('0x46')],_0x5a2835['uniqueid'],md5(_0x5a2835[_0x6648('0x57')]));}else{_0x5a2835[_0x6648('0x4a')]='';}headers[_0x6648('0x4c')]=getAuth(_0x3aa341);return getUser(_0x3aa341,'')[_0x6648('0x1e')](function(_0x4258ad){_0x26ad28=_0x4258ad;logger[_0x6648('0xe')](_0x6648('0x4d'),_0x26ad28['id']);return getEndUser(_0x3aa341,_0x5a2835[_0x6648('0x12')],_0x5a2835['calleridnum']);})[_0x6648('0x1e')](function(_0x136565){_0x226833=_0x136565;logger['info']('The\x20Enduser\x20ID\x20is:',_0x226833['id']);return getTicket(_0x3aa341,_0x26ad28,_0x226833,_0x29b7da,_0x5a2835);})[_0x6648('0x1e')](function(_0x13b271){if(_0x13b271){logger[_0x6648('0xe')]('Ticket\x20created!');logger[_0x6648('0xe')](_0x6648('0x59'),_0x13b271['id']);}})[_0x6648('0x53')](function(_0x17e9fd){logger['error']('['+_0x5a2835[_0x6648('0x5c')][_0x6648('0x5d')]()+']',JSON[_0x6648('0x35')](_0x17e9fd));});};
\ No newline at end of file
+var _0x3830=['toUpperCase','Recording\x20is\x20enabled!','lodash','util','ioredis','./util','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','Descriptions','name','Fields','custom_fields','value','remoteUri','Ticket\x20created!','validateEmail','length','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','then','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','Enduser\x20created.','apiKey','toString','base64','debug','[HTTP]','GET','map','includes','picklist','nameField','toLowerCase','content','string','type','idField','customField','push','variable','variableName','customVariable','Variable','queue','serverUrl','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','user:%s','%s/helpdesk/tickets/%d','catch','error','stringify','outbound','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','monitor_format','lastevent'];(function(_0x31486e,_0x352bf5){var _0x41d688=function(_0x59301a){while(--_0x59301a){_0x31486e['push'](_0x31486e['shift']());}};_0x41d688(++_0x352bf5);}(_0x3830,0x1c4));var _0x0383=function(_0x5dd52e,_0x98ee28){_0x5dd52e=_0x5dd52e-0x0;var _0x4d2f78=_0x3830[_0x5dd52e];return _0x4d2f78;};'use strict';var _=require(_0x0383('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0x0383('0x1'));var Redis=require(_0x0383('0x2'));var intUtil=require(_0x0383('0x3'));var config=require('../../../../config/environment');var logger=require(_0x0383('0x4'))(_0x0383('0x5'));config[_0x0383('0x6')]=_[_0x0383('0x7')](config['redis'],{'host':_0x0383('0x8'),'port':0x18eb});var io=require(_0x0383('0x9'))(new Redis(config['redis']));var headers={'Content-Type':'application/json','Accept':_0x0383('0xa')};function emit(_0x44c9c9,_0x41234b,_0x5a1df9){io['to'](_0x44c9c9)[_0x0383('0xb')](_0x41234b,_0x5a1df9);}function getTicket(_0xa886b9,_0xe4dd2f,_0x5474f7,_0x2f472f,_0x48296f){logger[_0x0383('0xc')](_0x0383('0xd'));var _0x233401=_[_0x0383('0xe')]({'responder_id':_0xe4dd2f['id'],'requester_id':_0x5474f7['id'],'name':util[_0x0383('0xf')](_0x0383('0x10'),_0x48296f['calleridname']),'phone':_0x48296f[_0x0383('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x2f472f['Subjects'],_0x48296f,'\x20'),'description':intUtil[_0x0383('0x12')](_0x2f472f[_0x0383('0x13')],_0x48296f,'<br>'),'tags':getTags(_0x2f472f['Tags'],_0x0383('0x14'))},getCustomFields(_0x2f472f[_0x0383('0x15')],_0x48296f));_0x233401[_0x0383('0x16')]=_['mapValues'](_['keyBy'](_0x233401[_0x0383('0x16')],'id'),_0x0383('0x17'));return request({'uri':util['format']('%s/api/v2/tickets',_0xa886b9[_0x0383('0x18')]),'method':'POST','body':_0x233401})['then'](function(_0x529d7c){logger[_0x0383('0xc')](_0x0383('0x19'));return _0x529d7c;});}function getUser(_0x425894,_0x48f0e){if(intUtil[_0x0383('0x1a')](_0x48f0e)){return request({'uri':util['format']('%s/api/v2/agents',_0x425894[_0x0383('0x18')]),'qs':{'email':_0x48f0e}})['then'](function(_0x2775c0){if(_0x2775c0[_0x0383('0x1b')]){logger[_0x0383('0xc')]('Agent\x20found!');return _['find'](_0x2775c0,function(_0x51552c){return _0x51552c[_0x0383('0x1c')]['email']===_0x48f0e;});}else{logger[_0x0383('0xc')](_0x0383('0x1d'));return request({'uri':util['format'](_0x0383('0x1e'),_0x425894[_0x0383('0x18')])})[_0x0383('0x1f')](function(_0x5c14e1){logger[_0x0383('0xc')](_0x0383('0x20'));return _0x5c14e1;});}});}else{logger['info'](_0x0383('0x21'));return request({'uri':util[_0x0383('0xf')](_0x0383('0x1e'),_0x425894[_0x0383('0x18')])})[_0x0383('0x1f')](function(_0x553fc2){logger['info']('Admin\x20account\x20selected.');return _0x553fc2;});}}function getEndUser(_0x438ed3,_0x3abec2,_0x2649dd){logger[_0x0383('0xc')](_0x0383('0x22'),_0x2649dd);return request({'uri':util['format'](_0x0383('0x23'),_0x438ed3[_0x0383('0x18')]),'qs':{'phone':_0x2649dd}})['then'](function(_0x5a8465){if(_0x5a8465[_0x0383('0x1b')]){logger[_0x0383('0xc')](_0x0383('0x24'));return _['find'](_0x5a8465,{'phone':_0x2649dd});}else{logger[_0x0383('0xc')](_0x0383('0x25'));return request({'uri':util[_0x0383('0xf')]('%s/api/v2/contacts',_0x438ed3[_0x0383('0x18')]),'method':_0x0383('0x26'),'body':{'name':_0x3abec2,'phone':_0x2649dd}})[_0x0383('0x1f')](function(_0xeef43f){logger['info'](_0x0383('0x27'));return _0xeef43f;});}});}function getAuth(_0x55ae0a){return util['format']('Basic\x20%s',new Buffer(_0x55ae0a[_0x0383('0x28')]+':X')[_0x0383('0x29')](_0x0383('0x2a')));}function request(_0x220a43){logger[_0x0383('0x2b')](_0x0383('0x2c'),JSON['stringify'](_0x220a43));return rp(_[_0x0383('0x7')](_0x220a43,{'method':_0x0383('0x2d'),'headers':headers,'json':!![]}));}function getTags(_0x4f7e22,_0x4cfedd){var _0xde04a1=[];if(_0x4f7e22&&_0x4f7e22['length']>0x0){_0xde04a1=_[_0x0383('0x2e')](_0x4f7e22,_0x4cfedd);}return _0xde04a1;}function getCustomFields(_0x55a396,_0x3119f7){var _0x820721=[];var _0x5f402c={'custom_fields':[]};if(_0x55a396[_0x0383('0x1b')]>0x0){_['forEach'](_0x55a396,function(_0x30c96b){if(_[_0x0383('0x2f')](['string',_0x0383('0x30')],_0x30c96b['type'])&&_0x30c96b['nameField']&&!_0x30c96b['customField']){_0x5f402c[_0x30c96b[_0x0383('0x31')][_0x0383('0x32')]()]=_0x30c96b[_0x0383('0x33')][_0x0383('0x29')]();}else if(_[_0x0383('0x2f')]([_0x0383('0x34'),_0x0383('0x30')],_0x30c96b[_0x0383('0x35')])&&_0x30c96b[_0x0383('0x36')]&&_0x30c96b[_0x0383('0x37')]){_0x5f402c['custom_fields'][_0x0383('0x38')]({'id':_0x30c96b[_0x0383('0x36')],'value':_0x30c96b[_0x0383('0x33')][_0x0383('0x29')]()});}else if(_0x30c96b[_0x0383('0x35')]===_0x0383('0x39')&&_0x30c96b[_0x0383('0x3a')]&&_0x30c96b[_0x0383('0x36')]&&_0x30c96b['customField']){_0x3119f7[_0x30c96b[_0x0383('0x3a')]]&&_0x5f402c[_0x0383('0x16')][_0x0383('0x38')]({'id':_0x30c96b['idField'],'value':_0x3119f7[_0x30c96b[_0x0383('0x3a')]][_0x0383('0x29')]()});}else if(_0x30c96b[_0x0383('0x35')]===_0x0383('0x3b')&&_0x30c96b[_0x0383('0x3c')]&&_0x30c96b[_0x0383('0x3c')]['name']&&_0x30c96b[_0x0383('0x36')]&&_0x30c96b[_0x0383('0x37')]){_0x3119f7[_0x30c96b[_0x0383('0x3c')]['name']['toLowerCase']()]&&_0x5f402c['custom_fields']['push']({'id':_0x30c96b['idField'],'value':_0x3119f7[_0x30c96b['Variable'][_0x0383('0x14')][_0x0383('0x32')]()]['toString']()});}});}return _0x5f402c;}exports[_0x0383('0x3d')]=function(_0x13db7d,_0x393781,_0xb99083,_0x224a97,_0x391751,_0x119523){var _0x733969,_0x4430dd;_0x119523[_0x0383('0x18')]=intUtil['stripTrailingSlash'](_0x119523[_0x0383('0x18')]);_0x119523[_0x0383('0x3e')]=intUtil[_0x0383('0x3f')](_0x119523[_0x0383('0x3e')]);if(_0x391751&&_0x391751['monitor_format']){logger[_0x0383('0xc')](_0x0383('0x40'),'Recording\x20is\x20enabled!');_0x393781[_0x0383('0x41')]=util[_0x0383('0xf')](_0x0383('0x42'),_0x119523[_0x0383('0x3e')],_0x393781[_0x0383('0x43')],md5(_0x393781['uniqueid']));}else{_0x393781[_0x0383('0x41')]='';}headers[_0x0383('0x44')]=getAuth(_0x119523);return getUser(_0x119523,_0x224a97[_0x0383('0x45')])[_0x0383('0x1f')](function(_0xd82f69){_0x733969=_0xd82f69;logger[_0x0383('0xc')](_0x0383('0x46'),_0x733969['id']);return getEndUser(_0x119523,_0x393781[_0x0383('0x47')],_0x393781[_0x0383('0x11')]);})[_0x0383('0x1f')](function(_0x4b0bed){_0x4430dd=_0x4b0bed;logger[_0x0383('0xc')](_0x0383('0x48'),_0x4430dd['id']);return getTicket(_0x119523,_0x733969,_0x4430dd,_0xb99083,_0x393781);})[_0x0383('0x1f')](function(_0x486502){if(_0x486502&&_0x486502['id']){logger[_0x0383('0xc')](_0x0383('0x19'));logger[_0x0383('0xc')]('The\x20Ticket\x20ID\x20is:',_0x486502['id']);logger[_0x0383('0xc')](_0x0383('0x40'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x0383('0xf')](_0x0383('0x49'),_0x224a97[_0x0383('0x14')]),'trigger:browser:url',{'uri':util[_0x0383('0xf')](_0x0383('0x4a'),_0x119523['remoteUri'],_0x486502['id'])});}})[_0x0383('0x4b')](function(_0x23dd55){logger[_0x0383('0x4c')](_0x0383('0x40'),JSON[_0x0383('0x4d')](_0x23dd55));});};exports[_0x0383('0x4e')]=function(_0xfd364b,_0x1a8b77,_0x353bfe,_0x56c666,_0xc41caf,_0x5a41b2,_0x341821){var _0x2c5cfd,_0x3b8fd7;_0x5a41b2[_0x0383('0x18')]=intUtil[_0x0383('0x3f')](_0x5a41b2[_0x0383('0x18')]);_0x5a41b2[_0x0383('0x3e')]=intUtil[_0x0383('0x3f')](_0x5a41b2['serverUrl']);if(_0x341821&&_0x341821[_0x0383('0x4f')]&&_0x341821[_0x0383('0x4f')]!=='none'){logger[_0x0383('0xc')](_0x0383('0x50'),'Recording\x20is\x20enabled!');_0x1a8b77[_0x0383('0x41')]=util[_0x0383('0xf')](_0x0383('0x42'),_0x5a41b2[_0x0383('0x3e')],_0x1a8b77['uniqueid'],md5(_0x1a8b77[_0x0383('0x43')]));}headers[_0x0383('0x44')]=getAuth(_0x5a41b2);return getUser(_0x5a41b2,_0x56c666['email'])[_0x0383('0x1f')](function(_0x2d18f8){_0x2c5cfd=_0x2d18f8;logger['info'](_0x0383('0x46'),_0x2c5cfd['id']);return getEndUser(_0x5a41b2,_0x1a8b77[_0x0383('0x51')],_0x1a8b77[_0x0383('0x52')]);})['then'](function(_0x48c1e8){_0x3b8fd7=_0x48c1e8;logger['info']('The\x20Enduser\x20ID\x20is:',_0x3b8fd7['id']);return getTicket(_0x5a41b2,_0x2c5cfd,_0x3b8fd7,_0x353bfe,_0x1a8b77);})[_0x0383('0x1f')](function(_0x14b638){if(_0x14b638&&_0x14b638['id']){logger[_0x0383('0xc')](_0x0383('0x19'));logger[_0x0383('0xc')](_0x0383('0x53'),_0x14b638['id']);logger[_0x0383('0xc')](_0x0383('0x50'),_0x0383('0x54'));emit(util['format']('user:%s',_0x56c666['name']),_0x0383('0x55'),{'uri':util[_0x0383('0xf')](_0x0383('0x4a'),_0x5a41b2['remoteUri'],_0x14b638['id'])});}})['catch'](function(_0x342953){logger[_0x0383('0x4c')](_0x0383('0x50'),JSON[_0x0383('0x4d')](_0x342953));});};exports['unmanaged']=function(_0x40a282,_0x5c252c,_0x184845,_0x151e72,_0xb61e73,_0x135e4b){var _0x409bd3,_0x48f89b;_0x135e4b['remoteUri']=intUtil['stripTrailingSlash'](_0x135e4b[_0x0383('0x18')]);_0x135e4b[_0x0383('0x3e')]=intUtil['stripTrailingSlash'](_0x135e4b[_0x0383('0x3e')]);if(_0xb61e73&&_0xb61e73[_0x0383('0x56')]){logger['info']('['+_0x5c252c[_0x0383('0x57')][_0x0383('0x58')]()+']',_0x0383('0x59'));_0x5c252c[_0x0383('0x41')]=util[_0x0383('0xf')](_0x0383('0x42'),_0x135e4b[_0x0383('0x3e')],_0x5c252c['uniqueid'],md5(_0x5c252c[_0x0383('0x43')]));}else{_0x5c252c[_0x0383('0x41')]='';}headers['Authorization']=getAuth(_0x135e4b);return getUser(_0x135e4b,'')[_0x0383('0x1f')](function(_0x3a95b2){_0x409bd3=_0x3a95b2;logger[_0x0383('0xc')](_0x0383('0x46'),_0x409bd3['id']);return getEndUser(_0x135e4b,_0x5c252c['calleridname'],_0x5c252c[_0x0383('0x11')]);})[_0x0383('0x1f')](function(_0x43c60d){_0x48f89b=_0x43c60d;logger[_0x0383('0xc')]('The\x20Enduser\x20ID\x20is:',_0x48f89b['id']);return getTicket(_0x135e4b,_0x409bd3,_0x48f89b,_0x184845,_0x5c252c);})[_0x0383('0x1f')](function(_0x343598){if(_0x343598){logger[_0x0383('0xc')]('Ticket\x20created!');logger[_0x0383('0xc')](_0x0383('0x53'),_0x343598['id']);}})[_0x0383('0x4b')](function(_0x3639e2){logger[_0x0383('0x4c')]('['+_0x5c252c['lastevent'][_0x0383('0x58')]()+']',JSON[_0x0383('0x4d')](_0x3639e2));});};
\ No newline at end of file
index 114cb23..6553f52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f71=['headers','info','Getting\x20admin\x20information','users','length','email','adminEmail','Admin\x20found:','adminId','Requested\x20Resource\x20not\x20Found','error','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','User\x20found:','Admin\x20selected','catch','toUpperCase','message','&f=','&entities=contact','then','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','work_number','endUserId','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','Creating\x20new\x20task','POST','Subjects','getString','Contact','ticketId','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','remoteUri','username','outbound','destcalleridnum','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','md5','util','moment','ioredis','../../../../config/logger','freshsales','redis','GET','/api/selector/owners'];(function(_0x127316,_0x2774a8){var _0x34d919=function(_0x22691d){while(--_0x22691d){_0x127316['push'](_0x127316['shift']());}};_0x34d919(++_0x2774a8);}(_0x1f71,0x11f));var _0x11f7=function(_0x36ceca,_0x1fed2f){_0x36ceca=_0x36ceca-0x0;var _0x40128=_0x1f71[_0x36ceca];return _0x40128;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0x11f7('0x0'));var util=require(_0x11f7('0x1'));var moment=require(_0x11f7('0x2'));var Promise=require('bluebird');var Redis=require(_0x11f7('0x3'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x11f7('0x4'))(_0x11f7('0x5'));config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x11f7('0x6')]));function getAdminId(_0x5e58be,_0x2791b2,_0x5c1d48,_0x5bcfd8){return new Promise(function(_0x28aaac,_0x10d1fd){var _0x5ad707=![];var _0x12ddd3={'method':_0x11f7('0x7'),'uri':_0x5bcfd8+_0x11f7('0x8'),'json':!![]};_0x12ddd3[_0x11f7('0x9')]=_0x5c1d48;logger[_0x11f7('0xa')](_0x11f7('0xb'));return rp(_0x12ddd3)['then'](function(_0x33fb5f){if(_0x33fb5f){var _0xf3bb2a=_0x33fb5f[_0x11f7('0xc')];var _0x4560ec=null;for(_0x4560ec=0x0;_0x4560ec<_0xf3bb2a[_0x11f7('0xd')];_0x4560ec++){if(_0xf3bb2a[_0x4560ec][_0x11f7('0xe')]===_0x5e58be[_0x11f7('0xf')]){_0x5e58be['adminId']=_0xf3bb2a[_0x4560ec]['id'];_0x5ad707=!![];}}if(_0x5ad707){logger[_0x11f7('0xa')](_0x11f7('0x10'),_0x5e58be[_0x11f7('0x11')]);_0x28aaac(_0x5e58be);}else{_0x10d1fd({'statusCode':0x194,'message':_0x11f7('0x12')});}}else{_0x10d1fd({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x13b09b){logger[_0x11f7('0x13')]('['+[_0x2791b2['toUpperCase']()]+']',_0x13b09b['message']);_0x10d1fd(_0x13b09b);});});}function getUser(_0x11b7f5,_0x4de6ec,_0x454cf3){return function(_0x2218d7){return new Promise(function(_0x571dd7,_0x2fff88){var _0x14b917={'method':_0x11f7('0x7'),'uri':_0x454cf3+_0x11f7('0x8'),'json':!![]};_0x14b917['headers']=_0x4de6ec;logger[_0x11f7('0xa')](_0x11f7('0x14'));return rp(_0x14b917)['then'](function(_0x3b8bdd){if(_0x3b8bdd){var _0x49e1c9=_0x3b8bdd[_0x11f7('0xc')];var _0x5e8ee3=![];var _0x460690=null;if(_0x2218d7[_0x11f7('0x15')]!==null){logger[_0x11f7('0xa')](_0x11f7('0x16'),_0x2218d7[_0x11f7('0x15')]);_0x2218d7[_0x11f7('0x17')]=_0x2218d7[_0x11f7('0x15')];for(_0x460690=0x0;_0x460690<_0x49e1c9[_0x11f7('0xd')];_0x460690++){if(_0x49e1c9[_0x460690][_0x11f7('0xe')]===_0x2218d7[_0x11f7('0x15')]){_0x5e8ee3=!![];_0x2218d7[_0x11f7('0x18')]=_0x49e1c9[_0x460690]['id'];logger[_0x11f7('0xa')](_0x11f7('0x19'),_0x2218d7[_0x11f7('0x18')]);}}}if(!_0x5e8ee3){logger['info'](_0x11f7('0x1a'));_0x2218d7[_0x11f7('0x17')]=_0x2218d7[_0x11f7('0xf')];_0x2218d7[_0x11f7('0x18')]=_0x2218d7[_0x11f7('0x11')];_0x5e8ee3=!![];}if(_0x5e8ee3){_0x571dd7(_0x2218d7);}else{_0x2fff88({'statusCode':0x194,'message':_0x11f7('0x12')});}}else{_0x2fff88({'statusCode':0x194,'message':_0x11f7('0x12')});}})[_0x11f7('0x1b')](function(_0x2292cf){logger[_0x11f7('0x13')]('['+[_0x11b7f5[_0x11f7('0x1c')]()]+']',_0x2292cf[_0x11f7('0x1d')]);_0x2fff88(_0x2292cf);});});};}function searchContact(_0x55ac5e,_0x4277a7,_0x498c87,_0x259b5f){return new Promise(function(_0x409794,_0x2de385){var _0x8279dd={'method':_0x11f7('0x7'),'headers':_0x4277a7,'uri':_0x55ac5e+'/api/lookup?q='+_0x259b5f+_0x11f7('0x1e')+_0x498c87+_0x11f7('0x1f'),'json':!![]};rp(_0x8279dd)[_0x11f7('0x20')](function(_0x110266){var _0x23bac=_['find'](_0x110266[_0x11f7('0x21')][_0x11f7('0x21')],[_0x498c87,_0x259b5f]);_0x409794(_0x23bac);})['catch'](function(_0x14f496){_0x2de385(_0x14f496);});});}function getEndUser(_0x40d268,_0x3bf249,_0x4f1139){return function(_0x3a4549){return new Promise(function(_0x13cd51,_0x169a95){logger[_0x11f7('0xa')](util[_0x11f7('0x22')](_0x11f7('0x23'),_0x3a4549['contactNumber']));searchContact(_0x4f1139,_0x3bf249,'mobile_number',_0x3a4549[_0x11f7('0x24')])['then'](function(_0x30ac03){if(_0x30ac03){_0x3a4549['endUserId']=_0x30ac03['id'];logger[_0x11f7('0xa')]('Contact\x20found\x20mobile_number:',_0x3a4549['endUserId']);return _0x13cd51(_0x3a4549);}searchContact(_0x4f1139,_0x3bf249,_0x11f7('0x25'),_0x3a4549['contactNumber'])[_0x11f7('0x20')](function(_0x31f23a){if(_0x31f23a){_0x3a4549[_0x11f7('0x26')]=_0x31f23a['id'];logger[_0x11f7('0xa')]('Contact\x20found\x20work_number:',_0x3a4549[_0x11f7('0x26')]);return _0x13cd51(_0x3a4549);}createEndUser(_0x3a4549,_0x40d268,_0x3bf249,_0x4f1139)[_0x11f7('0x20')](function(_0xe32cb7){logger[_0x11f7('0xa')]('Contact\x20created:',_0xe32cb7[_0x11f7('0x26')]);return _0x13cd51(_0xe32cb7);});});})['catch'](function(_0x2644da){_0x169a95(_0x2644da);});});};}function createEndUser(_0x22ee0e,_0x105f0e,_0x131772,_0x103db5){return new Promise(function(_0x515622,_0x3f6f3d){var _0x47de4f=moment();var _0x2de141={'method':'POST','uri':_0x103db5+'/api/contacts','body':{'contact':{'last_name':_0x22ee0e['contactNumber'],'work_number':_0x22ee0e[_0x11f7('0x24')],'mobile_number':_0x22ee0e[_0x11f7('0x24')],'owner_id':_0x22ee0e[_0x11f7('0x18')],'created_at':_0x47de4f[_0x11f7('0x22')](_0x11f7('0x27'))}},'json':!![]};_0x2de141[_0x11f7('0x9')]=_0x131772;logger[_0x11f7('0xa')](_0x11f7('0x28'));return rp(_0x2de141)[_0x11f7('0x20')](function(_0xeaf8a4){_0x22ee0e[_0x11f7('0x26')]=_0xeaf8a4['contact']['id'];_0x515622(_0x22ee0e);})[_0x11f7('0x1b')](function(_0x419735){logger[_0x11f7('0x13')]('['+[_0x105f0e[_0x11f7('0x1c')]()]+']',_0x419735['message']);_0x3f6f3d(_0x419735[_0x11f7('0x1d')]);});});}function getTicket(_0xa7718c,_0x390bd0,_0x271c7d,_0x44e9e8,_0x20bcd3){return function(_0x391c00){logger[_0x11f7('0xa')](_0x11f7('0x29'));return new Promise(function(_0x1d37f9,_0x2d5ae5){var _0x58aee2=moment();var _0x1d7346={'method':_0x11f7('0x2a'),'uri':_0x271c7d+'/api/tasks','body':{'title':intUtil['getString'](_0x44e9e8[_0x11f7('0x2b')],_0x20bcd3,'\x20'),'description':intUtil[_0x11f7('0x2c')](_0x44e9e8['Descriptions'],_0x20bcd3,'\x0a'),'owner_id':_0x391c00[_0x11f7('0x18')],'creater_id':_0x391c00[_0x11f7('0x11')],'targetable_id':_0x391c00[_0x11f7('0x26')],'targetable_type':_0x11f7('0x2d'),'created_at':_0x58aee2[_0x11f7('0x22')](_0x11f7('0x27')),'due_date':_0x58aee2['add'](0x1e,'m')['format']('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x1d7346[_0x11f7('0x9')]=_0x390bd0;return rp(_0x1d7346)[_0x11f7('0x20')](function(_0x3c6965){_0x391c00[_0x11f7('0x2e')]=_0x3c6965['task']['id'];logger['info'](_0x11f7('0x2f'),_0x391c00['ticketId']);_0x1d37f9(_0x391c00);})[_0x11f7('0x1b')](function(_0x3e5bf7){logger['error']('['+[_0xa7718c['toUpperCase']()]+']',_0x3e5bf7['message']);_0x2d5ae5(_0x3e5bf7[_0x11f7('0x1d')]);});});};}function emit(_0x522f94,_0x395251,_0x384fbb){var _0x5b9f23={'uri':_0x522f94+_0x11f7('0x30')+_0x384fbb};io['to'](util[_0x11f7('0x22')](_0x11f7('0x31'),_0x395251))[_0x11f7('0x32')](_0x11f7('0x33'),_0x5b9f23);}exports['cs']=function(_0x812042,_0xdd199d,_0x4ea459,_0xc33384,_0x5bd041,_0x362a43,_0xc76c0c,_0x3b79ac){var _0x289240={};var _0x19b2b2={'Authorization':'Token\x20token='+_0x362a43['apiKey']};_0x362a43['remoteUri']=intUtil[_0x11f7('0x34')](_0x362a43['remoteUri']);_0x362a43[_0x11f7('0x35')]=intUtil[_0x11f7('0x34')](_0x362a43[_0x11f7('0x35')]);var _0x4693ce=_0x362a43[_0x11f7('0x36')];_0x289240[_0x11f7('0xf')]=_0x362a43[_0x11f7('0x37')];_0x289240['contactNumber']=_0x3b79ac['toLowerCase']()===_0x11f7('0x38')?_0xdd199d[_0x11f7('0x39')]:_0xdd199d['calleridnum'];_0x289240['callDirection']=_0x3b79ac===_0x11f7('0x3a')||_0x3b79ac===_0x11f7('0x3b')?'queue':_0x11f7('0x38');if(_0xc33384){_0x289240[_0x11f7('0x15')]=_0xc33384[_0x11f7('0xe')];}var _0x531d4d=util[_0x11f7('0x22')](_0x11f7('0x3c'),_0x362a43[_0x11f7('0x35')],_0xdd199d[_0x11f7('0x3d')],md5(_0xdd199d['uniqueid']));if(_0x5bd041&&_0x5bd041[_0x11f7('0x3e')]){logger[_0x11f7('0xa')](_0x11f7('0x3f'),_0x11f7('0x40'));_0xdd199d[_0x11f7('0x41')]=_0x531d4d;}else if(_0xc76c0c&&_0xc76c0c['recordingFormat']&&_0xc76c0c[_0x11f7('0x42')]!==_0x11f7('0x43')){logger['info'](_0x11f7('0x44'),_0x11f7('0x40'));_0xdd199d[_0x11f7('0x41')]=_0x531d4d;}else{_0xdd199d[_0x11f7('0x41')]='';}return getAdminId(_0x289240,_0x3b79ac,_0x19b2b2,_0x4693ce)[_0x11f7('0x20')](getUser(_0x3b79ac,_0x19b2b2,_0x4693ce))[_0x11f7('0x20')](getEndUser(_0x3b79ac,_0x19b2b2,_0x4693ce))[_0x11f7('0x20')](getTicket(_0x3b79ac,_0x19b2b2,_0x4693ce,_0x4ea459,_0xdd199d))[_0x11f7('0x20')](function(_0x1d2b3b){logger[_0x11f7('0xa')](util[_0x11f7('0x22')](_0x11f7('0x45'),_0x1d2b3b[_0x11f7('0x2e')]));if(_0x3b79ac!==_0x11f7('0x3b')){logger['info']('['+[_0x3b79ac[_0x11f7('0x1c')]()]+']',_0x11f7('0x46'));emit(_0x4693ce,_0xc33384[_0x11f7('0x47')],_0x1d2b3b['endUserId']);}})[_0x11f7('0x1b')](function(_0x3ec2b2){logger[_0x11f7('0x13')]('['+[_0x3b79ac[_0x11f7('0x1c')]()]+_0x11f7('0x48'),util[_0x11f7('0x49')](_0x3ec2b2,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xa7f5=['contacts','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','format','contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','Contact','YYYY-MM-DDTHH:mm:ss','ticketId','task','/contacts/','trigger:browser:url','Token\x20token=','apiKey','stripTrailingSlash','serverUrl','toLowerCase','outbound','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','moment','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','defaults','localhost','socket.io-emitter','redis','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','Getting\x20user\x20list','agentEmail','userEmail','userId','Admin\x20selected','/api/lookup?q=','&f=','&entities=contact','find'];(function(_0x1d7037,_0x57dd95){var _0x4d6568=function(_0x5c64c5){while(--_0x5c64c5){_0x1d7037['push'](_0x1d7037['shift']());}};_0x4d6568(++_0x57dd95);}(_0xa7f5,0x119));var _0x5a7f=function(_0x993d1b,_0x3e631d){_0x993d1b=_0x993d1b-0x0;var _0x51e51f=_0xa7f5[_0x993d1b];return _0x51e51f;};'use strict';var _=require(_0x5a7f('0x0'));var rp=require(_0x5a7f('0x1'));var md5=require(_0x5a7f('0x2'));var util=require('util');var moment=require(_0x5a7f('0x3'));var Promise=require('bluebird');var Redis=require(_0x5a7f('0x4'));var intUtil=require(_0x5a7f('0x5'));var config=require(_0x5a7f('0x6'));var logger=require(_0x5a7f('0x7'))(_0x5a7f('0x8'));config['redis']=_[_0x5a7f('0x9')](config['redis'],{'host':_0x5a7f('0xa'),'port':0x18eb});var io=require(_0x5a7f('0xb'))(new Redis(config[_0x5a7f('0xc')]));function getAdminId(_0x3d755e,_0x31378f,_0x21b5db,_0x46df76){return new Promise(function(_0x12ef25,_0x4141ba){var _0xa25cbc=![];var _0x5e3f8d={'method':_0x5a7f('0xd'),'uri':_0x46df76+_0x5a7f('0xe'),'json':!![]};_0x5e3f8d[_0x5a7f('0xf')]=_0x21b5db;logger[_0x5a7f('0x10')](_0x5a7f('0x11'));return rp(_0x5e3f8d)[_0x5a7f('0x12')](function(_0x6e8513){if(_0x6e8513){var _0x5f12f0=_0x6e8513[_0x5a7f('0x13')];var _0x233083=null;for(_0x233083=0x0;_0x233083<_0x5f12f0[_0x5a7f('0x14')];_0x233083++){if(_0x5f12f0[_0x233083][_0x5a7f('0x15')]===_0x3d755e[_0x5a7f('0x16')]){_0x3d755e[_0x5a7f('0x17')]=_0x5f12f0[_0x233083]['id'];_0xa25cbc=!![];}}if(_0xa25cbc){logger[_0x5a7f('0x10')](_0x5a7f('0x18'),_0x3d755e[_0x5a7f('0x17')]);_0x12ef25(_0x3d755e);}else{_0x4141ba({'statusCode':0x194,'message':_0x5a7f('0x19')});}}else{_0x4141ba({'statusCode':0x194,'message':_0x5a7f('0x19')});}})[_0x5a7f('0x1a')](function(_0x124ce4){logger[_0x5a7f('0x1b')]('['+[_0x31378f[_0x5a7f('0x1c')]()]+']',_0x124ce4[_0x5a7f('0x1d')]);_0x4141ba(_0x124ce4);});});}function getUser(_0x289e52,_0x13c8b9,_0x2b688e){return function(_0x22936d){return new Promise(function(_0x320e4f,_0x376bb3){var _0x2ad715={'method':'GET','uri':_0x2b688e+_0x5a7f('0xe'),'json':!![]};_0x2ad715[_0x5a7f('0xf')]=_0x13c8b9;logger[_0x5a7f('0x10')](_0x5a7f('0x1e'));return rp(_0x2ad715)[_0x5a7f('0x12')](function(_0x541729){if(_0x541729){var _0x2e56f5=_0x541729['users'];var _0x1963ff=![];var _0x4a08e3=null;if(_0x22936d[_0x5a7f('0x1f')]!==null){logger[_0x5a7f('0x10')]('Getting\x20user\x20with\x20email',_0x22936d['agentEmail']);_0x22936d[_0x5a7f('0x20')]=_0x22936d[_0x5a7f('0x1f')];for(_0x4a08e3=0x0;_0x4a08e3<_0x2e56f5[_0x5a7f('0x14')];_0x4a08e3++){if(_0x2e56f5[_0x4a08e3][_0x5a7f('0x15')]===_0x22936d[_0x5a7f('0x1f')]){_0x1963ff=!![];_0x22936d[_0x5a7f('0x21')]=_0x2e56f5[_0x4a08e3]['id'];logger[_0x5a7f('0x10')]('User\x20found:',_0x22936d[_0x5a7f('0x21')]);}}}if(!_0x1963ff){logger[_0x5a7f('0x10')](_0x5a7f('0x22'));_0x22936d[_0x5a7f('0x20')]=_0x22936d['adminEmail'];_0x22936d[_0x5a7f('0x21')]=_0x22936d[_0x5a7f('0x17')];_0x1963ff=!![];}if(_0x1963ff){_0x320e4f(_0x22936d);}else{_0x376bb3({'statusCode':0x194,'message':_0x5a7f('0x19')});}}else{_0x376bb3({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x25c962){logger[_0x5a7f('0x1b')]('['+[_0x289e52[_0x5a7f('0x1c')]()]+']',_0x25c962['message']);_0x376bb3(_0x25c962);});});};}function searchContact(_0x35085d,_0x50c2f,_0x59069c,_0x1ec76d){return new Promise(function(_0x1e95cb,_0x4b1c4e){var _0x841987={'method':_0x5a7f('0xd'),'headers':_0x50c2f,'uri':_0x35085d+_0x5a7f('0x23')+_0x1ec76d+_0x5a7f('0x24')+_0x59069c+_0x5a7f('0x25'),'json':!![]};rp(_0x841987)[_0x5a7f('0x12')](function(_0x415898){var _0x17c5f9=_[_0x5a7f('0x26')](_0x415898[_0x5a7f('0x27')][_0x5a7f('0x27')],[_0x59069c,_0x1ec76d]);_0x1e95cb(_0x17c5f9);})[_0x5a7f('0x1a')](function(_0x5bd6a3){_0x4b1c4e(_0x5bd6a3);});});}function getEndUser(_0x3cdf54,_0x22170b,_0xd60d68){return function(_0x23dbec){return new Promise(function(_0x1715be,_0x161b07){logger[_0x5a7f('0x10')](util['format'](_0x5a7f('0x28'),_0x23dbec['contactNumber']));searchContact(_0xd60d68,_0x22170b,'mobile_number',_0x23dbec[_0x5a7f('0x29')])[_0x5a7f('0x12')](function(_0x26e2da){if(_0x26e2da){_0x23dbec[_0x5a7f('0x2a')]=_0x26e2da['id'];logger[_0x5a7f('0x10')](_0x5a7f('0x2b'),_0x23dbec[_0x5a7f('0x2a')]);return _0x1715be(_0x23dbec);}searchContact(_0xd60d68,_0x22170b,_0x5a7f('0x2c'),_0x23dbec['contactNumber'])[_0x5a7f('0x12')](function(_0x4916b8){if(_0x4916b8){_0x23dbec['endUserId']=_0x4916b8['id'];logger['info'](_0x5a7f('0x2d'),_0x23dbec[_0x5a7f('0x2a')]);return _0x1715be(_0x23dbec);}createEndUser(_0x23dbec,_0x3cdf54,_0x22170b,_0xd60d68)[_0x5a7f('0x12')](function(_0x13d371){logger[_0x5a7f('0x10')](_0x5a7f('0x2e'),_0x13d371[_0x5a7f('0x2a')]);return _0x1715be(_0x13d371);});});})[_0x5a7f('0x1a')](function(_0x58d50d){_0x161b07(_0x58d50d);});});};}function createEndUser(_0x5253f5,_0x5db173,_0x2d3592,_0x35957d){return new Promise(function(_0x125b43,_0x5ed2de){var _0x312420=moment();var _0x522e1c={'method':_0x5a7f('0x2f'),'uri':_0x35957d+_0x5a7f('0x30'),'body':{'contact':{'last_name':_0x5253f5[_0x5a7f('0x29')],'work_number':_0x5253f5[_0x5a7f('0x29')],'mobile_number':_0x5253f5['contactNumber'],'owner_id':_0x5253f5[_0x5a7f('0x21')],'created_at':_0x312420[_0x5a7f('0x31')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x522e1c[_0x5a7f('0xf')]=_0x2d3592;logger[_0x5a7f('0x10')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x522e1c)['then'](function(_0x11c5e4){_0x5253f5[_0x5a7f('0x2a')]=_0x11c5e4[_0x5a7f('0x32')]['id'];_0x125b43(_0x5253f5);})['catch'](function(_0x5e990b){logger['error']('['+[_0x5db173[_0x5a7f('0x1c')]()]+']',_0x5e990b[_0x5a7f('0x1d')]);_0x5ed2de(_0x5e990b[_0x5a7f('0x1d')]);});});}function getTicket(_0x4cf8b0,_0x41fa22,_0xecbe06,_0x19878c,_0x1af7dd){return function(_0x144459){logger[_0x5a7f('0x10')](_0x5a7f('0x33'));return new Promise(function(_0x164aa9,_0x10afbc){var _0x48d02c=moment();var _0x41796f={'method':_0x5a7f('0x2f'),'uri':_0xecbe06+_0x5a7f('0x34'),'body':{'title':intUtil[_0x5a7f('0x35')](_0x19878c[_0x5a7f('0x36')],_0x1af7dd,'\x20'),'description':intUtil['getString'](_0x19878c['Descriptions'],_0x1af7dd,'\x0a'),'owner_id':_0x144459['userId'],'creater_id':_0x144459[_0x5a7f('0x17')],'targetable_id':_0x144459[_0x5a7f('0x2a')],'targetable_type':_0x5a7f('0x37'),'created_at':_0x48d02c[_0x5a7f('0x31')](_0x5a7f('0x38')),'due_date':_0x48d02c['add'](0x1e,'m')['format']('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x41796f[_0x5a7f('0xf')]=_0x41fa22;return rp(_0x41796f)[_0x5a7f('0x12')](function(_0x25530c){_0x144459[_0x5a7f('0x39')]=_0x25530c[_0x5a7f('0x3a')]['id'];logger['info']('Task\x20created:',_0x144459['ticketId']);_0x164aa9(_0x144459);})[_0x5a7f('0x1a')](function(_0x1202a5){logger[_0x5a7f('0x1b')]('['+[_0x4cf8b0['toUpperCase']()]+']',_0x1202a5['message']);_0x10afbc(_0x1202a5['message']);});});};}function emit(_0x3adebb,_0x38a04b,_0x4f7d91){var _0x336bec={'uri':_0x3adebb+_0x5a7f('0x3b')+_0x4f7d91};io['to'](util[_0x5a7f('0x31')]('user:%s',_0x38a04b))['emit'](_0x5a7f('0x3c'),_0x336bec);}exports['cs']=function(_0x481b43,_0x4944b3,_0x3218ab,_0x313b9b,_0x4f8b6e,_0x4ec805,_0x462df8,_0x1b6c87){var _0x4bc148={};var _0x13fb40={'Authorization':_0x5a7f('0x3d')+_0x4ec805[_0x5a7f('0x3e')]};_0x4ec805['remoteUri']=intUtil['stripTrailingSlash'](_0x4ec805['remoteUri']);_0x4ec805['serverUrl']=intUtil[_0x5a7f('0x3f')](_0x4ec805[_0x5a7f('0x40')]);var _0x2d1a9e=_0x4ec805['remoteUri'];_0x4bc148[_0x5a7f('0x16')]=_0x4ec805['username'];_0x4bc148[_0x5a7f('0x29')]=_0x1b6c87[_0x5a7f('0x41')]()===_0x5a7f('0x42')?_0x4944b3['destcalleridnum']:_0x4944b3[_0x5a7f('0x43')];_0x4bc148[_0x5a7f('0x44')]=_0x1b6c87===_0x5a7f('0x45')||_0x1b6c87===_0x5a7f('0x46')?'queue':_0x5a7f('0x42');if(_0x313b9b){_0x4bc148[_0x5a7f('0x1f')]=_0x313b9b[_0x5a7f('0x15')];}var _0x44d2f5=util[_0x5a7f('0x31')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4ec805[_0x5a7f('0x40')],_0x4944b3[_0x5a7f('0x47')],md5(_0x4944b3['uniqueid']));if(_0x4f8b6e&&_0x4f8b6e[_0x5a7f('0x48')]){logger[_0x5a7f('0x10')]('[QUEUE]',_0x5a7f('0x49'));_0x4944b3[_0x5a7f('0x4a')]=_0x44d2f5;}else if(_0x462df8&&_0x462df8[_0x5a7f('0x4b')]&&_0x462df8[_0x5a7f('0x4b')]!==_0x5a7f('0x4c')){logger['info']('[OUTBOUND]',_0x5a7f('0x49'));_0x4944b3[_0x5a7f('0x4a')]=_0x44d2f5;}else{_0x4944b3['recordingURL']='';}return getAdminId(_0x4bc148,_0x1b6c87,_0x13fb40,_0x2d1a9e)['then'](getUser(_0x1b6c87,_0x13fb40,_0x2d1a9e))[_0x5a7f('0x12')](getEndUser(_0x1b6c87,_0x13fb40,_0x2d1a9e))[_0x5a7f('0x12')](getTicket(_0x1b6c87,_0x13fb40,_0x2d1a9e,_0x3218ab,_0x4944b3))[_0x5a7f('0x12')](function(_0x42f965){logger[_0x5a7f('0x10')](util[_0x5a7f('0x31')](_0x5a7f('0x4d'),_0x42f965['ticketId']));if(_0x1b6c87!=='unmanaged'){logger['info']('['+[_0x1b6c87[_0x5a7f('0x1c')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x2d1a9e,_0x313b9b['name'],_0x42f965['endUserId']);}})['catch'](function(_0x48b254){logger[_0x5a7f('0x1b')]('['+[_0x1b6c87[_0x5a7f('0x1c')]()]+_0x5a7f('0x4e'),util[_0x5a7f('0x4f')](_0x48b254,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index ac48794..954d3f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1069=['desk','dynamics365','servicenow','includes','toLowerCase','data1','data2','find','Configurations','queue','outbound','log','salesforce','unknown\x20integration','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','data3','lodash','util','./zendesk','./salesforce','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./dynamics365','zendesk','sugarcrm','freshdesk','zoho'];(function(_0x367799,_0x1438ed){var _0x2fbf0e=function(_0x26d210){while(--_0x26d210){_0x367799['push'](_0x367799['shift']());}};_0x2fbf0e(++_0x1438ed);}(_0x1069,0xbd));var _0x9106=function(_0x959df,_0x27ec61){_0x959df=_0x959df-0x0;var _0x1ffba7=_0x1069[_0x959df];return _0x1ffba7;};'use strict';var _=require(_0x9106('0x0'));var util=require(_0x9106('0x1'));var zendesk=require(_0x9106('0x2'));var salesforce=require(_0x9106('0x3'));var sugarcrm=require(_0x9106('0x4'));var freshdesk=require(_0x9106('0x5'));var zoho=require(_0x9106('0x6'));var desk=require(_0x9106('0x7'));var vtiger=require(_0x9106('0x8'));var servicenow=require(_0x9106('0x9'));var dynamics365=require(_0x9106('0xa'));var freshsales=require('./freshsales');var integrations=[_0x9106('0xb'),'salesforce',_0x9106('0xc'),_0x9106('0xd'),_0x9106('0xe'),_0x9106('0xf'),'vtiger',_0x9106('0x10'),'freshsales',_0x9106('0x11')];exports['exec']=function(_0x3446a1,_0x305b8c,_0x536955,_0x3a0c07,_0x4ec222,_0x15792b){if(_0x536955){if(_[_0x9106('0x12')](integrations,_0x3446a1['data1'][_0x9106('0x13')]())){try{var _0xaadb12=null;var _0x5440df='';var _0x401547=_0x536955[_0x3446a1[_0x9106('0x14')][_0x9106('0x13')]()];if(_0x401547){var _0x5981cf=_0x401547[_0x3446a1[_0x9106('0x15')]];if(_0x5981cf){var _0x43e9b9=_[_0x9106('0x16')](_0x5981cf[_0x9106('0x17')],{'id':parseInt(_0x3446a1['data3'],0xa)});if(_0x43e9b9){if(_0x3a0c07){if(_0x4ec222&&_0x305b8c[_0x9106('0x18')]){_0x5440df=_0x9106('0x18');}else if(_0x305b8c['routeId']){_0x5440df=_0x9106('0x19');}else{console[_0x9106('0x1a')]('EVENT\x20UNKNOWN',_0x305b8c);}}else{_0x5440df='unmanaged';}switch(_0x3446a1[_0x9106('0x14')][_0x9106('0x13')]()){case _0x9106('0xb'):zendesk[_0x5440df](_0x3446a1,_0x305b8c,_0x43e9b9,_0x3a0c07,_0x4ec222,_0x5981cf,_0x15792b);break;case _0x9106('0x1b'):salesforce[_0x5440df](_0x3446a1,_0x305b8c,_0x43e9b9,_0x3a0c07,_0x4ec222,_0x5981cf,_0x15792b);break;case _0x9106('0xc'):sugarcrm[_0x5440df](_0x3446a1,_0x305b8c,_0x43e9b9,_0x3a0c07,_0x4ec222,_0x5981cf,_0x15792b);break;case _0x9106('0xd'):freshdesk[_0x5440df](_0x3446a1,_0x305b8c,_0x43e9b9,_0x3a0c07,_0x4ec222,_0x5981cf,_0x15792b);break;case'zoho':zoho[_0x5440df](_0x3446a1,_0x305b8c,_0x43e9b9,_0x3a0c07,_0x4ec222,_0x5981cf,_0x15792b);break;case _0x9106('0xf'):desk[_0x5440df](_0x3446a1,_0x305b8c,_0x43e9b9,_0x3a0c07,_0x4ec222,_0x5981cf,_0x15792b);break;case'vtiger':vtiger[_0x5440df](_0x3446a1,_0x305b8c,_0x43e9b9,_0x3a0c07,_0x4ec222,_0x5981cf,_0x15792b);break;case'freshsales':freshsales['cs'](_0x3446a1,_0x305b8c,_0x43e9b9,_0x3a0c07,_0x4ec222,_0x5981cf,_0x15792b,_0x5440df);break;case _0x9106('0x11'):servicenow['cs'](_0x3446a1,_0x305b8c,_0x43e9b9,_0x3a0c07,_0x4ec222,_0x5981cf,_0x15792b,_0x5440df);break;case _0x9106('0x10'):dynamics365['cs'](_0x3446a1,_0x305b8c,_0x43e9b9,_0x3a0c07,_0x4ec222,_0x5981cf,_0x15792b,_0x5440df);break;default:console['log'](_0x9106('0x1c'));}}else{_0xaadb12=require('../../../../config/logger')(_0x3446a1[_0x9106('0x14')][_0x9106('0x13')]());_0xaadb12[_0x9106('0x1d')](_0x9106('0x1e'),util[_0x9106('0x1f')](_0x9106('0x20'),_0x3446a1[_0x9106('0x14')][_0x9106('0x13')](),_0x3446a1[_0x9106('0x21')]));}}else{_0xaadb12=require('../../../../config/logger')(_0x3446a1[_0x9106('0x14')][_0x9106('0x13')]());_0xaadb12[_0x9106('0x1d')](_0x9106('0x1e'),util[_0x9106('0x1f')]('%s\x20account\x20#%s\x20not\x20found',_0x3446a1[_0x9106('0x14')]['toLowerCase'](),_0x3446a1[_0x9106('0x15')]));}}else{}}catch(_0xbfd974){console[_0x9106('0x1d')](_0xbfd974);}}}};
\ No newline at end of file
+var _0x82f8=['./salesforce','./sugarcrm','./zoho','./desk','./vtiger','./servicenow','./freshsales','zendesk','salesforce','sugarcrm','zoho','desk','dynamics365','freshsales','exec','includes','data1','toLowerCase','data2','find','data3','queue','routeId','log','EVENT\x20UNKNOWN','unmanaged','freshdesk','servicenow','../../../../config/logger','error','[EXEC]','format','%s\x20account\x20#%s\x20not\x20found','util','./zendesk'];(function(_0x5c3c0b,_0x4ee35e){var _0x52ecd2=function(_0x3cf575){while(--_0x3cf575){_0x5c3c0b['push'](_0x5c3c0b['shift']());}};_0x52ecd2(++_0x4ee35e);}(_0x82f8,0x15c));var _0x882f=function(_0x3f9e4c,_0x18024c){_0x3f9e4c=_0x3f9e4c-0x0;var _0x221a1e=_0x82f8[_0x3f9e4c];return _0x221a1e;};'use strict';var _=require('lodash');var util=require(_0x882f('0x0'));var zendesk=require(_0x882f('0x1'));var salesforce=require(_0x882f('0x2'));var sugarcrm=require(_0x882f('0x3'));var freshdesk=require('./freshdesk');var zoho=require(_0x882f('0x4'));var desk=require(_0x882f('0x5'));var vtiger=require(_0x882f('0x6'));var servicenow=require(_0x882f('0x7'));var dynamics365=require('./dynamics365');var freshsales=require(_0x882f('0x8'));var integrations=[_0x882f('0x9'),_0x882f('0xa'),_0x882f('0xb'),'freshdesk',_0x882f('0xc'),_0x882f('0xd'),'vtiger',_0x882f('0xe'),_0x882f('0xf'),'servicenow'];exports[_0x882f('0x10')]=function(_0x5bf1b9,_0x5e16b5,_0x4138cd,_0x2fb24c,_0x288a70,_0x4fe855){if(_0x4138cd){if(_[_0x882f('0x11')](integrations,_0x5bf1b9[_0x882f('0x12')][_0x882f('0x13')]())){try{var _0x339a1e=null;var _0x4a81e7='';var _0x322337=_0x4138cd[_0x5bf1b9['data1']['toLowerCase']()];if(_0x322337){var _0x346010=_0x322337[_0x5bf1b9[_0x882f('0x14')]];if(_0x346010){var _0x2ef6e6=_[_0x882f('0x15')](_0x346010['Configurations'],{'id':parseInt(_0x5bf1b9[_0x882f('0x16')],0xa)});if(_0x2ef6e6){if(_0x2fb24c){if(_0x288a70&&_0x5e16b5[_0x882f('0x17')]){_0x4a81e7=_0x882f('0x17');}else if(_0x5e16b5[_0x882f('0x18')]){_0x4a81e7='outbound';}else{console[_0x882f('0x19')](_0x882f('0x1a'),_0x5e16b5);}}else{_0x4a81e7=_0x882f('0x1b');}switch(_0x5bf1b9[_0x882f('0x12')][_0x882f('0x13')]()){case _0x882f('0x9'):zendesk[_0x4a81e7](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855);break;case _0x882f('0xa'):salesforce[_0x4a81e7](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855);break;case _0x882f('0xb'):sugarcrm[_0x4a81e7](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855);break;case _0x882f('0x1c'):freshdesk[_0x4a81e7](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855);break;case _0x882f('0xc'):zoho[_0x4a81e7](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855);break;case _0x882f('0xd'):desk[_0x4a81e7](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855);break;case'vtiger':vtiger[_0x4a81e7](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855);break;case'freshsales':freshsales['cs'](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855,_0x4a81e7);break;case _0x882f('0x1d'):servicenow['cs'](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855,_0x4a81e7);break;case _0x882f('0xe'):dynamics365['cs'](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855,_0x4a81e7);break;default:console[_0x882f('0x19')]('unknown\x20integration');}}else{_0x339a1e=require(_0x882f('0x1e'))(_0x5bf1b9['data1'][_0x882f('0x13')]());_0x339a1e[_0x882f('0x1f')](_0x882f('0x20'),util[_0x882f('0x21')]('%s\x20configuration\x20#%s\x20not\x20found',_0x5bf1b9[_0x882f('0x12')][_0x882f('0x13')](),_0x5bf1b9[_0x882f('0x16')]));}}else{_0x339a1e=require(_0x882f('0x1e'))(_0x5bf1b9['data1'][_0x882f('0x13')]());_0x339a1e['error'](_0x882f('0x20'),util[_0x882f('0x21')](_0x882f('0x22'),_0x5bf1b9[_0x882f('0x12')]['toLowerCase'](),_0x5bf1b9[_0x882f('0x14')]));}}else{}}catch(_0x4d6215){console['error'](_0x4d6215);}}}};
\ No newline at end of file
index 4fd47d3..5c09536 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dad=['leadId','Association\x20between\x20Case\x20and\x20Lead\x20skipped','create','isNil','validateEmail','User','find','execute','then','length','Email','info','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','Contact','additionalSearchLead','sobject','Lead','additionalSearchAccount','Account','first','Phone','type','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Caller\x20-\x20%s','Company','No\x20Company','upperFirst','forEach','includes','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','concat','securityToken','remoteUri','clientId','clientSecret','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','calleridname','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','newTab','%s/%s/e','instanceUrl','error','catch','outbound','recordingFormat','none','destcalleridname','destcalleridnum','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','trigger:salesforce:display','trigger:browser:url','[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.','lodash','request-promise','moment','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','localhost','socket.io-emitter','emit','assign','getString','Subjects','ticketType','Task','ActivityDate','utc','IsReminderSet','IsRecurrence','endUserType','contact','lead','WhoId','account','WhatId','Case','ContactId','AccountId'];(function(_0x291d55,_0x459ef9){var _0x3848ad=function(_0xd4c586){while(--_0xd4c586){_0x291d55['push'](_0x291d55['shift']());}};_0x3848ad(++_0x459ef9);}(_0x3dad,0x164));var _0xd3da=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x3dad[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0xd3da('0x0'));var rp=require(_0xd3da('0x1'));var moment=require(_0xd3da('0x2'));var BPromise=require('bluebird');var md5=require('md5');var jsforce=require('jsforce');var util=require(_0xd3da('0x3'));var Redis=require(_0xd3da('0x4'));var intUtil=require(_0xd3da('0x5'));var config=require(_0xd3da('0x6'));var logger=require(_0xd3da('0x7'))(_0xd3da('0x8'));config[_0xd3da('0x9')]=_['defaults'](config[_0xd3da('0x9')],{'host':_0xd3da('0xa'),'port':0x18eb});var io=require(_0xd3da('0xb'))(new Redis(config['redis']));function emit(_0x138fd1,_0x1ee08c,_0x406125){io['to'](_0x138fd1)[_0xd3da('0xc')](_0x1ee08c,_0x406125);}function getTicket(_0x4ae4b8,_0xfeeac8,_0xae5d42,_0x19eaf8,_0x392a69,_0x5b457e,_0x42be35,_0x38f662){var _0x403eed=Object[_0xd3da('0xd')]({},{'OwnerId':_0xfeeac8['id'],'Subject':intUtil[_0xd3da('0xe')](_0x19eaf8[_0xd3da('0xf')],_0x392a69,'\x20'),'Description':intUtil[_0xd3da('0xe')](_0x19eaf8['Descriptions'],_0x392a69,'\x0a')},getCustomFields(_0x5b457e,_0x392a69));if(_0xae5d42){if(_0x19eaf8[_0xd3da('0x10')]===_0xd3da('0x11')){_0x403eed[_0xd3da('0x12')]=moment[_0xd3da('0x13')]();_0x403eed[_0xd3da('0x14')]=![];_0x403eed[_0xd3da('0x15')]=![];if(_0xae5d42[_0xd3da('0x16')]===_0xd3da('0x17')||_0xae5d42[_0xd3da('0x16')]===_0xd3da('0x18')){_0x403eed[_0xd3da('0x19')]=_0xae5d42['id'];}else if(_0xae5d42[_0xd3da('0x16')]===_0xd3da('0x1a')){_0x403eed[_0xd3da('0x1b')]=_0xae5d42['id'];}}else if(_0x19eaf8[_0xd3da('0x10')]===_0xd3da('0x1c')){if(_0xae5d42['endUserType']==='contact'){_0x403eed[_0xd3da('0x1d')]=_0xae5d42['id'];}else if(_0xae5d42['endUserType']===_0xd3da('0x1a')){_0x403eed[_0xd3da('0x1e')]=_0xae5d42['id'];}else if(_0xae5d42[_0xd3da('0x16')]==='lead'&&_0x19eaf8['leadId']){_0x403eed[_0x19eaf8[_0xd3da('0x1f')]]=_0xae5d42['id'];}else{logger['info'](_0xd3da('0x20'));}}}return _0x42be35['sobject'](_0x19eaf8[_0xd3da('0x10')])[_0xd3da('0x21')](_0x403eed);}function getUser(_0x41698d,_0x5bf466,_0x3cddb3){if(!_[_0xd3da('0x22')](_0x5bf466)&&intUtil[_0xd3da('0x23')](_0x5bf466)){var _0x1896c9={'Email':_0x5bf466};var _0x55d56e={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x3cddb3['sobject'](_0xd3da('0x24'))[_0xd3da('0x25')](_0x1896c9,_0x55d56e)[_0xd3da('0x26')]()[_0xd3da('0x27')](function(_0x408913){if(_0x408913[_0xd3da('0x28')]){var _0x25be96=_[_0xd3da('0x25')](_0x408913,function(_0x26f889){return _0x26f889[_0xd3da('0x29')]===_0x5bf466;});if(_0x25be96){logger[_0xd3da('0x2a')](_0xd3da('0x2b'),_0x5bf466);return BPromise[_0xd3da('0x2c')]({'id':_0x25be96['Id'],'name':_0x25be96[_0xd3da('0x2d')]});}}else{logger[_0xd3da('0x2a')](_0xd3da('0x2e'),_0x5bf466);return _0x3cddb3[_0xd3da('0x2f')]()[_0xd3da('0x27')](function(_0xc3c0b2){return BPromise[_0xd3da('0x2c')]({'id':_0xc3c0b2[_0xd3da('0x30')],'name':_0xc3c0b2[_0xd3da('0x31')]});});}});}else{logger[_0xd3da('0x2a')](_0xd3da('0x2e'),_0x5bf466);return _0x3cddb3['identity']()['then'](function(_0x1a9583){return BPromise[_0xd3da('0x2c')]({'id':_0x1a9583[_0xd3da('0x30')],'name':_0x1a9583['display_name']});});}}function getEndUser(_0x2b1b02,_0x61385e,_0x490e3b,_0x27dd1f,_0x595b9d){var _0x5479b9={'$or':{'Phone':_0x27dd1f}};var _0x5380b6={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()[_0xd3da('0x27')](function(){logger[_0xd3da('0x2a')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x27dd1f,_0x61385e[_0xd3da('0x32')]);switch(_0x61385e[_0xd3da('0x32')]){case _0xd3da('0x33'):var _0x455231=_[_0xd3da('0x34')](_0x5479b9);if(_0x61385e[_0xd3da('0x35')]){var _0x3ddc6b={};_0x3ddc6b[_0x61385e[_0xd3da('0x35')]]=_0x27dd1f;_[_0xd3da('0x36')](_0x455231[_0xd3da('0x37')],_0x3ddc6b);}return _0x595b9d['sobject'](_0xd3da('0x38'))[_0xd3da('0x25')](_0x455231,_0x5380b6)[_0xd3da('0x26')]()[_0xd3da('0x27')](function(_0x2f785a){if(_0x2f785a&&_0x2f785a[_0xd3da('0x28')]){return _0x2f785a;}else{var _0x833a63=_[_0xd3da('0x34')](_0x5479b9);if(_0x61385e[_0xd3da('0x39')]){var _0x1136d4={};_0x1136d4[_0x61385e['additionalSearchLead']]=_0x27dd1f;_[_0xd3da('0x36')](_0x833a63[_0xd3da('0x37')],_0x1136d4);}return _0x595b9d[_0xd3da('0x3a')](_0xd3da('0x3b'))['find'](_0x833a63,_0x5380b6);}});case'account_contact_lead':var _0x28a3e2=_[_0xd3da('0x34')](_0x5479b9);if(_0x61385e[_0xd3da('0x3c')]){var _0x3ddc6b={};_0x3ddc6b[_0x61385e[_0xd3da('0x3c')]]=_0x27dd1f;_[_0xd3da('0x36')](_0x28a3e2[_0xd3da('0x37')],_0x3ddc6b);}return _0x595b9d[_0xd3da('0x3a')](_0xd3da('0x3d'))[_0xd3da('0x25')](_0x28a3e2,_0x5380b6)[_0xd3da('0x26')]()[_0xd3da('0x27')](function(_0x1c8df8){if(_0x1c8df8&&_0x1c8df8[_0xd3da('0x28')]){return _0x1c8df8;}else{var _0x4f560d=_[_0xd3da('0x34')](_0x5479b9);if(_0x61385e[_0xd3da('0x35')]){var _0x15e44d={};_0x15e44d[_0x61385e['additionalSearchContact']]=_0x27dd1f;_['merge'](_0x4f560d['$or'],_0x15e44d);}return _0x595b9d['sobject']('Contact')[_0xd3da('0x25')](_0x4f560d,_0x5380b6)[_0xd3da('0x27')](function(_0x2f82d1){if(_0x2f82d1&&_0x2f82d1[_0xd3da('0x28')]){return _0x2f82d1;}else{var _0x4bb6ac=_['cloneDeep'](_0x5479b9);if(_0x61385e[_0xd3da('0x39')]){var _0x48718a={};_0x48718a[_0x61385e[_0xd3da('0x39')]]=_0x27dd1f;_[_0xd3da('0x36')](_0x4bb6ac[_0xd3da('0x37')],_0x48718a);}return _0x595b9d[_0xd3da('0x3a')]('Lead')[_0xd3da('0x25')](_0x4bb6ac,_0x5380b6);}});}});case _0xd3da('0x17'):var _0x455231=_[_0xd3da('0x34')](_0x5479b9);if(_0x61385e[_0xd3da('0x35')]){var _0x3ddc6b={};_0x3ddc6b[_0x61385e[_0xd3da('0x35')]]=_0x27dd1f;_[_0xd3da('0x36')](_0x455231[_0xd3da('0x37')],_0x3ddc6b);}return _0x595b9d['sobject'](_0xd3da('0x38'))['find'](_0x455231,_0x5380b6)[_0xd3da('0x26')]();case'lead':var _0x6bdd7c=_[_0xd3da('0x34')](_0x5479b9);if(_0x61385e[_0xd3da('0x39')]){var _0x3ddc6b={};_0x3ddc6b[_0x61385e[_0xd3da('0x39')]]=_0x27dd1f;_['merge'](_0x6bdd7c[_0xd3da('0x37')],_0x3ddc6b);}return _0x595b9d[_0xd3da('0x3a')](_0xd3da('0x3b'))[_0xd3da('0x25')](_0x6bdd7c,_0x5380b6);case _0xd3da('0x1a'):var _0x28a3e2=_['cloneDeep'](_0x5479b9);if(_0x61385e[_0xd3da('0x3c')]){var _0x3ddc6b={};_0x3ddc6b[_0x61385e[_0xd3da('0x3c')]]=_0x27dd1f;_[_0xd3da('0x36')](_0x28a3e2['$or'],_0x3ddc6b);}return _0x595b9d[_0xd3da('0x3a')](_0xd3da('0x3d'))[_0xd3da('0x25')](_0x28a3e2,_0x5380b6);default:return null;}})[_0xd3da('0x27')](function(_0x464c78){if(_0x464c78&&_0x464c78[_0xd3da('0x28')]){var _0x29371f=_[_0xd3da('0x3e')](_0x464c78);if(_0x29371f){return BPromise[_0xd3da('0x2c')]({'id':_0x29371f['Id'],'name':_0x29371f[_0xd3da('0x2d')],'phone':_0x29371f[_0xd3da('0x3f')],'endUserType':_0x29371f['attributes'][_0xd3da('0x40')]['toLowerCase']()});}}})['then'](function(_0x4ae041){if(_0x4ae041){logger[_0xd3da('0x2a')](_0xd3da('0x41'),_0x4ae041[_0xd3da('0x16')],_0x27dd1f);return BPromise[_0xd3da('0x2c')](_0x4ae041);}else{logger[_0xd3da('0x2a')](_0xd3da('0x42'),_0x27dd1f);var _0x22f96a={'Phone':_0x27dd1f};if(_0x61385e[_0xd3da('0x43')]){if(_0x61385e[_0xd3da('0x43')]==='contact'){logger[_0xd3da('0x2a')](_0xd3da('0x44'),_0x27dd1f,_0x61385e[_0xd3da('0x43')]);_0x22f96a[_0xd3da('0x45')]=_0x490e3b!==_0xd3da('0x46')?_0x490e3b:util[_0xd3da('0x47')](_0xd3da('0x48'),_0x27dd1f);}else if(_0x61385e[_0xd3da('0x43')]===_0xd3da('0x18')){logger[_0xd3da('0x2a')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x27dd1f,_0x61385e['moduleCreate']);_0x22f96a[_0xd3da('0x45')]=_0x490e3b!==_0xd3da('0x46')?_0x490e3b:util[_0xd3da('0x47')]('Caller\x20-\x20%s',_0x27dd1f);_0x22f96a[_0xd3da('0x49')]=_0xd3da('0x4a');}else if(_0x61385e[_0xd3da('0x43')]==='account'){logger[_0xd3da('0x2a')](_0xd3da('0x44'),_0x27dd1f,_0x61385e[_0xd3da('0x43')]);_0x22f96a[_0xd3da('0x2d')]=_0x490e3b!=='<unknown>'?_0x490e3b:util[_0xd3da('0x47')]('Caller\x20-\x20%s',_0x27dd1f);}else{return null;}}return _0x595b9d[_0xd3da('0x3a')](_[_0xd3da('0x4b')](_0x61385e[_0xd3da('0x43')]))[_0xd3da('0x21')](_0x22f96a)[_0xd3da('0x27')](function(_0x1d71c4){return BPromise[_0xd3da('0x2c')]({'id':_0x1d71c4['id'],'endUserType':_0x61385e[_0xd3da('0x43')]});});}});}function getCustomFields(_0x60181a,_0x56e406){var _0x45a51c={};if(_0x60181a[_0xd3da('0x28')]>0x0){_[_0xd3da('0x4c')](_0x60181a,function(_0x16bd40){if(_[_0xd3da('0x4d')](['string','picklist'],_0x16bd40['type'])&&_0x16bd40['idField']){_0x45a51c[_0x16bd40[_0xd3da('0x4e')]]=_0x16bd40[_0xd3da('0x4f')][_0xd3da('0x50')]();}else if(_0x16bd40['type']===_0xd3da('0x51')&&_0x16bd40[_0xd3da('0x52')]&&_0x16bd40[_0xd3da('0x4e')]){_0x56e406[_0x16bd40[_0xd3da('0x52')]]&&(_0x45a51c[_0x16bd40['idField']]=_0x56e406[_0x16bd40[_0xd3da('0x52')]][_0xd3da('0x50')]());}else if(_0x16bd40['type']===_0xd3da('0x53')&&_0x16bd40[_0xd3da('0x54')]&&_0x16bd40[_0xd3da('0x54')][_0xd3da('0x55')]&&_0x16bd40[_0xd3da('0x4e')]){_0x56e406[_0x16bd40[_0xd3da('0x54')][_0xd3da('0x55')][_0xd3da('0x56')]()]&&(_0x45a51c[_0x16bd40[_0xd3da('0x4e')]]=_0x56e406[_0x16bd40[_0xd3da('0x54')][_0xd3da('0x55')][_0xd3da('0x56')]()]['toString']());}});}return _0x45a51c;}function getConnection(_0x599348){var _0x109e49=_0x599348['password'][_0xd3da('0x57')](_0x599348[_0xd3da('0x58')]);var _0x139694=new jsforce['Connection']({'oauth2':{'loginUrl':_0x599348[_0xd3da('0x59')]||'https://login.salesforce.com','clientId':_0x599348[_0xd3da('0x5a')],'clientSecret':_0x599348[_0xd3da('0x5b')]}});return _0x139694['login'](_0x599348[_0xd3da('0x5c')],_0x109e49)[_0xd3da('0x27')](function(){logger[_0xd3da('0x2a')](_0xd3da('0x5d'));return _0x139694;});}exports[_0xd3da('0x5e')]=function(_0x2cd7b2,_0x48a6a9,_0x314a74,_0x52654f,_0x2dc040,_0x207c6f){var _0x2ac4cd,_0x329116,_0x474dae,_0x5f1b22;_0x207c6f['serverUrl']=intUtil['stripTrailingSlash'](_0x207c6f[_0xd3da('0x5f')]);_0x207c6f[_0xd3da('0x59')]=intUtil[_0xd3da('0x60')](_0x207c6f[_0xd3da('0x59')]);if(_0x2dc040&&_0x2dc040[_0xd3da('0x61')]){logger[_0xd3da('0x2a')](_0xd3da('0x62'),_0xd3da('0x63'));_0x48a6a9['recordingURL']=util[_0xd3da('0x47')](_0xd3da('0x64'),_0x207c6f[_0xd3da('0x5f')],_0x48a6a9[_0xd3da('0x65')],md5(_0x48a6a9[_0xd3da('0x65')]));}else{_0x48a6a9[_0xd3da('0x66')]='';}return getConnection(_0x207c6f)[_0xd3da('0x27')](function(_0x5e12c2){_0x5f1b22=_0x5e12c2;return getUser(_0x207c6f,_0x52654f[_0xd3da('0x67')],_0x5f1b22);})[_0xd3da('0x27')](function(_0x3d5e25){_0x2ac4cd=_0x3d5e25;return getEndUser(_0x207c6f,_0x314a74,_0x48a6a9[_0xd3da('0x68')],_0x48a6a9[_0xd3da('0x69')],_0x5f1b22);})[_0xd3da('0x27')](function(_0x599606){_0x329116=_0x599606;return getTicket(_0x207c6f,_0x2ac4cd,_0x329116,_0x314a74,_0x48a6a9,_0x314a74[_0xd3da('0x6a')],_0x5f1b22,_0xd3da('0x5e'));})[_0xd3da('0x27')](function(_0x1fef05){_0x474dae=_0x1fef05;logger[_0xd3da('0x2a')](_0xd3da('0x6b'),_0x474dae['id']);logger[_0xd3da('0x2a')](_0xd3da('0x6c'),_0x474dae['id'],_0x52654f[_0xd3da('0x55')],_0x207c6f['type']);switch(_0x207c6f[_0xd3da('0x40')]){case'integrationTab':emit(util[_0xd3da('0x47')](_0xd3da('0x6d'),_0x52654f[_0xd3da('0x55')]),'trigger:salesforce:display',{'recordId':_0x474dae['id']});break;case _0xd3da('0x6e'):emit(util['format'](_0xd3da('0x6d'),_0x52654f[_0xd3da('0x55')]),'trigger:browser:url',{'uri':util['format'](_0xd3da('0x6f'),_0x5f1b22[_0xd3da('0x70')],_0x474dae['id'])});break;default:logger[_0xd3da('0x71')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})[_0xd3da('0x72')](function(_0x390373){logger[_0xd3da('0x71')](_0xd3da('0x62'),_0x390373);});};exports[_0xd3da('0x73')]=function(_0xbabedc,_0x44fc3a,_0x3325f7,_0x4a9043,_0x5ec5a1,_0x55740b,_0x45df9a){var _0x3681ac,_0x317a90,_0x3f01f5,_0x400538;_0x55740b['serverUrl']=intUtil[_0xd3da('0x60')](_0x55740b[_0xd3da('0x5f')]);_0x55740b[_0xd3da('0x59')]=intUtil['stripTrailingSlash'](_0x55740b[_0xd3da('0x59')]);if(_0x45df9a&&_0x45df9a[_0xd3da('0x74')]&&_0x45df9a[_0xd3da('0x74')]!==_0xd3da('0x75')){logger[_0xd3da('0x2a')]('[OUTBOUND]',_0xd3da('0x63'));_0x44fc3a['recordingURL']=util[_0xd3da('0x47')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x55740b[_0xd3da('0x5f')],_0x44fc3a[_0xd3da('0x65')],md5(_0x44fc3a[_0xd3da('0x65')]));}return getConnection(_0x55740b)[_0xd3da('0x27')](function(_0x1fa2ae){_0x400538=_0x1fa2ae;return getUser(_0x55740b,_0x4a9043[_0xd3da('0x67')],_0x400538);})[_0xd3da('0x27')](function(_0x3d4fd8){_0x3681ac=_0x3d4fd8;return getEndUser(_0x55740b,_0x3325f7,_0x44fc3a[_0xd3da('0x76')],_0x44fc3a[_0xd3da('0x77')],_0x400538);})[_0xd3da('0x27')](function(_0x1c1b12){_0x317a90=_0x1c1b12;return getTicket(_0x55740b,_0x3681ac,_0x317a90,_0x3325f7,_0x44fc3a,_0x3325f7[_0xd3da('0x6a')],_0x400538,_0xd3da('0x73'));})[_0xd3da('0x27')](function(_0x228322){_0x3f01f5=_0x228322;logger[_0xd3da('0x2a')]('[OUTBOUND]\x20Ticket\x20%s\x20created.',_0x3f01f5['id']);logger['info'](_0xd3da('0x78'),_0x3f01f5['id'],_0x4a9043[_0xd3da('0x55')],_0x55740b[_0xd3da('0x40')]);switch(_0x55740b['type']){case _0xd3da('0x79'):emit(util[_0xd3da('0x47')](_0xd3da('0x6d'),_0x4a9043[_0xd3da('0x55')]),_0xd3da('0x7a'),{'recordId':_0x3f01f5['id']});break;case _0xd3da('0x6e'):emit(util[_0xd3da('0x47')](_0xd3da('0x6d'),_0x4a9043['name']),_0xd3da('0x7b'),{'uri':util[_0xd3da('0x47')]('%s/%s/e',_0x400538['instanceUrl'],_0x3f01f5['id'])});break;default:logger[_0xd3da('0x71')](_0xd3da('0x7c'),_0xd3da('0x7d'));}})[_0xd3da('0x72')](function(_0xa38df9){logger[_0xd3da('0x71')]('[OUTBOUND]',_0xa38df9);});};exports['unmanaged']=function(_0x49ec98,_0x6857fe,_0x260e7b,_0x5c85d2,_0x4c49dd,_0x4e1448){var _0x548890,_0x274b81,_0x3ce6a2,_0x10df78;_0x4e1448[_0xd3da('0x5f')]=intUtil['stripTrailingSlash'](_0x4e1448['serverUrl']);_0x4e1448[_0xd3da('0x59')]=intUtil[_0xd3da('0x60')](_0x4e1448['remoteUri']);if(_0x4c49dd&&_0x4c49dd[_0xd3da('0x61')]){logger[_0xd3da('0x2a')]('['+_0x6857fe[_0xd3da('0x7e')][_0xd3da('0x7f')]()+']',_0xd3da('0x63'));_0x6857fe['recordingURL']=util[_0xd3da('0x47')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4e1448[_0xd3da('0x5f')],_0x6857fe[_0xd3da('0x65')],md5(_0x6857fe[_0xd3da('0x65')]));}else{_0x6857fe[_0xd3da('0x66')]='';}return getConnection(_0x4e1448)[_0xd3da('0x27')](function(_0x2d6d38){_0x10df78=_0x2d6d38;if(!_[_0xd3da('0x22')](_0x5c85d2)){return getUser(_0x4e1448,_0x5c85d2['name'],_0x10df78);}else{return getUser(_0x4e1448,null,_0x10df78);}})[_0xd3da('0x27')](function(_0x39d0ee){_0x548890=_0x39d0ee;return getEndUser(_0x4e1448,_0x260e7b,_0x6857fe['calleridname'],_0x6857fe['calleridnum'],_0x10df78);})[_0xd3da('0x27')](function(_0x1082b5){_0x274b81=_0x1082b5;return getTicket(_0x4e1448,_0x548890,_0x274b81,_0x260e7b,_0x6857fe,_0x260e7b[_0xd3da('0x6a')],_0x10df78);})[_0xd3da('0x27')](function(_0x345b59){_0x3ce6a2=_0x345b59;logger[_0xd3da('0x2a')]('['+_0x6857fe[_0xd3da('0x7e')][_0xd3da('0x7f')]()+_0xd3da('0x80'),_0x3ce6a2['id']);logger[_0xd3da('0x2a')]('['+_0x6857fe[_0xd3da('0x7e')][_0xd3da('0x7f')]()+']\x20Integration\x20account\x20type\x20%s.',_0x4e1448[_0xd3da('0x40')]);})[_0xd3da('0x72')](function(_0x472f28){logger[_0xd3da('0x71')]('['+_0x6857fe[_0xd3da('0x7e')]['toUpperCase']()+']',_0x472f28);});};
\ No newline at end of file
+var _0x96c7=['clientSecret','login','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','integrationTab','user:%s','trigger:salesforce:display','trigger:browser:url','%s/%s/e','instanceUrl','error','none','[OUTBOUND]','outbound','[OUTBOUND]\x20Ticket\x20%s\x20created.','newTab','Salesforce\x20account\x20type\x20not\x20recognized','catch','unmanaged','lastevent','toUpperCase',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','socket.io-emitter','emit','getString','Subjects','Descriptions','ticketType','Task','IsReminderSet','IsRecurrence','contact','endUserType','lead','WhoId','account','WhatId','ContactId','leadId','info','sobject','create','isNil','User','find','then','length','Agent\x20%s\x20found.','resolve','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','user_id','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','Contact','execute','additionalSearchLead','account_contact_lead','additionalSearchAccount','Account','Lead','Name','Phone','attributes','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','<unknown>','format','Caller\x20-\x20%s','LastName','Company','No\x20Company','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','upperFirst','includes','string','idField','content','toString','type','variable','variableName','Variable','name','toLowerCase','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId'];(function(_0xda6ad1,_0x5f09e3){var _0xedc3a5=function(_0x5459d7){while(--_0x5459d7){_0xda6ad1['push'](_0xda6ad1['shift']());}};_0xedc3a5(++_0x5f09e3);}(_0x96c7,0x10e));var _0x796c=function(_0x15418e,_0x475184){_0x15418e=_0x15418e-0x0;var _0x1b1d42=_0x96c7[_0x15418e];return _0x1b1d42;};'use strict';var _=require(_0x796c('0x0'));var rp=require(_0x796c('0x1'));var moment=require('moment');var BPromise=require(_0x796c('0x2'));var md5=require('md5');var jsforce=require('jsforce');var util=require(_0x796c('0x3'));var Redis=require(_0x796c('0x4'));var intUtil=require(_0x796c('0x5'));var config=require(_0x796c('0x6'));var logger=require(_0x796c('0x7'))(_0x796c('0x8'));config[_0x796c('0x9')]=_[_0x796c('0xa')](config[_0x796c('0x9')],{'host':_0x796c('0xb'),'port':0x18eb});var io=require(_0x796c('0xc'))(new Redis(config[_0x796c('0x9')]));function emit(_0x4d3aad,_0x4966f1,_0x31238d){io['to'](_0x4d3aad)[_0x796c('0xd')](_0x4966f1,_0x31238d);}function getTicket(_0x48d0ad,_0x580310,_0xdacd9c,_0x42fe71,_0x225536,_0x25a6d0,_0x45ec23,_0x506670){var _0xd21233=Object['assign']({},{'OwnerId':_0x580310['id'],'Subject':intUtil[_0x796c('0xe')](_0x42fe71[_0x796c('0xf')],_0x225536,'\x20'),'Description':intUtil[_0x796c('0xe')](_0x42fe71[_0x796c('0x10')],_0x225536,'\x0a')},getCustomFields(_0x25a6d0,_0x225536));if(_0xdacd9c){if(_0x42fe71[_0x796c('0x11')]===_0x796c('0x12')){_0xd21233['ActivityDate']=moment['utc']();_0xd21233[_0x796c('0x13')]=![];_0xd21233[_0x796c('0x14')]=![];if(_0xdacd9c['endUserType']===_0x796c('0x15')||_0xdacd9c[_0x796c('0x16')]===_0x796c('0x17')){_0xd21233[_0x796c('0x18')]=_0xdacd9c['id'];}else if(_0xdacd9c[_0x796c('0x16')]===_0x796c('0x19')){_0xd21233[_0x796c('0x1a')]=_0xdacd9c['id'];}}else if(_0x42fe71[_0x796c('0x11')]==='Case'){if(_0xdacd9c[_0x796c('0x16')]===_0x796c('0x15')){_0xd21233[_0x796c('0x1b')]=_0xdacd9c['id'];}else if(_0xdacd9c[_0x796c('0x16')]===_0x796c('0x19')){_0xd21233['AccountId']=_0xdacd9c['id'];}else if(_0xdacd9c[_0x796c('0x16')]===_0x796c('0x17')&&_0x42fe71[_0x796c('0x1c')]){_0xd21233[_0x42fe71[_0x796c('0x1c')]]=_0xdacd9c['id'];}else{logger[_0x796c('0x1d')]('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x45ec23[_0x796c('0x1e')](_0x42fe71[_0x796c('0x11')])[_0x796c('0x1f')](_0xd21233);}function getUser(_0x159269,_0x98884,_0xaadd50){if(!_[_0x796c('0x20')](_0x98884)&&intUtil['validateEmail'](_0x98884)){var _0x95cff5={'Email':_0x98884};var _0x5fcd38={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0xaadd50[_0x796c('0x1e')](_0x796c('0x21'))[_0x796c('0x22')](_0x95cff5,_0x5fcd38)['execute']()[_0x796c('0x23')](function(_0x59704a){if(_0x59704a[_0x796c('0x24')]){var _0x5c0966=_['find'](_0x59704a,function(_0x5be2ef){return _0x5be2ef['Email']===_0x98884;});if(_0x5c0966){logger[_0x796c('0x1d')](_0x796c('0x25'),_0x98884);return BPromise[_0x796c('0x26')]({'id':_0x5c0966['Id'],'name':_0x5c0966['Name']});}}else{logger[_0x796c('0x1d')](_0x796c('0x27'),_0x98884);return _0xaadd50['identity']()[_0x796c('0x23')](function(_0x4a4eed){return BPromise[_0x796c('0x26')]({'id':_0x4a4eed[_0x796c('0x28')],'name':_0x4a4eed['display_name']});});}});}else{logger['info'](_0x796c('0x27'),_0x98884);return _0xaadd50['identity']()['then'](function(_0x22b055){return BPromise[_0x796c('0x26')]({'id':_0x22b055[_0x796c('0x28')],'name':_0x22b055['display_name']});});}}function getEndUser(_0x2a921d,_0x23f688,_0x21354b,_0x4b6e51,_0x495a79){var _0x2dee30={'$or':{'Phone':_0x4b6e51}};var _0x1e64df={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x796c('0x26')]()[_0x796c('0x23')](function(){logger[_0x796c('0x1d')](_0x796c('0x29'),_0x4b6e51,_0x23f688[_0x796c('0x2a')]);switch(_0x23f688[_0x796c('0x2a')]){case _0x796c('0x2b'):var _0x5ae105=_[_0x796c('0x2c')](_0x2dee30);if(_0x23f688[_0x796c('0x2d')]){var _0x5a5b39={};_0x5a5b39[_0x23f688['additionalSearchContact']]=_0x4b6e51;_[_0x796c('0x2e')](_0x5ae105[_0x796c('0x2f')],_0x5a5b39);}return _0x495a79[_0x796c('0x1e')](_0x796c('0x30'))[_0x796c('0x22')](_0x5ae105,_0x1e64df)[_0x796c('0x31')]()[_0x796c('0x23')](function(_0x45752e){if(_0x45752e&&_0x45752e[_0x796c('0x24')]){return _0x45752e;}else{var _0x263eba=_[_0x796c('0x2c')](_0x2dee30);if(_0x23f688[_0x796c('0x32')]){var _0x546e83={};_0x546e83[_0x23f688[_0x796c('0x32')]]=_0x4b6e51;_[_0x796c('0x2e')](_0x263eba[_0x796c('0x2f')],_0x546e83);}return _0x495a79[_0x796c('0x1e')]('Lead')[_0x796c('0x22')](_0x263eba,_0x1e64df);}});case _0x796c('0x33'):var _0x33644d=_[_0x796c('0x2c')](_0x2dee30);if(_0x23f688[_0x796c('0x34')]){var _0x5a5b39={};_0x5a5b39[_0x23f688[_0x796c('0x34')]]=_0x4b6e51;_[_0x796c('0x2e')](_0x33644d['$or'],_0x5a5b39);}return _0x495a79['sobject'](_0x796c('0x35'))[_0x796c('0x22')](_0x33644d,_0x1e64df)[_0x796c('0x31')]()[_0x796c('0x23')](function(_0x2a5326){if(_0x2a5326&&_0x2a5326[_0x796c('0x24')]){return _0x2a5326;}else{var _0x343be8=_['cloneDeep'](_0x2dee30);if(_0x23f688[_0x796c('0x2d')]){var _0x26b534={};_0x26b534[_0x23f688[_0x796c('0x2d')]]=_0x4b6e51;_['merge'](_0x343be8[_0x796c('0x2f')],_0x26b534);}return _0x495a79['sobject'](_0x796c('0x30'))[_0x796c('0x22')](_0x343be8,_0x1e64df)['then'](function(_0xdf6048){if(_0xdf6048&&_0xdf6048['length']){return _0xdf6048;}else{var _0x510c2a=_[_0x796c('0x2c')](_0x2dee30);if(_0x23f688['additionalSearchLead']){var _0x319d85={};_0x319d85[_0x23f688[_0x796c('0x32')]]=_0x4b6e51;_['merge'](_0x510c2a[_0x796c('0x2f')],_0x319d85);}return _0x495a79['sobject'](_0x796c('0x36'))['find'](_0x510c2a,_0x1e64df);}});}});case'contact':var _0x5ae105=_['cloneDeep'](_0x2dee30);if(_0x23f688[_0x796c('0x2d')]){var _0x5a5b39={};_0x5a5b39[_0x23f688['additionalSearchContact']]=_0x4b6e51;_[_0x796c('0x2e')](_0x5ae105[_0x796c('0x2f')],_0x5a5b39);}return _0x495a79[_0x796c('0x1e')](_0x796c('0x30'))[_0x796c('0x22')](_0x5ae105,_0x1e64df)[_0x796c('0x31')]();case'lead':var _0x10d071=_[_0x796c('0x2c')](_0x2dee30);if(_0x23f688[_0x796c('0x32')]){var _0x5a5b39={};_0x5a5b39[_0x23f688[_0x796c('0x32')]]=_0x4b6e51;_[_0x796c('0x2e')](_0x10d071[_0x796c('0x2f')],_0x5a5b39);}return _0x495a79[_0x796c('0x1e')](_0x796c('0x36'))[_0x796c('0x22')](_0x10d071,_0x1e64df);case _0x796c('0x19'):var _0x33644d=_[_0x796c('0x2c')](_0x2dee30);if(_0x23f688[_0x796c('0x34')]){var _0x5a5b39={};_0x5a5b39[_0x23f688['additionalSearchAccount']]=_0x4b6e51;_[_0x796c('0x2e')](_0x33644d[_0x796c('0x2f')],_0x5a5b39);}return _0x495a79[_0x796c('0x1e')]('Account')['find'](_0x33644d,_0x1e64df);default:return null;}})[_0x796c('0x23')](function(_0x5a8183){if(_0x5a8183&&_0x5a8183[_0x796c('0x24')]){var _0x220da8=_['first'](_0x5a8183);if(_0x220da8){return BPromise[_0x796c('0x26')]({'id':_0x220da8['Id'],'name':_0x220da8[_0x796c('0x37')],'phone':_0x220da8[_0x796c('0x38')],'endUserType':_0x220da8[_0x796c('0x39')]['type']['toLowerCase']()});}}})['then'](function(_0x373032){if(_0x373032){logger[_0x796c('0x1d')]('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x373032[_0x796c('0x16')],_0x4b6e51);return BPromise[_0x796c('0x26')](_0x373032);}else{logger['info'](_0x796c('0x3a'),_0x4b6e51);var _0x533ba6={'Phone':_0x4b6e51};if(_0x23f688[_0x796c('0x3b')]){if(_0x23f688[_0x796c('0x3b')]===_0x796c('0x15')){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x4b6e51,_0x23f688[_0x796c('0x3b')]);_0x533ba6['LastName']=_0x21354b!==_0x796c('0x3c')?_0x21354b:util[_0x796c('0x3d')](_0x796c('0x3e'),_0x4b6e51);}else if(_0x23f688[_0x796c('0x3b')]===_0x796c('0x17')){logger[_0x796c('0x1d')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x4b6e51,_0x23f688[_0x796c('0x3b')]);_0x533ba6[_0x796c('0x3f')]=_0x21354b!==_0x796c('0x3c')?_0x21354b:util['format'](_0x796c('0x3e'),_0x4b6e51);_0x533ba6[_0x796c('0x40')]=_0x796c('0x41');}else if(_0x23f688[_0x796c('0x3b')]===_0x796c('0x19')){logger[_0x796c('0x1d')](_0x796c('0x42'),_0x4b6e51,_0x23f688[_0x796c('0x3b')]);_0x533ba6[_0x796c('0x37')]=_0x21354b!=='<unknown>'?_0x21354b:util[_0x796c('0x3d')](_0x796c('0x3e'),_0x4b6e51);}else{return null;}}return _0x495a79[_0x796c('0x1e')](_[_0x796c('0x43')](_0x23f688[_0x796c('0x3b')]))['create'](_0x533ba6)[_0x796c('0x23')](function(_0xa10756){return BPromise[_0x796c('0x26')]({'id':_0xa10756['id'],'endUserType':_0x23f688[_0x796c('0x3b')]});});}});}function getCustomFields(_0x458ea8,_0x835522){var _0x38b78b={};if(_0x458ea8[_0x796c('0x24')]>0x0){_['forEach'](_0x458ea8,function(_0xb2d024){if(_[_0x796c('0x44')]([_0x796c('0x45'),'picklist'],_0xb2d024['type'])&&_0xb2d024[_0x796c('0x46')]){_0x38b78b[_0xb2d024[_0x796c('0x46')]]=_0xb2d024[_0x796c('0x47')][_0x796c('0x48')]();}else if(_0xb2d024[_0x796c('0x49')]===_0x796c('0x4a')&&_0xb2d024[_0x796c('0x4b')]&&_0xb2d024[_0x796c('0x46')]){_0x835522[_0xb2d024[_0x796c('0x4b')]]&&(_0x38b78b[_0xb2d024['idField']]=_0x835522[_0xb2d024[_0x796c('0x4b')]][_0x796c('0x48')]());}else if(_0xb2d024[_0x796c('0x49')]==='customVariable'&&_0xb2d024[_0x796c('0x4c')]&&_0xb2d024[_0x796c('0x4c')][_0x796c('0x4d')]&&_0xb2d024['idField']){_0x835522[_0xb2d024['Variable'][_0x796c('0x4d')][_0x796c('0x4e')]()]&&(_0x38b78b[_0xb2d024[_0x796c('0x46')]]=_0x835522[_0xb2d024[_0x796c('0x4c')][_0x796c('0x4d')][_0x796c('0x4e')]()]['toString']());}});}return _0x38b78b;}function getConnection(_0x58c355){var _0x4bac3e=_0x58c355['password']['concat'](_0x58c355[_0x796c('0x4f')]);var _0x10b92e=new jsforce[(_0x796c('0x50'))]({'oauth2':{'loginUrl':_0x58c355[_0x796c('0x51')]||_0x796c('0x52'),'clientId':_0x58c355[_0x796c('0x53')],'clientSecret':_0x58c355[_0x796c('0x54')]}});return _0x10b92e[_0x796c('0x55')](_0x58c355['username'],_0x4bac3e)['then'](function(){logger[_0x796c('0x1d')]('Connection\x20established.');return _0x10b92e;});}exports[_0x796c('0x56')]=function(_0x48eacf,_0x5f4325,_0x462efc,_0x160bf9,_0x5071cf,_0x4dfd40){var _0x4abe1d,_0x2772ae,_0x4adce1,_0x304d34;_0x4dfd40[_0x796c('0x57')]=intUtil[_0x796c('0x58')](_0x4dfd40[_0x796c('0x57')]);_0x4dfd40[_0x796c('0x51')]=intUtil[_0x796c('0x58')](_0x4dfd40[_0x796c('0x51')]);if(_0x5071cf&&_0x5071cf[_0x796c('0x59')]){logger[_0x796c('0x1d')](_0x796c('0x5a'),_0x796c('0x5b'));_0x5f4325[_0x796c('0x5c')]=util['format'](_0x796c('0x5d'),_0x4dfd40[_0x796c('0x57')],_0x5f4325[_0x796c('0x5e')],md5(_0x5f4325[_0x796c('0x5e')]));}else{_0x5f4325[_0x796c('0x5c')]='';}return getConnection(_0x4dfd40)[_0x796c('0x23')](function(_0x3cb7a0){_0x304d34=_0x3cb7a0;return getUser(_0x4dfd40,_0x160bf9[_0x796c('0x5f')],_0x304d34);})[_0x796c('0x23')](function(_0x16b3db){_0x4abe1d=_0x16b3db;return getEndUser(_0x4dfd40,_0x462efc,_0x5f4325[_0x796c('0x60')],_0x5f4325[_0x796c('0x61')],_0x304d34);})[_0x796c('0x23')](function(_0x2f2200){_0x2772ae=_0x2f2200;return getTicket(_0x4dfd40,_0x4abe1d,_0x2772ae,_0x462efc,_0x5f4325,_0x462efc[_0x796c('0x62')],_0x304d34,_0x796c('0x56'));})[_0x796c('0x23')](function(_0x476cc1){_0x4adce1=_0x476cc1;logger['info'](_0x796c('0x63'),_0x4adce1['id']);logger['info']('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x4adce1['id'],_0x160bf9[_0x796c('0x4d')],_0x4dfd40[_0x796c('0x49')]);switch(_0x4dfd40[_0x796c('0x49')]){case _0x796c('0x64'):emit(util[_0x796c('0x3d')](_0x796c('0x65'),_0x160bf9['name']),_0x796c('0x66'),{'recordId':_0x4adce1['id']});break;case'newTab':emit(util[_0x796c('0x3d')](_0x796c('0x65'),_0x160bf9[_0x796c('0x4d')]),_0x796c('0x67'),{'uri':util[_0x796c('0x3d')](_0x796c('0x68'),_0x304d34[_0x796c('0x69')],_0x4adce1['id'])});break;default:logger[_0x796c('0x6a')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})['catch'](function(_0x334bc9){logger[_0x796c('0x6a')](_0x796c('0x5a'),_0x334bc9);});};exports['outbound']=function(_0x4cdc80,_0x4a846e,_0x75a362,_0x30f1c9,_0x36431a,_0x424d97,_0x36612b){var _0x5e1b07,_0x575dff,_0x60d621,_0x2d9f16;_0x424d97[_0x796c('0x57')]=intUtil[_0x796c('0x58')](_0x424d97[_0x796c('0x57')]);_0x424d97['remoteUri']=intUtil[_0x796c('0x58')](_0x424d97[_0x796c('0x51')]);if(_0x36612b&&_0x36612b['recordingFormat']&&_0x36612b['recordingFormat']!==_0x796c('0x6b')){logger[_0x796c('0x1d')](_0x796c('0x6c'),_0x796c('0x5b'));_0x4a846e['recordingURL']=util[_0x796c('0x3d')](_0x796c('0x5d'),_0x424d97[_0x796c('0x57')],_0x4a846e[_0x796c('0x5e')],md5(_0x4a846e[_0x796c('0x5e')]));}return getConnection(_0x424d97)['then'](function(_0x469751){_0x2d9f16=_0x469751;return getUser(_0x424d97,_0x30f1c9[_0x796c('0x5f')],_0x2d9f16);})[_0x796c('0x23')](function(_0x337797){_0x5e1b07=_0x337797;return getEndUser(_0x424d97,_0x75a362,_0x4a846e['destcalleridname'],_0x4a846e['destcalleridnum'],_0x2d9f16);})[_0x796c('0x23')](function(_0x18c97d){_0x575dff=_0x18c97d;return getTicket(_0x424d97,_0x5e1b07,_0x575dff,_0x75a362,_0x4a846e,_0x75a362[_0x796c('0x62')],_0x2d9f16,_0x796c('0x6d'));})['then'](function(_0x10d0aa){_0x60d621=_0x10d0aa;logger['info'](_0x796c('0x6e'),_0x60d621['id']);logger[_0x796c('0x1d')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x60d621['id'],_0x30f1c9[_0x796c('0x4d')],_0x424d97['type']);switch(_0x424d97[_0x796c('0x49')]){case _0x796c('0x64'):emit(util['format'](_0x796c('0x65'),_0x30f1c9[_0x796c('0x4d')]),_0x796c('0x66'),{'recordId':_0x60d621['id']});break;case _0x796c('0x6f'):emit(util[_0x796c('0x3d')](_0x796c('0x65'),_0x30f1c9[_0x796c('0x4d')]),'trigger:browser:url',{'uri':util[_0x796c('0x3d')](_0x796c('0x68'),_0x2d9f16[_0x796c('0x69')],_0x60d621['id'])});break;default:logger[_0x796c('0x6a')](_0x796c('0x6c'),_0x796c('0x70'));}})[_0x796c('0x71')](function(_0x5471e5){logger[_0x796c('0x6a')](_0x796c('0x6c'),_0x5471e5);});};exports[_0x796c('0x72')]=function(_0x43e562,_0xf8ee88,_0x3f5930,_0x2defb8,_0x59aaff,_0x51e16d){var _0x38ba3c,_0x12404c,_0x1c3069,_0x4d73a4;_0x51e16d['serverUrl']=intUtil[_0x796c('0x58')](_0x51e16d[_0x796c('0x57')]);_0x51e16d[_0x796c('0x51')]=intUtil['stripTrailingSlash'](_0x51e16d[_0x796c('0x51')]);if(_0x59aaff&&_0x59aaff['monitor_format']){logger['info']('['+_0xf8ee88[_0x796c('0x73')][_0x796c('0x74')]()+']','Recording\x20is\x20enabled!');_0xf8ee88[_0x796c('0x5c')]=util[_0x796c('0x3d')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x51e16d['serverUrl'],_0xf8ee88[_0x796c('0x5e')],md5(_0xf8ee88['uniqueid']));}else{_0xf8ee88[_0x796c('0x5c')]='';}return getConnection(_0x51e16d)['then'](function(_0x2db564){_0x4d73a4=_0x2db564;if(!_[_0x796c('0x20')](_0x2defb8)){return getUser(_0x51e16d,_0x2defb8['name'],_0x4d73a4);}else{return getUser(_0x51e16d,null,_0x4d73a4);}})[_0x796c('0x23')](function(_0x4e3a49){_0x38ba3c=_0x4e3a49;return getEndUser(_0x51e16d,_0x3f5930,_0xf8ee88[_0x796c('0x60')],_0xf8ee88[_0x796c('0x61')],_0x4d73a4);})[_0x796c('0x23')](function(_0x3b55db){_0x12404c=_0x3b55db;return getTicket(_0x51e16d,_0x38ba3c,_0x12404c,_0x3f5930,_0xf8ee88,_0x3f5930[_0x796c('0x62')],_0x4d73a4);})[_0x796c('0x23')](function(_0x23846f){_0x1c3069=_0x23846f;logger[_0x796c('0x1d')]('['+_0xf8ee88[_0x796c('0x73')]['toUpperCase']()+']\x20Ticket\x20%s\x20created.',_0x1c3069['id']);logger[_0x796c('0x1d')]('['+_0xf8ee88[_0x796c('0x73')]['toUpperCase']()+_0x796c('0x75'),_0x51e16d['type']);})[_0x796c('0x71')](function(_0x26ff6e){logger[_0x796c('0x6a')]('['+_0xf8ee88[_0x796c('0x73')]['toUpperCase']()+']',_0x26ff6e);});};
\ No newline at end of file
index fcc31c3..49ab982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed9a=['push','all','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','trigger:browser:url','username','sysparm_limit=1','sysparm_display_value=true','remoteUri','serverUrl','stripTrailingSlash','%s/api/now/table/','isNil','email','destcalleridnum','callDirection','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','lodash','bluebird','request-promise','util','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','info','toUpperCase','],\x20getAdminUser\x20crm','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','active','userId','sys_id','adminEmail','catch',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','sys_user?','user','endUserNumber','System','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','endUserId','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','toString','idField','content','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','POST','incident','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry'];(function(_0x3acb1f,_0x11b3ae){var _0xa162df=function(_0x424a49){while(--_0x424a49){_0x3acb1f['push'](_0x3acb1f['shift']());}};_0xa162df(++_0x11b3ae);}(_0xed9a,0x105));var _0xaed9=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xed9a[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0xaed9('0x0'));var Promise=require(_0xaed9('0x1'));var rp=require(_0xaed9('0x2'));var util=require(_0xaed9('0x3'));var md5=require(_0xaed9('0x4'));var Redis=require(_0xaed9('0x5'));var intUtil=require(_0xaed9('0x6'));var config=require(_0xaed9('0x7'));var logger=require(_0xaed9('0x8'))(_0xaed9('0x9'));config[_0xaed9('0xa')]=_[_0xaed9('0xb')](config[_0xaed9('0xa')],{'host':_0xaed9('0xc'),'port':0x18eb});var io=require(_0xaed9('0xd'))(new Redis(config[_0xaed9('0xa')]));function getAdminUser(_0x2213fe,_0x19d8c9,_0x40a1fa,_0x640be9,_0x3f39af,_0x12319e){return new Promise(function(_0x24266c,_0x59b3a5){var _0x388a56={'method':_0xaed9('0xe'),'uri':_0x640be9+_0xaed9('0xf')+'&'+_0x3f39af+'&'+_0x12319e,'auth':_0x19d8c9,'json':!![]};return rp(_0x388a56)[_0xaed9('0x10')](function(_0x5b3856){if(_0x5b3856[_0xaed9('0x11')][_0xaed9('0x12')]>0x0){_0x40a1fa[_0xaed9('0x13')]=_0x5b3856[_0xaed9('0x11')][0x0]['sys_id'];}logger[_0xaed9('0x14')]('['+[_0x2213fe[_0xaed9('0x15')]()]+_0xaed9('0x16'),_0x40a1fa);_0x24266c(_0x40a1fa);})['catch'](function(_0x5e4d38){logger[_0xaed9('0x17')]('['+[_0x2213fe[_0xaed9('0x15')]()]+']',_0x5e4d38[_0xaed9('0x18')]);_0x59b3a5(_0x5e4d38[_0xaed9('0x18')]);});});}function getUser(_0x265a66,_0x107d53,_0x11e1b9,_0xa0461c,_0x1fc984){return function(_0x482d46){logger[_0xaed9('0x14')]('['+[_0x265a66['toUpperCase']()]+_0xaed9('0x19'),_0x482d46);return new Promise(function(_0x2c31c9,_0x57b105){if(intUtil[_0xaed9('0x1a')](_0x482d46[_0xaed9('0x1b')])){var _0x3303fa={'method':_0xaed9('0xe'),'uri':_0x11e1b9+_0xaed9('0x1c')+_0x482d46[_0xaed9('0x1b')]+'&'+_0xa0461c+'&'+_0x1fc984,'auth':_0x107d53,'json':!![]};logger['info']('['+[_0x265a66[_0xaed9('0x15')]()]+_0xaed9('0x1d'),_0x3303fa);return rp(_0x3303fa)['then'](function(_0x371220){logger[_0xaed9('0x14')]('['+[_0x265a66[_0xaed9('0x15')]()]+'],\x20getUser\x20entity',_0x371220);if(_0x371220['result'][_0xaed9('0x12')]>0x0&&String(_0x371220[_0xaed9('0x11')][0x0][_0xaed9('0x1e')])==='true'){_0x482d46[_0xaed9('0x1f')]=_0x371220[_0xaed9('0x11')][0x0][_0xaed9('0x20')];}else{_0x482d46[_0xaed9('0x1f')]=_0x482d46[_0xaed9('0x13')];_0x482d46[_0xaed9('0x1b')]=_0x482d46[_0xaed9('0x21')];}logger[_0xaed9('0x14')]('['+[_0x265a66[_0xaed9('0x15')]()]+'],\x20getUser\x20crm',_0x482d46);_0x2c31c9(_0x482d46);})[_0xaed9('0x22')](function(_0x89ea){logger['error']('['+[_0x265a66[_0xaed9('0x15')]()]+']',_0x89ea[_0xaed9('0x18')]);_0x57b105(_0x89ea['message']);});}else{logger[_0xaed9('0x14')]('['+[_0x265a66[_0xaed9('0x15')]()]+_0xaed9('0x23'));_0x482d46[_0xaed9('0x1f')]=_0x482d46[_0xaed9('0x13')];_0x482d46['userEmail']=_0x482d46[_0xaed9('0x21')];_0x2c31c9(_0x482d46);}});};}function createEndUser(_0x4d352d,_0x399e99,_0x427536,_0x3955d0,_0x8b7e04){logger['info']('['+[_0x4d352d[_0xaed9('0x15')]()]+_0xaed9('0x24'),_0x427536);return new Promise(function(_0x46e562,_0x46344d){var _0x1b6949={'method':'POST','uri':_0x3955d0+_0xaed9('0x25')+_0x8b7e04,'body':{'user_name':_0x427536['endUserNumber'],'roles':_0xaed9('0x26'),'first_name':_0x427536[_0xaed9('0x27')],'active':'true','date_format':_0xaed9('0x28'),'phone':_0x427536[_0xaed9('0x27')]},'auth':_0x399e99,'json':!![]};return rp(_0x1b6949)[_0xaed9('0x10')](function(_0x578dba){logger[_0xaed9('0x14')]('['+[_0x4d352d[_0xaed9('0x15')]()]+'],\x20EndUser\x20schema',_0x578dba['result']);_0x427536['endUserId']=_0x578dba[_0xaed9('0x11')]['sys_id'];_0x46e562(_0x427536);})[_0xaed9('0x22')](function(_0x51c49d){logger['error']('['+[_0x4d352d[_0xaed9('0x15')]()]+']',_0x51c49d[_0xaed9('0x18')]);_0x46344d(_0x51c49d[_0xaed9('0x18')]);});});}function getEndUser(_0x295717,_0x541ce8,_0x46972b,_0x5a1d43,_0x12f056){return function(_0x11025c){logger['info']('['+[_0x295717[_0xaed9('0x15')]()]+_0xaed9('0x29'),_0x11025c);return new Promise(function(_0x28ea3e,_0x38c2eb){var _0xc8930a={'method':_0xaed9('0xe'),'uri':_0x46972b+_0xaed9('0x2a')+_0x11025c['endUserNumber']+'&'+_0x5a1d43+'&'+_0x12f056,'auth':_0x541ce8,'json':!![]};return rp(_0xc8930a)['then'](function(_0x36fd63){if(_0x36fd63[_0xaed9('0x11')][_0xaed9('0x12')]>0x0){_0x11025c[_0xaed9('0x2b')]=_0x36fd63['result'][0x0][_0xaed9('0x20')];logger[_0xaed9('0x14')]('['+[_0x295717['toUpperCase']()]+_0xaed9('0x2c'),_0x11025c);_0x28ea3e(_0x11025c);}else{return createEndUser(_0x295717,_0x541ce8,_0x11025c,_0x46972b,_0x5a1d43)[_0xaed9('0x10')](function(_0x254d49){logger[_0xaed9('0x14')]('['+[_0x295717[_0xaed9('0x15')]()]+_0xaed9('0x2d'),_0x254d49);_0x28ea3e(_0x254d49);});}})['catch'](function(_0x37bd2e){logger[_0xaed9('0x17')]('['+[_0x295717[_0xaed9('0x15')]()]+']',_0x37bd2e[_0xaed9('0x18')]);_0x38c2eb(_0x37bd2e[_0xaed9('0x18')]);});});};}function getCustomFields(_0x4de759,_0x208fca){var _0x11f4b3={};if(_0x4de759[_0xaed9('0x12')]>0x0){_[_0xaed9('0x2e')](_0x4de759,function(_0x35fbfc){if(_[_0xaed9('0x2f')]([_0xaed9('0x30'),_0xaed9('0x31')],_0x35fbfc[_0xaed9('0x32')])&&_0x35fbfc[_0xaed9('0x33')]&&!_0x35fbfc[_0xaed9('0x34')]){_0x11f4b3[_0x35fbfc[_0xaed9('0x33')][_0xaed9('0x35')]()]=_0x35fbfc['content'][_0xaed9('0x36')]();}else if(_[_0xaed9('0x2f')]([_0xaed9('0x30'),_0xaed9('0x31')],_0x35fbfc[_0xaed9('0x32')])&&_0x35fbfc[_0xaed9('0x37')]&&_0x35fbfc[_0xaed9('0x34')]){_0x11f4b3[_0x35fbfc[_0xaed9('0x37')][_0xaed9('0x35')]()]=_0x35fbfc[_0xaed9('0x38')][_0xaed9('0x36')]();}else if(_0x35fbfc[_0xaed9('0x32')]===_0xaed9('0x39')&&_0x35fbfc[_0xaed9('0x3a')]&&_0x35fbfc[_0xaed9('0x37')]&&_0x35fbfc['customField']){_0x11f4b3[_0x35fbfc[_0xaed9('0x37')][_0xaed9('0x35')]()]=_0x208fca[_0x35fbfc[_0xaed9('0x3a')]]['toString']();}else if(_0x35fbfc[_0xaed9('0x32')]===_0xaed9('0x3b')&&_0x35fbfc[_0xaed9('0x3c')]&&_0x35fbfc[_0xaed9('0x3c')][_0xaed9('0x3d')]&&_0x35fbfc[_0xaed9('0x37')]&&_0x35fbfc['customField']){_0x11f4b3[_0x35fbfc['idField'][_0xaed9('0x35')]()]=_0x208fca[_0x35fbfc['Variable'][_0xaed9('0x3d')]['toLowerCase']()][_0xaed9('0x36')]();}});}return _0x11f4b3;}function getTicket(_0x2f7222,_0x3f0c4d,_0x1bca48,_0x4ae574,_0x5e8107,_0x1bedc0){return function(_0x166925){logger[_0xaed9('0x14')]('['+[_0x2f7222['toUpperCase']()]+_0xaed9('0x3e'),_0x166925);return new Promise(function(_0x43bcb2,_0x57f949){var _0x2291f4=_0x2f7222['toLowerCase']()===_0xaed9('0x3f')?_0x166925[_0xaed9('0x1f')]:_0x166925[_0xaed9('0x2b')];var _0x3a6087={'method':_0xaed9('0x40'),'uri':_0x1bca48+_0xaed9('0x41')+'?'+_0x1bedc0,'body':Object['assign']({},{'active':'true','caller_id':_0x2291f4,'assigned_to':_0x166925[_0xaed9('0x1f')],'short_description':intUtil[_0xaed9('0x42')](_0x4ae574[_0xaed9('0x43')],_0x5e8107,'\x20'),'description':intUtil[_0xaed9('0x42')](_0x4ae574[_0xaed9('0x44')],_0x5e8107,'\x0a')},getCustomFields(_0x4ae574[_0xaed9('0x45')],_0x5e8107)),'auth':_0x3f0c4d,'json':!![]};return rp(_0x3a6087)[_0xaed9('0x10')](function(_0x158034){logger[_0xaed9('0x14')]('['+[_0x2f7222['toUpperCase']()]+_0xaed9('0x46'),_0x158034[_0xaed9('0x11')]);_0x166925[_0xaed9('0x47')]=_0x158034[_0xaed9('0x11')][_0xaed9('0x20')];_0x166925[_0xaed9('0x48')]=_0x158034[_0xaed9('0x11')][_0xaed9('0x49')];logger[_0xaed9('0x14')]('['+[_0x2f7222[_0xaed9('0x15')]()]+_0xaed9('0x4a'),_0x166925);_0x43bcb2(_0x166925);})['catch'](function(_0x558b8e){logger[_0xaed9('0x17')]('['+[_0x2f7222[_0xaed9('0x15')]()]+']',_0x558b8e['message']);_0x57f949(_0x558b8e['message']);});});};}function createRemoteTag(_0x26267b,_0xd16c5e,_0x34e884,_0x1c85c2){return new Promise(function(_0x69236d,_0xd3f124){var _0x4bab46={'method':_0xaed9('0x40'),'uri':_0x34e884+_0xaed9('0x4b')+'?'+_0x1c85c2,'body':{'short_description':_0x26267b,'global':!![],'active':!![],'name':_0x26267b},'auth':_0xd16c5e,'json':!![]};return rp(_0x4bab46)[_0xaed9('0x10')](function(_0x5cbb10){var _0x3d3d4f=_0x5cbb10[_0xaed9('0x11')][_0xaed9('0x20')];_0x69236d(_0x3d3d4f);});});}function getRemoteTag(_0xa0690b,_0x2e2148,_0xbe1802,_0x483405,_0x2092fd){return new Promise(function(_0x5b1541,_0x453a5f){var _0x454202={'method':_0xaed9('0xe'),'uri':_0xbe1802+'label'+_0xaed9('0x4c')+_0xa0690b+'&'+_0x483405,'auth':_0x2e2148,'json':!![]};return rp(_0x454202)[_0xaed9('0x10')](function(_0x109916){if(_0x109916[_0xaed9('0x11')][_0xaed9('0x12')]>0x0){var _0x5350e2=_0x109916[_0xaed9('0x11')][0x0][_0xaed9('0x20')];_0x5b1541(_0x5350e2);}else{return createRemoteTag(_0xa0690b,_0x2e2148,_0xbe1802,_0x483405)[_0xaed9('0x10')](function(_0x23545d){_0x5b1541(_0x23545d);});}});});}function assignTagToIncident(_0x1a0ad3,_0x461d09,_0x48ad51,_0x30bdfa,_0x362bb3){return new Promise(function(_0x54e37b,_0x27a7ce){var _0x3941e0={'method':_0xaed9('0x40'),'uri':_0x48ad51+_0xaed9('0x4d')+'?'+_0x362bb3,'body':{'label':_0x1a0ad3,'table':_0xaed9('0x41'),'id_type':'Incident','table_key':_0x30bdfa['ticketId'],'title':'Incident\x20-\x20'+_0x30bdfa[_0xaed9('0x48')],'id_display':_0x30bdfa[_0xaed9('0x48')]},'auth':_0x461d09,'json':!![]};return rp(_0x3941e0)[_0xaed9('0x10')](function(_0x5d291e){_0x54e37b();})[_0xaed9('0x22')](function(){_0x54e37b();});});}function manageTags(_0x240aac,_0x349351,_0x439742,_0x56a745,_0x5c1091,_0x5131ea,_0x4b5abe){return new Promise(function(_0x592838,_0x3115eb){var _0xe88b85=[];_0x349351[_0xaed9('0x2e')](function(_0xb018b0){_0xe88b85[_0xaed9('0x4e')](getRemoteTag(_0xb018b0,_0x439742,_0x56a745,_0x5131ea,_0x4b5abe));});return Promise[_0xaed9('0x4f')](_0xe88b85)[_0xaed9('0x10')](function(_0x185ee4){if(_0x185ee4[_0xaed9('0x12')]){logger[_0xaed9('0x14')]('['+[_0x240aac[_0xaed9('0x15')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x185ee4);var _0x497062=[];_0x185ee4[_0xaed9('0x2e')](function(_0x53d3aa){_0x497062[_0xaed9('0x4e')](assignTagToIncident(_0x53d3aa,_0x439742,_0x56a745,_0x5c1091,_0x5131ea));});return Promise['all'](_0x497062)['then'](function(){_0x592838();})[_0xaed9('0x22')](function(){_0x592838();});}else{_0x592838();}});});}function getTags(_0x35ee99,_0x5e2526,_0x284456,_0x1588bb,_0x270f07,_0x2a1ed2){return function(_0x2288d7){return new Promise(function(_0x13880e,_0x522002){var _0x2c5beb=[];var _0x28156c=_0x1588bb['Tags'];if(_0x28156c&&_0x28156c[_0xaed9('0x12')]>0x0){_0x2c5beb=_[_0xaed9('0x50')](_0x28156c,'name');}if(_0x2c5beb[_0xaed9('0x12')]>0x0){return manageTags(_0x35ee99,_0x2c5beb,_0x5e2526,_0x284456,_0x2288d7,_0x270f07,_0x2a1ed2)[_0xaed9('0x10')](function(){_0x13880e(_0x2288d7);});}else{_0x13880e(_0x2288d7);}});};}function emit(_0x185806,_0x1bbfad,_0x2e407d){var _0x439731='%26sysparm_record_target%3Dincident'+_0xaed9('0x51')+_0xaed9('0x52')+_0xaed9('0x53');var _0x4ea919={'uri':_0x185806+_0xaed9('0x54')+_0x2e407d+_0x439731};io['to'](util[_0xaed9('0x55')](_0xaed9('0x56'),_0x1bbfad))[_0xaed9('0x57')](_0xaed9('0x58'),_0x4ea919);}exports['cs']=function(_0x2e0b30,_0x35009d,_0x222ac9,_0x2297e7,_0x3aa98d,_0x13590c,_0x293739,_0x4477a9){var _0x76d0dd={};var _0x4bb4c1={'user':_0x13590c[_0xaed9('0x59')],'pass':_0x13590c['password']};var _0x5f3eb2=_0xaed9('0x5a');var _0x1de023=_0xaed9('0x5b');_0x13590c[_0xaed9('0x5c')]=intUtil['stripTrailingSlash'](_0x13590c[_0xaed9('0x5c')]);_0x13590c[_0xaed9('0x5d')]=intUtil[_0xaed9('0x5e')](_0x13590c['serverUrl']);var _0x32d0e7=util[_0xaed9('0x55')](_0xaed9('0x5f'),_0x13590c[_0xaed9('0x5c')]);_0x76d0dd['userEmail']=!_[_0xaed9('0x60')](_0x2297e7)?_0x2297e7['email']:null;_0x76d0dd['adminEmail']=_0x13590c[_0xaed9('0x61')];_0x76d0dd['endUserNumber']=_0x4477a9[_0xaed9('0x35')]()===_0xaed9('0x3f')?_0x35009d[_0xaed9('0x62')]:_0x35009d['calleridnum'];_0x76d0dd[_0xaed9('0x63')]=_0x4477a9==='queue'||_0x4477a9===_0xaed9('0x64')?'queue':_0xaed9('0x3f');var _0x23e5c2=util['format'](_0xaed9('0x65'),_0x13590c[_0xaed9('0x5d')],_0x35009d['uniqueid'],md5(_0x35009d['uniqueid']));if(_0x3aa98d&&_0x3aa98d[_0xaed9('0x66')]){logger[_0xaed9('0x14')](_0xaed9('0x67'),_0xaed9('0x68'));_0x35009d[_0xaed9('0x69')]=_0x23e5c2;}else if(_0x293739&&_0x293739[_0xaed9('0x6a')]&&_0x293739[_0xaed9('0x6a')]!==_0xaed9('0x6b')){logger[_0xaed9('0x14')](_0xaed9('0x6c'),_0xaed9('0x68'));_0x35009d[_0xaed9('0x69')]=_0x23e5c2;}else{_0x35009d[_0xaed9('0x69')]='';}return getAdminUser(_0x4477a9,_0x4bb4c1,_0x76d0dd,_0x32d0e7,_0x1de023,_0x5f3eb2)[_0xaed9('0x10')](getUser(_0x4477a9,_0x4bb4c1,_0x32d0e7,_0x1de023,_0x5f3eb2))[_0xaed9('0x10')](getEndUser(_0x4477a9,_0x4bb4c1,_0x32d0e7,_0x1de023,_0x5f3eb2))['then'](getTicket(_0x4477a9,_0x4bb4c1,_0x32d0e7,_0x222ac9,_0x35009d,_0x1de023))['then'](function(_0x10afc9){logger[_0xaed9('0x14')](util['format'](_0xaed9('0x6d'),_0x10afc9[_0xaed9('0x47')]));logger[_0xaed9('0x14')](util[_0xaed9('0x55')](_0xaed9('0x6e'),_0x4477a9));if(_0x4477a9!==_0xaed9('0x64')){logger[_0xaed9('0x14')]('['+[_0x4477a9[_0xaed9('0x15')]()]+']',_0xaed9('0x6f'));emit(_0x13590c[_0xaed9('0x5c')],_0x2297e7[_0xaed9('0x3d')],_0x10afc9[_0xaed9('0x47')]);}})[_0xaed9('0x22')](function(_0x5498b8){logger[_0xaed9('0x17')]('['+[_0x4477a9[_0xaed9('0x15')]()]+_0xaed9('0x70'),util['inspect'](_0x5498b8,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x486c=['%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','emit','trigger:browser:url','password','sysparm_limit=1','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','calleridnum','callDirection','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','none','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','then','result','length','adminId','sys_id','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','info','],\x20getUser\x20entity','true','userId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','sys_user?sysparm_query=phone%3D','],\x20createEndUser\x20crm','forEach','includes','string','picklist','nameField','customField','type','idField','toLowerCase','content','toString','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','POST','incident','getString','Subjects','Descriptions','Fields','ticketId','ticketNumber','number','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20','push','all','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'];(function(_0x2f0f59,_0x5296c2){var _0x513e6c=function(_0xd473a7){while(--_0xd473a7){_0x2f0f59['push'](_0x2f0f59['shift']());}};_0x513e6c(++_0x5296c2);}(_0x486c,0xfb));var _0xc486=function(_0x2191d2,_0x30b11a){_0x2191d2=_0x2191d2-0x0;var _0x3ae8c9=_0x486c[_0x2191d2];return _0x3ae8c9;};'use strict';var _=require(_0xc486('0x0'));var Promise=require(_0xc486('0x1'));var rp=require(_0xc486('0x2'));var util=require(_0xc486('0x3'));var md5=require('md5');var Redis=require(_0xc486('0x4'));var intUtil=require(_0xc486('0x5'));var config=require(_0xc486('0x6'));var logger=require(_0xc486('0x7'))(_0xc486('0x8'));config[_0xc486('0x9')]=_[_0xc486('0xa')](config['redis'],{'host':_0xc486('0xb'),'port':0x18eb});var io=require(_0xc486('0xc'))(new Redis(config[_0xc486('0x9')]));function getAdminUser(_0x525bc9,_0x4fd5f7,_0x4facd1,_0x16ea68,_0x4ddfaf,_0x99f1bf){return new Promise(function(_0x5dd65c,_0x2467bc){var _0x40cf32={'method':_0xc486('0xd'),'uri':_0x16ea68+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x4ddfaf+'&'+_0x99f1bf,'auth':_0x4fd5f7,'json':!![]};return rp(_0x40cf32)[_0xc486('0xe')](function(_0x4c3de5){if(_0x4c3de5[_0xc486('0xf')][_0xc486('0x10')]>0x0){_0x4facd1[_0xc486('0x11')]=_0x4c3de5['result'][0x0][_0xc486('0x12')];}logger['info']('['+[_0x525bc9[_0xc486('0x13')]()]+_0xc486('0x14'),_0x4facd1);_0x5dd65c(_0x4facd1);})[_0xc486('0x15')](function(_0x2943a7){logger[_0xc486('0x16')]('['+[_0x525bc9[_0xc486('0x13')]()]+']',_0x2943a7[_0xc486('0x17')]);_0x2467bc(_0x2943a7[_0xc486('0x17')]);});});}function getUser(_0x3566ee,_0x4427ce,_0x3bfb9e,_0x1c99ef,_0xbb43bf){return function(_0x319451){logger['info']('['+[_0x3566ee['toUpperCase']()]+_0xc486('0x18'),_0x319451);return new Promise(function(_0x291f97,_0x558942){if(intUtil[_0xc486('0x19')](_0x319451[_0xc486('0x1a')])){var _0x446444={'method':'GET','uri':_0x3bfb9e+_0xc486('0x1b')+_0x319451[_0xc486('0x1a')]+'&'+_0x1c99ef+'&'+_0xbb43bf,'auth':_0x4427ce,'json':!![]};logger[_0xc486('0x1c')]('['+[_0x3566ee['toUpperCase']()]+'],\x20getUser\x20rp\x20obj',_0x446444);return rp(_0x446444)['then'](function(_0x17045d){logger['info']('['+[_0x3566ee[_0xc486('0x13')]()]+_0xc486('0x1d'),_0x17045d);if(_0x17045d[_0xc486('0xf')][_0xc486('0x10')]>0x0&&String(_0x17045d[_0xc486('0xf')][0x0]['active'])===_0xc486('0x1e')){_0x319451[_0xc486('0x1f')]=_0x17045d[_0xc486('0xf')][0x0][_0xc486('0x12')];}else{_0x319451[_0xc486('0x1f')]=_0x319451[_0xc486('0x11')];_0x319451['userEmail']=_0x319451[_0xc486('0x20')];}logger[_0xc486('0x1c')]('['+[_0x3566ee[_0xc486('0x13')]()]+_0xc486('0x21'),_0x319451);_0x291f97(_0x319451);})[_0xc486('0x15')](function(_0x34f0cc){logger['error']('['+[_0x3566ee[_0xc486('0x13')]()]+']',_0x34f0cc[_0xc486('0x17')]);_0x558942(_0x34f0cc[_0xc486('0x17')]);});}else{logger[_0xc486('0x1c')]('['+[_0x3566ee[_0xc486('0x13')]()]+_0xc486('0x22'));_0x319451[_0xc486('0x1f')]=_0x319451[_0xc486('0x11')];_0x319451[_0xc486('0x1a')]=_0x319451[_0xc486('0x20')];_0x291f97(_0x319451);}});};}function createEndUser(_0x3fcc49,_0x21262d,_0x3b8920,_0x3b56e0,_0x507e47){logger['info']('['+[_0x3fcc49[_0xc486('0x13')]()]+_0xc486('0x23'),_0x3b8920);return new Promise(function(_0x4fe6b0,_0x2187fb){var _0x417f85={'method':'POST','uri':_0x3b56e0+_0xc486('0x24')+_0x507e47,'body':{'user_name':_0x3b8920[_0xc486('0x25')],'roles':_0xc486('0x26'),'first_name':_0x3b8920[_0xc486('0x25')],'active':_0xc486('0x1e'),'date_format':_0xc486('0x27'),'phone':_0x3b8920[_0xc486('0x25')]},'auth':_0x21262d,'json':!![]};return rp(_0x417f85)[_0xc486('0xe')](function(_0x42258c){logger[_0xc486('0x1c')]('['+[_0x3fcc49[_0xc486('0x13')]()]+_0xc486('0x28'),_0x42258c[_0xc486('0xf')]);_0x3b8920[_0xc486('0x29')]=_0x42258c['result'][_0xc486('0x12')];_0x4fe6b0(_0x3b8920);})[_0xc486('0x15')](function(_0x145538){logger['error']('['+[_0x3fcc49[_0xc486('0x13')]()]+']',_0x145538[_0xc486('0x17')]);_0x2187fb(_0x145538[_0xc486('0x17')]);});});}function getEndUser(_0x56118f,_0x5ebb0f,_0x560a65,_0x2e00dc,_0x59c38e){return function(_0x4b0788){logger['info']('['+[_0x56118f[_0xc486('0x13')]()]+'],\x20getEndUser\x20input\x20crm',_0x4b0788);return new Promise(function(_0x15db28,_0x10baef){var _0x56726d={'method':_0xc486('0xd'),'uri':_0x560a65+_0xc486('0x2a')+_0x4b0788['endUserNumber']+'&'+_0x2e00dc+'&'+_0x59c38e,'auth':_0x5ebb0f,'json':!![]};return rp(_0x56726d)[_0xc486('0xe')](function(_0x38590d){if(_0x38590d['result'][_0xc486('0x10')]>0x0){_0x4b0788[_0xc486('0x29')]=_0x38590d[_0xc486('0xf')][0x0][_0xc486('0x12')];logger[_0xc486('0x1c')]('['+[_0x56118f[_0xc486('0x13')]()]+'],\x20getEndUser\x20crm',_0x4b0788);_0x15db28(_0x4b0788);}else{return createEndUser(_0x56118f,_0x5ebb0f,_0x4b0788,_0x560a65,_0x2e00dc)[_0xc486('0xe')](function(_0x16ede4){logger[_0xc486('0x1c')]('['+[_0x56118f[_0xc486('0x13')]()]+_0xc486('0x2b'),_0x16ede4);_0x15db28(_0x16ede4);});}})[_0xc486('0x15')](function(_0x33510e){logger[_0xc486('0x16')]('['+[_0x56118f[_0xc486('0x13')]()]+']',_0x33510e[_0xc486('0x17')]);_0x10baef(_0x33510e['message']);});});};}function getCustomFields(_0x39c0ad,_0x3f1afd){var _0x51c7ec={};if(_0x39c0ad[_0xc486('0x10')]>0x0){_[_0xc486('0x2c')](_0x39c0ad,function(_0x2abe50){if(_[_0xc486('0x2d')]([_0xc486('0x2e'),_0xc486('0x2f')],_0x2abe50['type'])&&_0x2abe50[_0xc486('0x30')]&&!_0x2abe50[_0xc486('0x31')]){_0x51c7ec[_0x2abe50[_0xc486('0x30')]['toLowerCase']()]=_0x2abe50['content']['toString']();}else if(_[_0xc486('0x2d')](['string',_0xc486('0x2f')],_0x2abe50[_0xc486('0x32')])&&_0x2abe50[_0xc486('0x33')]&&_0x2abe50[_0xc486('0x31')]){_0x51c7ec[_0x2abe50['idField'][_0xc486('0x34')]()]=_0x2abe50[_0xc486('0x35')][_0xc486('0x36')]();}else if(_0x2abe50['type']===_0xc486('0x37')&&_0x2abe50[_0xc486('0x38')]&&_0x2abe50[_0xc486('0x33')]&&_0x2abe50[_0xc486('0x31')]){_0x51c7ec[_0x2abe50[_0xc486('0x33')]['toLowerCase']()]=_0x3f1afd[_0x2abe50[_0xc486('0x38')]][_0xc486('0x36')]();}else if(_0x2abe50[_0xc486('0x32')]===_0xc486('0x39')&&_0x2abe50[_0xc486('0x3a')]&&_0x2abe50[_0xc486('0x3a')][_0xc486('0x3b')]&&_0x2abe50[_0xc486('0x33')]&&_0x2abe50[_0xc486('0x31')]){_0x51c7ec[_0x2abe50['idField'][_0xc486('0x34')]()]=_0x3f1afd[_0x2abe50[_0xc486('0x3a')][_0xc486('0x3b')][_0xc486('0x34')]()][_0xc486('0x36')]();}});}return _0x51c7ec;}function getTicket(_0x3fbf45,_0x12a0e8,_0x2522a3,_0x34e3be,_0x497f73,_0x15edeb){return function(_0x506626){logger[_0xc486('0x1c')]('['+[_0x3fbf45[_0xc486('0x13')]()]+_0xc486('0x3c'),_0x506626);return new Promise(function(_0x22803d,_0x2c64e0){var _0x37a94d=_0x3fbf45[_0xc486('0x34')]()===_0xc486('0x3d')?_0x506626[_0xc486('0x1f')]:_0x506626[_0xc486('0x29')];var _0x244b9f={'method':_0xc486('0x3e'),'uri':_0x2522a3+_0xc486('0x3f')+'?'+_0x15edeb,'body':Object['assign']({},{'active':_0xc486('0x1e'),'caller_id':_0x37a94d,'assigned_to':_0x506626['userId'],'short_description':intUtil[_0xc486('0x40')](_0x34e3be[_0xc486('0x41')],_0x497f73,'\x20'),'description':intUtil['getString'](_0x34e3be[_0xc486('0x42')],_0x497f73,'\x0a')},getCustomFields(_0x34e3be[_0xc486('0x43')],_0x497f73)),'auth':_0x12a0e8,'json':!![]};return rp(_0x244b9f)[_0xc486('0xe')](function(_0x23f114){logger[_0xc486('0x1c')]('['+[_0x3fbf45[_0xc486('0x13')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x23f114['result']);_0x506626[_0xc486('0x44')]=_0x23f114[_0xc486('0xf')]['sys_id'];_0x506626[_0xc486('0x45')]=_0x23f114[_0xc486('0xf')][_0xc486('0x46')];logger[_0xc486('0x1c')]('['+[_0x3fbf45[_0xc486('0x13')]()]+']\x20getTicket\x20crm',_0x506626);_0x22803d(_0x506626);})[_0xc486('0x15')](function(_0x5b7305){logger[_0xc486('0x16')]('['+[_0x3fbf45['toUpperCase']()]+']',_0x5b7305[_0xc486('0x17')]);_0x2c64e0(_0x5b7305[_0xc486('0x17')]);});});};}function createRemoteTag(_0x49b80a,_0x4d07c7,_0x32054d,_0x8da982){return new Promise(function(_0x3e0b41,_0x57bad5){var _0x317b8d={'method':_0xc486('0x3e'),'uri':_0x32054d+_0xc486('0x47')+'?'+_0x8da982,'body':{'short_description':_0x49b80a,'global':!![],'active':!![],'name':_0x49b80a},'auth':_0x4d07c7,'json':!![]};return rp(_0x317b8d)[_0xc486('0xe')](function(_0x465632){var _0x1dee0e=_0x465632[_0xc486('0xf')]['sys_id'];_0x3e0b41(_0x1dee0e);});});}function getRemoteTag(_0x29485e,_0x3114c2,_0x11588a,_0x1add7e,_0x3b17ec){return new Promise(function(_0x259114,_0x502a8f){var _0x12a986={'method':_0xc486('0xd'),'uri':_0x11588a+_0xc486('0x47')+_0xc486('0x48')+_0x29485e+'&'+_0x1add7e,'auth':_0x3114c2,'json':!![]};return rp(_0x12a986)[_0xc486('0xe')](function(_0x994cd3){if(_0x994cd3['result'][_0xc486('0x10')]>0x0){var _0x1dbe5a=_0x994cd3[_0xc486('0xf')][0x0][_0xc486('0x12')];_0x259114(_0x1dbe5a);}else{return createRemoteTag(_0x29485e,_0x3114c2,_0x11588a,_0x1add7e)[_0xc486('0xe')](function(_0x2233c5){_0x259114(_0x2233c5);});}});});}function assignTagToIncident(_0x544dad,_0x18de09,_0x2ee2f4,_0x539d51,_0x2f93e8){return new Promise(function(_0x41c192,_0x381d68){var _0x516bda={'method':_0xc486('0x3e'),'uri':_0x2ee2f4+_0xc486('0x49')+'?'+_0x2f93e8,'body':{'label':_0x544dad,'table':_0xc486('0x3f'),'id_type':_0xc486('0x4a'),'table_key':_0x539d51['ticketId'],'title':_0xc486('0x4b')+_0x539d51['ticketNumber'],'id_display':_0x539d51[_0xc486('0x45')]},'auth':_0x18de09,'json':!![]};return rp(_0x516bda)[_0xc486('0xe')](function(_0x31bb53){_0x41c192();})[_0xc486('0x15')](function(){_0x41c192();});});}function manageTags(_0xc23acf,_0x323d4c,_0x491cb0,_0x3692ca,_0x302305,_0x5d9a53,_0x301644){return new Promise(function(_0x1eb9a6,_0x173ad0){var _0x39cbfa=[];_0x323d4c['forEach'](function(_0xab7aee){_0x39cbfa[_0xc486('0x4c')](getRemoteTag(_0xab7aee,_0x491cb0,_0x3692ca,_0x5d9a53,_0x301644));});return Promise[_0xc486('0x4d')](_0x39cbfa)[_0xc486('0xe')](function(_0x2af650){if(_0x2af650['length']){logger['info']('['+[_0xc23acf[_0xc486('0x13')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x2af650);var _0x4f4994=[];_0x2af650[_0xc486('0x2c')](function(_0x2bec50){_0x4f4994[_0xc486('0x4c')](assignTagToIncident(_0x2bec50,_0x491cb0,_0x3692ca,_0x302305,_0x5d9a53));});return Promise[_0xc486('0x4d')](_0x4f4994)[_0xc486('0xe')](function(){_0x1eb9a6();})[_0xc486('0x15')](function(){_0x1eb9a6();});}else{_0x1eb9a6();}});});}function getTags(_0x5c3b14,_0x3d28d1,_0x30f857,_0xd76c9d,_0x191a58,_0x55c77d){return function(_0x276a1b){return new Promise(function(_0x457473,_0x57da20){var _0x35c8da=[];var _0xbc2d28=_0xd76c9d[_0xc486('0x4e')];if(_0xbc2d28&&_0xbc2d28['length']>0x0){_0x35c8da=_[_0xc486('0x4f')](_0xbc2d28,'name');}if(_0x35c8da[_0xc486('0x10')]>0x0){return manageTags(_0x5c3b14,_0x35c8da,_0x3d28d1,_0x30f857,_0x276a1b,_0x191a58,_0x55c77d)[_0xc486('0xe')](function(){_0x457473(_0x276a1b);});}else{_0x457473(_0x276a1b);}});};}function emit(_0x4ff373,_0x2d295e,_0x50041e){var _0x86a601=_0xc486('0x50')+_0xc486('0x51')+_0xc486('0x52')+_0xc486('0x53');var _0x9ee29d={'uri':_0x4ff373+_0xc486('0x54')+_0x50041e+_0x86a601};io['to'](util[_0xc486('0x55')]('user:%s',_0x2d295e))[_0xc486('0x56')](_0xc486('0x57'),_0x9ee29d);}exports['cs']=function(_0x5f25f8,_0x4c9b1e,_0x32fe19,_0xf9cc65,_0x2b9139,_0x2f1ff7,_0xd093,_0x4c018a){var _0x5f3008={};var _0x170391={'user':_0x2f1ff7['username'],'pass':_0x2f1ff7[_0xc486('0x58')]};var _0x38368c=_0xc486('0x59');var _0xa1d6bc='sysparm_display_value=true';_0x2f1ff7[_0xc486('0x5a')]=intUtil[_0xc486('0x5b')](_0x2f1ff7[_0xc486('0x5a')]);_0x2f1ff7[_0xc486('0x5c')]=intUtil[_0xc486('0x5b')](_0x2f1ff7[_0xc486('0x5c')]);var _0x18256e=util[_0xc486('0x55')](_0xc486('0x5d'),_0x2f1ff7[_0xc486('0x5a')]);_0x5f3008[_0xc486('0x1a')]=!_[_0xc486('0x5e')](_0xf9cc65)?_0xf9cc65['email']:null;_0x5f3008['adminEmail']=_0x2f1ff7[_0xc486('0x5f')];_0x5f3008[_0xc486('0x25')]=_0x4c018a['toLowerCase']()===_0xc486('0x3d')?_0x4c9b1e['destcalleridnum']:_0x4c9b1e[_0xc486('0x60')];_0x5f3008[_0xc486('0x61')]=_0x4c018a==='queue'||_0x4c018a===_0xc486('0x62')?_0xc486('0x63'):_0xc486('0x3d');var _0x11c0c2=util[_0xc486('0x55')](_0xc486('0x64'),_0x2f1ff7[_0xc486('0x5c')],_0x4c9b1e[_0xc486('0x65')],md5(_0x4c9b1e[_0xc486('0x65')]));if(_0x2b9139&&_0x2b9139[_0xc486('0x66')]){logger[_0xc486('0x1c')](_0xc486('0x67'),_0xc486('0x68'));_0x4c9b1e['recordingURL']=_0x11c0c2;}else if(_0xd093&&_0xd093['recordingFormat']&&_0xd093['recordingFormat']!==_0xc486('0x69')){logger[_0xc486('0x1c')]('[OUTBOUND]',_0xc486('0x68'));_0x4c9b1e[_0xc486('0x6a')]=_0x11c0c2;}else{_0x4c9b1e[_0xc486('0x6a')]='';}return getAdminUser(_0x4c018a,_0x170391,_0x5f3008,_0x18256e,_0xa1d6bc,_0x38368c)[_0xc486('0xe')](getUser(_0x4c018a,_0x170391,_0x18256e,_0xa1d6bc,_0x38368c))['then'](getEndUser(_0x4c018a,_0x170391,_0x18256e,_0xa1d6bc,_0x38368c))['then'](getTicket(_0x4c018a,_0x170391,_0x18256e,_0x32fe19,_0x4c9b1e,_0xa1d6bc))[_0xc486('0xe')](function(_0x8d8878){logger[_0xc486('0x1c')](util['format'](_0xc486('0x6b'),_0x8d8878[_0xc486('0x44')]));logger[_0xc486('0x1c')](util['format']('call\x20direction:\x20%s',_0x4c018a));if(_0x4c018a!==_0xc486('0x62')){logger[_0xc486('0x1c')]('['+[_0x4c018a[_0xc486('0x13')]()]+']',_0xc486('0x6c'));emit(_0x2f1ff7[_0xc486('0x5a')],_0xf9cc65['name'],_0x8d8878['ticketId']);}})[_0xc486('0x15')](function(_0x37fc34){logger[_0xc486('0x16')]('['+[_0x4c018a[_0xc486('0x13')]()]+_0xc486('0x6d'),util[_0xc486('0x6e')](_0x37fc34,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 184e7bc..241cdbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb66d=['duration_hours','parent_type','Contacts','parent_name','direction','length','variableName','push','idField','set_entry','JSON','Calls','format','toString','stringify','isNil','info','Getting\x20agent\x20with\x20name','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','find','entry_list','name_value_list','value','resolve','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','get_entry_list','phone_home','then','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Enduser\x20created.','debug','[HTTP]','map','type','nameField','customField','toLowerCase','content','string','variable','customVariable','Variable','custom_fields','POST','login','username','password','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','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','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','catch','error','outbound','uri','%s/service/v4_1/rest.php','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','Outbound','trigger:browser:url','unmanaged','lastevent','toUpperCase','calleridname','calleridnum','lodash','util','./util','../../../../config/environment','sugarcrm','defaults','redis','socket.io-emitter','emit','Creating\x20new\x20ticket...','name','getString','assigned_user_id','description','Descriptions','date_start','toISOString','slice','replace'];(function(_0x5da201,_0x24b5c3){var _0x51f615=function(_0x13aa0f){while(--_0x13aa0f){_0x5da201['push'](_0x5da201['shift']());}};_0x51f615(++_0x24b5c3);}(_0xb66d,0xcd));var _0xdb66=function(_0x273987,_0x44056f){_0x273987=_0x273987-0x0;var _0x50ebc7=_0xb66d[_0x273987];return _0x50ebc7;};'use strict';var _=require(_0xdb66('0x0'));var rp=require('request-promise');var BPromise=require('bluebird');var md5=require('md5');var util=require(_0xdb66('0x1'));var Redis=require('ioredis');var intUtil=require(_0xdb66('0x2'));var config=require(_0xdb66('0x3'));var logger=require('../../../../config/logger')(_0xdb66('0x4'));config['redis']=_[_0xdb66('0x5')](config[_0xdb66('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0xdb66('0x7'))(new Redis(config[_0xdb66('0x6')]));var def={'method':'POST','json':!![]};function emit(_0x513ee7,_0x149470,_0x3b3503){io['to'](_0x513ee7)[_0xdb66('0x8')](_0x149470,_0x3b3503);}function getTicket(_0x3fa371,_0x28165a,_0x36e5c,_0xc46157,_0x3881d9,_0x338534,_0x59dd1c,_0x2a9734){logger['info'](_0xdb66('0x9'));var _0x440bd9=new Date();var _0x596252=[{'name':_0xdb66('0xa'),'value':intUtil[_0xdb66('0xb')](_0xc46157['Subjects'],_0x3881d9,'\x20')},{'name':_0xdb66('0xc'),'value':_0x28165a['id']},{'name':'created_by','value':_0x28165a['id']},{'name':_0xdb66('0xd'),'value':intUtil[_0xdb66('0xb')](_0xc46157[_0xdb66('0xe')],_0x3881d9,'\x0a')},{'name':_0xdb66('0xf'),'value':_0x440bd9[_0xdb66('0x10')]()[_0xdb66('0x11')](0x0,0x13)[_0xdb66('0x12')]('T','\x20')},{'name':_0xdb66('0x13'),'value':'0'},{'name':'duration_minutes','value':'15'},{'name':'parent_id','value':_0x36e5c['id']},{'name':_0xdb66('0x14'),'value':_0xdb66('0x15')},{'name':_0xdb66('0x16'),'value':_0x36e5c[_0xdb66('0xa')]},{'name':_0xdb66('0x17'),'value':_0x2a9734}];if(_0x338534[_0xdb66('0x18')]){_['forEach'](_0x338534,function(_0x201641){if(_0x3881d9[_0x201641[_0xdb66('0x19')]]){_0x596252[_0xdb66('0x1a')]({'name':_0x201641[_0xdb66('0x1b')],'value':_0x3881d9[_0x201641[_0xdb66('0x19')]]});}});}return request({'form':{'method':_0xdb66('0x1c'),'input_type':_0xdb66('0x1d'),'response_type':_0xdb66('0x1d'),'rest_data':JSON['stringify']({'session':_0x59dd1c['id'],'module_name':_0xdb66('0x1e'),'name_value_list':_0x596252})}});}function getAuth(_0x48e9f0){return util[_0xdb66('0x1f')]('Basic\x20%s',new Buffer(_0x48e9f0['apiKey']+':X')[_0xdb66('0x20')]('base64'));}function getServerInfo(_0x528b7a){return request({'form':{'method':'get_server_info','input_type':'JSON','response_type':'JSON','rest_data':JSON[_0xdb66('0x21')]({'session':_0x528b7a['id']})}});}function getUser(_0x21bc7d,_0x527433,_0x383684){if(!_[_0xdb66('0x22')](_0x527433)){logger[_0xdb66('0x23')](_0xdb66('0x24'),_0x527433);return request({'form':{'method':'get_entry_list','input_type':_0xdb66('0x1d'),'response_type':'JSON','rest_data':JSON[_0xdb66('0x21')]({'session':_0x383684['id'],'module_name':_0xdb66('0x25'),'query':util[_0xdb66('0x1f')](_0xdb66('0x26'),_0x527433),'order_by':'','offset':'0','select_fields':['id',_0xdb66('0xa'),_0xdb66('0x27')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x4930c3){if(_0x4930c3['entry_list'][_0xdb66('0x18')]){var _0x231cf5=_[_0xdb66('0x28')](_0x4930c3[_0xdb66('0x29')],function(_0x1ff74d){return _0x1ff74d[_0xdb66('0x2a')][_0xdb66('0x27')][_0xdb66('0x2b')]===_0x527433;});if(_0x231cf5){logger[_0xdb66('0x23')]('Agent\x20found!');return BPromise[_0xdb66('0x2c')]({'id':_0x231cf5[_0xdb66('0x2a')]['id'][_0xdb66('0x2b')],'name':_0x231cf5[_0xdb66('0x2a')][_0xdb66('0xa')][_0xdb66('0x2b')]});}}logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0xdb66('0x2c')]({'id':_0x383684['name_value_list']['user_id'][_0xdb66('0x2b')],'name':_0x383684[_0xdb66('0x2a')][_0xdb66('0x27')][_0xdb66('0x2b')]});});}else{logger['info'](_0xdb66('0x2d'));return BPromise[_0xdb66('0x2c')]({'id':_0x383684[_0xdb66('0x2a')]['user_id'][_0xdb66('0x2b')],'name':_0x383684[_0xdb66('0x2a')][_0xdb66('0x27')]['value']});}}function getEndUser(_0x4472b4,_0x25b8e5,_0x2f8504,_0x3f4339){logger[_0xdb66('0x23')](_0xdb66('0x2e'),_0x2f8504);return request({'form':{'method':_0xdb66('0x2f'),'input_type':_0xdb66('0x1d'),'response_type':_0xdb66('0x1d'),'rest_data':JSON[_0xdb66('0x21')]({'session':_0x3f4339['id'],'module_name':_0xdb66('0x15'),'query':util[_0xdb66('0x1f')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x2f8504),'order_by':'','offset':'0','select_fields':['id','name',_0xdb66('0x30')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xdb66('0x31')](function(_0x516fa6){if(_0x516fa6[_0xdb66('0x29')][_0xdb66('0x18')]){var _0x1399cd=_[_0xdb66('0x28')](_0x516fa6[_0xdb66('0x29')],function(_0x3f3cd1){return _0x3f3cd1[_0xdb66('0x2a')]['phone_home'][_0xdb66('0x2b')]===_0x2f8504;});if(_0x1399cd){logger[_0xdb66('0x23')](_0xdb66('0x32'));return BPromise[_0xdb66('0x2c')]({'id':_0x1399cd['name_value_list']['id'][_0xdb66('0x2b')],'name':_0x1399cd[_0xdb66('0x2a')][_0xdb66('0xa')][_0xdb66('0x2b')],'phone':_0x1399cd[_0xdb66('0x2a')][_0xdb66('0x30')][_0xdb66('0x2b')]});}}else{logger[_0xdb66('0x23')](_0xdb66('0x33'));return request({'form':{'method':_0xdb66('0x1c'),'input_type':_0xdb66('0x1d'),'response_type':_0xdb66('0x1d'),'rest_data':JSON['stringify']({'session':_0x3f4339['id'],'module_name':'Contacts','name_value_list':[{'name':_0xdb66('0x34'),'value':_0x25b8e5!==_0xdb66('0x35')?_0x25b8e5:util[_0xdb66('0x1f')]('Caller\x20-\x20%s',_0x2f8504)},{'name':'phone_home','value':_0x2f8504}]})}})[_0xdb66('0x31')](function(_0x53bdff){logger['info'](_0xdb66('0x36'));return BPromise[_0xdb66('0x2c')]({'id':_0x53bdff['id'],'name':_0x53bdff[_0xdb66('0x29')][_0xdb66('0x34')]['value'],'phone':_0x53bdff['entry_list'][_0xdb66('0x30')]['value']});});}});}function request(_0x3bc7d4){logger[_0xdb66('0x37')](_0xdb66('0x38'),JSON[_0xdb66('0x21')](_0x3bc7d4));return rp(_['merge'](def,_0x3bc7d4));}function getTags(_0x2ebcb2,_0x1232ed){var _0x109885=[];if(_0x2ebcb2&&_0x2ebcb2[_0xdb66('0x18')]>0x0){_0x109885=_[_0xdb66('0x39')](_0x2ebcb2,_0x1232ed);}return _0x109885;}function getCustomFields(_0x5c74f9,_0x59cb06){var _0x560970=[];var _0x268357={'custom_fields':[]};if(_0x5c74f9[_0xdb66('0x18')]>0x0){_['forEach'](_0x5c74f9,function(_0x2025af){if(_0x2025af[_0xdb66('0x3a')]==='string'&&_0x2025af[_0xdb66('0x3b')]&&!_0x2025af[_0xdb66('0x3c')]){_0x268357[_0x2025af['nameField'][_0xdb66('0x3d')]()]=_0x2025af[_0xdb66('0x3e')][_0xdb66('0x20')]();}else if(_0x2025af['type']===_0xdb66('0x3f')&&_0x2025af[_0xdb66('0x1b')]&&_0x2025af[_0xdb66('0x3c')]){_0x268357['custom_fields'][_0xdb66('0x1a')]({'id':_0x2025af[_0xdb66('0x1b')],'value':_0x2025af[_0xdb66('0x3e')][_0xdb66('0x20')]()});}else if(_0x2025af[_0xdb66('0x3a')]===_0xdb66('0x40')&&_0x2025af['variableName']&&_0x2025af[_0xdb66('0x1b')]&&_0x2025af[_0xdb66('0x3c')]){_0x59cb06[_0x2025af[_0xdb66('0x19')]]&&_0x268357['custom_fields'][_0xdb66('0x1a')]({'id':_0x2025af['idField'],'value':_0x59cb06[_0x2025af['variableName']][_0xdb66('0x20')]()});}else if(_0x2025af[_0xdb66('0x3a')]===_0xdb66('0x41')&&_0x2025af['Variable']&&_0x2025af['Variable'][_0xdb66('0xa')]&&_0x2025af[_0xdb66('0x1b')]&&_0x2025af[_0xdb66('0x3c')]){_0x59cb06[_0x2025af[_0xdb66('0x42')][_0xdb66('0xa')][_0xdb66('0x3d')]()]&&_0x268357[_0xdb66('0x43')]['push']({'id':_0x2025af[_0xdb66('0x1b')],'value':_0x59cb06[_0x2025af[_0xdb66('0x42')][_0xdb66('0xa')][_0xdb66('0x3d')]()]['toString']()});}});}return _0x268357;}function getConnection(_0x35ae23){return request({'method':_0xdb66('0x44'),'form':{'method':_0xdb66('0x45'),'input_type':_0xdb66('0x1d'),'response_type':_0xdb66('0x1d'),'rest_data':JSON[_0xdb66('0x21')]({'user_auth':{'user_name':_0x35ae23[_0xdb66('0x46')],'password':_0x35ae23[_0xdb66('0x47')],'encryption':'PLAIN'},'application':'xCALLY\x20Motion\x20integration'})}})[_0xdb66('0x31')](function(_0x1cd401){var _0xe9eba2=_0x1cd401;if(_0xe9eba2['id']){def['sessionID']=_0xe9eba2['id'];return BPromise['resolve'](_0xe9eba2);}else{throw new Error(util[_0xdb66('0x1f')]('Account\x20%d\x20is\x20not\x20valid',_0x35ae23['id']));}});}function setRelationship(_0xcdc5d1,_0x5a1284,_0xacd7a9,_0x4211f9){return request({'form':{'method':_0xdb66('0x48'),'input_type':_0xdb66('0x1d'),'response_type':_0xdb66('0x1d'),'rest_data':JSON[_0xdb66('0x21')]({'session':_0xcdc5d1['id'],'module_name':'Calls','module_id':_0xacd7a9['id'],'link_field_name':_0x4211f9,'related_ids':[_0x5a1284['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xdb66('0x49')]=function(_0x380de5,_0x31469f,_0x5dfbd9,_0x23d300,_0x5347f9,_0xac49b8){var _0x245f4c,_0x287f90,_0x33e5c2,_0x3c4397;_0xac49b8[_0xdb66('0x4a')]=intUtil[_0xdb66('0x4b')](_0xac49b8[_0xdb66('0x4a')]);_0xac49b8[_0xdb66('0x4c')]=intUtil[_0xdb66('0x4b')](_0xac49b8[_0xdb66('0x4c')]);def['uri']=util[_0xdb66('0x1f')]('%s/service/v4_1/rest.php',_0xac49b8[_0xdb66('0x4a')]);if(_0x5347f9&&_0x5347f9[_0xdb66('0x4d')]){logger[_0xdb66('0x23')](_0xdb66('0x4e'),_0xdb66('0x4f'));_0x31469f[_0xdb66('0x50')]=util['format'](_0xdb66('0x51'),_0xac49b8['serverUrl'],_0x31469f[_0xdb66('0x52')],md5(_0x31469f['uniqueid']));}else{_0x31469f[_0xdb66('0x50')]='';}return getConnection(_0xac49b8)[_0xdb66('0x31')](function(_0x36b772){_0x3c4397=_0x36b772;return getUser(_0xac49b8,_0x23d300[_0xdb66('0xa')],_0x3c4397);})[_0xdb66('0x31')](function(_0x2f0c8c){_0x245f4c=_0x2f0c8c;logger[_0xdb66('0x23')](_0xdb66('0x53'),_0x245f4c['id']);return getEndUser(_0xac49b8,_0x31469f['calleridname'],_0x31469f['calleridnum'],_0x3c4397);})['then'](function(_0x35b98a){_0x287f90=_0x35b98a;logger['info'](_0xdb66('0x54'),_0x287f90['id']);return getTicket(_0xac49b8,_0x245f4c,_0x287f90,_0x5dfbd9,_0x31469f,_0x5dfbd9[_0xdb66('0x55')],_0x3c4397,_0xdb66('0x56'));})['then'](function(_0x254fb9){_0x33e5c2=_0x254fb9;logger[_0xdb66('0x23')](_0xdb66('0x57'));logger[_0xdb66('0x23')](_0xdb66('0x58'),_0x33e5c2['id']);return setRelationship(_0x3c4397,_0x245f4c,_0x33e5c2,_0xdb66('0x59'));})[_0xdb66('0x31')](function(){return setRelationship(_0x3c4397,_0x287f90,_0x33e5c2,_0xdb66('0x5a'));})[_0xdb66('0x31')](function(){return getServerInfo(_0x3c4397);})['then'](function(_0x21830d){var _0x2423fd=parseInt(_0x21830d['version'][_0xdb66('0x5b')](0x0));var _0x5c6def=util['format'](_0xdb66('0x5c'),_0xac49b8[_0xdb66('0x4a')],_0x33e5c2['id']);if(_0x2423fd>0x6){_0x5c6def=util['format'](_0xdb66('0x5d'),_0xac49b8[_0xdb66('0x4a')],_0x33e5c2['id']);}logger[_0xdb66('0x23')](_0xdb66('0x4e'),_0xdb66('0x5e'));emit(util[_0xdb66('0x1f')]('user:%s',_0x23d300[_0xdb66('0xa')]),'trigger:browser:url',{'uri':_0x5c6def});})[_0xdb66('0x5f')](function(_0x5c62cb){logger[_0xdb66('0x60')]('[QUEUE]',JSON['stringify'](_0x5c62cb));});};exports[_0xdb66('0x61')]=function(_0x449582,_0x26f8b4,_0x55edae,_0x3636a0,_0xd59751,_0x2eb209,_0x2d520f){var _0xe5e75a,_0x19eb3c,_0x2d7f44,_0x5da0dc;_0x2eb209['remoteUri']=intUtil[_0xdb66('0x4b')](_0x2eb209[_0xdb66('0x4a')]);_0x2eb209['serverUrl']=intUtil[_0xdb66('0x4b')](_0x2eb209['serverUrl']);def[_0xdb66('0x62')]=util[_0xdb66('0x1f')](_0xdb66('0x63'),_0x2eb209['remoteUri']);if(_0x2d520f&&_0x2d520f[_0xdb66('0x64')]&&_0x2d520f[_0xdb66('0x64')]!==_0xdb66('0x65')){logger['info'](_0xdb66('0x66'),'Recording\x20is\x20enabled!');_0x26f8b4[_0xdb66('0x50')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2eb209['serverUrl'],_0x26f8b4[_0xdb66('0x52')],md5(_0x26f8b4[_0xdb66('0x52')]));}return getConnection(_0x2eb209)[_0xdb66('0x31')](function(_0x3f2326){_0x5da0dc=_0x3f2326;return getUser(_0x2eb209,_0x3636a0[_0xdb66('0xa')],_0x5da0dc);})[_0xdb66('0x31')](function(_0x5b1087){_0xe5e75a=_0x5b1087;logger[_0xdb66('0x23')](_0xdb66('0x53'),_0xe5e75a['id']);return getEndUser(_0x2eb209,_0x26f8b4[_0xdb66('0x67')],_0x26f8b4[_0xdb66('0x68')],_0x5da0dc);})[_0xdb66('0x31')](function(_0x34c305){_0x19eb3c=_0x34c305;logger[_0xdb66('0x23')]('The\x20Enduser\x20ID\x20is:',_0x19eb3c['id']);return getTicket(_0x2eb209,_0xe5e75a,_0x19eb3c,_0x55edae,_0x26f8b4,_0x55edae[_0xdb66('0x55')],_0x5da0dc,_0xdb66('0x69'));})[_0xdb66('0x31')](function(_0x5dbd08){_0x2d7f44=_0x5dbd08;logger[_0xdb66('0x23')](_0xdb66('0x57'));logger[_0xdb66('0x23')](_0xdb66('0x58'),_0x2d7f44['id']);return setRelationship(_0x5da0dc,_0xe5e75a,_0x2d7f44,_0xdb66('0x59'));})[_0xdb66('0x31')](function(){return setRelationship(_0x5da0dc,_0x19eb3c,_0x2d7f44,'contacts');})[_0xdb66('0x31')](function(){return getServerInfo(_0x5da0dc);})['then'](function(_0x5080a6){var _0xa7b989=parseInt(_0x5080a6['version'][_0xdb66('0x5b')](0x0));var _0x21fa1d=util[_0xdb66('0x1f')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x2eb209[_0xdb66('0x4a')],_0x2d7f44['id']);if(_0xa7b989>0x6){_0x21fa1d=util['format']('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x2eb209[_0xdb66('0x4a')],_0x2d7f44['id']);}logger[_0xdb66('0x23')](_0xdb66('0x66'),_0xdb66('0x5e'));emit(util[_0xdb66('0x1f')]('user:%s',_0x3636a0[_0xdb66('0xa')]),_0xdb66('0x6a'),{'uri':_0x21fa1d});})[_0xdb66('0x5f')](function(_0x45cf7a){logger[_0xdb66('0x60')](_0xdb66('0x66'),JSON[_0xdb66('0x21')](_0x45cf7a));});};exports[_0xdb66('0x6b')]=function(_0x427404,_0x2f3de7,_0x4daac7,_0x4ec332,_0x819602,_0x32b59f){var _0x5b59ea,_0x27b881,_0x1c1ac2,_0x1c7544;_0x32b59f[_0xdb66('0x4a')]=intUtil[_0xdb66('0x4b')](_0x32b59f['remoteUri']);_0x32b59f['serverUrl']=intUtil[_0xdb66('0x4b')](_0x32b59f[_0xdb66('0x4c')]);def[_0xdb66('0x62')]=util[_0xdb66('0x1f')](_0xdb66('0x63'),_0x32b59f[_0xdb66('0x4a')]);if(_0x819602&&_0x819602[_0xdb66('0x4d')]){logger[_0xdb66('0x23')]('['+_0x2f3de7[_0xdb66('0x6c')][_0xdb66('0x6d')]()+']',_0xdb66('0x4f'));_0x2f3de7[_0xdb66('0x50')]=util[_0xdb66('0x1f')](_0xdb66('0x51'),_0x32b59f[_0xdb66('0x4c')],_0x2f3de7[_0xdb66('0x52')],md5(_0x2f3de7['uniqueid']));}else{_0x2f3de7['recordingURL']='';}return getConnection(_0x32b59f)[_0xdb66('0x31')](function(_0x56e0c6){_0x1c7544=_0x56e0c6;if(!_['isNil'](_0x4ec332)){return getUser(_0x32b59f,_0x4ec332[_0xdb66('0xa')],_0x1c7544);}else{return getUser(_0x32b59f,null,_0x1c7544);}})[_0xdb66('0x31')](function(_0x1feffe){_0x5b59ea=_0x1feffe;logger[_0xdb66('0x23')](_0xdb66('0x53'),_0x5b59ea['id']);return getEndUser(_0x32b59f,_0x2f3de7[_0xdb66('0x6e')],_0x2f3de7[_0xdb66('0x6f')],_0x1c7544);})['then'](function(_0x4f9908){_0x27b881=_0x4f9908;logger['info']('The\x20Enduser\x20ID\x20is:',_0x27b881['id']);return getTicket(_0x32b59f,_0x5b59ea,_0x27b881,_0x4daac7,_0x2f3de7,_0x4daac7['Fields'],_0x1c7544,_0xdb66('0x56'));})[_0xdb66('0x31')](function(_0x3b66a4){_0x1c1ac2=_0x3b66a4;logger[_0xdb66('0x23')]('Ticket\x20created!');logger[_0xdb66('0x23')](_0xdb66('0x58'),_0x1c1ac2['id']);return setRelationship(_0x1c7544,_0x5b59ea,_0x1c1ac2,_0xdb66('0x59'));})[_0xdb66('0x31')](function(){return setRelationship(_0x1c7544,_0x27b881,_0x1c1ac2,_0xdb66('0x5a'));})[_0xdb66('0x31')](function(){return getServerInfo(_0x1c7544);})['catch'](function(_0x4da9ab){logger[_0xdb66('0x60')]('['+_0x2f3de7[_0xdb66('0x6c')][_0xdb66('0x6d')]()+']',JSON[_0xdb66('0x21')](_0x4da9ab));});};
\ No newline at end of file
+var _0x9f24=['outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','contacts','user:%s','error','lastevent','toUpperCase','calleridname','request-promise','bluebird','md5','util','ioredis','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','emit','info','Creating\x20new\x20ticket...','name','getString','Subjects','created_by','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','parent_name','direction','length','variableName','push','set_entry','JSON','stringify','Calls','format','Basic\x20%s','toString','get_server_info','isNil','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','find','value','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','phone_home','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Enduser\x20created.','debug','[HTTP]','merge','map','forEach','type','string','nameField','customField','toLowerCase','content','idField','custom_fields','variable','customVariable','Variable','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridnum','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','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','catch'];(function(_0x15af0f,_0x5454ce){var _0x2bd1cb=function(_0x593818){while(--_0x593818){_0x15af0f['push'](_0x15af0f['shift']());}};_0x2bd1cb(++_0x5454ce);}(_0x9f24,0x17b));var _0x49f2=function(_0xa6cc5c,_0x239c99){_0xa6cc5c=_0xa6cc5c-0x0;var _0x44803d=_0x9f24[_0xa6cc5c];return _0x44803d;};'use strict';var _=require('lodash');var rp=require(_0x49f2('0x0'));var BPromise=require(_0x49f2('0x1'));var md5=require(_0x49f2('0x2'));var util=require(_0x49f2('0x3'));var Redis=require(_0x49f2('0x4'));var intUtil=require('./util');var config=require(_0x49f2('0x5'));var logger=require(_0x49f2('0x6'))(_0x49f2('0x7'));config[_0x49f2('0x8')]=_[_0x49f2('0x9')](config[_0x49f2('0x8')],{'host':_0x49f2('0xa'),'port':0x18eb});var io=require(_0x49f2('0xb'))(new Redis(config[_0x49f2('0x8')]));var def={'method':_0x49f2('0xc'),'json':!![]};function emit(_0x5d786c,_0x340ee2,_0x3ad45c){io['to'](_0x5d786c)[_0x49f2('0xd')](_0x340ee2,_0x3ad45c);}function getTicket(_0x4ebb5e,_0x107235,_0x571263,_0x36f575,_0x122771,_0x1aaa48,_0x5098cb,_0x53989d){logger[_0x49f2('0xe')](_0x49f2('0xf'));var _0x44af91=new Date();var _0x52ecd6=[{'name':_0x49f2('0x10'),'value':intUtil[_0x49f2('0x11')](_0x36f575[_0x49f2('0x12')],_0x122771,'\x20')},{'name':'assigned_user_id','value':_0x107235['id']},{'name':_0x49f2('0x13'),'value':_0x107235['id']},{'name':'description','value':intUtil[_0x49f2('0x11')](_0x36f575['Descriptions'],_0x122771,'\x0a')},{'name':'date_start','value':_0x44af91[_0x49f2('0x14')]()[_0x49f2('0x15')](0x0,0x13)[_0x49f2('0x16')]('T','\x20')},{'name':_0x49f2('0x17'),'value':'0'},{'name':_0x49f2('0x18'),'value':'15'},{'name':_0x49f2('0x19'),'value':_0x571263['id']},{'name':_0x49f2('0x1a'),'value':_0x49f2('0x1b')},{'name':_0x49f2('0x1c'),'value':_0x571263[_0x49f2('0x10')]},{'name':_0x49f2('0x1d'),'value':_0x53989d}];if(_0x1aaa48[_0x49f2('0x1e')]){_['forEach'](_0x1aaa48,function(_0x20f899){if(_0x122771[_0x20f899[_0x49f2('0x1f')]]){_0x52ecd6[_0x49f2('0x20')]({'name':_0x20f899['idField'],'value':_0x122771[_0x20f899['variableName']]});}});}return request({'form':{'method':_0x49f2('0x21'),'input_type':_0x49f2('0x22'),'response_type':'JSON','rest_data':JSON[_0x49f2('0x23')]({'session':_0x5098cb['id'],'module_name':_0x49f2('0x24'),'name_value_list':_0x52ecd6})}});}function getAuth(_0x34f770){return util[_0x49f2('0x25')](_0x49f2('0x26'),new Buffer(_0x34f770['apiKey']+':X')[_0x49f2('0x27')]('base64'));}function getServerInfo(_0x400057){return request({'form':{'method':_0x49f2('0x28'),'input_type':_0x49f2('0x22'),'response_type':_0x49f2('0x22'),'rest_data':JSON[_0x49f2('0x23')]({'session':_0x400057['id']})}});}function getUser(_0x404c79,_0x57585f,_0x31d3c4){if(!_[_0x49f2('0x29')](_0x57585f)){logger[_0x49f2('0xe')]('Getting\x20agent\x20with\x20name',_0x57585f);return request({'form':{'method':_0x49f2('0x2a'),'input_type':'JSON','response_type':_0x49f2('0x22'),'rest_data':JSON[_0x49f2('0x23')]({'session':_0x31d3c4['id'],'module_name':_0x49f2('0x2b'),'query':util[_0x49f2('0x25')](_0x49f2('0x2c'),_0x57585f),'order_by':'','offset':'0','select_fields':['id','name',_0x49f2('0x2d')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x49f2('0x2e')](function(_0x577e68){if(_0x577e68[_0x49f2('0x2f')][_0x49f2('0x1e')]){var _0xedea02=_[_0x49f2('0x30')](_0x577e68['entry_list'],function(_0x5da725){return _0x5da725['name_value_list'][_0x49f2('0x2d')][_0x49f2('0x31')]===_0x57585f;});if(_0xedea02){logger[_0x49f2('0xe')]('Agent\x20found!');return BPromise[_0x49f2('0x32')]({'id':_0xedea02[_0x49f2('0x33')]['id'][_0x49f2('0x31')],'name':_0xedea02[_0x49f2('0x33')][_0x49f2('0x10')][_0x49f2('0x31')]});}}logger[_0x49f2('0xe')](_0x49f2('0x34'));return BPromise['resolve']({'id':_0x31d3c4[_0x49f2('0x33')]['user_id'][_0x49f2('0x31')],'name':_0x31d3c4[_0x49f2('0x33')][_0x49f2('0x2d')]['value']});});}else{logger[_0x49f2('0xe')](_0x49f2('0x35'));return BPromise[_0x49f2('0x32')]({'id':_0x31d3c4['name_value_list'][_0x49f2('0x36')][_0x49f2('0x31')],'name':_0x31d3c4[_0x49f2('0x33')][_0x49f2('0x2d')][_0x49f2('0x31')]});}}function getEndUser(_0x1369b,_0x4166bc,_0x3d1536,_0xbf0b7a){logger[_0x49f2('0xe')](_0x49f2('0x37'),_0x3d1536);return request({'form':{'method':_0x49f2('0x2a'),'input_type':_0x49f2('0x22'),'response_type':_0x49f2('0x22'),'rest_data':JSON[_0x49f2('0x23')]({'session':_0xbf0b7a['id'],'module_name':_0x49f2('0x1b'),'query':util[_0x49f2('0x25')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x3d1536),'order_by':'','offset':'0','select_fields':['id',_0x49f2('0x10'),_0x49f2('0x38')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x5898f3){if(_0x5898f3['entry_list'][_0x49f2('0x1e')]){var _0x1fd806=_['find'](_0x5898f3[_0x49f2('0x2f')],function(_0x871757){return _0x871757[_0x49f2('0x33')][_0x49f2('0x38')][_0x49f2('0x31')]===_0x3d1536;});if(_0x1fd806){logger[_0x49f2('0xe')]('Enduser\x20found!');return BPromise[_0x49f2('0x32')]({'id':_0x1fd806['name_value_list']['id'][_0x49f2('0x31')],'name':_0x1fd806[_0x49f2('0x33')][_0x49f2('0x10')]['value'],'phone':_0x1fd806[_0x49f2('0x33')][_0x49f2('0x38')][_0x49f2('0x31')]});}}else{logger[_0x49f2('0xe')](_0x49f2('0x39'));return request({'form':{'method':_0x49f2('0x21'),'input_type':_0x49f2('0x22'),'response_type':'JSON','rest_data':JSON[_0x49f2('0x23')]({'session':_0xbf0b7a['id'],'module_name':_0x49f2('0x1b'),'name_value_list':[{'name':_0x49f2('0x3a'),'value':_0x4166bc!==_0x49f2('0x3b')?_0x4166bc:util[_0x49f2('0x25')]('Caller\x20-\x20%s',_0x3d1536)},{'name':_0x49f2('0x38'),'value':_0x3d1536}]})}})[_0x49f2('0x2e')](function(_0x4410e3){logger['info'](_0x49f2('0x3c'));return BPromise[_0x49f2('0x32')]({'id':_0x4410e3['id'],'name':_0x4410e3[_0x49f2('0x2f')][_0x49f2('0x3a')][_0x49f2('0x31')],'phone':_0x4410e3[_0x49f2('0x2f')]['phone_home'][_0x49f2('0x31')]});});}});}function request(_0x502622){logger[_0x49f2('0x3d')](_0x49f2('0x3e'),JSON[_0x49f2('0x23')](_0x502622));return rp(_[_0x49f2('0x3f')](def,_0x502622));}function getTags(_0x40d456,_0x576b2b){var _0x17cd3d=[];if(_0x40d456&&_0x40d456['length']>0x0){_0x17cd3d=_[_0x49f2('0x40')](_0x40d456,_0x576b2b);}return _0x17cd3d;}function getCustomFields(_0x1c64a6,_0x1167d3){var _0x28e6d4=[];var _0x5b3259={'custom_fields':[]};if(_0x1c64a6[_0x49f2('0x1e')]>0x0){_[_0x49f2('0x41')](_0x1c64a6,function(_0xff6266){if(_0xff6266[_0x49f2('0x42')]===_0x49f2('0x43')&&_0xff6266[_0x49f2('0x44')]&&!_0xff6266[_0x49f2('0x45')]){_0x5b3259[_0xff6266[_0x49f2('0x44')][_0x49f2('0x46')]()]=_0xff6266[_0x49f2('0x47')][_0x49f2('0x27')]();}else if(_0xff6266['type']==='string'&&_0xff6266[_0x49f2('0x48')]&&_0xff6266['customField']){_0x5b3259[_0x49f2('0x49')][_0x49f2('0x20')]({'id':_0xff6266[_0x49f2('0x48')],'value':_0xff6266['content'][_0x49f2('0x27')]()});}else if(_0xff6266[_0x49f2('0x42')]===_0x49f2('0x4a')&&_0xff6266[_0x49f2('0x1f')]&&_0xff6266[_0x49f2('0x48')]&&_0xff6266['customField']){_0x1167d3[_0xff6266[_0x49f2('0x1f')]]&&_0x5b3259[_0x49f2('0x49')]['push']({'id':_0xff6266['idField'],'value':_0x1167d3[_0xff6266[_0x49f2('0x1f')]][_0x49f2('0x27')]()});}else if(_0xff6266[_0x49f2('0x42')]===_0x49f2('0x4b')&&_0xff6266['Variable']&&_0xff6266[_0x49f2('0x4c')][_0x49f2('0x10')]&&_0xff6266['idField']&&_0xff6266[_0x49f2('0x45')]){_0x1167d3[_0xff6266[_0x49f2('0x4c')][_0x49f2('0x10')][_0x49f2('0x46')]()]&&_0x5b3259['custom_fields']['push']({'id':_0xff6266[_0x49f2('0x48')],'value':_0x1167d3[_0xff6266['Variable'][_0x49f2('0x10')][_0x49f2('0x46')]()]['toString']()});}});}return _0x5b3259;}function getConnection(_0x5af0ff){return request({'method':_0x49f2('0xc'),'form':{'method':'login','input_type':_0x49f2('0x22'),'response_type':_0x49f2('0x22'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x5af0ff[_0x49f2('0x4d')],'password':_0x5af0ff[_0x49f2('0x4e')],'encryption':_0x49f2('0x4f')},'application':_0x49f2('0x50')})}})['then'](function(_0x1ad2f4){var _0x24dab2=_0x1ad2f4;if(_0x24dab2['id']){def[_0x49f2('0x51')]=_0x24dab2['id'];return BPromise[_0x49f2('0x32')](_0x24dab2);}else{throw new Error(util[_0x49f2('0x25')](_0x49f2('0x52'),_0x5af0ff['id']));}});}function setRelationship(_0x327140,_0x4f84ba,_0x321221,_0x5a14bb){return request({'form':{'method':_0x49f2('0x53'),'input_type':_0x49f2('0x22'),'response_type':_0x49f2('0x22'),'rest_data':JSON['stringify']({'session':_0x327140['id'],'module_name':'Calls','module_id':_0x321221['id'],'link_field_name':_0x5a14bb,'related_ids':[_0x4f84ba['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x49f2('0x54')]=function(_0x5f0960,_0x324f10,_0x133e1d,_0xbfd532,_0x2ca221,_0x48a8c7){var _0x4fa425,_0x13b08c,_0x18f417,_0x401ee9;_0x48a8c7[_0x49f2('0x55')]=intUtil[_0x49f2('0x56')](_0x48a8c7[_0x49f2('0x55')]);_0x48a8c7[_0x49f2('0x57')]=intUtil['stripTrailingSlash'](_0x48a8c7['serverUrl']);def[_0x49f2('0x58')]=util[_0x49f2('0x25')](_0x49f2('0x59'),_0x48a8c7['remoteUri']);if(_0x2ca221&&_0x2ca221['monitor_format']){logger[_0x49f2('0xe')](_0x49f2('0x5a'),_0x49f2('0x5b'));_0x324f10['recordingURL']=util[_0x49f2('0x25')](_0x49f2('0x5c'),_0x48a8c7[_0x49f2('0x57')],_0x324f10[_0x49f2('0x5d')],md5(_0x324f10['uniqueid']));}else{_0x324f10[_0x49f2('0x5e')]='';}return getConnection(_0x48a8c7)['then'](function(_0x296d2d){_0x401ee9=_0x296d2d;return getUser(_0x48a8c7,_0xbfd532['name'],_0x401ee9);})[_0x49f2('0x2e')](function(_0x10683d){_0x4fa425=_0x10683d;logger[_0x49f2('0xe')](_0x49f2('0x5f'),_0x4fa425['id']);return getEndUser(_0x48a8c7,_0x324f10['calleridname'],_0x324f10[_0x49f2('0x60')],_0x401ee9);})[_0x49f2('0x2e')](function(_0x543623){_0x13b08c=_0x543623;logger[_0x49f2('0xe')]('The\x20Enduser\x20ID\x20is:',_0x13b08c['id']);return getTicket(_0x48a8c7,_0x4fa425,_0x13b08c,_0x133e1d,_0x324f10,_0x133e1d[_0x49f2('0x61')],_0x401ee9,_0x49f2('0x62'));})[_0x49f2('0x2e')](function(_0x56fdb1){_0x18f417=_0x56fdb1;logger[_0x49f2('0xe')](_0x49f2('0x63'));logger[_0x49f2('0xe')](_0x49f2('0x64'),_0x18f417['id']);return setRelationship(_0x401ee9,_0x4fa425,_0x18f417,_0x49f2('0x65'));})[_0x49f2('0x2e')](function(){return setRelationship(_0x401ee9,_0x13b08c,_0x18f417,'contacts');})[_0x49f2('0x2e')](function(){return getServerInfo(_0x401ee9);})[_0x49f2('0x2e')](function(_0x5847d9){var _0xee4077=parseInt(_0x5847d9[_0x49f2('0x66')][_0x49f2('0x67')](0x0));var _0x4147b2=util[_0x49f2('0x25')](_0x49f2('0x68'),_0x48a8c7[_0x49f2('0x55')],_0x18f417['id']);if(_0xee4077>0x6){_0x4147b2=util[_0x49f2('0x25')](_0x49f2('0x69'),_0x48a8c7[_0x49f2('0x55')],_0x18f417['id']);}logger[_0x49f2('0xe')](_0x49f2('0x5a'),_0x49f2('0x6a'));emit(util[_0x49f2('0x25')]('user:%s',_0xbfd532[_0x49f2('0x10')]),_0x49f2('0x6b'),{'uri':_0x4147b2});})[_0x49f2('0x6c')](function(_0x25d9fd){logger['error'](_0x49f2('0x5a'),JSON[_0x49f2('0x23')](_0x25d9fd));});};exports[_0x49f2('0x6d')]=function(_0x386fd9,_0x345354,_0x47c204,_0x7553c7,_0x51b57a,_0x26bb6c,_0x2c6997){var _0x4f1672,_0x1c9fbd,_0x1ad3d9,_0x1d178a;_0x26bb6c[_0x49f2('0x55')]=intUtil['stripTrailingSlash'](_0x26bb6c[_0x49f2('0x55')]);_0x26bb6c['serverUrl']=intUtil['stripTrailingSlash'](_0x26bb6c[_0x49f2('0x57')]);def[_0x49f2('0x58')]=util['format']('%s/service/v4_1/rest.php',_0x26bb6c[_0x49f2('0x55')]);if(_0x2c6997&&_0x2c6997[_0x49f2('0x6e')]&&_0x2c6997[_0x49f2('0x6e')]!==_0x49f2('0x6f')){logger['info'](_0x49f2('0x70'),_0x49f2('0x5b'));_0x345354[_0x49f2('0x5e')]=util[_0x49f2('0x25')](_0x49f2('0x5c'),_0x26bb6c[_0x49f2('0x57')],_0x345354[_0x49f2('0x5d')],md5(_0x345354[_0x49f2('0x5d')]));}return getConnection(_0x26bb6c)[_0x49f2('0x2e')](function(_0x21af26){_0x1d178a=_0x21af26;return getUser(_0x26bb6c,_0x7553c7[_0x49f2('0x10')],_0x1d178a);})[_0x49f2('0x2e')](function(_0x19f1f1){_0x4f1672=_0x19f1f1;logger[_0x49f2('0xe')](_0x49f2('0x5f'),_0x4f1672['id']);return getEndUser(_0x26bb6c,_0x345354[_0x49f2('0x71')],_0x345354[_0x49f2('0x72')],_0x1d178a);})[_0x49f2('0x2e')](function(_0x16a21a){_0x1c9fbd=_0x16a21a;logger['info'](_0x49f2('0x73'),_0x1c9fbd['id']);return getTicket(_0x26bb6c,_0x4f1672,_0x1c9fbd,_0x47c204,_0x345354,_0x47c204[_0x49f2('0x61')],_0x1d178a,'Outbound');})['then'](function(_0x3a990f){_0x1ad3d9=_0x3a990f;logger['info'](_0x49f2('0x63'));logger[_0x49f2('0xe')]('The\x20Ticket\x20ID\x20is:',_0x1ad3d9['id']);return setRelationship(_0x1d178a,_0x4f1672,_0x1ad3d9,_0x49f2('0x65'));})[_0x49f2('0x2e')](function(){return setRelationship(_0x1d178a,_0x1c9fbd,_0x1ad3d9,_0x49f2('0x74'));})[_0x49f2('0x2e')](function(){return getServerInfo(_0x1d178a);})['then'](function(_0x55c34f){var _0x1c14b0=parseInt(_0x55c34f[_0x49f2('0x66')][_0x49f2('0x67')](0x0));var _0x3cc1f7=util[_0x49f2('0x25')](_0x49f2('0x68'),_0x26bb6c['remoteUri'],_0x1ad3d9['id']);if(_0x1c14b0>0x6){_0x3cc1f7=util[_0x49f2('0x25')](_0x49f2('0x69'),_0x26bb6c['remoteUri'],_0x1ad3d9['id']);}logger[_0x49f2('0xe')](_0x49f2('0x70'),_0x49f2('0x6a'));emit(util[_0x49f2('0x25')](_0x49f2('0x75'),_0x7553c7[_0x49f2('0x10')]),_0x49f2('0x6b'),{'uri':_0x3cc1f7});})[_0x49f2('0x6c')](function(_0x491406){logger[_0x49f2('0x76')]('[OUTBOUND]',JSON[_0x49f2('0x23')](_0x491406));});};exports['unmanaged']=function(_0x399a68,_0x384fdb,_0x120c98,_0x1158f9,_0x58c5bd,_0x455ade){var _0x25e75e,_0x21c232,_0x52e274,_0x31fbae;_0x455ade[_0x49f2('0x55')]=intUtil[_0x49f2('0x56')](_0x455ade[_0x49f2('0x55')]);_0x455ade['serverUrl']=intUtil[_0x49f2('0x56')](_0x455ade[_0x49f2('0x57')]);def['uri']=util[_0x49f2('0x25')]('%s/service/v4_1/rest.php',_0x455ade[_0x49f2('0x55')]);if(_0x58c5bd&&_0x58c5bd['monitor_format']){logger['info']('['+_0x384fdb[_0x49f2('0x77')][_0x49f2('0x78')]()+']','Recording\x20is\x20enabled!');_0x384fdb[_0x49f2('0x5e')]=util[_0x49f2('0x25')](_0x49f2('0x5c'),_0x455ade[_0x49f2('0x57')],_0x384fdb[_0x49f2('0x5d')],md5(_0x384fdb[_0x49f2('0x5d')]));}else{_0x384fdb[_0x49f2('0x5e')]='';}return getConnection(_0x455ade)['then'](function(_0x5eccb8){_0x31fbae=_0x5eccb8;if(!_[_0x49f2('0x29')](_0x1158f9)){return getUser(_0x455ade,_0x1158f9[_0x49f2('0x10')],_0x31fbae);}else{return getUser(_0x455ade,null,_0x31fbae);}})['then'](function(_0x279880){_0x25e75e=_0x279880;logger[_0x49f2('0xe')](_0x49f2('0x5f'),_0x25e75e['id']);return getEndUser(_0x455ade,_0x384fdb[_0x49f2('0x79')],_0x384fdb[_0x49f2('0x60')],_0x31fbae);})[_0x49f2('0x2e')](function(_0x2666a6){_0x21c232=_0x2666a6;logger[_0x49f2('0xe')]('The\x20Enduser\x20ID\x20is:',_0x21c232['id']);return getTicket(_0x455ade,_0x25e75e,_0x21c232,_0x120c98,_0x384fdb,_0x120c98[_0x49f2('0x61')],_0x31fbae,_0x49f2('0x62'));})[_0x49f2('0x2e')](function(_0x298efa){_0x52e274=_0x298efa;logger[_0x49f2('0xe')]('Ticket\x20created!');logger[_0x49f2('0xe')](_0x49f2('0x64'),_0x52e274['id']);return setRelationship(_0x31fbae,_0x25e75e,_0x52e274,'users');})['then'](function(){return setRelationship(_0x31fbae,_0x21c232,_0x52e274,_0x49f2('0x74'));})['then'](function(){return getServerInfo(_0x31fbae);})[_0x49f2('0x6c')](function(_0x48865b){logger[_0x49f2('0x76')]('['+_0x384fdb[_0x49f2('0x77')][_0x49f2('0x78')]()+']',JSON[_0x49f2('0x23')](_0x48865b));});};
\ No newline at end of file
index 70a1762..162b086 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f9a=['keyType','string','%s:\x20%s','key','keyContent','format','join','stripTrailingSlash','substring','lastIndexOf','validateEmail','isNil','test','lodash','util','getString','sortBy','length','type','content','variable','variableName','push','customVariable','Variable','name','toLowerCase','toString','keyValue'];(function(_0x5ec09a,_0x35b386){var _0x1f3c39=function(_0xe1b250){while(--_0xe1b250){_0x5ec09a['push'](_0x5ec09a['shift']());}};_0x1f3c39(++_0x35b386);}(_0x1f9a,0x1dd));var _0xa1f9=function(_0x23fa52,_0x1ea0d4){_0x23fa52=_0x23fa52-0x0;var _0x3e33d8=_0x1f9a[_0x23fa52];return _0x3e33d8;};'use strict';var _=require(_0xa1f9('0x0'));var util=require(_0xa1f9('0x1'));exports[_0xa1f9('0x2')]=function(_0x5111ec,_0x20e322,_0x1d5b4e){var _0x1aed66=[];if(_0x5111ec['length']>0x0){var _0x5675e4=_[_0xa1f9('0x3')](_0x5111ec,['id']);for(var _0x1799df=0x0;_0x1799df<_0x5675e4[_0xa1f9('0x4')];_0x1799df++){var _0x1c4d05=_0x5675e4[_0x1799df];if(_0x1c4d05[_0xa1f9('0x5')]==='string'){_0x1aed66['push'](_0x1c4d05[_0xa1f9('0x6')]);}else if(_0x1c4d05[_0xa1f9('0x5')]===_0xa1f9('0x7')&&_0x1c4d05[_0xa1f9('0x8')]){_0x20e322[_0x1c4d05[_0xa1f9('0x8')]]&&_0x1aed66[_0xa1f9('0x9')](_0x20e322[_0x1c4d05['variableName']]['toString']());}else if(_0x1c4d05[_0xa1f9('0x5')]===_0xa1f9('0xa')&&_0x1c4d05[_0xa1f9('0xb')]&&_0x1c4d05[_0xa1f9('0xb')][_0xa1f9('0xc')]){_0x20e322[_0x1c4d05['Variable']['name']['toLowerCase']()]&&_0x1aed66[_0xa1f9('0x9')](_0x20e322[_0x1c4d05[_0xa1f9('0xb')][_0xa1f9('0xc')][_0xa1f9('0xd')]()][_0xa1f9('0xe')]());}else if(_0x1c4d05['type']===_0xa1f9('0xf')){if(_0x1c4d05[_0xa1f9('0x10')]===_0xa1f9('0x11')&&_0x1c4d05['key']){_0x1aed66['push'](util['format'](_0xa1f9('0x12'),_0x1c4d05[_0xa1f9('0x13')],_0x1c4d05[_0xa1f9('0x14')]));}else if(_0x1c4d05[_0xa1f9('0x10')]===_0xa1f9('0x7')&&_0x1c4d05['variableName']&&_0x1c4d05[_0xa1f9('0x13')]){_0x20e322[_0x1c4d05[_0xa1f9('0x8')]]&&_0x1aed66['push'](util[_0xa1f9('0x15')](_0xa1f9('0x12'),_0x1c4d05[_0xa1f9('0x13')],_0x20e322[_0x1c4d05[_0xa1f9('0x8')]]));}else if(_0x1c4d05['keyType']===_0xa1f9('0xa')&&_0x1c4d05[_0xa1f9('0xb')]&&_0x1c4d05[_0xa1f9('0xb')][_0xa1f9('0xc')]&&_0x1c4d05[_0xa1f9('0x13')]){_0x20e322[_0x1c4d05[_0xa1f9('0xb')]['name'][_0xa1f9('0xd')]()]&&_0x1aed66[_0xa1f9('0x9')](util[_0xa1f9('0x15')]('%s:\x20%s',_0x1c4d05[_0xa1f9('0x13')],_0x20e322[_0x1c4d05[_0xa1f9('0xb')][_0xa1f9('0xc')][_0xa1f9('0xd')]()]));}}}}return _0x1aed66[_0xa1f9('0x16')](_0x1d5b4e);};exports[_0xa1f9('0x17')]=function(_0x443056){var _0x57464c=_0x443056['slice'](-0x1);if(_0x57464c==='/'){_0x443056=_0x443056[_0xa1f9('0x18')](0x0,_0x443056[_0xa1f9('0x19')](_0x57464c));}return _0x443056;};exports[_0xa1f9('0x1a')]=function(_0x5d7427){if(!_[_0xa1f9('0x1b')](_0x5d7427)&&_0x5d7427!==''){var _0x32ab2f=/^(([^<>()\[\]\\.,;:\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 _0x32ab2f[_0xa1f9('0x1c')](String(_0x5d7427)[_0xa1f9('0xd')]());}else{return![];}};
\ No newline at end of file
+var _0x7099=['sortBy','type','string','push','content','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyType','format','keyContent','key','%s:\x20%s','stripTrailingSlash','substring','lastIndexOf','validateEmail','isNil','test','lodash','util','getString','length'];(function(_0x39b07c,_0x386292){var _0x33a9e9=function(_0x13216b){while(--_0x13216b){_0x39b07c['push'](_0x39b07c['shift']());}};_0x33a9e9(++_0x386292);}(_0x7099,0xb9));var _0x9709=function(_0x2c7997,_0x5842e2){_0x2c7997=_0x2c7997-0x0;var _0x1abcb8=_0x7099[_0x2c7997];return _0x1abcb8;};'use strict';var _=require(_0x9709('0x0'));var util=require(_0x9709('0x1'));exports[_0x9709('0x2')]=function(_0x52b392,_0x34852c,_0x5bfd1e){var _0xb0bd6b=[];if(_0x52b392[_0x9709('0x3')]>0x0){var _0x172176=_[_0x9709('0x4')](_0x52b392,['id']);for(var _0x582b5c=0x0;_0x582b5c<_0x172176['length'];_0x582b5c++){var _0x17979c=_0x172176[_0x582b5c];if(_0x17979c[_0x9709('0x5')]===_0x9709('0x6')){_0xb0bd6b[_0x9709('0x7')](_0x17979c[_0x9709('0x8')]);}else if(_0x17979c['type']===_0x9709('0x9')&&_0x17979c[_0x9709('0xa')]){_0x34852c[_0x17979c[_0x9709('0xa')]]&&_0xb0bd6b['push'](_0x34852c[_0x17979c['variableName']][_0x9709('0xb')]());}else if(_0x17979c[_0x9709('0x5')]===_0x9709('0xc')&&_0x17979c['Variable']&&_0x17979c[_0x9709('0xd')]['name']){_0x34852c[_0x17979c[_0x9709('0xd')][_0x9709('0xe')]['toLowerCase']()]&&_0xb0bd6b['push'](_0x34852c[_0x17979c[_0x9709('0xd')][_0x9709('0xe')][_0x9709('0xf')]()][_0x9709('0xb')]());}else if(_0x17979c['type']==='keyValue'){if(_0x17979c[_0x9709('0x10')]===_0x9709('0x6')&&_0x17979c['key']){_0xb0bd6b['push'](util[_0x9709('0x11')]('%s:\x20%s',_0x17979c['key'],_0x17979c[_0x9709('0x12')]));}else if(_0x17979c[_0x9709('0x10')]===_0x9709('0x9')&&_0x17979c[_0x9709('0xa')]&&_0x17979c[_0x9709('0x13')]){_0x34852c[_0x17979c[_0x9709('0xa')]]&&_0xb0bd6b[_0x9709('0x7')](util[_0x9709('0x11')](_0x9709('0x14'),_0x17979c[_0x9709('0x13')],_0x34852c[_0x17979c[_0x9709('0xa')]]));}else if(_0x17979c[_0x9709('0x10')]===_0x9709('0xc')&&_0x17979c['Variable']&&_0x17979c[_0x9709('0xd')][_0x9709('0xe')]&&_0x17979c['key']){_0x34852c[_0x17979c[_0x9709('0xd')][_0x9709('0xe')][_0x9709('0xf')]()]&&_0xb0bd6b['push'](util[_0x9709('0x11')]('%s:\x20%s',_0x17979c[_0x9709('0x13')],_0x34852c[_0x17979c['Variable'][_0x9709('0xe')][_0x9709('0xf')]()]));}}}}return _0xb0bd6b['join'](_0x5bfd1e);};exports[_0x9709('0x15')]=function(_0x5402df){var _0xfa902a=_0x5402df['slice'](-0x1);if(_0xfa902a==='/'){_0x5402df=_0x5402df[_0x9709('0x16')](0x0,_0x5402df[_0x9709('0x17')](_0xfa902a));}return _0x5402df;};exports[_0x9709('0x18')]=function(_0x54ec46){if(!_[_0x9709('0x19')](_0x54ec46)&&_0x54ec46!==''){var _0xb2947b=/^(([^<>()\[\]\\.,;:\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 _0xb2947b[_0x9709('0x1a')](String(_0x54ec46)[_0x9709('0xf')]());}else{return![];}};
\ No newline at end of file
index ba1b1dc..48863db 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(_0x415418,_0x22a35e){var _0x39181a=function(_0x1b79eb){while(--_0x1b79eb){_0x415418['push'](_0x415418['shift']());}};_0x39181a(++_0x22a35e);}(_0xe706,0xa3));var _0x6e70=function(_0xf53937,_0x2bf512){_0xf53937=_0xf53937-0x0;var _0x33b67b=_0xe706[_0xf53937];return _0x33b67b;};'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(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'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 24c8ec9..5966400 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf083=['calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/agent/tickets/%s','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','inspect','outbound','recordingFormat','none','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','[OUTBOUND]','%s/channels/voice/agents/%d/tickets/%d/display.json','trigger:browser:url','replace','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','\x20Error\x20running\x20Zendesk\x20integration','lodash','md5','./util','../../../../config/environment','../../../../config/logger','zendesk','defaults','redis','localhost','socket.io-emitter','application/json','info','format','%s/tickets.json','remoteUri','POST','name','getString','Subjects','Descriptions','Fields','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','then','count','Agent\x20found!','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','username','password','token','Basic\x20%s','base64','[HTTP]','stringify','map','includes','string','picklist','type','customField','nameField','toLowerCase','content','toString','push','idField','variableName','custom_fields','customVariable','Variable','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','email','calleridname'];(function(_0xe893dc,_0x59c3c0){var _0x2bdbda=function(_0x1bb4e7){while(--_0x1bb4e7){_0xe893dc['push'](_0xe893dc['shift']());}};_0x2bdbda(++_0x59c3c0);}(_0xf083,0x8a));var _0x3f08=function(_0x40efc7,_0x51a013){_0x40efc7=_0x40efc7-0x0;var _0x5c9388=_0xf083[_0x40efc7];return _0x5c9388;};'use strict';var _=require(_0x3f08('0x0'));var rp=require('request-promise');var md5=require(_0x3f08('0x1'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0x3f08('0x2'));var config=require(_0x3f08('0x3'));var logger=require(_0x3f08('0x4'))(_0x3f08('0x5'));config['redis']=_[_0x3f08('0x6')](config[_0x3f08('0x7')],{'host':_0x3f08('0x8'),'port':0x18eb});var io=require(_0x3f08('0x9'))(new Redis(config[_0x3f08('0x7')]));function emit(_0x197a1a,_0x2dd858,_0x56c7f5){io['to'](_0x197a1a)['emit'](_0x2dd858,_0x56c7f5);}var headers={'Content-Type':_0x3f08('0xa'),'Accept':_0x3f08('0xa')};function getTicket(_0x15677f,_0xbac9a3,_0x1876eb,_0x2e7112,_0x2aff37){logger[_0x3f08('0xb')]('Creating\x20new\x20ticket...');return request({'uri':util[_0x3f08('0xc')](_0x3f08('0xd'),_0x15677f[_0x3f08('0xe')]),'method':_0x3f08('0xf'),'body':{'ticket':_['merge']({'requester_id':_0x1876eb['id'],'submitter_id':_0xbac9a3?_0xbac9a3['id']:undefined,'assignee_id':_0xbac9a3?_0xbac9a3['id']:undefined,'tags':getTags(_0x2e7112['Tags'],_0x3f08('0x10')),'subject':intUtil[_0x3f08('0x11')](_0x2e7112[_0x3f08('0x12')],_0x2aff37,'\x20'),'description':intUtil[_0x3f08('0x11')](_0x2e7112['Descriptions'],_0x2aff37,'\x0a'),'comment':{'public':![],'body':intUtil[_0x3f08('0x11')](_0x2e7112[_0x3f08('0x13')],_0x2aff37,'\x0a')}},getCustomFields(_0x2e7112[_0x3f08('0x14')],_0x2aff37))}})['then'](function(_0x59cb4b){logger[_0x3f08('0xb')](_0x3f08('0x15'));return _0x59cb4b[_0x3f08('0x16')];});}function getUser(_0x171415,_0x50112){if(intUtil[_0x3f08('0x17')](_0x50112)){logger[_0x3f08('0xb')](_0x3f08('0x18'),_0x50112);return request({'uri':util[_0x3f08('0xc')]('%s/search.json',_0x171415['remoteUri']),'qs':{'query':util[_0x3f08('0xc')]('type:user\x20role:agent\x20email:%s',_0x50112)}})[_0x3f08('0x19')](function(_0x38b208){if(_0x38b208[_0x3f08('0x1a')]){logger[_0x3f08('0xb')](_0x3f08('0x1b'));return _['find'](_0x38b208[_0x3f08('0x1c')],{'email':_0x50112,'role':_0x3f08('0x1d')});}else{logger[_0x3f08('0xb')](_0x3f08('0x1e'));return request({'uri':util['format']('%s/users/me.json',_0x171415[_0x3f08('0xe')])})['then'](function(_0x2d1772){logger[_0x3f08('0xb')](_0x3f08('0x1f'));return _0x2d1772['user'];});}});}else{logger[_0x3f08('0xb')](_0x3f08('0x1e'));return request({'uri':util[_0x3f08('0xc')]('%s/users/me.json',_0x171415[_0x3f08('0xe')])})[_0x3f08('0x19')](function(_0x236336){logger['info'](_0x3f08('0x1f'));return _0x236336[_0x3f08('0x20')];});}}function getEndUser(_0x4b0aa1,_0x2eb368,_0x429286){logger['info'](_0x3f08('0x21'),_0x429286);return request({'uri':util[_0x3f08('0xc')]('%s/search.json',_0x4b0aa1[_0x3f08('0xe')]),'qs':{'query':util[_0x3f08('0xc')]('type:user\x20role:end-user\x20phone:%s',_0x429286)}})[_0x3f08('0x19')](function(_0x39f6f3){var _0x37c43e;if(_0x39f6f3[_0x3f08('0x1c')][_0x3f08('0x22')]){_0x39f6f3['results']=_[_0x3f08('0x23')](_0x39f6f3['results'],{'suspended':![],'role':_0x3f08('0x24')});if(_0x39f6f3['results']['length']){_0x37c43e=_[_0x3f08('0x25')](_0x39f6f3['results']);}}if(_0x37c43e){logger[_0x3f08('0xb')](_0x3f08('0x26'));return _0x37c43e;}else{logger['info'](_0x3f08('0x27'));return request({'uri':util[_0x3f08('0xc')](_0x3f08('0x28'),_0x4b0aa1[_0x3f08('0xe')]),'method':'POST','body':{'user':{'role':'end-user','name':util[_0x3f08('0xc')](_0x3f08('0x29'),_0x2eb368||_0x429286),'phone':_0x429286}}})[_0x3f08('0x19')](function(_0x15ea9d){logger[_0x3f08('0xb')](_0x3f08('0x2a'));return _0x15ea9d['user'];});}});}function getAuth(_0x587b2a){var _0x15303c;if(_0x587b2a[_0x3f08('0x2b')]==='password'){_0x15303c=util['format']('%s:%s',_0x587b2a[_0x3f08('0x2c')],_0x587b2a[_0x3f08('0x2d')]);}else if(_0x587b2a[_0x3f08('0x2b')]===_0x3f08('0x2e')){_0x15303c=util[_0x3f08('0xc')]('%s/token:%s',_0x587b2a[_0x3f08('0x2c')],_0x587b2a[_0x3f08('0x2e')]);}return util[_0x3f08('0xc')](_0x3f08('0x2f'),new Buffer(_0x15303c)['toString'](_0x3f08('0x30')));}function request(_0x14d19a){logger['debug'](_0x3f08('0x31'),JSON[_0x3f08('0x32')](_0x14d19a));return rp(_[_0x3f08('0x6')](_0x14d19a,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x230338,_0x376157){var _0x1fe4e3=[];if(_0x230338&&_0x230338[_0x3f08('0x22')]>0x0){_0x1fe4e3=_[_0x3f08('0x33')](_0x230338,_0x376157);}return _0x1fe4e3;}function getCustomFields(_0x286524,_0x35e7f6){var _0x1e7fa2=[];var _0x3b512e={'custom_fields':[]};if(_0x286524[_0x3f08('0x22')]>0x0){_['forEach'](_0x286524,function(_0x24b347){if(_[_0x3f08('0x34')]([_0x3f08('0x35'),_0x3f08('0x36')],_0x24b347[_0x3f08('0x37')])&&_0x24b347['nameField']&&!_0x24b347[_0x3f08('0x38')]){_0x3b512e[_0x24b347[_0x3f08('0x39')][_0x3f08('0x3a')]()]=_0x24b347[_0x3f08('0x3b')][_0x3f08('0x3c')]();}else if(_[_0x3f08('0x34')]([_0x3f08('0x35'),_0x3f08('0x36')],_0x24b347[_0x3f08('0x37')])&&_0x24b347['idField']&&_0x24b347[_0x3f08('0x38')]){_0x3b512e['custom_fields'][_0x3f08('0x3d')]({'id':_0x24b347[_0x3f08('0x3e')],'value':_0x24b347[_0x3f08('0x3b')][_0x3f08('0x3c')]()});}else if(_0x24b347[_0x3f08('0x37')]==='variable'&&_0x24b347[_0x3f08('0x3f')]&&_0x24b347['idField']&&_0x24b347['customField']){_0x35e7f6[_0x24b347[_0x3f08('0x3f')]]&&_0x3b512e[_0x3f08('0x40')][_0x3f08('0x3d')]({'id':_0x24b347[_0x3f08('0x3e')],'value':_0x35e7f6[_0x24b347['variableName']]['toString']()});}else if(_0x24b347[_0x3f08('0x37')]===_0x3f08('0x41')&&_0x24b347['Variable']&&_0x24b347[_0x3f08('0x42')][_0x3f08('0x10')]&&_0x24b347['idField']&&_0x24b347[_0x3f08('0x38')]){_0x35e7f6[_0x24b347[_0x3f08('0x42')][_0x3f08('0x10')][_0x3f08('0x3a')]()]&&_0x3b512e['custom_fields'][_0x3f08('0x3d')]({'id':_0x24b347[_0x3f08('0x3e')],'value':_0x35e7f6[_0x24b347[_0x3f08('0x42')][_0x3f08('0x10')]['toLowerCase']()]['toString']()});}});}return _0x3b512e;}exports[_0x3f08('0x43')]=function(_0x14c38e,_0x393a6d,_0x2237be,_0x23c67d,_0x211bf6,_0x10c517){var _0xe08c14,_0x7ff933;_0x10c517[_0x3f08('0xe')]=intUtil['stripTrailingSlash'](_0x10c517[_0x3f08('0xe')]);_0x10c517[_0x3f08('0x44')]=intUtil[_0x3f08('0x45')](_0x10c517['serverUrl']);if(_0x211bf6&&_0x211bf6[_0x3f08('0x46')]){logger[_0x3f08('0xb')](_0x3f08('0x47'),_0x3f08('0x48'));_0x393a6d[_0x3f08('0x49')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x10c517[_0x3f08('0x44')],_0x393a6d['uniqueid'],md5(_0x393a6d[_0x3f08('0x4a')]));}else{_0x393a6d[_0x3f08('0x49')]='';}headers[_0x3f08('0x4b')]=getAuth(_0x10c517);return getUser(_0x10c517,_0x23c67d[_0x3f08('0x4c')])[_0x3f08('0x19')](function(_0x53c508){_0xe08c14=_0x53c508;logger[_0x3f08('0xb')]('The\x20User\x20ID\x20is:',_0xe08c14['id']);return getEndUser(_0x10c517,_0x393a6d[_0x3f08('0x4d')],_0x393a6d[_0x3f08('0x4e')]);})[_0x3f08('0x19')](function(_0x1dec94){_0x7ff933=_0x1dec94;logger[_0x3f08('0xb')](_0x3f08('0x4f'),_0x7ff933['id']);return getTicket(_0x10c517,_0xe08c14,_0x7ff933,_0x2237be,_0x393a6d);})['then'](function(_0x1b4cf5){if(_0x1b4cf5){logger[_0x3f08('0xb')]('The\x20Ticket\x20ID\x20is:',_0x1b4cf5['id']);switch(_0x10c517[_0x3f08('0x37')]){case _0x3f08('0x50'):logger['info'](_0x3f08('0x47'),_0x3f08('0x51'));return request({'uri':util[_0x3f08('0xc')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x10c517[_0x3f08('0xe')],_0xe08c14['id'],_0x1b4cf5['id']),'method':_0x3f08('0xf')});case _0x3f08('0x52'):logger['info'](_0x3f08('0x47'),_0x3f08('0x53'));emit(util[_0x3f08('0xc')](_0x3f08('0x54'),_0x23c67d[_0x3f08('0x10')]),'trigger:browser:url',{'uri':util[_0x3f08('0xc')](_0x3f08('0x55'),_0x10c517['remoteUri']['replace'](_0x3f08('0x56'),''),_0x1b4cf5['id'])});break;default:logger[_0x3f08('0x57')](_0x3f08('0x47'),_0x3f08('0x58'));}}})[_0x3f08('0x59')](function(_0x34d0e4){logger[_0x3f08('0x57')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0x3f08('0x5a')](_0x34d0e4,{'showHidden':!![],'depth':null}));});};exports[_0x3f08('0x5b')]=function(_0x541724,_0x1d627b,_0x460f58,_0x2df5c4,_0x5a2f8e,_0x5b3d71,_0x155002){var _0xc8833,_0x5acd7c;_0x5b3d71[_0x3f08('0xe')]=intUtil[_0x3f08('0x45')](_0x5b3d71[_0x3f08('0xe')]);_0x5b3d71['serverUrl']=intUtil[_0x3f08('0x45')](_0x5b3d71[_0x3f08('0x44')]);if(_0x155002&&_0x155002[_0x3f08('0x5c')]&&_0x155002[_0x3f08('0x5c')]!==_0x3f08('0x5d')){logger[_0x3f08('0xb')]('[OUTBOUND]',_0x3f08('0x48'));_0x1d627b[_0x3f08('0x49')]=util[_0x3f08('0xc')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5b3d71['serverUrl'],_0x1d627b[_0x3f08('0x4a')],md5(_0x1d627b['uniqueid']));}headers['Authorization']=getAuth(_0x5b3d71);return getUser(_0x5b3d71,_0x2df5c4[_0x3f08('0x4c')])[_0x3f08('0x19')](function(_0x52f270){_0xc8833=_0x52f270;logger[_0x3f08('0xb')]('The\x20User\x20ID\x20is:',_0xc8833['id']);return getEndUser(_0x5b3d71,_0x1d627b[_0x3f08('0x5e')],_0x1d627b[_0x3f08('0x5f')]);})['then'](function(_0x3d32a3){_0x5acd7c=_0x3d32a3;logger[_0x3f08('0xb')]('The\x20Enduser\x20ID\x20is:',_0x5acd7c['id']);return getTicket(_0x5b3d71,_0xc8833,_0x5acd7c,_0x460f58,_0x1d627b);})[_0x3f08('0x19')](function(_0x4552a6){if(_0x4552a6){logger[_0x3f08('0xb')](_0x3f08('0x60'),_0x4552a6['id']);switch(_0x5b3d71['type']){case _0x3f08('0x50'):logger['info'](_0x3f08('0x61'),_0x3f08('0x51'));return request({'uri':util[_0x3f08('0xc')](_0x3f08('0x62'),_0x5b3d71[_0x3f08('0xe')],_0xc8833['id'],_0x4552a6['id']),'method':_0x3f08('0xf')});case _0x3f08('0x52'):logger['info'](_0x3f08('0x61'),_0x3f08('0x53'));emit(util[_0x3f08('0xc')](_0x3f08('0x54'),_0x2df5c4[_0x3f08('0x10')]),_0x3f08('0x63'),{'uri':util['format'](_0x3f08('0x55'),_0x5b3d71[_0x3f08('0xe')][_0x3f08('0x64')](_0x3f08('0x56'),''),_0x4552a6['id'])});break;default:logger[_0x3f08('0x57')](_0x3f08('0x61'),_0x3f08('0x58'));}}})[_0x3f08('0x59')](function(_0x41e118){logger[_0x3f08('0x57')](_0x3f08('0x65'),util[_0x3f08('0x5a')](_0x41e118,{'showHidden':!![],'depth':null}));});};exports[_0x3f08('0x66')]=function(_0x5d75a5,_0x225e53,_0x23589b,_0x348c82,_0x25de23,_0x351a8c){var _0x4e8e51,_0x18ba09;_0x351a8c[_0x3f08('0xe')]=intUtil[_0x3f08('0x45')](_0x351a8c['remoteUri']);_0x351a8c['serverUrl']=intUtil['stripTrailingSlash'](_0x351a8c[_0x3f08('0x44')]);if(_0x25de23&&_0x25de23[_0x3f08('0x46')]){logger['info']('['+_0x225e53[_0x3f08('0x67')][_0x3f08('0x68')]()+']',_0x3f08('0x48'));_0x225e53[_0x3f08('0x49')]=util[_0x3f08('0xc')](_0x3f08('0x69'),_0x351a8c[_0x3f08('0x44')],_0x225e53[_0x3f08('0x4a')],md5(_0x225e53[_0x3f08('0x4a')]));}else{_0x225e53[_0x3f08('0x49')]='';}headers[_0x3f08('0x4b')]=getAuth(_0x351a8c);return getUser(_0x351a8c)[_0x3f08('0x19')](function(_0x2131e6){_0x4e8e51=_0x2131e6;logger['info'](_0x3f08('0x6a'),_0x4e8e51['id']);return getEndUser(_0x351a8c,_0x225e53['calleridname'],_0x225e53['calleridnum']);})[_0x3f08('0x19')](function(_0x247170){_0x18ba09=_0x247170;logger['info'](_0x3f08('0x4f'),_0x18ba09['id']);return getTicket(_0x351a8c,_0x4e8e51,_0x18ba09,_0x23589b,_0x225e53);})[_0x3f08('0x19')](function(_0x3806cc){if(_0x3806cc){logger[_0x3f08('0xb')](_0x3f08('0x60'),_0x3806cc['id']);}})[_0x3f08('0x59')](function(_0x3a2b5c){logger['error']('['+_0x225e53[_0x3f08('0x67')][_0x3f08('0x68')]()+']'+_0x3f08('0x6b'),util['inspect'](_0x3a2b5c,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x762b=['token','toString','base64','debug','stringify','GET','map','forEach','includes','string','picklist','type','customField','nameField','toLowerCase','content','idField','custom_fields','push','variable','variableName','customVariable','Variable','name','stripTrailingSlash','serverUrl','recordingURL','uniqueid','Authorization','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','%s/channels/voice/agents/%d/tickets/%d/display.json','user:%s','trigger:browser:url','%s/agent/tickets/%s','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','inspect','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','email','The\x20User\x20ID\x20is:','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','newTab','replace','unmanaged','monitor_format','lastevent','toUpperCase','calleridname','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','zendesk','defaults','localhost','socket.io-emitter','redis','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','getString','Subjects','Descriptions','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','Agent\x20found!','find','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','length','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username'];(function(_0x22cc16,_0x1f4fa2){var _0x399b70=function(_0x34d464){while(--_0x34d464){_0x22cc16['push'](_0x22cc16['shift']());}};_0x399b70(++_0x1f4fa2);}(_0x762b,0xac));var _0xb762=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x762b[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0xb762('0x0'));var rp=require(_0xb762('0x1'));var md5=require(_0xb762('0x2'));var util=require(_0xb762('0x3'));var Redis=require(_0xb762('0x4'));var intUtil=require(_0xb762('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb762('0x6'))(_0xb762('0x7'));config['redis']=_[_0xb762('0x8')](config['redis'],{'host':_0xb762('0x9'),'port':0x18eb});var io=require(_0xb762('0xa'))(new Redis(config[_0xb762('0xb')]));function emit(_0x175646,_0x4c2eb9,_0x322d1d){io['to'](_0x175646)['emit'](_0x4c2eb9,_0x322d1d);}var headers={'Content-Type':_0xb762('0xc'),'Accept':_0xb762('0xc')};function getTicket(_0xf0dde,_0x73d70,_0x17e7ee,_0x26c18f,_0x131ddf){logger[_0xb762('0xd')](_0xb762('0xe'));return request({'uri':util[_0xb762('0xf')](_0xb762('0x10'),_0xf0dde[_0xb762('0x11')]),'method':_0xb762('0x12'),'body':{'ticket':_[_0xb762('0x13')]({'requester_id':_0x17e7ee['id'],'submitter_id':_0x73d70?_0x73d70['id']:undefined,'assignee_id':_0x73d70?_0x73d70['id']:undefined,'tags':getTags(_0x26c18f['Tags'],'name'),'subject':intUtil[_0xb762('0x14')](_0x26c18f[_0xb762('0x15')],_0x131ddf,'\x20'),'description':intUtil[_0xb762('0x14')](_0x26c18f[_0xb762('0x16')],_0x131ddf,'\x0a'),'comment':{'public':![],'body':intUtil[_0xb762('0x14')](_0x26c18f[_0xb762('0x16')],_0x131ddf,'\x0a')}},getCustomFields(_0x26c18f['Fields'],_0x131ddf))}})[_0xb762('0x17')](function(_0x141e58){logger[_0xb762('0xd')](_0xb762('0x18'));return _0x141e58[_0xb762('0x19')];});}function getUser(_0x1826a3,_0x2199a4){if(intUtil[_0xb762('0x1a')](_0x2199a4)){logger[_0xb762('0xd')](_0xb762('0x1b'),_0x2199a4);return request({'uri':util[_0xb762('0xf')](_0xb762('0x1c'),_0x1826a3['remoteUri']),'qs':{'query':util['format']('type:user\x20role:agent\x20email:%s',_0x2199a4)}})[_0xb762('0x17')](function(_0x8e268d){if(_0x8e268d['count']){logger[_0xb762('0xd')](_0xb762('0x1d'));return _[_0xb762('0x1e')](_0x8e268d[_0xb762('0x1f')],{'email':_0x2199a4,'role':_0xb762('0x20')});}else{logger['info'](_0xb762('0x21'));return request({'uri':util[_0xb762('0xf')](_0xb762('0x22'),_0x1826a3[_0xb762('0x11')])})[_0xb762('0x17')](function(_0x584239){logger[_0xb762('0xd')](_0xb762('0x23'));return _0x584239['user'];});}});}else{logger[_0xb762('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xb762('0xf')](_0xb762('0x22'),_0x1826a3[_0xb762('0x11')])})[_0xb762('0x17')](function(_0x23029e){logger[_0xb762('0xd')]('Admin\x20account\x20selected.');return _0x23029e[_0xb762('0x24')];});}}function getEndUser(_0x11ca3d,_0x2ddd28,_0x2980ad){logger[_0xb762('0xd')](_0xb762('0x25'),_0x2980ad);return request({'uri':util[_0xb762('0xf')](_0xb762('0x1c'),_0x11ca3d[_0xb762('0x11')]),'qs':{'query':util[_0xb762('0xf')](_0xb762('0x26'),_0x2980ad)}})[_0xb762('0x17')](function(_0x349534){var _0x2279d3;if(_0x349534[_0xb762('0x1f')]['length']){_0x349534[_0xb762('0x1f')]=_[_0xb762('0x27')](_0x349534[_0xb762('0x1f')],{'suspended':![],'role':'end-user'});if(_0x349534[_0xb762('0x1f')][_0xb762('0x28')]){_0x2279d3=_[_0xb762('0x29')](_0x349534[_0xb762('0x1f')]);}}if(_0x2279d3){logger['info'](_0xb762('0x2a'));return _0x2279d3;}else{logger[_0xb762('0xd')](_0xb762('0x2b'));return request({'uri':util['format']('%s/users.json',_0x11ca3d[_0xb762('0x11')]),'method':_0xb762('0x12'),'body':{'user':{'role':'end-user','name':util['format'](_0xb762('0x2c'),_0x2ddd28||_0x2980ad),'phone':_0x2980ad}}})[_0xb762('0x17')](function(_0x3b7935){logger[_0xb762('0xd')](_0xb762('0x2d'));return _0x3b7935[_0xb762('0x24')];});}});}function getAuth(_0x5f2dc0){var _0x2e9056;if(_0x5f2dc0[_0xb762('0x2e')]===_0xb762('0x2f')){_0x2e9056=util[_0xb762('0xf')](_0xb762('0x30'),_0x5f2dc0['username'],_0x5f2dc0[_0xb762('0x2f')]);}else if(_0x5f2dc0[_0xb762('0x2e')]==='token'){_0x2e9056=util['format']('%s/token:%s',_0x5f2dc0[_0xb762('0x31')],_0x5f2dc0[_0xb762('0x32')]);}return util[_0xb762('0xf')]('Basic\x20%s',new Buffer(_0x2e9056)[_0xb762('0x33')](_0xb762('0x34')));}function request(_0x5ef234){logger[_0xb762('0x35')]('[HTTP]',JSON[_0xb762('0x36')](_0x5ef234));return rp(_[_0xb762('0x8')](_0x5ef234,{'method':_0xb762('0x37'),'headers':headers,'json':!![]}));}function getTags(_0x39d2da,_0x597453){var _0x538f2e=[];if(_0x39d2da&&_0x39d2da[_0xb762('0x28')]>0x0){_0x538f2e=_[_0xb762('0x38')](_0x39d2da,_0x597453);}return _0x538f2e;}function getCustomFields(_0x215a5c,_0x23f72c){var _0x360058=[];var _0xd1e3f5={'custom_fields':[]};if(_0x215a5c['length']>0x0){_[_0xb762('0x39')](_0x215a5c,function(_0x28e44f){if(_[_0xb762('0x3a')]([_0xb762('0x3b'),_0xb762('0x3c')],_0x28e44f[_0xb762('0x3d')])&&_0x28e44f['nameField']&&!_0x28e44f[_0xb762('0x3e')]){_0xd1e3f5[_0x28e44f[_0xb762('0x3f')][_0xb762('0x40')]()]=_0x28e44f[_0xb762('0x41')]['toString']();}else if(_['includes']([_0xb762('0x3b'),_0xb762('0x3c')],_0x28e44f['type'])&&_0x28e44f[_0xb762('0x42')]&&_0x28e44f[_0xb762('0x3e')]){_0xd1e3f5[_0xb762('0x43')][_0xb762('0x44')]({'id':_0x28e44f[_0xb762('0x42')],'value':_0x28e44f[_0xb762('0x41')][_0xb762('0x33')]()});}else if(_0x28e44f[_0xb762('0x3d')]===_0xb762('0x45')&&_0x28e44f[_0xb762('0x46')]&&_0x28e44f['idField']&&_0x28e44f[_0xb762('0x3e')]){_0x23f72c[_0x28e44f['variableName']]&&_0xd1e3f5[_0xb762('0x43')][_0xb762('0x44')]({'id':_0x28e44f[_0xb762('0x42')],'value':_0x23f72c[_0x28e44f['variableName']]['toString']()});}else if(_0x28e44f['type']===_0xb762('0x47')&&_0x28e44f[_0xb762('0x48')]&&_0x28e44f[_0xb762('0x48')][_0xb762('0x49')]&&_0x28e44f[_0xb762('0x42')]&&_0x28e44f[_0xb762('0x3e')]){_0x23f72c[_0x28e44f[_0xb762('0x48')]['name'][_0xb762('0x40')]()]&&_0xd1e3f5['custom_fields'][_0xb762('0x44')]({'id':_0x28e44f[_0xb762('0x42')],'value':_0x23f72c[_0x28e44f[_0xb762('0x48')][_0xb762('0x49')][_0xb762('0x40')]()][_0xb762('0x33')]()});}});}return _0xd1e3f5;}exports['queue']=function(_0x2e0b37,_0x30bc4b,_0x421939,_0xe961d0,_0x3d5c3b,_0x2503f4){var _0x54268e,_0x4901d8;_0x2503f4['remoteUri']=intUtil[_0xb762('0x4a')](_0x2503f4[_0xb762('0x11')]);_0x2503f4[_0xb762('0x4b')]=intUtil[_0xb762('0x4a')](_0x2503f4[_0xb762('0x4b')]);if(_0x3d5c3b&&_0x3d5c3b['monitor_format']){logger[_0xb762('0xd')]('[QUEUE]','Recording\x20is\x20enabled!');_0x30bc4b[_0xb762('0x4c')]=util[_0xb762('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2503f4[_0xb762('0x4b')],_0x30bc4b['uniqueid'],md5(_0x30bc4b[_0xb762('0x4d')]));}else{_0x30bc4b['recordingURL']='';}headers[_0xb762('0x4e')]=getAuth(_0x2503f4);return getUser(_0x2503f4,_0xe961d0['email'])['then'](function(_0x5dca24){_0x54268e=_0x5dca24;logger[_0xb762('0xd')]('The\x20User\x20ID\x20is:',_0x54268e['id']);return getEndUser(_0x2503f4,_0x30bc4b['calleridname'],_0x30bc4b[_0xb762('0x4f')]);})[_0xb762('0x17')](function(_0xf5f787){_0x4901d8=_0xf5f787;logger[_0xb762('0xd')](_0xb762('0x50'),_0x4901d8['id']);return getTicket(_0x2503f4,_0x54268e,_0x4901d8,_0x421939,_0x30bc4b);})['then'](function(_0x2fc9db){if(_0x2fc9db){logger[_0xb762('0xd')](_0xb762('0x51'),_0x2fc9db['id']);switch(_0x2503f4[_0xb762('0x3d')]){case _0xb762('0x52'):logger[_0xb762('0xd')](_0xb762('0x53'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xb762('0xf')](_0xb762('0x54'),_0x2503f4[_0xb762('0x11')],_0x54268e['id'],_0x2fc9db['id']),'method':_0xb762('0x12')});case'newTab':logger['info'](_0xb762('0x53'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb762('0xf')](_0xb762('0x55'),_0xe961d0[_0xb762('0x49')]),_0xb762('0x56'),{'uri':util[_0xb762('0xf')](_0xb762('0x57'),_0x2503f4[_0xb762('0x11')]['replace'](_0xb762('0x58'),''),_0x2fc9db['id'])});break;default:logger[_0xb762('0x59')]('[QUEUE]',_0xb762('0x5a'));}}})[_0xb762('0x5b')](function(_0x3fb674){logger[_0xb762('0x59')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0xb762('0x5c')](_0x3fb674,{'showHidden':!![],'depth':null}));});};exports[_0xb762('0x5d')]=function(_0x10f6f2,_0x377756,_0x3ba0dc,_0x160e16,_0x37e50c,_0xcc116e,_0x45292d){var _0x964796,_0x35036e;_0xcc116e[_0xb762('0x11')]=intUtil[_0xb762('0x4a')](_0xcc116e[_0xb762('0x11')]);_0xcc116e[_0xb762('0x4b')]=intUtil['stripTrailingSlash'](_0xcc116e[_0xb762('0x4b')]);if(_0x45292d&&_0x45292d[_0xb762('0x5e')]&&_0x45292d[_0xb762('0x5e')]!==_0xb762('0x5f')){logger[_0xb762('0xd')](_0xb762('0x60'),_0xb762('0x61'));_0x377756['recordingURL']=util['format'](_0xb762('0x62'),_0xcc116e['serverUrl'],_0x377756[_0xb762('0x4d')],md5(_0x377756['uniqueid']));}headers[_0xb762('0x4e')]=getAuth(_0xcc116e);return getUser(_0xcc116e,_0x160e16[_0xb762('0x63')])['then'](function(_0x41b885){_0x964796=_0x41b885;logger[_0xb762('0xd')](_0xb762('0x64'),_0x964796['id']);return getEndUser(_0xcc116e,_0x377756['destcalleridname'],_0x377756[_0xb762('0x65')]);})[_0xb762('0x17')](function(_0x509cb3){_0x35036e=_0x509cb3;logger['info'](_0xb762('0x50'),_0x35036e['id']);return getTicket(_0xcc116e,_0x964796,_0x35036e,_0x3ba0dc,_0x377756);})[_0xb762('0x17')](function(_0x52fd53){if(_0x52fd53){logger[_0xb762('0xd')](_0xb762('0x51'),_0x52fd53['id']);switch(_0xcc116e['type']){case'integrationTab':logger[_0xb762('0xd')](_0xb762('0x60'),_0xb762('0x66'));return request({'uri':util['format'](_0xb762('0x54'),_0xcc116e[_0xb762('0x11')],_0x964796['id'],_0x52fd53['id']),'method':_0xb762('0x12')});case _0xb762('0x67'):logger['info'](_0xb762('0x60'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0xb762('0x55'),_0x160e16[_0xb762('0x49')]),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0xcc116e[_0xb762('0x11')][_0xb762('0x68')](_0xb762('0x58'),''),_0x52fd53['id'])});break;default:logger[_0xb762('0x59')](_0xb762('0x60'),_0xb762('0x5a'));}}})[_0xb762('0x5b')](function(_0x9f8af9){logger[_0xb762('0x59')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0xb762('0x5c')](_0x9f8af9,{'showHidden':!![],'depth':null}));});};exports[_0xb762('0x69')]=function(_0x5cddca,_0x243c41,_0x5e2480,_0x297a45,_0x51b48e,_0x48617e){var _0x352e97,_0x3fd4c7;_0x48617e[_0xb762('0x11')]=intUtil[_0xb762('0x4a')](_0x48617e['remoteUri']);_0x48617e['serverUrl']=intUtil[_0xb762('0x4a')](_0x48617e[_0xb762('0x4b')]);if(_0x51b48e&&_0x51b48e[_0xb762('0x6a')]){logger[_0xb762('0xd')]('['+_0x243c41[_0xb762('0x6b')][_0xb762('0x6c')]()+']',_0xb762('0x61'));_0x243c41[_0xb762('0x4c')]=util['format'](_0xb762('0x62'),_0x48617e[_0xb762('0x4b')],_0x243c41[_0xb762('0x4d')],md5(_0x243c41['uniqueid']));}else{_0x243c41[_0xb762('0x4c')]='';}headers[_0xb762('0x4e')]=getAuth(_0x48617e);return getUser(_0x48617e)[_0xb762('0x17')](function(_0x5b20cd){_0x352e97=_0x5b20cd;logger[_0xb762('0xd')](_0xb762('0x64'),_0x352e97['id']);return getEndUser(_0x48617e,_0x243c41[_0xb762('0x6d')],_0x243c41[_0xb762('0x4f')]);})[_0xb762('0x17')](function(_0x24d6da){_0x3fd4c7=_0x24d6da;logger[_0xb762('0xd')](_0xb762('0x50'),_0x3fd4c7['id']);return getTicket(_0x48617e,_0x352e97,_0x3fd4c7,_0x5e2480,_0x243c41);})[_0xb762('0x17')](function(_0x8687b1){if(_0x8687b1){logger[_0xb762('0xd')](_0xb762('0x51'),_0x8687b1['id']);}})[_0xb762('0x5b')](function(_0x4808f5){logger[_0xb762('0x59')]('['+_0x243c41[_0xb762('0x6b')][_0xb762('0x6c')]()+']'+_0xb762('0x6e'),util[_0xb762('0x5c')](_0x4808f5,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 92bc736..11632bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5d3=['https://accounts.zoho.eu','/oauth/v2/token','refreshToken','then','add','seconds','catch','Failing\x20creating\x20the\x20access_token','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','Agent\x20found!','info','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','error','data','enduserType','POST','https://www.zohoapis.','/crm/v2/','moduleCreate','role','first_name','last_name','code','SUCCESS','startCase','Error:\x20','log','CREATE\x20ERROR','contact_lead','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','uri','Leads','nothing','/crm/v2/Leads/search?criteria=((Phone:equals:','Creating\x20new\x20call...','Owner','administrator','Subject','getString','Subjects','Description','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','Call_Duration','utc','mm:ss','answertime','endtime','diff','starttime','lastevent','called','Call_Result','Called','connect','Answered','abandoned','Abandoned','timeout','Timeout','Call_Start_Time','outbound','YYYY-MM-DDTHH:mm:ss','Call_Type','Inbound','Fields','/crm/v2/Calls','Call\x20created!','details','err','stack','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','/downloads?type=uniqueid&token=','destcalleridnum','Outbound','[OUTBOUND]','user:%s','trigger:browser:url','unmanaged','toUpperCase','lodash','request-promise','md5','./util','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','debug','[HTTP]','stringify','length','forEach','string','picklist','type','idField','toString','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','isBefore','expires_in','access_token','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn'];(function(_0x5eb71b,_0x387c73){var _0x4d3ccb=function(_0x1385f9){while(--_0x1385f9){_0x5eb71b['push'](_0x5eb71b['shift']());}};_0x4d3ccb(++_0x387c73);}(_0xd5d3,0x113));var _0x3d5d=function(_0x5302d4,_0x4afe3d){_0x5302d4=_0x5302d4-0x0;var _0x446549=_0xd5d3[_0x5302d4];return _0x446549;};'use strict';var _=require(_0x3d5d('0x0'));var rp=require(_0x3d5d('0x1'));var md5=require(_0x3d5d('0x2'));var util=require('util');var intUtil=require(_0x3d5d('0x3'));var moment=require(_0x3d5d('0x4'));var Redis=require(_0x3d5d('0x5'));var BPromise=require(_0x3d5d('0x6'));var config=require(_0x3d5d('0x7'));var logger=require(_0x3d5d('0x8'))('zoho');config[_0x3d5d('0x9')]=_[_0x3d5d('0xa')](config[_0x3d5d('0x9')],{'host':_0x3d5d('0xb'),'port':0x18eb});var io=require(_0x3d5d('0xc'))(new Redis(config[_0x3d5d('0x9')]));function emit(_0x211934,_0x294573,_0x526cf6){io['to'](_0x211934)['emit'](_0x294573,_0x526cf6);}function request(_0x1c6a4c){logger[_0x3d5d('0xd')](_0x3d5d('0xe'),JSON[_0x3d5d('0xf')](_0x1c6a4c));return rp(_0x1c6a4c);}function getCustomFields(_0xf4e6b5,_0x6467f6){var _0x5d5492={};if(_0xf4e6b5[_0x3d5d('0x10')]>0x0){_[_0x3d5d('0x11')](_0xf4e6b5,function(_0x338742){if(_['includes']([_0x3d5d('0x12'),_0x3d5d('0x13')],_0x338742[_0x3d5d('0x14')])&&_0x338742[_0x3d5d('0x15')]){_0x5d5492[_0x338742[_0x3d5d('0x15')]]=_0x338742['content'][_0x3d5d('0x16')]();}else if(_0x338742['type']==='variable'&&_0x338742[_0x3d5d('0x17')]&&_0x338742[_0x3d5d('0x15')]&&_0x6467f6[_0x338742[_0x3d5d('0x17')]]){_0x5d5492[_0x338742[_0x3d5d('0x15')]]=_0x6467f6[_0x338742[_0x3d5d('0x17')]][_0x3d5d('0x16')]();}else if(_0x338742['type']===_0x3d5d('0x18')&&_0x338742[_0x3d5d('0x19')]&&_0x338742[_0x3d5d('0x19')][_0x3d5d('0x1a')]&&_0x338742[_0x3d5d('0x15')]&&_0x6467f6[_0x338742[_0x3d5d('0x19')][_0x3d5d('0x1a')][_0x3d5d('0x1b')]()]){_0x5d5492[_0x338742[_0x3d5d('0x15')]]=_0x6467f6[_0x338742[_0x3d5d('0x19')]['name']['toLowerCase']()][_0x3d5d('0x16')]();}});}return _0x5d5492;}function getName(_0x16d697){if(_0x16d697[_0x3d5d('0x1c')]('\x20')>0x0){var _0xc26cde=_0x16d697[_0x3d5d('0x1d')](/ (.+)/);if(_0xc26cde[0x1]){return _0xc26cde;}}return[_0x16d697,_0x16d697];}var accountsTokens={};function getAccessToken(_0x4c0863){return new Promise(function(_0x2ccafe,_0x513bf4){if(!_[_0x3d5d('0x1e')](accountsTokens[_0x4c0863['id']])&&!_[_0x3d5d('0x1e')](accountsTokens[_0x4c0863['id']]['access_token'])){if(moment()[_0x3d5d('0x1f')](accountsTokens[_0x4c0863['id']][_0x3d5d('0x20')])){_0x2ccafe(accountsTokens[_0x4c0863['id']][_0x3d5d('0x21')]);}}var _0x34ca56;switch(_0x4c0863[_0x3d5d('0x22')]){case'US':_0x34ca56=_0x3d5d('0x23');break;case'AU':_0x34ca56=_0x3d5d('0x24');break;case'EU':_0x34ca56='https://accounts.zoho.eu';break;case'IN':_0x34ca56=_0x3d5d('0x25');break;case'CN':_0x34ca56=_0x3d5d('0x26');break;default:_0x34ca56=_0x3d5d('0x27');break;}var _0x29f764={'method':'POST','uri':_0x34ca56+_0x3d5d('0x28'),'qs':{'refresh_token':_0x4c0863[_0x3d5d('0x29')],'client_id':_0x4c0863['clientId'],'client_secret':_0x4c0863['clientSecret'],'grant_type':'refresh_token'},'json':!![]};return rp(_0x29f764)[_0x3d5d('0x2a')](function(_0x1ae781){accountsTokens[_0x4c0863['id']]={'access_token':_0x1ae781['access_token'],'expires_in':moment()[_0x3d5d('0x2b')](_0x1ae781['expires_in'],_0x3d5d('0x2c'))};_0x2ccafe(_0x1ae781[_0x3d5d('0x21')]);})[_0x3d5d('0x2d')](function(_0x52c56b){logger['error'](_0x3d5d('0x2e'),_0x52c56b['stack']);_0x513bf4(_0x52c56b);});});}function getUser(_0x21ace8,_0x101502,_0x3dd8d4,_0x12ecf2){logger['info'](_0x3d5d('0x2f'));return request({'method':_0x3d5d('0x30'),'uri':util[_0x3d5d('0x31')](_0x3d5d('0x32'),_0x101502),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':_0x3d5d('0x33')+_0x21ace8},'json':!![]})[_0x3d5d('0x2a')](function(_0x443542){if(_0x443542[_0x3d5d('0x34')]){var _0x61b7c7=-0x1;if(_[_0x3d5d('0x35')](_0x443542[_0x3d5d('0x34')])){if(!_['isNil'](_0x12ecf2)){_0x61b7c7=_[_0x3d5d('0x36')](_0x443542[_0x3d5d('0x34')],function(_0x4cdc21){return _0x4cdc21[_0x3d5d('0x37')]===_0x12ecf2;});}if(_0x61b7c7>=0x0){logger['info'](_0x3d5d('0x38'));}else{logger[_0x3d5d('0x39')](_0x3d5d('0x3a'));_0x61b7c7=_[_0x3d5d('0x36')](_0x443542[_0x3d5d('0x34')],function(_0x267427){return _0x267427[_0x3d5d('0x3b')][_0x3d5d('0x1a')]===_0x3d5d('0x3c');});}return _0x443542[_0x3d5d('0x34')][_0x61b7c7];}else{if(_0x443542[_0x3d5d('0x3d')][_0x3d5d('0x3b')]['name']===_0x3d5d('0x3c')){logger[_0x3d5d('0x39')](_0x3d5d('0x3a'));user=_0x443542[_0x3d5d('0x3d')];return user;}else{logger['error'](_0x3d5d('0x3e'),JSON['stringify'](_0x443542));throw new Error(_0x3d5d('0x3f')+JSON[_0x3d5d('0xf')](_0x443542));}}}else{logger[_0x3d5d('0x40')](_0x3d5d('0x3e'),JSON['stringify'](_0x443542));throw new Error(_0x3d5d('0x3f')+JSON[_0x3d5d('0xf')](_0x443542));}})[_0x3d5d('0x2d')](function(_0x49a035){console[_0x3d5d('0x40')](_0x49a035);});}function getZohoUser(_0x4d93bd,_0x6a60f1){return new BPromise(function(_0x34c885,_0x2e4d99){request(_0x4d93bd)[_0x3d5d('0x2a')](function(_0xa2ec75){var _0x1f96d3=null;if(_0xa2ec75){_0x1f96d3=_0xa2ec75[_0x3d5d('0x41')][0x0];_0x1f96d3[_0x3d5d('0x42')]=_0x6a60f1;}_0x34c885(_0x1f96d3);})[_0x3d5d('0x2d')](function(_0x38c78a){_0x2e4d99(_0x38c78a);});});}function createEndUser(_0x272f80,_0x2774b4,_0x10e701,_0x2ade92,_0x1b0424,_0x2414c5){var _0x10e701=getName(_0x10e701);return request({'method':_0x3d5d('0x43'),'uri':_0x3d5d('0x44')+_0x2774b4+_0x3d5d('0x45')+_['startCase'](_0x2414c5[_0x3d5d('0x46')])+'s','body':{'data':[{'Last_Name':_0x10e701[0x1],'First_Name':_0x10e701[0x0],'Phone':_0x2ade92,'Owner':{'name':!_['isNil'](_0x1b0424[_0x3d5d('0x47')][_0x3d5d('0x1a')])?_0x1b0424[_0x3d5d('0x47')]['name']:!_[_0x3d5d('0x1e')](_0x1b0424['first_name'])?_0x1b0424[_0x3d5d('0x48')]+'\x20'+_0x1b0424[_0x3d5d('0x49')]:_0x1b0424[_0x3d5d('0x49')],'id':_0x1b0424['id']}}]},'headers':{'Authorization':_0x3d5d('0x33')+_0x272f80},'json':!![]})[_0x3d5d('0x2a')](function(_0x13352d){if(_0x13352d&&_0x13352d[_0x3d5d('0x41')][0x0][_0x3d5d('0x4a')]===_0x3d5d('0x4b')){var _0x89d258=_0x13352d['data'][0x0]['details'];_0x89d258[_0x3d5d('0x42')]=_[_0x3d5d('0x4c')](_0x2414c5[_0x3d5d('0x46')])+'s';return _0x89d258;}logger[_0x3d5d('0x40')](_0x3d5d('0x3e'),JSON[_0x3d5d('0xf')](data));throw new Error(_0x3d5d('0x4d')+JSON[_0x3d5d('0xf')](data));})[_0x3d5d('0x2d')](function(_0x597f93){console[_0x3d5d('0x4e')](_0x3d5d('0x4f'),_0x597f93);});}function getEndUser(_0x238ef7,_0x42138c,_0x5e6820,_0x5c27cd,_0xf17dd9,_0x4dedd0,_0x4ea4ae){var _0x2613dd={'method':'GET','uri':'','headers':{'Authorization':_0x3d5d('0x33')+_0x238ef7},'json':!![]};switch(_0x4ea4ae['moduleSearch']){case _0x3d5d('0x50'):_0x2613dd['uri']=_0x3d5d('0x44')+_0x42138c+_0x3d5d('0x51')+_0xf17dd9+'))';return getZohoUser(_0x2613dd,_0x3d5d('0x52'))[_0x3d5d('0x2a')](function(_0x4c3e87){if(_0x4c3e87)return _0x4c3e87;_0x2613dd[_0x3d5d('0x53')]=_0x3d5d('0x44')+_0x42138c+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0xf17dd9+'))';return getZohoUser(_0x2613dd,_0x3d5d('0x54'))[_0x3d5d('0x2a')](function(_0x461ddf){if(_0x461ddf)return _0x461ddf;if(_0x4ea4ae[_0x3d5d('0x46')]!=_0x3d5d('0x55')){return createEndUser(_0x238ef7,_0x42138c,_0x5c27cd,_0xf17dd9,_0x4dedd0,_0x4ea4ae);}else{return{};}});});break;case'contact':_0x2613dd['uri']=_0x3d5d('0x44')+_0x42138c+_0x3d5d('0x51')+_0xf17dd9+'))';return getZohoUser(_0x2613dd,_0x3d5d('0x52'))[_0x3d5d('0x2a')](function(_0x1e8563){if(_0x1e8563)return _0x1e8563;if(_0x4ea4ae[_0x3d5d('0x46')]!='nothing'){return createEndUser(_0x238ef7,_0x42138c,_0x5c27cd,_0xf17dd9,_0x4dedd0,_0x4ea4ae);}else{return{};}});break;case'lead':_0x2613dd[_0x3d5d('0x53')]=_0x3d5d('0x44')+_0x42138c+_0x3d5d('0x56')+_0xf17dd9+'))';return getZohoUser(_0x2613dd,_0x3d5d('0x54'))[_0x3d5d('0x2a')](function(_0x3c0c4a){if(_0x3c0c4a)return _0x3c0c4a;if(_0x4ea4ae['moduleCreate']!=_0x3d5d('0x55')){return createEndUser(_0x238ef7,_0x42138c,_0x5c27cd,_0xf17dd9,_0x4dedd0,_0x4ea4ae);}else{return{};}});break;}}function getCall(_0x320b16,_0x23daec,_0x5af929,_0x2cd011,_0x26b623,_0x225e64,_0xaaa0fc,_0x35dadb){logger[_0x3d5d('0x39')](_0x3d5d('0x57'));var _0x5bb81a={};_0x5bb81a[_0x3d5d('0x58')]={'name':!_[_0x3d5d('0x1e')](_0x2cd011[_0x3d5d('0x47')][_0x3d5d('0x1a')])&&!_[_0x3d5d('0x1e')](_0x2cd011[_0x3d5d('0x3b')][_0x3d5d('0x1a')])&&_0x2cd011[_0x3d5d('0x3b')]['name']===_0x3d5d('0x59')?_0x2cd011[_0x3d5d('0x47')][_0x3d5d('0x1a')]:!_[_0x3d5d('0x1e')](_0x2cd011[_0x3d5d('0x48')])?_0x2cd011[_0x3d5d('0x48')]+'\x20'+_0x2cd011[_0x3d5d('0x49')]:_0x2cd011[_0x3d5d('0x49')],'id':_0x2cd011['id']};_0x5bb81a[_0x3d5d('0x5a')]=intUtil[_0x3d5d('0x5b')](_0x225e64[_0x3d5d('0x5c')],_0xaaa0fc,'\x20');_0x5bb81a[_0x3d5d('0x5d')]=intUtil[_0x3d5d('0x5b')](_0x225e64['Descriptions'],_0xaaa0fc,'\x0a');if(_0x26b623[_0x3d5d('0x42')]===_0x3d5d('0x52')){_0x5bb81a[_0x3d5d('0x5e')]={'name':!_[_0x3d5d('0x1e')](_0x26b623[_0x3d5d('0x5f')])?_0x26b623['Full_Name']:!_[_0x3d5d('0x1e')](_0x26b623[_0x3d5d('0x60')])?_0x26b623['First_Name']+'\x20'+_0x26b623['Last_Name']:_0x26b623[_0x3d5d('0x61')],'id':_0x26b623['id']};}if(_0x26b623[_0x3d5d('0x42')]===_0x3d5d('0x54')){_0x5bb81a[_0x3d5d('0x62')]={'name':!_['isNil'](_0x26b623[_0x3d5d('0x5f')])?_0x26b623[_0x3d5d('0x5f')]:!_[_0x3d5d('0x1e')](_0x26b623['First_Name'])?_0x26b623[_0x3d5d('0x60')]+'\x20'+_0x26b623[_0x3d5d('0x61')]:_0x26b623[_0x3d5d('0x61')],'id':_0x26b623['id']};_0x5bb81a[_0x3d5d('0x63')]=_['startCase'](_0x26b623[_0x3d5d('0x42')]);}if(_0xaaa0fc[_0x3d5d('0x64')]){_0x5bb81a[_0x3d5d('0x65')]=moment[_0x3d5d('0x66')](parseInt(_0xaaa0fc[_0x3d5d('0x64')])*0x3e8)[_0x3d5d('0x31')](_0x3d5d('0x67'));}else if(_0xaaa0fc[_0x3d5d('0x68')]&&_0xaaa0fc['endtime']){_0x5bb81a[_0x3d5d('0x65')]=moment[_0x3d5d('0x66')](moment(_0xaaa0fc[_0x3d5d('0x69')],'YYYY-MM-DDTHH:mm:ss')[_0x3d5d('0x6a')](moment(_0xaaa0fc[_0x3d5d('0x6b')],'YYYY-MM-DDTHH:mm:ss')))[_0x3d5d('0x31')]('mm:ss');}switch(_0xaaa0fc[_0x3d5d('0x6c')]){case _0x3d5d('0x6d'):_0x5bb81a[_0x3d5d('0x6e')]=_0x3d5d('0x6f');break;case'complete':case _0x3d5d('0x70'):_0x5bb81a['Call_Result']=_0x3d5d('0x71');break;case'rejected':_0x5bb81a[_0x3d5d('0x6e')]='Rejected';break;case _0x3d5d('0x72'):_0x5bb81a[_0x3d5d('0x6e')]=_0x3d5d('0x73');break;case _0x3d5d('0x74'):_0x5bb81a[_0x3d5d('0x6e')]=_0x3d5d('0x75');default:}_0x5bb81a[_0x3d5d('0x76')]=(_0x35dadb===_0x3d5d('0x77')?moment(_0xaaa0fc['starttime'])['format'](_0x3d5d('0x78')):moment(_0xaaa0fc['agentcalledAt'])[_0x3d5d('0x31')](_0x3d5d('0x78')))||moment()[_0x3d5d('0x31')]('YYYY-MM-DDTHH:mm:ss');_0x5bb81a[_0x3d5d('0x79')]=_0x35dadb||_0x3d5d('0x7a');_0x5bb81a=_['merge'](_0x5bb81a,getCustomFields(_0x225e64[_0x3d5d('0x7b')],_0xaaa0fc));return request({'method':_0x3d5d('0x43'),'uri':_0x3d5d('0x44')+_0x23daec+_0x3d5d('0x7c'),'headers':{'Authorization':_0x3d5d('0x33')+_0x320b16},'body':{'data':[_0x5bb81a]},'json':!![]})[_0x3d5d('0x2a')](function(_0x391ea3){if(_0x391ea3&&_0x391ea3[_0x3d5d('0x41')][0x0][_0x3d5d('0x4a')]==='SUCCESS'){logger[_0x3d5d('0x39')](_0x3d5d('0x7d'));return{'id':_0x391ea3[_0x3d5d('0x41')][0x0][_0x3d5d('0x7e')]['id']};}})[_0x3d5d('0x2d')](function(_0x529124){logger['info'](_0x3d5d('0x7f'),_0x529124[_0x3d5d('0x80')]);console[_0x3d5d('0x4e')](_0x3d5d('0x7f'),_0x529124);});}exports[_0x3d5d('0x81')]=function(_0x33192e,_0x37859f,_0x354f09,_0x515f9b,_0x2aca81,_0x55adff){var _0x57f5a4,_0x5879b4,_0x4acf31;_0x55adff[_0x3d5d('0x82')]=intUtil[_0x3d5d('0x83')](_0x55adff[_0x3d5d('0x82')]);_0x55adff[_0x3d5d('0x84')]=intUtil[_0x3d5d('0x83')](_0x55adff[_0x3d5d('0x84')]);if(_0x2aca81&&_0x2aca81[_0x3d5d('0x85')]){logger[_0x3d5d('0x39')](_0x3d5d('0x86'),_0x3d5d('0x87'));_0x37859f[_0x3d5d('0x88')]=_0x55adff[_0x3d5d('0x84')]+_0x3d5d('0x89')+_0x37859f[_0x3d5d('0x8a')]+'/downloads?type=uniqueid&token='+md5(_0x37859f[_0x3d5d('0x8a')]);}else{_0x37859f[_0x3d5d('0x88')]='';}var _0x5682fb=_0x55adff[_0x3d5d('0x82')]===_0x3d5d('0x8b')?'eu':_0x3d5d('0x8c');return getAccessToken(_0x55adff)[_0x3d5d('0x2a')](function(_0xe84c6b){_0x4acf31=_0xe84c6b;return getUser(_0x4acf31,_0x5682fb,_0x55adff,_0x515f9b[_0x3d5d('0x37')]);})['then'](function(_0x4c0bd5){_0x57f5a4=_0x4c0bd5;logger[_0x3d5d('0x39')](_0x3d5d('0x8d'),_0x57f5a4['id']);return getEndUser(_0x4acf31,_0x5682fb,_0x55adff,_0x37859f[_0x3d5d('0x8e')],_0x37859f[_0x3d5d('0x8f')],_0x57f5a4,_0x354f09);})[_0x3d5d('0x2a')](function(_0x2212e2){_0x5879b4=_0x2212e2;return getCall(_0x4acf31,_0x5682fb,_0x55adff,_0x57f5a4,_0x5879b4,_0x354f09,_0x37859f,_0x3d5d('0x7a'));})['then'](function(_0x3dea5a){if(_0x3dea5a){logger[_0x3d5d('0x39')](_0x3d5d('0x90'),_0x3dea5a['id']);logger[_0x3d5d('0x39')]('[QUEUE]',_0x3d5d('0x91'));emit(util[_0x3d5d('0x31')]('user:%s',_0x515f9b['name']),'trigger:browser:url',{'uri':_0x3d5d('0x92')+_0x55adff[_0x3d5d('0x82')]+_0x3d5d('0x93')+_0x3dea5a['id']});}})[_0x3d5d('0x2d')](function(_0x1e38ca){logger[_0x3d5d('0x40')]('[QUEUE]',JSON[_0x3d5d('0xf')](_0x1e38ca));});};exports[_0x3d5d('0x77')]=function(_0xb22eed,_0x58f1bf,_0x52e230,_0x1211f8,_0x34e1a2,_0x376fca,_0x164bfd){var _0x8b140e,_0x25a88d,_0x25db99;_0x376fca['host']=intUtil[_0x3d5d('0x83')](_0x376fca[_0x3d5d('0x82')]);_0x376fca[_0x3d5d('0x84')]=intUtil[_0x3d5d('0x83')](_0x376fca['serverUrl']);if(_0x164bfd&&_0x164bfd['recordingFormat']&&_0x164bfd[_0x3d5d('0x94')]!=='none'){logger[_0x3d5d('0x39')]('[OUTBOUND]',_0x3d5d('0x87'));_0x58f1bf[_0x3d5d('0x88')]=_0x376fca[_0x3d5d('0x84')]+_0x3d5d('0x89')+_0x58f1bf['uniqueid']+_0x3d5d('0x95')+md5(_0x58f1bf[_0x3d5d('0x8a')]);}var _0x2900b1=_0x376fca[_0x3d5d('0x82')]==='zoho.eu'?'eu':_0x3d5d('0x8c');return getAccessToken(_0x376fca)[_0x3d5d('0x2a')](function(_0x58e78c){_0x25db99=_0x58e78c;return getUser(_0x25db99,_0x2900b1,_0x376fca,_0x1211f8['email']);})[_0x3d5d('0x2a')](function(_0x447b7e){_0x8b140e=_0x447b7e;logger[_0x3d5d('0x39')](_0x3d5d('0x8d'),_0x8b140e['id']);return getEndUser(_0x25db99,_0x2900b1,_0x376fca,_0x58f1bf['destcalleridname'],_0x58f1bf[_0x3d5d('0x96')],_0x8b140e,_0x52e230);})[_0x3d5d('0x2a')](function(_0x371703){_0x25a88d=_0x371703;return getCall(_0x25db99,_0x2900b1,_0x376fca,_0x8b140e,_0x25a88d,_0x52e230,_0x58f1bf,_0x3d5d('0x97'));})[_0x3d5d('0x2a')](function(_0x32510e){if(_0x32510e){logger['info'](_0x3d5d('0x90'),_0x32510e['id']);logger[_0x3d5d('0x39')](_0x3d5d('0x98'),_0x3d5d('0x91'));emit(util[_0x3d5d('0x31')](_0x3d5d('0x99'),_0x1211f8['name']),_0x3d5d('0x9a'),{'uri':_0x3d5d('0x92')+_0x376fca[_0x3d5d('0x82')]+_0x3d5d('0x93')+_0x32510e['id']});}})['catch'](function(_0x358d87){logger['error'](_0x3d5d('0x98'),JSON[_0x3d5d('0xf')](_0x358d87));});};exports[_0x3d5d('0x9b')]=function(_0x106558,_0x273a3e,_0x5d0a8f,_0x5d7c38,_0x4d50f3,_0x9629a1){var _0x5c1816,_0x3b32d7,_0x44b23b;_0x9629a1['host']=intUtil[_0x3d5d('0x83')](_0x9629a1[_0x3d5d('0x82')]);_0x9629a1['serverUrl']=intUtil[_0x3d5d('0x83')](_0x9629a1[_0x3d5d('0x84')]);if(_0x4d50f3&&_0x4d50f3[_0x3d5d('0x85')]){logger[_0x3d5d('0x39')]('['+_0x273a3e[_0x3d5d('0x6c')][_0x3d5d('0x9c')]()+']',_0x3d5d('0x87'));_0x273a3e['recordingURL']=_0x9629a1[_0x3d5d('0x84')]+_0x3d5d('0x89')+_0x273a3e['uniqueid']+_0x3d5d('0x95')+md5(_0x273a3e[_0x3d5d('0x8a')]);}else{_0x273a3e[_0x3d5d('0x88')]='';}var _0x15bc05=_0x9629a1['host']===_0x3d5d('0x8b')?'eu':_0x3d5d('0x8c');return getAccessToken(_0x9629a1)[_0x3d5d('0x2a')](function(_0x4b384b){_0x44b23b=_0x4b384b;return getUser(_0x44b23b,_0x15bc05,_0x9629a1);})[_0x3d5d('0x2a')](function(_0x5e3245){_0x5c1816=_0x5e3245;logger['info']('The\x20User\x20ID\x20is:',_0x5c1816['id']);return getEndUser(_0x44b23b,_0x15bc05,_0x9629a1,_0x273a3e[_0x3d5d('0x8e')],_0x273a3e[_0x3d5d('0x8f')],_0x5c1816,_0x5d0a8f);})[_0x3d5d('0x2a')](function(_0xde24fd){_0x3b32d7=_0xde24fd;return getCall(_0x44b23b,_0x15bc05,_0x9629a1,_0x5c1816,_0x3b32d7,_0x5d0a8f,_0x273a3e,'Inbound');})[_0x3d5d('0x2a')](function(_0x15b0b6){if(_0x15b0b6){logger[_0x3d5d('0x39')](_0x3d5d('0x90'),_0x15b0b6['id']);}})[_0x3d5d('0x2d')](function(_0x3cdf31){logger[_0x3d5d('0x40')]('['+_0x273a3e[_0x3d5d('0x6c')][_0x3d5d('0x9c')]()+']',JSON['stringify'](_0x3cdf31));});};
\ No newline at end of file
+var _0x19cf=['Administrator','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','catch','data','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','code','SUCCESS','details','enduserType','Error:\x20','CREATE\x20ERROR','GET','moduleSearch','contact_lead','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','uri','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','lead','Owner','Subject','Description','getString','Descriptions','Full_Name','First_Name','What_Id','Last_Name','Call_Duration','utc','talktime','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','format','lastevent','called','Call_Result','Called','Answered','rejected','Rejected','Abandoned','timeout','Timeout','outbound','agentcalledAt','Call_Type','Inbound','Fields','POST','/crm/v2/Calls','Call\x20created!','err','queue','host','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','com','The\x20User\x20ID\x20is:','calleridname','The\x20Call\x20ID\x20is:','user:%s','trigger:browser:url','https://crm.','stripTrailingSlash','recordingFormat','none','zoho.eu','destcalleridname','destcalleridnum','[OUTBOUND]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','monitor_format','toUpperCase','calleridnum','lodash','request-promise','util','./util','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','defaults','socket.io-emitter','emit','debug','stringify','forEach','includes','picklist','idField','content','toString','type','variable','variableName','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.com.cn','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','then','add','seconds','error','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','user'];(function(_0x500322,_0x18f735){var _0x489797=function(_0x4b09e2){while(--_0x4b09e2){_0x500322['push'](_0x500322['shift']());}};_0x489797(++_0x18f735);}(_0x19cf,0x197));var _0xf19c=function(_0x291832,_0x2e7b7b){_0x291832=_0x291832-0x0;var _0x5ad029=_0x19cf[_0x291832];return _0x5ad029;};'use strict';var _=require(_0xf19c('0x0'));var rp=require(_0xf19c('0x1'));var md5=require('md5');var util=require(_0xf19c('0x2'));var intUtil=require(_0xf19c('0x3'));var moment=require(_0xf19c('0x4'));var Redis=require(_0xf19c('0x5'));var BPromise=require(_0xf19c('0x6'));var config=require(_0xf19c('0x7'));var logger=require(_0xf19c('0x8'))(_0xf19c('0x9'));config[_0xf19c('0xa')]=_[_0xf19c('0xb')](config[_0xf19c('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0xf19c('0xc'))(new Redis(config[_0xf19c('0xa')]));function emit(_0x37fa8a,_0x53d9cb,_0x1eea59){io['to'](_0x37fa8a)[_0xf19c('0xd')](_0x53d9cb,_0x1eea59);}function request(_0x17e2c0){logger[_0xf19c('0xe')]('[HTTP]',JSON[_0xf19c('0xf')](_0x17e2c0));return rp(_0x17e2c0);}function getCustomFields(_0xd614af,_0x4f7eb8){var _0x44b794={};if(_0xd614af['length']>0x0){_[_0xf19c('0x10')](_0xd614af,function(_0x134de7){if(_[_0xf19c('0x11')](['string',_0xf19c('0x12')],_0x134de7['type'])&&_0x134de7[_0xf19c('0x13')]){_0x44b794[_0x134de7[_0xf19c('0x13')]]=_0x134de7[_0xf19c('0x14')][_0xf19c('0x15')]();}else if(_0x134de7[_0xf19c('0x16')]===_0xf19c('0x17')&&_0x134de7[_0xf19c('0x18')]&&_0x134de7['idField']&&_0x4f7eb8[_0x134de7[_0xf19c('0x18')]]){_0x44b794[_0x134de7[_0xf19c('0x13')]]=_0x4f7eb8[_0x134de7[_0xf19c('0x18')]][_0xf19c('0x15')]();}else if(_0x134de7[_0xf19c('0x16')]==='customVariable'&&_0x134de7[_0xf19c('0x19')]&&_0x134de7['Variable'][_0xf19c('0x1a')]&&_0x134de7[_0xf19c('0x13')]&&_0x4f7eb8[_0x134de7[_0xf19c('0x19')][_0xf19c('0x1a')][_0xf19c('0x1b')]()]){_0x44b794[_0x134de7[_0xf19c('0x13')]]=_0x4f7eb8[_0x134de7[_0xf19c('0x19')][_0xf19c('0x1a')][_0xf19c('0x1b')]()][_0xf19c('0x15')]();}});}return _0x44b794;}function getName(_0x16d55e){if(_0x16d55e[_0xf19c('0x1c')]('\x20')>0x0){var _0x134b7f=_0x16d55e[_0xf19c('0x1d')](/ (.+)/);if(_0x134b7f[0x1]){return _0x134b7f;}}return[_0x16d55e,_0x16d55e];}var accountsTokens={};function getAccessToken(_0x693d5d){return new Promise(function(_0x3aff90,_0x36ea6f){if(!_[_0xf19c('0x1e')](accountsTokens[_0x693d5d['id']])&&!_[_0xf19c('0x1e')](accountsTokens[_0x693d5d['id']][_0xf19c('0x1f')])){if(moment()[_0xf19c('0x20')](accountsTokens[_0x693d5d['id']][_0xf19c('0x21')])){_0x3aff90(accountsTokens[_0x693d5d['id']][_0xf19c('0x1f')]);}}var _0x1bc1fe;switch(_0x693d5d['zone']){case'US':_0x1bc1fe=_0xf19c('0x22');break;case'AU':_0x1bc1fe=_0xf19c('0x23');break;case'EU':_0x1bc1fe=_0xf19c('0x24');break;case'IN':_0x1bc1fe='https://accounts.zoho.in';break;case'CN':_0x1bc1fe=_0xf19c('0x25');break;default:_0x1bc1fe=_0xf19c('0x24');break;}var _0x320f58={'method':'POST','uri':_0x1bc1fe+_0xf19c('0x26'),'qs':{'refresh_token':_0x693d5d[_0xf19c('0x27')],'client_id':_0x693d5d[_0xf19c('0x28')],'client_secret':_0x693d5d[_0xf19c('0x29')],'grant_type':_0xf19c('0x2a')},'json':!![]};return rp(_0x320f58)[_0xf19c('0x2b')](function(_0x5e8f3e){accountsTokens[_0x693d5d['id']]={'access_token':_0x5e8f3e[_0xf19c('0x1f')],'expires_in':moment()[_0xf19c('0x2c')](_0x5e8f3e[_0xf19c('0x21')],_0xf19c('0x2d'))};_0x3aff90(_0x5e8f3e[_0xf19c('0x1f')]);})['catch'](function(_0x25daad){logger[_0xf19c('0x2e')](_0xf19c('0x2f'),_0x25daad[_0xf19c('0x30')]);_0x36ea6f(_0x25daad);});});}function getUser(_0x424d2b,_0x493326,_0x5c6260,_0x1bae2d){logger[_0xf19c('0x31')](_0xf19c('0x32'));return request({'method':'GET','uri':util['format'](_0xf19c('0x33'),_0x493326),'qs':{'type':_0xf19c('0x34')},'headers':{'Authorization':_0xf19c('0x35')+_0x424d2b},'json':!![]})['then'](function(_0x2694cc){if(_0x2694cc[_0xf19c('0x36')]){var _0x321a56=-0x1;if(_['isArrayLikeObject'](_0x2694cc[_0xf19c('0x36')])){if(!_['isNil'](_0x1bae2d)){_0x321a56=_[_0xf19c('0x37')](_0x2694cc[_0xf19c('0x36')],function(_0x43425e){return _0x43425e[_0xf19c('0x38')]===_0x1bae2d;});}if(_0x321a56>=0x0){logger['info'](_0xf19c('0x39'));}else{logger[_0xf19c('0x31')](_0xf19c('0x3a'));_0x321a56=_[_0xf19c('0x37')](_0x2694cc[_0xf19c('0x36')],function(_0x27d283){return _0x27d283[_0xf19c('0x3b')][_0xf19c('0x1a')]==='Administrator';});}return _0x2694cc[_0xf19c('0x36')][_0x321a56];}else{if(_0x2694cc[_0xf19c('0x3c')]['profile'][_0xf19c('0x1a')]===_0xf19c('0x3d')){logger[_0xf19c('0x31')](_0xf19c('0x3a'));user=_0x2694cc['user'];return user;}else{logger[_0xf19c('0x2e')](_0xf19c('0x3e'),JSON[_0xf19c('0xf')](_0x2694cc));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0xf19c('0xf')](_0x2694cc));}}}else{logger[_0xf19c('0x2e')](_0xf19c('0x3e'),JSON[_0xf19c('0xf')](_0x2694cc));throw new Error(_0xf19c('0x3f')+JSON[_0xf19c('0xf')](_0x2694cc));}})[_0xf19c('0x40')](function(_0x29aa1b){console['error'](_0x29aa1b);});}function getZohoUser(_0xd64684,_0x366fa1){return new BPromise(function(_0xf6056,_0x4b9e2c){request(_0xd64684)[_0xf19c('0x2b')](function(_0x25b2fd){var _0x92b511=null;if(_0x25b2fd){_0x92b511=_0x25b2fd[_0xf19c('0x41')][0x0];_0x92b511['enduserType']=_0x366fa1;}_0xf6056(_0x92b511);})[_0xf19c('0x40')](function(_0x3ce79e){_0x4b9e2c(_0x3ce79e);});});}function createEndUser(_0x14b18f,_0x32e7fa,_0x5503ad,_0x5ddfa5,_0x4c484d,_0x2dcc98){var _0x5503ad=getName(_0x5503ad);return request({'method':'POST','uri':_0xf19c('0x42')+_0x32e7fa+_0xf19c('0x43')+_[_0xf19c('0x44')](_0x2dcc98[_0xf19c('0x45')])+'s','body':{'data':[{'Last_Name':_0x5503ad[0x1],'First_Name':_0x5503ad[0x0],'Phone':_0x5ddfa5,'Owner':{'name':!_[_0xf19c('0x1e')](_0x4c484d[_0xf19c('0x46')][_0xf19c('0x1a')])?_0x4c484d['role'][_0xf19c('0x1a')]:!_[_0xf19c('0x1e')](_0x4c484d['first_name'])?_0x4c484d[_0xf19c('0x47')]+'\x20'+_0x4c484d[_0xf19c('0x48')]:_0x4c484d[_0xf19c('0x48')],'id':_0x4c484d['id']}}]},'headers':{'Authorization':_0xf19c('0x35')+_0x14b18f},'json':!![]})['then'](function(_0x1d578b){if(_0x1d578b&&_0x1d578b['data'][0x0][_0xf19c('0x49')]===_0xf19c('0x4a')){var _0x371f3c=_0x1d578b[_0xf19c('0x41')][0x0][_0xf19c('0x4b')];_0x371f3c[_0xf19c('0x4c')]=_[_0xf19c('0x44')](_0x2dcc98[_0xf19c('0x45')])+'s';return _0x371f3c;}logger[_0xf19c('0x2e')]('The\x20failing\x20result\x20is',JSON[_0xf19c('0xf')](data));throw new Error(_0xf19c('0x4d')+JSON['stringify'](data));})[_0xf19c('0x40')](function(_0x526fa5){console['log'](_0xf19c('0x4e'),_0x526fa5);});}function getEndUser(_0x491ed6,_0x337126,_0x17c1b0,_0x21badc,_0x3a2382,_0x1563be,_0x16511e){var _0x3a5c0e={'method':_0xf19c('0x4f'),'uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x491ed6},'json':!![]};switch(_0x16511e[_0xf19c('0x50')]){case _0xf19c('0x51'):_0x3a5c0e['uri']=_0xf19c('0x42')+_0x337126+_0xf19c('0x52')+_0x3a2382+'))';return getZohoUser(_0x3a5c0e,_0xf19c('0x53'))[_0xf19c('0x2b')](function(_0x156eb1){if(_0x156eb1)return _0x156eb1;_0x3a5c0e[_0xf19c('0x54')]=_0xf19c('0x42')+_0x337126+_0xf19c('0x55')+_0x3a2382+'))';return getZohoUser(_0x3a5c0e,_0xf19c('0x56'))[_0xf19c('0x2b')](function(_0x36b196){if(_0x36b196)return _0x36b196;if(_0x16511e[_0xf19c('0x45')]!=_0xf19c('0x57')){return createEndUser(_0x491ed6,_0x337126,_0x21badc,_0x3a2382,_0x1563be,_0x16511e);}else{return{};}});});break;case _0xf19c('0x58'):_0x3a5c0e[_0xf19c('0x54')]='https://www.zohoapis.'+_0x337126+_0xf19c('0x52')+_0x3a2382+'))';return getZohoUser(_0x3a5c0e,_0xf19c('0x53'))[_0xf19c('0x2b')](function(_0x9e2c1f){if(_0x9e2c1f)return _0x9e2c1f;if(_0x16511e[_0xf19c('0x45')]!=_0xf19c('0x57')){return createEndUser(_0x491ed6,_0x337126,_0x21badc,_0x3a2382,_0x1563be,_0x16511e);}else{return{};}});break;case _0xf19c('0x59'):_0x3a5c0e[_0xf19c('0x54')]='https://www.zohoapis.'+_0x337126+_0xf19c('0x55')+_0x3a2382+'))';return getZohoUser(_0x3a5c0e,_0xf19c('0x56'))[_0xf19c('0x2b')](function(_0x257bdd){if(_0x257bdd)return _0x257bdd;if(_0x16511e[_0xf19c('0x45')]!=_0xf19c('0x57')){return createEndUser(_0x491ed6,_0x337126,_0x21badc,_0x3a2382,_0x1563be,_0x16511e);}else{return{};}});break;}}function getCall(_0x48df70,_0x427f23,_0x2278fa,_0x48ab26,_0x14ec21,_0x1d26ec,_0x3e2dc4,_0x4e7cb1){logger[_0xf19c('0x31')]('Creating\x20new\x20call...');var _0x52ee1f={};_0x52ee1f[_0xf19c('0x5a')]={'name':!_['isNil'](_0x48ab26[_0xf19c('0x46')]['name'])&&!_[_0xf19c('0x1e')](_0x48ab26[_0xf19c('0x3b')][_0xf19c('0x1a')])&&_0x48ab26[_0xf19c('0x3b')][_0xf19c('0x1a')]==='administrator'?_0x48ab26[_0xf19c('0x46')][_0xf19c('0x1a')]:!_[_0xf19c('0x1e')](_0x48ab26[_0xf19c('0x47')])?_0x48ab26[_0xf19c('0x47')]+'\x20'+_0x48ab26[_0xf19c('0x48')]:_0x48ab26['last_name'],'id':_0x48ab26['id']};_0x52ee1f[_0xf19c('0x5b')]=intUtil['getString'](_0x1d26ec['Subjects'],_0x3e2dc4,'\x20');_0x52ee1f[_0xf19c('0x5c')]=intUtil[_0xf19c('0x5d')](_0x1d26ec[_0xf19c('0x5e')],_0x3e2dc4,'\x0a');if(_0x14ec21[_0xf19c('0x4c')]===_0xf19c('0x53')){_0x52ee1f['Who_Id']={'name':!_[_0xf19c('0x1e')](_0x14ec21[_0xf19c('0x5f')])?_0x14ec21[_0xf19c('0x5f')]:!_[_0xf19c('0x1e')](_0x14ec21[_0xf19c('0x60')])?_0x14ec21[_0xf19c('0x60')]+'\x20'+_0x14ec21['Last_Name']:_0x14ec21['Last_Name'],'id':_0x14ec21['id']};}if(_0x14ec21[_0xf19c('0x4c')]===_0xf19c('0x56')){_0x52ee1f[_0xf19c('0x61')]={'name':!_[_0xf19c('0x1e')](_0x14ec21['Full_Name'])?_0x14ec21[_0xf19c('0x5f')]:!_[_0xf19c('0x1e')](_0x14ec21[_0xf19c('0x60')])?_0x14ec21[_0xf19c('0x60')]+'\x20'+_0x14ec21[_0xf19c('0x62')]:_0x14ec21[_0xf19c('0x62')],'id':_0x14ec21['id']};_0x52ee1f['$se_module']=_['startCase'](_0x14ec21[_0xf19c('0x4c')]);}if(_0x3e2dc4['talktime']){_0x52ee1f[_0xf19c('0x63')]=moment[_0xf19c('0x64')](parseInt(_0x3e2dc4[_0xf19c('0x65')])*0x3e8)['format'](_0xf19c('0x66'));}else if(_0x3e2dc4[_0xf19c('0x67')]&&_0x3e2dc4[_0xf19c('0x68')]){_0x52ee1f[_0xf19c('0x63')]=moment[_0xf19c('0x64')](moment(_0x3e2dc4['endtime'],_0xf19c('0x69'))[_0xf19c('0x6a')](moment(_0x3e2dc4[_0xf19c('0x6b')],_0xf19c('0x69'))))[_0xf19c('0x6c')](_0xf19c('0x66'));}switch(_0x3e2dc4[_0xf19c('0x6d')]){case _0xf19c('0x6e'):_0x52ee1f[_0xf19c('0x6f')]=_0xf19c('0x70');break;case'complete':case'connect':_0x52ee1f['Call_Result']=_0xf19c('0x71');break;case _0xf19c('0x72'):_0x52ee1f[_0xf19c('0x6f')]=_0xf19c('0x73');break;case'abandoned':_0x52ee1f[_0xf19c('0x6f')]=_0xf19c('0x74');break;case _0xf19c('0x75'):_0x52ee1f[_0xf19c('0x6f')]=_0xf19c('0x76');default:}_0x52ee1f['Call_Start_Time']=(_0x4e7cb1===_0xf19c('0x77')?moment(_0x3e2dc4[_0xf19c('0x6b')])[_0xf19c('0x6c')](_0xf19c('0x69')):moment(_0x3e2dc4[_0xf19c('0x78')])[_0xf19c('0x6c')](_0xf19c('0x69')))||moment()[_0xf19c('0x6c')](_0xf19c('0x69'));_0x52ee1f[_0xf19c('0x79')]=_0x4e7cb1||_0xf19c('0x7a');_0x52ee1f=_['merge'](_0x52ee1f,getCustomFields(_0x1d26ec[_0xf19c('0x7b')],_0x3e2dc4));return request({'method':_0xf19c('0x7c'),'uri':_0xf19c('0x42')+_0x427f23+_0xf19c('0x7d'),'headers':{'Authorization':_0xf19c('0x35')+_0x48df70},'body':{'data':[_0x52ee1f]},'json':!![]})['then'](function(_0x1d9180){if(_0x1d9180&&_0x1d9180[_0xf19c('0x41')][0x0]['code']===_0xf19c('0x4a')){logger['info'](_0xf19c('0x7e'));return{'id':_0x1d9180[_0xf19c('0x41')][0x0]['details']['id']};}})[_0xf19c('0x40')](function(_0x200dfd){logger['info'](_0xf19c('0x7f'),_0x200dfd[_0xf19c('0x30')]);console['log'](_0xf19c('0x7f'),_0x200dfd);});}exports[_0xf19c('0x80')]=function(_0xb6154,_0x47ce32,_0x2a6eba,_0x35cfc4,_0x50b21c,_0x4984a7){var _0x47d868,_0x1dd969,_0x4b99c6;_0x4984a7[_0xf19c('0x81')]=intUtil['stripTrailingSlash'](_0x4984a7['host']);_0x4984a7[_0xf19c('0x82')]=intUtil['stripTrailingSlash'](_0x4984a7[_0xf19c('0x82')]);if(_0x50b21c&&_0x50b21c['monitor_format']){logger[_0xf19c('0x31')](_0xf19c('0x83'),_0xf19c('0x84'));_0x47ce32[_0xf19c('0x85')]=_0x4984a7[_0xf19c('0x82')]+_0xf19c('0x86')+_0x47ce32[_0xf19c('0x87')]+_0xf19c('0x88')+md5(_0x47ce32[_0xf19c('0x87')]);}else{_0x47ce32[_0xf19c('0x85')]='';}var _0x50bbba=_0x4984a7[_0xf19c('0x81')]==='zoho.eu'?'eu':_0xf19c('0x89');return getAccessToken(_0x4984a7)['then'](function(_0x216752){_0x4b99c6=_0x216752;return getUser(_0x4b99c6,_0x50bbba,_0x4984a7,_0x35cfc4[_0xf19c('0x38')]);})[_0xf19c('0x2b')](function(_0x4f3543){_0x47d868=_0x4f3543;logger[_0xf19c('0x31')](_0xf19c('0x8a'),_0x47d868['id']);return getEndUser(_0x4b99c6,_0x50bbba,_0x4984a7,_0x47ce32[_0xf19c('0x8b')],_0x47ce32['calleridnum'],_0x47d868,_0x2a6eba);})[_0xf19c('0x2b')](function(_0x190c44){_0x1dd969=_0x190c44;return getCall(_0x4b99c6,_0x50bbba,_0x4984a7,_0x47d868,_0x1dd969,_0x2a6eba,_0x47ce32,_0xf19c('0x7a'));})[_0xf19c('0x2b')](function(_0x5021f7){if(_0x5021f7){logger[_0xf19c('0x31')](_0xf19c('0x8c'),_0x5021f7['id']);logger[_0xf19c('0x31')](_0xf19c('0x83'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xf19c('0x6c')](_0xf19c('0x8d'),_0x35cfc4[_0xf19c('0x1a')]),_0xf19c('0x8e'),{'uri':_0xf19c('0x8f')+_0x4984a7['host']+'/crm/EntityInfo.do?module=Calls&id='+_0x5021f7['id']});}})[_0xf19c('0x40')](function(_0x4b2f8f){logger[_0xf19c('0x2e')](_0xf19c('0x83'),JSON[_0xf19c('0xf')](_0x4b2f8f));});};exports[_0xf19c('0x77')]=function(_0x49e3b2,_0xfed5d7,_0x2ca4f9,_0x5cf102,_0x450dc9,_0xc13669,_0x1a649a){var _0xa6102,_0x31b7e6,_0x4b9982;_0xc13669['host']=intUtil[_0xf19c('0x90')](_0xc13669[_0xf19c('0x81')]);_0xc13669['serverUrl']=intUtil[_0xf19c('0x90')](_0xc13669['serverUrl']);if(_0x1a649a&&_0x1a649a[_0xf19c('0x91')]&&_0x1a649a[_0xf19c('0x91')]!==_0xf19c('0x92')){logger['info']('[OUTBOUND]',_0xf19c('0x84'));_0xfed5d7[_0xf19c('0x85')]=_0xc13669[_0xf19c('0x82')]+_0xf19c('0x86')+_0xfed5d7[_0xf19c('0x87')]+'/downloads?type=uniqueid&token='+md5(_0xfed5d7[_0xf19c('0x87')]);}var _0x350f29=_0xc13669['host']===_0xf19c('0x93')?'eu':_0xf19c('0x89');return getAccessToken(_0xc13669)[_0xf19c('0x2b')](function(_0x2e0ad0){_0x4b9982=_0x2e0ad0;return getUser(_0x4b9982,_0x350f29,_0xc13669,_0x5cf102[_0xf19c('0x38')]);})[_0xf19c('0x2b')](function(_0x16cb3f){_0xa6102=_0x16cb3f;logger[_0xf19c('0x31')](_0xf19c('0x8a'),_0xa6102['id']);return getEndUser(_0x4b9982,_0x350f29,_0xc13669,_0xfed5d7[_0xf19c('0x94')],_0xfed5d7[_0xf19c('0x95')],_0xa6102,_0x2ca4f9);})[_0xf19c('0x2b')](function(_0x4d71aa){_0x31b7e6=_0x4d71aa;return getCall(_0x4b9982,_0x350f29,_0xc13669,_0xa6102,_0x31b7e6,_0x2ca4f9,_0xfed5d7,'Outbound');})[_0xf19c('0x2b')](function(_0x2ef9a2){if(_0x2ef9a2){logger[_0xf19c('0x31')](_0xf19c('0x8c'),_0x2ef9a2['id']);logger[_0xf19c('0x31')](_0xf19c('0x96'),_0xf19c('0x97'));emit(util[_0xf19c('0x6c')](_0xf19c('0x8d'),_0x5cf102['name']),_0xf19c('0x8e'),{'uri':_0xf19c('0x8f')+_0xc13669['host']+'/crm/EntityInfo.do?module=Calls&id='+_0x2ef9a2['id']});}})['catch'](function(_0x37ff72){logger[_0xf19c('0x2e')]('[OUTBOUND]',JSON['stringify'](_0x37ff72));});};exports[_0xf19c('0x98')]=function(_0x4b300c,_0x540570,_0x1159d8,_0x2c2f36,_0x2bc122,_0x1d822d){var _0x21008a,_0xb99240,_0x251c7d;_0x1d822d[_0xf19c('0x81')]=intUtil[_0xf19c('0x90')](_0x1d822d['host']);_0x1d822d[_0xf19c('0x82')]=intUtil[_0xf19c('0x90')](_0x1d822d['serverUrl']);if(_0x2bc122&&_0x2bc122[_0xf19c('0x99')]){logger[_0xf19c('0x31')]('['+_0x540570['lastevent'][_0xf19c('0x9a')]()+']',_0xf19c('0x84'));_0x540570[_0xf19c('0x85')]=_0x1d822d[_0xf19c('0x82')]+_0xf19c('0x86')+_0x540570[_0xf19c('0x87')]+_0xf19c('0x88')+md5(_0x540570[_0xf19c('0x87')]);}else{_0x540570[_0xf19c('0x85')]='';}var _0x2d11f8=_0x1d822d[_0xf19c('0x81')]===_0xf19c('0x93')?'eu':_0xf19c('0x89');return getAccessToken(_0x1d822d)[_0xf19c('0x2b')](function(_0x1853f4){_0x251c7d=_0x1853f4;return getUser(_0x251c7d,_0x2d11f8,_0x1d822d);})[_0xf19c('0x2b')](function(_0x4827d1){_0x21008a=_0x4827d1;logger[_0xf19c('0x31')](_0xf19c('0x8a'),_0x21008a['id']);return getEndUser(_0x251c7d,_0x2d11f8,_0x1d822d,_0x540570[_0xf19c('0x8b')],_0x540570[_0xf19c('0x9b')],_0x21008a,_0x1159d8);})[_0xf19c('0x2b')](function(_0x5f05a0){_0xb99240=_0x5f05a0;return getCall(_0x251c7d,_0x2d11f8,_0x1d822d,_0x21008a,_0xb99240,_0x1159d8,_0x540570,_0xf19c('0x7a'));})['then'](function(_0x216ee8){if(_0x216ee8){logger[_0xf19c('0x31')](_0xf19c('0x8c'),_0x216ee8['id']);}})[_0xf19c('0x40')](function(_0x899df9){logger[_0xf19c('0x2e')]('['+_0x540570[_0xf19c('0x6d')][_0xf19c('0x9a')]()+']',JSON['stringify'](_0x899df9));});};
\ No newline at end of file
index 3db8e30..3cc11c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5507=['Script','data3','render','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','../../../../config/logger','trigger','exec','data2'];(function(_0x225abc,_0x213e54){var _0x315b44=function(_0x58efe2){while(--_0x58efe2){_0x225abc['push'](_0x225abc['shift']());}};_0x315b44(++_0x213e54);}(_0x5507,0x182));var _0x7550=function(_0x557d85,_0x30dd65){_0x557d85=_0x557d85-0x0;var _0x317282=_0x5507[_0x557d85];return _0x317282;};'use strict';var util=require(_0x7550('0x0'));var sh=require(_0x7550('0x1'));var Mustache=require('mustache');var logger=require(_0x7550('0x2'))(_0x7550('0x3'));exports[_0x7550('0x4')]=function(_0x4dee4f,_0x14e6c9){var _0x49596f=_0x4dee4f['data2']?_0x4dee4f[_0x7550('0x5')]:_0x7550('0x6');var _0x313a30=_0x4dee4f[_0x7550('0x7')]?Mustache[_0x7550('0x8')](_0x4dee4f[_0x7550('0x7')],_0x14e6c9):_0x14e6c9;sh[_0x7550('0x4')](_0x313a30,function(_0x8af580,_0x4ba86c,_0x3d75ab){if(_0x8af580!==0x0){logger[_0x7550('0x9')](util[_0x7550('0xa')](_0x7550('0xb'),_0x49596f,_0x313a30,_0x8af580,_0x3d75ab));}else{logger[_0x7550('0xc')](util[_0x7550('0xa')](_0x7550('0xd'),_0x49596f,_0x313a30,_0x4ba86c));}});};
\ No newline at end of file
+var _0x6501=['render','exec','format','info','util','../../../../config/logger','trigger','data2','Script','data3'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x6501,0xa4));var _0x1650=function(_0x324ee3,_0x2423a0){_0x324ee3=_0x324ee3-0x0;var _0x25ddf1=_0x6501[_0x324ee3];return _0x25ddf1;};'use strict';var util=require(_0x1650('0x0'));var sh=require('shelljs');var Mustache=require('mustache');var logger=require(_0x1650('0x1'))(_0x1650('0x2'));exports['exec']=function(_0x2468ab,_0x2b26bc){var _0x5cd0f6=_0x2468ab[_0x1650('0x3')]?_0x2468ab[_0x1650('0x3')]:_0x1650('0x4');var _0x547ff9=_0x2468ab[_0x1650('0x5')]?Mustache[_0x1650('0x6')](_0x2468ab[_0x1650('0x5')],_0x2b26bc):_0x2b26bc;sh[_0x1650('0x7')](_0x547ff9,function(_0x2f8f9c,_0x35a42c,_0x22f187){if(_0x2f8f9c!==0x0){logger['error'](util[_0x1650('0x8')]('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x5cd0f6,_0x547ff9,_0x2f8f9c,_0x22f187));}else{logger[_0x1650('0x9')](util[_0x1650('0x8')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x5cd0f6,_0x547ff9,_0x35a42c));}});};
\ No newline at end of file
index 7d0fbc6..4391ee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d15=['data2','data5','number','headers','data6','parse','error','toUpperCase','GET','DELETE','POST','PUT','data7','stack','body','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then',',\x20request\x20body:\x20','object','%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','trigger','exec','data1','render'];(function(_0xbe200f,_0x4b50eb){var _0x192597=function(_0x106cfd){while(--_0x106cfd){_0xbe200f['push'](_0xbe200f['shift']());}};_0x192597(++_0x4b50eb);}(_0x9d15,0x19c));var _0x59d1=function(_0x282da9,_0x4107ae){_0x282da9=_0x282da9-0x0;var _0x5e520b=_0x9d15[_0x282da9];return _0x5e520b;};'use strict';var rp=require(_0x59d1('0x0'));var util=require(_0x59d1('0x1'));var _=require(_0x59d1('0x2'));var Mustache=require(_0x59d1('0x3'));var logger=require('../../../../config/logger')(_0x59d1('0x4'));exports[_0x59d1('0x5')]=function(_0x10f4c0,_0xc51aae){var _0x5bc334,_0x1a11ef;var _0x249323={'method':_0x10f4c0[_0x59d1('0x6')]['toUpperCase'](),'uri':Mustache[_0x59d1('0x7')](_0x10f4c0[_0x59d1('0x8')],_0xc51aae),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x10f4c0[_0x59d1('0x9')])===_0x59d1('0xa')&&parseInt(_0x10f4c0[_0x59d1('0x9')])>=0x1&&parseInt(_0x10f4c0[_0x59d1('0x9')])<=0xa?parseInt(_0x10f4c0[_0x59d1('0x9')])*0x3e8:0x5*0x3e8};try{_0x249323[_0x59d1('0xb')]=_0x10f4c0[_0x59d1('0xc')]?JSON[_0x59d1('0xd')](Mustache[_0x59d1('0x7')](_0x10f4c0[_0x59d1('0xc')],_0xc51aae)):{};}catch(_0x4093c1){logger[_0x59d1('0xe')](_0x4093c1['stack']);}switch(_0x10f4c0[_0x59d1('0x6')][_0x59d1('0xf')]()){case _0x59d1('0x10'):case _0x59d1('0x11'):_0x5bc334=null;_0x249323['qs']=_0xc51aae;break;case _0x59d1('0x12'):case _0x59d1('0x13'):if(_0x10f4c0['data7']){try{_0x5bc334=JSON[_0x59d1('0xd')](Mustache[_0x59d1('0x7')](_0x10f4c0[_0x59d1('0x14')],_0xc51aae));_0x249323['body']=_0x5bc334;}catch(_0x511565){logger[_0x59d1('0xe')](_0x511565[_0x59d1('0x15')]);logger['error']('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x5bc334=_0xc51aae;_0x249323[_0x59d1('0x16')]=_0x5bc334;}break;}logger[_0x59d1('0x17')](util[_0x59d1('0x18')](_0x59d1('0x19'),_0x10f4c0[_0x59d1('0x6')],_0x10f4c0['data2'],JSON[_0x59d1('0x1a')](_0x249323)));rp(_0x249323)[_0x59d1('0x1b')](function(_0x1a10f2){_0x5bc334=!_['isNil'](_0x5bc334)?_0x59d1('0x1c')+_0x5bc334:'';_0x1a11ef=typeof _0x1a10f2[_0x59d1('0x16')]===_0x59d1('0x1d')?JSON[_0x59d1('0x1a')](_0x1a10f2['body']):_0x1a10f2['body'];logger['info'](util[_0x59d1('0x18')](_0x59d1('0x1e'),_0x10f4c0[_0x59d1('0x6')],_0x10f4c0[_0x59d1('0x8')],_0x1a10f2[_0x59d1('0x1f')],_0x1a11ef));})[_0x59d1('0x20')](function(_0x3cf1c5){logger[_0x59d1('0xe')](util[_0x59d1('0x18')](_0x59d1('0x21'),_0x10f4c0[_0x59d1('0x6')],_0x10f4c0[_0x59d1('0x8')],_0x3cf1c5[_0x59d1('0x1f')],_0x3cf1c5[_0x59d1('0x22')],_0x3cf1c5['message']));});};
\ No newline at end of file
+var _0x93eb=[',\x20request\x20body:\x20','object','stringify','%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','lodash','mustache','../../../../config/logger','exec','data1','toUpperCase','render','data2','data5','number','headers','data6','parse','error','stack','GET','DELETE','POST','PUT','data7','body','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','then','isNil'];(function(_0x445ded,_0x235f04){var _0x4808e7=function(_0x3d1702){while(--_0x3d1702){_0x445ded['push'](_0x445ded['shift']());}};_0x4808e7(++_0x235f04);}(_0x93eb,0x8b));var _0xb93e=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x93eb[_0x178e48];return _0x440d7e;};'use strict';var rp=require('request-promise');var util=require('util');var _=require(_0xb93e('0x0'));var Mustache=require(_0xb93e('0x1'));var logger=require(_0xb93e('0x2'))('trigger');exports[_0xb93e('0x3')]=function(_0x457b90,_0x1aa855){var _0x527c39,_0x384b7d;var _0x14c137={'method':_0x457b90[_0xb93e('0x4')][_0xb93e('0x5')](),'uri':Mustache[_0xb93e('0x6')](_0x457b90[_0xb93e('0x7')],_0x1aa855),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x457b90[_0xb93e('0x8')])===_0xb93e('0x9')&&parseInt(_0x457b90['data5'])>=0x1&&parseInt(_0x457b90[_0xb93e('0x8')])<=0xa?parseInt(_0x457b90[_0xb93e('0x8')])*0x3e8:0x5*0x3e8};try{_0x14c137[_0xb93e('0xa')]=_0x457b90[_0xb93e('0xb')]?JSON[_0xb93e('0xc')](Mustache['render'](_0x457b90[_0xb93e('0xb')],_0x1aa855)):{};}catch(_0xb4e5f3){logger[_0xb93e('0xd')](_0xb4e5f3[_0xb93e('0xe')]);}switch(_0x457b90[_0xb93e('0x4')][_0xb93e('0x5')]()){case _0xb93e('0xf'):case _0xb93e('0x10'):_0x527c39=null;_0x14c137['qs']=_0x1aa855;break;case _0xb93e('0x11'):case _0xb93e('0x12'):if(_0x457b90[_0xb93e('0x13')]){try{_0x527c39=JSON['parse'](Mustache[_0xb93e('0x6')](_0x457b90[_0xb93e('0x13')],_0x1aa855));_0x14c137[_0xb93e('0x14')]=_0x527c39;}catch(_0x2a7d51){logger[_0xb93e('0xd')](_0x2a7d51[_0xb93e('0xe')]);logger[_0xb93e('0xd')]('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x527c39=_0x1aa855;_0x14c137['body']=_0x527c39;}break;}logger[_0xb93e('0x15')](util[_0xb93e('0x16')](_0xb93e('0x17'),_0x457b90['data1'],_0x457b90[_0xb93e('0x7')],JSON['stringify'](_0x14c137)));rp(_0x14c137)[_0xb93e('0x18')](function(_0x2848f4){_0x527c39=!_[_0xb93e('0x19')](_0x527c39)?_0xb93e('0x1a')+_0x527c39:'';_0x384b7d=typeof _0x2848f4[_0xb93e('0x14')]===_0xb93e('0x1b')?JSON[_0xb93e('0x1c')](_0x2848f4[_0xb93e('0x14')]):_0x2848f4[_0xb93e('0x14')];logger[_0xb93e('0x15')](util[_0xb93e('0x16')](_0xb93e('0x1d'),_0x457b90[_0xb93e('0x4')],_0x457b90[_0xb93e('0x7')],_0x2848f4[_0xb93e('0x1e')],_0x384b7d));})[_0xb93e('0x1f')](function(_0x533bbb){logger[_0xb93e('0xd')](util[_0xb93e('0x16')](_0xb93e('0x20'),_0x457b90['data1'],_0x457b90[_0xb93e('0x7')],_0x533bbb[_0xb93e('0x1e')],_0x533bbb['name'],_0x533bbb['message']));});};
\ No newline at end of file
index 70e0fc1..aba9839 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa14d=['routing','client','request','then','debug','rpc','error','message','result','catch','exports','jayson/promise','bluebird','../../config/logger'];(function(_0x1f0ad7,_0xbdbf69){var _0xc907ef=function(_0x8bc3ef){while(--_0x8bc3ef){_0x1f0ad7['push'](_0x1f0ad7['shift']());}};_0xc907ef(++_0xbdbf69);}(_0xa14d,0x1bd));var _0xda14=function(_0x5128d7,_0x3e828f){_0x5128d7=_0x5128d7-0x0;var _0x3e30b5=_0xa14d[_0x5128d7];return _0x3e30b5;};'use strict';var jayson=require(_0xda14('0x0'));var BPromise=require(_0xda14('0x1'));var logger=require(_0xda14('0x2'))(_0xda14('0x3'));var client=jayson[_0xda14('0x4')]['http']({'port':0x2329});client['Request']=function(_0x454350,_0x3f5e94){return new BPromise(function(_0x2ac006,_0x3d86c3){return client[_0xda14('0x5')](_0x454350,_0x3f5e94)[_0xda14('0x6')](function(_0x599656){logger[_0xda14('0x7')](_0xda14('0x8'),_0xda14('0x3'),_0x454350,_0x3f5e94,_0x599656);if(_0x599656[_0xda14('0x9')]){logger[_0xda14('0x9')](_0xda14('0x8'),_0xda14('0x3'),_0x454350,_0x599656[_0xda14('0x9')][_0xda14('0xa')],_0x3f5e94);return _0x3d86c3(_0x599656[_0xda14('0x9')]['message']);}else{return _0x2ac006(_0x599656[_0xda14('0xb')]);}})[_0xda14('0xc')](function(_0x51ab54){logger[_0xda14('0x9')](_0xda14('0x8'),_0xda14('0x3'),_0x454350,_0x51ab54,_0x3f5e94);return _0x3d86c3(_0x51ab54);});});};module[_0xda14('0xd')]=client;
\ No newline at end of file
+var _0xd4cf=['then','debug','rpc','error','message','result','catch','exports','jayson/promise','bluebird','routing','client','Request'];(function(_0x459316,_0x299840){var _0x35fc16=function(_0x51b399){while(--_0x51b399){_0x459316['push'](_0x459316['shift']());}};_0x35fc16(++_0x299840);}(_0xd4cf,0x70));var _0xfd4c=function(_0x582f72,_0x886d8){_0x582f72=_0x582f72-0x0;var _0x4cd5fe=_0xd4cf[_0x582f72];return _0x4cd5fe;};'use strict';var jayson=require(_0xfd4c('0x0'));var BPromise=require(_0xfd4c('0x1'));var logger=require('../../config/logger')(_0xfd4c('0x2'));var client=jayson[_0xfd4c('0x3')]['http']({'port':0x2329});client[_0xfd4c('0x4')]=function(_0x1a6bbe,_0x5e0582){return new BPromise(function(_0x6b8aad,_0x26956a){return client['request'](_0x1a6bbe,_0x5e0582)[_0xfd4c('0x5')](function(_0xb4e446){logger[_0xfd4c('0x6')](_0xfd4c('0x7'),_0xfd4c('0x2'),_0x1a6bbe,_0x5e0582,_0xb4e446);if(_0xb4e446[_0xfd4c('0x8')]){logger[_0xfd4c('0x8')]('rpc','routing',_0x1a6bbe,_0xb4e446[_0xfd4c('0x8')][_0xfd4c('0x9')],_0x5e0582);return _0x26956a(_0xb4e446['error'][_0xfd4c('0x9')]);}else{return _0x6b8aad(_0xb4e446[_0xfd4c('0xa')]);}})[_0xfd4c('0xb')](function(_0x5016f5){logger[_0xfd4c('0x8')](_0xfd4c('0x7'),_0xfd4c('0x2'),_0x1a6bbe,_0x5016f5,_0x5e0582);return _0x26956a(_0x5016f5);});});};module[_0xfd4c('0xc')]=client;
\ No newline at end of file
index 45b4bde..5928908 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3970=['bluebird','./server','./lib/email','./rpc/setting','resolve','then','getMailAccounts','refresh','mailAccounts','listen','loginMailFrequency','catch','log'];(function(_0x18c01b,_0x239733){var _0x4f927b=function(_0x1cddec){while(--_0x1cddec){_0x18c01b['push'](_0x18c01b['shift']());}};_0x4f927b(++_0x239733);}(_0x3970,0x1d4));var _0x0397=function(_0x2df724,_0x411382){_0x2df724=_0x2df724-0x0;var _0x1b2504=_0x3970[_0x2df724];return _0x1b2504;};'use strict';var BPromise=require(_0x0397('0x0'));var server=require(_0x0397('0x1'));var Realtime=require('./realtime');var EmailChannel=require(_0x0397('0x2'));var mailAccount=require('./rpc/mailAccount');var setting=require(_0x0397('0x3'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0x0397('0x4')]()[_0x0397('0x5')](mailAccount[_0x0397('0x6')]())[_0x0397('0x5')](realtime['initMailAccounts']())[_0x0397('0x5')](function(){email[_0x0397('0x7')](realtime[_0x0397('0x8')]);return realtime;});}function main(){return server[_0x0397('0x9')](realtime,email)[_0x0397('0x5')](function(){return initRealtime();})[_0x0397('0x5')](function(){return setting['getSettings']();})['then'](function(_0xaef240){return setInterval(initRealtime,_0xaef240[_0x0397('0xa')]*0x3e8);})[_0x0397('0xb')](function(_0x4b87cf){console[_0x0397('0xc')](_0x4b87cf);});}main();
\ No newline at end of file
+var _0xc4af=['initMailAccounts','refresh','mailAccounts','listen','getSettings','loginMailFrequency','catch','log','bluebird','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','resolve','getMailAccounts','then'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xc4af,0x88));var _0xfc4a=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xc4af[_0x501510];return _0x1e6ee5;};'use strict';var BPromise=require(_0xfc4a('0x0'));var server=require('./server');var Realtime=require(_0xfc4a('0x1'));var EmailChannel=require(_0xfc4a('0x2'));var mailAccount=require(_0xfc4a('0x3'));var setting=require(_0xfc4a('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xfc4a('0x5')]()['then'](mailAccount[_0xfc4a('0x6')]())[_0xfc4a('0x7')](realtime[_0xfc4a('0x8')]())[_0xfc4a('0x7')](function(){email[_0xfc4a('0x9')](realtime[_0xfc4a('0xa')]);return realtime;});}function main(){return server[_0xfc4a('0xb')](realtime,email)[_0xfc4a('0x7')](function(){return initRealtime();})[_0xfc4a('0x7')](function(){return setting[_0xfc4a('0xc')]();})[_0xfc4a('0x7')](function(_0x18f5f3){return setInterval(initRealtime,_0x18f5f3[_0xfc4a('0xd')]*0x3e8);})[_0xfc4a('0xe')](function(_0x330b6e){console[_0xfc4a('0xf')](_0x330b6e);});}main();
\ No newline at end of file
index 20e906a..919baf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a3a=['lastSync','sendMail','smtp','send','verifySmtp','Smtp','verify','verified','lodash','moment','bluebird','md5','../../../config/environment','../../../config/logger','email','redis','defaults','./smtp','info','start\x20email\x20channel','mailAccounts','emit','name','key','active','Imap','status','messageStatus','total','isNil','stringify','prototype','refresh','hasOwnProperty','imapAccounts','box','handleImapBox','handleImapEmail','end','bind','error','handleImapError','disabled','connected','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','handleImapEnd'];(function(_0x4c93f5,_0x45d8e9){var _0x2f856e=function(_0x4542f6){while(--_0x4542f6){_0x4c93f5['push'](_0x4c93f5['shift']());}};_0x2f856e(++_0x45d8e9);}(_0x2a3a,0x1ee));var _0xa2a3=function(_0x2c4dc5,_0x4393e6){_0x2c4dc5=_0x2c4dc5-0x0;var _0x39dd48=_0x2a3a[_0x2c4dc5];return _0x39dd48;};'use strict';var _=require(_0xa2a3('0x0'));var moment=require(_0xa2a3('0x1'));var BPromise=require(_0xa2a3('0x2'));var md5=require(_0xa2a3('0x3'));var Redis=require('ioredis');var config=require(_0xa2a3('0x4'));var logger=require(_0xa2a3('0x5'))(_0xa2a3('0x6'));config[_0xa2a3('0x7')]=_[_0xa2a3('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa2a3('0x7')]));var EmailImap=require('./imap');var EmailSmtp=require(_0xa2a3('0x9'));var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x20a82c){logger[_0xa2a3('0xa')](_0xa2a3('0xb'));this['mailAccounts']=_0x20a82c[_0xa2a3('0xc')];this['imapAccounts']={};this['smtp']=new EmailSmtp();}EmailChannel['prototype'][_0xa2a3('0xd')]=function(_0x18591e){var _0x12effe=this['mailAccounts'][_0x18591e];var _0x4eabb4={'id':_0x12effe['id'],'name':_0x12effe[_0xa2a3('0xe')],'key':_0x12effe[_0xa2a3('0xf')],'active':_0x12effe[_0xa2a3('0x10')],'Imap':{'status':_0x12effe[_0xa2a3('0x11')][_0xa2a3('0x12')],'messageStatus':_0x12effe['Imap'][_0xa2a3('0x13')],'total':_0x12effe[_0xa2a3('0x11')][_0xa2a3('0x14')]}};if(_[_0xa2a3('0x15')](md5Accounts[_0x18591e])){md5Accounts[_0x18591e]={};}var _0x4570db=md5(JSON[_0xa2a3('0x16')](_0x4eabb4));if(md5Accounts[_0x18591e][_0xa2a3('0x3')]!==_0x4570db){md5Accounts[_0x18591e][_0xa2a3('0x3')]=_0x4570db;io[_0xa2a3('0xd')]('mailAccount:update',_0x4eabb4);}};EmailChannel[_0xa2a3('0x17')][_0xa2a3('0x18')]=function(_0x1ac161){for(var _0x376602 in _0x1ac161){if(_0x1ac161[_0xa2a3('0x19')](_0x376602)){if(_0x1ac161[_0x376602][_0xa2a3('0x11')]&&_0x1ac161[_0x376602]['active']){var _0x490eae=_0x1ac161[_0x376602][_0xa2a3('0x11')];if(!this[_0xa2a3('0x1a')][_0xa2a3('0x19')](_0x490eae['id'])){this['imapAccounts'][_0x490eae['id']]=new EmailImap(_0x490eae,_0x1ac161[_0x376602]['email']);this[_0xa2a3('0x1a')][_0x490eae['id']]['on'](_0xa2a3('0x1b'),this[_0xa2a3('0x1c')]['bind'](this,_0x376602));this[_0xa2a3('0x1a')][_0x490eae['id']]['on'](_0xa2a3('0x6'),this[_0xa2a3('0x1d')]['bind'](this,_0x376602));this[_0xa2a3('0x1a')][_0x490eae['id']]['on'](_0xa2a3('0x1e'),this['handleImapEnd'][_0xa2a3('0x1f')](this,_0x376602));this[_0xa2a3('0x1a')][_0x490eae['id']]['on'](_0xa2a3('0x20'),this[_0xa2a3('0x21')][_0xa2a3('0x1f')](this,_0x376602));}}else{if(_[_0xa2a3('0x15')](this['mailAccounts'][_0x376602][_0xa2a3('0x11')])){this['mailAccounts'][_0x376602][_0xa2a3('0x11')]={};}this['mailAccounts'][_0x376602][_0xa2a3('0x11')]['status']=_0xa2a3('0x22');this[_0xa2a3('0xc')][_0x376602][_0xa2a3('0x11')]['messageStatus']='';this['emit'](_0x376602);}}}};EmailChannel[_0xa2a3('0x17')][_0xa2a3('0x1c')]=function(_0x1fd429,_0x42a38a){if(this['mailAccounts'][_0x1fd429]){this[_0xa2a3('0xc')][_0x1fd429][_0xa2a3('0x11')][_0xa2a3('0x12')]=_0xa2a3('0x23');this[_0xa2a3('0xc')][_0x1fd429]['Imap'][_0xa2a3('0x13')]=_0x42a38a[_0xa2a3('0xe')];if(_0x42a38a['messages']){this[_0xa2a3('0xc')][_0x1fd429][_0xa2a3('0x11')][_0xa2a3('0x14')]=_0x42a38a[_0xa2a3('0x24')][_0xa2a3('0x14')];}return this['emit'](_0x1fd429);}};EmailChannel['prototype'][_0xa2a3('0x1d')]=function(_0x201781,_0x4acc35){logger['info'](_0xa2a3('0x25'),_0x4acc35[_0xa2a3('0x26')],_0x4acc35[_0xa2a3('0x27')],_0x4acc35[_0xa2a3('0x28')],_0x201781);if(this['mailAccounts'][_0x201781]){return mailAccount[_0xa2a3('0x29')](_0x201781,_0x4acc35)[_0xa2a3('0x2a')](function(_0xe3979f){if(_0xe3979f){logger[_0xa2a3('0xa')](_0xa2a3('0x2b'));}})[_0xa2a3('0x2c')](function(_0x2fe80a){logger[_0xa2a3('0x20')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON['stringify'](_0x2fe80a));});}};EmailChannel[_0xa2a3('0x17')][_0xa2a3('0x2d')]=function(_0x26afc0){if(this[_0xa2a3('0xc')][_0x26afc0]&&this['mailAccounts'][_0x26afc0]['Imap']){if(this['imapAccounts'][this['mailAccounts'][_0x26afc0][_0xa2a3('0x11')]['id']]){delete this['imapAccounts'][this[_0xa2a3('0xc')][_0x26afc0][_0xa2a3('0x11')]['id']];}this[_0xa2a3('0xc')][_0x26afc0][_0xa2a3('0x11')][_0xa2a3('0x2e')]=moment();this['emit'](_0x26afc0);}};EmailChannel['prototype']['handleImapError']=function(_0x313930,_0x281bcc){if(this['mailAccounts'][_0x313930]){this['mailAccounts'][_0x313930]['Imap'][_0xa2a3('0x12')]=_0xa2a3('0x20');this['mailAccounts'][_0x313930][_0xa2a3('0x11')][_0xa2a3('0x13')]=_0x281bcc;return this[_0xa2a3('0xd')](_0x313930);}};EmailChannel['prototype'][_0xa2a3('0x2f')]=function(_0x46c33e,_0x51f501){return this[_0xa2a3('0x30')][_0xa2a3('0x31')](_0x46c33e,_0x51f501);};EmailChannel[_0xa2a3('0x17')][_0xa2a3('0x32')]=function(_0x37ead4){var _0x335dee=this;if(this[_0xa2a3('0xc')][_0x37ead4['id']]){if(_[_0xa2a3('0x15')](this[_0xa2a3('0xc')][_0x37ead4['id']][_0xa2a3('0x33')])){this['mailAccounts'][_0x37ead4['id']]['Smtp']={};}this['mailAccounts'][_0x37ead4['id']][_0xa2a3('0x33')]['lastSync']=moment();return new BPromise(function(_0x371e99,_0x4bfb98){return _0x335dee[_0xa2a3('0x30')][_0xa2a3('0x34')](_0x37ead4)[_0xa2a3('0x2a')](function(_0x33c9dd){_0x335dee[_0xa2a3('0xc')][_0x37ead4['id']][_0xa2a3('0x33')][_0xa2a3('0x12')]=_0xa2a3('0x35');_0x335dee[_0xa2a3('0xc')][_0x37ead4['id']][_0xa2a3('0x33')][_0xa2a3('0x13')]='';_0x335dee['emit'](_0x37ead4['id']);_0x371e99(_0x33c9dd);})[_0xa2a3('0x2c')](function(_0x2c0416){_0x335dee[_0xa2a3('0xc')][_0x37ead4['id']][_0xa2a3('0x33')][_0xa2a3('0x12')]=_0xa2a3('0x20');_0x335dee[_0xa2a3('0xc')][_0x37ead4['id']][_0xa2a3('0x33')][_0xa2a3('0x13')]=_0x2c0416;_0x335dee['emit'](_0x37ead4['id']);_0x4bfb98(_0x2c0416);});});}return this[_0xa2a3('0x30')][_0xa2a3('0x34')](_0x37ead4);};module['exports']=EmailChannel;
\ No newline at end of file
+var _0xccb7=['Smtp','verify','verified','catch','exports','lodash','moment','md5','ioredis','email','redis','defaults','localhost','./imap','./smtp','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','prototype','emit','key','Imap','status','total','stringify','hasOwnProperty','handleImapBox','bind','handleImapEmail','end','imapAccounts','error','handleImapError','isNil','connected','messageStatus','name','messages','info','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','notify','Mail\x20accepted\x20from\x20routing','handleImapEnd','lastSync','sendMail','smtp','send','verifySmtp'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xccb7,0x19d));var _0x7ccb=function(_0x420071,_0x4db5ea){_0x420071=_0x420071-0x0;var _0x58a4d7=_0xccb7[_0x420071];return _0x58a4d7;};'use strict';var _=require(_0x7ccb('0x0'));var moment=require(_0x7ccb('0x1'));var BPromise=require('bluebird');var md5=require(_0x7ccb('0x2'));var Redis=require(_0x7ccb('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x7ccb('0x4'));config[_0x7ccb('0x5')]=_[_0x7ccb('0x6')](config[_0x7ccb('0x5')],{'host':_0x7ccb('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x7ccb('0x5')]));var EmailImap=require(_0x7ccb('0x8'));var EmailSmtp=require(_0x7ccb('0x9'));var mailAccount=require(_0x7ccb('0xa'));var md5Accounts={};function EmailChannel(_0x58ed1b){logger['info'](_0x7ccb('0xb'));this[_0x7ccb('0xc')]=_0x58ed1b[_0x7ccb('0xc')];this['imapAccounts']={};this['smtp']=new EmailSmtp();}EmailChannel[_0x7ccb('0xd')][_0x7ccb('0xe')]=function(_0x5b632f){var _0xa73650=this['mailAccounts'][_0x5b632f];var _0x20dd0f={'id':_0xa73650['id'],'name':_0xa73650['name'],'key':_0xa73650[_0x7ccb('0xf')],'active':_0xa73650['active'],'Imap':{'status':_0xa73650[_0x7ccb('0x10')][_0x7ccb('0x11')],'messageStatus':_0xa73650['Imap']['messageStatus'],'total':_0xa73650[_0x7ccb('0x10')][_0x7ccb('0x12')]}};if(_['isNil'](md5Accounts[_0x5b632f])){md5Accounts[_0x5b632f]={};}var _0x48dc65=md5(JSON[_0x7ccb('0x13')](_0x20dd0f));if(md5Accounts[_0x5b632f][_0x7ccb('0x2')]!==_0x48dc65){md5Accounts[_0x5b632f][_0x7ccb('0x2')]=_0x48dc65;io[_0x7ccb('0xe')]('mailAccount:update',_0x20dd0f);}};EmailChannel[_0x7ccb('0xd')]['refresh']=function(_0x59fb12){for(var _0x56716d in _0x59fb12){if(_0x59fb12[_0x7ccb('0x14')](_0x56716d)){if(_0x59fb12[_0x56716d]['Imap']&&_0x59fb12[_0x56716d]['active']){var _0x452e34=_0x59fb12[_0x56716d][_0x7ccb('0x10')];if(!this['imapAccounts'][_0x7ccb('0x14')](_0x452e34['id'])){this['imapAccounts'][_0x452e34['id']]=new EmailImap(_0x452e34,_0x59fb12[_0x56716d]['email']);this['imapAccounts'][_0x452e34['id']]['on']('box',this[_0x7ccb('0x15')][_0x7ccb('0x16')](this,_0x56716d));this['imapAccounts'][_0x452e34['id']]['on'](_0x7ccb('0x4'),this[_0x7ccb('0x17')][_0x7ccb('0x16')](this,_0x56716d));this['imapAccounts'][_0x452e34['id']]['on'](_0x7ccb('0x18'),this['handleImapEnd']['bind'](this,_0x56716d));this[_0x7ccb('0x19')][_0x452e34['id']]['on'](_0x7ccb('0x1a'),this[_0x7ccb('0x1b')][_0x7ccb('0x16')](this,_0x56716d));}}else{if(_[_0x7ccb('0x1c')](this[_0x7ccb('0xc')][_0x56716d][_0x7ccb('0x10')])){this[_0x7ccb('0xc')][_0x56716d][_0x7ccb('0x10')]={};}this[_0x7ccb('0xc')][_0x56716d][_0x7ccb('0x10')][_0x7ccb('0x11')]='disabled';this['mailAccounts'][_0x56716d][_0x7ccb('0x10')]['messageStatus']='';this[_0x7ccb('0xe')](_0x56716d);}}}};EmailChannel[_0x7ccb('0xd')][_0x7ccb('0x15')]=function(_0x3da82a,_0x5d14e6){if(this[_0x7ccb('0xc')][_0x3da82a]){this[_0x7ccb('0xc')][_0x3da82a]['Imap'][_0x7ccb('0x11')]=_0x7ccb('0x1d');this['mailAccounts'][_0x3da82a]['Imap'][_0x7ccb('0x1e')]=_0x5d14e6[_0x7ccb('0x1f')];if(_0x5d14e6['messages']){this[_0x7ccb('0xc')][_0x3da82a]['Imap']['total']=_0x5d14e6[_0x7ccb('0x20')][_0x7ccb('0x12')];}return this[_0x7ccb('0xe')](_0x3da82a);}};EmailChannel[_0x7ccb('0xd')][_0x7ccb('0x17')]=function(_0x584691,_0xde9d9f){logger[_0x7ccb('0x21')](_0x7ccb('0x22'),_0xde9d9f[_0x7ccb('0x23')],_0xde9d9f[_0x7ccb('0x24')],_0xde9d9f[_0x7ccb('0x25')],_0x584691);if(this[_0x7ccb('0xc')][_0x584691]){return mailAccount[_0x7ccb('0x26')](_0x584691,_0xde9d9f)['then'](function(_0x515e4a){if(_0x515e4a){logger[_0x7ccb('0x21')](_0x7ccb('0x27'));}})['catch'](function(_0x55c4e3){logger[_0x7ccb('0x1a')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0x7ccb('0x13')](_0x55c4e3));});}};EmailChannel['prototype'][_0x7ccb('0x28')]=function(_0x451c39){if(this[_0x7ccb('0xc')][_0x451c39]&&this[_0x7ccb('0xc')][_0x451c39][_0x7ccb('0x10')]){if(this[_0x7ccb('0x19')][this['mailAccounts'][_0x451c39][_0x7ccb('0x10')]['id']]){delete this[_0x7ccb('0x19')][this[_0x7ccb('0xc')][_0x451c39]['Imap']['id']];}this[_0x7ccb('0xc')][_0x451c39][_0x7ccb('0x10')][_0x7ccb('0x29')]=moment();this['emit'](_0x451c39);}};EmailChannel[_0x7ccb('0xd')][_0x7ccb('0x1b')]=function(_0x32651c,_0x5e2783){if(this[_0x7ccb('0xc')][_0x32651c]){this['mailAccounts'][_0x32651c][_0x7ccb('0x10')][_0x7ccb('0x11')]=_0x7ccb('0x1a');this[_0x7ccb('0xc')][_0x32651c][_0x7ccb('0x10')][_0x7ccb('0x1e')]=_0x5e2783;return this[_0x7ccb('0xe')](_0x32651c);}};EmailChannel[_0x7ccb('0xd')][_0x7ccb('0x2a')]=function(_0x4e594a,_0x52b43f){return this[_0x7ccb('0x2b')][_0x7ccb('0x2c')](_0x4e594a,_0x52b43f);};EmailChannel['prototype'][_0x7ccb('0x2d')]=function(_0x37cc6d){var _0x35d9bd=this;if(this[_0x7ccb('0xc')][_0x37cc6d['id']]){if(_[_0x7ccb('0x1c')](this[_0x7ccb('0xc')][_0x37cc6d['id']][_0x7ccb('0x2e')])){this[_0x7ccb('0xc')][_0x37cc6d['id']][_0x7ccb('0x2e')]={};}this['mailAccounts'][_0x37cc6d['id']]['Smtp'][_0x7ccb('0x29')]=moment();return new BPromise(function(_0x49e16a,_0xf6a3f8){return _0x35d9bd[_0x7ccb('0x2b')][_0x7ccb('0x2f')](_0x37cc6d)['then'](function(_0x238a20){_0x35d9bd[_0x7ccb('0xc')][_0x37cc6d['id']][_0x7ccb('0x2e')][_0x7ccb('0x11')]=_0x7ccb('0x30');_0x35d9bd['mailAccounts'][_0x37cc6d['id']][_0x7ccb('0x2e')][_0x7ccb('0x1e')]='';_0x35d9bd[_0x7ccb('0xe')](_0x37cc6d['id']);_0x49e16a(_0x238a20);})[_0x7ccb('0x31')](function(_0x1e17a7){_0x35d9bd[_0x7ccb('0xc')][_0x37cc6d['id']][_0x7ccb('0x2e')][_0x7ccb('0x11')]=_0x7ccb('0x1a');_0x35d9bd['mailAccounts'][_0x37cc6d['id']][_0x7ccb('0x2e')][_0x7ccb('0x1e')]=_0x1e17a7;_0x35d9bd['emit'](_0x37cc6d['id']);_0xf6a3f8(_0x1e17a7);});});}return this[_0x7ccb('0x2b')][_0x7ccb('0x2f')](_0x37cc6d);};module[_0x7ccb('0x32')]=EmailChannel;
\ No newline at end of file
index 15669d7..f8ff259 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ee4=['handleFetchError','handleFetchEnd','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleSimpleParser','handleMessageEnd','parser','textCode','upperFirst','exports','path','util','imap','simpleParser','iconv','events','EventEmitter','./utils','email','mailbox','INBOX','account','getAccount','once','ready','handleReady','bind','end','handleEnd','error','inherits','prototype','connTimeout','authTimeout','isNil','service','authentication','user','password','host','port','tls','autotls','getHost','openBox','handleOpenBox','handleError','emit','box','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen','length','fetch'];(function(_0x1c828c,_0x30a600){var _0x5abb71=function(_0x2efcfd){while(--_0x2efcfd){_0x1c828c['push'](_0x1c828c['shift']());}};_0x5abb71(++_0x30a600);}(_0x1ee4,0xbe));var _0x41ee=function(_0x31cb1b,_0x57316a){_0x31cb1b=_0x31cb1b-0x0;var _0x3dee77=_0x1ee4[_0x31cb1b];return _0x3dee77;};'use strict';var fs=require('fs');var path=require(_0x41ee('0x0'));var util=require(_0x41ee('0x1'));var Imap=require(_0x41ee('0x2'));var _=require('lodash');var rs=require('randomstring');var simpleParser=require('mailparser')[_0x41ee('0x3')];var Iconv=require(_0x41ee('0x4'))['Iconv'];var EventEmitter=require(_0x41ee('0x5'))[_0x41ee('0x6')];var utils=require(_0x41ee('0x7'));var logger=require('../../../config/logger')(_0x41ee('0x8'));function EmailImap(_0xd08956,_0x4923df){this[_0x41ee('0x9')]=_0x41ee('0xa');this[_0x41ee('0xb')]=this[_0x41ee('0xc')](_0xd08956,_0x4923df);this[_0x41ee('0x2')]=new Imap(this['account']);this['imap'][_0x41ee('0xd')](_0x41ee('0xe'),this[_0x41ee('0xf')][_0x41ee('0x10')](this));this[_0x41ee('0x2')][_0x41ee('0xd')](_0x41ee('0x11'),this[_0x41ee('0x12')][_0x41ee('0x10')](this));this[_0x41ee('0x2')]['on'](_0x41ee('0x13'),this['handleError'][_0x41ee('0x10')](this));this[_0x41ee('0x2')]['connect']();}util[_0x41ee('0x14')](EmailImap,EventEmitter);EmailImap[_0x41ee('0x15')][_0x41ee('0xc')]=function(_0x5121da,_0x4a4aa6){var _0x52247f={'connTimeout':_0x5121da[_0x41ee('0x16')]?_0x5121da[_0x41ee('0x16')]*0x3e8:0x2710,'authTimeout':_0x5121da[_0x41ee('0x17')]?_0x5121da[_0x41ee('0x17')]*0x3e8:0x1388};if(_[_0x41ee('0x18')](_0x5121da[_0x41ee('0x19')])){if(_0x5121da[_0x41ee('0x1a')]){_0x52247f[_0x41ee('0x1b')]=_0x5121da[_0x41ee('0x1b')];_0x52247f[_0x41ee('0x1c')]=_0x5121da[_0x41ee('0x1c')];}_0x52247f[_0x41ee('0x1d')]=_0x5121da['host'];_0x52247f[_0x41ee('0x1e')]=_0x5121da[_0x41ee('0x1e')]||0x3e1;if(_0x5121da[_0x41ee('0x1f')]){_0x52247f[_0x41ee('0x1f')]=!![];}else{_0x52247f[_0x41ee('0x1f')]=![];_0x52247f[_0x41ee('0x20')]='required';}}else{_0x52247f[_0x41ee('0x1b')]=_0x5121da[_0x41ee('0x1b')];_0x52247f['password']=_0x5121da[_0x41ee('0x1c')];_0x52247f[_0x41ee('0x1d')]=utils[_0x41ee('0x21')](_0x5121da[_0x41ee('0x19')]);_0x52247f[_0x41ee('0x1e')]=0x3e1;_0x52247f[_0x41ee('0x1f')]=!![];}_0x52247f[_0x41ee('0x8')]=_0x4a4aa6||_0x5121da[_0x41ee('0x1b')]||'anonymous@xcally.com';return _0x52247f;};EmailImap[_0x41ee('0x15')][_0x41ee('0xf')]=function(){this[_0x41ee('0x2')][_0x41ee('0x22')](this['mailbox'],![],this[_0x41ee('0x23')][_0x41ee('0x10')](this));};EmailImap[_0x41ee('0x15')]['handleOpenBox']=function(_0x459e6d,_0x2b0ffb){if(_0x459e6d){this[_0x41ee('0x24')](_0x459e6d,!![]);}else{this[_0x41ee('0x25')](_0x41ee('0x26'),_0x2b0ffb);this[_0x41ee('0x27')]();}};EmailImap['prototype'][_0x41ee('0x28')]=function(_0x19c997){if(_0x19c997){this[_0x41ee('0x24')](_0x19c997,!![]);}else{this['imap'][_0x41ee('0x11')]();}};EmailImap[_0x41ee('0x15')][_0x41ee('0x27')]=function(){this[_0x41ee('0x2')][_0x41ee('0x29')]([_0x41ee('0x2a')],this['handleReadUnseen'][_0x41ee('0x10')](this));};EmailImap['prototype'][_0x41ee('0x2b')]=function(_0x8fa1e9,_0x72023f){if(_0x8fa1e9){this[_0x41ee('0x24')](_0x8fa1e9,!![]);}else{if(_0x72023f[_0x41ee('0x2c')]){try{var _0x12fcc5=this[_0x41ee('0x2')][_0x41ee('0x2d')](_0x72023f,{'bodies':'','markSeen':!![]});_0x12fcc5['on']('message',this['handleFetchMessage'][_0x41ee('0x10')](this));_0x12fcc5[_0x41ee('0xd')](_0x41ee('0x13'),this[_0x41ee('0x2e')][_0x41ee('0x10')](this));_0x12fcc5[_0x41ee('0xd')]('end',this[_0x41ee('0x2f')]['bind'](this));}catch(_0x1d6ddd){logger[_0x41ee('0x13')](_0x1d6ddd);}}else{this[_0x41ee('0x2')][_0x41ee('0x30')](!![],this['handleCloseBox'][_0x41ee('0x10')](this));}}};EmailImap[_0x41ee('0x15')]['handleFetchMessage']=function(_0x7c5632,_0x484b7e){_0x7c5632['on'](_0x41ee('0x31'),this[_0x41ee('0x32')][_0x41ee('0x10')](this));_0x7c5632[_0x41ee('0xd')](_0x41ee('0x33'),this[_0x41ee('0x34')][_0x41ee('0x10')](this));_0x7c5632[_0x41ee('0xd')](_0x41ee('0x11'),this['handleMessageEnd'][_0x41ee('0x10')](this));};EmailImap[_0x41ee('0x15')][_0x41ee('0x32')]=function(_0x410128,_0x3315c5){simpleParser(_0x410128,{'Iconv':Iconv},this[_0x41ee('0x35')][_0x41ee('0x10')](this));};EmailImap[_0x41ee('0x15')][_0x41ee('0x34')]=function(_0x3aede1){};EmailImap[_0x41ee('0x15')][_0x41ee('0x36')]=function(){};EmailImap[_0x41ee('0x15')]['handleSimpleParser']=function(_0x1b5dce,_0x5af190){if(_0x1b5dce){logger[_0x41ee('0x13')](_0x1b5dce);}else{var _0x5b66e2=this;utils[_0x41ee('0x37')](this[_0x41ee('0xb')],_0x5af190,function(_0x5dd60f){_0x5b66e2[_0x41ee('0x25')](_0x41ee('0x8'),_0x5dd60f);});}};EmailImap[_0x41ee('0x15')][_0x41ee('0x2f')]=function(){this[_0x41ee('0x2')][_0x41ee('0x30')](!![],this[_0x41ee('0x28')]['bind'](this));};EmailImap[_0x41ee('0x15')][_0x41ee('0x2e')]=function(_0x2cb887){this[_0x41ee('0x24')](_0x2cb887);this[_0x41ee('0x2')][_0x41ee('0x30')](!![],this[_0x41ee('0x28')][_0x41ee('0x10')](this));};EmailImap[_0x41ee('0x15')][_0x41ee('0x12')]=function(){this[_0x41ee('0x25')](_0x41ee('0x11'));};EmailImap[_0x41ee('0x15')][_0x41ee('0x24')]=function(_0x4d4cf5,_0x104ebe){logger[_0x41ee('0x13')](_0x41ee('0x24'),this['account']['email'],JSON['stringify'](_0x4d4cf5));var _0x2a9d4f='';if(_0x4d4cf5){if(_0x4d4cf5[_0x41ee('0x38')]){_0x2a9d4f=_0x4d4cf5[_0x41ee('0x38')];}else{for(var _0xfddfbf in _0x4d4cf5){if(_0x4d4cf5['hasOwnProperty'](_0xfddfbf)){_0x2a9d4f+=_[_0x41ee('0x39')](_0xfddfbf)+':\x20'+_0x4d4cf5[_0xfddfbf]+'\x0a';}}}}if(_0x104ebe){this[_0x41ee('0x2')]['end']();}else{this[_0x41ee('0x25')](_0x41ee('0x13'),_0x2a9d4f);this[_0x41ee('0x25')](_0x41ee('0x11'));}};module[_0x41ee('0x3a')]=EmailImap;
\ No newline at end of file
+var _0xc855=['handleFetchMessage','handleFetchError','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','textCode','hasOwnProperty','exports','path','imap','iconv','EventEmitter','./utils','../../../config/logger','INBOX','account','getAccount','once','ready','handleReady','end','handleEnd','bind','error','handleError','inherits','prototype','connTimeout','authTimeout','service','password','host','port','tls','autotls','required','user','getHost','email','openBox','mailbox','handleOpenBox','emit','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen','length','fetch','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc855,0xe8));var _0x5c85=function(_0x3c3fd3,_0x2d5161){_0x3c3fd3=_0x3c3fd3-0x0;var _0x42b020=_0xc855[_0x3c3fd3];return _0x42b020;};'use strict';var fs=require('fs');var path=require(_0x5c85('0x0'));var util=require('util');var Imap=require(_0x5c85('0x1'));var _=require('lodash');var rs=require('randomstring');var simpleParser=require('mailparser')['simpleParser'];var Iconv=require(_0x5c85('0x2'))['Iconv'];var EventEmitter=require('events')[_0x5c85('0x3')];var utils=require(_0x5c85('0x4'));var logger=require(_0x5c85('0x5'))('email');function EmailImap(_0x404dbb,_0x562e14){this['mailbox']=_0x5c85('0x6');this[_0x5c85('0x7')]=this[_0x5c85('0x8')](_0x404dbb,_0x562e14);this[_0x5c85('0x1')]=new Imap(this[_0x5c85('0x7')]);this[_0x5c85('0x1')][_0x5c85('0x9')](_0x5c85('0xa'),this[_0x5c85('0xb')]['bind'](this));this[_0x5c85('0x1')]['once'](_0x5c85('0xc'),this[_0x5c85('0xd')][_0x5c85('0xe')](this));this[_0x5c85('0x1')]['on'](_0x5c85('0xf'),this[_0x5c85('0x10')][_0x5c85('0xe')](this));this['imap']['connect']();}util[_0x5c85('0x11')](EmailImap,EventEmitter);EmailImap[_0x5c85('0x12')][_0x5c85('0x8')]=function(_0x5bbf0e,_0x526aa8){var _0x2e1065={'connTimeout':_0x5bbf0e[_0x5c85('0x13')]?_0x5bbf0e[_0x5c85('0x13')]*0x3e8:0x2710,'authTimeout':_0x5bbf0e[_0x5c85('0x14')]?_0x5bbf0e[_0x5c85('0x14')]*0x3e8:0x1388};if(_['isNil'](_0x5bbf0e[_0x5c85('0x15')])){if(_0x5bbf0e['authentication']){_0x2e1065['user']=_0x5bbf0e['user'];_0x2e1065[_0x5c85('0x16')]=_0x5bbf0e[_0x5c85('0x16')];}_0x2e1065['host']=_0x5bbf0e[_0x5c85('0x17')];_0x2e1065[_0x5c85('0x18')]=_0x5bbf0e[_0x5c85('0x18')]||0x3e1;if(_0x5bbf0e[_0x5c85('0x19')]){_0x2e1065['tls']=!![];}else{_0x2e1065[_0x5c85('0x19')]=![];_0x2e1065[_0x5c85('0x1a')]=_0x5c85('0x1b');}}else{_0x2e1065[_0x5c85('0x1c')]=_0x5bbf0e[_0x5c85('0x1c')];_0x2e1065[_0x5c85('0x16')]=_0x5bbf0e[_0x5c85('0x16')];_0x2e1065[_0x5c85('0x17')]=utils[_0x5c85('0x1d')](_0x5bbf0e[_0x5c85('0x15')]);_0x2e1065[_0x5c85('0x18')]=0x3e1;_0x2e1065[_0x5c85('0x19')]=!![];}_0x2e1065[_0x5c85('0x1e')]=_0x526aa8||_0x5bbf0e[_0x5c85('0x1c')]||'anonymous@xcally.com';return _0x2e1065;};EmailImap[_0x5c85('0x12')][_0x5c85('0xb')]=function(){this[_0x5c85('0x1')][_0x5c85('0x1f')](this[_0x5c85('0x20')],![],this[_0x5c85('0x21')][_0x5c85('0xe')](this));};EmailImap[_0x5c85('0x12')]['handleOpenBox']=function(_0x12c8e7,_0x5e4827){if(_0x12c8e7){this['handleError'](_0x12c8e7,!![]);}else{this[_0x5c85('0x22')]('box',_0x5e4827);this[_0x5c85('0x23')]();}};EmailImap[_0x5c85('0x12')][_0x5c85('0x24')]=function(_0x19f8a3){if(_0x19f8a3){this[_0x5c85('0x10')](_0x19f8a3,!![]);}else{this[_0x5c85('0x1')][_0x5c85('0xc')]();}};EmailImap[_0x5c85('0x12')][_0x5c85('0x23')]=function(){this[_0x5c85('0x1')][_0x5c85('0x25')]([_0x5c85('0x26')],this[_0x5c85('0x27')]['bind'](this));};EmailImap['prototype'][_0x5c85('0x27')]=function(_0x513014,_0x10c8d3){if(_0x513014){this[_0x5c85('0x10')](_0x513014,!![]);}else{if(_0x10c8d3[_0x5c85('0x28')]){try{var _0x570e9b=this[_0x5c85('0x1')][_0x5c85('0x29')](_0x10c8d3,{'bodies':'','markSeen':!![]});_0x570e9b['on'](_0x5c85('0x2a'),this[_0x5c85('0x2b')][_0x5c85('0xe')](this));_0x570e9b[_0x5c85('0x9')]('error',this[_0x5c85('0x2c')]['bind'](this));_0x570e9b['once'](_0x5c85('0xc'),this['handleFetchEnd'][_0x5c85('0xe')](this));}catch(_0x21ada8){logger[_0x5c85('0xf')](_0x21ada8);}}else{this[_0x5c85('0x1')][_0x5c85('0x2d')](!![],this[_0x5c85('0x24')]['bind'](this));}}};EmailImap['prototype'][_0x5c85('0x2b')]=function(_0x158e2e,_0x295a47){_0x158e2e['on'](_0x5c85('0x2e'),this[_0x5c85('0x2f')][_0x5c85('0xe')](this));_0x158e2e[_0x5c85('0x9')](_0x5c85('0x30'),this[_0x5c85('0x31')][_0x5c85('0xe')](this));_0x158e2e[_0x5c85('0x9')]('end',this[_0x5c85('0x32')]['bind'](this));};EmailImap[_0x5c85('0x12')][_0x5c85('0x2f')]=function(_0x2514bd,_0xc6a229){simpleParser(_0x2514bd,{'Iconv':Iconv},this[_0x5c85('0x33')][_0x5c85('0xe')](this));};EmailImap[_0x5c85('0x12')][_0x5c85('0x31')]=function(_0x1f6341){};EmailImap[_0x5c85('0x12')]['handleMessageEnd']=function(){};EmailImap[_0x5c85('0x12')][_0x5c85('0x33')]=function(_0x28e09f,_0x5c12d4){if(_0x28e09f){logger[_0x5c85('0xf')](_0x28e09f);}else{var _0x17a5ba=this;utils['parser'](this[_0x5c85('0x7')],_0x5c12d4,function(_0x35d5e8){_0x17a5ba['emit'](_0x5c85('0x1e'),_0x35d5e8);});}};EmailImap[_0x5c85('0x12')]['handleFetchEnd']=function(){this[_0x5c85('0x1')]['closeBox'](!![],this['handleCloseBox'][_0x5c85('0xe')](this));};EmailImap['prototype']['handleFetchError']=function(_0x2d2145){this[_0x5c85('0x10')](_0x2d2145);this[_0x5c85('0x1')][_0x5c85('0x2d')](!![],this[_0x5c85('0x24')][_0x5c85('0xe')](this));};EmailImap[_0x5c85('0x12')][_0x5c85('0xd')]=function(){this[_0x5c85('0x22')](_0x5c85('0xc'));};EmailImap[_0x5c85('0x12')][_0x5c85('0x10')]=function(_0x388066,_0x521b54){logger['error']('handleError',this[_0x5c85('0x7')][_0x5c85('0x1e')],JSON['stringify'](_0x388066));var _0x47eb3a='';if(_0x388066){if(_0x388066['textCode']){_0x47eb3a=_0x388066[_0x5c85('0x34')];}else{for(var _0xf32170 in _0x388066){if(_0x388066[_0x5c85('0x35')](_0xf32170)){_0x47eb3a+=_['upperFirst'](_0xf32170)+':\x20'+_0x388066[_0xf32170]+'\x0a';}}}}if(_0x521b54){this[_0x5c85('0x1')][_0x5c85('0xc')]();}else{this[_0x5c85('0x22')](_0x5c85('0xf'),_0x47eb3a);this[_0x5c85('0x22')](_0x5c85('0xc'));}};module[_0x5c85('0x36')]=EmailImap;
\ No newline at end of file
index 28c7075..e652281 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4312=['Not\x20verifired','exports','nodemailer','bluebird','nodemailer-plugin-inline-base64','prototype','send','sendMail','verify','createTransport','toString'];(function(_0x143fd9,_0x36d5d6){var _0x18f011=function(_0x6417c0){while(--_0x6417c0){_0x143fd9['push'](_0x143fd9['shift']());}};_0x18f011(++_0x36d5d6);}(_0x4312,0xb2));var _0x2431=function(_0x41f5a6,_0xb35c51){_0x41f5a6=_0x41f5a6-0x0;var _0x241efd=_0x4312[_0x41f5a6];return _0x241efd;};'use strict';var nodemailer=require(_0x2431('0x0'));var BPromise=require(_0x2431('0x1'));var inlineBase64=require(_0x2431('0x2'));function EmailSmtp(){}EmailSmtp[_0x2431('0x3')][_0x2431('0x4')]=function(_0x3051ad,_0xa20000){return new BPromise(function(_0x28b156,_0x1ccc35){var _0x54720e=nodemailer['createTransport'](_0x3051ad);_0x54720e['use']('compile',inlineBase64());_0x54720e[_0x2431('0x5')](_0xa20000,function(_0x171445,_0x1c0d89){if(_0x171445){_0x1ccc35(_0x171445['toString']());}else{_0x28b156(_0x1c0d89);}});});};EmailSmtp['prototype'][_0x2431('0x6')]=function(_0x287895){return new BPromise(function(_0x46a8d2,_0x1bb9de){var _0x5eb256=nodemailer[_0x2431('0x7')](_0x287895);_0x5eb256[_0x2431('0x6')](function(_0x32eb51,_0x963823){if(_0x32eb51){_0x1bb9de(_0x32eb51[_0x2431('0x8')]());}else{if(_0x963823){_0x46a8d2(_0x963823);}else{_0x1bb9de(_0x2431('0x9'));}}});});};module[_0x2431('0xa')]=EmailSmtp;
\ No newline at end of file
+var _0x700f=['Not\x20verifired','exports','nodemailer','bluebird','prototype','send','createTransport','use','compile','sendMail','toString','verify'];(function(_0x1dfce3,_0x491d21){var _0x127504=function(_0x3028cb){while(--_0x3028cb){_0x1dfce3['push'](_0x1dfce3['shift']());}};_0x127504(++_0x491d21);}(_0x700f,0x19a));var _0xf700=function(_0x3956e9,_0x3fc10a){_0x3956e9=_0x3956e9-0x0;var _0x310aaf=_0x700f[_0x3956e9];return _0x310aaf;};'use strict';var nodemailer=require(_0xf700('0x0'));var BPromise=require(_0xf700('0x1'));var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0xf700('0x2')][_0xf700('0x3')]=function(_0x4c6fb6,_0x478195){return new BPromise(function(_0x182e58,_0x22e230){var _0x5a1c1c=nodemailer[_0xf700('0x4')](_0x4c6fb6);_0x5a1c1c[_0xf700('0x5')](_0xf700('0x6'),inlineBase64());_0x5a1c1c[_0xf700('0x7')](_0x478195,function(_0x3f0e8d,_0x3b14b4){if(_0x3f0e8d){_0x22e230(_0x3f0e8d[_0xf700('0x8')]());}else{_0x182e58(_0x3b14b4);}});});};EmailSmtp[_0xf700('0x2')][_0xf700('0x9')]=function(_0x2f3e6a){return new BPromise(function(_0x55c815,_0x239a2b){var _0x57f5db=nodemailer[_0xf700('0x4')](_0x2f3e6a);_0x57f5db[_0xf700('0x9')](function(_0x24c4fd,_0x5500d8){if(_0x24c4fd){_0x239a2b(_0x24c4fd[_0xf700('0x8')]());}else{if(_0x5500d8){_0x55c815(_0x5500d8);}else{_0x239a2b(_0xf700('0xa'));}}});});};module[_0xf700('0xb')]=EmailSmtp;
\ No newline at end of file
index 70f06eb..35af2e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x508a=['originCc','message','email','bcc','attachments','attach','attachment','attachment-','%s-%s','now','join','root','server/files/attachments/','writeFileSync','content','headerLines','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','parser','from','subject','messageId','date','format','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','gmail','imap.gmail.com','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook.office365.com','127.0.0.1','lodash','randomstring','path','util','node-tnef','../../../config/logger','../../../config/environment','value','address','generate','@xcally.com','head','name','substring','indexOf','split','length','slice','html','replace','includes','<img','push','filename','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','originTo','isEmpty'];(function(_0x3e2f67,_0x9cb2c6){var _0x313667=function(_0x52d6a3){while(--_0x52d6a3){_0x3e2f67['push'](_0x3e2f67['shift']());}};_0x313667(++_0x9cb2c6);}(_0x508a,0x1aa));var _0xa508=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x508a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa508('0x0'));var moment=require('moment');var random=require(_0xa508('0x1'));var fs=require('fs');var path=require(_0xa508('0x2'));var util=require(_0xa508('0x3'));var tnef=require(_0xa508('0x4'));var logger=require(_0xa508('0x5'))('email');var config=require(_0xa508('0x6'));function getAddress(_0x40f2f0){var _0x2e26ae=_['head'](_0x40f2f0[_0xa508('0x7')]);return _0x2e26ae&&_0x2e26ae[_0xa508('0x8')]?_0x2e26ae[_0xa508('0x8')]:'anonymous'+random[_0xa508('0x9')](0x6)+_0xa508('0xa');}function getFirstName(_0x4f6c23){var _0x2ef948=_[_0xa508('0xb')](_0x4f6c23['value']);if(_0x2ef948&&_0x2ef948[_0xa508('0xc')]){if(_0x2ef948[_0xa508('0xc')]==_0x2ef948[_0xa508('0x8')]){return _0x2ef948[_0xa508('0xc')][_0xa508('0xd')](0x0,_0x2ef948['name'][_0xa508('0xe')]('@'));}var _0xe8bf26=_0x2ef948['name'][_0xa508('0xf')](/\s+/);return _0xe8bf26[_0xa508('0x10')]>0x1?_0xe8bf26[_0xa508('0x11')](0x0,-0x1)['join']('\x20'):_0x2ef948[_0xa508('0xc')];}return'Anonymous';}function getLastName(_0x3825f5){var _0x673f18=_[_0xa508('0xb')](_0x3825f5[_0xa508('0x7')]);if(_0x673f18&&_0x673f18['name']){var _0xf68d=_0x673f18[_0xa508('0xc')][_0xa508('0xf')](/\s+/);return _0xf68d[_0xa508('0x10')]>0x1?_0xf68d['pop']():'';}return'';}function getMails(_0x15b852,_0x1de0fb){var _0x23fbe6='';for(var _0xb76bf=0x0;_0xb76bf<_0x1de0fb['value'][_0xa508('0x10')];_0xb76bf+=0x1){if(_0x1de0fb[_0xa508('0x7')][_0xb76bf]['address']!==_0x15b852){if(!_['isEmpty'](_0x23fbe6)){_0x23fbe6+=',';}_0x23fbe6+=_0x1de0fb[_0xa508('0x7')][_0xb76bf][_0xa508('0xc')]||_0x1de0fb[_0xa508('0x7')][_0xb76bf][_0xa508('0x8')]||'';_0x23fbe6+='\x20<';_0x23fbe6+=_0x1de0fb[_0xa508('0x7')][_0xb76bf][_0xa508('0x8')]?_0x1de0fb[_0xa508('0x7')][_0xb76bf][_0xa508('0x8')]:'anonymous'+random[_0xa508('0x9')](0x6)+_0xa508('0xa');_0x23fbe6+='>';}}return _0x23fbe6;}function parseEmail(_0xe914bd,_0x45b284,_0x464a76){if(_0x45b284['html']){var _0x274804=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x274804['test'](_0x45b284[_0xa508('0x12')])){_0x45b284[_0xa508('0x12')]=_0x45b284['html'][_0xa508('0x13')](_0x274804,'');}if(_0x45b284[_0xa508('0x12')][_0xa508('0x14')](_0xa508('0x15'))){var _0x4e869f=[];_0x45b284['attachments']['forEach'](_0x41d751=>{_0x4e869f[_0xa508('0x16')](_0x41d751[_0xa508('0x17')]);});var _0x1cfadf=/<img.*? _SRC(.*?)[^>]+>/g;var _0x276d0d=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x350581=_0x45b284[_0xa508('0x12')]['replace'](_0x276d0d,'_SRC');var _0x98b1c8=_0x350581[_0xa508('0x13')](_0x1cfadf,'_IMG');for(let _0xdbb364=0x0;_0xdbb364<_0x4e869f['length'];_0xdbb364++){var _0x1626a1=_0x98b1c8[_0xa508('0x13')]('_IMG',_0xa508('0x18')+_0x4e869f[_0xdbb364]+_0xa508('0x19'));_0x98b1c8=_0x1626a1;}_0x45b284[_0xa508('0x12')]=_0x98b1c8;}_0x464a76[_0xa508('0x1a')]=_0x45b284['html'];}else{_0x464a76[_0xa508('0x1a')]=_0x45b284[_0xa508('0x1b')];}if(_0x464a76[_0xa508('0x1a')]){_0x464a76['body']=_0x464a76[_0xa508('0x1a')][_0xa508('0x13')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x45b284['to']){_0x464a76['message'][_0xa508('0x1c')]=getMails(null,_0x45b284['to']);var _0x5d7647=getMails(_0xe914bd['email'],_0x45b284['to']);if(!_[_0xa508('0x1d')](_0x5d7647)){_0x464a76['message']['cc']+=_0x5d7647;}}if(_0x45b284['cc']){_0x464a76['message'][_0xa508('0x1e')]=getMails(null,_0x45b284['cc']);var _0x3a5839=getMails(_0xe914bd['email'],_0x45b284['cc']);if(!_[_0xa508('0x1d')](_0x3a5839)){if(!_[_0xa508('0x1d')](_0x464a76[_0xa508('0x1f')]['cc'])){_0x464a76['message']['cc']+=',';}_0x464a76['message']['cc']+=_0x3a5839;}}if(!_[_0xa508('0x14')](_0x464a76[_0xa508('0x1f')][_0xa508('0x1c')],_0xe914bd[_0xa508('0x20')])&&!_[_0xa508('0x14')](_0x464a76[_0xa508('0x1f')][_0xa508('0x1e')],_0xe914bd[_0xa508('0x20')])){_0x464a76[_0xa508('0x1f')][_0xa508('0x21')]=_0xe914bd[_0xa508('0x20')];}if(_0x45b284['attachments']&&_0x45b284[_0xa508('0x22')][_0xa508('0x10')]){_0x464a76[_0xa508('0x1f')][_0xa508('0x23')]=_0x45b284['attachments'][_0xa508('0x10')];for(var _0x3de64d=0x0,_0x19019b,_0x492f85,_0x109b4b;_0x3de64d<_0x45b284[_0xa508('0x22')][_0xa508('0x10')];_0x3de64d+=0x1){if(_0x45b284['attachments'][_0x3de64d]['type']===_0xa508('0x24')){_0x109b4b=_0x45b284[_0xa508('0x22')][_0x3de64d][_0xa508('0x17')]||_0xa508('0x25')+_0x3de64d;_0x19019b=util['format'](_0xa508('0x26'),Date[_0xa508('0x27')](),_0x109b4b);_0x492f85=path[_0xa508('0x28')](config[_0xa508('0x29')],_0xa508('0x2a'),_0x19019b);fs[_0xa508('0x2b')](_0x492f85,_0x45b284[_0xa508('0x22')][_0x3de64d][_0xa508('0x2c')]);_0x464a76[_0xa508('0x1f')][_0xa508('0x22')][_0xa508('0x16')]({'name':_0x109b4b,'basename':_0x19019b,'type':_0x45b284[_0xa508('0x22')][_0x3de64d]['contentType'],'filepath':_0x492f85});}}}if(_0x45b284[_0xa508('0x2d')]&&_0x45b284[_0xa508('0x2d')][_0xa508('0x10')]>0x0){var _0x1ef1c2=['Auto-Submitted:\x20auto-replied',_0xa508('0x2e'),_0xa508('0x2f')];for(var _0x224972=0x0;_0x224972<_0x45b284[_0xa508('0x2d')][_0xa508('0x10')];_0x224972++){var _0x180c0d=_[_0xa508('0xe')](_0x1ef1c2,_0x45b284[_0xa508('0x2d')][_0x224972][_0xa508('0x30')]);if(_0x180c0d>=0x0){_0x464a76[_0xa508('0x31')]=!![];}}}return _0x464a76;}exports[_0xa508('0x32')]=function(_0x24c3ec,_0x7687ed,_0x488cbf){var _0x1cc129={'from':getAddress(_0x7687ed['from']),'firstName':getFirstName(_0x7687ed[_0xa508('0x33')]),'lastName':getLastName(_0x7687ed[_0xa508('0x33')]),'mapKey':_0xa508('0x20'),'message':{'from':getMails(_0x24c3ec[_0xa508('0x20')],_0x7687ed[_0xa508('0x33')]),'to':_0x24c3ec[_0xa508('0x20')],'cc':'','subject':_0x7687ed[_0xa508('0x34')]||'','messageId':_0x7687ed[_0xa508('0x35')],'inReplyTo':_0x7687ed['inReplyTo'],'sentAt':moment(_0x7687ed[_0xa508('0x36')])[_0xa508('0x37')](_0xa508('0x38')),'attach':![],'attachments':[]}};if(!_0x7687ed[_0xa508('0x12')]&&!_0x7687ed[_0xa508('0x1b')]){var _0x1d631e=_[_0xa508('0x39')](_0x7687ed[_0xa508('0x22')],{'contentType':_0xa508('0x3a')});if(_0x1d631e[_0xa508('0x10')]){logger[_0xa508('0x3b')](util[_0xa508('0x37')](_0xa508('0x3c'),_0x7687ed[_0xa508('0x35')]));tnef[_0xa508('0x3d')](_[_0xa508('0x3e')](_0x1d631e)[_0xa508('0x2c')],function(_0x563dba,_0x19e5e2){if(_0x19e5e2){_0x7687ed[_0xa508('0x12')]=_0x19e5e2[_0xa508('0x3f')]||_0xa508('0x40');if(_0x19e5e2[_0xa508('0x41')]){for(var _0x2c64ff=0x0;_0x2c64ff<_0x19e5e2[_0xa508('0x41')][_0xa508('0x10')];_0x2c64ff++){var _0x4ced69=_0x19e5e2[_0xa508('0x41')][_0x2c64ff];_0x1cc129[_0xa508('0x1f')][_0xa508('0x22')][_0xa508('0x16')]({'filename':_0x4ced69[_0xa508('0x42')],'content':Buffer['from'](_0x4ced69[_0xa508('0x43')])});}}}_0x488cbf(parseEmail(_0x24c3ec,_0x7687ed,_0x1cc129));});}else{_0x7687ed[_0xa508('0x12')]=_0xa508('0x40');_0x488cbf(parseEmail(_0x24c3ec,_0x7687ed,_0x1cc129));}}else{_0x488cbf(parseEmail(_0x24c3ec,_0x7687ed,_0x1cc129));}};exports[_0xa508('0x44')]=function(_0x9a1600){switch(_0x9a1600){case _0xa508('0x45'):return _0xa508('0x46');case'yahoo':return _0xa508('0x47');case _0xa508('0x48'):return _0xa508('0x49');case'outlook365':return _0xa508('0x4a');}return _0xa508('0x4b');};
\ No newline at end of file
+var _0xcf37=['imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook.office365.com','127.0.0.1','moment','randomstring','path','util','node-tnef','email','../../../config/environment','head','generate','@xcally.com','value','name','address','indexOf','split','slice','length','isEmpty','test','replace','includes','forEach','push','filename','html','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','originTo','message','originCc','bcc','attachments','attach','type','attachment','%s-%s','root','writeFileSync','headerLines','Auto-Submitted:\x20auto-replied','Precedence:\x20auto_reply','line','isAutoreply','parser','from','subject','messageId','inReplyTo','format','filter','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','first','content','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','getHost'];(function(_0x2af302,_0xad11e3){var _0x3e6b58=function(_0x3c7861){while(--_0x3c7861){_0x2af302['push'](_0x2af302['shift']());}};_0x3e6b58(++_0xad11e3);}(_0xcf37,0xdc));var _0x7cf3=function(_0x2f9ced,_0x26b7c5){_0x2f9ced=_0x2f9ced-0x0;var _0x1531e5=_0xcf37[_0x2f9ced];return _0x1531e5;};'use strict';var _=require('lodash');var moment=require(_0x7cf3('0x0'));var random=require(_0x7cf3('0x1'));var fs=require('fs');var path=require(_0x7cf3('0x2'));var util=require(_0x7cf3('0x3'));var tnef=require(_0x7cf3('0x4'));var logger=require('../../../config/logger')(_0x7cf3('0x5'));var config=require(_0x7cf3('0x6'));function getAddress(_0x3a015f){var _0x265afb=_[_0x7cf3('0x7')](_0x3a015f['value']);return _0x265afb&&_0x265afb['address']?_0x265afb['address']:'anonymous'+random[_0x7cf3('0x8')](0x6)+_0x7cf3('0x9');}function getFirstName(_0x110c99){var _0x589786=_[_0x7cf3('0x7')](_0x110c99[_0x7cf3('0xa')]);if(_0x589786&&_0x589786[_0x7cf3('0xb')]){if(_0x589786[_0x7cf3('0xb')]==_0x589786[_0x7cf3('0xc')]){return _0x589786[_0x7cf3('0xb')]['substring'](0x0,_0x589786[_0x7cf3('0xb')][_0x7cf3('0xd')]('@'));}var _0x3e9ec1=_0x589786[_0x7cf3('0xb')][_0x7cf3('0xe')](/\s+/);return _0x3e9ec1['length']>0x1?_0x3e9ec1[_0x7cf3('0xf')](0x0,-0x1)['join']('\x20'):_0x589786[_0x7cf3('0xb')];}return'Anonymous';}function getLastName(_0x3280dd){var _0x3ac1e4=_['head'](_0x3280dd[_0x7cf3('0xa')]);if(_0x3ac1e4&&_0x3ac1e4[_0x7cf3('0xb')]){var _0x3f4338=_0x3ac1e4[_0x7cf3('0xb')]['split'](/\s+/);return _0x3f4338[_0x7cf3('0x10')]>0x1?_0x3f4338['pop']():'';}return'';}function getMails(_0x32c1d7,_0x247406){var _0x346dae='';for(var _0x14aef6=0x0;_0x14aef6<_0x247406[_0x7cf3('0xa')][_0x7cf3('0x10')];_0x14aef6+=0x1){if(_0x247406['value'][_0x14aef6]['address']!==_0x32c1d7){if(!_[_0x7cf3('0x11')](_0x346dae)){_0x346dae+=',';}_0x346dae+=_0x247406[_0x7cf3('0xa')][_0x14aef6][_0x7cf3('0xb')]||_0x247406['value'][_0x14aef6][_0x7cf3('0xc')]||'';_0x346dae+='\x20<';_0x346dae+=_0x247406[_0x7cf3('0xa')][_0x14aef6][_0x7cf3('0xc')]?_0x247406[_0x7cf3('0xa')][_0x14aef6][_0x7cf3('0xc')]:'anonymous'+random[_0x7cf3('0x8')](0x6)+_0x7cf3('0x9');_0x346dae+='>';}}return _0x346dae;}function parseEmail(_0x4344a1,_0x230a80,_0x1f4968){if(_0x230a80['html']){var _0x2ce687=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x2ce687[_0x7cf3('0x12')](_0x230a80['html'])){_0x230a80['html']=_0x230a80['html'][_0x7cf3('0x13')](_0x2ce687,'');}if(_0x230a80['html'][_0x7cf3('0x14')]('<img')){var _0x3ff261=[];_0x230a80['attachments'][_0x7cf3('0x15')](_0x5dcc22=>{_0x3ff261[_0x7cf3('0x16')](_0x5dcc22[_0x7cf3('0x17')]);});var _0x146664=/<img.*? _SRC(.*?)[^>]+>/g;var _0x30110e=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x96c3ce=_0x230a80[_0x7cf3('0x18')][_0x7cf3('0x13')](_0x30110e,_0x7cf3('0x19'));var _0x835dd=_0x96c3ce['replace'](_0x146664,'_IMG');for(let _0x2a618b=0x0;_0x2a618b<_0x3ff261[_0x7cf3('0x10')];_0x2a618b++){var _0x32e799=_0x835dd['replace'](_0x7cf3('0x1a'),_0x7cf3('0x1b')+_0x3ff261[_0x2a618b]+'\x20]</span>');_0x835dd=_0x32e799;}_0x230a80[_0x7cf3('0x18')]=_0x835dd;}_0x1f4968[_0x7cf3('0x1c')]=_0x230a80[_0x7cf3('0x18')];}else{_0x1f4968[_0x7cf3('0x1c')]=_0x230a80[_0x7cf3('0x1d')];}if(_0x1f4968[_0x7cf3('0x1c')]){_0x1f4968[_0x7cf3('0x1c')]=_0x1f4968[_0x7cf3('0x1c')][_0x7cf3('0x13')](/<a\s+/gi,_0x7cf3('0x1e'));}if(_0x230a80['to']){_0x1f4968['message'][_0x7cf3('0x1f')]=getMails(null,_0x230a80['to']);var _0x5d8922=getMails(_0x4344a1[_0x7cf3('0x5')],_0x230a80['to']);if(!_[_0x7cf3('0x11')](_0x5d8922)){_0x1f4968[_0x7cf3('0x20')]['cc']+=_0x5d8922;}}if(_0x230a80['cc']){_0x1f4968['message'][_0x7cf3('0x21')]=getMails(null,_0x230a80['cc']);var _0x1f8917=getMails(_0x4344a1['email'],_0x230a80['cc']);if(!_[_0x7cf3('0x11')](_0x1f8917)){if(!_[_0x7cf3('0x11')](_0x1f4968[_0x7cf3('0x20')]['cc'])){_0x1f4968[_0x7cf3('0x20')]['cc']+=',';}_0x1f4968[_0x7cf3('0x20')]['cc']+=_0x1f8917;}}if(!_[_0x7cf3('0x14')](_0x1f4968['message'][_0x7cf3('0x1f')],_0x4344a1[_0x7cf3('0x5')])&&!_[_0x7cf3('0x14')](_0x1f4968[_0x7cf3('0x20')]['originCc'],_0x4344a1[_0x7cf3('0x5')])){_0x1f4968[_0x7cf3('0x20')][_0x7cf3('0x22')]=_0x4344a1[_0x7cf3('0x5')];}if(_0x230a80[_0x7cf3('0x23')]&&_0x230a80[_0x7cf3('0x23')][_0x7cf3('0x10')]){_0x1f4968[_0x7cf3('0x20')][_0x7cf3('0x24')]=_0x230a80[_0x7cf3('0x23')]['length'];for(var _0x528e3c=0x0,_0x5cdf76,_0x2839e1,_0x144f09;_0x528e3c<_0x230a80[_0x7cf3('0x23')][_0x7cf3('0x10')];_0x528e3c+=0x1){if(_0x230a80[_0x7cf3('0x23')][_0x528e3c][_0x7cf3('0x25')]===_0x7cf3('0x26')){_0x144f09=_0x230a80[_0x7cf3('0x23')][_0x528e3c][_0x7cf3('0x17')]||'attachment-'+_0x528e3c;_0x5cdf76=util['format'](_0x7cf3('0x27'),Date['now'](),_0x144f09);_0x2839e1=path['join'](config[_0x7cf3('0x28')],'server/files/attachments/',_0x5cdf76);fs[_0x7cf3('0x29')](_0x2839e1,_0x230a80[_0x7cf3('0x23')][_0x528e3c]['content']);_0x1f4968[_0x7cf3('0x20')][_0x7cf3('0x23')][_0x7cf3('0x16')]({'name':_0x144f09,'basename':_0x5cdf76,'type':_0x230a80[_0x7cf3('0x23')][_0x528e3c]['contentType'],'filepath':_0x2839e1});}}}if(_0x230a80[_0x7cf3('0x2a')]&&_0x230a80[_0x7cf3('0x2a')][_0x7cf3('0x10')]>0x0){var _0x102bf9=[_0x7cf3('0x2b'),'X-Auto-Response-Suppress:\x20All',_0x7cf3('0x2c')];for(var _0xde727e=0x0;_0xde727e<_0x230a80['headerLines'][_0x7cf3('0x10')];_0xde727e++){var _0x1f457e=_[_0x7cf3('0xd')](_0x102bf9,_0x230a80[_0x7cf3('0x2a')][_0xde727e][_0x7cf3('0x2d')]);if(_0x1f457e>=0x0){_0x1f4968[_0x7cf3('0x2e')]=!![];}}}return _0x1f4968;}exports[_0x7cf3('0x2f')]=function(_0x54c963,_0x1153fe,_0x410754){var _0x50ae94={'from':getAddress(_0x1153fe[_0x7cf3('0x30')]),'firstName':getFirstName(_0x1153fe[_0x7cf3('0x30')]),'lastName':getLastName(_0x1153fe[_0x7cf3('0x30')]),'mapKey':_0x7cf3('0x5'),'message':{'from':getMails(_0x54c963[_0x7cf3('0x5')],_0x1153fe[_0x7cf3('0x30')]),'to':_0x54c963[_0x7cf3('0x5')],'cc':'','subject':_0x1153fe[_0x7cf3('0x31')]||'','messageId':_0x1153fe[_0x7cf3('0x32')],'inReplyTo':_0x1153fe[_0x7cf3('0x33')],'sentAt':moment(_0x1153fe['date'])[_0x7cf3('0x34')]('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x1153fe['html']&&!_0x1153fe[_0x7cf3('0x1d')]){var _0x59bced=_[_0x7cf3('0x35')](_0x1153fe[_0x7cf3('0x23')],{'contentType':'application/ms-tnef'});if(_0x59bced['length']){logger[_0x7cf3('0x36')](util[_0x7cf3('0x34')](_0x7cf3('0x37'),_0x1153fe[_0x7cf3('0x32')]));tnef['parseBuffer'](_[_0x7cf3('0x38')](_0x59bced)[_0x7cf3('0x39')],function(_0x2b3346,_0x3164ef){if(_0x3164ef){_0x1153fe['html']=_0x3164ef[_0x7cf3('0x3a')]||_0x7cf3('0x3b');if(_0x3164ef[_0x7cf3('0x3c')]){for(var _0x40097d=0x0;_0x40097d<_0x3164ef[_0x7cf3('0x3c')][_0x7cf3('0x10')];_0x40097d++){var _0x374f58=_0x3164ef[_0x7cf3('0x3c')][_0x40097d];_0x50ae94[_0x7cf3('0x20')]['attachments']['push']({'filename':_0x374f58[_0x7cf3('0x3d')],'content':Buffer[_0x7cf3('0x30')](_0x374f58[_0x7cf3('0x3e')])});}}}_0x410754(parseEmail(_0x54c963,_0x1153fe,_0x50ae94));});}else{_0x1153fe['html']='<p>Empty\x20message</p>';_0x410754(parseEmail(_0x54c963,_0x1153fe,_0x50ae94));}}else{_0x410754(parseEmail(_0x54c963,_0x1153fe,_0x50ae94));}};exports[_0x7cf3('0x3f')]=function(_0x1eea81){switch(_0x1eea81){case'gmail':return _0x7cf3('0x40');case _0x7cf3('0x41'):return _0x7cf3('0x42');case _0x7cf3('0x43'):return _0x7cf3('0x44');case'outlook365':return _0x7cf3('0x45');}return _0x7cf3('0x46');};
\ No newline at end of file
index 20ffcda..da463ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x112d=['Imap','Smtp','exports','lodash','name','key','SERV','active'];(function(_0x5ce8b9,_0x5cded8){var _0xe34be0=function(_0xe3d4e5){while(--_0xe3d4e5){_0x5ce8b9['push'](_0x5ce8b9['shift']());}};_0xe34be0(++_0x5cded8);}(_0x112d,0x193));var _0xd112=function(_0x3002db,_0x4bdfb8){_0x3002db=_0x3002db-0x0;var _0x542472=_0x112d[_0x3002db];return _0x542472;};'use strict';var _=require(_0xd112('0x0'));function MailAccount(_0x2f3298){this['id']=_0x2f3298['id']||0x0;this[_0xd112('0x1')]=_0x2f3298[_0xd112('0x1')]||'Service';this['key']=_0x2f3298[_0xd112('0x2')]||_0xd112('0x3');this[_0xd112('0x4')]=_0x2f3298[_0xd112('0x4')]||![];this[_0xd112('0x5')]=_0x2f3298[_0xd112('0x5')]||[];this[_0xd112('0x6')]=_0x2f3298[_0xd112('0x6')]||[];}module[_0xd112('0x7')]=MailAccount;
\ No newline at end of file
+var _0x0f33=['key','SERV','active','Imap','exports','lodash','name','Service'];(function(_0x2ffb58,_0x587dec){var _0x539720=function(_0x2443a6){while(--_0x2443a6){_0x2ffb58['push'](_0x2ffb58['shift']());}};_0x539720(++_0x587dec);}(_0x0f33,0x135));var _0x30f3=function(_0x2002d1,_0x4622f1){_0x2002d1=_0x2002d1-0x0;var _0x1cd8bc=_0x0f33[_0x2002d1];return _0x1cd8bc;};'use strict';var _=require(_0x30f3('0x0'));function MailAccount(_0x12d767){this['id']=_0x12d767['id']||0x0;this['name']=_0x12d767[_0x30f3('0x1')]||_0x30f3('0x2');this[_0x30f3('0x3')]=_0x12d767[_0x30f3('0x3')]||_0x30f3('0x4');this['active']=_0x12d767[_0x30f3('0x5')]||![];this[_0x30f3('0x6')]=_0x12d767[_0x30f3('0x6')]||[];this['Smtp']=_0x12d767['Smtp']||[];}module[_0x30f3('0x7')]=MailAccount;
\ No newline at end of file
index 3c72c62..fa7948f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7654=['mailAccounts','mapKeys','prototype','mergeFromDatabase','hasOwnProperty','initMailAccounts','length','merge','exports','lodash'];(function(_0x179483,_0xb0b54){var _0x13fa9c=function(_0x4ca66c){while(--_0x4ca66c){_0x179483['push'](_0x179483['shift']());}};_0x13fa9c(++_0xb0b54);}(_0x7654,0x15d));var _0x4765=function(_0x4caf1c,_0x130101){_0x4caf1c=_0x4caf1c-0x0;var _0x575837=_0x7654[_0x4caf1c];return _0x575837;};'use strict';var _=require(_0x4765('0x0'));var MailAccount=require('../model/mailAccount');var Realtime=function(){this[_0x4765('0x1')]={};};function freeIsNotKey(_0x21966d,_0x566e7d,_0x368f53){var _0x36d997=_[_0x4765('0x2')](_0x21966d,function(_0x431823,_0x3c90fa){return _0x431823[_0x368f53];});for(var _0x116e88 in _0x566e7d){if(_0x566e7d['hasOwnProperty'](_0x116e88)){if(!_0x36d997[_0x116e88]){delete _0x566e7d[_0x116e88];}}}}Realtime[_0x4765('0x3')][_0x4765('0x4')]=function(_0x35da51,_0x56d698){for(var _0x22e56f in _0x56d698){if(_0x35da51[_0x4765('0x5')](_0x22e56f)){_0x35da51[_0x22e56f]=_0x56d698[_0x22e56f];}}};Realtime[_0x4765('0x3')][_0x4765('0x6')]=function(){var _0x1f7ef3=this;return function(_0x53eb2a){if(_0x53eb2a){freeIsNotKey(_0x53eb2a,_0x1f7ef3[_0x4765('0x1')],'id');for(var _0x2636c3=0x0,_0x18dbe4={},_0x4c6a76={};_0x2636c3<_0x53eb2a[_0x4765('0x7')];_0x2636c3+=0x1){_0x18dbe4=_0x53eb2a[_0x2636c3];if(_['isUndefined'](_0x1f7ef3[_0x4765('0x1')][_0x18dbe4['id']])){_0x1f7ef3[_0x4765('0x1')][_0x18dbe4['id']]=new MailAccount(_0x18dbe4);}else{_[_0x4765('0x8')](_0x1f7ef3[_0x4765('0x1')][_0x18dbe4['id']],_0x18dbe4);}}}return _0x1f7ef3[_0x4765('0x1')];};};module[_0x4765('0x9')]=Realtime;
\ No newline at end of file
+var _0x175e=['hasOwnProperty','mergeFromDatabase','initMailAccounts','length','isUndefined','exports','lodash','../model/mailAccount','mailAccounts','mapKeys'];(function(_0x485048,_0x9acc62){var _0x1405e2=function(_0x4868c7){while(--_0x4868c7){_0x485048['push'](_0x485048['shift']());}};_0x1405e2(++_0x9acc62);}(_0x175e,0xf6));var _0xe175=function(_0x330616,_0x446c69){_0x330616=_0x330616-0x0;var _0x50e722=_0x175e[_0x330616];return _0x50e722;};'use strict';var _=require(_0xe175('0x0'));var MailAccount=require(_0xe175('0x1'));var Realtime=function(){this[_0xe175('0x2')]={};};function freeIsNotKey(_0x24d720,_0x3569d9,_0x2d15b3){var _0x2bf031=_[_0xe175('0x3')](_0x24d720,function(_0x21968f,_0x2e7df3){return _0x21968f[_0x2d15b3];});for(var _0x3f1426 in _0x3569d9){if(_0x3569d9[_0xe175('0x4')](_0x3f1426)){if(!_0x2bf031[_0x3f1426]){delete _0x3569d9[_0x3f1426];}}}}Realtime['prototype'][_0xe175('0x5')]=function(_0xd26c46,_0x1224e8){for(var _0x2d50cf in _0x1224e8){if(_0xd26c46['hasOwnProperty'](_0x2d50cf)){_0xd26c46[_0x2d50cf]=_0x1224e8[_0x2d50cf];}}};Realtime['prototype'][_0xe175('0x6')]=function(){var _0x1d5914=this;return function(_0x422d31){if(_0x422d31){freeIsNotKey(_0x422d31,_0x1d5914[_0xe175('0x2')],'id');for(var _0x431795=0x0,_0x220eb2={},_0x439ae1={};_0x431795<_0x422d31[_0xe175('0x7')];_0x431795+=0x1){_0x220eb2=_0x422d31[_0x431795];if(_[_0xe175('0x8')](_0x1d5914['mailAccounts'][_0x220eb2['id']])){_0x1d5914['mailAccounts'][_0x220eb2['id']]=new MailAccount(_0x220eb2);}else{_['merge'](_0x1d5914[_0xe175('0x2')][_0x220eb2['id']],_0x220eb2);}}}return _0x1d5914[_0xe175('0x2')];};};module[_0xe175('0x9')]=Realtime;
\ No newline at end of file
index 3bdbf58..42343bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x161c=['NotifyMailAccount','getMailAccounts','GetMailAccount','service','active','key','ListId','TemplateId','MailServerIn','Imap','MailServerOut','Smtp','getMailAccount','notify'];(function(_0x240d8c,_0x979f5){var _0x4e0720=function(_0x3aef9d){while(--_0x3aef9d){_0x240d8c['push'](_0x240d8c['shift']());}};_0x4e0720(++_0x979f5);}(_0x161c,0xb7));var _0xc161=function(_0x5127ab,_0x1841e6){_0x5127ab=_0x5127ab-0x0;var _0x1e59c3=_0x161c[_0x5127ab];return _0x1e59c3;};'use strict';var client=require('../client');exports[_0xc161('0x0')]=function(){return function(){return client['Request'](_0xc161('0x1'),{'options':{'attributes':['id','name',_0xc161('0x2'),'email',_0xc161('0x3'),_0xc161('0x4'),_0xc161('0x5'),_0xc161('0x6')],'raw':![],'include':[{'model':_0xc161('0x7'),'as':_0xc161('0x8')},{'model':_0xc161('0x9'),'as':_0xc161('0xa')}]},'log':_0xc161('0xb')});};};exports[_0xc161('0xc')]=function(_0x2f5612,_0x1d00b2){return client['Request']('NotifyMailAccount',{'account':{'id':_0x2f5612},'body':_0x1d00b2,'log':_0xc161('0xd')});};
\ No newline at end of file
+var _0xf32f=['key','ListId','TemplateId','MailServerIn','MailServerOut','Smtp','notify','NotifyMailAccount','getMailAccounts','Request','GetMailAccount','active'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xf32f,0x140));var _0xff32=function(_0x5a0c2f,_0x566976){_0x5a0c2f=_0x5a0c2f-0x0;var _0x42789f=_0xf32f[_0x5a0c2f];return _0x42789f;};'use strict';var client=require('../client');exports[_0xff32('0x0')]=function(){return function(){return client[_0xff32('0x1')](_0xff32('0x2'),{'options':{'attributes':['id','name','service','email',_0xff32('0x3'),_0xff32('0x4'),_0xff32('0x5'),_0xff32('0x6')],'raw':![],'include':[{'model':_0xff32('0x7'),'as':'Imap'},{'model':_0xff32('0x8'),'as':_0xff32('0x9')}]},'log':'getMailAccount'});};};exports[_0xff32('0xa')]=function(_0x5444ed,_0x26f1a0){return client[_0xff32('0x1')]('NotifyMailAccount',{'account':{'id':_0x5444ed},'body':_0x26f1a0,'log':_0xff32('0xb')});};
\ No newline at end of file
index c04852e..f565c60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3caf=['getSettings','Request','loginMailFrequency','GetSettings'];(function(_0x25f6f3,_0x1ffbd0){var _0x4775ae=function(_0x5c551b){while(--_0x5c551b){_0x25f6f3['push'](_0x25f6f3['shift']());}};_0x4775ae(++_0x1ffbd0);}(_0x3caf,0x140));var _0xf3ca=function(_0x4a7aa1,_0x2aeac8){_0x4a7aa1=_0x4a7aa1-0x0;var _0x1bba49=_0x3caf[_0x4a7aa1];return _0x1bba49;};'use strict';var client=require('../client');exports[_0xf3ca('0x0')]=function(){return client[_0xf3ca('0x1')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xf3ca('0x2')]},'log':_0xf3ca('0x3')});};
\ No newline at end of file
+var _0x67ee=['loginMailFrequency','GetSettings','getSettings','Request'];(function(_0x4c7464,_0x302fb4){var _0x406b64=function(_0x303154){while(--_0x303154){_0x4c7464['push'](_0x4c7464['shift']());}};_0x406b64(++_0x302fb4);}(_0x67ee,0x19e));var _0xe67e=function(_0x44bd25,_0x12966a){_0x44bd25=_0x44bd25-0x0;var _0x5242fc=_0x67ee[_0x44bd25];return _0x5242fc;};'use strict';var client=require('../client');exports[_0xe67e('0x0')]=function(){return client[_0xe67e('0x1')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xe67e('0x2')]},'log':_0xe67e('0x3')});};
\ No newline at end of file
index 25a0f1d..3eb482e 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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xa9e0[_0x2f5ac5];return _0x37c9a8;};'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(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa9e0[_0x934425];return _0x31d596;};'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 b9ad3e1..b8b2267 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e11=['listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','lodash','http','../../config/environment','createServer','timeout','port','socket.io','websocket','polling','redis','defaults','localhost','adapter','socket.io-redis','../../config/triggers','../../config/socketio','../../config/express','default','../../routes','once'];(function(_0x5d97eb,_0xe0c902){var _0x5a852c=function(_0x5d12e1){while(--_0x5d12e1){_0x5d97eb['push'](_0x5d97eb['shift']());}};_0x5a852c(++_0xe0c902);}(_0x4e11,0xe9));var _0x14e1=function(_0x561432,_0x21ec65){_0x561432=_0x561432-0x0;var _0x3485b6=_0x4e11[_0x561432];return _0x3485b6;};'use strict';var _=require(_0x14e1('0x0'));var http=require(_0x14e1('0x1'));var express=require('express');var sticky=require('sticky-session');var Redis=require('ioredis');var config=require(_0x14e1('0x2'));var app=express();var server=http[_0x14e1('0x3')](app);server[_0x14e1('0x4')]=0xdbba0;if(sticky['listen'](server,config[_0x14e1('0x5')])){var socketio=require(_0x14e1('0x6'))(server,{'transports':[_0x14e1('0x7'),_0x14e1('0x8')]});config[_0x14e1('0x9')]=_[_0x14e1('0xa')](config['redis'],{'host':_0x14e1('0xb'),'port':0x18eb});socketio[_0x14e1('0xc')](require(_0x14e1('0xd'))({'pubClient':new Redis(config[_0x14e1('0x9')]),'subClient':new Redis(config['redis'])}));require(_0x14e1('0xe'))['default']();require(_0x14e1('0xf'))['default'](socketio);require(_0x14e1('0x10'))[_0x14e1('0x11')](app);require(_0x14e1('0x12'))[_0x14e1('0x11')](app);}else{server[_0x14e1('0x13')](_0x14e1('0x14'),function(){console[_0x14e1('0x15')](_0x14e1('0x16'),config[_0x14e1('0x5')]);});}exports=module['exports']=app;
\ No newline at end of file
+var _0x05bf=['express','sticky-session','ioredis','../../config/environment','createServer','timeout','listen','port','socket.io','websocket','redis','defaults','localhost','adapter','default','../../config/express','once','Express\x20server\x20listening\x20on\x20port\x20%d!','lodash','http'];(function(_0x562f71,_0x531267){var _0x4045da=function(_0x48bd77){while(--_0x48bd77){_0x562f71['push'](_0x562f71['shift']());}};_0x4045da(++_0x531267);}(_0x05bf,0x1b6));var _0xf05b=function(_0x111888,_0x3bb065){_0x111888=_0x111888-0x0;var _0x371451=_0x05bf[_0x111888];return _0x371451;};'use strict';var _=require(_0xf05b('0x0'));var http=require(_0xf05b('0x1'));var express=require(_0xf05b('0x2'));var sticky=require(_0xf05b('0x3'));var Redis=require(_0xf05b('0x4'));var config=require(_0xf05b('0x5'));var app=express();var server=http[_0xf05b('0x6')](app);server[_0xf05b('0x7')]=0xdbba0;if(sticky[_0xf05b('0x8')](server,config[_0xf05b('0x9')])){var socketio=require(_0xf05b('0xa'))(server,{'transports':[_0xf05b('0xb'),'polling']});config[_0xf05b('0xc')]=_[_0xf05b('0xd')](config[_0xf05b('0xc')],{'host':_0xf05b('0xe'),'port':0x18eb});socketio[_0xf05b('0xf')](require('socket.io-redis')({'pubClient':new Redis(config[_0xf05b('0xc')]),'subClient':new Redis(config['redis'])}));require('../../config/triggers')[_0xf05b('0x10')]();require('../../config/socketio')[_0xf05b('0x10')](socketio);require(_0xf05b('0x11'))[_0xf05b('0x10')](app);require('../../routes')[_0xf05b('0x10')](app);}else{server[_0xf05b('0x12')]('listening',function(){console['log'](_0xf05b('0x13'),config[_0xf05b('0x9')]);});}exports=module['exports']=app;
\ No newline at end of file
index c1ba62e..4939582 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfb9=['bluebird','../../config/logger','routing','client','http','Request','request','then','rpc','error','message','catch'];(function(_0x3a0416,_0x3aee8e){var _0x90cf8e=function(_0xcfe5fc){while(--_0xcfe5fc){_0x3a0416['push'](_0x3a0416['shift']());}};_0x90cf8e(++_0x3aee8e);}(_0xdfb9,0xfc));var _0x9dfb=function(_0x207797,_0x558bdf){_0x207797=_0x207797-0x0;var _0x1f3b00=_0xdfb9[_0x207797];return _0x1f3b00;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x9dfb('0x0'));var logger=require(_0x9dfb('0x1'))(_0x9dfb('0x2'));var client=jayson[_0x9dfb('0x3')][_0x9dfb('0x4')]({'port':0x2329});client[_0x9dfb('0x5')]=function(_0xb40220,_0xf81e2d){return new BPromise(function(_0x1ebee9,_0x4514fa){return client[_0x9dfb('0x6')](_0xb40220,_0xf81e2d)[_0x9dfb('0x7')](function(_0x3bfd36){logger['debug'](_0x9dfb('0x8'),_0x9dfb('0x2'),_0xb40220,_0xf81e2d,_0x3bfd36);if(_0x3bfd36['error']){logger[_0x9dfb('0x9')](_0x9dfb('0x8'),_0x9dfb('0x2'),_0xb40220,_0x3bfd36['error'][_0x9dfb('0xa')],_0xf81e2d);return _0x4514fa(_0x3bfd36[_0x9dfb('0x9')]['message']);}else{return _0x1ebee9(_0x3bfd36['result']);}})[_0x9dfb('0xb')](function(_0x3ab4a8){logger[_0x9dfb('0x9')](_0x9dfb('0x8'),_0x9dfb('0x2'),_0xb40220,_0x3ab4a8,_0xf81e2d);return _0x4514fa(_0x3ab4a8);});});};module['exports']=client;
\ No newline at end of file
+var _0x3a85=['result','exports','../../config/logger','routing','client','request','then','rpc','error','message'];(function(_0x4252bf,_0xc977d7){var _0x32a218=function(_0x5e278a){while(--_0x5e278a){_0x4252bf['push'](_0x4252bf['shift']());}};_0x32a218(++_0xc977d7);}(_0x3a85,0xfc));var _0x53a8=function(_0x1492a0,_0x8a5294){_0x1492a0=_0x1492a0-0x0;var _0x1bab9e=_0x3a85[_0x1492a0];return _0x1bab9e;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x53a8('0x0'))(_0x53a8('0x1'));var client=jayson[_0x53a8('0x2')]['http']({'port':0x2329});client['Request']=function(_0x48e68f,_0x4cac59){return new BPromise(function(_0x1d7a2c,_0x5af956){return client[_0x53a8('0x3')](_0x48e68f,_0x4cac59)[_0x53a8('0x4')](function(_0x22b1d8){logger['debug'](_0x53a8('0x5'),'routing',_0x48e68f,_0x4cac59,_0x22b1d8);if(_0x22b1d8['error']){logger[_0x53a8('0x6')](_0x53a8('0x5'),_0x53a8('0x1'),_0x48e68f,_0x22b1d8[_0x53a8('0x6')][_0x53a8('0x7')],_0x4cac59);return _0x5af956(_0x22b1d8[_0x53a8('0x6')][_0x53a8('0x7')]);}else{return _0x1d7a2c(_0x22b1d8[_0x53a8('0x8')]);}})['catch'](function(_0xd57c9e){logger['error']('rpc',_0x53a8('0x1'),_0x48e68f,_0xd57c9e,_0x4cac59);return _0x5af956(_0xd57c9e);});});};module[_0x53a8('0x9')]=client;
\ No newline at end of file
index 6f64451..27b19c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67b9=['./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','resolve','then','getAgents','initAgents','initIntervals','initOpenchannelQueues','initChatQueues','getSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','catch','bluebird','./server'];(function(_0x53d172,_0x46611b){var _0x1bd0a2=function(_0x19fb52){while(--_0x19fb52){_0x53d172['push'](_0x53d172['shift']());}};_0x1bd0a2(++_0x46611b);}(_0x67b9,0x18e));var _0x967b=function(_0x47a204,_0x24b906){_0x47a204=_0x47a204-0x0;var _0x5623fc=_0x67b9[_0x47a204];return _0x5623fc;};'use strict';var BPromise=require(_0x967b('0x0'));var server=require(_0x967b('0x1'));var Realtime=require(_0x967b('0x2'));var user=require(_0x967b('0x3'));var interval=require(_0x967b('0x4'));var openchannelQueue=require(_0x967b('0x5'));var chatQueue=require(_0x967b('0x6'));var smsQueue=require(_0x967b('0x7'));var mailQueue=require(_0x967b('0x8'));var faxQueue=require(_0x967b('0x9'));var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise[_0x967b('0xa')]()[_0x967b('0xb')](user[_0x967b('0xc')]())['then'](realtime[_0x967b('0xd')]())[_0x967b('0xb')](interval['getIntervals']())[_0x967b('0xb')](realtime[_0x967b('0xe')]())['then'](openchannelQueue['getOpenchannelQueues']())['then'](realtime[_0x967b('0xf')]())['then'](chatQueue['getChatQueues']())[_0x967b('0xb')](realtime[_0x967b('0x10')]())[_0x967b('0xb')](smsQueue[_0x967b('0x11')]())[_0x967b('0xb')](realtime['initSmsQueues']())[_0x967b('0xb')](mailQueue[_0x967b('0x12')]())['then'](realtime[_0x967b('0x13')]())[_0x967b('0xb')](faxQueue[_0x967b('0x14')]())['then'](realtime[_0x967b('0x15')]())[_0x967b('0xb')](whatsappQueue[_0x967b('0x16')]())[_0x967b('0xb')](realtime[_0x967b('0x17')]())[_0x967b('0xb')](function(){return realtime;});}function main(){return server['listen'](realtime)[_0x967b('0xb')](function(_0x12bf69){return initRealtime();})['then'](function(_0x27c3b9){return setInterval(initRealtime,0x1388);})[_0x967b('0x18')](function(_0x4967ca){console['log'](_0x4967ca);});}main();
\ No newline at end of file
+var _0x8fc7=['initChatQueues','getSmsQueues','initSmsQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log','./server','./realtime','./rpc/user','./rpc/interval','./rpc/chatQueue','./rpc/smsQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues'];(function(_0x1d6a82,_0x37c315){var _0x5834ac=function(_0x2402ba){while(--_0x2402ba){_0x1d6a82['push'](_0x1d6a82['shift']());}};_0x5834ac(++_0x37c315);}(_0x8fc7,0x1d6));var _0x78fc=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0x8fc7[_0x1969a7];return _0x3d665f;};'use strict';var BPromise=require('bluebird');var server=require(_0x78fc('0x0'));var Realtime=require(_0x78fc('0x1'));var user=require(_0x78fc('0x2'));var interval=require(_0x78fc('0x3'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require(_0x78fc('0x4'));var smsQueue=require(_0x78fc('0x5'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require('./rpc/faxQueue');var whatsappQueue=require(_0x78fc('0x6'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x78fc('0x7')]()[_0x78fc('0x8')](user[_0x78fc('0x9')]())[_0x78fc('0x8')](realtime[_0x78fc('0xa')]())[_0x78fc('0x8')](interval[_0x78fc('0xb')]())[_0x78fc('0x8')](realtime[_0x78fc('0xc')]())[_0x78fc('0x8')](openchannelQueue[_0x78fc('0xd')]())[_0x78fc('0x8')](realtime[_0x78fc('0xe')]())['then'](chatQueue[_0x78fc('0xf')]())[_0x78fc('0x8')](realtime[_0x78fc('0x10')]())[_0x78fc('0x8')](smsQueue[_0x78fc('0x11')]())[_0x78fc('0x8')](realtime[_0x78fc('0x12')]())[_0x78fc('0x8')](mailQueue['getMailQueues']())['then'](realtime[_0x78fc('0x13')]())['then'](faxQueue[_0x78fc('0x14')]())[_0x78fc('0x8')](realtime[_0x78fc('0x15')]())['then'](whatsappQueue[_0x78fc('0x16')]())[_0x78fc('0x8')](realtime[_0x78fc('0x17')]())['then'](function(){return realtime;});}function main(){return server[_0x78fc('0x18')](realtime)[_0x78fc('0x8')](function(_0x229655){return initRealtime();})[_0x78fc('0x8')](function(_0xc80dac){return setInterval(initRealtime,0x1388);})[_0x78fc('0x19')](function(_0x2b42d0){console[_0x78fc('0x1a')](_0x2b42d0);});}main();
\ No newline at end of file
index ce93c5d..1939589 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['init','parse','map','object','lodash','util','events','EventEmitter','isNil','register','ignoreFactChanges','inherits','prototype','rules','isArray','concat','isObject','push','sync','filter','activeRules','orderBy','asc','execute','result','clone','name','ruleRef','call','next','isEqual','nextTick','restart','length','condition','matchPath','noop','findRules','matches','turn','prioritize','priority','toJSON','toString','consequence','fromJSON'];(function(_0x2fc8a9,_0x500be1){var _0x1ca3f5=function(_0x53ab67){while(--_0x53ab67){_0x2fc8a9['push'](_0x2fc8a9['shift']());}};_0x1ca3f5(++_0x500be1);}(_0x814b,0x1a2));var _0xb814=function(_0x214a25,_0x15071d){_0x214a25=_0x214a25-0x0;var _0x405988=_0x814b[_0x214a25];return _0x405988;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var EventEmitter=require(_0xb814('0x2'))[_0xb814('0x3')];function RuleEngine(_0xfbb64b,_0x477725){this['init']();if(!_[_0xb814('0x4')](_0xfbb64b)){this[_0xb814('0x5')](_0xfbb64b);}if(_0x477725){this[_0xb814('0x6')]=_0x477725[_0xb814('0x6')];}return this;}util[_0xb814('0x7')](RuleEngine,EventEmitter);RuleEngine[_0xb814('0x8')]['init']=function(_0x3b0829){this[_0xb814('0x9')]=[];this['activeRules']=[];};RuleEngine[_0xb814('0x8')][_0xb814('0x5')]=function(_0x186d5a){if(Array[_0xb814('0xa')](_0x186d5a)){this[_0xb814('0x9')]=this[_0xb814('0x9')][_0xb814('0xb')](_0x186d5a);}else if(_0x186d5a!==null&&_[_0xb814('0xc')](_0x186d5a)){this[_0xb814('0x9')][_0xb814('0xd')](_0x186d5a);}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0xe')]=function(){this['activeRules']=this[_0xb814('0x9')][_0xb814('0xf')](function(_0x35b10d){if(_[_0xb814('0x4')](_0x35b10d['on'])){_0x35b10d['on']=!![];}if(_0x35b10d['on']===!![]){return _0x35b10d;}});this[_0xb814('0x10')]=_[_0xb814('0x11')](this[_0xb814('0x10')],['p'],[_0xb814('0x12')]);};RuleEngine[_0xb814('0x8')][_0xb814('0x13')]=function(_0x3f4881,_0x44fb96){var _0x17f5bd=![];_0x3f4881[_0xb814('0x14')]=!![];var _0x303aca=_[_0xb814('0x15')](_0x3f4881);var _0x45e0d0=_[_0xb814('0x15')](_0x3f4881);var _0x125ce2=this[_0xb814('0x10')];var _0x7a21ef=[];var _0x48c9df=this[_0xb814('0x6')];(function FnRuleLoop(_0x55ba16){var _0x270598={'rules':function(){return _0x125ce2;},'rule':function(){return _0x125ce2[_0x55ba16];},'when':function(_0xfac75b){if(_0xfac75b){var _0x4c3007=_0x125ce2[_0x55ba16]['consequence'];_0x4c3007['ruleRef']=_0x125ce2[_0x55ba16]['id']||_0x125ce2[_0x55ba16][_0xb814('0x16')]||'index_'+_0x55ba16;process['nextTick'](function(){_0x7a21ef[_0xb814('0xd')](_0x4c3007[_0xb814('0x17')]);_0x4c3007[_0xb814('0x18')](_0x303aca,_0x270598);});}else{process['nextTick'](function(){_0x270598[_0xb814('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x17f5bd=!![];return FnRuleLoop(0x0);},'next':function(_0x531032){if(!_0x48c9df&&!_[_0xb814('0x1a')](_0x45e0d0,_0x303aca)){_0x45e0d0=_[_0xb814('0x15')](_0x303aca);process[_0xb814('0x1b')](function(){_0x270598[_0xb814('0x1c')]();});}else{process[_0xb814('0x1b')](function(){if(_[_0xb814('0x4')](_0x531032)){return FnRuleLoop(_0x55ba16+0x1);}else{return FnRuleLoop(_0x531032);}});}}};if(_0x55ba16<_0x125ce2[_0xb814('0x1d')]&&_0x17f5bd===![]){var _0x594470=_0x125ce2[_0x55ba16][_0xb814('0x1e')];_0x594470['call'](_0x303aca,_0x270598);}else{process[_0xb814('0x1b')](function(){_0x303aca[_0xb814('0x1f')]=_0x7a21ef;return _0x44fb96?_0x44fb96(_0x303aca):_[_0xb814('0x20')]();});}}(0x0));};RuleEngine[_0xb814('0x8')][_0xb814('0x21')]=function(_0xb9e57d){if(_[_0xb814('0x4')](_0xb9e57d)){return this['rules'];}else{var _0x392222=_[_0xb814('0x22')](_0xb9e57d);return _[_0xb814('0xf')](this[_0xb814('0x9')],_0x392222);}};RuleEngine[_0xb814('0x8')][_0xb814('0x23')]=function(_0x3f0150,_0x1e4e89){var _0x5a6291=_0x3f0150==='on'||_0x3f0150==='ON'?!![]:![];var _0x271aa8=this[_0xb814('0x21')](_0x1e4e89);for(var _0x52ed64=0x0,_0x9008b2=_0x271aa8[_0xb814('0x1d')];_0x52ed64<_0x9008b2;_0x52ed64+=0x1){_0x271aa8[_0x52ed64]['on']=_0x5a6291;}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0x24')]=function(_0x2051d0,_0x58c3ca){_0x2051d0=parseInt(_0x2051d0,0xa);var _0x338a28=this['findRules'](_0x58c3ca);for(var _0x6efe9a=0x0,_0x5f3e9b=_0x338a28['length'];_0x6efe9a<_0x5f3e9b;_0x6efe9a+=0x1){_0x338a28[_0x6efe9a][_0xb814('0x25')]=_0x2051d0;}this['sync']();};RuleEngine[_0xb814('0x8')][_0xb814('0x26')]=function(){var _0x2b91bd=this['rules'];if(_0x2b91bd instanceof Array){_0x2b91bd=_0x2b91bd['map'](function(_0x26d3a9){_0x26d3a9[_0xb814('0x1e')]=_0x26d3a9['condition'][_0xb814('0x27')]();_0x26d3a9[_0xb814('0x28')]=_0x26d3a9[_0xb814('0x28')][_0xb814('0x27')]();return _0x26d3a9;});}else if(!_[_0xb814('0x4')](_0x2b91bd)){_0x2b91bd[_0xb814('0x1e')]=_0x2b91bd[_0xb814('0x1e')]['toString']();_0x2b91bd[_0xb814('0x28')]=_0x2b91bd[_0xb814('0x28')][_0xb814('0x27')]();}return _0x2b91bd;};RuleEngine[_0xb814('0x8')][_0xb814('0x29')]=function(_0x4ff31a){this[_0xb814('0x2a')]();if(_['isString'](_0x4ff31a)){_0x4ff31a=JSON[_0xb814('0x2b')](_0x4ff31a);}if(_0x4ff31a instanceof Array){_0x4ff31a=_0x4ff31a[_0xb814('0x2c')](function(_0xe0f509){_0xe0f509['condition']=eval('('+_0xe0f509[_0xb814('0x1e')]+')');_0xe0f509[_0xb814('0x28')]=eval('('+_0xe0f509['consequence']+')');return _0xe0f509;});}else if(_0x4ff31a!==null&&typeof _0x4ff31a==_0xb814('0x2d')){_0x4ff31a[_0xb814('0x1e')]=eval('('+_0x4ff31a[_0xb814('0x1e')]+')');_0x4ff31a[_0xb814('0x28')]=eval('('+_0x4ff31a[_0xb814('0x28')]+')');}this[_0xb814('0x5')](_0x4ff31a);};module['exports']=RuleEngine;
\ No newline at end of file
+var _0x7a54=['turn','prioritize','priority','toJSON','map','toString','fromJSON','isString','object','exports','lodash','util','events','isNil','register','ignoreFactChanges','inherits','init','rules','activeRules','concat','prototype','sync','filter','orderBy','asc','execute','clone','consequence','ruleRef','name','index_','nextTick','push','call','isEqual','restart','length','condition','matchPath','noop','findRules'];(function(_0x361e32,_0x526f2b){var _0x6571bc=function(_0x2ac2ef){while(--_0x2ac2ef){_0x361e32['push'](_0x361e32['shift']());}};_0x6571bc(++_0x526f2b);}(_0x7a54,0x106));var _0x47a5=function(_0x5d810e,_0x2e0636){_0x5d810e=_0x5d810e-0x0;var _0x1fde73=_0x7a54[_0x5d810e];return _0x1fde73;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var EventEmitter=require(_0x47a5('0x2'))['EventEmitter'];function RuleEngine(_0x1d33e,_0x4086cd){this['init']();if(!_[_0x47a5('0x3')](_0x1d33e)){this[_0x47a5('0x4')](_0x1d33e);}if(_0x4086cd){this[_0x47a5('0x5')]=_0x4086cd[_0x47a5('0x5')];}return this;}util[_0x47a5('0x6')](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x47a5('0x7')]=function(_0x59199c){this[_0x47a5('0x8')]=[];this[_0x47a5('0x9')]=[];};RuleEngine['prototype'][_0x47a5('0x4')]=function(_0x5077f3){if(Array['isArray'](_0x5077f3)){this['rules']=this[_0x47a5('0x8')][_0x47a5('0xa')](_0x5077f3);}else if(_0x5077f3!==null&&_['isObject'](_0x5077f3)){this[_0x47a5('0x8')]['push'](_0x5077f3);}this['sync']();};RuleEngine[_0x47a5('0xb')][_0x47a5('0xc')]=function(){this[_0x47a5('0x9')]=this[_0x47a5('0x8')][_0x47a5('0xd')](function(_0xd308b8){if(_[_0x47a5('0x3')](_0xd308b8['on'])){_0xd308b8['on']=!![];}if(_0xd308b8['on']===!![]){return _0xd308b8;}});this['activeRules']=_[_0x47a5('0xe')](this[_0x47a5('0x9')],['p'],[_0x47a5('0xf')]);};RuleEngine[_0x47a5('0xb')][_0x47a5('0x10')]=function(_0x620ee9,_0x3c6c46){var _0x190faa=![];_0x620ee9['result']=!![];var _0x362359=_[_0x47a5('0x11')](_0x620ee9);var _0x3b001e=_[_0x47a5('0x11')](_0x620ee9);var _0x1ef44c=this['activeRules'];var _0x549de3=[];var _0x138bc0=this['ignoreFactChanges'];(function FnRuleLoop(_0x5247fd){var _0x423a81={'rules':function(){return _0x1ef44c;},'rule':function(){return _0x1ef44c[_0x5247fd];},'when':function(_0xaf70a6){if(_0xaf70a6){var _0x2ce454=_0x1ef44c[_0x5247fd][_0x47a5('0x12')];_0x2ce454[_0x47a5('0x13')]=_0x1ef44c[_0x5247fd]['id']||_0x1ef44c[_0x5247fd][_0x47a5('0x14')]||_0x47a5('0x15')+_0x5247fd;process[_0x47a5('0x16')](function(){_0x549de3[_0x47a5('0x17')](_0x2ce454['ruleRef']);_0x2ce454[_0x47a5('0x18')](_0x362359,_0x423a81);});}else{process[_0x47a5('0x16')](function(){_0x423a81['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x190faa=!![];return FnRuleLoop(0x0);},'next':function(_0x2b0360){if(!_0x138bc0&&!_[_0x47a5('0x19')](_0x3b001e,_0x362359)){_0x3b001e=_[_0x47a5('0x11')](_0x362359);process['nextTick'](function(){_0x423a81[_0x47a5('0x1a')]();});}else{process[_0x47a5('0x16')](function(){if(_[_0x47a5('0x3')](_0x2b0360)){return FnRuleLoop(_0x5247fd+0x1);}else{return FnRuleLoop(_0x2b0360);}});}}};if(_0x5247fd<_0x1ef44c[_0x47a5('0x1b')]&&_0x190faa===![]){var _0x5ef1b1=_0x1ef44c[_0x5247fd][_0x47a5('0x1c')];_0x5ef1b1[_0x47a5('0x18')](_0x362359,_0x423a81);}else{process['nextTick'](function(){_0x362359[_0x47a5('0x1d')]=_0x549de3;return _0x3c6c46?_0x3c6c46(_0x362359):_[_0x47a5('0x1e')]();});}}(0x0));};RuleEngine[_0x47a5('0xb')][_0x47a5('0x1f')]=function(_0x3abd6a){if(_['isNil'](_0x3abd6a)){return this['rules'];}else{var _0x136745=_['matches'](_0x3abd6a);return _[_0x47a5('0xd')](this['rules'],_0x136745);}};RuleEngine[_0x47a5('0xb')][_0x47a5('0x20')]=function(_0x36ad34,_0x1dac65){var _0x21f296=_0x36ad34==='on'||_0x36ad34==='ON'?!![]:![];var _0x3ba0b7=this[_0x47a5('0x1f')](_0x1dac65);for(var _0x136b14=0x0,_0x16631f=_0x3ba0b7[_0x47a5('0x1b')];_0x136b14<_0x16631f;_0x136b14+=0x1){_0x3ba0b7[_0x136b14]['on']=_0x21f296;}this[_0x47a5('0xc')]();};RuleEngine[_0x47a5('0xb')][_0x47a5('0x21')]=function(_0x528582,_0x243210){_0x528582=parseInt(_0x528582,0xa);var _0x51833b=this[_0x47a5('0x1f')](_0x243210);for(var _0x9ac908=0x0,_0x16901f=_0x51833b['length'];_0x9ac908<_0x16901f;_0x9ac908+=0x1){_0x51833b[_0x9ac908][_0x47a5('0x22')]=_0x528582;}this[_0x47a5('0xc')]();};RuleEngine[_0x47a5('0xb')][_0x47a5('0x23')]=function(){var _0x51cc81=this['rules'];if(_0x51cc81 instanceof Array){_0x51cc81=_0x51cc81[_0x47a5('0x24')](function(_0xfb5ddb){_0xfb5ddb['condition']=_0xfb5ddb['condition'][_0x47a5('0x25')]();_0xfb5ddb[_0x47a5('0x12')]=_0xfb5ddb['consequence'][_0x47a5('0x25')]();return _0xfb5ddb;});}else if(!_['isNil'](_0x51cc81)){_0x51cc81[_0x47a5('0x1c')]=_0x51cc81[_0x47a5('0x1c')]['toString']();_0x51cc81['consequence']=_0x51cc81[_0x47a5('0x12')]['toString']();}return _0x51cc81;};RuleEngine[_0x47a5('0xb')][_0x47a5('0x26')]=function(_0xf269a8){this['init']();if(_[_0x47a5('0x27')](_0xf269a8)){_0xf269a8=JSON['parse'](_0xf269a8);}if(_0xf269a8 instanceof Array){_0xf269a8=_0xf269a8['map'](function(_0x65542e){_0x65542e['condition']=eval('('+_0x65542e[_0x47a5('0x1c')]+')');_0x65542e['consequence']=eval('('+_0x65542e[_0x47a5('0x12')]+')');return _0x65542e;});}else if(_0xf269a8!==null&&typeof _0xf269a8==_0x47a5('0x28')){_0xf269a8[_0x47a5('0x1c')]=eval('('+_0xf269a8[_0x47a5('0x1c')]+')');_0xf269a8[_0x47a5('0x12')]=eval('('+_0xf269a8[_0x47a5('0x12')]+')');}this[_0x47a5('0x4')](_0xf269a8);};module[_0x47a5('0x29')]=RuleEngine;
\ No newline at end of file
index 8e38a2b..d5f1251 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x201f=['sendMailMessage','SendMail','bluebird','jayson/promise','client','http','request','then','error','message','result','catch'];(function(_0x2c903a,_0x2e1418){var _0x36f34c=function(_0x179d7d){while(--_0x179d7d){_0x2c903a['push'](_0x2c903a['shift']());}};_0x36f34c(++_0x2e1418);}(_0x201f,0x15e));var _0xf201=function(_0xab0ea2,_0x3ac7dd){_0xab0ea2=_0xab0ea2-0x0;var _0x1a0e96=_0x201f[_0xab0ea2];return _0x1a0e96;};'use strict';var BPromise=require(_0xf201('0x0'));var jayson=require(_0xf201('0x1'));var client=jayson[_0xf201('0x2')][_0xf201('0x3')]({'port':0x232b});function request(_0x11734a,_0x2432e6){return new BPromise(function(_0x12f09d,_0x521d14){return client[_0xf201('0x4')](_0x11734a,_0x2432e6)[_0xf201('0x5')](function(_0x1fc775){if(_0x1fc775['error']){return _0x521d14(_0x1fc775[_0xf201('0x6')][_0xf201('0x7')]);}else{return _0x12f09d(_0x1fc775[_0xf201('0x8')]);}})[_0xf201('0x9')](function(_0x3a2d65){return _0x521d14(_0x3a2d65);});});}exports[_0xf201('0xa')]=function(_0x33ee47,_0x4fea69){return request(_0xf201('0xb'),{'account':_0x33ee47,'message':_0x4fea69});};
\ No newline at end of file
+var _0x6da5=['error','message','result','sendMailMessage','SendMail','bluebird','client','request','then'];(function(_0x31f201,_0x41706f){var _0x3a5830=function(_0xf7010e){while(--_0xf7010e){_0x31f201['push'](_0x31f201['shift']());}};_0x3a5830(++_0x41706f);}(_0x6da5,0x1e2));var _0x56da=function(_0x5b3e26,_0x1f8977){_0x5b3e26=_0x5b3e26-0x0;var _0x4dabeb=_0x6da5[_0x5b3e26];return _0x4dabeb;};'use strict';var BPromise=require(_0x56da('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x56da('0x1')]['http']({'port':0x232b});function request(_0x46c817,_0x3c95f2){return new BPromise(function(_0x1ff372,_0x9e6dc8){return client[_0x56da('0x2')](_0x46c817,_0x3c95f2)[_0x56da('0x3')](function(_0x14772a){if(_0x14772a[_0x56da('0x4')]){return _0x9e6dc8(_0x14772a[_0x56da('0x4')][_0x56da('0x5')]);}else{return _0x1ff372(_0x14772a[_0x56da('0x6')]);}})['catch'](function(_0x4a44f0){return _0x9e6dc8(_0x4a44f0);});});}exports[_0x56da('0x7')]=function(_0x43c7c5,_0x26d346){return request(_0x56da('0x8'),{'account':_0x43c7c5,'message':_0x26d346});};
\ No newline at end of file
index 9158eff..4af8e49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b97=['chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','mailStatus','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsCapacity','smsCurrentCapacity','whatsappStatusTime','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','prototype','getChannelStatus','CurrentCapacity','Capacity','idle','updateRealtime','mail','chat','openchannel','fax','sms','length','Status','StatusTime','toNumber','format','name','chatCurrentCapacity','mailStatusTime','smsStatusTime','whatsappStatus','whatsappCapacity','whatsappCurrentCapacity','stringify','user:save','exports','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','online','voicePause'];(function(_0x3bcf9e,_0x148a5d){var _0x1bb37c=function(_0xcaf5da){while(--_0xcaf5da){_0x3bcf9e['push'](_0x3bcf9e['shift']());}};_0x1bb37c(++_0x148a5d);}(_0x5b97,0xac));var _0x75b9=function(_0x3ed054,_0x4d4f16){_0x3ed054=_0x3ed054-0x0;var _0x16dd95=_0x5b97[_0x3ed054];return _0x16dd95;};'use strict';var _=require('lodash');var moment=require('moment');var md5=require(_0x75b9('0x0'));var Redis=require(_0x75b9('0x1'));var config=require(_0x75b9('0x2'));config[_0x75b9('0x3')]=_['defaults'](config['redis'],{'host':_0x75b9('0x4'),'port':0x18eb});var io=require(_0x75b9('0x5'))(new Redis(config[_0x75b9('0x3')]));function Agent(_0x4c4cef){this['id']=_0x4c4cef['id']||0x0;this['name']=_0x4c4cef['name']||'';this[_0x75b9('0x6')]=_0x4c4cef[_0x75b9('0x6')]||!![];this[_0x75b9('0x7')]=_0x4c4cef[_0x75b9('0x7')]||![];this['chatPause']=_0x4c4cef[_0x75b9('0x8')]||![];this['mailPause']=_0x4c4cef[_0x75b9('0x9')]||![];this[_0x75b9('0xa')]=_0x4c4cef[_0x75b9('0xa')]||![];this[_0x75b9('0xb')]=_0x4c4cef['smsPause']||![];this[_0x75b9('0xc')]=_0x4c4cef[_0x75b9('0xc')]||![];this[_0x75b9('0xd')]=_0x75b9('0xe');this[_0x75b9('0xf')]=0x0;this[_0x75b9('0x10')]=_0x4c4cef['chatCapacity']||0x0;this['chatCurrentCapacity']=0x0;this[_0x75b9('0x11')]=_0x75b9('0xe');this['mailStatusTime']=0x0;this[_0x75b9('0x12')]=_0x4c4cef['mailCapacity']||0x0;this[_0x75b9('0x13')]=0x0;this[_0x75b9('0x14')]='unknown';this[_0x75b9('0x15')]=0x0;this[_0x75b9('0x16')]=_0x4c4cef[_0x75b9('0x16')]||0x0;this[_0x75b9('0x17')]=0x0;this[_0x75b9('0x18')]=_0x75b9('0xe');this['smsStatusTime']=0x0;this[_0x75b9('0x19')]=_0x4c4cef[_0x75b9('0x19')]||0x0;this[_0x75b9('0x1a')]=0x0;this['whatsappStatus']='unknown';this[_0x75b9('0x1b')]=0x0;this['whatsappCapacity']=_0x4c4cef['whatsappCapacity']||0x0;this['whatsappCurrentCapacity']=0x0;this[_0x75b9('0x1c')]=_0x75b9('0xe');this[_0x75b9('0x1d')]=0x0;this['openchannelCapacity']=_0x4c4cef[_0x75b9('0x1e')]||0x0;this[_0x75b9('0x1f')]=0x0;this[_0x75b9('0x20')]=![];this[_0x75b9('0x21')]=undefined;this[_0x75b9('0x0')]='';this['updateRealtime']();}Agent[_0x75b9('0x22')][_0x75b9('0x23')]=function(_0x101a89){if(this[_0x101a89+_0x75b9('0x24')]>0x0){if(this[_0x101a89+_0x75b9('0x25')]>0x0&&this[_0x101a89+_0x75b9('0x24')]>=this[_0x101a89+_0x75b9('0x25')]){return'maxcapacity';}else{return'working';}}else{return _0x75b9('0x26');}};Agent[_0x75b9('0x22')][_0x75b9('0x27')]=function(){var _0x381058=[_0x75b9('0x28'),_0x75b9('0x29'),_0x75b9('0x2a'),_0x75b9('0x2b'),_0x75b9('0x2c'),'whatsapp'];for(var _0x2822fe=0x0;_0x2822fe<_0x381058[_0x75b9('0x2d')];_0x2822fe+=0x1){var _0x23f4ed=this[_0x75b9('0x23')](_0x381058[_0x2822fe]);if(this[_0x381058[_0x2822fe]+_0x75b9('0x2e')]!==_0x23f4ed){this[_0x381058[_0x2822fe]+_0x75b9('0x2f')]=_[_0x75b9('0x30')](moment()[_0x75b9('0x31')]('x'));}this[_0x381058[_0x2822fe]+_0x75b9('0x2e')]=_0x23f4ed;}var _0x4282e8={'id':this['id'],'name':this[_0x75b9('0x32')],'online':this[_0x75b9('0x6')],'voicePause':this[_0x75b9('0x7')],'chatPause':this[_0x75b9('0x8')],'mailPause':this[_0x75b9('0x9')],'smsPause':this['smsPause'],'faxPause':this[_0x75b9('0xa')],'openchannelPause':this[_0x75b9('0xc')],'chatStatus':this[_0x75b9('0xd')],'chatStatusTime':this[_0x75b9('0xf')],'chatCapacity':this[_0x75b9('0x10')],'chatCurrentCapacity':this[_0x75b9('0x33')],'mailStatus':this[_0x75b9('0x11')],'mailStatusTime':this[_0x75b9('0x34')],'mailCapacity':this[_0x75b9('0x12')],'mailCurrentCapacity':this[_0x75b9('0x13')],'faxStatus':this[_0x75b9('0x14')],'faxStatusTime':this[_0x75b9('0x15')],'faxCapacity':this[_0x75b9('0x16')],'faxCurrentCapacity':this[_0x75b9('0x17')],'smsStatus':this['smsStatus'],'smsStatusTime':this[_0x75b9('0x35')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this['smsCurrentCapacity'],'whatsappStatus':this[_0x75b9('0x36')],'whatsappStatusTime':this['whatsappStatusTime'],'whatsappCapacity':this[_0x75b9('0x37')],'whatsappCurrentCapacity':this[_0x75b9('0x38')],'openchannelStatus':this[_0x75b9('0x1c')],'openchannelStatusTime':this[_0x75b9('0x1d')],'openchannelCapacity':this[_0x75b9('0x1e')],'openchannelCurrentCapacity':this['openchannelCurrentCapacity'],'busy':this[_0x75b9('0x20')],'busyQueue':this[_0x75b9('0x21')]};var _0x1ead33=md5(JSON[_0x75b9('0x39')](_0x4282e8));if(this[_0x75b9('0x0')]!==_0x1ead33){this['md5']=_0x1ead33;io['emit'](_0x75b9('0x3a'),_0x4282e8);}};module[_0x75b9('0x3b')]=Agent;
\ No newline at end of file
+var _0x69af=['openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','idle','updateRealtime','mail','chat','openchannel','fax','whatsapp','length','Status','StatusTime','toNumber','format','smsPause','faxStatusTime','openchannelStatusTime','user:save','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','openchannelStatus'];(function(_0x48ce25,_0x44f5d0){var _0x5a5627=function(_0x4ad76c){while(--_0x4ad76c){_0x48ce25['push'](_0x48ce25['shift']());}};_0x5a5627(++_0x44f5d0);}(_0x69af,0x17b));var _0xf69a=function(_0x2deeb8,_0x423077){_0x2deeb8=_0x2deeb8-0x0;var _0x460c4d=_0x69af[_0x2deeb8];return _0x460c4d;};'use strict';var _=require('lodash');var moment=require(_0xf69a('0x0'));var md5=require(_0xf69a('0x1'));var Redis=require(_0xf69a('0x2'));var config=require(_0xf69a('0x3'));config[_0xf69a('0x4')]=_[_0xf69a('0x5')](config['redis'],{'host':_0xf69a('0x6'),'port':0x18eb});var io=require(_0xf69a('0x7'))(new Redis(config[_0xf69a('0x4')]));function Agent(_0x2820d8){this['id']=_0x2820d8['id']||0x0;this[_0xf69a('0x8')]=_0x2820d8['name']||'';this[_0xf69a('0x9')]=_0x2820d8[_0xf69a('0x9')]||!![];this[_0xf69a('0xa')]=_0x2820d8['voicePause']||![];this['chatPause']=_0x2820d8[_0xf69a('0xb')]||![];this[_0xf69a('0xc')]=_0x2820d8[_0xf69a('0xc')]||![];this[_0xf69a('0xd')]=_0x2820d8[_0xf69a('0xd')]||![];this['smsPause']=_0x2820d8['smsPause']||![];this['openchannelPause']=_0x2820d8[_0xf69a('0xe')]||![];this[_0xf69a('0xf')]=_0xf69a('0x10');this[_0xf69a('0x11')]=0x0;this['chatCapacity']=_0x2820d8[_0xf69a('0x12')]||0x0;this[_0xf69a('0x13')]=0x0;this[_0xf69a('0x14')]=_0xf69a('0x10');this[_0xf69a('0x15')]=0x0;this[_0xf69a('0x16')]=_0x2820d8[_0xf69a('0x16')]||0x0;this[_0xf69a('0x17')]=0x0;this[_0xf69a('0x18')]=_0xf69a('0x10');this['faxStatusTime']=0x0;this[_0xf69a('0x19')]=_0x2820d8[_0xf69a('0x19')]||0x0;this[_0xf69a('0x1a')]=0x0;this[_0xf69a('0x1b')]='unknown';this[_0xf69a('0x1c')]=0x0;this[_0xf69a('0x1d')]=_0x2820d8[_0xf69a('0x1d')]||0x0;this[_0xf69a('0x1e')]=0x0;this[_0xf69a('0x1f')]=_0xf69a('0x10');this[_0xf69a('0x20')]=0x0;this['whatsappCapacity']=_0x2820d8['whatsappCapacity']||0x0;this['whatsappCurrentCapacity']=0x0;this[_0xf69a('0x21')]='unknown';this['openchannelStatusTime']=0x0;this['openchannelCapacity']=_0x2820d8[_0xf69a('0x22')]||0x0;this[_0xf69a('0x23')]=0x0;this[_0xf69a('0x24')]=![];this[_0xf69a('0x25')]=undefined;this['md5']='';this['updateRealtime']();}Agent[_0xf69a('0x26')][_0xf69a('0x27')]=function(_0x2a3ad){if(this[_0x2a3ad+_0xf69a('0x28')]>0x0){if(this[_0x2a3ad+_0xf69a('0x29')]>0x0&&this[_0x2a3ad+_0xf69a('0x28')]>=this[_0x2a3ad+_0xf69a('0x29')]){return _0xf69a('0x2a');}else{return'working';}}else{return _0xf69a('0x2b');}};Agent[_0xf69a('0x26')][_0xf69a('0x2c')]=function(){var _0x39111e=[_0xf69a('0x2d'),_0xf69a('0x2e'),_0xf69a('0x2f'),_0xf69a('0x30'),'sms',_0xf69a('0x31')];for(var _0x5e8701=0x0;_0x5e8701<_0x39111e[_0xf69a('0x32')];_0x5e8701+=0x1){var _0x106ac9=this[_0xf69a('0x27')](_0x39111e[_0x5e8701]);if(this[_0x39111e[_0x5e8701]+_0xf69a('0x33')]!==_0x106ac9){this[_0x39111e[_0x5e8701]+_0xf69a('0x34')]=_[_0xf69a('0x35')](moment()[_0xf69a('0x36')]('x'));}this[_0x39111e[_0x5e8701]+_0xf69a('0x33')]=_0x106ac9;}var _0x1c05bc={'id':this['id'],'name':this['name'],'online':this['online'],'voicePause':this[_0xf69a('0xa')],'chatPause':this['chatPause'],'mailPause':this['mailPause'],'smsPause':this[_0xf69a('0x37')],'faxPause':this['faxPause'],'openchannelPause':this['openchannelPause'],'chatStatus':this[_0xf69a('0xf')],'chatStatusTime':this[_0xf69a('0x11')],'chatCapacity':this[_0xf69a('0x12')],'chatCurrentCapacity':this[_0xf69a('0x13')],'mailStatus':this[_0xf69a('0x14')],'mailStatusTime':this[_0xf69a('0x15')],'mailCapacity':this[_0xf69a('0x16')],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this[_0xf69a('0x18')],'faxStatusTime':this[_0xf69a('0x38')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this[_0xf69a('0x1a')],'smsStatus':this['smsStatus'],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0xf69a('0x1e')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this['whatsappStatusTime'],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0xf69a('0x21')],'openchannelStatusTime':this[_0xf69a('0x39')],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this[_0xf69a('0x23')],'busy':this[_0xf69a('0x24')],'busyQueue':this[_0xf69a('0x25')]};var _0x548b2b=md5(JSON['stringify'](_0x1c05bc));if(this[_0xf69a('0x1')]!==_0x548b2b){this['md5']=_0x548b2b;io['emit'](_0xf69a('0x3a'),_0x1c05bc);}};module['exports']=Agent;
\ No newline at end of file
index 4c9db53..e3d2859 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6cc=['chat:queue:%s','emit','chat_queue:save','lodash','md5','util','ioredis','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','_rr','mapAgentsId','map','paused','length','online','loggedIn','available','stringify','format'];(function(_0x4991d6,_0x348deb){var _0x50faf7=function(_0x14c7f8){while(--_0x14c7f8){_0x4991d6['push'](_0x4991d6['shift']());}};_0x50faf7(++_0x348deb);}(_0xb6cc,0xce));var _0xcb6c=function(_0x5c97,_0x498824){_0x5c97=_0x5c97-0x0;var _0x59074f=_0xb6cc[_0x5c97];return _0x59074f;};'use strict';var _=require(_0xcb6c('0x0'));var md5=require(_0xcb6c('0x1'));var util=require(_0xcb6c('0x2'));var Redis=require(_0xcb6c('0x3'));var config=require('../../../config/environment');config[_0xcb6c('0x4')]=_['defaults'](config[_0xcb6c('0x4')],{'host':_0xcb6c('0x5'),'port':0x18eb});var io=require(_0xcb6c('0x6'))(new Redis(config['redis']));function ChatQueue(_0x15a8f5){this['id']=_0x15a8f5['id']||0x0;this[_0xcb6c('0x7')]=_0x15a8f5[_0xcb6c('0x7')]||'';this[_0xcb6c('0x8')]=_0x15a8f5[_0xcb6c('0x8')]||0xa;this['strategy']=_0x15a8f5[_0xcb6c('0x9')]||_0xcb6c('0xa');this['Agents']=_0x15a8f5[_0xcb6c('0xb')];this['mapAgentsId']={};this[_0xcb6c('0xc')]=0x0;this[_0xcb6c('0x1')]='';this[_0xcb6c('0xd')]();this[_0xcb6c('0xe')]();}ChatQueue[_0xcb6c('0xf')]['updateRouting']=function(){var _0x464743=this['mapAgentsId'][_0xcb6c('0x10')];this[_0xcb6c('0x11')]=_[_0xcb6c('0x12')](this[_0xcb6c('0xb')],'id');this[_0xcb6c('0x11')][_0xcb6c('0x10')]=_0x464743;};ChatQueue[_0xcb6c('0xf')]['updateRealtime']=function(){this['loggedIn']=0x0;this[_0xcb6c('0x13')]=0x0;for(var _0x31b90b=0x0;_0x31b90b<this[_0xcb6c('0xb')][_0xcb6c('0x14')];_0x31b90b+=0x1){if(this[_0xcb6c('0xb')][_0x31b90b][_0xcb6c('0x15')]){this[_0xcb6c('0x16')]+=0x1;}if(this[_0xcb6c('0xb')][_0x31b90b]['chatPause']){this[_0xcb6c('0x13')]+=0x1;}}this[_0xcb6c('0x17')]=this[_0xcb6c('0x16')]-this[_0xcb6c('0x13')];this['available']=this['available']>=0x0?this['available']:0x0;var _0x266baa={'id':this['id'],'available':this[_0xcb6c('0x17')],'loggedIn':this[_0xcb6c('0x16')],'name':this[_0xcb6c('0x7')],'paused':this[_0xcb6c('0x13')],'waiting':this['waiting']};var _0x1d29f1=md5(JSON[_0xcb6c('0x18')](_0x266baa));if(this[_0xcb6c('0x1')]!==_0x1d29f1){this[_0xcb6c('0x1')]=_0x1d29f1;io['to'](util[_0xcb6c('0x19')](_0xcb6c('0x1a'),_0x266baa['name']))[_0xcb6c('0x1b')](_0xcb6c('0x1c'),_0x266baa);}};module['exports']=ChatQueue;
\ No newline at end of file
+var _0xb31e=['chatPause','available','chat:queue:%s','chat_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','Agents','waiting','updateRealtime','updateRouting','mapAgentsId','_rr','map','prototype','loggedIn','paused','length','online'];(function(_0x374afc,_0x5660ab){var _0x4e0c31=function(_0x345110){while(--_0x345110){_0x374afc['push'](_0x374afc['shift']());}};_0x4e0c31(++_0x5660ab);}(_0xb31e,0xc2));var _0xeb31=function(_0x4075e7,_0xa1b61c){_0x4075e7=_0x4075e7-0x0;var _0x4c0fba=_0xb31e[_0x4075e7];return _0x4c0fba;};'use strict';var _=require('lodash');var md5=require(_0xeb31('0x0'));var util=require(_0xeb31('0x1'));var Redis=require(_0xeb31('0x2'));var config=require(_0xeb31('0x3'));config[_0xeb31('0x4')]=_[_0xeb31('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xeb31('0x6'))(new Redis(config[_0xeb31('0x4')]));function ChatQueue(_0x31cefe){this['id']=_0x31cefe['id']||0x0;this[_0xeb31('0x7')]=_0x31cefe[_0xeb31('0x7')]||'';this['timeout']=_0x31cefe[_0xeb31('0x8')]||0xa;this[_0xeb31('0x9')]=_0x31cefe['strategy']||'beepall';this[_0xeb31('0xa')]=_0x31cefe[_0xeb31('0xa')];this['mapAgentsId']={};this[_0xeb31('0xb')]=0x0;this[_0xeb31('0x0')]='';this['updateRouting']();this[_0xeb31('0xc')]();}ChatQueue['prototype'][_0xeb31('0xd')]=function(){var _0x6cf46d=this[_0xeb31('0xe')][_0xeb31('0xf')];this[_0xeb31('0xe')]=_[_0xeb31('0x10')](this['Agents'],'id');this['mapAgentsId']['_rr']=_0x6cf46d;};ChatQueue[_0xeb31('0x11')][_0xeb31('0xc')]=function(){this[_0xeb31('0x12')]=0x0;this[_0xeb31('0x13')]=0x0;for(var _0x42491f=0x0;_0x42491f<this['Agents'][_0xeb31('0x14')];_0x42491f+=0x1){if(this['Agents'][_0x42491f][_0xeb31('0x15')]){this[_0xeb31('0x12')]+=0x1;}if(this[_0xeb31('0xa')][_0x42491f][_0xeb31('0x16')]){this[_0xeb31('0x13')]+=0x1;}}this[_0xeb31('0x17')]=this[_0xeb31('0x12')]-this['paused'];this[_0xeb31('0x17')]=this[_0xeb31('0x17')]>=0x0?this[_0xeb31('0x17')]:0x0;var _0x143cd8={'id':this['id'],'available':this['available'],'loggedIn':this[_0xeb31('0x12')],'name':this['name'],'paused':this[_0xeb31('0x13')],'waiting':this[_0xeb31('0xb')]};var _0x209ba9=md5(JSON['stringify'](_0x143cd8));if(this[_0xeb31('0x0')]!==_0x209ba9){this[_0xeb31('0x0')]=_0x209ba9;io['to'](util['format'](_0xeb31('0x18'),_0x143cd8[_0xeb31('0x7')]))['emit'](_0xeb31('0x19'),_0x143cd8);}};module[_0xeb31('0x1a')]=ChatQueue;
\ No newline at end of file
index df2c2ea..bc09214 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b83=['socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','map','loggedIn','online','faxPause','available','paused','stringify','format','fax:queue:%s','emit','exports','lodash','md5','util','../../../config/environment','redis','defaults'];(function(_0x590649,_0x28f93d){var _0x4e1806=function(_0x145c9a){while(--_0x145c9a){_0x590649['push'](_0x590649['shift']());}};_0x4e1806(++_0x28f93d);}(_0x9b83,0xf6));var _0x39b8=function(_0x45fc6a,_0x166adb){_0x45fc6a=_0x45fc6a-0x0;var _0x14bcfd=_0x9b83[_0x45fc6a];return _0x14bcfd;};'use strict';var _=require(_0x39b8('0x0'));var md5=require(_0x39b8('0x1'));var util=require(_0x39b8('0x2'));var Redis=require('ioredis');var config=require(_0x39b8('0x3'));config[_0x39b8('0x4')]=_[_0x39b8('0x5')](config[_0x39b8('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x39b8('0x6'))(new Redis(config[_0x39b8('0x4')]));function FaxQueue(_0x487027){this['id']=_0x487027['id']||0x0;this[_0x39b8('0x7')]=_0x487027[_0x39b8('0x7')]||'';this[_0x39b8('0x8')]=_0x487027[_0x39b8('0x8')]||0xa;this['strategy']=_0x487027[_0x39b8('0x9')]||_0x39b8('0xa');this[_0x39b8('0xb')]=_0x487027[_0x39b8('0xb')];this['mapAgentsId']={};this[_0x39b8('0xc')]=0x0;this[_0x39b8('0x1')]='';this[_0x39b8('0xd')]();this[_0x39b8('0xe')]();}FaxQueue[_0x39b8('0xf')][_0x39b8('0xd')]=function(){var _0x1017d6=this['mapAgentsId']['_rr'];this[_0x39b8('0x10')]=_[_0x39b8('0x11')](this['Agents'],'id');this[_0x39b8('0x10')]['_rr']=_0x1017d6;};FaxQueue[_0x39b8('0xf')][_0x39b8('0xe')]=function(){this[_0x39b8('0x12')]=0x0;this['paused']=0x0;for(var _0x4fd4d1=0x0;_0x4fd4d1<this[_0x39b8('0xb')]['length'];_0x4fd4d1+=0x1){if(this[_0x39b8('0xb')][_0x4fd4d1][_0x39b8('0x13')]){this['loggedIn']+=0x1;}if(this[_0x39b8('0xb')][_0x4fd4d1][_0x39b8('0x14')]){this['paused']+=0x1;}}this[_0x39b8('0x15')]=this['loggedIn']-this[_0x39b8('0x16')];this['available']=this['available']>=0x0?this['available']:0x0;var _0x5f881f={'id':this['id'],'available':this['available'],'loggedIn':this[_0x39b8('0x12')],'name':this[_0x39b8('0x7')],'paused':this[_0x39b8('0x16')],'waiting':this[_0x39b8('0xc')]};var _0x3731ff=md5(JSON[_0x39b8('0x17')](_0x5f881f));if(this['md5']!==_0x3731ff){this[_0x39b8('0x1')]=_0x3731ff;io['to'](util[_0x39b8('0x18')](_0x39b8('0x19'),_0x5f881f[_0x39b8('0x7')]))[_0x39b8('0x1a')]('fax_queue:save',_0x5f881f);}};module[_0x39b8('0x1b')]=FaxQueue;
\ No newline at end of file
+var _0x0978=['Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','faxPause','available','stringify','format','fax:queue:%s','emit','fax_queue:save','lodash','md5','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall'];(function(_0x375e75,_0x417dc4){var _0x40a7b7=function(_0x2a45a1){while(--_0x2a45a1){_0x375e75['push'](_0x375e75['shift']());}};_0x40a7b7(++_0x417dc4);}(_0x0978,0xb3));var _0x8097=function(_0x35e467,_0xb723a1){_0x35e467=_0x35e467-0x0;var _0x49a49d=_0x0978[_0x35e467];return _0x49a49d;};'use strict';var _=require(_0x8097('0x0'));var md5=require(_0x8097('0x1'));var util=require('util');var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x8097('0x2')]=_[_0x8097('0x3')](config[_0x8097('0x2')],{'host':_0x8097('0x4'),'port':0x18eb});var io=require(_0x8097('0x5'))(new Redis(config[_0x8097('0x2')]));function FaxQueue(_0x5f32b1){this['id']=_0x5f32b1['id']||0x0;this[_0x8097('0x6')]=_0x5f32b1['name']||'';this[_0x8097('0x7')]=_0x5f32b1[_0x8097('0x7')]||0xa;this[_0x8097('0x8')]=_0x5f32b1[_0x8097('0x8')]||_0x8097('0x9');this[_0x8097('0xa')]=_0x5f32b1[_0x8097('0xa')];this[_0x8097('0xb')]={};this[_0x8097('0xc')]=0x0;this['md5']='';this[_0x8097('0xd')]();this[_0x8097('0xe')]();}FaxQueue[_0x8097('0xf')][_0x8097('0xd')]=function(){var _0x437b85=this['mapAgentsId'][_0x8097('0x10')];this[_0x8097('0xb')]=_[_0x8097('0x11')](this[_0x8097('0xa')],'id');this[_0x8097('0xb')]['_rr']=_0x437b85;};FaxQueue[_0x8097('0xf')][_0x8097('0xe')]=function(){this[_0x8097('0x12')]=0x0;this[_0x8097('0x13')]=0x0;for(var _0xa496d=0x0;_0xa496d<this[_0x8097('0xa')]['length'];_0xa496d+=0x1){if(this[_0x8097('0xa')][_0xa496d]['online']){this[_0x8097('0x12')]+=0x1;}if(this[_0x8097('0xa')][_0xa496d][_0x8097('0x14')]){this[_0x8097('0x13')]+=0x1;}}this[_0x8097('0x15')]=this[_0x8097('0x12')]-this[_0x8097('0x13')];this[_0x8097('0x15')]=this[_0x8097('0x15')]>=0x0?this[_0x8097('0x15')]:0x0;var _0x30cc3b={'id':this['id'],'available':this[_0x8097('0x15')],'loggedIn':this[_0x8097('0x12')],'name':this[_0x8097('0x6')],'paused':this[_0x8097('0x13')],'waiting':this[_0x8097('0xc')]};var _0x1fa30=md5(JSON[_0x8097('0x16')](_0x30cc3b));if(this[_0x8097('0x1')]!==_0x1fa30){this['md5']=_0x1fa30;io['to'](util[_0x8097('0x17')](_0x8097('0x18'),_0x30cc3b[_0x8097('0x6')]))[_0x8097('0x19')](_0x8097('0x1a'),_0x30cc3b);}};module['exports']=FaxQueue;
\ No newline at end of file
index 353e9d1..7bb8ddf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a58=['name','Intervals','exports'];(function(_0x1bf2f9,_0x2aebd5){var _0x5e5d5f=function(_0x16433c){while(--_0x16433c){_0x1bf2f9['push'](_0x1bf2f9['shift']());}};_0x5e5d5f(++_0x2aebd5);}(_0x5a58,0x87));var _0x85a5=function(_0x42bc91,_0x41f40a){_0x42bc91=_0x42bc91-0x0;var _0x3f5507=_0x5a58[_0x42bc91];return _0x3f5507;};'use strict';function Interval(_0xa9afa6){this['id']=_0xa9afa6['id']||0x0;this['name']=_0xa9afa6[_0x85a5('0x0')]||'';this[_0x85a5('0x1')]=_0xa9afa6['Intervals']||{};}module[_0x85a5('0x2')]=Interval;
\ No newline at end of file
+var _0xb418=['name','Intervals','exports'];(function(_0x238b4b,_0x2fe72d){var _0x4fe904=function(_0x434e9c){while(--_0x434e9c){_0x238b4b['push'](_0x238b4b['shift']());}};_0x4fe904(++_0x2fe72d);}(_0xb418,0xb7));var _0x8b41=function(_0x34843e,_0x4c4224){_0x34843e=_0x34843e-0x0;var _0x598f7f=_0xb418[_0x34843e];return _0x598f7f;};'use strict';function Interval(_0x20fc65){this['id']=_0x20fc65['id']||0x0;this[_0x8b41('0x0')]=_0x20fc65[_0x8b41('0x0')]||'';this[_0x8b41('0x1')]=_0x20fc65[_0x8b41('0x1')]||{};}module[_0x8b41('0x2')]=Interval;
\ No newline at end of file
index 631ebf8..066a00a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc17c=['loggedIn','paused','length','online','mailPause','available','stringify','format','mail:queue:%s','exports','lodash','md5','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map'];(function(_0x3a3983,_0x45545c){var _0x35e13e=function(_0x1f01b6){while(--_0x1f01b6){_0x3a3983['push'](_0x3a3983['shift']());}};_0x35e13e(++_0x45545c);}(_0xc17c,0x122));var _0xcc17=function(_0x24368f,_0x1cc2c6){_0x24368f=_0x24368f-0x0;var _0x224e08=_0xc17c[_0x24368f];return _0x224e08;};'use strict';var _=require(_0xcc17('0x0'));var md5=require(_0xcc17('0x1'));var util=require('util');var Redis=require('ioredis');var config=require('../../../config/environment');config[_0xcc17('0x2')]=_[_0xcc17('0x3')](config[_0xcc17('0x2')],{'host':_0xcc17('0x4'),'port':0x18eb});var io=require(_0xcc17('0x5'))(new Redis(config[_0xcc17('0x2')]));function MailQueue(_0x2046f7){this['id']=_0x2046f7['id']||0x0;this[_0xcc17('0x6')]=_0x2046f7['name']||'';this['timeout']=_0x2046f7[_0xcc17('0x7')]||0xa;this[_0xcc17('0x8')]=_0x2046f7[_0xcc17('0x8')]||_0xcc17('0x9');this[_0xcc17('0xa')]=_0x2046f7['Agents'];this[_0xcc17('0xb')]={};this[_0xcc17('0xc')]=0x0;this[_0xcc17('0x1')]='';this['updateRouting']();this[_0xcc17('0xd')]();}MailQueue[_0xcc17('0xe')][_0xcc17('0xf')]=function(){var _0x5c96ae=this[_0xcc17('0xb')][_0xcc17('0x10')];this['mapAgentsId']=_[_0xcc17('0x11')](this[_0xcc17('0xa')],'id');this['mapAgentsId'][_0xcc17('0x10')]=_0x5c96ae;};MailQueue['prototype'][_0xcc17('0xd')]=function(){this[_0xcc17('0x12')]=0x0;this[_0xcc17('0x13')]=0x0;for(var _0x450fa9=0x0;_0x450fa9<this[_0xcc17('0xa')][_0xcc17('0x14')];_0x450fa9+=0x1){if(this[_0xcc17('0xa')][_0x450fa9][_0xcc17('0x15')]){this[_0xcc17('0x12')]+=0x1;}if(this[_0xcc17('0xa')][_0x450fa9][_0xcc17('0x16')]){this['paused']+=0x1;}}this['available']=this[_0xcc17('0x12')]-this[_0xcc17('0x13')];this['available']=this[_0xcc17('0x17')]>=0x0?this['available']:0x0;var _0x2a6a11={'id':this['id'],'available':this[_0xcc17('0x17')],'loggedIn':this[_0xcc17('0x12')],'name':this[_0xcc17('0x6')],'paused':this[_0xcc17('0x13')],'waiting':this[_0xcc17('0xc')]};var _0x5e2ede=md5(JSON[_0xcc17('0x18')](_0x2a6a11));if(this[_0xcc17('0x1')]!==_0x5e2ede){this['md5']=_0x5e2ede;io['to'](util[_0xcc17('0x19')](_0xcc17('0x1a'),_0x2a6a11[_0xcc17('0x6')]))['emit']('mail_queue:save',_0x2a6a11);}};module[_0xcc17('0x1b')]=MailQueue;
\ No newline at end of file
+var _0x66e6=['mailPause','available','stringify','format','mail:queue:%s','mail_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','paused','length','online','loggedIn'];(function(_0x424662,_0x1a46b5){var _0x5ead9f=function(_0x44606a){while(--_0x44606a){_0x424662['push'](_0x424662['shift']());}};_0x5ead9f(++_0x1a46b5);}(_0x66e6,0xe7));var _0x666e=function(_0x1ef041,_0x42f690){_0x1ef041=_0x1ef041-0x0;var _0x56c276=_0x66e6[_0x1ef041];return _0x56c276;};'use strict';var _=require(_0x666e('0x0'));var md5=require(_0x666e('0x1'));var util=require(_0x666e('0x2'));var Redis=require(_0x666e('0x3'));var config=require(_0x666e('0x4'));config[_0x666e('0x5')]=_[_0x666e('0x6')](config['redis'],{'host':_0x666e('0x7'),'port':0x18eb});var io=require(_0x666e('0x8'))(new Redis(config[_0x666e('0x5')]));function MailQueue(_0x3e9a0a){this['id']=_0x3e9a0a['id']||0x0;this[_0x666e('0x9')]=_0x3e9a0a[_0x666e('0x9')]||'';this['timeout']=_0x3e9a0a[_0x666e('0xa')]||0xa;this[_0x666e('0xb')]=_0x3e9a0a['strategy']||_0x666e('0xc');this[_0x666e('0xd')]=_0x3e9a0a['Agents'];this[_0x666e('0xe')]={};this[_0x666e('0xf')]=0x0;this[_0x666e('0x1')]='';this[_0x666e('0x10')]();this[_0x666e('0x11')]();}MailQueue[_0x666e('0x12')][_0x666e('0x10')]=function(){var _0x2bd737=this[_0x666e('0xe')][_0x666e('0x13')];this[_0x666e('0xe')]=_[_0x666e('0x14')](this['Agents'],'id');this[_0x666e('0xe')]['_rr']=_0x2bd737;};MailQueue[_0x666e('0x12')][_0x666e('0x11')]=function(){this['loggedIn']=0x0;this[_0x666e('0x15')]=0x0;for(var _0x4817f2=0x0;_0x4817f2<this[_0x666e('0xd')][_0x666e('0x16')];_0x4817f2+=0x1){if(this[_0x666e('0xd')][_0x4817f2][_0x666e('0x17')]){this[_0x666e('0x18')]+=0x1;}if(this['Agents'][_0x4817f2][_0x666e('0x19')]){this['paused']+=0x1;}}this[_0x666e('0x1a')]=this[_0x666e('0x18')]-this['paused'];this[_0x666e('0x1a')]=this[_0x666e('0x1a')]>=0x0?this['available']:0x0;var _0x1523dc={'id':this['id'],'available':this[_0x666e('0x1a')],'loggedIn':this[_0x666e('0x18')],'name':this[_0x666e('0x9')],'paused':this[_0x666e('0x15')],'waiting':this[_0x666e('0xf')]};var _0x30045f=md5(JSON[_0x666e('0x1b')](_0x1523dc));if(this[_0x666e('0x1')]!==_0x30045f){this['md5']=_0x30045f;io['to'](util[_0x666e('0x1c')](_0x666e('0x1d'),_0x1523dc[_0x666e('0x9')]))['emit'](_0x666e('0x1e'),_0x1523dc);}};module[_0x666e('0x1f')]=MailQueue;
\ No newline at end of file
index 4e0dee6..3c1b916 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['strategy','Agents','mapAgentsId','updateRouting','updateRealtime','map','_rr','prototype','loggedIn','paused','length','online','available','waiting','stringify','format','openchannel:queue:%s','emit','openchannel_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','socket.io-emitter','name','timeout'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0xc4aa,0x1b7));var _0xac4a=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xc4aa[_0xa148b7];return _0x51efd3;};'use strict';var _=require(_0xac4a('0x0'));var md5=require(_0xac4a('0x1'));var util=require(_0xac4a('0x2'));var Redis=require(_0xac4a('0x3'));var config=require(_0xac4a('0x4'));config[_0xac4a('0x5')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xac4a('0x6'))(new Redis(config[_0xac4a('0x5')]));function OpenchannelQueue(_0x730a38){this['id']=_0x730a38['id']||0x0;this[_0xac4a('0x7')]=_0x730a38[_0xac4a('0x7')]||'';this[_0xac4a('0x8')]=_0x730a38[_0xac4a('0x8')]||0xa;this[_0xac4a('0x9')]=_0x730a38['strategy']||'beepall';this[_0xac4a('0xa')]=_0x730a38[_0xac4a('0xa')];this[_0xac4a('0xb')]={};this['waiting']=0x0;this[_0xac4a('0x1')]='';this[_0xac4a('0xc')]();this[_0xac4a('0xd')]();}OpenchannelQueue['prototype'][_0xac4a('0xc')]=function(){var _0x488e3c=this[_0xac4a('0xb')]['_rr'];this[_0xac4a('0xb')]=_[_0xac4a('0xe')](this[_0xac4a('0xa')],'id');this['mapAgentsId'][_0xac4a('0xf')]=_0x488e3c;};OpenchannelQueue[_0xac4a('0x10')][_0xac4a('0xd')]=function(){this[_0xac4a('0x11')]=0x0;this[_0xac4a('0x12')]=0x0;for(var _0x3b71c0=0x0;_0x3b71c0<this[_0xac4a('0xa')][_0xac4a('0x13')];_0x3b71c0+=0x1){if(this[_0xac4a('0xa')][_0x3b71c0][_0xac4a('0x14')]){this[_0xac4a('0x11')]+=0x1;}if(this[_0xac4a('0xa')][_0x3b71c0]['openchannelPause']){this[_0xac4a('0x12')]+=0x1;}}this[_0xac4a('0x15')]=this[_0xac4a('0x11')]-this[_0xac4a('0x12')];this[_0xac4a('0x15')]=this[_0xac4a('0x15')]>=0x0?this[_0xac4a('0x15')]:0x0;var _0x44ec59={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this[_0xac4a('0x7')],'paused':this[_0xac4a('0x12')],'waiting':this[_0xac4a('0x16')]};var _0x4d837c=md5(JSON[_0xac4a('0x17')](_0x44ec59));if(this[_0xac4a('0x1')]!==_0x4d837c){this[_0xac4a('0x1')]=_0x4d837c;io['to'](util[_0xac4a('0x18')](_0xac4a('0x19'),_0x44ec59[_0xac4a('0x7')]))[_0xac4a('0x1a')](_0xac4a('0x1b'),_0x44ec59);}};module['exports']=OpenchannelQueue;
\ No newline at end of file
+var _0x5fc3=['format','openchannel:queue:%s','name','emit','openchannel_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','prototype','loggedIn','paused','openchannelPause','available'];(function(_0x2dbe2e,_0x127139){var _0x2d6400=function(_0x344148){while(--_0x344148){_0x2dbe2e['push'](_0x2dbe2e['shift']());}};_0x2d6400(++_0x127139);}(_0x5fc3,0xa8));var _0x35fc=function(_0x3438cf,_0x73b174){_0x3438cf=_0x3438cf-0x0;var _0x278698=_0x5fc3[_0x3438cf];return _0x278698;};'use strict';var _=require(_0x35fc('0x0'));var md5=require(_0x35fc('0x1'));var util=require('util');var Redis=require(_0x35fc('0x2'));var config=require(_0x35fc('0x3'));config[_0x35fc('0x4')]=_[_0x35fc('0x5')](config[_0x35fc('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x35fc('0x6'))(new Redis(config[_0x35fc('0x4')]));function OpenchannelQueue(_0x186a06){this['id']=_0x186a06['id']||0x0;this['name']=_0x186a06['name']||'';this[_0x35fc('0x7')]=_0x186a06['timeout']||0xa;this[_0x35fc('0x8')]=_0x186a06[_0x35fc('0x8')]||_0x35fc('0x9');this[_0x35fc('0xa')]=_0x186a06[_0x35fc('0xa')];this[_0x35fc('0xb')]={};this[_0x35fc('0xc')]=0x0;this['md5']='';this[_0x35fc('0xd')]();this[_0x35fc('0xe')]();}OpenchannelQueue['prototype'][_0x35fc('0xd')]=function(){var _0x33f491=this['mapAgentsId'][_0x35fc('0xf')];this[_0x35fc('0xb')]=_['map'](this['Agents'],'id');this[_0x35fc('0xb')]['_rr']=_0x33f491;};OpenchannelQueue[_0x35fc('0x10')][_0x35fc('0xe')]=function(){this[_0x35fc('0x11')]=0x0;this[_0x35fc('0x12')]=0x0;for(var _0x38d9f2=0x0;_0x38d9f2<this['Agents']['length'];_0x38d9f2+=0x1){if(this['Agents'][_0x38d9f2]['online']){this[_0x35fc('0x11')]+=0x1;}if(this[_0x35fc('0xa')][_0x38d9f2][_0x35fc('0x13')]){this[_0x35fc('0x12')]+=0x1;}}this[_0x35fc('0x14')]=this[_0x35fc('0x11')]-this['paused'];this[_0x35fc('0x14')]=this[_0x35fc('0x14')]>=0x0?this['available']:0x0;var _0x41e165={'id':this['id'],'available':this[_0x35fc('0x14')],'loggedIn':this[_0x35fc('0x11')],'name':this['name'],'paused':this[_0x35fc('0x12')],'waiting':this[_0x35fc('0xc')]};var _0x465eb3=md5(JSON['stringify'](_0x41e165));if(this[_0x35fc('0x1')]!==_0x465eb3){this[_0x35fc('0x1')]=_0x465eb3;io['to'](util[_0x35fc('0x15')](_0x35fc('0x16'),_0x41e165[_0x35fc('0x17')]))[_0x35fc('0x18')](_0x35fc('0x19'),_0x41e165);}};module[_0x35fc('0x1a')]=OpenchannelQueue;
\ No newline at end of file
index db31d7f..3e7e7e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fc2=['strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','_rr','map','updateRealtime','paused','length','online','loggedIn','smsPause','available','stringify','format','emit','exports','lodash','md5','util','ioredis','redis','defaults','localhost','socket.io-emitter','name','timeout'];(function(_0x488ae0,_0x3b254e){var _0x398542=function(_0x57f87b){while(--_0x57f87b){_0x488ae0['push'](_0x488ae0['shift']());}};_0x398542(++_0x3b254e);}(_0x0fc2,0x6e));var _0x20fc=function(_0x357240,_0x3ba8dc){_0x357240=_0x357240-0x0;var _0x2828a9=_0x0fc2[_0x357240];return _0x2828a9;};'use strict';var _=require(_0x20fc('0x0'));var md5=require(_0x20fc('0x1'));var util=require(_0x20fc('0x2'));var Redis=require(_0x20fc('0x3'));var config=require('../../../config/environment');config[_0x20fc('0x4')]=_[_0x20fc('0x5')](config[_0x20fc('0x4')],{'host':_0x20fc('0x6'),'port':0x18eb});var io=require(_0x20fc('0x7'))(new Redis(config[_0x20fc('0x4')]));function SmsQueue(_0x4d2146){this['id']=_0x4d2146['id']||0x0;this[_0x20fc('0x8')]=_0x4d2146[_0x20fc('0x8')]||'';this[_0x20fc('0x9')]=_0x4d2146[_0x20fc('0x9')]||0xa;this[_0x20fc('0xa')]=_0x4d2146[_0x20fc('0xa')]||_0x20fc('0xb');this[_0x20fc('0xc')]=_0x4d2146[_0x20fc('0xc')];this['mapAgentsId']={};this[_0x20fc('0xd')]=0x0;this[_0x20fc('0x1')]='';this[_0x20fc('0xe')]();this['updateRealtime']();}SmsQueue[_0x20fc('0xf')][_0x20fc('0xe')]=function(){var _0x431c45=this[_0x20fc('0x10')][_0x20fc('0x11')];this[_0x20fc('0x10')]=_[_0x20fc('0x12')](this[_0x20fc('0xc')],'id');this['mapAgentsId'][_0x20fc('0x11')]=_0x431c45;};SmsQueue['prototype'][_0x20fc('0x13')]=function(){this['loggedIn']=0x0;this[_0x20fc('0x14')]=0x0;for(var _0x4c7f0e=0x0;_0x4c7f0e<this[_0x20fc('0xc')][_0x20fc('0x15')];_0x4c7f0e+=0x1){if(this[_0x20fc('0xc')][_0x4c7f0e][_0x20fc('0x16')]){this[_0x20fc('0x17')]+=0x1;}if(this[_0x20fc('0xc')][_0x4c7f0e][_0x20fc('0x18')]){this[_0x20fc('0x14')]+=0x1;}}this['available']=this['loggedIn']-this[_0x20fc('0x14')];this[_0x20fc('0x19')]=this[_0x20fc('0x19')]>=0x0?this[_0x20fc('0x19')]:0x0;var _0x4d5e00={'id':this['id'],'available':this[_0x20fc('0x19')],'loggedIn':this[_0x20fc('0x17')],'name':this[_0x20fc('0x8')],'paused':this[_0x20fc('0x14')],'waiting':this[_0x20fc('0xd')]};var _0xa4cfa1=md5(JSON[_0x20fc('0x1a')](_0x4d5e00));if(this[_0x20fc('0x1')]!==_0xa4cfa1){this[_0x20fc('0x1')]=_0xa4cfa1;io['to'](util[_0x20fc('0x1b')]('sms:queue:%s',_0x4d5e00[_0x20fc('0x8')]))[_0x20fc('0x1c')]('sms_queue:save',_0x4d5e00);}};module[_0x20fc('0x1d')]=SmsQueue;
\ No newline at end of file
+var _0x2333=['localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','online','available','format','sms:queue:%s','emit','exports','lodash','md5','../../../config/environment','redis'];(function(_0x1575cf,_0x1190d4){var _0x2b7a4e=function(_0x522762){while(--_0x522762){_0x1575cf['push'](_0x1575cf['shift']());}};_0x2b7a4e(++_0x1190d4);}(_0x2333,0x11a));var _0x3233=function(_0x497009,_0x34d1e9){_0x497009=_0x497009-0x0;var _0x48a0c4=_0x2333[_0x497009];return _0x48a0c4;};'use strict';var _=require(_0x3233('0x0'));var md5=require(_0x3233('0x1'));var util=require('util');var Redis=require('ioredis');var config=require(_0x3233('0x2'));config[_0x3233('0x3')]=_['defaults'](config[_0x3233('0x3')],{'host':_0x3233('0x4'),'port':0x18eb});var io=require(_0x3233('0x5'))(new Redis(config[_0x3233('0x3')]));function SmsQueue(_0x40768d){this['id']=_0x40768d['id']||0x0;this[_0x3233('0x6')]=_0x40768d[_0x3233('0x6')]||'';this[_0x3233('0x7')]=_0x40768d[_0x3233('0x7')]||0xa;this[_0x3233('0x8')]=_0x40768d[_0x3233('0x8')]||_0x3233('0x9');this[_0x3233('0xa')]=_0x40768d[_0x3233('0xa')];this[_0x3233('0xb')]={};this[_0x3233('0xc')]=0x0;this[_0x3233('0x1')]='';this[_0x3233('0xd')]();this[_0x3233('0xe')]();}SmsQueue[_0x3233('0xf')][_0x3233('0xd')]=function(){var _0x5dc591=this[_0x3233('0xb')][_0x3233('0x10')];this[_0x3233('0xb')]=_[_0x3233('0x11')](this[_0x3233('0xa')],'id');this[_0x3233('0xb')][_0x3233('0x10')]=_0x5dc591;};SmsQueue[_0x3233('0xf')][_0x3233('0xe')]=function(){this[_0x3233('0x12')]=0x0;this[_0x3233('0x13')]=0x0;for(var _0x27e9fd=0x0;_0x27e9fd<this[_0x3233('0xa')]['length'];_0x27e9fd+=0x1){if(this['Agents'][_0x27e9fd][_0x3233('0x14')]){this[_0x3233('0x12')]+=0x1;}if(this[_0x3233('0xa')][_0x27e9fd]['smsPause']){this[_0x3233('0x13')]+=0x1;}}this[_0x3233('0x15')]=this[_0x3233('0x12')]-this['paused'];this[_0x3233('0x15')]=this[_0x3233('0x15')]>=0x0?this['available']:0x0;var _0x38a9c0={'id':this['id'],'available':this['available'],'loggedIn':this[_0x3233('0x12')],'name':this['name'],'paused':this['paused'],'waiting':this['waiting']};var _0x298f71=md5(JSON['stringify'](_0x38a9c0));if(this[_0x3233('0x1')]!==_0x298f71){this['md5']=_0x298f71;io['to'](util[_0x3233('0x16')](_0x3233('0x17'),_0x38a9c0[_0x3233('0x6')]))[_0x3233('0x18')]('sms_queue:save',_0x38a9c0);}};module[_0x3233('0x19')]=SmsQueue;
\ No newline at end of file
index fcf99f3..4e2436e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2334=['mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','paused','length','loggedIn','whatsappPause','available','waiting','stringify','format','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents'];(function(_0x4d3a56,_0x35895c){var _0x33b9ff=function(_0x2576b1){while(--_0x2576b1){_0x4d3a56['push'](_0x4d3a56['shift']());}};_0x33b9ff(++_0x35895c);}(_0x2334,0x1b2));var _0x4233=function(_0xd60cb,_0x25496e){_0xd60cb=_0xd60cb-0x0;var _0x47eecd=_0x2334[_0xd60cb];return _0x47eecd;};'use strict';var _=require(_0x4233('0x0'));var md5=require(_0x4233('0x1'));var util=require(_0x4233('0x2'));var Redis=require(_0x4233('0x3'));var config=require(_0x4233('0x4'));config[_0x4233('0x5')]=_[_0x4233('0x6')](config[_0x4233('0x5')],{'host':_0x4233('0x7'),'port':0x18eb});var io=require(_0x4233('0x8'))(new Redis(config[_0x4233('0x5')]));function WhatsappQueue(_0x59dd9a){this['id']=_0x59dd9a['id']||0x0;this[_0x4233('0x9')]=_0x59dd9a[_0x4233('0x9')]||'';this[_0x4233('0xa')]=_0x59dd9a[_0x4233('0xa')]||0xa;this['strategy']=_0x59dd9a[_0x4233('0xb')]||_0x4233('0xc');this[_0x4233('0xd')]=_0x59dd9a[_0x4233('0xd')];this[_0x4233('0xe')]={};this['waiting']=0x0;this[_0x4233('0x1')]='';this[_0x4233('0xf')]();this[_0x4233('0x10')]();}WhatsappQueue[_0x4233('0x11')]['updateRouting']=function(){var _0x1343af=this[_0x4233('0xe')][_0x4233('0x12')];this['mapAgentsId']=_[_0x4233('0x13')](this[_0x4233('0xd')],'id');this[_0x4233('0xe')][_0x4233('0x12')]=_0x1343af;};WhatsappQueue[_0x4233('0x11')]['updateRealtime']=function(){this['loggedIn']=0x0;this[_0x4233('0x14')]=0x0;for(var _0x87a7bb=0x0;_0x87a7bb<this[_0x4233('0xd')][_0x4233('0x15')];_0x87a7bb+=0x1){if(this[_0x4233('0xd')][_0x87a7bb]['online']){this[_0x4233('0x16')]+=0x1;}if(this['Agents'][_0x87a7bb][_0x4233('0x17')]){this[_0x4233('0x14')]+=0x1;}}this[_0x4233('0x18')]=this[_0x4233('0x16')]-this[_0x4233('0x14')];this[_0x4233('0x18')]=this['available']>=0x0?this[_0x4233('0x18')]:0x0;var _0x3d5b6d={'id':this['id'],'available':this[_0x4233('0x18')],'loggedIn':this[_0x4233('0x16')],'name':this[_0x4233('0x9')],'paused':this[_0x4233('0x14')],'waiting':this[_0x4233('0x19')]};var _0xe84c13=md5(JSON[_0x4233('0x1a')](_0x3d5b6d));if(this[_0x4233('0x1')]!==_0xe84c13){this['md5']=_0xe84c13;io['to'](util[_0x4233('0x1b')](_0x4233('0x1c'),_0x3d5b6d[_0x4233('0x9')]))[_0x4233('0x1d')](_0x4233('0x1e'),_0x3d5b6d);}};module[_0x4233('0x1f')]=WhatsappQueue;
\ No newline at end of file
+var _0xaa81=['whatsapp:queue:%s','emit','whatsapp_queue:save','exports','lodash','util','ioredis','../../../config/environment','redis','name','timeout','strategy','beepall','Agents','waiting','md5','updateRealtime','prototype','updateRouting','mapAgentsId','_rr','map','loggedIn','paused','length','online','whatsappPause','available'];(function(_0x51740f,_0xd3c53a){var _0x452de2=function(_0x2716cb){while(--_0x2716cb){_0x51740f['push'](_0x51740f['shift']());}};_0x452de2(++_0xd3c53a);}(_0xaa81,0xac));var _0x1aa8=function(_0x38ca91,_0x30052c){_0x38ca91=_0x38ca91-0x0;var _0x28a826=_0xaa81[_0x38ca91];return _0x28a826;};'use strict';var _=require(_0x1aa8('0x0'));var md5=require('md5');var util=require(_0x1aa8('0x1'));var Redis=require(_0x1aa8('0x2'));var config=require(_0x1aa8('0x3'));config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x1aa8('0x4')]));function WhatsappQueue(_0x1e5f47){this['id']=_0x1e5f47['id']||0x0;this[_0x1aa8('0x5')]=_0x1e5f47['name']||'';this[_0x1aa8('0x6')]=_0x1e5f47[_0x1aa8('0x6')]||0xa;this[_0x1aa8('0x7')]=_0x1e5f47[_0x1aa8('0x7')]||_0x1aa8('0x8');this[_0x1aa8('0x9')]=_0x1e5f47[_0x1aa8('0x9')];this['mapAgentsId']={};this[_0x1aa8('0xa')]=0x0;this[_0x1aa8('0xb')]='';this['updateRouting']();this[_0x1aa8('0xc')]();}WhatsappQueue[_0x1aa8('0xd')][_0x1aa8('0xe')]=function(){var _0x44e1e3=this[_0x1aa8('0xf')][_0x1aa8('0x10')];this[_0x1aa8('0xf')]=_[_0x1aa8('0x11')](this[_0x1aa8('0x9')],'id');this[_0x1aa8('0xf')][_0x1aa8('0x10')]=_0x44e1e3;};WhatsappQueue[_0x1aa8('0xd')][_0x1aa8('0xc')]=function(){this[_0x1aa8('0x12')]=0x0;this[_0x1aa8('0x13')]=0x0;for(var _0x239d0d=0x0;_0x239d0d<this[_0x1aa8('0x9')][_0x1aa8('0x14')];_0x239d0d+=0x1){if(this['Agents'][_0x239d0d][_0x1aa8('0x15')]){this[_0x1aa8('0x12')]+=0x1;}if(this['Agents'][_0x239d0d][_0x1aa8('0x16')]){this[_0x1aa8('0x13')]+=0x1;}}this[_0x1aa8('0x17')]=this[_0x1aa8('0x12')]-this[_0x1aa8('0x13')];this[_0x1aa8('0x17')]=this[_0x1aa8('0x17')]>=0x0?this[_0x1aa8('0x17')]:0x0;var _0x4d32e9={'id':this['id'],'available':this['available'],'loggedIn':this[_0x1aa8('0x12')],'name':this[_0x1aa8('0x5')],'paused':this[_0x1aa8('0x13')],'waiting':this[_0x1aa8('0xa')]};var _0x12ede5=md5(JSON['stringify'](_0x4d32e9));if(this[_0x1aa8('0xb')]!==_0x12ede5){this[_0x1aa8('0xb')]=_0x12ede5;io['to'](util['format'](_0x1aa8('0x18'),_0x4d32e9[_0x1aa8('0x5')]))[_0x1aa8('0x19')](_0x1aa8('0x1a'),_0x4d32e9);}};module[_0x1aa8('0x1b')]=WhatsappQueue;
\ No newline at end of file
index a7c417f..8f9d975 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(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'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 _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(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'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
index 3995aed..f8e2b44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6468=['../client','update','Request','addTags','AddTagsToChatInteraction','addTagsToChatInteraction'];(function(_0x4f6245,_0xca9113){var _0x30e69e=function(_0x3332ce){while(--_0x3332ce){_0x4f6245['push'](_0x4f6245['shift']());}};_0x30e69e(++_0xca9113);}(_0x6468,0x186));var _0x8646=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x6468[_0x311c35];return _0x5cc50c;};'use strict';var client=require(_0x8646('0x0'));exports[_0x8646('0x1')]=function(_0x115d00,_0x7269e1){return client[_0x8646('0x2')]('UpdateChatInteraction',{'body':_0x7269e1,'options':{'where':{'id':_0x115d00}},'log':'updateChatInteraction'});};exports[_0x8646('0x3')]=function(_0x41d6f0,_0x280699){return client[_0x8646('0x2')](_0x8646('0x4'),{'body':_0x280699,'options':{'where':{'id':_0x41d6f0}},'log':_0x8646('0x5')});};
\ No newline at end of file
+var _0xc4c8=['../client','Request','UpdateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction'];(function(_0x3d04a6,_0x408e1f){var _0x2aaef5=function(_0x29794b){while(--_0x29794b){_0x3d04a6['push'](_0x3d04a6['shift']());}};_0x2aaef5(++_0x408e1f);}(_0xc4c8,0x1ce));var _0x8c4c=function(_0x143313,_0x322556){_0x143313=_0x143313-0x0;var _0x20982a=_0xc4c8[_0x143313];return _0x20982a;};'use strict';var client=require(_0x8c4c('0x0'));exports['update']=function(_0x4be941,_0x174ac4){return client[_0x8c4c('0x1')](_0x8c4c('0x2'),{'body':_0x174ac4,'options':{'where':{'id':_0x4be941}},'log':'updateChatInteraction'});};exports[_0x8c4c('0x3')]=function(_0x44e08e,_0x48c7b6){return client[_0x8c4c('0x1')](_0x8c4c('0x4'),{'body':_0x48c7b6,'options':{'where':{'id':_0x44e08e}},'log':_0x8c4c('0x5')});};
\ No newline at end of file
index 4095be1..f016d5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68d0=['../client','Request','CreateChatMessage','createChatMessage'];(function(_0x124fbe,_0x5a9dfe){var _0x4700d5=function(_0x1829cb){while(--_0x1829cb){_0x124fbe['push'](_0x124fbe['shift']());}};_0x4700d5(++_0x5a9dfe);}(_0x68d0,0x84));var _0x068d=function(_0x12af5e,_0x58c734){_0x12af5e=_0x12af5e-0x0;var _0x4133aa=_0x68d0[_0x12af5e];return _0x4133aa;};'use strict';var client=require(_0x068d('0x0'));exports['create']=function(_0xfd0ea8){return client[_0x068d('0x1')](_0x068d('0x2'),{'body':_0xfd0ea8,'log':_0x068d('0x3')});};
\ No newline at end of file
+var _0x5df0=['CreateChatMessage','createChatMessage','create','Request'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0x5df0,0xee));var _0x05df=function(_0x30eda9,_0x8daee1){_0x30eda9=_0x30eda9-0x0;var _0x28a151=_0x5df0[_0x30eda9];return _0x28a151;};'use strict';var client=require('../client');exports[_0x05df('0x0')]=function(_0x12f12d){return client[_0x05df('0x1')](_0x05df('0x2'),{'body':_0x12f12d,'log':_0x05df('0x3')});};
\ No newline at end of file
index c8cfbd5..ef6418d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf70=['online','../client','getChatQueues','Request','name','timeout','User'];(function(_0xde9e1a,_0x19a840){var _0x9c6bb3=function(_0x26772c){while(--_0x26772c){_0xde9e1a['push'](_0xde9e1a['shift']());}};_0x9c6bb3(++_0x19a840);}(_0xdf70,0x86));var _0x0df7=function(_0x32db1b,_0x141891){_0x32db1b=_0x32db1b-0x0;var _0x2d461f=_0xdf70[_0x32db1b];return _0x2d461f;};'use strict';var client=require(_0x0df7('0x0'));exports[_0x0df7('0x1')]=function(){return function(){return client[_0x0df7('0x2')]('GetChatQueue',{'options':{'raw':![],'attributes':['id',_0x0df7('0x3'),_0x0df7('0x4'),'strategy'],'include':[{'model':_0x0df7('0x5'),'as':'Agents','attributes':['id',_0x0df7('0x3'),_0x0df7('0x6'),'chatPause']}]},'log':_0x0df7('0x1')});};};
\ No newline at end of file
+var _0x37c5=['timeout','strategy','User','Agents','online','getChatQueues','Request','GetChatQueue','name'];(function(_0x3f0a4f,_0x506dfc){var _0x1d85ff=function(_0x49255a){while(--_0x49255a){_0x3f0a4f['push'](_0x3f0a4f['shift']());}};_0x1d85ff(++_0x506dfc);}(_0x37c5,0xa7));var _0x537c=function(_0x1b6656,_0x3ed2d3){_0x1b6656=_0x1b6656-0x0;var _0x5b9e1f=_0x37c5[_0x1b6656];return _0x5b9e1f;};'use strict';var client=require('../client');exports[_0x537c('0x0')]=function(){return function(){return client[_0x537c('0x1')](_0x537c('0x2'),{'options':{'raw':![],'attributes':['id',_0x537c('0x3'),_0x537c('0x4'),_0x537c('0x5')],'include':[{'model':_0x537c('0x6'),'as':_0x537c('0x7'),'attributes':['id',_0x537c('0x3'),_0x537c('0x8'),'chatPause']}]},'log':_0x537c('0x0')});};};
\ No newline at end of file
index e80540b..567a09d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x639a=['UpdateChatQueueReport','create','Request','CreateChatQueueReport','update'];(function(_0x51f842,_0x292668){var _0x18cf99=function(_0x4105d4){while(--_0x4105d4){_0x51f842['push'](_0x51f842['shift']());}};_0x18cf99(++_0x292668);}(_0x639a,0xec));var _0xa639=function(_0x3d22c9,_0x512859){_0x3d22c9=_0x3d22c9-0x0;var _0x3de959=_0x639a[_0x3d22c9];return _0x3de959;};'use strict';var client=require('../client');exports[_0xa639('0x0')]=function(_0x20266e){return client[_0xa639('0x1')](_0xa639('0x2'),{'body':_0x20266e,'log':_0xa639('0x2')});};exports[_0xa639('0x3')]=function(_0x4e3979,_0x29b07d){return client[_0xa639('0x1')](_0xa639('0x4'),{'body':_0x29b07d,'options':{'where':{'uniqueid':_0x4e3979},'order':[['id','DESC']],'limit':0x1},'log':_0xa639('0x4')});};
\ No newline at end of file
+var _0x80ce=['update','UpdateChatQueueReport','Request','CreateChatQueueReport'];(function(_0x3a7f8b,_0x7fe06c){var _0x34f066=function(_0x38f2a7){while(--_0x38f2a7){_0x3a7f8b['push'](_0x3a7f8b['shift']());}};_0x34f066(++_0x7fe06c);}(_0x80ce,0xae));var _0xe80c=function(_0x2ddae0,_0x3eca53){_0x2ddae0=_0x2ddae0-0x0;var _0x37a343=_0x80ce[_0x2ddae0];return _0x37a343;};'use strict';var client=require('../client');exports['create']=function(_0x53cd80){return client[_0xe80c('0x0')](_0xe80c('0x1'),{'body':_0x53cd80,'log':'CreateChatQueueReport'});};exports[_0xe80c('0x2')]=function(_0x3efe49,_0x4372b2){return client['Request']('UpdateChatQueueReport',{'body':_0x4372b2,'options':{'where':{'uniqueid':_0x3efe49},'order':[['id','DESC']],'limit':0x1},'log':_0xe80c('0x3')});};
\ No newline at end of file
index 22bedae..91dd434 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x3ee55a,_0x19aeea){var _0x581800=function(_0x636cb7){while(--_0x636cb7){_0x3ee55a['push'](_0x3ee55a['shift']());}};_0x581800(++_0x19aeea);}(_0x7a54,0x106));var _0x47a5=function(_0x58bc0a,_0x595c70){_0x58bc0a=_0x58bc0a-0x0;var _0x1bd855=_0x7a54[_0x58bc0a];return _0x1bd855;};'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(_0x386ba7,_0x4e2f76){var _0x2bb844=function(_0x262ec5){while(--_0x262ec5){_0x386ba7['push'](_0x386ba7['shift']());}};_0x2bb844(++_0x4e2f76);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'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 2aed8cf..780a733 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2bb=['../client','create','createFaxMessage'];(function(_0x33155c,_0x3fdde1){var _0x5becf7=function(_0x2f7a2f){while(--_0x2f7a2f){_0x33155c['push'](_0x33155c['shift']());}};_0x5becf7(++_0x3fdde1);}(_0xe2bb,0x16b));var _0xbe2b=function(_0x1090f4,_0xbb0d5f){_0x1090f4=_0x1090f4-0x0;var _0x141d87=_0xe2bb[_0x1090f4];return _0x141d87;};'use strict';var client=require(_0xbe2b('0x0'));exports[_0xbe2b('0x1')]=function(_0x5ca702){return client['Request']('CreateFaxMessage',{'body':_0x5ca702,'log':_0xbe2b('0x2')});};
\ No newline at end of file
+var _0xfe17=['createFaxMessage','../client','create','Request','CreateFaxMessage'];(function(_0x58c15e,_0x3a0e7a){var _0x24cf82=function(_0x34ed91){while(--_0x34ed91){_0x58c15e['push'](_0x58c15e['shift']());}};_0x24cf82(++_0x3a0e7a);}(_0xfe17,0xab));var _0x7fe1=function(_0x747151,_0x15f235){_0x747151=_0x747151-0x0;var _0x32ae25=_0xfe17[_0x747151];return _0x32ae25;};'use strict';var client=require(_0x7fe1('0x0'));exports[_0x7fe1('0x1')]=function(_0x34fa79){return client[_0x7fe1('0x2')](_0x7fe1('0x3'),{'body':_0x34fa79,'log':_0x7fe1('0x4')});};
\ No newline at end of file
index 25f80fa..6bf45d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa461=['timeout','User','Agents','online','faxPause','getFaxQueues','../client','Request','GetFaxQueue','name'];(function(_0x558ec2,_0x1882d5){var _0xda7360=function(_0x183636){while(--_0x183636){_0x558ec2['push'](_0x558ec2['shift']());}};_0xda7360(++_0x1882d5);}(_0xa461,0x114));var _0x1a46=function(_0x215408,_0x369018){_0x215408=_0x215408-0x0;var _0x3dde83=_0xa461[_0x215408];return _0x3dde83;};'use strict';var client=require(_0x1a46('0x0'));exports['getFaxQueues']=function(){return function(){return client[_0x1a46('0x1')](_0x1a46('0x2'),{'options':{'raw':![],'attributes':['id',_0x1a46('0x3'),_0x1a46('0x4'),'strategy'],'include':[{'model':_0x1a46('0x5'),'as':_0x1a46('0x6'),'attributes':['id','name',_0x1a46('0x7'),_0x1a46('0x8')]}]},'log':_0x1a46('0x9')});};};
\ No newline at end of file
+var _0x16e7=['Agents','faxPause','../client','getFaxQueues','Request','GetFaxQueue','name','strategy','User'];(function(_0x521f56,_0x154a92){var _0x3704c8=function(_0x1e25fb){while(--_0x1e25fb){_0x521f56['push'](_0x521f56['shift']());}};_0x3704c8(++_0x154a92);}(_0x16e7,0xda));var _0x716e=function(_0xb6b026,_0x4d9cfb){_0xb6b026=_0xb6b026-0x0;var _0xb6c910=_0x16e7[_0xb6b026];return _0xb6c910;};'use strict';var client=require(_0x716e('0x0'));exports[_0x716e('0x1')]=function(){return function(){return client[_0x716e('0x2')](_0x716e('0x3'),{'options':{'raw':![],'attributes':['id',_0x716e('0x4'),'timeout',_0x716e('0x5')],'include':[{'model':_0x716e('0x6'),'as':_0x716e('0x7'),'attributes':['id',_0x716e('0x4'),'online',_0x716e('0x8')]}]},'log':'getFaxQueues'});};};
\ No newline at end of file
index a8cb1e0..db20a47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x910b=['update','DESC','UpdateFaxQueueReport','../client','create','Request','CreateFaxQueueReport'];(function(_0x555908,_0x1cbfa8){var _0x300eef=function(_0x57dceb){while(--_0x57dceb){_0x555908['push'](_0x555908['shift']());}};_0x300eef(++_0x1cbfa8);}(_0x910b,0x1a7));var _0xb910=function(_0x20b2b2,_0x4d3fb4){_0x20b2b2=_0x20b2b2-0x0;var _0x2b5e8c=_0x910b[_0x20b2b2];return _0x2b5e8c;};'use strict';var client=require(_0xb910('0x0'));exports[_0xb910('0x1')]=function(_0xddec05){return client[_0xb910('0x2')](_0xb910('0x3'),{'body':_0xddec05,'log':_0xb910('0x3')});};exports[_0xb910('0x4')]=function(_0x48595d,_0x875ad1){return client[_0xb910('0x2')]('UpdateFaxQueueReport',{'body':_0x875ad1,'options':{'where':{'uniqueid':_0x48595d},'order':[['id',_0xb910('0x5')]],'limit':0x1},'log':_0xb910('0x6')});};
\ No newline at end of file
+var _0x0503=['Request','CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC','create'];(function(_0xd5d77d,_0x63b5e2){var _0xdee6aa=function(_0x150e7f){while(--_0x150e7f){_0xd5d77d['push'](_0xd5d77d['shift']());}};_0xdee6aa(++_0x63b5e2);}(_0x0503,0xd7));var _0x3050=function(_0xb24a3e,_0x4a3594){_0xb24a3e=_0xb24a3e-0x0;var _0x4038d7=_0x0503[_0xb24a3e];return _0x4038d7;};'use strict';var client=require('../client');exports[_0x3050('0x0')]=function(_0x24cd91){return client[_0x3050('0x1')](_0x3050('0x2'),{'body':_0x24cd91,'log':_0x3050('0x2')});};exports[_0x3050('0x3')]=function(_0x433117,_0x2473b7){return client['Request'](_0x3050('0x4'),{'body':_0x2473b7,'options':{'where':{'uniqueid':_0x433117},'order':[['id',_0x3050('0x5')]],'limit':0x1},'log':_0x3050('0x4')});};
\ No newline at end of file
index d02437a..90c0b41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40da=['GetInterval','name','Interval','Intervals','interval','getIntervals','Request'];(function(_0x76acc,_0x15ca7d){var _0x463e4d=function(_0x56f8a5){while(--_0x56f8a5){_0x76acc['push'](_0x76acc['shift']());}};_0x463e4d(++_0x15ca7d);}(_0x40da,0xfa));var _0xa40d=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0x40da[_0x4792c8];return _0x35edb1;};'use strict';var client=require('../client');exports[_0xa40d('0x0')]=function(){return function(){return client[_0xa40d('0x1')](_0xa40d('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xa40d('0x3')],'include':[{'model':_0xa40d('0x4'),'as':_0xa40d('0x5'),'attributes':['id','name',_0xa40d('0x6')]}]},'log':_0xa40d('0x0')});};};
\ No newline at end of file
+var _0x96a2=['GetInterval','name','../client','getIntervals','Request'];(function(_0x118864,_0x1d4bbd){var _0x4406d4=function(_0x1ef1fa){while(--_0x1ef1fa){_0x118864['push'](_0x118864['shift']());}};_0x4406d4(++_0x1d4bbd);}(_0x96a2,0x1d8));var _0x296a=function(_0x472ace,_0x5ec9c6){_0x472ace=_0x472ace-0x0;var _0x9c63f9=_0x96a2[_0x472ace];return _0x9c63f9;};'use strict';var client=require(_0x296a('0x0'));exports[_0x296a('0x1')]=function(){return function(){return client[_0x296a('0x2')](_0x296a('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x296a('0x4')],'include':[{'model':'Interval','as':'Intervals','attributes':['id',_0x296a('0x4'),'interval']}]},'log':'getIntervals'});};};
\ No newline at end of file
index 25f1586..69e58e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbbc=['addTagsToChatInteraction','../client','update','Request','UpdateMailInteraction','updateMailInteraction','AddTagsToMailInteraction'];(function(_0x4d180c,_0x45c68e){var _0x49b57e=function(_0x264741){while(--_0x264741){_0x4d180c['push'](_0x4d180c['shift']());}};_0x49b57e(++_0x45c68e);}(_0xbbbc,0xf6));var _0xcbbb=function(_0x99cebd,_0x401a68){_0x99cebd=_0x99cebd-0x0;var _0x10cdf2=_0xbbbc[_0x99cebd];return _0x10cdf2;};'use strict';var client=require(_0xcbbb('0x0'));exports[_0xcbbb('0x1')]=function(_0x4314a8,_0x4538f9){return client[_0xcbbb('0x2')](_0xcbbb('0x3'),{'body':_0x4538f9,'options':{'where':{'id':_0x4314a8}},'log':_0xcbbb('0x4')});};exports['addTags']=function(_0xb1ad23,_0x938376){return client[_0xcbbb('0x2')](_0xcbbb('0x5'),{'body':_0x938376,'options':{'where':{'id':_0xb1ad23}},'log':_0xcbbb('0x6')});};
\ No newline at end of file
+var _0x77d4=['update','UpdateMailInteraction','updateMailInteraction','Request','AddTagsToMailInteraction','addTagsToChatInteraction'];(function(_0x56984d,_0x17643d){var _0x17909f=function(_0x2efac0){while(--_0x2efac0){_0x56984d['push'](_0x56984d['shift']());}};_0x17909f(++_0x17643d);}(_0x77d4,0x108));var _0x477d=function(_0x2f0553,_0x74517c){_0x2f0553=_0x2f0553-0x0;var _0x34c4a1=_0x77d4[_0x2f0553];return _0x34c4a1;};'use strict';var client=require('../client');exports[_0x477d('0x0')]=function(_0x49b615,_0x18c0fe){return client['Request'](_0x477d('0x1'),{'body':_0x18c0fe,'options':{'where':{'id':_0x49b615}},'log':_0x477d('0x2')});};exports['addTags']=function(_0x53e1b8,_0x16213f){return client[_0x477d('0x3')](_0x477d('0x4'),{'body':_0x16213f,'options':{'where':{'id':_0x53e1b8}},'log':_0x477d('0x5')});};
\ No newline at end of file
index bff36e0..c781acd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x811d=['CreateMailMessage','createMailMessage','../client','create'];(function(_0x273e4c,_0x24c349){var _0x11adb4=function(_0x3279a1){while(--_0x3279a1){_0x273e4c['push'](_0x273e4c['shift']());}};_0x11adb4(++_0x24c349);}(_0x811d,0x1d2));var _0xd811=function(_0x34c635,_0x44f2fd){_0x34c635=_0x34c635-0x0;var _0x5ddbfa=_0x811d[_0x34c635];return _0x5ddbfa;};'use strict';var client=require(_0xd811('0x0'));exports[_0xd811('0x1')]=function(_0x1160ae){return client['Request'](_0xd811('0x2'),{'body':_0x1160ae,'log':_0xd811('0x3')});};
\ No newline at end of file
+var _0x261b=['../client','CreateMailMessage','createMailMessage'];(function(_0x8ca29c,_0x52b454){var _0x256f0b=function(_0x377c92){while(--_0x377c92){_0x8ca29c['push'](_0x8ca29c['shift']());}};_0x256f0b(++_0x52b454);}(_0x261b,0x7e));var _0xb261=function(_0x2e556b,_0x3ae877){_0x2e556b=_0x2e556b-0x0;var _0xdec28d=_0x261b[_0x2e556b];return _0xdec28d;};'use strict';var client=require(_0xb261('0x0'));exports['create']=function(_0x10aef6){return client['Request'](_0xb261('0x1'),{'body':_0x10aef6,'log':_0xb261('0x2')});};
\ No newline at end of file
index 29a7536..f7bafd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3942=['name','strategy','Agents','mailPause','../client','getMailQueues','GetMailQueue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3942,0x1d9));var _0x2394=function(_0x1fb473,_0x449b5d){_0x1fb473=_0x1fb473-0x0;var _0x39b023=_0x3942[_0x1fb473];return _0x39b023;};'use strict';var client=require(_0x2394('0x0'));exports[_0x2394('0x1')]=function(){return function(){return client['Request'](_0x2394('0x2'),{'options':{'raw':![],'attributes':['id',_0x2394('0x3'),'timeout',_0x2394('0x4')],'include':[{'model':'User','as':_0x2394('0x5'),'attributes':['id',_0x2394('0x3'),'online',_0x2394('0x6')]}]},'log':_0x2394('0x1')});};};
\ No newline at end of file
+var _0x1862=['../client','getMailQueues','Request','GetMailQueue','name','timeout','strategy','Agents','online','mailPause'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x1862,0x12c));var _0x2186=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1862[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x2186('0x0'));exports[_0x2186('0x1')]=function(){return function(){return client[_0x2186('0x2')](_0x2186('0x3'),{'options':{'raw':![],'attributes':['id',_0x2186('0x4'),_0x2186('0x5'),_0x2186('0x6')],'include':[{'model':'User','as':_0x2186('0x7'),'attributes':['id',_0x2186('0x4'),_0x2186('0x8'),_0x2186('0x9')]}]},'log':_0x2186('0x1')});};};
\ No newline at end of file
index 324464d..747c3cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6478=['create','Request','CreateMailQueueReport','update','UpdateMailQueueReport','../client'];(function(_0xeac7f0,_0x5abf49){var _0x37d06c=function(_0x3b4a95){while(--_0x3b4a95){_0xeac7f0['push'](_0xeac7f0['shift']());}};_0x37d06c(++_0x5abf49);}(_0x6478,0x1bb));var _0x8647=function(_0x2ab350,_0x32859f){_0x2ab350=_0x2ab350-0x0;var _0x4acac=_0x6478[_0x2ab350];return _0x4acac;};'use strict';var client=require(_0x8647('0x0'));exports[_0x8647('0x1')]=function(_0x419e9c){return client[_0x8647('0x2')](_0x8647('0x3'),{'body':_0x419e9c,'log':_0x8647('0x3')});};exports[_0x8647('0x4')]=function(_0x55bba6,_0x327f24){return client[_0x8647('0x2')](_0x8647('0x5'),{'body':_0x327f24,'options':{'where':{'uniqueid':_0x55bba6},'order':[['id','DESC']],'limit':0x1},'log':_0x8647('0x5')});};
\ No newline at end of file
+var _0x9e22=['update','Request','DESC','../client','CreateMailQueueReport'];(function(_0x26bbf6,_0x9557fa){var _0x422daa=function(_0x572010){while(--_0x572010){_0x26bbf6['push'](_0x26bbf6['shift']());}};_0x422daa(++_0x9557fa);}(_0x9e22,0x157));var _0x29e2=function(_0x215e65,_0x183f97){_0x215e65=_0x215e65-0x0;var _0xa85842=_0x9e22[_0x215e65];return _0xa85842;};'use strict';var client=require(_0x29e2('0x0'));exports['create']=function(_0x21f2b5){return client['Request'](_0x29e2('0x1'),{'body':_0x21f2b5,'log':_0x29e2('0x1')});};exports[_0x29e2('0x2')]=function(_0x3f5520,_0xe998dc){return client[_0x29e2('0x3')]('UpdateMailQueueReport',{'body':_0xe998dc,'options':{'where':{'uniqueid':_0x3f5520},'order':[['id',_0x29e2('0x4')]],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
index 0c45962..c502fa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2993=['Request','UpdateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update'];(function(_0x397cb7,_0x1ef9bf){var _0x2a9927=function(_0x56abc8){while(--_0x56abc8){_0x397cb7['push'](_0x397cb7['shift']());}};_0x2a9927(++_0x1ef9bf);}(_0x2993,0x139));var _0x3299=function(_0x59f446,_0x3996c8){_0x59f446=_0x59f446-0x0;var _0x23b73c=_0x2993[_0x59f446];return _0x23b73c;};'use strict';var client=require(_0x3299('0x0'));exports[_0x3299('0x1')]=function(_0x114f8a,_0x3b6920){return client[_0x3299('0x2')](_0x3299('0x3'),{'body':_0x3b6920,'options':{'where':{'id':_0x114f8a}},'log':'updateOpenchannelInteraction'});};exports[_0x3299('0x4')]=function(_0xd5dee,_0xdd0bce){return client[_0x3299('0x2')](_0x3299('0x5'),{'body':_0xdd0bce,'options':{'where':{'id':_0xd5dee}},'log':_0x3299('0x6')});};
\ No newline at end of file
+var _0x55be=['UpdateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update','Request'];(function(_0x442472,_0x1815d0){var _0x399214=function(_0x3a53e3){while(--_0x3a53e3){_0x442472['push'](_0x442472['shift']());}};_0x399214(++_0x1815d0);}(_0x55be,0x1d9));var _0xe55b=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x55be[_0x4b055c];return _0x4b62bb;};'use strict';var client=require(_0xe55b('0x0'));exports[_0xe55b('0x1')]=function(_0x2a1829,_0x584688){return client[_0xe55b('0x2')](_0xe55b('0x3'),{'body':_0x584688,'options':{'where':{'id':_0x2a1829}},'log':'updateOpenchannelInteraction'});};exports[_0xe55b('0x4')]=function(_0xed8c71,_0x1cd983){return client['Request'](_0xe55b('0x5'),{'body':_0x1cd983,'options':{'where':{'id':_0xed8c71}},'log':_0xe55b('0x6')});};
\ No newline at end of file
index d1775ff..b75fde9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96a7=['../client','create','Request','CreateOpenchannelMessage','createOpenchannelMessage'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x96a7,0x1f4));var _0x796a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x96a7[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x796a('0x0'));exports[_0x796a('0x1')]=function(_0x1d1143){return client[_0x796a('0x2')](_0x796a('0x3'),{'body':_0x1d1143,'log':_0x796a('0x4')});};
\ No newline at end of file
+var _0xb507=['../client','Request','CreateOpenchannelMessage','createOpenchannelMessage'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0xb507,0x98));var _0x7b50=function(_0x561f76,_0x3c0bef){_0x561f76=_0x561f76-0x0;var _0x48b8e4=_0xb507[_0x561f76];return _0x48b8e4;};'use strict';var client=require(_0x7b50('0x0'));exports['create']=function(_0x3f0d0c){return client[_0x7b50('0x1')](_0x7b50('0x2'),{'body':_0x3f0d0c,'log':_0x7b50('0x3')});};
\ No newline at end of file
index 072d9d2..4d80622 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7381=['name','timeout','strategy','User','Agents','online','openchannelPause','getOpenchannelQueues','Request','GetOpenchannelQueue'];(function(_0x2a2361,_0x3d9a17){var _0xafa14f=function(_0x570992){while(--_0x570992){_0x2a2361['push'](_0x2a2361['shift']());}};_0xafa14f(++_0x3d9a17);}(_0x7381,0xc5));var _0x1738=function(_0x2cd1fb,_0x291f55){_0x2cd1fb=_0x2cd1fb-0x0;var _0x48fd2b=_0x7381[_0x2cd1fb];return _0x48fd2b;};'use strict';var client=require('../client');exports[_0x1738('0x0')]=function(){return function(){return client[_0x1738('0x1')](_0x1738('0x2'),{'options':{'raw':![],'attributes':['id',_0x1738('0x3'),_0x1738('0x4'),_0x1738('0x5')],'include':[{'model':_0x1738('0x6'),'as':_0x1738('0x7'),'attributes':['id',_0x1738('0x3'),_0x1738('0x8'),_0x1738('0x9')]}]},'log':'getOpenchannelQueues'});};};
\ No newline at end of file
+var _0x32d0=['timeout','strategy','User','Agents','online','openchannelPause','../client','getOpenchannelQueues','Request','name'];(function(_0x45e98e,_0x169b60){var _0x374dba=function(_0x597612){while(--_0x597612){_0x45e98e['push'](_0x45e98e['shift']());}};_0x374dba(++_0x169b60);}(_0x32d0,0xa6));var _0x032d=function(_0x2cd169,_0x1cc288){_0x2cd169=_0x2cd169-0x0;var _0x121eb5=_0x32d0[_0x2cd169];return _0x121eb5;};'use strict';var client=require(_0x032d('0x0'));exports[_0x032d('0x1')]=function(){return function(){return client[_0x032d('0x2')]('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id',_0x032d('0x3'),_0x032d('0x4'),_0x032d('0x5')],'include':[{'model':_0x032d('0x6'),'as':_0x032d('0x7'),'attributes':['id','name',_0x032d('0x8'),_0x032d('0x9')]}]},'log':'getOpenchannelQueues'});};};
\ No newline at end of file
index 860491c..2e7207c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6560=['Request','CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport','../client'];(function(_0x7ef2b7,_0x3b762a){var _0x3c7c5e=function(_0x34837c){while(--_0x34837c){_0x7ef2b7['push'](_0x7ef2b7['shift']());}};_0x3c7c5e(++_0x3b762a);}(_0x6560,0x7c));var _0x0656=function(_0x4283ff,_0x5bc9b6){_0x4283ff=_0x4283ff-0x0;var _0x5216c7=_0x6560[_0x4283ff];return _0x5216c7;};'use strict';var client=require(_0x0656('0x0'));exports['create']=function(_0x3440df){return client[_0x0656('0x1')](_0x0656('0x2'),{'body':_0x3440df,'log':_0x0656('0x2')});};exports[_0x0656('0x3')]=function(_0x3ad5c7,_0x4239e3){return client[_0x0656('0x1')](_0x0656('0x4'),{'body':_0x4239e3,'options':{'where':{'uniqueid':_0x3ad5c7},'order':[['id','DESC']],'limit':0x1},'log':_0x0656('0x4')});};
\ No newline at end of file
+var _0x9822=['Request','UpdateOpenchannelQueueReport','../client','create','update'];(function(_0x1de846,_0x3ad6f6){var _0x3de06=function(_0x3298c3){while(--_0x3298c3){_0x1de846['push'](_0x1de846['shift']());}};_0x3de06(++_0x3ad6f6);}(_0x9822,0x93));var _0x2982=function(_0x1b4945,_0xa2f989){_0x1b4945=_0x1b4945-0x0;var _0x32a2c7=_0x9822[_0x1b4945];return _0x32a2c7;};'use strict';var client=require(_0x2982('0x0'));exports[_0x2982('0x1')]=function(_0x361caf){return client['Request']('CreateOpenchannelQueueReport',{'body':_0x361caf,'log':'CreateOpenchannelQueueReport'});};exports[_0x2982('0x2')]=function(_0x319fbd,_0x3c99ee){return client[_0x2982('0x3')](_0x2982('0x4'),{'body':_0x3c99ee,'options':{'where':{'uniqueid':_0x319fbd},'order':[['id','DESC']],'limit':0x1},'log':_0x2982('0x4')});};
\ No newline at end of file
index e8a1e97..6018888 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6737=['UpdateSmsInteraction','updateSmsInteraction','addTags','addTagsToSmsInteraction','update','Request'];(function(_0x386ddb,_0x4ddd8b){var _0x3c7826=function(_0xb8676a){while(--_0xb8676a){_0x386ddb['push'](_0x386ddb['shift']());}};_0x3c7826(++_0x4ddd8b);}(_0x6737,0xe2));var _0x7673=function(_0x34227b,_0x238b2a){_0x34227b=_0x34227b-0x0;var _0x215a2f=_0x6737[_0x34227b];return _0x215a2f;};'use strict';var client=require('../client');exports[_0x7673('0x0')]=function(_0x2634c4,_0x5aa730){return client[_0x7673('0x1')](_0x7673('0x2'),{'body':_0x5aa730,'options':{'where':{'id':_0x2634c4}},'log':_0x7673('0x3')});};exports[_0x7673('0x4')]=function(_0x54002e,_0x32e6f2){return client[_0x7673('0x1')]('AddTagsToSmsInteraction',{'body':_0x32e6f2,'options':{'where':{'id':_0x54002e}},'log':_0x7673('0x5')});};
\ No newline at end of file
+var _0x24ca=['../client','Request','updateSmsInteraction','addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction'];(function(_0x2ab76b,_0x176579){var _0x201126=function(_0x11d8c8){while(--_0x11d8c8){_0x2ab76b['push'](_0x2ab76b['shift']());}};_0x201126(++_0x176579);}(_0x24ca,0x1bc));var _0xa24c=function(_0x151721,_0x20d5bc){_0x151721=_0x151721-0x0;var _0x2deaa7=_0x24ca[_0x151721];return _0x2deaa7;};'use strict';var client=require(_0xa24c('0x0'));exports['update']=function(_0x2cf7df,_0x4ebab4){return client[_0xa24c('0x1')]('UpdateSmsInteraction',{'body':_0x4ebab4,'options':{'where':{'id':_0x2cf7df}},'log':_0xa24c('0x2')});};exports[_0xa24c('0x3')]=function(_0x195e60,_0x28aa2f){return client[_0xa24c('0x1')](_0xa24c('0x4'),{'body':_0x28aa2f,'options':{'where':{'id':_0x195e60}},'log':_0xa24c('0x5')});};
\ No newline at end of file
index 5ec2546..ca1e267 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa28=['../client','Request','CreateSmsMessage','createSmsMessage'];(function(_0x5297c4,_0x5bb21a){var _0x1cc80c=function(_0x3fcfd4){while(--_0x3fcfd4){_0x5297c4['push'](_0x5297c4['shift']());}};_0x1cc80c(++_0x5bb21a);}(_0xaa28,0xc0));var _0x8aa2=function(_0xd0b415,_0x149675){_0xd0b415=_0xd0b415-0x0;var _0x2bdf2c=_0xaa28[_0xd0b415];return _0x2bdf2c;};'use strict';var client=require(_0x8aa2('0x0'));exports['create']=function(_0x5aeb52){return client[_0x8aa2('0x1')](_0x8aa2('0x2'),{'body':_0x5aeb52,'log':_0x8aa2('0x3')});};
\ No newline at end of file
+var _0x4386=['create','Request','../client'];(function(_0x406362,_0x21fb1c){var _0x5b9c92=function(_0x1b2326){while(--_0x1b2326){_0x406362['push'](_0x406362['shift']());}};_0x5b9c92(++_0x21fb1c);}(_0x4386,0x176));var _0x6438=function(_0x5293a1,_0x351c64){_0x5293a1=_0x5293a1-0x0;var _0x5085aa=_0x4386[_0x5293a1];return _0x5085aa;};'use strict';var client=require(_0x6438('0x0'));exports[_0x6438('0x1')]=function(_0x5940fa){return client[_0x6438('0x2')]('CreateSmsMessage',{'body':_0x5940fa,'log':'createSmsMessage'});};
\ No newline at end of file
index 962ea8f..e8aa8fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['Agents','online','smsPause','../client','getSmsQueues','Request','name','timeout','strategy','User'];(function(_0x1624a1,_0x250be4){var _0x598bf2=function(_0x147e74){while(--_0x147e74){_0x1624a1['push'](_0x1624a1['shift']());}};_0x598bf2(++_0x250be4);}(_0xe706,0xa3));var _0x6e70=function(_0x561975,_0x1d64fc){_0x561975=_0x561975-0x0;var _0x15b7f5=_0xe706[_0x561975];return _0x15b7f5;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0x6e70('0x3'),_0x6e70('0x4'),_0x6e70('0x5')],'include':[{'model':_0x6e70('0x6'),'as':_0x6e70('0x7'),'attributes':['id',_0x6e70('0x3'),_0x6e70('0x8'),_0x6e70('0x9')]}]},'log':_0x6e70('0x1')});};};
\ No newline at end of file
+var _0x70e0=['User','Agents','online','../client','getSmsQueues','Request','timeout','strategy'];(function(_0x15602a,_0x913776){var _0x323b61=function(_0x2ff53a){while(--_0x2ff53a){_0x15602a['push'](_0x15602a['shift']());}};_0x323b61(++_0x913776);}(_0x70e0,0x17b));var _0x070e=function(_0x3582d1,_0x2bd3a8){_0x3582d1=_0x3582d1-0x0;var _0x5b7d07=_0x70e0[_0x3582d1];return _0x5b7d07;};'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 2e5cfdc..9061875 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['../client','create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x49052b,_0x1612f7){var _0x2f40cf=function(_0x3357a2){while(--_0x3357a2){_0x49052b['push'](_0x49052b['shift']());}};_0x2f40cf(++_0x1612f7);}(_0x008c,0x188));var _0xc008=function(_0x394b03,_0x3cecf5){_0x394b03=_0x394b03-0x0;var _0x5c420d=_0x008c[_0x394b03];return _0x5c420d;};'use strict';var client=require(_0xc008('0x0'));exports[_0xc008('0x1')]=function(_0x15aadc){return client[_0xc008('0x2')](_0xc008('0x3'),{'body':_0x15aadc,'log':'CreateSmsQueueReport'});};exports[_0xc008('0x4')]=function(_0x47063f,_0x10b33c){return client[_0xc008('0x2')](_0xc008('0x5'),{'body':_0x10b33c,'options':{'where':{'uniqueid':_0x47063f},'order':[['id',_0xc008('0x6')]],'limit':0x1},'log':_0xc008('0x5')});};
\ No newline at end of file
+var _0x008c=['../client','create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x5b93f8,_0xffefcd){var _0x1430ec=function(_0xee6cc1){while(--_0xee6cc1){_0x5b93f8['push'](_0x5b93f8['shift']());}};_0x1430ec(++_0xffefcd);}(_0x008c,0x188));var _0xc008=function(_0x15035b,_0x3eba0a){_0x15035b=_0x15035b-0x0;var _0x2cc7b1=_0x008c[_0x15035b];return _0x2cc7b1;};'use strict';var client=require(_0xc008('0x0'));exports[_0xc008('0x1')]=function(_0x15aadc){return client[_0xc008('0x2')](_0xc008('0x3'),{'body':_0x15aadc,'log':'CreateSmsQueueReport'});};exports[_0xc008('0x4')]=function(_0x47063f,_0x10b33c){return client[_0xc008('0x2')](_0xc008('0x5'),{'body':_0x10b33c,'options':{'where':{'uniqueid':_0x47063f},'order':[['id',_0xc008('0x6')]],'limit':0x1},'log':_0xc008('0x5')});};
\ No newline at end of file
index 92431ab..b4c2fe6 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(_0x271607,_0x1cdaf2){var _0x2e87c1=function(_0x3186b2){while(--_0x3186b2){_0x271607['push'](_0x271607['shift']());}};_0x2e87c1(++_0x1cdaf2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'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(_0x56a536,_0x51385a){var _0x3bdb9e=function(_0x144677){while(--_0x144677){_0x56a536['push'](_0x56a536['shift']());}};_0x3bdb9e(++_0x51385a);}(_0xa9e0,0x123));var _0x0a9e=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xa9e0[_0xc6be3a];return _0x56a310;};'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 52fea15..c819ddc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ab=['AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','update','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','Request'];(function(_0x18cd5b,_0x10240b){var _0x5eaa52=function(_0x2bccad){while(--_0x2bccad){_0x18cd5b['push'](_0x18cd5b['shift']());}};_0x5eaa52(++_0x10240b);}(_0x71ab,0x64));var _0xb71a=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x71ab[_0x19e35c];return _0x3e1fe8;};'use strict';var client=require('../client');exports[_0xb71a('0x0')]=function(_0x4d5607,_0x122bc5){return client['Request'](_0xb71a('0x1'),{'body':_0x122bc5,'options':{'where':{'id':_0x4d5607}},'log':_0xb71a('0x2')});};exports[_0xb71a('0x3')]=function(_0x4094b2,_0x37ce74){return client[_0xb71a('0x4')](_0xb71a('0x5'),{'body':_0x37ce74,'options':{'where':{'id':_0x4094b2}},'log':_0xb71a('0x6')});};
\ No newline at end of file
+var _0x6f47=['Request','updateWhatsappInteraction','AddTagsToWhatsappInteraction','update'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x6f47,0xc7));var _0x76f4=function(_0x47a349,_0x4699d9){_0x47a349=_0x47a349-0x0;var _0x18ab75=_0x6f47[_0x47a349];return _0x18ab75;};'use strict';var client=require('../client');exports[_0x76f4('0x0')]=function(_0x94765d,_0x5bc799){return client[_0x76f4('0x1')]('UpdateWhatsappInteraction',{'body':_0x5bc799,'options':{'where':{'id':_0x94765d}},'log':_0x76f4('0x2')});};exports['addTags']=function(_0xe214ad,_0xc5dddc){return client[_0x76f4('0x1')](_0x76f4('0x3'),{'body':_0xc5dddc,'options':{'where':{'id':_0xe214ad}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index c7b04fd..24b015e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c08=['createWhatsappMessage','../client','create','CreateWhatsappMessage'];(function(_0x3b5c1a,_0x2ee535){var _0x4c4711=function(_0x37b5bb){while(--_0x37b5bb){_0x3b5c1a['push'](_0x3b5c1a['shift']());}};_0x4c4711(++_0x2ee535);}(_0x3c08,0x71));var _0x83c0=function(_0xb256af,_0x29a3e2){_0xb256af=_0xb256af-0x0;var _0xd2806d=_0x3c08[_0xb256af];return _0xd2806d;};'use strict';var client=require(_0x83c0('0x0'));exports[_0x83c0('0x1')]=function(_0x15bf91){return client['Request'](_0x83c0('0x2'),{'body':_0x15bf91,'log':_0x83c0('0x3')});};
\ No newline at end of file
+var _0xe211=['createWhatsappMessage','Request','CreateWhatsappMessage'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe211,0xf7));var _0x1e21=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe211[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['create']=function(_0x2a70a9){return client[_0x1e21('0x0')](_0x1e21('0x1'),{'body':_0x2a70a9,'log':_0x1e21('0x2')});};
\ No newline at end of file
index 2a68d59..25b4126 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3554=['name','strategy','User','Agents','online','getWhatsappQueues','Request','GetWhatsappQueue'];(function(_0x12c046,_0xbe9088){var _0x43d84d=function(_0x30941e){while(--_0x30941e){_0x12c046['push'](_0x12c046['shift']());}};_0x43d84d(++_0xbe9088);}(_0x3554,0x1b5));var _0x4355=function(_0x405a53,_0x32361e){_0x405a53=_0x405a53-0x0;var _0x2dd181=_0x3554[_0x405a53];return _0x2dd181;};'use strict';var client=require('../client');exports[_0x4355('0x0')]=function(){return function(){return client[_0x4355('0x1')](_0x4355('0x2'),{'options':{'raw':![],'attributes':['id',_0x4355('0x3'),'timeout',_0x4355('0x4')],'include':[{'model':_0x4355('0x5'),'as':_0x4355('0x6'),'attributes':['id',_0x4355('0x3'),_0x4355('0x7'),'whatsappPause']}]},'log':_0x4355('0x0')});};};
\ No newline at end of file
+var _0xc9ea=['Request','GetWhatsappQueue','name','timeout','strategy','User','Agents','online','whatsappPause','../client','getWhatsappQueues'];(function(_0x59079a,_0x53c526){var _0x6857=function(_0x575e94){while(--_0x575e94){_0x59079a['push'](_0x59079a['shift']());}};_0x6857(++_0x53c526);}(_0xc9ea,0x15e));var _0xac9e=function(_0x25fd7b,_0x523cc3){_0x25fd7b=_0x25fd7b-0x0;var _0x1b624d=_0xc9ea[_0x25fd7b];return _0x1b624d;};'use strict';var client=require(_0xac9e('0x0'));exports[_0xac9e('0x1')]=function(){return function(){return client[_0xac9e('0x2')](_0xac9e('0x3'),{'options':{'raw':![],'attributes':['id',_0xac9e('0x4'),_0xac9e('0x5'),_0xac9e('0x6')],'include':[{'model':_0xac9e('0x7'),'as':_0xac9e('0x8'),'attributes':['id','name',_0xac9e('0x9'),_0xac9e('0xa')]}]},'log':_0xac9e('0x1')});};};
\ No newline at end of file
index b7613ec..abcaed3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b1b=['create','Request','CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport','../client'];(function(_0x3cd29b,_0x18df3e){var _0x1c5930=function(_0x43473a){while(--_0x43473a){_0x3cd29b['push'](_0x3cd29b['shift']());}};_0x1c5930(++_0x18df3e);}(_0x8b1b,0x191));var _0xb8b1=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0x8b1b[_0x4f9b18];return _0x29f20c;};'use strict';var client=require(_0xb8b1('0x0'));exports[_0xb8b1('0x1')]=function(_0x25259e){return client[_0xb8b1('0x2')](_0xb8b1('0x3'),{'body':_0x25259e,'log':_0xb8b1('0x3')});};exports[_0xb8b1('0x4')]=function(_0x4596a6,_0x4c22b1){return client[_0xb8b1('0x2')](_0xb8b1('0x5'),{'body':_0x4c22b1,'options':{'where':{'uniqueid':_0x4596a6},'order':[['id','DESC']],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
+var _0xa5f8=['CreateWhatsappQueueReport','DESC','UpdateWhatsappQueueReport','create','Request'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xa5f8,0x175));var _0x8a5f=function(_0x331c67,_0xe17e99){_0x331c67=_0x331c67-0x0;var _0x2f0944=_0xa5f8[_0x331c67];return _0x2f0944;};'use strict';var client=require('../client');exports[_0x8a5f('0x0')]=function(_0x4193f8){return client[_0x8a5f('0x1')](_0x8a5f('0x2'),{'body':_0x4193f8,'log':'CreateWhatsappQueueReport'});};exports['update']=function(_0x5578fc,_0x4d1b26){return client[_0x8a5f('0x1')]('UpdateWhatsappQueueReport',{'body':_0x4d1b26,'options':{'where':{'uniqueid':_0x5578fc},'order':[['id',_0x8a5f('0x3')]],'limit':0x1},'log':_0x8a5f('0x4')});};
\ No newline at end of file
index c63b7e4..05b6909 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabc5=['agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','routing','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','info','format','name','toLowerCase','length','error','[%s][AGENT]\x20%s','map','message','stop','find','agents','timeout','createQueue','atimeout','channel','START:%s','rules','end','close'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xabc5,0x137));var _0x5abc=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xabc5[_0x14add3];return _0x4a174f;};'use strict';var schema=require(_0x5abc('0x0'));var _=require(_0x5abc('0x1'));var util=require(_0x5abc('0x2'));var seqqueue=require(_0x5abc('0x3'));var logger=require('../../../../config/logger')(_0x5abc('0x4'));var strategy=require(_0x5abc('0x5'));var queue=schema({'name':{'type':_0x5abc('0x6'),'required':!![],'message':_0x5abc('0x7')},'timeout':{'type':_0x5abc('0x8'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x3206c4,_0x3dbcb3,_0xafdbe5){return logger[_0x5abc('0x9')](util[_0x5abc('0xa')]('[%s][AGENT][NAME:%s][STATUS:%s]',_0x3206c4,_0x3dbcb3['name'],_0xafdbe5));}function handleFindAgent(_0x3eeb77){return function(_0x2023d9){return _0x2023d9[_0x5abc('0xb')]['toLowerCase']()===_0x3eeb77[_0x5abc('0xc')]();};}exports['consequence']=function(_0x37ac20,_0x1f8688,_0x25060e,_0x31bb2e){return function(_0x4146ca){try{var _0x537777={'name':_0x1f8688[0x0],'timeout':_0x1f8688[0x1]};var _0x51ac5f=queue[_0x5abc('0x0')](_0x537777,{'typecast':!![]});if(_0x51ac5f[_0x5abc('0xd')]){logger[_0x5abc('0xe')](_0x5abc('0xf'),_0x37ac20,_[_0x5abc('0x10')](_0x51ac5f,_0x5abc('0x11'))['join'](',\x20'));_0x4146ca[_0x5abc('0x12')]();}else{var _0x4fa5e6=_[_0x5abc('0x13')](_0x25060e[_0x5abc('0x14')],handleFindAgent(_0x537777[_0x5abc('0xb')]));if(_0x4fa5e6){var _0x1ff1fa=(_0x537777[_0x5abc('0x15')]||0xa)*0x3e8;var _0x4b5f46,_0x4982d9;var _0xdb937d=seqqueue[_0x5abc('0x16')](_0x1ff1fa);_0xdb937d['id']=_0x37ac20;_0xdb937d[_0x5abc('0x17')]=_0x1ff1fa;_0xdb937d[_0x5abc('0x18')]=_0x31bb2e[_0x5abc('0x18')];writeLog(_0x37ac20,_0x4fa5e6,util['format'](_0x5abc('0x19'),_0x1ff1fa));_0x25060e[_0x5abc('0x1a')][_0x37ac20]['on'](_0x5abc('0x1b'),function(){logger[_0x5abc('0x9')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x37ac20);clearTimeout(_0x4982d9);_0x4982d9=undefined;_0xdb937d[_0x5abc('0x1c')]();if(_0x25060e['rules'][_0x37ac20]){delete _0x25060e[_0x5abc('0x1a')][_0x37ac20];}_0x4146ca[_0x5abc('0x12')]();});_0x25060e[_0x5abc('0x1a')][_0x37ac20]['on']('complete',function(){if(_0x25060e[_0x5abc('0x1a')][_0x37ac20]){delete _0x25060e[_0x5abc('0x1a')][_0x37ac20];}});_0x4982d9=setTimeout(function(){logger[_0x5abc('0x9')]('[%s][AGENT]\x20ROUTING\x20END',_0x37ac20);clearTimeout(_0x4982d9);_0xdb937d[_0x5abc('0x1c')]();_0x4146ca['next']();},_0x1ff1fa);strategy[_0x5abc('0x1d')](_0xdb937d,_0x4fa5e6,_0x25060e,_0x31bb2e);}else{logger[_0x5abc('0xe')](_0x5abc('0x1e'),_0x37ac20,_0x537777[_0x5abc('0xb')]);_0x4146ca[_0x5abc('0x12')]();}}}catch(_0x25ec51){console[_0x5abc('0x1f')](_0x25ec51);logger[_0x5abc('0xe')](_0x5abc('0x20'),_0x37ac20,_0x25ec51[_0x5abc('0x21')]);_0x4146ca[_0x5abc('0x12')]();}};};
\ No newline at end of file
+var _0x60c8=['name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','length','error','[%s][AGENT]\x20%s','map','message','stop','find','timeout','createQueue','atimeout','channel','rules','end','info','complete','[%s][AGENT]\x20ROUTING\x20END','close','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','routing','./strategy','string'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x60c8,0x89));var _0x860c=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x60c8[_0x20a584];return _0x4b41a8;};'use strict';var schema=require(_0x860c('0x0'));var _=require(_0x860c('0x1'));var util=require(_0x860c('0x2'));var seqqueue=require(_0x860c('0x3'));var logger=require('../../../../config/logger')(_0x860c('0x4'));var strategy=require(_0x860c('0x5'));var queue=schema({'name':{'type':_0x860c('0x6'),'required':!![],'message':_0x860c('0x7')},'timeout':{'type':_0x860c('0x8'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x2519c3,_0x59d742,_0x3b22e5){return logger['info'](util[_0x860c('0x9')](_0x860c('0xa'),_0x2519c3,_0x59d742[_0x860c('0xb')],_0x3b22e5));}function handleFindAgent(_0x5e2e92){return function(_0x4ebdc0){return _0x4ebdc0[_0x860c('0xb')][_0x860c('0xc')]()===_0x5e2e92[_0x860c('0xc')]();};}exports['consequence']=function(_0x1c3d06,_0x222a49,_0x1df048,_0x2809f4){return function(_0xcf10b7){try{var _0x304797={'name':_0x222a49[0x0],'timeout':_0x222a49[0x1]};var _0x463264=queue['validate'](_0x304797,{'typecast':!![]});if(_0x463264[_0x860c('0xd')]){logger[_0x860c('0xe')](_0x860c('0xf'),_0x1c3d06,_[_0x860c('0x10')](_0x463264,_0x860c('0x11'))['join'](',\x20'));_0xcf10b7[_0x860c('0x12')]();}else{var _0x5b3213=_[_0x860c('0x13')](_0x1df048['agents'],handleFindAgent(_0x304797[_0x860c('0xb')]));if(_0x5b3213){var _0x4a6a72=(_0x304797[_0x860c('0x14')]||0xa)*0x3e8;var _0x2edf4b,_0x5ed46b;var _0x4b7d3f=seqqueue[_0x860c('0x15')](_0x4a6a72);_0x4b7d3f['id']=_0x1c3d06;_0x4b7d3f[_0x860c('0x16')]=_0x4a6a72;_0x4b7d3f[_0x860c('0x17')]=_0x2809f4[_0x860c('0x17')];writeLog(_0x1c3d06,_0x5b3213,util['format']('START:%s',_0x4a6a72));_0x1df048[_0x860c('0x18')][_0x1c3d06]['on'](_0x860c('0x19'),function(){logger[_0x860c('0x1a')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x1c3d06);clearTimeout(_0x5ed46b);_0x5ed46b=undefined;_0x4b7d3f['close']();if(_0x1df048[_0x860c('0x18')][_0x1c3d06]){delete _0x1df048[_0x860c('0x18')][_0x1c3d06];}_0xcf10b7[_0x860c('0x12')]();});_0x1df048[_0x860c('0x18')][_0x1c3d06]['on'](_0x860c('0x1b'),function(){if(_0x1df048[_0x860c('0x18')][_0x1c3d06]){delete _0x1df048[_0x860c('0x18')][_0x1c3d06];}});_0x5ed46b=setTimeout(function(){logger[_0x860c('0x1a')](_0x860c('0x1c'),_0x1c3d06);clearTimeout(_0x5ed46b);_0x4b7d3f[_0x860c('0x1d')]();_0xcf10b7[_0x860c('0x1e')]();},_0x4a6a72);strategy[_0x860c('0x1f')](_0x4b7d3f,_0x5b3213,_0x1df048,_0x2809f4);}else{logger[_0x860c('0xe')](_0x860c('0x20'),_0x1c3d06,_0x304797[_0x860c('0xb')]);_0xcf10b7[_0x860c('0x12')]();}}}catch(_0x40d7b7){console[_0x860c('0x21')](_0x40d7b7);logger[_0x860c('0xe')](_0x860c('0x22'),_0x1c3d06,_0x40d7b7[_0x860c('0x23')]);_0xcf10b7[_0x860c('0x12')]();}};};
\ No newline at end of file
index 4839d14..c005e6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e7b=['interaction','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','phone','chat','ChatWebsiteId','upperFirst','AccountId','account','InteractionId','isEmpty','body','Message','then','catch','[%s][AMAZONLEX]\x20%s','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','$LATEST','toString','postText','error','message','providerName','providerResponse','dialogState','Failed','stop','moment','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage'];(function(_0xa30766,_0x6f613e){var _0x24e780=function(_0x3d58fb){while(--_0x3d58fb){_0xa30766['push'](_0xa30766['shift']());}};_0x24e780(++_0x6f613e);}(_0x5e7b,0x146));var _0xb5e7=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x5e7b[_0x46e363];return _0x3fb059;};'use strict';var _=require('lodash');var moment=require(_0xb5e7('0x0'));var AWS=require(_0xb5e7('0x1'));var utils=require(_0xb5e7('0x2'));var logger=require(_0xb5e7('0x3'))(_0xb5e7('0x4'));var rpc={'chatMessage':require(_0xb5e7('0x5')),'openchannelMessage':require(_0xb5e7('0x6')),'mailMessage':require(_0xb5e7('0x7')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xb5e7('0x8')),'whatsappMessage':require(_0xb5e7('0x9'))};exports['consequence']=function(_0x1dbaab,_0x21b6a6){return function(_0xcf0f35){try{if(!_['isNil'](this[_0xb5e7('0xa')][_0xb5e7('0xb')])){logger[_0xb5e7('0xc')]('[%s][AMAZONLEX]\x20%s',_0x1dbaab,_0xb5e7('0xd'));return _0xcf0f35[_0xb5e7('0xe')]();}var _0x302542={'ContactId':this[_0xb5e7('0xf')]['id'],'sentAt':moment()['format'](_0xb5e7('0x10')),'direction':_0xb5e7('0x11')};if(this[_0xb5e7('0x12')]===_0xb5e7('0x13')||this[_0xb5e7('0x12')]==='whatsapp'){_0x302542[_0xb5e7('0x14')]=this[_0xb5e7('0xa')][_0xb5e7('0x14')];}var _0x3acfcf=this[_0xb5e7('0x12')];if(_0x3acfcf===_0xb5e7('0x15')){_0x302542[_0xb5e7('0x16')]=this['account']['id'];}else{_0x302542[_[_0xb5e7('0x17')](_0x3acfcf)+_0xb5e7('0x18')]=this[_0xb5e7('0x19')]['id'];}_0x302542[_[_0xb5e7('0x17')](_0x3acfcf)+_0xb5e7('0x1a')]=this[_0xb5e7('0xa')]['id'];if(this[_0xb5e7('0xa')]['created']){var _0x2e453c=_0x21b6a6[0x4];if(!_[_0xb5e7('0x1b')](_0x2e453c)){_0x302542[_0xb5e7('0x1c')]=utils['getMustacheRender'](_0x2e453c,this);return rpc[_0x3acfcf+_0xb5e7('0x1d')]['create'](_0x302542)[_0xb5e7('0x1e')](function(_0x2a7cb4){logger[_0xb5e7('0xc')]('[%s][AMAZONLEX]\x20%s',_0x1dbaab,_0x302542[_0xb5e7('0x1c')]);})[_0xb5e7('0x1f')](function(_0x22e82b){logger['error'](_0xb5e7('0x20'),_0x1dbaab,JSON[_0xb5e7('0x21')](_0x22e82b));})[_0xb5e7('0x22')](function(){logger['info'](_0xb5e7('0x23'),_0x1dbaab);_0xcf0f35['stop']();});}else{logger[_0xb5e7('0xc')](_0xb5e7('0x24'),_0x1dbaab);_0xcf0f35['stop']();}}else{var _0x325a3b=this;var _0x269193=new AWS[(_0xb5e7('0x25'))]({'accessKeyId':_0x21b6a6[0x0],'secretAccessKey':_0x21b6a6[0x1],'region':_0x21b6a6[0x2]});var _0x179183={'botAlias':_0xb5e7('0x26'),'botName':_0x21b6a6[0x3],'inputText':this['message'][_0xb5e7('0x1c')],'userId':this[_0xb5e7('0x12')]+':'+this['interaction']['id'][_0xb5e7('0x27')]()};_0x269193[_0xb5e7('0x28')](_0x179183,function(_0x1e3856,_0x3f4267){if(_0x1e3856){logger[_0xb5e7('0x29')](_0xb5e7('0x20'),_0x1dbaab,_0x1e3856[_0xb5e7('0x2a')]);_0xcf0f35[_0xb5e7('0xe')]();}else if(_0x3f4267&&_0x3f4267[_0xb5e7('0x2a')]){_0x325a3b['body']['amazonlex']=_0x3f4267;_0x302542[_0xb5e7('0x1c')]=_0x3f4267['message'];_0x302542[_0xb5e7('0x2b')]='amazonlex';_0x302542[_0xb5e7('0x2c')]=JSON[_0xb5e7('0x21')](_0x3f4267);return rpc[_0x3acfcf+'Message']['create'](_0x302542)[_0xb5e7('0x1e')](function(_0x33db23){logger[_0xb5e7('0xc')](_0xb5e7('0x20'),_0x1dbaab,_0x302542[_0xb5e7('0x1c')]);if(_0x3f4267[_0xb5e7('0x2d')]==_0xb5e7('0x2e')){_0xcf0f35['next']();}else{_0xcf0f35['stop']();}})[_0xb5e7('0x1f')](function(_0x2108d4){logger[_0xb5e7('0x29')](_0xb5e7('0x20'),_0x1dbaab,JSON[_0xb5e7('0x21')](_0x2108d4));_0xcf0f35[_0xb5e7('0xe')]();});}else{_0xcf0f35['next']();}});}}catch(_0x3723a6){logger['error'](_0xb5e7('0x20'),_0x1dbaab,JSON[_0xb5e7('0x21')](_0x3723a6));_0xcf0f35[_0xb5e7('0x2f')]();}};};
\ No newline at end of file
+var _0xb95f=['UserId','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','InteractionId','interaction','created','isEmpty','getMustacheRender','Message','create','then','info','body','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','amazonlex','providerName','providerResponse','Failed','lodash','moment','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','consequence','isNil'];(function(_0x52422a,_0x494395){var _0x322aaa=function(_0x2f37d2){while(--_0x2f37d2){_0x52422a['push'](_0x52422a['shift']());}};_0x322aaa(++_0x494395);}(_0xb95f,0x91));var _0xfb95=function(_0x4dcd8a,_0x126dd3){_0x4dcd8a=_0x4dcd8a-0x0;var _0x3eed92=_0xb95f[_0x4dcd8a];return _0x3eed92;};'use strict';var _=require(_0xfb95('0x0'));var moment=require(_0xfb95('0x1'));var AWS=require('aws-sdk');var utils=require(_0xfb95('0x2'));var logger=require(_0xfb95('0x3'))(_0xfb95('0x4'));var rpc={'chatMessage':require(_0xfb95('0x5')),'openchannelMessage':require(_0xfb95('0x6')),'mailMessage':require(_0xfb95('0x7')),'smsMessage':require(_0xfb95('0x8')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xfb95('0x9')]=function(_0x5051b4,_0x3739dc){return function(_0x2a9312){try{if(!_[_0xfb95('0xa')](this['interaction'][_0xfb95('0xb')])){logger['info'](_0xfb95('0xc'),_0x5051b4,_0xfb95('0xd'));return _0x2a9312[_0xfb95('0xe')]();}var _0x10c403={'ContactId':this[_0xfb95('0xf')]['id'],'sentAt':moment()['format'](_0xfb95('0x10')),'direction':_0xfb95('0x11')};if(this[_0xfb95('0x12')]===_0xfb95('0x13')||this[_0xfb95('0x12')]===_0xfb95('0x14')){_0x10c403[_0xfb95('0x15')]=this['interaction'][_0xfb95('0x15')];}var _0x444437=this[_0xfb95('0x12')];if(_0x444437===_0xfb95('0x16')){_0x10c403[_0xfb95('0x17')]=this[_0xfb95('0x18')]['id'];}else{_0x10c403[_[_0xfb95('0x19')](_0x444437)+'AccountId']=this['account']['id'];}_0x10c403[_[_0xfb95('0x19')](_0x444437)+_0xfb95('0x1a')]=this[_0xfb95('0x1b')]['id'];if(this['interaction'][_0xfb95('0x1c')]){var _0x223b91=_0x3739dc[0x4];if(!_[_0xfb95('0x1d')](_0x223b91)){_0x10c403['body']=utils[_0xfb95('0x1e')](_0x223b91,this);return rpc[_0x444437+_0xfb95('0x1f')][_0xfb95('0x20')](_0x10c403)[_0xfb95('0x21')](function(_0x15ab1a){logger[_0xfb95('0x22')]('[%s][AMAZONLEX]\x20%s',_0x5051b4,_0x10c403[_0xfb95('0x23')]);})[_0xfb95('0x24')](function(_0x2fbdb8){logger[_0xfb95('0x25')](_0xfb95('0xc'),_0x5051b4,JSON[_0xfb95('0x26')](_0x2fbdb8));})[_0xfb95('0x27')](function(){logger[_0xfb95('0x22')](_0xfb95('0x28'),_0x5051b4);_0x2a9312['stop']();});}else{logger[_0xfb95('0x22')](_0xfb95('0x29'),_0x5051b4);_0x2a9312[_0xfb95('0x2a')]();}}else{var _0x3dd5d9=this;var _0x5abfa7=new AWS[(_0xfb95('0x2b'))]({'accessKeyId':_0x3739dc[0x0],'secretAccessKey':_0x3739dc[0x1],'region':_0x3739dc[0x2]});var _0x1495af={'botAlias':_0xfb95('0x2c'),'botName':_0x3739dc[0x3],'inputText':this[_0xfb95('0x2d')][_0xfb95('0x23')],'userId':this[_0xfb95('0x12')]+':'+this[_0xfb95('0x1b')]['id'][_0xfb95('0x2e')]()};_0x5abfa7[_0xfb95('0x2f')](_0x1495af,function(_0x249a60,_0x520cf3){if(_0x249a60){logger[_0xfb95('0x25')](_0xfb95('0xc'),_0x5051b4,_0x249a60[_0xfb95('0x2d')]);_0x2a9312[_0xfb95('0xe')]();}else if(_0x520cf3&&_0x520cf3[_0xfb95('0x2d')]){_0x3dd5d9[_0xfb95('0x23')][_0xfb95('0x30')]=_0x520cf3;_0x10c403['body']=_0x520cf3[_0xfb95('0x2d')];_0x10c403[_0xfb95('0x31')]=_0xfb95('0x30');_0x10c403[_0xfb95('0x32')]=JSON[_0xfb95('0x26')](_0x520cf3);return rpc[_0x444437+_0xfb95('0x1f')][_0xfb95('0x20')](_0x10c403)[_0xfb95('0x21')](function(_0x19a7f8){logger[_0xfb95('0x22')]('[%s][AMAZONLEX]\x20%s',_0x5051b4,_0x10c403[_0xfb95('0x23')]);if(_0x520cf3['dialogState']==_0xfb95('0x33')){_0x2a9312[_0xfb95('0xe')]();}else{_0x2a9312[_0xfb95('0x2a')]();}})[_0xfb95('0x24')](function(_0xaf74c){logger['error']('[%s][AMAZONLEX]\x20%s',_0x5051b4,JSON[_0xfb95('0x26')](_0xaf74c));_0x2a9312[_0xfb95('0xe')]();});}else{_0x2a9312[_0xfb95('0xe')]();}});}}catch(_0x33488c){logger[_0xfb95('0x25')](_0xfb95('0xc'),_0x5051b4,JSON[_0xfb95('0x26')](_0x33488c));_0x2a9312[_0xfb95('0x2a')]();}};};
\ No newline at end of file
index 2d0fb0f..a17f42b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf26f=['../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','next','isNil','created','interaction','autoreplyExecuted','One\x20Time\x20already\x20sent','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','getMustacheRender','message','from','phone','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','account','upperFirst','AccountId','Message','Smtp','service','host','port','secure','user','pass','inReplyTo','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div','</div>','headers','auto-replied','All','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','messageId','create','stringify','finally','resolve','Interaction','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','catch','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','./utils','routing','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xf26f,0xcb));var _0xff26=function(_0x25aeab,_0xdb03ab){_0x25aeab=_0x25aeab-0x0;var _0x2fc6e0=_0xf26f[_0x25aeab];return _0x2fc6e0;};'use strict';var _=require('lodash');var moment=require('moment');var utils=require(_0xff26('0x0'));var logger=require('../../../../config/logger')(_0xff26('0x1'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xff26('0x2')),'smsMessage':require(_0xff26('0x3')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require(_0xff26('0x4')),'openchannelInteraction':require(_0xff26('0x5')),'mailInteraction':require(_0xff26('0x6')),'smsInteraction':require(_0xff26('0x7')),'faxInteraction':require(_0xff26('0x8')),'whatsappInteraction':require(_0xff26('0x9'))};var mailRpc=require(_0xff26('0xa'));exports[_0xff26('0xb')]=function(_0x5c5136,_0x5961dc,_0x293118,_0x516ba6){return function(_0x5bd402){try{var _0x49862b=this['channel'];if(_0x49862b===_0xff26('0xc')&&_0x516ba6[_0xff26('0xd')][_0xff26('0xe')]){logger[_0xff26('0xf')](_0xff26('0x10'),_0x5c5136,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x5bd402[_0xff26('0x11')]();}if(_0x5961dc[0x0]==='1'&&(_[_0xff26('0x12')](this['interaction'][_0xff26('0x13')])||!this[_0xff26('0x14')][_0xff26('0x13')])){logger[_0xff26('0xf')](_0xff26('0x10'),_0x5c5136,'Autoreply\x20already\x20sent');return _0x5bd402[_0xff26('0x11')]();}if(_0x5961dc[0x0]==='2'&&this[_0xff26('0x14')][_0xff26('0x15')]){logger['info']('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x5c5136,_0xff26('0x16'));return _0x5bd402[_0xff26('0x11')]();}var _0x2af803={'ContactId':this[_0xff26('0x17')]['id'],'sentAt':moment()[_0xff26('0x18')](_0xff26('0x19')),'direction':'out'};if(this[_0xff26('0x1a')]==='mail'){_0x2af803[_0xff26('0xd')]=utils['getMustacheRender'](_0x5961dc[0x2],this);}else{_0x2af803[_0xff26('0xd')]=utils[_0xff26('0x1b')](_0x5961dc[0x1],this);}if(this[_0xff26('0x1c')]){_0x2af803['to']=this[_0xff26('0x1c')][_0xff26('0x1d')]||'';if(this[_0xff26('0x1a')]===_0xff26('0xc')&&_0x5961dc[0x1]==='1'){_0x2af803['cc']=this[_0xff26('0x1c')]['cc']||'';}_0x2af803[_0xff26('0x1d')]=this[_0xff26('0x1c')]['to']||'';_0x2af803[_0xff26('0x1e')]=this[_0xff26('0x1c')][_0xff26('0x1e')]||'';_0x2af803['read']=!![];if(this['message'][_0xff26('0x1f')]){_0x2af803['subject']='';_0x2af803[_0xff26('0x1f')]+=_[_0xff26('0x20')](this[_0xff26('0x1c')]['subject'],_0xff26('0x21'))?'':_0xff26('0x22');_0x2af803[_0xff26('0x1f')]+=this['message']['subject'];}}if(this[_0xff26('0x1a')]===_0xff26('0x23')){_0x2af803[_0xff26('0x24')]=this[_0xff26('0x25')]['id'];}else{_0x2af803[_[_0xff26('0x26')](this[_0xff26('0x1a')])+_0xff26('0x27')]=this[_0xff26('0x25')]['id'];}_0x2af803[_['upperFirst'](this[_0xff26('0x1a')])+'InteractionId']=this[_0xff26('0x14')]['id'];var _0x59ff0a=this[_0xff26('0x14')];if(rpc[this[_0xff26('0x1a')]+_0xff26('0x28')]){if(this[_0xff26('0x1a')]==='mail'){var _0x415fc3={'tls':{'rejectUnauthorized':![]}};if(this[_0xff26('0x25')][_0xff26('0x29')][_0xff26('0x2a')]){_0x415fc3['service']=this[_0xff26('0x25')][_0xff26('0x29')]['service'];}else{_0x415fc3[_0xff26('0x2b')]=this['account'][_0xff26('0x29')][_0xff26('0x2b')];_0x415fc3['port']=this['account'][_0xff26('0x29')][_0xff26('0x2c')];_0x415fc3[_0xff26('0x2d')]=this[_0xff26('0x25')][_0xff26('0x29')]['secure'];}if(this[_0xff26('0x25')][_0xff26('0x29')]['authentication']){_0x415fc3['auth']={'user':this[_0xff26('0x25')][_0xff26('0x29')][_0xff26('0x2e')],'pass':this[_0xff26('0x25')]['Smtp'][_0xff26('0x2f')]};}_0x2af803[_0xff26('0x30')]=this['message']['messageId'];_0x2af803[_0xff26('0x31')]=_0xff26('0x32')+_[_0xff26('0x33')](_0x2af803[_0xff26('0xd')],'<div\x20id=\x22xm-mail-content\x22',_0xff26('0x34'))+_0xff26('0x35');_0x2af803[_0xff26('0x36')]={'Auto-Submitted':_0xff26('0x37'),'X-Auto-Response-Suppress':_0xff26('0x38'),'Precedence':'auto_reply'};return mailRpc['sendMailMessage'](_0x415fc3,_0x2af803)[_0xff26('0x39')](function(_0x4bd3e0){logger['info'](_0xff26('0x3a'),_0x5c5136);_0x2af803['messageId']=_0x4bd3e0[_0xff26('0x1c')][_0xff26('0x3b')];return rpc[_0x49862b+'Message'][_0xff26('0x3c')](_0x2af803);})[_0xff26('0x39')](function(_0x56962c){logger[_0xff26('0xf')]('[%s][AUTOREPLY]\x20%s',_0x5c5136,JSON[_0xff26('0x3d')](_0x56962c));})['catch'](function(_0x5a0bf9){logger['error']('[RPC][%s][AUTOREPLY]\x20%s',_0x5c5136,JSON['stringify'](_0x5a0bf9));})[_0xff26('0x3e')](function(){Promise[_0xff26('0x3f')]()[_0xff26('0x39')](function(){if(_0x5961dc[0x0]!=='2'||_0x59ff0a[_0xff26('0x15')])return;return rpc[_0x49862b+_0xff26('0x40')]['update'](_0x59ff0a['id'],{'autoreplyExecuted':!![]})[_0xff26('0x39')](function(_0x5aef6a){logger['info'](_0xff26('0x41'),_0x5c5136,JSON[_0xff26('0x3d')](_0x5aef6a));})[_0xff26('0x42')](function(_0x60ad0b){logger[_0xff26('0x43')](_0xff26('0x44'),_0x5c5136,JSON[_0xff26('0x3d')](_0x60ad0b));});})[_0xff26('0x39')](function(){_0x5bd402['next']();});});}else{return rpc[this[_0xff26('0x1a')]+'Message'][_0xff26('0x3c')](_0x2af803)[_0xff26('0x39')](function(_0x1241d9){logger[_0xff26('0xf')](_0xff26('0x10'),_0x5c5136,_0x2af803[_0xff26('0xd')]);})[_0xff26('0x42')](function(_0x558270){logger[_0xff26('0x43')]('[%s][AUTOREPLY]\x20%s',_0x5c5136,JSON[_0xff26('0x3d')](_0x558270));})['finally'](function(){Promise[_0xff26('0x3f')]()[_0xff26('0x39')](function(){if(_0x5961dc[0x0]!=='2'||_0x59ff0a[_0xff26('0x15')])return;return rpc[_0x49862b+_0xff26('0x40')]['update'](_0x59ff0a['id'],{'autoreplyExecuted':!![]})[_0xff26('0x39')](function(_0x4d516c){logger['info'](_0xff26('0x41'),_0x5c5136,JSON['stringify'](_0x4d516c));})['catch'](function(_0x2fbec2){logger[_0xff26('0x43')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x5c5136,JSON[_0xff26('0x3d')](_0x2fbec2));});})['then'](function(){_0x5bd402['next']();});});}}}catch(_0x28ca69){logger[_0xff26('0x43')](_0xff26('0x10'),_0x5c5136,JSON[_0xff26('0x3d')](_0x28ca69));_0x5bd402[_0xff26('0x45')]();}};};
\ No newline at end of file
+var _0x62dd=['create','then','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','Interaction','update','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','lodash','moment','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','body','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','created','interaction','Autoreply\x20already\x20sent','autoreplyExecuted','One\x20Time\x20already\x20sent','contact','format','YYYY-MM-DD\x20HH:mm:ss','getMustacheRender','message','from','phone','read','subject','startsWith','Re:\x20','ChatWebsiteId','AccountId','account','upperFirst','InteractionId','Message','Smtp','service','port','secure','pass','inReplyTo','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div','headers','auto-replied','All','auto_reply','sendMailMessage','[%s][AUTOREPLY]\x20SMTP\x20SENT','messageId'];(function(_0x26b8b5,_0xf5c2c1){var _0x2150a9=function(_0x1ca1be){while(--_0x1ca1be){_0x26b8b5['push'](_0x26b8b5['shift']());}};_0x2150a9(++_0xf5c2c1);}(_0x62dd,0x130));var _0xd62d=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x62dd[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0xd62d('0x0'));var moment=require(_0xd62d('0x1'));var utils=require(_0xd62d('0x2'));var logger=require(_0xd62d('0x3'))('routing');var rpc={'chatMessage':require(_0xd62d('0x4')),'openchannelMessage':require(_0xd62d('0x5')),'mailMessage':require(_0xd62d('0x6')),'smsMessage':require(_0xd62d('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xd62d('0x8')),'chatInteraction':require(_0xd62d('0x9')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require(_0xd62d('0xa')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0xd62d('0xb')),'whatsappInteraction':require(_0xd62d('0xc'))};var mailRpc=require(_0xd62d('0xd'));exports[_0xd62d('0xe')]=function(_0x547173,_0x1b4450,_0x4fda70,_0x431720){return function(_0x3897f7){try{var _0x2d2ed2=this[_0xd62d('0xf')];if(_0x2d2ed2===_0xd62d('0x10')&&_0x431720[_0xd62d('0x11')]['isAutoreply']){logger[_0xd62d('0x12')](_0xd62d('0x13'),_0x547173,_0xd62d('0x14'));return _0x3897f7[_0xd62d('0x15')]();}if(_0x1b4450[0x0]==='1'&&(_['isNil'](this['interaction'][_0xd62d('0x16')])||!this[_0xd62d('0x17')]['created'])){logger['info'](_0xd62d('0x13'),_0x547173,_0xd62d('0x18'));return _0x3897f7[_0xd62d('0x15')]();}if(_0x1b4450[0x0]==='2'&&this['interaction'][_0xd62d('0x19')]){logger[_0xd62d('0x12')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x547173,_0xd62d('0x1a'));return _0x3897f7[_0xd62d('0x15')]();}var _0x39fbca={'ContactId':this[_0xd62d('0x1b')]['id'],'sentAt':moment()[_0xd62d('0x1c')](_0xd62d('0x1d')),'direction':'out'};if(this[_0xd62d('0xf')]===_0xd62d('0x10')){_0x39fbca[_0xd62d('0x11')]=utils[_0xd62d('0x1e')](_0x1b4450[0x2],this);}else{_0x39fbca[_0xd62d('0x11')]=utils[_0xd62d('0x1e')](_0x1b4450[0x1],this);}if(this[_0xd62d('0x1f')]){_0x39fbca['to']=this[_0xd62d('0x1f')][_0xd62d('0x20')]||'';if(this[_0xd62d('0xf')]==='mail'&&_0x1b4450[0x1]==='1'){_0x39fbca['cc']=this[_0xd62d('0x1f')]['cc']||'';}_0x39fbca['from']=this[_0xd62d('0x1f')]['to']||'';_0x39fbca['phone']=this[_0xd62d('0x1f')][_0xd62d('0x21')]||'';_0x39fbca[_0xd62d('0x22')]=!![];if(this['message']['subject']){_0x39fbca['subject']='';_0x39fbca[_0xd62d('0x23')]+=_[_0xd62d('0x24')](this[_0xd62d('0x1f')]['subject'],'Re:')?'':_0xd62d('0x25');_0x39fbca[_0xd62d('0x23')]+=this[_0xd62d('0x1f')][_0xd62d('0x23')];}}if(this[_0xd62d('0xf')]==='chat'){_0x39fbca[_0xd62d('0x26')]=this['account']['id'];}else{_0x39fbca[_['upperFirst'](this[_0xd62d('0xf')])+_0xd62d('0x27')]=this[_0xd62d('0x28')]['id'];}_0x39fbca[_[_0xd62d('0x29')](this['channel'])+_0xd62d('0x2a')]=this[_0xd62d('0x17')]['id'];var _0xf150a2=this[_0xd62d('0x17')];if(rpc[this[_0xd62d('0xf')]+_0xd62d('0x2b')]){if(this[_0xd62d('0xf')]==='mail'){var _0x5afe6d={'tls':{'rejectUnauthorized':![]}};if(this[_0xd62d('0x28')][_0xd62d('0x2c')][_0xd62d('0x2d')]){_0x5afe6d[_0xd62d('0x2d')]=this['account'][_0xd62d('0x2c')][_0xd62d('0x2d')];}else{_0x5afe6d['host']=this[_0xd62d('0x28')][_0xd62d('0x2c')]['host'];_0x5afe6d[_0xd62d('0x2e')]=this[_0xd62d('0x28')]['Smtp'][_0xd62d('0x2e')];_0x5afe6d[_0xd62d('0x2f')]=this[_0xd62d('0x28')][_0xd62d('0x2c')][_0xd62d('0x2f')];}if(this[_0xd62d('0x28')][_0xd62d('0x2c')]['authentication']){_0x5afe6d['auth']={'user':this[_0xd62d('0x28')][_0xd62d('0x2c')]['user'],'pass':this[_0xd62d('0x28')][_0xd62d('0x2c')][_0xd62d('0x30')]};}_0x39fbca[_0xd62d('0x31')]=this[_0xd62d('0x1f')]['messageId'];_0x39fbca[_0xd62d('0x32')]=_0xd62d('0x33')+_[_0xd62d('0x34')](_0x39fbca[_0xd62d('0x11')],'<div\x20id=\x22xm-mail-content\x22',_0xd62d('0x35'))+'</div>';_0x39fbca[_0xd62d('0x36')]={'Auto-Submitted':_0xd62d('0x37'),'X-Auto-Response-Suppress':_0xd62d('0x38'),'Precedence':_0xd62d('0x39')};return mailRpc[_0xd62d('0x3a')](_0x5afe6d,_0x39fbca)['then'](function(_0x1344a8){logger[_0xd62d('0x12')](_0xd62d('0x3b'),_0x547173);_0x39fbca[_0xd62d('0x3c')]=_0x1344a8[_0xd62d('0x1f')]['messageId'];return rpc[_0x2d2ed2+_0xd62d('0x2b')][_0xd62d('0x3d')](_0x39fbca);})[_0xd62d('0x3e')](function(_0xac15b4){logger[_0xd62d('0x12')](_0xd62d('0x13'),_0x547173,JSON[_0xd62d('0x3f')](_0xac15b4));})[_0xd62d('0x40')](function(_0x1e516a){logger['error'](_0xd62d('0x41'),_0x547173,JSON[_0xd62d('0x3f')](_0x1e516a));})[_0xd62d('0x42')](function(){Promise[_0xd62d('0x43')]()['then'](function(){if(_0x1b4450[0x0]!=='2'||_0xf150a2['autoreplyExecuted'])return;return rpc[_0x2d2ed2+_0xd62d('0x44')][_0xd62d('0x45')](_0xf150a2['id'],{'autoreplyExecuted':!![]})[_0xd62d('0x3e')](function(_0x17d372){logger[_0xd62d('0x12')](_0xd62d('0x46'),_0x547173,JSON[_0xd62d('0x3f')](_0x17d372));})[_0xd62d('0x40')](function(_0x1c1210){logger[_0xd62d('0x47')](_0xd62d('0x48'),_0x547173,JSON[_0xd62d('0x3f')](_0x1c1210));});})[_0xd62d('0x3e')](function(){_0x3897f7['next']();});});}else{return rpc[this['channel']+_0xd62d('0x2b')][_0xd62d('0x3d')](_0x39fbca)['then'](function(_0x514ebb){logger[_0xd62d('0x12')](_0xd62d('0x13'),_0x547173,_0x39fbca[_0xd62d('0x11')]);})[_0xd62d('0x40')](function(_0x3ceafd){logger[_0xd62d('0x47')](_0xd62d('0x13'),_0x547173,JSON[_0xd62d('0x3f')](_0x3ceafd));})[_0xd62d('0x42')](function(){Promise['resolve']()[_0xd62d('0x3e')](function(){if(_0x1b4450[0x0]!=='2'||_0xf150a2[_0xd62d('0x19')])return;return rpc[_0x2d2ed2+_0xd62d('0x44')][_0xd62d('0x45')](_0xf150a2['id'],{'autoreplyExecuted':!![]})[_0xd62d('0x3e')](function(_0x23de99){logger[_0xd62d('0x12')](_0xd62d('0x46'),_0x547173,JSON[_0xd62d('0x3f')](_0x23de99));})[_0xd62d('0x40')](function(_0x5baf74){logger[_0xd62d('0x47')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x547173,JSON['stringify'](_0x5baf74));});})[_0xd62d('0x3e')](function(){_0x3897f7[_0xd62d('0x15')]();});});}}}catch(_0x471428){logger[_0xd62d('0x47')]('[%s][AUTOREPLY]\x20%s',_0x547173,JSON[_0xd62d('0x3f')](_0x471428));_0x3897f7['stop']();}};};
\ No newline at end of file
index 12ab61f..2c89c1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4b5=['info','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','interaction','catch','error','[%s][CLOSE]\x20%s','stringify','stop','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction'];(function(_0x37b3e5,_0x33b516){var _0x207f20=function(_0x5237fa){while(--_0x5237fa){_0x37b3e5['push'](_0x37b3e5['shift']());}};_0x207f20(++_0x33b516);}(_0xa4b5,0x1f3));var _0x5a4b=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa4b5[_0x4c7fb5];return _0x2e10ac;};'use strict';var moment=require('moment');var logger=require(_0x5a4b('0x0'))(_0x5a4b('0x1'));var rpc={'chatInteraction':require(_0x5a4b('0x2')),'openchannelInteraction':require(_0x5a4b('0x3')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x5a4b('0x4')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports['consequence']=function(_0x1ecb66,_0x915ee9,_0x27591f,_0x6235b){return function(_0xe3fd71){try{logger[_0x5a4b('0x5')]('[%s][CLOSE]\x20reason\x20%s',_0x1ecb66,_0x915ee9[0x0]);var _0xfe414f={'closed':0x1,'closedAt':moment()[_0x5a4b('0x6')](_0x5a4b('0x7')),'closeReason':_0x5a4b('0x8'),'disposition':_0x915ee9[0x0]};if(rpc[_0x6235b[_0x5a4b('0x9')]+_0x5a4b('0xa')]){rpc[_0x6235b['channel']+_0x5a4b('0xa')][_0x5a4b('0xb')](_0x6235b[_0x5a4b('0xc')]['id'],_0xfe414f)['then'](function(_0x43d268){logger[_0x5a4b('0x5')]('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0x1ecb66,_0x6235b['interaction']['id']);})[_0x5a4b('0xd')](function(_0x42096a){logger[_0x5a4b('0xe')](_0x5a4b('0xf'),_0x1ecb66,JSON[_0x5a4b('0x10')](_0x42096a));})['finally'](function(){_0xe3fd71[_0x5a4b('0x11')]();});}}catch(_0x477378){logger['error'](_0x5a4b('0xf'),_0x1ecb66,JSON[_0x5a4b('0x10')](_0x477378));_0xe3fd71[_0x5a4b('0x11')]();}};};
\ No newline at end of file
+var _0x4360=['../../rpc/whatsappInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','[%s][CLOSE]\x20%s','stringify','stop','moment','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction'];(function(_0x5910f5,_0x53b4c2){var _0x401c3e=function(_0x1e190f){while(--_0x1e190f){_0x5910f5['push'](_0x5910f5['shift']());}};_0x401c3e(++_0x53b4c2);}(_0x4360,0x10e));var _0x0436=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x4360[_0xbca1b1];return _0x4e1686;};'use strict';var moment=require(_0x0436('0x0'));var logger=require('../../../../config/logger')(_0x0436('0x1'));var rpc={'chatInteraction':require(_0x0436('0x2')),'openchannelInteraction':require(_0x0436('0x3')),'smsInteraction':require(_0x0436('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x0436('0x5')),'whatsappInteraction':require(_0x0436('0x6'))};exports[_0x0436('0x7')]=function(_0x2818e9,_0x23ae6c,_0x2e499d,_0x22a033){return function(_0x18ccbe){try{logger[_0x0436('0x8')](_0x0436('0x9'),_0x2818e9,_0x23ae6c[0x0]);var _0x579a0c={'closed':0x1,'closedAt':moment()[_0x0436('0xa')](_0x0436('0xb')),'closeReason':_0x0436('0xc'),'disposition':_0x23ae6c[0x0]};if(rpc[_0x22a033[_0x0436('0xd')]+_0x0436('0xe')]){rpc[_0x22a033[_0x0436('0xd')]+'Interaction']['update'](_0x22a033[_0x0436('0xf')]['id'],_0x579a0c)[_0x0436('0x10')](function(_0x382f55){logger[_0x0436('0x8')](_0x0436('0x11'),_0x2818e9,_0x22a033[_0x0436('0xf')]['id']);})[_0x0436('0x12')](function(_0x2ce4b6){logger[_0x0436('0x13')](_0x0436('0x14'),_0x2818e9,JSON['stringify'](_0x2ce4b6));})['finally'](function(){_0x18ccbe['stop']();});}}catch(_0x4306ff){logger[_0x0436('0x13')](_0x0436('0x14'),_0x2818e9,JSON[_0x0436('0x15')](_0x4306ff));_0x18ccbe[_0x0436('0x16')]();}};};
\ No newline at end of file
index b81e8a1..c8e82ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f27=['error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','dialogflow','result','fulfillment','speech','providerName','providerResponse','lodash','moment','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','consequence','isNil','interaction','UserId','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','phone','chat','ChatWebsiteId','upperFirst','AccountId','account','InteractionId','created','body','getMustacheRender','Message','create','then','info','catch'];(function(_0x12cdc5,_0x19454d){var _0x2eb7ee=function(_0x59175b){while(--_0x59175b){_0x12cdc5['push'](_0x12cdc5['shift']());}};_0x2eb7ee(++_0x19454d);}(_0x7f27,0x12e));var _0x77f2=function(_0x44a2e6,_0x500c2b){_0x44a2e6=_0x44a2e6-0x0;var _0x1553bb=_0x7f27[_0x44a2e6];return _0x1553bb;};'use strict';var _=require(_0x77f2('0x0'));var moment=require(_0x77f2('0x1'));var apiai=require('apiai-promise');var md5=require('md5');var utils=require(_0x77f2('0x2'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x77f2('0x3')),'openchannelMessage':require(_0x77f2('0x4')),'mailMessage':require(_0x77f2('0x5')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x77f2('0x6')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x77f2('0x7')]=function(_0xd68cb5,_0x5269e1){return function(_0x1c1228){try{if(!_[_0x77f2('0x8')](this[_0x77f2('0x9')][_0x77f2('0xa')])){logger['info'](_0x77f2('0xb'),_0xd68cb5,_0x77f2('0xc'));return _0x1c1228[_0x77f2('0xd')]();}var _0x24e730={'ContactId':this[_0x77f2('0xe')]['id'],'sentAt':moment()[_0x77f2('0xf')](_0x77f2('0x10')),'direction':_0x77f2('0x11')};if(this[_0x77f2('0x12')]==='sms'||this[_0x77f2('0x12')]==='whatsapp'){_0x24e730['phone']=this[_0x77f2('0x9')][_0x77f2('0x13')];}var _0x46d054=this[_0x77f2('0x12')];if(_0x46d054===_0x77f2('0x14')){_0x24e730[_0x77f2('0x15')]=this['account']['id'];}else{_0x24e730[_[_0x77f2('0x16')](_0x46d054)+_0x77f2('0x17')]=this[_0x77f2('0x18')]['id'];}_0x24e730[_[_0x77f2('0x16')](_0x46d054)+_0x77f2('0x19')]=this[_0x77f2('0x9')]['id'];if(this[_0x77f2('0x9')][_0x77f2('0x1a')]){var _0xd63885=_0x5269e1[0x2];if(!_['isEmpty'](_0xd63885)){_0x24e730[_0x77f2('0x1b')]=utils[_0x77f2('0x1c')](_0xd63885,this);return rpc[_0x46d054+_0x77f2('0x1d')][_0x77f2('0x1e')](_0x24e730)[_0x77f2('0x1f')](function(_0x4db73f){logger[_0x77f2('0x20')](_0x77f2('0xb'),_0xd68cb5,_0x24e730[_0x77f2('0x1b')]);})[_0x77f2('0x21')](function(_0xf0e0f){logger[_0x77f2('0x22')](_0x77f2('0xb'),_0xd68cb5,JSON[_0x77f2('0x23')](_0xf0e0f));})[_0x77f2('0x24')](function(){logger[_0x77f2('0x20')](_0x77f2('0x25'),_0xd68cb5);_0x1c1228[_0x77f2('0x26')]();});}else{logger[_0x77f2('0x20')](_0x77f2('0x27'),_0xd68cb5);_0x1c1228[_0x77f2('0x26')]();}}else{var _0x4a2599=this;var _0x3db6d2=apiai(_0x5269e1[0x0],{'language':_0x5269e1[0x1]||'en'});return _0x3db6d2[_0x77f2('0x28')](this[_0x77f2('0x29')][_0x77f2('0x1b')],{'sessionId':md5(this[_0x77f2('0x9')]['id'])})['then'](function(_0x2afa88){_0x4a2599[_0x77f2('0x1b')][_0x77f2('0x2a')]=_0x2afa88;_0x24e730[_0x77f2('0x1b')]=_0x2afa88[_0x77f2('0x2b')][_0x77f2('0x2c')][_0x77f2('0x2d')];_0x24e730[_0x77f2('0x2e')]='dialogflow';_0x24e730[_0x77f2('0x2f')]=JSON[_0x77f2('0x23')](_0x2afa88);return rpc[_0x46d054+_0x77f2('0x1d')][_0x77f2('0x1e')](_0x24e730)['then'](function(_0x404101){logger[_0x77f2('0x20')](_0x77f2('0xb'),_0xd68cb5,_0x24e730[_0x77f2('0x1b')]);if(_0x2afa88[_0x77f2('0x2b')]['metadata']['endConversation']){_0x1c1228['next']();}else{_0x1c1228[_0x77f2('0x26')]();}})['catch'](function(_0x325af6){logger[_0x77f2('0x22')](_0x77f2('0xb'),_0xd68cb5,JSON[_0x77f2('0x23')](_0x325af6));_0x1c1228['next']();});})['catch'](function(_0x1f89e5){logger['error'](_0x77f2('0xb'),_0xd68cb5,_0x1f89e5[_0x77f2('0x29')]);_0x1c1228[_0x77f2('0xd')]();});}}catch(_0x661fd0){logger[_0x77f2('0x22')](_0x77f2('0xb'),_0xd68cb5,JSON[_0x77f2('0x23')](_0x661fd0));_0x1c1228['stop']();}};};
\ No newline at end of file
+var _0x6ec2=['[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','then','result','fulfillment','speech','providerName','dialogflow','providerResponse','metadata','error','message','lodash','moment','apiai-promise','md5','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','interaction','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','phone','chat','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','created','isEmpty','body','Message','create','[%s][DIALOGFLOW]\x20%s','catch','stringify','finally'];(function(_0x15f724,_0x2794ef){var _0x49b152=function(_0x561b35){while(--_0x561b35){_0x15f724['push'](_0x15f724['shift']());}};_0x49b152(++_0x2794ef);}(_0x6ec2,0x78));var _0x26ec=function(_0x5c660a,_0x4b5262){_0x5c660a=_0x5c660a-0x0;var _0x3a77a4=_0x6ec2[_0x5c660a];return _0x3a77a4;};'use strict';var _=require(_0x26ec('0x0'));var moment=require(_0x26ec('0x1'));var apiai=require(_0x26ec('0x2'));var md5=require(_0x26ec('0x3'));var utils=require(_0x26ec('0x4'));var logger=require(_0x26ec('0x5'))('routing');var rpc={'chatMessage':require(_0x26ec('0x6')),'openchannelMessage':require(_0x26ec('0x7')),'mailMessage':require(_0x26ec('0x8')),'smsMessage':require(_0x26ec('0x9')),'faxMessage':require(_0x26ec('0xa')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x26ec('0xb')]=function(_0x4e8781,_0x4cadb0){return function(_0xf2cd1d){try{if(!_[_0x26ec('0xc')](this[_0x26ec('0xd')]['UserId'])){logger[_0x26ec('0xe')]('[%s][DIALOGFLOW]\x20%s',_0x4e8781,_0x26ec('0xf'));return _0xf2cd1d[_0x26ec('0x10')]();}var _0x26f0a6={'ContactId':this[_0x26ec('0x11')]['id'],'sentAt':moment()[_0x26ec('0x12')](_0x26ec('0x13')),'direction':_0x26ec('0x14')};if(this[_0x26ec('0x15')]===_0x26ec('0x16')||this[_0x26ec('0x15')]==='whatsapp'){_0x26f0a6['phone']=this[_0x26ec('0xd')][_0x26ec('0x17')];}var _0x1149fb=this[_0x26ec('0x15')];if(_0x1149fb===_0x26ec('0x18')){_0x26f0a6[_0x26ec('0x19')]=this[_0x26ec('0x1a')]['id'];}else{_0x26f0a6[_['upperFirst'](_0x1149fb)+_0x26ec('0x1b')]=this[_0x26ec('0x1a')]['id'];}_0x26f0a6[_[_0x26ec('0x1c')](_0x1149fb)+_0x26ec('0x1d')]=this['interaction']['id'];if(this['interaction'][_0x26ec('0x1e')]){var _0x127385=_0x4cadb0[0x2];if(!_[_0x26ec('0x1f')](_0x127385)){_0x26f0a6[_0x26ec('0x20')]=utils['getMustacheRender'](_0x127385,this);return rpc[_0x1149fb+_0x26ec('0x21')][_0x26ec('0x22')](_0x26f0a6)['then'](function(_0x5ef1e5){logger['info'](_0x26ec('0x23'),_0x4e8781,_0x26f0a6[_0x26ec('0x20')]);})[_0x26ec('0x24')](function(_0x4f6eb5){logger['error'](_0x26ec('0x23'),_0x4e8781,JSON[_0x26ec('0x25')](_0x4f6eb5));})[_0x26ec('0x26')](function(){logger[_0x26ec('0xe')](_0x26ec('0x27'),_0x4e8781);_0xf2cd1d[_0x26ec('0x28')]();});}else{logger['info'](_0x26ec('0x29'),_0x4e8781);_0xf2cd1d[_0x26ec('0x28')]();}}else{var _0x2a9e82=this;var _0x46f766=apiai(_0x4cadb0[0x0],{'language':_0x4cadb0[0x1]||'en'});return _0x46f766[_0x26ec('0x2a')](this['message']['body'],{'sessionId':md5(this[_0x26ec('0xd')]['id'])})[_0x26ec('0x2b')](function(_0x65aea3){_0x2a9e82['body']['dialogflow']=_0x65aea3;_0x26f0a6[_0x26ec('0x20')]=_0x65aea3[_0x26ec('0x2c')][_0x26ec('0x2d')][_0x26ec('0x2e')];_0x26f0a6[_0x26ec('0x2f')]=_0x26ec('0x30');_0x26f0a6[_0x26ec('0x31')]=JSON['stringify'](_0x65aea3);return rpc[_0x1149fb+'Message']['create'](_0x26f0a6)[_0x26ec('0x2b')](function(_0xddd5fc){logger[_0x26ec('0xe')](_0x26ec('0x23'),_0x4e8781,_0x26f0a6[_0x26ec('0x20')]);if(_0x65aea3[_0x26ec('0x2c')][_0x26ec('0x32')]['endConversation']){_0xf2cd1d[_0x26ec('0x10')]();}else{_0xf2cd1d['stop']();}})[_0x26ec('0x24')](function(_0x355c4e){logger['error'](_0x26ec('0x23'),_0x4e8781,JSON[_0x26ec('0x25')](_0x355c4e));_0xf2cd1d[_0x26ec('0x10')]();});})[_0x26ec('0x24')](function(_0x272c40){logger[_0x26ec('0x33')]('[%s][DIALOGFLOW]\x20%s',_0x4e8781,_0x272c40[_0x26ec('0x34')]);_0xf2cd1d['next']();});}}catch(_0x3d8b89){logger['error'](_0x26ec('0x23'),_0x4e8781,JSON[_0x26ec('0x25')](_0x3d8b89));_0xf2cd1d['stop']();}};};
\ No newline at end of file
index a2454a9..2c37571 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d3b=['fulfillmentText','push','all','next','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/whatsappMessage','clone','body','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','sms','whatsapp','phone','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','getMustacheRender','Message','create','then','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','detectIntent','length','queryResult','diagnosticInfo','fields','end_conversation','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','boolValue','DIALOGFLOWV2_INTENTNAME','intent','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','dialogflowV2','providerResponse'];(function(_0x513980,_0xdb33f1){var _0x5cbcfe=function(_0x49f94a){while(--_0x49f94a){_0x513980['push'](_0x513980['shift']());}};_0x5cbcfe(++_0xdb33f1);}(_0x7d3b,0x1d9));var _0xb7d3=function(_0x4fbd26,_0x1042dc){_0x4fbd26=_0x4fbd26-0x0;var _0xc0279e=_0x7d3b[_0x4fbd26];return _0xc0279e;};'use strict';var _=require('lodash');var dialogflow=require('dialogflow');var md5=require('md5');var moment=require(_0xb7d3('0x0'));var Promise=require(_0xb7d3('0x1'));var logger=require(_0xb7d3('0x2'))(_0xb7d3('0x3'));var utils=require(_0xb7d3('0x4'));var rpc={'chatMessage':require(_0xb7d3('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xb7d3('0x6'))};function createMessage(_0xb0bbac,_0x3d2784,_0x8a2a73,_0x256ff8){return new Promise(function(_0x505e0b,_0x271cd7){var _0x23acd8=_[_0xb7d3('0x7')](_0x8a2a73);_0x23acd8[_0xb7d3('0x8')]=_0x256ff8;return rpc[_0x3d2784+'Message']['create'](_0x23acd8)['then'](function(){logger[_0xb7d3('0x9')](_0xb7d3('0xa'),_0xb0bbac,_0x23acd8[_0xb7d3('0x8')]);_0x505e0b();})[_0xb7d3('0xb')](function(_0x924d33){logger[_0xb7d3('0xc')](_0xb7d3('0xa'),_0xb0bbac,JSON[_0xb7d3('0xd')](_0x924d33));_0x271cd7(_0x924d33);});});}exports['consequence']=function(_0x14950f,_0x21b7d1){return function(_0x13237d){try{if(!_['isNil'](this[_0xb7d3('0xe')][_0xb7d3('0xf')])){logger[_0xb7d3('0x9')](_0xb7d3('0xa'),_0x14950f,_0xb7d3('0x10'));return _0x13237d['next']();}var _0xfbfd0a={'ContactId':this[_0xb7d3('0x11')]['id'],'sentAt':moment()[_0xb7d3('0x12')](_0xb7d3('0x13')),'direction':'out'};if(this[_0xb7d3('0x14')]===_0xb7d3('0x15')||this[_0xb7d3('0x14')]===_0xb7d3('0x16')){_0xfbfd0a[_0xb7d3('0x17')]=this[_0xb7d3('0xe')][_0xb7d3('0x17')];}var _0x109863=this[_0xb7d3('0x14')];if(_0x109863==='chat'){_0xfbfd0a[_0xb7d3('0x18')]=this[_0xb7d3('0x19')]['id'];}else{_0xfbfd0a[_[_0xb7d3('0x1a')](_0x109863)+_0xb7d3('0x1b')]=this[_0xb7d3('0x19')]['id'];}_0xfbfd0a[_[_0xb7d3('0x1a')](_0x109863)+_0xb7d3('0x1c')]=this[_0xb7d3('0xe')]['id'];if(this[_0xb7d3('0xe')][_0xb7d3('0x1d')]){var _0x3dcf1a=_0x21b7d1[0x4];if(!_['isEmpty'](_0x3dcf1a)){_0xfbfd0a[_0xb7d3('0x8')]=utils[_0xb7d3('0x1e')](_0x3dcf1a,this);return rpc[_0x109863+_0xb7d3('0x1f')][_0xb7d3('0x20')](_0xfbfd0a)[_0xb7d3('0x21')](function(_0x5a85f5){logger[_0xb7d3('0x9')](_0xb7d3('0xa'),_0x14950f,_0xfbfd0a[_0xb7d3('0x8')]);})[_0xb7d3('0xb')](function(_0x2dcf3e){logger[_0xb7d3('0xc')](_0xb7d3('0xa'),_0x14950f,JSON[_0xb7d3('0xd')](_0x2dcf3e));})['finally'](function(){logger[_0xb7d3('0x9')](_0xb7d3('0x22'),_0x14950f);_0x13237d[_0xb7d3('0x23')]();});}else{logger[_0xb7d3('0x9')](_0xb7d3('0x24'),_0x14950f);_0x13237d['stop']();}}else{var _0x522c41=this;var _0x1f579c=_0x21b7d1[0x2][_0xb7d3('0x25')](/\\n/g,'\x0a');var _0x1be879={'credentials':{'private_key':_0x1f579c,'client_email':_0x21b7d1[0x1]}};var _0x47849c=new dialogflow[(_0xb7d3('0x26'))](_0x1be879);var _0x1c2aa6=_0x47849c[_0xb7d3('0x27')](_0x21b7d1[0x0],md5(_0x522c41[_0xb7d3('0xe')]['id']));var _0x563ca4={'session':_0x1c2aa6,'queryInput':{'text':{'text':_0x522c41[_0xb7d3('0x28')]['body'],'languageCode':_0x21b7d1[0x3]||'en'}}};return _0x47849c[_0xb7d3('0x29')](_0x563ca4)[_0xb7d3('0x21')](function(_0x3e3a9f){if(_0x3e3a9f&&_0x3e3a9f[_0xb7d3('0x2a')]){_0x522c41[_0xb7d3('0x8')]['dialogflowV2']=_0x3e3a9f;var _0xb42a72=_0x3e3a9f[0x0];var _0x14763e=_0xb42a72[_0xb7d3('0x2b')]['diagnosticInfo']&&_0xb42a72['queryResult'][_0xb7d3('0x2c')][_0xb7d3('0x2d')]?_0xb42a72[_0xb7d3('0x2b')][_0xb7d3('0x2c')]['fields'][_0xb7d3('0x2e')]['boolValue']:![];_0x522c41['body'][_0xb7d3('0x2f')]=_0xb42a72[_0xb7d3('0x2b')][_0xb7d3('0x30')];_0x522c41['body'][_0xb7d3('0x31')]=_0xb42a72[_0xb7d3('0x2b')][_0xb7d3('0x32')];_0x522c41[_0xb7d3('0x8')][_0xb7d3('0x33')]=_0xb42a72[_0xb7d3('0x2b')][_0xb7d3('0x2c')]&&_0xb42a72[_0xb7d3('0x2b')]['diagnosticInfo'][_0xb7d3('0x2d')]?_0xb42a72[_0xb7d3('0x2b')][_0xb7d3('0x2c')]['fields']['end_conversation'][_0xb7d3('0x34')]:![];_0x522c41['body'][_0xb7d3('0x35')]=_0xb42a72[_0xb7d3('0x2b')][_0xb7d3('0x36')]['name'];_0x522c41[_0xb7d3('0x8')][_0xb7d3('0x37')]=_0xb42a72['queryResult'][_0xb7d3('0x36')][_0xb7d3('0x38')];_0x522c41[_0xb7d3('0x8')][_0xb7d3('0x39')]=_0xb42a72[_0xb7d3('0x2b')][_0xb7d3('0x36')][_0xb7d3('0x3a')];_0x522c41[_0xb7d3('0x8')][_0xb7d3('0x3b')]=_0xb42a72[_0xb7d3('0x2b')][_0xb7d3('0x3c')];_0x522c41['body']['DIALOGFLOWV2_QUERYTEXT']=_0xb42a72[_0xb7d3('0x2b')]['queryText'];_0x522c41[_0xb7d3('0x8')]['DIALOGFLOWV2_SCORE']=_0xb42a72[_0xb7d3('0x2b')]['intentDetectionConfidence'];_0xfbfd0a['providerName']=_0xb7d3('0x3d');_0xfbfd0a[_0xb7d3('0x3e')]=JSON[_0xb7d3('0xd')](_0x3e3a9f);var _0x2c7c47=[];for(var _0x2d1546=0x0;_0x2d1546<_0x3e3a9f[_0xb7d3('0x2a')];_0x2d1546++){var _0x54dcca=_0x3e3a9f[_0x2d1546];if(_0x54dcca&&_0x54dcca[_0xb7d3('0x2b')]&&_0x54dcca[_0xb7d3('0x2b')][_0xb7d3('0x3f')]){_0x2c7c47[_0xb7d3('0x40')](createMessage(_0x14950f,_0x109863,_0xfbfd0a,_0x54dcca[_0xb7d3('0x2b')][_0xb7d3('0x3f')]));}}return Promise[_0xb7d3('0x41')](_0x2c7c47)['then'](function(){if(_0x14763e){_0x13237d[_0xb7d3('0x42')]();}else{_0x13237d[_0xb7d3('0x23')]();}})[_0xb7d3('0xb')](function(_0x46e1ce){logger[_0xb7d3('0xc')](_0xb7d3('0xa'),_0x14950f,JSON[_0xb7d3('0xd')](_0x46e1ce));_0x13237d['next']();});}})[_0xb7d3('0xb')](function(_0x20f8b1){logger[_0xb7d3('0xc')](_0xb7d3('0xa'),_0x14950f,_0x20f8b1[_0xb7d3('0x28')]);_0x13237d[_0xb7d3('0x42')]();});}}catch(_0x95d3a4){logger[_0xb7d3('0xc')](_0xb7d3('0xa'),_0x14950f,JSON[_0xb7d3('0xd')](_0x95d3a4));_0x13237d[_0xb7d3('0x23')]();}};};
\ No newline at end of file
+var _0x89af=['stringify','interaction','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','upperFirst','AccountId','account','created','isEmpty','getMustacheRender','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','SessionsClient','sessionPath','message','detectIntent','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ENDCONVERSATION','intent','name','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','languageCode','DIALOGFLOWV2_QUERYTEXT','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','fulfillmentText','push','dialogflow','md5','moment','bluebird','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','clone','body','Message','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error'];(function(_0x4bed32,_0x55591c){var _0x246bbe=function(_0x32752f){while(--_0x32752f){_0x4bed32['push'](_0x4bed32['shift']());}};_0x246bbe(++_0x55591c);}(_0x89af,0xf9));var _0xf89a=function(_0x4d7205,_0x38976d){_0x4d7205=_0x4d7205-0x0;var _0x57eafa=_0x89af[_0x4d7205];return _0x57eafa;};'use strict';var _=require('lodash');var dialogflow=require(_0xf89a('0x0'));var md5=require(_0xf89a('0x1'));var moment=require(_0xf89a('0x2'));var Promise=require(_0xf89a('0x3'));var logger=require('../../../../config/logger')(_0xf89a('0x4'));var utils=require(_0xf89a('0x5'));var rpc={'chatMessage':require(_0xf89a('0x6')),'openchannelMessage':require(_0xf89a('0x7')),'mailMessage':require(_0xf89a('0x8')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xf89a('0x9')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x2928f8,_0x460eb5,_0x3640d8,_0x23b84e){return new Promise(function(_0x3686d6,_0x9b23e7){var _0x2da85e=_[_0xf89a('0xa')](_0x3640d8);_0x2da85e[_0xf89a('0xb')]=_0x23b84e;return rpc[_0x460eb5+_0xf89a('0xc')][_0xf89a('0xd')](_0x2da85e)[_0xf89a('0xe')](function(){logger[_0xf89a('0xf')](_0xf89a('0x10'),_0x2928f8,_0x2da85e[_0xf89a('0xb')]);_0x3686d6();})[_0xf89a('0x11')](function(_0x160f08){logger[_0xf89a('0x12')](_0xf89a('0x10'),_0x2928f8,JSON[_0xf89a('0x13')](_0x160f08));_0x9b23e7(_0x160f08);});});}exports['consequence']=function(_0x4959c9,_0x13591e){return function(_0x42bc99){try{if(!_['isNil'](this[_0xf89a('0x14')]['UserId'])){logger['info'](_0xf89a('0x10'),_0x4959c9,_0xf89a('0x15'));return _0x42bc99[_0xf89a('0x16')]();}var _0x51e3b8={'ContactId':this[_0xf89a('0x17')]['id'],'sentAt':moment()[_0xf89a('0x18')](_0xf89a('0x19')),'direction':_0xf89a('0x1a')};if(this[_0xf89a('0x1b')]===_0xf89a('0x1c')||this[_0xf89a('0x1b')]===_0xf89a('0x1d')){_0x51e3b8['phone']=this['interaction'][_0xf89a('0x1e')];}var _0x4ca767=this[_0xf89a('0x1b')];if(_0x4ca767===_0xf89a('0x1f')){_0x51e3b8[_0xf89a('0x20')]=this['account']['id'];}else{_0x51e3b8[_[_0xf89a('0x21')](_0x4ca767)+_0xf89a('0x22')]=this[_0xf89a('0x23')]['id'];}_0x51e3b8[_['upperFirst'](_0x4ca767)+'InteractionId']=this[_0xf89a('0x14')]['id'];if(this[_0xf89a('0x14')][_0xf89a('0x24')]){var _0x1f8cad=_0x13591e[0x4];if(!_[_0xf89a('0x25')](_0x1f8cad)){_0x51e3b8[_0xf89a('0xb')]=utils[_0xf89a('0x26')](_0x1f8cad,this);return rpc[_0x4ca767+_0xf89a('0xc')][_0xf89a('0xd')](_0x51e3b8)[_0xf89a('0xe')](function(_0x52b2e7){logger[_0xf89a('0xf')](_0xf89a('0x10'),_0x4959c9,_0x51e3b8[_0xf89a('0xb')]);})['catch'](function(_0x198ee6){logger[_0xf89a('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0x4959c9,JSON['stringify'](_0x198ee6));})[_0xf89a('0x27')](function(){logger[_0xf89a('0xf')](_0xf89a('0x28'),_0x4959c9);_0x42bc99[_0xf89a('0x29')]();});}else{logger[_0xf89a('0xf')](_0xf89a('0x2a'),_0x4959c9);_0x42bc99[_0xf89a('0x29')]();}}else{var _0x5cfe5a=this;var _0x3958df=_0x13591e[0x2]['replace'](/\\n/g,'\x0a');var _0x777d1={'credentials':{'private_key':_0x3958df,'client_email':_0x13591e[0x1]}};var _0x4913fa=new dialogflow[(_0xf89a('0x2b'))](_0x777d1);var _0x156fb0=_0x4913fa[_0xf89a('0x2c')](_0x13591e[0x0],md5(_0x5cfe5a[_0xf89a('0x14')]['id']));var _0x538c3a={'session':_0x156fb0,'queryInput':{'text':{'text':_0x5cfe5a[_0xf89a('0x2d')]['body'],'languageCode':_0x13591e[0x3]||'en'}}};return _0x4913fa[_0xf89a('0x2e')](_0x538c3a)[_0xf89a('0xe')](function(_0x7bab62){if(_0x7bab62&&_0x7bab62['length']){_0x5cfe5a['body'][_0xf89a('0x2f')]=_0x7bab62;var _0x279676=_0x7bab62[0x0];var _0x1bccbd=_0x279676[_0xf89a('0x30')]['diagnosticInfo']&&_0x279676['queryResult'][_0xf89a('0x31')]['fields']?_0x279676[_0xf89a('0x30')][_0xf89a('0x31')][_0xf89a('0x32')][_0xf89a('0x33')][_0xf89a('0x34')]:![];_0x5cfe5a['body'][_0xf89a('0x35')]=_0x279676[_0xf89a('0x30')]['action'];_0x5cfe5a[_0xf89a('0xb')]['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT']=_0x279676['queryResult']['allRequiredParamsPresent'];_0x5cfe5a[_0xf89a('0xb')][_0xf89a('0x36')]=_0x279676[_0xf89a('0x30')][_0xf89a('0x31')]&&_0x279676[_0xf89a('0x30')][_0xf89a('0x31')][_0xf89a('0x32')]?_0x279676['queryResult'][_0xf89a('0x31')]['fields']['end_conversation'][_0xf89a('0x34')]:![];_0x5cfe5a[_0xf89a('0xb')]['DIALOGFLOWV2_INTENTNAME']=_0x279676['queryResult'][_0xf89a('0x37')][_0xf89a('0x38')];_0x5cfe5a[_0xf89a('0xb')]['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x279676[_0xf89a('0x30')][_0xf89a('0x37')][_0xf89a('0x39')];_0x5cfe5a[_0xf89a('0xb')][_0xf89a('0x3a')]=_0x279676[_0xf89a('0x30')][_0xf89a('0x37')][_0xf89a('0x3b')];_0x5cfe5a['body']['DIALOGFLOWV2_LANGUAGECODE']=_0x279676[_0xf89a('0x30')][_0xf89a('0x3c')];_0x5cfe5a['body'][_0xf89a('0x3d')]=_0x279676[_0xf89a('0x30')]['queryText'];_0x5cfe5a[_0xf89a('0xb')][_0xf89a('0x3e')]=_0x279676['queryResult'][_0xf89a('0x3f')];_0x51e3b8[_0xf89a('0x40')]='dialogflowV2';_0x51e3b8['providerResponse']=JSON[_0xf89a('0x13')](_0x7bab62);var _0x788396=[];for(var _0x413cc7=0x0;_0x413cc7<_0x7bab62['length'];_0x413cc7++){var _0x5e9914=_0x7bab62[_0x413cc7];if(_0x5e9914&&_0x5e9914[_0xf89a('0x30')]&&_0x5e9914[_0xf89a('0x30')][_0xf89a('0x41')]){_0x788396[_0xf89a('0x42')](createMessage(_0x4959c9,_0x4ca767,_0x51e3b8,_0x5e9914[_0xf89a('0x30')][_0xf89a('0x41')]));}}return Promise['all'](_0x788396)[_0xf89a('0xe')](function(){if(_0x1bccbd){_0x42bc99['next']();}else{_0x42bc99[_0xf89a('0x29')]();}})[_0xf89a('0x11')](function(_0xc80882){logger[_0xf89a('0x12')](_0xf89a('0x10'),_0x4959c9,JSON[_0xf89a('0x13')](_0xc80882));_0x42bc99[_0xf89a('0x16')]();});}})[_0xf89a('0x11')](function(_0x4e3ea9){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x4959c9,_0x4e3ea9[_0xf89a('0x2d')]);_0x42bc99[_0xf89a('0x16')]();});}}catch(_0x430f6d){logger[_0xf89a('0x12')](_0xf89a('0x10'),_0x4959c9,JSON[_0xf89a('0x13')](_0x430f6d));_0x42bc99[_0xf89a('0x29')]();}};};
\ No newline at end of file
index f35650c..e8e55cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1600=['../../../../config/logger','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20false\x20is\x20a\x20number','consequence','getMustacheRender','replace','length','message','stop','condition','priorityTrue','priorityFalse','info','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20%s','stringify','validate','lodash','html-to-text','./utils'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0x1600,0x176));var _0x0160=function(_0x2baadb,_0x2ed853){_0x2baadb=_0x2baadb-0x0;var _0x91cc96=_0x1600[_0x2baadb];return _0x91cc96;};'use strict';var schema=require(_0x0160('0x0'));var _=require(_0x0160('0x1'));var htmlToText=require(_0x0160('0x2'));var utils=require(_0x0160('0x3'));var logger=require(_0x0160('0x4'))(_0x0160('0x5'));var gotoif=schema({'condition':{'type':_0x0160('0x6'),'required':!![],'message':_0x0160('0x7')},'priorityTrue':{'type':_0x0160('0x8'),'message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':_0x0160('0x8'),'message':_0x0160('0x9')}});exports[_0x0160('0xa')]=function(_0x56c634,_0x132e78){return function(_0x1a6994){try{var _0x482a67={'condition':htmlToText['fromString'](utils[_0x0160('0xb')](_0x132e78[0x0],this),{'wordwrap':![]})[_0x0160('0xc')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x132e78[0x1],'priorityFalse':_0x132e78[0x2]};var _0x843f0e=gotoif['validate'](_0x482a67,{'typecast':!![]});if(_0x843f0e[_0x0160('0xd')]){logger['error']('[%s][GOTOIF]\x20%s',_0x56c634,_['map'](_0x843f0e,_0x0160('0xe'))['join'](',\x20'));_0x1a6994[_0x0160('0xf')]();}else{try{var _0xe43428=eval('('+_0x482a67[_0x0160('0x10')]+')');var _0x52e867=_0xe43428?_0x482a67[_0x0160('0x11')]:_0x482a67[_0x0160('0x12')];logger[_0x0160('0x13')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x56c634,_0x482a67[_0x0160('0x10')],_0xe43428,_0x52e867||_0x0160('0x14'));if(_0x52e867){var _0x2fccc7=_[_0x0160('0x15')](_0x1a6994[_0x0160('0x16')](),{'p':_0x52e867});if(_0x2fccc7>=0x0){logger[_0x0160('0x13')](_0x0160('0x17'),_0x56c634,_0x52e867||'next',_0x2fccc7);_0x1a6994['next'](_0x2fccc7);}else{logger['info'](_0x0160('0x18'),_0x56c634,_0x52e867||'next');_0x1a6994['stop']();}}else{_0x1a6994[_0x0160('0x14')]();}}catch(_0x25d6df){logger['error']('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x56c634,_0x25d6df[_0x0160('0xe')]);_0x1a6994[_0x0160('0xf')]();}}}catch(_0x36c5f4){logger['error'](_0x0160('0x19'),_0x56c634,JSON[_0x0160('0x1a')](_0x36c5f4));_0x1a6994[_0x0160('0xf')]();}};};
\ No newline at end of file
+var _0xc923=['priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','stop','[%s][GOTOIF]\x20eval\x20error:\x20%s','message','[%s][GOTOIF]\x20%s','stringify','validate','lodash','html-to-text','../../../../config/logger','routing','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','fromString','getMustacheRender','length','error','map','join','condition'];(function(_0x47dbd5,_0x5c3019){var _0x2ba9b6=function(_0x4245ce){while(--_0x4245ce){_0x47dbd5['push'](_0x47dbd5['shift']());}};_0x2ba9b6(++_0x5c3019);}(_0xc923,0x14c));var _0x3c92=function(_0x39e5da,_0x23da9a){_0x39e5da=_0x39e5da-0x0;var _0x4b060f=_0xc923[_0x39e5da];return _0x4b060f;};'use strict';var schema=require(_0x3c92('0x0'));var _=require(_0x3c92('0x1'));var htmlToText=require(_0x3c92('0x2'));var utils=require('./utils');var logger=require(_0x3c92('0x3'))(_0x3c92('0x4'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0x3c92('0x5')},'priorityTrue':{'type':_0x3c92('0x6'),'message':_0x3c92('0x7')},'priorityFalse':{'type':_0x3c92('0x6'),'message':_0x3c92('0x8')}});exports['consequence']=function(_0x1367dd,_0x4c5d17){return function(_0x245571){try{var _0x59ae60={'condition':htmlToText[_0x3c92('0x9')](utils[_0x3c92('0xa')](_0x4c5d17[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x4c5d17[0x1],'priorityFalse':_0x4c5d17[0x2]};var _0x4080bc=gotoif[_0x3c92('0x0')](_0x59ae60,{'typecast':!![]});if(_0x4080bc[_0x3c92('0xb')]){logger[_0x3c92('0xc')]('[%s][GOTOIF]\x20%s',_0x1367dd,_[_0x3c92('0xd')](_0x4080bc,'message')[_0x3c92('0xe')](',\x20'));_0x245571['stop']();}else{try{var _0x197754=eval('('+_0x59ae60[_0x3c92('0xf')]+')');var _0x1c9f76=_0x197754?_0x59ae60['priorityTrue']:_0x59ae60[_0x3c92('0x10')];logger[_0x3c92('0x11')](_0x3c92('0x12'),_0x1367dd,_0x59ae60[_0x3c92('0xf')],_0x197754,_0x1c9f76||_0x3c92('0x13'));if(_0x1c9f76){var _0x421cef=_[_0x3c92('0x14')](_0x245571[_0x3c92('0x15')](),{'p':_0x1c9f76});if(_0x421cef>=0x0){logger[_0x3c92('0x11')](_0x3c92('0x16'),_0x1367dd,_0x1c9f76||_0x3c92('0x13'),_0x421cef);_0x245571[_0x3c92('0x13')](_0x421cef);}else{logger[_0x3c92('0x11')](_0x3c92('0x17'),_0x1367dd,_0x1c9f76||_0x3c92('0x13'));_0x245571[_0x3c92('0x18')]();}}else{_0x245571['next']();}}catch(_0x10f5a1){logger[_0x3c92('0xc')](_0x3c92('0x19'),_0x1367dd,_0x10f5a1[_0x3c92('0x1a')]);_0x245571['stop']();}}}catch(_0xc33d9b){logger[_0x3c92('0xc')](_0x3c92('0x1b'),_0x1367dd,JSON[_0x3c92('0x1c')](_0xc33d9b));_0x245571['stop']();}};};
\ No newline at end of file
index 618bbac..e457ed1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8374=['length','error','[%s][GOTOP]\x20%s','join','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','validate','lodash','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x8374,0x15c));var _0x4837=function(_0x4113d8,_0x3e481c){_0x4113d8=_0x4113d8-0x0;var _0x190584=_0x8374[_0x4113d8];return _0x190584;};'use strict';var schema=require(_0x4837('0x0'));var _=require(_0x4837('0x1'));var logger=require('../../../../config/logger')(_0x4837('0x2'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0x4837('0x3')}});exports['consequence']=function(_0x2f212d,_0x118e13){return function(_0x1cc15e){try{var _0x91fdab={'priority':_0x118e13[0x0]};var _0x4ddf51=gotop[_0x4837('0x0')](_0x91fdab,{'typecast':!![]});if(_0x4ddf51[_0x4837('0x4')]){logger[_0x4837('0x5')](_0x4837('0x6'),_0x2f212d,_['map'](_0x4ddf51,'message')[_0x4837('0x7')](',\x20'));_0x1cc15e[_0x4837('0x8')]();}else{logger[_0x4837('0x9')](_0x4837('0xa'),_0x2f212d,_0x91fdab[_0x4837('0xb')]);if(_0x91fdab[_0x4837('0xb')]){var _0x2a6003=_[_0x4837('0xc')](_0x1cc15e[_0x4837('0xd')](),{'p':_0x91fdab[_0x4837('0xb')]});if(_0x2a6003>=0x0){logger[_0x4837('0x9')]('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x2f212d,_0x91fdab['priority']||_0x4837('0xe'),_0x2a6003);_0x1cc15e[_0x4837('0xe')](_0x2a6003);}else{logger[_0x4837('0x9')](_0x4837('0xf'),_0x2f212d,_0x91fdab[_0x4837('0xb')]||_0x4837('0xe'));_0x1cc15e[_0x4837('0x8')]();}}else{_0x1cc15e[_0x4837('0xe')]();}}}catch(_0x4617bb){logger[_0x4837('0x5')]('[%s][GOTOP]\x20%s',_0x2f212d,JSON['stringify'](_0x4617bb));_0x1cc15e[_0x4837('0x8')]();}};};
\ No newline at end of file
+var _0xbeb6=['stringify','validate','lodash','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','[%s][GOTOP]\x20%s','map','join','stop','[%s][GOTOP]\x20priority\x20%s','priority','rules','info','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','error'];(function(_0x1b52f2,_0x3fa780){var _0xe12880=function(_0x22f001){while(--_0x22f001){_0x1b52f2['push'](_0x1b52f2['shift']());}};_0xe12880(++_0x3fa780);}(_0xbeb6,0x1cf));var _0x6beb=function(_0x40643a,_0xd85b31){_0x40643a=_0x40643a-0x0;var _0x10f238=_0xbeb6[_0x40643a];return _0x10f238;};'use strict';var schema=require(_0x6beb('0x0'));var _=require(_0x6beb('0x1'));var logger=require(_0x6beb('0x2'))(_0x6beb('0x3'));var gotop=schema({'priority':{'type':_0x6beb('0x4'),'required':!![],'message':_0x6beb('0x5')}});exports[_0x6beb('0x6')]=function(_0x4ba6db,_0x4ce9e3){return function(_0x50c51c){try{var _0x94f9f5={'priority':_0x4ce9e3[0x0]};var _0x5b3419=gotop[_0x6beb('0x0')](_0x94f9f5,{'typecast':!![]});if(_0x5b3419[_0x6beb('0x7')]){logger['error'](_0x6beb('0x8'),_0x4ba6db,_[_0x6beb('0x9')](_0x5b3419,'message')[_0x6beb('0xa')](',\x20'));_0x50c51c[_0x6beb('0xb')]();}else{logger['info'](_0x6beb('0xc'),_0x4ba6db,_0x94f9f5[_0x6beb('0xd')]);if(_0x94f9f5['priority']){var _0x53cf76=_['findIndex'](_0x50c51c[_0x6beb('0xe')](),{'p':_0x94f9f5[_0x6beb('0xd')]});if(_0x53cf76>=0x0){logger[_0x6beb('0xf')](_0x6beb('0x10'),_0x4ba6db,_0x94f9f5['priority']||_0x6beb('0x11'),_0x53cf76);_0x50c51c[_0x6beb('0x11')](_0x53cf76);}else{logger[_0x6beb('0xf')](_0x6beb('0x12'),_0x4ba6db,_0x94f9f5[_0x6beb('0xd')]||_0x6beb('0x11'));_0x50c51c[_0x6beb('0xb')]();}}else{_0x50c51c[_0x6beb('0x11')]();}}}catch(_0x9bf6fa){logger[_0x6beb('0x13')](_0x6beb('0x8'),_0x4ba6db,JSON[_0x6beb('0x14')](_0x9bf6fa));_0x50c51c[_0x6beb('0xb')]();}};};
\ No newline at end of file
index 71cdd32..928fa1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe890=['../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','channel','chat','account','upperFirst','AccountId','InteractionId','interaction','create','then','info','catch','error','[%s][MESSAGE]\x20%s','stringify','stop','../../../../config/logger','routing','../../rpc/chatMessage'];(function(_0x3a9637,_0x51f973){var _0xf32cc9=function(_0x4a2467){while(--_0x4a2467){_0x3a9637['push'](_0x3a9637['shift']());}};_0xf32cc9(++_0x51f973);}(_0xe890,0x1a6));var _0x0e89=function(_0x279533,_0x1e414f){_0x279533=_0x279533-0x0;var _0x4f908b=_0xe890[_0x279533];return _0x4f908b;};'use strict';var _=require('lodash');var utils=require('./utils');var logger=require(_0x0e89('0x0'))(_0x0e89('0x1'));var rpc={'chatMessage':require(_0x0e89('0x2')),'openchannelMessage':require(_0x0e89('0x3')),'mailMessage':require(_0x0e89('0x4')),'smsMessage':require(_0x0e89('0x5')),'faxMessage':require(_0x0e89('0x6')),'whatsappMessage':require(_0x0e89('0x7'))};exports[_0x0e89('0x8')]=function(_0x361901,_0x563a51){return function(_0x58f553){try{var _0x38ef9d={'body':utils[_0x0e89('0x9')](_0x563a51[0x0],this),'ContactId':this['contact']['id']};if(this[_0x0e89('0xa')]===_0x0e89('0xb')){_0x38ef9d['ChatWebsiteId']=this[_0x0e89('0xc')]['id'];}else{_0x38ef9d[_[_0x0e89('0xd')](this[_0x0e89('0xa')])+_0x0e89('0xe')]=this[_0x0e89('0xc')]['id'];}_0x38ef9d[_[_0x0e89('0xd')](this[_0x0e89('0xa')])+_0x0e89('0xf')]=this[_0x0e89('0x10')]['id'];if(rpc[this['channel']+'Message']){return rpc[this['channel']+'Message'][_0x0e89('0x11')](_0x38ef9d)[_0x0e89('0x12')](function(_0x3447cb){logger[_0x0e89('0x13')]('[%s][MESSAGE]\x20%s',_0x361901,_0x38ef9d['body']);_0x58f553['next']();})[_0x0e89('0x14')](function(_0x28b23c){logger[_0x0e89('0x15')](_0x0e89('0x16'),_0x361901,JSON[_0x0e89('0x17')](_0x28b23c));_0x58f553[_0x0e89('0x18')]();});}}catch(_0x167c7b){logger[_0x0e89('0x15')](_0x0e89('0x16'),_0x361901,JSON[_0x0e89('0x17')](_0x167c7b));_0x58f553[_0x0e89('0x18')]();}};};
\ No newline at end of file
+var _0x263f=['then','info','[%s][MESSAGE]\x20%s','body','next','stringify','stop','error','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','getMustacheRender','contact','channel','chat','account','upperFirst','AccountId','interaction','Message','create'];(function(_0x21e2b6,_0x35caf6){var _0x2f8e47=function(_0x5ab9f0){while(--_0x5ab9f0){_0x21e2b6['push'](_0x21e2b6['shift']());}};_0x2f8e47(++_0x35caf6);}(_0x263f,0x182));var _0xf263=function(_0x589326,_0x1e9170){_0x589326=_0x589326-0x0;var _0x47864e=_0x263f[_0x589326];return _0x47864e;};'use strict';var _=require(_0xf263('0x0'));var utils=require(_0xf263('0x1'));var logger=require(_0xf263('0x2'))(_0xf263('0x3'));var rpc={'chatMessage':require(_0xf263('0x4')),'openchannelMessage':require(_0xf263('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xf263('0x6')),'faxMessage':require(_0xf263('0x7')),'whatsappMessage':require(_0xf263('0x8'))};exports['consequence']=function(_0xbd1369,_0xdb2fc1){return function(_0x4c7ab2){try{var _0x4fded6={'body':utils[_0xf263('0x9')](_0xdb2fc1[0x0],this),'ContactId':this[_0xf263('0xa')]['id']};if(this[_0xf263('0xb')]===_0xf263('0xc')){_0x4fded6['ChatWebsiteId']=this[_0xf263('0xd')]['id'];}else{_0x4fded6[_[_0xf263('0xe')](this[_0xf263('0xb')])+_0xf263('0xf')]=this[_0xf263('0xd')]['id'];}_0x4fded6[_[_0xf263('0xe')](this[_0xf263('0xb')])+'InteractionId']=this[_0xf263('0x10')]['id'];if(rpc[this['channel']+_0xf263('0x11')]){return rpc[this['channel']+'Message'][_0xf263('0x12')](_0x4fded6)[_0xf263('0x13')](function(_0x17471d){logger[_0xf263('0x14')](_0xf263('0x15'),_0xbd1369,_0x4fded6[_0xf263('0x16')]);_0x4c7ab2[_0xf263('0x17')]();})['catch'](function(_0x2f40d8){logger['error'](_0xf263('0x15'),_0xbd1369,JSON[_0xf263('0x18')](_0x2f40d8));_0x4c7ab2[_0xf263('0x19')]();});}}catch(_0x402739){logger[_0xf263('0x1a')](_0xf263('0x15'),_0xbd1369,JSON[_0xf263('0x18')](_0x402739));_0x4c7ab2['stop']();}};};
\ No newline at end of file
index 4cce32c..cc55532 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe897=['stop','./utils','routing','consequence','info','[%s][NOOP]\x20%s','getMustacheRender','next','stringify'];(function(_0x132399,_0x1c4b0f){var _0x2a27e9=function(_0x4eac3b){while(--_0x4eac3b){_0x132399['push'](_0x132399['shift']());}};_0x2a27e9(++_0x1c4b0f);}(_0xe897,0x133));var _0x7e89=function(_0x771cb6,_0x4083ce){_0x771cb6=_0x771cb6-0x0;var _0x3ea4cd=_0xe897[_0x771cb6];return _0x3ea4cd;};'use strict';var utils=require(_0x7e89('0x0'));var logger=require('../../../../config/logger')(_0x7e89('0x1'));exports[_0x7e89('0x2')]=function(_0xfef76c,_0x5ccd2b){return function(_0x2edb1f){try{logger[_0x7e89('0x3')](_0x7e89('0x4'),_0xfef76c,utils[_0x7e89('0x5')](_0x5ccd2b[0x0],this));_0x2edb1f[_0x7e89('0x6')]();}catch(_0x2f0dbd){logger['error']('[%s][NOOP]\x20%s',_0xfef76c,JSON[_0x7e89('0x7')](_0x2f0dbd));_0x2edb1f[_0x7e89('0x8')]();}};};
\ No newline at end of file
+var _0x65c6=['consequence','info','[%s][NOOP]\x20%s','getMustacheRender','next','error','stop','../../../../config/logger'];(function(_0x377125,_0x34a148){var _0x5ad9ca=function(_0x445046){while(--_0x445046){_0x377125['push'](_0x377125['shift']());}};_0x5ad9ca(++_0x34a148);}(_0x65c6,0x157));var _0x665c=function(_0x38c4d8,_0x2470b8){_0x38c4d8=_0x38c4d8-0x0;var _0x5a7d91=_0x65c6[_0x38c4d8];return _0x5a7d91;};'use strict';var utils=require('./utils');var logger=require(_0x665c('0x0'))('routing');exports[_0x665c('0x1')]=function(_0x569183,_0x36f87a){return function(_0x149ecf){try{logger[_0x665c('0x2')](_0x665c('0x3'),_0x569183,utils[_0x665c('0x4')](_0x36f87a[0x0],this));_0x149ecf[_0x665c('0x5')]();}catch(_0xdf1b7f){logger[_0x665c('0x6')](_0x665c('0x3'),_0x569183,JSON['stringify'](_0xdf1b7f));_0x149ecf[_0x665c('0x7')]();}};};
\ No newline at end of file
index 0ecd18a..529db06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc361=['[%s][QUEUE]\x20%s','map','join','stop','find','Queues','createQueue','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','[%s][QUEUE]\x20APPLICATION\x20END','close','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','validate','lodash','util','ioredis','../../../../config/logger','./strategy','redis','defaults','localhost','socket.io-emitter','account','queue','from','joinAt','emit','format','pick','%sQueuesWaitingInteractions','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','string','number','timeout\x20is\x20a\x20number','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','QueueId','InteractionId','interaction','message','AccountId','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','create\x20queue\x20report','waiting','accepted','[%s][STOP:QUEUE][NAME:%s]','update','error','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','length'];(function(_0x4ed40a,_0x1502b0){var _0x4dfc9a=function(_0x15d17b){while(--_0x15d17b){_0x4ed40a['push'](_0x4ed40a['shift']());}};_0x4dfc9a(++_0x1502b0);}(_0xc361,0x151));var _0x1c36=function(_0x4fcd70,_0x109348){_0x4fcd70=_0x4fcd70-0x0;var _0x336588=_0xc361[_0x4fcd70];return _0x336588;};'use strict';var schema=require(_0x1c36('0x0'));var _=require(_0x1c36('0x1'));var util=require(_0x1c36('0x2'));var seqqueue=require('seq-queue');var moment=require('moment');var Redis=require(_0x1c36('0x3'));var config=require('../../../../config/environment');var logger=require(_0x1c36('0x4'))('routing');var strategy=require(_0x1c36('0x5'));config[_0x1c36('0x6')]=_[_0x1c36('0x7')](config[_0x1c36('0x6')],{'host':_0x1c36('0x8'),'port':0x18eb});var io=require(_0x1c36('0x9'))(new Redis(config[_0x1c36('0x6')]));var attributes=['id','queue_id',_0x1c36('0xa'),_0x1c36('0xb'),_0x1c36('0xc'),_0x1c36('0xd')];function emit(_0x485b62,_0x571afc,_0x362a67){io['to'](_0x485b62)[_0x1c36('0xe')](_0x571afc,_0x362a67);}function emitChannelQueueInteraction(_0x5bcef4,_0x2f2e1d,_0x51c259,_0x3419e4,_0xd16d27,_0x365ef2,_0x269294,_0x4222a6){var _0x3cbc21=_['clone'](_0x51c259);_0x3cbc21['queue_id']=_0x4222a6;_0x3cbc21[_0x1c36('0xb')]=_0x2f2e1d;_0x3cbc21[_0x1c36('0xa')]=_0x3419e4;_0x3cbc21['id']=_0xd16d27;if(_0x365ef2){_0x269294[util[_0x1c36('0xf')]('%sQueuesWaitingInteractions',_0x5bcef4)][_0xd16d27]=_[_0x1c36('0x10')](_0x3cbc21,attributes);}else{delete _0x269294[util[_0x1c36('0xf')](_0x1c36('0x11'),_0x5bcef4)][_0xd16d27];}emit(util['format']('%s:queue:%s',_0x5bcef4,_0x2f2e1d),util[_0x1c36('0xf')](_0x1c36('0x12'),_0x5bcef4,_0x365ef2?_0x1c36('0x13'):_0x1c36('0x14')),_[_0x1c36('0x10')](_0x3cbc21,attributes));}var rpc={'openchannelQueueReport':require(_0x1c36('0x15')),'mailQueueReport':require(_0x1c36('0x16')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0x1c36('0x17')),'faxQueueReport':require(_0x1c36('0x18')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0x1c36('0x19'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x1c36('0x1a'),'message':_0x1c36('0x1b')}});function startRouting(_0x4b335d,_0x21ceeb,_0x31b34a,_0x50c165){if(_0x4b335d&&_0x21ceeb&&_0x31b34a){_0x21ceeb['waiting']+=0x1;var _0x487af3={'uniqueid':_0x4b335d,'from':_0x31b34a[_0x1c36('0x1c')]?_0x31b34a[_0x1c36('0x1c')]['from']:'','joinAt':moment()[_0x1c36('0xf')](_0x1c36('0x1d')),'ContactId':_0x31b34a[_0x1c36('0x1e')]?_0x31b34a[_0x1c36('0x1e')]['id']:null,'ListId':_0x31b34a[_0x1c36('0x1f')]?_0x31b34a[_0x1c36('0x1f')]['id']:null};_0x487af3[_[_0x1c36('0x20')](_0x31b34a[_0x1c36('0x21')])+_0x1c36('0x22')]=_0x21ceeb['id']||null;_0x487af3[_[_0x1c36('0x20')](_0x31b34a[_0x1c36('0x21')])+_0x1c36('0x23')]=_0x31b34a[_0x1c36('0x24')]?_0x31b34a[_0x1c36('0x24')]['id']:null;_0x487af3[_[_0x1c36('0x20')](_0x31b34a['channel'])+'MessageId']=_0x31b34a['message']?_0x31b34a[_0x1c36('0x25')]['id']:null;_0x487af3[_[_0x1c36('0x20')](_0x31b34a[_0x1c36('0x21')])+(_0x31b34a[_0x1c36('0x21')]!=='chat'?_0x1c36('0x26'):_0x1c36('0x27'))]=_0x31b34a[_0x1c36('0xa')]?_0x31b34a[_0x1c36('0xa')]['id']:null;logger[_0x1c36('0x28')](util[_0x1c36('0xf')](_0x1c36('0x29'),_0x4b335d,_0x21ceeb[_0x1c36('0x2a')]));emitChannelQueueInteraction(_0x31b34a[_0x1c36('0x21')],_0x21ceeb['name'],_0x487af3,_0x31b34a[_0x1c36('0xa')][_0x1c36('0x2a')],_0x31b34a[_0x1c36('0x25')]['id'],!![],_0x50c165,_0x21ceeb['id']);if(rpc[_0x31b34a[_0x1c36('0x21')]+_0x1c36('0x2b')]){return rpc[_0x31b34a[_0x1c36('0x21')]+_0x1c36('0x2b')][_0x1c36('0x2c')](_0x487af3)[_0x1c36('0x2d')](function(_0x46adaa){logger['error'](_0x1c36('0x2e'));});}}}function stopRouting(_0x4d540c,_0x411b14,_0x4e3263,_0x5437bc){if(_0x4d540c&&_0x411b14){_0x411b14[_0x1c36('0x2f')]-=0x1;var _0x57de66={'leaveAt':moment()[_0x1c36('0xf')](_0x1c36('0x1d')),'acceptAt':moment()[_0x1c36('0xf')](_0x1c36('0x1d')),'reason':_0x1c36('0x30')};logger['info'](util[_0x1c36('0xf')](_0x1c36('0x31'),_0x4d540c,_0x411b14[_0x1c36('0x2a')]));emitChannelQueueInteraction(_0x4e3263['channel'],_0x411b14[_0x1c36('0x2a')],_0x4e3263[_0x1c36('0x1c')],_0x4e3263[_0x1c36('0xa')][_0x1c36('0x2a')],_0x4e3263[_0x1c36('0x25')]['id'],![],_0x5437bc,_0x411b14['id']);if(rpc[_0x4e3263[_0x1c36('0x21')]+_0x1c36('0x2b')]){return rpc[_0x4e3263[_0x1c36('0x21')]+_0x1c36('0x2b')][_0x1c36('0x32')](_0x4d540c,_0x57de66)['catch'](function(_0x20e811){logger[_0x1c36('0x33')](_0x1c36('0x34'));});}}}function endRouting(_0x2fa0b0,_0x2b0c4a,_0x293ab9,_0x124edd){if(_0x2fa0b0&&_0x2b0c4a){_0x2b0c4a['waiting']-=0x1;var _0x57b006={'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0x1c36('0xf')](_0x1c36('0x1d')),'reason':_0x1c36('0x35')};logger[_0x1c36('0x28')](util['format'](_0x1c36('0x36'),_0x2fa0b0,_0x2b0c4a[_0x1c36('0x2a')]));emitChannelQueueInteraction(_0x293ab9[_0x1c36('0x21')],_0x2b0c4a[_0x1c36('0x2a')],_0x293ab9[_0x1c36('0x1c')],_0x293ab9[_0x1c36('0xa')][_0x1c36('0x2a')],_0x293ab9[_0x1c36('0x25')]['id'],![],_0x124edd);if(rpc[_0x293ab9[_0x1c36('0x21')]+_0x1c36('0x2b')]){return rpc[_0x293ab9['channel']+_0x1c36('0x2b')]['update'](_0x2fa0b0,_0x57b006)[_0x1c36('0x2d')](function(_0xe1a309){logger['error'](_0x1c36('0x34'));});}}}function handleFindQueue(_0x5a6373){return function(_0x5951df){return _0x5951df[_0x1c36('0x2a')]['toLowerCase']()===_0x5a6373[_0x1c36('0x37')]();};}exports[_0x1c36('0x38')]=function(_0x2f8fce,_0x2a774f,_0x2c9fb9,_0x879945){return function(_0x3b74bd){try{var _0x390b44={'name':_0x2a774f[0x0],'timeout':_0x2a774f[0x1]};var _0x40f677=queue[_0x1c36('0x0')](_0x390b44,{'typecast':!![]});if(_0x40f677[_0x1c36('0x39')]){logger[_0x1c36('0x33')](_0x1c36('0x3a'),_0x2f8fce,_[_0x1c36('0x3b')](_0x40f677,_0x1c36('0x25'))[_0x1c36('0x3c')](',\x20'));_0x3b74bd[_0x1c36('0x3d')]();}else{var _0x667014=_[_0x1c36('0x3e')](_0x2c9fb9[_0x879945['channel']+_0x1c36('0x3f')],handleFindQueue(_0x390b44['name']));if(_0x667014){startRouting(_0x2f8fce,_0x667014,_0x879945,_0x2c9fb9);var _0x4624b6=(_0x667014['timeout']||0xa)*0x3e8;var _0x186b63=(_0x390b44[_0x1c36('0x35')]||0x14)*0x3e8;var _0x246ab1,_0xfe9f75;if(_0x4624b6>_0x186b63){_0x186b63=_0x4624b6;}var _0x354bb2=seqqueue[_0x1c36('0x40')](_0x4624b6);_0x354bb2['id']=_0x2f8fce;_0x354bb2[_0x1c36('0x41')]=_0x4624b6;_0x354bb2[_0x1c36('0x42')]=_0x186b63;_0x354bb2[_0x1c36('0x21')]=_0x879945['channel'];_0x2c9fb9[_0x1c36('0x43')][_0x2f8fce]['on'](_0x1c36('0x44'),function(){logger['info'](_0x1c36('0x45'),_0x2f8fce);stopRouting(_0x2f8fce,_0x667014,_0x879945,_0x2c9fb9);clearTimeout(_0x246ab1);_0x246ab1=undefined;_0x354bb2['close'](!![]);if(_0x2c9fb9['rules'][_0x2f8fce]){delete _0x2c9fb9[_0x1c36('0x43')][_0x2f8fce];}_0x3b74bd['stop']();});_0x2c9fb9[_0x1c36('0x43')][_0x2f8fce]['on']('complete',function(){if(_0x2c9fb9[_0x1c36('0x43')][_0x2f8fce]){delete _0x2c9fb9[_0x1c36('0x43')][_0x2f8fce];}});_0x246ab1=setTimeout(function(){logger[_0x1c36('0x28')](_0x1c36('0x46'),_0x2f8fce);endRouting(_0x2f8fce,_0x667014,_0x879945,_0x2c9fb9);clearTimeout(_0x246ab1);_0x354bb2[_0x1c36('0x47')](!![]);_0x3b74bd[_0x1c36('0x48')]();},_0x186b63);switch(_0x667014[_0x1c36('0x49')]){case'rrmemory':strategy[_0x1c36('0x4a')](_0x354bb2,_0x667014,_0x2c9fb9,_0x879945);break;default:strategy[_0x1c36('0x4b')](_0x354bb2,_0x667014,_0x2c9fb9,_0x879945);}}else{logger[_0x1c36('0x33')](_0x1c36('0x4c'),_0x2f8fce,_0x390b44[_0x1c36('0x2a')]);_0x3b74bd[_0x1c36('0x3d')]();}}}catch(_0x5c95c5){console[_0x1c36('0x4d')](_0x5c95c5);logger[_0x1c36('0x33')]('[%s][QUEUE]\x20%s',_0x2f8fce,_0x5c95c5[_0x1c36('0x4e')]);_0x3b74bd[_0x1c36('0x3d')]();}};};
\ No newline at end of file
+var _0xe823=['contact','list','upperFirst','channel','interaction','MessageId','message','chat','WebsiteId','QueueReport','create','catch','create\x20queue\x20report','accepted','info','[%s][STOP:QUEUE][NAME:%s]','name','update','error','YYYY-MM-DD\x20HH:mm:ss','timeout','update\x20queue\x20report','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','join','stop','find','Queues','createQueue','atimeout','rules','[%s][QUEUE]\x20ROUTING\x20STOPPED','complete','[%s][QUEUE]\x20APPLICATION\x20END','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','validate','lodash','seq-queue','moment','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','socket.io-emitter','queue_id','account','queue','from','joinAt','clone','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','%s_queue_waiting_interaction:%s','../../rpc/openchannelQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body'];(function(_0x273381,_0x1d5e82){var _0x985755=function(_0x755e9d){while(--_0x755e9d){_0x273381['push'](_0x273381['shift']());}};_0x985755(++_0x1d5e82);}(_0xe823,0x1de));var _0x3e82=function(_0x31dc58,_0x3def7d){_0x31dc58=_0x31dc58-0x0;var _0x1eed58=_0xe823[_0x31dc58];return _0x1eed58;};'use strict';var schema=require(_0x3e82('0x0'));var _=require(_0x3e82('0x1'));var util=require('util');var seqqueue=require(_0x3e82('0x2'));var moment=require(_0x3e82('0x3'));var Redis=require('ioredis');var config=require(_0x3e82('0x4'));var logger=require(_0x3e82('0x5'))(_0x3e82('0x6'));var strategy=require(_0x3e82('0x7'));config[_0x3e82('0x8')]=_[_0x3e82('0x9')](config[_0x3e82('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x3e82('0xa'))(new Redis(config['redis']));var attributes=['id',_0x3e82('0xb'),_0x3e82('0xc'),_0x3e82('0xd'),_0x3e82('0xe'),_0x3e82('0xf')];function emit(_0x1874c3,_0x1ecc47,_0x37ca50){io['to'](_0x1874c3)['emit'](_0x1ecc47,_0x37ca50);}function emitChannelQueueInteraction(_0xf3b1f2,_0x13d0cf,_0x47e058,_0x1d85b4,_0x3c2d78,_0x5670d0,_0x4a9282,_0xa3f486){var _0x398ade=_[_0x3e82('0x10')](_0x47e058);_0x398ade[_0x3e82('0xb')]=_0xa3f486;_0x398ade[_0x3e82('0xd')]=_0x13d0cf;_0x398ade[_0x3e82('0xc')]=_0x1d85b4;_0x398ade['id']=_0x3c2d78;if(_0x5670d0){_0x4a9282[util[_0x3e82('0x11')](_0x3e82('0x12'),_0xf3b1f2)][_0x3c2d78]=_[_0x3e82('0x13')](_0x398ade,attributes);}else{delete _0x4a9282[util[_0x3e82('0x11')](_0x3e82('0x12'),_0xf3b1f2)][_0x3c2d78];}emit(util['format'](_0x3e82('0x14'),_0xf3b1f2,_0x13d0cf),util['format'](_0x3e82('0x15'),_0xf3b1f2,_0x5670d0?'save':'remove'),_['pick'](_0x398ade,attributes));}var rpc={'openchannelQueueReport':require(_0x3e82('0x16')),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require(_0x3e82('0x17')),'smsQueueReport':require(_0x3e82('0x18')),'faxQueueReport':require(_0x3e82('0x19')),'whatsappQueueReport':require(_0x3e82('0x1a'))};var queue=schema({'name':{'type':_0x3e82('0x1b'),'required':!![],'message':_0x3e82('0x1c')},'timeout':{'type':_0x3e82('0x1d'),'message':_0x3e82('0x1e')}});function startRouting(_0x521b6a,_0x20bb7a,_0xddb628,_0x5c4515){if(_0x521b6a&&_0x20bb7a&&_0xddb628){_0x20bb7a[_0x3e82('0x1f')]+=0x1;var _0x18e9bb={'uniqueid':_0x521b6a,'from':_0xddb628[_0x3e82('0x20')]?_0xddb628['body'][_0x3e82('0xe')]:'','joinAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xddb628['contact']?_0xddb628[_0x3e82('0x21')]['id']:null,'ListId':_0xddb628[_0x3e82('0x22')]?_0xddb628[_0x3e82('0x22')]['id']:null};_0x18e9bb[_[_0x3e82('0x23')](_0xddb628[_0x3e82('0x24')])+'QueueId']=_0x20bb7a['id']||null;_0x18e9bb[_[_0x3e82('0x23')](_0xddb628[_0x3e82('0x24')])+'InteractionId']=_0xddb628[_0x3e82('0x25')]?_0xddb628[_0x3e82('0x25')]['id']:null;_0x18e9bb[_[_0x3e82('0x23')](_0xddb628['channel'])+_0x3e82('0x26')]=_0xddb628[_0x3e82('0x27')]?_0xddb628[_0x3e82('0x27')]['id']:null;_0x18e9bb[_[_0x3e82('0x23')](_0xddb628[_0x3e82('0x24')])+(_0xddb628[_0x3e82('0x24')]!==_0x3e82('0x28')?'AccountId':_0x3e82('0x29'))]=_0xddb628['account']?_0xddb628[_0x3e82('0xc')]['id']:null;logger['info'](util['format']('[%s][START:QUEUE][NAME:%s]',_0x521b6a,_0x20bb7a['name']));emitChannelQueueInteraction(_0xddb628['channel'],_0x20bb7a['name'],_0x18e9bb,_0xddb628[_0x3e82('0xc')]['name'],_0xddb628[_0x3e82('0x27')]['id'],!![],_0x5c4515,_0x20bb7a['id']);if(rpc[_0xddb628[_0x3e82('0x24')]+_0x3e82('0x2a')]){return rpc[_0xddb628['channel']+_0x3e82('0x2a')][_0x3e82('0x2b')](_0x18e9bb)[_0x3e82('0x2c')](function(_0x2093be){logger['error'](_0x3e82('0x2d'));});}}}function stopRouting(_0xaf77,_0x51fe06,_0x4743b9,_0x5a205e){if(_0xaf77&&_0x51fe06){_0x51fe06[_0x3e82('0x1f')]-=0x1;var _0x4d84dc={'leaveAt':moment()[_0x3e82('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0x3e82('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x3e82('0x2e')};logger[_0x3e82('0x2f')](util['format'](_0x3e82('0x30'),_0xaf77,_0x51fe06[_0x3e82('0x31')]));emitChannelQueueInteraction(_0x4743b9['channel'],_0x51fe06['name'],_0x4743b9[_0x3e82('0x20')],_0x4743b9[_0x3e82('0xc')]['name'],_0x4743b9[_0x3e82('0x27')]['id'],![],_0x5a205e,_0x51fe06['id']);if(rpc[_0x4743b9[_0x3e82('0x24')]+_0x3e82('0x2a')]){return rpc[_0x4743b9[_0x3e82('0x24')]+_0x3e82('0x2a')][_0x3e82('0x32')](_0xaf77,_0x4d84dc)[_0x3e82('0x2c')](function(_0x530f1d){logger[_0x3e82('0x33')]('update\x20queue\x20report');});}}}function endRouting(_0x40da7e,_0x144ad4,_0x37a9b9,_0x23e5c5){if(_0x40da7e&&_0x144ad4){_0x144ad4[_0x3e82('0x1f')]-=0x1;var _0x277916={'leaveAt':moment()[_0x3e82('0x11')](_0x3e82('0x34')),'exitAt':moment()['format'](_0x3e82('0x34')),'reason':_0x3e82('0x35')};logger['info'](util[_0x3e82('0x11')]('[%s][END:QUEUE][NAME:%s]',_0x40da7e,_0x144ad4[_0x3e82('0x31')]));emitChannelQueueInteraction(_0x37a9b9['channel'],_0x144ad4[_0x3e82('0x31')],_0x37a9b9[_0x3e82('0x20')],_0x37a9b9[_0x3e82('0xc')][_0x3e82('0x31')],_0x37a9b9['message']['id'],![],_0x23e5c5);if(rpc[_0x37a9b9[_0x3e82('0x24')]+_0x3e82('0x2a')]){return rpc[_0x37a9b9[_0x3e82('0x24')]+_0x3e82('0x2a')]['update'](_0x40da7e,_0x277916)['catch'](function(_0x1b2a70){logger[_0x3e82('0x33')](_0x3e82('0x36'));});}}}function handleFindQueue(_0x3b48fc){return function(_0x21d139){return _0x21d139[_0x3e82('0x31')][_0x3e82('0x37')]()===_0x3b48fc[_0x3e82('0x37')]();};}exports[_0x3e82('0x38')]=function(_0x8c933c,_0xbea892,_0x584327,_0x424a40){return function(_0x36c685){try{var _0x226565={'name':_0xbea892[0x0],'timeout':_0xbea892[0x1]};var _0x341e39=queue[_0x3e82('0x0')](_0x226565,{'typecast':!![]});if(_0x341e39[_0x3e82('0x39')]){logger[_0x3e82('0x33')](_0x3e82('0x3a'),_0x8c933c,_['map'](_0x341e39,_0x3e82('0x27'))[_0x3e82('0x3b')](',\x20'));_0x36c685[_0x3e82('0x3c')]();}else{var _0x2cb534=_[_0x3e82('0x3d')](_0x584327[_0x424a40[_0x3e82('0x24')]+_0x3e82('0x3e')],handleFindQueue(_0x226565[_0x3e82('0x31')]));if(_0x2cb534){startRouting(_0x8c933c,_0x2cb534,_0x424a40,_0x584327);var _0x9ecce4=(_0x2cb534['timeout']||0xa)*0x3e8;var _0x4d12c3=(_0x226565['timeout']||0x14)*0x3e8;var _0x20216b,_0x2a8e8b;if(_0x9ecce4>_0x4d12c3){_0x4d12c3=_0x9ecce4;}var _0x2b5bf5=seqqueue[_0x3e82('0x3f')](_0x9ecce4);_0x2b5bf5['id']=_0x8c933c;_0x2b5bf5[_0x3e82('0x40')]=_0x9ecce4;_0x2b5bf5['qtimeout']=_0x4d12c3;_0x2b5bf5[_0x3e82('0x24')]=_0x424a40[_0x3e82('0x24')];_0x584327[_0x3e82('0x41')][_0x8c933c]['on']('end',function(){logger[_0x3e82('0x2f')](_0x3e82('0x42'),_0x8c933c);stopRouting(_0x8c933c,_0x2cb534,_0x424a40,_0x584327);clearTimeout(_0x20216b);_0x20216b=undefined;_0x2b5bf5['close'](!![]);if(_0x584327['rules'][_0x8c933c]){delete _0x584327[_0x3e82('0x41')][_0x8c933c];}_0x36c685[_0x3e82('0x3c')]();});_0x584327[_0x3e82('0x41')][_0x8c933c]['on'](_0x3e82('0x43'),function(){if(_0x584327[_0x3e82('0x41')][_0x8c933c]){delete _0x584327[_0x3e82('0x41')][_0x8c933c];}});_0x20216b=setTimeout(function(){logger[_0x3e82('0x2f')](_0x3e82('0x44'),_0x8c933c);endRouting(_0x8c933c,_0x2cb534,_0x424a40,_0x584327);clearTimeout(_0x20216b);_0x2b5bf5['close'](!![]);_0x36c685['next']();},_0x4d12c3);switch(_0x2cb534[_0x3e82('0x45')]){case _0x3e82('0x46'):strategy[_0x3e82('0x46')](_0x2b5bf5,_0x2cb534,_0x584327,_0x424a40);break;default:strategy[_0x3e82('0x47')](_0x2b5bf5,_0x2cb534,_0x584327,_0x424a40);}}else{logger[_0x3e82('0x33')](_0x3e82('0x48'),_0x8c933c,_0x226565[_0x3e82('0x31')]);_0x36c685[_0x3e82('0x3c')]();}}}catch(_0x295b8e){console['log'](_0x295b8e);logger[_0x3e82('0x33')](_0x3e82('0x3a'),_0x8c933c,_0x295b8e['stack']);_0x36c685[_0x3e82('0x3c')]();}};};
\ No newline at end of file
index d8a0e15..c9c427f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7e6=['RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','STOP','TIMEOUT','lodash','uuid','./util','routing','squeue','push','handleRun','bind','handleTimeout','handleDrained','prototype','info','[%s][AGENT]\x20try\x20with\x20%s','agent','isNil','realtime','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','busy','notificationId','writeLog'];(function(_0x6620b8,_0x8b3d5e){var _0x33de50=function(_0x2f1f07){while(--_0x2f1f07){_0x6620b8['push'](_0x6620b8['shift']());}};_0x33de50(++_0x8b3d5e);}(_0xe7e6,0x1e7));var _0x6e7e=function(_0x2aff43,_0x4d9c3b){_0x2aff43=_0x2aff43-0x0;var _0x284923=_0xe7e6[_0x2aff43];return _0x284923;};'use strict';var _=require(_0x6e7e('0x0'));var uuid=require(_0x6e7e('0x1'));var util=require(_0x6e7e('0x2'));var logger=require('../../../../../config/logger')(_0x6e7e('0x3'));var Agent=function(_0x405720,_0x2f2192,_0x3a7aa8,_0xabffef){this['notificationId']=uuid['v4']();this['squeue']=_0x405720;this['agent']=_0x2f2192;this['realtime']=_0x3a7aa8;this[_0x6e7e('0x3')]=_0xabffef;this[_0x6e7e('0x4')][_0x6e7e('0x5')](this[_0x6e7e('0x6')][_0x6e7e('0x7')](this),this[_0x6e7e('0x8')][_0x6e7e('0x7')](this));this[_0x6e7e('0x4')]['on']('timeout',this[_0x6e7e('0x8')]['bind'](this));this[_0x6e7e('0x4')]['on']('drained',this[_0x6e7e('0x9')]['bind'](this));};Agent[_0x6e7e('0xa')][_0x6e7e('0x5')]=function(){this[_0x6e7e('0x4')][_0x6e7e('0x5')](this['handleRun'][_0x6e7e('0x7')](this),this[_0x6e7e('0x8')][_0x6e7e('0x7')](this));};Agent[_0x6e7e('0xa')][_0x6e7e('0x9')]=function(){this[_0x6e7e('0x8')](!![]);};Agent[_0x6e7e('0xa')]['handleRun']=function(_0x3492ae){logger[_0x6e7e('0xb')](_0x6e7e('0xc'),this['squeue']['id'],this[_0x6e7e('0xd')]['id']);if(_[_0x6e7e('0xe')](this[_0x6e7e('0xf')][_0x6e7e('0x10')][this[_0x6e7e('0xd')]['id']])){logger[_0x6e7e('0xb')](_0x6e7e('0x11'),this['squeue']['id'],this[_0x6e7e('0xd')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}else{if(this[_0x6e7e('0x3')][_0x6e7e('0x12')]||util[_0x6e7e('0x13')](this[_0x6e7e('0x4')]['id'],this[_0x6e7e('0xf')][_0x6e7e('0x10')][this[_0x6e7e('0xd')]['id']],this[_0x6e7e('0x4')]['channel'],![])){this[_0x6e7e('0xf')][_0x6e7e('0x10')][this[_0x6e7e('0xd')]['id']][_0x6e7e('0x14')]=!![];this[_0x6e7e('0xf')]['agents'][this['agent']['id']]['busyQueue']=undefined;util['showNotification'](this[_0x6e7e('0x15')],this['squeue']['id'],this[_0x6e7e('0xf')][_0x6e7e('0x10')][this['agent']['id']],null,this[_0x6e7e('0x3')]);util[_0x6e7e('0x16')](this[_0x6e7e('0x4')]['id'],this['realtime']['agents'][this['agent']['id']],_0x6e7e('0x17')+(this[_0x6e7e('0x3')][_0x6e7e('0x12')]?_0x6e7e('0x18'):''));}else{logger['info'](_0x6e7e('0x19'),this[_0x6e7e('0x4')]['id'],this[_0x6e7e('0xd')]['id']);setTimeout(this[_0x6e7e('0x5')]['bind'](this),0x3e8);}}};Agent[_0x6e7e('0xa')][_0x6e7e('0x8')]=function(_0x539f44){if(_[_0x6e7e('0xe')](this['realtime'][_0x6e7e('0x10')][this[_0x6e7e('0xd')]['id']])){return logger['info'](_0x6e7e('0x11'),this[_0x6e7e('0x4')]['id'],this[_0x6e7e('0xd')]['id']);}else{logger[_0x6e7e('0xb')](_0x6e7e('0x1a'),this['squeue']['id'],this[_0x6e7e('0xd')]['id']);util[_0x6e7e('0x1b')](this[_0x6e7e('0x15')],this['squeue']['id'],this[_0x6e7e('0xf')]['agents'][this['agent']['id']],null,this['routing']);this[_0x6e7e('0xf')][_0x6e7e('0x10')][this[_0x6e7e('0xd')]['id']][_0x6e7e('0x14')]=![];this[_0x6e7e('0xf')][_0x6e7e('0x10')][this[_0x6e7e('0xd')]['id']]['busyQueue']=undefined;util[_0x6e7e('0x16')](this[_0x6e7e('0x4')]['id'],this['realtime']['agents'][this[_0x6e7e('0xd')]['id']],_0x539f44?_0x6e7e('0x1c'):_0x6e7e('0x1d'));}if(!_0x539f44){setTimeout(this['push'][_0x6e7e('0x7')](this),0x3e8);}};function agent(_0x2b2cdb,_0x475927,_0x4ffa91,_0x5bbcb9){return new Agent(_0x2b2cdb,_0x475927,_0x4ffa91,_0x5bbcb9);}module['exports']=agent;
\ No newline at end of file
+var _0x5fdf=['TIMEOUT','lodash','uuid','./util','routing','notificationId','squeue','agent','realtime','push','handleRun','bind','handleTimeout','timeout','drained','prototype','handleDrained','info','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','busy','busyQueue','showNotification','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','STOP'];(function(_0x46f047,_0x23a936){var _0x352bef=function(_0x99c3cb){while(--_0x99c3cb){_0x46f047['push'](_0x46f047['shift']());}};_0x352bef(++_0x23a936);}(_0x5fdf,0x1a1));var _0xf5fd=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0x5fdf[_0x481bf7];return _0x461787;};'use strict';var _=require(_0xf5fd('0x0'));var uuid=require(_0xf5fd('0x1'));var util=require(_0xf5fd('0x2'));var logger=require('../../../../../config/logger')(_0xf5fd('0x3'));var Agent=function(_0x387db2,_0x2adeaf,_0x38402c,_0x51924f){this[_0xf5fd('0x4')]=uuid['v4']();this[_0xf5fd('0x5')]=_0x387db2;this[_0xf5fd('0x6')]=_0x2adeaf;this[_0xf5fd('0x7')]=_0x38402c;this[_0xf5fd('0x3')]=_0x51924f;this['squeue'][_0xf5fd('0x8')](this[_0xf5fd('0x9')][_0xf5fd('0xa')](this),this[_0xf5fd('0xb')]['bind'](this));this[_0xf5fd('0x5')]['on'](_0xf5fd('0xc'),this['handleTimeout'][_0xf5fd('0xa')](this));this[_0xf5fd('0x5')]['on'](_0xf5fd('0xd'),this['handleDrained'][_0xf5fd('0xa')](this));};Agent[_0xf5fd('0xe')][_0xf5fd('0x8')]=function(){this[_0xf5fd('0x5')][_0xf5fd('0x8')](this[_0xf5fd('0x9')][_0xf5fd('0xa')](this),this['handleTimeout'][_0xf5fd('0xa')](this));};Agent['prototype'][_0xf5fd('0xf')]=function(){this[_0xf5fd('0xb')](!![]);};Agent[_0xf5fd('0xe')][_0xf5fd('0x9')]=function(_0x1f2eb8){logger[_0xf5fd('0x10')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0xf5fd('0x5')]['id'],this[_0xf5fd('0x6')]['id']);if(_[_0xf5fd('0x11')](this[_0xf5fd('0x7')][_0xf5fd('0x12')][this[_0xf5fd('0x6')]['id']])){logger[_0xf5fd('0x10')](_0xf5fd('0x13'),this[_0xf5fd('0x5')]['id'],this[_0xf5fd('0x6')]['id']);setTimeout(this[_0xf5fd('0x8')][_0xf5fd('0xa')](this),0x3e8);}else{if(this[_0xf5fd('0x3')][_0xf5fd('0x14')]||util[_0xf5fd('0x15')](this['squeue']['id'],this[_0xf5fd('0x7')][_0xf5fd('0x12')][this[_0xf5fd('0x6')]['id']],this[_0xf5fd('0x5')]['channel'],![])){this[_0xf5fd('0x7')][_0xf5fd('0x12')][this[_0xf5fd('0x6')]['id']][_0xf5fd('0x16')]=!![];this[_0xf5fd('0x7')]['agents'][this[_0xf5fd('0x6')]['id']][_0xf5fd('0x17')]=undefined;util[_0xf5fd('0x18')](this[_0xf5fd('0x4')],this['squeue']['id'],this[_0xf5fd('0x7')]['agents'][this[_0xf5fd('0x6')]['id']],null,this['routing']);util[_0xf5fd('0x19')](this[_0xf5fd('0x5')]['id'],this['realtime'][_0xf5fd('0x12')][this['agent']['id']],_0xf5fd('0x1a')+(this[_0xf5fd('0x3')][_0xf5fd('0x14')]?_0xf5fd('0x1b'):''));}else{logger[_0xf5fd('0x10')](_0xf5fd('0x1c'),this[_0xf5fd('0x5')]['id'],this[_0xf5fd('0x6')]['id']);setTimeout(this[_0xf5fd('0x8')][_0xf5fd('0xa')](this),0x3e8);}}};Agent[_0xf5fd('0xe')][_0xf5fd('0xb')]=function(_0x31b397){if(_[_0xf5fd('0x11')](this['realtime'][_0xf5fd('0x12')][this[_0xf5fd('0x6')]['id']])){return logger[_0xf5fd('0x10')](_0xf5fd('0x13'),this[_0xf5fd('0x5')]['id'],this[_0xf5fd('0x6')]['id']);}else{logger['info'](_0xf5fd('0x1d'),this[_0xf5fd('0x5')]['id'],this[_0xf5fd('0x6')]['id']);util['hideNotification'](this[_0xf5fd('0x4')],this[_0xf5fd('0x5')]['id'],this[_0xf5fd('0x7')][_0xf5fd('0x12')][this[_0xf5fd('0x6')]['id']],null,this[_0xf5fd('0x3')]);this[_0xf5fd('0x7')][_0xf5fd('0x12')][this[_0xf5fd('0x6')]['id']][_0xf5fd('0x16')]=![];this[_0xf5fd('0x7')][_0xf5fd('0x12')][this['agent']['id']]['busyQueue']=undefined;util[_0xf5fd('0x19')](this['squeue']['id'],this[_0xf5fd('0x7')][_0xf5fd('0x12')][this[_0xf5fd('0x6')]['id']],_0x31b397?_0xf5fd('0x1e'):_0xf5fd('0x1f'));}if(!_0x31b397){setTimeout(this[_0xf5fd('0x8')][_0xf5fd('0xa')](this),0x3e8);}};function agent(_0x2f7e8c,_0x1329be,_0x13247d,_0x2603bc){return new Agent(_0x2f7e8c,_0x1329be,_0x13247d,_0x2603bc);}module['exports']=agent;
\ No newline at end of file
index 4ac5584..a3eb8db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5d5=['busyQueue','./util','routing','notificationId','squeue','queue','realtime','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','isNil','Agents','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','RINGING','name','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','STOP','TIMEOUT','busy'];(function(_0x46b1b8,_0x4c310b){var _0x583b24=function(_0x2d756c){while(--_0x2d756c){_0x46b1b8['push'](_0x46b1b8['shift']());}};_0x583b24(++_0x4c310b);}(_0xe5d5,0x156));var _0x5e5d=function(_0x43aeb1,_0x529a59){_0x43aeb1=_0x43aeb1-0x0;var _0x33eb72=_0xe5d5[_0x43aeb1];return _0x33eb72;};'use strict';var _=require('lodash');var uuid=require('uuid');var util=require(_0x5e5d('0x0'));var logger=require('../../../../../config/logger')(_0x5e5d('0x1'));var Beepall=function(_0x4b8ae9,_0x50afd3,_0x5127ee,_0x3e2410){this[_0x5e5d('0x2')]=uuid['v4']();this[_0x5e5d('0x3')]=_0x4b8ae9;this[_0x5e5d('0x4')]=_0x50afd3;this[_0x5e5d('0x5')]=_0x5127ee;this[_0x5e5d('0x1')]=_0x3e2410;this[_0x5e5d('0x3')][_0x5e5d('0x6')](this[_0x5e5d('0x7')][_0x5e5d('0x8')](this),this[_0x5e5d('0x9')][_0x5e5d('0x8')](this));this[_0x5e5d('0x3')]['on'](_0x5e5d('0xa'),this['handleTimeout'][_0x5e5d('0x8')](this));this['squeue']['on'](_0x5e5d('0xb'),this[_0x5e5d('0xc')]['bind'](this));};Beepall[_0x5e5d('0xd')][_0x5e5d('0x6')]=function(){this[_0x5e5d('0x3')][_0x5e5d('0x6')](this['handleRun']['bind'](this),this[_0x5e5d('0x9')][_0x5e5d('0x8')](this));};Beepall['prototype'][_0x5e5d('0xc')]=function(_0x2cf150){this['handleTimeout'](!![]);};Beepall[_0x5e5d('0xd')][_0x5e5d('0x7')]=function(_0x5a5258){var _0x5a8457=!![];if(!_['isNil'](this[_0x5e5d('0x4')])&&!_[_0x5e5d('0xe')](this[_0x5e5d('0x4')][_0x5e5d('0xf')])&&this['queue'][_0x5e5d('0xf')][_0x5e5d('0x10')]>0x0){for(var _0x39964a=0x0,_0xda3b8d;_0x39964a<this[_0x5e5d('0x4')][_0x5e5d('0xf')][_0x5e5d('0x10')];_0x39964a+=0x1){_0xda3b8d=this[_0x5e5d('0x4')]['Agents'][_0x39964a]['id'];if(_[_0x5e5d('0xe')](this[_0x5e5d('0x5')][_0x5e5d('0x11')][_0xda3b8d])){logger[_0x5e5d('0x12')](_0x5e5d('0x13'),this[_0x5e5d('0x3')]['id'],_0xda3b8d);}else{if(util['isAgentAvailable'](this[_0x5e5d('0x3')]['id'],this['realtime'][_0x5e5d('0x11')][_0xda3b8d],this[_0x5e5d('0x3')][_0x5e5d('0x14')],!![])){_0x5a8457=![];util['writeLog'](this[_0x5e5d('0x3')]['id'],this['realtime'][_0x5e5d('0x11')][_0xda3b8d],_0x5e5d('0x15'));this[_0x5e5d('0x5')]['agents'][_0xda3b8d]['busy']=!![];this[_0x5e5d('0x5')][_0x5e5d('0x11')][_0xda3b8d]['busyQueue']=this['queue'][_0x5e5d('0x16')];util[_0x5e5d('0x17')](this[_0x5e5d('0x2')],this['squeue']['id'],this[_0x5e5d('0x5')]['agents'][_0xda3b8d],this[_0x5e5d('0x4')],this['routing']);}}}if(_0x5a8457){logger[_0x5e5d('0x12')](_0x5e5d('0x18'),this[_0x5e5d('0x3')]['id']);setTimeout(this[_0x5e5d('0x6')][_0x5e5d('0x8')](this),0x3e8);}}else{logger[_0x5e5d('0x12')](_0x5e5d('0x19'),this['squeue']['id']);setTimeout(this[_0x5e5d('0x6')][_0x5e5d('0x8')](this),0x3e8);}};Beepall[_0x5e5d('0xd')][_0x5e5d('0x9')]=function(_0x1f8484){if(!_[_0x5e5d('0xe')](this[_0x5e5d('0x4')])&&!_[_0x5e5d('0xe')](this[_0x5e5d('0x4')]['Agents'])){for(var _0x34d678=0x0,_0x4ddd70;_0x34d678<this['queue'][_0x5e5d('0xf')][_0x5e5d('0x10')];_0x34d678+=0x1){_0x4ddd70=this[_0x5e5d('0x4')][_0x5e5d('0xf')][_0x34d678]['id'];if(_[_0x5e5d('0xe')](this['realtime'][_0x5e5d('0x11')][_0x4ddd70])){logger[_0x5e5d('0x12')](_0x5e5d('0x13'),this[_0x5e5d('0x3')]['id'],_0x4ddd70);}else{util[_0x5e5d('0x1a')](this[_0x5e5d('0x2')],this[_0x5e5d('0x3')]['id'],this['realtime'][_0x5e5d('0x11')][_0x4ddd70],this[_0x5e5d('0x4')],this['routing']);util['writeLog'](this[_0x5e5d('0x3')]['id'],this[_0x5e5d('0x5')][_0x5e5d('0x11')][_0x4ddd70],_0x1f8484?_0x5e5d('0x1b'):_0x5e5d('0x1c'));this[_0x5e5d('0x5')]['agents'][_0x4ddd70][_0x5e5d('0x1d')]=![];this['realtime'][_0x5e5d('0x11')][_0x4ddd70][_0x5e5d('0x1e')]=undefined;}}}if(!_0x1f8484){setTimeout(this[_0x5e5d('0x6')][_0x5e5d('0x8')](this),0x3e8);}};function beepall(_0x12d758,_0x5ba035,_0x1301ef,_0xf68677){return new Beepall(_0x12d758,_0x5ba035,_0x1301ef,_0xf68677);}module['exports']=beepall;
\ No newline at end of file
+var _0xcd59=['info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','writeLog','busy','busyQueue','name','showNotification','[%s][QUEUE]\x20EMPTY','STOP','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','push','handleRun','handleTimeout','bind','timeout','drained','prototype','handleDrained','isNil','Agents','length','agents'];(function(_0x1edce4,_0xc627c0){var _0x3b568b=function(_0x45a2d1){while(--_0x45a2d1){_0x1edce4['push'](_0x1edce4['shift']());}};_0x3b568b(++_0xc627c0);}(_0xcd59,0x14b));var _0x9cd5=function(_0x4afe3b,_0x255e0d){_0x4afe3b=_0x4afe3b-0x0;var _0x2c22d1=_0xcd59[_0x4afe3b];return _0x2c22d1;};'use strict';var _=require(_0x9cd5('0x0'));var uuid=require(_0x9cd5('0x1'));var util=require(_0x9cd5('0x2'));var logger=require(_0x9cd5('0x3'))(_0x9cd5('0x4'));var Beepall=function(_0x302b21,_0x4b93b9,_0x2d392c,_0x191236){this[_0x9cd5('0x5')]=uuid['v4']();this[_0x9cd5('0x6')]=_0x302b21;this[_0x9cd5('0x7')]=_0x4b93b9;this[_0x9cd5('0x8')]=_0x2d392c;this[_0x9cd5('0x4')]=_0x191236;this[_0x9cd5('0x6')][_0x9cd5('0x9')](this[_0x9cd5('0xa')]['bind'](this),this[_0x9cd5('0xb')][_0x9cd5('0xc')](this));this[_0x9cd5('0x6')]['on'](_0x9cd5('0xd'),this[_0x9cd5('0xb')][_0x9cd5('0xc')](this));this[_0x9cd5('0x6')]['on'](_0x9cd5('0xe'),this['handleDrained'][_0x9cd5('0xc')](this));};Beepall[_0x9cd5('0xf')][_0x9cd5('0x9')]=function(){this[_0x9cd5('0x6')]['push'](this['handleRun'][_0x9cd5('0xc')](this),this[_0x9cd5('0xb')][_0x9cd5('0xc')](this));};Beepall[_0x9cd5('0xf')][_0x9cd5('0x10')]=function(_0x2a1606){this['handleTimeout'](!![]);};Beepall[_0x9cd5('0xf')][_0x9cd5('0xa')]=function(_0x21d768){var _0x4b9ac8=!![];if(!_['isNil'](this['queue'])&&!_[_0x9cd5('0x11')](this[_0x9cd5('0x7')]['Agents'])&&this[_0x9cd5('0x7')][_0x9cd5('0x12')][_0x9cd5('0x13')]>0x0){for(var _0x57b986=0x0,_0x1e921c;_0x57b986<this[_0x9cd5('0x7')][_0x9cd5('0x12')][_0x9cd5('0x13')];_0x57b986+=0x1){_0x1e921c=this[_0x9cd5('0x7')][_0x9cd5('0x12')][_0x57b986]['id'];if(_['isNil'](this[_0x9cd5('0x8')][_0x9cd5('0x14')][_0x1e921c])){logger[_0x9cd5('0x15')](_0x9cd5('0x16'),this[_0x9cd5('0x6')]['id'],_0x1e921c);}else{if(util['isAgentAvailable'](this[_0x9cd5('0x6')]['id'],this[_0x9cd5('0x8')][_0x9cd5('0x14')][_0x1e921c],this[_0x9cd5('0x6')][_0x9cd5('0x17')],!![])){_0x4b9ac8=![];util[_0x9cd5('0x18')](this[_0x9cd5('0x6')]['id'],this[_0x9cd5('0x8')][_0x9cd5('0x14')][_0x1e921c],'RINGING');this[_0x9cd5('0x8')][_0x9cd5('0x14')][_0x1e921c][_0x9cd5('0x19')]=!![];this[_0x9cd5('0x8')]['agents'][_0x1e921c][_0x9cd5('0x1a')]=this[_0x9cd5('0x7')][_0x9cd5('0x1b')];util[_0x9cd5('0x1c')](this[_0x9cd5('0x5')],this[_0x9cd5('0x6')]['id'],this[_0x9cd5('0x8')]['agents'][_0x1e921c],this[_0x9cd5('0x7')],this[_0x9cd5('0x4')]);}}}if(_0x4b9ac8){logger[_0x9cd5('0x15')]('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this['squeue']['id']);setTimeout(this[_0x9cd5('0x9')]['bind'](this),0x3e8);}}else{logger['info'](_0x9cd5('0x1d'),this[_0x9cd5('0x6')]['id']);setTimeout(this[_0x9cd5('0x9')]['bind'](this),0x3e8);}};Beepall[_0x9cd5('0xf')][_0x9cd5('0xb')]=function(_0x27e1fd){if(!_[_0x9cd5('0x11')](this[_0x9cd5('0x7')])&&!_[_0x9cd5('0x11')](this[_0x9cd5('0x7')][_0x9cd5('0x12')])){for(var _0x36b0ad=0x0,_0x1c81fd;_0x36b0ad<this[_0x9cd5('0x7')][_0x9cd5('0x12')][_0x9cd5('0x13')];_0x36b0ad+=0x1){_0x1c81fd=this[_0x9cd5('0x7')]['Agents'][_0x36b0ad]['id'];if(_[_0x9cd5('0x11')](this[_0x9cd5('0x8')]['agents'][_0x1c81fd])){logger['info'](_0x9cd5('0x16'),this[_0x9cd5('0x6')]['id'],_0x1c81fd);}else{util['hideNotification'](this[_0x9cd5('0x5')],this['squeue']['id'],this['realtime'][_0x9cd5('0x14')][_0x1c81fd],this[_0x9cd5('0x7')],this[_0x9cd5('0x4')]);util[_0x9cd5('0x18')](this['squeue']['id'],this[_0x9cd5('0x8')][_0x9cd5('0x14')][_0x1c81fd],_0x27e1fd?_0x9cd5('0x1e'):'TIMEOUT');this[_0x9cd5('0x8')][_0x9cd5('0x14')][_0x1c81fd][_0x9cd5('0x19')]=![];this[_0x9cd5('0x8')][_0x9cd5('0x14')][_0x1c81fd][_0x9cd5('0x1a')]=undefined;}}}if(!_0x27e1fd){setTimeout(this[_0x9cd5('0x9')][_0x9cd5('0xc')](this),0x3e8);}};function beepall(_0x279ee6,_0x1ed01d,_0x3cbdba,_0x5cb5b3){return new Beepall(_0x279ee6,_0x1ed01d,_0x3cbdba,_0x5cb5b3);}module[_0x9cd5('0x1f')]=beepall;
\ No newline at end of file
index 0c46540..4a8a537 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b5e=['./agent','./rrmemory'];(function(_0x188660,_0x2ed0a5){var _0x17433e=function(_0x5d2b77){while(--_0x5d2b77){_0x188660['push'](_0x188660['shift']());}};_0x17433e(++_0x2ed0a5);}(_0x0b5e,0x10b));var _0xe0b5=function(_0x2bb24b,_0x421886){_0x2bb24b=_0x2bb24b-0x0;var _0x24ac0f=_0x0b5e[_0x2bb24b];return _0x24ac0f;};'use strict';module['exports']={'rrmemory':require(_0xe0b5('0x0')),'beepall':require('./beepall'),'agent':require(_0xe0b5('0x1'))};
\ No newline at end of file
+var _0xb619=['./rrmemory','./agent'];(function(_0x2439b6,_0x385deb){var _0x257a69=function(_0xd1421e){while(--_0xd1421e){_0x2439b6['push'](_0x2439b6['shift']());}};_0x257a69(++_0x385deb);}(_0xb619,0x150));var _0x9b61=function(_0xc63a5e,_0x2e7e1e){_0xc63a5e=_0xc63a5e-0x0;var _0x18f7a7=_0xb619[_0xc63a5e];return _0x18f7a7;};'use strict';module['exports']={'rrmemory':require(_0x9b61('0x0')),'beepall':require('./beepall'),'agent':require(_0x9b61('0x1'))};
\ No newline at end of file
index 9145dc3..d8782e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c4a=['isAgentAvailable','agents','agentId','[%s][QUEUE]\x20available\x20again\x20%s','done','handleRun','mapAgentsId','info','[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','busy','busyQueue','name','showNotification','hideNotification','writeLog','exports','lodash','uuid','./util','routing','notificationId','squeue','queue','realtime','intervals','push','bind','handleTimeout','module','timeout','drained','handleDrained','prototype','handleCheckReject'];(function(_0x54ea61,_0x456bff){var _0x8f6a10=function(_0x5ce786){while(--_0x5ce786){_0x54ea61['push'](_0x54ea61['shift']());}};_0x8f6a10(++_0x456bff);}(_0x1c4a,0x160));var _0xa1c4=function(_0x48cb44,_0x406b00){_0x48cb44=_0x48cb44-0x0;var _0x3cb35b=_0x1c4a[_0x48cb44];return _0x3cb35b;};'use strict';var rr=require('rr');var _=require(_0xa1c4('0x0'));var uuid=require(_0xa1c4('0x1'));var util=require(_0xa1c4('0x2'));var logger=require('../../../../../config/logger')(_0xa1c4('0x3'));var RRMemory=function(_0x53fc81,_0x27457f,_0x185414,_0x5114a9){this[_0xa1c4('0x4')]=uuid['v4']();this[_0xa1c4('0x5')]=_0x53fc81;this[_0xa1c4('0x6')]=_0x27457f;this[_0xa1c4('0x7')]=_0x185414;this[_0xa1c4('0x3')]=_0x5114a9;this[_0xa1c4('0x8')]={};this[_0xa1c4('0x5')][_0xa1c4('0x9')](this['handleRun'][_0xa1c4('0xa')](this),this[_0xa1c4('0xb')]['bind'](this),this[_0xa1c4('0xc')]);this[_0xa1c4('0x5')]['on'](_0xa1c4('0xd'),this[_0xa1c4('0xb')][_0xa1c4('0xa')](this));this['squeue']['on'](_0xa1c4('0xe'),this[_0xa1c4('0xf')][_0xa1c4('0xa')](this));};RRMemory[_0xa1c4('0x10')][_0xa1c4('0x9')]=function(){this[_0xa1c4('0x5')]['push'](this['handleRun'][_0xa1c4('0xa')](this),this[_0xa1c4('0xb')][_0xa1c4('0xa')](this));};RRMemory[_0xa1c4('0x10')]['handleDrained']=function(_0x15b899){this[_0xa1c4('0xb')](!![]);};RRMemory[_0xa1c4('0x10')][_0xa1c4('0x11')]=function(_0x45372a){if(util[_0xa1c4('0x12')](this[_0xa1c4('0x5')]['id'],this[_0xa1c4('0x7')][_0xa1c4('0x13')][this[_0xa1c4('0x14')]],this[_0xa1c4('0x5')]['channel'],!![])){logger['info'](_0xa1c4('0x15'),this[_0xa1c4('0x5')]['id'],this[_0xa1c4('0x14')]);clearInterval(this[_0xa1c4('0x8')][this[_0xa1c4('0x14')]]);_0x45372a[_0xa1c4('0x16')]();setTimeout(this[_0xa1c4('0x9')][_0xa1c4('0xa')](this),0x3e8);}};RRMemory[_0xa1c4('0x10')][_0xa1c4('0x17')]=function(_0x100571){this[_0xa1c4('0x14')]=rr(this[_0xa1c4('0x6')][_0xa1c4('0x18')]);logger[_0xa1c4('0x19')](_0xa1c4('0x1a'),this[_0xa1c4('0x5')]['id'],this[_0xa1c4('0x14')]);if(_[_0xa1c4('0x1b')](this[_0xa1c4('0x7')][_0xa1c4('0x13')][this[_0xa1c4('0x14')]])){logger['info'](_0xa1c4('0x1c'),this[_0xa1c4('0x5')]['id'],this[_0xa1c4('0x14')]);_0x100571[_0xa1c4('0x16')]();setTimeout(this['push'][_0xa1c4('0xa')](this),0x3e8);}else{if(util[_0xa1c4('0x12')](this['squeue']['id'],this[_0xa1c4('0x7')][_0xa1c4('0x13')][this['agentId']],this[_0xa1c4('0x5')][_0xa1c4('0x1d')],!![])){this[_0xa1c4('0x7')][_0xa1c4('0x13')][this[_0xa1c4('0x14')]][_0xa1c4('0x1e')]=!![];this[_0xa1c4('0x7')][_0xa1c4('0x13')][this['agentId']][_0xa1c4('0x1f')]=this[_0xa1c4('0x6')][_0xa1c4('0x20')];util[_0xa1c4('0x21')](this[_0xa1c4('0x4')],this[_0xa1c4('0x5')]['id'],this[_0xa1c4('0x7')]['agents'][this[_0xa1c4('0x14')]],this[_0xa1c4('0x6')],this[_0xa1c4('0x3')]);util['writeLog'](this[_0xa1c4('0x5')]['id'],this[_0xa1c4('0x7')][_0xa1c4('0x13')][this[_0xa1c4('0x14')]],'RINGING');this['intervals'][this[_0xa1c4('0x14')]]=setInterval(this['handleCheckReject'][_0xa1c4('0xa')](this,_0x100571),0x3e8);}else{logger[_0xa1c4('0x19')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0xa1c4('0x5')]['id'],this[_0xa1c4('0x14')]);_0x100571['done']();setTimeout(this[_0xa1c4('0x9')][_0xa1c4('0xa')](this),0x3e8);}}};RRMemory['prototype'][_0xa1c4('0xb')]=function(_0x4209d4){logger[_0xa1c4('0x19')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0xa1c4('0x5')]['id'],this[_0xa1c4('0x14')]);if(_[_0xa1c4('0x1b')](this[_0xa1c4('0x7')]['agents'][this[_0xa1c4('0x14')]])){logger[_0xa1c4('0x19')](_0xa1c4('0x1c'),this[_0xa1c4('0x5')]['id'],this[_0xa1c4('0x14')]);}else{clearInterval(this['intervals'][this[_0xa1c4('0x14')]]);util[_0xa1c4('0x22')](this['notificationId'],this[_0xa1c4('0x5')]['id'],this[_0xa1c4('0x7')][_0xa1c4('0x13')][this[_0xa1c4('0x14')]],this[_0xa1c4('0x6')],this[_0xa1c4('0x3')]);util[_0xa1c4('0x23')](this['squeue']['id'],this['realtime'][_0xa1c4('0x13')][this[_0xa1c4('0x14')]],'TIMEOUT');this[_0xa1c4('0x7')][_0xa1c4('0x13')][this[_0xa1c4('0x14')]][_0xa1c4('0x1e')]=![];this[_0xa1c4('0x7')][_0xa1c4('0x13')][this['agentId']]['busyQueue']=undefined;}if(!_0x4209d4){setTimeout(this[_0xa1c4('0x9')][_0xa1c4('0xa')](this),0x3e8);}};function rrmemory(_0x17d7c3,_0x547f19,_0x2b9ba4,_0x37b94d){return new RRMemory(_0x17d7c3,_0x547f19,_0x2b9ba4,_0x37b94d);}module[_0xa1c4('0x24')]=rrmemory;
\ No newline at end of file
+var _0x4b6a=['agentId','queue','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','done','busy','name','showNotification','notificationId','writeLog','RINGING','intervals','hideNotification','TIMEOUT','busyQueue','exports','lodash','uuid','./util','../../../../../config/logger','routing','squeue','realtime','push','bind','timeout','handleTimeout','drained','prototype','handleRun','handleDrained','handleCheckReject','isAgentAvailable','agents','channel','info','[%s][QUEUE]\x20available\x20again\x20%s'];(function(_0x37ac33,_0x3bb1e2){var _0x24deea=function(_0xad4a45){while(--_0xad4a45){_0x37ac33['push'](_0x37ac33['shift']());}};_0x24deea(++_0x3bb1e2);}(_0x4b6a,0xee));var _0xa4b6=function(_0x25c5ec,_0x49d7c5){_0x25c5ec=_0x25c5ec-0x0;var _0x2cdb90=_0x4b6a[_0x25c5ec];return _0x2cdb90;};'use strict';var rr=require('rr');var _=require(_0xa4b6('0x0'));var uuid=require(_0xa4b6('0x1'));var util=require(_0xa4b6('0x2'));var logger=require(_0xa4b6('0x3'))(_0xa4b6('0x4'));var RRMemory=function(_0x1d4350,_0x23a446,_0xd2e9df,_0xd72b57){this['notificationId']=uuid['v4']();this[_0xa4b6('0x5')]=_0x1d4350;this['queue']=_0x23a446;this[_0xa4b6('0x6')]=_0xd2e9df;this[_0xa4b6('0x4')]=_0xd72b57;this['intervals']={};this['squeue'][_0xa4b6('0x7')](this['handleRun']['bind'](this),this['handleTimeout'][_0xa4b6('0x8')](this),this['module']);this[_0xa4b6('0x5')]['on'](_0xa4b6('0x9'),this[_0xa4b6('0xa')][_0xa4b6('0x8')](this));this[_0xa4b6('0x5')]['on'](_0xa4b6('0xb'),this['handleDrained']['bind'](this));};RRMemory[_0xa4b6('0xc')][_0xa4b6('0x7')]=function(){this[_0xa4b6('0x5')][_0xa4b6('0x7')](this[_0xa4b6('0xd')][_0xa4b6('0x8')](this),this['handleTimeout']['bind'](this));};RRMemory[_0xa4b6('0xc')][_0xa4b6('0xe')]=function(_0x325ac7){this['handleTimeout'](!![]);};RRMemory[_0xa4b6('0xc')][_0xa4b6('0xf')]=function(_0x141971){if(util[_0xa4b6('0x10')](this[_0xa4b6('0x5')]['id'],this['realtime'][_0xa4b6('0x11')][this['agentId']],this[_0xa4b6('0x5')][_0xa4b6('0x12')],!![])){logger[_0xa4b6('0x13')](_0xa4b6('0x14'),this[_0xa4b6('0x5')]['id'],this['agentId']);clearInterval(this['intervals'][this[_0xa4b6('0x15')]]);_0x141971['done']();setTimeout(this[_0xa4b6('0x7')][_0xa4b6('0x8')](this),0x3e8);}};RRMemory[_0xa4b6('0xc')]['handleRun']=function(_0x228db1){this[_0xa4b6('0x15')]=rr(this[_0xa4b6('0x16')]['mapAgentsId']);logger[_0xa4b6('0x13')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0xa4b6('0x5')]['id'],this[_0xa4b6('0x15')]);if(_[_0xa4b6('0x17')](this[_0xa4b6('0x6')]['agents'][this[_0xa4b6('0x15')]])){logger[_0xa4b6('0x13')](_0xa4b6('0x18'),this['squeue']['id'],this[_0xa4b6('0x15')]);_0x228db1[_0xa4b6('0x19')]();setTimeout(this[_0xa4b6('0x7')][_0xa4b6('0x8')](this),0x3e8);}else{if(util[_0xa4b6('0x10')](this[_0xa4b6('0x5')]['id'],this[_0xa4b6('0x6')][_0xa4b6('0x11')][this[_0xa4b6('0x15')]],this['squeue'][_0xa4b6('0x12')],!![])){this[_0xa4b6('0x6')][_0xa4b6('0x11')][this[_0xa4b6('0x15')]][_0xa4b6('0x1a')]=!![];this['realtime'][_0xa4b6('0x11')][this[_0xa4b6('0x15')]]['busyQueue']=this[_0xa4b6('0x16')][_0xa4b6('0x1b')];util[_0xa4b6('0x1c')](this[_0xa4b6('0x1d')],this[_0xa4b6('0x5')]['id'],this[_0xa4b6('0x6')][_0xa4b6('0x11')][this[_0xa4b6('0x15')]],this[_0xa4b6('0x16')],this['routing']);util[_0xa4b6('0x1e')](this[_0xa4b6('0x5')]['id'],this[_0xa4b6('0x6')][_0xa4b6('0x11')][this[_0xa4b6('0x15')]],_0xa4b6('0x1f'));this[_0xa4b6('0x20')][this[_0xa4b6('0x15')]]=setInterval(this[_0xa4b6('0xf')][_0xa4b6('0x8')](this,_0x228db1),0x3e8);}else{logger['info']('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0xa4b6('0x5')]['id'],this[_0xa4b6('0x15')]);_0x228db1['done']();setTimeout(this[_0xa4b6('0x7')][_0xa4b6('0x8')](this),0x3e8);}}};RRMemory[_0xa4b6('0xc')]['handleTimeout']=function(_0x18350b){logger[_0xa4b6('0x13')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0xa4b6('0x5')]['id'],this['agentId']);if(_[_0xa4b6('0x17')](this['realtime'][_0xa4b6('0x11')][this['agentId']])){logger[_0xa4b6('0x13')](_0xa4b6('0x18'),this[_0xa4b6('0x5')]['id'],this[_0xa4b6('0x15')]);}else{clearInterval(this[_0xa4b6('0x20')][this[_0xa4b6('0x15')]]);util[_0xa4b6('0x21')](this[_0xa4b6('0x1d')],this[_0xa4b6('0x5')]['id'],this[_0xa4b6('0x6')][_0xa4b6('0x11')][this[_0xa4b6('0x15')]],this[_0xa4b6('0x16')],this[_0xa4b6('0x4')]);util[_0xa4b6('0x1e')](this[_0xa4b6('0x5')]['id'],this[_0xa4b6('0x6')][_0xa4b6('0x11')][this[_0xa4b6('0x15')]],_0xa4b6('0x22'));this[_0xa4b6('0x6')][_0xa4b6('0x11')][this['agentId']][_0xa4b6('0x1a')]=![];this[_0xa4b6('0x6')]['agents'][this['agentId']][_0xa4b6('0x23')]=undefined;}if(!_0x18350b){setTimeout(this[_0xa4b6('0x7')][_0xa4b6('0x8')](this),0x3e8);}};function rrmemory(_0x51639f,_0x39019e,_0x45e41a,_0x589800){return new RRMemory(_0x51639f,_0x39019e,_0x45e41a,_0x589800);}module[_0xa4b6('0x24')]=rrmemory;
\ No newline at end of file
index 2fbf01a..849bf4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11e5=['\x20interaction','account','notificationSound','body','queue','msg','getMustacheRender','notificationTemplate','error','[%s][QUEUE]\x20%s','notification:%s','save','remove','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','Pause','hasOwnProperty','CurrentCapacity','Capacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','lodash','../utils','mustache','../../../../../config/environment','../../../../../config/logger','routing','defaults','socket.io-emitter','redis','emit','format','user:%s','name'];(function(_0x283028,_0x348fbd){var _0x4b857c=function(_0x16aa61){while(--_0x16aa61){_0x283028['push'](_0x283028['shift']());}};_0x4b857c(++_0x348fbd);}(_0x11e5,0x8b));var _0x511e=function(_0x5e5b5e,_0x1d4bde){_0x5e5b5e=_0x5e5b5e-0x0;var _0x296489=_0x11e5[_0x5e5b5e];return _0x296489;};'use strict';var _=require(_0x511e('0x0'));var util=require('util');var utils=require(_0x511e('0x1'));var Mustache=require(_0x511e('0x2'));var Redis=require('ioredis');var config=require(_0x511e('0x3'));var logger=require(_0x511e('0x4'))(_0x511e('0x5'));config['redis']=_[_0x511e('0x6')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x511e('0x7'))(new Redis(config[_0x511e('0x8')]));function emit(_0x466dec,_0x57cac3,_0x47cf56){io['to'](_0x466dec)[_0x511e('0x9')](_0x57cac3,_0x47cf56);}function sendNotification(_0xf0ba86,_0x25deeb,_0x306694,_0x4449c4,_0x30269e,_0x1596b3){io['to'](util[_0x511e('0xa')](_0x511e('0xb'),_0x4449c4[_0x511e('0xc')]))[_0x511e('0x9')]('user:save',_0x4449c4);var _0x7e50db=_0x1596b3||{};var _0x5dd510=_0x306694['split']('.');var _0x3deecc={'uniqueid':_0x25deeb,'channel':_0x5dd510[0x0],'id':_0x5dd510[0x1],'title':_0x5dd510[0x0]+_0x511e('0xd'),'interactionId':_0x5dd510[0x2],'queue':_0x30269e?_0x30269e[_0x511e('0xc')]:null,'sound':_0x7e50db[_0x511e('0xe')][_0x511e('0xf')],'shake':_0x7e50db[_0x511e('0xe')]['notificationShake']};try{if(!_0x7e50db[_0x511e('0x10')]){_0x7e50db[_0x511e('0x10')]={};}if(_0x30269e){_0x7e50db['body'][_0x511e('0x11')]=_0x30269e;}else if(_0x7e50db[_0x511e('0x10')]['queue']){delete _0x7e50db[_0x511e('0x10')][_0x511e('0x11')];}_0x3deecc[_0x511e('0x12')]=utils[_0x511e('0x13')](_0x7e50db['account'][_0x511e('0x14')],_0x7e50db);}catch(_0x2dd346){_0x3deecc[_0x511e('0x12')]='I\x20can\x27t\x20render\x20your\x20template';logger[_0x511e('0x15')](util['format'](_0x511e('0x16'),_0x25deeb,_0x2dd346['message']));}io['to'](util['format'](_0x511e('0xb'),_0x4449c4['name']))[_0x511e('0x9')](util[_0x511e('0xa')](_0x511e('0x17'),_0xf0ba86?_0x511e('0x18'):_0x511e('0x19')),_0x3deecc);}function writeLog(_0x3d3f46,_0x3723ff,_0x452f20){return logger['info'](util[_0x511e('0xa')](_0x511e('0x1a'),_0x3d3f46,_0x3723ff[_0x511e('0xc')],_0x452f20));}exports[_0x511e('0x1b')]=function(_0xaea29d,_0x18807b,_0x886b6,_0x2f28fc){if(_0x18807b[_0x511e('0x1c')]){writeLog(_0xaea29d,_0x18807b,_0x511e('0x1d'));return![];}if(!_0x18807b['online']){writeLog(_0xaea29d,_0x18807b,'OFFLINE');return![];}if(_0x18807b[_0x886b6+_0x511e('0x1e')]){writeLog(_0xaea29d,_0x18807b,'PAUSE');return![];}if(_0x2f28fc&&_0x18807b[_0x511e('0x1f')](_0x886b6+'Capacity')&&_0x18807b[_0x511e('0x1f')](_0x886b6+_0x511e('0x20'))){if(_0x18807b[_0x886b6+_0x511e('0x21')]>0x0&&_0x18807b[_0x886b6+_0x511e('0x20')]>=_0x18807b[_0x886b6+_0x511e('0x21')]){writeLog(_0xaea29d,_0x18807b,_0x886b6[_0x511e('0x22')]()+_0x511e('0x23'));return![];}}return!![];};exports[_0x511e('0x24')]=function(_0x309695,_0x2451c2,_0x5b72fe,_0x2930b2,_0x1d754d){return sendNotification(!![],_0x309695,_0x2451c2,_0x5b72fe,_0x2930b2,_0x1d754d);};exports[_0x511e('0x25')]=function(_0x1aaac1,_0x369be6,_0x50305a,_0x431b75,_0x4e157f){return sendNotification(![],_0x1aaac1,_0x369be6,_0x50305a,_0x431b75,_0x4e157f);};exports['writeLog']=writeLog;
\ No newline at end of file
+var _0x7b84=['split','\x20interaction','account','notificationSound','notificationShake','body','queue','msg','getMustacheRender','[%s][QUEUE]\x20%s','message','notification:%s','save','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','OFFLINE','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','hideNotification','lodash','util','../utils','mustache','ioredis','../../../../../config/environment','../../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','format','user:%s','name','user:save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7b84,0x17c));var _0x47b8=function(_0x283d64,_0x29277e){_0x283d64=_0x283d64-0x0;var _0x265b41=_0x7b84[_0x283d64];return _0x265b41;};'use strict';var _=require(_0x47b8('0x0'));var util=require(_0x47b8('0x1'));var utils=require(_0x47b8('0x2'));var Mustache=require(_0x47b8('0x3'));var Redis=require(_0x47b8('0x4'));var config=require(_0x47b8('0x5'));var logger=require(_0x47b8('0x6'))('routing');config[_0x47b8('0x7')]=_[_0x47b8('0x8')](config[_0x47b8('0x7')],{'host':_0x47b8('0x9'),'port':0x18eb});var io=require(_0x47b8('0xa'))(new Redis(config[_0x47b8('0x7')]));function emit(_0x53e656,_0x3867ca,_0x3ce846){io['to'](_0x53e656)[_0x47b8('0xb')](_0x3867ca,_0x3ce846);}function sendNotification(_0xb845c9,_0x2289d5,_0x1af17f,_0x24d240,_0x4570d4,_0x9414c2){io['to'](util[_0x47b8('0xc')](_0x47b8('0xd'),_0x24d240[_0x47b8('0xe')]))[_0x47b8('0xb')](_0x47b8('0xf'),_0x24d240);var _0x3e255e=_0x9414c2||{};var _0x2a1af3=_0x1af17f[_0x47b8('0x10')]('.');var _0x2a10d2={'uniqueid':_0x2289d5,'channel':_0x2a1af3[0x0],'id':_0x2a1af3[0x1],'title':_0x2a1af3[0x0]+_0x47b8('0x11'),'interactionId':_0x2a1af3[0x2],'queue':_0x4570d4?_0x4570d4[_0x47b8('0xe')]:null,'sound':_0x3e255e[_0x47b8('0x12')][_0x47b8('0x13')],'shake':_0x3e255e[_0x47b8('0x12')][_0x47b8('0x14')]};try{if(!_0x3e255e[_0x47b8('0x15')]){_0x3e255e[_0x47b8('0x15')]={};}if(_0x4570d4){_0x3e255e[_0x47b8('0x15')]['queue']=_0x4570d4;}else if(_0x3e255e[_0x47b8('0x15')][_0x47b8('0x16')]){delete _0x3e255e[_0x47b8('0x15')][_0x47b8('0x16')];}_0x2a10d2[_0x47b8('0x17')]=utils[_0x47b8('0x18')](_0x3e255e[_0x47b8('0x12')]['notificationTemplate'],_0x3e255e);}catch(_0x3cc9d9){_0x2a10d2['msg']='I\x20can\x27t\x20render\x20your\x20template';logger['error'](util[_0x47b8('0xc')](_0x47b8('0x19'),_0x2289d5,_0x3cc9d9[_0x47b8('0x1a')]));}io['to'](util['format']('user:%s',_0x24d240['name']))[_0x47b8('0xb')](util['format'](_0x47b8('0x1b'),_0xb845c9?_0x47b8('0x1c'):_0x47b8('0x1d')),_0x2a10d2);}function writeLog(_0xfccf56,_0x4eba33,_0xc20df1){return logger[_0x47b8('0x1e')](util[_0x47b8('0xc')](_0x47b8('0x1f'),_0xfccf56,_0x4eba33[_0x47b8('0xe')],_0xc20df1));}exports[_0x47b8('0x20')]=function(_0x54f6bc,_0x31555d,_0x2a22e3,_0x5301f8){if(_0x31555d[_0x47b8('0x21')]){writeLog(_0x54f6bc,_0x31555d,_0x47b8('0x22'));return![];}if(!_0x31555d[_0x47b8('0x23')]){writeLog(_0x54f6bc,_0x31555d,_0x47b8('0x24'));return![];}if(_0x31555d[_0x2a22e3+'Pause']){writeLog(_0x54f6bc,_0x31555d,_0x47b8('0x25'));return![];}if(_0x5301f8&&_0x31555d[_0x47b8('0x26')](_0x2a22e3+_0x47b8('0x27'))&&_0x31555d[_0x47b8('0x26')](_0x2a22e3+_0x47b8('0x28'))){if(_0x31555d[_0x2a22e3+_0x47b8('0x27')]>0x0&&_0x31555d[_0x2a22e3+_0x47b8('0x28')]>=_0x31555d[_0x2a22e3+'Capacity']){writeLog(_0x54f6bc,_0x31555d,_0x2a22e3[_0x47b8('0x29')]()+_0x47b8('0x2a'));return![];}}return!![];};exports['showNotification']=function(_0x195a66,_0x6d517a,_0x147878,_0x3dcf1a,_0x4da0e0){return sendNotification(!![],_0x195a66,_0x6d517a,_0x147878,_0x3dcf1a,_0x4da0e0);};exports[_0x47b8('0x2b')]=function(_0x5c347f,_0x2c89fc,_0x2255ab,_0x33e653,_0x2e540d){return sendNotification(![],_0x5c347f,_0x2c89fc,_0x2255ab,_0x33e653,_0x2e540d);};exports['writeLog']=writeLog;
\ No newline at end of file
index e27152f..6b1d42d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ed3=['[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','error','isObject','stringify','validate','shelljs','lodash','./utils','routing','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','map','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','[%s][SYSTEM]\x20commnad:\x20%s','trim'];(function(_0x3b3563,_0x567877){var _0x12720e=function(_0x2c49b0){while(--_0x2c49b0){_0x3b3563['push'](_0x3b3563['shift']());}};_0x12720e(++_0x567877);}(_0x1ed3,0x18a));var _0x31ed=function(_0x4fd51c,_0x212fca){_0x4fd51c=_0x4fd51c-0x0;var _0xde5b62=_0x1ed3[_0x4fd51c];return _0xde5b62;};'use strict';var schema=require(_0x31ed('0x0'));var sh=require(_0x31ed('0x1'));var _=require(_0x31ed('0x2'));var utils=require(_0x31ed('0x3'));var logger=require('../../../../config/logger')(_0x31ed('0x4'));var system=schema({'command':{'type':'string','required':!![],'message':_0x31ed('0x5')}});exports[_0x31ed('0x6')]=function(_0x490f3b,_0x2e2c8c){return function(_0x23d404){try{var _0x4a917f={'command':_0x2e2c8c[0x0]};var _0x500b51=system[_0x31ed('0x0')](_0x4a917f,{'typecast':!![]});if(_0x500b51['length']){logger['error']('[%s][SYSTEM]\x20%s',_0x490f3b,_[_0x31ed('0x7')](_0x500b51,_0x31ed('0x8'))[_0x31ed('0x9')](',\x20'));logger[_0x31ed('0xa')](_0x31ed('0xb'),_0x490f3b);_0x23d404['next']();}else{var _0x282ba1=this;var _0x40458c=utils['getMustacheRender'](_0x2e2c8c[0x0],this);logger[_0x31ed('0xa')](_0x31ed('0xc'),_0x490f3b,_0x40458c);sh['exec'](_[_0x31ed('0xd')](_0x40458c),function(_0x3525d4,_0x2690a2){logger[_0x31ed('0xa')](_0x31ed('0xe'),_0x490f3b,_0x3525d4);if(_0x3525d4==0x0){var _0x1ded7f=_0x2690a2[_0x31ed('0xf')](/(\r\n|\n|\r)/gm,'');if(_[_0x31ed('0x10')](_0x2e2c8c[0x1])||_[_0x31ed('0x11')](_0x2e2c8c[0x1])){logger[_0x31ed('0xa')](_0x31ed('0x12'),_0x490f3b);_0x282ba1[_0x31ed('0x13')][_0x2e2c8c[0x1]]=_0x1ded7f;}else{logger[_0x31ed('0xa')](_0x31ed('0x14'),_0x490f3b,_0x2e2c8c[0x1],_0x1ded7f);_0x282ba1[_0x31ed('0x13')][_0x2e2c8c[0x1]]=_0x1ded7f;}}_0x23d404['next']();});}}catch(_0x504659){logger[_0x31ed('0x15')]('[%s][SYSTEM]\x20%s',_0x490f3b,_[_0x31ed('0x16')](_0x504659)?JSON[_0x31ed('0x17')](_0x504659):_0x504659);logger['info'](_0x31ed('0xb'),_0x490f3b);_0x23d404['next']();}};};
\ No newline at end of file
+var _0xa62c=['[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','replace','isNil','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','error','isObject','validate','shelljs','lodash','./utils','../../../../config/logger','routing','string','consequence','length','[%s][SYSTEM]\x20%s','map','message','info'];(function(_0x400017,_0xb19777){var _0x45d824=function(_0x3f9912){while(--_0x3f9912){_0x400017['push'](_0x400017['shift']());}};_0x45d824(++_0xb19777);}(_0xa62c,0x70));var _0xca62=function(_0x4327fe,_0x4f8040){_0x4327fe=_0x4327fe-0x0;var _0x138651=_0xa62c[_0x4327fe];return _0x138651;};'use strict';var schema=require(_0xca62('0x0'));var sh=require(_0xca62('0x1'));var _=require(_0xca62('0x2'));var utils=require(_0xca62('0x3'));var logger=require(_0xca62('0x4'))(_0xca62('0x5'));var system=schema({'command':{'type':_0xca62('0x6'),'required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xca62('0x7')]=function(_0x3da6b7,_0x2845a1){return function(_0x2b8280){try{var _0x1e51ba={'command':_0x2845a1[0x0]};var _0x31d267=system[_0xca62('0x0')](_0x1e51ba,{'typecast':!![]});if(_0x31d267[_0xca62('0x8')]){logger['error'](_0xca62('0x9'),_0x3da6b7,_[_0xca62('0xa')](_0x31d267,_0xca62('0xb'))['join'](',\x20'));logger[_0xca62('0xc')](_0xca62('0xd'),_0x3da6b7);_0x2b8280[_0xca62('0xe')]();}else{var _0x5bcb2d=this;var _0x2da5ad=utils[_0xca62('0xf')](_0x2845a1[0x0],this);logger[_0xca62('0xc')](_0xca62('0x10'),_0x3da6b7,_0x2da5ad);sh[_0xca62('0x11')](_[_0xca62('0x12')](_0x2da5ad),function(_0x1544b8,_0x3adb4a){logger[_0xca62('0xc')]('[%s][SYSTEM]\x20result\x20code:\x20%s',_0x3da6b7,_0x1544b8);if(_0x1544b8==0x0){var _0x23a20b=_0x3adb4a[_0xca62('0x13')](/(\r\n|\n|\r)/gm,'');if(_[_0xca62('0x14')](_0x2845a1[0x1])||_['isEmpty'](_0x2845a1[0x1])){logger['info']('[%s][SYSTEM]\x20no\x20variable',_0x3da6b7);_0x5bcb2d[_0xca62('0x15')][_0x2845a1[0x1]]=_0x23a20b;}else{logger['info'](_0xca62('0x16'),_0x3da6b7,_0x2845a1[0x1],_0x23a20b);_0x5bcb2d[_0xca62('0x15')][_0x2845a1[0x1]]=_0x23a20b;}}_0x2b8280['next']();});}}catch(_0x4f93fc){logger[_0xca62('0x17')](_0xca62('0x9'),_0x3da6b7,_[_0xca62('0x18')](_0x4f93fc)?JSON['stringify'](_0x4f93fc):_0x4f93fc);logger[_0xca62('0xc')](_0xca62('0xd'),_0x3da6b7);_0x2b8280[_0xca62('0xe')]();}};};
\ No newline at end of file
index f98a55e..f98349e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cee=['info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','Interaction','addTags','interaction','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','channel','catch','finally','next','isObject','stringify','validate','lodash','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length','error','[%s][TAG]\x20%s','map','join'];(function(_0x4adac3,_0x52eda4){var _0x3e9d7e=function(_0x1f4c44){while(--_0x1f4c44){_0x4adac3['push'](_0x4adac3['shift']());}};_0x3e9d7e(++_0x52eda4);}(_0x8cee,0xa8));var _0xe8ce=function(_0x1b1bb3,_0x2ff85c){_0x1b1bb3=_0x1b1bb3-0x0;var _0x56afe5=_0x8cee[_0x1b1bb3];return _0x56afe5;};'use strict';var schema=require(_0xe8ce('0x0'));var _=require(_0xe8ce('0x1'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xe8ce('0x2')),'smsInteraction':require(_0xe8ce('0x3')),'mailInteraction':require(_0xe8ce('0x4')),'faxInteraction':require(_0xe8ce('0x5')),'whatsappInteraction':require(_0xe8ce('0x6'))};var logger=require(_0xe8ce('0x7'))('routing');var tag=schema({'tag':{'type':'number','required':!![],'message':_0xe8ce('0x8')}});exports['consequence']=function(_0x420295,_0x3bf062,_0xa8fd68,_0x368b5b){return function(_0x556ae7){try{var _0x57b617={'tag':_0x3bf062[0x0]};var _0xe94f17=tag['validate'](_0x57b617,{'typecast':!![]});if(_0xe94f17[_0xe8ce('0x9')]){logger[_0xe8ce('0xa')](_0xe8ce('0xb'),_0x420295,_[_0xe8ce('0xc')](_0xe94f17,'message')[_0xe8ce('0xd')](',\x20'));logger[_0xe8ce('0xe')](_0xe8ce('0xf'),_0x420295);_0x556ae7['next']();}else{var _0x15f08a={'ids':[_0x3bf062[0x0]]};if(rpc[_0x368b5b['channel']+_0xe8ce('0x10')]){rpc[_0x368b5b['channel']+'Interaction'][_0xe8ce('0x11')](_0x368b5b[_0xe8ce('0x12')]['id'],_0x15f08a)['then'](function(_0x164d58){logger[_0xe8ce('0xe')](_0xe8ce('0x13'),_0x420295,_0x3bf062[0x1],_0x368b5b[_0xe8ce('0x14')],_0x368b5b[_0xe8ce('0x12')]['id']);})[_0xe8ce('0x15')](function(_0x25b191){logger[_0xe8ce('0xa')](_0xe8ce('0xb'),_0x420295,JSON['stringify'](_0x25b191));logger[_0xe8ce('0xe')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x420295);})[_0xe8ce('0x16')](function(){_0x556ae7[_0xe8ce('0x17')]();});}}}catch(_0x5934b8){logger[_0xe8ce('0xa')](_0xe8ce('0xb'),_0x420295,_[_0xe8ce('0x18')](_0x5934b8)?JSON[_0xe8ce('0x19')](_0x5934b8):_0x5934b8);logger[_0xe8ce('0xe')](_0xe8ce('0xf'),_0x420295);_0x556ae7[_0xe8ce('0x17')]();}};};
\ No newline at end of file
+var _0x9c40=['Interaction','addTags','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','interaction','catch','next','stringify','lodash','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][TAG]\x20%s','map','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','channel'];(function(_0x2e3dfc,_0x454d6c){var _0x4b1245=function(_0x5e9faa){while(--_0x5e9faa){_0x2e3dfc['push'](_0x2e3dfc['shift']());}};_0x4b1245(++_0x454d6c);}(_0x9c40,0x10c));var _0x09c4=function(_0x360344,_0x20d0b7){_0x360344=_0x360344-0x0;var _0x1d207b=_0x9c40[_0x360344];return _0x1d207b;};'use strict';var schema=require('validate');var _=require(_0x09c4('0x0'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x09c4('0x1')),'smsInteraction':require(_0x09c4('0x2')),'mailInteraction':require(_0x09c4('0x3')),'faxInteraction':require(_0x09c4('0x4')),'whatsappInteraction':require(_0x09c4('0x5'))};var logger=require(_0x09c4('0x6'))(_0x09c4('0x7'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0x09c4('0x8')}});exports[_0x09c4('0x9')]=function(_0xa92ffe,_0x410176,_0x34106e,_0x2240a7){return function(_0x34c046){try{var _0x2aa90a={'tag':_0x410176[0x0]};var _0x19f6b6=tag['validate'](_0x2aa90a,{'typecast':!![]});if(_0x19f6b6[_0x09c4('0xa')]){logger[_0x09c4('0xb')](_0x09c4('0xc'),_0xa92ffe,_[_0x09c4('0xd')](_0x19f6b6,'message')[_0x09c4('0xe')](',\x20'));logger[_0x09c4('0xf')](_0x09c4('0x10'),_0xa92ffe);_0x34c046['next']();}else{var _0xefad41={'ids':[_0x410176[0x0]]};if(rpc[_0x2240a7[_0x09c4('0x11')]+_0x09c4('0x12')]){rpc[_0x2240a7[_0x09c4('0x11')]+_0x09c4('0x12')][_0x09c4('0x13')](_0x2240a7['interaction']['id'],_0xefad41)[_0x09c4('0x14')](function(_0x2ad3cd){logger[_0x09c4('0xf')](_0x09c4('0x15'),_0xa92ffe,_0x410176[0x1],_0x2240a7[_0x09c4('0x11')],_0x2240a7[_0x09c4('0x16')]['id']);})[_0x09c4('0x17')](function(_0x4a8a29){logger[_0x09c4('0xb')]('[%s][TAG]\x20%s',_0xa92ffe,JSON['stringify'](_0x4a8a29));logger['info'](_0x09c4('0x10'),_0xa92ffe);})['finally'](function(){_0x34c046[_0x09c4('0x18')]();});}}}catch(_0x3dd548){logger['error'](_0x09c4('0xc'),_0xa92ffe,_['isObject'](_0x3dd548)?JSON[_0x09c4('0x19')](_0x3dd548):_0x3dd548);logger[_0x09c4('0xf')](_0x09c4('0x10'),_0xa92ffe);_0x34c046[_0x09c4('0x18')]();}};};
\ No newline at end of file
index 63c0c0e..7825861 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['merge','body','contact','message','list','mustache','lodash','render'];(function(_0x43d07d,_0xe50286){var _0x470bc6=function(_0x42a105){while(--_0x42a105){_0x43d07d['push'](_0x43d07d['shift']());}};_0x470bc6(++_0xe50286);}(_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
+var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x43af34,_0x542f03){var _0x57928e=function(_0x50e349){while(--_0x50e349){_0x43af34['push'](_0x43af34['shift']());}};_0x57928e(++_0x542f03);}(_0xe706,0xa3));var _0x6e70=function(_0xf90544,_0x211f7a){_0xf90544=_0xf90544-0x0;var _0x22b0ed=_0xe706[_0xf90544];return _0x22b0ed;};'use strict';var Mustache=require(_0x6e70('0x0'));var _=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'getMustacheRender':function(_0x5e8446,_0x2cae77){return Mustache[_0x6e70('0x3')](_0x5e8446,_[_0x6e70('0x4')](_0x2cae77[_0x6e70('0x5')],{'contact':_0x2cae77[_0x6e70('0x6')],'message':_0x2cae77[_0x6e70('0x7')],'account':_0x2cae77[_0x6e70('0x8')],'interaction':_0x2cae77[_0x6e70('0x9')],'list':_0x2cae77[_0x6e70('0xa')]}))||'';}};
\ No newline at end of file
index 1d3fb17..9d1619b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb984=['whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','127.0.0.1','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','path','../../../config/environment','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','format','%s.%s.%s','isNil','IntervalId','map','Intervals','interval','listen','channel','message','interaction','isArray','applications','length','existsSync','join','app','toLowerCase','autoreply','appdata','split','mail','push','slice','dialogflowv2','amazonlex','tag','./interval','condition','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','intervals','\x20|\x20','error','.js','rules','execute','Applications\x20executed','stringify','matchPath','complete','stack','routing\x20is\x20empty','agent','busy','agents','busyQueue','emit','end','QueueReport','UserId','error\x20update\x20queue\x20report','message\x20is\x20empty','capacity','hasOwnProperty','CurrentCapacity','updateRealtime','values','chatQueues','available','paused','waiting','name','openchannelQueues','loggedIn','smsQueues','faxQueues'];(function(_0x50f301,_0x16389f){var _0x4c5bc4=function(_0x4905aa){while(--_0x4905aa){_0x50f301['push'](_0x50f301['shift']());}};_0x4c5bc4(++_0x16389f);}(_0xb984,0x1c1));var _0x4b98=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0xb984[_0x1f9f37];return _0x21c080;};'use strict';var _=require(_0x4b98('0x0'));var util=require(_0x4b98('0x1'));var path=require(_0x4b98('0x2'));var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require('bluebird');var uuid=require('uuid');var config=require(_0x4b98('0x3'));var logger=require('../../../config/logger')('routing');var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require(_0x4b98('0x4')),'smsQueueReport':require(_0x4b98('0x5')),'faxQueueReport':require(_0x4b98('0x6')),'whatsappQueueReport':require(_0x4b98('0x7'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x5c257b,_0xd476aa,_0x305a31){return util[_0x4b98('0x8')](_0x4b98('0x9'),_0x5c257b,_0xd476aa||0x0,_0x305a31||0x0);}function getIntervals(_0x1722b6,_0x24c13b){var _0x355faa=[];if(!_[_0x4b98('0xa')](_0x24c13b[_0x4b98('0xb')])&&!_[_0x4b98('0xa')](_0x1722b6[_0x24c13b[_0x4b98('0xb')]])&&!_[_0x4b98('0xa')](_0x1722b6[_0x24c13b[_0x4b98('0xb')]]['Intervals'])){_0x355faa=_[_0x4b98('0xc')](_0x1722b6[_0x24c13b['IntervalId']][_0x4b98('0xd')],_0x4b98('0xe'));}else if(!_['isNil'](_0x24c13b[_0x4b98('0xe')])){_0x355faa=[_0x24c13b[_0x4b98('0xe')]];}return _0x355faa;}exports[_0x4b98('0xf')]=function(_0x538ca5){_0x538ca5['rules']={};return new BPromise(function(_0x470aae,_0x2e9e1d){var _0x131aab={'Start':function(_0xcbd54f){var _0xbd3566=this;return new Promise(function(_0x26f1d3,_0x55403f){if(_0xcbd54f){try{var _0x172154=[];var _0xe03760=getId(_0xcbd54f[_0x4b98('0x10')],_0xcbd54f['message']?_0xcbd54f[_0x4b98('0x11')]['id']:0x0,_0xcbd54f[_0x4b98('0x12')]?_0xcbd54f[_0x4b98('0x12')]['id']:0x0);if(_0xcbd54f['applications']&&_[_0x4b98('0x13')](_0xcbd54f[_0x4b98('0x14')])&&_0xcbd54f[_0x4b98('0x14')][_0x4b98('0x15')]){for(var _0x258f53=0x0;_0x258f53<_0xcbd54f[_0x4b98('0x14')]['length'];_0x258f53+=0x1){var _0x3e88d2=_0xcbd54f['applications'][_0x258f53];if(fs[_0x4b98('0x16')](path[_0x4b98('0x17')](__dirname,'applications',_0x3e88d2[_0x4b98('0x18')]+'.js'))){var _0x24f562=[];switch(_0x3e88d2[_0x4b98('0x18')][_0x4b98('0x19')]()){case _0x4b98('0x1a'):var _0x5eec74=_0x3e88d2[_0x4b98('0x1b')][_0x4b98('0x1c')](',');if(_0xcbd54f[_0x4b98('0x10')]===_0x4b98('0x1d')){_0x24f562[_0x4b98('0x1e')](_0x5eec74[0x0]);_0x24f562[_0x4b98('0x1e')](_0x5eec74[0x1]);_0x24f562[_0x4b98('0x1e')](_0x5eec74['slice'](0x2,_0x5eec74[_0x4b98('0x15')])[_0x4b98('0x17')](','));}else{_0x24f562['push'](_0x5eec74[0x0]);_0x24f562['push'](_0x5eec74[_0x4b98('0x1f')](0x1,_0x5eec74[_0x4b98('0x15')])[_0x4b98('0x17')](','));}break;case'dialogflow':var _0x2cc4c9=_0x3e88d2[_0x4b98('0x1b')][_0x4b98('0x1c')](',');_0x24f562['push'](_0x2cc4c9[0x0]);_0x24f562['push'](_0x2cc4c9[0x1]);_0x24f562[_0x4b98('0x1e')](_0x2cc4c9[_0x4b98('0x1f')](0x2,_0x2cc4c9['length'])[_0x4b98('0x17')](','));break;case _0x4b98('0x20'):var _0x64852e=_0x3e88d2['appdata']['split'](',');_0x24f562[_0x4b98('0x1e')](_0x64852e[0x0]);_0x24f562[_0x4b98('0x1e')](_0x64852e[0x1]);_0x24f562['push'](_0x64852e[0x2]);_0x24f562[_0x4b98('0x1e')](_0x64852e[0x3]);_0x24f562[_0x4b98('0x1e')](_0x64852e['slice'](0x4,_0x64852e['length'])[_0x4b98('0x17')](','));break;case _0x4b98('0x21'):var _0x6f0cde=_0x3e88d2[_0x4b98('0x1b')]['split'](',');_0x24f562['push'](_0x6f0cde[0x0]);_0x24f562[_0x4b98('0x1e')](_0x6f0cde[0x1]);_0x24f562[_0x4b98('0x1e')](_0x6f0cde[0x2]);_0x24f562[_0x4b98('0x1e')](_0x6f0cde[0x3]);_0x24f562['push'](_0x6f0cde[_0x4b98('0x1f')](0x4,_0x6f0cde[_0x4b98('0x15')])[_0x4b98('0x17')](','));break;case _0x4b98('0x11'):_0x24f562[_0x4b98('0x1e')](_0x3e88d2[_0x4b98('0x1b')]);break;case _0x4b98('0x22'):_0x24f562['push'](_0x3e88d2['TagId']);_0x24f562[_0x4b98('0x1e')](_0x3e88d2[_0x4b98('0x1b')]);break;default:_0x24f562=_[_0x4b98('0xa')](_0x3e88d2['appdata'])?[]:_0x3e88d2[_0x4b98('0x1b')][_0x4b98('0x1c')](',');}var _0x3a8d12={'id':util[_0x4b98('0x8')]('%s:%s:%s',_0xe03760,_0x3e88d2['id'],_0x3e88d2[_0x4b98('0x18')]),'condition':require(_0x4b98('0x23'))[_0x4b98('0x24')](_0xe03760,getIntervals(_0x538ca5['intervals'],_0x3e88d2),_0x538ca5),'consequence':require(_0x4b98('0x25')+_0x3e88d2[_0x4b98('0x18')])[_0x4b98('0x26')](_0xe03760,_0x24f562,_0x538ca5,_0xcbd54f),'p':_0x3e88d2[_0x4b98('0x27')]||0x0};logger[_0x4b98('0x28')](_0x4b98('0x29'),_0x3a8d12['id'],_0x4b98('0x2a'),getIntervals(_0x538ca5[_0x4b98('0x2b')],_0x3e88d2)['join'](_0x4b98('0x2c')));_0x172154[_0x4b98('0x1e')](_0x3a8d12);}else{logger[_0x4b98('0x2d')]('Please\x20create\x20a\x20new\x20file\x20under',path[_0x4b98('0x17')](__dirname,_0x4b98('0x14'),_0x3e88d2['app']+_0x4b98('0x2e')));}}_0x538ca5[_0x4b98('0x2f')][_0xe03760]=new RuleEngine(_0x172154);_0x538ca5['rules'][_0xe03760][_0x4b98('0x30')](_0xcbd54f,function(_0x5b832a){logger[_0x4b98('0x28')](_0x4b98('0x31'),JSON[_0x4b98('0x32')](_0x5b832a[_0x4b98('0x33')]));if(_0x538ca5['rules'][_0xe03760]){_0x538ca5[_0x4b98('0x2f')][_0xe03760]['emit'](_0x4b98('0x34'));}});return _0x26f1d3({'code':0xc8,'message':_0xcbd54f});}else{logger[_0x4b98('0x28')]('No\x20applications\x20to\x20execute');return _0x26f1d3({'code':0xc8,'message':_0xcbd54f});}}catch(_0x2e9bd7){logger[_0x4b98('0x2d')](_0x2e9bd7[_0x4b98('0x35')]);return _0x55403f(_0xbd3566[_0x4b98('0x2d')](0x1f4,_0x2e9bd7));}}return _0x55403f(_0x4b98('0x36'));});},'AcceptMessage':function(_0x2c44ba){var _0x2be62d=this;return new Promise(function(_0x3f9656,_0x1dd0ed){if(_0x2c44ba[_0x4b98('0x37')]&&_0x2c44ba[_0x4b98('0x37')]['id']){if(_0x538ca5['agents'][_0x2c44ba[_0x4b98('0x37')]['id']]){_0x538ca5['agents'][_0x2c44ba[_0x4b98('0x37')]['id']][_0x4b98('0x38')]=![];_0x538ca5[_0x4b98('0x39')][_0x2c44ba['agent']['id']][_0x4b98('0x3a')]=undefined;}}if(_0x2c44ba[_0x4b98('0x11')]&&_0x2c44ba['message']['id']){try{var _0x575150=getId(_0x2c44ba[_0x4b98('0x10')],_0x2c44ba[_0x4b98('0x11')]?_0x2c44ba[_0x4b98('0x11')]['id']:0x0,_0x2c44ba[_0x4b98('0x12')]?_0x2c44ba[_0x4b98('0x12')]['id']:0x0);if(_0x538ca5['rules'][_0x575150]){_0x538ca5['rules'][_0x575150][_0x4b98('0x3b')](_0x4b98('0x3c'));if(rpc[_0x2c44ba[_0x4b98('0x10')]+_0x4b98('0x3d')]){rpc[_0x2c44ba[_0x4b98('0x10')]+'QueueReport']['update'](_0x575150,{'UserId':_0x2c44ba['message'][_0x4b98('0x3e')]})['catch'](function(_0x14c985){logger[_0x4b98('0x2d')](_0x4b98('0x3f'));});}}return _0x3f9656({'code':0xc8,'message':_0x2c44ba});}catch(_0x534475){logger['error'](_0x534475['stack']);return _0x1dd0ed(_0x2be62d[_0x4b98('0x2d')](0x1f4,_0x534475));}}logger[_0x4b98('0x2d')]('message\x20is\x20empty');return _0x1dd0ed(_0x2be62d['error'](0x1f4,_0x4b98('0x40')));});},'RejectMessage':function(_0x4199b4){var _0x49d2cf=this;return new Promise(function(_0x1b1a8a,_0x3c6e6e){if(_0x4199b4[_0x4b98('0x37')]&&_0x4199b4[_0x4b98('0x37')]['id']){try{if(_0x538ca5['agents'][_0x4199b4[_0x4b98('0x37')]['id']]){_0x538ca5[_0x4b98('0x39')][_0x4199b4[_0x4b98('0x37')]['id']][_0x4b98('0x38')]=![];_0x538ca5[_0x4b98('0x39')][_0x4199b4[_0x4b98('0x37')]['id']][_0x4b98('0x3a')]=undefined;}return _0x1b1a8a({'code':0xc8,'message':_0x4199b4});}catch(_0xa2b3e1){logger[_0x4b98('0x2d')](_0xa2b3e1['stack']);return _0x3c6e6e(_0x49d2cf[_0x4b98('0x2d')](0x1f4,_0xa2b3e1));}}logger[_0x4b98('0x2d')](_0x4b98('0x40'));return _0x3c6e6e(_0x49d2cf['error'](0x1f4,_0x4b98('0x40')));});},'AbandonInteraction':function(_0x475f87){var _0xbd4a2c=this;return new Promise(function(_0x4a33c8,_0x2b54b3){if(_0x475f87[_0x4b98('0x10')]&&_0x475f87['interaction']&&_0x475f87[_0x4b98('0x12')]['id']){try{var _0x33d9dc=getId(_0x475f87[_0x4b98('0x10')],_0x475f87[_0x4b98('0x11')]?_0x475f87[_0x4b98('0x11')]['id']:0x0,_0x475f87[_0x4b98('0x12')]?_0x475f87[_0x4b98('0x12')]['id']:0x0);if(_0x538ca5[_0x4b98('0x2f')][_0x33d9dc]){_0x538ca5[_0x4b98('0x2f')][_0x33d9dc][_0x4b98('0x3b')](_0x4b98('0x3c'));}return _0x4a33c8({'code':0xc8,'message':_0x475f87});}catch(_0x3b37bc){logger[_0x4b98('0x2d')](_0x3b37bc['stack']);return _0x2b54b3(_0xbd4a2c['error'](0x1f4,_0x3b37bc));}}logger['error'](_0x4b98('0x40'));return _0x2b54b3(_0xbd4a2c['error'](0x1f4,_0x4b98('0x40')));});},'AgentCapacity':function(_0x5cc7ee){var _0x3b562f=this;return new Promise(function(_0x240e07,_0x3cefc2){if(_0x538ca5['agents']['hasOwnProperty'](_0x5cc7ee['id'])){for(var _0x5b3f8c in _0x5cc7ee[_0x4b98('0x41')]){if(_0x5cc7ee[_0x4b98('0x41')][_0x4b98('0x42')](_0x5b3f8c)){if(_0x538ca5[_0x4b98('0x39')][_0x5cc7ee['id']][_0x4b98('0x42')](_0x5b3f8c+'CurrentCapacity')){_0x538ca5[_0x4b98('0x39')][_0x5cc7ee['id']][_0x5b3f8c+_0x4b98('0x43')]=parseInt(_0x5cc7ee[_0x4b98('0x41')][_0x5b3f8c],0xa);}}}_0x538ca5['agents'][_0x5cc7ee['id']][_0x4b98('0x44')]();return _0x240e07({'code':0xc8,'message':_0x538ca5[_0x4b98('0x39')][_0x5cc7ee['id']]});}else{return _0x3cefc2(_0x3b562f[_0x4b98('0x2d')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x55d8f7){return new Promise(function(_0x4b794b,_0x261946){var _0x917b5c=_[_0x4b98('0x45')](_0x538ca5[_0x4b98('0x39')]);_0x4b794b({'count':_0x917b5c[_0x4b98('0x15')],'rows':_0x917b5c});});},'ChatQueues':function(_0x597a51){return new Promise(function(_0x40b144,_0x58b16a){var _0x3d5637=[];for(var _0x5723fa in _0x538ca5[_0x4b98('0x46')]){if(_0x538ca5['chatQueues'][_0x4b98('0x42')](_0x5723fa)){var _0x3ef795=_0x538ca5[_0x4b98('0x46')][_0x5723fa];var _0x853f0e={'id':_0x3ef795['id'],'available':_0x3ef795[_0x4b98('0x47')],'loggedIn':_0x3ef795['loggedIn'],'name':_0x3ef795['name'],'paused':_0x3ef795[_0x4b98('0x48')],'waiting':_0x3ef795[_0x4b98('0x49')]};_0x3d5637[_0x4b98('0x1e')](_0x853f0e);}}_0x40b144({'count':_0x3d5637[_0x4b98('0x15')],'rows':_0x3d5637});});},'MailQueues':function(_0x1d2648){return new Promise(function(_0x181f1c,_0x1faa9e){var _0x58d409=[];for(var _0x56cd5f in _0x538ca5['mailQueues']){if(_0x538ca5['mailQueues'][_0x4b98('0x42')](_0x56cd5f)){var _0x14e0da=_0x538ca5['mailQueues'][_0x56cd5f];var _0x266a49={'id':_0x14e0da['id'],'available':_0x14e0da['available'],'loggedIn':_0x14e0da['loggedIn'],'name':_0x14e0da[_0x4b98('0x4a')],'paused':_0x14e0da[_0x4b98('0x48')],'waiting':_0x14e0da['waiting']};_0x58d409[_0x4b98('0x1e')](_0x266a49);}}_0x181f1c({'count':_0x58d409[_0x4b98('0x15')],'rows':_0x58d409});});},'OpenchannelQueues':function(_0x43457a){return new Promise(function(_0x21ef43,_0x4783c1){var _0x3bf25e=[];for(var _0x15693e in _0x538ca5[_0x4b98('0x4b')]){if(_0x538ca5[_0x4b98('0x4b')][_0x4b98('0x42')](_0x15693e)){var _0x456f06=_0x538ca5['openchannelQueues'][_0x15693e];var _0x2ff8f4={'id':_0x456f06['id'],'available':_0x456f06[_0x4b98('0x47')],'loggedIn':_0x456f06[_0x4b98('0x4c')],'name':_0x456f06['name'],'paused':_0x456f06[_0x4b98('0x48')],'waiting':_0x456f06[_0x4b98('0x49')]};_0x3bf25e[_0x4b98('0x1e')](_0x2ff8f4);}}_0x21ef43({'count':_0x3bf25e[_0x4b98('0x15')],'rows':_0x3bf25e});});},'SmsQueues':function(_0xca9f6){return new Promise(function(_0x1ea8dd,_0xe927f2){var _0x4a3b4a=[];for(var _0x15b384 in _0x538ca5[_0x4b98('0x4d')]){if(_0x538ca5[_0x4b98('0x4d')][_0x4b98('0x42')](_0x15b384)){var _0x282e0b=_0x538ca5[_0x4b98('0x4d')][_0x15b384];var _0x4cabe0={'id':_0x282e0b['id'],'available':_0x282e0b[_0x4b98('0x47')],'loggedIn':_0x282e0b[_0x4b98('0x4c')],'name':_0x282e0b['name'],'paused':_0x282e0b[_0x4b98('0x48')],'waiting':_0x282e0b[_0x4b98('0x49')]};_0x4a3b4a[_0x4b98('0x1e')](_0x4cabe0);}}_0x1ea8dd({'count':_0x4a3b4a['length'],'rows':_0x4a3b4a});});},'FaxQueues':function(_0x4fa191){return new Promise(function(_0x4cb025,_0x54757b){var _0x1e5b1a=[];for(var _0xf1f0ca in _0x538ca5[_0x4b98('0x4e')]){if(_0x538ca5[_0x4b98('0x4e')][_0x4b98('0x42')](_0xf1f0ca)){var _0x432aba=_0x538ca5['faxQueues'][_0xf1f0ca];var _0x364995={'id':_0x432aba['id'],'available':_0x432aba[_0x4b98('0x47')],'loggedIn':_0x432aba[_0x4b98('0x4c')],'name':_0x432aba[_0x4b98('0x4a')],'paused':_0x432aba['paused'],'waiting':_0x432aba[_0x4b98('0x49')]};_0x1e5b1a[_0x4b98('0x1e')](_0x364995);}}_0x4cb025({'count':_0x1e5b1a['length'],'rows':_0x1e5b1a});});},'WhatsappQueues':function(_0x5e41ff){return new Promise(function(_0xcc131d,_0x1844f8){var _0x591c54=[];for(var _0x402a52 in _0x538ca5[_0x4b98('0x4f')]){if(_0x538ca5[_0x4b98('0x4f')][_0x4b98('0x42')](_0x402a52)){var _0x5a70a6=_0x538ca5[_0x4b98('0x4f')][_0x402a52];var _0x3dbbd0={'id':_0x5a70a6['id'],'available':_0x5a70a6['available'],'loggedIn':_0x5a70a6[_0x4b98('0x4c')],'name':_0x5a70a6['name'],'paused':_0x5a70a6[_0x4b98('0x48')],'waiting':_0x5a70a6['waiting']};_0x591c54[_0x4b98('0x1e')](_0x3dbbd0);}}_0xcc131d({'count':_0x591c54[_0x4b98('0x15')],'rows':_0x591c54});});},'ChatQueuesWaitingInteractions':function(_0x3b3453){return new Promise(function(_0x2b99b9,_0x5d75e3){var _0x5a254c=_[_0x4b98('0x45')](_0x538ca5[_0x4b98('0x50')]);_0x2b99b9({'count':_0x5a254c[_0x4b98('0x15')],'rows':_0x5a254c});});},'MailQueuesWaitingInteractions':function(_0x15b718){return new Promise(function(_0x4c749d,_0x1eb95a){var _0x3a9be8=_[_0x4b98('0x45')](_0x538ca5[_0x4b98('0x51')]);_0x4c749d({'count':_0x3a9be8['length'],'rows':_0x3a9be8});});},'OpenchannelQueuesWaitingInteractions':function(_0x1f1055){return new Promise(function(_0x39246f,_0x16e968){var _0x37132b=_[_0x4b98('0x45')](_0x538ca5[_0x4b98('0x52')]);_0x39246f({'count':_0x37132b[_0x4b98('0x15')],'rows':_0x37132b});});},'SmsQueuesWaitingInteractions':function(_0xea9df7){return new Promise(function(_0x46305e,_0x1f25a5){var _0x10d5ba=_['values'](_0x538ca5[_0x4b98('0x53')]);_0x46305e({'count':_0x10d5ba[_0x4b98('0x15')],'rows':_0x10d5ba});});},'FaxQueuesWaitingInteractions':function(_0x2204e6){return new Promise(function(_0x4071b3,_0x19df20){var _0x25b378=_[_0x4b98('0x45')](_0x538ca5[_0x4b98('0x54')]);_0x4071b3({'count':_0x25b378['length'],'rows':_0x25b378});});},'WhatsappQueuesWaitingInteractions':function(_0x3f94a5){return new Promise(function(_0x1f11fa,_0x596852){var _0x4e88d3=_[_0x4b98('0x45')](_0x538ca5[_0x4b98('0x55')]);_0x1f11fa({'count':_0x4e88d3[_0x4b98('0x15')],'rows':_0x4e88d3});});}};var _0x8fcf9e=jayson['server'](_0x131aab)['http']();_0x8fcf9e['on'](_0x4b98('0x2d'),function(_0x18f7de){logger[_0x4b98('0x2d')](JSON[_0x4b98('0x32')](_0x18f7de));return _0x2e9e1d(_0x18f7de);});_0x8fcf9e[_0x4b98('0xf')](0x232c,_0x4b98('0x56'),function(){console['log'](_0x4b98('0x57'),0x232c);return _0x470aae('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
+var _0x6569=['hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','util','path','bluebird','../../../config/environment','../../../config/logger','routing','../rpc/mailQueueReport','../rpc/smsQueueReport','format','%s.%s.%s','isNil','IntervalId','Intervals','interval','listen','channel','message','interaction','applications','isArray','length','existsSync','app','.js','toLowerCase','autoreply','appdata','split','push','slice','join','amazonlex','tag','%s:%s:%s','./interval','condition','consequence','Push\x20new\x20rule','intervals','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','rules','execute','Applications\x20executed','stringify','matchPath','emit','complete','info','error','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty'];(function(_0x4d4ae4,_0x1a8702){var _0x23889c=function(_0x2b834e){while(--_0x2b834e){_0x4d4ae4['push'](_0x4d4ae4['shift']());}};_0x23889c(++_0x1a8702);}(_0x6569,0x129));var _0x9656=function(_0x368514,_0x3c57d8){_0x368514=_0x368514-0x0;var _0x1cdea2=_0x6569[_0x368514];return _0x1cdea2;};'use strict';var _=require('lodash');var util=require(_0x9656('0x0'));var path=require(_0x9656('0x1'));var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0x9656('0x2'));var uuid=require('uuid');var config=require(_0x9656('0x3'));var logger=require(_0x9656('0x4'))(_0x9656('0x5'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x9656('0x6')),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require(_0x9656('0x7')),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require('../lib/rule-engine');function getId(_0x3a08bf,_0x23de68,_0x8ae889){return util[_0x9656('0x8')](_0x9656('0x9'),_0x3a08bf,_0x23de68||0x0,_0x8ae889||0x0);}function getIntervals(_0x278cc5,_0x3a3405){var _0x48c927=[];if(!_[_0x9656('0xa')](_0x3a3405[_0x9656('0xb')])&&!_[_0x9656('0xa')](_0x278cc5[_0x3a3405[_0x9656('0xb')]])&&!_[_0x9656('0xa')](_0x278cc5[_0x3a3405[_0x9656('0xb')]][_0x9656('0xc')])){_0x48c927=_['map'](_0x278cc5[_0x3a3405['IntervalId']][_0x9656('0xc')],_0x9656('0xd'));}else if(!_[_0x9656('0xa')](_0x3a3405[_0x9656('0xd')])){_0x48c927=[_0x3a3405[_0x9656('0xd')]];}return _0x48c927;}exports[_0x9656('0xe')]=function(_0x5ad628){_0x5ad628['rules']={};return new BPromise(function(_0x2cd43c,_0xf9b2ab){var _0x16f936={'Start':function(_0x11eaea){var _0xba3327=this;return new Promise(function(_0x47063e,_0xe65744){if(_0x11eaea){try{var _0x239094=[];var _0x3a5675=getId(_0x11eaea[_0x9656('0xf')],_0x11eaea[_0x9656('0x10')]?_0x11eaea[_0x9656('0x10')]['id']:0x0,_0x11eaea[_0x9656('0x11')]?_0x11eaea[_0x9656('0x11')]['id']:0x0);if(_0x11eaea[_0x9656('0x12')]&&_[_0x9656('0x13')](_0x11eaea[_0x9656('0x12')])&&_0x11eaea[_0x9656('0x12')][_0x9656('0x14')]){for(var _0x1bdb95=0x0;_0x1bdb95<_0x11eaea['applications'][_0x9656('0x14')];_0x1bdb95+=0x1){var _0x88ad89=_0x11eaea[_0x9656('0x12')][_0x1bdb95];if(fs[_0x9656('0x15')](path['join'](__dirname,_0x9656('0x12'),_0x88ad89[_0x9656('0x16')]+_0x9656('0x17')))){var _0x5a4f8f=[];switch(_0x88ad89[_0x9656('0x16')][_0x9656('0x18')]()){case _0x9656('0x19'):var _0x1ea36c=_0x88ad89[_0x9656('0x1a')][_0x9656('0x1b')](',');if(_0x11eaea['channel']==='mail'){_0x5a4f8f[_0x9656('0x1c')](_0x1ea36c[0x0]);_0x5a4f8f['push'](_0x1ea36c[0x1]);_0x5a4f8f['push'](_0x1ea36c[_0x9656('0x1d')](0x2,_0x1ea36c[_0x9656('0x14')])['join'](','));}else{_0x5a4f8f[_0x9656('0x1c')](_0x1ea36c[0x0]);_0x5a4f8f[_0x9656('0x1c')](_0x1ea36c[_0x9656('0x1d')](0x1,_0x1ea36c['length'])[_0x9656('0x1e')](','));}break;case'dialogflow':var _0x3c226c=_0x88ad89['appdata'][_0x9656('0x1b')](',');_0x5a4f8f[_0x9656('0x1c')](_0x3c226c[0x0]);_0x5a4f8f['push'](_0x3c226c[0x1]);_0x5a4f8f['push'](_0x3c226c[_0x9656('0x1d')](0x2,_0x3c226c[_0x9656('0x14')])[_0x9656('0x1e')](','));break;case'dialogflowv2':var _0x110a13=_0x88ad89[_0x9656('0x1a')][_0x9656('0x1b')](',');_0x5a4f8f[_0x9656('0x1c')](_0x110a13[0x0]);_0x5a4f8f[_0x9656('0x1c')](_0x110a13[0x1]);_0x5a4f8f[_0x9656('0x1c')](_0x110a13[0x2]);_0x5a4f8f[_0x9656('0x1c')](_0x110a13[0x3]);_0x5a4f8f[_0x9656('0x1c')](_0x110a13[_0x9656('0x1d')](0x4,_0x110a13[_0x9656('0x14')])['join'](','));break;case _0x9656('0x1f'):var _0x507976=_0x88ad89['appdata']['split'](',');_0x5a4f8f[_0x9656('0x1c')](_0x507976[0x0]);_0x5a4f8f[_0x9656('0x1c')](_0x507976[0x1]);_0x5a4f8f[_0x9656('0x1c')](_0x507976[0x2]);_0x5a4f8f[_0x9656('0x1c')](_0x507976[0x3]);_0x5a4f8f[_0x9656('0x1c')](_0x507976['slice'](0x4,_0x507976[_0x9656('0x14')])[_0x9656('0x1e')](','));break;case _0x9656('0x10'):_0x5a4f8f[_0x9656('0x1c')](_0x88ad89[_0x9656('0x1a')]);break;case _0x9656('0x20'):_0x5a4f8f[_0x9656('0x1c')](_0x88ad89['TagId']);_0x5a4f8f['push'](_0x88ad89[_0x9656('0x1a')]);break;default:_0x5a4f8f=_[_0x9656('0xa')](_0x88ad89[_0x9656('0x1a')])?[]:_0x88ad89[_0x9656('0x1a')][_0x9656('0x1b')](',');}var _0x678a09={'id':util[_0x9656('0x8')](_0x9656('0x21'),_0x3a5675,_0x88ad89['id'],_0x88ad89[_0x9656('0x16')]),'condition':require(_0x9656('0x22'))[_0x9656('0x23')](_0x3a5675,getIntervals(_0x5ad628['intervals'],_0x88ad89),_0x5ad628),'consequence':require('./applications/'+_0x88ad89[_0x9656('0x16')])[_0x9656('0x24')](_0x3a5675,_0x5a4f8f,_0x5ad628,_0x11eaea),'p':_0x88ad89['priority']||0x0};logger['info'](_0x9656('0x25'),_0x678a09['id'],'on\x20interval',getIntervals(_0x5ad628[_0x9656('0x26')],_0x88ad89)[_0x9656('0x1e')](_0x9656('0x27')));_0x239094[_0x9656('0x1c')](_0x678a09);}else{logger['error'](_0x9656('0x28'),path['join'](__dirname,'applications',_0x88ad89[_0x9656('0x16')]+_0x9656('0x17')));}}_0x5ad628[_0x9656('0x29')][_0x3a5675]=new RuleEngine(_0x239094);_0x5ad628[_0x9656('0x29')][_0x3a5675][_0x9656('0x2a')](_0x11eaea,function(_0x4fc93b){logger['info'](_0x9656('0x2b'),JSON[_0x9656('0x2c')](_0x4fc93b[_0x9656('0x2d')]));if(_0x5ad628[_0x9656('0x29')][_0x3a5675]){_0x5ad628[_0x9656('0x29')][_0x3a5675][_0x9656('0x2e')](_0x9656('0x2f'));}});return _0x47063e({'code':0xc8,'message':_0x11eaea});}else{logger[_0x9656('0x30')]('No\x20applications\x20to\x20execute');return _0x47063e({'code':0xc8,'message':_0x11eaea});}}catch(_0x108b8a){logger[_0x9656('0x31')](_0x108b8a[_0x9656('0x32')]);return _0xe65744(_0xba3327[_0x9656('0x31')](0x1f4,_0x108b8a));}}return _0xe65744(_0x9656('0x33'));});},'AcceptMessage':function(_0x2c72ff){var _0x94c80d=this;return new Promise(function(_0x414886,_0x3b4fbd){if(_0x2c72ff[_0x9656('0x34')]&&_0x2c72ff['agent']['id']){if(_0x5ad628[_0x9656('0x35')][_0x2c72ff[_0x9656('0x34')]['id']]){_0x5ad628[_0x9656('0x35')][_0x2c72ff['agent']['id']][_0x9656('0x36')]=![];_0x5ad628['agents'][_0x2c72ff[_0x9656('0x34')]['id']][_0x9656('0x37')]=undefined;}}if(_0x2c72ff[_0x9656('0x10')]&&_0x2c72ff[_0x9656('0x10')]['id']){try{var _0x118868=getId(_0x2c72ff[_0x9656('0xf')],_0x2c72ff[_0x9656('0x10')]?_0x2c72ff['message']['id']:0x0,_0x2c72ff['interaction']?_0x2c72ff[_0x9656('0x11')]['id']:0x0);if(_0x5ad628[_0x9656('0x29')][_0x118868]){_0x5ad628[_0x9656('0x29')][_0x118868][_0x9656('0x2e')](_0x9656('0x38'));if(rpc[_0x2c72ff[_0x9656('0xf')]+_0x9656('0x39')]){rpc[_0x2c72ff[_0x9656('0xf')]+_0x9656('0x39')][_0x9656('0x3a')](_0x118868,{'UserId':_0x2c72ff[_0x9656('0x10')][_0x9656('0x3b')]})[_0x9656('0x3c')](function(_0x5ab36d){logger[_0x9656('0x31')](_0x9656('0x3d'));});}}return _0x414886({'code':0xc8,'message':_0x2c72ff});}catch(_0x2a5cdd){logger[_0x9656('0x31')](_0x2a5cdd[_0x9656('0x32')]);return _0x3b4fbd(_0x94c80d[_0x9656('0x31')](0x1f4,_0x2a5cdd));}}logger[_0x9656('0x31')](_0x9656('0x3e'));return _0x3b4fbd(_0x94c80d[_0x9656('0x31')](0x1f4,_0x9656('0x3e')));});},'RejectMessage':function(_0x25d900){var _0x359220=this;return new Promise(function(_0x47f75a,_0x5c98e7){if(_0x25d900[_0x9656('0x34')]&&_0x25d900[_0x9656('0x34')]['id']){try{if(_0x5ad628[_0x9656('0x35')][_0x25d900[_0x9656('0x34')]['id']]){_0x5ad628[_0x9656('0x35')][_0x25d900[_0x9656('0x34')]['id']][_0x9656('0x36')]=![];_0x5ad628[_0x9656('0x35')][_0x25d900[_0x9656('0x34')]['id']]['busyQueue']=undefined;}return _0x47f75a({'code':0xc8,'message':_0x25d900});}catch(_0x28f842){logger[_0x9656('0x31')](_0x28f842[_0x9656('0x32')]);return _0x5c98e7(_0x359220['error'](0x1f4,_0x28f842));}}logger[_0x9656('0x31')](_0x9656('0x3e'));return _0x5c98e7(_0x359220['error'](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x5295c7){var _0x30632c=this;return new Promise(function(_0x43415c,_0x34ddd6){if(_0x5295c7[_0x9656('0xf')]&&_0x5295c7[_0x9656('0x11')]&&_0x5295c7[_0x9656('0x11')]['id']){try{var _0x186636=getId(_0x5295c7[_0x9656('0xf')],_0x5295c7['message']?_0x5295c7[_0x9656('0x10')]['id']:0x0,_0x5295c7[_0x9656('0x11')]?_0x5295c7[_0x9656('0x11')]['id']:0x0);if(_0x5ad628[_0x9656('0x29')][_0x186636]){_0x5ad628[_0x9656('0x29')][_0x186636][_0x9656('0x2e')](_0x9656('0x38'));}return _0x43415c({'code':0xc8,'message':_0x5295c7});}catch(_0x3353b7){logger[_0x9656('0x31')](_0x3353b7[_0x9656('0x32')]);return _0x34ddd6(_0x30632c[_0x9656('0x31')](0x1f4,_0x3353b7));}}logger[_0x9656('0x31')](_0x9656('0x3e'));return _0x34ddd6(_0x30632c['error'](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x54788d){var _0x6ecd2d=this;return new Promise(function(_0x21d89f,_0x3bf2ee){if(_0x5ad628['agents'][_0x9656('0x3f')](_0x54788d['id'])){for(var _0x5c77bc in _0x54788d[_0x9656('0x40')]){if(_0x54788d['capacity'][_0x9656('0x3f')](_0x5c77bc)){if(_0x5ad628[_0x9656('0x35')][_0x54788d['id']][_0x9656('0x3f')](_0x5c77bc+_0x9656('0x41'))){_0x5ad628[_0x9656('0x35')][_0x54788d['id']][_0x5c77bc+_0x9656('0x41')]=parseInt(_0x54788d[_0x9656('0x40')][_0x5c77bc],0xa);}}}_0x5ad628[_0x9656('0x35')][_0x54788d['id']][_0x9656('0x42')]();return _0x21d89f({'code':0xc8,'message':_0x5ad628['agents'][_0x54788d['id']]});}else{return _0x3bf2ee(_0x6ecd2d[_0x9656('0x31')](0x1f4,_0x9656('0x43')));}});},'Agents':function(_0x3d95ba){return new Promise(function(_0x2018c2,_0x533114){var _0x232253=_[_0x9656('0x44')](_0x5ad628[_0x9656('0x35')]);_0x2018c2({'count':_0x232253[_0x9656('0x14')],'rows':_0x232253});});},'ChatQueues':function(_0x3b4cb7){return new Promise(function(_0x2984e2,_0x539ebd){var _0x57c6bd=[];for(var _0x3fb7b6 in _0x5ad628[_0x9656('0x45')]){if(_0x5ad628['chatQueues']['hasOwnProperty'](_0x3fb7b6)){var _0x4f4d8b=_0x5ad628[_0x9656('0x45')][_0x3fb7b6];var _0x24d141={'id':_0x4f4d8b['id'],'available':_0x4f4d8b[_0x9656('0x46')],'loggedIn':_0x4f4d8b[_0x9656('0x47')],'name':_0x4f4d8b[_0x9656('0x48')],'paused':_0x4f4d8b[_0x9656('0x49')],'waiting':_0x4f4d8b[_0x9656('0x4a')]};_0x57c6bd[_0x9656('0x1c')](_0x24d141);}}_0x2984e2({'count':_0x57c6bd[_0x9656('0x14')],'rows':_0x57c6bd});});},'MailQueues':function(_0x45bf73){return new Promise(function(_0x1141bb,_0x3ab6bd){var _0x36bbef=[];for(var _0x237fd7 in _0x5ad628[_0x9656('0x4b')]){if(_0x5ad628[_0x9656('0x4b')][_0x9656('0x3f')](_0x237fd7)){var _0x227264=_0x5ad628[_0x9656('0x4b')][_0x237fd7];var _0x29c685={'id':_0x227264['id'],'available':_0x227264[_0x9656('0x46')],'loggedIn':_0x227264[_0x9656('0x47')],'name':_0x227264[_0x9656('0x48')],'paused':_0x227264[_0x9656('0x49')],'waiting':_0x227264['waiting']};_0x36bbef[_0x9656('0x1c')](_0x29c685);}}_0x1141bb({'count':_0x36bbef[_0x9656('0x14')],'rows':_0x36bbef});});},'OpenchannelQueues':function(_0x16428c){return new Promise(function(_0x2ac948,_0xa1b0c0){var _0x265fa1=[];for(var _0x385fad in _0x5ad628[_0x9656('0x4c')]){if(_0x5ad628['openchannelQueues'][_0x9656('0x3f')](_0x385fad)){var _0x409ef5=_0x5ad628[_0x9656('0x4c')][_0x385fad];var _0x381e5e={'id':_0x409ef5['id'],'available':_0x409ef5['available'],'loggedIn':_0x409ef5[_0x9656('0x47')],'name':_0x409ef5[_0x9656('0x48')],'paused':_0x409ef5[_0x9656('0x49')],'waiting':_0x409ef5[_0x9656('0x4a')]};_0x265fa1[_0x9656('0x1c')](_0x381e5e);}}_0x2ac948({'count':_0x265fa1['length'],'rows':_0x265fa1});});},'SmsQueues':function(_0x1cb926){return new Promise(function(_0x2f5b77,_0x2e4611){var _0x265cab=[];for(var _0x380f48 in _0x5ad628[_0x9656('0x4d')]){if(_0x5ad628[_0x9656('0x4d')][_0x9656('0x3f')](_0x380f48)){var _0x192593=_0x5ad628['smsQueues'][_0x380f48];var _0x530bdf={'id':_0x192593['id'],'available':_0x192593[_0x9656('0x46')],'loggedIn':_0x192593[_0x9656('0x47')],'name':_0x192593['name'],'paused':_0x192593[_0x9656('0x49')],'waiting':_0x192593[_0x9656('0x4a')]};_0x265cab[_0x9656('0x1c')](_0x530bdf);}}_0x2f5b77({'count':_0x265cab[_0x9656('0x14')],'rows':_0x265cab});});},'FaxQueues':function(_0x3af660){return new Promise(function(_0x3cb0b4,_0x4d157b){var _0x225f79=[];for(var _0x50bdaa in _0x5ad628[_0x9656('0x4e')]){if(_0x5ad628[_0x9656('0x4e')]['hasOwnProperty'](_0x50bdaa)){var _0x125f11=_0x5ad628[_0x9656('0x4e')][_0x50bdaa];var _0x1a8427={'id':_0x125f11['id'],'available':_0x125f11['available'],'loggedIn':_0x125f11[_0x9656('0x47')],'name':_0x125f11[_0x9656('0x48')],'paused':_0x125f11[_0x9656('0x49')],'waiting':_0x125f11[_0x9656('0x4a')]};_0x225f79[_0x9656('0x1c')](_0x1a8427);}}_0x3cb0b4({'count':_0x225f79[_0x9656('0x14')],'rows':_0x225f79});});},'WhatsappQueues':function(_0x738b62){return new Promise(function(_0x1d1644,_0x12ecfc){var _0x1f2acc=[];for(var _0xe39cd8 in _0x5ad628[_0x9656('0x4f')]){if(_0x5ad628[_0x9656('0x4f')][_0x9656('0x3f')](_0xe39cd8)){var _0x1772c9=_0x5ad628[_0x9656('0x4f')][_0xe39cd8];var _0x3e9fcf={'id':_0x1772c9['id'],'available':_0x1772c9[_0x9656('0x46')],'loggedIn':_0x1772c9['loggedIn'],'name':_0x1772c9[_0x9656('0x48')],'paused':_0x1772c9[_0x9656('0x49')],'waiting':_0x1772c9['waiting']};_0x1f2acc[_0x9656('0x1c')](_0x3e9fcf);}}_0x1d1644({'count':_0x1f2acc[_0x9656('0x14')],'rows':_0x1f2acc});});},'ChatQueuesWaitingInteractions':function(_0x828efd){return new Promise(function(_0x5ceff3,_0x34b8b7){var _0x184279=_[_0x9656('0x44')](_0x5ad628[_0x9656('0x50')]);_0x5ceff3({'count':_0x184279[_0x9656('0x14')],'rows':_0x184279});});},'MailQueuesWaitingInteractions':function(_0x57c83c){return new Promise(function(_0xc0a528,_0x3ea514){var _0x527c44=_[_0x9656('0x44')](_0x5ad628[_0x9656('0x51')]);_0xc0a528({'count':_0x527c44[_0x9656('0x14')],'rows':_0x527c44});});},'OpenchannelQueuesWaitingInteractions':function(_0x109898){return new Promise(function(_0xb8755e,_0xb7f86b){var _0x34373c=_[_0x9656('0x44')](_0x5ad628[_0x9656('0x52')]);_0xb8755e({'count':_0x34373c[_0x9656('0x14')],'rows':_0x34373c});});},'SmsQueuesWaitingInteractions':function(_0x758118){return new Promise(function(_0x124961,_0xb1dad6){var _0x453852=_[_0x9656('0x44')](_0x5ad628['smsQueuesWaitingInteractions']);_0x124961({'count':_0x453852[_0x9656('0x14')],'rows':_0x453852});});},'FaxQueuesWaitingInteractions':function(_0x1817af){return new Promise(function(_0x543e57,_0x3f84c0){var _0x4ffc4c=_[_0x9656('0x44')](_0x5ad628[_0x9656('0x53')]);_0x543e57({'count':_0x4ffc4c[_0x9656('0x14')],'rows':_0x4ffc4c});});},'WhatsappQueuesWaitingInteractions':function(_0x493fe7){return new Promise(function(_0x5a8086,_0x4d9fc0){var _0x3a160e=_[_0x9656('0x44')](_0x5ad628[_0x9656('0x54')]);_0x5a8086({'count':_0x3a160e[_0x9656('0x14')],'rows':_0x3a160e});});}};var _0x1d4726=jayson[_0x9656('0x55')](_0x16f936)[_0x9656('0x56')]();_0x1d4726['on'](_0x9656('0x31'),function(_0x56897e){logger[_0x9656('0x31')](JSON[_0x9656('0x2c')](_0x56897e));return _0xf9b2ab(_0x56897e);});_0x1d4726[_0x9656('0xe')](0x232c,_0x9656('0x57'),function(){console[_0x9656('0x58')](_0x9656('0x59'),0x232c);return _0x2cd43c('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
index 4e7f12b..dcb1084 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71f3=['routing','http','request','error','message','condition','rules','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','format','indexOf','catch','[%s][INTERVAL]\x20%s','all','then','some','info','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','stack','util','bluebird','jayson/promise'];(function(_0x950910,_0x25848c){var _0xdf958b=function(_0x5507a9){while(--_0x5507a9){_0x950910['push'](_0x950910['shift']());}};_0xdf958b(++_0x25848c);}(_0x71f3,0x69));var _0x371f=function(_0x3911a1,_0x2a8237){_0x3911a1=_0x3911a1-0x0;var _0x32c7ec=_0x71f3[_0x3911a1];return _0x32c7ec;};'use strict';var util=require(_0x371f('0x0'));var BPromise=require(_0x371f('0x1'));var jayson=require(_0x371f('0x2'));var _=require('lodash');var logger=require('../../../config/logger')(_0x371f('0x3'));var client=jayson['client'][_0x371f('0x4')]({'port':0x232a});function request(_0x52409d,_0xeec6b){return new BPromise(function(_0x439e33,_0x247644){return client[_0x371f('0x5')](_0x52409d,_0xeec6b)['then'](function(_0x2ca96e){if(_0x2ca96e[_0x371f('0x6')]){return _0x247644(_0x2ca96e[_0x371f('0x6')][_0x371f('0x7')]);}else{return _0x439e33(_0x2ca96e['result']);}})['catch'](function(_0x43ae87){return _0x247644(_0x43ae87);});});}exports[_0x371f('0x8')]=function(_0x1ba10f,_0x3cbaa3,_0x1de718){return function(_0xaf92c7){if(_0x1de718[_0x371f('0x9')]&&!_0x1de718[_0x371f('0x9')][_0x1ba10f]){logger['info'](_0x371f('0xa'),_0x1ba10f);return _0xaf92c7[_0x371f('0xb')]();}var _0x7a9452=[];for(var _0x4836dc=0x0;_0x4836dc<_0x3cbaa3[_0x371f('0xc')];_0x4836dc+=0x1){_0x7a9452[_0x371f('0xd')](request('Command',{'command':util[_0x371f('0xe')]('iftime\x20%s',_0x3cbaa3[_0x4836dc])})['then'](function(_0x41d6d7){return _0x41d6d7&&_0x41d6d7[_0x371f('0x7')]&&_0x41d6d7['message'][_0x371f('0xf')]('true')>=0x0?!![]:![];})[_0x371f('0x10')](function(_0x53f66e){logger['error'](_0x371f('0x11'),_0x1ba10f,_0x3cbaa3[_0x4836dc]);}));}BPromise[_0x371f('0x12')](_0x7a9452)[_0x371f('0x13')](function(_0x295947){var _0x3716cb=_[_0x371f('0x14')](_0x295947);logger[_0x371f('0x15')](_0x371f('0x16'),_0x1ba10f,_0x3cbaa3[_0x371f('0x17')](_0x371f('0x18')),_0x3716cb);_0xaf92c7[_0x371f('0x19')](_0x3716cb);})['catch'](function(_0x20f7b1){console['log'](_0x20f7b1);logger['error'](_0x371f('0x16'),_0x1ba10f,_0x3cbaa3[_0x371f('0x17')](_0x371f('0x18')),_0x20f7b1[_0x371f('0x1a')]);_0xaf92c7[_0x371f('0xb')]();});};};
\ No newline at end of file
+var _0x6abf=['some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','log','stack','util','jayson/promise','lodash','../../../config/logger','routing','client','http','request','error','message','catch','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','push','Command','format','iftime\x20%s','then','true','[%s][INTERVAL]\x20%s'];(function(_0x144497,_0x1e2160){var _0x278ddb=function(_0x5ea137){while(--_0x5ea137){_0x144497['push'](_0x144497['shift']());}};_0x278ddb(++_0x1e2160);}(_0x6abf,0x133));var _0xf6ab=function(_0x2768d1,_0x432caf){_0x2768d1=_0x2768d1-0x0;var _0x3086a7=_0x6abf[_0x2768d1];return _0x3086a7;};'use strict';var util=require(_0xf6ab('0x0'));var BPromise=require('bluebird');var jayson=require(_0xf6ab('0x1'));var _=require(_0xf6ab('0x2'));var logger=require(_0xf6ab('0x3'))(_0xf6ab('0x4'));var client=jayson[_0xf6ab('0x5')][_0xf6ab('0x6')]({'port':0x232a});function request(_0xbc2a94,_0x5679f6){return new BPromise(function(_0x2e94d5,_0x596174){return client[_0xf6ab('0x7')](_0xbc2a94,_0x5679f6)['then'](function(_0x2f8092){if(_0x2f8092['error']){return _0x596174(_0x2f8092[_0xf6ab('0x8')][_0xf6ab('0x9')]);}else{return _0x2e94d5(_0x2f8092['result']);}})[_0xf6ab('0xa')](function(_0x1d2a08){return _0x596174(_0x1d2a08);});});}exports[_0xf6ab('0xb')]=function(_0x125f0d,_0xda9763,_0xbccabf){return function(_0x1cc073){if(_0xbccabf[_0xf6ab('0xc')]&&!_0xbccabf[_0xf6ab('0xc')][_0x125f0d]){logger[_0xf6ab('0xd')](_0xf6ab('0xe'),_0x125f0d);return _0x1cc073[_0xf6ab('0xf')]();}var _0x44cf2a=[];for(var _0x17da68=0x0;_0x17da68<_0xda9763['length'];_0x17da68+=0x1){_0x44cf2a[_0xf6ab('0x10')](request(_0xf6ab('0x11'),{'command':util[_0xf6ab('0x12')](_0xf6ab('0x13'),_0xda9763[_0x17da68])})[_0xf6ab('0x14')](function(_0x1d3744){return _0x1d3744&&_0x1d3744[_0xf6ab('0x9')]&&_0x1d3744[_0xf6ab('0x9')]['indexOf'](_0xf6ab('0x15'))>=0x0?!![]:![];})[_0xf6ab('0xa')](function(_0x44e8da){logger[_0xf6ab('0x8')](_0xf6ab('0x16'),_0x125f0d,_0xda9763[_0x17da68]);}));}BPromise['all'](_0x44cf2a)['then'](function(_0x30b11c){var _0x8faddb=_[_0xf6ab('0x17')](_0x30b11c);logger['info'](_0xf6ab('0x18'),_0x125f0d,_0xda9763[_0xf6ab('0x19')](_0xf6ab('0x1a')),_0x8faddb);_0x1cc073[_0xf6ab('0x1b')](_0x8faddb);})[_0xf6ab('0xa')](function(_0x4385f3){console[_0xf6ab('0x1c')](_0x4385f3);logger[_0xf6ab('0x8')](_0xf6ab('0x18'),_0x125f0d,_0xda9763[_0xf6ab('0x19')](_0xf6ab('0x1a')),_0x4385f3[_0xf6ab('0x1d')]);_0x1cc073['stop']();});};};
\ No newline at end of file
index ad195e0..623cbf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe57=['agentringnoanswer','isNil','debug','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','now','timeout','reason','ringtime','talktime','push','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','agentringnoanswerAt','abandoned','holdtime','agentconnect','connectedlinename','connect','answered_elsewhere','answeredelsewheremembername','[%s][agents][agentconnect]','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','agentconnectAt','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','transferexten','extension','transferuniqueid','[%s][agents][blindtransfer]','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','cause','rejected','splice','agent','lodash','util','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','type','agentcomplete','acw','agentacw','CreateVoiceAgentReport','request','agentcalled','destuniqueid','agentcalledAt','called','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error'];(function(_0x78906c,_0x3bd253){var _0x4ae401=function(_0x4f5f4b){while(--_0x4f5f4b){_0x78906c['push'](_0x78906c['shift']());}};_0x4ae401(++_0x3bd253);}(_0xfe57,0x195));var _0x7fe5=function(_0x2de0a7,_0x38d3e7){_0x2de0a7=_0x2de0a7-0x0;var _0x429437=_0xfe57[_0x2de0a7];return _0x429437;};'use strict';var _=require(_0x7fe5('0x0'));var util=require(_0x7fe5('0x1'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x581f71,_0x3f7dca){utils[_0x7fe5('0x2')](util[_0x7fe5('0x3')](_0x7fe5('0x4'),_0x581f71[_0x7fe5('0x5')],_0x581f71[_0x7fe5('0x6')],_0x581f71[_0x7fe5('0x7')],_0x581f71[_0x7fe5('0x8')],_0x581f71[_0x7fe5('0x9')],_0x581f71[_0x7fe5('0xa')],_0x581f71[_0x7fe5('0xb')],_0x581f71[_0x7fe5('0xc')]));if(_0x581f71[_0x7fe5('0x7')]){utils['getVoiceQueueByName'](_0x581f71[_0x7fe5('0x7')])['then'](function(_0x3564f1){if(_0x3564f1){_0x581f71[_0x7fe5('0xd')]=_0x3564f1['type'];_0x581f71['agentacw']=_0x581f71[_0x7fe5('0xe')]?_0x3564f1[_0x7fe5('0xf')]:![];_0x581f71['acwtime']=_0x581f71[_0x7fe5('0x10')]?_0x3564f1['acwTimeout']:0x0;}utils['request'](_0x7fe5('0x11'),_0x581f71);});}else{utils[_0x7fe5('0x12')](_0x7fe5('0x11'),_0x581f71);}if(_0x3f7dca){delete transfers[_0x581f71[_0x7fe5('0x5')]];}else{delete agents[_0x581f71['destuniqueid']];}}exports[_0x7fe5('0x13')]=function(_0x16bed9){try{utils['debug'](util[_0x7fe5('0x3')]('[%s][agents][agentcalled]',_0x16bed9[_0x7fe5('0x5')]),_0x16bed9);agents[_0x16bed9[_0x7fe5('0x14')]]=_0x16bed9;agents[_0x16bed9['destuniqueid']][_0x7fe5('0x15')]=utils['now']();agents[_0x16bed9[_0x7fe5('0x14')]][_0x7fe5('0xc')]=_0x7fe5('0x16');agents[_0x16bed9[_0x7fe5('0x14')]][_0x7fe5('0xb')]=null;agents[_0x16bed9[_0x7fe5('0x14')]]['connectedlinename']=null;utils[_0x7fe5('0x2')](util[_0x7fe5('0x3')](_0x7fe5('0x17'),_0x16bed9[_0x7fe5('0x5')],agents[_0x16bed9[_0x7fe5('0x14')]][_0x7fe5('0x8')],_0x16bed9[_0x7fe5('0x14')]));}catch(_0x29b0bd){utils[_0x7fe5('0x18')](util[_0x7fe5('0x3')]('[%s][agents][agentcalled]',_0x16bed9['uniqueid']),_0x29b0bd);}};exports[_0x7fe5('0x19')]=function(_0x459c2d){try{if(!_[_0x7fe5('0x1a')](agents[_0x459c2d[_0x7fe5('0x14')]])){utils[_0x7fe5('0x1b')](util[_0x7fe5('0x3')](_0x7fe5('0x1c'),_0x459c2d[_0x7fe5('0x5')]),_0x459c2d);utils[_0x7fe5('0x2')](util[_0x7fe5('0x3')](_0x7fe5('0x1d'),_0x459c2d[_0x7fe5('0x5')],agents[_0x459c2d['destuniqueid']][_0x7fe5('0x8')],_0x459c2d[_0x7fe5('0x14')]));agents[_0x459c2d[_0x7fe5('0x14')]]['agentringnoanswer']=!![];agents[_0x459c2d[_0x7fe5('0x14')]]['agentringnoanswerAt']=utils[_0x7fe5('0x1e')]();agents[_0x459c2d['destuniqueid']][_0x7fe5('0xc')]=_0x7fe5('0x1f');agents[_0x459c2d[_0x7fe5('0x14')]][_0x7fe5('0x20')]=_0x7fe5('0x1f');agents[_0x459c2d[_0x7fe5('0x14')]]['holdtime']=_0x459c2d['ringtime']?parseInt(_0x459c2d[_0x7fe5('0x21')])/0x3e8:0x0;agents[_0x459c2d[_0x7fe5('0x14')]][_0x7fe5('0x22')]=0x0;unanswered[_0x7fe5('0x23')](_0x459c2d['destuniqueid']);}}catch(_0x46f816){utils['error'](util[_0x7fe5('0x3')](_0x7fe5('0x1c'),_0x459c2d[_0x7fe5('0x5')]),_0x46f816);}};exports[_0x7fe5('0x24')]=function(_0x1f8572){try{_[_0x7fe5('0x25')](agents,function(_0x5c07f0,_0xe521c6){if(_0x5c07f0[_0x7fe5('0x5')]==_0x1f8572['uniqueid']&&!_[_0x7fe5('0x26')](unanswered,_0x5c07f0[_0x7fe5('0x14')])){utils[_0x7fe5('0x1b')](util[_0x7fe5('0x3')](_0x7fe5('0x27'),_0x1f8572['uniqueid']),_0x1f8572);utils['info'](util[_0x7fe5('0x3')](_0x7fe5('0x28'),_0x1f8572[_0x7fe5('0x5')],_0x5c07f0[_0x7fe5('0x8')],_0x5c07f0['destuniqueid']));_0x5c07f0[_0x7fe5('0x19')]=!![];_0x5c07f0[_0x7fe5('0x29')]=utils[_0x7fe5('0x1e')]();_0x5c07f0[_0x7fe5('0xc')]=_0x7fe5('0x2a');_0x5c07f0[_0x7fe5('0x20')]='abandoned';_0x5c07f0[_0x7fe5('0x2b')]=_0x1f8572[_0x7fe5('0x2b')];_0x5c07f0[_0x7fe5('0x22')]=0x0;writeDB(_0x5c07f0);}});}catch(_0x39cfe9){utils['error'](util['format'](_0x7fe5('0x27'),_0x1f8572['uniqueid']),_0x39cfe9);}};exports[_0x7fe5('0x2c')]=function(_0x513680){try{if(agents[_0x513680[_0x7fe5('0x14')]]){utils['debug'](util['format']('[%s][agents][agentconnect]',_0x513680['uniqueid']),_0x513680);utils[_0x7fe5('0x2')](util[_0x7fe5('0x3')]('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x513680[_0x7fe5('0x5')],agents[_0x513680[_0x7fe5('0x14')]]['membername'],_0x513680[_0x7fe5('0x14')]));agents[_0x513680['destuniqueid']]['agentconnectAt']=utils[_0x7fe5('0x1e')]();agents[_0x513680[_0x7fe5('0x14')]][_0x7fe5('0xb')]=_0x513680[_0x7fe5('0xb')];agents[_0x513680[_0x7fe5('0x14')]]['connectedlinename']=_0x513680[_0x7fe5('0x2d')];agents[_0x513680[_0x7fe5('0x14')]]['holdtime']=_0x513680[_0x7fe5('0x21')];agents[_0x513680[_0x7fe5('0x14')]][_0x7fe5('0xc')]=_0x7fe5('0x2e');_[_0x7fe5('0x25')](agents,function(_0x1c81c8,_0x1a14e3){if(_0x1c81c8['destuniqueid']!=_0x513680['destuniqueid']&&_0x1c81c8[_0x7fe5('0x5')]==_0x513680['uniqueid']){_0x1c81c8[_0x7fe5('0x22')]=0x0;_0x1c81c8[_0x7fe5('0x2b')]=_0x513680['ringtime'];_0x1c81c8[_0x7fe5('0x19')]=!![];_0x1c81c8[_0x7fe5('0x29')]=utils[_0x7fe5('0x1e')]();_0x1c81c8[_0x7fe5('0xc')]=_0x7fe5('0x2f');_0x1c81c8[_0x7fe5('0x20')]=_0x7fe5('0x2f');_0x1c81c8['answeredelsewheredestinationuniqueid']=_0x513680['destuniqueid'];_0x1c81c8[_0x7fe5('0x30')]=_0x513680['membername'];writeDB(_0x1c81c8);}});}}catch(_0xad0b05){utils[_0x7fe5('0x18')](util[_0x7fe5('0x3')](_0x7fe5('0x31'),_0x513680['uniqueid']),_0xad0b05);}};exports[_0x7fe5('0xe')]=function(_0x5439bc){try{if(!_['isNil'](agents[_0x5439bc[_0x7fe5('0x14')]])){utils[_0x7fe5('0x1b')](util['format'](_0x7fe5('0x32'),_0x5439bc[_0x7fe5('0x5')]),_0x5439bc);utils[_0x7fe5('0x2')](util[_0x7fe5('0x3')](_0x7fe5('0x33'),_0x5439bc['uniqueid'],agents[_0x5439bc[_0x7fe5('0x14')]][_0x7fe5('0x8')],_0x5439bc['destuniqueid']));agents[_0x5439bc[_0x7fe5('0x14')]][_0x7fe5('0xe')]=!![];agents[_0x5439bc[_0x7fe5('0x14')]][_0x7fe5('0x34')]=utils['now']();agents[_0x5439bc[_0x7fe5('0x14')]][_0x7fe5('0x22')]=utils[_0x7fe5('0x35')](agents[_0x5439bc['destuniqueid']][_0x7fe5('0x34')],agents[_0x5439bc[_0x7fe5('0x14')]][_0x7fe5('0x36')]);agents[_0x5439bc['destuniqueid']][_0x7fe5('0x20')]=_0x5439bc[_0x7fe5('0x20')];agents[_0x5439bc[_0x7fe5('0x14')]]['lastevent']=_0x7fe5('0x37');writeDB(agents[_0x5439bc[_0x7fe5('0x14')]]);}}catch(_0x1ac93a){utils[_0x7fe5('0x18')](util[_0x7fe5('0x3')](_0x7fe5('0x32'),_0x5439bc[_0x7fe5('0x5')]),_0x1ac93a);}};exports[_0x7fe5('0x38')]=function(_0x446f01){try{if(!_[_0x7fe5('0x1a')](agents[_0x446f01[_0x7fe5('0x39')]])){utils['debug'](util['format']('[%s][agents][blindtransfer]',_0x446f01['uniqueid']),_0x446f01);utils[_0x7fe5('0x2')](util['format'](_0x7fe5('0x3a'),_0x446f01[_0x7fe5('0x5')],agents[_0x446f01[_0x7fe5('0x39')]][_0x7fe5('0x8')],agents[_0x446f01[_0x7fe5('0x39')]]['uniqueid']));agents[_0x446f01[_0x7fe5('0x39')]][_0x7fe5('0x3b')]=!![];agents[_0x446f01[_0x7fe5('0x39')]][_0x7fe5('0x3c')]=_0x7fe5('0x3d');agents[_0x446f01[_0x7fe5('0x39')]][_0x7fe5('0x3e')]=_0x446f01[_0x7fe5('0x3f')];agents[_0x446f01[_0x7fe5('0x39')]][_0x7fe5('0x40')]=agents[_0x446f01['transfereruniqueid']][_0x7fe5('0x5')];}}catch(_0x401d05){utils[_0x7fe5('0x18')](util[_0x7fe5('0x3')](_0x7fe5('0x41'),_0x446f01[_0x7fe5('0x5')]),_0x401d05);}};exports['attendedtransfer']=function(_0x31a196){try{utils[_0x7fe5('0x1b')](util[_0x7fe5('0x3')](_0x7fe5('0x42'),_0x31a196[_0x7fe5('0x43')]),_0x31a196);if(_0x31a196[_0x7fe5('0x43')]==_0x31a196[_0x7fe5('0x44')]){if(!_['isNil'](agents[_0x31a196[_0x7fe5('0x45')]])){utils[_0x7fe5('0x2')](util[_0x7fe5('0x3')](_0x7fe5('0x46'),_0x31a196[_0x7fe5('0x43')],agents[_0x31a196['secondtransfereruniqueid']][_0x7fe5('0x8')]));agents[_0x31a196[_0x7fe5('0x45')]][_0x7fe5('0x3b')]=!![];agents[_0x31a196[_0x7fe5('0x45')]]['transfertype']=_0x7fe5('0x47');agents[_0x31a196[_0x7fe5('0x45')]][_0x7fe5('0x3e')]=_0x31a196[_0x7fe5('0x48')];agents[_0x31a196[_0x7fe5('0x45')]][_0x7fe5('0x40')]=_0x31a196[_0x7fe5('0x43')];}if(_0x31a196[_0x7fe5('0x49')]&&agents[_0x31a196[_0x7fe5('0x49')]]){agents[_0x31a196[_0x7fe5('0x49')]][_0x7fe5('0x4a')]=0x1;transfers[_0x31a196['transfereeuniqueid']]=_[_0x7fe5('0x4b')](agents[_0x31a196[_0x7fe5('0x49')]]);transfers[_0x31a196[_0x7fe5('0x49')]]['calleridnum']=agents[_0x31a196['secondtransfereruniqueid']][_0x7fe5('0xa')];transfers[_0x31a196['transfereeuniqueid']][_0x7fe5('0x4c')]=agents[_0x31a196[_0x7fe5('0x45')]]['calleridname'];transfers[_0x31a196[_0x7fe5('0x49')]]['agentcalledAt']=utils[_0x7fe5('0x1e')]();transfers[_0x31a196[_0x7fe5('0x49')]][_0x7fe5('0x36')]=utils[_0x7fe5('0x1e')]();transfers[_0x31a196[_0x7fe5('0x49')]][_0x7fe5('0x2b')]=0x0;transfers[_0x31a196['transfereeuniqueid']]['agententerreason']=0x2;}}else if(_0x31a196[_0x7fe5('0x45')]==_0x31a196[_0x7fe5('0x4d')]){if(!_[_0x7fe5('0x1a')](agents[_0x31a196[_0x7fe5('0x43')]])){utils[_0x7fe5('0x2')](util['format'](_0x7fe5('0x46'),_0x31a196[_0x7fe5('0x43')],agents[_0x31a196[_0x7fe5('0x43')]][_0x7fe5('0x8')]));agents[_0x31a196[_0x7fe5('0x43')]]['transfer']=!![];agents[_0x31a196[_0x7fe5('0x43')]][_0x7fe5('0x3c')]=_0x7fe5('0x47');agents[_0x31a196[_0x7fe5('0x43')]][_0x7fe5('0x3e')]=_0x31a196[_0x7fe5('0x4e')];agents[_0x31a196[_0x7fe5('0x43')]]['transferuniqueid']=_0x31a196[_0x7fe5('0x45')];}if(_0x31a196[_0x7fe5('0x4f')]&&agents[_0x31a196[_0x7fe5('0x4f')]]){agents[_0x31a196[_0x7fe5('0x4f')]][_0x7fe5('0x4a')]=0x1;transfers[_0x31a196[_0x7fe5('0x4f')]]=_[_0x7fe5('0x4b')](agents[_0x31a196['transfertargetuniqueid']]);transfers[_0x31a196['transfertargetuniqueid']][_0x7fe5('0xa')]=agents[_0x31a196['origtransfereruniqueid']][_0x7fe5('0xa')];transfers[_0x31a196['transfertargetuniqueid']][_0x7fe5('0x4c')]=agents[_0x31a196[_0x7fe5('0x43')]][_0x7fe5('0x4c')];transfers[_0x31a196[_0x7fe5('0x4f')]][_0x7fe5('0x15')]=utils[_0x7fe5('0x1e')]();transfers[_0x31a196[_0x7fe5('0x4f')]][_0x7fe5('0x36')]=utils['now']();transfers[_0x31a196[_0x7fe5('0x4f')]]['holdtime']=0x0;transfers[_0x31a196[_0x7fe5('0x4f')]][_0x7fe5('0x4a')]=0x2;}}}catch(_0x36ac40){utils['error'](util[_0x7fe5('0x3')](_0x7fe5('0x42'),_0x31a196[_0x7fe5('0x43')]),_0x36ac40);}};exports[_0x7fe5('0x50')]=function(_0x31404b){try{utils[_0x7fe5('0x1b')](util['format'](_0x7fe5('0x51'),_0x31404b[_0x7fe5('0x5')]),_0x31404b);if(agents[_0x31404b['uniqueid']]&&agents[_0x31404b[_0x7fe5('0x5')]][_0x7fe5('0x20')]==='timeout'){if(_0x31404b[_0x7fe5('0x52')]==='21'){agents[_0x31404b['uniqueid']][_0x7fe5('0x20')]=_0x7fe5('0x53');agents[_0x31404b[_0x7fe5('0x5')]][_0x7fe5('0xc')]=_0x7fe5('0x53');}utils['info'](util[_0x7fe5('0x3')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x31404b[_0x7fe5('0x5')],agents[_0x31404b[_0x7fe5('0x5')]][_0x7fe5('0x8')],agents[_0x31404b[_0x7fe5('0x5')]]['reason'],agents[_0x31404b[_0x7fe5('0x5')]]['lastevent']));writeDB(agents[_0x31404b[_0x7fe5('0x5')]]);var _0x2e3b94=unanswered['indexOf'](_0x31404b[_0x7fe5('0x5')]);if(_0x2e3b94>-0x1){unanswered[_0x7fe5('0x54')](_0x2e3b94,0x1);}}if(transfers[_0x31404b['uniqueid']]){transfers[_0x31404b[_0x7fe5('0x5')]][_0x7fe5('0xe')]=!![];transfers[_0x31404b[_0x7fe5('0x5')]]['agentcompleteAt']=utils[_0x7fe5('0x1e')]();transfers[_0x31404b[_0x7fe5('0x5')]]['talktime']=utils[_0x7fe5('0x35')](transfers[_0x31404b[_0x7fe5('0x5')]]['agentcompleteAt'],transfers[_0x31404b[_0x7fe5('0x5')]]['agentconnectAt']);transfers[_0x31404b['uniqueid']][_0x7fe5('0x20')]=_0x7fe5('0x55');transfers[_0x31404b['uniqueid']]['lastevent']=_0x7fe5('0x37');utils['info'](util[_0x7fe5('0x3')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x31404b[_0x7fe5('0x5')],transfers[_0x31404b[_0x7fe5('0x5')]][_0x7fe5('0x8')],transfers[_0x31404b[_0x7fe5('0x5')]][_0x7fe5('0x20')],transfers[_0x31404b['uniqueid']][_0x7fe5('0xc')]));writeDB(transfers[_0x31404b[_0x7fe5('0x5')]],!![]);}if(agents[_0x31404b[_0x7fe5('0x5')]]&&agents[_0x31404b[_0x7fe5('0x5')]][_0x7fe5('0x36')]){agents[_0x31404b[_0x7fe5('0x5')]][_0x7fe5('0xe')]=!![];agents[_0x31404b[_0x7fe5('0x5')]][_0x7fe5('0x34')]=utils[_0x7fe5('0x1e')]();agents[_0x31404b['uniqueid']][_0x7fe5('0x22')]=utils[_0x7fe5('0x35')](agents[_0x31404b[_0x7fe5('0x5')]][_0x7fe5('0x34')],agents[_0x31404b[_0x7fe5('0x5')]]['agentconnectAt']);agents[_0x31404b[_0x7fe5('0x5')]][_0x7fe5('0x20')]=agents[_0x31404b[_0x7fe5('0x5')]][_0x7fe5('0x3b')]?_0x7fe5('0x3b'):_0x7fe5('0x55');agents[_0x31404b[_0x7fe5('0x5')]][_0x7fe5('0xc')]=_0x7fe5('0x37');utils[_0x7fe5('0x2')](util[_0x7fe5('0x3')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x31404b[_0x7fe5('0x5')],agents[_0x31404b[_0x7fe5('0x5')]][_0x7fe5('0x8')],agents[_0x31404b[_0x7fe5('0x5')]][_0x7fe5('0x20')],agents[_0x31404b['uniqueid']][_0x7fe5('0xc')]));writeDB(agents[_0x31404b[_0x7fe5('0x5')]]);}}catch(_0x226ada){utils['error'](util['format']('[%s][agents][hangup]',_0x31404b[_0x7fe5('0x5')]),_0x226ada);}};
\ No newline at end of file
+var _0x5c00=['queuecallerabandon','forIn','includes','agentringnoanswer','now','abandoned','[%s][agents][queuecallerabandon]','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connect','agentringnoanswerAt','answered_elsewhere','answeredelsewheremembername','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diffTime','agentcompleteAt','complete','[%s][agents][agentcomplete]','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','blind','transferexten','extension','transferuniqueid','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfer','transfertype','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','agent','lodash','util','./utils','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','membername','interface','calleridnum','connectedlinenum','queue','getVoiceQueueByName','type','agentacw','agentcomplete','acw','acwTimeout','CreateVoiceAgentReport','request','destuniqueid','debug','[%s][agents][agentcalled]','agentcalledAt','lastevent','called','connectedlinename','info','error','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','timeout','reason','holdtime','ringtime','talktime','push'];(function(_0x224ad9,_0x5d97a7){var _0x532997=function(_0x323951){while(--_0x323951){_0x224ad9['push'](_0x224ad9['shift']());}};_0x532997(++_0x5d97a7);}(_0x5c00,0x17e));var _0x05c0=function(_0x25c326,_0x250137){_0x25c326=_0x25c326-0x0;var _0x762452=_0x5c00[_0x25c326];return _0x762452;};'use strict';var _=require(_0x05c0('0x0'));var util=require(_0x05c0('0x1'));var utils=require(_0x05c0('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x4e54ec,_0x1e76da){utils['info'](util[_0x05c0('0x3')](_0x05c0('0x4'),_0x4e54ec[_0x05c0('0x5')],_0x4e54ec[_0x05c0('0x6')],_0x4e54ec['queue'],_0x4e54ec[_0x05c0('0x7')],_0x4e54ec[_0x05c0('0x8')],_0x4e54ec[_0x05c0('0x9')],_0x4e54ec[_0x05c0('0xa')],_0x4e54ec['lastevent']));if(_0x4e54ec[_0x05c0('0xb')]){utils[_0x05c0('0xc')](_0x4e54ec[_0x05c0('0xb')])['then'](function(_0x32a795){if(_0x32a795){_0x4e54ec[_0x05c0('0xd')]=_0x32a795[_0x05c0('0xd')];_0x4e54ec[_0x05c0('0xe')]=_0x4e54ec[_0x05c0('0xf')]?_0x32a795[_0x05c0('0x10')]:![];_0x4e54ec['acwtime']=_0x4e54ec['agentacw']?_0x32a795[_0x05c0('0x11')]:0x0;}utils['request'](_0x05c0('0x12'),_0x4e54ec);});}else{utils[_0x05c0('0x13')](_0x05c0('0x12'),_0x4e54ec);}if(_0x1e76da){delete transfers[_0x4e54ec['uniqueid']];}else{delete agents[_0x4e54ec[_0x05c0('0x14')]];}}exports['agentcalled']=function(_0x16a290){try{utils[_0x05c0('0x15')](util[_0x05c0('0x3')](_0x05c0('0x16'),_0x16a290[_0x05c0('0x5')]),_0x16a290);agents[_0x16a290[_0x05c0('0x14')]]=_0x16a290;agents[_0x16a290[_0x05c0('0x14')]][_0x05c0('0x17')]=utils['now']();agents[_0x16a290[_0x05c0('0x14')]][_0x05c0('0x18')]=_0x05c0('0x19');agents[_0x16a290[_0x05c0('0x14')]][_0x05c0('0xa')]=null;agents[_0x16a290[_0x05c0('0x14')]][_0x05c0('0x1a')]=null;utils[_0x05c0('0x1b')](util[_0x05c0('0x3')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x16a290[_0x05c0('0x5')],agents[_0x16a290[_0x05c0('0x14')]][_0x05c0('0x7')],_0x16a290['destuniqueid']));}catch(_0x40d905){utils[_0x05c0('0x1c')](util[_0x05c0('0x3')](_0x05c0('0x16'),_0x16a290[_0x05c0('0x5')]),_0x40d905);}};exports['agentringnoanswer']=function(_0x407c1f){try{if(!_[_0x05c0('0x1d')](agents[_0x407c1f['destuniqueid']])){utils['debug'](util['format'](_0x05c0('0x1e'),_0x407c1f[_0x05c0('0x5')]),_0x407c1f);utils[_0x05c0('0x1b')](util[_0x05c0('0x3')](_0x05c0('0x1f'),_0x407c1f[_0x05c0('0x5')],agents[_0x407c1f[_0x05c0('0x14')]]['membername'],_0x407c1f[_0x05c0('0x14')]));agents[_0x407c1f[_0x05c0('0x14')]]['agentringnoanswer']=!![];agents[_0x407c1f['destuniqueid']]['agentringnoanswerAt']=utils['now']();agents[_0x407c1f['destuniqueid']][_0x05c0('0x18')]=_0x05c0('0x20');agents[_0x407c1f['destuniqueid']][_0x05c0('0x21')]=_0x05c0('0x20');agents[_0x407c1f[_0x05c0('0x14')]][_0x05c0('0x22')]=_0x407c1f['ringtime']?parseInt(_0x407c1f[_0x05c0('0x23')])/0x3e8:0x0;agents[_0x407c1f[_0x05c0('0x14')]][_0x05c0('0x24')]=0x0;unanswered[_0x05c0('0x25')](_0x407c1f[_0x05c0('0x14')]);}}catch(_0x5d12e0){utils['error'](util['format'](_0x05c0('0x1e'),_0x407c1f[_0x05c0('0x5')]),_0x5d12e0);}};exports[_0x05c0('0x26')]=function(_0xd6574e){try{_[_0x05c0('0x27')](agents,function(_0x1e00c5,_0x1c4c8f){if(_0x1e00c5[_0x05c0('0x5')]==_0xd6574e[_0x05c0('0x5')]&&!_[_0x05c0('0x28')](unanswered,_0x1e00c5[_0x05c0('0x14')])){utils[_0x05c0('0x15')](util['format']('[%s][agents][queuecallerabandon]',_0xd6574e[_0x05c0('0x5')]),_0xd6574e);utils[_0x05c0('0x1b')](util[_0x05c0('0x3')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0xd6574e[_0x05c0('0x5')],_0x1e00c5[_0x05c0('0x7')],_0x1e00c5['destuniqueid']));_0x1e00c5[_0x05c0('0x29')]=!![];_0x1e00c5['agentringnoanswerAt']=utils[_0x05c0('0x2a')]();_0x1e00c5[_0x05c0('0x18')]=_0x05c0('0x2b');_0x1e00c5[_0x05c0('0x21')]=_0x05c0('0x2b');_0x1e00c5[_0x05c0('0x22')]=_0xd6574e[_0x05c0('0x22')];_0x1e00c5[_0x05c0('0x24')]=0x0;writeDB(_0x1e00c5);}});}catch(_0x3d8d76){utils[_0x05c0('0x1c')](util[_0x05c0('0x3')](_0x05c0('0x2c'),_0xd6574e[_0x05c0('0x5')]),_0x3d8d76);}};exports[_0x05c0('0x2d')]=function(_0x185d05){try{if(agents[_0x185d05[_0x05c0('0x14')]]){utils[_0x05c0('0x15')](util[_0x05c0('0x3')](_0x05c0('0x2e'),_0x185d05[_0x05c0('0x5')]),_0x185d05);utils[_0x05c0('0x1b')](util[_0x05c0('0x3')](_0x05c0('0x2f'),_0x185d05[_0x05c0('0x5')],agents[_0x185d05[_0x05c0('0x14')]][_0x05c0('0x7')],_0x185d05[_0x05c0('0x14')]));agents[_0x185d05[_0x05c0('0x14')]][_0x05c0('0x30')]=utils[_0x05c0('0x2a')]();agents[_0x185d05[_0x05c0('0x14')]][_0x05c0('0xa')]=_0x185d05[_0x05c0('0xa')];agents[_0x185d05['destuniqueid']][_0x05c0('0x1a')]=_0x185d05[_0x05c0('0x1a')];agents[_0x185d05[_0x05c0('0x14')]][_0x05c0('0x22')]=_0x185d05['ringtime'];agents[_0x185d05['destuniqueid']][_0x05c0('0x18')]=_0x05c0('0x31');_[_0x05c0('0x27')](agents,function(_0x4ced8e,_0x29dc87){if(_0x4ced8e[_0x05c0('0x14')]!=_0x185d05[_0x05c0('0x14')]&&_0x4ced8e[_0x05c0('0x5')]==_0x185d05['uniqueid']){_0x4ced8e[_0x05c0('0x24')]=0x0;_0x4ced8e[_0x05c0('0x22')]=_0x185d05['ringtime'];_0x4ced8e[_0x05c0('0x29')]=!![];_0x4ced8e[_0x05c0('0x32')]=utils[_0x05c0('0x2a')]();_0x4ced8e[_0x05c0('0x18')]=_0x05c0('0x33');_0x4ced8e[_0x05c0('0x21')]=_0x05c0('0x33');_0x4ced8e['answeredelsewheredestinationuniqueid']=_0x185d05['destuniqueid'];_0x4ced8e[_0x05c0('0x34')]=_0x185d05[_0x05c0('0x7')];writeDB(_0x4ced8e);}});}}catch(_0xaa5d53){utils[_0x05c0('0x1c')](util[_0x05c0('0x3')]('[%s][agents][agentconnect]',_0x185d05[_0x05c0('0x5')]),_0xaa5d53);}};exports[_0x05c0('0xf')]=function(_0x2fdfe8){try{if(!_[_0x05c0('0x1d')](agents[_0x2fdfe8[_0x05c0('0x14')]])){utils[_0x05c0('0x15')](util[_0x05c0('0x3')]('[%s][agents][agentcomplete]',_0x2fdfe8[_0x05c0('0x5')]),_0x2fdfe8);utils[_0x05c0('0x1b')](util[_0x05c0('0x3')](_0x05c0('0x35'),_0x2fdfe8[_0x05c0('0x5')],agents[_0x2fdfe8[_0x05c0('0x14')]][_0x05c0('0x7')],_0x2fdfe8[_0x05c0('0x14')]));agents[_0x2fdfe8[_0x05c0('0x14')]][_0x05c0('0xf')]=!![];agents[_0x2fdfe8[_0x05c0('0x14')]]['agentcompleteAt']=utils['now']();agents[_0x2fdfe8[_0x05c0('0x14')]][_0x05c0('0x24')]=utils[_0x05c0('0x36')](agents[_0x2fdfe8[_0x05c0('0x14')]][_0x05c0('0x37')],agents[_0x2fdfe8[_0x05c0('0x14')]]['agentconnectAt']);agents[_0x2fdfe8[_0x05c0('0x14')]][_0x05c0('0x21')]=_0x2fdfe8[_0x05c0('0x21')];agents[_0x2fdfe8[_0x05c0('0x14')]]['lastevent']=_0x05c0('0x38');writeDB(agents[_0x2fdfe8[_0x05c0('0x14')]]);}}catch(_0x3ec0bf){utils[_0x05c0('0x1c')](util['format'](_0x05c0('0x39'),_0x2fdfe8[_0x05c0('0x5')]),_0x3ec0bf);}};exports[_0x05c0('0x3a')]=function(_0x9b521b){try{if(!_['isNil'](agents[_0x9b521b[_0x05c0('0x3b')]])){utils[_0x05c0('0x15')](util['format'](_0x05c0('0x3c'),_0x9b521b['uniqueid']),_0x9b521b);utils['info'](util[_0x05c0('0x3')]('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0x9b521b[_0x05c0('0x5')],agents[_0x9b521b[_0x05c0('0x3b')]][_0x05c0('0x7')],agents[_0x9b521b[_0x05c0('0x3b')]][_0x05c0('0x5')]));agents[_0x9b521b[_0x05c0('0x3b')]]['transfer']=!![];agents[_0x9b521b[_0x05c0('0x3b')]]['transfertype']=_0x05c0('0x3d');agents[_0x9b521b[_0x05c0('0x3b')]][_0x05c0('0x3e')]=_0x9b521b[_0x05c0('0x3f')];agents[_0x9b521b[_0x05c0('0x3b')]][_0x05c0('0x40')]=agents[_0x9b521b[_0x05c0('0x3b')]]['uniqueid'];}}catch(_0x5215b4){utils['error'](util[_0x05c0('0x3')](_0x05c0('0x3c'),_0x9b521b['uniqueid']),_0x5215b4);}};exports['attendedtransfer']=function(_0xbfb9cb){try{utils[_0x05c0('0x15')](util[_0x05c0('0x3')](_0x05c0('0x41'),_0xbfb9cb[_0x05c0('0x42')]),_0xbfb9cb);if(_0xbfb9cb[_0x05c0('0x42')]==_0xbfb9cb[_0x05c0('0x43')]){if(!_['isNil'](agents[_0xbfb9cb[_0x05c0('0x44')]])){utils[_0x05c0('0x1b')](util[_0x05c0('0x3')](_0x05c0('0x45'),_0xbfb9cb['origtransfereruniqueid'],agents[_0xbfb9cb[_0x05c0('0x44')]]['membername']));agents[_0xbfb9cb[_0x05c0('0x44')]][_0x05c0('0x46')]=!![];agents[_0xbfb9cb['secondtransfereruniqueid']][_0x05c0('0x47')]='ATTENDED';agents[_0xbfb9cb[_0x05c0('0x44')]][_0x05c0('0x3e')]=_0xbfb9cb[_0x05c0('0x48')];agents[_0xbfb9cb[_0x05c0('0x44')]][_0x05c0('0x40')]=_0xbfb9cb[_0x05c0('0x42')];}if(_0xbfb9cb['transfereeuniqueid']&&agents[_0xbfb9cb[_0x05c0('0x49')]]){agents[_0xbfb9cb[_0x05c0('0x49')]][_0x05c0('0x4a')]=0x1;transfers[_0xbfb9cb[_0x05c0('0x49')]]=_[_0x05c0('0x4b')](agents[_0xbfb9cb[_0x05c0('0x49')]]);transfers[_0xbfb9cb['transfereeuniqueid']][_0x05c0('0x9')]=agents[_0xbfb9cb[_0x05c0('0x44')]][_0x05c0('0x9')];transfers[_0xbfb9cb[_0x05c0('0x49')]][_0x05c0('0x4c')]=agents[_0xbfb9cb[_0x05c0('0x44')]][_0x05c0('0x4c')];transfers[_0xbfb9cb[_0x05c0('0x49')]][_0x05c0('0x17')]=utils[_0x05c0('0x2a')]();transfers[_0xbfb9cb[_0x05c0('0x49')]][_0x05c0('0x30')]=utils['now']();transfers[_0xbfb9cb['transfereeuniqueid']]['holdtime']=0x0;transfers[_0xbfb9cb[_0x05c0('0x49')]][_0x05c0('0x4a')]=0x2;}}else if(_0xbfb9cb[_0x05c0('0x44')]==_0xbfb9cb['secondtransfererlinkedid']){if(!_[_0x05c0('0x1d')](agents[_0xbfb9cb[_0x05c0('0x42')]])){utils[_0x05c0('0x1b')](util[_0x05c0('0x3')](_0x05c0('0x45'),_0xbfb9cb[_0x05c0('0x42')],agents[_0xbfb9cb[_0x05c0('0x42')]]['membername']));agents[_0xbfb9cb[_0x05c0('0x42')]][_0x05c0('0x46')]=!![];agents[_0xbfb9cb[_0x05c0('0x42')]][_0x05c0('0x47')]='ATTENDED';agents[_0xbfb9cb['origtransfereruniqueid']]['transferexten']=_0xbfb9cb[_0x05c0('0x4d')];agents[_0xbfb9cb[_0x05c0('0x42')]][_0x05c0('0x40')]=_0xbfb9cb[_0x05c0('0x44')];}if(_0xbfb9cb[_0x05c0('0x4e')]&&agents[_0xbfb9cb[_0x05c0('0x4e')]]){agents[_0xbfb9cb[_0x05c0('0x4e')]]['agententerreason']=0x1;transfers[_0xbfb9cb[_0x05c0('0x4e')]]=_[_0x05c0('0x4b')](agents[_0xbfb9cb[_0x05c0('0x4e')]]);transfers[_0xbfb9cb[_0x05c0('0x4e')]][_0x05c0('0x9')]=agents[_0xbfb9cb['origtransfereruniqueid']]['calleridnum'];transfers[_0xbfb9cb[_0x05c0('0x4e')]][_0x05c0('0x4c')]=agents[_0xbfb9cb['origtransfereruniqueid']][_0x05c0('0x4c')];transfers[_0xbfb9cb['transfertargetuniqueid']]['agentcalledAt']=utils[_0x05c0('0x2a')]();transfers[_0xbfb9cb[_0x05c0('0x4e')]][_0x05c0('0x30')]=utils['now']();transfers[_0xbfb9cb['transfertargetuniqueid']][_0x05c0('0x22')]=0x0;transfers[_0xbfb9cb[_0x05c0('0x4e')]][_0x05c0('0x4a')]=0x2;}}}catch(_0x5b39cb){utils['error'](util['format']('[%s][agents][attendedtransfer]',_0xbfb9cb['origtransfereruniqueid']),_0x5b39cb);}};exports[_0x05c0('0x4f')]=function(_0x4f43ae){try{utils['debug'](util['format'](_0x05c0('0x50'),_0x4f43ae[_0x05c0('0x5')]),_0x4f43ae);if(agents[_0x4f43ae[_0x05c0('0x5')]]&&agents[_0x4f43ae['uniqueid']][_0x05c0('0x21')]===_0x05c0('0x20')){if(_0x4f43ae['cause']==='21'){agents[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x21')]=_0x05c0('0x51');agents[_0x4f43ae[_0x05c0('0x5')]]['lastevent']=_0x05c0('0x51');}utils[_0x05c0('0x1b')](util[_0x05c0('0x3')](_0x05c0('0x52'),_0x4f43ae[_0x05c0('0x5')],agents[_0x4f43ae['uniqueid']]['membername'],agents[_0x4f43ae[_0x05c0('0x5')]]['reason'],agents[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x18')]));writeDB(agents[_0x4f43ae['uniqueid']]);var _0x3135bd=unanswered['indexOf'](_0x4f43ae['uniqueid']);if(_0x3135bd>-0x1){unanswered['splice'](_0x3135bd,0x1);}}if(transfers[_0x4f43ae['uniqueid']]){transfers[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0xf')]=!![];transfers[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x37')]=utils['now']();transfers[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x24')]=utils[_0x05c0('0x36')](transfers[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x37')],transfers[_0x4f43ae['uniqueid']][_0x05c0('0x30')]);transfers[_0x4f43ae['uniqueid']]['reason']=_0x05c0('0x53');transfers[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x18')]=_0x05c0('0x38');utils[_0x05c0('0x1b')](util[_0x05c0('0x3')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x4f43ae['uniqueid'],transfers[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x7')],transfers[_0x4f43ae[_0x05c0('0x5')]]['reason'],transfers[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x18')]));writeDB(transfers[_0x4f43ae[_0x05c0('0x5')]],!![]);}if(agents[_0x4f43ae[_0x05c0('0x5')]]&&agents[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x30')]){agents[_0x4f43ae['uniqueid']][_0x05c0('0xf')]=!![];agents[_0x4f43ae[_0x05c0('0x5')]]['agentcompleteAt']=utils[_0x05c0('0x2a')]();agents[_0x4f43ae[_0x05c0('0x5')]]['talktime']=utils[_0x05c0('0x36')](agents[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x37')],agents[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x30')]);agents[_0x4f43ae[_0x05c0('0x5')]]['reason']=agents[_0x4f43ae[_0x05c0('0x5')]]['transfer']?_0x05c0('0x46'):_0x05c0('0x53');agents[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x18')]=_0x05c0('0x38');utils[_0x05c0('0x1b')](util[_0x05c0('0x3')](_0x05c0('0x52'),_0x4f43ae[_0x05c0('0x5')],agents[_0x4f43ae[_0x05c0('0x5')]]['membername'],agents[_0x4f43ae[_0x05c0('0x5')]]['reason'],agents[_0x4f43ae[_0x05c0('0x5')]]['lastevent']));writeDB(agents[_0x4f43ae[_0x05c0('0x5')]]);}}catch(_0x36f82a){utils[_0x05c0('0x1c')](util[_0x05c0('0x3')](_0x05c0('0x50'),_0x4f43ae[_0x05c0('0x5')]),_0x36f82a);}};
\ No newline at end of file
index f300f5e..28f8c4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c7f=['billableseconds','attendedtransfer','[%s][calls][attendedtransfer]','origtransfereruniqueid','localtwolinkedid','secondtransfererchannel','transfertargetchannel','origtransfererchannel','_attended','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','[%s][calls][musiconholdstop]','[%s][calls][musiconholdstop]\x20mohtime:%s','mohtime','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','value','source','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-callerid','xmcs-queue','xmd-queue','lastapplication','Queue','lastdata','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','execif','application','util','./utils','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','membername','interface','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','CreateVoiceCallReport','request','debug','linkedid','channel','OutgoingSpoolFailed','context','exten','now','DOCUMENTATION','error','[%s][calls][newstate]','isNil','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','channelstate','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','hangup','[%s][calls][hangup]','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','callerid','cause-txt','endtime','duration','diffTime','starttime'];(function(_0x4796f5,_0xd1a504){var _0x581153=function(_0x5d9a08){while(--_0x5d9a08){_0x4796f5['push'](_0x4796f5['shift']());}};_0x581153(++_0xd1a504);}(_0x1c7f,0x16e));var _0xf1c7=function(_0x179e11,_0xf65436){_0x179e11=_0x179e11-0x0;var _0x549f04=_0x1c7f[_0x179e11];return _0x549f04;};'use strict';var _=require('lodash');var util=require(_0xf1c7('0x0'));var utils=require(_0xf1c7('0x1'));var transfers=require('./transfers.controller');var dispositions=[_0xf1c7('0x2'),_0xf1c7('0x3'),_0xf1c7('0x3'),_0xf1c7('0x2'),_0xf1c7('0x2'),'NO\x20ANSWER',_0xf1c7('0x4'),_0xf1c7('0x5'),_0xf1c7('0x3'),_0xf1c7('0x3'),_0xf1c7('0x3')];var channels={};function writeDB(_0x3030ec){var _0x5b253a;if(transfers[_0xf1c7('0x6')][_0x3030ec['uniqueid']]){_0x5b253a=_0x3030ec[_0xf1c7('0x7')];_0x3030ec[_0xf1c7('0x7')]=transfers[_0xf1c7('0x6')][_0x3030ec[_0xf1c7('0x7')]]['transfereeuniqueid'];}utils[_0xf1c7('0x8')](util[_0xf1c7('0x9')](_0xf1c7('0xa'),_0x3030ec['uniqueid'],_0x3030ec['channel'],_0x3030ec[_0xf1c7('0xb')],_0x3030ec[_0xf1c7('0xc')],_0x3030ec[_0xf1c7('0xd')],_0x3030ec[_0xf1c7('0xe')],_0x3030ec[_0xf1c7('0xf')],_0x3030ec[_0xf1c7('0x10')]));if(_0x3030ec[_0xf1c7('0x11')]){utils[_0xf1c7('0x12')](_0x3030ec[_0xf1c7('0x11')])['then'](function(_0x19088a){if(_0x19088a){_0x3030ec['UserId']=_0x19088a['id'];}utils['request'](_0xf1c7('0x13'),_0x3030ec);});}else{utils[_0xf1c7('0x14')](_0xf1c7('0x13'),_0x3030ec);}if(channels[_0x3030ec[_0xf1c7('0x7')]]){delete channels[_0x3030ec[_0xf1c7('0x7')]];}else if(_0x5b253a&&channels[_0x5b253a]){delete transfers['blinds'][_0x5b253a];delete channels[_0x5b253a];}}exports['newchannel']=function(_0x24b47d){try{utils[_0xf1c7('0x15')](util['format']('[%s][calls][newchannel]',_0x24b47d[_0xf1c7('0x7')]),_0x24b47d);if(_0x24b47d[_0xf1c7('0x7')]==_0x24b47d[_0xf1c7('0x16')]&&_0x24b47d[_0xf1c7('0x17')]!=_0xf1c7('0x18')){utils[_0xf1c7('0x8')](util[_0xf1c7('0x9')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x24b47d[_0xf1c7('0x7')],_0x24b47d[_0xf1c7('0x19')],_0x24b47d[_0xf1c7('0x1a')]));channels[_0x24b47d[_0xf1c7('0x7')]]={'uniqueid':_0x24b47d[_0xf1c7('0x7')],'accountcode':_0x24b47d[_0xf1c7('0x11')],'source':_0x24b47d[_0xf1c7('0xe')],'destination':_0x24b47d['exten'],'destinationcontext':_0x24b47d[_0xf1c7('0x19')],'channel':_0x24b47d[_0xf1c7('0x17')],'starttime':utils[_0xf1c7('0x1b')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xf1c7('0x2'),'amaflags':_0xf1c7('0x1c')};}}catch(_0x2c36fb){utils[_0xf1c7('0x1d')](util[_0xf1c7('0x9')]('[%s][calls][newchannel]',_0x24b47d[_0xf1c7('0x7')]),_0x2c36fb);}};exports['newstate']=function(_0x2a9e20){try{utils[_0xf1c7('0x15')](util[_0xf1c7('0x9')](_0xf1c7('0x1e'),_0x2a9e20[_0xf1c7('0x7')]),_0x2a9e20);if(!_[_0xf1c7('0x1f')](channels[_0x2a9e20[_0xf1c7('0x7')]])&&_0x2a9e20['channelstate']==0x6){utils[_0xf1c7('0x8')](util[_0xf1c7('0x9')](_0xf1c7('0x20'),_0x2a9e20['uniqueid'],_0x2a9e20[_0xf1c7('0x19')],_0x2a9e20['channel']));if(_[_0xf1c7('0x1f')](channels[_0x2a9e20[_0xf1c7('0x7')]][_0xf1c7('0x21')])){channels[_0x2a9e20['uniqueid']][_0xf1c7('0x21')]=utils[_0xf1c7('0x1b')]();}}else if(!_[_0xf1c7('0x1f')](channels[_0x2a9e20[_0xf1c7('0x16')]])&&_0x2a9e20[_0xf1c7('0x22')]==0x6&&_0x2a9e20[_0xf1c7('0x19')]!='transfer'){utils[_0xf1c7('0x8')](util[_0xf1c7('0x9')](_0xf1c7('0x23'),_0x2a9e20[_0xf1c7('0x7')],_0x2a9e20[_0xf1c7('0x16')],_0x2a9e20[_0xf1c7('0x19')],_0x2a9e20[_0xf1c7('0x17')]));channels[_0x2a9e20[_0xf1c7('0x16')]][_0xf1c7('0x11')]=_0x2a9e20['accountcode'];channels[_0x2a9e20[_0xf1c7('0x16')]][_0xf1c7('0x24')]=_0x2a9e20[_0xf1c7('0x17')];if(_[_0xf1c7('0x1f')](channels[_0x2a9e20[_0xf1c7('0x16')]][_0xf1c7('0x25')])){channels[_0x2a9e20[_0xf1c7('0x16')]][_0xf1c7('0x25')]=utils['now']();}channels[_0x2a9e20[_0xf1c7('0x16')]][_0xf1c7('0x26')]=dispositions[_[_0xf1c7('0x27')](_0x2a9e20[_0xf1c7('0x22')])]||_0xf1c7('0x4');}}catch(_0xee218a){utils[_0xf1c7('0x1d')](util[_0xf1c7('0x9')](_0xf1c7('0x1e'),_0x2a9e20['uniqueid']),_0xee218a);}};exports[_0xf1c7('0x28')]=function(_0x471969){try{if(!_['isNil'](channels[_0x471969[_0xf1c7('0x7')]])){utils[_0xf1c7('0x15')](util[_0xf1c7('0x9')](_0xf1c7('0x29'),_0x471969[_0xf1c7('0x7')]),_0x471969);if(_[_0xf1c7('0x1f')](channels[_0x471969['uniqueid']]['callerid'])){channels[_0x471969['uniqueid']]['callerid']=_0x471969[_0xf1c7('0x2a')]+'\x20<'+_0x471969['calleridnum']+'>';}utils[_0xf1c7('0x8')](util[_0xf1c7('0x9')](_0xf1c7('0x2b'),_0x471969[_0xf1c7('0x7')],channels[_0x471969[_0xf1c7('0x7')]][_0xf1c7('0x2c')],_0x471969[_0xf1c7('0x2d')]));channels[_0x471969[_0xf1c7('0x7')]][_0xf1c7('0x2e')]=utils['now']();channels[_0x471969[_0xf1c7('0x7')]][_0xf1c7('0x2f')]=utils[_0xf1c7('0x30')](channels[_0x471969[_0xf1c7('0x7')]][_0xf1c7('0x2e')],channels[_0x471969[_0xf1c7('0x7')]][_0xf1c7('0x31')]);channels[_0x471969['uniqueid']][_0xf1c7('0x32')]=channels[_0x471969[_0xf1c7('0x7')]][_0xf1c7('0x25')]?utils[_0xf1c7('0x30')](channels[_0x471969[_0xf1c7('0x7')]][_0xf1c7('0x2e')],channels[_0x471969[_0xf1c7('0x7')]][_0xf1c7('0x25')]):0x0;writeDB(channels[_0x471969[_0xf1c7('0x7')]]);}}catch(_0x1985fe){utils[_0xf1c7('0x1d')](util['format']('[%s][calls][hangup]',_0x471969['uniqueid']),_0x1985fe);}};exports[_0xf1c7('0x33')]=function(_0x30e02d){try{if(!_[_0xf1c7('0x1f')](channels[_0x30e02d['localtwolinkedid']])){utils[_0xf1c7('0x15')](util['format'](_0xf1c7('0x34'),_0x30e02d[_0xf1c7('0x35')]),_0x30e02d);if(channels[_0x30e02d['localtwolinkedid']][_0xf1c7('0x17')]==_0x30e02d['transfereechannel']){utils['info'](util[_0xf1c7('0x9')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x30e02d['origtransfereruniqueid'],_0x30e02d[_0xf1c7('0x36')],_0x30e02d[_0xf1c7('0x37')]));channels[_0x30e02d['localtwolinkedid']][_0xf1c7('0x24')]=_0x30e02d[_0xf1c7('0x37')];channels[_0x30e02d['localtwolinkedid']]['userfield']='_attended';}else if(channels[_0x30e02d['localtwolinkedid']][_0xf1c7('0x17')]=_0x30e02d[_0xf1c7('0x38')]){utils[_0xf1c7('0x8')](util[_0xf1c7('0x9')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x30e02d[_0xf1c7('0x35')],_0x30e02d[_0xf1c7('0x36')],_0x30e02d['origtransfererchannel']));channels[_0x30e02d['localtwolinkedid']]['destinationchannel']=_0x30e02d[_0xf1c7('0x39')];channels[_0x30e02d[_0xf1c7('0x36')]]['userfield']=_0xf1c7('0x3a');}}}catch(_0x595faf){utils[_0xf1c7('0x1d')](util[_0xf1c7('0x9')](_0xf1c7('0x34'),_0x30e02d['origtransfereruniqueid']),_0x595faf);}};exports['musiconholdstart']=function(_0x36a91a){try{if(!_['isNil'](channels[_0x36a91a[_0xf1c7('0x7')]])){utils['debug'](util[_0xf1c7('0x9')](_0xf1c7('0x3b'),_0x36a91a['uniqueid']),_0x36a91a);channels[_0x36a91a[_0xf1c7('0x7')]][_0xf1c7('0x3c')]=utils[_0xf1c7('0x1b')]();utils[_0xf1c7('0x8')](util[_0xf1c7('0x9')](_0xf1c7('0x3d'),_0x36a91a[_0xf1c7('0x7')],channels[_0x36a91a[_0xf1c7('0x7')]][_0xf1c7('0x3c')]));}}catch(_0x4d3017){utils['error'](util['format']('[%s][calls][musiconholdstart]',_0x36a91a[_0xf1c7('0x7')]),_0x4d3017);}};exports['musiconholdstop']=function(_0x2eafd2){try{if(!_['isNil'](channels[_0x2eafd2[_0xf1c7('0x7')]])){utils[_0xf1c7('0x15')](util[_0xf1c7('0x9')](_0xf1c7('0x3e'),_0x2eafd2[_0xf1c7('0x7')]),_0x2eafd2);if(!_[_0xf1c7('0x1f')](channels[_0x2eafd2['uniqueid']][_0xf1c7('0x3c')])){channels[_0x2eafd2[_0xf1c7('0x7')]]['mohtime']+=utils[_0xf1c7('0x30')](utils[_0xf1c7('0x1b')](),channels[_0x2eafd2[_0xf1c7('0x7')]][_0xf1c7('0x3c')]);utils[_0xf1c7('0x8')](util[_0xf1c7('0x9')](_0xf1c7('0x3f'),_0x2eafd2[_0xf1c7('0x7')],channels[_0x2eafd2[_0xf1c7('0x7')]][_0xf1c7('0x40')]));delete channels[_0x2eafd2[_0xf1c7('0x7')]][_0xf1c7('0x3c')];}}}catch(_0x4e2139){utils[_0xf1c7('0x1d')](util[_0xf1c7('0x9')](_0xf1c7('0x3e'),_0x2eafd2[_0xf1c7('0x7')]),_0x4e2139);}};exports[_0xf1c7('0x41')]=function(_0x81bf84){try{if(!_['isNil'](channels[_0x81bf84['uniqueid']])){utils['debug'](util[_0xf1c7('0x9')](_0xf1c7('0x42'),_0x81bf84['uniqueid']),_0x81bf84);if(!_[_0xf1c7('0x1f')](_0x81bf84[_0xf1c7('0x43')][_0xf1c7('0x44')])){utils[_0xf1c7('0x8')](util[_0xf1c7('0x9')]('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x81bf84[_0xf1c7('0x7')],_0x81bf84[_0xf1c7('0x45')]));channels[_0x81bf84[_0xf1c7('0x7')]][_0xf1c7('0x46')]=_0x81bf84[_0xf1c7('0x45')];}if(!_[_0xf1c7('0x1f')](_0x81bf84[_0xf1c7('0x43')]['xmd-phone'])){utils['info'](util[_0xf1c7('0x9')](_0xf1c7('0x47'),_0x81bf84['uniqueid'],_0x81bf84[_0xf1c7('0x45')]));channels[_0x81bf84[_0xf1c7('0x7')]][_0xf1c7('0x48')]=_0x81bf84[_0xf1c7('0x45')];channels[_0x81bf84[_0xf1c7('0x7')]][_0xf1c7('0x2c')]='\x22'+_0x81bf84[_0xf1c7('0x45')]+_0xf1c7('0x49')+_0x81bf84[_0xf1c7('0x45')]+'>';}if(!_['isNil'](_0x81bf84[_0xf1c7('0x43')][_0xf1c7('0x4a')])||!_[_0xf1c7('0x1f')](_0x81bf84[_0xf1c7('0x43')]['xmd-callerid'])){utils[_0xf1c7('0x8')](util[_0xf1c7('0x9')](_0xf1c7('0x4b'),_0x81bf84[_0xf1c7('0x7')],!_['isNil'](_0x81bf84[_0xf1c7('0x43')][_0xf1c7('0x4a')])?_0xf1c7('0x4a'):_0xf1c7('0x4c'),_0x81bf84[_0xf1c7('0x45')]));channels[_0x81bf84[_0xf1c7('0x7')]][_0xf1c7('0x2c')]=_0x81bf84[_0xf1c7('0x45')];}if(!_[_0xf1c7('0x1f')](_0x81bf84['variable']['xmd-queue'])||!_[_0xf1c7('0x1f')](_0x81bf84[_0xf1c7('0x43')][_0xf1c7('0x4d')])){utils['info'](util[_0xf1c7('0x9')](_0xf1c7('0x4b'),_0x81bf84[_0xf1c7('0x7')],!_[_0xf1c7('0x1f')](_0x81bf84[_0xf1c7('0x43')][_0xf1c7('0x4e')])?'xmd-queue':'xmcs-queue',_0x81bf84[_0xf1c7('0x45')]));channels[_0x81bf84[_0xf1c7('0x7')]][_0xf1c7('0x4f')]=_0xf1c7('0x50');channels[_0x81bf84[_0xf1c7('0x7')]][_0xf1c7('0x51')]=_0x81bf84[_0xf1c7('0x45')];channels[_0x81bf84[_0xf1c7('0x7')]][_0xf1c7('0xb')]=!![];}if(!_[_0xf1c7('0x1f')](_0x81bf84[_0xf1c7('0x43')]['xmd-contactid'])){utils[_0xf1c7('0x8')](util[_0xf1c7('0x9')](_0xf1c7('0x52'),_0x81bf84[_0xf1c7('0x7')],_0x81bf84[_0xf1c7('0x45')]));channels[_0x81bf84[_0xf1c7('0x7')]][_0xf1c7('0x53')]=_0x81bf84[_0xf1c7('0x45')];}if(!_['isNil'](_0x81bf84[_0xf1c7('0x43')][_0xf1c7('0x54')])){utils[_0xf1c7('0x8')](util['format'](_0xf1c7('0x55'),_0x81bf84[_0xf1c7('0x7')],_0x81bf84[_0xf1c7('0x45')]));channels[_0x81bf84['uniqueid']][_0xf1c7('0x56')]=_0x81bf84['value'];}if(!_[_0xf1c7('0x1f')](_0x81bf84[_0xf1c7('0x43')][_0xf1c7('0x57')])){utils['info'](util[_0xf1c7('0x9')]('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x81bf84[_0xf1c7('0x7')],_0x81bf84[_0xf1c7('0x45')]));channels[_0x81bf84[_0xf1c7('0x7')]][_0xf1c7('0x58')]=_0x81bf84[_0xf1c7('0x45')];}if(!_['isNil'](_0x81bf84['variable'][_0xf1c7('0x59')])){utils[_0xf1c7('0x8')](util[_0xf1c7('0x9')](_0xf1c7('0x5a'),_0x81bf84[_0xf1c7('0x7')],_0x81bf84[_0xf1c7('0x45')]));channels[_0x81bf84[_0xf1c7('0x7')]][_0xf1c7('0x59')]=_0x81bf84[_0xf1c7('0x45')];}}}catch(_0x2b2a34){utils['error'](util[_0xf1c7('0x9')](_0xf1c7('0x42'),_0x81bf84['uniqueid']),_0x2b2a34);}};exports[_0xf1c7('0x5b')]=function(_0x1469db){try{if(!_[_0xf1c7('0x1f')](channels[_0x1469db[_0xf1c7('0x7')]])){utils[_0xf1c7('0x15')](util[_0xf1c7('0x9')](_0xf1c7('0x5c'),_0x1469db[_0xf1c7('0x7')]),_0x1469db);utils[_0xf1c7('0x8')](util[_0xf1c7('0x9')](_0xf1c7('0x5d'),_0x1469db[_0xf1c7('0x7')],_0x1469db['application'],_0x1469db[_0xf1c7('0x5e')]));if(_0x1469db['application'][_0xf1c7('0x5f')]()==_0xf1c7('0x60')&&_[_0xf1c7('0x61')](_0x1469db['appdata'][_0xf1c7('0x5f')](),_0xf1c7('0x62'))){var _0x1f8270=_0x1469db['appdata'][_0xf1c7('0x63')]('=');var _0x2598b4=_0x1f8270[0x0][_0xf1c7('0x64')](_0x1f8270[0x0][_0xf1c7('0x65')]('(')+0x1,_0x1f8270[0x0][_0xf1c7('0x65')](')'));var _0x1e4522=_0x1f8270[0x1];channels[_0x1469db[_0xf1c7('0x7')]][_0x2598b4]=_0x1e4522;}if(!_['includes']([_0xf1c7('0x28'),'noop',_0xf1c7('0x66'),'set','gotoif'],_0x1469db['application'][_0xf1c7('0x5f')]())){channels[_0x1469db[_0xf1c7('0x7')]][_0xf1c7('0x4f')]=_0x1469db[_0xf1c7('0x67')];channels[_0x1469db[_0xf1c7('0x7')]]['lastdata']=_0x1469db['appdata'];}}}catch(_0x26e8b3){utils[_0xf1c7('0x1d')](util['format'](_0xf1c7('0x5c'),_0x1469db[_0xf1c7('0x7')]),_0x26e8b3);}};
\ No newline at end of file
+var _0xbfb7=['[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','startsWith','cdr','appdata','split','substring','lastIndexOf','noop','execif','set','lodash','util','./utils','NO\x20ANSWER','FAILED','ANSWERED','BUSY','uniqueid','blinds','membername','interface','calleridnum','lastevent','getUserByInternal','then','request','CreateVoiceCallReport','debug','[%s][calls][newchannel]','linkedid','channel','OutgoingSpoolFailed','info','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','accountcode','now','DOCUMENTATION','error','format','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','destinationchannel','answertime','disposition','toNumber','hangup','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','duration','diffTime','endtime','starttime','billableseconds','[%s][calls][hangup]','localtwolinkedid','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','_attended','origtransfererchannel','[%s][calls][attendedtransfer]','musiconholdstartAt','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','variable','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','[%s][calls][varset]\x20variable:%s\x20value:%s','xmcs-queue','xmd-queue','lastapplication','lastdata','queue','xmd-contactid','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xbfb7,0x143));var _0x7bfb=function(_0x33bcdb,_0x11846b){_0x33bcdb=_0x33bcdb-0x0;var _0x18a9bf=_0xbfb7[_0x33bcdb];return _0x18a9bf;};'use strict';var _=require(_0x7bfb('0x0'));var util=require(_0x7bfb('0x1'));var utils=require(_0x7bfb('0x2'));var transfers=require('./transfers.controller');var dispositions=[_0x7bfb('0x3'),_0x7bfb('0x4'),'FAILED',_0x7bfb('0x3'),_0x7bfb('0x3'),'NO\x20ANSWER',_0x7bfb('0x5'),_0x7bfb('0x6'),_0x7bfb('0x4'),'FAILED',_0x7bfb('0x4')];var channels={};function writeDB(_0x507ef7){var _0x55fe13;if(transfers['blinds'][_0x507ef7['uniqueid']]){_0x55fe13=_0x507ef7[_0x7bfb('0x7')];_0x507ef7['uniqueid']=transfers[_0x7bfb('0x8')][_0x507ef7[_0x7bfb('0x7')]]['transfereeuniqueid'];}utils['info'](util['format']('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x507ef7['uniqueid'],_0x507ef7['channel'],_0x507ef7['queue'],_0x507ef7[_0x7bfb('0x9')],_0x507ef7[_0x7bfb('0xa')],_0x507ef7[_0x7bfb('0xb')],_0x507ef7['connectedlinenum'],_0x507ef7[_0x7bfb('0xc')]));if(_0x507ef7['accountcode']){utils[_0x7bfb('0xd')](_0x507ef7['accountcode'])[_0x7bfb('0xe')](function(_0x520e7d){if(_0x520e7d){_0x507ef7['UserId']=_0x520e7d['id'];}utils[_0x7bfb('0xf')](_0x7bfb('0x10'),_0x507ef7);});}else{utils[_0x7bfb('0xf')](_0x7bfb('0x10'),_0x507ef7);}if(channels[_0x507ef7[_0x7bfb('0x7')]]){delete channels[_0x507ef7[_0x7bfb('0x7')]];}else if(_0x55fe13&&channels[_0x55fe13]){delete transfers[_0x7bfb('0x8')][_0x55fe13];delete channels[_0x55fe13];}}exports['newchannel']=function(_0x33e83b){try{utils[_0x7bfb('0x11')](util['format'](_0x7bfb('0x12'),_0x33e83b[_0x7bfb('0x7')]),_0x33e83b);if(_0x33e83b[_0x7bfb('0x7')]==_0x33e83b[_0x7bfb('0x13')]&&_0x33e83b[_0x7bfb('0x14')]!=_0x7bfb('0x15')){utils[_0x7bfb('0x16')](util['format'](_0x7bfb('0x17'),_0x33e83b[_0x7bfb('0x7')],_0x33e83b[_0x7bfb('0x18')],_0x33e83b[_0x7bfb('0x19')]));channels[_0x33e83b[_0x7bfb('0x7')]]={'uniqueid':_0x33e83b[_0x7bfb('0x7')],'accountcode':_0x33e83b[_0x7bfb('0x1a')],'source':_0x33e83b[_0x7bfb('0xb')],'destination':_0x33e83b[_0x7bfb('0x19')],'destinationcontext':_0x33e83b[_0x7bfb('0x18')],'channel':_0x33e83b['channel'],'starttime':utils[_0x7bfb('0x1b')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x7bfb('0x3'),'amaflags':_0x7bfb('0x1c')};}}catch(_0x244b43){utils[_0x7bfb('0x1d')](util[_0x7bfb('0x1e')](_0x7bfb('0x12'),_0x33e83b['uniqueid']),_0x244b43);}};exports[_0x7bfb('0x1f')]=function(_0x3061d6){try{utils[_0x7bfb('0x11')](util[_0x7bfb('0x1e')](_0x7bfb('0x20'),_0x3061d6[_0x7bfb('0x7')]),_0x3061d6);if(!_[_0x7bfb('0x21')](channels[_0x3061d6[_0x7bfb('0x7')]])&&_0x3061d6[_0x7bfb('0x22')]==0x6){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x23'),_0x3061d6[_0x7bfb('0x7')],_0x3061d6[_0x7bfb('0x18')],_0x3061d6['channel']));if(_[_0x7bfb('0x21')](channels[_0x3061d6[_0x7bfb('0x7')]][_0x7bfb('0x24')])){channels[_0x3061d6[_0x7bfb('0x7')]]['systemanswertime']=utils[_0x7bfb('0x1b')]();}}else if(!_[_0x7bfb('0x21')](channels[_0x3061d6[_0x7bfb('0x13')]])&&_0x3061d6[_0x7bfb('0x22')]==0x6&&_0x3061d6[_0x7bfb('0x18')]!=_0x7bfb('0x25')){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')]('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x3061d6[_0x7bfb('0x7')],_0x3061d6[_0x7bfb('0x13')],_0x3061d6[_0x7bfb('0x18')],_0x3061d6[_0x7bfb('0x14')]));channels[_0x3061d6[_0x7bfb('0x13')]]['accountcode']=_0x3061d6[_0x7bfb('0x1a')];channels[_0x3061d6[_0x7bfb('0x13')]][_0x7bfb('0x26')]=_0x3061d6[_0x7bfb('0x14')];if(_['isNil'](channels[_0x3061d6['linkedid']][_0x7bfb('0x27')])){channels[_0x3061d6[_0x7bfb('0x13')]][_0x7bfb('0x27')]=utils[_0x7bfb('0x1b')]();}channels[_0x3061d6['linkedid']][_0x7bfb('0x28')]=dispositions[_[_0x7bfb('0x29')](_0x3061d6[_0x7bfb('0x22')])]||'ANSWERED';}}catch(_0xe9fef2){utils[_0x7bfb('0x1d')](util[_0x7bfb('0x1e')](_0x7bfb('0x20'),_0x3061d6[_0x7bfb('0x7')]),_0xe9fef2);}};exports[_0x7bfb('0x2a')]=function(_0x39dc0d){try{if(!_[_0x7bfb('0x21')](channels[_0x39dc0d[_0x7bfb('0x7')]])){utils[_0x7bfb('0x11')](util['format']('[%s][calls][hangup]',_0x39dc0d[_0x7bfb('0x7')]),_0x39dc0d);if(_[_0x7bfb('0x21')](channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x2b')])){channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x2b')]=_0x39dc0d[_0x7bfb('0x2c')]+'\x20<'+_0x39dc0d[_0x7bfb('0xb')]+'>';}utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x2d'),_0x39dc0d['uniqueid'],channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x2b')],_0x39dc0d[_0x7bfb('0x2e')]));channels[_0x39dc0d[_0x7bfb('0x7')]]['endtime']=utils[_0x7bfb('0x1b')]();channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x2f')]=utils[_0x7bfb('0x30')](channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x31')],channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x32')]);channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x33')]=channels[_0x39dc0d[_0x7bfb('0x7')]]['answertime']?utils['diffTime'](channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x31')],channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x27')]):0x0;writeDB(channels[_0x39dc0d['uniqueid']]);}}catch(_0x4ba43e){utils[_0x7bfb('0x1d')](util[_0x7bfb('0x1e')](_0x7bfb('0x34'),_0x39dc0d[_0x7bfb('0x7')]),_0x4ba43e);}};exports['attendedtransfer']=function(_0x846a7b){try{if(!_[_0x7bfb('0x21')](channels[_0x846a7b[_0x7bfb('0x35')]])){utils['debug'](util['format']('[%s][calls][attendedtransfer]',_0x846a7b[_0x7bfb('0x36')]),_0x846a7b);if(channels[_0x846a7b[_0x7bfb('0x35')]]['channel']==_0x846a7b[_0x7bfb('0x37')]){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x38'),_0x846a7b[_0x7bfb('0x36')],_0x846a7b[_0x7bfb('0x35')],_0x846a7b[_0x7bfb('0x39')]));channels[_0x846a7b[_0x7bfb('0x35')]]['destinationchannel']=_0x846a7b[_0x7bfb('0x39')];channels[_0x846a7b[_0x7bfb('0x35')]]['userfield']=_0x7bfb('0x3a');}else if(channels[_0x846a7b[_0x7bfb('0x35')]][_0x7bfb('0x14')]=_0x846a7b['transfertargetchannel']){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x846a7b['origtransfereruniqueid'],_0x846a7b['localtwolinkedid'],_0x846a7b[_0x7bfb('0x3b')]));channels[_0x846a7b[_0x7bfb('0x35')]]['destinationchannel']=_0x846a7b[_0x7bfb('0x3b')];channels[_0x846a7b['localtwolinkedid']]['userfield']=_0x7bfb('0x3a');}}}catch(_0x5067c8){utils[_0x7bfb('0x1d')](util[_0x7bfb('0x1e')](_0x7bfb('0x3c'),_0x846a7b[_0x7bfb('0x36')]),_0x5067c8);}};exports['musiconholdstart']=function(_0x56c5a4){try{if(!_[_0x7bfb('0x21')](channels[_0x56c5a4[_0x7bfb('0x7')]])){utils[_0x7bfb('0x11')](util[_0x7bfb('0x1e')]('[%s][calls][musiconholdstart]',_0x56c5a4[_0x7bfb('0x7')]),_0x56c5a4);channels[_0x56c5a4['uniqueid']][_0x7bfb('0x3d')]=utils[_0x7bfb('0x1b')]();utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x56c5a4['uniqueid'],channels[_0x56c5a4[_0x7bfb('0x7')]][_0x7bfb('0x3d')]));}}catch(_0x502966){utils['error'](util['format']('[%s][calls][musiconholdstart]',_0x56c5a4[_0x7bfb('0x7')]),_0x502966);}};exports['musiconholdstop']=function(_0x4ccc9e){try{if(!_[_0x7bfb('0x21')](channels[_0x4ccc9e[_0x7bfb('0x7')]])){utils[_0x7bfb('0x11')](util[_0x7bfb('0x1e')](_0x7bfb('0x3e'),_0x4ccc9e[_0x7bfb('0x7')]),_0x4ccc9e);if(!_['isNil'](channels[_0x4ccc9e[_0x7bfb('0x7')]]['musiconholdstartAt'])){channels[_0x4ccc9e['uniqueid']][_0x7bfb('0x3f')]+=utils['diffTime'](utils[_0x7bfb('0x1b')](),channels[_0x4ccc9e[_0x7bfb('0x7')]][_0x7bfb('0x3d')]);utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x40'),_0x4ccc9e[_0x7bfb('0x7')],channels[_0x4ccc9e[_0x7bfb('0x7')]][_0x7bfb('0x3f')]));delete channels[_0x4ccc9e[_0x7bfb('0x7')]][_0x7bfb('0x3d')];}}}catch(_0x5e1e73){utils[_0x7bfb('0x1d')](util['format']('[%s][calls][musiconholdstop]',_0x4ccc9e['uniqueid']),_0x5e1e73);}};exports[_0x7bfb('0x41')]=function(_0x7059ac){try{if(!_[_0x7bfb('0x21')](channels[_0x7059ac[_0x7bfb('0x7')]])){utils[_0x7bfb('0x11')](util[_0x7bfb('0x1e')](_0x7bfb('0x42'),_0x7059ac[_0x7bfb('0x7')]),_0x7059ac);if(!_['isNil'](_0x7059ac[_0x7bfb('0x43')]['xmd-originatecalleridnum'])){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x44'),_0x7059ac[_0x7bfb('0x7')],_0x7059ac[_0x7bfb('0x45')]));channels[_0x7059ac['uniqueid']]['source']=_0x7059ac[_0x7bfb('0x45')];}if(!_['isNil'](_0x7059ac[_0x7bfb('0x43')]['xmd-phone'])){utils['info'](util[_0x7bfb('0x1e')](_0x7bfb('0x46'),_0x7059ac[_0x7bfb('0x7')],_0x7059ac[_0x7bfb('0x45')]));channels[_0x7059ac[_0x7bfb('0x7')]][_0x7bfb('0x47')]=_0x7059ac[_0x7bfb('0x45')];channels[_0x7059ac[_0x7bfb('0x7')]]['callerid']='\x22'+_0x7059ac[_0x7bfb('0x45')]+_0x7bfb('0x48')+_0x7059ac[_0x7bfb('0x45')]+'>';}if(!_[_0x7bfb('0x21')](_0x7059ac[_0x7bfb('0x43')][_0x7bfb('0x49')])||!_[_0x7bfb('0x21')](_0x7059ac['variable']['xmd-callerid'])){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x4a'),_0x7059ac['uniqueid'],!_[_0x7bfb('0x21')](_0x7059ac[_0x7bfb('0x43')][_0x7bfb('0x49')])?'xmd-callerid-preview':'xmd-callerid',_0x7059ac[_0x7bfb('0x45')]));channels[_0x7059ac['uniqueid']][_0x7bfb('0x2b')]=_0x7059ac[_0x7bfb('0x45')];}if(!_['isNil'](_0x7059ac['variable']['xmd-queue'])||!_[_0x7bfb('0x21')](_0x7059ac[_0x7bfb('0x43')][_0x7bfb('0x4b')])){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x4a'),_0x7059ac[_0x7bfb('0x7')],!_[_0x7bfb('0x21')](_0x7059ac[_0x7bfb('0x43')][_0x7bfb('0x4c')])?_0x7bfb('0x4c'):_0x7bfb('0x4b'),_0x7059ac['value']));channels[_0x7059ac['uniqueid']][_0x7bfb('0x4d')]='Queue';channels[_0x7059ac['uniqueid']][_0x7bfb('0x4e')]=_0x7059ac[_0x7bfb('0x45')];channels[_0x7059ac['uniqueid']][_0x7bfb('0x4f')]=!![];}if(!_[_0x7bfb('0x21')](_0x7059ac[_0x7bfb('0x43')][_0x7bfb('0x50')])){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x7059ac['uniqueid'],_0x7059ac[_0x7bfb('0x45')]));channels[_0x7059ac[_0x7bfb('0x7')]][_0x7bfb('0x51')]=_0x7059ac[_0x7bfb('0x45')];}if(!_[_0x7bfb('0x21')](_0x7059ac[_0x7bfb('0x43')][_0x7bfb('0x52')])){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x53'),_0x7059ac[_0x7bfb('0x7')],_0x7059ac['value']));channels[_0x7059ac['uniqueid']][_0x7bfb('0x54')]=_0x7059ac[_0x7bfb('0x45')];}if(!_[_0x7bfb('0x21')](_0x7059ac['variable'][_0x7bfb('0x55')])){utils[_0x7bfb('0x16')](util['format'](_0x7bfb('0x56'),_0x7059ac['uniqueid'],_0x7059ac[_0x7bfb('0x45')]));channels[_0x7059ac[_0x7bfb('0x7')]][_0x7bfb('0x57')]=_0x7059ac[_0x7bfb('0x45')];}if(!_[_0x7bfb('0x21')](_0x7059ac[_0x7bfb('0x43')][_0x7bfb('0x58')])){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x59'),_0x7059ac[_0x7bfb('0x7')],_0x7059ac['value']));channels[_0x7059ac[_0x7bfb('0x7')]][_0x7bfb('0x58')]=_0x7059ac[_0x7bfb('0x45')];}}}catch(_0x45239e){utils[_0x7bfb('0x1d')](util['format']('[%s][calls][varset]',_0x7059ac[_0x7bfb('0x7')]),_0x45239e);}};exports['newexten']=function(_0x204871){try{if(!_[_0x7bfb('0x21')](channels[_0x204871[_0x7bfb('0x7')]])){utils['debug'](util[_0x7bfb('0x1e')](_0x7bfb('0x5a'),_0x204871[_0x7bfb('0x7')]),_0x204871);utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x5b'),_0x204871[_0x7bfb('0x7')],_0x204871[_0x7bfb('0x5c')],_0x204871['appdata']));if(_0x204871[_0x7bfb('0x5c')][_0x7bfb('0x5d')]()=='set'&&_[_0x7bfb('0x5e')](_0x204871['appdata'][_0x7bfb('0x5d')](),_0x7bfb('0x5f'))){var _0x51021d=_0x204871[_0x7bfb('0x60')][_0x7bfb('0x61')]('=');var _0x334b69=_0x51021d[0x0][_0x7bfb('0x62')](_0x51021d[0x0][_0x7bfb('0x63')]('(')+0x1,_0x51021d[0x0][_0x7bfb('0x63')](')'));var _0x18a229=_0x51021d[0x1];channels[_0x204871[_0x7bfb('0x7')]][_0x334b69]=_0x18a229;}if(!_['includes']([_0x7bfb('0x2a'),_0x7bfb('0x64'),_0x7bfb('0x65'),_0x7bfb('0x66'),'gotoif'],_0x204871[_0x7bfb('0x5c')][_0x7bfb('0x5d')]())){channels[_0x204871['uniqueid']][_0x7bfb('0x4d')]=_0x204871[_0x7bfb('0x5c')];channels[_0x204871[_0x7bfb('0x7')]][_0x7bfb('0x4e')]=_0x204871[_0x7bfb('0x60')];}}}catch(_0xb79688){utils[_0x7bfb('0x1d')](util[_0x7bfb('0x1e')]('[%s][calls][newexten]',_0x204871[_0x7bfb('0x7')]),_0xb79688);}};
\ No newline at end of file
index 6d09470..8787f81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4986=['close','managerevent','./utils','connect','info','[core]\x20shutdown','[core]\x20fullybooted','error','[core]\x20error'];(function(_0x247443,_0x4f16d1){var _0x27e5d6=function(_0x3601c8){while(--_0x3601c8){_0x247443['push'](_0x247443['shift']());}};_0x27e5d6(++_0x4f16d1);}(_0x4986,0x6e));var _0x6498=function(_0x500acf,_0x266f15){_0x500acf=_0x500acf-0x0;var _0x27d233=_0x4986[_0x500acf];return _0x27d233;};'use strict';var utils=require(_0x6498('0x0'));exports[_0x6498('0x1')]=function(){utils[_0x6498('0x2')]('[core]\x20connected');};exports['shutdown']=function(){utils[_0x6498('0x2')](_0x6498('0x3'));};exports['fullybooted']=function(){utils[_0x6498('0x2')](_0x6498('0x4'));};exports[_0x6498('0x5')]=function(_0x10967e){utils[_0x6498('0x5')](_0x6498('0x6'),_0x10967e);};exports[_0x6498('0x7')]=function(){utils['info']('[core]\x20close');};exports[_0x6498('0x8')]=function(_0x2472af){};
\ No newline at end of file
+var _0x5464=['[core]\x20close','connect','info','shutdown','[core]\x20shutdown','[core]\x20fullybooted','error','close'];(function(_0x513441,_0x20bfba){var _0x5a49c8=function(_0x2cc7d9){while(--_0x2cc7d9){_0x513441['push'](_0x513441['shift']());}};_0x5a49c8(++_0x20bfba);}(_0x5464,0x171));var _0x4546=function(_0x4b4b2a,_0x202fec){_0x4b4b2a=_0x4b4b2a-0x0;var _0x598849=_0x5464[_0x4b4b2a];return _0x598849;};'use strict';var utils=require('./utils');exports[_0x4546('0x0')]=function(){utils[_0x4546('0x1')]('[core]\x20connected');};exports[_0x4546('0x2')]=function(){utils['info'](_0x4546('0x3'));};exports['fullybooted']=function(){utils['info'](_0x4546('0x4'));};exports[_0x4546('0x5')]=function(_0x57f857){utils['error']('[core]\x20error',_0x57f857);};exports[_0x4546('0x6')]=function(){utils[_0x4546('0x1')](_0x4546('0x7'));};exports['managerevent']=function(_0x520076){};
\ No newline at end of file
index b52c8a7..9674a49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a2b=['[%s][dials][dialend]','ANSWER','answertime','connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','complete','duration','diffTime','endtime','holdtime','billableseconds','lodash','util','./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','dialstatus','newexten','debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','appdata','application','toLowerCase','set','startsWith','cdr(routeid)','split','varset','[%s][dials][varset]','isNil','variable','value','error','dialbegin','[%s][dials][dialbegin]','assign','starttime','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called'];(function(_0x2eeac9,_0x185be0){var _0x1337d1=function(_0x2ecb95){while(--_0x2ecb95){_0x2eeac9['push'](_0x2eeac9['shift']());}};_0x1337d1(++_0x185be0);}(_0x0a2b,0x140));var _0xb0a2=function(_0x2dbce7,_0x57cb8d){_0x2dbce7=_0x2dbce7-0x0;var _0x3a3ed0=_0x0a2b[_0x2dbce7];return _0x3a3ed0;};'use strict';var _=require(_0xb0a2('0x0'));var util=require(_0xb0a2('0x1'));var utils=require(_0xb0a2('0x2'));var dials={};function writeDB(_0x391c72){utils[_0xb0a2('0x3')](util[_0xb0a2('0x4')](_0xb0a2('0x5'),_0x391c72[_0xb0a2('0x6')],_0x391c72[_0xb0a2('0x7')],_0x391c72[_0xb0a2('0x8')],_0x391c72[_0xb0a2('0x9')],_0x391c72[_0xb0a2('0xa')],_0x391c72[_0xb0a2('0xb')]));utils['request']('CreateVoiceDialReport',_0x391c72);delete dials[_0x391c72[_0xb0a2('0x6')]];}exports[_0xb0a2('0xc')]=function(_0x48bf0f){try{utils[_0xb0a2('0xd')](util[_0xb0a2('0x4')](_0xb0a2('0xe'),_0x48bf0f[_0xb0a2('0x6')]),_0x48bf0f);utils[_0xb0a2('0x3')](util['format'](_0xb0a2('0xf'),_0x48bf0f[_0xb0a2('0x6')],_0x48bf0f['application'],_0x48bf0f[_0xb0a2('0x10')]));if(_0x48bf0f[_0xb0a2('0x11')][_0xb0a2('0x12')]()==_0xb0a2('0x13')&&_[_0xb0a2('0x14')](_0x48bf0f['appdata'][_0xb0a2('0x12')](),_0xb0a2('0x15'))){var _0x223822=_0x48bf0f[_0xb0a2('0x10')][_0xb0a2('0x16')]('=');dials[_0x48bf0f[_0xb0a2('0x6')]]={'routeId':_0x223822[0x1]};}}catch(_0x155abf){utils['error'](util[_0xb0a2('0x4')](_0xb0a2('0xe'),_0x48bf0f['uniqueid']),_0x155abf);}};exports[_0xb0a2('0x17')]=function(_0x1f29d8){try{utils['debug'](util[_0xb0a2('0x4')](_0xb0a2('0x18'),_0x1f29d8[_0xb0a2('0x6')]),_0x1f29d8);if(!_[_0xb0a2('0x19')](_0x1f29d8[_0xb0a2('0x1a')]['outboundrouteid'])){utils[_0xb0a2('0x3')](util['format']('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x1f29d8[_0xb0a2('0x6')],_0x1f29d8[_0xb0a2('0x1b')]));dials[_0x1f29d8['uniqueid']]={'routeId':_0x1f29d8[_0xb0a2('0x1b')]};}}catch(_0x3d6b89){utils[_0xb0a2('0x1c')](util[_0xb0a2('0x4')]('[%s][dials][varset]',_0x1f29d8[_0xb0a2('0x6')]),_0x3d6b89);}};exports[_0xb0a2('0x1d')]=function(_0x45cad6){try{if(!_[_0xb0a2('0x19')](dials[_0x45cad6[_0xb0a2('0x6')]])){utils['debug'](util[_0xb0a2('0x4')](_0xb0a2('0x1e'),_0x45cad6[_0xb0a2('0x6')]),_0x45cad6);dials[_0x45cad6[_0xb0a2('0x6')]]=_[_0xb0a2('0x1f')](dials[_0x45cad6['uniqueid']],_0x45cad6);dials[_0x45cad6['uniqueid']][_0xb0a2('0x20')]=utils[_0xb0a2('0x21')]();dials[_0x45cad6[_0xb0a2('0x6')]][_0xb0a2('0x22')]=_0xb0a2('0x23');utils[_0xb0a2('0x3')](util[_0xb0a2('0x4')](_0xb0a2('0x24'),_0x45cad6[_0xb0a2('0x6')],dials[_0x45cad6[_0xb0a2('0x6')]]['starttime']));}}catch(_0x1143ae){utils[_0xb0a2('0x1c')](util[_0xb0a2('0x4')](_0xb0a2('0x1e'),_0x45cad6['uniqueid']),_0x1143ae);}};exports['dialend']=function(_0x37edfc){try{if(!_[_0xb0a2('0x19')](dials[_0x37edfc[_0xb0a2('0x6')]])){utils[_0xb0a2('0xd')](util['format'](_0xb0a2('0x25'),_0x37edfc[_0xb0a2('0x6')]),_0x37edfc);dials[_0x37edfc[_0xb0a2('0x6')]][_0xb0a2('0xb')]=_0x37edfc[_0xb0a2('0xb')];if(_0x37edfc['dialstatus']==_0xb0a2('0x26')){dials[_0x37edfc['uniqueid']]=_[_0xb0a2('0x1f')](dials[_0x37edfc[_0xb0a2('0x6')]],_0x37edfc);dials[_0x37edfc[_0xb0a2('0x6')]][_0xb0a2('0x27')]=utils[_0xb0a2('0x21')]();dials[_0x37edfc[_0xb0a2('0x6')]][_0xb0a2('0x22')]=_0xb0a2('0x28');utils['info'](util[_0xb0a2('0x4')]('[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect',_0x37edfc[_0xb0a2('0x6')],_0x37edfc['dialstatus'],dials[_0x37edfc['uniqueid']][_0xb0a2('0x27')]));}else{utils[_0xb0a2('0x3')](util[_0xb0a2('0x4')](_0xb0a2('0x29'),_0x37edfc[_0xb0a2('0x6')],_0x37edfc[_0xb0a2('0xb')]));}}}catch(_0x58991c){utils['error'](util[_0xb0a2('0x4')](_0xb0a2('0x25'),_0x37edfc[_0xb0a2('0x6')]),_0x58991c);}};exports[_0xb0a2('0x2a')]=function(_0x26126c){try{if(!_[_0xb0a2('0x19')](dials[_0x26126c[_0xb0a2('0x6')]])){utils[_0xb0a2('0xd')](util[_0xb0a2('0x4')]('[%s][dials][hangup]',_0x26126c[_0xb0a2('0x6')]),_0x26126c);utils[_0xb0a2('0x3')](util['format'](_0xb0a2('0x2b'),_0x26126c[_0xb0a2('0x6')],_0x26126c[_0xb0a2('0x9')],_0x26126c[_0xb0a2('0x2c')],_0x26126c['cause-txt']));dials[_0x26126c[_0xb0a2('0x6')]]=_[_0xb0a2('0x1f')](dials[_0x26126c[_0xb0a2('0x6')]],{'endtime':utils['now'](),'lastevent':_0xb0a2('0x2d')});dials[_0x26126c[_0xb0a2('0x6')]][_0xb0a2('0x2e')]=utils[_0xb0a2('0x2f')](dials[_0x26126c[_0xb0a2('0x6')]][_0xb0a2('0x30')],dials[_0x26126c[_0xb0a2('0x6')]]['starttime']);dials[_0x26126c['uniqueid']][_0xb0a2('0x31')]=utils[_0xb0a2('0x2f')](dials[_0x26126c[_0xb0a2('0x6')]][_0xb0a2('0x27')]||dials[_0x26126c[_0xb0a2('0x6')]][_0xb0a2('0x30')],dials[_0x26126c[_0xb0a2('0x6')]]['starttime']);dials[_0x26126c[_0xb0a2('0x6')]][_0xb0a2('0x32')]=dials[_0x26126c['uniqueid']][_0xb0a2('0x27')]?utils[_0xb0a2('0x2f')](dials[_0x26126c[_0xb0a2('0x6')]][_0xb0a2('0x30')],dials[_0x26126c[_0xb0a2('0x6')]][_0xb0a2('0x27')]):0x0;writeDB(dials[_0x26126c[_0xb0a2('0x6')]]);}}catch(_0x440ada){utils[_0xb0a2('0x1c')](util[_0xb0a2('0x4')]('[%s][dials][hangup]',_0x26126c[_0xb0a2('0x6')]),_0x440ada);}};
\ No newline at end of file
+var _0xbf00=['[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','duration','diffTime','holdtime','answertime','billableseconds','endtime','util','./utils','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','dialstatus','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]','info','application','appdata','toLowerCase','set','startsWith','split','varset','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','error','[%s][dials][varset]','dialbegin','assign','now','lastevent','called','starttime','[%s][dials][dialbegin]','dialend','[%s][dials][dialend]','ANSWER','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup'];(function(_0x14b693,_0x34cf25){var _0x35477e=function(_0x3292c6){while(--_0x3292c6){_0x14b693['push'](_0x14b693['shift']());}};_0x35477e(++_0x34cf25);}(_0xbf00,0x185));var _0x0bf0=function(_0x5e9876,_0x16052d){_0x5e9876=_0x5e9876-0x0;var _0x576c48=_0xbf00[_0x5e9876];return _0x576c48;};'use strict';var _=require('lodash');var util=require(_0x0bf0('0x0'));var utils=require(_0x0bf0('0x1'));var dials={};function writeDB(_0x58a04f){utils['info'](util[_0x0bf0('0x2')](_0x0bf0('0x3'),_0x58a04f[_0x0bf0('0x4')],_0x58a04f[_0x0bf0('0x5')],_0x58a04f[_0x0bf0('0x6')],_0x58a04f[_0x0bf0('0x7')],_0x58a04f[_0x0bf0('0x8')],_0x58a04f[_0x0bf0('0x9')]));utils['request'](_0x0bf0('0xa'),_0x58a04f);delete dials[_0x58a04f[_0x0bf0('0x4')]];}exports[_0x0bf0('0xb')]=function(_0xad89fb){try{utils[_0x0bf0('0xc')](util[_0x0bf0('0x2')](_0x0bf0('0xd'),_0xad89fb[_0x0bf0('0x4')]),_0xad89fb);utils[_0x0bf0('0xe')](util[_0x0bf0('0x2')]('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0xad89fb[_0x0bf0('0x4')],_0xad89fb[_0x0bf0('0xf')],_0xad89fb[_0x0bf0('0x10')]));if(_0xad89fb[_0x0bf0('0xf')][_0x0bf0('0x11')]()==_0x0bf0('0x12')&&_[_0x0bf0('0x13')](_0xad89fb[_0x0bf0('0x10')][_0x0bf0('0x11')](),'cdr(routeid)')){var _0x2eda60=_0xad89fb['appdata'][_0x0bf0('0x14')]('=');dials[_0xad89fb['uniqueid']]={'routeId':_0x2eda60[0x1]};}}catch(_0x5ba153){utils['error'](util[_0x0bf0('0x2')](_0x0bf0('0xd'),_0xad89fb[_0x0bf0('0x4')]),_0x5ba153);}};exports[_0x0bf0('0x15')]=function(_0x38a958){try{utils[_0x0bf0('0xc')](util['format']('[%s][dials][varset]',_0x38a958[_0x0bf0('0x4')]),_0x38a958);if(!_[_0x0bf0('0x16')](_0x38a958[_0x0bf0('0x17')][_0x0bf0('0x18')])){utils[_0x0bf0('0xe')](util['format'](_0x0bf0('0x19'),_0x38a958[_0x0bf0('0x4')],_0x38a958['value']));dials[_0x38a958[_0x0bf0('0x4')]]={'routeId':_0x38a958[_0x0bf0('0x1a')]};}}catch(_0x19e535){utils[_0x0bf0('0x1b')](util[_0x0bf0('0x2')](_0x0bf0('0x1c'),_0x38a958[_0x0bf0('0x4')]),_0x19e535);}};exports[_0x0bf0('0x1d')]=function(_0x1a1558){try{if(!_[_0x0bf0('0x16')](dials[_0x1a1558['uniqueid']])){utils[_0x0bf0('0xc')](util[_0x0bf0('0x2')]('[%s][dials][dialbegin]',_0x1a1558['uniqueid']),_0x1a1558);dials[_0x1a1558[_0x0bf0('0x4')]]=_[_0x0bf0('0x1e')](dials[_0x1a1558[_0x0bf0('0x4')]],_0x1a1558);dials[_0x1a1558[_0x0bf0('0x4')]]['starttime']=utils[_0x0bf0('0x1f')]();dials[_0x1a1558['uniqueid']][_0x0bf0('0x20')]=_0x0bf0('0x21');utils['info'](util[_0x0bf0('0x2')]('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0x1a1558[_0x0bf0('0x4')],dials[_0x1a1558[_0x0bf0('0x4')]][_0x0bf0('0x22')]));}}catch(_0x2a8844){utils['error'](util[_0x0bf0('0x2')](_0x0bf0('0x23'),_0x1a1558[_0x0bf0('0x4')]),_0x2a8844);}};exports[_0x0bf0('0x24')]=function(_0x588f8e){try{if(!_[_0x0bf0('0x16')](dials[_0x588f8e[_0x0bf0('0x4')]])){utils[_0x0bf0('0xc')](util[_0x0bf0('0x2')](_0x0bf0('0x25'),_0x588f8e[_0x0bf0('0x4')]),_0x588f8e);dials[_0x588f8e[_0x0bf0('0x4')]]['dialstatus']=_0x588f8e[_0x0bf0('0x9')];if(_0x588f8e[_0x0bf0('0x9')]==_0x0bf0('0x26')){dials[_0x588f8e[_0x0bf0('0x4')]]=_['assign'](dials[_0x588f8e[_0x0bf0('0x4')]],_0x588f8e);dials[_0x588f8e[_0x0bf0('0x4')]]['answertime']=utils['now']();dials[_0x588f8e[_0x0bf0('0x4')]][_0x0bf0('0x20')]=_0x0bf0('0x27');utils[_0x0bf0('0xe')](util[_0x0bf0('0x2')](_0x0bf0('0x28'),_0x588f8e[_0x0bf0('0x4')],_0x588f8e[_0x0bf0('0x9')],dials[_0x588f8e[_0x0bf0('0x4')]]['answertime']));}else{utils['info'](util[_0x0bf0('0x2')](_0x0bf0('0x29'),_0x588f8e[_0x0bf0('0x4')],_0x588f8e[_0x0bf0('0x9')]));}}}catch(_0x4f8210){utils['error'](util['format'](_0x0bf0('0x25'),_0x588f8e[_0x0bf0('0x4')]),_0x4f8210);}};exports[_0x0bf0('0x2a')]=function(_0x489c84){try{if(!_['isNil'](dials[_0x489c84[_0x0bf0('0x4')]])){utils[_0x0bf0('0xc')](util[_0x0bf0('0x2')](_0x0bf0('0x2b'),_0x489c84[_0x0bf0('0x4')]),_0x489c84);utils[_0x0bf0('0xe')](util[_0x0bf0('0x2')](_0x0bf0('0x2c'),_0x489c84[_0x0bf0('0x4')],_0x489c84[_0x0bf0('0x7')],_0x489c84[_0x0bf0('0x2d')],_0x489c84[_0x0bf0('0x2e')]));dials[_0x489c84[_0x0bf0('0x4')]]=_['assign'](dials[_0x489c84[_0x0bf0('0x4')]],{'endtime':utils['now'](),'lastevent':_0x0bf0('0x2f')});dials[_0x489c84[_0x0bf0('0x4')]][_0x0bf0('0x30')]=utils[_0x0bf0('0x31')](dials[_0x489c84[_0x0bf0('0x4')]]['endtime'],dials[_0x489c84[_0x0bf0('0x4')]]['starttime']);dials[_0x489c84[_0x0bf0('0x4')]][_0x0bf0('0x32')]=utils[_0x0bf0('0x31')](dials[_0x489c84[_0x0bf0('0x4')]][_0x0bf0('0x33')]||dials[_0x489c84[_0x0bf0('0x4')]]['endtime'],dials[_0x489c84[_0x0bf0('0x4')]]['starttime']);dials[_0x489c84['uniqueid']][_0x0bf0('0x34')]=dials[_0x489c84[_0x0bf0('0x4')]][_0x0bf0('0x33')]?utils[_0x0bf0('0x31')](dials[_0x489c84[_0x0bf0('0x4')]][_0x0bf0('0x35')],dials[_0x489c84[_0x0bf0('0x4')]][_0x0bf0('0x33')]):0x0;writeDB(dials[_0x489c84[_0x0bf0('0x4')]]);}}catch(_0x525e33){utils[_0x0bf0('0x1b')](util[_0x0bf0('0x2')](_0x0bf0('0x2b'),_0x489c84[_0x0bf0('0x4')]),_0x525e33);}};
\ No newline at end of file
index a575219..5eec9a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42fb=['queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','[%s][index][varset]','varset','[%s][index][newexten]','newexten','newchannel','dialbegin','[%s][index][dialbegin]','dialend','[%s][index][dialend]','asterisk-manager','./utils','util','asterisk','username','password','keepConnected','xdr','disabled','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','format','[%s][index][devicestatechange]','device','agentcalled','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]'];(function(_0x4824c1,_0x12548d){var _0x1972f0=function(_0x1940c2){while(--_0x1940c2){_0x4824c1['push'](_0x4824c1['shift']());}};_0x1972f0(++_0x12548d);}(_0x42fb,0x1e8));var _0xb42f=function(_0x5bd20c,_0xcb49f4){_0x5bd20c=_0x5bd20c-0x0;var _0x1d5aaa=_0x42fb[_0x5bd20c];return _0x1d5aaa;};var AsteriskManager=require(_0xb42f('0x0'));var config=require('../../config/environment');var utils=require(_0xb42f('0x1'));var util=require(_0xb42f('0x2'));var ami=new AsteriskManager(config[_0xb42f('0x3')]['port'],config['asterisk']['ip'],config[_0xb42f('0x3')][_0xb42f('0x4')],config[_0xb42f('0x3')][_0xb42f('0x5')],!![]);ami[_0xb42f('0x6')]();if(config['xdr']&&config[_0xb42f('0x7')][_0xb42f('0x8')]){utils[_0xb42f('0x9')](_0xb42f('0xa'));}else{var agents=require(_0xb42f('0xb'));var calls=require(_0xb42f('0xc'));var queues=require('./queues.controller');var recordings=require('./recordings.controller');var members=require('./members.controller');var dials=require(_0xb42f('0xd'));var transfers=require(_0xb42f('0xe'));var core=require(_0xb42f('0xf'));ami['on']('connect',core[_0xb42f('0x10')]);ami['on']('shutdown',core[_0xb42f('0x11')]);ami['on'](_0xb42f('0x12'),core[_0xb42f('0x12')]);ami['on'](_0xb42f('0x13'),core[_0xb42f('0x13')]);ami['on'](_0xb42f('0x14'),core[_0xb42f('0x14')]);ami['on'](_0xb42f('0x15'),core[_0xb42f('0x15')]);ami['on'](_0xb42f('0x16'),function(_0x11e622){try{utils[_0xb42f('0x17')](util[_0xb42f('0x18')](_0xb42f('0x19'),_0x11e622[_0xb42f('0x1a')]),_0x11e622);members[_0xb42f('0x16')](_0x11e622);}catch(_0x1831c6){utils[_0xb42f('0x13')](util['format'](_0xb42f('0x19'),_0x11e622['device']),_0x1831c6);}});ami['on'](_0xb42f('0x1b'),function(_0x3edee4){try{utils[_0xb42f('0x17')](util[_0xb42f('0x18')](_0xb42f('0x1c'),_0x3edee4[_0xb42f('0x1d')]),_0x3edee4);agents[_0xb42f('0x1b')](_0x3edee4);}catch(_0x5d1241){utils[_0xb42f('0x13')](util[_0xb42f('0x18')]('[%s][index][agentcalled]',_0x3edee4[_0xb42f('0x1d')]),_0x5d1241);}});ami['on']('agentringnoanswer',function(_0x1b8990){try{utils['debug'](util['format']('[%s][index][agentringnoanswer]',_0x1b8990[_0xb42f('0x1d')]),_0x1b8990);agents[_0xb42f('0x1e')](_0x1b8990);}catch(_0x2be995){utils['error'](util['format'](_0xb42f('0x1f'),_0x1b8990[_0xb42f('0x1d')]),_0x2be995);}});ami['on'](_0xb42f('0x20'),function(_0x1aaf5c){try{utils['debug'](util[_0xb42f('0x18')]('[%s][index][agentconnect]',_0x1aaf5c['uniqueid']),_0x1aaf5c);agents['agentconnect'](_0x1aaf5c);queues[_0xb42f('0x20')](_0x1aaf5c);}catch(_0x1f510e){utils[_0xb42f('0x13')](util[_0xb42f('0x18')](_0xb42f('0x21'),_0x1aaf5c[_0xb42f('0x1d')]),_0x1f510e);}});ami['on'](_0xb42f('0x22'),function(_0x105df1){try{utils[_0xb42f('0x17')](util[_0xb42f('0x18')](_0xb42f('0x23'),_0x105df1[_0xb42f('0x1d')]),_0x105df1);agents['agentcomplete'](_0x105df1);queues[_0xb42f('0x22')](_0x105df1);members['agentcomplete'](_0x105df1);}catch(_0x4e4a89){utils[_0xb42f('0x13')](util[_0xb42f('0x18')](_0xb42f('0x23'),_0x105df1['uniqueid']),_0x4e4a89);}});ami['on'](_0xb42f('0x24'),function(_0x3c0dc9){try{utils['debug'](util['format']('[%s][index][queuecallerabandon]',_0x3c0dc9[_0xb42f('0x1d')]),_0x3c0dc9);agents[_0xb42f('0x24')](_0x3c0dc9);queues['queuecallerabandon'](_0x3c0dc9);}catch(_0xa86770){utils['error'](util[_0xb42f('0x18')](_0xb42f('0x25'),_0x3c0dc9[_0xb42f('0x1d')]),_0xa86770);}});ami['on'](_0xb42f('0x26'),function(_0x38e6b7){try{utils[_0xb42f('0x17')](util[_0xb42f('0x18')](_0xb42f('0x27'),_0x38e6b7[_0xb42f('0x1d')]),_0x38e6b7);queues[_0xb42f('0x26')](_0x38e6b7);recordings[_0xb42f('0x26')](_0x38e6b7);}catch(_0x2f8410){utils[_0xb42f('0x13')](util[_0xb42f('0x18')](_0xb42f('0x27'),_0x38e6b7[_0xb42f('0x1d')]),_0x2f8410);}});ami['on'](_0xb42f('0x28'),function(_0x1352f9){try{utils['debug'](util[_0xb42f('0x18')](_0xb42f('0x29'),_0x1352f9[_0xb42f('0x1d')]),_0x1352f9);queues[_0xb42f('0x28')](_0x1352f9);}catch(_0x29e16c){utils[_0xb42f('0x13')](util[_0xb42f('0x18')](_0xb42f('0x29'),_0x1352f9[_0xb42f('0x1d')]),_0x29e16c);}});ami['on'](_0xb42f('0x2a'),function(_0x3ba822){try{utils[_0xb42f('0x17')](util[_0xb42f('0x18')]('[%s][index][musiconholdstart]',_0x3ba822[_0xb42f('0x1d')]),_0x3ba822);queues[_0xb42f('0x2a')](_0x3ba822);calls[_0xb42f('0x2a')](_0x3ba822);}catch(_0x389903){utils[_0xb42f('0x13')](util[_0xb42f('0x18')](_0xb42f('0x2b'),_0x3ba822[_0xb42f('0x1d')]),_0x389903);}});ami['on'](_0xb42f('0x2c'),function(_0x2c1e0a){try{utils[_0xb42f('0x17')](util[_0xb42f('0x18')](_0xb42f('0x2d'),_0x2c1e0a['uniqueid']),_0x2c1e0a);queues[_0xb42f('0x2c')](_0x2c1e0a);calls[_0xb42f('0x2c')](_0x2c1e0a);}catch(_0x157155){utils[_0xb42f('0x13')](util[_0xb42f('0x18')](_0xb42f('0x2d'),_0x2c1e0a[_0xb42f('0x1d')]),_0x157155);}});ami['on'](_0xb42f('0x2e'),function(_0x75e6cb){try{utils[_0xb42f('0x17')](util[_0xb42f('0x18')]('[%s][index][newstate]',_0x75e6cb[_0xb42f('0x1d')]),_0x75e6cb);calls[_0xb42f('0x2e')](_0x75e6cb);recordings[_0xb42f('0x2e')](_0x75e6cb);}catch(_0x486456){utils[_0xb42f('0x13')](util[_0xb42f('0x18')](_0xb42f('0x2f'),_0x75e6cb[_0xb42f('0x1d')]),_0x486456);}});ami['on'](_0xb42f('0x30'),function(_0x3556a1){try{utils[_0xb42f('0x17')](util[_0xb42f('0x18')]('[%s][index][hangup]',_0x3556a1['uniqueid']),_0x3556a1);calls[_0xb42f('0x30')](_0x3556a1);recordings[_0xb42f('0x30')](_0x3556a1);dials[_0xb42f('0x30')](_0x3556a1);agents[_0xb42f('0x30')](_0x3556a1);queues[_0xb42f('0x30')](_0x3556a1);}catch(_0x5afc76){utils[_0xb42f('0x13')](util['format'](_0xb42f('0x31'),_0x3556a1['uniqueid']),_0x5afc76);}});ami['on'](_0xb42f('0x32'),function(_0x1efb1b){try{utils[_0xb42f('0x17')](util['format'](_0xb42f('0x33'),_0x1efb1b[_0xb42f('0x1d')]),_0x1efb1b);members['cdr'](_0x1efb1b);}catch(_0x2109cd){utils[_0xb42f('0x13')](util[_0xb42f('0x18')]('[%s][index][cdr]',_0x1efb1b['uniqueid']),_0x2109cd);}});ami['on'](_0xb42f('0x34'),function(_0x2f179f){try{utils['debug'](util['format'](_0xb42f('0x35'),_0x2f179f[_0xb42f('0x1d')]),_0x2f179f);queues['blindtransfer'](_0x2f179f);agents[_0xb42f('0x34')](_0x2f179f);transfers[_0xb42f('0x34')](_0x2f179f);}catch(_0x42e452){utils[_0xb42f('0x13')](util[_0xb42f('0x18')](_0xb42f('0x35'),_0x2f179f[_0xb42f('0x1d')]),_0x42e452);}});ami['on'](_0xb42f('0x36'),function(_0x16c6b4){try{utils[_0xb42f('0x17')](util[_0xb42f('0x18')](_0xb42f('0x37'),_0x16c6b4[_0xb42f('0x38')]),_0x16c6b4);queues[_0xb42f('0x36')](_0x16c6b4);transfers[_0xb42f('0x36')](_0x16c6b4);agents[_0xb42f('0x36')](_0x16c6b4);calls[_0xb42f('0x36')](_0x16c6b4);}catch(_0x33b830){utils['error'](util[_0xb42f('0x18')]('[%s][index][attendedtransfer]',_0x16c6b4[_0xb42f('0x38')]),_0x33b830);}});ami['on']('varset',function(_0x1517c5){try{utils[_0xb42f('0x17')](util[_0xb42f('0x18')](_0xb42f('0x39'),_0x1517c5[_0xb42f('0x1d')]),_0x1517c5);queues[_0xb42f('0x3a')](_0x1517c5);recordings[_0xb42f('0x3a')](_0x1517c5);calls[_0xb42f('0x3a')](_0x1517c5);dials[_0xb42f('0x3a')](_0x1517c5);}catch(_0x5d5359){utils[_0xb42f('0x13')](util[_0xb42f('0x18')](_0xb42f('0x39'),_0x1517c5[_0xb42f('0x1d')]),_0x5d5359);}});ami['on']('newexten',function(_0x35c127){try{utils[_0xb42f('0x17')](util[_0xb42f('0x18')](_0xb42f('0x3b'),_0x35c127['uniqueid']),_0x35c127);calls[_0xb42f('0x3c')](_0x35c127);recordings[_0xb42f('0x3c')](_0x35c127);dials[_0xb42f('0x3c')](_0x35c127);}catch(_0x324e17){utils[_0xb42f('0x13')](util['format'](_0xb42f('0x3b'),_0x35c127[_0xb42f('0x1d')]),_0x324e17);}});ami['on'](_0xb42f('0x3d'),function(_0x33aca6){try{utils[_0xb42f('0x17')](util['format']('[%s][index][newchannel]',_0x33aca6['uniqueid']),_0x33aca6);calls[_0xb42f('0x3d')](_0x33aca6);recordings[_0xb42f('0x3d')](_0x33aca6);}catch(_0x1386c1){utils['error'](util['format']('[%s][index][newchannel]',_0x33aca6[_0xb42f('0x1d')]),_0x1386c1);}});ami['on'](_0xb42f('0x3e'),function(_0x517679){try{utils[_0xb42f('0x17')](util['format'](_0xb42f('0x3f'),_0x517679[_0xb42f('0x1d')]),_0x517679);dials[_0xb42f('0x3e')](_0x517679);}catch(_0x27600a){utils[_0xb42f('0x13')](util['format']('[%s]dialbegin',_0x517679[_0xb42f('0x1d')]),_0x27600a);}});ami['on'](_0xb42f('0x40'),function(_0x3e44d1){try{utils['debug'](util[_0xb42f('0x18')](_0xb42f('0x41'),_0x3e44d1['uniqueid']),_0x3e44d1);dials['dialend'](_0x3e44d1);}catch(_0x50059d){utils['error'](util[_0xb42f('0x18')](_0xb42f('0x41'),_0x3e44d1['uniqueid']),_0x50059d);}});}
\ No newline at end of file
+var _0xb7f3=['dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','util','asterisk','username','password','keepConnected','xdr','disabled','info','XDR\x20DISABLED','./calls.controller','./recordings.controller','./members.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','[%s][index][devicestatechange]','device','format','uniqueid','agentcalled','[%s][index][agentcalled]','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','[%s][index][attendedtransfer]','origtransfereruniqueid','attendedtransfer','[%s][index][varset]','varset','newexten','[%s][index][newexten]','[%s][index][newchannel]','newchannel','[%s][index][dialbegin]','[%s]dialbegin'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xb7f3,0x18e));var _0x3b7f=function(_0x43cce5,_0x37d488){_0x43cce5=_0x43cce5-0x0;var _0x511636=_0xb7f3[_0x43cce5];return _0x511636;};var AsteriskManager=require(_0x3b7f('0x0'));var config=require(_0x3b7f('0x1'));var utils=require('./utils');var util=require(_0x3b7f('0x2'));var ami=new AsteriskManager(config['asterisk']['port'],config[_0x3b7f('0x3')]['ip'],config['asterisk'][_0x3b7f('0x4')],config[_0x3b7f('0x3')][_0x3b7f('0x5')],!![]);ami[_0x3b7f('0x6')]();if(config[_0x3b7f('0x7')]&&config[_0x3b7f('0x7')][_0x3b7f('0x8')]){utils[_0x3b7f('0x9')](_0x3b7f('0xa'));}else{var agents=require('./agents.controller');var calls=require(_0x3b7f('0xb'));var queues=require('./queues.controller');var recordings=require(_0x3b7f('0xc'));var members=require(_0x3b7f('0xd'));var dials=require('./dials.controller');var transfers=require(_0x3b7f('0xe'));var core=require(_0x3b7f('0xf'));ami['on'](_0x3b7f('0x10'),core[_0x3b7f('0x10')]);ami['on'](_0x3b7f('0x11'),core['shutdown']);ami['on']('fullybooted',core[_0x3b7f('0x12')]);ami['on'](_0x3b7f('0x13'),core[_0x3b7f('0x13')]);ami['on']('close',core[_0x3b7f('0x14')]);ami['on'](_0x3b7f('0x15'),core[_0x3b7f('0x15')]);ami['on'](_0x3b7f('0x16'),function(_0xa71bc1){try{utils[_0x3b7f('0x17')](util['format'](_0x3b7f('0x18'),_0xa71bc1['device']),_0xa71bc1);members[_0x3b7f('0x16')](_0xa71bc1);}catch(_0x2956a7){utils[_0x3b7f('0x13')](util['format'](_0x3b7f('0x18'),_0xa71bc1[_0x3b7f('0x19')]),_0x2956a7);}});ami['on']('agentcalled',function(_0x38ede5){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')]('[%s][index][agentcalled]',_0x38ede5[_0x3b7f('0x1b')]),_0x38ede5);agents[_0x3b7f('0x1c')](_0x38ede5);}catch(_0xe746e9){utils[_0x3b7f('0x13')](util['format'](_0x3b7f('0x1d'),_0x38ede5[_0x3b7f('0x1b')]),_0xe746e9);}});ami['on'](_0x3b7f('0x1e'),function(_0x29e157){try{utils[_0x3b7f('0x17')](util['format'](_0x3b7f('0x1f'),_0x29e157[_0x3b7f('0x1b')]),_0x29e157);agents[_0x3b7f('0x1e')](_0x29e157);}catch(_0x12a719){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')](_0x3b7f('0x1f'),_0x29e157['uniqueid']),_0x12a719);}});ami['on'](_0x3b7f('0x20'),function(_0x1f5cdd){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')](_0x3b7f('0x21'),_0x1f5cdd[_0x3b7f('0x1b')]),_0x1f5cdd);agents[_0x3b7f('0x20')](_0x1f5cdd);queues[_0x3b7f('0x20')](_0x1f5cdd);}catch(_0x197317){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')](_0x3b7f('0x21'),_0x1f5cdd[_0x3b7f('0x1b')]),_0x197317);}});ami['on']('agentcomplete',function(_0x2c54bb){try{utils['debug'](util[_0x3b7f('0x1a')]('[%s][index][agentcomplete]',_0x2c54bb[_0x3b7f('0x1b')]),_0x2c54bb);agents['agentcomplete'](_0x2c54bb);queues[_0x3b7f('0x22')](_0x2c54bb);members[_0x3b7f('0x22')](_0x2c54bb);}catch(_0x251066){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')]('[%s][index][agentcomplete]',_0x2c54bb['uniqueid']),_0x251066);}});ami['on'](_0x3b7f('0x23'),function(_0x39bbdc){try{utils['debug'](util['format'](_0x3b7f('0x24'),_0x39bbdc['uniqueid']),_0x39bbdc);agents[_0x3b7f('0x23')](_0x39bbdc);queues[_0x3b7f('0x23')](_0x39bbdc);}catch(_0x13f377){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')]('[%s][index][queuecallerabandon]',_0x39bbdc[_0x3b7f('0x1b')]),_0x13f377);}});ami['on'](_0x3b7f('0x25'),function(_0x2a09df){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')](_0x3b7f('0x26'),_0x2a09df[_0x3b7f('0x1b')]),_0x2a09df);queues[_0x3b7f('0x25')](_0x2a09df);recordings[_0x3b7f('0x25')](_0x2a09df);}catch(_0x5b2c9d){utils['error'](util['format'](_0x3b7f('0x26'),_0x2a09df['uniqueid']),_0x5b2c9d);}});ami['on'](_0x3b7f('0x27'),function(_0x2c21f1){try{utils[_0x3b7f('0x17')](util['format'](_0x3b7f('0x28'),_0x2c21f1[_0x3b7f('0x1b')]),_0x2c21f1);queues[_0x3b7f('0x27')](_0x2c21f1);}catch(_0x44daa4){utils['error'](util[_0x3b7f('0x1a')]('[%s][index][queuecallerleave]',_0x2c21f1[_0x3b7f('0x1b')]),_0x44daa4);}});ami['on'](_0x3b7f('0x29'),function(_0xf25208){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')](_0x3b7f('0x2a'),_0xf25208[_0x3b7f('0x1b')]),_0xf25208);queues['musiconholdstart'](_0xf25208);calls[_0x3b7f('0x29')](_0xf25208);}catch(_0xeb1e2b){utils['error'](util[_0x3b7f('0x1a')](_0x3b7f('0x2a'),_0xf25208['uniqueid']),_0xeb1e2b);}});ami['on'](_0x3b7f('0x2b'),function(_0x532b10){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')](_0x3b7f('0x2c'),_0x532b10[_0x3b7f('0x1b')]),_0x532b10);queues[_0x3b7f('0x2b')](_0x532b10);calls[_0x3b7f('0x2b')](_0x532b10);}catch(_0x1c4757){utils['error'](util[_0x3b7f('0x1a')](_0x3b7f('0x2c'),_0x532b10[_0x3b7f('0x1b')]),_0x1c4757);}});ami['on'](_0x3b7f('0x2d'),function(_0x393bec){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')]('[%s][index][newstate]',_0x393bec[_0x3b7f('0x1b')]),_0x393bec);calls[_0x3b7f('0x2d')](_0x393bec);recordings[_0x3b7f('0x2d')](_0x393bec);}catch(_0x1d3d56){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')](_0x3b7f('0x2e'),_0x393bec[_0x3b7f('0x1b')]),_0x1d3d56);}});ami['on'](_0x3b7f('0x2f'),function(_0x190236){try{utils[_0x3b7f('0x17')](util['format']('[%s][index][hangup]',_0x190236['uniqueid']),_0x190236);calls[_0x3b7f('0x2f')](_0x190236);recordings[_0x3b7f('0x2f')](_0x190236);dials['hangup'](_0x190236);agents[_0x3b7f('0x2f')](_0x190236);queues['hangup'](_0x190236);}catch(_0x656f39){utils[_0x3b7f('0x13')](util['format'](_0x3b7f('0x30'),_0x190236[_0x3b7f('0x1b')]),_0x656f39);}});ami['on'](_0x3b7f('0x31'),function(_0x62ed04){try{utils['debug'](util[_0x3b7f('0x1a')](_0x3b7f('0x32'),_0x62ed04[_0x3b7f('0x1b')]),_0x62ed04);members[_0x3b7f('0x31')](_0x62ed04);}catch(_0x29a7bd){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')](_0x3b7f('0x32'),_0x62ed04[_0x3b7f('0x1b')]),_0x29a7bd);}});ami['on'](_0x3b7f('0x33'),function(_0x7f73c4){try{utils['debug'](util['format']('[%s][index][blindtransfer]',_0x7f73c4[_0x3b7f('0x1b')]),_0x7f73c4);queues[_0x3b7f('0x33')](_0x7f73c4);agents['blindtransfer'](_0x7f73c4);transfers['blindtransfer'](_0x7f73c4);}catch(_0x104897){utils['error'](util[_0x3b7f('0x1a')](_0x3b7f('0x34'),_0x7f73c4[_0x3b7f('0x1b')]),_0x104897);}});ami['on']('attendedtransfer',function(_0x579781){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')](_0x3b7f('0x35'),_0x579781[_0x3b7f('0x36')]),_0x579781);queues[_0x3b7f('0x37')](_0x579781);transfers[_0x3b7f('0x37')](_0x579781);agents[_0x3b7f('0x37')](_0x579781);calls[_0x3b7f('0x37')](_0x579781);}catch(_0x1a1045){utils[_0x3b7f('0x13')](util['format']('[%s][index][attendedtransfer]',_0x579781[_0x3b7f('0x36')]),_0x1a1045);}});ami['on']('varset',function(_0x111daa){try{utils['debug'](util[_0x3b7f('0x1a')](_0x3b7f('0x38'),_0x111daa[_0x3b7f('0x1b')]),_0x111daa);queues[_0x3b7f('0x39')](_0x111daa);recordings[_0x3b7f('0x39')](_0x111daa);calls['varset'](_0x111daa);dials[_0x3b7f('0x39')](_0x111daa);}catch(_0x58280f){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')](_0x3b7f('0x38'),_0x111daa[_0x3b7f('0x1b')]),_0x58280f);}});ami['on'](_0x3b7f('0x3a'),function(_0x44d9ae){try{utils['debug'](util[_0x3b7f('0x1a')](_0x3b7f('0x3b'),_0x44d9ae[_0x3b7f('0x1b')]),_0x44d9ae);calls[_0x3b7f('0x3a')](_0x44d9ae);recordings[_0x3b7f('0x3a')](_0x44d9ae);dials[_0x3b7f('0x3a')](_0x44d9ae);}catch(_0x559a35){utils['error'](util[_0x3b7f('0x1a')](_0x3b7f('0x3b'),_0x44d9ae[_0x3b7f('0x1b')]),_0x559a35);}});ami['on']('newchannel',function(_0x2d25cd){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')](_0x3b7f('0x3c'),_0x2d25cd[_0x3b7f('0x1b')]),_0x2d25cd);calls[_0x3b7f('0x3d')](_0x2d25cd);recordings[_0x3b7f('0x3d')](_0x2d25cd);}catch(_0x288170){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')](_0x3b7f('0x3c'),_0x2d25cd['uniqueid']),_0x288170);}});ami['on']('dialbegin',function(_0x3e902a){try{utils['debug'](util['format'](_0x3b7f('0x3e'),_0x3e902a[_0x3b7f('0x1b')]),_0x3e902a);dials['dialbegin'](_0x3e902a);}catch(_0x3c8b43){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')](_0x3b7f('0x3f'),_0x3e902a[_0x3b7f('0x1b')]),_0x3c8b43);}});ami['on'](_0x3b7f('0x40'),function(_0x4ec15d){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')](_0x3b7f('0x41'),_0x4ec15d[_0x3b7f('0x1b')]),_0x4ec15d);dials[_0x3b7f('0x40')](_0x4ec15d);}catch(_0xfe9b35){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')]('[%s][index][dialend]',_0x4ec15d[_0x3b7f('0x1b')]),_0xfe9b35);}});}
\ No newline at end of file
index f0c5809..31359a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8ea=['TALKING','now','agent','NOT_INUSE','isNil','exitAt','duration','[%s][members][devicestatechange]','agentcomplete','queue','assign','[%s][members][agentcomplete]','cdr','[%s][members][cdr]','split','data1','source','data3','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','destination','lodash','util','./utils','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','catch','error','[%s][members][writeDB]','some','startsWith','devicestatechange','debug','device','info','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','voice'];(function(_0x5ebf44,_0x4e543e){var _0x2fef12=function(_0x59d629){while(--_0x59d629){_0x5ebf44['push'](_0x5ebf44['shift']());}};_0x2fef12(++_0x4e543e);}(_0xd8ea,0x1bd));var _0xad8e=function(_0x24cb8c,_0x423901){_0x24cb8c=_0x24cb8c-0x0;var _0x2b9b59=_0xd8ea[_0x24cb8c];return _0x2b9b59;};'use strict';var _=require(_0xad8e('0x0'));var util=require(_0xad8e('0x1'));var utils=require(_0xad8e('0x2'));var members={};var exclude=[_0xad8e('0x3'),_0xad8e('0x4')];function writeDB(_0x45afad){utils['info'](util[_0xad8e('0x5')](_0xad8e('0x6'),_0x45afad[_0xad8e('0x7')],_0x45afad['interface'],_0x45afad[_0xad8e('0x8')],_0x45afad[_0xad8e('0x9')],_0x45afad[_0xad8e('0xa')],_0x45afad[_0xad8e('0xb')]));if(_0x45afad['interface']){utils['getUserByInterface'](_0x45afad[_0xad8e('0xc')])[_0xad8e('0xd')](function(_0x24c518){if(_0x24c518){_0x45afad[_0xad8e('0xa')]=_0x24c518[_0xad8e('0xe')];_0x45afad[_0xad8e('0xf')]=_0x24c518[_0xad8e('0xf')];utils[_0xad8e('0x10')](_0xad8e('0x11'),_0x45afad);}else{utils['getUserByName'](_0x45afad[_0xad8e('0xc')]['split']('/')[0x1])[_0xad8e('0xd')](function(_0x112807){if(_0x112807){_0x45afad['membername']=_0x112807[_0xad8e('0xe')];_0x45afad[_0xad8e('0xf')]=_0x112807[_0xad8e('0xf')];utils['request'](_0xad8e('0x11'),_0x45afad);}});}})[_0xad8e('0x12')](function(_0x31d1ea){utils[_0xad8e('0x13')](util[_0xad8e('0x5')](_0xad8e('0x14'),_0x45afad[_0xad8e('0x7')]),_0x31d1ea);});}delete members[_0x45afad[_0xad8e('0xc')]];}function startsWith(_0x3e718d,_0x59308d){return _[_0xad8e('0x15')](_0x3e718d,function(_0x4fd9dd){return _[_0xad8e('0x16')](_0x59308d,_0x4fd9dd);});}exports[_0xad8e('0x17')]=function(_0x14eb38){try{utils[_0xad8e('0x18')](util['format']('[%s][members][devicestatechange]',members[_0x14eb38['device']]?members[_0x14eb38[_0xad8e('0x19')]]['uniqueid']:_0x14eb38[_0xad8e('0x19')]),_0x14eb38);utils[_0xad8e('0x1a')](util['format'](_0xad8e('0x1b'),members[_0x14eb38[_0xad8e('0x19')]]?members[_0x14eb38[_0xad8e('0x19')]][_0xad8e('0x7')]:_0x14eb38[_0xad8e('0x19')],_0x14eb38['state'],_0x14eb38[_0xad8e('0x19')]));switch(_0x14eb38[_0xad8e('0x1c')]){case _0xad8e('0x1d'):case _0xad8e('0x1e'):if(!startsWith(exclude,_0x14eb38['device'])){members[_0x14eb38[_0xad8e('0x19')]]={'channel':_0xad8e('0x1f'),'interface':_0x14eb38[_0xad8e('0x19')],'type':_0xad8e('0x20'),'enterAt':utils[_0xad8e('0x21')](),'role':_0xad8e('0x22')};}break;case _0xad8e('0x23'):if(!_[_0xad8e('0x24')](members[_0x14eb38[_0xad8e('0x19')]])){members[_0x14eb38[_0xad8e('0x19')]][_0xad8e('0x25')]=utils['now']();members[_0x14eb38[_0xad8e('0x19')]][_0xad8e('0x26')]=utils['diffTime'](members[_0x14eb38[_0xad8e('0x19')]][_0xad8e('0x25')],members[_0x14eb38[_0xad8e('0x19')]]['enterAt']);if(members[_0x14eb38['device']][_0xad8e('0x7')]){writeDB(members[_0x14eb38['device']]);}}break;default:break;}}catch(_0x1d21eb){utils[_0xad8e('0x13')](util[_0xad8e('0x5')](_0xad8e('0x27'),members[_0x14eb38['device']]?members[_0x14eb38[_0xad8e('0x19')]]['uniqueid']:_0x14eb38[_0xad8e('0x19')]),_0x1d21eb);}};exports[_0xad8e('0x28')]=function(_0x313b6f){try{if(!_[_0xad8e('0x24')](members[_0x313b6f[_0xad8e('0xc')]])){utils[_0xad8e('0x18')](util[_0xad8e('0x5')]('[%s][members][agentcomplete]',_0x313b6f['uniqueid']),_0x313b6f);utils[_0xad8e('0x1a')](util[_0xad8e('0x5')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x313b6f[_0xad8e('0x7')],_0x313b6f[_0xad8e('0xc')],_0x313b6f[_0xad8e('0x29')]));members[_0x313b6f[_0xad8e('0xc')]]=_[_0xad8e('0x2a')](members[_0x313b6f[_0xad8e('0xc')]],{'data4':_0x313b6f[_0xad8e('0x29')],'uniqueid':_0x313b6f['uniqueid']});}}catch(_0x517766){utils['error'](util[_0xad8e('0x5')](_0xad8e('0x2b'),_0x313b6f[_0xad8e('0x7')]),_0x517766);}};exports[_0xad8e('0x2c')]=function(_0x5270bd){try{utils[_0xad8e('0x18')](util[_0xad8e('0x5')](_0xad8e('0x2d'),_0x5270bd[_0xad8e('0x7')]),_0x5270bd);if(_0x5270bd['channel']){var _0x2951a8=_0x5270bd[_0xad8e('0x8')][_0xad8e('0x2e')]('-')[0x0];if(!_['isNil'](members[_0x2951a8])){members[_0x2951a8]=_['assign'](members[_0x2951a8],{'data1':members[_0x2951a8][_0xad8e('0x2f')]||_0x5270bd[_0xad8e('0xb')],'data2':members[_0x2951a8]['data2']||_0x5270bd[_0xad8e('0x30')],'data3':members[_0x2951a8][_0xad8e('0x31')]||_0x5270bd['destination'],'uniqueid':members[_0x2951a8]['uniqueid']||_0x5270bd['uniqueid']});utils[_0xad8e('0x1a')](util['format'](_0xad8e('0x32'),_0x5270bd[_0xad8e('0x7')],members[_0x2951a8][_0xad8e('0x2f')],members[_0x2951a8]['data2'],members[_0x2951a8][_0xad8e('0x31')]));if(members[_0x2951a8][_0xad8e('0x25')]){writeDB(members[_0x2951a8]);}}}if(_0x5270bd[_0xad8e('0x33')]){var _0xc9a129=_0x5270bd[_0xad8e('0x33')][_0xad8e('0x2e')]('-')[0x0];if(!_['isNil'](members[_0xc9a129])){members[_0xc9a129]=_[_0xad8e('0x2a')](members[_0xc9a129],{'data1':members[_0xc9a129][_0xad8e('0x2f')]||_0x5270bd['type'],'data2':members[_0xc9a129][_0xad8e('0x9')]||_0x5270bd['source'],'data3':members[_0xc9a129][_0xad8e('0x31')]||_0x5270bd[_0xad8e('0x34')],'uniqueid':members[_0xc9a129]['uniqueid']||_0x5270bd[_0xad8e('0x7')]});utils['info'](util['format'](_0xad8e('0x32'),_0x5270bd[_0xad8e('0x7')],members[_0xc9a129][_0xad8e('0x2f')],members[_0xc9a129][_0xad8e('0x9')],members[_0xc9a129][_0xad8e('0x31')]));if(members[_0xc9a129][_0xad8e('0x25')]){writeDB(members[_0xc9a129]);}}}}catch(_0x3acda1){utils[_0xad8e('0x13')](util['format'](_0xad8e('0x2d'),_0x5270bd[_0xad8e('0x7')]),_0x3acda1);}};
\ No newline at end of file
+var _0x2cde=['type','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','assign','lodash','util','./utils','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','channel','data2','interface','getUserByInterface','then','membername','name','internal','request','CreateMemberReport','catch','[%s][members][writeDB]','some','debug','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','BUSY','voice','TALKING','agent','NOT_INUSE','isNil','exitAt','now','duration','diffTime','enterAt','[%s][members][devicestatechange]','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','error','cdr','[%s][members][cdr]','split','data1'];(function(_0x1c0e94,_0x523974){var _0x3abcaa=function(_0x4bce92){while(--_0x4bce92){_0x1c0e94['push'](_0x1c0e94['shift']());}};_0x3abcaa(++_0x523974);}(_0x2cde,0x1ed));var _0xe2cd=function(_0x5e8867,_0xcdfd8b){_0x5e8867=_0x5e8867-0x0;var _0x27e0ca=_0x2cde[_0x5e8867];return _0x27e0ca;};'use strict';var _=require(_0xe2cd('0x0'));var util=require(_0xe2cd('0x1'));var utils=require(_0xe2cd('0x2'));var members={};var exclude=[_0xe2cd('0x3'),_0xe2cd('0x4')];function writeDB(_0x238874){utils[_0xe2cd('0x5')](util[_0xe2cd('0x6')](_0xe2cd('0x7'),_0x238874[_0xe2cd('0x8')],_0x238874['interface'],_0x238874[_0xe2cd('0x9')],_0x238874[_0xe2cd('0xa')],_0x238874['membername'],_0x238874['type']));if(_0x238874[_0xe2cd('0xb')]){utils[_0xe2cd('0xc')](_0x238874['interface'])[_0xe2cd('0xd')](function(_0x1aa7a6){if(_0x1aa7a6){_0x238874[_0xe2cd('0xe')]=_0x1aa7a6[_0xe2cd('0xf')];_0x238874[_0xe2cd('0x10')]=_0x1aa7a6[_0xe2cd('0x10')];utils[_0xe2cd('0x11')](_0xe2cd('0x12'),_0x238874);}else{utils['getUserByName'](_0x238874['interface']['split']('/')[0x1])[_0xe2cd('0xd')](function(_0x202bce){if(_0x202bce){_0x238874[_0xe2cd('0xe')]=_0x202bce[_0xe2cd('0xf')];_0x238874[_0xe2cd('0x10')]=_0x202bce[_0xe2cd('0x10')];utils[_0xe2cd('0x11')](_0xe2cd('0x12'),_0x238874);}});}})[_0xe2cd('0x13')](function(_0x145ee9){utils['error'](util[_0xe2cd('0x6')](_0xe2cd('0x14'),_0x238874[_0xe2cd('0x8')]),_0x145ee9);});}delete members[_0x238874['interface']];}function startsWith(_0x3d1049,_0x1f0021){return _[_0xe2cd('0x15')](_0x3d1049,function(_0x34d606){return _['startsWith'](_0x1f0021,_0x34d606);});}exports['devicestatechange']=function(_0x110264){try{utils[_0xe2cd('0x16')](util[_0xe2cd('0x6')]('[%s][members][devicestatechange]',members[_0x110264[_0xe2cd('0x17')]]?members[_0x110264[_0xe2cd('0x17')]][_0xe2cd('0x8')]:_0x110264[_0xe2cd('0x17')]),_0x110264);utils[_0xe2cd('0x5')](util['format'](_0xe2cd('0x18'),members[_0x110264['device']]?members[_0x110264[_0xe2cd('0x17')]][_0xe2cd('0x8')]:_0x110264['device'],_0x110264['state'],_0x110264[_0xe2cd('0x17')]));switch(_0x110264[_0xe2cd('0x19')]){case'INUSE':case _0xe2cd('0x1a'):if(!startsWith(exclude,_0x110264['device'])){members[_0x110264['device']]={'channel':_0xe2cd('0x1b'),'interface':_0x110264['device'],'type':_0xe2cd('0x1c'),'enterAt':utils['now'](),'role':_0xe2cd('0x1d')};}break;case _0xe2cd('0x1e'):if(!_[_0xe2cd('0x1f')](members[_0x110264[_0xe2cd('0x17')]])){members[_0x110264['device']][_0xe2cd('0x20')]=utils[_0xe2cd('0x21')]();members[_0x110264['device']][_0xe2cd('0x22')]=utils[_0xe2cd('0x23')](members[_0x110264[_0xe2cd('0x17')]][_0xe2cd('0x20')],members[_0x110264[_0xe2cd('0x17')]][_0xe2cd('0x24')]);if(members[_0x110264[_0xe2cd('0x17')]][_0xe2cd('0x8')]){writeDB(members[_0x110264[_0xe2cd('0x17')]]);}}break;default:break;}}catch(_0x310c7a){utils['error'](util[_0xe2cd('0x6')](_0xe2cd('0x25'),members[_0x110264[_0xe2cd('0x17')]]?members[_0x110264[_0xe2cd('0x17')]][_0xe2cd('0x8')]:_0x110264['device']),_0x310c7a);}};exports[_0xe2cd('0x26')]=function(_0x3d0be1){try{if(!_[_0xe2cd('0x1f')](members[_0x3d0be1['interface']])){utils[_0xe2cd('0x16')](util['format'](_0xe2cd('0x27'),_0x3d0be1[_0xe2cd('0x8')]),_0x3d0be1);utils[_0xe2cd('0x5')](util[_0xe2cd('0x6')](_0xe2cd('0x28'),_0x3d0be1[_0xe2cd('0x8')],_0x3d0be1['interface'],_0x3d0be1[_0xe2cd('0x29')]));members[_0x3d0be1[_0xe2cd('0xb')]]=_['assign'](members[_0x3d0be1[_0xe2cd('0xb')]],{'data4':_0x3d0be1[_0xe2cd('0x29')],'uniqueid':_0x3d0be1[_0xe2cd('0x8')]});}}catch(_0x323179){utils[_0xe2cd('0x2a')](util[_0xe2cd('0x6')](_0xe2cd('0x27'),_0x3d0be1[_0xe2cd('0x8')]),_0x323179);}};exports[_0xe2cd('0x2b')]=function(_0x2a0f55){try{utils[_0xe2cd('0x16')](util[_0xe2cd('0x6')](_0xe2cd('0x2c'),_0x2a0f55[_0xe2cd('0x8')]),_0x2a0f55);if(_0x2a0f55['channel']){var _0x33cad0=_0x2a0f55[_0xe2cd('0x9')][_0xe2cd('0x2d')]('-')[0x0];if(!_[_0xe2cd('0x1f')](members[_0x33cad0])){members[_0x33cad0]=_['assign'](members[_0x33cad0],{'data1':members[_0x33cad0][_0xe2cd('0x2e')]||_0x2a0f55[_0xe2cd('0x2f')],'data2':members[_0x33cad0]['data2']||_0x2a0f55[_0xe2cd('0x30')],'data3':members[_0x33cad0][_0xe2cd('0x31')]||_0x2a0f55[_0xe2cd('0x32')],'uniqueid':members[_0x33cad0]['uniqueid']||_0x2a0f55['uniqueid']});utils['info'](util[_0xe2cd('0x6')](_0xe2cd('0x33'),_0x2a0f55['uniqueid'],members[_0x33cad0]['data1'],members[_0x33cad0][_0xe2cd('0xa')],members[_0x33cad0][_0xe2cd('0x31')]));if(members[_0x33cad0][_0xe2cd('0x20')]){writeDB(members[_0x33cad0]);}}}if(_0x2a0f55[_0xe2cd('0x34')]){var _0x156404=_0x2a0f55['destinationchannel'][_0xe2cd('0x2d')]('-')[0x0];if(!_[_0xe2cd('0x1f')](members[_0x156404])){members[_0x156404]=_[_0xe2cd('0x35')](members[_0x156404],{'data1':members[_0x156404][_0xe2cd('0x2e')]||_0x2a0f55[_0xe2cd('0x2f')],'data2':members[_0x156404][_0xe2cd('0xa')]||_0x2a0f55[_0xe2cd('0x30')],'data3':members[_0x156404][_0xe2cd('0x31')]||_0x2a0f55['destination'],'uniqueid':members[_0x156404][_0xe2cd('0x8')]||_0x2a0f55[_0xe2cd('0x8')]});utils['info'](util['format'](_0xe2cd('0x33'),_0x2a0f55[_0xe2cd('0x8')],members[_0x156404]['data1'],members[_0x156404][_0xe2cd('0xa')],members[_0x156404]['data3']));if(members[_0x156404]['exitAt']){writeDB(members[_0x156404]);}}}}catch(_0x34a416){utils[_0xe2cd('0x2a')](util['format'](_0xe2cd('0x2c'),_0x2a0f55['uniqueid']),_0x34a416);}};
\ No newline at end of file
index fb13c42..206e36f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21eb=['queuecallerjoinAt','count','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','assigned','destaccountcode','lastAssignedTo','agentcomplete','queuecallercompleteAt','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','transfereeuniqueid','[%s][queues][blindtransfer]','BLIND','transferexten','transferuniqueid','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','transfertype','origtransfererexten','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','secondtransfererexten','transfertargetlinkedid','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','musiconholdstop','[%s][queues][musiconholdstop]','diffTime','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','./utils','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','queue','calleridnum','accountcode','then','type','request','CreateVoiceQueueReport','transfereduniqueid','uniqueid','info','position','assign','now','error','hangup','isNil','debug','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallercomplete','queuecallerexitreason','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','name','queuecallerenterreason','varset','[%s][queues][varset]','variable','queuestatus','value','CONTINUE','queuecallerabandonAt','queuecallerexitAt','toUpperCase','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerexit','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','holdtime'];(function(_0x12b8da,_0x2ad352){var _0x5c6f7d=function(_0x30498f){while(--_0x30498f){_0x12b8da['push'](_0x12b8da['shift']());}};_0x5c6f7d(++_0x2ad352);}(_0x21eb,0x1c2));var _0xb21e=function(_0x5f277b,_0x1ce5d6){_0x5f277b=_0x5f277b-0x0;var _0x47be32=_0x21eb[_0x5f277b];return _0x47be32;};'use strict';var _=require(_0xb21e('0x0'));var util=require(_0xb21e('0x1'));var utils=require(_0xb21e('0x2'));var queues={};function writeDB(_0x2aaa6f){utils['info'](util[_0xb21e('0x3')](_0xb21e('0x4'),_0x2aaa6f['uniqueid'],_0x2aaa6f['channel'],_0x2aaa6f[_0xb21e('0x5')],_0x2aaa6f['lastAssignedTo'],_0x2aaa6f[_0xb21e('0x6')],_0x2aaa6f[_0xb21e('0x7')],_0x2aaa6f['queuecallerexitreason']));if(_0x2aaa6f[_0xb21e('0x5')]){utils['getVoiceQueueByName'](_0x2aaa6f[_0xb21e('0x5')])[_0xb21e('0x8')](function(_0x2c9459){if(_0x2c9459){_0x2aaa6f['type']=_0x2c9459[_0xb21e('0x9')];}utils[_0xb21e('0xa')]('CreateVoiceQueueReport',_0x2aaa6f);});}else{utils[_0xb21e('0xa')](_0xb21e('0xb'),_0x2aaa6f);}if(_0x2aaa6f[_0xb21e('0xc')]){delete queues[_0x2aaa6f['transfereduniqueid']];}else{delete queues[_0x2aaa6f[_0xb21e('0xd')]];}}exports['queuecallerjoin']=function(_0xdc4df4){try{utils['debug'](util[_0xb21e('0x3')]('[%s][queues][queuecallerjoin]',_0xdc4df4[_0xb21e('0xd')]),_0xdc4df4);utils[_0xb21e('0xe')](util[_0xb21e('0x3')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0xdc4df4[_0xb21e('0xd')],_0xdc4df4[_0xb21e('0x5')],_0xdc4df4[_0xb21e('0xf')]));queues[_0xdc4df4[_0xb21e('0xd')]]=_[_0xb21e('0x10')](_0xdc4df4,{'originalposition':_0xdc4df4[_0xb21e('0xf')],'queuecallerjoinAt':utils[_0xb21e('0x11')](),'mohtime':0x0});}catch(_0x7232e0){utils[_0xb21e('0x12')](util[_0xb21e('0x3')]('[%s][queues][queuecallerjoin]',_0xdc4df4[_0xb21e('0xd')]),_0x7232e0);}};exports[_0xb21e('0x13')]=function(_0x4cede5){try{if(!_[_0xb21e('0x14')](queues[_0x4cede5[_0xb21e('0xd')]])){utils[_0xb21e('0x15')](util['format'](_0xb21e('0x16'),_0x4cede5[_0xb21e('0xd')]),_0x4cede5);if(queues[_0x4cede5[_0xb21e('0xd')]][_0xb21e('0x17')]){if(!queues[_0x4cede5[_0xb21e('0xd')]][_0xb21e('0x18')]&&!queues[_0x4cede5[_0xb21e('0xd')]]['queuecallerexit']){queues[_0x4cede5[_0xb21e('0xd')]][_0xb21e('0x19')]=!![];queues[_0x4cede5[_0xb21e('0xd')]]['queuecallercompleteAt']=utils['now']();queues[_0x4cede5[_0xb21e('0xd')]][_0xb21e('0x1a')]=_0xb21e('0x1b');}utils['info'](util['format'](_0xb21e('0x1c'),_0x4cede5['uniqueid'],queues[_0x4cede5[_0xb21e('0xd')]]['name'],queues[_0x4cede5[_0xb21e('0xd')]][_0xb21e('0x1a')]));writeDB(queues[_0x4cede5[_0xb21e('0xd')]]);}else if(queues[_0x4cede5[_0xb21e('0xd')]][_0xb21e('0xc')]){utils[_0xb21e('0xe')](util['format'](_0xb21e('0x1d'),_0x4cede5[_0xb21e('0xd')],queues[_0x4cede5[_0xb21e('0xd')]][_0xb21e('0x1e')],queues[_0x4cede5[_0xb21e('0xd')]][_0xb21e('0xc')]));queues[queues[_0x4cede5[_0xb21e('0xd')]][_0xb21e('0xc')]]=queues[_0x4cede5['uniqueid']];queues[queues[_0x4cede5[_0xb21e('0xd')]]['transfereduniqueid']][_0xb21e('0x1f')]=0x2;delete queues[_0x4cede5[_0xb21e('0xd')]];}}}catch(_0x49ca4b){utils['error'](util[_0xb21e('0x3')]('[%s][queues][hangup]',_0x4cede5[_0xb21e('0xd')]),_0x49ca4b);}};exports[_0xb21e('0x20')]=function(_0x214f1b){try{utils['debug'](util[_0xb21e('0x3')](_0xb21e('0x21'),_0x214f1b['uniqueid']),_0x214f1b);if(!_[_0xb21e('0x14')](_0x214f1b[_0xb21e('0x22')][_0xb21e('0x23')])&&_0x214f1b[_0xb21e('0x24')]['toUpperCase']()!==_0xb21e('0x25')){if(!_[_0xb21e('0x14')](queues[_0x214f1b[_0xb21e('0xd')]])){queues[_0x214f1b[_0xb21e('0xd')]][_0xb21e('0x18')]=![];queues[_0x214f1b[_0xb21e('0xd')]][_0xb21e('0x26')]=null;queues[_0x214f1b[_0xb21e('0xd')]]['queuecallerexit']=!![];queues[_0x214f1b[_0xb21e('0xd')]][_0xb21e('0x27')]=utils[_0xb21e('0x11')]();queues[_0x214f1b[_0xb21e('0xd')]][_0xb21e('0x1a')]=_0x214f1b['value'][_0xb21e('0x28')]();utils[_0xb21e('0xe')](util['format'](_0xb21e('0x29'),_0x214f1b[_0xb21e('0xd')],queues[_0x214f1b[_0xb21e('0xd')]]['name'],_0x214f1b[_0xb21e('0x24')],queues[_0x214f1b[_0xb21e('0xd')]][_0xb21e('0x1a')]));writeDB(queues[_0x214f1b[_0xb21e('0xd')]]);}}else if(!_[_0xb21e('0x14')](_0x214f1b['variable'][_0xb21e('0x2a')])){if(!_['isNil'](queues[_0x214f1b[_0xb21e('0xd')]])&&!queues[_0x214f1b[_0xb21e('0xd')]][_0xb21e('0x18')]){queues[_0x214f1b['uniqueid']][_0xb21e('0x18')]=![];queues[_0x214f1b[_0xb21e('0xd')]][_0xb21e('0x26')]=null;queues[_0x214f1b[_0xb21e('0xd')]][_0xb21e('0x2b')]=!![];queues[_0x214f1b[_0xb21e('0xd')]]['queuecallerexitAt']=utils['now']();queues[_0x214f1b[_0xb21e('0xd')]][_0xb21e('0x1a')]=_0xb21e('0x2c');utils[_0xb21e('0xe')](util['format'](_0xb21e('0x2d'),_0x214f1b['uniqueid'],queues[_0x214f1b[_0xb21e('0xd')]][_0xb21e('0x1e')],_0x214f1b[_0xb21e('0x24')],queues[_0x214f1b['uniqueid']][_0xb21e('0x1a')]));}}}catch(_0xfe58a6){utils[_0xb21e('0x12')](util['format']('[%s][queues][varset]',_0x214f1b[_0xb21e('0xd')]),_0xfe58a6);}};exports[_0xb21e('0x18')]=function(_0x2f2973){try{if(!_['isNil'](queues[_0x2f2973['uniqueid']])){utils[_0xb21e('0x15')](util[_0xb21e('0x3')]('[%s][queues][queuecallerabandon]',_0x2f2973[_0xb21e('0xd')]),_0x2f2973);queues[_0x2f2973['uniqueid']][_0xb21e('0x2b')]=![];queues[_0x2f2973[_0xb21e('0xd')]][_0xb21e('0x27')]=null;queues[_0x2f2973[_0xb21e('0xd')]][_0xb21e('0x18')]=!![];queues[_0x2f2973[_0xb21e('0xd')]][_0xb21e('0x26')]=utils[_0xb21e('0x11')]();queues[_0x2f2973[_0xb21e('0xd')]]['queuecallerexitreason']=_0xb21e('0x2e');utils[_0xb21e('0xe')](util[_0xb21e('0x3')](_0xb21e('0x2f'),_0x2f2973['uniqueid'],queues[_0x2f2973[_0xb21e('0xd')]][_0xb21e('0x1e')],queues[_0x2f2973[_0xb21e('0xd')]][_0xb21e('0x1a')]));}}catch(_0x1b8fe5){utils['error'](util['format'](_0xb21e('0x30'),_0x2f2973[_0xb21e('0xd')]),_0x1b8fe5);}};exports[_0xb21e('0x31')]=function(_0x5a43f1){try{if(!_['isNil'](queues[_0x5a43f1['uniqueid']])){utils[_0xb21e('0x15')](util[_0xb21e('0x3')](_0xb21e('0x32'),_0x5a43f1['uniqueid']),_0x5a43f1);utils['info'](util[_0xb21e('0x3')](_0xb21e('0x33'),_0x5a43f1[_0xb21e('0xd')],queues[_0x5a43f1[_0xb21e('0xd')]]['name'],_0x5a43f1[_0xb21e('0x34')],_0x5a43f1[_0xb21e('0x35')]));queues[_0x5a43f1[_0xb21e('0xd')]]['queuecallerleave']=!![];queues[_0x5a43f1[_0xb21e('0xd')]][_0xb21e('0x17')]=utils[_0xb21e('0x11')]();queues[_0x5a43f1[_0xb21e('0xd')]][_0xb21e('0x36')]=utils['diffTime'](queues[_0x5a43f1[_0xb21e('0xd')]][_0xb21e('0x17')],queues[_0x5a43f1[_0xb21e('0xd')]][_0xb21e('0x37')]);queues[_0x5a43f1['uniqueid']]['position']=_0x5a43f1[_0xb21e('0xf')];queues[_0x5a43f1['uniqueid']][_0xb21e('0x38')]=_0x5a43f1[_0xb21e('0x38')];queues[_0x5a43f1['uniqueid']]['connectedlinenum']=_0x5a43f1['connectedlinenum'];queues[_0x5a43f1['uniqueid']][_0xb21e('0x35')]=_0x5a43f1[_0xb21e('0x35')];}}catch(_0x3bbf5c){utils[_0xb21e('0x12')](util['format'](_0xb21e('0x32'),_0x5a43f1['uniqueid']),_0x3bbf5c);}};exports['agentconnect']=function(_0x30089a){try{if(!_[_0xb21e('0x14')](queues[_0x30089a[_0xb21e('0xd')]])){utils[_0xb21e('0x15')](util[_0xb21e('0x3')](_0xb21e('0x39'),_0x30089a[_0xb21e('0xd')]),_0x30089a);utils['info'](util[_0xb21e('0x3')](_0xb21e('0x3a'),_0x30089a[_0xb21e('0xd')],queues[_0x30089a[_0xb21e('0xd')]][_0xb21e('0x1e')],_0x30089a[_0xb21e('0x3b')],_0x30089a['destaccountcode']));queues[_0x30089a[_0xb21e('0xd')]][_0xb21e('0x18')]=![];queues[_0x30089a[_0xb21e('0xd')]][_0xb21e('0x18')]=![];queues[_0x30089a[_0xb21e('0xd')]][_0xb21e('0x26')]=null;queues[_0x30089a[_0xb21e('0xd')]][_0xb21e('0x2b')]=![];queues[_0x30089a['uniqueid']][_0xb21e('0x1a')]=null;queues[_0x30089a[_0xb21e('0xd')]][_0xb21e('0x27')]=null;queues[_0x30089a[_0xb21e('0xd')]][_0xb21e('0x3c')]=!![];queues[_0x30089a[_0xb21e('0xd')]]['accountcode']=_0x30089a[_0xb21e('0x3d')];queues[_0x30089a[_0xb21e('0xd')]][_0xb21e('0x3e')]=_0x30089a[_0xb21e('0x3b')];}}catch(_0x21ca9d){utils[_0xb21e('0x12')](util[_0xb21e('0x3')](_0xb21e('0x39'),_0x30089a[_0xb21e('0xd')]),_0x21ca9d);}};exports[_0xb21e('0x3f')]=function(_0x3a7cc0){try{if(!_[_0xb21e('0x14')](queues[_0x3a7cc0[_0xb21e('0xd')]])){if(queues[_0x3a7cc0[_0xb21e('0xd')]][_0xb21e('0x17')]){utils[_0xb21e('0x15')](util[_0xb21e('0x3')]('[%s][queues][agentcomplete]',_0x3a7cc0[_0xb21e('0xd')]),_0x3a7cc0);queues[_0x3a7cc0[_0xb21e('0xd')]][_0xb21e('0x18')]=![];queues[_0x3a7cc0['uniqueid']]['queuecallerabandon']=![];queues[_0x3a7cc0['uniqueid']][_0xb21e('0x26')]=null;queues[_0x3a7cc0[_0xb21e('0xd')]]['queuecallerexit']=![];queues[_0x3a7cc0['uniqueid']]['queuecallerexitAt']=null;queues[_0x3a7cc0['uniqueid']][_0xb21e('0x3c')]=!![];queues[_0x3a7cc0['uniqueid']][_0xb21e('0x3e')]=_0x3a7cc0['membername'];queues[_0x3a7cc0[_0xb21e('0xd')]][_0xb21e('0x19')]=!![];queues[_0x3a7cc0[_0xb21e('0xd')]][_0xb21e('0x40')]=utils[_0xb21e('0x11')]();if(_0x3a7cc0[_0xb21e('0x41')]==_0xb21e('0x42')){if(!queues[_0x3a7cc0[_0xb21e('0xd')]]['transfer']){queues[_0x3a7cc0['uniqueid']][_0xb21e('0x1a')]=_0xb21e('0x43');}}else{queues[_0x3a7cc0[_0xb21e('0xd')]][_0xb21e('0x1a')]=_0xb21e('0x44')+_0x3a7cc0[_0xb21e('0x41')][_0xb21e('0x28')]();}utils['info'](util[_0xb21e('0x3')](_0xb21e('0x45'),_0x3a7cc0['uniqueid'],queues[_0x3a7cc0[_0xb21e('0xd')]][_0xb21e('0x1e')],_0x3a7cc0[_0xb21e('0x3b')],queues[_0x3a7cc0[_0xb21e('0xd')]]['queuecallerexitreason']));writeDB(queues[_0x3a7cc0[_0xb21e('0xd')]]);}}}catch(_0x10cba6){utils[_0xb21e('0x12')](util[_0xb21e('0x3')](_0xb21e('0x46'),_0x3a7cc0[_0xb21e('0xd')]),_0x10cba6);}};exports['blindtransfer']=function(_0x15f17b){try{if(!_[_0xb21e('0x14')](queues[_0x15f17b[_0xb21e('0x47')]])){utils['debug'](util['format'](_0xb21e('0x48'),_0x15f17b[_0xb21e('0xd')]),_0x15f17b);queues[_0x15f17b[_0xb21e('0x47')]][_0xb21e('0x42')]=!![];queues[_0x15f17b[_0xb21e('0x47')]]['transfertype']=_0xb21e('0x49');queues[_0x15f17b[_0xb21e('0x47')]][_0xb21e('0x4a')]=_0x15f17b['extension'];queues[_0x15f17b['transfereeuniqueid']][_0xb21e('0x4b')]=_0x15f17b[_0xb21e('0x47')];queues[_0x15f17b['transfereeuniqueid']][_0xb21e('0x1a')]='BLINDTRANSFER';utils['info'](util[_0xb21e('0x3')](_0xb21e('0x4c'),_0x15f17b[_0xb21e('0xd')],queues[_0x15f17b[_0xb21e('0x47')]][_0xb21e('0x1e')],_0x15f17b['transfereeuniqueid'],_0x15f17b['extension']));}}catch(_0x2a48f5){utils['error'](util['format'](_0xb21e('0x48'),_0x15f17b[_0xb21e('0xd')]),_0x2a48f5);}};exports['attendedtransfer']=function(_0x2e3dad){try{utils['debug'](util['format'](_0xb21e('0x4d'),_0x2e3dad[_0xb21e('0x4e')]),_0x2e3dad);if(_0x2e3dad[_0xb21e('0x4e')]==_0x2e3dad[_0xb21e('0x4f')]){if(!_[_0xb21e('0x14')](queues[_0x2e3dad[_0xb21e('0x50')]])){utils[_0xb21e('0xe')](util[_0xb21e('0x3')](_0xb21e('0x51'),_0x2e3dad[_0xb21e('0x4e')],queues[_0x2e3dad['secondtransfererlinkedid']][_0xb21e('0x1e')],_0x2e3dad['origtransfererexten']));queues[_0x2e3dad[_0xb21e('0x50')]][_0xb21e('0x42')]=!![];queues[_0x2e3dad[_0xb21e('0x50')]][_0xb21e('0x52')]='ATTENDED';queues[_0x2e3dad[_0xb21e('0x50')]]['transferexten']=_0x2e3dad[_0xb21e('0x53')];queues[_0x2e3dad[_0xb21e('0x50')]][_0xb21e('0x4b')]=_0x2e3dad[_0xb21e('0x4e')];queues[_0x2e3dad[_0xb21e('0x50')]]['queuecallerexitreason']=_0xb21e('0x54');}if(!_[_0xb21e('0x14')](queues[_0x2e3dad['origtransfererlinkedid']])){if(_0x2e3dad[_0xb21e('0x55')]&&queues[_0x2e3dad[_0xb21e('0x55')]]){queues[_0x2e3dad['transfereelinkedid']][_0xb21e('0x1f')]=0x1;queues[_0x2e3dad[_0xb21e('0x47')]]=_[_0xb21e('0x56')](queues[_0x2e3dad[_0xb21e('0x55')]]);queues[_0x2e3dad['transfereeuniqueid']][_0xb21e('0xc')]=_0x2e3dad[_0xb21e('0x57')];queues[_0x2e3dad[_0xb21e('0x47')]]['queuecallerenterreason']=0x2;queues[_0x2e3dad[_0xb21e('0x47')]][_0xb21e('0x6')]=queues[_0x2e3dad[_0xb21e('0x50')]][_0xb21e('0x6')];queues[_0x2e3dad[_0xb21e('0x47')]][_0xb21e('0x58')]=queues[_0x2e3dad[_0xb21e('0x50')]][_0xb21e('0x58')];queues[_0x2e3dad['transfereeuniqueid']]['queuecallerjoinAt']=utils[_0xb21e('0x11')]();queues[_0x2e3dad[_0xb21e('0x47')]]['queuecallerleaveAt']=utils[_0xb21e('0x11')]();queues[_0x2e3dad[_0xb21e('0x47')]][_0xb21e('0x36')]=0x0;queues[_0x2e3dad['transfereeuniqueid']][_0xb21e('0x59')]=0x0;utils[_0xb21e('0xe')](util[_0xb21e('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x2e3dad[_0xb21e('0x4e')],queues[_0x2e3dad[_0xb21e('0x47')]]['name'],queues[_0x2e3dad[_0xb21e('0x47')]][_0xb21e('0x6')],queues[_0x2e3dad[_0xb21e('0x47')]][_0xb21e('0x58')]));}else{utils['info'](util[_0xb21e('0x3')](_0xb21e('0x5a'),_0x2e3dad['origtransfereruniqueid'],queues[_0x2e3dad[_0xb21e('0x4f')]][_0xb21e('0x1e')],_0x2e3dad[_0xb21e('0x50')]));queues[_0x2e3dad[_0xb21e('0x4f')]]['transfereduniqueid']=_0x2e3dad[_0xb21e('0x50')];}}}else if(_0x2e3dad[_0xb21e('0x5b')]==_0x2e3dad[_0xb21e('0x50')]){if(!_[_0xb21e('0x14')](queues[_0x2e3dad[_0xb21e('0x4f')]])){utils[_0xb21e('0xe')](util[_0xb21e('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x2e3dad[_0xb21e('0x4e')],queues[_0x2e3dad[_0xb21e('0x4f')]]['name'],_0x2e3dad[_0xb21e('0x5b')],_0x2e3dad[_0xb21e('0x5c')]));queues[_0x2e3dad[_0xb21e('0x4f')]][_0xb21e('0x42')]=!![];queues[_0x2e3dad[_0xb21e('0x4f')]][_0xb21e('0x52')]='ATTENDED';queues[_0x2e3dad[_0xb21e('0x4f')]][_0xb21e('0x4a')]=_0x2e3dad[_0xb21e('0x5c')];queues[_0x2e3dad[_0xb21e('0x4f')]]['transferuniqueid']=_0x2e3dad['secondtransfereruniqueid'];queues[_0x2e3dad[_0xb21e('0x4f')]][_0xb21e('0x1a')]=_0xb21e('0x54');}if(!_['isNil'](queues[_0x2e3dad[_0xb21e('0x50')]])){if(_0x2e3dad['transfertargetlinkedid']&&queues[_0x2e3dad[_0xb21e('0x5d')]]){queues[_0x2e3dad[_0xb21e('0x5d')]][_0xb21e('0x1f')]=0x1;queues[_0x2e3dad['transfertargetuniqueid']]=_[_0xb21e('0x56')](queues[_0x2e3dad[_0xb21e('0x5d')]]);queues[_0x2e3dad[_0xb21e('0x57')]][_0xb21e('0xc')]=_0x2e3dad['transfertargetuniqueid'];queues[_0x2e3dad[_0xb21e('0x57')]]['queuecallerenterreason']=0x2;queues[_0x2e3dad[_0xb21e('0x57')]][_0xb21e('0x6')]=queues[_0x2e3dad[_0xb21e('0x4f')]][_0xb21e('0x6')];queues[_0x2e3dad[_0xb21e('0x57')]][_0xb21e('0x58')]=queues[_0x2e3dad[_0xb21e('0x4f')]][_0xb21e('0x58')];queues[_0x2e3dad[_0xb21e('0x57')]][_0xb21e('0x37')]=utils[_0xb21e('0x11')]();queues[_0x2e3dad[_0xb21e('0x57')]][_0xb21e('0x17')]=utils[_0xb21e('0x11')]();queues[_0x2e3dad[_0xb21e('0x57')]][_0xb21e('0x36')]=0x0;queues[_0x2e3dad[_0xb21e('0x57')]][_0xb21e('0x59')]=0x0;utils[_0xb21e('0xe')](util[_0xb21e('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s',_0x2e3dad[_0xb21e('0x4e')],queues[_0x2e3dad[_0xb21e('0x57')]]['name'],queues[_0x2e3dad[_0xb21e('0x57')]][_0xb21e('0xc')],queues[_0x2e3dad['transfertargetuniqueid']][_0xb21e('0x6')],queues[_0x2e3dad[_0xb21e('0x57')]]['calleridname']));}else{utils[_0xb21e('0xe')](util[_0xb21e('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x2e3dad[_0xb21e('0x4e')],queues[_0x2e3dad[_0xb21e('0x50')]][_0xb21e('0x1e')],_0x2e3dad[_0xb21e('0x4f')]));queues[_0x2e3dad['secondtransfererlinkedid']][_0xb21e('0xc')]=_0x2e3dad[_0xb21e('0x4f')];}}}}catch(_0x1abbaa){utils[_0xb21e('0x12')](util[_0xb21e('0x3')](_0xb21e('0x4d'),_0x2e3dad[_0xb21e('0x4e')]),_0x1abbaa);}};exports[_0xb21e('0x5e')]=function(_0x3e98bc){try{if(!_[_0xb21e('0x14')](queues[_0x3e98bc[_0xb21e('0xd')]])){utils[_0xb21e('0x15')](util[_0xb21e('0x3')](_0xb21e('0x5f'),_0x3e98bc['uniqueid']),_0x3e98bc);queues[_0x3e98bc[_0xb21e('0xd')]][_0xb21e('0x60')]=utils[_0xb21e('0x11')]();utils[_0xb21e('0xe')](util[_0xb21e('0x3')]('[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s',_0x3e98bc[_0xb21e('0xd')],queues[_0x3e98bc[_0xb21e('0xd')]][_0xb21e('0x1e')],queues[_0x3e98bc[_0xb21e('0xd')]]['musiconholdstartAt']));}}catch(_0x5cccbb){utils[_0xb21e('0x12')](util[_0xb21e('0x3')](_0xb21e('0x5f'),_0x3e98bc[_0xb21e('0xd')]),_0x5cccbb);}};exports[_0xb21e('0x61')]=function(_0x1359c3){try{if(!_['isNil'](queues[_0x1359c3[_0xb21e('0xd')]])){if(!_[_0xb21e('0x14')](queues[_0x1359c3[_0xb21e('0xd')]][_0xb21e('0x60')])){utils[_0xb21e('0x15')](util[_0xb21e('0x3')](_0xb21e('0x62'),_0x1359c3[_0xb21e('0xd')]),_0x1359c3);queues[_0x1359c3[_0xb21e('0xd')]]['mohtime']+=utils[_0xb21e('0x63')](utils[_0xb21e('0x11')](),queues[_0x1359c3[_0xb21e('0xd')]][_0xb21e('0x60')]);utils[_0xb21e('0xe')](util[_0xb21e('0x3')](_0xb21e('0x64'),_0x1359c3[_0xb21e('0xd')],queues[_0x1359c3['uniqueid']][_0xb21e('0x1e')],queues[_0x1359c3[_0xb21e('0xd')]][_0xb21e('0x59')]));delete queues[_0x1359c3[_0xb21e('0xd')]]['musiconholdstartAt'];}}}catch(_0x5bda56){utils[_0xb21e('0x12')](util[_0xb21e('0x3')](_0xb21e('0x62'),_0x1359c3[_0xb21e('0xd')]),_0x5bda56);}};
\ No newline at end of file
+var _0xedb9=['agentconnect','[%s][queues][agentconnect]','membername','destaccountcode','assigned','agentcomplete','[%s][queues][agentcomplete]','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','transfereeuniqueid','[%s][queues][blindtransfer]','extension','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererlinkedid','origtransfererexten','transfertype','ATTENDED','transferexten','transferuniqueid','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstart]','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','queue','lastAssignedTo','calleridnum','accountcode','type','request','CreateVoiceQueueReport','transfereduniqueid','uniqueid','queuecallerjoin','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','assign','now','error','isNil','debug','[%s][queues][hangup]','queuecallerleaveAt','queuecallerexit','queuecallercomplete','queuecallercompleteAt','queuecallerexitreason','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','varset','[%s][queues][varset]','variable','queuestatus','value','toUpperCase','queuecallerabandon','queuecallerabandonAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queuecallerexitAt','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','queuecallerleave','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinename','holdtime','diffTime','queuecallerjoinAt','position','count','connectedlinenum','[%s][queues][queuecallerleave]'];(function(_0x445ef7,_0x40fbf9){var _0x52bb69=function(_0x15a595){while(--_0x15a595){_0x445ef7['push'](_0x445ef7['shift']());}};_0x52bb69(++_0x40fbf9);}(_0xedb9,0x93));var _0x9edb=function(_0x48a02a,_0x2a75b6){_0x48a02a=_0x48a02a-0x0;var _0x366781=_0xedb9[_0x48a02a];return _0x366781;};'use strict';var _=require(_0x9edb('0x0'));var util=require(_0x9edb('0x1'));var utils=require(_0x9edb('0x2'));var queues={};function writeDB(_0x9ae215){utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x5'),_0x9ae215['uniqueid'],_0x9ae215['channel'],_0x9ae215[_0x9edb('0x6')],_0x9ae215[_0x9edb('0x7')],_0x9ae215[_0x9edb('0x8')],_0x9ae215[_0x9edb('0x9')],_0x9ae215['queuecallerexitreason']));if(_0x9ae215[_0x9edb('0x6')]){utils['getVoiceQueueByName'](_0x9ae215[_0x9edb('0x6')])['then'](function(_0x5d16ec){if(_0x5d16ec){_0x9ae215[_0x9edb('0xa')]=_0x5d16ec['type'];}utils[_0x9edb('0xb')](_0x9edb('0xc'),_0x9ae215);});}else{utils[_0x9edb('0xb')](_0x9edb('0xc'),_0x9ae215);}if(_0x9ae215[_0x9edb('0xd')]){delete queues[_0x9ae215['transfereduniqueid']];}else{delete queues[_0x9ae215[_0x9edb('0xe')]];}}exports[_0x9edb('0xf')]=function(_0x204331){try{utils['debug'](util[_0x9edb('0x4')]('[%s][queues][queuecallerjoin]',_0x204331[_0x9edb('0xe')]),_0x204331);utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x10'),_0x204331[_0x9edb('0xe')],_0x204331[_0x9edb('0x6')],_0x204331['position']));queues[_0x204331['uniqueid']]=_[_0x9edb('0x11')](_0x204331,{'originalposition':_0x204331['position'],'queuecallerjoinAt':utils[_0x9edb('0x12')](),'mohtime':0x0});}catch(_0x340026){utils[_0x9edb('0x13')](util['format']('[%s][queues][queuecallerjoin]',_0x204331[_0x9edb('0xe')]),_0x340026);}};exports['hangup']=function(_0x3e71cb){try{if(!_[_0x9edb('0x14')](queues[_0x3e71cb[_0x9edb('0xe')]])){utils[_0x9edb('0x15')](util[_0x9edb('0x4')](_0x9edb('0x16'),_0x3e71cb['uniqueid']),_0x3e71cb);if(queues[_0x3e71cb[_0x9edb('0xe')]][_0x9edb('0x17')]){if(!queues[_0x3e71cb['uniqueid']]['queuecallerabandon']&&!queues[_0x3e71cb['uniqueid']][_0x9edb('0x18')]){queues[_0x3e71cb['uniqueid']][_0x9edb('0x19')]=!![];queues[_0x3e71cb[_0x9edb('0xe')]][_0x9edb('0x1a')]=utils['now']();queues[_0x3e71cb['uniqueid']][_0x9edb('0x1b')]=_0x9edb('0x1c');}utils[_0x9edb('0x3')](util['format'](_0x9edb('0x1d'),_0x3e71cb[_0x9edb('0xe')],queues[_0x3e71cb[_0x9edb('0xe')]][_0x9edb('0x1e')],queues[_0x3e71cb[_0x9edb('0xe')]][_0x9edb('0x1b')]));writeDB(queues[_0x3e71cb[_0x9edb('0xe')]]);}else if(queues[_0x3e71cb[_0x9edb('0xe')]][_0x9edb('0xd')]){utils['info'](util['format'](_0x9edb('0x1f'),_0x3e71cb[_0x9edb('0xe')],queues[_0x3e71cb[_0x9edb('0xe')]]['name'],queues[_0x3e71cb[_0x9edb('0xe')]][_0x9edb('0xd')]));queues[queues[_0x3e71cb['uniqueid']][_0x9edb('0xd')]]=queues[_0x3e71cb['uniqueid']];queues[queues[_0x3e71cb[_0x9edb('0xe')]][_0x9edb('0xd')]][_0x9edb('0x20')]=0x2;delete queues[_0x3e71cb[_0x9edb('0xe')]];}}}catch(_0x4e69f4){utils[_0x9edb('0x13')](util[_0x9edb('0x4')](_0x9edb('0x16'),_0x3e71cb[_0x9edb('0xe')]),_0x4e69f4);}};exports[_0x9edb('0x21')]=function(_0x4e95ef){try{utils['debug'](util[_0x9edb('0x4')](_0x9edb('0x22'),_0x4e95ef[_0x9edb('0xe')]),_0x4e95ef);if(!_[_0x9edb('0x14')](_0x4e95ef[_0x9edb('0x23')][_0x9edb('0x24')])&&_0x4e95ef[_0x9edb('0x25')][_0x9edb('0x26')]()!=='CONTINUE'){if(!_[_0x9edb('0x14')](queues[_0x4e95ef[_0x9edb('0xe')]])){queues[_0x4e95ef['uniqueid']][_0x9edb('0x27')]=![];queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x28')]=null;queues[_0x4e95ef[_0x9edb('0xe')]]['queuecallerexit']=!![];queues[_0x4e95ef['uniqueid']]['queuecallerexitAt']=utils[_0x9edb('0x12')]();queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x1b')]=_0x4e95ef[_0x9edb('0x25')][_0x9edb('0x26')]();utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x29'),_0x4e95ef[_0x9edb('0xe')],queues[_0x4e95ef[_0x9edb('0xe')]]['name'],_0x4e95ef[_0x9edb('0x25')],queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x1b')]));writeDB(queues[_0x4e95ef[_0x9edb('0xe')]]);}}else if(!_[_0x9edb('0x14')](_0x4e95ef[_0x9edb('0x23')]['queueposition'])){if(!_[_0x9edb('0x14')](queues[_0x4e95ef[_0x9edb('0xe')]])&&!queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x27')]){queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x27')]=![];queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x28')]=null;queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x18')]=!![];queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x2a')]=utils['now']();queues[_0x4e95ef['uniqueid']][_0x9edb('0x1b')]=_0x9edb('0x2b');utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x2c'),_0x4e95ef[_0x9edb('0xe')],queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x1e')],_0x4e95ef[_0x9edb('0x25')],queues[_0x4e95ef[_0x9edb('0xe')]]['queuecallerexitreason']));}}}catch(_0x37e1e2){utils[_0x9edb('0x13')](util[_0x9edb('0x4')](_0x9edb('0x22'),_0x4e95ef[_0x9edb('0xe')]),_0x37e1e2);}};exports[_0x9edb('0x27')]=function(_0x531b71){try{if(!_[_0x9edb('0x14')](queues[_0x531b71['uniqueid']])){utils[_0x9edb('0x15')](util[_0x9edb('0x4')](_0x9edb('0x2d'),_0x531b71['uniqueid']),_0x531b71);queues[_0x531b71[_0x9edb('0xe')]][_0x9edb('0x18')]=![];queues[_0x531b71[_0x9edb('0xe')]][_0x9edb('0x2a')]=null;queues[_0x531b71[_0x9edb('0xe')]][_0x9edb('0x27')]=!![];queues[_0x531b71[_0x9edb('0xe')]][_0x9edb('0x28')]=utils[_0x9edb('0x12')]();queues[_0x531b71['uniqueid']][_0x9edb('0x1b')]=_0x9edb('0x2e');utils['info'](util[_0x9edb('0x4')]('[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s',_0x531b71['uniqueid'],queues[_0x531b71['uniqueid']][_0x9edb('0x1e')],queues[_0x531b71[_0x9edb('0xe')]][_0x9edb('0x1b')]));}}catch(_0x15eb93){utils['error'](util['format'](_0x9edb('0x2d'),_0x531b71[_0x9edb('0xe')]),_0x15eb93);}};exports[_0x9edb('0x2f')]=function(_0x4a669d){try{if(!_[_0x9edb('0x14')](queues[_0x4a669d['uniqueid']])){utils['debug'](util[_0x9edb('0x4')]('[%s][queues][queuecallerleave]',_0x4a669d[_0x9edb('0xe')]),_0x4a669d);utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x30'),_0x4a669d[_0x9edb('0xe')],queues[_0x4a669d['uniqueid']][_0x9edb('0x1e')],_0x4a669d['connectedlinenum'],_0x4a669d[_0x9edb('0x31')]));queues[_0x4a669d['uniqueid']]['queuecallerleave']=!![];queues[_0x4a669d[_0x9edb('0xe')]]['queuecallerleaveAt']=utils['now']();queues[_0x4a669d[_0x9edb('0xe')]][_0x9edb('0x32')]=utils[_0x9edb('0x33')](queues[_0x4a669d[_0x9edb('0xe')]]['queuecallerleaveAt'],queues[_0x4a669d['uniqueid']][_0x9edb('0x34')]);queues[_0x4a669d['uniqueid']][_0x9edb('0x35')]=_0x4a669d['position'];queues[_0x4a669d[_0x9edb('0xe')]][_0x9edb('0x36')]=_0x4a669d[_0x9edb('0x36')];queues[_0x4a669d['uniqueid']][_0x9edb('0x37')]=_0x4a669d[_0x9edb('0x37')];queues[_0x4a669d['uniqueid']][_0x9edb('0x31')]=_0x4a669d['connectedlinename'];}}catch(_0x5095e8){utils[_0x9edb('0x13')](util[_0x9edb('0x4')](_0x9edb('0x38'),_0x4a669d[_0x9edb('0xe')]),_0x5095e8);}};exports[_0x9edb('0x39')]=function(_0x27c901){try{if(!_['isNil'](queues[_0x27c901[_0x9edb('0xe')]])){utils[_0x9edb('0x15')](util[_0x9edb('0x4')](_0x9edb('0x3a'),_0x27c901['uniqueid']),_0x27c901);utils[_0x9edb('0x3')](util[_0x9edb('0x4')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x27c901[_0x9edb('0xe')],queues[_0x27c901[_0x9edb('0xe')]][_0x9edb('0x1e')],_0x27c901[_0x9edb('0x3b')],_0x27c901[_0x9edb('0x3c')]));queues[_0x27c901[_0x9edb('0xe')]][_0x9edb('0x27')]=![];queues[_0x27c901['uniqueid']][_0x9edb('0x27')]=![];queues[_0x27c901['uniqueid']]['queuecallerabandonAt']=null;queues[_0x27c901[_0x9edb('0xe')]][_0x9edb('0x18')]=![];queues[_0x27c901[_0x9edb('0xe')]][_0x9edb('0x1b')]=null;queues[_0x27c901[_0x9edb('0xe')]][_0x9edb('0x2a')]=null;queues[_0x27c901[_0x9edb('0xe')]][_0x9edb('0x3d')]=!![];queues[_0x27c901[_0x9edb('0xe')]][_0x9edb('0x9')]=_0x27c901['destaccountcode'];queues[_0x27c901[_0x9edb('0xe')]][_0x9edb('0x7')]=_0x27c901[_0x9edb('0x3b')];}}catch(_0x276fd4){utils[_0x9edb('0x13')](util[_0x9edb('0x4')]('[%s][queues][agentconnect]',_0x27c901[_0x9edb('0xe')]),_0x276fd4);}};exports[_0x9edb('0x3e')]=function(_0x41b74d){try{if(!_[_0x9edb('0x14')](queues[_0x41b74d[_0x9edb('0xe')]])){if(queues[_0x41b74d[_0x9edb('0xe')]][_0x9edb('0x17')]){utils[_0x9edb('0x15')](util[_0x9edb('0x4')](_0x9edb('0x3f'),_0x41b74d['uniqueid']),_0x41b74d);queues[_0x41b74d[_0x9edb('0xe')]][_0x9edb('0x27')]=![];queues[_0x41b74d['uniqueid']][_0x9edb('0x27')]=![];queues[_0x41b74d[_0x9edb('0xe')]]['queuecallerabandonAt']=null;queues[_0x41b74d[_0x9edb('0xe')]][_0x9edb('0x18')]=![];queues[_0x41b74d[_0x9edb('0xe')]][_0x9edb('0x2a')]=null;queues[_0x41b74d[_0x9edb('0xe')]][_0x9edb('0x3d')]=!![];queues[_0x41b74d[_0x9edb('0xe')]]['lastAssignedTo']=_0x41b74d[_0x9edb('0x3b')];queues[_0x41b74d['uniqueid']]['queuecallercomplete']=!![];queues[_0x41b74d['uniqueid']]['queuecallercompleteAt']=utils[_0x9edb('0x12')]();if(_0x41b74d[_0x9edb('0x40')]==_0x9edb('0x41')){if(!queues[_0x41b74d[_0x9edb('0xe')]]['transfer']){queues[_0x41b74d[_0x9edb('0xe')]][_0x9edb('0x1b')]=_0x9edb('0x42');}}else{queues[_0x41b74d[_0x9edb('0xe')]][_0x9edb('0x1b')]=_0x9edb('0x43')+_0x41b74d[_0x9edb('0x40')]['toUpperCase']();}utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x44'),_0x41b74d[_0x9edb('0xe')],queues[_0x41b74d['uniqueid']][_0x9edb('0x1e')],_0x41b74d[_0x9edb('0x3b')],queues[_0x41b74d[_0x9edb('0xe')]][_0x9edb('0x1b')]));writeDB(queues[_0x41b74d[_0x9edb('0xe')]]);}}}catch(_0x1bd4dd){utils[_0x9edb('0x13')](util[_0x9edb('0x4')](_0x9edb('0x3f'),_0x41b74d[_0x9edb('0xe')]),_0x1bd4dd);}};exports['blindtransfer']=function(_0x1c8d35){try{if(!_[_0x9edb('0x14')](queues[_0x1c8d35[_0x9edb('0x45')]])){utils[_0x9edb('0x15')](util[_0x9edb('0x4')](_0x9edb('0x46'),_0x1c8d35[_0x9edb('0xe')]),_0x1c8d35);queues[_0x1c8d35[_0x9edb('0x45')]][_0x9edb('0x41')]=!![];queues[_0x1c8d35[_0x9edb('0x45')]]['transfertype']='BLIND';queues[_0x1c8d35[_0x9edb('0x45')]]['transferexten']=_0x1c8d35[_0x9edb('0x47')];queues[_0x1c8d35[_0x9edb('0x45')]]['transferuniqueid']=_0x1c8d35[_0x9edb('0x45')];queues[_0x1c8d35[_0x9edb('0x45')]][_0x9edb('0x1b')]=_0x9edb('0x48');utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x49'),_0x1c8d35[_0x9edb('0xe')],queues[_0x1c8d35[_0x9edb('0x45')]]['name'],_0x1c8d35['transfereeuniqueid'],_0x1c8d35['extension']));}}catch(_0x17959b){utils[_0x9edb('0x13')](util[_0x9edb('0x4')]('[%s][queues][blindtransfer]',_0x1c8d35[_0x9edb('0xe')]),_0x17959b);}};exports['attendedtransfer']=function(_0x36fd71){try{utils[_0x9edb('0x15')](util[_0x9edb('0x4')](_0x9edb('0x4a'),_0x36fd71[_0x9edb('0x4b')]),_0x36fd71);if(_0x36fd71[_0x9edb('0x4b')]==_0x36fd71[_0x9edb('0x4c')]){if(!_[_0x9edb('0x14')](queues[_0x36fd71['secondtransfererlinkedid']])){utils['info'](util[_0x9edb('0x4')](_0x9edb('0x4d'),_0x36fd71[_0x9edb('0x4b')],queues[_0x36fd71[_0x9edb('0x4e')]]['name'],_0x36fd71[_0x9edb('0x4f')]));queues[_0x36fd71[_0x9edb('0x4e')]][_0x9edb('0x41')]=!![];queues[_0x36fd71[_0x9edb('0x4e')]][_0x9edb('0x50')]=_0x9edb('0x51');queues[_0x36fd71[_0x9edb('0x4e')]][_0x9edb('0x52')]=_0x36fd71[_0x9edb('0x4f')];queues[_0x36fd71['secondtransfererlinkedid']][_0x9edb('0x53')]=_0x36fd71[_0x9edb('0x4b')];queues[_0x36fd71[_0x9edb('0x4e')]][_0x9edb('0x1b')]=_0x9edb('0x54');}if(!_[_0x9edb('0x14')](queues[_0x36fd71[_0x9edb('0x4c')]])){if(_0x36fd71[_0x9edb('0x55')]&&queues[_0x36fd71[_0x9edb('0x55')]]){queues[_0x36fd71[_0x9edb('0x55')]][_0x9edb('0x20')]=0x1;queues[_0x36fd71[_0x9edb('0x45')]]=_[_0x9edb('0x56')](queues[_0x36fd71[_0x9edb('0x55')]]);queues[_0x36fd71[_0x9edb('0x45')]][_0x9edb('0xd')]=_0x36fd71[_0x9edb('0x57')];queues[_0x36fd71[_0x9edb('0x45')]][_0x9edb('0x20')]=0x2;queues[_0x36fd71[_0x9edb('0x45')]][_0x9edb('0x8')]=queues[_0x36fd71[_0x9edb('0x4e')]][_0x9edb('0x8')];queues[_0x36fd71[_0x9edb('0x45')]][_0x9edb('0x58')]=queues[_0x36fd71[_0x9edb('0x4e')]]['calleridname'];queues[_0x36fd71[_0x9edb('0x45')]]['queuecallerjoinAt']=utils[_0x9edb('0x12')]();queues[_0x36fd71['transfereeuniqueid']][_0x9edb('0x17')]=utils['now']();queues[_0x36fd71[_0x9edb('0x45')]][_0x9edb('0x32')]=0x0;queues[_0x36fd71['transfereeuniqueid']][_0x9edb('0x59')]=0x0;utils['info'](util[_0x9edb('0x4')](_0x9edb('0x5a'),_0x36fd71[_0x9edb('0x4b')],queues[_0x36fd71['transfereeuniqueid']][_0x9edb('0x1e')],queues[_0x36fd71['transfereeuniqueid']]['calleridnum'],queues[_0x36fd71[_0x9edb('0x45')]][_0x9edb('0x58')]));}else{utils[_0x9edb('0x3')](util['format'](_0x9edb('0x5b'),_0x36fd71[_0x9edb('0x4b')],queues[_0x36fd71[_0x9edb('0x4c')]]['name'],_0x36fd71[_0x9edb('0x4e')]));queues[_0x36fd71['origtransfererlinkedid']]['transfereduniqueid']=_0x36fd71[_0x9edb('0x4e')];}}}else if(_0x36fd71[_0x9edb('0x5c')]==_0x36fd71[_0x9edb('0x4e')]){if(!_[_0x9edb('0x14')](queues[_0x36fd71[_0x9edb('0x4c')]])){utils[_0x9edb('0x3')](util['format'](_0x9edb('0x5d'),_0x36fd71['origtransfereruniqueid'],queues[_0x36fd71['origtransfererlinkedid']][_0x9edb('0x1e')],_0x36fd71[_0x9edb('0x5c')],_0x36fd71['secondtransfererexten']));queues[_0x36fd71[_0x9edb('0x4c')]][_0x9edb('0x41')]=!![];queues[_0x36fd71[_0x9edb('0x4c')]][_0x9edb('0x50')]='ATTENDED';queues[_0x36fd71['origtransfererlinkedid']][_0x9edb('0x52')]=_0x36fd71['secondtransfererexten'];queues[_0x36fd71[_0x9edb('0x4c')]][_0x9edb('0x53')]=_0x36fd71[_0x9edb('0x5c')];queues[_0x36fd71[_0x9edb('0x4c')]][_0x9edb('0x1b')]='ATTENDEDTRANSFER';}if(!_['isNil'](queues[_0x36fd71['secondtransfererlinkedid']])){if(_0x36fd71[_0x9edb('0x5e')]&&queues[_0x36fd71[_0x9edb('0x5e')]]){queues[_0x36fd71[_0x9edb('0x5e')]][_0x9edb('0x20')]=0x1;queues[_0x36fd71['transfertargetuniqueid']]=_[_0x9edb('0x56')](queues[_0x36fd71[_0x9edb('0x5e')]]);queues[_0x36fd71[_0x9edb('0x57')]][_0x9edb('0xd')]=_0x36fd71[_0x9edb('0x57')];queues[_0x36fd71[_0x9edb('0x57')]][_0x9edb('0x20')]=0x2;queues[_0x36fd71[_0x9edb('0x57')]][_0x9edb('0x8')]=queues[_0x36fd71[_0x9edb('0x4c')]][_0x9edb('0x8')];queues[_0x36fd71[_0x9edb('0x57')]][_0x9edb('0x58')]=queues[_0x36fd71[_0x9edb('0x4c')]]['calleridname'];queues[_0x36fd71['transfertargetuniqueid']][_0x9edb('0x34')]=utils[_0x9edb('0x12')]();queues[_0x36fd71['transfertargetuniqueid']][_0x9edb('0x17')]=utils[_0x9edb('0x12')]();queues[_0x36fd71[_0x9edb('0x57')]][_0x9edb('0x32')]=0x0;queues[_0x36fd71[_0x9edb('0x57')]][_0x9edb('0x59')]=0x0;utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x5f'),_0x36fd71[_0x9edb('0x4b')],queues[_0x36fd71[_0x9edb('0x57')]][_0x9edb('0x1e')],queues[_0x36fd71['transfertargetuniqueid']]['transfereduniqueid'],queues[_0x36fd71[_0x9edb('0x57')]]['calleridnum'],queues[_0x36fd71[_0x9edb('0x57')]][_0x9edb('0x58')]));}else{utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x5b'),_0x36fd71[_0x9edb('0x4b')],queues[_0x36fd71[_0x9edb('0x4e')]]['name'],_0x36fd71['origtransfererlinkedid']));queues[_0x36fd71['secondtransfererlinkedid']][_0x9edb('0xd')]=_0x36fd71[_0x9edb('0x4c')];}}}}catch(_0x17a8f1){utils[_0x9edb('0x13')](util[_0x9edb('0x4')](_0x9edb('0x4a'),_0x36fd71[_0x9edb('0x4b')]),_0x17a8f1);}};exports[_0x9edb('0x60')]=function(_0x7b28aa){try{if(!_['isNil'](queues[_0x7b28aa[_0x9edb('0xe')]])){utils[_0x9edb('0x15')](util[_0x9edb('0x4')]('[%s][queues][musiconholdstart]',_0x7b28aa[_0x9edb('0xe')]),_0x7b28aa);queues[_0x7b28aa[_0x9edb('0xe')]][_0x9edb('0x61')]=utils['now']();utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x62'),_0x7b28aa[_0x9edb('0xe')],queues[_0x7b28aa[_0x9edb('0xe')]][_0x9edb('0x1e')],queues[_0x7b28aa[_0x9edb('0xe')]][_0x9edb('0x61')]));}}catch(_0x32a7af){utils[_0x9edb('0x13')](util[_0x9edb('0x4')](_0x9edb('0x63'),_0x7b28aa[_0x9edb('0xe')]),_0x32a7af);}};exports['musiconholdstop']=function(_0x7a8d68){try{if(!_[_0x9edb('0x14')](queues[_0x7a8d68[_0x9edb('0xe')]])){if(!_[_0x9edb('0x14')](queues[_0x7a8d68['uniqueid']]['musiconholdstartAt'])){utils[_0x9edb('0x15')](util[_0x9edb('0x4')](_0x9edb('0x64'),_0x7a8d68[_0x9edb('0xe')]),_0x7a8d68);queues[_0x7a8d68[_0x9edb('0xe')]]['mohtime']+=utils[_0x9edb('0x33')](utils[_0x9edb('0x12')](),queues[_0x7a8d68[_0x9edb('0xe')]][_0x9edb('0x61')]);utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x65'),_0x7a8d68[_0x9edb('0xe')],queues[_0x7a8d68[_0x9edb('0xe')]][_0x9edb('0x1e')],queues[_0x7a8d68['uniqueid']][_0x9edb('0x59')]));delete queues[_0x7a8d68['uniqueid']][_0x9edb('0x61')];}}}catch(_0x1089ec){utils[_0x9edb('0x13')](util[_0x9edb('0x4')](_0x9edb('0x64'),_0x7a8d68[_0x9edb('0xe')]),_0x1089ec);}};
\ No newline at end of file
index 24b9efa..35508bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0db4=['[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','cause-txt','calleridname','connectedlinenum','connectedlinename','forEach','newexten','[%s][recordings][newexten]','application','appdata','set','toLowerCase','cdr','substring','lastIndexOf','queuecallerjoin','queue','lodash','util','./utils','format','uniqueid','accountcode','getUserByInternal','then','membername','name','request','CreateVoiceRecording','debug','linkedid','info','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','exten','context','channel','error','[%s][recordings][newchannel]','newstate','[%s][recordings][newstate]','isNil','transfer','varset','variable','mixmonitor_filename','[%s][recordings][varset]','value','endsWith','replace','.wav49','.WAV','find','monitors','[%s][recordings][hangup]'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x0db4,0x80));var _0x40db=function(_0x504df1,_0x289598){_0x504df1=_0x504df1-0x0;var _0x1063b5=_0x0db4[_0x504df1];return _0x1063b5;};'use strict';var _=require(_0x40db('0x0'));var util=require(_0x40db('0x1'));var utils=require(_0x40db('0x2'));var recordings={};function writeDB(_0x2a43ab){utils['info'](util[_0x40db('0x3')]('[%s][recordings][writeDB]',_0x2a43ab[_0x40db('0x4')]));if(_0x2a43ab[_0x40db('0x5')]){utils[_0x40db('0x6')](_0x2a43ab[_0x40db('0x5')])[_0x40db('0x7')](function(_0x5a90e4){if(_0x5a90e4){_0x2a43ab[_0x40db('0x8')]=_0x5a90e4[_0x40db('0x9')];_0x2a43ab['UserId']=_0x5a90e4['id'];}utils[_0x40db('0xa')]('CreateVoiceRecording',_0x2a43ab);});}else{utils[_0x40db('0xa')](_0x40db('0xb'),_0x2a43ab);}}exports['newchannel']=function(_0x25abef){try{utils[_0x40db('0xc')](util[_0x40db('0x3')]('[%s][recordings][newchannel]',_0x25abef[_0x40db('0x4')]),_0x25abef);if(_0x25abef[_0x40db('0x4')]==_0x25abef[_0x40db('0xd')]){utils[_0x40db('0xe')](util[_0x40db('0x3')](_0x40db('0xf'),_0x25abef[_0x40db('0x4')],_0x25abef['context'],_0x25abef['exten']));recordings[_0x25abef[_0x40db('0x4')]]={'uniqueid':_0x25abef['uniqueid'],'accountcode':_0x25abef['accountcode'],'exten':_0x25abef[_0x40db('0x10')],'context':_0x25abef[_0x40db('0x11')],'channel':_0x25abef[_0x40db('0x12')],'monitors':[]};}}catch(_0x5365c5){utils[_0x40db('0x13')](util['format'](_0x40db('0x14'),_0x25abef[_0x40db('0x4')]),_0x5365c5);}};exports[_0x40db('0x15')]=function(_0x25c8e0){try{utils['debug'](util['format'](_0x40db('0x16'),_0x25c8e0[_0x40db('0x4')]),_0x25c8e0);if(!_[_0x40db('0x17')](recordings[_0x25c8e0[_0x40db('0x4')]])&&_0x25c8e0['channelstate']==0x6){utils[_0x40db('0xe')](util[_0x40db('0x3')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x25c8e0[_0x40db('0x4')],_0x25c8e0[_0x40db('0x11')],_0x25c8e0[_0x40db('0x12')]));}else if(!_[_0x40db('0x17')](recordings[_0x25c8e0[_0x40db('0xd')]])&&_0x25c8e0['channelstate']==0x6&&_0x25c8e0[_0x40db('0x11')]!=_0x40db('0x18')){utils[_0x40db('0xe')](util[_0x40db('0x3')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x25c8e0[_0x40db('0x4')],_0x25c8e0['linkedid'],_0x25c8e0[_0x40db('0x11')],_0x25c8e0[_0x40db('0x12')]));recordings[_0x25c8e0['linkedid']][_0x40db('0x5')]=_0x25c8e0['accountcode'];}}catch(_0x1f1f0d){utils[_0x40db('0x13')](util[_0x40db('0x3')](_0x40db('0x16'),_0x25c8e0['uniqueid']),_0x1f1f0d);}};exports[_0x40db('0x19')]=function(_0x16c733){try{if(!_['isNil'](_0x16c733['variable'])&&!_[_0x40db('0x17')](_0x16c733[_0x40db('0x1a')][_0x40db('0x1b')])){utils[_0x40db('0xc')](util[_0x40db('0x3')](_0x40db('0x1c'),_0x16c733[_0x40db('0x4')]),_0x16c733);utils[_0x40db('0xe')](util[_0x40db('0x3')]('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x16c733[_0x40db('0x4')],_0x16c733['variable'],_0x16c733[_0x40db('0x1d')]));if(_[_0x40db('0x1e')](_0x16c733[_0x40db('0x1d')],'.wav49')){_0x16c733[_0x40db('0x1d')]=_0x16c733['value'][_0x40db('0x1f')](_0x40db('0x20'),_0x40db('0x21'));}if(recordings[_0x16c733[_0x40db('0xd')]]){var _0x1558e6=_[_0x40db('0x22')](recordings[_0x16c733['linkedid']][_0x40db('0x23')],{'value':_0x16c733[_0x40db('0x1d')]});if(_['isNil'](_0x1558e6)){recordings[_0x16c733[_0x40db('0xd')]]['monitors']['push']({'value':_0x16c733[_0x40db('0x1d')]});}}}}catch(_0x5f268a){utils['error'](util[_0x40db('0x3')](_0x40db('0x1c'),_0x16c733[_0x40db('0x4')]),_0x5f268a);}};exports['hangup']=function(_0x959721){try{if(!_['isNil'](recordings[_0x959721[_0x40db('0x4')]])){utils[_0x40db('0xc')](util[_0x40db('0x3')](_0x40db('0x24'),_0x959721['uniqueid']),_0x959721);utils[_0x40db('0xe')](util['format'](_0x40db('0x25'),_0x959721[_0x40db('0x4')],_0x959721[_0x40db('0x26')],_0x959721['calleridname'],_0x959721[_0x40db('0x27')]));recordings[_0x959721[_0x40db('0x4')]]['calleridnum']=_0x959721['calleridnum'];recordings[_0x959721[_0x40db('0x4')]][_0x40db('0x28')]=_0x959721[_0x40db('0x28')];recordings[_0x959721[_0x40db('0x4')]][_0x40db('0x29')]=_0x959721[_0x40db('0x29')];recordings[_0x959721[_0x40db('0x4')]][_0x40db('0x2a')]=_0x959721['connectedlinename'];if(recordings[_0x959721[_0x40db('0x4')]]['type']=='outbound'&&recordings[_0x959721['uniqueid']][_0x40db('0x5')]){recordings[_0x959721[_0x40db('0x4')]]['connectedlinenum']=recordings[_0x959721['uniqueid']]['accountcode'];recordings[_0x959721[_0x40db('0x4')]]['connectedlinename']='';}recordings[_0x959721[_0x40db('0x4')]][_0x40db('0x23')][_0x40db('0x2b')](function(_0x3194de){var _0x2ea3b7=_['clone'](recordings[_0x959721[_0x40db('0x4')]]);_0x2ea3b7[_0x40db('0x1d')]=_0x3194de[_0x40db('0x1d')];writeDB(_0x2ea3b7);});delete recordings[_0x959721[_0x40db('0x4')]];}}catch(_0xebd678){utils[_0x40db('0x13')](util[_0x40db('0x3')](_0x40db('0x24'),_0x959721[_0x40db('0x4')]),_0xebd678);}};exports[_0x40db('0x2c')]=function(_0x304973){try{if(!_[_0x40db('0x17')](recordings[_0x304973['uniqueid']])){utils[_0x40db('0xc')](util[_0x40db('0x3')](_0x40db('0x2d'),_0x304973['uniqueid']),_0x304973);utils[_0x40db('0xe')](util['format']('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x304973[_0x40db('0x4')],_0x304973[_0x40db('0x2e')],_0x304973[_0x40db('0x2f')]));if(_0x304973['application']['toLowerCase']()==_0x40db('0x30')&&_['startsWith'](_0x304973[_0x40db('0x2f')][_0x40db('0x31')](),_0x40db('0x32'))){var _0x4ccbdf=_0x304973['appdata']['split']('=');var _0x117723=_0x4ccbdf[0x0][_0x40db('0x33')](_0x4ccbdf[0x0][_0x40db('0x34')]('(')+0x1,_0x4ccbdf[0x0][_0x40db('0x34')](')'));var _0x50703b=_0x4ccbdf[0x1];recordings[_0x304973[_0x40db('0x4')]][_0x117723]=_0x50703b;}}}catch(_0x183ca4){utils[_0x40db('0x13')](util[_0x40db('0x3')]('[%s][recordings][newexten]',_0x304973[_0x40db('0x4')]),_0x183ca4);}};exports[_0x40db('0x35')]=function(_0x408d04){try{if(!_[_0x40db('0x17')](recordings[_0x408d04[_0x40db('0x4')]])){utils['debug'](util[_0x40db('0x3')]('[%s][recordings][queuecallerjoin]',_0x408d04['uniqueid']),_0x408d04);utils['info'](util['format']('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x408d04[_0x40db('0x4')],_0x408d04[_0x40db('0x36')]));recordings[_0x408d04[_0x40db('0x4')]]['queue']=_0x408d04[_0x40db('0x36')];}}catch(_0x542bcc){utils['error'](util[_0x40db('0x3')]('[%s][recordings][queuecallerjoin]',_0x408d04[_0x40db('0x4')]),_0x542bcc);}};
\ No newline at end of file
+var _0xd8d0=['replace','find','monitors','push','[%s][recordings][hangup]','calleridname','cause-txt','calleridnum','connectedlinenum','connectedlinename','type','outbound','forEach','application','appdata','set','toLowerCase','cdr','lastIndexOf','[%s][recordings][newexten]','queuecallerjoin','[%s][recordings][queuecallerjoin]','queue','lodash','util','./utils','info','format','[%s][recordings][writeDB]','uniqueid','accountcode','then','membername','UserId','request','CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','newstate','[%s][recordings][newstate]','isNil','channelstate','linkedid','transfer','error','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','endsWith','value','.wav49'];(function(_0x361800,_0x56ff01){var _0x54675a=function(_0x5b6cee){while(--_0x5b6cee){_0x361800['push'](_0x361800['shift']());}};_0x54675a(++_0x56ff01);}(_0xd8d0,0x12f));var _0x0d8d=function(_0x2aa0e7,_0x4e5145){_0x2aa0e7=_0x2aa0e7-0x0;var _0x1472c0=_0xd8d0[_0x2aa0e7];return _0x1472c0;};'use strict';var _=require(_0x0d8d('0x0'));var util=require(_0x0d8d('0x1'));var utils=require(_0x0d8d('0x2'));var recordings={};function writeDB(_0x20d487){utils[_0x0d8d('0x3')](util[_0x0d8d('0x4')](_0x0d8d('0x5'),_0x20d487[_0x0d8d('0x6')]));if(_0x20d487[_0x0d8d('0x7')]){utils['getUserByInternal'](_0x20d487[_0x0d8d('0x7')])[_0x0d8d('0x8')](function(_0x1e1210){if(_0x1e1210){_0x20d487[_0x0d8d('0x9')]=_0x1e1210['name'];_0x20d487[_0x0d8d('0xa')]=_0x1e1210['id'];}utils[_0x0d8d('0xb')](_0x0d8d('0xc'),_0x20d487);});}else{utils['request'](_0x0d8d('0xc'),_0x20d487);}}exports[_0x0d8d('0xd')]=function(_0x759d95){try{utils[_0x0d8d('0xe')](util['format']('[%s][recordings][newchannel]',_0x759d95[_0x0d8d('0x6')]),_0x759d95);if(_0x759d95[_0x0d8d('0x6')]==_0x759d95['linkedid']){utils[_0x0d8d('0x3')](util[_0x0d8d('0x4')](_0x0d8d('0xf'),_0x759d95[_0x0d8d('0x6')],_0x759d95[_0x0d8d('0x10')],_0x759d95[_0x0d8d('0x11')]));recordings[_0x759d95[_0x0d8d('0x6')]]={'uniqueid':_0x759d95[_0x0d8d('0x6')],'accountcode':_0x759d95[_0x0d8d('0x7')],'exten':_0x759d95[_0x0d8d('0x11')],'context':_0x759d95['context'],'channel':_0x759d95[_0x0d8d('0x12')],'monitors':[]};}}catch(_0x2bb763){utils['error'](util[_0x0d8d('0x4')]('[%s][recordings][newchannel]',_0x759d95[_0x0d8d('0x6')]),_0x2bb763);}};exports[_0x0d8d('0x13')]=function(_0x40c910){try{utils['debug'](util['format'](_0x0d8d('0x14'),_0x40c910[_0x0d8d('0x6')]),_0x40c910);if(!_[_0x0d8d('0x15')](recordings[_0x40c910[_0x0d8d('0x6')]])&&_0x40c910[_0x0d8d('0x16')]==0x6){utils[_0x0d8d('0x3')](util[_0x0d8d('0x4')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x40c910[_0x0d8d('0x6')],_0x40c910['context'],_0x40c910[_0x0d8d('0x12')]));}else if(!_[_0x0d8d('0x15')](recordings[_0x40c910[_0x0d8d('0x17')]])&&_0x40c910[_0x0d8d('0x16')]==0x6&&_0x40c910[_0x0d8d('0x10')]!=_0x0d8d('0x18')){utils['info'](util[_0x0d8d('0x4')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x40c910[_0x0d8d('0x6')],_0x40c910['linkedid'],_0x40c910['context'],_0x40c910['channel']));recordings[_0x40c910[_0x0d8d('0x17')]][_0x0d8d('0x7')]=_0x40c910['accountcode'];}}catch(_0x2c1e11){utils[_0x0d8d('0x19')](util[_0x0d8d('0x4')]('[%s][recordings][newstate]',_0x40c910[_0x0d8d('0x6')]),_0x2c1e11);}};exports['varset']=function(_0x30b814){try{if(!_[_0x0d8d('0x15')](_0x30b814[_0x0d8d('0x1a')])&&!_['isNil'](_0x30b814[_0x0d8d('0x1a')][_0x0d8d('0x1b')])){utils[_0x0d8d('0xe')](util[_0x0d8d('0x4')](_0x0d8d('0x1c'),_0x30b814[_0x0d8d('0x6')]),_0x30b814);utils[_0x0d8d('0x3')](util['format'](_0x0d8d('0x1d'),_0x30b814['uniqueid'],_0x30b814[_0x0d8d('0x1a')],_0x30b814['value']));if(_[_0x0d8d('0x1e')](_0x30b814[_0x0d8d('0x1f')],_0x0d8d('0x20'))){_0x30b814['value']=_0x30b814[_0x0d8d('0x1f')][_0x0d8d('0x21')](_0x0d8d('0x20'),'.WAV');}if(recordings[_0x30b814[_0x0d8d('0x17')]]){var _0x128e9b=_[_0x0d8d('0x22')](recordings[_0x30b814[_0x0d8d('0x17')]][_0x0d8d('0x23')],{'value':_0x30b814['value']});if(_['isNil'](_0x128e9b)){recordings[_0x30b814[_0x0d8d('0x17')]][_0x0d8d('0x23')][_0x0d8d('0x24')]({'value':_0x30b814[_0x0d8d('0x1f')]});}}}}catch(_0x30b409){utils['error'](util['format'](_0x0d8d('0x1c'),_0x30b814[_0x0d8d('0x6')]),_0x30b409);}};exports['hangup']=function(_0x2c67b0){try{if(!_['isNil'](recordings[_0x2c67b0[_0x0d8d('0x6')]])){utils[_0x0d8d('0xe')](util[_0x0d8d('0x4')](_0x0d8d('0x25'),_0x2c67b0['uniqueid']),_0x2c67b0);utils[_0x0d8d('0x3')](util['format']('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x2c67b0[_0x0d8d('0x6')],_0x2c67b0['calleridnum'],_0x2c67b0[_0x0d8d('0x26')],_0x2c67b0[_0x0d8d('0x27')]));recordings[_0x2c67b0['uniqueid']][_0x0d8d('0x28')]=_0x2c67b0['calleridnum'];recordings[_0x2c67b0[_0x0d8d('0x6')]][_0x0d8d('0x26')]=_0x2c67b0[_0x0d8d('0x26')];recordings[_0x2c67b0[_0x0d8d('0x6')]][_0x0d8d('0x29')]=_0x2c67b0[_0x0d8d('0x29')];recordings[_0x2c67b0[_0x0d8d('0x6')]][_0x0d8d('0x2a')]=_0x2c67b0[_0x0d8d('0x2a')];if(recordings[_0x2c67b0[_0x0d8d('0x6')]][_0x0d8d('0x2b')]==_0x0d8d('0x2c')&&recordings[_0x2c67b0[_0x0d8d('0x6')]][_0x0d8d('0x7')]){recordings[_0x2c67b0[_0x0d8d('0x6')]][_0x0d8d('0x29')]=recordings[_0x2c67b0['uniqueid']]['accountcode'];recordings[_0x2c67b0[_0x0d8d('0x6')]]['connectedlinename']='';}recordings[_0x2c67b0['uniqueid']]['monitors'][_0x0d8d('0x2d')](function(_0x535185){var _0x3ac38c=_['clone'](recordings[_0x2c67b0['uniqueid']]);_0x3ac38c['value']=_0x535185['value'];writeDB(_0x3ac38c);});delete recordings[_0x2c67b0['uniqueid']];}}catch(_0x2836b4){utils['error'](util['format'](_0x0d8d('0x25'),_0x2c67b0[_0x0d8d('0x6')]),_0x2836b4);}};exports['newexten']=function(_0x30e49c){try{if(!_[_0x0d8d('0x15')](recordings[_0x30e49c[_0x0d8d('0x6')]])){utils[_0x0d8d('0xe')](util[_0x0d8d('0x4')]('[%s][recordings][newexten]',_0x30e49c[_0x0d8d('0x6')]),_0x30e49c);utils[_0x0d8d('0x3')](util[_0x0d8d('0x4')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x30e49c[_0x0d8d('0x6')],_0x30e49c[_0x0d8d('0x2e')],_0x30e49c[_0x0d8d('0x2f')]));if(_0x30e49c[_0x0d8d('0x2e')]['toLowerCase']()==_0x0d8d('0x30')&&_['startsWith'](_0x30e49c['appdata'][_0x0d8d('0x31')](),_0x0d8d('0x32'))){var _0x2bd063=_0x30e49c[_0x0d8d('0x2f')]['split']('=');var _0x4e4ad4=_0x2bd063[0x0]['substring'](_0x2bd063[0x0][_0x0d8d('0x33')]('(')+0x1,_0x2bd063[0x0][_0x0d8d('0x33')](')'));var _0x1c4b8d=_0x2bd063[0x1];recordings[_0x30e49c[_0x0d8d('0x6')]][_0x4e4ad4]=_0x1c4b8d;}}}catch(_0x59826b){utils[_0x0d8d('0x19')](util[_0x0d8d('0x4')](_0x0d8d('0x34'),_0x30e49c[_0x0d8d('0x6')]),_0x59826b);}};exports[_0x0d8d('0x35')]=function(_0x2d1bf4){try{if(!_[_0x0d8d('0x15')](recordings[_0x2d1bf4['uniqueid']])){utils[_0x0d8d('0xe')](util[_0x0d8d('0x4')](_0x0d8d('0x36'),_0x2d1bf4['uniqueid']),_0x2d1bf4);utils['info'](util[_0x0d8d('0x4')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x2d1bf4[_0x0d8d('0x6')],_0x2d1bf4['queue']));recordings[_0x2d1bf4[_0x0d8d('0x6')]][_0x0d8d('0x37')]=_0x2d1bf4[_0x0d8d('0x37')];}}catch(_0x2f39c7){utils['error'](util[_0x0d8d('0x4')]('[%s][recordings][queuecallerjoin]',_0x2d1bf4['uniqueid']),_0x2f39c7);}};
\ No newline at end of file
index 4b87c97..ca37803 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5447=['lodash','./utils','format','[%s][transfers][writeDB]\x20type:%s','attended','origtransfereruniqueid','uniqueid','type','request','CreateVoiceTransferReport','blinds','debug','[%s][transfers][blindtransfer]','info','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereecalleridnum','transfereecalleridname','transfereruniqueid','error','attendedtransfer','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridname','assign','origtransfererchannel','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','origtransfererlinkedid','origtransfererexten','isNil','transfereechannel','transfertargetcalleridnum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','[%s][transfers][attendedtransfer]'];(function(_0x2956b4,_0x4103ee){var _0x3ab868=function(_0x4df643){while(--_0x4df643){_0x2956b4['push'](_0x2956b4['shift']());}};_0x3ab868(++_0x4103ee);}(_0x5447,0xea));var _0x7544=function(_0x600f21,_0x40eeb8){_0x600f21=_0x600f21-0x0;var _0x19cb90=_0x5447[_0x600f21];return _0x19cb90;};'use strict';var _=require(_0x7544('0x0'));var util=require('util');var utils=require(_0x7544('0x1'));function writeDB(_0x23d86a){utils['info'](util[_0x7544('0x2')](_0x7544('0x3'),_0x23d86a['type']===_0x7544('0x4')?_0x23d86a[_0x7544('0x5')]:_0x23d86a[_0x7544('0x6')],_0x23d86a[_0x7544('0x7')]));utils[_0x7544('0x8')](_0x7544('0x9'),_0x23d86a);}exports[_0x7544('0xa')]={};exports['blindtransfer']=function(_0x322578){try{utils[_0x7544('0xb')](util[_0x7544('0x2')](_0x7544('0xc'),_0x322578[_0x7544('0x6')]),_0x322578);utils[_0x7544('0xd')](util[_0x7544('0x2')](_0x7544('0xe'),_0x322578['uniqueid'],_0x322578[_0x7544('0xf')],_0x322578['transferercalleridname'],_0x322578[_0x7544('0x10')],_0x322578[_0x7544('0x11')]));_0x322578[_0x7544('0x7')]='blind';exports[_0x7544('0xa')][_0x322578[_0x7544('0x12')]]=_0x322578;writeDB(_0x322578);}catch(_0x4680a1){utils[_0x7544('0x13')](util[_0x7544('0x2')]('[%s][transfers][blindtransfer]',_0x322578['uniqueid']),_0x4680a1);}};exports[_0x7544('0x14')]=function(_0x365fba){try{utils[_0x7544('0xb')](util['format']('[%s][transfers][attendedtransfer]',_0x365fba[_0x7544('0x5')]),_0x365fba);utils['info'](util[_0x7544('0x2')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x365fba[_0x7544('0x5')],_0x365fba[_0x7544('0x15')],_0x365fba[_0x7544('0x16')],_0x365fba['transfertargetcalleridnum'],_0x365fba[_0x7544('0x17')]));_0x365fba=_[_0x7544('0x18')](_0x365fba,{'transfererchannel':_0x365fba[_0x7544('0x19')],'transferercalleridnum':_0x365fba[_0x7544('0x15')],'transferercalleridname':_0x365fba[_0x7544('0x16')],'transfererconnectedlinenum':_0x365fba[_0x7544('0x1a')],'transfererconnectedlinename':_0x365fba[_0x7544('0x1b')],'transfereraccountcode':_0x365fba[_0x7544('0x1c')],'transferercontext':_0x365fba['secondtransferercontext'],'transfererexten':_0x365fba['secondtransfererexten'],'transfererlinkedid':_0x365fba[_0x7544('0x1d')],'context':_0x365fba['origtransferercontext'],'extension':_0x365fba[_0x7544('0x1e')],'type':_0x7544('0x4')});if(_[_0x7544('0x1f')](_0x365fba[_0x7544('0x20')])){_0x365fba=_[_0x7544('0x18')](_0x365fba,{'transfereechannel':_0x365fba['transfertargetchannel'],'transfereecalleridnum':_0x365fba[_0x7544('0x21')],'transfereecalleridname':_0x365fba['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x365fba['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x365fba[_0x7544('0x22')],'transfereeaccountcode':_0x365fba[_0x7544('0x23')],'transfereecontext':_0x365fba[_0x7544('0x24')],'transfereeexten':_0x365fba[_0x7544('0x25')],'transfereelinkedid':_0x365fba['transfertargetlinkedid']});}writeDB(_0x365fba);}catch(_0x17c1be){utils[_0x7544('0x13')](util[_0x7544('0x2')](_0x7544('0x26'),_0x365fba['origtransfereruniqueid']),_0x17c1be);}};
\ No newline at end of file
+var _0xe0d2=['debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','origtransfereruniqueid','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','origtransfererchannel','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransfererexten','assign','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','lodash','util','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','uniqueid','request','blinds','blindtransfer'];(function(_0x5afa03,_0x4e210f){var _0x49378e=function(_0x37bce6){while(--_0x37bce6){_0x5afa03['push'](_0x5afa03['shift']());}};_0x49378e(++_0x4e210f);}(_0xe0d2,0x1bc));var _0x2e0d=function(_0x489edc,_0x2bdb7a){_0x489edc=_0x489edc-0x0;var _0x4d2211=_0xe0d2[_0x489edc];return _0x4d2211;};'use strict';var _=require(_0x2e0d('0x0'));var util=require(_0x2e0d('0x1'));var utils=require('./utils');function writeDB(_0x5e14c5){utils[_0x2e0d('0x2')](util[_0x2e0d('0x3')](_0x2e0d('0x4'),_0x5e14c5[_0x2e0d('0x5')]===_0x2e0d('0x6')?_0x5e14c5['origtransfereruniqueid']:_0x5e14c5[_0x2e0d('0x7')],_0x5e14c5[_0x2e0d('0x5')]));utils[_0x2e0d('0x8')]('CreateVoiceTransferReport',_0x5e14c5);}exports[_0x2e0d('0x9')]={};exports[_0x2e0d('0xa')]=function(_0x3cdc06){try{utils[_0x2e0d('0xb')](util[_0x2e0d('0x3')](_0x2e0d('0xc'),_0x3cdc06[_0x2e0d('0x7')]),_0x3cdc06);utils[_0x2e0d('0x2')](util['format'](_0x2e0d('0xd'),_0x3cdc06[_0x2e0d('0x7')],_0x3cdc06[_0x2e0d('0xe')],_0x3cdc06['transferercalleridname'],_0x3cdc06['transfereecalleridnum'],_0x3cdc06['transfereecalleridname']));_0x3cdc06[_0x2e0d('0x5')]='blind';exports[_0x2e0d('0x9')][_0x3cdc06[_0x2e0d('0xf')]]=_0x3cdc06;writeDB(_0x3cdc06);}catch(_0x5cd004){utils[_0x2e0d('0x10')](util[_0x2e0d('0x3')](_0x2e0d('0xc'),_0x3cdc06['uniqueid']),_0x5cd004);}};exports[_0x2e0d('0x11')]=function(_0x142b03){try{utils['debug'](util[_0x2e0d('0x3')](_0x2e0d('0x12'),_0x142b03[_0x2e0d('0x13')]),_0x142b03);utils['info'](util[_0x2e0d('0x3')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x142b03['origtransfereruniqueid'],_0x142b03[_0x2e0d('0x14')],_0x142b03[_0x2e0d('0x15')],_0x142b03[_0x2e0d('0x16')],_0x142b03[_0x2e0d('0x17')]));_0x142b03=_['assign'](_0x142b03,{'transfererchannel':_0x142b03[_0x2e0d('0x18')],'transferercalleridnum':_0x142b03['origtransferercalleridnum'],'transferercalleridname':_0x142b03[_0x2e0d('0x15')],'transfererconnectedlinenum':_0x142b03['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x142b03[_0x2e0d('0x19')],'transfereraccountcode':_0x142b03['origtransfereraccountcode'],'transferercontext':_0x142b03[_0x2e0d('0x1a')],'transfererexten':_0x142b03[_0x2e0d('0x1b')],'transfererlinkedid':_0x142b03[_0x2e0d('0x1c')],'context':_0x142b03['origtransferercontext'],'extension':_0x142b03[_0x2e0d('0x1d')],'type':_0x2e0d('0x6')});if(_['isNil'](_0x142b03['transfereechannel'])){_0x142b03=_[_0x2e0d('0x1e')](_0x142b03,{'transfereechannel':_0x142b03[_0x2e0d('0x1f')],'transfereecalleridnum':_0x142b03[_0x2e0d('0x16')],'transfereecalleridname':_0x142b03[_0x2e0d('0x17')],'transfereeconnectedlinenum':_0x142b03[_0x2e0d('0x20')],'transfereeconnectedlinename':_0x142b03[_0x2e0d('0x21')],'transfereeaccountcode':_0x142b03[_0x2e0d('0x22')],'transfereecontext':_0x142b03['transfertargetcontext'],'transfereeexten':_0x142b03['transfertargetexten'],'transfereelinkedid':_0x142b03['transfertargetlinkedid']});}writeDB(_0x142b03);}catch(_0x2121f0){utils['error'](util[_0x2e0d('0x3')](_0x2e0d('0x12'),_0x142b03[_0x2e0d('0x13')]),_0x2121f0);}};
\ No newline at end of file
index 17249e9..8baeadf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9be3=['acw','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','length','[utils][getVoiceQueueByName]','addTime','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','diffTime','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','client','http','../../config/logger','info','inspect','error','request','then','[utils][request]\x20name:%s','catch','GetUser','name','interface','[utils][getUser]\x20where:%s','stringify','result','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type'];(function(_0x2a7388,_0x2a9be2){var _0x3f51fe=function(_0x1b0744){while(--_0x1b0744){_0x2a7388['push'](_0x2a7388['shift']());}};_0x3f51fe(++_0x2a9be2);}(_0x9be3,0x130));var _0x39be=function(_0x5ca061,_0x986fa5){_0x5ca061=_0x5ca061-0x0;var _0x5c2c4d=_0x9be3[_0x5ca061];return _0x5c2c4d;};'use strict';var BPromise=require(_0x39be('0x0'));var jayson=require(_0x39be('0x1'));var moment=require(_0x39be('0x2'));var util=require(_0x39be('0x3'));var client=jayson[_0x39be('0x4')][_0x39be('0x5')]({'port':0x2329});var logger=require(_0x39be('0x6'))('xdr');exports[_0x39be('0x7')]=function(_0x2d23be,_0x4fbcfd){logger[_0x39be('0x7')](_0x2d23be,_0x4fbcfd?util[_0x39be('0x8')](_0x4fbcfd,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0x41eb77,_0x594b45){logger['debug'](_0x41eb77,_0x594b45?util[_0x39be('0x8')](_0x594b45,{'showHidden':![],'depth':null}):'');};exports[_0x39be('0x9')]=function(_0x5bca57,_0x142386){logger[_0x39be('0x9')](_0x5bca57,_0x142386?util[_0x39be('0x8')](_0x142386,{'showHidden':![],'depth':null}):'');};exports[_0x39be('0xa')]=function(_0x5ab23f,_0x378631){return client[_0x39be('0xa')](_0x5ab23f,{'body':_0x378631})[_0x39be('0xb')](function(_0x2eeb28){logger['debug'](_0x39be('0xc'),_0x5ab23f,_0x2eeb28?util[_0x39be('0x8')](_0x2eeb28,{'showHidden':![],'depth':null}):'');})[_0x39be('0xd')](function(_0x532653){logger[_0x39be('0x9')](_0x39be('0xc'),_0x5ab23f,_0x532653?util[_0x39be('0x8')](_0x532653,{'showHidden':![],'depth':null}):'');});};function getUser(_0x3d6e37){return client[_0x39be('0xa')](_0x39be('0xe'),{'options':{'raw':!![],'attributes':['id','internal',_0x39be('0xf'),_0x39be('0x10')],'where':_0x3d6e37,'limit':0x1}})['then'](function(_0x5bd36c){logger['debug'](_0x39be('0x11'),JSON[_0x39be('0x12')](_0x3d6e37),_0x5bd36c?util['inspect'](_0x5bd36c,{'showHidden':![],'depth':null}):'');return _0x5bd36c[_0x39be('0x13')]['length']?_0x5bd36c['result'][0x0]:null;});}exports[_0x39be('0x14')]=function(_0x281045){return new BPromise(function(_0x3a1fe8,_0x5b7a69){if(_0x281045){return getUser({'internal':_0x281045})[_0x39be('0xb')](function(_0x13156f){logger[_0x39be('0x7')](_0x39be('0x15'),_0x281045,_0x13156f?_0x39be('0x16'):_0x39be('0x17'));return _0x3a1fe8(_0x13156f);})[_0x39be('0xd')](function(_0x5d8900){logger[_0x39be('0x9')](_0x39be('0x18'),_0x5d8900?util['inspect'](_0x5d8900,{'showHidden':![],'depth':null}):'');return _0x3a1fe8(null);});}return _0x3a1fe8(null);});};exports['getUserByInterface']=function(_0x1506a0){return new BPromise(function(_0x135059,_0x59a8b5){if(_0x1506a0){return getUser({'interface':_0x1506a0})['then'](function(_0x3b5898){logger[_0x39be('0x7')](_0x39be('0x19'),_0x1506a0,_0x3b5898?_0x39be('0x16'):_0x39be('0x17'));return _0x135059(_0x3b5898);})[_0x39be('0xd')](function(_0x4dc322){logger[_0x39be('0x9')](_0x39be('0x1a'),_0x4dc322?util[_0x39be('0x8')](_0x4dc322,{'showHidden':![],'depth':null}):'');return _0x135059(null);});}return _0x135059(null);});};exports[_0x39be('0x1b')]=function(_0x5e2a40){return new BPromise(function(_0x584c31,_0x24de85){if(_0x5e2a40){return getUser({'name':_0x5e2a40})[_0x39be('0xb')](function(_0x1d0cae){logger['info']('[utils][getUserByName]\x20name:%s\x20%s',_0x5e2a40,_0x1d0cae?_0x39be('0x16'):_0x39be('0x17'));return _0x584c31(_0x1d0cae);})['catch'](function(_0x41aacf){logger[_0x39be('0x9')](_0x39be('0x1c'),_0x41aacf?util[_0x39be('0x8')](_0x41aacf,{'showHidden':![],'depth':null}):'');return _0x584c31(null);});}return _0x584c31(null);});};exports[_0x39be('0x1d')]=function(_0xdba016){return new BPromise(function(_0x31d02c,_0x1ca8ad){if(_0xdba016){return client[_0x39be('0xa')](_0x39be('0x1e'),{'options':{'raw':!![],'attributes':['id',_0x39be('0xf'),_0x39be('0x1f'),_0x39be('0x20'),'acwTimeout'],'where':{'name':_0xdba016},'limit':0x1}})[_0x39be('0xb')](function(_0xe6a082){logger['debug'](_0x39be('0x21'),_0xdba016,_0xe6a082?util[_0x39be('0x8')](_0xe6a082,{'showHidden':![],'depth':null}):'');logger[_0x39be('0x7')](_0x39be('0x22'),_0xdba016,_0xe6a082?'found':_0x39be('0x17'));return _0x31d02c(_0xe6a082[_0x39be('0x13')][_0x39be('0x23')]?_0xe6a082['result'][0x0]:null);})[_0x39be('0xd')](function(_0x1fbf82){logger[_0x39be('0x9')](_0x39be('0x24'),_0x1fbf82?util[_0x39be('0x8')](_0x1fbf82,{'showHidden':![],'depth':null}):'');return _0x31d02c(null);});}return _0x31d02c(null);});};exports[_0x39be('0x25')]=function(_0xfef767,_0x40044a){return moment(_0xfef767)[_0x39be('0x26')](_0x40044a,_0x39be('0x27'))[_0x39be('0x28')](_0x39be('0x29'));};exports[_0x39be('0x2a')]=function(_0x30b440,_0x2ed956){return moment(_0x30b440)['subtract'](_0x2ed956,_0x39be('0x27'))['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x39be('0x2b')]=function(_0x2ad424,_0x3bc80c){return moment(_0x2ad424)['diff'](moment(_0x3bc80c),'seconds');};exports[_0x39be('0x2c')]=function(_0x402e93,_0x2c966b){return parseInt(_0x402e93,0xa)+parseInt(_0x2c966b,0xa);};exports[_0x39be('0x2d')]=function(){return moment()[_0x39be('0x28')](_0x39be('0x29'));};exports[_0x39be('0x2e')]=function(_0x6f15bb,_0x433396){if(_0x433396){return moment(_0x6f15bb)[_0x39be('0x2e')](_0x433396);}return!![];};exports[_0x39be('0x2f')]=function(_0x49cbd5,_0x6103ea){if(_0x6103ea){return moment(_0x49cbd5)[_0x39be('0x2f')](_0x6103ea);}else if(_0x49cbd5){return!![];}return![];};
\ No newline at end of file
+var _0xd0c8=['acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s\x20%s','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','util','http','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInterface]\x20interface:%s\x20%s','getUserByName','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0xd0c8,0x1f2));var _0x8d0c=function(_0x2b0416,_0x2a0513){_0x2b0416=_0x2b0416-0x0;var _0xce4b3b=_0xd0c8[_0x2b0416];return _0xce4b3b;};'use strict';var BPromise=require(_0x8d0c('0x0'));var jayson=require(_0x8d0c('0x1'));var moment=require('moment');var util=require(_0x8d0c('0x2'));var client=jayson['client'][_0x8d0c('0x3')]({'port':0x2329});var logger=require('../../config/logger')(_0x8d0c('0x4'));exports[_0x8d0c('0x5')]=function(_0x311239,_0x51992a){logger['info'](_0x311239,_0x51992a?util[_0x8d0c('0x6')](_0x51992a,{'showHidden':![],'depth':null}):'');};exports[_0x8d0c('0x7')]=function(_0x3f64cf,_0x20812f){logger[_0x8d0c('0x7')](_0x3f64cf,_0x20812f?util[_0x8d0c('0x6')](_0x20812f,{'showHidden':![],'depth':null}):'');};exports[_0x8d0c('0x8')]=function(_0x2c3df6,_0x387511){logger[_0x8d0c('0x8')](_0x2c3df6,_0x387511?util[_0x8d0c('0x6')](_0x387511,{'showHidden':![],'depth':null}):'');};exports[_0x8d0c('0x9')]=function(_0x56c107,_0xd16543){return client[_0x8d0c('0x9')](_0x56c107,{'body':_0xd16543})[_0x8d0c('0xa')](function(_0x3007fa){logger[_0x8d0c('0x7')](_0x8d0c('0xb'),_0x56c107,_0x3007fa?util['inspect'](_0x3007fa,{'showHidden':![],'depth':null}):'');})[_0x8d0c('0xc')](function(_0x2ec941){logger[_0x8d0c('0x8')](_0x8d0c('0xb'),_0x56c107,_0x2ec941?util['inspect'](_0x2ec941,{'showHidden':![],'depth':null}):'');});};function getUser(_0x5939b3){return client[_0x8d0c('0x9')](_0x8d0c('0xd'),{'options':{'raw':!![],'attributes':['id',_0x8d0c('0xe'),_0x8d0c('0xf'),_0x8d0c('0x10')],'where':_0x5939b3,'limit':0x1}})['then'](function(_0x5530b9){logger['debug'](_0x8d0c('0x11'),JSON['stringify'](_0x5939b3),_0x5530b9?util[_0x8d0c('0x6')](_0x5530b9,{'showHidden':![],'depth':null}):'');return _0x5530b9[_0x8d0c('0x12')][_0x8d0c('0x13')]?_0x5530b9[_0x8d0c('0x12')][0x0]:null;});}exports[_0x8d0c('0x14')]=function(_0x3583d9){return new BPromise(function(_0x247fe2,_0x158e21){if(_0x3583d9){return getUser({'internal':_0x3583d9})[_0x8d0c('0xa')](function(_0x246e44){logger[_0x8d0c('0x5')](_0x8d0c('0x15'),_0x3583d9,_0x246e44?_0x8d0c('0x16'):_0x8d0c('0x17'));return _0x247fe2(_0x246e44);})[_0x8d0c('0xc')](function(_0x336b00){logger['error']('[utils][getUserByInternal]',_0x336b00?util[_0x8d0c('0x6')](_0x336b00,{'showHidden':![],'depth':null}):'');return _0x247fe2(null);});}return _0x247fe2(null);});};exports['getUserByInterface']=function(_0x575ad8){return new BPromise(function(_0x2f6fbf,_0x5eddf4){if(_0x575ad8){return getUser({'interface':_0x575ad8})[_0x8d0c('0xa')](function(_0x387a9b){logger['info'](_0x8d0c('0x18'),_0x575ad8,_0x387a9b?_0x8d0c('0x16'):_0x8d0c('0x17'));return _0x2f6fbf(_0x387a9b);})[_0x8d0c('0xc')](function(_0x2a0baf){logger[_0x8d0c('0x8')]('[utils][getUserByInterface]',_0x2a0baf?util[_0x8d0c('0x6')](_0x2a0baf,{'showHidden':![],'depth':null}):'');return _0x2f6fbf(null);});}return _0x2f6fbf(null);});};exports[_0x8d0c('0x19')]=function(_0x45f09d){return new BPromise(function(_0x55e15f,_0x52ba0a){if(_0x45f09d){return getUser({'name':_0x45f09d})[_0x8d0c('0xa')](function(_0x292e44){logger[_0x8d0c('0x5')]('[utils][getUserByName]\x20name:%s\x20%s',_0x45f09d,_0x292e44?_0x8d0c('0x16'):'notfound');return _0x55e15f(_0x292e44);})['catch'](function(_0x3f15c9){logger[_0x8d0c('0x8')](_0x8d0c('0x1a'),_0x3f15c9?util[_0x8d0c('0x6')](_0x3f15c9,{'showHidden':![],'depth':null}):'');return _0x55e15f(null);});}return _0x55e15f(null);});};exports[_0x8d0c('0x1b')]=function(_0x9163ef){return new BPromise(function(_0x2b00cf,_0x37f017){if(_0x9163ef){return client[_0x8d0c('0x9')](_0x8d0c('0x1c'),{'options':{'raw':!![],'attributes':['id',_0x8d0c('0xf'),_0x8d0c('0x1d'),_0x8d0c('0x1e'),_0x8d0c('0x1f')],'where':{'name':_0x9163ef},'limit':0x1}})[_0x8d0c('0xa')](function(_0xe6f83e){logger[_0x8d0c('0x7')]('[utils][getVoiceQueueByName]\x20name:%s',_0x9163ef,_0xe6f83e?util[_0x8d0c('0x6')](_0xe6f83e,{'showHidden':![],'depth':null}):'');logger[_0x8d0c('0x5')](_0x8d0c('0x20'),_0x9163ef,_0xe6f83e?'found':_0x8d0c('0x17'));return _0x2b00cf(_0xe6f83e[_0x8d0c('0x12')][_0x8d0c('0x13')]?_0xe6f83e['result'][0x0]:null);})[_0x8d0c('0xc')](function(_0x501fcc){logger[_0x8d0c('0x8')]('[utils][getVoiceQueueByName]',_0x501fcc?util[_0x8d0c('0x6')](_0x501fcc,{'showHidden':![],'depth':null}):'');return _0x2b00cf(null);});}return _0x2b00cf(null);});};exports['addTime']=function(_0x298e93,_0x43a376){return moment(_0x298e93)['add'](_0x43a376,_0x8d0c('0x21'))[_0x8d0c('0x22')](_0x8d0c('0x23'));};exports[_0x8d0c('0x24')]=function(_0x33601a,_0x1759b0){return moment(_0x33601a)[_0x8d0c('0x25')](_0x1759b0,'seconds')[_0x8d0c('0x22')](_0x8d0c('0x23'));};exports[_0x8d0c('0x26')]=function(_0x2c0b79,_0x571cf8){return moment(_0x2c0b79)[_0x8d0c('0x27')](moment(_0x571cf8),_0x8d0c('0x21'));};exports[_0x8d0c('0x28')]=function(_0x2b5b6c,_0x24bc46){return parseInt(_0x2b5b6c,0xa)+parseInt(_0x24bc46,0xa);};exports[_0x8d0c('0x29')]=function(){return moment()[_0x8d0c('0x22')](_0x8d0c('0x23'));};exports[_0x8d0c('0x2a')]=function(_0x58bd37,_0x49bbf4){if(_0x49bbf4){return moment(_0x58bd37)[_0x8d0c('0x2a')](_0x49bbf4);}return!![];};exports[_0x8d0c('0x2b')]=function(_0x2d57c5,_0x26141c){if(_0x26141c){return moment(_0x2d57c5)[_0x8d0c('0x2b')](_0x26141c);}else if(_0x2d57c5){return!![];}return![];};
\ No newline at end of file